sim3.js 4.3 MB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020402140224023402440254026402740284029403040314032403340344035403640374038403940404041404240434044404540464047404840494050405140524053405440554056405740584059406040614062406340644065406640674068406940704071407240734074407540764077407840794080408140824083408440854086408740884089409040914092409340944095409640974098409941004101410241034104410541064107410841094110411141124113411441154116411741184119412041214122412341244125412641274128412941304131413241334134413541364137413841394140414141424143414441454146414741484149415041514152415341544155415641574158415941604161416241634164416541664167416841694170417141724173417441754176417741784179418041814182418341844185418641874188418941904191419241934194419541964197419841994200420142024203420442054206420742084209421042114212421342144215421642174218421942204221422242234224422542264227422842294230423142324233423442354236423742384239424042414242424342444245424642474248424942504251425242534254425542564257425842594260426142624263426442654266426742684269427042714272427342744275427642774278427942804281428242834284428542864287428842894290429142924293429442954296429742984299430043014302430343044305430643074308430943104311431243134314431543164317431843194320432143224323432443254326432743284329433043314332433343344335433643374338433943404341434243434344434543464347434843494350435143524353435443554356435743584359436043614362436343644365436643674368436943704371437243734374437543764377437843794380438143824383438443854386438743884389439043914392439343944395439643974398439944004401440244034404440544064407440844094410441144124413441444154416441744184419442044214422442344244425442644274428442944304431443244334434443544364437443844394440444144424443444444454446444744484449445044514452445344544455445644574458445944604461446244634464446544664467446844694470447144724473447444754476447744784479448044814482448344844485448644874488448944904491449244934494449544964497449844994500450145024503450445054506450745084509451045114512451345144515451645174518451945204521452245234524452545264527452845294530453145324533453445354536453745384539454045414542454345444545454645474548454945504551455245534554455545564557455845594560456145624563456445654566456745684569457045714572457345744575457645774578457945804581458245834584458545864587458845894590459145924593459445954596459745984599460046014602460346044605460646074608460946104611461246134614461546164617461846194620462146224623462446254626462746284629463046314632463346344635463646374638463946404641464246434644464546464647464846494650465146524653465446554656465746584659466046614662466346644665466646674668466946704671467246734674467546764677467846794680468146824683468446854686468746884689469046914692469346944695469646974698469947004701470247034704470547064707470847094710471147124713471447154716471747184719472047214722472347244725472647274728472947304731473247334734473547364737473847394740474147424743474447454746474747484749475047514752475347544755475647574758475947604761476247634764476547664767476847694770477147724773477447754776477747784779478047814782478347844785478647874788478947904791479247934794479547964797479847994800480148024803480448054806480748084809481048114812481348144815481648174818481948204821482248234824482548264827482848294830483148324833483448354836483748384839484048414842484348444845484648474848484948504851485248534854485548564857485848594860486148624863486448654866486748684869487048714872487348744875487648774878487948804881488248834884488548864887488848894890489148924893489448954896489748984899490049014902490349044905490649074908490949104911491249134914491549164917491849194920492149224923492449254926492749284929493049314932493349344935493649374938493949404941494249434944494549464947494849494950495149524953495449554956495749584959496049614962496349644965496649674968496949704971497249734974497549764977497849794980498149824983498449854986498749884989499049914992499349944995499649974998499950005001500250035004500550065007500850095010501150125013501450155016501750185019502050215022502350245025502650275028502950305031503250335034503550365037503850395040504150425043504450455046504750485049505050515052505350545055505650575058505950605061506250635064506550665067506850695070507150725073507450755076507750785079508050815082508350845085508650875088508950905091509250935094509550965097509850995100510151025103510451055106510751085109511051115112511351145115511651175118511951205121512251235124512551265127512851295130513151325133513451355136513751385139514051415142514351445145514651475148514951505151515251535154515551565157515851595160516151625163516451655166516751685169517051715172517351745175517651775178517951805181518251835184518551865187518851895190519151925193519451955196519751985199520052015202520352045205520652075208520952105211521252135214521552165217521852195220522152225223522452255226522752285229523052315232523352345235523652375238523952405241524252435244524552465247524852495250525152525253525452555256525752585259526052615262526352645265526652675268526952705271527252735274527552765277527852795280528152825283528452855286528752885289529052915292529352945295529652975298529953005301530253035304530553065307530853095310531153125313531453155316531753185319532053215322532353245325532653275328532953305331533253335334533553365337533853395340534153425343534453455346534753485349535053515352535353545355535653575358535953605361536253635364536553665367536853695370537153725373537453755376537753785379538053815382538353845385538653875388538953905391539253935394539553965397539853995400540154025403540454055406540754085409541054115412541354145415541654175418541954205421542254235424542554265427542854295430543154325433543454355436543754385439544054415442544354445445544654475448544954505451545254535454545554565457545854595460546154625463546454655466546754685469547054715472547354745475547654775478547954805481548254835484548554865487548854895490549154925493549454955496549754985499550055015502550355045505550655075508550955105511551255135514551555165517551855195520552155225523552455255526552755285529553055315532553355345535553655375538553955405541554255435544554555465547554855495550555155525553555455555556555755585559556055615562556355645565556655675568556955705571557255735574557555765577557855795580558155825583558455855586558755885589559055915592559355945595559655975598559956005601560256035604560556065607560856095610561156125613561456155616561756185619562056215622562356245625562656275628562956305631563256335634563556365637563856395640564156425643564456455646564756485649565056515652565356545655565656575658565956605661566256635664566556665667566856695670567156725673567456755676567756785679568056815682568356845685568656875688568956905691569256935694569556965697569856995700570157025703570457055706570757085709571057115712571357145715571657175718571957205721572257235724572557265727572857295730573157325733573457355736573757385739574057415742574357445745574657475748574957505751575257535754575557565757575857595760576157625763576457655766576757685769577057715772577357745775577657775778577957805781578257835784578557865787578857895790579157925793579457955796579757985799580058015802580358045805580658075808580958105811581258135814581558165817581858195820582158225823582458255826582758285829583058315832583358345835583658375838583958405841584258435844584558465847584858495850585158525853585458555856585758585859586058615862586358645865586658675868586958705871587258735874587558765877587858795880588158825883588458855886588758885889589058915892589358945895589658975898589959005901590259035904590559065907590859095910591159125913591459155916591759185919592059215922592359245925592659275928592959305931593259335934593559365937593859395940594159425943594459455946594759485949595059515952595359545955595659575958595959605961596259635964596559665967596859695970597159725973597459755976597759785979598059815982598359845985598659875988598959905991599259935994599559965997599859996000600160026003600460056006600760086009601060116012601360146015601660176018601960206021602260236024602560266027602860296030603160326033603460356036603760386039604060416042604360446045604660476048604960506051605260536054605560566057605860596060606160626063606460656066606760686069607060716072607360746075607660776078607960806081608260836084608560866087608860896090609160926093609460956096609760986099610061016102610361046105610661076108610961106111611261136114611561166117611861196120612161226123612461256126612761286129613061316132613361346135613661376138613961406141614261436144614561466147614861496150615161526153615461556156615761586159616061616162616361646165616661676168616961706171617261736174617561766177617861796180618161826183618461856186618761886189619061916192619361946195619661976198619962006201620262036204620562066207620862096210621162126213621462156216621762186219622062216222622362246225622662276228622962306231623262336234623562366237623862396240624162426243624462456246624762486249625062516252625362546255625662576258625962606261626262636264626562666267626862696270627162726273627462756276627762786279628062816282628362846285628662876288628962906291629262936294629562966297629862996300630163026303630463056306630763086309631063116312631363146315631663176318631963206321632263236324632563266327632863296330633163326333633463356336633763386339634063416342634363446345634663476348634963506351635263536354635563566357635863596360636163626363636463656366636763686369637063716372637363746375637663776378637963806381638263836384638563866387638863896390639163926393639463956396639763986399640064016402640364046405640664076408640964106411641264136414641564166417641864196420642164226423642464256426642764286429643064316432643364346435643664376438643964406441644264436444644564466447644864496450645164526453645464556456645764586459646064616462646364646465646664676468646964706471647264736474647564766477647864796480648164826483648464856486648764886489649064916492649364946495649664976498649965006501650265036504650565066507650865096510651165126513651465156516651765186519652065216522652365246525652665276528652965306531653265336534653565366537653865396540654165426543654465456546654765486549655065516552655365546555655665576558655965606561656265636564656565666567656865696570657165726573657465756576657765786579658065816582658365846585658665876588658965906591659265936594659565966597659865996600660166026603660466056606660766086609661066116612661366146615661666176618661966206621662266236624662566266627662866296630663166326633663466356636663766386639664066416642664366446645664666476648664966506651665266536654665566566657665866596660666166626663666466656666666766686669667066716672667366746675667666776678667966806681668266836684668566866687668866896690669166926693669466956696669766986699670067016702670367046705670667076708670967106711671267136714671567166717671867196720672167226723672467256726672767286729673067316732673367346735673667376738673967406741674267436744674567466747674867496750675167526753675467556756675767586759676067616762676367646765676667676768676967706771677267736774677567766777677867796780678167826783678467856786678767886789679067916792679367946795679667976798679968006801680268036804680568066807680868096810681168126813681468156816681768186819682068216822682368246825682668276828682968306831683268336834683568366837683868396840684168426843684468456846684768486849685068516852685368546855685668576858685968606861686268636864686568666867686868696870687168726873687468756876687768786879688068816882688368846885688668876888688968906891689268936894689568966897689868996900690169026903690469056906690769086909691069116912691369146915691669176918691969206921692269236924692569266927692869296930693169326933693469356936693769386939694069416942694369446945694669476948694969506951695269536954695569566957695869596960696169626963696469656966696769686969697069716972697369746975697669776978697969806981698269836984698569866987698869896990699169926993699469956996699769986999700070017002700370047005700670077008700970107011701270137014701570167017701870197020702170227023702470257026702770287029703070317032703370347035703670377038703970407041704270437044704570467047704870497050705170527053705470557056705770587059706070617062706370647065706670677068706970707071707270737074707570767077707870797080708170827083708470857086708770887089709070917092709370947095709670977098709971007101710271037104710571067107710871097110711171127113711471157116711771187119712071217122712371247125712671277128712971307131713271337134713571367137713871397140714171427143714471457146714771487149715071517152715371547155715671577158715971607161716271637164716571667167716871697170717171727173717471757176717771787179718071817182718371847185718671877188718971907191719271937194719571967197719871997200720172027203720472057206720772087209721072117212721372147215721672177218721972207221722272237224722572267227722872297230723172327233723472357236723772387239724072417242724372447245724672477248724972507251725272537254725572567257725872597260726172627263726472657266726772687269727072717272727372747275727672777278727972807281728272837284728572867287728872897290729172927293729472957296729772987299730073017302730373047305730673077308730973107311731273137314731573167317731873197320732173227323732473257326732773287329733073317332733373347335733673377338733973407341734273437344734573467347734873497350735173527353735473557356735773587359736073617362736373647365736673677368736973707371737273737374737573767377737873797380738173827383738473857386738773887389739073917392739373947395739673977398739974007401740274037404740574067407740874097410741174127413741474157416741774187419742074217422742374247425742674277428742974307431743274337434743574367437743874397440744174427443744474457446744774487449745074517452745374547455745674577458745974607461746274637464746574667467746874697470747174727473747474757476747774787479748074817482748374847485748674877488748974907491749274937494749574967497749874997500750175027503750475057506750775087509751075117512751375147515751675177518751975207521752275237524752575267527752875297530753175327533753475357536753775387539754075417542754375447545754675477548754975507551755275537554755575567557755875597560756175627563756475657566756775687569757075717572757375747575757675777578757975807581758275837584758575867587758875897590759175927593759475957596759775987599760076017602760376047605760676077608760976107611761276137614761576167617761876197620762176227623762476257626762776287629763076317632763376347635763676377638763976407641764276437644764576467647764876497650765176527653765476557656765776587659766076617662766376647665766676677668766976707671767276737674767576767677767876797680768176827683768476857686768776887689769076917692769376947695769676977698769977007701770277037704770577067707770877097710771177127713771477157716771777187719772077217722772377247725772677277728772977307731773277337734773577367737773877397740774177427743774477457746774777487749775077517752775377547755775677577758775977607761776277637764776577667767776877697770777177727773777477757776777777787779778077817782778377847785778677877788778977907791779277937794779577967797779877997800780178027803780478057806780778087809781078117812781378147815781678177818781978207821782278237824782578267827782878297830783178327833783478357836783778387839784078417842784378447845784678477848784978507851785278537854785578567857785878597860786178627863786478657866786778687869787078717872787378747875787678777878787978807881788278837884788578867887788878897890789178927893789478957896789778987899790079017902790379047905790679077908790979107911791279137914791579167917791879197920792179227923792479257926792779287929793079317932793379347935793679377938793979407941794279437944794579467947794879497950795179527953795479557956795779587959796079617962796379647965796679677968796979707971797279737974797579767977797879797980798179827983798479857986798779887989799079917992799379947995799679977998799980008001800280038004800580068007800880098010801180128013801480158016801780188019802080218022802380248025802680278028802980308031803280338034803580368037803880398040804180428043804480458046804780488049805080518052805380548055805680578058805980608061806280638064806580668067806880698070807180728073807480758076807780788079808080818082808380848085808680878088808980908091809280938094809580968097809880998100810181028103810481058106810781088109811081118112811381148115811681178118811981208121812281238124812581268127812881298130813181328133813481358136813781388139814081418142814381448145814681478148814981508151815281538154815581568157815881598160816181628163816481658166816781688169817081718172817381748175817681778178817981808181818281838184818581868187818881898190819181928193819481958196819781988199820082018202820382048205820682078208820982108211821282138214821582168217821882198220822182228223822482258226822782288229823082318232823382348235823682378238823982408241824282438244824582468247824882498250825182528253825482558256825782588259826082618262826382648265826682678268826982708271827282738274827582768277827882798280828182828283828482858286828782888289829082918292829382948295829682978298829983008301830283038304830583068307830883098310831183128313831483158316831783188319832083218322832383248325832683278328832983308331833283338334833583368337833883398340834183428343834483458346834783488349835083518352835383548355835683578358835983608361836283638364836583668367836883698370837183728373837483758376837783788379838083818382838383848385838683878388838983908391839283938394839583968397839883998400840184028403840484058406840784088409841084118412841384148415841684178418841984208421842284238424842584268427842884298430843184328433843484358436843784388439844084418442844384448445844684478448844984508451845284538454845584568457845884598460846184628463846484658466846784688469847084718472847384748475847684778478847984808481848284838484848584868487848884898490849184928493849484958496849784988499850085018502850385048505850685078508850985108511851285138514851585168517851885198520852185228523852485258526852785288529853085318532853385348535853685378538853985408541854285438544854585468547854885498550855185528553855485558556855785588559856085618562856385648565856685678568856985708571857285738574857585768577857885798580858185828583858485858586858785888589859085918592859385948595859685978598859986008601860286038604860586068607860886098610861186128613861486158616861786188619862086218622862386248625862686278628862986308631863286338634863586368637863886398640864186428643864486458646864786488649865086518652865386548655865686578658865986608661866286638664866586668667866886698670867186728673867486758676867786788679868086818682868386848685868686878688868986908691869286938694869586968697869886998700870187028703870487058706870787088709871087118712871387148715871687178718871987208721872287238724872587268727872887298730873187328733873487358736873787388739874087418742874387448745874687478748874987508751875287538754875587568757875887598760876187628763876487658766876787688769877087718772877387748775877687778778877987808781878287838784878587868787878887898790879187928793879487958796879787988799880088018802880388048805880688078808880988108811881288138814881588168817881888198820882188228823882488258826882788288829883088318832883388348835883688378838883988408841884288438844884588468847884888498850885188528853885488558856885788588859886088618862886388648865886688678868886988708871887288738874887588768877887888798880888188828883888488858886888788888889889088918892889388948895889688978898889989008901890289038904890589068907890889098910891189128913891489158916891789188919892089218922892389248925892689278928892989308931893289338934893589368937893889398940894189428943894489458946894789488949895089518952895389548955895689578958895989608961896289638964896589668967896889698970897189728973897489758976897789788979898089818982898389848985898689878988898989908991899289938994899589968997899889999000900190029003900490059006900790089009901090119012901390149015901690179018901990209021902290239024902590269027902890299030903190329033903490359036903790389039904090419042904390449045904690479048904990509051905290539054905590569057905890599060906190629063906490659066906790689069907090719072907390749075907690779078907990809081908290839084908590869087908890899090909190929093909490959096909790989099910091019102910391049105910691079108910991109111911291139114911591169117911891199120912191229123912491259126912791289129913091319132913391349135913691379138913991409141914291439144914591469147914891499150915191529153915491559156915791589159916091619162916391649165916691679168916991709171917291739174917591769177917891799180918191829183918491859186918791889189919091919192919391949195919691979198919992009201920292039204920592069207920892099210921192129213921492159216921792189219922092219222922392249225922692279228922992309231923292339234923592369237923892399240924192429243924492459246924792489249925092519252925392549255925692579258925992609261926292639264926592669267926892699270927192729273927492759276927792789279928092819282928392849285928692879288928992909291929292939294929592969297929892999300930193029303930493059306930793089309931093119312931393149315931693179318931993209321932293239324932593269327932893299330933193329333933493359336933793389339934093419342934393449345934693479348934993509351935293539354935593569357935893599360936193629363936493659366936793689369937093719372937393749375937693779378937993809381938293839384938593869387938893899390939193929393939493959396939793989399940094019402940394049405940694079408940994109411941294139414941594169417941894199420942194229423942494259426942794289429943094319432943394349435943694379438943994409441944294439444944594469447944894499450945194529453945494559456945794589459946094619462946394649465946694679468946994709471947294739474947594769477947894799480948194829483948494859486948794889489949094919492949394949495949694979498949995009501950295039504950595069507950895099510951195129513951495159516951795189519952095219522952395249525952695279528952995309531953295339534953595369537953895399540954195429543954495459546954795489549955095519552955395549555955695579558955995609561956295639564956595669567956895699570957195729573957495759576957795789579958095819582958395849585958695879588958995909591959295939594959595969597959895999600960196029603960496059606960796089609961096119612961396149615961696179618961996209621962296239624962596269627962896299630963196329633963496359636963796389639964096419642964396449645964696479648964996509651965296539654965596569657965896599660966196629663966496659666966796689669967096719672967396749675967696779678967996809681968296839684968596869687968896899690969196929693969496959696969796989699970097019702970397049705970697079708970997109711971297139714971597169717971897199720972197229723972497259726972797289729973097319732973397349735973697379738973997409741974297439744974597469747974897499750975197529753975497559756975797589759976097619762976397649765976697679768976997709771977297739774977597769777977897799780978197829783978497859786978797889789979097919792979397949795979697979798979998009801980298039804980598069807980898099810981198129813981498159816981798189819982098219822982398249825982698279828982998309831983298339834983598369837983898399840984198429843984498459846984798489849985098519852985398549855985698579858985998609861986298639864986598669867986898699870987198729873987498759876987798789879988098819882988398849885988698879888988998909891989298939894989598969897989898999900990199029903990499059906990799089909991099119912991399149915991699179918991999209921992299239924992599269927992899299930993199329933993499359936993799389939994099419942994399449945994699479948994999509951995299539954995599569957995899599960996199629963996499659966996799689969997099719972997399749975997699779978997999809981998299839984998599869987998899899990999199929993999499959996999799989999100001000110002100031000410005100061000710008100091001010011100121001310014100151001610017100181001910020100211002210023100241002510026100271002810029100301003110032100331003410035100361003710038100391004010041100421004310044100451004610047100481004910050100511005210053100541005510056100571005810059100601006110062100631006410065100661006710068100691007010071100721007310074100751007610077100781007910080100811008210083100841008510086100871008810089100901009110092100931009410095100961009710098100991010010101101021010310104101051010610107101081010910110101111011210113101141011510116101171011810119101201012110122101231012410125101261012710128101291013010131101321013310134101351013610137101381013910140101411014210143101441014510146101471014810149101501015110152101531015410155101561015710158101591016010161101621016310164101651016610167101681016910170101711017210173101741017510176101771017810179101801018110182101831018410185101861018710188101891019010191101921019310194101951019610197101981019910200102011020210203102041020510206102071020810209102101021110212102131021410215102161021710218102191022010221102221022310224102251022610227102281022910230102311023210233102341023510236102371023810239102401024110242102431024410245102461024710248102491025010251102521025310254102551025610257102581025910260102611026210263102641026510266102671026810269102701027110272102731027410275102761027710278102791028010281102821028310284102851028610287102881028910290102911029210293102941029510296102971029810299103001030110302103031030410305103061030710308103091031010311103121031310314103151031610317103181031910320103211032210323103241032510326103271032810329103301033110332103331033410335103361033710338103391034010341103421034310344103451034610347103481034910350103511035210353103541035510356103571035810359103601036110362103631036410365103661036710368103691037010371103721037310374103751037610377103781037910380103811038210383103841038510386103871038810389103901039110392103931039410395103961039710398103991040010401104021040310404104051040610407104081040910410104111041210413104141041510416104171041810419104201042110422104231042410425104261042710428104291043010431104321043310434104351043610437104381043910440104411044210443104441044510446104471044810449104501045110452104531045410455104561045710458104591046010461104621046310464104651046610467104681046910470104711047210473104741047510476104771047810479104801048110482104831048410485104861048710488104891049010491104921049310494104951049610497104981049910500105011050210503105041050510506105071050810509105101051110512105131051410515105161051710518105191052010521105221052310524105251052610527105281052910530105311053210533105341053510536105371053810539105401054110542105431054410545105461054710548105491055010551105521055310554105551055610557105581055910560105611056210563105641056510566105671056810569105701057110572105731057410575105761057710578105791058010581105821058310584105851058610587105881058910590105911059210593105941059510596105971059810599106001060110602106031060410605106061060710608106091061010611106121061310614106151061610617106181061910620106211062210623106241062510626106271062810629106301063110632106331063410635106361063710638106391064010641106421064310644106451064610647106481064910650106511065210653106541065510656106571065810659106601066110662106631066410665106661066710668106691067010671106721067310674106751067610677106781067910680106811068210683106841068510686106871068810689106901069110692106931069410695106961069710698106991070010701107021070310704107051070610707107081070910710107111071210713107141071510716107171071810719107201072110722107231072410725107261072710728107291073010731107321073310734107351073610737107381073910740107411074210743107441074510746107471074810749107501075110752107531075410755107561075710758107591076010761107621076310764107651076610767107681076910770107711077210773107741077510776107771077810779107801078110782107831078410785107861078710788107891079010791107921079310794107951079610797107981079910800108011080210803108041080510806108071080810809108101081110812108131081410815108161081710818108191082010821108221082310824108251082610827108281082910830108311083210833108341083510836108371083810839108401084110842108431084410845108461084710848108491085010851108521085310854108551085610857108581085910860108611086210863108641086510866108671086810869108701087110872108731087410875108761087710878108791088010881108821088310884108851088610887108881088910890108911089210893108941089510896108971089810899109001090110902109031090410905109061090710908109091091010911109121091310914109151091610917109181091910920109211092210923109241092510926109271092810929109301093110932109331093410935109361093710938109391094010941109421094310944109451094610947109481094910950109511095210953109541095510956109571095810959109601096110962109631096410965109661096710968109691097010971109721097310974109751097610977109781097910980109811098210983109841098510986109871098810989109901099110992109931099410995109961099710998109991100011001110021100311004110051100611007110081100911010110111101211013110141101511016110171101811019110201102111022110231102411025110261102711028110291103011031110321103311034110351103611037110381103911040110411104211043110441104511046110471104811049110501105111052110531105411055110561105711058110591106011061110621106311064110651106611067110681106911070110711107211073110741107511076110771107811079110801108111082110831108411085110861108711088110891109011091110921109311094110951109611097110981109911100111011110211103111041110511106111071110811109111101111111112111131111411115111161111711118111191112011121111221112311124111251112611127111281112911130111311113211133111341113511136111371113811139111401114111142111431114411145111461114711148111491115011151111521115311154111551115611157111581115911160111611116211163111641116511166111671116811169111701117111172111731117411175111761117711178111791118011181111821118311184111851118611187111881118911190111911119211193111941119511196111971119811199112001120111202112031120411205112061120711208112091121011211112121121311214112151121611217112181121911220112211122211223112241122511226112271122811229112301123111232112331123411235112361123711238112391124011241112421124311244112451124611247112481124911250112511125211253112541125511256112571125811259112601126111262112631126411265112661126711268112691127011271112721127311274112751127611277112781127911280112811128211283112841128511286112871128811289112901129111292112931129411295112961129711298112991130011301113021130311304113051130611307113081130911310113111131211313113141131511316113171131811319113201132111322113231132411325113261132711328113291133011331113321133311334113351133611337113381133911340113411134211343113441134511346113471134811349113501135111352113531135411355113561135711358113591136011361113621136311364113651136611367113681136911370113711137211373113741137511376113771137811379113801138111382113831138411385113861138711388113891139011391113921139311394113951139611397113981139911400114011140211403114041140511406114071140811409114101141111412114131141411415114161141711418114191142011421114221142311424114251142611427114281142911430114311143211433114341143511436114371143811439114401144111442114431144411445114461144711448114491145011451114521145311454114551145611457114581145911460114611146211463114641146511466114671146811469114701147111472114731147411475114761147711478114791148011481114821148311484114851148611487114881148911490114911149211493114941149511496114971149811499115001150111502115031150411505115061150711508115091151011511115121151311514115151151611517115181151911520115211152211523115241152511526115271152811529115301153111532115331153411535115361153711538115391154011541115421154311544115451154611547115481154911550115511155211553115541155511556115571155811559115601156111562115631156411565115661156711568115691157011571115721157311574115751157611577115781157911580115811158211583115841158511586115871158811589115901159111592115931159411595115961159711598115991160011601116021160311604116051160611607116081160911610116111161211613116141161511616116171161811619116201162111622116231162411625116261162711628116291163011631116321163311634116351163611637116381163911640116411164211643116441164511646116471164811649116501165111652116531165411655116561165711658116591166011661116621166311664116651166611667116681166911670116711167211673116741167511676116771167811679116801168111682116831168411685116861168711688116891169011691116921169311694116951169611697116981169911700117011170211703117041170511706117071170811709117101171111712117131171411715117161171711718117191172011721117221172311724117251172611727117281172911730117311173211733117341173511736117371173811739117401174111742117431174411745117461174711748117491175011751117521175311754117551175611757117581175911760117611176211763117641176511766117671176811769117701177111772117731177411775117761177711778117791178011781117821178311784117851178611787117881178911790117911179211793117941179511796117971179811799118001180111802118031180411805118061180711808118091181011811118121181311814118151181611817118181181911820118211182211823118241182511826118271182811829118301183111832118331183411835118361183711838118391184011841118421184311844118451184611847118481184911850118511185211853118541185511856118571185811859118601186111862118631186411865118661186711868118691187011871118721187311874118751187611877118781187911880118811188211883118841188511886118871188811889118901189111892118931189411895118961189711898118991190011901119021190311904119051190611907119081190911910119111191211913119141191511916119171191811919119201192111922119231192411925119261192711928119291193011931119321193311934119351193611937119381193911940119411194211943119441194511946119471194811949119501195111952119531195411955119561195711958119591196011961119621196311964119651196611967119681196911970119711197211973119741197511976119771197811979119801198111982119831198411985119861198711988119891199011991119921199311994119951199611997119981199912000120011200212003120041200512006120071200812009120101201112012120131201412015120161201712018120191202012021120221202312024120251202612027120281202912030120311203212033120341203512036120371203812039120401204112042120431204412045120461204712048120491205012051120521205312054120551205612057120581205912060120611206212063120641206512066120671206812069120701207112072120731207412075120761207712078120791208012081120821208312084120851208612087120881208912090120911209212093120941209512096120971209812099121001210112102121031210412105121061210712108121091211012111121121211312114121151211612117121181211912120121211212212123121241212512126121271212812129121301213112132121331213412135121361213712138121391214012141121421214312144121451214612147121481214912150121511215212153121541215512156121571215812159121601216112162121631216412165121661216712168121691217012171121721217312174121751217612177121781217912180121811218212183121841218512186121871218812189121901219112192121931219412195121961219712198121991220012201122021220312204122051220612207122081220912210122111221212213122141221512216122171221812219122201222112222122231222412225122261222712228122291223012231122321223312234122351223612237122381223912240122411224212243122441224512246122471224812249122501225112252122531225412255122561225712258122591226012261122621226312264122651226612267122681226912270122711227212273122741227512276122771227812279122801228112282122831228412285122861228712288122891229012291122921229312294122951229612297122981229912300123011230212303123041230512306123071230812309123101231112312123131231412315123161231712318123191232012321123221232312324123251232612327123281232912330123311233212333123341233512336123371233812339123401234112342123431234412345123461234712348123491235012351123521235312354123551235612357123581235912360123611236212363123641236512366123671236812369123701237112372123731237412375123761237712378123791238012381123821238312384123851238612387123881238912390123911239212393123941239512396123971239812399124001240112402124031240412405124061240712408124091241012411124121241312414124151241612417124181241912420124211242212423124241242512426124271242812429124301243112432124331243412435124361243712438124391244012441124421244312444124451244612447124481244912450124511245212453124541245512456124571245812459124601246112462124631246412465124661246712468124691247012471124721247312474124751247612477124781247912480124811248212483124841248512486124871248812489124901249112492124931249412495124961249712498124991250012501125021250312504125051250612507125081250912510125111251212513125141251512516125171251812519125201252112522125231252412525125261252712528125291253012531125321253312534125351253612537125381253912540125411254212543125441254512546125471254812549125501255112552125531255412555125561255712558125591256012561125621256312564125651256612567125681256912570125711257212573125741257512576125771257812579125801258112582125831258412585125861258712588125891259012591125921259312594125951259612597125981259912600126011260212603126041260512606126071260812609126101261112612126131261412615126161261712618126191262012621126221262312624126251262612627126281262912630126311263212633126341263512636126371263812639126401264112642126431264412645126461264712648126491265012651126521265312654126551265612657126581265912660126611266212663126641266512666126671266812669126701267112672126731267412675126761267712678126791268012681126821268312684126851268612687126881268912690126911269212693126941269512696126971269812699127001270112702127031270412705127061270712708127091271012711127121271312714127151271612717127181271912720127211272212723127241272512726127271272812729127301273112732127331273412735127361273712738127391274012741127421274312744127451274612747127481274912750127511275212753127541275512756127571275812759127601276112762127631276412765127661276712768127691277012771127721277312774127751277612777127781277912780127811278212783127841278512786127871278812789127901279112792127931279412795127961279712798127991280012801128021280312804128051280612807128081280912810128111281212813128141281512816128171281812819128201282112822128231282412825128261282712828128291283012831128321283312834128351283612837128381283912840128411284212843128441284512846128471284812849128501285112852128531285412855128561285712858128591286012861128621286312864128651286612867128681286912870128711287212873128741287512876128771287812879128801288112882128831288412885128861288712888128891289012891128921289312894128951289612897128981289912900129011290212903129041290512906129071290812909129101291112912129131291412915129161291712918129191292012921129221292312924129251292612927129281292912930129311293212933129341293512936129371293812939129401294112942129431294412945129461294712948129491295012951129521295312954129551295612957129581295912960129611296212963129641296512966129671296812969129701297112972129731297412975129761297712978129791298012981129821298312984129851298612987129881298912990129911299212993129941299512996129971299812999130001300113002130031300413005130061300713008130091301013011130121301313014130151301613017130181301913020130211302213023130241302513026130271302813029130301303113032130331303413035130361303713038130391304013041130421304313044130451304613047130481304913050130511305213053130541305513056130571305813059130601306113062130631306413065130661306713068130691307013071130721307313074130751307613077130781307913080130811308213083130841308513086130871308813089130901309113092130931309413095130961309713098130991310013101131021310313104131051310613107131081310913110131111311213113131141311513116131171311813119131201312113122131231312413125131261312713128131291313013131131321313313134131351313613137131381313913140131411314213143131441314513146131471314813149131501315113152131531315413155131561315713158131591316013161131621316313164131651316613167131681316913170131711317213173131741317513176131771317813179131801318113182131831318413185131861318713188131891319013191131921319313194131951319613197131981319913200132011320213203132041320513206132071320813209132101321113212132131321413215132161321713218132191322013221132221322313224132251322613227132281322913230132311323213233132341323513236132371323813239132401324113242132431324413245132461324713248132491325013251132521325313254132551325613257132581325913260132611326213263132641326513266132671326813269132701327113272132731327413275132761327713278132791328013281132821328313284132851328613287132881328913290132911329213293132941329513296132971329813299133001330113302133031330413305133061330713308133091331013311133121331313314133151331613317133181331913320133211332213323133241332513326133271332813329133301333113332133331333413335133361333713338133391334013341133421334313344133451334613347133481334913350133511335213353133541335513356133571335813359133601336113362133631336413365133661336713368133691337013371133721337313374133751337613377133781337913380133811338213383133841338513386133871338813389133901339113392133931339413395133961339713398133991340013401134021340313404134051340613407134081340913410134111341213413134141341513416134171341813419134201342113422134231342413425134261342713428134291343013431134321343313434134351343613437134381343913440134411344213443134441344513446134471344813449134501345113452134531345413455134561345713458134591346013461134621346313464134651346613467134681346913470134711347213473134741347513476134771347813479134801348113482134831348413485134861348713488134891349013491134921349313494134951349613497134981349913500135011350213503135041350513506135071350813509135101351113512135131351413515135161351713518135191352013521135221352313524135251352613527135281352913530135311353213533135341353513536135371353813539135401354113542135431354413545135461354713548135491355013551135521355313554135551355613557135581355913560135611356213563135641356513566135671356813569135701357113572135731357413575135761357713578135791358013581135821358313584135851358613587135881358913590135911359213593135941359513596135971359813599136001360113602136031360413605136061360713608136091361013611136121361313614136151361613617136181361913620136211362213623136241362513626136271362813629136301363113632136331363413635136361363713638136391364013641136421364313644136451364613647136481364913650136511365213653136541365513656136571365813659136601366113662136631366413665136661366713668136691367013671136721367313674136751367613677136781367913680136811368213683136841368513686136871368813689136901369113692136931369413695136961369713698136991370013701137021370313704137051370613707137081370913710137111371213713137141371513716137171371813719137201372113722137231372413725137261372713728137291373013731137321373313734137351373613737137381373913740137411374213743137441374513746137471374813749137501375113752137531375413755137561375713758137591376013761137621376313764137651376613767137681376913770137711377213773137741377513776137771377813779137801378113782137831378413785137861378713788137891379013791137921379313794137951379613797137981379913800138011380213803138041380513806138071380813809138101381113812138131381413815138161381713818138191382013821138221382313824138251382613827138281382913830138311383213833138341383513836138371383813839138401384113842138431384413845138461384713848138491385013851138521385313854138551385613857138581385913860138611386213863138641386513866138671386813869138701387113872138731387413875138761387713878138791388013881138821388313884138851388613887138881388913890138911389213893138941389513896138971389813899139001390113902139031390413905139061390713908139091391013911139121391313914139151391613917139181391913920139211392213923139241392513926139271392813929139301393113932139331393413935139361393713938139391394013941139421394313944139451394613947139481394913950139511395213953139541395513956139571395813959139601396113962139631396413965139661396713968139691397013971139721397313974139751397613977139781397913980139811398213983139841398513986139871398813989139901399113992139931399413995139961399713998139991400014001140021400314004140051400614007140081400914010140111401214013140141401514016140171401814019140201402114022140231402414025140261402714028140291403014031140321403314034140351403614037140381403914040140411404214043140441404514046140471404814049140501405114052140531405414055140561405714058140591406014061140621406314064140651406614067140681406914070140711407214073140741407514076140771407814079140801408114082140831408414085140861408714088140891409014091140921409314094140951409614097140981409914100141011410214103141041410514106141071410814109141101411114112141131411414115141161411714118141191412014121141221412314124141251412614127141281412914130141311413214133141341413514136141371413814139141401414114142141431414414145141461414714148141491415014151141521415314154141551415614157141581415914160141611416214163141641416514166141671416814169141701417114172141731417414175141761417714178141791418014181141821418314184141851418614187141881418914190141911419214193141941419514196141971419814199142001420114202142031420414205142061420714208142091421014211142121421314214142151421614217142181421914220142211422214223142241422514226142271422814229142301423114232142331423414235142361423714238142391424014241142421424314244142451424614247142481424914250142511425214253142541425514256142571425814259142601426114262142631426414265142661426714268142691427014271142721427314274142751427614277142781427914280142811428214283142841428514286142871428814289142901429114292142931429414295142961429714298142991430014301143021430314304143051430614307143081430914310143111431214313143141431514316143171431814319143201432114322143231432414325143261432714328143291433014331143321433314334143351433614337143381433914340143411434214343143441434514346143471434814349143501435114352143531435414355143561435714358143591436014361143621436314364143651436614367143681436914370143711437214373143741437514376143771437814379143801438114382143831438414385143861438714388143891439014391143921439314394143951439614397143981439914400144011440214403144041440514406144071440814409144101441114412144131441414415144161441714418144191442014421144221442314424144251442614427144281442914430144311443214433144341443514436144371443814439144401444114442144431444414445144461444714448144491445014451144521445314454144551445614457144581445914460144611446214463144641446514466144671446814469144701447114472144731447414475144761447714478144791448014481144821448314484144851448614487144881448914490144911449214493144941449514496144971449814499145001450114502145031450414505145061450714508145091451014511145121451314514145151451614517145181451914520145211452214523145241452514526145271452814529145301453114532145331453414535145361453714538145391454014541145421454314544145451454614547145481454914550145511455214553145541455514556145571455814559145601456114562145631456414565145661456714568145691457014571145721457314574145751457614577145781457914580145811458214583145841458514586145871458814589145901459114592145931459414595145961459714598145991460014601146021460314604146051460614607146081460914610146111461214613146141461514616146171461814619146201462114622146231462414625146261462714628146291463014631146321463314634146351463614637146381463914640146411464214643146441464514646146471464814649146501465114652146531465414655146561465714658146591466014661146621466314664146651466614667146681466914670146711467214673146741467514676146771467814679146801468114682146831468414685146861468714688146891469014691146921469314694146951469614697146981469914700147011470214703147041470514706147071470814709147101471114712147131471414715147161471714718147191472014721147221472314724147251472614727147281472914730147311473214733147341473514736147371473814739147401474114742147431474414745147461474714748147491475014751147521475314754147551475614757147581475914760147611476214763147641476514766147671476814769147701477114772147731477414775147761477714778147791478014781147821478314784147851478614787147881478914790147911479214793147941479514796147971479814799148001480114802148031480414805148061480714808148091481014811148121481314814148151481614817148181481914820148211482214823148241482514826148271482814829148301483114832148331483414835148361483714838148391484014841148421484314844148451484614847148481484914850148511485214853148541485514856148571485814859148601486114862148631486414865148661486714868148691487014871148721487314874148751487614877148781487914880148811488214883148841488514886148871488814889148901489114892148931489414895148961489714898148991490014901149021490314904149051490614907149081490914910149111491214913149141491514916149171491814919149201492114922149231492414925149261492714928149291493014931149321493314934149351493614937149381493914940149411494214943149441494514946149471494814949149501495114952149531495414955149561495714958149591496014961149621496314964149651496614967149681496914970149711497214973149741497514976149771497814979149801498114982149831498414985149861498714988149891499014991149921499314994149951499614997149981499915000150011500215003150041500515006150071500815009150101501115012150131501415015150161501715018150191502015021150221502315024150251502615027150281502915030150311503215033150341503515036150371503815039150401504115042150431504415045150461504715048150491505015051150521505315054150551505615057150581505915060150611506215063150641506515066150671506815069150701507115072150731507415075150761507715078150791508015081150821508315084150851508615087150881508915090150911509215093150941509515096150971509815099151001510115102151031510415105151061510715108151091511015111151121511315114151151511615117151181511915120151211512215123151241512515126151271512815129151301513115132151331513415135151361513715138151391514015141151421514315144151451514615147151481514915150151511515215153151541515515156151571515815159151601516115162151631516415165151661516715168151691517015171151721517315174151751517615177151781517915180151811518215183151841518515186151871518815189151901519115192151931519415195151961519715198151991520015201152021520315204152051520615207152081520915210152111521215213152141521515216152171521815219152201522115222152231522415225152261522715228152291523015231152321523315234152351523615237152381523915240152411524215243152441524515246152471524815249152501525115252152531525415255152561525715258152591526015261152621526315264152651526615267152681526915270152711527215273152741527515276152771527815279152801528115282152831528415285152861528715288152891529015291152921529315294152951529615297152981529915300153011530215303153041530515306153071530815309153101531115312153131531415315153161531715318153191532015321153221532315324153251532615327153281532915330153311533215333153341533515336153371533815339153401534115342153431534415345153461534715348153491535015351153521535315354153551535615357153581535915360153611536215363153641536515366153671536815369153701537115372153731537415375153761537715378153791538015381153821538315384153851538615387153881538915390153911539215393153941539515396153971539815399154001540115402154031540415405154061540715408154091541015411154121541315414154151541615417154181541915420154211542215423154241542515426154271542815429154301543115432154331543415435154361543715438154391544015441154421544315444154451544615447154481544915450154511545215453154541545515456154571545815459154601546115462154631546415465154661546715468154691547015471154721547315474154751547615477154781547915480154811548215483154841548515486154871548815489154901549115492154931549415495154961549715498154991550015501155021550315504155051550615507155081550915510155111551215513155141551515516155171551815519155201552115522155231552415525155261552715528155291553015531155321553315534155351553615537155381553915540155411554215543155441554515546155471554815549155501555115552155531555415555155561555715558155591556015561155621556315564155651556615567155681556915570155711557215573155741557515576155771557815579155801558115582155831558415585155861558715588155891559015591155921559315594155951559615597155981559915600156011560215603156041560515606156071560815609156101561115612156131561415615156161561715618156191562015621156221562315624156251562615627156281562915630156311563215633156341563515636156371563815639156401564115642156431564415645156461564715648156491565015651156521565315654156551565615657156581565915660156611566215663156641566515666156671566815669156701567115672156731567415675156761567715678156791568015681156821568315684156851568615687156881568915690156911569215693156941569515696156971569815699157001570115702157031570415705157061570715708157091571015711157121571315714157151571615717157181571915720157211572215723157241572515726157271572815729157301573115732157331573415735157361573715738157391574015741157421574315744157451574615747157481574915750157511575215753157541575515756157571575815759157601576115762157631576415765157661576715768157691577015771157721577315774157751577615777157781577915780157811578215783157841578515786157871578815789157901579115792157931579415795157961579715798157991580015801158021580315804158051580615807158081580915810158111581215813158141581515816158171581815819158201582115822158231582415825158261582715828158291583015831158321583315834158351583615837158381583915840158411584215843158441584515846158471584815849158501585115852158531585415855158561585715858158591586015861158621586315864158651586615867158681586915870158711587215873158741587515876158771587815879158801588115882158831588415885158861588715888158891589015891158921589315894158951589615897158981589915900159011590215903159041590515906159071590815909159101591115912159131591415915159161591715918159191592015921159221592315924159251592615927159281592915930159311593215933159341593515936159371593815939159401594115942159431594415945159461594715948159491595015951159521595315954159551595615957159581595915960159611596215963159641596515966159671596815969159701597115972159731597415975159761597715978159791598015981159821598315984159851598615987159881598915990159911599215993159941599515996159971599815999160001600116002160031600416005160061600716008160091601016011160121601316014160151601616017160181601916020160211602216023160241602516026160271602816029160301603116032160331603416035160361603716038160391604016041160421604316044160451604616047160481604916050160511605216053160541605516056160571605816059160601606116062160631606416065160661606716068160691607016071160721607316074160751607616077160781607916080160811608216083160841608516086160871608816089160901609116092160931609416095160961609716098160991610016101161021610316104161051610616107161081610916110161111611216113161141611516116161171611816119161201612116122161231612416125161261612716128161291613016131161321613316134161351613616137161381613916140161411614216143161441614516146161471614816149161501615116152161531615416155161561615716158161591616016161161621616316164161651616616167161681616916170161711617216173161741617516176161771617816179161801618116182161831618416185161861618716188161891619016191161921619316194161951619616197161981619916200162011620216203162041620516206162071620816209162101621116212162131621416215162161621716218162191622016221162221622316224162251622616227162281622916230162311623216233162341623516236162371623816239162401624116242162431624416245162461624716248162491625016251162521625316254162551625616257162581625916260162611626216263162641626516266162671626816269162701627116272162731627416275162761627716278162791628016281162821628316284162851628616287162881628916290162911629216293162941629516296162971629816299163001630116302163031630416305163061630716308163091631016311163121631316314163151631616317163181631916320163211632216323163241632516326163271632816329163301633116332163331633416335163361633716338163391634016341163421634316344163451634616347163481634916350163511635216353163541635516356163571635816359163601636116362163631636416365163661636716368163691637016371163721637316374163751637616377163781637916380163811638216383163841638516386163871638816389163901639116392163931639416395163961639716398163991640016401164021640316404164051640616407164081640916410164111641216413164141641516416164171641816419164201642116422164231642416425164261642716428164291643016431164321643316434164351643616437164381643916440164411644216443164441644516446164471644816449164501645116452164531645416455164561645716458164591646016461164621646316464164651646616467164681646916470164711647216473164741647516476164771647816479164801648116482164831648416485164861648716488164891649016491164921649316494164951649616497164981649916500165011650216503165041650516506165071650816509165101651116512165131651416515165161651716518165191652016521165221652316524165251652616527165281652916530165311653216533165341653516536165371653816539165401654116542165431654416545165461654716548165491655016551165521655316554165551655616557165581655916560165611656216563165641656516566165671656816569165701657116572165731657416575165761657716578165791658016581165821658316584165851658616587165881658916590165911659216593165941659516596165971659816599166001660116602166031660416605166061660716608166091661016611166121661316614166151661616617166181661916620166211662216623166241662516626166271662816629166301663116632166331663416635166361663716638166391664016641166421664316644166451664616647166481664916650166511665216653166541665516656166571665816659166601666116662166631666416665166661666716668166691667016671166721667316674166751667616677166781667916680166811668216683166841668516686166871668816689166901669116692166931669416695166961669716698166991670016701167021670316704167051670616707167081670916710167111671216713167141671516716167171671816719167201672116722167231672416725167261672716728167291673016731167321673316734167351673616737167381673916740167411674216743167441674516746167471674816749167501675116752167531675416755167561675716758167591676016761167621676316764167651676616767167681676916770167711677216773167741677516776167771677816779167801678116782167831678416785167861678716788167891679016791167921679316794167951679616797167981679916800168011680216803168041680516806168071680816809168101681116812168131681416815168161681716818168191682016821168221682316824168251682616827168281682916830168311683216833168341683516836168371683816839168401684116842168431684416845168461684716848168491685016851168521685316854168551685616857168581685916860168611686216863168641686516866168671686816869168701687116872168731687416875168761687716878168791688016881168821688316884168851688616887168881688916890168911689216893168941689516896168971689816899169001690116902169031690416905169061690716908169091691016911169121691316914169151691616917169181691916920169211692216923169241692516926169271692816929169301693116932169331693416935169361693716938169391694016941169421694316944169451694616947169481694916950169511695216953169541695516956169571695816959169601696116962169631696416965169661696716968169691697016971169721697316974169751697616977169781697916980169811698216983169841698516986169871698816989169901699116992169931699416995169961699716998169991700017001170021700317004170051700617007170081700917010170111701217013170141701517016170171701817019170201702117022170231702417025170261702717028170291703017031170321703317034170351703617037170381703917040170411704217043170441704517046170471704817049170501705117052170531705417055170561705717058170591706017061170621706317064170651706617067170681706917070170711707217073170741707517076170771707817079170801708117082170831708417085170861708717088170891709017091170921709317094170951709617097170981709917100171011710217103171041710517106171071710817109171101711117112171131711417115171161711717118171191712017121171221712317124171251712617127171281712917130171311713217133171341713517136171371713817139171401714117142171431714417145171461714717148171491715017151171521715317154171551715617157171581715917160171611716217163171641716517166171671716817169171701717117172171731717417175171761717717178171791718017181171821718317184171851718617187171881718917190171911719217193171941719517196171971719817199172001720117202172031720417205172061720717208172091721017211172121721317214172151721617217172181721917220172211722217223172241722517226172271722817229172301723117232172331723417235172361723717238172391724017241172421724317244172451724617247172481724917250172511725217253172541725517256172571725817259172601726117262172631726417265172661726717268172691727017271172721727317274172751727617277172781727917280172811728217283172841728517286172871728817289172901729117292172931729417295172961729717298172991730017301173021730317304173051730617307173081730917310173111731217313173141731517316173171731817319173201732117322173231732417325173261732717328173291733017331173321733317334173351733617337173381733917340173411734217343173441734517346173471734817349173501735117352173531735417355173561735717358173591736017361173621736317364173651736617367173681736917370173711737217373173741737517376173771737817379173801738117382173831738417385173861738717388173891739017391173921739317394173951739617397173981739917400174011740217403174041740517406174071740817409174101741117412174131741417415174161741717418174191742017421174221742317424174251742617427174281742917430174311743217433174341743517436174371743817439174401744117442174431744417445174461744717448174491745017451174521745317454174551745617457174581745917460174611746217463174641746517466174671746817469174701747117472174731747417475174761747717478174791748017481174821748317484174851748617487174881748917490174911749217493174941749517496174971749817499175001750117502175031750417505175061750717508175091751017511175121751317514175151751617517175181751917520175211752217523175241752517526175271752817529175301753117532175331753417535175361753717538175391754017541175421754317544175451754617547175481754917550175511755217553175541755517556175571755817559175601756117562175631756417565175661756717568175691757017571175721757317574175751757617577175781757917580175811758217583175841758517586175871758817589175901759117592175931759417595175961759717598175991760017601176021760317604176051760617607176081760917610176111761217613176141761517616176171761817619176201762117622176231762417625176261762717628176291763017631176321763317634176351763617637176381763917640176411764217643176441764517646176471764817649176501765117652176531765417655176561765717658176591766017661176621766317664176651766617667176681766917670176711767217673176741767517676176771767817679176801768117682176831768417685176861768717688176891769017691176921769317694176951769617697176981769917700177011770217703177041770517706177071770817709177101771117712177131771417715177161771717718177191772017721177221772317724177251772617727177281772917730177311773217733177341773517736177371773817739177401774117742177431774417745177461774717748177491775017751177521775317754177551775617757177581775917760177611776217763177641776517766177671776817769177701777117772177731777417775177761777717778177791778017781177821778317784177851778617787177881778917790177911779217793177941779517796177971779817799178001780117802178031780417805178061780717808178091781017811178121781317814178151781617817178181781917820178211782217823178241782517826178271782817829178301783117832178331783417835178361783717838178391784017841178421784317844178451784617847178481784917850178511785217853178541785517856178571785817859178601786117862178631786417865178661786717868178691787017871178721787317874178751787617877178781787917880178811788217883178841788517886178871788817889178901789117892178931789417895178961789717898178991790017901179021790317904179051790617907179081790917910179111791217913179141791517916179171791817919179201792117922179231792417925179261792717928179291793017931179321793317934179351793617937179381793917940179411794217943179441794517946179471794817949179501795117952179531795417955179561795717958179591796017961179621796317964179651796617967179681796917970179711797217973179741797517976179771797817979179801798117982179831798417985179861798717988179891799017991179921799317994179951799617997179981799918000180011800218003180041800518006180071800818009180101801118012180131801418015180161801718018180191802018021180221802318024180251802618027180281802918030180311803218033180341803518036180371803818039180401804118042180431804418045180461804718048180491805018051180521805318054180551805618057180581805918060180611806218063180641806518066180671806818069180701807118072180731807418075180761807718078180791808018081180821808318084180851808618087180881808918090180911809218093180941809518096180971809818099181001810118102181031810418105181061810718108181091811018111181121811318114181151811618117181181811918120181211812218123181241812518126181271812818129181301813118132181331813418135181361813718138181391814018141181421814318144181451814618147181481814918150181511815218153181541815518156181571815818159181601816118162181631816418165181661816718168181691817018171181721817318174181751817618177181781817918180181811818218183181841818518186181871818818189181901819118192181931819418195181961819718198181991820018201182021820318204182051820618207182081820918210182111821218213182141821518216182171821818219182201822118222182231822418225182261822718228182291823018231182321823318234182351823618237182381823918240182411824218243182441824518246182471824818249182501825118252182531825418255182561825718258182591826018261182621826318264182651826618267182681826918270182711827218273182741827518276182771827818279182801828118282182831828418285182861828718288182891829018291182921829318294182951829618297182981829918300183011830218303183041830518306183071830818309183101831118312183131831418315183161831718318183191832018321183221832318324183251832618327183281832918330183311833218333183341833518336183371833818339183401834118342183431834418345183461834718348183491835018351183521835318354183551835618357183581835918360183611836218363183641836518366183671836818369183701837118372183731837418375183761837718378183791838018381183821838318384183851838618387183881838918390183911839218393183941839518396183971839818399184001840118402184031840418405184061840718408184091841018411184121841318414184151841618417184181841918420184211842218423184241842518426184271842818429184301843118432184331843418435184361843718438184391844018441184421844318444184451844618447184481844918450184511845218453184541845518456184571845818459184601846118462184631846418465184661846718468184691847018471184721847318474184751847618477184781847918480184811848218483184841848518486184871848818489184901849118492184931849418495184961849718498184991850018501185021850318504185051850618507185081850918510185111851218513185141851518516185171851818519185201852118522185231852418525185261852718528185291853018531185321853318534185351853618537185381853918540185411854218543185441854518546185471854818549185501855118552185531855418555185561855718558185591856018561185621856318564185651856618567185681856918570185711857218573185741857518576185771857818579185801858118582185831858418585185861858718588185891859018591185921859318594185951859618597185981859918600186011860218603186041860518606186071860818609186101861118612186131861418615186161861718618186191862018621186221862318624186251862618627186281862918630186311863218633186341863518636186371863818639186401864118642186431864418645186461864718648186491865018651186521865318654186551865618657186581865918660186611866218663186641866518666186671866818669186701867118672186731867418675186761867718678186791868018681186821868318684186851868618687186881868918690186911869218693186941869518696186971869818699187001870118702187031870418705187061870718708187091871018711187121871318714187151871618717187181871918720187211872218723187241872518726187271872818729187301873118732187331873418735187361873718738187391874018741187421874318744187451874618747187481874918750187511875218753187541875518756187571875818759187601876118762187631876418765187661876718768187691877018771187721877318774187751877618777187781877918780187811878218783187841878518786187871878818789187901879118792187931879418795187961879718798187991880018801188021880318804188051880618807188081880918810188111881218813188141881518816188171881818819188201882118822188231882418825188261882718828188291883018831188321883318834188351883618837188381883918840188411884218843188441884518846188471884818849188501885118852188531885418855188561885718858188591886018861188621886318864188651886618867188681886918870188711887218873188741887518876188771887818879188801888118882188831888418885188861888718888188891889018891188921889318894188951889618897188981889918900189011890218903189041890518906189071890818909189101891118912189131891418915189161891718918189191892018921189221892318924189251892618927189281892918930189311893218933189341893518936189371893818939189401894118942189431894418945189461894718948189491895018951189521895318954189551895618957189581895918960189611896218963189641896518966189671896818969189701897118972189731897418975189761897718978189791898018981189821898318984189851898618987189881898918990189911899218993189941899518996189971899818999190001900119002190031900419005190061900719008190091901019011190121901319014190151901619017190181901919020190211902219023190241902519026190271902819029190301903119032190331903419035190361903719038190391904019041190421904319044190451904619047190481904919050190511905219053190541905519056190571905819059190601906119062190631906419065190661906719068190691907019071190721907319074190751907619077190781907919080190811908219083190841908519086190871908819089190901909119092190931909419095190961909719098190991910019101191021910319104191051910619107191081910919110191111911219113191141911519116191171911819119191201912119122191231912419125191261912719128191291913019131191321913319134191351913619137191381913919140191411914219143191441914519146191471914819149191501915119152191531915419155191561915719158191591916019161191621916319164191651916619167191681916919170191711917219173191741917519176191771917819179191801918119182191831918419185191861918719188191891919019191191921919319194191951919619197191981919919200192011920219203192041920519206192071920819209192101921119212192131921419215192161921719218192191922019221192221922319224192251922619227192281922919230192311923219233192341923519236192371923819239192401924119242192431924419245192461924719248192491925019251192521925319254192551925619257192581925919260192611926219263192641926519266192671926819269192701927119272192731927419275192761927719278192791928019281192821928319284192851928619287192881928919290192911929219293192941929519296192971929819299193001930119302193031930419305193061930719308193091931019311193121931319314193151931619317193181931919320193211932219323193241932519326193271932819329193301933119332193331933419335193361933719338193391934019341193421934319344193451934619347193481934919350193511935219353193541935519356193571935819359193601936119362193631936419365193661936719368193691937019371193721937319374193751937619377193781937919380193811938219383193841938519386193871938819389193901939119392193931939419395193961939719398193991940019401194021940319404194051940619407194081940919410194111941219413194141941519416194171941819419194201942119422194231942419425194261942719428194291943019431194321943319434194351943619437194381943919440194411944219443194441944519446194471944819449194501945119452194531945419455194561945719458194591946019461194621946319464194651946619467194681946919470194711947219473194741947519476194771947819479194801948119482194831948419485194861948719488194891949019491194921949319494194951949619497194981949919500195011950219503195041950519506195071950819509195101951119512195131951419515195161951719518195191952019521195221952319524195251952619527195281952919530195311953219533195341953519536195371953819539195401954119542195431954419545195461954719548195491955019551195521955319554195551955619557195581955919560195611956219563195641956519566195671956819569195701957119572195731957419575195761957719578195791958019581195821958319584195851958619587195881958919590195911959219593195941959519596195971959819599196001960119602196031960419605196061960719608196091961019611196121961319614196151961619617196181961919620196211962219623196241962519626196271962819629196301963119632196331963419635196361963719638196391964019641196421964319644196451964619647196481964919650196511965219653196541965519656196571965819659196601966119662196631966419665196661966719668196691967019671196721967319674196751967619677196781967919680196811968219683196841968519686196871968819689196901969119692196931969419695196961969719698196991970019701197021970319704197051970619707197081970919710197111971219713197141971519716197171971819719197201972119722197231972419725197261972719728197291973019731197321973319734197351973619737197381973919740197411974219743197441974519746197471974819749197501975119752197531975419755197561975719758197591976019761197621976319764197651976619767197681976919770197711977219773197741977519776197771977819779197801978119782197831978419785197861978719788197891979019791197921979319794197951979619797197981979919800198011980219803198041980519806198071980819809198101981119812198131981419815198161981719818198191982019821198221982319824198251982619827198281982919830198311983219833198341983519836198371983819839198401984119842198431984419845198461984719848198491985019851198521985319854198551985619857198581985919860198611986219863198641986519866198671986819869198701987119872198731987419875198761987719878198791988019881198821988319884198851988619887198881988919890198911989219893198941989519896198971989819899199001990119902199031990419905199061990719908199091991019911199121991319914199151991619917199181991919920199211992219923199241992519926199271992819929199301993119932199331993419935199361993719938199391994019941199421994319944199451994619947199481994919950199511995219953199541995519956199571995819959199601996119962199631996419965199661996719968199691997019971199721997319974199751997619977199781997919980199811998219983199841998519986199871998819989199901999119992199931999419995199961999719998199992000020001200022000320004200052000620007200082000920010200112001220013200142001520016200172001820019200202002120022200232002420025200262002720028200292003020031200322003320034200352003620037200382003920040200412004220043200442004520046200472004820049200502005120052200532005420055200562005720058200592006020061200622006320064200652006620067200682006920070200712007220073200742007520076200772007820079200802008120082200832008420085200862008720088200892009020091200922009320094200952009620097200982009920100201012010220103201042010520106201072010820109201102011120112201132011420115201162011720118201192012020121201222012320124201252012620127201282012920130201312013220133201342013520136201372013820139201402014120142201432014420145201462014720148201492015020151201522015320154201552015620157201582015920160201612016220163201642016520166201672016820169201702017120172201732017420175201762017720178201792018020181201822018320184201852018620187201882018920190201912019220193201942019520196201972019820199202002020120202202032020420205202062020720208202092021020211202122021320214202152021620217202182021920220202212022220223202242022520226202272022820229202302023120232202332023420235202362023720238202392024020241202422024320244202452024620247202482024920250202512025220253202542025520256202572025820259202602026120262202632026420265202662026720268202692027020271202722027320274202752027620277202782027920280202812028220283202842028520286202872028820289202902029120292202932029420295202962029720298202992030020301203022030320304203052030620307203082030920310203112031220313203142031520316203172031820319203202032120322203232032420325203262032720328203292033020331203322033320334203352033620337203382033920340203412034220343203442034520346203472034820349203502035120352203532035420355203562035720358203592036020361203622036320364203652036620367203682036920370203712037220373203742037520376203772037820379203802038120382203832038420385203862038720388203892039020391203922039320394203952039620397203982039920400204012040220403204042040520406204072040820409204102041120412204132041420415204162041720418204192042020421204222042320424204252042620427204282042920430204312043220433204342043520436204372043820439204402044120442204432044420445204462044720448204492045020451204522045320454204552045620457204582045920460204612046220463204642046520466204672046820469204702047120472204732047420475204762047720478204792048020481204822048320484204852048620487204882048920490204912049220493204942049520496204972049820499205002050120502205032050420505205062050720508205092051020511205122051320514205152051620517205182051920520205212052220523205242052520526205272052820529205302053120532205332053420535205362053720538205392054020541205422054320544205452054620547205482054920550205512055220553205542055520556205572055820559205602056120562205632056420565205662056720568205692057020571205722057320574205752057620577205782057920580205812058220583205842058520586205872058820589205902059120592205932059420595205962059720598205992060020601206022060320604206052060620607206082060920610206112061220613206142061520616206172061820619206202062120622206232062420625206262062720628206292063020631206322063320634206352063620637206382063920640206412064220643206442064520646206472064820649206502065120652206532065420655206562065720658206592066020661206622066320664206652066620667206682066920670206712067220673206742067520676206772067820679206802068120682206832068420685206862068720688206892069020691206922069320694206952069620697206982069920700207012070220703207042070520706207072070820709207102071120712207132071420715207162071720718207192072020721207222072320724207252072620727207282072920730207312073220733207342073520736207372073820739207402074120742207432074420745207462074720748207492075020751207522075320754207552075620757207582075920760207612076220763207642076520766207672076820769207702077120772207732077420775207762077720778207792078020781207822078320784207852078620787207882078920790207912079220793207942079520796207972079820799208002080120802208032080420805208062080720808208092081020811208122081320814208152081620817208182081920820208212082220823208242082520826208272082820829208302083120832208332083420835208362083720838208392084020841208422084320844208452084620847208482084920850208512085220853208542085520856208572085820859208602086120862208632086420865208662086720868208692087020871208722087320874208752087620877208782087920880208812088220883208842088520886208872088820889208902089120892208932089420895208962089720898208992090020901209022090320904209052090620907209082090920910209112091220913209142091520916209172091820919209202092120922209232092420925209262092720928209292093020931209322093320934209352093620937209382093920940209412094220943209442094520946209472094820949209502095120952209532095420955209562095720958209592096020961209622096320964209652096620967209682096920970209712097220973209742097520976209772097820979209802098120982209832098420985209862098720988209892099020991209922099320994209952099620997209982099921000210012100221003210042100521006210072100821009210102101121012210132101421015210162101721018210192102021021210222102321024210252102621027210282102921030210312103221033210342103521036210372103821039210402104121042210432104421045210462104721048210492105021051210522105321054210552105621057210582105921060210612106221063210642106521066210672106821069210702107121072210732107421075210762107721078210792108021081210822108321084210852108621087210882108921090210912109221093210942109521096210972109821099211002110121102211032110421105211062110721108211092111021111211122111321114211152111621117211182111921120211212112221123211242112521126211272112821129211302113121132211332113421135211362113721138211392114021141211422114321144211452114621147211482114921150211512115221153211542115521156211572115821159211602116121162211632116421165211662116721168211692117021171211722117321174211752117621177211782117921180211812118221183211842118521186211872118821189211902119121192211932119421195211962119721198211992120021201212022120321204212052120621207212082120921210212112121221213212142121521216212172121821219212202122121222212232122421225212262122721228212292123021231212322123321234212352123621237212382123921240212412124221243212442124521246212472124821249212502125121252212532125421255212562125721258212592126021261212622126321264212652126621267212682126921270212712127221273212742127521276212772127821279212802128121282212832128421285212862128721288212892129021291212922129321294212952129621297212982129921300213012130221303213042130521306213072130821309213102131121312213132131421315213162131721318213192132021321213222132321324213252132621327213282132921330213312133221333213342133521336213372133821339213402134121342213432134421345213462134721348213492135021351213522135321354213552135621357213582135921360213612136221363213642136521366213672136821369213702137121372213732137421375213762137721378213792138021381213822138321384213852138621387213882138921390213912139221393213942139521396213972139821399214002140121402214032140421405214062140721408214092141021411214122141321414214152141621417214182141921420214212142221423214242142521426214272142821429214302143121432214332143421435214362143721438214392144021441214422144321444214452144621447214482144921450214512145221453214542145521456214572145821459214602146121462214632146421465214662146721468214692147021471214722147321474214752147621477214782147921480214812148221483214842148521486214872148821489214902149121492214932149421495214962149721498214992150021501215022150321504215052150621507215082150921510215112151221513215142151521516215172151821519215202152121522215232152421525215262152721528215292153021531215322153321534215352153621537215382153921540215412154221543215442154521546215472154821549215502155121552215532155421555215562155721558215592156021561215622156321564215652156621567215682156921570215712157221573215742157521576215772157821579215802158121582215832158421585215862158721588215892159021591215922159321594215952159621597215982159921600216012160221603216042160521606216072160821609216102161121612216132161421615216162161721618216192162021621216222162321624216252162621627216282162921630216312163221633216342163521636216372163821639216402164121642216432164421645216462164721648216492165021651216522165321654216552165621657216582165921660216612166221663216642166521666216672166821669216702167121672216732167421675216762167721678216792168021681216822168321684216852168621687216882168921690216912169221693216942169521696216972169821699217002170121702217032170421705217062170721708217092171021711217122171321714217152171621717217182171921720217212172221723217242172521726217272172821729217302173121732217332173421735217362173721738217392174021741217422174321744217452174621747217482174921750217512175221753217542175521756217572175821759217602176121762217632176421765217662176721768217692177021771217722177321774217752177621777217782177921780217812178221783217842178521786217872178821789217902179121792217932179421795217962179721798217992180021801218022180321804218052180621807218082180921810218112181221813218142181521816218172181821819218202182121822218232182421825218262182721828218292183021831218322183321834218352183621837218382183921840218412184221843218442184521846218472184821849218502185121852218532185421855218562185721858218592186021861218622186321864218652186621867218682186921870218712187221873218742187521876218772187821879218802188121882218832188421885218862188721888218892189021891218922189321894218952189621897218982189921900219012190221903219042190521906219072190821909219102191121912219132191421915219162191721918219192192021921219222192321924219252192621927219282192921930219312193221933219342193521936219372193821939219402194121942219432194421945219462194721948219492195021951219522195321954219552195621957219582195921960219612196221963219642196521966219672196821969219702197121972219732197421975219762197721978219792198021981219822198321984219852198621987219882198921990219912199221993219942199521996219972199821999220002200122002220032200422005220062200722008220092201022011220122201322014220152201622017220182201922020220212202222023220242202522026220272202822029220302203122032220332203422035220362203722038220392204022041220422204322044220452204622047220482204922050220512205222053220542205522056220572205822059220602206122062220632206422065220662206722068220692207022071220722207322074220752207622077220782207922080220812208222083220842208522086220872208822089220902209122092220932209422095220962209722098220992210022101221022210322104221052210622107221082210922110221112211222113221142211522116221172211822119221202212122122221232212422125221262212722128221292213022131221322213322134221352213622137221382213922140221412214222143221442214522146221472214822149221502215122152221532215422155221562215722158221592216022161221622216322164221652216622167221682216922170221712217222173221742217522176221772217822179221802218122182221832218422185221862218722188221892219022191221922219322194221952219622197221982219922200222012220222203222042220522206222072220822209222102221122212222132221422215222162221722218222192222022221222222222322224222252222622227222282222922230222312223222233222342223522236222372223822239222402224122242222432224422245222462224722248222492225022251222522225322254222552225622257222582225922260222612226222263222642226522266222672226822269222702227122272222732227422275222762227722278222792228022281222822228322284222852228622287222882228922290222912229222293222942229522296222972229822299223002230122302223032230422305223062230722308223092231022311223122231322314223152231622317223182231922320223212232222323223242232522326223272232822329223302233122332223332233422335223362233722338223392234022341223422234322344223452234622347223482234922350223512235222353223542235522356223572235822359223602236122362223632236422365223662236722368223692237022371223722237322374223752237622377223782237922380223812238222383223842238522386223872238822389223902239122392223932239422395223962239722398223992240022401224022240322404224052240622407224082240922410224112241222413224142241522416224172241822419224202242122422224232242422425224262242722428224292243022431224322243322434224352243622437224382243922440224412244222443224442244522446224472244822449224502245122452224532245422455224562245722458224592246022461224622246322464224652246622467224682246922470224712247222473224742247522476224772247822479224802248122482224832248422485224862248722488224892249022491224922249322494224952249622497224982249922500225012250222503225042250522506225072250822509225102251122512225132251422515225162251722518225192252022521225222252322524225252252622527225282252922530225312253222533225342253522536225372253822539225402254122542225432254422545225462254722548225492255022551225522255322554225552255622557225582255922560225612256222563225642256522566225672256822569225702257122572225732257422575225762257722578225792258022581225822258322584225852258622587225882258922590225912259222593225942259522596225972259822599226002260122602226032260422605226062260722608226092261022611226122261322614226152261622617226182261922620226212262222623226242262522626226272262822629226302263122632226332263422635226362263722638226392264022641226422264322644226452264622647226482264922650226512265222653226542265522656226572265822659226602266122662226632266422665226662266722668226692267022671226722267322674226752267622677226782267922680226812268222683226842268522686226872268822689226902269122692226932269422695226962269722698226992270022701227022270322704227052270622707227082270922710227112271222713227142271522716227172271822719227202272122722227232272422725227262272722728227292273022731227322273322734227352273622737227382273922740227412274222743227442274522746227472274822749227502275122752227532275422755227562275722758227592276022761227622276322764227652276622767227682276922770227712277222773227742277522776227772277822779227802278122782227832278422785227862278722788227892279022791227922279322794227952279622797227982279922800228012280222803228042280522806228072280822809228102281122812228132281422815228162281722818228192282022821228222282322824228252282622827228282282922830228312283222833228342283522836228372283822839228402284122842228432284422845228462284722848228492285022851228522285322854228552285622857228582285922860228612286222863228642286522866228672286822869228702287122872228732287422875228762287722878228792288022881228822288322884228852288622887228882288922890228912289222893228942289522896228972289822899229002290122902229032290422905229062290722908229092291022911229122291322914229152291622917229182291922920229212292222923229242292522926229272292822929229302293122932229332293422935229362293722938229392294022941229422294322944229452294622947229482294922950229512295222953229542295522956229572295822959229602296122962229632296422965229662296722968229692297022971229722297322974229752297622977229782297922980229812298222983229842298522986229872298822989229902299122992229932299422995229962299722998229992300023001230022300323004230052300623007230082300923010230112301223013230142301523016230172301823019230202302123022230232302423025230262302723028230292303023031230322303323034230352303623037230382303923040230412304223043230442304523046230472304823049230502305123052230532305423055230562305723058230592306023061230622306323064230652306623067230682306923070230712307223073230742307523076230772307823079230802308123082230832308423085230862308723088230892309023091230922309323094230952309623097230982309923100231012310223103231042310523106231072310823109231102311123112231132311423115231162311723118231192312023121231222312323124231252312623127231282312923130231312313223133231342313523136231372313823139231402314123142231432314423145231462314723148231492315023151231522315323154231552315623157231582315923160231612316223163231642316523166231672316823169231702317123172231732317423175231762317723178231792318023181231822318323184231852318623187231882318923190231912319223193231942319523196231972319823199232002320123202232032320423205232062320723208232092321023211232122321323214232152321623217232182321923220232212322223223232242322523226232272322823229232302323123232232332323423235232362323723238232392324023241232422324323244232452324623247232482324923250232512325223253232542325523256232572325823259232602326123262232632326423265232662326723268232692327023271232722327323274232752327623277232782327923280232812328223283232842328523286232872328823289232902329123292232932329423295232962329723298232992330023301233022330323304233052330623307233082330923310233112331223313233142331523316233172331823319233202332123322233232332423325233262332723328233292333023331233322333323334233352333623337233382333923340233412334223343233442334523346233472334823349233502335123352233532335423355233562335723358233592336023361233622336323364233652336623367233682336923370233712337223373233742337523376233772337823379233802338123382233832338423385233862338723388233892339023391233922339323394233952339623397233982339923400234012340223403234042340523406234072340823409234102341123412234132341423415234162341723418234192342023421234222342323424234252342623427234282342923430234312343223433234342343523436234372343823439234402344123442234432344423445234462344723448234492345023451234522345323454234552345623457234582345923460234612346223463234642346523466234672346823469234702347123472234732347423475234762347723478234792348023481234822348323484234852348623487234882348923490234912349223493234942349523496234972349823499235002350123502235032350423505235062350723508235092351023511235122351323514235152351623517235182351923520235212352223523235242352523526235272352823529235302353123532235332353423535235362353723538235392354023541235422354323544235452354623547235482354923550235512355223553235542355523556235572355823559235602356123562235632356423565235662356723568235692357023571235722357323574235752357623577235782357923580235812358223583235842358523586235872358823589235902359123592235932359423595235962359723598235992360023601236022360323604236052360623607236082360923610236112361223613236142361523616236172361823619236202362123622236232362423625236262362723628236292363023631236322363323634236352363623637236382363923640236412364223643236442364523646236472364823649236502365123652236532365423655236562365723658236592366023661236622366323664236652366623667236682366923670236712367223673236742367523676236772367823679236802368123682236832368423685236862368723688236892369023691236922369323694236952369623697236982369923700237012370223703237042370523706237072370823709237102371123712237132371423715237162371723718237192372023721237222372323724237252372623727237282372923730237312373223733237342373523736237372373823739237402374123742237432374423745237462374723748237492375023751237522375323754237552375623757237582375923760237612376223763237642376523766237672376823769237702377123772237732377423775237762377723778237792378023781237822378323784237852378623787237882378923790237912379223793237942379523796237972379823799238002380123802238032380423805238062380723808238092381023811238122381323814238152381623817238182381923820238212382223823238242382523826238272382823829238302383123832238332383423835238362383723838238392384023841238422384323844238452384623847238482384923850238512385223853238542385523856238572385823859238602386123862238632386423865238662386723868238692387023871238722387323874238752387623877238782387923880238812388223883238842388523886238872388823889238902389123892238932389423895238962389723898238992390023901239022390323904239052390623907239082390923910239112391223913239142391523916239172391823919239202392123922239232392423925239262392723928239292393023931239322393323934239352393623937239382393923940239412394223943239442394523946239472394823949239502395123952239532395423955239562395723958239592396023961239622396323964239652396623967239682396923970239712397223973239742397523976239772397823979239802398123982239832398423985239862398723988239892399023991239922399323994239952399623997239982399924000240012400224003240042400524006240072400824009240102401124012240132401424015240162401724018240192402024021240222402324024240252402624027240282402924030240312403224033240342403524036240372403824039240402404124042240432404424045240462404724048240492405024051240522405324054240552405624057240582405924060240612406224063240642406524066240672406824069240702407124072240732407424075240762407724078240792408024081240822408324084240852408624087240882408924090240912409224093240942409524096240972409824099241002410124102241032410424105241062410724108241092411024111241122411324114241152411624117241182411924120241212412224123241242412524126241272412824129241302413124132241332413424135241362413724138241392414024141241422414324144241452414624147241482414924150241512415224153241542415524156241572415824159241602416124162241632416424165241662416724168241692417024171241722417324174241752417624177241782417924180241812418224183241842418524186241872418824189241902419124192241932419424195241962419724198241992420024201242022420324204242052420624207242082420924210242112421224213242142421524216242172421824219242202422124222242232422424225242262422724228242292423024231242322423324234242352423624237242382423924240242412424224243242442424524246242472424824249242502425124252242532425424255242562425724258242592426024261242622426324264242652426624267242682426924270242712427224273242742427524276242772427824279242802428124282242832428424285242862428724288242892429024291242922429324294242952429624297242982429924300243012430224303243042430524306243072430824309243102431124312243132431424315243162431724318243192432024321243222432324324243252432624327243282432924330243312433224333243342433524336243372433824339243402434124342243432434424345243462434724348243492435024351243522435324354243552435624357243582435924360243612436224363243642436524366243672436824369243702437124372243732437424375243762437724378243792438024381243822438324384243852438624387243882438924390243912439224393243942439524396243972439824399244002440124402244032440424405244062440724408244092441024411244122441324414244152441624417244182441924420244212442224423244242442524426244272442824429244302443124432244332443424435244362443724438244392444024441244422444324444244452444624447244482444924450244512445224453244542445524456244572445824459244602446124462244632446424465244662446724468244692447024471244722447324474244752447624477244782447924480244812448224483244842448524486244872448824489244902449124492244932449424495244962449724498244992450024501245022450324504245052450624507245082450924510245112451224513245142451524516245172451824519245202452124522245232452424525245262452724528245292453024531245322453324534245352453624537245382453924540245412454224543245442454524546245472454824549245502455124552245532455424555245562455724558245592456024561245622456324564245652456624567245682456924570245712457224573245742457524576245772457824579245802458124582245832458424585245862458724588245892459024591245922459324594245952459624597245982459924600246012460224603246042460524606246072460824609246102461124612246132461424615246162461724618246192462024621246222462324624246252462624627246282462924630246312463224633246342463524636246372463824639246402464124642246432464424645246462464724648246492465024651246522465324654246552465624657246582465924660246612466224663246642466524666246672466824669246702467124672246732467424675246762467724678246792468024681246822468324684246852468624687246882468924690246912469224693246942469524696246972469824699247002470124702247032470424705247062470724708247092471024711247122471324714247152471624717247182471924720247212472224723247242472524726247272472824729247302473124732247332473424735247362473724738247392474024741247422474324744247452474624747247482474924750247512475224753247542475524756247572475824759247602476124762247632476424765247662476724768247692477024771247722477324774247752477624777247782477924780247812478224783247842478524786247872478824789247902479124792247932479424795247962479724798247992480024801248022480324804248052480624807248082480924810248112481224813248142481524816248172481824819248202482124822248232482424825248262482724828248292483024831248322483324834248352483624837248382483924840248412484224843248442484524846248472484824849248502485124852248532485424855248562485724858248592486024861248622486324864248652486624867248682486924870248712487224873248742487524876248772487824879248802488124882248832488424885248862488724888248892489024891248922489324894248952489624897248982489924900249012490224903249042490524906249072490824909249102491124912249132491424915249162491724918249192492024921249222492324924249252492624927249282492924930249312493224933249342493524936249372493824939249402494124942249432494424945249462494724948249492495024951249522495324954249552495624957249582495924960249612496224963249642496524966249672496824969249702497124972249732497424975249762497724978249792498024981249822498324984249852498624987249882498924990249912499224993249942499524996249972499824999250002500125002250032500425005250062500725008250092501025011250122501325014250152501625017250182501925020250212502225023250242502525026250272502825029250302503125032250332503425035250362503725038250392504025041250422504325044250452504625047250482504925050250512505225053250542505525056250572505825059250602506125062250632506425065250662506725068250692507025071250722507325074250752507625077250782507925080250812508225083250842508525086250872508825089250902509125092250932509425095250962509725098250992510025101251022510325104251052510625107251082510925110251112511225113251142511525116251172511825119251202512125122251232512425125251262512725128251292513025131251322513325134251352513625137251382513925140251412514225143251442514525146251472514825149251502515125152251532515425155251562515725158251592516025161251622516325164251652516625167251682516925170251712517225173251742517525176251772517825179251802518125182251832518425185251862518725188251892519025191251922519325194251952519625197251982519925200252012520225203252042520525206252072520825209252102521125212252132521425215252162521725218252192522025221252222522325224252252522625227252282522925230252312523225233252342523525236252372523825239252402524125242252432524425245252462524725248252492525025251252522525325254252552525625257252582525925260252612526225263252642526525266252672526825269252702527125272252732527425275252762527725278252792528025281252822528325284252852528625287252882528925290252912529225293252942529525296252972529825299253002530125302253032530425305253062530725308253092531025311253122531325314253152531625317253182531925320253212532225323253242532525326253272532825329253302533125332253332533425335253362533725338253392534025341253422534325344253452534625347253482534925350253512535225353253542535525356253572535825359253602536125362253632536425365253662536725368253692537025371253722537325374253752537625377253782537925380253812538225383253842538525386253872538825389253902539125392253932539425395253962539725398253992540025401254022540325404254052540625407254082540925410254112541225413254142541525416254172541825419254202542125422254232542425425254262542725428254292543025431254322543325434254352543625437254382543925440254412544225443254442544525446254472544825449254502545125452254532545425455254562545725458254592546025461254622546325464254652546625467254682546925470254712547225473254742547525476254772547825479254802548125482254832548425485254862548725488254892549025491254922549325494254952549625497254982549925500255012550225503255042550525506255072550825509255102551125512255132551425515255162551725518255192552025521255222552325524255252552625527255282552925530255312553225533255342553525536255372553825539255402554125542255432554425545255462554725548255492555025551255522555325554255552555625557255582555925560255612556225563255642556525566255672556825569255702557125572255732557425575255762557725578255792558025581255822558325584255852558625587255882558925590255912559225593255942559525596255972559825599256002560125602256032560425605256062560725608256092561025611256122561325614256152561625617256182561925620256212562225623256242562525626256272562825629256302563125632256332563425635256362563725638256392564025641256422564325644256452564625647256482564925650256512565225653256542565525656256572565825659256602566125662256632566425665256662566725668256692567025671256722567325674256752567625677256782567925680256812568225683256842568525686256872568825689256902569125692256932569425695256962569725698256992570025701257022570325704257052570625707257082570925710257112571225713257142571525716257172571825719257202572125722257232572425725257262572725728257292573025731257322573325734257352573625737257382573925740257412574225743257442574525746257472574825749257502575125752257532575425755257562575725758257592576025761257622576325764257652576625767257682576925770257712577225773257742577525776257772577825779257802578125782257832578425785257862578725788257892579025791257922579325794257952579625797257982579925800258012580225803258042580525806258072580825809258102581125812258132581425815258162581725818258192582025821258222582325824258252582625827258282582925830258312583225833258342583525836258372583825839258402584125842258432584425845258462584725848258492585025851258522585325854258552585625857258582585925860258612586225863258642586525866258672586825869258702587125872258732587425875258762587725878258792588025881258822588325884258852588625887258882588925890258912589225893258942589525896258972589825899259002590125902259032590425905259062590725908259092591025911259122591325914259152591625917259182591925920259212592225923259242592525926259272592825929259302593125932259332593425935259362593725938259392594025941259422594325944259452594625947259482594925950259512595225953259542595525956259572595825959259602596125962259632596425965259662596725968259692597025971259722597325974259752597625977259782597925980259812598225983259842598525986259872598825989259902599125992259932599425995259962599725998259992600026001260022600326004260052600626007260082600926010260112601226013260142601526016260172601826019260202602126022260232602426025260262602726028260292603026031260322603326034260352603626037260382603926040260412604226043260442604526046260472604826049260502605126052260532605426055260562605726058260592606026061260622606326064260652606626067260682606926070260712607226073260742607526076260772607826079260802608126082260832608426085260862608726088260892609026091260922609326094260952609626097260982609926100261012610226103261042610526106261072610826109261102611126112261132611426115261162611726118261192612026121261222612326124261252612626127261282612926130261312613226133261342613526136261372613826139261402614126142261432614426145261462614726148261492615026151261522615326154261552615626157261582615926160261612616226163261642616526166261672616826169261702617126172261732617426175261762617726178261792618026181261822618326184261852618626187261882618926190261912619226193261942619526196261972619826199262002620126202262032620426205262062620726208262092621026211262122621326214262152621626217262182621926220262212622226223262242622526226262272622826229262302623126232262332623426235262362623726238262392624026241262422624326244262452624626247262482624926250262512625226253262542625526256262572625826259262602626126262262632626426265262662626726268262692627026271262722627326274262752627626277262782627926280262812628226283262842628526286262872628826289262902629126292262932629426295262962629726298262992630026301263022630326304263052630626307263082630926310263112631226313263142631526316263172631826319263202632126322263232632426325263262632726328263292633026331263322633326334263352633626337263382633926340263412634226343263442634526346263472634826349263502635126352263532635426355263562635726358263592636026361263622636326364263652636626367263682636926370263712637226373263742637526376263772637826379263802638126382263832638426385263862638726388263892639026391263922639326394263952639626397263982639926400264012640226403264042640526406264072640826409264102641126412264132641426415264162641726418264192642026421264222642326424264252642626427264282642926430264312643226433264342643526436264372643826439264402644126442264432644426445264462644726448264492645026451264522645326454264552645626457264582645926460264612646226463264642646526466264672646826469264702647126472264732647426475264762647726478264792648026481264822648326484264852648626487264882648926490264912649226493264942649526496264972649826499265002650126502265032650426505265062650726508265092651026511265122651326514265152651626517265182651926520265212652226523265242652526526265272652826529265302653126532265332653426535265362653726538265392654026541265422654326544265452654626547265482654926550265512655226553265542655526556265572655826559265602656126562265632656426565265662656726568265692657026571265722657326574265752657626577265782657926580265812658226583265842658526586265872658826589265902659126592265932659426595265962659726598265992660026601266022660326604266052660626607266082660926610266112661226613266142661526616266172661826619266202662126622266232662426625266262662726628266292663026631266322663326634266352663626637266382663926640266412664226643266442664526646266472664826649266502665126652266532665426655266562665726658266592666026661266622666326664266652666626667266682666926670266712667226673266742667526676266772667826679266802668126682266832668426685266862668726688266892669026691266922669326694266952669626697266982669926700267012670226703267042670526706267072670826709267102671126712267132671426715267162671726718267192672026721267222672326724267252672626727267282672926730267312673226733267342673526736267372673826739267402674126742267432674426745267462674726748267492675026751267522675326754267552675626757267582675926760267612676226763267642676526766267672676826769267702677126772267732677426775267762677726778267792678026781267822678326784267852678626787267882678926790267912679226793267942679526796267972679826799268002680126802268032680426805268062680726808268092681026811268122681326814268152681626817268182681926820268212682226823268242682526826268272682826829268302683126832268332683426835268362683726838268392684026841268422684326844268452684626847268482684926850268512685226853268542685526856268572685826859268602686126862268632686426865268662686726868268692687026871268722687326874268752687626877268782687926880268812688226883268842688526886268872688826889268902689126892268932689426895268962689726898268992690026901269022690326904269052690626907269082690926910269112691226913269142691526916269172691826919269202692126922269232692426925269262692726928269292693026931269322693326934269352693626937269382693926940269412694226943269442694526946269472694826949269502695126952269532695426955269562695726958269592696026961269622696326964269652696626967269682696926970269712697226973269742697526976269772697826979269802698126982269832698426985269862698726988269892699026991269922699326994269952699626997269982699927000270012700227003270042700527006270072700827009270102701127012270132701427015270162701727018270192702027021270222702327024270252702627027270282702927030270312703227033270342703527036270372703827039270402704127042270432704427045270462704727048270492705027051270522705327054270552705627057270582705927060270612706227063270642706527066270672706827069270702707127072270732707427075270762707727078270792708027081270822708327084270852708627087270882708927090270912709227093270942709527096270972709827099271002710127102271032710427105271062710727108271092711027111271122711327114271152711627117271182711927120271212712227123271242712527126271272712827129271302713127132271332713427135271362713727138271392714027141271422714327144271452714627147271482714927150271512715227153271542715527156271572715827159271602716127162271632716427165271662716727168271692717027171271722717327174271752717627177271782717927180271812718227183271842718527186271872718827189271902719127192271932719427195271962719727198271992720027201272022720327204272052720627207272082720927210272112721227213272142721527216272172721827219272202722127222272232722427225272262722727228272292723027231272322723327234272352723627237272382723927240272412724227243272442724527246272472724827249272502725127252272532725427255272562725727258272592726027261272622726327264272652726627267272682726927270272712727227273272742727527276272772727827279272802728127282272832728427285272862728727288272892729027291272922729327294272952729627297272982729927300273012730227303273042730527306273072730827309273102731127312273132731427315273162731727318273192732027321273222732327324273252732627327273282732927330273312733227333273342733527336273372733827339273402734127342273432734427345273462734727348273492735027351273522735327354273552735627357273582735927360273612736227363273642736527366273672736827369273702737127372273732737427375273762737727378273792738027381273822738327384273852738627387273882738927390273912739227393273942739527396273972739827399274002740127402274032740427405274062740727408274092741027411274122741327414274152741627417274182741927420274212742227423274242742527426274272742827429274302743127432274332743427435274362743727438274392744027441274422744327444274452744627447274482744927450274512745227453274542745527456274572745827459274602746127462274632746427465274662746727468274692747027471274722747327474274752747627477274782747927480274812748227483274842748527486274872748827489274902749127492274932749427495274962749727498274992750027501275022750327504275052750627507275082750927510275112751227513275142751527516275172751827519275202752127522275232752427525275262752727528275292753027531275322753327534275352753627537275382753927540275412754227543275442754527546275472754827549275502755127552275532755427555275562755727558275592756027561275622756327564275652756627567275682756927570275712757227573275742757527576275772757827579275802758127582275832758427585275862758727588275892759027591275922759327594275952759627597275982759927600276012760227603276042760527606276072760827609276102761127612276132761427615276162761727618276192762027621276222762327624276252762627627276282762927630276312763227633276342763527636276372763827639276402764127642276432764427645276462764727648276492765027651276522765327654276552765627657276582765927660276612766227663276642766527666276672766827669276702767127672276732767427675276762767727678276792768027681276822768327684276852768627687276882768927690276912769227693276942769527696276972769827699277002770127702277032770427705277062770727708277092771027711277122771327714277152771627717277182771927720277212772227723277242772527726277272772827729277302773127732277332773427735277362773727738277392774027741277422774327744277452774627747277482774927750277512775227753277542775527756277572775827759277602776127762277632776427765277662776727768277692777027771277722777327774277752777627777277782777927780277812778227783277842778527786277872778827789277902779127792277932779427795277962779727798277992780027801278022780327804278052780627807278082780927810278112781227813278142781527816278172781827819278202782127822278232782427825278262782727828278292783027831278322783327834278352783627837278382783927840278412784227843278442784527846278472784827849278502785127852278532785427855278562785727858278592786027861278622786327864278652786627867278682786927870278712787227873278742787527876278772787827879278802788127882278832788427885278862788727888278892789027891278922789327894278952789627897278982789927900279012790227903279042790527906279072790827909279102791127912279132791427915279162791727918279192792027921279222792327924279252792627927279282792927930279312793227933279342793527936279372793827939279402794127942279432794427945279462794727948279492795027951279522795327954279552795627957279582795927960279612796227963279642796527966279672796827969279702797127972279732797427975279762797727978279792798027981279822798327984279852798627987279882798927990279912799227993279942799527996279972799827999280002800128002280032800428005280062800728008280092801028011280122801328014280152801628017280182801928020280212802228023280242802528026280272802828029280302803128032280332803428035280362803728038280392804028041280422804328044280452804628047280482804928050280512805228053280542805528056280572805828059280602806128062280632806428065280662806728068280692807028071280722807328074280752807628077280782807928080280812808228083280842808528086280872808828089280902809128092280932809428095280962809728098280992810028101281022810328104281052810628107281082810928110281112811228113281142811528116281172811828119281202812128122281232812428125281262812728128281292813028131281322813328134281352813628137281382813928140281412814228143281442814528146281472814828149281502815128152281532815428155281562815728158281592816028161281622816328164281652816628167281682816928170281712817228173281742817528176281772817828179281802818128182281832818428185281862818728188281892819028191281922819328194281952819628197281982819928200282012820228203282042820528206282072820828209282102821128212282132821428215282162821728218282192822028221282222822328224282252822628227282282822928230282312823228233282342823528236282372823828239282402824128242282432824428245282462824728248282492825028251282522825328254282552825628257282582825928260282612826228263282642826528266282672826828269282702827128272282732827428275282762827728278282792828028281282822828328284282852828628287282882828928290282912829228293282942829528296282972829828299283002830128302283032830428305283062830728308283092831028311283122831328314283152831628317283182831928320283212832228323283242832528326283272832828329283302833128332283332833428335283362833728338283392834028341283422834328344283452834628347283482834928350283512835228353283542835528356283572835828359283602836128362283632836428365283662836728368283692837028371283722837328374283752837628377283782837928380283812838228383283842838528386283872838828389283902839128392283932839428395283962839728398283992840028401284022840328404284052840628407284082840928410284112841228413284142841528416284172841828419284202842128422284232842428425284262842728428284292843028431284322843328434284352843628437284382843928440284412844228443284442844528446284472844828449284502845128452284532845428455284562845728458284592846028461284622846328464284652846628467284682846928470284712847228473284742847528476284772847828479284802848128482284832848428485284862848728488284892849028491284922849328494284952849628497284982849928500285012850228503285042850528506285072850828509285102851128512285132851428515285162851728518285192852028521285222852328524285252852628527285282852928530285312853228533285342853528536285372853828539285402854128542285432854428545285462854728548285492855028551285522855328554285552855628557285582855928560285612856228563285642856528566285672856828569285702857128572285732857428575285762857728578285792858028581285822858328584285852858628587285882858928590285912859228593285942859528596285972859828599286002860128602286032860428605286062860728608286092861028611286122861328614286152861628617286182861928620286212862228623286242862528626286272862828629286302863128632286332863428635286362863728638286392864028641286422864328644286452864628647286482864928650286512865228653286542865528656286572865828659286602866128662286632866428665286662866728668286692867028671286722867328674286752867628677286782867928680286812868228683286842868528686286872868828689286902869128692286932869428695286962869728698286992870028701287022870328704287052870628707287082870928710287112871228713287142871528716287172871828719287202872128722287232872428725287262872728728287292873028731287322873328734287352873628737287382873928740287412874228743287442874528746287472874828749287502875128752287532875428755287562875728758287592876028761287622876328764287652876628767287682876928770287712877228773287742877528776287772877828779287802878128782287832878428785287862878728788287892879028791287922879328794287952879628797287982879928800288012880228803288042880528806288072880828809288102881128812288132881428815288162881728818288192882028821288222882328824288252882628827288282882928830288312883228833288342883528836288372883828839288402884128842288432884428845288462884728848288492885028851288522885328854288552885628857288582885928860288612886228863288642886528866288672886828869288702887128872288732887428875288762887728878288792888028881288822888328884288852888628887288882888928890288912889228893288942889528896288972889828899289002890128902289032890428905289062890728908289092891028911289122891328914289152891628917289182891928920289212892228923289242892528926289272892828929289302893128932289332893428935289362893728938289392894028941289422894328944289452894628947289482894928950289512895228953289542895528956289572895828959289602896128962289632896428965289662896728968289692897028971289722897328974289752897628977289782897928980289812898228983289842898528986289872898828989289902899128992289932899428995289962899728998289992900029001290022900329004290052900629007290082900929010290112901229013290142901529016290172901829019290202902129022290232902429025290262902729028290292903029031290322903329034290352903629037290382903929040290412904229043290442904529046290472904829049290502905129052290532905429055290562905729058290592906029061290622906329064290652906629067290682906929070290712907229073290742907529076290772907829079290802908129082290832908429085290862908729088290892909029091290922909329094290952909629097290982909929100291012910229103291042910529106291072910829109291102911129112291132911429115291162911729118291192912029121291222912329124291252912629127291282912929130291312913229133291342913529136291372913829139291402914129142291432914429145291462914729148291492915029151291522915329154291552915629157291582915929160291612916229163291642916529166291672916829169291702917129172291732917429175291762917729178291792918029181291822918329184291852918629187291882918929190291912919229193291942919529196291972919829199292002920129202292032920429205292062920729208292092921029211292122921329214292152921629217292182921929220292212922229223292242922529226292272922829229292302923129232292332923429235292362923729238292392924029241292422924329244292452924629247292482924929250292512925229253292542925529256292572925829259292602926129262292632926429265292662926729268292692927029271292722927329274292752927629277292782927929280292812928229283292842928529286292872928829289292902929129292292932929429295292962929729298292992930029301293022930329304293052930629307293082930929310293112931229313293142931529316293172931829319293202932129322293232932429325293262932729328293292933029331293322933329334293352933629337293382933929340293412934229343293442934529346293472934829349293502935129352293532935429355293562935729358293592936029361293622936329364293652936629367293682936929370293712937229373293742937529376293772937829379293802938129382293832938429385293862938729388293892939029391293922939329394293952939629397293982939929400294012940229403294042940529406294072940829409294102941129412294132941429415294162941729418294192942029421294222942329424294252942629427294282942929430294312943229433294342943529436294372943829439294402944129442294432944429445294462944729448294492945029451294522945329454294552945629457294582945929460294612946229463294642946529466294672946829469294702947129472294732947429475294762947729478294792948029481294822948329484294852948629487294882948929490294912949229493294942949529496294972949829499295002950129502295032950429505295062950729508295092951029511295122951329514295152951629517295182951929520295212952229523295242952529526295272952829529295302953129532295332953429535295362953729538295392954029541295422954329544295452954629547295482954929550295512955229553295542955529556295572955829559295602956129562295632956429565295662956729568295692957029571295722957329574295752957629577295782957929580295812958229583295842958529586295872958829589295902959129592295932959429595295962959729598295992960029601296022960329604296052960629607296082960929610296112961229613296142961529616296172961829619296202962129622296232962429625296262962729628296292963029631296322963329634296352963629637296382963929640296412964229643296442964529646296472964829649296502965129652296532965429655296562965729658296592966029661296622966329664296652966629667296682966929670296712967229673296742967529676296772967829679296802968129682296832968429685296862968729688296892969029691296922969329694296952969629697296982969929700297012970229703297042970529706297072970829709297102971129712297132971429715297162971729718297192972029721297222972329724297252972629727297282972929730297312973229733297342973529736297372973829739297402974129742297432974429745297462974729748297492975029751297522975329754297552975629757297582975929760297612976229763297642976529766297672976829769297702977129772297732977429775297762977729778297792978029781297822978329784297852978629787297882978929790297912979229793297942979529796297972979829799298002980129802298032980429805298062980729808298092981029811298122981329814298152981629817298182981929820298212982229823298242982529826298272982829829298302983129832298332983429835298362983729838298392984029841298422984329844298452984629847298482984929850298512985229853298542985529856298572985829859298602986129862298632986429865298662986729868298692987029871298722987329874298752987629877298782987929880298812988229883298842988529886298872988829889298902989129892298932989429895298962989729898298992990029901299022990329904299052990629907299082990929910299112991229913299142991529916299172991829919299202992129922299232992429925299262992729928299292993029931299322993329934299352993629937299382993929940299412994229943299442994529946299472994829949299502995129952299532995429955299562995729958299592996029961299622996329964299652996629967299682996929970299712997229973299742997529976299772997829979299802998129982299832998429985299862998729988299892999029991299922999329994299952999629997299982999930000300013000230003300043000530006300073000830009300103001130012300133001430015300163001730018300193002030021300223002330024300253002630027300283002930030300313003230033300343003530036300373003830039300403004130042300433004430045300463004730048300493005030051300523005330054300553005630057300583005930060300613006230063300643006530066300673006830069300703007130072300733007430075300763007730078300793008030081300823008330084300853008630087300883008930090300913009230093300943009530096300973009830099301003010130102301033010430105301063010730108301093011030111301123011330114301153011630117301183011930120301213012230123301243012530126301273012830129301303013130132301333013430135301363013730138301393014030141301423014330144301453014630147301483014930150301513015230153301543015530156301573015830159301603016130162301633016430165301663016730168301693017030171301723017330174301753017630177301783017930180301813018230183301843018530186301873018830189301903019130192301933019430195301963019730198301993020030201302023020330204302053020630207302083020930210302113021230213302143021530216302173021830219302203022130222302233022430225302263022730228302293023030231302323023330234302353023630237302383023930240302413024230243302443024530246302473024830249302503025130252302533025430255302563025730258302593026030261302623026330264302653026630267302683026930270302713027230273302743027530276302773027830279302803028130282302833028430285302863028730288302893029030291302923029330294302953029630297302983029930300303013030230303303043030530306303073030830309303103031130312303133031430315303163031730318303193032030321303223032330324303253032630327303283032930330303313033230333303343033530336303373033830339303403034130342303433034430345303463034730348303493035030351303523035330354303553035630357303583035930360303613036230363303643036530366303673036830369303703037130372303733037430375303763037730378303793038030381303823038330384303853038630387303883038930390303913039230393303943039530396303973039830399304003040130402304033040430405304063040730408304093041030411304123041330414304153041630417304183041930420304213042230423304243042530426304273042830429304303043130432304333043430435304363043730438304393044030441304423044330444304453044630447304483044930450304513045230453304543045530456304573045830459304603046130462304633046430465304663046730468304693047030471304723047330474304753047630477304783047930480304813048230483304843048530486304873048830489304903049130492304933049430495304963049730498304993050030501305023050330504305053050630507305083050930510305113051230513305143051530516305173051830519305203052130522305233052430525305263052730528305293053030531305323053330534305353053630537305383053930540305413054230543305443054530546305473054830549305503055130552305533055430555305563055730558305593056030561305623056330564305653056630567305683056930570305713057230573305743057530576305773057830579305803058130582305833058430585305863058730588305893059030591305923059330594305953059630597305983059930600306013060230603306043060530606306073060830609306103061130612306133061430615306163061730618306193062030621306223062330624306253062630627306283062930630306313063230633306343063530636306373063830639306403064130642306433064430645306463064730648306493065030651306523065330654306553065630657306583065930660306613066230663306643066530666306673066830669306703067130672306733067430675306763067730678306793068030681306823068330684306853068630687306883068930690306913069230693306943069530696306973069830699307003070130702307033070430705307063070730708307093071030711307123071330714307153071630717307183071930720307213072230723307243072530726307273072830729307303073130732307333073430735307363073730738307393074030741307423074330744307453074630747307483074930750307513075230753307543075530756307573075830759307603076130762307633076430765307663076730768307693077030771307723077330774307753077630777307783077930780307813078230783307843078530786307873078830789307903079130792307933079430795307963079730798307993080030801308023080330804308053080630807308083080930810308113081230813308143081530816308173081830819308203082130822308233082430825308263082730828308293083030831308323083330834308353083630837308383083930840308413084230843308443084530846308473084830849308503085130852308533085430855308563085730858308593086030861308623086330864308653086630867308683086930870308713087230873308743087530876308773087830879308803088130882308833088430885308863088730888308893089030891308923089330894308953089630897308983089930900309013090230903309043090530906309073090830909309103091130912309133091430915309163091730918309193092030921309223092330924309253092630927309283092930930309313093230933309343093530936309373093830939309403094130942309433094430945309463094730948309493095030951309523095330954309553095630957309583095930960309613096230963309643096530966309673096830969309703097130972309733097430975309763097730978309793098030981309823098330984309853098630987309883098930990309913099230993309943099530996309973099830999310003100131002310033100431005310063100731008310093101031011310123101331014310153101631017310183101931020310213102231023310243102531026310273102831029310303103131032310333103431035310363103731038310393104031041310423104331044310453104631047310483104931050310513105231053310543105531056310573105831059310603106131062310633106431065310663106731068310693107031071310723107331074310753107631077310783107931080310813108231083310843108531086310873108831089310903109131092310933109431095310963109731098310993110031101311023110331104311053110631107311083110931110311113111231113311143111531116311173111831119311203112131122311233112431125311263112731128311293113031131311323113331134311353113631137311383113931140311413114231143311443114531146311473114831149311503115131152311533115431155311563115731158311593116031161311623116331164311653116631167311683116931170311713117231173311743117531176311773117831179311803118131182311833118431185311863118731188311893119031191311923119331194311953119631197311983119931200312013120231203312043120531206312073120831209312103121131212312133121431215312163121731218312193122031221312223122331224312253122631227312283122931230312313123231233312343123531236312373123831239312403124131242312433124431245312463124731248312493125031251312523125331254312553125631257312583125931260312613126231263312643126531266312673126831269312703127131272312733127431275312763127731278312793128031281312823128331284312853128631287312883128931290312913129231293312943129531296312973129831299313003130131302313033130431305313063130731308313093131031311313123131331314313153131631317313183131931320313213132231323313243132531326313273132831329313303133131332313333133431335313363133731338313393134031341313423134331344313453134631347313483134931350313513135231353313543135531356313573135831359313603136131362313633136431365313663136731368313693137031371313723137331374313753137631377313783137931380313813138231383313843138531386313873138831389313903139131392313933139431395313963139731398313993140031401314023140331404314053140631407314083140931410314113141231413314143141531416314173141831419314203142131422314233142431425314263142731428314293143031431314323143331434314353143631437314383143931440314413144231443314443144531446314473144831449314503145131452314533145431455314563145731458314593146031461314623146331464314653146631467314683146931470314713147231473314743147531476314773147831479314803148131482314833148431485314863148731488314893149031491314923149331494314953149631497314983149931500315013150231503315043150531506315073150831509315103151131512315133151431515315163151731518315193152031521315223152331524315253152631527315283152931530315313153231533315343153531536315373153831539315403154131542315433154431545315463154731548315493155031551315523155331554315553155631557315583155931560315613156231563315643156531566315673156831569315703157131572315733157431575315763157731578315793158031581315823158331584315853158631587315883158931590315913159231593315943159531596315973159831599316003160131602316033160431605316063160731608316093161031611316123161331614316153161631617316183161931620316213162231623316243162531626316273162831629316303163131632316333163431635316363163731638316393164031641316423164331644316453164631647316483164931650316513165231653316543165531656316573165831659316603166131662316633166431665316663166731668316693167031671316723167331674316753167631677316783167931680316813168231683316843168531686316873168831689316903169131692316933169431695316963169731698316993170031701317023170331704317053170631707317083170931710317113171231713317143171531716317173171831719317203172131722317233172431725317263172731728317293173031731317323173331734317353173631737317383173931740317413174231743317443174531746317473174831749317503175131752317533175431755317563175731758317593176031761317623176331764317653176631767317683176931770317713177231773317743177531776317773177831779317803178131782317833178431785317863178731788317893179031791317923179331794317953179631797317983179931800318013180231803318043180531806318073180831809318103181131812318133181431815318163181731818318193182031821318223182331824318253182631827318283182931830318313183231833318343183531836318373183831839318403184131842318433184431845318463184731848318493185031851318523185331854318553185631857318583185931860318613186231863318643186531866318673186831869318703187131872318733187431875318763187731878318793188031881318823188331884318853188631887318883188931890318913189231893318943189531896318973189831899319003190131902319033190431905319063190731908319093191031911319123191331914319153191631917319183191931920319213192231923319243192531926319273192831929319303193131932319333193431935319363193731938319393194031941319423194331944319453194631947319483194931950319513195231953319543195531956319573195831959319603196131962319633196431965319663196731968319693197031971319723197331974319753197631977319783197931980319813198231983319843198531986319873198831989319903199131992319933199431995319963199731998319993200032001320023200332004320053200632007320083200932010320113201232013320143201532016320173201832019320203202132022320233202432025320263202732028320293203032031320323203332034320353203632037320383203932040320413204232043320443204532046320473204832049320503205132052320533205432055320563205732058320593206032061320623206332064320653206632067320683206932070320713207232073320743207532076320773207832079320803208132082320833208432085320863208732088320893209032091320923209332094320953209632097320983209932100321013210232103321043210532106321073210832109321103211132112321133211432115321163211732118321193212032121321223212332124321253212632127321283212932130321313213232133321343213532136321373213832139321403214132142321433214432145321463214732148321493215032151321523215332154321553215632157321583215932160321613216232163321643216532166321673216832169321703217132172321733217432175321763217732178321793218032181321823218332184321853218632187321883218932190321913219232193321943219532196321973219832199322003220132202322033220432205322063220732208322093221032211322123221332214322153221632217322183221932220322213222232223322243222532226322273222832229322303223132232322333223432235322363223732238322393224032241322423224332244322453224632247322483224932250322513225232253322543225532256322573225832259322603226132262322633226432265322663226732268322693227032271322723227332274322753227632277322783227932280322813228232283322843228532286322873228832289322903229132292322933229432295322963229732298322993230032301323023230332304323053230632307323083230932310323113231232313323143231532316323173231832319323203232132322323233232432325323263232732328323293233032331323323233332334323353233632337323383233932340323413234232343323443234532346323473234832349323503235132352323533235432355323563235732358323593236032361323623236332364323653236632367323683236932370323713237232373323743237532376323773237832379323803238132382323833238432385323863238732388323893239032391323923239332394323953239632397323983239932400324013240232403324043240532406324073240832409324103241132412324133241432415324163241732418324193242032421324223242332424324253242632427324283242932430324313243232433324343243532436324373243832439324403244132442324433244432445324463244732448324493245032451324523245332454324553245632457324583245932460324613246232463324643246532466324673246832469324703247132472324733247432475324763247732478324793248032481324823248332484324853248632487324883248932490324913249232493324943249532496324973249832499325003250132502325033250432505325063250732508325093251032511325123251332514325153251632517325183251932520325213252232523325243252532526325273252832529325303253132532325333253432535325363253732538325393254032541325423254332544325453254632547325483254932550325513255232553325543255532556325573255832559325603256132562325633256432565325663256732568325693257032571325723257332574325753257632577325783257932580325813258232583325843258532586325873258832589325903259132592325933259432595325963259732598325993260032601326023260332604326053260632607326083260932610326113261232613326143261532616326173261832619326203262132622326233262432625326263262732628326293263032631326323263332634326353263632637326383263932640326413264232643326443264532646326473264832649326503265132652326533265432655326563265732658326593266032661326623266332664326653266632667326683266932670326713267232673326743267532676326773267832679326803268132682326833268432685326863268732688326893269032691326923269332694326953269632697326983269932700327013270232703327043270532706327073270832709327103271132712327133271432715327163271732718327193272032721327223272332724327253272632727327283272932730327313273232733327343273532736327373273832739327403274132742327433274432745327463274732748327493275032751327523275332754327553275632757327583275932760327613276232763327643276532766327673276832769327703277132772327733277432775327763277732778327793278032781327823278332784327853278632787327883278932790327913279232793327943279532796327973279832799328003280132802328033280432805328063280732808328093281032811328123281332814328153281632817328183281932820328213282232823328243282532826328273282832829328303283132832328333283432835328363283732838328393284032841328423284332844328453284632847328483284932850328513285232853328543285532856328573285832859328603286132862328633286432865328663286732868328693287032871328723287332874328753287632877328783287932880328813288232883328843288532886328873288832889328903289132892328933289432895328963289732898328993290032901329023290332904329053290632907329083290932910329113291232913329143291532916329173291832919329203292132922329233292432925329263292732928329293293032931329323293332934329353293632937329383293932940329413294232943329443294532946329473294832949329503295132952329533295432955329563295732958329593296032961329623296332964329653296632967329683296932970329713297232973329743297532976329773297832979329803298132982329833298432985329863298732988329893299032991329923299332994329953299632997329983299933000330013300233003330043300533006330073300833009330103301133012330133301433015330163301733018330193302033021330223302333024330253302633027330283302933030330313303233033330343303533036330373303833039330403304133042330433304433045330463304733048330493305033051330523305333054330553305633057330583305933060330613306233063330643306533066330673306833069330703307133072330733307433075330763307733078330793308033081330823308333084330853308633087330883308933090330913309233093330943309533096330973309833099331003310133102331033310433105331063310733108331093311033111331123311333114331153311633117331183311933120331213312233123331243312533126331273312833129331303313133132331333313433135331363313733138331393314033141331423314333144331453314633147331483314933150331513315233153331543315533156331573315833159331603316133162331633316433165331663316733168331693317033171331723317333174331753317633177331783317933180331813318233183331843318533186331873318833189331903319133192331933319433195331963319733198331993320033201332023320333204332053320633207332083320933210332113321233213332143321533216332173321833219332203322133222332233322433225332263322733228332293323033231332323323333234332353323633237332383323933240332413324233243332443324533246332473324833249332503325133252332533325433255332563325733258332593326033261332623326333264332653326633267332683326933270332713327233273332743327533276332773327833279332803328133282332833328433285332863328733288332893329033291332923329333294332953329633297332983329933300333013330233303333043330533306333073330833309333103331133312333133331433315333163331733318333193332033321333223332333324333253332633327333283332933330333313333233333333343333533336333373333833339333403334133342333433334433345333463334733348333493335033351333523335333354333553335633357333583335933360333613336233363333643336533366333673336833369333703337133372333733337433375333763337733378333793338033381333823338333384333853338633387333883338933390333913339233393333943339533396333973339833399334003340133402334033340433405334063340733408334093341033411334123341333414334153341633417334183341933420334213342233423334243342533426334273342833429334303343133432334333343433435334363343733438334393344033441334423344333444334453344633447334483344933450334513345233453334543345533456334573345833459334603346133462334633346433465334663346733468334693347033471334723347333474334753347633477334783347933480334813348233483334843348533486334873348833489334903349133492334933349433495334963349733498334993350033501335023350333504335053350633507335083350933510335113351233513335143351533516335173351833519335203352133522335233352433525335263352733528335293353033531335323353333534335353353633537335383353933540335413354233543335443354533546335473354833549335503355133552335533355433555335563355733558335593356033561335623356333564335653356633567335683356933570335713357233573335743357533576335773357833579335803358133582335833358433585335863358733588335893359033591335923359333594335953359633597335983359933600336013360233603336043360533606336073360833609336103361133612336133361433615336163361733618336193362033621336223362333624336253362633627336283362933630336313363233633336343363533636336373363833639336403364133642336433364433645336463364733648336493365033651336523365333654336553365633657336583365933660336613366233663336643366533666336673366833669336703367133672336733367433675336763367733678336793368033681336823368333684336853368633687336883368933690336913369233693336943369533696336973369833699337003370133702337033370433705337063370733708337093371033711337123371333714337153371633717337183371933720337213372233723337243372533726337273372833729337303373133732337333373433735337363373733738337393374033741337423374333744337453374633747337483374933750337513375233753337543375533756337573375833759337603376133762337633376433765337663376733768337693377033771337723377333774337753377633777337783377933780337813378233783337843378533786337873378833789337903379133792337933379433795337963379733798337993380033801338023380333804338053380633807338083380933810338113381233813338143381533816338173381833819338203382133822338233382433825338263382733828338293383033831338323383333834338353383633837338383383933840338413384233843338443384533846338473384833849338503385133852338533385433855338563385733858338593386033861338623386333864338653386633867338683386933870338713387233873338743387533876338773387833879338803388133882338833388433885338863388733888338893389033891338923389333894338953389633897338983389933900339013390233903339043390533906339073390833909339103391133912339133391433915339163391733918339193392033921339223392333924339253392633927339283392933930339313393233933339343393533936339373393833939339403394133942339433394433945339463394733948339493395033951339523395333954339553395633957339583395933960339613396233963339643396533966339673396833969339703397133972339733397433975339763397733978339793398033981339823398333984339853398633987339883398933990339913399233993339943399533996339973399833999340003400134002340033400434005340063400734008340093401034011340123401334014340153401634017340183401934020340213402234023340243402534026340273402834029340303403134032340333403434035340363403734038340393404034041340423404334044340453404634047340483404934050340513405234053340543405534056340573405834059340603406134062340633406434065340663406734068340693407034071340723407334074340753407634077340783407934080340813408234083340843408534086340873408834089340903409134092340933409434095340963409734098340993410034101341023410334104341053410634107341083410934110341113411234113341143411534116341173411834119341203412134122341233412434125341263412734128341293413034131341323413334134341353413634137341383413934140341413414234143341443414534146341473414834149341503415134152341533415434155341563415734158341593416034161341623416334164341653416634167341683416934170341713417234173341743417534176341773417834179341803418134182341833418434185341863418734188341893419034191341923419334194341953419634197341983419934200342013420234203342043420534206342073420834209342103421134212342133421434215342163421734218342193422034221342223422334224342253422634227342283422934230342313423234233342343423534236342373423834239342403424134242342433424434245342463424734248342493425034251342523425334254342553425634257342583425934260342613426234263342643426534266342673426834269342703427134272342733427434275342763427734278342793428034281342823428334284342853428634287342883428934290342913429234293342943429534296342973429834299343003430134302343033430434305343063430734308343093431034311343123431334314343153431634317343183431934320343213432234323343243432534326343273432834329343303433134332343333433434335343363433734338343393434034341343423434334344343453434634347343483434934350343513435234353343543435534356343573435834359343603436134362343633436434365343663436734368343693437034371343723437334374343753437634377343783437934380343813438234383343843438534386343873438834389343903439134392343933439434395343963439734398343993440034401344023440334404344053440634407344083440934410344113441234413344143441534416344173441834419344203442134422344233442434425344263442734428344293443034431344323443334434344353443634437344383443934440344413444234443344443444534446344473444834449344503445134452344533445434455344563445734458344593446034461344623446334464344653446634467344683446934470344713447234473344743447534476344773447834479344803448134482344833448434485344863448734488344893449034491344923449334494344953449634497344983449934500345013450234503345043450534506345073450834509345103451134512345133451434515345163451734518345193452034521345223452334524345253452634527345283452934530345313453234533345343453534536345373453834539345403454134542345433454434545345463454734548345493455034551345523455334554345553455634557345583455934560345613456234563345643456534566345673456834569345703457134572345733457434575345763457734578345793458034581345823458334584345853458634587345883458934590345913459234593345943459534596345973459834599346003460134602346033460434605346063460734608346093461034611346123461334614346153461634617346183461934620346213462234623346243462534626346273462834629346303463134632346333463434635346363463734638346393464034641346423464334644346453464634647346483464934650346513465234653346543465534656346573465834659346603466134662346633466434665346663466734668346693467034671346723467334674346753467634677346783467934680346813468234683346843468534686346873468834689346903469134692346933469434695346963469734698346993470034701347023470334704347053470634707347083470934710347113471234713347143471534716347173471834719347203472134722347233472434725347263472734728347293473034731347323473334734347353473634737347383473934740347413474234743347443474534746347473474834749347503475134752347533475434755347563475734758347593476034761347623476334764347653476634767347683476934770347713477234773347743477534776347773477834779347803478134782347833478434785347863478734788347893479034791347923479334794347953479634797347983479934800348013480234803348043480534806348073480834809348103481134812348133481434815348163481734818348193482034821348223482334824348253482634827348283482934830348313483234833348343483534836348373483834839348403484134842348433484434845348463484734848348493485034851348523485334854348553485634857348583485934860348613486234863348643486534866348673486834869348703487134872348733487434875348763487734878348793488034881348823488334884348853488634887348883488934890348913489234893348943489534896348973489834899349003490134902349033490434905349063490734908349093491034911349123491334914349153491634917349183491934920349213492234923349243492534926349273492834929349303493134932349333493434935349363493734938349393494034941349423494334944349453494634947349483494934950349513495234953349543495534956349573495834959349603496134962349633496434965349663496734968349693497034971349723497334974349753497634977349783497934980349813498234983349843498534986349873498834989349903499134992349933499434995349963499734998349993500035001350023500335004350053500635007350083500935010350113501235013350143501535016350173501835019350203502135022350233502435025350263502735028350293503035031350323503335034350353503635037350383503935040350413504235043350443504535046350473504835049350503505135052350533505435055350563505735058350593506035061350623506335064350653506635067350683506935070350713507235073350743507535076350773507835079350803508135082350833508435085350863508735088350893509035091350923509335094350953509635097350983509935100351013510235103351043510535106351073510835109351103511135112351133511435115351163511735118351193512035121351223512335124351253512635127351283512935130351313513235133351343513535136351373513835139351403514135142351433514435145351463514735148351493515035151351523515335154351553515635157351583515935160351613516235163351643516535166351673516835169351703517135172351733517435175351763517735178351793518035181351823518335184351853518635187351883518935190351913519235193351943519535196351973519835199352003520135202352033520435205352063520735208352093521035211352123521335214352153521635217352183521935220352213522235223352243522535226352273522835229352303523135232352333523435235352363523735238352393524035241352423524335244352453524635247352483524935250352513525235253352543525535256352573525835259352603526135262352633526435265352663526735268352693527035271352723527335274352753527635277352783527935280352813528235283352843528535286352873528835289352903529135292352933529435295352963529735298352993530035301353023530335304353053530635307353083530935310353113531235313353143531535316353173531835319353203532135322353233532435325353263532735328353293533035331353323533335334353353533635337353383533935340353413534235343353443534535346353473534835349353503535135352353533535435355353563535735358353593536035361353623536335364353653536635367353683536935370353713537235373353743537535376353773537835379353803538135382353833538435385353863538735388353893539035391353923539335394353953539635397353983539935400354013540235403354043540535406354073540835409354103541135412354133541435415354163541735418354193542035421354223542335424354253542635427354283542935430354313543235433354343543535436354373543835439354403544135442354433544435445354463544735448354493545035451354523545335454354553545635457354583545935460354613546235463354643546535466354673546835469354703547135472354733547435475354763547735478354793548035481354823548335484354853548635487354883548935490354913549235493354943549535496354973549835499355003550135502355033550435505355063550735508355093551035511355123551335514355153551635517355183551935520355213552235523355243552535526355273552835529355303553135532355333553435535355363553735538355393554035541355423554335544355453554635547355483554935550355513555235553355543555535556355573555835559355603556135562355633556435565355663556735568355693557035571355723557335574355753557635577355783557935580355813558235583355843558535586355873558835589355903559135592355933559435595355963559735598355993560035601356023560335604356053560635607356083560935610356113561235613356143561535616356173561835619356203562135622356233562435625356263562735628356293563035631356323563335634356353563635637356383563935640356413564235643356443564535646356473564835649356503565135652356533565435655356563565735658356593566035661356623566335664356653566635667356683566935670356713567235673356743567535676356773567835679356803568135682356833568435685356863568735688356893569035691356923569335694356953569635697356983569935700357013570235703357043570535706357073570835709357103571135712357133571435715357163571735718357193572035721357223572335724357253572635727357283572935730357313573235733357343573535736357373573835739357403574135742357433574435745357463574735748357493575035751357523575335754357553575635757357583575935760357613576235763357643576535766357673576835769357703577135772357733577435775357763577735778357793578035781357823578335784357853578635787357883578935790357913579235793357943579535796357973579835799358003580135802358033580435805358063580735808358093581035811358123581335814358153581635817358183581935820358213582235823358243582535826358273582835829358303583135832358333583435835358363583735838358393584035841358423584335844358453584635847358483584935850358513585235853358543585535856358573585835859358603586135862358633586435865358663586735868358693587035871358723587335874358753587635877358783587935880358813588235883358843588535886358873588835889358903589135892358933589435895358963589735898358993590035901359023590335904359053590635907359083590935910359113591235913359143591535916359173591835919359203592135922359233592435925359263592735928359293593035931359323593335934359353593635937359383593935940359413594235943359443594535946359473594835949359503595135952359533595435955359563595735958359593596035961359623596335964359653596635967359683596935970359713597235973359743597535976359773597835979359803598135982359833598435985359863598735988359893599035991359923599335994359953599635997359983599936000360013600236003360043600536006360073600836009360103601136012360133601436015360163601736018360193602036021360223602336024360253602636027360283602936030360313603236033360343603536036360373603836039360403604136042360433604436045360463604736048360493605036051360523605336054360553605636057360583605936060360613606236063360643606536066360673606836069360703607136072360733607436075360763607736078360793608036081360823608336084360853608636087360883608936090360913609236093360943609536096360973609836099361003610136102361033610436105361063610736108361093611036111361123611336114361153611636117361183611936120361213612236123361243612536126361273612836129361303613136132361333613436135361363613736138361393614036141361423614336144361453614636147361483614936150361513615236153361543615536156361573615836159361603616136162361633616436165361663616736168361693617036171361723617336174361753617636177361783617936180361813618236183361843618536186361873618836189361903619136192361933619436195361963619736198361993620036201362023620336204362053620636207362083620936210362113621236213362143621536216362173621836219362203622136222362233622436225362263622736228362293623036231362323623336234362353623636237362383623936240362413624236243362443624536246362473624836249362503625136252362533625436255362563625736258362593626036261362623626336264362653626636267362683626936270362713627236273362743627536276362773627836279362803628136282362833628436285362863628736288362893629036291362923629336294362953629636297362983629936300363013630236303363043630536306363073630836309363103631136312363133631436315363163631736318363193632036321363223632336324363253632636327363283632936330363313633236333363343633536336363373633836339363403634136342363433634436345363463634736348363493635036351363523635336354363553635636357363583635936360363613636236363363643636536366363673636836369363703637136372363733637436375363763637736378363793638036381363823638336384363853638636387363883638936390363913639236393363943639536396363973639836399364003640136402364033640436405364063640736408364093641036411364123641336414364153641636417364183641936420364213642236423364243642536426364273642836429364303643136432364333643436435364363643736438364393644036441364423644336444364453644636447364483644936450364513645236453364543645536456364573645836459364603646136462364633646436465364663646736468364693647036471364723647336474364753647636477364783647936480364813648236483364843648536486364873648836489364903649136492364933649436495364963649736498364993650036501365023650336504365053650636507365083650936510365113651236513365143651536516365173651836519365203652136522365233652436525365263652736528365293653036531365323653336534365353653636537365383653936540365413654236543365443654536546365473654836549365503655136552365533655436555365563655736558365593656036561365623656336564365653656636567365683656936570365713657236573365743657536576365773657836579365803658136582365833658436585365863658736588365893659036591365923659336594365953659636597365983659936600366013660236603366043660536606366073660836609366103661136612366133661436615366163661736618366193662036621366223662336624366253662636627366283662936630366313663236633366343663536636366373663836639366403664136642366433664436645366463664736648366493665036651366523665336654366553665636657366583665936660366613666236663366643666536666366673666836669366703667136672366733667436675366763667736678366793668036681366823668336684366853668636687366883668936690366913669236693366943669536696366973669836699367003670136702367033670436705367063670736708367093671036711367123671336714367153671636717367183671936720367213672236723367243672536726367273672836729367303673136732367333673436735367363673736738367393674036741367423674336744367453674636747367483674936750367513675236753367543675536756367573675836759367603676136762367633676436765367663676736768367693677036771367723677336774367753677636777367783677936780367813678236783367843678536786367873678836789367903679136792367933679436795367963679736798367993680036801368023680336804368053680636807368083680936810368113681236813368143681536816368173681836819368203682136822368233682436825368263682736828368293683036831368323683336834368353683636837368383683936840368413684236843368443684536846368473684836849368503685136852368533685436855368563685736858368593686036861368623686336864368653686636867368683686936870368713687236873368743687536876368773687836879368803688136882368833688436885368863688736888368893689036891368923689336894368953689636897368983689936900369013690236903369043690536906369073690836909369103691136912369133691436915369163691736918369193692036921369223692336924369253692636927369283692936930369313693236933369343693536936369373693836939369403694136942369433694436945369463694736948369493695036951369523695336954369553695636957369583695936960369613696236963369643696536966369673696836969369703697136972369733697436975369763697736978369793698036981369823698336984369853698636987369883698936990369913699236993369943699536996369973699836999370003700137002370033700437005370063700737008370093701037011370123701337014370153701637017370183701937020370213702237023370243702537026370273702837029370303703137032370333703437035370363703737038370393704037041370423704337044370453704637047370483704937050370513705237053370543705537056370573705837059370603706137062370633706437065370663706737068370693707037071370723707337074370753707637077370783707937080370813708237083370843708537086370873708837089370903709137092370933709437095370963709737098370993710037101371023710337104371053710637107371083710937110371113711237113371143711537116371173711837119371203712137122371233712437125371263712737128371293713037131371323713337134371353713637137371383713937140371413714237143371443714537146371473714837149371503715137152371533715437155371563715737158371593716037161371623716337164371653716637167371683716937170371713717237173371743717537176371773717837179371803718137182371833718437185371863718737188371893719037191371923719337194371953719637197371983719937200372013720237203372043720537206372073720837209372103721137212372133721437215372163721737218372193722037221372223722337224372253722637227372283722937230372313723237233372343723537236372373723837239372403724137242372433724437245372463724737248372493725037251372523725337254372553725637257372583725937260372613726237263372643726537266372673726837269372703727137272372733727437275372763727737278372793728037281372823728337284372853728637287372883728937290372913729237293372943729537296372973729837299373003730137302373033730437305373063730737308373093731037311373123731337314373153731637317373183731937320373213732237323373243732537326373273732837329373303733137332373333733437335373363733737338373393734037341373423734337344373453734637347373483734937350373513735237353373543735537356373573735837359373603736137362373633736437365373663736737368373693737037371373723737337374373753737637377373783737937380373813738237383373843738537386373873738837389373903739137392373933739437395373963739737398373993740037401374023740337404374053740637407374083740937410374113741237413374143741537416374173741837419374203742137422374233742437425374263742737428374293743037431374323743337434374353743637437374383743937440374413744237443374443744537446374473744837449374503745137452374533745437455374563745737458374593746037461374623746337464374653746637467374683746937470374713747237473374743747537476374773747837479374803748137482374833748437485374863748737488374893749037491374923749337494374953749637497374983749937500375013750237503375043750537506375073750837509375103751137512375133751437515375163751737518375193752037521375223752337524375253752637527375283752937530375313753237533375343753537536375373753837539375403754137542375433754437545375463754737548375493755037551375523755337554375553755637557375583755937560375613756237563375643756537566375673756837569375703757137572375733757437575375763757737578375793758037581375823758337584375853758637587375883758937590375913759237593375943759537596375973759837599376003760137602376033760437605376063760737608376093761037611376123761337614376153761637617376183761937620376213762237623376243762537626376273762837629376303763137632376333763437635376363763737638376393764037641376423764337644376453764637647376483764937650376513765237653376543765537656376573765837659376603766137662376633766437665376663766737668376693767037671376723767337674376753767637677376783767937680376813768237683376843768537686376873768837689376903769137692376933769437695376963769737698376993770037701377023770337704377053770637707377083770937710377113771237713377143771537716377173771837719377203772137722377233772437725377263772737728377293773037731377323773337734377353773637737377383773937740377413774237743377443774537746377473774837749377503775137752377533775437755377563775737758377593776037761377623776337764377653776637767377683776937770377713777237773377743777537776377773777837779377803778137782377833778437785377863778737788377893779037791377923779337794377953779637797377983779937800378013780237803378043780537806378073780837809378103781137812378133781437815378163781737818378193782037821378223782337824378253782637827378283782937830378313783237833378343783537836378373783837839378403784137842378433784437845378463784737848378493785037851378523785337854378553785637857378583785937860378613786237863378643786537866378673786837869378703787137872378733787437875378763787737878378793788037881378823788337884378853788637887378883788937890378913789237893378943789537896378973789837899379003790137902379033790437905379063790737908379093791037911379123791337914379153791637917379183791937920379213792237923379243792537926379273792837929379303793137932379333793437935379363793737938379393794037941379423794337944379453794637947379483794937950379513795237953379543795537956379573795837959379603796137962379633796437965379663796737968379693797037971379723797337974379753797637977379783797937980379813798237983379843798537986379873798837989379903799137992379933799437995379963799737998379993800038001380023800338004380053800638007380083800938010380113801238013380143801538016380173801838019380203802138022380233802438025380263802738028380293803038031380323803338034380353803638037380383803938040380413804238043380443804538046380473804838049380503805138052380533805438055380563805738058380593806038061380623806338064380653806638067380683806938070380713807238073380743807538076380773807838079380803808138082380833808438085380863808738088380893809038091380923809338094380953809638097380983809938100381013810238103381043810538106381073810838109381103811138112381133811438115381163811738118381193812038121381223812338124381253812638127381283812938130381313813238133381343813538136381373813838139381403814138142381433814438145381463814738148381493815038151381523815338154381553815638157381583815938160381613816238163381643816538166381673816838169381703817138172381733817438175381763817738178381793818038181381823818338184381853818638187381883818938190381913819238193381943819538196381973819838199382003820138202382033820438205382063820738208382093821038211382123821338214382153821638217382183821938220382213822238223382243822538226382273822838229382303823138232382333823438235382363823738238382393824038241382423824338244382453824638247382483824938250382513825238253382543825538256382573825838259382603826138262382633826438265382663826738268382693827038271382723827338274382753827638277382783827938280382813828238283382843828538286382873828838289382903829138292382933829438295382963829738298382993830038301383023830338304383053830638307383083830938310383113831238313383143831538316383173831838319383203832138322383233832438325383263832738328383293833038331383323833338334383353833638337383383833938340383413834238343383443834538346383473834838349383503835138352383533835438355383563835738358383593836038361383623836338364383653836638367383683836938370383713837238373383743837538376383773837838379383803838138382383833838438385383863838738388383893839038391383923839338394383953839638397383983839938400384013840238403384043840538406384073840838409384103841138412384133841438415384163841738418384193842038421384223842338424384253842638427384283842938430384313843238433384343843538436384373843838439384403844138442384433844438445384463844738448384493845038451384523845338454384553845638457384583845938460384613846238463384643846538466384673846838469384703847138472384733847438475384763847738478384793848038481384823848338484384853848638487384883848938490384913849238493384943849538496384973849838499385003850138502385033850438505385063850738508385093851038511385123851338514385153851638517385183851938520385213852238523385243852538526385273852838529385303853138532385333853438535385363853738538385393854038541385423854338544385453854638547385483854938550385513855238553385543855538556385573855838559385603856138562385633856438565385663856738568385693857038571385723857338574385753857638577385783857938580385813858238583385843858538586385873858838589385903859138592385933859438595385963859738598385993860038601386023860338604386053860638607386083860938610386113861238613386143861538616386173861838619386203862138622386233862438625386263862738628386293863038631386323863338634386353863638637386383863938640386413864238643386443864538646386473864838649386503865138652386533865438655386563865738658386593866038661386623866338664386653866638667386683866938670386713867238673386743867538676386773867838679386803868138682386833868438685386863868738688386893869038691386923869338694386953869638697386983869938700387013870238703387043870538706387073870838709387103871138712387133871438715387163871738718387193872038721387223872338724387253872638727387283872938730387313873238733387343873538736387373873838739387403874138742387433874438745387463874738748387493875038751387523875338754387553875638757387583875938760387613876238763387643876538766387673876838769387703877138772387733877438775387763877738778387793878038781387823878338784387853878638787387883878938790387913879238793387943879538796387973879838799388003880138802388033880438805388063880738808388093881038811388123881338814388153881638817388183881938820388213882238823388243882538826388273882838829388303883138832388333883438835388363883738838388393884038841388423884338844388453884638847388483884938850388513885238853388543885538856388573885838859388603886138862388633886438865388663886738868388693887038871388723887338874388753887638877388783887938880388813888238883388843888538886388873888838889388903889138892388933889438895388963889738898388993890038901389023890338904389053890638907389083890938910389113891238913389143891538916389173891838919389203892138922389233892438925389263892738928389293893038931389323893338934389353893638937389383893938940389413894238943389443894538946389473894838949389503895138952389533895438955389563895738958389593896038961389623896338964389653896638967389683896938970389713897238973389743897538976389773897838979389803898138982389833898438985389863898738988389893899038991389923899338994389953899638997389983899939000390013900239003390043900539006390073900839009390103901139012390133901439015390163901739018390193902039021390223902339024390253902639027390283902939030390313903239033390343903539036390373903839039390403904139042390433904439045390463904739048390493905039051390523905339054390553905639057390583905939060390613906239063390643906539066390673906839069390703907139072390733907439075390763907739078390793908039081390823908339084390853908639087390883908939090390913909239093390943909539096390973909839099391003910139102391033910439105391063910739108391093911039111391123911339114391153911639117391183911939120391213912239123391243912539126391273912839129391303913139132391333913439135391363913739138391393914039141391423914339144391453914639147391483914939150391513915239153391543915539156391573915839159391603916139162391633916439165391663916739168391693917039171391723917339174391753917639177391783917939180391813918239183391843918539186391873918839189391903919139192391933919439195391963919739198391993920039201392023920339204392053920639207392083920939210392113921239213392143921539216392173921839219392203922139222392233922439225392263922739228392293923039231392323923339234392353923639237392383923939240392413924239243392443924539246392473924839249392503925139252392533925439255392563925739258392593926039261392623926339264392653926639267392683926939270392713927239273392743927539276392773927839279392803928139282392833928439285392863928739288392893929039291392923929339294392953929639297392983929939300393013930239303393043930539306393073930839309393103931139312393133931439315393163931739318393193932039321393223932339324393253932639327393283932939330393313933239333393343933539336393373933839339393403934139342393433934439345393463934739348393493935039351393523935339354393553935639357393583935939360393613936239363393643936539366393673936839369393703937139372393733937439375393763937739378393793938039381393823938339384393853938639387393883938939390393913939239393393943939539396393973939839399394003940139402394033940439405394063940739408394093941039411394123941339414394153941639417394183941939420394213942239423394243942539426394273942839429394303943139432394333943439435394363943739438394393944039441394423944339444394453944639447394483944939450394513945239453394543945539456394573945839459394603946139462394633946439465394663946739468394693947039471394723947339474394753947639477394783947939480394813948239483394843948539486394873948839489394903949139492394933949439495394963949739498394993950039501395023950339504395053950639507395083950939510395113951239513395143951539516395173951839519395203952139522395233952439525395263952739528395293953039531395323953339534395353953639537395383953939540395413954239543395443954539546395473954839549395503955139552395533955439555395563955739558395593956039561395623956339564395653956639567395683956939570395713957239573395743957539576395773957839579395803958139582395833958439585395863958739588395893959039591395923959339594395953959639597395983959939600396013960239603396043960539606396073960839609396103961139612396133961439615396163961739618396193962039621396223962339624396253962639627396283962939630396313963239633396343963539636396373963839639396403964139642396433964439645396463964739648396493965039651396523965339654396553965639657396583965939660396613966239663396643966539666396673966839669396703967139672396733967439675396763967739678396793968039681396823968339684396853968639687396883968939690396913969239693396943969539696396973969839699397003970139702397033970439705397063970739708397093971039711397123971339714397153971639717397183971939720397213972239723397243972539726397273972839729397303973139732397333973439735397363973739738397393974039741397423974339744397453974639747397483974939750397513975239753397543975539756397573975839759397603976139762397633976439765397663976739768397693977039771397723977339774397753977639777397783977939780397813978239783397843978539786397873978839789397903979139792397933979439795397963979739798397993980039801398023980339804398053980639807398083980939810398113981239813398143981539816398173981839819398203982139822398233982439825398263982739828398293983039831398323983339834398353983639837398383983939840398413984239843398443984539846398473984839849398503985139852398533985439855398563985739858398593986039861398623986339864398653986639867398683986939870398713987239873398743987539876398773987839879398803988139882398833988439885398863988739888398893989039891398923989339894398953989639897398983989939900399013990239903399043990539906399073990839909399103991139912399133991439915399163991739918399193992039921399223992339924399253992639927399283992939930399313993239933399343993539936399373993839939399403994139942399433994439945399463994739948399493995039951399523995339954399553995639957399583995939960399613996239963399643996539966399673996839969399703997139972399733997439975399763997739978399793998039981399823998339984399853998639987399883998939990399913999239993399943999539996399973999839999400004000140002400034000440005400064000740008400094001040011400124001340014400154001640017400184001940020400214002240023400244002540026400274002840029400304003140032400334003440035400364003740038400394004040041400424004340044400454004640047400484004940050400514005240053400544005540056400574005840059400604006140062400634006440065400664006740068400694007040071400724007340074400754007640077400784007940080400814008240083400844008540086400874008840089400904009140092400934009440095400964009740098400994010040101401024010340104401054010640107401084010940110401114011240113401144011540116401174011840119401204012140122401234012440125401264012740128401294013040131401324013340134401354013640137401384013940140401414014240143401444014540146401474014840149401504015140152401534015440155401564015740158401594016040161401624016340164401654016640167401684016940170401714017240173401744017540176401774017840179401804018140182401834018440185401864018740188401894019040191401924019340194401954019640197401984019940200402014020240203402044020540206402074020840209402104021140212402134021440215402164021740218402194022040221402224022340224402254022640227402284022940230402314023240233402344023540236402374023840239402404024140242402434024440245402464024740248402494025040251402524025340254402554025640257402584025940260402614026240263402644026540266402674026840269402704027140272402734027440275402764027740278402794028040281402824028340284402854028640287402884028940290402914029240293402944029540296402974029840299403004030140302403034030440305403064030740308403094031040311403124031340314403154031640317403184031940320403214032240323403244032540326403274032840329403304033140332403334033440335403364033740338403394034040341403424034340344403454034640347403484034940350403514035240353403544035540356403574035840359403604036140362403634036440365403664036740368403694037040371403724037340374403754037640377403784037940380403814038240383403844038540386403874038840389403904039140392403934039440395403964039740398403994040040401404024040340404404054040640407404084040940410404114041240413404144041540416404174041840419404204042140422404234042440425404264042740428404294043040431404324043340434404354043640437404384043940440404414044240443404444044540446404474044840449404504045140452404534045440455404564045740458404594046040461404624046340464404654046640467404684046940470404714047240473404744047540476404774047840479404804048140482404834048440485404864048740488404894049040491404924049340494404954049640497404984049940500405014050240503405044050540506405074050840509405104051140512405134051440515405164051740518405194052040521405224052340524405254052640527405284052940530405314053240533405344053540536405374053840539405404054140542405434054440545405464054740548405494055040551405524055340554405554055640557405584055940560405614056240563405644056540566405674056840569405704057140572405734057440575405764057740578405794058040581405824058340584405854058640587405884058940590405914059240593405944059540596405974059840599406004060140602406034060440605406064060740608406094061040611406124061340614406154061640617406184061940620406214062240623406244062540626406274062840629406304063140632406334063440635406364063740638406394064040641406424064340644406454064640647406484064940650406514065240653406544065540656406574065840659406604066140662406634066440665406664066740668406694067040671406724067340674406754067640677406784067940680406814068240683406844068540686406874068840689406904069140692406934069440695406964069740698406994070040701407024070340704407054070640707407084070940710407114071240713407144071540716407174071840719407204072140722407234072440725407264072740728407294073040731407324073340734407354073640737407384073940740407414074240743407444074540746407474074840749407504075140752407534075440755407564075740758407594076040761407624076340764407654076640767407684076940770407714077240773407744077540776407774077840779407804078140782407834078440785407864078740788407894079040791407924079340794407954079640797407984079940800408014080240803408044080540806408074080840809408104081140812408134081440815408164081740818408194082040821408224082340824408254082640827408284082940830408314083240833408344083540836408374083840839408404084140842408434084440845408464084740848408494085040851408524085340854408554085640857408584085940860408614086240863408644086540866408674086840869408704087140872408734087440875408764087740878408794088040881408824088340884408854088640887408884088940890408914089240893408944089540896408974089840899409004090140902409034090440905409064090740908409094091040911409124091340914409154091640917409184091940920409214092240923409244092540926409274092840929409304093140932409334093440935409364093740938409394094040941409424094340944409454094640947409484094940950409514095240953409544095540956409574095840959409604096140962409634096440965409664096740968409694097040971409724097340974409754097640977409784097940980409814098240983409844098540986409874098840989409904099140992409934099440995409964099740998409994100041001410024100341004410054100641007410084100941010410114101241013410144101541016410174101841019410204102141022410234102441025410264102741028410294103041031410324103341034410354103641037410384103941040410414104241043410444104541046410474104841049410504105141052410534105441055410564105741058410594106041061410624106341064410654106641067410684106941070410714107241073410744107541076410774107841079410804108141082410834108441085410864108741088410894109041091410924109341094410954109641097410984109941100411014110241103411044110541106411074110841109411104111141112411134111441115411164111741118411194112041121411224112341124411254112641127411284112941130411314113241133411344113541136411374113841139411404114141142411434114441145411464114741148411494115041151411524115341154411554115641157411584115941160411614116241163411644116541166411674116841169411704117141172411734117441175411764117741178411794118041181411824118341184411854118641187411884118941190411914119241193411944119541196411974119841199412004120141202412034120441205412064120741208412094121041211412124121341214412154121641217412184121941220412214122241223412244122541226412274122841229412304123141232412334123441235412364123741238412394124041241412424124341244412454124641247412484124941250412514125241253412544125541256412574125841259412604126141262412634126441265412664126741268412694127041271412724127341274412754127641277412784127941280412814128241283412844128541286412874128841289412904129141292412934129441295412964129741298412994130041301413024130341304413054130641307413084130941310413114131241313413144131541316413174131841319413204132141322413234132441325413264132741328413294133041331413324133341334413354133641337413384133941340413414134241343413444134541346413474134841349413504135141352413534135441355413564135741358413594136041361413624136341364413654136641367413684136941370413714137241373413744137541376413774137841379413804138141382413834138441385413864138741388413894139041391413924139341394413954139641397413984139941400414014140241403414044140541406414074140841409414104141141412414134141441415414164141741418414194142041421414224142341424414254142641427414284142941430414314143241433414344143541436414374143841439414404144141442414434144441445414464144741448414494145041451414524145341454414554145641457414584145941460414614146241463414644146541466414674146841469414704147141472414734147441475414764147741478414794148041481414824148341484414854148641487414884148941490414914149241493414944149541496414974149841499415004150141502415034150441505415064150741508415094151041511415124151341514415154151641517415184151941520415214152241523415244152541526415274152841529415304153141532415334153441535415364153741538415394154041541415424154341544415454154641547415484154941550415514155241553415544155541556415574155841559415604156141562415634156441565415664156741568415694157041571415724157341574415754157641577415784157941580415814158241583415844158541586415874158841589415904159141592415934159441595415964159741598415994160041601416024160341604416054160641607416084160941610416114161241613416144161541616416174161841619416204162141622416234162441625416264162741628416294163041631416324163341634416354163641637416384163941640416414164241643416444164541646416474164841649416504165141652416534165441655416564165741658416594166041661416624166341664416654166641667416684166941670416714167241673416744167541676416774167841679416804168141682416834168441685416864168741688416894169041691416924169341694416954169641697416984169941700417014170241703417044170541706417074170841709417104171141712417134171441715417164171741718417194172041721417224172341724417254172641727417284172941730417314173241733417344173541736417374173841739417404174141742417434174441745417464174741748417494175041751417524175341754417554175641757417584175941760417614176241763417644176541766417674176841769417704177141772417734177441775417764177741778417794178041781417824178341784417854178641787417884178941790417914179241793417944179541796417974179841799418004180141802418034180441805418064180741808418094181041811418124181341814418154181641817418184181941820418214182241823418244182541826418274182841829418304183141832418334183441835418364183741838418394184041841418424184341844418454184641847418484184941850418514185241853418544185541856418574185841859418604186141862418634186441865418664186741868418694187041871418724187341874418754187641877418784187941880418814188241883418844188541886418874188841889418904189141892418934189441895418964189741898418994190041901419024190341904419054190641907419084190941910419114191241913419144191541916419174191841919419204192141922419234192441925419264192741928419294193041931419324193341934419354193641937419384193941940419414194241943419444194541946419474194841949419504195141952419534195441955419564195741958419594196041961419624196341964419654196641967419684196941970419714197241973419744197541976419774197841979419804198141982419834198441985419864198741988419894199041991419924199341994419954199641997419984199942000420014200242003420044200542006420074200842009420104201142012420134201442015420164201742018420194202042021420224202342024420254202642027420284202942030420314203242033420344203542036420374203842039420404204142042420434204442045420464204742048420494205042051420524205342054420554205642057420584205942060420614206242063420644206542066420674206842069420704207142072420734207442075420764207742078420794208042081420824208342084420854208642087420884208942090420914209242093420944209542096420974209842099421004210142102421034210442105421064210742108421094211042111421124211342114421154211642117421184211942120421214212242123421244212542126421274212842129421304213142132421334213442135421364213742138421394214042141421424214342144421454214642147421484214942150421514215242153421544215542156421574215842159421604216142162421634216442165421664216742168421694217042171421724217342174421754217642177421784217942180421814218242183421844218542186421874218842189421904219142192421934219442195421964219742198421994220042201422024220342204422054220642207422084220942210422114221242213422144221542216422174221842219422204222142222422234222442225422264222742228422294223042231422324223342234422354223642237422384223942240422414224242243422444224542246422474224842249422504225142252422534225442255422564225742258422594226042261422624226342264422654226642267422684226942270422714227242273422744227542276422774227842279422804228142282422834228442285422864228742288422894229042291422924229342294422954229642297422984229942300423014230242303423044230542306423074230842309423104231142312423134231442315423164231742318423194232042321423224232342324423254232642327423284232942330423314233242333423344233542336423374233842339423404234142342423434234442345423464234742348423494235042351423524235342354423554235642357423584235942360423614236242363423644236542366423674236842369423704237142372423734237442375423764237742378423794238042381423824238342384423854238642387423884238942390423914239242393423944239542396423974239842399424004240142402424034240442405424064240742408424094241042411424124241342414424154241642417424184241942420424214242242423424244242542426424274242842429424304243142432424334243442435424364243742438424394244042441424424244342444424454244642447424484244942450424514245242453424544245542456424574245842459424604246142462424634246442465424664246742468424694247042471424724247342474424754247642477424784247942480424814248242483424844248542486424874248842489424904249142492424934249442495424964249742498424994250042501425024250342504425054250642507425084250942510425114251242513425144251542516425174251842519425204252142522425234252442525425264252742528425294253042531425324253342534425354253642537425384253942540425414254242543425444254542546425474254842549425504255142552425534255442555425564255742558425594256042561425624256342564425654256642567425684256942570425714257242573425744257542576425774257842579425804258142582425834258442585425864258742588425894259042591425924259342594425954259642597425984259942600426014260242603426044260542606426074260842609426104261142612426134261442615426164261742618426194262042621426224262342624426254262642627426284262942630426314263242633426344263542636426374263842639426404264142642426434264442645426464264742648426494265042651426524265342654426554265642657426584265942660426614266242663426644266542666426674266842669426704267142672426734267442675426764267742678426794268042681426824268342684426854268642687426884268942690426914269242693426944269542696426974269842699427004270142702427034270442705427064270742708427094271042711427124271342714427154271642717427184271942720427214272242723427244272542726427274272842729427304273142732427334273442735427364273742738427394274042741427424274342744427454274642747427484274942750427514275242753427544275542756427574275842759427604276142762427634276442765427664276742768427694277042771427724277342774427754277642777427784277942780427814278242783427844278542786427874278842789427904279142792427934279442795427964279742798427994280042801428024280342804428054280642807428084280942810428114281242813428144281542816428174281842819428204282142822428234282442825428264282742828428294283042831428324283342834428354283642837428384283942840428414284242843428444284542846428474284842849428504285142852428534285442855428564285742858428594286042861428624286342864428654286642867428684286942870428714287242873428744287542876428774287842879428804288142882428834288442885428864288742888428894289042891428924289342894428954289642897428984289942900429014290242903429044290542906429074290842909429104291142912429134291442915429164291742918429194292042921429224292342924429254292642927429284292942930429314293242933429344293542936429374293842939429404294142942429434294442945429464294742948429494295042951429524295342954429554295642957429584295942960429614296242963429644296542966429674296842969429704297142972429734297442975429764297742978429794298042981429824298342984429854298642987429884298942990429914299242993429944299542996429974299842999430004300143002430034300443005430064300743008430094301043011430124301343014430154301643017430184301943020430214302243023430244302543026430274302843029430304303143032430334303443035430364303743038430394304043041430424304343044430454304643047430484304943050430514305243053430544305543056430574305843059430604306143062430634306443065430664306743068430694307043071430724307343074430754307643077430784307943080430814308243083430844308543086430874308843089430904309143092430934309443095430964309743098430994310043101431024310343104431054310643107431084310943110431114311243113431144311543116431174311843119431204312143122431234312443125431264312743128431294313043131431324313343134431354313643137431384313943140431414314243143431444314543146431474314843149431504315143152431534315443155431564315743158431594316043161431624316343164431654316643167431684316943170431714317243173431744317543176431774317843179431804318143182431834318443185431864318743188431894319043191431924319343194431954319643197431984319943200432014320243203432044320543206432074320843209432104321143212432134321443215432164321743218432194322043221432224322343224432254322643227432284322943230432314323243233432344323543236432374323843239432404324143242432434324443245432464324743248432494325043251432524325343254432554325643257432584325943260432614326243263432644326543266432674326843269432704327143272432734327443275432764327743278432794328043281432824328343284432854328643287432884328943290432914329243293432944329543296432974329843299433004330143302433034330443305433064330743308433094331043311433124331343314433154331643317433184331943320433214332243323433244332543326433274332843329433304333143332433334333443335433364333743338433394334043341433424334343344433454334643347433484334943350433514335243353433544335543356433574335843359433604336143362433634336443365433664336743368433694337043371433724337343374433754337643377433784337943380433814338243383433844338543386433874338843389433904339143392433934339443395433964339743398433994340043401434024340343404434054340643407434084340943410434114341243413434144341543416434174341843419434204342143422434234342443425434264342743428434294343043431434324343343434434354343643437434384343943440434414344243443434444344543446434474344843449434504345143452434534345443455434564345743458434594346043461434624346343464434654346643467434684346943470434714347243473434744347543476434774347843479434804348143482434834348443485434864348743488434894349043491434924349343494434954349643497434984349943500435014350243503435044350543506435074350843509435104351143512435134351443515435164351743518435194352043521435224352343524435254352643527435284352943530435314353243533435344353543536435374353843539435404354143542435434354443545435464354743548435494355043551435524355343554435554355643557435584355943560435614356243563435644356543566435674356843569435704357143572435734357443575435764357743578435794358043581435824358343584435854358643587435884358943590435914359243593435944359543596435974359843599436004360143602436034360443605436064360743608436094361043611436124361343614436154361643617436184361943620436214362243623436244362543626436274362843629436304363143632436334363443635436364363743638436394364043641436424364343644436454364643647436484364943650436514365243653436544365543656436574365843659436604366143662436634366443665436664366743668436694367043671436724367343674436754367643677436784367943680436814368243683436844368543686436874368843689436904369143692436934369443695436964369743698436994370043701437024370343704437054370643707437084370943710437114371243713437144371543716437174371843719437204372143722437234372443725437264372743728437294373043731437324373343734437354373643737437384373943740437414374243743437444374543746437474374843749437504375143752437534375443755437564375743758437594376043761437624376343764437654376643767437684376943770437714377243773437744377543776437774377843779437804378143782437834378443785437864378743788437894379043791437924379343794437954379643797437984379943800438014380243803438044380543806438074380843809438104381143812438134381443815438164381743818438194382043821438224382343824438254382643827438284382943830438314383243833438344383543836438374383843839438404384143842438434384443845438464384743848438494385043851438524385343854438554385643857438584385943860438614386243863438644386543866438674386843869438704387143872438734387443875438764387743878438794388043881438824388343884438854388643887438884388943890438914389243893438944389543896438974389843899439004390143902439034390443905439064390743908439094391043911439124391343914439154391643917439184391943920439214392243923439244392543926439274392843929439304393143932439334393443935439364393743938439394394043941439424394343944439454394643947439484394943950439514395243953439544395543956439574395843959439604396143962439634396443965439664396743968439694397043971439724397343974439754397643977439784397943980439814398243983439844398543986439874398843989439904399143992439934399443995439964399743998439994400044001440024400344004440054400644007440084400944010440114401244013440144401544016440174401844019440204402144022440234402444025440264402744028440294403044031440324403344034440354403644037440384403944040440414404244043440444404544046440474404844049440504405144052440534405444055440564405744058440594406044061440624406344064440654406644067440684406944070440714407244073440744407544076440774407844079440804408144082440834408444085440864408744088440894409044091440924409344094440954409644097440984409944100441014410244103441044410544106441074410844109441104411144112441134411444115441164411744118441194412044121441224412344124441254412644127441284412944130441314413244133441344413544136441374413844139441404414144142441434414444145441464414744148441494415044151441524415344154441554415644157441584415944160441614416244163441644416544166441674416844169441704417144172441734417444175441764417744178441794418044181441824418344184441854418644187441884418944190441914419244193441944419544196441974419844199442004420144202442034420444205442064420744208442094421044211442124421344214442154421644217442184421944220442214422244223442244422544226442274422844229442304423144232442334423444235442364423744238442394424044241442424424344244442454424644247442484424944250442514425244253442544425544256442574425844259442604426144262442634426444265442664426744268442694427044271442724427344274442754427644277442784427944280442814428244283442844428544286442874428844289442904429144292442934429444295442964429744298442994430044301443024430344304443054430644307443084430944310443114431244313443144431544316443174431844319443204432144322443234432444325443264432744328443294433044331443324433344334443354433644337443384433944340443414434244343443444434544346443474434844349443504435144352443534435444355443564435744358443594436044361443624436344364443654436644367443684436944370443714437244373443744437544376443774437844379443804438144382443834438444385443864438744388443894439044391443924439344394443954439644397443984439944400444014440244403444044440544406444074440844409444104441144412444134441444415444164441744418444194442044421444224442344424444254442644427444284442944430444314443244433444344443544436444374443844439444404444144442444434444444445444464444744448444494445044451444524445344454444554445644457444584445944460444614446244463444644446544466444674446844469444704447144472444734447444475444764447744478444794448044481444824448344484444854448644487444884448944490444914449244493444944449544496444974449844499445004450144502445034450444505445064450744508445094451044511445124451344514445154451644517445184451944520445214452244523445244452544526445274452844529445304453144532445334453444535445364453744538445394454044541445424454344544445454454644547445484454944550445514455244553445544455544556445574455844559445604456144562445634456444565445664456744568445694457044571445724457344574445754457644577445784457944580445814458244583445844458544586445874458844589445904459144592445934459444595445964459744598445994460044601446024460344604446054460644607446084460944610446114461244613446144461544616446174461844619446204462144622446234462444625446264462744628446294463044631446324463344634446354463644637446384463944640446414464244643446444464544646446474464844649446504465144652446534465444655446564465744658446594466044661446624466344664446654466644667446684466944670446714467244673446744467544676446774467844679446804468144682446834468444685446864468744688446894469044691446924469344694446954469644697446984469944700447014470244703447044470544706447074470844709447104471144712447134471444715447164471744718447194472044721447224472344724447254472644727447284472944730447314473244733447344473544736447374473844739447404474144742447434474444745447464474744748447494475044751447524475344754447554475644757447584475944760447614476244763447644476544766447674476844769447704477144772447734477444775447764477744778447794478044781447824478344784447854478644787447884478944790447914479244793447944479544796447974479844799448004480144802448034480444805448064480744808448094481044811448124481344814448154481644817448184481944820448214482244823448244482544826448274482844829448304483144832448334483444835448364483744838448394484044841448424484344844448454484644847448484484944850448514485244853448544485544856448574485844859448604486144862448634486444865448664486744868448694487044871448724487344874448754487644877448784487944880448814488244883448844488544886448874488844889448904489144892448934489444895448964489744898448994490044901449024490344904449054490644907449084490944910449114491244913449144491544916449174491844919449204492144922449234492444925449264492744928449294493044931449324493344934449354493644937449384493944940449414494244943449444494544946449474494844949449504495144952449534495444955449564495744958449594496044961449624496344964449654496644967449684496944970449714497244973449744497544976449774497844979449804498144982449834498444985449864498744988449894499044991449924499344994449954499644997449984499945000450014500245003450044500545006450074500845009450104501145012450134501445015450164501745018450194502045021450224502345024450254502645027450284502945030450314503245033450344503545036450374503845039450404504145042450434504445045450464504745048450494505045051450524505345054450554505645057450584505945060450614506245063450644506545066450674506845069450704507145072450734507445075450764507745078450794508045081450824508345084450854508645087450884508945090450914509245093450944509545096450974509845099451004510145102451034510445105451064510745108451094511045111451124511345114451154511645117451184511945120451214512245123451244512545126451274512845129451304513145132451334513445135451364513745138451394514045141451424514345144451454514645147451484514945150451514515245153451544515545156451574515845159451604516145162451634516445165451664516745168451694517045171451724517345174451754517645177451784517945180451814518245183451844518545186451874518845189451904519145192451934519445195451964519745198451994520045201452024520345204452054520645207452084520945210452114521245213452144521545216452174521845219452204522145222452234522445225452264522745228452294523045231452324523345234452354523645237452384523945240452414524245243452444524545246452474524845249452504525145252452534525445255452564525745258452594526045261452624526345264452654526645267452684526945270452714527245273452744527545276452774527845279452804528145282452834528445285452864528745288452894529045291452924529345294452954529645297452984529945300453014530245303453044530545306453074530845309453104531145312453134531445315453164531745318453194532045321453224532345324453254532645327453284532945330453314533245333453344533545336453374533845339453404534145342453434534445345453464534745348453494535045351453524535345354453554535645357453584535945360453614536245363453644536545366453674536845369453704537145372453734537445375453764537745378453794538045381453824538345384453854538645387453884538945390453914539245393453944539545396453974539845399454004540145402454034540445405454064540745408454094541045411454124541345414454154541645417454184541945420454214542245423454244542545426454274542845429454304543145432454334543445435454364543745438454394544045441454424544345444454454544645447454484544945450454514545245453454544545545456454574545845459454604546145462454634546445465454664546745468454694547045471454724547345474454754547645477454784547945480454814548245483454844548545486454874548845489454904549145492454934549445495454964549745498454994550045501455024550345504455054550645507455084550945510455114551245513455144551545516455174551845519455204552145522455234552445525455264552745528455294553045531455324553345534455354553645537455384553945540455414554245543455444554545546455474554845549455504555145552455534555445555455564555745558455594556045561455624556345564455654556645567455684556945570455714557245573455744557545576455774557845579455804558145582455834558445585455864558745588455894559045591455924559345594455954559645597455984559945600456014560245603456044560545606456074560845609456104561145612456134561445615456164561745618456194562045621456224562345624456254562645627456284562945630456314563245633456344563545636456374563845639456404564145642456434564445645456464564745648456494565045651456524565345654456554565645657456584565945660456614566245663456644566545666456674566845669456704567145672456734567445675456764567745678456794568045681456824568345684456854568645687456884568945690456914569245693456944569545696456974569845699457004570145702457034570445705457064570745708457094571045711457124571345714457154571645717457184571945720457214572245723457244572545726457274572845729457304573145732457334573445735457364573745738457394574045741457424574345744457454574645747457484574945750457514575245753457544575545756457574575845759457604576145762457634576445765457664576745768457694577045771457724577345774457754577645777457784577945780457814578245783457844578545786457874578845789457904579145792457934579445795457964579745798457994580045801458024580345804458054580645807458084580945810458114581245813458144581545816458174581845819458204582145822458234582445825458264582745828458294583045831458324583345834458354583645837458384583945840458414584245843458444584545846458474584845849458504585145852458534585445855458564585745858458594586045861458624586345864458654586645867458684586945870458714587245873458744587545876458774587845879458804588145882458834588445885458864588745888458894589045891458924589345894458954589645897458984589945900459014590245903459044590545906459074590845909459104591145912459134591445915459164591745918459194592045921459224592345924459254592645927459284592945930459314593245933459344593545936459374593845939459404594145942459434594445945459464594745948459494595045951459524595345954459554595645957459584595945960459614596245963459644596545966459674596845969459704597145972459734597445975459764597745978459794598045981459824598345984459854598645987459884598945990459914599245993459944599545996459974599845999460004600146002460034600446005460064600746008460094601046011460124601346014460154601646017460184601946020460214602246023460244602546026460274602846029460304603146032460334603446035460364603746038460394604046041460424604346044460454604646047460484604946050460514605246053460544605546056460574605846059460604606146062460634606446065460664606746068460694607046071460724607346074460754607646077460784607946080460814608246083460844608546086460874608846089460904609146092460934609446095460964609746098460994610046101461024610346104461054610646107461084610946110461114611246113461144611546116461174611846119461204612146122461234612446125461264612746128461294613046131461324613346134461354613646137461384613946140461414614246143461444614546146461474614846149461504615146152461534615446155461564615746158461594616046161461624616346164461654616646167461684616946170461714617246173461744617546176461774617846179461804618146182461834618446185461864618746188461894619046191461924619346194461954619646197461984619946200462014620246203462044620546206462074620846209462104621146212462134621446215462164621746218462194622046221462224622346224462254622646227462284622946230462314623246233462344623546236462374623846239462404624146242462434624446245462464624746248462494625046251462524625346254462554625646257462584625946260462614626246263462644626546266462674626846269462704627146272462734627446275462764627746278462794628046281462824628346284462854628646287462884628946290462914629246293462944629546296462974629846299463004630146302463034630446305463064630746308463094631046311463124631346314463154631646317463184631946320463214632246323463244632546326463274632846329463304633146332463334633446335463364633746338463394634046341463424634346344463454634646347463484634946350463514635246353463544635546356463574635846359463604636146362463634636446365463664636746368463694637046371463724637346374463754637646377463784637946380463814638246383463844638546386463874638846389463904639146392463934639446395463964639746398463994640046401464024640346404464054640646407464084640946410464114641246413464144641546416464174641846419464204642146422464234642446425464264642746428464294643046431464324643346434464354643646437464384643946440464414644246443464444644546446464474644846449464504645146452464534645446455464564645746458464594646046461464624646346464464654646646467464684646946470464714647246473464744647546476464774647846479464804648146482464834648446485464864648746488464894649046491464924649346494464954649646497464984649946500465014650246503465044650546506465074650846509465104651146512465134651446515465164651746518465194652046521465224652346524465254652646527465284652946530465314653246533465344653546536465374653846539465404654146542465434654446545465464654746548465494655046551465524655346554465554655646557465584655946560465614656246563465644656546566465674656846569465704657146572465734657446575465764657746578465794658046581465824658346584465854658646587465884658946590465914659246593465944659546596465974659846599466004660146602466034660446605466064660746608466094661046611466124661346614466154661646617466184661946620466214662246623466244662546626466274662846629466304663146632466334663446635466364663746638466394664046641466424664346644466454664646647466484664946650466514665246653466544665546656466574665846659466604666146662466634666446665466664666746668466694667046671466724667346674466754667646677466784667946680466814668246683466844668546686466874668846689466904669146692466934669446695466964669746698466994670046701467024670346704467054670646707467084670946710467114671246713467144671546716467174671846719467204672146722467234672446725467264672746728467294673046731467324673346734467354673646737467384673946740467414674246743467444674546746467474674846749467504675146752467534675446755467564675746758467594676046761467624676346764467654676646767467684676946770467714677246773467744677546776467774677846779467804678146782467834678446785467864678746788467894679046791467924679346794467954679646797467984679946800468014680246803468044680546806468074680846809468104681146812468134681446815468164681746818468194682046821468224682346824468254682646827468284682946830468314683246833468344683546836468374683846839468404684146842468434684446845468464684746848468494685046851468524685346854468554685646857468584685946860468614686246863468644686546866468674686846869468704687146872468734687446875468764687746878468794688046881468824688346884468854688646887468884688946890468914689246893468944689546896468974689846899469004690146902469034690446905469064690746908469094691046911469124691346914469154691646917469184691946920469214692246923469244692546926469274692846929469304693146932469334693446935469364693746938469394694046941469424694346944469454694646947469484694946950469514695246953469544695546956469574695846959469604696146962469634696446965469664696746968469694697046971469724697346974469754697646977469784697946980469814698246983469844698546986469874698846989469904699146992469934699446995469964699746998469994700047001470024700347004470054700647007470084700947010470114701247013470144701547016470174701847019470204702147022470234702447025470264702747028470294703047031470324703347034470354703647037470384703947040470414704247043470444704547046470474704847049470504705147052470534705447055470564705747058470594706047061470624706347064470654706647067470684706947070470714707247073470744707547076470774707847079470804708147082470834708447085470864708747088470894709047091470924709347094470954709647097470984709947100471014710247103471044710547106471074710847109471104711147112471134711447115471164711747118471194712047121471224712347124471254712647127471284712947130471314713247133471344713547136471374713847139471404714147142471434714447145471464714747148471494715047151471524715347154471554715647157471584715947160471614716247163471644716547166471674716847169471704717147172471734717447175471764717747178471794718047181471824718347184471854718647187471884718947190471914719247193471944719547196471974719847199472004720147202472034720447205472064720747208472094721047211472124721347214472154721647217472184721947220472214722247223472244722547226472274722847229472304723147232472334723447235472364723747238472394724047241472424724347244472454724647247472484724947250472514725247253472544725547256472574725847259472604726147262472634726447265472664726747268472694727047271472724727347274472754727647277472784727947280472814728247283472844728547286472874728847289472904729147292472934729447295472964729747298472994730047301473024730347304473054730647307473084730947310473114731247313473144731547316473174731847319473204732147322473234732447325473264732747328473294733047331473324733347334473354733647337473384733947340473414734247343473444734547346473474734847349473504735147352473534735447355473564735747358473594736047361473624736347364473654736647367473684736947370473714737247373473744737547376473774737847379473804738147382473834738447385473864738747388473894739047391473924739347394473954739647397473984739947400474014740247403474044740547406474074740847409474104741147412474134741447415474164741747418474194742047421474224742347424474254742647427474284742947430474314743247433474344743547436474374743847439474404744147442474434744447445474464744747448474494745047451474524745347454474554745647457474584745947460474614746247463474644746547466474674746847469474704747147472474734747447475474764747747478474794748047481474824748347484474854748647487474884748947490474914749247493474944749547496474974749847499475004750147502475034750447505475064750747508475094751047511475124751347514475154751647517475184751947520475214752247523475244752547526475274752847529475304753147532475334753447535475364753747538475394754047541475424754347544475454754647547475484754947550475514755247553475544755547556475574755847559475604756147562475634756447565475664756747568475694757047571475724757347574475754757647577475784757947580475814758247583475844758547586475874758847589475904759147592475934759447595475964759747598475994760047601476024760347604476054760647607476084760947610476114761247613476144761547616476174761847619476204762147622476234762447625476264762747628476294763047631476324763347634476354763647637476384763947640476414764247643476444764547646476474764847649476504765147652476534765447655476564765747658476594766047661476624766347664476654766647667476684766947670476714767247673476744767547676476774767847679476804768147682476834768447685476864768747688476894769047691476924769347694476954769647697476984769947700477014770247703477044770547706477074770847709477104771147712477134771447715477164771747718477194772047721477224772347724477254772647727477284772947730477314773247733477344773547736477374773847739477404774147742477434774447745477464774747748477494775047751477524775347754477554775647757477584775947760477614776247763477644776547766477674776847769477704777147772477734777447775477764777747778477794778047781477824778347784477854778647787477884778947790477914779247793477944779547796477974779847799478004780147802478034780447805478064780747808478094781047811478124781347814478154781647817478184781947820478214782247823478244782547826478274782847829478304783147832478334783447835478364783747838478394784047841478424784347844478454784647847478484784947850478514785247853478544785547856478574785847859478604786147862478634786447865478664786747868478694787047871478724787347874478754787647877478784787947880478814788247883478844788547886478874788847889478904789147892478934789447895478964789747898478994790047901479024790347904479054790647907479084790947910479114791247913479144791547916479174791847919479204792147922479234792447925479264792747928479294793047931479324793347934479354793647937479384793947940479414794247943479444794547946479474794847949479504795147952479534795447955479564795747958479594796047961479624796347964479654796647967479684796947970479714797247973479744797547976479774797847979479804798147982479834798447985479864798747988479894799047991479924799347994479954799647997479984799948000480014800248003480044800548006480074800848009480104801148012480134801448015480164801748018480194802048021480224802348024480254802648027480284802948030480314803248033480344803548036480374803848039480404804148042480434804448045480464804748048480494805048051480524805348054480554805648057480584805948060480614806248063480644806548066480674806848069480704807148072480734807448075480764807748078480794808048081480824808348084480854808648087480884808948090480914809248093480944809548096480974809848099481004810148102481034810448105481064810748108481094811048111481124811348114481154811648117481184811948120481214812248123481244812548126481274812848129481304813148132481334813448135481364813748138481394814048141481424814348144481454814648147481484814948150481514815248153481544815548156481574815848159481604816148162481634816448165481664816748168481694817048171481724817348174481754817648177481784817948180481814818248183481844818548186481874818848189481904819148192481934819448195481964819748198481994820048201482024820348204482054820648207482084820948210482114821248213482144821548216482174821848219482204822148222482234822448225482264822748228482294823048231482324823348234482354823648237482384823948240482414824248243482444824548246482474824848249482504825148252482534825448255482564825748258482594826048261482624826348264482654826648267482684826948270482714827248273482744827548276482774827848279482804828148282482834828448285482864828748288482894829048291482924829348294482954829648297482984829948300483014830248303483044830548306483074830848309483104831148312483134831448315483164831748318483194832048321483224832348324483254832648327483284832948330483314833248333483344833548336483374833848339483404834148342483434834448345483464834748348483494835048351483524835348354483554835648357483584835948360483614836248363483644836548366483674836848369483704837148372483734837448375483764837748378483794838048381483824838348384483854838648387483884838948390483914839248393483944839548396483974839848399484004840148402484034840448405484064840748408484094841048411484124841348414484154841648417484184841948420484214842248423484244842548426484274842848429484304843148432484334843448435484364843748438484394844048441484424844348444484454844648447484484844948450484514845248453484544845548456484574845848459484604846148462484634846448465484664846748468484694847048471484724847348474484754847648477484784847948480484814848248483484844848548486484874848848489484904849148492484934849448495484964849748498484994850048501485024850348504485054850648507485084850948510485114851248513485144851548516485174851848519485204852148522485234852448525485264852748528485294853048531485324853348534485354853648537485384853948540485414854248543485444854548546485474854848549485504855148552485534855448555485564855748558485594856048561485624856348564485654856648567485684856948570485714857248573485744857548576485774857848579485804858148582485834858448585485864858748588485894859048591485924859348594485954859648597485984859948600486014860248603486044860548606486074860848609486104861148612486134861448615486164861748618486194862048621486224862348624486254862648627486284862948630486314863248633486344863548636486374863848639486404864148642486434864448645486464864748648486494865048651486524865348654486554865648657486584865948660486614866248663486644866548666486674866848669486704867148672486734867448675486764867748678486794868048681486824868348684486854868648687486884868948690486914869248693486944869548696486974869848699487004870148702487034870448705487064870748708487094871048711487124871348714487154871648717487184871948720487214872248723487244872548726487274872848729487304873148732487334873448735487364873748738487394874048741487424874348744487454874648747487484874948750487514875248753487544875548756487574875848759487604876148762487634876448765487664876748768487694877048771487724877348774487754877648777487784877948780487814878248783487844878548786487874878848789487904879148792487934879448795487964879748798487994880048801488024880348804488054880648807488084880948810488114881248813488144881548816488174881848819488204882148822488234882448825488264882748828488294883048831488324883348834488354883648837488384883948840488414884248843488444884548846488474884848849488504885148852488534885448855488564885748858488594886048861488624886348864488654886648867488684886948870488714887248873488744887548876488774887848879488804888148882488834888448885488864888748888488894889048891488924889348894488954889648897488984889948900489014890248903489044890548906489074890848909489104891148912489134891448915489164891748918489194892048921489224892348924489254892648927489284892948930489314893248933489344893548936489374893848939489404894148942489434894448945489464894748948489494895048951489524895348954489554895648957489584895948960489614896248963489644896548966489674896848969489704897148972489734897448975489764897748978489794898048981489824898348984489854898648987489884898948990489914899248993489944899548996489974899848999490004900149002490034900449005490064900749008490094901049011490124901349014490154901649017490184901949020490214902249023490244902549026490274902849029490304903149032490334903449035490364903749038490394904049041490424904349044490454904649047490484904949050490514905249053490544905549056490574905849059490604906149062490634906449065490664906749068490694907049071490724907349074490754907649077490784907949080490814908249083490844908549086490874908849089490904909149092490934909449095490964909749098490994910049101491024910349104491054910649107491084910949110491114911249113491144911549116491174911849119491204912149122491234912449125491264912749128491294913049131491324913349134491354913649137491384913949140491414914249143491444914549146491474914849149491504915149152491534915449155491564915749158491594916049161491624916349164491654916649167491684916949170491714917249173491744917549176491774917849179491804918149182491834918449185491864918749188491894919049191491924919349194491954919649197491984919949200492014920249203492044920549206492074920849209492104921149212492134921449215492164921749218492194922049221492224922349224492254922649227492284922949230492314923249233492344923549236492374923849239492404924149242492434924449245492464924749248492494925049251492524925349254492554925649257492584925949260492614926249263492644926549266492674926849269492704927149272492734927449275492764927749278492794928049281492824928349284492854928649287492884928949290492914929249293492944929549296492974929849299493004930149302493034930449305493064930749308493094931049311493124931349314493154931649317493184931949320493214932249323493244932549326493274932849329493304933149332493334933449335493364933749338493394934049341493424934349344493454934649347493484934949350493514935249353493544935549356493574935849359493604936149362493634936449365493664936749368493694937049371493724937349374493754937649377493784937949380493814938249383493844938549386493874938849389493904939149392493934939449395493964939749398493994940049401494024940349404494054940649407494084940949410494114941249413494144941549416494174941849419494204942149422494234942449425494264942749428494294943049431494324943349434494354943649437494384943949440494414944249443494444944549446494474944849449494504945149452494534945449455494564945749458494594946049461494624946349464494654946649467494684946949470494714947249473494744947549476494774947849479494804948149482494834948449485494864948749488494894949049491494924949349494494954949649497494984949949500495014950249503495044950549506495074950849509495104951149512495134951449515495164951749518495194952049521495224952349524495254952649527495284952949530495314953249533495344953549536495374953849539495404954149542495434954449545495464954749548495494955049551495524955349554495554955649557495584955949560495614956249563495644956549566495674956849569495704957149572495734957449575495764957749578495794958049581495824958349584495854958649587495884958949590495914959249593495944959549596495974959849599496004960149602496034960449605496064960749608496094961049611496124961349614496154961649617496184961949620496214962249623496244962549626496274962849629496304963149632496334963449635496364963749638496394964049641496424964349644496454964649647496484964949650496514965249653496544965549656496574965849659496604966149662496634966449665496664966749668496694967049671496724967349674496754967649677496784967949680496814968249683496844968549686496874968849689496904969149692496934969449695496964969749698496994970049701497024970349704497054970649707497084970949710497114971249713497144971549716497174971849719497204972149722497234972449725497264972749728497294973049731497324973349734497354973649737497384973949740497414974249743497444974549746497474974849749497504975149752497534975449755497564975749758497594976049761497624976349764497654976649767497684976949770497714977249773497744977549776497774977849779497804978149782497834978449785497864978749788497894979049791497924979349794497954979649797497984979949800498014980249803498044980549806498074980849809498104981149812498134981449815498164981749818498194982049821498224982349824498254982649827498284982949830498314983249833498344983549836498374983849839498404984149842498434984449845498464984749848498494985049851498524985349854498554985649857498584985949860498614986249863498644986549866498674986849869498704987149872498734987449875498764987749878498794988049881498824988349884498854988649887498884988949890498914989249893498944989549896498974989849899499004990149902499034990449905499064990749908499094991049911499124991349914499154991649917499184991949920499214992249923499244992549926499274992849929499304993149932499334993449935499364993749938499394994049941499424994349944499454994649947499484994949950499514995249953499544995549956499574995849959499604996149962499634996449965499664996749968499694997049971499724997349974499754997649977499784997949980499814998249983499844998549986499874998849989499904999149992499934999449995499964999749998499995000050001500025000350004500055000650007500085000950010500115001250013500145001550016500175001850019500205002150022500235002450025500265002750028500295003050031500325003350034500355003650037500385003950040500415004250043500445004550046500475004850049500505005150052500535005450055500565005750058500595006050061500625006350064500655006650067500685006950070500715007250073500745007550076500775007850079500805008150082500835008450085500865008750088500895009050091500925009350094500955009650097500985009950100501015010250103501045010550106501075010850109501105011150112501135011450115501165011750118501195012050121501225012350124501255012650127501285012950130501315013250133501345013550136501375013850139501405014150142501435014450145501465014750148501495015050151501525015350154501555015650157501585015950160501615016250163501645016550166501675016850169501705017150172501735017450175501765017750178501795018050181501825018350184501855018650187501885018950190501915019250193501945019550196501975019850199502005020150202502035020450205502065020750208502095021050211502125021350214502155021650217502185021950220502215022250223502245022550226502275022850229502305023150232502335023450235502365023750238502395024050241502425024350244502455024650247502485024950250502515025250253502545025550256502575025850259502605026150262502635026450265502665026750268502695027050271502725027350274502755027650277502785027950280502815028250283502845028550286502875028850289502905029150292502935029450295502965029750298502995030050301503025030350304503055030650307503085030950310503115031250313503145031550316503175031850319503205032150322503235032450325503265032750328503295033050331503325033350334503355033650337503385033950340503415034250343503445034550346503475034850349503505035150352503535035450355503565035750358503595036050361503625036350364503655036650367503685036950370503715037250373503745037550376503775037850379503805038150382503835038450385503865038750388503895039050391503925039350394503955039650397503985039950400504015040250403504045040550406504075040850409504105041150412504135041450415504165041750418504195042050421504225042350424504255042650427504285042950430504315043250433504345043550436504375043850439504405044150442504435044450445504465044750448504495045050451504525045350454504555045650457504585045950460504615046250463504645046550466504675046850469504705047150472504735047450475504765047750478504795048050481504825048350484504855048650487504885048950490504915049250493504945049550496504975049850499505005050150502505035050450505505065050750508505095051050511505125051350514505155051650517505185051950520505215052250523505245052550526505275052850529505305053150532505335053450535505365053750538505395054050541505425054350544505455054650547505485054950550505515055250553505545055550556505575055850559505605056150562505635056450565505665056750568505695057050571505725057350574505755057650577505785057950580505815058250583505845058550586505875058850589505905059150592505935059450595505965059750598505995060050601506025060350604506055060650607506085060950610506115061250613506145061550616506175061850619506205062150622506235062450625506265062750628506295063050631506325063350634506355063650637506385063950640506415064250643506445064550646506475064850649506505065150652506535065450655506565065750658506595066050661506625066350664506655066650667506685066950670506715067250673506745067550676506775067850679506805068150682506835068450685506865068750688506895069050691506925069350694506955069650697506985069950700507015070250703507045070550706507075070850709507105071150712507135071450715507165071750718507195072050721507225072350724507255072650727507285072950730507315073250733507345073550736507375073850739507405074150742507435074450745507465074750748507495075050751507525075350754507555075650757507585075950760507615076250763507645076550766507675076850769507705077150772507735077450775507765077750778507795078050781507825078350784507855078650787507885078950790507915079250793507945079550796507975079850799508005080150802508035080450805508065080750808508095081050811508125081350814508155081650817508185081950820508215082250823508245082550826508275082850829508305083150832508335083450835508365083750838508395084050841508425084350844508455084650847508485084950850508515085250853508545085550856508575085850859508605086150862508635086450865508665086750868508695087050871508725087350874508755087650877508785087950880508815088250883508845088550886508875088850889508905089150892508935089450895508965089750898508995090050901509025090350904509055090650907509085090950910509115091250913509145091550916509175091850919509205092150922509235092450925509265092750928509295093050931509325093350934509355093650937509385093950940509415094250943509445094550946509475094850949509505095150952509535095450955509565095750958509595096050961509625096350964509655096650967509685096950970509715097250973509745097550976509775097850979509805098150982509835098450985509865098750988509895099050991509925099350994509955099650997509985099951000510015100251003510045100551006510075100851009510105101151012510135101451015510165101751018510195102051021510225102351024510255102651027510285102951030510315103251033510345103551036510375103851039510405104151042510435104451045510465104751048510495105051051510525105351054510555105651057510585105951060510615106251063510645106551066510675106851069510705107151072510735107451075510765107751078510795108051081510825108351084510855108651087510885108951090510915109251093510945109551096510975109851099511005110151102511035110451105511065110751108511095111051111511125111351114511155111651117511185111951120511215112251123511245112551126511275112851129511305113151132511335113451135511365113751138511395114051141511425114351144511455114651147511485114951150511515115251153511545115551156511575115851159511605116151162511635116451165511665116751168511695117051171511725117351174511755117651177511785117951180511815118251183511845118551186511875118851189511905119151192511935119451195511965119751198511995120051201512025120351204512055120651207512085120951210512115121251213512145121551216512175121851219512205122151222512235122451225512265122751228512295123051231512325123351234512355123651237512385123951240512415124251243512445124551246512475124851249512505125151252512535125451255512565125751258512595126051261512625126351264512655126651267512685126951270512715127251273512745127551276512775127851279512805128151282512835128451285512865128751288512895129051291512925129351294512955129651297512985129951300513015130251303513045130551306513075130851309513105131151312513135131451315513165131751318513195132051321513225132351324513255132651327513285132951330513315133251333513345133551336513375133851339513405134151342513435134451345513465134751348513495135051351513525135351354513555135651357513585135951360513615136251363513645136551366513675136851369513705137151372513735137451375513765137751378513795138051381513825138351384513855138651387513885138951390513915139251393513945139551396513975139851399514005140151402514035140451405514065140751408514095141051411514125141351414514155141651417514185141951420514215142251423514245142551426514275142851429514305143151432514335143451435514365143751438514395144051441514425144351444514455144651447514485144951450514515145251453514545145551456514575145851459514605146151462514635146451465514665146751468514695147051471514725147351474514755147651477514785147951480514815148251483514845148551486514875148851489514905149151492514935149451495514965149751498514995150051501515025150351504515055150651507515085150951510515115151251513515145151551516515175151851519515205152151522515235152451525515265152751528515295153051531515325153351534515355153651537515385153951540515415154251543515445154551546515475154851549515505155151552515535155451555515565155751558515595156051561515625156351564515655156651567515685156951570515715157251573515745157551576515775157851579515805158151582515835158451585515865158751588515895159051591515925159351594515955159651597515985159951600516015160251603516045160551606516075160851609516105161151612516135161451615516165161751618516195162051621516225162351624516255162651627516285162951630516315163251633516345163551636516375163851639516405164151642516435164451645516465164751648516495165051651516525165351654516555165651657516585165951660516615166251663516645166551666516675166851669516705167151672516735167451675516765167751678516795168051681516825168351684516855168651687516885168951690516915169251693516945169551696516975169851699517005170151702517035170451705517065170751708517095171051711517125171351714517155171651717517185171951720517215172251723517245172551726517275172851729517305173151732517335173451735517365173751738517395174051741517425174351744517455174651747517485174951750517515175251753517545175551756517575175851759517605176151762517635176451765517665176751768517695177051771517725177351774517755177651777517785177951780517815178251783517845178551786517875178851789517905179151792517935179451795517965179751798517995180051801518025180351804518055180651807518085180951810518115181251813518145181551816518175181851819518205182151822518235182451825518265182751828518295183051831518325183351834518355183651837518385183951840518415184251843518445184551846518475184851849518505185151852518535185451855518565185751858518595186051861518625186351864518655186651867518685186951870518715187251873518745187551876518775187851879518805188151882518835188451885518865188751888518895189051891518925189351894518955189651897518985189951900519015190251903519045190551906519075190851909519105191151912519135191451915519165191751918519195192051921519225192351924519255192651927519285192951930519315193251933519345193551936519375193851939519405194151942519435194451945519465194751948519495195051951519525195351954519555195651957519585195951960519615196251963519645196551966519675196851969519705197151972519735197451975519765197751978519795198051981519825198351984519855198651987519885198951990519915199251993519945199551996519975199851999520005200152002520035200452005520065200752008520095201052011520125201352014520155201652017520185201952020520215202252023520245202552026520275202852029520305203152032520335203452035520365203752038520395204052041520425204352044520455204652047520485204952050520515205252053520545205552056520575205852059520605206152062520635206452065520665206752068520695207052071520725207352074520755207652077520785207952080520815208252083520845208552086520875208852089520905209152092520935209452095520965209752098520995210052101521025210352104521055210652107521085210952110521115211252113521145211552116521175211852119521205212152122521235212452125521265212752128521295213052131521325213352134521355213652137521385213952140521415214252143521445214552146521475214852149521505215152152521535215452155521565215752158521595216052161521625216352164521655216652167521685216952170521715217252173521745217552176521775217852179521805218152182521835218452185521865218752188521895219052191521925219352194521955219652197521985219952200522015220252203522045220552206522075220852209522105221152212522135221452215522165221752218522195222052221522225222352224522255222652227522285222952230522315223252233522345223552236522375223852239522405224152242522435224452245522465224752248522495225052251522525225352254522555225652257522585225952260522615226252263522645226552266522675226852269522705227152272522735227452275522765227752278522795228052281522825228352284522855228652287522885228952290522915229252293522945229552296522975229852299523005230152302523035230452305523065230752308523095231052311523125231352314523155231652317523185231952320523215232252323523245232552326523275232852329523305233152332523335233452335523365233752338523395234052341523425234352344523455234652347523485234952350523515235252353523545235552356523575235852359523605236152362523635236452365523665236752368523695237052371523725237352374523755237652377523785237952380523815238252383523845238552386523875238852389523905239152392523935239452395523965239752398523995240052401524025240352404524055240652407524085240952410524115241252413524145241552416524175241852419524205242152422524235242452425524265242752428524295243052431524325243352434524355243652437524385243952440524415244252443524445244552446524475244852449524505245152452524535245452455524565245752458524595246052461524625246352464524655246652467524685246952470524715247252473524745247552476524775247852479524805248152482524835248452485524865248752488524895249052491524925249352494524955249652497524985249952500525015250252503525045250552506525075250852509525105251152512525135251452515525165251752518525195252052521525225252352524525255252652527525285252952530525315253252533525345253552536525375253852539525405254152542525435254452545525465254752548525495255052551525525255352554525555255652557525585255952560525615256252563525645256552566525675256852569525705257152572525735257452575525765257752578525795258052581525825258352584525855258652587525885258952590525915259252593525945259552596525975259852599526005260152602526035260452605526065260752608526095261052611526125261352614526155261652617526185261952620526215262252623526245262552626526275262852629526305263152632526335263452635526365263752638526395264052641526425264352644526455264652647526485264952650526515265252653526545265552656526575265852659526605266152662526635266452665526665266752668526695267052671526725267352674526755267652677526785267952680526815268252683526845268552686526875268852689526905269152692526935269452695526965269752698526995270052701527025270352704527055270652707527085270952710527115271252713527145271552716527175271852719527205272152722527235272452725527265272752728527295273052731527325273352734527355273652737527385273952740527415274252743527445274552746527475274852749527505275152752527535275452755527565275752758527595276052761527625276352764527655276652767527685276952770527715277252773527745277552776527775277852779527805278152782527835278452785527865278752788527895279052791527925279352794527955279652797527985279952800528015280252803528045280552806528075280852809528105281152812528135281452815528165281752818528195282052821528225282352824528255282652827528285282952830528315283252833528345283552836528375283852839528405284152842528435284452845528465284752848528495285052851528525285352854528555285652857528585285952860528615286252863528645286552866528675286852869528705287152872528735287452875528765287752878528795288052881528825288352884528855288652887528885288952890528915289252893528945289552896528975289852899529005290152902529035290452905529065290752908529095291052911529125291352914529155291652917529185291952920529215292252923529245292552926529275292852929529305293152932529335293452935529365293752938529395294052941529425294352944529455294652947529485294952950529515295252953529545295552956529575295852959529605296152962529635296452965529665296752968529695297052971529725297352974529755297652977529785297952980529815298252983529845298552986529875298852989529905299152992529935299452995529965299752998529995300053001530025300353004530055300653007530085300953010530115301253013530145301553016530175301853019530205302153022530235302453025530265302753028530295303053031530325303353034530355303653037530385303953040530415304253043530445304553046530475304853049530505305153052530535305453055530565305753058530595306053061530625306353064530655306653067530685306953070530715307253073530745307553076530775307853079530805308153082530835308453085530865308753088530895309053091530925309353094530955309653097530985309953100531015310253103531045310553106531075310853109531105311153112531135311453115531165311753118531195312053121531225312353124531255312653127531285312953130531315313253133531345313553136531375313853139531405314153142531435314453145531465314753148531495315053151531525315353154531555315653157531585315953160531615316253163531645316553166531675316853169531705317153172531735317453175531765317753178531795318053181531825318353184531855318653187531885318953190531915319253193531945319553196531975319853199532005320153202532035320453205532065320753208532095321053211532125321353214532155321653217532185321953220532215322253223532245322553226532275322853229532305323153232532335323453235532365323753238532395324053241532425324353244532455324653247532485324953250532515325253253532545325553256532575325853259532605326153262532635326453265532665326753268532695327053271532725327353274532755327653277532785327953280532815328253283532845328553286532875328853289532905329153292532935329453295532965329753298532995330053301533025330353304533055330653307533085330953310533115331253313533145331553316533175331853319533205332153322533235332453325533265332753328533295333053331533325333353334533355333653337533385333953340533415334253343533445334553346533475334853349533505335153352533535335453355533565335753358533595336053361533625336353364533655336653367533685336953370533715337253373533745337553376533775337853379533805338153382533835338453385533865338753388533895339053391533925339353394533955339653397533985339953400534015340253403534045340553406534075340853409534105341153412534135341453415534165341753418534195342053421534225342353424534255342653427534285342953430534315343253433534345343553436534375343853439534405344153442534435344453445534465344753448534495345053451534525345353454534555345653457534585345953460534615346253463534645346553466534675346853469534705347153472534735347453475534765347753478534795348053481534825348353484534855348653487534885348953490534915349253493534945349553496534975349853499535005350153502535035350453505535065350753508535095351053511535125351353514535155351653517535185351953520535215352253523535245352553526535275352853529535305353153532535335353453535535365353753538535395354053541535425354353544535455354653547535485354953550535515355253553535545355553556535575355853559535605356153562535635356453565535665356753568535695357053571535725357353574535755357653577535785357953580535815358253583535845358553586535875358853589535905359153592535935359453595535965359753598535995360053601536025360353604536055360653607536085360953610536115361253613536145361553616536175361853619536205362153622536235362453625536265362753628536295363053631536325363353634536355363653637536385363953640536415364253643536445364553646536475364853649536505365153652536535365453655536565365753658536595366053661536625366353664536655366653667536685366953670536715367253673536745367553676536775367853679536805368153682536835368453685536865368753688536895369053691536925369353694536955369653697536985369953700537015370253703537045370553706537075370853709537105371153712537135371453715537165371753718537195372053721537225372353724537255372653727537285372953730537315373253733537345373553736537375373853739537405374153742537435374453745537465374753748537495375053751537525375353754537555375653757537585375953760537615376253763537645376553766537675376853769537705377153772537735377453775537765377753778537795378053781537825378353784537855378653787537885378953790537915379253793537945379553796537975379853799538005380153802538035380453805538065380753808538095381053811538125381353814538155381653817538185381953820538215382253823538245382553826538275382853829538305383153832538335383453835538365383753838538395384053841538425384353844538455384653847538485384953850538515385253853538545385553856538575385853859538605386153862538635386453865538665386753868538695387053871538725387353874538755387653877538785387953880538815388253883538845388553886538875388853889538905389153892538935389453895538965389753898538995390053901539025390353904539055390653907539085390953910539115391253913539145391553916539175391853919539205392153922539235392453925539265392753928539295393053931539325393353934539355393653937539385393953940539415394253943539445394553946539475394853949539505395153952539535395453955539565395753958539595396053961539625396353964539655396653967539685396953970539715397253973539745397553976539775397853979539805398153982539835398453985539865398753988539895399053991539925399353994539955399653997539985399954000540015400254003540045400554006540075400854009540105401154012540135401454015540165401754018540195402054021540225402354024540255402654027540285402954030540315403254033540345403554036540375403854039540405404154042540435404454045540465404754048540495405054051540525405354054540555405654057540585405954060540615406254063540645406554066540675406854069540705407154072540735407454075540765407754078540795408054081540825408354084540855408654087540885408954090540915409254093540945409554096540975409854099541005410154102541035410454105541065410754108541095411054111541125411354114541155411654117541185411954120541215412254123541245412554126541275412854129541305413154132541335413454135541365413754138541395414054141541425414354144541455414654147541485414954150541515415254153541545415554156541575415854159541605416154162541635416454165541665416754168541695417054171541725417354174541755417654177541785417954180541815418254183541845418554186541875418854189541905419154192541935419454195541965419754198541995420054201542025420354204542055420654207542085420954210542115421254213542145421554216542175421854219542205422154222542235422454225542265422754228542295423054231542325423354234542355423654237542385423954240542415424254243542445424554246542475424854249542505425154252542535425454255542565425754258542595426054261542625426354264542655426654267542685426954270542715427254273542745427554276542775427854279542805428154282542835428454285542865428754288542895429054291542925429354294542955429654297542985429954300543015430254303543045430554306543075430854309543105431154312543135431454315543165431754318543195432054321543225432354324543255432654327543285432954330543315433254333543345433554336543375433854339543405434154342543435434454345543465434754348543495435054351543525435354354543555435654357543585435954360543615436254363543645436554366543675436854369543705437154372543735437454375543765437754378543795438054381543825438354384543855438654387543885438954390543915439254393543945439554396543975439854399544005440154402544035440454405544065440754408544095441054411544125441354414544155441654417544185441954420544215442254423544245442554426544275442854429544305443154432544335443454435544365443754438544395444054441544425444354444544455444654447544485444954450544515445254453544545445554456544575445854459544605446154462544635446454465544665446754468544695447054471544725447354474544755447654477544785447954480544815448254483544845448554486544875448854489544905449154492544935449454495544965449754498544995450054501545025450354504545055450654507545085450954510545115451254513545145451554516545175451854519545205452154522545235452454525545265452754528545295453054531545325453354534545355453654537545385453954540545415454254543545445454554546545475454854549545505455154552545535455454555545565455754558545595456054561545625456354564545655456654567545685456954570545715457254573545745457554576545775457854579545805458154582545835458454585545865458754588545895459054591545925459354594545955459654597545985459954600546015460254603546045460554606546075460854609546105461154612546135461454615546165461754618546195462054621546225462354624546255462654627546285462954630546315463254633546345463554636546375463854639546405464154642546435464454645546465464754648546495465054651546525465354654546555465654657546585465954660546615466254663546645466554666546675466854669546705467154672546735467454675546765467754678546795468054681546825468354684546855468654687546885468954690546915469254693546945469554696546975469854699547005470154702547035470454705547065470754708547095471054711547125471354714547155471654717547185471954720547215472254723547245472554726547275472854729547305473154732547335473454735547365473754738547395474054741547425474354744547455474654747547485474954750547515475254753547545475554756547575475854759547605476154762547635476454765547665476754768547695477054771547725477354774547755477654777547785477954780547815478254783547845478554786547875478854789547905479154792547935479454795547965479754798547995480054801548025480354804548055480654807548085480954810548115481254813548145481554816548175481854819548205482154822548235482454825548265482754828548295483054831548325483354834548355483654837548385483954840548415484254843548445484554846548475484854849548505485154852548535485454855548565485754858548595486054861548625486354864548655486654867548685486954870548715487254873548745487554876548775487854879548805488154882548835488454885548865488754888548895489054891548925489354894548955489654897548985489954900549015490254903549045490554906549075490854909549105491154912549135491454915549165491754918549195492054921549225492354924549255492654927549285492954930549315493254933549345493554936549375493854939549405494154942549435494454945549465494754948549495495054951549525495354954549555495654957549585495954960549615496254963549645496554966549675496854969549705497154972549735497454975549765497754978549795498054981549825498354984549855498654987549885498954990549915499254993549945499554996549975499854999550005500155002550035500455005550065500755008550095501055011550125501355014550155501655017550185501955020550215502255023550245502555026550275502855029550305503155032550335503455035550365503755038550395504055041550425504355044550455504655047550485504955050550515505255053550545505555056550575505855059550605506155062550635506455065550665506755068550695507055071550725507355074550755507655077550785507955080550815508255083550845508555086550875508855089550905509155092550935509455095550965509755098550995510055101551025510355104551055510655107551085510955110551115511255113551145511555116551175511855119551205512155122551235512455125551265512755128551295513055131551325513355134551355513655137551385513955140551415514255143551445514555146551475514855149551505515155152551535515455155551565515755158551595516055161551625516355164551655516655167551685516955170551715517255173551745517555176551775517855179551805518155182551835518455185551865518755188551895519055191551925519355194551955519655197551985519955200552015520255203552045520555206552075520855209552105521155212552135521455215552165521755218552195522055221552225522355224552255522655227552285522955230552315523255233552345523555236552375523855239552405524155242552435524455245552465524755248552495525055251552525525355254552555525655257552585525955260552615526255263552645526555266552675526855269552705527155272552735527455275552765527755278552795528055281552825528355284552855528655287552885528955290552915529255293552945529555296552975529855299553005530155302553035530455305553065530755308553095531055311553125531355314553155531655317553185531955320553215532255323553245532555326553275532855329553305533155332553335533455335553365533755338553395534055341553425534355344553455534655347553485534955350553515535255353553545535555356553575535855359553605536155362553635536455365553665536755368553695537055371553725537355374553755537655377553785537955380553815538255383553845538555386553875538855389553905539155392553935539455395553965539755398553995540055401554025540355404554055540655407554085540955410554115541255413554145541555416554175541855419554205542155422554235542455425554265542755428554295543055431554325543355434554355543655437554385543955440554415544255443554445544555446554475544855449554505545155452554535545455455554565545755458554595546055461554625546355464554655546655467554685546955470554715547255473554745547555476554775547855479554805548155482554835548455485554865548755488554895549055491554925549355494554955549655497554985549955500555015550255503555045550555506555075550855509555105551155512555135551455515555165551755518555195552055521555225552355524555255552655527555285552955530555315553255533555345553555536555375553855539555405554155542555435554455545555465554755548555495555055551555525555355554555555555655557555585555955560555615556255563555645556555566555675556855569555705557155572555735557455575555765557755578555795558055581555825558355584555855558655587555885558955590555915559255593555945559555596555975559855599556005560155602556035560455605556065560755608556095561055611556125561355614556155561655617556185561955620556215562255623556245562555626556275562855629556305563155632556335563455635556365563755638556395564055641556425564355644556455564655647556485564955650556515565255653556545565555656556575565855659556605566155662556635566455665556665566755668556695567055671556725567355674556755567655677556785567955680556815568255683556845568555686556875568855689556905569155692556935569455695556965569755698556995570055701557025570355704557055570655707557085570955710557115571255713557145571555716557175571855719557205572155722557235572455725557265572755728557295573055731557325573355734557355573655737557385573955740557415574255743557445574555746557475574855749557505575155752557535575455755557565575755758557595576055761557625576355764557655576655767557685576955770557715577255773557745577555776557775577855779557805578155782557835578455785557865578755788557895579055791557925579355794557955579655797557985579955800558015580255803558045580555806558075580855809558105581155812558135581455815558165581755818558195582055821558225582355824558255582655827558285582955830558315583255833558345583555836558375583855839558405584155842558435584455845558465584755848558495585055851558525585355854558555585655857558585585955860558615586255863558645586555866558675586855869558705587155872558735587455875558765587755878558795588055881558825588355884558855588655887558885588955890558915589255893558945589555896558975589855899559005590155902559035590455905559065590755908559095591055911559125591355914559155591655917559185591955920559215592255923559245592555926559275592855929559305593155932559335593455935559365593755938559395594055941559425594355944559455594655947559485594955950559515595255953559545595555956559575595855959559605596155962559635596455965559665596755968559695597055971559725597355974559755597655977559785597955980559815598255983559845598555986559875598855989559905599155992559935599455995559965599755998559995600056001560025600356004560055600656007560085600956010560115601256013560145601556016560175601856019560205602156022560235602456025560265602756028560295603056031560325603356034560355603656037560385603956040560415604256043560445604556046560475604856049560505605156052560535605456055560565605756058560595606056061560625606356064560655606656067560685606956070560715607256073560745607556076560775607856079560805608156082560835608456085560865608756088560895609056091560925609356094560955609656097560985609956100561015610256103561045610556106561075610856109561105611156112561135611456115561165611756118561195612056121561225612356124561255612656127561285612956130561315613256133561345613556136561375613856139561405614156142561435614456145561465614756148561495615056151561525615356154561555615656157561585615956160561615616256163561645616556166561675616856169561705617156172561735617456175561765617756178561795618056181561825618356184561855618656187561885618956190561915619256193561945619556196561975619856199562005620156202562035620456205562065620756208562095621056211562125621356214562155621656217562185621956220562215622256223562245622556226562275622856229562305623156232562335623456235562365623756238562395624056241562425624356244562455624656247562485624956250562515625256253562545625556256562575625856259562605626156262562635626456265562665626756268562695627056271562725627356274562755627656277562785627956280562815628256283562845628556286562875628856289562905629156292562935629456295562965629756298562995630056301563025630356304563055630656307563085630956310563115631256313563145631556316563175631856319563205632156322563235632456325563265632756328563295633056331563325633356334563355633656337563385633956340563415634256343563445634556346563475634856349563505635156352563535635456355563565635756358563595636056361563625636356364563655636656367563685636956370563715637256373563745637556376563775637856379563805638156382563835638456385563865638756388563895639056391563925639356394563955639656397563985639956400564015640256403564045640556406564075640856409564105641156412564135641456415564165641756418564195642056421564225642356424564255642656427564285642956430564315643256433564345643556436564375643856439564405644156442564435644456445564465644756448564495645056451564525645356454564555645656457564585645956460564615646256463564645646556466564675646856469564705647156472564735647456475564765647756478564795648056481564825648356484564855648656487564885648956490564915649256493564945649556496564975649856499565005650156502565035650456505565065650756508565095651056511565125651356514565155651656517565185651956520565215652256523565245652556526565275652856529565305653156532565335653456535565365653756538565395654056541565425654356544565455654656547565485654956550565515655256553565545655556556565575655856559565605656156562565635656456565565665656756568565695657056571565725657356574565755657656577565785657956580565815658256583565845658556586565875658856589565905659156592565935659456595565965659756598565995660056601566025660356604566055660656607566085660956610566115661256613566145661556616566175661856619566205662156622566235662456625566265662756628566295663056631566325663356634566355663656637566385663956640566415664256643566445664556646566475664856649566505665156652566535665456655566565665756658566595666056661566625666356664566655666656667566685666956670566715667256673566745667556676566775667856679566805668156682566835668456685566865668756688566895669056691566925669356694566955669656697566985669956700567015670256703567045670556706567075670856709567105671156712567135671456715567165671756718567195672056721567225672356724567255672656727567285672956730567315673256733567345673556736567375673856739567405674156742567435674456745567465674756748567495675056751567525675356754567555675656757567585675956760567615676256763567645676556766567675676856769567705677156772567735677456775567765677756778567795678056781567825678356784567855678656787567885678956790567915679256793567945679556796567975679856799568005680156802568035680456805568065680756808568095681056811568125681356814568155681656817568185681956820568215682256823568245682556826568275682856829568305683156832568335683456835568365683756838568395684056841568425684356844568455684656847568485684956850568515685256853568545685556856568575685856859568605686156862568635686456865568665686756868568695687056871568725687356874568755687656877568785687956880568815688256883568845688556886568875688856889568905689156892568935689456895568965689756898568995690056901569025690356904569055690656907569085690956910569115691256913569145691556916569175691856919569205692156922569235692456925569265692756928569295693056931569325693356934569355693656937569385693956940569415694256943569445694556946569475694856949569505695156952569535695456955569565695756958569595696056961569625696356964569655696656967569685696956970569715697256973569745697556976569775697856979569805698156982569835698456985569865698756988569895699056991569925699356994569955699656997569985699957000570015700257003570045700557006570075700857009570105701157012570135701457015570165701757018570195702057021570225702357024570255702657027570285702957030570315703257033570345703557036570375703857039570405704157042570435704457045570465704757048570495705057051570525705357054570555705657057570585705957060570615706257063570645706557066570675706857069570705707157072570735707457075570765707757078570795708057081570825708357084570855708657087570885708957090570915709257093570945709557096570975709857099571005710157102571035710457105571065710757108571095711057111571125711357114571155711657117571185711957120571215712257123571245712557126571275712857129571305713157132571335713457135571365713757138571395714057141571425714357144571455714657147571485714957150571515715257153571545715557156571575715857159571605716157162571635716457165571665716757168571695717057171571725717357174571755717657177571785717957180571815718257183571845718557186571875718857189571905719157192571935719457195571965719757198571995720057201572025720357204572055720657207572085720957210572115721257213572145721557216572175721857219572205722157222572235722457225572265722757228572295723057231572325723357234572355723657237572385723957240572415724257243572445724557246572475724857249572505725157252572535725457255572565725757258572595726057261572625726357264572655726657267572685726957270572715727257273572745727557276572775727857279572805728157282572835728457285572865728757288572895729057291572925729357294572955729657297572985729957300573015730257303573045730557306573075730857309573105731157312573135731457315573165731757318573195732057321573225732357324573255732657327573285732957330573315733257333573345733557336573375733857339573405734157342573435734457345573465734757348573495735057351573525735357354573555735657357573585735957360573615736257363573645736557366573675736857369573705737157372573735737457375573765737757378573795738057381573825738357384573855738657387573885738957390573915739257393573945739557396573975739857399574005740157402574035740457405574065740757408574095741057411574125741357414574155741657417574185741957420574215742257423574245742557426574275742857429574305743157432574335743457435574365743757438574395744057441574425744357444574455744657447574485744957450574515745257453574545745557456574575745857459574605746157462574635746457465574665746757468574695747057471574725747357474574755747657477574785747957480574815748257483574845748557486574875748857489574905749157492574935749457495574965749757498574995750057501575025750357504575055750657507575085750957510575115751257513575145751557516575175751857519575205752157522575235752457525575265752757528575295753057531575325753357534575355753657537575385753957540575415754257543575445754557546575475754857549575505755157552575535755457555575565755757558575595756057561575625756357564575655756657567575685756957570575715757257573575745757557576575775757857579575805758157582575835758457585575865758757588575895759057591575925759357594575955759657597575985759957600576015760257603576045760557606576075760857609576105761157612576135761457615576165761757618576195762057621576225762357624576255762657627576285762957630576315763257633576345763557636576375763857639576405764157642576435764457645576465764757648576495765057651576525765357654576555765657657576585765957660576615766257663576645766557666576675766857669576705767157672576735767457675576765767757678576795768057681576825768357684576855768657687576885768957690576915769257693576945769557696576975769857699577005770157702577035770457705577065770757708577095771057711577125771357714577155771657717577185771957720577215772257723577245772557726577275772857729577305773157732577335773457735577365773757738577395774057741577425774357744577455774657747577485774957750577515775257753577545775557756577575775857759577605776157762577635776457765577665776757768577695777057771577725777357774577755777657777577785777957780577815778257783577845778557786577875778857789577905779157792577935779457795577965779757798577995780057801578025780357804578055780657807578085780957810578115781257813578145781557816578175781857819578205782157822578235782457825578265782757828578295783057831578325783357834578355783657837578385783957840578415784257843578445784557846578475784857849578505785157852578535785457855578565785757858578595786057861578625786357864578655786657867578685786957870578715787257873578745787557876578775787857879578805788157882578835788457885578865788757888578895789057891578925789357894578955789657897578985789957900579015790257903579045790557906579075790857909579105791157912579135791457915579165791757918579195792057921579225792357924579255792657927579285792957930579315793257933579345793557936579375793857939579405794157942579435794457945579465794757948579495795057951579525795357954579555795657957579585795957960579615796257963579645796557966579675796857969579705797157972579735797457975579765797757978579795798057981579825798357984579855798657987579885798957990579915799257993579945799557996579975799857999580005800158002580035800458005580065800758008580095801058011580125801358014580155801658017580185801958020580215802258023580245802558026580275802858029580305803158032580335803458035580365803758038580395804058041580425804358044580455804658047580485804958050580515805258053580545805558056580575805858059580605806158062580635806458065580665806758068580695807058071580725807358074580755807658077580785807958080580815808258083580845808558086580875808858089580905809158092580935809458095580965809758098580995810058101581025810358104581055810658107581085810958110581115811258113581145811558116581175811858119581205812158122581235812458125581265812758128581295813058131581325813358134581355813658137581385813958140581415814258143581445814558146581475814858149581505815158152581535815458155581565815758158581595816058161581625816358164581655816658167581685816958170581715817258173581745817558176581775817858179581805818158182581835818458185581865818758188581895819058191581925819358194581955819658197581985819958200582015820258203582045820558206582075820858209582105821158212582135821458215582165821758218582195822058221582225822358224582255822658227582285822958230582315823258233582345823558236582375823858239582405824158242582435824458245582465824758248582495825058251582525825358254582555825658257582585825958260582615826258263582645826558266582675826858269582705827158272582735827458275582765827758278582795828058281582825828358284582855828658287582885828958290582915829258293582945829558296582975829858299583005830158302583035830458305583065830758308583095831058311583125831358314583155831658317583185831958320583215832258323583245832558326583275832858329583305833158332583335833458335583365833758338583395834058341583425834358344583455834658347583485834958350583515835258353583545835558356583575835858359583605836158362583635836458365583665836758368583695837058371583725837358374583755837658377583785837958380583815838258383583845838558386583875838858389583905839158392583935839458395583965839758398583995840058401584025840358404584055840658407584085840958410584115841258413584145841558416584175841858419584205842158422584235842458425584265842758428584295843058431584325843358434584355843658437584385843958440584415844258443584445844558446584475844858449584505845158452584535845458455584565845758458584595846058461584625846358464584655846658467584685846958470584715847258473584745847558476584775847858479584805848158482584835848458485584865848758488584895849058491584925849358494584955849658497584985849958500585015850258503585045850558506585075850858509585105851158512585135851458515585165851758518585195852058521585225852358524585255852658527585285852958530585315853258533585345853558536585375853858539585405854158542585435854458545585465854758548585495855058551585525855358554585555855658557585585855958560585615856258563585645856558566585675856858569585705857158572585735857458575585765857758578585795858058581585825858358584585855858658587585885858958590585915859258593585945859558596585975859858599586005860158602586035860458605586065860758608586095861058611586125861358614586155861658617586185861958620586215862258623586245862558626586275862858629586305863158632586335863458635586365863758638586395864058641586425864358644586455864658647586485864958650586515865258653586545865558656586575865858659586605866158662586635866458665586665866758668586695867058671586725867358674586755867658677586785867958680586815868258683586845868558686586875868858689586905869158692586935869458695586965869758698586995870058701587025870358704587055870658707587085870958710587115871258713587145871558716587175871858719587205872158722587235872458725587265872758728587295873058731587325873358734587355873658737587385873958740587415874258743587445874558746587475874858749587505875158752587535875458755587565875758758587595876058761587625876358764587655876658767587685876958770587715877258773587745877558776587775877858779587805878158782587835878458785587865878758788587895879058791587925879358794587955879658797587985879958800588015880258803588045880558806588075880858809588105881158812588135881458815588165881758818588195882058821588225882358824588255882658827588285882958830588315883258833588345883558836588375883858839588405884158842588435884458845588465884758848588495885058851588525885358854588555885658857588585885958860588615886258863588645886558866588675886858869588705887158872588735887458875588765887758878588795888058881588825888358884588855888658887588885888958890588915889258893588945889558896588975889858899589005890158902589035890458905589065890758908589095891058911589125891358914589155891658917589185891958920589215892258923589245892558926589275892858929589305893158932589335893458935589365893758938589395894058941589425894358944589455894658947589485894958950589515895258953589545895558956589575895858959589605896158962589635896458965589665896758968589695897058971589725897358974589755897658977589785897958980589815898258983589845898558986589875898858989589905899158992589935899458995589965899758998589995900059001590025900359004590055900659007590085900959010590115901259013590145901559016590175901859019590205902159022590235902459025590265902759028590295903059031590325903359034590355903659037590385903959040590415904259043590445904559046590475904859049590505905159052590535905459055590565905759058590595906059061590625906359064590655906659067590685906959070590715907259073590745907559076590775907859079590805908159082590835908459085590865908759088590895909059091590925909359094590955909659097590985909959100591015910259103591045910559106591075910859109591105911159112591135911459115591165911759118591195912059121591225912359124591255912659127591285912959130591315913259133591345913559136591375913859139591405914159142591435914459145591465914759148591495915059151591525915359154591555915659157591585915959160591615916259163591645916559166591675916859169591705917159172591735917459175591765917759178591795918059181591825918359184591855918659187591885918959190591915919259193591945919559196591975919859199592005920159202592035920459205592065920759208592095921059211592125921359214592155921659217592185921959220592215922259223592245922559226592275922859229592305923159232592335923459235592365923759238592395924059241592425924359244592455924659247592485924959250592515925259253592545925559256592575925859259592605926159262592635926459265592665926759268592695927059271592725927359274592755927659277592785927959280592815928259283592845928559286592875928859289592905929159292592935929459295592965929759298592995930059301593025930359304593055930659307593085930959310593115931259313593145931559316593175931859319593205932159322593235932459325593265932759328593295933059331593325933359334593355933659337593385933959340593415934259343593445934559346593475934859349593505935159352593535935459355593565935759358593595936059361593625936359364593655936659367593685936959370593715937259373593745937559376593775937859379593805938159382593835938459385593865938759388593895939059391593925939359394593955939659397593985939959400594015940259403594045940559406594075940859409594105941159412594135941459415594165941759418594195942059421594225942359424594255942659427594285942959430594315943259433594345943559436594375943859439594405944159442594435944459445594465944759448594495945059451594525945359454594555945659457594585945959460594615946259463594645946559466594675946859469594705947159472594735947459475594765947759478594795948059481594825948359484594855948659487594885948959490594915949259493594945949559496594975949859499595005950159502595035950459505595065950759508595095951059511595125951359514595155951659517595185951959520595215952259523595245952559526595275952859529595305953159532595335953459535595365953759538595395954059541595425954359544595455954659547595485954959550595515955259553595545955559556595575955859559595605956159562595635956459565595665956759568595695957059571595725957359574595755957659577595785957959580595815958259583595845958559586595875958859589595905959159592595935959459595595965959759598595995960059601596025960359604596055960659607596085960959610596115961259613596145961559616596175961859619596205962159622596235962459625596265962759628596295963059631596325963359634596355963659637596385963959640596415964259643596445964559646596475964859649596505965159652596535965459655596565965759658596595966059661596625966359664596655966659667596685966959670596715967259673596745967559676596775967859679596805968159682596835968459685596865968759688596895969059691596925969359694596955969659697596985969959700597015970259703597045970559706597075970859709597105971159712597135971459715597165971759718597195972059721597225972359724597255972659727597285972959730597315973259733597345973559736597375973859739597405974159742597435974459745597465974759748597495975059751597525975359754597555975659757597585975959760597615976259763597645976559766597675976859769597705977159772597735977459775597765977759778597795978059781597825978359784597855978659787597885978959790597915979259793597945979559796597975979859799598005980159802598035980459805598065980759808598095981059811598125981359814598155981659817598185981959820598215982259823598245982559826598275982859829598305983159832598335983459835598365983759838598395984059841598425984359844598455984659847598485984959850598515985259853598545985559856598575985859859598605986159862598635986459865598665986759868598695987059871598725987359874598755987659877598785987959880598815988259883598845988559886598875988859889598905989159892598935989459895598965989759898598995990059901599025990359904599055990659907599085990959910599115991259913599145991559916599175991859919599205992159922599235992459925599265992759928599295993059931599325993359934599355993659937599385993959940599415994259943599445994559946599475994859949599505995159952599535995459955599565995759958599595996059961599625996359964599655996659967599685996959970599715997259973599745997559976599775997859979599805998159982599835998459985599865998759988599895999059991599925999359994599955999659997599985999960000600016000260003600046000560006600076000860009600106001160012600136001460015600166001760018600196002060021600226002360024600256002660027600286002960030600316003260033600346003560036600376003860039600406004160042600436004460045600466004760048600496005060051600526005360054600556005660057600586005960060600616006260063600646006560066600676006860069600706007160072600736007460075600766007760078600796008060081600826008360084600856008660087600886008960090600916009260093600946009560096600976009860099601006010160102601036010460105601066010760108601096011060111601126011360114601156011660117601186011960120601216012260123601246012560126601276012860129601306013160132601336013460135601366013760138601396014060141601426014360144601456014660147601486014960150601516015260153601546015560156601576015860159601606016160162601636016460165601666016760168601696017060171601726017360174601756017660177601786017960180601816018260183601846018560186601876018860189601906019160192601936019460195601966019760198601996020060201602026020360204602056020660207602086020960210602116021260213602146021560216602176021860219602206022160222602236022460225602266022760228602296023060231602326023360234602356023660237602386023960240602416024260243602446024560246602476024860249602506025160252602536025460255602566025760258602596026060261602626026360264602656026660267602686026960270602716027260273602746027560276602776027860279602806028160282602836028460285602866028760288602896029060291602926029360294602956029660297602986029960300603016030260303603046030560306603076030860309603106031160312603136031460315603166031760318603196032060321603226032360324603256032660327603286032960330603316033260333603346033560336603376033860339603406034160342603436034460345603466034760348603496035060351603526035360354603556035660357603586035960360603616036260363603646036560366603676036860369603706037160372603736037460375603766037760378603796038060381603826038360384603856038660387603886038960390603916039260393603946039560396603976039860399604006040160402604036040460405604066040760408604096041060411604126041360414604156041660417604186041960420604216042260423604246042560426604276042860429604306043160432604336043460435604366043760438604396044060441604426044360444604456044660447604486044960450604516045260453604546045560456604576045860459604606046160462604636046460465604666046760468604696047060471604726047360474604756047660477604786047960480604816048260483604846048560486604876048860489604906049160492604936049460495604966049760498604996050060501605026050360504605056050660507605086050960510605116051260513605146051560516605176051860519605206052160522605236052460525605266052760528605296053060531605326053360534605356053660537605386053960540605416054260543605446054560546605476054860549605506055160552605536055460555605566055760558605596056060561605626056360564605656056660567605686056960570605716057260573605746057560576605776057860579605806058160582605836058460585605866058760588605896059060591605926059360594605956059660597605986059960600606016060260603606046060560606606076060860609606106061160612606136061460615606166061760618606196062060621606226062360624606256062660627606286062960630606316063260633606346063560636606376063860639606406064160642606436064460645606466064760648606496065060651606526065360654606556065660657606586065960660606616066260663606646066560666606676066860669606706067160672606736067460675606766067760678606796068060681606826068360684606856068660687606886068960690606916069260693606946069560696606976069860699607006070160702607036070460705607066070760708607096071060711607126071360714607156071660717607186071960720607216072260723607246072560726607276072860729607306073160732607336073460735607366073760738607396074060741607426074360744607456074660747607486074960750607516075260753607546075560756607576075860759607606076160762607636076460765607666076760768607696077060771607726077360774607756077660777607786077960780607816078260783607846078560786607876078860789607906079160792607936079460795607966079760798607996080060801608026080360804608056080660807608086080960810608116081260813608146081560816608176081860819608206082160822608236082460825608266082760828608296083060831608326083360834608356083660837608386083960840608416084260843608446084560846608476084860849608506085160852608536085460855608566085760858608596086060861608626086360864608656086660867608686086960870608716087260873608746087560876608776087860879608806088160882608836088460885608866088760888608896089060891608926089360894608956089660897608986089960900609016090260903609046090560906609076090860909609106091160912609136091460915609166091760918609196092060921609226092360924609256092660927609286092960930609316093260933609346093560936609376093860939609406094160942609436094460945609466094760948609496095060951609526095360954609556095660957609586095960960609616096260963609646096560966609676096860969609706097160972609736097460975609766097760978609796098060981609826098360984609856098660987609886098960990609916099260993609946099560996609976099860999610006100161002610036100461005610066100761008610096101061011610126101361014610156101661017610186101961020610216102261023610246102561026610276102861029610306103161032610336103461035610366103761038610396104061041610426104361044610456104661047610486104961050610516105261053610546105561056610576105861059610606106161062610636106461065610666106761068610696107061071610726107361074610756107661077610786107961080610816108261083610846108561086610876108861089610906109161092610936109461095610966109761098610996110061101611026110361104611056110661107611086110961110611116111261113611146111561116611176111861119611206112161122611236112461125611266112761128611296113061131611326113361134611356113661137611386113961140611416114261143611446114561146611476114861149611506115161152611536115461155611566115761158611596116061161611626116361164611656116661167611686116961170611716117261173611746117561176611776117861179611806118161182611836118461185611866118761188611896119061191611926119361194611956119661197611986119961200612016120261203612046120561206612076120861209612106121161212612136121461215612166121761218612196122061221612226122361224612256122661227612286122961230612316123261233612346123561236612376123861239612406124161242612436124461245612466124761248612496125061251612526125361254612556125661257612586125961260612616126261263612646126561266612676126861269612706127161272612736127461275612766127761278612796128061281612826128361284612856128661287612886128961290612916129261293612946129561296612976129861299613006130161302613036130461305613066130761308613096131061311613126131361314613156131661317613186131961320613216132261323613246132561326613276132861329613306133161332613336133461335613366133761338613396134061341613426134361344613456134661347613486134961350613516135261353613546135561356613576135861359613606136161362613636136461365613666136761368613696137061371613726137361374613756137661377613786137961380613816138261383613846138561386613876138861389613906139161392613936139461395613966139761398613996140061401614026140361404614056140661407614086140961410614116141261413614146141561416614176141861419614206142161422614236142461425614266142761428614296143061431614326143361434614356143661437614386143961440614416144261443614446144561446614476144861449614506145161452614536145461455614566145761458614596146061461614626146361464614656146661467614686146961470614716147261473614746147561476614776147861479614806148161482614836148461485614866148761488614896149061491614926149361494614956149661497614986149961500615016150261503615046150561506615076150861509615106151161512615136151461515615166151761518615196152061521615226152361524615256152661527615286152961530615316153261533615346153561536615376153861539615406154161542615436154461545615466154761548615496155061551615526155361554615556155661557615586155961560615616156261563615646156561566615676156861569615706157161572615736157461575615766157761578615796158061581615826158361584615856158661587615886158961590615916159261593615946159561596615976159861599616006160161602616036160461605616066160761608616096161061611616126161361614616156161661617616186161961620616216162261623616246162561626616276162861629616306163161632616336163461635616366163761638616396164061641616426164361644616456164661647616486164961650616516165261653616546165561656616576165861659616606166161662616636166461665616666166761668616696167061671616726167361674616756167661677616786167961680616816168261683616846168561686616876168861689616906169161692616936169461695616966169761698616996170061701617026170361704617056170661707617086170961710617116171261713617146171561716617176171861719617206172161722617236172461725617266172761728617296173061731617326173361734617356173661737617386173961740617416174261743617446174561746617476174861749617506175161752617536175461755617566175761758617596176061761617626176361764617656176661767617686176961770617716177261773617746177561776617776177861779617806178161782617836178461785617866178761788617896179061791617926179361794617956179661797617986179961800618016180261803618046180561806618076180861809618106181161812618136181461815618166181761818618196182061821618226182361824618256182661827618286182961830618316183261833618346183561836618376183861839618406184161842618436184461845618466184761848618496185061851618526185361854618556185661857618586185961860618616186261863618646186561866618676186861869618706187161872618736187461875618766187761878618796188061881618826188361884618856188661887618886188961890618916189261893618946189561896618976189861899619006190161902619036190461905619066190761908619096191061911619126191361914619156191661917619186191961920619216192261923619246192561926619276192861929619306193161932619336193461935619366193761938619396194061941619426194361944619456194661947619486194961950619516195261953619546195561956619576195861959619606196161962619636196461965619666196761968619696197061971619726197361974619756197661977619786197961980619816198261983619846198561986619876198861989619906199161992619936199461995619966199761998619996200062001620026200362004620056200662007620086200962010620116201262013620146201562016620176201862019620206202162022620236202462025620266202762028620296203062031620326203362034620356203662037620386203962040620416204262043620446204562046620476204862049620506205162052620536205462055620566205762058620596206062061620626206362064620656206662067620686206962070620716207262073620746207562076620776207862079620806208162082620836208462085620866208762088620896209062091620926209362094620956209662097620986209962100621016210262103621046210562106621076210862109621106211162112621136211462115621166211762118621196212062121621226212362124621256212662127621286212962130621316213262133621346213562136621376213862139621406214162142621436214462145621466214762148621496215062151621526215362154621556215662157621586215962160621616216262163621646216562166621676216862169621706217162172621736217462175621766217762178621796218062181621826218362184621856218662187621886218962190621916219262193621946219562196621976219862199622006220162202622036220462205622066220762208622096221062211622126221362214622156221662217622186221962220622216222262223622246222562226622276222862229622306223162232622336223462235622366223762238622396224062241622426224362244622456224662247622486224962250622516225262253622546225562256622576225862259622606226162262622636226462265622666226762268622696227062271622726227362274622756227662277622786227962280622816228262283622846228562286622876228862289622906229162292622936229462295622966229762298622996230062301623026230362304623056230662307623086230962310623116231262313623146231562316623176231862319623206232162322623236232462325623266232762328623296233062331623326233362334623356233662337623386233962340623416234262343623446234562346623476234862349623506235162352623536235462355623566235762358623596236062361623626236362364623656236662367623686236962370623716237262373623746237562376623776237862379623806238162382623836238462385623866238762388623896239062391623926239362394623956239662397623986239962400624016240262403624046240562406624076240862409624106241162412624136241462415624166241762418624196242062421624226242362424624256242662427624286242962430624316243262433624346243562436624376243862439624406244162442624436244462445624466244762448624496245062451624526245362454624556245662457624586245962460624616246262463624646246562466624676246862469624706247162472624736247462475624766247762478624796248062481624826248362484624856248662487624886248962490624916249262493624946249562496624976249862499625006250162502625036250462505625066250762508625096251062511625126251362514625156251662517625186251962520625216252262523625246252562526625276252862529625306253162532625336253462535625366253762538625396254062541625426254362544625456254662547625486254962550625516255262553625546255562556625576255862559625606256162562625636256462565625666256762568625696257062571625726257362574625756257662577625786257962580625816258262583625846258562586625876258862589625906259162592625936259462595625966259762598625996260062601626026260362604626056260662607626086260962610626116261262613626146261562616626176261862619626206262162622626236262462625626266262762628626296263062631626326263362634626356263662637626386263962640626416264262643626446264562646626476264862649626506265162652626536265462655626566265762658626596266062661626626266362664626656266662667626686266962670626716267262673626746267562676626776267862679626806268162682626836268462685626866268762688626896269062691626926269362694626956269662697626986269962700627016270262703627046270562706627076270862709627106271162712627136271462715627166271762718627196272062721627226272362724627256272662727627286272962730627316273262733627346273562736627376273862739627406274162742627436274462745627466274762748627496275062751627526275362754627556275662757627586275962760627616276262763627646276562766627676276862769627706277162772627736277462775627766277762778627796278062781627826278362784627856278662787627886278962790627916279262793627946279562796627976279862799628006280162802628036280462805628066280762808628096281062811628126281362814628156281662817628186281962820628216282262823628246282562826628276282862829628306283162832628336283462835628366283762838628396284062841628426284362844628456284662847628486284962850628516285262853628546285562856628576285862859628606286162862628636286462865628666286762868628696287062871628726287362874628756287662877628786287962880628816288262883628846288562886628876288862889628906289162892628936289462895628966289762898628996290062901629026290362904629056290662907629086290962910629116291262913629146291562916629176291862919629206292162922629236292462925629266292762928629296293062931629326293362934629356293662937629386293962940629416294262943629446294562946629476294862949629506295162952629536295462955629566295762958629596296062961629626296362964629656296662967629686296962970629716297262973629746297562976629776297862979629806298162982629836298462985629866298762988629896299062991629926299362994629956299662997629986299963000630016300263003630046300563006630076300863009630106301163012630136301463015630166301763018630196302063021630226302363024630256302663027630286302963030630316303263033630346303563036630376303863039630406304163042630436304463045630466304763048630496305063051630526305363054630556305663057630586305963060630616306263063630646306563066630676306863069630706307163072630736307463075630766307763078630796308063081630826308363084630856308663087630886308963090630916309263093630946309563096630976309863099631006310163102631036310463105631066310763108631096311063111631126311363114631156311663117631186311963120631216312263123631246312563126631276312863129631306313163132631336313463135631366313763138631396314063141631426314363144631456314663147631486314963150631516315263153631546315563156631576315863159631606316163162631636316463165631666316763168631696317063171631726317363174631756317663177631786317963180631816318263183631846318563186631876318863189631906319163192631936319463195631966319763198631996320063201632026320363204632056320663207632086320963210632116321263213632146321563216632176321863219632206322163222632236322463225632266322763228632296323063231632326323363234632356323663237632386323963240632416324263243632446324563246632476324863249632506325163252632536325463255632566325763258632596326063261632626326363264632656326663267632686326963270632716327263273632746327563276632776327863279632806328163282632836328463285632866328763288632896329063291632926329363294632956329663297632986329963300633016330263303633046330563306633076330863309633106331163312633136331463315633166331763318633196332063321633226332363324633256332663327633286332963330633316333263333633346333563336633376333863339633406334163342633436334463345633466334763348633496335063351633526335363354633556335663357633586335963360633616336263363633646336563366633676336863369633706337163372633736337463375633766337763378633796338063381633826338363384633856338663387633886338963390633916339263393633946339563396633976339863399634006340163402634036340463405634066340763408634096341063411634126341363414634156341663417634186341963420634216342263423634246342563426634276342863429634306343163432634336343463435634366343763438634396344063441634426344363444634456344663447634486344963450634516345263453634546345563456634576345863459634606346163462634636346463465634666346763468634696347063471634726347363474634756347663477634786347963480634816348263483634846348563486634876348863489634906349163492634936349463495634966349763498634996350063501635026350363504635056350663507635086350963510635116351263513635146351563516635176351863519635206352163522635236352463525635266352763528635296353063531635326353363534635356353663537635386353963540635416354263543635446354563546635476354863549635506355163552635536355463555635566355763558635596356063561635626356363564635656356663567635686356963570635716357263573635746357563576635776357863579635806358163582635836358463585635866358763588635896359063591635926359363594635956359663597635986359963600636016360263603636046360563606636076360863609636106361163612636136361463615636166361763618636196362063621636226362363624636256362663627636286362963630636316363263633636346363563636636376363863639636406364163642636436364463645636466364763648636496365063651636526365363654636556365663657636586365963660636616366263663636646366563666636676366863669636706367163672636736367463675636766367763678636796368063681636826368363684636856368663687636886368963690636916369263693636946369563696636976369863699637006370163702637036370463705637066370763708637096371063711637126371363714637156371663717637186371963720637216372263723637246372563726637276372863729637306373163732637336373463735637366373763738637396374063741637426374363744637456374663747637486374963750637516375263753637546375563756637576375863759637606376163762637636376463765637666376763768637696377063771637726377363774637756377663777637786377963780637816378263783637846378563786637876378863789637906379163792637936379463795637966379763798637996380063801638026380363804638056380663807638086380963810638116381263813638146381563816638176381863819638206382163822638236382463825638266382763828638296383063831638326383363834638356383663837638386383963840638416384263843638446384563846638476384863849638506385163852638536385463855638566385763858638596386063861638626386363864638656386663867638686386963870638716387263873638746387563876638776387863879638806388163882638836388463885638866388763888638896389063891638926389363894638956389663897638986389963900639016390263903639046390563906639076390863909639106391163912639136391463915639166391763918639196392063921639226392363924639256392663927639286392963930639316393263933639346393563936639376393863939639406394163942639436394463945639466394763948639496395063951639526395363954639556395663957639586395963960639616396263963639646396563966639676396863969639706397163972639736397463975639766397763978639796398063981639826398363984639856398663987639886398963990639916399263993639946399563996639976399863999640006400164002640036400464005640066400764008640096401064011640126401364014640156401664017640186401964020640216402264023640246402564026640276402864029640306403164032640336403464035640366403764038640396404064041640426404364044640456404664047640486404964050640516405264053640546405564056640576405864059640606406164062640636406464065640666406764068640696407064071640726407364074640756407664077640786407964080640816408264083640846408564086640876408864089640906409164092640936409464095640966409764098640996410064101641026410364104641056410664107641086410964110641116411264113641146411564116641176411864119641206412164122641236412464125641266412764128641296413064131641326413364134641356413664137641386413964140641416414264143641446414564146641476414864149641506415164152641536415464155641566415764158641596416064161641626416364164641656416664167641686416964170641716417264173641746417564176641776417864179641806418164182641836418464185641866418764188641896419064191641926419364194641956419664197641986419964200642016420264203642046420564206642076420864209642106421164212642136421464215642166421764218642196422064221642226422364224642256422664227642286422964230642316423264233642346423564236642376423864239642406424164242642436424464245642466424764248642496425064251642526425364254642556425664257642586425964260642616426264263642646426564266642676426864269642706427164272642736427464275642766427764278642796428064281642826428364284642856428664287642886428964290642916429264293642946429564296642976429864299643006430164302643036430464305643066430764308643096431064311643126431364314643156431664317643186431964320643216432264323643246432564326643276432864329643306433164332643336433464335643366433764338643396434064341643426434364344643456434664347643486434964350643516435264353643546435564356643576435864359643606436164362643636436464365643666436764368643696437064371643726437364374643756437664377643786437964380643816438264383643846438564386643876438864389643906439164392643936439464395643966439764398643996440064401644026440364404644056440664407644086440964410644116441264413644146441564416644176441864419644206442164422644236442464425644266442764428644296443064431644326443364434644356443664437644386443964440644416444264443644446444564446644476444864449644506445164452644536445464455644566445764458644596446064461644626446364464644656446664467644686446964470644716447264473644746447564476644776447864479644806448164482644836448464485644866448764488644896449064491644926449364494644956449664497644986449964500645016450264503645046450564506645076450864509645106451164512645136451464515645166451764518645196452064521645226452364524645256452664527645286452964530645316453264533645346453564536645376453864539645406454164542645436454464545645466454764548645496455064551645526455364554645556455664557645586455964560645616456264563645646456564566645676456864569645706457164572645736457464575645766457764578645796458064581645826458364584645856458664587645886458964590645916459264593645946459564596645976459864599646006460164602646036460464605646066460764608646096461064611646126461364614646156461664617646186461964620646216462264623646246462564626646276462864629646306463164632646336463464635646366463764638646396464064641646426464364644646456464664647646486464964650646516465264653646546465564656646576465864659646606466164662646636466464665646666466764668646696467064671646726467364674646756467664677646786467964680646816468264683646846468564686646876468864689646906469164692646936469464695646966469764698646996470064701647026470364704647056470664707647086470964710647116471264713647146471564716647176471864719647206472164722647236472464725647266472764728647296473064731647326473364734647356473664737647386473964740647416474264743647446474564746647476474864749647506475164752647536475464755647566475764758647596476064761647626476364764647656476664767647686476964770647716477264773647746477564776647776477864779647806478164782647836478464785647866478764788647896479064791647926479364794647956479664797647986479964800648016480264803648046480564806648076480864809648106481164812648136481464815648166481764818648196482064821648226482364824648256482664827648286482964830648316483264833648346483564836648376483864839648406484164842648436484464845648466484764848648496485064851648526485364854648556485664857648586485964860648616486264863648646486564866648676486864869648706487164872648736487464875648766487764878648796488064881648826488364884648856488664887648886488964890648916489264893648946489564896648976489864899649006490164902649036490464905649066490764908649096491064911649126491364914649156491664917649186491964920649216492264923649246492564926649276492864929649306493164932649336493464935649366493764938649396494064941649426494364944649456494664947649486494964950649516495264953649546495564956649576495864959649606496164962649636496464965649666496764968649696497064971649726497364974649756497664977649786497964980649816498264983649846498564986649876498864989649906499164992649936499464995649966499764998649996500065001650026500365004650056500665007650086500965010650116501265013650146501565016650176501865019650206502165022650236502465025650266502765028650296503065031650326503365034650356503665037650386503965040650416504265043650446504565046650476504865049650506505165052650536505465055650566505765058650596506065061650626506365064650656506665067650686506965070650716507265073650746507565076650776507865079650806508165082650836508465085650866508765088650896509065091650926509365094650956509665097650986509965100651016510265103651046510565106651076510865109651106511165112651136511465115651166511765118651196512065121651226512365124651256512665127651286512965130651316513265133651346513565136651376513865139651406514165142651436514465145651466514765148651496515065151651526515365154651556515665157651586515965160651616516265163651646516565166651676516865169651706517165172651736517465175651766517765178651796518065181651826518365184651856518665187651886518965190651916519265193651946519565196651976519865199652006520165202652036520465205652066520765208652096521065211652126521365214652156521665217652186521965220652216522265223652246522565226652276522865229652306523165232652336523465235652366523765238652396524065241652426524365244652456524665247652486524965250652516525265253652546525565256652576525865259652606526165262652636526465265652666526765268652696527065271652726527365274652756527665277652786527965280652816528265283652846528565286652876528865289652906529165292652936529465295652966529765298652996530065301653026530365304653056530665307653086530965310653116531265313653146531565316653176531865319653206532165322653236532465325653266532765328653296533065331653326533365334653356533665337653386533965340653416534265343653446534565346653476534865349653506535165352653536535465355653566535765358653596536065361653626536365364653656536665367653686536965370653716537265373653746537565376653776537865379653806538165382653836538465385653866538765388653896539065391653926539365394653956539665397653986539965400654016540265403654046540565406654076540865409654106541165412654136541465415654166541765418654196542065421654226542365424654256542665427654286542965430654316543265433654346543565436654376543865439654406544165442654436544465445654466544765448654496545065451654526545365454654556545665457654586545965460654616546265463654646546565466654676546865469654706547165472654736547465475654766547765478654796548065481654826548365484654856548665487654886548965490654916549265493654946549565496654976549865499655006550165502655036550465505655066550765508655096551065511655126551365514655156551665517655186551965520655216552265523655246552565526655276552865529655306553165532655336553465535655366553765538655396554065541655426554365544655456554665547655486554965550655516555265553655546555565556655576555865559655606556165562655636556465565655666556765568655696557065571655726557365574655756557665577655786557965580655816558265583655846558565586655876558865589655906559165592655936559465595655966559765598655996560065601656026560365604656056560665607656086560965610656116561265613656146561565616656176561865619656206562165622656236562465625656266562765628656296563065631656326563365634656356563665637656386563965640656416564265643656446564565646656476564865649656506565165652656536565465655656566565765658656596566065661656626566365664656656566665667656686566965670656716567265673656746567565676656776567865679656806568165682656836568465685656866568765688656896569065691656926569365694656956569665697656986569965700657016570265703657046570565706657076570865709657106571165712657136571465715657166571765718657196572065721657226572365724657256572665727657286572965730657316573265733657346573565736657376573865739657406574165742657436574465745657466574765748657496575065751657526575365754657556575665757657586575965760657616576265763657646576565766657676576865769657706577165772657736577465775657766577765778657796578065781657826578365784657856578665787657886578965790657916579265793657946579565796657976579865799658006580165802658036580465805658066580765808658096581065811658126581365814658156581665817658186581965820658216582265823658246582565826658276582865829658306583165832658336583465835658366583765838658396584065841658426584365844658456584665847658486584965850658516585265853658546585565856658576585865859658606586165862658636586465865658666586765868658696587065871658726587365874658756587665877658786587965880658816588265883658846588565886658876588865889658906589165892658936589465895658966589765898658996590065901659026590365904659056590665907659086590965910659116591265913659146591565916659176591865919659206592165922659236592465925659266592765928659296593065931659326593365934659356593665937659386593965940659416594265943659446594565946659476594865949659506595165952659536595465955659566595765958659596596065961659626596365964659656596665967659686596965970659716597265973659746597565976659776597865979659806598165982659836598465985659866598765988659896599065991659926599365994659956599665997659986599966000660016600266003660046600566006660076600866009660106601166012660136601466015660166601766018660196602066021660226602366024660256602666027660286602966030660316603266033660346603566036660376603866039660406604166042660436604466045660466604766048660496605066051660526605366054660556605666057660586605966060660616606266063660646606566066660676606866069660706607166072660736607466075660766607766078660796608066081660826608366084660856608666087660886608966090660916609266093660946609566096660976609866099661006610166102661036610466105661066610766108661096611066111661126611366114661156611666117661186611966120661216612266123661246612566126661276612866129661306613166132661336613466135661366613766138661396614066141661426614366144661456614666147661486614966150661516615266153661546615566156661576615866159661606616166162661636616466165661666616766168661696617066171661726617366174661756617666177661786617966180661816618266183661846618566186661876618866189661906619166192661936619466195661966619766198661996620066201662026620366204662056620666207662086620966210662116621266213662146621566216662176621866219662206622166222662236622466225662266622766228662296623066231662326623366234662356623666237662386623966240662416624266243662446624566246662476624866249662506625166252662536625466255662566625766258662596626066261662626626366264662656626666267662686626966270662716627266273662746627566276662776627866279662806628166282662836628466285662866628766288662896629066291662926629366294662956629666297662986629966300663016630266303663046630566306663076630866309663106631166312663136631466315663166631766318663196632066321663226632366324663256632666327663286632966330663316633266333663346633566336663376633866339663406634166342663436634466345663466634766348663496635066351663526635366354663556635666357663586635966360663616636266363663646636566366663676636866369663706637166372663736637466375663766637766378663796638066381663826638366384663856638666387663886638966390663916639266393663946639566396663976639866399664006640166402664036640466405664066640766408664096641066411664126641366414664156641666417664186641966420664216642266423664246642566426664276642866429664306643166432664336643466435664366643766438664396644066441664426644366444664456644666447664486644966450664516645266453664546645566456664576645866459664606646166462664636646466465664666646766468664696647066471664726647366474664756647666477664786647966480664816648266483664846648566486664876648866489664906649166492664936649466495664966649766498664996650066501665026650366504665056650666507665086650966510665116651266513665146651566516665176651866519665206652166522665236652466525665266652766528665296653066531665326653366534665356653666537665386653966540665416654266543665446654566546665476654866549665506655166552665536655466555665566655766558665596656066561665626656366564665656656666567665686656966570665716657266573665746657566576665776657866579665806658166582665836658466585665866658766588665896659066591665926659366594665956659666597665986659966600666016660266603666046660566606666076660866609666106661166612666136661466615666166661766618666196662066621666226662366624666256662666627666286662966630666316663266633666346663566636666376663866639666406664166642666436664466645666466664766648666496665066651666526665366654666556665666657666586665966660666616666266663666646666566666666676666866669666706667166672666736667466675666766667766678666796668066681666826668366684666856668666687666886668966690666916669266693666946669566696666976669866699667006670166702667036670466705667066670766708667096671066711667126671366714667156671666717667186671966720667216672266723667246672566726667276672866729667306673166732667336673466735667366673766738667396674066741667426674366744667456674666747667486674966750667516675266753667546675566756667576675866759667606676166762667636676466765667666676766768667696677066771667726677366774667756677666777667786677966780667816678266783667846678566786667876678866789667906679166792667936679466795667966679766798667996680066801668026680366804668056680666807668086680966810668116681266813668146681566816668176681866819668206682166822668236682466825668266682766828668296683066831668326683366834668356683666837668386683966840668416684266843668446684566846668476684866849668506685166852668536685466855668566685766858668596686066861668626686366864668656686666867668686686966870668716687266873668746687566876668776687866879668806688166882668836688466885668866688766888668896689066891668926689366894668956689666897668986689966900669016690266903669046690566906669076690866909669106691166912669136691466915669166691766918669196692066921669226692366924669256692666927669286692966930669316693266933669346693566936669376693866939669406694166942669436694466945669466694766948669496695066951669526695366954669556695666957669586695966960669616696266963669646696566966669676696866969669706697166972669736697466975669766697766978669796698066981669826698366984669856698666987669886698966990669916699266993669946699566996669976699866999670006700167002670036700467005670066700767008670096701067011670126701367014670156701667017670186701967020670216702267023670246702567026670276702867029670306703167032670336703467035670366703767038670396704067041670426704367044670456704667047670486704967050670516705267053670546705567056670576705867059670606706167062670636706467065670666706767068670696707067071670726707367074670756707667077670786707967080670816708267083670846708567086670876708867089670906709167092670936709467095670966709767098670996710067101671026710367104671056710667107671086710967110671116711267113671146711567116671176711867119671206712167122671236712467125671266712767128671296713067131671326713367134671356713667137671386713967140671416714267143671446714567146671476714867149671506715167152671536715467155671566715767158671596716067161671626716367164671656716667167671686716967170671716717267173671746717567176671776717867179671806718167182671836718467185671866718767188671896719067191671926719367194671956719667197671986719967200672016720267203672046720567206672076720867209672106721167212672136721467215672166721767218672196722067221672226722367224672256722667227672286722967230672316723267233672346723567236672376723867239672406724167242672436724467245672466724767248672496725067251672526725367254672556725667257672586725967260672616726267263672646726567266672676726867269672706727167272672736727467275672766727767278672796728067281672826728367284672856728667287672886728967290672916729267293672946729567296672976729867299673006730167302673036730467305673066730767308673096731067311673126731367314673156731667317673186731967320673216732267323673246732567326673276732867329673306733167332673336733467335673366733767338673396734067341673426734367344673456734667347673486734967350673516735267353673546735567356673576735867359673606736167362673636736467365673666736767368673696737067371673726737367374673756737667377673786737967380673816738267383673846738567386673876738867389673906739167392673936739467395673966739767398673996740067401674026740367404674056740667407674086740967410674116741267413674146741567416674176741867419674206742167422674236742467425674266742767428674296743067431674326743367434674356743667437674386743967440674416744267443674446744567446674476744867449674506745167452674536745467455674566745767458674596746067461674626746367464674656746667467674686746967470674716747267473674746747567476674776747867479674806748167482674836748467485674866748767488674896749067491674926749367494674956749667497674986749967500675016750267503675046750567506675076750867509675106751167512675136751467515675166751767518675196752067521675226752367524675256752667527675286752967530675316753267533675346753567536675376753867539675406754167542675436754467545675466754767548675496755067551675526755367554675556755667557675586755967560675616756267563675646756567566675676756867569675706757167572675736757467575675766757767578675796758067581675826758367584675856758667587675886758967590675916759267593675946759567596675976759867599676006760167602676036760467605676066760767608676096761067611676126761367614676156761667617676186761967620676216762267623676246762567626676276762867629676306763167632676336763467635676366763767638676396764067641676426764367644676456764667647676486764967650676516765267653676546765567656676576765867659676606766167662676636766467665676666766767668676696767067671676726767367674676756767667677676786767967680676816768267683676846768567686676876768867689676906769167692676936769467695676966769767698676996770067701677026770367704677056770667707677086770967710677116771267713677146771567716677176771867719677206772167722677236772467725677266772767728677296773067731677326773367734677356773667737677386773967740677416774267743677446774567746677476774867749677506775167752677536775467755677566775767758677596776067761677626776367764677656776667767677686776967770677716777267773677746777567776677776777867779677806778167782677836778467785677866778767788677896779067791677926779367794677956779667797677986779967800678016780267803678046780567806678076780867809678106781167812678136781467815678166781767818678196782067821678226782367824678256782667827678286782967830678316783267833678346783567836678376783867839678406784167842678436784467845678466784767848678496785067851678526785367854678556785667857678586785967860678616786267863678646786567866678676786867869678706787167872678736787467875678766787767878678796788067881678826788367884678856788667887678886788967890678916789267893678946789567896678976789867899679006790167902679036790467905679066790767908679096791067911679126791367914679156791667917679186791967920679216792267923679246792567926679276792867929679306793167932679336793467935679366793767938679396794067941679426794367944679456794667947679486794967950679516795267953679546795567956679576795867959679606796167962679636796467965679666796767968679696797067971679726797367974679756797667977679786797967980679816798267983679846798567986679876798867989679906799167992679936799467995679966799767998679996800068001680026800368004680056800668007680086800968010680116801268013680146801568016680176801868019680206802168022680236802468025680266802768028680296803068031680326803368034680356803668037680386803968040680416804268043680446804568046680476804868049680506805168052680536805468055680566805768058680596806068061680626806368064680656806668067680686806968070680716807268073680746807568076680776807868079680806808168082680836808468085680866808768088680896809068091680926809368094680956809668097680986809968100681016810268103681046810568106681076810868109681106811168112681136811468115681166811768118681196812068121681226812368124681256812668127681286812968130681316813268133681346813568136681376813868139681406814168142681436814468145681466814768148681496815068151681526815368154681556815668157681586815968160681616816268163681646816568166681676816868169681706817168172681736817468175681766817768178681796818068181681826818368184681856818668187681886818968190681916819268193681946819568196681976819868199682006820168202682036820468205682066820768208682096821068211682126821368214682156821668217682186821968220682216822268223682246822568226682276822868229682306823168232682336823468235682366823768238682396824068241682426824368244682456824668247682486824968250682516825268253682546825568256682576825868259682606826168262682636826468265682666826768268682696827068271682726827368274682756827668277682786827968280682816828268283682846828568286682876828868289682906829168292682936829468295682966829768298682996830068301683026830368304683056830668307683086830968310683116831268313683146831568316683176831868319683206832168322683236832468325683266832768328683296833068331683326833368334683356833668337683386833968340683416834268343683446834568346683476834868349683506835168352683536835468355683566835768358683596836068361683626836368364683656836668367683686836968370683716837268373683746837568376683776837868379683806838168382683836838468385683866838768388683896839068391683926839368394683956839668397683986839968400684016840268403684046840568406684076840868409684106841168412684136841468415684166841768418684196842068421684226842368424684256842668427684286842968430684316843268433684346843568436684376843868439684406844168442684436844468445684466844768448684496845068451684526845368454684556845668457684586845968460684616846268463684646846568466684676846868469684706847168472684736847468475684766847768478684796848068481684826848368484684856848668487684886848968490684916849268493684946849568496684976849868499685006850168502685036850468505685066850768508685096851068511685126851368514685156851668517685186851968520685216852268523685246852568526685276852868529685306853168532685336853468535685366853768538685396854068541685426854368544685456854668547685486854968550685516855268553685546855568556685576855868559685606856168562685636856468565685666856768568685696857068571685726857368574685756857668577685786857968580685816858268583685846858568586685876858868589685906859168592685936859468595685966859768598685996860068601686026860368604686056860668607686086860968610686116861268613686146861568616686176861868619686206862168622686236862468625686266862768628686296863068631686326863368634686356863668637686386863968640686416864268643686446864568646686476864868649686506865168652686536865468655686566865768658686596866068661686626866368664686656866668667686686866968670686716867268673686746867568676686776867868679686806868168682686836868468685686866868768688686896869068691686926869368694686956869668697686986869968700687016870268703687046870568706687076870868709687106871168712687136871468715687166871768718687196872068721687226872368724687256872668727687286872968730687316873268733687346873568736687376873868739687406874168742687436874468745687466874768748687496875068751687526875368754687556875668757687586875968760687616876268763687646876568766687676876868769687706877168772687736877468775687766877768778687796878068781687826878368784687856878668787687886878968790687916879268793687946879568796687976879868799688006880168802688036880468805688066880768808688096881068811688126881368814688156881668817688186881968820688216882268823688246882568826688276882868829688306883168832688336883468835688366883768838688396884068841688426884368844688456884668847688486884968850688516885268853688546885568856688576885868859688606886168862688636886468865688666886768868688696887068871688726887368874688756887668877688786887968880688816888268883688846888568886688876888868889688906889168892688936889468895688966889768898688996890068901689026890368904689056890668907689086890968910689116891268913689146891568916689176891868919689206892168922689236892468925689266892768928689296893068931689326893368934689356893668937689386893968940689416894268943689446894568946689476894868949689506895168952689536895468955689566895768958689596896068961689626896368964689656896668967689686896968970689716897268973689746897568976689776897868979689806898168982689836898468985689866898768988689896899068991689926899368994689956899668997689986899969000690016900269003690046900569006690076900869009690106901169012690136901469015690166901769018690196902069021690226902369024690256902669027690286902969030690316903269033690346903569036690376903869039690406904169042690436904469045690466904769048690496905069051690526905369054690556905669057690586905969060690616906269063690646906569066690676906869069690706907169072690736907469075690766907769078690796908069081690826908369084690856908669087690886908969090690916909269093690946909569096690976909869099691006910169102691036910469105691066910769108691096911069111691126911369114691156911669117691186911969120691216912269123691246912569126691276912869129691306913169132691336913469135691366913769138691396914069141691426914369144691456914669147691486914969150691516915269153691546915569156691576915869159691606916169162691636916469165691666916769168691696917069171691726917369174691756917669177691786917969180691816918269183691846918569186691876918869189691906919169192691936919469195691966919769198691996920069201692026920369204692056920669207692086920969210692116921269213692146921569216692176921869219692206922169222692236922469225692266922769228692296923069231692326923369234692356923669237692386923969240692416924269243692446924569246692476924869249692506925169252692536925469255692566925769258692596926069261692626926369264692656926669267692686926969270692716927269273692746927569276692776927869279692806928169282692836928469285692866928769288692896929069291692926929369294692956929669297692986929969300693016930269303693046930569306693076930869309693106931169312693136931469315693166931769318693196932069321693226932369324693256932669327693286932969330693316933269333693346933569336693376933869339693406934169342693436934469345693466934769348693496935069351693526935369354693556935669357693586935969360693616936269363693646936569366693676936869369693706937169372693736937469375693766937769378693796938069381693826938369384693856938669387693886938969390693916939269393693946939569396693976939869399694006940169402694036940469405694066940769408694096941069411694126941369414694156941669417694186941969420694216942269423694246942569426694276942869429694306943169432694336943469435694366943769438694396944069441694426944369444694456944669447694486944969450694516945269453694546945569456694576945869459694606946169462694636946469465694666946769468694696947069471694726947369474694756947669477694786947969480694816948269483694846948569486694876948869489694906949169492694936949469495694966949769498694996950069501695026950369504695056950669507695086950969510695116951269513695146951569516695176951869519695206952169522695236952469525695266952769528695296953069531695326953369534695356953669537695386953969540695416954269543695446954569546695476954869549695506955169552695536955469555695566955769558695596956069561695626956369564695656956669567695686956969570695716957269573695746957569576695776957869579695806958169582695836958469585695866958769588695896959069591695926959369594695956959669597695986959969600696016960269603696046960569606696076960869609696106961169612696136961469615696166961769618696196962069621696226962369624696256962669627696286962969630696316963269633696346963569636696376963869639696406964169642696436964469645696466964769648696496965069651696526965369654696556965669657696586965969660696616966269663696646966569666696676966869669696706967169672696736967469675696766967769678696796968069681696826968369684696856968669687696886968969690696916969269693696946969569696696976969869699697006970169702697036970469705697066970769708697096971069711697126971369714697156971669717697186971969720697216972269723697246972569726697276972869729697306973169732697336973469735697366973769738697396974069741697426974369744697456974669747697486974969750697516975269753697546975569756697576975869759697606976169762697636976469765697666976769768697696977069771697726977369774697756977669777697786977969780697816978269783697846978569786697876978869789697906979169792697936979469795697966979769798697996980069801698026980369804698056980669807698086980969810698116981269813698146981569816698176981869819698206982169822698236982469825698266982769828698296983069831698326983369834698356983669837698386983969840698416984269843698446984569846698476984869849698506985169852698536985469855698566985769858698596986069861698626986369864698656986669867698686986969870698716987269873698746987569876698776987869879698806988169882698836988469885698866988769888698896989069891698926989369894698956989669897698986989969900699016990269903699046990569906699076990869909699106991169912699136991469915699166991769918699196992069921699226992369924699256992669927699286992969930699316993269933699346993569936699376993869939699406994169942699436994469945699466994769948699496995069951699526995369954699556995669957699586995969960699616996269963699646996569966699676996869969699706997169972699736997469975699766997769978699796998069981699826998369984699856998669987699886998969990699916999269993699946999569996699976999869999700007000170002700037000470005700067000770008700097001070011700127001370014700157001670017700187001970020700217002270023700247002570026700277002870029700307003170032700337003470035700367003770038700397004070041700427004370044700457004670047700487004970050700517005270053700547005570056700577005870059700607006170062700637006470065700667006770068700697007070071700727007370074700757007670077700787007970080700817008270083700847008570086700877008870089700907009170092700937009470095700967009770098700997010070101701027010370104701057010670107701087010970110701117011270113701147011570116701177011870119701207012170122701237012470125701267012770128701297013070131701327013370134701357013670137701387013970140701417014270143701447014570146701477014870149701507015170152701537015470155701567015770158701597016070161701627016370164701657016670167701687016970170701717017270173701747017570176701777017870179701807018170182701837018470185701867018770188701897019070191701927019370194701957019670197701987019970200702017020270203702047020570206702077020870209702107021170212702137021470215702167021770218702197022070221702227022370224702257022670227702287022970230702317023270233702347023570236702377023870239702407024170242702437024470245702467024770248702497025070251702527025370254702557025670257702587025970260702617026270263702647026570266702677026870269702707027170272702737027470275702767027770278702797028070281702827028370284702857028670287702887028970290702917029270293702947029570296702977029870299703007030170302703037030470305703067030770308703097031070311703127031370314703157031670317703187031970320703217032270323703247032570326703277032870329703307033170332703337033470335703367033770338703397034070341703427034370344703457034670347703487034970350703517035270353703547035570356703577035870359703607036170362703637036470365703667036770368703697037070371703727037370374703757037670377703787037970380703817038270383703847038570386703877038870389703907039170392703937039470395703967039770398703997040070401704027040370404704057040670407704087040970410704117041270413704147041570416704177041870419704207042170422704237042470425704267042770428704297043070431704327043370434704357043670437704387043970440704417044270443704447044570446704477044870449704507045170452704537045470455704567045770458704597046070461704627046370464704657046670467704687046970470704717047270473704747047570476704777047870479704807048170482704837048470485704867048770488704897049070491704927049370494704957049670497704987049970500705017050270503705047050570506705077050870509705107051170512705137051470515705167051770518705197052070521705227052370524705257052670527705287052970530705317053270533705347053570536705377053870539705407054170542705437054470545705467054770548705497055070551705527055370554705557055670557705587055970560705617056270563705647056570566705677056870569705707057170572705737057470575705767057770578705797058070581705827058370584705857058670587705887058970590705917059270593705947059570596705977059870599706007060170602706037060470605706067060770608706097061070611706127061370614706157061670617706187061970620706217062270623706247062570626706277062870629706307063170632706337063470635706367063770638706397064070641706427064370644706457064670647706487064970650706517065270653706547065570656706577065870659706607066170662706637066470665706667066770668706697067070671706727067370674706757067670677706787067970680706817068270683706847068570686706877068870689706907069170692706937069470695706967069770698706997070070701707027070370704707057070670707707087070970710707117071270713707147071570716707177071870719707207072170722707237072470725707267072770728707297073070731707327073370734707357073670737707387073970740707417074270743707447074570746707477074870749707507075170752707537075470755707567075770758707597076070761707627076370764707657076670767707687076970770707717077270773707747077570776707777077870779707807078170782707837078470785707867078770788707897079070791707927079370794707957079670797707987079970800708017080270803708047080570806708077080870809708107081170812708137081470815708167081770818708197082070821708227082370824708257082670827708287082970830708317083270833708347083570836708377083870839708407084170842708437084470845708467084770848708497085070851708527085370854708557085670857708587085970860708617086270863708647086570866708677086870869708707087170872708737087470875708767087770878708797088070881708827088370884708857088670887708887088970890708917089270893708947089570896708977089870899709007090170902709037090470905709067090770908709097091070911709127091370914709157091670917709187091970920709217092270923709247092570926709277092870929709307093170932709337093470935709367093770938709397094070941709427094370944709457094670947709487094970950709517095270953709547095570956709577095870959709607096170962709637096470965709667096770968709697097070971709727097370974709757097670977709787097970980709817098270983709847098570986709877098870989709907099170992709937099470995709967099770998709997100071001710027100371004710057100671007710087100971010710117101271013710147101571016710177101871019710207102171022710237102471025710267102771028710297103071031710327103371034710357103671037710387103971040710417104271043710447104571046710477104871049710507105171052710537105471055710567105771058710597106071061710627106371064710657106671067710687106971070710717107271073710747107571076710777107871079710807108171082710837108471085710867108771088710897109071091710927109371094710957109671097710987109971100711017110271103711047110571106711077110871109711107111171112711137111471115711167111771118711197112071121711227112371124711257112671127711287112971130711317113271133711347113571136711377113871139711407114171142711437114471145711467114771148
  1. "use strict";
  2. (function() {
  3. Error.stackTraceLimit = Infinity;
  4. var $global, $module;
  5. if (typeof window !== "undefined") { /* web page */
  6. $global = window;
  7. } else if (typeof self !== "undefined") { /* web worker */
  8. $global = self;
  9. } else if (typeof global !== "undefined") { /* Node.js */
  10. $global = global;
  11. $global.require = require;
  12. } else { /* others (e.g. Nashorn) */
  13. $global = this;
  14. }
  15. if ($global === undefined || $global.Array === undefined) {
  16. throw new Error("no global object found");
  17. }
  18. if (typeof module !== "undefined") {
  19. $module = module;
  20. }
  21. var $packages = {}, $idCounter = 0;
  22. var $keys = function(m) { return m ? Object.keys(m) : []; };
  23. var $min = Math.min;
  24. var $mod = function(x, y) { return x % y; };
  25. var $parseInt = parseInt;
  26. var $parseFloat = function(f) {
  27. if (f !== undefined && f !== null && f.constructor === Number) {
  28. return f;
  29. }
  30. return parseFloat(f);
  31. };
  32. var $flushConsole = function() {};
  33. var $throwRuntimeError; /* set by package "runtime" */
  34. var $throwNilPointerError = function() { $throwRuntimeError("invalid memory address or nil pointer dereference"); };
  35. var $call = function(fn, rcvr, args) { return fn.apply(rcvr, args); };
  36. var $makeFunc = function(fn) { return function() { return fn(new ($sliceType($jsObjectPtr))($global.Array.prototype.slice.call(arguments, []))); } };
  37. var $froundBuf = new Float32Array(1);
  38. var $fround = Math.fround || function(f) { $froundBuf[0] = f; return $froundBuf[0]; };
  39. var $mapArray = function(array, f) {
  40. var newArray = new array.constructor(array.length);
  41. for (var i = 0; i < array.length; i++) {
  42. newArray[i] = f(array[i]);
  43. }
  44. return newArray;
  45. };
  46. var $methodVal = function(recv, name) {
  47. var vals = recv.$methodVals || {};
  48. recv.$methodVals = vals; /* noop for primitives */
  49. var f = vals[name];
  50. if (f !== undefined) {
  51. return f;
  52. }
  53. var method = recv[name];
  54. f = function() {
  55. $stackDepthOffset--;
  56. try {
  57. return method.apply(recv, arguments);
  58. } finally {
  59. $stackDepthOffset++;
  60. }
  61. };
  62. vals[name] = f;
  63. return f;
  64. };
  65. var $methodExpr = function(method) {
  66. if (method.$expr === undefined) {
  67. method.$expr = function() {
  68. $stackDepthOffset--;
  69. try {
  70. return Function.call.apply(method, arguments);
  71. } finally {
  72. $stackDepthOffset++;
  73. }
  74. };
  75. }
  76. return method.$expr;
  77. };
  78. var $subslice = function(slice, low, high, max) {
  79. if (low < 0 || high < low || max < high || high > slice.$capacity || max > slice.$capacity) {
  80. $throwRuntimeError("slice bounds out of range");
  81. }
  82. var s = new slice.constructor(slice.$array);
  83. s.$offset = slice.$offset + low;
  84. s.$length = slice.$length - low;
  85. s.$capacity = slice.$capacity - low;
  86. if (high !== undefined) {
  87. s.$length = high - low;
  88. }
  89. if (max !== undefined) {
  90. s.$capacity = max - low;
  91. }
  92. return s;
  93. };
  94. var $sliceToArray = function(slice) {
  95. if (slice.$length === 0) {
  96. return [];
  97. }
  98. if (slice.$array.constructor !== Array) {
  99. return slice.$array.subarray(slice.$offset, slice.$offset + slice.$length);
  100. }
  101. return slice.$array.slice(slice.$offset, slice.$offset + slice.$length);
  102. };
  103. var $decodeRune = function(str, pos) {
  104. var c0 = str.charCodeAt(pos);
  105. if (c0 < 0x80) {
  106. return [c0, 1];
  107. }
  108. if (c0 !== c0 || c0 < 0xC0) {
  109. return [0xFFFD, 1];
  110. }
  111. var c1 = str.charCodeAt(pos + 1);
  112. if (c1 !== c1 || c1 < 0x80 || 0xC0 <= c1) {
  113. return [0xFFFD, 1];
  114. }
  115. if (c0 < 0xE0) {
  116. var r = (c0 & 0x1F) << 6 | (c1 & 0x3F);
  117. if (r <= 0x7F) {
  118. return [0xFFFD, 1];
  119. }
  120. return [r, 2];
  121. }
  122. var c2 = str.charCodeAt(pos + 2);
  123. if (c2 !== c2 || c2 < 0x80 || 0xC0 <= c2) {
  124. return [0xFFFD, 1];
  125. }
  126. if (c0 < 0xF0) {
  127. var r = (c0 & 0x0F) << 12 | (c1 & 0x3F) << 6 | (c2 & 0x3F);
  128. if (r <= 0x7FF) {
  129. return [0xFFFD, 1];
  130. }
  131. if (0xD800 <= r && r <= 0xDFFF) {
  132. return [0xFFFD, 1];
  133. }
  134. return [r, 3];
  135. }
  136. var c3 = str.charCodeAt(pos + 3);
  137. if (c3 !== c3 || c3 < 0x80 || 0xC0 <= c3) {
  138. return [0xFFFD, 1];
  139. }
  140. if (c0 < 0xF8) {
  141. var r = (c0 & 0x07) << 18 | (c1 & 0x3F) << 12 | (c2 & 0x3F) << 6 | (c3 & 0x3F);
  142. if (r <= 0xFFFF || 0x10FFFF < r) {
  143. return [0xFFFD, 1];
  144. }
  145. return [r, 4];
  146. }
  147. return [0xFFFD, 1];
  148. };
  149. var $encodeRune = function(r) {
  150. if (r < 0 || r > 0x10FFFF || (0xD800 <= r && r <= 0xDFFF)) {
  151. r = 0xFFFD;
  152. }
  153. if (r <= 0x7F) {
  154. return String.fromCharCode(r);
  155. }
  156. if (r <= 0x7FF) {
  157. return String.fromCharCode(0xC0 | r >> 6, 0x80 | (r & 0x3F));
  158. }
  159. if (r <= 0xFFFF) {
  160. return String.fromCharCode(0xE0 | r >> 12, 0x80 | (r >> 6 & 0x3F), 0x80 | (r & 0x3F));
  161. }
  162. return String.fromCharCode(0xF0 | r >> 18, 0x80 | (r >> 12 & 0x3F), 0x80 | (r >> 6 & 0x3F), 0x80 | (r & 0x3F));
  163. };
  164. var $stringToBytes = function(str) {
  165. var array = new Uint8Array(str.length);
  166. for (var i = 0; i < str.length; i++) {
  167. array[i] = str.charCodeAt(i);
  168. }
  169. return array;
  170. };
  171. var $bytesToString = function(slice) {
  172. if (slice.$length === 0) {
  173. return "";
  174. }
  175. var str = "";
  176. for (var i = 0; i < slice.$length; i += 10000) {
  177. str += String.fromCharCode.apply(undefined, slice.$array.subarray(slice.$offset + i, slice.$offset + Math.min(slice.$length, i + 10000)));
  178. }
  179. return str;
  180. };
  181. var $stringToRunes = function(str) {
  182. var array = new Int32Array(str.length);
  183. var rune, j = 0;
  184. for (var i = 0; i < str.length; i += rune[1], j++) {
  185. rune = $decodeRune(str, i);
  186. array[j] = rune[0];
  187. }
  188. return array.subarray(0, j);
  189. };
  190. var $runesToString = function(slice) {
  191. if (slice.$length === 0) {
  192. return "";
  193. }
  194. var str = "";
  195. for (var i = 0; i < slice.$length; i++) {
  196. str += $encodeRune(slice.$array[slice.$offset + i]);
  197. }
  198. return str;
  199. };
  200. var $copyString = function(dst, src) {
  201. var n = Math.min(src.length, dst.$length);
  202. for (var i = 0; i < n; i++) {
  203. dst.$array[dst.$offset + i] = src.charCodeAt(i);
  204. }
  205. return n;
  206. };
  207. var $copySlice = function(dst, src) {
  208. var n = Math.min(src.$length, dst.$length);
  209. $internalCopy(dst.$array, src.$array, dst.$offset, src.$offset, n, dst.constructor.elem);
  210. return n;
  211. };
  212. var $copy = function(dst, src, typ) {
  213. switch (typ.kind) {
  214. case $kindArray:
  215. $internalCopy(dst, src, 0, 0, src.length, typ.elem);
  216. break;
  217. case $kindStruct:
  218. for (var i = 0; i < typ.fields.length; i++) {
  219. var f = typ.fields[i];
  220. switch (f.typ.kind) {
  221. case $kindArray:
  222. case $kindStruct:
  223. $copy(dst[f.prop], src[f.prop], f.typ);
  224. continue;
  225. default:
  226. dst[f.prop] = src[f.prop];
  227. continue;
  228. }
  229. }
  230. break;
  231. }
  232. };
  233. var $internalCopy = function(dst, src, dstOffset, srcOffset, n, elem) {
  234. if (n === 0 || (dst === src && dstOffset === srcOffset)) {
  235. return;
  236. }
  237. if (src.subarray) {
  238. dst.set(src.subarray(srcOffset, srcOffset + n), dstOffset);
  239. return;
  240. }
  241. switch (elem.kind) {
  242. case $kindArray:
  243. case $kindStruct:
  244. if (dst === src && dstOffset > srcOffset) {
  245. for (var i = n - 1; i >= 0; i--) {
  246. $copy(dst[dstOffset + i], src[srcOffset + i], elem);
  247. }
  248. return;
  249. }
  250. for (var i = 0; i < n; i++) {
  251. $copy(dst[dstOffset + i], src[srcOffset + i], elem);
  252. }
  253. return;
  254. }
  255. if (dst === src && dstOffset > srcOffset) {
  256. for (var i = n - 1; i >= 0; i--) {
  257. dst[dstOffset + i] = src[srcOffset + i];
  258. }
  259. return;
  260. }
  261. for (var i = 0; i < n; i++) {
  262. dst[dstOffset + i] = src[srcOffset + i];
  263. }
  264. };
  265. var $clone = function(src, type) {
  266. var clone = type.zero();
  267. $copy(clone, src, type);
  268. return clone;
  269. };
  270. var $pointerOfStructConversion = function(obj, type) {
  271. if(obj.$proxies === undefined) {
  272. obj.$proxies = {};
  273. obj.$proxies[obj.constructor.string] = obj;
  274. }
  275. var proxy = obj.$proxies[type.string];
  276. if (proxy === undefined) {
  277. var properties = {};
  278. for (var i = 0; i < type.elem.fields.length; i++) {
  279. (function(fieldProp) {
  280. properties[fieldProp] = {
  281. get: function() { return obj[fieldProp]; },
  282. set: function(value) { obj[fieldProp] = value; },
  283. };
  284. })(type.elem.fields[i].prop);
  285. }
  286. proxy = Object.create(type.prototype, properties);
  287. proxy.$val = proxy;
  288. obj.$proxies[type.string] = proxy;
  289. proxy.$proxies = obj.$proxies;
  290. }
  291. return proxy;
  292. };
  293. var $append = function(slice) {
  294. return $internalAppend(slice, arguments, 1, arguments.length - 1);
  295. };
  296. var $appendSlice = function(slice, toAppend) {
  297. return $internalAppend(slice, toAppend.$array, toAppend.$offset, toAppend.$length);
  298. };
  299. var $internalAppend = function(slice, array, offset, length) {
  300. if (length === 0) {
  301. return slice;
  302. }
  303. var newArray = slice.$array;
  304. var newOffset = slice.$offset;
  305. var newLength = slice.$length + length;
  306. var newCapacity = slice.$capacity;
  307. if (newLength > newCapacity) {
  308. newOffset = 0;
  309. newCapacity = Math.max(newLength, slice.$capacity < 1024 ? slice.$capacity * 2 : Math.floor(slice.$capacity * 5 / 4));
  310. if (slice.$array.constructor === Array) {
  311. newArray = slice.$array.slice(slice.$offset, slice.$offset + slice.$length);
  312. newArray.length = newCapacity;
  313. var zero = slice.constructor.elem.zero;
  314. for (var i = slice.$length; i < newCapacity; i++) {
  315. newArray[i] = zero();
  316. }
  317. } else {
  318. newArray = new slice.$array.constructor(newCapacity);
  319. newArray.set(slice.$array.subarray(slice.$offset, slice.$offset + slice.$length));
  320. }
  321. }
  322. $internalCopy(newArray, array, newOffset + slice.$length, offset, length, slice.constructor.elem);
  323. var newSlice = new slice.constructor(newArray);
  324. newSlice.$offset = newOffset;
  325. newSlice.$length = newLength;
  326. newSlice.$capacity = newCapacity;
  327. return newSlice;
  328. };
  329. var $equal = function(a, b, type) {
  330. if (type === $jsObjectPtr) {
  331. return a === b;
  332. }
  333. switch (type.kind) {
  334. case $kindComplex64:
  335. case $kindComplex128:
  336. return a.$real === b.$real && a.$imag === b.$imag;
  337. case $kindInt64:
  338. case $kindUint64:
  339. return a.$high === b.$high && a.$low === b.$low;
  340. case $kindArray:
  341. if (a.length !== b.length) {
  342. return false;
  343. }
  344. for (var i = 0; i < a.length; i++) {
  345. if (!$equal(a[i], b[i], type.elem)) {
  346. return false;
  347. }
  348. }
  349. return true;
  350. case $kindStruct:
  351. for (var i = 0; i < type.fields.length; i++) {
  352. var f = type.fields[i];
  353. if (!$equal(a[f.prop], b[f.prop], f.typ)) {
  354. return false;
  355. }
  356. }
  357. return true;
  358. case $kindInterface:
  359. return $interfaceIsEqual(a, b);
  360. default:
  361. return a === b;
  362. }
  363. };
  364. var $interfaceIsEqual = function(a, b) {
  365. if (a === $ifaceNil || b === $ifaceNil) {
  366. return a === b;
  367. }
  368. if (a.constructor !== b.constructor) {
  369. return false;
  370. }
  371. if (!a.constructor.comparable) {
  372. $throwRuntimeError("comparing uncomparable type " + a.constructor.string);
  373. }
  374. return $equal(a.$val, b.$val, a.constructor);
  375. };
  376. var $kindBool = 1;
  377. var $kindInt = 2;
  378. var $kindInt8 = 3;
  379. var $kindInt16 = 4;
  380. var $kindInt32 = 5;
  381. var $kindInt64 = 6;
  382. var $kindUint = 7;
  383. var $kindUint8 = 8;
  384. var $kindUint16 = 9;
  385. var $kindUint32 = 10;
  386. var $kindUint64 = 11;
  387. var $kindUintptr = 12;
  388. var $kindFloat32 = 13;
  389. var $kindFloat64 = 14;
  390. var $kindComplex64 = 15;
  391. var $kindComplex128 = 16;
  392. var $kindArray = 17;
  393. var $kindChan = 18;
  394. var $kindFunc = 19;
  395. var $kindInterface = 20;
  396. var $kindMap = 21;
  397. var $kindPtr = 22;
  398. var $kindSlice = 23;
  399. var $kindString = 24;
  400. var $kindStruct = 25;
  401. var $kindUnsafePointer = 26;
  402. var $methodSynthesizers = [];
  403. var $addMethodSynthesizer = function(f) {
  404. if ($methodSynthesizers === null) {
  405. f();
  406. return;
  407. }
  408. $methodSynthesizers.push(f);
  409. };
  410. var $synthesizeMethods = function() {
  411. $methodSynthesizers.forEach(function(f) { f(); });
  412. $methodSynthesizers = null;
  413. };
  414. var $newType = function(size, kind, string, name, pkg, constructor) {
  415. var typ;
  416. switch(kind) {
  417. case $kindBool:
  418. case $kindInt:
  419. case $kindInt8:
  420. case $kindInt16:
  421. case $kindInt32:
  422. case $kindUint:
  423. case $kindUint8:
  424. case $kindUint16:
  425. case $kindUint32:
  426. case $kindUintptr:
  427. case $kindString:
  428. case $kindUnsafePointer:
  429. typ = function(v) { this.$val = v; };
  430. typ.prototype.$key = function() { return string + "$" + this.$val; };
  431. break;
  432. case $kindFloat32:
  433. case $kindFloat64:
  434. typ = function(v) { this.$val = v; };
  435. typ.prototype.$key = function() { return string + "$" + $floatKey(this.$val); };
  436. break;
  437. case $kindInt64:
  438. typ = function(high, low) {
  439. this.$high = (high + Math.floor(Math.ceil(low) / 4294967296)) >> 0;
  440. this.$low = low >>> 0;
  441. this.$val = this;
  442. };
  443. typ.prototype.$key = function() { return string + "$" + this.$high + "$" + this.$low; };
  444. break;
  445. case $kindUint64:
  446. typ = function(high, low) {
  447. this.$high = (high + Math.floor(Math.ceil(low) / 4294967296)) >>> 0;
  448. this.$low = low >>> 0;
  449. this.$val = this;
  450. };
  451. typ.prototype.$key = function() { return string + "$" + this.$high + "$" + this.$low; };
  452. break;
  453. case $kindComplex64:
  454. typ = function(real, imag) {
  455. this.$real = $fround(real);
  456. this.$imag = $fround(imag);
  457. this.$val = this;
  458. };
  459. typ.prototype.$key = function() { return string + "$" + this.$real + "$" + this.$imag; };
  460. break;
  461. case $kindComplex128:
  462. typ = function(real, imag) {
  463. this.$real = real;
  464. this.$imag = imag;
  465. this.$val = this;
  466. };
  467. typ.prototype.$key = function() { return string + "$" + this.$real + "$" + this.$imag; };
  468. break;
  469. case $kindArray:
  470. typ = function(v) { this.$val = v; };
  471. typ.ptr = $newType(4, $kindPtr, "*" + string, "", "", function(array) {
  472. this.$get = function() { return array; };
  473. this.$set = function(v) { $copy(this, v, typ); };
  474. this.$val = array;
  475. });
  476. typ.init = function(elem, len) {
  477. typ.elem = elem;
  478. typ.len = len;
  479. typ.comparable = elem.comparable;
  480. typ.prototype.$key = function() {
  481. return string + "$" + Array.prototype.join.call($mapArray(this.$val, function(e) {
  482. var key = e.$key ? e.$key() : String(e);
  483. return key.replace(/\\/g, "\\\\").replace(/\$/g, "\\$");
  484. }), "$");
  485. };
  486. typ.ptr.init(typ);
  487. Object.defineProperty(typ.ptr.nil, "nilCheck", { get: $throwNilPointerError });
  488. };
  489. break;
  490. case $kindChan:
  491. typ = function(capacity) {
  492. this.$val = this;
  493. this.$capacity = capacity;
  494. this.$buffer = [];
  495. this.$sendQueue = [];
  496. this.$recvQueue = [];
  497. this.$closed = false;
  498. };
  499. typ.prototype.$key = function() {
  500. if (this.$id === undefined) {
  501. $idCounter++;
  502. this.$id = $idCounter;
  503. }
  504. return String(this.$id);
  505. };
  506. typ.init = function(elem, sendOnly, recvOnly) {
  507. typ.elem = elem;
  508. typ.sendOnly = sendOnly;
  509. typ.recvOnly = recvOnly;
  510. typ.nil = new typ(0);
  511. typ.nil.$sendQueue = typ.nil.$recvQueue = { length: 0, push: function() {}, shift: function() { return undefined; }, indexOf: function() { return -1; } };
  512. };
  513. break;
  514. case $kindFunc:
  515. typ = function(v) { this.$val = v; };
  516. typ.init = function(params, results, variadic) {
  517. typ.params = params;
  518. typ.results = results;
  519. typ.variadic = variadic;
  520. typ.comparable = false;
  521. };
  522. break;
  523. case $kindInterface:
  524. typ = { implementedBy: {}, missingMethodFor: {} };
  525. typ.init = function(methods) {
  526. typ.methods = methods;
  527. methods.forEach(function(m) {
  528. $ifaceNil[m.prop] = $throwNilPointerError;
  529. });
  530. };
  531. break;
  532. case $kindMap:
  533. typ = function(v) { this.$val = v; };
  534. typ.init = function(key, elem) {
  535. typ.key = key;
  536. typ.elem = elem;
  537. typ.comparable = false;
  538. };
  539. break;
  540. case $kindPtr:
  541. typ = constructor || function(getter, setter, target) {
  542. this.$get = getter;
  543. this.$set = setter;
  544. this.$target = target;
  545. this.$val = this;
  546. };
  547. typ.prototype.$key = function() {
  548. if (this.$id === undefined) {
  549. $idCounter++;
  550. this.$id = $idCounter;
  551. }
  552. return String(this.$id);
  553. };
  554. typ.init = function(elem) {
  555. typ.elem = elem;
  556. typ.nil = new typ($throwNilPointerError, $throwNilPointerError);
  557. };
  558. break;
  559. case $kindSlice:
  560. typ = function(array) {
  561. if (array.constructor !== typ.nativeArray) {
  562. array = new typ.nativeArray(array);
  563. }
  564. this.$array = array;
  565. this.$offset = 0;
  566. this.$length = array.length;
  567. this.$capacity = array.length;
  568. this.$val = this;
  569. };
  570. typ.init = function(elem) {
  571. typ.elem = elem;
  572. typ.comparable = false;
  573. typ.nativeArray = $nativeArray(elem.kind);
  574. typ.nil = new typ([]);
  575. };
  576. break;
  577. case $kindStruct:
  578. typ = function(v) { this.$val = v; };
  579. typ.ptr = $newType(4, $kindPtr, "*" + string, "", "", constructor);
  580. typ.ptr.elem = typ;
  581. typ.ptr.prototype.$get = function() { return this; };
  582. typ.ptr.prototype.$set = function(v) { $copy(this, v, typ); };
  583. typ.init = function(fields) {
  584. typ.fields = fields;
  585. fields.forEach(function(f) {
  586. if (!f.typ.comparable) {
  587. typ.comparable = false;
  588. }
  589. });
  590. typ.prototype.$key = function() {
  591. var val = this.$val;
  592. return string + "$" + $mapArray(fields, function(f) {
  593. var e = val[f.prop];
  594. var key = e.$key ? e.$key() : String(e);
  595. return key.replace(/\\/g, "\\\\").replace(/\$/g, "\\$");
  596. }).join("$");
  597. };
  598. /* nil value */
  599. var properties = {};
  600. fields.forEach(function(f) {
  601. properties[f.prop] = { get: $throwNilPointerError, set: $throwNilPointerError };
  602. });
  603. typ.ptr.nil = Object.create(constructor.prototype, properties);
  604. typ.ptr.nil.$val = typ.ptr.nil;
  605. /* methods for embedded fields */
  606. $addMethodSynthesizer(function() {
  607. var synthesizeMethod = function(target, m, f) {
  608. if (target.prototype[m.prop] !== undefined) { return; }
  609. target.prototype[m.prop] = function() {
  610. var v = this.$val[f.prop];
  611. if (f.typ === $jsObjectPtr) {
  612. v = new $jsObjectPtr(v);
  613. }
  614. if (v.$val === undefined) {
  615. v = new f.typ(v);
  616. }
  617. return v[m.prop].apply(v, arguments);
  618. };
  619. };
  620. fields.forEach(function(f) {
  621. if (f.name === "") {
  622. $methodSet(f.typ).forEach(function(m) {
  623. synthesizeMethod(typ, m, f);
  624. synthesizeMethod(typ.ptr, m, f);
  625. });
  626. $methodSet($ptrType(f.typ)).forEach(function(m) {
  627. synthesizeMethod(typ.ptr, m, f);
  628. });
  629. }
  630. });
  631. });
  632. };
  633. break;
  634. default:
  635. $panic(new $String("invalid kind: " + kind));
  636. }
  637. switch (kind) {
  638. case $kindBool:
  639. case $kindMap:
  640. typ.zero = function() { return false; };
  641. break;
  642. case $kindInt:
  643. case $kindInt8:
  644. case $kindInt16:
  645. case $kindInt32:
  646. case $kindUint:
  647. case $kindUint8 :
  648. case $kindUint16:
  649. case $kindUint32:
  650. case $kindUintptr:
  651. case $kindUnsafePointer:
  652. case $kindFloat32:
  653. case $kindFloat64:
  654. typ.zero = function() { return 0; };
  655. break;
  656. case $kindString:
  657. typ.zero = function() { return ""; };
  658. break;
  659. case $kindInt64:
  660. case $kindUint64:
  661. case $kindComplex64:
  662. case $kindComplex128:
  663. var zero = new typ(0, 0);
  664. typ.zero = function() { return zero; };
  665. break;
  666. case $kindChan:
  667. case $kindPtr:
  668. case $kindSlice:
  669. typ.zero = function() { return typ.nil; };
  670. break;
  671. case $kindFunc:
  672. typ.zero = function() { return $throwNilPointerError; };
  673. break;
  674. case $kindInterface:
  675. typ.zero = function() { return $ifaceNil; };
  676. break;
  677. case $kindArray:
  678. typ.zero = function() {
  679. var arrayClass = $nativeArray(typ.elem.kind);
  680. if (arrayClass !== Array) {
  681. return new arrayClass(typ.len);
  682. }
  683. var array = new Array(typ.len);
  684. for (var i = 0; i < typ.len; i++) {
  685. array[i] = typ.elem.zero();
  686. }
  687. return array;
  688. };
  689. break;
  690. case $kindStruct:
  691. typ.zero = function() { return new typ.ptr(); };
  692. break;
  693. default:
  694. $panic(new $String("invalid kind: " + kind));
  695. }
  696. typ.size = size;
  697. typ.kind = kind;
  698. typ.string = string;
  699. typ.typeName = name;
  700. typ.pkg = pkg;
  701. typ.methods = [];
  702. typ.methodSetCache = null;
  703. typ.comparable = true;
  704. return typ;
  705. };
  706. var $methodSet = function(typ) {
  707. if (typ.methodSetCache !== null) {
  708. return typ.methodSetCache;
  709. }
  710. var base = {};
  711. var isPtr = (typ.kind === $kindPtr);
  712. if (isPtr && typ.elem.kind === $kindInterface) {
  713. typ.methodSetCache = [];
  714. return [];
  715. }
  716. var current = [{typ: isPtr ? typ.elem : typ, indirect: isPtr}];
  717. var seen = {};
  718. while (current.length > 0) {
  719. var next = [];
  720. var mset = [];
  721. current.forEach(function(e) {
  722. if (seen[e.typ.string]) {
  723. return;
  724. }
  725. seen[e.typ.string] = true;
  726. if(e.typ.typeName !== "") {
  727. mset = mset.concat(e.typ.methods);
  728. if (e.indirect) {
  729. mset = mset.concat($ptrType(e.typ).methods);
  730. }
  731. }
  732. switch (e.typ.kind) {
  733. case $kindStruct:
  734. e.typ.fields.forEach(function(f) {
  735. if (f.name === "") {
  736. var fTyp = f.typ;
  737. var fIsPtr = (fTyp.kind === $kindPtr);
  738. next.push({typ: fIsPtr ? fTyp.elem : fTyp, indirect: e.indirect || fIsPtr});
  739. }
  740. });
  741. break;
  742. case $kindInterface:
  743. mset = mset.concat(e.typ.methods);
  744. break;
  745. }
  746. });
  747. mset.forEach(function(m) {
  748. if (base[m.name] === undefined) {
  749. base[m.name] = m;
  750. }
  751. });
  752. current = next;
  753. }
  754. typ.methodSetCache = [];
  755. Object.keys(base).sort().forEach(function(name) {
  756. typ.methodSetCache.push(base[name]);
  757. });
  758. return typ.methodSetCache;
  759. };
  760. var $Bool = $newType( 1, $kindBool, "bool", "bool", "", null);
  761. var $Int = $newType( 4, $kindInt, "int", "int", "", null);
  762. var $Int8 = $newType( 1, $kindInt8, "int8", "int8", "", null);
  763. var $Int16 = $newType( 2, $kindInt16, "int16", "int16", "", null);
  764. var $Int32 = $newType( 4, $kindInt32, "int32", "int32", "", null);
  765. var $Int64 = $newType( 8, $kindInt64, "int64", "int64", "", null);
  766. var $Uint = $newType( 4, $kindUint, "uint", "uint", "", null);
  767. var $Uint8 = $newType( 1, $kindUint8, "uint8", "uint8", "", null);
  768. var $Uint16 = $newType( 2, $kindUint16, "uint16", "uint16", "", null);
  769. var $Uint32 = $newType( 4, $kindUint32, "uint32", "uint32", "", null);
  770. var $Uint64 = $newType( 8, $kindUint64, "uint64", "uint64", "", null);
  771. var $Uintptr = $newType( 4, $kindUintptr, "uintptr", "uintptr", "", null);
  772. var $Float32 = $newType( 4, $kindFloat32, "float32", "float32", "", null);
  773. var $Float64 = $newType( 8, $kindFloat64, "float64", "float64", "", null);
  774. var $Complex64 = $newType( 8, $kindComplex64, "complex64", "complex64", "", null);
  775. var $Complex128 = $newType(16, $kindComplex128, "complex128", "complex128", "", null);
  776. var $String = $newType( 8, $kindString, "string", "string", "", null);
  777. var $UnsafePointer = $newType( 4, $kindUnsafePointer, "unsafe.Pointer", "Pointer", "", null);
  778. var $nativeArray = function(elemKind) {
  779. switch (elemKind) {
  780. case $kindInt:
  781. return Int32Array;
  782. case $kindInt8:
  783. return Int8Array;
  784. case $kindInt16:
  785. return Int16Array;
  786. case $kindInt32:
  787. return Int32Array;
  788. case $kindUint:
  789. return Uint32Array;
  790. case $kindUint8:
  791. return Uint8Array;
  792. case $kindUint16:
  793. return Uint16Array;
  794. case $kindUint32:
  795. return Uint32Array;
  796. case $kindUintptr:
  797. return Uint32Array;
  798. case $kindFloat32:
  799. return Float32Array;
  800. case $kindFloat64:
  801. return Float64Array;
  802. default:
  803. return Array;
  804. }
  805. };
  806. var $toNativeArray = function(elemKind, array) {
  807. var nativeArray = $nativeArray(elemKind);
  808. if (nativeArray === Array) {
  809. return array;
  810. }
  811. return new nativeArray(array);
  812. };
  813. var $arrayTypes = {};
  814. var $arrayType = function(elem, len) {
  815. var string = "[" + len + "]" + elem.string;
  816. var typ = $arrayTypes[string];
  817. if (typ === undefined) {
  818. typ = $newType(12, $kindArray, string, "", "", null);
  819. $arrayTypes[string] = typ;
  820. typ.init(elem, len);
  821. }
  822. return typ;
  823. };
  824. var $chanType = function(elem, sendOnly, recvOnly) {
  825. var string = (recvOnly ? "<-" : "") + "chan" + (sendOnly ? "<- " : " ") + elem.string;
  826. var field = sendOnly ? "SendChan" : (recvOnly ? "RecvChan" : "Chan");
  827. var typ = elem[field];
  828. if (typ === undefined) {
  829. typ = $newType(4, $kindChan, string, "", "", null);
  830. elem[field] = typ;
  831. typ.init(elem, sendOnly, recvOnly);
  832. }
  833. return typ;
  834. };
  835. var $funcTypes = {};
  836. var $funcType = function(params, results, variadic) {
  837. var paramTypes = $mapArray(params, function(p) { return p.string; });
  838. if (variadic) {
  839. paramTypes[paramTypes.length - 1] = "..." + paramTypes[paramTypes.length - 1].substr(2);
  840. }
  841. var string = "func(" + paramTypes.join(", ") + ")";
  842. if (results.length === 1) {
  843. string += " " + results[0].string;
  844. } else if (results.length > 1) {
  845. string += " (" + $mapArray(results, function(r) { return r.string; }).join(", ") + ")";
  846. }
  847. var typ = $funcTypes[string];
  848. if (typ === undefined) {
  849. typ = $newType(4, $kindFunc, string, "", "", null);
  850. $funcTypes[string] = typ;
  851. typ.init(params, results, variadic);
  852. }
  853. return typ;
  854. };
  855. var $interfaceTypes = {};
  856. var $interfaceType = function(methods) {
  857. var string = "interface {}";
  858. if (methods.length !== 0) {
  859. string = "interface { " + $mapArray(methods, function(m) {
  860. return (m.pkg !== "" ? m.pkg + "." : "") + m.name + m.typ.string.substr(4);
  861. }).join("; ") + " }";
  862. }
  863. var typ = $interfaceTypes[string];
  864. if (typ === undefined) {
  865. typ = $newType(8, $kindInterface, string, "", "", null);
  866. $interfaceTypes[string] = typ;
  867. typ.init(methods);
  868. }
  869. return typ;
  870. };
  871. var $emptyInterface = $interfaceType([]);
  872. var $ifaceNil = { $key: function() { return "nil"; } };
  873. var $error = $newType(8, $kindInterface, "error", "error", "", null);
  874. $error.init([{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}]);
  875. var $Map = function() {};
  876. (function() {
  877. var names = Object.getOwnPropertyNames(Object.prototype);
  878. for (var i = 0; i < names.length; i++) {
  879. $Map.prototype[names[i]] = undefined;
  880. }
  881. })();
  882. var $mapTypes = {};
  883. var $mapType = function(key, elem) {
  884. var string = "map[" + key.string + "]" + elem.string;
  885. var typ = $mapTypes[string];
  886. if (typ === undefined) {
  887. typ = $newType(4, $kindMap, string, "", "", null);
  888. $mapTypes[string] = typ;
  889. typ.init(key, elem);
  890. }
  891. return typ;
  892. };
  893. var $ptrType = function(elem) {
  894. var typ = elem.ptr;
  895. if (typ === undefined) {
  896. typ = $newType(4, $kindPtr, "*" + elem.string, "", "", null);
  897. elem.ptr = typ;
  898. typ.init(elem);
  899. }
  900. return typ;
  901. };
  902. var $newDataPointer = function(data, constructor) {
  903. if (constructor.elem.kind === $kindStruct) {
  904. return data;
  905. }
  906. return new constructor(function() { return data; }, function(v) { data = v; });
  907. };
  908. var $indexPtr = function(array, index, constructor) {
  909. array.$ptr = array.$ptr || {};
  910. return array.$ptr[index] || (array.$ptr[index] = new constructor(function() { return array[index]; }, function(v) { array[index] = v; }));
  911. };
  912. var $sliceType = function(elem) {
  913. var typ = elem.Slice;
  914. if (typ === undefined) {
  915. typ = $newType(12, $kindSlice, "[]" + elem.string, "", "", null);
  916. elem.Slice = typ;
  917. typ.init(elem);
  918. }
  919. return typ;
  920. };
  921. var $makeSlice = function(typ, length, capacity) {
  922. capacity = capacity || length;
  923. var array = new typ.nativeArray(capacity);
  924. if (typ.nativeArray === Array) {
  925. for (var i = 0; i < capacity; i++) {
  926. array[i] = typ.elem.zero();
  927. }
  928. }
  929. var slice = new typ(array);
  930. slice.$length = length;
  931. return slice;
  932. };
  933. var $structTypes = {};
  934. var $structType = function(fields) {
  935. var string = "struct { " + $mapArray(fields, function(f) {
  936. return f.name + " " + f.typ.string + (f.tag !== "" ? (" \"" + f.tag.replace(/\\/g, "\\\\").replace(/"/g, "\\\"") + "\"") : "");
  937. }).join("; ") + " }";
  938. if (fields.length === 0) {
  939. string = "struct {}";
  940. }
  941. var typ = $structTypes[string];
  942. if (typ === undefined) {
  943. typ = $newType(0, $kindStruct, string, "", "", function() {
  944. this.$val = this;
  945. for (var i = 0; i < fields.length; i++) {
  946. var f = fields[i];
  947. var arg = arguments[i];
  948. this[f.prop] = arg !== undefined ? arg : f.typ.zero();
  949. }
  950. });
  951. $structTypes[string] = typ;
  952. typ.init(fields);
  953. }
  954. return typ;
  955. };
  956. var $assertType = function(value, type, returnTuple) {
  957. var isInterface = (type.kind === $kindInterface), ok, missingMethod = "";
  958. if (value === $ifaceNil) {
  959. ok = false;
  960. } else if (!isInterface) {
  961. ok = value.constructor === type;
  962. } else {
  963. var valueTypeString = value.constructor.string;
  964. ok = type.implementedBy[valueTypeString];
  965. if (ok === undefined) {
  966. ok = true;
  967. var valueMethodSet = $methodSet(value.constructor);
  968. var interfaceMethods = type.methods;
  969. for (var i = 0; i < interfaceMethods.length; i++) {
  970. var tm = interfaceMethods[i];
  971. var found = false;
  972. for (var j = 0; j < valueMethodSet.length; j++) {
  973. var vm = valueMethodSet[j];
  974. if (vm.name === tm.name && vm.pkg === tm.pkg && vm.typ === tm.typ) {
  975. found = true;
  976. break;
  977. }
  978. }
  979. if (!found) {
  980. ok = false;
  981. type.missingMethodFor[valueTypeString] = tm.name;
  982. break;
  983. }
  984. }
  985. type.implementedBy[valueTypeString] = ok;
  986. }
  987. if (!ok) {
  988. missingMethod = type.missingMethodFor[valueTypeString];
  989. }
  990. }
  991. if (!ok) {
  992. if (returnTuple) {
  993. return [type.zero(), false];
  994. }
  995. $panic(new $packages["runtime"].TypeAssertionError.ptr("", (value === $ifaceNil ? "" : value.constructor.string), type.string, missingMethod));
  996. }
  997. if (!isInterface) {
  998. value = value.$val;
  999. }
  1000. if (type === $jsObjectPtr) {
  1001. value = value.object;
  1002. }
  1003. return returnTuple ? [value, true] : value;
  1004. };
  1005. var $floatKey = function(f) {
  1006. if (f !== f) {
  1007. $idCounter++;
  1008. return "NaN$" + $idCounter;
  1009. }
  1010. return String(f);
  1011. };
  1012. var $flatten64 = function(x) {
  1013. return x.$high * 4294967296 + x.$low;
  1014. };
  1015. var $shiftLeft64 = function(x, y) {
  1016. if (y === 0) {
  1017. return x;
  1018. }
  1019. if (y < 32) {
  1020. return new x.constructor(x.$high << y | x.$low >>> (32 - y), (x.$low << y) >>> 0);
  1021. }
  1022. if (y < 64) {
  1023. return new x.constructor(x.$low << (y - 32), 0);
  1024. }
  1025. return new x.constructor(0, 0);
  1026. };
  1027. var $shiftRightInt64 = function(x, y) {
  1028. if (y === 0) {
  1029. return x;
  1030. }
  1031. if (y < 32) {
  1032. return new x.constructor(x.$high >> y, (x.$low >>> y | x.$high << (32 - y)) >>> 0);
  1033. }
  1034. if (y < 64) {
  1035. return new x.constructor(x.$high >> 31, (x.$high >> (y - 32)) >>> 0);
  1036. }
  1037. if (x.$high < 0) {
  1038. return new x.constructor(-1, 4294967295);
  1039. }
  1040. return new x.constructor(0, 0);
  1041. };
  1042. var $shiftRightUint64 = function(x, y) {
  1043. if (y === 0) {
  1044. return x;
  1045. }
  1046. if (y < 32) {
  1047. return new x.constructor(x.$high >>> y, (x.$low >>> y | x.$high << (32 - y)) >>> 0);
  1048. }
  1049. if (y < 64) {
  1050. return new x.constructor(0, x.$high >>> (y - 32));
  1051. }
  1052. return new x.constructor(0, 0);
  1053. };
  1054. var $mul64 = function(x, y) {
  1055. var high = 0, low = 0;
  1056. if ((y.$low & 1) !== 0) {
  1057. high = x.$high;
  1058. low = x.$low;
  1059. }
  1060. for (var i = 1; i < 32; i++) {
  1061. if ((y.$low & 1<<i) !== 0) {
  1062. high += x.$high << i | x.$low >>> (32 - i);
  1063. low += (x.$low << i) >>> 0;
  1064. }
  1065. }
  1066. for (var i = 0; i < 32; i++) {
  1067. if ((y.$high & 1<<i) !== 0) {
  1068. high += x.$low << i;
  1069. }
  1070. }
  1071. return new x.constructor(high, low);
  1072. };
  1073. var $div64 = function(x, y, returnRemainder) {
  1074. if (y.$high === 0 && y.$low === 0) {
  1075. $throwRuntimeError("integer divide by zero");
  1076. }
  1077. var s = 1;
  1078. var rs = 1;
  1079. var xHigh = x.$high;
  1080. var xLow = x.$low;
  1081. if (xHigh < 0) {
  1082. s = -1;
  1083. rs = -1;
  1084. xHigh = -xHigh;
  1085. if (xLow !== 0) {
  1086. xHigh--;
  1087. xLow = 4294967296 - xLow;
  1088. }
  1089. }
  1090. var yHigh = y.$high;
  1091. var yLow = y.$low;
  1092. if (y.$high < 0) {
  1093. s *= -1;
  1094. yHigh = -yHigh;
  1095. if (yLow !== 0) {
  1096. yHigh--;
  1097. yLow = 4294967296 - yLow;
  1098. }
  1099. }
  1100. var high = 0, low = 0, n = 0;
  1101. while (yHigh < 2147483648 && ((xHigh > yHigh) || (xHigh === yHigh && xLow > yLow))) {
  1102. yHigh = (yHigh << 1 | yLow >>> 31) >>> 0;
  1103. yLow = (yLow << 1) >>> 0;
  1104. n++;
  1105. }
  1106. for (var i = 0; i <= n; i++) {
  1107. high = high << 1 | low >>> 31;
  1108. low = (low << 1) >>> 0;
  1109. if ((xHigh > yHigh) || (xHigh === yHigh && xLow >= yLow)) {
  1110. xHigh = xHigh - yHigh;
  1111. xLow = xLow - yLow;
  1112. if (xLow < 0) {
  1113. xHigh--;
  1114. xLow += 4294967296;
  1115. }
  1116. low++;
  1117. if (low === 4294967296) {
  1118. high++;
  1119. low = 0;
  1120. }
  1121. }
  1122. yLow = (yLow >>> 1 | yHigh << (32 - 1)) >>> 0;
  1123. yHigh = yHigh >>> 1;
  1124. }
  1125. if (returnRemainder) {
  1126. return new x.constructor(xHigh * rs, xLow * rs);
  1127. }
  1128. return new x.constructor(high * s, low * s);
  1129. };
  1130. var $divComplex = function(n, d) {
  1131. var ninf = n.$real === 1/0 || n.$real === -1/0 || n.$imag === 1/0 || n.$imag === -1/0;
  1132. var dinf = d.$real === 1/0 || d.$real === -1/0 || d.$imag === 1/0 || d.$imag === -1/0;
  1133. var nnan = !ninf && (n.$real !== n.$real || n.$imag !== n.$imag);
  1134. var dnan = !dinf && (d.$real !== d.$real || d.$imag !== d.$imag);
  1135. if(nnan || dnan) {
  1136. return new n.constructor(0/0, 0/0);
  1137. }
  1138. if (ninf && !dinf) {
  1139. return new n.constructor(1/0, 1/0);
  1140. }
  1141. if (!ninf && dinf) {
  1142. return new n.constructor(0, 0);
  1143. }
  1144. if (d.$real === 0 && d.$imag === 0) {
  1145. if (n.$real === 0 && n.$imag === 0) {
  1146. return new n.constructor(0/0, 0/0);
  1147. }
  1148. return new n.constructor(1/0, 1/0);
  1149. }
  1150. var a = Math.abs(d.$real);
  1151. var b = Math.abs(d.$imag);
  1152. if (a <= b) {
  1153. var ratio = d.$real / d.$imag;
  1154. var denom = d.$real * ratio + d.$imag;
  1155. return new n.constructor((n.$real * ratio + n.$imag) / denom, (n.$imag * ratio - n.$real) / denom);
  1156. }
  1157. var ratio = d.$imag / d.$real;
  1158. var denom = d.$imag * ratio + d.$real;
  1159. return new n.constructor((n.$imag * ratio + n.$real) / denom, (n.$imag - n.$real * ratio) / denom);
  1160. };
  1161. var $stackDepthOffset = 0;
  1162. var $getStackDepth = function() {
  1163. var err = new Error();
  1164. if (err.stack === undefined) {
  1165. return undefined;
  1166. }
  1167. return $stackDepthOffset + err.stack.split("\n").length;
  1168. };
  1169. var $panicStackDepth = null, $panicValue;
  1170. var $callDeferred = function(deferred, jsErr, fromPanic) {
  1171. if (!fromPanic && deferred !== null && deferred.index >= $curGoroutine.deferStack.length) {
  1172. throw jsErr;
  1173. }
  1174. if (jsErr !== null) {
  1175. var newErr = null;
  1176. try {
  1177. $curGoroutine.deferStack.push(deferred);
  1178. $panic(new $jsErrorPtr(jsErr));
  1179. } catch (err) {
  1180. newErr = err;
  1181. }
  1182. $curGoroutine.deferStack.pop();
  1183. $callDeferred(deferred, newErr);
  1184. return;
  1185. }
  1186. if ($curGoroutine.asleep) {
  1187. return;
  1188. }
  1189. $stackDepthOffset--;
  1190. var outerPanicStackDepth = $panicStackDepth;
  1191. var outerPanicValue = $panicValue;
  1192. var localPanicValue = $curGoroutine.panicStack.pop();
  1193. if (localPanicValue !== undefined) {
  1194. $panicStackDepth = $getStackDepth();
  1195. $panicValue = localPanicValue;
  1196. }
  1197. try {
  1198. while (true) {
  1199. if (deferred === null) {
  1200. deferred = $curGoroutine.deferStack[$curGoroutine.deferStack.length - 1];
  1201. if (deferred === undefined) {
  1202. if (localPanicValue.Object instanceof Error) {
  1203. throw localPanicValue.Object;
  1204. }
  1205. var msg;
  1206. if (localPanicValue.constructor === $String) {
  1207. msg = localPanicValue.$val;
  1208. } else if (localPanicValue.Error !== undefined) {
  1209. msg = localPanicValue.Error();
  1210. } else if (localPanicValue.String !== undefined) {
  1211. msg = localPanicValue.String();
  1212. } else {
  1213. msg = localPanicValue;
  1214. }
  1215. throw new Error(msg);
  1216. }
  1217. }
  1218. var call = deferred.pop();
  1219. if (call === undefined) {
  1220. $curGoroutine.deferStack.pop();
  1221. if (localPanicValue !== undefined) {
  1222. deferred = null;
  1223. continue;
  1224. }
  1225. return;
  1226. }
  1227. var r = call[0].apply(call[2], call[1]);
  1228. if (r && r.$blk !== undefined) {
  1229. deferred.push([r.$blk, [], r]);
  1230. if (fromPanic) {
  1231. throw null;
  1232. }
  1233. return;
  1234. }
  1235. if (localPanicValue !== undefined && $panicStackDepth === null) {
  1236. throw null; /* error was recovered */
  1237. }
  1238. }
  1239. } finally {
  1240. if (localPanicValue !== undefined) {
  1241. if ($panicStackDepth !== null) {
  1242. $curGoroutine.panicStack.push(localPanicValue);
  1243. }
  1244. $panicStackDepth = outerPanicStackDepth;
  1245. $panicValue = outerPanicValue;
  1246. }
  1247. $stackDepthOffset++;
  1248. }
  1249. };
  1250. var $panic = function(value) {
  1251. $curGoroutine.panicStack.push(value);
  1252. $callDeferred(null, null, true);
  1253. };
  1254. var $recover = function() {
  1255. if ($panicStackDepth === null || ($panicStackDepth !== undefined && $panicStackDepth !== $getStackDepth() - 2)) {
  1256. return $ifaceNil;
  1257. }
  1258. $panicStackDepth = null;
  1259. return $panicValue;
  1260. };
  1261. var $throw = function(err) { throw err; };
  1262. var $dummyGoroutine = { asleep: false, exit: false, deferStack: [], panicStack: [] };
  1263. var $curGoroutine = $dummyGoroutine, $totalGoroutines = 0, $awakeGoroutines = 0, $checkForDeadlock = true;
  1264. var $go = function(fun, args, direct) {
  1265. $totalGoroutines++;
  1266. $awakeGoroutines++;
  1267. var $goroutine = function() {
  1268. var rescheduled = false;
  1269. try {
  1270. $curGoroutine = $goroutine;
  1271. var r = fun.apply(undefined, args);
  1272. if (r && r.$blk !== undefined) {
  1273. fun = function() { r.$blk(); };
  1274. args = [];
  1275. rescheduled = true;
  1276. return;
  1277. }
  1278. $goroutine.exit = true;
  1279. } catch (err) {
  1280. $goroutine.exit = true;
  1281. throw err;
  1282. } finally {
  1283. $curGoroutine = $dummyGoroutine;
  1284. if ($goroutine.exit && !rescheduled) { /* also set by runtime.Goexit() */
  1285. $totalGoroutines--;
  1286. $goroutine.asleep = true;
  1287. }
  1288. if ($goroutine.asleep && !rescheduled) {
  1289. $awakeGoroutines--;
  1290. if ($awakeGoroutines === 0 && $totalGoroutines !== 0 && $checkForDeadlock) {
  1291. console.error("fatal error: all goroutines are asleep - deadlock!");
  1292. }
  1293. }
  1294. }
  1295. };
  1296. $goroutine.asleep = false;
  1297. $goroutine.exit = false;
  1298. $goroutine.deferStack = [];
  1299. $goroutine.panicStack = [];
  1300. $schedule($goroutine, direct);
  1301. };
  1302. var $scheduled = [], $schedulerLoopActive = false;
  1303. var $schedule = function(goroutine, direct) {
  1304. if (goroutine.asleep) {
  1305. goroutine.asleep = false;
  1306. $awakeGoroutines++;
  1307. }
  1308. if (direct) {
  1309. goroutine();
  1310. return;
  1311. }
  1312. $scheduled.push(goroutine);
  1313. if (!$schedulerLoopActive) {
  1314. $schedulerLoopActive = true;
  1315. setTimeout(function() {
  1316. while (true) {
  1317. var r = $scheduled.shift();
  1318. if (r === undefined) {
  1319. $schedulerLoopActive = false;
  1320. break;
  1321. }
  1322. r();
  1323. };
  1324. }, 0);
  1325. }
  1326. };
  1327. var $block = function() {
  1328. if ($curGoroutine === $dummyGoroutine) {
  1329. $throwRuntimeError("cannot block in JavaScript callback, fix by wrapping code in goroutine");
  1330. }
  1331. $curGoroutine.asleep = true;
  1332. };
  1333. var $send = function(chan, value) {
  1334. if (chan.$closed) {
  1335. $throwRuntimeError("send on closed channel");
  1336. }
  1337. var queuedRecv = chan.$recvQueue.shift();
  1338. if (queuedRecv !== undefined) {
  1339. queuedRecv([value, true]);
  1340. return;
  1341. }
  1342. if (chan.$buffer.length < chan.$capacity) {
  1343. chan.$buffer.push(value);
  1344. return;
  1345. }
  1346. var thisGoroutine = $curGoroutine;
  1347. chan.$sendQueue.push(function() {
  1348. $schedule(thisGoroutine);
  1349. return value;
  1350. });
  1351. $block();
  1352. return {
  1353. $blk: function() {
  1354. if (chan.$closed) {
  1355. $throwRuntimeError("send on closed channel");
  1356. }
  1357. },
  1358. };
  1359. };
  1360. var $recv = function(chan) {
  1361. var queuedSend = chan.$sendQueue.shift();
  1362. if (queuedSend !== undefined) {
  1363. chan.$buffer.push(queuedSend());
  1364. }
  1365. var bufferedValue = chan.$buffer.shift();
  1366. if (bufferedValue !== undefined) {
  1367. return [bufferedValue, true];
  1368. }
  1369. if (chan.$closed) {
  1370. return [chan.constructor.elem.zero(), false];
  1371. }
  1372. var thisGoroutine = $curGoroutine;
  1373. var f = { $blk: function() { return this.value; } };
  1374. var queueEntry = function(v) {
  1375. f.value = v;
  1376. $schedule(thisGoroutine);
  1377. };
  1378. chan.$recvQueue.push(queueEntry);
  1379. $block();
  1380. return f;
  1381. };
  1382. var $close = function(chan) {
  1383. if (chan.$closed) {
  1384. $throwRuntimeError("close of closed channel");
  1385. }
  1386. chan.$closed = true;
  1387. while (true) {
  1388. var queuedSend = chan.$sendQueue.shift();
  1389. if (queuedSend === undefined) {
  1390. break;
  1391. }
  1392. queuedSend(); /* will panic because of closed channel */
  1393. }
  1394. while (true) {
  1395. var queuedRecv = chan.$recvQueue.shift();
  1396. if (queuedRecv === undefined) {
  1397. break;
  1398. }
  1399. queuedRecv([chan.constructor.elem.zero(), false]);
  1400. }
  1401. };
  1402. var $select = function(comms) {
  1403. var ready = [];
  1404. var selection = -1;
  1405. for (var i = 0; i < comms.length; i++) {
  1406. var comm = comms[i];
  1407. var chan = comm[0];
  1408. switch (comm.length) {
  1409. case 0: /* default */
  1410. selection = i;
  1411. break;
  1412. case 1: /* recv */
  1413. if (chan.$sendQueue.length !== 0 || chan.$buffer.length !== 0 || chan.$closed) {
  1414. ready.push(i);
  1415. }
  1416. break;
  1417. case 2: /* send */
  1418. if (chan.$closed) {
  1419. $throwRuntimeError("send on closed channel");
  1420. }
  1421. if (chan.$recvQueue.length !== 0 || chan.$buffer.length < chan.$capacity) {
  1422. ready.push(i);
  1423. }
  1424. break;
  1425. }
  1426. }
  1427. if (ready.length !== 0) {
  1428. selection = ready[Math.floor(Math.random() * ready.length)];
  1429. }
  1430. if (selection !== -1) {
  1431. var comm = comms[selection];
  1432. switch (comm.length) {
  1433. case 0: /* default */
  1434. return [selection];
  1435. case 1: /* recv */
  1436. return [selection, $recv(comm[0])];
  1437. case 2: /* send */
  1438. $send(comm[0], comm[1]);
  1439. return [selection];
  1440. }
  1441. }
  1442. var entries = [];
  1443. var thisGoroutine = $curGoroutine;
  1444. var f = { $blk: function() { return this.selection; } };
  1445. var removeFromQueues = function() {
  1446. for (var i = 0; i < entries.length; i++) {
  1447. var entry = entries[i];
  1448. var queue = entry[0];
  1449. var index = queue.indexOf(entry[1]);
  1450. if (index !== -1) {
  1451. queue.splice(index, 1);
  1452. }
  1453. }
  1454. };
  1455. for (var i = 0; i < comms.length; i++) {
  1456. (function(i) {
  1457. var comm = comms[i];
  1458. switch (comm.length) {
  1459. case 1: /* recv */
  1460. var queueEntry = function(value) {
  1461. f.selection = [i, value];
  1462. removeFromQueues();
  1463. $schedule(thisGoroutine);
  1464. };
  1465. entries.push([comm[0].$recvQueue, queueEntry]);
  1466. comm[0].$recvQueue.push(queueEntry);
  1467. break;
  1468. case 2: /* send */
  1469. var queueEntry = function() {
  1470. if (comm[0].$closed) {
  1471. $throwRuntimeError("send on closed channel");
  1472. }
  1473. f.selection = [i];
  1474. removeFromQueues();
  1475. $schedule(thisGoroutine);
  1476. return comm[1];
  1477. };
  1478. entries.push([comm[0].$sendQueue, queueEntry]);
  1479. comm[0].$sendQueue.push(queueEntry);
  1480. break;
  1481. }
  1482. })(i);
  1483. }
  1484. $block();
  1485. return f;
  1486. };
  1487. var $jsObjectPtr, $jsErrorPtr;
  1488. var $needsExternalization = function(t) {
  1489. switch (t.kind) {
  1490. case $kindBool:
  1491. case $kindInt:
  1492. case $kindInt8:
  1493. case $kindInt16:
  1494. case $kindInt32:
  1495. case $kindUint:
  1496. case $kindUint8:
  1497. case $kindUint16:
  1498. case $kindUint32:
  1499. case $kindUintptr:
  1500. case $kindFloat32:
  1501. case $kindFloat64:
  1502. return false;
  1503. default:
  1504. return t !== $jsObjectPtr;
  1505. }
  1506. };
  1507. var $externalize = function(v, t) {
  1508. if (t === $jsObjectPtr) {
  1509. return v;
  1510. }
  1511. switch (t.kind) {
  1512. case $kindBool:
  1513. case $kindInt:
  1514. case $kindInt8:
  1515. case $kindInt16:
  1516. case $kindInt32:
  1517. case $kindUint:
  1518. case $kindUint8:
  1519. case $kindUint16:
  1520. case $kindUint32:
  1521. case $kindUintptr:
  1522. case $kindFloat32:
  1523. case $kindFloat64:
  1524. return v;
  1525. case $kindInt64:
  1526. case $kindUint64:
  1527. return $flatten64(v);
  1528. case $kindArray:
  1529. if ($needsExternalization(t.elem)) {
  1530. return $mapArray(v, function(e) { return $externalize(e, t.elem); });
  1531. }
  1532. return v;
  1533. case $kindFunc:
  1534. if (v === $throwNilPointerError) {
  1535. return null;
  1536. }
  1537. if (v.$externalizeWrapper === undefined) {
  1538. $checkForDeadlock = false;
  1539. v.$externalizeWrapper = function() {
  1540. var args = [];
  1541. for (var i = 0; i < t.params.length; i++) {
  1542. if (t.variadic && i === t.params.length - 1) {
  1543. var vt = t.params[i].elem, varargs = [];
  1544. for (var j = i; j < arguments.length; j++) {
  1545. varargs.push($internalize(arguments[j], vt));
  1546. }
  1547. args.push(new (t.params[i])(varargs));
  1548. break;
  1549. }
  1550. args.push($internalize(arguments[i], t.params[i]));
  1551. }
  1552. var result = v.apply(this, args);
  1553. switch (t.results.length) {
  1554. case 0:
  1555. return;
  1556. case 1:
  1557. return $externalize(result, t.results[0]);
  1558. default:
  1559. for (var i = 0; i < t.results.length; i++) {
  1560. result[i] = $externalize(result[i], t.results[i]);
  1561. }
  1562. return result;
  1563. }
  1564. };
  1565. }
  1566. return v.$externalizeWrapper;
  1567. case $kindInterface:
  1568. if (v === $ifaceNil) {
  1569. return null;
  1570. }
  1571. if (v.constructor === $jsObjectPtr) {
  1572. return v.$val.object;
  1573. }
  1574. return $externalize(v.$val, v.constructor);
  1575. case $kindMap:
  1576. var m = {};
  1577. var keys = $keys(v);
  1578. for (var i = 0; i < keys.length; i++) {
  1579. var entry = v[keys[i]];
  1580. m[$externalize(entry.k, t.key)] = $externalize(entry.v, t.elem);
  1581. }
  1582. return m;
  1583. case $kindPtr:
  1584. if (v === t.nil) {
  1585. return null;
  1586. }
  1587. return $externalize(v.$get(), t.elem);
  1588. case $kindSlice:
  1589. if ($needsExternalization(t.elem)) {
  1590. return $mapArray($sliceToArray(v), function(e) { return $externalize(e, t.elem); });
  1591. }
  1592. return $sliceToArray(v);
  1593. case $kindString:
  1594. if (v.search(/^[\x00-\x7F]*$/) !== -1) {
  1595. return v;
  1596. }
  1597. var s = "", r;
  1598. for (var i = 0; i < v.length; i += r[1]) {
  1599. r = $decodeRune(v, i);
  1600. s += String.fromCharCode(r[0]);
  1601. }
  1602. return s;
  1603. case $kindStruct:
  1604. var timePkg = $packages["time"];
  1605. if (timePkg && v.constructor === timePkg.Time.ptr) {
  1606. var milli = $div64(v.UnixNano(), new $Int64(0, 1000000));
  1607. return new Date($flatten64(milli));
  1608. }
  1609. var noJsObject = {};
  1610. var searchJsObject = function(v, t) {
  1611. if (t === $jsObjectPtr) {
  1612. return v;
  1613. }
  1614. switch (t.kind) {
  1615. case $kindPtr:
  1616. if (v === t.nil) {
  1617. return noJsObject;
  1618. }
  1619. return searchJsObject(v.$get(), t.elem);
  1620. case $kindStruct:
  1621. var f = t.fields[0];
  1622. return searchJsObject(v[f.prop], f.typ);
  1623. case $kindInterface:
  1624. return searchJsObject(v.$val, v.constructor);
  1625. default:
  1626. return noJsObject;
  1627. }
  1628. };
  1629. var o = searchJsObject(v, t);
  1630. if (o !== noJsObject) {
  1631. return o;
  1632. }
  1633. o = {};
  1634. for (var i = 0; i < t.fields.length; i++) {
  1635. var f = t.fields[i];
  1636. if (f.pkg !== "") { /* not exported */
  1637. continue;
  1638. }
  1639. o[f.name] = $externalize(v[f.prop], f.typ);
  1640. }
  1641. return o;
  1642. }
  1643. $panic(new $String("cannot externalize " + t.string));
  1644. };
  1645. var $internalize = function(v, t, recv) {
  1646. if (t === $jsObjectPtr) {
  1647. return v;
  1648. }
  1649. if (t === $jsObjectPtr.elem) {
  1650. $panic(new $String("cannot internalize js.Object, use *js.Object instead"));
  1651. }
  1652. switch (t.kind) {
  1653. case $kindBool:
  1654. return !!v;
  1655. case $kindInt:
  1656. return parseInt(v);
  1657. case $kindInt8:
  1658. return parseInt(v) << 24 >> 24;
  1659. case $kindInt16:
  1660. return parseInt(v) << 16 >> 16;
  1661. case $kindInt32:
  1662. return parseInt(v) >> 0;
  1663. case $kindUint:
  1664. return parseInt(v);
  1665. case $kindUint8:
  1666. return parseInt(v) << 24 >>> 24;
  1667. case $kindUint16:
  1668. return parseInt(v) << 16 >>> 16;
  1669. case $kindUint32:
  1670. case $kindUintptr:
  1671. return parseInt(v) >>> 0;
  1672. case $kindInt64:
  1673. case $kindUint64:
  1674. return new t(0, v);
  1675. case $kindFloat32:
  1676. case $kindFloat64:
  1677. return parseFloat(v);
  1678. case $kindArray:
  1679. if (v.length !== t.len) {
  1680. $throwRuntimeError("got array with wrong size from JavaScript native");
  1681. }
  1682. return $mapArray(v, function(e) { return $internalize(e, t.elem); });
  1683. case $kindFunc:
  1684. return function() {
  1685. var args = [];
  1686. for (var i = 0; i < t.params.length; i++) {
  1687. if (t.variadic && i === t.params.length - 1) {
  1688. var vt = t.params[i].elem, varargs = arguments[i];
  1689. for (var j = 0; j < varargs.$length; j++) {
  1690. args.push($externalize(varargs.$array[varargs.$offset + j], vt));
  1691. }
  1692. break;
  1693. }
  1694. args.push($externalize(arguments[i], t.params[i]));
  1695. }
  1696. var result = v.apply(recv, args);
  1697. switch (t.results.length) {
  1698. case 0:
  1699. return;
  1700. case 1:
  1701. return $internalize(result, t.results[0]);
  1702. default:
  1703. for (var i = 0; i < t.results.length; i++) {
  1704. result[i] = $internalize(result[i], t.results[i]);
  1705. }
  1706. return result;
  1707. }
  1708. };
  1709. case $kindInterface:
  1710. if (t.methods.length !== 0) {
  1711. $panic(new $String("cannot internalize " + t.string));
  1712. }
  1713. if (v === null) {
  1714. return $ifaceNil;
  1715. }
  1716. switch (v.constructor) {
  1717. case Int8Array:
  1718. return new ($sliceType($Int8))(v);
  1719. case Int16Array:
  1720. return new ($sliceType($Int16))(v);
  1721. case Int32Array:
  1722. return new ($sliceType($Int))(v);
  1723. case Uint8Array:
  1724. return new ($sliceType($Uint8))(v);
  1725. case Uint16Array:
  1726. return new ($sliceType($Uint16))(v);
  1727. case Uint32Array:
  1728. return new ($sliceType($Uint))(v);
  1729. case Float32Array:
  1730. return new ($sliceType($Float32))(v);
  1731. case Float64Array:
  1732. return new ($sliceType($Float64))(v);
  1733. case Array:
  1734. return $internalize(v, $sliceType($emptyInterface));
  1735. case Boolean:
  1736. return new $Bool(!!v);
  1737. case Date:
  1738. var timePkg = $packages["time"];
  1739. if (timePkg) {
  1740. return new timePkg.Time(timePkg.Unix(new $Int64(0, 0), new $Int64(0, v.getTime() * 1000000)));
  1741. }
  1742. case Function:
  1743. var funcType = $funcType([$sliceType($emptyInterface)], [$jsObjectPtr], true);
  1744. return new funcType($internalize(v, funcType));
  1745. case Number:
  1746. return new $Float64(parseFloat(v));
  1747. case String:
  1748. return new $String($internalize(v, $String));
  1749. default:
  1750. if ($global.Node && v instanceof $global.Node) {
  1751. return new $jsObjectPtr(v);
  1752. }
  1753. var mapType = $mapType($String, $emptyInterface);
  1754. return new mapType($internalize(v, mapType));
  1755. }
  1756. case $kindMap:
  1757. var m = new $Map();
  1758. var keys = $keys(v);
  1759. for (var i = 0; i < keys.length; i++) {
  1760. var key = $internalize(keys[i], t.key);
  1761. m[key.$key ? key.$key() : key] = { k: key, v: $internalize(v[keys[i]], t.elem) };
  1762. }
  1763. return m;
  1764. case $kindPtr:
  1765. if (t.elem.kind === $kindStruct) {
  1766. return $internalize(v, t.elem);
  1767. }
  1768. case $kindSlice:
  1769. return new t($mapArray(v, function(e) { return $internalize(e, t.elem); }));
  1770. case $kindString:
  1771. v = String(v);
  1772. if (v.search(/^[\x00-\x7F]*$/) !== -1) {
  1773. return v;
  1774. }
  1775. var s = "";
  1776. for (var i = 0; i < v.length; i++) {
  1777. s += $encodeRune(v.charCodeAt(i));
  1778. }
  1779. return s;
  1780. case $kindStruct:
  1781. var noJsObject = {};
  1782. var searchJsObject = function(t) {
  1783. if (t === $jsObjectPtr) {
  1784. return v;
  1785. }
  1786. if (t === $jsObjectPtr.elem) {
  1787. $panic(new $String("cannot internalize js.Object, use *js.Object instead"));
  1788. }
  1789. switch (t.kind) {
  1790. case $kindPtr:
  1791. return searchJsObject(t.elem);
  1792. case $kindStruct:
  1793. var f = t.fields[0];
  1794. var o = searchJsObject(f.typ);
  1795. if (o !== noJsObject) {
  1796. var n = new t.ptr();
  1797. n[f.prop] = o;
  1798. return n;
  1799. }
  1800. return noJsObject;
  1801. default:
  1802. return noJsObject;
  1803. }
  1804. };
  1805. var o = searchJsObject(t);
  1806. if (o !== noJsObject) {
  1807. return o;
  1808. }
  1809. }
  1810. $panic(new $String("cannot internalize " + t.string));
  1811. };
  1812. $packages["github.com/gopherjs/gopherjs/js"] = (function() {
  1813. var $pkg = {}, $init, Object, Error, sliceType, ptrType, ptrType$1, init;
  1814. Object = $pkg.Object = $newType(0, $kindStruct, "js.Object", "Object", "github.com/gopherjs/gopherjs/js", function(object_) {
  1815. this.$val = this;
  1816. if (arguments.length === 0) {
  1817. this.object = null;
  1818. return;
  1819. }
  1820. this.object = object_;
  1821. });
  1822. Error = $pkg.Error = $newType(0, $kindStruct, "js.Error", "Error", "github.com/gopherjs/gopherjs/js", function(Object_) {
  1823. this.$val = this;
  1824. if (arguments.length === 0) {
  1825. this.Object = null;
  1826. return;
  1827. }
  1828. this.Object = Object_;
  1829. });
  1830. sliceType = $sliceType($emptyInterface);
  1831. ptrType = $ptrType(Object);
  1832. ptrType$1 = $ptrType(Error);
  1833. Object.ptr.prototype.Get = function(key) {
  1834. var $ptr, key, o;
  1835. o = this;
  1836. return o.object[$externalize(key, $String)];
  1837. };
  1838. Object.prototype.Get = function(key) { return this.$val.Get(key); };
  1839. Object.ptr.prototype.Set = function(key, value) {
  1840. var $ptr, key, o, value;
  1841. o = this;
  1842. o.object[$externalize(key, $String)] = $externalize(value, $emptyInterface);
  1843. };
  1844. Object.prototype.Set = function(key, value) { return this.$val.Set(key, value); };
  1845. Object.ptr.prototype.Delete = function(key) {
  1846. var $ptr, key, o;
  1847. o = this;
  1848. delete o.object[$externalize(key, $String)];
  1849. };
  1850. Object.prototype.Delete = function(key) { return this.$val.Delete(key); };
  1851. Object.ptr.prototype.Length = function() {
  1852. var $ptr, o;
  1853. o = this;
  1854. return $parseInt(o.object.length);
  1855. };
  1856. Object.prototype.Length = function() { return this.$val.Length(); };
  1857. Object.ptr.prototype.Index = function(i) {
  1858. var $ptr, i, o;
  1859. o = this;
  1860. return o.object[i];
  1861. };
  1862. Object.prototype.Index = function(i) { return this.$val.Index(i); };
  1863. Object.ptr.prototype.SetIndex = function(i, value) {
  1864. var $ptr, i, o, value;
  1865. o = this;
  1866. o.object[i] = $externalize(value, $emptyInterface);
  1867. };
  1868. Object.prototype.SetIndex = function(i, value) { return this.$val.SetIndex(i, value); };
  1869. Object.ptr.prototype.Call = function(name, args) {
  1870. var $ptr, args, name, o, obj;
  1871. o = this;
  1872. return (obj = o.object, obj[$externalize(name, $String)].apply(obj, $externalize(args, sliceType)));
  1873. };
  1874. Object.prototype.Call = function(name, args) { return this.$val.Call(name, args); };
  1875. Object.ptr.prototype.Invoke = function(args) {
  1876. var $ptr, args, o;
  1877. o = this;
  1878. return o.object.apply(undefined, $externalize(args, sliceType));
  1879. };
  1880. Object.prototype.Invoke = function(args) { return this.$val.Invoke(args); };
  1881. Object.ptr.prototype.New = function(args) {
  1882. var $ptr, args, o;
  1883. o = this;
  1884. return new ($global.Function.prototype.bind.apply(o.object, [undefined].concat($externalize(args, sliceType))));
  1885. };
  1886. Object.prototype.New = function(args) { return this.$val.New(args); };
  1887. Object.ptr.prototype.Bool = function() {
  1888. var $ptr, o;
  1889. o = this;
  1890. return !!(o.object);
  1891. };
  1892. Object.prototype.Bool = function() { return this.$val.Bool(); };
  1893. Object.ptr.prototype.String = function() {
  1894. var $ptr, o;
  1895. o = this;
  1896. return $internalize(o.object, $String);
  1897. };
  1898. Object.prototype.String = function() { return this.$val.String(); };
  1899. Object.ptr.prototype.Int = function() {
  1900. var $ptr, o;
  1901. o = this;
  1902. return $parseInt(o.object) >> 0;
  1903. };
  1904. Object.prototype.Int = function() { return this.$val.Int(); };
  1905. Object.ptr.prototype.Int64 = function() {
  1906. var $ptr, o;
  1907. o = this;
  1908. return $internalize(o.object, $Int64);
  1909. };
  1910. Object.prototype.Int64 = function() { return this.$val.Int64(); };
  1911. Object.ptr.prototype.Uint64 = function() {
  1912. var $ptr, o;
  1913. o = this;
  1914. return $internalize(o.object, $Uint64);
  1915. };
  1916. Object.prototype.Uint64 = function() { return this.$val.Uint64(); };
  1917. Object.ptr.prototype.Float = function() {
  1918. var $ptr, o;
  1919. o = this;
  1920. return $parseFloat(o.object);
  1921. };
  1922. Object.prototype.Float = function() { return this.$val.Float(); };
  1923. Object.ptr.prototype.Interface = function() {
  1924. var $ptr, o;
  1925. o = this;
  1926. return $internalize(o.object, $emptyInterface);
  1927. };
  1928. Object.prototype.Interface = function() { return this.$val.Interface(); };
  1929. Object.ptr.prototype.Unsafe = function() {
  1930. var $ptr, o;
  1931. o = this;
  1932. return o.object;
  1933. };
  1934. Object.prototype.Unsafe = function() { return this.$val.Unsafe(); };
  1935. Error.ptr.prototype.Error = function() {
  1936. var $ptr, err;
  1937. err = this;
  1938. return "JavaScript error: " + $internalize(err.Object.message, $String);
  1939. };
  1940. Error.prototype.Error = function() { return this.$val.Error(); };
  1941. Error.ptr.prototype.Stack = function() {
  1942. var $ptr, err;
  1943. err = this;
  1944. return $internalize(err.Object.stack, $String);
  1945. };
  1946. Error.prototype.Stack = function() { return this.$val.Stack(); };
  1947. init = function() {
  1948. var $ptr, e;
  1949. e = new Error.ptr(null);
  1950. };
  1951. ptrType.methods = [{prop: "Get", name: "Get", pkg: "", typ: $funcType([$String], [ptrType], false)}, {prop: "Set", name: "Set", pkg: "", typ: $funcType([$String, $emptyInterface], [], false)}, {prop: "Delete", name: "Delete", pkg: "", typ: $funcType([$String], [], false)}, {prop: "Length", name: "Length", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Index", name: "Index", pkg: "", typ: $funcType([$Int], [ptrType], false)}, {prop: "SetIndex", name: "SetIndex", pkg: "", typ: $funcType([$Int, $emptyInterface], [], false)}, {prop: "Call", name: "Call", pkg: "", typ: $funcType([$String, sliceType], [ptrType], true)}, {prop: "Invoke", name: "Invoke", pkg: "", typ: $funcType([sliceType], [ptrType], true)}, {prop: "New", name: "New", pkg: "", typ: $funcType([sliceType], [ptrType], true)}, {prop: "Bool", name: "Bool", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Int", name: "Int", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Int64", name: "Int64", pkg: "", typ: $funcType([], [$Int64], false)}, {prop: "Uint64", name: "Uint64", pkg: "", typ: $funcType([], [$Uint64], false)}, {prop: "Float", name: "Float", pkg: "", typ: $funcType([], [$Float64], false)}, {prop: "Interface", name: "Interface", pkg: "", typ: $funcType([], [$emptyInterface], false)}, {prop: "Unsafe", name: "Unsafe", pkg: "", typ: $funcType([], [$Uintptr], false)}];
  1952. ptrType$1.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Stack", name: "Stack", pkg: "", typ: $funcType([], [$String], false)}];
  1953. Object.init([{prop: "object", name: "object", pkg: "github.com/gopherjs/gopherjs/js", typ: ptrType, tag: ""}]);
  1954. Error.init([{prop: "Object", name: "", pkg: "", typ: ptrType, tag: ""}]);
  1955. $init = function() {
  1956. $pkg.$init = function() {};
  1957. /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  1958. init();
  1959. /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
  1960. };
  1961. $pkg.$init = $init;
  1962. return $pkg;
  1963. })();
  1964. $packages["runtime"] = (function() {
  1965. var $pkg = {}, $init, js, TypeAssertionError, errorString, ptrType$5, init, Caller, GOMAXPROCS, SetFinalizer, Stack, LockOSThread, UnlockOSThread;
  1966. js = $packages["github.com/gopherjs/gopherjs/js"];
  1967. TypeAssertionError = $pkg.TypeAssertionError = $newType(0, $kindStruct, "runtime.TypeAssertionError", "TypeAssertionError", "runtime", function(interfaceString_, concreteString_, assertedString_, missingMethod_) {
  1968. this.$val = this;
  1969. if (arguments.length === 0) {
  1970. this.interfaceString = "";
  1971. this.concreteString = "";
  1972. this.assertedString = "";
  1973. this.missingMethod = "";
  1974. return;
  1975. }
  1976. this.interfaceString = interfaceString_;
  1977. this.concreteString = concreteString_;
  1978. this.assertedString = assertedString_;
  1979. this.missingMethod = missingMethod_;
  1980. });
  1981. errorString = $pkg.errorString = $newType(8, $kindString, "runtime.errorString", "errorString", "runtime", null);
  1982. ptrType$5 = $ptrType(TypeAssertionError);
  1983. init = function() {
  1984. var $ptr, e, jsPkg;
  1985. jsPkg = $packages[$externalize("github.com/gopherjs/gopherjs/js", $String)];
  1986. $jsObjectPtr = jsPkg.Object.ptr;
  1987. $jsErrorPtr = jsPkg.Error.ptr;
  1988. $throwRuntimeError = (function(msg) {
  1989. var $ptr, msg;
  1990. $panic(new errorString(msg));
  1991. });
  1992. e = $ifaceNil;
  1993. e = new TypeAssertionError.ptr("", "", "", "");
  1994. };
  1995. Caller = function(skip) {
  1996. var $ptr, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, file, info, line, ok, parts, pc, skip;
  1997. pc = 0;
  1998. file = "";
  1999. line = 0;
  2000. ok = false;
  2001. info = new ($global.Error)().stack.split($externalize("\n", $String))[(skip + 2 >> 0)];
  2002. if (info === undefined) {
  2003. _tmp = 0; _tmp$1 = ""; _tmp$2 = 0; _tmp$3 = false; pc = _tmp; file = _tmp$1; line = _tmp$2; ok = _tmp$3;
  2004. return [pc, file, line, ok];
  2005. }
  2006. parts = info.substring(($parseInt(info.indexOf($externalize("(", $String))) >> 0) + 1 >> 0, $parseInt(info.indexOf($externalize(")", $String))) >> 0).split($externalize(":", $String));
  2007. _tmp$4 = 0; _tmp$5 = $internalize(parts[0], $String); _tmp$6 = $parseInt(parts[1]) >> 0; _tmp$7 = true; pc = _tmp$4; file = _tmp$5; line = _tmp$6; ok = _tmp$7;
  2008. return [pc, file, line, ok];
  2009. };
  2010. $pkg.Caller = Caller;
  2011. GOMAXPROCS = function(n) {
  2012. var $ptr, n;
  2013. return 1;
  2014. };
  2015. $pkg.GOMAXPROCS = GOMAXPROCS;
  2016. SetFinalizer = function(x, f) {
  2017. var $ptr, f, x;
  2018. };
  2019. $pkg.SetFinalizer = SetFinalizer;
  2020. Stack = function(buf, all) {
  2021. var $ptr, all, buf, s;
  2022. s = new ($global.Error)().stack;
  2023. if (s === undefined) {
  2024. return 0;
  2025. }
  2026. return $copyString(buf, $internalize(s.substr(($parseInt(s.indexOf($externalize("\n", $String))) >> 0) + 1 >> 0), $String));
  2027. };
  2028. $pkg.Stack = Stack;
  2029. LockOSThread = function() {
  2030. var $ptr;
  2031. };
  2032. $pkg.LockOSThread = LockOSThread;
  2033. UnlockOSThread = function() {
  2034. var $ptr;
  2035. };
  2036. $pkg.UnlockOSThread = UnlockOSThread;
  2037. TypeAssertionError.ptr.prototype.RuntimeError = function() {
  2038. var $ptr;
  2039. };
  2040. TypeAssertionError.prototype.RuntimeError = function() { return this.$val.RuntimeError(); };
  2041. TypeAssertionError.ptr.prototype.Error = function() {
  2042. var $ptr, e, inter;
  2043. e = this;
  2044. inter = e.interfaceString;
  2045. if (inter === "") {
  2046. inter = "interface";
  2047. }
  2048. if (e.concreteString === "") {
  2049. return "interface conversion: " + inter + " is nil, not " + e.assertedString;
  2050. }
  2051. if (e.missingMethod === "") {
  2052. return "interface conversion: " + inter + " is " + e.concreteString + ", not " + e.assertedString;
  2053. }
  2054. return "interface conversion: " + e.concreteString + " is not " + e.assertedString + ": missing method " + e.missingMethod;
  2055. };
  2056. TypeAssertionError.prototype.Error = function() { return this.$val.Error(); };
  2057. errorString.prototype.RuntimeError = function() {
  2058. var $ptr, e;
  2059. e = this.$val;
  2060. };
  2061. $ptrType(errorString).prototype.RuntimeError = function() { return new errorString(this.$get()).RuntimeError(); };
  2062. errorString.prototype.Error = function() {
  2063. var $ptr, e;
  2064. e = this.$val;
  2065. return "runtime error: " + e;
  2066. };
  2067. $ptrType(errorString).prototype.Error = function() { return new errorString(this.$get()).Error(); };
  2068. ptrType$5.methods = [{prop: "RuntimeError", name: "RuntimeError", pkg: "", typ: $funcType([], [], false)}, {prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}];
  2069. errorString.methods = [{prop: "RuntimeError", name: "RuntimeError", pkg: "", typ: $funcType([], [], false)}, {prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}];
  2070. TypeAssertionError.init([{prop: "interfaceString", name: "interfaceString", pkg: "runtime", typ: $String, tag: ""}, {prop: "concreteString", name: "concreteString", pkg: "runtime", typ: $String, tag: ""}, {prop: "assertedString", name: "assertedString", pkg: "runtime", typ: $String, tag: ""}, {prop: "missingMethod", name: "missingMethod", pkg: "runtime", typ: $String, tag: ""}]);
  2071. $init = function() {
  2072. $pkg.$init = function() {};
  2073. /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  2074. $r = js.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  2075. init();
  2076. /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
  2077. };
  2078. $pkg.$init = $init;
  2079. return $pkg;
  2080. })();
  2081. $packages["errors"] = (function() {
  2082. var $pkg = {}, $init, errorString, ptrType, New;
  2083. errorString = $pkg.errorString = $newType(0, $kindStruct, "errors.errorString", "errorString", "errors", function(s_) {
  2084. this.$val = this;
  2085. if (arguments.length === 0) {
  2086. this.s = "";
  2087. return;
  2088. }
  2089. this.s = s_;
  2090. });
  2091. ptrType = $ptrType(errorString);
  2092. New = function(text) {
  2093. var $ptr, text;
  2094. return new errorString.ptr(text);
  2095. };
  2096. $pkg.New = New;
  2097. errorString.ptr.prototype.Error = function() {
  2098. var $ptr, e;
  2099. e = this;
  2100. return e.s;
  2101. };
  2102. errorString.prototype.Error = function() { return this.$val.Error(); };
  2103. ptrType.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}];
  2104. errorString.init([{prop: "s", name: "s", pkg: "errors", typ: $String, tag: ""}]);
  2105. $init = function() {
  2106. $pkg.$init = function() {};
  2107. /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  2108. /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
  2109. };
  2110. $pkg.$init = $init;
  2111. return $pkg;
  2112. })();
  2113. $packages["sync/atomic"] = (function() {
  2114. var $pkg = {}, $init, js, CompareAndSwapInt32, CompareAndSwapUint64, AddInt32, LoadInt32, LoadUint32, LoadUint64, StoreInt32, StoreUint32;
  2115. js = $packages["github.com/gopherjs/gopherjs/js"];
  2116. CompareAndSwapInt32 = function(addr, old, new$1) {
  2117. var $ptr, addr, new$1, old;
  2118. if (addr.$get() === old) {
  2119. addr.$set(new$1);
  2120. return true;
  2121. }
  2122. return false;
  2123. };
  2124. $pkg.CompareAndSwapInt32 = CompareAndSwapInt32;
  2125. CompareAndSwapUint64 = function(addr, old, new$1) {
  2126. var $ptr, addr, new$1, old, x;
  2127. if ((x = addr.$get(), (x.$high === old.$high && x.$low === old.$low))) {
  2128. addr.$set(new$1);
  2129. return true;
  2130. }
  2131. return false;
  2132. };
  2133. $pkg.CompareAndSwapUint64 = CompareAndSwapUint64;
  2134. AddInt32 = function(addr, delta) {
  2135. var $ptr, addr, delta, new$1;
  2136. new$1 = addr.$get() + delta >> 0;
  2137. addr.$set(new$1);
  2138. return new$1;
  2139. };
  2140. $pkg.AddInt32 = AddInt32;
  2141. LoadInt32 = function(addr) {
  2142. var $ptr, addr;
  2143. return addr.$get();
  2144. };
  2145. $pkg.LoadInt32 = LoadInt32;
  2146. LoadUint32 = function(addr) {
  2147. var $ptr, addr;
  2148. return addr.$get();
  2149. };
  2150. $pkg.LoadUint32 = LoadUint32;
  2151. LoadUint64 = function(addr) {
  2152. var $ptr, addr;
  2153. return addr.$get();
  2154. };
  2155. $pkg.LoadUint64 = LoadUint64;
  2156. StoreInt32 = function(addr, val) {
  2157. var $ptr, addr, val;
  2158. addr.$set(val);
  2159. };
  2160. $pkg.StoreInt32 = StoreInt32;
  2161. StoreUint32 = function(addr, val) {
  2162. var $ptr, addr, val;
  2163. addr.$set(val);
  2164. };
  2165. $pkg.StoreUint32 = StoreUint32;
  2166. $init = function() {
  2167. $pkg.$init = function() {};
  2168. /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  2169. $r = js.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  2170. /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
  2171. };
  2172. $pkg.$init = $init;
  2173. return $pkg;
  2174. })();
  2175. $packages["sync"] = (function() {
  2176. var $pkg = {}, $init, runtime, atomic, Cond, Pool, copyChecker, Mutex, Locker, Once, poolLocal, syncSema, RWMutex, rlocker, WaitGroup, ptrType, sliceType, chanType, sliceType$1, ptrType$1, ptrType$2, ptrType$4, ptrType$6, sliceType$3, ptrType$7, ptrType$8, ptrType$9, funcType, ptrType$10, funcType$1, ptrType$11, arrayType, ptrType$12, semWaiters, allPools, runtime_Syncsemcheck, runtime_registerPoolCleanup, runtime_Semacquire, runtime_Semrelease, poolCleanup, init, indexLocal, raceEnable, init$1;
  2177. runtime = $packages["runtime"];
  2178. atomic = $packages["sync/atomic"];
  2179. Cond = $pkg.Cond = $newType(0, $kindStruct, "sync.Cond", "Cond", "sync", function(L_, sema_, waiters_, checker_, n_, ch_) {
  2180. this.$val = this;
  2181. if (arguments.length === 0) {
  2182. this.L = $ifaceNil;
  2183. this.sema = new syncSema.ptr();
  2184. this.waiters = 0;
  2185. this.checker = 0;
  2186. this.n = 0;
  2187. this.ch = chanType.nil;
  2188. return;
  2189. }
  2190. this.L = L_;
  2191. this.sema = sema_;
  2192. this.waiters = waiters_;
  2193. this.checker = checker_;
  2194. this.n = n_;
  2195. this.ch = ch_;
  2196. });
  2197. Pool = $pkg.Pool = $newType(0, $kindStruct, "sync.Pool", "Pool", "sync", function(local_, localSize_, store_, New_) {
  2198. this.$val = this;
  2199. if (arguments.length === 0) {
  2200. this.local = 0;
  2201. this.localSize = 0;
  2202. this.store = sliceType$3.nil;
  2203. this.New = $throwNilPointerError;
  2204. return;
  2205. }
  2206. this.local = local_;
  2207. this.localSize = localSize_;
  2208. this.store = store_;
  2209. this.New = New_;
  2210. });
  2211. copyChecker = $pkg.copyChecker = $newType(4, $kindUintptr, "sync.copyChecker", "copyChecker", "sync", null);
  2212. Mutex = $pkg.Mutex = $newType(0, $kindStruct, "sync.Mutex", "Mutex", "sync", function(state_, sema_) {
  2213. this.$val = this;
  2214. if (arguments.length === 0) {
  2215. this.state = 0;
  2216. this.sema = 0;
  2217. return;
  2218. }
  2219. this.state = state_;
  2220. this.sema = sema_;
  2221. });
  2222. Locker = $pkg.Locker = $newType(8, $kindInterface, "sync.Locker", "Locker", "sync", null);
  2223. Once = $pkg.Once = $newType(0, $kindStruct, "sync.Once", "Once", "sync", function(m_, done_) {
  2224. this.$val = this;
  2225. if (arguments.length === 0) {
  2226. this.m = new Mutex.ptr();
  2227. this.done = 0;
  2228. return;
  2229. }
  2230. this.m = m_;
  2231. this.done = done_;
  2232. });
  2233. poolLocal = $pkg.poolLocal = $newType(0, $kindStruct, "sync.poolLocal", "poolLocal", "sync", function(private$0_, shared_, Mutex_, pad_) {
  2234. this.$val = this;
  2235. if (arguments.length === 0) {
  2236. this.private$0 = $ifaceNil;
  2237. this.shared = sliceType$3.nil;
  2238. this.Mutex = new Mutex.ptr();
  2239. this.pad = arrayType.zero();
  2240. return;
  2241. }
  2242. this.private$0 = private$0_;
  2243. this.shared = shared_;
  2244. this.Mutex = Mutex_;
  2245. this.pad = pad_;
  2246. });
  2247. syncSema = $pkg.syncSema = $newType(0, $kindStruct, "sync.syncSema", "syncSema", "sync", function(lock_, head_, tail_) {
  2248. this.$val = this;
  2249. if (arguments.length === 0) {
  2250. this.lock = 0;
  2251. this.head = 0;
  2252. this.tail = 0;
  2253. return;
  2254. }
  2255. this.lock = lock_;
  2256. this.head = head_;
  2257. this.tail = tail_;
  2258. });
  2259. RWMutex = $pkg.RWMutex = $newType(0, $kindStruct, "sync.RWMutex", "RWMutex", "sync", function(w_, writerSem_, readerSem_, readerCount_, readerWait_) {
  2260. this.$val = this;
  2261. if (arguments.length === 0) {
  2262. this.w = new Mutex.ptr();
  2263. this.writerSem = 0;
  2264. this.readerSem = 0;
  2265. this.readerCount = 0;
  2266. this.readerWait = 0;
  2267. return;
  2268. }
  2269. this.w = w_;
  2270. this.writerSem = writerSem_;
  2271. this.readerSem = readerSem_;
  2272. this.readerCount = readerCount_;
  2273. this.readerWait = readerWait_;
  2274. });
  2275. rlocker = $pkg.rlocker = $newType(0, $kindStruct, "sync.rlocker", "rlocker", "sync", function(w_, writerSem_, readerSem_, readerCount_, readerWait_) {
  2276. this.$val = this;
  2277. if (arguments.length === 0) {
  2278. this.w = new Mutex.ptr();
  2279. this.writerSem = 0;
  2280. this.readerSem = 0;
  2281. this.readerCount = 0;
  2282. this.readerWait = 0;
  2283. return;
  2284. }
  2285. this.w = w_;
  2286. this.writerSem = writerSem_;
  2287. this.readerSem = readerSem_;
  2288. this.readerCount = readerCount_;
  2289. this.readerWait = readerWait_;
  2290. });
  2291. WaitGroup = $pkg.WaitGroup = $newType(0, $kindStruct, "sync.WaitGroup", "WaitGroup", "sync", function(m_, counter_, waiters_, sema_) {
  2292. this.$val = this;
  2293. if (arguments.length === 0) {
  2294. this.m = new Mutex.ptr();
  2295. this.counter = 0;
  2296. this.waiters = 0;
  2297. this.sema = ptrType$2.nil;
  2298. return;
  2299. }
  2300. this.m = m_;
  2301. this.counter = counter_;
  2302. this.waiters = waiters_;
  2303. this.sema = sema_;
  2304. });
  2305. ptrType = $ptrType(Pool);
  2306. sliceType = $sliceType(ptrType);
  2307. chanType = $chanType($Bool, false, false);
  2308. sliceType$1 = $sliceType(chanType);
  2309. ptrType$1 = $ptrType(copyChecker);
  2310. ptrType$2 = $ptrType($Uint32);
  2311. ptrType$4 = $ptrType($Int32);
  2312. ptrType$6 = $ptrType(poolLocal);
  2313. sliceType$3 = $sliceType($emptyInterface);
  2314. ptrType$7 = $ptrType(rlocker);
  2315. ptrType$8 = $ptrType(RWMutex);
  2316. ptrType$9 = $ptrType(Cond);
  2317. funcType = $funcType([], [$emptyInterface], false);
  2318. ptrType$10 = $ptrType(Mutex);
  2319. funcType$1 = $funcType([], [], false);
  2320. ptrType$11 = $ptrType(Once);
  2321. arrayType = $arrayType($Uint8, 128);
  2322. ptrType$12 = $ptrType(WaitGroup);
  2323. Cond.ptr.prototype.Wait = function() {
  2324. var $ptr, _r, c, $s, $r;
  2325. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; c = $f.c; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  2326. c = this;
  2327. c.n = c.n + (1) >> 0;
  2328. if (c.ch === chanType.nil) {
  2329. c.ch = new chanType(0);
  2330. }
  2331. $r = c.L.Unlock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  2332. _r = $recv(c.ch); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  2333. _r[0];
  2334. $r = c.L.Lock(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  2335. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Cond.ptr.prototype.Wait }; } $f.$ptr = $ptr; $f._r = _r; $f.c = c; $f.$s = $s; $f.$r = $r; return $f;
  2336. };
  2337. Cond.prototype.Wait = function() { return this.$val.Wait(); };
  2338. Cond.ptr.prototype.Signal = function() {
  2339. var $ptr, c, $s, $r;
  2340. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; c = $f.c; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  2341. c = this;
  2342. if (c.n === 0) {
  2343. return;
  2344. }
  2345. c.n = c.n - (1) >> 0;
  2346. $r = $send(c.ch, true); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  2347. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Cond.ptr.prototype.Signal }; } $f.$ptr = $ptr; $f.c = c; $f.$s = $s; $f.$r = $r; return $f;
  2348. };
  2349. Cond.prototype.Signal = function() { return this.$val.Signal(); };
  2350. Cond.ptr.prototype.Broadcast = function() {
  2351. var $ptr, c, i, n, $s, $r;
  2352. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; c = $f.c; i = $f.i; n = $f.n; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  2353. c = this;
  2354. n = c.n;
  2355. c.n = 0;
  2356. i = 0;
  2357. /* while (true) { */ case 1:
  2358. /* if (!(i < n)) { break; } */ if(!(i < n)) { $s = 2; continue; }
  2359. $r = $send(c.ch, true); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  2360. i = i + (1) >> 0;
  2361. /* } */ $s = 1; continue; case 2:
  2362. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Cond.ptr.prototype.Broadcast }; } $f.$ptr = $ptr; $f.c = c; $f.i = i; $f.n = n; $f.$s = $s; $f.$r = $r; return $f;
  2363. };
  2364. Cond.prototype.Broadcast = function() { return this.$val.Broadcast(); };
  2365. runtime_Syncsemcheck = function(size) {
  2366. var $ptr, size;
  2367. };
  2368. Pool.ptr.prototype.Get = function() {
  2369. var $ptr, _r, p, x, x$1, x$2, $s, $r;
  2370. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; p = $f.p; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  2371. p = this;
  2372. /* */ if (p.store.$length === 0) { $s = 1; continue; }
  2373. /* */ $s = 2; continue;
  2374. /* if (p.store.$length === 0) { */ case 1:
  2375. /* */ if (!(p.New === $throwNilPointerError)) { $s = 3; continue; }
  2376. /* */ $s = 4; continue;
  2377. /* if (!(p.New === $throwNilPointerError)) { */ case 3:
  2378. _r = p.New(); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  2379. return _r;
  2380. /* } */ case 4:
  2381. return $ifaceNil;
  2382. /* } */ case 2:
  2383. x$2 = (x = p.store, x$1 = p.store.$length - 1 >> 0, ((x$1 < 0 || x$1 >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + x$1]));
  2384. p.store = $subslice(p.store, 0, (p.store.$length - 1 >> 0));
  2385. return x$2;
  2386. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Pool.ptr.prototype.Get }; } $f.$ptr = $ptr; $f._r = _r; $f.p = p; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.$s = $s; $f.$r = $r; return $f;
  2387. };
  2388. Pool.prototype.Get = function() { return this.$val.Get(); };
  2389. Pool.ptr.prototype.Put = function(x) {
  2390. var $ptr, p, x;
  2391. p = this;
  2392. if ($interfaceIsEqual(x, $ifaceNil)) {
  2393. return;
  2394. }
  2395. p.store = $append(p.store, x);
  2396. };
  2397. Pool.prototype.Put = function(x) { return this.$val.Put(x); };
  2398. runtime_registerPoolCleanup = function(cleanup) {
  2399. var $ptr, cleanup;
  2400. };
  2401. runtime_Semacquire = function(s) {
  2402. var $ptr, _entry, _key, _r, ch, s, $s, $r;
  2403. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _entry = $f._entry; _key = $f._key; _r = $f._r; ch = $f.ch; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  2404. /* */ if (s.$get() === 0) { $s = 1; continue; }
  2405. /* */ $s = 2; continue;
  2406. /* if (s.$get() === 0) { */ case 1:
  2407. ch = new chanType(0);
  2408. _key = s; (semWaiters || $throwRuntimeError("assignment to entry in nil map"))[_key.$key()] = { k: _key, v: $append((_entry = semWaiters[s.$key()], _entry !== undefined ? _entry.v : sliceType$1.nil), ch) };
  2409. _r = $recv(ch); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  2410. _r[0];
  2411. /* } */ case 2:
  2412. s.$set(s.$get() - (1) >>> 0);
  2413. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: runtime_Semacquire }; } $f.$ptr = $ptr; $f._entry = _entry; $f._key = _key; $f._r = _r; $f.ch = ch; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
  2414. };
  2415. runtime_Semrelease = function(s) {
  2416. var $ptr, _entry, _key, ch, s, w, $s, $r;
  2417. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _entry = $f._entry; _key = $f._key; ch = $f.ch; s = $f.s; w = $f.w; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  2418. s.$set(s.$get() + (1) >>> 0);
  2419. w = (_entry = semWaiters[s.$key()], _entry !== undefined ? _entry.v : sliceType$1.nil);
  2420. if (w.$length === 0) {
  2421. return;
  2422. }
  2423. ch = (0 >= w.$length ? $throwRuntimeError("index out of range") : w.$array[w.$offset + 0]);
  2424. w = $subslice(w, 1);
  2425. _key = s; (semWaiters || $throwRuntimeError("assignment to entry in nil map"))[_key.$key()] = { k: _key, v: w };
  2426. if (w.$length === 0) {
  2427. delete semWaiters[s.$key()];
  2428. }
  2429. $r = $send(ch, true); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  2430. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: runtime_Semrelease }; } $f.$ptr = $ptr; $f._entry = _entry; $f._key = _key; $f.ch = ch; $f.s = s; $f.w = w; $f.$s = $s; $f.$r = $r; return $f;
  2431. };
  2432. Mutex.ptr.prototype.Lock = function() {
  2433. var $ptr, awoke, m, new$1, old, $s, $r;
  2434. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; awoke = $f.awoke; m = $f.m; new$1 = $f.new$1; old = $f.old; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  2435. m = this;
  2436. if (atomic.CompareAndSwapInt32((m.$ptr_state || (m.$ptr_state = new ptrType$4(function() { return this.$target.state; }, function($v) { this.$target.state = $v; }, m))), 0, 1)) {
  2437. return;
  2438. }
  2439. awoke = false;
  2440. /* while (true) { */ case 1:
  2441. old = m.state;
  2442. new$1 = old | 1;
  2443. if (!(((old & 1) === 0))) {
  2444. new$1 = old + 4 >> 0;
  2445. }
  2446. if (awoke) {
  2447. new$1 = (new$1 & ~(2)) >> 0;
  2448. }
  2449. /* */ if (atomic.CompareAndSwapInt32((m.$ptr_state || (m.$ptr_state = new ptrType$4(function() { return this.$target.state; }, function($v) { this.$target.state = $v; }, m))), old, new$1)) { $s = 3; continue; }
  2450. /* */ $s = 4; continue;
  2451. /* if (atomic.CompareAndSwapInt32((m.$ptr_state || (m.$ptr_state = new ptrType$4(function() { return this.$target.state; }, function($v) { this.$target.state = $v; }, m))), old, new$1)) { */ case 3:
  2452. if ((old & 1) === 0) {
  2453. /* break; */ $s = 2; continue;
  2454. }
  2455. $r = runtime_Semacquire((m.$ptr_sema || (m.$ptr_sema = new ptrType$2(function() { return this.$target.sema; }, function($v) { this.$target.sema = $v; }, m)))); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  2456. awoke = true;
  2457. /* } */ case 4:
  2458. /* } */ $s = 1; continue; case 2:
  2459. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Mutex.ptr.prototype.Lock }; } $f.$ptr = $ptr; $f.awoke = awoke; $f.m = m; $f.new$1 = new$1; $f.old = old; $f.$s = $s; $f.$r = $r; return $f;
  2460. };
  2461. Mutex.prototype.Lock = function() { return this.$val.Lock(); };
  2462. Mutex.ptr.prototype.Unlock = function() {
  2463. var $ptr, m, new$1, old, $s, $r;
  2464. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; m = $f.m; new$1 = $f.new$1; old = $f.old; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  2465. m = this;
  2466. new$1 = atomic.AddInt32((m.$ptr_state || (m.$ptr_state = new ptrType$4(function() { return this.$target.state; }, function($v) { this.$target.state = $v; }, m))), -1);
  2467. if ((((new$1 + 1 >> 0)) & 1) === 0) {
  2468. $panic(new $String("sync: unlock of unlocked mutex"));
  2469. }
  2470. old = new$1;
  2471. /* while (true) { */ case 1:
  2472. if (((old >> 2 >> 0) === 0) || !(((old & 3) === 0))) {
  2473. return;
  2474. }
  2475. new$1 = ((old - 4 >> 0)) | 2;
  2476. /* */ if (atomic.CompareAndSwapInt32((m.$ptr_state || (m.$ptr_state = new ptrType$4(function() { return this.$target.state; }, function($v) { this.$target.state = $v; }, m))), old, new$1)) { $s = 3; continue; }
  2477. /* */ $s = 4; continue;
  2478. /* if (atomic.CompareAndSwapInt32((m.$ptr_state || (m.$ptr_state = new ptrType$4(function() { return this.$target.state; }, function($v) { this.$target.state = $v; }, m))), old, new$1)) { */ case 3:
  2479. $r = runtime_Semrelease((m.$ptr_sema || (m.$ptr_sema = new ptrType$2(function() { return this.$target.sema; }, function($v) { this.$target.sema = $v; }, m)))); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  2480. return;
  2481. /* } */ case 4:
  2482. old = m.state;
  2483. /* } */ $s = 1; continue; case 2:
  2484. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Mutex.ptr.prototype.Unlock }; } $f.$ptr = $ptr; $f.m = m; $f.new$1 = new$1; $f.old = old; $f.$s = $s; $f.$r = $r; return $f;
  2485. };
  2486. Mutex.prototype.Unlock = function() { return this.$val.Unlock(); };
  2487. Once.ptr.prototype.Do = function(f) {
  2488. var $ptr, f, o, $s, $deferred, $r;
  2489. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; f = $f.f; o = $f.o; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
  2490. o = this;
  2491. if (atomic.LoadUint32((o.$ptr_done || (o.$ptr_done = new ptrType$2(function() { return this.$target.done; }, function($v) { this.$target.done = $v; }, o)))) === 1) {
  2492. return;
  2493. }
  2494. $r = o.m.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  2495. $deferred.push([$methodVal(o.m, "Unlock"), []]);
  2496. /* */ if (o.done === 0) { $s = 2; continue; }
  2497. /* */ $s = 3; continue;
  2498. /* if (o.done === 0) { */ case 2:
  2499. $deferred.push([atomic.StoreUint32, [(o.$ptr_done || (o.$ptr_done = new ptrType$2(function() { return this.$target.done; }, function($v) { this.$target.done = $v; }, o))), 1]]);
  2500. $r = f(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  2501. /* } */ case 3:
  2502. /* */ $s = -1; case -1: } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: Once.ptr.prototype.Do }; } $f.$ptr = $ptr; $f.f = f; $f.o = o; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
  2503. };
  2504. Once.prototype.Do = function(f) { return this.$val.Do(f); };
  2505. poolCleanup = function() {
  2506. var $ptr, _i, _i$1, _ref, _ref$1, i, i$1, j, l, p, x;
  2507. _ref = allPools;
  2508. _i = 0;
  2509. while (true) {
  2510. if (!(_i < _ref.$length)) { break; }
  2511. i = _i;
  2512. p = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]);
  2513. ((i < 0 || i >= allPools.$length) ? $throwRuntimeError("index out of range") : allPools.$array[allPools.$offset + i] = ptrType.nil);
  2514. i$1 = 0;
  2515. while (true) {
  2516. if (!(i$1 < (p.localSize >> 0))) { break; }
  2517. l = indexLocal(p.local, i$1);
  2518. l.private$0 = $ifaceNil;
  2519. _ref$1 = l.shared;
  2520. _i$1 = 0;
  2521. while (true) {
  2522. if (!(_i$1 < _ref$1.$length)) { break; }
  2523. j = _i$1;
  2524. (x = l.shared, ((j < 0 || j >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + j] = $ifaceNil));
  2525. _i$1++;
  2526. }
  2527. l.shared = sliceType$3.nil;
  2528. i$1 = i$1 + (1) >> 0;
  2529. }
  2530. p.local = 0;
  2531. p.localSize = 0;
  2532. _i++;
  2533. }
  2534. allPools = new sliceType([]);
  2535. };
  2536. init = function() {
  2537. var $ptr;
  2538. runtime_registerPoolCleanup(poolCleanup);
  2539. };
  2540. indexLocal = function(l, i) {
  2541. var $ptr, i, l, x;
  2542. return (x = l, (x.nilCheck, ((i < 0 || i >= x.length) ? $throwRuntimeError("index out of range") : x[i])));
  2543. };
  2544. raceEnable = function() {
  2545. var $ptr;
  2546. };
  2547. init$1 = function() {
  2548. var $ptr, s;
  2549. s = $clone(new syncSema.ptr(), syncSema);
  2550. runtime_Syncsemcheck(12);
  2551. };
  2552. RWMutex.ptr.prototype.RLock = function() {
  2553. var $ptr, rw, $s, $r;
  2554. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; rw = $f.rw; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  2555. rw = this;
  2556. /* */ if (atomic.AddInt32((rw.$ptr_readerCount || (rw.$ptr_readerCount = new ptrType$4(function() { return this.$target.readerCount; }, function($v) { this.$target.readerCount = $v; }, rw))), 1) < 0) { $s = 1; continue; }
  2557. /* */ $s = 2; continue;
  2558. /* if (atomic.AddInt32((rw.$ptr_readerCount || (rw.$ptr_readerCount = new ptrType$4(function() { return this.$target.readerCount; }, function($v) { this.$target.readerCount = $v; }, rw))), 1) < 0) { */ case 1:
  2559. $r = runtime_Semacquire((rw.$ptr_readerSem || (rw.$ptr_readerSem = new ptrType$2(function() { return this.$target.readerSem; }, function($v) { this.$target.readerSem = $v; }, rw)))); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  2560. /* } */ case 2:
  2561. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: RWMutex.ptr.prototype.RLock }; } $f.$ptr = $ptr; $f.rw = rw; $f.$s = $s; $f.$r = $r; return $f;
  2562. };
  2563. RWMutex.prototype.RLock = function() { return this.$val.RLock(); };
  2564. RWMutex.ptr.prototype.RUnlock = function() {
  2565. var $ptr, r, rw, $s, $r;
  2566. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; r = $f.r; rw = $f.rw; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  2567. rw = this;
  2568. r = atomic.AddInt32((rw.$ptr_readerCount || (rw.$ptr_readerCount = new ptrType$4(function() { return this.$target.readerCount; }, function($v) { this.$target.readerCount = $v; }, rw))), -1);
  2569. /* */ if (r < 0) { $s = 1; continue; }
  2570. /* */ $s = 2; continue;
  2571. /* if (r < 0) { */ case 1:
  2572. if (((r + 1 >> 0) === 0) || ((r + 1 >> 0) === -1073741824)) {
  2573. raceEnable();
  2574. $panic(new $String("sync: RUnlock of unlocked RWMutex"));
  2575. }
  2576. /* */ if (atomic.AddInt32((rw.$ptr_readerWait || (rw.$ptr_readerWait = new ptrType$4(function() { return this.$target.readerWait; }, function($v) { this.$target.readerWait = $v; }, rw))), -1) === 0) { $s = 3; continue; }
  2577. /* */ $s = 4; continue;
  2578. /* if (atomic.AddInt32((rw.$ptr_readerWait || (rw.$ptr_readerWait = new ptrType$4(function() { return this.$target.readerWait; }, function($v) { this.$target.readerWait = $v; }, rw))), -1) === 0) { */ case 3:
  2579. $r = runtime_Semrelease((rw.$ptr_writerSem || (rw.$ptr_writerSem = new ptrType$2(function() { return this.$target.writerSem; }, function($v) { this.$target.writerSem = $v; }, rw)))); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  2580. /* } */ case 4:
  2581. /* } */ case 2:
  2582. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: RWMutex.ptr.prototype.RUnlock }; } $f.$ptr = $ptr; $f.r = r; $f.rw = rw; $f.$s = $s; $f.$r = $r; return $f;
  2583. };
  2584. RWMutex.prototype.RUnlock = function() { return this.$val.RUnlock(); };
  2585. RWMutex.ptr.prototype.Lock = function() {
  2586. var $ptr, r, rw, $s, $r;
  2587. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; r = $f.r; rw = $f.rw; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  2588. rw = this;
  2589. $r = rw.w.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  2590. r = atomic.AddInt32((rw.$ptr_readerCount || (rw.$ptr_readerCount = new ptrType$4(function() { return this.$target.readerCount; }, function($v) { this.$target.readerCount = $v; }, rw))), -1073741824) + 1073741824 >> 0;
  2591. /* */ if (!((r === 0)) && !((atomic.AddInt32((rw.$ptr_readerWait || (rw.$ptr_readerWait = new ptrType$4(function() { return this.$target.readerWait; }, function($v) { this.$target.readerWait = $v; }, rw))), r) === 0))) { $s = 2; continue; }
  2592. /* */ $s = 3; continue;
  2593. /* if (!((r === 0)) && !((atomic.AddInt32((rw.$ptr_readerWait || (rw.$ptr_readerWait = new ptrType$4(function() { return this.$target.readerWait; }, function($v) { this.$target.readerWait = $v; }, rw))), r) === 0))) { */ case 2:
  2594. $r = runtime_Semacquire((rw.$ptr_writerSem || (rw.$ptr_writerSem = new ptrType$2(function() { return this.$target.writerSem; }, function($v) { this.$target.writerSem = $v; }, rw)))); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  2595. /* } */ case 3:
  2596. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: RWMutex.ptr.prototype.Lock }; } $f.$ptr = $ptr; $f.r = r; $f.rw = rw; $f.$s = $s; $f.$r = $r; return $f;
  2597. };
  2598. RWMutex.prototype.Lock = function() { return this.$val.Lock(); };
  2599. RWMutex.ptr.prototype.Unlock = function() {
  2600. var $ptr, i, r, rw, $s, $r;
  2601. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; i = $f.i; r = $f.r; rw = $f.rw; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  2602. rw = this;
  2603. r = atomic.AddInt32((rw.$ptr_readerCount || (rw.$ptr_readerCount = new ptrType$4(function() { return this.$target.readerCount; }, function($v) { this.$target.readerCount = $v; }, rw))), 1073741824);
  2604. if (r >= 1073741824) {
  2605. raceEnable();
  2606. $panic(new $String("sync: Unlock of unlocked RWMutex"));
  2607. }
  2608. i = 0;
  2609. /* while (true) { */ case 1:
  2610. /* if (!(i < (r >> 0))) { break; } */ if(!(i < (r >> 0))) { $s = 2; continue; }
  2611. $r = runtime_Semrelease((rw.$ptr_readerSem || (rw.$ptr_readerSem = new ptrType$2(function() { return this.$target.readerSem; }, function($v) { this.$target.readerSem = $v; }, rw)))); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  2612. i = i + (1) >> 0;
  2613. /* } */ $s = 1; continue; case 2:
  2614. $r = rw.w.Unlock(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  2615. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: RWMutex.ptr.prototype.Unlock }; } $f.$ptr = $ptr; $f.i = i; $f.r = r; $f.rw = rw; $f.$s = $s; $f.$r = $r; return $f;
  2616. };
  2617. RWMutex.prototype.Unlock = function() { return this.$val.Unlock(); };
  2618. RWMutex.ptr.prototype.RLocker = function() {
  2619. var $ptr, rw;
  2620. rw = this;
  2621. return $pointerOfStructConversion(rw, ptrType$7);
  2622. };
  2623. RWMutex.prototype.RLocker = function() { return this.$val.RLocker(); };
  2624. rlocker.ptr.prototype.Lock = function() {
  2625. var $ptr, r, $s, $r;
  2626. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  2627. r = this;
  2628. $r = $pointerOfStructConversion(r, ptrType$8).RLock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  2629. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: rlocker.ptr.prototype.Lock }; } $f.$ptr = $ptr; $f.r = r; $f.$s = $s; $f.$r = $r; return $f;
  2630. };
  2631. rlocker.prototype.Lock = function() { return this.$val.Lock(); };
  2632. rlocker.ptr.prototype.Unlock = function() {
  2633. var $ptr, r, $s, $r;
  2634. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  2635. r = this;
  2636. $r = $pointerOfStructConversion(r, ptrType$8).RUnlock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  2637. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: rlocker.ptr.prototype.Unlock }; } $f.$ptr = $ptr; $f.r = r; $f.$s = $s; $f.$r = $r; return $f;
  2638. };
  2639. rlocker.prototype.Unlock = function() { return this.$val.Unlock(); };
  2640. WaitGroup.ptr.prototype.Add = function(delta) {
  2641. var $ptr, delta, i, v, wg, $s, $deferred, $r;
  2642. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; delta = $f.delta; i = $f.i; v = $f.v; wg = $f.wg; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
  2643. wg = this;
  2644. v = atomic.AddInt32((wg.$ptr_counter || (wg.$ptr_counter = new ptrType$4(function() { return this.$target.counter; }, function($v) { this.$target.counter = $v; }, wg))), (delta >> 0));
  2645. if (v < 0) {
  2646. $panic(new $String("sync: negative WaitGroup counter"));
  2647. }
  2648. if (v > 0 || (atomic.LoadInt32((wg.$ptr_waiters || (wg.$ptr_waiters = new ptrType$4(function() { return this.$target.waiters; }, function($v) { this.$target.waiters = $v; }, wg)))) === 0)) {
  2649. return;
  2650. }
  2651. $r = wg.m.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  2652. /* */ if (atomic.LoadInt32((wg.$ptr_counter || (wg.$ptr_counter = new ptrType$4(function() { return this.$target.counter; }, function($v) { this.$target.counter = $v; }, wg)))) === 0) { $s = 2; continue; }
  2653. /* */ $s = 3; continue;
  2654. /* if (atomic.LoadInt32((wg.$ptr_counter || (wg.$ptr_counter = new ptrType$4(function() { return this.$target.counter; }, function($v) { this.$target.counter = $v; }, wg)))) === 0) { */ case 2:
  2655. i = 0;
  2656. /* while (true) { */ case 4:
  2657. /* if (!(i < wg.waiters)) { break; } */ if(!(i < wg.waiters)) { $s = 5; continue; }
  2658. $r = runtime_Semrelease(wg.sema); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  2659. i = i + (1) >> 0;
  2660. /* } */ $s = 4; continue; case 5:
  2661. wg.waiters = 0;
  2662. wg.sema = ptrType$2.nil;
  2663. /* } */ case 3:
  2664. $r = wg.m.Unlock(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  2665. /* */ $s = -1; case -1: } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: WaitGroup.ptr.prototype.Add }; } $f.$ptr = $ptr; $f.delta = delta; $f.i = i; $f.v = v; $f.wg = wg; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
  2666. };
  2667. WaitGroup.prototype.Add = function(delta) { return this.$val.Add(delta); };
  2668. WaitGroup.ptr.prototype.Done = function() {
  2669. var $ptr, wg, $s, $r;
  2670. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; wg = $f.wg; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  2671. wg = this;
  2672. $r = wg.Add(-1); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  2673. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: WaitGroup.ptr.prototype.Done }; } $f.$ptr = $ptr; $f.wg = wg; $f.$s = $s; $f.$r = $r; return $f;
  2674. };
  2675. WaitGroup.prototype.Done = function() { return this.$val.Done(); };
  2676. WaitGroup.ptr.prototype.Wait = function() {
  2677. var $ptr, s, w, wg, $s, $r;
  2678. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; s = $f.s; w = $f.w; wg = $f.wg; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  2679. wg = this;
  2680. if (atomic.LoadInt32((wg.$ptr_counter || (wg.$ptr_counter = new ptrType$4(function() { return this.$target.counter; }, function($v) { this.$target.counter = $v; }, wg)))) === 0) {
  2681. return;
  2682. }
  2683. $r = wg.m.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  2684. w = atomic.AddInt32((wg.$ptr_waiters || (wg.$ptr_waiters = new ptrType$4(function() { return this.$target.waiters; }, function($v) { this.$target.waiters = $v; }, wg))), 1);
  2685. /* */ if (atomic.LoadInt32((wg.$ptr_counter || (wg.$ptr_counter = new ptrType$4(function() { return this.$target.counter; }, function($v) { this.$target.counter = $v; }, wg)))) === 0) { $s = 2; continue; }
  2686. /* */ $s = 3; continue;
  2687. /* if (atomic.LoadInt32((wg.$ptr_counter || (wg.$ptr_counter = new ptrType$4(function() { return this.$target.counter; }, function($v) { this.$target.counter = $v; }, wg)))) === 0) { */ case 2:
  2688. atomic.AddInt32((wg.$ptr_waiters || (wg.$ptr_waiters = new ptrType$4(function() { return this.$target.waiters; }, function($v) { this.$target.waiters = $v; }, wg))), -1);
  2689. $r = wg.m.Unlock(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  2690. return;
  2691. /* } */ case 3:
  2692. if (wg.sema === ptrType$2.nil) {
  2693. wg.sema = $newDataPointer(0, ptrType$2);
  2694. }
  2695. s = wg.sema;
  2696. $r = wg.m.Unlock(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  2697. $r = runtime_Semacquire(s); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  2698. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: WaitGroup.ptr.prototype.Wait }; } $f.$ptr = $ptr; $f.s = s; $f.w = w; $f.wg = wg; $f.$s = $s; $f.$r = $r; return $f;
  2699. };
  2700. WaitGroup.prototype.Wait = function() { return this.$val.Wait(); };
  2701. ptrType$9.methods = [{prop: "Wait", name: "Wait", pkg: "", typ: $funcType([], [], false)}, {prop: "Signal", name: "Signal", pkg: "", typ: $funcType([], [], false)}, {prop: "Broadcast", name: "Broadcast", pkg: "", typ: $funcType([], [], false)}, {prop: "signalImpl", name: "signalImpl", pkg: "sync", typ: $funcType([$Bool], [], false)}];
  2702. ptrType.methods = [{prop: "Get", name: "Get", pkg: "", typ: $funcType([], [$emptyInterface], false)}, {prop: "Put", name: "Put", pkg: "", typ: $funcType([$emptyInterface], [], false)}, {prop: "getSlow", name: "getSlow", pkg: "sync", typ: $funcType([], [$emptyInterface], false)}, {prop: "pin", name: "pin", pkg: "sync", typ: $funcType([], [ptrType$6], false)}, {prop: "pinSlow", name: "pinSlow", pkg: "sync", typ: $funcType([], [ptrType$6], false)}];
  2703. ptrType$1.methods = [{prop: "check", name: "check", pkg: "sync", typ: $funcType([], [], false)}];
  2704. ptrType$10.methods = [{prop: "Lock", name: "Lock", pkg: "", typ: $funcType([], [], false)}, {prop: "Unlock", name: "Unlock", pkg: "", typ: $funcType([], [], false)}];
  2705. ptrType$11.methods = [{prop: "Do", name: "Do", pkg: "", typ: $funcType([funcType$1], [], false)}];
  2706. ptrType$8.methods = [{prop: "RLock", name: "RLock", pkg: "", typ: $funcType([], [], false)}, {prop: "RUnlock", name: "RUnlock", pkg: "", typ: $funcType([], [], false)}, {prop: "Lock", name: "Lock", pkg: "", typ: $funcType([], [], false)}, {prop: "Unlock", name: "Unlock", pkg: "", typ: $funcType([], [], false)}, {prop: "RLocker", name: "RLocker", pkg: "", typ: $funcType([], [Locker], false)}];
  2707. ptrType$7.methods = [{prop: "Lock", name: "Lock", pkg: "", typ: $funcType([], [], false)}, {prop: "Unlock", name: "Unlock", pkg: "", typ: $funcType([], [], false)}];
  2708. ptrType$12.methods = [{prop: "Add", name: "Add", pkg: "", typ: $funcType([$Int], [], false)}, {prop: "Done", name: "Done", pkg: "", typ: $funcType([], [], false)}, {prop: "Wait", name: "Wait", pkg: "", typ: $funcType([], [], false)}];
  2709. Cond.init([{prop: "L", name: "L", pkg: "", typ: Locker, tag: ""}, {prop: "sema", name: "sema", pkg: "sync", typ: syncSema, tag: ""}, {prop: "waiters", name: "waiters", pkg: "sync", typ: $Uint32, tag: ""}, {prop: "checker", name: "checker", pkg: "sync", typ: copyChecker, tag: ""}, {prop: "n", name: "n", pkg: "sync", typ: $Int, tag: ""}, {prop: "ch", name: "ch", pkg: "sync", typ: chanType, tag: ""}]);
  2710. Pool.init([{prop: "local", name: "local", pkg: "sync", typ: $UnsafePointer, tag: ""}, {prop: "localSize", name: "localSize", pkg: "sync", typ: $Uintptr, tag: ""}, {prop: "store", name: "store", pkg: "sync", typ: sliceType$3, tag: ""}, {prop: "New", name: "New", pkg: "", typ: funcType, tag: ""}]);
  2711. Mutex.init([{prop: "state", name: "state", pkg: "sync", typ: $Int32, tag: ""}, {prop: "sema", name: "sema", pkg: "sync", typ: $Uint32, tag: ""}]);
  2712. Locker.init([{prop: "Lock", name: "Lock", pkg: "", typ: $funcType([], [], false)}, {prop: "Unlock", name: "Unlock", pkg: "", typ: $funcType([], [], false)}]);
  2713. Once.init([{prop: "m", name: "m", pkg: "sync", typ: Mutex, tag: ""}, {prop: "done", name: "done", pkg: "sync", typ: $Uint32, tag: ""}]);
  2714. poolLocal.init([{prop: "private$0", name: "private", pkg: "sync", typ: $emptyInterface, tag: ""}, {prop: "shared", name: "shared", pkg: "sync", typ: sliceType$3, tag: ""}, {prop: "Mutex", name: "", pkg: "", typ: Mutex, tag: ""}, {prop: "pad", name: "pad", pkg: "sync", typ: arrayType, tag: ""}]);
  2715. syncSema.init([{prop: "lock", name: "lock", pkg: "sync", typ: $Uintptr, tag: ""}, {prop: "head", name: "head", pkg: "sync", typ: $UnsafePointer, tag: ""}, {prop: "tail", name: "tail", pkg: "sync", typ: $UnsafePointer, tag: ""}]);
  2716. RWMutex.init([{prop: "w", name: "w", pkg: "sync", typ: Mutex, tag: ""}, {prop: "writerSem", name: "writerSem", pkg: "sync", typ: $Uint32, tag: ""}, {prop: "readerSem", name: "readerSem", pkg: "sync", typ: $Uint32, tag: ""}, {prop: "readerCount", name: "readerCount", pkg: "sync", typ: $Int32, tag: ""}, {prop: "readerWait", name: "readerWait", pkg: "sync", typ: $Int32, tag: ""}]);
  2717. rlocker.init([{prop: "w", name: "w", pkg: "sync", typ: Mutex, tag: ""}, {prop: "writerSem", name: "writerSem", pkg: "sync", typ: $Uint32, tag: ""}, {prop: "readerSem", name: "readerSem", pkg: "sync", typ: $Uint32, tag: ""}, {prop: "readerCount", name: "readerCount", pkg: "sync", typ: $Int32, tag: ""}, {prop: "readerWait", name: "readerWait", pkg: "sync", typ: $Int32, tag: ""}]);
  2718. WaitGroup.init([{prop: "m", name: "m", pkg: "sync", typ: Mutex, tag: ""}, {prop: "counter", name: "counter", pkg: "sync", typ: $Int32, tag: ""}, {prop: "waiters", name: "waiters", pkg: "sync", typ: $Int32, tag: ""}, {prop: "sema", name: "sema", pkg: "sync", typ: ptrType$2, tag: ""}]);
  2719. $init = function() {
  2720. $pkg.$init = function() {};
  2721. /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  2722. $r = runtime.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  2723. $r = atomic.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  2724. allPools = sliceType.nil;
  2725. semWaiters = new $Map();
  2726. init();
  2727. init$1();
  2728. /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
  2729. };
  2730. $pkg.$init = $init;
  2731. return $pkg;
  2732. })();
  2733. $packages["io"] = (function() {
  2734. var $pkg = {}, $init, errors, sync, Reader, Writer, Closer, ReadCloser, ReaderFrom, WriterTo, ReaderAt, ByteWriter, RuneReader, RuneScanner, stringWriter, LimitedReader, SectionReader, multiReader, pipe, PipeReader, PipeWriter, arrayType, sliceType, sliceType$1, ptrType, ptrType$1, ptrType$3, ptrType$5, ptrType$6, ptrType$7, errWhence, errOffset, zero, WriteString, ReadAtLeast, ReadFull, CopyN, Copy, LimitReader, NewSectionReader, MultiReader, Pipe;
  2735. errors = $packages["errors"];
  2736. sync = $packages["sync"];
  2737. Reader = $pkg.Reader = $newType(8, $kindInterface, "io.Reader", "Reader", "io", null);
  2738. Writer = $pkg.Writer = $newType(8, $kindInterface, "io.Writer", "Writer", "io", null);
  2739. Closer = $pkg.Closer = $newType(8, $kindInterface, "io.Closer", "Closer", "io", null);
  2740. ReadCloser = $pkg.ReadCloser = $newType(8, $kindInterface, "io.ReadCloser", "ReadCloser", "io", null);
  2741. ReaderFrom = $pkg.ReaderFrom = $newType(8, $kindInterface, "io.ReaderFrom", "ReaderFrom", "io", null);
  2742. WriterTo = $pkg.WriterTo = $newType(8, $kindInterface, "io.WriterTo", "WriterTo", "io", null);
  2743. ReaderAt = $pkg.ReaderAt = $newType(8, $kindInterface, "io.ReaderAt", "ReaderAt", "io", null);
  2744. ByteWriter = $pkg.ByteWriter = $newType(8, $kindInterface, "io.ByteWriter", "ByteWriter", "io", null);
  2745. RuneReader = $pkg.RuneReader = $newType(8, $kindInterface, "io.RuneReader", "RuneReader", "io", null);
  2746. RuneScanner = $pkg.RuneScanner = $newType(8, $kindInterface, "io.RuneScanner", "RuneScanner", "io", null);
  2747. stringWriter = $pkg.stringWriter = $newType(8, $kindInterface, "io.stringWriter", "stringWriter", "io", null);
  2748. LimitedReader = $pkg.LimitedReader = $newType(0, $kindStruct, "io.LimitedReader", "LimitedReader", "io", function(R_, N_) {
  2749. this.$val = this;
  2750. if (arguments.length === 0) {
  2751. this.R = $ifaceNil;
  2752. this.N = new $Int64(0, 0);
  2753. return;
  2754. }
  2755. this.R = R_;
  2756. this.N = N_;
  2757. });
  2758. SectionReader = $pkg.SectionReader = $newType(0, $kindStruct, "io.SectionReader", "SectionReader", "io", function(r_, base_, off_, limit_) {
  2759. this.$val = this;
  2760. if (arguments.length === 0) {
  2761. this.r = $ifaceNil;
  2762. this.base = new $Int64(0, 0);
  2763. this.off = new $Int64(0, 0);
  2764. this.limit = new $Int64(0, 0);
  2765. return;
  2766. }
  2767. this.r = r_;
  2768. this.base = base_;
  2769. this.off = off_;
  2770. this.limit = limit_;
  2771. });
  2772. multiReader = $pkg.multiReader = $newType(0, $kindStruct, "io.multiReader", "multiReader", "io", function(readers_) {
  2773. this.$val = this;
  2774. if (arguments.length === 0) {
  2775. this.readers = sliceType$1.nil;
  2776. return;
  2777. }
  2778. this.readers = readers_;
  2779. });
  2780. pipe = $pkg.pipe = $newType(0, $kindStruct, "io.pipe", "pipe", "io", function(rl_, wl_, l_, data_, rwait_, wwait_, rerr_, werr_) {
  2781. this.$val = this;
  2782. if (arguments.length === 0) {
  2783. this.rl = new sync.Mutex.ptr();
  2784. this.wl = new sync.Mutex.ptr();
  2785. this.l = new sync.Mutex.ptr();
  2786. this.data = sliceType.nil;
  2787. this.rwait = new sync.Cond.ptr();
  2788. this.wwait = new sync.Cond.ptr();
  2789. this.rerr = $ifaceNil;
  2790. this.werr = $ifaceNil;
  2791. return;
  2792. }
  2793. this.rl = rl_;
  2794. this.wl = wl_;
  2795. this.l = l_;
  2796. this.data = data_;
  2797. this.rwait = rwait_;
  2798. this.wwait = wwait_;
  2799. this.rerr = rerr_;
  2800. this.werr = werr_;
  2801. });
  2802. PipeReader = $pkg.PipeReader = $newType(0, $kindStruct, "io.PipeReader", "PipeReader", "io", function(p_) {
  2803. this.$val = this;
  2804. if (arguments.length === 0) {
  2805. this.p = ptrType$5.nil;
  2806. return;
  2807. }
  2808. this.p = p_;
  2809. });
  2810. PipeWriter = $pkg.PipeWriter = $newType(0, $kindStruct, "io.PipeWriter", "PipeWriter", "io", function(p_) {
  2811. this.$val = this;
  2812. if (arguments.length === 0) {
  2813. this.p = ptrType$5.nil;
  2814. return;
  2815. }
  2816. this.p = p_;
  2817. });
  2818. arrayType = $arrayType($Uint8, 0);
  2819. sliceType = $sliceType($Uint8);
  2820. sliceType$1 = $sliceType(Reader);
  2821. ptrType = $ptrType(LimitedReader);
  2822. ptrType$1 = $ptrType(SectionReader);
  2823. ptrType$3 = $ptrType(multiReader);
  2824. ptrType$5 = $ptrType(pipe);
  2825. ptrType$6 = $ptrType(PipeReader);
  2826. ptrType$7 = $ptrType(PipeWriter);
  2827. WriteString = function(w, s) {
  2828. var $ptr, _r, _r$1, _tuple, _tuple$1, _tuple$2, err, n, ok, s, sw, w, $s, $r;
  2829. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; err = $f.err; n = $f.n; ok = $f.ok; s = $f.s; sw = $f.sw; w = $f.w; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  2830. n = 0;
  2831. err = $ifaceNil;
  2832. _tuple = $assertType(w, stringWriter, true); sw = _tuple[0]; ok = _tuple[1];
  2833. /* */ if (ok) { $s = 1; continue; }
  2834. /* */ $s = 2; continue;
  2835. /* if (ok) { */ case 1:
  2836. _r = sw.WriteString(s); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  2837. _tuple$1 = _r; n = _tuple$1[0]; err = _tuple$1[1];
  2838. return [n, err];
  2839. /* } */ case 2:
  2840. _r$1 = w.Write(new sliceType($stringToBytes(s))); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  2841. _tuple$2 = _r$1; n = _tuple$2[0]; err = _tuple$2[1];
  2842. return [n, err];
  2843. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: WriteString }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f.err = err; $f.n = n; $f.ok = ok; $f.s = s; $f.sw = sw; $f.w = w; $f.$s = $s; $f.$r = $r; return $f;
  2844. };
  2845. $pkg.WriteString = WriteString;
  2846. ReadAtLeast = function(r, buf, min) {
  2847. var $ptr, _r, _tmp, _tmp$1, _tuple, buf, err, min, n, nn, r, $s, $r;
  2848. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; buf = $f.buf; err = $f.err; min = $f.min; n = $f.n; nn = $f.nn; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  2849. n = 0;
  2850. err = $ifaceNil;
  2851. if (buf.$length < min) {
  2852. _tmp = 0; _tmp$1 = $pkg.ErrShortBuffer; n = _tmp; err = _tmp$1;
  2853. return [n, err];
  2854. }
  2855. /* while (true) { */ case 1:
  2856. /* if (!(n < min && $interfaceIsEqual(err, $ifaceNil))) { break; } */ if(!(n < min && $interfaceIsEqual(err, $ifaceNil))) { $s = 2; continue; }
  2857. nn = 0;
  2858. _r = r.Read($subslice(buf, n)); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  2859. _tuple = _r; nn = _tuple[0]; err = _tuple[1];
  2860. n = n + (nn) >> 0;
  2861. /* } */ $s = 1; continue; case 2:
  2862. if (n >= min) {
  2863. err = $ifaceNil;
  2864. } else if (n > 0 && $interfaceIsEqual(err, $pkg.EOF)) {
  2865. err = $pkg.ErrUnexpectedEOF;
  2866. }
  2867. return [n, err];
  2868. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: ReadAtLeast }; } $f.$ptr = $ptr; $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f.buf = buf; $f.err = err; $f.min = min; $f.n = n; $f.nn = nn; $f.r = r; $f.$s = $s; $f.$r = $r; return $f;
  2869. };
  2870. $pkg.ReadAtLeast = ReadAtLeast;
  2871. ReadFull = function(r, buf) {
  2872. var $ptr, _r, _tuple, buf, err, n, r, $s, $r;
  2873. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tuple = $f._tuple; buf = $f.buf; err = $f.err; n = $f.n; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  2874. n = 0;
  2875. err = $ifaceNil;
  2876. _r = ReadAtLeast(r, buf, buf.$length); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  2877. _tuple = _r; n = _tuple[0]; err = _tuple[1];
  2878. return [n, err];
  2879. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: ReadFull }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple = _tuple; $f.buf = buf; $f.err = err; $f.n = n; $f.r = r; $f.$s = $s; $f.$r = $r; return $f;
  2880. };
  2881. $pkg.ReadFull = ReadFull;
  2882. CopyN = function(dst, src, n) {
  2883. var $ptr, _r, _tmp, _tmp$1, _tuple, dst, err, n, src, written, $s, $r;
  2884. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; dst = $f.dst; err = $f.err; n = $f.n; src = $f.src; written = $f.written; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  2885. written = new $Int64(0, 0);
  2886. err = $ifaceNil;
  2887. _r = Copy(dst, LimitReader(src, n)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  2888. _tuple = _r; written = _tuple[0]; err = _tuple[1];
  2889. if ((written.$high === n.$high && written.$low === n.$low)) {
  2890. _tmp = n; _tmp$1 = $ifaceNil; written = _tmp; err = _tmp$1;
  2891. return [written, err];
  2892. }
  2893. if ((written.$high < n.$high || (written.$high === n.$high && written.$low < n.$low)) && $interfaceIsEqual(err, $ifaceNil)) {
  2894. err = $pkg.EOF;
  2895. }
  2896. return [written, err];
  2897. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: CopyN }; } $f.$ptr = $ptr; $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f.dst = dst; $f.err = err; $f.n = n; $f.src = src; $f.written = written; $f.$s = $s; $f.$r = $r; return $f;
  2898. };
  2899. $pkg.CopyN = CopyN;
  2900. Copy = function(dst, src) {
  2901. var $ptr, _r, _r$1, _r$2, _r$3, _tmp, _tmp$1, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, buf, dst, er, err, ew, nr, nw, ok, ok$1, rt, src, written, wt, x, $s, $r;
  2902. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; _tuple$4 = $f._tuple$4; _tuple$5 = $f._tuple$5; buf = $f.buf; dst = $f.dst; er = $f.er; err = $f.err; ew = $f.ew; nr = $f.nr; nw = $f.nw; ok = $f.ok; ok$1 = $f.ok$1; rt = $f.rt; src = $f.src; written = $f.written; wt = $f.wt; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  2903. written = new $Int64(0, 0);
  2904. err = $ifaceNil;
  2905. _tuple = $assertType(src, WriterTo, true); wt = _tuple[0]; ok = _tuple[1];
  2906. /* */ if (ok) { $s = 1; continue; }
  2907. /* */ $s = 2; continue;
  2908. /* if (ok) { */ case 1:
  2909. _r = wt.WriteTo(dst); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  2910. _tuple$1 = _r; written = _tuple$1[0]; err = _tuple$1[1];
  2911. return [written, err];
  2912. /* } */ case 2:
  2913. _tuple$2 = $assertType(dst, ReaderFrom, true); rt = _tuple$2[0]; ok$1 = _tuple$2[1];
  2914. /* */ if (ok$1) { $s = 4; continue; }
  2915. /* */ $s = 5; continue;
  2916. /* if (ok$1) { */ case 4:
  2917. _r$1 = rt.ReadFrom(src); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  2918. _tuple$3 = _r$1; written = _tuple$3[0]; err = _tuple$3[1];
  2919. return [written, err];
  2920. /* } */ case 5:
  2921. buf = $makeSlice(sliceType, 32768);
  2922. /* while (true) { */ case 7:
  2923. _r$2 = src.Read(buf); /* */ $s = 9; case 9: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  2924. _tuple$4 = _r$2; nr = _tuple$4[0]; er = _tuple$4[1];
  2925. /* */ if (nr > 0) { $s = 10; continue; }
  2926. /* */ $s = 11; continue;
  2927. /* if (nr > 0) { */ case 10:
  2928. _r$3 = dst.Write($subslice(buf, 0, nr)); /* */ $s = 12; case 12: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  2929. _tuple$5 = _r$3; nw = _tuple$5[0]; ew = _tuple$5[1];
  2930. if (nw > 0) {
  2931. written = (x = new $Int64(0, nw), new $Int64(written.$high + x.$high, written.$low + x.$low));
  2932. }
  2933. if (!($interfaceIsEqual(ew, $ifaceNil))) {
  2934. err = ew;
  2935. /* break; */ $s = 8; continue;
  2936. }
  2937. if (!((nr === nw))) {
  2938. err = $pkg.ErrShortWrite;
  2939. /* break; */ $s = 8; continue;
  2940. }
  2941. /* } */ case 11:
  2942. if ($interfaceIsEqual(er, $pkg.EOF)) {
  2943. /* break; */ $s = 8; continue;
  2944. }
  2945. if (!($interfaceIsEqual(er, $ifaceNil))) {
  2946. err = er;
  2947. /* break; */ $s = 8; continue;
  2948. }
  2949. /* } */ $s = 7; continue; case 8:
  2950. _tmp = written; _tmp$1 = err; written = _tmp; err = _tmp$1;
  2951. return [written, err];
  2952. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Copy }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f._tuple$4 = _tuple$4; $f._tuple$5 = _tuple$5; $f.buf = buf; $f.dst = dst; $f.er = er; $f.err = err; $f.ew = ew; $f.nr = nr; $f.nw = nw; $f.ok = ok; $f.ok$1 = ok$1; $f.rt = rt; $f.src = src; $f.written = written; $f.wt = wt; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
  2953. };
  2954. $pkg.Copy = Copy;
  2955. LimitReader = function(r, n) {
  2956. var $ptr, n, r;
  2957. return new LimitedReader.ptr(r, n);
  2958. };
  2959. $pkg.LimitReader = LimitReader;
  2960. LimitedReader.ptr.prototype.Read = function(p) {
  2961. var $ptr, _r, _tmp, _tmp$1, _tuple, err, l, n, p, x, x$1, x$2, x$3, x$4, $s, $r;
  2962. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; err = $f.err; l = $f.l; n = $f.n; p = $f.p; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; x$3 = $f.x$3; x$4 = $f.x$4; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  2963. n = 0;
  2964. err = $ifaceNil;
  2965. l = this;
  2966. if ((x = l.N, (x.$high < 0 || (x.$high === 0 && x.$low <= 0)))) {
  2967. _tmp = 0; _tmp$1 = $pkg.EOF; n = _tmp; err = _tmp$1;
  2968. return [n, err];
  2969. }
  2970. if ((x$1 = new $Int64(0, p.$length), x$2 = l.N, (x$1.$high > x$2.$high || (x$1.$high === x$2.$high && x$1.$low > x$2.$low)))) {
  2971. p = $subslice(p, 0, $flatten64(l.N));
  2972. }
  2973. _r = l.R.Read(p); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  2974. _tuple = _r; n = _tuple[0]; err = _tuple[1];
  2975. l.N = (x$3 = l.N, x$4 = new $Int64(0, n), new $Int64(x$3.$high - x$4.$high, x$3.$low - x$4.$low));
  2976. return [n, err];
  2977. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: LimitedReader.ptr.prototype.Read }; } $f.$ptr = $ptr; $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f.err = err; $f.l = l; $f.n = n; $f.p = p; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.x$3 = x$3; $f.x$4 = x$4; $f.$s = $s; $f.$r = $r; return $f;
  2978. };
  2979. LimitedReader.prototype.Read = function(p) { return this.$val.Read(p); };
  2980. NewSectionReader = function(r, off, n) {
  2981. var $ptr, n, off, r;
  2982. return new SectionReader.ptr(r, off, off, new $Int64(off.$high + n.$high, off.$low + n.$low));
  2983. };
  2984. $pkg.NewSectionReader = NewSectionReader;
  2985. SectionReader.ptr.prototype.Read = function(p) {
  2986. var $ptr, _r, _tmp, _tmp$1, _tuple, err, max, n, p, s, x, x$1, x$2, x$3, x$4, x$5, x$6, $s, $r;
  2987. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; err = $f.err; max = $f.max; n = $f.n; p = $f.p; s = $f.s; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; x$3 = $f.x$3; x$4 = $f.x$4; x$5 = $f.x$5; x$6 = $f.x$6; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  2988. n = 0;
  2989. err = $ifaceNil;
  2990. s = this;
  2991. if ((x = s.off, x$1 = s.limit, (x.$high > x$1.$high || (x.$high === x$1.$high && x.$low >= x$1.$low)))) {
  2992. _tmp = 0; _tmp$1 = $pkg.EOF; n = _tmp; err = _tmp$1;
  2993. return [n, err];
  2994. }
  2995. max = (x$2 = s.limit, x$3 = s.off, new $Int64(x$2.$high - x$3.$high, x$2.$low - x$3.$low));
  2996. if ((x$4 = new $Int64(0, p.$length), (x$4.$high > max.$high || (x$4.$high === max.$high && x$4.$low > max.$low)))) {
  2997. p = $subslice(p, 0, $flatten64(max));
  2998. }
  2999. _r = s.r.ReadAt(p, s.off); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  3000. _tuple = _r; n = _tuple[0]; err = _tuple[1];
  3001. s.off = (x$5 = s.off, x$6 = new $Int64(0, n), new $Int64(x$5.$high + x$6.$high, x$5.$low + x$6.$low));
  3002. return [n, err];
  3003. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: SectionReader.ptr.prototype.Read }; } $f.$ptr = $ptr; $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f.err = err; $f.max = max; $f.n = n; $f.p = p; $f.s = s; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.x$3 = x$3; $f.x$4 = x$4; $f.x$5 = x$5; $f.x$6 = x$6; $f.$s = $s; $f.$r = $r; return $f;
  3004. };
  3005. SectionReader.prototype.Read = function(p) { return this.$val.Read(p); };
  3006. SectionReader.ptr.prototype.Seek = function(offset, whence) {
  3007. var $ptr, _ref, offset, s, whence, x, x$1, x$2, x$3, x$4;
  3008. s = this;
  3009. _ref = whence;
  3010. if (_ref === 0) {
  3011. offset = (x = s.base, new $Int64(offset.$high + x.$high, offset.$low + x.$low));
  3012. } else if (_ref === 1) {
  3013. offset = (x$1 = s.off, new $Int64(offset.$high + x$1.$high, offset.$low + x$1.$low));
  3014. } else if (_ref === 2) {
  3015. offset = (x$2 = s.limit, new $Int64(offset.$high + x$2.$high, offset.$low + x$2.$low));
  3016. } else {
  3017. return [new $Int64(0, 0), errWhence];
  3018. }
  3019. if ((x$3 = s.base, (offset.$high < x$3.$high || (offset.$high === x$3.$high && offset.$low < x$3.$low)))) {
  3020. return [new $Int64(0, 0), errOffset];
  3021. }
  3022. s.off = offset;
  3023. return [(x$4 = s.base, new $Int64(offset.$high - x$4.$high, offset.$low - x$4.$low)), $ifaceNil];
  3024. };
  3025. SectionReader.prototype.Seek = function(offset, whence) { return this.$val.Seek(offset, whence); };
  3026. SectionReader.ptr.prototype.ReadAt = function(p, off) {
  3027. var $ptr, _r, _r$1, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, _tuple$1, err, max, n, off, p, s, x, x$1, x$2, x$3, x$4, x$5, $s, $r;
  3028. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; err = $f.err; max = $f.max; n = $f.n; off = $f.off; p = $f.p; s = $f.s; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; x$3 = $f.x$3; x$4 = $f.x$4; x$5 = $f.x$5; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  3029. n = 0;
  3030. err = $ifaceNil;
  3031. s = this;
  3032. if ((off.$high < 0 || (off.$high === 0 && off.$low < 0)) || (x = (x$1 = s.limit, x$2 = s.base, new $Int64(x$1.$high - x$2.$high, x$1.$low - x$2.$low)), (off.$high > x.$high || (off.$high === x.$high && off.$low >= x.$low)))) {
  3033. _tmp = 0; _tmp$1 = $pkg.EOF; n = _tmp; err = _tmp$1;
  3034. return [n, err];
  3035. }
  3036. off = (x$3 = s.base, new $Int64(off.$high + x$3.$high, off.$low + x$3.$low));
  3037. max = (x$4 = s.limit, new $Int64(x$4.$high - off.$high, x$4.$low - off.$low));
  3038. /* */ if ((x$5 = new $Int64(0, p.$length), (x$5.$high > max.$high || (x$5.$high === max.$high && x$5.$low > max.$low)))) { $s = 1; continue; }
  3039. /* */ $s = 2; continue;
  3040. /* if ((x$5 = new $Int64(0, p.$length), (x$5.$high > max.$high || (x$5.$high === max.$high && x$5.$low > max.$low)))) { */ case 1:
  3041. p = $subslice(p, 0, $flatten64(max));
  3042. _r = s.r.ReadAt(p, off); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  3043. _tuple = _r; n = _tuple[0]; err = _tuple[1];
  3044. if ($interfaceIsEqual(err, $ifaceNil)) {
  3045. err = $pkg.EOF;
  3046. }
  3047. _tmp$2 = n; _tmp$3 = err; n = _tmp$2; err = _tmp$3;
  3048. return [n, err];
  3049. /* } */ case 2:
  3050. _r$1 = s.r.ReadAt(p, off); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  3051. _tuple$1 = _r$1; n = _tuple$1[0]; err = _tuple$1[1];
  3052. return [n, err];
  3053. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: SectionReader.ptr.prototype.ReadAt }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.err = err; $f.max = max; $f.n = n; $f.off = off; $f.p = p; $f.s = s; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.x$3 = x$3; $f.x$4 = x$4; $f.x$5 = x$5; $f.$s = $s; $f.$r = $r; return $f;
  3054. };
  3055. SectionReader.prototype.ReadAt = function(p, off) { return this.$val.ReadAt(p, off); };
  3056. SectionReader.ptr.prototype.Size = function() {
  3057. var $ptr, s, x, x$1;
  3058. s = this;
  3059. return (x = s.limit, x$1 = s.base, new $Int64(x.$high - x$1.$high, x.$low - x$1.$low));
  3060. };
  3061. SectionReader.prototype.Size = function() { return this.$val.Size(); };
  3062. multiReader.ptr.prototype.Read = function(p) {
  3063. var $ptr, _r, _tmp, _tmp$1, _tuple, err, mr, n, p, x, $s, $r;
  3064. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; err = $f.err; mr = $f.mr; n = $f.n; p = $f.p; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  3065. n = 0;
  3066. err = $ifaceNil;
  3067. mr = this;
  3068. /* while (true) { */ case 1:
  3069. /* if (!(mr.readers.$length > 0)) { break; } */ if(!(mr.readers.$length > 0)) { $s = 2; continue; }
  3070. _r = (x = mr.readers, (0 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 0])).Read(p); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  3071. _tuple = _r; n = _tuple[0]; err = _tuple[1];
  3072. if (n > 0 || !($interfaceIsEqual(err, $pkg.EOF))) {
  3073. if ($interfaceIsEqual(err, $pkg.EOF)) {
  3074. err = $ifaceNil;
  3075. }
  3076. return [n, err];
  3077. }
  3078. mr.readers = $subslice(mr.readers, 1);
  3079. /* } */ $s = 1; continue; case 2:
  3080. _tmp = 0; _tmp$1 = $pkg.EOF; n = _tmp; err = _tmp$1;
  3081. return [n, err];
  3082. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: multiReader.ptr.prototype.Read }; } $f.$ptr = $ptr; $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f.err = err; $f.mr = mr; $f.n = n; $f.p = p; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
  3083. };
  3084. multiReader.prototype.Read = function(p) { return this.$val.Read(p); };
  3085. MultiReader = function(readers) {
  3086. var $ptr, r, readers;
  3087. r = $makeSlice(sliceType$1, readers.$length);
  3088. $copySlice(r, readers);
  3089. return new multiReader.ptr(r);
  3090. };
  3091. $pkg.MultiReader = MultiReader;
  3092. pipe.ptr.prototype.read = function(b) {
  3093. var $ptr, _tmp, _tmp$1, _tmp$2, _tmp$3, b, err, n, p, $s, $deferred, $r;
  3094. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; b = $f.b; err = $f.err; n = $f.n; p = $f.p; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
  3095. n = 0;
  3096. err = $ifaceNil;
  3097. p = this;
  3098. $r = p.rl.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  3099. $deferred.push([$methodVal(p.rl, "Unlock"), []]);
  3100. $r = p.l.Lock(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  3101. $deferred.push([$methodVal(p.l, "Unlock"), []]);
  3102. /* while (true) { */ case 3:
  3103. if (!($interfaceIsEqual(p.rerr, $ifaceNil))) {
  3104. _tmp = 0; _tmp$1 = $pkg.ErrClosedPipe; n = _tmp; err = _tmp$1;
  3105. return [n, err];
  3106. }
  3107. if (!(p.data === sliceType.nil)) {
  3108. /* break; */ $s = 4; continue;
  3109. }
  3110. if (!($interfaceIsEqual(p.werr, $ifaceNil))) {
  3111. _tmp$2 = 0; _tmp$3 = p.werr; n = _tmp$2; err = _tmp$3;
  3112. return [n, err];
  3113. }
  3114. $r = p.rwait.Wait(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  3115. /* } */ $s = 3; continue; case 4:
  3116. n = $copySlice(b, p.data);
  3117. p.data = $subslice(p.data, n);
  3118. /* */ if (p.data.$length === 0) { $s = 6; continue; }
  3119. /* */ $s = 7; continue;
  3120. /* if (p.data.$length === 0) { */ case 6:
  3121. p.data = sliceType.nil;
  3122. $r = p.wwait.Signal(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  3123. /* } */ case 7:
  3124. return [n, err];
  3125. /* */ $s = -1; case -1: } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if (!$curGoroutine.asleep) { return [n, err]; } if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: pipe.ptr.prototype.read }; } $f.$ptr = $ptr; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f.b = b; $f.err = err; $f.n = n; $f.p = p; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
  3126. };
  3127. pipe.prototype.read = function(b) { return this.$val.read(b); };
  3128. pipe.ptr.prototype.write = function(b) {
  3129. var $ptr, b, err, n, p, $s, $deferred, $r;
  3130. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; b = $f.b; err = $f.err; n = $f.n; p = $f.p; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
  3131. n = 0;
  3132. err = $ifaceNil;
  3133. p = this;
  3134. if (b === sliceType.nil) {
  3135. b = new sliceType(zero);
  3136. }
  3137. $r = p.wl.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  3138. $deferred.push([$methodVal(p.wl, "Unlock"), []]);
  3139. $r = p.l.Lock(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  3140. $deferred.push([$methodVal(p.l, "Unlock"), []]);
  3141. if (!($interfaceIsEqual(p.werr, $ifaceNil))) {
  3142. err = $pkg.ErrClosedPipe;
  3143. return [n, err];
  3144. }
  3145. p.data = b;
  3146. $r = p.rwait.Signal(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  3147. /* while (true) { */ case 4:
  3148. if (p.data === sliceType.nil) {
  3149. /* break; */ $s = 5; continue;
  3150. }
  3151. if (!($interfaceIsEqual(p.rerr, $ifaceNil))) {
  3152. err = p.rerr;
  3153. /* break; */ $s = 5; continue;
  3154. }
  3155. if (!($interfaceIsEqual(p.werr, $ifaceNil))) {
  3156. err = $pkg.ErrClosedPipe;
  3157. }
  3158. $r = p.wwait.Wait(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  3159. /* } */ $s = 4; continue; case 5:
  3160. n = b.$length - p.data.$length >> 0;
  3161. p.data = sliceType.nil;
  3162. return [n, err];
  3163. /* */ $s = -1; case -1: } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if (!$curGoroutine.asleep) { return [n, err]; } if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: pipe.ptr.prototype.write }; } $f.$ptr = $ptr; $f.b = b; $f.err = err; $f.n = n; $f.p = p; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
  3164. };
  3165. pipe.prototype.write = function(b) { return this.$val.write(b); };
  3166. pipe.ptr.prototype.rclose = function(err) {
  3167. var $ptr, err, p, $s, $deferred, $r;
  3168. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; err = $f.err; p = $f.p; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
  3169. p = this;
  3170. if ($interfaceIsEqual(err, $ifaceNil)) {
  3171. err = $pkg.ErrClosedPipe;
  3172. }
  3173. $r = p.l.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  3174. $deferred.push([$methodVal(p.l, "Unlock"), []]);
  3175. p.rerr = err;
  3176. $r = p.rwait.Signal(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  3177. $r = p.wwait.Signal(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  3178. /* */ $s = -1; case -1: } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: pipe.ptr.prototype.rclose }; } $f.$ptr = $ptr; $f.err = err; $f.p = p; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
  3179. };
  3180. pipe.prototype.rclose = function(err) { return this.$val.rclose(err); };
  3181. pipe.ptr.prototype.wclose = function(err) {
  3182. var $ptr, err, p, $s, $deferred, $r;
  3183. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; err = $f.err; p = $f.p; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
  3184. p = this;
  3185. if ($interfaceIsEqual(err, $ifaceNil)) {
  3186. err = $pkg.EOF;
  3187. }
  3188. $r = p.l.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  3189. $deferred.push([$methodVal(p.l, "Unlock"), []]);
  3190. p.werr = err;
  3191. $r = p.rwait.Signal(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  3192. $r = p.wwait.Signal(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  3193. /* */ $s = -1; case -1: } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: pipe.ptr.prototype.wclose }; } $f.$ptr = $ptr; $f.err = err; $f.p = p; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
  3194. };
  3195. pipe.prototype.wclose = function(err) { return this.$val.wclose(err); };
  3196. PipeReader.ptr.prototype.Read = function(data) {
  3197. var $ptr, _r, _tuple, data, err, n, r, $s, $r;
  3198. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tuple = $f._tuple; data = $f.data; err = $f.err; n = $f.n; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  3199. n = 0;
  3200. err = $ifaceNil;
  3201. r = this;
  3202. _r = r.p.read(data); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  3203. _tuple = _r; n = _tuple[0]; err = _tuple[1];
  3204. return [n, err];
  3205. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: PipeReader.ptr.prototype.Read }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple = _tuple; $f.data = data; $f.err = err; $f.n = n; $f.r = r; $f.$s = $s; $f.$r = $r; return $f;
  3206. };
  3207. PipeReader.prototype.Read = function(data) { return this.$val.Read(data); };
  3208. PipeReader.ptr.prototype.Close = function() {
  3209. var $ptr, _r, r, $s, $r;
  3210. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  3211. r = this;
  3212. _r = r.CloseWithError($ifaceNil); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  3213. return _r;
  3214. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: PipeReader.ptr.prototype.Close }; } $f.$ptr = $ptr; $f._r = _r; $f.r = r; $f.$s = $s; $f.$r = $r; return $f;
  3215. };
  3216. PipeReader.prototype.Close = function() { return this.$val.Close(); };
  3217. PipeReader.ptr.prototype.CloseWithError = function(err) {
  3218. var $ptr, err, r, $s, $r;
  3219. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; err = $f.err; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  3220. r = this;
  3221. $r = r.p.rclose(err); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  3222. return $ifaceNil;
  3223. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: PipeReader.ptr.prototype.CloseWithError }; } $f.$ptr = $ptr; $f.err = err; $f.r = r; $f.$s = $s; $f.$r = $r; return $f;
  3224. };
  3225. PipeReader.prototype.CloseWithError = function(err) { return this.$val.CloseWithError(err); };
  3226. PipeWriter.ptr.prototype.Write = function(data) {
  3227. var $ptr, _r, _tuple, data, err, n, w, $s, $r;
  3228. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tuple = $f._tuple; data = $f.data; err = $f.err; n = $f.n; w = $f.w; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  3229. n = 0;
  3230. err = $ifaceNil;
  3231. w = this;
  3232. _r = w.p.write(data); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  3233. _tuple = _r; n = _tuple[0]; err = _tuple[1];
  3234. return [n, err];
  3235. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: PipeWriter.ptr.prototype.Write }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple = _tuple; $f.data = data; $f.err = err; $f.n = n; $f.w = w; $f.$s = $s; $f.$r = $r; return $f;
  3236. };
  3237. PipeWriter.prototype.Write = function(data) { return this.$val.Write(data); };
  3238. PipeWriter.ptr.prototype.Close = function() {
  3239. var $ptr, _r, w, $s, $r;
  3240. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; w = $f.w; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  3241. w = this;
  3242. _r = w.CloseWithError($ifaceNil); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  3243. return _r;
  3244. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: PipeWriter.ptr.prototype.Close }; } $f.$ptr = $ptr; $f._r = _r; $f.w = w; $f.$s = $s; $f.$r = $r; return $f;
  3245. };
  3246. PipeWriter.prototype.Close = function() { return this.$val.Close(); };
  3247. PipeWriter.ptr.prototype.CloseWithError = function(err) {
  3248. var $ptr, err, w, $s, $r;
  3249. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; err = $f.err; w = $f.w; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  3250. w = this;
  3251. $r = w.p.wclose(err); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  3252. return $ifaceNil;
  3253. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: PipeWriter.ptr.prototype.CloseWithError }; } $f.$ptr = $ptr; $f.err = err; $f.w = w; $f.$s = $s; $f.$r = $r; return $f;
  3254. };
  3255. PipeWriter.prototype.CloseWithError = function(err) { return this.$val.CloseWithError(err); };
  3256. Pipe = function() {
  3257. var $ptr, p, r, w;
  3258. p = new pipe.ptr();
  3259. p.rwait.L = p.l;
  3260. p.wwait.L = p.l;
  3261. r = new PipeReader.ptr(p);
  3262. w = new PipeWriter.ptr(p);
  3263. return [r, w];
  3264. };
  3265. $pkg.Pipe = Pipe;
  3266. ptrType.methods = [{prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType], [$Int, $error], false)}];
  3267. ptrType$1.methods = [{prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType], [$Int, $error], false)}, {prop: "Seek", name: "Seek", pkg: "", typ: $funcType([$Int64, $Int], [$Int64, $error], false)}, {prop: "ReadAt", name: "ReadAt", pkg: "", typ: $funcType([sliceType, $Int64], [$Int, $error], false)}, {prop: "Size", name: "Size", pkg: "", typ: $funcType([], [$Int64], false)}];
  3268. ptrType$3.methods = [{prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType], [$Int, $error], false)}];
  3269. ptrType$5.methods = [{prop: "read", name: "read", pkg: "io", typ: $funcType([sliceType], [$Int, $error], false)}, {prop: "write", name: "write", pkg: "io", typ: $funcType([sliceType], [$Int, $error], false)}, {prop: "rclose", name: "rclose", pkg: "io", typ: $funcType([$error], [], false)}, {prop: "wclose", name: "wclose", pkg: "io", typ: $funcType([$error], [], false)}];
  3270. ptrType$6.methods = [{prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType], [$Int, $error], false)}, {prop: "Close", name: "Close", pkg: "", typ: $funcType([], [$error], false)}, {prop: "CloseWithError", name: "CloseWithError", pkg: "", typ: $funcType([$error], [$error], false)}];
  3271. ptrType$7.methods = [{prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType], [$Int, $error], false)}, {prop: "Close", name: "Close", pkg: "", typ: $funcType([], [$error], false)}, {prop: "CloseWithError", name: "CloseWithError", pkg: "", typ: $funcType([$error], [$error], false)}];
  3272. Reader.init([{prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType], [$Int, $error], false)}]);
  3273. Writer.init([{prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType], [$Int, $error], false)}]);
  3274. Closer.init([{prop: "Close", name: "Close", pkg: "", typ: $funcType([], [$error], false)}]);
  3275. ReadCloser.init([{prop: "Close", name: "Close", pkg: "", typ: $funcType([], [$error], false)}, {prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType], [$Int, $error], false)}]);
  3276. ReaderFrom.init([{prop: "ReadFrom", name: "ReadFrom", pkg: "", typ: $funcType([Reader], [$Int64, $error], false)}]);
  3277. WriterTo.init([{prop: "WriteTo", name: "WriteTo", pkg: "", typ: $funcType([Writer], [$Int64, $error], false)}]);
  3278. ReaderAt.init([{prop: "ReadAt", name: "ReadAt", pkg: "", typ: $funcType([sliceType, $Int64], [$Int, $error], false)}]);
  3279. ByteWriter.init([{prop: "WriteByte", name: "WriteByte", pkg: "", typ: $funcType([$Uint8], [$error], false)}]);
  3280. RuneReader.init([{prop: "ReadRune", name: "ReadRune", pkg: "", typ: $funcType([], [$Int32, $Int, $error], false)}]);
  3281. RuneScanner.init([{prop: "ReadRune", name: "ReadRune", pkg: "", typ: $funcType([], [$Int32, $Int, $error], false)}, {prop: "UnreadRune", name: "UnreadRune", pkg: "", typ: $funcType([], [$error], false)}]);
  3282. stringWriter.init([{prop: "WriteString", name: "WriteString", pkg: "", typ: $funcType([$String], [$Int, $error], false)}]);
  3283. LimitedReader.init([{prop: "R", name: "R", pkg: "", typ: Reader, tag: ""}, {prop: "N", name: "N", pkg: "", typ: $Int64, tag: ""}]);
  3284. SectionReader.init([{prop: "r", name: "r", pkg: "io", typ: ReaderAt, tag: ""}, {prop: "base", name: "base", pkg: "io", typ: $Int64, tag: ""}, {prop: "off", name: "off", pkg: "io", typ: $Int64, tag: ""}, {prop: "limit", name: "limit", pkg: "io", typ: $Int64, tag: ""}]);
  3285. multiReader.init([{prop: "readers", name: "readers", pkg: "io", typ: sliceType$1, tag: ""}]);
  3286. pipe.init([{prop: "rl", name: "rl", pkg: "io", typ: sync.Mutex, tag: ""}, {prop: "wl", name: "wl", pkg: "io", typ: sync.Mutex, tag: ""}, {prop: "l", name: "l", pkg: "io", typ: sync.Mutex, tag: ""}, {prop: "data", name: "data", pkg: "io", typ: sliceType, tag: ""}, {prop: "rwait", name: "rwait", pkg: "io", typ: sync.Cond, tag: ""}, {prop: "wwait", name: "wwait", pkg: "io", typ: sync.Cond, tag: ""}, {prop: "rerr", name: "rerr", pkg: "io", typ: $error, tag: ""}, {prop: "werr", name: "werr", pkg: "io", typ: $error, tag: ""}]);
  3287. PipeReader.init([{prop: "p", name: "p", pkg: "io", typ: ptrType$5, tag: ""}]);
  3288. PipeWriter.init([{prop: "p", name: "p", pkg: "io", typ: ptrType$5, tag: ""}]);
  3289. $init = function() {
  3290. $pkg.$init = function() {};
  3291. /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  3292. $r = errors.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  3293. $r = sync.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  3294. zero = arrayType.zero();
  3295. $pkg.ErrShortWrite = errors.New("short write");
  3296. $pkg.ErrShortBuffer = errors.New("short buffer");
  3297. $pkg.EOF = errors.New("EOF");
  3298. $pkg.ErrUnexpectedEOF = errors.New("unexpected EOF");
  3299. $pkg.ErrNoProgress = errors.New("multiple Read calls return no data or error");
  3300. errWhence = errors.New("Seek: invalid whence");
  3301. errOffset = errors.New("Seek: invalid offset");
  3302. $pkg.ErrClosedPipe = errors.New("io: read/write on closed pipe");
  3303. /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
  3304. };
  3305. $pkg.$init = $init;
  3306. return $pkg;
  3307. })();
  3308. $packages["math"] = (function() {
  3309. var $pkg = {}, $init, js, arrayType, arrayType$1, arrayType$2, structType, arrayType$3, math, zero, posInf, negInf, nan, buf, pow10tab, Abs, Exp, Frexp, Inf, IsInf, IsNaN, Log, Log2, NaN, init, Float32bits, Float32frombits, Float64bits, Float64frombits, abs, normalize, frexp, log2, init$1;
  3310. js = $packages["github.com/gopherjs/gopherjs/js"];
  3311. arrayType = $arrayType($Uint32, 2);
  3312. arrayType$1 = $arrayType($Float32, 2);
  3313. arrayType$2 = $arrayType($Float64, 1);
  3314. structType = $structType([{prop: "uint32array", name: "uint32array", pkg: "math", typ: arrayType, tag: ""}, {prop: "float32array", name: "float32array", pkg: "math", typ: arrayType$1, tag: ""}, {prop: "float64array", name: "float64array", pkg: "math", typ: arrayType$2, tag: ""}]);
  3315. arrayType$3 = $arrayType($Float64, 70);
  3316. Abs = function(x) {
  3317. var $ptr, x;
  3318. return abs(x);
  3319. };
  3320. $pkg.Abs = Abs;
  3321. Exp = function(x) {
  3322. var $ptr, x;
  3323. return $parseFloat(math.exp(x));
  3324. };
  3325. $pkg.Exp = Exp;
  3326. Frexp = function(f) {
  3327. var $ptr, _tuple, exp$1, f, frac;
  3328. frac = 0;
  3329. exp$1 = 0;
  3330. _tuple = frexp(f); frac = _tuple[0]; exp$1 = _tuple[1];
  3331. return [frac, exp$1];
  3332. };
  3333. $pkg.Frexp = Frexp;
  3334. Inf = function(sign) {
  3335. var $ptr, sign;
  3336. if (sign >= 0) {
  3337. return posInf;
  3338. } else {
  3339. return negInf;
  3340. }
  3341. };
  3342. $pkg.Inf = Inf;
  3343. IsInf = function(f, sign) {
  3344. var $ptr, f, sign;
  3345. if (f === posInf) {
  3346. return sign >= 0;
  3347. }
  3348. if (f === negInf) {
  3349. return sign <= 0;
  3350. }
  3351. return false;
  3352. };
  3353. $pkg.IsInf = IsInf;
  3354. IsNaN = function(f) {
  3355. var $ptr, f, is;
  3356. is = false;
  3357. is = !((f === f));
  3358. return is;
  3359. };
  3360. $pkg.IsNaN = IsNaN;
  3361. Log = function(x) {
  3362. var $ptr, x;
  3363. if (!((x === x))) {
  3364. return nan;
  3365. }
  3366. return $parseFloat(math.log(x));
  3367. };
  3368. $pkg.Log = Log;
  3369. Log2 = function(x) {
  3370. var $ptr, x;
  3371. return log2(x);
  3372. };
  3373. $pkg.Log2 = Log2;
  3374. NaN = function() {
  3375. var $ptr;
  3376. return nan;
  3377. };
  3378. $pkg.NaN = NaN;
  3379. init = function() {
  3380. var $ptr, ab;
  3381. ab = new ($global.ArrayBuffer)(8);
  3382. buf.uint32array = new ($global.Uint32Array)(ab);
  3383. buf.float32array = new ($global.Float32Array)(ab);
  3384. buf.float64array = new ($global.Float64Array)(ab);
  3385. };
  3386. Float32bits = function(f) {
  3387. var $ptr, f;
  3388. buf.float32array[0] = f;
  3389. return buf.uint32array[0];
  3390. };
  3391. $pkg.Float32bits = Float32bits;
  3392. Float32frombits = function(b) {
  3393. var $ptr, b;
  3394. buf.uint32array[0] = b;
  3395. return buf.float32array[0];
  3396. };
  3397. $pkg.Float32frombits = Float32frombits;
  3398. Float64bits = function(f) {
  3399. var $ptr, f, x, x$1;
  3400. buf.float64array[0] = f;
  3401. return (x = $shiftLeft64(new $Uint64(0, buf.uint32array[1]), 32), x$1 = new $Uint64(0, buf.uint32array[0]), new $Uint64(x.$high + x$1.$high, x.$low + x$1.$low));
  3402. };
  3403. $pkg.Float64bits = Float64bits;
  3404. Float64frombits = function(b) {
  3405. var $ptr, b;
  3406. buf.uint32array[0] = (b.$low >>> 0);
  3407. buf.uint32array[1] = ($shiftRightUint64(b, 32).$low >>> 0);
  3408. return buf.float64array[0];
  3409. };
  3410. $pkg.Float64frombits = Float64frombits;
  3411. abs = function(x) {
  3412. var $ptr, x;
  3413. if (x < 0) {
  3414. return -x;
  3415. } else if (x === 0) {
  3416. return 0;
  3417. }
  3418. return x;
  3419. };
  3420. normalize = function(x) {
  3421. var $ptr, _tmp, _tmp$1, _tmp$2, _tmp$3, exp$1, x, y;
  3422. y = 0;
  3423. exp$1 = 0;
  3424. if (Abs(x) < 2.2250738585072014e-308) {
  3425. _tmp = x * 4.503599627370496e+15; _tmp$1 = -52; y = _tmp; exp$1 = _tmp$1;
  3426. return [y, exp$1];
  3427. }
  3428. _tmp$2 = x; _tmp$3 = 0; y = _tmp$2; exp$1 = _tmp$3;
  3429. return [y, exp$1];
  3430. };
  3431. frexp = function(f) {
  3432. var $ptr, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, exp$1, f, frac, x, x$1, x$2, x$3;
  3433. frac = 0;
  3434. exp$1 = 0;
  3435. if (f === 0) {
  3436. _tmp = f; _tmp$1 = 0; frac = _tmp; exp$1 = _tmp$1;
  3437. return [frac, exp$1];
  3438. } else if (IsInf(f, 0) || IsNaN(f)) {
  3439. _tmp$2 = f; _tmp$3 = 0; frac = _tmp$2; exp$1 = _tmp$3;
  3440. return [frac, exp$1];
  3441. }
  3442. _tuple = normalize(f); f = _tuple[0]; exp$1 = _tuple[1];
  3443. x = Float64bits(f);
  3444. exp$1 = exp$1 + (((((x$1 = $shiftRightUint64(x, 52), new $Uint64(x$1.$high & 0, (x$1.$low & 2047) >>> 0)).$low >> 0) - 1023 >> 0) + 1 >> 0)) >> 0;
  3445. x = (x$2 = new $Uint64(2146435072, 0), new $Uint64(x.$high & ~x$2.$high, (x.$low & ~x$2.$low) >>> 0));
  3446. x = (x$3 = new $Uint64(1071644672, 0), new $Uint64(x.$high | x$3.$high, (x.$low | x$3.$low) >>> 0));
  3447. frac = Float64frombits(x);
  3448. return [frac, exp$1];
  3449. };
  3450. log2 = function(x) {
  3451. var $ptr, _tuple, exp$1, frac, x;
  3452. _tuple = Frexp(x); frac = _tuple[0]; exp$1 = _tuple[1];
  3453. return Log(frac) * 1.4426950408889634 + exp$1;
  3454. };
  3455. init$1 = function() {
  3456. var $ptr, _q, i, m, x;
  3457. pow10tab[0] = 1;
  3458. pow10tab[1] = 10;
  3459. i = 2;
  3460. while (true) {
  3461. if (!(i < 70)) { break; }
  3462. m = (_q = i / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero"));
  3463. ((i < 0 || i >= pow10tab.length) ? $throwRuntimeError("index out of range") : pow10tab[i] = ((m < 0 || m >= pow10tab.length) ? $throwRuntimeError("index out of range") : pow10tab[m]) * (x = i - m >> 0, ((x < 0 || x >= pow10tab.length) ? $throwRuntimeError("index out of range") : pow10tab[x])));
  3464. i = i + (1) >> 0;
  3465. }
  3466. };
  3467. $init = function() {
  3468. $pkg.$init = function() {};
  3469. /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  3470. $r = js.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  3471. buf = new structType.ptr();
  3472. pow10tab = arrayType$3.zero();
  3473. math = $global.Math;
  3474. zero = 0;
  3475. posInf = 1 / zero;
  3476. negInf = -1 / zero;
  3477. nan = 0 / zero;
  3478. init();
  3479. init$1();
  3480. /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
  3481. };
  3482. $pkg.$init = $init;
  3483. return $pkg;
  3484. })();
  3485. $packages["unicode"] = (function() {
  3486. var $pkg = {}, $init, RangeTable, Range16, Range32, CaseRange, d, foldPair, sliceType, sliceType$1, ptrType, sliceType$2, sliceType$3, sliceType$4, _C, _Cc, _Cf, _Co, _Cs, _L, _Ll, _Lm, _Lo, _Lt, _Lu, _M, _Mc, _Me, _Mn, _N, _Nd, _Nl, _No, _P, _Pc, _Pd, _Pe, _Pf, _Pi, _Po, _Ps, _S, _Sc, _Sk, _Sm, _So, _Z, _Zl, _Zp, _Zs, _Arabic, _Armenian, _Avestan, _Balinese, _Bamum, _Bassa_Vah, _Batak, _Bengali, _Bopomofo, _Brahmi, _Braille, _Buginese, _Buhid, _Canadian_Aboriginal, _Carian, _Caucasian_Albanian, _Chakma, _Cham, _Cherokee, _Common, _Coptic, _Cuneiform, _Cypriot, _Cyrillic, _Deseret, _Devanagari, _Duployan, _Egyptian_Hieroglyphs, _Elbasan, _Ethiopic, _Georgian, _Glagolitic, _Gothic, _Grantha, _Greek, _Gujarati, _Gurmukhi, _Han, _Hangul, _Hanunoo, _Hebrew, _Hiragana, _Imperial_Aramaic, _Inherited, _Inscriptional_Pahlavi, _Inscriptional_Parthian, _Javanese, _Kaithi, _Kannada, _Katakana, _Kayah_Li, _Kharoshthi, _Khmer, _Khojki, _Khudawadi, _Lao, _Latin, _Lepcha, _Limbu, _Linear_A, _Linear_B, _Lisu, _Lycian, _Lydian, _Mahajani, _Malayalam, _Mandaic, _Manichaean, _Meetei_Mayek, _Mende_Kikakui, _Meroitic_Cursive, _Meroitic_Hieroglyphs, _Miao, _Modi, _Mongolian, _Mro, _Myanmar, _Nabataean, _New_Tai_Lue, _Nko, _Ogham, _Ol_Chiki, _Old_Italic, _Old_North_Arabian, _Old_Permic, _Old_Persian, _Old_South_Arabian, _Old_Turkic, _Oriya, _Osmanya, _Pahawh_Hmong, _Palmyrene, _Pau_Cin_Hau, _Phags_Pa, _Phoenician, _Psalter_Pahlavi, _Rejang, _Runic, _Samaritan, _Saurashtra, _Sharada, _Shavian, _Siddham, _Sinhala, _Sora_Sompeng, _Sundanese, _Syloti_Nagri, _Syriac, _Tagalog, _Tagbanwa, _Tai_Le, _Tai_Tham, _Tai_Viet, _Takri, _Tamil, _Telugu, _Thaana, _Thai, _Tibetan, _Tifinagh, _Tirhuta, _Ugaritic, _Vai, _Warang_Citi, _Yi, _White_Space, _CaseRanges, properties, caseOrbit, foldCommon, foldGreek, foldInherited, foldL, foldLl, foldLt, foldLu, foldM, foldMn, _map, _key, _map$1, _key$1, _map$3, _key$3, _map$4, _key$4, to, IsDigit, IsPrint, In, IsLetter, IsSpace, is16, is32, Is, isExcludingLatin, To, ToUpper, ToLower, SimpleFold;
  3487. RangeTable = $pkg.RangeTable = $newType(0, $kindStruct, "unicode.RangeTable", "RangeTable", "unicode", function(R16_, R32_, LatinOffset_) {
  3488. this.$val = this;
  3489. if (arguments.length === 0) {
  3490. this.R16 = sliceType.nil;
  3491. this.R32 = sliceType$1.nil;
  3492. this.LatinOffset = 0;
  3493. return;
  3494. }
  3495. this.R16 = R16_;
  3496. this.R32 = R32_;
  3497. this.LatinOffset = LatinOffset_;
  3498. });
  3499. Range16 = $pkg.Range16 = $newType(0, $kindStruct, "unicode.Range16", "Range16", "unicode", function(Lo_, Hi_, Stride_) {
  3500. this.$val = this;
  3501. if (arguments.length === 0) {
  3502. this.Lo = 0;
  3503. this.Hi = 0;
  3504. this.Stride = 0;
  3505. return;
  3506. }
  3507. this.Lo = Lo_;
  3508. this.Hi = Hi_;
  3509. this.Stride = Stride_;
  3510. });
  3511. Range32 = $pkg.Range32 = $newType(0, $kindStruct, "unicode.Range32", "Range32", "unicode", function(Lo_, Hi_, Stride_) {
  3512. this.$val = this;
  3513. if (arguments.length === 0) {
  3514. this.Lo = 0;
  3515. this.Hi = 0;
  3516. this.Stride = 0;
  3517. return;
  3518. }
  3519. this.Lo = Lo_;
  3520. this.Hi = Hi_;
  3521. this.Stride = Stride_;
  3522. });
  3523. CaseRange = $pkg.CaseRange = $newType(0, $kindStruct, "unicode.CaseRange", "CaseRange", "unicode", function(Lo_, Hi_, Delta_) {
  3524. this.$val = this;
  3525. if (arguments.length === 0) {
  3526. this.Lo = 0;
  3527. this.Hi = 0;
  3528. this.Delta = d.zero();
  3529. return;
  3530. }
  3531. this.Lo = Lo_;
  3532. this.Hi = Hi_;
  3533. this.Delta = Delta_;
  3534. });
  3535. d = $pkg.d = $newType(12, $kindArray, "unicode.d", "d", "unicode", null);
  3536. foldPair = $pkg.foldPair = $newType(0, $kindStruct, "unicode.foldPair", "foldPair", "unicode", function(From_, To_) {
  3537. this.$val = this;
  3538. if (arguments.length === 0) {
  3539. this.From = 0;
  3540. this.To = 0;
  3541. return;
  3542. }
  3543. this.From = From_;
  3544. this.To = To_;
  3545. });
  3546. sliceType = $sliceType(Range16);
  3547. sliceType$1 = $sliceType(Range32);
  3548. ptrType = $ptrType(RangeTable);
  3549. sliceType$2 = $sliceType(ptrType);
  3550. sliceType$3 = $sliceType(CaseRange);
  3551. sliceType$4 = $sliceType(foldPair);
  3552. to = function(_case, r, caseRange) {
  3553. var $ptr, _case, _q, caseRange, cr, delta, hi, lo, m, r, x;
  3554. if (_case < 0 || 3 <= _case) {
  3555. return 65533;
  3556. }
  3557. lo = 0;
  3558. hi = caseRange.$length;
  3559. while (true) {
  3560. if (!(lo < hi)) { break; }
  3561. m = lo + (_q = ((hi - lo >> 0)) / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")) >> 0;
  3562. cr = ((m < 0 || m >= caseRange.$length) ? $throwRuntimeError("index out of range") : caseRange.$array[caseRange.$offset + m]);
  3563. if ((cr.Lo >> 0) <= r && r <= (cr.Hi >> 0)) {
  3564. delta = (x = cr.Delta, ((_case < 0 || _case >= x.length) ? $throwRuntimeError("index out of range") : x[_case]));
  3565. if (delta > 1114111) {
  3566. return (cr.Lo >> 0) + ((((((r - (cr.Lo >> 0) >> 0)) & ~1) >> 0) | ((_case & 1) >> 0))) >> 0;
  3567. }
  3568. return r + delta >> 0;
  3569. }
  3570. if (r < (cr.Lo >> 0)) {
  3571. hi = m;
  3572. } else {
  3573. lo = m + 1 >> 0;
  3574. }
  3575. }
  3576. return r;
  3577. };
  3578. IsDigit = function(r) {
  3579. var $ptr, r;
  3580. if (r <= 255) {
  3581. return 48 <= r && r <= 57;
  3582. }
  3583. return isExcludingLatin($pkg.Digit, r);
  3584. };
  3585. $pkg.IsDigit = IsDigit;
  3586. IsPrint = function(r) {
  3587. var $ptr, r, x;
  3588. if ((r >>> 0) <= 255) {
  3589. return !(((((x = (r << 24 >>> 24), ((x < 0 || x >= properties.length) ? $throwRuntimeError("index out of range") : properties[x])) & 128) >>> 0) === 0));
  3590. }
  3591. return In(r, $pkg.PrintRanges);
  3592. };
  3593. $pkg.IsPrint = IsPrint;
  3594. In = function(r, ranges) {
  3595. var $ptr, _i, _ref, inside, r, ranges;
  3596. _ref = ranges;
  3597. _i = 0;
  3598. while (true) {
  3599. if (!(_i < _ref.$length)) { break; }
  3600. inside = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]);
  3601. if (Is(inside, r)) {
  3602. return true;
  3603. }
  3604. _i++;
  3605. }
  3606. return false;
  3607. };
  3608. $pkg.In = In;
  3609. IsLetter = function(r) {
  3610. var $ptr, r, x;
  3611. if ((r >>> 0) <= 255) {
  3612. return !(((((x = (r << 24 >>> 24), ((x < 0 || x >= properties.length) ? $throwRuntimeError("index out of range") : properties[x])) & 96) >>> 0) === 0));
  3613. }
  3614. return isExcludingLatin($pkg.Letter, r);
  3615. };
  3616. $pkg.IsLetter = IsLetter;
  3617. IsSpace = function(r) {
  3618. var $ptr, _ref, r;
  3619. if ((r >>> 0) <= 255) {
  3620. _ref = r;
  3621. if (_ref === 9 || _ref === 10 || _ref === 11 || _ref === 12 || _ref === 13 || _ref === 32 || _ref === 133 || _ref === 160) {
  3622. return true;
  3623. }
  3624. return false;
  3625. }
  3626. return isExcludingLatin($pkg.White_Space, r);
  3627. };
  3628. $pkg.IsSpace = IsSpace;
  3629. is16 = function(ranges, r) {
  3630. var $ptr, _i, _q, _r, _r$1, _ref, hi, i, lo, m, r, range_, range_$1, ranges;
  3631. if (ranges.$length <= 18 || r <= 255) {
  3632. _ref = ranges;
  3633. _i = 0;
  3634. while (true) {
  3635. if (!(_i < _ref.$length)) { break; }
  3636. i = _i;
  3637. range_ = ((i < 0 || i >= ranges.$length) ? $throwRuntimeError("index out of range") : ranges.$array[ranges.$offset + i]);
  3638. if (r < range_.Lo) {
  3639. return false;
  3640. }
  3641. if (r <= range_.Hi) {
  3642. return (_r = ((r - range_.Lo << 16 >>> 16)) % range_.Stride, _r === _r ? _r : $throwRuntimeError("integer divide by zero")) === 0;
  3643. }
  3644. _i++;
  3645. }
  3646. return false;
  3647. }
  3648. lo = 0;
  3649. hi = ranges.$length;
  3650. while (true) {
  3651. if (!(lo < hi)) { break; }
  3652. m = lo + (_q = ((hi - lo >> 0)) / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")) >> 0;
  3653. range_$1 = ((m < 0 || m >= ranges.$length) ? $throwRuntimeError("index out of range") : ranges.$array[ranges.$offset + m]);
  3654. if (range_$1.Lo <= r && r <= range_$1.Hi) {
  3655. return (_r$1 = ((r - range_$1.Lo << 16 >>> 16)) % range_$1.Stride, _r$1 === _r$1 ? _r$1 : $throwRuntimeError("integer divide by zero")) === 0;
  3656. }
  3657. if (r < range_$1.Lo) {
  3658. hi = m;
  3659. } else {
  3660. lo = m + 1 >> 0;
  3661. }
  3662. }
  3663. return false;
  3664. };
  3665. is32 = function(ranges, r) {
  3666. var $ptr, _i, _q, _r, _r$1, _ref, hi, i, lo, m, r, range_, range_$1, ranges;
  3667. if (ranges.$length <= 18) {
  3668. _ref = ranges;
  3669. _i = 0;
  3670. while (true) {
  3671. if (!(_i < _ref.$length)) { break; }
  3672. i = _i;
  3673. range_ = ((i < 0 || i >= ranges.$length) ? $throwRuntimeError("index out of range") : ranges.$array[ranges.$offset + i]);
  3674. if (r < range_.Lo) {
  3675. return false;
  3676. }
  3677. if (r <= range_.Hi) {
  3678. return (_r = ((r - range_.Lo >>> 0)) % range_.Stride, _r === _r ? _r : $throwRuntimeError("integer divide by zero")) === 0;
  3679. }
  3680. _i++;
  3681. }
  3682. return false;
  3683. }
  3684. lo = 0;
  3685. hi = ranges.$length;
  3686. while (true) {
  3687. if (!(lo < hi)) { break; }
  3688. m = lo + (_q = ((hi - lo >> 0)) / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")) >> 0;
  3689. range_$1 = $clone(((m < 0 || m >= ranges.$length) ? $throwRuntimeError("index out of range") : ranges.$array[ranges.$offset + m]), Range32);
  3690. if (range_$1.Lo <= r && r <= range_$1.Hi) {
  3691. return (_r$1 = ((r - range_$1.Lo >>> 0)) % range_$1.Stride, _r$1 === _r$1 ? _r$1 : $throwRuntimeError("integer divide by zero")) === 0;
  3692. }
  3693. if (r < range_$1.Lo) {
  3694. hi = m;
  3695. } else {
  3696. lo = m + 1 >> 0;
  3697. }
  3698. }
  3699. return false;
  3700. };
  3701. Is = function(rangeTab, r) {
  3702. var $ptr, r, r16, r32, rangeTab, x;
  3703. r16 = rangeTab.R16;
  3704. if (r16.$length > 0 && r <= ((x = r16.$length - 1 >> 0, ((x < 0 || x >= r16.$length) ? $throwRuntimeError("index out of range") : r16.$array[r16.$offset + x])).Hi >> 0)) {
  3705. return is16(r16, (r << 16 >>> 16));
  3706. }
  3707. r32 = rangeTab.R32;
  3708. if (r32.$length > 0 && r >= ((0 >= r32.$length ? $throwRuntimeError("index out of range") : r32.$array[r32.$offset + 0]).Lo >> 0)) {
  3709. return is32(r32, (r >>> 0));
  3710. }
  3711. return false;
  3712. };
  3713. $pkg.Is = Is;
  3714. isExcludingLatin = function(rangeTab, r) {
  3715. var $ptr, off, r, r16, r32, rangeTab, x;
  3716. r16 = rangeTab.R16;
  3717. off = rangeTab.LatinOffset;
  3718. if (r16.$length > off && r <= ((x = r16.$length - 1 >> 0, ((x < 0 || x >= r16.$length) ? $throwRuntimeError("index out of range") : r16.$array[r16.$offset + x])).Hi >> 0)) {
  3719. return is16($subslice(r16, off), (r << 16 >>> 16));
  3720. }
  3721. r32 = rangeTab.R32;
  3722. if (r32.$length > 0 && r >= ((0 >= r32.$length ? $throwRuntimeError("index out of range") : r32.$array[r32.$offset + 0]).Lo >> 0)) {
  3723. return is32(r32, (r >>> 0));
  3724. }
  3725. return false;
  3726. };
  3727. To = function(_case, r) {
  3728. var $ptr, _case, r;
  3729. return to(_case, r, $pkg.CaseRanges);
  3730. };
  3731. $pkg.To = To;
  3732. ToUpper = function(r) {
  3733. var $ptr, r;
  3734. if (r <= 127) {
  3735. if (97 <= r && r <= 122) {
  3736. r = r - (32) >> 0;
  3737. }
  3738. return r;
  3739. }
  3740. return To(0, r);
  3741. };
  3742. $pkg.ToUpper = ToUpper;
  3743. ToLower = function(r) {
  3744. var $ptr, r;
  3745. if (r <= 127) {
  3746. if (65 <= r && r <= 90) {
  3747. r = r + (32) >> 0;
  3748. }
  3749. return r;
  3750. }
  3751. return To(1, r);
  3752. };
  3753. $pkg.ToLower = ToLower;
  3754. SimpleFold = function(r) {
  3755. var $ptr, _q, hi, l, lo, m, r;
  3756. lo = 0;
  3757. hi = caseOrbit.$length;
  3758. while (true) {
  3759. if (!(lo < hi)) { break; }
  3760. m = lo + (_q = ((hi - lo >> 0)) / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")) >> 0;
  3761. if ((((m < 0 || m >= caseOrbit.$length) ? $throwRuntimeError("index out of range") : caseOrbit.$array[caseOrbit.$offset + m]).From >> 0) < r) {
  3762. lo = m + 1 >> 0;
  3763. } else {
  3764. hi = m;
  3765. }
  3766. }
  3767. if (lo < caseOrbit.$length && ((((lo < 0 || lo >= caseOrbit.$length) ? $throwRuntimeError("index out of range") : caseOrbit.$array[caseOrbit.$offset + lo]).From >> 0) === r)) {
  3768. return (((lo < 0 || lo >= caseOrbit.$length) ? $throwRuntimeError("index out of range") : caseOrbit.$array[caseOrbit.$offset + lo]).To >> 0);
  3769. }
  3770. l = ToLower(r);
  3771. if (!((l === r))) {
  3772. return l;
  3773. }
  3774. return ToUpper(r);
  3775. };
  3776. $pkg.SimpleFold = SimpleFold;
  3777. RangeTable.init([{prop: "R16", name: "R16", pkg: "", typ: sliceType, tag: ""}, {prop: "R32", name: "R32", pkg: "", typ: sliceType$1, tag: ""}, {prop: "LatinOffset", name: "LatinOffset", pkg: "", typ: $Int, tag: ""}]);
  3778. Range16.init([{prop: "Lo", name: "Lo", pkg: "", typ: $Uint16, tag: ""}, {prop: "Hi", name: "Hi", pkg: "", typ: $Uint16, tag: ""}, {prop: "Stride", name: "Stride", pkg: "", typ: $Uint16, tag: ""}]);
  3779. Range32.init([{prop: "Lo", name: "Lo", pkg: "", typ: $Uint32, tag: ""}, {prop: "Hi", name: "Hi", pkg: "", typ: $Uint32, tag: ""}, {prop: "Stride", name: "Stride", pkg: "", typ: $Uint32, tag: ""}]);
  3780. CaseRange.init([{prop: "Lo", name: "Lo", pkg: "", typ: $Uint32, tag: ""}, {prop: "Hi", name: "Hi", pkg: "", typ: $Uint32, tag: ""}, {prop: "Delta", name: "Delta", pkg: "", typ: d, tag: ""}]);
  3781. d.init($Int32, 3);
  3782. foldPair.init([{prop: "From", name: "From", pkg: "", typ: $Uint16, tag: ""}, {prop: "To", name: "To", pkg: "", typ: $Uint16, tag: ""}]);
  3783. $init = function() {
  3784. $pkg.$init = function() {};
  3785. /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  3786. _C = new RangeTable.ptr(new sliceType([new Range16.ptr(1, 31, 1), new Range16.ptr(127, 159, 1), new Range16.ptr(173, 1536, 1363), new Range16.ptr(1537, 1541, 1), new Range16.ptr(1564, 1757, 193), new Range16.ptr(1807, 6158, 4351), new Range16.ptr(8203, 8207, 1), new Range16.ptr(8234, 8238, 1), new Range16.ptr(8288, 8292, 1), new Range16.ptr(8294, 8303, 1), new Range16.ptr(55296, 63743, 1), new Range16.ptr(65279, 65529, 250), new Range16.ptr(65530, 65531, 1)]), new sliceType$1([new Range32.ptr(69821, 113824, 44003), new Range32.ptr(113825, 113827, 1), new Range32.ptr(119155, 119162, 1), new Range32.ptr(917505, 917536, 31), new Range32.ptr(917537, 917631, 1), new Range32.ptr(983040, 1048573, 1), new Range32.ptr(1048576, 1114109, 1)]), 2);
  3787. _Cc = new RangeTable.ptr(new sliceType([new Range16.ptr(1, 31, 1), new Range16.ptr(127, 159, 1)]), sliceType$1.nil, 2);
  3788. _Cf = new RangeTable.ptr(new sliceType([new Range16.ptr(173, 1536, 1363), new Range16.ptr(1537, 1541, 1), new Range16.ptr(1564, 1757, 193), new Range16.ptr(1807, 6158, 4351), new Range16.ptr(8203, 8207, 1), new Range16.ptr(8234, 8238, 1), new Range16.ptr(8288, 8292, 1), new Range16.ptr(8294, 8303, 1), new Range16.ptr(65279, 65529, 250), new Range16.ptr(65530, 65531, 1)]), new sliceType$1([new Range32.ptr(69821, 113824, 44003), new Range32.ptr(113825, 113827, 1), new Range32.ptr(119155, 119162, 1), new Range32.ptr(917505, 917536, 31), new Range32.ptr(917537, 917631, 1)]), 0);
  3789. _Co = new RangeTable.ptr(new sliceType([new Range16.ptr(57344, 63743, 1)]), new sliceType$1([new Range32.ptr(983040, 1048573, 1), new Range32.ptr(1048576, 1114109, 1)]), 0);
  3790. _Cs = new RangeTable.ptr(new sliceType([new Range16.ptr(55296, 57343, 1)]), sliceType$1.nil, 0);
  3791. _L = new RangeTable.ptr(new sliceType([new Range16.ptr(65, 90, 1), new Range16.ptr(97, 122, 1), new Range16.ptr(170, 181, 11), new Range16.ptr(186, 192, 6), new Range16.ptr(193, 214, 1), new Range16.ptr(216, 246, 1), new Range16.ptr(248, 705, 1), new Range16.ptr(710, 721, 1), new Range16.ptr(736, 740, 1), new Range16.ptr(748, 750, 2), new Range16.ptr(880, 884, 1), new Range16.ptr(886, 887, 1), new Range16.ptr(890, 893, 1), new Range16.ptr(895, 902, 7), new Range16.ptr(904, 906, 1), new Range16.ptr(908, 910, 2), new Range16.ptr(911, 929, 1), new Range16.ptr(931, 1013, 1), new Range16.ptr(1015, 1153, 1), new Range16.ptr(1162, 1327, 1), new Range16.ptr(1329, 1366, 1), new Range16.ptr(1369, 1377, 8), new Range16.ptr(1378, 1415, 1), new Range16.ptr(1488, 1514, 1), new Range16.ptr(1520, 1522, 1), new Range16.ptr(1568, 1610, 1), new Range16.ptr(1646, 1647, 1), new Range16.ptr(1649, 1747, 1), new Range16.ptr(1749, 1765, 16), new Range16.ptr(1766, 1774, 8), new Range16.ptr(1775, 1786, 11), new Range16.ptr(1787, 1788, 1), new Range16.ptr(1791, 1808, 17), new Range16.ptr(1810, 1839, 1), new Range16.ptr(1869, 1957, 1), new Range16.ptr(1969, 1994, 25), new Range16.ptr(1995, 2026, 1), new Range16.ptr(2036, 2037, 1), new Range16.ptr(2042, 2048, 6), new Range16.ptr(2049, 2069, 1), new Range16.ptr(2074, 2084, 10), new Range16.ptr(2088, 2112, 24), new Range16.ptr(2113, 2136, 1), new Range16.ptr(2208, 2226, 1), new Range16.ptr(2308, 2361, 1), new Range16.ptr(2365, 2384, 19), new Range16.ptr(2392, 2401, 1), new Range16.ptr(2417, 2432, 1), new Range16.ptr(2437, 2444, 1), new Range16.ptr(2447, 2448, 1), new Range16.ptr(2451, 2472, 1), new Range16.ptr(2474, 2480, 1), new Range16.ptr(2482, 2486, 4), new Range16.ptr(2487, 2489, 1), new Range16.ptr(2493, 2510, 17), new Range16.ptr(2524, 2525, 1), new Range16.ptr(2527, 2529, 1), new Range16.ptr(2544, 2545, 1), new Range16.ptr(2565, 2570, 1), new Range16.ptr(2575, 2576, 1), new Range16.ptr(2579, 2600, 1), new Range16.ptr(2602, 2608, 1), new Range16.ptr(2610, 2611, 1), new Range16.ptr(2613, 2614, 1), new Range16.ptr(2616, 2617, 1), new Range16.ptr(2649, 2652, 1), new Range16.ptr(2654, 2674, 20), new Range16.ptr(2675, 2676, 1), new Range16.ptr(2693, 2701, 1), new Range16.ptr(2703, 2705, 1), new Range16.ptr(2707, 2728, 1), new Range16.ptr(2730, 2736, 1), new Range16.ptr(2738, 2739, 1), new Range16.ptr(2741, 2745, 1), new Range16.ptr(2749, 2768, 19), new Range16.ptr(2784, 2785, 1), new Range16.ptr(2821, 2828, 1), new Range16.ptr(2831, 2832, 1), new Range16.ptr(2835, 2856, 1), new Range16.ptr(2858, 2864, 1), new Range16.ptr(2866, 2867, 1), new Range16.ptr(2869, 2873, 1), new Range16.ptr(2877, 2908, 31), new Range16.ptr(2909, 2911, 2), new Range16.ptr(2912, 2913, 1), new Range16.ptr(2929, 2947, 18), new Range16.ptr(2949, 2954, 1), new Range16.ptr(2958, 2960, 1), new Range16.ptr(2962, 2965, 1), new Range16.ptr(2969, 2970, 1), new Range16.ptr(2972, 2974, 2), new Range16.ptr(2975, 2979, 4), new Range16.ptr(2980, 2984, 4), new Range16.ptr(2985, 2986, 1), new Range16.ptr(2990, 3001, 1), new Range16.ptr(3024, 3077, 53), new Range16.ptr(3078, 3084, 1), new Range16.ptr(3086, 3088, 1), new Range16.ptr(3090, 3112, 1), new Range16.ptr(3114, 3129, 1), new Range16.ptr(3133, 3160, 27), new Range16.ptr(3161, 3168, 7), new Range16.ptr(3169, 3205, 36), new Range16.ptr(3206, 3212, 1), new Range16.ptr(3214, 3216, 1), new Range16.ptr(3218, 3240, 1), new Range16.ptr(3242, 3251, 1), new Range16.ptr(3253, 3257, 1), new Range16.ptr(3261, 3294, 33), new Range16.ptr(3296, 3297, 1), new Range16.ptr(3313, 3314, 1), new Range16.ptr(3333, 3340, 1), new Range16.ptr(3342, 3344, 1), new Range16.ptr(3346, 3386, 1), new Range16.ptr(3389, 3406, 17), new Range16.ptr(3424, 3425, 1), new Range16.ptr(3450, 3455, 1), new Range16.ptr(3461, 3478, 1), new Range16.ptr(3482, 3505, 1), new Range16.ptr(3507, 3515, 1), new Range16.ptr(3517, 3520, 3), new Range16.ptr(3521, 3526, 1), new Range16.ptr(3585, 3632, 1), new Range16.ptr(3634, 3635, 1), new Range16.ptr(3648, 3654, 1), new Range16.ptr(3713, 3714, 1), new Range16.ptr(3716, 3719, 3), new Range16.ptr(3720, 3722, 2), new Range16.ptr(3725, 3732, 7), new Range16.ptr(3733, 3735, 1), new Range16.ptr(3737, 3743, 1), new Range16.ptr(3745, 3747, 1), new Range16.ptr(3749, 3751, 2), new Range16.ptr(3754, 3755, 1), new Range16.ptr(3757, 3760, 1), new Range16.ptr(3762, 3763, 1), new Range16.ptr(3773, 3776, 3), new Range16.ptr(3777, 3780, 1), new Range16.ptr(3782, 3804, 22), new Range16.ptr(3805, 3807, 1), new Range16.ptr(3840, 3904, 64), new Range16.ptr(3905, 3911, 1), new Range16.ptr(3913, 3948, 1), new Range16.ptr(3976, 3980, 1), new Range16.ptr(4096, 4138, 1), new Range16.ptr(4159, 4176, 17), new Range16.ptr(4177, 4181, 1), new Range16.ptr(4186, 4189, 1), new Range16.ptr(4193, 4197, 4), new Range16.ptr(4198, 4206, 8), new Range16.ptr(4207, 4208, 1), new Range16.ptr(4213, 4225, 1), new Range16.ptr(4238, 4256, 18), new Range16.ptr(4257, 4293, 1), new Range16.ptr(4295, 4301, 6), new Range16.ptr(4304, 4346, 1), new Range16.ptr(4348, 4680, 1), new Range16.ptr(4682, 4685, 1), new Range16.ptr(4688, 4694, 1), new Range16.ptr(4696, 4698, 2), new Range16.ptr(4699, 4701, 1), new Range16.ptr(4704, 4744, 1), new Range16.ptr(4746, 4749, 1), new Range16.ptr(4752, 4784, 1), new Range16.ptr(4786, 4789, 1), new Range16.ptr(4792, 4798, 1), new Range16.ptr(4800, 4802, 2), new Range16.ptr(4803, 4805, 1), new Range16.ptr(4808, 4822, 1), new Range16.ptr(4824, 4880, 1), new Range16.ptr(4882, 4885, 1), new Range16.ptr(4888, 4954, 1), new Range16.ptr(4992, 5007, 1), new Range16.ptr(5024, 5108, 1), new Range16.ptr(5121, 5740, 1), new Range16.ptr(5743, 5759, 1), new Range16.ptr(5761, 5786, 1), new Range16.ptr(5792, 5866, 1), new Range16.ptr(5873, 5880, 1), new Range16.ptr(5888, 5900, 1), new Range16.ptr(5902, 5905, 1), new Range16.ptr(5920, 5937, 1), new Range16.ptr(5952, 5969, 1), new Range16.ptr(5984, 5996, 1), new Range16.ptr(5998, 6000, 1), new Range16.ptr(6016, 6067, 1), new Range16.ptr(6103, 6108, 5), new Range16.ptr(6176, 6263, 1), new Range16.ptr(6272, 6312, 1), new Range16.ptr(6314, 6320, 6), new Range16.ptr(6321, 6389, 1), new Range16.ptr(6400, 6430, 1), new Range16.ptr(6480, 6509, 1), new Range16.ptr(6512, 6516, 1), new Range16.ptr(6528, 6571, 1), new Range16.ptr(6593, 6599, 1), new Range16.ptr(6656, 6678, 1), new Range16.ptr(6688, 6740, 1), new Range16.ptr(6823, 6917, 94), new Range16.ptr(6918, 6963, 1), new Range16.ptr(6981, 6987, 1), new Range16.ptr(7043, 7072, 1), new Range16.ptr(7086, 7087, 1), new Range16.ptr(7098, 7141, 1), new Range16.ptr(7168, 7203, 1), new Range16.ptr(7245, 7247, 1), new Range16.ptr(7258, 7293, 1), new Range16.ptr(7401, 7404, 1), new Range16.ptr(7406, 7409, 1), new Range16.ptr(7413, 7414, 1), new Range16.ptr(7424, 7615, 1), new Range16.ptr(7680, 7957, 1), new Range16.ptr(7960, 7965, 1), new Range16.ptr(7968, 8005, 1), new Range16.ptr(8008, 8013, 1), new Range16.ptr(8016, 8023, 1), new Range16.ptr(8025, 8031, 2), new Range16.ptr(8032, 8061, 1), new Range16.ptr(8064, 8116, 1), new Range16.ptr(8118, 8124, 1), new Range16.ptr(8126, 8130, 4), new Range16.ptr(8131, 8132, 1), new Range16.ptr(8134, 8140, 1), new Range16.ptr(8144, 8147, 1), new Range16.ptr(8150, 8155, 1), new Range16.ptr(8160, 8172, 1), new Range16.ptr(8178, 8180, 1), new Range16.ptr(8182, 8188, 1), new Range16.ptr(8305, 8319, 14), new Range16.ptr(8336, 8348, 1), new Range16.ptr(8450, 8455, 5), new Range16.ptr(8458, 8467, 1), new Range16.ptr(8469, 8473, 4), new Range16.ptr(8474, 8477, 1), new Range16.ptr(8484, 8490, 2), new Range16.ptr(8491, 8493, 1), new Range16.ptr(8495, 8505, 1), new Range16.ptr(8508, 8511, 1), new Range16.ptr(8517, 8521, 1), new Range16.ptr(8526, 8579, 53), new Range16.ptr(8580, 11264, 2684), new Range16.ptr(11265, 11310, 1), new Range16.ptr(11312, 11358, 1), new Range16.ptr(11360, 11492, 1), new Range16.ptr(11499, 11502, 1), new Range16.ptr(11506, 11507, 1), new Range16.ptr(11520, 11557, 1), new Range16.ptr(11559, 11565, 6), new Range16.ptr(11568, 11623, 1), new Range16.ptr(11631, 11648, 17), new Range16.ptr(11649, 11670, 1), new Range16.ptr(11680, 11686, 1), new Range16.ptr(11688, 11694, 1), new Range16.ptr(11696, 11702, 1), new Range16.ptr(11704, 11710, 1), new Range16.ptr(11712, 11718, 1), new Range16.ptr(11720, 11726, 1), new Range16.ptr(11728, 11734, 1), new Range16.ptr(11736, 11742, 1), new Range16.ptr(11823, 12293, 470), new Range16.ptr(12294, 12337, 43), new Range16.ptr(12338, 12341, 1), new Range16.ptr(12347, 12348, 1), new Range16.ptr(12353, 12438, 1), new Range16.ptr(12445, 12447, 1), new Range16.ptr(12449, 12538, 1), new Range16.ptr(12540, 12543, 1), new Range16.ptr(12549, 12589, 1), new Range16.ptr(12593, 12686, 1), new Range16.ptr(12704, 12730, 1), new Range16.ptr(12784, 12799, 1), new Range16.ptr(13312, 19893, 1), new Range16.ptr(19968, 40908, 1), new Range16.ptr(40960, 42124, 1), new Range16.ptr(42192, 42237, 1), new Range16.ptr(42240, 42508, 1), new Range16.ptr(42512, 42527, 1), new Range16.ptr(42538, 42539, 1), new Range16.ptr(42560, 42606, 1), new Range16.ptr(42623, 42653, 1), new Range16.ptr(42656, 42725, 1), new Range16.ptr(42775, 42783, 1), new Range16.ptr(42786, 42888, 1), new Range16.ptr(42891, 42894, 1), new Range16.ptr(42896, 42925, 1), new Range16.ptr(42928, 42929, 1), new Range16.ptr(42999, 43009, 1), new Range16.ptr(43011, 43013, 1), new Range16.ptr(43015, 43018, 1), new Range16.ptr(43020, 43042, 1), new Range16.ptr(43072, 43123, 1), new Range16.ptr(43138, 43187, 1), new Range16.ptr(43250, 43255, 1), new Range16.ptr(43259, 43274, 15), new Range16.ptr(43275, 43301, 1), new Range16.ptr(43312, 43334, 1), new Range16.ptr(43360, 43388, 1), new Range16.ptr(43396, 43442, 1), new Range16.ptr(43471, 43488, 17), new Range16.ptr(43489, 43492, 1), new Range16.ptr(43494, 43503, 1), new Range16.ptr(43514, 43518, 1), new Range16.ptr(43520, 43560, 1), new Range16.ptr(43584, 43586, 1), new Range16.ptr(43588, 43595, 1), new Range16.ptr(43616, 43638, 1), new Range16.ptr(43642, 43646, 4), new Range16.ptr(43647, 43695, 1), new Range16.ptr(43697, 43701, 4), new Range16.ptr(43702, 43705, 3), new Range16.ptr(43706, 43709, 1), new Range16.ptr(43712, 43714, 2), new Range16.ptr(43739, 43741, 1), new Range16.ptr(43744, 43754, 1), new Range16.ptr(43762, 43764, 1), new Range16.ptr(43777, 43782, 1), new Range16.ptr(43785, 43790, 1), new Range16.ptr(43793, 43798, 1), new Range16.ptr(43808, 43814, 1), new Range16.ptr(43816, 43822, 1), new Range16.ptr(43824, 43866, 1), new Range16.ptr(43868, 43871, 1), new Range16.ptr(43876, 43877, 1), new Range16.ptr(43968, 44002, 1), new Range16.ptr(44032, 55203, 1), new Range16.ptr(55216, 55238, 1), new Range16.ptr(55243, 55291, 1), new Range16.ptr(63744, 64109, 1), new Range16.ptr(64112, 64217, 1), new Range16.ptr(64256, 64262, 1), new Range16.ptr(64275, 64279, 1), new Range16.ptr(64285, 64287, 2), new Range16.ptr(64288, 64296, 1), new Range16.ptr(64298, 64310, 1), new Range16.ptr(64312, 64316, 1), new Range16.ptr(64318, 64320, 2), new Range16.ptr(64321, 64323, 2), new Range16.ptr(64324, 64326, 2), new Range16.ptr(64327, 64433, 1), new Range16.ptr(64467, 64829, 1), new Range16.ptr(64848, 64911, 1), new Range16.ptr(64914, 64967, 1), new Range16.ptr(65008, 65019, 1), new Range16.ptr(65136, 65140, 1), new Range16.ptr(65142, 65276, 1), new Range16.ptr(65313, 65338, 1), new Range16.ptr(65345, 65370, 1), new Range16.ptr(65382, 65470, 1), new Range16.ptr(65474, 65479, 1), new Range16.ptr(65482, 65487, 1), new Range16.ptr(65490, 65495, 1), new Range16.ptr(65498, 65500, 1)]), new sliceType$1([new Range32.ptr(65536, 65547, 1), new Range32.ptr(65549, 65574, 1), new Range32.ptr(65576, 65594, 1), new Range32.ptr(65596, 65597, 1), new Range32.ptr(65599, 65613, 1), new Range32.ptr(65616, 65629, 1), new Range32.ptr(65664, 65786, 1), new Range32.ptr(66176, 66204, 1), new Range32.ptr(66208, 66256, 1), new Range32.ptr(66304, 66335, 1), new Range32.ptr(66352, 66368, 1), new Range32.ptr(66370, 66377, 1), new Range32.ptr(66384, 66421, 1), new Range32.ptr(66432, 66461, 1), new Range32.ptr(66464, 66499, 1), new Range32.ptr(66504, 66511, 1), new Range32.ptr(66560, 66717, 1), new Range32.ptr(66816, 66855, 1), new Range32.ptr(66864, 66915, 1), new Range32.ptr(67072, 67382, 1), new Range32.ptr(67392, 67413, 1), new Range32.ptr(67424, 67431, 1), new Range32.ptr(67584, 67589, 1), new Range32.ptr(67592, 67594, 2), new Range32.ptr(67595, 67637, 1), new Range32.ptr(67639, 67640, 1), new Range32.ptr(67644, 67647, 3), new Range32.ptr(67648, 67669, 1), new Range32.ptr(67680, 67702, 1), new Range32.ptr(67712, 67742, 1), new Range32.ptr(67840, 67861, 1), new Range32.ptr(67872, 67897, 1), new Range32.ptr(67968, 68023, 1), new Range32.ptr(68030, 68031, 1), new Range32.ptr(68096, 68112, 16), new Range32.ptr(68113, 68115, 1), new Range32.ptr(68117, 68119, 1), new Range32.ptr(68121, 68147, 1), new Range32.ptr(68192, 68220, 1), new Range32.ptr(68224, 68252, 1), new Range32.ptr(68288, 68295, 1), new Range32.ptr(68297, 68324, 1), new Range32.ptr(68352, 68405, 1), new Range32.ptr(68416, 68437, 1), new Range32.ptr(68448, 68466, 1), new Range32.ptr(68480, 68497, 1), new Range32.ptr(68608, 68680, 1), new Range32.ptr(69635, 69687, 1), new Range32.ptr(69763, 69807, 1), new Range32.ptr(69840, 69864, 1), new Range32.ptr(69891, 69926, 1), new Range32.ptr(69968, 70002, 1), new Range32.ptr(70006, 70019, 13), new Range32.ptr(70020, 70066, 1), new Range32.ptr(70081, 70084, 1), new Range32.ptr(70106, 70144, 38), new Range32.ptr(70145, 70161, 1), new Range32.ptr(70163, 70187, 1), new Range32.ptr(70320, 70366, 1), new Range32.ptr(70405, 70412, 1), new Range32.ptr(70415, 70416, 1), new Range32.ptr(70419, 70440, 1), new Range32.ptr(70442, 70448, 1), new Range32.ptr(70450, 70451, 1), new Range32.ptr(70453, 70457, 1), new Range32.ptr(70461, 70493, 32), new Range32.ptr(70494, 70497, 1), new Range32.ptr(70784, 70831, 1), new Range32.ptr(70852, 70853, 1), new Range32.ptr(70855, 71040, 185), new Range32.ptr(71041, 71086, 1), new Range32.ptr(71168, 71215, 1), new Range32.ptr(71236, 71296, 60), new Range32.ptr(71297, 71338, 1), new Range32.ptr(71840, 71903, 1), new Range32.ptr(71935, 72384, 449), new Range32.ptr(72385, 72440, 1), new Range32.ptr(73728, 74648, 1), new Range32.ptr(77824, 78894, 1), new Range32.ptr(92160, 92728, 1), new Range32.ptr(92736, 92766, 1), new Range32.ptr(92880, 92909, 1), new Range32.ptr(92928, 92975, 1), new Range32.ptr(92992, 92995, 1), new Range32.ptr(93027, 93047, 1), new Range32.ptr(93053, 93071, 1), new Range32.ptr(93952, 94020, 1), new Range32.ptr(94032, 94099, 67), new Range32.ptr(94100, 94111, 1), new Range32.ptr(110592, 110593, 1), new Range32.ptr(113664, 113770, 1), new Range32.ptr(113776, 113788, 1), new Range32.ptr(113792, 113800, 1), new Range32.ptr(113808, 113817, 1), new Range32.ptr(119808, 119892, 1), new Range32.ptr(119894, 119964, 1), new Range32.ptr(119966, 119967, 1), new Range32.ptr(119970, 119973, 3), new Range32.ptr(119974, 119977, 3), new Range32.ptr(119978, 119980, 1), new Range32.ptr(119982, 119993, 1), new Range32.ptr(119995, 119997, 2), new Range32.ptr(119998, 120003, 1), new Range32.ptr(120005, 120069, 1), new Range32.ptr(120071, 120074, 1), new Range32.ptr(120077, 120084, 1), new Range32.ptr(120086, 120092, 1), new Range32.ptr(120094, 120121, 1), new Range32.ptr(120123, 120126, 1), new Range32.ptr(120128, 120132, 1), new Range32.ptr(120134, 120138, 4), new Range32.ptr(120139, 120144, 1), new Range32.ptr(120146, 120485, 1), new Range32.ptr(120488, 120512, 1), new Range32.ptr(120514, 120538, 1), new Range32.ptr(120540, 120570, 1), new Range32.ptr(120572, 120596, 1), new Range32.ptr(120598, 120628, 1), new Range32.ptr(120630, 120654, 1), new Range32.ptr(120656, 120686, 1), new Range32.ptr(120688, 120712, 1), new Range32.ptr(120714, 120744, 1), new Range32.ptr(120746, 120770, 1), new Range32.ptr(120772, 120779, 1), new Range32.ptr(124928, 125124, 1), new Range32.ptr(126464, 126467, 1), new Range32.ptr(126469, 126495, 1), new Range32.ptr(126497, 126498, 1), new Range32.ptr(126500, 126503, 3), new Range32.ptr(126505, 126514, 1), new Range32.ptr(126516, 126519, 1), new Range32.ptr(126521, 126523, 2), new Range32.ptr(126530, 126535, 5), new Range32.ptr(126537, 126541, 2), new Range32.ptr(126542, 126543, 1), new Range32.ptr(126545, 126546, 1), new Range32.ptr(126548, 126551, 3), new Range32.ptr(126553, 126561, 2), new Range32.ptr(126562, 126564, 2), new Range32.ptr(126567, 126570, 1), new Range32.ptr(126572, 126578, 1), new Range32.ptr(126580, 126583, 1), new Range32.ptr(126585, 126588, 1), new Range32.ptr(126590, 126592, 2), new Range32.ptr(126593, 126601, 1), new Range32.ptr(126603, 126619, 1), new Range32.ptr(126625, 126627, 1), new Range32.ptr(126629, 126633, 1), new Range32.ptr(126635, 126651, 1), new Range32.ptr(131072, 173782, 1), new Range32.ptr(173824, 177972, 1), new Range32.ptr(177984, 178205, 1), new Range32.ptr(194560, 195101, 1)]), 6);
  3792. _Ll = new RangeTable.ptr(new sliceType([new Range16.ptr(97, 122, 1), new Range16.ptr(181, 223, 42), new Range16.ptr(224, 246, 1), new Range16.ptr(248, 255, 1), new Range16.ptr(257, 311, 2), new Range16.ptr(312, 328, 2), new Range16.ptr(329, 375, 2), new Range16.ptr(378, 382, 2), new Range16.ptr(383, 384, 1), new Range16.ptr(387, 389, 2), new Range16.ptr(392, 396, 4), new Range16.ptr(397, 402, 5), new Range16.ptr(405, 409, 4), new Range16.ptr(410, 411, 1), new Range16.ptr(414, 417, 3), new Range16.ptr(419, 421, 2), new Range16.ptr(424, 426, 2), new Range16.ptr(427, 429, 2), new Range16.ptr(432, 436, 4), new Range16.ptr(438, 441, 3), new Range16.ptr(442, 445, 3), new Range16.ptr(446, 447, 1), new Range16.ptr(454, 460, 3), new Range16.ptr(462, 476, 2), new Range16.ptr(477, 495, 2), new Range16.ptr(496, 499, 3), new Range16.ptr(501, 505, 4), new Range16.ptr(507, 563, 2), new Range16.ptr(564, 569, 1), new Range16.ptr(572, 575, 3), new Range16.ptr(576, 578, 2), new Range16.ptr(583, 591, 2), new Range16.ptr(592, 659, 1), new Range16.ptr(661, 687, 1), new Range16.ptr(881, 883, 2), new Range16.ptr(887, 891, 4), new Range16.ptr(892, 893, 1), new Range16.ptr(912, 940, 28), new Range16.ptr(941, 974, 1), new Range16.ptr(976, 977, 1), new Range16.ptr(981, 983, 1), new Range16.ptr(985, 1007, 2), new Range16.ptr(1008, 1011, 1), new Range16.ptr(1013, 1019, 3), new Range16.ptr(1020, 1072, 52), new Range16.ptr(1073, 1119, 1), new Range16.ptr(1121, 1153, 2), new Range16.ptr(1163, 1215, 2), new Range16.ptr(1218, 1230, 2), new Range16.ptr(1231, 1327, 2), new Range16.ptr(1377, 1415, 1), new Range16.ptr(7424, 7467, 1), new Range16.ptr(7531, 7543, 1), new Range16.ptr(7545, 7578, 1), new Range16.ptr(7681, 7829, 2), new Range16.ptr(7830, 7837, 1), new Range16.ptr(7839, 7935, 2), new Range16.ptr(7936, 7943, 1), new Range16.ptr(7952, 7957, 1), new Range16.ptr(7968, 7975, 1), new Range16.ptr(7984, 7991, 1), new Range16.ptr(8000, 8005, 1), new Range16.ptr(8016, 8023, 1), new Range16.ptr(8032, 8039, 1), new Range16.ptr(8048, 8061, 1), new Range16.ptr(8064, 8071, 1), new Range16.ptr(8080, 8087, 1), new Range16.ptr(8096, 8103, 1), new Range16.ptr(8112, 8116, 1), new Range16.ptr(8118, 8119, 1), new Range16.ptr(8126, 8130, 4), new Range16.ptr(8131, 8132, 1), new Range16.ptr(8134, 8135, 1), new Range16.ptr(8144, 8147, 1), new Range16.ptr(8150, 8151, 1), new Range16.ptr(8160, 8167, 1), new Range16.ptr(8178, 8180, 1), new Range16.ptr(8182, 8183, 1), new Range16.ptr(8458, 8462, 4), new Range16.ptr(8463, 8467, 4), new Range16.ptr(8495, 8505, 5), new Range16.ptr(8508, 8509, 1), new Range16.ptr(8518, 8521, 1), new Range16.ptr(8526, 8580, 54), new Range16.ptr(11312, 11358, 1), new Range16.ptr(11361, 11365, 4), new Range16.ptr(11366, 11372, 2), new Range16.ptr(11377, 11379, 2), new Range16.ptr(11380, 11382, 2), new Range16.ptr(11383, 11387, 1), new Range16.ptr(11393, 11491, 2), new Range16.ptr(11492, 11500, 8), new Range16.ptr(11502, 11507, 5), new Range16.ptr(11520, 11557, 1), new Range16.ptr(11559, 11565, 6), new Range16.ptr(42561, 42605, 2), new Range16.ptr(42625, 42651, 2), new Range16.ptr(42787, 42799, 2), new Range16.ptr(42800, 42801, 1), new Range16.ptr(42803, 42865, 2), new Range16.ptr(42866, 42872, 1), new Range16.ptr(42874, 42876, 2), new Range16.ptr(42879, 42887, 2), new Range16.ptr(42892, 42894, 2), new Range16.ptr(42897, 42899, 2), new Range16.ptr(42900, 42901, 1), new Range16.ptr(42903, 42921, 2), new Range16.ptr(43002, 43824, 822), new Range16.ptr(43825, 43866, 1), new Range16.ptr(43876, 43877, 1), new Range16.ptr(64256, 64262, 1), new Range16.ptr(64275, 64279, 1), new Range16.ptr(65345, 65370, 1)]), new sliceType$1([new Range32.ptr(66600, 66639, 1), new Range32.ptr(71872, 71903, 1), new Range32.ptr(119834, 119859, 1), new Range32.ptr(119886, 119892, 1), new Range32.ptr(119894, 119911, 1), new Range32.ptr(119938, 119963, 1), new Range32.ptr(119990, 119993, 1), new Range32.ptr(119995, 119997, 2), new Range32.ptr(119998, 120003, 1), new Range32.ptr(120005, 120015, 1), new Range32.ptr(120042, 120067, 1), new Range32.ptr(120094, 120119, 1), new Range32.ptr(120146, 120171, 1), new Range32.ptr(120198, 120223, 1), new Range32.ptr(120250, 120275, 1), new Range32.ptr(120302, 120327, 1), new Range32.ptr(120354, 120379, 1), new Range32.ptr(120406, 120431, 1), new Range32.ptr(120458, 120485, 1), new Range32.ptr(120514, 120538, 1), new Range32.ptr(120540, 120545, 1), new Range32.ptr(120572, 120596, 1), new Range32.ptr(120598, 120603, 1), new Range32.ptr(120630, 120654, 1), new Range32.ptr(120656, 120661, 1), new Range32.ptr(120688, 120712, 1), new Range32.ptr(120714, 120719, 1), new Range32.ptr(120746, 120770, 1), new Range32.ptr(120772, 120777, 1), new Range32.ptr(120779, 120779, 1)]), 4);
  3793. _Lm = new RangeTable.ptr(new sliceType([new Range16.ptr(688, 705, 1), new Range16.ptr(710, 721, 1), new Range16.ptr(736, 740, 1), new Range16.ptr(748, 750, 2), new Range16.ptr(884, 890, 6), new Range16.ptr(1369, 1600, 231), new Range16.ptr(1765, 1766, 1), new Range16.ptr(2036, 2037, 1), new Range16.ptr(2042, 2074, 32), new Range16.ptr(2084, 2088, 4), new Range16.ptr(2417, 3654, 1237), new Range16.ptr(3782, 4348, 566), new Range16.ptr(6103, 6211, 108), new Range16.ptr(6823, 7288, 465), new Range16.ptr(7289, 7293, 1), new Range16.ptr(7468, 7530, 1), new Range16.ptr(7544, 7579, 35), new Range16.ptr(7580, 7615, 1), new Range16.ptr(8305, 8319, 14), new Range16.ptr(8336, 8348, 1), new Range16.ptr(11388, 11389, 1), new Range16.ptr(11631, 11823, 192), new Range16.ptr(12293, 12337, 44), new Range16.ptr(12338, 12341, 1), new Range16.ptr(12347, 12445, 98), new Range16.ptr(12446, 12540, 94), new Range16.ptr(12541, 12542, 1), new Range16.ptr(40981, 42232, 1251), new Range16.ptr(42233, 42237, 1), new Range16.ptr(42508, 42623, 115), new Range16.ptr(42652, 42653, 1), new Range16.ptr(42775, 42783, 1), new Range16.ptr(42864, 42888, 24), new Range16.ptr(43000, 43001, 1), new Range16.ptr(43471, 43494, 23), new Range16.ptr(43632, 43741, 109), new Range16.ptr(43763, 43764, 1), new Range16.ptr(43868, 43871, 1), new Range16.ptr(65392, 65438, 46), new Range16.ptr(65439, 65439, 1)]), new sliceType$1([new Range32.ptr(92992, 92992, 1), new Range32.ptr(92993, 92995, 1), new Range32.ptr(94099, 94111, 1)]), 0);
  3794. _Lo = new RangeTable.ptr(new sliceType([new Range16.ptr(170, 186, 16), new Range16.ptr(443, 448, 5), new Range16.ptr(449, 451, 1), new Range16.ptr(660, 1488, 828), new Range16.ptr(1489, 1514, 1), new Range16.ptr(1520, 1522, 1), new Range16.ptr(1568, 1599, 1), new Range16.ptr(1601, 1610, 1), new Range16.ptr(1646, 1647, 1), new Range16.ptr(1649, 1747, 1), new Range16.ptr(1749, 1774, 25), new Range16.ptr(1775, 1786, 11), new Range16.ptr(1787, 1788, 1), new Range16.ptr(1791, 1808, 17), new Range16.ptr(1810, 1839, 1), new Range16.ptr(1869, 1957, 1), new Range16.ptr(1969, 1994, 25), new Range16.ptr(1995, 2026, 1), new Range16.ptr(2048, 2069, 1), new Range16.ptr(2112, 2136, 1), new Range16.ptr(2208, 2226, 1), new Range16.ptr(2308, 2361, 1), new Range16.ptr(2365, 2384, 19), new Range16.ptr(2392, 2401, 1), new Range16.ptr(2418, 2432, 1), new Range16.ptr(2437, 2444, 1), new Range16.ptr(2447, 2448, 1), new Range16.ptr(2451, 2472, 1), new Range16.ptr(2474, 2480, 1), new Range16.ptr(2482, 2486, 4), new Range16.ptr(2487, 2489, 1), new Range16.ptr(2493, 2510, 17), new Range16.ptr(2524, 2525, 1), new Range16.ptr(2527, 2529, 1), new Range16.ptr(2544, 2545, 1), new Range16.ptr(2565, 2570, 1), new Range16.ptr(2575, 2576, 1), new Range16.ptr(2579, 2600, 1), new Range16.ptr(2602, 2608, 1), new Range16.ptr(2610, 2611, 1), new Range16.ptr(2613, 2614, 1), new Range16.ptr(2616, 2617, 1), new Range16.ptr(2649, 2652, 1), new Range16.ptr(2654, 2674, 20), new Range16.ptr(2675, 2676, 1), new Range16.ptr(2693, 2701, 1), new Range16.ptr(2703, 2705, 1), new Range16.ptr(2707, 2728, 1), new Range16.ptr(2730, 2736, 1), new Range16.ptr(2738, 2739, 1), new Range16.ptr(2741, 2745, 1), new Range16.ptr(2749, 2768, 19), new Range16.ptr(2784, 2785, 1), new Range16.ptr(2821, 2828, 1), new Range16.ptr(2831, 2832, 1), new Range16.ptr(2835, 2856, 1), new Range16.ptr(2858, 2864, 1), new Range16.ptr(2866, 2867, 1), new Range16.ptr(2869, 2873, 1), new Range16.ptr(2877, 2908, 31), new Range16.ptr(2909, 2911, 2), new Range16.ptr(2912, 2913, 1), new Range16.ptr(2929, 2947, 18), new Range16.ptr(2949, 2954, 1), new Range16.ptr(2958, 2960, 1), new Range16.ptr(2962, 2965, 1), new Range16.ptr(2969, 2970, 1), new Range16.ptr(2972, 2974, 2), new Range16.ptr(2975, 2979, 4), new Range16.ptr(2980, 2984, 4), new Range16.ptr(2985, 2986, 1), new Range16.ptr(2990, 3001, 1), new Range16.ptr(3024, 3077, 53), new Range16.ptr(3078, 3084, 1), new Range16.ptr(3086, 3088, 1), new Range16.ptr(3090, 3112, 1), new Range16.ptr(3114, 3129, 1), new Range16.ptr(3133, 3160, 27), new Range16.ptr(3161, 3168, 7), new Range16.ptr(3169, 3205, 36), new Range16.ptr(3206, 3212, 1), new Range16.ptr(3214, 3216, 1), new Range16.ptr(3218, 3240, 1), new Range16.ptr(3242, 3251, 1), new Range16.ptr(3253, 3257, 1), new Range16.ptr(3261, 3294, 33), new Range16.ptr(3296, 3297, 1), new Range16.ptr(3313, 3314, 1), new Range16.ptr(3333, 3340, 1), new Range16.ptr(3342, 3344, 1), new Range16.ptr(3346, 3386, 1), new Range16.ptr(3389, 3406, 17), new Range16.ptr(3424, 3425, 1), new Range16.ptr(3450, 3455, 1), new Range16.ptr(3461, 3478, 1), new Range16.ptr(3482, 3505, 1), new Range16.ptr(3507, 3515, 1), new Range16.ptr(3517, 3520, 3), new Range16.ptr(3521, 3526, 1), new Range16.ptr(3585, 3632, 1), new Range16.ptr(3634, 3635, 1), new Range16.ptr(3648, 3653, 1), new Range16.ptr(3713, 3714, 1), new Range16.ptr(3716, 3719, 3), new Range16.ptr(3720, 3722, 2), new Range16.ptr(3725, 3732, 7), new Range16.ptr(3733, 3735, 1), new Range16.ptr(3737, 3743, 1), new Range16.ptr(3745, 3747, 1), new Range16.ptr(3749, 3751, 2), new Range16.ptr(3754, 3755, 1), new Range16.ptr(3757, 3760, 1), new Range16.ptr(3762, 3763, 1), new Range16.ptr(3773, 3776, 3), new Range16.ptr(3777, 3780, 1), new Range16.ptr(3804, 3807, 1), new Range16.ptr(3840, 3904, 64), new Range16.ptr(3905, 3911, 1), new Range16.ptr(3913, 3948, 1), new Range16.ptr(3976, 3980, 1), new Range16.ptr(4096, 4138, 1), new Range16.ptr(4159, 4176, 17), new Range16.ptr(4177, 4181, 1), new Range16.ptr(4186, 4189, 1), new Range16.ptr(4193, 4197, 4), new Range16.ptr(4198, 4206, 8), new Range16.ptr(4207, 4208, 1), new Range16.ptr(4213, 4225, 1), new Range16.ptr(4238, 4304, 66), new Range16.ptr(4305, 4346, 1), new Range16.ptr(4349, 4680, 1), new Range16.ptr(4682, 4685, 1), new Range16.ptr(4688, 4694, 1), new Range16.ptr(4696, 4698, 2), new Range16.ptr(4699, 4701, 1), new Range16.ptr(4704, 4744, 1), new Range16.ptr(4746, 4749, 1), new Range16.ptr(4752, 4784, 1), new Range16.ptr(4786, 4789, 1), new Range16.ptr(4792, 4798, 1), new Range16.ptr(4800, 4802, 2), new Range16.ptr(4803, 4805, 1), new Range16.ptr(4808, 4822, 1), new Range16.ptr(4824, 4880, 1), new Range16.ptr(4882, 4885, 1), new Range16.ptr(4888, 4954, 1), new Range16.ptr(4992, 5007, 1), new Range16.ptr(5024, 5108, 1), new Range16.ptr(5121, 5740, 1), new Range16.ptr(5743, 5759, 1), new Range16.ptr(5761, 5786, 1), new Range16.ptr(5792, 5866, 1), new Range16.ptr(5873, 5880, 1), new Range16.ptr(5888, 5900, 1), new Range16.ptr(5902, 5905, 1), new Range16.ptr(5920, 5937, 1), new Range16.ptr(5952, 5969, 1), new Range16.ptr(5984, 5996, 1), new Range16.ptr(5998, 6000, 1), new Range16.ptr(6016, 6067, 1), new Range16.ptr(6108, 6176, 68), new Range16.ptr(6177, 6210, 1), new Range16.ptr(6212, 6263, 1), new Range16.ptr(6272, 6312, 1), new Range16.ptr(6314, 6320, 6), new Range16.ptr(6321, 6389, 1), new Range16.ptr(6400, 6430, 1), new Range16.ptr(6480, 6509, 1), new Range16.ptr(6512, 6516, 1), new Range16.ptr(6528, 6571, 1), new Range16.ptr(6593, 6599, 1), new Range16.ptr(6656, 6678, 1), new Range16.ptr(6688, 6740, 1), new Range16.ptr(6917, 6963, 1), new Range16.ptr(6981, 6987, 1), new Range16.ptr(7043, 7072, 1), new Range16.ptr(7086, 7087, 1), new Range16.ptr(7098, 7141, 1), new Range16.ptr(7168, 7203, 1), new Range16.ptr(7245, 7247, 1), new Range16.ptr(7258, 7287, 1), new Range16.ptr(7401, 7404, 1), new Range16.ptr(7406, 7409, 1), new Range16.ptr(7413, 7414, 1), new Range16.ptr(8501, 8504, 1), new Range16.ptr(11568, 11623, 1), new Range16.ptr(11648, 11670, 1), new Range16.ptr(11680, 11686, 1), new Range16.ptr(11688, 11694, 1), new Range16.ptr(11696, 11702, 1), new Range16.ptr(11704, 11710, 1), new Range16.ptr(11712, 11718, 1), new Range16.ptr(11720, 11726, 1), new Range16.ptr(11728, 11734, 1), new Range16.ptr(11736, 11742, 1), new Range16.ptr(12294, 12348, 54), new Range16.ptr(12353, 12438, 1), new Range16.ptr(12447, 12449, 2), new Range16.ptr(12450, 12538, 1), new Range16.ptr(12543, 12549, 6), new Range16.ptr(12550, 12589, 1), new Range16.ptr(12593, 12686, 1), new Range16.ptr(12704, 12730, 1), new Range16.ptr(12784, 12799, 1), new Range16.ptr(13312, 19893, 1), new Range16.ptr(19968, 40908, 1), new Range16.ptr(40960, 40980, 1), new Range16.ptr(40982, 42124, 1), new Range16.ptr(42192, 42231, 1), new Range16.ptr(42240, 42507, 1), new Range16.ptr(42512, 42527, 1), new Range16.ptr(42538, 42539, 1), new Range16.ptr(42606, 42656, 50), new Range16.ptr(42657, 42725, 1), new Range16.ptr(42999, 43003, 4), new Range16.ptr(43004, 43009, 1), new Range16.ptr(43011, 43013, 1), new Range16.ptr(43015, 43018, 1), new Range16.ptr(43020, 43042, 1), new Range16.ptr(43072, 43123, 1), new Range16.ptr(43138, 43187, 1), new Range16.ptr(43250, 43255, 1), new Range16.ptr(43259, 43274, 15), new Range16.ptr(43275, 43301, 1), new Range16.ptr(43312, 43334, 1), new Range16.ptr(43360, 43388, 1), new Range16.ptr(43396, 43442, 1), new Range16.ptr(43488, 43492, 1), new Range16.ptr(43495, 43503, 1), new Range16.ptr(43514, 43518, 1), new Range16.ptr(43520, 43560, 1), new Range16.ptr(43584, 43586, 1), new Range16.ptr(43588, 43595, 1), new Range16.ptr(43616, 43631, 1), new Range16.ptr(43633, 43638, 1), new Range16.ptr(43642, 43646, 4), new Range16.ptr(43647, 43695, 1), new Range16.ptr(43697, 43701, 4), new Range16.ptr(43702, 43705, 3), new Range16.ptr(43706, 43709, 1), new Range16.ptr(43712, 43714, 2), new Range16.ptr(43739, 43740, 1), new Range16.ptr(43744, 43754, 1), new Range16.ptr(43762, 43777, 15), new Range16.ptr(43778, 43782, 1), new Range16.ptr(43785, 43790, 1), new Range16.ptr(43793, 43798, 1), new Range16.ptr(43808, 43814, 1), new Range16.ptr(43816, 43822, 1), new Range16.ptr(43968, 44002, 1), new Range16.ptr(44032, 55203, 1), new Range16.ptr(55216, 55238, 1), new Range16.ptr(55243, 55291, 1), new Range16.ptr(63744, 64109, 1), new Range16.ptr(64112, 64217, 1), new Range16.ptr(64285, 64287, 2), new Range16.ptr(64288, 64296, 1), new Range16.ptr(64298, 64310, 1), new Range16.ptr(64312, 64316, 1), new Range16.ptr(64318, 64320, 2), new Range16.ptr(64321, 64323, 2), new Range16.ptr(64324, 64326, 2), new Range16.ptr(64327, 64433, 1), new Range16.ptr(64467, 64829, 1), new Range16.ptr(64848, 64911, 1), new Range16.ptr(64914, 64967, 1), new Range16.ptr(65008, 65019, 1), new Range16.ptr(65136, 65140, 1), new Range16.ptr(65142, 65276, 1), new Range16.ptr(65382, 65391, 1), new Range16.ptr(65393, 65437, 1), new Range16.ptr(65440, 65470, 1), new Range16.ptr(65474, 65479, 1), new Range16.ptr(65482, 65487, 1), new Range16.ptr(65490, 65495, 1), new Range16.ptr(65498, 65500, 1)]), new sliceType$1([new Range32.ptr(65536, 65547, 1), new Range32.ptr(65549, 65574, 1), new Range32.ptr(65576, 65594, 1), new Range32.ptr(65596, 65597, 1), new Range32.ptr(65599, 65613, 1), new Range32.ptr(65616, 65629, 1), new Range32.ptr(65664, 65786, 1), new Range32.ptr(66176, 66204, 1), new Range32.ptr(66208, 66256, 1), new Range32.ptr(66304, 66335, 1), new Range32.ptr(66352, 66368, 1), new Range32.ptr(66370, 66377, 1), new Range32.ptr(66384, 66421, 1), new Range32.ptr(66432, 66461, 1), new Range32.ptr(66464, 66499, 1), new Range32.ptr(66504, 66511, 1), new Range32.ptr(66640, 66717, 1), new Range32.ptr(66816, 66855, 1), new Range32.ptr(66864, 66915, 1), new Range32.ptr(67072, 67382, 1), new Range32.ptr(67392, 67413, 1), new Range32.ptr(67424, 67431, 1), new Range32.ptr(67584, 67589, 1), new Range32.ptr(67592, 67594, 2), new Range32.ptr(67595, 67637, 1), new Range32.ptr(67639, 67640, 1), new Range32.ptr(67644, 67647, 3), new Range32.ptr(67648, 67669, 1), new Range32.ptr(67680, 67702, 1), new Range32.ptr(67712, 67742, 1), new Range32.ptr(67840, 67861, 1), new Range32.ptr(67872, 67897, 1), new Range32.ptr(67968, 68023, 1), new Range32.ptr(68030, 68031, 1), new Range32.ptr(68096, 68112, 16), new Range32.ptr(68113, 68115, 1), new Range32.ptr(68117, 68119, 1), new Range32.ptr(68121, 68147, 1), new Range32.ptr(68192, 68220, 1), new Range32.ptr(68224, 68252, 1), new Range32.ptr(68288, 68295, 1), new Range32.ptr(68297, 68324, 1), new Range32.ptr(68352, 68405, 1), new Range32.ptr(68416, 68437, 1), new Range32.ptr(68448, 68466, 1), new Range32.ptr(68480, 68497, 1), new Range32.ptr(68608, 68680, 1), new Range32.ptr(69635, 69687, 1), new Range32.ptr(69763, 69807, 1), new Range32.ptr(69840, 69864, 1), new Range32.ptr(69891, 69926, 1), new Range32.ptr(69968, 70002, 1), new Range32.ptr(70006, 70019, 13), new Range32.ptr(70020, 70066, 1), new Range32.ptr(70081, 70084, 1), new Range32.ptr(70106, 70144, 38), new Range32.ptr(70145, 70161, 1), new Range32.ptr(70163, 70187, 1), new Range32.ptr(70320, 70366, 1), new Range32.ptr(70405, 70412, 1), new Range32.ptr(70415, 70416, 1), new Range32.ptr(70419, 70440, 1), new Range32.ptr(70442, 70448, 1), new Range32.ptr(70450, 70451, 1), new Range32.ptr(70453, 70457, 1), new Range32.ptr(70461, 70493, 32), new Range32.ptr(70494, 70497, 1), new Range32.ptr(70784, 70831, 1), new Range32.ptr(70852, 70853, 1), new Range32.ptr(70855, 71040, 185), new Range32.ptr(71041, 71086, 1), new Range32.ptr(71168, 71215, 1), new Range32.ptr(71236, 71296, 60), new Range32.ptr(71297, 71338, 1), new Range32.ptr(71935, 72384, 449), new Range32.ptr(72385, 72440, 1), new Range32.ptr(73728, 74648, 1), new Range32.ptr(77824, 78894, 1), new Range32.ptr(92160, 92728, 1), new Range32.ptr(92736, 92766, 1), new Range32.ptr(92880, 92909, 1), new Range32.ptr(92928, 92975, 1), new Range32.ptr(93027, 93047, 1), new Range32.ptr(93053, 93071, 1), new Range32.ptr(93952, 94020, 1), new Range32.ptr(94032, 110592, 16560), new Range32.ptr(110593, 113664, 3071), new Range32.ptr(113665, 113770, 1), new Range32.ptr(113776, 113788, 1), new Range32.ptr(113792, 113800, 1), new Range32.ptr(113808, 113817, 1), new Range32.ptr(124928, 125124, 1), new Range32.ptr(126464, 126467, 1), new Range32.ptr(126469, 126495, 1), new Range32.ptr(126497, 126498, 1), new Range32.ptr(126500, 126503, 3), new Range32.ptr(126505, 126514, 1), new Range32.ptr(126516, 126519, 1), new Range32.ptr(126521, 126523, 2), new Range32.ptr(126530, 126535, 5), new Range32.ptr(126537, 126541, 2), new Range32.ptr(126542, 126543, 1), new Range32.ptr(126545, 126546, 1), new Range32.ptr(126548, 126551, 3), new Range32.ptr(126553, 126561, 2), new Range32.ptr(126562, 126564, 2), new Range32.ptr(126567, 126570, 1), new Range32.ptr(126572, 126578, 1), new Range32.ptr(126580, 126583, 1), new Range32.ptr(126585, 126588, 1), new Range32.ptr(126590, 126592, 2), new Range32.ptr(126593, 126601, 1), new Range32.ptr(126603, 126619, 1), new Range32.ptr(126625, 126627, 1), new Range32.ptr(126629, 126633, 1), new Range32.ptr(126635, 126651, 1), new Range32.ptr(131072, 173782, 1), new Range32.ptr(173824, 177972, 1), new Range32.ptr(177984, 178205, 1), new Range32.ptr(194560, 195101, 1)]), 1);
  3795. _Lt = new RangeTable.ptr(new sliceType([new Range16.ptr(453, 459, 3), new Range16.ptr(498, 8072, 7574), new Range16.ptr(8073, 8079, 1), new Range16.ptr(8088, 8095, 1), new Range16.ptr(8104, 8111, 1), new Range16.ptr(8124, 8140, 16), new Range16.ptr(8188, 8188, 1)]), sliceType$1.nil, 0);
  3796. _Lu = new RangeTable.ptr(new sliceType([new Range16.ptr(65, 90, 1), new Range16.ptr(192, 214, 1), new Range16.ptr(216, 222, 1), new Range16.ptr(256, 310, 2), new Range16.ptr(313, 327, 2), new Range16.ptr(330, 376, 2), new Range16.ptr(377, 381, 2), new Range16.ptr(385, 386, 1), new Range16.ptr(388, 390, 2), new Range16.ptr(391, 393, 2), new Range16.ptr(394, 395, 1), new Range16.ptr(398, 401, 1), new Range16.ptr(403, 404, 1), new Range16.ptr(406, 408, 1), new Range16.ptr(412, 413, 1), new Range16.ptr(415, 416, 1), new Range16.ptr(418, 422, 2), new Range16.ptr(423, 425, 2), new Range16.ptr(428, 430, 2), new Range16.ptr(431, 433, 2), new Range16.ptr(434, 435, 1), new Range16.ptr(437, 439, 2), new Range16.ptr(440, 444, 4), new Range16.ptr(452, 461, 3), new Range16.ptr(463, 475, 2), new Range16.ptr(478, 494, 2), new Range16.ptr(497, 500, 3), new Range16.ptr(502, 504, 1), new Range16.ptr(506, 562, 2), new Range16.ptr(570, 571, 1), new Range16.ptr(573, 574, 1), new Range16.ptr(577, 579, 2), new Range16.ptr(580, 582, 1), new Range16.ptr(584, 590, 2), new Range16.ptr(880, 882, 2), new Range16.ptr(886, 895, 9), new Range16.ptr(902, 904, 2), new Range16.ptr(905, 906, 1), new Range16.ptr(908, 910, 2), new Range16.ptr(911, 913, 2), new Range16.ptr(914, 929, 1), new Range16.ptr(931, 939, 1), new Range16.ptr(975, 978, 3), new Range16.ptr(979, 980, 1), new Range16.ptr(984, 1006, 2), new Range16.ptr(1012, 1015, 3), new Range16.ptr(1017, 1018, 1), new Range16.ptr(1021, 1071, 1), new Range16.ptr(1120, 1152, 2), new Range16.ptr(1162, 1216, 2), new Range16.ptr(1217, 1229, 2), new Range16.ptr(1232, 1326, 2), new Range16.ptr(1329, 1366, 1), new Range16.ptr(4256, 4293, 1), new Range16.ptr(4295, 4301, 6), new Range16.ptr(7680, 7828, 2), new Range16.ptr(7838, 7934, 2), new Range16.ptr(7944, 7951, 1), new Range16.ptr(7960, 7965, 1), new Range16.ptr(7976, 7983, 1), new Range16.ptr(7992, 7999, 1), new Range16.ptr(8008, 8013, 1), new Range16.ptr(8025, 8031, 2), new Range16.ptr(8040, 8047, 1), new Range16.ptr(8120, 8123, 1), new Range16.ptr(8136, 8139, 1), new Range16.ptr(8152, 8155, 1), new Range16.ptr(8168, 8172, 1), new Range16.ptr(8184, 8187, 1), new Range16.ptr(8450, 8455, 5), new Range16.ptr(8459, 8461, 1), new Range16.ptr(8464, 8466, 1), new Range16.ptr(8469, 8473, 4), new Range16.ptr(8474, 8477, 1), new Range16.ptr(8484, 8490, 2), new Range16.ptr(8491, 8493, 1), new Range16.ptr(8496, 8499, 1), new Range16.ptr(8510, 8511, 1), new Range16.ptr(8517, 8579, 62), new Range16.ptr(11264, 11310, 1), new Range16.ptr(11360, 11362, 2), new Range16.ptr(11363, 11364, 1), new Range16.ptr(11367, 11373, 2), new Range16.ptr(11374, 11376, 1), new Range16.ptr(11378, 11381, 3), new Range16.ptr(11390, 11392, 1), new Range16.ptr(11394, 11490, 2), new Range16.ptr(11499, 11501, 2), new Range16.ptr(11506, 42560, 31054), new Range16.ptr(42562, 42604, 2), new Range16.ptr(42624, 42650, 2), new Range16.ptr(42786, 42798, 2), new Range16.ptr(42802, 42862, 2), new Range16.ptr(42873, 42877, 2), new Range16.ptr(42878, 42886, 2), new Range16.ptr(42891, 42893, 2), new Range16.ptr(42896, 42898, 2), new Range16.ptr(42902, 42922, 2), new Range16.ptr(42923, 42925, 1), new Range16.ptr(42928, 42929, 1), new Range16.ptr(65313, 65338, 1)]), new sliceType$1([new Range32.ptr(66560, 66599, 1), new Range32.ptr(71840, 71871, 1), new Range32.ptr(119808, 119833, 1), new Range32.ptr(119860, 119885, 1), new Range32.ptr(119912, 119937, 1), new Range32.ptr(119964, 119966, 2), new Range32.ptr(119967, 119973, 3), new Range32.ptr(119974, 119977, 3), new Range32.ptr(119978, 119980, 1), new Range32.ptr(119982, 119989, 1), new Range32.ptr(120016, 120041, 1), new Range32.ptr(120068, 120069, 1), new Range32.ptr(120071, 120074, 1), new Range32.ptr(120077, 120084, 1), new Range32.ptr(120086, 120092, 1), new Range32.ptr(120120, 120121, 1), new Range32.ptr(120123, 120126, 1), new Range32.ptr(120128, 120132, 1), new Range32.ptr(120134, 120138, 4), new Range32.ptr(120139, 120144, 1), new Range32.ptr(120172, 120197, 1), new Range32.ptr(120224, 120249, 1), new Range32.ptr(120276, 120301, 1), new Range32.ptr(120328, 120353, 1), new Range32.ptr(120380, 120405, 1), new Range32.ptr(120432, 120457, 1), new Range32.ptr(120488, 120512, 1), new Range32.ptr(120546, 120570, 1), new Range32.ptr(120604, 120628, 1), new Range32.ptr(120662, 120686, 1), new Range32.ptr(120720, 120744, 1), new Range32.ptr(120778, 120778, 1)]), 3);
  3797. _M = new RangeTable.ptr(new sliceType([new Range16.ptr(768, 879, 1), new Range16.ptr(1155, 1161, 1), new Range16.ptr(1425, 1469, 1), new Range16.ptr(1471, 1473, 2), new Range16.ptr(1474, 1476, 2), new Range16.ptr(1477, 1479, 2), new Range16.ptr(1552, 1562, 1), new Range16.ptr(1611, 1631, 1), new Range16.ptr(1648, 1750, 102), new Range16.ptr(1751, 1756, 1), new Range16.ptr(1759, 1764, 1), new Range16.ptr(1767, 1768, 1), new Range16.ptr(1770, 1773, 1), new Range16.ptr(1809, 1840, 31), new Range16.ptr(1841, 1866, 1), new Range16.ptr(1958, 1968, 1), new Range16.ptr(2027, 2035, 1), new Range16.ptr(2070, 2073, 1), new Range16.ptr(2075, 2083, 1), new Range16.ptr(2085, 2087, 1), new Range16.ptr(2089, 2093, 1), new Range16.ptr(2137, 2139, 1), new Range16.ptr(2276, 2307, 1), new Range16.ptr(2362, 2364, 1), new Range16.ptr(2366, 2383, 1), new Range16.ptr(2385, 2391, 1), new Range16.ptr(2402, 2403, 1), new Range16.ptr(2433, 2435, 1), new Range16.ptr(2492, 2494, 2), new Range16.ptr(2495, 2500, 1), new Range16.ptr(2503, 2504, 1), new Range16.ptr(2507, 2509, 1), new Range16.ptr(2519, 2530, 11), new Range16.ptr(2531, 2561, 30), new Range16.ptr(2562, 2563, 1), new Range16.ptr(2620, 2622, 2), new Range16.ptr(2623, 2626, 1), new Range16.ptr(2631, 2632, 1), new Range16.ptr(2635, 2637, 1), new Range16.ptr(2641, 2672, 31), new Range16.ptr(2673, 2677, 4), new Range16.ptr(2689, 2691, 1), new Range16.ptr(2748, 2750, 2), new Range16.ptr(2751, 2757, 1), new Range16.ptr(2759, 2761, 1), new Range16.ptr(2763, 2765, 1), new Range16.ptr(2786, 2787, 1), new Range16.ptr(2817, 2819, 1), new Range16.ptr(2876, 2878, 2), new Range16.ptr(2879, 2884, 1), new Range16.ptr(2887, 2888, 1), new Range16.ptr(2891, 2893, 1), new Range16.ptr(2902, 2903, 1), new Range16.ptr(2914, 2915, 1), new Range16.ptr(2946, 3006, 60), new Range16.ptr(3007, 3010, 1), new Range16.ptr(3014, 3016, 1), new Range16.ptr(3018, 3021, 1), new Range16.ptr(3031, 3072, 41), new Range16.ptr(3073, 3075, 1), new Range16.ptr(3134, 3140, 1), new Range16.ptr(3142, 3144, 1), new Range16.ptr(3146, 3149, 1), new Range16.ptr(3157, 3158, 1), new Range16.ptr(3170, 3171, 1), new Range16.ptr(3201, 3203, 1), new Range16.ptr(3260, 3262, 2), new Range16.ptr(3263, 3268, 1), new Range16.ptr(3270, 3272, 1), new Range16.ptr(3274, 3277, 1), new Range16.ptr(3285, 3286, 1), new Range16.ptr(3298, 3299, 1), new Range16.ptr(3329, 3331, 1), new Range16.ptr(3390, 3396, 1), new Range16.ptr(3398, 3400, 1), new Range16.ptr(3402, 3405, 1), new Range16.ptr(3415, 3426, 11), new Range16.ptr(3427, 3458, 31), new Range16.ptr(3459, 3530, 71), new Range16.ptr(3535, 3540, 1), new Range16.ptr(3542, 3544, 2), new Range16.ptr(3545, 3551, 1), new Range16.ptr(3570, 3571, 1), new Range16.ptr(3633, 3636, 3), new Range16.ptr(3637, 3642, 1), new Range16.ptr(3655, 3662, 1), new Range16.ptr(3761, 3764, 3), new Range16.ptr(3765, 3769, 1), new Range16.ptr(3771, 3772, 1), new Range16.ptr(3784, 3789, 1), new Range16.ptr(3864, 3865, 1), new Range16.ptr(3893, 3897, 2), new Range16.ptr(3902, 3903, 1), new Range16.ptr(3953, 3972, 1), new Range16.ptr(3974, 3975, 1), new Range16.ptr(3981, 3991, 1), new Range16.ptr(3993, 4028, 1), new Range16.ptr(4038, 4139, 101), new Range16.ptr(4140, 4158, 1), new Range16.ptr(4182, 4185, 1), new Range16.ptr(4190, 4192, 1), new Range16.ptr(4194, 4196, 1), new Range16.ptr(4199, 4205, 1), new Range16.ptr(4209, 4212, 1), new Range16.ptr(4226, 4237, 1), new Range16.ptr(4239, 4250, 11), new Range16.ptr(4251, 4253, 1), new Range16.ptr(4957, 4959, 1), new Range16.ptr(5906, 5908, 1), new Range16.ptr(5938, 5940, 1), new Range16.ptr(5970, 5971, 1), new Range16.ptr(6002, 6003, 1), new Range16.ptr(6068, 6099, 1), new Range16.ptr(6109, 6155, 46), new Range16.ptr(6156, 6157, 1), new Range16.ptr(6313, 6432, 119), new Range16.ptr(6433, 6443, 1), new Range16.ptr(6448, 6459, 1), new Range16.ptr(6576, 6592, 1), new Range16.ptr(6600, 6601, 1), new Range16.ptr(6679, 6683, 1), new Range16.ptr(6741, 6750, 1), new Range16.ptr(6752, 6780, 1), new Range16.ptr(6783, 6832, 49), new Range16.ptr(6833, 6846, 1), new Range16.ptr(6912, 6916, 1), new Range16.ptr(6964, 6980, 1), new Range16.ptr(7019, 7027, 1), new Range16.ptr(7040, 7042, 1), new Range16.ptr(7073, 7085, 1), new Range16.ptr(7142, 7155, 1), new Range16.ptr(7204, 7223, 1), new Range16.ptr(7376, 7378, 1), new Range16.ptr(7380, 7400, 1), new Range16.ptr(7405, 7410, 5), new Range16.ptr(7411, 7412, 1), new Range16.ptr(7416, 7417, 1), new Range16.ptr(7616, 7669, 1), new Range16.ptr(7676, 7679, 1), new Range16.ptr(8400, 8432, 1), new Range16.ptr(11503, 11505, 1), new Range16.ptr(11647, 11744, 97), new Range16.ptr(11745, 11775, 1), new Range16.ptr(12330, 12335, 1), new Range16.ptr(12441, 12442, 1), new Range16.ptr(42607, 42610, 1), new Range16.ptr(42612, 42621, 1), new Range16.ptr(42655, 42736, 81), new Range16.ptr(42737, 43010, 273), new Range16.ptr(43014, 43019, 5), new Range16.ptr(43043, 43047, 1), new Range16.ptr(43136, 43137, 1), new Range16.ptr(43188, 43204, 1), new Range16.ptr(43232, 43249, 1), new Range16.ptr(43302, 43309, 1), new Range16.ptr(43335, 43347, 1), new Range16.ptr(43392, 43395, 1), new Range16.ptr(43443, 43456, 1), new Range16.ptr(43493, 43561, 68), new Range16.ptr(43562, 43574, 1), new Range16.ptr(43587, 43596, 9), new Range16.ptr(43597, 43643, 46), new Range16.ptr(43644, 43645, 1), new Range16.ptr(43696, 43698, 2), new Range16.ptr(43699, 43700, 1), new Range16.ptr(43703, 43704, 1), new Range16.ptr(43710, 43711, 1), new Range16.ptr(43713, 43755, 42), new Range16.ptr(43756, 43759, 1), new Range16.ptr(43765, 43766, 1), new Range16.ptr(44003, 44010, 1), new Range16.ptr(44012, 44013, 1), new Range16.ptr(64286, 65024, 738), new Range16.ptr(65025, 65039, 1), new Range16.ptr(65056, 65069, 1)]), new sliceType$1([new Range32.ptr(66045, 66272, 227), new Range32.ptr(66422, 66426, 1), new Range32.ptr(68097, 68099, 1), new Range32.ptr(68101, 68102, 1), new Range32.ptr(68108, 68111, 1), new Range32.ptr(68152, 68154, 1), new Range32.ptr(68159, 68325, 166), new Range32.ptr(68326, 69632, 1306), new Range32.ptr(69633, 69634, 1), new Range32.ptr(69688, 69702, 1), new Range32.ptr(69759, 69762, 1), new Range32.ptr(69808, 69818, 1), new Range32.ptr(69888, 69890, 1), new Range32.ptr(69927, 69940, 1), new Range32.ptr(70003, 70016, 13), new Range32.ptr(70017, 70018, 1), new Range32.ptr(70067, 70080, 1), new Range32.ptr(70188, 70199, 1), new Range32.ptr(70367, 70378, 1), new Range32.ptr(70401, 70403, 1), new Range32.ptr(70460, 70462, 2), new Range32.ptr(70463, 70468, 1), new Range32.ptr(70471, 70472, 1), new Range32.ptr(70475, 70477, 1), new Range32.ptr(70487, 70498, 11), new Range32.ptr(70499, 70502, 3), new Range32.ptr(70503, 70508, 1), new Range32.ptr(70512, 70516, 1), new Range32.ptr(70832, 70851, 1), new Range32.ptr(71087, 71093, 1), new Range32.ptr(71096, 71104, 1), new Range32.ptr(71216, 71232, 1), new Range32.ptr(71339, 71351, 1), new Range32.ptr(92912, 92916, 1), new Range32.ptr(92976, 92982, 1), new Range32.ptr(94033, 94078, 1), new Range32.ptr(94095, 94098, 1), new Range32.ptr(113821, 113822, 1), new Range32.ptr(119141, 119145, 1), new Range32.ptr(119149, 119154, 1), new Range32.ptr(119163, 119170, 1), new Range32.ptr(119173, 119179, 1), new Range32.ptr(119210, 119213, 1), new Range32.ptr(119362, 119364, 1), new Range32.ptr(125136, 125142, 1), new Range32.ptr(917760, 917999, 1)]), 0);
  3798. _Mc = new RangeTable.ptr(new sliceType([new Range16.ptr(2307, 2363, 56), new Range16.ptr(2366, 2368, 1), new Range16.ptr(2377, 2380, 1), new Range16.ptr(2382, 2383, 1), new Range16.ptr(2434, 2435, 1), new Range16.ptr(2494, 2496, 1), new Range16.ptr(2503, 2504, 1), new Range16.ptr(2507, 2508, 1), new Range16.ptr(2519, 2563, 44), new Range16.ptr(2622, 2624, 1), new Range16.ptr(2691, 2750, 59), new Range16.ptr(2751, 2752, 1), new Range16.ptr(2761, 2763, 2), new Range16.ptr(2764, 2818, 54), new Range16.ptr(2819, 2878, 59), new Range16.ptr(2880, 2887, 7), new Range16.ptr(2888, 2891, 3), new Range16.ptr(2892, 2903, 11), new Range16.ptr(3006, 3007, 1), new Range16.ptr(3009, 3010, 1), new Range16.ptr(3014, 3016, 1), new Range16.ptr(3018, 3020, 1), new Range16.ptr(3031, 3073, 42), new Range16.ptr(3074, 3075, 1), new Range16.ptr(3137, 3140, 1), new Range16.ptr(3202, 3203, 1), new Range16.ptr(3262, 3264, 2), new Range16.ptr(3265, 3268, 1), new Range16.ptr(3271, 3272, 1), new Range16.ptr(3274, 3275, 1), new Range16.ptr(3285, 3286, 1), new Range16.ptr(3330, 3331, 1), new Range16.ptr(3390, 3392, 1), new Range16.ptr(3398, 3400, 1), new Range16.ptr(3402, 3404, 1), new Range16.ptr(3415, 3458, 43), new Range16.ptr(3459, 3535, 76), new Range16.ptr(3536, 3537, 1), new Range16.ptr(3544, 3551, 1), new Range16.ptr(3570, 3571, 1), new Range16.ptr(3902, 3903, 1), new Range16.ptr(3967, 4139, 172), new Range16.ptr(4140, 4145, 5), new Range16.ptr(4152, 4155, 3), new Range16.ptr(4156, 4182, 26), new Range16.ptr(4183, 4194, 11), new Range16.ptr(4195, 4196, 1), new Range16.ptr(4199, 4205, 1), new Range16.ptr(4227, 4228, 1), new Range16.ptr(4231, 4236, 1), new Range16.ptr(4239, 4250, 11), new Range16.ptr(4251, 4252, 1), new Range16.ptr(6070, 6078, 8), new Range16.ptr(6079, 6085, 1), new Range16.ptr(6087, 6088, 1), new Range16.ptr(6435, 6438, 1), new Range16.ptr(6441, 6443, 1), new Range16.ptr(6448, 6449, 1), new Range16.ptr(6451, 6456, 1), new Range16.ptr(6576, 6592, 1), new Range16.ptr(6600, 6601, 1), new Range16.ptr(6681, 6682, 1), new Range16.ptr(6741, 6743, 2), new Range16.ptr(6753, 6755, 2), new Range16.ptr(6756, 6765, 9), new Range16.ptr(6766, 6770, 1), new Range16.ptr(6916, 6965, 49), new Range16.ptr(6971, 6973, 2), new Range16.ptr(6974, 6977, 1), new Range16.ptr(6979, 6980, 1), new Range16.ptr(7042, 7073, 31), new Range16.ptr(7078, 7079, 1), new Range16.ptr(7082, 7143, 61), new Range16.ptr(7146, 7148, 1), new Range16.ptr(7150, 7154, 4), new Range16.ptr(7155, 7204, 49), new Range16.ptr(7205, 7211, 1), new Range16.ptr(7220, 7221, 1), new Range16.ptr(7393, 7410, 17), new Range16.ptr(7411, 12334, 4923), new Range16.ptr(12335, 43043, 30708), new Range16.ptr(43044, 43047, 3), new Range16.ptr(43136, 43137, 1), new Range16.ptr(43188, 43203, 1), new Range16.ptr(43346, 43347, 1), new Range16.ptr(43395, 43444, 49), new Range16.ptr(43445, 43450, 5), new Range16.ptr(43451, 43453, 2), new Range16.ptr(43454, 43456, 1), new Range16.ptr(43567, 43568, 1), new Range16.ptr(43571, 43572, 1), new Range16.ptr(43597, 43643, 46), new Range16.ptr(43645, 43755, 110), new Range16.ptr(43758, 43759, 1), new Range16.ptr(43765, 44003, 238), new Range16.ptr(44004, 44006, 2), new Range16.ptr(44007, 44009, 2), new Range16.ptr(44010, 44012, 2)]), new sliceType$1([new Range32.ptr(69632, 69634, 2), new Range32.ptr(69762, 69808, 46), new Range32.ptr(69809, 69810, 1), new Range32.ptr(69815, 69816, 1), new Range32.ptr(69932, 70018, 86), new Range32.ptr(70067, 70069, 1), new Range32.ptr(70079, 70080, 1), new Range32.ptr(70188, 70190, 1), new Range32.ptr(70194, 70195, 1), new Range32.ptr(70197, 70368, 171), new Range32.ptr(70369, 70370, 1), new Range32.ptr(70402, 70403, 1), new Range32.ptr(70462, 70463, 1), new Range32.ptr(70465, 70468, 1), new Range32.ptr(70471, 70472, 1), new Range32.ptr(70475, 70477, 1), new Range32.ptr(70487, 70498, 11), new Range32.ptr(70499, 70832, 333), new Range32.ptr(70833, 70834, 1), new Range32.ptr(70841, 70843, 2), new Range32.ptr(70844, 70846, 1), new Range32.ptr(70849, 71087, 238), new Range32.ptr(71088, 71089, 1), new Range32.ptr(71096, 71099, 1), new Range32.ptr(71102, 71216, 114), new Range32.ptr(71217, 71218, 1), new Range32.ptr(71227, 71228, 1), new Range32.ptr(71230, 71340, 110), new Range32.ptr(71342, 71343, 1), new Range32.ptr(71350, 94033, 22683), new Range32.ptr(94034, 94078, 1), new Range32.ptr(119141, 119142, 1), new Range32.ptr(119149, 119154, 1)]), 0);
  3799. _Me = new RangeTable.ptr(new sliceType([new Range16.ptr(1160, 1161, 1), new Range16.ptr(6846, 8413, 1567), new Range16.ptr(8414, 8416, 1), new Range16.ptr(8418, 8420, 1), new Range16.ptr(42608, 42610, 1)]), sliceType$1.nil, 0);
  3800. _Mn = new RangeTable.ptr(new sliceType([new Range16.ptr(768, 879, 1), new Range16.ptr(1155, 1159, 1), new Range16.ptr(1425, 1469, 1), new Range16.ptr(1471, 1473, 2), new Range16.ptr(1474, 1476, 2), new Range16.ptr(1477, 1479, 2), new Range16.ptr(1552, 1562, 1), new Range16.ptr(1611, 1631, 1), new Range16.ptr(1648, 1750, 102), new Range16.ptr(1751, 1756, 1), new Range16.ptr(1759, 1764, 1), new Range16.ptr(1767, 1768, 1), new Range16.ptr(1770, 1773, 1), new Range16.ptr(1809, 1840, 31), new Range16.ptr(1841, 1866, 1), new Range16.ptr(1958, 1968, 1), new Range16.ptr(2027, 2035, 1), new Range16.ptr(2070, 2073, 1), new Range16.ptr(2075, 2083, 1), new Range16.ptr(2085, 2087, 1), new Range16.ptr(2089, 2093, 1), new Range16.ptr(2137, 2139, 1), new Range16.ptr(2276, 2306, 1), new Range16.ptr(2362, 2364, 2), new Range16.ptr(2369, 2376, 1), new Range16.ptr(2381, 2385, 4), new Range16.ptr(2386, 2391, 1), new Range16.ptr(2402, 2403, 1), new Range16.ptr(2433, 2492, 59), new Range16.ptr(2497, 2500, 1), new Range16.ptr(2509, 2530, 21), new Range16.ptr(2531, 2561, 30), new Range16.ptr(2562, 2620, 58), new Range16.ptr(2625, 2626, 1), new Range16.ptr(2631, 2632, 1), new Range16.ptr(2635, 2637, 1), new Range16.ptr(2641, 2672, 31), new Range16.ptr(2673, 2677, 4), new Range16.ptr(2689, 2690, 1), new Range16.ptr(2748, 2753, 5), new Range16.ptr(2754, 2757, 1), new Range16.ptr(2759, 2760, 1), new Range16.ptr(2765, 2786, 21), new Range16.ptr(2787, 2817, 30), new Range16.ptr(2876, 2879, 3), new Range16.ptr(2881, 2884, 1), new Range16.ptr(2893, 2902, 9), new Range16.ptr(2914, 2915, 1), new Range16.ptr(2946, 3008, 62), new Range16.ptr(3021, 3072, 51), new Range16.ptr(3134, 3136, 1), new Range16.ptr(3142, 3144, 1), new Range16.ptr(3146, 3149, 1), new Range16.ptr(3157, 3158, 1), new Range16.ptr(3170, 3171, 1), new Range16.ptr(3201, 3260, 59), new Range16.ptr(3263, 3270, 7), new Range16.ptr(3276, 3277, 1), new Range16.ptr(3298, 3299, 1), new Range16.ptr(3329, 3393, 64), new Range16.ptr(3394, 3396, 1), new Range16.ptr(3405, 3426, 21), new Range16.ptr(3427, 3530, 103), new Range16.ptr(3538, 3540, 1), new Range16.ptr(3542, 3633, 91), new Range16.ptr(3636, 3642, 1), new Range16.ptr(3655, 3662, 1), new Range16.ptr(3761, 3764, 3), new Range16.ptr(3765, 3769, 1), new Range16.ptr(3771, 3772, 1), new Range16.ptr(3784, 3789, 1), new Range16.ptr(3864, 3865, 1), new Range16.ptr(3893, 3897, 2), new Range16.ptr(3953, 3966, 1), new Range16.ptr(3968, 3972, 1), new Range16.ptr(3974, 3975, 1), new Range16.ptr(3981, 3991, 1), new Range16.ptr(3993, 4028, 1), new Range16.ptr(4038, 4141, 103), new Range16.ptr(4142, 4144, 1), new Range16.ptr(4146, 4151, 1), new Range16.ptr(4153, 4154, 1), new Range16.ptr(4157, 4158, 1), new Range16.ptr(4184, 4185, 1), new Range16.ptr(4190, 4192, 1), new Range16.ptr(4209, 4212, 1), new Range16.ptr(4226, 4229, 3), new Range16.ptr(4230, 4237, 7), new Range16.ptr(4253, 4957, 704), new Range16.ptr(4958, 4959, 1), new Range16.ptr(5906, 5908, 1), new Range16.ptr(5938, 5940, 1), new Range16.ptr(5970, 5971, 1), new Range16.ptr(6002, 6003, 1), new Range16.ptr(6068, 6069, 1), new Range16.ptr(6071, 6077, 1), new Range16.ptr(6086, 6089, 3), new Range16.ptr(6090, 6099, 1), new Range16.ptr(6109, 6155, 46), new Range16.ptr(6156, 6157, 1), new Range16.ptr(6313, 6432, 119), new Range16.ptr(6433, 6434, 1), new Range16.ptr(6439, 6440, 1), new Range16.ptr(6450, 6457, 7), new Range16.ptr(6458, 6459, 1), new Range16.ptr(6679, 6680, 1), new Range16.ptr(6683, 6742, 59), new Range16.ptr(6744, 6750, 1), new Range16.ptr(6752, 6754, 2), new Range16.ptr(6757, 6764, 1), new Range16.ptr(6771, 6780, 1), new Range16.ptr(6783, 6832, 49), new Range16.ptr(6833, 6845, 1), new Range16.ptr(6912, 6915, 1), new Range16.ptr(6964, 6966, 2), new Range16.ptr(6967, 6970, 1), new Range16.ptr(6972, 6978, 6), new Range16.ptr(7019, 7027, 1), new Range16.ptr(7040, 7041, 1), new Range16.ptr(7074, 7077, 1), new Range16.ptr(7080, 7081, 1), new Range16.ptr(7083, 7085, 1), new Range16.ptr(7142, 7144, 2), new Range16.ptr(7145, 7149, 4), new Range16.ptr(7151, 7153, 1), new Range16.ptr(7212, 7219, 1), new Range16.ptr(7222, 7223, 1), new Range16.ptr(7376, 7378, 1), new Range16.ptr(7380, 7392, 1), new Range16.ptr(7394, 7400, 1), new Range16.ptr(7405, 7412, 7), new Range16.ptr(7416, 7417, 1), new Range16.ptr(7616, 7669, 1), new Range16.ptr(7676, 7679, 1), new Range16.ptr(8400, 8412, 1), new Range16.ptr(8417, 8421, 4), new Range16.ptr(8422, 8432, 1), new Range16.ptr(11503, 11505, 1), new Range16.ptr(11647, 11744, 97), new Range16.ptr(11745, 11775, 1), new Range16.ptr(12330, 12333, 1), new Range16.ptr(12441, 12442, 1), new Range16.ptr(42607, 42612, 5), new Range16.ptr(42613, 42621, 1), new Range16.ptr(42655, 42736, 81), new Range16.ptr(42737, 43010, 273), new Range16.ptr(43014, 43019, 5), new Range16.ptr(43045, 43046, 1), new Range16.ptr(43204, 43232, 28), new Range16.ptr(43233, 43249, 1), new Range16.ptr(43302, 43309, 1), new Range16.ptr(43335, 43345, 1), new Range16.ptr(43392, 43394, 1), new Range16.ptr(43443, 43446, 3), new Range16.ptr(43447, 43449, 1), new Range16.ptr(43452, 43493, 41), new Range16.ptr(43561, 43566, 1), new Range16.ptr(43569, 43570, 1), new Range16.ptr(43573, 43574, 1), new Range16.ptr(43587, 43596, 9), new Range16.ptr(43644, 43696, 52), new Range16.ptr(43698, 43700, 1), new Range16.ptr(43703, 43704, 1), new Range16.ptr(43710, 43711, 1), new Range16.ptr(43713, 43756, 43), new Range16.ptr(43757, 43766, 9), new Range16.ptr(44005, 44008, 3), new Range16.ptr(44013, 64286, 20273), new Range16.ptr(65024, 65039, 1), new Range16.ptr(65056, 65069, 1)]), new sliceType$1([new Range32.ptr(66045, 66272, 227), new Range32.ptr(66422, 66426, 1), new Range32.ptr(68097, 68099, 1), new Range32.ptr(68101, 68102, 1), new Range32.ptr(68108, 68111, 1), new Range32.ptr(68152, 68154, 1), new Range32.ptr(68159, 68325, 166), new Range32.ptr(68326, 69633, 1307), new Range32.ptr(69688, 69702, 1), new Range32.ptr(69759, 69761, 1), new Range32.ptr(69811, 69814, 1), new Range32.ptr(69817, 69818, 1), new Range32.ptr(69888, 69890, 1), new Range32.ptr(69927, 69931, 1), new Range32.ptr(69933, 69940, 1), new Range32.ptr(70003, 70016, 13), new Range32.ptr(70017, 70070, 53), new Range32.ptr(70071, 70078, 1), new Range32.ptr(70191, 70193, 1), new Range32.ptr(70196, 70198, 2), new Range32.ptr(70199, 70367, 168), new Range32.ptr(70371, 70378, 1), new Range32.ptr(70401, 70460, 59), new Range32.ptr(70464, 70502, 38), new Range32.ptr(70503, 70508, 1), new Range32.ptr(70512, 70516, 1), new Range32.ptr(70835, 70840, 1), new Range32.ptr(70842, 70847, 5), new Range32.ptr(70848, 70850, 2), new Range32.ptr(70851, 71090, 239), new Range32.ptr(71091, 71093, 1), new Range32.ptr(71100, 71101, 1), new Range32.ptr(71103, 71104, 1), new Range32.ptr(71219, 71226, 1), new Range32.ptr(71229, 71231, 2), new Range32.ptr(71232, 71339, 107), new Range32.ptr(71341, 71344, 3), new Range32.ptr(71345, 71349, 1), new Range32.ptr(71351, 92912, 21561), new Range32.ptr(92913, 92916, 1), new Range32.ptr(92976, 92982, 1), new Range32.ptr(94095, 94098, 1), new Range32.ptr(113821, 113822, 1), new Range32.ptr(119143, 119145, 1), new Range32.ptr(119163, 119170, 1), new Range32.ptr(119173, 119179, 1), new Range32.ptr(119210, 119213, 1), new Range32.ptr(119362, 119364, 1), new Range32.ptr(125136, 125142, 1), new Range32.ptr(917760, 917999, 1)]), 0);
  3801. _N = new RangeTable.ptr(new sliceType([new Range16.ptr(48, 57, 1), new Range16.ptr(178, 179, 1), new Range16.ptr(185, 188, 3), new Range16.ptr(189, 190, 1), new Range16.ptr(1632, 1641, 1), new Range16.ptr(1776, 1785, 1), new Range16.ptr(1984, 1993, 1), new Range16.ptr(2406, 2415, 1), new Range16.ptr(2534, 2543, 1), new Range16.ptr(2548, 2553, 1), new Range16.ptr(2662, 2671, 1), new Range16.ptr(2790, 2799, 1), new Range16.ptr(2918, 2927, 1), new Range16.ptr(2930, 2935, 1), new Range16.ptr(3046, 3058, 1), new Range16.ptr(3174, 3183, 1), new Range16.ptr(3192, 3198, 1), new Range16.ptr(3302, 3311, 1), new Range16.ptr(3430, 3445, 1), new Range16.ptr(3558, 3567, 1), new Range16.ptr(3664, 3673, 1), new Range16.ptr(3792, 3801, 1), new Range16.ptr(3872, 3891, 1), new Range16.ptr(4160, 4169, 1), new Range16.ptr(4240, 4249, 1), new Range16.ptr(4969, 4988, 1), new Range16.ptr(5870, 5872, 1), new Range16.ptr(6112, 6121, 1), new Range16.ptr(6128, 6137, 1), new Range16.ptr(6160, 6169, 1), new Range16.ptr(6470, 6479, 1), new Range16.ptr(6608, 6618, 1), new Range16.ptr(6784, 6793, 1), new Range16.ptr(6800, 6809, 1), new Range16.ptr(6992, 7001, 1), new Range16.ptr(7088, 7097, 1), new Range16.ptr(7232, 7241, 1), new Range16.ptr(7248, 7257, 1), new Range16.ptr(8304, 8308, 4), new Range16.ptr(8309, 8313, 1), new Range16.ptr(8320, 8329, 1), new Range16.ptr(8528, 8578, 1), new Range16.ptr(8581, 8585, 1), new Range16.ptr(9312, 9371, 1), new Range16.ptr(9450, 9471, 1), new Range16.ptr(10102, 10131, 1), new Range16.ptr(11517, 12295, 778), new Range16.ptr(12321, 12329, 1), new Range16.ptr(12344, 12346, 1), new Range16.ptr(12690, 12693, 1), new Range16.ptr(12832, 12841, 1), new Range16.ptr(12872, 12879, 1), new Range16.ptr(12881, 12895, 1), new Range16.ptr(12928, 12937, 1), new Range16.ptr(12977, 12991, 1), new Range16.ptr(42528, 42537, 1), new Range16.ptr(42726, 42735, 1), new Range16.ptr(43056, 43061, 1), new Range16.ptr(43216, 43225, 1), new Range16.ptr(43264, 43273, 1), new Range16.ptr(43472, 43481, 1), new Range16.ptr(43504, 43513, 1), new Range16.ptr(43600, 43609, 1), new Range16.ptr(44016, 44025, 1), new Range16.ptr(65296, 65305, 1)]), new sliceType$1([new Range32.ptr(65799, 65843, 1), new Range32.ptr(65856, 65912, 1), new Range32.ptr(65930, 65931, 1), new Range32.ptr(66273, 66299, 1), new Range32.ptr(66336, 66339, 1), new Range32.ptr(66369, 66378, 9), new Range32.ptr(66513, 66517, 1), new Range32.ptr(66720, 66729, 1), new Range32.ptr(67672, 67679, 1), new Range32.ptr(67705, 67711, 1), new Range32.ptr(67751, 67759, 1), new Range32.ptr(67862, 67867, 1), new Range32.ptr(68160, 68167, 1), new Range32.ptr(68221, 68222, 1), new Range32.ptr(68253, 68255, 1), new Range32.ptr(68331, 68335, 1), new Range32.ptr(68440, 68447, 1), new Range32.ptr(68472, 68479, 1), new Range32.ptr(68521, 68527, 1), new Range32.ptr(69216, 69246, 1), new Range32.ptr(69714, 69743, 1), new Range32.ptr(69872, 69881, 1), new Range32.ptr(69942, 69951, 1), new Range32.ptr(70096, 70105, 1), new Range32.ptr(70113, 70132, 1), new Range32.ptr(70384, 70393, 1), new Range32.ptr(70864, 70873, 1), new Range32.ptr(71248, 71257, 1), new Range32.ptr(71360, 71369, 1), new Range32.ptr(71904, 71922, 1), new Range32.ptr(74752, 74862, 1), new Range32.ptr(92768, 92777, 1), new Range32.ptr(93008, 93017, 1), new Range32.ptr(93019, 93025, 1), new Range32.ptr(119648, 119665, 1), new Range32.ptr(120782, 120831, 1), new Range32.ptr(125127, 125135, 1), new Range32.ptr(127232, 127244, 1)]), 4);
  3802. _Nd = new RangeTable.ptr(new sliceType([new Range16.ptr(48, 57, 1), new Range16.ptr(1632, 1641, 1), new Range16.ptr(1776, 1785, 1), new Range16.ptr(1984, 1993, 1), new Range16.ptr(2406, 2415, 1), new Range16.ptr(2534, 2543, 1), new Range16.ptr(2662, 2671, 1), new Range16.ptr(2790, 2799, 1), new Range16.ptr(2918, 2927, 1), new Range16.ptr(3046, 3055, 1), new Range16.ptr(3174, 3183, 1), new Range16.ptr(3302, 3311, 1), new Range16.ptr(3430, 3439, 1), new Range16.ptr(3558, 3567, 1), new Range16.ptr(3664, 3673, 1), new Range16.ptr(3792, 3801, 1), new Range16.ptr(3872, 3881, 1), new Range16.ptr(4160, 4169, 1), new Range16.ptr(4240, 4249, 1), new Range16.ptr(6112, 6121, 1), new Range16.ptr(6160, 6169, 1), new Range16.ptr(6470, 6479, 1), new Range16.ptr(6608, 6617, 1), new Range16.ptr(6784, 6793, 1), new Range16.ptr(6800, 6809, 1), new Range16.ptr(6992, 7001, 1), new Range16.ptr(7088, 7097, 1), new Range16.ptr(7232, 7241, 1), new Range16.ptr(7248, 7257, 1), new Range16.ptr(42528, 42537, 1), new Range16.ptr(43216, 43225, 1), new Range16.ptr(43264, 43273, 1), new Range16.ptr(43472, 43481, 1), new Range16.ptr(43504, 43513, 1), new Range16.ptr(43600, 43609, 1), new Range16.ptr(44016, 44025, 1), new Range16.ptr(65296, 65305, 1)]), new sliceType$1([new Range32.ptr(66720, 66729, 1), new Range32.ptr(69734, 69743, 1), new Range32.ptr(69872, 69881, 1), new Range32.ptr(69942, 69951, 1), new Range32.ptr(70096, 70105, 1), new Range32.ptr(70384, 70393, 1), new Range32.ptr(70864, 70873, 1), new Range32.ptr(71248, 71257, 1), new Range32.ptr(71360, 71369, 1), new Range32.ptr(71904, 71913, 1), new Range32.ptr(92768, 92777, 1), new Range32.ptr(93008, 93017, 1), new Range32.ptr(120782, 120831, 1)]), 1);
  3803. _Nl = new RangeTable.ptr(new sliceType([new Range16.ptr(5870, 5872, 1), new Range16.ptr(8544, 8578, 1), new Range16.ptr(8581, 8584, 1), new Range16.ptr(12295, 12321, 26), new Range16.ptr(12322, 12329, 1), new Range16.ptr(12344, 12346, 1), new Range16.ptr(42726, 42735, 1)]), new sliceType$1([new Range32.ptr(65856, 65908, 1), new Range32.ptr(66369, 66378, 9), new Range32.ptr(66513, 66517, 1), new Range32.ptr(74752, 74862, 1)]), 0);
  3804. _No = new RangeTable.ptr(new sliceType([new Range16.ptr(178, 179, 1), new Range16.ptr(185, 188, 3), new Range16.ptr(189, 190, 1), new Range16.ptr(2548, 2553, 1), new Range16.ptr(2930, 2935, 1), new Range16.ptr(3056, 3058, 1), new Range16.ptr(3192, 3198, 1), new Range16.ptr(3440, 3445, 1), new Range16.ptr(3882, 3891, 1), new Range16.ptr(4969, 4988, 1), new Range16.ptr(6128, 6137, 1), new Range16.ptr(6618, 8304, 1686), new Range16.ptr(8308, 8313, 1), new Range16.ptr(8320, 8329, 1), new Range16.ptr(8528, 8543, 1), new Range16.ptr(8585, 9312, 727), new Range16.ptr(9313, 9371, 1), new Range16.ptr(9450, 9471, 1), new Range16.ptr(10102, 10131, 1), new Range16.ptr(11517, 12690, 1173), new Range16.ptr(12691, 12693, 1), new Range16.ptr(12832, 12841, 1), new Range16.ptr(12872, 12879, 1), new Range16.ptr(12881, 12895, 1), new Range16.ptr(12928, 12937, 1), new Range16.ptr(12977, 12991, 1), new Range16.ptr(43056, 43061, 1)]), new sliceType$1([new Range32.ptr(65799, 65843, 1), new Range32.ptr(65909, 65912, 1), new Range32.ptr(65930, 65931, 1), new Range32.ptr(66273, 66299, 1), new Range32.ptr(66336, 66339, 1), new Range32.ptr(67672, 67679, 1), new Range32.ptr(67705, 67711, 1), new Range32.ptr(67751, 67759, 1), new Range32.ptr(67862, 67867, 1), new Range32.ptr(68160, 68167, 1), new Range32.ptr(68221, 68222, 1), new Range32.ptr(68253, 68255, 1), new Range32.ptr(68331, 68335, 1), new Range32.ptr(68440, 68447, 1), new Range32.ptr(68472, 68479, 1), new Range32.ptr(68521, 68527, 1), new Range32.ptr(69216, 69246, 1), new Range32.ptr(69714, 69733, 1), new Range32.ptr(70113, 70132, 1), new Range32.ptr(71914, 71922, 1), new Range32.ptr(93019, 93025, 1), new Range32.ptr(119648, 119665, 1), new Range32.ptr(125127, 125135, 1), new Range32.ptr(127232, 127244, 1)]), 3);
  3805. _P = new RangeTable.ptr(new sliceType([new Range16.ptr(33, 35, 1), new Range16.ptr(37, 42, 1), new Range16.ptr(44, 47, 1), new Range16.ptr(58, 59, 1), new Range16.ptr(63, 64, 1), new Range16.ptr(91, 93, 1), new Range16.ptr(95, 123, 28), new Range16.ptr(125, 161, 36), new Range16.ptr(167, 171, 4), new Range16.ptr(182, 183, 1), new Range16.ptr(187, 191, 4), new Range16.ptr(894, 903, 9), new Range16.ptr(1370, 1375, 1), new Range16.ptr(1417, 1418, 1), new Range16.ptr(1470, 1472, 2), new Range16.ptr(1475, 1478, 3), new Range16.ptr(1523, 1524, 1), new Range16.ptr(1545, 1546, 1), new Range16.ptr(1548, 1549, 1), new Range16.ptr(1563, 1566, 3), new Range16.ptr(1567, 1642, 75), new Range16.ptr(1643, 1645, 1), new Range16.ptr(1748, 1792, 44), new Range16.ptr(1793, 1805, 1), new Range16.ptr(2039, 2041, 1), new Range16.ptr(2096, 2110, 1), new Range16.ptr(2142, 2404, 262), new Range16.ptr(2405, 2416, 11), new Range16.ptr(2800, 3572, 772), new Range16.ptr(3663, 3674, 11), new Range16.ptr(3675, 3844, 169), new Range16.ptr(3845, 3858, 1), new Range16.ptr(3860, 3898, 38), new Range16.ptr(3899, 3901, 1), new Range16.ptr(3973, 4048, 75), new Range16.ptr(4049, 4052, 1), new Range16.ptr(4057, 4058, 1), new Range16.ptr(4170, 4175, 1), new Range16.ptr(4347, 4960, 613), new Range16.ptr(4961, 4968, 1), new Range16.ptr(5120, 5741, 621), new Range16.ptr(5742, 5787, 45), new Range16.ptr(5788, 5867, 79), new Range16.ptr(5868, 5869, 1), new Range16.ptr(5941, 5942, 1), new Range16.ptr(6100, 6102, 1), new Range16.ptr(6104, 6106, 1), new Range16.ptr(6144, 6154, 1), new Range16.ptr(6468, 6469, 1), new Range16.ptr(6686, 6687, 1), new Range16.ptr(6816, 6822, 1), new Range16.ptr(6824, 6829, 1), new Range16.ptr(7002, 7008, 1), new Range16.ptr(7164, 7167, 1), new Range16.ptr(7227, 7231, 1), new Range16.ptr(7294, 7295, 1), new Range16.ptr(7360, 7367, 1), new Range16.ptr(7379, 8208, 829), new Range16.ptr(8209, 8231, 1), new Range16.ptr(8240, 8259, 1), new Range16.ptr(8261, 8273, 1), new Range16.ptr(8275, 8286, 1), new Range16.ptr(8317, 8318, 1), new Range16.ptr(8333, 8334, 1), new Range16.ptr(8968, 8971, 1), new Range16.ptr(9001, 9002, 1), new Range16.ptr(10088, 10101, 1), new Range16.ptr(10181, 10182, 1), new Range16.ptr(10214, 10223, 1), new Range16.ptr(10627, 10648, 1), new Range16.ptr(10712, 10715, 1), new Range16.ptr(10748, 10749, 1), new Range16.ptr(11513, 11516, 1), new Range16.ptr(11518, 11519, 1), new Range16.ptr(11632, 11776, 144), new Range16.ptr(11777, 11822, 1), new Range16.ptr(11824, 11842, 1), new Range16.ptr(12289, 12291, 1), new Range16.ptr(12296, 12305, 1), new Range16.ptr(12308, 12319, 1), new Range16.ptr(12336, 12349, 13), new Range16.ptr(12448, 12539, 91), new Range16.ptr(42238, 42239, 1), new Range16.ptr(42509, 42511, 1), new Range16.ptr(42611, 42622, 11), new Range16.ptr(42738, 42743, 1), new Range16.ptr(43124, 43127, 1), new Range16.ptr(43214, 43215, 1), new Range16.ptr(43256, 43258, 1), new Range16.ptr(43310, 43311, 1), new Range16.ptr(43359, 43457, 98), new Range16.ptr(43458, 43469, 1), new Range16.ptr(43486, 43487, 1), new Range16.ptr(43612, 43615, 1), new Range16.ptr(43742, 43743, 1), new Range16.ptr(43760, 43761, 1), new Range16.ptr(44011, 64830, 20819), new Range16.ptr(64831, 65040, 209), new Range16.ptr(65041, 65049, 1), new Range16.ptr(65072, 65106, 1), new Range16.ptr(65108, 65121, 1), new Range16.ptr(65123, 65128, 5), new Range16.ptr(65130, 65131, 1), new Range16.ptr(65281, 65283, 1), new Range16.ptr(65285, 65290, 1), new Range16.ptr(65292, 65295, 1), new Range16.ptr(65306, 65307, 1), new Range16.ptr(65311, 65312, 1), new Range16.ptr(65339, 65341, 1), new Range16.ptr(65343, 65371, 28), new Range16.ptr(65373, 65375, 2), new Range16.ptr(65376, 65381, 1)]), new sliceType$1([new Range32.ptr(65792, 65794, 1), new Range32.ptr(66463, 66512, 49), new Range32.ptr(66927, 67671, 744), new Range32.ptr(67871, 67903, 32), new Range32.ptr(68176, 68184, 1), new Range32.ptr(68223, 68336, 113), new Range32.ptr(68337, 68342, 1), new Range32.ptr(68409, 68415, 1), new Range32.ptr(68505, 68508, 1), new Range32.ptr(69703, 69709, 1), new Range32.ptr(69819, 69820, 1), new Range32.ptr(69822, 69825, 1), new Range32.ptr(69952, 69955, 1), new Range32.ptr(70004, 70005, 1), new Range32.ptr(70085, 70088, 1), new Range32.ptr(70093, 70200, 107), new Range32.ptr(70201, 70205, 1), new Range32.ptr(70854, 71105, 251), new Range32.ptr(71106, 71113, 1), new Range32.ptr(71233, 71235, 1), new Range32.ptr(74864, 74868, 1), new Range32.ptr(92782, 92783, 1), new Range32.ptr(92917, 92983, 66), new Range32.ptr(92984, 92987, 1), new Range32.ptr(92996, 113823, 20827)]), 11);
  3806. _Pc = new RangeTable.ptr(new sliceType([new Range16.ptr(95, 8255, 8160), new Range16.ptr(8256, 8276, 20), new Range16.ptr(65075, 65076, 1), new Range16.ptr(65101, 65103, 1), new Range16.ptr(65343, 65343, 1)]), sliceType$1.nil, 0);
  3807. _Pd = new RangeTable.ptr(new sliceType([new Range16.ptr(45, 1418, 1373), new Range16.ptr(1470, 5120, 3650), new Range16.ptr(6150, 8208, 2058), new Range16.ptr(8209, 8213, 1), new Range16.ptr(11799, 11802, 3), new Range16.ptr(11834, 11835, 1), new Range16.ptr(11840, 12316, 476), new Range16.ptr(12336, 12448, 112), new Range16.ptr(65073, 65074, 1), new Range16.ptr(65112, 65123, 11), new Range16.ptr(65293, 65293, 1)]), sliceType$1.nil, 0);
  3808. _Pe = new RangeTable.ptr(new sliceType([new Range16.ptr(41, 93, 52), new Range16.ptr(125, 3899, 3774), new Range16.ptr(3901, 5788, 1887), new Range16.ptr(8262, 8318, 56), new Range16.ptr(8334, 8969, 635), new Range16.ptr(8971, 9002, 31), new Range16.ptr(10089, 10101, 2), new Range16.ptr(10182, 10215, 33), new Range16.ptr(10217, 10223, 2), new Range16.ptr(10628, 10648, 2), new Range16.ptr(10713, 10715, 2), new Range16.ptr(10749, 11811, 1062), new Range16.ptr(11813, 11817, 2), new Range16.ptr(12297, 12305, 2), new Range16.ptr(12309, 12315, 2), new Range16.ptr(12318, 12319, 1), new Range16.ptr(64830, 65048, 218), new Range16.ptr(65078, 65092, 2), new Range16.ptr(65096, 65114, 18), new Range16.ptr(65116, 65118, 2), new Range16.ptr(65289, 65341, 52), new Range16.ptr(65373, 65379, 3)]), sliceType$1.nil, 1);
  3809. _Pf = new RangeTable.ptr(new sliceType([new Range16.ptr(187, 8217, 8030), new Range16.ptr(8221, 8250, 29), new Range16.ptr(11779, 11781, 2), new Range16.ptr(11786, 11789, 3), new Range16.ptr(11805, 11809, 4)]), sliceType$1.nil, 0);
  3810. _Pi = new RangeTable.ptr(new sliceType([new Range16.ptr(171, 8216, 8045), new Range16.ptr(8219, 8220, 1), new Range16.ptr(8223, 8249, 26), new Range16.ptr(11778, 11780, 2), new Range16.ptr(11785, 11788, 3), new Range16.ptr(11804, 11808, 4)]), sliceType$1.nil, 0);
  3811. _Po = new RangeTable.ptr(new sliceType([new Range16.ptr(33, 35, 1), new Range16.ptr(37, 39, 1), new Range16.ptr(42, 46, 2), new Range16.ptr(47, 58, 11), new Range16.ptr(59, 63, 4), new Range16.ptr(64, 92, 28), new Range16.ptr(161, 167, 6), new Range16.ptr(182, 183, 1), new Range16.ptr(191, 894, 703), new Range16.ptr(903, 1370, 467), new Range16.ptr(1371, 1375, 1), new Range16.ptr(1417, 1472, 55), new Range16.ptr(1475, 1478, 3), new Range16.ptr(1523, 1524, 1), new Range16.ptr(1545, 1546, 1), new Range16.ptr(1548, 1549, 1), new Range16.ptr(1563, 1566, 3), new Range16.ptr(1567, 1642, 75), new Range16.ptr(1643, 1645, 1), new Range16.ptr(1748, 1792, 44), new Range16.ptr(1793, 1805, 1), new Range16.ptr(2039, 2041, 1), new Range16.ptr(2096, 2110, 1), new Range16.ptr(2142, 2404, 262), new Range16.ptr(2405, 2416, 11), new Range16.ptr(2800, 3572, 772), new Range16.ptr(3663, 3674, 11), new Range16.ptr(3675, 3844, 169), new Range16.ptr(3845, 3858, 1), new Range16.ptr(3860, 3973, 113), new Range16.ptr(4048, 4052, 1), new Range16.ptr(4057, 4058, 1), new Range16.ptr(4170, 4175, 1), new Range16.ptr(4347, 4960, 613), new Range16.ptr(4961, 4968, 1), new Range16.ptr(5741, 5742, 1), new Range16.ptr(5867, 5869, 1), new Range16.ptr(5941, 5942, 1), new Range16.ptr(6100, 6102, 1), new Range16.ptr(6104, 6106, 1), new Range16.ptr(6144, 6149, 1), new Range16.ptr(6151, 6154, 1), new Range16.ptr(6468, 6469, 1), new Range16.ptr(6686, 6687, 1), new Range16.ptr(6816, 6822, 1), new Range16.ptr(6824, 6829, 1), new Range16.ptr(7002, 7008, 1), new Range16.ptr(7164, 7167, 1), new Range16.ptr(7227, 7231, 1), new Range16.ptr(7294, 7295, 1), new Range16.ptr(7360, 7367, 1), new Range16.ptr(7379, 8214, 835), new Range16.ptr(8215, 8224, 9), new Range16.ptr(8225, 8231, 1), new Range16.ptr(8240, 8248, 1), new Range16.ptr(8251, 8254, 1), new Range16.ptr(8257, 8259, 1), new Range16.ptr(8263, 8273, 1), new Range16.ptr(8275, 8277, 2), new Range16.ptr(8278, 8286, 1), new Range16.ptr(11513, 11516, 1), new Range16.ptr(11518, 11519, 1), new Range16.ptr(11632, 11776, 144), new Range16.ptr(11777, 11782, 5), new Range16.ptr(11783, 11784, 1), new Range16.ptr(11787, 11790, 3), new Range16.ptr(11791, 11798, 1), new Range16.ptr(11800, 11801, 1), new Range16.ptr(11803, 11806, 3), new Range16.ptr(11807, 11818, 11), new Range16.ptr(11819, 11822, 1), new Range16.ptr(11824, 11833, 1), new Range16.ptr(11836, 11839, 1), new Range16.ptr(11841, 12289, 448), new Range16.ptr(12290, 12291, 1), new Range16.ptr(12349, 12539, 190), new Range16.ptr(42238, 42239, 1), new Range16.ptr(42509, 42511, 1), new Range16.ptr(42611, 42622, 11), new Range16.ptr(42738, 42743, 1), new Range16.ptr(43124, 43127, 1), new Range16.ptr(43214, 43215, 1), new Range16.ptr(43256, 43258, 1), new Range16.ptr(43310, 43311, 1), new Range16.ptr(43359, 43457, 98), new Range16.ptr(43458, 43469, 1), new Range16.ptr(43486, 43487, 1), new Range16.ptr(43612, 43615, 1), new Range16.ptr(43742, 43743, 1), new Range16.ptr(43760, 43761, 1), new Range16.ptr(44011, 65040, 21029), new Range16.ptr(65041, 65046, 1), new Range16.ptr(65049, 65072, 23), new Range16.ptr(65093, 65094, 1), new Range16.ptr(65097, 65100, 1), new Range16.ptr(65104, 65106, 1), new Range16.ptr(65108, 65111, 1), new Range16.ptr(65119, 65121, 1), new Range16.ptr(65128, 65130, 2), new Range16.ptr(65131, 65281, 150), new Range16.ptr(65282, 65283, 1), new Range16.ptr(65285, 65287, 1), new Range16.ptr(65290, 65294, 2), new Range16.ptr(65295, 65306, 11), new Range16.ptr(65307, 65311, 4), new Range16.ptr(65312, 65340, 28), new Range16.ptr(65377, 65380, 3), new Range16.ptr(65381, 65381, 1)]), new sliceType$1([new Range32.ptr(65792, 65792, 1), new Range32.ptr(65793, 65794, 1), new Range32.ptr(66463, 66512, 49), new Range32.ptr(66927, 67671, 744), new Range32.ptr(67871, 67903, 32), new Range32.ptr(68176, 68184, 1), new Range32.ptr(68223, 68336, 113), new Range32.ptr(68337, 68342, 1), new Range32.ptr(68409, 68415, 1), new Range32.ptr(68505, 68508, 1), new Range32.ptr(69703, 69709, 1), new Range32.ptr(69819, 69820, 1), new Range32.ptr(69822, 69825, 1), new Range32.ptr(69952, 69955, 1), new Range32.ptr(70004, 70005, 1), new Range32.ptr(70085, 70088, 1), new Range32.ptr(70093, 70200, 107), new Range32.ptr(70201, 70205, 1), new Range32.ptr(70854, 71105, 251), new Range32.ptr(71106, 71113, 1), new Range32.ptr(71233, 71235, 1), new Range32.ptr(74864, 74868, 1), new Range32.ptr(92782, 92783, 1), new Range32.ptr(92917, 92983, 66), new Range32.ptr(92984, 92987, 1), new Range32.ptr(92996, 113823, 20827)]), 8);
  3812. _Ps = new RangeTable.ptr(new sliceType([new Range16.ptr(40, 91, 51), new Range16.ptr(123, 3898, 3775), new Range16.ptr(3900, 5787, 1887), new Range16.ptr(8218, 8222, 4), new Range16.ptr(8261, 8317, 56), new Range16.ptr(8333, 8968, 635), new Range16.ptr(8970, 9001, 31), new Range16.ptr(10088, 10100, 2), new Range16.ptr(10181, 10214, 33), new Range16.ptr(10216, 10222, 2), new Range16.ptr(10627, 10647, 2), new Range16.ptr(10712, 10714, 2), new Range16.ptr(10748, 11810, 1062), new Range16.ptr(11812, 11816, 2), new Range16.ptr(11842, 12296, 454), new Range16.ptr(12298, 12304, 2), new Range16.ptr(12308, 12314, 2), new Range16.ptr(12317, 64831, 52514), new Range16.ptr(65047, 65077, 30), new Range16.ptr(65079, 65091, 2), new Range16.ptr(65095, 65113, 18), new Range16.ptr(65115, 65117, 2), new Range16.ptr(65288, 65339, 51), new Range16.ptr(65371, 65375, 4), new Range16.ptr(65378, 65378, 1)]), sliceType$1.nil, 1);
  3813. _S = new RangeTable.ptr(new sliceType([new Range16.ptr(36, 43, 7), new Range16.ptr(60, 62, 1), new Range16.ptr(94, 96, 2), new Range16.ptr(124, 126, 2), new Range16.ptr(162, 166, 1), new Range16.ptr(168, 169, 1), new Range16.ptr(172, 174, 2), new Range16.ptr(175, 177, 1), new Range16.ptr(180, 184, 4), new Range16.ptr(215, 247, 32), new Range16.ptr(706, 709, 1), new Range16.ptr(722, 735, 1), new Range16.ptr(741, 747, 1), new Range16.ptr(749, 751, 2), new Range16.ptr(752, 767, 1), new Range16.ptr(885, 900, 15), new Range16.ptr(901, 1014, 113), new Range16.ptr(1154, 1421, 267), new Range16.ptr(1422, 1423, 1), new Range16.ptr(1542, 1544, 1), new Range16.ptr(1547, 1550, 3), new Range16.ptr(1551, 1758, 207), new Range16.ptr(1769, 1789, 20), new Range16.ptr(1790, 2038, 248), new Range16.ptr(2546, 2547, 1), new Range16.ptr(2554, 2555, 1), new Range16.ptr(2801, 2928, 127), new Range16.ptr(3059, 3066, 1), new Range16.ptr(3199, 3449, 250), new Range16.ptr(3647, 3841, 194), new Range16.ptr(3842, 3843, 1), new Range16.ptr(3859, 3861, 2), new Range16.ptr(3862, 3863, 1), new Range16.ptr(3866, 3871, 1), new Range16.ptr(3892, 3896, 2), new Range16.ptr(4030, 4037, 1), new Range16.ptr(4039, 4044, 1), new Range16.ptr(4046, 4047, 1), new Range16.ptr(4053, 4056, 1), new Range16.ptr(4254, 4255, 1), new Range16.ptr(5008, 5017, 1), new Range16.ptr(6107, 6464, 357), new Range16.ptr(6622, 6655, 1), new Range16.ptr(7009, 7018, 1), new Range16.ptr(7028, 7036, 1), new Range16.ptr(8125, 8127, 2), new Range16.ptr(8128, 8129, 1), new Range16.ptr(8141, 8143, 1), new Range16.ptr(8157, 8159, 1), new Range16.ptr(8173, 8175, 1), new Range16.ptr(8189, 8190, 1), new Range16.ptr(8260, 8274, 14), new Range16.ptr(8314, 8316, 1), new Range16.ptr(8330, 8332, 1), new Range16.ptr(8352, 8381, 1), new Range16.ptr(8448, 8449, 1), new Range16.ptr(8451, 8454, 1), new Range16.ptr(8456, 8457, 1), new Range16.ptr(8468, 8470, 2), new Range16.ptr(8471, 8472, 1), new Range16.ptr(8478, 8483, 1), new Range16.ptr(8485, 8489, 2), new Range16.ptr(8494, 8506, 12), new Range16.ptr(8507, 8512, 5), new Range16.ptr(8513, 8516, 1), new Range16.ptr(8522, 8525, 1), new Range16.ptr(8527, 8592, 65), new Range16.ptr(8593, 8967, 1), new Range16.ptr(8972, 9000, 1), new Range16.ptr(9003, 9210, 1), new Range16.ptr(9216, 9254, 1), new Range16.ptr(9280, 9290, 1), new Range16.ptr(9372, 9449, 1), new Range16.ptr(9472, 10087, 1), new Range16.ptr(10132, 10180, 1), new Range16.ptr(10183, 10213, 1), new Range16.ptr(10224, 10626, 1), new Range16.ptr(10649, 10711, 1), new Range16.ptr(10716, 10747, 1), new Range16.ptr(10750, 11123, 1), new Range16.ptr(11126, 11157, 1), new Range16.ptr(11160, 11193, 1), new Range16.ptr(11197, 11208, 1), new Range16.ptr(11210, 11217, 1), new Range16.ptr(11493, 11498, 1), new Range16.ptr(11904, 11929, 1), new Range16.ptr(11931, 12019, 1), new Range16.ptr(12032, 12245, 1), new Range16.ptr(12272, 12283, 1), new Range16.ptr(12292, 12306, 14), new Range16.ptr(12307, 12320, 13), new Range16.ptr(12342, 12343, 1), new Range16.ptr(12350, 12351, 1), new Range16.ptr(12443, 12444, 1), new Range16.ptr(12688, 12689, 1), new Range16.ptr(12694, 12703, 1), new Range16.ptr(12736, 12771, 1), new Range16.ptr(12800, 12830, 1), new Range16.ptr(12842, 12871, 1), new Range16.ptr(12880, 12896, 16), new Range16.ptr(12897, 12927, 1), new Range16.ptr(12938, 12976, 1), new Range16.ptr(12992, 13054, 1), new Range16.ptr(13056, 13311, 1), new Range16.ptr(19904, 19967, 1), new Range16.ptr(42128, 42182, 1), new Range16.ptr(42752, 42774, 1), new Range16.ptr(42784, 42785, 1), new Range16.ptr(42889, 42890, 1), new Range16.ptr(43048, 43051, 1), new Range16.ptr(43062, 43065, 1), new Range16.ptr(43639, 43641, 1), new Range16.ptr(43867, 64297, 20430), new Range16.ptr(64434, 64449, 1), new Range16.ptr(65020, 65021, 1), new Range16.ptr(65122, 65124, 2), new Range16.ptr(65125, 65126, 1), new Range16.ptr(65129, 65284, 155), new Range16.ptr(65291, 65308, 17), new Range16.ptr(65309, 65310, 1), new Range16.ptr(65342, 65344, 2), new Range16.ptr(65372, 65374, 2), new Range16.ptr(65504, 65510, 1), new Range16.ptr(65512, 65518, 1), new Range16.ptr(65532, 65533, 1)]), new sliceType$1([new Range32.ptr(65847, 65855, 1), new Range32.ptr(65913, 65929, 1), new Range32.ptr(65932, 65936, 4), new Range32.ptr(65937, 65947, 1), new Range32.ptr(65952, 66000, 48), new Range32.ptr(66001, 66044, 1), new Range32.ptr(67703, 67704, 1), new Range32.ptr(68296, 92988, 24692), new Range32.ptr(92989, 92991, 1), new Range32.ptr(92997, 113820, 20823), new Range32.ptr(118784, 119029, 1), new Range32.ptr(119040, 119078, 1), new Range32.ptr(119081, 119140, 1), new Range32.ptr(119146, 119148, 1), new Range32.ptr(119171, 119172, 1), new Range32.ptr(119180, 119209, 1), new Range32.ptr(119214, 119261, 1), new Range32.ptr(119296, 119361, 1), new Range32.ptr(119365, 119552, 187), new Range32.ptr(119553, 119638, 1), new Range32.ptr(120513, 120539, 26), new Range32.ptr(120571, 120597, 26), new Range32.ptr(120629, 120655, 26), new Range32.ptr(120687, 120713, 26), new Range32.ptr(120745, 120771, 26), new Range32.ptr(126704, 126705, 1), new Range32.ptr(126976, 127019, 1), new Range32.ptr(127024, 127123, 1), new Range32.ptr(127136, 127150, 1), new Range32.ptr(127153, 127167, 1), new Range32.ptr(127169, 127183, 1), new Range32.ptr(127185, 127221, 1), new Range32.ptr(127248, 127278, 1), new Range32.ptr(127280, 127339, 1), new Range32.ptr(127344, 127386, 1), new Range32.ptr(127462, 127490, 1), new Range32.ptr(127504, 127546, 1), new Range32.ptr(127552, 127560, 1), new Range32.ptr(127568, 127569, 1), new Range32.ptr(127744, 127788, 1), new Range32.ptr(127792, 127869, 1), new Range32.ptr(127872, 127950, 1), new Range32.ptr(127956, 127991, 1), new Range32.ptr(128000, 128254, 1), new Range32.ptr(128256, 128330, 1), new Range32.ptr(128336, 128377, 1), new Range32.ptr(128379, 128419, 1), new Range32.ptr(128421, 128578, 1), new Range32.ptr(128581, 128719, 1), new Range32.ptr(128736, 128748, 1), new Range32.ptr(128752, 128755, 1), new Range32.ptr(128768, 128883, 1), new Range32.ptr(128896, 128980, 1), new Range32.ptr(129024, 129035, 1), new Range32.ptr(129040, 129095, 1), new Range32.ptr(129104, 129113, 1), new Range32.ptr(129120, 129159, 1), new Range32.ptr(129168, 129197, 1)]), 10);
  3814. _Sc = new RangeTable.ptr(new sliceType([new Range16.ptr(36, 162, 126), new Range16.ptr(163, 165, 1), new Range16.ptr(1423, 1547, 124), new Range16.ptr(2546, 2547, 1), new Range16.ptr(2555, 2801, 246), new Range16.ptr(3065, 3647, 582), new Range16.ptr(6107, 8352, 2245), new Range16.ptr(8353, 8381, 1), new Range16.ptr(43064, 65020, 21956), new Range16.ptr(65129, 65284, 155), new Range16.ptr(65504, 65505, 1), new Range16.ptr(65509, 65510, 1)]), sliceType$1.nil, 2);
  3815. _Sk = new RangeTable.ptr(new sliceType([new Range16.ptr(94, 96, 2), new Range16.ptr(168, 175, 7), new Range16.ptr(180, 184, 4), new Range16.ptr(706, 709, 1), new Range16.ptr(722, 735, 1), new Range16.ptr(741, 747, 1), new Range16.ptr(749, 751, 2), new Range16.ptr(752, 767, 1), new Range16.ptr(885, 900, 15), new Range16.ptr(901, 8125, 7224), new Range16.ptr(8127, 8129, 1), new Range16.ptr(8141, 8143, 1), new Range16.ptr(8157, 8159, 1), new Range16.ptr(8173, 8175, 1), new Range16.ptr(8189, 8190, 1), new Range16.ptr(12443, 12444, 1), new Range16.ptr(42752, 42774, 1), new Range16.ptr(42784, 42785, 1), new Range16.ptr(42889, 42890, 1), new Range16.ptr(43867, 64434, 20567), new Range16.ptr(64435, 64449, 1), new Range16.ptr(65342, 65344, 2), new Range16.ptr(65507, 65507, 1)]), sliceType$1.nil, 3);
  3816. _Sm = new RangeTable.ptr(new sliceType([new Range16.ptr(43, 60, 17), new Range16.ptr(61, 62, 1), new Range16.ptr(124, 126, 2), new Range16.ptr(172, 177, 5), new Range16.ptr(215, 247, 32), new Range16.ptr(1014, 1542, 528), new Range16.ptr(1543, 1544, 1), new Range16.ptr(8260, 8274, 14), new Range16.ptr(8314, 8316, 1), new Range16.ptr(8330, 8332, 1), new Range16.ptr(8472, 8512, 40), new Range16.ptr(8513, 8516, 1), new Range16.ptr(8523, 8592, 69), new Range16.ptr(8593, 8596, 1), new Range16.ptr(8602, 8603, 1), new Range16.ptr(8608, 8614, 3), new Range16.ptr(8622, 8654, 32), new Range16.ptr(8655, 8658, 3), new Range16.ptr(8660, 8692, 32), new Range16.ptr(8693, 8959, 1), new Range16.ptr(8992, 8993, 1), new Range16.ptr(9084, 9115, 31), new Range16.ptr(9116, 9139, 1), new Range16.ptr(9180, 9185, 1), new Range16.ptr(9655, 9665, 10), new Range16.ptr(9720, 9727, 1), new Range16.ptr(9839, 10176, 337), new Range16.ptr(10177, 10180, 1), new Range16.ptr(10183, 10213, 1), new Range16.ptr(10224, 10239, 1), new Range16.ptr(10496, 10626, 1), new Range16.ptr(10649, 10711, 1), new Range16.ptr(10716, 10747, 1), new Range16.ptr(10750, 11007, 1), new Range16.ptr(11056, 11076, 1), new Range16.ptr(11079, 11084, 1), new Range16.ptr(64297, 65122, 825), new Range16.ptr(65124, 65126, 1), new Range16.ptr(65291, 65308, 17), new Range16.ptr(65309, 65310, 1), new Range16.ptr(65372, 65374, 2), new Range16.ptr(65506, 65513, 7), new Range16.ptr(65514, 65516, 1)]), new sliceType$1([new Range32.ptr(120513, 120539, 26), new Range32.ptr(120571, 120597, 26), new Range32.ptr(120629, 120655, 26), new Range32.ptr(120687, 120713, 26), new Range32.ptr(120745, 120771, 26), new Range32.ptr(126704, 126705, 1)]), 5);
  3817. _So = new RangeTable.ptr(new sliceType([new Range16.ptr(166, 169, 3), new Range16.ptr(174, 176, 2), new Range16.ptr(1154, 1421, 267), new Range16.ptr(1422, 1550, 128), new Range16.ptr(1551, 1758, 207), new Range16.ptr(1769, 1789, 20), new Range16.ptr(1790, 2038, 248), new Range16.ptr(2554, 2928, 374), new Range16.ptr(3059, 3064, 1), new Range16.ptr(3066, 3199, 133), new Range16.ptr(3449, 3841, 392), new Range16.ptr(3842, 3843, 1), new Range16.ptr(3859, 3861, 2), new Range16.ptr(3862, 3863, 1), new Range16.ptr(3866, 3871, 1), new Range16.ptr(3892, 3896, 2), new Range16.ptr(4030, 4037, 1), new Range16.ptr(4039, 4044, 1), new Range16.ptr(4046, 4047, 1), new Range16.ptr(4053, 4056, 1), new Range16.ptr(4254, 4255, 1), new Range16.ptr(5008, 5017, 1), new Range16.ptr(6464, 6622, 158), new Range16.ptr(6623, 6655, 1), new Range16.ptr(7009, 7018, 1), new Range16.ptr(7028, 7036, 1), new Range16.ptr(8448, 8449, 1), new Range16.ptr(8451, 8454, 1), new Range16.ptr(8456, 8457, 1), new Range16.ptr(8468, 8470, 2), new Range16.ptr(8471, 8478, 7), new Range16.ptr(8479, 8483, 1), new Range16.ptr(8485, 8489, 2), new Range16.ptr(8494, 8506, 12), new Range16.ptr(8507, 8522, 15), new Range16.ptr(8524, 8525, 1), new Range16.ptr(8527, 8597, 70), new Range16.ptr(8598, 8601, 1), new Range16.ptr(8604, 8607, 1), new Range16.ptr(8609, 8610, 1), new Range16.ptr(8612, 8613, 1), new Range16.ptr(8615, 8621, 1), new Range16.ptr(8623, 8653, 1), new Range16.ptr(8656, 8657, 1), new Range16.ptr(8659, 8661, 2), new Range16.ptr(8662, 8691, 1), new Range16.ptr(8960, 8967, 1), new Range16.ptr(8972, 8991, 1), new Range16.ptr(8994, 9000, 1), new Range16.ptr(9003, 9083, 1), new Range16.ptr(9085, 9114, 1), new Range16.ptr(9140, 9179, 1), new Range16.ptr(9186, 9210, 1), new Range16.ptr(9216, 9254, 1), new Range16.ptr(9280, 9290, 1), new Range16.ptr(9372, 9449, 1), new Range16.ptr(9472, 9654, 1), new Range16.ptr(9656, 9664, 1), new Range16.ptr(9666, 9719, 1), new Range16.ptr(9728, 9838, 1), new Range16.ptr(9840, 10087, 1), new Range16.ptr(10132, 10175, 1), new Range16.ptr(10240, 10495, 1), new Range16.ptr(11008, 11055, 1), new Range16.ptr(11077, 11078, 1), new Range16.ptr(11085, 11123, 1), new Range16.ptr(11126, 11157, 1), new Range16.ptr(11160, 11193, 1), new Range16.ptr(11197, 11208, 1), new Range16.ptr(11210, 11217, 1), new Range16.ptr(11493, 11498, 1), new Range16.ptr(11904, 11929, 1), new Range16.ptr(11931, 12019, 1), new Range16.ptr(12032, 12245, 1), new Range16.ptr(12272, 12283, 1), new Range16.ptr(12292, 12306, 14), new Range16.ptr(12307, 12320, 13), new Range16.ptr(12342, 12343, 1), new Range16.ptr(12350, 12351, 1), new Range16.ptr(12688, 12689, 1), new Range16.ptr(12694, 12703, 1), new Range16.ptr(12736, 12771, 1), new Range16.ptr(12800, 12830, 1), new Range16.ptr(12842, 12871, 1), new Range16.ptr(12880, 12896, 16), new Range16.ptr(12897, 12927, 1), new Range16.ptr(12938, 12976, 1), new Range16.ptr(12992, 13054, 1), new Range16.ptr(13056, 13311, 1), new Range16.ptr(19904, 19967, 1), new Range16.ptr(42128, 42182, 1), new Range16.ptr(43048, 43051, 1), new Range16.ptr(43062, 43063, 1), new Range16.ptr(43065, 43639, 574), new Range16.ptr(43640, 43641, 1), new Range16.ptr(65021, 65508, 487), new Range16.ptr(65512, 65517, 5), new Range16.ptr(65518, 65532, 14), new Range16.ptr(65533, 65533, 1)]), new sliceType$1([new Range32.ptr(65847, 65847, 1), new Range32.ptr(65848, 65855, 1), new Range32.ptr(65913, 65929, 1), new Range32.ptr(65932, 65936, 4), new Range32.ptr(65937, 65947, 1), new Range32.ptr(65952, 66000, 48), new Range32.ptr(66001, 66044, 1), new Range32.ptr(67703, 67704, 1), new Range32.ptr(68296, 92988, 24692), new Range32.ptr(92989, 92991, 1), new Range32.ptr(92997, 113820, 20823), new Range32.ptr(118784, 119029, 1), new Range32.ptr(119040, 119078, 1), new Range32.ptr(119081, 119140, 1), new Range32.ptr(119146, 119148, 1), new Range32.ptr(119171, 119172, 1), new Range32.ptr(119180, 119209, 1), new Range32.ptr(119214, 119261, 1), new Range32.ptr(119296, 119361, 1), new Range32.ptr(119365, 119552, 187), new Range32.ptr(119553, 119638, 1), new Range32.ptr(126976, 127019, 1), new Range32.ptr(127024, 127123, 1), new Range32.ptr(127136, 127150, 1), new Range32.ptr(127153, 127167, 1), new Range32.ptr(127169, 127183, 1), new Range32.ptr(127185, 127221, 1), new Range32.ptr(127248, 127278, 1), new Range32.ptr(127280, 127339, 1), new Range32.ptr(127344, 127386, 1), new Range32.ptr(127462, 127490, 1), new Range32.ptr(127504, 127546, 1), new Range32.ptr(127552, 127560, 1), new Range32.ptr(127568, 127569, 1), new Range32.ptr(127744, 127788, 1), new Range32.ptr(127792, 127869, 1), new Range32.ptr(127872, 127950, 1), new Range32.ptr(127956, 127991, 1), new Range32.ptr(128000, 128254, 1), new Range32.ptr(128256, 128330, 1), new Range32.ptr(128336, 128377, 1), new Range32.ptr(128379, 128419, 1), new Range32.ptr(128421, 128578, 1), new Range32.ptr(128581, 128719, 1), new Range32.ptr(128736, 128748, 1), new Range32.ptr(128752, 128755, 1), new Range32.ptr(128768, 128883, 1), new Range32.ptr(128896, 128980, 1), new Range32.ptr(129024, 129035, 1), new Range32.ptr(129040, 129095, 1), new Range32.ptr(129104, 129113, 1), new Range32.ptr(129120, 129159, 1), new Range32.ptr(129168, 129197, 1)]), 2);
  3818. _Z = new RangeTable.ptr(new sliceType([new Range16.ptr(32, 160, 128), new Range16.ptr(5760, 8192, 2432), new Range16.ptr(8193, 8202, 1), new Range16.ptr(8232, 8233, 1), new Range16.ptr(8239, 8287, 48), new Range16.ptr(12288, 12288, 1)]), sliceType$1.nil, 1);
  3819. _Zl = new RangeTable.ptr(new sliceType([new Range16.ptr(8232, 8232, 1)]), sliceType$1.nil, 0);
  3820. _Zp = new RangeTable.ptr(new sliceType([new Range16.ptr(8233, 8233, 1)]), sliceType$1.nil, 0);
  3821. _Zs = new RangeTable.ptr(new sliceType([new Range16.ptr(32, 160, 128), new Range16.ptr(5760, 8192, 2432), new Range16.ptr(8193, 8202, 1), new Range16.ptr(8239, 8287, 48), new Range16.ptr(12288, 12288, 1)]), sliceType$1.nil, 1);
  3822. $pkg.Cc = _Cc;
  3823. $pkg.Cf = _Cf;
  3824. $pkg.Co = _Co;
  3825. $pkg.Cs = _Cs;
  3826. $pkg.Digit = _Nd;
  3827. $pkg.Nd = _Nd;
  3828. $pkg.Letter = _L;
  3829. $pkg.L = _L;
  3830. $pkg.Lm = _Lm;
  3831. $pkg.Lo = _Lo;
  3832. $pkg.Ll = _Ll;
  3833. $pkg.M = _M;
  3834. $pkg.Mc = _Mc;
  3835. $pkg.Me = _Me;
  3836. $pkg.Mn = _Mn;
  3837. $pkg.Nl = _Nl;
  3838. $pkg.No = _No;
  3839. $pkg.N = _N;
  3840. $pkg.C = _C;
  3841. $pkg.Pc = _Pc;
  3842. $pkg.Pd = _Pd;
  3843. $pkg.Pe = _Pe;
  3844. $pkg.Pf = _Pf;
  3845. $pkg.Pi = _Pi;
  3846. $pkg.Po = _Po;
  3847. $pkg.Ps = _Ps;
  3848. $pkg.P = _P;
  3849. $pkg.Sc = _Sc;
  3850. $pkg.Sk = _Sk;
  3851. $pkg.Sm = _Sm;
  3852. $pkg.So = _So;
  3853. $pkg.Z = _Z;
  3854. $pkg.S = _S;
  3855. $pkg.PrintRanges = new sliceType$2([$pkg.L, $pkg.M, $pkg.N, $pkg.P, $pkg.S]);
  3856. $pkg.Lt = _Lt;
  3857. $pkg.Lu = _Lu;
  3858. $pkg.Zl = _Zl;
  3859. $pkg.Zp = _Zp;
  3860. $pkg.Zs = _Zs;
  3861. $pkg.Categories = (_map = new $Map(), _key = "C", _map[_key] = { k: _key, v: $pkg.C }, _key = "Cc", _map[_key] = { k: _key, v: $pkg.Cc }, _key = "Cf", _map[_key] = { k: _key, v: $pkg.Cf }, _key = "Co", _map[_key] = { k: _key, v: $pkg.Co }, _key = "Cs", _map[_key] = { k: _key, v: $pkg.Cs }, _key = "L", _map[_key] = { k: _key, v: $pkg.L }, _key = "Ll", _map[_key] = { k: _key, v: $pkg.Ll }, _key = "Lm", _map[_key] = { k: _key, v: $pkg.Lm }, _key = "Lo", _map[_key] = { k: _key, v: $pkg.Lo }, _key = "Lt", _map[_key] = { k: _key, v: $pkg.Lt }, _key = "Lu", _map[_key] = { k: _key, v: $pkg.Lu }, _key = "M", _map[_key] = { k: _key, v: $pkg.M }, _key = "Mc", _map[_key] = { k: _key, v: $pkg.Mc }, _key = "Me", _map[_key] = { k: _key, v: $pkg.Me }, _key = "Mn", _map[_key] = { k: _key, v: $pkg.Mn }, _key = "N", _map[_key] = { k: _key, v: $pkg.N }, _key = "Nd", _map[_key] = { k: _key, v: $pkg.Nd }, _key = "Nl", _map[_key] = { k: _key, v: $pkg.Nl }, _key = "No", _map[_key] = { k: _key, v: $pkg.No }, _key = "P", _map[_key] = { k: _key, v: $pkg.P }, _key = "Pc", _map[_key] = { k: _key, v: $pkg.Pc }, _key = "Pd", _map[_key] = { k: _key, v: $pkg.Pd }, _key = "Pe", _map[_key] = { k: _key, v: $pkg.Pe }, _key = "Pf", _map[_key] = { k: _key, v: $pkg.Pf }, _key = "Pi", _map[_key] = { k: _key, v: $pkg.Pi }, _key = "Po", _map[_key] = { k: _key, v: $pkg.Po }, _key = "Ps", _map[_key] = { k: _key, v: $pkg.Ps }, _key = "S", _map[_key] = { k: _key, v: $pkg.S }, _key = "Sc", _map[_key] = { k: _key, v: $pkg.Sc }, _key = "Sk", _map[_key] = { k: _key, v: $pkg.Sk }, _key = "Sm", _map[_key] = { k: _key, v: $pkg.Sm }, _key = "So", _map[_key] = { k: _key, v: $pkg.So }, _key = "Z", _map[_key] = { k: _key, v: $pkg.Z }, _key = "Zl", _map[_key] = { k: _key, v: $pkg.Zl }, _key = "Zp", _map[_key] = { k: _key, v: $pkg.Zp }, _key = "Zs", _map[_key] = { k: _key, v: $pkg.Zs }, _map);
  3862. _Arabic = new RangeTable.ptr(new sliceType([new Range16.ptr(1536, 1540, 1), new Range16.ptr(1542, 1547, 1), new Range16.ptr(1549, 1562, 1), new Range16.ptr(1566, 1566, 1), new Range16.ptr(1568, 1599, 1), new Range16.ptr(1601, 1610, 1), new Range16.ptr(1622, 1631, 1), new Range16.ptr(1642, 1647, 1), new Range16.ptr(1649, 1756, 1), new Range16.ptr(1758, 1791, 1), new Range16.ptr(1872, 1919, 1), new Range16.ptr(2208, 2226, 1), new Range16.ptr(2276, 2303, 1), new Range16.ptr(64336, 64449, 1), new Range16.ptr(64467, 64829, 1), new Range16.ptr(64848, 64911, 1), new Range16.ptr(64914, 64967, 1), new Range16.ptr(65008, 65021, 1), new Range16.ptr(65136, 65140, 1), new Range16.ptr(65142, 65276, 1)]), new sliceType$1([new Range32.ptr(69216, 69246, 1), new Range32.ptr(126464, 126467, 1), new Range32.ptr(126469, 126495, 1), new Range32.ptr(126497, 126498, 1), new Range32.ptr(126500, 126500, 1), new Range32.ptr(126503, 126503, 1), new Range32.ptr(126505, 126514, 1), new Range32.ptr(126516, 126519, 1), new Range32.ptr(126521, 126521, 1), new Range32.ptr(126523, 126523, 1), new Range32.ptr(126530, 126530, 1), new Range32.ptr(126535, 126535, 1), new Range32.ptr(126537, 126537, 1), new Range32.ptr(126539, 126539, 1), new Range32.ptr(126541, 126543, 1), new Range32.ptr(126545, 126546, 1), new Range32.ptr(126548, 126548, 1), new Range32.ptr(126551, 126551, 1), new Range32.ptr(126553, 126553, 1), new Range32.ptr(126555, 126555, 1), new Range32.ptr(126557, 126557, 1), new Range32.ptr(126559, 126559, 1), new Range32.ptr(126561, 126562, 1), new Range32.ptr(126564, 126564, 1), new Range32.ptr(126567, 126570, 1), new Range32.ptr(126572, 126578, 1), new Range32.ptr(126580, 126583, 1), new Range32.ptr(126585, 126588, 1), new Range32.ptr(126590, 126590, 1), new Range32.ptr(126592, 126601, 1), new Range32.ptr(126603, 126619, 1), new Range32.ptr(126625, 126627, 1), new Range32.ptr(126629, 126633, 1), new Range32.ptr(126635, 126651, 1), new Range32.ptr(126704, 126705, 1)]), 0);
  3863. _Armenian = new RangeTable.ptr(new sliceType([new Range16.ptr(1329, 1366, 1), new Range16.ptr(1369, 1375, 1), new Range16.ptr(1377, 1415, 1), new Range16.ptr(1418, 1418, 1), new Range16.ptr(1421, 1423, 1), new Range16.ptr(64275, 64279, 1)]), sliceType$1.nil, 0);
  3864. _Avestan = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(68352, 68405, 1), new Range32.ptr(68409, 68415, 1)]), 0);
  3865. _Balinese = new RangeTable.ptr(new sliceType([new Range16.ptr(6912, 6987, 1), new Range16.ptr(6992, 7036, 1)]), sliceType$1.nil, 0);
  3866. _Bamum = new RangeTable.ptr(new sliceType([new Range16.ptr(42656, 42743, 1)]), new sliceType$1([new Range32.ptr(92160, 92728, 1)]), 0);
  3867. _Bassa_Vah = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(92880, 92909, 1), new Range32.ptr(92912, 92917, 1)]), 0);
  3868. _Batak = new RangeTable.ptr(new sliceType([new Range16.ptr(7104, 7155, 1), new Range16.ptr(7164, 7167, 1)]), sliceType$1.nil, 0);
  3869. _Bengali = new RangeTable.ptr(new sliceType([new Range16.ptr(2432, 2435, 1), new Range16.ptr(2437, 2444, 1), new Range16.ptr(2447, 2448, 1), new Range16.ptr(2451, 2472, 1), new Range16.ptr(2474, 2480, 1), new Range16.ptr(2482, 2482, 1), new Range16.ptr(2486, 2489, 1), new Range16.ptr(2492, 2500, 1), new Range16.ptr(2503, 2504, 1), new Range16.ptr(2507, 2510, 1), new Range16.ptr(2519, 2519, 1), new Range16.ptr(2524, 2525, 1), new Range16.ptr(2527, 2531, 1), new Range16.ptr(2534, 2555, 1)]), sliceType$1.nil, 0);
  3870. _Bopomofo = new RangeTable.ptr(new sliceType([new Range16.ptr(746, 747, 1), new Range16.ptr(12549, 12589, 1), new Range16.ptr(12704, 12730, 1)]), sliceType$1.nil, 0);
  3871. _Brahmi = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(69632, 69709, 1), new Range32.ptr(69714, 69743, 1), new Range32.ptr(69759, 69759, 1)]), 0);
  3872. _Braille = new RangeTable.ptr(new sliceType([new Range16.ptr(10240, 10495, 1)]), sliceType$1.nil, 0);
  3873. _Buginese = new RangeTable.ptr(new sliceType([new Range16.ptr(6656, 6683, 1), new Range16.ptr(6686, 6687, 1)]), sliceType$1.nil, 0);
  3874. _Buhid = new RangeTable.ptr(new sliceType([new Range16.ptr(5952, 5971, 1)]), sliceType$1.nil, 0);
  3875. _Canadian_Aboriginal = new RangeTable.ptr(new sliceType([new Range16.ptr(5120, 5759, 1), new Range16.ptr(6320, 6389, 1)]), sliceType$1.nil, 0);
  3876. _Carian = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(66208, 66256, 1)]), 0);
  3877. _Caucasian_Albanian = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(66864, 66915, 1), new Range32.ptr(66927, 66927, 1)]), 0);
  3878. _Chakma = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(69888, 69940, 1), new Range32.ptr(69942, 69955, 1)]), 0);
  3879. _Cham = new RangeTable.ptr(new sliceType([new Range16.ptr(43520, 43574, 1), new Range16.ptr(43584, 43597, 1), new Range16.ptr(43600, 43609, 1), new Range16.ptr(43612, 43615, 1)]), sliceType$1.nil, 0);
  3880. _Cherokee = new RangeTable.ptr(new sliceType([new Range16.ptr(5024, 5108, 1)]), sliceType$1.nil, 0);
  3881. _Common = new RangeTable.ptr(new sliceType([new Range16.ptr(0, 64, 1), new Range16.ptr(91, 96, 1), new Range16.ptr(123, 169, 1), new Range16.ptr(171, 185, 1), new Range16.ptr(187, 191, 1), new Range16.ptr(215, 215, 1), new Range16.ptr(247, 247, 1), new Range16.ptr(697, 735, 1), new Range16.ptr(741, 745, 1), new Range16.ptr(748, 767, 1), new Range16.ptr(884, 884, 1), new Range16.ptr(894, 894, 1), new Range16.ptr(901, 901, 1), new Range16.ptr(903, 903, 1), new Range16.ptr(1417, 1417, 1), new Range16.ptr(1541, 1541, 1), new Range16.ptr(1548, 1548, 1), new Range16.ptr(1563, 1564, 1), new Range16.ptr(1567, 1567, 1), new Range16.ptr(1600, 1600, 1), new Range16.ptr(1632, 1641, 1), new Range16.ptr(1757, 1757, 1), new Range16.ptr(2404, 2405, 1), new Range16.ptr(3647, 3647, 1), new Range16.ptr(4053, 4056, 1), new Range16.ptr(4347, 4347, 1), new Range16.ptr(5867, 5869, 1), new Range16.ptr(5941, 5942, 1), new Range16.ptr(6146, 6147, 1), new Range16.ptr(6149, 6149, 1), new Range16.ptr(7379, 7379, 1), new Range16.ptr(7393, 7393, 1), new Range16.ptr(7401, 7404, 1), new Range16.ptr(7406, 7411, 1), new Range16.ptr(7413, 7414, 1), new Range16.ptr(8192, 8203, 1), new Range16.ptr(8206, 8292, 1), new Range16.ptr(8294, 8304, 1), new Range16.ptr(8308, 8318, 1), new Range16.ptr(8320, 8334, 1), new Range16.ptr(8352, 8381, 1), new Range16.ptr(8448, 8485, 1), new Range16.ptr(8487, 8489, 1), new Range16.ptr(8492, 8497, 1), new Range16.ptr(8499, 8525, 1), new Range16.ptr(8527, 8543, 1), new Range16.ptr(8585, 8585, 1), new Range16.ptr(8592, 9210, 1), new Range16.ptr(9216, 9254, 1), new Range16.ptr(9280, 9290, 1), new Range16.ptr(9312, 10239, 1), new Range16.ptr(10496, 11123, 1), new Range16.ptr(11126, 11157, 1), new Range16.ptr(11160, 11193, 1), new Range16.ptr(11197, 11208, 1), new Range16.ptr(11210, 11217, 1), new Range16.ptr(11776, 11842, 1), new Range16.ptr(12272, 12283, 1), new Range16.ptr(12288, 12292, 1), new Range16.ptr(12294, 12294, 1), new Range16.ptr(12296, 12320, 1), new Range16.ptr(12336, 12343, 1), new Range16.ptr(12348, 12351, 1), new Range16.ptr(12443, 12444, 1), new Range16.ptr(12448, 12448, 1), new Range16.ptr(12539, 12540, 1), new Range16.ptr(12688, 12703, 1), new Range16.ptr(12736, 12771, 1), new Range16.ptr(12832, 12895, 1), new Range16.ptr(12927, 13007, 1), new Range16.ptr(13144, 13311, 1), new Range16.ptr(19904, 19967, 1), new Range16.ptr(42752, 42785, 1), new Range16.ptr(42888, 42890, 1), new Range16.ptr(43056, 43065, 1), new Range16.ptr(43310, 43310, 1), new Range16.ptr(43471, 43471, 1), new Range16.ptr(43867, 43867, 1), new Range16.ptr(64830, 64831, 1), new Range16.ptr(65040, 65049, 1), new Range16.ptr(65072, 65106, 1), new Range16.ptr(65108, 65126, 1), new Range16.ptr(65128, 65131, 1), new Range16.ptr(65279, 65279, 1), new Range16.ptr(65281, 65312, 1), new Range16.ptr(65339, 65344, 1), new Range16.ptr(65371, 65381, 1), new Range16.ptr(65392, 65392, 1), new Range16.ptr(65438, 65439, 1), new Range16.ptr(65504, 65510, 1), new Range16.ptr(65512, 65518, 1), new Range16.ptr(65529, 65533, 1)]), new sliceType$1([new Range32.ptr(65792, 65794, 1), new Range32.ptr(65799, 65843, 1), new Range32.ptr(65847, 65855, 1), new Range32.ptr(65936, 65947, 1), new Range32.ptr(66000, 66044, 1), new Range32.ptr(66273, 66299, 1), new Range32.ptr(113824, 113827, 1), new Range32.ptr(118784, 119029, 1), new Range32.ptr(119040, 119078, 1), new Range32.ptr(119081, 119142, 1), new Range32.ptr(119146, 119162, 1), new Range32.ptr(119171, 119172, 1), new Range32.ptr(119180, 119209, 1), new Range32.ptr(119214, 119261, 1), new Range32.ptr(119552, 119638, 1), new Range32.ptr(119648, 119665, 1), new Range32.ptr(119808, 119892, 1), new Range32.ptr(119894, 119964, 1), new Range32.ptr(119966, 119967, 1), new Range32.ptr(119970, 119970, 1), new Range32.ptr(119973, 119974, 1), new Range32.ptr(119977, 119980, 1), new Range32.ptr(119982, 119993, 1), new Range32.ptr(119995, 119995, 1), new Range32.ptr(119997, 120003, 1), new Range32.ptr(120005, 120069, 1), new Range32.ptr(120071, 120074, 1), new Range32.ptr(120077, 120084, 1), new Range32.ptr(120086, 120092, 1), new Range32.ptr(120094, 120121, 1), new Range32.ptr(120123, 120126, 1), new Range32.ptr(120128, 120132, 1), new Range32.ptr(120134, 120134, 1), new Range32.ptr(120138, 120144, 1), new Range32.ptr(120146, 120485, 1), new Range32.ptr(120488, 120779, 1), new Range32.ptr(120782, 120831, 1), new Range32.ptr(126976, 127019, 1), new Range32.ptr(127024, 127123, 1), new Range32.ptr(127136, 127150, 1), new Range32.ptr(127153, 127167, 1), new Range32.ptr(127169, 127183, 1), new Range32.ptr(127185, 127221, 1), new Range32.ptr(127232, 127244, 1), new Range32.ptr(127248, 127278, 1), new Range32.ptr(127280, 127339, 1), new Range32.ptr(127344, 127386, 1), new Range32.ptr(127462, 127487, 1), new Range32.ptr(127489, 127490, 1), new Range32.ptr(127504, 127546, 1), new Range32.ptr(127552, 127560, 1), new Range32.ptr(127568, 127569, 1), new Range32.ptr(127744, 127788, 1), new Range32.ptr(127792, 127869, 1), new Range32.ptr(127872, 127950, 1), new Range32.ptr(127956, 127991, 1), new Range32.ptr(128000, 128254, 1), new Range32.ptr(128256, 128330, 1), new Range32.ptr(128336, 128377, 1), new Range32.ptr(128379, 128419, 1), new Range32.ptr(128421, 128578, 1), new Range32.ptr(128581, 128719, 1), new Range32.ptr(128736, 128748, 1), new Range32.ptr(128752, 128755, 1), new Range32.ptr(128768, 128883, 1), new Range32.ptr(128896, 128980, 1), new Range32.ptr(129024, 129035, 1), new Range32.ptr(129040, 129095, 1), new Range32.ptr(129104, 129113, 1), new Range32.ptr(129120, 129159, 1), new Range32.ptr(129168, 129197, 1), new Range32.ptr(917505, 917505, 1), new Range32.ptr(917536, 917631, 1)]), 7);
  3882. _Coptic = new RangeTable.ptr(new sliceType([new Range16.ptr(994, 1007, 1), new Range16.ptr(11392, 11507, 1), new Range16.ptr(11513, 11519, 1)]), sliceType$1.nil, 0);
  3883. _Cuneiform = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(73728, 74648, 1), new Range32.ptr(74752, 74862, 1), new Range32.ptr(74864, 74868, 1)]), 0);
  3884. _Cypriot = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(67584, 67589, 1), new Range32.ptr(67592, 67592, 1), new Range32.ptr(67594, 67637, 1), new Range32.ptr(67639, 67640, 1), new Range32.ptr(67644, 67644, 1), new Range32.ptr(67647, 67647, 1)]), 0);
  3885. _Cyrillic = new RangeTable.ptr(new sliceType([new Range16.ptr(1024, 1156, 1), new Range16.ptr(1159, 1327, 1), new Range16.ptr(7467, 7467, 1), new Range16.ptr(7544, 7544, 1), new Range16.ptr(11744, 11775, 1), new Range16.ptr(42560, 42653, 1), new Range16.ptr(42655, 42655, 1)]), sliceType$1.nil, 0);
  3886. _Deseret = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(66560, 66639, 1)]), 0);
  3887. _Devanagari = new RangeTable.ptr(new sliceType([new Range16.ptr(2304, 2384, 1), new Range16.ptr(2387, 2403, 1), new Range16.ptr(2406, 2431, 1), new Range16.ptr(43232, 43259, 1)]), sliceType$1.nil, 0);
  3888. _Duployan = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(113664, 113770, 1), new Range32.ptr(113776, 113788, 1), new Range32.ptr(113792, 113800, 1), new Range32.ptr(113808, 113817, 1), new Range32.ptr(113820, 113823, 1)]), 0);
  3889. _Egyptian_Hieroglyphs = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(77824, 78894, 1)]), 0);
  3890. _Elbasan = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(66816, 66855, 1)]), 0);
  3891. _Ethiopic = new RangeTable.ptr(new sliceType([new Range16.ptr(4608, 4680, 1), new Range16.ptr(4682, 4685, 1), new Range16.ptr(4688, 4694, 1), new Range16.ptr(4696, 4696, 1), new Range16.ptr(4698, 4701, 1), new Range16.ptr(4704, 4744, 1), new Range16.ptr(4746, 4749, 1), new Range16.ptr(4752, 4784, 1), new Range16.ptr(4786, 4789, 1), new Range16.ptr(4792, 4798, 1), new Range16.ptr(4800, 4800, 1), new Range16.ptr(4802, 4805, 1), new Range16.ptr(4808, 4822, 1), new Range16.ptr(4824, 4880, 1), new Range16.ptr(4882, 4885, 1), new Range16.ptr(4888, 4954, 1), new Range16.ptr(4957, 4988, 1), new Range16.ptr(4992, 5017, 1), new Range16.ptr(11648, 11670, 1), new Range16.ptr(11680, 11686, 1), new Range16.ptr(11688, 11694, 1), new Range16.ptr(11696, 11702, 1), new Range16.ptr(11704, 11710, 1), new Range16.ptr(11712, 11718, 1), new Range16.ptr(11720, 11726, 1), new Range16.ptr(11728, 11734, 1), new Range16.ptr(11736, 11742, 1), new Range16.ptr(43777, 43782, 1), new Range16.ptr(43785, 43790, 1), new Range16.ptr(43793, 43798, 1), new Range16.ptr(43808, 43814, 1), new Range16.ptr(43816, 43822, 1)]), sliceType$1.nil, 0);
  3892. _Georgian = new RangeTable.ptr(new sliceType([new Range16.ptr(4256, 4293, 1), new Range16.ptr(4295, 4295, 1), new Range16.ptr(4301, 4301, 1), new Range16.ptr(4304, 4346, 1), new Range16.ptr(4348, 4351, 1), new Range16.ptr(11520, 11557, 1), new Range16.ptr(11559, 11559, 1), new Range16.ptr(11565, 11565, 1)]), sliceType$1.nil, 0);
  3893. _Glagolitic = new RangeTable.ptr(new sliceType([new Range16.ptr(11264, 11310, 1), new Range16.ptr(11312, 11358, 1)]), sliceType$1.nil, 0);
  3894. _Gothic = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(66352, 66378, 1)]), 0);
  3895. _Grantha = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(70401, 70403, 1), new Range32.ptr(70405, 70412, 1), new Range32.ptr(70415, 70416, 1), new Range32.ptr(70419, 70440, 1), new Range32.ptr(70442, 70448, 1), new Range32.ptr(70450, 70451, 1), new Range32.ptr(70453, 70457, 1), new Range32.ptr(70460, 70468, 1), new Range32.ptr(70471, 70472, 1), new Range32.ptr(70475, 70477, 1), new Range32.ptr(70487, 70487, 1), new Range32.ptr(70493, 70499, 1), new Range32.ptr(70502, 70508, 1), new Range32.ptr(70512, 70516, 1)]), 0);
  3896. _Greek = new RangeTable.ptr(new sliceType([new Range16.ptr(880, 883, 1), new Range16.ptr(885, 887, 1), new Range16.ptr(890, 893, 1), new Range16.ptr(895, 895, 1), new Range16.ptr(900, 900, 1), new Range16.ptr(902, 902, 1), new Range16.ptr(904, 906, 1), new Range16.ptr(908, 908, 1), new Range16.ptr(910, 929, 1), new Range16.ptr(931, 993, 1), new Range16.ptr(1008, 1023, 1), new Range16.ptr(7462, 7466, 1), new Range16.ptr(7517, 7521, 1), new Range16.ptr(7526, 7530, 1), new Range16.ptr(7615, 7615, 1), new Range16.ptr(7936, 7957, 1), new Range16.ptr(7960, 7965, 1), new Range16.ptr(7968, 8005, 1), new Range16.ptr(8008, 8013, 1), new Range16.ptr(8016, 8023, 1), new Range16.ptr(8025, 8025, 1), new Range16.ptr(8027, 8027, 1), new Range16.ptr(8029, 8029, 1), new Range16.ptr(8031, 8061, 1), new Range16.ptr(8064, 8116, 1), new Range16.ptr(8118, 8132, 1), new Range16.ptr(8134, 8147, 1), new Range16.ptr(8150, 8155, 1), new Range16.ptr(8157, 8175, 1), new Range16.ptr(8178, 8180, 1), new Range16.ptr(8182, 8190, 1), new Range16.ptr(8486, 8486, 1), new Range16.ptr(43877, 43877, 1)]), new sliceType$1([new Range32.ptr(65856, 65932, 1), new Range32.ptr(65952, 65952, 1), new Range32.ptr(119296, 119365, 1)]), 0);
  3897. _Gujarati = new RangeTable.ptr(new sliceType([new Range16.ptr(2689, 2691, 1), new Range16.ptr(2693, 2701, 1), new Range16.ptr(2703, 2705, 1), new Range16.ptr(2707, 2728, 1), new Range16.ptr(2730, 2736, 1), new Range16.ptr(2738, 2739, 1), new Range16.ptr(2741, 2745, 1), new Range16.ptr(2748, 2757, 1), new Range16.ptr(2759, 2761, 1), new Range16.ptr(2763, 2765, 1), new Range16.ptr(2768, 2768, 1), new Range16.ptr(2784, 2787, 1), new Range16.ptr(2790, 2801, 1)]), sliceType$1.nil, 0);
  3898. _Gurmukhi = new RangeTable.ptr(new sliceType([new Range16.ptr(2561, 2563, 1), new Range16.ptr(2565, 2570, 1), new Range16.ptr(2575, 2576, 1), new Range16.ptr(2579, 2600, 1), new Range16.ptr(2602, 2608, 1), new Range16.ptr(2610, 2611, 1), new Range16.ptr(2613, 2614, 1), new Range16.ptr(2616, 2617, 1), new Range16.ptr(2620, 2620, 1), new Range16.ptr(2622, 2626, 1), new Range16.ptr(2631, 2632, 1), new Range16.ptr(2635, 2637, 1), new Range16.ptr(2641, 2641, 1), new Range16.ptr(2649, 2652, 1), new Range16.ptr(2654, 2654, 1), new Range16.ptr(2662, 2677, 1)]), sliceType$1.nil, 0);
  3899. _Han = new RangeTable.ptr(new sliceType([new Range16.ptr(11904, 11929, 1), new Range16.ptr(11931, 12019, 1), new Range16.ptr(12032, 12245, 1), new Range16.ptr(12293, 12293, 1), new Range16.ptr(12295, 12295, 1), new Range16.ptr(12321, 12329, 1), new Range16.ptr(12344, 12347, 1), new Range16.ptr(13312, 19893, 1), new Range16.ptr(19968, 40908, 1), new Range16.ptr(63744, 64109, 1), new Range16.ptr(64112, 64217, 1)]), new sliceType$1([new Range32.ptr(131072, 173782, 1), new Range32.ptr(173824, 177972, 1), new Range32.ptr(177984, 178205, 1), new Range32.ptr(194560, 195101, 1)]), 0);
  3900. _Hangul = new RangeTable.ptr(new sliceType([new Range16.ptr(4352, 4607, 1), new Range16.ptr(12334, 12335, 1), new Range16.ptr(12593, 12686, 1), new Range16.ptr(12800, 12830, 1), new Range16.ptr(12896, 12926, 1), new Range16.ptr(43360, 43388, 1), new Range16.ptr(44032, 55203, 1), new Range16.ptr(55216, 55238, 1), new Range16.ptr(55243, 55291, 1), new Range16.ptr(65440, 65470, 1), new Range16.ptr(65474, 65479, 1), new Range16.ptr(65482, 65487, 1), new Range16.ptr(65490, 65495, 1), new Range16.ptr(65498, 65500, 1)]), sliceType$1.nil, 0);
  3901. _Hanunoo = new RangeTable.ptr(new sliceType([new Range16.ptr(5920, 5940, 1)]), sliceType$1.nil, 0);
  3902. _Hebrew = new RangeTable.ptr(new sliceType([new Range16.ptr(1425, 1479, 1), new Range16.ptr(1488, 1514, 1), new Range16.ptr(1520, 1524, 1), new Range16.ptr(64285, 64310, 1), new Range16.ptr(64312, 64316, 1), new Range16.ptr(64318, 64318, 1), new Range16.ptr(64320, 64321, 1), new Range16.ptr(64323, 64324, 1), new Range16.ptr(64326, 64335, 1)]), sliceType$1.nil, 0);
  3903. _Hiragana = new RangeTable.ptr(new sliceType([new Range16.ptr(12353, 12438, 1), new Range16.ptr(12445, 12447, 1)]), new sliceType$1([new Range32.ptr(110593, 110593, 1), new Range32.ptr(127488, 127488, 1)]), 0);
  3904. _Imperial_Aramaic = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(67648, 67669, 1), new Range32.ptr(67671, 67679, 1)]), 0);
  3905. _Inherited = new RangeTable.ptr(new sliceType([new Range16.ptr(768, 879, 1), new Range16.ptr(1157, 1158, 1), new Range16.ptr(1611, 1621, 1), new Range16.ptr(1648, 1648, 1), new Range16.ptr(2385, 2386, 1), new Range16.ptr(6832, 6846, 1), new Range16.ptr(7376, 7378, 1), new Range16.ptr(7380, 7392, 1), new Range16.ptr(7394, 7400, 1), new Range16.ptr(7405, 7405, 1), new Range16.ptr(7412, 7412, 1), new Range16.ptr(7416, 7417, 1), new Range16.ptr(7616, 7669, 1), new Range16.ptr(7676, 7679, 1), new Range16.ptr(8204, 8205, 1), new Range16.ptr(8400, 8432, 1), new Range16.ptr(12330, 12333, 1), new Range16.ptr(12441, 12442, 1), new Range16.ptr(65024, 65039, 1), new Range16.ptr(65056, 65069, 1)]), new sliceType$1([new Range32.ptr(66045, 66045, 1), new Range32.ptr(66272, 66272, 1), new Range32.ptr(119143, 119145, 1), new Range32.ptr(119163, 119170, 1), new Range32.ptr(119173, 119179, 1), new Range32.ptr(119210, 119213, 1), new Range32.ptr(917760, 917999, 1)]), 0);
  3906. _Inscriptional_Pahlavi = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(68448, 68466, 1), new Range32.ptr(68472, 68479, 1)]), 0);
  3907. _Inscriptional_Parthian = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(68416, 68437, 1), new Range32.ptr(68440, 68447, 1)]), 0);
  3908. _Javanese = new RangeTable.ptr(new sliceType([new Range16.ptr(43392, 43469, 1), new Range16.ptr(43472, 43481, 1), new Range16.ptr(43486, 43487, 1)]), sliceType$1.nil, 0);
  3909. _Kaithi = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(69760, 69825, 1)]), 0);
  3910. _Kannada = new RangeTable.ptr(new sliceType([new Range16.ptr(3201, 3203, 1), new Range16.ptr(3205, 3212, 1), new Range16.ptr(3214, 3216, 1), new Range16.ptr(3218, 3240, 1), new Range16.ptr(3242, 3251, 1), new Range16.ptr(3253, 3257, 1), new Range16.ptr(3260, 3268, 1), new Range16.ptr(3270, 3272, 1), new Range16.ptr(3274, 3277, 1), new Range16.ptr(3285, 3286, 1), new Range16.ptr(3294, 3294, 1), new Range16.ptr(3296, 3299, 1), new Range16.ptr(3302, 3311, 1), new Range16.ptr(3313, 3314, 1)]), sliceType$1.nil, 0);
  3911. _Katakana = new RangeTable.ptr(new sliceType([new Range16.ptr(12449, 12538, 1), new Range16.ptr(12541, 12543, 1), new Range16.ptr(12784, 12799, 1), new Range16.ptr(13008, 13054, 1), new Range16.ptr(13056, 13143, 1), new Range16.ptr(65382, 65391, 1), new Range16.ptr(65393, 65437, 1)]), new sliceType$1([new Range32.ptr(110592, 110592, 1)]), 0);
  3912. _Kayah_Li = new RangeTable.ptr(new sliceType([new Range16.ptr(43264, 43309, 1), new Range16.ptr(43311, 43311, 1)]), sliceType$1.nil, 0);
  3913. _Kharoshthi = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(68096, 68099, 1), new Range32.ptr(68101, 68102, 1), new Range32.ptr(68108, 68115, 1), new Range32.ptr(68117, 68119, 1), new Range32.ptr(68121, 68147, 1), new Range32.ptr(68152, 68154, 1), new Range32.ptr(68159, 68167, 1), new Range32.ptr(68176, 68184, 1)]), 0);
  3914. _Khmer = new RangeTable.ptr(new sliceType([new Range16.ptr(6016, 6109, 1), new Range16.ptr(6112, 6121, 1), new Range16.ptr(6128, 6137, 1), new Range16.ptr(6624, 6655, 1)]), sliceType$1.nil, 0);
  3915. _Khojki = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(70144, 70161, 1), new Range32.ptr(70163, 70205, 1)]), 0);
  3916. _Khudawadi = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(70320, 70378, 1), new Range32.ptr(70384, 70393, 1)]), 0);
  3917. _Lao = new RangeTable.ptr(new sliceType([new Range16.ptr(3713, 3714, 1), new Range16.ptr(3716, 3716, 1), new Range16.ptr(3719, 3720, 1), new Range16.ptr(3722, 3722, 1), new Range16.ptr(3725, 3725, 1), new Range16.ptr(3732, 3735, 1), new Range16.ptr(3737, 3743, 1), new Range16.ptr(3745, 3747, 1), new Range16.ptr(3749, 3749, 1), new Range16.ptr(3751, 3751, 1), new Range16.ptr(3754, 3755, 1), new Range16.ptr(3757, 3769, 1), new Range16.ptr(3771, 3773, 1), new Range16.ptr(3776, 3780, 1), new Range16.ptr(3782, 3782, 1), new Range16.ptr(3784, 3789, 1), new Range16.ptr(3792, 3801, 1), new Range16.ptr(3804, 3807, 1)]), sliceType$1.nil, 0);
  3918. _Latin = new RangeTable.ptr(new sliceType([new Range16.ptr(65, 90, 1), new Range16.ptr(97, 122, 1), new Range16.ptr(170, 170, 1), new Range16.ptr(186, 186, 1), new Range16.ptr(192, 214, 1), new Range16.ptr(216, 246, 1), new Range16.ptr(248, 696, 1), new Range16.ptr(736, 740, 1), new Range16.ptr(7424, 7461, 1), new Range16.ptr(7468, 7516, 1), new Range16.ptr(7522, 7525, 1), new Range16.ptr(7531, 7543, 1), new Range16.ptr(7545, 7614, 1), new Range16.ptr(7680, 7935, 1), new Range16.ptr(8305, 8305, 1), new Range16.ptr(8319, 8319, 1), new Range16.ptr(8336, 8348, 1), new Range16.ptr(8490, 8491, 1), new Range16.ptr(8498, 8498, 1), new Range16.ptr(8526, 8526, 1), new Range16.ptr(8544, 8584, 1), new Range16.ptr(11360, 11391, 1), new Range16.ptr(42786, 42887, 1), new Range16.ptr(42891, 42894, 1), new Range16.ptr(42896, 42925, 1), new Range16.ptr(42928, 42929, 1), new Range16.ptr(42999, 43007, 1), new Range16.ptr(43824, 43866, 1), new Range16.ptr(43868, 43871, 1), new Range16.ptr(43876, 43876, 1), new Range16.ptr(64256, 64262, 1), new Range16.ptr(65313, 65338, 1), new Range16.ptr(65345, 65370, 1)]), sliceType$1.nil, 6);
  3919. _Lepcha = new RangeTable.ptr(new sliceType([new Range16.ptr(7168, 7223, 1), new Range16.ptr(7227, 7241, 1), new Range16.ptr(7245, 7247, 1)]), sliceType$1.nil, 0);
  3920. _Limbu = new RangeTable.ptr(new sliceType([new Range16.ptr(6400, 6430, 1), new Range16.ptr(6432, 6443, 1), new Range16.ptr(6448, 6459, 1), new Range16.ptr(6464, 6464, 1), new Range16.ptr(6468, 6479, 1)]), sliceType$1.nil, 0);
  3921. _Linear_A = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(67072, 67382, 1), new Range32.ptr(67392, 67413, 1), new Range32.ptr(67424, 67431, 1)]), 0);
  3922. _Linear_B = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(65536, 65547, 1), new Range32.ptr(65549, 65574, 1), new Range32.ptr(65576, 65594, 1), new Range32.ptr(65596, 65597, 1), new Range32.ptr(65599, 65613, 1), new Range32.ptr(65616, 65629, 1), new Range32.ptr(65664, 65786, 1)]), 0);
  3923. _Lisu = new RangeTable.ptr(new sliceType([new Range16.ptr(42192, 42239, 1)]), sliceType$1.nil, 0);
  3924. _Lycian = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(66176, 66204, 1)]), 0);
  3925. _Lydian = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(67872, 67897, 1), new Range32.ptr(67903, 67903, 1)]), 0);
  3926. _Mahajani = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(69968, 70006, 1)]), 0);
  3927. _Malayalam = new RangeTable.ptr(new sliceType([new Range16.ptr(3329, 3331, 1), new Range16.ptr(3333, 3340, 1), new Range16.ptr(3342, 3344, 1), new Range16.ptr(3346, 3386, 1), new Range16.ptr(3389, 3396, 1), new Range16.ptr(3398, 3400, 1), new Range16.ptr(3402, 3406, 1), new Range16.ptr(3415, 3415, 1), new Range16.ptr(3424, 3427, 1), new Range16.ptr(3430, 3445, 1), new Range16.ptr(3449, 3455, 1)]), sliceType$1.nil, 0);
  3928. _Mandaic = new RangeTable.ptr(new sliceType([new Range16.ptr(2112, 2139, 1), new Range16.ptr(2142, 2142, 1)]), sliceType$1.nil, 0);
  3929. _Manichaean = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(68288, 68326, 1), new Range32.ptr(68331, 68342, 1)]), 0);
  3930. _Meetei_Mayek = new RangeTable.ptr(new sliceType([new Range16.ptr(43744, 43766, 1), new Range16.ptr(43968, 44013, 1), new Range16.ptr(44016, 44025, 1)]), sliceType$1.nil, 0);
  3931. _Mende_Kikakui = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(124928, 125124, 1), new Range32.ptr(125127, 125142, 1)]), 0);
  3932. _Meroitic_Cursive = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(68000, 68023, 1), new Range32.ptr(68030, 68031, 1)]), 0);
  3933. _Meroitic_Hieroglyphs = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(67968, 67999, 1)]), 0);
  3934. _Miao = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(93952, 94020, 1), new Range32.ptr(94032, 94078, 1), new Range32.ptr(94095, 94111, 1)]), 0);
  3935. _Modi = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(71168, 71236, 1), new Range32.ptr(71248, 71257, 1)]), 0);
  3936. _Mongolian = new RangeTable.ptr(new sliceType([new Range16.ptr(6144, 6145, 1), new Range16.ptr(6148, 6148, 1), new Range16.ptr(6150, 6158, 1), new Range16.ptr(6160, 6169, 1), new Range16.ptr(6176, 6263, 1), new Range16.ptr(6272, 6314, 1)]), sliceType$1.nil, 0);
  3937. _Mro = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(92736, 92766, 1), new Range32.ptr(92768, 92777, 1), new Range32.ptr(92782, 92783, 1)]), 0);
  3938. _Myanmar = new RangeTable.ptr(new sliceType([new Range16.ptr(4096, 4255, 1), new Range16.ptr(43488, 43518, 1), new Range16.ptr(43616, 43647, 1)]), sliceType$1.nil, 0);
  3939. _Nabataean = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(67712, 67742, 1), new Range32.ptr(67751, 67759, 1)]), 0);
  3940. _New_Tai_Lue = new RangeTable.ptr(new sliceType([new Range16.ptr(6528, 6571, 1), new Range16.ptr(6576, 6601, 1), new Range16.ptr(6608, 6618, 1), new Range16.ptr(6622, 6623, 1)]), sliceType$1.nil, 0);
  3941. _Nko = new RangeTable.ptr(new sliceType([new Range16.ptr(1984, 2042, 1)]), sliceType$1.nil, 0);
  3942. _Ogham = new RangeTable.ptr(new sliceType([new Range16.ptr(5760, 5788, 1)]), sliceType$1.nil, 0);
  3943. _Ol_Chiki = new RangeTable.ptr(new sliceType([new Range16.ptr(7248, 7295, 1)]), sliceType$1.nil, 0);
  3944. _Old_Italic = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(66304, 66339, 1)]), 0);
  3945. _Old_North_Arabian = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(68224, 68255, 1)]), 0);
  3946. _Old_Permic = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(66384, 66426, 1)]), 0);
  3947. _Old_Persian = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(66464, 66499, 1), new Range32.ptr(66504, 66517, 1)]), 0);
  3948. _Old_South_Arabian = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(68192, 68223, 1)]), 0);
  3949. _Old_Turkic = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(68608, 68680, 1)]), 0);
  3950. _Oriya = new RangeTable.ptr(new sliceType([new Range16.ptr(2817, 2819, 1), new Range16.ptr(2821, 2828, 1), new Range16.ptr(2831, 2832, 1), new Range16.ptr(2835, 2856, 1), new Range16.ptr(2858, 2864, 1), new Range16.ptr(2866, 2867, 1), new Range16.ptr(2869, 2873, 1), new Range16.ptr(2876, 2884, 1), new Range16.ptr(2887, 2888, 1), new Range16.ptr(2891, 2893, 1), new Range16.ptr(2902, 2903, 1), new Range16.ptr(2908, 2909, 1), new Range16.ptr(2911, 2915, 1), new Range16.ptr(2918, 2935, 1)]), sliceType$1.nil, 0);
  3951. _Osmanya = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(66688, 66717, 1), new Range32.ptr(66720, 66729, 1)]), 0);
  3952. _Pahawh_Hmong = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(92928, 92997, 1), new Range32.ptr(93008, 93017, 1), new Range32.ptr(93019, 93025, 1), new Range32.ptr(93027, 93047, 1), new Range32.ptr(93053, 93071, 1)]), 0);
  3953. _Palmyrene = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(67680, 67711, 1)]), 0);
  3954. _Pau_Cin_Hau = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(72384, 72440, 1)]), 0);
  3955. _Phags_Pa = new RangeTable.ptr(new sliceType([new Range16.ptr(43072, 43127, 1)]), sliceType$1.nil, 0);
  3956. _Phoenician = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(67840, 67867, 1), new Range32.ptr(67871, 67871, 1)]), 0);
  3957. _Psalter_Pahlavi = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(68480, 68497, 1), new Range32.ptr(68505, 68508, 1), new Range32.ptr(68521, 68527, 1)]), 0);
  3958. _Rejang = new RangeTable.ptr(new sliceType([new Range16.ptr(43312, 43347, 1), new Range16.ptr(43359, 43359, 1)]), sliceType$1.nil, 0);
  3959. _Runic = new RangeTable.ptr(new sliceType([new Range16.ptr(5792, 5866, 1), new Range16.ptr(5870, 5880, 1)]), sliceType$1.nil, 0);
  3960. _Samaritan = new RangeTable.ptr(new sliceType([new Range16.ptr(2048, 2093, 1), new Range16.ptr(2096, 2110, 1)]), sliceType$1.nil, 0);
  3961. _Saurashtra = new RangeTable.ptr(new sliceType([new Range16.ptr(43136, 43204, 1), new Range16.ptr(43214, 43225, 1)]), sliceType$1.nil, 0);
  3962. _Sharada = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(70016, 70088, 1), new Range32.ptr(70093, 70093, 1), new Range32.ptr(70096, 70106, 1)]), 0);
  3963. _Shavian = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(66640, 66687, 1)]), 0);
  3964. _Siddham = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(71040, 71093, 1), new Range32.ptr(71096, 71113, 1)]), 0);
  3965. _Sinhala = new RangeTable.ptr(new sliceType([new Range16.ptr(3458, 3459, 1), new Range16.ptr(3461, 3478, 1), new Range16.ptr(3482, 3505, 1), new Range16.ptr(3507, 3515, 1), new Range16.ptr(3517, 3517, 1), new Range16.ptr(3520, 3526, 1), new Range16.ptr(3530, 3530, 1), new Range16.ptr(3535, 3540, 1), new Range16.ptr(3542, 3542, 1), new Range16.ptr(3544, 3551, 1), new Range16.ptr(3558, 3567, 1), new Range16.ptr(3570, 3572, 1)]), new sliceType$1([new Range32.ptr(70113, 70132, 1)]), 0);
  3966. _Sora_Sompeng = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(69840, 69864, 1), new Range32.ptr(69872, 69881, 1)]), 0);
  3967. _Sundanese = new RangeTable.ptr(new sliceType([new Range16.ptr(7040, 7103, 1), new Range16.ptr(7360, 7367, 1)]), sliceType$1.nil, 0);
  3968. _Syloti_Nagri = new RangeTable.ptr(new sliceType([new Range16.ptr(43008, 43051, 1)]), sliceType$1.nil, 0);
  3969. _Syriac = new RangeTable.ptr(new sliceType([new Range16.ptr(1792, 1805, 1), new Range16.ptr(1807, 1866, 1), new Range16.ptr(1869, 1871, 1)]), sliceType$1.nil, 0);
  3970. _Tagalog = new RangeTable.ptr(new sliceType([new Range16.ptr(5888, 5900, 1), new Range16.ptr(5902, 5908, 1)]), sliceType$1.nil, 0);
  3971. _Tagbanwa = new RangeTable.ptr(new sliceType([new Range16.ptr(5984, 5996, 1), new Range16.ptr(5998, 6000, 1), new Range16.ptr(6002, 6003, 1)]), sliceType$1.nil, 0);
  3972. _Tai_Le = new RangeTable.ptr(new sliceType([new Range16.ptr(6480, 6509, 1), new Range16.ptr(6512, 6516, 1)]), sliceType$1.nil, 0);
  3973. _Tai_Tham = new RangeTable.ptr(new sliceType([new Range16.ptr(6688, 6750, 1), new Range16.ptr(6752, 6780, 1), new Range16.ptr(6783, 6793, 1), new Range16.ptr(6800, 6809, 1), new Range16.ptr(6816, 6829, 1)]), sliceType$1.nil, 0);
  3974. _Tai_Viet = new RangeTable.ptr(new sliceType([new Range16.ptr(43648, 43714, 1), new Range16.ptr(43739, 43743, 1)]), sliceType$1.nil, 0);
  3975. _Takri = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(71296, 71351, 1), new Range32.ptr(71360, 71369, 1)]), 0);
  3976. _Tamil = new RangeTable.ptr(new sliceType([new Range16.ptr(2946, 2947, 1), new Range16.ptr(2949, 2954, 1), new Range16.ptr(2958, 2960, 1), new Range16.ptr(2962, 2965, 1), new Range16.ptr(2969, 2970, 1), new Range16.ptr(2972, 2972, 1), new Range16.ptr(2974, 2975, 1), new Range16.ptr(2979, 2980, 1), new Range16.ptr(2984, 2986, 1), new Range16.ptr(2990, 3001, 1), new Range16.ptr(3006, 3010, 1), new Range16.ptr(3014, 3016, 1), new Range16.ptr(3018, 3021, 1), new Range16.ptr(3024, 3024, 1), new Range16.ptr(3031, 3031, 1), new Range16.ptr(3046, 3066, 1)]), sliceType$1.nil, 0);
  3977. _Telugu = new RangeTable.ptr(new sliceType([new Range16.ptr(3072, 3075, 1), new Range16.ptr(3077, 3084, 1), new Range16.ptr(3086, 3088, 1), new Range16.ptr(3090, 3112, 1), new Range16.ptr(3114, 3129, 1), new Range16.ptr(3133, 3140, 1), new Range16.ptr(3142, 3144, 1), new Range16.ptr(3146, 3149, 1), new Range16.ptr(3157, 3158, 1), new Range16.ptr(3160, 3161, 1), new Range16.ptr(3168, 3171, 1), new Range16.ptr(3174, 3183, 1), new Range16.ptr(3192, 3199, 1)]), sliceType$1.nil, 0);
  3978. _Thaana = new RangeTable.ptr(new sliceType([new Range16.ptr(1920, 1969, 1)]), sliceType$1.nil, 0);
  3979. _Thai = new RangeTable.ptr(new sliceType([new Range16.ptr(3585, 3642, 1), new Range16.ptr(3648, 3675, 1)]), sliceType$1.nil, 0);
  3980. _Tibetan = new RangeTable.ptr(new sliceType([new Range16.ptr(3840, 3911, 1), new Range16.ptr(3913, 3948, 1), new Range16.ptr(3953, 3991, 1), new Range16.ptr(3993, 4028, 1), new Range16.ptr(4030, 4044, 1), new Range16.ptr(4046, 4052, 1), new Range16.ptr(4057, 4058, 1)]), sliceType$1.nil, 0);
  3981. _Tifinagh = new RangeTable.ptr(new sliceType([new Range16.ptr(11568, 11623, 1), new Range16.ptr(11631, 11632, 1), new Range16.ptr(11647, 11647, 1)]), sliceType$1.nil, 0);
  3982. _Tirhuta = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(70784, 70855, 1), new Range32.ptr(70864, 70873, 1)]), 0);
  3983. _Ugaritic = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(66432, 66461, 1), new Range32.ptr(66463, 66463, 1)]), 0);
  3984. _Vai = new RangeTable.ptr(new sliceType([new Range16.ptr(42240, 42539, 1)]), sliceType$1.nil, 0);
  3985. _Warang_Citi = new RangeTable.ptr(new sliceType([]), new sliceType$1([new Range32.ptr(71840, 71922, 1), new Range32.ptr(71935, 71935, 1)]), 0);
  3986. _Yi = new RangeTable.ptr(new sliceType([new Range16.ptr(40960, 42124, 1), new Range16.ptr(42128, 42182, 1)]), sliceType$1.nil, 0);
  3987. $pkg.Arabic = _Arabic;
  3988. $pkg.Armenian = _Armenian;
  3989. $pkg.Avestan = _Avestan;
  3990. $pkg.Balinese = _Balinese;
  3991. $pkg.Bamum = _Bamum;
  3992. $pkg.Bassa_Vah = _Bassa_Vah;
  3993. $pkg.Batak = _Batak;
  3994. $pkg.Bengali = _Bengali;
  3995. $pkg.Bopomofo = _Bopomofo;
  3996. $pkg.Brahmi = _Brahmi;
  3997. $pkg.Braille = _Braille;
  3998. $pkg.Buginese = _Buginese;
  3999. $pkg.Buhid = _Buhid;
  4000. $pkg.Canadian_Aboriginal = _Canadian_Aboriginal;
  4001. $pkg.Carian = _Carian;
  4002. $pkg.Caucasian_Albanian = _Caucasian_Albanian;
  4003. $pkg.Chakma = _Chakma;
  4004. $pkg.Cham = _Cham;
  4005. $pkg.Cherokee = _Cherokee;
  4006. $pkg.Common = _Common;
  4007. $pkg.Coptic = _Coptic;
  4008. $pkg.Cuneiform = _Cuneiform;
  4009. $pkg.Cypriot = _Cypriot;
  4010. $pkg.Cyrillic = _Cyrillic;
  4011. $pkg.Deseret = _Deseret;
  4012. $pkg.Devanagari = _Devanagari;
  4013. $pkg.Duployan = _Duployan;
  4014. $pkg.Egyptian_Hieroglyphs = _Egyptian_Hieroglyphs;
  4015. $pkg.Elbasan = _Elbasan;
  4016. $pkg.Ethiopic = _Ethiopic;
  4017. $pkg.Georgian = _Georgian;
  4018. $pkg.Glagolitic = _Glagolitic;
  4019. $pkg.Gothic = _Gothic;
  4020. $pkg.Grantha = _Grantha;
  4021. $pkg.Greek = _Greek;
  4022. $pkg.Gujarati = _Gujarati;
  4023. $pkg.Gurmukhi = _Gurmukhi;
  4024. $pkg.Han = _Han;
  4025. $pkg.Hangul = _Hangul;
  4026. $pkg.Hanunoo = _Hanunoo;
  4027. $pkg.Hebrew = _Hebrew;
  4028. $pkg.Hiragana = _Hiragana;
  4029. $pkg.Imperial_Aramaic = _Imperial_Aramaic;
  4030. $pkg.Inherited = _Inherited;
  4031. $pkg.Inscriptional_Pahlavi = _Inscriptional_Pahlavi;
  4032. $pkg.Inscriptional_Parthian = _Inscriptional_Parthian;
  4033. $pkg.Javanese = _Javanese;
  4034. $pkg.Kaithi = _Kaithi;
  4035. $pkg.Kannada = _Kannada;
  4036. $pkg.Katakana = _Katakana;
  4037. $pkg.Kayah_Li = _Kayah_Li;
  4038. $pkg.Kharoshthi = _Kharoshthi;
  4039. $pkg.Khmer = _Khmer;
  4040. $pkg.Khojki = _Khojki;
  4041. $pkg.Khudawadi = _Khudawadi;
  4042. $pkg.Lao = _Lao;
  4043. $pkg.Latin = _Latin;
  4044. $pkg.Lepcha = _Lepcha;
  4045. $pkg.Limbu = _Limbu;
  4046. $pkg.Linear_A = _Linear_A;
  4047. $pkg.Linear_B = _Linear_B;
  4048. $pkg.Lisu = _Lisu;
  4049. $pkg.Lycian = _Lycian;
  4050. $pkg.Lydian = _Lydian;
  4051. $pkg.Mahajani = _Mahajani;
  4052. $pkg.Malayalam = _Malayalam;
  4053. $pkg.Mandaic = _Mandaic;
  4054. $pkg.Manichaean = _Manichaean;
  4055. $pkg.Meetei_Mayek = _Meetei_Mayek;
  4056. $pkg.Mende_Kikakui = _Mende_Kikakui;
  4057. $pkg.Meroitic_Cursive = _Meroitic_Cursive;
  4058. $pkg.Meroitic_Hieroglyphs = _Meroitic_Hieroglyphs;
  4059. $pkg.Miao = _Miao;
  4060. $pkg.Modi = _Modi;
  4061. $pkg.Mongolian = _Mongolian;
  4062. $pkg.Mro = _Mro;
  4063. $pkg.Myanmar = _Myanmar;
  4064. $pkg.Nabataean = _Nabataean;
  4065. $pkg.New_Tai_Lue = _New_Tai_Lue;
  4066. $pkg.Nko = _Nko;
  4067. $pkg.Ogham = _Ogham;
  4068. $pkg.Ol_Chiki = _Ol_Chiki;
  4069. $pkg.Old_Italic = _Old_Italic;
  4070. $pkg.Old_North_Arabian = _Old_North_Arabian;
  4071. $pkg.Old_Permic = _Old_Permic;
  4072. $pkg.Old_Persian = _Old_Persian;
  4073. $pkg.Old_South_Arabian = _Old_South_Arabian;
  4074. $pkg.Old_Turkic = _Old_Turkic;
  4075. $pkg.Oriya = _Oriya;
  4076. $pkg.Osmanya = _Osmanya;
  4077. $pkg.Pahawh_Hmong = _Pahawh_Hmong;
  4078. $pkg.Palmyrene = _Palmyrene;
  4079. $pkg.Pau_Cin_Hau = _Pau_Cin_Hau;
  4080. $pkg.Phags_Pa = _Phags_Pa;
  4081. $pkg.Phoenician = _Phoenician;
  4082. $pkg.Psalter_Pahlavi = _Psalter_Pahlavi;
  4083. $pkg.Rejang = _Rejang;
  4084. $pkg.Runic = _Runic;
  4085. $pkg.Samaritan = _Samaritan;
  4086. $pkg.Saurashtra = _Saurashtra;
  4087. $pkg.Sharada = _Sharada;
  4088. $pkg.Shavian = _Shavian;
  4089. $pkg.Siddham = _Siddham;
  4090. $pkg.Sinhala = _Sinhala;
  4091. $pkg.Sora_Sompeng = _Sora_Sompeng;
  4092. $pkg.Sundanese = _Sundanese;
  4093. $pkg.Syloti_Nagri = _Syloti_Nagri;
  4094. $pkg.Syriac = _Syriac;
  4095. $pkg.Tagalog = _Tagalog;
  4096. $pkg.Tagbanwa = _Tagbanwa;
  4097. $pkg.Tai_Le = _Tai_Le;
  4098. $pkg.Tai_Tham = _Tai_Tham;
  4099. $pkg.Tai_Viet = _Tai_Viet;
  4100. $pkg.Takri = _Takri;
  4101. $pkg.Tamil = _Tamil;
  4102. $pkg.Telugu = _Telugu;
  4103. $pkg.Thaana = _Thaana;
  4104. $pkg.Thai = _Thai;
  4105. $pkg.Tibetan = _Tibetan;
  4106. $pkg.Tifinagh = _Tifinagh;
  4107. $pkg.Tirhuta = _Tirhuta;
  4108. $pkg.Ugaritic = _Ugaritic;
  4109. $pkg.Vai = _Vai;
  4110. $pkg.Warang_Citi = _Warang_Citi;
  4111. $pkg.Yi = _Yi;
  4112. $pkg.Scripts = (_map$1 = new $Map(), _key$1 = "Arabic", _map$1[_key$1] = { k: _key$1, v: $pkg.Arabic }, _key$1 = "Armenian", _map$1[_key$1] = { k: _key$1, v: $pkg.Armenian }, _key$1 = "Avestan", _map$1[_key$1] = { k: _key$1, v: $pkg.Avestan }, _key$1 = "Balinese", _map$1[_key$1] = { k: _key$1, v: $pkg.Balinese }, _key$1 = "Bamum", _map$1[_key$1] = { k: _key$1, v: $pkg.Bamum }, _key$1 = "Bassa_Vah", _map$1[_key$1] = { k: _key$1, v: $pkg.Bassa_Vah }, _key$1 = "Batak", _map$1[_key$1] = { k: _key$1, v: $pkg.Batak }, _key$1 = "Bengali", _map$1[_key$1] = { k: _key$1, v: $pkg.Bengali }, _key$1 = "Bopomofo", _map$1[_key$1] = { k: _key$1, v: $pkg.Bopomofo }, _key$1 = "Brahmi", _map$1[_key$1] = { k: _key$1, v: $pkg.Brahmi }, _key$1 = "Braille", _map$1[_key$1] = { k: _key$1, v: $pkg.Braille }, _key$1 = "Buginese", _map$1[_key$1] = { k: _key$1, v: $pkg.Buginese }, _key$1 = "Buhid", _map$1[_key$1] = { k: _key$1, v: $pkg.Buhid }, _key$1 = "Canadian_Aboriginal", _map$1[_key$1] = { k: _key$1, v: $pkg.Canadian_Aboriginal }, _key$1 = "Carian", _map$1[_key$1] = { k: _key$1, v: $pkg.Carian }, _key$1 = "Caucasian_Albanian", _map$1[_key$1] = { k: _key$1, v: $pkg.Caucasian_Albanian }, _key$1 = "Chakma", _map$1[_key$1] = { k: _key$1, v: $pkg.Chakma }, _key$1 = "Cham", _map$1[_key$1] = { k: _key$1, v: $pkg.Cham }, _key$1 = "Cherokee", _map$1[_key$1] = { k: _key$1, v: $pkg.Cherokee }, _key$1 = "Common", _map$1[_key$1] = { k: _key$1, v: $pkg.Common }, _key$1 = "Coptic", _map$1[_key$1] = { k: _key$1, v: $pkg.Coptic }, _key$1 = "Cuneiform", _map$1[_key$1] = { k: _key$1, v: $pkg.Cuneiform }, _key$1 = "Cypriot", _map$1[_key$1] = { k: _key$1, v: $pkg.Cypriot }, _key$1 = "Cyrillic", _map$1[_key$1] = { k: _key$1, v: $pkg.Cyrillic }, _key$1 = "Deseret", _map$1[_key$1] = { k: _key$1, v: $pkg.Deseret }, _key$1 = "Devanagari", _map$1[_key$1] = { k: _key$1, v: $pkg.Devanagari }, _key$1 = "Duployan", _map$1[_key$1] = { k: _key$1, v: $pkg.Duployan }, _key$1 = "Egyptian_Hieroglyphs", _map$1[_key$1] = { k: _key$1, v: $pkg.Egyptian_Hieroglyphs }, _key$1 = "Elbasan", _map$1[_key$1] = { k: _key$1, v: $pkg.Elbasan }, _key$1 = "Ethiopic", _map$1[_key$1] = { k: _key$1, v: $pkg.Ethiopic }, _key$1 = "Georgian", _map$1[_key$1] = { k: _key$1, v: $pkg.Georgian }, _key$1 = "Glagolitic", _map$1[_key$1] = { k: _key$1, v: $pkg.Glagolitic }, _key$1 = "Gothic", _map$1[_key$1] = { k: _key$1, v: $pkg.Gothic }, _key$1 = "Grantha", _map$1[_key$1] = { k: _key$1, v: $pkg.Grantha }, _key$1 = "Greek", _map$1[_key$1] = { k: _key$1, v: $pkg.Greek }, _key$1 = "Gujarati", _map$1[_key$1] = { k: _key$1, v: $pkg.Gujarati }, _key$1 = "Gurmukhi", _map$1[_key$1] = { k: _key$1, v: $pkg.Gurmukhi }, _key$1 = "Han", _map$1[_key$1] = { k: _key$1, v: $pkg.Han }, _key$1 = "Hangul", _map$1[_key$1] = { k: _key$1, v: $pkg.Hangul }, _key$1 = "Hanunoo", _map$1[_key$1] = { k: _key$1, v: $pkg.Hanunoo }, _key$1 = "Hebrew", _map$1[_key$1] = { k: _key$1, v: $pkg.Hebrew }, _key$1 = "Hiragana", _map$1[_key$1] = { k: _key$1, v: $pkg.Hiragana }, _key$1 = "Imperial_Aramaic", _map$1[_key$1] = { k: _key$1, v: $pkg.Imperial_Aramaic }, _key$1 = "Inherited", _map$1[_key$1] = { k: _key$1, v: $pkg.Inherited }, _key$1 = "Inscriptional_Pahlavi", _map$1[_key$1] = { k: _key$1, v: $pkg.Inscriptional_Pahlavi }, _key$1 = "Inscriptional_Parthian", _map$1[_key$1] = { k: _key$1, v: $pkg.Inscriptional_Parthian }, _key$1 = "Javanese", _map$1[_key$1] = { k: _key$1, v: $pkg.Javanese }, _key$1 = "Kaithi", _map$1[_key$1] = { k: _key$1, v: $pkg.Kaithi }, _key$1 = "Kannada", _map$1[_key$1] = { k: _key$1, v: $pkg.Kannada }, _key$1 = "Katakana", _map$1[_key$1] = { k: _key$1, v: $pkg.Katakana }, _key$1 = "Kayah_Li", _map$1[_key$1] = { k: _key$1, v: $pkg.Kayah_Li }, _key$1 = "Kharoshthi", _map$1[_key$1] = { k: _key$1, v: $pkg.Kharoshthi }, _key$1 = "Khmer", _map$1[_key$1] = { k: _key$1, v: $pkg.Khmer }, _key$1 = "Khojki", _map$1[_key$1] = { k: _key$1, v: $pkg.Khojki }, _key$1 = "Khudawadi", _map$1[_key$1] = { k: _key$1, v: $pkg.Khudawadi }, _key$1 = "Lao", _map$1[_key$1] = { k: _key$1, v: $pkg.Lao }, _key$1 = "Latin", _map$1[_key$1] = { k: _key$1, v: $pkg.Latin }, _key$1 = "Lepcha", _map$1[_key$1] = { k: _key$1, v: $pkg.Lepcha }, _key$1 = "Limbu", _map$1[_key$1] = { k: _key$1, v: $pkg.Limbu }, _key$1 = "Linear_A", _map$1[_key$1] = { k: _key$1, v: $pkg.Linear_A }, _key$1 = "Linear_B", _map$1[_key$1] = { k: _key$1, v: $pkg.Linear_B }, _key$1 = "Lisu", _map$1[_key$1] = { k: _key$1, v: $pkg.Lisu }, _key$1 = "Lycian", _map$1[_key$1] = { k: _key$1, v: $pkg.Lycian }, _key$1 = "Lydian", _map$1[_key$1] = { k: _key$1, v: $pkg.Lydian }, _key$1 = "Mahajani", _map$1[_key$1] = { k: _key$1, v: $pkg.Mahajani }, _key$1 = "Malayalam", _map$1[_key$1] = { k: _key$1, v: $pkg.Malayalam }, _key$1 = "Mandaic", _map$1[_key$1] = { k: _key$1, v: $pkg.Mandaic }, _key$1 = "Manichaean", _map$1[_key$1] = { k: _key$1, v: $pkg.Manichaean }, _key$1 = "Meetei_Mayek", _map$1[_key$1] = { k: _key$1, v: $pkg.Meetei_Mayek }, _key$1 = "Mende_Kikakui", _map$1[_key$1] = { k: _key$1, v: $pkg.Mende_Kikakui }, _key$1 = "Meroitic_Cursive", _map$1[_key$1] = { k: _key$1, v: $pkg.Meroitic_Cursive }, _key$1 = "Meroitic_Hieroglyphs", _map$1[_key$1] = { k: _key$1, v: $pkg.Meroitic_Hieroglyphs }, _key$1 = "Miao", _map$1[_key$1] = { k: _key$1, v: $pkg.Miao }, _key$1 = "Modi", _map$1[_key$1] = { k: _key$1, v: $pkg.Modi }, _key$1 = "Mongolian", _map$1[_key$1] = { k: _key$1, v: $pkg.Mongolian }, _key$1 = "Mro", _map$1[_key$1] = { k: _key$1, v: $pkg.Mro }, _key$1 = "Myanmar", _map$1[_key$1] = { k: _key$1, v: $pkg.Myanmar }, _key$1 = "Nabataean", _map$1[_key$1] = { k: _key$1, v: $pkg.Nabataean }, _key$1 = "New_Tai_Lue", _map$1[_key$1] = { k: _key$1, v: $pkg.New_Tai_Lue }, _key$1 = "Nko", _map$1[_key$1] = { k: _key$1, v: $pkg.Nko }, _key$1 = "Ogham", _map$1[_key$1] = { k: _key$1, v: $pkg.Ogham }, _key$1 = "Ol_Chiki", _map$1[_key$1] = { k: _key$1, v: $pkg.Ol_Chiki }, _key$1 = "Old_Italic", _map$1[_key$1] = { k: _key$1, v: $pkg.Old_Italic }, _key$1 = "Old_North_Arabian", _map$1[_key$1] = { k: _key$1, v: $pkg.Old_North_Arabian }, _key$1 = "Old_Permic", _map$1[_key$1] = { k: _key$1, v: $pkg.Old_Permic }, _key$1 = "Old_Persian", _map$1[_key$1] = { k: _key$1, v: $pkg.Old_Persian }, _key$1 = "Old_South_Arabian", _map$1[_key$1] = { k: _key$1, v: $pkg.Old_South_Arabian }, _key$1 = "Old_Turkic", _map$1[_key$1] = { k: _key$1, v: $pkg.Old_Turkic }, _key$1 = "Oriya", _map$1[_key$1] = { k: _key$1, v: $pkg.Oriya }, _key$1 = "Osmanya", _map$1[_key$1] = { k: _key$1, v: $pkg.Osmanya }, _key$1 = "Pahawh_Hmong", _map$1[_key$1] = { k: _key$1, v: $pkg.Pahawh_Hmong }, _key$1 = "Palmyrene", _map$1[_key$1] = { k: _key$1, v: $pkg.Palmyrene }, _key$1 = "Pau_Cin_Hau", _map$1[_key$1] = { k: _key$1, v: $pkg.Pau_Cin_Hau }, _key$1 = "Phags_Pa", _map$1[_key$1] = { k: _key$1, v: $pkg.Phags_Pa }, _key$1 = "Phoenician", _map$1[_key$1] = { k: _key$1, v: $pkg.Phoenician }, _key$1 = "Psalter_Pahlavi", _map$1[_key$1] = { k: _key$1, v: $pkg.Psalter_Pahlavi }, _key$1 = "Rejang", _map$1[_key$1] = { k: _key$1, v: $pkg.Rejang }, _key$1 = "Runic", _map$1[_key$1] = { k: _key$1, v: $pkg.Runic }, _key$1 = "Samaritan", _map$1[_key$1] = { k: _key$1, v: $pkg.Samaritan }, _key$1 = "Saurashtra", _map$1[_key$1] = { k: _key$1, v: $pkg.Saurashtra }, _key$1 = "Sharada", _map$1[_key$1] = { k: _key$1, v: $pkg.Sharada }, _key$1 = "Shavian", _map$1[_key$1] = { k: _key$1, v: $pkg.Shavian }, _key$1 = "Siddham", _map$1[_key$1] = { k: _key$1, v: $pkg.Siddham }, _key$1 = "Sinhala", _map$1[_key$1] = { k: _key$1, v: $pkg.Sinhala }, _key$1 = "Sora_Sompeng", _map$1[_key$1] = { k: _key$1, v: $pkg.Sora_Sompeng }, _key$1 = "Sundanese", _map$1[_key$1] = { k: _key$1, v: $pkg.Sundanese }, _key$1 = "Syloti_Nagri", _map$1[_key$1] = { k: _key$1, v: $pkg.Syloti_Nagri }, _key$1 = "Syriac", _map$1[_key$1] = { k: _key$1, v: $pkg.Syriac }, _key$1 = "Tagalog", _map$1[_key$1] = { k: _key$1, v: $pkg.Tagalog }, _key$1 = "Tagbanwa", _map$1[_key$1] = { k: _key$1, v: $pkg.Tagbanwa }, _key$1 = "Tai_Le", _map$1[_key$1] = { k: _key$1, v: $pkg.Tai_Le }, _key$1 = "Tai_Tham", _map$1[_key$1] = { k: _key$1, v: $pkg.Tai_Tham }, _key$1 = "Tai_Viet", _map$1[_key$1] = { k: _key$1, v: $pkg.Tai_Viet }, _key$1 = "Takri", _map$1[_key$1] = { k: _key$1, v: $pkg.Takri }, _key$1 = "Tamil", _map$1[_key$1] = { k: _key$1, v: $pkg.Tamil }, _key$1 = "Telugu", _map$1[_key$1] = { k: _key$1, v: $pkg.Telugu }, _key$1 = "Thaana", _map$1[_key$1] = { k: _key$1, v: $pkg.Thaana }, _key$1 = "Thai", _map$1[_key$1] = { k: _key$1, v: $pkg.Thai }, _key$1 = "Tibetan", _map$1[_key$1] = { k: _key$1, v: $pkg.Tibetan }, _key$1 = "Tifinagh", _map$1[_key$1] = { k: _key$1, v: $pkg.Tifinagh }, _key$1 = "Tirhuta", _map$1[_key$1] = { k: _key$1, v: $pkg.Tirhuta }, _key$1 = "Ugaritic", _map$1[_key$1] = { k: _key$1, v: $pkg.Ugaritic }, _key$1 = "Vai", _map$1[_key$1] = { k: _key$1, v: $pkg.Vai }, _key$1 = "Warang_Citi", _map$1[_key$1] = { k: _key$1, v: $pkg.Warang_Citi }, _key$1 = "Yi", _map$1[_key$1] = { k: _key$1, v: $pkg.Yi }, _map$1);
  4113. _White_Space = new RangeTable.ptr(new sliceType([new Range16.ptr(9, 13, 1), new Range16.ptr(32, 32, 1), new Range16.ptr(133, 133, 1), new Range16.ptr(160, 160, 1), new Range16.ptr(5760, 5760, 1), new Range16.ptr(8192, 8202, 1), new Range16.ptr(8232, 8233, 1), new Range16.ptr(8239, 8239, 1), new Range16.ptr(8287, 8287, 1), new Range16.ptr(12288, 12288, 1)]), sliceType$1.nil, 4);
  4114. $pkg.White_Space = _White_Space;
  4115. _CaseRanges = new sliceType$3([new CaseRange.ptr(65, 90, $toNativeArray($kindInt32, [0, 32, 0])), new CaseRange.ptr(97, 122, $toNativeArray($kindInt32, [-32, 0, -32])), new CaseRange.ptr(181, 181, $toNativeArray($kindInt32, [743, 0, 743])), new CaseRange.ptr(192, 214, $toNativeArray($kindInt32, [0, 32, 0])), new CaseRange.ptr(216, 222, $toNativeArray($kindInt32, [0, 32, 0])), new CaseRange.ptr(224, 246, $toNativeArray($kindInt32, [-32, 0, -32])), new CaseRange.ptr(248, 254, $toNativeArray($kindInt32, [-32, 0, -32])), new CaseRange.ptr(255, 255, $toNativeArray($kindInt32, [121, 0, 121])), new CaseRange.ptr(256, 303, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(304, 304, $toNativeArray($kindInt32, [0, -199, 0])), new CaseRange.ptr(305, 305, $toNativeArray($kindInt32, [-232, 0, -232])), new CaseRange.ptr(306, 311, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(313, 328, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(330, 375, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(376, 376, $toNativeArray($kindInt32, [0, -121, 0])), new CaseRange.ptr(377, 382, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(383, 383, $toNativeArray($kindInt32, [-300, 0, -300])), new CaseRange.ptr(384, 384, $toNativeArray($kindInt32, [195, 0, 195])), new CaseRange.ptr(385, 385, $toNativeArray($kindInt32, [0, 210, 0])), new CaseRange.ptr(386, 389, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(390, 390, $toNativeArray($kindInt32, [0, 206, 0])), new CaseRange.ptr(391, 392, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(393, 394, $toNativeArray($kindInt32, [0, 205, 0])), new CaseRange.ptr(395, 396, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(398, 398, $toNativeArray($kindInt32, [0, 79, 0])), new CaseRange.ptr(399, 399, $toNativeArray($kindInt32, [0, 202, 0])), new CaseRange.ptr(400, 400, $toNativeArray($kindInt32, [0, 203, 0])), new CaseRange.ptr(401, 402, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(403, 403, $toNativeArray($kindInt32, [0, 205, 0])), new CaseRange.ptr(404, 404, $toNativeArray($kindInt32, [0, 207, 0])), new CaseRange.ptr(405, 405, $toNativeArray($kindInt32, [97, 0, 97])), new CaseRange.ptr(406, 406, $toNativeArray($kindInt32, [0, 211, 0])), new CaseRange.ptr(407, 407, $toNativeArray($kindInt32, [0, 209, 0])), new CaseRange.ptr(408, 409, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(410, 410, $toNativeArray($kindInt32, [163, 0, 163])), new CaseRange.ptr(412, 412, $toNativeArray($kindInt32, [0, 211, 0])), new CaseRange.ptr(413, 413, $toNativeArray($kindInt32, [0, 213, 0])), new CaseRange.ptr(414, 414, $toNativeArray($kindInt32, [130, 0, 130])), new CaseRange.ptr(415, 415, $toNativeArray($kindInt32, [0, 214, 0])), new CaseRange.ptr(416, 421, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(422, 422, $toNativeArray($kindInt32, [0, 218, 0])), new CaseRange.ptr(423, 424, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(425, 425, $toNativeArray($kindInt32, [0, 218, 0])), new CaseRange.ptr(428, 429, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(430, 430, $toNativeArray($kindInt32, [0, 218, 0])), new CaseRange.ptr(431, 432, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(433, 434, $toNativeArray($kindInt32, [0, 217, 0])), new CaseRange.ptr(435, 438, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(439, 439, $toNativeArray($kindInt32, [0, 219, 0])), new CaseRange.ptr(440, 441, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(444, 445, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(447, 447, $toNativeArray($kindInt32, [56, 0, 56])), new CaseRange.ptr(452, 452, $toNativeArray($kindInt32, [0, 2, 1])), new CaseRange.ptr(453, 453, $toNativeArray($kindInt32, [-1, 1, 0])), new CaseRange.ptr(454, 454, $toNativeArray($kindInt32, [-2, 0, -1])), new CaseRange.ptr(455, 455, $toNativeArray($kindInt32, [0, 2, 1])), new CaseRange.ptr(456, 456, $toNativeArray($kindInt32, [-1, 1, 0])), new CaseRange.ptr(457, 457, $toNativeArray($kindInt32, [-2, 0, -1])), new CaseRange.ptr(458, 458, $toNativeArray($kindInt32, [0, 2, 1])), new CaseRange.ptr(459, 459, $toNativeArray($kindInt32, [-1, 1, 0])), new CaseRange.ptr(460, 460, $toNativeArray($kindInt32, [-2, 0, -1])), new CaseRange.ptr(461, 476, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(477, 477, $toNativeArray($kindInt32, [-79, 0, -79])), new CaseRange.ptr(478, 495, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(497, 497, $toNativeArray($kindInt32, [0, 2, 1])), new CaseRange.ptr(498, 498, $toNativeArray($kindInt32, [-1, 1, 0])), new CaseRange.ptr(499, 499, $toNativeArray($kindInt32, [-2, 0, -1])), new CaseRange.ptr(500, 501, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(502, 502, $toNativeArray($kindInt32, [0, -97, 0])), new CaseRange.ptr(503, 503, $toNativeArray($kindInt32, [0, -56, 0])), new CaseRange.ptr(504, 543, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(544, 544, $toNativeArray($kindInt32, [0, -130, 0])), new CaseRange.ptr(546, 563, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(570, 570, $toNativeArray($kindInt32, [0, 10795, 0])), new CaseRange.ptr(571, 572, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(573, 573, $toNativeArray($kindInt32, [0, -163, 0])), new CaseRange.ptr(574, 574, $toNativeArray($kindInt32, [0, 10792, 0])), new CaseRange.ptr(575, 576, $toNativeArray($kindInt32, [10815, 0, 10815])), new CaseRange.ptr(577, 578, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(579, 579, $toNativeArray($kindInt32, [0, -195, 0])), new CaseRange.ptr(580, 580, $toNativeArray($kindInt32, [0, 69, 0])), new CaseRange.ptr(581, 581, $toNativeArray($kindInt32, [0, 71, 0])), new CaseRange.ptr(582, 591, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(592, 592, $toNativeArray($kindInt32, [10783, 0, 10783])), new CaseRange.ptr(593, 593, $toNativeArray($kindInt32, [10780, 0, 10780])), new CaseRange.ptr(594, 594, $toNativeArray($kindInt32, [10782, 0, 10782])), new CaseRange.ptr(595, 595, $toNativeArray($kindInt32, [-210, 0, -210])), new CaseRange.ptr(596, 596, $toNativeArray($kindInt32, [-206, 0, -206])), new CaseRange.ptr(598, 599, $toNativeArray($kindInt32, [-205, 0, -205])), new CaseRange.ptr(601, 601, $toNativeArray($kindInt32, [-202, 0, -202])), new CaseRange.ptr(603, 603, $toNativeArray($kindInt32, [-203, 0, -203])), new CaseRange.ptr(604, 604, $toNativeArray($kindInt32, [42319, 0, 42319])), new CaseRange.ptr(608, 608, $toNativeArray($kindInt32, [-205, 0, -205])), new CaseRange.ptr(609, 609, $toNativeArray($kindInt32, [42315, 0, 42315])), new CaseRange.ptr(611, 611, $toNativeArray($kindInt32, [-207, 0, -207])), new CaseRange.ptr(613, 613, $toNativeArray($kindInt32, [42280, 0, 42280])), new CaseRange.ptr(614, 614, $toNativeArray($kindInt32, [42308, 0, 42308])), new CaseRange.ptr(616, 616, $toNativeArray($kindInt32, [-209, 0, -209])), new CaseRange.ptr(617, 617, $toNativeArray($kindInt32, [-211, 0, -211])), new CaseRange.ptr(619, 619, $toNativeArray($kindInt32, [10743, 0, 10743])), new CaseRange.ptr(620, 620, $toNativeArray($kindInt32, [42305, 0, 42305])), new CaseRange.ptr(623, 623, $toNativeArray($kindInt32, [-211, 0, -211])), new CaseRange.ptr(625, 625, $toNativeArray($kindInt32, [10749, 0, 10749])), new CaseRange.ptr(626, 626, $toNativeArray($kindInt32, [-213, 0, -213])), new CaseRange.ptr(629, 629, $toNativeArray($kindInt32, [-214, 0, -214])), new CaseRange.ptr(637, 637, $toNativeArray($kindInt32, [10727, 0, 10727])), new CaseRange.ptr(640, 640, $toNativeArray($kindInt32, [-218, 0, -218])), new CaseRange.ptr(643, 643, $toNativeArray($kindInt32, [-218, 0, -218])), new CaseRange.ptr(647, 647, $toNativeArray($kindInt32, [42282, 0, 42282])), new CaseRange.ptr(648, 648, $toNativeArray($kindInt32, [-218, 0, -218])), new CaseRange.ptr(649, 649, $toNativeArray($kindInt32, [-69, 0, -69])), new CaseRange.ptr(650, 651, $toNativeArray($kindInt32, [-217, 0, -217])), new CaseRange.ptr(652, 652, $toNativeArray($kindInt32, [-71, 0, -71])), new CaseRange.ptr(658, 658, $toNativeArray($kindInt32, [-219, 0, -219])), new CaseRange.ptr(670, 670, $toNativeArray($kindInt32, [42258, 0, 42258])), new CaseRange.ptr(837, 837, $toNativeArray($kindInt32, [84, 0, 84])), new CaseRange.ptr(880, 883, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(886, 887, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(891, 893, $toNativeArray($kindInt32, [130, 0, 130])), new CaseRange.ptr(895, 895, $toNativeArray($kindInt32, [0, 116, 0])), new CaseRange.ptr(902, 902, $toNativeArray($kindInt32, [0, 38, 0])), new CaseRange.ptr(904, 906, $toNativeArray($kindInt32, [0, 37, 0])), new CaseRange.ptr(908, 908, $toNativeArray($kindInt32, [0, 64, 0])), new CaseRange.ptr(910, 911, $toNativeArray($kindInt32, [0, 63, 0])), new CaseRange.ptr(913, 929, $toNativeArray($kindInt32, [0, 32, 0])), new CaseRange.ptr(931, 939, $toNativeArray($kindInt32, [0, 32, 0])), new CaseRange.ptr(940, 940, $toNativeArray($kindInt32, [-38, 0, -38])), new CaseRange.ptr(941, 943, $toNativeArray($kindInt32, [-37, 0, -37])), new CaseRange.ptr(945, 961, $toNativeArray($kindInt32, [-32, 0, -32])), new CaseRange.ptr(962, 962, $toNativeArray($kindInt32, [-31, 0, -31])), new CaseRange.ptr(963, 971, $toNativeArray($kindInt32, [-32, 0, -32])), new CaseRange.ptr(972, 972, $toNativeArray($kindInt32, [-64, 0, -64])), new CaseRange.ptr(973, 974, $toNativeArray($kindInt32, [-63, 0, -63])), new CaseRange.ptr(975, 975, $toNativeArray($kindInt32, [0, 8, 0])), new CaseRange.ptr(976, 976, $toNativeArray($kindInt32, [-62, 0, -62])), new CaseRange.ptr(977, 977, $toNativeArray($kindInt32, [-57, 0, -57])), new CaseRange.ptr(981, 981, $toNativeArray($kindInt32, [-47, 0, -47])), new CaseRange.ptr(982, 982, $toNativeArray($kindInt32, [-54, 0, -54])), new CaseRange.ptr(983, 983, $toNativeArray($kindInt32, [-8, 0, -8])), new CaseRange.ptr(984, 1007, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(1008, 1008, $toNativeArray($kindInt32, [-86, 0, -86])), new CaseRange.ptr(1009, 1009, $toNativeArray($kindInt32, [-80, 0, -80])), new CaseRange.ptr(1010, 1010, $toNativeArray($kindInt32, [7, 0, 7])), new CaseRange.ptr(1011, 1011, $toNativeArray($kindInt32, [-116, 0, -116])), new CaseRange.ptr(1012, 1012, $toNativeArray($kindInt32, [0, -60, 0])), new CaseRange.ptr(1013, 1013, $toNativeArray($kindInt32, [-96, 0, -96])), new CaseRange.ptr(1015, 1016, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(1017, 1017, $toNativeArray($kindInt32, [0, -7, 0])), new CaseRange.ptr(1018, 1019, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(1021, 1023, $toNativeArray($kindInt32, [0, -130, 0])), new CaseRange.ptr(1024, 1039, $toNativeArray($kindInt32, [0, 80, 0])), new CaseRange.ptr(1040, 1071, $toNativeArray($kindInt32, [0, 32, 0])), new CaseRange.ptr(1072, 1103, $toNativeArray($kindInt32, [-32, 0, -32])), new CaseRange.ptr(1104, 1119, $toNativeArray($kindInt32, [-80, 0, -80])), new CaseRange.ptr(1120, 1153, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(1162, 1215, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(1216, 1216, $toNativeArray($kindInt32, [0, 15, 0])), new CaseRange.ptr(1217, 1230, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(1231, 1231, $toNativeArray($kindInt32, [-15, 0, -15])), new CaseRange.ptr(1232, 1327, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(1329, 1366, $toNativeArray($kindInt32, [0, 48, 0])), new CaseRange.ptr(1377, 1414, $toNativeArray($kindInt32, [-48, 0, -48])), new CaseRange.ptr(4256, 4293, $toNativeArray($kindInt32, [0, 7264, 0])), new CaseRange.ptr(4295, 4295, $toNativeArray($kindInt32, [0, 7264, 0])), new CaseRange.ptr(4301, 4301, $toNativeArray($kindInt32, [0, 7264, 0])), new CaseRange.ptr(7545, 7545, $toNativeArray($kindInt32, [35332, 0, 35332])), new CaseRange.ptr(7549, 7549, $toNativeArray($kindInt32, [3814, 0, 3814])), new CaseRange.ptr(7680, 7829, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(7835, 7835, $toNativeArray($kindInt32, [-59, 0, -59])), new CaseRange.ptr(7838, 7838, $toNativeArray($kindInt32, [0, -7615, 0])), new CaseRange.ptr(7840, 7935, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(7936, 7943, $toNativeArray($kindInt32, [8, 0, 8])), new CaseRange.ptr(7944, 7951, $toNativeArray($kindInt32, [0, -8, 0])), new CaseRange.ptr(7952, 7957, $toNativeArray($kindInt32, [8, 0, 8])), new CaseRange.ptr(7960, 7965, $toNativeArray($kindInt32, [0, -8, 0])), new CaseRange.ptr(7968, 7975, $toNativeArray($kindInt32, [8, 0, 8])), new CaseRange.ptr(7976, 7983, $toNativeArray($kindInt32, [0, -8, 0])), new CaseRange.ptr(7984, 7991, $toNativeArray($kindInt32, [8, 0, 8])), new CaseRange.ptr(7992, 7999, $toNativeArray($kindInt32, [0, -8, 0])), new CaseRange.ptr(8000, 8005, $toNativeArray($kindInt32, [8, 0, 8])), new CaseRange.ptr(8008, 8013, $toNativeArray($kindInt32, [0, -8, 0])), new CaseRange.ptr(8017, 8017, $toNativeArray($kindInt32, [8, 0, 8])), new CaseRange.ptr(8019, 8019, $toNativeArray($kindInt32, [8, 0, 8])), new CaseRange.ptr(8021, 8021, $toNativeArray($kindInt32, [8, 0, 8])), new CaseRange.ptr(8023, 8023, $toNativeArray($kindInt32, [8, 0, 8])), new CaseRange.ptr(8025, 8025, $toNativeArray($kindInt32, [0, -8, 0])), new CaseRange.ptr(8027, 8027, $toNativeArray($kindInt32, [0, -8, 0])), new CaseRange.ptr(8029, 8029, $toNativeArray($kindInt32, [0, -8, 0])), new CaseRange.ptr(8031, 8031, $toNativeArray($kindInt32, [0, -8, 0])), new CaseRange.ptr(8032, 8039, $toNativeArray($kindInt32, [8, 0, 8])), new CaseRange.ptr(8040, 8047, $toNativeArray($kindInt32, [0, -8, 0])), new CaseRange.ptr(8048, 8049, $toNativeArray($kindInt32, [74, 0, 74])), new CaseRange.ptr(8050, 8053, $toNativeArray($kindInt32, [86, 0, 86])), new CaseRange.ptr(8054, 8055, $toNativeArray($kindInt32, [100, 0, 100])), new CaseRange.ptr(8056, 8057, $toNativeArray($kindInt32, [128, 0, 128])), new CaseRange.ptr(8058, 8059, $toNativeArray($kindInt32, [112, 0, 112])), new CaseRange.ptr(8060, 8061, $toNativeArray($kindInt32, [126, 0, 126])), new CaseRange.ptr(8064, 8071, $toNativeArray($kindInt32, [8, 0, 8])), new CaseRange.ptr(8072, 8079, $toNativeArray($kindInt32, [0, -8, 0])), new CaseRange.ptr(8080, 8087, $toNativeArray($kindInt32, [8, 0, 8])), new CaseRange.ptr(8088, 8095, $toNativeArray($kindInt32, [0, -8, 0])), new CaseRange.ptr(8096, 8103, $toNativeArray($kindInt32, [8, 0, 8])), new CaseRange.ptr(8104, 8111, $toNativeArray($kindInt32, [0, -8, 0])), new CaseRange.ptr(8112, 8113, $toNativeArray($kindInt32, [8, 0, 8])), new CaseRange.ptr(8115, 8115, $toNativeArray($kindInt32, [9, 0, 9])), new CaseRange.ptr(8120, 8121, $toNativeArray($kindInt32, [0, -8, 0])), new CaseRange.ptr(8122, 8123, $toNativeArray($kindInt32, [0, -74, 0])), new CaseRange.ptr(8124, 8124, $toNativeArray($kindInt32, [0, -9, 0])), new CaseRange.ptr(8126, 8126, $toNativeArray($kindInt32, [-7205, 0, -7205])), new CaseRange.ptr(8131, 8131, $toNativeArray($kindInt32, [9, 0, 9])), new CaseRange.ptr(8136, 8139, $toNativeArray($kindInt32, [0, -86, 0])), new CaseRange.ptr(8140, 8140, $toNativeArray($kindInt32, [0, -9, 0])), new CaseRange.ptr(8144, 8145, $toNativeArray($kindInt32, [8, 0, 8])), new CaseRange.ptr(8152, 8153, $toNativeArray($kindInt32, [0, -8, 0])), new CaseRange.ptr(8154, 8155, $toNativeArray($kindInt32, [0, -100, 0])), new CaseRange.ptr(8160, 8161, $toNativeArray($kindInt32, [8, 0, 8])), new CaseRange.ptr(8165, 8165, $toNativeArray($kindInt32, [7, 0, 7])), new CaseRange.ptr(8168, 8169, $toNativeArray($kindInt32, [0, -8, 0])), new CaseRange.ptr(8170, 8171, $toNativeArray($kindInt32, [0, -112, 0])), new CaseRange.ptr(8172, 8172, $toNativeArray($kindInt32, [0, -7, 0])), new CaseRange.ptr(8179, 8179, $toNativeArray($kindInt32, [9, 0, 9])), new CaseRange.ptr(8184, 8185, $toNativeArray($kindInt32, [0, -128, 0])), new CaseRange.ptr(8186, 8187, $toNativeArray($kindInt32, [0, -126, 0])), new CaseRange.ptr(8188, 8188, $toNativeArray($kindInt32, [0, -9, 0])), new CaseRange.ptr(8486, 8486, $toNativeArray($kindInt32, [0, -7517, 0])), new CaseRange.ptr(8490, 8490, $toNativeArray($kindInt32, [0, -8383, 0])), new CaseRange.ptr(8491, 8491, $toNativeArray($kindInt32, [0, -8262, 0])), new CaseRange.ptr(8498, 8498, $toNativeArray($kindInt32, [0, 28, 0])), new CaseRange.ptr(8526, 8526, $toNativeArray($kindInt32, [-28, 0, -28])), new CaseRange.ptr(8544, 8559, $toNativeArray($kindInt32, [0, 16, 0])), new CaseRange.ptr(8560, 8575, $toNativeArray($kindInt32, [-16, 0, -16])), new CaseRange.ptr(8579, 8580, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(9398, 9423, $toNativeArray($kindInt32, [0, 26, 0])), new CaseRange.ptr(9424, 9449, $toNativeArray($kindInt32, [-26, 0, -26])), new CaseRange.ptr(11264, 11310, $toNativeArray($kindInt32, [0, 48, 0])), new CaseRange.ptr(11312, 11358, $toNativeArray($kindInt32, [-48, 0, -48])), new CaseRange.ptr(11360, 11361, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(11362, 11362, $toNativeArray($kindInt32, [0, -10743, 0])), new CaseRange.ptr(11363, 11363, $toNativeArray($kindInt32, [0, -3814, 0])), new CaseRange.ptr(11364, 11364, $toNativeArray($kindInt32, [0, -10727, 0])), new CaseRange.ptr(11365, 11365, $toNativeArray($kindInt32, [-10795, 0, -10795])), new CaseRange.ptr(11366, 11366, $toNativeArray($kindInt32, [-10792, 0, -10792])), new CaseRange.ptr(11367, 11372, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(11373, 11373, $toNativeArray($kindInt32, [0, -10780, 0])), new CaseRange.ptr(11374, 11374, $toNativeArray($kindInt32, [0, -10749, 0])), new CaseRange.ptr(11375, 11375, $toNativeArray($kindInt32, [0, -10783, 0])), new CaseRange.ptr(11376, 11376, $toNativeArray($kindInt32, [0, -10782, 0])), new CaseRange.ptr(11378, 11379, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(11381, 11382, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(11390, 11391, $toNativeArray($kindInt32, [0, -10815, 0])), new CaseRange.ptr(11392, 11491, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(11499, 11502, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(11506, 11507, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(11520, 11557, $toNativeArray($kindInt32, [-7264, 0, -7264])), new CaseRange.ptr(11559, 11559, $toNativeArray($kindInt32, [-7264, 0, -7264])), new CaseRange.ptr(11565, 11565, $toNativeArray($kindInt32, [-7264, 0, -7264])), new CaseRange.ptr(42560, 42605, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(42624, 42651, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(42786, 42799, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(42802, 42863, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(42873, 42876, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(42877, 42877, $toNativeArray($kindInt32, [0, -35332, 0])), new CaseRange.ptr(42878, 42887, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(42891, 42892, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(42893, 42893, $toNativeArray($kindInt32, [0, -42280, 0])), new CaseRange.ptr(42896, 42899, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(42902, 42921, $toNativeArray($kindInt32, [1114112, 1114112, 1114112])), new CaseRange.ptr(42922, 42922, $toNativeArray($kindInt32, [0, -42308, 0])), new CaseRange.ptr(42923, 42923, $toNativeArray($kindInt32, [0, -42319, 0])), new CaseRange.ptr(42924, 42924, $toNativeArray($kindInt32, [0, -42315, 0])), new CaseRange.ptr(42925, 42925, $toNativeArray($kindInt32, [0, -42305, 0])), new CaseRange.ptr(42928, 42928, $toNativeArray($kindInt32, [0, -42258, 0])), new CaseRange.ptr(42929, 42929, $toNativeArray($kindInt32, [0, -42282, 0])), new CaseRange.ptr(65313, 65338, $toNativeArray($kindInt32, [0, 32, 0])), new CaseRange.ptr(65345, 65370, $toNativeArray($kindInt32, [-32, 0, -32])), new CaseRange.ptr(66560, 66599, $toNativeArray($kindInt32, [0, 40, 0])), new CaseRange.ptr(66600, 66639, $toNativeArray($kindInt32, [-40, 0, -40])), new CaseRange.ptr(71840, 71871, $toNativeArray($kindInt32, [0, 32, 0])), new CaseRange.ptr(71872, 71903, $toNativeArray($kindInt32, [-32, 0, -32]))]);
  4116. $pkg.CaseRanges = _CaseRanges;
  4117. properties = $toNativeArray($kindUint8, [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, 144, 130, 130, 130, 136, 130, 130, 130, 130, 130, 130, 136, 130, 130, 130, 130, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 130, 130, 136, 136, 136, 130, 130, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 130, 130, 130, 136, 130, 136, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 130, 136, 130, 136, 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, 16, 130, 136, 136, 136, 136, 136, 130, 136, 136, 224, 130, 136, 0, 136, 136, 136, 136, 132, 132, 136, 192, 130, 130, 136, 132, 224, 130, 132, 132, 132, 130, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 136, 160, 160, 160, 160, 160, 160, 160, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 192, 136, 192, 192, 192, 192, 192, 192, 192, 192]);
  4118. caseOrbit = new sliceType$4([new foldPair.ptr(75, 107), new foldPair.ptr(83, 115), new foldPair.ptr(107, 8490), new foldPair.ptr(115, 383), new foldPair.ptr(181, 924), new foldPair.ptr(197, 229), new foldPair.ptr(223, 7838), new foldPair.ptr(229, 8491), new foldPair.ptr(304, 304), new foldPair.ptr(305, 305), new foldPair.ptr(383, 83), new foldPair.ptr(452, 453), new foldPair.ptr(453, 454), new foldPair.ptr(454, 452), new foldPair.ptr(455, 456), new foldPair.ptr(456, 457), new foldPair.ptr(457, 455), new foldPair.ptr(458, 459), new foldPair.ptr(459, 460), new foldPair.ptr(460, 458), new foldPair.ptr(497, 498), new foldPair.ptr(498, 499), new foldPair.ptr(499, 497), new foldPair.ptr(837, 921), new foldPair.ptr(914, 946), new foldPair.ptr(917, 949), new foldPair.ptr(920, 952), new foldPair.ptr(921, 953), new foldPair.ptr(922, 954), new foldPair.ptr(924, 956), new foldPair.ptr(928, 960), new foldPair.ptr(929, 961), new foldPair.ptr(931, 962), new foldPair.ptr(934, 966), new foldPair.ptr(937, 969), new foldPair.ptr(946, 976), new foldPair.ptr(949, 1013), new foldPair.ptr(952, 977), new foldPair.ptr(953, 8126), new foldPair.ptr(954, 1008), new foldPair.ptr(956, 181), new foldPair.ptr(960, 982), new foldPair.ptr(961, 1009), new foldPair.ptr(962, 963), new foldPair.ptr(963, 931), new foldPair.ptr(966, 981), new foldPair.ptr(969, 8486), new foldPair.ptr(976, 914), new foldPair.ptr(977, 1012), new foldPair.ptr(981, 934), new foldPair.ptr(982, 928), new foldPair.ptr(1008, 922), new foldPair.ptr(1009, 929), new foldPair.ptr(1012, 920), new foldPair.ptr(1013, 917), new foldPair.ptr(7776, 7777), new foldPair.ptr(7777, 7835), new foldPair.ptr(7835, 7776), new foldPair.ptr(7838, 223), new foldPair.ptr(8126, 837), new foldPair.ptr(8486, 937), new foldPair.ptr(8490, 75), new foldPair.ptr(8491, 197)]);
  4119. foldCommon = new RangeTable.ptr(new sliceType([new Range16.ptr(924, 956, 32)]), sliceType$1.nil, 0);
  4120. foldGreek = new RangeTable.ptr(new sliceType([new Range16.ptr(181, 837, 656)]), sliceType$1.nil, 0);
  4121. foldInherited = new RangeTable.ptr(new sliceType([new Range16.ptr(921, 953, 32), new Range16.ptr(8126, 8126, 1)]), sliceType$1.nil, 0);
  4122. foldL = new RangeTable.ptr(new sliceType([new Range16.ptr(837, 837, 1)]), sliceType$1.nil, 0);
  4123. foldLl = new RangeTable.ptr(new sliceType([new Range16.ptr(65, 90, 1), new Range16.ptr(192, 214, 1), new Range16.ptr(216, 222, 1), new Range16.ptr(256, 302, 2), new Range16.ptr(306, 310, 2), new Range16.ptr(313, 327, 2), new Range16.ptr(330, 376, 2), new Range16.ptr(377, 381, 2), new Range16.ptr(385, 386, 1), new Range16.ptr(388, 390, 2), new Range16.ptr(391, 393, 2), new Range16.ptr(394, 395, 1), new Range16.ptr(398, 401, 1), new Range16.ptr(403, 404, 1), new Range16.ptr(406, 408, 1), new Range16.ptr(412, 413, 1), new Range16.ptr(415, 416, 1), new Range16.ptr(418, 422, 2), new Range16.ptr(423, 425, 2), new Range16.ptr(428, 430, 2), new Range16.ptr(431, 433, 2), new Range16.ptr(434, 435, 1), new Range16.ptr(437, 439, 2), new Range16.ptr(440, 444, 4), new Range16.ptr(452, 453, 1), new Range16.ptr(455, 456, 1), new Range16.ptr(458, 459, 1), new Range16.ptr(461, 475, 2), new Range16.ptr(478, 494, 2), new Range16.ptr(497, 498, 1), new Range16.ptr(500, 502, 2), new Range16.ptr(503, 504, 1), new Range16.ptr(506, 562, 2), new Range16.ptr(570, 571, 1), new Range16.ptr(573, 574, 1), new Range16.ptr(577, 579, 2), new Range16.ptr(580, 582, 1), new Range16.ptr(584, 590, 2), new Range16.ptr(837, 880, 43), new Range16.ptr(882, 886, 4), new Range16.ptr(895, 902, 7), new Range16.ptr(904, 906, 1), new Range16.ptr(908, 910, 2), new Range16.ptr(911, 913, 2), new Range16.ptr(914, 929, 1), new Range16.ptr(931, 939, 1), new Range16.ptr(975, 984, 9), new Range16.ptr(986, 1006, 2), new Range16.ptr(1012, 1015, 3), new Range16.ptr(1017, 1018, 1), new Range16.ptr(1021, 1071, 1), new Range16.ptr(1120, 1152, 2), new Range16.ptr(1162, 1216, 2), new Range16.ptr(1217, 1229, 2), new Range16.ptr(1232, 1326, 2), new Range16.ptr(1329, 1366, 1), new Range16.ptr(4256, 4293, 1), new Range16.ptr(4295, 4301, 6), new Range16.ptr(7680, 7828, 2), new Range16.ptr(7838, 7934, 2), new Range16.ptr(7944, 7951, 1), new Range16.ptr(7960, 7965, 1), new Range16.ptr(7976, 7983, 1), new Range16.ptr(7992, 7999, 1), new Range16.ptr(8008, 8013, 1), new Range16.ptr(8025, 8031, 2), new Range16.ptr(8040, 8047, 1), new Range16.ptr(8072, 8079, 1), new Range16.ptr(8088, 8095, 1), new Range16.ptr(8104, 8111, 1), new Range16.ptr(8120, 8124, 1), new Range16.ptr(8136, 8140, 1), new Range16.ptr(8152, 8155, 1), new Range16.ptr(8168, 8172, 1), new Range16.ptr(8184, 8188, 1), new Range16.ptr(8486, 8490, 4), new Range16.ptr(8491, 8498, 7), new Range16.ptr(8579, 11264, 2685), new Range16.ptr(11265, 11310, 1), new Range16.ptr(11360, 11362, 2), new Range16.ptr(11363, 11364, 1), new Range16.ptr(11367, 11373, 2), new Range16.ptr(11374, 11376, 1), new Range16.ptr(11378, 11381, 3), new Range16.ptr(11390, 11392, 1), new Range16.ptr(11394, 11490, 2), new Range16.ptr(11499, 11501, 2), new Range16.ptr(11506, 42560, 31054), new Range16.ptr(42562, 42604, 2), new Range16.ptr(42624, 42650, 2), new Range16.ptr(42786, 42798, 2), new Range16.ptr(42802, 42862, 2), new Range16.ptr(42873, 42877, 2), new Range16.ptr(42878, 42886, 2), new Range16.ptr(42891, 42893, 2), new Range16.ptr(42896, 42898, 2), new Range16.ptr(42902, 42922, 2), new Range16.ptr(42923, 42925, 1), new Range16.ptr(42928, 42929, 1), new Range16.ptr(65313, 65338, 1)]), new sliceType$1([new Range32.ptr(66560, 66599, 1), new Range32.ptr(71840, 71871, 1)]), 3);
  4124. foldLt = new RangeTable.ptr(new sliceType([new Range16.ptr(452, 454, 2), new Range16.ptr(455, 457, 2), new Range16.ptr(458, 460, 2), new Range16.ptr(497, 499, 2), new Range16.ptr(8064, 8071, 1), new Range16.ptr(8080, 8087, 1), new Range16.ptr(8096, 8103, 1), new Range16.ptr(8115, 8131, 16), new Range16.ptr(8179, 8179, 1)]), sliceType$1.nil, 0);
  4125. foldLu = new RangeTable.ptr(new sliceType([new Range16.ptr(97, 122, 1), new Range16.ptr(181, 223, 42), new Range16.ptr(224, 246, 1), new Range16.ptr(248, 255, 1), new Range16.ptr(257, 303, 2), new Range16.ptr(307, 311, 2), new Range16.ptr(314, 328, 2), new Range16.ptr(331, 375, 2), new Range16.ptr(378, 382, 2), new Range16.ptr(383, 384, 1), new Range16.ptr(387, 389, 2), new Range16.ptr(392, 396, 4), new Range16.ptr(402, 405, 3), new Range16.ptr(409, 410, 1), new Range16.ptr(414, 417, 3), new Range16.ptr(419, 421, 2), new Range16.ptr(424, 429, 5), new Range16.ptr(432, 436, 4), new Range16.ptr(438, 441, 3), new Range16.ptr(445, 447, 2), new Range16.ptr(453, 454, 1), new Range16.ptr(456, 457, 1), new Range16.ptr(459, 460, 1), new Range16.ptr(462, 476, 2), new Range16.ptr(477, 495, 2), new Range16.ptr(498, 499, 1), new Range16.ptr(501, 505, 4), new Range16.ptr(507, 543, 2), new Range16.ptr(547, 563, 2), new Range16.ptr(572, 575, 3), new Range16.ptr(576, 578, 2), new Range16.ptr(583, 591, 2), new Range16.ptr(592, 596, 1), new Range16.ptr(598, 599, 1), new Range16.ptr(601, 603, 2), new Range16.ptr(604, 608, 4), new Range16.ptr(609, 613, 2), new Range16.ptr(614, 616, 2), new Range16.ptr(617, 619, 2), new Range16.ptr(620, 623, 3), new Range16.ptr(625, 626, 1), new Range16.ptr(629, 637, 8), new Range16.ptr(640, 643, 3), new Range16.ptr(647, 652, 1), new Range16.ptr(658, 670, 12), new Range16.ptr(837, 881, 44), new Range16.ptr(883, 891, 4), new Range16.ptr(892, 893, 1), new Range16.ptr(940, 943, 1), new Range16.ptr(945, 974, 1), new Range16.ptr(976, 977, 1), new Range16.ptr(981, 983, 1), new Range16.ptr(985, 1007, 2), new Range16.ptr(1008, 1011, 1), new Range16.ptr(1013, 1019, 3), new Range16.ptr(1072, 1119, 1), new Range16.ptr(1121, 1153, 2), new Range16.ptr(1163, 1215, 2), new Range16.ptr(1218, 1230, 2), new Range16.ptr(1231, 1327, 2), new Range16.ptr(1377, 1414, 1), new Range16.ptr(7545, 7549, 4), new Range16.ptr(7681, 7829, 2), new Range16.ptr(7835, 7841, 6), new Range16.ptr(7843, 7935, 2), new Range16.ptr(7936, 7943, 1), new Range16.ptr(7952, 7957, 1), new Range16.ptr(7968, 7975, 1), new Range16.ptr(7984, 7991, 1), new Range16.ptr(8000, 8005, 1), new Range16.ptr(8017, 8023, 2), new Range16.ptr(8032, 8039, 1), new Range16.ptr(8048, 8061, 1), new Range16.ptr(8112, 8113, 1), new Range16.ptr(8126, 8144, 18), new Range16.ptr(8145, 8160, 15), new Range16.ptr(8161, 8165, 4), new Range16.ptr(8526, 8580, 54), new Range16.ptr(11312, 11358, 1), new Range16.ptr(11361, 11365, 4), new Range16.ptr(11366, 11372, 2), new Range16.ptr(11379, 11382, 3), new Range16.ptr(11393, 11491, 2), new Range16.ptr(11500, 11502, 2), new Range16.ptr(11507, 11520, 13), new Range16.ptr(11521, 11557, 1), new Range16.ptr(11559, 11565, 6), new Range16.ptr(42561, 42605, 2), new Range16.ptr(42625, 42651, 2), new Range16.ptr(42787, 42799, 2), new Range16.ptr(42803, 42863, 2), new Range16.ptr(42874, 42876, 2), new Range16.ptr(42879, 42887, 2), new Range16.ptr(42892, 42897, 5), new Range16.ptr(42899, 42903, 4), new Range16.ptr(42905, 42921, 2), new Range16.ptr(65345, 65370, 1)]), new sliceType$1([new Range32.ptr(66600, 66639, 1), new Range32.ptr(71872, 71903, 1)]), 4);
  4126. foldM = new RangeTable.ptr(new sliceType([new Range16.ptr(921, 953, 32), new Range16.ptr(8126, 8126, 1)]), sliceType$1.nil, 0);
  4127. foldMn = new RangeTable.ptr(new sliceType([new Range16.ptr(921, 953, 32), new Range16.ptr(8126, 8126, 1)]), sliceType$1.nil, 0);
  4128. $pkg.FoldCategory = (_map$3 = new $Map(), _key$3 = "Common", _map$3[_key$3] = { k: _key$3, v: foldCommon }, _key$3 = "Greek", _map$3[_key$3] = { k: _key$3, v: foldGreek }, _key$3 = "Inherited", _map$3[_key$3] = { k: _key$3, v: foldInherited }, _key$3 = "L", _map$3[_key$3] = { k: _key$3, v: foldL }, _key$3 = "Ll", _map$3[_key$3] = { k: _key$3, v: foldLl }, _key$3 = "Lt", _map$3[_key$3] = { k: _key$3, v: foldLt }, _key$3 = "Lu", _map$3[_key$3] = { k: _key$3, v: foldLu }, _key$3 = "M", _map$3[_key$3] = { k: _key$3, v: foldM }, _key$3 = "Mn", _map$3[_key$3] = { k: _key$3, v: foldMn }, _map$3);
  4129. $pkg.FoldScript = (_map$4 = new $Map(), _map$4);
  4130. /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
  4131. };
  4132. $pkg.$init = $init;
  4133. return $pkg;
  4134. })();
  4135. $packages["unicode/utf8"] = (function() {
  4136. var $pkg = {}, $init, decodeRuneInternal, decodeRuneInStringInternal, FullRune, DecodeRune, DecodeRuneInString, DecodeLastRune, DecodeLastRuneInString, RuneLen, EncodeRune, RuneCount, RuneCountInString, RuneStart, ValidString;
  4137. decodeRuneInternal = function(p) {
  4138. var $ptr, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$16, _tmp$17, _tmp$18, _tmp$19, _tmp$2, _tmp$20, _tmp$21, _tmp$22, _tmp$23, _tmp$24, _tmp$25, _tmp$26, _tmp$27, _tmp$28, _tmp$29, _tmp$3, _tmp$30, _tmp$31, _tmp$32, _tmp$33, _tmp$34, _tmp$35, _tmp$36, _tmp$37, _tmp$38, _tmp$39, _tmp$4, _tmp$40, _tmp$41, _tmp$42, _tmp$43, _tmp$44, _tmp$45, _tmp$46, _tmp$47, _tmp$48, _tmp$49, _tmp$5, _tmp$50, _tmp$6, _tmp$7, _tmp$8, _tmp$9, c0, c1, c2, c3, n, p, r, short$1, size;
  4139. r = 0;
  4140. size = 0;
  4141. short$1 = false;
  4142. n = p.$length;
  4143. if (n < 1) {
  4144. _tmp = 65533; _tmp$1 = 0; _tmp$2 = true; r = _tmp; size = _tmp$1; short$1 = _tmp$2;
  4145. return [r, size, short$1];
  4146. }
  4147. c0 = (0 >= p.$length ? $throwRuntimeError("index out of range") : p.$array[p.$offset + 0]);
  4148. if (c0 < 128) {
  4149. _tmp$3 = (c0 >> 0); _tmp$4 = 1; _tmp$5 = false; r = _tmp$3; size = _tmp$4; short$1 = _tmp$5;
  4150. return [r, size, short$1];
  4151. }
  4152. if (c0 < 192) {
  4153. _tmp$6 = 65533; _tmp$7 = 1; _tmp$8 = false; r = _tmp$6; size = _tmp$7; short$1 = _tmp$8;
  4154. return [r, size, short$1];
  4155. }
  4156. if (n < 2) {
  4157. _tmp$9 = 65533; _tmp$10 = 1; _tmp$11 = true; r = _tmp$9; size = _tmp$10; short$1 = _tmp$11;
  4158. return [r, size, short$1];
  4159. }
  4160. c1 = (1 >= p.$length ? $throwRuntimeError("index out of range") : p.$array[p.$offset + 1]);
  4161. if (c1 < 128 || 192 <= c1) {
  4162. _tmp$12 = 65533; _tmp$13 = 1; _tmp$14 = false; r = _tmp$12; size = _tmp$13; short$1 = _tmp$14;
  4163. return [r, size, short$1];
  4164. }
  4165. if (c0 < 224) {
  4166. r = ((((c0 & 31) >>> 0) >> 0) << 6 >> 0) | (((c1 & 63) >>> 0) >> 0);
  4167. if (r <= 127) {
  4168. _tmp$15 = 65533; _tmp$16 = 1; _tmp$17 = false; r = _tmp$15; size = _tmp$16; short$1 = _tmp$17;
  4169. return [r, size, short$1];
  4170. }
  4171. _tmp$18 = r; _tmp$19 = 2; _tmp$20 = false; r = _tmp$18; size = _tmp$19; short$1 = _tmp$20;
  4172. return [r, size, short$1];
  4173. }
  4174. if (n < 3) {
  4175. _tmp$21 = 65533; _tmp$22 = 1; _tmp$23 = true; r = _tmp$21; size = _tmp$22; short$1 = _tmp$23;
  4176. return [r, size, short$1];
  4177. }
  4178. c2 = (2 >= p.$length ? $throwRuntimeError("index out of range") : p.$array[p.$offset + 2]);
  4179. if (c2 < 128 || 192 <= c2) {
  4180. _tmp$24 = 65533; _tmp$25 = 1; _tmp$26 = false; r = _tmp$24; size = _tmp$25; short$1 = _tmp$26;
  4181. return [r, size, short$1];
  4182. }
  4183. if (c0 < 240) {
  4184. r = (((((c0 & 15) >>> 0) >> 0) << 12 >> 0) | ((((c1 & 63) >>> 0) >> 0) << 6 >> 0)) | (((c2 & 63) >>> 0) >> 0);
  4185. if (r <= 2047) {
  4186. _tmp$27 = 65533; _tmp$28 = 1; _tmp$29 = false; r = _tmp$27; size = _tmp$28; short$1 = _tmp$29;
  4187. return [r, size, short$1];
  4188. }
  4189. if (55296 <= r && r <= 57343) {
  4190. _tmp$30 = 65533; _tmp$31 = 1; _tmp$32 = false; r = _tmp$30; size = _tmp$31; short$1 = _tmp$32;
  4191. return [r, size, short$1];
  4192. }
  4193. _tmp$33 = r; _tmp$34 = 3; _tmp$35 = false; r = _tmp$33; size = _tmp$34; short$1 = _tmp$35;
  4194. return [r, size, short$1];
  4195. }
  4196. if (n < 4) {
  4197. _tmp$36 = 65533; _tmp$37 = 1; _tmp$38 = true; r = _tmp$36; size = _tmp$37; short$1 = _tmp$38;
  4198. return [r, size, short$1];
  4199. }
  4200. c3 = (3 >= p.$length ? $throwRuntimeError("index out of range") : p.$array[p.$offset + 3]);
  4201. if (c3 < 128 || 192 <= c3) {
  4202. _tmp$39 = 65533; _tmp$40 = 1; _tmp$41 = false; r = _tmp$39; size = _tmp$40; short$1 = _tmp$41;
  4203. return [r, size, short$1];
  4204. }
  4205. if (c0 < 248) {
  4206. r = ((((((c0 & 7) >>> 0) >> 0) << 18 >> 0) | ((((c1 & 63) >>> 0) >> 0) << 12 >> 0)) | ((((c2 & 63) >>> 0) >> 0) << 6 >> 0)) | (((c3 & 63) >>> 0) >> 0);
  4207. if (r <= 65535 || 1114111 < r) {
  4208. _tmp$42 = 65533; _tmp$43 = 1; _tmp$44 = false; r = _tmp$42; size = _tmp$43; short$1 = _tmp$44;
  4209. return [r, size, short$1];
  4210. }
  4211. _tmp$45 = r; _tmp$46 = 4; _tmp$47 = false; r = _tmp$45; size = _tmp$46; short$1 = _tmp$47;
  4212. return [r, size, short$1];
  4213. }
  4214. _tmp$48 = 65533; _tmp$49 = 1; _tmp$50 = false; r = _tmp$48; size = _tmp$49; short$1 = _tmp$50;
  4215. return [r, size, short$1];
  4216. };
  4217. decodeRuneInStringInternal = function(s) {
  4218. var $ptr, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$16, _tmp$17, _tmp$18, _tmp$19, _tmp$2, _tmp$20, _tmp$21, _tmp$22, _tmp$23, _tmp$24, _tmp$25, _tmp$26, _tmp$27, _tmp$28, _tmp$29, _tmp$3, _tmp$30, _tmp$31, _tmp$32, _tmp$33, _tmp$34, _tmp$35, _tmp$36, _tmp$37, _tmp$38, _tmp$39, _tmp$4, _tmp$40, _tmp$41, _tmp$42, _tmp$43, _tmp$44, _tmp$45, _tmp$46, _tmp$47, _tmp$48, _tmp$49, _tmp$5, _tmp$50, _tmp$6, _tmp$7, _tmp$8, _tmp$9, c0, c1, c2, c3, n, r, s, short$1, size;
  4219. r = 0;
  4220. size = 0;
  4221. short$1 = false;
  4222. n = s.length;
  4223. if (n < 1) {
  4224. _tmp = 65533; _tmp$1 = 0; _tmp$2 = true; r = _tmp; size = _tmp$1; short$1 = _tmp$2;
  4225. return [r, size, short$1];
  4226. }
  4227. c0 = s.charCodeAt(0);
  4228. if (c0 < 128) {
  4229. _tmp$3 = (c0 >> 0); _tmp$4 = 1; _tmp$5 = false; r = _tmp$3; size = _tmp$4; short$1 = _tmp$5;
  4230. return [r, size, short$1];
  4231. }
  4232. if (c0 < 192) {
  4233. _tmp$6 = 65533; _tmp$7 = 1; _tmp$8 = false; r = _tmp$6; size = _tmp$7; short$1 = _tmp$8;
  4234. return [r, size, short$1];
  4235. }
  4236. if (n < 2) {
  4237. _tmp$9 = 65533; _tmp$10 = 1; _tmp$11 = true; r = _tmp$9; size = _tmp$10; short$1 = _tmp$11;
  4238. return [r, size, short$1];
  4239. }
  4240. c1 = s.charCodeAt(1);
  4241. if (c1 < 128 || 192 <= c1) {
  4242. _tmp$12 = 65533; _tmp$13 = 1; _tmp$14 = false; r = _tmp$12; size = _tmp$13; short$1 = _tmp$14;
  4243. return [r, size, short$1];
  4244. }
  4245. if (c0 < 224) {
  4246. r = ((((c0 & 31) >>> 0) >> 0) << 6 >> 0) | (((c1 & 63) >>> 0) >> 0);
  4247. if (r <= 127) {
  4248. _tmp$15 = 65533; _tmp$16 = 1; _tmp$17 = false; r = _tmp$15; size = _tmp$16; short$1 = _tmp$17;
  4249. return [r, size, short$1];
  4250. }
  4251. _tmp$18 = r; _tmp$19 = 2; _tmp$20 = false; r = _tmp$18; size = _tmp$19; short$1 = _tmp$20;
  4252. return [r, size, short$1];
  4253. }
  4254. if (n < 3) {
  4255. _tmp$21 = 65533; _tmp$22 = 1; _tmp$23 = true; r = _tmp$21; size = _tmp$22; short$1 = _tmp$23;
  4256. return [r, size, short$1];
  4257. }
  4258. c2 = s.charCodeAt(2);
  4259. if (c2 < 128 || 192 <= c2) {
  4260. _tmp$24 = 65533; _tmp$25 = 1; _tmp$26 = false; r = _tmp$24; size = _tmp$25; short$1 = _tmp$26;
  4261. return [r, size, short$1];
  4262. }
  4263. if (c0 < 240) {
  4264. r = (((((c0 & 15) >>> 0) >> 0) << 12 >> 0) | ((((c1 & 63) >>> 0) >> 0) << 6 >> 0)) | (((c2 & 63) >>> 0) >> 0);
  4265. if (r <= 2047) {
  4266. _tmp$27 = 65533; _tmp$28 = 1; _tmp$29 = false; r = _tmp$27; size = _tmp$28; short$1 = _tmp$29;
  4267. return [r, size, short$1];
  4268. }
  4269. if (55296 <= r && r <= 57343) {
  4270. _tmp$30 = 65533; _tmp$31 = 1; _tmp$32 = false; r = _tmp$30; size = _tmp$31; short$1 = _tmp$32;
  4271. return [r, size, short$1];
  4272. }
  4273. _tmp$33 = r; _tmp$34 = 3; _tmp$35 = false; r = _tmp$33; size = _tmp$34; short$1 = _tmp$35;
  4274. return [r, size, short$1];
  4275. }
  4276. if (n < 4) {
  4277. _tmp$36 = 65533; _tmp$37 = 1; _tmp$38 = true; r = _tmp$36; size = _tmp$37; short$1 = _tmp$38;
  4278. return [r, size, short$1];
  4279. }
  4280. c3 = s.charCodeAt(3);
  4281. if (c3 < 128 || 192 <= c3) {
  4282. _tmp$39 = 65533; _tmp$40 = 1; _tmp$41 = false; r = _tmp$39; size = _tmp$40; short$1 = _tmp$41;
  4283. return [r, size, short$1];
  4284. }
  4285. if (c0 < 248) {
  4286. r = ((((((c0 & 7) >>> 0) >> 0) << 18 >> 0) | ((((c1 & 63) >>> 0) >> 0) << 12 >> 0)) | ((((c2 & 63) >>> 0) >> 0) << 6 >> 0)) | (((c3 & 63) >>> 0) >> 0);
  4287. if (r <= 65535 || 1114111 < r) {
  4288. _tmp$42 = 65533; _tmp$43 = 1; _tmp$44 = false; r = _tmp$42; size = _tmp$43; short$1 = _tmp$44;
  4289. return [r, size, short$1];
  4290. }
  4291. _tmp$45 = r; _tmp$46 = 4; _tmp$47 = false; r = _tmp$45; size = _tmp$46; short$1 = _tmp$47;
  4292. return [r, size, short$1];
  4293. }
  4294. _tmp$48 = 65533; _tmp$49 = 1; _tmp$50 = false; r = _tmp$48; size = _tmp$49; short$1 = _tmp$50;
  4295. return [r, size, short$1];
  4296. };
  4297. FullRune = function(p) {
  4298. var $ptr, _tuple, p, short$1;
  4299. _tuple = decodeRuneInternal(p); short$1 = _tuple[2];
  4300. return !short$1;
  4301. };
  4302. $pkg.FullRune = FullRune;
  4303. DecodeRune = function(p) {
  4304. var $ptr, _tuple, p, r, size;
  4305. r = 0;
  4306. size = 0;
  4307. _tuple = decodeRuneInternal(p); r = _tuple[0]; size = _tuple[1];
  4308. return [r, size];
  4309. };
  4310. $pkg.DecodeRune = DecodeRune;
  4311. DecodeRuneInString = function(s) {
  4312. var $ptr, _tuple, r, s, size;
  4313. r = 0;
  4314. size = 0;
  4315. _tuple = decodeRuneInStringInternal(s); r = _tuple[0]; size = _tuple[1];
  4316. return [r, size];
  4317. };
  4318. $pkg.DecodeRuneInString = DecodeRuneInString;
  4319. DecodeLastRune = function(p) {
  4320. var $ptr, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tuple, end, lim, p, r, size, start;
  4321. r = 0;
  4322. size = 0;
  4323. end = p.$length;
  4324. if (end === 0) {
  4325. _tmp = 65533; _tmp$1 = 0; r = _tmp; size = _tmp$1;
  4326. return [r, size];
  4327. }
  4328. start = end - 1 >> 0;
  4329. r = (((start < 0 || start >= p.$length) ? $throwRuntimeError("index out of range") : p.$array[p.$offset + start]) >> 0);
  4330. if (r < 128) {
  4331. _tmp$2 = r; _tmp$3 = 1; r = _tmp$2; size = _tmp$3;
  4332. return [r, size];
  4333. }
  4334. lim = end - 4 >> 0;
  4335. if (lim < 0) {
  4336. lim = 0;
  4337. }
  4338. start = start - (1) >> 0;
  4339. while (true) {
  4340. if (!(start >= lim)) { break; }
  4341. if (RuneStart(((start < 0 || start >= p.$length) ? $throwRuntimeError("index out of range") : p.$array[p.$offset + start]))) {
  4342. break;
  4343. }
  4344. start = start - (1) >> 0;
  4345. }
  4346. if (start < 0) {
  4347. start = 0;
  4348. }
  4349. _tuple = DecodeRune($subslice(p, start, end)); r = _tuple[0]; size = _tuple[1];
  4350. if (!(((start + size >> 0) === end))) {
  4351. _tmp$4 = 65533; _tmp$5 = 1; r = _tmp$4; size = _tmp$5;
  4352. return [r, size];
  4353. }
  4354. _tmp$6 = r; _tmp$7 = size; r = _tmp$6; size = _tmp$7;
  4355. return [r, size];
  4356. };
  4357. $pkg.DecodeLastRune = DecodeLastRune;
  4358. DecodeLastRuneInString = function(s) {
  4359. var $ptr, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tuple, end, lim, r, s, size, start;
  4360. r = 0;
  4361. size = 0;
  4362. end = s.length;
  4363. if (end === 0) {
  4364. _tmp = 65533; _tmp$1 = 0; r = _tmp; size = _tmp$1;
  4365. return [r, size];
  4366. }
  4367. start = end - 1 >> 0;
  4368. r = (s.charCodeAt(start) >> 0);
  4369. if (r < 128) {
  4370. _tmp$2 = r; _tmp$3 = 1; r = _tmp$2; size = _tmp$3;
  4371. return [r, size];
  4372. }
  4373. lim = end - 4 >> 0;
  4374. if (lim < 0) {
  4375. lim = 0;
  4376. }
  4377. start = start - (1) >> 0;
  4378. while (true) {
  4379. if (!(start >= lim)) { break; }
  4380. if (RuneStart(s.charCodeAt(start))) {
  4381. break;
  4382. }
  4383. start = start - (1) >> 0;
  4384. }
  4385. if (start < 0) {
  4386. start = 0;
  4387. }
  4388. _tuple = DecodeRuneInString(s.substring(start, end)); r = _tuple[0]; size = _tuple[1];
  4389. if (!(((start + size >> 0) === end))) {
  4390. _tmp$4 = 65533; _tmp$5 = 1; r = _tmp$4; size = _tmp$5;
  4391. return [r, size];
  4392. }
  4393. _tmp$6 = r; _tmp$7 = size; r = _tmp$6; size = _tmp$7;
  4394. return [r, size];
  4395. };
  4396. $pkg.DecodeLastRuneInString = DecodeLastRuneInString;
  4397. RuneLen = function(r) {
  4398. var $ptr, r;
  4399. if (r < 0) {
  4400. return -1;
  4401. } else if (r <= 127) {
  4402. return 1;
  4403. } else if (r <= 2047) {
  4404. return 2;
  4405. } else if (55296 <= r && r <= 57343) {
  4406. return -1;
  4407. } else if (r <= 65535) {
  4408. return 3;
  4409. } else if (r <= 1114111) {
  4410. return 4;
  4411. }
  4412. return -1;
  4413. };
  4414. $pkg.RuneLen = RuneLen;
  4415. EncodeRune = function(p, r) {
  4416. var $ptr, i, p, r;
  4417. i = (r >>> 0);
  4418. if (i <= 127) {
  4419. (0 >= p.$length ? $throwRuntimeError("index out of range") : p.$array[p.$offset + 0] = (r << 24 >>> 24));
  4420. return 1;
  4421. } else if (i <= 2047) {
  4422. (0 >= p.$length ? $throwRuntimeError("index out of range") : p.$array[p.$offset + 0] = (192 | ((r >> 6 >> 0) << 24 >>> 24)) >>> 0);
  4423. (1 >= p.$length ? $throwRuntimeError("index out of range") : p.$array[p.$offset + 1] = (128 | (((r << 24 >>> 24) & 63) >>> 0)) >>> 0);
  4424. return 2;
  4425. } else if (i > 1114111 || 55296 <= i && i <= 57343) {
  4426. r = 65533;
  4427. (0 >= p.$length ? $throwRuntimeError("index out of range") : p.$array[p.$offset + 0] = (224 | ((r >> 12 >> 0) << 24 >>> 24)) >>> 0);
  4428. (1 >= p.$length ? $throwRuntimeError("index out of range") : p.$array[p.$offset + 1] = (128 | ((((r >> 6 >> 0) << 24 >>> 24) & 63) >>> 0)) >>> 0);
  4429. (2 >= p.$length ? $throwRuntimeError("index out of range") : p.$array[p.$offset + 2] = (128 | (((r << 24 >>> 24) & 63) >>> 0)) >>> 0);
  4430. return 3;
  4431. } else if (i <= 65535) {
  4432. (0 >= p.$length ? $throwRuntimeError("index out of range") : p.$array[p.$offset + 0] = (224 | ((r >> 12 >> 0) << 24 >>> 24)) >>> 0);
  4433. (1 >= p.$length ? $throwRuntimeError("index out of range") : p.$array[p.$offset + 1] = (128 | ((((r >> 6 >> 0) << 24 >>> 24) & 63) >>> 0)) >>> 0);
  4434. (2 >= p.$length ? $throwRuntimeError("index out of range") : p.$array[p.$offset + 2] = (128 | (((r << 24 >>> 24) & 63) >>> 0)) >>> 0);
  4435. return 3;
  4436. } else {
  4437. (0 >= p.$length ? $throwRuntimeError("index out of range") : p.$array[p.$offset + 0] = (240 | ((r >> 18 >> 0) << 24 >>> 24)) >>> 0);
  4438. (1 >= p.$length ? $throwRuntimeError("index out of range") : p.$array[p.$offset + 1] = (128 | ((((r >> 12 >> 0) << 24 >>> 24) & 63) >>> 0)) >>> 0);
  4439. (2 >= p.$length ? $throwRuntimeError("index out of range") : p.$array[p.$offset + 2] = (128 | ((((r >> 6 >> 0) << 24 >>> 24) & 63) >>> 0)) >>> 0);
  4440. (3 >= p.$length ? $throwRuntimeError("index out of range") : p.$array[p.$offset + 3] = (128 | (((r << 24 >>> 24) & 63) >>> 0)) >>> 0);
  4441. return 4;
  4442. }
  4443. };
  4444. $pkg.EncodeRune = EncodeRune;
  4445. RuneCount = function(p) {
  4446. var $ptr, _tuple, i, n, p, size;
  4447. i = 0;
  4448. n = 0;
  4449. n = 0;
  4450. while (true) {
  4451. if (!(i < p.$length)) { break; }
  4452. if (((i < 0 || i >= p.$length) ? $throwRuntimeError("index out of range") : p.$array[p.$offset + i]) < 128) {
  4453. i = i + (1) >> 0;
  4454. } else {
  4455. _tuple = DecodeRune($subslice(p, i)); size = _tuple[1];
  4456. i = i + (size) >> 0;
  4457. }
  4458. n = n + (1) >> 0;
  4459. }
  4460. return n;
  4461. };
  4462. $pkg.RuneCount = RuneCount;
  4463. RuneCountInString = function(s) {
  4464. var $ptr, _i, _ref, _rune, n, s;
  4465. n = 0;
  4466. _ref = s;
  4467. _i = 0;
  4468. while (true) {
  4469. if (!(_i < _ref.length)) { break; }
  4470. _rune = $decodeRune(_ref, _i);
  4471. n = n + (1) >> 0;
  4472. _i += _rune[1];
  4473. }
  4474. return n;
  4475. };
  4476. $pkg.RuneCountInString = RuneCountInString;
  4477. RuneStart = function(b) {
  4478. var $ptr, b;
  4479. return !((((b & 192) >>> 0) === 128));
  4480. };
  4481. $pkg.RuneStart = RuneStart;
  4482. ValidString = function(s) {
  4483. var $ptr, _i, _ref, _rune, _tuple, i, r, s, size;
  4484. _ref = s;
  4485. _i = 0;
  4486. while (true) {
  4487. if (!(_i < _ref.length)) { break; }
  4488. _rune = $decodeRune(_ref, _i);
  4489. i = _i;
  4490. r = _rune[0];
  4491. if (r === 65533) {
  4492. _tuple = DecodeRuneInString(s.substring(i)); size = _tuple[1];
  4493. if (size === 1) {
  4494. return false;
  4495. }
  4496. }
  4497. _i += _rune[1];
  4498. }
  4499. return true;
  4500. };
  4501. $pkg.ValidString = ValidString;
  4502. $init = function() {
  4503. $pkg.$init = function() {};
  4504. /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  4505. /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
  4506. };
  4507. $pkg.$init = $init;
  4508. return $pkg;
  4509. })();
  4510. $packages["bytes"] = (function() {
  4511. var $pkg = {}, $init, errors, io, unicode, utf8, Buffer, readOp, Reader, ptrType, sliceType, arrayType, arrayType$1, ptrType$1, IndexByte, Equal, makeSlice, NewBuffer, Index, HasPrefix, HasSuffix, Map, TrimLeftFunc, TrimRightFunc, TrimFunc, indexFunc, lastIndexFunc, makeCutsetFunc, TrimRight, TrimSpace, NewReader;
  4512. errors = $packages["errors"];
  4513. io = $packages["io"];
  4514. unicode = $packages["unicode"];
  4515. utf8 = $packages["unicode/utf8"];
  4516. Buffer = $pkg.Buffer = $newType(0, $kindStruct, "bytes.Buffer", "Buffer", "bytes", function(buf_, off_, runeBytes_, bootstrap_, lastRead_) {
  4517. this.$val = this;
  4518. if (arguments.length === 0) {
  4519. this.buf = sliceType.nil;
  4520. this.off = 0;
  4521. this.runeBytes = arrayType.zero();
  4522. this.bootstrap = arrayType$1.zero();
  4523. this.lastRead = 0;
  4524. return;
  4525. }
  4526. this.buf = buf_;
  4527. this.off = off_;
  4528. this.runeBytes = runeBytes_;
  4529. this.bootstrap = bootstrap_;
  4530. this.lastRead = lastRead_;
  4531. });
  4532. readOp = $pkg.readOp = $newType(4, $kindInt, "bytes.readOp", "readOp", "bytes", null);
  4533. Reader = $pkg.Reader = $newType(0, $kindStruct, "bytes.Reader", "Reader", "bytes", function(s_, i_, prevRune_) {
  4534. this.$val = this;
  4535. if (arguments.length === 0) {
  4536. this.s = sliceType.nil;
  4537. this.i = new $Int64(0, 0);
  4538. this.prevRune = 0;
  4539. return;
  4540. }
  4541. this.s = s_;
  4542. this.i = i_;
  4543. this.prevRune = prevRune_;
  4544. });
  4545. ptrType = $ptrType(Buffer);
  4546. sliceType = $sliceType($Uint8);
  4547. arrayType = $arrayType($Uint8, 4);
  4548. arrayType$1 = $arrayType($Uint8, 64);
  4549. ptrType$1 = $ptrType(Reader);
  4550. IndexByte = function(s, c) {
  4551. var $ptr, _i, _ref, b, c, i, s;
  4552. _ref = s;
  4553. _i = 0;
  4554. while (true) {
  4555. if (!(_i < _ref.$length)) { break; }
  4556. i = _i;
  4557. b = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]);
  4558. if (b === c) {
  4559. return i;
  4560. }
  4561. _i++;
  4562. }
  4563. return -1;
  4564. };
  4565. $pkg.IndexByte = IndexByte;
  4566. Equal = function(a, b) {
  4567. var $ptr, _i, _ref, a, b, c, i;
  4568. if (!((a.$length === b.$length))) {
  4569. return false;
  4570. }
  4571. _ref = a;
  4572. _i = 0;
  4573. while (true) {
  4574. if (!(_i < _ref.$length)) { break; }
  4575. i = _i;
  4576. c = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]);
  4577. if (!((c === ((i < 0 || i >= b.$length) ? $throwRuntimeError("index out of range") : b.$array[b.$offset + i])))) {
  4578. return false;
  4579. }
  4580. _i++;
  4581. }
  4582. return true;
  4583. };
  4584. $pkg.Equal = Equal;
  4585. Buffer.ptr.prototype.Bytes = function() {
  4586. var $ptr, b;
  4587. b = this;
  4588. return $subslice(b.buf, b.off);
  4589. };
  4590. Buffer.prototype.Bytes = function() { return this.$val.Bytes(); };
  4591. Buffer.ptr.prototype.String = function() {
  4592. var $ptr, b;
  4593. b = this;
  4594. if (b === ptrType.nil) {
  4595. return "<nil>";
  4596. }
  4597. return $bytesToString($subslice(b.buf, b.off));
  4598. };
  4599. Buffer.prototype.String = function() { return this.$val.String(); };
  4600. Buffer.ptr.prototype.Len = function() {
  4601. var $ptr, b;
  4602. b = this;
  4603. return b.buf.$length - b.off >> 0;
  4604. };
  4605. Buffer.prototype.Len = function() { return this.$val.Len(); };
  4606. Buffer.ptr.prototype.Truncate = function(n) {
  4607. var $ptr, b, n;
  4608. b = this;
  4609. b.lastRead = 0;
  4610. if (n < 0 || n > b.Len()) {
  4611. $panic(new $String("bytes.Buffer: truncation out of range"));
  4612. } else if (n === 0) {
  4613. b.off = 0;
  4614. }
  4615. b.buf = $subslice(b.buf, 0, (b.off + n >> 0));
  4616. };
  4617. Buffer.prototype.Truncate = function(n) { return this.$val.Truncate(n); };
  4618. Buffer.ptr.prototype.Reset = function() {
  4619. var $ptr, b;
  4620. b = this;
  4621. b.Truncate(0);
  4622. };
  4623. Buffer.prototype.Reset = function() { return this.$val.Reset(); };
  4624. Buffer.ptr.prototype.grow = function(n) {
  4625. var $ptr, _q, b, buf, m, n;
  4626. b = this;
  4627. m = b.Len();
  4628. if ((m === 0) && !((b.off === 0))) {
  4629. b.Truncate(0);
  4630. }
  4631. if ((b.buf.$length + n >> 0) > b.buf.$capacity) {
  4632. buf = sliceType.nil;
  4633. if (b.buf === sliceType.nil && n <= 64) {
  4634. buf = $subslice(new sliceType(b.bootstrap), 0);
  4635. } else if ((m + n >> 0) <= (_q = b.buf.$capacity / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero"))) {
  4636. $copySlice(b.buf, $subslice(b.buf, b.off));
  4637. buf = $subslice(b.buf, 0, m);
  4638. } else {
  4639. buf = makeSlice((2 * b.buf.$capacity >> 0) + n >> 0);
  4640. $copySlice(buf, $subslice(b.buf, b.off));
  4641. }
  4642. b.buf = buf;
  4643. b.off = 0;
  4644. }
  4645. b.buf = $subslice(b.buf, 0, ((b.off + m >> 0) + n >> 0));
  4646. return b.off + m >> 0;
  4647. };
  4648. Buffer.prototype.grow = function(n) { return this.$val.grow(n); };
  4649. Buffer.ptr.prototype.Grow = function(n) {
  4650. var $ptr, b, m, n;
  4651. b = this;
  4652. if (n < 0) {
  4653. $panic(new $String("bytes.Buffer.Grow: negative count"));
  4654. }
  4655. m = b.grow(n);
  4656. b.buf = $subslice(b.buf, 0, m);
  4657. };
  4658. Buffer.prototype.Grow = function(n) { return this.$val.Grow(n); };
  4659. Buffer.ptr.prototype.Write = function(p) {
  4660. var $ptr, _tmp, _tmp$1, b, err, m, n, p;
  4661. n = 0;
  4662. err = $ifaceNil;
  4663. b = this;
  4664. b.lastRead = 0;
  4665. m = b.grow(p.$length);
  4666. _tmp = $copySlice($subslice(b.buf, m), p); _tmp$1 = $ifaceNil; n = _tmp; err = _tmp$1;
  4667. return [n, err];
  4668. };
  4669. Buffer.prototype.Write = function(p) { return this.$val.Write(p); };
  4670. Buffer.ptr.prototype.WriteString = function(s) {
  4671. var $ptr, _tmp, _tmp$1, b, err, m, n, s;
  4672. n = 0;
  4673. err = $ifaceNil;
  4674. b = this;
  4675. b.lastRead = 0;
  4676. m = b.grow(s.length);
  4677. _tmp = $copyString($subslice(b.buf, m), s); _tmp$1 = $ifaceNil; n = _tmp; err = _tmp$1;
  4678. return [n, err];
  4679. };
  4680. Buffer.prototype.WriteString = function(s) { return this.$val.WriteString(s); };
  4681. Buffer.ptr.prototype.ReadFrom = function(r) {
  4682. var $ptr, _r, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, b, e, err, free, m, n, newBuf, r, x, $s, $r;
  4683. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tuple = $f._tuple; b = $f.b; e = $f.e; err = $f.err; free = $f.free; m = $f.m; n = $f.n; newBuf = $f.newBuf; r = $f.r; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  4684. n = new $Int64(0, 0);
  4685. err = $ifaceNil;
  4686. b = this;
  4687. b.lastRead = 0;
  4688. if (b.off >= b.buf.$length) {
  4689. b.Truncate(0);
  4690. }
  4691. /* while (true) { */ case 1:
  4692. free = b.buf.$capacity - b.buf.$length >> 0;
  4693. if (free < 512) {
  4694. newBuf = b.buf;
  4695. if ((b.off + free >> 0) < 512) {
  4696. newBuf = makeSlice((2 * b.buf.$capacity >> 0) + 512 >> 0);
  4697. }
  4698. $copySlice(newBuf, $subslice(b.buf, b.off));
  4699. b.buf = $subslice(newBuf, 0, (b.buf.$length - b.off >> 0));
  4700. b.off = 0;
  4701. }
  4702. _r = r.Read($subslice(b.buf, b.buf.$length, b.buf.$capacity)); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  4703. _tuple = _r; m = _tuple[0]; e = _tuple[1];
  4704. b.buf = $subslice(b.buf, 0, (b.buf.$length + m >> 0));
  4705. n = (x = new $Int64(0, m), new $Int64(n.$high + x.$high, n.$low + x.$low));
  4706. if ($interfaceIsEqual(e, io.EOF)) {
  4707. /* break; */ $s = 2; continue;
  4708. }
  4709. if (!($interfaceIsEqual(e, $ifaceNil))) {
  4710. _tmp = n; _tmp$1 = e; n = _tmp; err = _tmp$1;
  4711. return [n, err];
  4712. }
  4713. /* } */ $s = 1; continue; case 2:
  4714. _tmp$2 = n; _tmp$3 = $ifaceNil; n = _tmp$2; err = _tmp$3;
  4715. return [n, err];
  4716. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Buffer.ptr.prototype.ReadFrom }; } $f.$ptr = $ptr; $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tuple = _tuple; $f.b = b; $f.e = e; $f.err = err; $f.free = free; $f.m = m; $f.n = n; $f.newBuf = newBuf; $f.r = r; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
  4717. };
  4718. Buffer.prototype.ReadFrom = function(r) { return this.$val.ReadFrom(r); };
  4719. makeSlice = function(n) {
  4720. var $ptr, n, $deferred;
  4721. /* */ var $err = null; try { $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
  4722. $deferred.push([(function() {
  4723. var $ptr;
  4724. if (!($interfaceIsEqual($recover(), $ifaceNil))) {
  4725. $panic($pkg.ErrTooLarge);
  4726. }
  4727. }), []]);
  4728. return $makeSlice(sliceType, n);
  4729. /* */ } catch(err) { $err = err; return sliceType.nil; } finally { $callDeferred($deferred, $err); }
  4730. };
  4731. Buffer.ptr.prototype.WriteTo = function(w) {
  4732. var $ptr, _r, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, b, e, err, m, n, nBytes, w, $s, $r;
  4733. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tuple = $f._tuple; b = $f.b; e = $f.e; err = $f.err; m = $f.m; n = $f.n; nBytes = $f.nBytes; w = $f.w; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  4734. n = new $Int64(0, 0);
  4735. err = $ifaceNil;
  4736. b = this;
  4737. b.lastRead = 0;
  4738. /* */ if (b.off < b.buf.$length) { $s = 1; continue; }
  4739. /* */ $s = 2; continue;
  4740. /* if (b.off < b.buf.$length) { */ case 1:
  4741. nBytes = b.Len();
  4742. _r = w.Write($subslice(b.buf, b.off)); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  4743. _tuple = _r; m = _tuple[0]; e = _tuple[1];
  4744. if (m > nBytes) {
  4745. $panic(new $String("bytes.Buffer.WriteTo: invalid Write count"));
  4746. }
  4747. b.off = b.off + (m) >> 0;
  4748. n = new $Int64(0, m);
  4749. if (!($interfaceIsEqual(e, $ifaceNil))) {
  4750. _tmp = n; _tmp$1 = e; n = _tmp; err = _tmp$1;
  4751. return [n, err];
  4752. }
  4753. if (!((m === nBytes))) {
  4754. _tmp$2 = n; _tmp$3 = io.ErrShortWrite; n = _tmp$2; err = _tmp$3;
  4755. return [n, err];
  4756. }
  4757. /* } */ case 2:
  4758. b.Truncate(0);
  4759. return [n, err];
  4760. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Buffer.ptr.prototype.WriteTo }; } $f.$ptr = $ptr; $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tuple = _tuple; $f.b = b; $f.e = e; $f.err = err; $f.m = m; $f.n = n; $f.nBytes = nBytes; $f.w = w; $f.$s = $s; $f.$r = $r; return $f;
  4761. };
  4762. Buffer.prototype.WriteTo = function(w) { return this.$val.WriteTo(w); };
  4763. Buffer.ptr.prototype.WriteByte = function(c) {
  4764. var $ptr, b, c, m, x;
  4765. b = this;
  4766. b.lastRead = 0;
  4767. m = b.grow(1);
  4768. (x = b.buf, ((m < 0 || m >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + m] = c));
  4769. return $ifaceNil;
  4770. };
  4771. Buffer.prototype.WriteByte = function(c) { return this.$val.WriteByte(c); };
  4772. Buffer.ptr.prototype.WriteRune = function(r) {
  4773. var $ptr, _tmp, _tmp$1, _tmp$2, _tmp$3, b, err, n, r;
  4774. n = 0;
  4775. err = $ifaceNil;
  4776. b = this;
  4777. if (r < 128) {
  4778. b.WriteByte((r << 24 >>> 24));
  4779. _tmp = 1; _tmp$1 = $ifaceNil; n = _tmp; err = _tmp$1;
  4780. return [n, err];
  4781. }
  4782. n = utf8.EncodeRune($subslice(new sliceType(b.runeBytes), 0), r);
  4783. b.Write($subslice(new sliceType(b.runeBytes), 0, n));
  4784. _tmp$2 = n; _tmp$3 = $ifaceNil; n = _tmp$2; err = _tmp$3;
  4785. return [n, err];
  4786. };
  4787. Buffer.prototype.WriteRune = function(r) { return this.$val.WriteRune(r); };
  4788. Buffer.ptr.prototype.Read = function(p) {
  4789. var $ptr, _tmp, _tmp$1, b, err, n, p;
  4790. n = 0;
  4791. err = $ifaceNil;
  4792. b = this;
  4793. b.lastRead = 0;
  4794. if (b.off >= b.buf.$length) {
  4795. b.Truncate(0);
  4796. if (p.$length === 0) {
  4797. return [n, err];
  4798. }
  4799. _tmp = 0; _tmp$1 = io.EOF; n = _tmp; err = _tmp$1;
  4800. return [n, err];
  4801. }
  4802. n = $copySlice(p, $subslice(b.buf, b.off));
  4803. b.off = b.off + (n) >> 0;
  4804. if (n > 0) {
  4805. b.lastRead = 2;
  4806. }
  4807. return [n, err];
  4808. };
  4809. Buffer.prototype.Read = function(p) { return this.$val.Read(p); };
  4810. Buffer.ptr.prototype.Next = function(n) {
  4811. var $ptr, b, data, m, n;
  4812. b = this;
  4813. b.lastRead = 0;
  4814. m = b.Len();
  4815. if (n > m) {
  4816. n = m;
  4817. }
  4818. data = $subslice(b.buf, b.off, (b.off + n >> 0));
  4819. b.off = b.off + (n) >> 0;
  4820. if (n > 0) {
  4821. b.lastRead = 2;
  4822. }
  4823. return data;
  4824. };
  4825. Buffer.prototype.Next = function(n) { return this.$val.Next(n); };
  4826. Buffer.ptr.prototype.ReadByte = function() {
  4827. var $ptr, _tmp, _tmp$1, _tmp$2, _tmp$3, b, c, err, x, x$1;
  4828. c = 0;
  4829. err = $ifaceNil;
  4830. b = this;
  4831. b.lastRead = 0;
  4832. if (b.off >= b.buf.$length) {
  4833. b.Truncate(0);
  4834. _tmp = 0; _tmp$1 = io.EOF; c = _tmp; err = _tmp$1;
  4835. return [c, err];
  4836. }
  4837. c = (x = b.buf, x$1 = b.off, ((x$1 < 0 || x$1 >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + x$1]));
  4838. b.off = b.off + (1) >> 0;
  4839. b.lastRead = 2;
  4840. _tmp$2 = c; _tmp$3 = $ifaceNil; c = _tmp$2; err = _tmp$3;
  4841. return [c, err];
  4842. };
  4843. Buffer.prototype.ReadByte = function() { return this.$val.ReadByte(); };
  4844. Buffer.ptr.prototype.ReadRune = function() {
  4845. var $ptr, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tuple, b, c, err, n, r, size, x, x$1;
  4846. r = 0;
  4847. size = 0;
  4848. err = $ifaceNil;
  4849. b = this;
  4850. b.lastRead = 0;
  4851. if (b.off >= b.buf.$length) {
  4852. b.Truncate(0);
  4853. _tmp = 0; _tmp$1 = 0; _tmp$2 = io.EOF; r = _tmp; size = _tmp$1; err = _tmp$2;
  4854. return [r, size, err];
  4855. }
  4856. b.lastRead = 1;
  4857. c = (x = b.buf, x$1 = b.off, ((x$1 < 0 || x$1 >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + x$1]));
  4858. if (c < 128) {
  4859. b.off = b.off + (1) >> 0;
  4860. _tmp$3 = (c >> 0); _tmp$4 = 1; _tmp$5 = $ifaceNil; r = _tmp$3; size = _tmp$4; err = _tmp$5;
  4861. return [r, size, err];
  4862. }
  4863. _tuple = utf8.DecodeRune($subslice(b.buf, b.off)); r = _tuple[0]; n = _tuple[1];
  4864. b.off = b.off + (n) >> 0;
  4865. _tmp$6 = r; _tmp$7 = n; _tmp$8 = $ifaceNil; r = _tmp$6; size = _tmp$7; err = _tmp$8;
  4866. return [r, size, err];
  4867. };
  4868. Buffer.prototype.ReadRune = function() { return this.$val.ReadRune(); };
  4869. Buffer.ptr.prototype.UnreadRune = function() {
  4870. var $ptr, _tuple, b, n;
  4871. b = this;
  4872. if (!((b.lastRead === 1))) {
  4873. return errors.New("bytes.Buffer: UnreadRune: previous operation was not ReadRune");
  4874. }
  4875. b.lastRead = 0;
  4876. if (b.off > 0) {
  4877. _tuple = utf8.DecodeLastRune($subslice(b.buf, 0, b.off)); n = _tuple[1];
  4878. b.off = b.off - (n) >> 0;
  4879. }
  4880. return $ifaceNil;
  4881. };
  4882. Buffer.prototype.UnreadRune = function() { return this.$val.UnreadRune(); };
  4883. Buffer.ptr.prototype.UnreadByte = function() {
  4884. var $ptr, b;
  4885. b = this;
  4886. if (!((b.lastRead === 1)) && !((b.lastRead === 2))) {
  4887. return errors.New("bytes.Buffer: UnreadByte: previous operation was not a read");
  4888. }
  4889. b.lastRead = 0;
  4890. if (b.off > 0) {
  4891. b.off = b.off - (1) >> 0;
  4892. }
  4893. return $ifaceNil;
  4894. };
  4895. Buffer.prototype.UnreadByte = function() { return this.$val.UnreadByte(); };
  4896. Buffer.ptr.prototype.ReadBytes = function(delim) {
  4897. var $ptr, _tuple, b, delim, err, line, slice;
  4898. line = sliceType.nil;
  4899. err = $ifaceNil;
  4900. b = this;
  4901. _tuple = b.readSlice(delim); slice = _tuple[0]; err = _tuple[1];
  4902. line = $appendSlice(line, slice);
  4903. return [line, err];
  4904. };
  4905. Buffer.prototype.ReadBytes = function(delim) { return this.$val.ReadBytes(delim); };
  4906. Buffer.ptr.prototype.readSlice = function(delim) {
  4907. var $ptr, _tmp, _tmp$1, b, delim, end, err, i, line;
  4908. line = sliceType.nil;
  4909. err = $ifaceNil;
  4910. b = this;
  4911. i = IndexByte($subslice(b.buf, b.off), delim);
  4912. end = (b.off + i >> 0) + 1 >> 0;
  4913. if (i < 0) {
  4914. end = b.buf.$length;
  4915. err = io.EOF;
  4916. }
  4917. line = $subslice(b.buf, b.off, end);
  4918. b.off = end;
  4919. b.lastRead = 2;
  4920. _tmp = line; _tmp$1 = err; line = _tmp; err = _tmp$1;
  4921. return [line, err];
  4922. };
  4923. Buffer.prototype.readSlice = function(delim) { return this.$val.readSlice(delim); };
  4924. Buffer.ptr.prototype.ReadString = function(delim) {
  4925. var $ptr, _tmp, _tmp$1, _tuple, b, delim, err, line, slice;
  4926. line = "";
  4927. err = $ifaceNil;
  4928. b = this;
  4929. _tuple = b.readSlice(delim); slice = _tuple[0]; err = _tuple[1];
  4930. _tmp = $bytesToString(slice); _tmp$1 = err; line = _tmp; err = _tmp$1;
  4931. return [line, err];
  4932. };
  4933. Buffer.prototype.ReadString = function(delim) { return this.$val.ReadString(delim); };
  4934. NewBuffer = function(buf) {
  4935. var $ptr, buf;
  4936. return new Buffer.ptr(buf, 0, arrayType.zero(), arrayType$1.zero(), 0);
  4937. };
  4938. $pkg.NewBuffer = NewBuffer;
  4939. Index = function(s, sep) {
  4940. var $ptr, c, i, n, o, s, sep, t;
  4941. n = sep.$length;
  4942. if (n === 0) {
  4943. return 0;
  4944. }
  4945. if (n > s.$length) {
  4946. return -1;
  4947. }
  4948. c = (0 >= sep.$length ? $throwRuntimeError("index out of range") : sep.$array[sep.$offset + 0]);
  4949. if (n === 1) {
  4950. return IndexByte(s, c);
  4951. }
  4952. i = 0;
  4953. t = $subslice(s, 0, ((s.$length - n >> 0) + 1 >> 0));
  4954. while (true) {
  4955. if (!(i < t.$length)) { break; }
  4956. if (!((((i < 0 || i >= t.$length) ? $throwRuntimeError("index out of range") : t.$array[t.$offset + i]) === c))) {
  4957. o = IndexByte($subslice(t, i), c);
  4958. if (o < 0) {
  4959. break;
  4960. }
  4961. i = i + (o) >> 0;
  4962. }
  4963. if (Equal($subslice(s, i, (i + n >> 0)), sep)) {
  4964. return i;
  4965. }
  4966. i = i + (1) >> 0;
  4967. }
  4968. return -1;
  4969. };
  4970. $pkg.Index = Index;
  4971. HasPrefix = function(s, prefix) {
  4972. var $ptr, prefix, s;
  4973. return s.$length >= prefix.$length && Equal($subslice(s, 0, prefix.$length), prefix);
  4974. };
  4975. $pkg.HasPrefix = HasPrefix;
  4976. HasSuffix = function(s, suffix) {
  4977. var $ptr, s, suffix;
  4978. return s.$length >= suffix.$length && Equal($subslice(s, (s.$length - suffix.$length >> 0)), suffix);
  4979. };
  4980. $pkg.HasSuffix = HasSuffix;
  4981. Map = function(mapping, s) {
  4982. var $ptr, _r, _tuple, b, i, mapping, maxbytes, nb, nbytes, r, rl, s, wid, $s, $r;
  4983. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tuple = $f._tuple; b = $f.b; i = $f.i; mapping = $f.mapping; maxbytes = $f.maxbytes; nb = $f.nb; nbytes = $f.nbytes; r = $f.r; rl = $f.rl; s = $f.s; wid = $f.wid; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  4984. maxbytes = s.$length;
  4985. nbytes = 0;
  4986. b = $makeSlice(sliceType, maxbytes);
  4987. i = 0;
  4988. /* while (true) { */ case 1:
  4989. /* if (!(i < s.$length)) { break; } */ if(!(i < s.$length)) { $s = 2; continue; }
  4990. wid = 1;
  4991. r = (((i < 0 || i >= s.$length) ? $throwRuntimeError("index out of range") : s.$array[s.$offset + i]) >> 0);
  4992. if (r >= 128) {
  4993. _tuple = utf8.DecodeRune($subslice(s, i)); r = _tuple[0]; wid = _tuple[1];
  4994. }
  4995. _r = mapping(r); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  4996. r = _r;
  4997. if (r >= 0) {
  4998. rl = utf8.RuneLen(r);
  4999. if (rl < 0) {
  5000. rl = 3;
  5001. }
  5002. if ((nbytes + rl >> 0) > maxbytes) {
  5003. maxbytes = (maxbytes * 2 >> 0) + 4 >> 0;
  5004. nb = $makeSlice(sliceType, maxbytes);
  5005. $copySlice(nb, $subslice(b, 0, nbytes));
  5006. b = nb;
  5007. }
  5008. nbytes = nbytes + (utf8.EncodeRune($subslice(b, nbytes, maxbytes), r)) >> 0;
  5009. }
  5010. i = i + (wid) >> 0;
  5011. /* } */ $s = 1; continue; case 2:
  5012. return $subslice(b, 0, nbytes);
  5013. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Map }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple = _tuple; $f.b = b; $f.i = i; $f.mapping = mapping; $f.maxbytes = maxbytes; $f.nb = nb; $f.nbytes = nbytes; $f.r = r; $f.rl = rl; $f.s = s; $f.wid = wid; $f.$s = $s; $f.$r = $r; return $f;
  5014. };
  5015. $pkg.Map = Map;
  5016. TrimLeftFunc = function(s, f) {
  5017. var $ptr, _r, f, i, s, $s, $r;
  5018. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; f = $f.f; i = $f.i; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  5019. _r = indexFunc(s, f, false); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  5020. i = _r;
  5021. if (i === -1) {
  5022. return sliceType.nil;
  5023. }
  5024. return $subslice(s, i);
  5025. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: TrimLeftFunc }; } $f.$ptr = $ptr; $f._r = _r; $f.f = f; $f.i = i; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
  5026. };
  5027. $pkg.TrimLeftFunc = TrimLeftFunc;
  5028. TrimRightFunc = function(s, f) {
  5029. var $ptr, _r, _tuple, f, i, s, wid, $s, $r;
  5030. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tuple = $f._tuple; f = $f.f; i = $f.i; s = $f.s; wid = $f.wid; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  5031. _r = lastIndexFunc(s, f, false); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  5032. i = _r;
  5033. if (i >= 0 && ((i < 0 || i >= s.$length) ? $throwRuntimeError("index out of range") : s.$array[s.$offset + i]) >= 128) {
  5034. _tuple = utf8.DecodeRune($subslice(s, i)); wid = _tuple[1];
  5035. i = i + (wid) >> 0;
  5036. } else {
  5037. i = i + (1) >> 0;
  5038. }
  5039. return $subslice(s, 0, i);
  5040. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: TrimRightFunc }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple = _tuple; $f.f = f; $f.i = i; $f.s = s; $f.wid = wid; $f.$s = $s; $f.$r = $r; return $f;
  5041. };
  5042. $pkg.TrimRightFunc = TrimRightFunc;
  5043. TrimFunc = function(s, f) {
  5044. var $ptr, _r, _r$1, f, s, $s, $r;
  5045. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; f = $f.f; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  5046. _r = TrimLeftFunc(s, f); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  5047. _r$1 = TrimRightFunc(_r, f); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  5048. return _r$1;
  5049. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: TrimFunc }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f.f = f; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
  5050. };
  5051. $pkg.TrimFunc = TrimFunc;
  5052. indexFunc = function(s, f, truth) {
  5053. var $ptr, _r, _tuple, f, r, s, start, truth, wid, $s, $r;
  5054. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tuple = $f._tuple; f = $f.f; r = $f.r; s = $f.s; start = $f.start; truth = $f.truth; wid = $f.wid; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  5055. start = 0;
  5056. /* while (true) { */ case 1:
  5057. /* if (!(start < s.$length)) { break; } */ if(!(start < s.$length)) { $s = 2; continue; }
  5058. wid = 1;
  5059. r = (((start < 0 || start >= s.$length) ? $throwRuntimeError("index out of range") : s.$array[s.$offset + start]) >> 0);
  5060. if (r >= 128) {
  5061. _tuple = utf8.DecodeRune($subslice(s, start)); r = _tuple[0]; wid = _tuple[1];
  5062. }
  5063. _r = f(r); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  5064. /* */ if (_r === truth) { $s = 3; continue; }
  5065. /* */ $s = 4; continue;
  5066. /* if (_r === truth) { */ case 3:
  5067. return start;
  5068. /* } */ case 4:
  5069. start = start + (wid) >> 0;
  5070. /* } */ $s = 1; continue; case 2:
  5071. return -1;
  5072. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: indexFunc }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple = _tuple; $f.f = f; $f.r = r; $f.s = s; $f.start = start; $f.truth = truth; $f.wid = wid; $f.$s = $s; $f.$r = $r; return $f;
  5073. };
  5074. lastIndexFunc = function(s, f, truth) {
  5075. var $ptr, _r, _tmp, _tmp$1, _tuple, f, i, r, s, size, truth, x, $s, $r;
  5076. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; f = $f.f; i = $f.i; r = $f.r; s = $f.s; size = $f.size; truth = $f.truth; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  5077. i = s.$length;
  5078. /* while (true) { */ case 1:
  5079. /* if (!(i > 0)) { break; } */ if(!(i > 0)) { $s = 2; continue; }
  5080. _tmp = ((x = i - 1 >> 0, ((x < 0 || x >= s.$length) ? $throwRuntimeError("index out of range") : s.$array[s.$offset + x])) >> 0); _tmp$1 = 1; r = _tmp; size = _tmp$1;
  5081. if (r >= 128) {
  5082. _tuple = utf8.DecodeLastRune($subslice(s, 0, i)); r = _tuple[0]; size = _tuple[1];
  5083. }
  5084. i = i - (size) >> 0;
  5085. _r = f(r); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  5086. /* */ if (_r === truth) { $s = 3; continue; }
  5087. /* */ $s = 4; continue;
  5088. /* if (_r === truth) { */ case 3:
  5089. return i;
  5090. /* } */ case 4:
  5091. /* } */ $s = 1; continue; case 2:
  5092. return -1;
  5093. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: lastIndexFunc }; } $f.$ptr = $ptr; $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f.f = f; $f.i = i; $f.r = r; $f.s = s; $f.size = size; $f.truth = truth; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
  5094. };
  5095. makeCutsetFunc = function(cutset) {
  5096. var $ptr, cutset;
  5097. return (function(r) {
  5098. var $ptr, _i, _ref, _rune, c, r;
  5099. _ref = cutset;
  5100. _i = 0;
  5101. while (true) {
  5102. if (!(_i < _ref.length)) { break; }
  5103. _rune = $decodeRune(_ref, _i);
  5104. c = _rune[0];
  5105. if (c === r) {
  5106. return true;
  5107. }
  5108. _i += _rune[1];
  5109. }
  5110. return false;
  5111. });
  5112. };
  5113. TrimRight = function(s, cutset) {
  5114. var $ptr, _r, cutset, s, $s, $r;
  5115. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; cutset = $f.cutset; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  5116. _r = TrimRightFunc(s, makeCutsetFunc(cutset)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  5117. return _r;
  5118. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: TrimRight }; } $f.$ptr = $ptr; $f._r = _r; $f.cutset = cutset; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
  5119. };
  5120. $pkg.TrimRight = TrimRight;
  5121. TrimSpace = function(s) {
  5122. var $ptr, _r, s, $s, $r;
  5123. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  5124. _r = TrimFunc(s, unicode.IsSpace); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  5125. return _r;
  5126. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: TrimSpace }; } $f.$ptr = $ptr; $f._r = _r; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
  5127. };
  5128. $pkg.TrimSpace = TrimSpace;
  5129. Reader.ptr.prototype.Len = function() {
  5130. var $ptr, r, x, x$1, x$2, x$3, x$4;
  5131. r = this;
  5132. if ((x = r.i, x$1 = new $Int64(0, r.s.$length), (x.$high > x$1.$high || (x.$high === x$1.$high && x.$low >= x$1.$low)))) {
  5133. return 0;
  5134. }
  5135. return ((x$2 = (x$3 = new $Int64(0, r.s.$length), x$4 = r.i, new $Int64(x$3.$high - x$4.$high, x$3.$low - x$4.$low)), x$2.$low + ((x$2.$high >> 31) * 4294967296)) >> 0);
  5136. };
  5137. Reader.prototype.Len = function() { return this.$val.Len(); };
  5138. Reader.ptr.prototype.Read = function(b) {
  5139. var $ptr, _tmp, _tmp$1, _tmp$2, _tmp$3, b, err, n, r, x, x$1, x$2, x$3;
  5140. n = 0;
  5141. err = $ifaceNil;
  5142. r = this;
  5143. if (b.$length === 0) {
  5144. _tmp = 0; _tmp$1 = $ifaceNil; n = _tmp; err = _tmp$1;
  5145. return [n, err];
  5146. }
  5147. if ((x = r.i, x$1 = new $Int64(0, r.s.$length), (x.$high > x$1.$high || (x.$high === x$1.$high && x.$low >= x$1.$low)))) {
  5148. _tmp$2 = 0; _tmp$3 = io.EOF; n = _tmp$2; err = _tmp$3;
  5149. return [n, err];
  5150. }
  5151. r.prevRune = -1;
  5152. n = $copySlice(b, $subslice(r.s, $flatten64(r.i)));
  5153. r.i = (x$2 = r.i, x$3 = new $Int64(0, n), new $Int64(x$2.$high + x$3.$high, x$2.$low + x$3.$low));
  5154. return [n, err];
  5155. };
  5156. Reader.prototype.Read = function(b) { return this.$val.Read(b); };
  5157. Reader.ptr.prototype.ReadAt = function(b, off) {
  5158. var $ptr, _tmp, _tmp$1, _tmp$2, _tmp$3, b, err, n, off, r, x;
  5159. n = 0;
  5160. err = $ifaceNil;
  5161. r = this;
  5162. if ((off.$high < 0 || (off.$high === 0 && off.$low < 0))) {
  5163. _tmp = 0; _tmp$1 = errors.New("bytes.Reader.ReadAt: negative offset"); n = _tmp; err = _tmp$1;
  5164. return [n, err];
  5165. }
  5166. if ((x = new $Int64(0, r.s.$length), (off.$high > x.$high || (off.$high === x.$high && off.$low >= x.$low)))) {
  5167. _tmp$2 = 0; _tmp$3 = io.EOF; n = _tmp$2; err = _tmp$3;
  5168. return [n, err];
  5169. }
  5170. n = $copySlice(b, $subslice(r.s, $flatten64(off)));
  5171. if (n < b.$length) {
  5172. err = io.EOF;
  5173. }
  5174. return [n, err];
  5175. };
  5176. Reader.prototype.ReadAt = function(b, off) { return this.$val.ReadAt(b, off); };
  5177. Reader.ptr.prototype.ReadByte = function() {
  5178. var $ptr, _tmp, _tmp$1, b, err, r, x, x$1, x$2, x$3, x$4, x$5;
  5179. b = 0;
  5180. err = $ifaceNil;
  5181. r = this;
  5182. r.prevRune = -1;
  5183. if ((x = r.i, x$1 = new $Int64(0, r.s.$length), (x.$high > x$1.$high || (x.$high === x$1.$high && x.$low >= x$1.$low)))) {
  5184. _tmp = 0; _tmp$1 = io.EOF; b = _tmp; err = _tmp$1;
  5185. return [b, err];
  5186. }
  5187. b = (x$2 = r.s, x$3 = r.i, (($flatten64(x$3) < 0 || $flatten64(x$3) >= x$2.$length) ? $throwRuntimeError("index out of range") : x$2.$array[x$2.$offset + $flatten64(x$3)]));
  5188. r.i = (x$4 = r.i, x$5 = new $Int64(0, 1), new $Int64(x$4.$high + x$5.$high, x$4.$low + x$5.$low));
  5189. return [b, err];
  5190. };
  5191. Reader.prototype.ReadByte = function() { return this.$val.ReadByte(); };
  5192. Reader.ptr.prototype.UnreadByte = function() {
  5193. var $ptr, r, x, x$1, x$2;
  5194. r = this;
  5195. r.prevRune = -1;
  5196. if ((x = r.i, (x.$high < 0 || (x.$high === 0 && x.$low <= 0)))) {
  5197. return errors.New("bytes.Reader.UnreadByte: at beginning of slice");
  5198. }
  5199. r.i = (x$1 = r.i, x$2 = new $Int64(0, 1), new $Int64(x$1.$high - x$2.$high, x$1.$low - x$2.$low));
  5200. return $ifaceNil;
  5201. };
  5202. Reader.prototype.UnreadByte = function() { return this.$val.UnreadByte(); };
  5203. Reader.ptr.prototype.ReadRune = function() {
  5204. var $ptr, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tuple, c, ch, err, r, size, x, x$1, x$2, x$3, x$4, x$5, x$6, x$7, x$8;
  5205. ch = 0;
  5206. size = 0;
  5207. err = $ifaceNil;
  5208. r = this;
  5209. if ((x = r.i, x$1 = new $Int64(0, r.s.$length), (x.$high > x$1.$high || (x.$high === x$1.$high && x.$low >= x$1.$low)))) {
  5210. r.prevRune = -1;
  5211. _tmp = 0; _tmp$1 = 0; _tmp$2 = io.EOF; ch = _tmp; size = _tmp$1; err = _tmp$2;
  5212. return [ch, size, err];
  5213. }
  5214. r.prevRune = ((x$2 = r.i, x$2.$low + ((x$2.$high >> 31) * 4294967296)) >> 0);
  5215. c = (x$3 = r.s, x$4 = r.i, (($flatten64(x$4) < 0 || $flatten64(x$4) >= x$3.$length) ? $throwRuntimeError("index out of range") : x$3.$array[x$3.$offset + $flatten64(x$4)]));
  5216. if (c < 128) {
  5217. r.i = (x$5 = r.i, x$6 = new $Int64(0, 1), new $Int64(x$5.$high + x$6.$high, x$5.$low + x$6.$low));
  5218. _tmp$3 = (c >> 0); _tmp$4 = 1; _tmp$5 = $ifaceNil; ch = _tmp$3; size = _tmp$4; err = _tmp$5;
  5219. return [ch, size, err];
  5220. }
  5221. _tuple = utf8.DecodeRune($subslice(r.s, $flatten64(r.i))); ch = _tuple[0]; size = _tuple[1];
  5222. r.i = (x$7 = r.i, x$8 = new $Int64(0, size), new $Int64(x$7.$high + x$8.$high, x$7.$low + x$8.$low));
  5223. return [ch, size, err];
  5224. };
  5225. Reader.prototype.ReadRune = function() { return this.$val.ReadRune(); };
  5226. Reader.ptr.prototype.UnreadRune = function() {
  5227. var $ptr, r;
  5228. r = this;
  5229. if (r.prevRune < 0) {
  5230. return errors.New("bytes.Reader.UnreadRune: previous operation was not ReadRune");
  5231. }
  5232. r.i = new $Int64(0, r.prevRune);
  5233. r.prevRune = -1;
  5234. return $ifaceNil;
  5235. };
  5236. Reader.prototype.UnreadRune = function() { return this.$val.UnreadRune(); };
  5237. Reader.ptr.prototype.Seek = function(offset, whence) {
  5238. var $ptr, _ref, abs, offset, r, whence, x, x$1;
  5239. r = this;
  5240. r.prevRune = -1;
  5241. abs = new $Int64(0, 0);
  5242. _ref = whence;
  5243. if (_ref === 0) {
  5244. abs = offset;
  5245. } else if (_ref === 1) {
  5246. abs = (x = r.i, new $Int64(x.$high + offset.$high, x.$low + offset.$low));
  5247. } else if (_ref === 2) {
  5248. abs = (x$1 = new $Int64(0, r.s.$length), new $Int64(x$1.$high + offset.$high, x$1.$low + offset.$low));
  5249. } else {
  5250. return [new $Int64(0, 0), errors.New("bytes.Reader.Seek: invalid whence")];
  5251. }
  5252. if ((abs.$high < 0 || (abs.$high === 0 && abs.$low < 0))) {
  5253. return [new $Int64(0, 0), errors.New("bytes.Reader.Seek: negative position")];
  5254. }
  5255. r.i = abs;
  5256. return [abs, $ifaceNil];
  5257. };
  5258. Reader.prototype.Seek = function(offset, whence) { return this.$val.Seek(offset, whence); };
  5259. Reader.ptr.prototype.WriteTo = function(w) {
  5260. var $ptr, _r, _tmp, _tmp$1, _tuple, b, err, m, n, r, w, x, x$1, x$2, x$3, $s, $r;
  5261. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; b = $f.b; err = $f.err; m = $f.m; n = $f.n; r = $f.r; w = $f.w; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; x$3 = $f.x$3; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  5262. n = new $Int64(0, 0);
  5263. err = $ifaceNil;
  5264. r = this;
  5265. r.prevRune = -1;
  5266. if ((x = r.i, x$1 = new $Int64(0, r.s.$length), (x.$high > x$1.$high || (x.$high === x$1.$high && x.$low >= x$1.$low)))) {
  5267. _tmp = new $Int64(0, 0); _tmp$1 = $ifaceNil; n = _tmp; err = _tmp$1;
  5268. return [n, err];
  5269. }
  5270. b = $subslice(r.s, $flatten64(r.i));
  5271. _r = w.Write(b); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  5272. _tuple = _r; m = _tuple[0]; err = _tuple[1];
  5273. if (m > b.$length) {
  5274. $panic(new $String("bytes.Reader.WriteTo: invalid Write count"));
  5275. }
  5276. r.i = (x$2 = r.i, x$3 = new $Int64(0, m), new $Int64(x$2.$high + x$3.$high, x$2.$low + x$3.$low));
  5277. n = new $Int64(0, m);
  5278. if (!((m === b.$length)) && $interfaceIsEqual(err, $ifaceNil)) {
  5279. err = io.ErrShortWrite;
  5280. }
  5281. return [n, err];
  5282. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Reader.ptr.prototype.WriteTo }; } $f.$ptr = $ptr; $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f.b = b; $f.err = err; $f.m = m; $f.n = n; $f.r = r; $f.w = w; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.x$3 = x$3; $f.$s = $s; $f.$r = $r; return $f;
  5283. };
  5284. Reader.prototype.WriteTo = function(w) { return this.$val.WriteTo(w); };
  5285. NewReader = function(b) {
  5286. var $ptr, b;
  5287. return new Reader.ptr(b, new $Int64(0, 0), -1);
  5288. };
  5289. $pkg.NewReader = NewReader;
  5290. ptrType.methods = [{prop: "Bytes", name: "Bytes", pkg: "", typ: $funcType([], [sliceType], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Len", name: "Len", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Truncate", name: "Truncate", pkg: "", typ: $funcType([$Int], [], false)}, {prop: "Reset", name: "Reset", pkg: "", typ: $funcType([], [], false)}, {prop: "grow", name: "grow", pkg: "bytes", typ: $funcType([$Int], [$Int], false)}, {prop: "Grow", name: "Grow", pkg: "", typ: $funcType([$Int], [], false)}, {prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType], [$Int, $error], false)}, {prop: "WriteString", name: "WriteString", pkg: "", typ: $funcType([$String], [$Int, $error], false)}, {prop: "ReadFrom", name: "ReadFrom", pkg: "", typ: $funcType([io.Reader], [$Int64, $error], false)}, {prop: "WriteTo", name: "WriteTo", pkg: "", typ: $funcType([io.Writer], [$Int64, $error], false)}, {prop: "WriteByte", name: "WriteByte", pkg: "", typ: $funcType([$Uint8], [$error], false)}, {prop: "WriteRune", name: "WriteRune", pkg: "", typ: $funcType([$Int32], [$Int, $error], false)}, {prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType], [$Int, $error], false)}, {prop: "Next", name: "Next", pkg: "", typ: $funcType([$Int], [sliceType], false)}, {prop: "ReadByte", name: "ReadByte", pkg: "", typ: $funcType([], [$Uint8, $error], false)}, {prop: "ReadRune", name: "ReadRune", pkg: "", typ: $funcType([], [$Int32, $Int, $error], false)}, {prop: "UnreadRune", name: "UnreadRune", pkg: "", typ: $funcType([], [$error], false)}, {prop: "UnreadByte", name: "UnreadByte", pkg: "", typ: $funcType([], [$error], false)}, {prop: "ReadBytes", name: "ReadBytes", pkg: "", typ: $funcType([$Uint8], [sliceType, $error], false)}, {prop: "readSlice", name: "readSlice", pkg: "bytes", typ: $funcType([$Uint8], [sliceType, $error], false)}, {prop: "ReadString", name: "ReadString", pkg: "", typ: $funcType([$Uint8], [$String, $error], false)}];
  5291. ptrType$1.methods = [{prop: "Len", name: "Len", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType], [$Int, $error], false)}, {prop: "ReadAt", name: "ReadAt", pkg: "", typ: $funcType([sliceType, $Int64], [$Int, $error], false)}, {prop: "ReadByte", name: "ReadByte", pkg: "", typ: $funcType([], [$Uint8, $error], false)}, {prop: "UnreadByte", name: "UnreadByte", pkg: "", typ: $funcType([], [$error], false)}, {prop: "ReadRune", name: "ReadRune", pkg: "", typ: $funcType([], [$Int32, $Int, $error], false)}, {prop: "UnreadRune", name: "UnreadRune", pkg: "", typ: $funcType([], [$error], false)}, {prop: "Seek", name: "Seek", pkg: "", typ: $funcType([$Int64, $Int], [$Int64, $error], false)}, {prop: "WriteTo", name: "WriteTo", pkg: "", typ: $funcType([io.Writer], [$Int64, $error], false)}];
  5292. Buffer.init([{prop: "buf", name: "buf", pkg: "bytes", typ: sliceType, tag: ""}, {prop: "off", name: "off", pkg: "bytes", typ: $Int, tag: ""}, {prop: "runeBytes", name: "runeBytes", pkg: "bytes", typ: arrayType, tag: ""}, {prop: "bootstrap", name: "bootstrap", pkg: "bytes", typ: arrayType$1, tag: ""}, {prop: "lastRead", name: "lastRead", pkg: "bytes", typ: readOp, tag: ""}]);
  5293. Reader.init([{prop: "s", name: "s", pkg: "bytes", typ: sliceType, tag: ""}, {prop: "i", name: "i", pkg: "bytes", typ: $Int64, tag: ""}, {prop: "prevRune", name: "prevRune", pkg: "bytes", typ: $Int, tag: ""}]);
  5294. $init = function() {
  5295. $pkg.$init = function() {};
  5296. /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  5297. $r = errors.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  5298. $r = io.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  5299. $r = unicode.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  5300. $r = utf8.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  5301. $pkg.ErrTooLarge = errors.New("bytes.Buffer: too large");
  5302. /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
  5303. };
  5304. $pkg.$init = $init;
  5305. return $pkg;
  5306. })();
  5307. $packages["unicode/utf16"] = (function() {
  5308. var $pkg = {}, $init, sliceType, sliceType$1, IsSurrogate, DecodeRune, EncodeRune, Encode, Decode;
  5309. sliceType = $sliceType($Uint16);
  5310. sliceType$1 = $sliceType($Int32);
  5311. IsSurrogate = function(r) {
  5312. var $ptr, r;
  5313. return 55296 <= r && r < 57344;
  5314. };
  5315. $pkg.IsSurrogate = IsSurrogate;
  5316. DecodeRune = function(r1, r2) {
  5317. var $ptr, r1, r2;
  5318. if (55296 <= r1 && r1 < 56320 && 56320 <= r2 && r2 < 57344) {
  5319. return ((((r1 - 55296 >> 0)) << 10 >> 0) | ((r2 - 56320 >> 0))) + 65536 >> 0;
  5320. }
  5321. return 65533;
  5322. };
  5323. $pkg.DecodeRune = DecodeRune;
  5324. EncodeRune = function(r) {
  5325. var $ptr, _tmp, _tmp$1, _tmp$2, _tmp$3, r, r1, r2;
  5326. r1 = 0;
  5327. r2 = 0;
  5328. if (r < 65536 || r > 1114111 || IsSurrogate(r)) {
  5329. _tmp = 65533; _tmp$1 = 65533; r1 = _tmp; r2 = _tmp$1;
  5330. return [r1, r2];
  5331. }
  5332. r = r - (65536) >> 0;
  5333. _tmp$2 = 55296 + (((r >> 10 >> 0)) & 1023) >> 0; _tmp$3 = 56320 + (r & 1023) >> 0; r1 = _tmp$2; r2 = _tmp$3;
  5334. return [r1, r2];
  5335. };
  5336. $pkg.EncodeRune = EncodeRune;
  5337. Encode = function(s) {
  5338. var $ptr, _i, _i$1, _ref, _ref$1, _tuple, a, n, r1, r2, s, v, v$1, x;
  5339. n = s.$length;
  5340. _ref = s;
  5341. _i = 0;
  5342. while (true) {
  5343. if (!(_i < _ref.$length)) { break; }
  5344. v = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]);
  5345. if (v >= 65536) {
  5346. n = n + (1) >> 0;
  5347. }
  5348. _i++;
  5349. }
  5350. a = $makeSlice(sliceType, n);
  5351. n = 0;
  5352. _ref$1 = s;
  5353. _i$1 = 0;
  5354. while (true) {
  5355. if (!(_i$1 < _ref$1.$length)) { break; }
  5356. v$1 = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? $throwRuntimeError("index out of range") : _ref$1.$array[_ref$1.$offset + _i$1]);
  5357. if (v$1 < 0 || 55296 <= v$1 && v$1 < 57344 || v$1 > 1114111) {
  5358. v$1 = 65533;
  5359. ((n < 0 || n >= a.$length) ? $throwRuntimeError("index out of range") : a.$array[a.$offset + n] = (v$1 << 16 >>> 16));
  5360. n = n + (1) >> 0;
  5361. } else if (v$1 < 65536) {
  5362. ((n < 0 || n >= a.$length) ? $throwRuntimeError("index out of range") : a.$array[a.$offset + n] = (v$1 << 16 >>> 16));
  5363. n = n + (1) >> 0;
  5364. } else {
  5365. _tuple = EncodeRune(v$1); r1 = _tuple[0]; r2 = _tuple[1];
  5366. ((n < 0 || n >= a.$length) ? $throwRuntimeError("index out of range") : a.$array[a.$offset + n] = (r1 << 16 >>> 16));
  5367. (x = n + 1 >> 0, ((x < 0 || x >= a.$length) ? $throwRuntimeError("index out of range") : a.$array[a.$offset + x] = (r2 << 16 >>> 16)));
  5368. n = n + (2) >> 0;
  5369. }
  5370. _i$1++;
  5371. }
  5372. return $subslice(a, 0, n);
  5373. };
  5374. $pkg.Encode = Encode;
  5375. Decode = function(s) {
  5376. var $ptr, a, i, n, r, s, x, x$1, x$2;
  5377. a = $makeSlice(sliceType$1, s.$length);
  5378. n = 0;
  5379. i = 0;
  5380. while (true) {
  5381. if (!(i < s.$length)) { break; }
  5382. r = ((i < 0 || i >= s.$length) ? $throwRuntimeError("index out of range") : s.$array[s.$offset + i]);
  5383. if (55296 <= r && r < 56320 && (i + 1 >> 0) < s.$length && 56320 <= (x = i + 1 >> 0, ((x < 0 || x >= s.$length) ? $throwRuntimeError("index out of range") : s.$array[s.$offset + x])) && (x$1 = i + 1 >> 0, ((x$1 < 0 || x$1 >= s.$length) ? $throwRuntimeError("index out of range") : s.$array[s.$offset + x$1])) < 57344) {
  5384. ((n < 0 || n >= a.$length) ? $throwRuntimeError("index out of range") : a.$array[a.$offset + n] = DecodeRune((r >> 0), ((x$2 = i + 1 >> 0, ((x$2 < 0 || x$2 >= s.$length) ? $throwRuntimeError("index out of range") : s.$array[s.$offset + x$2])) >> 0)));
  5385. i = i + (1) >> 0;
  5386. n = n + (1) >> 0;
  5387. } else if (55296 <= r && r < 57344) {
  5388. ((n < 0 || n >= a.$length) ? $throwRuntimeError("index out of range") : a.$array[a.$offset + n] = 65533);
  5389. n = n + (1) >> 0;
  5390. } else {
  5391. ((n < 0 || n >= a.$length) ? $throwRuntimeError("index out of range") : a.$array[a.$offset + n] = (r >> 0));
  5392. n = n + (1) >> 0;
  5393. }
  5394. i = i + (1) >> 0;
  5395. }
  5396. return $subslice(a, 0, n);
  5397. };
  5398. $pkg.Decode = Decode;
  5399. $init = function() {
  5400. $pkg.$init = function() {};
  5401. /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  5402. /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
  5403. };
  5404. $pkg.$init = $init;
  5405. return $pkg;
  5406. })();
  5407. $packages["syscall"] = (function() {
  5408. var $pkg = {}, $init, bytes, errors, js, sync, atomic, utf16, DummyError, DLLError, DLL, Proc, LazyDLL, LazyProc, Handle, Errno, RawSockaddrInet4, RawSockaddrInet6, RawSockaddr, RawSockaddrAny, Sockaddr, SockaddrInet4, SockaddrInet6, SockaddrUnix, Linger, sysLinger, SecurityAttributes, Overlapped, Filetime, Win32finddata, win32finddata1, ByHandleFileInformation, Win32FileAttributeData, WSABuf, TransmitFileBuffers, SockaddrGen, InterfaceInfo, IpAddressString, IpMaskString, IpAddrString, IpAdapterInfo, MibIfRow, CertContext, CertChainContext, CertSimpleChain, CertChainElement, CertRevocationInfo, CertTrustStatus, CertUsageMatch, CertEnhKeyUsage, CertChainPara, CertChainPolicyPara, SSLExtraCertChainPolicyPara, CertChainPolicyStatus, TCPKeepalive, reparseDataBuffer, sliceType, ptrType, arrayType, ptrType$1, arrayType$1, ptrType$2, ptrType$3, ptrType$4, ptrType$5, sliceType$2, sliceType$3, ptrType$6, ptrType$10, ptrType$11, ptrType$15, arrayType$2, ptrType$18, ptrType$19, ptrType$20, arrayType$3, ptrType$23, ptrType$27, sliceType$6, ptrType$28, arrayType$4, arrayType$5, arrayType$6, arrayType$7, ptrType$29, ptrType$30, ptrType$31, ptrType$32, arrayType$8, arrayType$9, arrayType$10, arrayType$11, ptrType$35, ptrType$37, ptrType$38, arrayType$15, arrayType$16, arrayType$17, arrayType$18, ptrType$39, ptrType$40, ptrType$41, ptrType$42, ptrType$43, ptrType$44, ptrType$45, ptrType$46, arrayType$20, warningPrinted, lineBuffer, minusOne, errors$1, modkernel32, modadvapi32, modshell32, modmswsock, modcrypt32, modws2_32, moddnsapi, modiphlpapi, modsecur32, modnetapi32, moduserenv, procGetLastError, procLoadLibraryW, procFreeLibrary, procGetProcAddress, procGetVersion, procFormatMessageW, procExitProcess, procCreateFileW, procReadFile, procWriteFile, procSetFilePointer, procCloseHandle, procGetStdHandle, procFindFirstFileW, procFindNextFileW, procFindClose, procGetFileInformationByHandle, procGetCurrentDirectoryW, procSetCurrentDirectoryW, procCreateDirectoryW, procRemoveDirectoryW, procDeleteFileW, procMoveFileW, procGetComputerNameW, procSetEndOfFile, procGetSystemTimeAsFileTime, procGetTimeZoneInformation, procCreateIoCompletionPort, procGetQueuedCompletionStatus, procPostQueuedCompletionStatus, procCancelIo, procCancelIoEx, procCreateProcessW, procOpenProcess, procTerminateProcess, procGetExitCodeProcess, procGetStartupInfoW, procGetCurrentProcess, procGetProcessTimes, procDuplicateHandle, procWaitForSingleObject, procGetTempPathW, procCreatePipe, procGetFileType, procCryptAcquireContextW, procCryptReleaseContext, procCryptGenRandom, procGetEnvironmentStringsW, procFreeEnvironmentStringsW, procGetEnvironmentVariableW, procSetEnvironmentVariableW, procSetFileTime, procGetFileAttributesW, procSetFileAttributesW, procGetFileAttributesExW, procGetCommandLineW, procCommandLineToArgvW, procLocalFree, procSetHandleInformation, procFlushFileBuffers, procGetFullPathNameW, procGetLongPathNameW, procGetShortPathNameW, procCreateFileMappingW, procMapViewOfFile, procUnmapViewOfFile, procFlushViewOfFile, procVirtualLock, procVirtualUnlock, procTransmitFile, procReadDirectoryChangesW, procCertOpenSystemStoreW, procCertOpenStore, procCertEnumCertificatesInStore, procCertAddCertificateContextToStore, procCertCloseStore, procCertGetCertificateChain, procCertFreeCertificateChain, procCertCreateCertificateContext, procCertFreeCertificateContext, procCertVerifyCertificateChainPolicy, procRegOpenKeyExW, procRegCloseKey, procRegQueryInfoKeyW, procRegEnumKeyExW, procRegQueryValueExW, procGetCurrentProcessId, procGetConsoleMode, procWriteConsoleW, procReadConsoleW, procCreateToolhelp32Snapshot, procProcess32FirstW, procProcess32NextW, procDeviceIoControl, procCreateSymbolicLinkW, procCreateHardLinkW, procWSAStartup, procWSACleanup, procWSAIoctl, procsocket, procsetsockopt, procgetsockopt, procbind, procconnect, procgetsockname, procgetpeername, proclisten, procshutdown, procclosesocket, procAcceptEx, procGetAcceptExSockaddrs, procWSARecv, procWSASend, procWSARecvFrom, procWSASendTo, procgethostbyname, procgetservbyname, procntohs, procgetprotobyname, procDnsQuery_W, procDnsRecordListFree, procDnsNameCompare_W, procGetAddrInfoW, procFreeAddrInfoW, procGetIfEntry, procGetAdaptersInfo, procSetFileCompletionNotificationModes, procWSAEnumProtocolsW, procTranslateNameW, procGetUserNameExW, procNetUserGetInfo, procNetGetJoinInformation, procNetApiBufferFree, procLookupAccountSidW, procLookupAccountNameW, procConvertSidToStringSidW, procConvertStringSidToSidW, procGetLengthSid, procCopySid, procOpenProcessToken, procGetTokenInformation, procGetUserProfileDirectoryW, init, printWarning, printToConsole, use, Syscall, Syscall6, Syscall9, Syscall12, Syscall15, getprocaddress, getStdHandle, GetConsoleMode, WriteFile, GetCommandLine, CommandLineToArgv, Getenv, NewLazyDLL, CloseOnExec, FullPath, itoa, uitoa, ByteSliceFromString, BytePtrFromString, StringToUTF16, UTF16FromString, UTF16ToString, StringToUTF16Ptr, UTF16PtrFromString, langid, Exit, makeInheritSa, Open, Read, Write, Seek, Ftruncate, Fsync, Socket, SetsockoptInt, Shutdown, SetsockoptLinger, Getpid, FindFirstFile, FindNextFile, Fchdir, Fchmod, Fchown, Readlink, FreeLibrary, FormatMessage, ExitProcess, CreateFile, ReadFile, SetFilePointer, CloseHandle, findFirstFile1, findNextFile1, FindClose, GetFileInformationByHandle, RemoveDirectory, DeleteFile, SetEndOfFile, CancelIo, CancelIoEx, GetTempPath, GetFileType, CryptAcquireContext, CryptGenRandom, GetFileAttributes, GetFileAttributesEx, LocalFree, SetHandleInformation, FlushFileBuffers, GetFullPathName, TransmitFile, CertOpenStore, CertAddCertificateContextToStore, CertCloseStore, CertGetCertificateChain, CertFreeCertificateChain, CertCreateCertificateContext, CertFreeCertificateContext, CertVerifyCertificateChainPolicy, getCurrentProcessId, WriteConsole, ReadConsole, DeviceIoControl, WSAIoctl, socket, Setsockopt, shutdown, Closesocket, AcceptEx, GetAcceptExSockaddrs, WSARecv, WSASend, GetIfEntry, GetAdaptersInfo, SetFileCompletionNotificationModes, NsecToFiletime, copyFindData;
  5409. bytes = $packages["bytes"];
  5410. errors = $packages["errors"];
  5411. js = $packages["github.com/gopherjs/gopherjs/js"];
  5412. sync = $packages["sync"];
  5413. atomic = $packages["sync/atomic"];
  5414. utf16 = $packages["unicode/utf16"];
  5415. DummyError = $pkg.DummyError = $newType(0, $kindStruct, "syscall.DummyError", "DummyError", "syscall", function() {
  5416. this.$val = this;
  5417. if (arguments.length === 0) {
  5418. return;
  5419. }
  5420. });
  5421. DLLError = $pkg.DLLError = $newType(0, $kindStruct, "syscall.DLLError", "DLLError", "syscall", function(Err_, ObjName_, Msg_) {
  5422. this.$val = this;
  5423. if (arguments.length === 0) {
  5424. this.Err = $ifaceNil;
  5425. this.ObjName = "";
  5426. this.Msg = "";
  5427. return;
  5428. }
  5429. this.Err = Err_;
  5430. this.ObjName = ObjName_;
  5431. this.Msg = Msg_;
  5432. });
  5433. DLL = $pkg.DLL = $newType(0, $kindStruct, "syscall.DLL", "DLL", "syscall", function(Name_, Handle_) {
  5434. this.$val = this;
  5435. if (arguments.length === 0) {
  5436. this.Name = "";
  5437. this.Handle = 0;
  5438. return;
  5439. }
  5440. this.Name = Name_;
  5441. this.Handle = Handle_;
  5442. });
  5443. Proc = $pkg.Proc = $newType(0, $kindStruct, "syscall.Proc", "Proc", "syscall", function(Dll_, Name_, addr_) {
  5444. this.$val = this;
  5445. if (arguments.length === 0) {
  5446. this.Dll = ptrType$3.nil;
  5447. this.Name = "";
  5448. this.addr = 0;
  5449. return;
  5450. }
  5451. this.Dll = Dll_;
  5452. this.Name = Name_;
  5453. this.addr = addr_;
  5454. });
  5455. LazyDLL = $pkg.LazyDLL = $newType(0, $kindStruct, "syscall.LazyDLL", "LazyDLL", "syscall", function(mu_, dll_, Name_) {
  5456. this.$val = this;
  5457. if (arguments.length === 0) {
  5458. this.mu = new sync.Mutex.ptr();
  5459. this.dll = ptrType$3.nil;
  5460. this.Name = "";
  5461. return;
  5462. }
  5463. this.mu = mu_;
  5464. this.dll = dll_;
  5465. this.Name = Name_;
  5466. });
  5467. LazyProc = $pkg.LazyProc = $newType(0, $kindStruct, "syscall.LazyProc", "LazyProc", "syscall", function(mu_, Name_, l_, proc_) {
  5468. this.$val = this;
  5469. if (arguments.length === 0) {
  5470. this.mu = new sync.Mutex.ptr();
  5471. this.Name = "";
  5472. this.l = ptrType$5.nil;
  5473. this.proc = ptrType$4.nil;
  5474. return;
  5475. }
  5476. this.mu = mu_;
  5477. this.Name = Name_;
  5478. this.l = l_;
  5479. this.proc = proc_;
  5480. });
  5481. Handle = $pkg.Handle = $newType(4, $kindUintptr, "syscall.Handle", "Handle", "syscall", null);
  5482. Errno = $pkg.Errno = $newType(4, $kindUintptr, "syscall.Errno", "Errno", "syscall", null);
  5483. RawSockaddrInet4 = $pkg.RawSockaddrInet4 = $newType(0, $kindStruct, "syscall.RawSockaddrInet4", "RawSockaddrInet4", "syscall", function(Family_, Port_, Addr_, Zero_) {
  5484. this.$val = this;
  5485. if (arguments.length === 0) {
  5486. this.Family = 0;
  5487. this.Port = 0;
  5488. this.Addr = arrayType$3.zero();
  5489. this.Zero = arrayType$4.zero();
  5490. return;
  5491. }
  5492. this.Family = Family_;
  5493. this.Port = Port_;
  5494. this.Addr = Addr_;
  5495. this.Zero = Zero_;
  5496. });
  5497. RawSockaddrInet6 = $pkg.RawSockaddrInet6 = $newType(0, $kindStruct, "syscall.RawSockaddrInet6", "RawSockaddrInet6", "syscall", function(Family_, Port_, Flowinfo_, Addr_, Scope_id_) {
  5498. this.$val = this;
  5499. if (arguments.length === 0) {
  5500. this.Family = 0;
  5501. this.Port = 0;
  5502. this.Flowinfo = 0;
  5503. this.Addr = arrayType$5.zero();
  5504. this.Scope_id = 0;
  5505. return;
  5506. }
  5507. this.Family = Family_;
  5508. this.Port = Port_;
  5509. this.Flowinfo = Flowinfo_;
  5510. this.Addr = Addr_;
  5511. this.Scope_id = Scope_id_;
  5512. });
  5513. RawSockaddr = $pkg.RawSockaddr = $newType(0, $kindStruct, "syscall.RawSockaddr", "RawSockaddr", "syscall", function(Family_, Data_) {
  5514. this.$val = this;
  5515. if (arguments.length === 0) {
  5516. this.Family = 0;
  5517. this.Data = arrayType$6.zero();
  5518. return;
  5519. }
  5520. this.Family = Family_;
  5521. this.Data = Data_;
  5522. });
  5523. RawSockaddrAny = $pkg.RawSockaddrAny = $newType(0, $kindStruct, "syscall.RawSockaddrAny", "RawSockaddrAny", "syscall", function(Addr_, Pad_) {
  5524. this.$val = this;
  5525. if (arguments.length === 0) {
  5526. this.Addr = new RawSockaddr.ptr();
  5527. this.Pad = arrayType$7.zero();
  5528. return;
  5529. }
  5530. this.Addr = Addr_;
  5531. this.Pad = Pad_;
  5532. });
  5533. Sockaddr = $pkg.Sockaddr = $newType(8, $kindInterface, "syscall.Sockaddr", "Sockaddr", "syscall", null);
  5534. SockaddrInet4 = $pkg.SockaddrInet4 = $newType(0, $kindStruct, "syscall.SockaddrInet4", "SockaddrInet4", "syscall", function(Port_, Addr_, raw_) {
  5535. this.$val = this;
  5536. if (arguments.length === 0) {
  5537. this.Port = 0;
  5538. this.Addr = arrayType$3.zero();
  5539. this.raw = new RawSockaddrInet4.ptr();
  5540. return;
  5541. }
  5542. this.Port = Port_;
  5543. this.Addr = Addr_;
  5544. this.raw = raw_;
  5545. });
  5546. SockaddrInet6 = $pkg.SockaddrInet6 = $newType(0, $kindStruct, "syscall.SockaddrInet6", "SockaddrInet6", "syscall", function(Port_, ZoneId_, Addr_, raw_) {
  5547. this.$val = this;
  5548. if (arguments.length === 0) {
  5549. this.Port = 0;
  5550. this.ZoneId = 0;
  5551. this.Addr = arrayType$5.zero();
  5552. this.raw = new RawSockaddrInet6.ptr();
  5553. return;
  5554. }
  5555. this.Port = Port_;
  5556. this.ZoneId = ZoneId_;
  5557. this.Addr = Addr_;
  5558. this.raw = raw_;
  5559. });
  5560. SockaddrUnix = $pkg.SockaddrUnix = $newType(0, $kindStruct, "syscall.SockaddrUnix", "SockaddrUnix", "syscall", function(Name_) {
  5561. this.$val = this;
  5562. if (arguments.length === 0) {
  5563. this.Name = "";
  5564. return;
  5565. }
  5566. this.Name = Name_;
  5567. });
  5568. Linger = $pkg.Linger = $newType(0, $kindStruct, "syscall.Linger", "Linger", "syscall", function(Onoff_, Linger_) {
  5569. this.$val = this;
  5570. if (arguments.length === 0) {
  5571. this.Onoff = 0;
  5572. this.Linger = 0;
  5573. return;
  5574. }
  5575. this.Onoff = Onoff_;
  5576. this.Linger = Linger_;
  5577. });
  5578. sysLinger = $pkg.sysLinger = $newType(0, $kindStruct, "syscall.sysLinger", "sysLinger", "syscall", function(Onoff_, Linger_) {
  5579. this.$val = this;
  5580. if (arguments.length === 0) {
  5581. this.Onoff = 0;
  5582. this.Linger = 0;
  5583. return;
  5584. }
  5585. this.Onoff = Onoff_;
  5586. this.Linger = Linger_;
  5587. });
  5588. SecurityAttributes = $pkg.SecurityAttributes = $newType(0, $kindStruct, "syscall.SecurityAttributes", "SecurityAttributes", "syscall", function(Length_, SecurityDescriptor_, InheritHandle_) {
  5589. this.$val = this;
  5590. if (arguments.length === 0) {
  5591. this.Length = 0;
  5592. this.SecurityDescriptor = 0;
  5593. this.InheritHandle = 0;
  5594. return;
  5595. }
  5596. this.Length = Length_;
  5597. this.SecurityDescriptor = SecurityDescriptor_;
  5598. this.InheritHandle = InheritHandle_;
  5599. });
  5600. Overlapped = $pkg.Overlapped = $newType(0, $kindStruct, "syscall.Overlapped", "Overlapped", "syscall", function(Internal_, InternalHigh_, Offset_, OffsetHigh_, HEvent_) {
  5601. this.$val = this;
  5602. if (arguments.length === 0) {
  5603. this.Internal = 0;
  5604. this.InternalHigh = 0;
  5605. this.Offset = 0;
  5606. this.OffsetHigh = 0;
  5607. this.HEvent = 0;
  5608. return;
  5609. }
  5610. this.Internal = Internal_;
  5611. this.InternalHigh = InternalHigh_;
  5612. this.Offset = Offset_;
  5613. this.OffsetHigh = OffsetHigh_;
  5614. this.HEvent = HEvent_;
  5615. });
  5616. Filetime = $pkg.Filetime = $newType(0, $kindStruct, "syscall.Filetime", "Filetime", "syscall", function(LowDateTime_, HighDateTime_) {
  5617. this.$val = this;
  5618. if (arguments.length === 0) {
  5619. this.LowDateTime = 0;
  5620. this.HighDateTime = 0;
  5621. return;
  5622. }
  5623. this.LowDateTime = LowDateTime_;
  5624. this.HighDateTime = HighDateTime_;
  5625. });
  5626. Win32finddata = $pkg.Win32finddata = $newType(0, $kindStruct, "syscall.Win32finddata", "Win32finddata", "syscall", function(FileAttributes_, CreationTime_, LastAccessTime_, LastWriteTime_, FileSizeHigh_, FileSizeLow_, Reserved0_, Reserved1_, FileName_, AlternateFileName_) {
  5627. this.$val = this;
  5628. if (arguments.length === 0) {
  5629. this.FileAttributes = 0;
  5630. this.CreationTime = new Filetime.ptr();
  5631. this.LastAccessTime = new Filetime.ptr();
  5632. this.LastWriteTime = new Filetime.ptr();
  5633. this.FileSizeHigh = 0;
  5634. this.FileSizeLow = 0;
  5635. this.Reserved0 = 0;
  5636. this.Reserved1 = 0;
  5637. this.FileName = arrayType$8.zero();
  5638. this.AlternateFileName = arrayType$9.zero();
  5639. return;
  5640. }
  5641. this.FileAttributes = FileAttributes_;
  5642. this.CreationTime = CreationTime_;
  5643. this.LastAccessTime = LastAccessTime_;
  5644. this.LastWriteTime = LastWriteTime_;
  5645. this.FileSizeHigh = FileSizeHigh_;
  5646. this.FileSizeLow = FileSizeLow_;
  5647. this.Reserved0 = Reserved0_;
  5648. this.Reserved1 = Reserved1_;
  5649. this.FileName = FileName_;
  5650. this.AlternateFileName = AlternateFileName_;
  5651. });
  5652. win32finddata1 = $pkg.win32finddata1 = $newType(0, $kindStruct, "syscall.win32finddata1", "win32finddata1", "syscall", function(FileAttributes_, CreationTime_, LastAccessTime_, LastWriteTime_, FileSizeHigh_, FileSizeLow_, Reserved0_, Reserved1_, FileName_, AlternateFileName_) {
  5653. this.$val = this;
  5654. if (arguments.length === 0) {
  5655. this.FileAttributes = 0;
  5656. this.CreationTime = new Filetime.ptr();
  5657. this.LastAccessTime = new Filetime.ptr();
  5658. this.LastWriteTime = new Filetime.ptr();
  5659. this.FileSizeHigh = 0;
  5660. this.FileSizeLow = 0;
  5661. this.Reserved0 = 0;
  5662. this.Reserved1 = 0;
  5663. this.FileName = arrayType$10.zero();
  5664. this.AlternateFileName = arrayType$11.zero();
  5665. return;
  5666. }
  5667. this.FileAttributes = FileAttributes_;
  5668. this.CreationTime = CreationTime_;
  5669. this.LastAccessTime = LastAccessTime_;
  5670. this.LastWriteTime = LastWriteTime_;
  5671. this.FileSizeHigh = FileSizeHigh_;
  5672. this.FileSizeLow = FileSizeLow_;
  5673. this.Reserved0 = Reserved0_;
  5674. this.Reserved1 = Reserved1_;
  5675. this.FileName = FileName_;
  5676. this.AlternateFileName = AlternateFileName_;
  5677. });
  5678. ByHandleFileInformation = $pkg.ByHandleFileInformation = $newType(0, $kindStruct, "syscall.ByHandleFileInformation", "ByHandleFileInformation", "syscall", function(FileAttributes_, CreationTime_, LastAccessTime_, LastWriteTime_, VolumeSerialNumber_, FileSizeHigh_, FileSizeLow_, NumberOfLinks_, FileIndexHigh_, FileIndexLow_) {
  5679. this.$val = this;
  5680. if (arguments.length === 0) {
  5681. this.FileAttributes = 0;
  5682. this.CreationTime = new Filetime.ptr();
  5683. this.LastAccessTime = new Filetime.ptr();
  5684. this.LastWriteTime = new Filetime.ptr();
  5685. this.VolumeSerialNumber = 0;
  5686. this.FileSizeHigh = 0;
  5687. this.FileSizeLow = 0;
  5688. this.NumberOfLinks = 0;
  5689. this.FileIndexHigh = 0;
  5690. this.FileIndexLow = 0;
  5691. return;
  5692. }
  5693. this.FileAttributes = FileAttributes_;
  5694. this.CreationTime = CreationTime_;
  5695. this.LastAccessTime = LastAccessTime_;
  5696. this.LastWriteTime = LastWriteTime_;
  5697. this.VolumeSerialNumber = VolumeSerialNumber_;
  5698. this.FileSizeHigh = FileSizeHigh_;
  5699. this.FileSizeLow = FileSizeLow_;
  5700. this.NumberOfLinks = NumberOfLinks_;
  5701. this.FileIndexHigh = FileIndexHigh_;
  5702. this.FileIndexLow = FileIndexLow_;
  5703. });
  5704. Win32FileAttributeData = $pkg.Win32FileAttributeData = $newType(0, $kindStruct, "syscall.Win32FileAttributeData", "Win32FileAttributeData", "syscall", function(FileAttributes_, CreationTime_, LastAccessTime_, LastWriteTime_, FileSizeHigh_, FileSizeLow_) {
  5705. this.$val = this;
  5706. if (arguments.length === 0) {
  5707. this.FileAttributes = 0;
  5708. this.CreationTime = new Filetime.ptr();
  5709. this.LastAccessTime = new Filetime.ptr();
  5710. this.LastWriteTime = new Filetime.ptr();
  5711. this.FileSizeHigh = 0;
  5712. this.FileSizeLow = 0;
  5713. return;
  5714. }
  5715. this.FileAttributes = FileAttributes_;
  5716. this.CreationTime = CreationTime_;
  5717. this.LastAccessTime = LastAccessTime_;
  5718. this.LastWriteTime = LastWriteTime_;
  5719. this.FileSizeHigh = FileSizeHigh_;
  5720. this.FileSizeLow = FileSizeLow_;
  5721. });
  5722. WSABuf = $pkg.WSABuf = $newType(0, $kindStruct, "syscall.WSABuf", "WSABuf", "syscall", function(Len_, Buf_) {
  5723. this.$val = this;
  5724. if (arguments.length === 0) {
  5725. this.Len = 0;
  5726. this.Buf = ptrType$15.nil;
  5727. return;
  5728. }
  5729. this.Len = Len_;
  5730. this.Buf = Buf_;
  5731. });
  5732. TransmitFileBuffers = $pkg.TransmitFileBuffers = $newType(0, $kindStruct, "syscall.TransmitFileBuffers", "TransmitFileBuffers", "syscall", function(Head_, HeadLength_, Tail_, TailLength_) {
  5733. this.$val = this;
  5734. if (arguments.length === 0) {
  5735. this.Head = 0;
  5736. this.HeadLength = 0;
  5737. this.Tail = 0;
  5738. this.TailLength = 0;
  5739. return;
  5740. }
  5741. this.Head = Head_;
  5742. this.HeadLength = HeadLength_;
  5743. this.Tail = Tail_;
  5744. this.TailLength = TailLength_;
  5745. });
  5746. SockaddrGen = $pkg.SockaddrGen = $newType(24, $kindArray, "syscall.SockaddrGen", "SockaddrGen", "syscall", null);
  5747. InterfaceInfo = $pkg.InterfaceInfo = $newType(0, $kindStruct, "syscall.InterfaceInfo", "InterfaceInfo", "syscall", function(Flags_, Address_, BroadcastAddress_, Netmask_) {
  5748. this.$val = this;
  5749. if (arguments.length === 0) {
  5750. this.Flags = 0;
  5751. this.Address = SockaddrGen.zero();
  5752. this.BroadcastAddress = SockaddrGen.zero();
  5753. this.Netmask = SockaddrGen.zero();
  5754. return;
  5755. }
  5756. this.Flags = Flags_;
  5757. this.Address = Address_;
  5758. this.BroadcastAddress = BroadcastAddress_;
  5759. this.Netmask = Netmask_;
  5760. });
  5761. IpAddressString = $pkg.IpAddressString = $newType(0, $kindStruct, "syscall.IpAddressString", "IpAddressString", "syscall", function(String_) {
  5762. this.$val = this;
  5763. if (arguments.length === 0) {
  5764. this.String = arrayType$5.zero();
  5765. return;
  5766. }
  5767. this.String = String_;
  5768. });
  5769. IpMaskString = $pkg.IpMaskString = $newType(0, $kindStruct, "syscall.IpMaskString", "IpMaskString", "syscall", function(String_) {
  5770. this.$val = this;
  5771. if (arguments.length === 0) {
  5772. this.String = arrayType$5.zero();
  5773. return;
  5774. }
  5775. this.String = String_;
  5776. });
  5777. IpAddrString = $pkg.IpAddrString = $newType(0, $kindStruct, "syscall.IpAddrString", "IpAddrString", "syscall", function(Next_, IpAddress_, IpMask_, Context_) {
  5778. this.$val = this;
  5779. if (arguments.length === 0) {
  5780. this.Next = ptrType$37.nil;
  5781. this.IpAddress = new IpAddressString.ptr();
  5782. this.IpMask = new IpMaskString.ptr();
  5783. this.Context = 0;
  5784. return;
  5785. }
  5786. this.Next = Next_;
  5787. this.IpAddress = IpAddress_;
  5788. this.IpMask = IpMask_;
  5789. this.Context = Context_;
  5790. });
  5791. IpAdapterInfo = $pkg.IpAdapterInfo = $newType(0, $kindStruct, "syscall.IpAdapterInfo", "IpAdapterInfo", "syscall", function(Next_, ComboIndex_, AdapterName_, Description_, AddressLength_, Address_, Index_, Type_, DhcpEnabled_, CurrentIpAddress_, IpAddressList_, GatewayList_, DhcpServer_, HaveWins_, PrimaryWinsServer_, SecondaryWinsServer_, LeaseObtained_, LeaseExpires_) {
  5792. this.$val = this;
  5793. if (arguments.length === 0) {
  5794. this.Next = ptrType$38.nil;
  5795. this.ComboIndex = 0;
  5796. this.AdapterName = arrayType$15.zero();
  5797. this.Description = arrayType$16.zero();
  5798. this.AddressLength = 0;
  5799. this.Address = arrayType$4.zero();
  5800. this.Index = 0;
  5801. this.Type = 0;
  5802. this.DhcpEnabled = 0;
  5803. this.CurrentIpAddress = ptrType$37.nil;
  5804. this.IpAddressList = new IpAddrString.ptr();
  5805. this.GatewayList = new IpAddrString.ptr();
  5806. this.DhcpServer = new IpAddrString.ptr();
  5807. this.HaveWins = false;
  5808. this.PrimaryWinsServer = new IpAddrString.ptr();
  5809. this.SecondaryWinsServer = new IpAddrString.ptr();
  5810. this.LeaseObtained = new $Int64(0, 0);
  5811. this.LeaseExpires = new $Int64(0, 0);
  5812. return;
  5813. }
  5814. this.Next = Next_;
  5815. this.ComboIndex = ComboIndex_;
  5816. this.AdapterName = AdapterName_;
  5817. this.Description = Description_;
  5818. this.AddressLength = AddressLength_;
  5819. this.Address = Address_;
  5820. this.Index = Index_;
  5821. this.Type = Type_;
  5822. this.DhcpEnabled = DhcpEnabled_;
  5823. this.CurrentIpAddress = CurrentIpAddress_;
  5824. this.IpAddressList = IpAddressList_;
  5825. this.GatewayList = GatewayList_;
  5826. this.DhcpServer = DhcpServer_;
  5827. this.HaveWins = HaveWins_;
  5828. this.PrimaryWinsServer = PrimaryWinsServer_;
  5829. this.SecondaryWinsServer = SecondaryWinsServer_;
  5830. this.LeaseObtained = LeaseObtained_;
  5831. this.LeaseExpires = LeaseExpires_;
  5832. });
  5833. MibIfRow = $pkg.MibIfRow = $newType(0, $kindStruct, "syscall.MibIfRow", "MibIfRow", "syscall", function(Name_, Index_, Type_, Mtu_, Speed_, PhysAddrLen_, PhysAddr_, AdminStatus_, OperStatus_, LastChange_, InOctets_, InUcastPkts_, InNUcastPkts_, InDiscards_, InErrors_, InUnknownProtos_, OutOctets_, OutUcastPkts_, OutNUcastPkts_, OutDiscards_, OutErrors_, OutQLen_, DescrLen_, Descr_) {
  5834. this.$val = this;
  5835. if (arguments.length === 0) {
  5836. this.Name = arrayType$17.zero();
  5837. this.Index = 0;
  5838. this.Type = 0;
  5839. this.Mtu = 0;
  5840. this.Speed = 0;
  5841. this.PhysAddrLen = 0;
  5842. this.PhysAddr = arrayType$4.zero();
  5843. this.AdminStatus = 0;
  5844. this.OperStatus = 0;
  5845. this.LastChange = 0;
  5846. this.InOctets = 0;
  5847. this.InUcastPkts = 0;
  5848. this.InNUcastPkts = 0;
  5849. this.InDiscards = 0;
  5850. this.InErrors = 0;
  5851. this.InUnknownProtos = 0;
  5852. this.OutOctets = 0;
  5853. this.OutUcastPkts = 0;
  5854. this.OutNUcastPkts = 0;
  5855. this.OutDiscards = 0;
  5856. this.OutErrors = 0;
  5857. this.OutQLen = 0;
  5858. this.DescrLen = 0;
  5859. this.Descr = arrayType$18.zero();
  5860. return;
  5861. }
  5862. this.Name = Name_;
  5863. this.Index = Index_;
  5864. this.Type = Type_;
  5865. this.Mtu = Mtu_;
  5866. this.Speed = Speed_;
  5867. this.PhysAddrLen = PhysAddrLen_;
  5868. this.PhysAddr = PhysAddr_;
  5869. this.AdminStatus = AdminStatus_;
  5870. this.OperStatus = OperStatus_;
  5871. this.LastChange = LastChange_;
  5872. this.InOctets = InOctets_;
  5873. this.InUcastPkts = InUcastPkts_;
  5874. this.InNUcastPkts = InNUcastPkts_;
  5875. this.InDiscards = InDiscards_;
  5876. this.InErrors = InErrors_;
  5877. this.InUnknownProtos = InUnknownProtos_;
  5878. this.OutOctets = OutOctets_;
  5879. this.OutUcastPkts = OutUcastPkts_;
  5880. this.OutNUcastPkts = OutNUcastPkts_;
  5881. this.OutDiscards = OutDiscards_;
  5882. this.OutErrors = OutErrors_;
  5883. this.OutQLen = OutQLen_;
  5884. this.DescrLen = DescrLen_;
  5885. this.Descr = Descr_;
  5886. });
  5887. CertContext = $pkg.CertContext = $newType(0, $kindStruct, "syscall.CertContext", "CertContext", "syscall", function(EncodingType_, EncodedCert_, Length_, CertInfo_, Store_) {
  5888. this.$val = this;
  5889. if (arguments.length === 0) {
  5890. this.EncodingType = 0;
  5891. this.EncodedCert = ptrType$15.nil;
  5892. this.Length = 0;
  5893. this.CertInfo = 0;
  5894. this.Store = 0;
  5895. return;
  5896. }
  5897. this.EncodingType = EncodingType_;
  5898. this.EncodedCert = EncodedCert_;
  5899. this.Length = Length_;
  5900. this.CertInfo = CertInfo_;
  5901. this.Store = Store_;
  5902. });
  5903. CertChainContext = $pkg.CertChainContext = $newType(0, $kindStruct, "syscall.CertChainContext", "CertChainContext", "syscall", function(Size_, TrustStatus_, ChainCount_, Chains_, LowerQualityChainCount_, LowerQualityChains_, HasRevocationFreshnessTime_, RevocationFreshnessTime_) {
  5904. this.$val = this;
  5905. if (arguments.length === 0) {
  5906. this.Size = 0;
  5907. this.TrustStatus = new CertTrustStatus.ptr();
  5908. this.ChainCount = 0;
  5909. this.Chains = ptrType$40.nil;
  5910. this.LowerQualityChainCount = 0;
  5911. this.LowerQualityChains = ptrType$42.nil;
  5912. this.HasRevocationFreshnessTime = 0;
  5913. this.RevocationFreshnessTime = 0;
  5914. return;
  5915. }
  5916. this.Size = Size_;
  5917. this.TrustStatus = TrustStatus_;
  5918. this.ChainCount = ChainCount_;
  5919. this.Chains = Chains_;
  5920. this.LowerQualityChainCount = LowerQualityChainCount_;
  5921. this.LowerQualityChains = LowerQualityChains_;
  5922. this.HasRevocationFreshnessTime = HasRevocationFreshnessTime_;
  5923. this.RevocationFreshnessTime = RevocationFreshnessTime_;
  5924. });
  5925. CertSimpleChain = $pkg.CertSimpleChain = $newType(0, $kindStruct, "syscall.CertSimpleChain", "CertSimpleChain", "syscall", function(Size_, TrustStatus_, NumElements_, Elements_, TrustListInfo_, HasRevocationFreshnessTime_, RevocationFreshnessTime_) {
  5926. this.$val = this;
  5927. if (arguments.length === 0) {
  5928. this.Size = 0;
  5929. this.TrustStatus = new CertTrustStatus.ptr();
  5930. this.NumElements = 0;
  5931. this.Elements = ptrType$44.nil;
  5932. this.TrustListInfo = 0;
  5933. this.HasRevocationFreshnessTime = 0;
  5934. this.RevocationFreshnessTime = 0;
  5935. return;
  5936. }
  5937. this.Size = Size_;
  5938. this.TrustStatus = TrustStatus_;
  5939. this.NumElements = NumElements_;
  5940. this.Elements = Elements_;
  5941. this.TrustListInfo = TrustListInfo_;
  5942. this.HasRevocationFreshnessTime = HasRevocationFreshnessTime_;
  5943. this.RevocationFreshnessTime = RevocationFreshnessTime_;
  5944. });
  5945. CertChainElement = $pkg.CertChainElement = $newType(0, $kindStruct, "syscall.CertChainElement", "CertChainElement", "syscall", function(Size_, CertContext_, TrustStatus_, RevocationInfo_, IssuanceUsage_, ApplicationUsage_, ExtendedErrorInfo_) {
  5946. this.$val = this;
  5947. if (arguments.length === 0) {
  5948. this.Size = 0;
  5949. this.CertContext = ptrType$23.nil;
  5950. this.TrustStatus = new CertTrustStatus.ptr();
  5951. this.RevocationInfo = ptrType$45.nil;
  5952. this.IssuanceUsage = ptrType$46.nil;
  5953. this.ApplicationUsage = ptrType$46.nil;
  5954. this.ExtendedErrorInfo = ptrType.nil;
  5955. return;
  5956. }
  5957. this.Size = Size_;
  5958. this.CertContext = CertContext_;
  5959. this.TrustStatus = TrustStatus_;
  5960. this.RevocationInfo = RevocationInfo_;
  5961. this.IssuanceUsage = IssuanceUsage_;
  5962. this.ApplicationUsage = ApplicationUsage_;
  5963. this.ExtendedErrorInfo = ExtendedErrorInfo_;
  5964. });
  5965. CertRevocationInfo = $pkg.CertRevocationInfo = $newType(0, $kindStruct, "syscall.CertRevocationInfo", "CertRevocationInfo", "syscall", function(Size_, RevocationResult_, RevocationOid_, OidSpecificInfo_, HasFreshnessTime_, FreshnessTime_, CrlInfo_) {
  5966. this.$val = this;
  5967. if (arguments.length === 0) {
  5968. this.Size = 0;
  5969. this.RevocationResult = 0;
  5970. this.RevocationOid = ptrType$15.nil;
  5971. this.OidSpecificInfo = 0;
  5972. this.HasFreshnessTime = 0;
  5973. this.FreshnessTime = 0;
  5974. this.CrlInfo = 0;
  5975. return;
  5976. }
  5977. this.Size = Size_;
  5978. this.RevocationResult = RevocationResult_;
  5979. this.RevocationOid = RevocationOid_;
  5980. this.OidSpecificInfo = OidSpecificInfo_;
  5981. this.HasFreshnessTime = HasFreshnessTime_;
  5982. this.FreshnessTime = FreshnessTime_;
  5983. this.CrlInfo = CrlInfo_;
  5984. });
  5985. CertTrustStatus = $pkg.CertTrustStatus = $newType(0, $kindStruct, "syscall.CertTrustStatus", "CertTrustStatus", "syscall", function(ErrorStatus_, InfoStatus_) {
  5986. this.$val = this;
  5987. if (arguments.length === 0) {
  5988. this.ErrorStatus = 0;
  5989. this.InfoStatus = 0;
  5990. return;
  5991. }
  5992. this.ErrorStatus = ErrorStatus_;
  5993. this.InfoStatus = InfoStatus_;
  5994. });
  5995. CertUsageMatch = $pkg.CertUsageMatch = $newType(0, $kindStruct, "syscall.CertUsageMatch", "CertUsageMatch", "syscall", function(Type_, Usage_) {
  5996. this.$val = this;
  5997. if (arguments.length === 0) {
  5998. this.Type = 0;
  5999. this.Usage = new CertEnhKeyUsage.ptr();
  6000. return;
  6001. }
  6002. this.Type = Type_;
  6003. this.Usage = Usage_;
  6004. });
  6005. CertEnhKeyUsage = $pkg.CertEnhKeyUsage = $newType(0, $kindStruct, "syscall.CertEnhKeyUsage", "CertEnhKeyUsage", "syscall", function(Length_, UsageIdentifiers_) {
  6006. this.$val = this;
  6007. if (arguments.length === 0) {
  6008. this.Length = 0;
  6009. this.UsageIdentifiers = ptrType$35.nil;
  6010. return;
  6011. }
  6012. this.Length = Length_;
  6013. this.UsageIdentifiers = UsageIdentifiers_;
  6014. });
  6015. CertChainPara = $pkg.CertChainPara = $newType(0, $kindStruct, "syscall.CertChainPara", "CertChainPara", "syscall", function(Size_, RequestedUsage_, RequstedIssuancePolicy_, URLRetrievalTimeout_, CheckRevocationFreshnessTime_, RevocationFreshnessTime_, CacheResync_) {
  6016. this.$val = this;
  6017. if (arguments.length === 0) {
  6018. this.Size = 0;
  6019. this.RequestedUsage = new CertUsageMatch.ptr();
  6020. this.RequstedIssuancePolicy = new CertUsageMatch.ptr();
  6021. this.URLRetrievalTimeout = 0;
  6022. this.CheckRevocationFreshnessTime = 0;
  6023. this.RevocationFreshnessTime = 0;
  6024. this.CacheResync = ptrType$20.nil;
  6025. return;
  6026. }
  6027. this.Size = Size_;
  6028. this.RequestedUsage = RequestedUsage_;
  6029. this.RequstedIssuancePolicy = RequstedIssuancePolicy_;
  6030. this.URLRetrievalTimeout = URLRetrievalTimeout_;
  6031. this.CheckRevocationFreshnessTime = CheckRevocationFreshnessTime_;
  6032. this.RevocationFreshnessTime = RevocationFreshnessTime_;
  6033. this.CacheResync = CacheResync_;
  6034. });
  6035. CertChainPolicyPara = $pkg.CertChainPolicyPara = $newType(0, $kindStruct, "syscall.CertChainPolicyPara", "CertChainPolicyPara", "syscall", function(Size_, Flags_, ExtraPolicyPara_) {
  6036. this.$val = this;
  6037. if (arguments.length === 0) {
  6038. this.Size = 0;
  6039. this.Flags = 0;
  6040. this.ExtraPolicyPara = 0;
  6041. return;
  6042. }
  6043. this.Size = Size_;
  6044. this.Flags = Flags_;
  6045. this.ExtraPolicyPara = ExtraPolicyPara_;
  6046. });
  6047. SSLExtraCertChainPolicyPara = $pkg.SSLExtraCertChainPolicyPara = $newType(0, $kindStruct, "syscall.SSLExtraCertChainPolicyPara", "SSLExtraCertChainPolicyPara", "syscall", function(Size_, AuthType_, Checks_, ServerName_) {
  6048. this.$val = this;
  6049. if (arguments.length === 0) {
  6050. this.Size = 0;
  6051. this.AuthType = 0;
  6052. this.Checks = 0;
  6053. this.ServerName = ptrType.nil;
  6054. return;
  6055. }
  6056. this.Size = Size_;
  6057. this.AuthType = AuthType_;
  6058. this.Checks = Checks_;
  6059. this.ServerName = ServerName_;
  6060. });
  6061. CertChainPolicyStatus = $pkg.CertChainPolicyStatus = $newType(0, $kindStruct, "syscall.CertChainPolicyStatus", "CertChainPolicyStatus", "syscall", function(Size_, Error_, ChainIndex_, ElementIndex_, ExtraPolicyStatus_) {
  6062. this.$val = this;
  6063. if (arguments.length === 0) {
  6064. this.Size = 0;
  6065. this.Error = 0;
  6066. this.ChainIndex = 0;
  6067. this.ElementIndex = 0;
  6068. this.ExtraPolicyStatus = 0;
  6069. return;
  6070. }
  6071. this.Size = Size_;
  6072. this.Error = Error_;
  6073. this.ChainIndex = ChainIndex_;
  6074. this.ElementIndex = ElementIndex_;
  6075. this.ExtraPolicyStatus = ExtraPolicyStatus_;
  6076. });
  6077. TCPKeepalive = $pkg.TCPKeepalive = $newType(0, $kindStruct, "syscall.TCPKeepalive", "TCPKeepalive", "syscall", function(OnOff_, Time_, Interval_) {
  6078. this.$val = this;
  6079. if (arguments.length === 0) {
  6080. this.OnOff = 0;
  6081. this.Time = 0;
  6082. this.Interval = 0;
  6083. return;
  6084. }
  6085. this.OnOff = OnOff_;
  6086. this.Time = Time_;
  6087. this.Interval = Interval_;
  6088. });
  6089. reparseDataBuffer = $pkg.reparseDataBuffer = $newType(0, $kindStruct, "syscall.reparseDataBuffer", "reparseDataBuffer", "syscall", function(ReparseTag_, ReparseDataLength_, Reserved_, SubstituteNameOffset_, SubstituteNameLength_, PrintNameOffset_, PrintNameLength_, Flags_, PathBuffer_) {
  6090. this.$val = this;
  6091. if (arguments.length === 0) {
  6092. this.ReparseTag = 0;
  6093. this.ReparseDataLength = 0;
  6094. this.Reserved = 0;
  6095. this.SubstituteNameOffset = 0;
  6096. this.SubstituteNameLength = 0;
  6097. this.PrintNameOffset = 0;
  6098. this.PrintNameLength = 0;
  6099. this.Flags = 0;
  6100. this.PathBuffer = arrayType$20.zero();
  6101. return;
  6102. }
  6103. this.ReparseTag = ReparseTag_;
  6104. this.ReparseDataLength = ReparseDataLength_;
  6105. this.Reserved = Reserved_;
  6106. this.SubstituteNameOffset = SubstituteNameOffset_;
  6107. this.SubstituteNameLength = SubstituteNameLength_;
  6108. this.PrintNameOffset = PrintNameOffset_;
  6109. this.PrintNameLength = PrintNameLength_;
  6110. this.Flags = Flags_;
  6111. this.PathBuffer = PathBuffer_;
  6112. });
  6113. sliceType = $sliceType($Uint8);
  6114. ptrType = $ptrType($Uint16);
  6115. arrayType = $arrayType($Uint16, 8192);
  6116. ptrType$1 = $ptrType(arrayType);
  6117. arrayType$1 = $arrayType(ptrType$1, 8192);
  6118. ptrType$2 = $ptrType(arrayType$1);
  6119. ptrType$3 = $ptrType(DLL);
  6120. ptrType$4 = $ptrType(Proc);
  6121. ptrType$5 = $ptrType(LazyDLL);
  6122. sliceType$2 = $sliceType($Uint16);
  6123. sliceType$3 = $sliceType($Int32);
  6124. ptrType$6 = $ptrType(ptrType);
  6125. ptrType$10 = $ptrType(SecurityAttributes);
  6126. ptrType$11 = $ptrType($Uint32);
  6127. ptrType$15 = $ptrType($Uint8);
  6128. arrayType$2 = $arrayType($Uint8, 32);
  6129. ptrType$18 = $ptrType(Overlapped);
  6130. ptrType$19 = $ptrType($Int32);
  6131. ptrType$20 = $ptrType(Filetime);
  6132. arrayType$3 = $arrayType($Uint8, 4);
  6133. ptrType$23 = $ptrType(CertContext);
  6134. ptrType$27 = $ptrType(DLLError);
  6135. sliceType$6 = $sliceType($Uintptr);
  6136. ptrType$28 = $ptrType(LazyProc);
  6137. arrayType$4 = $arrayType($Uint8, 8);
  6138. arrayType$5 = $arrayType($Uint8, 16);
  6139. arrayType$6 = $arrayType($Int8, 14);
  6140. arrayType$7 = $arrayType($Int8, 96);
  6141. ptrType$29 = $ptrType(RawSockaddrAny);
  6142. ptrType$30 = $ptrType(SockaddrInet4);
  6143. ptrType$31 = $ptrType(SockaddrInet6);
  6144. ptrType$32 = $ptrType(SockaddrUnix);
  6145. arrayType$8 = $arrayType($Uint16, 259);
  6146. arrayType$9 = $arrayType($Uint16, 13);
  6147. arrayType$10 = $arrayType($Uint16, 260);
  6148. arrayType$11 = $arrayType($Uint16, 14);
  6149. ptrType$35 = $ptrType(ptrType$15);
  6150. ptrType$37 = $ptrType(IpAddrString);
  6151. ptrType$38 = $ptrType(IpAdapterInfo);
  6152. arrayType$15 = $arrayType($Uint8, 260);
  6153. arrayType$16 = $arrayType($Uint8, 132);
  6154. arrayType$17 = $arrayType($Uint16, 256);
  6155. arrayType$18 = $arrayType($Uint8, 256);
  6156. ptrType$39 = $ptrType(CertSimpleChain);
  6157. ptrType$40 = $ptrType(ptrType$39);
  6158. ptrType$41 = $ptrType(CertChainContext);
  6159. ptrType$42 = $ptrType(ptrType$41);
  6160. ptrType$43 = $ptrType(CertChainElement);
  6161. ptrType$44 = $ptrType(ptrType$43);
  6162. ptrType$45 = $ptrType(CertRevocationInfo);
  6163. ptrType$46 = $ptrType(CertEnhKeyUsage);
  6164. arrayType$20 = $arrayType($Uint16, 1);
  6165. init = function() {
  6166. var $ptr;
  6167. $flushConsole = (function() {
  6168. var $ptr;
  6169. if (!((lineBuffer.$length === 0))) {
  6170. $global.console.log($externalize($bytesToString(lineBuffer), $String));
  6171. lineBuffer = sliceType.nil;
  6172. }
  6173. });
  6174. };
  6175. printWarning = function() {
  6176. var $ptr;
  6177. if (!warningPrinted) {
  6178. console.log("warning: system calls not available, see https://github.com/gopherjs/gopherjs/blob/master/doc/syscalls.md");
  6179. }
  6180. warningPrinted = true;
  6181. };
  6182. printToConsole = function(b) {
  6183. var $ptr, b, goPrintToConsole, i;
  6184. goPrintToConsole = $global.goPrintToConsole;
  6185. if (!(goPrintToConsole === undefined)) {
  6186. goPrintToConsole(b);
  6187. return;
  6188. }
  6189. lineBuffer = $appendSlice(lineBuffer, b);
  6190. while (true) {
  6191. i = bytes.IndexByte(lineBuffer, 10);
  6192. if (i === -1) {
  6193. break;
  6194. }
  6195. $global.console.log($externalize($bytesToString($subslice(lineBuffer, 0, i)), $String));
  6196. lineBuffer = $subslice(lineBuffer, (i + 1 >> 0));
  6197. }
  6198. };
  6199. use = function(p) {
  6200. var $ptr, p;
  6201. };
  6202. Syscall = function(trap, nargs, a1, a2, a3) {
  6203. var $ptr, _tmp, _tmp$1, _tmp$2, a1, a2, a3, err, nargs, r1, r2, trap;
  6204. r1 = 0;
  6205. r2 = 0;
  6206. err = 0;
  6207. printWarning();
  6208. _tmp = (minusOne >>> 0); _tmp$1 = 0; _tmp$2 = 536870913; r1 = _tmp; r2 = _tmp$1; err = _tmp$2;
  6209. return [r1, r2, err];
  6210. };
  6211. $pkg.Syscall = Syscall;
  6212. Syscall6 = function(trap, nargs, a1, a2, a3, a4, a5, a6) {
  6213. var $ptr, _tmp, _tmp$1, _tmp$2, a1, a2, a3, a4, a5, a6, err, nargs, r1, r2, trap;
  6214. r1 = 0;
  6215. r2 = 0;
  6216. err = 0;
  6217. printWarning();
  6218. _tmp = (minusOne >>> 0); _tmp$1 = 0; _tmp$2 = 536870913; r1 = _tmp; r2 = _tmp$1; err = _tmp$2;
  6219. return [r1, r2, err];
  6220. };
  6221. $pkg.Syscall6 = Syscall6;
  6222. Syscall9 = function(trap, nargs, a1, a2, a3, a4, a5, a6, a7, a8, a9) {
  6223. var $ptr, _tmp, _tmp$1, _tmp$2, a1, a2, a3, a4, a5, a6, a7, a8, a9, err, nargs, r1, r2, trap;
  6224. r1 = 0;
  6225. r2 = 0;
  6226. err = 0;
  6227. printWarning();
  6228. _tmp = (minusOne >>> 0); _tmp$1 = 0; _tmp$2 = 536870913; r1 = _tmp; r2 = _tmp$1; err = _tmp$2;
  6229. return [r1, r2, err];
  6230. };
  6231. $pkg.Syscall9 = Syscall9;
  6232. Syscall12 = function(trap, nargs, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12) {
  6233. var $ptr, _tmp, _tmp$1, _tmp$2, a1, a10, a11, a12, a2, a3, a4, a5, a6, a7, a8, a9, err, nargs, r1, r2, trap;
  6234. r1 = 0;
  6235. r2 = 0;
  6236. err = 0;
  6237. printWarning();
  6238. _tmp = (minusOne >>> 0); _tmp$1 = 0; _tmp$2 = 536870913; r1 = _tmp; r2 = _tmp$1; err = _tmp$2;
  6239. return [r1, r2, err];
  6240. };
  6241. $pkg.Syscall12 = Syscall12;
  6242. Syscall15 = function(trap, nargs, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15) {
  6243. var $ptr, _tmp, _tmp$1, _tmp$2, a1, a10, a11, a12, a13, a14, a15, a2, a3, a4, a5, a6, a7, a8, a9, err, nargs, r1, r2, trap;
  6244. r1 = 0;
  6245. r2 = 0;
  6246. err = 0;
  6247. printWarning();
  6248. _tmp = (minusOne >>> 0); _tmp$1 = 0; _tmp$2 = 536870913; r1 = _tmp; r2 = _tmp$1; err = _tmp$2;
  6249. return [r1, r2, err];
  6250. };
  6251. $pkg.Syscall15 = Syscall15;
  6252. getprocaddress = function(handle, procname) {
  6253. var $ptr, _tmp, _tmp$1, err, handle, proc, procname;
  6254. proc = 0;
  6255. err = 0;
  6256. printWarning();
  6257. _tmp = (minusOne >>> 0); _tmp$1 = 536870913; proc = _tmp; err = _tmp$1;
  6258. return [proc, err];
  6259. };
  6260. LazyDLL.ptr.prototype.Load = function() {
  6261. var $ptr, d;
  6262. d = this;
  6263. return new DLLError.ptr($ifaceNil, "", "system calls not available, see https://github.com/gopherjs/gopherjs/blob/master/doc/syscalls.md");
  6264. };
  6265. LazyDLL.prototype.Load = function() { return this.$val.Load(); };
  6266. LazyProc.ptr.prototype.Find = function() {
  6267. var $ptr, p;
  6268. p = this;
  6269. return new DLLError.ptr($ifaceNil, "", "system calls not available, see https://github.com/gopherjs/gopherjs/blob/master/doc/syscalls.md");
  6270. };
  6271. LazyProc.prototype.Find = function() { return this.$val.Find(); };
  6272. getStdHandle = function(h) {
  6273. var $ptr, fd, h;
  6274. fd = 0;
  6275. if (h === -11) {
  6276. fd = 1;
  6277. return fd;
  6278. }
  6279. if (h === -12) {
  6280. fd = 2;
  6281. return fd;
  6282. }
  6283. fd = 0;
  6284. return fd;
  6285. };
  6286. GetConsoleMode = function(console, mode) {
  6287. var $ptr, console, err, mode, x;
  6288. err = $ifaceNil;
  6289. err = (x = new DummyError.ptr(), new x.constructor.elem(x));
  6290. return err;
  6291. };
  6292. $pkg.GetConsoleMode = GetConsoleMode;
  6293. WriteFile = function(handle, buf, done, overlapped) {
  6294. var $ptr, buf, done, err, handle, overlapped;
  6295. err = $ifaceNil;
  6296. if ((handle === 1) || (handle === 2)) {
  6297. printToConsole(buf);
  6298. done.$set((buf.$length >>> 0));
  6299. err = $ifaceNil;
  6300. return err;
  6301. }
  6302. printWarning();
  6303. err = $ifaceNil;
  6304. return err;
  6305. };
  6306. $pkg.WriteFile = WriteFile;
  6307. GetCommandLine = function() {
  6308. var $ptr, cmd;
  6309. cmd = ptrType.nil;
  6310. return cmd;
  6311. };
  6312. $pkg.GetCommandLine = GetCommandLine;
  6313. CommandLineToArgv = function(cmd, argc) {
  6314. var $ptr, _tmp, _tmp$1, argc, argv, cmd, err, x;
  6315. argv = ptrType$2.nil;
  6316. err = $ifaceNil;
  6317. _tmp = ptrType$2.nil; _tmp$1 = (x = new DummyError.ptr(), new x.constructor.elem(x)); argv = _tmp; err = _tmp$1;
  6318. return [argv, err];
  6319. };
  6320. $pkg.CommandLineToArgv = CommandLineToArgv;
  6321. Getenv = function(key) {
  6322. var $ptr, _tmp, _tmp$1, found, key, value;
  6323. value = "";
  6324. found = false;
  6325. _tmp = ""; _tmp$1 = false; value = _tmp; found = _tmp$1;
  6326. return [value, found];
  6327. };
  6328. $pkg.Getenv = Getenv;
  6329. DummyError.ptr.prototype.Error = function() {
  6330. var $ptr, e;
  6331. e = $clone(this, DummyError);
  6332. return "";
  6333. };
  6334. DummyError.prototype.Error = function() { return this.$val.Error(); };
  6335. DLLError.ptr.prototype.Error = function() {
  6336. var $ptr, e;
  6337. e = this;
  6338. return e.Msg;
  6339. };
  6340. DLLError.prototype.Error = function() { return this.$val.Error(); };
  6341. DLL.ptr.prototype.FindProc = function(name) {
  6342. var $ptr, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tuple, _tuple$1, a, d, e, err, name, namep, p, proc;
  6343. proc = ptrType$4.nil;
  6344. err = $ifaceNil;
  6345. d = this;
  6346. _tuple = BytePtrFromString(name); namep = _tuple[0]; err = _tuple[1];
  6347. if (!($interfaceIsEqual(err, $ifaceNil))) {
  6348. _tmp = ptrType$4.nil; _tmp$1 = err; proc = _tmp; err = _tmp$1;
  6349. return [proc, err];
  6350. }
  6351. _tuple$1 = getprocaddress((d.Handle >>> 0), namep); a = _tuple$1[0]; e = _tuple$1[1];
  6352. use(namep);
  6353. if (!((e === 0))) {
  6354. _tmp$2 = ptrType$4.nil; _tmp$3 = new DLLError.ptr(new Errno(e), name, "Failed to find " + name + " procedure in " + d.Name + ": " + new Errno(e).Error()); proc = _tmp$2; err = _tmp$3;
  6355. return [proc, err];
  6356. }
  6357. p = new Proc.ptr(d, name, a);
  6358. _tmp$4 = p; _tmp$5 = $ifaceNil; proc = _tmp$4; err = _tmp$5;
  6359. return [proc, err];
  6360. };
  6361. DLL.prototype.FindProc = function(name) { return this.$val.FindProc(name); };
  6362. DLL.ptr.prototype.MustFindProc = function(name) {
  6363. var $ptr, _tuple, d, e, name, p;
  6364. d = this;
  6365. _tuple = d.FindProc(name); p = _tuple[0]; e = _tuple[1];
  6366. if (!($interfaceIsEqual(e, $ifaceNil))) {
  6367. $panic(e);
  6368. }
  6369. return p;
  6370. };
  6371. DLL.prototype.MustFindProc = function(name) { return this.$val.MustFindProc(name); };
  6372. DLL.ptr.prototype.Release = function() {
  6373. var $ptr, d, err;
  6374. err = $ifaceNil;
  6375. d = this;
  6376. err = FreeLibrary(d.Handle);
  6377. return err;
  6378. };
  6379. DLL.prototype.Release = function() { return this.$val.Release(); };
  6380. Proc.ptr.prototype.Addr = function() {
  6381. var $ptr, p;
  6382. p = this;
  6383. return p.addr;
  6384. };
  6385. Proc.prototype.Addr = function() { return this.$val.Addr(); };
  6386. Proc.ptr.prototype.Call = function(a) {
  6387. var $ptr, _ref, _tuple, _tuple$1, _tuple$10, _tuple$11, _tuple$12, _tuple$13, _tuple$14, _tuple$15, _tuple$2, _tuple$3, _tuple$4, _tuple$5, _tuple$6, _tuple$7, _tuple$8, _tuple$9, a, lastErr, p, r1, r2;
  6388. r1 = 0;
  6389. r2 = 0;
  6390. lastErr = $ifaceNil;
  6391. p = this;
  6392. _ref = a.$length;
  6393. if (_ref === 0) {
  6394. _tuple = Syscall(p.Addr(), (a.$length >>> 0), 0, 0, 0); r1 = _tuple[0]; r2 = _tuple[1]; lastErr = new Errno(_tuple[2]);
  6395. return [r1, r2, lastErr];
  6396. } else if (_ref === 1) {
  6397. _tuple$1 = Syscall(p.Addr(), (a.$length >>> 0), (0 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 0]), 0, 0); r1 = _tuple$1[0]; r2 = _tuple$1[1]; lastErr = new Errno(_tuple$1[2]);
  6398. return [r1, r2, lastErr];
  6399. } else if (_ref === 2) {
  6400. _tuple$2 = Syscall(p.Addr(), (a.$length >>> 0), (0 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 0]), (1 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 1]), 0); r1 = _tuple$2[0]; r2 = _tuple$2[1]; lastErr = new Errno(_tuple$2[2]);
  6401. return [r1, r2, lastErr];
  6402. } else if (_ref === 3) {
  6403. _tuple$3 = Syscall(p.Addr(), (a.$length >>> 0), (0 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 0]), (1 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 1]), (2 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 2])); r1 = _tuple$3[0]; r2 = _tuple$3[1]; lastErr = new Errno(_tuple$3[2]);
  6404. return [r1, r2, lastErr];
  6405. } else if (_ref === 4) {
  6406. _tuple$4 = Syscall6(p.Addr(), (a.$length >>> 0), (0 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 0]), (1 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 1]), (2 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 2]), (3 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 3]), 0, 0); r1 = _tuple$4[0]; r2 = _tuple$4[1]; lastErr = new Errno(_tuple$4[2]);
  6407. return [r1, r2, lastErr];
  6408. } else if (_ref === 5) {
  6409. _tuple$5 = Syscall6(p.Addr(), (a.$length >>> 0), (0 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 0]), (1 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 1]), (2 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 2]), (3 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 3]), (4 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 4]), 0); r1 = _tuple$5[0]; r2 = _tuple$5[1]; lastErr = new Errno(_tuple$5[2]);
  6410. return [r1, r2, lastErr];
  6411. } else if (_ref === 6) {
  6412. _tuple$6 = Syscall6(p.Addr(), (a.$length >>> 0), (0 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 0]), (1 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 1]), (2 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 2]), (3 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 3]), (4 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 4]), (5 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 5])); r1 = _tuple$6[0]; r2 = _tuple$6[1]; lastErr = new Errno(_tuple$6[2]);
  6413. return [r1, r2, lastErr];
  6414. } else if (_ref === 7) {
  6415. _tuple$7 = Syscall9(p.Addr(), (a.$length >>> 0), (0 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 0]), (1 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 1]), (2 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 2]), (3 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 3]), (4 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 4]), (5 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 5]), (6 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 6]), 0, 0); r1 = _tuple$7[0]; r2 = _tuple$7[1]; lastErr = new Errno(_tuple$7[2]);
  6416. return [r1, r2, lastErr];
  6417. } else if (_ref === 8) {
  6418. _tuple$8 = Syscall9(p.Addr(), (a.$length >>> 0), (0 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 0]), (1 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 1]), (2 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 2]), (3 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 3]), (4 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 4]), (5 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 5]), (6 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 6]), (7 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 7]), 0); r1 = _tuple$8[0]; r2 = _tuple$8[1]; lastErr = new Errno(_tuple$8[2]);
  6419. return [r1, r2, lastErr];
  6420. } else if (_ref === 9) {
  6421. _tuple$9 = Syscall9(p.Addr(), (a.$length >>> 0), (0 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 0]), (1 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 1]), (2 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 2]), (3 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 3]), (4 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 4]), (5 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 5]), (6 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 6]), (7 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 7]), (8 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 8])); r1 = _tuple$9[0]; r2 = _tuple$9[1]; lastErr = new Errno(_tuple$9[2]);
  6422. return [r1, r2, lastErr];
  6423. } else if (_ref === 10) {
  6424. _tuple$10 = Syscall12(p.Addr(), (a.$length >>> 0), (0 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 0]), (1 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 1]), (2 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 2]), (3 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 3]), (4 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 4]), (5 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 5]), (6 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 6]), (7 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 7]), (8 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 8]), (9 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 9]), 0, 0); r1 = _tuple$10[0]; r2 = _tuple$10[1]; lastErr = new Errno(_tuple$10[2]);
  6425. return [r1, r2, lastErr];
  6426. } else if (_ref === 11) {
  6427. _tuple$11 = Syscall12(p.Addr(), (a.$length >>> 0), (0 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 0]), (1 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 1]), (2 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 2]), (3 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 3]), (4 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 4]), (5 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 5]), (6 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 6]), (7 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 7]), (8 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 8]), (9 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 9]), (10 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 10]), 0); r1 = _tuple$11[0]; r2 = _tuple$11[1]; lastErr = new Errno(_tuple$11[2]);
  6428. return [r1, r2, lastErr];
  6429. } else if (_ref === 12) {
  6430. _tuple$12 = Syscall12(p.Addr(), (a.$length >>> 0), (0 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 0]), (1 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 1]), (2 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 2]), (3 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 3]), (4 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 4]), (5 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 5]), (6 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 6]), (7 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 7]), (8 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 8]), (9 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 9]), (10 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 10]), (11 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 11])); r1 = _tuple$12[0]; r2 = _tuple$12[1]; lastErr = new Errno(_tuple$12[2]);
  6431. return [r1, r2, lastErr];
  6432. } else if (_ref === 13) {
  6433. _tuple$13 = Syscall15(p.Addr(), (a.$length >>> 0), (0 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 0]), (1 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 1]), (2 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 2]), (3 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 3]), (4 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 4]), (5 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 5]), (6 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 6]), (7 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 7]), (8 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 8]), (9 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 9]), (10 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 10]), (11 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 11]), (12 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 12]), 0, 0); r1 = _tuple$13[0]; r2 = _tuple$13[1]; lastErr = new Errno(_tuple$13[2]);
  6434. return [r1, r2, lastErr];
  6435. } else if (_ref === 14) {
  6436. _tuple$14 = Syscall15(p.Addr(), (a.$length >>> 0), (0 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 0]), (1 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 1]), (2 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 2]), (3 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 3]), (4 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 4]), (5 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 5]), (6 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 6]), (7 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 7]), (8 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 8]), (9 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 9]), (10 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 10]), (11 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 11]), (12 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 12]), (13 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 13]), 0); r1 = _tuple$14[0]; r2 = _tuple$14[1]; lastErr = new Errno(_tuple$14[2]);
  6437. return [r1, r2, lastErr];
  6438. } else if (_ref === 15) {
  6439. _tuple$15 = Syscall15(p.Addr(), (a.$length >>> 0), (0 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 0]), (1 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 1]), (2 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 2]), (3 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 3]), (4 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 4]), (5 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 5]), (6 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 6]), (7 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 7]), (8 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 8]), (9 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 9]), (10 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 10]), (11 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 11]), (12 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 12]), (13 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 13]), (14 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 14])); r1 = _tuple$15[0]; r2 = _tuple$15[1]; lastErr = new Errno(_tuple$15[2]);
  6440. return [r1, r2, lastErr];
  6441. } else {
  6442. $panic(new $String("Call " + p.Name + " with too many arguments " + itoa(a.$length) + "."));
  6443. }
  6444. return [r1, r2, lastErr];
  6445. };
  6446. Proc.prototype.Call = function(a) { return this.$val.Call(a); };
  6447. LazyDLL.ptr.prototype.mustLoad = function() {
  6448. var $ptr, d, e;
  6449. d = this;
  6450. e = d.Load();
  6451. if (!($interfaceIsEqual(e, $ifaceNil))) {
  6452. $panic(e);
  6453. }
  6454. };
  6455. LazyDLL.prototype.mustLoad = function() { return this.$val.mustLoad(); };
  6456. LazyDLL.ptr.prototype.Handle = function() {
  6457. var $ptr, d;
  6458. d = this;
  6459. d.mustLoad();
  6460. return (d.dll.Handle >>> 0);
  6461. };
  6462. LazyDLL.prototype.Handle = function() { return this.$val.Handle(); };
  6463. LazyDLL.ptr.prototype.NewProc = function(name) {
  6464. var $ptr, d, name;
  6465. d = this;
  6466. return new LazyProc.ptr(new sync.Mutex.ptr(), name, d, ptrType$4.nil);
  6467. };
  6468. LazyDLL.prototype.NewProc = function(name) { return this.$val.NewProc(name); };
  6469. NewLazyDLL = function(name) {
  6470. var $ptr, name;
  6471. return new LazyDLL.ptr(new sync.Mutex.ptr(), ptrType$3.nil, name);
  6472. };
  6473. $pkg.NewLazyDLL = NewLazyDLL;
  6474. LazyProc.ptr.prototype.mustFind = function() {
  6475. var $ptr, e, p;
  6476. p = this;
  6477. e = p.Find();
  6478. if (!($interfaceIsEqual(e, $ifaceNil))) {
  6479. $panic(e);
  6480. }
  6481. };
  6482. LazyProc.prototype.mustFind = function() { return this.$val.mustFind(); };
  6483. LazyProc.ptr.prototype.Addr = function() {
  6484. var $ptr, p;
  6485. p = this;
  6486. p.mustFind();
  6487. return p.proc.Addr();
  6488. };
  6489. LazyProc.prototype.Addr = function() { return this.$val.Addr(); };
  6490. LazyProc.ptr.prototype.Call = function(a) {
  6491. var $ptr, _tuple, a, lastErr, p, r1, r2;
  6492. r1 = 0;
  6493. r2 = 0;
  6494. lastErr = $ifaceNil;
  6495. p = this;
  6496. p.mustFind();
  6497. _tuple = p.proc.Call(a); r1 = _tuple[0]; r2 = _tuple[1]; lastErr = _tuple[2];
  6498. return [r1, r2, lastErr];
  6499. };
  6500. LazyProc.prototype.Call = function(a) { return this.$val.Call(a); };
  6501. CloseOnExec = function(fd) {
  6502. var $ptr, fd;
  6503. SetHandleInformation(fd, 1, 0);
  6504. };
  6505. $pkg.CloseOnExec = CloseOnExec;
  6506. FullPath = function(name) {
  6507. var $ptr, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, _tuple$2, buf, err, n, name, p, path;
  6508. path = "";
  6509. err = $ifaceNil;
  6510. _tuple = UTF16PtrFromString(name); p = _tuple[0]; err = _tuple[1];
  6511. if (!($interfaceIsEqual(err, $ifaceNil))) {
  6512. _tmp = ""; _tmp$1 = err; path = _tmp; err = _tmp$1;
  6513. return [path, err];
  6514. }
  6515. buf = $makeSlice(sliceType$2, 100);
  6516. _tuple$1 = GetFullPathName(p, (buf.$length >>> 0), $indexPtr(buf.$array, buf.$offset + 0, ptrType), ptrType$6.nil); n = _tuple$1[0]; err = _tuple$1[1];
  6517. if (!($interfaceIsEqual(err, $ifaceNil))) {
  6518. _tmp$2 = ""; _tmp$3 = err; path = _tmp$2; err = _tmp$3;
  6519. return [path, err];
  6520. }
  6521. if (n > (buf.$length >>> 0)) {
  6522. buf = $makeSlice(sliceType$2, n);
  6523. _tuple$2 = GetFullPathName(p, (buf.$length >>> 0), $indexPtr(buf.$array, buf.$offset + 0, ptrType), ptrType$6.nil); n = _tuple$2[0]; err = _tuple$2[1];
  6524. if (!($interfaceIsEqual(err, $ifaceNil))) {
  6525. _tmp$4 = ""; _tmp$5 = err; path = _tmp$4; err = _tmp$5;
  6526. return [path, err];
  6527. }
  6528. if (n > (buf.$length >>> 0)) {
  6529. _tmp$6 = ""; _tmp$7 = new Errno(536870951); path = _tmp$6; err = _tmp$7;
  6530. return [path, err];
  6531. }
  6532. }
  6533. _tmp$8 = UTF16ToString($subslice(buf, 0, n)); _tmp$9 = $ifaceNil; path = _tmp$8; err = _tmp$9;
  6534. return [path, err];
  6535. };
  6536. $pkg.FullPath = FullPath;
  6537. itoa = function(val) {
  6538. var $ptr, val;
  6539. if (val < 0) {
  6540. return "-" + uitoa((-val >>> 0));
  6541. }
  6542. return uitoa((val >>> 0));
  6543. };
  6544. uitoa = function(val) {
  6545. var $ptr, _q, _r, buf, i, val;
  6546. buf = $clone(arrayType$2.zero(), arrayType$2);
  6547. i = 31;
  6548. while (true) {
  6549. if (!(val >= 10)) { break; }
  6550. ((i < 0 || i >= buf.length) ? $throwRuntimeError("index out of range") : buf[i] = (((_r = val % 10, _r === _r ? _r : $throwRuntimeError("integer divide by zero")) + 48 >>> 0) << 24 >>> 24));
  6551. i = i - (1) >> 0;
  6552. val = (_q = val / (10), (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >>> 0 : $throwRuntimeError("integer divide by zero"));
  6553. }
  6554. ((i < 0 || i >= buf.length) ? $throwRuntimeError("index out of range") : buf[i] = ((val + 48 >>> 0) << 24 >>> 24));
  6555. return $bytesToString($subslice(new sliceType(buf), i));
  6556. };
  6557. ByteSliceFromString = function(s) {
  6558. var $ptr, a, i, s;
  6559. i = 0;
  6560. while (true) {
  6561. if (!(i < s.length)) { break; }
  6562. if (s.charCodeAt(i) === 0) {
  6563. return [sliceType.nil, new Errno(536870951)];
  6564. }
  6565. i = i + (1) >> 0;
  6566. }
  6567. a = $makeSlice(sliceType, (s.length + 1 >> 0));
  6568. $copyString(a, s);
  6569. return [a, $ifaceNil];
  6570. };
  6571. $pkg.ByteSliceFromString = ByteSliceFromString;
  6572. BytePtrFromString = function(s) {
  6573. var $ptr, _tuple, a, err, s;
  6574. _tuple = ByteSliceFromString(s); a = _tuple[0]; err = _tuple[1];
  6575. if (!($interfaceIsEqual(err, $ifaceNil))) {
  6576. return [ptrType$15.nil, err];
  6577. }
  6578. return [$indexPtr(a.$array, a.$offset + 0, ptrType$15), $ifaceNil];
  6579. };
  6580. $pkg.BytePtrFromString = BytePtrFromString;
  6581. StringToUTF16 = function(s) {
  6582. var $ptr, _tuple, a, err, s;
  6583. _tuple = UTF16FromString(s); a = _tuple[0]; err = _tuple[1];
  6584. if (!($interfaceIsEqual(err, $ifaceNil))) {
  6585. $panic(new $String("syscall: string with NUL passed to StringToUTF16"));
  6586. }
  6587. return a;
  6588. };
  6589. $pkg.StringToUTF16 = StringToUTF16;
  6590. UTF16FromString = function(s) {
  6591. var $ptr, i, s;
  6592. i = 0;
  6593. while (true) {
  6594. if (!(i < s.length)) { break; }
  6595. if (s.charCodeAt(i) === 0) {
  6596. return [sliceType$2.nil, new Errno(536870951)];
  6597. }
  6598. i = i + (1) >> 0;
  6599. }
  6600. return [utf16.Encode(new sliceType$3($stringToRunes(s + "\x00"))), $ifaceNil];
  6601. };
  6602. $pkg.UTF16FromString = UTF16FromString;
  6603. UTF16ToString = function(s) {
  6604. var $ptr, _i, _ref, i, s, v;
  6605. _ref = s;
  6606. _i = 0;
  6607. while (true) {
  6608. if (!(_i < _ref.$length)) { break; }
  6609. i = _i;
  6610. v = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]);
  6611. if (v === 0) {
  6612. s = $subslice(s, 0, i);
  6613. break;
  6614. }
  6615. _i++;
  6616. }
  6617. return $runesToString(utf16.Decode(s));
  6618. };
  6619. $pkg.UTF16ToString = UTF16ToString;
  6620. StringToUTF16Ptr = function(s) {
  6621. var $ptr, s, x;
  6622. return (x = StringToUTF16(s), $indexPtr(x.$array, x.$offset + 0, ptrType));
  6623. };
  6624. $pkg.StringToUTF16Ptr = StringToUTF16Ptr;
  6625. UTF16PtrFromString = function(s) {
  6626. var $ptr, _tuple, a, err, s;
  6627. _tuple = UTF16FromString(s); a = _tuple[0]; err = _tuple[1];
  6628. if (!($interfaceIsEqual(err, $ifaceNil))) {
  6629. return [ptrType.nil, err];
  6630. }
  6631. return [$indexPtr(a.$array, a.$offset + 0, ptrType), $ifaceNil];
  6632. };
  6633. $pkg.UTF16PtrFromString = UTF16PtrFromString;
  6634. langid = function(pri, sub) {
  6635. var $ptr, pri, sub;
  6636. return (((sub >>> 0) << 10 >>> 0) | (pri >>> 0)) >>> 0;
  6637. };
  6638. Errno.prototype.Error = function() {
  6639. var $ptr, _tuple, _tuple$1, b, e, err, flags, idx, n, x, x$1;
  6640. e = this.$val;
  6641. idx = ((e - 536870912 >>> 0) >> 0);
  6642. if (0 <= idx && idx < 131) {
  6643. return ((idx < 0 || idx >= errors$1.length) ? $throwRuntimeError("index out of range") : errors$1[idx]);
  6644. }
  6645. flags = 12800;
  6646. b = $makeSlice(sliceType$2, 300);
  6647. _tuple = FormatMessage(flags, 0, (e >>> 0), langid(9, 1), b, ptrType$15.nil); n = _tuple[0]; err = _tuple[1];
  6648. if (!($interfaceIsEqual(err, $ifaceNil))) {
  6649. _tuple$1 = FormatMessage(flags, 0, (e >>> 0), 0, b, ptrType$15.nil); n = _tuple$1[0]; err = _tuple$1[1];
  6650. if (!($interfaceIsEqual(err, $ifaceNil))) {
  6651. return "winapi error #" + itoa((e >> 0));
  6652. }
  6653. }
  6654. while (true) {
  6655. if (!(n > 0 && (((x = n - 1 >>> 0, ((x < 0 || x >= b.$length) ? $throwRuntimeError("index out of range") : b.$array[b.$offset + x])) === 10) || ((x$1 = n - 1 >>> 0, ((x$1 < 0 || x$1 >= b.$length) ? $throwRuntimeError("index out of range") : b.$array[b.$offset + x$1])) === 13)))) { break; }
  6656. n = n - (1) >>> 0;
  6657. }
  6658. return $runesToString(utf16.Decode($subslice(b, 0, n)));
  6659. };
  6660. $ptrType(Errno).prototype.Error = function() { return new Errno(this.$get()).Error(); };
  6661. Errno.prototype.Temporary = function() {
  6662. var $ptr, e;
  6663. e = this.$val;
  6664. return (e === 536870950) || (e === 536870971) || new Errno(e).Timeout();
  6665. };
  6666. $ptrType(Errno).prototype.Temporary = function() { return new Errno(this.$get()).Temporary(); };
  6667. Errno.prototype.Timeout = function() {
  6668. var $ptr, e;
  6669. e = this.$val;
  6670. return (e === 536870918) || (e === 536871039) || (e === 536871033);
  6671. };
  6672. $ptrType(Errno).prototype.Timeout = function() { return new Errno(this.$get()).Timeout(); };
  6673. Exit = function(code) {
  6674. var $ptr, code;
  6675. ExitProcess((code >>> 0));
  6676. };
  6677. $pkg.Exit = Exit;
  6678. makeInheritSa = function() {
  6679. var $ptr, sa;
  6680. sa = $clone(new SecurityAttributes.ptr(), SecurityAttributes);
  6681. sa.Length = 12;
  6682. sa.InheritHandle = 1;
  6683. return sa;
  6684. };
  6685. Open = function(path, mode, perm) {
  6686. var $ptr, _ref, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tuple, _tuple$1, access, createmode, e, err, fd, h, mode, path, pathp, perm, sa, sharemode;
  6687. fd = 0;
  6688. err = $ifaceNil;
  6689. if (path.length === 0) {
  6690. _tmp = 4294967295; _tmp$1 = new Errno(2); fd = _tmp; err = _tmp$1;
  6691. return [fd, err];
  6692. }
  6693. _tuple = UTF16PtrFromString(path); pathp = _tuple[0]; err = _tuple[1];
  6694. if (!($interfaceIsEqual(err, $ifaceNil))) {
  6695. _tmp$2 = 4294967295; _tmp$3 = err; fd = _tmp$2; err = _tmp$3;
  6696. return [fd, err];
  6697. }
  6698. access = 0;
  6699. _ref = mode & 3;
  6700. if (_ref === 0) {
  6701. access = 2147483648;
  6702. } else if (_ref === 1) {
  6703. access = 1073741824;
  6704. } else if (_ref === 2) {
  6705. access = 3221225472;
  6706. }
  6707. if (!(((mode & 64) === 0))) {
  6708. access = (access | (1073741824)) >>> 0;
  6709. }
  6710. if (!(((mode & 1024) === 0))) {
  6711. access = (access & ~(1073741824)) >>> 0;
  6712. access = (access | (4)) >>> 0;
  6713. }
  6714. sharemode = 3;
  6715. sa = ptrType$10.nil;
  6716. if ((mode & 524288) === 0) {
  6717. sa = makeInheritSa();
  6718. }
  6719. createmode = 0;
  6720. if ((mode & 192) === 192) {
  6721. createmode = 1;
  6722. } else if ((mode & 576) === 576) {
  6723. createmode = 2;
  6724. } else if ((mode & 64) === 64) {
  6725. createmode = 4;
  6726. } else if ((mode & 512) === 512) {
  6727. createmode = 5;
  6728. } else {
  6729. createmode = 3;
  6730. }
  6731. _tuple$1 = CreateFile(pathp, access, sharemode, sa, createmode, 128, 0); h = _tuple$1[0]; e = _tuple$1[1];
  6732. _tmp$4 = h; _tmp$5 = e; fd = _tmp$4; err = _tmp$5;
  6733. return [fd, err];
  6734. };
  6735. $pkg.Open = Open;
  6736. Read = function(fd, p) {
  6737. var $ptr, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, done, done_ptr, e, err, fd, n, p;
  6738. n = 0;
  6739. err = $ifaceNil;
  6740. done = 0;
  6741. e = ReadFile(fd, p, (done_ptr || (done_ptr = new ptrType$11(function() { return done; }, function($v) { done = $v; }))), ptrType$18.nil);
  6742. if (!($interfaceIsEqual(e, $ifaceNil))) {
  6743. if ($interfaceIsEqual(e, new Errno(109))) {
  6744. _tmp = 0; _tmp$1 = $ifaceNil; n = _tmp; err = _tmp$1;
  6745. return [n, err];
  6746. }
  6747. _tmp$2 = 0; _tmp$3 = e; n = _tmp$2; err = _tmp$3;
  6748. return [n, err];
  6749. }
  6750. _tmp$4 = (done >> 0); _tmp$5 = $ifaceNil; n = _tmp$4; err = _tmp$5;
  6751. return [n, err];
  6752. };
  6753. $pkg.Read = Read;
  6754. Write = function(fd, p) {
  6755. var $ptr, _tmp, _tmp$1, _tmp$2, _tmp$3, done, done_ptr, e, err, fd, n, p;
  6756. n = 0;
  6757. err = $ifaceNil;
  6758. done = 0;
  6759. e = WriteFile(fd, p, (done_ptr || (done_ptr = new ptrType$11(function() { return done; }, function($v) { done = $v; }))), ptrType$18.nil);
  6760. if (!($interfaceIsEqual(e, $ifaceNil))) {
  6761. _tmp = 0; _tmp$1 = e; n = _tmp; err = _tmp$1;
  6762. return [n, err];
  6763. }
  6764. _tmp$2 = (done >> 0); _tmp$3 = $ifaceNil; n = _tmp$2; err = _tmp$3;
  6765. return [n, err];
  6766. };
  6767. $pkg.Write = Write;
  6768. Seek = function(fd, offset, whence) {
  6769. var $ptr, _ref, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tuple, _tuple$1, e, err, fd, ft, hi, hi_ptr, lo, newoffset, offset, rlo, w, whence, x, x$1, x$2;
  6770. newoffset = new $Int64(0, 0);
  6771. err = $ifaceNil;
  6772. w = 0;
  6773. _ref = whence;
  6774. if (_ref === 0) {
  6775. w = 0;
  6776. } else if (_ref === 1) {
  6777. w = 1;
  6778. } else if (_ref === 2) {
  6779. w = 2;
  6780. }
  6781. hi = ((x = $shiftRightInt64(offset, 32), x.$low + ((x.$high >> 31) * 4294967296)) >> 0);
  6782. lo = ((offset.$low + ((offset.$high >> 31) * 4294967296)) >> 0);
  6783. _tuple = GetFileType(fd); ft = _tuple[0];
  6784. if (ft === 3) {
  6785. _tmp = new $Int64(0, 0); _tmp$1 = new Errno(536871015); newoffset = _tmp; err = _tmp$1;
  6786. return [newoffset, err];
  6787. }
  6788. _tuple$1 = SetFilePointer(fd, lo, (hi_ptr || (hi_ptr = new ptrType$19(function() { return hi; }, function($v) { hi = $v; }))), w); rlo = _tuple$1[0]; e = _tuple$1[1];
  6789. if (!($interfaceIsEqual(e, $ifaceNil))) {
  6790. _tmp$2 = new $Int64(0, 0); _tmp$3 = e; newoffset = _tmp$2; err = _tmp$3;
  6791. return [newoffset, err];
  6792. }
  6793. _tmp$4 = (x$1 = $shiftLeft64(new $Int64(0, hi), 32), x$2 = new $Int64(0, rlo), new $Int64(x$1.$high + x$2.$high, x$1.$low + x$2.$low)); _tmp$5 = $ifaceNil; newoffset = _tmp$4; err = _tmp$5;
  6794. return [newoffset, err];
  6795. };
  6796. $pkg.Seek = Seek;
  6797. Ftruncate = function(fd, length) {
  6798. var $ptr, _tuple, _tuple$1, curoffset, e, err, fd, length, $deferred;
  6799. /* */ var $err = null; try { $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
  6800. err = $ifaceNil;
  6801. _tuple = Seek(fd, new $Int64(0, 0), 1); curoffset = _tuple[0]; e = _tuple[1];
  6802. if (!($interfaceIsEqual(e, $ifaceNil))) {
  6803. err = e;
  6804. return err;
  6805. }
  6806. $deferred.push([Seek, [fd, curoffset, 0]]);
  6807. _tuple$1 = Seek(fd, length, 0); e = _tuple$1[1];
  6808. if (!($interfaceIsEqual(e, $ifaceNil))) {
  6809. err = e;
  6810. return err;
  6811. }
  6812. e = SetEndOfFile(fd);
  6813. if (!($interfaceIsEqual(e, $ifaceNil))) {
  6814. err = e;
  6815. return err;
  6816. }
  6817. err = $ifaceNil;
  6818. return err;
  6819. /* */ } catch(err) { $err = err; } finally { $callDeferred($deferred, $err); if (!$curGoroutine.asleep) { return err; } }
  6820. };
  6821. $pkg.Ftruncate = Ftruncate;
  6822. Fsync = function(fd) {
  6823. var $ptr, err, fd;
  6824. err = $ifaceNil;
  6825. err = FlushFileBuffers(fd);
  6826. return err;
  6827. };
  6828. $pkg.Fsync = Fsync;
  6829. RawSockaddrAny.ptr.prototype.Sockaddr = function() {
  6830. var $ptr, _array, _array$1, _array$2, _array$3, _ref, _struct, _struct$1, _struct$2, _struct$3, _view, _view$1, _view$2, _view$3, i, i$1, p, p$1, pp, pp$1, rsa, sa, sa$1, x, x$1, x$2, x$3;
  6831. rsa = this;
  6832. _ref = rsa.Addr.Family;
  6833. if (_ref === 1) {
  6834. return [$ifaceNil, new Errno(536871042)];
  6835. } else if (_ref === 2) {
  6836. _array$1 = new Uint8Array(112);
  6837. pp = (_array = _array$1, _struct = new RawSockaddrInet4.ptr(), _view = new DataView(_array.buffer, _array.byteOffset), _struct.Family = _view.getUint16(0, true), _struct.Port = _view.getUint16(2, true), _struct.Addr = new ($nativeArray($kindUint8))(_array.buffer, $min(_array.byteOffset + 4, _array.buffer.byteLength)), _struct.Zero = new ($nativeArray($kindUint8))(_array.buffer, $min(_array.byteOffset + 8, _array.buffer.byteLength)), _struct);
  6838. _struct$1 = rsa, _view$1 = new DataView(_array$1.buffer, _array$1.byteOffset), _struct$1.Addr.Family = _view$1.getUint16(0, true), _struct$1.Addr.Data = new ($nativeArray($kindInt8))(_array$1.buffer, $min(_array$1.byteOffset + 2, _array$1.buffer.byteLength)), _struct$1.Pad = new ($nativeArray($kindInt8))(_array$1.buffer, $min(_array$1.byteOffset + 16, _array$1.buffer.byteLength));
  6839. sa = new SockaddrInet4.ptr();
  6840. p = (pp.$ptr_Port || (pp.$ptr_Port = new ptrType(function() { return this.$target.Port; }, function($v) { this.$target.Port = $v; }, pp)));
  6841. sa.Port = (((p.nilCheck, p[0]) >> 0) << 8 >> 0) + ((p.nilCheck, p[1]) >> 0) >> 0;
  6842. i = 0;
  6843. while (true) {
  6844. if (!(i < 4)) { break; }
  6845. (x$1 = sa.Addr, ((i < 0 || i >= x$1.length) ? $throwRuntimeError("index out of range") : x$1[i] = (x = pp.Addr, ((i < 0 || i >= x.length) ? $throwRuntimeError("index out of range") : x[i]))));
  6846. i = i + (1) >> 0;
  6847. }
  6848. return [sa, $ifaceNil];
  6849. } else if (_ref === 23) {
  6850. _array$3 = new Uint8Array(112);
  6851. pp$1 = (_array$2 = _array$3, _struct$2 = new RawSockaddrInet6.ptr(), _view$2 = new DataView(_array$2.buffer, _array$2.byteOffset), _struct$2.Family = _view$2.getUint16(0, true), _struct$2.Port = _view$2.getUint16(2, true), _struct$2.Flowinfo = _view$2.getUint32(4, true), _struct$2.Addr = new ($nativeArray($kindUint8))(_array$2.buffer, $min(_array$2.byteOffset + 8, _array$2.buffer.byteLength)), _struct$2.Scope_id = _view$2.getUint32(24, true), _struct$2);
  6852. _struct$3 = rsa, _view$3 = new DataView(_array$3.buffer, _array$3.byteOffset), _struct$3.Addr.Family = _view$3.getUint16(0, true), _struct$3.Addr.Data = new ($nativeArray($kindInt8))(_array$3.buffer, $min(_array$3.byteOffset + 2, _array$3.buffer.byteLength)), _struct$3.Pad = new ($nativeArray($kindInt8))(_array$3.buffer, $min(_array$3.byteOffset + 16, _array$3.buffer.byteLength));
  6853. sa$1 = new SockaddrInet6.ptr();
  6854. p$1 = (pp$1.$ptr_Port || (pp$1.$ptr_Port = new ptrType(function() { return this.$target.Port; }, function($v) { this.$target.Port = $v; }, pp$1)));
  6855. sa$1.Port = (((p$1.nilCheck, p$1[0]) >> 0) << 8 >> 0) + ((p$1.nilCheck, p$1[1]) >> 0) >> 0;
  6856. sa$1.ZoneId = pp$1.Scope_id;
  6857. i$1 = 0;
  6858. while (true) {
  6859. if (!(i$1 < 16)) { break; }
  6860. (x$3 = sa$1.Addr, ((i$1 < 0 || i$1 >= x$3.length) ? $throwRuntimeError("index out of range") : x$3[i$1] = (x$2 = pp$1.Addr, ((i$1 < 0 || i$1 >= x$2.length) ? $throwRuntimeError("index out of range") : x$2[i$1]))));
  6861. i$1 = i$1 + (1) >> 0;
  6862. }
  6863. return [sa$1, $ifaceNil];
  6864. }
  6865. return [$ifaceNil, new Errno(536870917)];
  6866. };
  6867. RawSockaddrAny.prototype.Sockaddr = function() { return this.$val.Sockaddr(); };
  6868. Socket = function(domain, typ, proto) {
  6869. var $ptr, _tmp, _tmp$1, _tuple, domain, err, fd, proto, typ;
  6870. fd = 0;
  6871. err = $ifaceNil;
  6872. if ((domain === 23) && $pkg.SocketDisableIPv6) {
  6873. _tmp = 4294967295; _tmp$1 = new Errno(536870917); fd = _tmp; err = _tmp$1;
  6874. return [fd, err];
  6875. }
  6876. _tuple = socket((domain >> 0), (typ >> 0), (proto >> 0)); fd = _tuple[0]; err = _tuple[1];
  6877. return [fd, err];
  6878. };
  6879. $pkg.Socket = Socket;
  6880. SetsockoptInt = function(fd, level, opt, value) {
  6881. var $ptr, err, fd, level, opt, v, v_ptr, value;
  6882. err = $ifaceNil;
  6883. v = (value >> 0);
  6884. err = Setsockopt(fd, (level >> 0), (opt >> 0), (v_ptr || (v_ptr = new ptrType$19(function() { return v; }, function($v) { v = $v; }))), 4);
  6885. return err;
  6886. };
  6887. $pkg.SetsockoptInt = SetsockoptInt;
  6888. Shutdown = function(fd, how) {
  6889. var $ptr, err, fd, how;
  6890. err = $ifaceNil;
  6891. err = shutdown(fd, (how >> 0));
  6892. return err;
  6893. };
  6894. $pkg.Shutdown = Shutdown;
  6895. SetsockoptLinger = function(fd, level, opt, l) {
  6896. var $ptr, _array, _struct, _view, err, fd, l, level, opt, sys;
  6897. err = $ifaceNil;
  6898. sys = new sysLinger.ptr((l.Onoff << 16 >>> 16), (l.Linger << 16 >>> 16));
  6899. _array = new Uint8Array(4);
  6900. err = Setsockopt(fd, (level >> 0), (opt >> 0), _array, 4);
  6901. _struct = sys, _view = new DataView(_array.buffer, _array.byteOffset), _struct.Onoff = _view.getUint16(0, true), _struct.Linger = _view.getUint16(2, true);
  6902. return err;
  6903. };
  6904. $pkg.SetsockoptLinger = SetsockoptLinger;
  6905. Getpid = function() {
  6906. var $ptr, pid;
  6907. pid = 0;
  6908. pid = (getCurrentProcessId() >> 0);
  6909. return pid;
  6910. };
  6911. $pkg.Getpid = Getpid;
  6912. FindFirstFile = function(name, data) {
  6913. var $ptr, _tuple, data, data1, err, handle, name;
  6914. handle = 0;
  6915. err = $ifaceNil;
  6916. data1 = $clone(new win32finddata1.ptr(), win32finddata1);
  6917. _tuple = findFirstFile1(name, data1); handle = _tuple[0]; err = _tuple[1];
  6918. if ($interfaceIsEqual(err, $ifaceNil)) {
  6919. copyFindData(data, data1);
  6920. }
  6921. return [handle, err];
  6922. };
  6923. $pkg.FindFirstFile = FindFirstFile;
  6924. FindNextFile = function(handle, data) {
  6925. var $ptr, data, data1, err, handle;
  6926. err = $ifaceNil;
  6927. data1 = $clone(new win32finddata1.ptr(), win32finddata1);
  6928. err = findNextFile1(handle, data1);
  6929. if ($interfaceIsEqual(err, $ifaceNil)) {
  6930. copyFindData(data, data1);
  6931. }
  6932. return err;
  6933. };
  6934. $pkg.FindNextFile = FindNextFile;
  6935. Fchdir = function(fd) {
  6936. var $ptr, err, fd;
  6937. err = $ifaceNil;
  6938. err = new Errno(536871042);
  6939. return err;
  6940. };
  6941. $pkg.Fchdir = Fchdir;
  6942. Fchmod = function(fd, mode) {
  6943. var $ptr, err, fd, mode;
  6944. err = $ifaceNil;
  6945. err = new Errno(536871042);
  6946. return err;
  6947. };
  6948. $pkg.Fchmod = Fchmod;
  6949. Fchown = function(fd, uid, gid) {
  6950. var $ptr, err, fd, gid, uid;
  6951. err = $ifaceNil;
  6952. err = new Errno(536871042);
  6953. return err;
  6954. };
  6955. $pkg.Fchown = Fchown;
  6956. Readlink = function(path, buf) {
  6957. var $ptr, _array, _q, _struct, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tuple, _view, buf, bytesReturned, bytesReturned_ptr, err, fd, n, path, rdb, rdbbuf, s, $deferred;
  6958. /* */ var $err = null; try { $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
  6959. n = 0;
  6960. err = $ifaceNil;
  6961. _tuple = CreateFile(StringToUTF16Ptr(path), 2147483648, 0, ptrType$10.nil, 3, 35651584, 0); fd = _tuple[0]; err = _tuple[1];
  6962. if (!($interfaceIsEqual(err, $ifaceNil))) {
  6963. _tmp = -1; _tmp$1 = err; n = _tmp; err = _tmp$1;
  6964. return [n, err];
  6965. }
  6966. $deferred.push([CloseHandle, [fd]]);
  6967. rdbbuf = $makeSlice(sliceType, 16384);
  6968. bytesReturned = 0;
  6969. err = DeviceIoControl(fd, 589992, ptrType$15.nil, 0, $indexPtr(rdbbuf.$array, rdbbuf.$offset + 0, ptrType$15), (rdbbuf.$length >>> 0), (bytesReturned_ptr || (bytesReturned_ptr = new ptrType$11(function() { return bytesReturned; }, function($v) { bytesReturned = $v; }))), ptrType$18.nil);
  6970. if (!($interfaceIsEqual(err, $ifaceNil))) {
  6971. _tmp$2 = -1; _tmp$3 = err; n = _tmp$2; err = _tmp$3;
  6972. return [n, err];
  6973. }
  6974. rdb = (_array = $sliceToArray(rdbbuf), _struct = new reparseDataBuffer.ptr(), _view = new DataView(_array.buffer, _array.byteOffset), _struct.ReparseTag = _view.getUint32(0, true), _struct.ReparseDataLength = _view.getUint16(4, true), _struct.Reserved = _view.getUint16(6, true), _struct.SubstituteNameOffset = _view.getUint16(8, true), _struct.SubstituteNameLength = _view.getUint16(10, true), _struct.PrintNameOffset = _view.getUint16(12, true), _struct.PrintNameLength = _view.getUint16(14, true), _struct.Flags = _view.getUint32(16, true), _struct.PathBuffer = new ($nativeArray($kindUint16))(_array.buffer, $min(_array.byteOffset + 20, _array.buffer.byteLength)), _struct);
  6975. if ((bytesReturned >>> 0) < 22 || !((rdb.ReparseTag === 2684354572))) {
  6976. _tmp$4 = -1; _tmp$5 = new Errno(2); n = _tmp$4; err = _tmp$5;
  6977. return [n, err];
  6978. }
  6979. s = UTF16ToString($subslice(new sliceType$2($sliceToArray(new sliceType(rdb.PathBuffer))), 0, (_q = rdb.PrintNameLength / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >>> 0 : $throwRuntimeError("integer divide by zero"))));
  6980. n = $copySlice(buf, new sliceType($stringToBytes(s)));
  6981. _tmp$6 = n; _tmp$7 = $ifaceNil; n = _tmp$6; err = _tmp$7;
  6982. return [n, err];
  6983. /* */ } catch(err) { $err = err; } finally { $callDeferred($deferred, $err); if (!$curGoroutine.asleep) { return [n, err]; } }
  6984. };
  6985. $pkg.Readlink = Readlink;
  6986. FreeLibrary = function(handle) {
  6987. var $ptr, _tuple, e1, err, handle, r1;
  6988. err = $ifaceNil;
  6989. _tuple = Syscall(procFreeLibrary.Addr(), 1, (handle >>> 0), 0, 0); r1 = _tuple[0]; e1 = _tuple[2];
  6990. if (r1 === 0) {
  6991. if (!((e1 === 0))) {
  6992. err = new Errno(e1);
  6993. } else {
  6994. err = new Errno(536870951);
  6995. }
  6996. }
  6997. return err;
  6998. };
  6999. $pkg.FreeLibrary = FreeLibrary;
  7000. FormatMessage = function(flags, msgsrc, msgid, langid$1, buf, args) {
  7001. var $ptr, _p0, _tuple, args, buf, e1, err, flags, langid$1, msgid, msgsrc, n, r0;
  7002. n = 0;
  7003. err = $ifaceNil;
  7004. _p0 = ptrType.nil;
  7005. if (buf.$length > 0) {
  7006. _p0 = $indexPtr(buf.$array, buf.$offset + 0, ptrType);
  7007. }
  7008. _tuple = Syscall9(procFormatMessageW.Addr(), 7, (flags >>> 0), (msgsrc >>> 0), (msgid >>> 0), (langid$1 >>> 0), _p0, (buf.$length >>> 0), args, 0, 0); r0 = _tuple[0]; e1 = _tuple[2];
  7009. n = (r0 >>> 0);
  7010. if (n === 0) {
  7011. if (!((e1 === 0))) {
  7012. err = new Errno(e1);
  7013. } else {
  7014. err = new Errno(536870951);
  7015. }
  7016. }
  7017. return [n, err];
  7018. };
  7019. $pkg.FormatMessage = FormatMessage;
  7020. ExitProcess = function(exitcode) {
  7021. var $ptr, exitcode;
  7022. Syscall(procExitProcess.Addr(), 1, (exitcode >>> 0), 0, 0);
  7023. return;
  7024. };
  7025. $pkg.ExitProcess = ExitProcess;
  7026. CreateFile = function(name, access, mode, sa, createmode, attrs, templatefile) {
  7027. var $ptr, _array, _struct, _tuple, _view, access, attrs, createmode, e1, err, handle, mode, name, r0, sa, templatefile;
  7028. handle = 0;
  7029. err = $ifaceNil;
  7030. _array = new Uint8Array(12);
  7031. _tuple = Syscall9(procCreateFileW.Addr(), 7, name, (access >>> 0), (mode >>> 0), _array, (createmode >>> 0), (attrs >>> 0), (templatefile >>> 0), 0, 0); r0 = _tuple[0]; e1 = _tuple[2];
  7032. _struct = sa, _view = new DataView(_array.buffer, _array.byteOffset), _struct.Length = _view.getUint32(0, true), _struct.SecurityDescriptor = _view.getUintptr(4, true), _struct.InheritHandle = _view.getUint32(8, true);
  7033. handle = (r0 >>> 0);
  7034. if (handle === 4294967295) {
  7035. if (!((e1 === 0))) {
  7036. err = new Errno(e1);
  7037. } else {
  7038. err = new Errno(536870951);
  7039. }
  7040. }
  7041. return [handle, err];
  7042. };
  7043. $pkg.CreateFile = CreateFile;
  7044. ReadFile = function(handle, buf, done, overlapped) {
  7045. var $ptr, _array, _p0, _struct, _tuple, _view, buf, done, e1, err, handle, overlapped, r1;
  7046. err = $ifaceNil;
  7047. _p0 = ptrType$15.nil;
  7048. if (buf.$length > 0) {
  7049. _p0 = $indexPtr(buf.$array, buf.$offset + 0, ptrType$15);
  7050. }
  7051. _array = new Uint8Array(20);
  7052. _tuple = Syscall6(procReadFile.Addr(), 5, (handle >>> 0), _p0, (buf.$length >>> 0), done, _array, 0); r1 = _tuple[0]; e1 = _tuple[2];
  7053. _struct = overlapped, _view = new DataView(_array.buffer, _array.byteOffset), _struct.Internal = _view.getUintptr(0, true), _struct.InternalHigh = _view.getUintptr(4, true), _struct.Offset = _view.getUint32(8, true), _struct.OffsetHigh = _view.getUint32(12, true), _struct.HEvent = _view.getUintptr(16, true);
  7054. if (r1 === 0) {
  7055. if (!((e1 === 0))) {
  7056. err = new Errno(e1);
  7057. } else {
  7058. err = new Errno(536870951);
  7059. }
  7060. }
  7061. return err;
  7062. };
  7063. $pkg.ReadFile = ReadFile;
  7064. SetFilePointer = function(handle, lowoffset, highoffsetptr, whence) {
  7065. var $ptr, _tuple, e1, err, handle, highoffsetptr, lowoffset, newlowoffset, r0, whence;
  7066. newlowoffset = 0;
  7067. err = $ifaceNil;
  7068. _tuple = Syscall6(procSetFilePointer.Addr(), 4, (handle >>> 0), (lowoffset >>> 0), highoffsetptr, (whence >>> 0), 0, 0); r0 = _tuple[0]; e1 = _tuple[2];
  7069. newlowoffset = (r0 >>> 0);
  7070. if (newlowoffset === 4294967295) {
  7071. if (!((e1 === 0))) {
  7072. err = new Errno(e1);
  7073. } else {
  7074. err = new Errno(536870951);
  7075. }
  7076. }
  7077. return [newlowoffset, err];
  7078. };
  7079. $pkg.SetFilePointer = SetFilePointer;
  7080. CloseHandle = function(handle) {
  7081. var $ptr, _tuple, e1, err, handle, r1;
  7082. err = $ifaceNil;
  7083. _tuple = Syscall(procCloseHandle.Addr(), 1, (handle >>> 0), 0, 0); r1 = _tuple[0]; e1 = _tuple[2];
  7084. if (r1 === 0) {
  7085. if (!((e1 === 0))) {
  7086. err = new Errno(e1);
  7087. } else {
  7088. err = new Errno(536870951);
  7089. }
  7090. }
  7091. return err;
  7092. };
  7093. $pkg.CloseHandle = CloseHandle;
  7094. findFirstFile1 = function(name, data) {
  7095. var $ptr, _array, _struct, _tuple, _view, data, e1, err, handle, name, r0;
  7096. handle = 0;
  7097. err = $ifaceNil;
  7098. _array = new Uint8Array(592);
  7099. _tuple = Syscall(procFindFirstFileW.Addr(), 2, name, _array, 0); r0 = _tuple[0]; e1 = _tuple[2];
  7100. _struct = data, _view = new DataView(_array.buffer, _array.byteOffset), _struct.FileAttributes = _view.getUint32(0, true), _struct.CreationTime.LowDateTime = _view.getUint32(4, true), _struct.CreationTime.HighDateTime = _view.getUint32(8, true), _struct.LastAccessTime.LowDateTime = _view.getUint32(12, true), _struct.LastAccessTime.HighDateTime = _view.getUint32(16, true), _struct.LastWriteTime.LowDateTime = _view.getUint32(20, true), _struct.LastWriteTime.HighDateTime = _view.getUint32(24, true), _struct.FileSizeHigh = _view.getUint32(28, true), _struct.FileSizeLow = _view.getUint32(32, true), _struct.Reserved0 = _view.getUint32(36, true), _struct.Reserved1 = _view.getUint32(40, true), _struct.FileName = new ($nativeArray($kindUint16))(_array.buffer, $min(_array.byteOffset + 44, _array.buffer.byteLength)), _struct.AlternateFileName = new ($nativeArray($kindUint16))(_array.buffer, $min(_array.byteOffset + 564, _array.buffer.byteLength));
  7101. handle = (r0 >>> 0);
  7102. if (handle === 4294967295) {
  7103. if (!((e1 === 0))) {
  7104. err = new Errno(e1);
  7105. } else {
  7106. err = new Errno(536870951);
  7107. }
  7108. }
  7109. return [handle, err];
  7110. };
  7111. findNextFile1 = function(handle, data) {
  7112. var $ptr, _array, _struct, _tuple, _view, data, e1, err, handle, r1;
  7113. err = $ifaceNil;
  7114. _array = new Uint8Array(592);
  7115. _tuple = Syscall(procFindNextFileW.Addr(), 2, (handle >>> 0), _array, 0); r1 = _tuple[0]; e1 = _tuple[2];
  7116. _struct = data, _view = new DataView(_array.buffer, _array.byteOffset), _struct.FileAttributes = _view.getUint32(0, true), _struct.CreationTime.LowDateTime = _view.getUint32(4, true), _struct.CreationTime.HighDateTime = _view.getUint32(8, true), _struct.LastAccessTime.LowDateTime = _view.getUint32(12, true), _struct.LastAccessTime.HighDateTime = _view.getUint32(16, true), _struct.LastWriteTime.LowDateTime = _view.getUint32(20, true), _struct.LastWriteTime.HighDateTime = _view.getUint32(24, true), _struct.FileSizeHigh = _view.getUint32(28, true), _struct.FileSizeLow = _view.getUint32(32, true), _struct.Reserved0 = _view.getUint32(36, true), _struct.Reserved1 = _view.getUint32(40, true), _struct.FileName = new ($nativeArray($kindUint16))(_array.buffer, $min(_array.byteOffset + 44, _array.buffer.byteLength)), _struct.AlternateFileName = new ($nativeArray($kindUint16))(_array.buffer, $min(_array.byteOffset + 564, _array.buffer.byteLength));
  7117. if (r1 === 0) {
  7118. if (!((e1 === 0))) {
  7119. err = new Errno(e1);
  7120. } else {
  7121. err = new Errno(536870951);
  7122. }
  7123. }
  7124. return err;
  7125. };
  7126. FindClose = function(handle) {
  7127. var $ptr, _tuple, e1, err, handle, r1;
  7128. err = $ifaceNil;
  7129. _tuple = Syscall(procFindClose.Addr(), 1, (handle >>> 0), 0, 0); r1 = _tuple[0]; e1 = _tuple[2];
  7130. if (r1 === 0) {
  7131. if (!((e1 === 0))) {
  7132. err = new Errno(e1);
  7133. } else {
  7134. err = new Errno(536870951);
  7135. }
  7136. }
  7137. return err;
  7138. };
  7139. $pkg.FindClose = FindClose;
  7140. GetFileInformationByHandle = function(handle, data) {
  7141. var $ptr, _array, _struct, _tuple, _view, data, e1, err, handle, r1;
  7142. err = $ifaceNil;
  7143. _array = new Uint8Array(52);
  7144. _tuple = Syscall(procGetFileInformationByHandle.Addr(), 2, (handle >>> 0), _array, 0); r1 = _tuple[0]; e1 = _tuple[2];
  7145. _struct = data, _view = new DataView(_array.buffer, _array.byteOffset), _struct.FileAttributes = _view.getUint32(0, true), _struct.CreationTime.LowDateTime = _view.getUint32(4, true), _struct.CreationTime.HighDateTime = _view.getUint32(8, true), _struct.LastAccessTime.LowDateTime = _view.getUint32(12, true), _struct.LastAccessTime.HighDateTime = _view.getUint32(16, true), _struct.LastWriteTime.LowDateTime = _view.getUint32(20, true), _struct.LastWriteTime.HighDateTime = _view.getUint32(24, true), _struct.VolumeSerialNumber = _view.getUint32(28, true), _struct.FileSizeHigh = _view.getUint32(32, true), _struct.FileSizeLow = _view.getUint32(36, true), _struct.NumberOfLinks = _view.getUint32(40, true), _struct.FileIndexHigh = _view.getUint32(44, true), _struct.FileIndexLow = _view.getUint32(48, true);
  7146. if (r1 === 0) {
  7147. if (!((e1 === 0))) {
  7148. err = new Errno(e1);
  7149. } else {
  7150. err = new Errno(536870951);
  7151. }
  7152. }
  7153. return err;
  7154. };
  7155. $pkg.GetFileInformationByHandle = GetFileInformationByHandle;
  7156. RemoveDirectory = function(path) {
  7157. var $ptr, _tuple, e1, err, path, r1;
  7158. err = $ifaceNil;
  7159. _tuple = Syscall(procRemoveDirectoryW.Addr(), 1, path, 0, 0); r1 = _tuple[0]; e1 = _tuple[2];
  7160. if (r1 === 0) {
  7161. if (!((e1 === 0))) {
  7162. err = new Errno(e1);
  7163. } else {
  7164. err = new Errno(536870951);
  7165. }
  7166. }
  7167. return err;
  7168. };
  7169. $pkg.RemoveDirectory = RemoveDirectory;
  7170. DeleteFile = function(path) {
  7171. var $ptr, _tuple, e1, err, path, r1;
  7172. err = $ifaceNil;
  7173. _tuple = Syscall(procDeleteFileW.Addr(), 1, path, 0, 0); r1 = _tuple[0]; e1 = _tuple[2];
  7174. if (r1 === 0) {
  7175. if (!((e1 === 0))) {
  7176. err = new Errno(e1);
  7177. } else {
  7178. err = new Errno(536870951);
  7179. }
  7180. }
  7181. return err;
  7182. };
  7183. $pkg.DeleteFile = DeleteFile;
  7184. SetEndOfFile = function(handle) {
  7185. var $ptr, _tuple, e1, err, handle, r1;
  7186. err = $ifaceNil;
  7187. _tuple = Syscall(procSetEndOfFile.Addr(), 1, (handle >>> 0), 0, 0); r1 = _tuple[0]; e1 = _tuple[2];
  7188. if (r1 === 0) {
  7189. if (!((e1 === 0))) {
  7190. err = new Errno(e1);
  7191. } else {
  7192. err = new Errno(536870951);
  7193. }
  7194. }
  7195. return err;
  7196. };
  7197. $pkg.SetEndOfFile = SetEndOfFile;
  7198. CancelIo = function(s) {
  7199. var $ptr, _tuple, e1, err, r1, s;
  7200. err = $ifaceNil;
  7201. _tuple = Syscall(procCancelIo.Addr(), 1, (s >>> 0), 0, 0); r1 = _tuple[0]; e1 = _tuple[2];
  7202. if (r1 === 0) {
  7203. if (!((e1 === 0))) {
  7204. err = new Errno(e1);
  7205. } else {
  7206. err = new Errno(536870951);
  7207. }
  7208. }
  7209. return err;
  7210. };
  7211. $pkg.CancelIo = CancelIo;
  7212. CancelIoEx = function(s, o) {
  7213. var $ptr, _array, _struct, _tuple, _view, e1, err, o, r1, s;
  7214. err = $ifaceNil;
  7215. _array = new Uint8Array(20);
  7216. _tuple = Syscall(procCancelIoEx.Addr(), 2, (s >>> 0), _array, 0); r1 = _tuple[0]; e1 = _tuple[2];
  7217. _struct = o, _view = new DataView(_array.buffer, _array.byteOffset), _struct.Internal = _view.getUintptr(0, true), _struct.InternalHigh = _view.getUintptr(4, true), _struct.Offset = _view.getUint32(8, true), _struct.OffsetHigh = _view.getUint32(12, true), _struct.HEvent = _view.getUintptr(16, true);
  7218. if (r1 === 0) {
  7219. if (!((e1 === 0))) {
  7220. err = new Errno(e1);
  7221. } else {
  7222. err = new Errno(536870951);
  7223. }
  7224. }
  7225. return err;
  7226. };
  7227. $pkg.CancelIoEx = CancelIoEx;
  7228. GetTempPath = function(buflen, buf) {
  7229. var $ptr, _tuple, buf, buflen, e1, err, n, r0;
  7230. n = 0;
  7231. err = $ifaceNil;
  7232. _tuple = Syscall(procGetTempPathW.Addr(), 2, (buflen >>> 0), buf, 0); r0 = _tuple[0]; e1 = _tuple[2];
  7233. n = (r0 >>> 0);
  7234. if (n === 0) {
  7235. if (!((e1 === 0))) {
  7236. err = new Errno(e1);
  7237. } else {
  7238. err = new Errno(536870951);
  7239. }
  7240. }
  7241. return [n, err];
  7242. };
  7243. $pkg.GetTempPath = GetTempPath;
  7244. GetFileType = function(filehandle) {
  7245. var $ptr, _tuple, e1, err, filehandle, n, r0;
  7246. n = 0;
  7247. err = $ifaceNil;
  7248. _tuple = Syscall(procGetFileType.Addr(), 1, (filehandle >>> 0), 0, 0); r0 = _tuple[0]; e1 = _tuple[2];
  7249. n = (r0 >>> 0);
  7250. if (n === 0) {
  7251. if (!((e1 === 0))) {
  7252. err = new Errno(e1);
  7253. } else {
  7254. err = new Errno(536870951);
  7255. }
  7256. }
  7257. return [n, err];
  7258. };
  7259. $pkg.GetFileType = GetFileType;
  7260. CryptAcquireContext = function(provhandle, container, provider, provtype, flags) {
  7261. var $ptr, _tuple, container, e1, err, flags, provhandle, provider, provtype, r1;
  7262. err = $ifaceNil;
  7263. _tuple = Syscall6(procCryptAcquireContextW.Addr(), 5, provhandle, container, provider, (provtype >>> 0), (flags >>> 0), 0); r1 = _tuple[0]; e1 = _tuple[2];
  7264. if (r1 === 0) {
  7265. if (!((e1 === 0))) {
  7266. err = new Errno(e1);
  7267. } else {
  7268. err = new Errno(536870951);
  7269. }
  7270. }
  7271. return err;
  7272. };
  7273. $pkg.CryptAcquireContext = CryptAcquireContext;
  7274. CryptGenRandom = function(provhandle, buflen, buf) {
  7275. var $ptr, _tuple, buf, buflen, e1, err, provhandle, r1;
  7276. err = $ifaceNil;
  7277. _tuple = Syscall(procCryptGenRandom.Addr(), 3, (provhandle >>> 0), (buflen >>> 0), buf); r1 = _tuple[0]; e1 = _tuple[2];
  7278. if (r1 === 0) {
  7279. if (!((e1 === 0))) {
  7280. err = new Errno(e1);
  7281. } else {
  7282. err = new Errno(536870951);
  7283. }
  7284. }
  7285. return err;
  7286. };
  7287. $pkg.CryptGenRandom = CryptGenRandom;
  7288. GetFileAttributes = function(name) {
  7289. var $ptr, _tuple, attrs, e1, err, name, r0;
  7290. attrs = 0;
  7291. err = $ifaceNil;
  7292. _tuple = Syscall(procGetFileAttributesW.Addr(), 1, name, 0, 0); r0 = _tuple[0]; e1 = _tuple[2];
  7293. attrs = (r0 >>> 0);
  7294. if (attrs === 4294967295) {
  7295. if (!((e1 === 0))) {
  7296. err = new Errno(e1);
  7297. } else {
  7298. err = new Errno(536870951);
  7299. }
  7300. }
  7301. return [attrs, err];
  7302. };
  7303. $pkg.GetFileAttributes = GetFileAttributes;
  7304. GetFileAttributesEx = function(name, level, info) {
  7305. var $ptr, _tuple, e1, err, info, level, name, r1;
  7306. err = $ifaceNil;
  7307. _tuple = Syscall(procGetFileAttributesExW.Addr(), 3, name, (level >>> 0), info); r1 = _tuple[0]; e1 = _tuple[2];
  7308. if (r1 === 0) {
  7309. if (!((e1 === 0))) {
  7310. err = new Errno(e1);
  7311. } else {
  7312. err = new Errno(536870951);
  7313. }
  7314. }
  7315. return err;
  7316. };
  7317. $pkg.GetFileAttributesEx = GetFileAttributesEx;
  7318. LocalFree = function(hmem) {
  7319. var $ptr, _tuple, e1, err, handle, hmem, r0;
  7320. handle = 0;
  7321. err = $ifaceNil;
  7322. _tuple = Syscall(procLocalFree.Addr(), 1, (hmem >>> 0), 0, 0); r0 = _tuple[0]; e1 = _tuple[2];
  7323. handle = (r0 >>> 0);
  7324. if (!((handle === 0))) {
  7325. if (!((e1 === 0))) {
  7326. err = new Errno(e1);
  7327. } else {
  7328. err = new Errno(536870951);
  7329. }
  7330. }
  7331. return [handle, err];
  7332. };
  7333. $pkg.LocalFree = LocalFree;
  7334. SetHandleInformation = function(handle, mask, flags) {
  7335. var $ptr, _tuple, e1, err, flags, handle, mask, r1;
  7336. err = $ifaceNil;
  7337. _tuple = Syscall(procSetHandleInformation.Addr(), 3, (handle >>> 0), (mask >>> 0), (flags >>> 0)); r1 = _tuple[0]; e1 = _tuple[2];
  7338. if (r1 === 0) {
  7339. if (!((e1 === 0))) {
  7340. err = new Errno(e1);
  7341. } else {
  7342. err = new Errno(536870951);
  7343. }
  7344. }
  7345. return err;
  7346. };
  7347. $pkg.SetHandleInformation = SetHandleInformation;
  7348. FlushFileBuffers = function(handle) {
  7349. var $ptr, _tuple, e1, err, handle, r1;
  7350. err = $ifaceNil;
  7351. _tuple = Syscall(procFlushFileBuffers.Addr(), 1, (handle >>> 0), 0, 0); r1 = _tuple[0]; e1 = _tuple[2];
  7352. if (r1 === 0) {
  7353. if (!((e1 === 0))) {
  7354. err = new Errno(e1);
  7355. } else {
  7356. err = new Errno(536870951);
  7357. }
  7358. }
  7359. return err;
  7360. };
  7361. $pkg.FlushFileBuffers = FlushFileBuffers;
  7362. GetFullPathName = function(path, buflen, buf, fname) {
  7363. var $ptr, _tuple, buf, buflen, e1, err, fname, n, path, r0;
  7364. n = 0;
  7365. err = $ifaceNil;
  7366. _tuple = Syscall6(procGetFullPathNameW.Addr(), 4, path, (buflen >>> 0), buf, fname, 0, 0); r0 = _tuple[0]; e1 = _tuple[2];
  7367. n = (r0 >>> 0);
  7368. if (n === 0) {
  7369. if (!((e1 === 0))) {
  7370. err = new Errno(e1);
  7371. } else {
  7372. err = new Errno(536870951);
  7373. }
  7374. }
  7375. return [n, err];
  7376. };
  7377. $pkg.GetFullPathName = GetFullPathName;
  7378. TransmitFile = function(s, handle, bytesToWrite, bytsPerSend, overlapped, transmitFileBuf, flags) {
  7379. var $ptr, _array, _array$1, _struct, _struct$1, _tuple, _view, _view$1, bytesToWrite, bytsPerSend, e1, err, flags, handle, overlapped, r1, s, transmitFileBuf;
  7380. err = $ifaceNil;
  7381. _array = new Uint8Array(20);
  7382. _array$1 = new Uint8Array(16);
  7383. _struct = overlapped, _view = new DataView(_array.buffer, _array.byteOffset), _struct.Internal = _view.getUintptr(0, true), _struct.InternalHigh = _view.getUintptr(4, true), _struct.Offset = _view.getUint32(8, true), _struct.OffsetHigh = _view.getUint32(12, true), _struct.HEvent = _view.getUintptr(16, true);
  7384. _tuple = Syscall9(procTransmitFile.Addr(), 7, (s >>> 0), (handle >>> 0), (bytesToWrite >>> 0), (bytsPerSend >>> 0), _array, _array$1, (flags >>> 0), 0, 0); r1 = _tuple[0]; e1 = _tuple[2];
  7385. _struct$1 = transmitFileBuf, _view$1 = new DataView(_array$1.buffer, _array$1.byteOffset), _struct$1.Head = _view$1.getUintptr(0, true), _struct$1.HeadLength = _view$1.getUint32(4, true), _struct$1.Tail = _view$1.getUintptr(8, true), _struct$1.TailLength = _view$1.getUint32(12, true);
  7386. if (r1 === 0) {
  7387. if (!((e1 === 0))) {
  7388. err = new Errno(e1);
  7389. } else {
  7390. err = new Errno(536870951);
  7391. }
  7392. }
  7393. return err;
  7394. };
  7395. $pkg.TransmitFile = TransmitFile;
  7396. CertOpenStore = function(storeProvider, msgAndCertEncodingType, cryptProv, flags, para) {
  7397. var $ptr, _tuple, cryptProv, e1, err, flags, handle, msgAndCertEncodingType, para, r0, storeProvider;
  7398. handle = 0;
  7399. err = $ifaceNil;
  7400. _tuple = Syscall6(procCertOpenStore.Addr(), 5, storeProvider, (msgAndCertEncodingType >>> 0), cryptProv, (flags >>> 0), para, 0); r0 = _tuple[0]; e1 = _tuple[2];
  7401. handle = (r0 >>> 0);
  7402. if (handle === 4294967295) {
  7403. if (!((e1 === 0))) {
  7404. err = new Errno(e1);
  7405. } else {
  7406. err = new Errno(536870951);
  7407. }
  7408. }
  7409. return [handle, err];
  7410. };
  7411. $pkg.CertOpenStore = CertOpenStore;
  7412. CertAddCertificateContextToStore = function(store, certContext, addDisposition, storeContext) {
  7413. var $ptr, _array, _struct, _tuple, _view, addDisposition, certContext, e1, err, r1, store, storeContext;
  7414. err = $ifaceNil;
  7415. _array = new Uint8Array(20);
  7416. _tuple = Syscall6(procCertAddCertificateContextToStore.Addr(), 4, (store >>> 0), _array, (addDisposition >>> 0), storeContext, 0, 0); r1 = _tuple[0]; e1 = _tuple[2];
  7417. _struct = certContext, _view = new DataView(_array.buffer, _array.byteOffset), _struct.EncodingType = _view.getUint32(0, true), _struct.Length = _view.getUint32(8, true), _struct.CertInfo = _view.getUintptr(12, true), _struct.Store = _view.getUintptr(16, true);
  7418. if (r1 === 0) {
  7419. if (!((e1 === 0))) {
  7420. err = new Errno(e1);
  7421. } else {
  7422. err = new Errno(536870951);
  7423. }
  7424. }
  7425. return err;
  7426. };
  7427. $pkg.CertAddCertificateContextToStore = CertAddCertificateContextToStore;
  7428. CertCloseStore = function(store, flags) {
  7429. var $ptr, _tuple, e1, err, flags, r1, store;
  7430. err = $ifaceNil;
  7431. _tuple = Syscall(procCertCloseStore.Addr(), 2, (store >>> 0), (flags >>> 0), 0); r1 = _tuple[0]; e1 = _tuple[2];
  7432. if (r1 === 0) {
  7433. if (!((e1 === 0))) {
  7434. err = new Errno(e1);
  7435. } else {
  7436. err = new Errno(536870951);
  7437. }
  7438. }
  7439. return err;
  7440. };
  7441. $pkg.CertCloseStore = CertCloseStore;
  7442. CertGetCertificateChain = function(engine, leaf, time, additionalStore, para, flags, reserved, chainCtx) {
  7443. var $ptr, _array, _array$1, _array$2, _struct, _struct$1, _struct$2, _tuple, _view, _view$1, _view$2, additionalStore, chainCtx, e1, engine, err, flags, leaf, para, r1, reserved, time;
  7444. err = $ifaceNil;
  7445. _array = new Uint8Array(20);
  7446. _array$1 = new Uint8Array(8);
  7447. _struct = leaf, _view = new DataView(_array.buffer, _array.byteOffset), _struct.EncodingType = _view.getUint32(0, true), _struct.Length = _view.getUint32(8, true), _struct.CertInfo = _view.getUintptr(12, true), _struct.Store = _view.getUintptr(16, true);
  7448. _array$2 = new Uint8Array(44);
  7449. _struct$1 = time, _view$1 = new DataView(_array$1.buffer, _array$1.byteOffset), _struct$1.LowDateTime = _view$1.getUint32(0, true), _struct$1.HighDateTime = _view$1.getUint32(4, true);
  7450. _tuple = Syscall9(procCertGetCertificateChain.Addr(), 8, (engine >>> 0), _array, _array$1, (additionalStore >>> 0), _array$2, (flags >>> 0), reserved, chainCtx, 0); r1 = _tuple[0]; e1 = _tuple[2];
  7451. _struct$2 = para, _view$2 = new DataView(_array$2.buffer, _array$2.byteOffset), _struct$2.Size = _view$2.getUint32(0, true), _struct$2.RequestedUsage.Type = _view$2.getUint32(4, true), _struct$2.RequestedUsage.Usage.Length = _view$2.getUint32(8, true), _struct$2.RequstedIssuancePolicy.Type = _view$2.getUint32(16, true), _struct$2.RequstedIssuancePolicy.Usage.Length = _view$2.getUint32(20, true), _struct$2.URLRetrievalTimeout = _view$2.getUint32(28, true), _struct$2.CheckRevocationFreshnessTime = _view$2.getUint32(32, true), _struct$2.RevocationFreshnessTime = _view$2.getUint32(36, true);
  7452. if (r1 === 0) {
  7453. if (!((e1 === 0))) {
  7454. err = new Errno(e1);
  7455. } else {
  7456. err = new Errno(536870951);
  7457. }
  7458. }
  7459. return err;
  7460. };
  7461. $pkg.CertGetCertificateChain = CertGetCertificateChain;
  7462. CertFreeCertificateChain = function(ctx) {
  7463. var $ptr, _array, _struct, _view, ctx;
  7464. _array = new Uint8Array(36);
  7465. Syscall(procCertFreeCertificateChain.Addr(), 1, _array, 0, 0);
  7466. _struct = ctx, _view = new DataView(_array.buffer, _array.byteOffset), _struct.Size = _view.getUint32(0, true), _struct.TrustStatus.ErrorStatus = _view.getUint32(4, true), _struct.TrustStatus.InfoStatus = _view.getUint32(8, true), _struct.ChainCount = _view.getUint32(12, true), _struct.LowerQualityChainCount = _view.getUint32(20, true), _struct.HasRevocationFreshnessTime = _view.getUint32(28, true), _struct.RevocationFreshnessTime = _view.getUint32(32, true);
  7467. return;
  7468. };
  7469. $pkg.CertFreeCertificateChain = CertFreeCertificateChain;
  7470. CertCreateCertificateContext = function(certEncodingType, certEncoded, encodedLen) {
  7471. var $ptr, _array, _struct, _tuple, _view, certEncoded, certEncodingType, context, e1, encodedLen, err, r0;
  7472. context = ptrType$23.nil;
  7473. err = $ifaceNil;
  7474. _tuple = Syscall(procCertCreateCertificateContext.Addr(), 3, (certEncodingType >>> 0), certEncoded, (encodedLen >>> 0)); r0 = _tuple[0]; e1 = _tuple[2];
  7475. context = (_array = r0, _struct = new CertContext.ptr(), _view = new DataView(_array.buffer, _array.byteOffset), _struct.EncodingType = _view.getUint32(0, true), _struct.Length = _view.getUint32(8, true), _struct.CertInfo = _view.getUintptr(12, true), _struct.Store = _view.getUintptr(16, true), _struct);
  7476. if (context === ptrType$23.nil) {
  7477. if (!((e1 === 0))) {
  7478. err = new Errno(e1);
  7479. } else {
  7480. err = new Errno(536870951);
  7481. }
  7482. }
  7483. return [context, err];
  7484. };
  7485. $pkg.CertCreateCertificateContext = CertCreateCertificateContext;
  7486. CertFreeCertificateContext = function(ctx) {
  7487. var $ptr, _array, _struct, _tuple, _view, ctx, e1, err, r1;
  7488. err = $ifaceNil;
  7489. _array = new Uint8Array(20);
  7490. _tuple = Syscall(procCertFreeCertificateContext.Addr(), 1, _array, 0, 0); r1 = _tuple[0]; e1 = _tuple[2];
  7491. _struct = ctx, _view = new DataView(_array.buffer, _array.byteOffset), _struct.EncodingType = _view.getUint32(0, true), _struct.Length = _view.getUint32(8, true), _struct.CertInfo = _view.getUintptr(12, true), _struct.Store = _view.getUintptr(16, true);
  7492. if (r1 === 0) {
  7493. if (!((e1 === 0))) {
  7494. err = new Errno(e1);
  7495. } else {
  7496. err = new Errno(536870951);
  7497. }
  7498. }
  7499. return err;
  7500. };
  7501. $pkg.CertFreeCertificateContext = CertFreeCertificateContext;
  7502. CertVerifyCertificateChainPolicy = function(policyOID, chain, para, status) {
  7503. var $ptr, _array, _array$1, _array$2, _struct, _struct$1, _struct$2, _tuple, _view, _view$1, _view$2, chain, e1, err, para, policyOID, r1, status;
  7504. err = $ifaceNil;
  7505. _array = new Uint8Array(36);
  7506. _array$1 = new Uint8Array(12);
  7507. _struct = chain, _view = new DataView(_array.buffer, _array.byteOffset), _struct.Size = _view.getUint32(0, true), _struct.TrustStatus.ErrorStatus = _view.getUint32(4, true), _struct.TrustStatus.InfoStatus = _view.getUint32(8, true), _struct.ChainCount = _view.getUint32(12, true), _struct.LowerQualityChainCount = _view.getUint32(20, true), _struct.HasRevocationFreshnessTime = _view.getUint32(28, true), _struct.RevocationFreshnessTime = _view.getUint32(32, true);
  7508. _array$2 = new Uint8Array(20);
  7509. _struct$1 = para, _view$1 = new DataView(_array$1.buffer, _array$1.byteOffset), _struct$1.Size = _view$1.getUint32(0, true), _struct$1.Flags = _view$1.getUint32(4, true), _struct$1.ExtraPolicyPara = _view$1.getUintptr(8, true);
  7510. _tuple = Syscall6(procCertVerifyCertificateChainPolicy.Addr(), 4, policyOID, _array, _array$1, _array$2, 0, 0); r1 = _tuple[0]; e1 = _tuple[2];
  7511. _struct$2 = status, _view$2 = new DataView(_array$2.buffer, _array$2.byteOffset), _struct$2.Size = _view$2.getUint32(0, true), _struct$2.Error = _view$2.getUint32(4, true), _struct$2.ChainIndex = _view$2.getUint32(8, true), _struct$2.ElementIndex = _view$2.getUint32(12, true), _struct$2.ExtraPolicyStatus = _view$2.getUintptr(16, true);
  7512. if (r1 === 0) {
  7513. if (!((e1 === 0))) {
  7514. err = new Errno(e1);
  7515. } else {
  7516. err = new Errno(536870951);
  7517. }
  7518. }
  7519. return err;
  7520. };
  7521. $pkg.CertVerifyCertificateChainPolicy = CertVerifyCertificateChainPolicy;
  7522. getCurrentProcessId = function() {
  7523. var $ptr, _tuple, pid, r0;
  7524. pid = 0;
  7525. _tuple = Syscall(procGetCurrentProcessId.Addr(), 0, 0, 0, 0); r0 = _tuple[0];
  7526. pid = (r0 >>> 0);
  7527. return pid;
  7528. };
  7529. WriteConsole = function(console, buf, towrite, written, reserved) {
  7530. var $ptr, _tuple, buf, console, e1, err, r1, reserved, towrite, written;
  7531. err = $ifaceNil;
  7532. _tuple = Syscall6(procWriteConsoleW.Addr(), 5, (console >>> 0), buf, (towrite >>> 0), written, reserved, 0); r1 = _tuple[0]; e1 = _tuple[2];
  7533. if (r1 === 0) {
  7534. if (!((e1 === 0))) {
  7535. err = new Errno(e1);
  7536. } else {
  7537. err = new Errno(536870951);
  7538. }
  7539. }
  7540. return err;
  7541. };
  7542. $pkg.WriteConsole = WriteConsole;
  7543. ReadConsole = function(console, buf, toread, read, inputControl) {
  7544. var $ptr, _tuple, buf, console, e1, err, inputControl, r1, read, toread;
  7545. err = $ifaceNil;
  7546. _tuple = Syscall6(procReadConsoleW.Addr(), 5, (console >>> 0), buf, (toread >>> 0), read, inputControl, 0); r1 = _tuple[0]; e1 = _tuple[2];
  7547. if (r1 === 0) {
  7548. if (!((e1 === 0))) {
  7549. err = new Errno(e1);
  7550. } else {
  7551. err = new Errno(536870951);
  7552. }
  7553. }
  7554. return err;
  7555. };
  7556. $pkg.ReadConsole = ReadConsole;
  7557. DeviceIoControl = function(handle, ioControlCode, inBuffer, inBufferSize, outBuffer, outBufferSize, bytesReturned, overlapped) {
  7558. var $ptr, _array, _struct, _tuple, _view, bytesReturned, e1, err, handle, inBuffer, inBufferSize, ioControlCode, outBuffer, outBufferSize, overlapped, r1;
  7559. err = $ifaceNil;
  7560. _array = new Uint8Array(20);
  7561. _tuple = Syscall9(procDeviceIoControl.Addr(), 8, (handle >>> 0), (ioControlCode >>> 0), inBuffer, (inBufferSize >>> 0), outBuffer, (outBufferSize >>> 0), bytesReturned, _array, 0); r1 = _tuple[0]; e1 = _tuple[2];
  7562. _struct = overlapped, _view = new DataView(_array.buffer, _array.byteOffset), _struct.Internal = _view.getUintptr(0, true), _struct.InternalHigh = _view.getUintptr(4, true), _struct.Offset = _view.getUint32(8, true), _struct.OffsetHigh = _view.getUint32(12, true), _struct.HEvent = _view.getUintptr(16, true);
  7563. if (r1 === 0) {
  7564. if (!((e1 === 0))) {
  7565. err = new Errno(e1);
  7566. } else {
  7567. err = new Errno(536870951);
  7568. }
  7569. }
  7570. return err;
  7571. };
  7572. $pkg.DeviceIoControl = DeviceIoControl;
  7573. WSAIoctl = function(s, iocc, inbuf, cbif, outbuf, cbob, cbbr, overlapped, completionRoutine) {
  7574. var $ptr, _array, _struct, _tuple, _view, cbbr, cbif, cbob, completionRoutine, e1, err, inbuf, iocc, outbuf, overlapped, r1, s;
  7575. err = $ifaceNil;
  7576. _array = new Uint8Array(20);
  7577. _tuple = Syscall9(procWSAIoctl.Addr(), 9, (s >>> 0), (iocc >>> 0), inbuf, (cbif >>> 0), outbuf, (cbob >>> 0), cbbr, _array, completionRoutine); r1 = _tuple[0]; e1 = _tuple[2];
  7578. _struct = overlapped, _view = new DataView(_array.buffer, _array.byteOffset), _struct.Internal = _view.getUintptr(0, true), _struct.InternalHigh = _view.getUintptr(4, true), _struct.Offset = _view.getUint32(8, true), _struct.OffsetHigh = _view.getUint32(12, true), _struct.HEvent = _view.getUintptr(16, true);
  7579. if (r1 === 4294967295) {
  7580. if (!((e1 === 0))) {
  7581. err = new Errno(e1);
  7582. } else {
  7583. err = new Errno(536870951);
  7584. }
  7585. }
  7586. return err;
  7587. };
  7588. $pkg.WSAIoctl = WSAIoctl;
  7589. socket = function(af, typ, protocol) {
  7590. var $ptr, _tuple, af, e1, err, handle, protocol, r0, typ;
  7591. handle = 0;
  7592. err = $ifaceNil;
  7593. _tuple = Syscall(procsocket.Addr(), 3, (af >>> 0), (typ >>> 0), (protocol >>> 0)); r0 = _tuple[0]; e1 = _tuple[2];
  7594. handle = (r0 >>> 0);
  7595. if (handle === 4294967295) {
  7596. if (!((e1 === 0))) {
  7597. err = new Errno(e1);
  7598. } else {
  7599. err = new Errno(536870951);
  7600. }
  7601. }
  7602. return [handle, err];
  7603. };
  7604. Setsockopt = function(s, level, optname, optval, optlen) {
  7605. var $ptr, _tuple, e1, err, level, optlen, optname, optval, r1, s;
  7606. err = $ifaceNil;
  7607. _tuple = Syscall6(procsetsockopt.Addr(), 5, (s >>> 0), (level >>> 0), (optname >>> 0), optval, (optlen >>> 0), 0); r1 = _tuple[0]; e1 = _tuple[2];
  7608. if (r1 === 4294967295) {
  7609. if (!((e1 === 0))) {
  7610. err = new Errno(e1);
  7611. } else {
  7612. err = new Errno(536870951);
  7613. }
  7614. }
  7615. return err;
  7616. };
  7617. $pkg.Setsockopt = Setsockopt;
  7618. shutdown = function(s, how) {
  7619. var $ptr, _tuple, e1, err, how, r1, s;
  7620. err = $ifaceNil;
  7621. _tuple = Syscall(procshutdown.Addr(), 2, (s >>> 0), (how >>> 0), 0); r1 = _tuple[0]; e1 = _tuple[2];
  7622. if (r1 === 4294967295) {
  7623. if (!((e1 === 0))) {
  7624. err = new Errno(e1);
  7625. } else {
  7626. err = new Errno(536870951);
  7627. }
  7628. }
  7629. return err;
  7630. };
  7631. Closesocket = function(s) {
  7632. var $ptr, _tuple, e1, err, r1, s;
  7633. err = $ifaceNil;
  7634. _tuple = Syscall(procclosesocket.Addr(), 1, (s >>> 0), 0, 0); r1 = _tuple[0]; e1 = _tuple[2];
  7635. if (r1 === 4294967295) {
  7636. if (!((e1 === 0))) {
  7637. err = new Errno(e1);
  7638. } else {
  7639. err = new Errno(536870951);
  7640. }
  7641. }
  7642. return err;
  7643. };
  7644. $pkg.Closesocket = Closesocket;
  7645. AcceptEx = function(ls, as, buf, rxdatalen, laddrlen, raddrlen, recvd, overlapped) {
  7646. var $ptr, _array, _struct, _tuple, _view, as, buf, e1, err, laddrlen, ls, overlapped, r1, raddrlen, recvd, rxdatalen;
  7647. err = $ifaceNil;
  7648. _array = new Uint8Array(20);
  7649. _tuple = Syscall9(procAcceptEx.Addr(), 8, (ls >>> 0), (as >>> 0), buf, (rxdatalen >>> 0), (laddrlen >>> 0), (raddrlen >>> 0), recvd, _array, 0); r1 = _tuple[0]; e1 = _tuple[2];
  7650. _struct = overlapped, _view = new DataView(_array.buffer, _array.byteOffset), _struct.Internal = _view.getUintptr(0, true), _struct.InternalHigh = _view.getUintptr(4, true), _struct.Offset = _view.getUint32(8, true), _struct.OffsetHigh = _view.getUint32(12, true), _struct.HEvent = _view.getUintptr(16, true);
  7651. if (r1 === 0) {
  7652. if (!((e1 === 0))) {
  7653. err = new Errno(e1);
  7654. } else {
  7655. err = new Errno(536870951);
  7656. }
  7657. }
  7658. return err;
  7659. };
  7660. $pkg.AcceptEx = AcceptEx;
  7661. GetAcceptExSockaddrs = function(buf, rxdatalen, laddrlen, raddrlen, lrsa, lrsalen, rrsa, rrsalen) {
  7662. var $ptr, buf, laddrlen, lrsa, lrsalen, raddrlen, rrsa, rrsalen, rxdatalen;
  7663. Syscall9(procGetAcceptExSockaddrs.Addr(), 8, buf, (rxdatalen >>> 0), (laddrlen >>> 0), (raddrlen >>> 0), lrsa, lrsalen, rrsa, rrsalen, 0);
  7664. return;
  7665. };
  7666. $pkg.GetAcceptExSockaddrs = GetAcceptExSockaddrs;
  7667. WSARecv = function(s, bufs, bufcnt, recvd, flags, overlapped, croutine) {
  7668. var $ptr, _array, _array$1, _struct, _struct$1, _tuple, _view, _view$1, bufcnt, bufs, croutine, e1, err, flags, overlapped, r1, recvd, s;
  7669. err = $ifaceNil;
  7670. _array = new Uint8Array(8);
  7671. _array$1 = new Uint8Array(20);
  7672. _struct = bufs, _view = new DataView(_array.buffer, _array.byteOffset), _struct.Len = _view.getUint32(0, true);
  7673. _tuple = Syscall9(procWSARecv.Addr(), 7, (s >>> 0), _array, (bufcnt >>> 0), recvd, flags, _array$1, croutine, 0, 0); r1 = _tuple[0]; e1 = _tuple[2];
  7674. _struct$1 = overlapped, _view$1 = new DataView(_array$1.buffer, _array$1.byteOffset), _struct$1.Internal = _view$1.getUintptr(0, true), _struct$1.InternalHigh = _view$1.getUintptr(4, true), _struct$1.Offset = _view$1.getUint32(8, true), _struct$1.OffsetHigh = _view$1.getUint32(12, true), _struct$1.HEvent = _view$1.getUintptr(16, true);
  7675. if (r1 === 4294967295) {
  7676. if (!((e1 === 0))) {
  7677. err = new Errno(e1);
  7678. } else {
  7679. err = new Errno(536870951);
  7680. }
  7681. }
  7682. return err;
  7683. };
  7684. $pkg.WSARecv = WSARecv;
  7685. WSASend = function(s, bufs, bufcnt, sent, flags, overlapped, croutine) {
  7686. var $ptr, _array, _array$1, _struct, _struct$1, _tuple, _view, _view$1, bufcnt, bufs, croutine, e1, err, flags, overlapped, r1, s, sent;
  7687. err = $ifaceNil;
  7688. _array = new Uint8Array(8);
  7689. _array$1 = new Uint8Array(20);
  7690. _struct = bufs, _view = new DataView(_array.buffer, _array.byteOffset), _struct.Len = _view.getUint32(0, true);
  7691. _tuple = Syscall9(procWSASend.Addr(), 7, (s >>> 0), _array, (bufcnt >>> 0), sent, (flags >>> 0), _array$1, croutine, 0, 0); r1 = _tuple[0]; e1 = _tuple[2];
  7692. _struct$1 = overlapped, _view$1 = new DataView(_array$1.buffer, _array$1.byteOffset), _struct$1.Internal = _view$1.getUintptr(0, true), _struct$1.InternalHigh = _view$1.getUintptr(4, true), _struct$1.Offset = _view$1.getUint32(8, true), _struct$1.OffsetHigh = _view$1.getUint32(12, true), _struct$1.HEvent = _view$1.getUintptr(16, true);
  7693. if (r1 === 4294967295) {
  7694. if (!((e1 === 0))) {
  7695. err = new Errno(e1);
  7696. } else {
  7697. err = new Errno(536870951);
  7698. }
  7699. }
  7700. return err;
  7701. };
  7702. $pkg.WSASend = WSASend;
  7703. GetIfEntry = function(pIfRow) {
  7704. var $ptr, _array, _struct, _tuple, _view, errcode, pIfRow, r0;
  7705. errcode = $ifaceNil;
  7706. _array = new Uint8Array(860);
  7707. _tuple = Syscall(procGetIfEntry.Addr(), 1, _array, 0, 0); r0 = _tuple[0];
  7708. _struct = pIfRow, _view = new DataView(_array.buffer, _array.byteOffset), _struct.Name = new ($nativeArray($kindUint16))(_array.buffer, $min(_array.byteOffset + 0, _array.buffer.byteLength)), _struct.Index = _view.getUint32(512, true), _struct.Type = _view.getUint32(516, true), _struct.Mtu = _view.getUint32(520, true), _struct.Speed = _view.getUint32(524, true), _struct.PhysAddrLen = _view.getUint32(528, true), _struct.PhysAddr = new ($nativeArray($kindUint8))(_array.buffer, $min(_array.byteOffset + 532, _array.buffer.byteLength)), _struct.AdminStatus = _view.getUint32(540, true), _struct.OperStatus = _view.getUint32(544, true), _struct.LastChange = _view.getUint32(548, true), _struct.InOctets = _view.getUint32(552, true), _struct.InUcastPkts = _view.getUint32(556, true), _struct.InNUcastPkts = _view.getUint32(560, true), _struct.InDiscards = _view.getUint32(564, true), _struct.InErrors = _view.getUint32(568, true), _struct.InUnknownProtos = _view.getUint32(572, true), _struct.OutOctets = _view.getUint32(576, true), _struct.OutUcastPkts = _view.getUint32(580, true), _struct.OutNUcastPkts = _view.getUint32(584, true), _struct.OutDiscards = _view.getUint32(588, true), _struct.OutErrors = _view.getUint32(592, true), _struct.OutQLen = _view.getUint32(596, true), _struct.DescrLen = _view.getUint32(600, true), _struct.Descr = new ($nativeArray($kindUint8))(_array.buffer, $min(_array.byteOffset + 604, _array.buffer.byteLength));
  7709. if (!((r0 === 0))) {
  7710. errcode = new Errno((r0 >>> 0));
  7711. }
  7712. return errcode;
  7713. };
  7714. $pkg.GetIfEntry = GetIfEntry;
  7715. GetAdaptersInfo = function(ai, ol) {
  7716. var $ptr, _array, _struct, _tuple, _view, ai, errcode, ol, r0;
  7717. errcode = $ifaceNil;
  7718. _array = new Uint8Array(648);
  7719. _tuple = Syscall(procGetAdaptersInfo.Addr(), 2, _array, ol, 0); r0 = _tuple[0];
  7720. _struct = ai, _view = new DataView(_array.buffer, _array.byteOffset), _struct.ComboIndex = _view.getUint32(4, true), _struct.AdapterName = new ($nativeArray($kindUint8))(_array.buffer, $min(_array.byteOffset + 8, _array.buffer.byteLength)), _struct.Description = new ($nativeArray($kindUint8))(_array.buffer, $min(_array.byteOffset + 268, _array.buffer.byteLength)), _struct.AddressLength = _view.getUint32(400, true), _struct.Address = new ($nativeArray($kindUint8))(_array.buffer, $min(_array.byteOffset + 404, _array.buffer.byteLength)), _struct.Index = _view.getUint32(412, true), _struct.Type = _view.getUint32(416, true), _struct.DhcpEnabled = _view.getUint32(420, true), _struct.IpAddressList.IpAddress.String = new ($nativeArray($kindUint8))(_array.buffer, $min(_array.byteOffset + 432, _array.buffer.byteLength)), _struct.IpAddressList.IpMask.String = new ($nativeArray($kindUint8))(_array.buffer, $min(_array.byteOffset + 448, _array.buffer.byteLength)), _struct.IpAddressList.Context = _view.getUint32(464, true), _struct.GatewayList.IpAddress.String = new ($nativeArray($kindUint8))(_array.buffer, $min(_array.byteOffset + 472, _array.buffer.byteLength)), _struct.GatewayList.IpMask.String = new ($nativeArray($kindUint8))(_array.buffer, $min(_array.byteOffset + 488, _array.buffer.byteLength)), _struct.GatewayList.Context = _view.getUint32(504, true), _struct.DhcpServer.IpAddress.String = new ($nativeArray($kindUint8))(_array.buffer, $min(_array.byteOffset + 512, _array.buffer.byteLength)), _struct.DhcpServer.IpMask.String = new ($nativeArray($kindUint8))(_array.buffer, $min(_array.byteOffset + 528, _array.buffer.byteLength)), _struct.DhcpServer.Context = _view.getUint32(544, true), _struct.PrimaryWinsServer.IpAddress.String = new ($nativeArray($kindUint8))(_array.buffer, $min(_array.byteOffset + 556, _array.buffer.byteLength)), _struct.PrimaryWinsServer.IpMask.String = new ($nativeArray($kindUint8))(_array.buffer, $min(_array.byteOffset + 572, _array.buffer.byteLength)), _struct.PrimaryWinsServer.Context = _view.getUint32(588, true), _struct.SecondaryWinsServer.IpAddress.String = new ($nativeArray($kindUint8))(_array.buffer, $min(_array.byteOffset + 596, _array.buffer.byteLength)), _struct.SecondaryWinsServer.IpMask.String = new ($nativeArray($kindUint8))(_array.buffer, $min(_array.byteOffset + 612, _array.buffer.byteLength)), _struct.SecondaryWinsServer.Context = _view.getUint32(628, true), _struct.LeaseObtained = new $Int64(_view.getUint32(636, true), _view.getUint32(632, true)), _struct.LeaseExpires = new $Int64(_view.getUint32(644, true), _view.getUint32(640, true));
  7721. if (!((r0 === 0))) {
  7722. errcode = new Errno((r0 >>> 0));
  7723. }
  7724. return errcode;
  7725. };
  7726. $pkg.GetAdaptersInfo = GetAdaptersInfo;
  7727. SetFileCompletionNotificationModes = function(handle, flags) {
  7728. var $ptr, _tuple, e1, err, flags, handle, r1;
  7729. err = $ifaceNil;
  7730. _tuple = Syscall(procSetFileCompletionNotificationModes.Addr(), 2, (handle >>> 0), (flags >>> 0), 0); r1 = _tuple[0]; e1 = _tuple[2];
  7731. if (r1 === 0) {
  7732. if (!((e1 === 0))) {
  7733. err = new Errno(e1);
  7734. } else {
  7735. err = new Errno(536870951);
  7736. }
  7737. }
  7738. return err;
  7739. };
  7740. $pkg.SetFileCompletionNotificationModes = SetFileCompletionNotificationModes;
  7741. Filetime.ptr.prototype.Nanoseconds = function() {
  7742. var $ptr, ft, nsec, x, x$1, x$2;
  7743. ft = this;
  7744. nsec = (x = $shiftLeft64(new $Int64(0, ft.HighDateTime), 32), x$1 = new $Int64(0, ft.LowDateTime), new $Int64(x.$high + x$1.$high, x.$low + x$1.$low));
  7745. nsec = (x$2 = new $Int64(27111902, 3577643008), new $Int64(nsec.$high - x$2.$high, nsec.$low - x$2.$low));
  7746. nsec = $mul64(nsec, (new $Int64(0, 100)));
  7747. return nsec;
  7748. };
  7749. Filetime.prototype.Nanoseconds = function() { return this.$val.Nanoseconds(); };
  7750. NsecToFiletime = function(nsec) {
  7751. var $ptr, ft, nsec, x, x$1;
  7752. ft = new Filetime.ptr();
  7753. nsec = $div64(nsec, (new $Int64(0, 100)), false);
  7754. nsec = (x = new $Int64(27111902, 3577643008), new $Int64(nsec.$high + x.$high, nsec.$low + x.$low));
  7755. ft.LowDateTime = (new $Int64(nsec.$high & 0, (nsec.$low & 4294967295) >>> 0).$low >>> 0);
  7756. ft.HighDateTime = ((x$1 = $shiftRightInt64(nsec, 32), new $Int64(x$1.$high & 0, (x$1.$low & 4294967295) >>> 0)).$low >>> 0);
  7757. $copy(ft, ft, Filetime);
  7758. return ft;
  7759. };
  7760. $pkg.NsecToFiletime = NsecToFiletime;
  7761. copyFindData = function(dst, src) {
  7762. var $ptr, dst, src;
  7763. dst.FileAttributes = src.FileAttributes;
  7764. $copy(dst.CreationTime, src.CreationTime, Filetime);
  7765. $copy(dst.LastAccessTime, src.LastAccessTime, Filetime);
  7766. $copy(dst.LastWriteTime, src.LastWriteTime, Filetime);
  7767. dst.FileSizeHigh = src.FileSizeHigh;
  7768. dst.FileSizeLow = src.FileSizeLow;
  7769. dst.Reserved0 = src.Reserved0;
  7770. dst.Reserved1 = src.Reserved1;
  7771. $copySlice(new sliceType$2(dst.FileName), new sliceType$2(src.FileName));
  7772. $copySlice(new sliceType$2(dst.AlternateFileName), new sliceType$2(src.AlternateFileName));
  7773. };
  7774. DummyError.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}];
  7775. ptrType$27.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}];
  7776. ptrType$3.methods = [{prop: "FindProc", name: "FindProc", pkg: "", typ: $funcType([$String], [ptrType$4, $error], false)}, {prop: "MustFindProc", name: "MustFindProc", pkg: "", typ: $funcType([$String], [ptrType$4], false)}, {prop: "Release", name: "Release", pkg: "", typ: $funcType([], [$error], false)}];
  7777. ptrType$4.methods = [{prop: "Addr", name: "Addr", pkg: "", typ: $funcType([], [$Uintptr], false)}, {prop: "Call", name: "Call", pkg: "", typ: $funcType([sliceType$6], [$Uintptr, $Uintptr, $error], true)}];
  7778. ptrType$5.methods = [{prop: "Load", name: "Load", pkg: "", typ: $funcType([], [$error], false)}, {prop: "mustLoad", name: "mustLoad", pkg: "syscall", typ: $funcType([], [], false)}, {prop: "Handle", name: "Handle", pkg: "", typ: $funcType([], [$Uintptr], false)}, {prop: "NewProc", name: "NewProc", pkg: "", typ: $funcType([$String], [ptrType$28], false)}];
  7779. ptrType$28.methods = [{prop: "Find", name: "Find", pkg: "", typ: $funcType([], [$error], false)}, {prop: "mustFind", name: "mustFind", pkg: "syscall", typ: $funcType([], [], false)}, {prop: "Addr", name: "Addr", pkg: "", typ: $funcType([], [$Uintptr], false)}, {prop: "Call", name: "Call", pkg: "", typ: $funcType([sliceType$6], [$Uintptr, $Uintptr, $error], true)}];
  7780. Errno.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Temporary", name: "Temporary", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "Timeout", name: "Timeout", pkg: "", typ: $funcType([], [$Bool], false)}];
  7781. ptrType$29.methods = [{prop: "Sockaddr", name: "Sockaddr", pkg: "", typ: $funcType([], [Sockaddr, $error], false)}];
  7782. ptrType$30.methods = [{prop: "sockaddr", name: "sockaddr", pkg: "syscall", typ: $funcType([], [$UnsafePointer, $Int32, $error], false)}];
  7783. ptrType$31.methods = [{prop: "sockaddr", name: "sockaddr", pkg: "syscall", typ: $funcType([], [$UnsafePointer, $Int32, $error], false)}];
  7784. ptrType$32.methods = [{prop: "sockaddr", name: "sockaddr", pkg: "syscall", typ: $funcType([], [$UnsafePointer, $Int32, $error], false)}];
  7785. ptrType$20.methods = [{prop: "Nanoseconds", name: "Nanoseconds", pkg: "", typ: $funcType([], [$Int64], false)}];
  7786. DummyError.init([]);
  7787. DLLError.init([{prop: "Err", name: "Err", pkg: "", typ: $error, tag: ""}, {prop: "ObjName", name: "ObjName", pkg: "", typ: $String, tag: ""}, {prop: "Msg", name: "Msg", pkg: "", typ: $String, tag: ""}]);
  7788. DLL.init([{prop: "Name", name: "Name", pkg: "", typ: $String, tag: ""}, {prop: "Handle", name: "Handle", pkg: "", typ: Handle, tag: ""}]);
  7789. Proc.init([{prop: "Dll", name: "Dll", pkg: "", typ: ptrType$3, tag: ""}, {prop: "Name", name: "Name", pkg: "", typ: $String, tag: ""}, {prop: "addr", name: "addr", pkg: "syscall", typ: $Uintptr, tag: ""}]);
  7790. LazyDLL.init([{prop: "mu", name: "mu", pkg: "syscall", typ: sync.Mutex, tag: ""}, {prop: "dll", name: "dll", pkg: "syscall", typ: ptrType$3, tag: ""}, {prop: "Name", name: "Name", pkg: "", typ: $String, tag: ""}]);
  7791. LazyProc.init([{prop: "mu", name: "mu", pkg: "syscall", typ: sync.Mutex, tag: ""}, {prop: "Name", name: "Name", pkg: "", typ: $String, tag: ""}, {prop: "l", name: "l", pkg: "syscall", typ: ptrType$5, tag: ""}, {prop: "proc", name: "proc", pkg: "syscall", typ: ptrType$4, tag: ""}]);
  7792. RawSockaddrInet4.init([{prop: "Family", name: "Family", pkg: "", typ: $Uint16, tag: ""}, {prop: "Port", name: "Port", pkg: "", typ: $Uint16, tag: ""}, {prop: "Addr", name: "Addr", pkg: "", typ: arrayType$3, tag: ""}, {prop: "Zero", name: "Zero", pkg: "", typ: arrayType$4, tag: ""}]);
  7793. RawSockaddrInet6.init([{prop: "Family", name: "Family", pkg: "", typ: $Uint16, tag: ""}, {prop: "Port", name: "Port", pkg: "", typ: $Uint16, tag: ""}, {prop: "Flowinfo", name: "Flowinfo", pkg: "", typ: $Uint32, tag: ""}, {prop: "Addr", name: "Addr", pkg: "", typ: arrayType$5, tag: ""}, {prop: "Scope_id", name: "Scope_id", pkg: "", typ: $Uint32, tag: ""}]);
  7794. RawSockaddr.init([{prop: "Family", name: "Family", pkg: "", typ: $Uint16, tag: ""}, {prop: "Data", name: "Data", pkg: "", typ: arrayType$6, tag: ""}]);
  7795. RawSockaddrAny.init([{prop: "Addr", name: "Addr", pkg: "", typ: RawSockaddr, tag: ""}, {prop: "Pad", name: "Pad", pkg: "", typ: arrayType$7, tag: ""}]);
  7796. Sockaddr.init([{prop: "sockaddr", name: "sockaddr", pkg: "syscall", typ: $funcType([], [$UnsafePointer, $Int32, $error], false)}]);
  7797. SockaddrInet4.init([{prop: "Port", name: "Port", pkg: "", typ: $Int, tag: ""}, {prop: "Addr", name: "Addr", pkg: "", typ: arrayType$3, tag: ""}, {prop: "raw", name: "raw", pkg: "syscall", typ: RawSockaddrInet4, tag: ""}]);
  7798. SockaddrInet6.init([{prop: "Port", name: "Port", pkg: "", typ: $Int, tag: ""}, {prop: "ZoneId", name: "ZoneId", pkg: "", typ: $Uint32, tag: ""}, {prop: "Addr", name: "Addr", pkg: "", typ: arrayType$5, tag: ""}, {prop: "raw", name: "raw", pkg: "syscall", typ: RawSockaddrInet6, tag: ""}]);
  7799. SockaddrUnix.init([{prop: "Name", name: "Name", pkg: "", typ: $String, tag: ""}]);
  7800. Linger.init([{prop: "Onoff", name: "Onoff", pkg: "", typ: $Int32, tag: ""}, {prop: "Linger", name: "Linger", pkg: "", typ: $Int32, tag: ""}]);
  7801. sysLinger.init([{prop: "Onoff", name: "Onoff", pkg: "", typ: $Uint16, tag: ""}, {prop: "Linger", name: "Linger", pkg: "", typ: $Uint16, tag: ""}]);
  7802. SecurityAttributes.init([{prop: "Length", name: "Length", pkg: "", typ: $Uint32, tag: ""}, {prop: "SecurityDescriptor", name: "SecurityDescriptor", pkg: "", typ: $Uintptr, tag: ""}, {prop: "InheritHandle", name: "InheritHandle", pkg: "", typ: $Uint32, tag: ""}]);
  7803. Overlapped.init([{prop: "Internal", name: "Internal", pkg: "", typ: $Uintptr, tag: ""}, {prop: "InternalHigh", name: "InternalHigh", pkg: "", typ: $Uintptr, tag: ""}, {prop: "Offset", name: "Offset", pkg: "", typ: $Uint32, tag: ""}, {prop: "OffsetHigh", name: "OffsetHigh", pkg: "", typ: $Uint32, tag: ""}, {prop: "HEvent", name: "HEvent", pkg: "", typ: Handle, tag: ""}]);
  7804. Filetime.init([{prop: "LowDateTime", name: "LowDateTime", pkg: "", typ: $Uint32, tag: ""}, {prop: "HighDateTime", name: "HighDateTime", pkg: "", typ: $Uint32, tag: ""}]);
  7805. Win32finddata.init([{prop: "FileAttributes", name: "FileAttributes", pkg: "", typ: $Uint32, tag: ""}, {prop: "CreationTime", name: "CreationTime", pkg: "", typ: Filetime, tag: ""}, {prop: "LastAccessTime", name: "LastAccessTime", pkg: "", typ: Filetime, tag: ""}, {prop: "LastWriteTime", name: "LastWriteTime", pkg: "", typ: Filetime, tag: ""}, {prop: "FileSizeHigh", name: "FileSizeHigh", pkg: "", typ: $Uint32, tag: ""}, {prop: "FileSizeLow", name: "FileSizeLow", pkg: "", typ: $Uint32, tag: ""}, {prop: "Reserved0", name: "Reserved0", pkg: "", typ: $Uint32, tag: ""}, {prop: "Reserved1", name: "Reserved1", pkg: "", typ: $Uint32, tag: ""}, {prop: "FileName", name: "FileName", pkg: "", typ: arrayType$8, tag: ""}, {prop: "AlternateFileName", name: "AlternateFileName", pkg: "", typ: arrayType$9, tag: ""}]);
  7806. win32finddata1.init([{prop: "FileAttributes", name: "FileAttributes", pkg: "", typ: $Uint32, tag: ""}, {prop: "CreationTime", name: "CreationTime", pkg: "", typ: Filetime, tag: ""}, {prop: "LastAccessTime", name: "LastAccessTime", pkg: "", typ: Filetime, tag: ""}, {prop: "LastWriteTime", name: "LastWriteTime", pkg: "", typ: Filetime, tag: ""}, {prop: "FileSizeHigh", name: "FileSizeHigh", pkg: "", typ: $Uint32, tag: ""}, {prop: "FileSizeLow", name: "FileSizeLow", pkg: "", typ: $Uint32, tag: ""}, {prop: "Reserved0", name: "Reserved0", pkg: "", typ: $Uint32, tag: ""}, {prop: "Reserved1", name: "Reserved1", pkg: "", typ: $Uint32, tag: ""}, {prop: "FileName", name: "FileName", pkg: "", typ: arrayType$10, tag: ""}, {prop: "AlternateFileName", name: "AlternateFileName", pkg: "", typ: arrayType$11, tag: ""}]);
  7807. ByHandleFileInformation.init([{prop: "FileAttributes", name: "FileAttributes", pkg: "", typ: $Uint32, tag: ""}, {prop: "CreationTime", name: "CreationTime", pkg: "", typ: Filetime, tag: ""}, {prop: "LastAccessTime", name: "LastAccessTime", pkg: "", typ: Filetime, tag: ""}, {prop: "LastWriteTime", name: "LastWriteTime", pkg: "", typ: Filetime, tag: ""}, {prop: "VolumeSerialNumber", name: "VolumeSerialNumber", pkg: "", typ: $Uint32, tag: ""}, {prop: "FileSizeHigh", name: "FileSizeHigh", pkg: "", typ: $Uint32, tag: ""}, {prop: "FileSizeLow", name: "FileSizeLow", pkg: "", typ: $Uint32, tag: ""}, {prop: "NumberOfLinks", name: "NumberOfLinks", pkg: "", typ: $Uint32, tag: ""}, {prop: "FileIndexHigh", name: "FileIndexHigh", pkg: "", typ: $Uint32, tag: ""}, {prop: "FileIndexLow", name: "FileIndexLow", pkg: "", typ: $Uint32, tag: ""}]);
  7808. Win32FileAttributeData.init([{prop: "FileAttributes", name: "FileAttributes", pkg: "", typ: $Uint32, tag: ""}, {prop: "CreationTime", name: "CreationTime", pkg: "", typ: Filetime, tag: ""}, {prop: "LastAccessTime", name: "LastAccessTime", pkg: "", typ: Filetime, tag: ""}, {prop: "LastWriteTime", name: "LastWriteTime", pkg: "", typ: Filetime, tag: ""}, {prop: "FileSizeHigh", name: "FileSizeHigh", pkg: "", typ: $Uint32, tag: ""}, {prop: "FileSizeLow", name: "FileSizeLow", pkg: "", typ: $Uint32, tag: ""}]);
  7809. WSABuf.init([{prop: "Len", name: "Len", pkg: "", typ: $Uint32, tag: ""}, {prop: "Buf", name: "Buf", pkg: "", typ: ptrType$15, tag: ""}]);
  7810. TransmitFileBuffers.init([{prop: "Head", name: "Head", pkg: "", typ: $Uintptr, tag: ""}, {prop: "HeadLength", name: "HeadLength", pkg: "", typ: $Uint32, tag: ""}, {prop: "Tail", name: "Tail", pkg: "", typ: $Uintptr, tag: ""}, {prop: "TailLength", name: "TailLength", pkg: "", typ: $Uint32, tag: ""}]);
  7811. SockaddrGen.init($Uint8, 24);
  7812. InterfaceInfo.init([{prop: "Flags", name: "Flags", pkg: "", typ: $Uint32, tag: ""}, {prop: "Address", name: "Address", pkg: "", typ: SockaddrGen, tag: ""}, {prop: "BroadcastAddress", name: "BroadcastAddress", pkg: "", typ: SockaddrGen, tag: ""}, {prop: "Netmask", name: "Netmask", pkg: "", typ: SockaddrGen, tag: ""}]);
  7813. IpAddressString.init([{prop: "String", name: "String", pkg: "", typ: arrayType$5, tag: ""}]);
  7814. IpMaskString.init([{prop: "String", name: "String", pkg: "", typ: arrayType$5, tag: ""}]);
  7815. IpAddrString.init([{prop: "Next", name: "Next", pkg: "", typ: ptrType$37, tag: ""}, {prop: "IpAddress", name: "IpAddress", pkg: "", typ: IpAddressString, tag: ""}, {prop: "IpMask", name: "IpMask", pkg: "", typ: IpMaskString, tag: ""}, {prop: "Context", name: "Context", pkg: "", typ: $Uint32, tag: ""}]);
  7816. IpAdapterInfo.init([{prop: "Next", name: "Next", pkg: "", typ: ptrType$38, tag: ""}, {prop: "ComboIndex", name: "ComboIndex", pkg: "", typ: $Uint32, tag: ""}, {prop: "AdapterName", name: "AdapterName", pkg: "", typ: arrayType$15, tag: ""}, {prop: "Description", name: "Description", pkg: "", typ: arrayType$16, tag: ""}, {prop: "AddressLength", name: "AddressLength", pkg: "", typ: $Uint32, tag: ""}, {prop: "Address", name: "Address", pkg: "", typ: arrayType$4, tag: ""}, {prop: "Index", name: "Index", pkg: "", typ: $Uint32, tag: ""}, {prop: "Type", name: "Type", pkg: "", typ: $Uint32, tag: ""}, {prop: "DhcpEnabled", name: "DhcpEnabled", pkg: "", typ: $Uint32, tag: ""}, {prop: "CurrentIpAddress", name: "CurrentIpAddress", pkg: "", typ: ptrType$37, tag: ""}, {prop: "IpAddressList", name: "IpAddressList", pkg: "", typ: IpAddrString, tag: ""}, {prop: "GatewayList", name: "GatewayList", pkg: "", typ: IpAddrString, tag: ""}, {prop: "DhcpServer", name: "DhcpServer", pkg: "", typ: IpAddrString, tag: ""}, {prop: "HaveWins", name: "HaveWins", pkg: "", typ: $Bool, tag: ""}, {prop: "PrimaryWinsServer", name: "PrimaryWinsServer", pkg: "", typ: IpAddrString, tag: ""}, {prop: "SecondaryWinsServer", name: "SecondaryWinsServer", pkg: "", typ: IpAddrString, tag: ""}, {prop: "LeaseObtained", name: "LeaseObtained", pkg: "", typ: $Int64, tag: ""}, {prop: "LeaseExpires", name: "LeaseExpires", pkg: "", typ: $Int64, tag: ""}]);
  7817. MibIfRow.init([{prop: "Name", name: "Name", pkg: "", typ: arrayType$17, tag: ""}, {prop: "Index", name: "Index", pkg: "", typ: $Uint32, tag: ""}, {prop: "Type", name: "Type", pkg: "", typ: $Uint32, tag: ""}, {prop: "Mtu", name: "Mtu", pkg: "", typ: $Uint32, tag: ""}, {prop: "Speed", name: "Speed", pkg: "", typ: $Uint32, tag: ""}, {prop: "PhysAddrLen", name: "PhysAddrLen", pkg: "", typ: $Uint32, tag: ""}, {prop: "PhysAddr", name: "PhysAddr", pkg: "", typ: arrayType$4, tag: ""}, {prop: "AdminStatus", name: "AdminStatus", pkg: "", typ: $Uint32, tag: ""}, {prop: "OperStatus", name: "OperStatus", pkg: "", typ: $Uint32, tag: ""}, {prop: "LastChange", name: "LastChange", pkg: "", typ: $Uint32, tag: ""}, {prop: "InOctets", name: "InOctets", pkg: "", typ: $Uint32, tag: ""}, {prop: "InUcastPkts", name: "InUcastPkts", pkg: "", typ: $Uint32, tag: ""}, {prop: "InNUcastPkts", name: "InNUcastPkts", pkg: "", typ: $Uint32, tag: ""}, {prop: "InDiscards", name: "InDiscards", pkg: "", typ: $Uint32, tag: ""}, {prop: "InErrors", name: "InErrors", pkg: "", typ: $Uint32, tag: ""}, {prop: "InUnknownProtos", name: "InUnknownProtos", pkg: "", typ: $Uint32, tag: ""}, {prop: "OutOctets", name: "OutOctets", pkg: "", typ: $Uint32, tag: ""}, {prop: "OutUcastPkts", name: "OutUcastPkts", pkg: "", typ: $Uint32, tag: ""}, {prop: "OutNUcastPkts", name: "OutNUcastPkts", pkg: "", typ: $Uint32, tag: ""}, {prop: "OutDiscards", name: "OutDiscards", pkg: "", typ: $Uint32, tag: ""}, {prop: "OutErrors", name: "OutErrors", pkg: "", typ: $Uint32, tag: ""}, {prop: "OutQLen", name: "OutQLen", pkg: "", typ: $Uint32, tag: ""}, {prop: "DescrLen", name: "DescrLen", pkg: "", typ: $Uint32, tag: ""}, {prop: "Descr", name: "Descr", pkg: "", typ: arrayType$18, tag: ""}]);
  7818. CertContext.init([{prop: "EncodingType", name: "EncodingType", pkg: "", typ: $Uint32, tag: ""}, {prop: "EncodedCert", name: "EncodedCert", pkg: "", typ: ptrType$15, tag: ""}, {prop: "Length", name: "Length", pkg: "", typ: $Uint32, tag: ""}, {prop: "CertInfo", name: "CertInfo", pkg: "", typ: $Uintptr, tag: ""}, {prop: "Store", name: "Store", pkg: "", typ: Handle, tag: ""}]);
  7819. CertChainContext.init([{prop: "Size", name: "Size", pkg: "", typ: $Uint32, tag: ""}, {prop: "TrustStatus", name: "TrustStatus", pkg: "", typ: CertTrustStatus, tag: ""}, {prop: "ChainCount", name: "ChainCount", pkg: "", typ: $Uint32, tag: ""}, {prop: "Chains", name: "Chains", pkg: "", typ: ptrType$40, tag: ""}, {prop: "LowerQualityChainCount", name: "LowerQualityChainCount", pkg: "", typ: $Uint32, tag: ""}, {prop: "LowerQualityChains", name: "LowerQualityChains", pkg: "", typ: ptrType$42, tag: ""}, {prop: "HasRevocationFreshnessTime", name: "HasRevocationFreshnessTime", pkg: "", typ: $Uint32, tag: ""}, {prop: "RevocationFreshnessTime", name: "RevocationFreshnessTime", pkg: "", typ: $Uint32, tag: ""}]);
  7820. CertSimpleChain.init([{prop: "Size", name: "Size", pkg: "", typ: $Uint32, tag: ""}, {prop: "TrustStatus", name: "TrustStatus", pkg: "", typ: CertTrustStatus, tag: ""}, {prop: "NumElements", name: "NumElements", pkg: "", typ: $Uint32, tag: ""}, {prop: "Elements", name: "Elements", pkg: "", typ: ptrType$44, tag: ""}, {prop: "TrustListInfo", name: "TrustListInfo", pkg: "", typ: $Uintptr, tag: ""}, {prop: "HasRevocationFreshnessTime", name: "HasRevocationFreshnessTime", pkg: "", typ: $Uint32, tag: ""}, {prop: "RevocationFreshnessTime", name: "RevocationFreshnessTime", pkg: "", typ: $Uint32, tag: ""}]);
  7821. CertChainElement.init([{prop: "Size", name: "Size", pkg: "", typ: $Uint32, tag: ""}, {prop: "CertContext", name: "CertContext", pkg: "", typ: ptrType$23, tag: ""}, {prop: "TrustStatus", name: "TrustStatus", pkg: "", typ: CertTrustStatus, tag: ""}, {prop: "RevocationInfo", name: "RevocationInfo", pkg: "", typ: ptrType$45, tag: ""}, {prop: "IssuanceUsage", name: "IssuanceUsage", pkg: "", typ: ptrType$46, tag: ""}, {prop: "ApplicationUsage", name: "ApplicationUsage", pkg: "", typ: ptrType$46, tag: ""}, {prop: "ExtendedErrorInfo", name: "ExtendedErrorInfo", pkg: "", typ: ptrType, tag: ""}]);
  7822. CertRevocationInfo.init([{prop: "Size", name: "Size", pkg: "", typ: $Uint32, tag: ""}, {prop: "RevocationResult", name: "RevocationResult", pkg: "", typ: $Uint32, tag: ""}, {prop: "RevocationOid", name: "RevocationOid", pkg: "", typ: ptrType$15, tag: ""}, {prop: "OidSpecificInfo", name: "OidSpecificInfo", pkg: "", typ: $Uintptr, tag: ""}, {prop: "HasFreshnessTime", name: "HasFreshnessTime", pkg: "", typ: $Uint32, tag: ""}, {prop: "FreshnessTime", name: "FreshnessTime", pkg: "", typ: $Uint32, tag: ""}, {prop: "CrlInfo", name: "CrlInfo", pkg: "", typ: $Uintptr, tag: ""}]);
  7823. CertTrustStatus.init([{prop: "ErrorStatus", name: "ErrorStatus", pkg: "", typ: $Uint32, tag: ""}, {prop: "InfoStatus", name: "InfoStatus", pkg: "", typ: $Uint32, tag: ""}]);
  7824. CertUsageMatch.init([{prop: "Type", name: "Type", pkg: "", typ: $Uint32, tag: ""}, {prop: "Usage", name: "Usage", pkg: "", typ: CertEnhKeyUsage, tag: ""}]);
  7825. CertEnhKeyUsage.init([{prop: "Length", name: "Length", pkg: "", typ: $Uint32, tag: ""}, {prop: "UsageIdentifiers", name: "UsageIdentifiers", pkg: "", typ: ptrType$35, tag: ""}]);
  7826. CertChainPara.init([{prop: "Size", name: "Size", pkg: "", typ: $Uint32, tag: ""}, {prop: "RequestedUsage", name: "RequestedUsage", pkg: "", typ: CertUsageMatch, tag: ""}, {prop: "RequstedIssuancePolicy", name: "RequstedIssuancePolicy", pkg: "", typ: CertUsageMatch, tag: ""}, {prop: "URLRetrievalTimeout", name: "URLRetrievalTimeout", pkg: "", typ: $Uint32, tag: ""}, {prop: "CheckRevocationFreshnessTime", name: "CheckRevocationFreshnessTime", pkg: "", typ: $Uint32, tag: ""}, {prop: "RevocationFreshnessTime", name: "RevocationFreshnessTime", pkg: "", typ: $Uint32, tag: ""}, {prop: "CacheResync", name: "CacheResync", pkg: "", typ: ptrType$20, tag: ""}]);
  7827. CertChainPolicyPara.init([{prop: "Size", name: "Size", pkg: "", typ: $Uint32, tag: ""}, {prop: "Flags", name: "Flags", pkg: "", typ: $Uint32, tag: ""}, {prop: "ExtraPolicyPara", name: "ExtraPolicyPara", pkg: "", typ: $Uintptr, tag: ""}]);
  7828. SSLExtraCertChainPolicyPara.init([{prop: "Size", name: "Size", pkg: "", typ: $Uint32, tag: ""}, {prop: "AuthType", name: "AuthType", pkg: "", typ: $Uint32, tag: ""}, {prop: "Checks", name: "Checks", pkg: "", typ: $Uint32, tag: ""}, {prop: "ServerName", name: "ServerName", pkg: "", typ: ptrType, tag: ""}]);
  7829. CertChainPolicyStatus.init([{prop: "Size", name: "Size", pkg: "", typ: $Uint32, tag: ""}, {prop: "Error", name: "Error", pkg: "", typ: $Uint32, tag: ""}, {prop: "ChainIndex", name: "ChainIndex", pkg: "", typ: $Uint32, tag: ""}, {prop: "ElementIndex", name: "ElementIndex", pkg: "", typ: $Uint32, tag: ""}, {prop: "ExtraPolicyStatus", name: "ExtraPolicyStatus", pkg: "", typ: $Uintptr, tag: ""}]);
  7830. TCPKeepalive.init([{prop: "OnOff", name: "OnOff", pkg: "", typ: $Uint32, tag: ""}, {prop: "Time", name: "Time", pkg: "", typ: $Uint32, tag: ""}, {prop: "Interval", name: "Interval", pkg: "", typ: $Uint32, tag: ""}]);
  7831. reparseDataBuffer.init([{prop: "ReparseTag", name: "ReparseTag", pkg: "", typ: $Uint32, tag: ""}, {prop: "ReparseDataLength", name: "ReparseDataLength", pkg: "", typ: $Uint16, tag: ""}, {prop: "Reserved", name: "Reserved", pkg: "", typ: $Uint16, tag: ""}, {prop: "SubstituteNameOffset", name: "SubstituteNameOffset", pkg: "", typ: $Uint16, tag: ""}, {prop: "SubstituteNameLength", name: "SubstituteNameLength", pkg: "", typ: $Uint16, tag: ""}, {prop: "PrintNameOffset", name: "PrintNameOffset", pkg: "", typ: $Uint16, tag: ""}, {prop: "PrintNameLength", name: "PrintNameLength", pkg: "", typ: $Uint16, tag: ""}, {prop: "Flags", name: "Flags", pkg: "", typ: $Uint32, tag: ""}, {prop: "PathBuffer", name: "PathBuffer", pkg: "", typ: arrayType$20, tag: ""}]);
  7832. $init = function() {
  7833. $pkg.$init = function() {};
  7834. /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  7835. $r = bytes.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  7836. $r = errors.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  7837. $r = js.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  7838. $r = sync.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  7839. $r = atomic.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  7840. $r = utf16.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  7841. lineBuffer = sliceType.nil;
  7842. $pkg.ForkLock = new sync.RWMutex.ptr();
  7843. $pkg.SocketDisableIPv6 = false;
  7844. warningPrinted = false;
  7845. minusOne = -1;
  7846. errors$1 = $toNativeArray($kindString, ["argument list too long", "permission denied", "address already in use", "cannot assign requested address", "advertise error", "address family not supported by protocol", "resource temporarily unavailable", "operation already in progress", "invalid exchange", "bad file descriptor", "file descriptor in bad state", "bad message", "invalid request descriptor", "invalid request code", "invalid slot", "bad font file format", "device or resource busy", "operation canceled", "no child processes", "channel number out of range", "communication error on send", "software caused connection abort", "connection refused", "connection reset by peer", "resource deadlock avoided", "resource deadlock avoided", "destination address required", "numerical argument out of domain", "RFS specific error", "disk quota exceeded", "file exists", "bad address", "file too large", "host is down", "no route to host", "identifier removed", "invalid or incomplete multibyte or wide character", "operation now in progress", "interrupted system call", "invalid argument", "input/output error", "transport endpoint is already connected", "is a directory", "is a named type file", "key has expired", "key was rejected by service", "key has been revoked", "level 2 halted", "level 2 not synchronized", "level 3 halted", "level 3 reset", "can not access a needed shared library", "accessing a corrupted shared library", "cannot exec a shared library directly", "attempting to link in too many shared libraries", ".lib section in a.out corrupted", "link number out of range", "too many levels of symbolic links", "wrong medium type", "too many open files", "too many links", "message too long", "multihop attempted", "file name too long", "no XENIX semaphores available", "network is down", "network dropped connection on reset", "network is unreachable", "too many open files in system", "no anode", "no buffer space available", "no CSI structure available", "no data available", "no such device", "exec format error", "required key not available", "no locks available", "link has been severed", "no medium found", "cannot allocate memory", "no message of desired type", "machine is not on the network", "package not installed", "protocol not available", "no space left on device", "out of streams resources", "device not a stream", "function not implemented", "block device required", "transport endpoint is not connected", "directory not empty", "not a XENIX named type file", "state not recoverable", "socket operation on non-socket", "operation not supported", "inappropriate ioctl for device", "name not unique on network", "no such device or address", "operation not supported", "value too large for defined data type", "owner died", "operation not permitted", "protocol family not supported", "broken pipe", "protocol error", "protocol not supported", "protocol wrong type for socket", "numerical result out of range", "remote address changed", "object is remote", "remote I/O error", "interrupted system call should be restarted", "read-only file system", "cannot send after transport endpoint shutdown", "socket type not supported", "illegal seek", "no such process", "srmount error", "stale NFS file handle", "streams pipe error", "timer expired", "connection timed out", "too many references: cannot splice", "text file busy", "structure needs cleaning", "protocol driver not attached", "too many users", "resource temporarily unavailable", "invalid cross-device link", "exchange full", "not supported by windows"]);
  7847. modkernel32 = NewLazyDLL("kernel32.dll");
  7848. modadvapi32 = NewLazyDLL("advapi32.dll");
  7849. modshell32 = NewLazyDLL("shell32.dll");
  7850. modmswsock = NewLazyDLL("mswsock.dll");
  7851. modcrypt32 = NewLazyDLL("crypt32.dll");
  7852. modws2_32 = NewLazyDLL("ws2_32.dll");
  7853. moddnsapi = NewLazyDLL("dnsapi.dll");
  7854. modiphlpapi = NewLazyDLL("iphlpapi.dll");
  7855. modsecur32 = NewLazyDLL("secur32.dll");
  7856. modnetapi32 = NewLazyDLL("netapi32.dll");
  7857. moduserenv = NewLazyDLL("userenv.dll");
  7858. procGetLastError = modkernel32.NewProc("GetLastError");
  7859. procLoadLibraryW = modkernel32.NewProc("LoadLibraryW");
  7860. procFreeLibrary = modkernel32.NewProc("FreeLibrary");
  7861. procGetProcAddress = modkernel32.NewProc("GetProcAddress");
  7862. procGetVersion = modkernel32.NewProc("GetVersion");
  7863. procFormatMessageW = modkernel32.NewProc("FormatMessageW");
  7864. procExitProcess = modkernel32.NewProc("ExitProcess");
  7865. procCreateFileW = modkernel32.NewProc("CreateFileW");
  7866. procReadFile = modkernel32.NewProc("ReadFile");
  7867. procWriteFile = modkernel32.NewProc("WriteFile");
  7868. procSetFilePointer = modkernel32.NewProc("SetFilePointer");
  7869. procCloseHandle = modkernel32.NewProc("CloseHandle");
  7870. procGetStdHandle = modkernel32.NewProc("GetStdHandle");
  7871. procFindFirstFileW = modkernel32.NewProc("FindFirstFileW");
  7872. procFindNextFileW = modkernel32.NewProc("FindNextFileW");
  7873. procFindClose = modkernel32.NewProc("FindClose");
  7874. procGetFileInformationByHandle = modkernel32.NewProc("GetFileInformationByHandle");
  7875. procGetCurrentDirectoryW = modkernel32.NewProc("GetCurrentDirectoryW");
  7876. procSetCurrentDirectoryW = modkernel32.NewProc("SetCurrentDirectoryW");
  7877. procCreateDirectoryW = modkernel32.NewProc("CreateDirectoryW");
  7878. procRemoveDirectoryW = modkernel32.NewProc("RemoveDirectoryW");
  7879. procDeleteFileW = modkernel32.NewProc("DeleteFileW");
  7880. procMoveFileW = modkernel32.NewProc("MoveFileW");
  7881. procGetComputerNameW = modkernel32.NewProc("GetComputerNameW");
  7882. procSetEndOfFile = modkernel32.NewProc("SetEndOfFile");
  7883. procGetSystemTimeAsFileTime = modkernel32.NewProc("GetSystemTimeAsFileTime");
  7884. procGetTimeZoneInformation = modkernel32.NewProc("GetTimeZoneInformation");
  7885. procCreateIoCompletionPort = modkernel32.NewProc("CreateIoCompletionPort");
  7886. procGetQueuedCompletionStatus = modkernel32.NewProc("GetQueuedCompletionStatus");
  7887. procPostQueuedCompletionStatus = modkernel32.NewProc("PostQueuedCompletionStatus");
  7888. procCancelIo = modkernel32.NewProc("CancelIo");
  7889. procCancelIoEx = modkernel32.NewProc("CancelIoEx");
  7890. procCreateProcessW = modkernel32.NewProc("CreateProcessW");
  7891. procOpenProcess = modkernel32.NewProc("OpenProcess");
  7892. procTerminateProcess = modkernel32.NewProc("TerminateProcess");
  7893. procGetExitCodeProcess = modkernel32.NewProc("GetExitCodeProcess");
  7894. procGetStartupInfoW = modkernel32.NewProc("GetStartupInfoW");
  7895. procGetCurrentProcess = modkernel32.NewProc("GetCurrentProcess");
  7896. procGetProcessTimes = modkernel32.NewProc("GetProcessTimes");
  7897. procDuplicateHandle = modkernel32.NewProc("DuplicateHandle");
  7898. procWaitForSingleObject = modkernel32.NewProc("WaitForSingleObject");
  7899. procGetTempPathW = modkernel32.NewProc("GetTempPathW");
  7900. procCreatePipe = modkernel32.NewProc("CreatePipe");
  7901. procGetFileType = modkernel32.NewProc("GetFileType");
  7902. procCryptAcquireContextW = modadvapi32.NewProc("CryptAcquireContextW");
  7903. procCryptReleaseContext = modadvapi32.NewProc("CryptReleaseContext");
  7904. procCryptGenRandom = modadvapi32.NewProc("CryptGenRandom");
  7905. procGetEnvironmentStringsW = modkernel32.NewProc("GetEnvironmentStringsW");
  7906. procFreeEnvironmentStringsW = modkernel32.NewProc("FreeEnvironmentStringsW");
  7907. procGetEnvironmentVariableW = modkernel32.NewProc("GetEnvironmentVariableW");
  7908. procSetEnvironmentVariableW = modkernel32.NewProc("SetEnvironmentVariableW");
  7909. procSetFileTime = modkernel32.NewProc("SetFileTime");
  7910. procGetFileAttributesW = modkernel32.NewProc("GetFileAttributesW");
  7911. procSetFileAttributesW = modkernel32.NewProc("SetFileAttributesW");
  7912. procGetFileAttributesExW = modkernel32.NewProc("GetFileAttributesExW");
  7913. procGetCommandLineW = modkernel32.NewProc("GetCommandLineW");
  7914. procCommandLineToArgvW = modshell32.NewProc("CommandLineToArgvW");
  7915. procLocalFree = modkernel32.NewProc("LocalFree");
  7916. procSetHandleInformation = modkernel32.NewProc("SetHandleInformation");
  7917. procFlushFileBuffers = modkernel32.NewProc("FlushFileBuffers");
  7918. procGetFullPathNameW = modkernel32.NewProc("GetFullPathNameW");
  7919. procGetLongPathNameW = modkernel32.NewProc("GetLongPathNameW");
  7920. procGetShortPathNameW = modkernel32.NewProc("GetShortPathNameW");
  7921. procCreateFileMappingW = modkernel32.NewProc("CreateFileMappingW");
  7922. procMapViewOfFile = modkernel32.NewProc("MapViewOfFile");
  7923. procUnmapViewOfFile = modkernel32.NewProc("UnmapViewOfFile");
  7924. procFlushViewOfFile = modkernel32.NewProc("FlushViewOfFile");
  7925. procVirtualLock = modkernel32.NewProc("VirtualLock");
  7926. procVirtualUnlock = modkernel32.NewProc("VirtualUnlock");
  7927. procTransmitFile = modmswsock.NewProc("TransmitFile");
  7928. procReadDirectoryChangesW = modkernel32.NewProc("ReadDirectoryChangesW");
  7929. procCertOpenSystemStoreW = modcrypt32.NewProc("CertOpenSystemStoreW");
  7930. procCertOpenStore = modcrypt32.NewProc("CertOpenStore");
  7931. procCertEnumCertificatesInStore = modcrypt32.NewProc("CertEnumCertificatesInStore");
  7932. procCertAddCertificateContextToStore = modcrypt32.NewProc("CertAddCertificateContextToStore");
  7933. procCertCloseStore = modcrypt32.NewProc("CertCloseStore");
  7934. procCertGetCertificateChain = modcrypt32.NewProc("CertGetCertificateChain");
  7935. procCertFreeCertificateChain = modcrypt32.NewProc("CertFreeCertificateChain");
  7936. procCertCreateCertificateContext = modcrypt32.NewProc("CertCreateCertificateContext");
  7937. procCertFreeCertificateContext = modcrypt32.NewProc("CertFreeCertificateContext");
  7938. procCertVerifyCertificateChainPolicy = modcrypt32.NewProc("CertVerifyCertificateChainPolicy");
  7939. procRegOpenKeyExW = modadvapi32.NewProc("RegOpenKeyExW");
  7940. procRegCloseKey = modadvapi32.NewProc("RegCloseKey");
  7941. procRegQueryInfoKeyW = modadvapi32.NewProc("RegQueryInfoKeyW");
  7942. procRegEnumKeyExW = modadvapi32.NewProc("RegEnumKeyExW");
  7943. procRegQueryValueExW = modadvapi32.NewProc("RegQueryValueExW");
  7944. procGetCurrentProcessId = modkernel32.NewProc("GetCurrentProcessId");
  7945. procGetConsoleMode = modkernel32.NewProc("GetConsoleMode");
  7946. procWriteConsoleW = modkernel32.NewProc("WriteConsoleW");
  7947. procReadConsoleW = modkernel32.NewProc("ReadConsoleW");
  7948. procCreateToolhelp32Snapshot = modkernel32.NewProc("CreateToolhelp32Snapshot");
  7949. procProcess32FirstW = modkernel32.NewProc("Process32FirstW");
  7950. procProcess32NextW = modkernel32.NewProc("Process32NextW");
  7951. procDeviceIoControl = modkernel32.NewProc("DeviceIoControl");
  7952. procCreateSymbolicLinkW = modkernel32.NewProc("CreateSymbolicLinkW");
  7953. procCreateHardLinkW = modkernel32.NewProc("CreateHardLinkW");
  7954. procWSAStartup = modws2_32.NewProc("WSAStartup");
  7955. procWSACleanup = modws2_32.NewProc("WSACleanup");
  7956. procWSAIoctl = modws2_32.NewProc("WSAIoctl");
  7957. procsocket = modws2_32.NewProc("socket");
  7958. procsetsockopt = modws2_32.NewProc("setsockopt");
  7959. procgetsockopt = modws2_32.NewProc("getsockopt");
  7960. procbind = modws2_32.NewProc("bind");
  7961. procconnect = modws2_32.NewProc("connect");
  7962. procgetsockname = modws2_32.NewProc("getsockname");
  7963. procgetpeername = modws2_32.NewProc("getpeername");
  7964. proclisten = modws2_32.NewProc("listen");
  7965. procshutdown = modws2_32.NewProc("shutdown");
  7966. procclosesocket = modws2_32.NewProc("closesocket");
  7967. procAcceptEx = modmswsock.NewProc("AcceptEx");
  7968. procGetAcceptExSockaddrs = modmswsock.NewProc("GetAcceptExSockaddrs");
  7969. procWSARecv = modws2_32.NewProc("WSARecv");
  7970. procWSASend = modws2_32.NewProc("WSASend");
  7971. procWSARecvFrom = modws2_32.NewProc("WSARecvFrom");
  7972. procWSASendTo = modws2_32.NewProc("WSASendTo");
  7973. procgethostbyname = modws2_32.NewProc("gethostbyname");
  7974. procgetservbyname = modws2_32.NewProc("getservbyname");
  7975. procntohs = modws2_32.NewProc("ntohs");
  7976. procgetprotobyname = modws2_32.NewProc("getprotobyname");
  7977. procDnsQuery_W = moddnsapi.NewProc("DnsQuery_W");
  7978. procDnsRecordListFree = moddnsapi.NewProc("DnsRecordListFree");
  7979. procDnsNameCompare_W = moddnsapi.NewProc("DnsNameCompare_W");
  7980. procGetAddrInfoW = modws2_32.NewProc("GetAddrInfoW");
  7981. procFreeAddrInfoW = modws2_32.NewProc("FreeAddrInfoW");
  7982. procGetIfEntry = modiphlpapi.NewProc("GetIfEntry");
  7983. procGetAdaptersInfo = modiphlpapi.NewProc("GetAdaptersInfo");
  7984. procSetFileCompletionNotificationModes = modkernel32.NewProc("SetFileCompletionNotificationModes");
  7985. procWSAEnumProtocolsW = modws2_32.NewProc("WSAEnumProtocolsW");
  7986. procTranslateNameW = modsecur32.NewProc("TranslateNameW");
  7987. procGetUserNameExW = modsecur32.NewProc("GetUserNameExW");
  7988. procNetUserGetInfo = modnetapi32.NewProc("NetUserGetInfo");
  7989. procNetGetJoinInformation = modnetapi32.NewProc("NetGetJoinInformation");
  7990. procNetApiBufferFree = modnetapi32.NewProc("NetApiBufferFree");
  7991. procLookupAccountSidW = modadvapi32.NewProc("LookupAccountSidW");
  7992. procLookupAccountNameW = modadvapi32.NewProc("LookupAccountNameW");
  7993. procConvertSidToStringSidW = modadvapi32.NewProc("ConvertSidToStringSidW");
  7994. procConvertStringSidToSidW = modadvapi32.NewProc("ConvertStringSidToSidW");
  7995. procGetLengthSid = modadvapi32.NewProc("GetLengthSid");
  7996. procCopySid = modadvapi32.NewProc("CopySid");
  7997. procOpenProcessToken = modadvapi32.NewProc("OpenProcessToken");
  7998. procGetTokenInformation = modadvapi32.NewProc("GetTokenInformation");
  7999. procGetUserProfileDirectoryW = moduserenv.NewProc("GetUserProfileDirectoryW");
  8000. $pkg.Stdin = getStdHandle(-10);
  8001. $pkg.Stdout = getStdHandle(-11);
  8002. $pkg.Stderr = getStdHandle(-12);
  8003. $pkg.OID_PKIX_KP_SERVER_AUTH = new sliceType($stringToBytes("1.3.6.1.5.5.7.3.1\x00"));
  8004. $pkg.OID_SERVER_GATED_CRYPTO = new sliceType($stringToBytes("1.3.6.1.4.1.311.10.3.3\x00"));
  8005. $pkg.OID_SGC_NETSCAPE = new sliceType($stringToBytes("2.16.840.1.113730.4.1\x00"));
  8006. init();
  8007. /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
  8008. };
  8009. $pkg.$init = $init;
  8010. return $pkg;
  8011. })();
  8012. $packages["github.com/gopherjs/gopherjs/nosync"] = (function() {
  8013. var $pkg = {}, $init, Mutex, Once, ptrType, funcType, ptrType$3;
  8014. Mutex = $pkg.Mutex = $newType(0, $kindStruct, "nosync.Mutex", "Mutex", "github.com/gopherjs/gopherjs/nosync", function(locked_) {
  8015. this.$val = this;
  8016. if (arguments.length === 0) {
  8017. this.locked = false;
  8018. return;
  8019. }
  8020. this.locked = locked_;
  8021. });
  8022. Once = $pkg.Once = $newType(0, $kindStruct, "nosync.Once", "Once", "github.com/gopherjs/gopherjs/nosync", function(doing_, done_) {
  8023. this.$val = this;
  8024. if (arguments.length === 0) {
  8025. this.doing = false;
  8026. this.done = false;
  8027. return;
  8028. }
  8029. this.doing = doing_;
  8030. this.done = done_;
  8031. });
  8032. ptrType = $ptrType(Mutex);
  8033. funcType = $funcType([], [], false);
  8034. ptrType$3 = $ptrType(Once);
  8035. Mutex.ptr.prototype.Lock = function() {
  8036. var $ptr, m;
  8037. m = this;
  8038. if (m.locked) {
  8039. $panic(new $String("nosync: mutex is already locked"));
  8040. }
  8041. m.locked = true;
  8042. };
  8043. Mutex.prototype.Lock = function() { return this.$val.Lock(); };
  8044. Mutex.ptr.prototype.Unlock = function() {
  8045. var $ptr, m;
  8046. m = this;
  8047. if (!m.locked) {
  8048. $panic(new $String("nosync: unlock of unlocked mutex"));
  8049. }
  8050. m.locked = false;
  8051. };
  8052. Mutex.prototype.Unlock = function() { return this.$val.Unlock(); };
  8053. Once.ptr.prototype.Do = function(f) {
  8054. var $ptr, f, o, $s, $deferred, $r;
  8055. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; f = $f.f; o = $f.o; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
  8056. o = [o];
  8057. o[0] = this;
  8058. if (o[0].done) {
  8059. return;
  8060. }
  8061. if (o[0].doing) {
  8062. $panic(new $String("nosync: Do called within f"));
  8063. }
  8064. o[0].doing = true;
  8065. $deferred.push([(function(o) { return function() {
  8066. var $ptr;
  8067. o[0].doing = false;
  8068. o[0].done = true;
  8069. }; })(o), []]);
  8070. $r = f(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  8071. /* */ $s = -1; case -1: } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: Once.ptr.prototype.Do }; } $f.$ptr = $ptr; $f.f = f; $f.o = o; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
  8072. };
  8073. Once.prototype.Do = function(f) { return this.$val.Do(f); };
  8074. ptrType.methods = [{prop: "Lock", name: "Lock", pkg: "", typ: $funcType([], [], false)}, {prop: "Unlock", name: "Unlock", pkg: "", typ: $funcType([], [], false)}];
  8075. ptrType$3.methods = [{prop: "Do", name: "Do", pkg: "", typ: $funcType([funcType], [], false)}];
  8076. Mutex.init([{prop: "locked", name: "locked", pkg: "github.com/gopherjs/gopherjs/nosync", typ: $Bool, tag: ""}]);
  8077. Once.init([{prop: "doing", name: "doing", pkg: "github.com/gopherjs/gopherjs/nosync", typ: $Bool, tag: ""}, {prop: "done", name: "done", pkg: "github.com/gopherjs/gopherjs/nosync", typ: $Bool, tag: ""}]);
  8078. $init = function() {
  8079. $pkg.$init = function() {};
  8080. /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  8081. /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
  8082. };
  8083. $pkg.$init = $init;
  8084. return $pkg;
  8085. })();
  8086. $packages["strings"] = (function() {
  8087. var $pkg = {}, $init, errors, js, io, unicode, utf8, Reader, Replacer, replacer, trieNode, genericReplacer, appendSliceWriter, stringWriterIface, stringWriter, singleStringReplacer, byteReplacer, byteStringReplacer, stringFinder, arrayType, ptrType, sliceType, arrayType$1, ptrType$1, ptrType$2, sliceType$1, ptrType$3, ptrType$4, arrayType$2, sliceType$2, sliceType$3, ptrType$5, ptrType$6, ptrType$7, ptrType$8, IndexByte, NewReader, NewReplacer, makeGenericReplacer, getStringWriter, makeSingleStringReplacer, makeStringFinder, longestCommonSuffix, max, explode, hashStr, hashStrRev, Count, Contains, Index, LastIndex, IndexRune, IndexAny, genSplit, SplitN, Split, Join, HasPrefix, HasSuffix, Map, ToLower, TrimLeftFunc, TrimRightFunc, TrimFunc, IndexFunc, indexFunc, lastIndexFunc, makeCutsetFunc, TrimLeft, TrimRight, TrimSpace, TrimPrefix, Replace, EqualFold;
  8088. errors = $packages["errors"];
  8089. js = $packages["github.com/gopherjs/gopherjs/js"];
  8090. io = $packages["io"];
  8091. unicode = $packages["unicode"];
  8092. utf8 = $packages["unicode/utf8"];
  8093. Reader = $pkg.Reader = $newType(0, $kindStruct, "strings.Reader", "Reader", "strings", function(s_, i_, prevRune_) {
  8094. this.$val = this;
  8095. if (arguments.length === 0) {
  8096. this.s = "";
  8097. this.i = new $Int64(0, 0);
  8098. this.prevRune = 0;
  8099. return;
  8100. }
  8101. this.s = s_;
  8102. this.i = i_;
  8103. this.prevRune = prevRune_;
  8104. });
  8105. Replacer = $pkg.Replacer = $newType(0, $kindStruct, "strings.Replacer", "Replacer", "strings", function(r_) {
  8106. this.$val = this;
  8107. if (arguments.length === 0) {
  8108. this.r = $ifaceNil;
  8109. return;
  8110. }
  8111. this.r = r_;
  8112. });
  8113. replacer = $pkg.replacer = $newType(8, $kindInterface, "strings.replacer", "replacer", "strings", null);
  8114. trieNode = $pkg.trieNode = $newType(0, $kindStruct, "strings.trieNode", "trieNode", "strings", function(value_, priority_, prefix_, next_, table_) {
  8115. this.$val = this;
  8116. if (arguments.length === 0) {
  8117. this.value = "";
  8118. this.priority = 0;
  8119. this.prefix = "";
  8120. this.next = ptrType$2.nil;
  8121. this.table = sliceType$1.nil;
  8122. return;
  8123. }
  8124. this.value = value_;
  8125. this.priority = priority_;
  8126. this.prefix = prefix_;
  8127. this.next = next_;
  8128. this.table = table_;
  8129. });
  8130. genericReplacer = $pkg.genericReplacer = $newType(0, $kindStruct, "strings.genericReplacer", "genericReplacer", "strings", function(root_, tableSize_, mapping_) {
  8131. this.$val = this;
  8132. if (arguments.length === 0) {
  8133. this.root = new trieNode.ptr();
  8134. this.tableSize = 0;
  8135. this.mapping = arrayType.zero();
  8136. return;
  8137. }
  8138. this.root = root_;
  8139. this.tableSize = tableSize_;
  8140. this.mapping = mapping_;
  8141. });
  8142. appendSliceWriter = $pkg.appendSliceWriter = $newType(12, $kindSlice, "strings.appendSliceWriter", "appendSliceWriter", "strings", null);
  8143. stringWriterIface = $pkg.stringWriterIface = $newType(8, $kindInterface, "strings.stringWriterIface", "stringWriterIface", "strings", null);
  8144. stringWriter = $pkg.stringWriter = $newType(0, $kindStruct, "strings.stringWriter", "stringWriter", "strings", function(w_) {
  8145. this.$val = this;
  8146. if (arguments.length === 0) {
  8147. this.w = $ifaceNil;
  8148. return;
  8149. }
  8150. this.w = w_;
  8151. });
  8152. singleStringReplacer = $pkg.singleStringReplacer = $newType(0, $kindStruct, "strings.singleStringReplacer", "singleStringReplacer", "strings", function(finder_, value_) {
  8153. this.$val = this;
  8154. if (arguments.length === 0) {
  8155. this.finder = ptrType$4.nil;
  8156. this.value = "";
  8157. return;
  8158. }
  8159. this.finder = finder_;
  8160. this.value = value_;
  8161. });
  8162. byteReplacer = $pkg.byteReplacer = $newType(256, $kindArray, "strings.byteReplacer", "byteReplacer", "strings", null);
  8163. byteStringReplacer = $pkg.byteStringReplacer = $newType(4092, $kindArray, "strings.byteStringReplacer", "byteStringReplacer", "strings", null);
  8164. stringFinder = $pkg.stringFinder = $newType(0, $kindStruct, "strings.stringFinder", "stringFinder", "strings", function(pattern_, badCharSkip_, goodSuffixSkip_) {
  8165. this.$val = this;
  8166. if (arguments.length === 0) {
  8167. this.pattern = "";
  8168. this.badCharSkip = arrayType$2.zero();
  8169. this.goodSuffixSkip = sliceType$2.nil;
  8170. return;
  8171. }
  8172. this.pattern = pattern_;
  8173. this.badCharSkip = badCharSkip_;
  8174. this.goodSuffixSkip = goodSuffixSkip_;
  8175. });
  8176. arrayType = $arrayType($Uint8, 256);
  8177. ptrType = $ptrType(byteReplacer);
  8178. sliceType = $sliceType($Uint8);
  8179. arrayType$1 = $arrayType(sliceType, 256);
  8180. ptrType$1 = $ptrType(byteStringReplacer);
  8181. ptrType$2 = $ptrType(trieNode);
  8182. sliceType$1 = $sliceType(ptrType$2);
  8183. ptrType$3 = $ptrType(appendSliceWriter);
  8184. ptrType$4 = $ptrType(stringFinder);
  8185. arrayType$2 = $arrayType($Int, 256);
  8186. sliceType$2 = $sliceType($Int);
  8187. sliceType$3 = $sliceType($String);
  8188. ptrType$5 = $ptrType(Reader);
  8189. ptrType$6 = $ptrType(Replacer);
  8190. ptrType$7 = $ptrType(genericReplacer);
  8191. ptrType$8 = $ptrType(singleStringReplacer);
  8192. IndexByte = function(s, c) {
  8193. var $ptr, c, s;
  8194. return $parseInt(s.indexOf($global.String.fromCharCode(c))) >> 0;
  8195. };
  8196. $pkg.IndexByte = IndexByte;
  8197. Reader.ptr.prototype.Len = function() {
  8198. var $ptr, r, x, x$1, x$2, x$3, x$4;
  8199. r = this;
  8200. if ((x = r.i, x$1 = new $Int64(0, r.s.length), (x.$high > x$1.$high || (x.$high === x$1.$high && x.$low >= x$1.$low)))) {
  8201. return 0;
  8202. }
  8203. return ((x$2 = (x$3 = new $Int64(0, r.s.length), x$4 = r.i, new $Int64(x$3.$high - x$4.$high, x$3.$low - x$4.$low)), x$2.$low + ((x$2.$high >> 31) * 4294967296)) >> 0);
  8204. };
  8205. Reader.prototype.Len = function() { return this.$val.Len(); };
  8206. Reader.ptr.prototype.Read = function(b) {
  8207. var $ptr, _tmp, _tmp$1, _tmp$2, _tmp$3, b, err, n, r, x, x$1, x$2, x$3;
  8208. n = 0;
  8209. err = $ifaceNil;
  8210. r = this;
  8211. if (b.$length === 0) {
  8212. _tmp = 0; _tmp$1 = $ifaceNil; n = _tmp; err = _tmp$1;
  8213. return [n, err];
  8214. }
  8215. if ((x = r.i, x$1 = new $Int64(0, r.s.length), (x.$high > x$1.$high || (x.$high === x$1.$high && x.$low >= x$1.$low)))) {
  8216. _tmp$2 = 0; _tmp$3 = io.EOF; n = _tmp$2; err = _tmp$3;
  8217. return [n, err];
  8218. }
  8219. r.prevRune = -1;
  8220. n = $copyString(b, r.s.substring($flatten64(r.i)));
  8221. r.i = (x$2 = r.i, x$3 = new $Int64(0, n), new $Int64(x$2.$high + x$3.$high, x$2.$low + x$3.$low));
  8222. return [n, err];
  8223. };
  8224. Reader.prototype.Read = function(b) { return this.$val.Read(b); };
  8225. Reader.ptr.prototype.ReadAt = function(b, off) {
  8226. var $ptr, _tmp, _tmp$1, _tmp$2, _tmp$3, b, err, n, off, r, x;
  8227. n = 0;
  8228. err = $ifaceNil;
  8229. r = this;
  8230. if ((off.$high < 0 || (off.$high === 0 && off.$low < 0))) {
  8231. _tmp = 0; _tmp$1 = errors.New("strings.Reader.ReadAt: negative offset"); n = _tmp; err = _tmp$1;
  8232. return [n, err];
  8233. }
  8234. if ((x = new $Int64(0, r.s.length), (off.$high > x.$high || (off.$high === x.$high && off.$low >= x.$low)))) {
  8235. _tmp$2 = 0; _tmp$3 = io.EOF; n = _tmp$2; err = _tmp$3;
  8236. return [n, err];
  8237. }
  8238. n = $copyString(b, r.s.substring($flatten64(off)));
  8239. if (n < b.$length) {
  8240. err = io.EOF;
  8241. }
  8242. return [n, err];
  8243. };
  8244. Reader.prototype.ReadAt = function(b, off) { return this.$val.ReadAt(b, off); };
  8245. Reader.ptr.prototype.ReadByte = function() {
  8246. var $ptr, _tmp, _tmp$1, b, err, r, x, x$1, x$2, x$3;
  8247. b = 0;
  8248. err = $ifaceNil;
  8249. r = this;
  8250. r.prevRune = -1;
  8251. if ((x = r.i, x$1 = new $Int64(0, r.s.length), (x.$high > x$1.$high || (x.$high === x$1.$high && x.$low >= x$1.$low)))) {
  8252. _tmp = 0; _tmp$1 = io.EOF; b = _tmp; err = _tmp$1;
  8253. return [b, err];
  8254. }
  8255. b = r.s.charCodeAt($flatten64(r.i));
  8256. r.i = (x$2 = r.i, x$3 = new $Int64(0, 1), new $Int64(x$2.$high + x$3.$high, x$2.$low + x$3.$low));
  8257. return [b, err];
  8258. };
  8259. Reader.prototype.ReadByte = function() { return this.$val.ReadByte(); };
  8260. Reader.ptr.prototype.UnreadByte = function() {
  8261. var $ptr, r, x, x$1, x$2;
  8262. r = this;
  8263. r.prevRune = -1;
  8264. if ((x = r.i, (x.$high < 0 || (x.$high === 0 && x.$low <= 0)))) {
  8265. return errors.New("strings.Reader.UnreadByte: at beginning of string");
  8266. }
  8267. r.i = (x$1 = r.i, x$2 = new $Int64(0, 1), new $Int64(x$1.$high - x$2.$high, x$1.$low - x$2.$low));
  8268. return $ifaceNil;
  8269. };
  8270. Reader.prototype.UnreadByte = function() { return this.$val.UnreadByte(); };
  8271. Reader.ptr.prototype.ReadRune = function() {
  8272. var $ptr, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tuple, c, ch, err, r, size, x, x$1, x$2, x$3, x$4, x$5, x$6;
  8273. ch = 0;
  8274. size = 0;
  8275. err = $ifaceNil;
  8276. r = this;
  8277. if ((x = r.i, x$1 = new $Int64(0, r.s.length), (x.$high > x$1.$high || (x.$high === x$1.$high && x.$low >= x$1.$low)))) {
  8278. r.prevRune = -1;
  8279. _tmp = 0; _tmp$1 = 0; _tmp$2 = io.EOF; ch = _tmp; size = _tmp$1; err = _tmp$2;
  8280. return [ch, size, err];
  8281. }
  8282. r.prevRune = ((x$2 = r.i, x$2.$low + ((x$2.$high >> 31) * 4294967296)) >> 0);
  8283. c = r.s.charCodeAt($flatten64(r.i));
  8284. if (c < 128) {
  8285. r.i = (x$3 = r.i, x$4 = new $Int64(0, 1), new $Int64(x$3.$high + x$4.$high, x$3.$low + x$4.$low));
  8286. _tmp$3 = (c >> 0); _tmp$4 = 1; _tmp$5 = $ifaceNil; ch = _tmp$3; size = _tmp$4; err = _tmp$5;
  8287. return [ch, size, err];
  8288. }
  8289. _tuple = utf8.DecodeRuneInString(r.s.substring($flatten64(r.i))); ch = _tuple[0]; size = _tuple[1];
  8290. r.i = (x$5 = r.i, x$6 = new $Int64(0, size), new $Int64(x$5.$high + x$6.$high, x$5.$low + x$6.$low));
  8291. return [ch, size, err];
  8292. };
  8293. Reader.prototype.ReadRune = function() { return this.$val.ReadRune(); };
  8294. Reader.ptr.prototype.UnreadRune = function() {
  8295. var $ptr, r;
  8296. r = this;
  8297. if (r.prevRune < 0) {
  8298. return errors.New("strings.Reader.UnreadRune: previous operation was not ReadRune");
  8299. }
  8300. r.i = new $Int64(0, r.prevRune);
  8301. r.prevRune = -1;
  8302. return $ifaceNil;
  8303. };
  8304. Reader.prototype.UnreadRune = function() { return this.$val.UnreadRune(); };
  8305. Reader.ptr.prototype.Seek = function(offset, whence) {
  8306. var $ptr, _ref, abs, offset, r, whence, x, x$1;
  8307. r = this;
  8308. r.prevRune = -1;
  8309. abs = new $Int64(0, 0);
  8310. _ref = whence;
  8311. if (_ref === 0) {
  8312. abs = offset;
  8313. } else if (_ref === 1) {
  8314. abs = (x = r.i, new $Int64(x.$high + offset.$high, x.$low + offset.$low));
  8315. } else if (_ref === 2) {
  8316. abs = (x$1 = new $Int64(0, r.s.length), new $Int64(x$1.$high + offset.$high, x$1.$low + offset.$low));
  8317. } else {
  8318. return [new $Int64(0, 0), errors.New("strings.Reader.Seek: invalid whence")];
  8319. }
  8320. if ((abs.$high < 0 || (abs.$high === 0 && abs.$low < 0))) {
  8321. return [new $Int64(0, 0), errors.New("strings.Reader.Seek: negative position")];
  8322. }
  8323. r.i = abs;
  8324. return [abs, $ifaceNil];
  8325. };
  8326. Reader.prototype.Seek = function(offset, whence) { return this.$val.Seek(offset, whence); };
  8327. Reader.ptr.prototype.WriteTo = function(w) {
  8328. var $ptr, _r, _tmp, _tmp$1, _tuple, err, m, n, r, s, w, x, x$1, x$2, x$3, $s, $r;
  8329. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; err = $f.err; m = $f.m; n = $f.n; r = $f.r; s = $f.s; w = $f.w; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; x$3 = $f.x$3; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  8330. n = new $Int64(0, 0);
  8331. err = $ifaceNil;
  8332. r = this;
  8333. r.prevRune = -1;
  8334. if ((x = r.i, x$1 = new $Int64(0, r.s.length), (x.$high > x$1.$high || (x.$high === x$1.$high && x.$low >= x$1.$low)))) {
  8335. _tmp = new $Int64(0, 0); _tmp$1 = $ifaceNil; n = _tmp; err = _tmp$1;
  8336. return [n, err];
  8337. }
  8338. s = r.s.substring($flatten64(r.i));
  8339. _r = io.WriteString(w, s); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  8340. _tuple = _r; m = _tuple[0]; err = _tuple[1];
  8341. if (m > s.length) {
  8342. $panic(new $String("strings.Reader.WriteTo: invalid WriteString count"));
  8343. }
  8344. r.i = (x$2 = r.i, x$3 = new $Int64(0, m), new $Int64(x$2.$high + x$3.$high, x$2.$low + x$3.$low));
  8345. n = new $Int64(0, m);
  8346. if (!((m === s.length)) && $interfaceIsEqual(err, $ifaceNil)) {
  8347. err = io.ErrShortWrite;
  8348. }
  8349. return [n, err];
  8350. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Reader.ptr.prototype.WriteTo }; } $f.$ptr = $ptr; $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f.err = err; $f.m = m; $f.n = n; $f.r = r; $f.s = s; $f.w = w; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.x$3 = x$3; $f.$s = $s; $f.$r = $r; return $f;
  8351. };
  8352. Reader.prototype.WriteTo = function(w) { return this.$val.WriteTo(w); };
  8353. NewReader = function(s) {
  8354. var $ptr, s;
  8355. return new Reader.ptr(s, new $Int64(0, 0), -1);
  8356. };
  8357. $pkg.NewReader = NewReader;
  8358. NewReplacer = function(oldnew) {
  8359. var $ptr, _i, _r, _ref, allNewBytes, i, i$1, i$2, i$3, n, n$1, o, o$1, oldnew, r, r$1, x, x$1, x$2;
  8360. if ((_r = oldnew.$length % 2, _r === _r ? _r : $throwRuntimeError("integer divide by zero")) === 1) {
  8361. $panic(new $String("strings.NewReplacer: odd argument count"));
  8362. }
  8363. if ((oldnew.$length === 2) && (0 >= oldnew.$length ? $throwRuntimeError("index out of range") : oldnew.$array[oldnew.$offset + 0]).length > 1) {
  8364. return new Replacer.ptr(makeSingleStringReplacer((0 >= oldnew.$length ? $throwRuntimeError("index out of range") : oldnew.$array[oldnew.$offset + 0]), (1 >= oldnew.$length ? $throwRuntimeError("index out of range") : oldnew.$array[oldnew.$offset + 1])));
  8365. }
  8366. allNewBytes = true;
  8367. i = 0;
  8368. while (true) {
  8369. if (!(i < oldnew.$length)) { break; }
  8370. if (!((((i < 0 || i >= oldnew.$length) ? $throwRuntimeError("index out of range") : oldnew.$array[oldnew.$offset + i]).length === 1))) {
  8371. return new Replacer.ptr(makeGenericReplacer(oldnew));
  8372. }
  8373. if (!(((x = i + 1 >> 0, ((x < 0 || x >= oldnew.$length) ? $throwRuntimeError("index out of range") : oldnew.$array[oldnew.$offset + x])).length === 1))) {
  8374. allNewBytes = false;
  8375. }
  8376. i = i + (2) >> 0;
  8377. }
  8378. if (allNewBytes) {
  8379. r = arrayType.zero();
  8380. _ref = r;
  8381. _i = 0;
  8382. while (true) {
  8383. if (!(_i < 256)) { break; }
  8384. i$1 = _i;
  8385. ((i$1 < 0 || i$1 >= r.length) ? $throwRuntimeError("index out of range") : r[i$1] = (i$1 << 24 >>> 24));
  8386. _i++;
  8387. }
  8388. i$2 = oldnew.$length - 2 >> 0;
  8389. while (true) {
  8390. if (!(i$2 >= 0)) { break; }
  8391. o = ((i$2 < 0 || i$2 >= oldnew.$length) ? $throwRuntimeError("index out of range") : oldnew.$array[oldnew.$offset + i$2]).charCodeAt(0);
  8392. n = (x$1 = i$2 + 1 >> 0, ((x$1 < 0 || x$1 >= oldnew.$length) ? $throwRuntimeError("index out of range") : oldnew.$array[oldnew.$offset + x$1])).charCodeAt(0);
  8393. ((o < 0 || o >= r.length) ? $throwRuntimeError("index out of range") : r[o] = n);
  8394. i$2 = i$2 - (2) >> 0;
  8395. }
  8396. return new Replacer.ptr(new ptrType(r));
  8397. }
  8398. r$1 = arrayType$1.zero();
  8399. i$3 = oldnew.$length - 2 >> 0;
  8400. while (true) {
  8401. if (!(i$3 >= 0)) { break; }
  8402. o$1 = ((i$3 < 0 || i$3 >= oldnew.$length) ? $throwRuntimeError("index out of range") : oldnew.$array[oldnew.$offset + i$3]).charCodeAt(0);
  8403. n$1 = (x$2 = i$3 + 1 >> 0, ((x$2 < 0 || x$2 >= oldnew.$length) ? $throwRuntimeError("index out of range") : oldnew.$array[oldnew.$offset + x$2]));
  8404. ((o$1 < 0 || o$1 >= r$1.length) ? $throwRuntimeError("index out of range") : r$1[o$1] = new sliceType($stringToBytes(n$1)));
  8405. i$3 = i$3 - (2) >> 0;
  8406. }
  8407. return new Replacer.ptr(new ptrType$1(r$1));
  8408. };
  8409. $pkg.NewReplacer = NewReplacer;
  8410. Replacer.ptr.prototype.Replace = function(s) {
  8411. var $ptr, _r, r, s, $s, $r;
  8412. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; r = $f.r; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  8413. r = this;
  8414. _r = r.r.Replace(s); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  8415. return _r;
  8416. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Replacer.ptr.prototype.Replace }; } $f.$ptr = $ptr; $f._r = _r; $f.r = r; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
  8417. };
  8418. Replacer.prototype.Replace = function(s) { return this.$val.Replace(s); };
  8419. Replacer.ptr.prototype.WriteString = function(w, s) {
  8420. var $ptr, _r, _tuple, err, n, r, s, w, $s, $r;
  8421. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tuple = $f._tuple; err = $f.err; n = $f.n; r = $f.r; s = $f.s; w = $f.w; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  8422. n = 0;
  8423. err = $ifaceNil;
  8424. r = this;
  8425. _r = r.r.WriteString(w, s); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  8426. _tuple = _r; n = _tuple[0]; err = _tuple[1];
  8427. return [n, err];
  8428. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Replacer.ptr.prototype.WriteString }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple = _tuple; $f.err = err; $f.n = n; $f.r = r; $f.s = s; $f.w = w; $f.$s = $s; $f.$r = $r; return $f;
  8429. };
  8430. Replacer.prototype.WriteString = function(w, s) { return this.$val.WriteString(w, s); };
  8431. trieNode.ptr.prototype.add = function(key, val, priority, r) {
  8432. var $ptr, key, keyNode, m, n, next, prefixNode, priority, r, t, val, x, x$1, x$10, x$11, x$12, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9;
  8433. t = this;
  8434. if (key === "") {
  8435. if (t.priority === 0) {
  8436. t.value = val;
  8437. t.priority = priority;
  8438. }
  8439. return;
  8440. }
  8441. if (!(t.prefix === "")) {
  8442. n = 0;
  8443. while (true) {
  8444. if (!(n < t.prefix.length && n < key.length)) { break; }
  8445. if (!((t.prefix.charCodeAt(n) === key.charCodeAt(n)))) {
  8446. break;
  8447. }
  8448. n = n + (1) >> 0;
  8449. }
  8450. if (n === t.prefix.length) {
  8451. t.next.add(key.substring(n), val, priority, r);
  8452. } else if (n === 0) {
  8453. prefixNode = ptrType$2.nil;
  8454. if (t.prefix.length === 1) {
  8455. prefixNode = t.next;
  8456. } else {
  8457. prefixNode = new trieNode.ptr("", 0, t.prefix.substring(1), t.next, sliceType$1.nil);
  8458. }
  8459. keyNode = new trieNode.ptr();
  8460. t.table = $makeSlice(sliceType$1, r.tableSize);
  8461. (x = t.table, x$1 = (x$2 = r.mapping, x$3 = t.prefix.charCodeAt(0), ((x$3 < 0 || x$3 >= x$2.length) ? $throwRuntimeError("index out of range") : x$2[x$3])), ((x$1 < 0 || x$1 >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + x$1] = prefixNode));
  8462. (x$4 = t.table, x$5 = (x$6 = r.mapping, x$7 = key.charCodeAt(0), ((x$7 < 0 || x$7 >= x$6.length) ? $throwRuntimeError("index out of range") : x$6[x$7])), ((x$5 < 0 || x$5 >= x$4.$length) ? $throwRuntimeError("index out of range") : x$4.$array[x$4.$offset + x$5] = keyNode));
  8463. t.prefix = "";
  8464. t.next = ptrType$2.nil;
  8465. keyNode.add(key.substring(1), val, priority, r);
  8466. } else {
  8467. next = new trieNode.ptr("", 0, t.prefix.substring(n), t.next, sliceType$1.nil);
  8468. t.prefix = t.prefix.substring(0, n);
  8469. t.next = next;
  8470. next.add(key.substring(n), val, priority, r);
  8471. }
  8472. } else if (!(t.table === sliceType$1.nil)) {
  8473. m = (x$8 = r.mapping, x$9 = key.charCodeAt(0), ((x$9 < 0 || x$9 >= x$8.length) ? $throwRuntimeError("index out of range") : x$8[x$9]));
  8474. if ((x$10 = t.table, ((m < 0 || m >= x$10.$length) ? $throwRuntimeError("index out of range") : x$10.$array[x$10.$offset + m])) === ptrType$2.nil) {
  8475. (x$11 = t.table, ((m < 0 || m >= x$11.$length) ? $throwRuntimeError("index out of range") : x$11.$array[x$11.$offset + m] = new trieNode.ptr()));
  8476. }
  8477. (x$12 = t.table, ((m < 0 || m >= x$12.$length) ? $throwRuntimeError("index out of range") : x$12.$array[x$12.$offset + m])).add(key.substring(1), val, priority, r);
  8478. } else {
  8479. t.prefix = key;
  8480. t.next = new trieNode.ptr();
  8481. t.next.add("", val, priority, r);
  8482. }
  8483. };
  8484. trieNode.prototype.add = function(key, val, priority, r) { return this.$val.add(key, val, priority, r); };
  8485. genericReplacer.ptr.prototype.lookup = function(s, ignoreRoot) {
  8486. var $ptr, bestPriority, found, ignoreRoot, index, keylen, n, node, r, s, val, x, x$1, x$2;
  8487. val = "";
  8488. keylen = 0;
  8489. found = false;
  8490. r = this;
  8491. bestPriority = 0;
  8492. node = r.root;
  8493. n = 0;
  8494. while (true) {
  8495. if (!(!(node === ptrType$2.nil))) { break; }
  8496. if (node.priority > bestPriority && !(ignoreRoot && node === r.root)) {
  8497. bestPriority = node.priority;
  8498. val = node.value;
  8499. keylen = n;
  8500. found = true;
  8501. }
  8502. if (s === "") {
  8503. break;
  8504. }
  8505. if (!(node.table === sliceType$1.nil)) {
  8506. index = (x = r.mapping, x$1 = s.charCodeAt(0), ((x$1 < 0 || x$1 >= x.length) ? $throwRuntimeError("index out of range") : x[x$1]));
  8507. if ((index >> 0) === r.tableSize) {
  8508. break;
  8509. }
  8510. node = (x$2 = node.table, ((index < 0 || index >= x$2.$length) ? $throwRuntimeError("index out of range") : x$2.$array[x$2.$offset + index]));
  8511. s = s.substring(1);
  8512. n = n + (1) >> 0;
  8513. } else if (!(node.prefix === "") && HasPrefix(s, node.prefix)) {
  8514. n = n + (node.prefix.length) >> 0;
  8515. s = s.substring(node.prefix.length);
  8516. node = node.next;
  8517. } else {
  8518. break;
  8519. }
  8520. }
  8521. return [val, keylen, found];
  8522. };
  8523. genericReplacer.prototype.lookup = function(s, ignoreRoot) { return this.$val.lookup(s, ignoreRoot); };
  8524. makeGenericReplacer = function(oldnew) {
  8525. var $ptr, _i, _i$1, _ref, _ref$1, b, b$1, i, i$1, i$2, index, j, key, oldnew, r, x, x$1, x$2, x$3, x$4;
  8526. r = new genericReplacer.ptr();
  8527. i = 0;
  8528. while (true) {
  8529. if (!(i < oldnew.$length)) { break; }
  8530. key = ((i < 0 || i >= oldnew.$length) ? $throwRuntimeError("index out of range") : oldnew.$array[oldnew.$offset + i]);
  8531. j = 0;
  8532. while (true) {
  8533. if (!(j < key.length)) { break; }
  8534. (x = r.mapping, x$1 = key.charCodeAt(j), ((x$1 < 0 || x$1 >= x.length) ? $throwRuntimeError("index out of range") : x[x$1] = 1));
  8535. j = j + (1) >> 0;
  8536. }
  8537. i = i + (2) >> 0;
  8538. }
  8539. _ref = r.mapping;
  8540. _i = 0;
  8541. while (true) {
  8542. if (!(_i < 256)) { break; }
  8543. b = ((_i < 0 || _i >= _ref.length) ? $throwRuntimeError("index out of range") : _ref[_i]);
  8544. r.tableSize = r.tableSize + ((b >> 0)) >> 0;
  8545. _i++;
  8546. }
  8547. index = 0;
  8548. _ref$1 = r.mapping;
  8549. _i$1 = 0;
  8550. while (true) {
  8551. if (!(_i$1 < 256)) { break; }
  8552. i$1 = _i$1;
  8553. b$1 = ((_i$1 < 0 || _i$1 >= _ref$1.length) ? $throwRuntimeError("index out of range") : _ref$1[_i$1]);
  8554. if (b$1 === 0) {
  8555. (x$2 = r.mapping, ((i$1 < 0 || i$1 >= x$2.length) ? $throwRuntimeError("index out of range") : x$2[i$1] = (r.tableSize << 24 >>> 24)));
  8556. } else {
  8557. (x$3 = r.mapping, ((i$1 < 0 || i$1 >= x$3.length) ? $throwRuntimeError("index out of range") : x$3[i$1] = index));
  8558. index = index + (1) << 24 >>> 24;
  8559. }
  8560. _i$1++;
  8561. }
  8562. r.root.table = $makeSlice(sliceType$1, r.tableSize);
  8563. i$2 = 0;
  8564. while (true) {
  8565. if (!(i$2 < oldnew.$length)) { break; }
  8566. r.root.add(((i$2 < 0 || i$2 >= oldnew.$length) ? $throwRuntimeError("index out of range") : oldnew.$array[oldnew.$offset + i$2]), (x$4 = i$2 + 1 >> 0, ((x$4 < 0 || x$4 >= oldnew.$length) ? $throwRuntimeError("index out of range") : oldnew.$array[oldnew.$offset + x$4])), oldnew.$length - i$2 >> 0, r);
  8567. i$2 = i$2 + (2) >> 0;
  8568. }
  8569. return r;
  8570. };
  8571. $ptrType(appendSliceWriter).prototype.Write = function(p) {
  8572. var $ptr, p, w;
  8573. w = this;
  8574. w.$set($appendSlice(w.$get(), p));
  8575. return [p.$length, $ifaceNil];
  8576. };
  8577. $ptrType(appendSliceWriter).prototype.WriteString = function(s) {
  8578. var $ptr, s, w;
  8579. w = this;
  8580. w.$set($appendSlice(w.$get(), new appendSliceWriter($stringToBytes(s))));
  8581. return [s.length, $ifaceNil];
  8582. };
  8583. stringWriter.ptr.prototype.WriteString = function(s) {
  8584. var $ptr, _r, s, w, $s, $r;
  8585. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; s = $f.s; w = $f.w; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  8586. w = $clone(this, stringWriter);
  8587. _r = w.w.Write(new sliceType($stringToBytes(s))); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  8588. return _r;
  8589. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: stringWriter.ptr.prototype.WriteString }; } $f.$ptr = $ptr; $f._r = _r; $f.s = s; $f.w = w; $f.$s = $s; $f.$r = $r; return $f;
  8590. };
  8591. stringWriter.prototype.WriteString = function(s) { return this.$val.WriteString(s); };
  8592. getStringWriter = function(w) {
  8593. var $ptr, _tuple, ok, sw, w, x;
  8594. _tuple = $assertType(w, stringWriterIface, true); sw = _tuple[0]; ok = _tuple[1];
  8595. if (!ok) {
  8596. sw = (x = new stringWriter.ptr(w), new x.constructor.elem(x));
  8597. }
  8598. return sw;
  8599. };
  8600. genericReplacer.ptr.prototype.Replace = function(s) {
  8601. var $ptr, _r, buf, r, s, $s, $r;
  8602. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; buf = $f.buf; r = $f.r; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  8603. buf = [buf];
  8604. r = this;
  8605. buf[0] = $makeSlice(appendSliceWriter, 0, s.length);
  8606. _r = r.WriteString((buf.$ptr || (buf.$ptr = new ptrType$3(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, buf))), s); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  8607. _r;
  8608. return $bytesToString(buf[0]);
  8609. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: genericReplacer.ptr.prototype.Replace }; } $f.$ptr = $ptr; $f._r = _r; $f.buf = buf; $f.r = r; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
  8610. };
  8611. genericReplacer.prototype.Replace = function(s) { return this.$val.Replace(s); };
  8612. genericReplacer.ptr.prototype.WriteString = function(w, s) {
  8613. var $ptr, _r, _r$1, _r$2, _tmp, _tmp$1, _tuple, _tuple$1, _tuple$2, _tuple$3, err, i, index, keylen, last, match, n, prevMatchEmpty, r, s, sw, val, w, wn, x, x$1, x$2, $s, $r;
  8614. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; err = $f.err; i = $f.i; index = $f.index; keylen = $f.keylen; last = $f.last; match = $f.match; n = $f.n; prevMatchEmpty = $f.prevMatchEmpty; r = $f.r; s = $f.s; sw = $f.sw; val = $f.val; w = $f.w; wn = $f.wn; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  8615. n = 0;
  8616. err = $ifaceNil;
  8617. r = this;
  8618. sw = getStringWriter(w);
  8619. _tmp = 0; _tmp$1 = 0; last = _tmp; wn = _tmp$1;
  8620. prevMatchEmpty = false;
  8621. i = 0;
  8622. /* while (true) { */ case 1:
  8623. /* if (!(i <= s.length)) { break; } */ if(!(i <= s.length)) { $s = 2; continue; }
  8624. /* */ if (!((i === s.length)) && (r.root.priority === 0)) { $s = 3; continue; }
  8625. /* */ $s = 4; continue;
  8626. /* if (!((i === s.length)) && (r.root.priority === 0)) { */ case 3:
  8627. index = ((x = r.mapping, x$1 = s.charCodeAt(i), ((x$1 < 0 || x$1 >= x.length) ? $throwRuntimeError("index out of range") : x[x$1])) >> 0);
  8628. if ((index === r.tableSize) || (x$2 = r.root.table, ((index < 0 || index >= x$2.$length) ? $throwRuntimeError("index out of range") : x$2.$array[x$2.$offset + index])) === ptrType$2.nil) {
  8629. i = i + (1) >> 0;
  8630. /* continue; */ $s = 1; continue;
  8631. }
  8632. /* } */ case 4:
  8633. _tuple = r.lookup(s.substring(i), prevMatchEmpty); val = _tuple[0]; keylen = _tuple[1]; match = _tuple[2];
  8634. prevMatchEmpty = match && (keylen === 0);
  8635. /* */ if (match) { $s = 5; continue; }
  8636. /* */ $s = 6; continue;
  8637. /* if (match) { */ case 5:
  8638. _r = sw.WriteString(s.substring(last, i)); /* */ $s = 7; case 7: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  8639. _tuple$1 = _r; wn = _tuple$1[0]; err = _tuple$1[1];
  8640. n = n + (wn) >> 0;
  8641. if (!($interfaceIsEqual(err, $ifaceNil))) {
  8642. return [n, err];
  8643. }
  8644. _r$1 = sw.WriteString(val); /* */ $s = 8; case 8: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  8645. _tuple$2 = _r$1; wn = _tuple$2[0]; err = _tuple$2[1];
  8646. n = n + (wn) >> 0;
  8647. if (!($interfaceIsEqual(err, $ifaceNil))) {
  8648. return [n, err];
  8649. }
  8650. i = i + (keylen) >> 0;
  8651. last = i;
  8652. /* continue; */ $s = 1; continue;
  8653. /* } */ case 6:
  8654. i = i + (1) >> 0;
  8655. /* } */ $s = 1; continue; case 2:
  8656. /* */ if (!((last === s.length))) { $s = 9; continue; }
  8657. /* */ $s = 10; continue;
  8658. /* if (!((last === s.length))) { */ case 9:
  8659. _r$2 = sw.WriteString(s.substring(last)); /* */ $s = 11; case 11: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  8660. _tuple$3 = _r$2; wn = _tuple$3[0]; err = _tuple$3[1];
  8661. n = n + (wn) >> 0;
  8662. /* } */ case 10:
  8663. return [n, err];
  8664. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: genericReplacer.ptr.prototype.WriteString }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f.err = err; $f.i = i; $f.index = index; $f.keylen = keylen; $f.last = last; $f.match = match; $f.n = n; $f.prevMatchEmpty = prevMatchEmpty; $f.r = r; $f.s = s; $f.sw = sw; $f.val = val; $f.w = w; $f.wn = wn; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.$s = $s; $f.$r = $r; return $f;
  8665. };
  8666. genericReplacer.prototype.WriteString = function(w, s) { return this.$val.WriteString(w, s); };
  8667. makeSingleStringReplacer = function(pattern, value) {
  8668. var $ptr, pattern, value;
  8669. return new singleStringReplacer.ptr(makeStringFinder(pattern), value);
  8670. };
  8671. singleStringReplacer.ptr.prototype.Replace = function(s) {
  8672. var $ptr, _tmp, _tmp$1, buf, i, match, matched, r, s;
  8673. r = this;
  8674. buf = sliceType.nil;
  8675. _tmp = 0; _tmp$1 = false; i = _tmp; matched = _tmp$1;
  8676. while (true) {
  8677. match = r.finder.next(s.substring(i));
  8678. if (match === -1) {
  8679. break;
  8680. }
  8681. matched = true;
  8682. buf = $appendSlice(buf, new sliceType($stringToBytes(s.substring(i, (i + match >> 0)))));
  8683. buf = $appendSlice(buf, new sliceType($stringToBytes(r.value)));
  8684. i = i + ((match + r.finder.pattern.length >> 0)) >> 0;
  8685. }
  8686. if (!matched) {
  8687. return s;
  8688. }
  8689. buf = $appendSlice(buf, new sliceType($stringToBytes(s.substring(i))));
  8690. return $bytesToString(buf);
  8691. };
  8692. singleStringReplacer.prototype.Replace = function(s) { return this.$val.Replace(s); };
  8693. singleStringReplacer.ptr.prototype.WriteString = function(w, s) {
  8694. var $ptr, _r, _r$1, _r$2, _tmp, _tmp$1, _tuple, _tuple$1, _tuple$2, err, i, match, n, r, s, sw, w, wn, $s, $r;
  8695. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; err = $f.err; i = $f.i; match = $f.match; n = $f.n; r = $f.r; s = $f.s; sw = $f.sw; w = $f.w; wn = $f.wn; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  8696. n = 0;
  8697. err = $ifaceNil;
  8698. r = this;
  8699. sw = getStringWriter(w);
  8700. _tmp = 0; _tmp$1 = 0; i = _tmp; wn = _tmp$1;
  8701. /* while (true) { */ case 1:
  8702. match = r.finder.next(s.substring(i));
  8703. if (match === -1) {
  8704. /* break; */ $s = 2; continue;
  8705. }
  8706. _r = sw.WriteString(s.substring(i, (i + match >> 0))); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  8707. _tuple = _r; wn = _tuple[0]; err = _tuple[1];
  8708. n = n + (wn) >> 0;
  8709. if (!($interfaceIsEqual(err, $ifaceNil))) {
  8710. return [n, err];
  8711. }
  8712. _r$1 = sw.WriteString(r.value); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  8713. _tuple$1 = _r$1; wn = _tuple$1[0]; err = _tuple$1[1];
  8714. n = n + (wn) >> 0;
  8715. if (!($interfaceIsEqual(err, $ifaceNil))) {
  8716. return [n, err];
  8717. }
  8718. i = i + ((match + r.finder.pattern.length >> 0)) >> 0;
  8719. /* } */ $s = 1; continue; case 2:
  8720. _r$2 = sw.WriteString(s.substring(i)); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  8721. _tuple$2 = _r$2; wn = _tuple$2[0]; err = _tuple$2[1];
  8722. n = n + (wn) >> 0;
  8723. return [n, err];
  8724. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: singleStringReplacer.ptr.prototype.WriteString }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f.err = err; $f.i = i; $f.match = match; $f.n = n; $f.r = r; $f.s = s; $f.sw = sw; $f.w = w; $f.wn = wn; $f.$s = $s; $f.$r = $r; return $f;
  8725. };
  8726. singleStringReplacer.prototype.WriteString = function(w, s) { return this.$val.WriteString(w, s); };
  8727. byteReplacer.prototype.Replace = function(s) {
  8728. var $ptr, b, buf, i, r, s;
  8729. r = this.$val;
  8730. buf = sliceType.nil;
  8731. i = 0;
  8732. while (true) {
  8733. if (!(i < s.length)) { break; }
  8734. b = s.charCodeAt(i);
  8735. if (!(((r.nilCheck, ((b < 0 || b >= r.length) ? $throwRuntimeError("index out of range") : r[b])) === b))) {
  8736. if (buf === sliceType.nil) {
  8737. buf = new sliceType($stringToBytes(s));
  8738. }
  8739. ((i < 0 || i >= buf.$length) ? $throwRuntimeError("index out of range") : buf.$array[buf.$offset + i] = (r.nilCheck, ((b < 0 || b >= r.length) ? $throwRuntimeError("index out of range") : r[b])));
  8740. }
  8741. i = i + (1) >> 0;
  8742. }
  8743. if (buf === sliceType.nil) {
  8744. return s;
  8745. }
  8746. return $bytesToString(buf);
  8747. };
  8748. $ptrType(byteReplacer).prototype.Replace = function(s) { return (new byteReplacer(this.$get())).Replace(s); };
  8749. byteReplacer.prototype.WriteString = function(w, s) {
  8750. var $ptr, _i, _r, _ref, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, b, buf, bufsize, err, err$1, i, n, ncopy, r, s, w, wn, $s, $r;
  8751. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _i = $f._i; _r = $f._r; _ref = $f._ref; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tuple = $f._tuple; b = $f.b; buf = $f.buf; bufsize = $f.bufsize; err = $f.err; err$1 = $f.err$1; i = $f.i; n = $f.n; ncopy = $f.ncopy; r = $f.r; s = $f.s; w = $f.w; wn = $f.wn; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  8752. n = 0;
  8753. err = $ifaceNil;
  8754. r = this.$val;
  8755. bufsize = 32768;
  8756. if (s.length < bufsize) {
  8757. bufsize = s.length;
  8758. }
  8759. buf = $makeSlice(sliceType, bufsize);
  8760. /* while (true) { */ case 1:
  8761. /* if (!(s.length > 0)) { break; } */ if(!(s.length > 0)) { $s = 2; continue; }
  8762. ncopy = $copyString(buf, s);
  8763. s = s.substring(ncopy);
  8764. _ref = $subslice(buf, 0, ncopy);
  8765. _i = 0;
  8766. while (true) {
  8767. if (!(_i < _ref.$length)) { break; }
  8768. i = _i;
  8769. b = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]);
  8770. ((i < 0 || i >= buf.$length) ? $throwRuntimeError("index out of range") : buf.$array[buf.$offset + i] = (r.nilCheck, ((b < 0 || b >= r.length) ? $throwRuntimeError("index out of range") : r[b])));
  8771. _i++;
  8772. }
  8773. _r = w.Write($subslice(buf, 0, ncopy)); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  8774. _tuple = _r; wn = _tuple[0]; err$1 = _tuple[1];
  8775. n = n + (wn) >> 0;
  8776. if (!($interfaceIsEqual(err$1, $ifaceNil))) {
  8777. _tmp = n; _tmp$1 = err$1; n = _tmp; err = _tmp$1;
  8778. return [n, err];
  8779. }
  8780. /* } */ $s = 1; continue; case 2:
  8781. _tmp$2 = n; _tmp$3 = $ifaceNil; n = _tmp$2; err = _tmp$3;
  8782. return [n, err];
  8783. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: byteReplacer.prototype.WriteString }; } $f.$ptr = $ptr; $f._i = _i; $f._r = _r; $f._ref = _ref; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tuple = _tuple; $f.b = b; $f.buf = buf; $f.bufsize = bufsize; $f.err = err; $f.err$1 = err$1; $f.i = i; $f.n = n; $f.ncopy = ncopy; $f.r = r; $f.s = s; $f.w = w; $f.wn = wn; $f.$s = $s; $f.$r = $r; return $f;
  8784. };
  8785. $ptrType(byteReplacer).prototype.WriteString = function(w, s) { return (new byteReplacer(this.$get())).WriteString(w, s); };
  8786. byteStringReplacer.prototype.Replace = function(s) {
  8787. var $ptr, anyChanges, b, b$1, bi, buf, i, i$1, n, newSize, r, s;
  8788. r = this.$val;
  8789. newSize = s.length;
  8790. anyChanges = false;
  8791. i = 0;
  8792. while (true) {
  8793. if (!(i < s.length)) { break; }
  8794. b = s.charCodeAt(i);
  8795. if (!((r.nilCheck, ((b < 0 || b >= r.length) ? $throwRuntimeError("index out of range") : r[b])) === sliceType.nil)) {
  8796. anyChanges = true;
  8797. newSize = newSize + (((r.nilCheck, ((b < 0 || b >= r.length) ? $throwRuntimeError("index out of range") : r[b])).$length - 1 >> 0)) >> 0;
  8798. }
  8799. i = i + (1) >> 0;
  8800. }
  8801. if (!anyChanges) {
  8802. return s;
  8803. }
  8804. buf = $makeSlice(sliceType, newSize);
  8805. bi = buf;
  8806. i$1 = 0;
  8807. while (true) {
  8808. if (!(i$1 < s.length)) { break; }
  8809. b$1 = s.charCodeAt(i$1);
  8810. if (!((r.nilCheck, ((b$1 < 0 || b$1 >= r.length) ? $throwRuntimeError("index out of range") : r[b$1])) === sliceType.nil)) {
  8811. n = $copySlice(bi, (r.nilCheck, ((b$1 < 0 || b$1 >= r.length) ? $throwRuntimeError("index out of range") : r[b$1])));
  8812. bi = $subslice(bi, n);
  8813. } else {
  8814. (0 >= bi.$length ? $throwRuntimeError("index out of range") : bi.$array[bi.$offset + 0] = b$1);
  8815. bi = $subslice(bi, 1);
  8816. }
  8817. i$1 = i$1 + (1) >> 0;
  8818. }
  8819. return $bytesToString(buf);
  8820. };
  8821. $ptrType(byteStringReplacer).prototype.Replace = function(s) { return (new byteStringReplacer(this.$get())).Replace(s); };
  8822. byteStringReplacer.prototype.WriteString = function(w, s) {
  8823. var $ptr, _r, _r$1, _r$2, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, _tuple$1, _tuple$2, b, err, err$1, err$2, i, last, n, nw, nw$1, nw$2, r, s, sw, w, $s, $r;
  8824. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; b = $f.b; err = $f.err; err$1 = $f.err$1; err$2 = $f.err$2; i = $f.i; last = $f.last; n = $f.n; nw = $f.nw; nw$1 = $f.nw$1; nw$2 = $f.nw$2; r = $f.r; s = $f.s; sw = $f.sw; w = $f.w; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  8825. n = 0;
  8826. err = $ifaceNil;
  8827. r = this.$val;
  8828. sw = getStringWriter(w);
  8829. last = 0;
  8830. i = 0;
  8831. /* while (true) { */ case 1:
  8832. /* if (!(i < s.length)) { break; } */ if(!(i < s.length)) { $s = 2; continue; }
  8833. b = s.charCodeAt(i);
  8834. /* */ if ((r.nilCheck, ((b < 0 || b >= r.length) ? $throwRuntimeError("index out of range") : r[b])) === sliceType.nil) { $s = 3; continue; }
  8835. /* */ $s = 4; continue;
  8836. /* if ((r.nilCheck, ((b < 0 || b >= r.length) ? $throwRuntimeError("index out of range") : r[b])) === sliceType.nil) { */ case 3:
  8837. i = i + (1) >> 0;
  8838. /* continue; */ $s = 1; continue;
  8839. /* } */ case 4:
  8840. /* */ if (!((last === i))) { $s = 5; continue; }
  8841. /* */ $s = 6; continue;
  8842. /* if (!((last === i))) { */ case 5:
  8843. _r = sw.WriteString(s.substring(last, i)); /* */ $s = 7; case 7: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  8844. _tuple = _r; nw = _tuple[0]; err$1 = _tuple[1];
  8845. n = n + (nw) >> 0;
  8846. if (!($interfaceIsEqual(err$1, $ifaceNil))) {
  8847. _tmp = n; _tmp$1 = err$1; n = _tmp; err = _tmp$1;
  8848. return [n, err];
  8849. }
  8850. /* } */ case 6:
  8851. last = i + 1 >> 0;
  8852. _r$1 = w.Write((r.nilCheck, ((b < 0 || b >= r.length) ? $throwRuntimeError("index out of range") : r[b]))); /* */ $s = 8; case 8: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  8853. _tuple$1 = _r$1; nw$1 = _tuple$1[0]; err$2 = _tuple$1[1];
  8854. n = n + (nw$1) >> 0;
  8855. if (!($interfaceIsEqual(err$2, $ifaceNil))) {
  8856. _tmp$2 = n; _tmp$3 = err$2; n = _tmp$2; err = _tmp$3;
  8857. return [n, err];
  8858. }
  8859. i = i + (1) >> 0;
  8860. /* } */ $s = 1; continue; case 2:
  8861. /* */ if (!((last === s.length))) { $s = 9; continue; }
  8862. /* */ $s = 10; continue;
  8863. /* if (!((last === s.length))) { */ case 9:
  8864. nw$2 = 0;
  8865. _r$2 = sw.WriteString(s.substring(last)); /* */ $s = 11; case 11: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  8866. _tuple$2 = _r$2; nw$2 = _tuple$2[0]; err = _tuple$2[1];
  8867. n = n + (nw$2) >> 0;
  8868. /* } */ case 10:
  8869. return [n, err];
  8870. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: byteStringReplacer.prototype.WriteString }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f.b = b; $f.err = err; $f.err$1 = err$1; $f.err$2 = err$2; $f.i = i; $f.last = last; $f.n = n; $f.nw = nw; $f.nw$1 = nw$1; $f.nw$2 = nw$2; $f.r = r; $f.s = s; $f.sw = sw; $f.w = w; $f.$s = $s; $f.$r = $r; return $f;
  8871. };
  8872. $ptrType(byteStringReplacer).prototype.WriteString = function(w, s) { return (new byteStringReplacer(this.$get())).WriteString(w, s); };
  8873. makeStringFinder = function(pattern) {
  8874. var $ptr, _i, _ref, f, i, i$1, i$2, i$3, last, lastPrefix, lenSuffix, pattern, x, x$1, x$2, x$3, x$4, x$5;
  8875. f = new stringFinder.ptr(pattern, arrayType$2.zero(), $makeSlice(sliceType$2, pattern.length));
  8876. last = pattern.length - 1 >> 0;
  8877. _ref = f.badCharSkip;
  8878. _i = 0;
  8879. while (true) {
  8880. if (!(_i < 256)) { break; }
  8881. i = _i;
  8882. (x = f.badCharSkip, ((i < 0 || i >= x.length) ? $throwRuntimeError("index out of range") : x[i] = pattern.length));
  8883. _i++;
  8884. }
  8885. i$1 = 0;
  8886. while (true) {
  8887. if (!(i$1 < last)) { break; }
  8888. (x$1 = f.badCharSkip, x$2 = pattern.charCodeAt(i$1), ((x$2 < 0 || x$2 >= x$1.length) ? $throwRuntimeError("index out of range") : x$1[x$2] = last - i$1 >> 0));
  8889. i$1 = i$1 + (1) >> 0;
  8890. }
  8891. lastPrefix = last;
  8892. i$2 = last;
  8893. while (true) {
  8894. if (!(i$2 >= 0)) { break; }
  8895. if (HasPrefix(pattern, pattern.substring((i$2 + 1 >> 0)))) {
  8896. lastPrefix = i$2 + 1 >> 0;
  8897. }
  8898. (x$3 = f.goodSuffixSkip, ((i$2 < 0 || i$2 >= x$3.$length) ? $throwRuntimeError("index out of range") : x$3.$array[x$3.$offset + i$2] = (lastPrefix + last >> 0) - i$2 >> 0));
  8899. i$2 = i$2 - (1) >> 0;
  8900. }
  8901. i$3 = 0;
  8902. while (true) {
  8903. if (!(i$3 < last)) { break; }
  8904. lenSuffix = longestCommonSuffix(pattern, pattern.substring(1, (i$3 + 1 >> 0)));
  8905. if (!((pattern.charCodeAt((i$3 - lenSuffix >> 0)) === pattern.charCodeAt((last - lenSuffix >> 0))))) {
  8906. (x$4 = f.goodSuffixSkip, x$5 = last - lenSuffix >> 0, ((x$5 < 0 || x$5 >= x$4.$length) ? $throwRuntimeError("index out of range") : x$4.$array[x$4.$offset + x$5] = (lenSuffix + last >> 0) - i$3 >> 0));
  8907. }
  8908. i$3 = i$3 + (1) >> 0;
  8909. }
  8910. return f;
  8911. };
  8912. longestCommonSuffix = function(a, b) {
  8913. var $ptr, a, b, i;
  8914. i = 0;
  8915. while (true) {
  8916. if (!(i < a.length && i < b.length)) { break; }
  8917. if (!((a.charCodeAt(((a.length - 1 >> 0) - i >> 0)) === b.charCodeAt(((b.length - 1 >> 0) - i >> 0))))) {
  8918. break;
  8919. }
  8920. i = i + (1) >> 0;
  8921. }
  8922. return i;
  8923. };
  8924. stringFinder.ptr.prototype.next = function(text) {
  8925. var $ptr, f, i, j, text, x, x$1, x$2;
  8926. f = this;
  8927. i = f.pattern.length - 1 >> 0;
  8928. while (true) {
  8929. if (!(i < text.length)) { break; }
  8930. j = f.pattern.length - 1 >> 0;
  8931. while (true) {
  8932. if (!(j >= 0 && (text.charCodeAt(i) === f.pattern.charCodeAt(j)))) { break; }
  8933. i = i - (1) >> 0;
  8934. j = j - (1) >> 0;
  8935. }
  8936. if (j < 0) {
  8937. return i + 1 >> 0;
  8938. }
  8939. i = i + (max((x = f.badCharSkip, x$1 = text.charCodeAt(i), ((x$1 < 0 || x$1 >= x.length) ? $throwRuntimeError("index out of range") : x[x$1])), (x$2 = f.goodSuffixSkip, ((j < 0 || j >= x$2.$length) ? $throwRuntimeError("index out of range") : x$2.$array[x$2.$offset + j])))) >> 0;
  8940. }
  8941. return -1;
  8942. };
  8943. stringFinder.prototype.next = function(text) { return this.$val.next(text); };
  8944. max = function(a, b) {
  8945. var $ptr, a, b;
  8946. if (a > b) {
  8947. return a;
  8948. }
  8949. return b;
  8950. };
  8951. explode = function(s, n) {
  8952. var $ptr, _tmp, _tmp$1, _tuple, a, ch, cur, i, l, n, s, size;
  8953. if (n === 0) {
  8954. return sliceType$3.nil;
  8955. }
  8956. l = utf8.RuneCountInString(s);
  8957. if (n <= 0 || n > l) {
  8958. n = l;
  8959. }
  8960. a = $makeSlice(sliceType$3, n);
  8961. size = 0;
  8962. ch = 0;
  8963. _tmp = 0; _tmp$1 = 0; i = _tmp; cur = _tmp$1;
  8964. while (true) {
  8965. if (!((i + 1 >> 0) < n)) { break; }
  8966. _tuple = utf8.DecodeRuneInString(s.substring(cur)); ch = _tuple[0]; size = _tuple[1];
  8967. if (ch === 65533) {
  8968. ((i < 0 || i >= a.$length) ? $throwRuntimeError("index out of range") : a.$array[a.$offset + i] = "\xEF\xBF\xBD");
  8969. } else {
  8970. ((i < 0 || i >= a.$length) ? $throwRuntimeError("index out of range") : a.$array[a.$offset + i] = s.substring(cur, (cur + size >> 0)));
  8971. }
  8972. cur = cur + (size) >> 0;
  8973. i = i + (1) >> 0;
  8974. }
  8975. if (cur < s.length) {
  8976. ((i < 0 || i >= a.$length) ? $throwRuntimeError("index out of range") : a.$array[a.$offset + i] = s.substring(cur));
  8977. }
  8978. return a;
  8979. };
  8980. hashStr = function(sep) {
  8981. var $ptr, _tmp, _tmp$1, hash, i, i$1, pow, sep, sq, x, x$1;
  8982. hash = 0;
  8983. i = 0;
  8984. while (true) {
  8985. if (!(i < sep.length)) { break; }
  8986. hash = ((((hash >>> 16 << 16) * 16777619 >>> 0) + (hash << 16 >>> 16) * 16777619) >>> 0) + (sep.charCodeAt(i) >>> 0) >>> 0;
  8987. i = i + (1) >> 0;
  8988. }
  8989. _tmp = 1; _tmp$1 = 16777619; pow = _tmp; sq = _tmp$1;
  8990. i$1 = sep.length;
  8991. while (true) {
  8992. if (!(i$1 > 0)) { break; }
  8993. if (!(((i$1 & 1) === 0))) {
  8994. pow = (x = sq, (((pow >>> 16 << 16) * x >>> 0) + (pow << 16 >>> 16) * x) >>> 0);
  8995. }
  8996. sq = (x$1 = sq, (((sq >>> 16 << 16) * x$1 >>> 0) + (sq << 16 >>> 16) * x$1) >>> 0);
  8997. i$1 = (i$1 >> $min((1), 31)) >> 0;
  8998. }
  8999. return [hash, pow];
  9000. };
  9001. hashStrRev = function(sep) {
  9002. var $ptr, _tmp, _tmp$1, hash, i, i$1, pow, sep, sq, x, x$1;
  9003. hash = 0;
  9004. i = sep.length - 1 >> 0;
  9005. while (true) {
  9006. if (!(i >= 0)) { break; }
  9007. hash = ((((hash >>> 16 << 16) * 16777619 >>> 0) + (hash << 16 >>> 16) * 16777619) >>> 0) + (sep.charCodeAt(i) >>> 0) >>> 0;
  9008. i = i - (1) >> 0;
  9009. }
  9010. _tmp = 1; _tmp$1 = 16777619; pow = _tmp; sq = _tmp$1;
  9011. i$1 = sep.length;
  9012. while (true) {
  9013. if (!(i$1 > 0)) { break; }
  9014. if (!(((i$1 & 1) === 0))) {
  9015. pow = (x = sq, (((pow >>> 16 << 16) * x >>> 0) + (pow << 16 >>> 16) * x) >>> 0);
  9016. }
  9017. sq = (x$1 = sq, (((sq >>> 16 << 16) * x$1 >>> 0) + (sq << 16 >>> 16) * x$1) >>> 0);
  9018. i$1 = (i$1 >> $min((1), 31)) >> 0;
  9019. }
  9020. return [hash, pow];
  9021. };
  9022. Count = function(s, sep) {
  9023. var $ptr, _tuple, c, h, hashsep, i, i$1, i$2, lastmatch, n, pow, s, sep, x, x$1;
  9024. n = 0;
  9025. if (sep.length === 0) {
  9026. return utf8.RuneCountInString(s) + 1 >> 0;
  9027. } else if (sep.length === 1) {
  9028. c = sep.charCodeAt(0);
  9029. i = 0;
  9030. while (true) {
  9031. if (!(i < s.length)) { break; }
  9032. if (s.charCodeAt(i) === c) {
  9033. n = n + (1) >> 0;
  9034. }
  9035. i = i + (1) >> 0;
  9036. }
  9037. return n;
  9038. } else if (sep.length > s.length) {
  9039. return 0;
  9040. } else if (sep.length === s.length) {
  9041. if (sep === s) {
  9042. return 1;
  9043. }
  9044. return 0;
  9045. }
  9046. _tuple = hashStr(sep); hashsep = _tuple[0]; pow = _tuple[1];
  9047. h = 0;
  9048. i$1 = 0;
  9049. while (true) {
  9050. if (!(i$1 < sep.length)) { break; }
  9051. h = ((((h >>> 16 << 16) * 16777619 >>> 0) + (h << 16 >>> 16) * 16777619) >>> 0) + (s.charCodeAt(i$1) >>> 0) >>> 0;
  9052. i$1 = i$1 + (1) >> 0;
  9053. }
  9054. lastmatch = 0;
  9055. if ((h === hashsep) && s.substring(0, sep.length) === sep) {
  9056. n = n + (1) >> 0;
  9057. lastmatch = sep.length;
  9058. }
  9059. i$2 = sep.length;
  9060. while (true) {
  9061. if (!(i$2 < s.length)) { break; }
  9062. h = (x = 16777619, (((h >>> 16 << 16) * x >>> 0) + (h << 16 >>> 16) * x) >>> 0);
  9063. h = h + ((s.charCodeAt(i$2) >>> 0)) >>> 0;
  9064. h = h - ((x$1 = (s.charCodeAt((i$2 - sep.length >> 0)) >>> 0), (((pow >>> 16 << 16) * x$1 >>> 0) + (pow << 16 >>> 16) * x$1) >>> 0)) >>> 0;
  9065. i$2 = i$2 + (1) >> 0;
  9066. if ((h === hashsep) && lastmatch <= (i$2 - sep.length >> 0) && s.substring((i$2 - sep.length >> 0), i$2) === sep) {
  9067. n = n + (1) >> 0;
  9068. lastmatch = i$2;
  9069. }
  9070. }
  9071. return n;
  9072. };
  9073. $pkg.Count = Count;
  9074. Contains = function(s, substr) {
  9075. var $ptr, s, substr;
  9076. return Index(s, substr) >= 0;
  9077. };
  9078. $pkg.Contains = Contains;
  9079. Index = function(s, sep) {
  9080. var $ptr, _tuple, h, hashsep, i, i$1, n, pow, s, sep, x, x$1;
  9081. n = sep.length;
  9082. if (n === 0) {
  9083. return 0;
  9084. } else if (n === 1) {
  9085. return IndexByte(s, sep.charCodeAt(0));
  9086. } else if (n === s.length) {
  9087. if (sep === s) {
  9088. return 0;
  9089. }
  9090. return -1;
  9091. } else if (n > s.length) {
  9092. return -1;
  9093. }
  9094. _tuple = hashStr(sep); hashsep = _tuple[0]; pow = _tuple[1];
  9095. h = 0;
  9096. i = 0;
  9097. while (true) {
  9098. if (!(i < n)) { break; }
  9099. h = ((((h >>> 16 << 16) * 16777619 >>> 0) + (h << 16 >>> 16) * 16777619) >>> 0) + (s.charCodeAt(i) >>> 0) >>> 0;
  9100. i = i + (1) >> 0;
  9101. }
  9102. if ((h === hashsep) && s.substring(0, n) === sep) {
  9103. return 0;
  9104. }
  9105. i$1 = n;
  9106. while (true) {
  9107. if (!(i$1 < s.length)) { break; }
  9108. h = (x = 16777619, (((h >>> 16 << 16) * x >>> 0) + (h << 16 >>> 16) * x) >>> 0);
  9109. h = h + ((s.charCodeAt(i$1) >>> 0)) >>> 0;
  9110. h = h - ((x$1 = (s.charCodeAt((i$1 - n >> 0)) >>> 0), (((pow >>> 16 << 16) * x$1 >>> 0) + (pow << 16 >>> 16) * x$1) >>> 0)) >>> 0;
  9111. i$1 = i$1 + (1) >> 0;
  9112. if ((h === hashsep) && s.substring((i$1 - n >> 0), i$1) === sep) {
  9113. return i$1 - n >> 0;
  9114. }
  9115. }
  9116. return -1;
  9117. };
  9118. $pkg.Index = Index;
  9119. LastIndex = function(s, sep) {
  9120. var $ptr, _tuple, c, h, hashsep, i, i$1, i$2, last, n, pow, s, sep, x, x$1;
  9121. n = sep.length;
  9122. if (n === 0) {
  9123. return s.length;
  9124. } else if (n === 1) {
  9125. c = sep.charCodeAt(0);
  9126. i = s.length - 1 >> 0;
  9127. while (true) {
  9128. if (!(i >= 0)) { break; }
  9129. if (s.charCodeAt(i) === c) {
  9130. return i;
  9131. }
  9132. i = i - (1) >> 0;
  9133. }
  9134. return -1;
  9135. } else if (n === s.length) {
  9136. if (sep === s) {
  9137. return 0;
  9138. }
  9139. return -1;
  9140. } else if (n > s.length) {
  9141. return -1;
  9142. }
  9143. _tuple = hashStrRev(sep); hashsep = _tuple[0]; pow = _tuple[1];
  9144. last = s.length - n >> 0;
  9145. h = 0;
  9146. i$1 = s.length - 1 >> 0;
  9147. while (true) {
  9148. if (!(i$1 >= last)) { break; }
  9149. h = ((((h >>> 16 << 16) * 16777619 >>> 0) + (h << 16 >>> 16) * 16777619) >>> 0) + (s.charCodeAt(i$1) >>> 0) >>> 0;
  9150. i$1 = i$1 - (1) >> 0;
  9151. }
  9152. if ((h === hashsep) && s.substring(last) === sep) {
  9153. return last;
  9154. }
  9155. i$2 = last - 1 >> 0;
  9156. while (true) {
  9157. if (!(i$2 >= 0)) { break; }
  9158. h = (x = 16777619, (((h >>> 16 << 16) * x >>> 0) + (h << 16 >>> 16) * x) >>> 0);
  9159. h = h + ((s.charCodeAt(i$2) >>> 0)) >>> 0;
  9160. h = h - ((x$1 = (s.charCodeAt((i$2 + n >> 0)) >>> 0), (((pow >>> 16 << 16) * x$1 >>> 0) + (pow << 16 >>> 16) * x$1) >>> 0)) >>> 0;
  9161. if ((h === hashsep) && s.substring(i$2, (i$2 + n >> 0)) === sep) {
  9162. return i$2;
  9163. }
  9164. i$2 = i$2 - (1) >> 0;
  9165. }
  9166. return -1;
  9167. };
  9168. $pkg.LastIndex = LastIndex;
  9169. IndexRune = function(s, r) {
  9170. var $ptr, _i, _ref, _rune, c, i, r, s;
  9171. if (r < 128) {
  9172. return IndexByte(s, (r << 24 >>> 24));
  9173. } else {
  9174. _ref = s;
  9175. _i = 0;
  9176. while (true) {
  9177. if (!(_i < _ref.length)) { break; }
  9178. _rune = $decodeRune(_ref, _i);
  9179. i = _i;
  9180. c = _rune[0];
  9181. if (c === r) {
  9182. return i;
  9183. }
  9184. _i += _rune[1];
  9185. }
  9186. }
  9187. return -1;
  9188. };
  9189. $pkg.IndexRune = IndexRune;
  9190. IndexAny = function(s, chars) {
  9191. var $ptr, _i, _i$1, _ref, _ref$1, _rune, _rune$1, c, chars, i, m, s;
  9192. if (chars.length > 0) {
  9193. _ref = s;
  9194. _i = 0;
  9195. while (true) {
  9196. if (!(_i < _ref.length)) { break; }
  9197. _rune = $decodeRune(_ref, _i);
  9198. i = _i;
  9199. c = _rune[0];
  9200. _ref$1 = chars;
  9201. _i$1 = 0;
  9202. while (true) {
  9203. if (!(_i$1 < _ref$1.length)) { break; }
  9204. _rune$1 = $decodeRune(_ref$1, _i$1);
  9205. m = _rune$1[0];
  9206. if (c === m) {
  9207. return i;
  9208. }
  9209. _i$1 += _rune$1[1];
  9210. }
  9211. _i += _rune[1];
  9212. }
  9213. }
  9214. return -1;
  9215. };
  9216. $pkg.IndexAny = IndexAny;
  9217. genSplit = function(s, sep, sepSave, n) {
  9218. var $ptr, a, c, i, n, na, s, sep, sepSave, start;
  9219. if (n === 0) {
  9220. return sliceType$3.nil;
  9221. }
  9222. if (sep === "") {
  9223. return explode(s, n);
  9224. }
  9225. if (n < 0) {
  9226. n = Count(s, sep) + 1 >> 0;
  9227. }
  9228. c = sep.charCodeAt(0);
  9229. start = 0;
  9230. a = $makeSlice(sliceType$3, n);
  9231. na = 0;
  9232. i = 0;
  9233. while (true) {
  9234. if (!((i + sep.length >> 0) <= s.length && (na + 1 >> 0) < n)) { break; }
  9235. if ((s.charCodeAt(i) === c) && ((sep.length === 1) || s.substring(i, (i + sep.length >> 0)) === sep)) {
  9236. ((na < 0 || na >= a.$length) ? $throwRuntimeError("index out of range") : a.$array[a.$offset + na] = s.substring(start, (i + sepSave >> 0)));
  9237. na = na + (1) >> 0;
  9238. start = i + sep.length >> 0;
  9239. i = i + ((sep.length - 1 >> 0)) >> 0;
  9240. }
  9241. i = i + (1) >> 0;
  9242. }
  9243. ((na < 0 || na >= a.$length) ? $throwRuntimeError("index out of range") : a.$array[a.$offset + na] = s.substring(start));
  9244. return $subslice(a, 0, (na + 1 >> 0));
  9245. };
  9246. SplitN = function(s, sep, n) {
  9247. var $ptr, n, s, sep;
  9248. return genSplit(s, sep, 0, n);
  9249. };
  9250. $pkg.SplitN = SplitN;
  9251. Split = function(s, sep) {
  9252. var $ptr, s, sep;
  9253. return genSplit(s, sep, 0, -1);
  9254. };
  9255. $pkg.Split = Split;
  9256. Join = function(a, sep) {
  9257. var $ptr, _i, _ref, a, b, bp, i, n, s, sep;
  9258. if (a.$length === 0) {
  9259. return "";
  9260. }
  9261. if (a.$length === 1) {
  9262. return (0 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 0]);
  9263. }
  9264. n = sep.length * ((a.$length - 1 >> 0)) >> 0;
  9265. i = 0;
  9266. while (true) {
  9267. if (!(i < a.$length)) { break; }
  9268. n = n + (((i < 0 || i >= a.$length) ? $throwRuntimeError("index out of range") : a.$array[a.$offset + i]).length) >> 0;
  9269. i = i + (1) >> 0;
  9270. }
  9271. b = $makeSlice(sliceType, n);
  9272. bp = $copyString(b, (0 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 0]));
  9273. _ref = $subslice(a, 1);
  9274. _i = 0;
  9275. while (true) {
  9276. if (!(_i < _ref.$length)) { break; }
  9277. s = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]);
  9278. bp = bp + ($copyString($subslice(b, bp), sep)) >> 0;
  9279. bp = bp + ($copyString($subslice(b, bp), s)) >> 0;
  9280. _i++;
  9281. }
  9282. return $bytesToString(b);
  9283. };
  9284. $pkg.Join = Join;
  9285. HasPrefix = function(s, prefix) {
  9286. var $ptr, prefix, s;
  9287. return s.length >= prefix.length && s.substring(0, prefix.length) === prefix;
  9288. };
  9289. $pkg.HasPrefix = HasPrefix;
  9290. HasSuffix = function(s, suffix) {
  9291. var $ptr, s, suffix;
  9292. return s.length >= suffix.length && s.substring((s.length - suffix.length >> 0)) === suffix;
  9293. };
  9294. $pkg.HasSuffix = HasSuffix;
  9295. Map = function(mapping, s) {
  9296. var $ptr, _i, _r, _ref, _rune, b, c, i, mapping, maxbytes, nb, nbytes, r, s, wid, $s, $r;
  9297. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _i = $f._i; _r = $f._r; _ref = $f._ref; _rune = $f._rune; b = $f.b; c = $f.c; i = $f.i; mapping = $f.mapping; maxbytes = $f.maxbytes; nb = $f.nb; nbytes = $f.nbytes; r = $f.r; s = $f.s; wid = $f.wid; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  9298. maxbytes = s.length;
  9299. nbytes = 0;
  9300. b = sliceType.nil;
  9301. _ref = s;
  9302. _i = 0;
  9303. /* while (true) { */ case 1:
  9304. /* if (!(_i < _ref.length)) { break; } */ if(!(_i < _ref.length)) { $s = 2; continue; }
  9305. _rune = $decodeRune(_ref, _i);
  9306. i = _i;
  9307. c = _rune[0];
  9308. _r = mapping(c); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  9309. r = _r;
  9310. if (b === sliceType.nil) {
  9311. if (r === c) {
  9312. _i += _rune[1];
  9313. /* continue; */ $s = 1; continue;
  9314. }
  9315. b = $makeSlice(sliceType, maxbytes);
  9316. nbytes = $copyString(b, s.substring(0, i));
  9317. }
  9318. if (r >= 0) {
  9319. wid = 1;
  9320. if (r >= 128) {
  9321. wid = utf8.RuneLen(r);
  9322. }
  9323. if ((nbytes + wid >> 0) > maxbytes) {
  9324. maxbytes = (maxbytes * 2 >> 0) + 4 >> 0;
  9325. nb = $makeSlice(sliceType, maxbytes);
  9326. $copySlice(nb, $subslice(b, 0, nbytes));
  9327. b = nb;
  9328. }
  9329. nbytes = nbytes + (utf8.EncodeRune($subslice(b, nbytes, maxbytes), r)) >> 0;
  9330. }
  9331. _i += _rune[1];
  9332. /* } */ $s = 1; continue; case 2:
  9333. if (b === sliceType.nil) {
  9334. return s;
  9335. }
  9336. return $bytesToString($subslice(b, 0, nbytes));
  9337. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Map }; } $f.$ptr = $ptr; $f._i = _i; $f._r = _r; $f._ref = _ref; $f._rune = _rune; $f.b = b; $f.c = c; $f.i = i; $f.mapping = mapping; $f.maxbytes = maxbytes; $f.nb = nb; $f.nbytes = nbytes; $f.r = r; $f.s = s; $f.wid = wid; $f.$s = $s; $f.$r = $r; return $f;
  9338. };
  9339. $pkg.Map = Map;
  9340. ToLower = function(s) {
  9341. var $ptr, _r, s, $s, $r;
  9342. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  9343. _r = Map(unicode.ToLower, s); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  9344. return _r;
  9345. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: ToLower }; } $f.$ptr = $ptr; $f._r = _r; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
  9346. };
  9347. $pkg.ToLower = ToLower;
  9348. TrimLeftFunc = function(s, f) {
  9349. var $ptr, _r, f, i, s, $s, $r;
  9350. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; f = $f.f; i = $f.i; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  9351. _r = indexFunc(s, f, false); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  9352. i = _r;
  9353. if (i === -1) {
  9354. return "";
  9355. }
  9356. return s.substring(i);
  9357. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: TrimLeftFunc }; } $f.$ptr = $ptr; $f._r = _r; $f.f = f; $f.i = i; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
  9358. };
  9359. $pkg.TrimLeftFunc = TrimLeftFunc;
  9360. TrimRightFunc = function(s, f) {
  9361. var $ptr, _r, _tuple, f, i, s, wid, $s, $r;
  9362. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tuple = $f._tuple; f = $f.f; i = $f.i; s = $f.s; wid = $f.wid; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  9363. _r = lastIndexFunc(s, f, false); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  9364. i = _r;
  9365. if (i >= 0 && s.charCodeAt(i) >= 128) {
  9366. _tuple = utf8.DecodeRuneInString(s.substring(i)); wid = _tuple[1];
  9367. i = i + (wid) >> 0;
  9368. } else {
  9369. i = i + (1) >> 0;
  9370. }
  9371. return s.substring(0, i);
  9372. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: TrimRightFunc }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple = _tuple; $f.f = f; $f.i = i; $f.s = s; $f.wid = wid; $f.$s = $s; $f.$r = $r; return $f;
  9373. };
  9374. $pkg.TrimRightFunc = TrimRightFunc;
  9375. TrimFunc = function(s, f) {
  9376. var $ptr, _r, _r$1, f, s, $s, $r;
  9377. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; f = $f.f; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  9378. _r = TrimLeftFunc(s, f); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  9379. _r$1 = TrimRightFunc(_r, f); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  9380. return _r$1;
  9381. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: TrimFunc }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f.f = f; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
  9382. };
  9383. $pkg.TrimFunc = TrimFunc;
  9384. IndexFunc = function(s, f) {
  9385. var $ptr, _r, f, s, $s, $r;
  9386. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; f = $f.f; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  9387. _r = indexFunc(s, f, true); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  9388. return _r;
  9389. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: IndexFunc }; } $f.$ptr = $ptr; $f._r = _r; $f.f = f; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
  9390. };
  9391. $pkg.IndexFunc = IndexFunc;
  9392. indexFunc = function(s, f, truth) {
  9393. var $ptr, _r, _tuple, f, r, s, start, truth, wid, $s, $r;
  9394. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tuple = $f._tuple; f = $f.f; r = $f.r; s = $f.s; start = $f.start; truth = $f.truth; wid = $f.wid; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  9395. start = 0;
  9396. /* while (true) { */ case 1:
  9397. /* if (!(start < s.length)) { break; } */ if(!(start < s.length)) { $s = 2; continue; }
  9398. wid = 1;
  9399. r = (s.charCodeAt(start) >> 0);
  9400. if (r >= 128) {
  9401. _tuple = utf8.DecodeRuneInString(s.substring(start)); r = _tuple[0]; wid = _tuple[1];
  9402. }
  9403. _r = f(r); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  9404. /* */ if (_r === truth) { $s = 3; continue; }
  9405. /* */ $s = 4; continue;
  9406. /* if (_r === truth) { */ case 3:
  9407. return start;
  9408. /* } */ case 4:
  9409. start = start + (wid) >> 0;
  9410. /* } */ $s = 1; continue; case 2:
  9411. return -1;
  9412. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: indexFunc }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple = _tuple; $f.f = f; $f.r = r; $f.s = s; $f.start = start; $f.truth = truth; $f.wid = wid; $f.$s = $s; $f.$r = $r; return $f;
  9413. };
  9414. lastIndexFunc = function(s, f, truth) {
  9415. var $ptr, _r, _tuple, f, i, r, s, size, truth, $s, $r;
  9416. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tuple = $f._tuple; f = $f.f; i = $f.i; r = $f.r; s = $f.s; size = $f.size; truth = $f.truth; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  9417. i = s.length;
  9418. /* while (true) { */ case 1:
  9419. /* if (!(i > 0)) { break; } */ if(!(i > 0)) { $s = 2; continue; }
  9420. _tuple = utf8.DecodeLastRuneInString(s.substring(0, i)); r = _tuple[0]; size = _tuple[1];
  9421. i = i - (size) >> 0;
  9422. _r = f(r); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  9423. /* */ if (_r === truth) { $s = 3; continue; }
  9424. /* */ $s = 4; continue;
  9425. /* if (_r === truth) { */ case 3:
  9426. return i;
  9427. /* } */ case 4:
  9428. /* } */ $s = 1; continue; case 2:
  9429. return -1;
  9430. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: lastIndexFunc }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple = _tuple; $f.f = f; $f.i = i; $f.r = r; $f.s = s; $f.size = size; $f.truth = truth; $f.$s = $s; $f.$r = $r; return $f;
  9431. };
  9432. makeCutsetFunc = function(cutset) {
  9433. var $ptr, cutset;
  9434. return (function(r) {
  9435. var $ptr, r;
  9436. return IndexRune(cutset, r) >= 0;
  9437. });
  9438. };
  9439. TrimLeft = function(s, cutset) {
  9440. var $ptr, _r, cutset, s, $s, $r;
  9441. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; cutset = $f.cutset; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  9442. if (s === "" || cutset === "") {
  9443. return s;
  9444. }
  9445. _r = TrimLeftFunc(s, makeCutsetFunc(cutset)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  9446. return _r;
  9447. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: TrimLeft }; } $f.$ptr = $ptr; $f._r = _r; $f.cutset = cutset; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
  9448. };
  9449. $pkg.TrimLeft = TrimLeft;
  9450. TrimRight = function(s, cutset) {
  9451. var $ptr, _r, cutset, s, $s, $r;
  9452. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; cutset = $f.cutset; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  9453. if (s === "" || cutset === "") {
  9454. return s;
  9455. }
  9456. _r = TrimRightFunc(s, makeCutsetFunc(cutset)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  9457. return _r;
  9458. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: TrimRight }; } $f.$ptr = $ptr; $f._r = _r; $f.cutset = cutset; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
  9459. };
  9460. $pkg.TrimRight = TrimRight;
  9461. TrimSpace = function(s) {
  9462. var $ptr, _r, s, $s, $r;
  9463. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  9464. _r = TrimFunc(s, unicode.IsSpace); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  9465. return _r;
  9466. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: TrimSpace }; } $f.$ptr = $ptr; $f._r = _r; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
  9467. };
  9468. $pkg.TrimSpace = TrimSpace;
  9469. TrimPrefix = function(s, prefix) {
  9470. var $ptr, prefix, s;
  9471. if (HasPrefix(s, prefix)) {
  9472. return s.substring(prefix.length);
  9473. }
  9474. return s;
  9475. };
  9476. $pkg.TrimPrefix = TrimPrefix;
  9477. Replace = function(s, old, new$1, n) {
  9478. var $ptr, _tuple, i, j, m, n, new$1, old, s, start, t, w, wid;
  9479. if (old === new$1 || (n === 0)) {
  9480. return s;
  9481. }
  9482. m = Count(s, old);
  9483. if (m === 0) {
  9484. return s;
  9485. } else if (n < 0 || m < n) {
  9486. n = m;
  9487. }
  9488. t = $makeSlice(sliceType, (s.length + (n * ((new$1.length - old.length >> 0)) >> 0) >> 0));
  9489. w = 0;
  9490. start = 0;
  9491. i = 0;
  9492. while (true) {
  9493. if (!(i < n)) { break; }
  9494. j = start;
  9495. if (old.length === 0) {
  9496. if (i > 0) {
  9497. _tuple = utf8.DecodeRuneInString(s.substring(start)); wid = _tuple[1];
  9498. j = j + (wid) >> 0;
  9499. }
  9500. } else {
  9501. j = j + (Index(s.substring(start), old)) >> 0;
  9502. }
  9503. w = w + ($copyString($subslice(t, w), s.substring(start, j))) >> 0;
  9504. w = w + ($copyString($subslice(t, w), new$1)) >> 0;
  9505. start = j + old.length >> 0;
  9506. i = i + (1) >> 0;
  9507. }
  9508. w = w + ($copyString($subslice(t, w), s.substring(start))) >> 0;
  9509. return $bytesToString($subslice(t, 0, w));
  9510. };
  9511. $pkg.Replace = Replace;
  9512. EqualFold = function(s, t) {
  9513. var $ptr, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, r, r$1, r$2, s, size, size$1, sr, t, tr;
  9514. while (true) {
  9515. if (!(!(s === "") && !(t === ""))) { break; }
  9516. _tmp = 0; _tmp$1 = 0; sr = _tmp; tr = _tmp$1;
  9517. if (s.charCodeAt(0) < 128) {
  9518. _tmp$2 = (s.charCodeAt(0) >> 0); _tmp$3 = s.substring(1); sr = _tmp$2; s = _tmp$3;
  9519. } else {
  9520. _tuple = utf8.DecodeRuneInString(s); r = _tuple[0]; size = _tuple[1];
  9521. _tmp$4 = r; _tmp$5 = s.substring(size); sr = _tmp$4; s = _tmp$5;
  9522. }
  9523. if (t.charCodeAt(0) < 128) {
  9524. _tmp$6 = (t.charCodeAt(0) >> 0); _tmp$7 = t.substring(1); tr = _tmp$6; t = _tmp$7;
  9525. } else {
  9526. _tuple$1 = utf8.DecodeRuneInString(t); r$1 = _tuple$1[0]; size$1 = _tuple$1[1];
  9527. _tmp$8 = r$1; _tmp$9 = t.substring(size$1); tr = _tmp$8; t = _tmp$9;
  9528. }
  9529. if (tr === sr) {
  9530. continue;
  9531. }
  9532. if (tr < sr) {
  9533. _tmp$10 = sr; _tmp$11 = tr; tr = _tmp$10; sr = _tmp$11;
  9534. }
  9535. if (tr < 128 && 65 <= sr && sr <= 90) {
  9536. if (tr === ((sr + 97 >> 0) - 65 >> 0)) {
  9537. continue;
  9538. }
  9539. return false;
  9540. }
  9541. r$2 = unicode.SimpleFold(sr);
  9542. while (true) {
  9543. if (!(!((r$2 === sr)) && r$2 < tr)) { break; }
  9544. r$2 = unicode.SimpleFold(r$2);
  9545. }
  9546. if (r$2 === tr) {
  9547. continue;
  9548. }
  9549. return false;
  9550. }
  9551. return s === t;
  9552. };
  9553. $pkg.EqualFold = EqualFold;
  9554. ptrType$5.methods = [{prop: "Len", name: "Len", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType], [$Int, $error], false)}, {prop: "ReadAt", name: "ReadAt", pkg: "", typ: $funcType([sliceType, $Int64], [$Int, $error], false)}, {prop: "ReadByte", name: "ReadByte", pkg: "", typ: $funcType([], [$Uint8, $error], false)}, {prop: "UnreadByte", name: "UnreadByte", pkg: "", typ: $funcType([], [$error], false)}, {prop: "ReadRune", name: "ReadRune", pkg: "", typ: $funcType([], [$Int32, $Int, $error], false)}, {prop: "UnreadRune", name: "UnreadRune", pkg: "", typ: $funcType([], [$error], false)}, {prop: "Seek", name: "Seek", pkg: "", typ: $funcType([$Int64, $Int], [$Int64, $error], false)}, {prop: "WriteTo", name: "WriteTo", pkg: "", typ: $funcType([io.Writer], [$Int64, $error], false)}];
  9555. ptrType$6.methods = [{prop: "Replace", name: "Replace", pkg: "", typ: $funcType([$String], [$String], false)}, {prop: "WriteString", name: "WriteString", pkg: "", typ: $funcType([io.Writer, $String], [$Int, $error], false)}];
  9556. ptrType$2.methods = [{prop: "add", name: "add", pkg: "strings", typ: $funcType([$String, $String, $Int, ptrType$7], [], false)}];
  9557. ptrType$7.methods = [{prop: "lookup", name: "lookup", pkg: "strings", typ: $funcType([$String, $Bool], [$String, $Int, $Bool], false)}, {prop: "Replace", name: "Replace", pkg: "", typ: $funcType([$String], [$String], false)}, {prop: "WriteString", name: "WriteString", pkg: "", typ: $funcType([io.Writer, $String], [$Int, $error], false)}];
  9558. ptrType$3.methods = [{prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType], [$Int, $error], false)}, {prop: "WriteString", name: "WriteString", pkg: "", typ: $funcType([$String], [$Int, $error], false)}];
  9559. stringWriter.methods = [{prop: "WriteString", name: "WriteString", pkg: "", typ: $funcType([$String], [$Int, $error], false)}];
  9560. ptrType$8.methods = [{prop: "Replace", name: "Replace", pkg: "", typ: $funcType([$String], [$String], false)}, {prop: "WriteString", name: "WriteString", pkg: "", typ: $funcType([io.Writer, $String], [$Int, $error], false)}];
  9561. ptrType.methods = [{prop: "Replace", name: "Replace", pkg: "", typ: $funcType([$String], [$String], false)}, {prop: "WriteString", name: "WriteString", pkg: "", typ: $funcType([io.Writer, $String], [$Int, $error], false)}];
  9562. ptrType$1.methods = [{prop: "Replace", name: "Replace", pkg: "", typ: $funcType([$String], [$String], false)}, {prop: "WriteString", name: "WriteString", pkg: "", typ: $funcType([io.Writer, $String], [$Int, $error], false)}];
  9563. ptrType$4.methods = [{prop: "next", name: "next", pkg: "strings", typ: $funcType([$String], [$Int], false)}];
  9564. Reader.init([{prop: "s", name: "s", pkg: "strings", typ: $String, tag: ""}, {prop: "i", name: "i", pkg: "strings", typ: $Int64, tag: ""}, {prop: "prevRune", name: "prevRune", pkg: "strings", typ: $Int, tag: ""}]);
  9565. Replacer.init([{prop: "r", name: "r", pkg: "strings", typ: replacer, tag: ""}]);
  9566. replacer.init([{prop: "Replace", name: "Replace", pkg: "", typ: $funcType([$String], [$String], false)}, {prop: "WriteString", name: "WriteString", pkg: "", typ: $funcType([io.Writer, $String], [$Int, $error], false)}]);
  9567. trieNode.init([{prop: "value", name: "value", pkg: "strings", typ: $String, tag: ""}, {prop: "priority", name: "priority", pkg: "strings", typ: $Int, tag: ""}, {prop: "prefix", name: "prefix", pkg: "strings", typ: $String, tag: ""}, {prop: "next", name: "next", pkg: "strings", typ: ptrType$2, tag: ""}, {prop: "table", name: "table", pkg: "strings", typ: sliceType$1, tag: ""}]);
  9568. genericReplacer.init([{prop: "root", name: "root", pkg: "strings", typ: trieNode, tag: ""}, {prop: "tableSize", name: "tableSize", pkg: "strings", typ: $Int, tag: ""}, {prop: "mapping", name: "mapping", pkg: "strings", typ: arrayType, tag: ""}]);
  9569. appendSliceWriter.init($Uint8);
  9570. stringWriterIface.init([{prop: "WriteString", name: "WriteString", pkg: "", typ: $funcType([$String], [$Int, $error], false)}]);
  9571. stringWriter.init([{prop: "w", name: "w", pkg: "strings", typ: io.Writer, tag: ""}]);
  9572. singleStringReplacer.init([{prop: "finder", name: "finder", pkg: "strings", typ: ptrType$4, tag: ""}, {prop: "value", name: "value", pkg: "strings", typ: $String, tag: ""}]);
  9573. byteReplacer.init($Uint8, 256);
  9574. byteStringReplacer.init(sliceType, 256);
  9575. stringFinder.init([{prop: "pattern", name: "pattern", pkg: "strings", typ: $String, tag: ""}, {prop: "badCharSkip", name: "badCharSkip", pkg: "strings", typ: arrayType$2, tag: ""}, {prop: "goodSuffixSkip", name: "goodSuffixSkip", pkg: "strings", typ: sliceType$2, tag: ""}]);
  9576. $init = function() {
  9577. $pkg.$init = function() {};
  9578. /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  9579. $r = errors.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  9580. $r = js.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  9581. $r = io.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  9582. $r = unicode.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  9583. $r = utf8.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  9584. /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
  9585. };
  9586. $pkg.$init = $init;
  9587. return $pkg;
  9588. })();
  9589. $packages["time"] = (function() {
  9590. var $pkg = {}, $init, errors, js, nosync, runtime, strings, syscall, runtimeTimer, ParseError, Timer, Time, Month, Weekday, Duration, Location, zone, zoneTrans, sliceType, sliceType$1, sliceType$2, ptrType, structType, chanType, funcType, arrayType$1, sliceType$3, arrayType$2, arrayType$3, ptrType$1, chanType$2, funcType$1, ptrType$6, ptrType$7, ptrType$8, ptrType$10, std0x, longDayNames, shortDayNames, shortMonthNames, longMonthNames, atoiError, errBad, errLeadingInt, unitMap, months, days, daysBefore, utcLoc, utcLoc_ptr, localLoc, localLoc_ptr, localOnce, zoneinfo, badData, _map, _key, _tuple, initLocal, runtimeNano, now, Sleep, startTimer, stopTimer, startsWithLowerCase, nextStdChunk, match, lookup, appendUint, atoi, formatNano, quote, isDigit, getnum, cutspace, skip, Parse, parse, parseTimeZone, parseGMT, parseNanoseconds, leadingInt, ParseDuration, when, AfterFunc, goFunc, absWeekday, absClock, fmtFrac, fmtInt, absDate, Now, Unix, isLeap, norm, Date, div, FixedZone;
  9591. errors = $packages["errors"];
  9592. js = $packages["github.com/gopherjs/gopherjs/js"];
  9593. nosync = $packages["github.com/gopherjs/gopherjs/nosync"];
  9594. runtime = $packages["runtime"];
  9595. strings = $packages["strings"];
  9596. syscall = $packages["syscall"];
  9597. runtimeTimer = $pkg.runtimeTimer = $newType(0, $kindStruct, "time.runtimeTimer", "runtimeTimer", "time", function(i_, when_, period_, f_, arg_, timeout_, active_) {
  9598. this.$val = this;
  9599. if (arguments.length === 0) {
  9600. this.i = 0;
  9601. this.when = new $Int64(0, 0);
  9602. this.period = new $Int64(0, 0);
  9603. this.f = $throwNilPointerError;
  9604. this.arg = $ifaceNil;
  9605. this.timeout = null;
  9606. this.active = false;
  9607. return;
  9608. }
  9609. this.i = i_;
  9610. this.when = when_;
  9611. this.period = period_;
  9612. this.f = f_;
  9613. this.arg = arg_;
  9614. this.timeout = timeout_;
  9615. this.active = active_;
  9616. });
  9617. ParseError = $pkg.ParseError = $newType(0, $kindStruct, "time.ParseError", "ParseError", "time", function(Layout_, Value_, LayoutElem_, ValueElem_, Message_) {
  9618. this.$val = this;
  9619. if (arguments.length === 0) {
  9620. this.Layout = "";
  9621. this.Value = "";
  9622. this.LayoutElem = "";
  9623. this.ValueElem = "";
  9624. this.Message = "";
  9625. return;
  9626. }
  9627. this.Layout = Layout_;
  9628. this.Value = Value_;
  9629. this.LayoutElem = LayoutElem_;
  9630. this.ValueElem = ValueElem_;
  9631. this.Message = Message_;
  9632. });
  9633. Timer = $pkg.Timer = $newType(0, $kindStruct, "time.Timer", "Timer", "time", function(C_, r_) {
  9634. this.$val = this;
  9635. if (arguments.length === 0) {
  9636. this.C = chanType$2.nil;
  9637. this.r = new runtimeTimer.ptr();
  9638. return;
  9639. }
  9640. this.C = C_;
  9641. this.r = r_;
  9642. });
  9643. Time = $pkg.Time = $newType(0, $kindStruct, "time.Time", "Time", "time", function(sec_, nsec_, loc_) {
  9644. this.$val = this;
  9645. if (arguments.length === 0) {
  9646. this.sec = new $Int64(0, 0);
  9647. this.nsec = 0;
  9648. this.loc = ptrType$1.nil;
  9649. return;
  9650. }
  9651. this.sec = sec_;
  9652. this.nsec = nsec_;
  9653. this.loc = loc_;
  9654. });
  9655. Month = $pkg.Month = $newType(4, $kindInt, "time.Month", "Month", "time", null);
  9656. Weekday = $pkg.Weekday = $newType(4, $kindInt, "time.Weekday", "Weekday", "time", null);
  9657. Duration = $pkg.Duration = $newType(8, $kindInt64, "time.Duration", "Duration", "time", null);
  9658. Location = $pkg.Location = $newType(0, $kindStruct, "time.Location", "Location", "time", function(name_, zone_, tx_, cacheStart_, cacheEnd_, cacheZone_) {
  9659. this.$val = this;
  9660. if (arguments.length === 0) {
  9661. this.name = "";
  9662. this.zone = sliceType$1.nil;
  9663. this.tx = sliceType$2.nil;
  9664. this.cacheStart = new $Int64(0, 0);
  9665. this.cacheEnd = new $Int64(0, 0);
  9666. this.cacheZone = ptrType.nil;
  9667. return;
  9668. }
  9669. this.name = name_;
  9670. this.zone = zone_;
  9671. this.tx = tx_;
  9672. this.cacheStart = cacheStart_;
  9673. this.cacheEnd = cacheEnd_;
  9674. this.cacheZone = cacheZone_;
  9675. });
  9676. zone = $pkg.zone = $newType(0, $kindStruct, "time.zone", "zone", "time", function(name_, offset_, isDST_) {
  9677. this.$val = this;
  9678. if (arguments.length === 0) {
  9679. this.name = "";
  9680. this.offset = 0;
  9681. this.isDST = false;
  9682. return;
  9683. }
  9684. this.name = name_;
  9685. this.offset = offset_;
  9686. this.isDST = isDST_;
  9687. });
  9688. zoneTrans = $pkg.zoneTrans = $newType(0, $kindStruct, "time.zoneTrans", "zoneTrans", "time", function(when_, index_, isstd_, isutc_) {
  9689. this.$val = this;
  9690. if (arguments.length === 0) {
  9691. this.when = new $Int64(0, 0);
  9692. this.index = 0;
  9693. this.isstd = false;
  9694. this.isutc = false;
  9695. return;
  9696. }
  9697. this.when = when_;
  9698. this.index = index_;
  9699. this.isstd = isstd_;
  9700. this.isutc = isutc_;
  9701. });
  9702. sliceType = $sliceType($String);
  9703. sliceType$1 = $sliceType(zone);
  9704. sliceType$2 = $sliceType(zoneTrans);
  9705. ptrType = $ptrType(zone);
  9706. structType = $structType([]);
  9707. chanType = $chanType(structType, false, false);
  9708. funcType = $funcType([], [], false);
  9709. arrayType$1 = $arrayType($Uint8, 32);
  9710. sliceType$3 = $sliceType($Uint8);
  9711. arrayType$2 = $arrayType($Uint8, 9);
  9712. arrayType$3 = $arrayType($Uint8, 64);
  9713. ptrType$1 = $ptrType(Location);
  9714. chanType$2 = $chanType(Time, false, true);
  9715. funcType$1 = $funcType([$emptyInterface, $Uintptr], [], false);
  9716. ptrType$6 = $ptrType(js.Object);
  9717. ptrType$7 = $ptrType(ParseError);
  9718. ptrType$8 = $ptrType(Timer);
  9719. ptrType$10 = $ptrType(Time);
  9720. initLocal = function() {
  9721. var $ptr, d, i, j, s;
  9722. d = new ($global.Date)();
  9723. s = $internalize(d, $String);
  9724. i = strings.IndexByte(s, 40);
  9725. j = strings.IndexByte(s, 41);
  9726. if ((i === -1) || (j === -1)) {
  9727. localLoc.name = "UTC";
  9728. return;
  9729. }
  9730. localLoc.name = s.substring((i + 1 >> 0), j);
  9731. localLoc.zone = new sliceType$1([new zone.ptr(localLoc.name, ($parseInt(d.getTimezoneOffset()) >> 0) * -60 >> 0, false)]);
  9732. };
  9733. runtimeNano = function() {
  9734. var $ptr;
  9735. return $mul64($internalize(new ($global.Date)().getTime(), $Int64), new $Int64(0, 1000000));
  9736. };
  9737. now = function() {
  9738. var $ptr, _tmp, _tmp$1, n, nsec, sec, x;
  9739. sec = new $Int64(0, 0);
  9740. nsec = 0;
  9741. n = runtimeNano();
  9742. _tmp = $div64(n, new $Int64(0, 1000000000), false); _tmp$1 = ((x = $div64(n, new $Int64(0, 1000000000), true), x.$low + ((x.$high >> 31) * 4294967296)) >> 0); sec = _tmp; nsec = _tmp$1;
  9743. return [sec, nsec];
  9744. };
  9745. Sleep = function(d) {
  9746. var $ptr, _r, c, d, x, $s, $r;
  9747. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; c = $f.c; d = $f.d; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  9748. c = [c];
  9749. c[0] = new chanType(0);
  9750. $global.setTimeout($externalize((function(c) { return function() {
  9751. var $ptr;
  9752. $close(c[0]);
  9753. }; })(c), funcType), ((x = $div64(d, new Duration(0, 1000000), false), x.$low + ((x.$high >> 31) * 4294967296)) >> 0));
  9754. _r = $recv(c[0]); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  9755. _r[0];
  9756. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Sleep }; } $f.$ptr = $ptr; $f._r = _r; $f.c = c; $f.d = d; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
  9757. };
  9758. $pkg.Sleep = Sleep;
  9759. startTimer = function(t) {
  9760. var $ptr, diff, t, x, x$1;
  9761. t.active = true;
  9762. diff = $div64(((x = t.when, x$1 = runtimeNano(), new $Int64(x.$high - x$1.$high, x.$low - x$1.$low))), new $Int64(0, 1000000), false);
  9763. if ((diff.$high > 0 || (diff.$high === 0 && diff.$low > 2147483647))) {
  9764. return;
  9765. }
  9766. if ((diff.$high < 0 || (diff.$high === 0 && diff.$low < 0))) {
  9767. diff = new $Int64(0, 0);
  9768. }
  9769. t.timeout = $global.setTimeout($externalize((function() {
  9770. var $ptr, x$2, x$3, x$4;
  9771. t.active = false;
  9772. $go(t.f, [t.arg, 0]);
  9773. if (!((x$2 = t.period, (x$2.$high === 0 && x$2.$low === 0)))) {
  9774. t.when = (x$3 = t.when, x$4 = t.period, new $Int64(x$3.$high + x$4.$high, x$3.$low + x$4.$low));
  9775. startTimer(t);
  9776. }
  9777. }), funcType), $externalize(new $Int64(diff.$high + 0, diff.$low + 1), $Int64));
  9778. };
  9779. stopTimer = function(t) {
  9780. var $ptr, t, wasActive;
  9781. $global.clearTimeout(t.timeout);
  9782. wasActive = t.active;
  9783. t.active = false;
  9784. return wasActive;
  9785. };
  9786. startsWithLowerCase = function(str) {
  9787. var $ptr, c, str;
  9788. if (str.length === 0) {
  9789. return false;
  9790. }
  9791. c = str.charCodeAt(0);
  9792. return 97 <= c && c <= 122;
  9793. };
  9794. nextStdChunk = function(layout) {
  9795. var $ptr, _ref, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$16, _tmp$17, _tmp$18, _tmp$19, _tmp$2, _tmp$20, _tmp$21, _tmp$22, _tmp$23, _tmp$24, _tmp$25, _tmp$26, _tmp$27, _tmp$28, _tmp$29, _tmp$3, _tmp$30, _tmp$31, _tmp$32, _tmp$33, _tmp$34, _tmp$35, _tmp$36, _tmp$37, _tmp$38, _tmp$39, _tmp$4, _tmp$40, _tmp$41, _tmp$42, _tmp$43, _tmp$44, _tmp$45, _tmp$46, _tmp$47, _tmp$48, _tmp$49, _tmp$5, _tmp$50, _tmp$51, _tmp$52, _tmp$53, _tmp$54, _tmp$55, _tmp$56, _tmp$57, _tmp$58, _tmp$59, _tmp$6, _tmp$60, _tmp$61, _tmp$62, _tmp$63, _tmp$64, _tmp$65, _tmp$66, _tmp$67, _tmp$68, _tmp$69, _tmp$7, _tmp$70, _tmp$71, _tmp$72, _tmp$73, _tmp$74, _tmp$75, _tmp$76, _tmp$77, _tmp$78, _tmp$79, _tmp$8, _tmp$80, _tmp$9, c, ch, i, j, layout, prefix, std, std$1, suffix, x;
  9796. prefix = "";
  9797. std = 0;
  9798. suffix = "";
  9799. i = 0;
  9800. while (true) {
  9801. if (!(i < layout.length)) { break; }
  9802. c = (layout.charCodeAt(i) >> 0);
  9803. _ref = c;
  9804. if (_ref === 74) {
  9805. if (layout.length >= (i + 3 >> 0) && layout.substring(i, (i + 3 >> 0)) === "Jan") {
  9806. if (layout.length >= (i + 7 >> 0) && layout.substring(i, (i + 7 >> 0)) === "January") {
  9807. _tmp = layout.substring(0, i); _tmp$1 = 257; _tmp$2 = layout.substring((i + 7 >> 0)); prefix = _tmp; std = _tmp$1; suffix = _tmp$2;
  9808. return [prefix, std, suffix];
  9809. }
  9810. if (!startsWithLowerCase(layout.substring((i + 3 >> 0)))) {
  9811. _tmp$3 = layout.substring(0, i); _tmp$4 = 258; _tmp$5 = layout.substring((i + 3 >> 0)); prefix = _tmp$3; std = _tmp$4; suffix = _tmp$5;
  9812. return [prefix, std, suffix];
  9813. }
  9814. }
  9815. } else if (_ref === 77) {
  9816. if (layout.length >= (i + 3 >> 0)) {
  9817. if (layout.substring(i, (i + 3 >> 0)) === "Mon") {
  9818. if (layout.length >= (i + 6 >> 0) && layout.substring(i, (i + 6 >> 0)) === "Monday") {
  9819. _tmp$6 = layout.substring(0, i); _tmp$7 = 261; _tmp$8 = layout.substring((i + 6 >> 0)); prefix = _tmp$6; std = _tmp$7; suffix = _tmp$8;
  9820. return [prefix, std, suffix];
  9821. }
  9822. if (!startsWithLowerCase(layout.substring((i + 3 >> 0)))) {
  9823. _tmp$9 = layout.substring(0, i); _tmp$10 = 262; _tmp$11 = layout.substring((i + 3 >> 0)); prefix = _tmp$9; std = _tmp$10; suffix = _tmp$11;
  9824. return [prefix, std, suffix];
  9825. }
  9826. }
  9827. if (layout.substring(i, (i + 3 >> 0)) === "MST") {
  9828. _tmp$12 = layout.substring(0, i); _tmp$13 = 21; _tmp$14 = layout.substring((i + 3 >> 0)); prefix = _tmp$12; std = _tmp$13; suffix = _tmp$14;
  9829. return [prefix, std, suffix];
  9830. }
  9831. }
  9832. } else if (_ref === 48) {
  9833. if (layout.length >= (i + 2 >> 0) && 49 <= layout.charCodeAt((i + 1 >> 0)) && layout.charCodeAt((i + 1 >> 0)) <= 54) {
  9834. _tmp$15 = layout.substring(0, i); _tmp$16 = (x = layout.charCodeAt((i + 1 >> 0)) - 49 << 24 >>> 24, ((x < 0 || x >= std0x.length) ? $throwRuntimeError("index out of range") : std0x[x])); _tmp$17 = layout.substring((i + 2 >> 0)); prefix = _tmp$15; std = _tmp$16; suffix = _tmp$17;
  9835. return [prefix, std, suffix];
  9836. }
  9837. } else if (_ref === 49) {
  9838. if (layout.length >= (i + 2 >> 0) && (layout.charCodeAt((i + 1 >> 0)) === 53)) {
  9839. _tmp$18 = layout.substring(0, i); _tmp$19 = 522; _tmp$20 = layout.substring((i + 2 >> 0)); prefix = _tmp$18; std = _tmp$19; suffix = _tmp$20;
  9840. return [prefix, std, suffix];
  9841. }
  9842. _tmp$21 = layout.substring(0, i); _tmp$22 = 259; _tmp$23 = layout.substring((i + 1 >> 0)); prefix = _tmp$21; std = _tmp$22; suffix = _tmp$23;
  9843. return [prefix, std, suffix];
  9844. } else if (_ref === 50) {
  9845. if (layout.length >= (i + 4 >> 0) && layout.substring(i, (i + 4 >> 0)) === "2006") {
  9846. _tmp$24 = layout.substring(0, i); _tmp$25 = 273; _tmp$26 = layout.substring((i + 4 >> 0)); prefix = _tmp$24; std = _tmp$25; suffix = _tmp$26;
  9847. return [prefix, std, suffix];
  9848. }
  9849. _tmp$27 = layout.substring(0, i); _tmp$28 = 263; _tmp$29 = layout.substring((i + 1 >> 0)); prefix = _tmp$27; std = _tmp$28; suffix = _tmp$29;
  9850. return [prefix, std, suffix];
  9851. } else if (_ref === 95) {
  9852. if (layout.length >= (i + 2 >> 0) && (layout.charCodeAt((i + 1 >> 0)) === 50)) {
  9853. _tmp$30 = layout.substring(0, i); _tmp$31 = 264; _tmp$32 = layout.substring((i + 2 >> 0)); prefix = _tmp$30; std = _tmp$31; suffix = _tmp$32;
  9854. return [prefix, std, suffix];
  9855. }
  9856. } else if (_ref === 51) {
  9857. _tmp$33 = layout.substring(0, i); _tmp$34 = 523; _tmp$35 = layout.substring((i + 1 >> 0)); prefix = _tmp$33; std = _tmp$34; suffix = _tmp$35;
  9858. return [prefix, std, suffix];
  9859. } else if (_ref === 52) {
  9860. _tmp$36 = layout.substring(0, i); _tmp$37 = 525; _tmp$38 = layout.substring((i + 1 >> 0)); prefix = _tmp$36; std = _tmp$37; suffix = _tmp$38;
  9861. return [prefix, std, suffix];
  9862. } else if (_ref === 53) {
  9863. _tmp$39 = layout.substring(0, i); _tmp$40 = 527; _tmp$41 = layout.substring((i + 1 >> 0)); prefix = _tmp$39; std = _tmp$40; suffix = _tmp$41;
  9864. return [prefix, std, suffix];
  9865. } else if (_ref === 80) {
  9866. if (layout.length >= (i + 2 >> 0) && (layout.charCodeAt((i + 1 >> 0)) === 77)) {
  9867. _tmp$42 = layout.substring(0, i); _tmp$43 = 531; _tmp$44 = layout.substring((i + 2 >> 0)); prefix = _tmp$42; std = _tmp$43; suffix = _tmp$44;
  9868. return [prefix, std, suffix];
  9869. }
  9870. } else if (_ref === 112) {
  9871. if (layout.length >= (i + 2 >> 0) && (layout.charCodeAt((i + 1 >> 0)) === 109)) {
  9872. _tmp$45 = layout.substring(0, i); _tmp$46 = 532; _tmp$47 = layout.substring((i + 2 >> 0)); prefix = _tmp$45; std = _tmp$46; suffix = _tmp$47;
  9873. return [prefix, std, suffix];
  9874. }
  9875. } else if (_ref === 45) {
  9876. if (layout.length >= (i + 7 >> 0) && layout.substring(i, (i + 7 >> 0)) === "-070000") {
  9877. _tmp$48 = layout.substring(0, i); _tmp$49 = 27; _tmp$50 = layout.substring((i + 7 >> 0)); prefix = _tmp$48; std = _tmp$49; suffix = _tmp$50;
  9878. return [prefix, std, suffix];
  9879. }
  9880. if (layout.length >= (i + 9 >> 0) && layout.substring(i, (i + 9 >> 0)) === "-07:00:00") {
  9881. _tmp$51 = layout.substring(0, i); _tmp$52 = 30; _tmp$53 = layout.substring((i + 9 >> 0)); prefix = _tmp$51; std = _tmp$52; suffix = _tmp$53;
  9882. return [prefix, std, suffix];
  9883. }
  9884. if (layout.length >= (i + 5 >> 0) && layout.substring(i, (i + 5 >> 0)) === "-0700") {
  9885. _tmp$54 = layout.substring(0, i); _tmp$55 = 26; _tmp$56 = layout.substring((i + 5 >> 0)); prefix = _tmp$54; std = _tmp$55; suffix = _tmp$56;
  9886. return [prefix, std, suffix];
  9887. }
  9888. if (layout.length >= (i + 6 >> 0) && layout.substring(i, (i + 6 >> 0)) === "-07:00") {
  9889. _tmp$57 = layout.substring(0, i); _tmp$58 = 29; _tmp$59 = layout.substring((i + 6 >> 0)); prefix = _tmp$57; std = _tmp$58; suffix = _tmp$59;
  9890. return [prefix, std, suffix];
  9891. }
  9892. if (layout.length >= (i + 3 >> 0) && layout.substring(i, (i + 3 >> 0)) === "-07") {
  9893. _tmp$60 = layout.substring(0, i); _tmp$61 = 28; _tmp$62 = layout.substring((i + 3 >> 0)); prefix = _tmp$60; std = _tmp$61; suffix = _tmp$62;
  9894. return [prefix, std, suffix];
  9895. }
  9896. } else if (_ref === 90) {
  9897. if (layout.length >= (i + 7 >> 0) && layout.substring(i, (i + 7 >> 0)) === "Z070000") {
  9898. _tmp$63 = layout.substring(0, i); _tmp$64 = 23; _tmp$65 = layout.substring((i + 7 >> 0)); prefix = _tmp$63; std = _tmp$64; suffix = _tmp$65;
  9899. return [prefix, std, suffix];
  9900. }
  9901. if (layout.length >= (i + 9 >> 0) && layout.substring(i, (i + 9 >> 0)) === "Z07:00:00") {
  9902. _tmp$66 = layout.substring(0, i); _tmp$67 = 25; _tmp$68 = layout.substring((i + 9 >> 0)); prefix = _tmp$66; std = _tmp$67; suffix = _tmp$68;
  9903. return [prefix, std, suffix];
  9904. }
  9905. if (layout.length >= (i + 5 >> 0) && layout.substring(i, (i + 5 >> 0)) === "Z0700") {
  9906. _tmp$69 = layout.substring(0, i); _tmp$70 = 22; _tmp$71 = layout.substring((i + 5 >> 0)); prefix = _tmp$69; std = _tmp$70; suffix = _tmp$71;
  9907. return [prefix, std, suffix];
  9908. }
  9909. if (layout.length >= (i + 6 >> 0) && layout.substring(i, (i + 6 >> 0)) === "Z07:00") {
  9910. _tmp$72 = layout.substring(0, i); _tmp$73 = 24; _tmp$74 = layout.substring((i + 6 >> 0)); prefix = _tmp$72; std = _tmp$73; suffix = _tmp$74;
  9911. return [prefix, std, suffix];
  9912. }
  9913. } else if (_ref === 46) {
  9914. if ((i + 1 >> 0) < layout.length && ((layout.charCodeAt((i + 1 >> 0)) === 48) || (layout.charCodeAt((i + 1 >> 0)) === 57))) {
  9915. ch = layout.charCodeAt((i + 1 >> 0));
  9916. j = i + 1 >> 0;
  9917. while (true) {
  9918. if (!(j < layout.length && (layout.charCodeAt(j) === ch))) { break; }
  9919. j = j + (1) >> 0;
  9920. }
  9921. if (!isDigit(layout, j)) {
  9922. std$1 = 31;
  9923. if (layout.charCodeAt((i + 1 >> 0)) === 57) {
  9924. std$1 = 32;
  9925. }
  9926. std$1 = std$1 | ((((j - ((i + 1 >> 0)) >> 0)) << 16 >> 0));
  9927. _tmp$75 = layout.substring(0, i); _tmp$76 = std$1; _tmp$77 = layout.substring(j); prefix = _tmp$75; std = _tmp$76; suffix = _tmp$77;
  9928. return [prefix, std, suffix];
  9929. }
  9930. }
  9931. }
  9932. i = i + (1) >> 0;
  9933. }
  9934. _tmp$78 = layout; _tmp$79 = 0; _tmp$80 = ""; prefix = _tmp$78; std = _tmp$79; suffix = _tmp$80;
  9935. return [prefix, std, suffix];
  9936. };
  9937. match = function(s1, s2) {
  9938. var $ptr, c1, c2, i, s1, s2;
  9939. i = 0;
  9940. while (true) {
  9941. if (!(i < s1.length)) { break; }
  9942. c1 = s1.charCodeAt(i);
  9943. c2 = s2.charCodeAt(i);
  9944. if (!((c1 === c2))) {
  9945. c1 = (c1 | (32)) >>> 0;
  9946. c2 = (c2 | (32)) >>> 0;
  9947. if (!((c1 === c2)) || c1 < 97 || c1 > 122) {
  9948. return false;
  9949. }
  9950. }
  9951. i = i + (1) >> 0;
  9952. }
  9953. return true;
  9954. };
  9955. lookup = function(tab, val) {
  9956. var $ptr, _i, _ref, i, tab, v, val;
  9957. _ref = tab;
  9958. _i = 0;
  9959. while (true) {
  9960. if (!(_i < _ref.$length)) { break; }
  9961. i = _i;
  9962. v = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]);
  9963. if (val.length >= v.length && match(val.substring(0, v.length), v)) {
  9964. return [i, val.substring(v.length), $ifaceNil];
  9965. }
  9966. _i++;
  9967. }
  9968. return [-1, val, errBad];
  9969. };
  9970. appendUint = function(b, x, pad) {
  9971. var $ptr, _q, _q$1, _r, _r$1, b, buf, n, pad, x;
  9972. if (x < 10) {
  9973. if (!((pad === 0))) {
  9974. b = $append(b, pad);
  9975. }
  9976. return $append(b, ((48 + x >>> 0) << 24 >>> 24));
  9977. }
  9978. if (x < 100) {
  9979. b = $append(b, ((48 + (_q = x / 10, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >>> 0 : $throwRuntimeError("integer divide by zero")) >>> 0) << 24 >>> 24));
  9980. b = $append(b, ((48 + (_r = x % 10, _r === _r ? _r : $throwRuntimeError("integer divide by zero")) >>> 0) << 24 >>> 24));
  9981. return b;
  9982. }
  9983. buf = $clone(arrayType$1.zero(), arrayType$1);
  9984. n = 32;
  9985. if (x === 0) {
  9986. return $append(b, 48);
  9987. }
  9988. while (true) {
  9989. if (!(x >= 10)) { break; }
  9990. n = n - (1) >> 0;
  9991. ((n < 0 || n >= buf.length) ? $throwRuntimeError("index out of range") : buf[n] = (((_r$1 = x % 10, _r$1 === _r$1 ? _r$1 : $throwRuntimeError("integer divide by zero")) + 48 >>> 0) << 24 >>> 24));
  9992. x = (_q$1 = x / (10), (_q$1 === _q$1 && _q$1 !== 1/0 && _q$1 !== -1/0) ? _q$1 >>> 0 : $throwRuntimeError("integer divide by zero"));
  9993. }
  9994. n = n - (1) >> 0;
  9995. ((n < 0 || n >= buf.length) ? $throwRuntimeError("index out of range") : buf[n] = ((x + 48 >>> 0) << 24 >>> 24));
  9996. return $appendSlice(b, $subslice(new sliceType$3(buf), n));
  9997. };
  9998. atoi = function(s) {
  9999. var $ptr, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple$1, err, neg, q, rem, s, x;
  10000. x = 0;
  10001. err = $ifaceNil;
  10002. neg = false;
  10003. if (!(s === "") && ((s.charCodeAt(0) === 45) || (s.charCodeAt(0) === 43))) {
  10004. neg = s.charCodeAt(0) === 45;
  10005. s = s.substring(1);
  10006. }
  10007. _tuple$1 = leadingInt(s); q = _tuple$1[0]; rem = _tuple$1[1]; err = _tuple$1[2];
  10008. x = ((q.$low + ((q.$high >> 31) * 4294967296)) >> 0);
  10009. if (!($interfaceIsEqual(err, $ifaceNil)) || !(rem === "")) {
  10010. _tmp = 0; _tmp$1 = atoiError; x = _tmp; err = _tmp$1;
  10011. return [x, err];
  10012. }
  10013. if (neg) {
  10014. x = -x;
  10015. }
  10016. _tmp$2 = x; _tmp$3 = $ifaceNil; x = _tmp$2; err = _tmp$3;
  10017. return [x, err];
  10018. };
  10019. formatNano = function(b, nanosec, n, trim) {
  10020. var $ptr, _q, _r, b, buf, n, nanosec, start, trim, u, x;
  10021. u = nanosec;
  10022. buf = $clone(arrayType$2.zero(), arrayType$2);
  10023. start = 9;
  10024. while (true) {
  10025. if (!(start > 0)) { break; }
  10026. start = start - (1) >> 0;
  10027. ((start < 0 || start >= buf.length) ? $throwRuntimeError("index out of range") : buf[start] = (((_r = u % 10, _r === _r ? _r : $throwRuntimeError("integer divide by zero")) + 48 >>> 0) << 24 >>> 24));
  10028. u = (_q = u / (10), (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >>> 0 : $throwRuntimeError("integer divide by zero"));
  10029. }
  10030. if (n > 9) {
  10031. n = 9;
  10032. }
  10033. if (trim) {
  10034. while (true) {
  10035. if (!(n > 0 && ((x = n - 1 >> 0, ((x < 0 || x >= buf.length) ? $throwRuntimeError("index out of range") : buf[x])) === 48))) { break; }
  10036. n = n - (1) >> 0;
  10037. }
  10038. if (n === 0) {
  10039. return b;
  10040. }
  10041. }
  10042. b = $append(b, 46);
  10043. return $appendSlice(b, $subslice(new sliceType$3(buf), 0, n));
  10044. };
  10045. Time.ptr.prototype.String = function() {
  10046. var $ptr, _r, t, $s, $r;
  10047. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  10048. t = $clone(this, Time);
  10049. _r = t.Format("2006-01-02 15:04:05.999999999 -0700 MST"); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  10050. return _r;
  10051. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Time.ptr.prototype.String }; } $f.$ptr = $ptr; $f._r = _r; $f.t = t; $f.$s = $s; $f.$r = $r; return $f;
  10052. };
  10053. Time.prototype.String = function() { return this.$val.String(); };
  10054. Time.ptr.prototype.Format = function(layout) {
  10055. var $ptr, _q, _q$1, _q$2, _q$3, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _ref, _tuple$1, _tuple$2, _tuple$3, _tuple$4, abs, absoffset, b, buf, day, hour, hr, hr$1, layout, m, max, min, month, name, offset, prefix, s, sec, std, suffix, t, y, y$1, year, zone$1, zone$2, $s, $r;
  10056. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _q = $f._q; _q$1 = $f._q$1; _q$2 = $f._q$2; _q$3 = $f._q$3; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _ref = $f._ref; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; _tuple$4 = $f._tuple$4; abs = $f.abs; absoffset = $f.absoffset; b = $f.b; buf = $f.buf; day = $f.day; hour = $f.hour; hr = $f.hr; hr$1 = $f.hr$1; layout = $f.layout; m = $f.m; max = $f.max; min = $f.min; month = $f.month; name = $f.name; offset = $f.offset; prefix = $f.prefix; s = $f.s; sec = $f.sec; std = $f.std; suffix = $f.suffix; t = $f.t; y = $f.y; y$1 = $f.y$1; year = $f.year; zone$1 = $f.zone$1; zone$2 = $f.zone$2; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  10057. t = $clone(this, Time);
  10058. _r = t.locabs(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  10059. _tuple$1 = _r; name = _tuple$1[0]; offset = _tuple$1[1]; abs = _tuple$1[2];
  10060. year = -1;
  10061. month = 0;
  10062. day = 0;
  10063. hour = -1;
  10064. min = 0;
  10065. sec = 0;
  10066. b = sliceType$3.nil;
  10067. buf = $clone(arrayType$3.zero(), arrayType$3);
  10068. max = layout.length + 10 >> 0;
  10069. if (max <= 64) {
  10070. b = $subslice(new sliceType$3(buf), 0, 0);
  10071. } else {
  10072. b = $makeSlice(sliceType$3, 0, max);
  10073. }
  10074. while (true) {
  10075. if (!(!(layout === ""))) { break; }
  10076. _tuple$2 = nextStdChunk(layout); prefix = _tuple$2[0]; std = _tuple$2[1]; suffix = _tuple$2[2];
  10077. if (!(prefix === "")) {
  10078. b = $appendSlice(b, new sliceType$3($stringToBytes(prefix)));
  10079. }
  10080. if (std === 0) {
  10081. break;
  10082. }
  10083. layout = suffix;
  10084. if (year < 0 && !(((std & 256) === 0))) {
  10085. _tuple$3 = absDate(abs, true); year = _tuple$3[0]; month = _tuple$3[1]; day = _tuple$3[2];
  10086. }
  10087. if (hour < 0 && !(((std & 512) === 0))) {
  10088. _tuple$4 = absClock(abs); hour = _tuple$4[0]; min = _tuple$4[1]; sec = _tuple$4[2];
  10089. }
  10090. _ref = std & 65535;
  10091. switch (0) { default: if (_ref === 274) {
  10092. y = year;
  10093. if (y < 0) {
  10094. y = -y;
  10095. }
  10096. b = appendUint(b, ((_r$1 = y % 100, _r$1 === _r$1 ? _r$1 : $throwRuntimeError("integer divide by zero")) >>> 0), 48);
  10097. } else if (_ref === 273) {
  10098. y$1 = year;
  10099. if (year <= -1000) {
  10100. b = $append(b, 45);
  10101. y$1 = -y$1;
  10102. } else if (year <= -100) {
  10103. b = $appendSlice(b, new sliceType$3($stringToBytes("-0")));
  10104. y$1 = -y$1;
  10105. } else if (year <= -10) {
  10106. b = $appendSlice(b, new sliceType$3($stringToBytes("-00")));
  10107. y$1 = -y$1;
  10108. } else if (year < 0) {
  10109. b = $appendSlice(b, new sliceType$3($stringToBytes("-000")));
  10110. y$1 = -y$1;
  10111. } else if (year < 10) {
  10112. b = $appendSlice(b, new sliceType$3($stringToBytes("000")));
  10113. } else if (year < 100) {
  10114. b = $appendSlice(b, new sliceType$3($stringToBytes("00")));
  10115. } else if (year < 1000) {
  10116. b = $append(b, 48);
  10117. }
  10118. b = appendUint(b, (y$1 >>> 0), 0);
  10119. } else if (_ref === 258) {
  10120. b = $appendSlice(b, new sliceType$3($stringToBytes(new Month(month).String().substring(0, 3))));
  10121. } else if (_ref === 257) {
  10122. m = new Month(month).String();
  10123. b = $appendSlice(b, new sliceType$3($stringToBytes(m)));
  10124. } else if (_ref === 259) {
  10125. b = appendUint(b, (month >>> 0), 0);
  10126. } else if (_ref === 260) {
  10127. b = appendUint(b, (month >>> 0), 48);
  10128. } else if (_ref === 262) {
  10129. b = $appendSlice(b, new sliceType$3($stringToBytes(new Weekday(absWeekday(abs)).String().substring(0, 3))));
  10130. } else if (_ref === 261) {
  10131. s = new Weekday(absWeekday(abs)).String();
  10132. b = $appendSlice(b, new sliceType$3($stringToBytes(s)));
  10133. } else if (_ref === 263) {
  10134. b = appendUint(b, (day >>> 0), 0);
  10135. } else if (_ref === 264) {
  10136. b = appendUint(b, (day >>> 0), 32);
  10137. } else if (_ref === 265) {
  10138. b = appendUint(b, (day >>> 0), 48);
  10139. } else if (_ref === 522) {
  10140. b = appendUint(b, (hour >>> 0), 48);
  10141. } else if (_ref === 523) {
  10142. hr = (_r$2 = hour % 12, _r$2 === _r$2 ? _r$2 : $throwRuntimeError("integer divide by zero"));
  10143. if (hr === 0) {
  10144. hr = 12;
  10145. }
  10146. b = appendUint(b, (hr >>> 0), 0);
  10147. } else if (_ref === 524) {
  10148. hr$1 = (_r$3 = hour % 12, _r$3 === _r$3 ? _r$3 : $throwRuntimeError("integer divide by zero"));
  10149. if (hr$1 === 0) {
  10150. hr$1 = 12;
  10151. }
  10152. b = appendUint(b, (hr$1 >>> 0), 48);
  10153. } else if (_ref === 525) {
  10154. b = appendUint(b, (min >>> 0), 0);
  10155. } else if (_ref === 526) {
  10156. b = appendUint(b, (min >>> 0), 48);
  10157. } else if (_ref === 527) {
  10158. b = appendUint(b, (sec >>> 0), 0);
  10159. } else if (_ref === 528) {
  10160. b = appendUint(b, (sec >>> 0), 48);
  10161. } else if (_ref === 531) {
  10162. if (hour >= 12) {
  10163. b = $appendSlice(b, new sliceType$3($stringToBytes("PM")));
  10164. } else {
  10165. b = $appendSlice(b, new sliceType$3($stringToBytes("AM")));
  10166. }
  10167. } else if (_ref === 532) {
  10168. if (hour >= 12) {
  10169. b = $appendSlice(b, new sliceType$3($stringToBytes("pm")));
  10170. } else {
  10171. b = $appendSlice(b, new sliceType$3($stringToBytes("am")));
  10172. }
  10173. } else if (_ref === 22 || _ref === 24 || _ref === 23 || _ref === 25 || _ref === 26 || _ref === 29 || _ref === 27 || _ref === 30) {
  10174. if ((offset === 0) && ((std === 22) || (std === 24) || (std === 23) || (std === 25))) {
  10175. b = $append(b, 90);
  10176. break;
  10177. }
  10178. zone$1 = (_q = offset / 60, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero"));
  10179. absoffset = offset;
  10180. if (zone$1 < 0) {
  10181. b = $append(b, 45);
  10182. zone$1 = -zone$1;
  10183. absoffset = -absoffset;
  10184. } else {
  10185. b = $append(b, 43);
  10186. }
  10187. b = appendUint(b, ((_q$1 = zone$1 / 60, (_q$1 === _q$1 && _q$1 !== 1/0 && _q$1 !== -1/0) ? _q$1 >> 0 : $throwRuntimeError("integer divide by zero")) >>> 0), 48);
  10188. if ((std === 24) || (std === 29) || (std === 25) || (std === 30)) {
  10189. b = $append(b, 58);
  10190. }
  10191. b = appendUint(b, ((_r$4 = zone$1 % 60, _r$4 === _r$4 ? _r$4 : $throwRuntimeError("integer divide by zero")) >>> 0), 48);
  10192. if ((std === 23) || (std === 27) || (std === 30) || (std === 25)) {
  10193. if ((std === 30) || (std === 25)) {
  10194. b = $append(b, 58);
  10195. }
  10196. b = appendUint(b, ((_r$5 = absoffset % 60, _r$5 === _r$5 ? _r$5 : $throwRuntimeError("integer divide by zero")) >>> 0), 48);
  10197. }
  10198. } else if (_ref === 21) {
  10199. if (!(name === "")) {
  10200. b = $appendSlice(b, new sliceType$3($stringToBytes(name)));
  10201. break;
  10202. }
  10203. zone$2 = (_q$2 = offset / 60, (_q$2 === _q$2 && _q$2 !== 1/0 && _q$2 !== -1/0) ? _q$2 >> 0 : $throwRuntimeError("integer divide by zero"));
  10204. if (zone$2 < 0) {
  10205. b = $append(b, 45);
  10206. zone$2 = -zone$2;
  10207. } else {
  10208. b = $append(b, 43);
  10209. }
  10210. b = appendUint(b, ((_q$3 = zone$2 / 60, (_q$3 === _q$3 && _q$3 !== 1/0 && _q$3 !== -1/0) ? _q$3 >> 0 : $throwRuntimeError("integer divide by zero")) >>> 0), 48);
  10211. b = appendUint(b, ((_r$6 = zone$2 % 60, _r$6 === _r$6 ? _r$6 : $throwRuntimeError("integer divide by zero")) >>> 0), 48);
  10212. } else if (_ref === 31 || _ref === 32) {
  10213. b = formatNano(b, (t.Nanosecond() >>> 0), std >> 16 >> 0, (std & 65535) === 32);
  10214. } }
  10215. }
  10216. return $bytesToString(b);
  10217. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Time.ptr.prototype.Format }; } $f.$ptr = $ptr; $f._q = _q; $f._q$1 = _q$1; $f._q$2 = _q$2; $f._q$3 = _q$3; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._ref = _ref; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f._tuple$4 = _tuple$4; $f.abs = abs; $f.absoffset = absoffset; $f.b = b; $f.buf = buf; $f.day = day; $f.hour = hour; $f.hr = hr; $f.hr$1 = hr$1; $f.layout = layout; $f.m = m; $f.max = max; $f.min = min; $f.month = month; $f.name = name; $f.offset = offset; $f.prefix = prefix; $f.s = s; $f.sec = sec; $f.std = std; $f.suffix = suffix; $f.t = t; $f.y = y; $f.y$1 = y$1; $f.year = year; $f.zone$1 = zone$1; $f.zone$2 = zone$2; $f.$s = $s; $f.$r = $r; return $f;
  10218. };
  10219. Time.prototype.Format = function(layout) { return this.$val.Format(layout); };
  10220. quote = function(s) {
  10221. var $ptr, s;
  10222. return "\"" + s + "\"";
  10223. };
  10224. ParseError.ptr.prototype.Error = function() {
  10225. var $ptr, e;
  10226. e = this;
  10227. if (e.Message === "") {
  10228. return "parsing time " + quote(e.Value) + " as " + quote(e.Layout) + ": cannot parse " + quote(e.ValueElem) + " as " + quote(e.LayoutElem);
  10229. }
  10230. return "parsing time " + quote(e.Value) + e.Message;
  10231. };
  10232. ParseError.prototype.Error = function() { return this.$val.Error(); };
  10233. isDigit = function(s, i) {
  10234. var $ptr, c, i, s;
  10235. if (s.length <= i) {
  10236. return false;
  10237. }
  10238. c = s.charCodeAt(i);
  10239. return 48 <= c && c <= 57;
  10240. };
  10241. getnum = function(s, fixed) {
  10242. var $ptr, fixed, s;
  10243. if (!isDigit(s, 0)) {
  10244. return [0, s, errBad];
  10245. }
  10246. if (!isDigit(s, 1)) {
  10247. if (fixed) {
  10248. return [0, s, errBad];
  10249. }
  10250. return [((s.charCodeAt(0) - 48 << 24 >>> 24) >> 0), s.substring(1), $ifaceNil];
  10251. }
  10252. return [(((s.charCodeAt(0) - 48 << 24 >>> 24) >> 0) * 10 >> 0) + ((s.charCodeAt(1) - 48 << 24 >>> 24) >> 0) >> 0, s.substring(2), $ifaceNil];
  10253. };
  10254. cutspace = function(s) {
  10255. var $ptr, s;
  10256. while (true) {
  10257. if (!(s.length > 0 && (s.charCodeAt(0) === 32))) { break; }
  10258. s = s.substring(1);
  10259. }
  10260. return s;
  10261. };
  10262. skip = function(value, prefix) {
  10263. var $ptr, prefix, value;
  10264. while (true) {
  10265. if (!(prefix.length > 0)) { break; }
  10266. if (prefix.charCodeAt(0) === 32) {
  10267. if (value.length > 0 && !((value.charCodeAt(0) === 32))) {
  10268. return [value, errBad];
  10269. }
  10270. prefix = cutspace(prefix);
  10271. value = cutspace(value);
  10272. continue;
  10273. }
  10274. if ((value.length === 0) || !((value.charCodeAt(0) === prefix.charCodeAt(0)))) {
  10275. return [value, errBad];
  10276. }
  10277. prefix = prefix.substring(1);
  10278. value = value.substring(1);
  10279. }
  10280. return [value, $ifaceNil];
  10281. };
  10282. Parse = function(layout, value) {
  10283. var $ptr, _r, layout, value, $s, $r;
  10284. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; layout = $f.layout; value = $f.value; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  10285. _r = parse(layout, value, $pkg.UTC, $pkg.Local); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  10286. return _r;
  10287. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Parse }; } $f.$ptr = $ptr; $f._r = _r; $f.layout = layout; $f.value = value; $f.$s = $s; $f.$r = $r; return $f;
  10288. };
  10289. $pkg.Parse = Parse;
  10290. parse = function(layout, value, defaultLocation, local) {
  10291. var $ptr, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _ref, _ref$1, _ref$2, _ref$3, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$16, _tmp$17, _tmp$18, _tmp$19, _tmp$2, _tmp$20, _tmp$21, _tmp$22, _tmp$23, _tmp$24, _tmp$25, _tmp$26, _tmp$27, _tmp$28, _tmp$29, _tmp$3, _tmp$30, _tmp$31, _tmp$32, _tmp$33, _tmp$34, _tmp$35, _tmp$36, _tmp$37, _tmp$38, _tmp$39, _tmp$4, _tmp$40, _tmp$41, _tmp$42, _tmp$43, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple$1, _tuple$10, _tuple$11, _tuple$12, _tuple$13, _tuple$14, _tuple$15, _tuple$16, _tuple$17, _tuple$18, _tuple$19, _tuple$2, _tuple$20, _tuple$21, _tuple$22, _tuple$23, _tuple$24, _tuple$25, _tuple$3, _tuple$4, _tuple$5, _tuple$6, _tuple$7, _tuple$8, _tuple$9, alayout, amSet, avalue, day, defaultLocation, err, hour, hour$1, hr, i, layout, local, min, min$1, mm, month, n, n$1, name, ndigit, nsec, offset, offset$1, ok, ok$1, p, pmSet, prefix, rangeErrString, sec, seconds, sign, ss, std, stdstr, suffix, t, t$1, value, x, x$1, x$2, x$3, x$4, x$5, year, z, zoneName, zoneOffset, $s, $r;
  10292. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _ref = $f._ref; _ref$1 = $f._ref$1; _ref$2 = $f._ref$2; _ref$3 = $f._ref$3; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$10 = $f._tmp$10; _tmp$11 = $f._tmp$11; _tmp$12 = $f._tmp$12; _tmp$13 = $f._tmp$13; _tmp$14 = $f._tmp$14; _tmp$15 = $f._tmp$15; _tmp$16 = $f._tmp$16; _tmp$17 = $f._tmp$17; _tmp$18 = $f._tmp$18; _tmp$19 = $f._tmp$19; _tmp$2 = $f._tmp$2; _tmp$20 = $f._tmp$20; _tmp$21 = $f._tmp$21; _tmp$22 = $f._tmp$22; _tmp$23 = $f._tmp$23; _tmp$24 = $f._tmp$24; _tmp$25 = $f._tmp$25; _tmp$26 = $f._tmp$26; _tmp$27 = $f._tmp$27; _tmp$28 = $f._tmp$28; _tmp$29 = $f._tmp$29; _tmp$3 = $f._tmp$3; _tmp$30 = $f._tmp$30; _tmp$31 = $f._tmp$31; _tmp$32 = $f._tmp$32; _tmp$33 = $f._tmp$33; _tmp$34 = $f._tmp$34; _tmp$35 = $f._tmp$35; _tmp$36 = $f._tmp$36; _tmp$37 = $f._tmp$37; _tmp$38 = $f._tmp$38; _tmp$39 = $f._tmp$39; _tmp$4 = $f._tmp$4; _tmp$40 = $f._tmp$40; _tmp$41 = $f._tmp$41; _tmp$42 = $f._tmp$42; _tmp$43 = $f._tmp$43; _tmp$5 = $f._tmp$5; _tmp$6 = $f._tmp$6; _tmp$7 = $f._tmp$7; _tmp$8 = $f._tmp$8; _tmp$9 = $f._tmp$9; _tuple$1 = $f._tuple$1; _tuple$10 = $f._tuple$10; _tuple$11 = $f._tuple$11; _tuple$12 = $f._tuple$12; _tuple$13 = $f._tuple$13; _tuple$14 = $f._tuple$14; _tuple$15 = $f._tuple$15; _tuple$16 = $f._tuple$16; _tuple$17 = $f._tuple$17; _tuple$18 = $f._tuple$18; _tuple$19 = $f._tuple$19; _tuple$2 = $f._tuple$2; _tuple$20 = $f._tuple$20; _tuple$21 = $f._tuple$21; _tuple$22 = $f._tuple$22; _tuple$23 = $f._tuple$23; _tuple$24 = $f._tuple$24; _tuple$25 = $f._tuple$25; _tuple$3 = $f._tuple$3; _tuple$4 = $f._tuple$4; _tuple$5 = $f._tuple$5; _tuple$6 = $f._tuple$6; _tuple$7 = $f._tuple$7; _tuple$8 = $f._tuple$8; _tuple$9 = $f._tuple$9; alayout = $f.alayout; amSet = $f.amSet; avalue = $f.avalue; day = $f.day; defaultLocation = $f.defaultLocation; err = $f.err; hour = $f.hour; hour$1 = $f.hour$1; hr = $f.hr; i = $f.i; layout = $f.layout; local = $f.local; min = $f.min; min$1 = $f.min$1; mm = $f.mm; month = $f.month; n = $f.n; n$1 = $f.n$1; name = $f.name; ndigit = $f.ndigit; nsec = $f.nsec; offset = $f.offset; offset$1 = $f.offset$1; ok = $f.ok; ok$1 = $f.ok$1; p = $f.p; pmSet = $f.pmSet; prefix = $f.prefix; rangeErrString = $f.rangeErrString; sec = $f.sec; seconds = $f.seconds; sign = $f.sign; ss = $f.ss; std = $f.std; stdstr = $f.stdstr; suffix = $f.suffix; t = $f.t; t$1 = $f.t$1; value = $f.value; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; x$3 = $f.x$3; x$4 = $f.x$4; x$5 = $f.x$5; year = $f.year; z = $f.z; zoneName = $f.zoneName; zoneOffset = $f.zoneOffset; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  10293. _tmp = layout; _tmp$1 = value; alayout = _tmp; avalue = _tmp$1;
  10294. rangeErrString = "";
  10295. amSet = false;
  10296. pmSet = false;
  10297. year = 0;
  10298. month = 1;
  10299. day = 1;
  10300. hour = 0;
  10301. min = 0;
  10302. sec = 0;
  10303. nsec = 0;
  10304. z = ptrType$1.nil;
  10305. zoneOffset = -1;
  10306. zoneName = "";
  10307. while (true) {
  10308. err = $ifaceNil;
  10309. _tuple$1 = nextStdChunk(layout); prefix = _tuple$1[0]; std = _tuple$1[1]; suffix = _tuple$1[2];
  10310. stdstr = layout.substring(prefix.length, (layout.length - suffix.length >> 0));
  10311. _tuple$2 = skip(value, prefix); value = _tuple$2[0]; err = _tuple$2[1];
  10312. if (!($interfaceIsEqual(err, $ifaceNil))) {
  10313. return [new Time.ptr(new $Int64(0, 0), 0, ptrType$1.nil), new ParseError.ptr(alayout, avalue, prefix, value, "")];
  10314. }
  10315. if (std === 0) {
  10316. if (!((value.length === 0))) {
  10317. return [new Time.ptr(new $Int64(0, 0), 0, ptrType$1.nil), new ParseError.ptr(alayout, avalue, "", value, ": extra text: " + value)];
  10318. }
  10319. break;
  10320. }
  10321. layout = suffix;
  10322. p = "";
  10323. _ref = std & 65535;
  10324. switch (0) { default: if (_ref === 274) {
  10325. if (value.length < 2) {
  10326. err = errBad;
  10327. break;
  10328. }
  10329. _tmp$2 = value.substring(0, 2); _tmp$3 = value.substring(2); p = _tmp$2; value = _tmp$3;
  10330. _tuple$3 = atoi(p); year = _tuple$3[0]; err = _tuple$3[1];
  10331. if (year >= 69) {
  10332. year = year + (1900) >> 0;
  10333. } else {
  10334. year = year + (2000) >> 0;
  10335. }
  10336. } else if (_ref === 273) {
  10337. if (value.length < 4 || !isDigit(value, 0)) {
  10338. err = errBad;
  10339. break;
  10340. }
  10341. _tmp$4 = value.substring(0, 4); _tmp$5 = value.substring(4); p = _tmp$4; value = _tmp$5;
  10342. _tuple$4 = atoi(p); year = _tuple$4[0]; err = _tuple$4[1];
  10343. } else if (_ref === 258) {
  10344. _tuple$5 = lookup(shortMonthNames, value); month = _tuple$5[0]; value = _tuple$5[1]; err = _tuple$5[2];
  10345. } else if (_ref === 257) {
  10346. _tuple$6 = lookup(longMonthNames, value); month = _tuple$6[0]; value = _tuple$6[1]; err = _tuple$6[2];
  10347. } else if (_ref === 259 || _ref === 260) {
  10348. _tuple$7 = getnum(value, std === 260); month = _tuple$7[0]; value = _tuple$7[1]; err = _tuple$7[2];
  10349. if (month <= 0 || 12 < month) {
  10350. rangeErrString = "month";
  10351. }
  10352. } else if (_ref === 262) {
  10353. _tuple$8 = lookup(shortDayNames, value); value = _tuple$8[1]; err = _tuple$8[2];
  10354. } else if (_ref === 261) {
  10355. _tuple$9 = lookup(longDayNames, value); value = _tuple$9[1]; err = _tuple$9[2];
  10356. } else if (_ref === 263 || _ref === 264 || _ref === 265) {
  10357. if ((std === 264) && value.length > 0 && (value.charCodeAt(0) === 32)) {
  10358. value = value.substring(1);
  10359. }
  10360. _tuple$10 = getnum(value, std === 265); day = _tuple$10[0]; value = _tuple$10[1]; err = _tuple$10[2];
  10361. if (day < 0 || 31 < day) {
  10362. rangeErrString = "day";
  10363. }
  10364. } else if (_ref === 522) {
  10365. _tuple$11 = getnum(value, false); hour = _tuple$11[0]; value = _tuple$11[1]; err = _tuple$11[2];
  10366. if (hour < 0 || 24 <= hour) {
  10367. rangeErrString = "hour";
  10368. }
  10369. } else if (_ref === 523 || _ref === 524) {
  10370. _tuple$12 = getnum(value, std === 524); hour = _tuple$12[0]; value = _tuple$12[1]; err = _tuple$12[2];
  10371. if (hour < 0 || 12 < hour) {
  10372. rangeErrString = "hour";
  10373. }
  10374. } else if (_ref === 525 || _ref === 526) {
  10375. _tuple$13 = getnum(value, std === 526); min = _tuple$13[0]; value = _tuple$13[1]; err = _tuple$13[2];
  10376. if (min < 0 || 60 <= min) {
  10377. rangeErrString = "minute";
  10378. }
  10379. } else if (_ref === 527 || _ref === 528) {
  10380. _tuple$14 = getnum(value, std === 528); sec = _tuple$14[0]; value = _tuple$14[1]; err = _tuple$14[2];
  10381. if (sec < 0 || 60 <= sec) {
  10382. rangeErrString = "second";
  10383. }
  10384. if (value.length >= 2 && (value.charCodeAt(0) === 46) && isDigit(value, 1)) {
  10385. _tuple$15 = nextStdChunk(layout); std = _tuple$15[1];
  10386. std = std & (65535);
  10387. if ((std === 31) || (std === 32)) {
  10388. break;
  10389. }
  10390. n = 2;
  10391. while (true) {
  10392. if (!(n < value.length && isDigit(value, n))) { break; }
  10393. n = n + (1) >> 0;
  10394. }
  10395. _tuple$16 = parseNanoseconds(value, n); nsec = _tuple$16[0]; rangeErrString = _tuple$16[1]; err = _tuple$16[2];
  10396. value = value.substring(n);
  10397. }
  10398. } else if (_ref === 531) {
  10399. if (value.length < 2) {
  10400. err = errBad;
  10401. break;
  10402. }
  10403. _tmp$6 = value.substring(0, 2); _tmp$7 = value.substring(2); p = _tmp$6; value = _tmp$7;
  10404. _ref$1 = p;
  10405. if (_ref$1 === "PM") {
  10406. pmSet = true;
  10407. } else if (_ref$1 === "AM") {
  10408. amSet = true;
  10409. } else {
  10410. err = errBad;
  10411. }
  10412. } else if (_ref === 532) {
  10413. if (value.length < 2) {
  10414. err = errBad;
  10415. break;
  10416. }
  10417. _tmp$8 = value.substring(0, 2); _tmp$9 = value.substring(2); p = _tmp$8; value = _tmp$9;
  10418. _ref$2 = p;
  10419. if (_ref$2 === "pm") {
  10420. pmSet = true;
  10421. } else if (_ref$2 === "am") {
  10422. amSet = true;
  10423. } else {
  10424. err = errBad;
  10425. }
  10426. } else if (_ref === 22 || _ref === 24 || _ref === 23 || _ref === 25 || _ref === 26 || _ref === 28 || _ref === 29 || _ref === 27 || _ref === 30) {
  10427. if (((std === 22) || (std === 24)) && value.length >= 1 && (value.charCodeAt(0) === 90)) {
  10428. value = value.substring(1);
  10429. z = $pkg.UTC;
  10430. break;
  10431. }
  10432. _tmp$10 = ""; _tmp$11 = ""; _tmp$12 = ""; _tmp$13 = ""; sign = _tmp$10; hour$1 = _tmp$11; min$1 = _tmp$12; seconds = _tmp$13;
  10433. if ((std === 24) || (std === 29)) {
  10434. if (value.length < 6) {
  10435. err = errBad;
  10436. break;
  10437. }
  10438. if (!((value.charCodeAt(3) === 58))) {
  10439. err = errBad;
  10440. break;
  10441. }
  10442. _tmp$14 = value.substring(0, 1); _tmp$15 = value.substring(1, 3); _tmp$16 = value.substring(4, 6); _tmp$17 = "00"; _tmp$18 = value.substring(6); sign = _tmp$14; hour$1 = _tmp$15; min$1 = _tmp$16; seconds = _tmp$17; value = _tmp$18;
  10443. } else if (std === 28) {
  10444. if (value.length < 3) {
  10445. err = errBad;
  10446. break;
  10447. }
  10448. _tmp$19 = value.substring(0, 1); _tmp$20 = value.substring(1, 3); _tmp$21 = "00"; _tmp$22 = "00"; _tmp$23 = value.substring(3); sign = _tmp$19; hour$1 = _tmp$20; min$1 = _tmp$21; seconds = _tmp$22; value = _tmp$23;
  10449. } else if ((std === 25) || (std === 30)) {
  10450. if (value.length < 9) {
  10451. err = errBad;
  10452. break;
  10453. }
  10454. if (!((value.charCodeAt(3) === 58)) || !((value.charCodeAt(6) === 58))) {
  10455. err = errBad;
  10456. break;
  10457. }
  10458. _tmp$24 = value.substring(0, 1); _tmp$25 = value.substring(1, 3); _tmp$26 = value.substring(4, 6); _tmp$27 = value.substring(7, 9); _tmp$28 = value.substring(9); sign = _tmp$24; hour$1 = _tmp$25; min$1 = _tmp$26; seconds = _tmp$27; value = _tmp$28;
  10459. } else if ((std === 23) || (std === 27)) {
  10460. if (value.length < 7) {
  10461. err = errBad;
  10462. break;
  10463. }
  10464. _tmp$29 = value.substring(0, 1); _tmp$30 = value.substring(1, 3); _tmp$31 = value.substring(3, 5); _tmp$32 = value.substring(5, 7); _tmp$33 = value.substring(7); sign = _tmp$29; hour$1 = _tmp$30; min$1 = _tmp$31; seconds = _tmp$32; value = _tmp$33;
  10465. } else {
  10466. if (value.length < 5) {
  10467. err = errBad;
  10468. break;
  10469. }
  10470. _tmp$34 = value.substring(0, 1); _tmp$35 = value.substring(1, 3); _tmp$36 = value.substring(3, 5); _tmp$37 = "00"; _tmp$38 = value.substring(5); sign = _tmp$34; hour$1 = _tmp$35; min$1 = _tmp$36; seconds = _tmp$37; value = _tmp$38;
  10471. }
  10472. _tmp$39 = 0; _tmp$40 = 0; _tmp$41 = 0; hr = _tmp$39; mm = _tmp$40; ss = _tmp$41;
  10473. _tuple$17 = atoi(hour$1); hr = _tuple$17[0]; err = _tuple$17[1];
  10474. if ($interfaceIsEqual(err, $ifaceNil)) {
  10475. _tuple$18 = atoi(min$1); mm = _tuple$18[0]; err = _tuple$18[1];
  10476. }
  10477. if ($interfaceIsEqual(err, $ifaceNil)) {
  10478. _tuple$19 = atoi(seconds); ss = _tuple$19[0]; err = _tuple$19[1];
  10479. }
  10480. zoneOffset = ((((hr * 60 >> 0) + mm >> 0)) * 60 >> 0) + ss >> 0;
  10481. _ref$3 = sign.charCodeAt(0);
  10482. if (_ref$3 === 43) {
  10483. } else if (_ref$3 === 45) {
  10484. zoneOffset = -zoneOffset;
  10485. } else {
  10486. err = errBad;
  10487. }
  10488. } else if (_ref === 21) {
  10489. if (value.length >= 3 && value.substring(0, 3) === "UTC") {
  10490. z = $pkg.UTC;
  10491. value = value.substring(3);
  10492. break;
  10493. }
  10494. _tuple$20 = parseTimeZone(value); n$1 = _tuple$20[0]; ok = _tuple$20[1];
  10495. if (!ok) {
  10496. err = errBad;
  10497. break;
  10498. }
  10499. _tmp$42 = value.substring(0, n$1); _tmp$43 = value.substring(n$1); zoneName = _tmp$42; value = _tmp$43;
  10500. } else if (_ref === 31) {
  10501. ndigit = 1 + ((std >> 16 >> 0)) >> 0;
  10502. if (value.length < ndigit) {
  10503. err = errBad;
  10504. break;
  10505. }
  10506. _tuple$21 = parseNanoseconds(value, ndigit); nsec = _tuple$21[0]; rangeErrString = _tuple$21[1]; err = _tuple$21[2];
  10507. value = value.substring(ndigit);
  10508. } else if (_ref === 32) {
  10509. if (value.length < 2 || !((value.charCodeAt(0) === 46)) || value.charCodeAt(1) < 48 || 57 < value.charCodeAt(1)) {
  10510. break;
  10511. }
  10512. i = 0;
  10513. while (true) {
  10514. if (!(i < 9 && (i + 1 >> 0) < value.length && 48 <= value.charCodeAt((i + 1 >> 0)) && value.charCodeAt((i + 1 >> 0)) <= 57)) { break; }
  10515. i = i + (1) >> 0;
  10516. }
  10517. _tuple$22 = parseNanoseconds(value, 1 + i >> 0); nsec = _tuple$22[0]; rangeErrString = _tuple$22[1]; err = _tuple$22[2];
  10518. value = value.substring((1 + i >> 0));
  10519. } }
  10520. if (!(rangeErrString === "")) {
  10521. return [new Time.ptr(new $Int64(0, 0), 0, ptrType$1.nil), new ParseError.ptr(alayout, avalue, stdstr, value, ": " + rangeErrString + " out of range")];
  10522. }
  10523. if (!($interfaceIsEqual(err, $ifaceNil))) {
  10524. return [new Time.ptr(new $Int64(0, 0), 0, ptrType$1.nil), new ParseError.ptr(alayout, avalue, stdstr, value, "")];
  10525. }
  10526. }
  10527. if (pmSet && hour < 12) {
  10528. hour = hour + (12) >> 0;
  10529. } else if (amSet && (hour === 12)) {
  10530. hour = 0;
  10531. }
  10532. /* */ if (!(z === ptrType$1.nil)) { $s = 1; continue; }
  10533. /* */ $s = 2; continue;
  10534. /* if (!(z === ptrType$1.nil)) { */ case 1:
  10535. _r = Date(year, (month >> 0), day, hour, min, sec, nsec, z); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  10536. return [_r, $ifaceNil];
  10537. /* } */ case 2:
  10538. /* */ if (!((zoneOffset === -1))) { $s = 4; continue; }
  10539. /* */ $s = 5; continue;
  10540. /* if (!((zoneOffset === -1))) { */ case 4:
  10541. _r$1 = Date(year, (month >> 0), day, hour, min, sec, nsec, $pkg.UTC); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  10542. t = $clone(_r$1, Time);
  10543. t.sec = (x = t.sec, x$1 = new $Int64(0, zoneOffset), new $Int64(x.$high - x$1.$high, x.$low - x$1.$low));
  10544. _r$2 = local.lookup((x$2 = t.sec, new $Int64(x$2.$high + -15, x$2.$low + 2288912640))); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  10545. _tuple$23 = _r$2; name = _tuple$23[0]; offset = _tuple$23[1];
  10546. if ((offset === zoneOffset) && (zoneName === "" || name === zoneName)) {
  10547. t.loc = local;
  10548. return [t, $ifaceNil];
  10549. }
  10550. t.loc = FixedZone(zoneName, zoneOffset);
  10551. return [t, $ifaceNil];
  10552. /* } */ case 5:
  10553. /* */ if (!(zoneName === "")) { $s = 8; continue; }
  10554. /* */ $s = 9; continue;
  10555. /* if (!(zoneName === "")) { */ case 8:
  10556. _r$3 = Date(year, (month >> 0), day, hour, min, sec, nsec, $pkg.UTC); /* */ $s = 10; case 10: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  10557. t$1 = $clone(_r$3, Time);
  10558. _r$4 = local.lookupName(zoneName, (x$3 = t$1.sec, new $Int64(x$3.$high + -15, x$3.$low + 2288912640))); /* */ $s = 11; case 11: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
  10559. _tuple$24 = _r$4; offset$1 = _tuple$24[0]; ok$1 = _tuple$24[2];
  10560. if (ok$1) {
  10561. t$1.sec = (x$4 = t$1.sec, x$5 = new $Int64(0, offset$1), new $Int64(x$4.$high - x$5.$high, x$4.$low - x$5.$low));
  10562. t$1.loc = local;
  10563. return [t$1, $ifaceNil];
  10564. }
  10565. if (zoneName.length > 3 && zoneName.substring(0, 3) === "GMT") {
  10566. _tuple$25 = atoi(zoneName.substring(3)); offset$1 = _tuple$25[0];
  10567. offset$1 = offset$1 * (3600) >> 0;
  10568. }
  10569. t$1.loc = FixedZone(zoneName, offset$1);
  10570. return [t$1, $ifaceNil];
  10571. /* } */ case 9:
  10572. _r$5 = Date(year, (month >> 0), day, hour, min, sec, nsec, defaultLocation); /* */ $s = 12; case 12: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
  10573. return [_r$5, $ifaceNil];
  10574. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: parse }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._ref = _ref; $f._ref$1 = _ref$1; $f._ref$2 = _ref$2; $f._ref$3 = _ref$3; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$10 = _tmp$10; $f._tmp$11 = _tmp$11; $f._tmp$12 = _tmp$12; $f._tmp$13 = _tmp$13; $f._tmp$14 = _tmp$14; $f._tmp$15 = _tmp$15; $f._tmp$16 = _tmp$16; $f._tmp$17 = _tmp$17; $f._tmp$18 = _tmp$18; $f._tmp$19 = _tmp$19; $f._tmp$2 = _tmp$2; $f._tmp$20 = _tmp$20; $f._tmp$21 = _tmp$21; $f._tmp$22 = _tmp$22; $f._tmp$23 = _tmp$23; $f._tmp$24 = _tmp$24; $f._tmp$25 = _tmp$25; $f._tmp$26 = _tmp$26; $f._tmp$27 = _tmp$27; $f._tmp$28 = _tmp$28; $f._tmp$29 = _tmp$29; $f._tmp$3 = _tmp$3; $f._tmp$30 = _tmp$30; $f._tmp$31 = _tmp$31; $f._tmp$32 = _tmp$32; $f._tmp$33 = _tmp$33; $f._tmp$34 = _tmp$34; $f._tmp$35 = _tmp$35; $f._tmp$36 = _tmp$36; $f._tmp$37 = _tmp$37; $f._tmp$38 = _tmp$38; $f._tmp$39 = _tmp$39; $f._tmp$4 = _tmp$4; $f._tmp$40 = _tmp$40; $f._tmp$41 = _tmp$41; $f._tmp$42 = _tmp$42; $f._tmp$43 = _tmp$43; $f._tmp$5 = _tmp$5; $f._tmp$6 = _tmp$6; $f._tmp$7 = _tmp$7; $f._tmp$8 = _tmp$8; $f._tmp$9 = _tmp$9; $f._tuple$1 = _tuple$1; $f._tuple$10 = _tuple$10; $f._tuple$11 = _tuple$11; $f._tuple$12 = _tuple$12; $f._tuple$13 = _tuple$13; $f._tuple$14 = _tuple$14; $f._tuple$15 = _tuple$15; $f._tuple$16 = _tuple$16; $f._tuple$17 = _tuple$17; $f._tuple$18 = _tuple$18; $f._tuple$19 = _tuple$19; $f._tuple$2 = _tuple$2; $f._tuple$20 = _tuple$20; $f._tuple$21 = _tuple$21; $f._tuple$22 = _tuple$22; $f._tuple$23 = _tuple$23; $f._tuple$24 = _tuple$24; $f._tuple$25 = _tuple$25; $f._tuple$3 = _tuple$3; $f._tuple$4 = _tuple$4; $f._tuple$5 = _tuple$5; $f._tuple$6 = _tuple$6; $f._tuple$7 = _tuple$7; $f._tuple$8 = _tuple$8; $f._tuple$9 = _tuple$9; $f.alayout = alayout; $f.amSet = amSet; $f.avalue = avalue; $f.day = day; $f.defaultLocation = defaultLocation; $f.err = err; $f.hour = hour; $f.hour$1 = hour$1; $f.hr = hr; $f.i = i; $f.layout = layout; $f.local = local; $f.min = min; $f.min$1 = min$1; $f.mm = mm; $f.month = month; $f.n = n; $f.n$1 = n$1; $f.name = name; $f.ndigit = ndigit; $f.nsec = nsec; $f.offset = offset; $f.offset$1 = offset$1; $f.ok = ok; $f.ok$1 = ok$1; $f.p = p; $f.pmSet = pmSet; $f.prefix = prefix; $f.rangeErrString = rangeErrString; $f.sec = sec; $f.seconds = seconds; $f.sign = sign; $f.ss = ss; $f.std = std; $f.stdstr = stdstr; $f.suffix = suffix; $f.t = t; $f.t$1 = t$1; $f.value = value; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.x$3 = x$3; $f.x$4 = x$4; $f.x$5 = x$5; $f.year = year; $f.z = z; $f.zoneName = zoneName; $f.zoneOffset = zoneOffset; $f.$s = $s; $f.$r = $r; return $f;
  10575. };
  10576. parseTimeZone = function(value) {
  10577. var $ptr, _ref, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, c, length, nUpper, ok, value;
  10578. length = 0;
  10579. ok = false;
  10580. if (value.length < 3) {
  10581. _tmp = 0; _tmp$1 = false; length = _tmp; ok = _tmp$1;
  10582. return [length, ok];
  10583. }
  10584. if (value.length >= 4 && (value.substring(0, 4) === "ChST" || value.substring(0, 4) === "MeST")) {
  10585. _tmp$2 = 4; _tmp$3 = true; length = _tmp$2; ok = _tmp$3;
  10586. return [length, ok];
  10587. }
  10588. if (value.substring(0, 3) === "GMT") {
  10589. length = parseGMT(value);
  10590. _tmp$4 = length; _tmp$5 = true; length = _tmp$4; ok = _tmp$5;
  10591. return [length, ok];
  10592. }
  10593. nUpper = 0;
  10594. nUpper = 0;
  10595. while (true) {
  10596. if (!(nUpper < 6)) { break; }
  10597. if (nUpper >= value.length) {
  10598. break;
  10599. }
  10600. c = value.charCodeAt(nUpper);
  10601. if (c < 65 || 90 < c) {
  10602. break;
  10603. }
  10604. nUpper = nUpper + (1) >> 0;
  10605. }
  10606. _ref = nUpper;
  10607. if (_ref === 0 || _ref === 1 || _ref === 2 || _ref === 6) {
  10608. _tmp$6 = 0; _tmp$7 = false; length = _tmp$6; ok = _tmp$7;
  10609. return [length, ok];
  10610. } else if (_ref === 5) {
  10611. if (value.charCodeAt(4) === 84) {
  10612. _tmp$8 = 5; _tmp$9 = true; length = _tmp$8; ok = _tmp$9;
  10613. return [length, ok];
  10614. }
  10615. } else if (_ref === 4) {
  10616. if (value.charCodeAt(3) === 84) {
  10617. _tmp$10 = 4; _tmp$11 = true; length = _tmp$10; ok = _tmp$11;
  10618. return [length, ok];
  10619. }
  10620. } else if (_ref === 3) {
  10621. _tmp$12 = 3; _tmp$13 = true; length = _tmp$12; ok = _tmp$13;
  10622. return [length, ok];
  10623. }
  10624. _tmp$14 = 0; _tmp$15 = false; length = _tmp$14; ok = _tmp$15;
  10625. return [length, ok];
  10626. };
  10627. parseGMT = function(value) {
  10628. var $ptr, _tuple$1, err, rem, sign, value, x;
  10629. value = value.substring(3);
  10630. if (value.length === 0) {
  10631. return 3;
  10632. }
  10633. sign = value.charCodeAt(0);
  10634. if (!((sign === 45)) && !((sign === 43))) {
  10635. return 3;
  10636. }
  10637. _tuple$1 = leadingInt(value.substring(1)); x = _tuple$1[0]; rem = _tuple$1[1]; err = _tuple$1[2];
  10638. if (!($interfaceIsEqual(err, $ifaceNil))) {
  10639. return 3;
  10640. }
  10641. if (sign === 45) {
  10642. x = new $Int64(-x.$high, -x.$low);
  10643. }
  10644. if ((x.$high === 0 && x.$low === 0) || (x.$high < -1 || (x.$high === -1 && x.$low < 4294967282)) || (0 < x.$high || (0 === x.$high && 12 < x.$low))) {
  10645. return 3;
  10646. }
  10647. return (3 + value.length >> 0) - rem.length >> 0;
  10648. };
  10649. parseNanoseconds = function(value, nbytes) {
  10650. var $ptr, _tuple$1, err, i, nbytes, ns, rangeErrString, scaleDigits, value;
  10651. ns = 0;
  10652. rangeErrString = "";
  10653. err = $ifaceNil;
  10654. if (!((value.charCodeAt(0) === 46))) {
  10655. err = errBad;
  10656. return [ns, rangeErrString, err];
  10657. }
  10658. _tuple$1 = atoi(value.substring(1, nbytes)); ns = _tuple$1[0]; err = _tuple$1[1];
  10659. if (!($interfaceIsEqual(err, $ifaceNil))) {
  10660. return [ns, rangeErrString, err];
  10661. }
  10662. if (ns < 0 || 1000000000 <= ns) {
  10663. rangeErrString = "fractional second";
  10664. return [ns, rangeErrString, err];
  10665. }
  10666. scaleDigits = 10 - nbytes >> 0;
  10667. i = 0;
  10668. while (true) {
  10669. if (!(i < scaleDigits)) { break; }
  10670. ns = ns * (10) >> 0;
  10671. i = i + (1) >> 0;
  10672. }
  10673. return [ns, rangeErrString, err];
  10674. };
  10675. leadingInt = function(s) {
  10676. var $ptr, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, c, err, i, rem, s, x, x$1, x$2, x$3;
  10677. x = new $Int64(0, 0);
  10678. rem = "";
  10679. err = $ifaceNil;
  10680. i = 0;
  10681. while (true) {
  10682. if (!(i < s.length)) { break; }
  10683. c = s.charCodeAt(i);
  10684. if (c < 48 || c > 57) {
  10685. break;
  10686. }
  10687. if ((x.$high > 214748364 || (x.$high === 214748364 && x.$low >= 3435973835))) {
  10688. _tmp = new $Int64(0, 0); _tmp$1 = ""; _tmp$2 = errLeadingInt; x = _tmp; rem = _tmp$1; err = _tmp$2;
  10689. return [x, rem, err];
  10690. }
  10691. x = (x$1 = (x$2 = $mul64(x, new $Int64(0, 10)), x$3 = new $Int64(0, c), new $Int64(x$2.$high + x$3.$high, x$2.$low + x$3.$low)), new $Int64(x$1.$high - 0, x$1.$low - 48));
  10692. i = i + (1) >> 0;
  10693. }
  10694. _tmp$3 = x; _tmp$4 = s.substring(i); _tmp$5 = $ifaceNil; x = _tmp$3; rem = _tmp$4; err = _tmp$5;
  10695. return [x, rem, err];
  10696. };
  10697. ParseDuration = function(s) {
  10698. var $ptr, _entry, _tuple$1, _tuple$2, _tuple$3, c, c$1, err, f, g, i, n, neg, ok, orig, pl, pl$1, post, pre, s, scale, u, unit, x;
  10699. orig = s;
  10700. f = 0;
  10701. neg = false;
  10702. if (!(s === "")) {
  10703. c = s.charCodeAt(0);
  10704. if ((c === 45) || (c === 43)) {
  10705. neg = c === 45;
  10706. s = s.substring(1);
  10707. }
  10708. }
  10709. if (s === "0") {
  10710. return [new Duration(0, 0), $ifaceNil];
  10711. }
  10712. if (s === "") {
  10713. return [new Duration(0, 0), errors.New("time: invalid duration " + orig)];
  10714. }
  10715. while (true) {
  10716. if (!(!(s === ""))) { break; }
  10717. g = 0;
  10718. x = new $Int64(0, 0);
  10719. err = $ifaceNil;
  10720. if (!((s.charCodeAt(0) === 46) || (48 <= s.charCodeAt(0) && s.charCodeAt(0) <= 57))) {
  10721. return [new Duration(0, 0), errors.New("time: invalid duration " + orig)];
  10722. }
  10723. pl = s.length;
  10724. _tuple$1 = leadingInt(s); x = _tuple$1[0]; s = _tuple$1[1]; err = _tuple$1[2];
  10725. if (!($interfaceIsEqual(err, $ifaceNil))) {
  10726. return [new Duration(0, 0), errors.New("time: invalid duration " + orig)];
  10727. }
  10728. g = $flatten64(x);
  10729. pre = !((pl === s.length));
  10730. post = false;
  10731. if (!(s === "") && (s.charCodeAt(0) === 46)) {
  10732. s = s.substring(1);
  10733. pl$1 = s.length;
  10734. _tuple$2 = leadingInt(s); x = _tuple$2[0]; s = _tuple$2[1]; err = _tuple$2[2];
  10735. if (!($interfaceIsEqual(err, $ifaceNil))) {
  10736. return [new Duration(0, 0), errors.New("time: invalid duration " + orig)];
  10737. }
  10738. scale = 1;
  10739. n = pl$1 - s.length >> 0;
  10740. while (true) {
  10741. if (!(n > 0)) { break; }
  10742. scale = scale * (10);
  10743. n = n - (1) >> 0;
  10744. }
  10745. g = g + ($flatten64(x) / scale);
  10746. post = !((pl$1 === s.length));
  10747. }
  10748. if (!pre && !post) {
  10749. return [new Duration(0, 0), errors.New("time: invalid duration " + orig)];
  10750. }
  10751. i = 0;
  10752. while (true) {
  10753. if (!(i < s.length)) { break; }
  10754. c$1 = s.charCodeAt(i);
  10755. if ((c$1 === 46) || (48 <= c$1 && c$1 <= 57)) {
  10756. break;
  10757. }
  10758. i = i + (1) >> 0;
  10759. }
  10760. if (i === 0) {
  10761. return [new Duration(0, 0), errors.New("time: missing unit in duration " + orig)];
  10762. }
  10763. u = s.substring(0, i);
  10764. s = s.substring(i);
  10765. _tuple$3 = (_entry = unitMap[u], _entry !== undefined ? [_entry.v, true] : [0, false]); unit = _tuple$3[0]; ok = _tuple$3[1];
  10766. if (!ok) {
  10767. return [new Duration(0, 0), errors.New("time: unknown unit " + u + " in duration " + orig)];
  10768. }
  10769. f = f + (g * unit);
  10770. }
  10771. if (neg) {
  10772. f = -f;
  10773. }
  10774. if (f < -9.223372036854776e+18 || f > 9.223372036854776e+18) {
  10775. return [new Duration(0, 0), errors.New("time: overflow parsing duration")];
  10776. }
  10777. return [new Duration(0, f), $ifaceNil];
  10778. };
  10779. $pkg.ParseDuration = ParseDuration;
  10780. when = function(d) {
  10781. var $ptr, d, t, x, x$1;
  10782. if ((d.$high < 0 || (d.$high === 0 && d.$low <= 0))) {
  10783. return runtimeNano();
  10784. }
  10785. t = (x = runtimeNano(), x$1 = new $Int64(d.$high, d.$low), new $Int64(x.$high + x$1.$high, x.$low + x$1.$low));
  10786. if ((t.$high < 0 || (t.$high === 0 && t.$low < 0))) {
  10787. t = new $Int64(2147483647, 4294967295);
  10788. }
  10789. return t;
  10790. };
  10791. Timer.ptr.prototype.Stop = function() {
  10792. var $ptr, t;
  10793. t = this;
  10794. if (t.r.f === $throwNilPointerError) {
  10795. $panic(new $String("time: Stop called on uninitialized Timer"));
  10796. }
  10797. return stopTimer(t.r);
  10798. };
  10799. Timer.prototype.Stop = function() { return this.$val.Stop(); };
  10800. Timer.ptr.prototype.Reset = function(d) {
  10801. var $ptr, active, d, t, w;
  10802. t = this;
  10803. if (t.r.f === $throwNilPointerError) {
  10804. $panic(new $String("time: Reset called on uninitialized Timer"));
  10805. }
  10806. w = when(d);
  10807. active = stopTimer(t.r);
  10808. t.r.when = w;
  10809. startTimer(t.r);
  10810. return active;
  10811. };
  10812. Timer.prototype.Reset = function(d) { return this.$val.Reset(d); };
  10813. AfterFunc = function(d, f) {
  10814. var $ptr, d, f, t;
  10815. t = new Timer.ptr(chanType$2.nil, new runtimeTimer.ptr(0, when(d), new $Int64(0, 0), goFunc, new funcType(f), null, false));
  10816. startTimer(t.r);
  10817. return t;
  10818. };
  10819. $pkg.AfterFunc = AfterFunc;
  10820. goFunc = function(arg, seq) {
  10821. var $ptr, arg, seq;
  10822. $go($assertType(arg, funcType), []);
  10823. };
  10824. Time.ptr.prototype.After = function(u) {
  10825. var $ptr, t, u, x, x$1, x$2, x$3;
  10826. t = $clone(this, Time);
  10827. u = $clone(u, Time);
  10828. return (x = t.sec, x$1 = u.sec, (x.$high > x$1.$high || (x.$high === x$1.$high && x.$low > x$1.$low))) || (x$2 = t.sec, x$3 = u.sec, (x$2.$high === x$3.$high && x$2.$low === x$3.$low)) && t.nsec > u.nsec;
  10829. };
  10830. Time.prototype.After = function(u) { return this.$val.After(u); };
  10831. Time.ptr.prototype.Before = function(u) {
  10832. var $ptr, t, u, x, x$1, x$2, x$3;
  10833. t = $clone(this, Time);
  10834. u = $clone(u, Time);
  10835. return (x = t.sec, x$1 = u.sec, (x.$high < x$1.$high || (x.$high === x$1.$high && x.$low < x$1.$low))) || (x$2 = t.sec, x$3 = u.sec, (x$2.$high === x$3.$high && x$2.$low === x$3.$low)) && t.nsec < u.nsec;
  10836. };
  10837. Time.prototype.Before = function(u) { return this.$val.Before(u); };
  10838. Time.ptr.prototype.Equal = function(u) {
  10839. var $ptr, t, u, x, x$1;
  10840. t = $clone(this, Time);
  10841. u = $clone(u, Time);
  10842. return (x = t.sec, x$1 = u.sec, (x.$high === x$1.$high && x.$low === x$1.$low)) && (t.nsec === u.nsec);
  10843. };
  10844. Time.prototype.Equal = function(u) { return this.$val.Equal(u); };
  10845. Month.prototype.String = function() {
  10846. var $ptr, m, x;
  10847. m = this.$val;
  10848. return (x = m - 1 >> 0, ((x < 0 || x >= months.length) ? $throwRuntimeError("index out of range") : months[x]));
  10849. };
  10850. $ptrType(Month).prototype.String = function() { return new Month(this.$get()).String(); };
  10851. Weekday.prototype.String = function() {
  10852. var $ptr, d;
  10853. d = this.$val;
  10854. return ((d < 0 || d >= days.length) ? $throwRuntimeError("index out of range") : days[d]);
  10855. };
  10856. $ptrType(Weekday).prototype.String = function() { return new Weekday(this.$get()).String(); };
  10857. Time.ptr.prototype.IsZero = function() {
  10858. var $ptr, t, x;
  10859. t = $clone(this, Time);
  10860. return (x = t.sec, (x.$high === 0 && x.$low === 0)) && (t.nsec === 0);
  10861. };
  10862. Time.prototype.IsZero = function() { return this.$val.IsZero(); };
  10863. Time.ptr.prototype.abs = function() {
  10864. var $ptr, _r, _r$1, _tuple$1, l, offset, sec, t, x, x$1, x$2, x$3, x$4, x$5, $s, $r;
  10865. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _tuple$1 = $f._tuple$1; l = $f.l; offset = $f.offset; sec = $f.sec; t = $f.t; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; x$3 = $f.x$3; x$4 = $f.x$4; x$5 = $f.x$5; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  10866. t = $clone(this, Time);
  10867. l = t.loc;
  10868. /* */ if (l === ptrType$1.nil || l === localLoc) { $s = 1; continue; }
  10869. /* */ $s = 2; continue;
  10870. /* if (l === ptrType$1.nil || l === localLoc) { */ case 1:
  10871. _r = l.get(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  10872. l = _r;
  10873. /* } */ case 2:
  10874. sec = (x = t.sec, new $Int64(x.$high + -15, x.$low + 2288912640));
  10875. /* */ if (!(l === utcLoc)) { $s = 4; continue; }
  10876. /* */ $s = 5; continue;
  10877. /* if (!(l === utcLoc)) { */ case 4:
  10878. /* */ if (!(l.cacheZone === ptrType.nil) && (x$1 = l.cacheStart, (x$1.$high < sec.$high || (x$1.$high === sec.$high && x$1.$low <= sec.$low))) && (x$2 = l.cacheEnd, (sec.$high < x$2.$high || (sec.$high === x$2.$high && sec.$low < x$2.$low)))) { $s = 6; continue; }
  10879. /* */ $s = 7; continue;
  10880. /* if (!(l.cacheZone === ptrType.nil) && (x$1 = l.cacheStart, (x$1.$high < sec.$high || (x$1.$high === sec.$high && x$1.$low <= sec.$low))) && (x$2 = l.cacheEnd, (sec.$high < x$2.$high || (sec.$high === x$2.$high && sec.$low < x$2.$low)))) { */ case 6:
  10881. sec = (x$3 = new $Int64(0, l.cacheZone.offset), new $Int64(sec.$high + x$3.$high, sec.$low + x$3.$low));
  10882. $s = 8; continue;
  10883. /* } else { */ case 7:
  10884. _r$1 = l.lookup(sec); /* */ $s = 9; case 9: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  10885. _tuple$1 = _r$1; offset = _tuple$1[1];
  10886. sec = (x$4 = new $Int64(0, offset), new $Int64(sec.$high + x$4.$high, sec.$low + x$4.$low));
  10887. /* } */ case 8:
  10888. /* } */ case 5:
  10889. return (x$5 = new $Int64(sec.$high + 2147483646, sec.$low + 450480384), new $Uint64(x$5.$high, x$5.$low));
  10890. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Time.ptr.prototype.abs }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._tuple$1 = _tuple$1; $f.l = l; $f.offset = offset; $f.sec = sec; $f.t = t; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.x$3 = x$3; $f.x$4 = x$4; $f.x$5 = x$5; $f.$s = $s; $f.$r = $r; return $f;
  10891. };
  10892. Time.prototype.abs = function() { return this.$val.abs(); };
  10893. Time.ptr.prototype.locabs = function() {
  10894. var $ptr, _r, _r$1, _tuple$1, abs, l, name, offset, sec, t, x, x$1, x$2, x$3, x$4, $s, $r;
  10895. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _tuple$1 = $f._tuple$1; abs = $f.abs; l = $f.l; name = $f.name; offset = $f.offset; sec = $f.sec; t = $f.t; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; x$3 = $f.x$3; x$4 = $f.x$4; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  10896. name = "";
  10897. offset = 0;
  10898. abs = new $Uint64(0, 0);
  10899. t = $clone(this, Time);
  10900. l = t.loc;
  10901. /* */ if (l === ptrType$1.nil || l === localLoc) { $s = 1; continue; }
  10902. /* */ $s = 2; continue;
  10903. /* if (l === ptrType$1.nil || l === localLoc) { */ case 1:
  10904. _r = l.get(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  10905. l = _r;
  10906. /* } */ case 2:
  10907. sec = (x = t.sec, new $Int64(x.$high + -15, x.$low + 2288912640));
  10908. /* */ if (!(l === utcLoc)) { $s = 4; continue; }
  10909. /* */ $s = 5; continue;
  10910. /* if (!(l === utcLoc)) { */ case 4:
  10911. /* */ if (!(l.cacheZone === ptrType.nil) && (x$1 = l.cacheStart, (x$1.$high < sec.$high || (x$1.$high === sec.$high && x$1.$low <= sec.$low))) && (x$2 = l.cacheEnd, (sec.$high < x$2.$high || (sec.$high === x$2.$high && sec.$low < x$2.$low)))) { $s = 7; continue; }
  10912. /* */ $s = 8; continue;
  10913. /* if (!(l.cacheZone === ptrType.nil) && (x$1 = l.cacheStart, (x$1.$high < sec.$high || (x$1.$high === sec.$high && x$1.$low <= sec.$low))) && (x$2 = l.cacheEnd, (sec.$high < x$2.$high || (sec.$high === x$2.$high && sec.$low < x$2.$low)))) { */ case 7:
  10914. name = l.cacheZone.name;
  10915. offset = l.cacheZone.offset;
  10916. $s = 9; continue;
  10917. /* } else { */ case 8:
  10918. _r$1 = l.lookup(sec); /* */ $s = 10; case 10: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  10919. _tuple$1 = _r$1; name = _tuple$1[0]; offset = _tuple$1[1];
  10920. /* } */ case 9:
  10921. sec = (x$3 = new $Int64(0, offset), new $Int64(sec.$high + x$3.$high, sec.$low + x$3.$low));
  10922. $s = 6; continue;
  10923. /* } else { */ case 5:
  10924. name = "UTC";
  10925. /* } */ case 6:
  10926. abs = (x$4 = new $Int64(sec.$high + 2147483646, sec.$low + 450480384), new $Uint64(x$4.$high, x$4.$low));
  10927. return [name, offset, abs];
  10928. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Time.ptr.prototype.locabs }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._tuple$1 = _tuple$1; $f.abs = abs; $f.l = l; $f.name = name; $f.offset = offset; $f.sec = sec; $f.t = t; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.x$3 = x$3; $f.x$4 = x$4; $f.$s = $s; $f.$r = $r; return $f;
  10929. };
  10930. Time.prototype.locabs = function() { return this.$val.locabs(); };
  10931. Time.ptr.prototype.Date = function() {
  10932. var $ptr, _r, _tuple$1, day, month, t, year, $s, $r;
  10933. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tuple$1 = $f._tuple$1; day = $f.day; month = $f.month; t = $f.t; year = $f.year; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  10934. year = 0;
  10935. month = 0;
  10936. day = 0;
  10937. t = $clone(this, Time);
  10938. _r = t.date(true); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  10939. _tuple$1 = _r; year = _tuple$1[0]; month = _tuple$1[1]; day = _tuple$1[2];
  10940. return [year, month, day];
  10941. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Time.ptr.prototype.Date }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple$1 = _tuple$1; $f.day = day; $f.month = month; $f.t = t; $f.year = year; $f.$s = $s; $f.$r = $r; return $f;
  10942. };
  10943. Time.prototype.Date = function() { return this.$val.Date(); };
  10944. Time.ptr.prototype.Year = function() {
  10945. var $ptr, _r, _tuple$1, t, year, $s, $r;
  10946. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tuple$1 = $f._tuple$1; t = $f.t; year = $f.year; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  10947. t = $clone(this, Time);
  10948. _r = t.date(false); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  10949. _tuple$1 = _r; year = _tuple$1[0];
  10950. return year;
  10951. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Time.ptr.prototype.Year }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple$1 = _tuple$1; $f.t = t; $f.year = year; $f.$s = $s; $f.$r = $r; return $f;
  10952. };
  10953. Time.prototype.Year = function() { return this.$val.Year(); };
  10954. Time.ptr.prototype.Month = function() {
  10955. var $ptr, _r, _tuple$1, month, t, $s, $r;
  10956. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tuple$1 = $f._tuple$1; month = $f.month; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  10957. t = $clone(this, Time);
  10958. _r = t.date(true); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  10959. _tuple$1 = _r; month = _tuple$1[1];
  10960. return month;
  10961. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Time.ptr.prototype.Month }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple$1 = _tuple$1; $f.month = month; $f.t = t; $f.$s = $s; $f.$r = $r; return $f;
  10962. };
  10963. Time.prototype.Month = function() { return this.$val.Month(); };
  10964. Time.ptr.prototype.Day = function() {
  10965. var $ptr, _r, _tuple$1, day, t, $s, $r;
  10966. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tuple$1 = $f._tuple$1; day = $f.day; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  10967. t = $clone(this, Time);
  10968. _r = t.date(true); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  10969. _tuple$1 = _r; day = _tuple$1[2];
  10970. return day;
  10971. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Time.ptr.prototype.Day }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple$1 = _tuple$1; $f.day = day; $f.t = t; $f.$s = $s; $f.$r = $r; return $f;
  10972. };
  10973. Time.prototype.Day = function() { return this.$val.Day(); };
  10974. Time.ptr.prototype.Weekday = function() {
  10975. var $ptr, _r, _r$1, t, $s, $r;
  10976. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  10977. t = $clone(this, Time);
  10978. _r = t.abs(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  10979. _r$1 = absWeekday(_r); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  10980. return _r$1;
  10981. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Time.ptr.prototype.Weekday }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f.t = t; $f.$s = $s; $f.$r = $r; return $f;
  10982. };
  10983. Time.prototype.Weekday = function() { return this.$val.Weekday(); };
  10984. absWeekday = function(abs) {
  10985. var $ptr, _q, abs, sec;
  10986. sec = $div64((new $Uint64(abs.$high + 0, abs.$low + 86400)), new $Uint64(0, 604800), true);
  10987. return ((_q = (sec.$low >> 0) / 86400, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")) >> 0);
  10988. };
  10989. Time.ptr.prototype.ISOWeek = function() {
  10990. var $ptr, _q, _r, _r$1, _r$2, _r$3, _r$4, _tuple$1, day, dec31wday, jan1wday, month, t, wday, week, yday, year, $s, $r;
  10991. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _q = $f._q; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _tuple$1 = $f._tuple$1; day = $f.day; dec31wday = $f.dec31wday; jan1wday = $f.jan1wday; month = $f.month; t = $f.t; wday = $f.wday; week = $f.week; yday = $f.yday; year = $f.year; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  10992. year = 0;
  10993. week = 0;
  10994. t = $clone(this, Time);
  10995. _r = t.date(true); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  10996. _tuple$1 = _r; year = _tuple$1[0]; month = _tuple$1[1]; day = _tuple$1[2]; yday = _tuple$1[3];
  10997. _r$2 = t.Weekday(); /* */ $s = 2; case 2: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  10998. wday = (_r$1 = ((_r$2 + 6 >> 0) >> 0) % 7, _r$1 === _r$1 ? _r$1 : $throwRuntimeError("integer divide by zero"));
  10999. week = (_q = (((yday - wday >> 0) + 7 >> 0)) / 7, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero"));
  11000. jan1wday = (_r$3 = (((wday - yday >> 0) + 371 >> 0)) % 7, _r$3 === _r$3 ? _r$3 : $throwRuntimeError("integer divide by zero"));
  11001. if (1 <= jan1wday && jan1wday <= 3) {
  11002. week = week + (1) >> 0;
  11003. }
  11004. if (week === 0) {
  11005. year = year - (1) >> 0;
  11006. week = 52;
  11007. if ((jan1wday === 4) || ((jan1wday === 5) && isLeap(year))) {
  11008. week = week + (1) >> 0;
  11009. }
  11010. }
  11011. if ((month === 12) && day >= 29 && wday < 3) {
  11012. dec31wday = (_r$4 = (((wday + 31 >> 0) - day >> 0)) % 7, _r$4 === _r$4 ? _r$4 : $throwRuntimeError("integer divide by zero"));
  11013. if (0 <= dec31wday && dec31wday <= 2) {
  11014. year = year + (1) >> 0;
  11015. week = 1;
  11016. }
  11017. }
  11018. return [year, week];
  11019. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Time.ptr.prototype.ISOWeek }; } $f.$ptr = $ptr; $f._q = _q; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._tuple$1 = _tuple$1; $f.day = day; $f.dec31wday = dec31wday; $f.jan1wday = jan1wday; $f.month = month; $f.t = t; $f.wday = wday; $f.week = week; $f.yday = yday; $f.year = year; $f.$s = $s; $f.$r = $r; return $f;
  11020. };
  11021. Time.prototype.ISOWeek = function() { return this.$val.ISOWeek(); };
  11022. Time.ptr.prototype.Clock = function() {
  11023. var $ptr, _r, _r$1, _tuple$1, hour, min, sec, t, $s, $r;
  11024. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _tuple$1 = $f._tuple$1; hour = $f.hour; min = $f.min; sec = $f.sec; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  11025. hour = 0;
  11026. min = 0;
  11027. sec = 0;
  11028. t = $clone(this, Time);
  11029. _r = t.abs(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  11030. _r$1 = absClock(_r); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  11031. _tuple$1 = _r$1; hour = _tuple$1[0]; min = _tuple$1[1]; sec = _tuple$1[2];
  11032. return [hour, min, sec];
  11033. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Time.ptr.prototype.Clock }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._tuple$1 = _tuple$1; $f.hour = hour; $f.min = min; $f.sec = sec; $f.t = t; $f.$s = $s; $f.$r = $r; return $f;
  11034. };
  11035. Time.prototype.Clock = function() { return this.$val.Clock(); };
  11036. absClock = function(abs) {
  11037. var $ptr, _q, _q$1, abs, hour, min, sec;
  11038. hour = 0;
  11039. min = 0;
  11040. sec = 0;
  11041. sec = ($div64(abs, new $Uint64(0, 86400), true).$low >> 0);
  11042. hour = (_q = sec / 3600, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero"));
  11043. sec = sec - ((hour * 3600 >> 0)) >> 0;
  11044. min = (_q$1 = sec / 60, (_q$1 === _q$1 && _q$1 !== 1/0 && _q$1 !== -1/0) ? _q$1 >> 0 : $throwRuntimeError("integer divide by zero"));
  11045. sec = sec - ((min * 60 >> 0)) >> 0;
  11046. return [hour, min, sec];
  11047. };
  11048. Time.ptr.prototype.Hour = function() {
  11049. var $ptr, _q, _r, t, $s, $r;
  11050. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _q = $f._q; _r = $f._r; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  11051. t = $clone(this, Time);
  11052. _r = t.abs(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  11053. return (_q = ($div64(_r, new $Uint64(0, 86400), true).$low >> 0) / 3600, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero"));
  11054. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Time.ptr.prototype.Hour }; } $f.$ptr = $ptr; $f._q = _q; $f._r = _r; $f.t = t; $f.$s = $s; $f.$r = $r; return $f;
  11055. };
  11056. Time.prototype.Hour = function() { return this.$val.Hour(); };
  11057. Time.ptr.prototype.Minute = function() {
  11058. var $ptr, _q, _r, t, $s, $r;
  11059. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _q = $f._q; _r = $f._r; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  11060. t = $clone(this, Time);
  11061. _r = t.abs(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  11062. return (_q = ($div64(_r, new $Uint64(0, 3600), true).$low >> 0) / 60, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero"));
  11063. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Time.ptr.prototype.Minute }; } $f.$ptr = $ptr; $f._q = _q; $f._r = _r; $f.t = t; $f.$s = $s; $f.$r = $r; return $f;
  11064. };
  11065. Time.prototype.Minute = function() { return this.$val.Minute(); };
  11066. Time.ptr.prototype.Second = function() {
  11067. var $ptr, _r, t, $s, $r;
  11068. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  11069. t = $clone(this, Time);
  11070. _r = t.abs(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  11071. return ($div64(_r, new $Uint64(0, 60), true).$low >> 0);
  11072. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Time.ptr.prototype.Second }; } $f.$ptr = $ptr; $f._r = _r; $f.t = t; $f.$s = $s; $f.$r = $r; return $f;
  11073. };
  11074. Time.prototype.Second = function() { return this.$val.Second(); };
  11075. Time.ptr.prototype.Nanosecond = function() {
  11076. var $ptr, t;
  11077. t = $clone(this, Time);
  11078. return (t.nsec >> 0);
  11079. };
  11080. Time.prototype.Nanosecond = function() { return this.$val.Nanosecond(); };
  11081. Time.ptr.prototype.YearDay = function() {
  11082. var $ptr, _r, _tuple$1, t, yday, $s, $r;
  11083. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tuple$1 = $f._tuple$1; t = $f.t; yday = $f.yday; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  11084. t = $clone(this, Time);
  11085. _r = t.date(false); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  11086. _tuple$1 = _r; yday = _tuple$1[3];
  11087. return yday + 1 >> 0;
  11088. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Time.ptr.prototype.YearDay }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple$1 = _tuple$1; $f.t = t; $f.yday = yday; $f.$s = $s; $f.$r = $r; return $f;
  11089. };
  11090. Time.prototype.YearDay = function() { return this.$val.YearDay(); };
  11091. Duration.prototype.String = function() {
  11092. var $ptr, _tuple$1, _tuple$2, buf, d, neg, prec, u, w;
  11093. d = this;
  11094. buf = $clone(arrayType$1.zero(), arrayType$1);
  11095. w = 32;
  11096. u = new $Uint64(d.$high, d.$low);
  11097. neg = (d.$high < 0 || (d.$high === 0 && d.$low < 0));
  11098. if (neg) {
  11099. u = new $Uint64(-u.$high, -u.$low);
  11100. }
  11101. if ((u.$high < 0 || (u.$high === 0 && u.$low < 1000000000))) {
  11102. prec = 0;
  11103. w = w - (1) >> 0;
  11104. ((w < 0 || w >= buf.length) ? $throwRuntimeError("index out of range") : buf[w] = 115);
  11105. w = w - (1) >> 0;
  11106. if ((u.$high === 0 && u.$low === 0)) {
  11107. return "0";
  11108. } else if ((u.$high < 0 || (u.$high === 0 && u.$low < 1000))) {
  11109. prec = 0;
  11110. ((w < 0 || w >= buf.length) ? $throwRuntimeError("index out of range") : buf[w] = 110);
  11111. } else if ((u.$high < 0 || (u.$high === 0 && u.$low < 1000000))) {
  11112. prec = 3;
  11113. w = w - (1) >> 0;
  11114. $copyString($subslice(new sliceType$3(buf), w), "\xC2\xB5");
  11115. } else {
  11116. prec = 6;
  11117. ((w < 0 || w >= buf.length) ? $throwRuntimeError("index out of range") : buf[w] = 109);
  11118. }
  11119. _tuple$1 = fmtFrac($subslice(new sliceType$3(buf), 0, w), u, prec); w = _tuple$1[0]; u = _tuple$1[1];
  11120. w = fmtInt($subslice(new sliceType$3(buf), 0, w), u);
  11121. } else {
  11122. w = w - (1) >> 0;
  11123. ((w < 0 || w >= buf.length) ? $throwRuntimeError("index out of range") : buf[w] = 115);
  11124. _tuple$2 = fmtFrac($subslice(new sliceType$3(buf), 0, w), u, 9); w = _tuple$2[0]; u = _tuple$2[1];
  11125. w = fmtInt($subslice(new sliceType$3(buf), 0, w), $div64(u, new $Uint64(0, 60), true));
  11126. u = $div64(u, (new $Uint64(0, 60)), false);
  11127. if ((u.$high > 0 || (u.$high === 0 && u.$low > 0))) {
  11128. w = w - (1) >> 0;
  11129. ((w < 0 || w >= buf.length) ? $throwRuntimeError("index out of range") : buf[w] = 109);
  11130. w = fmtInt($subslice(new sliceType$3(buf), 0, w), $div64(u, new $Uint64(0, 60), true));
  11131. u = $div64(u, (new $Uint64(0, 60)), false);
  11132. if ((u.$high > 0 || (u.$high === 0 && u.$low > 0))) {
  11133. w = w - (1) >> 0;
  11134. ((w < 0 || w >= buf.length) ? $throwRuntimeError("index out of range") : buf[w] = 104);
  11135. w = fmtInt($subslice(new sliceType$3(buf), 0, w), u);
  11136. }
  11137. }
  11138. }
  11139. if (neg) {
  11140. w = w - (1) >> 0;
  11141. ((w < 0 || w >= buf.length) ? $throwRuntimeError("index out of range") : buf[w] = 45);
  11142. }
  11143. return $bytesToString($subslice(new sliceType$3(buf), w));
  11144. };
  11145. $ptrType(Duration).prototype.String = function() { return this.$get().String(); };
  11146. fmtFrac = function(buf, v, prec) {
  11147. var $ptr, _tmp, _tmp$1, buf, digit, i, nv, nw, prec, print, v, w;
  11148. nw = 0;
  11149. nv = new $Uint64(0, 0);
  11150. w = buf.$length;
  11151. print = false;
  11152. i = 0;
  11153. while (true) {
  11154. if (!(i < prec)) { break; }
  11155. digit = $div64(v, new $Uint64(0, 10), true);
  11156. print = print || !((digit.$high === 0 && digit.$low === 0));
  11157. if (print) {
  11158. w = w - (1) >> 0;
  11159. ((w < 0 || w >= buf.$length) ? $throwRuntimeError("index out of range") : buf.$array[buf.$offset + w] = (digit.$low << 24 >>> 24) + 48 << 24 >>> 24);
  11160. }
  11161. v = $div64(v, (new $Uint64(0, 10)), false);
  11162. i = i + (1) >> 0;
  11163. }
  11164. if (print) {
  11165. w = w - (1) >> 0;
  11166. ((w < 0 || w >= buf.$length) ? $throwRuntimeError("index out of range") : buf.$array[buf.$offset + w] = 46);
  11167. }
  11168. _tmp = w; _tmp$1 = v; nw = _tmp; nv = _tmp$1;
  11169. return [nw, nv];
  11170. };
  11171. fmtInt = function(buf, v) {
  11172. var $ptr, buf, v, w;
  11173. w = buf.$length;
  11174. if ((v.$high === 0 && v.$low === 0)) {
  11175. w = w - (1) >> 0;
  11176. ((w < 0 || w >= buf.$length) ? $throwRuntimeError("index out of range") : buf.$array[buf.$offset + w] = 48);
  11177. } else {
  11178. while (true) {
  11179. if (!((v.$high > 0 || (v.$high === 0 && v.$low > 0)))) { break; }
  11180. w = w - (1) >> 0;
  11181. ((w < 0 || w >= buf.$length) ? $throwRuntimeError("index out of range") : buf.$array[buf.$offset + w] = ($div64(v, new $Uint64(0, 10), true).$low << 24 >>> 24) + 48 << 24 >>> 24);
  11182. v = $div64(v, (new $Uint64(0, 10)), false);
  11183. }
  11184. }
  11185. return w;
  11186. };
  11187. Duration.prototype.Nanoseconds = function() {
  11188. var $ptr, d;
  11189. d = this;
  11190. return new $Int64(d.$high, d.$low);
  11191. };
  11192. $ptrType(Duration).prototype.Nanoseconds = function() { return this.$get().Nanoseconds(); };
  11193. Duration.prototype.Seconds = function() {
  11194. var $ptr, d, nsec, sec;
  11195. d = this;
  11196. sec = $div64(d, new Duration(0, 1000000000), false);
  11197. nsec = $div64(d, new Duration(0, 1000000000), true);
  11198. return $flatten64(sec) + $flatten64(nsec) * 1e-09;
  11199. };
  11200. $ptrType(Duration).prototype.Seconds = function() { return this.$get().Seconds(); };
  11201. Duration.prototype.Minutes = function() {
  11202. var $ptr, d, min, nsec;
  11203. d = this;
  11204. min = $div64(d, new Duration(13, 4165425152), false);
  11205. nsec = $div64(d, new Duration(13, 4165425152), true);
  11206. return $flatten64(min) + $flatten64(nsec) * 1.6666666666666667e-11;
  11207. };
  11208. $ptrType(Duration).prototype.Minutes = function() { return this.$get().Minutes(); };
  11209. Duration.prototype.Hours = function() {
  11210. var $ptr, d, hour, nsec;
  11211. d = this;
  11212. hour = $div64(d, new Duration(838, 817405952), false);
  11213. nsec = $div64(d, new Duration(838, 817405952), true);
  11214. return $flatten64(hour) + $flatten64(nsec) * 2.777777777777778e-13;
  11215. };
  11216. $ptrType(Duration).prototype.Hours = function() { return this.$get().Hours(); };
  11217. Time.ptr.prototype.Add = function(d) {
  11218. var $ptr, d, nsec, t, x, x$1, x$2, x$3, x$4, x$5, x$6, x$7;
  11219. t = $clone(this, Time);
  11220. t.sec = (x = t.sec, x$1 = (x$2 = $div64(d, new Duration(0, 1000000000), false), new $Int64(x$2.$high, x$2.$low)), new $Int64(x.$high + x$1.$high, x.$low + x$1.$low));
  11221. nsec = t.nsec + ((x$3 = $div64(d, new Duration(0, 1000000000), true), x$3.$low + ((x$3.$high >> 31) * 4294967296)) >> 0) >> 0;
  11222. if (nsec >= 1000000000) {
  11223. t.sec = (x$4 = t.sec, x$5 = new $Int64(0, 1), new $Int64(x$4.$high + x$5.$high, x$4.$low + x$5.$low));
  11224. nsec = nsec - (1000000000) >> 0;
  11225. } else if (nsec < 0) {
  11226. t.sec = (x$6 = t.sec, x$7 = new $Int64(0, 1), new $Int64(x$6.$high - x$7.$high, x$6.$low - x$7.$low));
  11227. nsec = nsec + (1000000000) >> 0;
  11228. }
  11229. t.nsec = nsec;
  11230. return t;
  11231. };
  11232. Time.prototype.Add = function(d) { return this.$val.Add(d); };
  11233. Time.ptr.prototype.Sub = function(u) {
  11234. var $ptr, d, t, u, x, x$1, x$2, x$3, x$4;
  11235. t = $clone(this, Time);
  11236. u = $clone(u, Time);
  11237. d = (x = $mul64((x$1 = (x$2 = t.sec, x$3 = u.sec, new $Int64(x$2.$high - x$3.$high, x$2.$low - x$3.$low)), new Duration(x$1.$high, x$1.$low)), new Duration(0, 1000000000)), x$4 = new Duration(0, (t.nsec - u.nsec >> 0)), new Duration(x.$high + x$4.$high, x.$low + x$4.$low));
  11238. if (u.Add(d).Equal(t)) {
  11239. return d;
  11240. } else if (t.Before(u)) {
  11241. return new Duration(-2147483648, 0);
  11242. } else {
  11243. return new Duration(2147483647, 4294967295);
  11244. }
  11245. };
  11246. Time.prototype.Sub = function(u) { return this.$val.Sub(u); };
  11247. Time.ptr.prototype.AddDate = function(years, months$1, days$1) {
  11248. var $ptr, _r, _r$1, _r$2, _tuple$1, _tuple$2, day, days$1, hour, min, month, months$1, sec, t, year, years, $s, $r;
  11249. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; day = $f.day; days$1 = $f.days$1; hour = $f.hour; min = $f.min; month = $f.month; months$1 = $f.months$1; sec = $f.sec; t = $f.t; year = $f.year; years = $f.years; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  11250. t = $clone(this, Time);
  11251. _r = t.Date(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  11252. _tuple$1 = _r; year = _tuple$1[0]; month = _tuple$1[1]; day = _tuple$1[2];
  11253. _r$1 = t.Clock(); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  11254. _tuple$2 = _r$1; hour = _tuple$2[0]; min = _tuple$2[1]; sec = _tuple$2[2];
  11255. _r$2 = Date(year + years >> 0, month + (months$1 >> 0) >> 0, day + days$1 >> 0, hour, min, sec, (t.nsec >> 0), t.loc); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  11256. return _r$2;
  11257. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Time.ptr.prototype.AddDate }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f.day = day; $f.days$1 = days$1; $f.hour = hour; $f.min = min; $f.month = month; $f.months$1 = months$1; $f.sec = sec; $f.t = t; $f.year = year; $f.years = years; $f.$s = $s; $f.$r = $r; return $f;
  11258. };
  11259. Time.prototype.AddDate = function(years, months$1, days$1) { return this.$val.AddDate(years, months$1, days$1); };
  11260. Time.ptr.prototype.date = function(full) {
  11261. var $ptr, _r, _r$1, _tuple$1, day, full, month, t, yday, year, $s, $r;
  11262. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _tuple$1 = $f._tuple$1; day = $f.day; full = $f.full; month = $f.month; t = $f.t; yday = $f.yday; year = $f.year; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  11263. year = 0;
  11264. month = 0;
  11265. day = 0;
  11266. yday = 0;
  11267. t = $clone(this, Time);
  11268. _r = t.abs(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  11269. _r$1 = absDate(_r, full); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  11270. _tuple$1 = _r$1; year = _tuple$1[0]; month = _tuple$1[1]; day = _tuple$1[2]; yday = _tuple$1[3];
  11271. return [year, month, day, yday];
  11272. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Time.ptr.prototype.date }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._tuple$1 = _tuple$1; $f.day = day; $f.full = full; $f.month = month; $f.t = t; $f.yday = yday; $f.year = year; $f.$s = $s; $f.$r = $r; return $f;
  11273. };
  11274. Time.prototype.date = function(full) { return this.$val.date(full); };
  11275. absDate = function(abs, full) {
  11276. var $ptr, _q, abs, begin, d, day, end, full, month, n, x, x$1, x$10, x$11, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9, y, yday, year;
  11277. year = 0;
  11278. month = 0;
  11279. day = 0;
  11280. yday = 0;
  11281. d = $div64(abs, new $Uint64(0, 86400), false);
  11282. n = $div64(d, new $Uint64(0, 146097), false);
  11283. y = $mul64(new $Uint64(0, 400), n);
  11284. d = (x = $mul64(new $Uint64(0, 146097), n), new $Uint64(d.$high - x.$high, d.$low - x.$low));
  11285. n = $div64(d, new $Uint64(0, 36524), false);
  11286. n = (x$1 = $shiftRightUint64(n, 2), new $Uint64(n.$high - x$1.$high, n.$low - x$1.$low));
  11287. y = (x$2 = $mul64(new $Uint64(0, 100), n), new $Uint64(y.$high + x$2.$high, y.$low + x$2.$low));
  11288. d = (x$3 = $mul64(new $Uint64(0, 36524), n), new $Uint64(d.$high - x$3.$high, d.$low - x$3.$low));
  11289. n = $div64(d, new $Uint64(0, 1461), false);
  11290. y = (x$4 = $mul64(new $Uint64(0, 4), n), new $Uint64(y.$high + x$4.$high, y.$low + x$4.$low));
  11291. d = (x$5 = $mul64(new $Uint64(0, 1461), n), new $Uint64(d.$high - x$5.$high, d.$low - x$5.$low));
  11292. n = $div64(d, new $Uint64(0, 365), false);
  11293. n = (x$6 = $shiftRightUint64(n, 2), new $Uint64(n.$high - x$6.$high, n.$low - x$6.$low));
  11294. y = (x$7 = n, new $Uint64(y.$high + x$7.$high, y.$low + x$7.$low));
  11295. d = (x$8 = $mul64(new $Uint64(0, 365), n), new $Uint64(d.$high - x$8.$high, d.$low - x$8.$low));
  11296. year = ((x$9 = (x$10 = new $Int64(y.$high, y.$low), new $Int64(x$10.$high + -69, x$10.$low + 4075721025)), x$9.$low + ((x$9.$high >> 31) * 4294967296)) >> 0);
  11297. yday = (d.$low >> 0);
  11298. if (!full) {
  11299. return [year, month, day, yday];
  11300. }
  11301. day = yday;
  11302. if (isLeap(year)) {
  11303. if (day > 59) {
  11304. day = day - (1) >> 0;
  11305. } else if (day === 59) {
  11306. month = 2;
  11307. day = 29;
  11308. return [year, month, day, yday];
  11309. }
  11310. }
  11311. month = ((_q = day / 31, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")) >> 0);
  11312. end = ((x$11 = month + 1 >> 0, ((x$11 < 0 || x$11 >= daysBefore.length) ? $throwRuntimeError("index out of range") : daysBefore[x$11])) >> 0);
  11313. begin = 0;
  11314. if (day >= end) {
  11315. month = month + (1) >> 0;
  11316. begin = end;
  11317. } else {
  11318. begin = (((month < 0 || month >= daysBefore.length) ? $throwRuntimeError("index out of range") : daysBefore[month]) >> 0);
  11319. }
  11320. month = month + (1) >> 0;
  11321. day = (day - begin >> 0) + 1 >> 0;
  11322. return [year, month, day, yday];
  11323. };
  11324. Now = function() {
  11325. var $ptr, _tuple$1, nsec, sec;
  11326. _tuple$1 = now(); sec = _tuple$1[0]; nsec = _tuple$1[1];
  11327. return new Time.ptr(new $Int64(sec.$high + 14, sec.$low + 2006054656), nsec, $pkg.Local);
  11328. };
  11329. $pkg.Now = Now;
  11330. Time.ptr.prototype.UTC = function() {
  11331. var $ptr, t;
  11332. t = $clone(this, Time);
  11333. t.loc = $pkg.UTC;
  11334. return t;
  11335. };
  11336. Time.prototype.UTC = function() { return this.$val.UTC(); };
  11337. Time.ptr.prototype.Local = function() {
  11338. var $ptr, t;
  11339. t = $clone(this, Time);
  11340. t.loc = $pkg.Local;
  11341. return t;
  11342. };
  11343. Time.prototype.Local = function() { return this.$val.Local(); };
  11344. Time.ptr.prototype.In = function(loc) {
  11345. var $ptr, loc, t;
  11346. t = $clone(this, Time);
  11347. if (loc === ptrType$1.nil) {
  11348. $panic(new $String("time: missing Location in call to Time.In"));
  11349. }
  11350. t.loc = loc;
  11351. return t;
  11352. };
  11353. Time.prototype.In = function(loc) { return this.$val.In(loc); };
  11354. Time.ptr.prototype.Location = function() {
  11355. var $ptr, l, t;
  11356. t = $clone(this, Time);
  11357. l = t.loc;
  11358. if (l === ptrType$1.nil) {
  11359. l = $pkg.UTC;
  11360. }
  11361. return l;
  11362. };
  11363. Time.prototype.Location = function() { return this.$val.Location(); };
  11364. Time.ptr.prototype.Zone = function() {
  11365. var $ptr, _r, _tuple$1, name, offset, t, x, $s, $r;
  11366. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tuple$1 = $f._tuple$1; name = $f.name; offset = $f.offset; t = $f.t; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  11367. name = "";
  11368. offset = 0;
  11369. t = $clone(this, Time);
  11370. _r = t.loc.lookup((x = t.sec, new $Int64(x.$high + -15, x.$low + 2288912640))); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  11371. _tuple$1 = _r; name = _tuple$1[0]; offset = _tuple$1[1];
  11372. return [name, offset];
  11373. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Time.ptr.prototype.Zone }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple$1 = _tuple$1; $f.name = name; $f.offset = offset; $f.t = t; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
  11374. };
  11375. Time.prototype.Zone = function() { return this.$val.Zone(); };
  11376. Time.ptr.prototype.Unix = function() {
  11377. var $ptr, t, x;
  11378. t = $clone(this, Time);
  11379. return (x = t.sec, new $Int64(x.$high + -15, x.$low + 2288912640));
  11380. };
  11381. Time.prototype.Unix = function() { return this.$val.Unix(); };
  11382. Time.ptr.prototype.UnixNano = function() {
  11383. var $ptr, t, x, x$1, x$2;
  11384. t = $clone(this, Time);
  11385. return (x = $mul64(((x$1 = t.sec, new $Int64(x$1.$high + -15, x$1.$low + 2288912640))), new $Int64(0, 1000000000)), x$2 = new $Int64(0, t.nsec), new $Int64(x.$high + x$2.$high, x.$low + x$2.$low));
  11386. };
  11387. Time.prototype.UnixNano = function() { return this.$val.UnixNano(); };
  11388. Time.ptr.prototype.MarshalBinary = function() {
  11389. var $ptr, _q, _r, _r$1, _tuple$1, enc, offset, offsetMin, t, $s, $r;
  11390. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _q = $f._q; _r = $f._r; _r$1 = $f._r$1; _tuple$1 = $f._tuple$1; enc = $f.enc; offset = $f.offset; offsetMin = $f.offsetMin; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  11391. t = $clone(this, Time);
  11392. offsetMin = 0;
  11393. /* */ if (t.Location() === utcLoc) { $s = 1; continue; }
  11394. /* */ $s = 2; continue;
  11395. /* if (t.Location() === utcLoc) { */ case 1:
  11396. offsetMin = -1;
  11397. $s = 3; continue;
  11398. /* } else { */ case 2:
  11399. _r = t.Zone(); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  11400. _tuple$1 = _r; offset = _tuple$1[1];
  11401. if (!(((_r$1 = offset % 60, _r$1 === _r$1 ? _r$1 : $throwRuntimeError("integer divide by zero")) === 0))) {
  11402. return [sliceType$3.nil, errors.New("Time.MarshalBinary: zone offset has fractional minute")];
  11403. }
  11404. offset = (_q = offset / (60), (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero"));
  11405. if (offset < -32768 || (offset === -1) || offset > 32767) {
  11406. return [sliceType$3.nil, errors.New("Time.MarshalBinary: unexpected zone offset")];
  11407. }
  11408. offsetMin = (offset << 16 >> 16);
  11409. /* } */ case 3:
  11410. enc = new sliceType$3([1, ($shiftRightInt64(t.sec, 56).$low << 24 >>> 24), ($shiftRightInt64(t.sec, 48).$low << 24 >>> 24), ($shiftRightInt64(t.sec, 40).$low << 24 >>> 24), ($shiftRightInt64(t.sec, 32).$low << 24 >>> 24), ($shiftRightInt64(t.sec, 24).$low << 24 >>> 24), ($shiftRightInt64(t.sec, 16).$low << 24 >>> 24), ($shiftRightInt64(t.sec, 8).$low << 24 >>> 24), (t.sec.$low << 24 >>> 24), ((t.nsec >> 24 >> 0) << 24 >>> 24), ((t.nsec >> 16 >> 0) << 24 >>> 24), ((t.nsec >> 8 >> 0) << 24 >>> 24), (t.nsec << 24 >>> 24), ((offsetMin >> 8 << 16 >> 16) << 24 >>> 24), (offsetMin << 24 >>> 24)]);
  11411. return [enc, $ifaceNil];
  11412. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Time.ptr.prototype.MarshalBinary }; } $f.$ptr = $ptr; $f._q = _q; $f._r = _r; $f._r$1 = _r$1; $f._tuple$1 = _tuple$1; $f.enc = enc; $f.offset = offset; $f.offsetMin = offsetMin; $f.t = t; $f.$s = $s; $f.$r = $r; return $f;
  11413. };
  11414. Time.prototype.MarshalBinary = function() { return this.$val.MarshalBinary(); };
  11415. Time.ptr.prototype.UnmarshalBinary = function(data$1) {
  11416. var $ptr, _r, _tuple$1, buf, data$1, localoff, offset, t, x, x$1, x$10, x$11, x$12, x$13, x$14, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9, $s, $r;
  11417. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tuple$1 = $f._tuple$1; buf = $f.buf; data$1 = $f.data$1; localoff = $f.localoff; offset = $f.offset; t = $f.t; x = $f.x; x$1 = $f.x$1; x$10 = $f.x$10; x$11 = $f.x$11; x$12 = $f.x$12; x$13 = $f.x$13; x$14 = $f.x$14; x$2 = $f.x$2; x$3 = $f.x$3; x$4 = $f.x$4; x$5 = $f.x$5; x$6 = $f.x$6; x$7 = $f.x$7; x$8 = $f.x$8; x$9 = $f.x$9; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  11418. t = this;
  11419. buf = data$1;
  11420. if (buf.$length === 0) {
  11421. return errors.New("Time.UnmarshalBinary: no data");
  11422. }
  11423. if (!(((0 >= buf.$length ? $throwRuntimeError("index out of range") : buf.$array[buf.$offset + 0]) === 1))) {
  11424. return errors.New("Time.UnmarshalBinary: unsupported version");
  11425. }
  11426. if (!((buf.$length === 15))) {
  11427. return errors.New("Time.UnmarshalBinary: invalid length");
  11428. }
  11429. buf = $subslice(buf, 1);
  11430. t.sec = (x = (x$1 = (x$2 = (x$3 = (x$4 = (x$5 = (x$6 = new $Int64(0, (7 >= buf.$length ? $throwRuntimeError("index out of range") : buf.$array[buf.$offset + 7])), x$7 = $shiftLeft64(new $Int64(0, (6 >= buf.$length ? $throwRuntimeError("index out of range") : buf.$array[buf.$offset + 6])), 8), new $Int64(x$6.$high | x$7.$high, (x$6.$low | x$7.$low) >>> 0)), x$8 = $shiftLeft64(new $Int64(0, (5 >= buf.$length ? $throwRuntimeError("index out of range") : buf.$array[buf.$offset + 5])), 16), new $Int64(x$5.$high | x$8.$high, (x$5.$low | x$8.$low) >>> 0)), x$9 = $shiftLeft64(new $Int64(0, (4 >= buf.$length ? $throwRuntimeError("index out of range") : buf.$array[buf.$offset + 4])), 24), new $Int64(x$4.$high | x$9.$high, (x$4.$low | x$9.$low) >>> 0)), x$10 = $shiftLeft64(new $Int64(0, (3 >= buf.$length ? $throwRuntimeError("index out of range") : buf.$array[buf.$offset + 3])), 32), new $Int64(x$3.$high | x$10.$high, (x$3.$low | x$10.$low) >>> 0)), x$11 = $shiftLeft64(new $Int64(0, (2 >= buf.$length ? $throwRuntimeError("index out of range") : buf.$array[buf.$offset + 2])), 40), new $Int64(x$2.$high | x$11.$high, (x$2.$low | x$11.$low) >>> 0)), x$12 = $shiftLeft64(new $Int64(0, (1 >= buf.$length ? $throwRuntimeError("index out of range") : buf.$array[buf.$offset + 1])), 48), new $Int64(x$1.$high | x$12.$high, (x$1.$low | x$12.$low) >>> 0)), x$13 = $shiftLeft64(new $Int64(0, (0 >= buf.$length ? $throwRuntimeError("index out of range") : buf.$array[buf.$offset + 0])), 56), new $Int64(x.$high | x$13.$high, (x.$low | x$13.$low) >>> 0));
  11431. buf = $subslice(buf, 8);
  11432. t.nsec = ((((3 >= buf.$length ? $throwRuntimeError("index out of range") : buf.$array[buf.$offset + 3]) >> 0) | (((2 >= buf.$length ? $throwRuntimeError("index out of range") : buf.$array[buf.$offset + 2]) >> 0) << 8 >> 0)) | (((1 >= buf.$length ? $throwRuntimeError("index out of range") : buf.$array[buf.$offset + 1]) >> 0) << 16 >> 0)) | (((0 >= buf.$length ? $throwRuntimeError("index out of range") : buf.$array[buf.$offset + 0]) >> 0) << 24 >> 0);
  11433. buf = $subslice(buf, 4);
  11434. offset = ((((1 >= buf.$length ? $throwRuntimeError("index out of range") : buf.$array[buf.$offset + 1]) << 16 >> 16) | (((0 >= buf.$length ? $throwRuntimeError("index out of range") : buf.$array[buf.$offset + 0]) << 16 >> 16) << 8 << 16 >> 16)) >> 0) * 60 >> 0;
  11435. /* */ if (offset === -60) { $s = 1; continue; }
  11436. /* */ $s = 2; continue;
  11437. /* if (offset === -60) { */ case 1:
  11438. t.loc = utcLoc;
  11439. $s = 3; continue;
  11440. /* } else { */ case 2:
  11441. _r = $pkg.Local.lookup((x$14 = t.sec, new $Int64(x$14.$high + -15, x$14.$low + 2288912640))); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  11442. _tuple$1 = _r; localoff = _tuple$1[1];
  11443. /* */ if (offset === localoff) { $s = 5; continue; }
  11444. /* */ $s = 6; continue;
  11445. /* if (offset === localoff) { */ case 5:
  11446. t.loc = $pkg.Local;
  11447. $s = 7; continue;
  11448. /* } else { */ case 6:
  11449. t.loc = FixedZone("", offset);
  11450. /* } */ case 7:
  11451. /* } */ case 3:
  11452. return $ifaceNil;
  11453. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Time.ptr.prototype.UnmarshalBinary }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple$1 = _tuple$1; $f.buf = buf; $f.data$1 = data$1; $f.localoff = localoff; $f.offset = offset; $f.t = t; $f.x = x; $f.x$1 = x$1; $f.x$10 = x$10; $f.x$11 = x$11; $f.x$12 = x$12; $f.x$13 = x$13; $f.x$14 = x$14; $f.x$2 = x$2; $f.x$3 = x$3; $f.x$4 = x$4; $f.x$5 = x$5; $f.x$6 = x$6; $f.x$7 = x$7; $f.x$8 = x$8; $f.x$9 = x$9; $f.$s = $s; $f.$r = $r; return $f;
  11454. };
  11455. Time.prototype.UnmarshalBinary = function(data$1) { return this.$val.UnmarshalBinary(data$1); };
  11456. Time.ptr.prototype.GobEncode = function() {
  11457. var $ptr, _r, t, $s, $r;
  11458. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  11459. t = $clone(this, Time);
  11460. _r = t.MarshalBinary(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  11461. return _r;
  11462. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Time.ptr.prototype.GobEncode }; } $f.$ptr = $ptr; $f._r = _r; $f.t = t; $f.$s = $s; $f.$r = $r; return $f;
  11463. };
  11464. Time.prototype.GobEncode = function() { return this.$val.GobEncode(); };
  11465. Time.ptr.prototype.GobDecode = function(data$1) {
  11466. var $ptr, _r, data$1, t, $s, $r;
  11467. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; data$1 = $f.data$1; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  11468. t = this;
  11469. _r = t.UnmarshalBinary(data$1); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  11470. return _r;
  11471. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Time.ptr.prototype.GobDecode }; } $f.$ptr = $ptr; $f._r = _r; $f.data$1 = data$1; $f.t = t; $f.$s = $s; $f.$r = $r; return $f;
  11472. };
  11473. Time.prototype.GobDecode = function(data$1) { return this.$val.GobDecode(data$1); };
  11474. Time.ptr.prototype.MarshalJSON = function() {
  11475. var $ptr, _r, _r$1, t, y, $s, $r;
  11476. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; t = $f.t; y = $f.y; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  11477. t = $clone(this, Time);
  11478. _r = t.Year(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  11479. y = _r;
  11480. /* */ if (y < 0 || y >= 10000) { $s = 2; continue; }
  11481. /* */ $s = 3; continue;
  11482. /* if (y < 0 || y >= 10000) { */ case 2:
  11483. return [sliceType$3.nil, errors.New("Time.MarshalJSON: year outside of range [0,9999]")];
  11484. /* } */ case 3:
  11485. _r$1 = t.Format("\"2006-01-02T15:04:05.999999999Z07:00\""); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  11486. return [new sliceType$3($stringToBytes(_r$1)), $ifaceNil];
  11487. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Time.ptr.prototype.MarshalJSON }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f.t = t; $f.y = y; $f.$s = $s; $f.$r = $r; return $f;
  11488. };
  11489. Time.prototype.MarshalJSON = function() { return this.$val.MarshalJSON(); };
  11490. Time.ptr.prototype.UnmarshalJSON = function(data$1) {
  11491. var $ptr, _r, _tuple$1, data$1, err, t, $s, $r;
  11492. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tuple$1 = $f._tuple$1; data$1 = $f.data$1; err = $f.err; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  11493. err = $ifaceNil;
  11494. t = this;
  11495. _r = Parse("\"2006-01-02T15:04:05Z07:00\"", $bytesToString(data$1)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  11496. _tuple$1 = _r; $copy(t, _tuple$1[0], Time); err = _tuple$1[1];
  11497. return err;
  11498. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Time.ptr.prototype.UnmarshalJSON }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple$1 = _tuple$1; $f.data$1 = data$1; $f.err = err; $f.t = t; $f.$s = $s; $f.$r = $r; return $f;
  11499. };
  11500. Time.prototype.UnmarshalJSON = function(data$1) { return this.$val.UnmarshalJSON(data$1); };
  11501. Time.ptr.prototype.MarshalText = function() {
  11502. var $ptr, _r, _r$1, t, y, $s, $r;
  11503. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; t = $f.t; y = $f.y; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  11504. t = $clone(this, Time);
  11505. _r = t.Year(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  11506. y = _r;
  11507. /* */ if (y < 0 || y >= 10000) { $s = 2; continue; }
  11508. /* */ $s = 3; continue;
  11509. /* if (y < 0 || y >= 10000) { */ case 2:
  11510. return [sliceType$3.nil, errors.New("Time.MarshalText: year outside of range [0,9999]")];
  11511. /* } */ case 3:
  11512. _r$1 = t.Format("2006-01-02T15:04:05.999999999Z07:00"); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  11513. return [new sliceType$3($stringToBytes(_r$1)), $ifaceNil];
  11514. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Time.ptr.prototype.MarshalText }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f.t = t; $f.y = y; $f.$s = $s; $f.$r = $r; return $f;
  11515. };
  11516. Time.prototype.MarshalText = function() { return this.$val.MarshalText(); };
  11517. Time.ptr.prototype.UnmarshalText = function(data$1) {
  11518. var $ptr, _r, _tuple$1, data$1, err, t, $s, $r;
  11519. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tuple$1 = $f._tuple$1; data$1 = $f.data$1; err = $f.err; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  11520. err = $ifaceNil;
  11521. t = this;
  11522. _r = Parse("2006-01-02T15:04:05Z07:00", $bytesToString(data$1)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  11523. _tuple$1 = _r; $copy(t, _tuple$1[0], Time); err = _tuple$1[1];
  11524. return err;
  11525. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Time.ptr.prototype.UnmarshalText }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple$1 = _tuple$1; $f.data$1 = data$1; $f.err = err; $f.t = t; $f.$s = $s; $f.$r = $r; return $f;
  11526. };
  11527. Time.prototype.UnmarshalText = function(data$1) { return this.$val.UnmarshalText(data$1); };
  11528. Unix = function(sec, nsec) {
  11529. var $ptr, n, nsec, sec, x, x$1, x$2, x$3;
  11530. if ((nsec.$high < 0 || (nsec.$high === 0 && nsec.$low < 0)) || (nsec.$high > 0 || (nsec.$high === 0 && nsec.$low >= 1000000000))) {
  11531. n = $div64(nsec, new $Int64(0, 1000000000), false);
  11532. sec = (x = n, new $Int64(sec.$high + x.$high, sec.$low + x.$low));
  11533. nsec = (x$1 = $mul64(n, new $Int64(0, 1000000000)), new $Int64(nsec.$high - x$1.$high, nsec.$low - x$1.$low));
  11534. if ((nsec.$high < 0 || (nsec.$high === 0 && nsec.$low < 0))) {
  11535. nsec = (x$2 = new $Int64(0, 1000000000), new $Int64(nsec.$high + x$2.$high, nsec.$low + x$2.$low));
  11536. sec = (x$3 = new $Int64(0, 1), new $Int64(sec.$high - x$3.$high, sec.$low - x$3.$low));
  11537. }
  11538. }
  11539. return new Time.ptr(new $Int64(sec.$high + 14, sec.$low + 2006054656), ((nsec.$low + ((nsec.$high >> 31) * 4294967296)) >> 0), $pkg.Local);
  11540. };
  11541. $pkg.Unix = Unix;
  11542. isLeap = function(year) {
  11543. var $ptr, _r, _r$1, _r$2, year;
  11544. return ((_r = year % 4, _r === _r ? _r : $throwRuntimeError("integer divide by zero")) === 0) && (!(((_r$1 = year % 100, _r$1 === _r$1 ? _r$1 : $throwRuntimeError("integer divide by zero")) === 0)) || ((_r$2 = year % 400, _r$2 === _r$2 ? _r$2 : $throwRuntimeError("integer divide by zero")) === 0));
  11545. };
  11546. norm = function(hi, lo, base) {
  11547. var $ptr, _q, _q$1, _tmp, _tmp$1, base, hi, lo, n, n$1, nhi, nlo;
  11548. nhi = 0;
  11549. nlo = 0;
  11550. if (lo < 0) {
  11551. n = (_q = ((-lo - 1 >> 0)) / base, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")) + 1 >> 0;
  11552. hi = hi - (n) >> 0;
  11553. lo = lo + ((n * base >> 0)) >> 0;
  11554. }
  11555. if (lo >= base) {
  11556. n$1 = (_q$1 = lo / base, (_q$1 === _q$1 && _q$1 !== 1/0 && _q$1 !== -1/0) ? _q$1 >> 0 : $throwRuntimeError("integer divide by zero"));
  11557. hi = hi + (n$1) >> 0;
  11558. lo = lo - ((n$1 * base >> 0)) >> 0;
  11559. }
  11560. _tmp = hi; _tmp$1 = lo; nhi = _tmp; nlo = _tmp$1;
  11561. return [nhi, nlo];
  11562. };
  11563. Date = function(year, month, day, hour, min, sec, nsec, loc) {
  11564. var $ptr, _r, _r$1, _r$2, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, _tuple$6, _tuple$7, _tuple$8, abs, d, day, end, hour, loc, m, min, month, n, nsec, offset, sec, start, unix, utc, x, x$1, x$10, x$11, x$12, x$13, x$14, x$15, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9, y, year, $s, $r;
  11565. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; _tuple$4 = $f._tuple$4; _tuple$5 = $f._tuple$5; _tuple$6 = $f._tuple$6; _tuple$7 = $f._tuple$7; _tuple$8 = $f._tuple$8; abs = $f.abs; d = $f.d; day = $f.day; end = $f.end; hour = $f.hour; loc = $f.loc; m = $f.m; min = $f.min; month = $f.month; n = $f.n; nsec = $f.nsec; offset = $f.offset; sec = $f.sec; start = $f.start; unix = $f.unix; utc = $f.utc; x = $f.x; x$1 = $f.x$1; x$10 = $f.x$10; x$11 = $f.x$11; x$12 = $f.x$12; x$13 = $f.x$13; x$14 = $f.x$14; x$15 = $f.x$15; x$2 = $f.x$2; x$3 = $f.x$3; x$4 = $f.x$4; x$5 = $f.x$5; x$6 = $f.x$6; x$7 = $f.x$7; x$8 = $f.x$8; x$9 = $f.x$9; y = $f.y; year = $f.year; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  11566. if (loc === ptrType$1.nil) {
  11567. $panic(new $String("time: missing Location in call to Date"));
  11568. }
  11569. m = (month >> 0) - 1 >> 0;
  11570. _tuple$1 = norm(year, m, 12); year = _tuple$1[0]; m = _tuple$1[1];
  11571. month = (m >> 0) + 1 >> 0;
  11572. _tuple$2 = norm(sec, nsec, 1000000000); sec = _tuple$2[0]; nsec = _tuple$2[1];
  11573. _tuple$3 = norm(min, sec, 60); min = _tuple$3[0]; sec = _tuple$3[1];
  11574. _tuple$4 = norm(hour, min, 60); hour = _tuple$4[0]; min = _tuple$4[1];
  11575. _tuple$5 = norm(day, hour, 24); day = _tuple$5[0]; hour = _tuple$5[1];
  11576. y = (x = (x$1 = new $Int64(0, year), new $Int64(x$1.$high - -69, x$1.$low - 4075721025)), new $Uint64(x.$high, x.$low));
  11577. n = $div64(y, new $Uint64(0, 400), false);
  11578. y = (x$2 = $mul64(new $Uint64(0, 400), n), new $Uint64(y.$high - x$2.$high, y.$low - x$2.$low));
  11579. d = $mul64(new $Uint64(0, 146097), n);
  11580. n = $div64(y, new $Uint64(0, 100), false);
  11581. y = (x$3 = $mul64(new $Uint64(0, 100), n), new $Uint64(y.$high - x$3.$high, y.$low - x$3.$low));
  11582. d = (x$4 = $mul64(new $Uint64(0, 36524), n), new $Uint64(d.$high + x$4.$high, d.$low + x$4.$low));
  11583. n = $div64(y, new $Uint64(0, 4), false);
  11584. y = (x$5 = $mul64(new $Uint64(0, 4), n), new $Uint64(y.$high - x$5.$high, y.$low - x$5.$low));
  11585. d = (x$6 = $mul64(new $Uint64(0, 1461), n), new $Uint64(d.$high + x$6.$high, d.$low + x$6.$low));
  11586. n = y;
  11587. d = (x$7 = $mul64(new $Uint64(0, 365), n), new $Uint64(d.$high + x$7.$high, d.$low + x$7.$low));
  11588. d = (x$8 = new $Uint64(0, (x$9 = month - 1 >> 0, ((x$9 < 0 || x$9 >= daysBefore.length) ? $throwRuntimeError("index out of range") : daysBefore[x$9]))), new $Uint64(d.$high + x$8.$high, d.$low + x$8.$low));
  11589. if (isLeap(year) && month >= 3) {
  11590. d = (x$10 = new $Uint64(0, 1), new $Uint64(d.$high + x$10.$high, d.$low + x$10.$low));
  11591. }
  11592. d = (x$11 = new $Uint64(0, (day - 1 >> 0)), new $Uint64(d.$high + x$11.$high, d.$low + x$11.$low));
  11593. abs = $mul64(d, new $Uint64(0, 86400));
  11594. abs = (x$12 = new $Uint64(0, (((hour * 3600 >> 0) + (min * 60 >> 0) >> 0) + sec >> 0)), new $Uint64(abs.$high + x$12.$high, abs.$low + x$12.$low));
  11595. unix = (x$13 = new $Int64(abs.$high, abs.$low), new $Int64(x$13.$high + -2147483647, x$13.$low + 3844486912));
  11596. _r = loc.lookup(unix); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  11597. _tuple$6 = _r; offset = _tuple$6[1]; start = _tuple$6[3]; end = _tuple$6[4];
  11598. /* */ if (!((offset === 0))) { $s = 2; continue; }
  11599. /* */ $s = 3; continue;
  11600. /* if (!((offset === 0))) { */ case 2:
  11601. utc = (x$14 = new $Int64(0, offset), new $Int64(unix.$high - x$14.$high, unix.$low - x$14.$low));
  11602. /* */ if ((utc.$high < start.$high || (utc.$high === start.$high && utc.$low < start.$low))) { $s = 4; continue; }
  11603. /* */ if ((utc.$high > end.$high || (utc.$high === end.$high && utc.$low >= end.$low))) { $s = 5; continue; }
  11604. /* */ $s = 6; continue;
  11605. /* if ((utc.$high < start.$high || (utc.$high === start.$high && utc.$low < start.$low))) { */ case 4:
  11606. _r$1 = loc.lookup(new $Int64(start.$high - 0, start.$low - 1)); /* */ $s = 7; case 7: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  11607. _tuple$7 = _r$1; offset = _tuple$7[1];
  11608. $s = 6; continue;
  11609. /* } else if ((utc.$high > end.$high || (utc.$high === end.$high && utc.$low >= end.$low))) { */ case 5:
  11610. _r$2 = loc.lookup(end); /* */ $s = 8; case 8: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  11611. _tuple$8 = _r$2; offset = _tuple$8[1];
  11612. /* } */ case 6:
  11613. unix = (x$15 = new $Int64(0, offset), new $Int64(unix.$high - x$15.$high, unix.$low - x$15.$low));
  11614. /* } */ case 3:
  11615. return new Time.ptr(new $Int64(unix.$high + 14, unix.$low + 2006054656), (nsec >> 0), loc);
  11616. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Date }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f._tuple$4 = _tuple$4; $f._tuple$5 = _tuple$5; $f._tuple$6 = _tuple$6; $f._tuple$7 = _tuple$7; $f._tuple$8 = _tuple$8; $f.abs = abs; $f.d = d; $f.day = day; $f.end = end; $f.hour = hour; $f.loc = loc; $f.m = m; $f.min = min; $f.month = month; $f.n = n; $f.nsec = nsec; $f.offset = offset; $f.sec = sec; $f.start = start; $f.unix = unix; $f.utc = utc; $f.x = x; $f.x$1 = x$1; $f.x$10 = x$10; $f.x$11 = x$11; $f.x$12 = x$12; $f.x$13 = x$13; $f.x$14 = x$14; $f.x$15 = x$15; $f.x$2 = x$2; $f.x$3 = x$3; $f.x$4 = x$4; $f.x$5 = x$5; $f.x$6 = x$6; $f.x$7 = x$7; $f.x$8 = x$8; $f.x$9 = x$9; $f.y = y; $f.year = year; $f.$s = $s; $f.$r = $r; return $f;
  11617. };
  11618. $pkg.Date = Date;
  11619. Time.ptr.prototype.Truncate = function(d) {
  11620. var $ptr, _tuple$1, d, r, t;
  11621. t = $clone(this, Time);
  11622. if ((d.$high < 0 || (d.$high === 0 && d.$low <= 0))) {
  11623. return t;
  11624. }
  11625. _tuple$1 = div(t, d); r = _tuple$1[1];
  11626. return t.Add(new Duration(-r.$high, -r.$low));
  11627. };
  11628. Time.prototype.Truncate = function(d) { return this.$val.Truncate(d); };
  11629. Time.ptr.prototype.Round = function(d) {
  11630. var $ptr, _tuple$1, d, r, t, x;
  11631. t = $clone(this, Time);
  11632. if ((d.$high < 0 || (d.$high === 0 && d.$low <= 0))) {
  11633. return t;
  11634. }
  11635. _tuple$1 = div(t, d); r = _tuple$1[1];
  11636. if ((x = new Duration(r.$high + r.$high, r.$low + r.$low), (x.$high < d.$high || (x.$high === d.$high && x.$low < d.$low)))) {
  11637. return t.Add(new Duration(-r.$high, -r.$low));
  11638. }
  11639. return t.Add(new Duration(d.$high - r.$high, d.$low - r.$low));
  11640. };
  11641. Time.prototype.Round = function(d) { return this.$val.Round(d); };
  11642. div = function(t, d) {
  11643. var $ptr, _q, _r, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, d, d0, d1, d1$1, neg, nsec, qmod2, r, sec, t, tmp, u0, u0x, u1, x, x$1, x$10, x$11, x$12, x$13, x$14, x$15, x$16, x$17, x$18, x$19, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9;
  11644. qmod2 = 0;
  11645. r = new Duration(0, 0);
  11646. t = $clone(t, Time);
  11647. neg = false;
  11648. nsec = t.nsec;
  11649. if ((x = t.sec, (x.$high < 0 || (x.$high === 0 && x.$low < 0)))) {
  11650. neg = true;
  11651. t.sec = (x$1 = t.sec, new $Int64(-x$1.$high, -x$1.$low));
  11652. nsec = -nsec;
  11653. if (nsec < 0) {
  11654. nsec = nsec + (1000000000) >> 0;
  11655. t.sec = (x$2 = t.sec, x$3 = new $Int64(0, 1), new $Int64(x$2.$high - x$3.$high, x$2.$low - x$3.$low));
  11656. }
  11657. }
  11658. if ((d.$high < 0 || (d.$high === 0 && d.$low < 1000000000)) && (x$4 = $div64(new Duration(0, 1000000000), (new Duration(d.$high + d.$high, d.$low + d.$low)), true), (x$4.$high === 0 && x$4.$low === 0))) {
  11659. qmod2 = ((_q = nsec / ((d.$low + ((d.$high >> 31) * 4294967296)) >> 0), (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")) >> 0) & 1;
  11660. r = new Duration(0, (_r = nsec % ((d.$low + ((d.$high >> 31) * 4294967296)) >> 0), _r === _r ? _r : $throwRuntimeError("integer divide by zero")));
  11661. } else if ((x$5 = $div64(d, new Duration(0, 1000000000), true), (x$5.$high === 0 && x$5.$low === 0))) {
  11662. d1 = (x$6 = $div64(d, new Duration(0, 1000000000), false), new $Int64(x$6.$high, x$6.$low));
  11663. qmod2 = ((x$7 = $div64(t.sec, d1, false), x$7.$low + ((x$7.$high >> 31) * 4294967296)) >> 0) & 1;
  11664. r = (x$8 = $mul64((x$9 = $div64(t.sec, d1, true), new Duration(x$9.$high, x$9.$low)), new Duration(0, 1000000000)), x$10 = new Duration(0, nsec), new Duration(x$8.$high + x$10.$high, x$8.$low + x$10.$low));
  11665. } else {
  11666. sec = (x$11 = t.sec, new $Uint64(x$11.$high, x$11.$low));
  11667. tmp = $mul64(($shiftRightUint64(sec, 32)), new $Uint64(0, 1000000000));
  11668. u1 = $shiftRightUint64(tmp, 32);
  11669. u0 = $shiftLeft64(tmp, 32);
  11670. tmp = $mul64(new $Uint64(sec.$high & 0, (sec.$low & 4294967295) >>> 0), new $Uint64(0, 1000000000));
  11671. _tmp = u0; _tmp$1 = new $Uint64(u0.$high + tmp.$high, u0.$low + tmp.$low); u0x = _tmp; u0 = _tmp$1;
  11672. if ((u0.$high < u0x.$high || (u0.$high === u0x.$high && u0.$low < u0x.$low))) {
  11673. u1 = (x$12 = new $Uint64(0, 1), new $Uint64(u1.$high + x$12.$high, u1.$low + x$12.$low));
  11674. }
  11675. _tmp$2 = u0; _tmp$3 = (x$13 = new $Uint64(0, nsec), new $Uint64(u0.$high + x$13.$high, u0.$low + x$13.$low)); u0x = _tmp$2; u0 = _tmp$3;
  11676. if ((u0.$high < u0x.$high || (u0.$high === u0x.$high && u0.$low < u0x.$low))) {
  11677. u1 = (x$14 = new $Uint64(0, 1), new $Uint64(u1.$high + x$14.$high, u1.$low + x$14.$low));
  11678. }
  11679. d1$1 = new $Uint64(d.$high, d.$low);
  11680. while (true) {
  11681. if (!(!((x$15 = $shiftRightUint64(d1$1, 63), (x$15.$high === 0 && x$15.$low === 1))))) { break; }
  11682. d1$1 = $shiftLeft64(d1$1, (1));
  11683. }
  11684. d0 = new $Uint64(0, 0);
  11685. while (true) {
  11686. qmod2 = 0;
  11687. if ((u1.$high > d1$1.$high || (u1.$high === d1$1.$high && u1.$low > d1$1.$low)) || (u1.$high === d1$1.$high && u1.$low === d1$1.$low) && (u0.$high > d0.$high || (u0.$high === d0.$high && u0.$low >= d0.$low))) {
  11688. qmod2 = 1;
  11689. _tmp$4 = u0; _tmp$5 = new $Uint64(u0.$high - d0.$high, u0.$low - d0.$low); u0x = _tmp$4; u0 = _tmp$5;
  11690. if ((u0.$high > u0x.$high || (u0.$high === u0x.$high && u0.$low > u0x.$low))) {
  11691. u1 = (x$16 = new $Uint64(0, 1), new $Uint64(u1.$high - x$16.$high, u1.$low - x$16.$low));
  11692. }
  11693. u1 = (x$17 = d1$1, new $Uint64(u1.$high - x$17.$high, u1.$low - x$17.$low));
  11694. }
  11695. if ((d1$1.$high === 0 && d1$1.$low === 0) && (x$18 = new $Uint64(d.$high, d.$low), (d0.$high === x$18.$high && d0.$low === x$18.$low))) {
  11696. break;
  11697. }
  11698. d0 = $shiftRightUint64(d0, (1));
  11699. d0 = (x$19 = $shiftLeft64((new $Uint64(d1$1.$high & 0, (d1$1.$low & 1) >>> 0)), 63), new $Uint64(d0.$high | x$19.$high, (d0.$low | x$19.$low) >>> 0));
  11700. d1$1 = $shiftRightUint64(d1$1, (1));
  11701. }
  11702. r = new Duration(u0.$high, u0.$low);
  11703. }
  11704. if (neg && !((r.$high === 0 && r.$low === 0))) {
  11705. qmod2 = (qmod2 ^ (1)) >> 0;
  11706. r = new Duration(d.$high - r.$high, d.$low - r.$low);
  11707. }
  11708. return [qmod2, r];
  11709. };
  11710. Location.ptr.prototype.get = function() {
  11711. var $ptr, l, $s, $r;
  11712. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; l = $f.l; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  11713. l = this;
  11714. if (l === ptrType$1.nil) {
  11715. return utcLoc;
  11716. }
  11717. /* */ if (l === localLoc) { $s = 1; continue; }
  11718. /* */ $s = 2; continue;
  11719. /* if (l === localLoc) { */ case 1:
  11720. $r = localOnce.Do(initLocal); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  11721. /* } */ case 2:
  11722. return l;
  11723. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Location.ptr.prototype.get }; } $f.$ptr = $ptr; $f.l = l; $f.$s = $s; $f.$r = $r; return $f;
  11724. };
  11725. Location.prototype.get = function() { return this.$val.get(); };
  11726. Location.ptr.prototype.String = function() {
  11727. var $ptr, _r, l, $s, $r;
  11728. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; l = $f.l; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  11729. l = this;
  11730. _r = l.get(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  11731. return _r.name;
  11732. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Location.ptr.prototype.String }; } $f.$ptr = $ptr; $f._r = _r; $f.l = l; $f.$s = $s; $f.$r = $r; return $f;
  11733. };
  11734. Location.prototype.String = function() { return this.$val.String(); };
  11735. FixedZone = function(name, offset) {
  11736. var $ptr, l, name, offset, x;
  11737. l = new Location.ptr(name, new sliceType$1([new zone.ptr(name, offset, false)]), new sliceType$2([new zoneTrans.ptr(new $Int64(-2147483648, 0), 0, false, false)]), new $Int64(-2147483648, 0), new $Int64(2147483647, 4294967295), ptrType.nil);
  11738. l.cacheZone = (x = l.zone, (0 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 0]));
  11739. return l;
  11740. };
  11741. $pkg.FixedZone = FixedZone;
  11742. Location.ptr.prototype.lookup = function(sec) {
  11743. var $ptr, _q, _r, end, hi, isDST, l, lim, lo, m, name, offset, sec, start, tx, x, x$1, x$2, x$3, x$4, x$5, x$6, x$7, x$8, zone$1, zone$2, zone$3, $s, $r;
  11744. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _q = $f._q; _r = $f._r; end = $f.end; hi = $f.hi; isDST = $f.isDST; l = $f.l; lim = $f.lim; lo = $f.lo; m = $f.m; name = $f.name; offset = $f.offset; sec = $f.sec; start = $f.start; tx = $f.tx; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; x$3 = $f.x$3; x$4 = $f.x$4; x$5 = $f.x$5; x$6 = $f.x$6; x$7 = $f.x$7; x$8 = $f.x$8; zone$1 = $f.zone$1; zone$2 = $f.zone$2; zone$3 = $f.zone$3; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  11745. name = "";
  11746. offset = 0;
  11747. isDST = false;
  11748. start = new $Int64(0, 0);
  11749. end = new $Int64(0, 0);
  11750. l = this;
  11751. _r = l.get(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  11752. l = _r;
  11753. if (l.zone.$length === 0) {
  11754. name = "UTC";
  11755. offset = 0;
  11756. isDST = false;
  11757. start = new $Int64(-2147483648, 0);
  11758. end = new $Int64(2147483647, 4294967295);
  11759. return [name, offset, isDST, start, end];
  11760. }
  11761. zone$1 = l.cacheZone;
  11762. if (!(zone$1 === ptrType.nil) && (x = l.cacheStart, (x.$high < sec.$high || (x.$high === sec.$high && x.$low <= sec.$low))) && (x$1 = l.cacheEnd, (sec.$high < x$1.$high || (sec.$high === x$1.$high && sec.$low < x$1.$low)))) {
  11763. name = zone$1.name;
  11764. offset = zone$1.offset;
  11765. isDST = zone$1.isDST;
  11766. start = l.cacheStart;
  11767. end = l.cacheEnd;
  11768. return [name, offset, isDST, start, end];
  11769. }
  11770. if ((l.tx.$length === 0) || (x$2 = (x$3 = l.tx, (0 >= x$3.$length ? $throwRuntimeError("index out of range") : x$3.$array[x$3.$offset + 0])).when, (sec.$high < x$2.$high || (sec.$high === x$2.$high && sec.$low < x$2.$low)))) {
  11771. zone$2 = (x$4 = l.zone, x$5 = l.lookupFirstZone(), ((x$5 < 0 || x$5 >= x$4.$length) ? $throwRuntimeError("index out of range") : x$4.$array[x$4.$offset + x$5]));
  11772. name = zone$2.name;
  11773. offset = zone$2.offset;
  11774. isDST = zone$2.isDST;
  11775. start = new $Int64(-2147483648, 0);
  11776. if (l.tx.$length > 0) {
  11777. end = (x$6 = l.tx, (0 >= x$6.$length ? $throwRuntimeError("index out of range") : x$6.$array[x$6.$offset + 0])).when;
  11778. } else {
  11779. end = new $Int64(2147483647, 4294967295);
  11780. }
  11781. return [name, offset, isDST, start, end];
  11782. }
  11783. tx = l.tx;
  11784. end = new $Int64(2147483647, 4294967295);
  11785. lo = 0;
  11786. hi = tx.$length;
  11787. while (true) {
  11788. if (!((hi - lo >> 0) > 1)) { break; }
  11789. m = lo + (_q = ((hi - lo >> 0)) / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")) >> 0;
  11790. lim = ((m < 0 || m >= tx.$length) ? $throwRuntimeError("index out of range") : tx.$array[tx.$offset + m]).when;
  11791. if ((sec.$high < lim.$high || (sec.$high === lim.$high && sec.$low < lim.$low))) {
  11792. end = lim;
  11793. hi = m;
  11794. } else {
  11795. lo = m;
  11796. }
  11797. }
  11798. zone$3 = (x$7 = l.zone, x$8 = ((lo < 0 || lo >= tx.$length) ? $throwRuntimeError("index out of range") : tx.$array[tx.$offset + lo]).index, ((x$8 < 0 || x$8 >= x$7.$length) ? $throwRuntimeError("index out of range") : x$7.$array[x$7.$offset + x$8]));
  11799. name = zone$3.name;
  11800. offset = zone$3.offset;
  11801. isDST = zone$3.isDST;
  11802. start = ((lo < 0 || lo >= tx.$length) ? $throwRuntimeError("index out of range") : tx.$array[tx.$offset + lo]).when;
  11803. return [name, offset, isDST, start, end];
  11804. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Location.ptr.prototype.lookup }; } $f.$ptr = $ptr; $f._q = _q; $f._r = _r; $f.end = end; $f.hi = hi; $f.isDST = isDST; $f.l = l; $f.lim = lim; $f.lo = lo; $f.m = m; $f.name = name; $f.offset = offset; $f.sec = sec; $f.start = start; $f.tx = tx; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.x$3 = x$3; $f.x$4 = x$4; $f.x$5 = x$5; $f.x$6 = x$6; $f.x$7 = x$7; $f.x$8 = x$8; $f.zone$1 = zone$1; $f.zone$2 = zone$2; $f.zone$3 = zone$3; $f.$s = $s; $f.$r = $r; return $f;
  11805. };
  11806. Location.prototype.lookup = function(sec) { return this.$val.lookup(sec); };
  11807. Location.ptr.prototype.lookupFirstZone = function() {
  11808. var $ptr, _i, _ref, l, x, x$1, x$2, x$3, x$4, x$5, zi, zi$1;
  11809. l = this;
  11810. if (!l.firstZoneUsed()) {
  11811. return 0;
  11812. }
  11813. if (l.tx.$length > 0 && (x = l.zone, x$1 = (x$2 = l.tx, (0 >= x$2.$length ? $throwRuntimeError("index out of range") : x$2.$array[x$2.$offset + 0])).index, ((x$1 < 0 || x$1 >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + x$1])).isDST) {
  11814. zi = ((x$3 = l.tx, (0 >= x$3.$length ? $throwRuntimeError("index out of range") : x$3.$array[x$3.$offset + 0])).index >> 0) - 1 >> 0;
  11815. while (true) {
  11816. if (!(zi >= 0)) { break; }
  11817. if (!(x$4 = l.zone, ((zi < 0 || zi >= x$4.$length) ? $throwRuntimeError("index out of range") : x$4.$array[x$4.$offset + zi])).isDST) {
  11818. return zi;
  11819. }
  11820. zi = zi - (1) >> 0;
  11821. }
  11822. }
  11823. _ref = l.zone;
  11824. _i = 0;
  11825. while (true) {
  11826. if (!(_i < _ref.$length)) { break; }
  11827. zi$1 = _i;
  11828. if (!(x$5 = l.zone, ((zi$1 < 0 || zi$1 >= x$5.$length) ? $throwRuntimeError("index out of range") : x$5.$array[x$5.$offset + zi$1])).isDST) {
  11829. return zi$1;
  11830. }
  11831. _i++;
  11832. }
  11833. return 0;
  11834. };
  11835. Location.prototype.lookupFirstZone = function() { return this.$val.lookupFirstZone(); };
  11836. Location.ptr.prototype.firstZoneUsed = function() {
  11837. var $ptr, _i, _ref, l, tx;
  11838. l = this;
  11839. _ref = l.tx;
  11840. _i = 0;
  11841. while (true) {
  11842. if (!(_i < _ref.$length)) { break; }
  11843. tx = $clone(((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]), zoneTrans);
  11844. if (tx.index === 0) {
  11845. return true;
  11846. }
  11847. _i++;
  11848. }
  11849. return false;
  11850. };
  11851. Location.prototype.firstZoneUsed = function() { return this.$val.firstZoneUsed(); };
  11852. Location.ptr.prototype.lookupName = function(name, unix) {
  11853. var $ptr, _i, _i$1, _r, _r$1, _ref, _ref$1, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tuple$1, i, i$1, isDST, isDST$1, l, nam, name, offset, offset$1, ok, unix, x, x$1, x$2, zone$1, zone$2, $s, $r;
  11854. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _i = $f._i; _i$1 = $f._i$1; _r = $f._r; _r$1 = $f._r$1; _ref = $f._ref; _ref$1 = $f._ref$1; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tuple$1 = $f._tuple$1; i = $f.i; i$1 = $f.i$1; isDST = $f.isDST; isDST$1 = $f.isDST$1; l = $f.l; nam = $f.nam; name = $f.name; offset = $f.offset; offset$1 = $f.offset$1; ok = $f.ok; unix = $f.unix; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; zone$1 = $f.zone$1; zone$2 = $f.zone$2; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  11855. offset = 0;
  11856. isDST = false;
  11857. ok = false;
  11858. l = this;
  11859. _r = l.get(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  11860. l = _r;
  11861. _ref = l.zone;
  11862. _i = 0;
  11863. /* while (true) { */ case 2:
  11864. /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 3; continue; }
  11865. i = _i;
  11866. zone$1 = (x = l.zone, ((i < 0 || i >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + i]));
  11867. /* */ if (zone$1.name === name) { $s = 4; continue; }
  11868. /* */ $s = 5; continue;
  11869. /* if (zone$1.name === name) { */ case 4:
  11870. _r$1 = l.lookup((x$1 = new $Int64(0, zone$1.offset), new $Int64(unix.$high - x$1.$high, unix.$low - x$1.$low))); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  11871. _tuple$1 = _r$1; nam = _tuple$1[0]; offset$1 = _tuple$1[1]; isDST$1 = _tuple$1[2];
  11872. if (nam === zone$1.name) {
  11873. _tmp = offset$1; _tmp$1 = isDST$1; _tmp$2 = true; offset = _tmp; isDST = _tmp$1; ok = _tmp$2;
  11874. return [offset, isDST, ok];
  11875. }
  11876. /* } */ case 5:
  11877. _i++;
  11878. /* } */ $s = 2; continue; case 3:
  11879. _ref$1 = l.zone;
  11880. _i$1 = 0;
  11881. while (true) {
  11882. if (!(_i$1 < _ref$1.$length)) { break; }
  11883. i$1 = _i$1;
  11884. zone$2 = (x$2 = l.zone, ((i$1 < 0 || i$1 >= x$2.$length) ? $throwRuntimeError("index out of range") : x$2.$array[x$2.$offset + i$1]));
  11885. if (zone$2.name === name) {
  11886. _tmp$3 = zone$2.offset; _tmp$4 = zone$2.isDST; _tmp$5 = true; offset = _tmp$3; isDST = _tmp$4; ok = _tmp$5;
  11887. return [offset, isDST, ok];
  11888. }
  11889. _i$1++;
  11890. }
  11891. return [offset, isDST, ok];
  11892. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Location.ptr.prototype.lookupName }; } $f.$ptr = $ptr; $f._i = _i; $f._i$1 = _i$1; $f._r = _r; $f._r$1 = _r$1; $f._ref = _ref; $f._ref$1 = _ref$1; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tuple$1 = _tuple$1; $f.i = i; $f.i$1 = i$1; $f.isDST = isDST; $f.isDST$1 = isDST$1; $f.l = l; $f.nam = nam; $f.name = name; $f.offset = offset; $f.offset$1 = offset$1; $f.ok = ok; $f.unix = unix; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.zone$1 = zone$1; $f.zone$2 = zone$2; $f.$s = $s; $f.$r = $r; return $f;
  11893. };
  11894. Location.prototype.lookupName = function(name, unix) { return this.$val.lookupName(name, unix); };
  11895. ptrType$7.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}];
  11896. ptrType$8.methods = [{prop: "Stop", name: "Stop", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "Reset", name: "Reset", pkg: "", typ: $funcType([Duration], [$Bool], false)}];
  11897. Time.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Format", name: "Format", pkg: "", typ: $funcType([$String], [$String], false)}, {prop: "After", name: "After", pkg: "", typ: $funcType([Time], [$Bool], false)}, {prop: "Before", name: "Before", pkg: "", typ: $funcType([Time], [$Bool], false)}, {prop: "Equal", name: "Equal", pkg: "", typ: $funcType([Time], [$Bool], false)}, {prop: "IsZero", name: "IsZero", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "abs", name: "abs", pkg: "time", typ: $funcType([], [$Uint64], false)}, {prop: "locabs", name: "locabs", pkg: "time", typ: $funcType([], [$String, $Int, $Uint64], false)}, {prop: "Date", name: "Date", pkg: "", typ: $funcType([], [$Int, Month, $Int], false)}, {prop: "Year", name: "Year", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Month", name: "Month", pkg: "", typ: $funcType([], [Month], false)}, {prop: "Day", name: "Day", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Weekday", name: "Weekday", pkg: "", typ: $funcType([], [Weekday], false)}, {prop: "ISOWeek", name: "ISOWeek", pkg: "", typ: $funcType([], [$Int, $Int], false)}, {prop: "Clock", name: "Clock", pkg: "", typ: $funcType([], [$Int, $Int, $Int], false)}, {prop: "Hour", name: "Hour", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Minute", name: "Minute", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Second", name: "Second", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Nanosecond", name: "Nanosecond", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "YearDay", name: "YearDay", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Add", name: "Add", pkg: "", typ: $funcType([Duration], [Time], false)}, {prop: "Sub", name: "Sub", pkg: "", typ: $funcType([Time], [Duration], false)}, {prop: "AddDate", name: "AddDate", pkg: "", typ: $funcType([$Int, $Int, $Int], [Time], false)}, {prop: "date", name: "date", pkg: "time", typ: $funcType([$Bool], [$Int, Month, $Int, $Int], false)}, {prop: "UTC", name: "UTC", pkg: "", typ: $funcType([], [Time], false)}, {prop: "Local", name: "Local", pkg: "", typ: $funcType([], [Time], false)}, {prop: "In", name: "In", pkg: "", typ: $funcType([ptrType$1], [Time], false)}, {prop: "Location", name: "Location", pkg: "", typ: $funcType([], [ptrType$1], false)}, {prop: "Zone", name: "Zone", pkg: "", typ: $funcType([], [$String, $Int], false)}, {prop: "Unix", name: "Unix", pkg: "", typ: $funcType([], [$Int64], false)}, {prop: "UnixNano", name: "UnixNano", pkg: "", typ: $funcType([], [$Int64], false)}, {prop: "MarshalBinary", name: "MarshalBinary", pkg: "", typ: $funcType([], [sliceType$3, $error], false)}, {prop: "GobEncode", name: "GobEncode", pkg: "", typ: $funcType([], [sliceType$3, $error], false)}, {prop: "MarshalJSON", name: "MarshalJSON", pkg: "", typ: $funcType([], [sliceType$3, $error], false)}, {prop: "MarshalText", name: "MarshalText", pkg: "", typ: $funcType([], [sliceType$3, $error], false)}, {prop: "Truncate", name: "Truncate", pkg: "", typ: $funcType([Duration], [Time], false)}, {prop: "Round", name: "Round", pkg: "", typ: $funcType([Duration], [Time], false)}];
  11898. ptrType$10.methods = [{prop: "UnmarshalBinary", name: "UnmarshalBinary", pkg: "", typ: $funcType([sliceType$3], [$error], false)}, {prop: "GobDecode", name: "GobDecode", pkg: "", typ: $funcType([sliceType$3], [$error], false)}, {prop: "UnmarshalJSON", name: "UnmarshalJSON", pkg: "", typ: $funcType([sliceType$3], [$error], false)}, {prop: "UnmarshalText", name: "UnmarshalText", pkg: "", typ: $funcType([sliceType$3], [$error], false)}];
  11899. Month.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}];
  11900. Weekday.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}];
  11901. Duration.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Nanoseconds", name: "Nanoseconds", pkg: "", typ: $funcType([], [$Int64], false)}, {prop: "Seconds", name: "Seconds", pkg: "", typ: $funcType([], [$Float64], false)}, {prop: "Minutes", name: "Minutes", pkg: "", typ: $funcType([], [$Float64], false)}, {prop: "Hours", name: "Hours", pkg: "", typ: $funcType([], [$Float64], false)}];
  11902. ptrType$1.methods = [{prop: "get", name: "get", pkg: "time", typ: $funcType([], [ptrType$1], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "lookup", name: "lookup", pkg: "time", typ: $funcType([$Int64], [$String, $Int, $Bool, $Int64, $Int64], false)}, {prop: "lookupFirstZone", name: "lookupFirstZone", pkg: "time", typ: $funcType([], [$Int], false)}, {prop: "firstZoneUsed", name: "firstZoneUsed", pkg: "time", typ: $funcType([], [$Bool], false)}, {prop: "lookupName", name: "lookupName", pkg: "time", typ: $funcType([$String, $Int64], [$Int, $Bool, $Bool], false)}];
  11903. runtimeTimer.init([{prop: "i", name: "i", pkg: "time", typ: $Int32, tag: ""}, {prop: "when", name: "when", pkg: "time", typ: $Int64, tag: ""}, {prop: "period", name: "period", pkg: "time", typ: $Int64, tag: ""}, {prop: "f", name: "f", pkg: "time", typ: funcType$1, tag: ""}, {prop: "arg", name: "arg", pkg: "time", typ: $emptyInterface, tag: ""}, {prop: "timeout", name: "timeout", pkg: "time", typ: ptrType$6, tag: ""}, {prop: "active", name: "active", pkg: "time", typ: $Bool, tag: ""}]);
  11904. ParseError.init([{prop: "Layout", name: "Layout", pkg: "", typ: $String, tag: ""}, {prop: "Value", name: "Value", pkg: "", typ: $String, tag: ""}, {prop: "LayoutElem", name: "LayoutElem", pkg: "", typ: $String, tag: ""}, {prop: "ValueElem", name: "ValueElem", pkg: "", typ: $String, tag: ""}, {prop: "Message", name: "Message", pkg: "", typ: $String, tag: ""}]);
  11905. Timer.init([{prop: "C", name: "C", pkg: "", typ: chanType$2, tag: ""}, {prop: "r", name: "r", pkg: "time", typ: runtimeTimer, tag: ""}]);
  11906. Time.init([{prop: "sec", name: "sec", pkg: "time", typ: $Int64, tag: ""}, {prop: "nsec", name: "nsec", pkg: "time", typ: $Int32, tag: ""}, {prop: "loc", name: "loc", pkg: "time", typ: ptrType$1, tag: ""}]);
  11907. Location.init([{prop: "name", name: "name", pkg: "time", typ: $String, tag: ""}, {prop: "zone", name: "zone", pkg: "time", typ: sliceType$1, tag: ""}, {prop: "tx", name: "tx", pkg: "time", typ: sliceType$2, tag: ""}, {prop: "cacheStart", name: "cacheStart", pkg: "time", typ: $Int64, tag: ""}, {prop: "cacheEnd", name: "cacheEnd", pkg: "time", typ: $Int64, tag: ""}, {prop: "cacheZone", name: "cacheZone", pkg: "time", typ: ptrType, tag: ""}]);
  11908. zone.init([{prop: "name", name: "name", pkg: "time", typ: $String, tag: ""}, {prop: "offset", name: "offset", pkg: "time", typ: $Int, tag: ""}, {prop: "isDST", name: "isDST", pkg: "time", typ: $Bool, tag: ""}]);
  11909. zoneTrans.init([{prop: "when", name: "when", pkg: "time", typ: $Int64, tag: ""}, {prop: "index", name: "index", pkg: "time", typ: $Uint8, tag: ""}, {prop: "isstd", name: "isstd", pkg: "time", typ: $Bool, tag: ""}, {prop: "isutc", name: "isutc", pkg: "time", typ: $Bool, tag: ""}]);
  11910. $init = function() {
  11911. $pkg.$init = function() {};
  11912. /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  11913. $r = errors.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  11914. $r = js.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  11915. $r = nosync.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  11916. $r = runtime.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  11917. $r = strings.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  11918. $r = syscall.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  11919. localLoc = new Location.ptr();
  11920. localOnce = new nosync.Once.ptr();
  11921. std0x = $toNativeArray($kindInt, [260, 265, 524, 526, 528, 274]);
  11922. longDayNames = new sliceType(["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"]);
  11923. shortDayNames = new sliceType(["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"]);
  11924. shortMonthNames = new sliceType(["---", "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]);
  11925. longMonthNames = new sliceType(["---", "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]);
  11926. atoiError = errors.New("time: invalid number");
  11927. errBad = errors.New("bad value for field");
  11928. errLeadingInt = errors.New("time: bad [0-9]*");
  11929. months = $toNativeArray($kindString, ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]);
  11930. days = $toNativeArray($kindString, ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"]);
  11931. unitMap = (_map = new $Map(), _key = "ns", _map[_key] = { k: _key, v: 1 }, _key = "us", _map[_key] = { k: _key, v: 1000 }, _key = "\xC2\xB5s", _map[_key] = { k: _key, v: 1000 }, _key = "\xCE\xBCs", _map[_key] = { k: _key, v: 1000 }, _key = "ms", _map[_key] = { k: _key, v: 1e+06 }, _key = "s", _map[_key] = { k: _key, v: 1e+09 }, _key = "m", _map[_key] = { k: _key, v: 6e+10 }, _key = "h", _map[_key] = { k: _key, v: 3.6e+12 }, _map);
  11932. daysBefore = $toNativeArray($kindInt32, [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365]);
  11933. utcLoc = new Location.ptr("UTC", sliceType$1.nil, sliceType$2.nil, new $Int64(0, 0), new $Int64(0, 0), ptrType.nil);
  11934. $pkg.UTC = utcLoc;
  11935. $pkg.Local = localLoc;
  11936. _tuple = syscall.Getenv("ZONEINFO"); zoneinfo = _tuple[0];
  11937. badData = errors.New("malformed time zone information");
  11938. /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
  11939. };
  11940. $pkg.$init = $init;
  11941. return $pkg;
  11942. })();
  11943. $packages["os"] = (function() {
  11944. var $pkg = {}, $init, errors, js, io, runtime, sync, atomic, syscall, time, utf16, utf8, PathError, SyscallError, LinkError, File, file, dirInfo, FileInfo, FileMode, fileStat, sliceType, sliceType$1, ptrType$1, sliceType$2, ptrType$2, ptrType$3, ptrType$4, arrayType, ptrType$8, arrayType$1, ptrType$9, sliceType$4, sliceType$5, ptrType$10, sliceType$7, ptrType$11, funcType$1, ptrType$12, ptrType$13, ptrType$14, ptrType$17, devNullStat, devNullStat_ptr, runtime_args, init, NewSyscallError, IsExist, isExist, Getpid, init$1, Open, fixCount, Readlink, syscallMode, newFile, NewFile, epipecheck, openFile, openDir, OpenFile, Remove, TempDir, IsPathSeparator, init$2, Exit, Stat, Lstat, basename, isAbs, volumeName;
  11945. errors = $packages["errors"];
  11946. js = $packages["github.com/gopherjs/gopherjs/js"];
  11947. io = $packages["io"];
  11948. runtime = $packages["runtime"];
  11949. sync = $packages["sync"];
  11950. atomic = $packages["sync/atomic"];
  11951. syscall = $packages["syscall"];
  11952. time = $packages["time"];
  11953. utf16 = $packages["unicode/utf16"];
  11954. utf8 = $packages["unicode/utf8"];
  11955. PathError = $pkg.PathError = $newType(0, $kindStruct, "os.PathError", "PathError", "os", function(Op_, Path_, Err_) {
  11956. this.$val = this;
  11957. if (arguments.length === 0) {
  11958. this.Op = "";
  11959. this.Path = "";
  11960. this.Err = $ifaceNil;
  11961. return;
  11962. }
  11963. this.Op = Op_;
  11964. this.Path = Path_;
  11965. this.Err = Err_;
  11966. });
  11967. SyscallError = $pkg.SyscallError = $newType(0, $kindStruct, "os.SyscallError", "SyscallError", "os", function(Syscall_, Err_) {
  11968. this.$val = this;
  11969. if (arguments.length === 0) {
  11970. this.Syscall = "";
  11971. this.Err = $ifaceNil;
  11972. return;
  11973. }
  11974. this.Syscall = Syscall_;
  11975. this.Err = Err_;
  11976. });
  11977. LinkError = $pkg.LinkError = $newType(0, $kindStruct, "os.LinkError", "LinkError", "os", function(Op_, Old_, New_, Err_) {
  11978. this.$val = this;
  11979. if (arguments.length === 0) {
  11980. this.Op = "";
  11981. this.Old = "";
  11982. this.New = "";
  11983. this.Err = $ifaceNil;
  11984. return;
  11985. }
  11986. this.Op = Op_;
  11987. this.Old = Old_;
  11988. this.New = New_;
  11989. this.Err = Err_;
  11990. });
  11991. File = $pkg.File = $newType(0, $kindStruct, "os.File", "File", "os", function(file_) {
  11992. this.$val = this;
  11993. if (arguments.length === 0) {
  11994. this.file = ptrType$11.nil;
  11995. return;
  11996. }
  11997. this.file = file_;
  11998. });
  11999. file = $pkg.file = $newType(0, $kindStruct, "os.file", "file", "os", function(fd_, name_, dirinfo_, l_, isConsole_, lastbits_, readbuf_) {
  12000. this.$val = this;
  12001. if (arguments.length === 0) {
  12002. this.fd = 0;
  12003. this.name = "";
  12004. this.dirinfo = ptrType$10.nil;
  12005. this.l = new sync.Mutex.ptr();
  12006. this.isConsole = false;
  12007. this.lastbits = sliceType$2.nil;
  12008. this.readbuf = sliceType$7.nil;
  12009. return;
  12010. }
  12011. this.fd = fd_;
  12012. this.name = name_;
  12013. this.dirinfo = dirinfo_;
  12014. this.l = l_;
  12015. this.isConsole = isConsole_;
  12016. this.lastbits = lastbits_;
  12017. this.readbuf = readbuf_;
  12018. });
  12019. dirInfo = $pkg.dirInfo = $newType(0, $kindStruct, "os.dirInfo", "dirInfo", "os", function(data_, needdata_, path_, isempty_) {
  12020. this.$val = this;
  12021. if (arguments.length === 0) {
  12022. this.data = new syscall.Win32finddata.ptr();
  12023. this.needdata = false;
  12024. this.path = "";
  12025. this.isempty = false;
  12026. return;
  12027. }
  12028. this.data = data_;
  12029. this.needdata = needdata_;
  12030. this.path = path_;
  12031. this.isempty = isempty_;
  12032. });
  12033. FileInfo = $pkg.FileInfo = $newType(8, $kindInterface, "os.FileInfo", "FileInfo", "os", null);
  12034. FileMode = $pkg.FileMode = $newType(4, $kindUint32, "os.FileMode", "FileMode", "os", null);
  12035. fileStat = $pkg.fileStat = $newType(0, $kindStruct, "os.fileStat", "fileStat", "os", function(name_, sys_, Mutex_, path_, vol_, idxhi_, idxlo_) {
  12036. this.$val = this;
  12037. if (arguments.length === 0) {
  12038. this.name = "";
  12039. this.sys = new syscall.Win32FileAttributeData.ptr();
  12040. this.Mutex = new sync.Mutex.ptr();
  12041. this.path = "";
  12042. this.vol = 0;
  12043. this.idxhi = 0;
  12044. this.idxlo = 0;
  12045. return;
  12046. }
  12047. this.name = name_;
  12048. this.sys = sys_;
  12049. this.Mutex = Mutex_;
  12050. this.path = path_;
  12051. this.vol = vol_;
  12052. this.idxhi = idxhi_;
  12053. this.idxlo = idxlo_;
  12054. });
  12055. sliceType = $sliceType($String);
  12056. sliceType$1 = $sliceType(FileInfo);
  12057. ptrType$1 = $ptrType(File);
  12058. sliceType$2 = $sliceType($Uint8);
  12059. ptrType$2 = $ptrType(PathError);
  12060. ptrType$3 = $ptrType(LinkError);
  12061. ptrType$4 = $ptrType($Uint32);
  12062. arrayType = $arrayType($Uint8, 32);
  12063. ptrType$8 = $ptrType($Int32);
  12064. arrayType$1 = $arrayType($Uint16, 8192);
  12065. ptrType$9 = $ptrType(arrayType$1);
  12066. sliceType$4 = $sliceType(ptrType$9);
  12067. sliceType$5 = $sliceType($Uint16);
  12068. ptrType$10 = $ptrType(dirInfo);
  12069. sliceType$7 = $sliceType($Int32);
  12070. ptrType$11 = $ptrType(file);
  12071. funcType$1 = $funcType([ptrType$11], [$error], false);
  12072. ptrType$12 = $ptrType($Uint16);
  12073. ptrType$13 = $ptrType($Uint8);
  12074. ptrType$14 = $ptrType(fileStat);
  12075. ptrType$17 = $ptrType(SyscallError);
  12076. runtime_args = function() {
  12077. var $ptr;
  12078. return $pkg.Args;
  12079. };
  12080. init = function() {
  12081. var $ptr, argv, i, process;
  12082. process = $global.process;
  12083. if (!(process === undefined)) {
  12084. argv = process.argv;
  12085. $pkg.Args = $makeSlice(sliceType, ($parseInt(argv.length) - 1 >> 0));
  12086. i = 0;
  12087. while (true) {
  12088. if (!(i < ($parseInt(argv.length) - 1 >> 0))) { break; }
  12089. ((i < 0 || i >= $pkg.Args.$length) ? $throwRuntimeError("index out of range") : $pkg.Args.$array[$pkg.Args.$offset + i] = $internalize(argv[(i + 1 >> 0)], $String));
  12090. i = i + (1) >> 0;
  12091. }
  12092. }
  12093. if ($pkg.Args.$length === 0) {
  12094. $pkg.Args = new sliceType(["?"]);
  12095. }
  12096. };
  12097. File.ptr.prototype.readdirnames = function(n) {
  12098. var $ptr, _i, _r, _ref, _tmp, _tmp$1, _tuple, err, fi, file$1, fis, i, n, names, $s, $r;
  12099. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _i = $f._i; _r = $f._r; _ref = $f._ref; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; err = $f.err; fi = $f.fi; file$1 = $f.file$1; fis = $f.fis; i = $f.i; n = $f.n; names = $f.names; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  12100. names = sliceType.nil;
  12101. err = $ifaceNil;
  12102. file$1 = this;
  12103. _tuple = file$1.Readdir(n); fis = _tuple[0]; err = _tuple[1];
  12104. names = $makeSlice(sliceType, fis.$length);
  12105. _ref = fis;
  12106. _i = 0;
  12107. /* while (true) { */ case 1:
  12108. /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; }
  12109. i = _i;
  12110. fi = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]);
  12111. _r = fi.Name(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  12112. ((i < 0 || i >= names.$length) ? $throwRuntimeError("index out of range") : names.$array[names.$offset + i] = _r);
  12113. _i++;
  12114. /* } */ $s = 1; continue; case 2:
  12115. _tmp = names; _tmp$1 = err; names = _tmp; err = _tmp$1;
  12116. return [names, err];
  12117. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: File.ptr.prototype.readdirnames }; } $f.$ptr = $ptr; $f._i = _i; $f._r = _r; $f._ref = _ref; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f.err = err; $f.fi = fi; $f.file$1 = file$1; $f.fis = fis; $f.i = i; $f.n = n; $f.names = names; $f.$s = $s; $f.$r = $r; return $f;
  12118. };
  12119. File.prototype.readdirnames = function(n) { return this.$val.readdirnames(n); };
  12120. File.ptr.prototype.Readdir = function(n) {
  12121. var $ptr, _tmp, _tmp$1, _tuple, err, f, fi, n;
  12122. fi = sliceType$1.nil;
  12123. err = $ifaceNil;
  12124. f = this;
  12125. if (f === ptrType$1.nil) {
  12126. _tmp = sliceType$1.nil; _tmp$1 = $pkg.ErrInvalid; fi = _tmp; err = _tmp$1;
  12127. return [fi, err];
  12128. }
  12129. _tuple = f.readdir(n); fi = _tuple[0]; err = _tuple[1];
  12130. return [fi, err];
  12131. };
  12132. File.prototype.Readdir = function(n) { return this.$val.Readdir(n); };
  12133. File.ptr.prototype.Readdirnames = function(n) {
  12134. var $ptr, _r, _tmp, _tmp$1, _tuple, err, f, n, names, $s, $r;
  12135. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; err = $f.err; f = $f.f; n = $f.n; names = $f.names; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  12136. names = sliceType.nil;
  12137. err = $ifaceNil;
  12138. f = this;
  12139. if (f === ptrType$1.nil) {
  12140. _tmp = sliceType.nil; _tmp$1 = $pkg.ErrInvalid; names = _tmp; err = _tmp$1;
  12141. return [names, err];
  12142. }
  12143. _r = f.readdirnames(n); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  12144. _tuple = _r; names = _tuple[0]; err = _tuple[1];
  12145. return [names, err];
  12146. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: File.ptr.prototype.Readdirnames }; } $f.$ptr = $ptr; $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f.err = err; $f.f = f; $f.n = n; $f.names = names; $f.$s = $s; $f.$r = $r; return $f;
  12147. };
  12148. File.prototype.Readdirnames = function(n) { return this.$val.Readdirnames(n); };
  12149. PathError.ptr.prototype.Error = function() {
  12150. var $ptr, _r, e, $s, $r;
  12151. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; e = $f.e; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  12152. e = this;
  12153. _r = e.Err.Error(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  12154. return e.Op + " " + e.Path + ": " + _r;
  12155. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: PathError.ptr.prototype.Error }; } $f.$ptr = $ptr; $f._r = _r; $f.e = e; $f.$s = $s; $f.$r = $r; return $f;
  12156. };
  12157. PathError.prototype.Error = function() { return this.$val.Error(); };
  12158. SyscallError.ptr.prototype.Error = function() {
  12159. var $ptr, _r, e, $s, $r;
  12160. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; e = $f.e; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  12161. e = this;
  12162. _r = e.Err.Error(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  12163. return e.Syscall + ": " + _r;
  12164. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: SyscallError.ptr.prototype.Error }; } $f.$ptr = $ptr; $f._r = _r; $f.e = e; $f.$s = $s; $f.$r = $r; return $f;
  12165. };
  12166. SyscallError.prototype.Error = function() { return this.$val.Error(); };
  12167. NewSyscallError = function(syscall$1, err) {
  12168. var $ptr, err, syscall$1;
  12169. if ($interfaceIsEqual(err, $ifaceNil)) {
  12170. return $ifaceNil;
  12171. }
  12172. return new SyscallError.ptr(syscall$1, err);
  12173. };
  12174. $pkg.NewSyscallError = NewSyscallError;
  12175. IsExist = function(err) {
  12176. var $ptr, err;
  12177. return isExist(err);
  12178. };
  12179. $pkg.IsExist = IsExist;
  12180. isExist = function(err) {
  12181. var $ptr, _ref, err, pe, pe$1, pe$2;
  12182. _ref = err;
  12183. if (_ref === $ifaceNil) {
  12184. pe = _ref;
  12185. return false;
  12186. } else if ($assertType(_ref, ptrType$2, true)[1]) {
  12187. pe$1 = _ref.$val;
  12188. err = pe$1.Err;
  12189. } else if ($assertType(_ref, ptrType$3, true)[1]) {
  12190. pe$2 = _ref.$val;
  12191. err = pe$2.Err;
  12192. }
  12193. return $interfaceIsEqual(err, new syscall.Errno(183)) || $interfaceIsEqual(err, new syscall.Errno(80)) || $interfaceIsEqual(err, $pkg.ErrExist);
  12194. };
  12195. Getpid = function() {
  12196. var $ptr;
  12197. return syscall.Getpid();
  12198. };
  12199. $pkg.Getpid = Getpid;
  12200. init$1 = function() {
  12201. var $ptr, _i, _ref, _tuple, argc, argc_ptr, argv, cmd, e, i, v, $deferred;
  12202. /* */ var $err = null; try { $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
  12203. argc = 0;
  12204. cmd = syscall.GetCommandLine();
  12205. _tuple = syscall.CommandLineToArgv(cmd, (argc_ptr || (argc_ptr = new ptrType$8(function() { return argc; }, function($v) { argc = $v; })))); argv = _tuple[0]; e = _tuple[1];
  12206. if (!($interfaceIsEqual(e, $ifaceNil))) {
  12207. return;
  12208. }
  12209. $deferred.push([syscall.LocalFree, [(argv >>> 0)]]);
  12210. $pkg.Args = $makeSlice(sliceType, argc);
  12211. _ref = $subslice(new sliceType$4((argv)), 0, argc);
  12212. _i = 0;
  12213. while (true) {
  12214. if (!(_i < _ref.$length)) { break; }
  12215. i = _i;
  12216. v = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]);
  12217. ((i < 0 || i >= $pkg.Args.$length) ? $throwRuntimeError("index out of range") : $pkg.Args.$array[$pkg.Args.$offset + i] = syscall.UTF16ToString(new sliceType$5((v))));
  12218. _i++;
  12219. }
  12220. /* */ } catch(err) { $err = err; } finally { $callDeferred($deferred, $err); }
  12221. };
  12222. File.ptr.prototype.Name = function() {
  12223. var $ptr, f;
  12224. f = this;
  12225. return f.file.name;
  12226. };
  12227. File.prototype.Name = function() { return this.$val.Name(); };
  12228. LinkError.ptr.prototype.Error = function() {
  12229. var $ptr, _r, e, $s, $r;
  12230. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; e = $f.e; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  12231. e = this;
  12232. _r = e.Err.Error(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  12233. return e.Op + " " + e.Old + " " + e.New + ": " + _r;
  12234. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: LinkError.ptr.prototype.Error }; } $f.$ptr = $ptr; $f._r = _r; $f.e = e; $f.$s = $s; $f.$r = $r; return $f;
  12235. };
  12236. LinkError.prototype.Error = function() { return this.$val.Error(); };
  12237. File.ptr.prototype.Read = function(b) {
  12238. var $ptr, _r, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tuple, b, e, err, f, n, $s, $r;
  12239. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tuple = $f._tuple; b = $f.b; e = $f.e; err = $f.err; f = $f.f; n = $f.n; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  12240. n = 0;
  12241. err = $ifaceNil;
  12242. f = this;
  12243. if (f === ptrType$1.nil) {
  12244. _tmp = 0; _tmp$1 = $pkg.ErrInvalid; n = _tmp; err = _tmp$1;
  12245. return [n, err];
  12246. }
  12247. _r = f.read(b); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  12248. _tuple = _r; n = _tuple[0]; e = _tuple[1];
  12249. if (n < 0) {
  12250. n = 0;
  12251. }
  12252. if ((n === 0) && b.$length > 0 && $interfaceIsEqual(e, $ifaceNil)) {
  12253. _tmp$2 = 0; _tmp$3 = io.EOF; n = _tmp$2; err = _tmp$3;
  12254. return [n, err];
  12255. }
  12256. if (!($interfaceIsEqual(e, $ifaceNil))) {
  12257. err = new PathError.ptr("read", f.file.name, e);
  12258. }
  12259. _tmp$4 = n; _tmp$5 = err; n = _tmp$4; err = _tmp$5;
  12260. return [n, err];
  12261. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: File.ptr.prototype.Read }; } $f.$ptr = $ptr; $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tuple = _tuple; $f.b = b; $f.e = e; $f.err = err; $f.f = f; $f.n = n; $f.$s = $s; $f.$r = $r; return $f;
  12262. };
  12263. File.prototype.Read = function(b) { return this.$val.Read(b); };
  12264. File.ptr.prototype.ReadAt = function(b, off) {
  12265. var $ptr, _r, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, b, e, err, f, m, n, off, x, $s, $r;
  12266. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tuple = $f._tuple; b = $f.b; e = $f.e; err = $f.err; f = $f.f; m = $f.m; n = $f.n; off = $f.off; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  12267. n = 0;
  12268. err = $ifaceNil;
  12269. f = this;
  12270. if (f === ptrType$1.nil) {
  12271. _tmp = 0; _tmp$1 = $pkg.ErrInvalid; n = _tmp; err = _tmp$1;
  12272. return [n, err];
  12273. }
  12274. /* while (true) { */ case 1:
  12275. /* if (!(b.$length > 0)) { break; } */ if(!(b.$length > 0)) { $s = 2; continue; }
  12276. _r = f.pread(b, off); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  12277. _tuple = _r; m = _tuple[0]; e = _tuple[1];
  12278. if ((m === 0) && $interfaceIsEqual(e, $ifaceNil)) {
  12279. _tmp$2 = n; _tmp$3 = io.EOF; n = _tmp$2; err = _tmp$3;
  12280. return [n, err];
  12281. }
  12282. if (!($interfaceIsEqual(e, $ifaceNil))) {
  12283. err = new PathError.ptr("read", f.file.name, e);
  12284. /* break; */ $s = 2; continue;
  12285. }
  12286. n = n + (m) >> 0;
  12287. b = $subslice(b, m);
  12288. off = (x = new $Int64(0, m), new $Int64(off.$high + x.$high, off.$low + x.$low));
  12289. /* } */ $s = 1; continue; case 2:
  12290. return [n, err];
  12291. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: File.ptr.prototype.ReadAt }; } $f.$ptr = $ptr; $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tuple = _tuple; $f.b = b; $f.e = e; $f.err = err; $f.f = f; $f.m = m; $f.n = n; $f.off = off; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
  12292. };
  12293. File.prototype.ReadAt = function(b, off) { return this.$val.ReadAt(b, off); };
  12294. File.ptr.prototype.Write = function(b) {
  12295. var $ptr, _r, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, b, e, err, f, n, $s, $r;
  12296. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tuple = $f._tuple; b = $f.b; e = $f.e; err = $f.err; f = $f.f; n = $f.n; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  12297. n = 0;
  12298. err = $ifaceNil;
  12299. f = this;
  12300. if (f === ptrType$1.nil) {
  12301. _tmp = 0; _tmp$1 = $pkg.ErrInvalid; n = _tmp; err = _tmp$1;
  12302. return [n, err];
  12303. }
  12304. _r = f.write(b); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  12305. _tuple = _r; n = _tuple[0]; e = _tuple[1];
  12306. if (n < 0) {
  12307. n = 0;
  12308. }
  12309. if (!((n === b.$length))) {
  12310. err = io.ErrShortWrite;
  12311. }
  12312. epipecheck(f, e);
  12313. if (!($interfaceIsEqual(e, $ifaceNil))) {
  12314. err = new PathError.ptr("write", f.file.name, e);
  12315. }
  12316. _tmp$2 = n; _tmp$3 = err; n = _tmp$2; err = _tmp$3;
  12317. return [n, err];
  12318. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: File.ptr.prototype.Write }; } $f.$ptr = $ptr; $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tuple = _tuple; $f.b = b; $f.e = e; $f.err = err; $f.f = f; $f.n = n; $f.$s = $s; $f.$r = $r; return $f;
  12319. };
  12320. File.prototype.Write = function(b) { return this.$val.Write(b); };
  12321. File.ptr.prototype.WriteAt = function(b, off) {
  12322. var $ptr, _r, _tmp, _tmp$1, _tuple, b, e, err, f, m, n, off, x, $s, $r;
  12323. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; b = $f.b; e = $f.e; err = $f.err; f = $f.f; m = $f.m; n = $f.n; off = $f.off; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  12324. n = 0;
  12325. err = $ifaceNil;
  12326. f = this;
  12327. if (f === ptrType$1.nil) {
  12328. _tmp = 0; _tmp$1 = $pkg.ErrInvalid; n = _tmp; err = _tmp$1;
  12329. return [n, err];
  12330. }
  12331. /* while (true) { */ case 1:
  12332. /* if (!(b.$length > 0)) { break; } */ if(!(b.$length > 0)) { $s = 2; continue; }
  12333. _r = f.pwrite(b, off); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  12334. _tuple = _r; m = _tuple[0]; e = _tuple[1];
  12335. if (!($interfaceIsEqual(e, $ifaceNil))) {
  12336. err = new PathError.ptr("write", f.file.name, e);
  12337. /* break; */ $s = 2; continue;
  12338. }
  12339. n = n + (m) >> 0;
  12340. b = $subslice(b, m);
  12341. off = (x = new $Int64(0, m), new $Int64(off.$high + x.$high, off.$low + x.$low));
  12342. /* } */ $s = 1; continue; case 2:
  12343. return [n, err];
  12344. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: File.ptr.prototype.WriteAt }; } $f.$ptr = $ptr; $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f.b = b; $f.e = e; $f.err = err; $f.f = f; $f.m = m; $f.n = n; $f.off = off; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
  12345. };
  12346. File.prototype.WriteAt = function(b, off) { return this.$val.WriteAt(b, off); };
  12347. File.ptr.prototype.Seek = function(offset, whence) {
  12348. var $ptr, _r, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tuple, e, err, f, offset, r, ret, whence, $s, $r;
  12349. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tuple = $f._tuple; e = $f.e; err = $f.err; f = $f.f; offset = $f.offset; r = $f.r; ret = $f.ret; whence = $f.whence; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  12350. ret = new $Int64(0, 0);
  12351. err = $ifaceNil;
  12352. f = this;
  12353. if (f === ptrType$1.nil) {
  12354. _tmp = new $Int64(0, 0); _tmp$1 = $pkg.ErrInvalid; ret = _tmp; err = _tmp$1;
  12355. return [ret, err];
  12356. }
  12357. _r = f.seek(offset, whence); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  12358. _tuple = _r; r = _tuple[0]; e = _tuple[1];
  12359. if ($interfaceIsEqual(e, $ifaceNil) && !(f.file.dirinfo === ptrType$10.nil) && !((r.$high === 0 && r.$low === 0))) {
  12360. e = new syscall.Errno(536870954);
  12361. }
  12362. if (!($interfaceIsEqual(e, $ifaceNil))) {
  12363. _tmp$2 = new $Int64(0, 0); _tmp$3 = new PathError.ptr("seek", f.file.name, e); ret = _tmp$2; err = _tmp$3;
  12364. return [ret, err];
  12365. }
  12366. _tmp$4 = r; _tmp$5 = $ifaceNil; ret = _tmp$4; err = _tmp$5;
  12367. return [ret, err];
  12368. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: File.ptr.prototype.Seek }; } $f.$ptr = $ptr; $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tuple = _tuple; $f.e = e; $f.err = err; $f.f = f; $f.offset = offset; $f.r = r; $f.ret = ret; $f.whence = whence; $f.$s = $s; $f.$r = $r; return $f;
  12369. };
  12370. File.prototype.Seek = function(offset, whence) { return this.$val.Seek(offset, whence); };
  12371. File.ptr.prototype.WriteString = function(s) {
  12372. var $ptr, _r, _tmp, _tmp$1, _tuple, err, f, ret, s, $s, $r;
  12373. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; err = $f.err; f = $f.f; ret = $f.ret; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  12374. ret = 0;
  12375. err = $ifaceNil;
  12376. f = this;
  12377. if (f === ptrType$1.nil) {
  12378. _tmp = 0; _tmp$1 = $pkg.ErrInvalid; ret = _tmp; err = _tmp$1;
  12379. return [ret, err];
  12380. }
  12381. _r = f.Write(new sliceType$2($stringToBytes(s))); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  12382. _tuple = _r; ret = _tuple[0]; err = _tuple[1];
  12383. return [ret, err];
  12384. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: File.ptr.prototype.WriteString }; } $f.$ptr = $ptr; $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f.err = err; $f.f = f; $f.ret = ret; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
  12385. };
  12386. File.prototype.WriteString = function(s) { return this.$val.WriteString(s); };
  12387. File.ptr.prototype.Chdir = function() {
  12388. var $ptr, e, f;
  12389. f = this;
  12390. if (f === ptrType$1.nil) {
  12391. return $pkg.ErrInvalid;
  12392. }
  12393. e = syscall.Fchdir(f.file.fd);
  12394. if (!($interfaceIsEqual(e, $ifaceNil))) {
  12395. return new PathError.ptr("chdir", f.file.name, e);
  12396. }
  12397. return $ifaceNil;
  12398. };
  12399. File.prototype.Chdir = function() { return this.$val.Chdir(); };
  12400. Open = function(name) {
  12401. var $ptr, _tuple, err, file$1, name;
  12402. file$1 = ptrType$1.nil;
  12403. err = $ifaceNil;
  12404. _tuple = OpenFile(name, 0, 0); file$1 = _tuple[0]; err = _tuple[1];
  12405. return [file$1, err];
  12406. };
  12407. $pkg.Open = Open;
  12408. fixCount = function(n, err) {
  12409. var $ptr, err, n;
  12410. if (n < 0) {
  12411. n = 0;
  12412. }
  12413. return [n, err];
  12414. };
  12415. Readlink = function(name) {
  12416. var $ptr, _tuple, _tuple$1, b, e, len, n, name;
  12417. len = 128;
  12418. while (true) {
  12419. b = $makeSlice(sliceType$2, len);
  12420. _tuple$1 = syscall.Readlink(name, b);
  12421. _tuple = fixCount(_tuple$1[0], _tuple$1[1]); n = _tuple[0]; e = _tuple[1];
  12422. if (!($interfaceIsEqual(e, $ifaceNil))) {
  12423. return ["", new PathError.ptr("readlink", name, e)];
  12424. }
  12425. if (n < len) {
  12426. return [$bytesToString($subslice(b, 0, n)), $ifaceNil];
  12427. }
  12428. len = len * (2) >> 0;
  12429. }
  12430. };
  12431. $pkg.Readlink = Readlink;
  12432. syscallMode = function(i) {
  12433. var $ptr, i, o;
  12434. o = 0;
  12435. o = (o | ((new FileMode(i).Perm() >>> 0))) >>> 0;
  12436. if (!((((i & 8388608) >>> 0) === 0))) {
  12437. o = (o | (2048)) >>> 0;
  12438. }
  12439. if (!((((i & 4194304) >>> 0) === 0))) {
  12440. o = (o | (1024)) >>> 0;
  12441. }
  12442. if (!((((i & 1048576) >>> 0) === 0))) {
  12443. o = (o | (512)) >>> 0;
  12444. }
  12445. return o;
  12446. };
  12447. File.ptr.prototype.Chmod = function(mode) {
  12448. var $ptr, e, f, mode;
  12449. f = this;
  12450. if (f === ptrType$1.nil) {
  12451. return $pkg.ErrInvalid;
  12452. }
  12453. e = syscall.Fchmod(f.file.fd, syscallMode(mode));
  12454. if (!($interfaceIsEqual(e, $ifaceNil))) {
  12455. return new PathError.ptr("chmod", f.file.name, e);
  12456. }
  12457. return $ifaceNil;
  12458. };
  12459. File.prototype.Chmod = function(mode) { return this.$val.Chmod(mode); };
  12460. File.ptr.prototype.Chown = function(uid, gid) {
  12461. var $ptr, e, f, gid, uid;
  12462. f = this;
  12463. if (f === ptrType$1.nil) {
  12464. return $pkg.ErrInvalid;
  12465. }
  12466. e = syscall.Fchown(f.file.fd, uid, gid);
  12467. if (!($interfaceIsEqual(e, $ifaceNil))) {
  12468. return new PathError.ptr("chown", f.file.name, e);
  12469. }
  12470. return $ifaceNil;
  12471. };
  12472. File.prototype.Chown = function(uid, gid) { return this.$val.Chown(uid, gid); };
  12473. File.ptr.prototype.Truncate = function(size) {
  12474. var $ptr, e, f, size;
  12475. f = this;
  12476. if (f === ptrType$1.nil) {
  12477. return $pkg.ErrInvalid;
  12478. }
  12479. e = syscall.Ftruncate(f.file.fd, size);
  12480. if (!($interfaceIsEqual(e, $ifaceNil))) {
  12481. return new PathError.ptr("truncate", f.file.name, e);
  12482. }
  12483. return $ifaceNil;
  12484. };
  12485. File.prototype.Truncate = function(size) { return this.$val.Truncate(size); };
  12486. File.ptr.prototype.Sync = function() {
  12487. var $ptr, e, err, f;
  12488. err = $ifaceNil;
  12489. f = this;
  12490. if (f === ptrType$1.nil) {
  12491. err = $pkg.ErrInvalid;
  12492. return err;
  12493. }
  12494. e = syscall.Fsync(f.file.fd);
  12495. if (!($interfaceIsEqual(e, $ifaceNil))) {
  12496. err = NewSyscallError("fsync", e);
  12497. return err;
  12498. }
  12499. err = $ifaceNil;
  12500. return err;
  12501. };
  12502. File.prototype.Sync = function() { return this.$val.Sync(); };
  12503. File.ptr.prototype.Fd = function() {
  12504. var $ptr, file$1;
  12505. file$1 = this;
  12506. if (file$1 === ptrType$1.nil) {
  12507. return 4294967295;
  12508. }
  12509. return (file$1.file.fd >>> 0);
  12510. };
  12511. File.prototype.Fd = function() { return this.$val.Fd(); };
  12512. newFile = function(h, name) {
  12513. var $ptr, f, h, m, m_ptr, name;
  12514. f = new File.ptr(new file.ptr(h, name, ptrType$10.nil, new sync.Mutex.ptr(), false, sliceType$2.nil, sliceType$7.nil));
  12515. m = 0;
  12516. if ($interfaceIsEqual(syscall.GetConsoleMode(f.file.fd, (m_ptr || (m_ptr = new ptrType$4(function() { return m; }, function($v) { m = $v; })))), $ifaceNil)) {
  12517. f.file.isConsole = true;
  12518. }
  12519. runtime.SetFinalizer(f.file, new funcType$1($methodExpr(ptrType$11.prototype.close)));
  12520. return f;
  12521. };
  12522. NewFile = function(fd, name) {
  12523. var $ptr, fd, h, name;
  12524. h = (fd >>> 0);
  12525. if (h === 4294967295) {
  12526. return ptrType$1.nil;
  12527. }
  12528. return newFile(h, name);
  12529. };
  12530. $pkg.NewFile = NewFile;
  12531. epipecheck = function(file$1, e) {
  12532. var $ptr, e, file$1;
  12533. };
  12534. file.ptr.prototype.isdir = function() {
  12535. var $ptr, f;
  12536. f = this;
  12537. return !(f === ptrType$11.nil) && !(f.dirinfo === ptrType$10.nil);
  12538. };
  12539. file.prototype.isdir = function() { return this.$val.isdir(); };
  12540. openFile = function(name, flag, perm) {
  12541. var $ptr, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, e, err, file$1, flag, name, perm, r;
  12542. file$1 = ptrType$1.nil;
  12543. err = $ifaceNil;
  12544. _tuple = syscall.Open(name, flag | 524288, syscallMode(perm)); r = _tuple[0]; e = _tuple[1];
  12545. if (!($interfaceIsEqual(e, $ifaceNil))) {
  12546. _tmp = ptrType$1.nil; _tmp$1 = e; file$1 = _tmp; err = _tmp$1;
  12547. return [file$1, err];
  12548. }
  12549. _tmp$2 = NewFile((r >>> 0), name); _tmp$3 = $ifaceNil; file$1 = _tmp$2; err = _tmp$3;
  12550. return [file$1, err];
  12551. };
  12552. openDir = function(name) {
  12553. var $ptr, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, _tuple$2, _tuple$3, d, e, e$1, err, f, fa, file$1, maskp, name, namep, r;
  12554. file$1 = ptrType$1.nil;
  12555. err = $ifaceNil;
  12556. _tuple = syscall.UTF16PtrFromString(name + "\\*"); maskp = _tuple[0]; e = _tuple[1];
  12557. if (!($interfaceIsEqual(e, $ifaceNil))) {
  12558. _tmp = ptrType$1.nil; _tmp$1 = e; file$1 = _tmp; err = _tmp$1;
  12559. return [file$1, err];
  12560. }
  12561. d = new dirInfo.ptr();
  12562. _tuple$1 = syscall.FindFirstFile(maskp, d.data); r = _tuple$1[0]; e = _tuple$1[1];
  12563. if (!($interfaceIsEqual(e, $ifaceNil))) {
  12564. if (!($interfaceIsEqual(e, new syscall.Errno(2)))) {
  12565. _tmp$2 = ptrType$1.nil; _tmp$3 = e; file$1 = _tmp$2; err = _tmp$3;
  12566. return [file$1, err];
  12567. }
  12568. fa = $clone(new syscall.Win32FileAttributeData.ptr(), syscall.Win32FileAttributeData);
  12569. _tuple$2 = syscall.UTF16PtrFromString(name); namep = _tuple$2[0]; e$1 = _tuple$2[1];
  12570. if (!($interfaceIsEqual(e$1, $ifaceNil))) {
  12571. _tmp$4 = ptrType$1.nil; _tmp$5 = e$1; file$1 = _tmp$4; err = _tmp$5;
  12572. return [file$1, err];
  12573. }
  12574. e$1 = syscall.GetFileAttributesEx(namep, 0, fa);
  12575. if (!($interfaceIsEqual(e$1, $ifaceNil))) {
  12576. _tmp$6 = ptrType$1.nil; _tmp$7 = e$1; file$1 = _tmp$6; err = _tmp$7;
  12577. return [file$1, err];
  12578. }
  12579. if (((fa.FileAttributes & 16) >>> 0) === 0) {
  12580. _tmp$8 = ptrType$1.nil; _tmp$9 = e$1; file$1 = _tmp$8; err = _tmp$9;
  12581. return [file$1, err];
  12582. }
  12583. d.isempty = true;
  12584. }
  12585. d.path = name;
  12586. if (!isAbs(d.path)) {
  12587. _tuple$3 = syscall.FullPath(d.path); d.path = _tuple$3[0]; e = _tuple$3[1];
  12588. if (!($interfaceIsEqual(e, $ifaceNil))) {
  12589. _tmp$10 = ptrType$1.nil; _tmp$11 = e; file$1 = _tmp$10; err = _tmp$11;
  12590. return [file$1, err];
  12591. }
  12592. }
  12593. f = newFile(r, name);
  12594. f.file.dirinfo = d;
  12595. _tmp$12 = f; _tmp$13 = $ifaceNil; file$1 = _tmp$12; err = _tmp$13;
  12596. return [file$1, err];
  12597. };
  12598. OpenFile = function(name, flag, perm) {
  12599. var $ptr, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, err, errd, errf, file$1, flag, name, perm, r;
  12600. file$1 = ptrType$1.nil;
  12601. err = $ifaceNil;
  12602. if (name === "") {
  12603. _tmp = ptrType$1.nil; _tmp$1 = new PathError.ptr("open", name, new syscall.Errno(2)); file$1 = _tmp; err = _tmp$1;
  12604. return [file$1, err];
  12605. }
  12606. _tuple = openFile(name, flag, perm); r = _tuple[0]; errf = _tuple[1];
  12607. if ($interfaceIsEqual(errf, $ifaceNil)) {
  12608. _tmp$2 = r; _tmp$3 = $ifaceNil; file$1 = _tmp$2; err = _tmp$3;
  12609. return [file$1, err];
  12610. }
  12611. _tuple$1 = openDir(name); r = _tuple$1[0]; errd = _tuple$1[1];
  12612. if ($interfaceIsEqual(errd, $ifaceNil)) {
  12613. if (!(((flag & 1) === 0)) || !(((flag & 2) === 0))) {
  12614. r.Close();
  12615. _tmp$4 = ptrType$1.nil; _tmp$5 = new PathError.ptr("open", name, new syscall.Errno(536870954)); file$1 = _tmp$4; err = _tmp$5;
  12616. return [file$1, err];
  12617. }
  12618. _tmp$6 = r; _tmp$7 = $ifaceNil; file$1 = _tmp$6; err = _tmp$7;
  12619. return [file$1, err];
  12620. }
  12621. _tmp$8 = ptrType$1.nil; _tmp$9 = new PathError.ptr("open", name, errf); file$1 = _tmp$8; err = _tmp$9;
  12622. return [file$1, err];
  12623. };
  12624. $pkg.OpenFile = OpenFile;
  12625. File.ptr.prototype.Close = function() {
  12626. var $ptr, file$1;
  12627. file$1 = this;
  12628. if (file$1 === ptrType$1.nil) {
  12629. return $pkg.ErrInvalid;
  12630. }
  12631. return file$1.file.close();
  12632. };
  12633. File.prototype.Close = function() { return this.$val.Close(); };
  12634. file.ptr.prototype.close = function() {
  12635. var $ptr, e, err, file$1;
  12636. file$1 = this;
  12637. if (file$1 === ptrType$11.nil) {
  12638. return new syscall.Errno(536870951);
  12639. }
  12640. if (file$1.isdir() && file$1.dirinfo.isempty) {
  12641. return $ifaceNil;
  12642. }
  12643. if (file$1.fd === 4294967295) {
  12644. return new syscall.Errno(536870951);
  12645. }
  12646. e = $ifaceNil;
  12647. if (file$1.isdir()) {
  12648. e = syscall.FindClose(file$1.fd);
  12649. } else {
  12650. e = syscall.CloseHandle(file$1.fd);
  12651. }
  12652. err = $ifaceNil;
  12653. if (!($interfaceIsEqual(e, $ifaceNil))) {
  12654. err = new PathError.ptr("close", file$1.name, e);
  12655. }
  12656. file$1.fd = 4294967295;
  12657. runtime.SetFinalizer(file$1, $ifaceNil);
  12658. return err;
  12659. };
  12660. file.prototype.close = function() { return this.$val.close(); };
  12661. File.ptr.prototype.readdir = function(n) {
  12662. var $ptr, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, d, e, err, f, fi, file$1, n, name, size, wantAll;
  12663. fi = sliceType$1.nil;
  12664. err = $ifaceNil;
  12665. file$1 = this;
  12666. if (file$1 === ptrType$1.nil) {
  12667. _tmp = sliceType$1.nil; _tmp$1 = new syscall.Errno(536870951); fi = _tmp; err = _tmp$1;
  12668. return [fi, err];
  12669. }
  12670. if (!file$1.file.isdir()) {
  12671. _tmp$2 = sliceType$1.nil; _tmp$3 = new PathError.ptr("Readdir", file$1.file.name, new syscall.Errno(3)); fi = _tmp$2; err = _tmp$3;
  12672. return [fi, err];
  12673. }
  12674. if (!file$1.file.dirinfo.isempty && (file$1.file.fd === 4294967295)) {
  12675. _tmp$4 = sliceType$1.nil; _tmp$5 = new syscall.Errno(536870951); fi = _tmp$4; err = _tmp$5;
  12676. return [fi, err];
  12677. }
  12678. wantAll = n <= 0;
  12679. size = n;
  12680. if (wantAll) {
  12681. n = -1;
  12682. size = 100;
  12683. }
  12684. fi = $makeSlice(sliceType$1, 0, size);
  12685. d = file$1.file.dirinfo.data;
  12686. while (true) {
  12687. if (!(!((n === 0)) && !file$1.file.dirinfo.isempty)) { break; }
  12688. if (file$1.file.dirinfo.needdata) {
  12689. e = syscall.FindNextFile(file$1.file.fd, d);
  12690. if (!($interfaceIsEqual(e, $ifaceNil))) {
  12691. if ($interfaceIsEqual(e, new syscall.Errno(18))) {
  12692. break;
  12693. } else {
  12694. err = new PathError.ptr("FindNextFile", file$1.file.name, e);
  12695. if (!wantAll) {
  12696. fi = sliceType$1.nil;
  12697. }
  12698. return [fi, err];
  12699. }
  12700. }
  12701. }
  12702. file$1.file.dirinfo.needdata = true;
  12703. name = syscall.UTF16ToString($subslice(new sliceType$5(d.FileName), 0));
  12704. if (name === "." || name === "..") {
  12705. continue;
  12706. }
  12707. f = new fileStat.ptr(name, new syscall.Win32FileAttributeData.ptr(d.FileAttributes, $clone(d.CreationTime, syscall.Filetime), $clone(d.LastAccessTime, syscall.Filetime), $clone(d.LastWriteTime, syscall.Filetime), d.FileSizeHigh, d.FileSizeLow), new sync.Mutex.ptr(), file$1.file.dirinfo.path + "\\" + name, 0, 0, 0);
  12708. n = n - (1) >> 0;
  12709. fi = $append(fi, f);
  12710. }
  12711. if (!wantAll && (fi.$length === 0)) {
  12712. _tmp$6 = fi; _tmp$7 = io.EOF; fi = _tmp$6; err = _tmp$7;
  12713. return [fi, err];
  12714. }
  12715. _tmp$8 = fi; _tmp$9 = $ifaceNil; fi = _tmp$8; err = _tmp$9;
  12716. return [fi, err];
  12717. };
  12718. File.prototype.readdir = function(n) { return this.$val.readdir(n); };
  12719. File.ptr.prototype.readConsole = function(b) {
  12720. var $ptr, _i, _ref, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, b, err, err$1, f, i, n, nr, numBytes, nw, nw_ptr, p, r, wchars;
  12721. n = 0;
  12722. err = $ifaceNil;
  12723. f = this;
  12724. if (b.$length === 0) {
  12725. _tmp = 0; _tmp$1 = $ifaceNil; n = _tmp; err = _tmp$1;
  12726. return [n, err];
  12727. }
  12728. if (f.file.readbuf.$length === 0) {
  12729. numBytes = b.$length;
  12730. if (numBytes > 16000) {
  12731. numBytes = 16000;
  12732. }
  12733. wchars = $makeSlice(sliceType$5, numBytes);
  12734. p = ptrType$12.nil;
  12735. if (b.$length > 0) {
  12736. p = $indexPtr(wchars.$array, wchars.$offset + 0, ptrType$12);
  12737. }
  12738. nw = 0;
  12739. err$1 = syscall.ReadConsole(f.file.fd, p, (wchars.$length >>> 0), (nw_ptr || (nw_ptr = new ptrType$4(function() { return nw; }, function($v) { nw = $v; }))), ptrType$13.nil);
  12740. if (!($interfaceIsEqual(err$1, $ifaceNil))) {
  12741. _tmp$2 = 0; _tmp$3 = err$1; n = _tmp$2; err = _tmp$3;
  12742. return [n, err];
  12743. }
  12744. f.file.readbuf = utf16.Decode($subslice(wchars, 0, nw));
  12745. }
  12746. _ref = f.file.readbuf;
  12747. _i = 0;
  12748. while (true) {
  12749. if (!(_i < _ref.$length)) { break; }
  12750. i = _i;
  12751. r = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]);
  12752. if (utf8.RuneLen(r) > b.$length) {
  12753. f.file.readbuf = $subslice(f.file.readbuf, i);
  12754. _tmp$4 = n; _tmp$5 = $ifaceNil; n = _tmp$4; err = _tmp$5;
  12755. return [n, err];
  12756. }
  12757. nr = utf8.EncodeRune(b, r);
  12758. b = $subslice(b, nr);
  12759. n = n + (nr) >> 0;
  12760. _i++;
  12761. }
  12762. f.file.readbuf = sliceType$7.nil;
  12763. _tmp$6 = n; _tmp$7 = $ifaceNil; n = _tmp$6; err = _tmp$7;
  12764. return [n, err];
  12765. };
  12766. File.prototype.readConsole = function(b) { return this.$val.readConsole(b); };
  12767. File.ptr.prototype.read = function(b) {
  12768. var $ptr, _tuple, _tuple$1, _tuple$2, b, err, f, n, $s, $deferred, $r;
  12769. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; b = $f.b; err = $f.err; f = $f.f; n = $f.n; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
  12770. n = 0;
  12771. err = $ifaceNil;
  12772. f = this;
  12773. $r = f.file.l.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  12774. $deferred.push([$methodVal(f.file.l, "Unlock"), []]);
  12775. if (f.file.isConsole) {
  12776. _tuple = f.readConsole(b); n = _tuple[0]; err = _tuple[1];
  12777. return [n, err];
  12778. }
  12779. _tuple$2 = syscall.Read(f.file.fd, b);
  12780. _tuple$1 = fixCount(_tuple$2[0], _tuple$2[1]); n = _tuple$1[0]; err = _tuple$1[1];
  12781. return [n, err];
  12782. /* */ $s = -1; case -1: } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if (!$curGoroutine.asleep) { return [n, err]; } if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: File.ptr.prototype.read }; } $f.$ptr = $ptr; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f.b = b; $f.err = err; $f.f = f; $f.n = n; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
  12783. };
  12784. File.prototype.read = function(b) { return this.$val.read(b); };
  12785. File.ptr.prototype.pread = function(b, off) {
  12786. var $ptr, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tuple, b, curoffset, done, e, err, f, n, o, off, $s, $deferred, $r;
  12787. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tmp$6 = $f._tmp$6; _tmp$7 = $f._tmp$7; _tuple = $f._tuple; b = $f.b; curoffset = $f.curoffset; done = $f.done; e = $f.e; err = $f.err; f = $f.f; n = $f.n; o = $f.o; off = $f.off; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
  12788. done = [done];
  12789. o = [o];
  12790. n = 0;
  12791. err = $ifaceNil;
  12792. f = this;
  12793. $r = f.file.l.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  12794. $deferred.push([$methodVal(f.file.l, "Unlock"), []]);
  12795. _tuple = syscall.Seek(f.file.fd, new $Int64(0, 0), 1); curoffset = _tuple[0]; e = _tuple[1];
  12796. if (!($interfaceIsEqual(e, $ifaceNil))) {
  12797. _tmp = 0; _tmp$1 = e; n = _tmp; err = _tmp$1;
  12798. return [n, err];
  12799. }
  12800. $deferred.push([syscall.Seek, [f.file.fd, curoffset, 0]]);
  12801. o[0] = new syscall.Overlapped.ptr(0, 0, (off.$low >>> 0), ($shiftRightInt64(off, 32).$low >>> 0), 0);
  12802. done[0] = 0;
  12803. e = syscall.ReadFile(f.file.fd, b, (done.$ptr || (done.$ptr = new ptrType$4(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, done))), o[0]);
  12804. if (!($interfaceIsEqual(e, $ifaceNil))) {
  12805. if ($interfaceIsEqual(e, new syscall.Errno(38))) {
  12806. _tmp$2 = 0; _tmp$3 = $ifaceNil; n = _tmp$2; err = _tmp$3;
  12807. return [n, err];
  12808. }
  12809. _tmp$4 = 0; _tmp$5 = e; n = _tmp$4; err = _tmp$5;
  12810. return [n, err];
  12811. }
  12812. _tmp$6 = (done[0] >> 0); _tmp$7 = $ifaceNil; n = _tmp$6; err = _tmp$7;
  12813. return [n, err];
  12814. /* */ $s = -1; case -1: } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if (!$curGoroutine.asleep) { return [n, err]; } if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: File.ptr.prototype.pread }; } $f.$ptr = $ptr; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tmp$6 = _tmp$6; $f._tmp$7 = _tmp$7; $f._tuple = _tuple; $f.b = b; $f.curoffset = curoffset; $f.done = done; $f.e = e; $f.err = err; $f.f = f; $f.n = n; $f.o = o; $f.off = off; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
  12815. };
  12816. File.prototype.pread = function(b, off) { return this.$val.pread(b, off); };
  12817. File.ptr.prototype.writeConsole = function(b) {
  12818. var $ptr, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, b, chunk, err, f, l, m, n, r, runes, uint16s, written;
  12819. n = 0;
  12820. err = $ifaceNil;
  12821. f = this;
  12822. n = b.$length;
  12823. runes = $makeSlice(sliceType$7, 0, 256);
  12824. if (f.file.lastbits.$length > 0) {
  12825. b = $appendSlice(f.file.lastbits, b);
  12826. f.file.lastbits = sliceType$2.nil;
  12827. }
  12828. while (true) {
  12829. if (!(b.$length >= 4 || utf8.FullRune(b))) { break; }
  12830. _tuple = utf8.DecodeRune(b); r = _tuple[0]; l = _tuple[1];
  12831. runes = $append(runes, r);
  12832. b = $subslice(b, l);
  12833. }
  12834. if (b.$length > 0) {
  12835. f.file.lastbits = $makeSlice(sliceType$2, b.$length);
  12836. $copySlice(f.file.lastbits, b);
  12837. }
  12838. while (true) {
  12839. if (!(runes.$length > 0)) { break; }
  12840. m = runes.$length;
  12841. if (m > 16000) {
  12842. m = 16000;
  12843. }
  12844. chunk = $subslice(runes, 0, m);
  12845. runes = $subslice(runes, m);
  12846. uint16s = utf16.Encode(chunk);
  12847. while (true) {
  12848. if (!(uint16s.$length > 0)) { break; }
  12849. written = [written];
  12850. written[0] = 0;
  12851. err = syscall.WriteConsole(f.file.fd, $indexPtr(uint16s.$array, uint16s.$offset + 0, ptrType$12), (uint16s.$length >>> 0), (written.$ptr || (written.$ptr = new ptrType$4(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, written))), ptrType$13.nil);
  12852. if (!($interfaceIsEqual(err, $ifaceNil))) {
  12853. _tmp = 0; _tmp$1 = $ifaceNil; n = _tmp; err = _tmp$1;
  12854. return [n, err];
  12855. }
  12856. uint16s = $subslice(uint16s, written[0]);
  12857. }
  12858. }
  12859. _tmp$2 = n; _tmp$3 = $ifaceNil; n = _tmp$2; err = _tmp$3;
  12860. return [n, err];
  12861. };
  12862. File.prototype.writeConsole = function(b) { return this.$val.writeConsole(b); };
  12863. File.ptr.prototype.write = function(b) {
  12864. var $ptr, _tuple, _tuple$1, _tuple$2, b, err, f, n, $s, $deferred, $r;
  12865. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; b = $f.b; err = $f.err; f = $f.f; n = $f.n; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
  12866. n = 0;
  12867. err = $ifaceNil;
  12868. f = this;
  12869. $r = f.file.l.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  12870. $deferred.push([$methodVal(f.file.l, "Unlock"), []]);
  12871. if (f.file.isConsole) {
  12872. _tuple = f.writeConsole(b); n = _tuple[0]; err = _tuple[1];
  12873. return [n, err];
  12874. }
  12875. _tuple$2 = syscall.Write(f.file.fd, b);
  12876. _tuple$1 = fixCount(_tuple$2[0], _tuple$2[1]); n = _tuple$1[0]; err = _tuple$1[1];
  12877. return [n, err];
  12878. /* */ $s = -1; case -1: } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if (!$curGoroutine.asleep) { return [n, err]; } if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: File.ptr.prototype.write }; } $f.$ptr = $ptr; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f.b = b; $f.err = err; $f.f = f; $f.n = n; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
  12879. };
  12880. File.prototype.write = function(b) { return this.$val.write(b); };
  12881. File.ptr.prototype.pwrite = function(b, off) {
  12882. var $ptr, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tuple, b, curoffset, done, e, err, f, n, o, off, $s, $deferred, $r;
  12883. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tuple = $f._tuple; b = $f.b; curoffset = $f.curoffset; done = $f.done; e = $f.e; err = $f.err; f = $f.f; n = $f.n; o = $f.o; off = $f.off; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
  12884. done = [done];
  12885. o = [o];
  12886. n = 0;
  12887. err = $ifaceNil;
  12888. f = this;
  12889. $r = f.file.l.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  12890. $deferred.push([$methodVal(f.file.l, "Unlock"), []]);
  12891. _tuple = syscall.Seek(f.file.fd, new $Int64(0, 0), 1); curoffset = _tuple[0]; e = _tuple[1];
  12892. if (!($interfaceIsEqual(e, $ifaceNil))) {
  12893. _tmp = 0; _tmp$1 = e; n = _tmp; err = _tmp$1;
  12894. return [n, err];
  12895. }
  12896. $deferred.push([syscall.Seek, [f.file.fd, curoffset, 0]]);
  12897. o[0] = new syscall.Overlapped.ptr(0, 0, (off.$low >>> 0), ($shiftRightInt64(off, 32).$low >>> 0), 0);
  12898. done[0] = 0;
  12899. e = syscall.WriteFile(f.file.fd, b, (done.$ptr || (done.$ptr = new ptrType$4(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, done))), o[0]);
  12900. if (!($interfaceIsEqual(e, $ifaceNil))) {
  12901. _tmp$2 = 0; _tmp$3 = e; n = _tmp$2; err = _tmp$3;
  12902. return [n, err];
  12903. }
  12904. _tmp$4 = (done[0] >> 0); _tmp$5 = $ifaceNil; n = _tmp$4; err = _tmp$5;
  12905. return [n, err];
  12906. /* */ $s = -1; case -1: } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if (!$curGoroutine.asleep) { return [n, err]; } if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: File.ptr.prototype.pwrite }; } $f.$ptr = $ptr; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tuple = _tuple; $f.b = b; $f.curoffset = curoffset; $f.done = done; $f.e = e; $f.err = err; $f.f = f; $f.n = n; $f.o = o; $f.off = off; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
  12907. };
  12908. File.prototype.pwrite = function(b, off) { return this.$val.pwrite(b, off); };
  12909. File.ptr.prototype.seek = function(offset, whence) {
  12910. var $ptr, _tuple, err, f, offset, ret, whence, $s, $deferred, $r;
  12911. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _tuple = $f._tuple; err = $f.err; f = $f.f; offset = $f.offset; ret = $f.ret; whence = $f.whence; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
  12912. ret = new $Int64(0, 0);
  12913. err = $ifaceNil;
  12914. f = this;
  12915. $r = f.file.l.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  12916. $deferred.push([$methodVal(f.file.l, "Unlock"), []]);
  12917. _tuple = syscall.Seek(f.file.fd, offset, whence); ret = _tuple[0]; err = _tuple[1];
  12918. return [ret, err];
  12919. /* */ $s = -1; case -1: } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if (!$curGoroutine.asleep) { return [ret, err]; } if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: File.ptr.prototype.seek }; } $f.$ptr = $ptr; $f._tuple = _tuple; $f.err = err; $f.f = f; $f.offset = offset; $f.ret = ret; $f.whence = whence; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
  12920. };
  12921. File.prototype.seek = function(offset, whence) { return this.$val.seek(offset, whence); };
  12922. Remove = function(name) {
  12923. var $ptr, _tuple, _tuple$1, a, e, e1, e2, name, p;
  12924. _tuple = syscall.UTF16PtrFromString(name); p = _tuple[0]; e = _tuple[1];
  12925. if (!($interfaceIsEqual(e, $ifaceNil))) {
  12926. return new PathError.ptr("remove", name, e);
  12927. }
  12928. e = syscall.DeleteFile(p);
  12929. if ($interfaceIsEqual(e, $ifaceNil)) {
  12930. return $ifaceNil;
  12931. }
  12932. e1 = syscall.RemoveDirectory(p);
  12933. if ($interfaceIsEqual(e1, $ifaceNil)) {
  12934. return $ifaceNil;
  12935. }
  12936. if (!($interfaceIsEqual(e1, e))) {
  12937. _tuple$1 = syscall.GetFileAttributes(p); a = _tuple$1[0]; e2 = _tuple$1[1];
  12938. if (!($interfaceIsEqual(e2, $ifaceNil))) {
  12939. e = e2;
  12940. } else {
  12941. if (!((((a & 16) >>> 0) === 0))) {
  12942. e = e1;
  12943. }
  12944. }
  12945. }
  12946. return new PathError.ptr("remove", name, e);
  12947. };
  12948. $pkg.Remove = Remove;
  12949. TempDir = function() {
  12950. var $ptr, _tuple, _tuple$1, dirw, n, x;
  12951. dirw = $makeSlice(sliceType$5, 260);
  12952. _tuple = syscall.GetTempPath((dirw.$length >>> 0), $indexPtr(dirw.$array, dirw.$offset + 0, ptrType$12)); n = _tuple[0];
  12953. if (n > (dirw.$length >>> 0)) {
  12954. dirw = $makeSlice(sliceType$5, n);
  12955. _tuple$1 = syscall.GetTempPath((dirw.$length >>> 0), $indexPtr(dirw.$array, dirw.$offset + 0, ptrType$12)); n = _tuple$1[0];
  12956. if (n > (dirw.$length >>> 0)) {
  12957. n = 0;
  12958. }
  12959. }
  12960. if (n > 0 && ((x = n - 1 >>> 0, ((x < 0 || x >= dirw.$length) ? $throwRuntimeError("index out of range") : dirw.$array[dirw.$offset + x])) === 92)) {
  12961. n = n - (1) >>> 0;
  12962. }
  12963. return $runesToString(utf16.Decode($subslice(dirw, 0, n)));
  12964. };
  12965. $pkg.TempDir = TempDir;
  12966. IsPathSeparator = function(c) {
  12967. var $ptr, c;
  12968. return (c === 92) || (c === 47);
  12969. };
  12970. $pkg.IsPathSeparator = IsPathSeparator;
  12971. init$2 = function() {
  12972. var $ptr;
  12973. return;
  12974. $pkg.Args = runtime_args();
  12975. };
  12976. Exit = function(code) {
  12977. var $ptr, code;
  12978. syscall.Exit(code);
  12979. };
  12980. $pkg.Exit = Exit;
  12981. File.ptr.prototype.Stat = function() {
  12982. var $ptr, _r, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, d, e, err, fi, file$1, $s, $r;
  12983. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tmp$6 = $f._tmp$6; _tmp$7 = $f._tmp$7; _tmp$8 = $f._tmp$8; _tmp$9 = $f._tmp$9; _tuple = $f._tuple; d = $f.d; e = $f.e; err = $f.err; fi = $f.fi; file$1 = $f.file$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  12984. d = [d];
  12985. fi = $ifaceNil;
  12986. err = $ifaceNil;
  12987. file$1 = this;
  12988. if (file$1 === ptrType$1.nil) {
  12989. _tmp = $ifaceNil; _tmp$1 = $pkg.ErrInvalid; fi = _tmp; err = _tmp$1;
  12990. return [fi, err];
  12991. }
  12992. if (file$1 === ptrType$1.nil || file$1.file.fd < 0) {
  12993. _tmp$2 = $ifaceNil; _tmp$3 = new syscall.Errno(536870951); fi = _tmp$2; err = _tmp$3;
  12994. return [fi, err];
  12995. }
  12996. /* */ if (file$1.file.isdir()) { $s = 1; continue; }
  12997. /* */ $s = 2; continue;
  12998. /* if (file$1.file.isdir()) { */ case 1:
  12999. _r = Stat(file$1.file.name); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  13000. _tuple = _r; fi = _tuple[0]; err = _tuple[1];
  13001. return [fi, err];
  13002. /* } */ case 2:
  13003. if (file$1.file.name === "NUL") {
  13004. _tmp$4 = devNullStat; _tmp$5 = $ifaceNil; fi = _tmp$4; err = _tmp$5;
  13005. return [fi, err];
  13006. }
  13007. d[0] = $clone(new syscall.ByHandleFileInformation.ptr(), syscall.ByHandleFileInformation);
  13008. e = syscall.GetFileInformationByHandle(file$1.file.fd, d[0]);
  13009. if (!($interfaceIsEqual(e, $ifaceNil))) {
  13010. _tmp$6 = $ifaceNil; _tmp$7 = new PathError.ptr("GetFileInformationByHandle", file$1.file.name, e); fi = _tmp$6; err = _tmp$7;
  13011. return [fi, err];
  13012. }
  13013. _tmp$8 = new fileStat.ptr(basename(file$1.file.name), new syscall.Win32FileAttributeData.ptr(d[0].FileAttributes, $clone(d[0].CreationTime, syscall.Filetime), $clone(d[0].LastAccessTime, syscall.Filetime), $clone(d[0].LastWriteTime, syscall.Filetime), d[0].FileSizeHigh, d[0].FileSizeLow), new sync.Mutex.ptr(), "", d[0].VolumeSerialNumber, d[0].FileIndexHigh, d[0].FileIndexLow); _tmp$9 = $ifaceNil; fi = _tmp$8; err = _tmp$9;
  13014. return [fi, err];
  13015. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: File.ptr.prototype.Stat }; } $f.$ptr = $ptr; $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tmp$6 = _tmp$6; $f._tmp$7 = _tmp$7; $f._tmp$8 = _tmp$8; $f._tmp$9 = _tmp$9; $f._tuple = _tuple; $f.d = d; $f.e = e; $f.err = err; $f.fi = fi; $f.file$1 = file$1; $f.$s = $s; $f.$r = $r; return $f;
  13016. };
  13017. File.prototype.Stat = function() { return this.$val.Stat(); };
  13018. Stat = function(name) {
  13019. var $ptr, _r, _tmp, _tmp$1, _tuple, _tuple$1, err, fi, name, $s, $r;
  13020. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; err = $f.err; fi = $f.fi; name = $f.name; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  13021. fi = $ifaceNil;
  13022. err = $ifaceNil;
  13023. /* while (true) { */ case 1:
  13024. _tuple = Lstat(name); fi = _tuple[0]; err = _tuple[1];
  13025. if (!($interfaceIsEqual(err, $ifaceNil))) {
  13026. return [fi, err];
  13027. }
  13028. _r = fi.Mode(); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  13029. /* */ if (((_r & 134217728) >>> 0) === 0) { $s = 3; continue; }
  13030. /* */ $s = 4; continue;
  13031. /* if (((_r & 134217728) >>> 0) === 0) { */ case 3:
  13032. return [fi, err];
  13033. /* } */ case 4:
  13034. _tuple$1 = Readlink(name); name = _tuple$1[0]; err = _tuple$1[1];
  13035. if (!($interfaceIsEqual(err, $ifaceNil))) {
  13036. return [fi, err];
  13037. }
  13038. /* } */ $s = 1; continue; case 2:
  13039. _tmp = fi; _tmp$1 = err; fi = _tmp; err = _tmp$1;
  13040. return [fi, err];
  13041. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Stat }; } $f.$ptr = $ptr; $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.err = err; $f.fi = fi; $f.name = name; $f.$s = $s; $f.$r = $r; return $f;
  13042. };
  13043. $pkg.Stat = Stat;
  13044. Lstat = function(name) {
  13045. var $ptr, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, e, err, fi, fs, name, namep;
  13046. fi = $ifaceNil;
  13047. err = $ifaceNil;
  13048. if (name.length === 0) {
  13049. _tmp = $ifaceNil; _tmp$1 = new PathError.ptr("Lstat", name, new syscall.Errno(3)); fi = _tmp; err = _tmp$1;
  13050. return [fi, err];
  13051. }
  13052. if (name === "NUL") {
  13053. _tmp$2 = devNullStat; _tmp$3 = $ifaceNil; fi = _tmp$2; err = _tmp$3;
  13054. return [fi, err];
  13055. }
  13056. fs = new fileStat.ptr(basename(name), new syscall.Win32FileAttributeData.ptr(), new sync.Mutex.ptr(), "", 0, 0, 0);
  13057. _tuple = syscall.UTF16PtrFromString(name); namep = _tuple[0]; e = _tuple[1];
  13058. if (!($interfaceIsEqual(e, $ifaceNil))) {
  13059. _tmp$4 = $ifaceNil; _tmp$5 = new PathError.ptr("Lstat", name, e); fi = _tmp$4; err = _tmp$5;
  13060. return [fi, err];
  13061. }
  13062. e = syscall.GetFileAttributesEx(namep, 0, fs.sys);
  13063. if (!($interfaceIsEqual(e, $ifaceNil))) {
  13064. _tmp$6 = $ifaceNil; _tmp$7 = new PathError.ptr("GetFileAttributesEx", name, e); fi = _tmp$6; err = _tmp$7;
  13065. return [fi, err];
  13066. }
  13067. fs.path = name;
  13068. if (!isAbs(fs.path)) {
  13069. _tuple$1 = syscall.FullPath(fs.path); fs.path = _tuple$1[0]; e = _tuple$1[1];
  13070. if (!($interfaceIsEqual(e, $ifaceNil))) {
  13071. _tmp$8 = $ifaceNil; _tmp$9 = e; fi = _tmp$8; err = _tmp$9;
  13072. return [fi, err];
  13073. }
  13074. }
  13075. _tmp$10 = fs; _tmp$11 = $ifaceNil; fi = _tmp$10; err = _tmp$11;
  13076. return [fi, err];
  13077. };
  13078. $pkg.Lstat = Lstat;
  13079. basename = function(name) {
  13080. var $ptr, i, name;
  13081. if ((name.length === 2) && (name.charCodeAt(1) === 58)) {
  13082. name = ".";
  13083. } else if (name.length > 2 && (name.charCodeAt(1) === 58)) {
  13084. name = name.substring(2);
  13085. }
  13086. i = name.length - 1 >> 0;
  13087. while (true) {
  13088. if (!(i > 0 && ((name.charCodeAt(i) === 47) || (name.charCodeAt(i) === 92)))) { break; }
  13089. name = name.substring(0, i);
  13090. i = i - (1) >> 0;
  13091. }
  13092. i = i - (1) >> 0;
  13093. while (true) {
  13094. if (!(i >= 0)) { break; }
  13095. if ((name.charCodeAt(i) === 47) || (name.charCodeAt(i) === 92)) {
  13096. name = name.substring((i + 1 >> 0));
  13097. break;
  13098. }
  13099. i = i - (1) >> 0;
  13100. }
  13101. return name;
  13102. };
  13103. isAbs = function(path) {
  13104. var $ptr, b, path, v;
  13105. b = false;
  13106. v = volumeName(path);
  13107. if (v === "") {
  13108. b = false;
  13109. return b;
  13110. }
  13111. path = path.substring(v.length);
  13112. if (path === "") {
  13113. b = false;
  13114. return b;
  13115. }
  13116. b = IsPathSeparator(path.charCodeAt(0));
  13117. return b;
  13118. };
  13119. volumeName = function(path) {
  13120. var $ptr, c, l, n, path, v;
  13121. v = "";
  13122. if (path.length < 2) {
  13123. v = "";
  13124. return v;
  13125. }
  13126. c = path.charCodeAt(0);
  13127. if ((path.charCodeAt(1) === 58) && (48 <= c && c <= 57 || 97 <= c && c <= 122 || 65 <= c && c <= 90)) {
  13128. v = path.substring(0, 2);
  13129. return v;
  13130. }
  13131. l = path.length;
  13132. if (l >= 5 && IsPathSeparator(path.charCodeAt(0)) && IsPathSeparator(path.charCodeAt(1)) && !IsPathSeparator(path.charCodeAt(2)) && !((path.charCodeAt(2) === 46))) {
  13133. n = 3;
  13134. while (true) {
  13135. if (!(n < (l - 1 >> 0))) { break; }
  13136. if (IsPathSeparator(path.charCodeAt(n))) {
  13137. n = n + (1) >> 0;
  13138. if (!IsPathSeparator(path.charCodeAt(n))) {
  13139. if (path.charCodeAt(n) === 46) {
  13140. break;
  13141. }
  13142. while (true) {
  13143. if (!(n < l)) { break; }
  13144. if (IsPathSeparator(path.charCodeAt(n))) {
  13145. break;
  13146. }
  13147. n = n + (1) >> 0;
  13148. }
  13149. v = path.substring(0, n);
  13150. return v;
  13151. }
  13152. break;
  13153. }
  13154. n = n + (1) >> 0;
  13155. }
  13156. }
  13157. v = "";
  13158. return v;
  13159. };
  13160. FileMode.prototype.String = function() {
  13161. var $ptr, _i, _i$1, _ref, _ref$1, _rune, _rune$1, buf, c, c$1, i, i$1, m, w, y, y$1;
  13162. m = this.$val;
  13163. buf = $clone(arrayType.zero(), arrayType);
  13164. w = 0;
  13165. _ref = "dalTLDpSugct";
  13166. _i = 0;
  13167. while (true) {
  13168. if (!(_i < _ref.length)) { break; }
  13169. _rune = $decodeRune(_ref, _i);
  13170. i = _i;
  13171. c = _rune[0];
  13172. if (!((((m & (((y = ((31 - i >> 0) >>> 0), y < 32 ? (1 << y) : 0) >>> 0))) >>> 0) === 0))) {
  13173. ((w < 0 || w >= buf.length) ? $throwRuntimeError("index out of range") : buf[w] = (c << 24 >>> 24));
  13174. w = w + (1) >> 0;
  13175. }
  13176. _i += _rune[1];
  13177. }
  13178. if (w === 0) {
  13179. ((w < 0 || w >= buf.length) ? $throwRuntimeError("index out of range") : buf[w] = 45);
  13180. w = w + (1) >> 0;
  13181. }
  13182. _ref$1 = "rwxrwxrwx";
  13183. _i$1 = 0;
  13184. while (true) {
  13185. if (!(_i$1 < _ref$1.length)) { break; }
  13186. _rune$1 = $decodeRune(_ref$1, _i$1);
  13187. i$1 = _i$1;
  13188. c$1 = _rune$1[0];
  13189. if (!((((m & (((y$1 = ((8 - i$1 >> 0) >>> 0), y$1 < 32 ? (1 << y$1) : 0) >>> 0))) >>> 0) === 0))) {
  13190. ((w < 0 || w >= buf.length) ? $throwRuntimeError("index out of range") : buf[w] = (c$1 << 24 >>> 24));
  13191. } else {
  13192. ((w < 0 || w >= buf.length) ? $throwRuntimeError("index out of range") : buf[w] = 45);
  13193. }
  13194. w = w + (1) >> 0;
  13195. _i$1 += _rune$1[1];
  13196. }
  13197. return $bytesToString($subslice(new sliceType$2(buf), 0, w));
  13198. };
  13199. $ptrType(FileMode).prototype.String = function() { return new FileMode(this.$get()).String(); };
  13200. FileMode.prototype.IsDir = function() {
  13201. var $ptr, m;
  13202. m = this.$val;
  13203. return !((((m & 2147483648) >>> 0) === 0));
  13204. };
  13205. $ptrType(FileMode).prototype.IsDir = function() { return new FileMode(this.$get()).IsDir(); };
  13206. FileMode.prototype.IsRegular = function() {
  13207. var $ptr, m;
  13208. m = this.$val;
  13209. return ((m & 2399141888) >>> 0) === 0;
  13210. };
  13211. $ptrType(FileMode).prototype.IsRegular = function() { return new FileMode(this.$get()).IsRegular(); };
  13212. FileMode.prototype.Perm = function() {
  13213. var $ptr, m;
  13214. m = this.$val;
  13215. return (m & 511) >>> 0;
  13216. };
  13217. $ptrType(FileMode).prototype.Perm = function() { return new FileMode(this.$get()).Perm(); };
  13218. fileStat.ptr.prototype.Name = function() {
  13219. var $ptr, fs;
  13220. fs = this;
  13221. return fs.name;
  13222. };
  13223. fileStat.prototype.Name = function() { return this.$val.Name(); };
  13224. fileStat.ptr.prototype.IsDir = function() {
  13225. var $ptr, fs;
  13226. fs = this;
  13227. return new FileMode(fs.Mode()).IsDir();
  13228. };
  13229. fileStat.prototype.IsDir = function() { return this.$val.IsDir(); };
  13230. fileStat.ptr.prototype.Size = function() {
  13231. var $ptr, fs, x, x$1;
  13232. fs = this;
  13233. return (x = $shiftLeft64(new $Int64(0, fs.sys.FileSizeHigh), 32), x$1 = new $Int64(0, fs.sys.FileSizeLow), new $Int64(x.$high + x$1.$high, x.$low + x$1.$low));
  13234. };
  13235. fileStat.prototype.Size = function() { return this.$val.Size(); };
  13236. fileStat.ptr.prototype.Mode = function() {
  13237. var $ptr, fs, m;
  13238. m = 0;
  13239. fs = this;
  13240. if (fs === devNullStat) {
  13241. m = 69206454;
  13242. return m;
  13243. }
  13244. if (!((((fs.sys.FileAttributes & 16) >>> 0) === 0))) {
  13245. m = (m | (2147483721)) >>> 0;
  13246. }
  13247. if (!((((fs.sys.FileAttributes & 1) >>> 0) === 0))) {
  13248. m = (m | (292)) >>> 0;
  13249. } else {
  13250. m = (m | (438)) >>> 0;
  13251. }
  13252. if (!((((fs.sys.FileAttributes & 1024) >>> 0) === 0))) {
  13253. m = (m | (134217728)) >>> 0;
  13254. }
  13255. m = m;
  13256. return m;
  13257. };
  13258. fileStat.prototype.Mode = function() { return this.$val.Mode(); };
  13259. fileStat.ptr.prototype.ModTime = function() {
  13260. var $ptr, fs;
  13261. fs = this;
  13262. return time.Unix(new $Int64(0, 0), fs.sys.LastWriteTime.Nanoseconds());
  13263. };
  13264. fileStat.prototype.ModTime = function() { return this.$val.ModTime(); };
  13265. fileStat.ptr.prototype.Sys = function() {
  13266. var $ptr, fs;
  13267. fs = this;
  13268. return fs.sys;
  13269. };
  13270. fileStat.prototype.Sys = function() { return this.$val.Sys(); };
  13271. ptrType$2.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}];
  13272. ptrType$17.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}];
  13273. ptrType$3.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}];
  13274. ptrType$1.methods = [{prop: "readdirnames", name: "readdirnames", pkg: "os", typ: $funcType([$Int], [sliceType, $error], false)}, {prop: "Readdir", name: "Readdir", pkg: "", typ: $funcType([$Int], [sliceType$1, $error], false)}, {prop: "Readdirnames", name: "Readdirnames", pkg: "", typ: $funcType([$Int], [sliceType, $error], false)}, {prop: "Name", name: "Name", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType$2], [$Int, $error], false)}, {prop: "ReadAt", name: "ReadAt", pkg: "", typ: $funcType([sliceType$2, $Int64], [$Int, $error], false)}, {prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType$2], [$Int, $error], false)}, {prop: "WriteAt", name: "WriteAt", pkg: "", typ: $funcType([sliceType$2, $Int64], [$Int, $error], false)}, {prop: "Seek", name: "Seek", pkg: "", typ: $funcType([$Int64, $Int], [$Int64, $error], false)}, {prop: "WriteString", name: "WriteString", pkg: "", typ: $funcType([$String], [$Int, $error], false)}, {prop: "Chdir", name: "Chdir", pkg: "", typ: $funcType([], [$error], false)}, {prop: "Chmod", name: "Chmod", pkg: "", typ: $funcType([FileMode], [$error], false)}, {prop: "Chown", name: "Chown", pkg: "", typ: $funcType([$Int, $Int], [$error], false)}, {prop: "Truncate", name: "Truncate", pkg: "", typ: $funcType([$Int64], [$error], false)}, {prop: "Sync", name: "Sync", pkg: "", typ: $funcType([], [$error], false)}, {prop: "Fd", name: "Fd", pkg: "", typ: $funcType([], [$Uintptr], false)}, {prop: "Close", name: "Close", pkg: "", typ: $funcType([], [$error], false)}, {prop: "readdir", name: "readdir", pkg: "os", typ: $funcType([$Int], [sliceType$1, $error], false)}, {prop: "readConsole", name: "readConsole", pkg: "os", typ: $funcType([sliceType$2], [$Int, $error], false)}, {prop: "read", name: "read", pkg: "os", typ: $funcType([sliceType$2], [$Int, $error], false)}, {prop: "pread", name: "pread", pkg: "os", typ: $funcType([sliceType$2, $Int64], [$Int, $error], false)}, {prop: "writeConsole", name: "writeConsole", pkg: "os", typ: $funcType([sliceType$2], [$Int, $error], false)}, {prop: "write", name: "write", pkg: "os", typ: $funcType([sliceType$2], [$Int, $error], false)}, {prop: "pwrite", name: "pwrite", pkg: "os", typ: $funcType([sliceType$2, $Int64], [$Int, $error], false)}, {prop: "seek", name: "seek", pkg: "os", typ: $funcType([$Int64, $Int], [$Int64, $error], false)}, {prop: "Stat", name: "Stat", pkg: "", typ: $funcType([], [FileInfo, $error], false)}];
  13275. ptrType$11.methods = [{prop: "isdir", name: "isdir", pkg: "os", typ: $funcType([], [$Bool], false)}, {prop: "close", name: "close", pkg: "os", typ: $funcType([], [$error], false)}];
  13276. FileMode.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "IsDir", name: "IsDir", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "IsRegular", name: "IsRegular", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "Perm", name: "Perm", pkg: "", typ: $funcType([], [FileMode], false)}];
  13277. ptrType$14.methods = [{prop: "Name", name: "Name", pkg: "", typ: $funcType([], [$String], false)}, {prop: "IsDir", name: "IsDir", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "Size", name: "Size", pkg: "", typ: $funcType([], [$Int64], false)}, {prop: "Mode", name: "Mode", pkg: "", typ: $funcType([], [FileMode], false)}, {prop: "ModTime", name: "ModTime", pkg: "", typ: $funcType([], [time.Time], false)}, {prop: "Sys", name: "Sys", pkg: "", typ: $funcType([], [$emptyInterface], false)}, {prop: "loadFileId", name: "loadFileId", pkg: "os", typ: $funcType([], [$error], false)}];
  13278. PathError.init([{prop: "Op", name: "Op", pkg: "", typ: $String, tag: ""}, {prop: "Path", name: "Path", pkg: "", typ: $String, tag: ""}, {prop: "Err", name: "Err", pkg: "", typ: $error, tag: ""}]);
  13279. SyscallError.init([{prop: "Syscall", name: "Syscall", pkg: "", typ: $String, tag: ""}, {prop: "Err", name: "Err", pkg: "", typ: $error, tag: ""}]);
  13280. LinkError.init([{prop: "Op", name: "Op", pkg: "", typ: $String, tag: ""}, {prop: "Old", name: "Old", pkg: "", typ: $String, tag: ""}, {prop: "New", name: "New", pkg: "", typ: $String, tag: ""}, {prop: "Err", name: "Err", pkg: "", typ: $error, tag: ""}]);
  13281. File.init([{prop: "file", name: "", pkg: "os", typ: ptrType$11, tag: ""}]);
  13282. file.init([{prop: "fd", name: "fd", pkg: "os", typ: syscall.Handle, tag: ""}, {prop: "name", name: "name", pkg: "os", typ: $String, tag: ""}, {prop: "dirinfo", name: "dirinfo", pkg: "os", typ: ptrType$10, tag: ""}, {prop: "l", name: "l", pkg: "os", typ: sync.Mutex, tag: ""}, {prop: "isConsole", name: "isConsole", pkg: "os", typ: $Bool, tag: ""}, {prop: "lastbits", name: "lastbits", pkg: "os", typ: sliceType$2, tag: ""}, {prop: "readbuf", name: "readbuf", pkg: "os", typ: sliceType$7, tag: ""}]);
  13283. dirInfo.init([{prop: "data", name: "data", pkg: "os", typ: syscall.Win32finddata, tag: ""}, {prop: "needdata", name: "needdata", pkg: "os", typ: $Bool, tag: ""}, {prop: "path", name: "path", pkg: "os", typ: $String, tag: ""}, {prop: "isempty", name: "isempty", pkg: "os", typ: $Bool, tag: ""}]);
  13284. FileInfo.init([{prop: "IsDir", name: "IsDir", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "ModTime", name: "ModTime", pkg: "", typ: $funcType([], [time.Time], false)}, {prop: "Mode", name: "Mode", pkg: "", typ: $funcType([], [FileMode], false)}, {prop: "Name", name: "Name", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Size", name: "Size", pkg: "", typ: $funcType([], [$Int64], false)}, {prop: "Sys", name: "Sys", pkg: "", typ: $funcType([], [$emptyInterface], false)}]);
  13285. fileStat.init([{prop: "name", name: "name", pkg: "os", typ: $String, tag: ""}, {prop: "sys", name: "sys", pkg: "os", typ: syscall.Win32FileAttributeData, tag: ""}, {prop: "Mutex", name: "", pkg: "", typ: sync.Mutex, tag: ""}, {prop: "path", name: "path", pkg: "os", typ: $String, tag: ""}, {prop: "vol", name: "vol", pkg: "os", typ: $Uint32, tag: ""}, {prop: "idxhi", name: "idxhi", pkg: "os", typ: $Uint32, tag: ""}, {prop: "idxlo", name: "idxlo", pkg: "os", typ: $Uint32, tag: ""}]);
  13286. $init = function() {
  13287. $pkg.$init = function() {};
  13288. /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  13289. $r = errors.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  13290. $r = js.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  13291. $r = io.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  13292. $r = runtime.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  13293. $r = sync.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  13294. $r = atomic.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  13295. $r = syscall.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  13296. $r = time.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  13297. $r = utf16.$init(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  13298. $r = utf8.$init(); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  13299. $pkg.Args = sliceType.nil;
  13300. $pkg.ErrInvalid = errors.New("invalid argument");
  13301. $pkg.ErrPermission = errors.New("permission denied");
  13302. $pkg.ErrExist = errors.New("file already exists");
  13303. $pkg.ErrNotExist = errors.New("file does not exist");
  13304. $pkg.Stdin = NewFile((syscall.Stdin >>> 0), "/dev/stdin");
  13305. $pkg.Stdout = NewFile((syscall.Stdout >>> 0), "/dev/stdout");
  13306. $pkg.Stderr = NewFile((syscall.Stderr >>> 0), "/dev/stderr");
  13307. devNullStat = new fileStat.ptr("NUL", new syscall.Win32FileAttributeData.ptr(), new sync.Mutex.ptr(), "", 0, 0, 0);
  13308. init();
  13309. init$1();
  13310. init$2();
  13311. /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
  13312. };
  13313. $pkg.$init = $init;
  13314. return $pkg;
  13315. })();
  13316. $packages["strconv"] = (function() {
  13317. var $pkg = {}, $init, errors, math, utf8, NumError, decimal, leftCheat, extFloat, floatInfo, decimalSlice, sliceType, sliceType$1, sliceType$2, sliceType$3, sliceType$4, sliceType$5, sliceType$6, ptrType, arrayType, arrayType$1, ptrType$1, arrayType$2, arrayType$3, arrayType$4, arrayType$5, arrayType$6, ptrType$2, ptrType$3, ptrType$4, optimize, powtab, float64pow10, float32pow10, leftcheats, smallPowersOfTen, powersOfTen, uint64pow10, float32info, float32info_ptr, float64info, float64info_ptr, isPrint16, isNotPrint16, isPrint32, isNotPrint32, shifts, ParseBool, equalIgnoreCase, special, readFloat, atof64exact, atof32exact, atof32, atof64, ParseFloat, syntaxError, rangeError, cutoff64, ParseUint, ParseInt, Atoi, digitZero, trim, rightShift, prefixIsLessThan, leftShift, shouldRoundUp, frexp10Many, adjustLastDigitFixed, adjustLastDigit, FormatFloat, AppendFloat, genericFtoa, bigFtoa, formatDigits, roundShortest, fmtE, fmtF, fmtB, max, FormatUint, FormatInt, Itoa, AppendInt, formatBits, quoteWith, Quote, QuoteToASCII, QuoteRune, AppendQuoteRune, QuoteRuneToASCII, AppendQuoteRuneToASCII, CanBackquote, unhex, UnquoteChar, Unquote, contains, bsearch16, bsearch32, IsPrint;
  13318. errors = $packages["errors"];
  13319. math = $packages["math"];
  13320. utf8 = $packages["unicode/utf8"];
  13321. NumError = $pkg.NumError = $newType(0, $kindStruct, "strconv.NumError", "NumError", "strconv", function(Func_, Num_, Err_) {
  13322. this.$val = this;
  13323. if (arguments.length === 0) {
  13324. this.Func = "";
  13325. this.Num = "";
  13326. this.Err = $ifaceNil;
  13327. return;
  13328. }
  13329. this.Func = Func_;
  13330. this.Num = Num_;
  13331. this.Err = Err_;
  13332. });
  13333. decimal = $pkg.decimal = $newType(0, $kindStruct, "strconv.decimal", "decimal", "strconv", function(d_, nd_, dp_, neg_, trunc_) {
  13334. this.$val = this;
  13335. if (arguments.length === 0) {
  13336. this.d = arrayType$6.zero();
  13337. this.nd = 0;
  13338. this.dp = 0;
  13339. this.neg = false;
  13340. this.trunc = false;
  13341. return;
  13342. }
  13343. this.d = d_;
  13344. this.nd = nd_;
  13345. this.dp = dp_;
  13346. this.neg = neg_;
  13347. this.trunc = trunc_;
  13348. });
  13349. leftCheat = $pkg.leftCheat = $newType(0, $kindStruct, "strconv.leftCheat", "leftCheat", "strconv", function(delta_, cutoff_) {
  13350. this.$val = this;
  13351. if (arguments.length === 0) {
  13352. this.delta = 0;
  13353. this.cutoff = "";
  13354. return;
  13355. }
  13356. this.delta = delta_;
  13357. this.cutoff = cutoff_;
  13358. });
  13359. extFloat = $pkg.extFloat = $newType(0, $kindStruct, "strconv.extFloat", "extFloat", "strconv", function(mant_, exp_, neg_) {
  13360. this.$val = this;
  13361. if (arguments.length === 0) {
  13362. this.mant = new $Uint64(0, 0);
  13363. this.exp = 0;
  13364. this.neg = false;
  13365. return;
  13366. }
  13367. this.mant = mant_;
  13368. this.exp = exp_;
  13369. this.neg = neg_;
  13370. });
  13371. floatInfo = $pkg.floatInfo = $newType(0, $kindStruct, "strconv.floatInfo", "floatInfo", "strconv", function(mantbits_, expbits_, bias_) {
  13372. this.$val = this;
  13373. if (arguments.length === 0) {
  13374. this.mantbits = 0;
  13375. this.expbits = 0;
  13376. this.bias = 0;
  13377. return;
  13378. }
  13379. this.mantbits = mantbits_;
  13380. this.expbits = expbits_;
  13381. this.bias = bias_;
  13382. });
  13383. decimalSlice = $pkg.decimalSlice = $newType(0, $kindStruct, "strconv.decimalSlice", "decimalSlice", "strconv", function(d_, nd_, dp_, neg_) {
  13384. this.$val = this;
  13385. if (arguments.length === 0) {
  13386. this.d = sliceType$6.nil;
  13387. this.nd = 0;
  13388. this.dp = 0;
  13389. this.neg = false;
  13390. return;
  13391. }
  13392. this.d = d_;
  13393. this.nd = nd_;
  13394. this.dp = dp_;
  13395. this.neg = neg_;
  13396. });
  13397. sliceType = $sliceType($Int);
  13398. sliceType$1 = $sliceType($Float64);
  13399. sliceType$2 = $sliceType($Float32);
  13400. sliceType$3 = $sliceType(leftCheat);
  13401. sliceType$4 = $sliceType($Uint16);
  13402. sliceType$5 = $sliceType($Uint32);
  13403. sliceType$6 = $sliceType($Uint8);
  13404. ptrType = $ptrType(NumError);
  13405. arrayType = $arrayType($Uint8, 24);
  13406. arrayType$1 = $arrayType($Uint8, 32);
  13407. ptrType$1 = $ptrType(floatInfo);
  13408. arrayType$2 = $arrayType($Uint8, 3);
  13409. arrayType$3 = $arrayType($Uint8, 50);
  13410. arrayType$4 = $arrayType($Uint8, 65);
  13411. arrayType$5 = $arrayType($Uint8, 4);
  13412. arrayType$6 = $arrayType($Uint8, 800);
  13413. ptrType$2 = $ptrType(decimal);
  13414. ptrType$3 = $ptrType(decimalSlice);
  13415. ptrType$4 = $ptrType(extFloat);
  13416. ParseBool = function(str) {
  13417. var $ptr, _ref, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, err, str, value;
  13418. value = false;
  13419. err = $ifaceNil;
  13420. _ref = str;
  13421. if (_ref === "1" || _ref === "t" || _ref === "T" || _ref === "true" || _ref === "TRUE" || _ref === "True") {
  13422. _tmp = true; _tmp$1 = $ifaceNil; value = _tmp; err = _tmp$1;
  13423. return [value, err];
  13424. } else if (_ref === "0" || _ref === "f" || _ref === "F" || _ref === "false" || _ref === "FALSE" || _ref === "False") {
  13425. _tmp$2 = false; _tmp$3 = $ifaceNil; value = _tmp$2; err = _tmp$3;
  13426. return [value, err];
  13427. }
  13428. _tmp$4 = false; _tmp$5 = syntaxError("ParseBool", str); value = _tmp$4; err = _tmp$5;
  13429. return [value, err];
  13430. };
  13431. $pkg.ParseBool = ParseBool;
  13432. equalIgnoreCase = function(s1, s2) {
  13433. var $ptr, c1, c2, i, s1, s2;
  13434. if (!((s1.length === s2.length))) {
  13435. return false;
  13436. }
  13437. i = 0;
  13438. while (true) {
  13439. if (!(i < s1.length)) { break; }
  13440. c1 = s1.charCodeAt(i);
  13441. if (65 <= c1 && c1 <= 90) {
  13442. c1 = c1 + (32) << 24 >>> 24;
  13443. }
  13444. c2 = s2.charCodeAt(i);
  13445. if (65 <= c2 && c2 <= 90) {
  13446. c2 = c2 + (32) << 24 >>> 24;
  13447. }
  13448. if (!((c1 === c2))) {
  13449. return false;
  13450. }
  13451. i = i + (1) >> 0;
  13452. }
  13453. return true;
  13454. };
  13455. special = function(s) {
  13456. var $ptr, _ref, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, f, ok, s;
  13457. f = 0;
  13458. ok = false;
  13459. if (s.length === 0) {
  13460. return [f, ok];
  13461. }
  13462. _ref = s.charCodeAt(0);
  13463. if (_ref === 43) {
  13464. if (equalIgnoreCase(s, "+inf") || equalIgnoreCase(s, "+infinity")) {
  13465. _tmp = math.Inf(1); _tmp$1 = true; f = _tmp; ok = _tmp$1;
  13466. return [f, ok];
  13467. }
  13468. } else if (_ref === 45) {
  13469. if (equalIgnoreCase(s, "-inf") || equalIgnoreCase(s, "-infinity")) {
  13470. _tmp$2 = math.Inf(-1); _tmp$3 = true; f = _tmp$2; ok = _tmp$3;
  13471. return [f, ok];
  13472. }
  13473. } else if (_ref === 110 || _ref === 78) {
  13474. if (equalIgnoreCase(s, "nan")) {
  13475. _tmp$4 = math.NaN(); _tmp$5 = true; f = _tmp$4; ok = _tmp$5;
  13476. return [f, ok];
  13477. }
  13478. } else if (_ref === 105 || _ref === 73) {
  13479. if (equalIgnoreCase(s, "inf") || equalIgnoreCase(s, "infinity")) {
  13480. _tmp$6 = math.Inf(1); _tmp$7 = true; f = _tmp$6; ok = _tmp$7;
  13481. return [f, ok];
  13482. }
  13483. } else {
  13484. return [f, ok];
  13485. }
  13486. return [f, ok];
  13487. };
  13488. decimal.ptr.prototype.set = function(s) {
  13489. var $ptr, b, e, esign, i, ok, s, sawdigits, sawdot, x, x$1;
  13490. ok = false;
  13491. b = this;
  13492. i = 0;
  13493. b.neg = false;
  13494. b.trunc = false;
  13495. if (i >= s.length) {
  13496. return ok;
  13497. }
  13498. if (s.charCodeAt(i) === 43) {
  13499. i = i + (1) >> 0;
  13500. } else if (s.charCodeAt(i) === 45) {
  13501. b.neg = true;
  13502. i = i + (1) >> 0;
  13503. }
  13504. sawdot = false;
  13505. sawdigits = false;
  13506. while (true) {
  13507. if (!(i < s.length)) { break; }
  13508. if (s.charCodeAt(i) === 46) {
  13509. if (sawdot) {
  13510. return ok;
  13511. }
  13512. sawdot = true;
  13513. b.dp = b.nd;
  13514. i = i + (1) >> 0;
  13515. continue;
  13516. } else if (48 <= s.charCodeAt(i) && s.charCodeAt(i) <= 57) {
  13517. sawdigits = true;
  13518. if ((s.charCodeAt(i) === 48) && (b.nd === 0)) {
  13519. b.dp = b.dp - (1) >> 0;
  13520. i = i + (1) >> 0;
  13521. continue;
  13522. }
  13523. if (b.nd < 800) {
  13524. (x = b.d, x$1 = b.nd, ((x$1 < 0 || x$1 >= x.length) ? $throwRuntimeError("index out of range") : x[x$1] = s.charCodeAt(i)));
  13525. b.nd = b.nd + (1) >> 0;
  13526. } else if (!((s.charCodeAt(i) === 48))) {
  13527. b.trunc = true;
  13528. }
  13529. i = i + (1) >> 0;
  13530. continue;
  13531. }
  13532. break;
  13533. }
  13534. if (!sawdigits) {
  13535. return ok;
  13536. }
  13537. if (!sawdot) {
  13538. b.dp = b.nd;
  13539. }
  13540. if (i < s.length && ((s.charCodeAt(i) === 101) || (s.charCodeAt(i) === 69))) {
  13541. i = i + (1) >> 0;
  13542. if (i >= s.length) {
  13543. return ok;
  13544. }
  13545. esign = 1;
  13546. if (s.charCodeAt(i) === 43) {
  13547. i = i + (1) >> 0;
  13548. } else if (s.charCodeAt(i) === 45) {
  13549. i = i + (1) >> 0;
  13550. esign = -1;
  13551. }
  13552. if (i >= s.length || s.charCodeAt(i) < 48 || s.charCodeAt(i) > 57) {
  13553. return ok;
  13554. }
  13555. e = 0;
  13556. while (true) {
  13557. if (!(i < s.length && 48 <= s.charCodeAt(i) && s.charCodeAt(i) <= 57)) { break; }
  13558. if (e < 10000) {
  13559. e = ((e * 10 >> 0) + (s.charCodeAt(i) >> 0) >> 0) - 48 >> 0;
  13560. }
  13561. i = i + (1) >> 0;
  13562. }
  13563. b.dp = b.dp + ((e * esign >> 0)) >> 0;
  13564. }
  13565. if (!((i === s.length))) {
  13566. return ok;
  13567. }
  13568. ok = true;
  13569. return ok;
  13570. };
  13571. decimal.prototype.set = function(s) { return this.$val.set(s); };
  13572. readFloat = function(s) {
  13573. var $ptr, _ref, c, dp, e, esign, exp, i, mantissa, nd, ndMant, neg, ok, s, sawdigits, sawdot, trunc, x;
  13574. mantissa = new $Uint64(0, 0);
  13575. exp = 0;
  13576. neg = false;
  13577. trunc = false;
  13578. ok = false;
  13579. i = 0;
  13580. if (i >= s.length) {
  13581. return [mantissa, exp, neg, trunc, ok];
  13582. }
  13583. if (s.charCodeAt(i) === 43) {
  13584. i = i + (1) >> 0;
  13585. } else if (s.charCodeAt(i) === 45) {
  13586. neg = true;
  13587. i = i + (1) >> 0;
  13588. }
  13589. sawdot = false;
  13590. sawdigits = false;
  13591. nd = 0;
  13592. ndMant = 0;
  13593. dp = 0;
  13594. while (true) {
  13595. if (!(i < s.length)) { break; }
  13596. c = s.charCodeAt(i);
  13597. _ref = true;
  13598. if (_ref === (c === 46)) {
  13599. if (sawdot) {
  13600. return [mantissa, exp, neg, trunc, ok];
  13601. }
  13602. sawdot = true;
  13603. dp = nd;
  13604. i = i + (1) >> 0;
  13605. continue;
  13606. } else if (_ref === 48 <= c && c <= 57) {
  13607. sawdigits = true;
  13608. if ((c === 48) && (nd === 0)) {
  13609. dp = dp - (1) >> 0;
  13610. i = i + (1) >> 0;
  13611. continue;
  13612. }
  13613. nd = nd + (1) >> 0;
  13614. if (ndMant < 19) {
  13615. mantissa = $mul64(mantissa, (new $Uint64(0, 10)));
  13616. mantissa = (x = new $Uint64(0, (c - 48 << 24 >>> 24)), new $Uint64(mantissa.$high + x.$high, mantissa.$low + x.$low));
  13617. ndMant = ndMant + (1) >> 0;
  13618. } else if (!((s.charCodeAt(i) === 48))) {
  13619. trunc = true;
  13620. }
  13621. i = i + (1) >> 0;
  13622. continue;
  13623. }
  13624. break;
  13625. }
  13626. if (!sawdigits) {
  13627. return [mantissa, exp, neg, trunc, ok];
  13628. }
  13629. if (!sawdot) {
  13630. dp = nd;
  13631. }
  13632. if (i < s.length && ((s.charCodeAt(i) === 101) || (s.charCodeAt(i) === 69))) {
  13633. i = i + (1) >> 0;
  13634. if (i >= s.length) {
  13635. return [mantissa, exp, neg, trunc, ok];
  13636. }
  13637. esign = 1;
  13638. if (s.charCodeAt(i) === 43) {
  13639. i = i + (1) >> 0;
  13640. } else if (s.charCodeAt(i) === 45) {
  13641. i = i + (1) >> 0;
  13642. esign = -1;
  13643. }
  13644. if (i >= s.length || s.charCodeAt(i) < 48 || s.charCodeAt(i) > 57) {
  13645. return [mantissa, exp, neg, trunc, ok];
  13646. }
  13647. e = 0;
  13648. while (true) {
  13649. if (!(i < s.length && 48 <= s.charCodeAt(i) && s.charCodeAt(i) <= 57)) { break; }
  13650. if (e < 10000) {
  13651. e = ((e * 10 >> 0) + (s.charCodeAt(i) >> 0) >> 0) - 48 >> 0;
  13652. }
  13653. i = i + (1) >> 0;
  13654. }
  13655. dp = dp + ((e * esign >> 0)) >> 0;
  13656. }
  13657. if (!((i === s.length))) {
  13658. return [mantissa, exp, neg, trunc, ok];
  13659. }
  13660. exp = dp - ndMant >> 0;
  13661. ok = true;
  13662. return [mantissa, exp, neg, trunc, ok];
  13663. };
  13664. decimal.ptr.prototype.floatBits = function(flt) {
  13665. var $ptr, _tmp, _tmp$1, b, bits, d, exp, flt, mant, n, n$1, n$2, overflow, x, x$1, x$2, x$3, x$4, x$5, x$6, x$7, x$8, y, y$1, y$2, y$3, $s;
  13666. /* */ $s = 0; s: while (true) { switch ($s) { case 0:
  13667. b = new $Uint64(0, 0);
  13668. overflow = false;
  13669. d = this;
  13670. exp = 0;
  13671. mant = new $Uint64(0, 0);
  13672. /* */ if (d.nd === 0) { $s = 1; continue; }
  13673. /* */ $s = 2; continue;
  13674. /* if (d.nd === 0) { */ case 1:
  13675. mant = new $Uint64(0, 0);
  13676. exp = flt.bias;
  13677. /* goto out */ $s = 3; continue;
  13678. /* } */ case 2:
  13679. /* */ if (d.dp > 310) { $s = 4; continue; }
  13680. /* */ $s = 5; continue;
  13681. /* if (d.dp > 310) { */ case 4:
  13682. /* goto overflow */ $s = 6; continue;
  13683. /* } */ case 5:
  13684. /* */ if (d.dp < -330) { $s = 7; continue; }
  13685. /* */ $s = 8; continue;
  13686. /* if (d.dp < -330) { */ case 7:
  13687. mant = new $Uint64(0, 0);
  13688. exp = flt.bias;
  13689. /* goto out */ $s = 3; continue;
  13690. /* } */ case 8:
  13691. exp = 0;
  13692. while (true) {
  13693. if (!(d.dp > 0)) { break; }
  13694. n = 0;
  13695. if (d.dp >= powtab.$length) {
  13696. n = 27;
  13697. } else {
  13698. n = (x = d.dp, ((x < 0 || x >= powtab.$length) ? $throwRuntimeError("index out of range") : powtab.$array[powtab.$offset + x]));
  13699. }
  13700. d.Shift(-n);
  13701. exp = exp + (n) >> 0;
  13702. }
  13703. while (true) {
  13704. if (!(d.dp < 0 || (d.dp === 0) && d.d[0] < 53)) { break; }
  13705. n$1 = 0;
  13706. if (-d.dp >= powtab.$length) {
  13707. n$1 = 27;
  13708. } else {
  13709. n$1 = (x$1 = -d.dp, ((x$1 < 0 || x$1 >= powtab.$length) ? $throwRuntimeError("index out of range") : powtab.$array[powtab.$offset + x$1]));
  13710. }
  13711. d.Shift(n$1);
  13712. exp = exp - (n$1) >> 0;
  13713. }
  13714. exp = exp - (1) >> 0;
  13715. if (exp < (flt.bias + 1 >> 0)) {
  13716. n$2 = (flt.bias + 1 >> 0) - exp >> 0;
  13717. d.Shift(-n$2);
  13718. exp = exp + (n$2) >> 0;
  13719. }
  13720. /* */ if ((exp - flt.bias >> 0) >= (((y = flt.expbits, y < 32 ? (1 << y) : 0) >> 0) - 1 >> 0)) { $s = 9; continue; }
  13721. /* */ $s = 10; continue;
  13722. /* if ((exp - flt.bias >> 0) >= (((y = flt.expbits, y < 32 ? (1 << y) : 0) >> 0) - 1 >> 0)) { */ case 9:
  13723. /* goto overflow */ $s = 6; continue;
  13724. /* } */ case 10:
  13725. d.Shift(((1 + flt.mantbits >>> 0) >> 0));
  13726. mant = d.RoundedInteger();
  13727. /* */ if ((x$2 = $shiftLeft64(new $Uint64(0, 2), flt.mantbits), (mant.$high === x$2.$high && mant.$low === x$2.$low))) { $s = 11; continue; }
  13728. /* */ $s = 12; continue;
  13729. /* if ((x$2 = $shiftLeft64(new $Uint64(0, 2), flt.mantbits), (mant.$high === x$2.$high && mant.$low === x$2.$low))) { */ case 11:
  13730. mant = $shiftRightUint64(mant, (1));
  13731. exp = exp + (1) >> 0;
  13732. /* */ if ((exp - flt.bias >> 0) >= (((y$1 = flt.expbits, y$1 < 32 ? (1 << y$1) : 0) >> 0) - 1 >> 0)) { $s = 13; continue; }
  13733. /* */ $s = 14; continue;
  13734. /* if ((exp - flt.bias >> 0) >= (((y$1 = flt.expbits, y$1 < 32 ? (1 << y$1) : 0) >> 0) - 1 >> 0)) { */ case 13:
  13735. /* goto overflow */ $s = 6; continue;
  13736. /* } */ case 14:
  13737. /* } */ case 12:
  13738. if ((x$3 = (x$4 = $shiftLeft64(new $Uint64(0, 1), flt.mantbits), new $Uint64(mant.$high & x$4.$high, (mant.$low & x$4.$low) >>> 0)), (x$3.$high === 0 && x$3.$low === 0))) {
  13739. exp = flt.bias;
  13740. }
  13741. /* goto out */ $s = 3; continue;
  13742. /* overflow: */ case 6:
  13743. mant = new $Uint64(0, 0);
  13744. exp = (((y$2 = flt.expbits, y$2 < 32 ? (1 << y$2) : 0) >> 0) - 1 >> 0) + flt.bias >> 0;
  13745. overflow = true;
  13746. /* out: */ case 3:
  13747. bits = (x$5 = (x$6 = $shiftLeft64(new $Uint64(0, 1), flt.mantbits), new $Uint64(x$6.$high - 0, x$6.$low - 1)), new $Uint64(mant.$high & x$5.$high, (mant.$low & x$5.$low) >>> 0));
  13748. bits = (x$7 = $shiftLeft64(new $Uint64(0, (((exp - flt.bias >> 0)) & ((((y$3 = flt.expbits, y$3 < 32 ? (1 << y$3) : 0) >> 0) - 1 >> 0)))), flt.mantbits), new $Uint64(bits.$high | x$7.$high, (bits.$low | x$7.$low) >>> 0));
  13749. if (d.neg) {
  13750. bits = (x$8 = $shiftLeft64($shiftLeft64(new $Uint64(0, 1), flt.mantbits), flt.expbits), new $Uint64(bits.$high | x$8.$high, (bits.$low | x$8.$low) >>> 0));
  13751. }
  13752. _tmp = bits; _tmp$1 = overflow; b = _tmp; overflow = _tmp$1;
  13753. return [b, overflow];
  13754. /* */ $s = -1; case -1: } return; }
  13755. };
  13756. decimal.prototype.floatBits = function(flt) { return this.$val.floatBits(flt); };
  13757. atof64exact = function(mantissa, exp, neg) {
  13758. var $ptr, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, exp, f, mantissa, neg, ok, x, x$1, x$2;
  13759. f = 0;
  13760. ok = false;
  13761. if (!((x = $shiftRightUint64(mantissa, float64info.mantbits), (x.$high === 0 && x.$low === 0)))) {
  13762. return [f, ok];
  13763. }
  13764. f = $flatten64(mantissa);
  13765. if (neg) {
  13766. f = -f;
  13767. }
  13768. if (exp === 0) {
  13769. _tmp = f; _tmp$1 = true; f = _tmp; ok = _tmp$1;
  13770. return [f, ok];
  13771. } else if (exp > 0 && exp <= 37) {
  13772. if (exp > 22) {
  13773. f = f * ((x$1 = exp - 22 >> 0, ((x$1 < 0 || x$1 >= float64pow10.$length) ? $throwRuntimeError("index out of range") : float64pow10.$array[float64pow10.$offset + x$1])));
  13774. exp = 22;
  13775. }
  13776. if (f > 1e+15 || f < -1e+15) {
  13777. return [f, ok];
  13778. }
  13779. _tmp$2 = f * ((exp < 0 || exp >= float64pow10.$length) ? $throwRuntimeError("index out of range") : float64pow10.$array[float64pow10.$offset + exp]); _tmp$3 = true; f = _tmp$2; ok = _tmp$3;
  13780. return [f, ok];
  13781. } else if (exp < 0 && exp >= -22) {
  13782. _tmp$4 = f / (x$2 = -exp, ((x$2 < 0 || x$2 >= float64pow10.$length) ? $throwRuntimeError("index out of range") : float64pow10.$array[float64pow10.$offset + x$2])); _tmp$5 = true; f = _tmp$4; ok = _tmp$5;
  13783. return [f, ok];
  13784. }
  13785. return [f, ok];
  13786. };
  13787. atof32exact = function(mantissa, exp, neg) {
  13788. var $ptr, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, exp, f, mantissa, neg, ok, x, x$1, x$2;
  13789. f = 0;
  13790. ok = false;
  13791. if (!((x = $shiftRightUint64(mantissa, float32info.mantbits), (x.$high === 0 && x.$low === 0)))) {
  13792. return [f, ok];
  13793. }
  13794. f = $flatten64(mantissa);
  13795. if (neg) {
  13796. f = -f;
  13797. }
  13798. if (exp === 0) {
  13799. _tmp = f; _tmp$1 = true; f = _tmp; ok = _tmp$1;
  13800. return [f, ok];
  13801. } else if (exp > 0 && exp <= 17) {
  13802. if (exp > 10) {
  13803. f = $fround(f * ((x$1 = exp - 10 >> 0, ((x$1 < 0 || x$1 >= float32pow10.$length) ? $throwRuntimeError("index out of range") : float32pow10.$array[float32pow10.$offset + x$1]))));
  13804. exp = 10;
  13805. }
  13806. if (f > 1e+07 || f < -1e+07) {
  13807. return [f, ok];
  13808. }
  13809. _tmp$2 = $fround(f * ((exp < 0 || exp >= float32pow10.$length) ? $throwRuntimeError("index out of range") : float32pow10.$array[float32pow10.$offset + exp])); _tmp$3 = true; f = _tmp$2; ok = _tmp$3;
  13810. return [f, ok];
  13811. } else if (exp < 0 && exp >= -10) {
  13812. _tmp$4 = $fround(f / (x$2 = -exp, ((x$2 < 0 || x$2 >= float32pow10.$length) ? $throwRuntimeError("index out of range") : float32pow10.$array[float32pow10.$offset + x$2]))); _tmp$5 = true; f = _tmp$4; ok = _tmp$5;
  13813. return [f, ok];
  13814. }
  13815. return [f, ok];
  13816. };
  13817. atof32 = function(s) {
  13818. var $ptr, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, b, b$1, d, err, exp, ext, f, f$1, mantissa, neg, ok, ok$1, ok$2, ok$3, ovf, ovf$1, s, trunc, val;
  13819. f = 0;
  13820. err = $ifaceNil;
  13821. _tuple = special(s); val = _tuple[0]; ok = _tuple[1];
  13822. if (ok) {
  13823. _tmp = $fround(val); _tmp$1 = $ifaceNil; f = _tmp; err = _tmp$1;
  13824. return [f, err];
  13825. }
  13826. if (optimize) {
  13827. _tuple$1 = readFloat(s); mantissa = _tuple$1[0]; exp = _tuple$1[1]; neg = _tuple$1[2]; trunc = _tuple$1[3]; ok$1 = _tuple$1[4];
  13828. if (ok$1) {
  13829. if (!trunc) {
  13830. _tuple$2 = atof32exact(mantissa, exp, neg); f$1 = _tuple$2[0]; ok$2 = _tuple$2[1];
  13831. if (ok$2) {
  13832. _tmp$2 = f$1; _tmp$3 = $ifaceNil; f = _tmp$2; err = _tmp$3;
  13833. return [f, err];
  13834. }
  13835. }
  13836. ext = new extFloat.ptr();
  13837. ok$3 = ext.AssignDecimal(mantissa, exp, neg, trunc, float32info);
  13838. if (ok$3) {
  13839. _tuple$3 = ext.floatBits(float32info); b = _tuple$3[0]; ovf = _tuple$3[1];
  13840. f = math.Float32frombits((b.$low >>> 0));
  13841. if (ovf) {
  13842. err = rangeError("ParseFloat", s);
  13843. }
  13844. _tmp$4 = f; _tmp$5 = err; f = _tmp$4; err = _tmp$5;
  13845. return [f, err];
  13846. }
  13847. }
  13848. }
  13849. d = $clone(new decimal.ptr(), decimal);
  13850. if (!d.set(s)) {
  13851. _tmp$6 = 0; _tmp$7 = syntaxError("ParseFloat", s); f = _tmp$6; err = _tmp$7;
  13852. return [f, err];
  13853. }
  13854. _tuple$4 = d.floatBits(float32info); b$1 = _tuple$4[0]; ovf$1 = _tuple$4[1];
  13855. f = math.Float32frombits((b$1.$low >>> 0));
  13856. if (ovf$1) {
  13857. err = rangeError("ParseFloat", s);
  13858. }
  13859. _tmp$8 = f; _tmp$9 = err; f = _tmp$8; err = _tmp$9;
  13860. return [f, err];
  13861. };
  13862. atof64 = function(s) {
  13863. var $ptr, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, b, b$1, d, err, exp, ext, f, f$1, mantissa, neg, ok, ok$1, ok$2, ok$3, ovf, ovf$1, s, trunc, val;
  13864. f = 0;
  13865. err = $ifaceNil;
  13866. _tuple = special(s); val = _tuple[0]; ok = _tuple[1];
  13867. if (ok) {
  13868. _tmp = val; _tmp$1 = $ifaceNil; f = _tmp; err = _tmp$1;
  13869. return [f, err];
  13870. }
  13871. if (optimize) {
  13872. _tuple$1 = readFloat(s); mantissa = _tuple$1[0]; exp = _tuple$1[1]; neg = _tuple$1[2]; trunc = _tuple$1[3]; ok$1 = _tuple$1[4];
  13873. if (ok$1) {
  13874. if (!trunc) {
  13875. _tuple$2 = atof64exact(mantissa, exp, neg); f$1 = _tuple$2[0]; ok$2 = _tuple$2[1];
  13876. if (ok$2) {
  13877. _tmp$2 = f$1; _tmp$3 = $ifaceNil; f = _tmp$2; err = _tmp$3;
  13878. return [f, err];
  13879. }
  13880. }
  13881. ext = new extFloat.ptr();
  13882. ok$3 = ext.AssignDecimal(mantissa, exp, neg, trunc, float64info);
  13883. if (ok$3) {
  13884. _tuple$3 = ext.floatBits(float64info); b = _tuple$3[0]; ovf = _tuple$3[1];
  13885. f = math.Float64frombits(b);
  13886. if (ovf) {
  13887. err = rangeError("ParseFloat", s);
  13888. }
  13889. _tmp$4 = f; _tmp$5 = err; f = _tmp$4; err = _tmp$5;
  13890. return [f, err];
  13891. }
  13892. }
  13893. }
  13894. d = $clone(new decimal.ptr(), decimal);
  13895. if (!d.set(s)) {
  13896. _tmp$6 = 0; _tmp$7 = syntaxError("ParseFloat", s); f = _tmp$6; err = _tmp$7;
  13897. return [f, err];
  13898. }
  13899. _tuple$4 = d.floatBits(float64info); b$1 = _tuple$4[0]; ovf$1 = _tuple$4[1];
  13900. f = math.Float64frombits(b$1);
  13901. if (ovf$1) {
  13902. err = rangeError("ParseFloat", s);
  13903. }
  13904. _tmp$8 = f; _tmp$9 = err; f = _tmp$8; err = _tmp$9;
  13905. return [f, err];
  13906. };
  13907. ParseFloat = function(s, bitSize) {
  13908. var $ptr, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, _tuple$1, bitSize, err, err1, err1$1, f, f1, f1$1, s;
  13909. f = 0;
  13910. err = $ifaceNil;
  13911. if (bitSize === 32) {
  13912. _tuple = atof32(s); f1 = _tuple[0]; err1 = _tuple[1];
  13913. _tmp = f1; _tmp$1 = err1; f = _tmp; err = _tmp$1;
  13914. return [f, err];
  13915. }
  13916. _tuple$1 = atof64(s); f1$1 = _tuple$1[0]; err1$1 = _tuple$1[1];
  13917. _tmp$2 = f1$1; _tmp$3 = err1$1; f = _tmp$2; err = _tmp$3;
  13918. return [f, err];
  13919. };
  13920. $pkg.ParseFloat = ParseFloat;
  13921. NumError.ptr.prototype.Error = function() {
  13922. var $ptr, _r, e, $s, $r;
  13923. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; e = $f.e; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  13924. e = this;
  13925. _r = e.Err.Error(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  13926. return "strconv." + e.Func + ": " + "parsing " + Quote(e.Num) + ": " + _r;
  13927. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: NumError.ptr.prototype.Error }; } $f.$ptr = $ptr; $f._r = _r; $f.e = e; $f.$s = $s; $f.$r = $r; return $f;
  13928. };
  13929. NumError.prototype.Error = function() { return this.$val.Error(); };
  13930. syntaxError = function(fn, str) {
  13931. var $ptr, fn, str;
  13932. return new NumError.ptr(fn, str, $pkg.ErrSyntax);
  13933. };
  13934. rangeError = function(fn, str) {
  13935. var $ptr, fn, str;
  13936. return new NumError.ptr(fn, str, $pkg.ErrRange);
  13937. };
  13938. cutoff64 = function(base) {
  13939. var $ptr, base, x;
  13940. if (base < 2) {
  13941. return new $Uint64(0, 0);
  13942. }
  13943. return (x = $div64(new $Uint64(4294967295, 4294967295), new $Uint64(0, base), false), new $Uint64(x.$high + 0, x.$low + 1));
  13944. };
  13945. ParseUint = function(s, base, bitSize) {
  13946. var $ptr, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, base, bitSize, cutoff, d, err, i, maxVal, n, n1, s, s0, v, x, x$1, $s;
  13947. /* */ $s = 0; s: while (true) { switch ($s) { case 0:
  13948. n = new $Uint64(0, 0);
  13949. err = $ifaceNil;
  13950. _tmp = new $Uint64(0, 0); _tmp$1 = new $Uint64(0, 0); cutoff = _tmp; maxVal = _tmp$1;
  13951. if (bitSize === 0) {
  13952. bitSize = 32;
  13953. }
  13954. s0 = s;
  13955. /* */ if (s.length < 1) { $s = 1; continue; }
  13956. /* */ if (2 <= base && base <= 36) { $s = 2; continue; }
  13957. /* */ if (base === 0) { $s = 3; continue; }
  13958. /* */ $s = 4; continue;
  13959. /* if (s.length < 1) { */ case 1:
  13960. err = $pkg.ErrSyntax;
  13961. /* goto Error */ $s = 6; continue;
  13962. $s = 5; continue;
  13963. /* } else if (2 <= base && base <= 36) { */ case 2:
  13964. $s = 5; continue;
  13965. /* } else if (base === 0) { */ case 3:
  13966. /* */ if ((s.charCodeAt(0) === 48) && s.length > 1 && ((s.charCodeAt(1) === 120) || (s.charCodeAt(1) === 88))) { $s = 7; continue; }
  13967. /* */ if (s.charCodeAt(0) === 48) { $s = 8; continue; }
  13968. /* */ $s = 9; continue;
  13969. /* if ((s.charCodeAt(0) === 48) && s.length > 1 && ((s.charCodeAt(1) === 120) || (s.charCodeAt(1) === 88))) { */ case 7:
  13970. base = 16;
  13971. s = s.substring(2);
  13972. /* */ if (s.length < 1) { $s = 11; continue; }
  13973. /* */ $s = 12; continue;
  13974. /* if (s.length < 1) { */ case 11:
  13975. err = $pkg.ErrSyntax;
  13976. /* goto Error */ $s = 6; continue;
  13977. /* } */ case 12:
  13978. $s = 10; continue;
  13979. /* } else if (s.charCodeAt(0) === 48) { */ case 8:
  13980. base = 8;
  13981. $s = 10; continue;
  13982. /* } else { */ case 9:
  13983. base = 10;
  13984. /* } */ case 10:
  13985. $s = 5; continue;
  13986. /* } else { */ case 4:
  13987. err = errors.New("invalid base " + Itoa(base));
  13988. /* goto Error */ $s = 6; continue;
  13989. /* } */ case 5:
  13990. n = new $Uint64(0, 0);
  13991. cutoff = cutoff64(base);
  13992. maxVal = (x = $shiftLeft64(new $Uint64(0, 1), (bitSize >>> 0)), new $Uint64(x.$high - 0, x.$low - 1));
  13993. i = 0;
  13994. /* while (true) { */ case 13:
  13995. /* if (!(i < s.length)) { break; } */ if(!(i < s.length)) { $s = 14; continue; }
  13996. v = 0;
  13997. d = s.charCodeAt(i);
  13998. /* */ if (48 <= d && d <= 57) { $s = 15; continue; }
  13999. /* */ if (97 <= d && d <= 122) { $s = 16; continue; }
  14000. /* */ if (65 <= d && d <= 90) { $s = 17; continue; }
  14001. /* */ $s = 18; continue;
  14002. /* if (48 <= d && d <= 57) { */ case 15:
  14003. v = d - 48 << 24 >>> 24;
  14004. $s = 19; continue;
  14005. /* } else if (97 <= d && d <= 122) { */ case 16:
  14006. v = (d - 97 << 24 >>> 24) + 10 << 24 >>> 24;
  14007. $s = 19; continue;
  14008. /* } else if (65 <= d && d <= 90) { */ case 17:
  14009. v = (d - 65 << 24 >>> 24) + 10 << 24 >>> 24;
  14010. $s = 19; continue;
  14011. /* } else { */ case 18:
  14012. n = new $Uint64(0, 0);
  14013. err = $pkg.ErrSyntax;
  14014. /* goto Error */ $s = 6; continue;
  14015. /* } */ case 19:
  14016. /* */ if ((v >> 0) >= base) { $s = 20; continue; }
  14017. /* */ $s = 21; continue;
  14018. /* if ((v >> 0) >= base) { */ case 20:
  14019. n = new $Uint64(0, 0);
  14020. err = $pkg.ErrSyntax;
  14021. /* goto Error */ $s = 6; continue;
  14022. /* } */ case 21:
  14023. /* */ if ((n.$high > cutoff.$high || (n.$high === cutoff.$high && n.$low >= cutoff.$low))) { $s = 22; continue; }
  14024. /* */ $s = 23; continue;
  14025. /* if ((n.$high > cutoff.$high || (n.$high === cutoff.$high && n.$low >= cutoff.$low))) { */ case 22:
  14026. n = new $Uint64(4294967295, 4294967295);
  14027. err = $pkg.ErrRange;
  14028. /* goto Error */ $s = 6; continue;
  14029. /* } */ case 23:
  14030. n = $mul64(n, (new $Uint64(0, base)));
  14031. n1 = (x$1 = new $Uint64(0, v), new $Uint64(n.$high + x$1.$high, n.$low + x$1.$low));
  14032. /* */ if ((n1.$high < n.$high || (n1.$high === n.$high && n1.$low < n.$low)) || (n1.$high > maxVal.$high || (n1.$high === maxVal.$high && n1.$low > maxVal.$low))) { $s = 24; continue; }
  14033. /* */ $s = 25; continue;
  14034. /* if ((n1.$high < n.$high || (n1.$high === n.$high && n1.$low < n.$low)) || (n1.$high > maxVal.$high || (n1.$high === maxVal.$high && n1.$low > maxVal.$low))) { */ case 24:
  14035. n = new $Uint64(4294967295, 4294967295);
  14036. err = $pkg.ErrRange;
  14037. /* goto Error */ $s = 6; continue;
  14038. /* } */ case 25:
  14039. n = n1;
  14040. i = i + (1) >> 0;
  14041. /* } */ $s = 13; continue; case 14:
  14042. _tmp$2 = n; _tmp$3 = $ifaceNil; n = _tmp$2; err = _tmp$3;
  14043. return [n, err];
  14044. /* Error: */ case 6:
  14045. _tmp$4 = n; _tmp$5 = new NumError.ptr("ParseUint", s0, err); n = _tmp$4; err = _tmp$5;
  14046. return [n, err];
  14047. /* */ $s = -1; case -1: } return; }
  14048. };
  14049. $pkg.ParseUint = ParseUint;
  14050. ParseInt = function(s, base, bitSize) {
  14051. var $ptr, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, base, bitSize, cutoff, err, i, n, neg, s, s0, un, x, x$1;
  14052. i = new $Int64(0, 0);
  14053. err = $ifaceNil;
  14054. if (bitSize === 0) {
  14055. bitSize = 32;
  14056. }
  14057. if (s.length === 0) {
  14058. _tmp = new $Int64(0, 0); _tmp$1 = syntaxError("ParseInt", s); i = _tmp; err = _tmp$1;
  14059. return [i, err];
  14060. }
  14061. s0 = s;
  14062. neg = false;
  14063. if (s.charCodeAt(0) === 43) {
  14064. s = s.substring(1);
  14065. } else if (s.charCodeAt(0) === 45) {
  14066. neg = true;
  14067. s = s.substring(1);
  14068. }
  14069. un = new $Uint64(0, 0);
  14070. _tuple = ParseUint(s, base, bitSize); un = _tuple[0]; err = _tuple[1];
  14071. if (!($interfaceIsEqual(err, $ifaceNil)) && !($interfaceIsEqual($assertType(err, ptrType).Err, $pkg.ErrRange))) {
  14072. $assertType(err, ptrType).Func = "ParseInt";
  14073. $assertType(err, ptrType).Num = s0;
  14074. _tmp$2 = new $Int64(0, 0); _tmp$3 = err; i = _tmp$2; err = _tmp$3;
  14075. return [i, err];
  14076. }
  14077. cutoff = $shiftLeft64(new $Uint64(0, 1), ((bitSize - 1 >> 0) >>> 0));
  14078. if (!neg && (un.$high > cutoff.$high || (un.$high === cutoff.$high && un.$low >= cutoff.$low))) {
  14079. _tmp$4 = (x = new $Uint64(cutoff.$high - 0, cutoff.$low - 1), new $Int64(x.$high, x.$low)); _tmp$5 = rangeError("ParseInt", s0); i = _tmp$4; err = _tmp$5;
  14080. return [i, err];
  14081. }
  14082. if (neg && (un.$high > cutoff.$high || (un.$high === cutoff.$high && un.$low > cutoff.$low))) {
  14083. _tmp$6 = (x$1 = new $Int64(cutoff.$high, cutoff.$low), new $Int64(-x$1.$high, -x$1.$low)); _tmp$7 = rangeError("ParseInt", s0); i = _tmp$6; err = _tmp$7;
  14084. return [i, err];
  14085. }
  14086. n = new $Int64(un.$high, un.$low);
  14087. if (neg) {
  14088. n = new $Int64(-n.$high, -n.$low);
  14089. }
  14090. _tmp$8 = n; _tmp$9 = $ifaceNil; i = _tmp$8; err = _tmp$9;
  14091. return [i, err];
  14092. };
  14093. $pkg.ParseInt = ParseInt;
  14094. Atoi = function(s) {
  14095. var $ptr, _tmp, _tmp$1, _tuple, err, i, i64, s;
  14096. i = 0;
  14097. err = $ifaceNil;
  14098. _tuple = ParseInt(s, 10, 0); i64 = _tuple[0]; err = _tuple[1];
  14099. _tmp = ((i64.$low + ((i64.$high >> 31) * 4294967296)) >> 0); _tmp$1 = err; i = _tmp; err = _tmp$1;
  14100. return [i, err];
  14101. };
  14102. $pkg.Atoi = Atoi;
  14103. decimal.ptr.prototype.String = function() {
  14104. var $ptr, a, buf, n, w;
  14105. a = this;
  14106. n = 10 + a.nd >> 0;
  14107. if (a.dp > 0) {
  14108. n = n + (a.dp) >> 0;
  14109. }
  14110. if (a.dp < 0) {
  14111. n = n + (-a.dp) >> 0;
  14112. }
  14113. buf = $makeSlice(sliceType$6, n);
  14114. w = 0;
  14115. if (a.nd === 0) {
  14116. return "0";
  14117. } else if (a.dp <= 0) {
  14118. ((w < 0 || w >= buf.$length) ? $throwRuntimeError("index out of range") : buf.$array[buf.$offset + w] = 48);
  14119. w = w + (1) >> 0;
  14120. ((w < 0 || w >= buf.$length) ? $throwRuntimeError("index out of range") : buf.$array[buf.$offset + w] = 46);
  14121. w = w + (1) >> 0;
  14122. w = w + (digitZero($subslice(buf, w, (w + -a.dp >> 0)))) >> 0;
  14123. w = w + ($copySlice($subslice(buf, w), $subslice(new sliceType$6(a.d), 0, a.nd))) >> 0;
  14124. } else if (a.dp < a.nd) {
  14125. w = w + ($copySlice($subslice(buf, w), $subslice(new sliceType$6(a.d), 0, a.dp))) >> 0;
  14126. ((w < 0 || w >= buf.$length) ? $throwRuntimeError("index out of range") : buf.$array[buf.$offset + w] = 46);
  14127. w = w + (1) >> 0;
  14128. w = w + ($copySlice($subslice(buf, w), $subslice(new sliceType$6(a.d), a.dp, a.nd))) >> 0;
  14129. } else {
  14130. w = w + ($copySlice($subslice(buf, w), $subslice(new sliceType$6(a.d), 0, a.nd))) >> 0;
  14131. w = w + (digitZero($subslice(buf, w, ((w + a.dp >> 0) - a.nd >> 0)))) >> 0;
  14132. }
  14133. return $bytesToString($subslice(buf, 0, w));
  14134. };
  14135. decimal.prototype.String = function() { return this.$val.String(); };
  14136. digitZero = function(dst) {
  14137. var $ptr, _i, _ref, dst, i;
  14138. _ref = dst;
  14139. _i = 0;
  14140. while (true) {
  14141. if (!(_i < _ref.$length)) { break; }
  14142. i = _i;
  14143. ((i < 0 || i >= dst.$length) ? $throwRuntimeError("index out of range") : dst.$array[dst.$offset + i] = 48);
  14144. _i++;
  14145. }
  14146. return dst.$length;
  14147. };
  14148. trim = function(a) {
  14149. var $ptr, a, x, x$1;
  14150. while (true) {
  14151. if (!(a.nd > 0 && ((x = a.d, x$1 = a.nd - 1 >> 0, ((x$1 < 0 || x$1 >= x.length) ? $throwRuntimeError("index out of range") : x[x$1])) === 48))) { break; }
  14152. a.nd = a.nd - (1) >> 0;
  14153. }
  14154. if (a.nd === 0) {
  14155. a.dp = 0;
  14156. }
  14157. };
  14158. decimal.ptr.prototype.Assign = function(v) {
  14159. var $ptr, a, buf, n, v, v1, x, x$1, x$2;
  14160. a = this;
  14161. buf = $clone(arrayType.zero(), arrayType);
  14162. n = 0;
  14163. while (true) {
  14164. if (!((v.$high > 0 || (v.$high === 0 && v.$low > 0)))) { break; }
  14165. v1 = $div64(v, new $Uint64(0, 10), false);
  14166. v = (x = $mul64(new $Uint64(0, 10), v1), new $Uint64(v.$high - x.$high, v.$low - x.$low));
  14167. ((n < 0 || n >= buf.length) ? $throwRuntimeError("index out of range") : buf[n] = (new $Uint64(v.$high + 0, v.$low + 48).$low << 24 >>> 24));
  14168. n = n + (1) >> 0;
  14169. v = v1;
  14170. }
  14171. a.nd = 0;
  14172. n = n - (1) >> 0;
  14173. while (true) {
  14174. if (!(n >= 0)) { break; }
  14175. (x$1 = a.d, x$2 = a.nd, ((x$2 < 0 || x$2 >= x$1.length) ? $throwRuntimeError("index out of range") : x$1[x$2] = ((n < 0 || n >= buf.length) ? $throwRuntimeError("index out of range") : buf[n])));
  14176. a.nd = a.nd + (1) >> 0;
  14177. n = n - (1) >> 0;
  14178. }
  14179. a.dp = a.nd;
  14180. trim(a);
  14181. };
  14182. decimal.prototype.Assign = function(v) { return this.$val.Assign(v); };
  14183. rightShift = function(a, k) {
  14184. var $ptr, a, c, c$1, dig, dig$1, k, n, r, w, x, x$1, x$2, x$3, y, y$1;
  14185. r = 0;
  14186. w = 0;
  14187. n = 0;
  14188. while (true) {
  14189. if (!(((n >> $min(k, 31)) >> 0) === 0)) { break; }
  14190. if (r >= a.nd) {
  14191. if (n === 0) {
  14192. a.nd = 0;
  14193. return;
  14194. }
  14195. while (true) {
  14196. if (!(((n >> $min(k, 31)) >> 0) === 0)) { break; }
  14197. n = n * 10 >> 0;
  14198. r = r + (1) >> 0;
  14199. }
  14200. break;
  14201. }
  14202. c = ((x = a.d, ((r < 0 || r >= x.length) ? $throwRuntimeError("index out of range") : x[r])) >> 0);
  14203. n = ((n * 10 >> 0) + c >> 0) - 48 >> 0;
  14204. r = r + (1) >> 0;
  14205. }
  14206. a.dp = a.dp - ((r - 1 >> 0)) >> 0;
  14207. while (true) {
  14208. if (!(r < a.nd)) { break; }
  14209. c$1 = ((x$1 = a.d, ((r < 0 || r >= x$1.length) ? $throwRuntimeError("index out of range") : x$1[r])) >> 0);
  14210. dig = (n >> $min(k, 31)) >> 0;
  14211. n = n - (((y = k, y < 32 ? (dig << y) : 0) >> 0)) >> 0;
  14212. (x$2 = a.d, ((w < 0 || w >= x$2.length) ? $throwRuntimeError("index out of range") : x$2[w] = ((dig + 48 >> 0) << 24 >>> 24)));
  14213. w = w + (1) >> 0;
  14214. n = ((n * 10 >> 0) + c$1 >> 0) - 48 >> 0;
  14215. r = r + (1) >> 0;
  14216. }
  14217. while (true) {
  14218. if (!(n > 0)) { break; }
  14219. dig$1 = (n >> $min(k, 31)) >> 0;
  14220. n = n - (((y$1 = k, y$1 < 32 ? (dig$1 << y$1) : 0) >> 0)) >> 0;
  14221. if (w < 800) {
  14222. (x$3 = a.d, ((w < 0 || w >= x$3.length) ? $throwRuntimeError("index out of range") : x$3[w] = ((dig$1 + 48 >> 0) << 24 >>> 24)));
  14223. w = w + (1) >> 0;
  14224. } else if (dig$1 > 0) {
  14225. a.trunc = true;
  14226. }
  14227. n = n * 10 >> 0;
  14228. }
  14229. a.nd = w;
  14230. trim(a);
  14231. };
  14232. prefixIsLessThan = function(b, s) {
  14233. var $ptr, b, i, s;
  14234. i = 0;
  14235. while (true) {
  14236. if (!(i < s.length)) { break; }
  14237. if (i >= b.$length) {
  14238. return true;
  14239. }
  14240. if (!((((i < 0 || i >= b.$length) ? $throwRuntimeError("index out of range") : b.$array[b.$offset + i]) === s.charCodeAt(i)))) {
  14241. return ((i < 0 || i >= b.$length) ? $throwRuntimeError("index out of range") : b.$array[b.$offset + i]) < s.charCodeAt(i);
  14242. }
  14243. i = i + (1) >> 0;
  14244. }
  14245. return false;
  14246. };
  14247. leftShift = function(a, k) {
  14248. var $ptr, _q, _q$1, a, delta, k, n, quo, quo$1, r, rem, rem$1, w, x, x$1, x$2, y;
  14249. delta = ((k < 0 || k >= leftcheats.$length) ? $throwRuntimeError("index out of range") : leftcheats.$array[leftcheats.$offset + k]).delta;
  14250. if (prefixIsLessThan($subslice(new sliceType$6(a.d), 0, a.nd), ((k < 0 || k >= leftcheats.$length) ? $throwRuntimeError("index out of range") : leftcheats.$array[leftcheats.$offset + k]).cutoff)) {
  14251. delta = delta - (1) >> 0;
  14252. }
  14253. r = a.nd;
  14254. w = a.nd + delta >> 0;
  14255. n = 0;
  14256. r = r - (1) >> 0;
  14257. while (true) {
  14258. if (!(r >= 0)) { break; }
  14259. n = n + (((y = k, y < 32 ? (((((x = a.d, ((r < 0 || r >= x.length) ? $throwRuntimeError("index out of range") : x[r])) >> 0) - 48 >> 0)) << y) : 0) >> 0)) >> 0;
  14260. quo = (_q = n / 10, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero"));
  14261. rem = n - (10 * quo >> 0) >> 0;
  14262. w = w - (1) >> 0;
  14263. if (w < 800) {
  14264. (x$1 = a.d, ((w < 0 || w >= x$1.length) ? $throwRuntimeError("index out of range") : x$1[w] = ((rem + 48 >> 0) << 24 >>> 24)));
  14265. } else if (!((rem === 0))) {
  14266. a.trunc = true;
  14267. }
  14268. n = quo;
  14269. r = r - (1) >> 0;
  14270. }
  14271. while (true) {
  14272. if (!(n > 0)) { break; }
  14273. quo$1 = (_q$1 = n / 10, (_q$1 === _q$1 && _q$1 !== 1/0 && _q$1 !== -1/0) ? _q$1 >> 0 : $throwRuntimeError("integer divide by zero"));
  14274. rem$1 = n - (10 * quo$1 >> 0) >> 0;
  14275. w = w - (1) >> 0;
  14276. if (w < 800) {
  14277. (x$2 = a.d, ((w < 0 || w >= x$2.length) ? $throwRuntimeError("index out of range") : x$2[w] = ((rem$1 + 48 >> 0) << 24 >>> 24)));
  14278. } else if (!((rem$1 === 0))) {
  14279. a.trunc = true;
  14280. }
  14281. n = quo$1;
  14282. }
  14283. a.nd = a.nd + (delta) >> 0;
  14284. if (a.nd >= 800) {
  14285. a.nd = 800;
  14286. }
  14287. a.dp = a.dp + (delta) >> 0;
  14288. trim(a);
  14289. };
  14290. decimal.ptr.prototype.Shift = function(k) {
  14291. var $ptr, a, k;
  14292. a = this;
  14293. if (a.nd === 0) {
  14294. } else if (k > 0) {
  14295. while (true) {
  14296. if (!(k > 27)) { break; }
  14297. leftShift(a, 27);
  14298. k = k - (27) >> 0;
  14299. }
  14300. leftShift(a, (k >>> 0));
  14301. } else if (k < 0) {
  14302. while (true) {
  14303. if (!(k < -27)) { break; }
  14304. rightShift(a, 27);
  14305. k = k + (27) >> 0;
  14306. }
  14307. rightShift(a, (-k >>> 0));
  14308. }
  14309. };
  14310. decimal.prototype.Shift = function(k) { return this.$val.Shift(k); };
  14311. shouldRoundUp = function(a, nd) {
  14312. var $ptr, _r, a, nd, x, x$1, x$2, x$3;
  14313. if (nd < 0 || nd >= a.nd) {
  14314. return false;
  14315. }
  14316. if (((x = a.d, ((nd < 0 || nd >= x.length) ? $throwRuntimeError("index out of range") : x[nd])) === 53) && ((nd + 1 >> 0) === a.nd)) {
  14317. if (a.trunc) {
  14318. return true;
  14319. }
  14320. return nd > 0 && !(((_r = (((x$1 = a.d, x$2 = nd - 1 >> 0, ((x$2 < 0 || x$2 >= x$1.length) ? $throwRuntimeError("index out of range") : x$1[x$2])) - 48 << 24 >>> 24)) % 2, _r === _r ? _r : $throwRuntimeError("integer divide by zero")) === 0));
  14321. }
  14322. return (x$3 = a.d, ((nd < 0 || nd >= x$3.length) ? $throwRuntimeError("index out of range") : x$3[nd])) >= 53;
  14323. };
  14324. decimal.ptr.prototype.Round = function(nd) {
  14325. var $ptr, a, nd;
  14326. a = this;
  14327. if (nd < 0 || nd >= a.nd) {
  14328. return;
  14329. }
  14330. if (shouldRoundUp(a, nd)) {
  14331. a.RoundUp(nd);
  14332. } else {
  14333. a.RoundDown(nd);
  14334. }
  14335. };
  14336. decimal.prototype.Round = function(nd) { return this.$val.Round(nd); };
  14337. decimal.ptr.prototype.RoundDown = function(nd) {
  14338. var $ptr, a, nd;
  14339. a = this;
  14340. if (nd < 0 || nd >= a.nd) {
  14341. return;
  14342. }
  14343. a.nd = nd;
  14344. trim(a);
  14345. };
  14346. decimal.prototype.RoundDown = function(nd) { return this.$val.RoundDown(nd); };
  14347. decimal.ptr.prototype.RoundUp = function(nd) {
  14348. var $ptr, a, c, i, nd, x, x$1, x$2;
  14349. a = this;
  14350. if (nd < 0 || nd >= a.nd) {
  14351. return;
  14352. }
  14353. i = nd - 1 >> 0;
  14354. while (true) {
  14355. if (!(i >= 0)) { break; }
  14356. c = (x = a.d, ((i < 0 || i >= x.length) ? $throwRuntimeError("index out of range") : x[i]));
  14357. if (c < 57) {
  14358. (x$2 = a.d, ((i < 0 || i >= x$2.length) ? $throwRuntimeError("index out of range") : x$2[i] = (x$1 = a.d, ((i < 0 || i >= x$1.length) ? $throwRuntimeError("index out of range") : x$1[i])) + (1) << 24 >>> 24));
  14359. a.nd = i + 1 >> 0;
  14360. return;
  14361. }
  14362. i = i - (1) >> 0;
  14363. }
  14364. a.d[0] = 49;
  14365. a.nd = 1;
  14366. a.dp = a.dp + (1) >> 0;
  14367. };
  14368. decimal.prototype.RoundUp = function(nd) { return this.$val.RoundUp(nd); };
  14369. decimal.ptr.prototype.RoundedInteger = function() {
  14370. var $ptr, a, i, n, x, x$1, x$2, x$3;
  14371. a = this;
  14372. if (a.dp > 20) {
  14373. return new $Uint64(4294967295, 4294967295);
  14374. }
  14375. i = 0;
  14376. n = new $Uint64(0, 0);
  14377. i = 0;
  14378. while (true) {
  14379. if (!(i < a.dp && i < a.nd)) { break; }
  14380. n = (x = $mul64(n, new $Uint64(0, 10)), x$1 = new $Uint64(0, ((x$2 = a.d, ((i < 0 || i >= x$2.length) ? $throwRuntimeError("index out of range") : x$2[i])) - 48 << 24 >>> 24)), new $Uint64(x.$high + x$1.$high, x.$low + x$1.$low));
  14381. i = i + (1) >> 0;
  14382. }
  14383. while (true) {
  14384. if (!(i < a.dp)) { break; }
  14385. n = $mul64(n, (new $Uint64(0, 10)));
  14386. i = i + (1) >> 0;
  14387. }
  14388. if (shouldRoundUp(a, a.dp)) {
  14389. n = (x$3 = new $Uint64(0, 1), new $Uint64(n.$high + x$3.$high, n.$low + x$3.$low));
  14390. }
  14391. return n;
  14392. };
  14393. decimal.prototype.RoundedInteger = function() { return this.$val.RoundedInteger(); };
  14394. extFloat.ptr.prototype.floatBits = function(flt) {
  14395. var $ptr, bits, exp, f, flt, mant, n, overflow, x, x$1, x$10, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9, y, y$1, y$2;
  14396. bits = new $Uint64(0, 0);
  14397. overflow = false;
  14398. f = this;
  14399. f.Normalize();
  14400. exp = f.exp + 63 >> 0;
  14401. if (exp < (flt.bias + 1 >> 0)) {
  14402. n = (flt.bias + 1 >> 0) - exp >> 0;
  14403. f.mant = $shiftRightUint64(f.mant, ((n >>> 0)));
  14404. exp = exp + (n) >> 0;
  14405. }
  14406. mant = $shiftRightUint64(f.mant, ((63 - flt.mantbits >>> 0)));
  14407. if (!((x = (x$1 = f.mant, x$2 = $shiftLeft64(new $Uint64(0, 1), ((62 - flt.mantbits >>> 0))), new $Uint64(x$1.$high & x$2.$high, (x$1.$low & x$2.$low) >>> 0)), (x.$high === 0 && x.$low === 0)))) {
  14408. mant = (x$3 = new $Uint64(0, 1), new $Uint64(mant.$high + x$3.$high, mant.$low + x$3.$low));
  14409. }
  14410. if ((x$4 = $shiftLeft64(new $Uint64(0, 2), flt.mantbits), (mant.$high === x$4.$high && mant.$low === x$4.$low))) {
  14411. mant = $shiftRightUint64(mant, (1));
  14412. exp = exp + (1) >> 0;
  14413. }
  14414. if ((exp - flt.bias >> 0) >= (((y = flt.expbits, y < 32 ? (1 << y) : 0) >> 0) - 1 >> 0)) {
  14415. mant = new $Uint64(0, 0);
  14416. exp = (((y$1 = flt.expbits, y$1 < 32 ? (1 << y$1) : 0) >> 0) - 1 >> 0) + flt.bias >> 0;
  14417. overflow = true;
  14418. } else if ((x$5 = (x$6 = $shiftLeft64(new $Uint64(0, 1), flt.mantbits), new $Uint64(mant.$high & x$6.$high, (mant.$low & x$6.$low) >>> 0)), (x$5.$high === 0 && x$5.$low === 0))) {
  14419. exp = flt.bias;
  14420. }
  14421. bits = (x$7 = (x$8 = $shiftLeft64(new $Uint64(0, 1), flt.mantbits), new $Uint64(x$8.$high - 0, x$8.$low - 1)), new $Uint64(mant.$high & x$7.$high, (mant.$low & x$7.$low) >>> 0));
  14422. bits = (x$9 = $shiftLeft64(new $Uint64(0, (((exp - flt.bias >> 0)) & ((((y$2 = flt.expbits, y$2 < 32 ? (1 << y$2) : 0) >> 0) - 1 >> 0)))), flt.mantbits), new $Uint64(bits.$high | x$9.$high, (bits.$low | x$9.$low) >>> 0));
  14423. if (f.neg) {
  14424. bits = (x$10 = $shiftLeft64(new $Uint64(0, 1), ((flt.mantbits + flt.expbits >>> 0))), new $Uint64(bits.$high | x$10.$high, (bits.$low | x$10.$low) >>> 0));
  14425. }
  14426. return [bits, overflow];
  14427. };
  14428. extFloat.prototype.floatBits = function(flt) { return this.$val.floatBits(flt); };
  14429. extFloat.ptr.prototype.AssignComputeBounds = function(mant, exp, neg, flt) {
  14430. var $ptr, _tmp, _tmp$1, exp, expBiased, f, flt, lower, mant, neg, upper, x, x$1, x$2, x$3, x$4;
  14431. lower = new extFloat.ptr();
  14432. upper = new extFloat.ptr();
  14433. f = this;
  14434. f.mant = mant;
  14435. f.exp = exp - (flt.mantbits >> 0) >> 0;
  14436. f.neg = neg;
  14437. if (f.exp <= 0 && (x = $shiftLeft64(($shiftRightUint64(mant, (-f.exp >>> 0))), (-f.exp >>> 0)), (mant.$high === x.$high && mant.$low === x.$low))) {
  14438. f.mant = $shiftRightUint64(f.mant, ((-f.exp >>> 0)));
  14439. f.exp = 0;
  14440. _tmp = $clone(f, extFloat); _tmp$1 = $clone(f, extFloat); $copy(lower, _tmp, extFloat); $copy(upper, _tmp$1, extFloat);
  14441. return [lower, upper];
  14442. }
  14443. expBiased = exp - flt.bias >> 0;
  14444. $copy(upper, new extFloat.ptr((x$1 = $mul64(new $Uint64(0, 2), f.mant), new $Uint64(x$1.$high + 0, x$1.$low + 1)), f.exp - 1 >> 0, f.neg), extFloat);
  14445. if (!((x$2 = $shiftLeft64(new $Uint64(0, 1), flt.mantbits), (mant.$high === x$2.$high && mant.$low === x$2.$low))) || (expBiased === 1)) {
  14446. $copy(lower, new extFloat.ptr((x$3 = $mul64(new $Uint64(0, 2), f.mant), new $Uint64(x$3.$high - 0, x$3.$low - 1)), f.exp - 1 >> 0, f.neg), extFloat);
  14447. } else {
  14448. $copy(lower, new extFloat.ptr((x$4 = $mul64(new $Uint64(0, 4), f.mant), new $Uint64(x$4.$high - 0, x$4.$low - 1)), f.exp - 2 >> 0, f.neg), extFloat);
  14449. }
  14450. return [lower, upper];
  14451. };
  14452. extFloat.prototype.AssignComputeBounds = function(mant, exp, neg, flt) { return this.$val.AssignComputeBounds(mant, exp, neg, flt); };
  14453. extFloat.ptr.prototype.Normalize = function() {
  14454. var $ptr, _tmp, _tmp$1, _tmp$2, _tmp$3, exp, f, mant, shift, x, x$1, x$2, x$3, x$4, x$5;
  14455. shift = 0;
  14456. f = this;
  14457. _tmp = f.mant; _tmp$1 = f.exp; mant = _tmp; exp = _tmp$1;
  14458. if ((mant.$high === 0 && mant.$low === 0)) {
  14459. shift = 0;
  14460. return shift;
  14461. }
  14462. if ((x = $shiftRightUint64(mant, 32), (x.$high === 0 && x.$low === 0))) {
  14463. mant = $shiftLeft64(mant, (32));
  14464. exp = exp - (32) >> 0;
  14465. }
  14466. if ((x$1 = $shiftRightUint64(mant, 48), (x$1.$high === 0 && x$1.$low === 0))) {
  14467. mant = $shiftLeft64(mant, (16));
  14468. exp = exp - (16) >> 0;
  14469. }
  14470. if ((x$2 = $shiftRightUint64(mant, 56), (x$2.$high === 0 && x$2.$low === 0))) {
  14471. mant = $shiftLeft64(mant, (8));
  14472. exp = exp - (8) >> 0;
  14473. }
  14474. if ((x$3 = $shiftRightUint64(mant, 60), (x$3.$high === 0 && x$3.$low === 0))) {
  14475. mant = $shiftLeft64(mant, (4));
  14476. exp = exp - (4) >> 0;
  14477. }
  14478. if ((x$4 = $shiftRightUint64(mant, 62), (x$4.$high === 0 && x$4.$low === 0))) {
  14479. mant = $shiftLeft64(mant, (2));
  14480. exp = exp - (2) >> 0;
  14481. }
  14482. if ((x$5 = $shiftRightUint64(mant, 63), (x$5.$high === 0 && x$5.$low === 0))) {
  14483. mant = $shiftLeft64(mant, (1));
  14484. exp = exp - (1) >> 0;
  14485. }
  14486. shift = ((f.exp - exp >> 0) >>> 0);
  14487. _tmp$2 = mant; _tmp$3 = exp; f.mant = _tmp$2; f.exp = _tmp$3;
  14488. return shift;
  14489. };
  14490. extFloat.prototype.Normalize = function() { return this.$val.Normalize(); };
  14491. extFloat.ptr.prototype.Multiply = function(g) {
  14492. var $ptr, _tmp, _tmp$1, _tmp$2, _tmp$3, cross1, cross2, f, fhi, flo, g, ghi, glo, rem, x, x$1, x$10, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9;
  14493. f = this;
  14494. g = $clone(g, extFloat);
  14495. _tmp = $shiftRightUint64(f.mant, 32); _tmp$1 = new $Uint64(0, (f.mant.$low >>> 0)); fhi = _tmp; flo = _tmp$1;
  14496. _tmp$2 = $shiftRightUint64(g.mant, 32); _tmp$3 = new $Uint64(0, (g.mant.$low >>> 0)); ghi = _tmp$2; glo = _tmp$3;
  14497. cross1 = $mul64(fhi, glo);
  14498. cross2 = $mul64(flo, ghi);
  14499. f.mant = (x = (x$1 = $mul64(fhi, ghi), x$2 = $shiftRightUint64(cross1, 32), new $Uint64(x$1.$high + x$2.$high, x$1.$low + x$2.$low)), x$3 = $shiftRightUint64(cross2, 32), new $Uint64(x.$high + x$3.$high, x.$low + x$3.$low));
  14500. rem = (x$4 = (x$5 = new $Uint64(0, (cross1.$low >>> 0)), x$6 = new $Uint64(0, (cross2.$low >>> 0)), new $Uint64(x$5.$high + x$6.$high, x$5.$low + x$6.$low)), x$7 = $shiftRightUint64(($mul64(flo, glo)), 32), new $Uint64(x$4.$high + x$7.$high, x$4.$low + x$7.$low));
  14501. rem = (x$8 = new $Uint64(0, 2147483648), new $Uint64(rem.$high + x$8.$high, rem.$low + x$8.$low));
  14502. f.mant = (x$9 = f.mant, x$10 = ($shiftRightUint64(rem, 32)), new $Uint64(x$9.$high + x$10.$high, x$9.$low + x$10.$low));
  14503. f.exp = (f.exp + g.exp >> 0) + 64 >> 0;
  14504. };
  14505. extFloat.prototype.Multiply = function(g) { return this.$val.Multiply(g); };
  14506. extFloat.ptr.prototype.AssignDecimal = function(mantissa, exp10, neg, trunc, flt) {
  14507. var $ptr, _q, _r, adjExp, denormalExp, errors$1, exp10, extrabits, f, flt, halfway, i, mant_extra, mantissa, neg, ok, shift, trunc, x, x$1, x$10, x$11, x$12, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9, y;
  14508. ok = false;
  14509. f = this;
  14510. errors$1 = 0;
  14511. if (trunc) {
  14512. errors$1 = errors$1 + (4) >> 0;
  14513. }
  14514. f.mant = mantissa;
  14515. f.exp = 0;
  14516. f.neg = neg;
  14517. i = (_q = ((exp10 - -348 >> 0)) / 8, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero"));
  14518. if (exp10 < -348 || i >= 87) {
  14519. ok = false;
  14520. return ok;
  14521. }
  14522. adjExp = (_r = ((exp10 - -348 >> 0)) % 8, _r === _r ? _r : $throwRuntimeError("integer divide by zero"));
  14523. if (adjExp < 19 && (x = (x$1 = 19 - adjExp >> 0, ((x$1 < 0 || x$1 >= uint64pow10.length) ? $throwRuntimeError("index out of range") : uint64pow10[x$1])), (mantissa.$high < x.$high || (mantissa.$high === x.$high && mantissa.$low < x.$low)))) {
  14524. f.mant = $mul64(f.mant, (((adjExp < 0 || adjExp >= uint64pow10.length) ? $throwRuntimeError("index out of range") : uint64pow10[adjExp])));
  14525. f.Normalize();
  14526. } else {
  14527. f.Normalize();
  14528. f.Multiply(((adjExp < 0 || adjExp >= smallPowersOfTen.length) ? $throwRuntimeError("index out of range") : smallPowersOfTen[adjExp]));
  14529. errors$1 = errors$1 + (4) >> 0;
  14530. }
  14531. f.Multiply(((i < 0 || i >= powersOfTen.length) ? $throwRuntimeError("index out of range") : powersOfTen[i]));
  14532. if (errors$1 > 0) {
  14533. errors$1 = errors$1 + (1) >> 0;
  14534. }
  14535. errors$1 = errors$1 + (4) >> 0;
  14536. shift = f.Normalize();
  14537. errors$1 = (y = (shift), y < 32 ? (errors$1 << y) : 0) >> 0;
  14538. denormalExp = flt.bias - 63 >> 0;
  14539. extrabits = 0;
  14540. if (f.exp <= denormalExp) {
  14541. extrabits = (((63 - flt.mantbits >>> 0) + 1 >>> 0) + ((denormalExp - f.exp >> 0) >>> 0) >>> 0);
  14542. } else {
  14543. extrabits = (63 - flt.mantbits >>> 0);
  14544. }
  14545. halfway = $shiftLeft64(new $Uint64(0, 1), ((extrabits - 1 >>> 0)));
  14546. mant_extra = (x$2 = f.mant, x$3 = (x$4 = $shiftLeft64(new $Uint64(0, 1), extrabits), new $Uint64(x$4.$high - 0, x$4.$low - 1)), new $Uint64(x$2.$high & x$3.$high, (x$2.$low & x$3.$low) >>> 0));
  14547. if ((x$5 = (x$6 = new $Int64(halfway.$high, halfway.$low), x$7 = new $Int64(0, errors$1), new $Int64(x$6.$high - x$7.$high, x$6.$low - x$7.$low)), x$8 = new $Int64(mant_extra.$high, mant_extra.$low), (x$5.$high < x$8.$high || (x$5.$high === x$8.$high && x$5.$low < x$8.$low))) && (x$9 = new $Int64(mant_extra.$high, mant_extra.$low), x$10 = (x$11 = new $Int64(halfway.$high, halfway.$low), x$12 = new $Int64(0, errors$1), new $Int64(x$11.$high + x$12.$high, x$11.$low + x$12.$low)), (x$9.$high < x$10.$high || (x$9.$high === x$10.$high && x$9.$low < x$10.$low)))) {
  14548. ok = false;
  14549. return ok;
  14550. }
  14551. ok = true;
  14552. return ok;
  14553. };
  14554. extFloat.prototype.AssignDecimal = function(mantissa, exp10, neg, trunc, flt) { return this.$val.AssignDecimal(mantissa, exp10, neg, trunc, flt); };
  14555. extFloat.ptr.prototype.frexp10 = function() {
  14556. var $ptr, _q, _q$1, _tmp, _tmp$1, approxExp10, exp, exp10, f, i, index;
  14557. exp10 = 0;
  14558. index = 0;
  14559. f = this;
  14560. approxExp10 = (_q = (((-46 - f.exp >> 0)) * 28 >> 0) / 93, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero"));
  14561. i = (_q$1 = ((approxExp10 - -348 >> 0)) / 8, (_q$1 === _q$1 && _q$1 !== 1/0 && _q$1 !== -1/0) ? _q$1 >> 0 : $throwRuntimeError("integer divide by zero"));
  14562. Loop:
  14563. while (true) {
  14564. exp = (f.exp + ((i < 0 || i >= powersOfTen.length) ? $throwRuntimeError("index out of range") : powersOfTen[i]).exp >> 0) + 64 >> 0;
  14565. if (exp < -60) {
  14566. i = i + (1) >> 0;
  14567. } else if (exp > -32) {
  14568. i = i - (1) >> 0;
  14569. } else {
  14570. break Loop;
  14571. }
  14572. }
  14573. f.Multiply(((i < 0 || i >= powersOfTen.length) ? $throwRuntimeError("index out of range") : powersOfTen[i]));
  14574. _tmp = -((-348 + (i * 8 >> 0) >> 0)); _tmp$1 = i; exp10 = _tmp; index = _tmp$1;
  14575. return [exp10, index];
  14576. };
  14577. extFloat.prototype.frexp10 = function() { return this.$val.frexp10(); };
  14578. frexp10Many = function(a, b, c) {
  14579. var $ptr, _tuple, a, b, c, exp10, i;
  14580. exp10 = 0;
  14581. _tuple = c.frexp10(); exp10 = _tuple[0]; i = _tuple[1];
  14582. a.Multiply(((i < 0 || i >= powersOfTen.length) ? $throwRuntimeError("index out of range") : powersOfTen[i]));
  14583. b.Multiply(((i < 0 || i >= powersOfTen.length) ? $throwRuntimeError("index out of range") : powersOfTen[i]));
  14584. return exp10;
  14585. };
  14586. extFloat.ptr.prototype.FixedDecimal = function(d, n) {
  14587. var $ptr, _q, _q$1, _tmp, _tmp$1, _tuple, buf, d, digit, exp10, f, fraction, i, i$1, i$2, integer, integerDigits, n, nd, needed, nonAsciiName, ok, pos, pow, pow10, rest, shift, v, v1, x, x$1, x$10, x$11, x$12, x$13, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9;
  14588. f = this;
  14589. if ((x = f.mant, (x.$high === 0 && x.$low === 0))) {
  14590. d.nd = 0;
  14591. d.dp = 0;
  14592. d.neg = f.neg;
  14593. return true;
  14594. }
  14595. if (n === 0) {
  14596. $panic(new $String("strconv: internal error: extFloat.FixedDecimal called with n == 0"));
  14597. }
  14598. f.Normalize();
  14599. _tuple = f.frexp10(); exp10 = _tuple[0];
  14600. shift = (-f.exp >>> 0);
  14601. integer = ($shiftRightUint64(f.mant, shift).$low >>> 0);
  14602. fraction = (x$1 = f.mant, x$2 = $shiftLeft64(new $Uint64(0, integer), shift), new $Uint64(x$1.$high - x$2.$high, x$1.$low - x$2.$low));
  14603. nonAsciiName = new $Uint64(0, 1);
  14604. needed = n;
  14605. integerDigits = 0;
  14606. pow10 = new $Uint64(0, 1);
  14607. _tmp = 0; _tmp$1 = new $Uint64(0, 1); i = _tmp; pow = _tmp$1;
  14608. while (true) {
  14609. if (!(i < 20)) { break; }
  14610. if ((x$3 = new $Uint64(0, integer), (pow.$high > x$3.$high || (pow.$high === x$3.$high && pow.$low > x$3.$low)))) {
  14611. integerDigits = i;
  14612. break;
  14613. }
  14614. pow = $mul64(pow, (new $Uint64(0, 10)));
  14615. i = i + (1) >> 0;
  14616. }
  14617. rest = integer;
  14618. if (integerDigits > needed) {
  14619. pow10 = (x$4 = integerDigits - needed >> 0, ((x$4 < 0 || x$4 >= uint64pow10.length) ? $throwRuntimeError("index out of range") : uint64pow10[x$4]));
  14620. integer = (_q = integer / ((pow10.$low >>> 0)), (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >>> 0 : $throwRuntimeError("integer divide by zero"));
  14621. rest = rest - ((x$5 = (pow10.$low >>> 0), (((integer >>> 16 << 16) * x$5 >>> 0) + (integer << 16 >>> 16) * x$5) >>> 0)) >>> 0;
  14622. } else {
  14623. rest = 0;
  14624. }
  14625. buf = $clone(arrayType$1.zero(), arrayType$1);
  14626. pos = 32;
  14627. v = integer;
  14628. while (true) {
  14629. if (!(v > 0)) { break; }
  14630. v1 = (_q$1 = v / 10, (_q$1 === _q$1 && _q$1 !== 1/0 && _q$1 !== -1/0) ? _q$1 >>> 0 : $throwRuntimeError("integer divide by zero"));
  14631. v = v - (((((10 >>> 16 << 16) * v1 >>> 0) + (10 << 16 >>> 16) * v1) >>> 0)) >>> 0;
  14632. pos = pos - (1) >> 0;
  14633. ((pos < 0 || pos >= buf.length) ? $throwRuntimeError("index out of range") : buf[pos] = ((v + 48 >>> 0) << 24 >>> 24));
  14634. v = v1;
  14635. }
  14636. i$1 = pos;
  14637. while (true) {
  14638. if (!(i$1 < 32)) { break; }
  14639. (x$6 = d.d, x$7 = i$1 - pos >> 0, ((x$7 < 0 || x$7 >= x$6.$length) ? $throwRuntimeError("index out of range") : x$6.$array[x$6.$offset + x$7] = ((i$1 < 0 || i$1 >= buf.length) ? $throwRuntimeError("index out of range") : buf[i$1])));
  14640. i$1 = i$1 + (1) >> 0;
  14641. }
  14642. nd = 32 - pos >> 0;
  14643. d.nd = nd;
  14644. d.dp = integerDigits + exp10 >> 0;
  14645. needed = needed - (nd) >> 0;
  14646. if (needed > 0) {
  14647. if (!((rest === 0)) || !((pow10.$high === 0 && pow10.$low === 1))) {
  14648. $panic(new $String("strconv: internal error, rest != 0 but needed > 0"));
  14649. }
  14650. while (true) {
  14651. if (!(needed > 0)) { break; }
  14652. fraction = $mul64(fraction, (new $Uint64(0, 10)));
  14653. nonAsciiName = $mul64(nonAsciiName, (new $Uint64(0, 10)));
  14654. if ((x$8 = $mul64(new $Uint64(0, 2), nonAsciiName), x$9 = $shiftLeft64(new $Uint64(0, 1), shift), (x$8.$high > x$9.$high || (x$8.$high === x$9.$high && x$8.$low > x$9.$low)))) {
  14655. return false;
  14656. }
  14657. digit = $shiftRightUint64(fraction, shift);
  14658. (x$10 = d.d, ((nd < 0 || nd >= x$10.$length) ? $throwRuntimeError("index out of range") : x$10.$array[x$10.$offset + nd] = (new $Uint64(digit.$high + 0, digit.$low + 48).$low << 24 >>> 24)));
  14659. fraction = (x$11 = $shiftLeft64(digit, shift), new $Uint64(fraction.$high - x$11.$high, fraction.$low - x$11.$low));
  14660. nd = nd + (1) >> 0;
  14661. needed = needed - (1) >> 0;
  14662. }
  14663. d.nd = nd;
  14664. }
  14665. ok = adjustLastDigitFixed(d, (x$12 = $shiftLeft64(new $Uint64(0, rest), shift), new $Uint64(x$12.$high | fraction.$high, (x$12.$low | fraction.$low) >>> 0)), pow10, shift, nonAsciiName);
  14666. if (!ok) {
  14667. return false;
  14668. }
  14669. i$2 = d.nd - 1 >> 0;
  14670. while (true) {
  14671. if (!(i$2 >= 0)) { break; }
  14672. if (!(((x$13 = d.d, ((i$2 < 0 || i$2 >= x$13.$length) ? $throwRuntimeError("index out of range") : x$13.$array[x$13.$offset + i$2])) === 48))) {
  14673. d.nd = i$2 + 1 >> 0;
  14674. break;
  14675. }
  14676. i$2 = i$2 - (1) >> 0;
  14677. }
  14678. return true;
  14679. };
  14680. extFloat.prototype.FixedDecimal = function(d, n) { return this.$val.FixedDecimal(d, n); };
  14681. adjustLastDigitFixed = function(d, num, den, shift, nonAsciiName) {
  14682. var $ptr, d, den, i, nonAsciiName, num, shift, x, x$1, x$10, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9;
  14683. if ((x = $shiftLeft64(den, shift), (num.$high > x.$high || (num.$high === x.$high && num.$low > x.$low)))) {
  14684. $panic(new $String("strconv: num > den<<shift in adjustLastDigitFixed"));
  14685. }
  14686. if ((x$1 = $mul64(new $Uint64(0, 2), nonAsciiName), x$2 = $shiftLeft64(den, shift), (x$1.$high > x$2.$high || (x$1.$high === x$2.$high && x$1.$low > x$2.$low)))) {
  14687. $panic(new $String("strconv: \xCE\xB5 > (den<<shift)/2"));
  14688. }
  14689. if ((x$3 = $mul64(new $Uint64(0, 2), (new $Uint64(num.$high + nonAsciiName.$high, num.$low + nonAsciiName.$low))), x$4 = $shiftLeft64(den, shift), (x$3.$high < x$4.$high || (x$3.$high === x$4.$high && x$3.$low < x$4.$low)))) {
  14690. return true;
  14691. }
  14692. if ((x$5 = $mul64(new $Uint64(0, 2), (new $Uint64(num.$high - nonAsciiName.$high, num.$low - nonAsciiName.$low))), x$6 = $shiftLeft64(den, shift), (x$5.$high > x$6.$high || (x$5.$high === x$6.$high && x$5.$low > x$6.$low)))) {
  14693. i = d.nd - 1 >> 0;
  14694. while (true) {
  14695. if (!(i >= 0)) { break; }
  14696. if ((x$7 = d.d, ((i < 0 || i >= x$7.$length) ? $throwRuntimeError("index out of range") : x$7.$array[x$7.$offset + i])) === 57) {
  14697. d.nd = d.nd - (1) >> 0;
  14698. } else {
  14699. break;
  14700. }
  14701. i = i - (1) >> 0;
  14702. }
  14703. if (i < 0) {
  14704. (x$8 = d.d, (0 >= x$8.$length ? $throwRuntimeError("index out of range") : x$8.$array[x$8.$offset + 0] = 49));
  14705. d.nd = 1;
  14706. d.dp = d.dp + (1) >> 0;
  14707. } else {
  14708. (x$10 = d.d, ((i < 0 || i >= x$10.$length) ? $throwRuntimeError("index out of range") : x$10.$array[x$10.$offset + i] = (x$9 = d.d, ((i < 0 || i >= x$9.$length) ? $throwRuntimeError("index out of range") : x$9.$array[x$9.$offset + i])) + (1) << 24 >>> 24));
  14709. }
  14710. return true;
  14711. }
  14712. return false;
  14713. };
  14714. extFloat.ptr.prototype.ShortestDecimal = function(d, lower, upper) {
  14715. var $ptr, _q, _tmp, _tmp$1, _tmp$2, _tmp$3, allowance, buf, currentDiff, d, digit, digit$1, exp10, f, fraction, i, i$1, i$2, integer, integerDigits, lower, multiplier, n, nd, pow, pow$1, shift, targetDiff, upper, v, v1, x, x$1, x$10, x$11, x$12, x$13, x$14, x$15, x$16, x$17, x$18, x$19, x$2, x$20, x$21, x$22, x$23, x$24, x$3, x$4, x$5, x$6, x$7, x$8, x$9;
  14716. f = this;
  14717. if ((x = f.mant, (x.$high === 0 && x.$low === 0))) {
  14718. d.nd = 0;
  14719. d.dp = 0;
  14720. d.neg = f.neg;
  14721. return true;
  14722. }
  14723. if ((f.exp === 0) && $equal(lower, f, extFloat) && $equal(lower, upper, extFloat)) {
  14724. buf = $clone(arrayType.zero(), arrayType);
  14725. n = 23;
  14726. v = f.mant;
  14727. while (true) {
  14728. if (!((v.$high > 0 || (v.$high === 0 && v.$low > 0)))) { break; }
  14729. v1 = $div64(v, new $Uint64(0, 10), false);
  14730. v = (x$1 = $mul64(new $Uint64(0, 10), v1), new $Uint64(v.$high - x$1.$high, v.$low - x$1.$low));
  14731. ((n < 0 || n >= buf.length) ? $throwRuntimeError("index out of range") : buf[n] = (new $Uint64(v.$high + 0, v.$low + 48).$low << 24 >>> 24));
  14732. n = n - (1) >> 0;
  14733. v = v1;
  14734. }
  14735. nd = (24 - n >> 0) - 1 >> 0;
  14736. i = 0;
  14737. while (true) {
  14738. if (!(i < nd)) { break; }
  14739. (x$3 = d.d, ((i < 0 || i >= x$3.$length) ? $throwRuntimeError("index out of range") : x$3.$array[x$3.$offset + i] = (x$2 = (n + 1 >> 0) + i >> 0, ((x$2 < 0 || x$2 >= buf.length) ? $throwRuntimeError("index out of range") : buf[x$2]))));
  14740. i = i + (1) >> 0;
  14741. }
  14742. _tmp = nd; _tmp$1 = nd; d.nd = _tmp; d.dp = _tmp$1;
  14743. while (true) {
  14744. if (!(d.nd > 0 && ((x$4 = d.d, x$5 = d.nd - 1 >> 0, ((x$5 < 0 || x$5 >= x$4.$length) ? $throwRuntimeError("index out of range") : x$4.$array[x$4.$offset + x$5])) === 48))) { break; }
  14745. d.nd = d.nd - (1) >> 0;
  14746. }
  14747. if (d.nd === 0) {
  14748. d.dp = 0;
  14749. }
  14750. d.neg = f.neg;
  14751. return true;
  14752. }
  14753. upper.Normalize();
  14754. if (f.exp > upper.exp) {
  14755. f.mant = $shiftLeft64(f.mant, (((f.exp - upper.exp >> 0) >>> 0)));
  14756. f.exp = upper.exp;
  14757. }
  14758. if (lower.exp > upper.exp) {
  14759. lower.mant = $shiftLeft64(lower.mant, (((lower.exp - upper.exp >> 0) >>> 0)));
  14760. lower.exp = upper.exp;
  14761. }
  14762. exp10 = frexp10Many(lower, f, upper);
  14763. upper.mant = (x$6 = upper.mant, x$7 = new $Uint64(0, 1), new $Uint64(x$6.$high + x$7.$high, x$6.$low + x$7.$low));
  14764. lower.mant = (x$8 = lower.mant, x$9 = new $Uint64(0, 1), new $Uint64(x$8.$high - x$9.$high, x$8.$low - x$9.$low));
  14765. shift = (-upper.exp >>> 0);
  14766. integer = ($shiftRightUint64(upper.mant, shift).$low >>> 0);
  14767. fraction = (x$10 = upper.mant, x$11 = $shiftLeft64(new $Uint64(0, integer), shift), new $Uint64(x$10.$high - x$11.$high, x$10.$low - x$11.$low));
  14768. allowance = (x$12 = upper.mant, x$13 = lower.mant, new $Uint64(x$12.$high - x$13.$high, x$12.$low - x$13.$low));
  14769. targetDiff = (x$14 = upper.mant, x$15 = f.mant, new $Uint64(x$14.$high - x$15.$high, x$14.$low - x$15.$low));
  14770. integerDigits = 0;
  14771. _tmp$2 = 0; _tmp$3 = new $Uint64(0, 1); i$1 = _tmp$2; pow = _tmp$3;
  14772. while (true) {
  14773. if (!(i$1 < 20)) { break; }
  14774. if ((x$16 = new $Uint64(0, integer), (pow.$high > x$16.$high || (pow.$high === x$16.$high && pow.$low > x$16.$low)))) {
  14775. integerDigits = i$1;
  14776. break;
  14777. }
  14778. pow = $mul64(pow, (new $Uint64(0, 10)));
  14779. i$1 = i$1 + (1) >> 0;
  14780. }
  14781. i$2 = 0;
  14782. while (true) {
  14783. if (!(i$2 < integerDigits)) { break; }
  14784. pow$1 = (x$17 = (integerDigits - i$2 >> 0) - 1 >> 0, ((x$17 < 0 || x$17 >= uint64pow10.length) ? $throwRuntimeError("index out of range") : uint64pow10[x$17]));
  14785. digit = (_q = integer / (pow$1.$low >>> 0), (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >>> 0 : $throwRuntimeError("integer divide by zero"));
  14786. (x$18 = d.d, ((i$2 < 0 || i$2 >= x$18.$length) ? $throwRuntimeError("index out of range") : x$18.$array[x$18.$offset + i$2] = ((digit + 48 >>> 0) << 24 >>> 24)));
  14787. integer = integer - ((x$19 = (pow$1.$low >>> 0), (((digit >>> 16 << 16) * x$19 >>> 0) + (digit << 16 >>> 16) * x$19) >>> 0)) >>> 0;
  14788. currentDiff = (x$20 = $shiftLeft64(new $Uint64(0, integer), shift), new $Uint64(x$20.$high + fraction.$high, x$20.$low + fraction.$low));
  14789. if ((currentDiff.$high < allowance.$high || (currentDiff.$high === allowance.$high && currentDiff.$low < allowance.$low))) {
  14790. d.nd = i$2 + 1 >> 0;
  14791. d.dp = integerDigits + exp10 >> 0;
  14792. d.neg = f.neg;
  14793. return adjustLastDigit(d, currentDiff, targetDiff, allowance, $shiftLeft64(pow$1, shift), new $Uint64(0, 2));
  14794. }
  14795. i$2 = i$2 + (1) >> 0;
  14796. }
  14797. d.nd = integerDigits;
  14798. d.dp = d.nd + exp10 >> 0;
  14799. d.neg = f.neg;
  14800. digit$1 = 0;
  14801. multiplier = new $Uint64(0, 1);
  14802. while (true) {
  14803. fraction = $mul64(fraction, (new $Uint64(0, 10)));
  14804. multiplier = $mul64(multiplier, (new $Uint64(0, 10)));
  14805. digit$1 = ($shiftRightUint64(fraction, shift).$low >> 0);
  14806. (x$21 = d.d, x$22 = d.nd, ((x$22 < 0 || x$22 >= x$21.$length) ? $throwRuntimeError("index out of range") : x$21.$array[x$21.$offset + x$22] = ((digit$1 + 48 >> 0) << 24 >>> 24)));
  14807. d.nd = d.nd + (1) >> 0;
  14808. fraction = (x$23 = $shiftLeft64(new $Uint64(0, digit$1), shift), new $Uint64(fraction.$high - x$23.$high, fraction.$low - x$23.$low));
  14809. if ((x$24 = $mul64(allowance, multiplier), (fraction.$high < x$24.$high || (fraction.$high === x$24.$high && fraction.$low < x$24.$low)))) {
  14810. return adjustLastDigit(d, fraction, $mul64(targetDiff, multiplier), $mul64(allowance, multiplier), $shiftLeft64(new $Uint64(0, 1), shift), $mul64(multiplier, new $Uint64(0, 2)));
  14811. }
  14812. }
  14813. };
  14814. extFloat.prototype.ShortestDecimal = function(d, lower, upper) { return this.$val.ShortestDecimal(d, lower, upper); };
  14815. adjustLastDigit = function(d, currentDiff, targetDiff, maxDiff, ulpDecimal, ulpBinary) {
  14816. var $ptr, _index, currentDiff, d, maxDiff, targetDiff, ulpBinary, ulpDecimal, x, x$1, x$10, x$11, x$12, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9;
  14817. if ((x = $mul64(new $Uint64(0, 2), ulpBinary), (ulpDecimal.$high < x.$high || (ulpDecimal.$high === x.$high && ulpDecimal.$low < x.$low)))) {
  14818. return false;
  14819. }
  14820. while (true) {
  14821. if (!((x$1 = (x$2 = (x$3 = $div64(ulpDecimal, new $Uint64(0, 2), false), new $Uint64(currentDiff.$high + x$3.$high, currentDiff.$low + x$3.$low)), new $Uint64(x$2.$high + ulpBinary.$high, x$2.$low + ulpBinary.$low)), (x$1.$high < targetDiff.$high || (x$1.$high === targetDiff.$high && x$1.$low < targetDiff.$low))))) { break; }
  14822. _index = d.nd - 1 >> 0;
  14823. (x$5 = d.d, ((_index < 0 || _index >= x$5.$length) ? $throwRuntimeError("index out of range") : x$5.$array[x$5.$offset + _index] = (x$4 = d.d, ((_index < 0 || _index >= x$4.$length) ? $throwRuntimeError("index out of range") : x$4.$array[x$4.$offset + _index])) - (1) << 24 >>> 24));
  14824. currentDiff = (x$6 = ulpDecimal, new $Uint64(currentDiff.$high + x$6.$high, currentDiff.$low + x$6.$low));
  14825. }
  14826. if ((x$7 = new $Uint64(currentDiff.$high + ulpDecimal.$high, currentDiff.$low + ulpDecimal.$low), x$8 = (x$9 = (x$10 = $div64(ulpDecimal, new $Uint64(0, 2), false), new $Uint64(targetDiff.$high + x$10.$high, targetDiff.$low + x$10.$low)), new $Uint64(x$9.$high + ulpBinary.$high, x$9.$low + ulpBinary.$low)), (x$7.$high < x$8.$high || (x$7.$high === x$8.$high && x$7.$low <= x$8.$low)))) {
  14827. return false;
  14828. }
  14829. if ((currentDiff.$high < ulpBinary.$high || (currentDiff.$high === ulpBinary.$high && currentDiff.$low < ulpBinary.$low)) || (x$11 = new $Uint64(maxDiff.$high - ulpBinary.$high, maxDiff.$low - ulpBinary.$low), (currentDiff.$high > x$11.$high || (currentDiff.$high === x$11.$high && currentDiff.$low > x$11.$low)))) {
  14830. return false;
  14831. }
  14832. if ((d.nd === 1) && ((x$12 = d.d, (0 >= x$12.$length ? $throwRuntimeError("index out of range") : x$12.$array[x$12.$offset + 0])) === 48)) {
  14833. d.nd = 0;
  14834. d.dp = 0;
  14835. }
  14836. return true;
  14837. };
  14838. FormatFloat = function(f, fmt, prec, bitSize) {
  14839. var $ptr, bitSize, f, fmt, prec;
  14840. return $bytesToString(genericFtoa($makeSlice(sliceType$6, 0, max(prec + 4 >> 0, 24)), f, fmt, prec, bitSize));
  14841. };
  14842. $pkg.FormatFloat = FormatFloat;
  14843. AppendFloat = function(dst, f, fmt, prec, bitSize) {
  14844. var $ptr, bitSize, dst, f, fmt, prec;
  14845. return genericFtoa(dst, f, fmt, prec, bitSize);
  14846. };
  14847. $pkg.AppendFloat = AppendFloat;
  14848. genericFtoa = function(dst, val, fmt, prec, bitSize) {
  14849. var $ptr, _ref, _ref$1, _ref$2, _ref$3, _tuple, bitSize, bits, buf, buf$1, digits, digs, dst, exp, f, f$1, flt, fmt, lower, mant, neg, ok, prec, s, shortest, upper, val, x, x$1, x$2, x$3, y, y$1;
  14850. bits = new $Uint64(0, 0);
  14851. flt = ptrType$1.nil;
  14852. _ref = bitSize;
  14853. if (_ref === 32) {
  14854. bits = new $Uint64(0, math.Float32bits($fround(val)));
  14855. flt = float32info;
  14856. } else if (_ref === 64) {
  14857. bits = math.Float64bits(val);
  14858. flt = float64info;
  14859. } else {
  14860. $panic(new $String("strconv: illegal AppendFloat/FormatFloat bitSize"));
  14861. }
  14862. neg = !((x = $shiftRightUint64(bits, ((flt.expbits + flt.mantbits >>> 0))), (x.$high === 0 && x.$low === 0)));
  14863. exp = ($shiftRightUint64(bits, flt.mantbits).$low >> 0) & ((((y = flt.expbits, y < 32 ? (1 << y) : 0) >> 0) - 1 >> 0));
  14864. mant = (x$1 = (x$2 = $shiftLeft64(new $Uint64(0, 1), flt.mantbits), new $Uint64(x$2.$high - 0, x$2.$low - 1)), new $Uint64(bits.$high & x$1.$high, (bits.$low & x$1.$low) >>> 0));
  14865. _ref$1 = exp;
  14866. if (_ref$1 === (((y$1 = flt.expbits, y$1 < 32 ? (1 << y$1) : 0) >> 0) - 1 >> 0)) {
  14867. s = "";
  14868. if (!((mant.$high === 0 && mant.$low === 0))) {
  14869. s = "NaN";
  14870. } else if (neg) {
  14871. s = "-Inf";
  14872. } else {
  14873. s = "+Inf";
  14874. }
  14875. return $appendSlice(dst, new sliceType$6($stringToBytes(s)));
  14876. } else if (_ref$1 === 0) {
  14877. exp = exp + (1) >> 0;
  14878. } else {
  14879. mant = (x$3 = $shiftLeft64(new $Uint64(0, 1), flt.mantbits), new $Uint64(mant.$high | x$3.$high, (mant.$low | x$3.$low) >>> 0));
  14880. }
  14881. exp = exp + (flt.bias) >> 0;
  14882. if (fmt === 98) {
  14883. return fmtB(dst, neg, mant, exp, flt);
  14884. }
  14885. if (!optimize) {
  14886. return bigFtoa(dst, prec, fmt, neg, mant, exp, flt);
  14887. }
  14888. digs = $clone(new decimalSlice.ptr(), decimalSlice);
  14889. ok = false;
  14890. shortest = prec < 0;
  14891. if (shortest) {
  14892. f = new extFloat.ptr();
  14893. _tuple = f.AssignComputeBounds(mant, exp, neg, flt); lower = $clone(_tuple[0], extFloat); upper = $clone(_tuple[1], extFloat);
  14894. buf = $clone(arrayType$1.zero(), arrayType$1);
  14895. digs.d = new sliceType$6(buf);
  14896. ok = f.ShortestDecimal(digs, lower, upper);
  14897. if (!ok) {
  14898. return bigFtoa(dst, prec, fmt, neg, mant, exp, flt);
  14899. }
  14900. _ref$2 = fmt;
  14901. if (_ref$2 === 101 || _ref$2 === 69) {
  14902. prec = digs.nd - 1 >> 0;
  14903. } else if (_ref$2 === 102) {
  14904. prec = max(digs.nd - digs.dp >> 0, 0);
  14905. } else if (_ref$2 === 103 || _ref$2 === 71) {
  14906. prec = digs.nd;
  14907. }
  14908. } else if (!((fmt === 102))) {
  14909. digits = prec;
  14910. _ref$3 = fmt;
  14911. if (_ref$3 === 101 || _ref$3 === 69) {
  14912. digits = digits + (1) >> 0;
  14913. } else if (_ref$3 === 103 || _ref$3 === 71) {
  14914. if (prec === 0) {
  14915. prec = 1;
  14916. }
  14917. digits = prec;
  14918. }
  14919. if (digits <= 15) {
  14920. buf$1 = $clone(arrayType.zero(), arrayType);
  14921. digs.d = new sliceType$6(buf$1);
  14922. f$1 = new extFloat.ptr(mant, exp - (flt.mantbits >> 0) >> 0, neg);
  14923. ok = f$1.FixedDecimal(digs, digits);
  14924. }
  14925. }
  14926. if (!ok) {
  14927. return bigFtoa(dst, prec, fmt, neg, mant, exp, flt);
  14928. }
  14929. return formatDigits(dst, shortest, neg, digs, prec, fmt);
  14930. };
  14931. bigFtoa = function(dst, prec, fmt, neg, mant, exp, flt) {
  14932. var $ptr, _ref, _ref$1, d, digs, dst, exp, flt, fmt, mant, neg, prec, shortest;
  14933. d = new decimal.ptr();
  14934. d.Assign(mant);
  14935. d.Shift(exp - (flt.mantbits >> 0) >> 0);
  14936. digs = $clone(new decimalSlice.ptr(), decimalSlice);
  14937. shortest = prec < 0;
  14938. if (shortest) {
  14939. roundShortest(d, mant, exp, flt);
  14940. $copy(digs, new decimalSlice.ptr(new sliceType$6(d.d), d.nd, d.dp, false), decimalSlice);
  14941. _ref = fmt;
  14942. if (_ref === 101 || _ref === 69) {
  14943. prec = digs.nd - 1 >> 0;
  14944. } else if (_ref === 102) {
  14945. prec = max(digs.nd - digs.dp >> 0, 0);
  14946. } else if (_ref === 103 || _ref === 71) {
  14947. prec = digs.nd;
  14948. }
  14949. } else {
  14950. _ref$1 = fmt;
  14951. if (_ref$1 === 101 || _ref$1 === 69) {
  14952. d.Round(prec + 1 >> 0);
  14953. } else if (_ref$1 === 102) {
  14954. d.Round(d.dp + prec >> 0);
  14955. } else if (_ref$1 === 103 || _ref$1 === 71) {
  14956. if (prec === 0) {
  14957. prec = 1;
  14958. }
  14959. d.Round(prec);
  14960. }
  14961. $copy(digs, new decimalSlice.ptr(new sliceType$6(d.d), d.nd, d.dp, false), decimalSlice);
  14962. }
  14963. return formatDigits(dst, shortest, neg, digs, prec, fmt);
  14964. };
  14965. formatDigits = function(dst, shortest, neg, digs, prec, fmt) {
  14966. var $ptr, _ref, digs, dst, eprec, exp, fmt, neg, prec, shortest;
  14967. digs = $clone(digs, decimalSlice);
  14968. _ref = fmt;
  14969. if (_ref === 101 || _ref === 69) {
  14970. return fmtE(dst, neg, digs, prec, fmt);
  14971. } else if (_ref === 102) {
  14972. return fmtF(dst, neg, digs, prec);
  14973. } else if (_ref === 103 || _ref === 71) {
  14974. eprec = prec;
  14975. if (eprec > digs.nd && digs.nd >= digs.dp) {
  14976. eprec = digs.nd;
  14977. }
  14978. if (shortest) {
  14979. eprec = 6;
  14980. }
  14981. exp = digs.dp - 1 >> 0;
  14982. if (exp < -4 || exp >= eprec) {
  14983. if (prec > digs.nd) {
  14984. prec = digs.nd;
  14985. }
  14986. return fmtE(dst, neg, digs, prec - 1 >> 0, (fmt + 101 << 24 >>> 24) - 103 << 24 >>> 24);
  14987. }
  14988. if (prec > digs.dp) {
  14989. prec = digs.nd;
  14990. }
  14991. return fmtF(dst, neg, digs, max(prec - digs.dp >> 0, 0));
  14992. }
  14993. return $append(dst, 37, fmt);
  14994. };
  14995. roundShortest = function(d, mant, exp, flt) {
  14996. var $ptr, _tmp, _tmp$1, _tmp$2, d, exp, explo, flt, i, inclusive, l, lower, m, mant, mantlo, minexp, okdown, okup, u, upper, x, x$1, x$2, x$3, x$4, x$5, x$6, x$7;
  14997. if ((mant.$high === 0 && mant.$low === 0)) {
  14998. d.nd = 0;
  14999. return;
  15000. }
  15001. minexp = flt.bias + 1 >> 0;
  15002. if (exp > minexp && (332 * ((d.dp - d.nd >> 0)) >> 0) >= (100 * ((exp - (flt.mantbits >> 0) >> 0)) >> 0)) {
  15003. return;
  15004. }
  15005. upper = new decimal.ptr();
  15006. upper.Assign((x = $mul64(mant, new $Uint64(0, 2)), new $Uint64(x.$high + 0, x.$low + 1)));
  15007. upper.Shift((exp - (flt.mantbits >> 0) >> 0) - 1 >> 0);
  15008. mantlo = new $Uint64(0, 0);
  15009. explo = 0;
  15010. if ((x$1 = $shiftLeft64(new $Uint64(0, 1), flt.mantbits), (mant.$high > x$1.$high || (mant.$high === x$1.$high && mant.$low > x$1.$low))) || (exp === minexp)) {
  15011. mantlo = new $Uint64(mant.$high - 0, mant.$low - 1);
  15012. explo = exp;
  15013. } else {
  15014. mantlo = (x$2 = $mul64(mant, new $Uint64(0, 2)), new $Uint64(x$2.$high - 0, x$2.$low - 1));
  15015. explo = exp - 1 >> 0;
  15016. }
  15017. lower = new decimal.ptr();
  15018. lower.Assign((x$3 = $mul64(mantlo, new $Uint64(0, 2)), new $Uint64(x$3.$high + 0, x$3.$low + 1)));
  15019. lower.Shift((explo - (flt.mantbits >> 0) >> 0) - 1 >> 0);
  15020. inclusive = (x$4 = $div64(mant, new $Uint64(0, 2), true), (x$4.$high === 0 && x$4.$low === 0));
  15021. i = 0;
  15022. while (true) {
  15023. if (!(i < d.nd)) { break; }
  15024. _tmp = 0; _tmp$1 = 0; _tmp$2 = 0; l = _tmp; m = _tmp$1; u = _tmp$2;
  15025. if (i < lower.nd) {
  15026. l = (x$5 = lower.d, ((i < 0 || i >= x$5.length) ? $throwRuntimeError("index out of range") : x$5[i]));
  15027. } else {
  15028. l = 48;
  15029. }
  15030. m = (x$6 = d.d, ((i < 0 || i >= x$6.length) ? $throwRuntimeError("index out of range") : x$6[i]));
  15031. if (i < upper.nd) {
  15032. u = (x$7 = upper.d, ((i < 0 || i >= x$7.length) ? $throwRuntimeError("index out of range") : x$7[i]));
  15033. } else {
  15034. u = 48;
  15035. }
  15036. okdown = !((l === m)) || (inclusive && (l === m) && ((i + 1 >> 0) === lower.nd));
  15037. okup = !((m === u)) && (inclusive || (m + 1 << 24 >>> 24) < u || (i + 1 >> 0) < upper.nd);
  15038. if (okdown && okup) {
  15039. d.Round(i + 1 >> 0);
  15040. return;
  15041. } else if (okdown) {
  15042. d.RoundDown(i + 1 >> 0);
  15043. return;
  15044. } else if (okup) {
  15045. d.RoundUp(i + 1 >> 0);
  15046. return;
  15047. }
  15048. i = i + (1) >> 0;
  15049. }
  15050. };
  15051. fmtE = function(dst, neg, d, prec, fmt) {
  15052. var $ptr, _q, _r, _ref, buf, ch, d, dst, exp, fmt, i, i$1, m, neg, prec, x, x$1;
  15053. d = $clone(d, decimalSlice);
  15054. if (neg) {
  15055. dst = $append(dst, 45);
  15056. }
  15057. ch = 48;
  15058. if (!((d.nd === 0))) {
  15059. ch = (x = d.d, (0 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 0]));
  15060. }
  15061. dst = $append(dst, ch);
  15062. if (prec > 0) {
  15063. dst = $append(dst, 46);
  15064. i = 1;
  15065. m = ((d.nd + prec >> 0) + 1 >> 0) - max(d.nd, prec + 1 >> 0) >> 0;
  15066. while (true) {
  15067. if (!(i < m)) { break; }
  15068. dst = $append(dst, (x$1 = d.d, ((i < 0 || i >= x$1.$length) ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + i])));
  15069. i = i + (1) >> 0;
  15070. }
  15071. while (true) {
  15072. if (!(i <= prec)) { break; }
  15073. dst = $append(dst, 48);
  15074. i = i + (1) >> 0;
  15075. }
  15076. }
  15077. dst = $append(dst, fmt);
  15078. exp = d.dp - 1 >> 0;
  15079. if (d.nd === 0) {
  15080. exp = 0;
  15081. }
  15082. if (exp < 0) {
  15083. ch = 45;
  15084. exp = -exp;
  15085. } else {
  15086. ch = 43;
  15087. }
  15088. dst = $append(dst, ch);
  15089. buf = $clone(arrayType$2.zero(), arrayType$2);
  15090. i$1 = 3;
  15091. while (true) {
  15092. if (!(exp >= 10)) { break; }
  15093. i$1 = i$1 - (1) >> 0;
  15094. ((i$1 < 0 || i$1 >= buf.length) ? $throwRuntimeError("index out of range") : buf[i$1] = (((_r = exp % 10, _r === _r ? _r : $throwRuntimeError("integer divide by zero")) + 48 >> 0) << 24 >>> 24));
  15095. exp = (_q = exp / (10), (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero"));
  15096. }
  15097. i$1 = i$1 - (1) >> 0;
  15098. ((i$1 < 0 || i$1 >= buf.length) ? $throwRuntimeError("index out of range") : buf[i$1] = ((exp + 48 >> 0) << 24 >>> 24));
  15099. _ref = i$1;
  15100. if (_ref === 0) {
  15101. dst = $append(dst, buf[0], buf[1], buf[2]);
  15102. } else if (_ref === 1) {
  15103. dst = $append(dst, buf[1], buf[2]);
  15104. } else if (_ref === 2) {
  15105. dst = $append(dst, 48, buf[2]);
  15106. }
  15107. return dst;
  15108. };
  15109. fmtF = function(dst, neg, d, prec) {
  15110. var $ptr, ch, d, dst, i, i$1, j, neg, prec, x, x$1;
  15111. d = $clone(d, decimalSlice);
  15112. if (neg) {
  15113. dst = $append(dst, 45);
  15114. }
  15115. if (d.dp > 0) {
  15116. i = 0;
  15117. i = 0;
  15118. while (true) {
  15119. if (!(i < d.dp && i < d.nd)) { break; }
  15120. dst = $append(dst, (x = d.d, ((i < 0 || i >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + i])));
  15121. i = i + (1) >> 0;
  15122. }
  15123. while (true) {
  15124. if (!(i < d.dp)) { break; }
  15125. dst = $append(dst, 48);
  15126. i = i + (1) >> 0;
  15127. }
  15128. } else {
  15129. dst = $append(dst, 48);
  15130. }
  15131. if (prec > 0) {
  15132. dst = $append(dst, 46);
  15133. i$1 = 0;
  15134. while (true) {
  15135. if (!(i$1 < prec)) { break; }
  15136. ch = 48;
  15137. j = d.dp + i$1 >> 0;
  15138. if (0 <= j && j < d.nd) {
  15139. ch = (x$1 = d.d, ((j < 0 || j >= x$1.$length) ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + j]));
  15140. }
  15141. dst = $append(dst, ch);
  15142. i$1 = i$1 + (1) >> 0;
  15143. }
  15144. }
  15145. return dst;
  15146. };
  15147. fmtB = function(dst, neg, mant, exp, flt) {
  15148. var $ptr, _q, _r, buf, dst, esign, exp, flt, mant, n, neg, w, x;
  15149. buf = $clone(arrayType$3.zero(), arrayType$3);
  15150. w = 50;
  15151. exp = exp - ((flt.mantbits >> 0)) >> 0;
  15152. esign = 43;
  15153. if (exp < 0) {
  15154. esign = 45;
  15155. exp = -exp;
  15156. }
  15157. n = 0;
  15158. while (true) {
  15159. if (!(exp > 0 || n < 1)) { break; }
  15160. n = n + (1) >> 0;
  15161. w = w - (1) >> 0;
  15162. ((w < 0 || w >= buf.length) ? $throwRuntimeError("index out of range") : buf[w] = (((_r = exp % 10, _r === _r ? _r : $throwRuntimeError("integer divide by zero")) + 48 >> 0) << 24 >>> 24));
  15163. exp = (_q = exp / (10), (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero"));
  15164. }
  15165. w = w - (1) >> 0;
  15166. ((w < 0 || w >= buf.length) ? $throwRuntimeError("index out of range") : buf[w] = esign);
  15167. w = w - (1) >> 0;
  15168. ((w < 0 || w >= buf.length) ? $throwRuntimeError("index out of range") : buf[w] = 112);
  15169. n = 0;
  15170. while (true) {
  15171. if (!((mant.$high > 0 || (mant.$high === 0 && mant.$low > 0)) || n < 1)) { break; }
  15172. n = n + (1) >> 0;
  15173. w = w - (1) >> 0;
  15174. ((w < 0 || w >= buf.length) ? $throwRuntimeError("index out of range") : buf[w] = ((x = $div64(mant, new $Uint64(0, 10), true), new $Uint64(x.$high + 0, x.$low + 48)).$low << 24 >>> 24));
  15175. mant = $div64(mant, (new $Uint64(0, 10)), false);
  15176. }
  15177. if (neg) {
  15178. w = w - (1) >> 0;
  15179. ((w < 0 || w >= buf.length) ? $throwRuntimeError("index out of range") : buf[w] = 45);
  15180. }
  15181. return $appendSlice(dst, $subslice(new sliceType$6(buf), w));
  15182. };
  15183. max = function(a, b) {
  15184. var $ptr, a, b;
  15185. if (a > b) {
  15186. return a;
  15187. }
  15188. return b;
  15189. };
  15190. FormatUint = function(i, base) {
  15191. var $ptr, _tuple, base, i, s;
  15192. _tuple = formatBits(sliceType$6.nil, i, base, false, false); s = _tuple[1];
  15193. return s;
  15194. };
  15195. $pkg.FormatUint = FormatUint;
  15196. FormatInt = function(i, base) {
  15197. var $ptr, _tuple, base, i, s;
  15198. _tuple = formatBits(sliceType$6.nil, new $Uint64(i.$high, i.$low), base, (i.$high < 0 || (i.$high === 0 && i.$low < 0)), false); s = _tuple[1];
  15199. return s;
  15200. };
  15201. $pkg.FormatInt = FormatInt;
  15202. Itoa = function(i) {
  15203. var $ptr, i;
  15204. return FormatInt(new $Int64(0, i), 10);
  15205. };
  15206. $pkg.Itoa = Itoa;
  15207. AppendInt = function(dst, i, base) {
  15208. var $ptr, _tuple, base, dst, i;
  15209. _tuple = formatBits(dst, new $Uint64(i.$high, i.$low), base, (i.$high < 0 || (i.$high === 0 && i.$low < 0)), true); dst = _tuple[0];
  15210. return dst;
  15211. };
  15212. $pkg.AppendInt = AppendInt;
  15213. formatBits = function(dst, u, base, neg, append_) {
  15214. var $ptr, a, append_, b, b$1, base, d, dst, i, j, m, neg, q, q$1, s, s$1, u, x, x$1, x$2, x$3;
  15215. d = sliceType$6.nil;
  15216. s = "";
  15217. if (base < 2 || base > 36) {
  15218. $panic(new $String("strconv: illegal AppendInt/FormatInt base"));
  15219. }
  15220. a = $clone(arrayType$4.zero(), arrayType$4);
  15221. i = 65;
  15222. if (neg) {
  15223. u = new $Uint64(-u.$high, -u.$low);
  15224. }
  15225. if (base === 10) {
  15226. while (true) {
  15227. if (!((u.$high > 0 || (u.$high === 0 && u.$low >= 100)))) { break; }
  15228. i = i - (2) >> 0;
  15229. q = $div64(u, new $Uint64(0, 100), false);
  15230. j = ((x = $mul64(q, new $Uint64(0, 100)), new $Uint64(u.$high - x.$high, u.$low - x.$low)).$low >>> 0);
  15231. (x$1 = i + 1 >> 0, ((x$1 < 0 || x$1 >= a.length) ? $throwRuntimeError("index out of range") : a[x$1] = "0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789".charCodeAt(j)));
  15232. (x$2 = i + 0 >> 0, ((x$2 < 0 || x$2 >= a.length) ? $throwRuntimeError("index out of range") : a[x$2] = "0000000000111111111122222222223333333333444444444455555555556666666666777777777788888888889999999999".charCodeAt(j)));
  15233. u = q;
  15234. }
  15235. if ((u.$high > 0 || (u.$high === 0 && u.$low >= 10))) {
  15236. i = i - (1) >> 0;
  15237. q$1 = $div64(u, new $Uint64(0, 10), false);
  15238. ((i < 0 || i >= a.length) ? $throwRuntimeError("index out of range") : a[i] = "0123456789abcdefghijklmnopqrstuvwxyz".charCodeAt(((x$3 = $mul64(q$1, new $Uint64(0, 10)), new $Uint64(u.$high - x$3.$high, u.$low - x$3.$low)).$low >>> 0)));
  15239. u = q$1;
  15240. }
  15241. } else {
  15242. s$1 = ((base < 0 || base >= shifts.length) ? $throwRuntimeError("index out of range") : shifts[base]);
  15243. if (s$1 > 0) {
  15244. b = new $Uint64(0, base);
  15245. m = (b.$low >>> 0) - 1 >>> 0;
  15246. while (true) {
  15247. if (!((u.$high > b.$high || (u.$high === b.$high && u.$low >= b.$low)))) { break; }
  15248. i = i - (1) >> 0;
  15249. ((i < 0 || i >= a.length) ? $throwRuntimeError("index out of range") : a[i] = "0123456789abcdefghijklmnopqrstuvwxyz".charCodeAt((((u.$low >>> 0) & m) >>> 0)));
  15250. u = $shiftRightUint64(u, (s$1));
  15251. }
  15252. } else {
  15253. b$1 = new $Uint64(0, base);
  15254. while (true) {
  15255. if (!((u.$high > b$1.$high || (u.$high === b$1.$high && u.$low >= b$1.$low)))) { break; }
  15256. i = i - (1) >> 0;
  15257. ((i < 0 || i >= a.length) ? $throwRuntimeError("index out of range") : a[i] = "0123456789abcdefghijklmnopqrstuvwxyz".charCodeAt(($div64(u, b$1, true).$low >>> 0)));
  15258. u = $div64(u, (b$1), false);
  15259. }
  15260. }
  15261. }
  15262. i = i - (1) >> 0;
  15263. ((i < 0 || i >= a.length) ? $throwRuntimeError("index out of range") : a[i] = "0123456789abcdefghijklmnopqrstuvwxyz".charCodeAt((u.$low >>> 0)));
  15264. if (neg) {
  15265. i = i - (1) >> 0;
  15266. ((i < 0 || i >= a.length) ? $throwRuntimeError("index out of range") : a[i] = 45);
  15267. }
  15268. if (append_) {
  15269. d = $appendSlice(dst, $subslice(new sliceType$6(a), i));
  15270. return [d, s];
  15271. }
  15272. s = $bytesToString($subslice(new sliceType$6(a), i));
  15273. return [d, s];
  15274. };
  15275. quoteWith = function(s, quote, ASCIIonly) {
  15276. var $ptr, ASCIIonly, _q, _ref, _tuple, buf, n, quote, r, runeTmp, s, s$1, s$2, width;
  15277. runeTmp = $clone(arrayType$5.zero(), arrayType$5);
  15278. buf = $makeSlice(sliceType$6, 0, (_q = (3 * s.length >> 0) / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")));
  15279. buf = $append(buf, quote);
  15280. width = 0;
  15281. while (true) {
  15282. if (!(s.length > 0)) { break; }
  15283. r = (s.charCodeAt(0) >> 0);
  15284. width = 1;
  15285. if (r >= 128) {
  15286. _tuple = utf8.DecodeRuneInString(s); r = _tuple[0]; width = _tuple[1];
  15287. }
  15288. if ((width === 1) && (r === 65533)) {
  15289. buf = $appendSlice(buf, new sliceType$6($stringToBytes("\\x")));
  15290. buf = $append(buf, "0123456789abcdef".charCodeAt((s.charCodeAt(0) >>> 4 << 24 >>> 24)));
  15291. buf = $append(buf, "0123456789abcdef".charCodeAt(((s.charCodeAt(0) & 15) >>> 0)));
  15292. s = s.substring(width);
  15293. continue;
  15294. }
  15295. if ((r === (quote >> 0)) || (r === 92)) {
  15296. buf = $append(buf, 92);
  15297. buf = $append(buf, (r << 24 >>> 24));
  15298. s = s.substring(width);
  15299. continue;
  15300. }
  15301. if (ASCIIonly) {
  15302. if (r < 128 && IsPrint(r)) {
  15303. buf = $append(buf, (r << 24 >>> 24));
  15304. s = s.substring(width);
  15305. continue;
  15306. }
  15307. } else if (IsPrint(r)) {
  15308. n = utf8.EncodeRune(new sliceType$6(runeTmp), r);
  15309. buf = $appendSlice(buf, $subslice(new sliceType$6(runeTmp), 0, n));
  15310. s = s.substring(width);
  15311. continue;
  15312. }
  15313. _ref = r;
  15314. if (_ref === 7) {
  15315. buf = $appendSlice(buf, new sliceType$6($stringToBytes("\\a")));
  15316. } else if (_ref === 8) {
  15317. buf = $appendSlice(buf, new sliceType$6($stringToBytes("\\b")));
  15318. } else if (_ref === 12) {
  15319. buf = $appendSlice(buf, new sliceType$6($stringToBytes("\\f")));
  15320. } else if (_ref === 10) {
  15321. buf = $appendSlice(buf, new sliceType$6($stringToBytes("\\n")));
  15322. } else if (_ref === 13) {
  15323. buf = $appendSlice(buf, new sliceType$6($stringToBytes("\\r")));
  15324. } else if (_ref === 9) {
  15325. buf = $appendSlice(buf, new sliceType$6($stringToBytes("\\t")));
  15326. } else if (_ref === 11) {
  15327. buf = $appendSlice(buf, new sliceType$6($stringToBytes("\\v")));
  15328. } else {
  15329. if (r < 32) {
  15330. buf = $appendSlice(buf, new sliceType$6($stringToBytes("\\x")));
  15331. buf = $append(buf, "0123456789abcdef".charCodeAt((s.charCodeAt(0) >>> 4 << 24 >>> 24)));
  15332. buf = $append(buf, "0123456789abcdef".charCodeAt(((s.charCodeAt(0) & 15) >>> 0)));
  15333. } else if (r > 1114111) {
  15334. r = 65533;
  15335. buf = $appendSlice(buf, new sliceType$6($stringToBytes("\\u")));
  15336. s$1 = 12;
  15337. while (true) {
  15338. if (!(s$1 >= 0)) { break; }
  15339. buf = $append(buf, "0123456789abcdef".charCodeAt((((r >> $min((s$1 >>> 0), 31)) >> 0) & 15)));
  15340. s$1 = s$1 - (4) >> 0;
  15341. }
  15342. } else if (r < 65536) {
  15343. buf = $appendSlice(buf, new sliceType$6($stringToBytes("\\u")));
  15344. s$1 = 12;
  15345. while (true) {
  15346. if (!(s$1 >= 0)) { break; }
  15347. buf = $append(buf, "0123456789abcdef".charCodeAt((((r >> $min((s$1 >>> 0), 31)) >> 0) & 15)));
  15348. s$1 = s$1 - (4) >> 0;
  15349. }
  15350. } else {
  15351. buf = $appendSlice(buf, new sliceType$6($stringToBytes("\\U")));
  15352. s$2 = 28;
  15353. while (true) {
  15354. if (!(s$2 >= 0)) { break; }
  15355. buf = $append(buf, "0123456789abcdef".charCodeAt((((r >> $min((s$2 >>> 0), 31)) >> 0) & 15)));
  15356. s$2 = s$2 - (4) >> 0;
  15357. }
  15358. }
  15359. }
  15360. s = s.substring(width);
  15361. }
  15362. buf = $append(buf, quote);
  15363. return $bytesToString(buf);
  15364. };
  15365. Quote = function(s) {
  15366. var $ptr, s;
  15367. return quoteWith(s, 34, false);
  15368. };
  15369. $pkg.Quote = Quote;
  15370. QuoteToASCII = function(s) {
  15371. var $ptr, s;
  15372. return quoteWith(s, 34, true);
  15373. };
  15374. $pkg.QuoteToASCII = QuoteToASCII;
  15375. QuoteRune = function(r) {
  15376. var $ptr, r;
  15377. return quoteWith($encodeRune(r), 39, false);
  15378. };
  15379. $pkg.QuoteRune = QuoteRune;
  15380. AppendQuoteRune = function(dst, r) {
  15381. var $ptr, dst, r;
  15382. return $appendSlice(dst, new sliceType$6($stringToBytes(QuoteRune(r))));
  15383. };
  15384. $pkg.AppendQuoteRune = AppendQuoteRune;
  15385. QuoteRuneToASCII = function(r) {
  15386. var $ptr, r;
  15387. return quoteWith($encodeRune(r), 39, true);
  15388. };
  15389. $pkg.QuoteRuneToASCII = QuoteRuneToASCII;
  15390. AppendQuoteRuneToASCII = function(dst, r) {
  15391. var $ptr, dst, r;
  15392. return $appendSlice(dst, new sliceType$6($stringToBytes(QuoteRuneToASCII(r))));
  15393. };
  15394. $pkg.AppendQuoteRuneToASCII = AppendQuoteRuneToASCII;
  15395. CanBackquote = function(s) {
  15396. var $ptr, _tuple, r, s, wid;
  15397. while (true) {
  15398. if (!(s.length > 0)) { break; }
  15399. _tuple = utf8.DecodeRuneInString(s); r = _tuple[0]; wid = _tuple[1];
  15400. s = s.substring(wid);
  15401. if (wid > 1) {
  15402. if (r === 65279) {
  15403. return false;
  15404. }
  15405. continue;
  15406. }
  15407. if (r === 65533) {
  15408. return false;
  15409. }
  15410. if ((r < 32 && !((r === 9))) || (r === 96) || (r === 127)) {
  15411. return false;
  15412. }
  15413. }
  15414. return true;
  15415. };
  15416. $pkg.CanBackquote = CanBackquote;
  15417. unhex = function(b) {
  15418. var $ptr, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, b, c, ok, v;
  15419. v = 0;
  15420. ok = false;
  15421. c = (b >> 0);
  15422. if (48 <= c && c <= 57) {
  15423. _tmp = c - 48 >> 0; _tmp$1 = true; v = _tmp; ok = _tmp$1;
  15424. return [v, ok];
  15425. } else if (97 <= c && c <= 102) {
  15426. _tmp$2 = (c - 97 >> 0) + 10 >> 0; _tmp$3 = true; v = _tmp$2; ok = _tmp$3;
  15427. return [v, ok];
  15428. } else if (65 <= c && c <= 70) {
  15429. _tmp$4 = (c - 65 >> 0) + 10 >> 0; _tmp$5 = true; v = _tmp$4; ok = _tmp$5;
  15430. return [v, ok];
  15431. }
  15432. return [v, ok];
  15433. };
  15434. UnquoteChar = function(s, quote) {
  15435. var $ptr, _ref, _ref$1, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tuple, _tuple$1, c, c$1, err, j, j$1, multibyte, n, ok, quote, r, s, size, tail, v, v$1, value, x, x$1;
  15436. value = 0;
  15437. multibyte = false;
  15438. tail = "";
  15439. err = $ifaceNil;
  15440. c = s.charCodeAt(0);
  15441. if ((c === quote) && ((quote === 39) || (quote === 34))) {
  15442. err = $pkg.ErrSyntax;
  15443. return [value, multibyte, tail, err];
  15444. } else if (c >= 128) {
  15445. _tuple = utf8.DecodeRuneInString(s); r = _tuple[0]; size = _tuple[1];
  15446. _tmp = r; _tmp$1 = true; _tmp$2 = s.substring(size); _tmp$3 = $ifaceNil; value = _tmp; multibyte = _tmp$1; tail = _tmp$2; err = _tmp$3;
  15447. return [value, multibyte, tail, err];
  15448. } else if (!((c === 92))) {
  15449. _tmp$4 = (s.charCodeAt(0) >> 0); _tmp$5 = false; _tmp$6 = s.substring(1); _tmp$7 = $ifaceNil; value = _tmp$4; multibyte = _tmp$5; tail = _tmp$6; err = _tmp$7;
  15450. return [value, multibyte, tail, err];
  15451. }
  15452. if (s.length <= 1) {
  15453. err = $pkg.ErrSyntax;
  15454. return [value, multibyte, tail, err];
  15455. }
  15456. c$1 = s.charCodeAt(1);
  15457. s = s.substring(2);
  15458. _ref = c$1;
  15459. switch (0) { default: if (_ref === 97) {
  15460. value = 7;
  15461. } else if (_ref === 98) {
  15462. value = 8;
  15463. } else if (_ref === 102) {
  15464. value = 12;
  15465. } else if (_ref === 110) {
  15466. value = 10;
  15467. } else if (_ref === 114) {
  15468. value = 13;
  15469. } else if (_ref === 116) {
  15470. value = 9;
  15471. } else if (_ref === 118) {
  15472. value = 11;
  15473. } else if (_ref === 120 || _ref === 117 || _ref === 85) {
  15474. n = 0;
  15475. _ref$1 = c$1;
  15476. if (_ref$1 === 120) {
  15477. n = 2;
  15478. } else if (_ref$1 === 117) {
  15479. n = 4;
  15480. } else if (_ref$1 === 85) {
  15481. n = 8;
  15482. }
  15483. v = 0;
  15484. if (s.length < n) {
  15485. err = $pkg.ErrSyntax;
  15486. return [value, multibyte, tail, err];
  15487. }
  15488. j = 0;
  15489. while (true) {
  15490. if (!(j < n)) { break; }
  15491. _tuple$1 = unhex(s.charCodeAt(j)); x = _tuple$1[0]; ok = _tuple$1[1];
  15492. if (!ok) {
  15493. err = $pkg.ErrSyntax;
  15494. return [value, multibyte, tail, err];
  15495. }
  15496. v = (v << 4 >> 0) | x;
  15497. j = j + (1) >> 0;
  15498. }
  15499. s = s.substring(n);
  15500. if (c$1 === 120) {
  15501. value = v;
  15502. break;
  15503. }
  15504. if (v > 1114111) {
  15505. err = $pkg.ErrSyntax;
  15506. return [value, multibyte, tail, err];
  15507. }
  15508. value = v;
  15509. multibyte = true;
  15510. } else if (_ref === 48 || _ref === 49 || _ref === 50 || _ref === 51 || _ref === 52 || _ref === 53 || _ref === 54 || _ref === 55) {
  15511. v$1 = (c$1 >> 0) - 48 >> 0;
  15512. if (s.length < 2) {
  15513. err = $pkg.ErrSyntax;
  15514. return [value, multibyte, tail, err];
  15515. }
  15516. j$1 = 0;
  15517. while (true) {
  15518. if (!(j$1 < 2)) { break; }
  15519. x$1 = (s.charCodeAt(j$1) >> 0) - 48 >> 0;
  15520. if (x$1 < 0 || x$1 > 7) {
  15521. err = $pkg.ErrSyntax;
  15522. return [value, multibyte, tail, err];
  15523. }
  15524. v$1 = ((v$1 << 3 >> 0)) | x$1;
  15525. j$1 = j$1 + (1) >> 0;
  15526. }
  15527. s = s.substring(2);
  15528. if (v$1 > 255) {
  15529. err = $pkg.ErrSyntax;
  15530. return [value, multibyte, tail, err];
  15531. }
  15532. value = v$1;
  15533. } else if (_ref === 92) {
  15534. value = 92;
  15535. } else if (_ref === 39 || _ref === 34) {
  15536. if (!((c$1 === quote))) {
  15537. err = $pkg.ErrSyntax;
  15538. return [value, multibyte, tail, err];
  15539. }
  15540. value = (c$1 >> 0);
  15541. } else {
  15542. err = $pkg.ErrSyntax;
  15543. return [value, multibyte, tail, err];
  15544. } }
  15545. tail = s;
  15546. return [value, multibyte, tail, err];
  15547. };
  15548. $pkg.UnquoteChar = UnquoteChar;
  15549. Unquote = function(s) {
  15550. var $ptr, _q, _ref, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$16, _tmp$17, _tmp$18, _tmp$19, _tmp$2, _tmp$20, _tmp$21, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, buf, c, err, err$1, multibyte, n, n$1, quote, r, runeTmp, s, size, ss, t;
  15551. t = "";
  15552. err = $ifaceNil;
  15553. n = s.length;
  15554. if (n < 2) {
  15555. _tmp = ""; _tmp$1 = $pkg.ErrSyntax; t = _tmp; err = _tmp$1;
  15556. return [t, err];
  15557. }
  15558. quote = s.charCodeAt(0);
  15559. if (!((quote === s.charCodeAt((n - 1 >> 0))))) {
  15560. _tmp$2 = ""; _tmp$3 = $pkg.ErrSyntax; t = _tmp$2; err = _tmp$3;
  15561. return [t, err];
  15562. }
  15563. s = s.substring(1, (n - 1 >> 0));
  15564. if (quote === 96) {
  15565. if (contains(s, 96)) {
  15566. _tmp$4 = ""; _tmp$5 = $pkg.ErrSyntax; t = _tmp$4; err = _tmp$5;
  15567. return [t, err];
  15568. }
  15569. _tmp$6 = s; _tmp$7 = $ifaceNil; t = _tmp$6; err = _tmp$7;
  15570. return [t, err];
  15571. }
  15572. if (!((quote === 34)) && !((quote === 39))) {
  15573. _tmp$8 = ""; _tmp$9 = $pkg.ErrSyntax; t = _tmp$8; err = _tmp$9;
  15574. return [t, err];
  15575. }
  15576. if (contains(s, 10)) {
  15577. _tmp$10 = ""; _tmp$11 = $pkg.ErrSyntax; t = _tmp$10; err = _tmp$11;
  15578. return [t, err];
  15579. }
  15580. if (!contains(s, 92) && !contains(s, quote)) {
  15581. _ref = quote;
  15582. if (_ref === 34) {
  15583. _tmp$12 = s; _tmp$13 = $ifaceNil; t = _tmp$12; err = _tmp$13;
  15584. return [t, err];
  15585. } else if (_ref === 39) {
  15586. _tuple = utf8.DecodeRuneInString(s); r = _tuple[0]; size = _tuple[1];
  15587. if ((size === s.length) && (!((r === 65533)) || !((size === 1)))) {
  15588. _tmp$14 = s; _tmp$15 = $ifaceNil; t = _tmp$14; err = _tmp$15;
  15589. return [t, err];
  15590. }
  15591. }
  15592. }
  15593. runeTmp = $clone(arrayType$5.zero(), arrayType$5);
  15594. buf = $makeSlice(sliceType$6, 0, (_q = (3 * s.length >> 0) / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")));
  15595. while (true) {
  15596. if (!(s.length > 0)) { break; }
  15597. _tuple$1 = UnquoteChar(s, quote); c = _tuple$1[0]; multibyte = _tuple$1[1]; ss = _tuple$1[2]; err$1 = _tuple$1[3];
  15598. if (!($interfaceIsEqual(err$1, $ifaceNil))) {
  15599. _tmp$16 = ""; _tmp$17 = err$1; t = _tmp$16; err = _tmp$17;
  15600. return [t, err];
  15601. }
  15602. s = ss;
  15603. if (c < 128 || !multibyte) {
  15604. buf = $append(buf, (c << 24 >>> 24));
  15605. } else {
  15606. n$1 = utf8.EncodeRune(new sliceType$6(runeTmp), c);
  15607. buf = $appendSlice(buf, $subslice(new sliceType$6(runeTmp), 0, n$1));
  15608. }
  15609. if ((quote === 39) && !((s.length === 0))) {
  15610. _tmp$18 = ""; _tmp$19 = $pkg.ErrSyntax; t = _tmp$18; err = _tmp$19;
  15611. return [t, err];
  15612. }
  15613. }
  15614. _tmp$20 = $bytesToString(buf); _tmp$21 = $ifaceNil; t = _tmp$20; err = _tmp$21;
  15615. return [t, err];
  15616. };
  15617. $pkg.Unquote = Unquote;
  15618. contains = function(s, c) {
  15619. var $ptr, c, i, s;
  15620. i = 0;
  15621. while (true) {
  15622. if (!(i < s.length)) { break; }
  15623. if (s.charCodeAt(i) === c) {
  15624. return true;
  15625. }
  15626. i = i + (1) >> 0;
  15627. }
  15628. return false;
  15629. };
  15630. bsearch16 = function(a, x) {
  15631. var $ptr, _q, _tmp, _tmp$1, a, h, i, j, x;
  15632. _tmp = 0; _tmp$1 = a.$length; i = _tmp; j = _tmp$1;
  15633. while (true) {
  15634. if (!(i < j)) { break; }
  15635. h = i + (_q = ((j - i >> 0)) / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")) >> 0;
  15636. if (((h < 0 || h >= a.$length) ? $throwRuntimeError("index out of range") : a.$array[a.$offset + h]) < x) {
  15637. i = h + 1 >> 0;
  15638. } else {
  15639. j = h;
  15640. }
  15641. }
  15642. return i;
  15643. };
  15644. bsearch32 = function(a, x) {
  15645. var $ptr, _q, _tmp, _tmp$1, a, h, i, j, x;
  15646. _tmp = 0; _tmp$1 = a.$length; i = _tmp; j = _tmp$1;
  15647. while (true) {
  15648. if (!(i < j)) { break; }
  15649. h = i + (_q = ((j - i >> 0)) / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")) >> 0;
  15650. if (((h < 0 || h >= a.$length) ? $throwRuntimeError("index out of range") : a.$array[a.$offset + h]) < x) {
  15651. i = h + 1 >> 0;
  15652. } else {
  15653. j = h;
  15654. }
  15655. }
  15656. return i;
  15657. };
  15658. IsPrint = function(r) {
  15659. var $ptr, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, i, i$1, isNotPrint, isNotPrint$1, isPrint, isPrint$1, j, j$1, r, rr, rr$1, x, x$1, x$2, x$3;
  15660. if (r <= 255) {
  15661. if (32 <= r && r <= 126) {
  15662. return true;
  15663. }
  15664. if (161 <= r && r <= 255) {
  15665. return !((r === 173));
  15666. }
  15667. return false;
  15668. }
  15669. if (0 <= r && r < 65536) {
  15670. _tmp = (r << 16 >>> 16); _tmp$1 = isPrint16; _tmp$2 = isNotPrint16; rr = _tmp; isPrint = _tmp$1; isNotPrint = _tmp$2;
  15671. i = bsearch16(isPrint, rr);
  15672. if (i >= isPrint.$length || rr < (x = (i & ~1) >> 0, ((x < 0 || x >= isPrint.$length) ? $throwRuntimeError("index out of range") : isPrint.$array[isPrint.$offset + x])) || (x$1 = i | 1, ((x$1 < 0 || x$1 >= isPrint.$length) ? $throwRuntimeError("index out of range") : isPrint.$array[isPrint.$offset + x$1])) < rr) {
  15673. return false;
  15674. }
  15675. j = bsearch16(isNotPrint, rr);
  15676. return j >= isNotPrint.$length || !((((j < 0 || j >= isNotPrint.$length) ? $throwRuntimeError("index out of range") : isNotPrint.$array[isNotPrint.$offset + j]) === rr));
  15677. }
  15678. _tmp$3 = (r >>> 0); _tmp$4 = isPrint32; _tmp$5 = isNotPrint32; rr$1 = _tmp$3; isPrint$1 = _tmp$4; isNotPrint$1 = _tmp$5;
  15679. i$1 = bsearch32(isPrint$1, rr$1);
  15680. if (i$1 >= isPrint$1.$length || rr$1 < (x$2 = (i$1 & ~1) >> 0, ((x$2 < 0 || x$2 >= isPrint$1.$length) ? $throwRuntimeError("index out of range") : isPrint$1.$array[isPrint$1.$offset + x$2])) || (x$3 = i$1 | 1, ((x$3 < 0 || x$3 >= isPrint$1.$length) ? $throwRuntimeError("index out of range") : isPrint$1.$array[isPrint$1.$offset + x$3])) < rr$1) {
  15681. return false;
  15682. }
  15683. if (r >= 131072) {
  15684. return true;
  15685. }
  15686. r = r - (65536) >> 0;
  15687. j$1 = bsearch16(isNotPrint$1, (r << 16 >>> 16));
  15688. return j$1 >= isNotPrint$1.$length || !((((j$1 < 0 || j$1 >= isNotPrint$1.$length) ? $throwRuntimeError("index out of range") : isNotPrint$1.$array[isNotPrint$1.$offset + j$1]) === (r << 16 >>> 16)));
  15689. };
  15690. $pkg.IsPrint = IsPrint;
  15691. ptrType.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}];
  15692. ptrType$2.methods = [{prop: "set", name: "set", pkg: "strconv", typ: $funcType([$String], [$Bool], false)}, {prop: "floatBits", name: "floatBits", pkg: "strconv", typ: $funcType([ptrType$1], [$Uint64, $Bool], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Assign", name: "Assign", pkg: "", typ: $funcType([$Uint64], [], false)}, {prop: "Shift", name: "Shift", pkg: "", typ: $funcType([$Int], [], false)}, {prop: "Round", name: "Round", pkg: "", typ: $funcType([$Int], [], false)}, {prop: "RoundDown", name: "RoundDown", pkg: "", typ: $funcType([$Int], [], false)}, {prop: "RoundUp", name: "RoundUp", pkg: "", typ: $funcType([$Int], [], false)}, {prop: "RoundedInteger", name: "RoundedInteger", pkg: "", typ: $funcType([], [$Uint64], false)}];
  15693. ptrType$4.methods = [{prop: "floatBits", name: "floatBits", pkg: "strconv", typ: $funcType([ptrType$1], [$Uint64, $Bool], false)}, {prop: "AssignComputeBounds", name: "AssignComputeBounds", pkg: "", typ: $funcType([$Uint64, $Int, $Bool, ptrType$1], [extFloat, extFloat], false)}, {prop: "Normalize", name: "Normalize", pkg: "", typ: $funcType([], [$Uint], false)}, {prop: "Multiply", name: "Multiply", pkg: "", typ: $funcType([extFloat], [], false)}, {prop: "AssignDecimal", name: "AssignDecimal", pkg: "", typ: $funcType([$Uint64, $Int, $Bool, $Bool, ptrType$1], [$Bool], false)}, {prop: "frexp10", name: "frexp10", pkg: "strconv", typ: $funcType([], [$Int, $Int], false)}, {prop: "FixedDecimal", name: "FixedDecimal", pkg: "", typ: $funcType([ptrType$3, $Int], [$Bool], false)}, {prop: "ShortestDecimal", name: "ShortestDecimal", pkg: "", typ: $funcType([ptrType$3, ptrType$4, ptrType$4], [$Bool], false)}];
  15694. NumError.init([{prop: "Func", name: "Func", pkg: "", typ: $String, tag: ""}, {prop: "Num", name: "Num", pkg: "", typ: $String, tag: ""}, {prop: "Err", name: "Err", pkg: "", typ: $error, tag: ""}]);
  15695. decimal.init([{prop: "d", name: "d", pkg: "strconv", typ: arrayType$6, tag: ""}, {prop: "nd", name: "nd", pkg: "strconv", typ: $Int, tag: ""}, {prop: "dp", name: "dp", pkg: "strconv", typ: $Int, tag: ""}, {prop: "neg", name: "neg", pkg: "strconv", typ: $Bool, tag: ""}, {prop: "trunc", name: "trunc", pkg: "strconv", typ: $Bool, tag: ""}]);
  15696. leftCheat.init([{prop: "delta", name: "delta", pkg: "strconv", typ: $Int, tag: ""}, {prop: "cutoff", name: "cutoff", pkg: "strconv", typ: $String, tag: ""}]);
  15697. extFloat.init([{prop: "mant", name: "mant", pkg: "strconv", typ: $Uint64, tag: ""}, {prop: "exp", name: "exp", pkg: "strconv", typ: $Int, tag: ""}, {prop: "neg", name: "neg", pkg: "strconv", typ: $Bool, tag: ""}]);
  15698. floatInfo.init([{prop: "mantbits", name: "mantbits", pkg: "strconv", typ: $Uint, tag: ""}, {prop: "expbits", name: "expbits", pkg: "strconv", typ: $Uint, tag: ""}, {prop: "bias", name: "bias", pkg: "strconv", typ: $Int, tag: ""}]);
  15699. decimalSlice.init([{prop: "d", name: "d", pkg: "strconv", typ: sliceType$6, tag: ""}, {prop: "nd", name: "nd", pkg: "strconv", typ: $Int, tag: ""}, {prop: "dp", name: "dp", pkg: "strconv", typ: $Int, tag: ""}, {prop: "neg", name: "neg", pkg: "strconv", typ: $Bool, tag: ""}]);
  15700. $init = function() {
  15701. $pkg.$init = function() {};
  15702. /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  15703. $r = errors.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  15704. $r = math.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  15705. $r = utf8.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  15706. optimize = true;
  15707. powtab = new sliceType([1, 3, 6, 9, 13, 16, 19, 23, 26]);
  15708. float64pow10 = new sliceType$1([1, 10, 100, 1000, 10000, 100000, 1e+06, 1e+07, 1e+08, 1e+09, 1e+10, 1e+11, 1e+12, 1e+13, 1e+14, 1e+15, 1e+16, 1e+17, 1e+18, 1e+19, 1e+20, 1e+21, 1e+22]);
  15709. float32pow10 = new sliceType$2([1, 10, 100, 1000, 10000, 100000, 1e+06, 1e+07, 1e+08, 1e+09, 1e+10]);
  15710. $pkg.ErrRange = errors.New("value out of range");
  15711. $pkg.ErrSyntax = errors.New("invalid syntax");
  15712. leftcheats = new sliceType$3([new leftCheat.ptr(0, ""), new leftCheat.ptr(1, "5"), new leftCheat.ptr(1, "25"), new leftCheat.ptr(1, "125"), new leftCheat.ptr(2, "625"), new leftCheat.ptr(2, "3125"), new leftCheat.ptr(2, "15625"), new leftCheat.ptr(3, "78125"), new leftCheat.ptr(3, "390625"), new leftCheat.ptr(3, "1953125"), new leftCheat.ptr(4, "9765625"), new leftCheat.ptr(4, "48828125"), new leftCheat.ptr(4, "244140625"), new leftCheat.ptr(4, "1220703125"), new leftCheat.ptr(5, "6103515625"), new leftCheat.ptr(5, "30517578125"), new leftCheat.ptr(5, "152587890625"), new leftCheat.ptr(6, "762939453125"), new leftCheat.ptr(6, "3814697265625"), new leftCheat.ptr(6, "19073486328125"), new leftCheat.ptr(7, "95367431640625"), new leftCheat.ptr(7, "476837158203125"), new leftCheat.ptr(7, "2384185791015625"), new leftCheat.ptr(7, "11920928955078125"), new leftCheat.ptr(8, "59604644775390625"), new leftCheat.ptr(8, "298023223876953125"), new leftCheat.ptr(8, "1490116119384765625"), new leftCheat.ptr(9, "7450580596923828125")]);
  15713. smallPowersOfTen = $toNativeArray($kindStruct, [new extFloat.ptr(new $Uint64(2147483648, 0), -63, false), new extFloat.ptr(new $Uint64(2684354560, 0), -60, false), new extFloat.ptr(new $Uint64(3355443200, 0), -57, false), new extFloat.ptr(new $Uint64(4194304000, 0), -54, false), new extFloat.ptr(new $Uint64(2621440000, 0), -50, false), new extFloat.ptr(new $Uint64(3276800000, 0), -47, false), new extFloat.ptr(new $Uint64(4096000000, 0), -44, false), new extFloat.ptr(new $Uint64(2560000000, 0), -40, false)]);
  15714. powersOfTen = $toNativeArray($kindStruct, [new extFloat.ptr(new $Uint64(4203730336, 136053384), -1220, false), new extFloat.ptr(new $Uint64(3132023167, 2722021238), -1193, false), new extFloat.ptr(new $Uint64(2333539104, 810921078), -1166, false), new extFloat.ptr(new $Uint64(3477244234, 1573795306), -1140, false), new extFloat.ptr(new $Uint64(2590748842, 1432697645), -1113, false), new extFloat.ptr(new $Uint64(3860516611, 1025131999), -1087, false), new extFloat.ptr(new $Uint64(2876309015, 3348809418), -1060, false), new extFloat.ptr(new $Uint64(4286034428, 3200048207), -1034, false), new extFloat.ptr(new $Uint64(3193344495, 1097586188), -1007, false), new extFloat.ptr(new $Uint64(2379227053, 2424306748), -980, false), new extFloat.ptr(new $Uint64(3545324584, 827693699), -954, false), new extFloat.ptr(new $Uint64(2641472655, 2913388981), -927, false), new extFloat.ptr(new $Uint64(3936100983, 602835915), -901, false), new extFloat.ptr(new $Uint64(2932623761, 1081627501), -874, false), new extFloat.ptr(new $Uint64(2184974969, 1572261463), -847, false), new extFloat.ptr(new $Uint64(3255866422, 1308317239), -821, false), new extFloat.ptr(new $Uint64(2425809519, 944281679), -794, false), new extFloat.ptr(new $Uint64(3614737867, 629291719), -768, false), new extFloat.ptr(new $Uint64(2693189581, 2545915892), -741, false), new extFloat.ptr(new $Uint64(4013165208, 388672741), -715, false), new extFloat.ptr(new $Uint64(2990041083, 708162190), -688, false), new extFloat.ptr(new $Uint64(2227754207, 3536207675), -661, false), new extFloat.ptr(new $Uint64(3319612455, 450088378), -635, false), new extFloat.ptr(new $Uint64(2473304014, 3139815830), -608, false), new extFloat.ptr(new $Uint64(3685510180, 2103616900), -582, false), new extFloat.ptr(new $Uint64(2745919064, 224385782), -555, false), new extFloat.ptr(new $Uint64(4091738259, 3737383206), -529, false), new extFloat.ptr(new $Uint64(3048582568, 2868871352), -502, false), new extFloat.ptr(new $Uint64(2271371013, 1820084875), -475, false), new extFloat.ptr(new $Uint64(3384606560, 885076051), -449, false), new extFloat.ptr(new $Uint64(2521728396, 2444895829), -422, false), new extFloat.ptr(new $Uint64(3757668132, 1881767613), -396, false), new extFloat.ptr(new $Uint64(2799680927, 3102062735), -369, false), new extFloat.ptr(new $Uint64(4171849679, 2289335700), -343, false), new extFloat.ptr(new $Uint64(3108270227, 2410191823), -316, false), new extFloat.ptr(new $Uint64(2315841784, 3205436779), -289, false), new extFloat.ptr(new $Uint64(3450873173, 1697722806), -263, false), new extFloat.ptr(new $Uint64(2571100870, 3497754540), -236, false), new extFloat.ptr(new $Uint64(3831238852, 707476230), -210, false), new extFloat.ptr(new $Uint64(2854495385, 1769181907), -183, false), new extFloat.ptr(new $Uint64(4253529586, 2197867022), -157, false), new extFloat.ptr(new $Uint64(3169126500, 2450594539), -130, false), new extFloat.ptr(new $Uint64(2361183241, 1867548876), -103, false), new extFloat.ptr(new $Uint64(3518437208, 3793315116), -77, false), new extFloat.ptr(new $Uint64(2621440000, 0), -50, false), new extFloat.ptr(new $Uint64(3906250000, 0), -24, false), new extFloat.ptr(new $Uint64(2910383045, 2892103680), 3, false), new extFloat.ptr(new $Uint64(2168404344, 4170451332), 30, false), new extFloat.ptr(new $Uint64(3231174267, 3372684723), 56, false), new extFloat.ptr(new $Uint64(2407412430, 2078956656), 83, false), new extFloat.ptr(new $Uint64(3587324068, 2884206696), 109, false), new extFloat.ptr(new $Uint64(2672764710, 395977285), 136, false), new extFloat.ptr(new $Uint64(3982729777, 3569679143), 162, false), new extFloat.ptr(new $Uint64(2967364920, 2361961896), 189, false), new extFloat.ptr(new $Uint64(2210859150, 447440347), 216, false), new extFloat.ptr(new $Uint64(3294436857, 1114709402), 242, false), new extFloat.ptr(new $Uint64(2454546732, 2786846552), 269, false), new extFloat.ptr(new $Uint64(3657559652, 443583978), 295, false), new extFloat.ptr(new $Uint64(2725094297, 2599384906), 322, false), new extFloat.ptr(new $Uint64(4060706939, 3028118405), 348, false), new extFloat.ptr(new $Uint64(3025462433, 2044532855), 375, false), new extFloat.ptr(new $Uint64(2254145170, 1536935362), 402, false), new extFloat.ptr(new $Uint64(3358938053, 3365297469), 428, false), new extFloat.ptr(new $Uint64(2502603868, 4204241075), 455, false), new extFloat.ptr(new $Uint64(3729170365, 2577424355), 481, false), new extFloat.ptr(new $Uint64(2778448436, 3677981733), 508, false), new extFloat.ptr(new $Uint64(4140210802, 2744688476), 534, false), new extFloat.ptr(new $Uint64(3084697427, 1424604878), 561, false), new extFloat.ptr(new $Uint64(2298278679, 4062331362), 588, false), new extFloat.ptr(new $Uint64(3424702107, 3546052773), 614, false), new extFloat.ptr(new $Uint64(2551601907, 2065781727), 641, false), new extFloat.ptr(new $Uint64(3802183132, 2535403578), 667, false), new extFloat.ptr(new $Uint64(2832847187, 1558426518), 694, false), new extFloat.ptr(new $Uint64(4221271257, 2762425404), 720, false), new extFloat.ptr(new $Uint64(3145092172, 2812560400), 747, false), new extFloat.ptr(new $Uint64(2343276271, 3057687578), 774, false), new extFloat.ptr(new $Uint64(3491753744, 2790753324), 800, false), new extFloat.ptr(new $Uint64(2601559269, 3918606633), 827, false), new extFloat.ptr(new $Uint64(3876625403, 2711358621), 853, false), new extFloat.ptr(new $Uint64(2888311001, 1648096297), 880, false), new extFloat.ptr(new $Uint64(2151959390, 2057817989), 907, false), new extFloat.ptr(new $Uint64(3206669376, 61660461), 933, false), new extFloat.ptr(new $Uint64(2389154863, 1581580175), 960, false), new extFloat.ptr(new $Uint64(3560118173, 2626467905), 986, false), new extFloat.ptr(new $Uint64(2652494738, 3034782633), 1013, false), new extFloat.ptr(new $Uint64(3952525166, 3135207385), 1039, false), new extFloat.ptr(new $Uint64(2944860731, 2616258155), 1066, false)]);
  15715. uint64pow10 = $toNativeArray($kindUint64, [new $Uint64(0, 1), new $Uint64(0, 10), new $Uint64(0, 100), new $Uint64(0, 1000), new $Uint64(0, 10000), new $Uint64(0, 100000), new $Uint64(0, 1000000), new $Uint64(0, 10000000), new $Uint64(0, 100000000), new $Uint64(0, 1000000000), new $Uint64(2, 1410065408), new $Uint64(23, 1215752192), new $Uint64(232, 3567587328), new $Uint64(2328, 1316134912), new $Uint64(23283, 276447232), new $Uint64(232830, 2764472320), new $Uint64(2328306, 1874919424), new $Uint64(23283064, 1569325056), new $Uint64(232830643, 2808348672), new $Uint64(2328306436, 2313682944)]);
  15716. float32info = new floatInfo.ptr(23, 8, -127);
  15717. float64info = new floatInfo.ptr(52, 11, -1023);
  15718. isPrint16 = new sliceType$4([32, 126, 161, 887, 890, 895, 900, 1366, 1369, 1418, 1421, 1479, 1488, 1514, 1520, 1524, 1542, 1563, 1566, 1805, 1808, 1866, 1869, 1969, 1984, 2042, 2048, 2093, 2096, 2139, 2142, 2142, 2208, 2226, 2276, 2444, 2447, 2448, 2451, 2482, 2486, 2489, 2492, 2500, 2503, 2504, 2507, 2510, 2519, 2519, 2524, 2531, 2534, 2555, 2561, 2570, 2575, 2576, 2579, 2617, 2620, 2626, 2631, 2632, 2635, 2637, 2641, 2641, 2649, 2654, 2662, 2677, 2689, 2745, 2748, 2765, 2768, 2768, 2784, 2787, 2790, 2801, 2817, 2828, 2831, 2832, 2835, 2873, 2876, 2884, 2887, 2888, 2891, 2893, 2902, 2903, 2908, 2915, 2918, 2935, 2946, 2954, 2958, 2965, 2969, 2975, 2979, 2980, 2984, 2986, 2990, 3001, 3006, 3010, 3014, 3021, 3024, 3024, 3031, 3031, 3046, 3066, 3072, 3129, 3133, 3149, 3157, 3161, 3168, 3171, 3174, 3183, 3192, 3257, 3260, 3277, 3285, 3286, 3294, 3299, 3302, 3314, 3329, 3386, 3389, 3406, 3415, 3415, 3424, 3427, 3430, 3445, 3449, 3455, 3458, 3478, 3482, 3517, 3520, 3526, 3530, 3530, 3535, 3551, 3558, 3567, 3570, 3572, 3585, 3642, 3647, 3675, 3713, 3716, 3719, 3722, 3725, 3725, 3732, 3751, 3754, 3773, 3776, 3789, 3792, 3801, 3804, 3807, 3840, 3948, 3953, 4058, 4096, 4295, 4301, 4301, 4304, 4685, 4688, 4701, 4704, 4749, 4752, 4789, 4792, 4805, 4808, 4885, 4888, 4954, 4957, 4988, 4992, 5017, 5024, 5108, 5120, 5788, 5792, 5880, 5888, 5908, 5920, 5942, 5952, 5971, 5984, 6003, 6016, 6109, 6112, 6121, 6128, 6137, 6144, 6157, 6160, 6169, 6176, 6263, 6272, 6314, 6320, 6389, 6400, 6443, 6448, 6459, 6464, 6464, 6468, 6509, 6512, 6516, 6528, 6571, 6576, 6601, 6608, 6618, 6622, 6683, 6686, 6780, 6783, 6793, 6800, 6809, 6816, 6829, 6832, 6846, 6912, 6987, 6992, 7036, 7040, 7155, 7164, 7223, 7227, 7241, 7245, 7295, 7360, 7367, 7376, 7417, 7424, 7669, 7676, 7957, 7960, 7965, 7968, 8005, 8008, 8013, 8016, 8061, 8064, 8147, 8150, 8175, 8178, 8190, 8208, 8231, 8240, 8286, 8304, 8305, 8308, 8348, 8352, 8381, 8400, 8432, 8448, 8585, 8592, 9210, 9216, 9254, 9280, 9290, 9312, 11123, 11126, 11157, 11160, 11193, 11197, 11217, 11264, 11507, 11513, 11559, 11565, 11565, 11568, 11623, 11631, 11632, 11647, 11670, 11680, 11842, 11904, 12019, 12032, 12245, 12272, 12283, 12289, 12438, 12441, 12543, 12549, 12589, 12593, 12730, 12736, 12771, 12784, 19893, 19904, 40908, 40960, 42124, 42128, 42182, 42192, 42539, 42560, 42743, 42752, 42925, 42928, 42929, 42999, 43051, 43056, 43065, 43072, 43127, 43136, 43204, 43214, 43225, 43232, 43259, 43264, 43347, 43359, 43388, 43392, 43481, 43486, 43574, 43584, 43597, 43600, 43609, 43612, 43714, 43739, 43766, 43777, 43782, 43785, 43790, 43793, 43798, 43808, 43871, 43876, 43877, 43968, 44013, 44016, 44025, 44032, 55203, 55216, 55238, 55243, 55291, 63744, 64109, 64112, 64217, 64256, 64262, 64275, 64279, 64285, 64449, 64467, 64831, 64848, 64911, 64914, 64967, 65008, 65021, 65024, 65049, 65056, 65069, 65072, 65131, 65136, 65276, 65281, 65470, 65474, 65479, 65482, 65487, 65490, 65495, 65498, 65500, 65504, 65518, 65532, 65533]);
  15719. isNotPrint16 = new sliceType$4([173, 907, 909, 930, 1328, 1376, 1416, 1424, 1757, 2111, 2436, 2473, 2481, 2526, 2564, 2601, 2609, 2612, 2615, 2621, 2653, 2692, 2702, 2706, 2729, 2737, 2740, 2758, 2762, 2820, 2857, 2865, 2868, 2910, 2948, 2961, 2971, 2973, 3017, 3076, 3085, 3089, 3113, 3141, 3145, 3159, 3200, 3204, 3213, 3217, 3241, 3252, 3269, 3273, 3295, 3312, 3332, 3341, 3345, 3397, 3401, 3460, 3506, 3516, 3541, 3543, 3715, 3721, 3736, 3744, 3748, 3750, 3756, 3770, 3781, 3783, 3912, 3992, 4029, 4045, 4294, 4681, 4695, 4697, 4745, 4785, 4799, 4801, 4823, 4881, 5760, 5901, 5997, 6001, 6431, 6751, 7415, 8024, 8026, 8028, 8030, 8117, 8133, 8156, 8181, 8335, 11209, 11311, 11359, 11558, 11687, 11695, 11703, 11711, 11719, 11727, 11735, 11743, 11930, 12352, 12687, 12831, 13055, 42654, 42895, 43470, 43519, 43815, 43823, 64311, 64317, 64319, 64322, 64325, 65107, 65127, 65141, 65511]);
  15720. isPrint32 = new sliceType$5([65536, 65613, 65616, 65629, 65664, 65786, 65792, 65794, 65799, 65843, 65847, 65932, 65936, 65947, 65952, 65952, 66000, 66045, 66176, 66204, 66208, 66256, 66272, 66299, 66304, 66339, 66352, 66378, 66384, 66426, 66432, 66499, 66504, 66517, 66560, 66717, 66720, 66729, 66816, 66855, 66864, 66915, 66927, 66927, 67072, 67382, 67392, 67413, 67424, 67431, 67584, 67589, 67592, 67640, 67644, 67644, 67647, 67742, 67751, 67759, 67840, 67867, 67871, 67897, 67903, 67903, 67968, 68023, 68030, 68031, 68096, 68102, 68108, 68147, 68152, 68154, 68159, 68167, 68176, 68184, 68192, 68255, 68288, 68326, 68331, 68342, 68352, 68405, 68409, 68437, 68440, 68466, 68472, 68497, 68505, 68508, 68521, 68527, 68608, 68680, 69216, 69246, 69632, 69709, 69714, 69743, 69759, 69825, 69840, 69864, 69872, 69881, 69888, 69955, 69968, 70006, 70016, 70088, 70093, 70093, 70096, 70106, 70113, 70132, 70144, 70205, 70320, 70378, 70384, 70393, 70401, 70412, 70415, 70416, 70419, 70457, 70460, 70468, 70471, 70472, 70475, 70477, 70487, 70487, 70493, 70499, 70502, 70508, 70512, 70516, 70784, 70855, 70864, 70873, 71040, 71093, 71096, 71113, 71168, 71236, 71248, 71257, 71296, 71351, 71360, 71369, 71840, 71922, 71935, 71935, 72384, 72440, 73728, 74648, 74752, 74868, 77824, 78894, 92160, 92728, 92736, 92777, 92782, 92783, 92880, 92909, 92912, 92917, 92928, 92997, 93008, 93047, 93053, 93071, 93952, 94020, 94032, 94078, 94095, 94111, 110592, 110593, 113664, 113770, 113776, 113788, 113792, 113800, 113808, 113817, 113820, 113823, 118784, 119029, 119040, 119078, 119081, 119154, 119163, 119261, 119296, 119365, 119552, 119638, 119648, 119665, 119808, 119967, 119970, 119970, 119973, 119974, 119977, 120074, 120077, 120134, 120138, 120485, 120488, 120779, 120782, 120831, 124928, 125124, 125127, 125142, 126464, 126500, 126503, 126523, 126530, 126530, 126535, 126548, 126551, 126564, 126567, 126619, 126625, 126651, 126704, 126705, 126976, 127019, 127024, 127123, 127136, 127150, 127153, 127221, 127232, 127244, 127248, 127339, 127344, 127386, 127462, 127490, 127504, 127546, 127552, 127560, 127568, 127569, 127744, 127788, 127792, 127869, 127872, 127950, 127956, 127991, 128000, 128330, 128336, 128578, 128581, 128719, 128736, 128748, 128752, 128755, 128768, 128883, 128896, 128980, 129024, 129035, 129040, 129095, 129104, 129113, 129120, 129159, 129168, 129197, 131072, 173782, 173824, 177972, 177984, 178205, 194560, 195101, 917760, 917999]);
  15721. isNotPrint32 = new sliceType$4([12, 39, 59, 62, 926, 2057, 2102, 2134, 2564, 2580, 2584, 4285, 4405, 4626, 4868, 4905, 4913, 4916, 9327, 27231, 27482, 27490, 54357, 54429, 54445, 54458, 54460, 54468, 54534, 54549, 54557, 54586, 54591, 54597, 54609, 60932, 60960, 60963, 60968, 60979, 60984, 60986, 61000, 61002, 61004, 61008, 61011, 61016, 61018, 61020, 61022, 61024, 61027, 61035, 61043, 61048, 61053, 61055, 61066, 61092, 61098, 61632, 61648, 61743, 62719, 62842, 62884]);
  15722. shifts = $toNativeArray($kindUint, [0, 0, 1, 0, 2, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0]);
  15723. /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
  15724. };
  15725. $pkg.$init = $init;
  15726. return $pkg;
  15727. })();
  15728. $packages["reflect"] = (function() {
  15729. var $pkg = {}, $init, js, math, runtime, strconv, sync, mapIter, Type, Kind, rtype, typeAlg, method, uncommonType, ChanDir, arrayType, chanType, funcType, imethod, interfaceType, mapType, ptrType, sliceType, structField, structType, Method, StructField, StructTag, fieldScan, Value, flag, ValueError, nonEmptyInterface, ptrType$1, sliceType$1, ptrType$3, funcType$1, sliceType$2, ptrType$4, arrayType$1, ptrType$5, ptrType$6, sliceType$3, sliceType$4, sliceType$5, sliceType$6, structType$5, sliceType$7, ptrType$7, arrayType$2, structType$6, ptrType$8, sliceType$8, ptrType$9, sliceType$9, sliceType$10, ptrType$10, ptrType$11, ptrType$12, sliceType$11, sliceType$12, ptrType$13, ptrType$18, sliceType$14, sliceType$15, funcType$3, funcType$4, funcType$5, arrayType$3, ptrType$21, initialized, stringPtrMap, callHelper, jsObjectPtr, selectHelper, kindNames, uint8Type, init, jsType, reflectType, setKindType, newStringPtr, isWrapped, copyStruct, makeValue, MakeSlice, TypeOf, ValueOf, MapOf, SliceOf, Zero, unsafe_New, makeInt, memmove, makemap, mapaccess, mapassign, mapdelete, mapiterinit, mapiterkey, mapiternext, maplen, cvtDirect, Copy, methodReceiver, valueInterface, ifaceE2I, methodName, makeMethodValue, wrapJsObject, unwrapJsObject, getJsTag, chanrecv, chansend, DeepEqual, deepValueEqualJs, PtrTo, implements$1, directlyAssignable, haveIdenticalUnderlyingType, toType, ifaceIndir, overflowFloat32, typesMustMatch, MakeMap, Indirect, New, convertOp, makeFloat, makeComplex, makeString, makeBytes, makeRunes, cvtInt, cvtUint, cvtFloatInt, cvtFloatUint, cvtIntFloat, cvtUintFloat, cvtFloat, cvtComplex, cvtIntString, cvtUintString, cvtBytesString, cvtStringBytes, cvtRunesString, cvtStringRunes, cvtT2I, cvtI2I;
  15730. js = $packages["github.com/gopherjs/gopherjs/js"];
  15731. math = $packages["math"];
  15732. runtime = $packages["runtime"];
  15733. strconv = $packages["strconv"];
  15734. sync = $packages["sync"];
  15735. mapIter = $pkg.mapIter = $newType(0, $kindStruct, "reflect.mapIter", "mapIter", "reflect", function(t_, m_, keys_, i_) {
  15736. this.$val = this;
  15737. if (arguments.length === 0) {
  15738. this.t = $ifaceNil;
  15739. this.m = null;
  15740. this.keys = null;
  15741. this.i = 0;
  15742. return;
  15743. }
  15744. this.t = t_;
  15745. this.m = m_;
  15746. this.keys = keys_;
  15747. this.i = i_;
  15748. });
  15749. Type = $pkg.Type = $newType(8, $kindInterface, "reflect.Type", "Type", "reflect", null);
  15750. Kind = $pkg.Kind = $newType(4, $kindUint, "reflect.Kind", "Kind", "reflect", null);
  15751. rtype = $pkg.rtype = $newType(0, $kindStruct, "reflect.rtype", "rtype", "reflect", function(size_, hash_, _$2_, align_, fieldAlign_, kind_, alg_, gc_, string_, uncommonType_, ptrToThis_, zero_) {
  15752. this.$val = this;
  15753. if (arguments.length === 0) {
  15754. this.size = 0;
  15755. this.hash = 0;
  15756. this._$2 = 0;
  15757. this.align = 0;
  15758. this.fieldAlign = 0;
  15759. this.kind = 0;
  15760. this.alg = ptrType$4.nil;
  15761. this.gc = arrayType$1.zero();
  15762. this.string = ptrType$5.nil;
  15763. this.uncommonType = ptrType$6.nil;
  15764. this.ptrToThis = ptrType$1.nil;
  15765. this.zero = 0;
  15766. return;
  15767. }
  15768. this.size = size_;
  15769. this.hash = hash_;
  15770. this._$2 = _$2_;
  15771. this.align = align_;
  15772. this.fieldAlign = fieldAlign_;
  15773. this.kind = kind_;
  15774. this.alg = alg_;
  15775. this.gc = gc_;
  15776. this.string = string_;
  15777. this.uncommonType = uncommonType_;
  15778. this.ptrToThis = ptrToThis_;
  15779. this.zero = zero_;
  15780. });
  15781. typeAlg = $pkg.typeAlg = $newType(0, $kindStruct, "reflect.typeAlg", "typeAlg", "reflect", function(hash_, equal_) {
  15782. this.$val = this;
  15783. if (arguments.length === 0) {
  15784. this.hash = $throwNilPointerError;
  15785. this.equal = $throwNilPointerError;
  15786. return;
  15787. }
  15788. this.hash = hash_;
  15789. this.equal = equal_;
  15790. });
  15791. method = $pkg.method = $newType(0, $kindStruct, "reflect.method", "method", "reflect", function(name_, pkgPath_, mtyp_, typ_, ifn_, tfn_) {
  15792. this.$val = this;
  15793. if (arguments.length === 0) {
  15794. this.name = ptrType$5.nil;
  15795. this.pkgPath = ptrType$5.nil;
  15796. this.mtyp = ptrType$1.nil;
  15797. this.typ = ptrType$1.nil;
  15798. this.ifn = 0;
  15799. this.tfn = 0;
  15800. return;
  15801. }
  15802. this.name = name_;
  15803. this.pkgPath = pkgPath_;
  15804. this.mtyp = mtyp_;
  15805. this.typ = typ_;
  15806. this.ifn = ifn_;
  15807. this.tfn = tfn_;
  15808. });
  15809. uncommonType = $pkg.uncommonType = $newType(0, $kindStruct, "reflect.uncommonType", "uncommonType", "reflect", function(name_, pkgPath_, methods_) {
  15810. this.$val = this;
  15811. if (arguments.length === 0) {
  15812. this.name = ptrType$5.nil;
  15813. this.pkgPath = ptrType$5.nil;
  15814. this.methods = sliceType$3.nil;
  15815. return;
  15816. }
  15817. this.name = name_;
  15818. this.pkgPath = pkgPath_;
  15819. this.methods = methods_;
  15820. });
  15821. ChanDir = $pkg.ChanDir = $newType(4, $kindInt, "reflect.ChanDir", "ChanDir", "reflect", null);
  15822. arrayType = $pkg.arrayType = $newType(0, $kindStruct, "reflect.arrayType", "arrayType", "reflect", function(rtype_, elem_, slice_, len_) {
  15823. this.$val = this;
  15824. if (arguments.length === 0) {
  15825. this.rtype = new rtype.ptr();
  15826. this.elem = ptrType$1.nil;
  15827. this.slice = ptrType$1.nil;
  15828. this.len = 0;
  15829. return;
  15830. }
  15831. this.rtype = rtype_;
  15832. this.elem = elem_;
  15833. this.slice = slice_;
  15834. this.len = len_;
  15835. });
  15836. chanType = $pkg.chanType = $newType(0, $kindStruct, "reflect.chanType", "chanType", "reflect", function(rtype_, elem_, dir_) {
  15837. this.$val = this;
  15838. if (arguments.length === 0) {
  15839. this.rtype = new rtype.ptr();
  15840. this.elem = ptrType$1.nil;
  15841. this.dir = 0;
  15842. return;
  15843. }
  15844. this.rtype = rtype_;
  15845. this.elem = elem_;
  15846. this.dir = dir_;
  15847. });
  15848. funcType = $pkg.funcType = $newType(0, $kindStruct, "reflect.funcType", "funcType", "reflect", function(rtype_, dotdotdot_, in$2_, out_) {
  15849. this.$val = this;
  15850. if (arguments.length === 0) {
  15851. this.rtype = new rtype.ptr();
  15852. this.dotdotdot = false;
  15853. this.in$2 = sliceType$4.nil;
  15854. this.out = sliceType$4.nil;
  15855. return;
  15856. }
  15857. this.rtype = rtype_;
  15858. this.dotdotdot = dotdotdot_;
  15859. this.in$2 = in$2_;
  15860. this.out = out_;
  15861. });
  15862. imethod = $pkg.imethod = $newType(0, $kindStruct, "reflect.imethod", "imethod", "reflect", function(name_, pkgPath_, typ_) {
  15863. this.$val = this;
  15864. if (arguments.length === 0) {
  15865. this.name = ptrType$5.nil;
  15866. this.pkgPath = ptrType$5.nil;
  15867. this.typ = ptrType$1.nil;
  15868. return;
  15869. }
  15870. this.name = name_;
  15871. this.pkgPath = pkgPath_;
  15872. this.typ = typ_;
  15873. });
  15874. interfaceType = $pkg.interfaceType = $newType(0, $kindStruct, "reflect.interfaceType", "interfaceType", "reflect", function(rtype_, methods_) {
  15875. this.$val = this;
  15876. if (arguments.length === 0) {
  15877. this.rtype = new rtype.ptr();
  15878. this.methods = sliceType$5.nil;
  15879. return;
  15880. }
  15881. this.rtype = rtype_;
  15882. this.methods = methods_;
  15883. });
  15884. mapType = $pkg.mapType = $newType(0, $kindStruct, "reflect.mapType", "mapType", "reflect", function(rtype_, key_, elem_, bucket_, hmap_, keysize_, indirectkey_, valuesize_, indirectvalue_, bucketsize_) {
  15885. this.$val = this;
  15886. if (arguments.length === 0) {
  15887. this.rtype = new rtype.ptr();
  15888. this.key = ptrType$1.nil;
  15889. this.elem = ptrType$1.nil;
  15890. this.bucket = ptrType$1.nil;
  15891. this.hmap = ptrType$1.nil;
  15892. this.keysize = 0;
  15893. this.indirectkey = 0;
  15894. this.valuesize = 0;
  15895. this.indirectvalue = 0;
  15896. this.bucketsize = 0;
  15897. return;
  15898. }
  15899. this.rtype = rtype_;
  15900. this.key = key_;
  15901. this.elem = elem_;
  15902. this.bucket = bucket_;
  15903. this.hmap = hmap_;
  15904. this.keysize = keysize_;
  15905. this.indirectkey = indirectkey_;
  15906. this.valuesize = valuesize_;
  15907. this.indirectvalue = indirectvalue_;
  15908. this.bucketsize = bucketsize_;
  15909. });
  15910. ptrType = $pkg.ptrType = $newType(0, $kindStruct, "reflect.ptrType", "ptrType", "reflect", function(rtype_, elem_) {
  15911. this.$val = this;
  15912. if (arguments.length === 0) {
  15913. this.rtype = new rtype.ptr();
  15914. this.elem = ptrType$1.nil;
  15915. return;
  15916. }
  15917. this.rtype = rtype_;
  15918. this.elem = elem_;
  15919. });
  15920. sliceType = $pkg.sliceType = $newType(0, $kindStruct, "reflect.sliceType", "sliceType", "reflect", function(rtype_, elem_) {
  15921. this.$val = this;
  15922. if (arguments.length === 0) {
  15923. this.rtype = new rtype.ptr();
  15924. this.elem = ptrType$1.nil;
  15925. return;
  15926. }
  15927. this.rtype = rtype_;
  15928. this.elem = elem_;
  15929. });
  15930. structField = $pkg.structField = $newType(0, $kindStruct, "reflect.structField", "structField", "reflect", function(name_, pkgPath_, typ_, tag_, offset_) {
  15931. this.$val = this;
  15932. if (arguments.length === 0) {
  15933. this.name = ptrType$5.nil;
  15934. this.pkgPath = ptrType$5.nil;
  15935. this.typ = ptrType$1.nil;
  15936. this.tag = ptrType$5.nil;
  15937. this.offset = 0;
  15938. return;
  15939. }
  15940. this.name = name_;
  15941. this.pkgPath = pkgPath_;
  15942. this.typ = typ_;
  15943. this.tag = tag_;
  15944. this.offset = offset_;
  15945. });
  15946. structType = $pkg.structType = $newType(0, $kindStruct, "reflect.structType", "structType", "reflect", function(rtype_, fields_) {
  15947. this.$val = this;
  15948. if (arguments.length === 0) {
  15949. this.rtype = new rtype.ptr();
  15950. this.fields = sliceType$6.nil;
  15951. return;
  15952. }
  15953. this.rtype = rtype_;
  15954. this.fields = fields_;
  15955. });
  15956. Method = $pkg.Method = $newType(0, $kindStruct, "reflect.Method", "Method", "reflect", function(Name_, PkgPath_, Type_, Func_, Index_) {
  15957. this.$val = this;
  15958. if (arguments.length === 0) {
  15959. this.Name = "";
  15960. this.PkgPath = "";
  15961. this.Type = $ifaceNil;
  15962. this.Func = new Value.ptr();
  15963. this.Index = 0;
  15964. return;
  15965. }
  15966. this.Name = Name_;
  15967. this.PkgPath = PkgPath_;
  15968. this.Type = Type_;
  15969. this.Func = Func_;
  15970. this.Index = Index_;
  15971. });
  15972. StructField = $pkg.StructField = $newType(0, $kindStruct, "reflect.StructField", "StructField", "reflect", function(Name_, PkgPath_, Type_, Tag_, Offset_, Index_, Anonymous_) {
  15973. this.$val = this;
  15974. if (arguments.length === 0) {
  15975. this.Name = "";
  15976. this.PkgPath = "";
  15977. this.Type = $ifaceNil;
  15978. this.Tag = "";
  15979. this.Offset = 0;
  15980. this.Index = sliceType$11.nil;
  15981. this.Anonymous = false;
  15982. return;
  15983. }
  15984. this.Name = Name_;
  15985. this.PkgPath = PkgPath_;
  15986. this.Type = Type_;
  15987. this.Tag = Tag_;
  15988. this.Offset = Offset_;
  15989. this.Index = Index_;
  15990. this.Anonymous = Anonymous_;
  15991. });
  15992. StructTag = $pkg.StructTag = $newType(8, $kindString, "reflect.StructTag", "StructTag", "reflect", null);
  15993. fieldScan = $pkg.fieldScan = $newType(0, $kindStruct, "reflect.fieldScan", "fieldScan", "reflect", function(typ_, index_) {
  15994. this.$val = this;
  15995. if (arguments.length === 0) {
  15996. this.typ = ptrType$13.nil;
  15997. this.index = sliceType$11.nil;
  15998. return;
  15999. }
  16000. this.typ = typ_;
  16001. this.index = index_;
  16002. });
  16003. Value = $pkg.Value = $newType(0, $kindStruct, "reflect.Value", "Value", "reflect", function(typ_, ptr_, flag_) {
  16004. this.$val = this;
  16005. if (arguments.length === 0) {
  16006. this.typ = ptrType$1.nil;
  16007. this.ptr = 0;
  16008. this.flag = 0;
  16009. return;
  16010. }
  16011. this.typ = typ_;
  16012. this.ptr = ptr_;
  16013. this.flag = flag_;
  16014. });
  16015. flag = $pkg.flag = $newType(4, $kindUintptr, "reflect.flag", "flag", "reflect", null);
  16016. ValueError = $pkg.ValueError = $newType(0, $kindStruct, "reflect.ValueError", "ValueError", "reflect", function(Method_, Kind_) {
  16017. this.$val = this;
  16018. if (arguments.length === 0) {
  16019. this.Method = "";
  16020. this.Kind = 0;
  16021. return;
  16022. }
  16023. this.Method = Method_;
  16024. this.Kind = Kind_;
  16025. });
  16026. nonEmptyInterface = $pkg.nonEmptyInterface = $newType(0, $kindStruct, "reflect.nonEmptyInterface", "nonEmptyInterface", "reflect", function(itab_, word_) {
  16027. this.$val = this;
  16028. if (arguments.length === 0) {
  16029. this.itab = ptrType$8.nil;
  16030. this.word = 0;
  16031. return;
  16032. }
  16033. this.itab = itab_;
  16034. this.word = word_;
  16035. });
  16036. ptrType$1 = $ptrType(rtype);
  16037. sliceType$1 = $sliceType($emptyInterface);
  16038. ptrType$3 = $ptrType(js.Object);
  16039. funcType$1 = $funcType([sliceType$1], [ptrType$3], true);
  16040. sliceType$2 = $sliceType($String);
  16041. ptrType$4 = $ptrType(typeAlg);
  16042. arrayType$1 = $arrayType($UnsafePointer, 2);
  16043. ptrType$5 = $ptrType($String);
  16044. ptrType$6 = $ptrType(uncommonType);
  16045. sliceType$3 = $sliceType(method);
  16046. sliceType$4 = $sliceType(ptrType$1);
  16047. sliceType$5 = $sliceType(imethod);
  16048. sliceType$6 = $sliceType(structField);
  16049. structType$5 = $structType([{prop: "str", name: "str", pkg: "reflect", typ: $String, tag: ""}]);
  16050. sliceType$7 = $sliceType(Value);
  16051. ptrType$7 = $ptrType(nonEmptyInterface);
  16052. arrayType$2 = $arrayType($UnsafePointer, 100000);
  16053. structType$6 = $structType([{prop: "ityp", name: "ityp", pkg: "reflect", typ: ptrType$1, tag: ""}, {prop: "typ", name: "typ", pkg: "reflect", typ: ptrType$1, tag: ""}, {prop: "link", name: "link", pkg: "reflect", typ: $UnsafePointer, tag: ""}, {prop: "bad", name: "bad", pkg: "reflect", typ: $Int32, tag: ""}, {prop: "unused", name: "unused", pkg: "reflect", typ: $Int32, tag: ""}, {prop: "fun", name: "fun", pkg: "reflect", typ: arrayType$2, tag: ""}]);
  16054. ptrType$8 = $ptrType(structType$6);
  16055. sliceType$8 = $sliceType(ptrType$3);
  16056. ptrType$9 = $ptrType($Uint8);
  16057. sliceType$9 = $sliceType(sliceType$1);
  16058. sliceType$10 = $sliceType(arrayType$1);
  16059. ptrType$10 = $ptrType(method);
  16060. ptrType$11 = $ptrType(interfaceType);
  16061. ptrType$12 = $ptrType(imethod);
  16062. sliceType$11 = $sliceType($Int);
  16063. sliceType$12 = $sliceType(fieldScan);
  16064. ptrType$13 = $ptrType(structType);
  16065. ptrType$18 = $ptrType($UnsafePointer);
  16066. sliceType$14 = $sliceType($Uint8);
  16067. sliceType$15 = $sliceType($Int32);
  16068. funcType$3 = $funcType([$String], [$Bool], false);
  16069. funcType$4 = $funcType([$UnsafePointer, $Uintptr, $Uintptr], [$Uintptr], false);
  16070. funcType$5 = $funcType([$UnsafePointer, $UnsafePointer, $Uintptr], [$Bool], false);
  16071. arrayType$3 = $arrayType($Uintptr, 2);
  16072. ptrType$21 = $ptrType(ValueError);
  16073. init = function() {
  16074. var $ptr, used, x, x$1, x$10, x$11, x$12, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9, $s, $r;
  16075. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; used = $f.used; x = $f.x; x$1 = $f.x$1; x$10 = $f.x$10; x$11 = $f.x$11; x$12 = $f.x$12; x$2 = $f.x$2; x$3 = $f.x$3; x$4 = $f.x$4; x$5 = $f.x$5; x$6 = $f.x$6; x$7 = $f.x$7; x$8 = $f.x$8; x$9 = $f.x$9; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  16076. used = (function(i) {
  16077. var $ptr, i;
  16078. });
  16079. $r = used((x = new rtype.ptr(0, 0, 0, 0, 0, 0, ptrType$4.nil, arrayType$1.zero(), ptrType$5.nil, ptrType$6.nil, ptrType$1.nil, 0), new x.constructor.elem(x))); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  16080. $r = used((x$1 = new uncommonType.ptr(ptrType$5.nil, ptrType$5.nil, sliceType$3.nil), new x$1.constructor.elem(x$1))); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  16081. $r = used((x$2 = new method.ptr(ptrType$5.nil, ptrType$5.nil, ptrType$1.nil, ptrType$1.nil, 0, 0), new x$2.constructor.elem(x$2))); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  16082. $r = used((x$3 = new arrayType.ptr(new rtype.ptr(), ptrType$1.nil, ptrType$1.nil, 0), new x$3.constructor.elem(x$3))); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  16083. $r = used((x$4 = new chanType.ptr(new rtype.ptr(), ptrType$1.nil, 0), new x$4.constructor.elem(x$4))); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  16084. $r = used((x$5 = new funcType.ptr(new rtype.ptr(), false, sliceType$4.nil, sliceType$4.nil), new x$5.constructor.elem(x$5))); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  16085. $r = used((x$6 = new interfaceType.ptr(new rtype.ptr(), sliceType$5.nil), new x$6.constructor.elem(x$6))); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  16086. $r = used((x$7 = new mapType.ptr(new rtype.ptr(), ptrType$1.nil, ptrType$1.nil, ptrType$1.nil, ptrType$1.nil, 0, 0, 0, 0, 0), new x$7.constructor.elem(x$7))); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  16087. $r = used((x$8 = new ptrType.ptr(new rtype.ptr(), ptrType$1.nil), new x$8.constructor.elem(x$8))); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  16088. $r = used((x$9 = new sliceType.ptr(new rtype.ptr(), ptrType$1.nil), new x$9.constructor.elem(x$9))); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  16089. $r = used((x$10 = new structType.ptr(new rtype.ptr(), sliceType$6.nil), new x$10.constructor.elem(x$10))); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  16090. $r = used((x$11 = new imethod.ptr(ptrType$5.nil, ptrType$5.nil, ptrType$1.nil), new x$11.constructor.elem(x$11))); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  16091. $r = used((x$12 = new structField.ptr(ptrType$5.nil, ptrType$5.nil, ptrType$1.nil, ptrType$5.nil, 0), new x$12.constructor.elem(x$12))); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  16092. initialized = true;
  16093. uint8Type = $assertType(TypeOf(new $Uint8(0)), ptrType$1);
  16094. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: init }; } $f.$ptr = $ptr; $f.used = used; $f.x = x; $f.x$1 = x$1; $f.x$10 = x$10; $f.x$11 = x$11; $f.x$12 = x$12; $f.x$2 = x$2; $f.x$3 = x$3; $f.x$4 = x$4; $f.x$5 = x$5; $f.x$6 = x$6; $f.x$7 = x$7; $f.x$8 = x$8; $f.x$9 = x$9; $f.$s = $s; $f.$r = $r; return $f;
  16095. };
  16096. jsType = function(typ) {
  16097. var $ptr, typ;
  16098. return typ.jsType;
  16099. };
  16100. reflectType = function(typ) {
  16101. var $ptr, _i, _i$1, _i$2, _i$3, _i$4, _ref, _ref$1, _ref$2, _ref$3, _ref$4, _ref$5, dir, f, fields, i, i$1, i$2, i$3, i$4, imethods, in$1, m, m$1, methodSet, methods, out, params, reflectFields, reflectMethods, results, rt, t, typ;
  16102. if (typ.reflectType === undefined) {
  16103. rt = new rtype.ptr((($parseInt(typ.size) >> 0) >>> 0), 0, 0, 0, 0, (($parseInt(typ.kind) >> 0) << 24 >>> 24), ptrType$4.nil, arrayType$1.zero(), newStringPtr(typ.string), ptrType$6.nil, ptrType$1.nil, 0);
  16104. rt.jsType = typ;
  16105. typ.reflectType = rt;
  16106. methodSet = $methodSet(typ);
  16107. if (!($internalize(typ.typeName, $String) === "") || !(($parseInt(methodSet.length) === 0))) {
  16108. reflectMethods = $makeSlice(sliceType$3, $parseInt(methodSet.length));
  16109. _ref = reflectMethods;
  16110. _i = 0;
  16111. while (true) {
  16112. if (!(_i < _ref.$length)) { break; }
  16113. i = _i;
  16114. m = methodSet[i];
  16115. t = m.typ;
  16116. $copy(((i < 0 || i >= reflectMethods.$length) ? $throwRuntimeError("index out of range") : reflectMethods.$array[reflectMethods.$offset + i]), new method.ptr(newStringPtr(m.name), newStringPtr(m.pkg), reflectType(t), reflectType($funcType(new ($global.Array)(typ).concat(t.params), t.results, t.variadic)), 0, 0), method);
  16117. _i++;
  16118. }
  16119. rt.uncommonType = new uncommonType.ptr(newStringPtr(typ.typeName), newStringPtr(typ.pkg), reflectMethods);
  16120. rt.uncommonType.jsType = typ;
  16121. }
  16122. _ref$1 = rt.Kind();
  16123. if (_ref$1 === 17) {
  16124. setKindType(rt, new arrayType.ptr(new rtype.ptr(), reflectType(typ.elem), ptrType$1.nil, (($parseInt(typ.len) >> 0) >>> 0)));
  16125. } else if (_ref$1 === 18) {
  16126. dir = 3;
  16127. if (!!(typ.sendOnly)) {
  16128. dir = 2;
  16129. }
  16130. if (!!(typ.recvOnly)) {
  16131. dir = 1;
  16132. }
  16133. setKindType(rt, new chanType.ptr(new rtype.ptr(), reflectType(typ.elem), (dir >>> 0)));
  16134. } else if (_ref$1 === 19) {
  16135. params = typ.params;
  16136. in$1 = $makeSlice(sliceType$4, $parseInt(params.length));
  16137. _ref$2 = in$1;
  16138. _i$1 = 0;
  16139. while (true) {
  16140. if (!(_i$1 < _ref$2.$length)) { break; }
  16141. i$1 = _i$1;
  16142. ((i$1 < 0 || i$1 >= in$1.$length) ? $throwRuntimeError("index out of range") : in$1.$array[in$1.$offset + i$1] = reflectType(params[i$1]));
  16143. _i$1++;
  16144. }
  16145. results = typ.results;
  16146. out = $makeSlice(sliceType$4, $parseInt(results.length));
  16147. _ref$3 = out;
  16148. _i$2 = 0;
  16149. while (true) {
  16150. if (!(_i$2 < _ref$3.$length)) { break; }
  16151. i$2 = _i$2;
  16152. ((i$2 < 0 || i$2 >= out.$length) ? $throwRuntimeError("index out of range") : out.$array[out.$offset + i$2] = reflectType(results[i$2]));
  16153. _i$2++;
  16154. }
  16155. setKindType(rt, new funcType.ptr($clone(rt, rtype), !!(typ.variadic), in$1, out));
  16156. } else if (_ref$1 === 20) {
  16157. methods = typ.methods;
  16158. imethods = $makeSlice(sliceType$5, $parseInt(methods.length));
  16159. _ref$4 = imethods;
  16160. _i$3 = 0;
  16161. while (true) {
  16162. if (!(_i$3 < _ref$4.$length)) { break; }
  16163. i$3 = _i$3;
  16164. m$1 = methods[i$3];
  16165. $copy(((i$3 < 0 || i$3 >= imethods.$length) ? $throwRuntimeError("index out of range") : imethods.$array[imethods.$offset + i$3]), new imethod.ptr(newStringPtr(m$1.name), newStringPtr(m$1.pkg), reflectType(m$1.typ)), imethod);
  16166. _i$3++;
  16167. }
  16168. setKindType(rt, new interfaceType.ptr($clone(rt, rtype), imethods));
  16169. } else if (_ref$1 === 21) {
  16170. setKindType(rt, new mapType.ptr(new rtype.ptr(), reflectType(typ.key), reflectType(typ.elem), ptrType$1.nil, ptrType$1.nil, 0, 0, 0, 0, 0));
  16171. } else if (_ref$1 === 22) {
  16172. setKindType(rt, new ptrType.ptr(new rtype.ptr(), reflectType(typ.elem)));
  16173. } else if (_ref$1 === 23) {
  16174. setKindType(rt, new sliceType.ptr(new rtype.ptr(), reflectType(typ.elem)));
  16175. } else if (_ref$1 === 25) {
  16176. fields = typ.fields;
  16177. reflectFields = $makeSlice(sliceType$6, $parseInt(fields.length));
  16178. _ref$5 = reflectFields;
  16179. _i$4 = 0;
  16180. while (true) {
  16181. if (!(_i$4 < _ref$5.$length)) { break; }
  16182. i$4 = _i$4;
  16183. f = fields[i$4];
  16184. $copy(((i$4 < 0 || i$4 >= reflectFields.$length) ? $throwRuntimeError("index out of range") : reflectFields.$array[reflectFields.$offset + i$4]), new structField.ptr(newStringPtr(f.name), newStringPtr(f.pkg), reflectType(f.typ), newStringPtr(f.tag), (i$4 >>> 0)), structField);
  16185. _i$4++;
  16186. }
  16187. setKindType(rt, new structType.ptr($clone(rt, rtype), reflectFields));
  16188. }
  16189. }
  16190. return typ.reflectType;
  16191. };
  16192. setKindType = function(rt, kindType) {
  16193. var $ptr, kindType, rt;
  16194. rt.kindType = kindType;
  16195. kindType.rtype = rt;
  16196. };
  16197. newStringPtr = function(strObj) {
  16198. var $ptr, _entry, _key, _tuple, c, ok, ptr, str, strObj, str_ptr;
  16199. c = $clone(new structType$5.ptr(), structType$5);
  16200. c.str = strObj;
  16201. str = c.str;
  16202. if (str === "") {
  16203. return ptrType$5.nil;
  16204. }
  16205. _tuple = (_entry = stringPtrMap[str], _entry !== undefined ? [_entry.v, true] : [ptrType$5.nil, false]); ptr = _tuple[0]; ok = _tuple[1];
  16206. if (!ok) {
  16207. ptr = (str_ptr || (str_ptr = new ptrType$5(function() { return str; }, function($v) { str = $v; })));
  16208. _key = str; (stringPtrMap || $throwRuntimeError("assignment to entry in nil map"))[_key] = { k: _key, v: ptr };
  16209. }
  16210. return ptr;
  16211. };
  16212. isWrapped = function(typ) {
  16213. var $ptr, _r, _r$1, _r$2, _ref, typ, $s, $r;
  16214. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _ref = $f._ref; typ = $f.typ; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  16215. _r = typ.Kind(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  16216. _ref = _r;
  16217. /* */ if (_ref === 1 || _ref === 2 || _ref === 3 || _ref === 4 || _ref === 5 || _ref === 7 || _ref === 8 || _ref === 9 || _ref === 10 || _ref === 12 || _ref === 13 || _ref === 14 || _ref === 17 || _ref === 21 || _ref === 19 || _ref === 24 || _ref === 25) { $s = 2; continue; }
  16218. /* */ if (_ref === 22) { $s = 3; continue; }
  16219. /* */ $s = 4; continue;
  16220. /* if (_ref === 1 || _ref === 2 || _ref === 3 || _ref === 4 || _ref === 5 || _ref === 7 || _ref === 8 || _ref === 9 || _ref === 10 || _ref === 12 || _ref === 13 || _ref === 14 || _ref === 17 || _ref === 21 || _ref === 19 || _ref === 24 || _ref === 25) { */ case 2:
  16221. return true;
  16222. $s = 4; continue;
  16223. /* } else if (_ref === 22) { */ case 3:
  16224. _r$1 = typ.Elem(); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  16225. _r$2 = _r$1.Kind(); /* */ $s = 6; case 6: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  16226. return _r$2 === 17;
  16227. /* } */ case 4:
  16228. return false;
  16229. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: isWrapped }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._ref = _ref; $f.typ = typ; $f.$s = $s; $f.$r = $r; return $f;
  16230. };
  16231. copyStruct = function(dst, src, typ) {
  16232. var $ptr, dst, fields, i, prop, src, typ;
  16233. fields = jsType(typ).fields;
  16234. i = 0;
  16235. while (true) {
  16236. if (!(i < $parseInt(fields.length))) { break; }
  16237. prop = $internalize(fields[i].prop, $String);
  16238. dst[$externalize(prop, $String)] = src[$externalize(prop, $String)];
  16239. i = i + (1) >> 0;
  16240. }
  16241. };
  16242. makeValue = function(t, v, fl) {
  16243. var $ptr, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _v, _v$1, fl, rt, t, v, $s, $r;
  16244. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _v = $f._v; _v$1 = $f._v$1; fl = $f.fl; rt = $f.rt; t = $f.t; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  16245. _r = t.common(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  16246. rt = _r;
  16247. _r$1 = t.Kind(); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  16248. if (_r$1 === 17) { _v$1 = true; $s = 5; continue s; }
  16249. _r$2 = t.Kind(); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  16250. _v$1 = _r$2 === 25; case 5:
  16251. if (_v$1) { _v = true; $s = 4; continue s; }
  16252. _r$3 = t.Kind(); /* */ $s = 8; case 8: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  16253. _v = _r$3 === 22; case 4:
  16254. /* */ if (_v) { $s = 2; continue; }
  16255. /* */ $s = 3; continue;
  16256. /* if (_v) { */ case 2:
  16257. _r$4 = t.Kind(); /* */ $s = 9; case 9: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
  16258. return new Value.ptr(rt, v, (fl | (_r$4 >>> 0)) >>> 0);
  16259. /* } */ case 3:
  16260. _r$5 = t.Kind(); /* */ $s = 10; case 10: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
  16261. return new Value.ptr(rt, $newDataPointer(v, jsType(rt.ptrTo())), (((fl | (_r$5 >>> 0)) >>> 0) | 64) >>> 0);
  16262. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: makeValue }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._v = _v; $f._v$1 = _v$1; $f.fl = fl; $f.rt = rt; $f.t = t; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
  16263. };
  16264. MakeSlice = function(typ, len, cap) {
  16265. var $ptr, _r, _r$1, cap, len, typ, $s, $r;
  16266. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; cap = $f.cap; len = $f.len; typ = $f.typ; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  16267. typ = [typ];
  16268. _r = typ[0].Kind(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  16269. /* */ if (!((_r === 23))) { $s = 1; continue; }
  16270. /* */ $s = 2; continue;
  16271. /* if (!((_r === 23))) { */ case 1:
  16272. $panic(new $String("reflect.MakeSlice of non-slice type"));
  16273. /* } */ case 2:
  16274. if (len < 0) {
  16275. $panic(new $String("reflect.MakeSlice: negative len"));
  16276. }
  16277. if (cap < 0) {
  16278. $panic(new $String("reflect.MakeSlice: negative cap"));
  16279. }
  16280. if (len > cap) {
  16281. $panic(new $String("reflect.MakeSlice: len > cap"));
  16282. }
  16283. _r$1 = makeValue(typ[0], $makeSlice(jsType(typ[0]), len, cap, (function(typ) { return function $b() {
  16284. var $ptr, _r$1, _r$2, $s, $r;
  16285. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r$1 = $f._r$1; _r$2 = $f._r$2; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  16286. _r$1 = typ[0].Elem(); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  16287. _r$2 = jsType(_r$1); /* */ $s = 2; case 2: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  16288. return _r$2.zero();
  16289. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: $b }; } $f.$ptr = $ptr; $f._r$1 = _r$1; $f._r$2 = _r$2; $f.$s = $s; $f.$r = $r; return $f;
  16290. }; })(typ)), 0); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  16291. return _r$1;
  16292. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: MakeSlice }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f.cap = cap; $f.len = len; $f.typ = typ; $f.$s = $s; $f.$r = $r; return $f;
  16293. };
  16294. $pkg.MakeSlice = MakeSlice;
  16295. TypeOf = function(i) {
  16296. var $ptr, i;
  16297. if (!initialized) {
  16298. return new rtype.ptr(0, 0, 0, 0, 0, 0, ptrType$4.nil, arrayType$1.zero(), ptrType$5.nil, ptrType$6.nil, ptrType$1.nil, 0);
  16299. }
  16300. if ($interfaceIsEqual(i, $ifaceNil)) {
  16301. return $ifaceNil;
  16302. }
  16303. return reflectType(i.constructor);
  16304. };
  16305. $pkg.TypeOf = TypeOf;
  16306. ValueOf = function(i) {
  16307. var $ptr, _r, i, $s, $r;
  16308. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; i = $f.i; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  16309. if ($interfaceIsEqual(i, $ifaceNil)) {
  16310. return new Value.ptr(ptrType$1.nil, 0, 0);
  16311. }
  16312. _r = makeValue(reflectType(i.constructor), i.$val, 0); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  16313. return _r;
  16314. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: ValueOf }; } $f.$ptr = $ptr; $f._r = _r; $f.i = i; $f.$s = $s; $f.$r = $r; return $f;
  16315. };
  16316. $pkg.ValueOf = ValueOf;
  16317. MapOf = function(key, elem) {
  16318. var $ptr, _r, _r$1, _ref, elem, key, $s, $r;
  16319. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _ref = $f._ref; elem = $f.elem; key = $f.key; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  16320. _r = key.Kind(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  16321. _ref = _r;
  16322. /* */ if (_ref === 19 || _ref === 21 || _ref === 23) { $s = 2; continue; }
  16323. /* */ $s = 3; continue;
  16324. /* if (_ref === 19 || _ref === 21 || _ref === 23) { */ case 2:
  16325. _r$1 = key.String(); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  16326. $panic(new $String("reflect.MapOf: invalid key type " + _r$1));
  16327. /* } */ case 3:
  16328. return reflectType($mapType(jsType(key), jsType(elem)));
  16329. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: MapOf }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._ref = _ref; $f.elem = elem; $f.key = key; $f.$s = $s; $f.$r = $r; return $f;
  16330. };
  16331. $pkg.MapOf = MapOf;
  16332. rtype.ptr.prototype.ptrTo = function() {
  16333. var $ptr, t;
  16334. t = this;
  16335. return reflectType($ptrType(jsType(t)));
  16336. };
  16337. rtype.prototype.ptrTo = function() { return this.$val.ptrTo(); };
  16338. SliceOf = function(t) {
  16339. var $ptr, t;
  16340. return reflectType($sliceType(jsType(t)));
  16341. };
  16342. $pkg.SliceOf = SliceOf;
  16343. Zero = function(typ) {
  16344. var $ptr, _r, typ, $s, $r;
  16345. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; typ = $f.typ; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  16346. _r = makeValue(typ, jsType(typ).zero(), 0); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  16347. return _r;
  16348. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Zero }; } $f.$ptr = $ptr; $f._r = _r; $f.typ = typ; $f.$s = $s; $f.$r = $r; return $f;
  16349. };
  16350. $pkg.Zero = Zero;
  16351. unsafe_New = function(typ) {
  16352. var $ptr, _ref, typ;
  16353. _ref = typ.Kind();
  16354. if (_ref === 25) {
  16355. return new (jsType(typ).ptr)();
  16356. } else if (_ref === 17) {
  16357. return jsType(typ).zero();
  16358. } else {
  16359. return $newDataPointer(jsType(typ).zero(), jsType(typ.ptrTo()));
  16360. }
  16361. };
  16362. makeInt = function(f, bits, t) {
  16363. var $ptr, _r, _ref, bits, f, ptr, t, typ, $s, $r;
  16364. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _ref = $f._ref; bits = $f.bits; f = $f.f; ptr = $f.ptr; t = $f.t; typ = $f.typ; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  16365. _r = t.common(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  16366. typ = _r;
  16367. ptr = unsafe_New(typ);
  16368. _ref = typ.Kind();
  16369. if (_ref === 3) {
  16370. ptr.$set((bits.$low << 24 >> 24));
  16371. } else if (_ref === 4) {
  16372. ptr.$set((bits.$low << 16 >> 16));
  16373. } else if (_ref === 2 || _ref === 5) {
  16374. ptr.$set((bits.$low >> 0));
  16375. } else if (_ref === 6) {
  16376. ptr.$set(new $Int64(bits.$high, bits.$low));
  16377. } else if (_ref === 8) {
  16378. ptr.$set((bits.$low << 24 >>> 24));
  16379. } else if (_ref === 9) {
  16380. ptr.$set((bits.$low << 16 >>> 16));
  16381. } else if (_ref === 7 || _ref === 10 || _ref === 12) {
  16382. ptr.$set((bits.$low >>> 0));
  16383. } else if (_ref === 11) {
  16384. ptr.$set(bits);
  16385. }
  16386. return new Value.ptr(typ, ptr, (((f | 64) >>> 0) | (typ.Kind() >>> 0)) >>> 0);
  16387. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: makeInt }; } $f.$ptr = $ptr; $f._r = _r; $f._ref = _ref; $f.bits = bits; $f.f = f; $f.ptr = ptr; $f.t = t; $f.typ = typ; $f.$s = $s; $f.$r = $r; return $f;
  16388. };
  16389. memmove = function(adst, asrc, n) {
  16390. var $ptr, adst, asrc, n;
  16391. adst.$set(asrc.$get());
  16392. };
  16393. makemap = function(t) {
  16394. var $ptr, m, t;
  16395. m = 0;
  16396. m = new ($Map)();
  16397. return m;
  16398. };
  16399. mapaccess = function(t, m, key) {
  16400. var $ptr, entry, k, key, m, t;
  16401. k = key.$get();
  16402. if (!(k.$key === undefined)) {
  16403. k = k.$key();
  16404. }
  16405. entry = m[$externalize($internalize(k, $String), $String)];
  16406. if (entry === undefined) {
  16407. return 0;
  16408. }
  16409. return $newDataPointer(entry.v, jsType(PtrTo(t.Elem())));
  16410. };
  16411. mapassign = function(t, m, key, val) {
  16412. var $ptr, _r, entry, et, jsVal, k, key, kv, m, newVal, t, val, $s, $r;
  16413. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; entry = $f.entry; et = $f.et; jsVal = $f.jsVal; k = $f.k; key = $f.key; kv = $f.kv; m = $f.m; newVal = $f.newVal; t = $f.t; val = $f.val; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  16414. kv = key.$get();
  16415. k = kv;
  16416. if (!(k.$key === undefined)) {
  16417. k = k.$key();
  16418. }
  16419. jsVal = val.$get();
  16420. et = t.Elem();
  16421. _r = et.Kind(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  16422. /* */ if (_r === 25) { $s = 1; continue; }
  16423. /* */ $s = 2; continue;
  16424. /* if (_r === 25) { */ case 1:
  16425. newVal = jsType(et).zero();
  16426. copyStruct(newVal, jsVal, et);
  16427. jsVal = newVal;
  16428. /* } */ case 2:
  16429. entry = new ($global.Object)();
  16430. entry.k = kv;
  16431. entry.v = jsVal;
  16432. m[$externalize($internalize(k, $String), $String)] = entry;
  16433. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: mapassign }; } $f.$ptr = $ptr; $f._r = _r; $f.entry = entry; $f.et = et; $f.jsVal = jsVal; $f.k = k; $f.key = key; $f.kv = kv; $f.m = m; $f.newVal = newVal; $f.t = t; $f.val = val; $f.$s = $s; $f.$r = $r; return $f;
  16434. };
  16435. mapdelete = function(t, m, key) {
  16436. var $ptr, k, key, m, t;
  16437. k = key.$get();
  16438. if (!(k.$key === undefined)) {
  16439. k = k.$key();
  16440. }
  16441. delete m[$externalize($internalize(k, $String), $String)];
  16442. };
  16443. mapiterinit = function(t, m) {
  16444. var $ptr, m, t;
  16445. return new mapIter.ptr(t, m, $keys(m), 0);
  16446. };
  16447. mapiterkey = function(it) {
  16448. var $ptr, _r, _r$1, _r$2, it, iter, k, $s, $r;
  16449. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; it = $f.it; iter = $f.iter; k = $f.k; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  16450. iter = it;
  16451. k = iter.keys[iter.i];
  16452. _r = iter.t.Key(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  16453. _r$1 = PtrTo(_r); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  16454. _r$2 = jsType(_r$1); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  16455. return $newDataPointer(iter.m[$externalize($internalize(k, $String), $String)].k, _r$2);
  16456. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: mapiterkey }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f.it = it; $f.iter = iter; $f.k = k; $f.$s = $s; $f.$r = $r; return $f;
  16457. };
  16458. mapiternext = function(it) {
  16459. var $ptr, it, iter;
  16460. iter = it;
  16461. iter.i = iter.i + (1) >> 0;
  16462. };
  16463. maplen = function(m) {
  16464. var $ptr, m;
  16465. return $parseInt($keys(m).length);
  16466. };
  16467. cvtDirect = function(v, typ) {
  16468. var $ptr, _arg, _arg$1, _arg$2, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _ref, k, slice, srcVal, typ, v, val, $s, $r;
  16469. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _arg = $f._arg; _arg$1 = $f._arg$1; _arg$2 = $f._arg$2; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _ref = $f._ref; k = $f.k; slice = $f.slice; srcVal = $f.srcVal; typ = $f.typ; v = $f.v; val = $f.val; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  16470. v = v;
  16471. srcVal = v.object();
  16472. /* */ if (srcVal === jsType(v.typ).nil) { $s = 1; continue; }
  16473. /* */ $s = 2; continue;
  16474. /* if (srcVal === jsType(v.typ).nil) { */ case 1:
  16475. _r = makeValue(typ, jsType(typ).nil, v.flag); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  16476. return _r;
  16477. /* } */ case 2:
  16478. val = null;
  16479. _r$1 = typ.Kind(); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  16480. k = _r$1;
  16481. _ref = k;
  16482. /* */ if (_ref === 18) { $s = 5; continue; }
  16483. /* */ if (_ref === 23) { $s = 6; continue; }
  16484. /* */ if (_ref === 22) { $s = 7; continue; }
  16485. /* */ if (_ref === 25) { $s = 8; continue; }
  16486. /* */ if (_ref === 17 || _ref === 19 || _ref === 20 || _ref === 21 || _ref === 24) { $s = 9; continue; }
  16487. /* */ $s = 10; continue;
  16488. /* switch (0) { default: if (_ref === 18) { */ case 5:
  16489. val = new (jsType(typ))();
  16490. $s = 11; continue;
  16491. /* } else if (_ref === 23) { */ case 6:
  16492. slice = new (jsType(typ))(srcVal.$array);
  16493. slice.$offset = srcVal.$offset;
  16494. slice.$length = srcVal.$length;
  16495. slice.$capacity = srcVal.$capacity;
  16496. val = $newDataPointer(slice, jsType(PtrTo(typ)));
  16497. $s = 11; continue;
  16498. /* } else if (_ref === 22) { */ case 7:
  16499. _r$2 = typ.Elem(); /* */ $s = 14; case 14: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  16500. _r$3 = _r$2.Kind(); /* */ $s = 15; case 15: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  16501. /* */ if (_r$3 === 25) { $s = 12; continue; }
  16502. /* */ $s = 13; continue;
  16503. /* if (_r$3 === 25) { */ case 12:
  16504. _r$4 = typ.Elem(); /* */ $s = 18; case 18: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
  16505. /* */ if ($interfaceIsEqual(_r$4, v.typ.Elem())) { $s = 16; continue; }
  16506. /* */ $s = 17; continue;
  16507. /* if ($interfaceIsEqual(_r$4, v.typ.Elem())) { */ case 16:
  16508. val = srcVal;
  16509. /* break; */ $s = 11; continue;
  16510. /* } */ case 17:
  16511. val = new (jsType(typ))();
  16512. _arg = val;
  16513. _arg$1 = srcVal;
  16514. _r$5 = typ.Elem(); /* */ $s = 19; case 19: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
  16515. _arg$2 = _r$5;
  16516. $r = copyStruct(_arg, _arg$1, _arg$2); /* */ $s = 20; case 20: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  16517. /* break; */ $s = 11; continue;
  16518. /* } */ case 13:
  16519. val = new (jsType(typ))(srcVal.$get, srcVal.$set);
  16520. $s = 11; continue;
  16521. /* } else if (_ref === 25) { */ case 8:
  16522. val = new (jsType(typ).ptr)();
  16523. copyStruct(val, srcVal, typ);
  16524. $s = 11; continue;
  16525. /* } else if (_ref === 17 || _ref === 19 || _ref === 20 || _ref === 21 || _ref === 24) { */ case 9:
  16526. val = v.ptr;
  16527. $s = 11; continue;
  16528. /* } else { */ case 10:
  16529. $panic(new ValueError.ptr("reflect.Convert", k));
  16530. /* } } */ case 11:
  16531. _r$6 = typ.common(); /* */ $s = 21; case 21: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
  16532. _r$7 = typ.Kind(); /* */ $s = 22; case 22: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
  16533. return new Value.ptr(_r$6, val, (((v.flag & 96) >>> 0) | (_r$7 >>> 0)) >>> 0);
  16534. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: cvtDirect }; } $f.$ptr = $ptr; $f._arg = _arg; $f._arg$1 = _arg$1; $f._arg$2 = _arg$2; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._ref = _ref; $f.k = k; $f.slice = slice; $f.srcVal = srcVal; $f.typ = typ; $f.v = v; $f.val = val; $f.$s = $s; $f.$r = $r; return $f;
  16535. };
  16536. Copy = function(dst, src) {
  16537. var $ptr, dk, dst, dstVal, sk, src, srcVal, $s, $r;
  16538. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; dk = $f.dk; dst = $f.dst; dstVal = $f.dstVal; sk = $f.sk; src = $f.src; srcVal = $f.srcVal; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  16539. src = src;
  16540. dst = dst;
  16541. dk = new flag(dst.flag).kind();
  16542. if (!((dk === 17)) && !((dk === 23))) {
  16543. $panic(new ValueError.ptr("reflect.Copy", dk));
  16544. }
  16545. if (dk === 17) {
  16546. new flag(dst.flag).mustBeAssignable();
  16547. }
  16548. new flag(dst.flag).mustBeExported();
  16549. sk = new flag(src.flag).kind();
  16550. if (!((sk === 17)) && !((sk === 23))) {
  16551. $panic(new ValueError.ptr("reflect.Copy", sk));
  16552. }
  16553. new flag(src.flag).mustBeExported();
  16554. $r = typesMustMatch("reflect.Copy", dst.typ.Elem(), src.typ.Elem()); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  16555. dstVal = dst.object();
  16556. if (dk === 17) {
  16557. dstVal = new (jsType(SliceOf(dst.typ.Elem())))(dstVal);
  16558. }
  16559. srcVal = src.object();
  16560. if (sk === 17) {
  16561. srcVal = new (jsType(SliceOf(src.typ.Elem())))(srcVal);
  16562. }
  16563. return $parseInt($copySlice(dstVal, srcVal)) >> 0;
  16564. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Copy }; } $f.$ptr = $ptr; $f.dk = dk; $f.dst = dst; $f.dstVal = dstVal; $f.sk = sk; $f.src = src; $f.srcVal = srcVal; $f.$s = $s; $f.$r = $r; return $f;
  16565. };
  16566. $pkg.Copy = Copy;
  16567. methodReceiver = function(op, v, i) {
  16568. var $ptr, _r, fn, i, iface, m, m$1, op, prop, rcvr, rcvrtype, t, tt, ut, v, x, x$1, $s, $r;
  16569. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; fn = $f.fn; i = $f.i; iface = $f.iface; m = $f.m; m$1 = $f.m$1; op = $f.op; prop = $f.prop; rcvr = $f.rcvr; rcvrtype = $f.rcvrtype; t = $f.t; tt = $f.tt; ut = $f.ut; v = $f.v; x = $f.x; x$1 = $f.x$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  16570. rcvrtype = ptrType$1.nil;
  16571. t = ptrType$1.nil;
  16572. fn = 0;
  16573. v = v;
  16574. prop = "";
  16575. if (v.typ.Kind() === 20) {
  16576. tt = v.typ.kindType;
  16577. if (i < 0 || i >= tt.methods.$length) {
  16578. $panic(new $String("reflect: internal error: invalid method index"));
  16579. }
  16580. m = (x = tt.methods, ((i < 0 || i >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + i]));
  16581. if (!(m.pkgPath === ptrType$5.nil)) {
  16582. $panic(new $String("reflect: " + op + " of unexported method"));
  16583. }
  16584. iface = $pointerOfStructConversion(v.ptr, ptrType$7);
  16585. if (iface.itab === ptrType$8.nil) {
  16586. $panic(new $String("reflect: " + op + " of method on nil interface value"));
  16587. }
  16588. t = m.typ;
  16589. prop = m.name.$get();
  16590. } else {
  16591. ut = v.typ.uncommonType.uncommon();
  16592. if (ut === ptrType$6.nil || i < 0 || i >= ut.methods.$length) {
  16593. $panic(new $String("reflect: internal error: invalid method index"));
  16594. }
  16595. m$1 = (x$1 = ut.methods, ((i < 0 || i >= x$1.$length) ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + i]));
  16596. if (!(m$1.pkgPath === ptrType$5.nil)) {
  16597. $panic(new $String("reflect: " + op + " of unexported method"));
  16598. }
  16599. t = m$1.mtyp;
  16600. prop = $internalize($methodSet(jsType(v.typ))[i].prop, $String);
  16601. }
  16602. rcvr = v.object();
  16603. _r = isWrapped(v.typ); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  16604. /* */ if (_r) { $s = 1; continue; }
  16605. /* */ $s = 2; continue;
  16606. /* if (_r) { */ case 1:
  16607. rcvr = new (jsType(v.typ))(rcvr);
  16608. /* } */ case 2:
  16609. fn = rcvr[$externalize(prop, $String)];
  16610. return [rcvrtype, t, fn];
  16611. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: methodReceiver }; } $f.$ptr = $ptr; $f._r = _r; $f.fn = fn; $f.i = i; $f.iface = iface; $f.m = m; $f.m$1 = m$1; $f.op = op; $f.prop = prop; $f.rcvr = rcvr; $f.rcvrtype = rcvrtype; $f.t = t; $f.tt = tt; $f.ut = ut; $f.v = v; $f.x = x; $f.x$1 = x$1; $f.$s = $s; $f.$r = $r; return $f;
  16612. };
  16613. valueInterface = function(v, safe) {
  16614. var $ptr, _r, _r$1, safe, v, $s, $r;
  16615. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; safe = $f.safe; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  16616. v = v;
  16617. if (v.flag === 0) {
  16618. $panic(new ValueError.ptr("reflect.Value.Interface", 0));
  16619. }
  16620. if (safe && !((((v.flag & 32) >>> 0) === 0))) {
  16621. $panic(new $String("reflect.Value.Interface: cannot return value obtained from unexported field or method"));
  16622. }
  16623. /* */ if (!((((v.flag & 256) >>> 0) === 0))) { $s = 1; continue; }
  16624. /* */ $s = 2; continue;
  16625. /* if (!((((v.flag & 256) >>> 0) === 0))) { */ case 1:
  16626. _r = makeMethodValue("Interface", v); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  16627. v = _r;
  16628. /* } */ case 2:
  16629. _r$1 = isWrapped(v.typ); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  16630. /* */ if (_r$1) { $s = 4; continue; }
  16631. /* */ $s = 5; continue;
  16632. /* if (_r$1) { */ case 4:
  16633. return new (jsType(v.typ))(v.object());
  16634. /* } */ case 5:
  16635. return v.object();
  16636. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: valueInterface }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f.safe = safe; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
  16637. };
  16638. ifaceE2I = function(t, src, dst) {
  16639. var $ptr, dst, src, t;
  16640. dst.$set(src);
  16641. };
  16642. methodName = function() {
  16643. var $ptr;
  16644. return "?FIXME?";
  16645. };
  16646. makeMethodValue = function(op, v) {
  16647. var $ptr, _r, _r$1, _r$2, _tuple, fn, fv, op, rcvr, v, $s, $r;
  16648. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _tuple = $f._tuple; fn = $f.fn; fv = $f.fv; op = $f.op; rcvr = $f.rcvr; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  16649. fn = [fn];
  16650. rcvr = [rcvr];
  16651. v = v;
  16652. if (((v.flag & 256) >>> 0) === 0) {
  16653. $panic(new $String("reflect: internal error: invalid use of makePartialFunc"));
  16654. }
  16655. _r = methodReceiver(op, v, (v.flag >> 0) >> 9 >> 0); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  16656. _tuple = _r; fn[0] = _tuple[2];
  16657. rcvr[0] = v.object();
  16658. _r$1 = isWrapped(v.typ); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  16659. /* */ if (_r$1) { $s = 2; continue; }
  16660. /* */ $s = 3; continue;
  16661. /* if (_r$1) { */ case 2:
  16662. rcvr[0] = new (jsType(v.typ))(rcvr[0]);
  16663. /* } */ case 3:
  16664. fv = $makeFunc((function(fn, rcvr) { return function(arguments$1) {
  16665. var $ptr, arguments$1;
  16666. return fn[0].apply(rcvr[0], $externalize(arguments$1, sliceType$8));
  16667. }; })(fn, rcvr));
  16668. _r$2 = v.Type().common(); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  16669. return new Value.ptr(_r$2, fv, (((v.flag & 32) >>> 0) | 19) >>> 0);
  16670. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: makeMethodValue }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._tuple = _tuple; $f.fn = fn; $f.fv = fv; $f.op = op; $f.rcvr = rcvr; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
  16671. };
  16672. rtype.ptr.prototype.pointers = function() {
  16673. var $ptr, _ref, t;
  16674. t = this;
  16675. _ref = t.Kind();
  16676. if (_ref === 22 || _ref === 21 || _ref === 18 || _ref === 19 || _ref === 25 || _ref === 17) {
  16677. return true;
  16678. } else {
  16679. return false;
  16680. }
  16681. };
  16682. rtype.prototype.pointers = function() { return this.$val.pointers(); };
  16683. rtype.ptr.prototype.Comparable = function() {
  16684. var $ptr, _r, _r$1, _r$2, _ref, i, t, $s, $r;
  16685. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _ref = $f._ref; i = $f.i; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  16686. t = this;
  16687. _ref = t.Kind();
  16688. /* */ if (_ref === 19 || _ref === 23 || _ref === 21) { $s = 1; continue; }
  16689. /* */ if (_ref === 17) { $s = 2; continue; }
  16690. /* */ if (_ref === 25) { $s = 3; continue; }
  16691. /* */ $s = 4; continue;
  16692. /* if (_ref === 19 || _ref === 23 || _ref === 21) { */ case 1:
  16693. return false;
  16694. $s = 4; continue;
  16695. /* } else if (_ref === 17) { */ case 2:
  16696. _r = t.Elem().Comparable(); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  16697. return _r;
  16698. $s = 4; continue;
  16699. /* } else if (_ref === 25) { */ case 3:
  16700. i = 0;
  16701. /* while (true) { */ case 6:
  16702. /* if (!(i < t.NumField())) { break; } */ if(!(i < t.NumField())) { $s = 7; continue; }
  16703. _r$1 = t.Field(i); /* */ $s = 10; case 10: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  16704. _r$2 = _r$1.Type.Comparable(); /* */ $s = 11; case 11: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  16705. /* */ if (!_r$2) { $s = 8; continue; }
  16706. /* */ $s = 9; continue;
  16707. /* if (!_r$2) { */ case 8:
  16708. return false;
  16709. /* } */ case 9:
  16710. i = i + (1) >> 0;
  16711. /* } */ $s = 6; continue; case 7:
  16712. /* } */ case 4:
  16713. return true;
  16714. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: rtype.ptr.prototype.Comparable }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._ref = _ref; $f.i = i; $f.t = t; $f.$s = $s; $f.$r = $r; return $f;
  16715. };
  16716. rtype.prototype.Comparable = function() { return this.$val.Comparable(); };
  16717. uncommonType.ptr.prototype.Method = function(i) {
  16718. var $ptr, fl, fn, i, m, mt, p, prop, t, x;
  16719. m = new Method.ptr();
  16720. t = this;
  16721. if (t === ptrType$6.nil || i < 0 || i >= t.methods.$length) {
  16722. $panic(new $String("reflect: Method index out of range"));
  16723. }
  16724. p = (x = t.methods, ((i < 0 || i >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + i]));
  16725. if (!(p.name === ptrType$5.nil)) {
  16726. m.Name = p.name.$get();
  16727. }
  16728. fl = 19;
  16729. if (!(p.pkgPath === ptrType$5.nil)) {
  16730. m.PkgPath = p.pkgPath.$get();
  16731. fl = (fl | (32)) >>> 0;
  16732. }
  16733. mt = p.typ;
  16734. m.Type = mt;
  16735. prop = $internalize($methodSet(t.jsType)[i].prop, $String);
  16736. fn = $makeFunc((function(arguments$1) {
  16737. var $ptr, arguments$1, rcvr;
  16738. rcvr = (0 >= arguments$1.$length ? $throwRuntimeError("index out of range") : arguments$1.$array[arguments$1.$offset + 0]);
  16739. return rcvr[$externalize(prop, $String)].apply(rcvr, $externalize($subslice(arguments$1, 1), sliceType$8));
  16740. }));
  16741. m.Func = new Value.ptr(mt, fn, fl);
  16742. m.Index = i;
  16743. return m;
  16744. };
  16745. uncommonType.prototype.Method = function(i) { return this.$val.Method(i); };
  16746. Value.ptr.prototype.object = function() {
  16747. var $ptr, _ref, newVal, v, val;
  16748. v = this;
  16749. if ((v.typ.Kind() === 17) || (v.typ.Kind() === 25)) {
  16750. return v.ptr;
  16751. }
  16752. if (!((((v.flag & 64) >>> 0) === 0))) {
  16753. val = v.ptr.$get();
  16754. if (!(val === $ifaceNil) && !(val.constructor === jsType(v.typ))) {
  16755. _ref = v.typ.Kind();
  16756. switch (0) { default: if (_ref === 11 || _ref === 6) {
  16757. val = new (jsType(v.typ))(val.$high, val.$low);
  16758. } else if (_ref === 15 || _ref === 16) {
  16759. val = new (jsType(v.typ))(val.$real, val.$imag);
  16760. } else if (_ref === 23) {
  16761. if (val === val.constructor.nil) {
  16762. val = jsType(v.typ).nil;
  16763. break;
  16764. }
  16765. newVal = new (jsType(v.typ))(val.$array);
  16766. newVal.$offset = val.$offset;
  16767. newVal.$length = val.$length;
  16768. newVal.$capacity = val.$capacity;
  16769. val = newVal;
  16770. } }
  16771. }
  16772. return val;
  16773. }
  16774. return v.ptr;
  16775. };
  16776. Value.prototype.object = function() { return this.$val.object(); };
  16777. Value.ptr.prototype.call = function(op, in$1) {
  16778. var $ptr, _arg, _arg$1, _arg$2, _arg$3, _i, _i$1, _i$2, _r, _r$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$16, _r$17, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _ref$1, _ref$2, _ref$3, _tmp, _tmp$1, _tuple, arg, argsArray, elem, fn, i, i$1, i$2, i$3, in$1, isSlice, m, n, nin, nout, op, origIn, rcvr, results, ret, slice, t, targ, v, x, x$1, x$2, xt, xt$1, $s, $r;
  16779. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _arg = $f._arg; _arg$1 = $f._arg$1; _arg$2 = $f._arg$2; _arg$3 = $f._arg$3; _i = $f._i; _i$1 = $f._i$1; _i$2 = $f._i$2; _r = $f._r; _r$1 = $f._r$1; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$12 = $f._r$12; _r$13 = $f._r$13; _r$14 = $f._r$14; _r$15 = $f._r$15; _r$16 = $f._r$16; _r$17 = $f._r$17; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _r$9 = $f._r$9; _ref = $f._ref; _ref$1 = $f._ref$1; _ref$2 = $f._ref$2; _ref$3 = $f._ref$3; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; arg = $f.arg; argsArray = $f.argsArray; elem = $f.elem; fn = $f.fn; i = $f.i; i$1 = $f.i$1; i$2 = $f.i$2; i$3 = $f.i$3; in$1 = $f.in$1; isSlice = $f.isSlice; m = $f.m; n = $f.n; nin = $f.nin; nout = $f.nout; op = $f.op; origIn = $f.origIn; rcvr = $f.rcvr; results = $f.results; ret = $f.ret; slice = $f.slice; t = $f.t; targ = $f.targ; v = $f.v; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; xt = $f.xt; xt$1 = $f.xt$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  16780. v = this;
  16781. t = v.typ;
  16782. fn = 0;
  16783. rcvr = null;
  16784. /* */ if (!((((v.flag & 256) >>> 0) === 0))) { $s = 1; continue; }
  16785. /* */ $s = 2; continue;
  16786. /* if (!((((v.flag & 256) >>> 0) === 0))) { */ case 1:
  16787. _r = methodReceiver(op, v, (v.flag >> 0) >> 9 >> 0); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  16788. _tuple = _r; t = _tuple[1]; fn = _tuple[2];
  16789. rcvr = v.object();
  16790. _r$1 = isWrapped(v.typ); /* */ $s = 7; case 7: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  16791. /* */ if (_r$1) { $s = 5; continue; }
  16792. /* */ $s = 6; continue;
  16793. /* if (_r$1) { */ case 5:
  16794. rcvr = new (jsType(v.typ))(rcvr);
  16795. /* } */ case 6:
  16796. $s = 3; continue;
  16797. /* } else { */ case 2:
  16798. fn = v.object();
  16799. rcvr = undefined;
  16800. /* } */ case 3:
  16801. if (fn === 0) {
  16802. $panic(new $String("reflect.Value.Call: call of nil function"));
  16803. }
  16804. isSlice = op === "CallSlice";
  16805. n = t.NumIn();
  16806. if (isSlice) {
  16807. if (!t.IsVariadic()) {
  16808. $panic(new $String("reflect: CallSlice of non-variadic function"));
  16809. }
  16810. if (in$1.$length < n) {
  16811. $panic(new $String("reflect: CallSlice with too few input arguments"));
  16812. }
  16813. if (in$1.$length > n) {
  16814. $panic(new $String("reflect: CallSlice with too many input arguments"));
  16815. }
  16816. } else {
  16817. if (t.IsVariadic()) {
  16818. n = n - (1) >> 0;
  16819. }
  16820. if (in$1.$length < n) {
  16821. $panic(new $String("reflect: Call with too few input arguments"));
  16822. }
  16823. if (!t.IsVariadic() && in$1.$length > n) {
  16824. $panic(new $String("reflect: Call with too many input arguments"));
  16825. }
  16826. }
  16827. _ref = in$1;
  16828. _i = 0;
  16829. while (true) {
  16830. if (!(_i < _ref.$length)) { break; }
  16831. x = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]);
  16832. if (x.Kind() === 0) {
  16833. $panic(new $String("reflect: " + op + " using zero Value argument"));
  16834. }
  16835. _i++;
  16836. }
  16837. i = 0;
  16838. /* while (true) { */ case 8:
  16839. /* if (!(i < n)) { break; } */ if(!(i < n)) { $s = 9; continue; }
  16840. _tmp = ((i < 0 || i >= in$1.$length) ? $throwRuntimeError("index out of range") : in$1.$array[in$1.$offset + i]).Type(); _tmp$1 = t.In(i); xt = _tmp; targ = _tmp$1;
  16841. _r$2 = xt.AssignableTo(targ); /* */ $s = 12; case 12: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  16842. /* */ if (!_r$2) { $s = 10; continue; }
  16843. /* */ $s = 11; continue;
  16844. /* if (!_r$2) { */ case 10:
  16845. _r$3 = xt.String(); /* */ $s = 13; case 13: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  16846. _r$4 = targ.String(); /* */ $s = 14; case 14: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
  16847. $panic(new $String("reflect: " + op + " using " + _r$3 + " as type " + _r$4));
  16848. /* } */ case 11:
  16849. i = i + (1) >> 0;
  16850. /* } */ $s = 8; continue; case 9:
  16851. /* */ if (!isSlice && t.IsVariadic()) { $s = 15; continue; }
  16852. /* */ $s = 16; continue;
  16853. /* if (!isSlice && t.IsVariadic()) { */ case 15:
  16854. m = in$1.$length - n >> 0;
  16855. _r$5 = MakeSlice(t.In(n), m, m); /* */ $s = 17; case 17: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
  16856. slice = _r$5;
  16857. _r$6 = t.In(n).Elem(); /* */ $s = 18; case 18: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
  16858. elem = _r$6;
  16859. i$1 = 0;
  16860. /* while (true) { */ case 19:
  16861. /* if (!(i$1 < m)) { break; } */ if(!(i$1 < m)) { $s = 20; continue; }
  16862. x$2 = (x$1 = n + i$1 >> 0, ((x$1 < 0 || x$1 >= in$1.$length) ? $throwRuntimeError("index out of range") : in$1.$array[in$1.$offset + x$1]));
  16863. xt$1 = x$2.Type();
  16864. _r$7 = xt$1.AssignableTo(elem); /* */ $s = 23; case 23: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
  16865. /* */ if (!_r$7) { $s = 21; continue; }
  16866. /* */ $s = 22; continue;
  16867. /* if (!_r$7) { */ case 21:
  16868. _r$8 = xt$1.String(); /* */ $s = 24; case 24: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
  16869. _r$9 = elem.String(); /* */ $s = 25; case 25: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
  16870. $panic(new $String("reflect: cannot use " + _r$8 + " as type " + _r$9 + " in " + op));
  16871. /* } */ case 22:
  16872. _r$10 = slice.Index(i$1); /* */ $s = 26; case 26: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
  16873. $r = _r$10.Set(x$2); /* */ $s = 27; case 27: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  16874. i$1 = i$1 + (1) >> 0;
  16875. /* } */ $s = 19; continue; case 20:
  16876. origIn = in$1;
  16877. in$1 = $makeSlice(sliceType$7, (n + 1 >> 0));
  16878. $copySlice($subslice(in$1, 0, n), origIn);
  16879. ((n < 0 || n >= in$1.$length) ? $throwRuntimeError("index out of range") : in$1.$array[in$1.$offset + n] = slice);
  16880. /* } */ case 16:
  16881. nin = in$1.$length;
  16882. if (!((nin === t.NumIn()))) {
  16883. $panic(new $String("reflect.Value.Call: wrong argument count"));
  16884. }
  16885. nout = t.NumOut();
  16886. argsArray = new ($global.Array)(t.NumIn());
  16887. _ref$1 = in$1;
  16888. _i$1 = 0;
  16889. /* while (true) { */ case 28:
  16890. /* if (!(_i$1 < _ref$1.$length)) { break; } */ if(!(_i$1 < _ref$1.$length)) { $s = 29; continue; }
  16891. i$2 = _i$1;
  16892. arg = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? $throwRuntimeError("index out of range") : _ref$1.$array[_ref$1.$offset + _i$1]);
  16893. _arg = t.In(i$2);
  16894. _r$11 = t.In(i$2).common(); /* */ $s = 30; case 30: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
  16895. _arg$1 = _r$11;
  16896. _arg$2 = 0;
  16897. _r$12 = arg.assignTo("reflect.Value.Call", _arg$1, _arg$2); /* */ $s = 31; case 31: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; }
  16898. _r$13 = _r$12.object(); /* */ $s = 32; case 32: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; }
  16899. _arg$3 = _r$13;
  16900. _r$14 = unwrapJsObject(_arg, _arg$3); /* */ $s = 33; case 33: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; }
  16901. argsArray[i$2] = _r$14;
  16902. _i$1++;
  16903. /* } */ $s = 28; continue; case 29:
  16904. _r$15 = callHelper(new sliceType$1([new $jsObjectPtr(fn), new $jsObjectPtr(rcvr), new $jsObjectPtr(argsArray)])); /* */ $s = 34; case 34: if($c) { $c = false; _r$15 = _r$15.$blk(); } if (_r$15 && _r$15.$blk !== undefined) { break s; }
  16905. results = _r$15;
  16906. _ref$2 = nout;
  16907. /* */ if (_ref$2 === 0) { $s = 35; continue; }
  16908. /* */ if (_ref$2 === 1) { $s = 36; continue; }
  16909. /* */ $s = 37; continue;
  16910. /* if (_ref$2 === 0) { */ case 35:
  16911. return sliceType$7.nil;
  16912. $s = 38; continue;
  16913. /* } else if (_ref$2 === 1) { */ case 36:
  16914. _r$16 = makeValue(t.Out(0), wrapJsObject(t.Out(0), results), 0); /* */ $s = 39; case 39: if($c) { $c = false; _r$16 = _r$16.$blk(); } if (_r$16 && _r$16.$blk !== undefined) { break s; }
  16915. return new sliceType$7([$clone(_r$16, Value)]);
  16916. $s = 38; continue;
  16917. /* } else { */ case 37:
  16918. ret = $makeSlice(sliceType$7, nout);
  16919. _ref$3 = ret;
  16920. _i$2 = 0;
  16921. /* while (true) { */ case 40:
  16922. /* if (!(_i$2 < _ref$3.$length)) { break; } */ if(!(_i$2 < _ref$3.$length)) { $s = 41; continue; }
  16923. i$3 = _i$2;
  16924. _r$17 = makeValue(t.Out(i$3), wrapJsObject(t.Out(i$3), results[i$3]), 0); /* */ $s = 42; case 42: if($c) { $c = false; _r$17 = _r$17.$blk(); } if (_r$17 && _r$17.$blk !== undefined) { break s; }
  16925. ((i$3 < 0 || i$3 >= ret.$length) ? $throwRuntimeError("index out of range") : ret.$array[ret.$offset + i$3] = _r$17);
  16926. _i$2++;
  16927. /* } */ $s = 40; continue; case 41:
  16928. return ret;
  16929. /* } */ case 38:
  16930. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.call }; } $f.$ptr = $ptr; $f._arg = _arg; $f._arg$1 = _arg$1; $f._arg$2 = _arg$2; $f._arg$3 = _arg$3; $f._i = _i; $f._i$1 = _i$1; $f._i$2 = _i$2; $f._r = _r; $f._r$1 = _r$1; $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$12 = _r$12; $f._r$13 = _r$13; $f._r$14 = _r$14; $f._r$15 = _r$15; $f._r$16 = _r$16; $f._r$17 = _r$17; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._r$9 = _r$9; $f._ref = _ref; $f._ref$1 = _ref$1; $f._ref$2 = _ref$2; $f._ref$3 = _ref$3; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f.arg = arg; $f.argsArray = argsArray; $f.elem = elem; $f.fn = fn; $f.i = i; $f.i$1 = i$1; $f.i$2 = i$2; $f.i$3 = i$3; $f.in$1 = in$1; $f.isSlice = isSlice; $f.m = m; $f.n = n; $f.nin = nin; $f.nout = nout; $f.op = op; $f.origIn = origIn; $f.rcvr = rcvr; $f.results = results; $f.ret = ret; $f.slice = slice; $f.t = t; $f.targ = targ; $f.v = v; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.xt = xt; $f.xt$1 = xt$1; $f.$s = $s; $f.$r = $r; return $f;
  16931. };
  16932. Value.prototype.call = function(op, in$1) { return this.$val.call(op, in$1); };
  16933. Value.ptr.prototype.Cap = function() {
  16934. var $ptr, _ref, k, v;
  16935. v = this;
  16936. k = new flag(v.flag).kind();
  16937. _ref = k;
  16938. if (_ref === 17) {
  16939. return v.typ.Len();
  16940. } else if (_ref === 18 || _ref === 23) {
  16941. return $parseInt(v.object().$capacity) >> 0;
  16942. }
  16943. $panic(new ValueError.ptr("reflect.Value.Cap", k));
  16944. };
  16945. Value.prototype.Cap = function() { return this.$val.Cap(); };
  16946. wrapJsObject = function(typ, val) {
  16947. var $ptr, typ, val;
  16948. if ($interfaceIsEqual(typ, jsObjectPtr)) {
  16949. return new (jsType(jsObjectPtr))(val);
  16950. }
  16951. return val;
  16952. };
  16953. unwrapJsObject = function(typ, val) {
  16954. var $ptr, typ, val;
  16955. if ($interfaceIsEqual(typ, jsObjectPtr)) {
  16956. return val.object;
  16957. }
  16958. return val;
  16959. };
  16960. Value.ptr.prototype.Elem = function() {
  16961. var $ptr, _r, _ref, fl, k, tt, typ, v, val, val$1, $s, $r;
  16962. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _ref = $f._ref; fl = $f.fl; k = $f.k; tt = $f.tt; typ = $f.typ; v = $f.v; val = $f.val; val$1 = $f.val$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  16963. v = this;
  16964. k = new flag(v.flag).kind();
  16965. _ref = k;
  16966. /* */ if (_ref === 20) { $s = 1; continue; }
  16967. /* */ if (_ref === 22) { $s = 2; continue; }
  16968. /* */ $s = 3; continue;
  16969. /* if (_ref === 20) { */ case 1:
  16970. val = v.object();
  16971. if (val === $ifaceNil) {
  16972. return new Value.ptr(ptrType$1.nil, 0, 0);
  16973. }
  16974. typ = reflectType(val.constructor);
  16975. _r = makeValue(typ, val.$val, (v.flag & 32) >>> 0); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  16976. return _r;
  16977. $s = 4; continue;
  16978. /* } else if (_ref === 22) { */ case 2:
  16979. if (v.IsNil()) {
  16980. return new Value.ptr(ptrType$1.nil, 0, 0);
  16981. }
  16982. val$1 = v.object();
  16983. tt = v.typ.kindType;
  16984. fl = (((((v.flag & 32) >>> 0) | 64) >>> 0) | 128) >>> 0;
  16985. fl = (fl | ((tt.elem.Kind() >>> 0))) >>> 0;
  16986. return new Value.ptr(tt.elem, wrapJsObject(tt.elem, val$1), fl);
  16987. $s = 4; continue;
  16988. /* } else { */ case 3:
  16989. $panic(new ValueError.ptr("reflect.Value.Elem", k));
  16990. /* } */ case 4:
  16991. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.Elem }; } $f.$ptr = $ptr; $f._r = _r; $f._ref = _ref; $f.fl = fl; $f.k = k; $f.tt = tt; $f.typ = typ; $f.v = v; $f.val = val; $f.val$1 = val$1; $f.$s = $s; $f.$r = $r; return $f;
  16992. };
  16993. Value.prototype.Elem = function() { return this.$val.Elem(); };
  16994. Value.ptr.prototype.Field = function(i) {
  16995. var $ptr, _r, _r$1, _r$2, field, fl, i, jsTag, o, prop, s, tag, tt, typ, v, x, x$1, $s, $r;
  16996. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; field = $f.field; fl = $f.fl; i = $f.i; jsTag = $f.jsTag; o = $f.o; prop = $f.prop; s = $f.s; tag = $f.tag; tt = $f.tt; typ = $f.typ; v = $f.v; x = $f.x; x$1 = $f.x$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  16997. jsTag = [jsTag];
  16998. prop = [prop];
  16999. s = [s];
  17000. typ = [typ];
  17001. v = this;
  17002. new flag(v.flag).mustBe(25);
  17003. tt = v.typ.kindType;
  17004. if (i < 0 || i >= tt.fields.$length) {
  17005. $panic(new $String("reflect: Field index out of range"));
  17006. }
  17007. prop[0] = $internalize(jsType(v.typ).fields[i].prop, $String);
  17008. field = (x = tt.fields, ((i < 0 || i >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + i]));
  17009. typ[0] = field.typ;
  17010. fl = (v.flag & 224) >>> 0;
  17011. if (!(field.pkgPath === ptrType$5.nil)) {
  17012. fl = (fl | (32)) >>> 0;
  17013. }
  17014. fl = (fl | ((typ[0].Kind() >>> 0))) >>> 0;
  17015. tag = (x$1 = tt.fields, ((i < 0 || i >= x$1.$length) ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + i])).tag;
  17016. /* */ if (!(tag === ptrType$5.nil) && !((i === 0))) { $s = 1; continue; }
  17017. /* */ $s = 2; continue;
  17018. /* if (!(tag === ptrType$5.nil) && !((i === 0))) { */ case 1:
  17019. jsTag[0] = getJsTag(tag.$get());
  17020. /* */ if (!(jsTag[0] === "")) { $s = 3; continue; }
  17021. /* */ $s = 4; continue;
  17022. /* if (!(jsTag[0] === "")) { */ case 3:
  17023. /* while (true) { */ case 5:
  17024. o = [o];
  17025. _r = v.Field(0); /* */ $s = 7; case 7: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  17026. v = _r;
  17027. /* */ if (v.typ === jsObjectPtr) { $s = 8; continue; }
  17028. /* */ $s = 9; continue;
  17029. /* if (v.typ === jsObjectPtr) { */ case 8:
  17030. o[0] = v.object().object;
  17031. return new Value.ptr(typ[0], new (jsType(PtrTo(typ[0])))((function(jsTag, o, prop, s, typ) { return function() {
  17032. var $ptr;
  17033. return $internalize(o[0][$externalize(jsTag[0], $String)], jsType(typ[0]));
  17034. }; })(jsTag, o, prop, s, typ), (function(jsTag, o, prop, s, typ) { return function(x$2) {
  17035. var $ptr, x$2;
  17036. o[0][$externalize(jsTag[0], $String)] = $externalize(x$2, jsType(typ[0]));
  17037. }; })(jsTag, o, prop, s, typ)), fl);
  17038. /* } */ case 9:
  17039. /* */ if (v.typ.Kind() === 22) { $s = 10; continue; }
  17040. /* */ $s = 11; continue;
  17041. /* if (v.typ.Kind() === 22) { */ case 10:
  17042. _r$1 = v.Elem(); /* */ $s = 12; case 12: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  17043. v = _r$1;
  17044. /* } */ case 11:
  17045. /* } */ $s = 5; continue; case 6:
  17046. /* } */ case 4:
  17047. /* } */ case 2:
  17048. s[0] = v.ptr;
  17049. /* */ if (!((((fl & 64) >>> 0) === 0)) && !((typ[0].Kind() === 17)) && !((typ[0].Kind() === 25))) { $s = 13; continue; }
  17050. /* */ $s = 14; continue;
  17051. /* if (!((((fl & 64) >>> 0) === 0)) && !((typ[0].Kind() === 17)) && !((typ[0].Kind() === 25))) { */ case 13:
  17052. return new Value.ptr(typ[0], new (jsType(PtrTo(typ[0])))((function(jsTag, prop, s, typ) { return function() {
  17053. var $ptr;
  17054. return wrapJsObject(typ[0], s[0][$externalize(prop[0], $String)]);
  17055. }; })(jsTag, prop, s, typ), (function(jsTag, prop, s, typ) { return function(x$2) {
  17056. var $ptr, x$2;
  17057. s[0][$externalize(prop[0], $String)] = unwrapJsObject(typ[0], x$2);
  17058. }; })(jsTag, prop, s, typ)), fl);
  17059. /* } */ case 14:
  17060. _r$2 = makeValue(typ[0], wrapJsObject(typ[0], s[0][$externalize(prop[0], $String)]), fl); /* */ $s = 15; case 15: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  17061. return _r$2;
  17062. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.Field }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f.field = field; $f.fl = fl; $f.i = i; $f.jsTag = jsTag; $f.o = o; $f.prop = prop; $f.s = s; $f.tag = tag; $f.tt = tt; $f.typ = typ; $f.v = v; $f.x = x; $f.x$1 = x$1; $f.$s = $s; $f.$r = $r; return $f;
  17063. };
  17064. Value.prototype.Field = function(i) { return this.$val.Field(i); };
  17065. getJsTag = function(tag) {
  17066. var $ptr, _tuple, i, name, qvalue, tag, value;
  17067. while (true) {
  17068. if (!(!(tag === ""))) { break; }
  17069. i = 0;
  17070. while (true) {
  17071. if (!(i < tag.length && (tag.charCodeAt(i) === 32))) { break; }
  17072. i = i + (1) >> 0;
  17073. }
  17074. tag = tag.substring(i);
  17075. if (tag === "") {
  17076. break;
  17077. }
  17078. i = 0;
  17079. while (true) {
  17080. if (!(i < tag.length && !((tag.charCodeAt(i) === 32)) && !((tag.charCodeAt(i) === 58)) && !((tag.charCodeAt(i) === 34)))) { break; }
  17081. i = i + (1) >> 0;
  17082. }
  17083. if ((i + 1 >> 0) >= tag.length || !((tag.charCodeAt(i) === 58)) || !((tag.charCodeAt((i + 1 >> 0)) === 34))) {
  17084. break;
  17085. }
  17086. name = tag.substring(0, i);
  17087. tag = tag.substring((i + 1 >> 0));
  17088. i = 1;
  17089. while (true) {
  17090. if (!(i < tag.length && !((tag.charCodeAt(i) === 34)))) { break; }
  17091. if (tag.charCodeAt(i) === 92) {
  17092. i = i + (1) >> 0;
  17093. }
  17094. i = i + (1) >> 0;
  17095. }
  17096. if (i >= tag.length) {
  17097. break;
  17098. }
  17099. qvalue = tag.substring(0, (i + 1 >> 0));
  17100. tag = tag.substring((i + 1 >> 0));
  17101. if (name === "js") {
  17102. _tuple = strconv.Unquote(qvalue); value = _tuple[0];
  17103. return value;
  17104. }
  17105. }
  17106. return "";
  17107. };
  17108. Value.ptr.prototype.Index = function(i) {
  17109. var $ptr, _r, _r$1, _ref, a, a$1, c, fl, fl$1, fl$2, i, k, s, str, tt, tt$1, typ, typ$1, v, $s, $r;
  17110. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _ref = $f._ref; a = $f.a; a$1 = $f.a$1; c = $f.c; fl = $f.fl; fl$1 = $f.fl$1; fl$2 = $f.fl$2; i = $f.i; k = $f.k; s = $f.s; str = $f.str; tt = $f.tt; tt$1 = $f.tt$1; typ = $f.typ; typ$1 = $f.typ$1; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  17111. a = [a];
  17112. a$1 = [a$1];
  17113. c = [c];
  17114. i = [i];
  17115. typ = [typ];
  17116. typ$1 = [typ$1];
  17117. v = this;
  17118. k = new flag(v.flag).kind();
  17119. _ref = k;
  17120. /* */ if (_ref === 17) { $s = 1; continue; }
  17121. /* */ if (_ref === 23) { $s = 2; continue; }
  17122. /* */ if (_ref === 24) { $s = 3; continue; }
  17123. /* */ $s = 4; continue;
  17124. /* if (_ref === 17) { */ case 1:
  17125. tt = v.typ.kindType;
  17126. if (i[0] < 0 || i[0] > (tt.len >> 0)) {
  17127. $panic(new $String("reflect: array index out of range"));
  17128. }
  17129. typ$1[0] = tt.elem;
  17130. fl = (v.flag & 224) >>> 0;
  17131. fl = (fl | ((typ$1[0].Kind() >>> 0))) >>> 0;
  17132. a$1[0] = v.ptr;
  17133. /* */ if (!((((fl & 64) >>> 0) === 0)) && !((typ$1[0].Kind() === 17)) && !((typ$1[0].Kind() === 25))) { $s = 6; continue; }
  17134. /* */ $s = 7; continue;
  17135. /* if (!((((fl & 64) >>> 0) === 0)) && !((typ$1[0].Kind() === 17)) && !((typ$1[0].Kind() === 25))) { */ case 6:
  17136. return new Value.ptr(typ$1[0], new (jsType(PtrTo(typ$1[0])))((function(a, a$1, c, i, typ, typ$1) { return function() {
  17137. var $ptr;
  17138. return wrapJsObject(typ$1[0], a$1[0][i[0]]);
  17139. }; })(a, a$1, c, i, typ, typ$1), (function(a, a$1, c, i, typ, typ$1) { return function(x) {
  17140. var $ptr, x;
  17141. a$1[0][i[0]] = unwrapJsObject(typ$1[0], x);
  17142. }; })(a, a$1, c, i, typ, typ$1)), fl);
  17143. /* } */ case 7:
  17144. _r = makeValue(typ$1[0], wrapJsObject(typ$1[0], a$1[0][i[0]]), fl); /* */ $s = 8; case 8: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  17145. return _r;
  17146. $s = 5; continue;
  17147. /* } else if (_ref === 23) { */ case 2:
  17148. s = v.object();
  17149. if (i[0] < 0 || i[0] >= ($parseInt(s.$length) >> 0)) {
  17150. $panic(new $String("reflect: slice index out of range"));
  17151. }
  17152. tt$1 = v.typ.kindType;
  17153. typ[0] = tt$1.elem;
  17154. fl$1 = (192 | ((v.flag & 32) >>> 0)) >>> 0;
  17155. fl$1 = (fl$1 | ((typ[0].Kind() >>> 0))) >>> 0;
  17156. i[0] = i[0] + (($parseInt(s.$offset) >> 0)) >> 0;
  17157. a[0] = s.$array;
  17158. /* */ if (!((((fl$1 & 64) >>> 0) === 0)) && !((typ[0].Kind() === 17)) && !((typ[0].Kind() === 25))) { $s = 9; continue; }
  17159. /* */ $s = 10; continue;
  17160. /* if (!((((fl$1 & 64) >>> 0) === 0)) && !((typ[0].Kind() === 17)) && !((typ[0].Kind() === 25))) { */ case 9:
  17161. return new Value.ptr(typ[0], new (jsType(PtrTo(typ[0])))((function(a, a$1, c, i, typ, typ$1) { return function() {
  17162. var $ptr;
  17163. return wrapJsObject(typ[0], a[0][i[0]]);
  17164. }; })(a, a$1, c, i, typ, typ$1), (function(a, a$1, c, i, typ, typ$1) { return function(x) {
  17165. var $ptr, x;
  17166. a[0][i[0]] = unwrapJsObject(typ[0], x);
  17167. }; })(a, a$1, c, i, typ, typ$1)), fl$1);
  17168. /* } */ case 10:
  17169. _r$1 = makeValue(typ[0], wrapJsObject(typ[0], a[0][i[0]]), fl$1); /* */ $s = 11; case 11: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  17170. return _r$1;
  17171. $s = 5; continue;
  17172. /* } else if (_ref === 24) { */ case 3:
  17173. str = v.ptr.$get();
  17174. if (i[0] < 0 || i[0] >= str.length) {
  17175. $panic(new $String("reflect: string index out of range"));
  17176. }
  17177. fl$2 = (((v.flag & 32) >>> 0) | 8) >>> 0;
  17178. c[0] = str.charCodeAt(i[0]);
  17179. return new Value.ptr(uint8Type, (c.$ptr || (c.$ptr = new ptrType$9(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, c))), (fl$2 | 64) >>> 0);
  17180. $s = 5; continue;
  17181. /* } else { */ case 4:
  17182. $panic(new ValueError.ptr("reflect.Value.Index", k));
  17183. /* } */ case 5:
  17184. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.Index }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._ref = _ref; $f.a = a; $f.a$1 = a$1; $f.c = c; $f.fl = fl; $f.fl$1 = fl$1; $f.fl$2 = fl$2; $f.i = i; $f.k = k; $f.s = s; $f.str = str; $f.tt = tt; $f.tt$1 = tt$1; $f.typ = typ; $f.typ$1 = typ$1; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
  17185. };
  17186. Value.prototype.Index = function(i) { return this.$val.Index(i); };
  17187. Value.ptr.prototype.IsNil = function() {
  17188. var $ptr, _ref, k, v;
  17189. v = this;
  17190. k = new flag(v.flag).kind();
  17191. _ref = k;
  17192. if (_ref === 18 || _ref === 22 || _ref === 23) {
  17193. return v.object() === jsType(v.typ).nil;
  17194. } else if (_ref === 19) {
  17195. return v.object() === $throwNilPointerError;
  17196. } else if (_ref === 21) {
  17197. return v.object() === false;
  17198. } else if (_ref === 20) {
  17199. return v.object() === $ifaceNil;
  17200. } else {
  17201. $panic(new ValueError.ptr("reflect.Value.IsNil", k));
  17202. }
  17203. };
  17204. Value.prototype.IsNil = function() { return this.$val.IsNil(); };
  17205. Value.ptr.prototype.Len = function() {
  17206. var $ptr, _ref, k, v;
  17207. v = this;
  17208. k = new flag(v.flag).kind();
  17209. _ref = k;
  17210. if (_ref === 17 || _ref === 24) {
  17211. return $parseInt(v.object().length);
  17212. } else if (_ref === 23) {
  17213. return $parseInt(v.object().$length) >> 0;
  17214. } else if (_ref === 18) {
  17215. return $parseInt(v.object().$buffer.length) >> 0;
  17216. } else if (_ref === 21) {
  17217. return $parseInt($keys(v.object()).length);
  17218. } else {
  17219. $panic(new ValueError.ptr("reflect.Value.Len", k));
  17220. }
  17221. };
  17222. Value.prototype.Len = function() { return this.$val.Len(); };
  17223. Value.ptr.prototype.Pointer = function() {
  17224. var $ptr, _ref, k, v;
  17225. v = this;
  17226. k = new flag(v.flag).kind();
  17227. _ref = k;
  17228. if (_ref === 18 || _ref === 21 || _ref === 22 || _ref === 26) {
  17229. if (v.IsNil()) {
  17230. return 0;
  17231. }
  17232. return v.object();
  17233. } else if (_ref === 19) {
  17234. if (v.IsNil()) {
  17235. return 0;
  17236. }
  17237. return 1;
  17238. } else if (_ref === 23) {
  17239. if (v.IsNil()) {
  17240. return 0;
  17241. }
  17242. return v.object().$array;
  17243. } else {
  17244. $panic(new ValueError.ptr("reflect.Value.Pointer", k));
  17245. }
  17246. };
  17247. Value.prototype.Pointer = function() { return this.$val.Pointer(); };
  17248. Value.ptr.prototype.Set = function(x) {
  17249. var $ptr, _r, _r$1, _ref, v, x, $s, $r;
  17250. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _ref = $f._ref; v = $f.v; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  17251. v = this;
  17252. x = x;
  17253. new flag(v.flag).mustBeAssignable();
  17254. new flag(x.flag).mustBeExported();
  17255. _r = x.assignTo("reflect.Set", v.typ, 0); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  17256. x = _r;
  17257. /* */ if (!((((v.flag & 64) >>> 0) === 0))) { $s = 2; continue; }
  17258. /* */ $s = 3; continue;
  17259. /* if (!((((v.flag & 64) >>> 0) === 0))) { */ case 2:
  17260. _ref = v.typ.Kind();
  17261. /* */ if (_ref === 17) { $s = 4; continue; }
  17262. /* */ if (_ref === 20) { $s = 5; continue; }
  17263. /* */ if (_ref === 25) { $s = 6; continue; }
  17264. /* */ $s = 7; continue;
  17265. /* if (_ref === 17) { */ case 4:
  17266. $copy(v.ptr, x.ptr, jsType(v.typ));
  17267. $s = 8; continue;
  17268. /* } else if (_ref === 20) { */ case 5:
  17269. _r$1 = valueInterface(x, false); /* */ $s = 9; case 9: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  17270. v.ptr.$set(_r$1);
  17271. $s = 8; continue;
  17272. /* } else if (_ref === 25) { */ case 6:
  17273. copyStruct(v.ptr, x.ptr, v.typ);
  17274. $s = 8; continue;
  17275. /* } else { */ case 7:
  17276. v.ptr.$set(x.object());
  17277. /* } */ case 8:
  17278. return;
  17279. /* } */ case 3:
  17280. v.ptr = x.ptr;
  17281. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.Set }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._ref = _ref; $f.v = v; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
  17282. };
  17283. Value.prototype.Set = function(x) { return this.$val.Set(x); };
  17284. Value.ptr.prototype.SetCap = function(n) {
  17285. var $ptr, n, newSlice, s, v;
  17286. v = this;
  17287. new flag(v.flag).mustBeAssignable();
  17288. new flag(v.flag).mustBe(23);
  17289. s = v.ptr.$get();
  17290. if (n < ($parseInt(s.$length) >> 0) || n > ($parseInt(s.$capacity) >> 0)) {
  17291. $panic(new $String("reflect: slice capacity out of range in SetCap"));
  17292. }
  17293. newSlice = new (jsType(v.typ))(s.$array);
  17294. newSlice.$offset = s.$offset;
  17295. newSlice.$length = s.$length;
  17296. newSlice.$capacity = n;
  17297. v.ptr.$set(newSlice);
  17298. };
  17299. Value.prototype.SetCap = function(n) { return this.$val.SetCap(n); };
  17300. Value.ptr.prototype.SetLen = function(n) {
  17301. var $ptr, n, newSlice, s, v;
  17302. v = this;
  17303. new flag(v.flag).mustBeAssignable();
  17304. new flag(v.flag).mustBe(23);
  17305. s = v.ptr.$get();
  17306. if (n < 0 || n > ($parseInt(s.$capacity) >> 0)) {
  17307. $panic(new $String("reflect: slice length out of range in SetLen"));
  17308. }
  17309. newSlice = new (jsType(v.typ))(s.$array);
  17310. newSlice.$offset = s.$offset;
  17311. newSlice.$length = n;
  17312. newSlice.$capacity = s.$capacity;
  17313. v.ptr.$set(newSlice);
  17314. };
  17315. Value.prototype.SetLen = function(n) { return this.$val.SetLen(n); };
  17316. Value.ptr.prototype.Slice = function(i, j) {
  17317. var $ptr, _r, _r$1, _ref, cap, i, j, kind, s, str, tt, typ, v, $s, $r;
  17318. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _ref = $f._ref; cap = $f.cap; i = $f.i; j = $f.j; kind = $f.kind; s = $f.s; str = $f.str; tt = $f.tt; typ = $f.typ; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  17319. v = this;
  17320. cap = 0;
  17321. typ = $ifaceNil;
  17322. s = null;
  17323. kind = new flag(v.flag).kind();
  17324. _ref = kind;
  17325. /* */ if (_ref === 17) { $s = 1; continue; }
  17326. /* */ if (_ref === 23) { $s = 2; continue; }
  17327. /* */ if (_ref === 24) { $s = 3; continue; }
  17328. /* */ $s = 4; continue;
  17329. /* if (_ref === 17) { */ case 1:
  17330. if (((v.flag & 128) >>> 0) === 0) {
  17331. $panic(new $String("reflect.Value.Slice: slice of unaddressable array"));
  17332. }
  17333. tt = v.typ.kindType;
  17334. cap = (tt.len >> 0);
  17335. typ = SliceOf(tt.elem);
  17336. s = new (jsType(typ))(v.object());
  17337. $s = 5; continue;
  17338. /* } else if (_ref === 23) { */ case 2:
  17339. typ = v.typ;
  17340. s = v.object();
  17341. cap = $parseInt(s.$capacity) >> 0;
  17342. $s = 5; continue;
  17343. /* } else if (_ref === 24) { */ case 3:
  17344. str = v.ptr.$get();
  17345. if (i < 0 || j < i || j > str.length) {
  17346. $panic(new $String("reflect.Value.Slice: string slice index out of bounds"));
  17347. }
  17348. _r = ValueOf(new $String(str.substring(i, j))); /* */ $s = 6; case 6: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  17349. return _r;
  17350. $s = 5; continue;
  17351. /* } else { */ case 4:
  17352. $panic(new ValueError.ptr("reflect.Value.Slice", kind));
  17353. /* } */ case 5:
  17354. if (i < 0 || j < i || j > cap) {
  17355. $panic(new $String("reflect.Value.Slice: slice index out of bounds"));
  17356. }
  17357. _r$1 = makeValue(typ, $subslice(s, i, j), (v.flag & 32) >>> 0); /* */ $s = 7; case 7: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  17358. return _r$1;
  17359. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.Slice }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._ref = _ref; $f.cap = cap; $f.i = i; $f.j = j; $f.kind = kind; $f.s = s; $f.str = str; $f.tt = tt; $f.typ = typ; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
  17360. };
  17361. Value.prototype.Slice = function(i, j) { return this.$val.Slice(i, j); };
  17362. Value.ptr.prototype.Slice3 = function(i, j, k) {
  17363. var $ptr, _r, _ref, cap, i, j, k, kind, s, tt, typ, v, $s, $r;
  17364. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _ref = $f._ref; cap = $f.cap; i = $f.i; j = $f.j; k = $f.k; kind = $f.kind; s = $f.s; tt = $f.tt; typ = $f.typ; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  17365. v = this;
  17366. cap = 0;
  17367. typ = $ifaceNil;
  17368. s = null;
  17369. kind = new flag(v.flag).kind();
  17370. _ref = kind;
  17371. if (_ref === 17) {
  17372. if (((v.flag & 128) >>> 0) === 0) {
  17373. $panic(new $String("reflect.Value.Slice: slice of unaddressable array"));
  17374. }
  17375. tt = v.typ.kindType;
  17376. cap = (tt.len >> 0);
  17377. typ = SliceOf(tt.elem);
  17378. s = new (jsType(typ))(v.object());
  17379. } else if (_ref === 23) {
  17380. typ = v.typ;
  17381. s = v.object();
  17382. cap = $parseInt(s.$capacity) >> 0;
  17383. } else {
  17384. $panic(new ValueError.ptr("reflect.Value.Slice3", kind));
  17385. }
  17386. if (i < 0 || j < i || k < j || k > cap) {
  17387. $panic(new $String("reflect.Value.Slice3: slice index out of bounds"));
  17388. }
  17389. _r = makeValue(typ, $subslice(s, i, j, k), (v.flag & 32) >>> 0); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  17390. return _r;
  17391. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.Slice3 }; } $f.$ptr = $ptr; $f._r = _r; $f._ref = _ref; $f.cap = cap; $f.i = i; $f.j = j; $f.k = k; $f.kind = kind; $f.s = s; $f.tt = tt; $f.typ = typ; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
  17392. };
  17393. Value.prototype.Slice3 = function(i, j, k) { return this.$val.Slice3(i, j, k); };
  17394. Value.ptr.prototype.Close = function() {
  17395. var $ptr, v;
  17396. v = this;
  17397. new flag(v.flag).mustBe(18);
  17398. new flag(v.flag).mustBeExported();
  17399. $close(v.object());
  17400. };
  17401. Value.prototype.Close = function() { return this.$val.Close(); };
  17402. chanrecv = function(t, ch, nb, val) {
  17403. var $ptr, _r, _tmp, _tmp$1, _tmp$2, _tmp$3, ch, comms, nb, received, recvRes, selectRes, selected, t, val, $s, $r;
  17404. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; ch = $f.ch; comms = $f.comms; nb = $f.nb; received = $f.received; recvRes = $f.recvRes; selectRes = $f.selectRes; selected = $f.selected; t = $f.t; val = $f.val; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  17405. selected = false;
  17406. received = false;
  17407. comms = new sliceType$9([new sliceType$1([new $jsObjectPtr(ch)])]);
  17408. if (nb) {
  17409. comms = $append(comms, new sliceType$1([]));
  17410. }
  17411. _r = selectHelper(new sliceType$1([comms])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  17412. selectRes = _r;
  17413. if (nb && (($parseInt(selectRes[0]) >> 0) === 1)) {
  17414. _tmp = false; _tmp$1 = false; selected = _tmp; received = _tmp$1;
  17415. return [selected, received];
  17416. }
  17417. recvRes = selectRes[1];
  17418. val.$set(recvRes[0]);
  17419. _tmp$2 = true; _tmp$3 = !!(recvRes[1]); selected = _tmp$2; received = _tmp$3;
  17420. return [selected, received];
  17421. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: chanrecv }; } $f.$ptr = $ptr; $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f.ch = ch; $f.comms = comms; $f.nb = nb; $f.received = received; $f.recvRes = recvRes; $f.selectRes = selectRes; $f.selected = selected; $f.t = t; $f.val = val; $f.$s = $s; $f.$r = $r; return $f;
  17422. };
  17423. chansend = function(t, ch, val, nb) {
  17424. var $ptr, _r, ch, comms, nb, selectRes, t, val, $s, $r;
  17425. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; ch = $f.ch; comms = $f.comms; nb = $f.nb; selectRes = $f.selectRes; t = $f.t; val = $f.val; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  17426. comms = new sliceType$9([new sliceType$1([new $jsObjectPtr(ch), new $jsObjectPtr(val.$get())])]);
  17427. if (nb) {
  17428. comms = $append(comms, new sliceType$1([]));
  17429. }
  17430. _r = selectHelper(new sliceType$1([comms])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  17431. selectRes = _r;
  17432. if (nb && (($parseInt(selectRes[0]) >> 0) === 1)) {
  17433. return false;
  17434. }
  17435. return true;
  17436. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: chansend }; } $f.$ptr = $ptr; $f._r = _r; $f.ch = ch; $f.comms = comms; $f.nb = nb; $f.selectRes = selectRes; $f.t = t; $f.val = val; $f.$s = $s; $f.$r = $r; return $f;
  17437. };
  17438. DeepEqual = function(a1, a2) {
  17439. var $ptr, _arg, _arg$1, _arg$2, _r, _r$1, _r$2, a1, a2, i1, i2, $s, $r;
  17440. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _arg = $f._arg; _arg$1 = $f._arg$1; _arg$2 = $f._arg$2; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; a1 = $f.a1; a2 = $f.a2; i1 = $f.i1; i2 = $f.i2; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  17441. i1 = a1;
  17442. i2 = a2;
  17443. if (i1 === i2) {
  17444. return true;
  17445. }
  17446. if (i1 === null || i2 === null || !(i1.constructor === i2.constructor)) {
  17447. return false;
  17448. }
  17449. _r = ValueOf(a1); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  17450. _arg = _r;
  17451. _r$1 = ValueOf(a2); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  17452. _arg$1 = _r$1;
  17453. _arg$2 = sliceType$10.nil;
  17454. _r$2 = deepValueEqualJs(_arg, _arg$1, _arg$2); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  17455. return _r$2;
  17456. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: DeepEqual }; } $f.$ptr = $ptr; $f._arg = _arg; $f._arg$1 = _arg$1; $f._arg$2 = _arg$2; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f.a1 = a1; $f.a2 = a2; $f.i1 = i1; $f.i2 = i2; $f.$s = $s; $f.$r = $r; return $f;
  17457. };
  17458. $pkg.DeepEqual = DeepEqual;
  17459. deepValueEqualJs = function(v1, v2, visited) {
  17460. var $ptr, _arg, _arg$1, _arg$10, _arg$11, _arg$12, _arg$13, _arg$14, _arg$2, _arg$3, _arg$4, _arg$5, _arg$6, _arg$7, _arg$8, _arg$9, _i, _i$1, _r, _r$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$16, _r$17, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _ref$1, _ref$2, _ref$3, entry, i, i$1, k, keys, n, n$1, v1, v2, visited, $s, $r;
  17461. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _arg = $f._arg; _arg$1 = $f._arg$1; _arg$10 = $f._arg$10; _arg$11 = $f._arg$11; _arg$12 = $f._arg$12; _arg$13 = $f._arg$13; _arg$14 = $f._arg$14; _arg$2 = $f._arg$2; _arg$3 = $f._arg$3; _arg$4 = $f._arg$4; _arg$5 = $f._arg$5; _arg$6 = $f._arg$6; _arg$7 = $f._arg$7; _arg$8 = $f._arg$8; _arg$9 = $f._arg$9; _i = $f._i; _i$1 = $f._i$1; _r = $f._r; _r$1 = $f._r$1; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$12 = $f._r$12; _r$13 = $f._r$13; _r$14 = $f._r$14; _r$15 = $f._r$15; _r$16 = $f._r$16; _r$17 = $f._r$17; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _r$9 = $f._r$9; _ref = $f._ref; _ref$1 = $f._ref$1; _ref$2 = $f._ref$2; _ref$3 = $f._ref$3; entry = $f.entry; i = $f.i; i$1 = $f.i$1; k = $f.k; keys = $f.keys; n = $f.n; n$1 = $f.n$1; v1 = $f.v1; v2 = $f.v2; visited = $f.visited; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  17462. v2 = v2;
  17463. v1 = v1;
  17464. if (!v1.IsValid() || !v2.IsValid()) {
  17465. return !v1.IsValid() && !v2.IsValid();
  17466. }
  17467. if (!($interfaceIsEqual(v1.Type(), v2.Type()))) {
  17468. return false;
  17469. }
  17470. _ref = v1.Kind();
  17471. if (_ref === 17 || _ref === 21 || _ref === 23 || _ref === 25) {
  17472. _ref$1 = visited;
  17473. _i = 0;
  17474. while (true) {
  17475. if (!(_i < _ref$1.$length)) { break; }
  17476. entry = $clone(((_i < 0 || _i >= _ref$1.$length) ? $throwRuntimeError("index out of range") : _ref$1.$array[_ref$1.$offset + _i]), arrayType$1);
  17477. if (v1.ptr === entry[0] && v2.ptr === entry[1]) {
  17478. return true;
  17479. }
  17480. _i++;
  17481. }
  17482. visited = $append(visited, $toNativeArray($kindUnsafePointer, [v1.ptr, v2.ptr]));
  17483. }
  17484. _ref$2 = v1.Kind();
  17485. /* */ if (_ref$2 === 17 || _ref$2 === 23) { $s = 1; continue; }
  17486. /* */ if (_ref$2 === 20) { $s = 2; continue; }
  17487. /* */ if (_ref$2 === 22) { $s = 3; continue; }
  17488. /* */ if (_ref$2 === 25) { $s = 4; continue; }
  17489. /* */ if (_ref$2 === 21) { $s = 5; continue; }
  17490. /* */ if (_ref$2 === 19) { $s = 6; continue; }
  17491. /* */ if (_ref$2 === 26) { $s = 7; continue; }
  17492. /* */ $s = 8; continue;
  17493. /* if (_ref$2 === 17 || _ref$2 === 23) { */ case 1:
  17494. if (v1.Kind() === 23) {
  17495. if (!(v1.IsNil() === v2.IsNil())) {
  17496. return false;
  17497. }
  17498. if (v1.object() === v2.object()) {
  17499. return true;
  17500. }
  17501. }
  17502. n = v1.Len();
  17503. if (!((n === v2.Len()))) {
  17504. return false;
  17505. }
  17506. i = 0;
  17507. /* while (true) { */ case 9:
  17508. /* if (!(i < n)) { break; } */ if(!(i < n)) { $s = 10; continue; }
  17509. _r = v1.Index(i); /* */ $s = 13; case 13: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  17510. _arg = _r;
  17511. _r$1 = v2.Index(i); /* */ $s = 14; case 14: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  17512. _arg$1 = _r$1;
  17513. _arg$2 = visited;
  17514. _r$2 = deepValueEqualJs(_arg, _arg$1, _arg$2); /* */ $s = 15; case 15: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  17515. /* */ if (!_r$2) { $s = 11; continue; }
  17516. /* */ $s = 12; continue;
  17517. /* if (!_r$2) { */ case 11:
  17518. return false;
  17519. /* } */ case 12:
  17520. i = i + (1) >> 0;
  17521. /* } */ $s = 9; continue; case 10:
  17522. return true;
  17523. $s = 8; continue;
  17524. /* } else if (_ref$2 === 20) { */ case 2:
  17525. if (v1.IsNil() || v2.IsNil()) {
  17526. return v1.IsNil() && v2.IsNil();
  17527. }
  17528. _r$3 = v1.Elem(); /* */ $s = 16; case 16: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  17529. _arg$3 = _r$3;
  17530. _r$4 = v2.Elem(); /* */ $s = 17; case 17: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
  17531. _arg$4 = _r$4;
  17532. _arg$5 = visited;
  17533. _r$5 = deepValueEqualJs(_arg$3, _arg$4, _arg$5); /* */ $s = 18; case 18: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
  17534. return _r$5;
  17535. $s = 8; continue;
  17536. /* } else if (_ref$2 === 22) { */ case 3:
  17537. _r$6 = v1.Elem(); /* */ $s = 19; case 19: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
  17538. _arg$6 = _r$6;
  17539. _r$7 = v2.Elem(); /* */ $s = 20; case 20: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
  17540. _arg$7 = _r$7;
  17541. _arg$8 = visited;
  17542. _r$8 = deepValueEqualJs(_arg$6, _arg$7, _arg$8); /* */ $s = 21; case 21: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
  17543. return _r$8;
  17544. $s = 8; continue;
  17545. /* } else if (_ref$2 === 25) { */ case 4:
  17546. n$1 = v1.NumField();
  17547. i$1 = 0;
  17548. /* while (true) { */ case 22:
  17549. /* if (!(i$1 < n$1)) { break; } */ if(!(i$1 < n$1)) { $s = 23; continue; }
  17550. _r$9 = v1.Field(i$1); /* */ $s = 26; case 26: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
  17551. _arg$9 = _r$9;
  17552. _r$10 = v2.Field(i$1); /* */ $s = 27; case 27: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
  17553. _arg$10 = _r$10;
  17554. _arg$11 = visited;
  17555. _r$11 = deepValueEqualJs(_arg$9, _arg$10, _arg$11); /* */ $s = 28; case 28: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
  17556. /* */ if (!_r$11) { $s = 24; continue; }
  17557. /* */ $s = 25; continue;
  17558. /* if (!_r$11) { */ case 24:
  17559. return false;
  17560. /* } */ case 25:
  17561. i$1 = i$1 + (1) >> 0;
  17562. /* } */ $s = 22; continue; case 23:
  17563. return true;
  17564. $s = 8; continue;
  17565. /* } else if (_ref$2 === 21) { */ case 5:
  17566. if (!(v1.IsNil() === v2.IsNil())) {
  17567. return false;
  17568. }
  17569. if (v1.object() === v2.object()) {
  17570. return true;
  17571. }
  17572. _r$12 = v1.MapKeys(); /* */ $s = 29; case 29: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; }
  17573. keys = _r$12;
  17574. if (!((keys.$length === v2.Len()))) {
  17575. return false;
  17576. }
  17577. _ref$3 = keys;
  17578. _i$1 = 0;
  17579. /* while (true) { */ case 30:
  17580. /* if (!(_i$1 < _ref$3.$length)) { break; } */ if(!(_i$1 < _ref$3.$length)) { $s = 31; continue; }
  17581. k = ((_i$1 < 0 || _i$1 >= _ref$3.$length) ? $throwRuntimeError("index out of range") : _ref$3.$array[_ref$3.$offset + _i$1]);
  17582. _r$13 = v1.MapIndex(k); /* */ $s = 34; case 34: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; }
  17583. _arg$12 = _r$13;
  17584. _r$14 = v2.MapIndex(k); /* */ $s = 35; case 35: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; }
  17585. _arg$13 = _r$14;
  17586. _arg$14 = visited;
  17587. _r$15 = deepValueEqualJs(_arg$12, _arg$13, _arg$14); /* */ $s = 36; case 36: if($c) { $c = false; _r$15 = _r$15.$blk(); } if (_r$15 && _r$15.$blk !== undefined) { break s; }
  17588. /* */ if (!_r$15) { $s = 32; continue; }
  17589. /* */ $s = 33; continue;
  17590. /* if (!_r$15) { */ case 32:
  17591. return false;
  17592. /* } */ case 33:
  17593. _i$1++;
  17594. /* } */ $s = 30; continue; case 31:
  17595. return true;
  17596. $s = 8; continue;
  17597. /* } else if (_ref$2 === 19) { */ case 6:
  17598. return v1.IsNil() && v2.IsNil();
  17599. $s = 8; continue;
  17600. /* } else if (_ref$2 === 26) { */ case 7:
  17601. return v1.object() === v2.object();
  17602. /* } */ case 8:
  17603. _r$16 = valueInterface(v1, false); /* */ $s = 37; case 37: if($c) { $c = false; _r$16 = _r$16.$blk(); } if (_r$16 && _r$16.$blk !== undefined) { break s; }
  17604. _r$17 = valueInterface(v2, false); /* */ $s = 38; case 38: if($c) { $c = false; _r$17 = _r$17.$blk(); } if (_r$17 && _r$17.$blk !== undefined) { break s; }
  17605. return !!($interfaceIsEqual(_r$16, _r$17));
  17606. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: deepValueEqualJs }; } $f.$ptr = $ptr; $f._arg = _arg; $f._arg$1 = _arg$1; $f._arg$10 = _arg$10; $f._arg$11 = _arg$11; $f._arg$12 = _arg$12; $f._arg$13 = _arg$13; $f._arg$14 = _arg$14; $f._arg$2 = _arg$2; $f._arg$3 = _arg$3; $f._arg$4 = _arg$4; $f._arg$5 = _arg$5; $f._arg$6 = _arg$6; $f._arg$7 = _arg$7; $f._arg$8 = _arg$8; $f._arg$9 = _arg$9; $f._i = _i; $f._i$1 = _i$1; $f._r = _r; $f._r$1 = _r$1; $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$12 = _r$12; $f._r$13 = _r$13; $f._r$14 = _r$14; $f._r$15 = _r$15; $f._r$16 = _r$16; $f._r$17 = _r$17; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._r$9 = _r$9; $f._ref = _ref; $f._ref$1 = _ref$1; $f._ref$2 = _ref$2; $f._ref$3 = _ref$3; $f.entry = entry; $f.i = i; $f.i$1 = i$1; $f.k = k; $f.keys = keys; $f.n = n; $f.n$1 = n$1; $f.v1 = v1; $f.v2 = v2; $f.visited = visited; $f.$s = $s; $f.$r = $r; return $f;
  17607. };
  17608. Kind.prototype.String = function() {
  17609. var $ptr, k;
  17610. k = this.$val;
  17611. if ((k >> 0) < kindNames.$length) {
  17612. return ((k < 0 || k >= kindNames.$length) ? $throwRuntimeError("index out of range") : kindNames.$array[kindNames.$offset + k]);
  17613. }
  17614. return "kind" + strconv.Itoa((k >> 0));
  17615. };
  17616. $ptrType(Kind).prototype.String = function() { return new Kind(this.$get()).String(); };
  17617. uncommonType.ptr.prototype.uncommon = function() {
  17618. var $ptr, t;
  17619. t = this;
  17620. return t;
  17621. };
  17622. uncommonType.prototype.uncommon = function() { return this.$val.uncommon(); };
  17623. uncommonType.ptr.prototype.PkgPath = function() {
  17624. var $ptr, t;
  17625. t = this;
  17626. if (t === ptrType$6.nil || t.pkgPath === ptrType$5.nil) {
  17627. return "";
  17628. }
  17629. return t.pkgPath.$get();
  17630. };
  17631. uncommonType.prototype.PkgPath = function() { return this.$val.PkgPath(); };
  17632. uncommonType.ptr.prototype.Name = function() {
  17633. var $ptr, t;
  17634. t = this;
  17635. if (t === ptrType$6.nil || t.name === ptrType$5.nil) {
  17636. return "";
  17637. }
  17638. return t.name.$get();
  17639. };
  17640. uncommonType.prototype.Name = function() { return this.$val.Name(); };
  17641. rtype.ptr.prototype.String = function() {
  17642. var $ptr, t;
  17643. t = this;
  17644. return t.string.$get();
  17645. };
  17646. rtype.prototype.String = function() { return this.$val.String(); };
  17647. rtype.ptr.prototype.Size = function() {
  17648. var $ptr, t;
  17649. t = this;
  17650. return t.size;
  17651. };
  17652. rtype.prototype.Size = function() { return this.$val.Size(); };
  17653. rtype.ptr.prototype.Bits = function() {
  17654. var $ptr, k, t;
  17655. t = this;
  17656. if (t === ptrType$1.nil) {
  17657. $panic(new $String("reflect: Bits of nil Type"));
  17658. }
  17659. k = t.Kind();
  17660. if (k < 2 || k > 16) {
  17661. $panic(new $String("reflect: Bits of non-arithmetic Type " + t.String()));
  17662. }
  17663. return (t.size >> 0) * 8 >> 0;
  17664. };
  17665. rtype.prototype.Bits = function() { return this.$val.Bits(); };
  17666. rtype.ptr.prototype.Align = function() {
  17667. var $ptr, t;
  17668. t = this;
  17669. return (t.align >> 0);
  17670. };
  17671. rtype.prototype.Align = function() { return this.$val.Align(); };
  17672. rtype.ptr.prototype.FieldAlign = function() {
  17673. var $ptr, t;
  17674. t = this;
  17675. return (t.fieldAlign >> 0);
  17676. };
  17677. rtype.prototype.FieldAlign = function() { return this.$val.FieldAlign(); };
  17678. rtype.ptr.prototype.Kind = function() {
  17679. var $ptr, t;
  17680. t = this;
  17681. return (((t.kind & 31) >>> 0) >>> 0);
  17682. };
  17683. rtype.prototype.Kind = function() { return this.$val.Kind(); };
  17684. rtype.ptr.prototype.common = function() {
  17685. var $ptr, t;
  17686. t = this;
  17687. return t;
  17688. };
  17689. rtype.prototype.common = function() { return this.$val.common(); };
  17690. uncommonType.ptr.prototype.NumMethod = function() {
  17691. var $ptr, t;
  17692. t = this;
  17693. if (t === ptrType$6.nil) {
  17694. return 0;
  17695. }
  17696. return t.methods.$length;
  17697. };
  17698. uncommonType.prototype.NumMethod = function() { return this.$val.NumMethod(); };
  17699. uncommonType.ptr.prototype.MethodByName = function(name) {
  17700. var $ptr, _i, _ref, _tmp, _tmp$1, i, m, name, ok, p, t, x;
  17701. m = new Method.ptr();
  17702. ok = false;
  17703. t = this;
  17704. if (t === ptrType$6.nil) {
  17705. return [m, ok];
  17706. }
  17707. p = ptrType$10.nil;
  17708. _ref = t.methods;
  17709. _i = 0;
  17710. while (true) {
  17711. if (!(_i < _ref.$length)) { break; }
  17712. i = _i;
  17713. p = (x = t.methods, ((i < 0 || i >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + i]));
  17714. if (!(p.name === ptrType$5.nil) && p.name.$get() === name) {
  17715. _tmp = $clone(t.Method(i), Method); _tmp$1 = true; $copy(m, _tmp, Method); ok = _tmp$1;
  17716. return [m, ok];
  17717. }
  17718. _i++;
  17719. }
  17720. return [m, ok];
  17721. };
  17722. uncommonType.prototype.MethodByName = function(name) { return this.$val.MethodByName(name); };
  17723. rtype.ptr.prototype.NumMethod = function() {
  17724. var $ptr, t, tt;
  17725. t = this;
  17726. if (t.Kind() === 20) {
  17727. tt = t.kindType;
  17728. return tt.NumMethod();
  17729. }
  17730. return t.uncommonType.NumMethod();
  17731. };
  17732. rtype.prototype.NumMethod = function() { return this.$val.NumMethod(); };
  17733. rtype.ptr.prototype.Method = function(i) {
  17734. var $ptr, i, m, t, tt;
  17735. m = new Method.ptr();
  17736. t = this;
  17737. if (t.Kind() === 20) {
  17738. tt = t.kindType;
  17739. $copy(m, tt.Method(i), Method);
  17740. return m;
  17741. }
  17742. $copy(m, t.uncommonType.Method(i), Method);
  17743. return m;
  17744. };
  17745. rtype.prototype.Method = function(i) { return this.$val.Method(i); };
  17746. rtype.ptr.prototype.MethodByName = function(name) {
  17747. var $ptr, _tuple, _tuple$1, m, name, ok, t, tt;
  17748. m = new Method.ptr();
  17749. ok = false;
  17750. t = this;
  17751. if (t.Kind() === 20) {
  17752. tt = t.kindType;
  17753. _tuple = tt.MethodByName(name); $copy(m, _tuple[0], Method); ok = _tuple[1];
  17754. return [m, ok];
  17755. }
  17756. _tuple$1 = t.uncommonType.MethodByName(name); $copy(m, _tuple$1[0], Method); ok = _tuple$1[1];
  17757. return [m, ok];
  17758. };
  17759. rtype.prototype.MethodByName = function(name) { return this.$val.MethodByName(name); };
  17760. rtype.ptr.prototype.PkgPath = function() {
  17761. var $ptr, t;
  17762. t = this;
  17763. return t.uncommonType.PkgPath();
  17764. };
  17765. rtype.prototype.PkgPath = function() { return this.$val.PkgPath(); };
  17766. rtype.ptr.prototype.Name = function() {
  17767. var $ptr, t;
  17768. t = this;
  17769. return t.uncommonType.Name();
  17770. };
  17771. rtype.prototype.Name = function() { return this.$val.Name(); };
  17772. rtype.ptr.prototype.ChanDir = function() {
  17773. var $ptr, t, tt;
  17774. t = this;
  17775. if (!((t.Kind() === 18))) {
  17776. $panic(new $String("reflect: ChanDir of non-chan type"));
  17777. }
  17778. tt = t.kindType;
  17779. return (tt.dir >> 0);
  17780. };
  17781. rtype.prototype.ChanDir = function() { return this.$val.ChanDir(); };
  17782. rtype.ptr.prototype.IsVariadic = function() {
  17783. var $ptr, t, tt;
  17784. t = this;
  17785. if (!((t.Kind() === 19))) {
  17786. $panic(new $String("reflect: IsVariadic of non-func type"));
  17787. }
  17788. tt = t.kindType;
  17789. return tt.dotdotdot;
  17790. };
  17791. rtype.prototype.IsVariadic = function() { return this.$val.IsVariadic(); };
  17792. rtype.ptr.prototype.Elem = function() {
  17793. var $ptr, _ref, t, tt, tt$1, tt$2, tt$3, tt$4;
  17794. t = this;
  17795. _ref = t.Kind();
  17796. if (_ref === 17) {
  17797. tt = t.kindType;
  17798. return toType(tt.elem);
  17799. } else if (_ref === 18) {
  17800. tt$1 = t.kindType;
  17801. return toType(tt$1.elem);
  17802. } else if (_ref === 21) {
  17803. tt$2 = t.kindType;
  17804. return toType(tt$2.elem);
  17805. } else if (_ref === 22) {
  17806. tt$3 = t.kindType;
  17807. return toType(tt$3.elem);
  17808. } else if (_ref === 23) {
  17809. tt$4 = t.kindType;
  17810. return toType(tt$4.elem);
  17811. }
  17812. $panic(new $String("reflect: Elem of invalid type"));
  17813. };
  17814. rtype.prototype.Elem = function() { return this.$val.Elem(); };
  17815. rtype.ptr.prototype.Field = function(i) {
  17816. var $ptr, _r, i, t, tt, $s, $r;
  17817. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; i = $f.i; t = $f.t; tt = $f.tt; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  17818. t = this;
  17819. if (!((t.Kind() === 25))) {
  17820. $panic(new $String("reflect: Field of non-struct type"));
  17821. }
  17822. tt = t.kindType;
  17823. _r = tt.Field(i); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  17824. return _r;
  17825. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: rtype.ptr.prototype.Field }; } $f.$ptr = $ptr; $f._r = _r; $f.i = i; $f.t = t; $f.tt = tt; $f.$s = $s; $f.$r = $r; return $f;
  17826. };
  17827. rtype.prototype.Field = function(i) { return this.$val.Field(i); };
  17828. rtype.ptr.prototype.FieldByIndex = function(index) {
  17829. var $ptr, _r, index, t, tt, $s, $r;
  17830. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; index = $f.index; t = $f.t; tt = $f.tt; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  17831. t = this;
  17832. if (!((t.Kind() === 25))) {
  17833. $panic(new $String("reflect: FieldByIndex of non-struct type"));
  17834. }
  17835. tt = t.kindType;
  17836. _r = tt.FieldByIndex(index); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  17837. return _r;
  17838. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: rtype.ptr.prototype.FieldByIndex }; } $f.$ptr = $ptr; $f._r = _r; $f.index = index; $f.t = t; $f.tt = tt; $f.$s = $s; $f.$r = $r; return $f;
  17839. };
  17840. rtype.prototype.FieldByIndex = function(index) { return this.$val.FieldByIndex(index); };
  17841. rtype.ptr.prototype.FieldByName = function(name) {
  17842. var $ptr, _r, name, t, tt, $s, $r;
  17843. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; name = $f.name; t = $f.t; tt = $f.tt; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  17844. t = this;
  17845. if (!((t.Kind() === 25))) {
  17846. $panic(new $String("reflect: FieldByName of non-struct type"));
  17847. }
  17848. tt = t.kindType;
  17849. _r = tt.FieldByName(name); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  17850. return _r;
  17851. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: rtype.ptr.prototype.FieldByName }; } $f.$ptr = $ptr; $f._r = _r; $f.name = name; $f.t = t; $f.tt = tt; $f.$s = $s; $f.$r = $r; return $f;
  17852. };
  17853. rtype.prototype.FieldByName = function(name) { return this.$val.FieldByName(name); };
  17854. rtype.ptr.prototype.FieldByNameFunc = function(match) {
  17855. var $ptr, _r, match, t, tt, $s, $r;
  17856. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; match = $f.match; t = $f.t; tt = $f.tt; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  17857. t = this;
  17858. if (!((t.Kind() === 25))) {
  17859. $panic(new $String("reflect: FieldByNameFunc of non-struct type"));
  17860. }
  17861. tt = t.kindType;
  17862. _r = tt.FieldByNameFunc(match); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  17863. return _r;
  17864. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: rtype.ptr.prototype.FieldByNameFunc }; } $f.$ptr = $ptr; $f._r = _r; $f.match = match; $f.t = t; $f.tt = tt; $f.$s = $s; $f.$r = $r; return $f;
  17865. };
  17866. rtype.prototype.FieldByNameFunc = function(match) { return this.$val.FieldByNameFunc(match); };
  17867. rtype.ptr.prototype.In = function(i) {
  17868. var $ptr, i, t, tt, x;
  17869. t = this;
  17870. if (!((t.Kind() === 19))) {
  17871. $panic(new $String("reflect: In of non-func type"));
  17872. }
  17873. tt = t.kindType;
  17874. return toType((x = tt.in$2, ((i < 0 || i >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + i])));
  17875. };
  17876. rtype.prototype.In = function(i) { return this.$val.In(i); };
  17877. rtype.ptr.prototype.Key = function() {
  17878. var $ptr, t, tt;
  17879. t = this;
  17880. if (!((t.Kind() === 21))) {
  17881. $panic(new $String("reflect: Key of non-map type"));
  17882. }
  17883. tt = t.kindType;
  17884. return toType(tt.key);
  17885. };
  17886. rtype.prototype.Key = function() { return this.$val.Key(); };
  17887. rtype.ptr.prototype.Len = function() {
  17888. var $ptr, t, tt;
  17889. t = this;
  17890. if (!((t.Kind() === 17))) {
  17891. $panic(new $String("reflect: Len of non-array type"));
  17892. }
  17893. tt = t.kindType;
  17894. return (tt.len >> 0);
  17895. };
  17896. rtype.prototype.Len = function() { return this.$val.Len(); };
  17897. rtype.ptr.prototype.NumField = function() {
  17898. var $ptr, t, tt;
  17899. t = this;
  17900. if (!((t.Kind() === 25))) {
  17901. $panic(new $String("reflect: NumField of non-struct type"));
  17902. }
  17903. tt = t.kindType;
  17904. return tt.fields.$length;
  17905. };
  17906. rtype.prototype.NumField = function() { return this.$val.NumField(); };
  17907. rtype.ptr.prototype.NumIn = function() {
  17908. var $ptr, t, tt;
  17909. t = this;
  17910. if (!((t.Kind() === 19))) {
  17911. $panic(new $String("reflect: NumIn of non-func type"));
  17912. }
  17913. tt = t.kindType;
  17914. return tt.in$2.$length;
  17915. };
  17916. rtype.prototype.NumIn = function() { return this.$val.NumIn(); };
  17917. rtype.ptr.prototype.NumOut = function() {
  17918. var $ptr, t, tt;
  17919. t = this;
  17920. if (!((t.Kind() === 19))) {
  17921. $panic(new $String("reflect: NumOut of non-func type"));
  17922. }
  17923. tt = t.kindType;
  17924. return tt.out.$length;
  17925. };
  17926. rtype.prototype.NumOut = function() { return this.$val.NumOut(); };
  17927. rtype.ptr.prototype.Out = function(i) {
  17928. var $ptr, i, t, tt, x;
  17929. t = this;
  17930. if (!((t.Kind() === 19))) {
  17931. $panic(new $String("reflect: Out of non-func type"));
  17932. }
  17933. tt = t.kindType;
  17934. return toType((x = tt.out, ((i < 0 || i >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + i])));
  17935. };
  17936. rtype.prototype.Out = function(i) { return this.$val.Out(i); };
  17937. ChanDir.prototype.String = function() {
  17938. var $ptr, _ref, d;
  17939. d = this.$val;
  17940. _ref = d;
  17941. if (_ref === 2) {
  17942. return "chan<-";
  17943. } else if (_ref === 1) {
  17944. return "<-chan";
  17945. } else if (_ref === 3) {
  17946. return "chan";
  17947. }
  17948. return "ChanDir" + strconv.Itoa((d >> 0));
  17949. };
  17950. $ptrType(ChanDir).prototype.String = function() { return new ChanDir(this.$get()).String(); };
  17951. interfaceType.ptr.prototype.Method = function(i) {
  17952. var $ptr, i, m, p, t, x;
  17953. m = new Method.ptr();
  17954. t = this;
  17955. if (i < 0 || i >= t.methods.$length) {
  17956. return m;
  17957. }
  17958. p = (x = t.methods, ((i < 0 || i >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + i]));
  17959. m.Name = p.name.$get();
  17960. if (!(p.pkgPath === ptrType$5.nil)) {
  17961. m.PkgPath = p.pkgPath.$get();
  17962. }
  17963. m.Type = toType(p.typ);
  17964. m.Index = i;
  17965. return m;
  17966. };
  17967. interfaceType.prototype.Method = function(i) { return this.$val.Method(i); };
  17968. interfaceType.ptr.prototype.NumMethod = function() {
  17969. var $ptr, t;
  17970. t = this;
  17971. return t.methods.$length;
  17972. };
  17973. interfaceType.prototype.NumMethod = function() { return this.$val.NumMethod(); };
  17974. interfaceType.ptr.prototype.MethodByName = function(name) {
  17975. var $ptr, _i, _ref, _tmp, _tmp$1, i, m, name, ok, p, t, x;
  17976. m = new Method.ptr();
  17977. ok = false;
  17978. t = this;
  17979. if (t === ptrType$11.nil) {
  17980. return [m, ok];
  17981. }
  17982. p = ptrType$12.nil;
  17983. _ref = t.methods;
  17984. _i = 0;
  17985. while (true) {
  17986. if (!(_i < _ref.$length)) { break; }
  17987. i = _i;
  17988. p = (x = t.methods, ((i < 0 || i >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + i]));
  17989. if (p.name.$get() === name) {
  17990. _tmp = $clone(t.Method(i), Method); _tmp$1 = true; $copy(m, _tmp, Method); ok = _tmp$1;
  17991. return [m, ok];
  17992. }
  17993. _i++;
  17994. }
  17995. return [m, ok];
  17996. };
  17997. interfaceType.prototype.MethodByName = function(name) { return this.$val.MethodByName(name); };
  17998. StructTag.prototype.Get = function(key) {
  17999. var $ptr, _tuple, i, key, name, qvalue, tag, value;
  18000. tag = this.$val;
  18001. while (true) {
  18002. if (!(!(tag === ""))) { break; }
  18003. i = 0;
  18004. while (true) {
  18005. if (!(i < tag.length && (tag.charCodeAt(i) === 32))) { break; }
  18006. i = i + (1) >> 0;
  18007. }
  18008. tag = tag.substring(i);
  18009. if (tag === "") {
  18010. break;
  18011. }
  18012. i = 0;
  18013. while (true) {
  18014. if (!(i < tag.length && !((tag.charCodeAt(i) === 32)) && !((tag.charCodeAt(i) === 58)) && !((tag.charCodeAt(i) === 34)))) { break; }
  18015. i = i + (1) >> 0;
  18016. }
  18017. if ((i + 1 >> 0) >= tag.length || !((tag.charCodeAt(i) === 58)) || !((tag.charCodeAt((i + 1 >> 0)) === 34))) {
  18018. break;
  18019. }
  18020. name = tag.substring(0, i);
  18021. tag = tag.substring((i + 1 >> 0));
  18022. i = 1;
  18023. while (true) {
  18024. if (!(i < tag.length && !((tag.charCodeAt(i) === 34)))) { break; }
  18025. if (tag.charCodeAt(i) === 92) {
  18026. i = i + (1) >> 0;
  18027. }
  18028. i = i + (1) >> 0;
  18029. }
  18030. if (i >= tag.length) {
  18031. break;
  18032. }
  18033. qvalue = tag.substring(0, (i + 1 >> 0));
  18034. tag = tag.substring((i + 1 >> 0));
  18035. if (key === name) {
  18036. _tuple = strconv.Unquote(qvalue); value = _tuple[0];
  18037. return value;
  18038. }
  18039. }
  18040. return "";
  18041. };
  18042. $ptrType(StructTag).prototype.Get = function(key) { return new StructTag(this.$get()).Get(key); };
  18043. structType.ptr.prototype.Field = function(i) {
  18044. var $ptr, _r, _r$1, _r$2, f, i, p, t, t$1, x, $s, $r;
  18045. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; f = $f.f; i = $f.i; p = $f.p; t = $f.t; t$1 = $f.t$1; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  18046. f = new StructField.ptr();
  18047. t = this;
  18048. if (i < 0 || i >= t.fields.$length) {
  18049. return f;
  18050. }
  18051. p = (x = t.fields, ((i < 0 || i >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + i]));
  18052. f.Type = toType(p.typ);
  18053. /* */ if (!(p.name === ptrType$5.nil)) { $s = 1; continue; }
  18054. /* */ $s = 2; continue;
  18055. /* if (!(p.name === ptrType$5.nil)) { */ case 1:
  18056. f.Name = p.name.$get();
  18057. $s = 3; continue;
  18058. /* } else { */ case 2:
  18059. t$1 = f.Type;
  18060. _r = t$1.Kind(); /* */ $s = 6; case 6: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  18061. /* */ if (_r === 22) { $s = 4; continue; }
  18062. /* */ $s = 5; continue;
  18063. /* if (_r === 22) { */ case 4:
  18064. _r$1 = t$1.Elem(); /* */ $s = 7; case 7: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  18065. t$1 = _r$1;
  18066. /* } */ case 5:
  18067. _r$2 = t$1.Name(); /* */ $s = 8; case 8: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  18068. f.Name = _r$2;
  18069. f.Anonymous = true;
  18070. /* } */ case 3:
  18071. if (!(p.pkgPath === ptrType$5.nil)) {
  18072. f.PkgPath = p.pkgPath.$get();
  18073. }
  18074. if (!(p.tag === ptrType$5.nil)) {
  18075. f.Tag = p.tag.$get();
  18076. }
  18077. f.Offset = p.offset;
  18078. f.Index = new sliceType$11([i]);
  18079. return f;
  18080. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: structType.ptr.prototype.Field }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f.f = f; $f.i = i; $f.p = p; $f.t = t; $f.t$1 = t$1; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
  18081. };
  18082. structType.prototype.Field = function(i) { return this.$val.Field(i); };
  18083. structType.ptr.prototype.FieldByIndex = function(index) {
  18084. var $ptr, _i, _r, _r$1, _r$2, _r$3, _r$4, _ref, _v, f, ft, i, index, t, x, $s, $r;
  18085. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _i = $f._i; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _ref = $f._ref; _v = $f._v; f = $f.f; ft = $f.ft; i = $f.i; index = $f.index; t = $f.t; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  18086. f = new StructField.ptr();
  18087. t = this;
  18088. f.Type = toType(t.rtype);
  18089. _ref = index;
  18090. _i = 0;
  18091. /* while (true) { */ case 1:
  18092. /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; }
  18093. i = _i;
  18094. x = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]);
  18095. /* */ if (i > 0) { $s = 3; continue; }
  18096. /* */ $s = 4; continue;
  18097. /* if (i > 0) { */ case 3:
  18098. ft = f.Type;
  18099. _r = ft.Kind(); /* */ $s = 8; case 8: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  18100. if (!(_r === 22)) { _v = false; $s = 7; continue s; }
  18101. _r$1 = ft.Elem(); /* */ $s = 9; case 9: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  18102. _r$2 = _r$1.Kind(); /* */ $s = 10; case 10: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  18103. _v = _r$2 === 25; case 7:
  18104. /* */ if (_v) { $s = 5; continue; }
  18105. /* */ $s = 6; continue;
  18106. /* if (_v) { */ case 5:
  18107. _r$3 = ft.Elem(); /* */ $s = 11; case 11: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  18108. ft = _r$3;
  18109. /* } */ case 6:
  18110. f.Type = ft;
  18111. /* } */ case 4:
  18112. _r$4 = f.Type.Field(x); /* */ $s = 12; case 12: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
  18113. $copy(f, _r$4, StructField);
  18114. _i++;
  18115. /* } */ $s = 1; continue; case 2:
  18116. return f;
  18117. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: structType.ptr.prototype.FieldByIndex }; } $f.$ptr = $ptr; $f._i = _i; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._ref = _ref; $f._v = _v; $f.f = f; $f.ft = ft; $f.i = i; $f.index = index; $f.t = t; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
  18118. };
  18119. structType.prototype.FieldByIndex = function(index) { return this.$val.FieldByIndex(index); };
  18120. structType.ptr.prototype.FieldByNameFunc = function(match) {
  18121. var $ptr, _entry, _entry$1, _entry$2, _entry$3, _i, _i$1, _key, _key$1, _key$2, _key$3, _key$4, _key$5, _map, _map$1, _r, _r$1, _r$2, _ref, _ref$1, _tmp, _tmp$1, _tmp$2, _tmp$3, count, current, f, fname, i, index, match, next, nextCount, ntyp, ok, result, scan, styp, t, t$1, visited, x, $s, $r;
  18122. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _entry = $f._entry; _entry$1 = $f._entry$1; _entry$2 = $f._entry$2; _entry$3 = $f._entry$3; _i = $f._i; _i$1 = $f._i$1; _key = $f._key; _key$1 = $f._key$1; _key$2 = $f._key$2; _key$3 = $f._key$3; _key$4 = $f._key$4; _key$5 = $f._key$5; _map = $f._map; _map$1 = $f._map$1; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _ref = $f._ref; _ref$1 = $f._ref$1; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; count = $f.count; current = $f.current; f = $f.f; fname = $f.fname; i = $f.i; index = $f.index; match = $f.match; next = $f.next; nextCount = $f.nextCount; ntyp = $f.ntyp; ok = $f.ok; result = $f.result; scan = $f.scan; styp = $f.styp; t = $f.t; t$1 = $f.t$1; visited = $f.visited; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  18123. result = new StructField.ptr();
  18124. ok = false;
  18125. t = this;
  18126. current = new sliceType$12([]);
  18127. next = new sliceType$12([new fieldScan.ptr(t, sliceType$11.nil)]);
  18128. nextCount = false;
  18129. visited = (_map = new $Map(), _map);
  18130. /* while (true) { */ case 1:
  18131. /* if (!(next.$length > 0)) { break; } */ if(!(next.$length > 0)) { $s = 2; continue; }
  18132. _tmp = next; _tmp$1 = $subslice(current, 0, 0); current = _tmp; next = _tmp$1;
  18133. count = nextCount;
  18134. nextCount = false;
  18135. _ref = current;
  18136. _i = 0;
  18137. /* while (true) { */ case 3:
  18138. /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 4; continue; }
  18139. scan = $clone(((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]), fieldScan);
  18140. t$1 = scan.typ;
  18141. /* */ if ((_entry = visited[t$1.$key()], _entry !== undefined ? _entry.v : false)) { $s = 5; continue; }
  18142. /* */ $s = 6; continue;
  18143. /* if ((_entry = visited[t$1.$key()], _entry !== undefined ? _entry.v : false)) { */ case 5:
  18144. _i++;
  18145. /* continue; */ $s = 3; continue;
  18146. /* } */ case 6:
  18147. _key$1 = t$1; (visited || $throwRuntimeError("assignment to entry in nil map"))[_key$1.$key()] = { k: _key$1, v: true };
  18148. _ref$1 = t$1.fields;
  18149. _i$1 = 0;
  18150. /* while (true) { */ case 7:
  18151. /* if (!(_i$1 < _ref$1.$length)) { break; } */ if(!(_i$1 < _ref$1.$length)) { $s = 8; continue; }
  18152. i = _i$1;
  18153. f = (x = t$1.fields, ((i < 0 || i >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + i]));
  18154. fname = "";
  18155. ntyp = ptrType$1.nil;
  18156. /* */ if (!(f.name === ptrType$5.nil)) { $s = 9; continue; }
  18157. /* */ $s = 10; continue;
  18158. /* if (!(f.name === ptrType$5.nil)) { */ case 9:
  18159. fname = f.name.$get();
  18160. $s = 11; continue;
  18161. /* } else { */ case 10:
  18162. ntyp = f.typ;
  18163. /* */ if (ntyp.Kind() === 22) { $s = 12; continue; }
  18164. /* */ $s = 13; continue;
  18165. /* if (ntyp.Kind() === 22) { */ case 12:
  18166. _r = ntyp.Elem().common(); /* */ $s = 14; case 14: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  18167. ntyp = _r;
  18168. /* } */ case 13:
  18169. fname = ntyp.Name();
  18170. /* } */ case 11:
  18171. _r$1 = match(fname); /* */ $s = 17; case 17: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  18172. /* */ if (_r$1) { $s = 15; continue; }
  18173. /* */ $s = 16; continue;
  18174. /* if (_r$1) { */ case 15:
  18175. if ((_entry$1 = count[t$1.$key()], _entry$1 !== undefined ? _entry$1.v : 0) > 1 || ok) {
  18176. _tmp$2 = new StructField.ptr("", "", $ifaceNil, "", 0, sliceType$11.nil, false); _tmp$3 = false; $copy(result, _tmp$2, StructField); ok = _tmp$3;
  18177. return [result, ok];
  18178. }
  18179. _r$2 = t$1.Field(i); /* */ $s = 18; case 18: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  18180. $copy(result, _r$2, StructField);
  18181. result.Index = sliceType$11.nil;
  18182. result.Index = $appendSlice(result.Index, scan.index);
  18183. result.Index = $append(result.Index, i);
  18184. ok = true;
  18185. _i$1++;
  18186. /* continue; */ $s = 7; continue;
  18187. /* } */ case 16:
  18188. if (ok || ntyp === ptrType$1.nil || !((ntyp.Kind() === 25))) {
  18189. _i$1++;
  18190. /* continue; */ $s = 7; continue;
  18191. }
  18192. styp = ntyp.kindType;
  18193. if ((_entry$2 = nextCount[styp.$key()], _entry$2 !== undefined ? _entry$2.v : 0) > 0) {
  18194. _key$2 = styp; (nextCount || $throwRuntimeError("assignment to entry in nil map"))[_key$2.$key()] = { k: _key$2, v: 2 };
  18195. _i$1++;
  18196. /* continue; */ $s = 7; continue;
  18197. }
  18198. if (nextCount === false) {
  18199. nextCount = (_map$1 = new $Map(), _map$1);
  18200. }
  18201. _key$4 = styp; (nextCount || $throwRuntimeError("assignment to entry in nil map"))[_key$4.$key()] = { k: _key$4, v: 1 };
  18202. if ((_entry$3 = count[t$1.$key()], _entry$3 !== undefined ? _entry$3.v : 0) > 1) {
  18203. _key$5 = styp; (nextCount || $throwRuntimeError("assignment to entry in nil map"))[_key$5.$key()] = { k: _key$5, v: 2 };
  18204. }
  18205. index = sliceType$11.nil;
  18206. index = $appendSlice(index, scan.index);
  18207. index = $append(index, i);
  18208. next = $append(next, new fieldScan.ptr(styp, index));
  18209. _i$1++;
  18210. /* } */ $s = 7; continue; case 8:
  18211. _i++;
  18212. /* } */ $s = 3; continue; case 4:
  18213. if (ok) {
  18214. /* break; */ $s = 2; continue;
  18215. }
  18216. /* } */ $s = 1; continue; case 2:
  18217. return [result, ok];
  18218. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: structType.ptr.prototype.FieldByNameFunc }; } $f.$ptr = $ptr; $f._entry = _entry; $f._entry$1 = _entry$1; $f._entry$2 = _entry$2; $f._entry$3 = _entry$3; $f._i = _i; $f._i$1 = _i$1; $f._key = _key; $f._key$1 = _key$1; $f._key$2 = _key$2; $f._key$3 = _key$3; $f._key$4 = _key$4; $f._key$5 = _key$5; $f._map = _map; $f._map$1 = _map$1; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._ref = _ref; $f._ref$1 = _ref$1; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f.count = count; $f.current = current; $f.f = f; $f.fname = fname; $f.i = i; $f.index = index; $f.match = match; $f.next = next; $f.nextCount = nextCount; $f.ntyp = ntyp; $f.ok = ok; $f.result = result; $f.scan = scan; $f.styp = styp; $f.t = t; $f.t$1 = t$1; $f.visited = visited; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
  18219. };
  18220. structType.prototype.FieldByNameFunc = function(match) { return this.$val.FieldByNameFunc(match); };
  18221. structType.ptr.prototype.FieldByName = function(name) {
  18222. var $ptr, _i, _r, _r$1, _ref, _tmp, _tmp$1, _tuple, f, hasAnon, i, name, present, t, tf, x, $s, $r;
  18223. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _i = $f._i; _r = $f._r; _r$1 = $f._r$1; _ref = $f._ref; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; f = $f.f; hasAnon = $f.hasAnon; i = $f.i; name = $f.name; present = $f.present; t = $f.t; tf = $f.tf; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  18224. name = [name];
  18225. f = new StructField.ptr();
  18226. present = false;
  18227. t = this;
  18228. hasAnon = false;
  18229. /* */ if (!(name[0] === "")) { $s = 1; continue; }
  18230. /* */ $s = 2; continue;
  18231. /* if (!(name[0] === "")) { */ case 1:
  18232. _ref = t.fields;
  18233. _i = 0;
  18234. /* while (true) { */ case 3:
  18235. /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 4; continue; }
  18236. i = _i;
  18237. tf = (x = t.fields, ((i < 0 || i >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + i]));
  18238. /* */ if (tf.name === ptrType$5.nil) { $s = 5; continue; }
  18239. /* */ $s = 6; continue;
  18240. /* if (tf.name === ptrType$5.nil) { */ case 5:
  18241. hasAnon = true;
  18242. _i++;
  18243. /* continue; */ $s = 3; continue;
  18244. /* } */ case 6:
  18245. /* */ if (tf.name.$get() === name[0]) { $s = 7; continue; }
  18246. /* */ $s = 8; continue;
  18247. /* if (tf.name.$get() === name[0]) { */ case 7:
  18248. _r = t.Field(i); /* */ $s = 9; case 9: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  18249. _tmp = $clone(_r, StructField); _tmp$1 = true; $copy(f, _tmp, StructField); present = _tmp$1;
  18250. return [f, present];
  18251. /* } */ case 8:
  18252. _i++;
  18253. /* } */ $s = 3; continue; case 4:
  18254. /* } */ case 2:
  18255. if (!hasAnon) {
  18256. return [f, present];
  18257. }
  18258. _r$1 = t.FieldByNameFunc((function(name) { return function(s) {
  18259. var $ptr, s;
  18260. return s === name[0];
  18261. }; })(name)); /* */ $s = 10; case 10: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  18262. _tuple = _r$1; $copy(f, _tuple[0], StructField); present = _tuple[1];
  18263. return [f, present];
  18264. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: structType.ptr.prototype.FieldByName }; } $f.$ptr = $ptr; $f._i = _i; $f._r = _r; $f._r$1 = _r$1; $f._ref = _ref; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f.f = f; $f.hasAnon = hasAnon; $f.i = i; $f.name = name; $f.present = present; $f.t = t; $f.tf = tf; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
  18265. };
  18266. structType.prototype.FieldByName = function(name) { return this.$val.FieldByName(name); };
  18267. PtrTo = function(t) {
  18268. var $ptr, t;
  18269. return $assertType(t, ptrType$1).ptrTo();
  18270. };
  18271. $pkg.PtrTo = PtrTo;
  18272. rtype.ptr.prototype.Implements = function(u) {
  18273. var $ptr, _r, t, u, $s, $r;
  18274. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; t = $f.t; u = $f.u; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  18275. t = this;
  18276. if ($interfaceIsEqual(u, $ifaceNil)) {
  18277. $panic(new $String("reflect: nil type passed to Type.Implements"));
  18278. }
  18279. _r = u.Kind(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  18280. /* */ if (!((_r === 20))) { $s = 1; continue; }
  18281. /* */ $s = 2; continue;
  18282. /* if (!((_r === 20))) { */ case 1:
  18283. $panic(new $String("reflect: non-interface type passed to Type.Implements"));
  18284. /* } */ case 2:
  18285. return implements$1($assertType(u, ptrType$1), t);
  18286. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: rtype.ptr.prototype.Implements }; } $f.$ptr = $ptr; $f._r = _r; $f.t = t; $f.u = u; $f.$s = $s; $f.$r = $r; return $f;
  18287. };
  18288. rtype.prototype.Implements = function(u) { return this.$val.Implements(u); };
  18289. rtype.ptr.prototype.AssignableTo = function(u) {
  18290. var $ptr, t, u, uu;
  18291. t = this;
  18292. if ($interfaceIsEqual(u, $ifaceNil)) {
  18293. $panic(new $String("reflect: nil type passed to Type.AssignableTo"));
  18294. }
  18295. uu = $assertType(u, ptrType$1);
  18296. return directlyAssignable(uu, t) || implements$1(uu, t);
  18297. };
  18298. rtype.prototype.AssignableTo = function(u) { return this.$val.AssignableTo(u); };
  18299. rtype.ptr.prototype.ConvertibleTo = function(u) {
  18300. var $ptr, _r, t, u, uu, $s, $r;
  18301. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; t = $f.t; u = $f.u; uu = $f.uu; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  18302. t = this;
  18303. if ($interfaceIsEqual(u, $ifaceNil)) {
  18304. $panic(new $String("reflect: nil type passed to Type.ConvertibleTo"));
  18305. }
  18306. uu = $assertType(u, ptrType$1);
  18307. _r = convertOp(uu, t); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  18308. return !(_r === $throwNilPointerError);
  18309. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: rtype.ptr.prototype.ConvertibleTo }; } $f.$ptr = $ptr; $f._r = _r; $f.t = t; $f.u = u; $f.uu = uu; $f.$s = $s; $f.$r = $r; return $f;
  18310. };
  18311. rtype.prototype.ConvertibleTo = function(u) { return this.$val.ConvertibleTo(u); };
  18312. implements$1 = function(T, V) {
  18313. var $ptr, T, V, i, i$1, j, j$1, t, tm, tm$1, v, v$1, vm, vm$1, x, x$1, x$2, x$3;
  18314. if (!((T.Kind() === 20))) {
  18315. return false;
  18316. }
  18317. t = T.kindType;
  18318. if (t.methods.$length === 0) {
  18319. return true;
  18320. }
  18321. if (V.Kind() === 20) {
  18322. v = V.kindType;
  18323. i = 0;
  18324. j = 0;
  18325. while (true) {
  18326. if (!(j < v.methods.$length)) { break; }
  18327. tm = (x = t.methods, ((i < 0 || i >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + i]));
  18328. vm = (x$1 = v.methods, ((j < 0 || j >= x$1.$length) ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + j]));
  18329. if (vm.name === tm.name && vm.pkgPath === tm.pkgPath && vm.typ === tm.typ) {
  18330. i = i + (1) >> 0;
  18331. if (i >= t.methods.$length) {
  18332. return true;
  18333. }
  18334. }
  18335. j = j + (1) >> 0;
  18336. }
  18337. return false;
  18338. }
  18339. v$1 = V.uncommonType.uncommon();
  18340. if (v$1 === ptrType$6.nil) {
  18341. return false;
  18342. }
  18343. i$1 = 0;
  18344. j$1 = 0;
  18345. while (true) {
  18346. if (!(j$1 < v$1.methods.$length)) { break; }
  18347. tm$1 = (x$2 = t.methods, ((i$1 < 0 || i$1 >= x$2.$length) ? $throwRuntimeError("index out of range") : x$2.$array[x$2.$offset + i$1]));
  18348. vm$1 = (x$3 = v$1.methods, ((j$1 < 0 || j$1 >= x$3.$length) ? $throwRuntimeError("index out of range") : x$3.$array[x$3.$offset + j$1]));
  18349. if (vm$1.name === tm$1.name && vm$1.pkgPath === tm$1.pkgPath && vm$1.mtyp === tm$1.typ) {
  18350. i$1 = i$1 + (1) >> 0;
  18351. if (i$1 >= t.methods.$length) {
  18352. return true;
  18353. }
  18354. }
  18355. j$1 = j$1 + (1) >> 0;
  18356. }
  18357. return false;
  18358. };
  18359. directlyAssignable = function(T, V) {
  18360. var $ptr, T, V;
  18361. if (T === V) {
  18362. return true;
  18363. }
  18364. if (!(T.Name() === "") && !(V.Name() === "") || !((T.Kind() === V.Kind()))) {
  18365. return false;
  18366. }
  18367. return haveIdenticalUnderlyingType(T, V);
  18368. };
  18369. haveIdenticalUnderlyingType = function(T, V) {
  18370. var $ptr, T, V, _i, _i$1, _i$2, _ref, _ref$1, _ref$2, _ref$3, i, i$1, i$2, kind, t, t$1, t$2, tf, typ, typ$1, v, v$1, v$2, vf, x, x$1, x$2, x$3;
  18371. if (T === V) {
  18372. return true;
  18373. }
  18374. kind = T.Kind();
  18375. if (!((kind === V.Kind()))) {
  18376. return false;
  18377. }
  18378. if (1 <= kind && kind <= 16 || (kind === 24) || (kind === 26)) {
  18379. return true;
  18380. }
  18381. _ref = kind;
  18382. if (_ref === 17) {
  18383. return $interfaceIsEqual(T.Elem(), V.Elem()) && (T.Len() === V.Len());
  18384. } else if (_ref === 18) {
  18385. if ((V.ChanDir() === 3) && $interfaceIsEqual(T.Elem(), V.Elem())) {
  18386. return true;
  18387. }
  18388. return (V.ChanDir() === T.ChanDir()) && $interfaceIsEqual(T.Elem(), V.Elem());
  18389. } else if (_ref === 19) {
  18390. t = T.kindType;
  18391. v = V.kindType;
  18392. if (!(t.dotdotdot === v.dotdotdot) || !((t.in$2.$length === v.in$2.$length)) || !((t.out.$length === v.out.$length))) {
  18393. return false;
  18394. }
  18395. _ref$1 = t.in$2;
  18396. _i = 0;
  18397. while (true) {
  18398. if (!(_i < _ref$1.$length)) { break; }
  18399. i = _i;
  18400. typ = ((_i < 0 || _i >= _ref$1.$length) ? $throwRuntimeError("index out of range") : _ref$1.$array[_ref$1.$offset + _i]);
  18401. if (!(typ === (x = v.in$2, ((i < 0 || i >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + i])))) {
  18402. return false;
  18403. }
  18404. _i++;
  18405. }
  18406. _ref$2 = t.out;
  18407. _i$1 = 0;
  18408. while (true) {
  18409. if (!(_i$1 < _ref$2.$length)) { break; }
  18410. i$1 = _i$1;
  18411. typ$1 = ((_i$1 < 0 || _i$1 >= _ref$2.$length) ? $throwRuntimeError("index out of range") : _ref$2.$array[_ref$2.$offset + _i$1]);
  18412. if (!(typ$1 === (x$1 = v.out, ((i$1 < 0 || i$1 >= x$1.$length) ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + i$1])))) {
  18413. return false;
  18414. }
  18415. _i$1++;
  18416. }
  18417. return true;
  18418. } else if (_ref === 20) {
  18419. t$1 = T.kindType;
  18420. v$1 = V.kindType;
  18421. if ((t$1.methods.$length === 0) && (v$1.methods.$length === 0)) {
  18422. return true;
  18423. }
  18424. return false;
  18425. } else if (_ref === 21) {
  18426. return $interfaceIsEqual(T.Key(), V.Key()) && $interfaceIsEqual(T.Elem(), V.Elem());
  18427. } else if (_ref === 22 || _ref === 23) {
  18428. return $interfaceIsEqual(T.Elem(), V.Elem());
  18429. } else if (_ref === 25) {
  18430. t$2 = T.kindType;
  18431. v$2 = V.kindType;
  18432. if (!((t$2.fields.$length === v$2.fields.$length))) {
  18433. return false;
  18434. }
  18435. _ref$3 = t$2.fields;
  18436. _i$2 = 0;
  18437. while (true) {
  18438. if (!(_i$2 < _ref$3.$length)) { break; }
  18439. i$2 = _i$2;
  18440. tf = (x$2 = t$2.fields, ((i$2 < 0 || i$2 >= x$2.$length) ? $throwRuntimeError("index out of range") : x$2.$array[x$2.$offset + i$2]));
  18441. vf = (x$3 = v$2.fields, ((i$2 < 0 || i$2 >= x$3.$length) ? $throwRuntimeError("index out of range") : x$3.$array[x$3.$offset + i$2]));
  18442. if (!(tf.name === vf.name) && (tf.name === ptrType$5.nil || vf.name === ptrType$5.nil || !(tf.name.$get() === vf.name.$get()))) {
  18443. return false;
  18444. }
  18445. if (!(tf.pkgPath === vf.pkgPath) && (tf.pkgPath === ptrType$5.nil || vf.pkgPath === ptrType$5.nil || !(tf.pkgPath.$get() === vf.pkgPath.$get()))) {
  18446. return false;
  18447. }
  18448. if (!(tf.typ === vf.typ)) {
  18449. return false;
  18450. }
  18451. if (!(tf.tag === vf.tag) && (tf.tag === ptrType$5.nil || vf.tag === ptrType$5.nil || !(tf.tag.$get() === vf.tag.$get()))) {
  18452. return false;
  18453. }
  18454. if (!((tf.offset === vf.offset))) {
  18455. return false;
  18456. }
  18457. _i$2++;
  18458. }
  18459. return true;
  18460. }
  18461. return false;
  18462. };
  18463. toType = function(t) {
  18464. var $ptr, t;
  18465. if (t === ptrType$1.nil) {
  18466. return $ifaceNil;
  18467. }
  18468. return t;
  18469. };
  18470. ifaceIndir = function(t) {
  18471. var $ptr, t;
  18472. return ((t.kind & 32) >>> 0) === 0;
  18473. };
  18474. flag.prototype.kind = function() {
  18475. var $ptr, f;
  18476. f = this.$val;
  18477. return (((f & 31) >>> 0) >>> 0);
  18478. };
  18479. $ptrType(flag).prototype.kind = function() { return new flag(this.$get()).kind(); };
  18480. Value.ptr.prototype.pointer = function() {
  18481. var $ptr, v;
  18482. v = this;
  18483. if (!((v.typ.size === 4)) || !v.typ.pointers()) {
  18484. $panic(new $String("can't call pointer on a non-pointer Value"));
  18485. }
  18486. if (!((((v.flag & 64) >>> 0) === 0))) {
  18487. return v.ptr.$get();
  18488. }
  18489. return v.ptr;
  18490. };
  18491. Value.prototype.pointer = function() { return this.$val.pointer(); };
  18492. ValueError.ptr.prototype.Error = function() {
  18493. var $ptr, e;
  18494. e = this;
  18495. if (e.Kind === 0) {
  18496. return "reflect: call of " + e.Method + " on zero Value";
  18497. }
  18498. return "reflect: call of " + e.Method + " on " + new Kind(e.Kind).String() + " Value";
  18499. };
  18500. ValueError.prototype.Error = function() { return this.$val.Error(); };
  18501. flag.prototype.mustBe = function(expected) {
  18502. var $ptr, expected, f;
  18503. f = this.$val;
  18504. if (!((new flag(f).kind() === expected))) {
  18505. $panic(new ValueError.ptr(methodName(), new flag(f).kind()));
  18506. }
  18507. };
  18508. $ptrType(flag).prototype.mustBe = function(expected) { return new flag(this.$get()).mustBe(expected); };
  18509. flag.prototype.mustBeExported = function() {
  18510. var $ptr, f;
  18511. f = this.$val;
  18512. if (f === 0) {
  18513. $panic(new ValueError.ptr(methodName(), 0));
  18514. }
  18515. if (!((((f & 32) >>> 0) === 0))) {
  18516. $panic(new $String("reflect: " + methodName() + " using value obtained using unexported field"));
  18517. }
  18518. };
  18519. $ptrType(flag).prototype.mustBeExported = function() { return new flag(this.$get()).mustBeExported(); };
  18520. flag.prototype.mustBeAssignable = function() {
  18521. var $ptr, f;
  18522. f = this.$val;
  18523. if (f === 0) {
  18524. $panic(new ValueError.ptr(methodName(), 0));
  18525. }
  18526. if (!((((f & 32) >>> 0) === 0))) {
  18527. $panic(new $String("reflect: " + methodName() + " using value obtained using unexported field"));
  18528. }
  18529. if (((f & 128) >>> 0) === 0) {
  18530. $panic(new $String("reflect: " + methodName() + " using unaddressable value"));
  18531. }
  18532. };
  18533. $ptrType(flag).prototype.mustBeAssignable = function() { return new flag(this.$get()).mustBeAssignable(); };
  18534. Value.ptr.prototype.Addr = function() {
  18535. var $ptr, v;
  18536. v = this;
  18537. if (((v.flag & 128) >>> 0) === 0) {
  18538. $panic(new $String("reflect.Value.Addr of unaddressable value"));
  18539. }
  18540. return new Value.ptr(v.typ.ptrTo(), v.ptr, ((((v.flag & 32) >>> 0)) | 22) >>> 0);
  18541. };
  18542. Value.prototype.Addr = function() { return this.$val.Addr(); };
  18543. Value.ptr.prototype.Bool = function() {
  18544. var $ptr, v;
  18545. v = this;
  18546. new flag(v.flag).mustBe(1);
  18547. return v.ptr.$get();
  18548. };
  18549. Value.prototype.Bool = function() { return this.$val.Bool(); };
  18550. Value.ptr.prototype.Bytes = function() {
  18551. var $ptr, _r, v, $s, $r;
  18552. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  18553. v = this;
  18554. new flag(v.flag).mustBe(23);
  18555. _r = v.typ.Elem().Kind(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  18556. /* */ if (!((_r === 8))) { $s = 1; continue; }
  18557. /* */ $s = 2; continue;
  18558. /* if (!((_r === 8))) { */ case 1:
  18559. $panic(new $String("reflect.Value.Bytes of non-byte slice"));
  18560. /* } */ case 2:
  18561. return v.ptr.$get();
  18562. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.Bytes }; } $f.$ptr = $ptr; $f._r = _r; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
  18563. };
  18564. Value.prototype.Bytes = function() { return this.$val.Bytes(); };
  18565. Value.ptr.prototype.runes = function() {
  18566. var $ptr, _r, v, $s, $r;
  18567. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  18568. v = this;
  18569. new flag(v.flag).mustBe(23);
  18570. _r = v.typ.Elem().Kind(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  18571. /* */ if (!((_r === 5))) { $s = 1; continue; }
  18572. /* */ $s = 2; continue;
  18573. /* if (!((_r === 5))) { */ case 1:
  18574. $panic(new $String("reflect.Value.Bytes of non-rune slice"));
  18575. /* } */ case 2:
  18576. return v.ptr.$get();
  18577. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.runes }; } $f.$ptr = $ptr; $f._r = _r; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
  18578. };
  18579. Value.prototype.runes = function() { return this.$val.runes(); };
  18580. Value.ptr.prototype.CanAddr = function() {
  18581. var $ptr, v;
  18582. v = this;
  18583. return !((((v.flag & 128) >>> 0) === 0));
  18584. };
  18585. Value.prototype.CanAddr = function() { return this.$val.CanAddr(); };
  18586. Value.ptr.prototype.CanSet = function() {
  18587. var $ptr, v;
  18588. v = this;
  18589. return ((v.flag & 160) >>> 0) === 128;
  18590. };
  18591. Value.prototype.CanSet = function() { return this.$val.CanSet(); };
  18592. Value.ptr.prototype.Call = function(in$1) {
  18593. var $ptr, _r, in$1, v, $s, $r;
  18594. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; in$1 = $f.in$1; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  18595. v = this;
  18596. new flag(v.flag).mustBe(19);
  18597. new flag(v.flag).mustBeExported();
  18598. _r = v.call("Call", in$1); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  18599. return _r;
  18600. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.Call }; } $f.$ptr = $ptr; $f._r = _r; $f.in$1 = in$1; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
  18601. };
  18602. Value.prototype.Call = function(in$1) { return this.$val.Call(in$1); };
  18603. Value.ptr.prototype.CallSlice = function(in$1) {
  18604. var $ptr, _r, in$1, v, $s, $r;
  18605. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; in$1 = $f.in$1; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  18606. v = this;
  18607. new flag(v.flag).mustBe(19);
  18608. new flag(v.flag).mustBeExported();
  18609. _r = v.call("CallSlice", in$1); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  18610. return _r;
  18611. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.CallSlice }; } $f.$ptr = $ptr; $f._r = _r; $f.in$1 = in$1; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
  18612. };
  18613. Value.prototype.CallSlice = function(in$1) { return this.$val.CallSlice(in$1); };
  18614. Value.ptr.prototype.Complex = function() {
  18615. var $ptr, _ref, k, v, x;
  18616. v = this;
  18617. k = new flag(v.flag).kind();
  18618. _ref = k;
  18619. if (_ref === 15) {
  18620. return (x = v.ptr.$get(), new $Complex128(x.$real, x.$imag));
  18621. } else if (_ref === 16) {
  18622. return v.ptr.$get();
  18623. }
  18624. $panic(new ValueError.ptr("reflect.Value.Complex", new flag(v.flag).kind()));
  18625. };
  18626. Value.prototype.Complex = function() { return this.$val.Complex(); };
  18627. Value.ptr.prototype.FieldByIndex = function(index) {
  18628. var $ptr, _i, _r, _r$1, _r$2, _r$3, _ref, _v, i, index, v, x, $s, $r;
  18629. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _i = $f._i; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _ref = $f._ref; _v = $f._v; i = $f.i; index = $f.index; v = $f.v; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  18630. v = this;
  18631. /* */ if (index.$length === 1) { $s = 1; continue; }
  18632. /* */ $s = 2; continue;
  18633. /* if (index.$length === 1) { */ case 1:
  18634. _r = v.Field((0 >= index.$length ? $throwRuntimeError("index out of range") : index.$array[index.$offset + 0])); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  18635. return _r;
  18636. /* } */ case 2:
  18637. new flag(v.flag).mustBe(25);
  18638. _ref = index;
  18639. _i = 0;
  18640. /* while (true) { */ case 4:
  18641. /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 5; continue; }
  18642. i = _i;
  18643. x = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]);
  18644. /* */ if (i > 0) { $s = 6; continue; }
  18645. /* */ $s = 7; continue;
  18646. /* if (i > 0) { */ case 6:
  18647. if (!(v.Kind() === 22)) { _v = false; $s = 10; continue s; }
  18648. _r$1 = v.typ.Elem().Kind(); /* */ $s = 11; case 11: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  18649. _v = _r$1 === 25; case 10:
  18650. /* */ if (_v) { $s = 8; continue; }
  18651. /* */ $s = 9; continue;
  18652. /* if (_v) { */ case 8:
  18653. if (v.IsNil()) {
  18654. $panic(new $String("reflect: indirection through nil pointer to embedded struct"));
  18655. }
  18656. _r$2 = v.Elem(); /* */ $s = 12; case 12: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  18657. v = _r$2;
  18658. /* } */ case 9:
  18659. /* } */ case 7:
  18660. _r$3 = v.Field(x); /* */ $s = 13; case 13: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  18661. v = _r$3;
  18662. _i++;
  18663. /* } */ $s = 4; continue; case 5:
  18664. return v;
  18665. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.FieldByIndex }; } $f.$ptr = $ptr; $f._i = _i; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._ref = _ref; $f._v = _v; $f.i = i; $f.index = index; $f.v = v; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
  18666. };
  18667. Value.prototype.FieldByIndex = function(index) { return this.$val.FieldByIndex(index); };
  18668. Value.ptr.prototype.FieldByName = function(name) {
  18669. var $ptr, _r, _r$1, _tuple, f, name, ok, v, $s, $r;
  18670. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _tuple = $f._tuple; f = $f.f; name = $f.name; ok = $f.ok; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  18671. v = this;
  18672. new flag(v.flag).mustBe(25);
  18673. _r = v.typ.FieldByName(name); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  18674. _tuple = _r; f = $clone(_tuple[0], StructField); ok = _tuple[1];
  18675. /* */ if (ok) { $s = 2; continue; }
  18676. /* */ $s = 3; continue;
  18677. /* if (ok) { */ case 2:
  18678. _r$1 = v.FieldByIndex(f.Index); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  18679. return _r$1;
  18680. /* } */ case 3:
  18681. return new Value.ptr(ptrType$1.nil, 0, 0);
  18682. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.FieldByName }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._tuple = _tuple; $f.f = f; $f.name = name; $f.ok = ok; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
  18683. };
  18684. Value.prototype.FieldByName = function(name) { return this.$val.FieldByName(name); };
  18685. Value.ptr.prototype.FieldByNameFunc = function(match) {
  18686. var $ptr, _r, _r$1, _tuple, f, match, ok, v, $s, $r;
  18687. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _tuple = $f._tuple; f = $f.f; match = $f.match; ok = $f.ok; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  18688. v = this;
  18689. _r = v.typ.FieldByNameFunc(match); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  18690. _tuple = _r; f = $clone(_tuple[0], StructField); ok = _tuple[1];
  18691. /* */ if (ok) { $s = 2; continue; }
  18692. /* */ $s = 3; continue;
  18693. /* if (ok) { */ case 2:
  18694. _r$1 = v.FieldByIndex(f.Index); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  18695. return _r$1;
  18696. /* } */ case 3:
  18697. return new Value.ptr(ptrType$1.nil, 0, 0);
  18698. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.FieldByNameFunc }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._tuple = _tuple; $f.f = f; $f.match = match; $f.ok = ok; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
  18699. };
  18700. Value.prototype.FieldByNameFunc = function(match) { return this.$val.FieldByNameFunc(match); };
  18701. Value.ptr.prototype.Float = function() {
  18702. var $ptr, _ref, k, v;
  18703. v = this;
  18704. k = new flag(v.flag).kind();
  18705. _ref = k;
  18706. if (_ref === 13) {
  18707. return v.ptr.$get();
  18708. } else if (_ref === 14) {
  18709. return v.ptr.$get();
  18710. }
  18711. $panic(new ValueError.ptr("reflect.Value.Float", new flag(v.flag).kind()));
  18712. };
  18713. Value.prototype.Float = function() { return this.$val.Float(); };
  18714. Value.ptr.prototype.Int = function() {
  18715. var $ptr, _ref, k, p, v;
  18716. v = this;
  18717. k = new flag(v.flag).kind();
  18718. p = v.ptr;
  18719. _ref = k;
  18720. if (_ref === 2) {
  18721. return new $Int64(0, p.$get());
  18722. } else if (_ref === 3) {
  18723. return new $Int64(0, p.$get());
  18724. } else if (_ref === 4) {
  18725. return new $Int64(0, p.$get());
  18726. } else if (_ref === 5) {
  18727. return new $Int64(0, p.$get());
  18728. } else if (_ref === 6) {
  18729. return p.$get();
  18730. }
  18731. $panic(new ValueError.ptr("reflect.Value.Int", new flag(v.flag).kind()));
  18732. };
  18733. Value.prototype.Int = function() { return this.$val.Int(); };
  18734. Value.ptr.prototype.CanInterface = function() {
  18735. var $ptr, v;
  18736. v = this;
  18737. if (v.flag === 0) {
  18738. $panic(new ValueError.ptr("reflect.Value.CanInterface", 0));
  18739. }
  18740. return ((v.flag & 32) >>> 0) === 0;
  18741. };
  18742. Value.prototype.CanInterface = function() { return this.$val.CanInterface(); };
  18743. Value.ptr.prototype.Interface = function() {
  18744. var $ptr, _r, i, v, $s, $r;
  18745. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; i = $f.i; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  18746. i = $ifaceNil;
  18747. v = this;
  18748. _r = valueInterface(v, true); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  18749. i = _r;
  18750. return i;
  18751. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.Interface }; } $f.$ptr = $ptr; $f._r = _r; $f.i = i; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
  18752. };
  18753. Value.prototype.Interface = function() { return this.$val.Interface(); };
  18754. Value.ptr.prototype.InterfaceData = function() {
  18755. var $ptr, v;
  18756. v = this;
  18757. new flag(v.flag).mustBe(20);
  18758. return v.ptr;
  18759. };
  18760. Value.prototype.InterfaceData = function() { return this.$val.InterfaceData(); };
  18761. Value.ptr.prototype.IsValid = function() {
  18762. var $ptr, v;
  18763. v = this;
  18764. return !((v.flag === 0));
  18765. };
  18766. Value.prototype.IsValid = function() { return this.$val.IsValid(); };
  18767. Value.ptr.prototype.Kind = function() {
  18768. var $ptr, v;
  18769. v = this;
  18770. return new flag(v.flag).kind();
  18771. };
  18772. Value.prototype.Kind = function() { return this.$val.Kind(); };
  18773. Value.ptr.prototype.MapIndex = function(key) {
  18774. var $ptr, _r, c, e, fl, k, key, tt, typ, v, $s, $r;
  18775. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; c = $f.c; e = $f.e; fl = $f.fl; k = $f.k; key = $f.key; tt = $f.tt; typ = $f.typ; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  18776. v = this;
  18777. key = key;
  18778. new flag(v.flag).mustBe(21);
  18779. tt = v.typ.kindType;
  18780. _r = key.assignTo("reflect.Value.MapIndex", tt.key, 0); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  18781. key = _r;
  18782. k = 0;
  18783. if (!((((key.flag & 64) >>> 0) === 0))) {
  18784. k = key.ptr;
  18785. } else {
  18786. k = (key.$ptr_ptr || (key.$ptr_ptr = new ptrType$18(function() { return this.$target.ptr; }, function($v) { this.$target.ptr = $v; }, key)));
  18787. }
  18788. e = mapaccess(v.typ, v.pointer(), k);
  18789. if (e === 0) {
  18790. return new Value.ptr(ptrType$1.nil, 0, 0);
  18791. }
  18792. typ = tt.elem;
  18793. fl = ((((v.flag | key.flag) >>> 0)) & 32) >>> 0;
  18794. fl = (fl | ((typ.Kind() >>> 0))) >>> 0;
  18795. if (ifaceIndir(typ)) {
  18796. c = unsafe_New(typ);
  18797. memmove(c, e, typ.size);
  18798. return new Value.ptr(typ, c, (fl | 64) >>> 0);
  18799. } else {
  18800. return new Value.ptr(typ, e.$get(), fl);
  18801. }
  18802. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.MapIndex }; } $f.$ptr = $ptr; $f._r = _r; $f.c = c; $f.e = e; $f.fl = fl; $f.k = k; $f.key = key; $f.tt = tt; $f.typ = typ; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
  18803. };
  18804. Value.prototype.MapIndex = function(key) { return this.$val.MapIndex(key); };
  18805. Value.ptr.prototype.MapKeys = function() {
  18806. var $ptr, _r, a, c, fl, i, it, key, keyType, m, mlen, tt, v, $s, $r;
  18807. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; a = $f.a; c = $f.c; fl = $f.fl; i = $f.i; it = $f.it; key = $f.key; keyType = $f.keyType; m = $f.m; mlen = $f.mlen; tt = $f.tt; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  18808. v = this;
  18809. new flag(v.flag).mustBe(21);
  18810. tt = v.typ.kindType;
  18811. keyType = tt.key;
  18812. fl = (((v.flag & 32) >>> 0) | (keyType.Kind() >>> 0)) >>> 0;
  18813. m = v.pointer();
  18814. mlen = 0;
  18815. if (!(m === 0)) {
  18816. mlen = maplen(m);
  18817. }
  18818. it = mapiterinit(v.typ, m);
  18819. a = $makeSlice(sliceType$7, mlen);
  18820. i = 0;
  18821. i = 0;
  18822. /* while (true) { */ case 1:
  18823. /* if (!(i < a.$length)) { break; } */ if(!(i < a.$length)) { $s = 2; continue; }
  18824. _r = mapiterkey(it); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  18825. key = _r;
  18826. if (key === 0) {
  18827. /* break; */ $s = 2; continue;
  18828. }
  18829. if (ifaceIndir(keyType)) {
  18830. c = unsafe_New(keyType);
  18831. memmove(c, key, keyType.size);
  18832. ((i < 0 || i >= a.$length) ? $throwRuntimeError("index out of range") : a.$array[a.$offset + i] = new Value.ptr(keyType, c, (fl | 64) >>> 0));
  18833. } else {
  18834. ((i < 0 || i >= a.$length) ? $throwRuntimeError("index out of range") : a.$array[a.$offset + i] = new Value.ptr(keyType, key.$get(), fl));
  18835. }
  18836. mapiternext(it);
  18837. i = i + (1) >> 0;
  18838. /* } */ $s = 1; continue; case 2:
  18839. return $subslice(a, 0, i);
  18840. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.MapKeys }; } $f.$ptr = $ptr; $f._r = _r; $f.a = a; $f.c = c; $f.fl = fl; $f.i = i; $f.it = it; $f.key = key; $f.keyType = keyType; $f.m = m; $f.mlen = mlen; $f.tt = tt; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
  18841. };
  18842. Value.prototype.MapKeys = function() { return this.$val.MapKeys(); };
  18843. Value.ptr.prototype.Method = function(i) {
  18844. var $ptr, fl, i, v;
  18845. v = this;
  18846. if (v.typ === ptrType$1.nil) {
  18847. $panic(new ValueError.ptr("reflect.Value.Method", 0));
  18848. }
  18849. if (!((((v.flag & 256) >>> 0) === 0)) || (i >>> 0) >= (v.typ.NumMethod() >>> 0)) {
  18850. $panic(new $String("reflect: Method index out of range"));
  18851. }
  18852. if ((v.typ.Kind() === 20) && v.IsNil()) {
  18853. $panic(new $String("reflect: Method on nil interface value"));
  18854. }
  18855. fl = (v.flag & 96) >>> 0;
  18856. fl = (fl | (19)) >>> 0;
  18857. fl = (fl | (((((i >>> 0) << 9 >>> 0) | 256) >>> 0))) >>> 0;
  18858. return new Value.ptr(v.typ, v.ptr, fl);
  18859. };
  18860. Value.prototype.Method = function(i) { return this.$val.Method(i); };
  18861. Value.ptr.prototype.NumMethod = function() {
  18862. var $ptr, v;
  18863. v = this;
  18864. if (v.typ === ptrType$1.nil) {
  18865. $panic(new ValueError.ptr("reflect.Value.NumMethod", 0));
  18866. }
  18867. if (!((((v.flag & 256) >>> 0) === 0))) {
  18868. return 0;
  18869. }
  18870. return v.typ.NumMethod();
  18871. };
  18872. Value.prototype.NumMethod = function() { return this.$val.NumMethod(); };
  18873. Value.ptr.prototype.MethodByName = function(name) {
  18874. var $ptr, _tuple, m, name, ok, v;
  18875. v = this;
  18876. if (v.typ === ptrType$1.nil) {
  18877. $panic(new ValueError.ptr("reflect.Value.MethodByName", 0));
  18878. }
  18879. if (!((((v.flag & 256) >>> 0) === 0))) {
  18880. return new Value.ptr(ptrType$1.nil, 0, 0);
  18881. }
  18882. _tuple = v.typ.MethodByName(name); m = $clone(_tuple[0], Method); ok = _tuple[1];
  18883. if (!ok) {
  18884. return new Value.ptr(ptrType$1.nil, 0, 0);
  18885. }
  18886. return v.Method(m.Index);
  18887. };
  18888. Value.prototype.MethodByName = function(name) { return this.$val.MethodByName(name); };
  18889. Value.ptr.prototype.NumField = function() {
  18890. var $ptr, tt, v;
  18891. v = this;
  18892. new flag(v.flag).mustBe(25);
  18893. tt = v.typ.kindType;
  18894. return tt.fields.$length;
  18895. };
  18896. Value.prototype.NumField = function() { return this.$val.NumField(); };
  18897. Value.ptr.prototype.OverflowComplex = function(x) {
  18898. var $ptr, _ref, k, v, x;
  18899. v = this;
  18900. k = new flag(v.flag).kind();
  18901. _ref = k;
  18902. if (_ref === 15) {
  18903. return overflowFloat32(x.$real) || overflowFloat32(x.$imag);
  18904. } else if (_ref === 16) {
  18905. return false;
  18906. }
  18907. $panic(new ValueError.ptr("reflect.Value.OverflowComplex", new flag(v.flag).kind()));
  18908. };
  18909. Value.prototype.OverflowComplex = function(x) { return this.$val.OverflowComplex(x); };
  18910. Value.ptr.prototype.OverflowFloat = function(x) {
  18911. var $ptr, _ref, k, v, x;
  18912. v = this;
  18913. k = new flag(v.flag).kind();
  18914. _ref = k;
  18915. if (_ref === 13) {
  18916. return overflowFloat32(x);
  18917. } else if (_ref === 14) {
  18918. return false;
  18919. }
  18920. $panic(new ValueError.ptr("reflect.Value.OverflowFloat", new flag(v.flag).kind()));
  18921. };
  18922. Value.prototype.OverflowFloat = function(x) { return this.$val.OverflowFloat(x); };
  18923. overflowFloat32 = function(x) {
  18924. var $ptr, x;
  18925. if (x < 0) {
  18926. x = -x;
  18927. }
  18928. return 3.4028234663852886e+38 < x && x <= 1.7976931348623157e+308;
  18929. };
  18930. Value.ptr.prototype.OverflowInt = function(x) {
  18931. var $ptr, _ref, bitSize, k, trunc, v, x, x$1;
  18932. v = this;
  18933. k = new flag(v.flag).kind();
  18934. _ref = k;
  18935. if (_ref === 2 || _ref === 3 || _ref === 4 || _ref === 5 || _ref === 6) {
  18936. bitSize = (x$1 = v.typ.size, (((x$1 >>> 16 << 16) * 8 >>> 0) + (x$1 << 16 >>> 16) * 8) >>> 0);
  18937. trunc = $shiftRightInt64(($shiftLeft64(x, ((64 - bitSize >>> 0)))), ((64 - bitSize >>> 0)));
  18938. return !((x.$high === trunc.$high && x.$low === trunc.$low));
  18939. }
  18940. $panic(new ValueError.ptr("reflect.Value.OverflowInt", new flag(v.flag).kind()));
  18941. };
  18942. Value.prototype.OverflowInt = function(x) { return this.$val.OverflowInt(x); };
  18943. Value.ptr.prototype.OverflowUint = function(x) {
  18944. var $ptr, _ref, bitSize, k, trunc, v, x, x$1;
  18945. v = this;
  18946. k = new flag(v.flag).kind();
  18947. _ref = k;
  18948. if (_ref === 7 || _ref === 12 || _ref === 8 || _ref === 9 || _ref === 10 || _ref === 11) {
  18949. bitSize = (x$1 = v.typ.size, (((x$1 >>> 16 << 16) * 8 >>> 0) + (x$1 << 16 >>> 16) * 8) >>> 0);
  18950. trunc = $shiftRightUint64(($shiftLeft64(x, ((64 - bitSize >>> 0)))), ((64 - bitSize >>> 0)));
  18951. return !((x.$high === trunc.$high && x.$low === trunc.$low));
  18952. }
  18953. $panic(new ValueError.ptr("reflect.Value.OverflowUint", new flag(v.flag).kind()));
  18954. };
  18955. Value.prototype.OverflowUint = function(x) { return this.$val.OverflowUint(x); };
  18956. Value.ptr.prototype.Recv = function() {
  18957. var $ptr, _r, _tuple, ok, v, x, $s, $r;
  18958. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tuple = $f._tuple; ok = $f.ok; v = $f.v; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  18959. x = new Value.ptr();
  18960. ok = false;
  18961. v = this;
  18962. new flag(v.flag).mustBe(18);
  18963. new flag(v.flag).mustBeExported();
  18964. _r = v.recv(false); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  18965. _tuple = _r; x = _tuple[0]; ok = _tuple[1];
  18966. return [x, ok];
  18967. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.Recv }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple = _tuple; $f.ok = ok; $f.v = v; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
  18968. };
  18969. Value.prototype.Recv = function() { return this.$val.Recv(); };
  18970. Value.ptr.prototype.recv = function(nb) {
  18971. var $ptr, _r, _tuple, nb, ok, p, selected, t, tt, v, val, $s, $r;
  18972. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tuple = $f._tuple; nb = $f.nb; ok = $f.ok; p = $f.p; selected = $f.selected; t = $f.t; tt = $f.tt; v = $f.v; val = $f.val; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  18973. val = new Value.ptr();
  18974. ok = false;
  18975. v = this;
  18976. tt = v.typ.kindType;
  18977. if (((tt.dir >> 0) & 1) === 0) {
  18978. $panic(new $String("reflect: recv on send-only channel"));
  18979. }
  18980. t = tt.elem;
  18981. val = new Value.ptr(t, 0, (t.Kind() >>> 0));
  18982. p = 0;
  18983. if (ifaceIndir(t)) {
  18984. p = unsafe_New(t);
  18985. val.ptr = p;
  18986. val.flag = (val.flag | (64)) >>> 0;
  18987. } else {
  18988. p = (val.$ptr_ptr || (val.$ptr_ptr = new ptrType$18(function() { return this.$target.ptr; }, function($v) { this.$target.ptr = $v; }, val)));
  18989. }
  18990. _r = chanrecv(v.typ, v.pointer(), nb, p); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  18991. _tuple = _r; selected = _tuple[0]; ok = _tuple[1];
  18992. if (!selected) {
  18993. val = new Value.ptr(ptrType$1.nil, 0, 0);
  18994. }
  18995. return [val, ok];
  18996. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.recv }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple = _tuple; $f.nb = nb; $f.ok = ok; $f.p = p; $f.selected = selected; $f.t = t; $f.tt = tt; $f.v = v; $f.val = val; $f.$s = $s; $f.$r = $r; return $f;
  18997. };
  18998. Value.prototype.recv = function(nb) { return this.$val.recv(nb); };
  18999. Value.ptr.prototype.Send = function(x) {
  19000. var $ptr, _r, v, x, $s, $r;
  19001. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; v = $f.v; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  19002. v = this;
  19003. x = x;
  19004. new flag(v.flag).mustBe(18);
  19005. new flag(v.flag).mustBeExported();
  19006. _r = v.send(x, false); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  19007. _r;
  19008. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.Send }; } $f.$ptr = $ptr; $f._r = _r; $f.v = v; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
  19009. };
  19010. Value.prototype.Send = function(x) { return this.$val.Send(x); };
  19011. Value.ptr.prototype.send = function(x, nb) {
  19012. var $ptr, _r, _r$1, nb, p, selected, tt, v, x, $s, $r;
  19013. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; nb = $f.nb; p = $f.p; selected = $f.selected; tt = $f.tt; v = $f.v; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  19014. selected = false;
  19015. v = this;
  19016. x = x;
  19017. tt = v.typ.kindType;
  19018. if (((tt.dir >> 0) & 2) === 0) {
  19019. $panic(new $String("reflect: send on recv-only channel"));
  19020. }
  19021. new flag(x.flag).mustBeExported();
  19022. _r = x.assignTo("reflect.Value.Send", tt.elem, 0); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  19023. x = _r;
  19024. p = 0;
  19025. if (!((((x.flag & 64) >>> 0) === 0))) {
  19026. p = x.ptr;
  19027. } else {
  19028. p = (x.$ptr_ptr || (x.$ptr_ptr = new ptrType$18(function() { return this.$target.ptr; }, function($v) { this.$target.ptr = $v; }, x)));
  19029. }
  19030. _r$1 = chansend(v.typ, v.pointer(), p, nb); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  19031. selected = _r$1;
  19032. return selected;
  19033. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.send }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f.nb = nb; $f.p = p; $f.selected = selected; $f.tt = tt; $f.v = v; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
  19034. };
  19035. Value.prototype.send = function(x, nb) { return this.$val.send(x, nb); };
  19036. Value.ptr.prototype.SetBool = function(x) {
  19037. var $ptr, v, x;
  19038. v = this;
  19039. new flag(v.flag).mustBeAssignable();
  19040. new flag(v.flag).mustBe(1);
  19041. v.ptr.$set(x);
  19042. };
  19043. Value.prototype.SetBool = function(x) { return this.$val.SetBool(x); };
  19044. Value.ptr.prototype.SetBytes = function(x) {
  19045. var $ptr, _r, v, x, $s, $r;
  19046. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; v = $f.v; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  19047. v = this;
  19048. new flag(v.flag).mustBeAssignable();
  19049. new flag(v.flag).mustBe(23);
  19050. _r = v.typ.Elem().Kind(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  19051. /* */ if (!((_r === 8))) { $s = 1; continue; }
  19052. /* */ $s = 2; continue;
  19053. /* if (!((_r === 8))) { */ case 1:
  19054. $panic(new $String("reflect.Value.SetBytes of non-byte slice"));
  19055. /* } */ case 2:
  19056. v.ptr.$set(x);
  19057. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.SetBytes }; } $f.$ptr = $ptr; $f._r = _r; $f.v = v; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
  19058. };
  19059. Value.prototype.SetBytes = function(x) { return this.$val.SetBytes(x); };
  19060. Value.ptr.prototype.setRunes = function(x) {
  19061. var $ptr, _r, v, x, $s, $r;
  19062. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; v = $f.v; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  19063. v = this;
  19064. new flag(v.flag).mustBeAssignable();
  19065. new flag(v.flag).mustBe(23);
  19066. _r = v.typ.Elem().Kind(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  19067. /* */ if (!((_r === 5))) { $s = 1; continue; }
  19068. /* */ $s = 2; continue;
  19069. /* if (!((_r === 5))) { */ case 1:
  19070. $panic(new $String("reflect.Value.setRunes of non-rune slice"));
  19071. /* } */ case 2:
  19072. v.ptr.$set(x);
  19073. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.setRunes }; } $f.$ptr = $ptr; $f._r = _r; $f.v = v; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
  19074. };
  19075. Value.prototype.setRunes = function(x) { return this.$val.setRunes(x); };
  19076. Value.ptr.prototype.SetComplex = function(x) {
  19077. var $ptr, _ref, k, v, x;
  19078. v = this;
  19079. new flag(v.flag).mustBeAssignable();
  19080. k = new flag(v.flag).kind();
  19081. _ref = k;
  19082. if (_ref === 15) {
  19083. v.ptr.$set(new $Complex64(x.$real, x.$imag));
  19084. } else if (_ref === 16) {
  19085. v.ptr.$set(x);
  19086. } else {
  19087. $panic(new ValueError.ptr("reflect.Value.SetComplex", new flag(v.flag).kind()));
  19088. }
  19089. };
  19090. Value.prototype.SetComplex = function(x) { return this.$val.SetComplex(x); };
  19091. Value.ptr.prototype.SetFloat = function(x) {
  19092. var $ptr, _ref, k, v, x;
  19093. v = this;
  19094. new flag(v.flag).mustBeAssignable();
  19095. k = new flag(v.flag).kind();
  19096. _ref = k;
  19097. if (_ref === 13) {
  19098. v.ptr.$set($fround(x));
  19099. } else if (_ref === 14) {
  19100. v.ptr.$set(x);
  19101. } else {
  19102. $panic(new ValueError.ptr("reflect.Value.SetFloat", new flag(v.flag).kind()));
  19103. }
  19104. };
  19105. Value.prototype.SetFloat = function(x) { return this.$val.SetFloat(x); };
  19106. Value.ptr.prototype.SetInt = function(x) {
  19107. var $ptr, _ref, k, v, x;
  19108. v = this;
  19109. new flag(v.flag).mustBeAssignable();
  19110. k = new flag(v.flag).kind();
  19111. _ref = k;
  19112. if (_ref === 2) {
  19113. v.ptr.$set(((x.$low + ((x.$high >> 31) * 4294967296)) >> 0));
  19114. } else if (_ref === 3) {
  19115. v.ptr.$set(((x.$low + ((x.$high >> 31) * 4294967296)) << 24 >> 24));
  19116. } else if (_ref === 4) {
  19117. v.ptr.$set(((x.$low + ((x.$high >> 31) * 4294967296)) << 16 >> 16));
  19118. } else if (_ref === 5) {
  19119. v.ptr.$set(((x.$low + ((x.$high >> 31) * 4294967296)) >> 0));
  19120. } else if (_ref === 6) {
  19121. v.ptr.$set(x);
  19122. } else {
  19123. $panic(new ValueError.ptr("reflect.Value.SetInt", new flag(v.flag).kind()));
  19124. }
  19125. };
  19126. Value.prototype.SetInt = function(x) { return this.$val.SetInt(x); };
  19127. Value.ptr.prototype.SetMapIndex = function(key, val) {
  19128. var $ptr, _r, _r$1, e, k, key, tt, v, val, $s, $r;
  19129. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; e = $f.e; k = $f.k; key = $f.key; tt = $f.tt; v = $f.v; val = $f.val; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  19130. v = this;
  19131. val = val;
  19132. key = key;
  19133. new flag(v.flag).mustBe(21);
  19134. new flag(v.flag).mustBeExported();
  19135. new flag(key.flag).mustBeExported();
  19136. tt = v.typ.kindType;
  19137. _r = key.assignTo("reflect.Value.SetMapIndex", tt.key, 0); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  19138. key = _r;
  19139. k = 0;
  19140. if (!((((key.flag & 64) >>> 0) === 0))) {
  19141. k = key.ptr;
  19142. } else {
  19143. k = (key.$ptr_ptr || (key.$ptr_ptr = new ptrType$18(function() { return this.$target.ptr; }, function($v) { this.$target.ptr = $v; }, key)));
  19144. }
  19145. if (val.typ === ptrType$1.nil) {
  19146. mapdelete(v.typ, v.pointer(), k);
  19147. return;
  19148. }
  19149. new flag(val.flag).mustBeExported();
  19150. _r$1 = val.assignTo("reflect.Value.SetMapIndex", tt.elem, 0); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  19151. val = _r$1;
  19152. e = 0;
  19153. if (!((((val.flag & 64) >>> 0) === 0))) {
  19154. e = val.ptr;
  19155. } else {
  19156. e = (val.$ptr_ptr || (val.$ptr_ptr = new ptrType$18(function() { return this.$target.ptr; }, function($v) { this.$target.ptr = $v; }, val)));
  19157. }
  19158. $r = mapassign(v.typ, v.pointer(), k, e); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  19159. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.SetMapIndex }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f.e = e; $f.k = k; $f.key = key; $f.tt = tt; $f.v = v; $f.val = val; $f.$s = $s; $f.$r = $r; return $f;
  19160. };
  19161. Value.prototype.SetMapIndex = function(key, val) { return this.$val.SetMapIndex(key, val); };
  19162. Value.ptr.prototype.SetUint = function(x) {
  19163. var $ptr, _ref, k, v, x;
  19164. v = this;
  19165. new flag(v.flag).mustBeAssignable();
  19166. k = new flag(v.flag).kind();
  19167. _ref = k;
  19168. if (_ref === 7) {
  19169. v.ptr.$set((x.$low >>> 0));
  19170. } else if (_ref === 8) {
  19171. v.ptr.$set((x.$low << 24 >>> 24));
  19172. } else if (_ref === 9) {
  19173. v.ptr.$set((x.$low << 16 >>> 16));
  19174. } else if (_ref === 10) {
  19175. v.ptr.$set((x.$low >>> 0));
  19176. } else if (_ref === 11) {
  19177. v.ptr.$set(x);
  19178. } else if (_ref === 12) {
  19179. v.ptr.$set((x.$low >>> 0));
  19180. } else {
  19181. $panic(new ValueError.ptr("reflect.Value.SetUint", new flag(v.flag).kind()));
  19182. }
  19183. };
  19184. Value.prototype.SetUint = function(x) { return this.$val.SetUint(x); };
  19185. Value.ptr.prototype.SetPointer = function(x) {
  19186. var $ptr, v, x;
  19187. v = this;
  19188. new flag(v.flag).mustBeAssignable();
  19189. new flag(v.flag).mustBe(26);
  19190. v.ptr.$set(x);
  19191. };
  19192. Value.prototype.SetPointer = function(x) { return this.$val.SetPointer(x); };
  19193. Value.ptr.prototype.SetString = function(x) {
  19194. var $ptr, v, x;
  19195. v = this;
  19196. new flag(v.flag).mustBeAssignable();
  19197. new flag(v.flag).mustBe(24);
  19198. v.ptr.$set(x);
  19199. };
  19200. Value.prototype.SetString = function(x) { return this.$val.SetString(x); };
  19201. Value.ptr.prototype.String = function() {
  19202. var $ptr, _r, _ref, k, v, $s, $r;
  19203. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _ref = $f._ref; k = $f.k; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  19204. v = this;
  19205. k = new flag(v.flag).kind();
  19206. _ref = k;
  19207. if (_ref === 0) {
  19208. return "<invalid Value>";
  19209. } else if (_ref === 24) {
  19210. return v.ptr.$get();
  19211. }
  19212. _r = v.Type().String(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  19213. return "<" + _r + " Value>";
  19214. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.String }; } $f.$ptr = $ptr; $f._r = _r; $f._ref = _ref; $f.k = k; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
  19215. };
  19216. Value.prototype.String = function() { return this.$val.String(); };
  19217. Value.ptr.prototype.TryRecv = function() {
  19218. var $ptr, _r, _tuple, ok, v, x, $s, $r;
  19219. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tuple = $f._tuple; ok = $f.ok; v = $f.v; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  19220. x = new Value.ptr();
  19221. ok = false;
  19222. v = this;
  19223. new flag(v.flag).mustBe(18);
  19224. new flag(v.flag).mustBeExported();
  19225. _r = v.recv(true); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  19226. _tuple = _r; x = _tuple[0]; ok = _tuple[1];
  19227. return [x, ok];
  19228. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.TryRecv }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple = _tuple; $f.ok = ok; $f.v = v; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
  19229. };
  19230. Value.prototype.TryRecv = function() { return this.$val.TryRecv(); };
  19231. Value.ptr.prototype.TrySend = function(x) {
  19232. var $ptr, _r, v, x, $s, $r;
  19233. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; v = $f.v; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  19234. v = this;
  19235. x = x;
  19236. new flag(v.flag).mustBe(18);
  19237. new flag(v.flag).mustBeExported();
  19238. _r = v.send(x, true); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  19239. return _r;
  19240. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.TrySend }; } $f.$ptr = $ptr; $f._r = _r; $f.v = v; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
  19241. };
  19242. Value.prototype.TrySend = function(x) { return this.$val.TrySend(x); };
  19243. Value.ptr.prototype.Type = function() {
  19244. var $ptr, f, i, m, m$1, tt, ut, v, x, x$1;
  19245. v = this;
  19246. f = v.flag;
  19247. if (f === 0) {
  19248. $panic(new ValueError.ptr("reflect.Value.Type", 0));
  19249. }
  19250. if (((f & 256) >>> 0) === 0) {
  19251. return v.typ;
  19252. }
  19253. i = (v.flag >> 0) >> 9 >> 0;
  19254. if (v.typ.Kind() === 20) {
  19255. tt = v.typ.kindType;
  19256. if ((i >>> 0) >= (tt.methods.$length >>> 0)) {
  19257. $panic(new $String("reflect: internal error: invalid method index"));
  19258. }
  19259. m = (x = tt.methods, ((i < 0 || i >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + i]));
  19260. return m.typ;
  19261. }
  19262. ut = v.typ.uncommonType.uncommon();
  19263. if (ut === ptrType$6.nil || (i >>> 0) >= (ut.methods.$length >>> 0)) {
  19264. $panic(new $String("reflect: internal error: invalid method index"));
  19265. }
  19266. m$1 = (x$1 = ut.methods, ((i < 0 || i >= x$1.$length) ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + i]));
  19267. return m$1.mtyp;
  19268. };
  19269. Value.prototype.Type = function() { return this.$val.Type(); };
  19270. Value.ptr.prototype.Uint = function() {
  19271. var $ptr, _ref, k, p, v, x;
  19272. v = this;
  19273. k = new flag(v.flag).kind();
  19274. p = v.ptr;
  19275. _ref = k;
  19276. if (_ref === 7) {
  19277. return new $Uint64(0, p.$get());
  19278. } else if (_ref === 8) {
  19279. return new $Uint64(0, p.$get());
  19280. } else if (_ref === 9) {
  19281. return new $Uint64(0, p.$get());
  19282. } else if (_ref === 10) {
  19283. return new $Uint64(0, p.$get());
  19284. } else if (_ref === 11) {
  19285. return p.$get();
  19286. } else if (_ref === 12) {
  19287. return (x = p.$get(), new $Uint64(0, x.constructor === Number ? x : 1));
  19288. }
  19289. $panic(new ValueError.ptr("reflect.Value.Uint", new flag(v.flag).kind()));
  19290. };
  19291. Value.prototype.Uint = function() { return this.$val.Uint(); };
  19292. Value.ptr.prototype.UnsafeAddr = function() {
  19293. var $ptr, v;
  19294. v = this;
  19295. if (v.typ === ptrType$1.nil) {
  19296. $panic(new ValueError.ptr("reflect.Value.UnsafeAddr", 0));
  19297. }
  19298. if (((v.flag & 128) >>> 0) === 0) {
  19299. $panic(new $String("reflect.Value.UnsafeAddr of unaddressable value"));
  19300. }
  19301. return v.ptr;
  19302. };
  19303. Value.prototype.UnsafeAddr = function() { return this.$val.UnsafeAddr(); };
  19304. typesMustMatch = function(what, t1, t2) {
  19305. var $ptr, _r, _r$1, t1, t2, what, $s, $r;
  19306. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; t1 = $f.t1; t2 = $f.t2; what = $f.what; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  19307. /* */ if (!($interfaceIsEqual(t1, t2))) { $s = 1; continue; }
  19308. /* */ $s = 2; continue;
  19309. /* if (!($interfaceIsEqual(t1, t2))) { */ case 1:
  19310. _r = t1.String(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  19311. _r$1 = t2.String(); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  19312. $panic(new $String(what + ": " + _r + " != " + _r$1));
  19313. /* } */ case 2:
  19314. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: typesMustMatch }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f.t1 = t1; $f.t2 = t2; $f.what = what; $f.$s = $s; $f.$r = $r; return $f;
  19315. };
  19316. MakeMap = function(typ) {
  19317. var $ptr, _r, _r$1, m, typ, $s, $r;
  19318. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; m = $f.m; typ = $f.typ; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  19319. _r = typ.Kind(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  19320. /* */ if (!((_r === 21))) { $s = 1; continue; }
  19321. /* */ $s = 2; continue;
  19322. /* if (!((_r === 21))) { */ case 1:
  19323. $panic(new $String("reflect.MakeMap of non-map type"));
  19324. /* } */ case 2:
  19325. m = makemap($assertType(typ, ptrType$1));
  19326. _r$1 = typ.common(); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  19327. return new Value.ptr(_r$1, m, 21);
  19328. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: MakeMap }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f.m = m; $f.typ = typ; $f.$s = $s; $f.$r = $r; return $f;
  19329. };
  19330. $pkg.MakeMap = MakeMap;
  19331. Indirect = function(v) {
  19332. var $ptr, _r, v, $s, $r;
  19333. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  19334. v = v;
  19335. if (!((v.Kind() === 22))) {
  19336. return v;
  19337. }
  19338. _r = v.Elem(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  19339. return _r;
  19340. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Indirect }; } $f.$ptr = $ptr; $f._r = _r; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
  19341. };
  19342. $pkg.Indirect = Indirect;
  19343. New = function(typ) {
  19344. var $ptr, _r, _r$1, fl, ptr, typ, $s, $r;
  19345. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; fl = $f.fl; ptr = $f.ptr; typ = $f.typ; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  19346. if ($interfaceIsEqual(typ, $ifaceNil)) {
  19347. $panic(new $String("reflect: New(nil)"));
  19348. }
  19349. ptr = unsafe_New($assertType(typ, ptrType$1));
  19350. fl = 22;
  19351. _r = typ.common(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  19352. _r$1 = _r.ptrTo(); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  19353. return new Value.ptr(_r$1, ptr, fl);
  19354. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: New }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f.fl = fl; $f.ptr = ptr; $f.typ = typ; $f.$s = $s; $f.$r = $r; return $f;
  19355. };
  19356. $pkg.New = New;
  19357. Value.ptr.prototype.assignTo = function(context, dst, target) {
  19358. var $ptr, _r, _r$1, context, dst, fl, target, v, x, $s, $r;
  19359. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; context = $f.context; dst = $f.dst; fl = $f.fl; target = $f.target; v = $f.v; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  19360. v = this;
  19361. /* */ if (!((((v.flag & 256) >>> 0) === 0))) { $s = 1; continue; }
  19362. /* */ $s = 2; continue;
  19363. /* if (!((((v.flag & 256) >>> 0) === 0))) { */ case 1:
  19364. _r = makeMethodValue(context, v); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  19365. v = _r;
  19366. /* } */ case 2:
  19367. /* */ if (directlyAssignable(dst, v.typ)) { $s = 4; continue; }
  19368. /* */ if (implements$1(dst, v.typ)) { $s = 5; continue; }
  19369. /* */ $s = 6; continue;
  19370. /* if (directlyAssignable(dst, v.typ)) { */ case 4:
  19371. v.typ = dst;
  19372. fl = (v.flag & 224) >>> 0;
  19373. fl = (fl | ((dst.Kind() >>> 0))) >>> 0;
  19374. return new Value.ptr(dst, v.ptr, fl);
  19375. $s = 6; continue;
  19376. /* } else if (implements$1(dst, v.typ)) { */ case 5:
  19377. if (target === 0) {
  19378. target = unsafe_New(dst);
  19379. }
  19380. _r$1 = valueInterface(v, false); /* */ $s = 7; case 7: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  19381. x = _r$1;
  19382. if (dst.NumMethod() === 0) {
  19383. target.$set(x);
  19384. } else {
  19385. ifaceE2I(dst, x, target);
  19386. }
  19387. return new Value.ptr(dst, target, 84);
  19388. /* } */ case 6:
  19389. $panic(new $String(context + ": value of type " + v.typ.String() + " is not assignable to type " + dst.String()));
  19390. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.assignTo }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f.context = context; $f.dst = dst; $f.fl = fl; $f.target = target; $f.v = v; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
  19391. };
  19392. Value.prototype.assignTo = function(context, dst, target) { return this.$val.assignTo(context, dst, target); };
  19393. Value.ptr.prototype.Convert = function(t) {
  19394. var $ptr, _r, _r$1, _r$2, _r$3, _r$4, op, t, v, $s, $r;
  19395. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; op = $f.op; t = $f.t; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  19396. v = this;
  19397. /* */ if (!((((v.flag & 256) >>> 0) === 0))) { $s = 1; continue; }
  19398. /* */ $s = 2; continue;
  19399. /* if (!((((v.flag & 256) >>> 0) === 0))) { */ case 1:
  19400. _r = makeMethodValue("Convert", v); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  19401. v = _r;
  19402. /* } */ case 2:
  19403. _r$1 = t.common(); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  19404. _r$2 = convertOp(_r$1, v.typ); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  19405. op = _r$2;
  19406. /* */ if (op === $throwNilPointerError) { $s = 6; continue; }
  19407. /* */ $s = 7; continue;
  19408. /* if (op === $throwNilPointerError) { */ case 6:
  19409. _r$3 = t.String(); /* */ $s = 8; case 8: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  19410. $panic(new $String("reflect.Value.Convert: value of type " + v.typ.String() + " cannot be converted to type " + _r$3));
  19411. /* } */ case 7:
  19412. _r$4 = op(v, t); /* */ $s = 9; case 9: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
  19413. return _r$4;
  19414. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Value.ptr.prototype.Convert }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f.op = op; $f.t = t; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
  19415. };
  19416. Value.prototype.Convert = function(t) { return this.$val.Convert(t); };
  19417. convertOp = function(dst, src) {
  19418. var $ptr, _arg, _arg$1, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _ref, _ref$1, _ref$2, _ref$3, _ref$4, _ref$5, _ref$6, _v, _v$1, _v$2, dst, src, $s, $r;
  19419. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _arg = $f._arg; _arg$1 = $f._arg$1; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _ref = $f._ref; _ref$1 = $f._ref$1; _ref$2 = $f._ref$2; _ref$3 = $f._ref$3; _ref$4 = $f._ref$4; _ref$5 = $f._ref$5; _ref$6 = $f._ref$6; _v = $f._v; _v$1 = $f._v$1; _v$2 = $f._v$2; dst = $f.dst; src = $f.src; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  19420. _ref = src.Kind();
  19421. /* */ if (_ref === 2 || _ref === 3 || _ref === 4 || _ref === 5 || _ref === 6) { $s = 1; continue; }
  19422. /* */ if (_ref === 7 || _ref === 8 || _ref === 9 || _ref === 10 || _ref === 11 || _ref === 12) { $s = 2; continue; }
  19423. /* */ if (_ref === 13 || _ref === 14) { $s = 3; continue; }
  19424. /* */ if (_ref === 15 || _ref === 16) { $s = 4; continue; }
  19425. /* */ if (_ref === 24) { $s = 5; continue; }
  19426. /* */ if (_ref === 23) { $s = 6; continue; }
  19427. /* */ $s = 7; continue;
  19428. /* if (_ref === 2 || _ref === 3 || _ref === 4 || _ref === 5 || _ref === 6) { */ case 1:
  19429. _ref$1 = dst.Kind();
  19430. if (_ref$1 === 2 || _ref$1 === 3 || _ref$1 === 4 || _ref$1 === 5 || _ref$1 === 6 || _ref$1 === 7 || _ref$1 === 8 || _ref$1 === 9 || _ref$1 === 10 || _ref$1 === 11 || _ref$1 === 12) {
  19431. return cvtInt;
  19432. } else if (_ref$1 === 13 || _ref$1 === 14) {
  19433. return cvtIntFloat;
  19434. } else if (_ref$1 === 24) {
  19435. return cvtIntString;
  19436. }
  19437. $s = 7; continue;
  19438. /* } else if (_ref === 7 || _ref === 8 || _ref === 9 || _ref === 10 || _ref === 11 || _ref === 12) { */ case 2:
  19439. _ref$2 = dst.Kind();
  19440. if (_ref$2 === 2 || _ref$2 === 3 || _ref$2 === 4 || _ref$2 === 5 || _ref$2 === 6 || _ref$2 === 7 || _ref$2 === 8 || _ref$2 === 9 || _ref$2 === 10 || _ref$2 === 11 || _ref$2 === 12) {
  19441. return cvtUint;
  19442. } else if (_ref$2 === 13 || _ref$2 === 14) {
  19443. return cvtUintFloat;
  19444. } else if (_ref$2 === 24) {
  19445. return cvtUintString;
  19446. }
  19447. $s = 7; continue;
  19448. /* } else if (_ref === 13 || _ref === 14) { */ case 3:
  19449. _ref$3 = dst.Kind();
  19450. if (_ref$3 === 2 || _ref$3 === 3 || _ref$3 === 4 || _ref$3 === 5 || _ref$3 === 6) {
  19451. return cvtFloatInt;
  19452. } else if (_ref$3 === 7 || _ref$3 === 8 || _ref$3 === 9 || _ref$3 === 10 || _ref$3 === 11 || _ref$3 === 12) {
  19453. return cvtFloatUint;
  19454. } else if (_ref$3 === 13 || _ref$3 === 14) {
  19455. return cvtFloat;
  19456. }
  19457. $s = 7; continue;
  19458. /* } else if (_ref === 15 || _ref === 16) { */ case 4:
  19459. _ref$4 = dst.Kind();
  19460. if (_ref$4 === 15 || _ref$4 === 16) {
  19461. return cvtComplex;
  19462. }
  19463. $s = 7; continue;
  19464. /* } else if (_ref === 24) { */ case 5:
  19465. if (!(dst.Kind() === 23)) { _v = false; $s = 10; continue s; }
  19466. _r = dst.Elem().PkgPath(); /* */ $s = 11; case 11: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  19467. _v = _r === ""; case 10:
  19468. /* */ if (_v) { $s = 8; continue; }
  19469. /* */ $s = 9; continue;
  19470. /* if (_v) { */ case 8:
  19471. _r$1 = dst.Elem().Kind(); /* */ $s = 12; case 12: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  19472. _ref$5 = _r$1;
  19473. /* */ if (_ref$5 === 8) { $s = 13; continue; }
  19474. /* */ if (_ref$5 === 5) { $s = 14; continue; }
  19475. /* */ $s = 15; continue;
  19476. /* if (_ref$5 === 8) { */ case 13:
  19477. return cvtStringBytes;
  19478. $s = 15; continue;
  19479. /* } else if (_ref$5 === 5) { */ case 14:
  19480. return cvtStringRunes;
  19481. /* } */ case 15:
  19482. /* } */ case 9:
  19483. $s = 7; continue;
  19484. /* } else if (_ref === 23) { */ case 6:
  19485. if (!(dst.Kind() === 24)) { _v$1 = false; $s = 18; continue s; }
  19486. _r$2 = src.Elem().PkgPath(); /* */ $s = 19; case 19: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  19487. _v$1 = _r$2 === ""; case 18:
  19488. /* */ if (_v$1) { $s = 16; continue; }
  19489. /* */ $s = 17; continue;
  19490. /* if (_v$1) { */ case 16:
  19491. _r$3 = src.Elem().Kind(); /* */ $s = 20; case 20: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  19492. _ref$6 = _r$3;
  19493. /* */ if (_ref$6 === 8) { $s = 21; continue; }
  19494. /* */ if (_ref$6 === 5) { $s = 22; continue; }
  19495. /* */ $s = 23; continue;
  19496. /* if (_ref$6 === 8) { */ case 21:
  19497. return cvtBytesString;
  19498. $s = 23; continue;
  19499. /* } else if (_ref$6 === 5) { */ case 22:
  19500. return cvtRunesString;
  19501. /* } */ case 23:
  19502. /* } */ case 17:
  19503. /* } */ case 7:
  19504. if (haveIdenticalUnderlyingType(dst, src)) {
  19505. return cvtDirect;
  19506. }
  19507. if (!((dst.Kind() === 22) && dst.Name() === "" && (src.Kind() === 22) && src.Name() === "")) { _v$2 = false; $s = 26; continue s; }
  19508. _r$4 = dst.Elem().common(); /* */ $s = 27; case 27: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
  19509. _arg = _r$4;
  19510. _r$5 = src.Elem().common(); /* */ $s = 28; case 28: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
  19511. _arg$1 = _r$5;
  19512. _r$6 = haveIdenticalUnderlyingType(_arg, _arg$1); /* */ $s = 29; case 29: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
  19513. _v$2 = _r$6; case 26:
  19514. /* */ if (_v$2) { $s = 24; continue; }
  19515. /* */ $s = 25; continue;
  19516. /* if (_v$2) { */ case 24:
  19517. return cvtDirect;
  19518. /* } */ case 25:
  19519. if (implements$1(dst, src)) {
  19520. if (src.Kind() === 20) {
  19521. return cvtI2I;
  19522. }
  19523. return cvtT2I;
  19524. }
  19525. return $throwNilPointerError;
  19526. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: convertOp }; } $f.$ptr = $ptr; $f._arg = _arg; $f._arg$1 = _arg$1; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._ref = _ref; $f._ref$1 = _ref$1; $f._ref$2 = _ref$2; $f._ref$3 = _ref$3; $f._ref$4 = _ref$4; $f._ref$5 = _ref$5; $f._ref$6 = _ref$6; $f._v = _v; $f._v$1 = _v$1; $f._v$2 = _v$2; $f.dst = dst; $f.src = src; $f.$s = $s; $f.$r = $r; return $f;
  19527. };
  19528. makeFloat = function(f, v, t) {
  19529. var $ptr, _r, _ref, f, ptr, t, typ, v, $s, $r;
  19530. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _ref = $f._ref; f = $f.f; ptr = $f.ptr; t = $f.t; typ = $f.typ; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  19531. _r = t.common(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  19532. typ = _r;
  19533. ptr = unsafe_New(typ);
  19534. _ref = typ.size;
  19535. if (_ref === 4) {
  19536. ptr.$set($fround(v));
  19537. } else if (_ref === 8) {
  19538. ptr.$set(v);
  19539. }
  19540. return new Value.ptr(typ, ptr, (((f | 64) >>> 0) | (typ.Kind() >>> 0)) >>> 0);
  19541. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: makeFloat }; } $f.$ptr = $ptr; $f._r = _r; $f._ref = _ref; $f.f = f; $f.ptr = ptr; $f.t = t; $f.typ = typ; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
  19542. };
  19543. makeComplex = function(f, v, t) {
  19544. var $ptr, _r, _ref, f, ptr, t, typ, v, $s, $r;
  19545. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _ref = $f._ref; f = $f.f; ptr = $f.ptr; t = $f.t; typ = $f.typ; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  19546. _r = t.common(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  19547. typ = _r;
  19548. ptr = unsafe_New(typ);
  19549. _ref = typ.size;
  19550. if (_ref === 8) {
  19551. ptr.$set(new $Complex64(v.$real, v.$imag));
  19552. } else if (_ref === 16) {
  19553. ptr.$set(v);
  19554. }
  19555. return new Value.ptr(typ, ptr, (((f | 64) >>> 0) | (typ.Kind() >>> 0)) >>> 0);
  19556. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: makeComplex }; } $f.$ptr = $ptr; $f._r = _r; $f._ref = _ref; $f.f = f; $f.ptr = ptr; $f.t = t; $f.typ = typ; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
  19557. };
  19558. makeString = function(f, v, t) {
  19559. var $ptr, _r, _r$1, f, ret, t, v, $s, $r;
  19560. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; f = $f.f; ret = $f.ret; t = $f.t; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  19561. _r = New(t); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  19562. _r$1 = _r.Elem(); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  19563. ret = _r$1;
  19564. ret.SetString(v);
  19565. ret.flag = (((ret.flag & ~128) >>> 0) | f) >>> 0;
  19566. return ret;
  19567. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: makeString }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f.f = f; $f.ret = ret; $f.t = t; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
  19568. };
  19569. makeBytes = function(f, v, t) {
  19570. var $ptr, _r, _r$1, f, ret, t, v, $s, $r;
  19571. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; f = $f.f; ret = $f.ret; t = $f.t; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  19572. _r = New(t); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  19573. _r$1 = _r.Elem(); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  19574. ret = _r$1;
  19575. $r = ret.SetBytes(v); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  19576. ret.flag = (((ret.flag & ~128) >>> 0) | f) >>> 0;
  19577. return ret;
  19578. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: makeBytes }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f.f = f; $f.ret = ret; $f.t = t; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
  19579. };
  19580. makeRunes = function(f, v, t) {
  19581. var $ptr, _r, _r$1, f, ret, t, v, $s, $r;
  19582. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; f = $f.f; ret = $f.ret; t = $f.t; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  19583. _r = New(t); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  19584. _r$1 = _r.Elem(); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  19585. ret = _r$1;
  19586. $r = ret.setRunes(v); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  19587. ret.flag = (((ret.flag & ~128) >>> 0) | f) >>> 0;
  19588. return ret;
  19589. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: makeRunes }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f.f = f; $f.ret = ret; $f.t = t; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
  19590. };
  19591. cvtInt = function(v, t) {
  19592. var $ptr, _r, t, v, x, $s, $r;
  19593. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; t = $f.t; v = $f.v; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  19594. v = v;
  19595. _r = makeInt((v.flag & 32) >>> 0, (x = v.Int(), new $Uint64(x.$high, x.$low)), t); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  19596. return _r;
  19597. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: cvtInt }; } $f.$ptr = $ptr; $f._r = _r; $f.t = t; $f.v = v; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
  19598. };
  19599. cvtUint = function(v, t) {
  19600. var $ptr, _r, t, v, $s, $r;
  19601. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; t = $f.t; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  19602. v = v;
  19603. _r = makeInt((v.flag & 32) >>> 0, v.Uint(), t); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  19604. return _r;
  19605. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: cvtUint }; } $f.$ptr = $ptr; $f._r = _r; $f.t = t; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
  19606. };
  19607. cvtFloatInt = function(v, t) {
  19608. var $ptr, _r, t, v, x, $s, $r;
  19609. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; t = $f.t; v = $f.v; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  19610. v = v;
  19611. _r = makeInt((v.flag & 32) >>> 0, (x = new $Int64(0, v.Float()), new $Uint64(x.$high, x.$low)), t); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  19612. return _r;
  19613. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: cvtFloatInt }; } $f.$ptr = $ptr; $f._r = _r; $f.t = t; $f.v = v; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
  19614. };
  19615. cvtFloatUint = function(v, t) {
  19616. var $ptr, _r, t, v, $s, $r;
  19617. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; t = $f.t; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  19618. v = v;
  19619. _r = makeInt((v.flag & 32) >>> 0, new $Uint64(0, v.Float()), t); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  19620. return _r;
  19621. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: cvtFloatUint }; } $f.$ptr = $ptr; $f._r = _r; $f.t = t; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
  19622. };
  19623. cvtIntFloat = function(v, t) {
  19624. var $ptr, _r, t, v, $s, $r;
  19625. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; t = $f.t; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  19626. v = v;
  19627. _r = makeFloat((v.flag & 32) >>> 0, $flatten64(v.Int()), t); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  19628. return _r;
  19629. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: cvtIntFloat }; } $f.$ptr = $ptr; $f._r = _r; $f.t = t; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
  19630. };
  19631. cvtUintFloat = function(v, t) {
  19632. var $ptr, _r, t, v, $s, $r;
  19633. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; t = $f.t; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  19634. v = v;
  19635. _r = makeFloat((v.flag & 32) >>> 0, $flatten64(v.Uint()), t); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  19636. return _r;
  19637. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: cvtUintFloat }; } $f.$ptr = $ptr; $f._r = _r; $f.t = t; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
  19638. };
  19639. cvtFloat = function(v, t) {
  19640. var $ptr, _r, t, v, $s, $r;
  19641. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; t = $f.t; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  19642. v = v;
  19643. _r = makeFloat((v.flag & 32) >>> 0, v.Float(), t); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  19644. return _r;
  19645. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: cvtFloat }; } $f.$ptr = $ptr; $f._r = _r; $f.t = t; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
  19646. };
  19647. cvtComplex = function(v, t) {
  19648. var $ptr, _r, t, v, $s, $r;
  19649. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; t = $f.t; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  19650. v = v;
  19651. _r = makeComplex((v.flag & 32) >>> 0, v.Complex(), t); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  19652. return _r;
  19653. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: cvtComplex }; } $f.$ptr = $ptr; $f._r = _r; $f.t = t; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
  19654. };
  19655. cvtIntString = function(v, t) {
  19656. var $ptr, _r, t, v, $s, $r;
  19657. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; t = $f.t; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  19658. v = v;
  19659. _r = makeString((v.flag & 32) >>> 0, $encodeRune(v.Int().$low), t); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  19660. return _r;
  19661. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: cvtIntString }; } $f.$ptr = $ptr; $f._r = _r; $f.t = t; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
  19662. };
  19663. cvtUintString = function(v, t) {
  19664. var $ptr, _r, t, v, $s, $r;
  19665. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; t = $f.t; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  19666. v = v;
  19667. _r = makeString((v.flag & 32) >>> 0, $encodeRune(v.Uint().$low), t); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  19668. return _r;
  19669. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: cvtUintString }; } $f.$ptr = $ptr; $f._r = _r; $f.t = t; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
  19670. };
  19671. cvtBytesString = function(v, t) {
  19672. var $ptr, _arg, _arg$1, _arg$2, _r, _r$1, t, v, $s, $r;
  19673. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _arg = $f._arg; _arg$1 = $f._arg$1; _arg$2 = $f._arg$2; _r = $f._r; _r$1 = $f._r$1; t = $f.t; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  19674. v = v;
  19675. _arg = (v.flag & 32) >>> 0;
  19676. _r = v.Bytes(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  19677. _arg$1 = $bytesToString(_r);
  19678. _arg$2 = t;
  19679. _r$1 = makeString(_arg, _arg$1, _arg$2); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  19680. return _r$1;
  19681. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: cvtBytesString }; } $f.$ptr = $ptr; $f._arg = _arg; $f._arg$1 = _arg$1; $f._arg$2 = _arg$2; $f._r = _r; $f._r$1 = _r$1; $f.t = t; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
  19682. };
  19683. cvtStringBytes = function(v, t) {
  19684. var $ptr, _arg, _arg$1, _arg$2, _r, _r$1, t, v, $s, $r;
  19685. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _arg = $f._arg; _arg$1 = $f._arg$1; _arg$2 = $f._arg$2; _r = $f._r; _r$1 = $f._r$1; t = $f.t; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  19686. v = v;
  19687. _arg = (v.flag & 32) >>> 0;
  19688. _r = v.String(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  19689. _arg$1 = new sliceType$14($stringToBytes(_r));
  19690. _arg$2 = t;
  19691. _r$1 = makeBytes(_arg, _arg$1, _arg$2); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  19692. return _r$1;
  19693. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: cvtStringBytes }; } $f.$ptr = $ptr; $f._arg = _arg; $f._arg$1 = _arg$1; $f._arg$2 = _arg$2; $f._r = _r; $f._r$1 = _r$1; $f.t = t; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
  19694. };
  19695. cvtRunesString = function(v, t) {
  19696. var $ptr, _arg, _arg$1, _arg$2, _r, _r$1, t, v, $s, $r;
  19697. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _arg = $f._arg; _arg$1 = $f._arg$1; _arg$2 = $f._arg$2; _r = $f._r; _r$1 = $f._r$1; t = $f.t; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  19698. v = v;
  19699. _arg = (v.flag & 32) >>> 0;
  19700. _r = v.runes(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  19701. _arg$1 = $runesToString(_r);
  19702. _arg$2 = t;
  19703. _r$1 = makeString(_arg, _arg$1, _arg$2); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  19704. return _r$1;
  19705. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: cvtRunesString }; } $f.$ptr = $ptr; $f._arg = _arg; $f._arg$1 = _arg$1; $f._arg$2 = _arg$2; $f._r = _r; $f._r$1 = _r$1; $f.t = t; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
  19706. };
  19707. cvtStringRunes = function(v, t) {
  19708. var $ptr, _arg, _arg$1, _arg$2, _r, _r$1, t, v, $s, $r;
  19709. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _arg = $f._arg; _arg$1 = $f._arg$1; _arg$2 = $f._arg$2; _r = $f._r; _r$1 = $f._r$1; t = $f.t; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  19710. v = v;
  19711. _arg = (v.flag & 32) >>> 0;
  19712. _r = v.String(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  19713. _arg$1 = new sliceType$15($stringToRunes(_r));
  19714. _arg$2 = t;
  19715. _r$1 = makeRunes(_arg, _arg$1, _arg$2); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  19716. return _r$1;
  19717. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: cvtStringRunes }; } $f.$ptr = $ptr; $f._arg = _arg; $f._arg$1 = _arg$1; $f._arg$2 = _arg$2; $f._r = _r; $f._r$1 = _r$1; $f.t = t; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
  19718. };
  19719. cvtT2I = function(v, typ) {
  19720. var $ptr, _r, _r$1, _r$2, _r$3, _r$4, target, typ, v, x, $s, $r;
  19721. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; target = $f.target; typ = $f.typ; v = $f.v; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  19722. v = v;
  19723. _r = typ.common(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  19724. _r$1 = unsafe_New(_r); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  19725. target = _r$1;
  19726. _r$2 = valueInterface(v, false); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  19727. x = _r$2;
  19728. _r$3 = typ.NumMethod(); /* */ $s = 7; case 7: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  19729. /* */ if (_r$3 === 0) { $s = 4; continue; }
  19730. /* */ $s = 5; continue;
  19731. /* if (_r$3 === 0) { */ case 4:
  19732. target.$set(x);
  19733. $s = 6; continue;
  19734. /* } else { */ case 5:
  19735. ifaceE2I($assertType(typ, ptrType$1), x, target);
  19736. /* } */ case 6:
  19737. _r$4 = typ.common(); /* */ $s = 8; case 8: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
  19738. return new Value.ptr(_r$4, target, (((((v.flag & 32) >>> 0) | 64) >>> 0) | 20) >>> 0);
  19739. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: cvtT2I }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f.target = target; $f.typ = typ; $f.v = v; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
  19740. };
  19741. cvtI2I = function(v, typ) {
  19742. var $ptr, _r, _r$1, _r$2, ret, typ, v, $s, $r;
  19743. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; ret = $f.ret; typ = $f.typ; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  19744. v = v;
  19745. /* */ if (v.IsNil()) { $s = 1; continue; }
  19746. /* */ $s = 2; continue;
  19747. /* if (v.IsNil()) { */ case 1:
  19748. _r = Zero(typ); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  19749. ret = _r;
  19750. ret.flag = (ret.flag | (((v.flag & 32) >>> 0))) >>> 0;
  19751. return ret;
  19752. /* } */ case 2:
  19753. _r$1 = v.Elem(); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  19754. _r$2 = cvtT2I(_r$1, typ); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  19755. return _r$2;
  19756. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: cvtI2I }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f.ret = ret; $f.typ = typ; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
  19757. };
  19758. Kind.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}];
  19759. ptrType$1.methods = [{prop: "ptrTo", name: "ptrTo", pkg: "reflect", typ: $funcType([], [ptrType$1], false)}, {prop: "pointers", name: "pointers", pkg: "reflect", typ: $funcType([], [$Bool], false)}, {prop: "Comparable", name: "Comparable", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Size", name: "Size", pkg: "", typ: $funcType([], [$Uintptr], false)}, {prop: "Bits", name: "Bits", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Align", name: "Align", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "FieldAlign", name: "FieldAlign", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Kind", name: "Kind", pkg: "", typ: $funcType([], [Kind], false)}, {prop: "common", name: "common", pkg: "reflect", typ: $funcType([], [ptrType$1], false)}, {prop: "NumMethod", name: "NumMethod", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Method", name: "Method", pkg: "", typ: $funcType([$Int], [Method], false)}, {prop: "MethodByName", name: "MethodByName", pkg: "", typ: $funcType([$String], [Method, $Bool], false)}, {prop: "PkgPath", name: "PkgPath", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Name", name: "Name", pkg: "", typ: $funcType([], [$String], false)}, {prop: "ChanDir", name: "ChanDir", pkg: "", typ: $funcType([], [ChanDir], false)}, {prop: "IsVariadic", name: "IsVariadic", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "Elem", name: "Elem", pkg: "", typ: $funcType([], [Type], false)}, {prop: "Field", name: "Field", pkg: "", typ: $funcType([$Int], [StructField], false)}, {prop: "FieldByIndex", name: "FieldByIndex", pkg: "", typ: $funcType([sliceType$11], [StructField], false)}, {prop: "FieldByName", name: "FieldByName", pkg: "", typ: $funcType([$String], [StructField, $Bool], false)}, {prop: "FieldByNameFunc", name: "FieldByNameFunc", pkg: "", typ: $funcType([funcType$3], [StructField, $Bool], false)}, {prop: "In", name: "In", pkg: "", typ: $funcType([$Int], [Type], false)}, {prop: "Key", name: "Key", pkg: "", typ: $funcType([], [Type], false)}, {prop: "Len", name: "Len", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "NumField", name: "NumField", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "NumIn", name: "NumIn", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "NumOut", name: "NumOut", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Out", name: "Out", pkg: "", typ: $funcType([$Int], [Type], false)}, {prop: "Implements", name: "Implements", pkg: "", typ: $funcType([Type], [$Bool], false)}, {prop: "AssignableTo", name: "AssignableTo", pkg: "", typ: $funcType([Type], [$Bool], false)}, {prop: "ConvertibleTo", name: "ConvertibleTo", pkg: "", typ: $funcType([Type], [$Bool], false)}];
  19760. ptrType$6.methods = [{prop: "Method", name: "Method", pkg: "", typ: $funcType([$Int], [Method], false)}, {prop: "uncommon", name: "uncommon", pkg: "reflect", typ: $funcType([], [ptrType$6], false)}, {prop: "PkgPath", name: "PkgPath", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Name", name: "Name", pkg: "", typ: $funcType([], [$String], false)}, {prop: "NumMethod", name: "NumMethod", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "MethodByName", name: "MethodByName", pkg: "", typ: $funcType([$String], [Method, $Bool], false)}];
  19761. ChanDir.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}];
  19762. ptrType$11.methods = [{prop: "Method", name: "Method", pkg: "", typ: $funcType([$Int], [Method], false)}, {prop: "NumMethod", name: "NumMethod", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "MethodByName", name: "MethodByName", pkg: "", typ: $funcType([$String], [Method, $Bool], false)}];
  19763. ptrType$13.methods = [{prop: "Field", name: "Field", pkg: "", typ: $funcType([$Int], [StructField], false)}, {prop: "FieldByIndex", name: "FieldByIndex", pkg: "", typ: $funcType([sliceType$11], [StructField], false)}, {prop: "FieldByNameFunc", name: "FieldByNameFunc", pkg: "", typ: $funcType([funcType$3], [StructField, $Bool], false)}, {prop: "FieldByName", name: "FieldByName", pkg: "", typ: $funcType([$String], [StructField, $Bool], false)}];
  19764. StructTag.methods = [{prop: "Get", name: "Get", pkg: "", typ: $funcType([$String], [$String], false)}];
  19765. Value.methods = [{prop: "object", name: "object", pkg: "reflect", typ: $funcType([], [ptrType$3], false)}, {prop: "call", name: "call", pkg: "reflect", typ: $funcType([$String, sliceType$7], [sliceType$7], false)}, {prop: "Cap", name: "Cap", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Elem", name: "Elem", pkg: "", typ: $funcType([], [Value], false)}, {prop: "Field", name: "Field", pkg: "", typ: $funcType([$Int], [Value], false)}, {prop: "Index", name: "Index", pkg: "", typ: $funcType([$Int], [Value], false)}, {prop: "IsNil", name: "IsNil", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "Len", name: "Len", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Pointer", name: "Pointer", pkg: "", typ: $funcType([], [$Uintptr], false)}, {prop: "Set", name: "Set", pkg: "", typ: $funcType([Value], [], false)}, {prop: "SetCap", name: "SetCap", pkg: "", typ: $funcType([$Int], [], false)}, {prop: "SetLen", name: "SetLen", pkg: "", typ: $funcType([$Int], [], false)}, {prop: "Slice", name: "Slice", pkg: "", typ: $funcType([$Int, $Int], [Value], false)}, {prop: "Slice3", name: "Slice3", pkg: "", typ: $funcType([$Int, $Int, $Int], [Value], false)}, {prop: "Close", name: "Close", pkg: "", typ: $funcType([], [], false)}, {prop: "pointer", name: "pointer", pkg: "reflect", typ: $funcType([], [$UnsafePointer], false)}, {prop: "Addr", name: "Addr", pkg: "", typ: $funcType([], [Value], false)}, {prop: "Bool", name: "Bool", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "Bytes", name: "Bytes", pkg: "", typ: $funcType([], [sliceType$14], false)}, {prop: "runes", name: "runes", pkg: "reflect", typ: $funcType([], [sliceType$15], false)}, {prop: "CanAddr", name: "CanAddr", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "CanSet", name: "CanSet", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "Call", name: "Call", pkg: "", typ: $funcType([sliceType$7], [sliceType$7], false)}, {prop: "CallSlice", name: "CallSlice", pkg: "", typ: $funcType([sliceType$7], [sliceType$7], false)}, {prop: "Complex", name: "Complex", pkg: "", typ: $funcType([], [$Complex128], false)}, {prop: "FieldByIndex", name: "FieldByIndex", pkg: "", typ: $funcType([sliceType$11], [Value], false)}, {prop: "FieldByName", name: "FieldByName", pkg: "", typ: $funcType([$String], [Value], false)}, {prop: "FieldByNameFunc", name: "FieldByNameFunc", pkg: "", typ: $funcType([funcType$3], [Value], false)}, {prop: "Float", name: "Float", pkg: "", typ: $funcType([], [$Float64], false)}, {prop: "Int", name: "Int", pkg: "", typ: $funcType([], [$Int64], false)}, {prop: "CanInterface", name: "CanInterface", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "Interface", name: "Interface", pkg: "", typ: $funcType([], [$emptyInterface], false)}, {prop: "InterfaceData", name: "InterfaceData", pkg: "", typ: $funcType([], [arrayType$3], false)}, {prop: "IsValid", name: "IsValid", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "Kind", name: "Kind", pkg: "", typ: $funcType([], [Kind], false)}, {prop: "MapIndex", name: "MapIndex", pkg: "", typ: $funcType([Value], [Value], false)}, {prop: "MapKeys", name: "MapKeys", pkg: "", typ: $funcType([], [sliceType$7], false)}, {prop: "Method", name: "Method", pkg: "", typ: $funcType([$Int], [Value], false)}, {prop: "NumMethod", name: "NumMethod", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "MethodByName", name: "MethodByName", pkg: "", typ: $funcType([$String], [Value], false)}, {prop: "NumField", name: "NumField", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "OverflowComplex", name: "OverflowComplex", pkg: "", typ: $funcType([$Complex128], [$Bool], false)}, {prop: "OverflowFloat", name: "OverflowFloat", pkg: "", typ: $funcType([$Float64], [$Bool], false)}, {prop: "OverflowInt", name: "OverflowInt", pkg: "", typ: $funcType([$Int64], [$Bool], false)}, {prop: "OverflowUint", name: "OverflowUint", pkg: "", typ: $funcType([$Uint64], [$Bool], false)}, {prop: "Recv", name: "Recv", pkg: "", typ: $funcType([], [Value, $Bool], false)}, {prop: "recv", name: "recv", pkg: "reflect", typ: $funcType([$Bool], [Value, $Bool], false)}, {prop: "Send", name: "Send", pkg: "", typ: $funcType([Value], [], false)}, {prop: "send", name: "send", pkg: "reflect", typ: $funcType([Value, $Bool], [$Bool], false)}, {prop: "SetBool", name: "SetBool", pkg: "", typ: $funcType([$Bool], [], false)}, {prop: "SetBytes", name: "SetBytes", pkg: "", typ: $funcType([sliceType$14], [], false)}, {prop: "setRunes", name: "setRunes", pkg: "reflect", typ: $funcType([sliceType$15], [], false)}, {prop: "SetComplex", name: "SetComplex", pkg: "", typ: $funcType([$Complex128], [], false)}, {prop: "SetFloat", name: "SetFloat", pkg: "", typ: $funcType([$Float64], [], false)}, {prop: "SetInt", name: "SetInt", pkg: "", typ: $funcType([$Int64], [], false)}, {prop: "SetMapIndex", name: "SetMapIndex", pkg: "", typ: $funcType([Value, Value], [], false)}, {prop: "SetUint", name: "SetUint", pkg: "", typ: $funcType([$Uint64], [], false)}, {prop: "SetPointer", name: "SetPointer", pkg: "", typ: $funcType([$UnsafePointer], [], false)}, {prop: "SetString", name: "SetString", pkg: "", typ: $funcType([$String], [], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "TryRecv", name: "TryRecv", pkg: "", typ: $funcType([], [Value, $Bool], false)}, {prop: "TrySend", name: "TrySend", pkg: "", typ: $funcType([Value], [$Bool], false)}, {prop: "Type", name: "Type", pkg: "", typ: $funcType([], [Type], false)}, {prop: "Uint", name: "Uint", pkg: "", typ: $funcType([], [$Uint64], false)}, {prop: "UnsafeAddr", name: "UnsafeAddr", pkg: "", typ: $funcType([], [$Uintptr], false)}, {prop: "assignTo", name: "assignTo", pkg: "reflect", typ: $funcType([$String, ptrType$1, $UnsafePointer], [Value], false)}, {prop: "Convert", name: "Convert", pkg: "", typ: $funcType([Type], [Value], false)}];
  19766. flag.methods = [{prop: "kind", name: "kind", pkg: "reflect", typ: $funcType([], [Kind], false)}, {prop: "mustBe", name: "mustBe", pkg: "reflect", typ: $funcType([Kind], [], false)}, {prop: "mustBeExported", name: "mustBeExported", pkg: "reflect", typ: $funcType([], [], false)}, {prop: "mustBeAssignable", name: "mustBeAssignable", pkg: "reflect", typ: $funcType([], [], false)}];
  19767. ptrType$21.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}];
  19768. mapIter.init([{prop: "t", name: "t", pkg: "reflect", typ: Type, tag: ""}, {prop: "m", name: "m", pkg: "reflect", typ: ptrType$3, tag: ""}, {prop: "keys", name: "keys", pkg: "reflect", typ: ptrType$3, tag: ""}, {prop: "i", name: "i", pkg: "reflect", typ: $Int, tag: ""}]);
  19769. Type.init([{prop: "Align", name: "Align", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "AssignableTo", name: "AssignableTo", pkg: "", typ: $funcType([Type], [$Bool], false)}, {prop: "Bits", name: "Bits", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "ChanDir", name: "ChanDir", pkg: "", typ: $funcType([], [ChanDir], false)}, {prop: "Comparable", name: "Comparable", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "ConvertibleTo", name: "ConvertibleTo", pkg: "", typ: $funcType([Type], [$Bool], false)}, {prop: "Elem", name: "Elem", pkg: "", typ: $funcType([], [Type], false)}, {prop: "Field", name: "Field", pkg: "", typ: $funcType([$Int], [StructField], false)}, {prop: "FieldAlign", name: "FieldAlign", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "FieldByIndex", name: "FieldByIndex", pkg: "", typ: $funcType([sliceType$11], [StructField], false)}, {prop: "FieldByName", name: "FieldByName", pkg: "", typ: $funcType([$String], [StructField, $Bool], false)}, {prop: "FieldByNameFunc", name: "FieldByNameFunc", pkg: "", typ: $funcType([funcType$3], [StructField, $Bool], false)}, {prop: "Implements", name: "Implements", pkg: "", typ: $funcType([Type], [$Bool], false)}, {prop: "In", name: "In", pkg: "", typ: $funcType([$Int], [Type], false)}, {prop: "IsVariadic", name: "IsVariadic", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "Key", name: "Key", pkg: "", typ: $funcType([], [Type], false)}, {prop: "Kind", name: "Kind", pkg: "", typ: $funcType([], [Kind], false)}, {prop: "Len", name: "Len", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Method", name: "Method", pkg: "", typ: $funcType([$Int], [Method], false)}, {prop: "MethodByName", name: "MethodByName", pkg: "", typ: $funcType([$String], [Method, $Bool], false)}, {prop: "Name", name: "Name", pkg: "", typ: $funcType([], [$String], false)}, {prop: "NumField", name: "NumField", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "NumIn", name: "NumIn", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "NumMethod", name: "NumMethod", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "NumOut", name: "NumOut", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Out", name: "Out", pkg: "", typ: $funcType([$Int], [Type], false)}, {prop: "PkgPath", name: "PkgPath", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Size", name: "Size", pkg: "", typ: $funcType([], [$Uintptr], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "common", name: "common", pkg: "reflect", typ: $funcType([], [ptrType$1], false)}, {prop: "uncommon", name: "uncommon", pkg: "reflect", typ: $funcType([], [ptrType$6], false)}]);
  19770. rtype.init([{prop: "size", name: "size", pkg: "reflect", typ: $Uintptr, tag: ""}, {prop: "hash", name: "hash", pkg: "reflect", typ: $Uint32, tag: ""}, {prop: "_$2", name: "_", pkg: "reflect", typ: $Uint8, tag: ""}, {prop: "align", name: "align", pkg: "reflect", typ: $Uint8, tag: ""}, {prop: "fieldAlign", name: "fieldAlign", pkg: "reflect", typ: $Uint8, tag: ""}, {prop: "kind", name: "kind", pkg: "reflect", typ: $Uint8, tag: ""}, {prop: "alg", name: "alg", pkg: "reflect", typ: ptrType$4, tag: ""}, {prop: "gc", name: "gc", pkg: "reflect", typ: arrayType$1, tag: ""}, {prop: "string", name: "string", pkg: "reflect", typ: ptrType$5, tag: ""}, {prop: "uncommonType", name: "", pkg: "reflect", typ: ptrType$6, tag: ""}, {prop: "ptrToThis", name: "ptrToThis", pkg: "reflect", typ: ptrType$1, tag: ""}, {prop: "zero", name: "zero", pkg: "reflect", typ: $UnsafePointer, tag: ""}]);
  19771. typeAlg.init([{prop: "hash", name: "hash", pkg: "reflect", typ: funcType$4, tag: ""}, {prop: "equal", name: "equal", pkg: "reflect", typ: funcType$5, tag: ""}]);
  19772. method.init([{prop: "name", name: "name", pkg: "reflect", typ: ptrType$5, tag: ""}, {prop: "pkgPath", name: "pkgPath", pkg: "reflect", typ: ptrType$5, tag: ""}, {prop: "mtyp", name: "mtyp", pkg: "reflect", typ: ptrType$1, tag: ""}, {prop: "typ", name: "typ", pkg: "reflect", typ: ptrType$1, tag: ""}, {prop: "ifn", name: "ifn", pkg: "reflect", typ: $UnsafePointer, tag: ""}, {prop: "tfn", name: "tfn", pkg: "reflect", typ: $UnsafePointer, tag: ""}]);
  19773. uncommonType.init([{prop: "name", name: "name", pkg: "reflect", typ: ptrType$5, tag: ""}, {prop: "pkgPath", name: "pkgPath", pkg: "reflect", typ: ptrType$5, tag: ""}, {prop: "methods", name: "methods", pkg: "reflect", typ: sliceType$3, tag: ""}]);
  19774. arrayType.init([{prop: "rtype", name: "", pkg: "reflect", typ: rtype, tag: "reflect:\"array\""}, {prop: "elem", name: "elem", pkg: "reflect", typ: ptrType$1, tag: ""}, {prop: "slice", name: "slice", pkg: "reflect", typ: ptrType$1, tag: ""}, {prop: "len", name: "len", pkg: "reflect", typ: $Uintptr, tag: ""}]);
  19775. chanType.init([{prop: "rtype", name: "", pkg: "reflect", typ: rtype, tag: "reflect:\"chan\""}, {prop: "elem", name: "elem", pkg: "reflect", typ: ptrType$1, tag: ""}, {prop: "dir", name: "dir", pkg: "reflect", typ: $Uintptr, tag: ""}]);
  19776. funcType.init([{prop: "rtype", name: "", pkg: "reflect", typ: rtype, tag: "reflect:\"func\""}, {prop: "dotdotdot", name: "dotdotdot", pkg: "reflect", typ: $Bool, tag: ""}, {prop: "in$2", name: "in", pkg: "reflect", typ: sliceType$4, tag: ""}, {prop: "out", name: "out", pkg: "reflect", typ: sliceType$4, tag: ""}]);
  19777. imethod.init([{prop: "name", name: "name", pkg: "reflect", typ: ptrType$5, tag: ""}, {prop: "pkgPath", name: "pkgPath", pkg: "reflect", typ: ptrType$5, tag: ""}, {prop: "typ", name: "typ", pkg: "reflect", typ: ptrType$1, tag: ""}]);
  19778. interfaceType.init([{prop: "rtype", name: "", pkg: "reflect", typ: rtype, tag: "reflect:\"interface\""}, {prop: "methods", name: "methods", pkg: "reflect", typ: sliceType$5, tag: ""}]);
  19779. mapType.init([{prop: "rtype", name: "", pkg: "reflect", typ: rtype, tag: "reflect:\"map\""}, {prop: "key", name: "key", pkg: "reflect", typ: ptrType$1, tag: ""}, {prop: "elem", name: "elem", pkg: "reflect", typ: ptrType$1, tag: ""}, {prop: "bucket", name: "bucket", pkg: "reflect", typ: ptrType$1, tag: ""}, {prop: "hmap", name: "hmap", pkg: "reflect", typ: ptrType$1, tag: ""}, {prop: "keysize", name: "keysize", pkg: "reflect", typ: $Uint8, tag: ""}, {prop: "indirectkey", name: "indirectkey", pkg: "reflect", typ: $Uint8, tag: ""}, {prop: "valuesize", name: "valuesize", pkg: "reflect", typ: $Uint8, tag: ""}, {prop: "indirectvalue", name: "indirectvalue", pkg: "reflect", typ: $Uint8, tag: ""}, {prop: "bucketsize", name: "bucketsize", pkg: "reflect", typ: $Uint16, tag: ""}]);
  19780. ptrType.init([{prop: "rtype", name: "", pkg: "reflect", typ: rtype, tag: "reflect:\"ptr\""}, {prop: "elem", name: "elem", pkg: "reflect", typ: ptrType$1, tag: ""}]);
  19781. sliceType.init([{prop: "rtype", name: "", pkg: "reflect", typ: rtype, tag: "reflect:\"slice\""}, {prop: "elem", name: "elem", pkg: "reflect", typ: ptrType$1, tag: ""}]);
  19782. structField.init([{prop: "name", name: "name", pkg: "reflect", typ: ptrType$5, tag: ""}, {prop: "pkgPath", name: "pkgPath", pkg: "reflect", typ: ptrType$5, tag: ""}, {prop: "typ", name: "typ", pkg: "reflect", typ: ptrType$1, tag: ""}, {prop: "tag", name: "tag", pkg: "reflect", typ: ptrType$5, tag: ""}, {prop: "offset", name: "offset", pkg: "reflect", typ: $Uintptr, tag: ""}]);
  19783. structType.init([{prop: "rtype", name: "", pkg: "reflect", typ: rtype, tag: "reflect:\"struct\""}, {prop: "fields", name: "fields", pkg: "reflect", typ: sliceType$6, tag: ""}]);
  19784. Method.init([{prop: "Name", name: "Name", pkg: "", typ: $String, tag: ""}, {prop: "PkgPath", name: "PkgPath", pkg: "", typ: $String, tag: ""}, {prop: "Type", name: "Type", pkg: "", typ: Type, tag: ""}, {prop: "Func", name: "Func", pkg: "", typ: Value, tag: ""}, {prop: "Index", name: "Index", pkg: "", typ: $Int, tag: ""}]);
  19785. StructField.init([{prop: "Name", name: "Name", pkg: "", typ: $String, tag: ""}, {prop: "PkgPath", name: "PkgPath", pkg: "", typ: $String, tag: ""}, {prop: "Type", name: "Type", pkg: "", typ: Type, tag: ""}, {prop: "Tag", name: "Tag", pkg: "", typ: StructTag, tag: ""}, {prop: "Offset", name: "Offset", pkg: "", typ: $Uintptr, tag: ""}, {prop: "Index", name: "Index", pkg: "", typ: sliceType$11, tag: ""}, {prop: "Anonymous", name: "Anonymous", pkg: "", typ: $Bool, tag: ""}]);
  19786. fieldScan.init([{prop: "typ", name: "typ", pkg: "reflect", typ: ptrType$13, tag: ""}, {prop: "index", name: "index", pkg: "reflect", typ: sliceType$11, tag: ""}]);
  19787. Value.init([{prop: "typ", name: "typ", pkg: "reflect", typ: ptrType$1, tag: ""}, {prop: "ptr", name: "ptr", pkg: "reflect", typ: $UnsafePointer, tag: ""}, {prop: "flag", name: "", pkg: "reflect", typ: flag, tag: ""}]);
  19788. ValueError.init([{prop: "Method", name: "Method", pkg: "", typ: $String, tag: ""}, {prop: "Kind", name: "Kind", pkg: "", typ: Kind, tag: ""}]);
  19789. nonEmptyInterface.init([{prop: "itab", name: "itab", pkg: "reflect", typ: ptrType$8, tag: ""}, {prop: "word", name: "word", pkg: "reflect", typ: $UnsafePointer, tag: ""}]);
  19790. $init = function() {
  19791. $pkg.$init = function() {};
  19792. /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  19793. $r = js.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  19794. $r = math.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  19795. $r = runtime.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  19796. $r = strconv.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  19797. $r = sync.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  19798. initialized = false;
  19799. stringPtrMap = new $Map();
  19800. callHelper = $assertType($internalize($call, $emptyInterface), funcType$1);
  19801. selectHelper = $assertType($internalize($select, $emptyInterface), funcType$1);
  19802. kindNames = new sliceType$2(["invalid", "bool", "int", "int8", "int16", "int32", "int64", "uint", "uint8", "uint16", "uint32", "uint64", "uintptr", "float32", "float64", "complex64", "complex128", "array", "chan", "func", "interface", "map", "ptr", "slice", "string", "struct", "unsafe.Pointer"]);
  19803. jsObjectPtr = reflectType($jsObjectPtr);
  19804. uint8Type = $assertType(TypeOf(new $Uint8(0)), ptrType$1);
  19805. $r = init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  19806. /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
  19807. };
  19808. $pkg.$init = $init;
  19809. return $pkg;
  19810. })();
  19811. $packages["fmt"] = (function() {
  19812. var $pkg = {}, $init, errors, io, math, os, reflect, strconv, sync, utf8, fmtFlags, fmt, State, Formatter, Stringer, GoStringer, buffer, pp, runeUnreader, ScanState, scanError, ss, ssave, sliceType, sliceType$1, arrayType, sliceType$2, ptrType, ptrType$1, ptrType$2, ptrType$5, arrayType$1, arrayType$2, ptrType$25, funcType, padZeroBytes, padSpaceBytes, trueBytes, falseBytes, commaSpaceBytes, nilAngleBytes, nilParenBytes, nilBytes, mapBytes, percentBangBytes, missingBytes, badIndexBytes, panicBytes, extraBytes, irparenBytes, bytesBytes, badWidthBytes, badPrecBytes, noVerbBytes, ppFree, intBits, uintptrBits, byteType, space, ssFree, complexError, boolError, _r, _r$1, init, doPrec, newPrinter, Fprintf, Sprintf, Errorf, Fprint, Sprint, Fprintln, Sprintln, getField, parsenum, intFromArg, parseArgNumber, isSpace, notSpace, indexRune;
  19813. errors = $packages["errors"];
  19814. io = $packages["io"];
  19815. math = $packages["math"];
  19816. os = $packages["os"];
  19817. reflect = $packages["reflect"];
  19818. strconv = $packages["strconv"];
  19819. sync = $packages["sync"];
  19820. utf8 = $packages["unicode/utf8"];
  19821. fmtFlags = $pkg.fmtFlags = $newType(0, $kindStruct, "fmt.fmtFlags", "fmtFlags", "fmt", function(widPresent_, precPresent_, minus_, plus_, sharp_, space_, unicode_, uniQuote_, zero_, plusV_, sharpV_) {
  19822. this.$val = this;
  19823. if (arguments.length === 0) {
  19824. this.widPresent = false;
  19825. this.precPresent = false;
  19826. this.minus = false;
  19827. this.plus = false;
  19828. this.sharp = false;
  19829. this.space = false;
  19830. this.unicode = false;
  19831. this.uniQuote = false;
  19832. this.zero = false;
  19833. this.plusV = false;
  19834. this.sharpV = false;
  19835. return;
  19836. }
  19837. this.widPresent = widPresent_;
  19838. this.precPresent = precPresent_;
  19839. this.minus = minus_;
  19840. this.plus = plus_;
  19841. this.sharp = sharp_;
  19842. this.space = space_;
  19843. this.unicode = unicode_;
  19844. this.uniQuote = uniQuote_;
  19845. this.zero = zero_;
  19846. this.plusV = plusV_;
  19847. this.sharpV = sharpV_;
  19848. });
  19849. fmt = $pkg.fmt = $newType(0, $kindStruct, "fmt.fmt", "fmt", "fmt", function(intbuf_, buf_, wid_, prec_, fmtFlags_) {
  19850. this.$val = this;
  19851. if (arguments.length === 0) {
  19852. this.intbuf = arrayType$2.zero();
  19853. this.buf = ptrType$1.nil;
  19854. this.wid = 0;
  19855. this.prec = 0;
  19856. this.fmtFlags = new fmtFlags.ptr();
  19857. return;
  19858. }
  19859. this.intbuf = intbuf_;
  19860. this.buf = buf_;
  19861. this.wid = wid_;
  19862. this.prec = prec_;
  19863. this.fmtFlags = fmtFlags_;
  19864. });
  19865. State = $pkg.State = $newType(8, $kindInterface, "fmt.State", "State", "fmt", null);
  19866. Formatter = $pkg.Formatter = $newType(8, $kindInterface, "fmt.Formatter", "Formatter", "fmt", null);
  19867. Stringer = $pkg.Stringer = $newType(8, $kindInterface, "fmt.Stringer", "Stringer", "fmt", null);
  19868. GoStringer = $pkg.GoStringer = $newType(8, $kindInterface, "fmt.GoStringer", "GoStringer", "fmt", null);
  19869. buffer = $pkg.buffer = $newType(12, $kindSlice, "fmt.buffer", "buffer", "fmt", null);
  19870. pp = $pkg.pp = $newType(0, $kindStruct, "fmt.pp", "pp", "fmt", function(n_, panicking_, erroring_, buf_, arg_, value_, reordered_, goodArgNum_, runeBuf_, fmt_) {
  19871. this.$val = this;
  19872. if (arguments.length === 0) {
  19873. this.n = 0;
  19874. this.panicking = false;
  19875. this.erroring = false;
  19876. this.buf = buffer.nil;
  19877. this.arg = $ifaceNil;
  19878. this.value = new reflect.Value.ptr();
  19879. this.reordered = false;
  19880. this.goodArgNum = false;
  19881. this.runeBuf = arrayType$1.zero();
  19882. this.fmt = new fmt.ptr();
  19883. return;
  19884. }
  19885. this.n = n_;
  19886. this.panicking = panicking_;
  19887. this.erroring = erroring_;
  19888. this.buf = buf_;
  19889. this.arg = arg_;
  19890. this.value = value_;
  19891. this.reordered = reordered_;
  19892. this.goodArgNum = goodArgNum_;
  19893. this.runeBuf = runeBuf_;
  19894. this.fmt = fmt_;
  19895. });
  19896. runeUnreader = $pkg.runeUnreader = $newType(8, $kindInterface, "fmt.runeUnreader", "runeUnreader", "fmt", null);
  19897. ScanState = $pkg.ScanState = $newType(8, $kindInterface, "fmt.ScanState", "ScanState", "fmt", null);
  19898. scanError = $pkg.scanError = $newType(0, $kindStruct, "fmt.scanError", "scanError", "fmt", function(err_) {
  19899. this.$val = this;
  19900. if (arguments.length === 0) {
  19901. this.err = $ifaceNil;
  19902. return;
  19903. }
  19904. this.err = err_;
  19905. });
  19906. ss = $pkg.ss = $newType(0, $kindStruct, "fmt.ss", "ss", "fmt", function(rr_, buf_, peekRune_, prevRune_, count_, atEOF_, ssave_) {
  19907. this.$val = this;
  19908. if (arguments.length === 0) {
  19909. this.rr = $ifaceNil;
  19910. this.buf = buffer.nil;
  19911. this.peekRune = 0;
  19912. this.prevRune = 0;
  19913. this.count = 0;
  19914. this.atEOF = false;
  19915. this.ssave = new ssave.ptr();
  19916. return;
  19917. }
  19918. this.rr = rr_;
  19919. this.buf = buf_;
  19920. this.peekRune = peekRune_;
  19921. this.prevRune = prevRune_;
  19922. this.count = count_;
  19923. this.atEOF = atEOF_;
  19924. this.ssave = ssave_;
  19925. });
  19926. ssave = $pkg.ssave = $newType(0, $kindStruct, "fmt.ssave", "ssave", "fmt", function(validSave_, nlIsEnd_, nlIsSpace_, argLimit_, limit_, maxWid_) {
  19927. this.$val = this;
  19928. if (arguments.length === 0) {
  19929. this.validSave = false;
  19930. this.nlIsEnd = false;
  19931. this.nlIsSpace = false;
  19932. this.argLimit = 0;
  19933. this.limit = 0;
  19934. this.maxWid = 0;
  19935. return;
  19936. }
  19937. this.validSave = validSave_;
  19938. this.nlIsEnd = nlIsEnd_;
  19939. this.nlIsSpace = nlIsSpace_;
  19940. this.argLimit = argLimit_;
  19941. this.limit = limit_;
  19942. this.maxWid = maxWid_;
  19943. });
  19944. sliceType = $sliceType($Uint8);
  19945. sliceType$1 = $sliceType($emptyInterface);
  19946. arrayType = $arrayType($Uint16, 2);
  19947. sliceType$2 = $sliceType(arrayType);
  19948. ptrType = $ptrType(pp);
  19949. ptrType$1 = $ptrType(buffer);
  19950. ptrType$2 = $ptrType(reflect.rtype);
  19951. ptrType$5 = $ptrType(ss);
  19952. arrayType$1 = $arrayType($Uint8, 4);
  19953. arrayType$2 = $arrayType($Uint8, 65);
  19954. ptrType$25 = $ptrType(fmt);
  19955. funcType = $funcType([$Int32], [$Bool], false);
  19956. init = function() {
  19957. var $ptr, i;
  19958. i = 0;
  19959. while (true) {
  19960. if (!(i < 65)) { break; }
  19961. ((i < 0 || i >= padZeroBytes.$length) ? $throwRuntimeError("index out of range") : padZeroBytes.$array[padZeroBytes.$offset + i] = 48);
  19962. ((i < 0 || i >= padSpaceBytes.$length) ? $throwRuntimeError("index out of range") : padSpaceBytes.$array[padSpaceBytes.$offset + i] = 32);
  19963. i = i + (1) >> 0;
  19964. }
  19965. };
  19966. fmt.ptr.prototype.clearflags = function() {
  19967. var $ptr, f;
  19968. f = this;
  19969. $copy(f.fmtFlags, new fmtFlags.ptr(false, false, false, false, false, false, false, false, false, false, false), fmtFlags);
  19970. };
  19971. fmt.prototype.clearflags = function() { return this.$val.clearflags(); };
  19972. fmt.ptr.prototype.init = function(buf) {
  19973. var $ptr, buf, f;
  19974. f = this;
  19975. f.buf = buf;
  19976. f.clearflags();
  19977. };
  19978. fmt.prototype.init = function(buf) { return this.$val.init(buf); };
  19979. fmt.ptr.prototype.computePadding = function(width) {
  19980. var $ptr, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, f, left, leftWidth, padding, rightWidth, w, width;
  19981. padding = sliceType.nil;
  19982. leftWidth = 0;
  19983. rightWidth = 0;
  19984. f = this;
  19985. left = !f.fmtFlags.minus;
  19986. w = f.wid;
  19987. if (w < 0) {
  19988. left = false;
  19989. w = -w;
  19990. }
  19991. w = w - (width) >> 0;
  19992. if (w > 0) {
  19993. if (left && f.fmtFlags.zero) {
  19994. _tmp = padZeroBytes; _tmp$1 = w; _tmp$2 = 0; padding = _tmp; leftWidth = _tmp$1; rightWidth = _tmp$2;
  19995. return [padding, leftWidth, rightWidth];
  19996. }
  19997. if (left) {
  19998. _tmp$3 = padSpaceBytes; _tmp$4 = w; _tmp$5 = 0; padding = _tmp$3; leftWidth = _tmp$4; rightWidth = _tmp$5;
  19999. return [padding, leftWidth, rightWidth];
  20000. } else {
  20001. _tmp$6 = padSpaceBytes; _tmp$7 = 0; _tmp$8 = w; padding = _tmp$6; leftWidth = _tmp$7; rightWidth = _tmp$8;
  20002. return [padding, leftWidth, rightWidth];
  20003. }
  20004. }
  20005. return [padding, leftWidth, rightWidth];
  20006. };
  20007. fmt.prototype.computePadding = function(width) { return this.$val.computePadding(width); };
  20008. fmt.ptr.prototype.writePadding = function(n, padding) {
  20009. var $ptr, f, m, n, padding;
  20010. f = this;
  20011. while (true) {
  20012. if (!(n > 0)) { break; }
  20013. m = n;
  20014. if (m > 65) {
  20015. m = 65;
  20016. }
  20017. f.buf.Write($subslice(padding, 0, m));
  20018. n = n - (m) >> 0;
  20019. }
  20020. };
  20021. fmt.prototype.writePadding = function(n, padding) { return this.$val.writePadding(n, padding); };
  20022. fmt.ptr.prototype.pad = function(b) {
  20023. var $ptr, _tuple, b, f, left, padding, right;
  20024. f = this;
  20025. if (!f.fmtFlags.widPresent || (f.wid === 0)) {
  20026. f.buf.Write(b);
  20027. return;
  20028. }
  20029. _tuple = f.computePadding(utf8.RuneCount(b)); padding = _tuple[0]; left = _tuple[1]; right = _tuple[2];
  20030. if (left > 0) {
  20031. f.writePadding(left, padding);
  20032. }
  20033. f.buf.Write(b);
  20034. if (right > 0) {
  20035. f.writePadding(right, padding);
  20036. }
  20037. };
  20038. fmt.prototype.pad = function(b) { return this.$val.pad(b); };
  20039. fmt.ptr.prototype.padString = function(s) {
  20040. var $ptr, _tuple, f, left, padding, right, s;
  20041. f = this;
  20042. if (!f.fmtFlags.widPresent || (f.wid === 0)) {
  20043. f.buf.WriteString(s);
  20044. return;
  20045. }
  20046. _tuple = f.computePadding(utf8.RuneCountInString(s)); padding = _tuple[0]; left = _tuple[1]; right = _tuple[2];
  20047. if (left > 0) {
  20048. f.writePadding(left, padding);
  20049. }
  20050. f.buf.WriteString(s);
  20051. if (right > 0) {
  20052. f.writePadding(right, padding);
  20053. }
  20054. };
  20055. fmt.prototype.padString = function(s) { return this.$val.padString(s); };
  20056. fmt.ptr.prototype.fmt_boolean = function(v) {
  20057. var $ptr, f, v;
  20058. f = this;
  20059. if (v) {
  20060. f.pad(trueBytes);
  20061. } else {
  20062. f.pad(falseBytes);
  20063. }
  20064. };
  20065. fmt.prototype.fmt_boolean = function(v) { return this.$val.fmt_boolean(v); };
  20066. fmt.ptr.prototype.integer = function(a, base, signedness, digits) {
  20067. var $ptr, _ref, _ref$1, a, base, buf, digits, f, i, j, negative, next, prec, runeWidth, signedness, ua, width, width$1, x, x$1, x$2, x$3;
  20068. f = this;
  20069. if (f.fmtFlags.precPresent && (f.prec === 0) && (a.$high === 0 && a.$low === 0)) {
  20070. return;
  20071. }
  20072. buf = $subslice(new sliceType(f.intbuf), 0);
  20073. if (f.fmtFlags.widPresent) {
  20074. width = f.wid;
  20075. if ((base.$high === 0 && base.$low === 16) && f.fmtFlags.sharp) {
  20076. width = width + (2) >> 0;
  20077. }
  20078. if (width > 65) {
  20079. buf = $makeSlice(sliceType, width);
  20080. }
  20081. }
  20082. negative = signedness === true && (a.$high < 0 || (a.$high === 0 && a.$low < 0));
  20083. if (negative) {
  20084. a = new $Int64(-a.$high, -a.$low);
  20085. }
  20086. prec = 0;
  20087. if (f.fmtFlags.precPresent) {
  20088. prec = f.prec;
  20089. f.fmtFlags.zero = false;
  20090. } else if (f.fmtFlags.zero && f.fmtFlags.widPresent && !f.fmtFlags.minus && f.wid > 0) {
  20091. prec = f.wid;
  20092. if (negative || f.fmtFlags.plus || f.fmtFlags.space) {
  20093. prec = prec - (1) >> 0;
  20094. }
  20095. }
  20096. i = buf.$length;
  20097. ua = new $Uint64(a.$high, a.$low);
  20098. _ref = base;
  20099. if ((_ref.$high === 0 && _ref.$low === 10)) {
  20100. while (true) {
  20101. if (!((ua.$high > 0 || (ua.$high === 0 && ua.$low >= 10)))) { break; }
  20102. i = i - (1) >> 0;
  20103. next = $div64(ua, new $Uint64(0, 10), false);
  20104. ((i < 0 || i >= buf.$length) ? $throwRuntimeError("index out of range") : buf.$array[buf.$offset + i] = ((x = new $Uint64(0 + ua.$high, 48 + ua.$low), x$1 = $mul64(next, new $Uint64(0, 10)), new $Uint64(x.$high - x$1.$high, x.$low - x$1.$low)).$low << 24 >>> 24));
  20105. ua = next;
  20106. }
  20107. } else if ((_ref.$high === 0 && _ref.$low === 16)) {
  20108. while (true) {
  20109. if (!((ua.$high > 0 || (ua.$high === 0 && ua.$low >= 16)))) { break; }
  20110. i = i - (1) >> 0;
  20111. ((i < 0 || i >= buf.$length) ? $throwRuntimeError("index out of range") : buf.$array[buf.$offset + i] = digits.charCodeAt($flatten64(new $Uint64(ua.$high & 0, (ua.$low & 15) >>> 0))));
  20112. ua = $shiftRightUint64(ua, (4));
  20113. }
  20114. } else if ((_ref.$high === 0 && _ref.$low === 8)) {
  20115. while (true) {
  20116. if (!((ua.$high > 0 || (ua.$high === 0 && ua.$low >= 8)))) { break; }
  20117. i = i - (1) >> 0;
  20118. ((i < 0 || i >= buf.$length) ? $throwRuntimeError("index out of range") : buf.$array[buf.$offset + i] = ((x$2 = new $Uint64(ua.$high & 0, (ua.$low & 7) >>> 0), new $Uint64(0 + x$2.$high, 48 + x$2.$low)).$low << 24 >>> 24));
  20119. ua = $shiftRightUint64(ua, (3));
  20120. }
  20121. } else if ((_ref.$high === 0 && _ref.$low === 2)) {
  20122. while (true) {
  20123. if (!((ua.$high > 0 || (ua.$high === 0 && ua.$low >= 2)))) { break; }
  20124. i = i - (1) >> 0;
  20125. ((i < 0 || i >= buf.$length) ? $throwRuntimeError("index out of range") : buf.$array[buf.$offset + i] = ((x$3 = new $Uint64(ua.$high & 0, (ua.$low & 1) >>> 0), new $Uint64(0 + x$3.$high, 48 + x$3.$low)).$low << 24 >>> 24));
  20126. ua = $shiftRightUint64(ua, (1));
  20127. }
  20128. } else {
  20129. $panic(new $String("fmt: unknown base; can't happen"));
  20130. }
  20131. i = i - (1) >> 0;
  20132. ((i < 0 || i >= buf.$length) ? $throwRuntimeError("index out of range") : buf.$array[buf.$offset + i] = digits.charCodeAt($flatten64(ua)));
  20133. while (true) {
  20134. if (!(i > 0 && prec > (buf.$length - i >> 0))) { break; }
  20135. i = i - (1) >> 0;
  20136. ((i < 0 || i >= buf.$length) ? $throwRuntimeError("index out of range") : buf.$array[buf.$offset + i] = 48);
  20137. }
  20138. if (f.fmtFlags.sharp) {
  20139. _ref$1 = base;
  20140. if ((_ref$1.$high === 0 && _ref$1.$low === 8)) {
  20141. if (!((((i < 0 || i >= buf.$length) ? $throwRuntimeError("index out of range") : buf.$array[buf.$offset + i]) === 48))) {
  20142. i = i - (1) >> 0;
  20143. ((i < 0 || i >= buf.$length) ? $throwRuntimeError("index out of range") : buf.$array[buf.$offset + i] = 48);
  20144. }
  20145. } else if ((_ref$1.$high === 0 && _ref$1.$low === 16)) {
  20146. i = i - (1) >> 0;
  20147. ((i < 0 || i >= buf.$length) ? $throwRuntimeError("index out of range") : buf.$array[buf.$offset + i] = (120 + digits.charCodeAt(10) << 24 >>> 24) - 97 << 24 >>> 24);
  20148. i = i - (1) >> 0;
  20149. ((i < 0 || i >= buf.$length) ? $throwRuntimeError("index out of range") : buf.$array[buf.$offset + i] = 48);
  20150. }
  20151. }
  20152. if (f.fmtFlags.unicode) {
  20153. i = i - (1) >> 0;
  20154. ((i < 0 || i >= buf.$length) ? $throwRuntimeError("index out of range") : buf.$array[buf.$offset + i] = 43);
  20155. i = i - (1) >> 0;
  20156. ((i < 0 || i >= buf.$length) ? $throwRuntimeError("index out of range") : buf.$array[buf.$offset + i] = 85);
  20157. }
  20158. if (negative) {
  20159. i = i - (1) >> 0;
  20160. ((i < 0 || i >= buf.$length) ? $throwRuntimeError("index out of range") : buf.$array[buf.$offset + i] = 45);
  20161. } else if (f.fmtFlags.plus) {
  20162. i = i - (1) >> 0;
  20163. ((i < 0 || i >= buf.$length) ? $throwRuntimeError("index out of range") : buf.$array[buf.$offset + i] = 43);
  20164. } else if (f.fmtFlags.space) {
  20165. i = i - (1) >> 0;
  20166. ((i < 0 || i >= buf.$length) ? $throwRuntimeError("index out of range") : buf.$array[buf.$offset + i] = 32);
  20167. }
  20168. if (f.fmtFlags.unicode && f.fmtFlags.uniQuote && (a.$high > 0 || (a.$high === 0 && a.$low >= 0)) && (a.$high < 0 || (a.$high === 0 && a.$low <= 1114111)) && strconv.IsPrint(((a.$low + ((a.$high >> 31) * 4294967296)) >> 0))) {
  20169. runeWidth = utf8.RuneLen(((a.$low + ((a.$high >> 31) * 4294967296)) >> 0));
  20170. width$1 = (2 + runeWidth >> 0) + 1 >> 0;
  20171. $copySlice($subslice(buf, (i - width$1 >> 0)), $subslice(buf, i));
  20172. i = i - (width$1) >> 0;
  20173. j = buf.$length - width$1 >> 0;
  20174. ((j < 0 || j >= buf.$length) ? $throwRuntimeError("index out of range") : buf.$array[buf.$offset + j] = 32);
  20175. j = j + (1) >> 0;
  20176. ((j < 0 || j >= buf.$length) ? $throwRuntimeError("index out of range") : buf.$array[buf.$offset + j] = 39);
  20177. j = j + (1) >> 0;
  20178. utf8.EncodeRune($subslice(buf, j), ((a.$low + ((a.$high >> 31) * 4294967296)) >> 0));
  20179. j = j + (runeWidth) >> 0;
  20180. ((j < 0 || j >= buf.$length) ? $throwRuntimeError("index out of range") : buf.$array[buf.$offset + j] = 39);
  20181. }
  20182. f.pad($subslice(buf, i));
  20183. };
  20184. fmt.prototype.integer = function(a, base, signedness, digits) { return this.$val.integer(a, base, signedness, digits); };
  20185. fmt.ptr.prototype.truncate = function(s) {
  20186. var $ptr, _i, _ref, _rune, f, i, n, s;
  20187. f = this;
  20188. if (f.fmtFlags.precPresent && f.prec < utf8.RuneCountInString(s)) {
  20189. n = f.prec;
  20190. _ref = s;
  20191. _i = 0;
  20192. while (true) {
  20193. if (!(_i < _ref.length)) { break; }
  20194. _rune = $decodeRune(_ref, _i);
  20195. i = _i;
  20196. if (n === 0) {
  20197. s = s.substring(0, i);
  20198. break;
  20199. }
  20200. n = n - (1) >> 0;
  20201. _i += _rune[1];
  20202. }
  20203. }
  20204. return s;
  20205. };
  20206. fmt.prototype.truncate = function(s) { return this.$val.truncate(s); };
  20207. fmt.ptr.prototype.fmt_s = function(s) {
  20208. var $ptr, f, s;
  20209. f = this;
  20210. s = f.truncate(s);
  20211. f.padString(s);
  20212. };
  20213. fmt.prototype.fmt_s = function(s) { return this.$val.fmt_s(s); };
  20214. fmt.ptr.prototype.fmt_sbx = function(s, b, digits) {
  20215. var $ptr, b, buf, c, digits, f, i, n, s, x;
  20216. f = this;
  20217. n = b.$length;
  20218. if (b === sliceType.nil) {
  20219. n = s.length;
  20220. }
  20221. x = (digits.charCodeAt(10) - 97 << 24 >>> 24) + 120 << 24 >>> 24;
  20222. buf = sliceType.nil;
  20223. i = 0;
  20224. while (true) {
  20225. if (!(i < n)) { break; }
  20226. if (i > 0 && f.fmtFlags.space) {
  20227. buf = $append(buf, 32);
  20228. }
  20229. if (f.fmtFlags.sharp && (f.fmtFlags.space || (i === 0))) {
  20230. buf = $append(buf, 48, x);
  20231. }
  20232. c = 0;
  20233. if (b === sliceType.nil) {
  20234. c = s.charCodeAt(i);
  20235. } else {
  20236. c = ((i < 0 || i >= b.$length) ? $throwRuntimeError("index out of range") : b.$array[b.$offset + i]);
  20237. }
  20238. buf = $append(buf, digits.charCodeAt((c >>> 4 << 24 >>> 24)), digits.charCodeAt(((c & 15) >>> 0)));
  20239. i = i + (1) >> 0;
  20240. }
  20241. f.pad(buf);
  20242. };
  20243. fmt.prototype.fmt_sbx = function(s, b, digits) { return this.$val.fmt_sbx(s, b, digits); };
  20244. fmt.ptr.prototype.fmt_sx = function(s, digits) {
  20245. var $ptr, digits, f, s;
  20246. f = this;
  20247. if (f.fmtFlags.precPresent && f.prec < s.length) {
  20248. s = s.substring(0, f.prec);
  20249. }
  20250. f.fmt_sbx(s, sliceType.nil, digits);
  20251. };
  20252. fmt.prototype.fmt_sx = function(s, digits) { return this.$val.fmt_sx(s, digits); };
  20253. fmt.ptr.prototype.fmt_bx = function(b, digits) {
  20254. var $ptr, b, digits, f;
  20255. f = this;
  20256. if (f.fmtFlags.precPresent && f.prec < b.$length) {
  20257. b = $subslice(b, 0, f.prec);
  20258. }
  20259. f.fmt_sbx("", b, digits);
  20260. };
  20261. fmt.prototype.fmt_bx = function(b, digits) { return this.$val.fmt_bx(b, digits); };
  20262. fmt.ptr.prototype.fmt_q = function(s) {
  20263. var $ptr, f, quoted, s;
  20264. f = this;
  20265. s = f.truncate(s);
  20266. quoted = "";
  20267. if (f.fmtFlags.sharp && strconv.CanBackquote(s)) {
  20268. quoted = "`" + s + "`";
  20269. } else {
  20270. if (f.fmtFlags.plus) {
  20271. quoted = strconv.QuoteToASCII(s);
  20272. } else {
  20273. quoted = strconv.Quote(s);
  20274. }
  20275. }
  20276. f.padString(quoted);
  20277. };
  20278. fmt.prototype.fmt_q = function(s) { return this.$val.fmt_q(s); };
  20279. fmt.ptr.prototype.fmt_qc = function(c) {
  20280. var $ptr, c, f, quoted;
  20281. f = this;
  20282. quoted = sliceType.nil;
  20283. if (f.fmtFlags.plus) {
  20284. quoted = strconv.AppendQuoteRuneToASCII($subslice(new sliceType(f.intbuf), 0, 0), ((c.$low + ((c.$high >> 31) * 4294967296)) >> 0));
  20285. } else {
  20286. quoted = strconv.AppendQuoteRune($subslice(new sliceType(f.intbuf), 0, 0), ((c.$low + ((c.$high >> 31) * 4294967296)) >> 0));
  20287. }
  20288. f.pad(quoted);
  20289. };
  20290. fmt.prototype.fmt_qc = function(c) { return this.$val.fmt_qc(c); };
  20291. doPrec = function(f, def) {
  20292. var $ptr, def, f;
  20293. if (f.fmtFlags.precPresent) {
  20294. return f.prec;
  20295. }
  20296. return def;
  20297. };
  20298. fmt.ptr.prototype.formatFloat = function(v, verb, prec, n) {
  20299. var $ptr, f, n, num, prec, v, verb, $deferred;
  20300. /* */ var $err = null; try { $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
  20301. f = this;
  20302. num = strconv.AppendFloat($subslice(new sliceType(f.intbuf), 0, 1), v, verb, prec, n);
  20303. if (((1 >= num.$length ? $throwRuntimeError("index out of range") : num.$array[num.$offset + 1]) === 45) || ((1 >= num.$length ? $throwRuntimeError("index out of range") : num.$array[num.$offset + 1]) === 43)) {
  20304. num = $subslice(num, 1);
  20305. } else {
  20306. (0 >= num.$length ? $throwRuntimeError("index out of range") : num.$array[num.$offset + 0] = 43);
  20307. }
  20308. if (math.IsInf(v, 0)) {
  20309. if (f.fmtFlags.zero) {
  20310. $deferred.push([(function() {
  20311. var $ptr;
  20312. f.fmtFlags.zero = true;
  20313. }), []]);
  20314. f.fmtFlags.zero = false;
  20315. }
  20316. }
  20317. if (f.fmtFlags.zero && f.fmtFlags.widPresent && f.wid > num.$length) {
  20318. if (f.fmtFlags.space && v >= 0) {
  20319. f.buf.WriteByte(32);
  20320. f.wid = f.wid - (1) >> 0;
  20321. } else if (f.fmtFlags.plus || v < 0) {
  20322. f.buf.WriteByte((0 >= num.$length ? $throwRuntimeError("index out of range") : num.$array[num.$offset + 0]));
  20323. f.wid = f.wid - (1) >> 0;
  20324. }
  20325. f.pad($subslice(num, 1));
  20326. return;
  20327. }
  20328. if (f.fmtFlags.space && ((0 >= num.$length ? $throwRuntimeError("index out of range") : num.$array[num.$offset + 0]) === 43)) {
  20329. (0 >= num.$length ? $throwRuntimeError("index out of range") : num.$array[num.$offset + 0] = 32);
  20330. f.pad(num);
  20331. return;
  20332. }
  20333. if (f.fmtFlags.plus || ((0 >= num.$length ? $throwRuntimeError("index out of range") : num.$array[num.$offset + 0]) === 45) || math.IsInf(v, 0)) {
  20334. f.pad(num);
  20335. return;
  20336. }
  20337. f.pad($subslice(num, 1));
  20338. /* */ } catch(err) { $err = err; } finally { $callDeferred($deferred, $err); }
  20339. };
  20340. fmt.prototype.formatFloat = function(v, verb, prec, n) { return this.$val.formatFloat(v, verb, prec, n); };
  20341. fmt.ptr.prototype.fmt_e64 = function(v) {
  20342. var $ptr, f, v;
  20343. f = this;
  20344. f.formatFloat(v, 101, doPrec(f, 6), 64);
  20345. };
  20346. fmt.prototype.fmt_e64 = function(v) { return this.$val.fmt_e64(v); };
  20347. fmt.ptr.prototype.fmt_E64 = function(v) {
  20348. var $ptr, f, v;
  20349. f = this;
  20350. f.formatFloat(v, 69, doPrec(f, 6), 64);
  20351. };
  20352. fmt.prototype.fmt_E64 = function(v) { return this.$val.fmt_E64(v); };
  20353. fmt.ptr.prototype.fmt_f64 = function(v) {
  20354. var $ptr, f, v;
  20355. f = this;
  20356. f.formatFloat(v, 102, doPrec(f, 6), 64);
  20357. };
  20358. fmt.prototype.fmt_f64 = function(v) { return this.$val.fmt_f64(v); };
  20359. fmt.ptr.prototype.fmt_g64 = function(v) {
  20360. var $ptr, f, v;
  20361. f = this;
  20362. f.formatFloat(v, 103, doPrec(f, -1), 64);
  20363. };
  20364. fmt.prototype.fmt_g64 = function(v) { return this.$val.fmt_g64(v); };
  20365. fmt.ptr.prototype.fmt_G64 = function(v) {
  20366. var $ptr, f, v;
  20367. f = this;
  20368. f.formatFloat(v, 71, doPrec(f, -1), 64);
  20369. };
  20370. fmt.prototype.fmt_G64 = function(v) { return this.$val.fmt_G64(v); };
  20371. fmt.ptr.prototype.fmt_fb64 = function(v) {
  20372. var $ptr, f, v;
  20373. f = this;
  20374. f.formatFloat(v, 98, 0, 64);
  20375. };
  20376. fmt.prototype.fmt_fb64 = function(v) { return this.$val.fmt_fb64(v); };
  20377. fmt.ptr.prototype.fmt_e32 = function(v) {
  20378. var $ptr, f, v;
  20379. f = this;
  20380. f.formatFloat(v, 101, doPrec(f, 6), 32);
  20381. };
  20382. fmt.prototype.fmt_e32 = function(v) { return this.$val.fmt_e32(v); };
  20383. fmt.ptr.prototype.fmt_E32 = function(v) {
  20384. var $ptr, f, v;
  20385. f = this;
  20386. f.formatFloat(v, 69, doPrec(f, 6), 32);
  20387. };
  20388. fmt.prototype.fmt_E32 = function(v) { return this.$val.fmt_E32(v); };
  20389. fmt.ptr.prototype.fmt_f32 = function(v) {
  20390. var $ptr, f, v;
  20391. f = this;
  20392. f.formatFloat(v, 102, doPrec(f, 6), 32);
  20393. };
  20394. fmt.prototype.fmt_f32 = function(v) { return this.$val.fmt_f32(v); };
  20395. fmt.ptr.prototype.fmt_g32 = function(v) {
  20396. var $ptr, f, v;
  20397. f = this;
  20398. f.formatFloat(v, 103, doPrec(f, -1), 32);
  20399. };
  20400. fmt.prototype.fmt_g32 = function(v) { return this.$val.fmt_g32(v); };
  20401. fmt.ptr.prototype.fmt_G32 = function(v) {
  20402. var $ptr, f, v;
  20403. f = this;
  20404. f.formatFloat(v, 71, doPrec(f, -1), 32);
  20405. };
  20406. fmt.prototype.fmt_G32 = function(v) { return this.$val.fmt_G32(v); };
  20407. fmt.ptr.prototype.fmt_fb32 = function(v) {
  20408. var $ptr, f, v;
  20409. f = this;
  20410. f.formatFloat(v, 98, 0, 32);
  20411. };
  20412. fmt.prototype.fmt_fb32 = function(v) { return this.$val.fmt_fb32(v); };
  20413. fmt.ptr.prototype.fmt_c64 = function(v, verb) {
  20414. var $ptr, f, v, verb;
  20415. f = this;
  20416. f.fmt_complex(v.$real, v.$imag, 32, verb);
  20417. };
  20418. fmt.prototype.fmt_c64 = function(v, verb) { return this.$val.fmt_c64(v, verb); };
  20419. fmt.ptr.prototype.fmt_c128 = function(v, verb) {
  20420. var $ptr, f, v, verb;
  20421. f = this;
  20422. f.fmt_complex(v.$real, v.$imag, 64, verb);
  20423. };
  20424. fmt.prototype.fmt_c128 = function(v, verb) { return this.$val.fmt_c128(v, verb); };
  20425. fmt.ptr.prototype.fmt_complex = function(r, j, size, verb) {
  20426. var $ptr, _ref, f, i, j, oldPlus, oldSpace, oldWid, r, size, verb;
  20427. f = this;
  20428. f.buf.WriteByte(40);
  20429. oldPlus = f.fmtFlags.plus;
  20430. oldSpace = f.fmtFlags.space;
  20431. oldWid = f.wid;
  20432. i = 0;
  20433. while (true) {
  20434. _ref = verb;
  20435. if (_ref === 98) {
  20436. f.formatFloat(r, 98, 0, size);
  20437. } else if (_ref === 101) {
  20438. f.formatFloat(r, 101, doPrec(f, 6), size);
  20439. } else if (_ref === 69) {
  20440. f.formatFloat(r, 69, doPrec(f, 6), size);
  20441. } else if (_ref === 102 || _ref === 70) {
  20442. f.formatFloat(r, 102, doPrec(f, 6), size);
  20443. } else if (_ref === 103) {
  20444. f.formatFloat(r, 103, doPrec(f, -1), size);
  20445. } else if (_ref === 71) {
  20446. f.formatFloat(r, 71, doPrec(f, -1), size);
  20447. }
  20448. if (!((i === 0))) {
  20449. break;
  20450. }
  20451. f.fmtFlags.plus = true;
  20452. f.fmtFlags.space = false;
  20453. f.wid = oldWid;
  20454. r = j;
  20455. i = i + (1) >> 0;
  20456. }
  20457. f.fmtFlags.space = oldSpace;
  20458. f.fmtFlags.plus = oldPlus;
  20459. f.wid = oldWid;
  20460. f.buf.Write(irparenBytes);
  20461. };
  20462. fmt.prototype.fmt_complex = function(r, j, size, verb) { return this.$val.fmt_complex(r, j, size, verb); };
  20463. $ptrType(buffer).prototype.Write = function(p) {
  20464. var $ptr, _tmp, _tmp$1, b, err, n, p;
  20465. n = 0;
  20466. err = $ifaceNil;
  20467. b = this;
  20468. b.$set($appendSlice(b.$get(), p));
  20469. _tmp = p.$length; _tmp$1 = $ifaceNil; n = _tmp; err = _tmp$1;
  20470. return [n, err];
  20471. };
  20472. $ptrType(buffer).prototype.WriteString = function(s) {
  20473. var $ptr, _tmp, _tmp$1, b, err, n, s;
  20474. n = 0;
  20475. err = $ifaceNil;
  20476. b = this;
  20477. b.$set($appendSlice(b.$get(), new buffer($stringToBytes(s))));
  20478. _tmp = s.length; _tmp$1 = $ifaceNil; n = _tmp; err = _tmp$1;
  20479. return [n, err];
  20480. };
  20481. $ptrType(buffer).prototype.WriteByte = function(c) {
  20482. var $ptr, b, c;
  20483. b = this;
  20484. b.$set($append(b.$get(), c));
  20485. return $ifaceNil;
  20486. };
  20487. $ptrType(buffer).prototype.WriteRune = function(r) {
  20488. var $ptr, b, bp, n, r, w, x;
  20489. bp = this;
  20490. if (r < 128) {
  20491. bp.$set($append(bp.$get(), (r << 24 >>> 24)));
  20492. return $ifaceNil;
  20493. }
  20494. b = bp.$get();
  20495. n = b.$length;
  20496. while (true) {
  20497. if (!((n + 4 >> 0) > b.$capacity)) { break; }
  20498. b = $append(b, 0);
  20499. }
  20500. w = utf8.EncodeRune((x = $subslice(b, n, (n + 4 >> 0)), $subslice(new sliceType(x.$array), x.$offset, x.$offset + x.$length)), r);
  20501. bp.$set($subslice(b, 0, (n + w >> 0)));
  20502. return $ifaceNil;
  20503. };
  20504. newPrinter = function() {
  20505. var $ptr, _r$2, p, $s, $r;
  20506. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r$2 = $f._r$2; p = $f.p; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  20507. _r$2 = ppFree.Get(); /* */ $s = 1; case 1: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  20508. p = $assertType(_r$2, ptrType);
  20509. p.panicking = false;
  20510. p.erroring = false;
  20511. p.fmt.init((p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))));
  20512. return p;
  20513. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: newPrinter }; } $f.$ptr = $ptr; $f._r$2 = _r$2; $f.p = p; $f.$s = $s; $f.$r = $r; return $f;
  20514. };
  20515. pp.ptr.prototype.free = function() {
  20516. var $ptr, p;
  20517. p = this;
  20518. if (p.buf.$capacity > 1024) {
  20519. return;
  20520. }
  20521. p.buf = $subslice(p.buf, 0, 0);
  20522. p.arg = $ifaceNil;
  20523. p.value = new reflect.Value.ptr(ptrType$2.nil, 0, 0);
  20524. ppFree.Put(p);
  20525. };
  20526. pp.prototype.free = function() { return this.$val.free(); };
  20527. pp.ptr.prototype.Width = function() {
  20528. var $ptr, _tmp, _tmp$1, ok, p, wid;
  20529. wid = 0;
  20530. ok = false;
  20531. p = this;
  20532. _tmp = p.fmt.wid; _tmp$1 = p.fmt.fmtFlags.widPresent; wid = _tmp; ok = _tmp$1;
  20533. return [wid, ok];
  20534. };
  20535. pp.prototype.Width = function() { return this.$val.Width(); };
  20536. pp.ptr.prototype.Precision = function() {
  20537. var $ptr, _tmp, _tmp$1, ok, p, prec;
  20538. prec = 0;
  20539. ok = false;
  20540. p = this;
  20541. _tmp = p.fmt.prec; _tmp$1 = p.fmt.fmtFlags.precPresent; prec = _tmp; ok = _tmp$1;
  20542. return [prec, ok];
  20543. };
  20544. pp.prototype.Precision = function() { return this.$val.Precision(); };
  20545. pp.ptr.prototype.Flag = function(b) {
  20546. var $ptr, _ref, b, p;
  20547. p = this;
  20548. _ref = b;
  20549. if (_ref === 45) {
  20550. return p.fmt.fmtFlags.minus;
  20551. } else if (_ref === 43) {
  20552. return p.fmt.fmtFlags.plus;
  20553. } else if (_ref === 35) {
  20554. return p.fmt.fmtFlags.sharp;
  20555. } else if (_ref === 32) {
  20556. return p.fmt.fmtFlags.space;
  20557. } else if (_ref === 48) {
  20558. return p.fmt.fmtFlags.zero;
  20559. }
  20560. return false;
  20561. };
  20562. pp.prototype.Flag = function(b) { return this.$val.Flag(b); };
  20563. pp.ptr.prototype.add = function(c) {
  20564. var $ptr, c, p;
  20565. p = this;
  20566. (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteRune(c);
  20567. };
  20568. pp.prototype.add = function(c) { return this.$val.add(c); };
  20569. pp.ptr.prototype.Write = function(b) {
  20570. var $ptr, _tuple, b, err, p, ret;
  20571. ret = 0;
  20572. err = $ifaceNil;
  20573. p = this;
  20574. _tuple = (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).Write(b); ret = _tuple[0]; err = _tuple[1];
  20575. return [ret, err];
  20576. };
  20577. pp.prototype.Write = function(b) { return this.$val.Write(b); };
  20578. Fprintf = function(w, format, a) {
  20579. var $ptr, _r$2, _r$3, _tuple, a, err, format, n, p, w, x, $s, $r;
  20580. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r$2 = $f._r$2; _r$3 = $f._r$3; _tuple = $f._tuple; a = $f.a; err = $f.err; format = $f.format; n = $f.n; p = $f.p; w = $f.w; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  20581. n = 0;
  20582. err = $ifaceNil;
  20583. _r$2 = newPrinter(); /* */ $s = 1; case 1: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  20584. p = _r$2;
  20585. $r = p.doPrintf(format, a); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  20586. _r$3 = w.Write((x = p.buf, $subslice(new sliceType(x.$array), x.$offset, x.$offset + x.$length))); /* */ $s = 3; case 3: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  20587. _tuple = _r$3; n = _tuple[0]; err = _tuple[1];
  20588. p.free();
  20589. return [n, err];
  20590. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Fprintf }; } $f.$ptr = $ptr; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._tuple = _tuple; $f.a = a; $f.err = err; $f.format = format; $f.n = n; $f.p = p; $f.w = w; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
  20591. };
  20592. $pkg.Fprintf = Fprintf;
  20593. Sprintf = function(format, a) {
  20594. var $ptr, _r$2, a, format, p, s, $s, $r;
  20595. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r$2 = $f._r$2; a = $f.a; format = $f.format; p = $f.p; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  20596. _r$2 = newPrinter(); /* */ $s = 1; case 1: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  20597. p = _r$2;
  20598. $r = p.doPrintf(format, a); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  20599. s = $bytesToString(p.buf);
  20600. p.free();
  20601. return s;
  20602. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Sprintf }; } $f.$ptr = $ptr; $f._r$2 = _r$2; $f.a = a; $f.format = format; $f.p = p; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
  20603. };
  20604. $pkg.Sprintf = Sprintf;
  20605. Errorf = function(format, a) {
  20606. var $ptr, _r$2, _r$3, a, format, $s, $r;
  20607. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r$2 = $f._r$2; _r$3 = $f._r$3; a = $f.a; format = $f.format; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  20608. _r$2 = Sprintf(format, a); /* */ $s = 1; case 1: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  20609. _r$3 = errors.New(_r$2); /* */ $s = 2; case 2: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  20610. return _r$3;
  20611. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Errorf }; } $f.$ptr = $ptr; $f._r$2 = _r$2; $f._r$3 = _r$3; $f.a = a; $f.format = format; $f.$s = $s; $f.$r = $r; return $f;
  20612. };
  20613. $pkg.Errorf = Errorf;
  20614. Fprint = function(w, a) {
  20615. var $ptr, _r$2, _r$3, _tuple, a, err, n, p, w, x, $s, $r;
  20616. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r$2 = $f._r$2; _r$3 = $f._r$3; _tuple = $f._tuple; a = $f.a; err = $f.err; n = $f.n; p = $f.p; w = $f.w; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  20617. n = 0;
  20618. err = $ifaceNil;
  20619. _r$2 = newPrinter(); /* */ $s = 1; case 1: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  20620. p = _r$2;
  20621. $r = p.doPrint(a, false, false); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  20622. _r$3 = w.Write((x = p.buf, $subslice(new sliceType(x.$array), x.$offset, x.$offset + x.$length))); /* */ $s = 3; case 3: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  20623. _tuple = _r$3; n = _tuple[0]; err = _tuple[1];
  20624. p.free();
  20625. return [n, err];
  20626. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Fprint }; } $f.$ptr = $ptr; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._tuple = _tuple; $f.a = a; $f.err = err; $f.n = n; $f.p = p; $f.w = w; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
  20627. };
  20628. $pkg.Fprint = Fprint;
  20629. Sprint = function(a) {
  20630. var $ptr, _r$2, a, p, s, $s, $r;
  20631. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r$2 = $f._r$2; a = $f.a; p = $f.p; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  20632. _r$2 = newPrinter(); /* */ $s = 1; case 1: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  20633. p = _r$2;
  20634. $r = p.doPrint(a, false, false); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  20635. s = $bytesToString(p.buf);
  20636. p.free();
  20637. return s;
  20638. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Sprint }; } $f.$ptr = $ptr; $f._r$2 = _r$2; $f.a = a; $f.p = p; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
  20639. };
  20640. $pkg.Sprint = Sprint;
  20641. Fprintln = function(w, a) {
  20642. var $ptr, _r$2, _r$3, _tuple, a, err, n, p, w, x, $s, $r;
  20643. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r$2 = $f._r$2; _r$3 = $f._r$3; _tuple = $f._tuple; a = $f.a; err = $f.err; n = $f.n; p = $f.p; w = $f.w; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  20644. n = 0;
  20645. err = $ifaceNil;
  20646. _r$2 = newPrinter(); /* */ $s = 1; case 1: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  20647. p = _r$2;
  20648. $r = p.doPrint(a, true, true); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  20649. _r$3 = w.Write((x = p.buf, $subslice(new sliceType(x.$array), x.$offset, x.$offset + x.$length))); /* */ $s = 3; case 3: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  20650. _tuple = _r$3; n = _tuple[0]; err = _tuple[1];
  20651. p.free();
  20652. return [n, err];
  20653. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Fprintln }; } $f.$ptr = $ptr; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._tuple = _tuple; $f.a = a; $f.err = err; $f.n = n; $f.p = p; $f.w = w; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
  20654. };
  20655. $pkg.Fprintln = Fprintln;
  20656. Sprintln = function(a) {
  20657. var $ptr, _r$2, a, p, s, $s, $r;
  20658. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r$2 = $f._r$2; a = $f.a; p = $f.p; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  20659. _r$2 = newPrinter(); /* */ $s = 1; case 1: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  20660. p = _r$2;
  20661. $r = p.doPrint(a, true, true); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  20662. s = $bytesToString(p.buf);
  20663. p.free();
  20664. return s;
  20665. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Sprintln }; } $f.$ptr = $ptr; $f._r$2 = _r$2; $f.a = a; $f.p = p; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
  20666. };
  20667. $pkg.Sprintln = Sprintln;
  20668. getField = function(v, i) {
  20669. var $ptr, _r$2, _r$3, i, v, val, $s, $r;
  20670. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r$2 = $f._r$2; _r$3 = $f._r$3; i = $f.i; v = $f.v; val = $f.val; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  20671. v = v;
  20672. _r$2 = v.Field(i); /* */ $s = 1; case 1: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  20673. val = _r$2;
  20674. /* */ if ((val.Kind() === 20) && !val.IsNil()) { $s = 2; continue; }
  20675. /* */ $s = 3; continue;
  20676. /* if ((val.Kind() === 20) && !val.IsNil()) { */ case 2:
  20677. _r$3 = val.Elem(); /* */ $s = 4; case 4: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  20678. val = _r$3;
  20679. /* } */ case 3:
  20680. return val;
  20681. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: getField }; } $f.$ptr = $ptr; $f._r$2 = _r$2; $f._r$3 = _r$3; $f.i = i; $f.v = v; $f.val = val; $f.$s = $s; $f.$r = $r; return $f;
  20682. };
  20683. parsenum = function(s, start, end) {
  20684. var $ptr, _tmp, _tmp$1, _tmp$2, end, isnum, newi, num, s, start;
  20685. num = 0;
  20686. isnum = false;
  20687. newi = 0;
  20688. if (start >= end) {
  20689. _tmp = 0; _tmp$1 = false; _tmp$2 = end; num = _tmp; isnum = _tmp$1; newi = _tmp$2;
  20690. return [num, isnum, newi];
  20691. }
  20692. newi = start;
  20693. while (true) {
  20694. if (!(newi < end && 48 <= s.charCodeAt(newi) && s.charCodeAt(newi) <= 57)) { break; }
  20695. num = (num * 10 >> 0) + ((s.charCodeAt(newi) - 48 << 24 >>> 24) >> 0) >> 0;
  20696. isnum = true;
  20697. newi = newi + (1) >> 0;
  20698. }
  20699. return [num, isnum, newi];
  20700. };
  20701. pp.ptr.prototype.unknownType = function(v) {
  20702. var $ptr, _r$2, _r$3, p, v, $s, $r;
  20703. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r$2 = $f._r$2; _r$3 = $f._r$3; p = $f.p; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  20704. p = this;
  20705. v = v;
  20706. if (!v.IsValid()) {
  20707. (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).Write(nilAngleBytes);
  20708. return;
  20709. }
  20710. (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(63);
  20711. _r$2 = v.Type().String(); /* */ $s = 1; case 1: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  20712. _r$3 = (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString(_r$2); /* */ $s = 2; case 2: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  20713. _r$3;
  20714. (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(63);
  20715. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: pp.ptr.prototype.unknownType }; } $f.$ptr = $ptr; $f._r$2 = _r$2; $f._r$3 = _r$3; $f.p = p; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
  20716. };
  20717. pp.prototype.unknownType = function(v) { return this.$val.unknownType(v); };
  20718. pp.ptr.prototype.badVerb = function(verb) {
  20719. var $ptr, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, p, verb, $s, $r;
  20720. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; p = $f.p; verb = $f.verb; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  20721. p = this;
  20722. p.erroring = true;
  20723. p.add(37);
  20724. p.add(33);
  20725. p.add(verb);
  20726. p.add(40);
  20727. /* */ if (!($interfaceIsEqual(p.arg, $ifaceNil))) { $s = 1; continue; }
  20728. /* */ if (p.value.IsValid()) { $s = 2; continue; }
  20729. /* */ $s = 3; continue;
  20730. /* if (!($interfaceIsEqual(p.arg, $ifaceNil))) { */ case 1:
  20731. _r$2 = reflect.TypeOf(p.arg).String(); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  20732. _r$3 = (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString(_r$2); /* */ $s = 6; case 6: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  20733. _r$3;
  20734. p.add(61);
  20735. _r$4 = p.printArg(p.arg, 118, 0); /* */ $s = 7; case 7: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
  20736. _r$4;
  20737. $s = 4; continue;
  20738. /* } else if (p.value.IsValid()) { */ case 2:
  20739. _r$5 = p.value.Type().String(); /* */ $s = 8; case 8: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
  20740. _r$6 = (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString(_r$5); /* */ $s = 9; case 9: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
  20741. _r$6;
  20742. p.add(61);
  20743. _r$7 = p.printValue(p.value, 118, 0); /* */ $s = 10; case 10: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
  20744. _r$7;
  20745. $s = 4; continue;
  20746. /* } else { */ case 3:
  20747. (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).Write(nilAngleBytes);
  20748. /* } */ case 4:
  20749. p.add(41);
  20750. p.erroring = false;
  20751. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: pp.ptr.prototype.badVerb }; } $f.$ptr = $ptr; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f.p = p; $f.verb = verb; $f.$s = $s; $f.$r = $r; return $f;
  20752. };
  20753. pp.prototype.badVerb = function(verb) { return this.$val.badVerb(verb); };
  20754. pp.ptr.prototype.fmtBool = function(v, verb) {
  20755. var $ptr, _ref, p, v, verb, $s, $r;
  20756. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _ref = $f._ref; p = $f.p; v = $f.v; verb = $f.verb; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  20757. p = this;
  20758. _ref = verb;
  20759. /* */ if (_ref === 116 || _ref === 118) { $s = 1; continue; }
  20760. /* */ $s = 2; continue;
  20761. /* if (_ref === 116 || _ref === 118) { */ case 1:
  20762. p.fmt.fmt_boolean(v);
  20763. $s = 3; continue;
  20764. /* } else { */ case 2:
  20765. $r = p.badVerb(verb); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  20766. /* } */ case 3:
  20767. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: pp.ptr.prototype.fmtBool }; } $f.$ptr = $ptr; $f._ref = _ref; $f.p = p; $f.v = v; $f.verb = verb; $f.$s = $s; $f.$r = $r; return $f;
  20768. };
  20769. pp.prototype.fmtBool = function(v, verb) { return this.$val.fmtBool(v, verb); };
  20770. pp.ptr.prototype.fmtC = function(c) {
  20771. var $ptr, c, p, r, w, x;
  20772. p = this;
  20773. r = ((c.$low + ((c.$high >> 31) * 4294967296)) >> 0);
  20774. if (!((x = new $Int64(0, r), (x.$high === c.$high && x.$low === c.$low)))) {
  20775. r = 65533;
  20776. }
  20777. w = utf8.EncodeRune($subslice(new sliceType(p.runeBuf), 0, 4), r);
  20778. p.fmt.pad($subslice(new sliceType(p.runeBuf), 0, w));
  20779. };
  20780. pp.prototype.fmtC = function(c) { return this.$val.fmtC(c); };
  20781. pp.ptr.prototype.fmtInt64 = function(v, verb) {
  20782. var $ptr, _ref, p, v, verb, $s, $r;
  20783. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _ref = $f._ref; p = $f.p; v = $f.v; verb = $f.verb; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  20784. p = this;
  20785. _ref = verb;
  20786. /* */ if (_ref === 98) { $s = 1; continue; }
  20787. /* */ if (_ref === 99) { $s = 2; continue; }
  20788. /* */ if (_ref === 100 || _ref === 118) { $s = 3; continue; }
  20789. /* */ if (_ref === 111) { $s = 4; continue; }
  20790. /* */ if (_ref === 113) { $s = 5; continue; }
  20791. /* */ if (_ref === 120) { $s = 6; continue; }
  20792. /* */ if (_ref === 85) { $s = 7; continue; }
  20793. /* */ if (_ref === 88) { $s = 8; continue; }
  20794. /* */ $s = 9; continue;
  20795. /* if (_ref === 98) { */ case 1:
  20796. p.fmt.integer(v, new $Uint64(0, 2), true, "0123456789abcdef");
  20797. $s = 10; continue;
  20798. /* } else if (_ref === 99) { */ case 2:
  20799. p.fmtC(v);
  20800. $s = 10; continue;
  20801. /* } else if (_ref === 100 || _ref === 118) { */ case 3:
  20802. p.fmt.integer(v, new $Uint64(0, 10), true, "0123456789abcdef");
  20803. $s = 10; continue;
  20804. /* } else if (_ref === 111) { */ case 4:
  20805. p.fmt.integer(v, new $Uint64(0, 8), true, "0123456789abcdef");
  20806. $s = 10; continue;
  20807. /* } else if (_ref === 113) { */ case 5:
  20808. /* */ if ((0 < v.$high || (0 === v.$high && 0 <= v.$low)) && (v.$high < 0 || (v.$high === 0 && v.$low <= 1114111))) { $s = 11; continue; }
  20809. /* */ $s = 12; continue;
  20810. /* if ((0 < v.$high || (0 === v.$high && 0 <= v.$low)) && (v.$high < 0 || (v.$high === 0 && v.$low <= 1114111))) { */ case 11:
  20811. p.fmt.fmt_qc(v);
  20812. $s = 13; continue;
  20813. /* } else { */ case 12:
  20814. $r = p.badVerb(verb); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  20815. /* } */ case 13:
  20816. $s = 10; continue;
  20817. /* } else if (_ref === 120) { */ case 6:
  20818. p.fmt.integer(v, new $Uint64(0, 16), true, "0123456789abcdef");
  20819. $s = 10; continue;
  20820. /* } else if (_ref === 85) { */ case 7:
  20821. p.fmtUnicode(v);
  20822. $s = 10; continue;
  20823. /* } else if (_ref === 88) { */ case 8:
  20824. p.fmt.integer(v, new $Uint64(0, 16), true, "0123456789ABCDEF");
  20825. $s = 10; continue;
  20826. /* } else { */ case 9:
  20827. $r = p.badVerb(verb); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  20828. /* } */ case 10:
  20829. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: pp.ptr.prototype.fmtInt64 }; } $f.$ptr = $ptr; $f._ref = _ref; $f.p = p; $f.v = v; $f.verb = verb; $f.$s = $s; $f.$r = $r; return $f;
  20830. };
  20831. pp.prototype.fmtInt64 = function(v, verb) { return this.$val.fmtInt64(v, verb); };
  20832. pp.ptr.prototype.fmt0x64 = function(v, leading0x) {
  20833. var $ptr, leading0x, p, sharp, v;
  20834. p = this;
  20835. sharp = p.fmt.fmtFlags.sharp;
  20836. p.fmt.fmtFlags.sharp = leading0x;
  20837. p.fmt.integer(new $Int64(v.$high, v.$low), new $Uint64(0, 16), false, "0123456789abcdef");
  20838. p.fmt.fmtFlags.sharp = sharp;
  20839. };
  20840. pp.prototype.fmt0x64 = function(v, leading0x) { return this.$val.fmt0x64(v, leading0x); };
  20841. pp.ptr.prototype.fmtUnicode = function(v) {
  20842. var $ptr, p, prec, precPresent, sharp, v;
  20843. p = this;
  20844. precPresent = p.fmt.fmtFlags.precPresent;
  20845. sharp = p.fmt.fmtFlags.sharp;
  20846. p.fmt.fmtFlags.sharp = false;
  20847. prec = p.fmt.prec;
  20848. if (!precPresent) {
  20849. p.fmt.prec = 4;
  20850. p.fmt.fmtFlags.precPresent = true;
  20851. }
  20852. p.fmt.fmtFlags.unicode = true;
  20853. p.fmt.fmtFlags.uniQuote = sharp;
  20854. p.fmt.integer(v, new $Uint64(0, 16), false, "0123456789ABCDEF");
  20855. p.fmt.fmtFlags.unicode = false;
  20856. p.fmt.fmtFlags.uniQuote = false;
  20857. p.fmt.prec = prec;
  20858. p.fmt.fmtFlags.precPresent = precPresent;
  20859. p.fmt.fmtFlags.sharp = sharp;
  20860. };
  20861. pp.prototype.fmtUnicode = function(v) { return this.$val.fmtUnicode(v); };
  20862. pp.ptr.prototype.fmtUint64 = function(v, verb) {
  20863. var $ptr, _ref, p, v, verb, $s, $r;
  20864. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _ref = $f._ref; p = $f.p; v = $f.v; verb = $f.verb; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  20865. p = this;
  20866. _ref = verb;
  20867. /* */ if (_ref === 98) { $s = 1; continue; }
  20868. /* */ if (_ref === 99) { $s = 2; continue; }
  20869. /* */ if (_ref === 100) { $s = 3; continue; }
  20870. /* */ if (_ref === 118) { $s = 4; continue; }
  20871. /* */ if (_ref === 111) { $s = 5; continue; }
  20872. /* */ if (_ref === 113) { $s = 6; continue; }
  20873. /* */ if (_ref === 120) { $s = 7; continue; }
  20874. /* */ if (_ref === 88) { $s = 8; continue; }
  20875. /* */ if (_ref === 85) { $s = 9; continue; }
  20876. /* */ $s = 10; continue;
  20877. /* if (_ref === 98) { */ case 1:
  20878. p.fmt.integer(new $Int64(v.$high, v.$low), new $Uint64(0, 2), false, "0123456789abcdef");
  20879. $s = 11; continue;
  20880. /* } else if (_ref === 99) { */ case 2:
  20881. p.fmtC(new $Int64(v.$high, v.$low));
  20882. $s = 11; continue;
  20883. /* } else if (_ref === 100) { */ case 3:
  20884. p.fmt.integer(new $Int64(v.$high, v.$low), new $Uint64(0, 10), false, "0123456789abcdef");
  20885. $s = 11; continue;
  20886. /* } else if (_ref === 118) { */ case 4:
  20887. if (p.fmt.fmtFlags.sharpV) {
  20888. p.fmt0x64(v, true);
  20889. } else {
  20890. p.fmt.integer(new $Int64(v.$high, v.$low), new $Uint64(0, 10), false, "0123456789abcdef");
  20891. }
  20892. $s = 11; continue;
  20893. /* } else if (_ref === 111) { */ case 5:
  20894. p.fmt.integer(new $Int64(v.$high, v.$low), new $Uint64(0, 8), false, "0123456789abcdef");
  20895. $s = 11; continue;
  20896. /* } else if (_ref === 113) { */ case 6:
  20897. /* */ if ((0 < v.$high || (0 === v.$high && 0 <= v.$low)) && (v.$high < 0 || (v.$high === 0 && v.$low <= 1114111))) { $s = 12; continue; }
  20898. /* */ $s = 13; continue;
  20899. /* if ((0 < v.$high || (0 === v.$high && 0 <= v.$low)) && (v.$high < 0 || (v.$high === 0 && v.$low <= 1114111))) { */ case 12:
  20900. p.fmt.fmt_qc(new $Int64(v.$high, v.$low));
  20901. $s = 14; continue;
  20902. /* } else { */ case 13:
  20903. $r = p.badVerb(verb); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  20904. /* } */ case 14:
  20905. $s = 11; continue;
  20906. /* } else if (_ref === 120) { */ case 7:
  20907. p.fmt.integer(new $Int64(v.$high, v.$low), new $Uint64(0, 16), false, "0123456789abcdef");
  20908. $s = 11; continue;
  20909. /* } else if (_ref === 88) { */ case 8:
  20910. p.fmt.integer(new $Int64(v.$high, v.$low), new $Uint64(0, 16), false, "0123456789ABCDEF");
  20911. $s = 11; continue;
  20912. /* } else if (_ref === 85) { */ case 9:
  20913. p.fmtUnicode(new $Int64(v.$high, v.$low));
  20914. $s = 11; continue;
  20915. /* } else { */ case 10:
  20916. $r = p.badVerb(verb); /* */ $s = 16; case 16: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  20917. /* } */ case 11:
  20918. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: pp.ptr.prototype.fmtUint64 }; } $f.$ptr = $ptr; $f._ref = _ref; $f.p = p; $f.v = v; $f.verb = verb; $f.$s = $s; $f.$r = $r; return $f;
  20919. };
  20920. pp.prototype.fmtUint64 = function(v, verb) { return this.$val.fmtUint64(v, verb); };
  20921. pp.ptr.prototype.fmtFloat32 = function(v, verb) {
  20922. var $ptr, _ref, p, v, verb, $s, $r;
  20923. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _ref = $f._ref; p = $f.p; v = $f.v; verb = $f.verb; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  20924. p = this;
  20925. _ref = verb;
  20926. /* */ if (_ref === 98) { $s = 1; continue; }
  20927. /* */ if (_ref === 101) { $s = 2; continue; }
  20928. /* */ if (_ref === 69) { $s = 3; continue; }
  20929. /* */ if (_ref === 102 || _ref === 70) { $s = 4; continue; }
  20930. /* */ if (_ref === 103 || _ref === 118) { $s = 5; continue; }
  20931. /* */ if (_ref === 71) { $s = 6; continue; }
  20932. /* */ $s = 7; continue;
  20933. /* if (_ref === 98) { */ case 1:
  20934. p.fmt.fmt_fb32(v);
  20935. $s = 8; continue;
  20936. /* } else if (_ref === 101) { */ case 2:
  20937. p.fmt.fmt_e32(v);
  20938. $s = 8; continue;
  20939. /* } else if (_ref === 69) { */ case 3:
  20940. p.fmt.fmt_E32(v);
  20941. $s = 8; continue;
  20942. /* } else if (_ref === 102 || _ref === 70) { */ case 4:
  20943. p.fmt.fmt_f32(v);
  20944. $s = 8; continue;
  20945. /* } else if (_ref === 103 || _ref === 118) { */ case 5:
  20946. p.fmt.fmt_g32(v);
  20947. $s = 8; continue;
  20948. /* } else if (_ref === 71) { */ case 6:
  20949. p.fmt.fmt_G32(v);
  20950. $s = 8; continue;
  20951. /* } else { */ case 7:
  20952. $r = p.badVerb(verb); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  20953. /* } */ case 8:
  20954. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: pp.ptr.prototype.fmtFloat32 }; } $f.$ptr = $ptr; $f._ref = _ref; $f.p = p; $f.v = v; $f.verb = verb; $f.$s = $s; $f.$r = $r; return $f;
  20955. };
  20956. pp.prototype.fmtFloat32 = function(v, verb) { return this.$val.fmtFloat32(v, verb); };
  20957. pp.ptr.prototype.fmtFloat64 = function(v, verb) {
  20958. var $ptr, _ref, p, v, verb, $s, $r;
  20959. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _ref = $f._ref; p = $f.p; v = $f.v; verb = $f.verb; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  20960. p = this;
  20961. _ref = verb;
  20962. /* */ if (_ref === 98) { $s = 1; continue; }
  20963. /* */ if (_ref === 101) { $s = 2; continue; }
  20964. /* */ if (_ref === 69) { $s = 3; continue; }
  20965. /* */ if (_ref === 102 || _ref === 70) { $s = 4; continue; }
  20966. /* */ if (_ref === 103 || _ref === 118) { $s = 5; continue; }
  20967. /* */ if (_ref === 71) { $s = 6; continue; }
  20968. /* */ $s = 7; continue;
  20969. /* if (_ref === 98) { */ case 1:
  20970. p.fmt.fmt_fb64(v);
  20971. $s = 8; continue;
  20972. /* } else if (_ref === 101) { */ case 2:
  20973. p.fmt.fmt_e64(v);
  20974. $s = 8; continue;
  20975. /* } else if (_ref === 69) { */ case 3:
  20976. p.fmt.fmt_E64(v);
  20977. $s = 8; continue;
  20978. /* } else if (_ref === 102 || _ref === 70) { */ case 4:
  20979. p.fmt.fmt_f64(v);
  20980. $s = 8; continue;
  20981. /* } else if (_ref === 103 || _ref === 118) { */ case 5:
  20982. p.fmt.fmt_g64(v);
  20983. $s = 8; continue;
  20984. /* } else if (_ref === 71) { */ case 6:
  20985. p.fmt.fmt_G64(v);
  20986. $s = 8; continue;
  20987. /* } else { */ case 7:
  20988. $r = p.badVerb(verb); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  20989. /* } */ case 8:
  20990. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: pp.ptr.prototype.fmtFloat64 }; } $f.$ptr = $ptr; $f._ref = _ref; $f.p = p; $f.v = v; $f.verb = verb; $f.$s = $s; $f.$r = $r; return $f;
  20991. };
  20992. pp.prototype.fmtFloat64 = function(v, verb) { return this.$val.fmtFloat64(v, verb); };
  20993. pp.ptr.prototype.fmtComplex64 = function(v, verb) {
  20994. var $ptr, _ref, p, v, verb, $s, $r;
  20995. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _ref = $f._ref; p = $f.p; v = $f.v; verb = $f.verb; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  20996. p = this;
  20997. _ref = verb;
  20998. /* */ if (_ref === 98 || _ref === 101 || _ref === 69 || _ref === 102 || _ref === 70 || _ref === 103 || _ref === 71) { $s = 1; continue; }
  20999. /* */ if (_ref === 118) { $s = 2; continue; }
  21000. /* */ $s = 3; continue;
  21001. /* if (_ref === 98 || _ref === 101 || _ref === 69 || _ref === 102 || _ref === 70 || _ref === 103 || _ref === 71) { */ case 1:
  21002. p.fmt.fmt_c64(v, verb);
  21003. $s = 4; continue;
  21004. /* } else if (_ref === 118) { */ case 2:
  21005. p.fmt.fmt_c64(v, 103);
  21006. $s = 4; continue;
  21007. /* } else { */ case 3:
  21008. $r = p.badVerb(verb); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  21009. /* } */ case 4:
  21010. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: pp.ptr.prototype.fmtComplex64 }; } $f.$ptr = $ptr; $f._ref = _ref; $f.p = p; $f.v = v; $f.verb = verb; $f.$s = $s; $f.$r = $r; return $f;
  21011. };
  21012. pp.prototype.fmtComplex64 = function(v, verb) { return this.$val.fmtComplex64(v, verb); };
  21013. pp.ptr.prototype.fmtComplex128 = function(v, verb) {
  21014. var $ptr, _ref, p, v, verb, $s, $r;
  21015. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _ref = $f._ref; p = $f.p; v = $f.v; verb = $f.verb; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  21016. p = this;
  21017. _ref = verb;
  21018. /* */ if (_ref === 98 || _ref === 101 || _ref === 69 || _ref === 102 || _ref === 70 || _ref === 103 || _ref === 71) { $s = 1; continue; }
  21019. /* */ if (_ref === 118) { $s = 2; continue; }
  21020. /* */ $s = 3; continue;
  21021. /* if (_ref === 98 || _ref === 101 || _ref === 69 || _ref === 102 || _ref === 70 || _ref === 103 || _ref === 71) { */ case 1:
  21022. p.fmt.fmt_c128(v, verb);
  21023. $s = 4; continue;
  21024. /* } else if (_ref === 118) { */ case 2:
  21025. p.fmt.fmt_c128(v, 103);
  21026. $s = 4; continue;
  21027. /* } else { */ case 3:
  21028. $r = p.badVerb(verb); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  21029. /* } */ case 4:
  21030. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: pp.ptr.prototype.fmtComplex128 }; } $f.$ptr = $ptr; $f._ref = _ref; $f.p = p; $f.v = v; $f.verb = verb; $f.$s = $s; $f.$r = $r; return $f;
  21031. };
  21032. pp.prototype.fmtComplex128 = function(v, verb) { return this.$val.fmtComplex128(v, verb); };
  21033. pp.ptr.prototype.fmtString = function(v, verb) {
  21034. var $ptr, _ref, p, v, verb, $s, $r;
  21035. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _ref = $f._ref; p = $f.p; v = $f.v; verb = $f.verb; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  21036. p = this;
  21037. _ref = verb;
  21038. /* */ if (_ref === 118) { $s = 1; continue; }
  21039. /* */ if (_ref === 115) { $s = 2; continue; }
  21040. /* */ if (_ref === 120) { $s = 3; continue; }
  21041. /* */ if (_ref === 88) { $s = 4; continue; }
  21042. /* */ if (_ref === 113) { $s = 5; continue; }
  21043. /* */ $s = 6; continue;
  21044. /* if (_ref === 118) { */ case 1:
  21045. if (p.fmt.fmtFlags.sharpV) {
  21046. p.fmt.fmt_q(v);
  21047. } else {
  21048. p.fmt.fmt_s(v);
  21049. }
  21050. $s = 7; continue;
  21051. /* } else if (_ref === 115) { */ case 2:
  21052. p.fmt.fmt_s(v);
  21053. $s = 7; continue;
  21054. /* } else if (_ref === 120) { */ case 3:
  21055. p.fmt.fmt_sx(v, "0123456789abcdef");
  21056. $s = 7; continue;
  21057. /* } else if (_ref === 88) { */ case 4:
  21058. p.fmt.fmt_sx(v, "0123456789ABCDEF");
  21059. $s = 7; continue;
  21060. /* } else if (_ref === 113) { */ case 5:
  21061. p.fmt.fmt_q(v);
  21062. $s = 7; continue;
  21063. /* } else { */ case 6:
  21064. $r = p.badVerb(verb); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  21065. /* } */ case 7:
  21066. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: pp.ptr.prototype.fmtString }; } $f.$ptr = $ptr; $f._ref = _ref; $f.p = p; $f.v = v; $f.verb = verb; $f.$s = $s; $f.$r = $r; return $f;
  21067. };
  21068. pp.prototype.fmtString = function(v, verb) { return this.$val.fmtString(v, verb); };
  21069. pp.ptr.prototype.fmtBytes = function(v, verb, typ, depth) {
  21070. var $ptr, _i, _r$2, _r$3, _r$4, _r$5, _r$6, _ref, _ref$1, c, depth, i, p, typ, v, verb, $s, $r;
  21071. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _i = $f._i; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _ref = $f._ref; _ref$1 = $f._ref$1; c = $f.c; depth = $f.depth; i = $f.i; p = $f.p; typ = $f.typ; v = $f.v; verb = $f.verb; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  21072. p = this;
  21073. /* */ if ((verb === 118) || (verb === 100)) { $s = 1; continue; }
  21074. /* */ $s = 2; continue;
  21075. /* if ((verb === 118) || (verb === 100)) { */ case 1:
  21076. /* */ if (p.fmt.fmtFlags.sharpV) { $s = 3; continue; }
  21077. /* */ $s = 4; continue;
  21078. /* if (p.fmt.fmtFlags.sharpV) { */ case 3:
  21079. /* */ if (v === sliceType.nil) { $s = 6; continue; }
  21080. /* */ $s = 7; continue;
  21081. /* if (v === sliceType.nil) { */ case 6:
  21082. /* */ if ($interfaceIsEqual(typ, $ifaceNil)) { $s = 8; continue; }
  21083. /* */ $s = 9; continue;
  21084. /* if ($interfaceIsEqual(typ, $ifaceNil)) { */ case 8:
  21085. (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString("[]byte(nil)");
  21086. $s = 10; continue;
  21087. /* } else { */ case 9:
  21088. _r$2 = typ.String(); /* */ $s = 11; case 11: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  21089. _r$3 = (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString(_r$2); /* */ $s = 12; case 12: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  21090. _r$3;
  21091. (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).Write(nilParenBytes);
  21092. /* } */ case 10:
  21093. return;
  21094. /* } */ case 7:
  21095. /* */ if ($interfaceIsEqual(typ, $ifaceNil)) { $s = 13; continue; }
  21096. /* */ $s = 14; continue;
  21097. /* if ($interfaceIsEqual(typ, $ifaceNil)) { */ case 13:
  21098. (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).Write(bytesBytes);
  21099. $s = 15; continue;
  21100. /* } else { */ case 14:
  21101. _r$4 = typ.String(); /* */ $s = 16; case 16: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
  21102. _r$5 = (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString(_r$4); /* */ $s = 17; case 17: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
  21103. _r$5;
  21104. (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(123);
  21105. /* } */ case 15:
  21106. $s = 5; continue;
  21107. /* } else { */ case 4:
  21108. (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(91);
  21109. /* } */ case 5:
  21110. _ref = v;
  21111. _i = 0;
  21112. /* while (true) { */ case 18:
  21113. /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 19; continue; }
  21114. i = _i;
  21115. c = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]);
  21116. if (i > 0) {
  21117. if (p.fmt.fmtFlags.sharpV) {
  21118. (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).Write(commaSpaceBytes);
  21119. } else {
  21120. (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(32);
  21121. }
  21122. }
  21123. _r$6 = p.printArg(new $Uint8(c), 118, depth + 1 >> 0); /* */ $s = 20; case 20: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
  21124. _r$6;
  21125. _i++;
  21126. /* } */ $s = 18; continue; case 19:
  21127. if (p.fmt.fmtFlags.sharpV) {
  21128. (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(125);
  21129. } else {
  21130. (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(93);
  21131. }
  21132. return;
  21133. /* } */ case 2:
  21134. _ref$1 = verb;
  21135. /* */ if (_ref$1 === 115) { $s = 21; continue; }
  21136. /* */ if (_ref$1 === 120) { $s = 22; continue; }
  21137. /* */ if (_ref$1 === 88) { $s = 23; continue; }
  21138. /* */ if (_ref$1 === 113) { $s = 24; continue; }
  21139. /* */ $s = 25; continue;
  21140. /* if (_ref$1 === 115) { */ case 21:
  21141. p.fmt.fmt_s($bytesToString(v));
  21142. $s = 26; continue;
  21143. /* } else if (_ref$1 === 120) { */ case 22:
  21144. p.fmt.fmt_bx(v, "0123456789abcdef");
  21145. $s = 26; continue;
  21146. /* } else if (_ref$1 === 88) { */ case 23:
  21147. p.fmt.fmt_bx(v, "0123456789ABCDEF");
  21148. $s = 26; continue;
  21149. /* } else if (_ref$1 === 113) { */ case 24:
  21150. p.fmt.fmt_q($bytesToString(v));
  21151. $s = 26; continue;
  21152. /* } else { */ case 25:
  21153. $r = p.badVerb(verb); /* */ $s = 27; case 27: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  21154. /* } */ case 26:
  21155. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: pp.ptr.prototype.fmtBytes }; } $f.$ptr = $ptr; $f._i = _i; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._ref = _ref; $f._ref$1 = _ref$1; $f.c = c; $f.depth = depth; $f.i = i; $f.p = p; $f.typ = typ; $f.v = v; $f.verb = verb; $f.$s = $s; $f.$r = $r; return $f;
  21156. };
  21157. pp.prototype.fmtBytes = function(v, verb, typ, depth) { return this.$val.fmtBytes(v, verb, typ, depth); };
  21158. pp.ptr.prototype.fmtPointer = function(value, verb) {
  21159. var $ptr, _r$2, _r$3, _ref, _ref$1, p, u, use0x64, value, verb, $s, $r;
  21160. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r$2 = $f._r$2; _r$3 = $f._r$3; _ref = $f._ref; _ref$1 = $f._ref$1; p = $f.p; u = $f.u; use0x64 = $f.use0x64; value = $f.value; verb = $f.verb; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  21161. p = this;
  21162. value = value;
  21163. use0x64 = true;
  21164. _ref = verb;
  21165. /* */ if (_ref === 112 || _ref === 118) { $s = 1; continue; }
  21166. /* */ if (_ref === 98 || _ref === 100 || _ref === 111 || _ref === 120 || _ref === 88) { $s = 2; continue; }
  21167. /* */ $s = 3; continue;
  21168. /* if (_ref === 112 || _ref === 118) { */ case 1:
  21169. $s = 4; continue;
  21170. /* } else if (_ref === 98 || _ref === 100 || _ref === 111 || _ref === 120 || _ref === 88) { */ case 2:
  21171. use0x64 = false;
  21172. $s = 4; continue;
  21173. /* } else { */ case 3:
  21174. $r = p.badVerb(verb); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  21175. return;
  21176. /* } */ case 4:
  21177. u = 0;
  21178. _ref$1 = value.Kind();
  21179. /* */ if (_ref$1 === 18 || _ref$1 === 19 || _ref$1 === 21 || _ref$1 === 22 || _ref$1 === 23 || _ref$1 === 26) { $s = 6; continue; }
  21180. /* */ $s = 7; continue;
  21181. /* if (_ref$1 === 18 || _ref$1 === 19 || _ref$1 === 21 || _ref$1 === 22 || _ref$1 === 23 || _ref$1 === 26) { */ case 6:
  21182. u = value.Pointer();
  21183. $s = 8; continue;
  21184. /* } else { */ case 7:
  21185. $r = p.badVerb(verb); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  21186. return;
  21187. /* } */ case 8:
  21188. /* */ if (p.fmt.fmtFlags.sharpV) { $s = 10; continue; }
  21189. /* */ if ((verb === 118) && (u === 0)) { $s = 11; continue; }
  21190. /* */ $s = 12; continue;
  21191. /* if (p.fmt.fmtFlags.sharpV) { */ case 10:
  21192. p.add(40);
  21193. _r$2 = value.Type().String(); /* */ $s = 14; case 14: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  21194. _r$3 = (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString(_r$2); /* */ $s = 15; case 15: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  21195. _r$3;
  21196. p.add(41);
  21197. p.add(40);
  21198. if (u === 0) {
  21199. (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).Write(nilBytes);
  21200. } else {
  21201. p.fmt0x64(new $Uint64(0, u.constructor === Number ? u : 1), true);
  21202. }
  21203. p.add(41);
  21204. $s = 13; continue;
  21205. /* } else if ((verb === 118) && (u === 0)) { */ case 11:
  21206. (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).Write(nilAngleBytes);
  21207. $s = 13; continue;
  21208. /* } else { */ case 12:
  21209. /* */ if (use0x64) { $s = 16; continue; }
  21210. /* */ $s = 17; continue;
  21211. /* if (use0x64) { */ case 16:
  21212. p.fmt0x64(new $Uint64(0, u.constructor === Number ? u : 1), !p.fmt.fmtFlags.sharp);
  21213. $s = 18; continue;
  21214. /* } else { */ case 17:
  21215. $r = p.fmtUint64(new $Uint64(0, u.constructor === Number ? u : 1), verb); /* */ $s = 19; case 19: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  21216. /* } */ case 18:
  21217. /* } */ case 13:
  21218. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: pp.ptr.prototype.fmtPointer }; } $f.$ptr = $ptr; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._ref = _ref; $f._ref$1 = _ref$1; $f.p = p; $f.u = u; $f.use0x64 = use0x64; $f.value = value; $f.verb = verb; $f.$s = $s; $f.$r = $r; return $f;
  21219. };
  21220. pp.prototype.fmtPointer = function(value, verb) { return this.$val.fmtPointer(value, verb); };
  21221. pp.ptr.prototype.catchPanic = function(arg, verb) {
  21222. var $ptr, _r$2, _r$3, arg, err, p, v, verb, $s, $r;
  21223. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r$2 = $f._r$2; _r$3 = $f._r$3; arg = $f.arg; err = $f.err; p = $f.p; v = $f.v; verb = $f.verb; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  21224. p = this;
  21225. err = $recover();
  21226. /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 1; continue; }
  21227. /* */ $s = 2; continue;
  21228. /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 1:
  21229. _r$2 = reflect.ValueOf(arg); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  21230. v = _r$2;
  21231. /* */ if ((v.Kind() === 22) && v.IsNil()) { $s = 4; continue; }
  21232. /* */ $s = 5; continue;
  21233. /* if ((v.Kind() === 22) && v.IsNil()) { */ case 4:
  21234. (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).Write(nilAngleBytes);
  21235. return;
  21236. /* } */ case 5:
  21237. if (p.panicking) {
  21238. $panic(err);
  21239. }
  21240. p.fmt.clearflags();
  21241. (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).Write(percentBangBytes);
  21242. p.add(verb);
  21243. (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).Write(panicBytes);
  21244. p.panicking = true;
  21245. _r$3 = p.printArg(err, 118, 0); /* */ $s = 6; case 6: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  21246. _r$3;
  21247. p.panicking = false;
  21248. (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(41);
  21249. /* } */ case 2:
  21250. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: pp.ptr.prototype.catchPanic }; } $f.$ptr = $ptr; $f._r$2 = _r$2; $f._r$3 = _r$3; $f.arg = arg; $f.err = err; $f.p = p; $f.v = v; $f.verb = verb; $f.$s = $s; $f.$r = $r; return $f;
  21251. };
  21252. pp.prototype.catchPanic = function(arg, verb) { return this.$val.catchPanic(arg, verb); };
  21253. pp.ptr.prototype.clearSpecialFlags = function() {
  21254. var $ptr, p, plusV, sharpV;
  21255. plusV = false;
  21256. sharpV = false;
  21257. p = this;
  21258. plusV = p.fmt.fmtFlags.plusV;
  21259. if (plusV) {
  21260. p.fmt.fmtFlags.plus = true;
  21261. p.fmt.fmtFlags.plusV = false;
  21262. }
  21263. sharpV = p.fmt.fmtFlags.sharpV;
  21264. if (sharpV) {
  21265. p.fmt.fmtFlags.sharp = true;
  21266. p.fmt.fmtFlags.sharpV = false;
  21267. }
  21268. return [plusV, sharpV];
  21269. };
  21270. pp.prototype.clearSpecialFlags = function() { return this.$val.clearSpecialFlags(); };
  21271. pp.ptr.prototype.restoreSpecialFlags = function(plusV, sharpV) {
  21272. var $ptr, p, plusV, sharpV;
  21273. p = this;
  21274. if (plusV) {
  21275. p.fmt.fmtFlags.plus = false;
  21276. p.fmt.fmtFlags.plusV = true;
  21277. }
  21278. if (sharpV) {
  21279. p.fmt.fmtFlags.sharp = false;
  21280. p.fmt.fmtFlags.sharpV = true;
  21281. }
  21282. };
  21283. pp.prototype.restoreSpecialFlags = function(plusV, sharpV) { return this.$val.restoreSpecialFlags(plusV, sharpV); };
  21284. pp.ptr.prototype.handleMethods = function(verb, depth) {
  21285. var $ptr, _r$2, _r$3, _r$4, _r$5, _r$6, _ref, _ref$1, _tuple, _tuple$1, _tuple$2, depth, formatter, handled, ok, ok$1, p, stringer, v, v$1, verb, $s, $deferred, $r;
  21286. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _ref = $f._ref; _ref$1 = $f._ref$1; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; depth = $f.depth; formatter = $f.formatter; handled = $f.handled; ok = $f.ok; ok$1 = $f.ok$1; p = $f.p; stringer = $f.stringer; v = $f.v; v$1 = $f.v$1; verb = $f.verb; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
  21287. handled = false;
  21288. p = this;
  21289. if (p.erroring) {
  21290. return handled;
  21291. }
  21292. _tuple = $assertType(p.arg, Formatter, true); formatter = _tuple[0]; ok = _tuple[1];
  21293. /* */ if (ok) { $s = 1; continue; }
  21294. /* */ $s = 2; continue;
  21295. /* if (ok) { */ case 1:
  21296. handled = true;
  21297. _tuple$1 = p.clearSpecialFlags();
  21298. $deferred.push([$methodVal(p, "restoreSpecialFlags"), [_tuple$1[0], _tuple$1[1]]]);
  21299. $deferred.push([$methodVal(p, "catchPanic"), [p.arg, verb]]);
  21300. $r = formatter.Format(p, verb); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  21301. return handled;
  21302. /* } */ case 2:
  21303. /* */ if (p.fmt.fmtFlags.sharpV) { $s = 4; continue; }
  21304. /* */ $s = 5; continue;
  21305. /* if (p.fmt.fmtFlags.sharpV) { */ case 4:
  21306. _tuple$2 = $assertType(p.arg, GoStringer, true); stringer = _tuple$2[0]; ok$1 = _tuple$2[1];
  21307. /* */ if (ok$1) { $s = 7; continue; }
  21308. /* */ $s = 8; continue;
  21309. /* if (ok$1) { */ case 7:
  21310. handled = true;
  21311. $deferred.push([$methodVal(p, "catchPanic"), [p.arg, verb]]);
  21312. _r$2 = stringer.GoString(); /* */ $s = 9; case 9: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  21313. $r = p.fmt.fmt_s(_r$2); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  21314. return handled;
  21315. /* } */ case 8:
  21316. $s = 6; continue;
  21317. /* } else { */ case 5:
  21318. _ref = verb;
  21319. /* */ if (_ref === 118 || _ref === 115 || _ref === 120 || _ref === 88 || _ref === 113) { $s = 11; continue; }
  21320. /* */ $s = 12; continue;
  21321. /* if (_ref === 118 || _ref === 115 || _ref === 120 || _ref === 88 || _ref === 113) { */ case 11:
  21322. _ref$1 = p.arg;
  21323. /* */ if ($assertType(_ref$1, $error, true)[1]) { $s = 13; continue; }
  21324. /* */ if ($assertType(_ref$1, Stringer, true)[1]) { $s = 14; continue; }
  21325. /* */ $s = 15; continue;
  21326. /* if ($assertType(_ref$1, $error, true)[1]) { */ case 13:
  21327. v = _ref$1;
  21328. handled = true;
  21329. $deferred.push([$methodVal(p, "catchPanic"), [p.arg, verb]]);
  21330. _r$3 = v.Error(); /* */ $s = 16; case 16: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  21331. _r$4 = p.printArg(new $String(_r$3), verb, depth); /* */ $s = 17; case 17: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
  21332. _r$4;
  21333. return handled;
  21334. $s = 15; continue;
  21335. /* } else if ($assertType(_ref$1, Stringer, true)[1]) { */ case 14:
  21336. v$1 = _ref$1;
  21337. handled = true;
  21338. $deferred.push([$methodVal(p, "catchPanic"), [p.arg, verb]]);
  21339. _r$5 = v$1.String(); /* */ $s = 18; case 18: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
  21340. _r$6 = p.printArg(new $String(_r$5), verb, depth); /* */ $s = 19; case 19: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
  21341. _r$6;
  21342. return handled;
  21343. /* } */ case 15:
  21344. /* } */ case 12:
  21345. /* } */ case 6:
  21346. handled = false;
  21347. return handled;
  21348. /* */ $s = -1; case -1: } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if (!$curGoroutine.asleep) { return handled; } if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: pp.ptr.prototype.handleMethods }; } $f.$ptr = $ptr; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._ref = _ref; $f._ref$1 = _ref$1; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f.depth = depth; $f.formatter = formatter; $f.handled = handled; $f.ok = ok; $f.ok$1 = ok$1; $f.p = p; $f.stringer = stringer; $f.v = v; $f.v$1 = v$1; $f.verb = verb; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
  21349. };
  21350. pp.prototype.handleMethods = function(verb, depth) { return this.$val.handleMethods(verb, depth); };
  21351. pp.ptr.prototype.printArg = function(arg, verb, depth) {
  21352. var $ptr, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _ref, _ref$1, arg, depth, f, f$1, f$10, f$11, f$12, f$13, f$14, f$15, f$16, f$17, f$18, f$2, f$3, f$4, f$5, f$6, f$7, f$8, f$9, handled, p, verb, wasString, $s, $r;
  21353. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _ref = $f._ref; _ref$1 = $f._ref$1; arg = $f.arg; depth = $f.depth; f = $f.f; f$1 = $f.f$1; f$10 = $f.f$10; f$11 = $f.f$11; f$12 = $f.f$12; f$13 = $f.f$13; f$14 = $f.f$14; f$15 = $f.f$15; f$16 = $f.f$16; f$17 = $f.f$17; f$18 = $f.f$18; f$2 = $f.f$2; f$3 = $f.f$3; f$4 = $f.f$4; f$5 = $f.f$5; f$6 = $f.f$6; f$7 = $f.f$7; f$8 = $f.f$8; f$9 = $f.f$9; handled = $f.handled; p = $f.p; verb = $f.verb; wasString = $f.wasString; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  21354. wasString = false;
  21355. p = this;
  21356. p.arg = arg;
  21357. p.value = new reflect.Value.ptr(ptrType$2.nil, 0, 0);
  21358. /* */ if ($interfaceIsEqual(arg, $ifaceNil)) { $s = 1; continue; }
  21359. /* */ $s = 2; continue;
  21360. /* if ($interfaceIsEqual(arg, $ifaceNil)) { */ case 1:
  21361. /* */ if ((verb === 84) || (verb === 118)) { $s = 3; continue; }
  21362. /* */ $s = 4; continue;
  21363. /* if ((verb === 84) || (verb === 118)) { */ case 3:
  21364. p.fmt.pad(nilAngleBytes);
  21365. $s = 5; continue;
  21366. /* } else { */ case 4:
  21367. $r = p.badVerb(verb); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  21368. /* } */ case 5:
  21369. wasString = false;
  21370. return wasString;
  21371. /* } */ case 2:
  21372. _ref = verb;
  21373. /* */ if (_ref === 84) { $s = 7; continue; }
  21374. /* */ if (_ref === 112) { $s = 8; continue; }
  21375. /* */ $s = 9; continue;
  21376. /* if (_ref === 84) { */ case 7:
  21377. _r$2 = reflect.TypeOf(arg).String(); /* */ $s = 10; case 10: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  21378. _r$3 = p.printArg(new $String(_r$2), 115, 0); /* */ $s = 11; case 11: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  21379. _r$3;
  21380. wasString = false;
  21381. return wasString;
  21382. $s = 9; continue;
  21383. /* } else if (_ref === 112) { */ case 8:
  21384. _r$4 = reflect.ValueOf(arg); /* */ $s = 12; case 12: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
  21385. $r = p.fmtPointer(_r$4, verb); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  21386. wasString = false;
  21387. return wasString;
  21388. /* } */ case 9:
  21389. _ref$1 = arg;
  21390. /* */ if ($assertType(_ref$1, $Bool, true)[1]) { $s = 14; continue; }
  21391. /* */ if ($assertType(_ref$1, $Float32, true)[1]) { $s = 15; continue; }
  21392. /* */ if ($assertType(_ref$1, $Float64, true)[1]) { $s = 16; continue; }
  21393. /* */ if ($assertType(_ref$1, $Complex64, true)[1]) { $s = 17; continue; }
  21394. /* */ if ($assertType(_ref$1, $Complex128, true)[1]) { $s = 18; continue; }
  21395. /* */ if ($assertType(_ref$1, $Int, true)[1]) { $s = 19; continue; }
  21396. /* */ if ($assertType(_ref$1, $Int8, true)[1]) { $s = 20; continue; }
  21397. /* */ if ($assertType(_ref$1, $Int16, true)[1]) { $s = 21; continue; }
  21398. /* */ if ($assertType(_ref$1, $Int32, true)[1]) { $s = 22; continue; }
  21399. /* */ if ($assertType(_ref$1, $Int64, true)[1]) { $s = 23; continue; }
  21400. /* */ if ($assertType(_ref$1, $Uint, true)[1]) { $s = 24; continue; }
  21401. /* */ if ($assertType(_ref$1, $Uint8, true)[1]) { $s = 25; continue; }
  21402. /* */ if ($assertType(_ref$1, $Uint16, true)[1]) { $s = 26; continue; }
  21403. /* */ if ($assertType(_ref$1, $Uint32, true)[1]) { $s = 27; continue; }
  21404. /* */ if ($assertType(_ref$1, $Uint64, true)[1]) { $s = 28; continue; }
  21405. /* */ if ($assertType(_ref$1, $Uintptr, true)[1]) { $s = 29; continue; }
  21406. /* */ if ($assertType(_ref$1, $String, true)[1]) { $s = 30; continue; }
  21407. /* */ if ($assertType(_ref$1, sliceType, true)[1]) { $s = 31; continue; }
  21408. /* */ $s = 32; continue;
  21409. /* if ($assertType(_ref$1, $Bool, true)[1]) { */ case 14:
  21410. f = _ref$1.$val;
  21411. $r = p.fmtBool(f, verb); /* */ $s = 34; case 34: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  21412. $s = 33; continue;
  21413. /* } else if ($assertType(_ref$1, $Float32, true)[1]) { */ case 15:
  21414. f$1 = _ref$1.$val;
  21415. $r = p.fmtFloat32(f$1, verb); /* */ $s = 35; case 35: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  21416. $s = 33; continue;
  21417. /* } else if ($assertType(_ref$1, $Float64, true)[1]) { */ case 16:
  21418. f$2 = _ref$1.$val;
  21419. $r = p.fmtFloat64(f$2, verb); /* */ $s = 36; case 36: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  21420. $s = 33; continue;
  21421. /* } else if ($assertType(_ref$1, $Complex64, true)[1]) { */ case 17:
  21422. f$3 = _ref$1.$val;
  21423. $r = p.fmtComplex64(f$3, verb); /* */ $s = 37; case 37: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  21424. $s = 33; continue;
  21425. /* } else if ($assertType(_ref$1, $Complex128, true)[1]) { */ case 18:
  21426. f$4 = _ref$1.$val;
  21427. $r = p.fmtComplex128(f$4, verb); /* */ $s = 38; case 38: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  21428. $s = 33; continue;
  21429. /* } else if ($assertType(_ref$1, $Int, true)[1]) { */ case 19:
  21430. f$5 = _ref$1.$val;
  21431. $r = p.fmtInt64(new $Int64(0, f$5), verb); /* */ $s = 39; case 39: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  21432. $s = 33; continue;
  21433. /* } else if ($assertType(_ref$1, $Int8, true)[1]) { */ case 20:
  21434. f$6 = _ref$1.$val;
  21435. $r = p.fmtInt64(new $Int64(0, f$6), verb); /* */ $s = 40; case 40: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  21436. $s = 33; continue;
  21437. /* } else if ($assertType(_ref$1, $Int16, true)[1]) { */ case 21:
  21438. f$7 = _ref$1.$val;
  21439. $r = p.fmtInt64(new $Int64(0, f$7), verb); /* */ $s = 41; case 41: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  21440. $s = 33; continue;
  21441. /* } else if ($assertType(_ref$1, $Int32, true)[1]) { */ case 22:
  21442. f$8 = _ref$1.$val;
  21443. $r = p.fmtInt64(new $Int64(0, f$8), verb); /* */ $s = 42; case 42: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  21444. $s = 33; continue;
  21445. /* } else if ($assertType(_ref$1, $Int64, true)[1]) { */ case 23:
  21446. f$9 = _ref$1.$val;
  21447. $r = p.fmtInt64(f$9, verb); /* */ $s = 43; case 43: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  21448. $s = 33; continue;
  21449. /* } else if ($assertType(_ref$1, $Uint, true)[1]) { */ case 24:
  21450. f$10 = _ref$1.$val;
  21451. $r = p.fmtUint64(new $Uint64(0, f$10), verb); /* */ $s = 44; case 44: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  21452. $s = 33; continue;
  21453. /* } else if ($assertType(_ref$1, $Uint8, true)[1]) { */ case 25:
  21454. f$11 = _ref$1.$val;
  21455. $r = p.fmtUint64(new $Uint64(0, f$11), verb); /* */ $s = 45; case 45: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  21456. $s = 33; continue;
  21457. /* } else if ($assertType(_ref$1, $Uint16, true)[1]) { */ case 26:
  21458. f$12 = _ref$1.$val;
  21459. $r = p.fmtUint64(new $Uint64(0, f$12), verb); /* */ $s = 46; case 46: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  21460. $s = 33; continue;
  21461. /* } else if ($assertType(_ref$1, $Uint32, true)[1]) { */ case 27:
  21462. f$13 = _ref$1.$val;
  21463. $r = p.fmtUint64(new $Uint64(0, f$13), verb); /* */ $s = 47; case 47: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  21464. $s = 33; continue;
  21465. /* } else if ($assertType(_ref$1, $Uint64, true)[1]) { */ case 28:
  21466. f$14 = _ref$1.$val;
  21467. $r = p.fmtUint64(f$14, verb); /* */ $s = 48; case 48: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  21468. $s = 33; continue;
  21469. /* } else if ($assertType(_ref$1, $Uintptr, true)[1]) { */ case 29:
  21470. f$15 = _ref$1.$val;
  21471. $r = p.fmtUint64(new $Uint64(0, f$15.constructor === Number ? f$15 : 1), verb); /* */ $s = 49; case 49: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  21472. $s = 33; continue;
  21473. /* } else if ($assertType(_ref$1, $String, true)[1]) { */ case 30:
  21474. f$16 = _ref$1.$val;
  21475. $r = p.fmtString(f$16, verb); /* */ $s = 50; case 50: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  21476. wasString = (verb === 115) || (verb === 118);
  21477. $s = 33; continue;
  21478. /* } else if ($assertType(_ref$1, sliceType, true)[1]) { */ case 31:
  21479. f$17 = _ref$1.$val;
  21480. $r = p.fmtBytes(f$17, verb, $ifaceNil, depth); /* */ $s = 51; case 51: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  21481. wasString = verb === 115;
  21482. $s = 33; continue;
  21483. /* } else { */ case 32:
  21484. f$18 = _ref$1;
  21485. _r$5 = p.handleMethods(verb, depth); /* */ $s = 52; case 52: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
  21486. handled = _r$5;
  21487. /* */ if (handled) { $s = 53; continue; }
  21488. /* */ $s = 54; continue;
  21489. /* if (handled) { */ case 53:
  21490. wasString = false;
  21491. return wasString;
  21492. /* } */ case 54:
  21493. _r$6 = reflect.ValueOf(arg); /* */ $s = 55; case 55: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
  21494. _r$7 = p.printReflectValue(_r$6, verb, depth); /* */ $s = 56; case 56: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
  21495. wasString = _r$7;
  21496. return wasString;
  21497. /* } */ case 33:
  21498. p.arg = $ifaceNil;
  21499. return wasString;
  21500. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: pp.ptr.prototype.printArg }; } $f.$ptr = $ptr; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._ref = _ref; $f._ref$1 = _ref$1; $f.arg = arg; $f.depth = depth; $f.f = f; $f.f$1 = f$1; $f.f$10 = f$10; $f.f$11 = f$11; $f.f$12 = f$12; $f.f$13 = f$13; $f.f$14 = f$14; $f.f$15 = f$15; $f.f$16 = f$16; $f.f$17 = f$17; $f.f$18 = f$18; $f.f$2 = f$2; $f.f$3 = f$3; $f.f$4 = f$4; $f.f$5 = f$5; $f.f$6 = f$6; $f.f$7 = f$7; $f.f$8 = f$8; $f.f$9 = f$9; $f.handled = handled; $f.p = p; $f.verb = verb; $f.wasString = wasString; $f.$s = $s; $f.$r = $r; return $f;
  21501. };
  21502. pp.prototype.printArg = function(arg, verb, depth) { return this.$val.printArg(arg, verb, depth); };
  21503. pp.ptr.prototype.printValue = function(value, verb, depth) {
  21504. var $ptr, _r$2, _r$3, _r$4, _r$5, _r$6, _ref, depth, handled, p, value, verb, wasString, $s, $r;
  21505. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _ref = $f._ref; depth = $f.depth; handled = $f.handled; p = $f.p; value = $f.value; verb = $f.verb; wasString = $f.wasString; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  21506. wasString = false;
  21507. p = this;
  21508. value = value;
  21509. /* */ if (!value.IsValid()) { $s = 1; continue; }
  21510. /* */ $s = 2; continue;
  21511. /* if (!value.IsValid()) { */ case 1:
  21512. /* */ if ((verb === 84) || (verb === 118)) { $s = 3; continue; }
  21513. /* */ $s = 4; continue;
  21514. /* if ((verb === 84) || (verb === 118)) { */ case 3:
  21515. (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).Write(nilAngleBytes);
  21516. $s = 5; continue;
  21517. /* } else { */ case 4:
  21518. $r = p.badVerb(verb); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  21519. /* } */ case 5:
  21520. wasString = false;
  21521. return wasString;
  21522. /* } */ case 2:
  21523. _ref = verb;
  21524. /* */ if (_ref === 84) { $s = 7; continue; }
  21525. /* */ if (_ref === 112) { $s = 8; continue; }
  21526. /* */ $s = 9; continue;
  21527. /* if (_ref === 84) { */ case 7:
  21528. _r$2 = value.Type().String(); /* */ $s = 10; case 10: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  21529. _r$3 = p.printArg(new $String(_r$2), 115, 0); /* */ $s = 11; case 11: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  21530. _r$3;
  21531. wasString = false;
  21532. return wasString;
  21533. $s = 9; continue;
  21534. /* } else if (_ref === 112) { */ case 8:
  21535. $r = p.fmtPointer(value, verb); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  21536. wasString = false;
  21537. return wasString;
  21538. /* } */ case 9:
  21539. p.arg = $ifaceNil;
  21540. /* */ if (value.CanInterface()) { $s = 13; continue; }
  21541. /* */ $s = 14; continue;
  21542. /* if (value.CanInterface()) { */ case 13:
  21543. _r$4 = value.Interface(); /* */ $s = 15; case 15: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
  21544. p.arg = _r$4;
  21545. /* } */ case 14:
  21546. _r$5 = p.handleMethods(verb, depth); /* */ $s = 16; case 16: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
  21547. handled = _r$5;
  21548. /* */ if (handled) { $s = 17; continue; }
  21549. /* */ $s = 18; continue;
  21550. /* if (handled) { */ case 17:
  21551. wasString = false;
  21552. return wasString;
  21553. /* } */ case 18:
  21554. _r$6 = p.printReflectValue(value, verb, depth); /* */ $s = 19; case 19: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
  21555. wasString = _r$6;
  21556. return wasString;
  21557. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: pp.ptr.prototype.printValue }; } $f.$ptr = $ptr; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._ref = _ref; $f.depth = depth; $f.handled = handled; $f.p = p; $f.value = value; $f.verb = verb; $f.wasString = wasString; $f.$s = $s; $f.$r = $r; return $f;
  21558. };
  21559. pp.prototype.printValue = function(value, verb, depth) { return this.$val.printValue(value, verb, depth); };
  21560. pp.ptr.prototype.printReflectValue = function(value, verb, depth) {
  21561. var $ptr, _i, _i$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$16, _r$17, _r$18, _r$19, _r$2, _r$20, _r$21, _r$22, _r$23, _r$24, _r$25, _r$26, _r$27, _r$28, _r$29, _r$3, _r$30, _r$31, _r$32, _r$33, _r$34, _r$35, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _ref$1, _ref$2, _ref$3, _v, a, bytes, depth, f, f$1, i, i$1, i$2, i$3, key, keys, oldValue, p, t, typ, v, v$1, value, value$1, verb, wasString, x, $s, $r;
  21562. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _i = $f._i; _i$1 = $f._i$1; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$12 = $f._r$12; _r$13 = $f._r$13; _r$14 = $f._r$14; _r$15 = $f._r$15; _r$16 = $f._r$16; _r$17 = $f._r$17; _r$18 = $f._r$18; _r$19 = $f._r$19; _r$2 = $f._r$2; _r$20 = $f._r$20; _r$21 = $f._r$21; _r$22 = $f._r$22; _r$23 = $f._r$23; _r$24 = $f._r$24; _r$25 = $f._r$25; _r$26 = $f._r$26; _r$27 = $f._r$27; _r$28 = $f._r$28; _r$29 = $f._r$29; _r$3 = $f._r$3; _r$30 = $f._r$30; _r$31 = $f._r$31; _r$32 = $f._r$32; _r$33 = $f._r$33; _r$34 = $f._r$34; _r$35 = $f._r$35; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _r$9 = $f._r$9; _ref = $f._ref; _ref$1 = $f._ref$1; _ref$2 = $f._ref$2; _ref$3 = $f._ref$3; _v = $f._v; a = $f.a; bytes = $f.bytes; depth = $f.depth; f = $f.f; f$1 = $f.f$1; i = $f.i; i$1 = $f.i$1; i$2 = $f.i$2; i$3 = $f.i$3; key = $f.key; keys = $f.keys; oldValue = $f.oldValue; p = $f.p; t = $f.t; typ = $f.typ; v = $f.v; v$1 = $f.v$1; value = $f.value; value$1 = $f.value$1; verb = $f.verb; wasString = $f.wasString; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  21563. wasString = false;
  21564. p = this;
  21565. value = value;
  21566. oldValue = p.value;
  21567. p.value = value;
  21568. f = value;
  21569. _ref = f.Kind();
  21570. /* */ if (_ref === 1) { $s = 1; continue; }
  21571. /* */ if (_ref === 2 || _ref === 3 || _ref === 4 || _ref === 5 || _ref === 6) { $s = 2; continue; }
  21572. /* */ if (_ref === 7 || _ref === 8 || _ref === 9 || _ref === 10 || _ref === 11 || _ref === 12) { $s = 3; continue; }
  21573. /* */ if (_ref === 13 || _ref === 14) { $s = 4; continue; }
  21574. /* */ if (_ref === 15 || _ref === 16) { $s = 5; continue; }
  21575. /* */ if (_ref === 24) { $s = 6; continue; }
  21576. /* */ if (_ref === 21) { $s = 7; continue; }
  21577. /* */ if (_ref === 25) { $s = 8; continue; }
  21578. /* */ if (_ref === 20) { $s = 9; continue; }
  21579. /* */ if (_ref === 17 || _ref === 23) { $s = 10; continue; }
  21580. /* */ if (_ref === 22) { $s = 11; continue; }
  21581. /* */ if (_ref === 18 || _ref === 19 || _ref === 26) { $s = 12; continue; }
  21582. /* */ $s = 13; continue;
  21583. /* switch (0) { default: if (_ref === 1) { */ case 1:
  21584. $r = p.fmtBool(f.Bool(), verb); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  21585. $s = 14; continue;
  21586. /* } else if (_ref === 2 || _ref === 3 || _ref === 4 || _ref === 5 || _ref === 6) { */ case 2:
  21587. $r = p.fmtInt64(f.Int(), verb); /* */ $s = 16; case 16: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  21588. $s = 14; continue;
  21589. /* } else if (_ref === 7 || _ref === 8 || _ref === 9 || _ref === 10 || _ref === 11 || _ref === 12) { */ case 3:
  21590. $r = p.fmtUint64(f.Uint(), verb); /* */ $s = 17; case 17: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  21591. $s = 14; continue;
  21592. /* } else if (_ref === 13 || _ref === 14) { */ case 4:
  21593. _r$2 = f.Type().Size(); /* */ $s = 21; case 21: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  21594. /* */ if (_r$2 === 4) { $s = 18; continue; }
  21595. /* */ $s = 19; continue;
  21596. /* if (_r$2 === 4) { */ case 18:
  21597. $r = p.fmtFloat32($fround(f.Float()), verb); /* */ $s = 22; case 22: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  21598. $s = 20; continue;
  21599. /* } else { */ case 19:
  21600. $r = p.fmtFloat64(f.Float(), verb); /* */ $s = 23; case 23: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  21601. /* } */ case 20:
  21602. $s = 14; continue;
  21603. /* } else if (_ref === 15 || _ref === 16) { */ case 5:
  21604. _r$3 = f.Type().Size(); /* */ $s = 27; case 27: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  21605. /* */ if (_r$3 === 8) { $s = 24; continue; }
  21606. /* */ $s = 25; continue;
  21607. /* if (_r$3 === 8) { */ case 24:
  21608. $r = p.fmtComplex64((x = f.Complex(), new $Complex64(x.$real, x.$imag)), verb); /* */ $s = 28; case 28: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  21609. $s = 26; continue;
  21610. /* } else { */ case 25:
  21611. $r = p.fmtComplex128(f.Complex(), verb); /* */ $s = 29; case 29: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  21612. /* } */ case 26:
  21613. $s = 14; continue;
  21614. /* } else if (_ref === 24) { */ case 6:
  21615. _r$4 = f.String(); /* */ $s = 30; case 30: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
  21616. $r = p.fmtString(_r$4, verb); /* */ $s = 31; case 31: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  21617. $s = 14; continue;
  21618. /* } else if (_ref === 21) { */ case 7:
  21619. /* */ if (p.fmt.fmtFlags.sharpV) { $s = 32; continue; }
  21620. /* */ $s = 33; continue;
  21621. /* if (p.fmt.fmtFlags.sharpV) { */ case 32:
  21622. _r$5 = f.Type().String(); /* */ $s = 35; case 35: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
  21623. _r$6 = (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString(_r$5); /* */ $s = 36; case 36: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
  21624. _r$6;
  21625. if (f.IsNil()) {
  21626. (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString("(nil)");
  21627. /* break; */ $s = 14; continue;
  21628. }
  21629. (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(123);
  21630. $s = 34; continue;
  21631. /* } else { */ case 33:
  21632. (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).Write(mapBytes);
  21633. /* } */ case 34:
  21634. _r$7 = f.MapKeys(); /* */ $s = 37; case 37: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
  21635. keys = _r$7;
  21636. _ref$1 = keys;
  21637. _i = 0;
  21638. /* while (true) { */ case 38:
  21639. /* if (!(_i < _ref$1.$length)) { break; } */ if(!(_i < _ref$1.$length)) { $s = 39; continue; }
  21640. i = _i;
  21641. key = ((_i < 0 || _i >= _ref$1.$length) ? $throwRuntimeError("index out of range") : _ref$1.$array[_ref$1.$offset + _i]);
  21642. if (i > 0) {
  21643. if (p.fmt.fmtFlags.sharpV) {
  21644. (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).Write(commaSpaceBytes);
  21645. } else {
  21646. (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(32);
  21647. }
  21648. }
  21649. _r$8 = p.printValue(key, verb, depth + 1 >> 0); /* */ $s = 40; case 40: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
  21650. _r$8;
  21651. (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(58);
  21652. _r$9 = f.MapIndex(key); /* */ $s = 41; case 41: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
  21653. _r$10 = p.printValue(_r$9, verb, depth + 1 >> 0); /* */ $s = 42; case 42: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
  21654. _r$10;
  21655. _i++;
  21656. /* } */ $s = 38; continue; case 39:
  21657. if (p.fmt.fmtFlags.sharpV) {
  21658. (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(125);
  21659. } else {
  21660. (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(93);
  21661. }
  21662. $s = 14; continue;
  21663. /* } else if (_ref === 25) { */ case 8:
  21664. /* */ if (p.fmt.fmtFlags.sharpV) { $s = 43; continue; }
  21665. /* */ $s = 44; continue;
  21666. /* if (p.fmt.fmtFlags.sharpV) { */ case 43:
  21667. _r$11 = value.Type().String(); /* */ $s = 45; case 45: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
  21668. _r$12 = (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString(_r$11); /* */ $s = 46; case 46: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; }
  21669. _r$12;
  21670. /* } */ case 44:
  21671. p.add(123);
  21672. v = f;
  21673. t = v.Type();
  21674. i$1 = 0;
  21675. /* while (true) { */ case 47:
  21676. /* if (!(i$1 < v.NumField())) { break; } */ if(!(i$1 < v.NumField())) { $s = 48; continue; }
  21677. if (i$1 > 0) {
  21678. if (p.fmt.fmtFlags.sharpV) {
  21679. (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).Write(commaSpaceBytes);
  21680. } else {
  21681. (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(32);
  21682. }
  21683. }
  21684. /* */ if (p.fmt.fmtFlags.plusV || p.fmt.fmtFlags.sharpV) { $s = 49; continue; }
  21685. /* */ $s = 50; continue;
  21686. /* if (p.fmt.fmtFlags.plusV || p.fmt.fmtFlags.sharpV) { */ case 49:
  21687. _r$13 = t.Field(i$1); /* */ $s = 51; case 51: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; }
  21688. f$1 = $clone(_r$13, reflect.StructField);
  21689. /* */ if (!(f$1.Name === "")) { $s = 52; continue; }
  21690. /* */ $s = 53; continue;
  21691. /* if (!(f$1.Name === "")) { */ case 52:
  21692. (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString(f$1.Name);
  21693. (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(58);
  21694. /* } */ case 53:
  21695. /* } */ case 50:
  21696. _r$14 = getField(v, i$1); /* */ $s = 54; case 54: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; }
  21697. _r$15 = p.printValue(_r$14, verb, depth + 1 >> 0); /* */ $s = 55; case 55: if($c) { $c = false; _r$15 = _r$15.$blk(); } if (_r$15 && _r$15.$blk !== undefined) { break s; }
  21698. _r$15;
  21699. i$1 = i$1 + (1) >> 0;
  21700. /* } */ $s = 47; continue; case 48:
  21701. (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(125);
  21702. $s = 14; continue;
  21703. /* } else if (_ref === 20) { */ case 9:
  21704. _r$16 = f.Elem(); /* */ $s = 56; case 56: if($c) { $c = false; _r$16 = _r$16.$blk(); } if (_r$16 && _r$16.$blk !== undefined) { break s; }
  21705. value$1 = _r$16;
  21706. /* */ if (!value$1.IsValid()) { $s = 57; continue; }
  21707. /* */ $s = 58; continue;
  21708. /* if (!value$1.IsValid()) { */ case 57:
  21709. /* */ if (p.fmt.fmtFlags.sharpV) { $s = 60; continue; }
  21710. /* */ $s = 61; continue;
  21711. /* if (p.fmt.fmtFlags.sharpV) { */ case 60:
  21712. _r$17 = f.Type().String(); /* */ $s = 63; case 63: if($c) { $c = false; _r$17 = _r$17.$blk(); } if (_r$17 && _r$17.$blk !== undefined) { break s; }
  21713. _r$18 = (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString(_r$17); /* */ $s = 64; case 64: if($c) { $c = false; _r$18 = _r$18.$blk(); } if (_r$18 && _r$18.$blk !== undefined) { break s; }
  21714. _r$18;
  21715. (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).Write(nilParenBytes);
  21716. $s = 62; continue;
  21717. /* } else { */ case 61:
  21718. (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).Write(nilAngleBytes);
  21719. /* } */ case 62:
  21720. $s = 59; continue;
  21721. /* } else { */ case 58:
  21722. _r$19 = p.printValue(value$1, verb, depth + 1 >> 0); /* */ $s = 65; case 65: if($c) { $c = false; _r$19 = _r$19.$blk(); } if (_r$19 && _r$19.$blk !== undefined) { break s; }
  21723. wasString = _r$19;
  21724. /* } */ case 59:
  21725. $s = 14; continue;
  21726. /* } else if (_ref === 17 || _ref === 23) { */ case 10:
  21727. typ = f.Type();
  21728. _r$20 = typ.Elem(); /* */ $s = 69; case 69: if($c) { $c = false; _r$20 = _r$20.$blk(); } if (_r$20 && _r$20.$blk !== undefined) { break s; }
  21729. _r$21 = _r$20.Kind(); /* */ $s = 70; case 70: if($c) { $c = false; _r$21 = _r$21.$blk(); } if (_r$21 && _r$21.$blk !== undefined) { break s; }
  21730. if (!(_r$21 === 8)) { _v = false; $s = 68; continue s; }
  21731. _r$22 = typ.Elem(); /* */ $s = 71; case 71: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; }
  21732. _v = $interfaceIsEqual(_r$22, byteType) || (verb === 115) || (verb === 113) || (verb === 120); case 68:
  21733. /* */ if (_v) { $s = 66; continue; }
  21734. /* */ $s = 67; continue;
  21735. /* if (_v) { */ case 66:
  21736. bytes = sliceType.nil;
  21737. /* */ if (f.Kind() === 23) { $s = 72; continue; }
  21738. /* */ if (f.CanAddr()) { $s = 73; continue; }
  21739. /* */ $s = 74; continue;
  21740. /* if (f.Kind() === 23) { */ case 72:
  21741. _r$23 = f.Bytes(); /* */ $s = 76; case 76: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; }
  21742. bytes = _r$23;
  21743. $s = 75; continue;
  21744. /* } else if (f.CanAddr()) { */ case 73:
  21745. _r$24 = f.Slice(0, f.Len()); /* */ $s = 77; case 77: if($c) { $c = false; _r$24 = _r$24.$blk(); } if (_r$24 && _r$24.$blk !== undefined) { break s; }
  21746. _r$25 = _r$24.Bytes(); /* */ $s = 78; case 78: if($c) { $c = false; _r$25 = _r$25.$blk(); } if (_r$25 && _r$25.$blk !== undefined) { break s; }
  21747. bytes = _r$25;
  21748. $s = 75; continue;
  21749. /* } else { */ case 74:
  21750. bytes = $makeSlice(sliceType, f.Len());
  21751. _ref$2 = bytes;
  21752. _i$1 = 0;
  21753. /* while (true) { */ case 79:
  21754. /* if (!(_i$1 < _ref$2.$length)) { break; } */ if(!(_i$1 < _ref$2.$length)) { $s = 80; continue; }
  21755. i$2 = _i$1;
  21756. _r$26 = f.Index(i$2); /* */ $s = 81; case 81: if($c) { $c = false; _r$26 = _r$26.$blk(); } if (_r$26 && _r$26.$blk !== undefined) { break s; }
  21757. _r$27 = _r$26.Uint(); /* */ $s = 82; case 82: if($c) { $c = false; _r$27 = _r$27.$blk(); } if (_r$27 && _r$27.$blk !== undefined) { break s; }
  21758. ((i$2 < 0 || i$2 >= bytes.$length) ? $throwRuntimeError("index out of range") : bytes.$array[bytes.$offset + i$2] = (_r$27.$low << 24 >>> 24));
  21759. _i$1++;
  21760. /* } */ $s = 79; continue; case 80:
  21761. /* } */ case 75:
  21762. $r = p.fmtBytes(bytes, verb, typ, depth); /* */ $s = 83; case 83: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  21763. wasString = verb === 115;
  21764. /* break; */ $s = 14; continue;
  21765. /* } */ case 67:
  21766. /* */ if (p.fmt.fmtFlags.sharpV) { $s = 84; continue; }
  21767. /* */ $s = 85; continue;
  21768. /* if (p.fmt.fmtFlags.sharpV) { */ case 84:
  21769. _r$28 = value.Type().String(); /* */ $s = 87; case 87: if($c) { $c = false; _r$28 = _r$28.$blk(); } if (_r$28 && _r$28.$blk !== undefined) { break s; }
  21770. _r$29 = (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString(_r$28); /* */ $s = 88; case 88: if($c) { $c = false; _r$29 = _r$29.$blk(); } if (_r$29 && _r$29.$blk !== undefined) { break s; }
  21771. _r$29;
  21772. if ((f.Kind() === 23) && f.IsNil()) {
  21773. (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString("(nil)");
  21774. /* break; */ $s = 14; continue;
  21775. }
  21776. (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(123);
  21777. $s = 86; continue;
  21778. /* } else { */ case 85:
  21779. (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(91);
  21780. /* } */ case 86:
  21781. i$3 = 0;
  21782. /* while (true) { */ case 89:
  21783. /* if (!(i$3 < f.Len())) { break; } */ if(!(i$3 < f.Len())) { $s = 90; continue; }
  21784. if (i$3 > 0) {
  21785. if (p.fmt.fmtFlags.sharpV) {
  21786. (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).Write(commaSpaceBytes);
  21787. } else {
  21788. (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(32);
  21789. }
  21790. }
  21791. _r$30 = f.Index(i$3); /* */ $s = 91; case 91: if($c) { $c = false; _r$30 = _r$30.$blk(); } if (_r$30 && _r$30.$blk !== undefined) { break s; }
  21792. _r$31 = p.printValue(_r$30, verb, depth + 1 >> 0); /* */ $s = 92; case 92: if($c) { $c = false; _r$31 = _r$31.$blk(); } if (_r$31 && _r$31.$blk !== undefined) { break s; }
  21793. _r$31;
  21794. i$3 = i$3 + (1) >> 0;
  21795. /* } */ $s = 89; continue; case 90:
  21796. if (p.fmt.fmtFlags.sharpV) {
  21797. (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(125);
  21798. } else {
  21799. (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(93);
  21800. }
  21801. $s = 14; continue;
  21802. /* } else if (_ref === 22) { */ case 11:
  21803. v$1 = f.Pointer();
  21804. /* */ if (!((v$1 === 0)) && (depth === 0)) { $s = 93; continue; }
  21805. /* */ $s = 94; continue;
  21806. /* if (!((v$1 === 0)) && (depth === 0)) { */ case 93:
  21807. _r$32 = f.Elem(); /* */ $s = 95; case 95: if($c) { $c = false; _r$32 = _r$32.$blk(); } if (_r$32 && _r$32.$blk !== undefined) { break s; }
  21808. a = _r$32;
  21809. _ref$3 = a.Kind();
  21810. /* */ if (_ref$3 === 17 || _ref$3 === 23) { $s = 96; continue; }
  21811. /* */ if (_ref$3 === 25) { $s = 97; continue; }
  21812. /* */ if (_ref$3 === 21) { $s = 98; continue; }
  21813. /* */ $s = 99; continue;
  21814. /* if (_ref$3 === 17 || _ref$3 === 23) { */ case 96:
  21815. (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(38);
  21816. _r$33 = p.printValue(a, verb, depth + 1 >> 0); /* */ $s = 100; case 100: if($c) { $c = false; _r$33 = _r$33.$blk(); } if (_r$33 && _r$33.$blk !== undefined) { break s; }
  21817. _r$33;
  21818. /* break BigSwitch; */ $s = 14; continue s;
  21819. $s = 99; continue;
  21820. /* } else if (_ref$3 === 25) { */ case 97:
  21821. (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(38);
  21822. _r$34 = p.printValue(a, verb, depth + 1 >> 0); /* */ $s = 101; case 101: if($c) { $c = false; _r$34 = _r$34.$blk(); } if (_r$34 && _r$34.$blk !== undefined) { break s; }
  21823. _r$34;
  21824. /* break BigSwitch; */ $s = 14; continue s;
  21825. $s = 99; continue;
  21826. /* } else if (_ref$3 === 21) { */ case 98:
  21827. (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(38);
  21828. _r$35 = p.printValue(a, verb, depth + 1 >> 0); /* */ $s = 102; case 102: if($c) { $c = false; _r$35 = _r$35.$blk(); } if (_r$35 && _r$35.$blk !== undefined) { break s; }
  21829. _r$35;
  21830. /* break BigSwitch; */ $s = 14; continue s;
  21831. /* } */ case 99:
  21832. /* } */ case 94:
  21833. $r = p.fmtPointer(value, verb); /* */ $s = 103; case 103: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  21834. $s = 14; continue;
  21835. /* } else if (_ref === 18 || _ref === 19 || _ref === 26) { */ case 12:
  21836. $r = p.fmtPointer(value, verb); /* */ $s = 104; case 104: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  21837. $s = 14; continue;
  21838. /* } else { */ case 13:
  21839. $r = p.unknownType(f); /* */ $s = 105; case 105: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  21840. /* } } */ case 14:
  21841. p.value = oldValue;
  21842. wasString = wasString;
  21843. return wasString;
  21844. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: pp.ptr.prototype.printReflectValue }; } $f.$ptr = $ptr; $f._i = _i; $f._i$1 = _i$1; $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$12 = _r$12; $f._r$13 = _r$13; $f._r$14 = _r$14; $f._r$15 = _r$15; $f._r$16 = _r$16; $f._r$17 = _r$17; $f._r$18 = _r$18; $f._r$19 = _r$19; $f._r$2 = _r$2; $f._r$20 = _r$20; $f._r$21 = _r$21; $f._r$22 = _r$22; $f._r$23 = _r$23; $f._r$24 = _r$24; $f._r$25 = _r$25; $f._r$26 = _r$26; $f._r$27 = _r$27; $f._r$28 = _r$28; $f._r$29 = _r$29; $f._r$3 = _r$3; $f._r$30 = _r$30; $f._r$31 = _r$31; $f._r$32 = _r$32; $f._r$33 = _r$33; $f._r$34 = _r$34; $f._r$35 = _r$35; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._r$9 = _r$9; $f._ref = _ref; $f._ref$1 = _ref$1; $f._ref$2 = _ref$2; $f._ref$3 = _ref$3; $f._v = _v; $f.a = a; $f.bytes = bytes; $f.depth = depth; $f.f = f; $f.f$1 = f$1; $f.i = i; $f.i$1 = i$1; $f.i$2 = i$2; $f.i$3 = i$3; $f.key = key; $f.keys = keys; $f.oldValue = oldValue; $f.p = p; $f.t = t; $f.typ = typ; $f.v = v; $f.v$1 = v$1; $f.value = value; $f.value$1 = value$1; $f.verb = verb; $f.wasString = wasString; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
  21845. };
  21846. pp.prototype.printReflectValue = function(value, verb, depth) { return this.$val.printReflectValue(value, verb, depth); };
  21847. intFromArg = function(a, argNum) {
  21848. var $ptr, _tuple, a, argNum, isInt, newArgNum, num;
  21849. num = 0;
  21850. isInt = false;
  21851. newArgNum = 0;
  21852. newArgNum = argNum;
  21853. if (argNum < a.$length) {
  21854. _tuple = $assertType(((argNum < 0 || argNum >= a.$length) ? $throwRuntimeError("index out of range") : a.$array[a.$offset + argNum]), $Int, true); num = _tuple[0]; isInt = _tuple[1];
  21855. newArgNum = argNum + 1 >> 0;
  21856. }
  21857. return [num, isInt, newArgNum];
  21858. };
  21859. parseArgNumber = function(format) {
  21860. var $ptr, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tuple, format, i, index, newi, ok, ok$1, wid, width;
  21861. index = 0;
  21862. wid = 0;
  21863. ok = false;
  21864. i = 1;
  21865. while (true) {
  21866. if (!(i < format.length)) { break; }
  21867. if (format.charCodeAt(i) === 93) {
  21868. _tuple = parsenum(format, 1, i); width = _tuple[0]; ok$1 = _tuple[1]; newi = _tuple[2];
  21869. if (!ok$1 || !((newi === i))) {
  21870. _tmp = 0; _tmp$1 = i + 1 >> 0; _tmp$2 = false; index = _tmp; wid = _tmp$1; ok = _tmp$2;
  21871. return [index, wid, ok];
  21872. }
  21873. _tmp$3 = width - 1 >> 0; _tmp$4 = i + 1 >> 0; _tmp$5 = true; index = _tmp$3; wid = _tmp$4; ok = _tmp$5;
  21874. return [index, wid, ok];
  21875. }
  21876. i = i + (1) >> 0;
  21877. }
  21878. _tmp$6 = 0; _tmp$7 = 1; _tmp$8 = false; index = _tmp$6; wid = _tmp$7; ok = _tmp$8;
  21879. return [index, wid, ok];
  21880. };
  21881. pp.ptr.prototype.argNumber = function(argNum, format, i, numArgs) {
  21882. var $ptr, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tuple, argNum, format, found, i, index, newArgNum, newi, numArgs, ok, p, wid;
  21883. newArgNum = 0;
  21884. newi = 0;
  21885. found = false;
  21886. p = this;
  21887. if (format.length <= i || !((format.charCodeAt(i) === 91))) {
  21888. _tmp = argNum; _tmp$1 = i; _tmp$2 = false; newArgNum = _tmp; newi = _tmp$1; found = _tmp$2;
  21889. return [newArgNum, newi, found];
  21890. }
  21891. p.reordered = true;
  21892. _tuple = parseArgNumber(format.substring(i)); index = _tuple[0]; wid = _tuple[1]; ok = _tuple[2];
  21893. if (ok && 0 <= index && index < numArgs) {
  21894. _tmp$3 = index; _tmp$4 = i + wid >> 0; _tmp$5 = true; newArgNum = _tmp$3; newi = _tmp$4; found = _tmp$5;
  21895. return [newArgNum, newi, found];
  21896. }
  21897. p.goodArgNum = false;
  21898. _tmp$6 = argNum; _tmp$7 = i + wid >> 0; _tmp$8 = true; newArgNum = _tmp$6; newi = _tmp$7; found = _tmp$8;
  21899. return [newArgNum, newi, found];
  21900. };
  21901. pp.prototype.argNumber = function(argNum, format, i, numArgs) { return this.$val.argNumber(argNum, format, i, numArgs); };
  21902. pp.ptr.prototype.doPrintf = function(format, a) {
  21903. var $ptr, _r$2, _r$3, _r$4, _r$5, _ref, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, _tuple$6, _tuple$7, a, afterIndex, arg, arg$1, argNum, c, end, format, i, lasti, p, w, $s, $r;
  21904. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _ref = $f._ref; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; _tuple$4 = $f._tuple$4; _tuple$5 = $f._tuple$5; _tuple$6 = $f._tuple$6; _tuple$7 = $f._tuple$7; a = $f.a; afterIndex = $f.afterIndex; arg = $f.arg; arg$1 = $f.arg$1; argNum = $f.argNum; c = $f.c; end = $f.end; format = $f.format; i = $f.i; lasti = $f.lasti; p = $f.p; w = $f.w; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  21905. p = this;
  21906. end = format.length;
  21907. argNum = 0;
  21908. afterIndex = false;
  21909. p.reordered = false;
  21910. i = 0;
  21911. /* while (true) { */ case 1:
  21912. /* if (!(i < end)) { break; } */ if(!(i < end)) { $s = 2; continue; }
  21913. p.goodArgNum = true;
  21914. lasti = i;
  21915. while (true) {
  21916. if (!(i < end && !((format.charCodeAt(i) === 37)))) { break; }
  21917. i = i + (1) >> 0;
  21918. }
  21919. if (i > lasti) {
  21920. (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString(format.substring(lasti, i));
  21921. }
  21922. if (i >= end) {
  21923. /* break; */ $s = 2; continue;
  21924. }
  21925. i = i + (1) >> 0;
  21926. p.fmt.clearflags();
  21927. F:
  21928. while (true) {
  21929. if (!(i < end)) { break; }
  21930. _ref = format.charCodeAt(i);
  21931. if (_ref === 35) {
  21932. p.fmt.fmtFlags.sharp = true;
  21933. } else if (_ref === 48) {
  21934. p.fmt.fmtFlags.zero = true;
  21935. } else if (_ref === 43) {
  21936. p.fmt.fmtFlags.plus = true;
  21937. } else if (_ref === 45) {
  21938. p.fmt.fmtFlags.minus = true;
  21939. } else if (_ref === 32) {
  21940. p.fmt.fmtFlags.space = true;
  21941. } else {
  21942. break F;
  21943. }
  21944. i = i + (1) >> 0;
  21945. }
  21946. _tuple = p.argNumber(argNum, format, i, a.$length); argNum = _tuple[0]; i = _tuple[1]; afterIndex = _tuple[2];
  21947. if (i < end && (format.charCodeAt(i) === 42)) {
  21948. i = i + (1) >> 0;
  21949. _tuple$1 = intFromArg(a, argNum); p.fmt.wid = _tuple$1[0]; p.fmt.fmtFlags.widPresent = _tuple$1[1]; argNum = _tuple$1[2];
  21950. if (!p.fmt.fmtFlags.widPresent) {
  21951. (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).Write(badWidthBytes);
  21952. }
  21953. afterIndex = false;
  21954. } else {
  21955. _tuple$2 = parsenum(format, i, end); p.fmt.wid = _tuple$2[0]; p.fmt.fmtFlags.widPresent = _tuple$2[1]; i = _tuple$2[2];
  21956. if (afterIndex && p.fmt.fmtFlags.widPresent) {
  21957. p.goodArgNum = false;
  21958. }
  21959. }
  21960. if ((i + 1 >> 0) < end && (format.charCodeAt(i) === 46)) {
  21961. i = i + (1) >> 0;
  21962. if (afterIndex) {
  21963. p.goodArgNum = false;
  21964. }
  21965. _tuple$3 = p.argNumber(argNum, format, i, a.$length); argNum = _tuple$3[0]; i = _tuple$3[1]; afterIndex = _tuple$3[2];
  21966. if (format.charCodeAt(i) === 42) {
  21967. i = i + (1) >> 0;
  21968. _tuple$4 = intFromArg(a, argNum); p.fmt.prec = _tuple$4[0]; p.fmt.fmtFlags.precPresent = _tuple$4[1]; argNum = _tuple$4[2];
  21969. if (!p.fmt.fmtFlags.precPresent) {
  21970. (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).Write(badPrecBytes);
  21971. }
  21972. afterIndex = false;
  21973. } else {
  21974. _tuple$5 = parsenum(format, i, end); p.fmt.prec = _tuple$5[0]; p.fmt.fmtFlags.precPresent = _tuple$5[1]; i = _tuple$5[2];
  21975. if (!p.fmt.fmtFlags.precPresent) {
  21976. p.fmt.prec = 0;
  21977. p.fmt.fmtFlags.precPresent = true;
  21978. }
  21979. }
  21980. }
  21981. if (!afterIndex) {
  21982. _tuple$6 = p.argNumber(argNum, format, i, a.$length); argNum = _tuple$6[0]; i = _tuple$6[1]; afterIndex = _tuple$6[2];
  21983. }
  21984. /* */ if (i >= end) { $s = 3; continue; }
  21985. /* */ $s = 4; continue;
  21986. /* if (i >= end) { */ case 3:
  21987. (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).Write(noVerbBytes);
  21988. /* continue; */ $s = 1; continue;
  21989. /* } */ case 4:
  21990. _tuple$7 = utf8.DecodeRuneInString(format.substring(i)); c = _tuple$7[0]; w = _tuple$7[1];
  21991. i = i + (w) >> 0;
  21992. /* */ if (c === 37) { $s = 5; continue; }
  21993. /* */ $s = 6; continue;
  21994. /* if (c === 37) { */ case 5:
  21995. (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(37);
  21996. /* continue; */ $s = 1; continue;
  21997. /* } */ case 6:
  21998. /* */ if (!p.goodArgNum) { $s = 7; continue; }
  21999. /* */ if (argNum >= a.$length) { $s = 8; continue; }
  22000. /* */ $s = 9; continue;
  22001. /* if (!p.goodArgNum) { */ case 7:
  22002. (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).Write(percentBangBytes);
  22003. p.add(c);
  22004. (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).Write(badIndexBytes);
  22005. /* continue; */ $s = 1; continue;
  22006. $s = 9; continue;
  22007. /* } else if (argNum >= a.$length) { */ case 8:
  22008. (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).Write(percentBangBytes);
  22009. p.add(c);
  22010. (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).Write(missingBytes);
  22011. /* continue; */ $s = 1; continue;
  22012. /* } */ case 9:
  22013. arg = ((argNum < 0 || argNum >= a.$length) ? $throwRuntimeError("index out of range") : a.$array[a.$offset + argNum]);
  22014. argNum = argNum + (1) >> 0;
  22015. if (c === 118) {
  22016. if (p.fmt.fmtFlags.sharp) {
  22017. p.fmt.fmtFlags.sharp = false;
  22018. p.fmt.fmtFlags.sharpV = true;
  22019. }
  22020. if (p.fmt.fmtFlags.plus) {
  22021. p.fmt.fmtFlags.plus = false;
  22022. p.fmt.fmtFlags.plusV = true;
  22023. }
  22024. }
  22025. _r$2 = p.printArg(arg, c, 0); /* */ $s = 10; case 10: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  22026. _r$2;
  22027. /* } */ $s = 1; continue; case 2:
  22028. /* */ if (!p.reordered && argNum < a.$length) { $s = 11; continue; }
  22029. /* */ $s = 12; continue;
  22030. /* if (!p.reordered && argNum < a.$length) { */ case 11:
  22031. (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).Write(extraBytes);
  22032. /* while (true) { */ case 13:
  22033. /* if (!(argNum < a.$length)) { break; } */ if(!(argNum < a.$length)) { $s = 14; continue; }
  22034. arg$1 = ((argNum < 0 || argNum >= a.$length) ? $throwRuntimeError("index out of range") : a.$array[a.$offset + argNum]);
  22035. /* */ if (!($interfaceIsEqual(arg$1, $ifaceNil))) { $s = 15; continue; }
  22036. /* */ $s = 16; continue;
  22037. /* if (!($interfaceIsEqual(arg$1, $ifaceNil))) { */ case 15:
  22038. _r$3 = reflect.TypeOf(arg$1).String(); /* */ $s = 17; case 17: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  22039. _r$4 = (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteString(_r$3); /* */ $s = 18; case 18: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
  22040. _r$4;
  22041. (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(61);
  22042. /* } */ case 16:
  22043. _r$5 = p.printArg(arg$1, 118, 0); /* */ $s = 19; case 19: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
  22044. _r$5;
  22045. if ((argNum + 1 >> 0) < a.$length) {
  22046. (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).Write(commaSpaceBytes);
  22047. }
  22048. argNum = argNum + (1) >> 0;
  22049. /* } */ $s = 13; continue; case 14:
  22050. (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(41);
  22051. /* } */ case 12:
  22052. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: pp.ptr.prototype.doPrintf }; } $f.$ptr = $ptr; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._ref = _ref; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f._tuple$4 = _tuple$4; $f._tuple$5 = _tuple$5; $f._tuple$6 = _tuple$6; $f._tuple$7 = _tuple$7; $f.a = a; $f.afterIndex = afterIndex; $f.arg = arg; $f.arg$1 = arg$1; $f.argNum = argNum; $f.c = c; $f.end = end; $f.format = format; $f.i = i; $f.lasti = lasti; $f.p = p; $f.w = w; $f.$s = $s; $f.$r = $r; return $f;
  22053. };
  22054. pp.prototype.doPrintf = function(format, a) { return this.$val.doPrintf(format, a); };
  22055. pp.ptr.prototype.doPrint = function(a, addspace, addnewline) {
  22056. var $ptr, _r$2, _r$3, _v, a, addnewline, addspace, arg, argNum, isString, p, prevString, $s, $r;
  22057. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r$2 = $f._r$2; _r$3 = $f._r$3; _v = $f._v; a = $f.a; addnewline = $f.addnewline; addspace = $f.addspace; arg = $f.arg; argNum = $f.argNum; isString = $f.isString; p = $f.p; prevString = $f.prevString; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  22058. p = this;
  22059. prevString = false;
  22060. argNum = 0;
  22061. /* while (true) { */ case 1:
  22062. /* if (!(argNum < a.$length)) { break; } */ if(!(argNum < a.$length)) { $s = 2; continue; }
  22063. p.fmt.clearflags();
  22064. arg = ((argNum < 0 || argNum >= a.$length) ? $throwRuntimeError("index out of range") : a.$array[a.$offset + argNum]);
  22065. /* */ if (argNum > 0) { $s = 3; continue; }
  22066. /* */ $s = 4; continue;
  22067. /* if (argNum > 0) { */ case 3:
  22068. if (!(!($interfaceIsEqual(arg, $ifaceNil)))) { _v = false; $s = 5; continue s; }
  22069. _r$2 = reflect.TypeOf(arg).Kind(); /* */ $s = 6; case 6: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  22070. _v = _r$2 === 24; case 5:
  22071. isString = _v;
  22072. if (addspace || !isString && !prevString) {
  22073. (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(32);
  22074. }
  22075. /* } */ case 4:
  22076. _r$3 = p.printArg(arg, 118, 0); /* */ $s = 7; case 7: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  22077. prevString = _r$3;
  22078. argNum = argNum + (1) >> 0;
  22079. /* } */ $s = 1; continue; case 2:
  22080. if (addnewline) {
  22081. (p.$ptr_buf || (p.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, p))).WriteByte(10);
  22082. }
  22083. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: pp.ptr.prototype.doPrint }; } $f.$ptr = $ptr; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._v = _v; $f.a = a; $f.addnewline = addnewline; $f.addspace = addspace; $f.arg = arg; $f.argNum = argNum; $f.isString = isString; $f.p = p; $f.prevString = prevString; $f.$s = $s; $f.$r = $r; return $f;
  22084. };
  22085. pp.prototype.doPrint = function(a, addspace, addnewline) { return this.$val.doPrint(a, addspace, addnewline); };
  22086. ss.ptr.prototype.Read = function(buf) {
  22087. var $ptr, _tmp, _tmp$1, buf, err, n, s;
  22088. n = 0;
  22089. err = $ifaceNil;
  22090. s = this;
  22091. _tmp = 0; _tmp$1 = errors.New("ScanState's Read should not be called. Use ReadRune"); n = _tmp; err = _tmp$1;
  22092. return [n, err];
  22093. };
  22094. ss.prototype.Read = function(buf) { return this.$val.Read(buf); };
  22095. ss.ptr.prototype.ReadRune = function() {
  22096. var $ptr, _r$2, _tuple, err, r, s, size, $s, $r;
  22097. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r$2 = $f._r$2; _tuple = $f._tuple; err = $f.err; r = $f.r; s = $f.s; size = $f.size; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  22098. r = 0;
  22099. size = 0;
  22100. err = $ifaceNil;
  22101. s = this;
  22102. if (s.peekRune >= 0) {
  22103. s.count = s.count + (1) >> 0;
  22104. r = s.peekRune;
  22105. size = utf8.RuneLen(r);
  22106. s.prevRune = r;
  22107. s.peekRune = -1;
  22108. return [r, size, err];
  22109. }
  22110. if (s.atEOF || s.ssave.nlIsEnd && (s.prevRune === 10) || s.count >= s.ssave.argLimit) {
  22111. err = io.EOF;
  22112. return [r, size, err];
  22113. }
  22114. _r$2 = s.rr.ReadRune(); /* */ $s = 1; case 1: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  22115. _tuple = _r$2; r = _tuple[0]; size = _tuple[1]; err = _tuple[2];
  22116. if ($interfaceIsEqual(err, $ifaceNil)) {
  22117. s.count = s.count + (1) >> 0;
  22118. s.prevRune = r;
  22119. } else if ($interfaceIsEqual(err, io.EOF)) {
  22120. s.atEOF = true;
  22121. }
  22122. return [r, size, err];
  22123. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: ss.ptr.prototype.ReadRune }; } $f.$ptr = $ptr; $f._r$2 = _r$2; $f._tuple = _tuple; $f.err = err; $f.r = r; $f.s = s; $f.size = size; $f.$s = $s; $f.$r = $r; return $f;
  22124. };
  22125. ss.prototype.ReadRune = function() { return this.$val.ReadRune(); };
  22126. ss.ptr.prototype.Width = function() {
  22127. var $ptr, _tmp, _tmp$1, _tmp$2, _tmp$3, ok, s, wid;
  22128. wid = 0;
  22129. ok = false;
  22130. s = this;
  22131. if (s.ssave.maxWid === 1073741824) {
  22132. _tmp = 0; _tmp$1 = false; wid = _tmp; ok = _tmp$1;
  22133. return [wid, ok];
  22134. }
  22135. _tmp$2 = s.ssave.maxWid; _tmp$3 = true; wid = _tmp$2; ok = _tmp$3;
  22136. return [wid, ok];
  22137. };
  22138. ss.prototype.Width = function() { return this.$val.Width(); };
  22139. ss.ptr.prototype.getRune = function() {
  22140. var $ptr, _r$2, _tuple, err, r, s, $s, $r;
  22141. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r$2 = $f._r$2; _tuple = $f._tuple; err = $f.err; r = $f.r; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  22142. r = 0;
  22143. s = this;
  22144. _r$2 = s.ReadRune(); /* */ $s = 1; case 1: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  22145. _tuple = _r$2; r = _tuple[0]; err = _tuple[2];
  22146. if (!($interfaceIsEqual(err, $ifaceNil))) {
  22147. if ($interfaceIsEqual(err, io.EOF)) {
  22148. r = -1;
  22149. return r;
  22150. }
  22151. s.error(err);
  22152. }
  22153. return r;
  22154. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: ss.ptr.prototype.getRune }; } $f.$ptr = $ptr; $f._r$2 = _r$2; $f._tuple = _tuple; $f.err = err; $f.r = r; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
  22155. };
  22156. ss.prototype.getRune = function() { return this.$val.getRune(); };
  22157. ss.ptr.prototype.UnreadRune = function() {
  22158. var $ptr, _r$2, _tuple, ok, s, u, $s, $r;
  22159. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r$2 = $f._r$2; _tuple = $f._tuple; ok = $f.ok; s = $f.s; u = $f.u; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  22160. s = this;
  22161. _tuple = $assertType(s.rr, runeUnreader, true); u = _tuple[0]; ok = _tuple[1];
  22162. /* */ if (ok) { $s = 1; continue; }
  22163. /* */ $s = 2; continue;
  22164. /* if (ok) { */ case 1:
  22165. _r$2 = u.UnreadRune(); /* */ $s = 4; case 4: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  22166. _r$2;
  22167. $s = 3; continue;
  22168. /* } else { */ case 2:
  22169. s.peekRune = s.prevRune;
  22170. /* } */ case 3:
  22171. s.prevRune = -1;
  22172. s.count = s.count - (1) >> 0;
  22173. return $ifaceNil;
  22174. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: ss.ptr.prototype.UnreadRune }; } $f.$ptr = $ptr; $f._r$2 = _r$2; $f._tuple = _tuple; $f.ok = ok; $f.s = s; $f.u = u; $f.$s = $s; $f.$r = $r; return $f;
  22175. };
  22176. ss.prototype.UnreadRune = function() { return this.$val.UnreadRune(); };
  22177. ss.ptr.prototype.error = function(err) {
  22178. var $ptr, err, s, x;
  22179. s = this;
  22180. $panic((x = new scanError.ptr(err), new x.constructor.elem(x)));
  22181. };
  22182. ss.prototype.error = function(err) { return this.$val.error(err); };
  22183. ss.ptr.prototype.errorString = function(err) {
  22184. var $ptr, err, s, x;
  22185. s = this;
  22186. $panic((x = new scanError.ptr(errors.New(err)), new x.constructor.elem(x)));
  22187. };
  22188. ss.prototype.errorString = function(err) { return this.$val.errorString(err); };
  22189. ss.ptr.prototype.Token = function(skipSpace, f) {
  22190. var $ptr, _r$2, err, f, s, skipSpace, tok, $s, $deferred, $r;
  22191. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r$2 = $f._r$2; err = $f.err; f = $f.f; s = $f.s; skipSpace = $f.skipSpace; tok = $f.tok; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
  22192. err = [err];
  22193. tok = sliceType.nil;
  22194. err[0] = $ifaceNil;
  22195. s = this;
  22196. $deferred.push([(function(err) { return function() {
  22197. var $ptr, _tuple, e, ok, se;
  22198. e = $recover();
  22199. if (!($interfaceIsEqual(e, $ifaceNil))) {
  22200. _tuple = $assertType(e, scanError, true); se = $clone(_tuple[0], scanError); ok = _tuple[1];
  22201. if (ok) {
  22202. err[0] = se.err;
  22203. } else {
  22204. $panic(e);
  22205. }
  22206. }
  22207. }; })(err), []]);
  22208. if (f === $throwNilPointerError) {
  22209. f = notSpace;
  22210. }
  22211. s.buf = $subslice(s.buf, 0, 0);
  22212. _r$2 = s.token(skipSpace, f); /* */ $s = 1; case 1: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  22213. tok = _r$2;
  22214. return [tok, err[0]];
  22215. /* */ $s = -1; case -1: } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if (!$curGoroutine.asleep) { return [tok, err[0]]; } if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: ss.ptr.prototype.Token }; } $f.$ptr = $ptr; $f._r$2 = _r$2; $f.err = err; $f.f = f; $f.s = s; $f.skipSpace = skipSpace; $f.tok = tok; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
  22216. };
  22217. ss.prototype.Token = function(skipSpace, f) { return this.$val.Token(skipSpace, f); };
  22218. isSpace = function(r) {
  22219. var $ptr, _i, _ref, r, rng, rx;
  22220. if (r >= 65536) {
  22221. return false;
  22222. }
  22223. rx = (r << 16 >>> 16);
  22224. _ref = space;
  22225. _i = 0;
  22226. while (true) {
  22227. if (!(_i < _ref.$length)) { break; }
  22228. rng = $clone(((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]), arrayType);
  22229. if (rx < rng[0]) {
  22230. return false;
  22231. }
  22232. if (rx <= rng[1]) {
  22233. return true;
  22234. }
  22235. _i++;
  22236. }
  22237. return false;
  22238. };
  22239. notSpace = function(r) {
  22240. var $ptr, r;
  22241. return !isSpace(r);
  22242. };
  22243. ss.ptr.prototype.SkipSpace = function() {
  22244. var $ptr, s, $s, $r;
  22245. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  22246. s = this;
  22247. $r = s.skipSpace(false); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  22248. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: ss.ptr.prototype.SkipSpace }; } $f.$ptr = $ptr; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
  22249. };
  22250. ss.prototype.SkipSpace = function() { return this.$val.SkipSpace(); };
  22251. ss.ptr.prototype.free = function(old) {
  22252. var $ptr, old, s;
  22253. s = this;
  22254. old = $clone(old, ssave);
  22255. if (old.validSave) {
  22256. $copy(s.ssave, old, ssave);
  22257. return;
  22258. }
  22259. if (s.buf.$capacity > 1024) {
  22260. return;
  22261. }
  22262. s.buf = $subslice(s.buf, 0, 0);
  22263. s.rr = $ifaceNil;
  22264. ssFree.Put(s);
  22265. };
  22266. ss.prototype.free = function(old) { return this.$val.free(old); };
  22267. ss.ptr.prototype.skipSpace = function(stopAtNewline) {
  22268. var $ptr, _r$2, _r$3, _r$4, _v, r, s, stopAtNewline, $s, $r;
  22269. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _v = $f._v; r = $f.r; s = $f.s; stopAtNewline = $f.stopAtNewline; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  22270. s = this;
  22271. /* while (true) { */ case 1:
  22272. _r$2 = s.getRune(); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  22273. r = _r$2;
  22274. if (r === -1) {
  22275. return;
  22276. }
  22277. if (!(r === 13)) { _v = false; $s = 6; continue s; }
  22278. _r$3 = s.peek("\n"); /* */ $s = 7; case 7: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  22279. _v = _r$3; case 6:
  22280. /* */ if (_v) { $s = 4; continue; }
  22281. /* */ $s = 5; continue;
  22282. /* if (_v) { */ case 4:
  22283. /* continue; */ $s = 1; continue;
  22284. /* } */ case 5:
  22285. /* */ if (r === 10) { $s = 8; continue; }
  22286. /* */ $s = 9; continue;
  22287. /* if (r === 10) { */ case 8:
  22288. if (stopAtNewline) {
  22289. /* break; */ $s = 2; continue;
  22290. }
  22291. if (s.ssave.nlIsSpace) {
  22292. /* continue; */ $s = 1; continue;
  22293. }
  22294. s.errorString("unexpected newline");
  22295. return;
  22296. /* } */ case 9:
  22297. /* */ if (!isSpace(r)) { $s = 10; continue; }
  22298. /* */ $s = 11; continue;
  22299. /* if (!isSpace(r)) { */ case 10:
  22300. _r$4 = s.UnreadRune(); /* */ $s = 12; case 12: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
  22301. _r$4;
  22302. /* break; */ $s = 2; continue;
  22303. /* } */ case 11:
  22304. /* } */ $s = 1; continue; case 2:
  22305. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: ss.ptr.prototype.skipSpace }; } $f.$ptr = $ptr; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._v = _v; $f.r = r; $f.s = s; $f.stopAtNewline = stopAtNewline; $f.$s = $s; $f.$r = $r; return $f;
  22306. };
  22307. ss.prototype.skipSpace = function(stopAtNewline) { return this.$val.skipSpace(stopAtNewline); };
  22308. ss.ptr.prototype.token = function(skipSpace, f) {
  22309. var $ptr, _r$2, _r$3, _r$4, f, r, s, skipSpace, x, $s, $r;
  22310. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; f = $f.f; r = $f.r; s = $f.s; skipSpace = $f.skipSpace; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  22311. s = this;
  22312. /* */ if (skipSpace) { $s = 1; continue; }
  22313. /* */ $s = 2; continue;
  22314. /* if (skipSpace) { */ case 1:
  22315. $r = s.skipSpace(false); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  22316. /* } */ case 2:
  22317. /* while (true) { */ case 4:
  22318. _r$2 = s.getRune(); /* */ $s = 6; case 6: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  22319. r = _r$2;
  22320. if (r === -1) {
  22321. /* break; */ $s = 5; continue;
  22322. }
  22323. _r$3 = f(r); /* */ $s = 9; case 9: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  22324. /* */ if (!_r$3) { $s = 7; continue; }
  22325. /* */ $s = 8; continue;
  22326. /* if (!_r$3) { */ case 7:
  22327. _r$4 = s.UnreadRune(); /* */ $s = 10; case 10: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
  22328. _r$4;
  22329. /* break; */ $s = 5; continue;
  22330. /* } */ case 8:
  22331. (s.$ptr_buf || (s.$ptr_buf = new ptrType$1(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, s))).WriteRune(r);
  22332. /* } */ $s = 4; continue; case 5:
  22333. return (x = s.buf, $subslice(new sliceType(x.$array), x.$offset, x.$offset + x.$length));
  22334. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: ss.ptr.prototype.token }; } $f.$ptr = $ptr; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f.f = f; $f.r = r; $f.s = s; $f.skipSpace = skipSpace; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
  22335. };
  22336. ss.prototype.token = function(skipSpace, f) { return this.$val.token(skipSpace, f); };
  22337. indexRune = function(s, r) {
  22338. var $ptr, _i, _ref, _rune, c, i, r, s;
  22339. _ref = s;
  22340. _i = 0;
  22341. while (true) {
  22342. if (!(_i < _ref.length)) { break; }
  22343. _rune = $decodeRune(_ref, _i);
  22344. i = _i;
  22345. c = _rune[0];
  22346. if (c === r) {
  22347. return i;
  22348. }
  22349. _i += _rune[1];
  22350. }
  22351. return -1;
  22352. };
  22353. ss.ptr.prototype.peek = function(ok) {
  22354. var $ptr, _r$2, _r$3, ok, r, s, $s, $r;
  22355. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r$2 = $f._r$2; _r$3 = $f._r$3; ok = $f.ok; r = $f.r; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  22356. s = this;
  22357. _r$2 = s.getRune(); /* */ $s = 1; case 1: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  22358. r = _r$2;
  22359. /* */ if (!((r === -1))) { $s = 2; continue; }
  22360. /* */ $s = 3; continue;
  22361. /* if (!((r === -1))) { */ case 2:
  22362. _r$3 = s.UnreadRune(); /* */ $s = 4; case 4: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  22363. _r$3;
  22364. /* } */ case 3:
  22365. return indexRune(ok, r) >= 0;
  22366. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: ss.ptr.prototype.peek }; } $f.$ptr = $ptr; $f._r$2 = _r$2; $f._r$3 = _r$3; $f.ok = ok; $f.r = r; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
  22367. };
  22368. ss.prototype.peek = function(ok) { return this.$val.peek(ok); };
  22369. ptrType$25.methods = [{prop: "clearflags", name: "clearflags", pkg: "fmt", typ: $funcType([], [], false)}, {prop: "init", name: "init", pkg: "fmt", typ: $funcType([ptrType$1], [], false)}, {prop: "computePadding", name: "computePadding", pkg: "fmt", typ: $funcType([$Int], [sliceType, $Int, $Int], false)}, {prop: "writePadding", name: "writePadding", pkg: "fmt", typ: $funcType([$Int, sliceType], [], false)}, {prop: "pad", name: "pad", pkg: "fmt", typ: $funcType([sliceType], [], false)}, {prop: "padString", name: "padString", pkg: "fmt", typ: $funcType([$String], [], false)}, {prop: "fmt_boolean", name: "fmt_boolean", pkg: "fmt", typ: $funcType([$Bool], [], false)}, {prop: "integer", name: "integer", pkg: "fmt", typ: $funcType([$Int64, $Uint64, $Bool, $String], [], false)}, {prop: "truncate", name: "truncate", pkg: "fmt", typ: $funcType([$String], [$String], false)}, {prop: "fmt_s", name: "fmt_s", pkg: "fmt", typ: $funcType([$String], [], false)}, {prop: "fmt_sbx", name: "fmt_sbx", pkg: "fmt", typ: $funcType([$String, sliceType, $String], [], false)}, {prop: "fmt_sx", name: "fmt_sx", pkg: "fmt", typ: $funcType([$String, $String], [], false)}, {prop: "fmt_bx", name: "fmt_bx", pkg: "fmt", typ: $funcType([sliceType, $String], [], false)}, {prop: "fmt_q", name: "fmt_q", pkg: "fmt", typ: $funcType([$String], [], false)}, {prop: "fmt_qc", name: "fmt_qc", pkg: "fmt", typ: $funcType([$Int64], [], false)}, {prop: "formatFloat", name: "formatFloat", pkg: "fmt", typ: $funcType([$Float64, $Uint8, $Int, $Int], [], false)}, {prop: "fmt_e64", name: "fmt_e64", pkg: "fmt", typ: $funcType([$Float64], [], false)}, {prop: "fmt_E64", name: "fmt_E64", pkg: "fmt", typ: $funcType([$Float64], [], false)}, {prop: "fmt_f64", name: "fmt_f64", pkg: "fmt", typ: $funcType([$Float64], [], false)}, {prop: "fmt_g64", name: "fmt_g64", pkg: "fmt", typ: $funcType([$Float64], [], false)}, {prop: "fmt_G64", name: "fmt_G64", pkg: "fmt", typ: $funcType([$Float64], [], false)}, {prop: "fmt_fb64", name: "fmt_fb64", pkg: "fmt", typ: $funcType([$Float64], [], false)}, {prop: "fmt_e32", name: "fmt_e32", pkg: "fmt", typ: $funcType([$Float32], [], false)}, {prop: "fmt_E32", name: "fmt_E32", pkg: "fmt", typ: $funcType([$Float32], [], false)}, {prop: "fmt_f32", name: "fmt_f32", pkg: "fmt", typ: $funcType([$Float32], [], false)}, {prop: "fmt_g32", name: "fmt_g32", pkg: "fmt", typ: $funcType([$Float32], [], false)}, {prop: "fmt_G32", name: "fmt_G32", pkg: "fmt", typ: $funcType([$Float32], [], false)}, {prop: "fmt_fb32", name: "fmt_fb32", pkg: "fmt", typ: $funcType([$Float32], [], false)}, {prop: "fmt_c64", name: "fmt_c64", pkg: "fmt", typ: $funcType([$Complex64, $Int32], [], false)}, {prop: "fmt_c128", name: "fmt_c128", pkg: "fmt", typ: $funcType([$Complex128, $Int32], [], false)}, {prop: "fmt_complex", name: "fmt_complex", pkg: "fmt", typ: $funcType([$Float64, $Float64, $Int, $Int32], [], false)}];
  22370. ptrType$1.methods = [{prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType], [$Int, $error], false)}, {prop: "WriteString", name: "WriteString", pkg: "", typ: $funcType([$String], [$Int, $error], false)}, {prop: "WriteByte", name: "WriteByte", pkg: "", typ: $funcType([$Uint8], [$error], false)}, {prop: "WriteRune", name: "WriteRune", pkg: "", typ: $funcType([$Int32], [$error], false)}];
  22371. ptrType.methods = [{prop: "free", name: "free", pkg: "fmt", typ: $funcType([], [], false)}, {prop: "Width", name: "Width", pkg: "", typ: $funcType([], [$Int, $Bool], false)}, {prop: "Precision", name: "Precision", pkg: "", typ: $funcType([], [$Int, $Bool], false)}, {prop: "Flag", name: "Flag", pkg: "", typ: $funcType([$Int], [$Bool], false)}, {prop: "add", name: "add", pkg: "fmt", typ: $funcType([$Int32], [], false)}, {prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType], [$Int, $error], false)}, {prop: "unknownType", name: "unknownType", pkg: "fmt", typ: $funcType([reflect.Value], [], false)}, {prop: "badVerb", name: "badVerb", pkg: "fmt", typ: $funcType([$Int32], [], false)}, {prop: "fmtBool", name: "fmtBool", pkg: "fmt", typ: $funcType([$Bool, $Int32], [], false)}, {prop: "fmtC", name: "fmtC", pkg: "fmt", typ: $funcType([$Int64], [], false)}, {prop: "fmtInt64", name: "fmtInt64", pkg: "fmt", typ: $funcType([$Int64, $Int32], [], false)}, {prop: "fmt0x64", name: "fmt0x64", pkg: "fmt", typ: $funcType([$Uint64, $Bool], [], false)}, {prop: "fmtUnicode", name: "fmtUnicode", pkg: "fmt", typ: $funcType([$Int64], [], false)}, {prop: "fmtUint64", name: "fmtUint64", pkg: "fmt", typ: $funcType([$Uint64, $Int32], [], false)}, {prop: "fmtFloat32", name: "fmtFloat32", pkg: "fmt", typ: $funcType([$Float32, $Int32], [], false)}, {prop: "fmtFloat64", name: "fmtFloat64", pkg: "fmt", typ: $funcType([$Float64, $Int32], [], false)}, {prop: "fmtComplex64", name: "fmtComplex64", pkg: "fmt", typ: $funcType([$Complex64, $Int32], [], false)}, {prop: "fmtComplex128", name: "fmtComplex128", pkg: "fmt", typ: $funcType([$Complex128, $Int32], [], false)}, {prop: "fmtString", name: "fmtString", pkg: "fmt", typ: $funcType([$String, $Int32], [], false)}, {prop: "fmtBytes", name: "fmtBytes", pkg: "fmt", typ: $funcType([sliceType, $Int32, reflect.Type, $Int], [], false)}, {prop: "fmtPointer", name: "fmtPointer", pkg: "fmt", typ: $funcType([reflect.Value, $Int32], [], false)}, {prop: "catchPanic", name: "catchPanic", pkg: "fmt", typ: $funcType([$emptyInterface, $Int32], [], false)}, {prop: "clearSpecialFlags", name: "clearSpecialFlags", pkg: "fmt", typ: $funcType([], [$Bool, $Bool], false)}, {prop: "restoreSpecialFlags", name: "restoreSpecialFlags", pkg: "fmt", typ: $funcType([$Bool, $Bool], [], false)}, {prop: "handleMethods", name: "handleMethods", pkg: "fmt", typ: $funcType([$Int32, $Int], [$Bool], false)}, {prop: "printArg", name: "printArg", pkg: "fmt", typ: $funcType([$emptyInterface, $Int32, $Int], [$Bool], false)}, {prop: "printValue", name: "printValue", pkg: "fmt", typ: $funcType([reflect.Value, $Int32, $Int], [$Bool], false)}, {prop: "printReflectValue", name: "printReflectValue", pkg: "fmt", typ: $funcType([reflect.Value, $Int32, $Int], [$Bool], false)}, {prop: "argNumber", name: "argNumber", pkg: "fmt", typ: $funcType([$Int, $String, $Int, $Int], [$Int, $Int, $Bool], false)}, {prop: "doPrintf", name: "doPrintf", pkg: "fmt", typ: $funcType([$String, sliceType$1], [], false)}, {prop: "doPrint", name: "doPrint", pkg: "fmt", typ: $funcType([sliceType$1, $Bool, $Bool], [], false)}];
  22372. ptrType$5.methods = [{prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType], [$Int, $error], false)}, {prop: "ReadRune", name: "ReadRune", pkg: "", typ: $funcType([], [$Int32, $Int, $error], false)}, {prop: "Width", name: "Width", pkg: "", typ: $funcType([], [$Int, $Bool], false)}, {prop: "getRune", name: "getRune", pkg: "fmt", typ: $funcType([], [$Int32], false)}, {prop: "mustReadRune", name: "mustReadRune", pkg: "fmt", typ: $funcType([], [$Int32], false)}, {prop: "UnreadRune", name: "UnreadRune", pkg: "", typ: $funcType([], [$error], false)}, {prop: "error", name: "error", pkg: "fmt", typ: $funcType([$error], [], false)}, {prop: "errorString", name: "errorString", pkg: "fmt", typ: $funcType([$String], [], false)}, {prop: "Token", name: "Token", pkg: "", typ: $funcType([$Bool, funcType], [sliceType, $error], false)}, {prop: "SkipSpace", name: "SkipSpace", pkg: "", typ: $funcType([], [], false)}, {prop: "free", name: "free", pkg: "fmt", typ: $funcType([ssave], [], false)}, {prop: "skipSpace", name: "skipSpace", pkg: "fmt", typ: $funcType([$Bool], [], false)}, {prop: "token", name: "token", pkg: "fmt", typ: $funcType([$Bool, funcType], [sliceType], false)}, {prop: "consume", name: "consume", pkg: "fmt", typ: $funcType([$String, $Bool], [$Bool], false)}, {prop: "peek", name: "peek", pkg: "fmt", typ: $funcType([$String], [$Bool], false)}, {prop: "notEOF", name: "notEOF", pkg: "fmt", typ: $funcType([], [], false)}, {prop: "accept", name: "accept", pkg: "fmt", typ: $funcType([$String], [$Bool], false)}, {prop: "okVerb", name: "okVerb", pkg: "fmt", typ: $funcType([$Int32, $String, $String], [$Bool], false)}, {prop: "scanBool", name: "scanBool", pkg: "fmt", typ: $funcType([$Int32], [$Bool], false)}, {prop: "getBase", name: "getBase", pkg: "fmt", typ: $funcType([$Int32], [$Int, $String], false)}, {prop: "scanNumber", name: "scanNumber", pkg: "fmt", typ: $funcType([$String, $Bool], [$String], false)}, {prop: "scanRune", name: "scanRune", pkg: "fmt", typ: $funcType([$Int], [$Int64], false)}, {prop: "scanBasePrefix", name: "scanBasePrefix", pkg: "fmt", typ: $funcType([], [$Int, $String, $Bool], false)}, {prop: "scanInt", name: "scanInt", pkg: "fmt", typ: $funcType([$Int32, $Int], [$Int64], false)}, {prop: "scanUint", name: "scanUint", pkg: "fmt", typ: $funcType([$Int32, $Int], [$Uint64], false)}, {prop: "floatToken", name: "floatToken", pkg: "fmt", typ: $funcType([], [$String], false)}, {prop: "complexTokens", name: "complexTokens", pkg: "fmt", typ: $funcType([], [$String, $String], false)}, {prop: "convertFloat", name: "convertFloat", pkg: "fmt", typ: $funcType([$String, $Int], [$Float64], false)}, {prop: "scanComplex", name: "scanComplex", pkg: "fmt", typ: $funcType([$Int32, $Int], [$Complex128], false)}, {prop: "convertString", name: "convertString", pkg: "fmt", typ: $funcType([$Int32], [$String], false)}, {prop: "quotedString", name: "quotedString", pkg: "fmt", typ: $funcType([], [$String], false)}, {prop: "hexDigit", name: "hexDigit", pkg: "fmt", typ: $funcType([$Int32], [$Int], false)}, {prop: "hexByte", name: "hexByte", pkg: "fmt", typ: $funcType([], [$Uint8, $Bool], false)}, {prop: "hexString", name: "hexString", pkg: "fmt", typ: $funcType([], [$String], false)}, {prop: "scanOne", name: "scanOne", pkg: "fmt", typ: $funcType([$Int32, $emptyInterface], [], false)}, {prop: "doScan", name: "doScan", pkg: "fmt", typ: $funcType([sliceType$1], [$Int, $error], false)}, {prop: "advance", name: "advance", pkg: "fmt", typ: $funcType([$String], [$Int], false)}, {prop: "doScanf", name: "doScanf", pkg: "fmt", typ: $funcType([$String, sliceType$1], [$Int, $error], false)}];
  22373. fmtFlags.init([{prop: "widPresent", name: "widPresent", pkg: "fmt", typ: $Bool, tag: ""}, {prop: "precPresent", name: "precPresent", pkg: "fmt", typ: $Bool, tag: ""}, {prop: "minus", name: "minus", pkg: "fmt", typ: $Bool, tag: ""}, {prop: "plus", name: "plus", pkg: "fmt", typ: $Bool, tag: ""}, {prop: "sharp", name: "sharp", pkg: "fmt", typ: $Bool, tag: ""}, {prop: "space", name: "space", pkg: "fmt", typ: $Bool, tag: ""}, {prop: "unicode", name: "unicode", pkg: "fmt", typ: $Bool, tag: ""}, {prop: "uniQuote", name: "uniQuote", pkg: "fmt", typ: $Bool, tag: ""}, {prop: "zero", name: "zero", pkg: "fmt", typ: $Bool, tag: ""}, {prop: "plusV", name: "plusV", pkg: "fmt", typ: $Bool, tag: ""}, {prop: "sharpV", name: "sharpV", pkg: "fmt", typ: $Bool, tag: ""}]);
  22374. fmt.init([{prop: "intbuf", name: "intbuf", pkg: "fmt", typ: arrayType$2, tag: ""}, {prop: "buf", name: "buf", pkg: "fmt", typ: ptrType$1, tag: ""}, {prop: "wid", name: "wid", pkg: "fmt", typ: $Int, tag: ""}, {prop: "prec", name: "prec", pkg: "fmt", typ: $Int, tag: ""}, {prop: "fmtFlags", name: "", pkg: "fmt", typ: fmtFlags, tag: ""}]);
  22375. State.init([{prop: "Flag", name: "Flag", pkg: "", typ: $funcType([$Int], [$Bool], false)}, {prop: "Precision", name: "Precision", pkg: "", typ: $funcType([], [$Int, $Bool], false)}, {prop: "Width", name: "Width", pkg: "", typ: $funcType([], [$Int, $Bool], false)}, {prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType], [$Int, $error], false)}]);
  22376. Formatter.init([{prop: "Format", name: "Format", pkg: "", typ: $funcType([State, $Int32], [], false)}]);
  22377. Stringer.init([{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}]);
  22378. GoStringer.init([{prop: "GoString", name: "GoString", pkg: "", typ: $funcType([], [$String], false)}]);
  22379. buffer.init($Uint8);
  22380. pp.init([{prop: "n", name: "n", pkg: "fmt", typ: $Int, tag: ""}, {prop: "panicking", name: "panicking", pkg: "fmt", typ: $Bool, tag: ""}, {prop: "erroring", name: "erroring", pkg: "fmt", typ: $Bool, tag: ""}, {prop: "buf", name: "buf", pkg: "fmt", typ: buffer, tag: ""}, {prop: "arg", name: "arg", pkg: "fmt", typ: $emptyInterface, tag: ""}, {prop: "value", name: "value", pkg: "fmt", typ: reflect.Value, tag: ""}, {prop: "reordered", name: "reordered", pkg: "fmt", typ: $Bool, tag: ""}, {prop: "goodArgNum", name: "goodArgNum", pkg: "fmt", typ: $Bool, tag: ""}, {prop: "runeBuf", name: "runeBuf", pkg: "fmt", typ: arrayType$1, tag: ""}, {prop: "fmt", name: "fmt", pkg: "fmt", typ: fmt, tag: ""}]);
  22381. runeUnreader.init([{prop: "UnreadRune", name: "UnreadRune", pkg: "", typ: $funcType([], [$error], false)}]);
  22382. ScanState.init([{prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType], [$Int, $error], false)}, {prop: "ReadRune", name: "ReadRune", pkg: "", typ: $funcType([], [$Int32, $Int, $error], false)}, {prop: "SkipSpace", name: "SkipSpace", pkg: "", typ: $funcType([], [], false)}, {prop: "Token", name: "Token", pkg: "", typ: $funcType([$Bool, funcType], [sliceType, $error], false)}, {prop: "UnreadRune", name: "UnreadRune", pkg: "", typ: $funcType([], [$error], false)}, {prop: "Width", name: "Width", pkg: "", typ: $funcType([], [$Int, $Bool], false)}]);
  22383. scanError.init([{prop: "err", name: "err", pkg: "fmt", typ: $error, tag: ""}]);
  22384. ss.init([{prop: "rr", name: "rr", pkg: "fmt", typ: io.RuneReader, tag: ""}, {prop: "buf", name: "buf", pkg: "fmt", typ: buffer, tag: ""}, {prop: "peekRune", name: "peekRune", pkg: "fmt", typ: $Int32, tag: ""}, {prop: "prevRune", name: "prevRune", pkg: "fmt", typ: $Int32, tag: ""}, {prop: "count", name: "count", pkg: "fmt", typ: $Int, tag: ""}, {prop: "atEOF", name: "atEOF", pkg: "fmt", typ: $Bool, tag: ""}, {prop: "ssave", name: "", pkg: "fmt", typ: ssave, tag: ""}]);
  22385. ssave.init([{prop: "validSave", name: "validSave", pkg: "fmt", typ: $Bool, tag: ""}, {prop: "nlIsEnd", name: "nlIsEnd", pkg: "fmt", typ: $Bool, tag: ""}, {prop: "nlIsSpace", name: "nlIsSpace", pkg: "fmt", typ: $Bool, tag: ""}, {prop: "argLimit", name: "argLimit", pkg: "fmt", typ: $Int, tag: ""}, {prop: "limit", name: "limit", pkg: "fmt", typ: $Int, tag: ""}, {prop: "maxWid", name: "maxWid", pkg: "fmt", typ: $Int, tag: ""}]);
  22386. $init = function() {
  22387. $pkg.$init = function() {};
  22388. /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  22389. $r = errors.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  22390. $r = io.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  22391. $r = math.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  22392. $r = os.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  22393. $r = reflect.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  22394. $r = strconv.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  22395. $r = sync.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  22396. $r = utf8.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  22397. padZeroBytes = $makeSlice(sliceType, 65);
  22398. padSpaceBytes = $makeSlice(sliceType, 65);
  22399. trueBytes = new sliceType($stringToBytes("true"));
  22400. falseBytes = new sliceType($stringToBytes("false"));
  22401. commaSpaceBytes = new sliceType($stringToBytes(", "));
  22402. nilAngleBytes = new sliceType($stringToBytes("<nil>"));
  22403. nilParenBytes = new sliceType($stringToBytes("(nil)"));
  22404. nilBytes = new sliceType($stringToBytes("nil"));
  22405. mapBytes = new sliceType($stringToBytes("map["));
  22406. percentBangBytes = new sliceType($stringToBytes("%!"));
  22407. missingBytes = new sliceType($stringToBytes("(MISSING)"));
  22408. badIndexBytes = new sliceType($stringToBytes("(BADINDEX)"));
  22409. panicBytes = new sliceType($stringToBytes("(PANIC="));
  22410. extraBytes = new sliceType($stringToBytes("%!(EXTRA "));
  22411. irparenBytes = new sliceType($stringToBytes("i)"));
  22412. bytesBytes = new sliceType($stringToBytes("[]byte{"));
  22413. badWidthBytes = new sliceType($stringToBytes("%!(BADWIDTH)"));
  22414. badPrecBytes = new sliceType($stringToBytes("%!(BADPREC)"));
  22415. noVerbBytes = new sliceType($stringToBytes("%!(NOVERB)"));
  22416. ppFree = new sync.Pool.ptr(0, 0, sliceType$1.nil, (function() {
  22417. var $ptr;
  22418. return new pp.ptr();
  22419. }));
  22420. _r = reflect.TypeOf(new $Int(0)).Bits(); /* */ $s = 9; case 9: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  22421. intBits = _r;
  22422. _r$1 = reflect.TypeOf(new $Uintptr(0)).Bits(); /* */ $s = 10; case 10: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  22423. uintptrBits = _r$1;
  22424. byteType = reflect.TypeOf(new $Uint8(0));
  22425. space = new sliceType$2([$toNativeArray($kindUint16, [9, 13]), $toNativeArray($kindUint16, [32, 32]), $toNativeArray($kindUint16, [133, 133]), $toNativeArray($kindUint16, [160, 160]), $toNativeArray($kindUint16, [5760, 5760]), $toNativeArray($kindUint16, [8192, 8202]), $toNativeArray($kindUint16, [8232, 8233]), $toNativeArray($kindUint16, [8239, 8239]), $toNativeArray($kindUint16, [8287, 8287]), $toNativeArray($kindUint16, [12288, 12288])]);
  22426. ssFree = new sync.Pool.ptr(0, 0, sliceType$1.nil, (function() {
  22427. var $ptr;
  22428. return new ss.ptr();
  22429. }));
  22430. complexError = errors.New("syntax error scanning complex number");
  22431. boolError = errors.New("syntax error scanning boolean");
  22432. init();
  22433. /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
  22434. };
  22435. $pkg.$init = $init;
  22436. return $pkg;
  22437. })();
  22438. $packages["log"] = (function() {
  22439. var $pkg = {}, $init, fmt, nosync, io, os, runtime, time, Logger, sliceType, arrayType, ptrType, sliceType$1, ptrType$1, std, New, itoa, Printf, Println;
  22440. fmt = $packages["fmt"];
  22441. nosync = $packages["github.com/gopherjs/gopherjs/nosync"];
  22442. io = $packages["io"];
  22443. os = $packages["os"];
  22444. runtime = $packages["runtime"];
  22445. time = $packages["time"];
  22446. Logger = $pkg.Logger = $newType(0, $kindStruct, "log.Logger", "Logger", "log", function(mu_, prefix_, flag_, out_, buf_) {
  22447. this.$val = this;
  22448. if (arguments.length === 0) {
  22449. this.mu = new nosync.Mutex.ptr();
  22450. this.prefix = "";
  22451. this.flag = 0;
  22452. this.out = $ifaceNil;
  22453. this.buf = sliceType.nil;
  22454. return;
  22455. }
  22456. this.mu = mu_;
  22457. this.prefix = prefix_;
  22458. this.flag = flag_;
  22459. this.out = out_;
  22460. this.buf = buf_;
  22461. });
  22462. sliceType = $sliceType($Uint8);
  22463. arrayType = $arrayType($Uint8, 32);
  22464. ptrType = $ptrType(sliceType);
  22465. sliceType$1 = $sliceType($emptyInterface);
  22466. ptrType$1 = $ptrType(Logger);
  22467. New = function(out, prefix, flag) {
  22468. var $ptr, flag, out, prefix;
  22469. return new Logger.ptr(new nosync.Mutex.ptr(), prefix, flag, out, sliceType.nil);
  22470. };
  22471. $pkg.New = New;
  22472. itoa = function(buf, i, wid) {
  22473. var $ptr, _q, _r, b, bp, buf, i, u, wid;
  22474. u = (i >>> 0);
  22475. if ((u === 0) && wid <= 1) {
  22476. buf.$set($append(buf.$get(), 48));
  22477. return;
  22478. }
  22479. b = $clone(arrayType.zero(), arrayType);
  22480. bp = 32;
  22481. while (true) {
  22482. if (!(u > 0 || wid > 0)) { break; }
  22483. bp = bp - (1) >> 0;
  22484. wid = wid - (1) >> 0;
  22485. ((bp < 0 || bp >= b.length) ? $throwRuntimeError("index out of range") : b[bp] = ((_r = u % 10, _r === _r ? _r : $throwRuntimeError("integer divide by zero")) << 24 >>> 24) + 48 << 24 >>> 24);
  22486. u = (_q = u / (10), (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >>> 0 : $throwRuntimeError("integer divide by zero"));
  22487. }
  22488. buf.$set($appendSlice(buf.$get(), $subslice(new sliceType(b), bp)));
  22489. };
  22490. Logger.ptr.prototype.formatHeader = function(buf, t, file, line) {
  22491. var $ptr, _q, _r, _r$1, _tuple, _tuple$1, buf, day, file, hour, i, l, line, min, month, sec, short$1, t, year, $s, $r;
  22492. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _q = $f._q; _r = $f._r; _r$1 = $f._r$1; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; buf = $f.buf; day = $f.day; file = $f.file; hour = $f.hour; i = $f.i; l = $f.l; line = $f.line; min = $f.min; month = $f.month; sec = $f.sec; short$1 = $f.short$1; t = $f.t; year = $f.year; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  22493. l = this;
  22494. t = $clone(t, time.Time);
  22495. buf.$set($appendSlice(buf.$get(), new sliceType($stringToBytes(l.prefix))));
  22496. /* */ if (!(((l.flag & 7) === 0))) { $s = 1; continue; }
  22497. /* */ $s = 2; continue;
  22498. /* if (!(((l.flag & 7) === 0))) { */ case 1:
  22499. /* */ if (!(((l.flag & 1) === 0))) { $s = 3; continue; }
  22500. /* */ $s = 4; continue;
  22501. /* if (!(((l.flag & 1) === 0))) { */ case 3:
  22502. _r = t.Date(); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  22503. _tuple = _r; year = _tuple[0]; month = _tuple[1]; day = _tuple[2];
  22504. itoa(buf, year, 4);
  22505. buf.$set($append(buf.$get(), 47));
  22506. itoa(buf, (month >> 0), 2);
  22507. buf.$set($append(buf.$get(), 47));
  22508. itoa(buf, day, 2);
  22509. buf.$set($append(buf.$get(), 32));
  22510. /* } */ case 4:
  22511. /* */ if (!(((l.flag & 6) === 0))) { $s = 6; continue; }
  22512. /* */ $s = 7; continue;
  22513. /* if (!(((l.flag & 6) === 0))) { */ case 6:
  22514. _r$1 = t.Clock(); /* */ $s = 8; case 8: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  22515. _tuple$1 = _r$1; hour = _tuple$1[0]; min = _tuple$1[1]; sec = _tuple$1[2];
  22516. itoa(buf, hour, 2);
  22517. buf.$set($append(buf.$get(), 58));
  22518. itoa(buf, min, 2);
  22519. buf.$set($append(buf.$get(), 58));
  22520. itoa(buf, sec, 2);
  22521. if (!(((l.flag & 4) === 0))) {
  22522. buf.$set($append(buf.$get(), 46));
  22523. itoa(buf, (_q = t.Nanosecond() / 1000, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")), 6);
  22524. }
  22525. buf.$set($append(buf.$get(), 32));
  22526. /* } */ case 7:
  22527. /* } */ case 2:
  22528. if (!(((l.flag & 24) === 0))) {
  22529. if (!(((l.flag & 16) === 0))) {
  22530. short$1 = file;
  22531. i = file.length - 1 >> 0;
  22532. while (true) {
  22533. if (!(i > 0)) { break; }
  22534. if (file.charCodeAt(i) === 47) {
  22535. short$1 = file.substring((i + 1 >> 0));
  22536. break;
  22537. }
  22538. i = i - (1) >> 0;
  22539. }
  22540. file = short$1;
  22541. }
  22542. buf.$set($appendSlice(buf.$get(), new sliceType($stringToBytes(file))));
  22543. buf.$set($append(buf.$get(), 58));
  22544. itoa(buf, line, -1);
  22545. buf.$set($appendSlice(buf.$get(), new sliceType($stringToBytes(": "))));
  22546. }
  22547. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Logger.ptr.prototype.formatHeader }; } $f.$ptr = $ptr; $f._q = _q; $f._r = _r; $f._r$1 = _r$1; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.buf = buf; $f.day = day; $f.file = file; $f.hour = hour; $f.i = i; $f.l = l; $f.line = line; $f.min = min; $f.month = month; $f.sec = sec; $f.short$1 = short$1; $f.t = t; $f.year = year; $f.$s = $s; $f.$r = $r; return $f;
  22548. };
  22549. Logger.prototype.formatHeader = function(buf, t, file, line) { return this.$val.formatHeader(buf, t, file, line); };
  22550. Logger.ptr.prototype.Output = function(calldepth, s) {
  22551. var $ptr, _r, _tuple, _tuple$1, calldepth, err, file, l, line, now, ok, s, $s, $deferred, $r;
  22552. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; calldepth = $f.calldepth; err = $f.err; file = $f.file; l = $f.l; line = $f.line; now = $f.now; ok = $f.ok; s = $f.s; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
  22553. l = this;
  22554. now = $clone(time.Now(), time.Time);
  22555. file = "";
  22556. line = 0;
  22557. l.mu.Lock();
  22558. $deferred.push([$methodVal(l.mu, "Unlock"), []]);
  22559. if (!(((l.flag & 24) === 0))) {
  22560. l.mu.Unlock();
  22561. ok = false;
  22562. _tuple = runtime.Caller(calldepth); file = _tuple[1]; line = _tuple[2]; ok = _tuple[3];
  22563. if (!ok) {
  22564. file = "???";
  22565. line = 0;
  22566. }
  22567. l.mu.Lock();
  22568. }
  22569. l.buf = $subslice(l.buf, 0, 0);
  22570. $r = l.formatHeader((l.$ptr_buf || (l.$ptr_buf = new ptrType(function() { return this.$target.buf; }, function($v) { this.$target.buf = $v; }, l))), now, file, line); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  22571. l.buf = $appendSlice(l.buf, new sliceType($stringToBytes(s)));
  22572. if (s.length > 0 && !((s.charCodeAt((s.length - 1 >> 0)) === 10))) {
  22573. l.buf = $append(l.buf, 10);
  22574. }
  22575. _r = l.out.Write(l.buf); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  22576. _tuple$1 = _r; err = _tuple$1[1];
  22577. return err;
  22578. /* */ $s = -1; case -1: } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: Logger.ptr.prototype.Output }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.calldepth = calldepth; $f.err = err; $f.file = file; $f.l = l; $f.line = line; $f.now = now; $f.ok = ok; $f.s = s; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
  22579. };
  22580. Logger.prototype.Output = function(calldepth, s) { return this.$val.Output(calldepth, s); };
  22581. Logger.ptr.prototype.Printf = function(format, v) {
  22582. var $ptr, _arg, _r, _r$1, format, l, v, $s, $r;
  22583. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _arg = $f._arg; _r = $f._r; _r$1 = $f._r$1; format = $f.format; l = $f.l; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  22584. l = this;
  22585. _r = fmt.Sprintf(format, v); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  22586. _arg = _r;
  22587. _r$1 = l.Output(2, _arg); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  22588. _r$1;
  22589. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Logger.ptr.prototype.Printf }; } $f.$ptr = $ptr; $f._arg = _arg; $f._r = _r; $f._r$1 = _r$1; $f.format = format; $f.l = l; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
  22590. };
  22591. Logger.prototype.Printf = function(format, v) { return this.$val.Printf(format, v); };
  22592. Logger.ptr.prototype.Print = function(v) {
  22593. var $ptr, _arg, _r, _r$1, l, v, $s, $r;
  22594. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _arg = $f._arg; _r = $f._r; _r$1 = $f._r$1; l = $f.l; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  22595. l = this;
  22596. _r = fmt.Sprint(v); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  22597. _arg = _r;
  22598. _r$1 = l.Output(2, _arg); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  22599. _r$1;
  22600. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Logger.ptr.prototype.Print }; } $f.$ptr = $ptr; $f._arg = _arg; $f._r = _r; $f._r$1 = _r$1; $f.l = l; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
  22601. };
  22602. Logger.prototype.Print = function(v) { return this.$val.Print(v); };
  22603. Logger.ptr.prototype.Println = function(v) {
  22604. var $ptr, _arg, _r, _r$1, l, v, $s, $r;
  22605. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _arg = $f._arg; _r = $f._r; _r$1 = $f._r$1; l = $f.l; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  22606. l = this;
  22607. _r = fmt.Sprintln(v); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  22608. _arg = _r;
  22609. _r$1 = l.Output(2, _arg); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  22610. _r$1;
  22611. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Logger.ptr.prototype.Println }; } $f.$ptr = $ptr; $f._arg = _arg; $f._r = _r; $f._r$1 = _r$1; $f.l = l; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
  22612. };
  22613. Logger.prototype.Println = function(v) { return this.$val.Println(v); };
  22614. Logger.ptr.prototype.Fatal = function(v) {
  22615. var $ptr, _arg, _r, _r$1, l, v, $s, $r;
  22616. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _arg = $f._arg; _r = $f._r; _r$1 = $f._r$1; l = $f.l; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  22617. l = this;
  22618. _r = fmt.Sprint(v); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  22619. _arg = _r;
  22620. _r$1 = l.Output(2, _arg); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  22621. _r$1;
  22622. os.Exit(1);
  22623. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Logger.ptr.prototype.Fatal }; } $f.$ptr = $ptr; $f._arg = _arg; $f._r = _r; $f._r$1 = _r$1; $f.l = l; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
  22624. };
  22625. Logger.prototype.Fatal = function(v) { return this.$val.Fatal(v); };
  22626. Logger.ptr.prototype.Fatalf = function(format, v) {
  22627. var $ptr, _arg, _r, _r$1, format, l, v, $s, $r;
  22628. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _arg = $f._arg; _r = $f._r; _r$1 = $f._r$1; format = $f.format; l = $f.l; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  22629. l = this;
  22630. _r = fmt.Sprintf(format, v); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  22631. _arg = _r;
  22632. _r$1 = l.Output(2, _arg); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  22633. _r$1;
  22634. os.Exit(1);
  22635. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Logger.ptr.prototype.Fatalf }; } $f.$ptr = $ptr; $f._arg = _arg; $f._r = _r; $f._r$1 = _r$1; $f.format = format; $f.l = l; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
  22636. };
  22637. Logger.prototype.Fatalf = function(format, v) { return this.$val.Fatalf(format, v); };
  22638. Logger.ptr.prototype.Fatalln = function(v) {
  22639. var $ptr, _arg, _r, _r$1, l, v, $s, $r;
  22640. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _arg = $f._arg; _r = $f._r; _r$1 = $f._r$1; l = $f.l; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  22641. l = this;
  22642. _r = fmt.Sprintln(v); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  22643. _arg = _r;
  22644. _r$1 = l.Output(2, _arg); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  22645. _r$1;
  22646. os.Exit(1);
  22647. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Logger.ptr.prototype.Fatalln }; } $f.$ptr = $ptr; $f._arg = _arg; $f._r = _r; $f._r$1 = _r$1; $f.l = l; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
  22648. };
  22649. Logger.prototype.Fatalln = function(v) { return this.$val.Fatalln(v); };
  22650. Logger.ptr.prototype.Panic = function(v) {
  22651. var $ptr, _r, _r$1, l, s, v, $s, $r;
  22652. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; l = $f.l; s = $f.s; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  22653. l = this;
  22654. _r = fmt.Sprint(v); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  22655. s = _r;
  22656. _r$1 = l.Output(2, s); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  22657. _r$1;
  22658. $panic(new $String(s));
  22659. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Logger.ptr.prototype.Panic }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f.l = l; $f.s = s; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
  22660. };
  22661. Logger.prototype.Panic = function(v) { return this.$val.Panic(v); };
  22662. Logger.ptr.prototype.Panicf = function(format, v) {
  22663. var $ptr, _r, _r$1, format, l, s, v, $s, $r;
  22664. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; format = $f.format; l = $f.l; s = $f.s; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  22665. l = this;
  22666. _r = fmt.Sprintf(format, v); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  22667. s = _r;
  22668. _r$1 = l.Output(2, s); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  22669. _r$1;
  22670. $panic(new $String(s));
  22671. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Logger.ptr.prototype.Panicf }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f.format = format; $f.l = l; $f.s = s; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
  22672. };
  22673. Logger.prototype.Panicf = function(format, v) { return this.$val.Panicf(format, v); };
  22674. Logger.ptr.prototype.Panicln = function(v) {
  22675. var $ptr, _r, _r$1, l, s, v, $s, $r;
  22676. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; l = $f.l; s = $f.s; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  22677. l = this;
  22678. _r = fmt.Sprintln(v); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  22679. s = _r;
  22680. _r$1 = l.Output(2, s); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  22681. _r$1;
  22682. $panic(new $String(s));
  22683. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Logger.ptr.prototype.Panicln }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f.l = l; $f.s = s; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
  22684. };
  22685. Logger.prototype.Panicln = function(v) { return this.$val.Panicln(v); };
  22686. Logger.ptr.prototype.Flags = function() {
  22687. var $ptr, l, $deferred;
  22688. /* */ var $err = null; try { $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
  22689. l = this;
  22690. l.mu.Lock();
  22691. $deferred.push([$methodVal(l.mu, "Unlock"), []]);
  22692. return l.flag;
  22693. /* */ } catch(err) { $err = err; return 0; } finally { $callDeferred($deferred, $err); }
  22694. };
  22695. Logger.prototype.Flags = function() { return this.$val.Flags(); };
  22696. Logger.ptr.prototype.SetFlags = function(flag) {
  22697. var $ptr, flag, l, $deferred;
  22698. /* */ var $err = null; try { $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
  22699. l = this;
  22700. l.mu.Lock();
  22701. $deferred.push([$methodVal(l.mu, "Unlock"), []]);
  22702. l.flag = flag;
  22703. /* */ } catch(err) { $err = err; } finally { $callDeferred($deferred, $err); }
  22704. };
  22705. Logger.prototype.SetFlags = function(flag) { return this.$val.SetFlags(flag); };
  22706. Logger.ptr.prototype.Prefix = function() {
  22707. var $ptr, l, $deferred;
  22708. /* */ var $err = null; try { $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
  22709. l = this;
  22710. l.mu.Lock();
  22711. $deferred.push([$methodVal(l.mu, "Unlock"), []]);
  22712. return l.prefix;
  22713. /* */ } catch(err) { $err = err; return ""; } finally { $callDeferred($deferred, $err); }
  22714. };
  22715. Logger.prototype.Prefix = function() { return this.$val.Prefix(); };
  22716. Logger.ptr.prototype.SetPrefix = function(prefix) {
  22717. var $ptr, l, prefix, $deferred;
  22718. /* */ var $err = null; try { $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
  22719. l = this;
  22720. l.mu.Lock();
  22721. $deferred.push([$methodVal(l.mu, "Unlock"), []]);
  22722. l.prefix = prefix;
  22723. /* */ } catch(err) { $err = err; } finally { $callDeferred($deferred, $err); }
  22724. };
  22725. Logger.prototype.SetPrefix = function(prefix) { return this.$val.SetPrefix(prefix); };
  22726. Printf = function(format, v) {
  22727. var $ptr, _arg, _r, _r$1, format, v, $s, $r;
  22728. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _arg = $f._arg; _r = $f._r; _r$1 = $f._r$1; format = $f.format; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  22729. _r = fmt.Sprintf(format, v); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  22730. _arg = _r;
  22731. _r$1 = std.Output(2, _arg); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  22732. _r$1;
  22733. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Printf }; } $f.$ptr = $ptr; $f._arg = _arg; $f._r = _r; $f._r$1 = _r$1; $f.format = format; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
  22734. };
  22735. $pkg.Printf = Printf;
  22736. Println = function(v) {
  22737. var $ptr, _arg, _r, _r$1, v, $s, $r;
  22738. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _arg = $f._arg; _r = $f._r; _r$1 = $f._r$1; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  22739. _r = fmt.Sprintln(v); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  22740. _arg = _r;
  22741. _r$1 = std.Output(2, _arg); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  22742. _r$1;
  22743. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Println }; } $f.$ptr = $ptr; $f._arg = _arg; $f._r = _r; $f._r$1 = _r$1; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
  22744. };
  22745. $pkg.Println = Println;
  22746. ptrType$1.methods = [{prop: "formatHeader", name: "formatHeader", pkg: "log", typ: $funcType([ptrType, time.Time, $String, $Int], [], false)}, {prop: "Output", name: "Output", pkg: "", typ: $funcType([$Int, $String], [$error], false)}, {prop: "Printf", name: "Printf", pkg: "", typ: $funcType([$String, sliceType$1], [], true)}, {prop: "Print", name: "Print", pkg: "", typ: $funcType([sliceType$1], [], true)}, {prop: "Println", name: "Println", pkg: "", typ: $funcType([sliceType$1], [], true)}, {prop: "Fatal", name: "Fatal", pkg: "", typ: $funcType([sliceType$1], [], true)}, {prop: "Fatalf", name: "Fatalf", pkg: "", typ: $funcType([$String, sliceType$1], [], true)}, {prop: "Fatalln", name: "Fatalln", pkg: "", typ: $funcType([sliceType$1], [], true)}, {prop: "Panic", name: "Panic", pkg: "", typ: $funcType([sliceType$1], [], true)}, {prop: "Panicf", name: "Panicf", pkg: "", typ: $funcType([$String, sliceType$1], [], true)}, {prop: "Panicln", name: "Panicln", pkg: "", typ: $funcType([sliceType$1], [], true)}, {prop: "Flags", name: "Flags", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "SetFlags", name: "SetFlags", pkg: "", typ: $funcType([$Int], [], false)}, {prop: "Prefix", name: "Prefix", pkg: "", typ: $funcType([], [$String], false)}, {prop: "SetPrefix", name: "SetPrefix", pkg: "", typ: $funcType([$String], [], false)}];
  22747. Logger.init([{prop: "mu", name: "mu", pkg: "log", typ: nosync.Mutex, tag: ""}, {prop: "prefix", name: "prefix", pkg: "log", typ: $String, tag: ""}, {prop: "flag", name: "flag", pkg: "log", typ: $Int, tag: ""}, {prop: "out", name: "out", pkg: "log", typ: io.Writer, tag: ""}, {prop: "buf", name: "buf", pkg: "log", typ: sliceType, tag: ""}]);
  22748. $init = function() {
  22749. $pkg.$init = function() {};
  22750. /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  22751. $r = fmt.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  22752. $r = nosync.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  22753. $r = io.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  22754. $r = os.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  22755. $r = runtime.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  22756. $r = time.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  22757. std = New(os.Stderr, "", 3);
  22758. /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
  22759. };
  22760. $pkg.$init = $init;
  22761. return $pkg;
  22762. })();
  22763. $packages["sort"] = (function() {
  22764. var $pkg = {}, $init, StringSlice, sliceType$2, Search, SearchStrings, min, insertionSort, siftDown, heapSort, medianOfThree, swapRange, doPivot, quickSort, Sort, Strings;
  22765. StringSlice = $pkg.StringSlice = $newType(12, $kindSlice, "sort.StringSlice", "StringSlice", "sort", null);
  22766. sliceType$2 = $sliceType($String);
  22767. Search = function(n, f) {
  22768. var $ptr, _q, _r, _tmp, _tmp$1, f, h, i, j, n, $s, $r;
  22769. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _q = $f._q; _r = $f._r; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; f = $f.f; h = $f.h; i = $f.i; j = $f.j; n = $f.n; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  22770. _tmp = 0; _tmp$1 = n; i = _tmp; j = _tmp$1;
  22771. /* while (true) { */ case 1:
  22772. /* if (!(i < j)) { break; } */ if(!(i < j)) { $s = 2; continue; }
  22773. h = i + (_q = ((j - i >> 0)) / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")) >> 0;
  22774. _r = f(h); /* */ $s = 6; case 6: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  22775. /* */ if (!_r) { $s = 3; continue; }
  22776. /* */ $s = 4; continue;
  22777. /* if (!_r) { */ case 3:
  22778. i = h + 1 >> 0;
  22779. $s = 5; continue;
  22780. /* } else { */ case 4:
  22781. j = h;
  22782. /* } */ case 5:
  22783. /* } */ $s = 1; continue; case 2:
  22784. return i;
  22785. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Search }; } $f.$ptr = $ptr; $f._q = _q; $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f.f = f; $f.h = h; $f.i = i; $f.j = j; $f.n = n; $f.$s = $s; $f.$r = $r; return $f;
  22786. };
  22787. $pkg.Search = Search;
  22788. SearchStrings = function(a, x) {
  22789. var $ptr, _r, a, x, $s, $r;
  22790. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; a = $f.a; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  22791. a = [a];
  22792. x = [x];
  22793. _r = Search(a[0].$length, (function(a, x) { return function(i) {
  22794. var $ptr, i;
  22795. return ((i < 0 || i >= a[0].$length) ? $throwRuntimeError("index out of range") : a[0].$array[a[0].$offset + i]) >= x[0];
  22796. }; })(a, x)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  22797. return _r;
  22798. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: SearchStrings }; } $f.$ptr = $ptr; $f._r = _r; $f.a = a; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
  22799. };
  22800. $pkg.SearchStrings = SearchStrings;
  22801. StringSlice.prototype.Search = function(x) {
  22802. var $ptr, _r, p, x, $s, $r;
  22803. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; p = $f.p; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  22804. p = this;
  22805. _r = SearchStrings($subslice(new sliceType$2(p.$array), p.$offset, p.$offset + p.$length), x); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  22806. return _r;
  22807. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: StringSlice.prototype.Search }; } $f.$ptr = $ptr; $f._r = _r; $f.p = p; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
  22808. };
  22809. $ptrType(StringSlice).prototype.Search = function(x) { return this.$get().Search(x); };
  22810. min = function(a, b) {
  22811. var $ptr, a, b;
  22812. if (a < b) {
  22813. return a;
  22814. }
  22815. return b;
  22816. };
  22817. insertionSort = function(data, a, b) {
  22818. var $ptr, _r, _v, a, b, data, i, j, $s, $r;
  22819. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _v = $f._v; a = $f.a; b = $f.b; data = $f.data; i = $f.i; j = $f.j; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  22820. i = a + 1 >> 0;
  22821. /* while (true) { */ case 1:
  22822. /* if (!(i < b)) { break; } */ if(!(i < b)) { $s = 2; continue; }
  22823. j = i;
  22824. /* while (true) { */ case 3:
  22825. if (!(j > a)) { _v = false; $s = 5; continue s; }
  22826. _r = data.Less(j, j - 1 >> 0); /* */ $s = 6; case 6: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  22827. _v = _r; case 5:
  22828. /* if (!(_v)) { break; } */ if(!(_v)) { $s = 4; continue; }
  22829. $r = data.Swap(j, j - 1 >> 0); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  22830. j = j - (1) >> 0;
  22831. /* } */ $s = 3; continue; case 4:
  22832. i = i + (1) >> 0;
  22833. /* } */ $s = 1; continue; case 2:
  22834. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: insertionSort }; } $f.$ptr = $ptr; $f._r = _r; $f._v = _v; $f.a = a; $f.b = b; $f.data = data; $f.i = i; $f.j = j; $f.$s = $s; $f.$r = $r; return $f;
  22835. };
  22836. siftDown = function(data, lo, hi, first) {
  22837. var $ptr, _r, _r$1, _v, child, data, first, hi, lo, root, $s, $r;
  22838. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _v = $f._v; child = $f.child; data = $f.data; first = $f.first; hi = $f.hi; lo = $f.lo; root = $f.root; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  22839. root = lo;
  22840. /* while (true) { */ case 1:
  22841. child = (2 * root >> 0) + 1 >> 0;
  22842. if (child >= hi) {
  22843. /* break; */ $s = 2; continue;
  22844. }
  22845. if (!((child + 1 >> 0) < hi)) { _v = false; $s = 5; continue s; }
  22846. _r = data.Less(first + child >> 0, (first + child >> 0) + 1 >> 0); /* */ $s = 6; case 6: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  22847. _v = _r; case 5:
  22848. /* */ if (_v) { $s = 3; continue; }
  22849. /* */ $s = 4; continue;
  22850. /* if (_v) { */ case 3:
  22851. child = child + (1) >> 0;
  22852. /* } */ case 4:
  22853. _r$1 = data.Less(first + root >> 0, first + child >> 0); /* */ $s = 9; case 9: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  22854. /* */ if (!_r$1) { $s = 7; continue; }
  22855. /* */ $s = 8; continue;
  22856. /* if (!_r$1) { */ case 7:
  22857. return;
  22858. /* } */ case 8:
  22859. $r = data.Swap(first + root >> 0, first + child >> 0); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  22860. root = child;
  22861. /* } */ $s = 1; continue; case 2:
  22862. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: siftDown }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._v = _v; $f.child = child; $f.data = data; $f.first = first; $f.hi = hi; $f.lo = lo; $f.root = root; $f.$s = $s; $f.$r = $r; return $f;
  22863. };
  22864. heapSort = function(data, a, b) {
  22865. var $ptr, _q, a, b, data, first, hi, i, i$1, lo, $s, $r;
  22866. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _q = $f._q; a = $f.a; b = $f.b; data = $f.data; first = $f.first; hi = $f.hi; i = $f.i; i$1 = $f.i$1; lo = $f.lo; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  22867. first = a;
  22868. lo = 0;
  22869. hi = b - a >> 0;
  22870. i = (_q = ((hi - 1 >> 0)) / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero"));
  22871. /* while (true) { */ case 1:
  22872. /* if (!(i >= 0)) { break; } */ if(!(i >= 0)) { $s = 2; continue; }
  22873. $r = siftDown(data, i, hi, first); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  22874. i = i - (1) >> 0;
  22875. /* } */ $s = 1; continue; case 2:
  22876. i$1 = hi - 1 >> 0;
  22877. /* while (true) { */ case 4:
  22878. /* if (!(i$1 >= 0)) { break; } */ if(!(i$1 >= 0)) { $s = 5; continue; }
  22879. $r = data.Swap(first, first + i$1 >> 0); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  22880. $r = siftDown(data, lo, i$1, first); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  22881. i$1 = i$1 - (1) >> 0;
  22882. /* } */ $s = 4; continue; case 5:
  22883. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: heapSort }; } $f.$ptr = $ptr; $f._q = _q; $f.a = a; $f.b = b; $f.data = data; $f.first = first; $f.hi = hi; $f.i = i; $f.i$1 = i$1; $f.lo = lo; $f.$s = $s; $f.$r = $r; return $f;
  22884. };
  22885. medianOfThree = function(data, a, b, c) {
  22886. var $ptr, _r, _r$1, _r$2, a, b, c, data, m0, m1, m2, $s, $r;
  22887. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; a = $f.a; b = $f.b; c = $f.c; data = $f.data; m0 = $f.m0; m1 = $f.m1; m2 = $f.m2; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  22888. m0 = b;
  22889. m1 = a;
  22890. m2 = c;
  22891. _r = data.Less(m1, m0); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  22892. /* */ if (_r) { $s = 1; continue; }
  22893. /* */ $s = 2; continue;
  22894. /* if (_r) { */ case 1:
  22895. $r = data.Swap(m1, m0); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  22896. /* } */ case 2:
  22897. _r$1 = data.Less(m2, m1); /* */ $s = 7; case 7: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  22898. /* */ if (_r$1) { $s = 5; continue; }
  22899. /* */ $s = 6; continue;
  22900. /* if (_r$1) { */ case 5:
  22901. $r = data.Swap(m2, m1); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  22902. /* } */ case 6:
  22903. _r$2 = data.Less(m1, m0); /* */ $s = 11; case 11: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  22904. /* */ if (_r$2) { $s = 9; continue; }
  22905. /* */ $s = 10; continue;
  22906. /* if (_r$2) { */ case 9:
  22907. $r = data.Swap(m1, m0); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  22908. /* } */ case 10:
  22909. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: medianOfThree }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f.a = a; $f.b = b; $f.c = c; $f.data = data; $f.m0 = m0; $f.m1 = m1; $f.m2 = m2; $f.$s = $s; $f.$r = $r; return $f;
  22910. };
  22911. swapRange = function(data, a, b, n) {
  22912. var $ptr, a, b, data, i, n, $s, $r;
  22913. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; a = $f.a; b = $f.b; data = $f.data; i = $f.i; n = $f.n; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  22914. i = 0;
  22915. /* while (true) { */ case 1:
  22916. /* if (!(i < n)) { break; } */ if(!(i < n)) { $s = 2; continue; }
  22917. $r = data.Swap(a + i >> 0, b + i >> 0); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  22918. i = i + (1) >> 0;
  22919. /* } */ $s = 1; continue; case 2:
  22920. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: swapRange }; } $f.$ptr = $ptr; $f.a = a; $f.b = b; $f.data = data; $f.i = i; $f.n = n; $f.$s = $s; $f.$r = $r; return $f;
  22921. };
  22922. doPivot = function(data, lo, hi) {
  22923. var $ptr, _q, _q$1, _r, _r$1, _r$2, _r$3, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, a, b, c, d, data, hi, lo, m, midhi, midlo, n, pivot, s, $s, $r;
  22924. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _q = $f._q; _q$1 = $f._q$1; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; a = $f.a; b = $f.b; c = $f.c; d = $f.d; data = $f.data; hi = $f.hi; lo = $f.lo; m = $f.m; midhi = $f.midhi; midlo = $f.midlo; n = $f.n; pivot = $f.pivot; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  22925. midlo = 0;
  22926. midhi = 0;
  22927. m = lo + (_q = ((hi - lo >> 0)) / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")) >> 0;
  22928. /* */ if ((hi - lo >> 0) > 40) { $s = 1; continue; }
  22929. /* */ $s = 2; continue;
  22930. /* if ((hi - lo >> 0) > 40) { */ case 1:
  22931. s = (_q$1 = ((hi - lo >> 0)) / 8, (_q$1 === _q$1 && _q$1 !== 1/0 && _q$1 !== -1/0) ? _q$1 >> 0 : $throwRuntimeError("integer divide by zero"));
  22932. $r = medianOfThree(data, lo, lo + s >> 0, lo + (2 * s >> 0) >> 0); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  22933. $r = medianOfThree(data, m, m - s >> 0, m + s >> 0); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  22934. $r = medianOfThree(data, hi - 1 >> 0, (hi - 1 >> 0) - s >> 0, (hi - 1 >> 0) - (2 * s >> 0) >> 0); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  22935. /* } */ case 2:
  22936. $r = medianOfThree(data, lo, m, hi - 1 >> 0); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  22937. pivot = lo;
  22938. _tmp = lo + 1 >> 0; _tmp$1 = lo + 1 >> 0; _tmp$2 = hi; _tmp$3 = hi; a = _tmp; b = _tmp$1; c = _tmp$2; d = _tmp$3;
  22939. /* while (true) { */ case 7:
  22940. /* while (true) { */ case 9:
  22941. /* if (!(b < c)) { break; } */ if(!(b < c)) { $s = 10; continue; }
  22942. _r = data.Less(b, pivot); /* */ $s = 15; case 15: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  22943. /* */ if (_r) { $s = 11; continue; }
  22944. _r$1 = data.Less(pivot, b); /* */ $s = 16; case 16: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  22945. /* */ if (!_r$1) { $s = 12; continue; }
  22946. /* */ $s = 13; continue;
  22947. /* if (_r) { */ case 11:
  22948. b = b + (1) >> 0;
  22949. $s = 14; continue;
  22950. /* } else if (!_r$1) { */ case 12:
  22951. $r = data.Swap(a, b); /* */ $s = 17; case 17: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  22952. a = a + (1) >> 0;
  22953. b = b + (1) >> 0;
  22954. $s = 14; continue;
  22955. /* } else { */ case 13:
  22956. /* break; */ $s = 10; continue;
  22957. /* } */ case 14:
  22958. /* } */ $s = 9; continue; case 10:
  22959. /* while (true) { */ case 18:
  22960. /* if (!(b < c)) { break; } */ if(!(b < c)) { $s = 19; continue; }
  22961. _r$2 = data.Less(pivot, c - 1 >> 0); /* */ $s = 24; case 24: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  22962. /* */ if (_r$2) { $s = 20; continue; }
  22963. _r$3 = data.Less(c - 1 >> 0, pivot); /* */ $s = 25; case 25: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  22964. /* */ if (!_r$3) { $s = 21; continue; }
  22965. /* */ $s = 22; continue;
  22966. /* if (_r$2) { */ case 20:
  22967. c = c - (1) >> 0;
  22968. $s = 23; continue;
  22969. /* } else if (!_r$3) { */ case 21:
  22970. $r = data.Swap(c - 1 >> 0, d - 1 >> 0); /* */ $s = 26; case 26: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  22971. c = c - (1) >> 0;
  22972. d = d - (1) >> 0;
  22973. $s = 23; continue;
  22974. /* } else { */ case 22:
  22975. /* break; */ $s = 19; continue;
  22976. /* } */ case 23:
  22977. /* } */ $s = 18; continue; case 19:
  22978. if (b >= c) {
  22979. /* break; */ $s = 8; continue;
  22980. }
  22981. $r = data.Swap(b, c - 1 >> 0); /* */ $s = 27; case 27: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  22982. b = b + (1) >> 0;
  22983. c = c - (1) >> 0;
  22984. /* } */ $s = 7; continue; case 8:
  22985. n = min(b - a >> 0, a - lo >> 0);
  22986. $r = swapRange(data, lo, b - n >> 0, n); /* */ $s = 28; case 28: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  22987. n = min(hi - d >> 0, d - c >> 0);
  22988. $r = swapRange(data, c, hi - n >> 0, n); /* */ $s = 29; case 29: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  22989. _tmp$4 = (lo + b >> 0) - a >> 0; _tmp$5 = hi - ((d - c >> 0)) >> 0; midlo = _tmp$4; midhi = _tmp$5;
  22990. return [midlo, midhi];
  22991. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: doPivot }; } $f.$ptr = $ptr; $f._q = _q; $f._q$1 = _q$1; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f.a = a; $f.b = b; $f.c = c; $f.d = d; $f.data = data; $f.hi = hi; $f.lo = lo; $f.m = m; $f.midhi = midhi; $f.midlo = midlo; $f.n = n; $f.pivot = pivot; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
  22992. };
  22993. quickSort = function(data, a, b, maxDepth) {
  22994. var $ptr, _r, _tuple, a, b, data, maxDepth, mhi, mlo, $s, $r;
  22995. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tuple = $f._tuple; a = $f.a; b = $f.b; data = $f.data; maxDepth = $f.maxDepth; mhi = $f.mhi; mlo = $f.mlo; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  22996. /* while (true) { */ case 1:
  22997. /* if (!((b - a >> 0) > 7)) { break; } */ if(!((b - a >> 0) > 7)) { $s = 2; continue; }
  22998. /* */ if (maxDepth === 0) { $s = 3; continue; }
  22999. /* */ $s = 4; continue;
  23000. /* if (maxDepth === 0) { */ case 3:
  23001. $r = heapSort(data, a, b); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  23002. return;
  23003. /* } */ case 4:
  23004. maxDepth = maxDepth - (1) >> 0;
  23005. _r = doPivot(data, a, b); /* */ $s = 6; case 6: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  23006. _tuple = _r; mlo = _tuple[0]; mhi = _tuple[1];
  23007. /* */ if ((mlo - a >> 0) < (b - mhi >> 0)) { $s = 7; continue; }
  23008. /* */ $s = 8; continue;
  23009. /* if ((mlo - a >> 0) < (b - mhi >> 0)) { */ case 7:
  23010. $r = quickSort(data, a, mlo, maxDepth); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  23011. a = mhi;
  23012. $s = 9; continue;
  23013. /* } else { */ case 8:
  23014. $r = quickSort(data, mhi, b, maxDepth); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  23015. b = mlo;
  23016. /* } */ case 9:
  23017. /* } */ $s = 1; continue; case 2:
  23018. /* */ if ((b - a >> 0) > 1) { $s = 12; continue; }
  23019. /* */ $s = 13; continue;
  23020. /* if ((b - a >> 0) > 1) { */ case 12:
  23021. $r = insertionSort(data, a, b); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  23022. /* } */ case 13:
  23023. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: quickSort }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple = _tuple; $f.a = a; $f.b = b; $f.data = data; $f.maxDepth = maxDepth; $f.mhi = mhi; $f.mlo = mlo; $f.$s = $s; $f.$r = $r; return $f;
  23024. };
  23025. Sort = function(data) {
  23026. var $ptr, _r, data, i, maxDepth, n, $s, $r;
  23027. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; data = $f.data; i = $f.i; maxDepth = $f.maxDepth; n = $f.n; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  23028. _r = data.Len(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  23029. n = _r;
  23030. maxDepth = 0;
  23031. i = n;
  23032. while (true) {
  23033. if (!(i > 0)) { break; }
  23034. maxDepth = maxDepth + (1) >> 0;
  23035. i = (i >> $min((1), 31)) >> 0;
  23036. }
  23037. maxDepth = maxDepth * (2) >> 0;
  23038. $r = quickSort(data, 0, n, maxDepth); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  23039. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Sort }; } $f.$ptr = $ptr; $f._r = _r; $f.data = data; $f.i = i; $f.maxDepth = maxDepth; $f.n = n; $f.$s = $s; $f.$r = $r; return $f;
  23040. };
  23041. $pkg.Sort = Sort;
  23042. StringSlice.prototype.Len = function() {
  23043. var $ptr, p;
  23044. p = this;
  23045. return p.$length;
  23046. };
  23047. $ptrType(StringSlice).prototype.Len = function() { return this.$get().Len(); };
  23048. StringSlice.prototype.Less = function(i, j) {
  23049. var $ptr, i, j, p;
  23050. p = this;
  23051. return ((i < 0 || i >= p.$length) ? $throwRuntimeError("index out of range") : p.$array[p.$offset + i]) < ((j < 0 || j >= p.$length) ? $throwRuntimeError("index out of range") : p.$array[p.$offset + j]);
  23052. };
  23053. $ptrType(StringSlice).prototype.Less = function(i, j) { return this.$get().Less(i, j); };
  23054. StringSlice.prototype.Swap = function(i, j) {
  23055. var $ptr, _tmp, _tmp$1, i, j, p;
  23056. p = this;
  23057. _tmp = ((j < 0 || j >= p.$length) ? $throwRuntimeError("index out of range") : p.$array[p.$offset + j]); _tmp$1 = ((i < 0 || i >= p.$length) ? $throwRuntimeError("index out of range") : p.$array[p.$offset + i]); ((i < 0 || i >= p.$length) ? $throwRuntimeError("index out of range") : p.$array[p.$offset + i] = _tmp); ((j < 0 || j >= p.$length) ? $throwRuntimeError("index out of range") : p.$array[p.$offset + j] = _tmp$1);
  23058. };
  23059. $ptrType(StringSlice).prototype.Swap = function(i, j) { return this.$get().Swap(i, j); };
  23060. StringSlice.prototype.Sort = function() {
  23061. var $ptr, p, $s, $r;
  23062. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; p = $f.p; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  23063. p = this;
  23064. $r = Sort(p); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  23065. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: StringSlice.prototype.Sort }; } $f.$ptr = $ptr; $f.p = p; $f.$s = $s; $f.$r = $r; return $f;
  23066. };
  23067. $ptrType(StringSlice).prototype.Sort = function() { return this.$get().Sort(); };
  23068. Strings = function(a) {
  23069. var $ptr, a, $s, $r;
  23070. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; a = $f.a; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  23071. $r = Sort($subslice(new StringSlice(a.$array), a.$offset, a.$offset + a.$length)); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  23072. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Strings }; } $f.$ptr = $ptr; $f.a = a; $f.$s = $s; $f.$r = $r; return $f;
  23073. };
  23074. $pkg.Strings = Strings;
  23075. StringSlice.methods = [{prop: "Search", name: "Search", pkg: "", typ: $funcType([$String], [$Int], false)}, {prop: "Len", name: "Len", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Less", name: "Less", pkg: "", typ: $funcType([$Int, $Int], [$Bool], false)}, {prop: "Swap", name: "Swap", pkg: "", typ: $funcType([$Int, $Int], [], false)}, {prop: "Sort", name: "Sort", pkg: "", typ: $funcType([], [], false)}];
  23076. StringSlice.init($String);
  23077. $init = function() {
  23078. $pkg.$init = function() {};
  23079. /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  23080. /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
  23081. };
  23082. $pkg.$init = $init;
  23083. return $pkg;
  23084. })();
  23085. $packages["github.com/mitchellh/mapstructure"] = (function() {
  23086. var $pkg = {}, $init, errors, fmt, reflect, sort, strconv, strings, Error, DecodeHookFunc, DecoderConfig, Decoder, Metadata, sliceType, sliceType$1, sliceType$2, ptrType, ptrType$1, ptrType$2, ptrType$3, structType, sliceType$3, appendErrors, Decode, NewDecoder, getKind;
  23087. errors = $packages["errors"];
  23088. fmt = $packages["fmt"];
  23089. reflect = $packages["reflect"];
  23090. sort = $packages["sort"];
  23091. strconv = $packages["strconv"];
  23092. strings = $packages["strings"];
  23093. Error = $pkg.Error = $newType(0, $kindStruct, "mapstructure.Error", "Error", "github.com/mitchellh/mapstructure", function(Errors_) {
  23094. this.$val = this;
  23095. if (arguments.length === 0) {
  23096. this.Errors = sliceType.nil;
  23097. return;
  23098. }
  23099. this.Errors = Errors_;
  23100. });
  23101. DecodeHookFunc = $pkg.DecodeHookFunc = $newType(4, $kindFunc, "mapstructure.DecodeHookFunc", "DecodeHookFunc", "github.com/mitchellh/mapstructure", null);
  23102. DecoderConfig = $pkg.DecoderConfig = $newType(0, $kindStruct, "mapstructure.DecoderConfig", "DecoderConfig", "github.com/mitchellh/mapstructure", function(DecodeHook_, ErrorUnused_, WeaklyTypedInput_, Metadata_, Result_, TagName_) {
  23103. this.$val = this;
  23104. if (arguments.length === 0) {
  23105. this.DecodeHook = $throwNilPointerError;
  23106. this.ErrorUnused = false;
  23107. this.WeaklyTypedInput = false;
  23108. this.Metadata = ptrType$1.nil;
  23109. this.Result = $ifaceNil;
  23110. this.TagName = "";
  23111. return;
  23112. }
  23113. this.DecodeHook = DecodeHook_;
  23114. this.ErrorUnused = ErrorUnused_;
  23115. this.WeaklyTypedInput = WeaklyTypedInput_;
  23116. this.Metadata = Metadata_;
  23117. this.Result = Result_;
  23118. this.TagName = TagName_;
  23119. });
  23120. Decoder = $pkg.Decoder = $newType(0, $kindStruct, "mapstructure.Decoder", "Decoder", "github.com/mitchellh/mapstructure", function(config_) {
  23121. this.$val = this;
  23122. if (arguments.length === 0) {
  23123. this.config = ptrType$3.nil;
  23124. return;
  23125. }
  23126. this.config = config_;
  23127. });
  23128. Metadata = $pkg.Metadata = $newType(0, $kindStruct, "mapstructure.Metadata", "Metadata", "github.com/mitchellh/mapstructure", function(Keys_, Unused_) {
  23129. this.$val = this;
  23130. if (arguments.length === 0) {
  23131. this.Keys = sliceType.nil;
  23132. this.Unused = sliceType.nil;
  23133. return;
  23134. }
  23135. this.Keys = Keys_;
  23136. this.Unused = Unused_;
  23137. });
  23138. sliceType = $sliceType($String);
  23139. sliceType$1 = $sliceType($Uint8);
  23140. sliceType$2 = $sliceType($emptyInterface);
  23141. ptrType = $ptrType(Error);
  23142. ptrType$1 = $ptrType(Metadata);
  23143. ptrType$2 = $ptrType(Decoder);
  23144. ptrType$3 = $ptrType(DecoderConfig);
  23145. structType = $structType([]);
  23146. sliceType$3 = $sliceType(reflect.Value);
  23147. Error.ptr.prototype.Error = function() {
  23148. var $ptr, _i, _r, _r$1, _ref, e, err, i, points, $s, $r;
  23149. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _i = $f._i; _r = $f._r; _r$1 = $f._r$1; _ref = $f._ref; e = $f.e; err = $f.err; i = $f.i; points = $f.points; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  23150. e = this;
  23151. points = $makeSlice(sliceType, e.Errors.$length);
  23152. _ref = e.Errors;
  23153. _i = 0;
  23154. /* while (true) { */ case 1:
  23155. /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; }
  23156. i = _i;
  23157. err = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]);
  23158. _r = fmt.Sprintf("* %s", new sliceType$2([new $String(err)])); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  23159. ((i < 0 || i >= points.$length) ? $throwRuntimeError("index out of range") : points.$array[points.$offset + i] = _r);
  23160. _i++;
  23161. /* } */ $s = 1; continue; case 2:
  23162. $r = sort.Strings(points); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  23163. _r$1 = fmt.Sprintf("%d error(s) decoding:\n\n%s", new sliceType$2([new $Int(e.Errors.$length), new $String(strings.Join(points, "\n"))])); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  23164. return _r$1;
  23165. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Error.ptr.prototype.Error }; } $f.$ptr = $ptr; $f._i = _i; $f._r = _r; $f._r$1 = _r$1; $f._ref = _ref; $f.e = e; $f.err = err; $f.i = i; $f.points = points; $f.$s = $s; $f.$r = $r; return $f;
  23166. };
  23167. Error.prototype.Error = function() { return this.$val.Error(); };
  23168. appendErrors = function(errors$1, err) {
  23169. var $ptr, _r, _ref, e, e$1, err, errors$1, $s, $r;
  23170. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _ref = $f._ref; e = $f.e; e$1 = $f.e$1; err = $f.err; errors$1 = $f.errors$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  23171. _ref = err;
  23172. /* */ if ($assertType(_ref, ptrType, true)[1]) { $s = 1; continue; }
  23173. /* */ $s = 2; continue;
  23174. /* if ($assertType(_ref, ptrType, true)[1]) { */ case 1:
  23175. e = _ref.$val;
  23176. return $appendSlice(errors$1, e.Errors);
  23177. $s = 3; continue;
  23178. /* } else { */ case 2:
  23179. e$1 = _ref;
  23180. _r = e$1.Error(); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  23181. return $append(errors$1, _r);
  23182. /* } */ case 3:
  23183. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: appendErrors }; } $f.$ptr = $ptr; $f._r = _r; $f._ref = _ref; $f.e = e; $f.e$1 = e$1; $f.err = err; $f.errors$1 = errors$1; $f.$s = $s; $f.$r = $r; return $f;
  23184. };
  23185. Decode = function(m, rawVal) {
  23186. var $ptr, _r, _r$1, _tuple, config, decoder, err, m, rawVal, $s, $r;
  23187. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _tuple = $f._tuple; config = $f.config; decoder = $f.decoder; err = $f.err; m = $f.m; rawVal = $f.rawVal; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  23188. config = new DecoderConfig.ptr($throwNilPointerError, false, false, ptrType$1.nil, rawVal, "");
  23189. _r = NewDecoder(config); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  23190. _tuple = _r; decoder = _tuple[0]; err = _tuple[1];
  23191. if (!($interfaceIsEqual(err, $ifaceNil))) {
  23192. return err;
  23193. }
  23194. _r$1 = decoder.Decode(m); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  23195. return _r$1;
  23196. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Decode }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._tuple = _tuple; $f.config = config; $f.decoder = decoder; $f.err = err; $f.m = m; $f.rawVal = rawVal; $f.$s = $s; $f.$r = $r; return $f;
  23197. };
  23198. $pkg.Decode = Decode;
  23199. NewDecoder = function(config) {
  23200. var $ptr, _r, _r$1, config, result, val, $s, $r;
  23201. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; config = $f.config; result = $f.result; val = $f.val; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  23202. _r = reflect.ValueOf(config.Result); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  23203. val = _r;
  23204. if (!((val.Kind() === 22))) {
  23205. return [ptrType$2.nil, errors.New("result must be a pointer")];
  23206. }
  23207. _r$1 = val.Elem(); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  23208. val = _r$1;
  23209. if (!val.CanAddr()) {
  23210. return [ptrType$2.nil, errors.New("result must be addressable (a pointer)")];
  23211. }
  23212. if (!(config.Metadata === ptrType$1.nil)) {
  23213. if (config.Metadata.Keys === sliceType.nil) {
  23214. config.Metadata.Keys = $makeSlice(sliceType, 0);
  23215. }
  23216. if (config.Metadata.Unused === sliceType.nil) {
  23217. config.Metadata.Unused = $makeSlice(sliceType, 0);
  23218. }
  23219. }
  23220. if (config.TagName === "") {
  23221. config.TagName = "mapstructure";
  23222. }
  23223. result = new Decoder.ptr(config);
  23224. return [result, $ifaceNil];
  23225. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: NewDecoder }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f.config = config; $f.result = result; $f.val = val; $f.$s = $s; $f.$r = $r; return $f;
  23226. };
  23227. $pkg.NewDecoder = NewDecoder;
  23228. Decoder.ptr.prototype.Decode = function(raw) {
  23229. var $ptr, _arg, _arg$1, _r, _r$1, _r$2, d, raw, $s, $r;
  23230. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _arg = $f._arg; _arg$1 = $f._arg$1; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; d = $f.d; raw = $f.raw; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  23231. d = this;
  23232. _arg = raw;
  23233. _r = reflect.ValueOf(d.config.Result); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  23234. _r$1 = _r.Elem(); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  23235. _arg$1 = _r$1;
  23236. _r$2 = d.decode("", _arg, _arg$1); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  23237. return _r$2;
  23238. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Decoder.ptr.prototype.Decode }; } $f.$ptr = $ptr; $f._arg = _arg; $f._arg$1 = _arg$1; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f.d = d; $f.raw = raw; $f.$s = $s; $f.$r = $r; return $f;
  23239. };
  23240. Decoder.prototype.Decode = function(raw) { return this.$val.Decode(raw); };
  23241. Decoder.ptr.prototype.decode = function(name, data, val) {
  23242. var $ptr, _r, _r$1, _r$10, _r$11, _r$12, _r$13, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _tuple, d, data, dataKind, dataVal, err, err$1, name, val, $s, $r;
  23243. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$12 = $f._r$12; _r$13 = $f._r$13; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _r$9 = $f._r$9; _ref = $f._ref; _tuple = $f._tuple; d = $f.d; data = $f.data; dataKind = $f.dataKind; dataVal = $f.dataVal; err = $f.err; err$1 = $f.err$1; name = $f.name; val = $f.val; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  23244. d = this;
  23245. val = val;
  23246. if ($interfaceIsEqual(data, $ifaceNil)) {
  23247. return $ifaceNil;
  23248. }
  23249. _r = reflect.ValueOf(data); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  23250. dataVal = _r;
  23251. /* */ if (!dataVal.IsValid()) { $s = 2; continue; }
  23252. /* */ $s = 3; continue;
  23253. /* if (!dataVal.IsValid()) { */ case 2:
  23254. _r$1 = reflect.Zero(val.Type()); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  23255. $r = val.Set(_r$1); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  23256. return $ifaceNil;
  23257. /* } */ case 3:
  23258. /* */ if (!(d.config.DecodeHook === $throwNilPointerError)) { $s = 6; continue; }
  23259. /* */ $s = 7; continue;
  23260. /* if (!(d.config.DecodeHook === $throwNilPointerError)) { */ case 6:
  23261. err = $ifaceNil;
  23262. _r$2 = d.config.DecodeHook(getKind(dataVal), getKind(val), data); /* */ $s = 8; case 8: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  23263. _tuple = _r$2; data = _tuple[0]; err = _tuple[1];
  23264. if (!($interfaceIsEqual(err, $ifaceNil))) {
  23265. return err;
  23266. }
  23267. /* } */ case 7:
  23268. err$1 = $ifaceNil;
  23269. dataKind = getKind(val);
  23270. _ref = dataKind;
  23271. /* */ if (_ref === 1) { $s = 9; continue; }
  23272. /* */ if (_ref === 20) { $s = 10; continue; }
  23273. /* */ if (_ref === 24) { $s = 11; continue; }
  23274. /* */ if (_ref === 2) { $s = 12; continue; }
  23275. /* */ if (_ref === 7) { $s = 13; continue; }
  23276. /* */ if (_ref === 13) { $s = 14; continue; }
  23277. /* */ if (_ref === 25) { $s = 15; continue; }
  23278. /* */ if (_ref === 21) { $s = 16; continue; }
  23279. /* */ if (_ref === 22) { $s = 17; continue; }
  23280. /* */ if (_ref === 23) { $s = 18; continue; }
  23281. /* */ $s = 19; continue;
  23282. /* if (_ref === 1) { */ case 9:
  23283. _r$3 = d.decodeBool(name, data, val); /* */ $s = 21; case 21: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  23284. err$1 = _r$3;
  23285. $s = 20; continue;
  23286. /* } else if (_ref === 20) { */ case 10:
  23287. _r$4 = d.decodeBasic(name, data, val); /* */ $s = 22; case 22: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
  23288. err$1 = _r$4;
  23289. $s = 20; continue;
  23290. /* } else if (_ref === 24) { */ case 11:
  23291. _r$5 = d.decodeString(name, data, val); /* */ $s = 23; case 23: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
  23292. err$1 = _r$5;
  23293. $s = 20; continue;
  23294. /* } else if (_ref === 2) { */ case 12:
  23295. _r$6 = d.decodeInt(name, data, val); /* */ $s = 24; case 24: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
  23296. err$1 = _r$6;
  23297. $s = 20; continue;
  23298. /* } else if (_ref === 7) { */ case 13:
  23299. _r$7 = d.decodeUint(name, data, val); /* */ $s = 25; case 25: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
  23300. err$1 = _r$7;
  23301. $s = 20; continue;
  23302. /* } else if (_ref === 13) { */ case 14:
  23303. _r$8 = d.decodeFloat(name, data, val); /* */ $s = 26; case 26: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
  23304. err$1 = _r$8;
  23305. $s = 20; continue;
  23306. /* } else if (_ref === 25) { */ case 15:
  23307. _r$9 = d.decodeStruct(name, data, val); /* */ $s = 27; case 27: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
  23308. err$1 = _r$9;
  23309. $s = 20; continue;
  23310. /* } else if (_ref === 21) { */ case 16:
  23311. _r$10 = d.decodeMap(name, data, val); /* */ $s = 28; case 28: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
  23312. err$1 = _r$10;
  23313. $s = 20; continue;
  23314. /* } else if (_ref === 22) { */ case 17:
  23315. _r$11 = d.decodePtr(name, data, val); /* */ $s = 29; case 29: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
  23316. err$1 = _r$11;
  23317. $s = 20; continue;
  23318. /* } else if (_ref === 23) { */ case 18:
  23319. _r$12 = d.decodeSlice(name, data, val); /* */ $s = 30; case 30: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; }
  23320. err$1 = _r$12;
  23321. $s = 20; continue;
  23322. /* } else { */ case 19:
  23323. _r$13 = fmt.Errorf("%s: unsupported type: %s", new sliceType$2([new $String(name), new reflect.Kind(dataKind)])); /* */ $s = 31; case 31: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; }
  23324. return _r$13;
  23325. /* } */ case 20:
  23326. if (!(d.config.Metadata === ptrType$1.nil) && !(name === "")) {
  23327. d.config.Metadata.Keys = $append(d.config.Metadata.Keys, name);
  23328. }
  23329. return err$1;
  23330. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Decoder.ptr.prototype.decode }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$12 = _r$12; $f._r$13 = _r$13; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._r$9 = _r$9; $f._ref = _ref; $f._tuple = _tuple; $f.d = d; $f.data = data; $f.dataKind = dataKind; $f.dataVal = dataVal; $f.err = err; $f.err$1 = err$1; $f.name = name; $f.val = val; $f.$s = $s; $f.$r = $r; return $f;
  23331. };
  23332. Decoder.prototype.decode = function(name, data, val) { return this.$val.decode(name, data, val); };
  23333. Decoder.ptr.prototype.decodeBasic = function(name, data, val) {
  23334. var $ptr, _r, _r$1, _r$2, d, data, dataVal, dataValType, name, val, $s, $r;
  23335. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; d = $f.d; data = $f.data; dataVal = $f.dataVal; dataValType = $f.dataValType; name = $f.name; val = $f.val; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  23336. d = this;
  23337. val = val;
  23338. _r = reflect.ValueOf(data); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  23339. dataVal = _r;
  23340. dataValType = dataVal.Type();
  23341. _r$1 = dataValType.AssignableTo(val.Type()); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  23342. /* */ if (!_r$1) { $s = 2; continue; }
  23343. /* */ $s = 3; continue;
  23344. /* if (!_r$1) { */ case 2:
  23345. _r$2 = fmt.Errorf("'%s' expected type '%s', got '%s'", new sliceType$2([new $String(name), val.Type(), dataValType])); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  23346. return _r$2;
  23347. /* } */ case 3:
  23348. $r = val.Set(dataVal); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  23349. return $ifaceNil;
  23350. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Decoder.ptr.prototype.decodeBasic }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f.d = d; $f.data = data; $f.dataVal = dataVal; $f.dataValType = dataValType; $f.name = name; $f.val = val; $f.$s = $s; $f.$r = $r; return $f;
  23351. };
  23352. Decoder.prototype.decodeBasic = function(name, data, val) { return this.$val.decodeBasic(name, data, val); };
  23353. Decoder.ptr.prototype.decodeString = function(name, data, val) {
  23354. var $ptr, _r, _r$1, _r$2, _r$3, _r$4, _r$5, converted, d, data, dataKind, dataType, dataVal, elemKind, name, val, $s, $r;
  23355. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; converted = $f.converted; d = $f.d; data = $f.data; dataKind = $f.dataKind; dataType = $f.dataType; dataVal = $f.dataVal; elemKind = $f.elemKind; name = $f.name; val = $f.val; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  23356. d = this;
  23357. val = val;
  23358. _r = reflect.ValueOf(data); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  23359. dataVal = _r;
  23360. dataKind = getKind(dataVal);
  23361. converted = true;
  23362. /* */ if (dataKind === 24) { $s = 2; continue; }
  23363. /* */ if ((dataKind === 1) && d.config.WeaklyTypedInput) { $s = 3; continue; }
  23364. /* */ if ((dataKind === 2) && d.config.WeaklyTypedInput) { $s = 4; continue; }
  23365. /* */ if ((dataKind === 7) && d.config.WeaklyTypedInput) { $s = 5; continue; }
  23366. /* */ if ((dataKind === 13) && d.config.WeaklyTypedInput) { $s = 6; continue; }
  23367. /* */ if ((dataKind === 23) && d.config.WeaklyTypedInput) { $s = 7; continue; }
  23368. /* */ $s = 8; continue;
  23369. /* if (dataKind === 24) { */ case 2:
  23370. _r$1 = dataVal.String(); /* */ $s = 10; case 10: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  23371. $r = val.SetString(_r$1); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  23372. $s = 9; continue;
  23373. /* } else if ((dataKind === 1) && d.config.WeaklyTypedInput) { */ case 3:
  23374. if (dataVal.Bool()) {
  23375. val.SetString("1");
  23376. } else {
  23377. val.SetString("0");
  23378. }
  23379. $s = 9; continue;
  23380. /* } else if ((dataKind === 2) && d.config.WeaklyTypedInput) { */ case 4:
  23381. val.SetString(strconv.FormatInt(dataVal.Int(), 10));
  23382. $s = 9; continue;
  23383. /* } else if ((dataKind === 7) && d.config.WeaklyTypedInput) { */ case 5:
  23384. val.SetString(strconv.FormatUint(dataVal.Uint(), 10));
  23385. $s = 9; continue;
  23386. /* } else if ((dataKind === 13) && d.config.WeaklyTypedInput) { */ case 6:
  23387. val.SetString(strconv.FormatFloat(dataVal.Float(), 102, -1, 64));
  23388. $s = 9; continue;
  23389. /* } else if ((dataKind === 23) && d.config.WeaklyTypedInput) { */ case 7:
  23390. dataType = dataVal.Type();
  23391. _r$2 = dataType.Elem(); /* */ $s = 12; case 12: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  23392. _r$3 = _r$2.Kind(); /* */ $s = 13; case 13: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  23393. elemKind = _r$3;
  23394. /* */ if (elemKind === 8) { $s = 14; continue; }
  23395. /* */ $s = 15; continue;
  23396. /* if (elemKind === 8) { */ case 14:
  23397. _r$4 = dataVal.Interface(); /* */ $s = 17; case 17: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
  23398. $r = val.SetString($bytesToString($assertType(_r$4, sliceType$1))); /* */ $s = 18; case 18: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  23399. $s = 16; continue;
  23400. /* } else { */ case 15:
  23401. converted = false;
  23402. /* } */ case 16:
  23403. $s = 9; continue;
  23404. /* } else { */ case 8:
  23405. converted = false;
  23406. /* } */ case 9:
  23407. /* */ if (!converted) { $s = 19; continue; }
  23408. /* */ $s = 20; continue;
  23409. /* if (!converted) { */ case 19:
  23410. _r$5 = fmt.Errorf("'%s' expected type '%s', got unconvertible type '%s'", new sliceType$2([new $String(name), val.Type(), dataVal.Type()])); /* */ $s = 21; case 21: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
  23411. return _r$5;
  23412. /* } */ case 20:
  23413. return $ifaceNil;
  23414. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Decoder.ptr.prototype.decodeString }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f.converted = converted; $f.d = d; $f.data = data; $f.dataKind = dataKind; $f.dataType = dataType; $f.dataVal = dataVal; $f.elemKind = elemKind; $f.name = name; $f.val = val; $f.$s = $s; $f.$r = $r; return $f;
  23415. };
  23416. Decoder.prototype.decodeString = function(name, data, val) { return this.$val.decodeString(name, data, val); };
  23417. Decoder.ptr.prototype.decodeInt = function(name, data, val) {
  23418. var $ptr, _arg, _arg$1, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _tuple, d, data, dataKind, dataVal, err, i, name, val, x, $s, $r;
  23419. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _arg = $f._arg; _arg$1 = $f._arg$1; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _tuple = $f._tuple; d = $f.d; data = $f.data; dataKind = $f.dataKind; dataVal = $f.dataVal; err = $f.err; i = $f.i; name = $f.name; val = $f.val; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  23420. d = this;
  23421. val = val;
  23422. _r = reflect.ValueOf(data); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  23423. dataVal = _r;
  23424. dataKind = getKind(dataVal);
  23425. /* */ if (dataKind === 2) { $s = 2; continue; }
  23426. /* */ if (dataKind === 7) { $s = 3; continue; }
  23427. /* */ if (dataKind === 13) { $s = 4; continue; }
  23428. /* */ if ((dataKind === 1) && d.config.WeaklyTypedInput) { $s = 5; continue; }
  23429. /* */ if ((dataKind === 24) && d.config.WeaklyTypedInput) { $s = 6; continue; }
  23430. /* */ $s = 7; continue;
  23431. /* if (dataKind === 2) { */ case 2:
  23432. val.SetInt(dataVal.Int());
  23433. $s = 8; continue;
  23434. /* } else if (dataKind === 7) { */ case 3:
  23435. val.SetInt((x = dataVal.Uint(), new $Int64(x.$high, x.$low)));
  23436. $s = 8; continue;
  23437. /* } else if (dataKind === 13) { */ case 4:
  23438. val.SetInt(new $Int64(0, dataVal.Float()));
  23439. $s = 8; continue;
  23440. /* } else if ((dataKind === 1) && d.config.WeaklyTypedInput) { */ case 5:
  23441. if (dataVal.Bool()) {
  23442. val.SetInt(new $Int64(0, 1));
  23443. } else {
  23444. val.SetInt(new $Int64(0, 0));
  23445. }
  23446. $s = 8; continue;
  23447. /* } else if ((dataKind === 24) && d.config.WeaklyTypedInput) { */ case 6:
  23448. _r$1 = dataVal.String(); /* */ $s = 9; case 9: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  23449. _arg = _r$1;
  23450. _r$2 = val.Type().Bits(); /* */ $s = 10; case 10: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  23451. _arg$1 = _r$2;
  23452. _r$3 = strconv.ParseInt(_arg, 0, _arg$1); /* */ $s = 11; case 11: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  23453. _tuple = _r$3; i = _tuple[0]; err = _tuple[1];
  23454. /* */ if ($interfaceIsEqual(err, $ifaceNil)) { $s = 12; continue; }
  23455. /* */ $s = 13; continue;
  23456. /* if ($interfaceIsEqual(err, $ifaceNil)) { */ case 12:
  23457. val.SetInt(i);
  23458. $s = 14; continue;
  23459. /* } else { */ case 13:
  23460. _r$4 = fmt.Errorf("cannot parse '%s' as int: %s", new sliceType$2([new $String(name), err])); /* */ $s = 15; case 15: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
  23461. return _r$4;
  23462. /* } */ case 14:
  23463. $s = 8; continue;
  23464. /* } else { */ case 7:
  23465. _r$5 = fmt.Errorf("'%s' expected type '%s', got unconvertible type '%s'", new sliceType$2([new $String(name), val.Type(), dataVal.Type()])); /* */ $s = 16; case 16: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
  23466. return _r$5;
  23467. /* } */ case 8:
  23468. return $ifaceNil;
  23469. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Decoder.ptr.prototype.decodeInt }; } $f.$ptr = $ptr; $f._arg = _arg; $f._arg$1 = _arg$1; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._tuple = _tuple; $f.d = d; $f.data = data; $f.dataKind = dataKind; $f.dataVal = dataVal; $f.err = err; $f.i = i; $f.name = name; $f.val = val; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
  23470. };
  23471. Decoder.prototype.decodeInt = function(name, data, val) { return this.$val.decodeInt(name, data, val); };
  23472. Decoder.ptr.prototype.decodeUint = function(name, data, val) {
  23473. var $ptr, _arg, _arg$1, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _tuple, d, data, dataKind, dataVal, err, i, name, val, x, $s, $r;
  23474. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _arg = $f._arg; _arg$1 = $f._arg$1; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _tuple = $f._tuple; d = $f.d; data = $f.data; dataKind = $f.dataKind; dataVal = $f.dataVal; err = $f.err; i = $f.i; name = $f.name; val = $f.val; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  23475. d = this;
  23476. val = val;
  23477. _r = reflect.ValueOf(data); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  23478. dataVal = _r;
  23479. dataKind = getKind(dataVal);
  23480. /* */ if (dataKind === 2) { $s = 2; continue; }
  23481. /* */ if (dataKind === 7) { $s = 3; continue; }
  23482. /* */ if (dataKind === 13) { $s = 4; continue; }
  23483. /* */ if ((dataKind === 1) && d.config.WeaklyTypedInput) { $s = 5; continue; }
  23484. /* */ if ((dataKind === 24) && d.config.WeaklyTypedInput) { $s = 6; continue; }
  23485. /* */ $s = 7; continue;
  23486. /* if (dataKind === 2) { */ case 2:
  23487. val.SetUint((x = dataVal.Int(), new $Uint64(x.$high, x.$low)));
  23488. $s = 8; continue;
  23489. /* } else if (dataKind === 7) { */ case 3:
  23490. val.SetUint(dataVal.Uint());
  23491. $s = 8; continue;
  23492. /* } else if (dataKind === 13) { */ case 4:
  23493. val.SetUint(new $Uint64(0, dataVal.Float()));
  23494. $s = 8; continue;
  23495. /* } else if ((dataKind === 1) && d.config.WeaklyTypedInput) { */ case 5:
  23496. if (dataVal.Bool()) {
  23497. val.SetUint(new $Uint64(0, 1));
  23498. } else {
  23499. val.SetUint(new $Uint64(0, 0));
  23500. }
  23501. $s = 8; continue;
  23502. /* } else if ((dataKind === 24) && d.config.WeaklyTypedInput) { */ case 6:
  23503. _r$1 = dataVal.String(); /* */ $s = 9; case 9: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  23504. _arg = _r$1;
  23505. _r$2 = val.Type().Bits(); /* */ $s = 10; case 10: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  23506. _arg$1 = _r$2;
  23507. _r$3 = strconv.ParseUint(_arg, 0, _arg$1); /* */ $s = 11; case 11: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  23508. _tuple = _r$3; i = _tuple[0]; err = _tuple[1];
  23509. /* */ if ($interfaceIsEqual(err, $ifaceNil)) { $s = 12; continue; }
  23510. /* */ $s = 13; continue;
  23511. /* if ($interfaceIsEqual(err, $ifaceNil)) { */ case 12:
  23512. val.SetUint(i);
  23513. $s = 14; continue;
  23514. /* } else { */ case 13:
  23515. _r$4 = fmt.Errorf("cannot parse '%s' as uint: %s", new sliceType$2([new $String(name), err])); /* */ $s = 15; case 15: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
  23516. return _r$4;
  23517. /* } */ case 14:
  23518. $s = 8; continue;
  23519. /* } else { */ case 7:
  23520. _r$5 = fmt.Errorf("'%s' expected type '%s', got unconvertible type '%s'", new sliceType$2([new $String(name), val.Type(), dataVal.Type()])); /* */ $s = 16; case 16: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
  23521. return _r$5;
  23522. /* } */ case 8:
  23523. return $ifaceNil;
  23524. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Decoder.ptr.prototype.decodeUint }; } $f.$ptr = $ptr; $f._arg = _arg; $f._arg$1 = _arg$1; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._tuple = _tuple; $f.d = d; $f.data = data; $f.dataKind = dataKind; $f.dataVal = dataVal; $f.err = err; $f.i = i; $f.name = name; $f.val = val; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
  23525. };
  23526. Decoder.prototype.decodeUint = function(name, data, val) { return this.$val.decodeUint(name, data, val); };
  23527. Decoder.ptr.prototype.decodeBool = function(name, data, val) {
  23528. var $ptr, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _tuple, b, d, data, dataKind, dataVal, err, name, val, x, x$1, $s, $r;
  23529. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _tuple = $f._tuple; b = $f.b; d = $f.d; data = $f.data; dataKind = $f.dataKind; dataVal = $f.dataVal; err = $f.err; name = $f.name; val = $f.val; x = $f.x; x$1 = $f.x$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  23530. d = this;
  23531. val = val;
  23532. _r = reflect.ValueOf(data); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  23533. dataVal = _r;
  23534. dataKind = getKind(dataVal);
  23535. /* */ if (dataKind === 1) { $s = 2; continue; }
  23536. /* */ if ((dataKind === 2) && d.config.WeaklyTypedInput) { $s = 3; continue; }
  23537. /* */ if ((dataKind === 7) && d.config.WeaklyTypedInput) { $s = 4; continue; }
  23538. /* */ if ((dataKind === 13) && d.config.WeaklyTypedInput) { $s = 5; continue; }
  23539. /* */ if ((dataKind === 24) && d.config.WeaklyTypedInput) { $s = 6; continue; }
  23540. /* */ $s = 7; continue;
  23541. /* if (dataKind === 1) { */ case 2:
  23542. val.SetBool(dataVal.Bool());
  23543. $s = 8; continue;
  23544. /* } else if ((dataKind === 2) && d.config.WeaklyTypedInput) { */ case 3:
  23545. val.SetBool(!((x = dataVal.Int(), (x.$high === 0 && x.$low === 0))));
  23546. $s = 8; continue;
  23547. /* } else if ((dataKind === 7) && d.config.WeaklyTypedInput) { */ case 4:
  23548. val.SetBool(!((x$1 = dataVal.Uint(), (x$1.$high === 0 && x$1.$low === 0))));
  23549. $s = 8; continue;
  23550. /* } else if ((dataKind === 13) && d.config.WeaklyTypedInput) { */ case 5:
  23551. val.SetBool(!((dataVal.Float() === 0)));
  23552. $s = 8; continue;
  23553. /* } else if ((dataKind === 24) && d.config.WeaklyTypedInput) { */ case 6:
  23554. _r$1 = dataVal.String(); /* */ $s = 9; case 9: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  23555. _r$2 = strconv.ParseBool(_r$1); /* */ $s = 10; case 10: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  23556. _tuple = _r$2; b = _tuple[0]; err = _tuple[1];
  23557. /* */ if ($interfaceIsEqual(err, $ifaceNil)) { $s = 11; continue; }
  23558. _r$3 = dataVal.String(); /* */ $s = 15; case 15: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  23559. /* */ if (_r$3 === "") { $s = 12; continue; }
  23560. /* */ $s = 13; continue;
  23561. /* if ($interfaceIsEqual(err, $ifaceNil)) { */ case 11:
  23562. val.SetBool(b);
  23563. $s = 14; continue;
  23564. /* } else if (_r$3 === "") { */ case 12:
  23565. val.SetBool(false);
  23566. $s = 14; continue;
  23567. /* } else { */ case 13:
  23568. _r$4 = fmt.Errorf("cannot parse '%s' as bool: %s", new sliceType$2([new $String(name), err])); /* */ $s = 16; case 16: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
  23569. return _r$4;
  23570. /* } */ case 14:
  23571. $s = 8; continue;
  23572. /* } else { */ case 7:
  23573. _r$5 = fmt.Errorf("'%s' expected type '%s', got unconvertible type '%s'", new sliceType$2([new $String(name), val.Type(), dataVal.Type()])); /* */ $s = 17; case 17: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
  23574. return _r$5;
  23575. /* } */ case 8:
  23576. return $ifaceNil;
  23577. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Decoder.ptr.prototype.decodeBool }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._tuple = _tuple; $f.b = b; $f.d = d; $f.data = data; $f.dataKind = dataKind; $f.dataVal = dataVal; $f.err = err; $f.name = name; $f.val = val; $f.x = x; $f.x$1 = x$1; $f.$s = $s; $f.$r = $r; return $f;
  23578. };
  23579. Decoder.prototype.decodeBool = function(name, data, val) { return this.$val.decodeBool(name, data, val); };
  23580. Decoder.ptr.prototype.decodeFloat = function(name, data, val) {
  23581. var $ptr, _arg, _arg$1, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _tuple, d, data, dataKind, dataVal, err, f, name, val, $s, $r;
  23582. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _arg = $f._arg; _arg$1 = $f._arg$1; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _tuple = $f._tuple; d = $f.d; data = $f.data; dataKind = $f.dataKind; dataVal = $f.dataVal; err = $f.err; f = $f.f; name = $f.name; val = $f.val; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  23583. d = this;
  23584. val = val;
  23585. _r = reflect.ValueOf(data); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  23586. dataVal = _r;
  23587. dataKind = getKind(dataVal);
  23588. /* */ if (dataKind === 2) { $s = 2; continue; }
  23589. /* */ if (dataKind === 7) { $s = 3; continue; }
  23590. /* */ if (dataKind === 13) { $s = 4; continue; }
  23591. /* */ if ((dataKind === 1) && d.config.WeaklyTypedInput) { $s = 5; continue; }
  23592. /* */ if ((dataKind === 24) && d.config.WeaklyTypedInput) { $s = 6; continue; }
  23593. /* */ $s = 7; continue;
  23594. /* if (dataKind === 2) { */ case 2:
  23595. val.SetFloat($flatten64(dataVal.Int()));
  23596. $s = 8; continue;
  23597. /* } else if (dataKind === 7) { */ case 3:
  23598. val.SetFloat($flatten64(dataVal.Uint()));
  23599. $s = 8; continue;
  23600. /* } else if (dataKind === 13) { */ case 4:
  23601. val.SetFloat(dataVal.Float());
  23602. $s = 8; continue;
  23603. /* } else if ((dataKind === 1) && d.config.WeaklyTypedInput) { */ case 5:
  23604. if (dataVal.Bool()) {
  23605. val.SetFloat(1);
  23606. } else {
  23607. val.SetFloat(0);
  23608. }
  23609. $s = 8; continue;
  23610. /* } else if ((dataKind === 24) && d.config.WeaklyTypedInput) { */ case 6:
  23611. _r$1 = dataVal.String(); /* */ $s = 9; case 9: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  23612. _arg = _r$1;
  23613. _r$2 = val.Type().Bits(); /* */ $s = 10; case 10: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  23614. _arg$1 = _r$2;
  23615. _r$3 = strconv.ParseFloat(_arg, _arg$1); /* */ $s = 11; case 11: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  23616. _tuple = _r$3; f = _tuple[0]; err = _tuple[1];
  23617. /* */ if ($interfaceIsEqual(err, $ifaceNil)) { $s = 12; continue; }
  23618. /* */ $s = 13; continue;
  23619. /* if ($interfaceIsEqual(err, $ifaceNil)) { */ case 12:
  23620. val.SetFloat(f);
  23621. $s = 14; continue;
  23622. /* } else { */ case 13:
  23623. _r$4 = fmt.Errorf("cannot parse '%s' as float: %s", new sliceType$2([new $String(name), err])); /* */ $s = 15; case 15: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
  23624. return _r$4;
  23625. /* } */ case 14:
  23626. $s = 8; continue;
  23627. /* } else { */ case 7:
  23628. _r$5 = fmt.Errorf("'%s' expected type '%s', got unconvertible type '%s'", new sliceType$2([new $String(name), val.Type(), dataVal.Type()])); /* */ $s = 16; case 16: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
  23629. return _r$5;
  23630. /* } */ case 8:
  23631. return $ifaceNil;
  23632. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Decoder.ptr.prototype.decodeFloat }; } $f.$ptr = $ptr; $f._arg = _arg; $f._arg$1 = _arg$1; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._tuple = _tuple; $f.d = d; $f.data = data; $f.dataKind = dataKind; $f.dataVal = dataVal; $f.err = err; $f.f = f; $f.name = name; $f.val = val; $f.$s = $s; $f.$r = $r; return $f;
  23633. };
  23634. Decoder.prototype.decodeFloat = function(name, data, val) { return this.$val.decodeFloat(name, data, val); };
  23635. Decoder.ptr.prototype.decodeMap = function(name, data, val) {
  23636. var $ptr, _arg, _arg$1, _arg$2, _i, _r, _r$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$16, _r$17, _r$18, _r$19, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, currentKey, currentVal, d, data, dataVal, err, err$1, errors$1, fieldName, k, mapType, name, v, val, valElemType, valKeyType, valMap, valType, $s, $r;
  23637. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _arg = $f._arg; _arg$1 = $f._arg$1; _arg$2 = $f._arg$2; _i = $f._i; _r = $f._r; _r$1 = $f._r$1; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$12 = $f._r$12; _r$13 = $f._r$13; _r$14 = $f._r$14; _r$15 = $f._r$15; _r$16 = $f._r$16; _r$17 = $f._r$17; _r$18 = $f._r$18; _r$19 = $f._r$19; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _r$9 = $f._r$9; _ref = $f._ref; currentKey = $f.currentKey; currentVal = $f.currentVal; d = $f.d; data = $f.data; dataVal = $f.dataVal; err = $f.err; err$1 = $f.err$1; errors$1 = $f.errors$1; fieldName = $f.fieldName; k = $f.k; mapType = $f.mapType; name = $f.name; v = $f.v; val = $f.val; valElemType = $f.valElemType; valKeyType = $f.valKeyType; valMap = $f.valMap; valType = $f.valType; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  23638. d = this;
  23639. val = val;
  23640. valType = val.Type();
  23641. _r = valType.Key(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  23642. valKeyType = _r;
  23643. _r$1 = valType.Elem(); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  23644. valElemType = _r$1;
  23645. _r$2 = reflect.MapOf(valKeyType, valElemType); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  23646. mapType = _r$2;
  23647. _r$3 = reflect.MakeMap(mapType); /* */ $s = 4; case 4: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  23648. valMap = _r$3;
  23649. _r$4 = reflect.ValueOf(data); /* */ $s = 5; case 5: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
  23650. _r$5 = reflect.Indirect(_r$4); /* */ $s = 6; case 6: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
  23651. dataVal = _r$5;
  23652. /* */ if (!((dataVal.Kind() === 21))) { $s = 7; continue; }
  23653. /* */ $s = 8; continue;
  23654. /* if (!((dataVal.Kind() === 21))) { */ case 7:
  23655. /* */ if (d.config.WeaklyTypedInput && ((dataVal.Kind() === 23) || (dataVal.Kind() === 17)) && (dataVal.Len() === 0)) { $s = 9; continue; }
  23656. /* */ $s = 10; continue;
  23657. /* if (d.config.WeaklyTypedInput && ((dataVal.Kind() === 23) || (dataVal.Kind() === 17)) && (dataVal.Len() === 0)) { */ case 9:
  23658. $r = val.Set(valMap); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  23659. return $ifaceNil;
  23660. $s = 11; continue;
  23661. /* } else { */ case 10:
  23662. _r$6 = fmt.Errorf("'%s' expected a map, got '%s'", new sliceType$2([new $String(name), new reflect.Kind(dataVal.Kind())])); /* */ $s = 13; case 13: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
  23663. return _r$6;
  23664. /* } */ case 11:
  23665. /* } */ case 8:
  23666. errors$1 = $makeSlice(sliceType, 0);
  23667. _r$7 = dataVal.MapKeys(); /* */ $s = 14; case 14: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
  23668. _ref = _r$7;
  23669. _i = 0;
  23670. /* while (true) { */ case 15:
  23671. /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 16; continue; }
  23672. k = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]);
  23673. _r$8 = fmt.Sprintf("%s[%s]", new sliceType$2([new $String(name), new k.constructor.elem(k)])); /* */ $s = 17; case 17: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
  23674. fieldName = _r$8;
  23675. _r$9 = reflect.New(valKeyType); /* */ $s = 18; case 18: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
  23676. _r$10 = reflect.Indirect(_r$9); /* */ $s = 19; case 19: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
  23677. currentKey = _r$10;
  23678. _arg = fieldName;
  23679. _r$11 = k.Interface(); /* */ $s = 20; case 20: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
  23680. _arg$1 = _r$11;
  23681. _arg$2 = currentKey;
  23682. _r$12 = d.decode(_arg, _arg$1, _arg$2); /* */ $s = 21; case 21: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; }
  23683. err = _r$12;
  23684. /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 22; continue; }
  23685. /* */ $s = 23; continue;
  23686. /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 22:
  23687. _r$13 = appendErrors(errors$1, err); /* */ $s = 24; case 24: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; }
  23688. errors$1 = _r$13;
  23689. _i++;
  23690. /* continue; */ $s = 15; continue;
  23691. /* } */ case 23:
  23692. _r$14 = dataVal.MapIndex(k); /* */ $s = 25; case 25: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; }
  23693. _r$15 = _r$14.Interface(); /* */ $s = 26; case 26: if($c) { $c = false; _r$15 = _r$15.$blk(); } if (_r$15 && _r$15.$blk !== undefined) { break s; }
  23694. v = _r$15;
  23695. _r$16 = reflect.New(valElemType); /* */ $s = 27; case 27: if($c) { $c = false; _r$16 = _r$16.$blk(); } if (_r$16 && _r$16.$blk !== undefined) { break s; }
  23696. _r$17 = reflect.Indirect(_r$16); /* */ $s = 28; case 28: if($c) { $c = false; _r$17 = _r$17.$blk(); } if (_r$17 && _r$17.$blk !== undefined) { break s; }
  23697. currentVal = _r$17;
  23698. _r$18 = d.decode(fieldName, v, currentVal); /* */ $s = 29; case 29: if($c) { $c = false; _r$18 = _r$18.$blk(); } if (_r$18 && _r$18.$blk !== undefined) { break s; }
  23699. err$1 = _r$18;
  23700. /* */ if (!($interfaceIsEqual(err$1, $ifaceNil))) { $s = 30; continue; }
  23701. /* */ $s = 31; continue;
  23702. /* if (!($interfaceIsEqual(err$1, $ifaceNil))) { */ case 30:
  23703. _r$19 = appendErrors(errors$1, err$1); /* */ $s = 32; case 32: if($c) { $c = false; _r$19 = _r$19.$blk(); } if (_r$19 && _r$19.$blk !== undefined) { break s; }
  23704. errors$1 = _r$19;
  23705. _i++;
  23706. /* continue; */ $s = 15; continue;
  23707. /* } */ case 31:
  23708. $r = valMap.SetMapIndex(currentKey, currentVal); /* */ $s = 33; case 33: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  23709. _i++;
  23710. /* } */ $s = 15; continue; case 16:
  23711. $r = val.Set(valMap); /* */ $s = 34; case 34: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  23712. if (errors$1.$length > 0) {
  23713. return new Error.ptr(errors$1);
  23714. }
  23715. return $ifaceNil;
  23716. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Decoder.ptr.prototype.decodeMap }; } $f.$ptr = $ptr; $f._arg = _arg; $f._arg$1 = _arg$1; $f._arg$2 = _arg$2; $f._i = _i; $f._r = _r; $f._r$1 = _r$1; $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$12 = _r$12; $f._r$13 = _r$13; $f._r$14 = _r$14; $f._r$15 = _r$15; $f._r$16 = _r$16; $f._r$17 = _r$17; $f._r$18 = _r$18; $f._r$19 = _r$19; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._r$9 = _r$9; $f._ref = _ref; $f.currentKey = currentKey; $f.currentVal = currentVal; $f.d = d; $f.data = data; $f.dataVal = dataVal; $f.err = err; $f.err$1 = err$1; $f.errors$1 = errors$1; $f.fieldName = fieldName; $f.k = k; $f.mapType = mapType; $f.name = name; $f.v = v; $f.val = val; $f.valElemType = valElemType; $f.valKeyType = valKeyType; $f.valMap = valMap; $f.valType = valType; $f.$s = $s; $f.$r = $r; return $f;
  23717. };
  23718. Decoder.prototype.decodeMap = function(name, data, val) { return this.$val.decodeMap(name, data, val); };
  23719. Decoder.ptr.prototype.decodePtr = function(name, data, val) {
  23720. var $ptr, _arg, _arg$1, _arg$2, _r, _r$1, _r$2, _r$3, d, data, err, name, realVal, val, valElemType, valType, $s, $r;
  23721. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _arg = $f._arg; _arg$1 = $f._arg$1; _arg$2 = $f._arg$2; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; d = $f.d; data = $f.data; err = $f.err; name = $f.name; realVal = $f.realVal; val = $f.val; valElemType = $f.valElemType; valType = $f.valType; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  23722. d = this;
  23723. val = val;
  23724. valType = val.Type();
  23725. _r = valType.Elem(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  23726. valElemType = _r;
  23727. _r$1 = reflect.New(valElemType); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  23728. realVal = _r$1;
  23729. _arg = name;
  23730. _arg$1 = data;
  23731. _r$2 = reflect.Indirect(realVal); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  23732. _arg$2 = _r$2;
  23733. _r$3 = d.decode(_arg, _arg$1, _arg$2); /* */ $s = 4; case 4: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  23734. err = _r$3;
  23735. /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 5; continue; }
  23736. /* */ $s = 6; continue;
  23737. /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 5:
  23738. return err;
  23739. /* } */ case 6:
  23740. $r = val.Set(realVal); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  23741. return $ifaceNil;
  23742. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Decoder.ptr.prototype.decodePtr }; } $f.$ptr = $ptr; $f._arg = _arg; $f._arg$1 = _arg$1; $f._arg$2 = _arg$2; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f.d = d; $f.data = data; $f.err = err; $f.name = name; $f.realVal = realVal; $f.val = val; $f.valElemType = valElemType; $f.valType = valType; $f.$s = $s; $f.$r = $r; return $f;
  23743. };
  23744. Decoder.prototype.decodePtr = function(name, data, val) { return this.$val.decodePtr(name, data, val); };
  23745. Decoder.ptr.prototype.decodeSlice = function(name, data, val) {
  23746. var $ptr, _r, _r$1, _r$10, _r$11, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, currentData, currentField, d, data, dataVal, dataValKind, err, errors$1, fieldName, i, name, sliceType$3, val, valElemType, valSlice, valType, $s, $r;
  23747. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _r$9 = $f._r$9; currentData = $f.currentData; currentField = $f.currentField; d = $f.d; data = $f.data; dataVal = $f.dataVal; dataValKind = $f.dataValKind; err = $f.err; errors$1 = $f.errors$1; fieldName = $f.fieldName; i = $f.i; name = $f.name; sliceType$3 = $f.sliceType$3; val = $f.val; valElemType = $f.valElemType; valSlice = $f.valSlice; valType = $f.valType; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  23748. d = this;
  23749. val = val;
  23750. _r = reflect.ValueOf(data); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  23751. _r$1 = reflect.Indirect(_r); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  23752. dataVal = _r$1;
  23753. dataValKind = dataVal.Kind();
  23754. valType = val.Type();
  23755. _r$2 = valType.Elem(); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  23756. valElemType = _r$2;
  23757. sliceType$3 = reflect.SliceOf(valElemType);
  23758. /* */ if (!((dataValKind === 17)) && !((dataValKind === 23))) { $s = 4; continue; }
  23759. /* */ $s = 5; continue;
  23760. /* if (!((dataValKind === 17)) && !((dataValKind === 23))) { */ case 4:
  23761. /* */ if (d.config.WeaklyTypedInput && (dataVal.Kind() === 21) && (dataVal.Len() === 0)) { $s = 6; continue; }
  23762. /* */ $s = 7; continue;
  23763. /* if (d.config.WeaklyTypedInput && (dataVal.Kind() === 21) && (dataVal.Len() === 0)) { */ case 6:
  23764. _r$3 = reflect.MakeSlice(sliceType$3, 0, 0); /* */ $s = 9; case 9: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  23765. $r = val.Set(_r$3); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  23766. return $ifaceNil;
  23767. $s = 8; continue;
  23768. /* } else { */ case 7:
  23769. _r$4 = fmt.Errorf("'%s': source data must be an array or slice, got %s", new sliceType$2([new $String(name), new reflect.Kind(dataValKind)])); /* */ $s = 11; case 11: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
  23770. return _r$4;
  23771. /* } */ case 8:
  23772. /* } */ case 5:
  23773. _r$5 = reflect.MakeSlice(sliceType$3, dataVal.Len(), dataVal.Len()); /* */ $s = 12; case 12: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
  23774. valSlice = _r$5;
  23775. errors$1 = $makeSlice(sliceType, 0);
  23776. i = 0;
  23777. /* while (true) { */ case 13:
  23778. /* if (!(i < dataVal.Len())) { break; } */ if(!(i < dataVal.Len())) { $s = 14; continue; }
  23779. _r$6 = dataVal.Index(i); /* */ $s = 15; case 15: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
  23780. _r$7 = _r$6.Interface(); /* */ $s = 16; case 16: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
  23781. currentData = _r$7;
  23782. _r$8 = valSlice.Index(i); /* */ $s = 17; case 17: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
  23783. currentField = _r$8;
  23784. _r$9 = fmt.Sprintf("%s[%d]", new sliceType$2([new $String(name), new $Int(i)])); /* */ $s = 18; case 18: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
  23785. fieldName = _r$9;
  23786. _r$10 = d.decode(fieldName, currentData, currentField); /* */ $s = 19; case 19: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
  23787. err = _r$10;
  23788. /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 20; continue; }
  23789. /* */ $s = 21; continue;
  23790. /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 20:
  23791. _r$11 = appendErrors(errors$1, err); /* */ $s = 22; case 22: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
  23792. errors$1 = _r$11;
  23793. /* } */ case 21:
  23794. i = i + (1) >> 0;
  23795. /* } */ $s = 13; continue; case 14:
  23796. $r = val.Set(valSlice); /* */ $s = 23; case 23: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  23797. if (errors$1.$length > 0) {
  23798. return new Error.ptr(errors$1);
  23799. }
  23800. return $ifaceNil;
  23801. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Decoder.ptr.prototype.decodeSlice }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._r$9 = _r$9; $f.currentData = currentData; $f.currentField = currentField; $f.d = d; $f.data = data; $f.dataVal = dataVal; $f.dataValKind = dataValKind; $f.err = err; $f.errors$1 = errors$1; $f.fieldName = fieldName; $f.i = i; $f.name = name; $f.sliceType$3 = sliceType$3; $f.val = val; $f.valElemType = valElemType; $f.valSlice = valSlice; $f.valType = valType; $f.$s = $s; $f.$r = $r; return $f;
  23802. };
  23803. Decoder.prototype.decodeSlice = function(name, data, val) { return this.$val.decodeSlice(name, data, val); };
  23804. Decoder.ptr.prototype.decodeStruct = function(name, data, val) {
  23805. var $ptr, _arg, _arg$1, _arg$2, _arg$3, _arg$4, _arg$5, _arg$6, _entry, _entry$1, _entry$2, _entry$3, _i, _i$1, _i$2, _i$3, _i$4, _i$5, _key, _key$1, _key$2, _keys, _keys$1, _keys$2, _keys$3, _r, _r$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$16, _r$17, _r$18, _r$19, _r$2, _r$20, _r$21, _r$22, _r$23, _r$24, _r$25, _r$26, _r$27, _r$28, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _ref$1, _ref$2, _ref$3, _ref$4, _ref$5, _tuple, d, data, dataVal, dataValKey, dataValKey$1, dataValKeys, dataValKeysUnused, dataValKind, dataValType, err, err$1, errors$1, field, fieldKind, fieldName, fieldType, fieldType$1, fields, i, key, keys, kind, mK, name, ok, rawKey, rawKey$1, rawMapKey, rawMapVal, squash, structType$1, structVal, structs, tag, tagParts, tagValue, val, x, $s, $r;
  23806. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _arg = $f._arg; _arg$1 = $f._arg$1; _arg$2 = $f._arg$2; _arg$3 = $f._arg$3; _arg$4 = $f._arg$4; _arg$5 = $f._arg$5; _arg$6 = $f._arg$6; _entry = $f._entry; _entry$1 = $f._entry$1; _entry$2 = $f._entry$2; _entry$3 = $f._entry$3; _i = $f._i; _i$1 = $f._i$1; _i$2 = $f._i$2; _i$3 = $f._i$3; _i$4 = $f._i$4; _i$5 = $f._i$5; _key = $f._key; _key$1 = $f._key$1; _key$2 = $f._key$2; _keys = $f._keys; _keys$1 = $f._keys$1; _keys$2 = $f._keys$2; _keys$3 = $f._keys$3; _r = $f._r; _r$1 = $f._r$1; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$12 = $f._r$12; _r$13 = $f._r$13; _r$14 = $f._r$14; _r$15 = $f._r$15; _r$16 = $f._r$16; _r$17 = $f._r$17; _r$18 = $f._r$18; _r$19 = $f._r$19; _r$2 = $f._r$2; _r$20 = $f._r$20; _r$21 = $f._r$21; _r$22 = $f._r$22; _r$23 = $f._r$23; _r$24 = $f._r$24; _r$25 = $f._r$25; _r$26 = $f._r$26; _r$27 = $f._r$27; _r$28 = $f._r$28; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _r$9 = $f._r$9; _ref = $f._ref; _ref$1 = $f._ref$1; _ref$2 = $f._ref$2; _ref$3 = $f._ref$3; _ref$4 = $f._ref$4; _ref$5 = $f._ref$5; _tuple = $f._tuple; d = $f.d; data = $f.data; dataVal = $f.dataVal; dataValKey = $f.dataValKey; dataValKey$1 = $f.dataValKey$1; dataValKeys = $f.dataValKeys; dataValKeysUnused = $f.dataValKeysUnused; dataValKind = $f.dataValKind; dataValType = $f.dataValType; err = $f.err; err$1 = $f.err$1; errors$1 = $f.errors$1; field = $f.field; fieldKind = $f.fieldKind; fieldName = $f.fieldName; fieldType = $f.fieldType; fieldType$1 = $f.fieldType$1; fields = $f.fields; i = $f.i; key = $f.key; keys = $f.keys; kind = $f.kind; mK = $f.mK; name = $f.name; ok = $f.ok; rawKey = $f.rawKey; rawKey$1 = $f.rawKey$1; rawMapKey = $f.rawMapKey; rawMapVal = $f.rawMapVal; squash = $f.squash; structType$1 = $f.structType$1; structVal = $f.structVal; structs = $f.structs; tag = $f.tag; tagParts = $f.tagParts; tagValue = $f.tagValue; val = $f.val; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  23807. d = this;
  23808. val = val;
  23809. _r = reflect.ValueOf(data); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  23810. _r$1 = reflect.Indirect(_r); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  23811. dataVal = _r$1;
  23812. dataValKind = dataVal.Kind();
  23813. /* */ if (!((dataValKind === 21))) { $s = 3; continue; }
  23814. /* */ $s = 4; continue;
  23815. /* if (!((dataValKind === 21))) { */ case 3:
  23816. _r$2 = fmt.Errorf("'%s' expected a map, got '%s'", new sliceType$2([new $String(name), new reflect.Kind(dataValKind)])); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  23817. return _r$2;
  23818. /* } */ case 4:
  23819. dataValType = dataVal.Type();
  23820. _r$3 = dataValType.Key(); /* */ $s = 6; case 6: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  23821. _r$4 = _r$3.Kind(); /* */ $s = 7; case 7: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
  23822. kind = _r$4;
  23823. /* */ if (!((kind === 24)) && !((kind === 20))) { $s = 8; continue; }
  23824. /* */ $s = 9; continue;
  23825. /* if (!((kind === 24)) && !((kind === 20))) { */ case 8:
  23826. _arg = new $String(name);
  23827. _r$5 = dataValType.Key(); /* */ $s = 10; case 10: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
  23828. _r$6 = _r$5.Kind(); /* */ $s = 11; case 11: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
  23829. _arg$1 = new reflect.Kind(_r$6);
  23830. _r$7 = fmt.Errorf("'%s' needs a map with string keys, has '%s' keys", new sliceType$2([_arg, _arg$1])); /* */ $s = 12; case 12: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
  23831. return _r$7;
  23832. /* } */ case 9:
  23833. dataValKeys = new $Map();
  23834. dataValKeysUnused = new $Map();
  23835. _r$8 = dataVal.MapKeys(); /* */ $s = 13; case 13: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
  23836. _ref = _r$8;
  23837. _i = 0;
  23838. /* while (true) { */ case 14:
  23839. /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 15; continue; }
  23840. dataValKey = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]);
  23841. _key = $clone(dataValKey, reflect.Value); (dataValKeys || $throwRuntimeError("assignment to entry in nil map"))[(new reflect.Value(_key)).$key()] = { k: _key, v: new structType.ptr() };
  23842. _r$9 = dataValKey.Interface(); /* */ $s = 16; case 16: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
  23843. _key$1 = _r$9; (dataValKeysUnused || $throwRuntimeError("assignment to entry in nil map"))[_key$1.$key()] = { k: _key$1, v: new structType.ptr() };
  23844. _i++;
  23845. /* } */ $s = 14; continue; case 15:
  23846. errors$1 = $makeSlice(sliceType, 0);
  23847. structs = $makeSlice(sliceType$3, 1, 5);
  23848. (0 >= structs.$length ? $throwRuntimeError("index out of range") : structs.$array[structs.$offset + 0] = val);
  23849. fields = new $Map();
  23850. /* while (true) { */ case 17:
  23851. /* if (!(structs.$length > 0)) { break; } */ if(!(structs.$length > 0)) { $s = 18; continue; }
  23852. structVal = (0 >= structs.$length ? $throwRuntimeError("index out of range") : structs.$array[structs.$offset + 0]);
  23853. structs = $subslice(structs, 1);
  23854. structType$1 = structVal.Type();
  23855. i = 0;
  23856. /* while (true) { */ case 19:
  23857. _r$10 = structType$1.NumField(); /* */ $s = 21; case 21: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
  23858. /* if (!(i < _r$10)) { break; } */ if(!(i < _r$10)) { $s = 20; continue; }
  23859. fieldType = [fieldType];
  23860. _r$11 = structType$1.Field(i); /* */ $s = 22; case 22: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
  23861. fieldType[0] = $clone(_r$11, reflect.StructField);
  23862. /* */ if (fieldType[0].Anonymous) { $s = 23; continue; }
  23863. /* */ $s = 24; continue;
  23864. /* if (fieldType[0].Anonymous) { */ case 23:
  23865. _r$12 = fieldType[0].Type.Kind(); /* */ $s = 25; case 25: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; }
  23866. fieldKind = _r$12;
  23867. /* */ if (!((fieldKind === 25))) { $s = 26; continue; }
  23868. /* */ $s = 27; continue;
  23869. /* if (!((fieldKind === 25))) { */ case 26:
  23870. _arg$2 = errors$1;
  23871. _r$13 = fmt.Errorf("%s: unsupported type: %s", new sliceType$2([new $String(fieldType[0].Name), new reflect.Kind(fieldKind)])); /* */ $s = 28; case 28: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; }
  23872. _arg$3 = _r$13;
  23873. _r$14 = appendErrors(_arg$2, _arg$3); /* */ $s = 29; case 29: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; }
  23874. errors$1 = _r$14;
  23875. i = i + (1) >> 0;
  23876. /* continue; */ $s = 19; continue;
  23877. /* } */ case 27:
  23878. squash = false;
  23879. tagParts = strings.Split(new reflect.StructTag(fieldType[0].Tag).Get(d.config.TagName), ",");
  23880. _ref$1 = $subslice(tagParts, 1);
  23881. _i$1 = 0;
  23882. while (true) {
  23883. if (!(_i$1 < _ref$1.$length)) { break; }
  23884. tag = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? $throwRuntimeError("index out of range") : _ref$1.$array[_ref$1.$offset + _i$1]);
  23885. if (tag === "squash") {
  23886. squash = true;
  23887. break;
  23888. }
  23889. _i$1++;
  23890. }
  23891. /* */ if (squash) { $s = 30; continue; }
  23892. /* */ $s = 31; continue;
  23893. /* if (squash) { */ case 30:
  23894. _r$15 = val.FieldByName(fieldType[0].Name); /* */ $s = 32; case 32: if($c) { $c = false; _r$15 = _r$15.$blk(); } if (_r$15 && _r$15.$blk !== undefined) { break s; }
  23895. structs = $append(structs, _r$15);
  23896. i = i + (1) >> 0;
  23897. /* continue; */ $s = 19; continue;
  23898. /* } */ case 31:
  23899. /* } */ case 24:
  23900. _r$16 = structVal.Field(i); /* */ $s = 33; case 33: if($c) { $c = false; _r$16 = _r$16.$blk(); } if (_r$16 && _r$16.$blk !== undefined) { break s; }
  23901. _key$2 = fieldType[0]; (fields || $throwRuntimeError("assignment to entry in nil map"))[_key$2.$key()] = { k: _key$2, v: $clone(_r$16, reflect.Value) };
  23902. i = i + (1) >> 0;
  23903. /* } */ $s = 19; continue; case 20:
  23904. /* } */ $s = 17; continue; case 18:
  23905. _ref$2 = fields;
  23906. _i$2 = 0;
  23907. _keys = $keys(_ref$2);
  23908. /* while (true) { */ case 34:
  23909. /* if (!(_i$2 < _keys.length)) { break; } */ if(!(_i$2 < _keys.length)) { $s = 35; continue; }
  23910. _entry = _ref$2[_keys[_i$2]];
  23911. if (_entry === undefined) {
  23912. _i$2++;
  23913. /* continue; */ $s = 34; continue;
  23914. }
  23915. fieldType$1 = _entry.k;
  23916. field = _entry.v;
  23917. fieldName = fieldType$1.Name;
  23918. tagValue = new reflect.StructTag(fieldType$1.Tag).Get(d.config.TagName);
  23919. tagValue = (x = strings.SplitN(tagValue, ",", 2), (0 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 0]));
  23920. if (!(tagValue === "")) {
  23921. fieldName = tagValue;
  23922. }
  23923. _r$17 = reflect.ValueOf(new $String(fieldName)); /* */ $s = 36; case 36: if($c) { $c = false; _r$17 = _r$17.$blk(); } if (_r$17 && _r$17.$blk !== undefined) { break s; }
  23924. rawMapKey = _r$17;
  23925. _r$18 = dataVal.MapIndex(rawMapKey); /* */ $s = 37; case 37: if($c) { $c = false; _r$18 = _r$18.$blk(); } if (_r$18 && _r$18.$blk !== undefined) { break s; }
  23926. rawMapVal = _r$18;
  23927. /* */ if (!rawMapVal.IsValid()) { $s = 38; continue; }
  23928. /* */ $s = 39; continue;
  23929. /* if (!rawMapVal.IsValid()) { */ case 38:
  23930. _ref$3 = dataValKeys;
  23931. _i$3 = 0;
  23932. _keys$1 = $keys(_ref$3);
  23933. /* while (true) { */ case 40:
  23934. /* if (!(_i$3 < _keys$1.length)) { break; } */ if(!(_i$3 < _keys$1.length)) { $s = 41; continue; }
  23935. _entry$1 = _ref$3[_keys$1[_i$3]];
  23936. if (_entry$1 === undefined) {
  23937. _i$3++;
  23938. /* continue; */ $s = 40; continue;
  23939. }
  23940. dataValKey$1 = _entry$1.k;
  23941. _r$19 = dataValKey$1.Interface(); /* */ $s = 42; case 42: if($c) { $c = false; _r$19 = _r$19.$blk(); } if (_r$19 && _r$19.$blk !== undefined) { break s; }
  23942. _tuple = $assertType(_r$19, $String, true); mK = _tuple[0]; ok = _tuple[1];
  23943. /* */ if (!ok) { $s = 43; continue; }
  23944. /* */ $s = 44; continue;
  23945. /* if (!ok) { */ case 43:
  23946. _i$3++;
  23947. /* continue; */ $s = 40; continue;
  23948. /* } */ case 44:
  23949. /* */ if (strings.EqualFold(mK, fieldName)) { $s = 45; continue; }
  23950. /* */ $s = 46; continue;
  23951. /* if (strings.EqualFold(mK, fieldName)) { */ case 45:
  23952. rawMapKey = dataValKey$1;
  23953. _r$20 = dataVal.MapIndex(dataValKey$1); /* */ $s = 47; case 47: if($c) { $c = false; _r$20 = _r$20.$blk(); } if (_r$20 && _r$20.$blk !== undefined) { break s; }
  23954. rawMapVal = _r$20;
  23955. /* break; */ $s = 41; continue;
  23956. /* } */ case 46:
  23957. _i$3++;
  23958. /* } */ $s = 40; continue; case 41:
  23959. if (!rawMapVal.IsValid()) {
  23960. _i$2++;
  23961. /* continue; */ $s = 34; continue;
  23962. }
  23963. /* } */ case 39:
  23964. _r$21 = rawMapKey.Interface(); /* */ $s = 48; case 48: if($c) { $c = false; _r$21 = _r$21.$blk(); } if (_r$21 && _r$21.$blk !== undefined) { break s; }
  23965. delete dataValKeysUnused[_r$21.$key()];
  23966. if (!field.IsValid()) {
  23967. $panic(new $String("field is not valid"));
  23968. }
  23969. /* */ if (!field.CanSet()) { $s = 49; continue; }
  23970. /* */ $s = 50; continue;
  23971. /* if (!field.CanSet()) { */ case 49:
  23972. _i$2++;
  23973. /* continue; */ $s = 34; continue;
  23974. /* } */ case 50:
  23975. /* */ if (!(name === "")) { $s = 51; continue; }
  23976. /* */ $s = 52; continue;
  23977. /* if (!(name === "")) { */ case 51:
  23978. _r$22 = fmt.Sprintf("%s.%s", new sliceType$2([new $String(name), new $String(fieldName)])); /* */ $s = 53; case 53: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; }
  23979. fieldName = _r$22;
  23980. /* } */ case 52:
  23981. _arg$4 = fieldName;
  23982. _r$23 = rawMapVal.Interface(); /* */ $s = 54; case 54: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; }
  23983. _arg$5 = _r$23;
  23984. _arg$6 = field;
  23985. _r$24 = d.decode(_arg$4, _arg$5, _arg$6); /* */ $s = 55; case 55: if($c) { $c = false; _r$24 = _r$24.$blk(); } if (_r$24 && _r$24.$blk !== undefined) { break s; }
  23986. err = _r$24;
  23987. /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 56; continue; }
  23988. /* */ $s = 57; continue;
  23989. /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 56:
  23990. _r$25 = appendErrors(errors$1, err); /* */ $s = 58; case 58: if($c) { $c = false; _r$25 = _r$25.$blk(); } if (_r$25 && _r$25.$blk !== undefined) { break s; }
  23991. errors$1 = _r$25;
  23992. /* } */ case 57:
  23993. _i$2++;
  23994. /* } */ $s = 34; continue; case 35:
  23995. /* */ if (d.config.ErrorUnused && $keys(dataValKeysUnused).length > 0) { $s = 59; continue; }
  23996. /* */ $s = 60; continue;
  23997. /* if (d.config.ErrorUnused && $keys(dataValKeysUnused).length > 0) { */ case 59:
  23998. keys = $makeSlice(sliceType, 0, $keys(dataValKeysUnused).length);
  23999. _ref$4 = dataValKeysUnused;
  24000. _i$4 = 0;
  24001. _keys$2 = $keys(_ref$4);
  24002. while (true) {
  24003. if (!(_i$4 < _keys$2.length)) { break; }
  24004. _entry$2 = _ref$4[_keys$2[_i$4]];
  24005. if (_entry$2 === undefined) {
  24006. _i$4++;
  24007. continue;
  24008. }
  24009. rawKey = _entry$2.k;
  24010. keys = $append(keys, $assertType(rawKey, $String));
  24011. _i$4++;
  24012. }
  24013. $r = sort.Strings(keys); /* */ $s = 61; case 61: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  24014. _r$26 = fmt.Errorf("'%s' has invalid keys: %s", new sliceType$2([new $String(name), new $String(strings.Join(keys, ", "))])); /* */ $s = 62; case 62: if($c) { $c = false; _r$26 = _r$26.$blk(); } if (_r$26 && _r$26.$blk !== undefined) { break s; }
  24015. err$1 = _r$26;
  24016. _r$27 = appendErrors(errors$1, err$1); /* */ $s = 63; case 63: if($c) { $c = false; _r$27 = _r$27.$blk(); } if (_r$27 && _r$27.$blk !== undefined) { break s; }
  24017. errors$1 = _r$27;
  24018. /* } */ case 60:
  24019. if (errors$1.$length > 0) {
  24020. return new Error.ptr(errors$1);
  24021. }
  24022. /* */ if (!(d.config.Metadata === ptrType$1.nil)) { $s = 64; continue; }
  24023. /* */ $s = 65; continue;
  24024. /* if (!(d.config.Metadata === ptrType$1.nil)) { */ case 64:
  24025. _ref$5 = dataValKeysUnused;
  24026. _i$5 = 0;
  24027. _keys$3 = $keys(_ref$5);
  24028. /* while (true) { */ case 66:
  24029. /* if (!(_i$5 < _keys$3.length)) { break; } */ if(!(_i$5 < _keys$3.length)) { $s = 67; continue; }
  24030. _entry$3 = _ref$5[_keys$3[_i$5]];
  24031. if (_entry$3 === undefined) {
  24032. _i$5++;
  24033. /* continue; */ $s = 66; continue;
  24034. }
  24035. rawKey$1 = _entry$3.k;
  24036. key = $assertType(rawKey$1, $String);
  24037. /* */ if (!(name === "")) { $s = 68; continue; }
  24038. /* */ $s = 69; continue;
  24039. /* if (!(name === "")) { */ case 68:
  24040. _r$28 = fmt.Sprintf("%s.%s", new sliceType$2([new $String(name), new $String(key)])); /* */ $s = 70; case 70: if($c) { $c = false; _r$28 = _r$28.$blk(); } if (_r$28 && _r$28.$blk !== undefined) { break s; }
  24041. key = _r$28;
  24042. /* } */ case 69:
  24043. d.config.Metadata.Unused = $append(d.config.Metadata.Unused, key);
  24044. _i$5++;
  24045. /* } */ $s = 66; continue; case 67:
  24046. /* } */ case 65:
  24047. return $ifaceNil;
  24048. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Decoder.ptr.prototype.decodeStruct }; } $f.$ptr = $ptr; $f._arg = _arg; $f._arg$1 = _arg$1; $f._arg$2 = _arg$2; $f._arg$3 = _arg$3; $f._arg$4 = _arg$4; $f._arg$5 = _arg$5; $f._arg$6 = _arg$6; $f._entry = _entry; $f._entry$1 = _entry$1; $f._entry$2 = _entry$2; $f._entry$3 = _entry$3; $f._i = _i; $f._i$1 = _i$1; $f._i$2 = _i$2; $f._i$3 = _i$3; $f._i$4 = _i$4; $f._i$5 = _i$5; $f._key = _key; $f._key$1 = _key$1; $f._key$2 = _key$2; $f._keys = _keys; $f._keys$1 = _keys$1; $f._keys$2 = _keys$2; $f._keys$3 = _keys$3; $f._r = _r; $f._r$1 = _r$1; $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$12 = _r$12; $f._r$13 = _r$13; $f._r$14 = _r$14; $f._r$15 = _r$15; $f._r$16 = _r$16; $f._r$17 = _r$17; $f._r$18 = _r$18; $f._r$19 = _r$19; $f._r$2 = _r$2; $f._r$20 = _r$20; $f._r$21 = _r$21; $f._r$22 = _r$22; $f._r$23 = _r$23; $f._r$24 = _r$24; $f._r$25 = _r$25; $f._r$26 = _r$26; $f._r$27 = _r$27; $f._r$28 = _r$28; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._r$9 = _r$9; $f._ref = _ref; $f._ref$1 = _ref$1; $f._ref$2 = _ref$2; $f._ref$3 = _ref$3; $f._ref$4 = _ref$4; $f._ref$5 = _ref$5; $f._tuple = _tuple; $f.d = d; $f.data = data; $f.dataVal = dataVal; $f.dataValKey = dataValKey; $f.dataValKey$1 = dataValKey$1; $f.dataValKeys = dataValKeys; $f.dataValKeysUnused = dataValKeysUnused; $f.dataValKind = dataValKind; $f.dataValType = dataValType; $f.err = err; $f.err$1 = err$1; $f.errors$1 = errors$1; $f.field = field; $f.fieldKind = fieldKind; $f.fieldName = fieldName; $f.fieldType = fieldType; $f.fieldType$1 = fieldType$1; $f.fields = fields; $f.i = i; $f.key = key; $f.keys = keys; $f.kind = kind; $f.mK = mK; $f.name = name; $f.ok = ok; $f.rawKey = rawKey; $f.rawKey$1 = rawKey$1; $f.rawMapKey = rawMapKey; $f.rawMapVal = rawMapVal; $f.squash = squash; $f.structType$1 = structType$1; $f.structVal = structVal; $f.structs = structs; $f.tag = tag; $f.tagParts = tagParts; $f.tagValue = tagValue; $f.val = val; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
  24049. };
  24050. Decoder.prototype.decodeStruct = function(name, data, val) { return this.$val.decodeStruct(name, data, val); };
  24051. getKind = function(val) {
  24052. var $ptr, kind, val;
  24053. val = val;
  24054. kind = val.Kind();
  24055. if (kind >= 2 && kind <= 6) {
  24056. return 2;
  24057. } else if (kind >= 7 && kind <= 11) {
  24058. return 7;
  24059. } else if (kind >= 13 && kind <= 14) {
  24060. return 13;
  24061. } else {
  24062. return kind;
  24063. }
  24064. };
  24065. ptrType.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}];
  24066. ptrType$2.methods = [{prop: "Decode", name: "Decode", pkg: "", typ: $funcType([$emptyInterface], [$error], false)}, {prop: "decode", name: "decode", pkg: "github.com/mitchellh/mapstructure", typ: $funcType([$String, $emptyInterface, reflect.Value], [$error], false)}, {prop: "decodeBasic", name: "decodeBasic", pkg: "github.com/mitchellh/mapstructure", typ: $funcType([$String, $emptyInterface, reflect.Value], [$error], false)}, {prop: "decodeString", name: "decodeString", pkg: "github.com/mitchellh/mapstructure", typ: $funcType([$String, $emptyInterface, reflect.Value], [$error], false)}, {prop: "decodeInt", name: "decodeInt", pkg: "github.com/mitchellh/mapstructure", typ: $funcType([$String, $emptyInterface, reflect.Value], [$error], false)}, {prop: "decodeUint", name: "decodeUint", pkg: "github.com/mitchellh/mapstructure", typ: $funcType([$String, $emptyInterface, reflect.Value], [$error], false)}, {prop: "decodeBool", name: "decodeBool", pkg: "github.com/mitchellh/mapstructure", typ: $funcType([$String, $emptyInterface, reflect.Value], [$error], false)}, {prop: "decodeFloat", name: "decodeFloat", pkg: "github.com/mitchellh/mapstructure", typ: $funcType([$String, $emptyInterface, reflect.Value], [$error], false)}, {prop: "decodeMap", name: "decodeMap", pkg: "github.com/mitchellh/mapstructure", typ: $funcType([$String, $emptyInterface, reflect.Value], [$error], false)}, {prop: "decodePtr", name: "decodePtr", pkg: "github.com/mitchellh/mapstructure", typ: $funcType([$String, $emptyInterface, reflect.Value], [$error], false)}, {prop: "decodeSlice", name: "decodeSlice", pkg: "github.com/mitchellh/mapstructure", typ: $funcType([$String, $emptyInterface, reflect.Value], [$error], false)}, {prop: "decodeStruct", name: "decodeStruct", pkg: "github.com/mitchellh/mapstructure", typ: $funcType([$String, $emptyInterface, reflect.Value], [$error], false)}];
  24067. Error.init([{prop: "Errors", name: "Errors", pkg: "", typ: sliceType, tag: ""}]);
  24068. DecodeHookFunc.init([reflect.Kind, reflect.Kind, $emptyInterface], [$emptyInterface, $error], false);
  24069. DecoderConfig.init([{prop: "DecodeHook", name: "DecodeHook", pkg: "", typ: DecodeHookFunc, tag: ""}, {prop: "ErrorUnused", name: "ErrorUnused", pkg: "", typ: $Bool, tag: ""}, {prop: "WeaklyTypedInput", name: "WeaklyTypedInput", pkg: "", typ: $Bool, tag: ""}, {prop: "Metadata", name: "Metadata", pkg: "", typ: ptrType$1, tag: ""}, {prop: "Result", name: "Result", pkg: "", typ: $emptyInterface, tag: ""}, {prop: "TagName", name: "TagName", pkg: "", typ: $String, tag: ""}]);
  24070. Decoder.init([{prop: "config", name: "config", pkg: "github.com/mitchellh/mapstructure", typ: ptrType$3, tag: ""}]);
  24071. Metadata.init([{prop: "Keys", name: "Keys", pkg: "", typ: sliceType, tag: ""}, {prop: "Unused", name: "Unused", pkg: "", typ: sliceType, tag: ""}]);
  24072. $init = function() {
  24073. $pkg.$init = function() {};
  24074. /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  24075. $r = errors.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  24076. $r = fmt.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  24077. $r = reflect.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  24078. $r = sort.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  24079. $r = strconv.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  24080. $r = strings.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  24081. /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
  24082. };
  24083. $pkg.$init = $init;
  24084. return $pkg;
  24085. })();
  24086. $packages["ypk/assert"] = (function() {
  24087. var $pkg = {}, $init, fmt, sliceType, For;
  24088. fmt = $packages["fmt"];
  24089. sliceType = $sliceType($emptyInterface);
  24090. For = function(cond, code, msg) {
  24091. var $ptr, _arg, _arg$1, _arg$2, _arg$3, _arg$4, _arg$5, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, code, cond, e, msg, $s, $r;
  24092. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _arg = $f._arg; _arg$1 = $f._arg$1; _arg$2 = $f._arg$2; _arg$3 = $f._arg$3; _arg$4 = $f._arg$4; _arg$5 = $f._arg$5; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; code = $f.code; cond = $f.cond; e = $f.e; msg = $f.msg; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  24093. _r = fmt.Sprint(new sliceType([new $Int(code)])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  24094. e = _r;
  24095. /* */ if (!cond) { $s = 2; continue; }
  24096. /* */ $s = 3; continue;
  24097. /* if (!cond) { */ case 2:
  24098. /* */ if ((code >= 20) && (code < 40)) { $s = 4; continue; }
  24099. /* */ if ((code >= 40) && (code < 60)) { $s = 5; continue; }
  24100. /* */ if ((code >= 60) && (code < 80)) { $s = 6; continue; }
  24101. /* */ $s = 7; continue;
  24102. /* if ((code >= 20) && (code < 40)) { */ case 4:
  24103. _arg = new $Int(code);
  24104. _r$1 = fmt.Sprint(msg); /* */ $s = 9; case 9: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  24105. _arg$1 = new $String(_r$1);
  24106. _r$2 = fmt.Sprintln(new sliceType([_arg, new $String("precondition violated"), _arg$1])); /* */ $s = 10; case 10: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  24107. e = _r$2;
  24108. $s = 8; continue;
  24109. /* } else if ((code >= 40) && (code < 60)) { */ case 5:
  24110. _arg$2 = new $Int(code);
  24111. _r$3 = fmt.Sprint(msg); /* */ $s = 11; case 11: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  24112. _arg$3 = new $String(_r$3);
  24113. _r$4 = fmt.Sprintln(new sliceType([_arg$2, new $String("subcondition violated"), _arg$3])); /* */ $s = 12; case 12: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
  24114. e = _r$4;
  24115. $s = 8; continue;
  24116. /* } else if ((code >= 60) && (code < 80)) { */ case 6:
  24117. _arg$4 = new $Int(code);
  24118. _r$5 = fmt.Sprint(msg); /* */ $s = 13; case 13: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
  24119. _arg$5 = new $String(_r$5);
  24120. _r$6 = fmt.Sprintln(new sliceType([_arg$4, new $String("postcondition violated"), _arg$5])); /* */ $s = 14; case 14: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
  24121. e = _r$6;
  24122. $s = 8; continue;
  24123. /* } else { */ case 7:
  24124. /* } */ case 8:
  24125. $panic(new $String(e));
  24126. /* } */ case 3:
  24127. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: For }; } $f.$ptr = $ptr; $f._arg = _arg; $f._arg$1 = _arg$1; $f._arg$2 = _arg$2; $f._arg$3 = _arg$3; $f._arg$4 = _arg$4; $f._arg$5 = _arg$5; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f.code = code; $f.cond = cond; $f.e = e; $f.msg = msg; $f.$s = $s; $f.$r = $r; return $f;
  24128. };
  24129. $pkg.For = For;
  24130. $init = function() {
  24131. $pkg.$init = function() {};
  24132. /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  24133. $r = fmt.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  24134. /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
  24135. };
  24136. $pkg.$init = $init;
  24137. return $pkg;
  24138. })();
  24139. $packages["sim3/bus"] = (function() {
  24140. var $pkg = {}, $init, js, mapstructure, assert, Msg, ptrType, sliceType, ptrType$1, funcType, Process, Init;
  24141. js = $packages["github.com/gopherjs/gopherjs/js"];
  24142. mapstructure = $packages["github.com/mitchellh/mapstructure"];
  24143. assert = $packages["ypk/assert"];
  24144. Msg = $pkg.Msg = $newType(0, $kindStruct, "bus.Msg", "Msg", "sim3/bus", function(Typ_) {
  24145. this.$val = this;
  24146. if (arguments.length === 0) {
  24147. this.Typ = "";
  24148. return;
  24149. }
  24150. this.Typ = Typ_;
  24151. });
  24152. ptrType = $ptrType(Msg);
  24153. sliceType = $sliceType($emptyInterface);
  24154. ptrType$1 = $ptrType(js.Object);
  24155. funcType = $funcType([ptrType$1], [], false);
  24156. Process = function(m) {
  24157. var $ptr, m, $s, $r;
  24158. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; m = $f.m; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  24159. $r = assert.For(!(m === ptrType.nil), 20, new sliceType([])); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  24160. $global.postMessage($externalize(m, ptrType));
  24161. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Process }; } $f.$ptr = $ptr; $f.m = m; $f.$s = $s; $f.$r = $r; return $f;
  24162. };
  24163. $pkg.Process = Process;
  24164. Init = function(handler) {
  24165. var $ptr, handler;
  24166. $global.onmessage = $externalize((function $b(oEvent) {
  24167. var $ptr, _r, data, err, m, oEvent, $s, $r;
  24168. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; data = $f.data; err = $f.err; m = $f.m; oEvent = $f.oEvent; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  24169. data = $internalize(oEvent.data, $emptyInterface);
  24170. m = new Msg.ptr("");
  24171. _r = mapstructure.Decode(data, m); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  24172. err = _r;
  24173. $r = assert.For($interfaceIsEqual(err, $ifaceNil), 40, new sliceType([])); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  24174. $r = handler(m); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  24175. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: $b }; } $f.$ptr = $ptr; $f._r = _r; $f.data = data; $f.err = err; $f.m = m; $f.oEvent = oEvent; $f.$s = $s; $f.$r = $r; return $f;
  24176. }), funcType);
  24177. };
  24178. $pkg.Init = Init;
  24179. Msg.init([{prop: "Typ", name: "Typ", pkg: "", typ: $String, tag: ""}]);
  24180. $init = function() {
  24181. $pkg.$init = function() {};
  24182. /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  24183. $r = js.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  24184. $r = mapstructure.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  24185. $r = assert.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  24186. /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
  24187. };
  24188. $pkg.$init = $init;
  24189. return $pkg;
  24190. })();
  24191. $packages["sim3/tri"] = (function() {
  24192. var $pkg = {}, $init, Trit, False, True, Nil, Not, Impl, CNot, Or, And, Ord, Sum3, Sum3r, CarryS, CarrySr, CarryM;
  24193. Trit = $pkg.Trit = $newType(0, $kindStruct, "tri.Trit", "Trit", "sim3/tri", function(N_, T_) {
  24194. this.$val = this;
  24195. if (arguments.length === 0) {
  24196. this.N = false;
  24197. this.T = false;
  24198. return;
  24199. }
  24200. this.N = N_;
  24201. this.T = T_;
  24202. });
  24203. Trit.ptr.prototype.String = function() {
  24204. var $ptr, t;
  24205. t = $clone(this, Trit);
  24206. if (t.N) {
  24207. return "%nil";
  24208. } else if (t.T) {
  24209. return "%true";
  24210. } else {
  24211. return "%false";
  24212. }
  24213. };
  24214. Trit.prototype.String = function() { return this.$val.String(); };
  24215. False = function(t) {
  24216. var $ptr, t;
  24217. t = $clone(t, Trit);
  24218. return $equal(t, $pkg.FALSE, Trit);
  24219. };
  24220. $pkg.False = False;
  24221. True = function(t) {
  24222. var $ptr, t;
  24223. t = $clone(t, Trit);
  24224. return $equal(t, $pkg.TRUE, Trit);
  24225. };
  24226. $pkg.True = True;
  24227. Nil = function(t) {
  24228. var $ptr, t;
  24229. t = $clone(t, Trit);
  24230. return $equal(t, $pkg.NIL, Trit);
  24231. };
  24232. $pkg.Nil = Nil;
  24233. Not = function(t) {
  24234. var $ptr, t;
  24235. t = $clone(t, Trit);
  24236. if ($equal(t, $pkg.TRUE, Trit)) {
  24237. return $pkg.FALSE;
  24238. } else if ($equal(t, $pkg.FALSE, Trit)) {
  24239. return $pkg.TRUE;
  24240. } else if ($equal(t, $pkg.NIL, Trit)) {
  24241. return $pkg.NIL;
  24242. }
  24243. $panic(new $Int(0));
  24244. };
  24245. $pkg.Not = Not;
  24246. Impl = function(p, q) {
  24247. var $ptr, p, q;
  24248. q = $clone(q, Trit);
  24249. p = $clone(p, Trit);
  24250. if (False(p) && False(q)) {
  24251. return $pkg.TRUE;
  24252. } else if (False(p) && True(q)) {
  24253. return $pkg.TRUE;
  24254. } else if (True(p) && False(q)) {
  24255. return $pkg.FALSE;
  24256. } else if (True(p) && True(q)) {
  24257. return $pkg.TRUE;
  24258. } else if (True(p) && Nil(q)) {
  24259. return $pkg.NIL;
  24260. } else if (Nil(p) && False(q)) {
  24261. return $pkg.NIL;
  24262. } else if (False(p) && Nil(q)) {
  24263. return $pkg.TRUE;
  24264. } else if (Nil(p) && Nil(q)) {
  24265. return $pkg.TRUE;
  24266. } else if (Nil(p) && True(q)) {
  24267. return $pkg.TRUE;
  24268. }
  24269. $panic(new $Int(0));
  24270. };
  24271. $pkg.Impl = Impl;
  24272. CNot = function(t) {
  24273. var $ptr, t;
  24274. t = $clone(t, Trit);
  24275. if ($equal(t, $pkg.TRUE, Trit)) {
  24276. return $pkg.FALSE;
  24277. } else if ($equal(t, $pkg.FALSE, Trit)) {
  24278. return $pkg.NIL;
  24279. } else {
  24280. return $pkg.TRUE;
  24281. }
  24282. };
  24283. $pkg.CNot = CNot;
  24284. Or = function(p, q) {
  24285. var $ptr, p, q;
  24286. q = $clone(q, Trit);
  24287. p = $clone(p, Trit);
  24288. return Impl(Impl(p, q), q);
  24289. };
  24290. $pkg.Or = Or;
  24291. And = function(p, q) {
  24292. var $ptr, p, q;
  24293. q = $clone(q, Trit);
  24294. p = $clone(p, Trit);
  24295. return Not(Or(Not(p), Not(q)));
  24296. };
  24297. $pkg.And = And;
  24298. Ord = function(t) {
  24299. var $ptr, t;
  24300. t = $clone(t, Trit);
  24301. if ($equal(t, $pkg.FALSE, Trit)) {
  24302. return -1;
  24303. } else if ($equal(t, $pkg.NIL, Trit)) {
  24304. return 0;
  24305. } else if ($equal(t, $pkg.TRUE, Trit)) {
  24306. return 1;
  24307. }
  24308. $panic(new $Int(0));
  24309. };
  24310. $pkg.Ord = Ord;
  24311. Sum3 = function(p, q) {
  24312. var $ptr, _ref, p, q;
  24313. q = $clone(q, Trit);
  24314. p = $clone(p, Trit);
  24315. _ref = Ord(p);
  24316. if (_ref === -1) {
  24317. return q;
  24318. } else if (_ref === 0) {
  24319. if (False(q)) {
  24320. return $pkg.NIL;
  24321. } else if (Nil(q)) {
  24322. return $pkg.TRUE;
  24323. } else {
  24324. return $pkg.FALSE;
  24325. }
  24326. } else if (_ref === 1) {
  24327. if (False(q)) {
  24328. return $pkg.TRUE;
  24329. } else if (Nil(q)) {
  24330. return $pkg.FALSE;
  24331. } else {
  24332. return $pkg.NIL;
  24333. }
  24334. } else {
  24335. $panic(new $Int(0));
  24336. }
  24337. };
  24338. $pkg.Sum3 = Sum3;
  24339. Sum3r = function(p, q) {
  24340. var $ptr, p, q;
  24341. q = $clone(q, Trit);
  24342. p = $clone(p, Trit);
  24343. return CNot(CNot(Sum3(p, q)));
  24344. };
  24345. $pkg.Sum3r = Sum3r;
  24346. CarryS = function(p, q) {
  24347. var $ptr, _ref, p, q;
  24348. q = $clone(q, Trit);
  24349. p = $clone(p, Trit);
  24350. _ref = Ord(p);
  24351. if (_ref === -1) {
  24352. return $pkg.FALSE;
  24353. } else if (_ref === 0) {
  24354. if (True(q)) {
  24355. return $pkg.NIL;
  24356. } else {
  24357. return $pkg.FALSE;
  24358. }
  24359. } else if (_ref === 1) {
  24360. if (False(q)) {
  24361. return $pkg.FALSE;
  24362. } else {
  24363. return $pkg.NIL;
  24364. }
  24365. } else {
  24366. $panic(new $Int(0));
  24367. }
  24368. };
  24369. $pkg.CarryS = CarryS;
  24370. CarrySr = function(p, q) {
  24371. var $ptr, p, q;
  24372. q = $clone(q, Trit);
  24373. p = $clone(p, Trit);
  24374. if (False(p) && False(q)) {
  24375. return $pkg.FALSE;
  24376. } else if (True(p) && True(q)) {
  24377. return $pkg.TRUE;
  24378. } else {
  24379. return $pkg.NIL;
  24380. }
  24381. };
  24382. $pkg.CarrySr = CarrySr;
  24383. CarryM = function(p, q) {
  24384. var $ptr, p, q;
  24385. q = $clone(q, Trit);
  24386. p = $clone(p, Trit);
  24387. if (True(p) && True(q)) {
  24388. return $pkg.NIL;
  24389. } else {
  24390. return $pkg.FALSE;
  24391. }
  24392. };
  24393. $pkg.CarryM = CarryM;
  24394. Trit.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}];
  24395. Trit.init([{prop: "N", name: "N", pkg: "", typ: $Bool, tag: ""}, {prop: "T", name: "T", pkg: "", typ: $Bool, tag: ""}]);
  24396. $init = function() {
  24397. $pkg.$init = function() {};
  24398. /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  24399. $pkg.TRUE = new Trit.ptr(false, true);
  24400. $pkg.FALSE = new Trit.ptr(false, false);
  24401. $pkg.NIL = new Trit.ptr(true, false);
  24402. /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
  24403. };
  24404. $pkg.$init = $init;
  24405. return $pkg;
  24406. })();
  24407. $packages["sim3/ncl"] = (function() {
  24408. var $pkg = {}, $init, tri, time, PinCode, Pin, In, Out, Point, Element, Compound, Trigger, ptrType, sliceType, mapType, sliceType$1, sliceType$2, slow, Step;
  24409. tri = $packages["sim3/tri"];
  24410. time = $packages["time"];
  24411. PinCode = $pkg.PinCode = $newType(4, $kindInt, "ncl.PinCode", "PinCode", "sim3/ncl", null);
  24412. Pin = $pkg.Pin = $newType(8, $kindInterface, "ncl.Pin", "Pin", "sim3/ncl", null);
  24413. In = $pkg.In = $newType(8, $kindInterface, "ncl.In", "In", "sim3/ncl", null);
  24414. Out = $pkg.Out = $newType(8, $kindInterface, "ncl.Out", "Out", "sim3/ncl", null);
  24415. Point = $pkg.Point = $newType(8, $kindInterface, "ncl.Point", "Point", "sim3/ncl", null);
  24416. Element = $pkg.Element = $newType(8, $kindInterface, "ncl.Element", "Element", "sim3/ncl", null);
  24417. Compound = $pkg.Compound = $newType(8, $kindInterface, "ncl.Compound", "Compound", "sim3/ncl", null);
  24418. Trigger = $pkg.Trigger = $newType(8, $kindInterface, "ncl.Trigger", "Trigger", "sim3/ncl", null);
  24419. ptrType = $ptrType(tri.Trit);
  24420. sliceType = $sliceType(Pin);
  24421. mapType = $mapType(PinCode, Pin);
  24422. sliceType$1 = $sliceType(mapType);
  24423. sliceType$2 = $sliceType(ptrType);
  24424. Step = function(obj, step) {
  24425. var $ptr, do$1, obj, step, $s, $r;
  24426. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; do$1 = $f.do$1; obj = $f.obj; step = $f.step; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  24427. step = [step];
  24428. do$1 = (function(step) { return function $b() {
  24429. var $ptr, $s, $r;
  24430. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  24431. /* while (true) { */ case 1:
  24432. $r = step[0](); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  24433. $r = time.Sleep(slow); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  24434. /* } */ $s = 1; continue; case 2:
  24435. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: $b }; } $f.$ptr = $ptr; $f.$s = $s; $f.$r = $r; return $f;
  24436. }; })(step);
  24437. $r = do$1(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  24438. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Step }; } $f.$ptr = $ptr; $f.do$1 = do$1; $f.obj = obj; $f.step = step; $f.$s = $s; $f.$r = $r; return $f;
  24439. };
  24440. $pkg.Step = Step;
  24441. Pin.init([]);
  24442. In.init([{prop: "Select", name: "Select", pkg: "", typ: $funcType([], [ptrType], false)}]);
  24443. Out.init([{prop: "Update", name: "Update", pkg: "", typ: $funcType([ptrType], [], false)}]);
  24444. Point.init([{prop: "Solder", name: "Solder", pkg: "", typ: $funcType([sliceType], [], true)}]);
  24445. Element.init([{prop: "Do", name: "Do", pkg: "", typ: $funcType([], [], false)}, {prop: "Pin", name: "Pin", pkg: "", typ: $funcType([PinCode], [Pin], false)}]);
  24446. Compound.init([{prop: "Do", name: "Do", pkg: "", typ: $funcType([], [], false)}, {prop: "InnerPin", name: "InnerPin", pkg: "", typ: $funcType([PinCode], [Pin], false)}, {prop: "Pin", name: "Pin", pkg: "", typ: $funcType([PinCode], [Pin], false)}, {prop: "Pins", name: "Pins", pkg: "", typ: $funcType([sliceType$1], [mapType], true)}, {prop: "Point", name: "Point", pkg: "", typ: $funcType([$String], [Point], false)}]);
  24447. Trigger.init([{prop: "Value", name: "Value", pkg: "", typ: $funcType([sliceType$2], [ptrType], true)}]);
  24448. $init = function() {
  24449. $pkg.$init = function() {};
  24450. /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  24451. $r = tri.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  24452. $r = time.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  24453. slow = new time.Duration(0, 1000000);
  24454. /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
  24455. };
  24456. $pkg.$init = $init;
  24457. return $pkg;
  24458. })();
  24459. $packages["encoding"] = (function() {
  24460. var $pkg = {}, $init, TextUnmarshaler, sliceType;
  24461. TextUnmarshaler = $pkg.TextUnmarshaler = $newType(8, $kindInterface, "encoding.TextUnmarshaler", "TextUnmarshaler", "encoding", null);
  24462. sliceType = $sliceType($Uint8);
  24463. TextUnmarshaler.init([{prop: "UnmarshalText", name: "UnmarshalText", pkg: "", typ: $funcType([sliceType], [$error], false)}]);
  24464. $init = function() {
  24465. $pkg.$init = function() {};
  24466. /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  24467. /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
  24468. };
  24469. $pkg.$init = $init;
  24470. return $pkg;
  24471. })();
  24472. $packages["encoding/base64"] = (function() {
  24473. var $pkg = {}, $init, bytes, io, strconv, strings, Encoding, CorruptInputError, sliceType, ptrType, arrayType$2, arrayType$4, removeNewlinesMapper, NewEncoding;
  24474. bytes = $packages["bytes"];
  24475. io = $packages["io"];
  24476. strconv = $packages["strconv"];
  24477. strings = $packages["strings"];
  24478. Encoding = $pkg.Encoding = $newType(0, $kindStruct, "base64.Encoding", "Encoding", "encoding/base64", function(encode_, decodeMap_) {
  24479. this.$val = this;
  24480. if (arguments.length === 0) {
  24481. this.encode = "";
  24482. this.decodeMap = arrayType$4.zero();
  24483. return;
  24484. }
  24485. this.encode = encode_;
  24486. this.decodeMap = decodeMap_;
  24487. });
  24488. CorruptInputError = $pkg.CorruptInputError = $newType(8, $kindInt64, "base64.CorruptInputError", "CorruptInputError", "encoding/base64", null);
  24489. sliceType = $sliceType($Uint8);
  24490. ptrType = $ptrType(Encoding);
  24491. arrayType$2 = $arrayType($Uint8, 4);
  24492. arrayType$4 = $arrayType($Uint8, 256);
  24493. NewEncoding = function(encoder$1) {
  24494. var $ptr, e, encoder$1, i, i$1, x, x$1, x$2;
  24495. e = new Encoding.ptr();
  24496. e.encode = encoder$1;
  24497. i = 0;
  24498. while (true) {
  24499. if (!(i < 256)) { break; }
  24500. (x = e.decodeMap, ((i < 0 || i >= x.length) ? $throwRuntimeError("index out of range") : x[i] = 255));
  24501. i = i + (1) >> 0;
  24502. }
  24503. i$1 = 0;
  24504. while (true) {
  24505. if (!(i$1 < encoder$1.length)) { break; }
  24506. (x$1 = e.decodeMap, x$2 = encoder$1.charCodeAt(i$1), ((x$2 < 0 || x$2 >= x$1.length) ? $throwRuntimeError("index out of range") : x$1[x$2] = (i$1 << 24 >>> 24)));
  24507. i$1 = i$1 + (1) >> 0;
  24508. }
  24509. return e;
  24510. };
  24511. $pkg.NewEncoding = NewEncoding;
  24512. Encoding.ptr.prototype.Encode = function(dst, src) {
  24513. var $ptr, _ref, _tmp, _tmp$1, _tmp$2, _tmp$3, b0, b1, b2, b3, dst, enc, src;
  24514. enc = this;
  24515. if (src.$length === 0) {
  24516. return;
  24517. }
  24518. while (true) {
  24519. if (!(src.$length > 0)) { break; }
  24520. _tmp = 0; _tmp$1 = 0; _tmp$2 = 0; _tmp$3 = 0; b0 = _tmp; b1 = _tmp$1; b2 = _tmp$2; b3 = _tmp$3;
  24521. _ref = src.$length;
  24522. if (_ref === 2) {
  24523. b2 = (b2 | ((((((1 >= src.$length ? $throwRuntimeError("index out of range") : src.$array[src.$offset + 1]) << 2 << 24 >>> 24)) & 63) >>> 0))) >>> 0;
  24524. b1 = (1 >= src.$length ? $throwRuntimeError("index out of range") : src.$array[src.$offset + 1]) >>> 4 << 24 >>> 24;
  24525. b1 = (b1 | ((((((0 >= src.$length ? $throwRuntimeError("index out of range") : src.$array[src.$offset + 0]) << 4 << 24 >>> 24)) & 63) >>> 0))) >>> 0;
  24526. b0 = (0 >= src.$length ? $throwRuntimeError("index out of range") : src.$array[src.$offset + 0]) >>> 2 << 24 >>> 24;
  24527. } else if (_ref === 1) {
  24528. b1 = (b1 | ((((((0 >= src.$length ? $throwRuntimeError("index out of range") : src.$array[src.$offset + 0]) << 4 << 24 >>> 24)) & 63) >>> 0))) >>> 0;
  24529. b0 = (0 >= src.$length ? $throwRuntimeError("index out of range") : src.$array[src.$offset + 0]) >>> 2 << 24 >>> 24;
  24530. } else {
  24531. b3 = ((2 >= src.$length ? $throwRuntimeError("index out of range") : src.$array[src.$offset + 2]) & 63) >>> 0;
  24532. b2 = (2 >= src.$length ? $throwRuntimeError("index out of range") : src.$array[src.$offset + 2]) >>> 6 << 24 >>> 24;
  24533. b2 = (b2 | ((((((1 >= src.$length ? $throwRuntimeError("index out of range") : src.$array[src.$offset + 1]) << 2 << 24 >>> 24)) & 63) >>> 0))) >>> 0;
  24534. b1 = (1 >= src.$length ? $throwRuntimeError("index out of range") : src.$array[src.$offset + 1]) >>> 4 << 24 >>> 24;
  24535. b1 = (b1 | ((((((0 >= src.$length ? $throwRuntimeError("index out of range") : src.$array[src.$offset + 0]) << 4 << 24 >>> 24)) & 63) >>> 0))) >>> 0;
  24536. b0 = (0 >= src.$length ? $throwRuntimeError("index out of range") : src.$array[src.$offset + 0]) >>> 2 << 24 >>> 24;
  24537. }
  24538. (0 >= dst.$length ? $throwRuntimeError("index out of range") : dst.$array[dst.$offset + 0] = enc.encode.charCodeAt(b0));
  24539. (1 >= dst.$length ? $throwRuntimeError("index out of range") : dst.$array[dst.$offset + 1] = enc.encode.charCodeAt(b1));
  24540. (2 >= dst.$length ? $throwRuntimeError("index out of range") : dst.$array[dst.$offset + 2] = enc.encode.charCodeAt(b2));
  24541. (3 >= dst.$length ? $throwRuntimeError("index out of range") : dst.$array[dst.$offset + 3] = enc.encode.charCodeAt(b3));
  24542. if (src.$length < 3) {
  24543. (3 >= dst.$length ? $throwRuntimeError("index out of range") : dst.$array[dst.$offset + 3] = 61);
  24544. if (src.$length < 2) {
  24545. (2 >= dst.$length ? $throwRuntimeError("index out of range") : dst.$array[dst.$offset + 2] = 61);
  24546. }
  24547. break;
  24548. }
  24549. src = $subslice(src, 3);
  24550. dst = $subslice(dst, 4);
  24551. }
  24552. };
  24553. Encoding.prototype.Encode = function(dst, src) { return this.$val.Encode(dst, src); };
  24554. Encoding.ptr.prototype.EncodeToString = function(src) {
  24555. var $ptr, buf, enc, src;
  24556. enc = this;
  24557. buf = $makeSlice(sliceType, enc.EncodedLen(src.$length));
  24558. enc.Encode(buf, src);
  24559. return $bytesToString(buf);
  24560. };
  24561. Encoding.prototype.EncodeToString = function(src) { return this.$val.EncodeToString(src); };
  24562. Encoding.ptr.prototype.EncodedLen = function(n) {
  24563. var $ptr, _q, enc, n;
  24564. enc = this;
  24565. return (_q = ((n + 2 >> 0)) / 3, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")) * 4 >> 0;
  24566. };
  24567. Encoding.prototype.EncodedLen = function(n) { return this.$val.EncodedLen(n); };
  24568. CorruptInputError.prototype.Error = function() {
  24569. var $ptr, e;
  24570. e = this;
  24571. return "illegal base64 data at input byte " + strconv.FormatInt(new $Int64(e.$high, e.$low), 10);
  24572. };
  24573. $ptrType(CorruptInputError).prototype.Error = function() { return this.$get().Error(); };
  24574. Encoding.ptr.prototype.decode = function(dst, src) {
  24575. var $ptr, _i, _ref, _ref$1, _ref$2, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$16, _tmp$17, _tmp$18, _tmp$19, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, dbuf, dlen, dst, enc, end, err, in$1, j, n, olen, src, x;
  24576. n = 0;
  24577. end = false;
  24578. err = $ifaceNil;
  24579. enc = this;
  24580. olen = src.$length;
  24581. while (true) {
  24582. if (!(src.$length > 0 && !end)) { break; }
  24583. dbuf = $clone(arrayType$2.zero(), arrayType$2);
  24584. dlen = 4;
  24585. _ref = dbuf;
  24586. _i = 0;
  24587. while (true) {
  24588. if (!(_i < 4)) { break; }
  24589. j = _i;
  24590. if (src.$length === 0) {
  24591. _tmp = n; _tmp$1 = false; _tmp$2 = new CorruptInputError(0, ((olen - src.$length >> 0) - j >> 0)); n = _tmp; end = _tmp$1; err = _tmp$2;
  24592. return [n, end, err];
  24593. }
  24594. in$1 = (0 >= src.$length ? $throwRuntimeError("index out of range") : src.$array[src.$offset + 0]);
  24595. src = $subslice(src, 1);
  24596. if (in$1 === 61) {
  24597. _ref$1 = j;
  24598. if (_ref$1 === 0 || _ref$1 === 1) {
  24599. _tmp$3 = n; _tmp$4 = false; _tmp$5 = new CorruptInputError(0, ((olen - src.$length >> 0) - 1 >> 0)); n = _tmp$3; end = _tmp$4; err = _tmp$5;
  24600. return [n, end, err];
  24601. } else if (_ref$1 === 2) {
  24602. if (src.$length === 0) {
  24603. _tmp$6 = n; _tmp$7 = false; _tmp$8 = new CorruptInputError(0, olen); n = _tmp$6; end = _tmp$7; err = _tmp$8;
  24604. return [n, end, err];
  24605. }
  24606. if (!(((0 >= src.$length ? $throwRuntimeError("index out of range") : src.$array[src.$offset + 0]) === 61))) {
  24607. _tmp$9 = n; _tmp$10 = false; _tmp$11 = new CorruptInputError(0, ((olen - src.$length >> 0) - 1 >> 0)); n = _tmp$9; end = _tmp$10; err = _tmp$11;
  24608. return [n, end, err];
  24609. }
  24610. src = $subslice(src, 1);
  24611. }
  24612. if (src.$length > 0) {
  24613. err = new CorruptInputError(0, (olen - src.$length >> 0));
  24614. }
  24615. _tmp$12 = j; _tmp$13 = true; dlen = _tmp$12; end = _tmp$13;
  24616. break;
  24617. }
  24618. ((j < 0 || j >= dbuf.length) ? $throwRuntimeError("index out of range") : dbuf[j] = (x = enc.decodeMap, ((in$1 < 0 || in$1 >= x.length) ? $throwRuntimeError("index out of range") : x[in$1])));
  24619. if (((j < 0 || j >= dbuf.length) ? $throwRuntimeError("index out of range") : dbuf[j]) === 255) {
  24620. _tmp$14 = n; _tmp$15 = false; _tmp$16 = new CorruptInputError(0, ((olen - src.$length >> 0) - 1 >> 0)); n = _tmp$14; end = _tmp$15; err = _tmp$16;
  24621. return [n, end, err];
  24622. }
  24623. _i++;
  24624. }
  24625. _ref$2 = dlen;
  24626. if (_ref$2 === 4) {
  24627. (2 >= dst.$length ? $throwRuntimeError("index out of range") : dst.$array[dst.$offset + 2] = ((dbuf[2] << 6 << 24 >>> 24) | dbuf[3]) >>> 0);
  24628. (1 >= dst.$length ? $throwRuntimeError("index out of range") : dst.$array[dst.$offset + 1] = ((dbuf[1] << 4 << 24 >>> 24) | (dbuf[2] >>> 2 << 24 >>> 24)) >>> 0);
  24629. (0 >= dst.$length ? $throwRuntimeError("index out of range") : dst.$array[dst.$offset + 0] = ((dbuf[0] << 2 << 24 >>> 24) | (dbuf[1] >>> 4 << 24 >>> 24)) >>> 0);
  24630. } else if (_ref$2 === 3) {
  24631. (1 >= dst.$length ? $throwRuntimeError("index out of range") : dst.$array[dst.$offset + 1] = ((dbuf[1] << 4 << 24 >>> 24) | (dbuf[2] >>> 2 << 24 >>> 24)) >>> 0);
  24632. (0 >= dst.$length ? $throwRuntimeError("index out of range") : dst.$array[dst.$offset + 0] = ((dbuf[0] << 2 << 24 >>> 24) | (dbuf[1] >>> 4 << 24 >>> 24)) >>> 0);
  24633. } else if (_ref$2 === 2) {
  24634. (0 >= dst.$length ? $throwRuntimeError("index out of range") : dst.$array[dst.$offset + 0] = ((dbuf[0] << 2 << 24 >>> 24) | (dbuf[1] >>> 4 << 24 >>> 24)) >>> 0);
  24635. }
  24636. dst = $subslice(dst, 3);
  24637. n = n + ((dlen - 1 >> 0)) >> 0;
  24638. }
  24639. _tmp$17 = n; _tmp$18 = end; _tmp$19 = err; n = _tmp$17; end = _tmp$18; err = _tmp$19;
  24640. return [n, end, err];
  24641. };
  24642. Encoding.prototype.decode = function(dst, src) { return this.$val.decode(dst, src); };
  24643. Encoding.ptr.prototype.Decode = function(dst, src) {
  24644. var $ptr, _r, _tuple, dst, enc, err, n, src, $s, $r;
  24645. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tuple = $f._tuple; dst = $f.dst; enc = $f.enc; err = $f.err; n = $f.n; src = $f.src; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  24646. n = 0;
  24647. err = $ifaceNil;
  24648. enc = this;
  24649. _r = bytes.Map(removeNewlinesMapper, src); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  24650. src = _r;
  24651. _tuple = enc.decode(dst, src); n = _tuple[0]; err = _tuple[2];
  24652. return [n, err];
  24653. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Encoding.ptr.prototype.Decode }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple = _tuple; $f.dst = dst; $f.enc = enc; $f.err = err; $f.n = n; $f.src = src; $f.$s = $s; $f.$r = $r; return $f;
  24654. };
  24655. Encoding.prototype.Decode = function(dst, src) { return this.$val.Decode(dst, src); };
  24656. Encoding.ptr.prototype.DecodeString = function(s) {
  24657. var $ptr, _r, _tuple, dbuf, enc, err, n, s, $s, $r;
  24658. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tuple = $f._tuple; dbuf = $f.dbuf; enc = $f.enc; err = $f.err; n = $f.n; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  24659. enc = this;
  24660. _r = strings.Map(removeNewlinesMapper, s); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  24661. s = _r;
  24662. dbuf = $makeSlice(sliceType, enc.DecodedLen(s.length));
  24663. _tuple = enc.decode(dbuf, new sliceType($stringToBytes(s))); n = _tuple[0]; err = _tuple[2];
  24664. return [$subslice(dbuf, 0, n), err];
  24665. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Encoding.ptr.prototype.DecodeString }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple = _tuple; $f.dbuf = dbuf; $f.enc = enc; $f.err = err; $f.n = n; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
  24666. };
  24667. Encoding.prototype.DecodeString = function(s) { return this.$val.DecodeString(s); };
  24668. Encoding.ptr.prototype.DecodedLen = function(n) {
  24669. var $ptr, _q, enc, n;
  24670. enc = this;
  24671. return (_q = n / 4, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")) * 3 >> 0;
  24672. };
  24673. Encoding.prototype.DecodedLen = function(n) { return this.$val.DecodedLen(n); };
  24674. ptrType.methods = [{prop: "Encode", name: "Encode", pkg: "", typ: $funcType([sliceType, sliceType], [], false)}, {prop: "EncodeToString", name: "EncodeToString", pkg: "", typ: $funcType([sliceType], [$String], false)}, {prop: "EncodedLen", name: "EncodedLen", pkg: "", typ: $funcType([$Int], [$Int], false)}, {prop: "decode", name: "decode", pkg: "encoding/base64", typ: $funcType([sliceType, sliceType], [$Int, $Bool, $error], false)}, {prop: "Decode", name: "Decode", pkg: "", typ: $funcType([sliceType, sliceType], [$Int, $error], false)}, {prop: "DecodeString", name: "DecodeString", pkg: "", typ: $funcType([$String], [sliceType, $error], false)}, {prop: "DecodedLen", name: "DecodedLen", pkg: "", typ: $funcType([$Int], [$Int], false)}];
  24675. CorruptInputError.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}];
  24676. Encoding.init([{prop: "encode", name: "encode", pkg: "encoding/base64", typ: $String, tag: ""}, {prop: "decodeMap", name: "decodeMap", pkg: "encoding/base64", typ: arrayType$4, tag: ""}]);
  24677. $init = function() {
  24678. $pkg.$init = function() {};
  24679. /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  24680. $r = bytes.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  24681. $r = io.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  24682. $r = strconv.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  24683. $r = strings.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  24684. $pkg.StdEncoding = NewEncoding("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/");
  24685. $pkg.URLEncoding = NewEncoding("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_");
  24686. removeNewlinesMapper = (function(r) {
  24687. var $ptr, r;
  24688. if ((r === 13) || (r === 10)) {
  24689. return -1;
  24690. }
  24691. return r;
  24692. });
  24693. /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
  24694. };
  24695. $pkg.$init = $init;
  24696. return $pkg;
  24697. })();
  24698. $packages["regexp/syntax"] = (function() {
  24699. var $pkg = {}, $init, bytes, sort, strconv, strings, unicode, utf8, patchList, frag, compiler, Error, ErrorCode, Flags, parser, charGroup, ranges, Prog, InstOp, EmptyOp, Inst, Regexp, Op, sliceType, sliceType$1, sliceType$2, sliceType$3, ptrType, sliceType$4, arrayType, arrayType$1, ptrType$1, ptrType$2, ptrType$3, ptrType$4, ptrType$5, ptrType$6, sliceType$5, ptrType$7, anyRuneNotNL, anyRune, anyTable, code1, code2, code3, perlGroup, code4, code5, code6, code7, code8, code9, code10, code11, code12, code13, code14, code15, code16, code17, posixGroup, instOpNames, _map, _key, _map$1, _key$1, Compile, minFoldRune, repeatIsValid, cleanAlt, literalRegexp, Parse, isValidCaptureName, isCharClass, matchRune, mergeCharClass, unicodeTable, cleanClass, appendLiteral, appendRange, appendFoldedRange, appendClass, appendFoldedClass, appendNegatedClass, appendTable, appendNegatedTable, negateClass, checkUTF8, nextRune, isalnum, unhex, EmptyOpContext, IsWordChar, wordRune, bw, dumpProg, u32, dumpInst, writeRegexp, escape, simplify1;
  24700. bytes = $packages["bytes"];
  24701. sort = $packages["sort"];
  24702. strconv = $packages["strconv"];
  24703. strings = $packages["strings"];
  24704. unicode = $packages["unicode"];
  24705. utf8 = $packages["unicode/utf8"];
  24706. patchList = $pkg.patchList = $newType(4, $kindUint32, "syntax.patchList", "patchList", "regexp/syntax", null);
  24707. frag = $pkg.frag = $newType(0, $kindStruct, "syntax.frag", "frag", "regexp/syntax", function(i_, out_) {
  24708. this.$val = this;
  24709. if (arguments.length === 0) {
  24710. this.i = 0;
  24711. this.out = 0;
  24712. return;
  24713. }
  24714. this.i = i_;
  24715. this.out = out_;
  24716. });
  24717. compiler = $pkg.compiler = $newType(0, $kindStruct, "syntax.compiler", "compiler", "regexp/syntax", function(p_) {
  24718. this.$val = this;
  24719. if (arguments.length === 0) {
  24720. this.p = ptrType$3.nil;
  24721. return;
  24722. }
  24723. this.p = p_;
  24724. });
  24725. Error = $pkg.Error = $newType(0, $kindStruct, "syntax.Error", "Error", "regexp/syntax", function(Code_, Expr_) {
  24726. this.$val = this;
  24727. if (arguments.length === 0) {
  24728. this.Code = "";
  24729. this.Expr = "";
  24730. return;
  24731. }
  24732. this.Code = Code_;
  24733. this.Expr = Expr_;
  24734. });
  24735. ErrorCode = $pkg.ErrorCode = $newType(8, $kindString, "syntax.ErrorCode", "ErrorCode", "regexp/syntax", null);
  24736. Flags = $pkg.Flags = $newType(2, $kindUint16, "syntax.Flags", "Flags", "regexp/syntax", null);
  24737. parser = $pkg.parser = $newType(0, $kindStruct, "syntax.parser", "parser", "regexp/syntax", function(flags_, stack_, free_, numCap_, wholeRegexp_, tmpClass_) {
  24738. this.$val = this;
  24739. if (arguments.length === 0) {
  24740. this.flags = 0;
  24741. this.stack = sliceType$4.nil;
  24742. this.free = ptrType.nil;
  24743. this.numCap = 0;
  24744. this.wholeRegexp = "";
  24745. this.tmpClass = sliceType.nil;
  24746. return;
  24747. }
  24748. this.flags = flags_;
  24749. this.stack = stack_;
  24750. this.free = free_;
  24751. this.numCap = numCap_;
  24752. this.wholeRegexp = wholeRegexp_;
  24753. this.tmpClass = tmpClass_;
  24754. });
  24755. charGroup = $pkg.charGroup = $newType(0, $kindStruct, "syntax.charGroup", "charGroup", "regexp/syntax", function(sign_, class$1_) {
  24756. this.$val = this;
  24757. if (arguments.length === 0) {
  24758. this.sign = 0;
  24759. this.class$1 = sliceType.nil;
  24760. return;
  24761. }
  24762. this.sign = sign_;
  24763. this.class$1 = class$1_;
  24764. });
  24765. ranges = $pkg.ranges = $newType(0, $kindStruct, "syntax.ranges", "ranges", "regexp/syntax", function(p_) {
  24766. this.$val = this;
  24767. if (arguments.length === 0) {
  24768. this.p = ptrType$1.nil;
  24769. return;
  24770. }
  24771. this.p = p_;
  24772. });
  24773. Prog = $pkg.Prog = $newType(0, $kindStruct, "syntax.Prog", "Prog", "regexp/syntax", function(Inst_, Start_, NumCap_) {
  24774. this.$val = this;
  24775. if (arguments.length === 0) {
  24776. this.Inst = sliceType$5.nil;
  24777. this.Start = 0;
  24778. this.NumCap = 0;
  24779. return;
  24780. }
  24781. this.Inst = Inst_;
  24782. this.Start = Start_;
  24783. this.NumCap = NumCap_;
  24784. });
  24785. InstOp = $pkg.InstOp = $newType(1, $kindUint8, "syntax.InstOp", "InstOp", "regexp/syntax", null);
  24786. EmptyOp = $pkg.EmptyOp = $newType(1, $kindUint8, "syntax.EmptyOp", "EmptyOp", "regexp/syntax", null);
  24787. Inst = $pkg.Inst = $newType(0, $kindStruct, "syntax.Inst", "Inst", "regexp/syntax", function(Op_, Out_, Arg_, Rune_) {
  24788. this.$val = this;
  24789. if (arguments.length === 0) {
  24790. this.Op = 0;
  24791. this.Out = 0;
  24792. this.Arg = 0;
  24793. this.Rune = sliceType.nil;
  24794. return;
  24795. }
  24796. this.Op = Op_;
  24797. this.Out = Out_;
  24798. this.Arg = Arg_;
  24799. this.Rune = Rune_;
  24800. });
  24801. Regexp = $pkg.Regexp = $newType(0, $kindStruct, "syntax.Regexp", "Regexp", "regexp/syntax", function(Op_, Flags_, Sub_, Sub0_, Rune_, Rune0_, Min_, Max_, Cap_, Name_) {
  24802. this.$val = this;
  24803. if (arguments.length === 0) {
  24804. this.Op = 0;
  24805. this.Flags = 0;
  24806. this.Sub = sliceType$4.nil;
  24807. this.Sub0 = arrayType.zero();
  24808. this.Rune = sliceType.nil;
  24809. this.Rune0 = arrayType$1.zero();
  24810. this.Min = 0;
  24811. this.Max = 0;
  24812. this.Cap = 0;
  24813. this.Name = "";
  24814. return;
  24815. }
  24816. this.Op = Op_;
  24817. this.Flags = Flags_;
  24818. this.Sub = Sub_;
  24819. this.Sub0 = Sub0_;
  24820. this.Rune = Rune_;
  24821. this.Rune0 = Rune0_;
  24822. this.Min = Min_;
  24823. this.Max = Max_;
  24824. this.Cap = Cap_;
  24825. this.Name = Name_;
  24826. });
  24827. Op = $pkg.Op = $newType(1, $kindUint8, "syntax.Op", "Op", "regexp/syntax", null);
  24828. sliceType = $sliceType($Int32);
  24829. sliceType$1 = $sliceType(unicode.Range16);
  24830. sliceType$2 = $sliceType(unicode.Range32);
  24831. sliceType$3 = $sliceType($String);
  24832. ptrType = $ptrType(Regexp);
  24833. sliceType$4 = $sliceType(ptrType);
  24834. arrayType = $arrayType(ptrType, 1);
  24835. arrayType$1 = $arrayType($Int32, 2);
  24836. ptrType$1 = $ptrType(sliceType);
  24837. ptrType$2 = $ptrType(unicode.RangeTable);
  24838. ptrType$3 = $ptrType(Prog);
  24839. ptrType$4 = $ptrType(compiler);
  24840. ptrType$5 = $ptrType(Error);
  24841. ptrType$6 = $ptrType(parser);
  24842. sliceType$5 = $sliceType(Inst);
  24843. ptrType$7 = $ptrType(Inst);
  24844. patchList.prototype.next = function(p) {
  24845. var $ptr, i, l, p, x, x$1;
  24846. l = this.$val;
  24847. i = (x = p.Inst, x$1 = l >>> 1 >>> 0, ((x$1 < 0 || x$1 >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + x$1]));
  24848. if (((l & 1) >>> 0) === 0) {
  24849. return (i.Out >>> 0);
  24850. }
  24851. return (i.Arg >>> 0);
  24852. };
  24853. $ptrType(patchList).prototype.next = function(p) { return new patchList(this.$get()).next(p); };
  24854. patchList.prototype.patch = function(p, val) {
  24855. var $ptr, i, l, p, val, x, x$1;
  24856. l = this.$val;
  24857. while (true) {
  24858. if (!(!((l === 0)))) { break; }
  24859. i = (x = p.Inst, x$1 = l >>> 1 >>> 0, ((x$1 < 0 || x$1 >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + x$1]));
  24860. if (((l & 1) >>> 0) === 0) {
  24861. l = (i.Out >>> 0);
  24862. i.Out = val;
  24863. } else {
  24864. l = (i.Arg >>> 0);
  24865. i.Arg = val;
  24866. }
  24867. }
  24868. };
  24869. $ptrType(patchList).prototype.patch = function(p, val) { return new patchList(this.$get()).patch(p, val); };
  24870. patchList.prototype.append = function(p, l2) {
  24871. var $ptr, i, l1, l2, last, next, p, x, x$1;
  24872. l1 = this.$val;
  24873. if (l1 === 0) {
  24874. return l2;
  24875. }
  24876. if (l2 === 0) {
  24877. return l1;
  24878. }
  24879. last = l1;
  24880. while (true) {
  24881. next = new patchList(last).next(p);
  24882. if (next === 0) {
  24883. break;
  24884. }
  24885. last = next;
  24886. }
  24887. i = (x = p.Inst, x$1 = last >>> 1 >>> 0, ((x$1 < 0 || x$1 >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + x$1]));
  24888. if (((last & 1) >>> 0) === 0) {
  24889. i.Out = (l2 >>> 0);
  24890. } else {
  24891. i.Arg = (l2 >>> 0);
  24892. }
  24893. return l1;
  24894. };
  24895. $ptrType(patchList).prototype.append = function(p, l2) { return new patchList(this.$get()).append(p, l2); };
  24896. Compile = function(re) {
  24897. var $ptr, c, f, re;
  24898. c = $clone(new compiler.ptr(), compiler);
  24899. c.init();
  24900. f = $clone(c.compile(re), frag);
  24901. new patchList(f.out).patch(c.p, c.inst(4).i);
  24902. c.p.Start = (f.i >> 0);
  24903. return [c.p, $ifaceNil];
  24904. };
  24905. $pkg.Compile = Compile;
  24906. compiler.ptr.prototype.init = function() {
  24907. var $ptr, c;
  24908. c = this;
  24909. c.p = new Prog.ptr();
  24910. c.p.NumCap = 2;
  24911. c.inst(5);
  24912. };
  24913. compiler.prototype.init = function() { return this.$val.init(); };
  24914. compiler.ptr.prototype.compile = function(re) {
  24915. var $ptr, _i, _i$1, _i$2, _ref, _ref$1, _ref$2, _ref$3, bra, c, f, f$1, f$2, f1, i, j, ket, re, sub, sub$1, sub$2, x, x$1, x$2, x$3;
  24916. c = this;
  24917. _ref = re.Op;
  24918. if (_ref === 1) {
  24919. return c.fail();
  24920. } else if (_ref === 2) {
  24921. return c.nop();
  24922. } else if (_ref === 3) {
  24923. if (re.Rune.$length === 0) {
  24924. return c.nop();
  24925. }
  24926. f = $clone(new frag.ptr(), frag);
  24927. _ref$1 = re.Rune;
  24928. _i = 0;
  24929. while (true) {
  24930. if (!(_i < _ref$1.$length)) { break; }
  24931. j = _i;
  24932. f1 = $clone(c.rune($subslice(re.Rune, j, (j + 1 >> 0)), re.Flags), frag);
  24933. if (j === 0) {
  24934. $copy(f, f1, frag);
  24935. } else {
  24936. $copy(f, c.cat(f, f1), frag);
  24937. }
  24938. _i++;
  24939. }
  24940. return f;
  24941. } else if (_ref === 4) {
  24942. return c.rune(re.Rune, re.Flags);
  24943. } else if (_ref === 5) {
  24944. return c.rune(anyRuneNotNL, 0);
  24945. } else if (_ref === 6) {
  24946. return c.rune(anyRune, 0);
  24947. } else if (_ref === 7) {
  24948. return c.empty(1);
  24949. } else if (_ref === 8) {
  24950. return c.empty(2);
  24951. } else if (_ref === 9) {
  24952. return c.empty(4);
  24953. } else if (_ref === 10) {
  24954. return c.empty(8);
  24955. } else if (_ref === 11) {
  24956. return c.empty(16);
  24957. } else if (_ref === 12) {
  24958. return c.empty(32);
  24959. } else if (_ref === 13) {
  24960. bra = $clone(c.cap(((re.Cap << 1 >> 0) >>> 0)), frag);
  24961. sub = $clone(c.compile((x = re.Sub, (0 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 0]))), frag);
  24962. ket = $clone(c.cap((((re.Cap << 1 >> 0) | 1) >>> 0)), frag);
  24963. return c.cat(c.cat(bra, sub), ket);
  24964. } else if (_ref === 14) {
  24965. return c.star(c.compile((x$1 = re.Sub, (0 >= x$1.$length ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + 0]))), !((((re.Flags & 32) >>> 0) === 0)));
  24966. } else if (_ref === 15) {
  24967. return c.plus(c.compile((x$2 = re.Sub, (0 >= x$2.$length ? $throwRuntimeError("index out of range") : x$2.$array[x$2.$offset + 0]))), !((((re.Flags & 32) >>> 0) === 0)));
  24968. } else if (_ref === 16) {
  24969. return c.quest(c.compile((x$3 = re.Sub, (0 >= x$3.$length ? $throwRuntimeError("index out of range") : x$3.$array[x$3.$offset + 0]))), !((((re.Flags & 32) >>> 0) === 0)));
  24970. } else if (_ref === 18) {
  24971. if (re.Sub.$length === 0) {
  24972. return c.nop();
  24973. }
  24974. f$1 = $clone(new frag.ptr(), frag);
  24975. _ref$2 = re.Sub;
  24976. _i$1 = 0;
  24977. while (true) {
  24978. if (!(_i$1 < _ref$2.$length)) { break; }
  24979. i = _i$1;
  24980. sub$1 = ((_i$1 < 0 || _i$1 >= _ref$2.$length) ? $throwRuntimeError("index out of range") : _ref$2.$array[_ref$2.$offset + _i$1]);
  24981. if (i === 0) {
  24982. $copy(f$1, c.compile(sub$1), frag);
  24983. } else {
  24984. $copy(f$1, c.cat(f$1, c.compile(sub$1)), frag);
  24985. }
  24986. _i$1++;
  24987. }
  24988. return f$1;
  24989. } else if (_ref === 19) {
  24990. f$2 = $clone(new frag.ptr(), frag);
  24991. _ref$3 = re.Sub;
  24992. _i$2 = 0;
  24993. while (true) {
  24994. if (!(_i$2 < _ref$3.$length)) { break; }
  24995. sub$2 = ((_i$2 < 0 || _i$2 >= _ref$3.$length) ? $throwRuntimeError("index out of range") : _ref$3.$array[_ref$3.$offset + _i$2]);
  24996. $copy(f$2, c.alt(f$2, c.compile(sub$2)), frag);
  24997. _i$2++;
  24998. }
  24999. return f$2;
  25000. }
  25001. $panic(new $String("regexp: unhandled case in compile"));
  25002. };
  25003. compiler.prototype.compile = function(re) { return this.$val.compile(re); };
  25004. compiler.ptr.prototype.inst = function(op) {
  25005. var $ptr, c, f, op;
  25006. c = this;
  25007. f = new frag.ptr((c.p.Inst.$length >>> 0), 0);
  25008. c.p.Inst = $append(c.p.Inst, new Inst.ptr(op, 0, 0, sliceType.nil));
  25009. return f;
  25010. };
  25011. compiler.prototype.inst = function(op) { return this.$val.inst(op); };
  25012. compiler.ptr.prototype.nop = function() {
  25013. var $ptr, c, f;
  25014. c = this;
  25015. f = $clone(c.inst(6), frag);
  25016. f.out = ((f.i << 1 >>> 0) >>> 0);
  25017. return f;
  25018. };
  25019. compiler.prototype.nop = function() { return this.$val.nop(); };
  25020. compiler.ptr.prototype.fail = function() {
  25021. var $ptr, c;
  25022. c = this;
  25023. return new frag.ptr(0, 0);
  25024. };
  25025. compiler.prototype.fail = function() { return this.$val.fail(); };
  25026. compiler.ptr.prototype.cap = function(arg) {
  25027. var $ptr, arg, c, f, x, x$1;
  25028. c = this;
  25029. f = $clone(c.inst(2), frag);
  25030. f.out = ((f.i << 1 >>> 0) >>> 0);
  25031. (x = c.p.Inst, x$1 = f.i, ((x$1 < 0 || x$1 >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + x$1])).Arg = arg;
  25032. if (c.p.NumCap < ((arg >> 0) + 1 >> 0)) {
  25033. c.p.NumCap = (arg >> 0) + 1 >> 0;
  25034. }
  25035. return f;
  25036. };
  25037. compiler.prototype.cap = function(arg) { return this.$val.cap(arg); };
  25038. compiler.ptr.prototype.cat = function(f1, f2) {
  25039. var $ptr, c, f1, f2;
  25040. c = this;
  25041. f2 = $clone(f2, frag);
  25042. f1 = $clone(f1, frag);
  25043. if ((f1.i === 0) || (f2.i === 0)) {
  25044. return new frag.ptr(0, 0);
  25045. }
  25046. new patchList(f1.out).patch(c.p, f2.i);
  25047. return new frag.ptr(f1.i, f2.out);
  25048. };
  25049. compiler.prototype.cat = function(f1, f2) { return this.$val.cat(f1, f2); };
  25050. compiler.ptr.prototype.alt = function(f1, f2) {
  25051. var $ptr, c, f, f1, f2, i, x, x$1;
  25052. c = this;
  25053. f2 = $clone(f2, frag);
  25054. f1 = $clone(f1, frag);
  25055. if (f1.i === 0) {
  25056. return f2;
  25057. }
  25058. if (f2.i === 0) {
  25059. return f1;
  25060. }
  25061. f = $clone(c.inst(0), frag);
  25062. i = (x = c.p.Inst, x$1 = f.i, ((x$1 < 0 || x$1 >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + x$1]));
  25063. i.Out = f1.i;
  25064. i.Arg = f2.i;
  25065. f.out = new patchList(f1.out).append(c.p, f2.out);
  25066. return f;
  25067. };
  25068. compiler.prototype.alt = function(f1, f2) { return this.$val.alt(f1, f2); };
  25069. compiler.ptr.prototype.quest = function(f1, nongreedy) {
  25070. var $ptr, c, f, f1, i, nongreedy, x, x$1;
  25071. c = this;
  25072. f1 = $clone(f1, frag);
  25073. f = $clone(c.inst(0), frag);
  25074. i = (x = c.p.Inst, x$1 = f.i, ((x$1 < 0 || x$1 >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + x$1]));
  25075. if (nongreedy) {
  25076. i.Arg = f1.i;
  25077. f.out = ((f.i << 1 >>> 0) >>> 0);
  25078. } else {
  25079. i.Out = f1.i;
  25080. f.out = ((((f.i << 1 >>> 0) | 1) >>> 0) >>> 0);
  25081. }
  25082. f.out = new patchList(f.out).append(c.p, f1.out);
  25083. return f;
  25084. };
  25085. compiler.prototype.quest = function(f1, nongreedy) { return this.$val.quest(f1, nongreedy); };
  25086. compiler.ptr.prototype.star = function(f1, nongreedy) {
  25087. var $ptr, c, f, f1, i, nongreedy, x, x$1;
  25088. c = this;
  25089. f1 = $clone(f1, frag);
  25090. f = $clone(c.inst(0), frag);
  25091. i = (x = c.p.Inst, x$1 = f.i, ((x$1 < 0 || x$1 >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + x$1]));
  25092. if (nongreedy) {
  25093. i.Arg = f1.i;
  25094. f.out = ((f.i << 1 >>> 0) >>> 0);
  25095. } else {
  25096. i.Out = f1.i;
  25097. f.out = ((((f.i << 1 >>> 0) | 1) >>> 0) >>> 0);
  25098. }
  25099. new patchList(f1.out).patch(c.p, f.i);
  25100. return f;
  25101. };
  25102. compiler.prototype.star = function(f1, nongreedy) { return this.$val.star(f1, nongreedy); };
  25103. compiler.ptr.prototype.plus = function(f1, nongreedy) {
  25104. var $ptr, c, f1, nongreedy;
  25105. c = this;
  25106. f1 = $clone(f1, frag);
  25107. return new frag.ptr(f1.i, c.star(f1, nongreedy).out);
  25108. };
  25109. compiler.prototype.plus = function(f1, nongreedy) { return this.$val.plus(f1, nongreedy); };
  25110. compiler.ptr.prototype.empty = function(op) {
  25111. var $ptr, c, f, op, x, x$1;
  25112. c = this;
  25113. f = $clone(c.inst(3), frag);
  25114. (x = c.p.Inst, x$1 = f.i, ((x$1 < 0 || x$1 >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + x$1])).Arg = (op >>> 0);
  25115. f.out = ((f.i << 1 >>> 0) >>> 0);
  25116. return f;
  25117. };
  25118. compiler.prototype.empty = function(op) { return this.$val.empty(op); };
  25119. compiler.ptr.prototype.rune = function(r, flags) {
  25120. var $ptr, c, f, flags, i, r, x, x$1;
  25121. c = this;
  25122. f = $clone(c.inst(7), frag);
  25123. i = (x = c.p.Inst, x$1 = f.i, ((x$1 < 0 || x$1 >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + x$1]));
  25124. i.Rune = r;
  25125. flags = (flags & (1)) >>> 0;
  25126. if (!((r.$length === 1)) || (unicode.SimpleFold((0 >= r.$length ? $throwRuntimeError("index out of range") : r.$array[r.$offset + 0])) === (0 >= r.$length ? $throwRuntimeError("index out of range") : r.$array[r.$offset + 0]))) {
  25127. flags = (flags & ~(1)) << 16 >>> 16;
  25128. }
  25129. i.Arg = (flags >>> 0);
  25130. f.out = ((f.i << 1 >>> 0) >>> 0);
  25131. if ((((flags & 1) >>> 0) === 0) && ((r.$length === 1) || (r.$length === 2) && ((0 >= r.$length ? $throwRuntimeError("index out of range") : r.$array[r.$offset + 0]) === (1 >= r.$length ? $throwRuntimeError("index out of range") : r.$array[r.$offset + 1])))) {
  25132. i.Op = 8;
  25133. } else if ((r.$length === 2) && ((0 >= r.$length ? $throwRuntimeError("index out of range") : r.$array[r.$offset + 0]) === 0) && ((1 >= r.$length ? $throwRuntimeError("index out of range") : r.$array[r.$offset + 1]) === 1114111)) {
  25134. i.Op = 9;
  25135. } else if ((r.$length === 4) && ((0 >= r.$length ? $throwRuntimeError("index out of range") : r.$array[r.$offset + 0]) === 0) && ((1 >= r.$length ? $throwRuntimeError("index out of range") : r.$array[r.$offset + 1]) === 9) && ((2 >= r.$length ? $throwRuntimeError("index out of range") : r.$array[r.$offset + 2]) === 11) && ((3 >= r.$length ? $throwRuntimeError("index out of range") : r.$array[r.$offset + 3]) === 1114111)) {
  25136. i.Op = 10;
  25137. }
  25138. return f;
  25139. };
  25140. compiler.prototype.rune = function(r, flags) { return this.$val.rune(r, flags); };
  25141. Error.ptr.prototype.Error = function() {
  25142. var $ptr, e;
  25143. e = this;
  25144. return "error parsing regexp: " + new ErrorCode(e.Code).String() + ": `" + e.Expr + "`";
  25145. };
  25146. Error.prototype.Error = function() { return this.$val.Error(); };
  25147. ErrorCode.prototype.String = function() {
  25148. var $ptr, e;
  25149. e = this.$val;
  25150. return e;
  25151. };
  25152. $ptrType(ErrorCode).prototype.String = function() { return new ErrorCode(this.$get()).String(); };
  25153. parser.ptr.prototype.newRegexp = function(op) {
  25154. var $ptr, op, p, re;
  25155. p = this;
  25156. re = p.free;
  25157. if (!(re === ptrType.nil)) {
  25158. p.free = re.Sub0[0];
  25159. $copy(re, new Regexp.ptr(0, 0, sliceType$4.nil, arrayType.zero(), sliceType.nil, arrayType$1.zero(), 0, 0, 0, ""), Regexp);
  25160. } else {
  25161. re = new Regexp.ptr();
  25162. }
  25163. re.Op = op;
  25164. return re;
  25165. };
  25166. parser.prototype.newRegexp = function(op) { return this.$val.newRegexp(op); };
  25167. parser.ptr.prototype.reuse = function(re) {
  25168. var $ptr, p, re;
  25169. p = this;
  25170. re.Sub0[0] = p.free;
  25171. p.free = re;
  25172. };
  25173. parser.prototype.reuse = function(re) { return this.$val.reuse(re); };
  25174. parser.ptr.prototype.push = function(re) {
  25175. var $ptr, p, re, x, x$1, x$10, x$11, x$12, x$13, x$14, x$15, x$16, x$17, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9;
  25176. p = this;
  25177. if ((re.Op === 4) && (re.Rune.$length === 2) && ((x = re.Rune, (0 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 0])) === (x$1 = re.Rune, (1 >= x$1.$length ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + 1])))) {
  25178. if (p.maybeConcat((x$16 = re.Rune, (0 >= x$16.$length ? $throwRuntimeError("index out of range") : x$16.$array[x$16.$offset + 0])), (p.flags & ~1) << 16 >>> 16)) {
  25179. return ptrType.nil;
  25180. }
  25181. re.Op = 3;
  25182. re.Rune = $subslice(re.Rune, 0, 1);
  25183. re.Flags = (p.flags & ~1) << 16 >>> 16;
  25184. } else if ((re.Op === 4) && (re.Rune.$length === 4) && ((x$2 = re.Rune, (0 >= x$2.$length ? $throwRuntimeError("index out of range") : x$2.$array[x$2.$offset + 0])) === (x$3 = re.Rune, (1 >= x$3.$length ? $throwRuntimeError("index out of range") : x$3.$array[x$3.$offset + 1]))) && ((x$4 = re.Rune, (2 >= x$4.$length ? $throwRuntimeError("index out of range") : x$4.$array[x$4.$offset + 2])) === (x$5 = re.Rune, (3 >= x$5.$length ? $throwRuntimeError("index out of range") : x$5.$array[x$5.$offset + 3]))) && (unicode.SimpleFold((x$6 = re.Rune, (0 >= x$6.$length ? $throwRuntimeError("index out of range") : x$6.$array[x$6.$offset + 0]))) === (x$7 = re.Rune, (2 >= x$7.$length ? $throwRuntimeError("index out of range") : x$7.$array[x$7.$offset + 2]))) && (unicode.SimpleFold((x$8 = re.Rune, (2 >= x$8.$length ? $throwRuntimeError("index out of range") : x$8.$array[x$8.$offset + 2]))) === (x$9 = re.Rune, (0 >= x$9.$length ? $throwRuntimeError("index out of range") : x$9.$array[x$9.$offset + 0]))) || (re.Op === 4) && (re.Rune.$length === 2) && (((x$10 = re.Rune, (0 >= x$10.$length ? $throwRuntimeError("index out of range") : x$10.$array[x$10.$offset + 0])) + 1 >> 0) === (x$11 = re.Rune, (1 >= x$11.$length ? $throwRuntimeError("index out of range") : x$11.$array[x$11.$offset + 1]))) && (unicode.SimpleFold((x$12 = re.Rune, (0 >= x$12.$length ? $throwRuntimeError("index out of range") : x$12.$array[x$12.$offset + 0]))) === (x$13 = re.Rune, (1 >= x$13.$length ? $throwRuntimeError("index out of range") : x$13.$array[x$13.$offset + 1]))) && (unicode.SimpleFold((x$14 = re.Rune, (1 >= x$14.$length ? $throwRuntimeError("index out of range") : x$14.$array[x$14.$offset + 1]))) === (x$15 = re.Rune, (0 >= x$15.$length ? $throwRuntimeError("index out of range") : x$15.$array[x$15.$offset + 0])))) {
  25185. if (p.maybeConcat((x$17 = re.Rune, (0 >= x$17.$length ? $throwRuntimeError("index out of range") : x$17.$array[x$17.$offset + 0])), (p.flags | 1) >>> 0)) {
  25186. return ptrType.nil;
  25187. }
  25188. re.Op = 3;
  25189. re.Rune = $subslice(re.Rune, 0, 1);
  25190. re.Flags = (p.flags | 1) >>> 0;
  25191. } else {
  25192. p.maybeConcat(-1, 0);
  25193. }
  25194. p.stack = $append(p.stack, re);
  25195. return re;
  25196. };
  25197. parser.prototype.push = function(re) { return this.$val.push(re); };
  25198. parser.ptr.prototype.maybeConcat = function(r, flags) {
  25199. var $ptr, flags, n, p, r, re1, re2, x, x$1, x$2, x$3, x$4;
  25200. p = this;
  25201. n = p.stack.$length;
  25202. if (n < 2) {
  25203. return false;
  25204. }
  25205. re1 = (x = p.stack, x$1 = n - 1 >> 0, ((x$1 < 0 || x$1 >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + x$1]));
  25206. re2 = (x$2 = p.stack, x$3 = n - 2 >> 0, ((x$3 < 0 || x$3 >= x$2.$length) ? $throwRuntimeError("index out of range") : x$2.$array[x$2.$offset + x$3]));
  25207. if (!((re1.Op === 3)) || !((re2.Op === 3)) || !((((re1.Flags & 1) >>> 0) === ((re2.Flags & 1) >>> 0)))) {
  25208. return false;
  25209. }
  25210. re2.Rune = $appendSlice(re2.Rune, re1.Rune);
  25211. if (r >= 0) {
  25212. re1.Rune = $subslice(new sliceType(re1.Rune0), 0, 1);
  25213. (x$4 = re1.Rune, (0 >= x$4.$length ? $throwRuntimeError("index out of range") : x$4.$array[x$4.$offset + 0] = r));
  25214. re1.Flags = flags;
  25215. return true;
  25216. }
  25217. p.stack = $subslice(p.stack, 0, (n - 1 >> 0));
  25218. p.reuse(re1);
  25219. return false;
  25220. };
  25221. parser.prototype.maybeConcat = function(r, flags) { return this.$val.maybeConcat(r, flags); };
  25222. parser.ptr.prototype.newLiteral = function(r, flags) {
  25223. var $ptr, flags, p, r, re;
  25224. p = this;
  25225. re = p.newRegexp(3);
  25226. re.Flags = flags;
  25227. if (!((((flags & 1) >>> 0) === 0))) {
  25228. r = minFoldRune(r);
  25229. }
  25230. re.Rune0[0] = r;
  25231. re.Rune = $subslice(new sliceType(re.Rune0), 0, 1);
  25232. return re;
  25233. };
  25234. parser.prototype.newLiteral = function(r, flags) { return this.$val.newLiteral(r, flags); };
  25235. minFoldRune = function(r) {
  25236. var $ptr, min, r, r0;
  25237. if (r < 65 || r > 71903) {
  25238. return r;
  25239. }
  25240. min = r;
  25241. r0 = r;
  25242. r = unicode.SimpleFold(r);
  25243. while (true) {
  25244. if (!(!((r === r0)))) { break; }
  25245. if (min > r) {
  25246. min = r;
  25247. }
  25248. r = unicode.SimpleFold(r);
  25249. }
  25250. return min;
  25251. };
  25252. parser.ptr.prototype.literal = function(r) {
  25253. var $ptr, p, r;
  25254. p = this;
  25255. p.push(p.newLiteral(r, p.flags));
  25256. };
  25257. parser.prototype.literal = function(r) { return this.$val.literal(r); };
  25258. parser.ptr.prototype.op = function(op) {
  25259. var $ptr, op, p, re;
  25260. p = this;
  25261. re = p.newRegexp(op);
  25262. re.Flags = p.flags;
  25263. return p.push(re);
  25264. };
  25265. parser.prototype.op = function(op) { return this.$val.op(op); };
  25266. parser.ptr.prototype.repeat = function(op, min, max, before, after, lastRepeat) {
  25267. var $ptr, after, before, flags, lastRepeat, max, min, n, op, p, re, sub, x, x$1, x$2, x$3, x$4;
  25268. p = this;
  25269. flags = p.flags;
  25270. if (!((((p.flags & 64) >>> 0) === 0))) {
  25271. if (after.length > 0 && (after.charCodeAt(0) === 63)) {
  25272. after = after.substring(1);
  25273. flags = (flags ^ (32)) << 16 >>> 16;
  25274. }
  25275. if (!(lastRepeat === "")) {
  25276. return ["", new Error.ptr("invalid nested repetition operator", lastRepeat.substring(0, (lastRepeat.length - after.length >> 0)))];
  25277. }
  25278. }
  25279. n = p.stack.$length;
  25280. if (n === 0) {
  25281. return ["", new Error.ptr("missing argument to repetition operator", before.substring(0, (before.length - after.length >> 0)))];
  25282. }
  25283. sub = (x = p.stack, x$1 = n - 1 >> 0, ((x$1 < 0 || x$1 >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + x$1]));
  25284. if (sub.Op >= 128) {
  25285. return ["", new Error.ptr("missing argument to repetition operator", before.substring(0, (before.length - after.length >> 0)))];
  25286. }
  25287. re = p.newRegexp(op);
  25288. re.Min = min;
  25289. re.Max = max;
  25290. re.Flags = flags;
  25291. re.Sub = $subslice(new sliceType$4(re.Sub0), 0, 1);
  25292. (x$2 = re.Sub, (0 >= x$2.$length ? $throwRuntimeError("index out of range") : x$2.$array[x$2.$offset + 0] = sub));
  25293. (x$3 = p.stack, x$4 = n - 1 >> 0, ((x$4 < 0 || x$4 >= x$3.$length) ? $throwRuntimeError("index out of range") : x$3.$array[x$3.$offset + x$4] = re));
  25294. if ((op === 17) && (min >= 2 || max >= 2) && !repeatIsValid(re, 1000)) {
  25295. return ["", new Error.ptr("invalid repeat count", before.substring(0, (before.length - after.length >> 0)))];
  25296. }
  25297. return [after, $ifaceNil];
  25298. };
  25299. parser.prototype.repeat = function(op, min, max, before, after, lastRepeat) { return this.$val.repeat(op, min, max, before, after, lastRepeat); };
  25300. repeatIsValid = function(re, n) {
  25301. var $ptr, _i, _q, _ref, m, n, re, sub;
  25302. if (re.Op === 17) {
  25303. m = re.Max;
  25304. if (m === 0) {
  25305. return true;
  25306. }
  25307. if (m < 0) {
  25308. m = re.Min;
  25309. }
  25310. if (m > n) {
  25311. return false;
  25312. }
  25313. if (m > 0) {
  25314. n = (_q = n / (m), (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero"));
  25315. }
  25316. }
  25317. _ref = re.Sub;
  25318. _i = 0;
  25319. while (true) {
  25320. if (!(_i < _ref.$length)) { break; }
  25321. sub = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]);
  25322. if (!repeatIsValid(sub, n)) {
  25323. return false;
  25324. }
  25325. _i++;
  25326. }
  25327. return true;
  25328. };
  25329. parser.ptr.prototype.concat = function() {
  25330. var $ptr, _r, _r$1, i, p, subs, x, x$1, $s, $r;
  25331. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; i = $f.i; p = $f.p; subs = $f.subs; x = $f.x; x$1 = $f.x$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  25332. p = this;
  25333. p.maybeConcat(-1, 0);
  25334. i = p.stack.$length;
  25335. while (true) {
  25336. if (!(i > 0 && (x = p.stack, x$1 = i - 1 >> 0, ((x$1 < 0 || x$1 >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + x$1])).Op < 128)) { break; }
  25337. i = i - (1) >> 0;
  25338. }
  25339. subs = $subslice(p.stack, i);
  25340. p.stack = $subslice(p.stack, 0, i);
  25341. if (subs.$length === 0) {
  25342. return p.push(p.newRegexp(2));
  25343. }
  25344. _r = p.collapse(subs, 18); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  25345. _r$1 = p.push(_r); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  25346. return _r$1;
  25347. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: parser.ptr.prototype.concat }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f.i = i; $f.p = p; $f.subs = subs; $f.x = x; $f.x$1 = x$1; $f.$s = $s; $f.$r = $r; return $f;
  25348. };
  25349. parser.prototype.concat = function() { return this.$val.concat(); };
  25350. parser.ptr.prototype.alternate = function() {
  25351. var $ptr, _r, _r$1, i, p, subs, x, x$1, x$2, $s, $r;
  25352. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; i = $f.i; p = $f.p; subs = $f.subs; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  25353. p = this;
  25354. i = p.stack.$length;
  25355. while (true) {
  25356. if (!(i > 0 && (x = p.stack, x$1 = i - 1 >> 0, ((x$1 < 0 || x$1 >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + x$1])).Op < 128)) { break; }
  25357. i = i - (1) >> 0;
  25358. }
  25359. subs = $subslice(p.stack, i);
  25360. p.stack = $subslice(p.stack, 0, i);
  25361. /* */ if (subs.$length > 0) { $s = 1; continue; }
  25362. /* */ $s = 2; continue;
  25363. /* if (subs.$length > 0) { */ case 1:
  25364. $r = cleanAlt((x$2 = subs.$length - 1 >> 0, ((x$2 < 0 || x$2 >= subs.$length) ? $throwRuntimeError("index out of range") : subs.$array[subs.$offset + x$2]))); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  25365. /* } */ case 2:
  25366. if (subs.$length === 0) {
  25367. return p.push(p.newRegexp(1));
  25368. }
  25369. _r = p.collapse(subs, 19); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  25370. _r$1 = p.push(_r); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  25371. return _r$1;
  25372. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: parser.ptr.prototype.alternate }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f.i = i; $f.p = p; $f.subs = subs; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.$s = $s; $f.$r = $r; return $f;
  25373. };
  25374. parser.prototype.alternate = function() { return this.$val.alternate(); };
  25375. cleanAlt = function(re) {
  25376. var $ptr, _r, _ref, re, x, x$1, x$2, x$3, x$4, x$5, $s, $r;
  25377. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _ref = $f._ref; re = $f.re; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; x$3 = $f.x$3; x$4 = $f.x$4; x$5 = $f.x$5; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  25378. _ref = re.Op;
  25379. /* */ if (_ref === 4) { $s = 1; continue; }
  25380. /* */ $s = 2; continue;
  25381. /* if (_ref === 4) { */ case 1:
  25382. _r = cleanClass((re.$ptr_Rune || (re.$ptr_Rune = new ptrType$1(function() { return this.$target.Rune; }, function($v) { this.$target.Rune = $v; }, re)))); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  25383. re.Rune = _r;
  25384. if ((re.Rune.$length === 2) && ((x = re.Rune, (0 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 0])) === 0) && ((x$1 = re.Rune, (1 >= x$1.$length ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + 1])) === 1114111)) {
  25385. re.Rune = sliceType.nil;
  25386. re.Op = 6;
  25387. return;
  25388. }
  25389. if ((re.Rune.$length === 4) && ((x$2 = re.Rune, (0 >= x$2.$length ? $throwRuntimeError("index out of range") : x$2.$array[x$2.$offset + 0])) === 0) && ((x$3 = re.Rune, (1 >= x$3.$length ? $throwRuntimeError("index out of range") : x$3.$array[x$3.$offset + 1])) === 9) && ((x$4 = re.Rune, (2 >= x$4.$length ? $throwRuntimeError("index out of range") : x$4.$array[x$4.$offset + 2])) === 11) && ((x$5 = re.Rune, (3 >= x$5.$length ? $throwRuntimeError("index out of range") : x$5.$array[x$5.$offset + 3])) === 1114111)) {
  25390. re.Rune = sliceType.nil;
  25391. re.Op = 5;
  25392. return;
  25393. }
  25394. if ((re.Rune.$capacity - re.Rune.$length >> 0) > 100) {
  25395. re.Rune = $appendSlice($subslice(new sliceType(re.Rune0), 0, 0), re.Rune);
  25396. }
  25397. /* } */ case 2:
  25398. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: cleanAlt }; } $f.$ptr = $ptr; $f._r = _r; $f._ref = _ref; $f.re = re; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.x$3 = x$3; $f.x$4 = x$4; $f.x$5 = x$5; $f.$s = $s; $f.$r = $r; return $f;
  25399. };
  25400. parser.ptr.prototype.collapse = function(subs, op) {
  25401. var $ptr, _i, _r, _ref, old, op, p, re, sub, subs, x, $s, $r;
  25402. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _i = $f._i; _r = $f._r; _ref = $f._ref; old = $f.old; op = $f.op; p = $f.p; re = $f.re; sub = $f.sub; subs = $f.subs; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  25403. p = this;
  25404. if (subs.$length === 1) {
  25405. return (0 >= subs.$length ? $throwRuntimeError("index out of range") : subs.$array[subs.$offset + 0]);
  25406. }
  25407. re = p.newRegexp(op);
  25408. re.Sub = $subslice(new sliceType$4(re.Sub0), 0, 0);
  25409. _ref = subs;
  25410. _i = 0;
  25411. while (true) {
  25412. if (!(_i < _ref.$length)) { break; }
  25413. sub = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]);
  25414. if (sub.Op === op) {
  25415. re.Sub = $appendSlice(re.Sub, sub.Sub);
  25416. p.reuse(sub);
  25417. } else {
  25418. re.Sub = $append(re.Sub, sub);
  25419. }
  25420. _i++;
  25421. }
  25422. /* */ if (op === 19) { $s = 1; continue; }
  25423. /* */ $s = 2; continue;
  25424. /* if (op === 19) { */ case 1:
  25425. _r = p.factor(re.Sub, re.Flags); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  25426. re.Sub = _r;
  25427. if (re.Sub.$length === 1) {
  25428. old = re;
  25429. re = (x = re.Sub, (0 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 0]));
  25430. p.reuse(old);
  25431. }
  25432. /* } */ case 2:
  25433. return re;
  25434. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: parser.ptr.prototype.collapse }; } $f.$ptr = $ptr; $f._i = _i; $f._r = _r; $f._ref = _ref; $f.old = old; $f.op = op; $f.p = p; $f.re = re; $f.sub = sub; $f.subs = subs; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
  25435. };
  25436. parser.prototype.collapse = function(subs, op) { return this.$val.collapse(subs, op); };
  25437. parser.ptr.prototype.factor = function(sub, flags) {
  25438. var $ptr, _i, _r, _r$1, _ref, _tmp, _tmp$1, _tuple, first, flags, i, i$1, i$2, i$3, ifirst, iflags, istr, j, j$1, j$2, j$3, max, out, p, prefix, prefix$1, re, re$1, reuse, same, start, str, strflags, sub, suffix, suffix$1, x, $s, $r;
  25439. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _i = $f._i; _r = $f._r; _r$1 = $f._r$1; _ref = $f._ref; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; first = $f.first; flags = $f.flags; i = $f.i; i$1 = $f.i$1; i$2 = $f.i$2; i$3 = $f.i$3; ifirst = $f.ifirst; iflags = $f.iflags; istr = $f.istr; j = $f.j; j$1 = $f.j$1; j$2 = $f.j$2; j$3 = $f.j$3; max = $f.max; out = $f.out; p = $f.p; prefix = $f.prefix; prefix$1 = $f.prefix$1; re = $f.re; re$1 = $f.re$1; reuse = $f.reuse; same = $f.same; start = $f.start; str = $f.str; strflags = $f.strflags; sub = $f.sub; suffix = $f.suffix; suffix$1 = $f.suffix$1; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  25440. p = this;
  25441. if (sub.$length < 2) {
  25442. return sub;
  25443. }
  25444. str = sliceType.nil;
  25445. strflags = 0;
  25446. start = 0;
  25447. out = $subslice(sub, 0, 0);
  25448. i = 0;
  25449. /* while (true) { */ case 1:
  25450. /* if (!(i <= sub.$length)) { break; } */ if(!(i <= sub.$length)) { $s = 2; continue; }
  25451. istr = sliceType.nil;
  25452. iflags = 0;
  25453. /* */ if (i < sub.$length) { $s = 3; continue; }
  25454. /* */ $s = 4; continue;
  25455. /* if (i < sub.$length) { */ case 3:
  25456. _tuple = p.leadingString(((i < 0 || i >= sub.$length) ? $throwRuntimeError("index out of range") : sub.$array[sub.$offset + i])); istr = _tuple[0]; iflags = _tuple[1];
  25457. if (iflags === strflags) {
  25458. same = 0;
  25459. while (true) {
  25460. if (!(same < str.$length && same < istr.$length && (((same < 0 || same >= str.$length) ? $throwRuntimeError("index out of range") : str.$array[str.$offset + same]) === ((same < 0 || same >= istr.$length) ? $throwRuntimeError("index out of range") : istr.$array[istr.$offset + same])))) { break; }
  25461. same = same + (1) >> 0;
  25462. }
  25463. if (same > 0) {
  25464. str = $subslice(str, 0, same);
  25465. i = i + (1) >> 0;
  25466. /* continue; */ $s = 1; continue;
  25467. }
  25468. }
  25469. /* } */ case 4:
  25470. /* */ if (i === start) { $s = 5; continue; }
  25471. /* */ if (i === (start + 1 >> 0)) { $s = 6; continue; }
  25472. /* */ $s = 7; continue;
  25473. /* if (i === start) { */ case 5:
  25474. $s = 8; continue;
  25475. /* } else if (i === (start + 1 >> 0)) { */ case 6:
  25476. out = $append(out, ((start < 0 || start >= sub.$length) ? $throwRuntimeError("index out of range") : sub.$array[sub.$offset + start]));
  25477. $s = 8; continue;
  25478. /* } else { */ case 7:
  25479. prefix = p.newRegexp(3);
  25480. prefix.Flags = strflags;
  25481. prefix.Rune = $appendSlice($subslice(prefix.Rune, 0, 0), str);
  25482. j = start;
  25483. while (true) {
  25484. if (!(j < i)) { break; }
  25485. ((j < 0 || j >= sub.$length) ? $throwRuntimeError("index out of range") : sub.$array[sub.$offset + j] = p.removeLeadingString(((j < 0 || j >= sub.$length) ? $throwRuntimeError("index out of range") : sub.$array[sub.$offset + j]), str.$length));
  25486. j = j + (1) >> 0;
  25487. }
  25488. _r = p.collapse($subslice(sub, start, i), 19); /* */ $s = 9; case 9: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  25489. suffix = _r;
  25490. re = p.newRegexp(18);
  25491. re.Sub = $append($subslice(re.Sub, 0, 0), prefix, suffix);
  25492. out = $append(out, re);
  25493. /* } */ case 8:
  25494. start = i;
  25495. str = istr;
  25496. strflags = iflags;
  25497. i = i + (1) >> 0;
  25498. /* } */ $s = 1; continue; case 2:
  25499. sub = out;
  25500. start = 0;
  25501. out = $subslice(sub, 0, 0);
  25502. first = ptrType.nil;
  25503. i$1 = 0;
  25504. /* while (true) { */ case 10:
  25505. /* if (!(i$1 <= sub.$length)) { break; } */ if(!(i$1 <= sub.$length)) { $s = 11; continue; }
  25506. ifirst = ptrType.nil;
  25507. /* */ if (i$1 < sub.$length) { $s = 12; continue; }
  25508. /* */ $s = 13; continue;
  25509. /* if (i$1 < sub.$length) { */ case 12:
  25510. ifirst = p.leadingRegexp(((i$1 < 0 || i$1 >= sub.$length) ? $throwRuntimeError("index out of range") : sub.$array[sub.$offset + i$1]));
  25511. if (!(first === ptrType.nil) && first.Equal(ifirst)) {
  25512. i$1 = i$1 + (1) >> 0;
  25513. /* continue; */ $s = 10; continue;
  25514. }
  25515. /* } */ case 13:
  25516. /* */ if (i$1 === start) { $s = 14; continue; }
  25517. /* */ if (i$1 === (start + 1 >> 0)) { $s = 15; continue; }
  25518. /* */ $s = 16; continue;
  25519. /* if (i$1 === start) { */ case 14:
  25520. $s = 17; continue;
  25521. /* } else if (i$1 === (start + 1 >> 0)) { */ case 15:
  25522. out = $append(out, ((start < 0 || start >= sub.$length) ? $throwRuntimeError("index out of range") : sub.$array[sub.$offset + start]));
  25523. $s = 17; continue;
  25524. /* } else { */ case 16:
  25525. prefix$1 = first;
  25526. j$1 = start;
  25527. while (true) {
  25528. if (!(j$1 < i$1)) { break; }
  25529. reuse = !((j$1 === start));
  25530. ((j$1 < 0 || j$1 >= sub.$length) ? $throwRuntimeError("index out of range") : sub.$array[sub.$offset + j$1] = p.removeLeadingRegexp(((j$1 < 0 || j$1 >= sub.$length) ? $throwRuntimeError("index out of range") : sub.$array[sub.$offset + j$1]), reuse));
  25531. j$1 = j$1 + (1) >> 0;
  25532. }
  25533. _r$1 = p.collapse($subslice(sub, start, i$1), 19); /* */ $s = 18; case 18: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  25534. suffix$1 = _r$1;
  25535. re$1 = p.newRegexp(18);
  25536. re$1.Sub = $append($subslice(re$1.Sub, 0, 0), prefix$1, suffix$1);
  25537. out = $append(out, re$1);
  25538. /* } */ case 17:
  25539. start = i$1;
  25540. first = ifirst;
  25541. i$1 = i$1 + (1) >> 0;
  25542. /* } */ $s = 10; continue; case 11:
  25543. sub = out;
  25544. start = 0;
  25545. out = $subslice(sub, 0, 0);
  25546. i$2 = 0;
  25547. /* while (true) { */ case 19:
  25548. /* if (!(i$2 <= sub.$length)) { break; } */ if(!(i$2 <= sub.$length)) { $s = 20; continue; }
  25549. /* */ if (i$2 < sub.$length && isCharClass(((i$2 < 0 || i$2 >= sub.$length) ? $throwRuntimeError("index out of range") : sub.$array[sub.$offset + i$2]))) { $s = 21; continue; }
  25550. /* */ $s = 22; continue;
  25551. /* if (i$2 < sub.$length && isCharClass(((i$2 < 0 || i$2 >= sub.$length) ? $throwRuntimeError("index out of range") : sub.$array[sub.$offset + i$2]))) { */ case 21:
  25552. i$2 = i$2 + (1) >> 0;
  25553. /* continue; */ $s = 19; continue;
  25554. /* } */ case 22:
  25555. /* */ if (i$2 === start) { $s = 23; continue; }
  25556. /* */ if (i$2 === (start + 1 >> 0)) { $s = 24; continue; }
  25557. /* */ $s = 25; continue;
  25558. /* if (i$2 === start) { */ case 23:
  25559. $s = 26; continue;
  25560. /* } else if (i$2 === (start + 1 >> 0)) { */ case 24:
  25561. out = $append(out, ((start < 0 || start >= sub.$length) ? $throwRuntimeError("index out of range") : sub.$array[sub.$offset + start]));
  25562. $s = 26; continue;
  25563. /* } else { */ case 25:
  25564. max = start;
  25565. j$2 = start + 1 >> 0;
  25566. while (true) {
  25567. if (!(j$2 < i$2)) { break; }
  25568. if (((max < 0 || max >= sub.$length) ? $throwRuntimeError("index out of range") : sub.$array[sub.$offset + max]).Op < ((j$2 < 0 || j$2 >= sub.$length) ? $throwRuntimeError("index out of range") : sub.$array[sub.$offset + j$2]).Op || (((max < 0 || max >= sub.$length) ? $throwRuntimeError("index out of range") : sub.$array[sub.$offset + max]).Op === ((j$2 < 0 || j$2 >= sub.$length) ? $throwRuntimeError("index out of range") : sub.$array[sub.$offset + j$2]).Op) && ((max < 0 || max >= sub.$length) ? $throwRuntimeError("index out of range") : sub.$array[sub.$offset + max]).Rune.$length < ((j$2 < 0 || j$2 >= sub.$length) ? $throwRuntimeError("index out of range") : sub.$array[sub.$offset + j$2]).Rune.$length) {
  25569. max = j$2;
  25570. }
  25571. j$2 = j$2 + (1) >> 0;
  25572. }
  25573. _tmp = ((max < 0 || max >= sub.$length) ? $throwRuntimeError("index out of range") : sub.$array[sub.$offset + max]); _tmp$1 = ((start < 0 || start >= sub.$length) ? $throwRuntimeError("index out of range") : sub.$array[sub.$offset + start]); ((start < 0 || start >= sub.$length) ? $throwRuntimeError("index out of range") : sub.$array[sub.$offset + start] = _tmp); ((max < 0 || max >= sub.$length) ? $throwRuntimeError("index out of range") : sub.$array[sub.$offset + max] = _tmp$1);
  25574. j$3 = start + 1 >> 0;
  25575. while (true) {
  25576. if (!(j$3 < i$2)) { break; }
  25577. mergeCharClass(((start < 0 || start >= sub.$length) ? $throwRuntimeError("index out of range") : sub.$array[sub.$offset + start]), ((j$3 < 0 || j$3 >= sub.$length) ? $throwRuntimeError("index out of range") : sub.$array[sub.$offset + j$3]));
  25578. p.reuse(((j$3 < 0 || j$3 >= sub.$length) ? $throwRuntimeError("index out of range") : sub.$array[sub.$offset + j$3]));
  25579. j$3 = j$3 + (1) >> 0;
  25580. }
  25581. $r = cleanAlt(((start < 0 || start >= sub.$length) ? $throwRuntimeError("index out of range") : sub.$array[sub.$offset + start])); /* */ $s = 27; case 27: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  25582. out = $append(out, ((start < 0 || start >= sub.$length) ? $throwRuntimeError("index out of range") : sub.$array[sub.$offset + start]));
  25583. /* } */ case 26:
  25584. if (i$2 < sub.$length) {
  25585. out = $append(out, ((i$2 < 0 || i$2 >= sub.$length) ? $throwRuntimeError("index out of range") : sub.$array[sub.$offset + i$2]));
  25586. }
  25587. start = i$2 + 1 >> 0;
  25588. i$2 = i$2 + (1) >> 0;
  25589. /* } */ $s = 19; continue; case 20:
  25590. sub = out;
  25591. start = 0;
  25592. out = $subslice(sub, 0, 0);
  25593. _ref = sub;
  25594. _i = 0;
  25595. while (true) {
  25596. if (!(_i < _ref.$length)) { break; }
  25597. i$3 = _i;
  25598. if ((i$3 + 1 >> 0) < sub.$length && (((i$3 < 0 || i$3 >= sub.$length) ? $throwRuntimeError("index out of range") : sub.$array[sub.$offset + i$3]).Op === 2) && ((x = i$3 + 1 >> 0, ((x < 0 || x >= sub.$length) ? $throwRuntimeError("index out of range") : sub.$array[sub.$offset + x])).Op === 2)) {
  25599. _i++;
  25600. continue;
  25601. }
  25602. out = $append(out, ((i$3 < 0 || i$3 >= sub.$length) ? $throwRuntimeError("index out of range") : sub.$array[sub.$offset + i$3]));
  25603. _i++;
  25604. }
  25605. sub = out;
  25606. return sub;
  25607. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: parser.ptr.prototype.factor }; } $f.$ptr = $ptr; $f._i = _i; $f._r = _r; $f._r$1 = _r$1; $f._ref = _ref; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f.first = first; $f.flags = flags; $f.i = i; $f.i$1 = i$1; $f.i$2 = i$2; $f.i$3 = i$3; $f.ifirst = ifirst; $f.iflags = iflags; $f.istr = istr; $f.j = j; $f.j$1 = j$1; $f.j$2 = j$2; $f.j$3 = j$3; $f.max = max; $f.out = out; $f.p = p; $f.prefix = prefix; $f.prefix$1 = prefix$1; $f.re = re; $f.re$1 = re$1; $f.reuse = reuse; $f.same = same; $f.start = start; $f.str = str; $f.strflags = strflags; $f.sub = sub; $f.suffix = suffix; $f.suffix$1 = suffix$1; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
  25608. };
  25609. parser.prototype.factor = function(sub, flags) { return this.$val.factor(sub, flags); };
  25610. parser.ptr.prototype.leadingString = function(re) {
  25611. var $ptr, p, re, x;
  25612. p = this;
  25613. if ((re.Op === 18) && re.Sub.$length > 0) {
  25614. re = (x = re.Sub, (0 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 0]));
  25615. }
  25616. if (!((re.Op === 3))) {
  25617. return [sliceType.nil, 0];
  25618. }
  25619. return [re.Rune, (re.Flags & 1) >>> 0];
  25620. };
  25621. parser.prototype.leadingString = function(re) { return this.$val.leadingString(re); };
  25622. parser.ptr.prototype.removeLeadingString = function(re, n) {
  25623. var $ptr, _ref, n, old, p, re, sub, x, x$1, x$2;
  25624. p = this;
  25625. if ((re.Op === 18) && re.Sub.$length > 0) {
  25626. sub = (x = re.Sub, (0 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 0]));
  25627. sub = p.removeLeadingString(sub, n);
  25628. (x$1 = re.Sub, (0 >= x$1.$length ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + 0] = sub));
  25629. if (sub.Op === 2) {
  25630. p.reuse(sub);
  25631. _ref = re.Sub.$length;
  25632. if (_ref === 0 || _ref === 1) {
  25633. re.Op = 2;
  25634. re.Sub = sliceType$4.nil;
  25635. } else if (_ref === 2) {
  25636. old = re;
  25637. re = (x$2 = re.Sub, (1 >= x$2.$length ? $throwRuntimeError("index out of range") : x$2.$array[x$2.$offset + 1]));
  25638. p.reuse(old);
  25639. } else {
  25640. $copySlice(re.Sub, $subslice(re.Sub, 1));
  25641. re.Sub = $subslice(re.Sub, 0, (re.Sub.$length - 1 >> 0));
  25642. }
  25643. }
  25644. return re;
  25645. }
  25646. if (re.Op === 3) {
  25647. re.Rune = $subslice(re.Rune, 0, $copySlice(re.Rune, $subslice(re.Rune, n)));
  25648. if (re.Rune.$length === 0) {
  25649. re.Op = 2;
  25650. }
  25651. }
  25652. return re;
  25653. };
  25654. parser.prototype.removeLeadingString = function(re, n) { return this.$val.removeLeadingString(re, n); };
  25655. parser.ptr.prototype.leadingRegexp = function(re) {
  25656. var $ptr, p, re, sub, x;
  25657. p = this;
  25658. if (re.Op === 2) {
  25659. return ptrType.nil;
  25660. }
  25661. if ((re.Op === 18) && re.Sub.$length > 0) {
  25662. sub = (x = re.Sub, (0 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 0]));
  25663. if (sub.Op === 2) {
  25664. return ptrType.nil;
  25665. }
  25666. return sub;
  25667. }
  25668. return re;
  25669. };
  25670. parser.prototype.leadingRegexp = function(re) { return this.$val.leadingRegexp(re); };
  25671. parser.ptr.prototype.removeLeadingRegexp = function(re, reuse) {
  25672. var $ptr, _ref, old, p, re, reuse, x, x$1;
  25673. p = this;
  25674. if ((re.Op === 18) && re.Sub.$length > 0) {
  25675. if (reuse) {
  25676. p.reuse((x = re.Sub, (0 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 0])));
  25677. }
  25678. re.Sub = $subslice(re.Sub, 0, $copySlice(re.Sub, $subslice(re.Sub, 1)));
  25679. _ref = re.Sub.$length;
  25680. if (_ref === 0) {
  25681. re.Op = 2;
  25682. re.Sub = sliceType$4.nil;
  25683. } else if (_ref === 1) {
  25684. old = re;
  25685. re = (x$1 = re.Sub, (0 >= x$1.$length ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + 0]));
  25686. p.reuse(old);
  25687. }
  25688. return re;
  25689. }
  25690. if (reuse) {
  25691. p.reuse(re);
  25692. }
  25693. return p.newRegexp(2);
  25694. };
  25695. parser.prototype.removeLeadingRegexp = function(re, reuse) { return this.$val.removeLeadingRegexp(re, reuse); };
  25696. literalRegexp = function(s, flags) {
  25697. var $ptr, _i, _ref, _rune, c, flags, re, s;
  25698. re = new Regexp.ptr(3, 0, sliceType$4.nil, arrayType.zero(), sliceType.nil, arrayType$1.zero(), 0, 0, 0, "");
  25699. re.Flags = flags;
  25700. re.Rune = $subslice(new sliceType(re.Rune0), 0, 0);
  25701. _ref = s;
  25702. _i = 0;
  25703. while (true) {
  25704. if (!(_i < _ref.length)) { break; }
  25705. _rune = $decodeRune(_ref, _i);
  25706. c = _rune[0];
  25707. if (re.Rune.$length >= re.Rune.$capacity) {
  25708. re.Rune = new sliceType($stringToRunes(s));
  25709. break;
  25710. }
  25711. re.Rune = $append(re.Rune, c);
  25712. _i += _rune[1];
  25713. }
  25714. return re;
  25715. };
  25716. Parse = function(s, flags) {
  25717. var $ptr, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _ref, _ref$1, _ref$2, _struct, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, _tuple$6, _tuple$7, _tuple$8, after, after$1, before, before$1, c, err, err$1, err$2, flags, i, lastRepeat, lit, max, min, n, ok, op, p, r, r$1, re, repeat, rest, rest$1, s, t, x, $s, $r;
  25718. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _ref = $f._ref; _ref$1 = $f._ref$1; _ref$2 = $f._ref$2; _struct = $f._struct; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; _tuple$4 = $f._tuple$4; _tuple$5 = $f._tuple$5; _tuple$6 = $f._tuple$6; _tuple$7 = $f._tuple$7; _tuple$8 = $f._tuple$8; after = $f.after; after$1 = $f.after$1; before = $f.before; before$1 = $f.before$1; c = $f.c; err = $f.err; err$1 = $f.err$1; err$2 = $f.err$2; flags = $f.flags; i = $f.i; lastRepeat = $f.lastRepeat; lit = $f.lit; max = $f.max; min = $f.min; n = $f.n; ok = $f.ok; op = $f.op; p = $f.p; r = $f.r; r$1 = $f.r$1; re = $f.re; repeat = $f.repeat; rest = $f.rest; rest$1 = $f.rest$1; s = $f.s; t = $f.t; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  25719. if (!((((flags & 2) >>> 0) === 0))) {
  25720. err = checkUTF8(s);
  25721. if (!($interfaceIsEqual(err, $ifaceNil))) {
  25722. return [ptrType.nil, err];
  25723. }
  25724. return [literalRegexp(s, flags), $ifaceNil];
  25725. }
  25726. p = $clone(new parser.ptr(), parser);
  25727. err$1 = $ifaceNil;
  25728. c = 0;
  25729. op = 0;
  25730. lastRepeat = "";
  25731. p.flags = flags;
  25732. p.wholeRegexp = s;
  25733. t = s;
  25734. /* while (true) { */ case 1:
  25735. /* if (!(!(t === ""))) { break; } */ if(!(!(t === ""))) { $s = 2; continue; }
  25736. repeat = "";
  25737. _ref = t.charCodeAt(0);
  25738. /* */ if (_ref === 40) { $s = 3; continue; }
  25739. /* */ if (_ref === 124) { $s = 4; continue; }
  25740. /* */ if (_ref === 41) { $s = 5; continue; }
  25741. /* */ if (_ref === 94) { $s = 6; continue; }
  25742. /* */ if (_ref === 36) { $s = 7; continue; }
  25743. /* */ if (_ref === 46) { $s = 8; continue; }
  25744. /* */ if (_ref === 91) { $s = 9; continue; }
  25745. /* */ if (_ref === 42 || _ref === 43 || _ref === 63) { $s = 10; continue; }
  25746. /* */ if (_ref === 123) { $s = 11; continue; }
  25747. /* */ if (_ref === 92) { $s = 12; continue; }
  25748. /* */ $s = 13; continue;
  25749. /* switch (0) { default: if (_ref === 40) { */ case 3:
  25750. if (!((((p.flags & 64) >>> 0) === 0)) && t.length >= 2 && (t.charCodeAt(1) === 63)) {
  25751. _tuple = p.parsePerlFlags(t); t = _tuple[0]; err$1 = _tuple[1];
  25752. if (!($interfaceIsEqual(err$1, $ifaceNil))) {
  25753. return [ptrType.nil, err$1];
  25754. }
  25755. /* break; */ $s = 14; continue;
  25756. }
  25757. p.numCap = p.numCap + (1) >> 0;
  25758. p.op(128).Cap = p.numCap;
  25759. t = t.substring(1);
  25760. $s = 14; continue;
  25761. /* } else if (_ref === 124) { */ case 4:
  25762. _r = p.parseVerticalBar(); /* */ $s = 15; case 15: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  25763. err$1 = _r;
  25764. /* */ if (!($interfaceIsEqual(err$1, $ifaceNil))) { $s = 16; continue; }
  25765. /* */ $s = 17; continue;
  25766. /* if (!($interfaceIsEqual(err$1, $ifaceNil))) { */ case 16:
  25767. return [ptrType.nil, err$1];
  25768. /* } */ case 17:
  25769. t = t.substring(1);
  25770. $s = 14; continue;
  25771. /* } else if (_ref === 41) { */ case 5:
  25772. _r$1 = p.parseRightParen(); /* */ $s = 18; case 18: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  25773. err$1 = _r$1;
  25774. /* */ if (!($interfaceIsEqual(err$1, $ifaceNil))) { $s = 19; continue; }
  25775. /* */ $s = 20; continue;
  25776. /* if (!($interfaceIsEqual(err$1, $ifaceNil))) { */ case 19:
  25777. return [ptrType.nil, err$1];
  25778. /* } */ case 20:
  25779. t = t.substring(1);
  25780. $s = 14; continue;
  25781. /* } else if (_ref === 94) { */ case 6:
  25782. if (!((((p.flags & 16) >>> 0) === 0))) {
  25783. p.op(9);
  25784. } else {
  25785. p.op(7);
  25786. }
  25787. t = t.substring(1);
  25788. $s = 14; continue;
  25789. /* } else if (_ref === 36) { */ case 7:
  25790. if (!((((p.flags & 16) >>> 0) === 0))) {
  25791. _struct = p.op(10);
  25792. _struct.Flags = (_struct.Flags | (256)) >>> 0;
  25793. } else {
  25794. p.op(8);
  25795. }
  25796. t = t.substring(1);
  25797. $s = 14; continue;
  25798. /* } else if (_ref === 46) { */ case 8:
  25799. if (!((((p.flags & 8) >>> 0) === 0))) {
  25800. p.op(6);
  25801. } else {
  25802. p.op(5);
  25803. }
  25804. t = t.substring(1);
  25805. $s = 14; continue;
  25806. /* } else if (_ref === 91) { */ case 9:
  25807. _r$2 = p.parseClass(t); /* */ $s = 21; case 21: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  25808. _tuple$1 = _r$2; t = _tuple$1[0]; err$1 = _tuple$1[1];
  25809. /* */ if (!($interfaceIsEqual(err$1, $ifaceNil))) { $s = 22; continue; }
  25810. /* */ $s = 23; continue;
  25811. /* if (!($interfaceIsEqual(err$1, $ifaceNil))) { */ case 22:
  25812. return [ptrType.nil, err$1];
  25813. /* } */ case 23:
  25814. $s = 14; continue;
  25815. /* } else if (_ref === 42 || _ref === 43 || _ref === 63) { */ case 10:
  25816. before = t;
  25817. _ref$1 = t.charCodeAt(0);
  25818. if (_ref$1 === 42) {
  25819. op = 14;
  25820. } else if (_ref$1 === 43) {
  25821. op = 15;
  25822. } else if (_ref$1 === 63) {
  25823. op = 16;
  25824. }
  25825. after = t.substring(1);
  25826. _tuple$2 = p.repeat(op, 0, 0, before, after, lastRepeat); after = _tuple$2[0]; err$1 = _tuple$2[1];
  25827. if (!($interfaceIsEqual(err$1, $ifaceNil))) {
  25828. return [ptrType.nil, err$1];
  25829. }
  25830. repeat = before;
  25831. t = after;
  25832. $s = 14; continue;
  25833. /* } else if (_ref === 123) { */ case 11:
  25834. op = 17;
  25835. before$1 = t;
  25836. _tuple$3 = p.parseRepeat(t); min = _tuple$3[0]; max = _tuple$3[1]; after$1 = _tuple$3[2]; ok = _tuple$3[3];
  25837. if (!ok) {
  25838. p.literal(123);
  25839. t = t.substring(1);
  25840. /* break; */ $s = 14; continue;
  25841. }
  25842. if (min < 0 || min > 1000 || max > 1000 || max >= 0 && min > max) {
  25843. return [ptrType.nil, new Error.ptr("invalid repeat count", before$1.substring(0, (before$1.length - after$1.length >> 0)))];
  25844. }
  25845. _tuple$4 = p.repeat(op, min, max, before$1, after$1, lastRepeat); after$1 = _tuple$4[0]; err$1 = _tuple$4[1];
  25846. if (!($interfaceIsEqual(err$1, $ifaceNil))) {
  25847. return [ptrType.nil, err$1];
  25848. }
  25849. repeat = before$1;
  25850. t = after$1;
  25851. $s = 14; continue;
  25852. /* } else if (_ref === 92) { */ case 12:
  25853. if (!((((p.flags & 64) >>> 0) === 0)) && t.length >= 2) {
  25854. _ref$2 = t.charCodeAt(1);
  25855. if (_ref$2 === 65) {
  25856. p.op(9);
  25857. t = t.substring(2);
  25858. /* break BigSwitch; */ $s = 14; continue s;
  25859. } else if (_ref$2 === 98) {
  25860. p.op(11);
  25861. t = t.substring(2);
  25862. /* break BigSwitch; */ $s = 14; continue s;
  25863. } else if (_ref$2 === 66) {
  25864. p.op(12);
  25865. t = t.substring(2);
  25866. /* break BigSwitch; */ $s = 14; continue s;
  25867. } else if (_ref$2 === 67) {
  25868. return [ptrType.nil, new Error.ptr("invalid escape sequence", t.substring(0, 2))];
  25869. } else if (_ref$2 === 81) {
  25870. lit = "";
  25871. i = strings.Index(t, "\\E");
  25872. if (i < 0) {
  25873. lit = t.substring(2);
  25874. t = "";
  25875. } else {
  25876. lit = t.substring(2, i);
  25877. t = t.substring((i + 2 >> 0));
  25878. }
  25879. p.push(literalRegexp(lit, p.flags));
  25880. /* break BigSwitch; */ $s = 14; continue s;
  25881. } else if (_ref$2 === 122) {
  25882. p.op(10);
  25883. t = t.substring(2);
  25884. /* break BigSwitch; */ $s = 14; continue s;
  25885. }
  25886. }
  25887. re = p.newRegexp(4);
  25888. re.Flags = p.flags;
  25889. /* */ if (t.length >= 2 && ((t.charCodeAt(1) === 112) || (t.charCodeAt(1) === 80))) { $s = 24; continue; }
  25890. /* */ $s = 25; continue;
  25891. /* if (t.length >= 2 && ((t.charCodeAt(1) === 112) || (t.charCodeAt(1) === 80))) { */ case 24:
  25892. _r$3 = p.parseUnicodeClass(t, $subslice(new sliceType(re.Rune0), 0, 0)); /* */ $s = 26; case 26: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  25893. _tuple$5 = _r$3; r = _tuple$5[0]; rest = _tuple$5[1]; err$2 = _tuple$5[2];
  25894. if (!($interfaceIsEqual(err$2, $ifaceNil))) {
  25895. return [ptrType.nil, err$2];
  25896. }
  25897. if (!(r === sliceType.nil)) {
  25898. re.Rune = r;
  25899. t = rest;
  25900. p.push(re);
  25901. /* break BigSwitch; */ $s = 14; continue s;
  25902. }
  25903. /* } */ case 25:
  25904. _r$4 = p.parsePerlClassEscape(t, $subslice(new sliceType(re.Rune0), 0, 0)); /* */ $s = 27; case 27: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
  25905. _tuple$6 = _r$4; r$1 = _tuple$6[0]; rest$1 = _tuple$6[1];
  25906. /* */ if (!(r$1 === sliceType.nil)) { $s = 28; continue; }
  25907. /* */ $s = 29; continue;
  25908. /* if (!(r$1 === sliceType.nil)) { */ case 28:
  25909. re.Rune = r$1;
  25910. t = rest$1;
  25911. p.push(re);
  25912. /* break BigSwitch; */ $s = 14; continue s;
  25913. /* } */ case 29:
  25914. p.reuse(re);
  25915. _tuple$7 = p.parseEscape(t); c = _tuple$7[0]; t = _tuple$7[1]; err$1 = _tuple$7[2];
  25916. if (!($interfaceIsEqual(err$1, $ifaceNil))) {
  25917. return [ptrType.nil, err$1];
  25918. }
  25919. p.literal(c);
  25920. $s = 14; continue;
  25921. /* } else { */ case 13:
  25922. _tuple$8 = nextRune(t); c = _tuple$8[0]; t = _tuple$8[1]; err$1 = _tuple$8[2];
  25923. if (!($interfaceIsEqual(err$1, $ifaceNil))) {
  25924. return [ptrType.nil, err$1];
  25925. }
  25926. p.literal(c);
  25927. /* } } */ case 14:
  25928. lastRepeat = repeat;
  25929. /* } */ $s = 1; continue; case 2:
  25930. _r$5 = p.concat(); /* */ $s = 30; case 30: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
  25931. _r$5;
  25932. _r$6 = p.swapVerticalBar(); /* */ $s = 33; case 33: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
  25933. /* */ if (_r$6) { $s = 31; continue; }
  25934. /* */ $s = 32; continue;
  25935. /* if (_r$6) { */ case 31:
  25936. p.stack = $subslice(p.stack, 0, (p.stack.$length - 1 >> 0));
  25937. /* } */ case 32:
  25938. _r$7 = p.alternate(); /* */ $s = 34; case 34: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
  25939. _r$7;
  25940. n = p.stack.$length;
  25941. if (!((n === 1))) {
  25942. return [ptrType.nil, new Error.ptr("missing closing )", s)];
  25943. }
  25944. return [(x = p.stack, (0 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 0])), $ifaceNil];
  25945. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Parse }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._ref = _ref; $f._ref$1 = _ref$1; $f._ref$2 = _ref$2; $f._struct = _struct; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f._tuple$4 = _tuple$4; $f._tuple$5 = _tuple$5; $f._tuple$6 = _tuple$6; $f._tuple$7 = _tuple$7; $f._tuple$8 = _tuple$8; $f.after = after; $f.after$1 = after$1; $f.before = before; $f.before$1 = before$1; $f.c = c; $f.err = err; $f.err$1 = err$1; $f.err$2 = err$2; $f.flags = flags; $f.i = i; $f.lastRepeat = lastRepeat; $f.lit = lit; $f.max = max; $f.min = min; $f.n = n; $f.ok = ok; $f.op = op; $f.p = p; $f.r = r; $f.r$1 = r$1; $f.re = re; $f.repeat = repeat; $f.rest = rest; $f.rest$1 = rest$1; $f.s = s; $f.t = t; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
  25946. };
  25947. $pkg.Parse = Parse;
  25948. parser.ptr.prototype.parseRepeat = function(s) {
  25949. var $ptr, _tuple, _tuple$1, max, min, ok, ok1, p, rest, s;
  25950. min = 0;
  25951. max = 0;
  25952. rest = "";
  25953. ok = false;
  25954. p = this;
  25955. if (s === "" || !((s.charCodeAt(0) === 123))) {
  25956. return [min, max, rest, ok];
  25957. }
  25958. s = s.substring(1);
  25959. ok1 = false;
  25960. _tuple = p.parseInt(s); min = _tuple[0]; s = _tuple[1]; ok1 = _tuple[2];
  25961. if (!ok1) {
  25962. return [min, max, rest, ok];
  25963. }
  25964. if (s === "") {
  25965. return [min, max, rest, ok];
  25966. }
  25967. if (!((s.charCodeAt(0) === 44))) {
  25968. max = min;
  25969. } else {
  25970. s = s.substring(1);
  25971. if (s === "") {
  25972. return [min, max, rest, ok];
  25973. }
  25974. if (s.charCodeAt(0) === 125) {
  25975. max = -1;
  25976. } else {
  25977. _tuple$1 = p.parseInt(s); max = _tuple$1[0]; s = _tuple$1[1]; ok1 = _tuple$1[2];
  25978. if (!ok1) {
  25979. return [min, max, rest, ok];
  25980. } else if (max < 0) {
  25981. min = -1;
  25982. }
  25983. }
  25984. }
  25985. if (s === "" || !((s.charCodeAt(0) === 125))) {
  25986. return [min, max, rest, ok];
  25987. }
  25988. rest = s.substring(1);
  25989. ok = true;
  25990. return [min, max, rest, ok];
  25991. };
  25992. parser.prototype.parseRepeat = function(s) { return this.$val.parseRepeat(s); };
  25993. parser.ptr.prototype.parsePerlFlags = function(s) {
  25994. var $ptr, _ref, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, c, capture, end, err, flags, name, p, re, rest, s, sawFlag, sign, t;
  25995. rest = "";
  25996. err = $ifaceNil;
  25997. p = this;
  25998. t = s;
  25999. if (t.length > 4 && (t.charCodeAt(2) === 80) && (t.charCodeAt(3) === 60)) {
  26000. end = strings.IndexRune(t, 62);
  26001. if (end < 0) {
  26002. err = checkUTF8(t);
  26003. if (!($interfaceIsEqual(err, $ifaceNil))) {
  26004. _tmp = ""; _tmp$1 = err; rest = _tmp; err = _tmp$1;
  26005. return [rest, err];
  26006. }
  26007. _tmp$2 = ""; _tmp$3 = new Error.ptr("invalid named capture", s); rest = _tmp$2; err = _tmp$3;
  26008. return [rest, err];
  26009. }
  26010. capture = t.substring(0, (end + 1 >> 0));
  26011. name = t.substring(4, end);
  26012. err = checkUTF8(name);
  26013. if (!($interfaceIsEqual(err, $ifaceNil))) {
  26014. _tmp$4 = ""; _tmp$5 = err; rest = _tmp$4; err = _tmp$5;
  26015. return [rest, err];
  26016. }
  26017. if (!isValidCaptureName(name)) {
  26018. _tmp$6 = ""; _tmp$7 = new Error.ptr("invalid named capture", capture); rest = _tmp$6; err = _tmp$7;
  26019. return [rest, err];
  26020. }
  26021. p.numCap = p.numCap + (1) >> 0;
  26022. re = p.op(128);
  26023. re.Cap = p.numCap;
  26024. re.Name = name;
  26025. _tmp$8 = t.substring((end + 1 >> 0)); _tmp$9 = $ifaceNil; rest = _tmp$8; err = _tmp$9;
  26026. return [rest, err];
  26027. }
  26028. c = 0;
  26029. t = t.substring(2);
  26030. flags = p.flags;
  26031. sign = 1;
  26032. sawFlag = false;
  26033. Loop:
  26034. while (true) {
  26035. if (!(!(t === ""))) { break; }
  26036. _tuple = nextRune(t); c = _tuple[0]; t = _tuple[1]; err = _tuple[2];
  26037. if (!($interfaceIsEqual(err, $ifaceNil))) {
  26038. _tmp$10 = ""; _tmp$11 = err; rest = _tmp$10; err = _tmp$11;
  26039. return [rest, err];
  26040. }
  26041. _ref = c;
  26042. if (_ref === 105) {
  26043. flags = (flags | (1)) >>> 0;
  26044. sawFlag = true;
  26045. } else if (_ref === 109) {
  26046. flags = (flags & ~(16)) << 16 >>> 16;
  26047. sawFlag = true;
  26048. } else if (_ref === 115) {
  26049. flags = (flags | (8)) >>> 0;
  26050. sawFlag = true;
  26051. } else if (_ref === 85) {
  26052. flags = (flags | (32)) >>> 0;
  26053. sawFlag = true;
  26054. } else if (_ref === 45) {
  26055. if (sign < 0) {
  26056. break Loop;
  26057. }
  26058. sign = -1;
  26059. flags = ~flags << 16 >>> 16;
  26060. sawFlag = false;
  26061. } else if (_ref === 58 || _ref === 41) {
  26062. if (sign < 0) {
  26063. if (!sawFlag) {
  26064. break Loop;
  26065. }
  26066. flags = ~flags << 16 >>> 16;
  26067. }
  26068. if (c === 58) {
  26069. p.op(128);
  26070. }
  26071. p.flags = flags;
  26072. _tmp$12 = t; _tmp$13 = $ifaceNil; rest = _tmp$12; err = _tmp$13;
  26073. return [rest, err];
  26074. } else {
  26075. break Loop;
  26076. }
  26077. }
  26078. _tmp$14 = ""; _tmp$15 = new Error.ptr("invalid or unsupported Perl syntax", s.substring(0, (s.length - t.length >> 0))); rest = _tmp$14; err = _tmp$15;
  26079. return [rest, err];
  26080. };
  26081. parser.prototype.parsePerlFlags = function(s) { return this.$val.parsePerlFlags(s); };
  26082. isValidCaptureName = function(name) {
  26083. var $ptr, _i, _ref, _rune, c, name;
  26084. if (name === "") {
  26085. return false;
  26086. }
  26087. _ref = name;
  26088. _i = 0;
  26089. while (true) {
  26090. if (!(_i < _ref.length)) { break; }
  26091. _rune = $decodeRune(_ref, _i);
  26092. c = _rune[0];
  26093. if (!((c === 95)) && !isalnum(c)) {
  26094. return false;
  26095. }
  26096. _i += _rune[1];
  26097. }
  26098. return true;
  26099. };
  26100. parser.ptr.prototype.parseInt = function(s) {
  26101. var $ptr, i, n, ok, p, rest, s, t;
  26102. n = 0;
  26103. rest = "";
  26104. ok = false;
  26105. p = this;
  26106. if (s === "" || s.charCodeAt(0) < 48 || 57 < s.charCodeAt(0)) {
  26107. return [n, rest, ok];
  26108. }
  26109. if (s.length >= 2 && (s.charCodeAt(0) === 48) && 48 <= s.charCodeAt(1) && s.charCodeAt(1) <= 57) {
  26110. return [n, rest, ok];
  26111. }
  26112. t = s;
  26113. while (true) {
  26114. if (!(!(s === "") && 48 <= s.charCodeAt(0) && s.charCodeAt(0) <= 57)) { break; }
  26115. s = s.substring(1);
  26116. }
  26117. rest = s;
  26118. ok = true;
  26119. t = t.substring(0, (t.length - s.length >> 0));
  26120. i = 0;
  26121. while (true) {
  26122. if (!(i < t.length)) { break; }
  26123. if (n >= 100000000) {
  26124. n = -1;
  26125. break;
  26126. }
  26127. n = ((n * 10 >> 0) + (t.charCodeAt(i) >> 0) >> 0) - 48 >> 0;
  26128. i = i + (1) >> 0;
  26129. }
  26130. return [n, rest, ok];
  26131. };
  26132. parser.prototype.parseInt = function(s) { return this.$val.parseInt(s); };
  26133. isCharClass = function(re) {
  26134. var $ptr, re;
  26135. return (re.Op === 3) && (re.Rune.$length === 1) || (re.Op === 4) || (re.Op === 5) || (re.Op === 6);
  26136. };
  26137. matchRune = function(re, r) {
  26138. var $ptr, _ref, i, r, re, x, x$1, x$2, x$3;
  26139. _ref = re.Op;
  26140. if (_ref === 3) {
  26141. return (re.Rune.$length === 1) && ((x = re.Rune, (0 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 0])) === r);
  26142. } else if (_ref === 4) {
  26143. i = 0;
  26144. while (true) {
  26145. if (!(i < re.Rune.$length)) { break; }
  26146. if ((x$1 = re.Rune, ((i < 0 || i >= x$1.$length) ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + i])) <= r && r <= (x$2 = re.Rune, x$3 = i + 1 >> 0, ((x$3 < 0 || x$3 >= x$2.$length) ? $throwRuntimeError("index out of range") : x$2.$array[x$2.$offset + x$3]))) {
  26147. return true;
  26148. }
  26149. i = i + (2) >> 0;
  26150. }
  26151. return false;
  26152. } else if (_ref === 5) {
  26153. return !((r === 10));
  26154. } else if (_ref === 6) {
  26155. return true;
  26156. }
  26157. return false;
  26158. };
  26159. parser.ptr.prototype.parseVerticalBar = function() {
  26160. var $ptr, _r, _r$1, p, $s, $r;
  26161. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; p = $f.p; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  26162. p = this;
  26163. _r = p.concat(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  26164. _r;
  26165. _r$1 = p.swapVerticalBar(); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  26166. /* */ if (!_r$1) { $s = 2; continue; }
  26167. /* */ $s = 3; continue;
  26168. /* if (!_r$1) { */ case 2:
  26169. p.op(129);
  26170. /* } */ case 3:
  26171. return $ifaceNil;
  26172. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: parser.ptr.prototype.parseVerticalBar }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f.p = p; $f.$s = $s; $f.$r = $r; return $f;
  26173. };
  26174. parser.prototype.parseVerticalBar = function() { return this.$val.parseVerticalBar(); };
  26175. mergeCharClass = function(dst, src) {
  26176. var $ptr, _ref, dst, src, x, x$1, x$2, x$3, x$4;
  26177. _ref = dst.Op;
  26178. switch (0) { default: if (_ref === 6) {
  26179. } else if (_ref === 5) {
  26180. if (matchRune(src, 10)) {
  26181. dst.Op = 6;
  26182. }
  26183. } else if (_ref === 4) {
  26184. if (src.Op === 3) {
  26185. dst.Rune = appendLiteral(dst.Rune, (x = src.Rune, (0 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 0])), src.Flags);
  26186. } else {
  26187. dst.Rune = appendClass(dst.Rune, src.Rune);
  26188. }
  26189. } else if (_ref === 3) {
  26190. if (((x$1 = src.Rune, (0 >= x$1.$length ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + 0])) === (x$2 = dst.Rune, (0 >= x$2.$length ? $throwRuntimeError("index out of range") : x$2.$array[x$2.$offset + 0]))) && (src.Flags === dst.Flags)) {
  26191. break;
  26192. }
  26193. dst.Op = 4;
  26194. dst.Rune = appendLiteral($subslice(dst.Rune, 0, 0), (x$3 = dst.Rune, (0 >= x$3.$length ? $throwRuntimeError("index out of range") : x$3.$array[x$3.$offset + 0])), dst.Flags);
  26195. dst.Rune = appendLiteral(dst.Rune, (x$4 = src.Rune, (0 >= x$4.$length ? $throwRuntimeError("index out of range") : x$4.$array[x$4.$offset + 0])), src.Flags);
  26196. } }
  26197. };
  26198. parser.ptr.prototype.swapVerticalBar = function() {
  26199. var $ptr, _tmp, _tmp$1, n, p, re1, re1$1, re2, re3, x, x$1, x$10, x$11, x$12, x$13, x$14, x$15, x$16, x$17, x$18, x$19, x$2, x$20, x$21, x$3, x$4, x$5, x$6, x$7, x$8, x$9, $s, $r;
  26200. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; n = $f.n; p = $f.p; re1 = $f.re1; re1$1 = $f.re1$1; re2 = $f.re2; re3 = $f.re3; x = $f.x; x$1 = $f.x$1; x$10 = $f.x$10; x$11 = $f.x$11; x$12 = $f.x$12; x$13 = $f.x$13; x$14 = $f.x$14; x$15 = $f.x$15; x$16 = $f.x$16; x$17 = $f.x$17; x$18 = $f.x$18; x$19 = $f.x$19; x$2 = $f.x$2; x$20 = $f.x$20; x$21 = $f.x$21; x$3 = $f.x$3; x$4 = $f.x$4; x$5 = $f.x$5; x$6 = $f.x$6; x$7 = $f.x$7; x$8 = $f.x$8; x$9 = $f.x$9; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  26201. p = this;
  26202. n = p.stack.$length;
  26203. if (n >= 3 && ((x = p.stack, x$1 = n - 2 >> 0, ((x$1 < 0 || x$1 >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + x$1])).Op === 129) && isCharClass((x$2 = p.stack, x$3 = n - 1 >> 0, ((x$3 < 0 || x$3 >= x$2.$length) ? $throwRuntimeError("index out of range") : x$2.$array[x$2.$offset + x$3]))) && isCharClass((x$4 = p.stack, x$5 = n - 3 >> 0, ((x$5 < 0 || x$5 >= x$4.$length) ? $throwRuntimeError("index out of range") : x$4.$array[x$4.$offset + x$5])))) {
  26204. re1 = (x$6 = p.stack, x$7 = n - 1 >> 0, ((x$7 < 0 || x$7 >= x$6.$length) ? $throwRuntimeError("index out of range") : x$6.$array[x$6.$offset + x$7]));
  26205. re3 = (x$8 = p.stack, x$9 = n - 3 >> 0, ((x$9 < 0 || x$9 >= x$8.$length) ? $throwRuntimeError("index out of range") : x$8.$array[x$8.$offset + x$9]));
  26206. if (re1.Op > re3.Op) {
  26207. _tmp = re3; _tmp$1 = re1; re1 = _tmp; re3 = _tmp$1;
  26208. (x$10 = p.stack, x$11 = n - 3 >> 0, ((x$11 < 0 || x$11 >= x$10.$length) ? $throwRuntimeError("index out of range") : x$10.$array[x$10.$offset + x$11] = re3));
  26209. }
  26210. mergeCharClass(re3, re1);
  26211. p.reuse(re1);
  26212. p.stack = $subslice(p.stack, 0, (n - 1 >> 0));
  26213. return true;
  26214. }
  26215. /* */ if (n >= 2) { $s = 1; continue; }
  26216. /* */ $s = 2; continue;
  26217. /* if (n >= 2) { */ case 1:
  26218. re1$1 = (x$12 = p.stack, x$13 = n - 1 >> 0, ((x$13 < 0 || x$13 >= x$12.$length) ? $throwRuntimeError("index out of range") : x$12.$array[x$12.$offset + x$13]));
  26219. re2 = (x$14 = p.stack, x$15 = n - 2 >> 0, ((x$15 < 0 || x$15 >= x$14.$length) ? $throwRuntimeError("index out of range") : x$14.$array[x$14.$offset + x$15]));
  26220. /* */ if (re2.Op === 129) { $s = 3; continue; }
  26221. /* */ $s = 4; continue;
  26222. /* if (re2.Op === 129) { */ case 3:
  26223. /* */ if (n >= 3) { $s = 5; continue; }
  26224. /* */ $s = 6; continue;
  26225. /* if (n >= 3) { */ case 5:
  26226. $r = cleanAlt((x$16 = p.stack, x$17 = n - 3 >> 0, ((x$17 < 0 || x$17 >= x$16.$length) ? $throwRuntimeError("index out of range") : x$16.$array[x$16.$offset + x$17]))); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  26227. /* } */ case 6:
  26228. (x$18 = p.stack, x$19 = n - 2 >> 0, ((x$19 < 0 || x$19 >= x$18.$length) ? $throwRuntimeError("index out of range") : x$18.$array[x$18.$offset + x$19] = re1$1));
  26229. (x$20 = p.stack, x$21 = n - 1 >> 0, ((x$21 < 0 || x$21 >= x$20.$length) ? $throwRuntimeError("index out of range") : x$20.$array[x$20.$offset + x$21] = re2));
  26230. return true;
  26231. /* } */ case 4:
  26232. /* } */ case 2:
  26233. return false;
  26234. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: parser.ptr.prototype.swapVerticalBar }; } $f.$ptr = $ptr; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f.n = n; $f.p = p; $f.re1 = re1; $f.re1$1 = re1$1; $f.re2 = re2; $f.re3 = re3; $f.x = x; $f.x$1 = x$1; $f.x$10 = x$10; $f.x$11 = x$11; $f.x$12 = x$12; $f.x$13 = x$13; $f.x$14 = x$14; $f.x$15 = x$15; $f.x$16 = x$16; $f.x$17 = x$17; $f.x$18 = x$18; $f.x$19 = x$19; $f.x$2 = x$2; $f.x$20 = x$20; $f.x$21 = x$21; $f.x$3 = x$3; $f.x$4 = x$4; $f.x$5 = x$5; $f.x$6 = x$6; $f.x$7 = x$7; $f.x$8 = x$8; $f.x$9 = x$9; $f.$s = $s; $f.$r = $r; return $f;
  26235. };
  26236. parser.prototype.swapVerticalBar = function() { return this.$val.swapVerticalBar(); };
  26237. parser.ptr.prototype.parseRightParen = function() {
  26238. var $ptr, _r, _r$1, _r$2, n, p, re1, re2, x, x$1, x$2, x$3, x$4, $s, $r;
  26239. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; n = $f.n; p = $f.p; re1 = $f.re1; re2 = $f.re2; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; x$3 = $f.x$3; x$4 = $f.x$4; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  26240. p = this;
  26241. _r = p.concat(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  26242. _r;
  26243. _r$1 = p.swapVerticalBar(); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  26244. /* */ if (_r$1) { $s = 2; continue; }
  26245. /* */ $s = 3; continue;
  26246. /* if (_r$1) { */ case 2:
  26247. p.stack = $subslice(p.stack, 0, (p.stack.$length - 1 >> 0));
  26248. /* } */ case 3:
  26249. _r$2 = p.alternate(); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  26250. _r$2;
  26251. n = p.stack.$length;
  26252. if (n < 2) {
  26253. return new Error.ptr("unexpected )", p.wholeRegexp);
  26254. }
  26255. re1 = (x = p.stack, x$1 = n - 1 >> 0, ((x$1 < 0 || x$1 >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + x$1]));
  26256. re2 = (x$2 = p.stack, x$3 = n - 2 >> 0, ((x$3 < 0 || x$3 >= x$2.$length) ? $throwRuntimeError("index out of range") : x$2.$array[x$2.$offset + x$3]));
  26257. p.stack = $subslice(p.stack, 0, (n - 2 >> 0));
  26258. if (!((re2.Op === 128))) {
  26259. return new Error.ptr("unexpected )", p.wholeRegexp);
  26260. }
  26261. p.flags = re2.Flags;
  26262. if (re2.Cap === 0) {
  26263. p.push(re1);
  26264. } else {
  26265. re2.Op = 13;
  26266. re2.Sub = $subslice(new sliceType$4(re2.Sub0), 0, 1);
  26267. (x$4 = re2.Sub, (0 >= x$4.$length ? $throwRuntimeError("index out of range") : x$4.$array[x$4.$offset + 0] = re1));
  26268. p.push(re2);
  26269. }
  26270. return $ifaceNil;
  26271. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: parser.ptr.prototype.parseRightParen }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f.n = n; $f.p = p; $f.re1 = re1; $f.re2 = re2; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.x$3 = x$3; $f.x$4 = x$4; $f.$s = $s; $f.$r = $r; return $f;
  26272. };
  26273. parser.prototype.parseRightParen = function() { return this.$val.parseRightParen(); };
  26274. parser.ptr.prototype.parseEscape = function(s) {
  26275. var $ptr, _ref, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$16, _tmp$17, _tmp$18, _tmp$19, _tmp$2, _tmp$20, _tmp$21, _tmp$22, _tmp$23, _tmp$24, _tmp$25, _tmp$26, _tmp$27, _tmp$28, _tmp$29, _tmp$3, _tmp$30, _tmp$31, _tmp$32, _tmp$33, _tmp$34, _tmp$35, _tmp$36, _tmp$37, _tmp$38, _tmp$39, _tmp$4, _tmp$40, _tmp$41, _tmp$42, _tmp$43, _tmp$44, _tmp$45, _tmp$46, _tmp$47, _tmp$48, _tmp$49, _tmp$5, _tmp$50, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, _tuple$2, _tuple$3, c, err, i, nhex, p, r, rest, s, t, v, x, y;
  26276. r = 0;
  26277. rest = "";
  26278. err = $ifaceNil;
  26279. p = this;
  26280. t = s.substring(1);
  26281. if (t === "") {
  26282. _tmp = 0; _tmp$1 = ""; _tmp$2 = new Error.ptr("trailing backslash at end of expression", ""); r = _tmp; rest = _tmp$1; err = _tmp$2;
  26283. return [r, rest, err];
  26284. }
  26285. _tuple = nextRune(t); c = _tuple[0]; t = _tuple[1]; err = _tuple[2];
  26286. if (!($interfaceIsEqual(err, $ifaceNil))) {
  26287. _tmp$3 = 0; _tmp$4 = ""; _tmp$5 = err; r = _tmp$3; rest = _tmp$4; err = _tmp$5;
  26288. return [r, rest, err];
  26289. }
  26290. _ref = c;
  26291. Switch:
  26292. switch (0) { default: if (_ref === 49 || _ref === 50 || _ref === 51 || _ref === 52 || _ref === 53 || _ref === 54 || _ref === 55) {
  26293. if (t === "" || t.charCodeAt(0) < 48 || t.charCodeAt(0) > 55) {
  26294. break;
  26295. }
  26296. r = c - 48 >> 0;
  26297. i = 1;
  26298. while (true) {
  26299. if (!(i < 3)) { break; }
  26300. if (t === "" || t.charCodeAt(0) < 48 || t.charCodeAt(0) > 55) {
  26301. break;
  26302. }
  26303. r = (((((r >>> 16 << 16) * 8 >> 0) + (r << 16 >>> 16) * 8) >> 0) + (t.charCodeAt(0) >> 0) >> 0) - 48 >> 0;
  26304. t = t.substring(1);
  26305. i = i + (1) >> 0;
  26306. }
  26307. _tmp$6 = r; _tmp$7 = t; _tmp$8 = $ifaceNil; r = _tmp$6; rest = _tmp$7; err = _tmp$8;
  26308. return [r, rest, err];
  26309. } else if (_ref === 48) {
  26310. r = c - 48 >> 0;
  26311. i = 1;
  26312. while (true) {
  26313. if (!(i < 3)) { break; }
  26314. if (t === "" || t.charCodeAt(0) < 48 || t.charCodeAt(0) > 55) {
  26315. break;
  26316. }
  26317. r = (((((r >>> 16 << 16) * 8 >> 0) + (r << 16 >>> 16) * 8) >> 0) + (t.charCodeAt(0) >> 0) >> 0) - 48 >> 0;
  26318. t = t.substring(1);
  26319. i = i + (1) >> 0;
  26320. }
  26321. _tmp$9 = r; _tmp$10 = t; _tmp$11 = $ifaceNil; r = _tmp$9; rest = _tmp$10; err = _tmp$11;
  26322. return [r, rest, err];
  26323. } else if (_ref === 120) {
  26324. if (t === "") {
  26325. break;
  26326. }
  26327. _tuple$1 = nextRune(t); c = _tuple$1[0]; t = _tuple$1[1]; err = _tuple$1[2];
  26328. if (!($interfaceIsEqual(err, $ifaceNil))) {
  26329. _tmp$12 = 0; _tmp$13 = ""; _tmp$14 = err; r = _tmp$12; rest = _tmp$13; err = _tmp$14;
  26330. return [r, rest, err];
  26331. }
  26332. if (c === 123) {
  26333. nhex = 0;
  26334. r = 0;
  26335. while (true) {
  26336. if (t === "") {
  26337. break Switch;
  26338. }
  26339. _tuple$2 = nextRune(t); c = _tuple$2[0]; t = _tuple$2[1]; err = _tuple$2[2];
  26340. if (!($interfaceIsEqual(err, $ifaceNil))) {
  26341. _tmp$15 = 0; _tmp$16 = ""; _tmp$17 = err; r = _tmp$15; rest = _tmp$16; err = _tmp$17;
  26342. return [r, rest, err];
  26343. }
  26344. if (c === 125) {
  26345. break;
  26346. }
  26347. v = unhex(c);
  26348. if (v < 0) {
  26349. break Switch;
  26350. }
  26351. r = ((((r >>> 16 << 16) * 16 >> 0) + (r << 16 >>> 16) * 16) >> 0) + v >> 0;
  26352. if (r > 1114111) {
  26353. break Switch;
  26354. }
  26355. nhex = nhex + (1) >> 0;
  26356. }
  26357. if (nhex === 0) {
  26358. break Switch;
  26359. }
  26360. _tmp$18 = r; _tmp$19 = t; _tmp$20 = $ifaceNil; r = _tmp$18; rest = _tmp$19; err = _tmp$20;
  26361. return [r, rest, err];
  26362. }
  26363. x = unhex(c);
  26364. _tuple$3 = nextRune(t); c = _tuple$3[0]; t = _tuple$3[1]; err = _tuple$3[2];
  26365. if (!($interfaceIsEqual(err, $ifaceNil))) {
  26366. _tmp$21 = 0; _tmp$22 = ""; _tmp$23 = err; r = _tmp$21; rest = _tmp$22; err = _tmp$23;
  26367. return [r, rest, err];
  26368. }
  26369. y = unhex(c);
  26370. if (x < 0 || y < 0) {
  26371. break;
  26372. }
  26373. _tmp$24 = ((((x >>> 16 << 16) * 16 >> 0) + (x << 16 >>> 16) * 16) >> 0) + y >> 0; _tmp$25 = t; _tmp$26 = $ifaceNil; r = _tmp$24; rest = _tmp$25; err = _tmp$26;
  26374. return [r, rest, err];
  26375. } else if (_ref === 97) {
  26376. _tmp$27 = 7; _tmp$28 = t; _tmp$29 = err; r = _tmp$27; rest = _tmp$28; err = _tmp$29;
  26377. return [r, rest, err];
  26378. } else if (_ref === 102) {
  26379. _tmp$30 = 12; _tmp$31 = t; _tmp$32 = err; r = _tmp$30; rest = _tmp$31; err = _tmp$32;
  26380. return [r, rest, err];
  26381. } else if (_ref === 110) {
  26382. _tmp$33 = 10; _tmp$34 = t; _tmp$35 = err; r = _tmp$33; rest = _tmp$34; err = _tmp$35;
  26383. return [r, rest, err];
  26384. } else if (_ref === 114) {
  26385. _tmp$36 = 13; _tmp$37 = t; _tmp$38 = err; r = _tmp$36; rest = _tmp$37; err = _tmp$38;
  26386. return [r, rest, err];
  26387. } else if (_ref === 116) {
  26388. _tmp$39 = 9; _tmp$40 = t; _tmp$41 = err; r = _tmp$39; rest = _tmp$40; err = _tmp$41;
  26389. return [r, rest, err];
  26390. } else if (_ref === 118) {
  26391. _tmp$42 = 11; _tmp$43 = t; _tmp$44 = err; r = _tmp$42; rest = _tmp$43; err = _tmp$44;
  26392. return [r, rest, err];
  26393. } else {
  26394. if (c < 128 && !isalnum(c)) {
  26395. _tmp$45 = c; _tmp$46 = t; _tmp$47 = $ifaceNil; r = _tmp$45; rest = _tmp$46; err = _tmp$47;
  26396. return [r, rest, err];
  26397. }
  26398. } }
  26399. _tmp$48 = 0; _tmp$49 = ""; _tmp$50 = new Error.ptr("invalid escape sequence", s.substring(0, (s.length - t.length >> 0))); r = _tmp$48; rest = _tmp$49; err = _tmp$50;
  26400. return [r, rest, err];
  26401. };
  26402. parser.prototype.parseEscape = function(s) { return this.$val.parseEscape(s); };
  26403. parser.ptr.prototype.parseClassChar = function(s, wholeClass) {
  26404. var $ptr, _tmp, _tmp$1, _tmp$2, _tuple, _tuple$1, err, p, r, rest, s, wholeClass;
  26405. r = 0;
  26406. rest = "";
  26407. err = $ifaceNil;
  26408. p = this;
  26409. if (s === "") {
  26410. _tmp = 0; _tmp$1 = ""; _tmp$2 = new Error.ptr("missing closing ]", wholeClass); r = _tmp; rest = _tmp$1; err = _tmp$2;
  26411. return [r, rest, err];
  26412. }
  26413. if (s.charCodeAt(0) === 92) {
  26414. _tuple = p.parseEscape(s); r = _tuple[0]; rest = _tuple[1]; err = _tuple[2];
  26415. return [r, rest, err];
  26416. }
  26417. _tuple$1 = nextRune(s); r = _tuple$1[0]; rest = _tuple$1[1]; err = _tuple$1[2];
  26418. return [r, rest, err];
  26419. };
  26420. parser.prototype.parseClassChar = function(s, wholeClass) { return this.$val.parseClassChar(s, wholeClass); };
  26421. parser.ptr.prototype.parsePerlClassEscape = function(s, r) {
  26422. var $ptr, _entry, _r, _tmp, _tmp$1, g, out, p, r, rest, s, $s, $r;
  26423. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _entry = $f._entry; _r = $f._r; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; g = $f.g; out = $f.out; p = $f.p; r = $f.r; rest = $f.rest; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  26424. out = sliceType.nil;
  26425. rest = "";
  26426. p = this;
  26427. if ((((p.flags & 64) >>> 0) === 0) || s.length < 2 || !((s.charCodeAt(0) === 92))) {
  26428. return [out, rest];
  26429. }
  26430. g = $clone((_entry = perlGroup[s.substring(0, 2)], _entry !== undefined ? _entry.v : new charGroup.ptr()), charGroup);
  26431. if (g.sign === 0) {
  26432. return [out, rest];
  26433. }
  26434. _r = p.appendGroup(r, g); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  26435. _tmp = _r; _tmp$1 = s.substring(2); out = _tmp; rest = _tmp$1;
  26436. return [out, rest];
  26437. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: parser.ptr.prototype.parsePerlClassEscape }; } $f.$ptr = $ptr; $f._entry = _entry; $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f.g = g; $f.out = out; $f.p = p; $f.r = r; $f.rest = rest; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
  26438. };
  26439. parser.prototype.parsePerlClassEscape = function(s, r) { return this.$val.parsePerlClassEscape(s, r); };
  26440. parser.ptr.prototype.parseNamedClass = function(s, r) {
  26441. var $ptr, _entry, _r, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, err, g, i, name, out, p, r, rest, s, $s, $r;
  26442. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _entry = $f._entry; _r = $f._r; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tmp$6 = $f._tmp$6; _tmp$7 = $f._tmp$7; err = $f.err; g = $f.g; i = $f.i; name = $f.name; out = $f.out; p = $f.p; r = $f.r; rest = $f.rest; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  26443. out = sliceType.nil;
  26444. rest = "";
  26445. err = $ifaceNil;
  26446. p = this;
  26447. if (s.length < 2 || !((s.charCodeAt(0) === 91)) || !((s.charCodeAt(1) === 58))) {
  26448. return [out, rest, err];
  26449. }
  26450. i = strings.Index(s.substring(2), ":]");
  26451. if (i < 0) {
  26452. return [out, rest, err];
  26453. }
  26454. i = i + (2) >> 0;
  26455. _tmp = s.substring(0, (i + 2 >> 0)); _tmp$1 = s.substring((i + 2 >> 0)); name = _tmp; s = _tmp$1;
  26456. g = $clone((_entry = posixGroup[name], _entry !== undefined ? _entry.v : new charGroup.ptr()), charGroup);
  26457. if (g.sign === 0) {
  26458. _tmp$2 = sliceType.nil; _tmp$3 = ""; _tmp$4 = new Error.ptr("invalid character class range", name); out = _tmp$2; rest = _tmp$3; err = _tmp$4;
  26459. return [out, rest, err];
  26460. }
  26461. _r = p.appendGroup(r, g); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  26462. _tmp$5 = _r; _tmp$6 = s; _tmp$7 = $ifaceNil; out = _tmp$5; rest = _tmp$6; err = _tmp$7;
  26463. return [out, rest, err];
  26464. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: parser.ptr.prototype.parseNamedClass }; } $f.$ptr = $ptr; $f._entry = _entry; $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tmp$6 = _tmp$6; $f._tmp$7 = _tmp$7; $f.err = err; $f.g = g; $f.i = i; $f.name = name; $f.out = out; $f.p = p; $f.r = r; $f.rest = rest; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
  26465. };
  26466. parser.prototype.parseNamedClass = function(s, r) { return this.$val.parseNamedClass(s, r); };
  26467. parser.ptr.prototype.appendGroup = function(r, g) {
  26468. var $ptr, _r, g, p, r, tmp, $s, $r;
  26469. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; g = $f.g; p = $f.p; r = $f.r; tmp = $f.tmp; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  26470. p = this;
  26471. g = $clone(g, charGroup);
  26472. /* */ if (((p.flags & 1) >>> 0) === 0) { $s = 1; continue; }
  26473. /* */ $s = 2; continue;
  26474. /* if (((p.flags & 1) >>> 0) === 0) { */ case 1:
  26475. if (g.sign < 0) {
  26476. r = appendNegatedClass(r, g.class$1);
  26477. } else {
  26478. r = appendClass(r, g.class$1);
  26479. }
  26480. $s = 3; continue;
  26481. /* } else { */ case 2:
  26482. tmp = $subslice(p.tmpClass, 0, 0);
  26483. tmp = appendFoldedClass(tmp, g.class$1);
  26484. p.tmpClass = tmp;
  26485. _r = cleanClass((p.$ptr_tmpClass || (p.$ptr_tmpClass = new ptrType$1(function() { return this.$target.tmpClass; }, function($v) { this.$target.tmpClass = $v; }, p)))); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  26486. tmp = _r;
  26487. if (g.sign < 0) {
  26488. r = appendNegatedClass(r, tmp);
  26489. } else {
  26490. r = appendClass(r, tmp);
  26491. }
  26492. /* } */ case 3:
  26493. return r;
  26494. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: parser.ptr.prototype.appendGroup }; } $f.$ptr = $ptr; $f._r = _r; $f.g = g; $f.p = p; $f.r = r; $f.tmp = tmp; $f.$s = $s; $f.$r = $r; return $f;
  26495. };
  26496. parser.prototype.appendGroup = function(r, g) { return this.$val.appendGroup(r, g); };
  26497. unicodeTable = function(name) {
  26498. var $ptr, _entry, _entry$1, _entry$2, _entry$3, name, t, t$1;
  26499. if (name === "Any") {
  26500. return [anyTable, anyTable];
  26501. }
  26502. t = (_entry = unicode.Categories[name], _entry !== undefined ? _entry.v : ptrType$2.nil);
  26503. if (!(t === ptrType$2.nil)) {
  26504. return [t, (_entry$1 = unicode.FoldCategory[name], _entry$1 !== undefined ? _entry$1.v : ptrType$2.nil)];
  26505. }
  26506. t$1 = (_entry$2 = unicode.Scripts[name], _entry$2 !== undefined ? _entry$2.v : ptrType$2.nil);
  26507. if (!(t$1 === ptrType$2.nil)) {
  26508. return [t$1, (_entry$3 = unicode.FoldScript[name], _entry$3 !== undefined ? _entry$3.v : ptrType$2.nil)];
  26509. }
  26510. return [ptrType$2.nil, ptrType$2.nil];
  26511. };
  26512. parser.ptr.prototype.parseUnicodeClass = function(s, r) {
  26513. var $ptr, _r, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, c, end, err, fold, name, out, p, r, rest, s, seq, sign, t, tab, tmp, $s, $r;
  26514. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$10 = $f._tmp$10; _tmp$11 = $f._tmp$11; _tmp$12 = $f._tmp$12; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tmp$6 = $f._tmp$6; _tmp$7 = $f._tmp$7; _tmp$8 = $f._tmp$8; _tmp$9 = $f._tmp$9; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; c = $f.c; end = $f.end; err = $f.err; fold = $f.fold; name = $f.name; out = $f.out; p = $f.p; r = $f.r; rest = $f.rest; s = $f.s; seq = $f.seq; sign = $f.sign; t = $f.t; tab = $f.tab; tmp = $f.tmp; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  26515. out = sliceType.nil;
  26516. rest = "";
  26517. err = $ifaceNil;
  26518. p = this;
  26519. if ((((p.flags & 128) >>> 0) === 0) || s.length < 2 || !((s.charCodeAt(0) === 92)) || !((s.charCodeAt(1) === 112)) && !((s.charCodeAt(1) === 80))) {
  26520. return [out, rest, err];
  26521. }
  26522. sign = 1;
  26523. if (s.charCodeAt(1) === 80) {
  26524. sign = -1;
  26525. }
  26526. t = s.substring(2);
  26527. _tuple = nextRune(t); c = _tuple[0]; t = _tuple[1]; err = _tuple[2];
  26528. if (!($interfaceIsEqual(err, $ifaceNil))) {
  26529. return [out, rest, err];
  26530. }
  26531. _tmp = ""; _tmp$1 = ""; seq = _tmp; name = _tmp$1;
  26532. if (!((c === 123))) {
  26533. seq = s.substring(0, (s.length - t.length >> 0));
  26534. name = seq.substring(2);
  26535. } else {
  26536. end = strings.IndexRune(s, 125);
  26537. if (end < 0) {
  26538. err = checkUTF8(s);
  26539. if (!($interfaceIsEqual(err, $ifaceNil))) {
  26540. return [out, rest, err];
  26541. }
  26542. _tmp$2 = sliceType.nil; _tmp$3 = ""; _tmp$4 = new Error.ptr("invalid character class range", s); out = _tmp$2; rest = _tmp$3; err = _tmp$4;
  26543. return [out, rest, err];
  26544. }
  26545. _tmp$5 = s.substring(0, (end + 1 >> 0)); _tmp$6 = s.substring((end + 1 >> 0)); seq = _tmp$5; t = _tmp$6;
  26546. name = s.substring(3, end);
  26547. err = checkUTF8(name);
  26548. if (!($interfaceIsEqual(err, $ifaceNil))) {
  26549. return [out, rest, err];
  26550. }
  26551. }
  26552. if (!(name === "") && (name.charCodeAt(0) === 94)) {
  26553. sign = -sign;
  26554. name = name.substring(1);
  26555. }
  26556. _tuple$1 = unicodeTable(name); tab = _tuple$1[0]; fold = _tuple$1[1];
  26557. if (tab === ptrType$2.nil) {
  26558. _tmp$7 = sliceType.nil; _tmp$8 = ""; _tmp$9 = new Error.ptr("invalid character class range", seq); out = _tmp$7; rest = _tmp$8; err = _tmp$9;
  26559. return [out, rest, err];
  26560. }
  26561. /* */ if ((((p.flags & 1) >>> 0) === 0) || fold === ptrType$2.nil) { $s = 1; continue; }
  26562. /* */ $s = 2; continue;
  26563. /* if ((((p.flags & 1) >>> 0) === 0) || fold === ptrType$2.nil) { */ case 1:
  26564. if (sign > 0) {
  26565. r = appendTable(r, tab);
  26566. } else {
  26567. r = appendNegatedTable(r, tab);
  26568. }
  26569. $s = 3; continue;
  26570. /* } else { */ case 2:
  26571. tmp = $subslice(p.tmpClass, 0, 0);
  26572. tmp = appendTable(tmp, tab);
  26573. tmp = appendTable(tmp, fold);
  26574. p.tmpClass = tmp;
  26575. _r = cleanClass((p.$ptr_tmpClass || (p.$ptr_tmpClass = new ptrType$1(function() { return this.$target.tmpClass; }, function($v) { this.$target.tmpClass = $v; }, p)))); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  26576. tmp = _r;
  26577. if (sign > 0) {
  26578. r = appendClass(r, tmp);
  26579. } else {
  26580. r = appendNegatedClass(r, tmp);
  26581. }
  26582. /* } */ case 3:
  26583. _tmp$10 = r; _tmp$11 = t; _tmp$12 = $ifaceNil; out = _tmp$10; rest = _tmp$11; err = _tmp$12;
  26584. return [out, rest, err];
  26585. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: parser.ptr.prototype.parseUnicodeClass }; } $f.$ptr = $ptr; $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$10 = _tmp$10; $f._tmp$11 = _tmp$11; $f._tmp$12 = _tmp$12; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tmp$6 = _tmp$6; $f._tmp$7 = _tmp$7; $f._tmp$8 = _tmp$8; $f._tmp$9 = _tmp$9; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.c = c; $f.end = end; $f.err = err; $f.fold = fold; $f.name = name; $f.out = out; $f.p = p; $f.r = r; $f.rest = rest; $f.s = s; $f.seq = seq; $f.sign = sign; $f.t = t; $f.tab = tab; $f.tmp = tmp; $f.$s = $s; $f.$r = $r; return $f;
  26586. };
  26587. parser.prototype.parseUnicodeClass = function(s, r) { return this.$val.parseUnicodeClass(s, r); };
  26588. parser.ptr.prototype.parseClass = function(s) {
  26589. var $ptr, _r, _r$1, _r$2, _r$3, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$16, _tmp$17, _tmp$18, _tmp$19, _tmp$2, _tmp$20, _tmp$21, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, class$1, err, err$1, err$2, first, hi, lo, nclass, nclass$1, nclass$2, nt, nt$1, nt$2, p, re, rest, rng, s, sign, size, t, $s, $r;
  26590. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$10 = $f._tmp$10; _tmp$11 = $f._tmp$11; _tmp$12 = $f._tmp$12; _tmp$13 = $f._tmp$13; _tmp$14 = $f._tmp$14; _tmp$15 = $f._tmp$15; _tmp$16 = $f._tmp$16; _tmp$17 = $f._tmp$17; _tmp$18 = $f._tmp$18; _tmp$19 = $f._tmp$19; _tmp$2 = $f._tmp$2; _tmp$20 = $f._tmp$20; _tmp$21 = $f._tmp$21; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tmp$6 = $f._tmp$6; _tmp$7 = $f._tmp$7; _tmp$8 = $f._tmp$8; _tmp$9 = $f._tmp$9; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; _tuple$4 = $f._tuple$4; _tuple$5 = $f._tuple$5; class$1 = $f.class$1; err = $f.err; err$1 = $f.err$1; err$2 = $f.err$2; first = $f.first; hi = $f.hi; lo = $f.lo; nclass = $f.nclass; nclass$1 = $f.nclass$1; nclass$2 = $f.nclass$2; nt = $f.nt; nt$1 = $f.nt$1; nt$2 = $f.nt$2; p = $f.p; re = $f.re; rest = $f.rest; rng = $f.rng; s = $f.s; sign = $f.sign; size = $f.size; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  26591. rest = "";
  26592. err = $ifaceNil;
  26593. p = this;
  26594. t = s.substring(1);
  26595. re = p.newRegexp(4);
  26596. re.Flags = p.flags;
  26597. re.Rune = $subslice(new sliceType(re.Rune0), 0, 0);
  26598. sign = 1;
  26599. if (!(t === "") && (t.charCodeAt(0) === 94)) {
  26600. sign = -1;
  26601. t = t.substring(1);
  26602. if (((p.flags & 4) >>> 0) === 0) {
  26603. re.Rune = $append(re.Rune, 10, 10);
  26604. }
  26605. }
  26606. class$1 = re.Rune;
  26607. first = true;
  26608. /* while (true) { */ case 1:
  26609. /* if (!(t === "" || !((t.charCodeAt(0) === 93)) || first)) { break; } */ if(!(t === "" || !((t.charCodeAt(0) === 93)) || first)) { $s = 2; continue; }
  26610. if (!(t === "") && (t.charCodeAt(0) === 45) && (((p.flags & 64) >>> 0) === 0) && !first && ((t.length === 1) || !((t.charCodeAt(1) === 93)))) {
  26611. _tuple = utf8.DecodeRuneInString(t.substring(1)); size = _tuple[1];
  26612. _tmp = ""; _tmp$1 = new Error.ptr("invalid character class range", t.substring(0, (1 + size >> 0))); rest = _tmp; err = _tmp$1;
  26613. return [rest, err];
  26614. }
  26615. first = false;
  26616. /* */ if (t.length > 2 && (t.charCodeAt(0) === 91) && (t.charCodeAt(1) === 58)) { $s = 3; continue; }
  26617. /* */ $s = 4; continue;
  26618. /* if (t.length > 2 && (t.charCodeAt(0) === 91) && (t.charCodeAt(1) === 58)) { */ case 3:
  26619. _r = p.parseNamedClass(t, class$1); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  26620. _tuple$1 = _r; nclass = _tuple$1[0]; nt = _tuple$1[1]; err$1 = _tuple$1[2];
  26621. if (!($interfaceIsEqual(err$1, $ifaceNil))) {
  26622. _tmp$2 = ""; _tmp$3 = err$1; rest = _tmp$2; err = _tmp$3;
  26623. return [rest, err];
  26624. }
  26625. if (!(nclass === sliceType.nil)) {
  26626. _tmp$4 = nclass; _tmp$5 = nt; class$1 = _tmp$4; t = _tmp$5;
  26627. /* continue; */ $s = 1; continue;
  26628. }
  26629. /* } */ case 4:
  26630. _r$1 = p.parseUnicodeClass(t, class$1); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  26631. _tuple$2 = _r$1; nclass$1 = _tuple$2[0]; nt$1 = _tuple$2[1]; err$2 = _tuple$2[2];
  26632. if (!($interfaceIsEqual(err$2, $ifaceNil))) {
  26633. _tmp$6 = ""; _tmp$7 = err$2; rest = _tmp$6; err = _tmp$7;
  26634. return [rest, err];
  26635. }
  26636. /* */ if (!(nclass$1 === sliceType.nil)) { $s = 7; continue; }
  26637. /* */ $s = 8; continue;
  26638. /* if (!(nclass$1 === sliceType.nil)) { */ case 7:
  26639. _tmp$8 = nclass$1; _tmp$9 = nt$1; class$1 = _tmp$8; t = _tmp$9;
  26640. /* continue; */ $s = 1; continue;
  26641. /* } */ case 8:
  26642. _r$2 = p.parsePerlClassEscape(t, class$1); /* */ $s = 9; case 9: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  26643. _tuple$3 = _r$2; nclass$2 = _tuple$3[0]; nt$2 = _tuple$3[1];
  26644. /* */ if (!(nclass$2 === sliceType.nil)) { $s = 10; continue; }
  26645. /* */ $s = 11; continue;
  26646. /* if (!(nclass$2 === sliceType.nil)) { */ case 10:
  26647. _tmp$10 = nclass$2; _tmp$11 = nt$2; class$1 = _tmp$10; t = _tmp$11;
  26648. /* continue; */ $s = 1; continue;
  26649. /* } */ case 11:
  26650. rng = t;
  26651. _tmp$12 = 0; _tmp$13 = 0; lo = _tmp$12; hi = _tmp$13;
  26652. _tuple$4 = p.parseClassChar(t, s); lo = _tuple$4[0]; t = _tuple$4[1]; err$2 = _tuple$4[2];
  26653. if (!($interfaceIsEqual(err$2, $ifaceNil))) {
  26654. _tmp$14 = ""; _tmp$15 = err$2; rest = _tmp$14; err = _tmp$15;
  26655. return [rest, err];
  26656. }
  26657. hi = lo;
  26658. if (t.length >= 2 && (t.charCodeAt(0) === 45) && !((t.charCodeAt(1) === 93))) {
  26659. t = t.substring(1);
  26660. _tuple$5 = p.parseClassChar(t, s); hi = _tuple$5[0]; t = _tuple$5[1]; err$2 = _tuple$5[2];
  26661. if (!($interfaceIsEqual(err$2, $ifaceNil))) {
  26662. _tmp$16 = ""; _tmp$17 = err$2; rest = _tmp$16; err = _tmp$17;
  26663. return [rest, err];
  26664. }
  26665. if (hi < lo) {
  26666. rng = rng.substring(0, (rng.length - t.length >> 0));
  26667. _tmp$18 = ""; _tmp$19 = new Error.ptr("invalid character class range", rng); rest = _tmp$18; err = _tmp$19;
  26668. return [rest, err];
  26669. }
  26670. }
  26671. if (((p.flags & 1) >>> 0) === 0) {
  26672. class$1 = appendRange(class$1, lo, hi);
  26673. } else {
  26674. class$1 = appendFoldedRange(class$1, lo, hi);
  26675. }
  26676. /* } */ $s = 1; continue; case 2:
  26677. t = t.substring(1);
  26678. re.Rune = class$1;
  26679. _r$3 = cleanClass((re.$ptr_Rune || (re.$ptr_Rune = new ptrType$1(function() { return this.$target.Rune; }, function($v) { this.$target.Rune = $v; }, re)))); /* */ $s = 12; case 12: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  26680. class$1 = _r$3;
  26681. if (sign < 0) {
  26682. class$1 = negateClass(class$1);
  26683. }
  26684. re.Rune = class$1;
  26685. p.push(re);
  26686. _tmp$20 = t; _tmp$21 = $ifaceNil; rest = _tmp$20; err = _tmp$21;
  26687. return [rest, err];
  26688. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: parser.ptr.prototype.parseClass }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$10 = _tmp$10; $f._tmp$11 = _tmp$11; $f._tmp$12 = _tmp$12; $f._tmp$13 = _tmp$13; $f._tmp$14 = _tmp$14; $f._tmp$15 = _tmp$15; $f._tmp$16 = _tmp$16; $f._tmp$17 = _tmp$17; $f._tmp$18 = _tmp$18; $f._tmp$19 = _tmp$19; $f._tmp$2 = _tmp$2; $f._tmp$20 = _tmp$20; $f._tmp$21 = _tmp$21; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tmp$6 = _tmp$6; $f._tmp$7 = _tmp$7; $f._tmp$8 = _tmp$8; $f._tmp$9 = _tmp$9; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f._tuple$4 = _tuple$4; $f._tuple$5 = _tuple$5; $f.class$1 = class$1; $f.err = err; $f.err$1 = err$1; $f.err$2 = err$2; $f.first = first; $f.hi = hi; $f.lo = lo; $f.nclass = nclass; $f.nclass$1 = nclass$1; $f.nclass$2 = nclass$2; $f.nt = nt; $f.nt$1 = nt$1; $f.nt$2 = nt$2; $f.p = p; $f.re = re; $f.rest = rest; $f.rng = rng; $f.s = s; $f.sign = sign; $f.size = size; $f.t = t; $f.$s = $s; $f.$r = $r; return $f;
  26689. };
  26690. parser.prototype.parseClass = function(s) { return this.$val.parseClass(s); };
  26691. cleanClass = function(rp) {
  26692. var $ptr, _tmp, _tmp$1, hi, i, lo, r, rp, w, x, x$1, x$2, x$3, x$4, x$5, $s, $r;
  26693. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; hi = $f.hi; i = $f.i; lo = $f.lo; r = $f.r; rp = $f.rp; w = $f.w; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; x$3 = $f.x$3; x$4 = $f.x$4; x$5 = $f.x$5; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  26694. $r = sort.Sort((x = new ranges.ptr(rp), new x.constructor.elem(x))); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  26695. r = rp.$get();
  26696. if (r.$length < 2) {
  26697. return r;
  26698. }
  26699. w = 2;
  26700. i = 2;
  26701. while (true) {
  26702. if (!(i < r.$length)) { break; }
  26703. _tmp = ((i < 0 || i >= r.$length) ? $throwRuntimeError("index out of range") : r.$array[r.$offset + i]); _tmp$1 = (x$1 = i + 1 >> 0, ((x$1 < 0 || x$1 >= r.$length) ? $throwRuntimeError("index out of range") : r.$array[r.$offset + x$1])); lo = _tmp; hi = _tmp$1;
  26704. if (lo <= ((x$2 = w - 1 >> 0, ((x$2 < 0 || x$2 >= r.$length) ? $throwRuntimeError("index out of range") : r.$array[r.$offset + x$2])) + 1 >> 0)) {
  26705. if (hi > (x$3 = w - 1 >> 0, ((x$3 < 0 || x$3 >= r.$length) ? $throwRuntimeError("index out of range") : r.$array[r.$offset + x$3]))) {
  26706. (x$4 = w - 1 >> 0, ((x$4 < 0 || x$4 >= r.$length) ? $throwRuntimeError("index out of range") : r.$array[r.$offset + x$4] = hi));
  26707. }
  26708. i = i + (2) >> 0;
  26709. continue;
  26710. }
  26711. ((w < 0 || w >= r.$length) ? $throwRuntimeError("index out of range") : r.$array[r.$offset + w] = lo);
  26712. (x$5 = w + 1 >> 0, ((x$5 < 0 || x$5 >= r.$length) ? $throwRuntimeError("index out of range") : r.$array[r.$offset + x$5] = hi));
  26713. w = w + (2) >> 0;
  26714. i = i + (2) >> 0;
  26715. }
  26716. return $subslice(r, 0, w);
  26717. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: cleanClass }; } $f.$ptr = $ptr; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f.hi = hi; $f.i = i; $f.lo = lo; $f.r = r; $f.rp = rp; $f.w = w; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.x$3 = x$3; $f.x$4 = x$4; $f.x$5 = x$5; $f.$s = $s; $f.$r = $r; return $f;
  26718. };
  26719. appendLiteral = function(r, x, flags) {
  26720. var $ptr, flags, r, x;
  26721. if (!((((flags & 1) >>> 0) === 0))) {
  26722. return appendFoldedRange(r, x, x);
  26723. }
  26724. return appendRange(r, x, x);
  26725. };
  26726. appendRange = function(r, lo, hi) {
  26727. var $ptr, _tmp, _tmp$1, hi, i, lo, n, r, rhi, rlo, x, x$1, x$2, x$3;
  26728. n = r.$length;
  26729. i = 2;
  26730. while (true) {
  26731. if (!(i <= 4)) { break; }
  26732. if (n >= i) {
  26733. _tmp = (x = n - i >> 0, ((x < 0 || x >= r.$length) ? $throwRuntimeError("index out of range") : r.$array[r.$offset + x])); _tmp$1 = (x$1 = (n - i >> 0) + 1 >> 0, ((x$1 < 0 || x$1 >= r.$length) ? $throwRuntimeError("index out of range") : r.$array[r.$offset + x$1])); rlo = _tmp; rhi = _tmp$1;
  26734. if (lo <= (rhi + 1 >> 0) && rlo <= (hi + 1 >> 0)) {
  26735. if (lo < rlo) {
  26736. (x$2 = n - i >> 0, ((x$2 < 0 || x$2 >= r.$length) ? $throwRuntimeError("index out of range") : r.$array[r.$offset + x$2] = lo));
  26737. }
  26738. if (hi > rhi) {
  26739. (x$3 = (n - i >> 0) + 1 >> 0, ((x$3 < 0 || x$3 >= r.$length) ? $throwRuntimeError("index out of range") : r.$array[r.$offset + x$3] = hi));
  26740. }
  26741. return r;
  26742. }
  26743. }
  26744. i = i + (2) >> 0;
  26745. }
  26746. return $append(r, lo, hi);
  26747. };
  26748. appendFoldedRange = function(r, lo, hi) {
  26749. var $ptr, c, f, hi, lo, r;
  26750. if (lo <= 65 && hi >= 71903) {
  26751. return appendRange(r, lo, hi);
  26752. }
  26753. if (hi < 65 || lo > 71903) {
  26754. return appendRange(r, lo, hi);
  26755. }
  26756. if (lo < 65) {
  26757. r = appendRange(r, lo, 64);
  26758. lo = 65;
  26759. }
  26760. if (hi > 71903) {
  26761. r = appendRange(r, 71904, hi);
  26762. hi = 71903;
  26763. }
  26764. c = lo;
  26765. while (true) {
  26766. if (!(c <= hi)) { break; }
  26767. r = appendRange(r, c, c);
  26768. f = unicode.SimpleFold(c);
  26769. while (true) {
  26770. if (!(!((f === c)))) { break; }
  26771. r = appendRange(r, f, f);
  26772. f = unicode.SimpleFold(f);
  26773. }
  26774. c = c + (1) >> 0;
  26775. }
  26776. return r;
  26777. };
  26778. appendClass = function(r, x) {
  26779. var $ptr, i, r, x, x$1;
  26780. i = 0;
  26781. while (true) {
  26782. if (!(i < x.$length)) { break; }
  26783. r = appendRange(r, ((i < 0 || i >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + i]), (x$1 = i + 1 >> 0, ((x$1 < 0 || x$1 >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + x$1])));
  26784. i = i + (2) >> 0;
  26785. }
  26786. return r;
  26787. };
  26788. appendFoldedClass = function(r, x) {
  26789. var $ptr, i, r, x, x$1;
  26790. i = 0;
  26791. while (true) {
  26792. if (!(i < x.$length)) { break; }
  26793. r = appendFoldedRange(r, ((i < 0 || i >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + i]), (x$1 = i + 1 >> 0, ((x$1 < 0 || x$1 >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + x$1])));
  26794. i = i + (2) >> 0;
  26795. }
  26796. return r;
  26797. };
  26798. appendNegatedClass = function(r, x) {
  26799. var $ptr, _tmp, _tmp$1, hi, i, lo, nextLo, r, x, x$1;
  26800. nextLo = 0;
  26801. i = 0;
  26802. while (true) {
  26803. if (!(i < x.$length)) { break; }
  26804. _tmp = ((i < 0 || i >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + i]); _tmp$1 = (x$1 = i + 1 >> 0, ((x$1 < 0 || x$1 >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + x$1])); lo = _tmp; hi = _tmp$1;
  26805. if (nextLo <= (lo - 1 >> 0)) {
  26806. r = appendRange(r, nextLo, lo - 1 >> 0);
  26807. }
  26808. nextLo = hi + 1 >> 0;
  26809. i = i + (2) >> 0;
  26810. }
  26811. if (nextLo <= 1114111) {
  26812. r = appendRange(r, nextLo, 1114111);
  26813. }
  26814. return r;
  26815. };
  26816. appendTable = function(r, x) {
  26817. var $ptr, _i, _i$1, _ref, _ref$1, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, c, c$1, hi, hi$1, lo, lo$1, r, stride, stride$1, x, xr, xr$1;
  26818. _ref = x.R16;
  26819. _i = 0;
  26820. while (true) {
  26821. if (!(_i < _ref.$length)) { break; }
  26822. xr = $clone(((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]), unicode.Range16);
  26823. _tmp = (xr.Lo >> 0); _tmp$1 = (xr.Hi >> 0); _tmp$2 = (xr.Stride >> 0); lo = _tmp; hi = _tmp$1; stride = _tmp$2;
  26824. if (stride === 1) {
  26825. r = appendRange(r, lo, hi);
  26826. _i++;
  26827. continue;
  26828. }
  26829. c = lo;
  26830. while (true) {
  26831. if (!(c <= hi)) { break; }
  26832. r = appendRange(r, c, c);
  26833. c = c + (stride) >> 0;
  26834. }
  26835. _i++;
  26836. }
  26837. _ref$1 = x.R32;
  26838. _i$1 = 0;
  26839. while (true) {
  26840. if (!(_i$1 < _ref$1.$length)) { break; }
  26841. xr$1 = $clone(((_i$1 < 0 || _i$1 >= _ref$1.$length) ? $throwRuntimeError("index out of range") : _ref$1.$array[_ref$1.$offset + _i$1]), unicode.Range32);
  26842. _tmp$3 = (xr$1.Lo >> 0); _tmp$4 = (xr$1.Hi >> 0); _tmp$5 = (xr$1.Stride >> 0); lo$1 = _tmp$3; hi$1 = _tmp$4; stride$1 = _tmp$5;
  26843. if (stride$1 === 1) {
  26844. r = appendRange(r, lo$1, hi$1);
  26845. _i$1++;
  26846. continue;
  26847. }
  26848. c$1 = lo$1;
  26849. while (true) {
  26850. if (!(c$1 <= hi$1)) { break; }
  26851. r = appendRange(r, c$1, c$1);
  26852. c$1 = c$1 + (stride$1) >> 0;
  26853. }
  26854. _i$1++;
  26855. }
  26856. return r;
  26857. };
  26858. appendNegatedTable = function(r, x) {
  26859. var $ptr, _i, _i$1, _ref, _ref$1, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, c, c$1, hi, hi$1, lo, lo$1, nextLo, r, stride, stride$1, x, xr, xr$1;
  26860. nextLo = 0;
  26861. _ref = x.R16;
  26862. _i = 0;
  26863. while (true) {
  26864. if (!(_i < _ref.$length)) { break; }
  26865. xr = $clone(((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]), unicode.Range16);
  26866. _tmp = (xr.Lo >> 0); _tmp$1 = (xr.Hi >> 0); _tmp$2 = (xr.Stride >> 0); lo = _tmp; hi = _tmp$1; stride = _tmp$2;
  26867. if (stride === 1) {
  26868. if (nextLo <= (lo - 1 >> 0)) {
  26869. r = appendRange(r, nextLo, lo - 1 >> 0);
  26870. }
  26871. nextLo = hi + 1 >> 0;
  26872. _i++;
  26873. continue;
  26874. }
  26875. c = lo;
  26876. while (true) {
  26877. if (!(c <= hi)) { break; }
  26878. if (nextLo <= (c - 1 >> 0)) {
  26879. r = appendRange(r, nextLo, c - 1 >> 0);
  26880. }
  26881. nextLo = c + 1 >> 0;
  26882. c = c + (stride) >> 0;
  26883. }
  26884. _i++;
  26885. }
  26886. _ref$1 = x.R32;
  26887. _i$1 = 0;
  26888. while (true) {
  26889. if (!(_i$1 < _ref$1.$length)) { break; }
  26890. xr$1 = $clone(((_i$1 < 0 || _i$1 >= _ref$1.$length) ? $throwRuntimeError("index out of range") : _ref$1.$array[_ref$1.$offset + _i$1]), unicode.Range32);
  26891. _tmp$3 = (xr$1.Lo >> 0); _tmp$4 = (xr$1.Hi >> 0); _tmp$5 = (xr$1.Stride >> 0); lo$1 = _tmp$3; hi$1 = _tmp$4; stride$1 = _tmp$5;
  26892. if (stride$1 === 1) {
  26893. if (nextLo <= (lo$1 - 1 >> 0)) {
  26894. r = appendRange(r, nextLo, lo$1 - 1 >> 0);
  26895. }
  26896. nextLo = hi$1 + 1 >> 0;
  26897. _i$1++;
  26898. continue;
  26899. }
  26900. c$1 = lo$1;
  26901. while (true) {
  26902. if (!(c$1 <= hi$1)) { break; }
  26903. if (nextLo <= (c$1 - 1 >> 0)) {
  26904. r = appendRange(r, nextLo, c$1 - 1 >> 0);
  26905. }
  26906. nextLo = c$1 + 1 >> 0;
  26907. c$1 = c$1 + (stride$1) >> 0;
  26908. }
  26909. _i$1++;
  26910. }
  26911. if (nextLo <= 1114111) {
  26912. r = appendRange(r, nextLo, 1114111);
  26913. }
  26914. return r;
  26915. };
  26916. negateClass = function(r) {
  26917. var $ptr, _tmp, _tmp$1, hi, i, lo, nextLo, r, w, x, x$1;
  26918. nextLo = 0;
  26919. w = 0;
  26920. i = 0;
  26921. while (true) {
  26922. if (!(i < r.$length)) { break; }
  26923. _tmp = ((i < 0 || i >= r.$length) ? $throwRuntimeError("index out of range") : r.$array[r.$offset + i]); _tmp$1 = (x = i + 1 >> 0, ((x < 0 || x >= r.$length) ? $throwRuntimeError("index out of range") : r.$array[r.$offset + x])); lo = _tmp; hi = _tmp$1;
  26924. if (nextLo <= (lo - 1 >> 0)) {
  26925. ((w < 0 || w >= r.$length) ? $throwRuntimeError("index out of range") : r.$array[r.$offset + w] = nextLo);
  26926. (x$1 = w + 1 >> 0, ((x$1 < 0 || x$1 >= r.$length) ? $throwRuntimeError("index out of range") : r.$array[r.$offset + x$1] = lo - 1 >> 0));
  26927. w = w + (2) >> 0;
  26928. }
  26929. nextLo = hi + 1 >> 0;
  26930. i = i + (2) >> 0;
  26931. }
  26932. r = $subslice(r, 0, w);
  26933. if (nextLo <= 1114111) {
  26934. r = $append(r, nextLo, 1114111);
  26935. }
  26936. return r;
  26937. };
  26938. ranges.ptr.prototype.Less = function(i, j) {
  26939. var $ptr, i, j, p, ra, x, x$1;
  26940. ra = $clone(this, ranges);
  26941. p = ra.p.$get();
  26942. i = i * (2) >> 0;
  26943. j = j * (2) >> 0;
  26944. return ((i < 0 || i >= p.$length) ? $throwRuntimeError("index out of range") : p.$array[p.$offset + i]) < ((j < 0 || j >= p.$length) ? $throwRuntimeError("index out of range") : p.$array[p.$offset + j]) || (((i < 0 || i >= p.$length) ? $throwRuntimeError("index out of range") : p.$array[p.$offset + i]) === ((j < 0 || j >= p.$length) ? $throwRuntimeError("index out of range") : p.$array[p.$offset + j])) && (x = i + 1 >> 0, ((x < 0 || x >= p.$length) ? $throwRuntimeError("index out of range") : p.$array[p.$offset + x])) > (x$1 = j + 1 >> 0, ((x$1 < 0 || x$1 >= p.$length) ? $throwRuntimeError("index out of range") : p.$array[p.$offset + x$1]));
  26945. };
  26946. ranges.prototype.Less = function(i, j) { return this.$val.Less(i, j); };
  26947. ranges.ptr.prototype.Len = function() {
  26948. var $ptr, _q, ra;
  26949. ra = $clone(this, ranges);
  26950. return (_q = ra.p.$get().$length / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero"));
  26951. };
  26952. ranges.prototype.Len = function() { return this.$val.Len(); };
  26953. ranges.ptr.prototype.Swap = function(i, j) {
  26954. var $ptr, _tmp, _tmp$1, _tmp$2, _tmp$3, i, j, p, ra, x, x$1, x$2, x$3;
  26955. ra = $clone(this, ranges);
  26956. p = ra.p.$get();
  26957. i = i * (2) >> 0;
  26958. j = j * (2) >> 0;
  26959. _tmp = ((j < 0 || j >= p.$length) ? $throwRuntimeError("index out of range") : p.$array[p.$offset + j]); _tmp$1 = (x = j + 1 >> 0, ((x < 0 || x >= p.$length) ? $throwRuntimeError("index out of range") : p.$array[p.$offset + x])); _tmp$2 = ((i < 0 || i >= p.$length) ? $throwRuntimeError("index out of range") : p.$array[p.$offset + i]); _tmp$3 = (x$1 = i + 1 >> 0, ((x$1 < 0 || x$1 >= p.$length) ? $throwRuntimeError("index out of range") : p.$array[p.$offset + x$1])); ((i < 0 || i >= p.$length) ? $throwRuntimeError("index out of range") : p.$array[p.$offset + i] = _tmp); (x$2 = i + 1 >> 0, ((x$2 < 0 || x$2 >= p.$length) ? $throwRuntimeError("index out of range") : p.$array[p.$offset + x$2] = _tmp$1)); ((j < 0 || j >= p.$length) ? $throwRuntimeError("index out of range") : p.$array[p.$offset + j] = _tmp$2); (x$3 = j + 1 >> 0, ((x$3 < 0 || x$3 >= p.$length) ? $throwRuntimeError("index out of range") : p.$array[p.$offset + x$3] = _tmp$3));
  26960. };
  26961. ranges.prototype.Swap = function(i, j) { return this.$val.Swap(i, j); };
  26962. checkUTF8 = function(s) {
  26963. var $ptr, _tuple, rune, s, size;
  26964. while (true) {
  26965. if (!(!(s === ""))) { break; }
  26966. _tuple = utf8.DecodeRuneInString(s); rune = _tuple[0]; size = _tuple[1];
  26967. if ((rune === 65533) && (size === 1)) {
  26968. return new Error.ptr("invalid UTF-8", s);
  26969. }
  26970. s = s.substring(size);
  26971. }
  26972. return $ifaceNil;
  26973. };
  26974. nextRune = function(s) {
  26975. var $ptr, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tuple, c, err, s, size, t;
  26976. c = 0;
  26977. t = "";
  26978. err = $ifaceNil;
  26979. _tuple = utf8.DecodeRuneInString(s); c = _tuple[0]; size = _tuple[1];
  26980. if ((c === 65533) && (size === 1)) {
  26981. _tmp = 0; _tmp$1 = ""; _tmp$2 = new Error.ptr("invalid UTF-8", s); c = _tmp; t = _tmp$1; err = _tmp$2;
  26982. return [c, t, err];
  26983. }
  26984. _tmp$3 = c; _tmp$4 = s.substring(size); _tmp$5 = $ifaceNil; c = _tmp$3; t = _tmp$4; err = _tmp$5;
  26985. return [c, t, err];
  26986. };
  26987. isalnum = function(c) {
  26988. var $ptr, c;
  26989. return 48 <= c && c <= 57 || 65 <= c && c <= 90 || 97 <= c && c <= 122;
  26990. };
  26991. unhex = function(c) {
  26992. var $ptr, c;
  26993. if (48 <= c && c <= 57) {
  26994. return c - 48 >> 0;
  26995. }
  26996. if (97 <= c && c <= 102) {
  26997. return (c - 97 >> 0) + 10 >> 0;
  26998. }
  26999. if (65 <= c && c <= 70) {
  27000. return (c - 65 >> 0) + 10 >> 0;
  27001. }
  27002. return -1;
  27003. };
  27004. InstOp.prototype.String = function() {
  27005. var $ptr, i;
  27006. i = this.$val;
  27007. if ((i >>> 0) >= (instOpNames.$length >>> 0)) {
  27008. return "";
  27009. }
  27010. return ((i < 0 || i >= instOpNames.$length) ? $throwRuntimeError("index out of range") : instOpNames.$array[instOpNames.$offset + i]);
  27011. };
  27012. $ptrType(InstOp).prototype.String = function() { return new InstOp(this.$get()).String(); };
  27013. EmptyOpContext = function(r1, r2) {
  27014. var $ptr, boundary, op, r1, r2;
  27015. op = 32;
  27016. boundary = 0;
  27017. if (IsWordChar(r1)) {
  27018. boundary = 1;
  27019. } else if (r1 === 10) {
  27020. op = (op | (1)) >>> 0;
  27021. } else if (r1 < 0) {
  27022. op = (op | (5)) >>> 0;
  27023. }
  27024. if (IsWordChar(r2)) {
  27025. boundary = (boundary ^ (1)) << 24 >>> 24;
  27026. } else if (r2 === 10) {
  27027. op = (op | (2)) >>> 0;
  27028. } else if (r2 < 0) {
  27029. op = (op | (10)) >>> 0;
  27030. }
  27031. if (!((boundary === 0))) {
  27032. op = (op ^ (48)) << 24 >>> 24;
  27033. }
  27034. return op;
  27035. };
  27036. $pkg.EmptyOpContext = EmptyOpContext;
  27037. IsWordChar = function(r) {
  27038. var $ptr, r;
  27039. return 65 <= r && r <= 90 || 97 <= r && r <= 122 || 48 <= r && r <= 57 || (r === 95);
  27040. };
  27041. $pkg.IsWordChar = IsWordChar;
  27042. Prog.ptr.prototype.String = function() {
  27043. var $ptr, b, p;
  27044. p = this;
  27045. b = $clone(new bytes.Buffer.ptr(), bytes.Buffer);
  27046. dumpProg(b, p);
  27047. return b.String();
  27048. };
  27049. Prog.prototype.String = function() { return this.$val.String(); };
  27050. Prog.ptr.prototype.skipNop = function(pc) {
  27051. var $ptr, i, p, pc, x, x$1;
  27052. p = this;
  27053. i = (x = p.Inst, ((pc < 0 || pc >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + pc]));
  27054. while (true) {
  27055. if (!((i.Op === 6) || (i.Op === 2))) { break; }
  27056. pc = i.Out;
  27057. i = (x$1 = p.Inst, ((pc < 0 || pc >= x$1.$length) ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + pc]));
  27058. }
  27059. return [i, pc];
  27060. };
  27061. Prog.prototype.skipNop = function(pc) { return this.$val.skipNop(pc); };
  27062. Inst.ptr.prototype.op = function() {
  27063. var $ptr, _ref, i, op;
  27064. i = this;
  27065. op = i.Op;
  27066. _ref = op;
  27067. if (_ref === 8 || _ref === 9 || _ref === 10) {
  27068. op = 7;
  27069. }
  27070. return op;
  27071. };
  27072. Inst.prototype.op = function() { return this.$val.op(); };
  27073. Prog.ptr.prototype.Prefix = function() {
  27074. var $ptr, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, _tuple$1, buf, complete, i, p, prefix, x;
  27075. prefix = "";
  27076. complete = false;
  27077. p = this;
  27078. _tuple = p.skipNop((p.Start >>> 0)); i = _tuple[0];
  27079. if (!((i.op() === 7)) || !((i.Rune.$length === 1))) {
  27080. _tmp = ""; _tmp$1 = i.Op === 4; prefix = _tmp; complete = _tmp$1;
  27081. return [prefix, complete];
  27082. }
  27083. buf = $clone(new bytes.Buffer.ptr(), bytes.Buffer);
  27084. while (true) {
  27085. if (!((i.op() === 7) && (i.Rune.$length === 1) && ((((i.Arg << 16 >>> 16) & 1) >>> 0) === 0))) { break; }
  27086. buf.WriteRune((x = i.Rune, (0 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 0])));
  27087. _tuple$1 = p.skipNop(i.Out); i = _tuple$1[0];
  27088. }
  27089. _tmp$2 = buf.String(); _tmp$3 = i.Op === 4; prefix = _tmp$2; complete = _tmp$3;
  27090. return [prefix, complete];
  27091. };
  27092. Prog.prototype.Prefix = function() { return this.$val.Prefix(); };
  27093. Prog.ptr.prototype.StartCond = function() {
  27094. var $ptr, _ref, flag, i, p, pc, x, x$1;
  27095. p = this;
  27096. flag = 0;
  27097. pc = (p.Start >>> 0);
  27098. i = (x = p.Inst, ((pc < 0 || pc >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + pc]));
  27099. Loop:
  27100. while (true) {
  27101. _ref = i.Op;
  27102. if (_ref === 3) {
  27103. flag = (flag | ((i.Arg << 24 >>> 24))) >>> 0;
  27104. } else if (_ref === 5) {
  27105. return 255;
  27106. } else if (_ref === 2 || _ref === 6) {
  27107. } else {
  27108. break Loop;
  27109. }
  27110. pc = i.Out;
  27111. i = (x$1 = p.Inst, ((pc < 0 || pc >= x$1.$length) ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + pc]));
  27112. }
  27113. return flag;
  27114. };
  27115. Prog.prototype.StartCond = function() { return this.$val.StartCond(); };
  27116. Inst.ptr.prototype.MatchRune = function(r) {
  27117. var $ptr, i, r;
  27118. i = this;
  27119. return !((i.MatchRunePos(r) === -1));
  27120. };
  27121. Inst.prototype.MatchRune = function(r) { return this.$val.MatchRune(r); };
  27122. Inst.ptr.prototype.MatchRunePos = function(r) {
  27123. var $ptr, _q, _q$1, _q$2, c, hi, i, j, lo, m, r, r0, r1, rune, x, x$1, x$2;
  27124. i = this;
  27125. rune = i.Rune;
  27126. if (rune.$length === 1) {
  27127. r0 = (0 >= rune.$length ? $throwRuntimeError("index out of range") : rune.$array[rune.$offset + 0]);
  27128. if (r === r0) {
  27129. return 0;
  27130. }
  27131. if (!(((((i.Arg << 16 >>> 16) & 1) >>> 0) === 0))) {
  27132. r1 = unicode.SimpleFold(r0);
  27133. while (true) {
  27134. if (!(!((r1 === r0)))) { break; }
  27135. if (r === r1) {
  27136. return 0;
  27137. }
  27138. r1 = unicode.SimpleFold(r1);
  27139. }
  27140. }
  27141. return -1;
  27142. }
  27143. j = 0;
  27144. while (true) {
  27145. if (!(j < rune.$length && j <= 8)) { break; }
  27146. if (r < ((j < 0 || j >= rune.$length) ? $throwRuntimeError("index out of range") : rune.$array[rune.$offset + j])) {
  27147. return -1;
  27148. }
  27149. if (r <= (x = j + 1 >> 0, ((x < 0 || x >= rune.$length) ? $throwRuntimeError("index out of range") : rune.$array[rune.$offset + x]))) {
  27150. return (_q = j / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero"));
  27151. }
  27152. j = j + (2) >> 0;
  27153. }
  27154. lo = 0;
  27155. hi = (_q$1 = rune.$length / 2, (_q$1 === _q$1 && _q$1 !== 1/0 && _q$1 !== -1/0) ? _q$1 >> 0 : $throwRuntimeError("integer divide by zero"));
  27156. while (true) {
  27157. if (!(lo < hi)) { break; }
  27158. m = lo + (_q$2 = ((hi - lo >> 0)) / 2, (_q$2 === _q$2 && _q$2 !== 1/0 && _q$2 !== -1/0) ? _q$2 >> 0 : $throwRuntimeError("integer divide by zero")) >> 0;
  27159. c = (x$1 = 2 * m >> 0, ((x$1 < 0 || x$1 >= rune.$length) ? $throwRuntimeError("index out of range") : rune.$array[rune.$offset + x$1]));
  27160. if (c <= r) {
  27161. if (r <= (x$2 = (2 * m >> 0) + 1 >> 0, ((x$2 < 0 || x$2 >= rune.$length) ? $throwRuntimeError("index out of range") : rune.$array[rune.$offset + x$2]))) {
  27162. return m;
  27163. }
  27164. lo = m + 1 >> 0;
  27165. } else {
  27166. hi = m;
  27167. }
  27168. }
  27169. return -1;
  27170. };
  27171. Inst.prototype.MatchRunePos = function(r) { return this.$val.MatchRunePos(r); };
  27172. wordRune = function(r) {
  27173. var $ptr, r;
  27174. return (r === 95) || (65 <= r && r <= 90) || (97 <= r && r <= 122) || (48 <= r && r <= 57);
  27175. };
  27176. Inst.ptr.prototype.MatchEmptyWidth = function(before, after) {
  27177. var $ptr, _ref, after, before, i;
  27178. i = this;
  27179. _ref = (i.Arg << 24 >>> 24);
  27180. if (_ref === 1) {
  27181. return (before === 10) || (before === -1);
  27182. } else if (_ref === 2) {
  27183. return (after === 10) || (after === -1);
  27184. } else if (_ref === 4) {
  27185. return before === -1;
  27186. } else if (_ref === 8) {
  27187. return after === -1;
  27188. } else if (_ref === 16) {
  27189. return !(wordRune(before) === wordRune(after));
  27190. } else if (_ref === 32) {
  27191. return wordRune(before) === wordRune(after);
  27192. }
  27193. $panic(new $String("unknown empty width arg"));
  27194. };
  27195. Inst.prototype.MatchEmptyWidth = function(before, after) { return this.$val.MatchEmptyWidth(before, after); };
  27196. Inst.ptr.prototype.String = function() {
  27197. var $ptr, b, i;
  27198. i = this;
  27199. b = $clone(new bytes.Buffer.ptr(), bytes.Buffer);
  27200. dumpInst(b, i);
  27201. return b.String();
  27202. };
  27203. Inst.prototype.String = function() { return this.$val.String(); };
  27204. bw = function(b, args) {
  27205. var $ptr, _i, _ref, args, b, s;
  27206. _ref = args;
  27207. _i = 0;
  27208. while (true) {
  27209. if (!(_i < _ref.$length)) { break; }
  27210. s = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]);
  27211. b.WriteString(s);
  27212. _i++;
  27213. }
  27214. };
  27215. dumpProg = function(b, p) {
  27216. var $ptr, _i, _ref, b, i, j, p, pc, x;
  27217. _ref = p.Inst;
  27218. _i = 0;
  27219. while (true) {
  27220. if (!(_i < _ref.$length)) { break; }
  27221. j = _i;
  27222. i = (x = p.Inst, ((j < 0 || j >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + j]));
  27223. pc = strconv.Itoa(j);
  27224. if (pc.length < 3) {
  27225. b.WriteString(" ".substring(pc.length));
  27226. }
  27227. if (j === p.Start) {
  27228. pc = pc + ("*");
  27229. }
  27230. bw(b, new sliceType$3([pc, "\t"]));
  27231. dumpInst(b, i);
  27232. bw(b, new sliceType$3(["\n"]));
  27233. _i++;
  27234. }
  27235. };
  27236. u32 = function(i) {
  27237. var $ptr, i;
  27238. return strconv.FormatUint(new $Uint64(0, i), 10);
  27239. };
  27240. dumpInst = function(b, i) {
  27241. var $ptr, _ref, b, i;
  27242. _ref = i.Op;
  27243. if (_ref === 0) {
  27244. bw(b, new sliceType$3(["alt -> ", u32(i.Out), ", ", u32(i.Arg)]));
  27245. } else if (_ref === 1) {
  27246. bw(b, new sliceType$3(["altmatch -> ", u32(i.Out), ", ", u32(i.Arg)]));
  27247. } else if (_ref === 2) {
  27248. bw(b, new sliceType$3(["cap ", u32(i.Arg), " -> ", u32(i.Out)]));
  27249. } else if (_ref === 3) {
  27250. bw(b, new sliceType$3(["empty ", u32(i.Arg), " -> ", u32(i.Out)]));
  27251. } else if (_ref === 4) {
  27252. bw(b, new sliceType$3(["match"]));
  27253. } else if (_ref === 5) {
  27254. bw(b, new sliceType$3(["fail"]));
  27255. } else if (_ref === 6) {
  27256. bw(b, new sliceType$3(["nop -> ", u32(i.Out)]));
  27257. } else if (_ref === 7) {
  27258. if (i.Rune === sliceType.nil) {
  27259. bw(b, new sliceType$3(["rune <nil>"]));
  27260. }
  27261. bw(b, new sliceType$3(["rune ", strconv.QuoteToASCII($runesToString(i.Rune))]));
  27262. if (!(((((i.Arg << 16 >>> 16) & 1) >>> 0) === 0))) {
  27263. bw(b, new sliceType$3(["/i"]));
  27264. }
  27265. bw(b, new sliceType$3([" -> ", u32(i.Out)]));
  27266. } else if (_ref === 8) {
  27267. bw(b, new sliceType$3(["rune1 ", strconv.QuoteToASCII($runesToString(i.Rune)), " -> ", u32(i.Out)]));
  27268. } else if (_ref === 9) {
  27269. bw(b, new sliceType$3(["any -> ", u32(i.Out)]));
  27270. } else if (_ref === 10) {
  27271. bw(b, new sliceType$3(["anynotnl -> ", u32(i.Out)]));
  27272. }
  27273. };
  27274. Regexp.ptr.prototype.Equal = function(y) {
  27275. var $ptr, _i, _i$1, _ref, _ref$1, _ref$2, i, i$1, r, sub, x, x$1, x$2, x$3, x$4, x$5, x$6, x$7, x$8, y;
  27276. x = this;
  27277. if (x === ptrType.nil || y === ptrType.nil) {
  27278. return x === y;
  27279. }
  27280. if (!((x.Op === y.Op))) {
  27281. return false;
  27282. }
  27283. _ref = x.Op;
  27284. if (_ref === 10) {
  27285. if (!((((x.Flags & 256) >>> 0) === ((y.Flags & 256) >>> 0)))) {
  27286. return false;
  27287. }
  27288. } else if (_ref === 3 || _ref === 4) {
  27289. if (!((x.Rune.$length === y.Rune.$length))) {
  27290. return false;
  27291. }
  27292. _ref$1 = x.Rune;
  27293. _i = 0;
  27294. while (true) {
  27295. if (!(_i < _ref$1.$length)) { break; }
  27296. i = _i;
  27297. r = ((_i < 0 || _i >= _ref$1.$length) ? $throwRuntimeError("index out of range") : _ref$1.$array[_ref$1.$offset + _i]);
  27298. if (!((r === (x$1 = y.Rune, ((i < 0 || i >= x$1.$length) ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + i]))))) {
  27299. return false;
  27300. }
  27301. _i++;
  27302. }
  27303. } else if (_ref === 19 || _ref === 18) {
  27304. if (!((x.Sub.$length === y.Sub.$length))) {
  27305. return false;
  27306. }
  27307. _ref$2 = x.Sub;
  27308. _i$1 = 0;
  27309. while (true) {
  27310. if (!(_i$1 < _ref$2.$length)) { break; }
  27311. i$1 = _i$1;
  27312. sub = ((_i$1 < 0 || _i$1 >= _ref$2.$length) ? $throwRuntimeError("index out of range") : _ref$2.$array[_ref$2.$offset + _i$1]);
  27313. if (!sub.Equal((x$2 = y.Sub, ((i$1 < 0 || i$1 >= x$2.$length) ? $throwRuntimeError("index out of range") : x$2.$array[x$2.$offset + i$1])))) {
  27314. return false;
  27315. }
  27316. _i$1++;
  27317. }
  27318. } else if (_ref === 14 || _ref === 15 || _ref === 16) {
  27319. if (!((((x.Flags & 32) >>> 0) === ((y.Flags & 32) >>> 0))) || !(x$3 = x.Sub, (0 >= x$3.$length ? $throwRuntimeError("index out of range") : x$3.$array[x$3.$offset + 0])).Equal((x$4 = y.Sub, (0 >= x$4.$length ? $throwRuntimeError("index out of range") : x$4.$array[x$4.$offset + 0])))) {
  27320. return false;
  27321. }
  27322. } else if (_ref === 17) {
  27323. if (!((((x.Flags & 32) >>> 0) === ((y.Flags & 32) >>> 0))) || !((x.Min === y.Min)) || !((x.Max === y.Max)) || !(x$5 = x.Sub, (0 >= x$5.$length ? $throwRuntimeError("index out of range") : x$5.$array[x$5.$offset + 0])).Equal((x$6 = y.Sub, (0 >= x$6.$length ? $throwRuntimeError("index out of range") : x$6.$array[x$6.$offset + 0])))) {
  27324. return false;
  27325. }
  27326. } else if (_ref === 13) {
  27327. if (!((x.Cap === y.Cap)) || !(x.Name === y.Name) || !(x$7 = x.Sub, (0 >= x$7.$length ? $throwRuntimeError("index out of range") : x$7.$array[x$7.$offset + 0])).Equal((x$8 = y.Sub, (0 >= x$8.$length ? $throwRuntimeError("index out of range") : x$8.$array[x$8.$offset + 0])))) {
  27328. return false;
  27329. }
  27330. }
  27331. return true;
  27332. };
  27333. Regexp.prototype.Equal = function(y) { return this.$val.Equal(y); };
  27334. writeRegexp = function(b, re) {
  27335. var $ptr, _i, _i$1, _i$2, _r, _ref, _ref$1, _ref$2, _ref$3, _ref$4, _tmp, _tmp$1, _tmp$2, _tmp$3, b, hi, hi$1, i, i$1, i$2, lo, lo$1, r, re, sub, sub$1, sub$2, x, x$1, x$10, x$11, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9;
  27336. _ref = re.Op;
  27337. switch (0) { default: if (_ref === 1) {
  27338. b.WriteString("[^\\x00-\\x{10FFFF}]");
  27339. } else if (_ref === 2) {
  27340. b.WriteString("(?:)");
  27341. } else if (_ref === 3) {
  27342. if (!((((re.Flags & 1) >>> 0) === 0))) {
  27343. b.WriteString("(?i:");
  27344. }
  27345. _ref$1 = re.Rune;
  27346. _i = 0;
  27347. while (true) {
  27348. if (!(_i < _ref$1.$length)) { break; }
  27349. r = ((_i < 0 || _i >= _ref$1.$length) ? $throwRuntimeError("index out of range") : _ref$1.$array[_ref$1.$offset + _i]);
  27350. escape(b, r, false);
  27351. _i++;
  27352. }
  27353. if (!((((re.Flags & 1) >>> 0) === 0))) {
  27354. b.WriteString(")");
  27355. }
  27356. } else if (_ref === 4) {
  27357. if (!(((_r = re.Rune.$length % 2, _r === _r ? _r : $throwRuntimeError("integer divide by zero")) === 0))) {
  27358. b.WriteString("[invalid char class]");
  27359. break;
  27360. }
  27361. b.WriteRune(91);
  27362. if (re.Rune.$length === 0) {
  27363. b.WriteString("^\\x00-\\x{10FFFF}");
  27364. } else if (((x = re.Rune, (0 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 0])) === 0) && ((x$1 = re.Rune, x$2 = re.Rune.$length - 1 >> 0, ((x$2 < 0 || x$2 >= x$1.$length) ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + x$2])) === 1114111)) {
  27365. b.WriteRune(94);
  27366. i = 1;
  27367. while (true) {
  27368. if (!(i < (re.Rune.$length - 1 >> 0))) { break; }
  27369. _tmp = (x$3 = re.Rune, ((i < 0 || i >= x$3.$length) ? $throwRuntimeError("index out of range") : x$3.$array[x$3.$offset + i])) + 1 >> 0; _tmp$1 = (x$4 = re.Rune, x$5 = i + 1 >> 0, ((x$5 < 0 || x$5 >= x$4.$length) ? $throwRuntimeError("index out of range") : x$4.$array[x$4.$offset + x$5])) - 1 >> 0; lo = _tmp; hi = _tmp$1;
  27370. escape(b, lo, lo === 45);
  27371. if (!((lo === hi))) {
  27372. b.WriteRune(45);
  27373. escape(b, hi, hi === 45);
  27374. }
  27375. i = i + (2) >> 0;
  27376. }
  27377. } else {
  27378. i$1 = 0;
  27379. while (true) {
  27380. if (!(i$1 < re.Rune.$length)) { break; }
  27381. _tmp$2 = (x$6 = re.Rune, ((i$1 < 0 || i$1 >= x$6.$length) ? $throwRuntimeError("index out of range") : x$6.$array[x$6.$offset + i$1])); _tmp$3 = (x$7 = re.Rune, x$8 = i$1 + 1 >> 0, ((x$8 < 0 || x$8 >= x$7.$length) ? $throwRuntimeError("index out of range") : x$7.$array[x$7.$offset + x$8])); lo$1 = _tmp$2; hi$1 = _tmp$3;
  27382. escape(b, lo$1, lo$1 === 45);
  27383. if (!((lo$1 === hi$1))) {
  27384. b.WriteRune(45);
  27385. escape(b, hi$1, hi$1 === 45);
  27386. }
  27387. i$1 = i$1 + (2) >> 0;
  27388. }
  27389. }
  27390. b.WriteRune(93);
  27391. } else if (_ref === 5) {
  27392. b.WriteString("(?-s:.)");
  27393. } else if (_ref === 6) {
  27394. b.WriteString("(?s:.)");
  27395. } else if (_ref === 7) {
  27396. b.WriteRune(94);
  27397. } else if (_ref === 8) {
  27398. b.WriteRune(36);
  27399. } else if (_ref === 9) {
  27400. b.WriteString("\\A");
  27401. } else if (_ref === 10) {
  27402. if (!((((re.Flags & 256) >>> 0) === 0))) {
  27403. b.WriteString("(?-m:$)");
  27404. } else {
  27405. b.WriteString("\\z");
  27406. }
  27407. } else if (_ref === 11) {
  27408. b.WriteString("\\b");
  27409. } else if (_ref === 12) {
  27410. b.WriteString("\\B");
  27411. } else if (_ref === 13) {
  27412. if (!(re.Name === "")) {
  27413. b.WriteString("(?P<");
  27414. b.WriteString(re.Name);
  27415. b.WriteRune(62);
  27416. } else {
  27417. b.WriteRune(40);
  27418. }
  27419. if (!(((x$9 = re.Sub, (0 >= x$9.$length ? $throwRuntimeError("index out of range") : x$9.$array[x$9.$offset + 0])).Op === 2))) {
  27420. writeRegexp(b, (x$10 = re.Sub, (0 >= x$10.$length ? $throwRuntimeError("index out of range") : x$10.$array[x$10.$offset + 0])));
  27421. }
  27422. b.WriteRune(41);
  27423. } else if (_ref === 14 || _ref === 15 || _ref === 16 || _ref === 17) {
  27424. sub = (x$11 = re.Sub, (0 >= x$11.$length ? $throwRuntimeError("index out of range") : x$11.$array[x$11.$offset + 0]));
  27425. if (sub.Op > 13 || (sub.Op === 3) && sub.Rune.$length > 1) {
  27426. b.WriteString("(?:");
  27427. writeRegexp(b, sub);
  27428. b.WriteString(")");
  27429. } else {
  27430. writeRegexp(b, sub);
  27431. }
  27432. _ref$2 = re.Op;
  27433. if (_ref$2 === 14) {
  27434. b.WriteRune(42);
  27435. } else if (_ref$2 === 15) {
  27436. b.WriteRune(43);
  27437. } else if (_ref$2 === 16) {
  27438. b.WriteRune(63);
  27439. } else if (_ref$2 === 17) {
  27440. b.WriteRune(123);
  27441. b.WriteString(strconv.Itoa(re.Min));
  27442. if (!((re.Max === re.Min))) {
  27443. b.WriteRune(44);
  27444. if (re.Max >= 0) {
  27445. b.WriteString(strconv.Itoa(re.Max));
  27446. }
  27447. }
  27448. b.WriteRune(125);
  27449. }
  27450. if (!((((re.Flags & 32) >>> 0) === 0))) {
  27451. b.WriteRune(63);
  27452. }
  27453. } else if (_ref === 18) {
  27454. _ref$3 = re.Sub;
  27455. _i$1 = 0;
  27456. while (true) {
  27457. if (!(_i$1 < _ref$3.$length)) { break; }
  27458. sub$1 = ((_i$1 < 0 || _i$1 >= _ref$3.$length) ? $throwRuntimeError("index out of range") : _ref$3.$array[_ref$3.$offset + _i$1]);
  27459. if (sub$1.Op === 19) {
  27460. b.WriteString("(?:");
  27461. writeRegexp(b, sub$1);
  27462. b.WriteString(")");
  27463. } else {
  27464. writeRegexp(b, sub$1);
  27465. }
  27466. _i$1++;
  27467. }
  27468. } else if (_ref === 19) {
  27469. _ref$4 = re.Sub;
  27470. _i$2 = 0;
  27471. while (true) {
  27472. if (!(_i$2 < _ref$4.$length)) { break; }
  27473. i$2 = _i$2;
  27474. sub$2 = ((_i$2 < 0 || _i$2 >= _ref$4.$length) ? $throwRuntimeError("index out of range") : _ref$4.$array[_ref$4.$offset + _i$2]);
  27475. if (i$2 > 0) {
  27476. b.WriteRune(124);
  27477. }
  27478. writeRegexp(b, sub$2);
  27479. _i$2++;
  27480. }
  27481. } else {
  27482. b.WriteString("<invalid op" + strconv.Itoa((re.Op >> 0)) + ">");
  27483. } }
  27484. };
  27485. Regexp.ptr.prototype.String = function() {
  27486. var $ptr, b, re;
  27487. re = this;
  27488. b = $clone(new bytes.Buffer.ptr(), bytes.Buffer);
  27489. writeRegexp(b, re);
  27490. return b.String();
  27491. };
  27492. Regexp.prototype.String = function() { return this.$val.String(); };
  27493. escape = function(b, r, force) {
  27494. var $ptr, _ref, b, force, r, s;
  27495. if (unicode.IsPrint(r)) {
  27496. if (strings.IndexRune("\\.+*?()|[]{}^$", r) >= 0 || force) {
  27497. b.WriteRune(92);
  27498. }
  27499. b.WriteRune(r);
  27500. return;
  27501. }
  27502. _ref = r;
  27503. switch (0) { default: if (_ref === 7) {
  27504. b.WriteString("\\a");
  27505. } else if (_ref === 12) {
  27506. b.WriteString("\\f");
  27507. } else if (_ref === 10) {
  27508. b.WriteString("\\n");
  27509. } else if (_ref === 13) {
  27510. b.WriteString("\\r");
  27511. } else if (_ref === 9) {
  27512. b.WriteString("\\t");
  27513. } else if (_ref === 11) {
  27514. b.WriteString("\\v");
  27515. } else {
  27516. if (r < 256) {
  27517. b.WriteString("\\x");
  27518. s = strconv.FormatInt(new $Int64(0, r), 16);
  27519. if (s.length === 1) {
  27520. b.WriteRune(48);
  27521. }
  27522. b.WriteString(s);
  27523. break;
  27524. }
  27525. b.WriteString("\\x{");
  27526. b.WriteString(strconv.FormatInt(new $Int64(0, r), 16));
  27527. b.WriteString("}");
  27528. } }
  27529. };
  27530. Regexp.ptr.prototype.MaxCap = function() {
  27531. var $ptr, _i, _ref, m, n, re, sub;
  27532. re = this;
  27533. m = 0;
  27534. if (re.Op === 13) {
  27535. m = re.Cap;
  27536. }
  27537. _ref = re.Sub;
  27538. _i = 0;
  27539. while (true) {
  27540. if (!(_i < _ref.$length)) { break; }
  27541. sub = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]);
  27542. n = sub.MaxCap();
  27543. if (m < n) {
  27544. m = n;
  27545. }
  27546. _i++;
  27547. }
  27548. return m;
  27549. };
  27550. Regexp.prototype.MaxCap = function() { return this.$val.MaxCap(); };
  27551. Regexp.ptr.prototype.CapNames = function() {
  27552. var $ptr, names, re;
  27553. re = this;
  27554. names = $makeSlice(sliceType$3, (re.MaxCap() + 1 >> 0));
  27555. re.capNames(names);
  27556. return names;
  27557. };
  27558. Regexp.prototype.CapNames = function() { return this.$val.CapNames(); };
  27559. Regexp.ptr.prototype.capNames = function(names) {
  27560. var $ptr, _i, _ref, names, re, sub, x;
  27561. re = this;
  27562. if (re.Op === 13) {
  27563. (x = re.Cap, ((x < 0 || x >= names.$length) ? $throwRuntimeError("index out of range") : names.$array[names.$offset + x] = re.Name));
  27564. }
  27565. _ref = re.Sub;
  27566. _i = 0;
  27567. while (true) {
  27568. if (!(_i < _ref.$length)) { break; }
  27569. sub = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]);
  27570. sub.capNames(names);
  27571. _i++;
  27572. }
  27573. };
  27574. Regexp.prototype.capNames = function(names) { return this.$val.capNames(names); };
  27575. Regexp.ptr.prototype.Simplify = function() {
  27576. var $ptr, _i, _ref, _ref$1, i, i$1, i$2, i$3, nre, nre$1, nre2, nsub, prefix, re, sub, sub$1, sub$2, suffix, x, x$1;
  27577. re = this;
  27578. if (re === ptrType.nil) {
  27579. return ptrType.nil;
  27580. }
  27581. _ref = re.Op;
  27582. if (_ref === 13 || _ref === 18 || _ref === 19) {
  27583. nre = re;
  27584. _ref$1 = re.Sub;
  27585. _i = 0;
  27586. while (true) {
  27587. if (!(_i < _ref$1.$length)) { break; }
  27588. i = _i;
  27589. sub = ((_i < 0 || _i >= _ref$1.$length) ? $throwRuntimeError("index out of range") : _ref$1.$array[_ref$1.$offset + _i]);
  27590. nsub = sub.Simplify();
  27591. if (nre === re && !(nsub === sub)) {
  27592. nre = new Regexp.ptr();
  27593. $copy(nre, re, Regexp);
  27594. nre.Rune = sliceType.nil;
  27595. nre.Sub = $appendSlice($subslice(new sliceType$4(nre.Sub0), 0, 0), $subslice(re.Sub, 0, i));
  27596. }
  27597. if (!(nre === re)) {
  27598. nre.Sub = $append(nre.Sub, nsub);
  27599. }
  27600. _i++;
  27601. }
  27602. return nre;
  27603. } else if (_ref === 14 || _ref === 15 || _ref === 16) {
  27604. sub$1 = (x = re.Sub, (0 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 0])).Simplify();
  27605. return simplify1(re.Op, re.Flags, sub$1, re);
  27606. } else if (_ref === 17) {
  27607. if ((re.Min === 0) && (re.Max === 0)) {
  27608. return new Regexp.ptr(2, 0, sliceType$4.nil, arrayType.zero(), sliceType.nil, arrayType$1.zero(), 0, 0, 0, "");
  27609. }
  27610. sub$2 = (x$1 = re.Sub, (0 >= x$1.$length ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + 0])).Simplify();
  27611. if (re.Max === -1) {
  27612. if (re.Min === 0) {
  27613. return simplify1(14, re.Flags, sub$2, ptrType.nil);
  27614. }
  27615. if (re.Min === 1) {
  27616. return simplify1(15, re.Flags, sub$2, ptrType.nil);
  27617. }
  27618. nre$1 = new Regexp.ptr(18, 0, sliceType$4.nil, arrayType.zero(), sliceType.nil, arrayType$1.zero(), 0, 0, 0, "");
  27619. nre$1.Sub = $subslice(new sliceType$4(nre$1.Sub0), 0, 0);
  27620. i$1 = 0;
  27621. while (true) {
  27622. if (!(i$1 < (re.Min - 1 >> 0))) { break; }
  27623. nre$1.Sub = $append(nre$1.Sub, sub$2);
  27624. i$1 = i$1 + (1) >> 0;
  27625. }
  27626. nre$1.Sub = $append(nre$1.Sub, simplify1(15, re.Flags, sub$2, ptrType.nil));
  27627. return nre$1;
  27628. }
  27629. if ((re.Min === 1) && (re.Max === 1)) {
  27630. return sub$2;
  27631. }
  27632. prefix = ptrType.nil;
  27633. if (re.Min > 0) {
  27634. prefix = new Regexp.ptr(18, 0, sliceType$4.nil, arrayType.zero(), sliceType.nil, arrayType$1.zero(), 0, 0, 0, "");
  27635. prefix.Sub = $subslice(new sliceType$4(prefix.Sub0), 0, 0);
  27636. i$2 = 0;
  27637. while (true) {
  27638. if (!(i$2 < re.Min)) { break; }
  27639. prefix.Sub = $append(prefix.Sub, sub$2);
  27640. i$2 = i$2 + (1) >> 0;
  27641. }
  27642. }
  27643. if (re.Max > re.Min) {
  27644. suffix = simplify1(16, re.Flags, sub$2, ptrType.nil);
  27645. i$3 = re.Min + 1 >> 0;
  27646. while (true) {
  27647. if (!(i$3 < re.Max)) { break; }
  27648. nre2 = new Regexp.ptr(18, 0, sliceType$4.nil, arrayType.zero(), sliceType.nil, arrayType$1.zero(), 0, 0, 0, "");
  27649. nre2.Sub = $append($subslice(new sliceType$4(nre2.Sub0), 0, 0), sub$2, suffix);
  27650. suffix = simplify1(16, re.Flags, nre2, ptrType.nil);
  27651. i$3 = i$3 + (1) >> 0;
  27652. }
  27653. if (prefix === ptrType.nil) {
  27654. return suffix;
  27655. }
  27656. prefix.Sub = $append(prefix.Sub, suffix);
  27657. }
  27658. if (!(prefix === ptrType.nil)) {
  27659. return prefix;
  27660. }
  27661. return new Regexp.ptr(1, 0, sliceType$4.nil, arrayType.zero(), sliceType.nil, arrayType$1.zero(), 0, 0, 0, "");
  27662. }
  27663. return re;
  27664. };
  27665. Regexp.prototype.Simplify = function() { return this.$val.Simplify(); };
  27666. simplify1 = function(op, flags, sub, re) {
  27667. var $ptr, flags, op, re, sub, x;
  27668. if (sub.Op === 2) {
  27669. return sub;
  27670. }
  27671. if ((op === sub.Op) && (((flags & 32) >>> 0) === ((sub.Flags & 32) >>> 0))) {
  27672. return sub;
  27673. }
  27674. if (!(re === ptrType.nil) && (re.Op === op) && (((re.Flags & 32) >>> 0) === ((flags & 32) >>> 0)) && sub === (x = re.Sub, (0 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 0]))) {
  27675. return re;
  27676. }
  27677. re = new Regexp.ptr(op, flags, sliceType$4.nil, arrayType.zero(), sliceType.nil, arrayType$1.zero(), 0, 0, 0, "");
  27678. re.Sub = $append($subslice(new sliceType$4(re.Sub0), 0, 0), sub);
  27679. return re;
  27680. };
  27681. patchList.methods = [{prop: "next", name: "next", pkg: "regexp/syntax", typ: $funcType([ptrType$3], [patchList], false)}, {prop: "patch", name: "patch", pkg: "regexp/syntax", typ: $funcType([ptrType$3, $Uint32], [], false)}, {prop: "append", name: "append", pkg: "regexp/syntax", typ: $funcType([ptrType$3, patchList], [patchList], false)}];
  27682. ptrType$4.methods = [{prop: "init", name: "init", pkg: "regexp/syntax", typ: $funcType([], [], false)}, {prop: "compile", name: "compile", pkg: "regexp/syntax", typ: $funcType([ptrType], [frag], false)}, {prop: "inst", name: "inst", pkg: "regexp/syntax", typ: $funcType([InstOp], [frag], false)}, {prop: "nop", name: "nop", pkg: "regexp/syntax", typ: $funcType([], [frag], false)}, {prop: "fail", name: "fail", pkg: "regexp/syntax", typ: $funcType([], [frag], false)}, {prop: "cap", name: "cap", pkg: "regexp/syntax", typ: $funcType([$Uint32], [frag], false)}, {prop: "cat", name: "cat", pkg: "regexp/syntax", typ: $funcType([frag, frag], [frag], false)}, {prop: "alt", name: "alt", pkg: "regexp/syntax", typ: $funcType([frag, frag], [frag], false)}, {prop: "quest", name: "quest", pkg: "regexp/syntax", typ: $funcType([frag, $Bool], [frag], false)}, {prop: "star", name: "star", pkg: "regexp/syntax", typ: $funcType([frag, $Bool], [frag], false)}, {prop: "plus", name: "plus", pkg: "regexp/syntax", typ: $funcType([frag, $Bool], [frag], false)}, {prop: "empty", name: "empty", pkg: "regexp/syntax", typ: $funcType([EmptyOp], [frag], false)}, {prop: "rune", name: "rune", pkg: "regexp/syntax", typ: $funcType([sliceType, Flags], [frag], false)}];
  27683. ptrType$5.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}];
  27684. ErrorCode.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}];
  27685. ptrType$6.methods = [{prop: "newRegexp", name: "newRegexp", pkg: "regexp/syntax", typ: $funcType([Op], [ptrType], false)}, {prop: "reuse", name: "reuse", pkg: "regexp/syntax", typ: $funcType([ptrType], [], false)}, {prop: "push", name: "push", pkg: "regexp/syntax", typ: $funcType([ptrType], [ptrType], false)}, {prop: "maybeConcat", name: "maybeConcat", pkg: "regexp/syntax", typ: $funcType([$Int32, Flags], [$Bool], false)}, {prop: "newLiteral", name: "newLiteral", pkg: "regexp/syntax", typ: $funcType([$Int32, Flags], [ptrType], false)}, {prop: "literal", name: "literal", pkg: "regexp/syntax", typ: $funcType([$Int32], [], false)}, {prop: "op", name: "op", pkg: "regexp/syntax", typ: $funcType([Op], [ptrType], false)}, {prop: "repeat", name: "repeat", pkg: "regexp/syntax", typ: $funcType([Op, $Int, $Int, $String, $String, $String], [$String, $error], false)}, {prop: "concat", name: "concat", pkg: "regexp/syntax", typ: $funcType([], [ptrType], false)}, {prop: "alternate", name: "alternate", pkg: "regexp/syntax", typ: $funcType([], [ptrType], false)}, {prop: "collapse", name: "collapse", pkg: "regexp/syntax", typ: $funcType([sliceType$4, Op], [ptrType], false)}, {prop: "factor", name: "factor", pkg: "regexp/syntax", typ: $funcType([sliceType$4, Flags], [sliceType$4], false)}, {prop: "leadingString", name: "leadingString", pkg: "regexp/syntax", typ: $funcType([ptrType], [sliceType, Flags], false)}, {prop: "removeLeadingString", name: "removeLeadingString", pkg: "regexp/syntax", typ: $funcType([ptrType, $Int], [ptrType], false)}, {prop: "leadingRegexp", name: "leadingRegexp", pkg: "regexp/syntax", typ: $funcType([ptrType], [ptrType], false)}, {prop: "removeLeadingRegexp", name: "removeLeadingRegexp", pkg: "regexp/syntax", typ: $funcType([ptrType, $Bool], [ptrType], false)}, {prop: "parseRepeat", name: "parseRepeat", pkg: "regexp/syntax", typ: $funcType([$String], [$Int, $Int, $String, $Bool], false)}, {prop: "parsePerlFlags", name: "parsePerlFlags", pkg: "regexp/syntax", typ: $funcType([$String], [$String, $error], false)}, {prop: "parseInt", name: "parseInt", pkg: "regexp/syntax", typ: $funcType([$String], [$Int, $String, $Bool], false)}, {prop: "parseVerticalBar", name: "parseVerticalBar", pkg: "regexp/syntax", typ: $funcType([], [$error], false)}, {prop: "swapVerticalBar", name: "swapVerticalBar", pkg: "regexp/syntax", typ: $funcType([], [$Bool], false)}, {prop: "parseRightParen", name: "parseRightParen", pkg: "regexp/syntax", typ: $funcType([], [$error], false)}, {prop: "parseEscape", name: "parseEscape", pkg: "regexp/syntax", typ: $funcType([$String], [$Int32, $String, $error], false)}, {prop: "parseClassChar", name: "parseClassChar", pkg: "regexp/syntax", typ: $funcType([$String, $String], [$Int32, $String, $error], false)}, {prop: "parsePerlClassEscape", name: "parsePerlClassEscape", pkg: "regexp/syntax", typ: $funcType([$String, sliceType], [sliceType, $String], false)}, {prop: "parseNamedClass", name: "parseNamedClass", pkg: "regexp/syntax", typ: $funcType([$String, sliceType], [sliceType, $String, $error], false)}, {prop: "appendGroup", name: "appendGroup", pkg: "regexp/syntax", typ: $funcType([sliceType, charGroup], [sliceType], false)}, {prop: "parseUnicodeClass", name: "parseUnicodeClass", pkg: "regexp/syntax", typ: $funcType([$String, sliceType], [sliceType, $String, $error], false)}, {prop: "parseClass", name: "parseClass", pkg: "regexp/syntax", typ: $funcType([$String], [$String, $error], false)}];
  27686. ranges.methods = [{prop: "Less", name: "Less", pkg: "", typ: $funcType([$Int, $Int], [$Bool], false)}, {prop: "Len", name: "Len", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Swap", name: "Swap", pkg: "", typ: $funcType([$Int, $Int], [], false)}];
  27687. ptrType$3.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "skipNop", name: "skipNop", pkg: "regexp/syntax", typ: $funcType([$Uint32], [ptrType$7, $Uint32], false)}, {prop: "Prefix", name: "Prefix", pkg: "", typ: $funcType([], [$String, $Bool], false)}, {prop: "StartCond", name: "StartCond", pkg: "", typ: $funcType([], [EmptyOp], false)}];
  27688. InstOp.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}];
  27689. ptrType$7.methods = [{prop: "op", name: "op", pkg: "regexp/syntax", typ: $funcType([], [InstOp], false)}, {prop: "MatchRune", name: "MatchRune", pkg: "", typ: $funcType([$Int32], [$Bool], false)}, {prop: "MatchRunePos", name: "MatchRunePos", pkg: "", typ: $funcType([$Int32], [$Int], false)}, {prop: "MatchEmptyWidth", name: "MatchEmptyWidth", pkg: "", typ: $funcType([$Int32, $Int32], [$Bool], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}];
  27690. ptrType.methods = [{prop: "Equal", name: "Equal", pkg: "", typ: $funcType([ptrType], [$Bool], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "MaxCap", name: "MaxCap", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "CapNames", name: "CapNames", pkg: "", typ: $funcType([], [sliceType$3], false)}, {prop: "capNames", name: "capNames", pkg: "regexp/syntax", typ: $funcType([sliceType$3], [], false)}, {prop: "Simplify", name: "Simplify", pkg: "", typ: $funcType([], [ptrType], false)}];
  27691. frag.init([{prop: "i", name: "i", pkg: "regexp/syntax", typ: $Uint32, tag: ""}, {prop: "out", name: "out", pkg: "regexp/syntax", typ: patchList, tag: ""}]);
  27692. compiler.init([{prop: "p", name: "p", pkg: "regexp/syntax", typ: ptrType$3, tag: ""}]);
  27693. Error.init([{prop: "Code", name: "Code", pkg: "", typ: ErrorCode, tag: ""}, {prop: "Expr", name: "Expr", pkg: "", typ: $String, tag: ""}]);
  27694. parser.init([{prop: "flags", name: "flags", pkg: "regexp/syntax", typ: Flags, tag: ""}, {prop: "stack", name: "stack", pkg: "regexp/syntax", typ: sliceType$4, tag: ""}, {prop: "free", name: "free", pkg: "regexp/syntax", typ: ptrType, tag: ""}, {prop: "numCap", name: "numCap", pkg: "regexp/syntax", typ: $Int, tag: ""}, {prop: "wholeRegexp", name: "wholeRegexp", pkg: "regexp/syntax", typ: $String, tag: ""}, {prop: "tmpClass", name: "tmpClass", pkg: "regexp/syntax", typ: sliceType, tag: ""}]);
  27695. charGroup.init([{prop: "sign", name: "sign", pkg: "regexp/syntax", typ: $Int, tag: ""}, {prop: "class$1", name: "class", pkg: "regexp/syntax", typ: sliceType, tag: ""}]);
  27696. ranges.init([{prop: "p", name: "p", pkg: "regexp/syntax", typ: ptrType$1, tag: ""}]);
  27697. Prog.init([{prop: "Inst", name: "Inst", pkg: "", typ: sliceType$5, tag: ""}, {prop: "Start", name: "Start", pkg: "", typ: $Int, tag: ""}, {prop: "NumCap", name: "NumCap", pkg: "", typ: $Int, tag: ""}]);
  27698. Inst.init([{prop: "Op", name: "Op", pkg: "", typ: InstOp, tag: ""}, {prop: "Out", name: "Out", pkg: "", typ: $Uint32, tag: ""}, {prop: "Arg", name: "Arg", pkg: "", typ: $Uint32, tag: ""}, {prop: "Rune", name: "Rune", pkg: "", typ: sliceType, tag: ""}]);
  27699. Regexp.init([{prop: "Op", name: "Op", pkg: "", typ: Op, tag: ""}, {prop: "Flags", name: "Flags", pkg: "", typ: Flags, tag: ""}, {prop: "Sub", name: "Sub", pkg: "", typ: sliceType$4, tag: ""}, {prop: "Sub0", name: "Sub0", pkg: "", typ: arrayType, tag: ""}, {prop: "Rune", name: "Rune", pkg: "", typ: sliceType, tag: ""}, {prop: "Rune0", name: "Rune0", pkg: "", typ: arrayType$1, tag: ""}, {prop: "Min", name: "Min", pkg: "", typ: $Int, tag: ""}, {prop: "Max", name: "Max", pkg: "", typ: $Int, tag: ""}, {prop: "Cap", name: "Cap", pkg: "", typ: $Int, tag: ""}, {prop: "Name", name: "Name", pkg: "", typ: $String, tag: ""}]);
  27700. $init = function() {
  27701. $pkg.$init = function() {};
  27702. /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  27703. $r = bytes.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  27704. $r = sort.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  27705. $r = strconv.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  27706. $r = strings.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  27707. $r = unicode.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  27708. $r = utf8.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  27709. anyRuneNotNL = new sliceType([0, 9, 11, 1114111]);
  27710. anyRune = new sliceType([0, 1114111]);
  27711. anyTable = new unicode.RangeTable.ptr(new sliceType$1([new unicode.Range16.ptr(0, 65535, 1)]), new sliceType$2([new unicode.Range32.ptr(65536, 1114111, 1)]), 0);
  27712. code1 = new sliceType([48, 57]);
  27713. code2 = new sliceType([9, 10, 12, 13, 32, 32]);
  27714. code3 = new sliceType([48, 57, 65, 90, 95, 95, 97, 122]);
  27715. perlGroup = (_map = new $Map(), _key = "\\d", _map[_key] = { k: _key, v: new charGroup.ptr(1, code1) }, _key = "\\D", _map[_key] = { k: _key, v: new charGroup.ptr(-1, code1) }, _key = "\\s", _map[_key] = { k: _key, v: new charGroup.ptr(1, code2) }, _key = "\\S", _map[_key] = { k: _key, v: new charGroup.ptr(-1, code2) }, _key = "\\w", _map[_key] = { k: _key, v: new charGroup.ptr(1, code3) }, _key = "\\W", _map[_key] = { k: _key, v: new charGroup.ptr(-1, code3) }, _map);
  27716. code4 = new sliceType([48, 57, 65, 90, 97, 122]);
  27717. code5 = new sliceType([65, 90, 97, 122]);
  27718. code6 = new sliceType([0, 127]);
  27719. code7 = new sliceType([9, 9, 32, 32]);
  27720. code8 = new sliceType([0, 31, 127, 127]);
  27721. code9 = new sliceType([48, 57]);
  27722. code10 = new sliceType([33, 126]);
  27723. code11 = new sliceType([97, 122]);
  27724. code12 = new sliceType([32, 126]);
  27725. code13 = new sliceType([33, 47, 58, 64, 91, 96, 123, 126]);
  27726. code14 = new sliceType([9, 13, 32, 32]);
  27727. code15 = new sliceType([65, 90]);
  27728. code16 = new sliceType([48, 57, 65, 90, 95, 95, 97, 122]);
  27729. code17 = new sliceType([48, 57, 65, 70, 97, 102]);
  27730. posixGroup = (_map$1 = new $Map(), _key$1 = "[:alnum:]", _map$1[_key$1] = { k: _key$1, v: new charGroup.ptr(1, code4) }, _key$1 = "[:^alnum:]", _map$1[_key$1] = { k: _key$1, v: new charGroup.ptr(-1, code4) }, _key$1 = "[:alpha:]", _map$1[_key$1] = { k: _key$1, v: new charGroup.ptr(1, code5) }, _key$1 = "[:^alpha:]", _map$1[_key$1] = { k: _key$1, v: new charGroup.ptr(-1, code5) }, _key$1 = "[:ascii:]", _map$1[_key$1] = { k: _key$1, v: new charGroup.ptr(1, code6) }, _key$1 = "[:^ascii:]", _map$1[_key$1] = { k: _key$1, v: new charGroup.ptr(-1, code6) }, _key$1 = "[:blank:]", _map$1[_key$1] = { k: _key$1, v: new charGroup.ptr(1, code7) }, _key$1 = "[:^blank:]", _map$1[_key$1] = { k: _key$1, v: new charGroup.ptr(-1, code7) }, _key$1 = "[:cntrl:]", _map$1[_key$1] = { k: _key$1, v: new charGroup.ptr(1, code8) }, _key$1 = "[:^cntrl:]", _map$1[_key$1] = { k: _key$1, v: new charGroup.ptr(-1, code8) }, _key$1 = "[:digit:]", _map$1[_key$1] = { k: _key$1, v: new charGroup.ptr(1, code9) }, _key$1 = "[:^digit:]", _map$1[_key$1] = { k: _key$1, v: new charGroup.ptr(-1, code9) }, _key$1 = "[:graph:]", _map$1[_key$1] = { k: _key$1, v: new charGroup.ptr(1, code10) }, _key$1 = "[:^graph:]", _map$1[_key$1] = { k: _key$1, v: new charGroup.ptr(-1, code10) }, _key$1 = "[:lower:]", _map$1[_key$1] = { k: _key$1, v: new charGroup.ptr(1, code11) }, _key$1 = "[:^lower:]", _map$1[_key$1] = { k: _key$1, v: new charGroup.ptr(-1, code11) }, _key$1 = "[:print:]", _map$1[_key$1] = { k: _key$1, v: new charGroup.ptr(1, code12) }, _key$1 = "[:^print:]", _map$1[_key$1] = { k: _key$1, v: new charGroup.ptr(-1, code12) }, _key$1 = "[:punct:]", _map$1[_key$1] = { k: _key$1, v: new charGroup.ptr(1, code13) }, _key$1 = "[:^punct:]", _map$1[_key$1] = { k: _key$1, v: new charGroup.ptr(-1, code13) }, _key$1 = "[:space:]", _map$1[_key$1] = { k: _key$1, v: new charGroup.ptr(1, code14) }, _key$1 = "[:^space:]", _map$1[_key$1] = { k: _key$1, v: new charGroup.ptr(-1, code14) }, _key$1 = "[:upper:]", _map$1[_key$1] = { k: _key$1, v: new charGroup.ptr(1, code15) }, _key$1 = "[:^upper:]", _map$1[_key$1] = { k: _key$1, v: new charGroup.ptr(-1, code15) }, _key$1 = "[:word:]", _map$1[_key$1] = { k: _key$1, v: new charGroup.ptr(1, code16) }, _key$1 = "[:^word:]", _map$1[_key$1] = { k: _key$1, v: new charGroup.ptr(-1, code16) }, _key$1 = "[:xdigit:]", _map$1[_key$1] = { k: _key$1, v: new charGroup.ptr(1, code17) }, _key$1 = "[:^xdigit:]", _map$1[_key$1] = { k: _key$1, v: new charGroup.ptr(-1, code17) }, _map$1);
  27731. instOpNames = new sliceType$3(["InstAlt", "InstAltMatch", "InstCapture", "InstEmptyWidth", "InstMatch", "InstFail", "InstNop", "InstRune", "InstRune1", "InstRuneAny", "InstRuneAnyNotNL"]);
  27732. /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
  27733. };
  27734. $pkg.$init = $init;
  27735. return $pkg;
  27736. })();
  27737. $packages["flag"] = (function() {
  27738. var $pkg = {}, $init, errors, fmt, io, os, sort, strconv, time, boolValue, boolFlag, intValue, int64Value, uintValue, uint64Value, stringValue, float64Value, durationValue, Value, ErrorHandling, FlagSet, Flag, sliceType, ptrType, ptrType$1, ptrType$2, ptrType$3, ptrType$4, ptrType$5, ptrType$6, ptrType$7, ptrType$8, ptrType$9, sliceType$1, ptrType$10, ptrType$11, ptrType$12, ptrType$13, ptrType$14, ptrType$15, ptrType$16, sliceType$2, funcType, ptrType$17, funcType$1, mapType, x, newBoolValue, newIntValue, newInt64Value, newUintValue, newUint64Value, newStringValue, newFloat64Value, newDurationValue, sortFlags, PrintDefaults, defaultUsage, Bool, Int, String, Duration, NewFlagSet;
  27739. errors = $packages["errors"];
  27740. fmt = $packages["fmt"];
  27741. io = $packages["io"];
  27742. os = $packages["os"];
  27743. sort = $packages["sort"];
  27744. strconv = $packages["strconv"];
  27745. time = $packages["time"];
  27746. boolValue = $pkg.boolValue = $newType(1, $kindBool, "flag.boolValue", "boolValue", "flag", null);
  27747. boolFlag = $pkg.boolFlag = $newType(8, $kindInterface, "flag.boolFlag", "boolFlag", "flag", null);
  27748. intValue = $pkg.intValue = $newType(4, $kindInt, "flag.intValue", "intValue", "flag", null);
  27749. int64Value = $pkg.int64Value = $newType(8, $kindInt64, "flag.int64Value", "int64Value", "flag", null);
  27750. uintValue = $pkg.uintValue = $newType(4, $kindUint, "flag.uintValue", "uintValue", "flag", null);
  27751. uint64Value = $pkg.uint64Value = $newType(8, $kindUint64, "flag.uint64Value", "uint64Value", "flag", null);
  27752. stringValue = $pkg.stringValue = $newType(8, $kindString, "flag.stringValue", "stringValue", "flag", null);
  27753. float64Value = $pkg.float64Value = $newType(8, $kindFloat64, "flag.float64Value", "float64Value", "flag", null);
  27754. durationValue = $pkg.durationValue = $newType(8, $kindInt64, "flag.durationValue", "durationValue", "flag", null);
  27755. Value = $pkg.Value = $newType(8, $kindInterface, "flag.Value", "Value", "flag", null);
  27756. ErrorHandling = $pkg.ErrorHandling = $newType(4, $kindInt, "flag.ErrorHandling", "ErrorHandling", "flag", null);
  27757. FlagSet = $pkg.FlagSet = $newType(0, $kindStruct, "flag.FlagSet", "FlagSet", "flag", function(Usage_, name_, parsed_, actual_, formal_, args_, errorHandling_, output_) {
  27758. this.$val = this;
  27759. if (arguments.length === 0) {
  27760. this.Usage = $throwNilPointerError;
  27761. this.name = "";
  27762. this.parsed = false;
  27763. this.actual = false;
  27764. this.formal = false;
  27765. this.args = sliceType$2.nil;
  27766. this.errorHandling = 0;
  27767. this.output = $ifaceNil;
  27768. return;
  27769. }
  27770. this.Usage = Usage_;
  27771. this.name = name_;
  27772. this.parsed = parsed_;
  27773. this.actual = actual_;
  27774. this.formal = formal_;
  27775. this.args = args_;
  27776. this.errorHandling = errorHandling_;
  27777. this.output = output_;
  27778. });
  27779. Flag = $pkg.Flag = $newType(0, $kindStruct, "flag.Flag", "Flag", "flag", function(Name_, Usage_, Value_, DefValue_) {
  27780. this.$val = this;
  27781. if (arguments.length === 0) {
  27782. this.Name = "";
  27783. this.Usage = "";
  27784. this.Value = $ifaceNil;
  27785. this.DefValue = "";
  27786. return;
  27787. }
  27788. this.Name = Name_;
  27789. this.Usage = Usage_;
  27790. this.Value = Value_;
  27791. this.DefValue = DefValue_;
  27792. });
  27793. sliceType = $sliceType($emptyInterface);
  27794. ptrType = $ptrType(boolValue);
  27795. ptrType$1 = $ptrType(intValue);
  27796. ptrType$2 = $ptrType(int64Value);
  27797. ptrType$3 = $ptrType(uintValue);
  27798. ptrType$4 = $ptrType(uint64Value);
  27799. ptrType$5 = $ptrType(stringValue);
  27800. ptrType$6 = $ptrType(float64Value);
  27801. ptrType$7 = $ptrType(durationValue);
  27802. ptrType$8 = $ptrType(time.Duration);
  27803. ptrType$9 = $ptrType(Flag);
  27804. sliceType$1 = $sliceType(ptrType$9);
  27805. ptrType$10 = $ptrType($Bool);
  27806. ptrType$11 = $ptrType($Int);
  27807. ptrType$12 = $ptrType($Int64);
  27808. ptrType$13 = $ptrType($Uint);
  27809. ptrType$14 = $ptrType($Uint64);
  27810. ptrType$15 = $ptrType($String);
  27811. ptrType$16 = $ptrType($Float64);
  27812. sliceType$2 = $sliceType($String);
  27813. funcType = $funcType([ptrType$9], [], false);
  27814. ptrType$17 = $ptrType(FlagSet);
  27815. funcType$1 = $funcType([], [], false);
  27816. mapType = $mapType($String, ptrType$9);
  27817. newBoolValue = function(val, p) {
  27818. var $ptr, _ptr, p, val;
  27819. p.$set(val);
  27820. return (_ptr = p, new ptrType(function() { return _ptr.$get(); }, function($v) { _ptr.$set($v); }, _ptr.$target));
  27821. };
  27822. $ptrType(boolValue).prototype.Set = function(s) {
  27823. var $ptr, _tuple, b, err, s, v;
  27824. b = this;
  27825. _tuple = strconv.ParseBool(s); v = _tuple[0]; err = _tuple[1];
  27826. b.$set(v);
  27827. return err;
  27828. };
  27829. $ptrType(boolValue).prototype.Get = function() {
  27830. var $ptr, b;
  27831. b = this;
  27832. return new $Bool(b.$get());
  27833. };
  27834. $ptrType(boolValue).prototype.String = function() {
  27835. var $ptr, _r, b, $s, $r;
  27836. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; b = $f.b; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  27837. b = this;
  27838. _r = fmt.Sprintf("%v", new sliceType([new boolValue(b.$get())])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  27839. return _r;
  27840. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: $ptrType(boolValue).prototype.String }; } $f.$ptr = $ptr; $f._r = _r; $f.b = b; $f.$s = $s; $f.$r = $r; return $f;
  27841. };
  27842. $ptrType(boolValue).prototype.IsBoolFlag = function() {
  27843. var $ptr, b;
  27844. b = this;
  27845. return true;
  27846. };
  27847. newIntValue = function(val, p) {
  27848. var $ptr, _ptr, p, val;
  27849. p.$set(val);
  27850. return (_ptr = p, new ptrType$1(function() { return (_ptr.$get() >> 0); }, function($v) { _ptr.$set(($v >> 0)); }, _ptr.$target));
  27851. };
  27852. $ptrType(intValue).prototype.Set = function(s) {
  27853. var $ptr, _tuple, err, i, s, v;
  27854. i = this;
  27855. _tuple = strconv.ParseInt(s, 0, 64); v = _tuple[0]; err = _tuple[1];
  27856. i.$set(((v.$low + ((v.$high >> 31) * 4294967296)) >> 0));
  27857. return err;
  27858. };
  27859. $ptrType(intValue).prototype.Get = function() {
  27860. var $ptr, i;
  27861. i = this;
  27862. return new $Int((i.$get() >> 0));
  27863. };
  27864. $ptrType(intValue).prototype.String = function() {
  27865. var $ptr, _r, i, $s, $r;
  27866. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; i = $f.i; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  27867. i = this;
  27868. _r = fmt.Sprintf("%v", new sliceType([new intValue(i.$get())])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  27869. return _r;
  27870. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: $ptrType(intValue).prototype.String }; } $f.$ptr = $ptr; $f._r = _r; $f.i = i; $f.$s = $s; $f.$r = $r; return $f;
  27871. };
  27872. newInt64Value = function(val, p) {
  27873. var $ptr, _ptr, p, val, x$1;
  27874. p.$set(val);
  27875. return (_ptr = p, new ptrType$2(function() { return (x$1 = _ptr.$get(), new int64Value(x$1.$high, x$1.$low)); }, function($v) { _ptr.$set(new $Int64($v.$high, $v.$low)); }, _ptr.$target));
  27876. };
  27877. $ptrType(int64Value).prototype.Set = function(s) {
  27878. var $ptr, _tuple, err, i, s, v;
  27879. i = this;
  27880. _tuple = strconv.ParseInt(s, 0, 64); v = _tuple[0]; err = _tuple[1];
  27881. i.$set(new int64Value(v.$high, v.$low));
  27882. return err;
  27883. };
  27884. $ptrType(int64Value).prototype.Get = function() {
  27885. var $ptr, i, x$1;
  27886. i = this;
  27887. return (x$1 = i.$get(), new $Int64(x$1.$high, x$1.$low));
  27888. };
  27889. $ptrType(int64Value).prototype.String = function() {
  27890. var $ptr, _r, i, $s, $r;
  27891. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; i = $f.i; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  27892. i = this;
  27893. _r = fmt.Sprintf("%v", new sliceType([i.$get()])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  27894. return _r;
  27895. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: $ptrType(int64Value).prototype.String }; } $f.$ptr = $ptr; $f._r = _r; $f.i = i; $f.$s = $s; $f.$r = $r; return $f;
  27896. };
  27897. newUintValue = function(val, p) {
  27898. var $ptr, _ptr, p, val;
  27899. p.$set(val);
  27900. return (_ptr = p, new ptrType$3(function() { return (_ptr.$get() >>> 0); }, function($v) { _ptr.$set(($v >>> 0)); }, _ptr.$target));
  27901. };
  27902. $ptrType(uintValue).prototype.Set = function(s) {
  27903. var $ptr, _tuple, err, i, s, v;
  27904. i = this;
  27905. _tuple = strconv.ParseUint(s, 0, 64); v = _tuple[0]; err = _tuple[1];
  27906. i.$set((v.$low >>> 0));
  27907. return err;
  27908. };
  27909. $ptrType(uintValue).prototype.Get = function() {
  27910. var $ptr, i;
  27911. i = this;
  27912. return new $Uint((i.$get() >>> 0));
  27913. };
  27914. $ptrType(uintValue).prototype.String = function() {
  27915. var $ptr, _r, i, $s, $r;
  27916. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; i = $f.i; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  27917. i = this;
  27918. _r = fmt.Sprintf("%v", new sliceType([new uintValue(i.$get())])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  27919. return _r;
  27920. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: $ptrType(uintValue).prototype.String }; } $f.$ptr = $ptr; $f._r = _r; $f.i = i; $f.$s = $s; $f.$r = $r; return $f;
  27921. };
  27922. newUint64Value = function(val, p) {
  27923. var $ptr, _ptr, p, val, x$1;
  27924. p.$set(val);
  27925. return (_ptr = p, new ptrType$4(function() { return (x$1 = _ptr.$get(), new uint64Value(x$1.$high, x$1.$low)); }, function($v) { _ptr.$set(new $Uint64($v.$high, $v.$low)); }, _ptr.$target));
  27926. };
  27927. $ptrType(uint64Value).prototype.Set = function(s) {
  27928. var $ptr, _tuple, err, i, s, v;
  27929. i = this;
  27930. _tuple = strconv.ParseUint(s, 0, 64); v = _tuple[0]; err = _tuple[1];
  27931. i.$set(new uint64Value(v.$high, v.$low));
  27932. return err;
  27933. };
  27934. $ptrType(uint64Value).prototype.Get = function() {
  27935. var $ptr, i, x$1;
  27936. i = this;
  27937. return (x$1 = i.$get(), new $Uint64(x$1.$high, x$1.$low));
  27938. };
  27939. $ptrType(uint64Value).prototype.String = function() {
  27940. var $ptr, _r, i, $s, $r;
  27941. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; i = $f.i; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  27942. i = this;
  27943. _r = fmt.Sprintf("%v", new sliceType([i.$get()])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  27944. return _r;
  27945. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: $ptrType(uint64Value).prototype.String }; } $f.$ptr = $ptr; $f._r = _r; $f.i = i; $f.$s = $s; $f.$r = $r; return $f;
  27946. };
  27947. newStringValue = function(val, p) {
  27948. var $ptr, _ptr, p, val;
  27949. p.$set(val);
  27950. return (_ptr = p, new ptrType$5(function() { return _ptr.$get(); }, function($v) { _ptr.$set($v); }, _ptr.$target));
  27951. };
  27952. $ptrType(stringValue).prototype.Set = function(val) {
  27953. var $ptr, s, val;
  27954. s = this;
  27955. s.$set(val);
  27956. return $ifaceNil;
  27957. };
  27958. $ptrType(stringValue).prototype.Get = function() {
  27959. var $ptr, s;
  27960. s = this;
  27961. return new $String(s.$get());
  27962. };
  27963. $ptrType(stringValue).prototype.String = function() {
  27964. var $ptr, _r, s, $s, $r;
  27965. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  27966. s = this;
  27967. _r = fmt.Sprintf("%s", new sliceType([new stringValue(s.$get())])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  27968. return _r;
  27969. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: $ptrType(stringValue).prototype.String }; } $f.$ptr = $ptr; $f._r = _r; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
  27970. };
  27971. newFloat64Value = function(val, p) {
  27972. var $ptr, _ptr, p, val;
  27973. p.$set(val);
  27974. return (_ptr = p, new ptrType$6(function() { return _ptr.$get(); }, function($v) { _ptr.$set($v); }, _ptr.$target));
  27975. };
  27976. $ptrType(float64Value).prototype.Set = function(s) {
  27977. var $ptr, _tuple, err, f, s, v;
  27978. f = this;
  27979. _tuple = strconv.ParseFloat(s, 64); v = _tuple[0]; err = _tuple[1];
  27980. f.$set(v);
  27981. return err;
  27982. };
  27983. $ptrType(float64Value).prototype.Get = function() {
  27984. var $ptr, f;
  27985. f = this;
  27986. return new $Float64(f.$get());
  27987. };
  27988. $ptrType(float64Value).prototype.String = function() {
  27989. var $ptr, _r, f, $s, $r;
  27990. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; f = $f.f; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  27991. f = this;
  27992. _r = fmt.Sprintf("%v", new sliceType([new float64Value(f.$get())])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  27993. return _r;
  27994. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: $ptrType(float64Value).prototype.String }; } $f.$ptr = $ptr; $f._r = _r; $f.f = f; $f.$s = $s; $f.$r = $r; return $f;
  27995. };
  27996. newDurationValue = function(val, p) {
  27997. var $ptr, _ptr, p, val, x$1;
  27998. p.$set(val);
  27999. return (_ptr = p, new ptrType$7(function() { return (x$1 = _ptr.$get(), new durationValue(x$1.$high, x$1.$low)); }, function($v) { _ptr.$set(new time.Duration($v.$high, $v.$low)); }, _ptr.$target));
  28000. };
  28001. $ptrType(durationValue).prototype.Set = function(s) {
  28002. var $ptr, _tuple, d, err, s, v;
  28003. d = this;
  28004. _tuple = time.ParseDuration(s); v = _tuple[0]; err = _tuple[1];
  28005. d.$set(new durationValue(v.$high, v.$low));
  28006. return err;
  28007. };
  28008. $ptrType(durationValue).prototype.Get = function() {
  28009. var $ptr, d, x$1;
  28010. d = this;
  28011. return (x$1 = d.$get(), new time.Duration(x$1.$high, x$1.$low));
  28012. };
  28013. $ptrType(durationValue).prototype.String = function() {
  28014. var $ptr, _ptr, d, x$1;
  28015. d = this;
  28016. return (_ptr = d, new ptrType$8(function() { return (x$1 = _ptr.$get(), new time.Duration(x$1.$high, x$1.$low)); }, function($v) { _ptr.$set(new durationValue($v.$high, $v.$low)); }, _ptr.$target)).String();
  28017. };
  28018. sortFlags = function(flags) {
  28019. var $ptr, _entry, _entry$1, _i, _i$1, _keys, _ref, _ref$1, f, flags, i, i$1, list, name, result, $s, $r;
  28020. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _entry = $f._entry; _entry$1 = $f._entry$1; _i = $f._i; _i$1 = $f._i$1; _keys = $f._keys; _ref = $f._ref; _ref$1 = $f._ref$1; f = $f.f; flags = $f.flags; i = $f.i; i$1 = $f.i$1; list = $f.list; name = $f.name; result = $f.result; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  28021. list = $makeSlice(sort.StringSlice, $keys(flags).length);
  28022. i = 0;
  28023. _ref = flags;
  28024. _i = 0;
  28025. _keys = $keys(_ref);
  28026. while (true) {
  28027. if (!(_i < _keys.length)) { break; }
  28028. _entry = _ref[_keys[_i]];
  28029. if (_entry === undefined) {
  28030. _i++;
  28031. continue;
  28032. }
  28033. f = _entry.v;
  28034. ((i < 0 || i >= list.$length) ? $throwRuntimeError("index out of range") : list.$array[list.$offset + i] = f.Name);
  28035. i = i + (1) >> 0;
  28036. _i++;
  28037. }
  28038. $r = list.Sort(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  28039. result = $makeSlice(sliceType$1, list.$length);
  28040. _ref$1 = list;
  28041. _i$1 = 0;
  28042. while (true) {
  28043. if (!(_i$1 < _ref$1.$length)) { break; }
  28044. i$1 = _i$1;
  28045. name = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? $throwRuntimeError("index out of range") : _ref$1.$array[_ref$1.$offset + _i$1]);
  28046. ((i$1 < 0 || i$1 >= result.$length) ? $throwRuntimeError("index out of range") : result.$array[result.$offset + i$1] = (_entry$1 = flags[name], _entry$1 !== undefined ? _entry$1.v : ptrType$9.nil));
  28047. _i$1++;
  28048. }
  28049. return result;
  28050. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: sortFlags }; } $f.$ptr = $ptr; $f._entry = _entry; $f._entry$1 = _entry$1; $f._i = _i; $f._i$1 = _i$1; $f._keys = _keys; $f._ref = _ref; $f._ref$1 = _ref$1; $f.f = f; $f.flags = flags; $f.i = i; $f.i$1 = i$1; $f.list = list; $f.name = name; $f.result = result; $f.$s = $s; $f.$r = $r; return $f;
  28051. };
  28052. FlagSet.ptr.prototype.out = function() {
  28053. var $ptr, f;
  28054. f = this;
  28055. if ($interfaceIsEqual(f.output, $ifaceNil)) {
  28056. return os.Stderr;
  28057. }
  28058. return f.output;
  28059. };
  28060. FlagSet.prototype.out = function() { return this.$val.out(); };
  28061. FlagSet.ptr.prototype.SetOutput = function(output) {
  28062. var $ptr, f, output;
  28063. f = this;
  28064. f.output = output;
  28065. };
  28066. FlagSet.prototype.SetOutput = function(output) { return this.$val.SetOutput(output); };
  28067. FlagSet.ptr.prototype.VisitAll = function(fn) {
  28068. var $ptr, _i, _r, _ref, f, flag, fn, $s, $r;
  28069. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _i = $f._i; _r = $f._r; _ref = $f._ref; f = $f.f; flag = $f.flag; fn = $f.fn; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  28070. f = this;
  28071. _r = sortFlags(f.formal); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  28072. _ref = _r;
  28073. _i = 0;
  28074. /* while (true) { */ case 2:
  28075. /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 3; continue; }
  28076. flag = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]);
  28077. $r = fn(flag); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  28078. _i++;
  28079. /* } */ $s = 2; continue; case 3:
  28080. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: FlagSet.ptr.prototype.VisitAll }; } $f.$ptr = $ptr; $f._i = _i; $f._r = _r; $f._ref = _ref; $f.f = f; $f.flag = flag; $f.fn = fn; $f.$s = $s; $f.$r = $r; return $f;
  28081. };
  28082. FlagSet.prototype.VisitAll = function(fn) { return this.$val.VisitAll(fn); };
  28083. FlagSet.ptr.prototype.Visit = function(fn) {
  28084. var $ptr, _i, _r, _ref, f, flag, fn, $s, $r;
  28085. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _i = $f._i; _r = $f._r; _ref = $f._ref; f = $f.f; flag = $f.flag; fn = $f.fn; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  28086. f = this;
  28087. _r = sortFlags(f.actual); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  28088. _ref = _r;
  28089. _i = 0;
  28090. /* while (true) { */ case 2:
  28091. /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 3; continue; }
  28092. flag = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]);
  28093. $r = fn(flag); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  28094. _i++;
  28095. /* } */ $s = 2; continue; case 3:
  28096. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: FlagSet.ptr.prototype.Visit }; } $f.$ptr = $ptr; $f._i = _i; $f._r = _r; $f._ref = _ref; $f.f = f; $f.flag = flag; $f.fn = fn; $f.$s = $s; $f.$r = $r; return $f;
  28097. };
  28098. FlagSet.prototype.Visit = function(fn) { return this.$val.Visit(fn); };
  28099. FlagSet.ptr.prototype.Lookup = function(name) {
  28100. var $ptr, _entry, f, name;
  28101. f = this;
  28102. return (_entry = f.formal[name], _entry !== undefined ? _entry.v : ptrType$9.nil);
  28103. };
  28104. FlagSet.prototype.Lookup = function(name) { return this.$val.Lookup(name); };
  28105. FlagSet.ptr.prototype.Set = function(name, value) {
  28106. var $ptr, _entry, _key, _r, _r$1, _tuple, err, f, flag, name, ok, value, $s, $r;
  28107. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _entry = $f._entry; _key = $f._key; _r = $f._r; _r$1 = $f._r$1; _tuple = $f._tuple; err = $f.err; f = $f.f; flag = $f.flag; name = $f.name; ok = $f.ok; value = $f.value; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  28108. f = this;
  28109. _tuple = (_entry = f.formal[name], _entry !== undefined ? [_entry.v, true] : [ptrType$9.nil, false]); flag = _tuple[0]; ok = _tuple[1];
  28110. /* */ if (!ok) { $s = 1; continue; }
  28111. /* */ $s = 2; continue;
  28112. /* if (!ok) { */ case 1:
  28113. _r = fmt.Errorf("no such flag -%v", new sliceType([new $String(name)])); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  28114. return _r;
  28115. /* } */ case 2:
  28116. _r$1 = flag.Value.Set(value); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  28117. err = _r$1;
  28118. if (!($interfaceIsEqual(err, $ifaceNil))) {
  28119. return err;
  28120. }
  28121. if (f.actual === false) {
  28122. f.actual = new $Map();
  28123. }
  28124. _key = name; (f.actual || $throwRuntimeError("assignment to entry in nil map"))[_key] = { k: _key, v: flag };
  28125. return $ifaceNil;
  28126. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: FlagSet.ptr.prototype.Set }; } $f.$ptr = $ptr; $f._entry = _entry; $f._key = _key; $f._r = _r; $f._r$1 = _r$1; $f._tuple = _tuple; $f.err = err; $f.f = f; $f.flag = flag; $f.name = name; $f.ok = ok; $f.value = value; $f.$s = $s; $f.$r = $r; return $f;
  28127. };
  28128. FlagSet.prototype.Set = function(name, value) { return this.$val.Set(name, value); };
  28129. FlagSet.ptr.prototype.PrintDefaults = function() {
  28130. var $ptr, f, $s, $r;
  28131. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; f = $f.f; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  28132. f = [f];
  28133. f[0] = this;
  28134. $r = f[0].VisitAll((function(f) { return function $b(flag) {
  28135. var $ptr, _r, _tuple, flag, format, ok, $s, $r;
  28136. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tuple = $f._tuple; flag = $f.flag; format = $f.format; ok = $f.ok; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  28137. format = " -%s=%s: %s\n";
  28138. _tuple = $assertType(flag.Value, ptrType$5, true); ok = _tuple[1];
  28139. if (ok) {
  28140. format = " -%s=%q: %s\n";
  28141. }
  28142. _r = fmt.Fprintf(f[0].out(), format, new sliceType([new $String(flag.Name), new $String(flag.DefValue), new $String(flag.Usage)])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  28143. _r;
  28144. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: $b }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple = _tuple; $f.flag = flag; $f.format = format; $f.ok = ok; $f.$s = $s; $f.$r = $r; return $f;
  28145. }; })(f)); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  28146. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: FlagSet.ptr.prototype.PrintDefaults }; } $f.$ptr = $ptr; $f.f = f; $f.$s = $s; $f.$r = $r; return $f;
  28147. };
  28148. FlagSet.prototype.PrintDefaults = function() { return this.$val.PrintDefaults(); };
  28149. PrintDefaults = function() {
  28150. var $ptr, $s, $r;
  28151. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  28152. $r = $pkg.CommandLine.PrintDefaults(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  28153. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: PrintDefaults }; } $f.$ptr = $ptr; $f.$s = $s; $f.$r = $r; return $f;
  28154. };
  28155. $pkg.PrintDefaults = PrintDefaults;
  28156. defaultUsage = function(f) {
  28157. var $ptr, _r, _r$1, f, $s, $r;
  28158. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; f = $f.f; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  28159. /* */ if (f.name === "") { $s = 1; continue; }
  28160. /* */ $s = 2; continue;
  28161. /* if (f.name === "") { */ case 1:
  28162. _r = fmt.Fprintf(f.out(), "Usage:\n", new sliceType([])); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  28163. _r;
  28164. $s = 3; continue;
  28165. /* } else { */ case 2:
  28166. _r$1 = fmt.Fprintf(f.out(), "Usage of %s:\n", new sliceType([new $String(f.name)])); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  28167. _r$1;
  28168. /* } */ case 3:
  28169. $r = f.PrintDefaults(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  28170. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: defaultUsage }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f.f = f; $f.$s = $s; $f.$r = $r; return $f;
  28171. };
  28172. FlagSet.ptr.prototype.NFlag = function() {
  28173. var $ptr, f;
  28174. f = this;
  28175. return $keys(f.actual).length;
  28176. };
  28177. FlagSet.prototype.NFlag = function() { return this.$val.NFlag(); };
  28178. FlagSet.ptr.prototype.Arg = function(i) {
  28179. var $ptr, f, i, x$1;
  28180. f = this;
  28181. if (i < 0 || i >= f.args.$length) {
  28182. return "";
  28183. }
  28184. return (x$1 = f.args, ((i < 0 || i >= x$1.$length) ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + i]));
  28185. };
  28186. FlagSet.prototype.Arg = function(i) { return this.$val.Arg(i); };
  28187. FlagSet.ptr.prototype.NArg = function() {
  28188. var $ptr, f;
  28189. f = this;
  28190. return f.args.$length;
  28191. };
  28192. FlagSet.prototype.NArg = function() { return this.$val.NArg(); };
  28193. FlagSet.ptr.prototype.Args = function() {
  28194. var $ptr, f;
  28195. f = this;
  28196. return f.args;
  28197. };
  28198. FlagSet.prototype.Args = function() { return this.$val.Args(); };
  28199. FlagSet.ptr.prototype.BoolVar = function(p, name, value, usage) {
  28200. var $ptr, f, name, p, usage, value, $s, $r;
  28201. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; f = $f.f; name = $f.name; p = $f.p; usage = $f.usage; value = $f.value; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  28202. f = this;
  28203. $r = f.Var(newBoolValue(value, p), name, usage); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  28204. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: FlagSet.ptr.prototype.BoolVar }; } $f.$ptr = $ptr; $f.f = f; $f.name = name; $f.p = p; $f.usage = usage; $f.value = value; $f.$s = $s; $f.$r = $r; return $f;
  28205. };
  28206. FlagSet.prototype.BoolVar = function(p, name, value, usage) { return this.$val.BoolVar(p, name, value, usage); };
  28207. FlagSet.ptr.prototype.Bool = function(name, value, usage) {
  28208. var $ptr, f, name, p, usage, value, $s, $r;
  28209. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; f = $f.f; name = $f.name; p = $f.p; usage = $f.usage; value = $f.value; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  28210. f = this;
  28211. p = $newDataPointer(false, ptrType$10);
  28212. $r = f.BoolVar(p, name, value, usage); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  28213. return p;
  28214. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: FlagSet.ptr.prototype.Bool }; } $f.$ptr = $ptr; $f.f = f; $f.name = name; $f.p = p; $f.usage = usage; $f.value = value; $f.$s = $s; $f.$r = $r; return $f;
  28215. };
  28216. FlagSet.prototype.Bool = function(name, value, usage) { return this.$val.Bool(name, value, usage); };
  28217. Bool = function(name, value, usage) {
  28218. var $ptr, _r, name, usage, value, $s, $r;
  28219. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; name = $f.name; usage = $f.usage; value = $f.value; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  28220. _r = $pkg.CommandLine.Bool(name, value, usage); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  28221. return _r;
  28222. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Bool }; } $f.$ptr = $ptr; $f._r = _r; $f.name = name; $f.usage = usage; $f.value = value; $f.$s = $s; $f.$r = $r; return $f;
  28223. };
  28224. $pkg.Bool = Bool;
  28225. FlagSet.ptr.prototype.IntVar = function(p, name, value, usage) {
  28226. var $ptr, f, name, p, usage, value, $s, $r;
  28227. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; f = $f.f; name = $f.name; p = $f.p; usage = $f.usage; value = $f.value; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  28228. f = this;
  28229. $r = f.Var(newIntValue(value, p), name, usage); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  28230. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: FlagSet.ptr.prototype.IntVar }; } $f.$ptr = $ptr; $f.f = f; $f.name = name; $f.p = p; $f.usage = usage; $f.value = value; $f.$s = $s; $f.$r = $r; return $f;
  28231. };
  28232. FlagSet.prototype.IntVar = function(p, name, value, usage) { return this.$val.IntVar(p, name, value, usage); };
  28233. FlagSet.ptr.prototype.Int = function(name, value, usage) {
  28234. var $ptr, f, name, p, usage, value, $s, $r;
  28235. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; f = $f.f; name = $f.name; p = $f.p; usage = $f.usage; value = $f.value; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  28236. f = this;
  28237. p = $newDataPointer(0, ptrType$11);
  28238. $r = f.IntVar(p, name, value, usage); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  28239. return p;
  28240. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: FlagSet.ptr.prototype.Int }; } $f.$ptr = $ptr; $f.f = f; $f.name = name; $f.p = p; $f.usage = usage; $f.value = value; $f.$s = $s; $f.$r = $r; return $f;
  28241. };
  28242. FlagSet.prototype.Int = function(name, value, usage) { return this.$val.Int(name, value, usage); };
  28243. Int = function(name, value, usage) {
  28244. var $ptr, _r, name, usage, value, $s, $r;
  28245. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; name = $f.name; usage = $f.usage; value = $f.value; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  28246. _r = $pkg.CommandLine.Int(name, value, usage); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  28247. return _r;
  28248. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Int }; } $f.$ptr = $ptr; $f._r = _r; $f.name = name; $f.usage = usage; $f.value = value; $f.$s = $s; $f.$r = $r; return $f;
  28249. };
  28250. $pkg.Int = Int;
  28251. FlagSet.ptr.prototype.Int64Var = function(p, name, value, usage) {
  28252. var $ptr, f, name, p, usage, value, $s, $r;
  28253. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; f = $f.f; name = $f.name; p = $f.p; usage = $f.usage; value = $f.value; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  28254. f = this;
  28255. $r = f.Var(newInt64Value(value, p), name, usage); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  28256. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: FlagSet.ptr.prototype.Int64Var }; } $f.$ptr = $ptr; $f.f = f; $f.name = name; $f.p = p; $f.usage = usage; $f.value = value; $f.$s = $s; $f.$r = $r; return $f;
  28257. };
  28258. FlagSet.prototype.Int64Var = function(p, name, value, usage) { return this.$val.Int64Var(p, name, value, usage); };
  28259. FlagSet.ptr.prototype.Int64 = function(name, value, usage) {
  28260. var $ptr, f, name, p, usage, value, $s, $r;
  28261. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; f = $f.f; name = $f.name; p = $f.p; usage = $f.usage; value = $f.value; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  28262. f = this;
  28263. p = $newDataPointer(new $Int64(0, 0), ptrType$12);
  28264. $r = f.Int64Var(p, name, value, usage); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  28265. return p;
  28266. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: FlagSet.ptr.prototype.Int64 }; } $f.$ptr = $ptr; $f.f = f; $f.name = name; $f.p = p; $f.usage = usage; $f.value = value; $f.$s = $s; $f.$r = $r; return $f;
  28267. };
  28268. FlagSet.prototype.Int64 = function(name, value, usage) { return this.$val.Int64(name, value, usage); };
  28269. FlagSet.ptr.prototype.UintVar = function(p, name, value, usage) {
  28270. var $ptr, f, name, p, usage, value, $s, $r;
  28271. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; f = $f.f; name = $f.name; p = $f.p; usage = $f.usage; value = $f.value; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  28272. f = this;
  28273. $r = f.Var(newUintValue(value, p), name, usage); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  28274. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: FlagSet.ptr.prototype.UintVar }; } $f.$ptr = $ptr; $f.f = f; $f.name = name; $f.p = p; $f.usage = usage; $f.value = value; $f.$s = $s; $f.$r = $r; return $f;
  28275. };
  28276. FlagSet.prototype.UintVar = function(p, name, value, usage) { return this.$val.UintVar(p, name, value, usage); };
  28277. FlagSet.ptr.prototype.Uint = function(name, value, usage) {
  28278. var $ptr, f, name, p, usage, value, $s, $r;
  28279. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; f = $f.f; name = $f.name; p = $f.p; usage = $f.usage; value = $f.value; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  28280. f = this;
  28281. p = $newDataPointer(0, ptrType$13);
  28282. $r = f.UintVar(p, name, value, usage); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  28283. return p;
  28284. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: FlagSet.ptr.prototype.Uint }; } $f.$ptr = $ptr; $f.f = f; $f.name = name; $f.p = p; $f.usage = usage; $f.value = value; $f.$s = $s; $f.$r = $r; return $f;
  28285. };
  28286. FlagSet.prototype.Uint = function(name, value, usage) { return this.$val.Uint(name, value, usage); };
  28287. FlagSet.ptr.prototype.Uint64Var = function(p, name, value, usage) {
  28288. var $ptr, f, name, p, usage, value, $s, $r;
  28289. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; f = $f.f; name = $f.name; p = $f.p; usage = $f.usage; value = $f.value; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  28290. f = this;
  28291. $r = f.Var(newUint64Value(value, p), name, usage); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  28292. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: FlagSet.ptr.prototype.Uint64Var }; } $f.$ptr = $ptr; $f.f = f; $f.name = name; $f.p = p; $f.usage = usage; $f.value = value; $f.$s = $s; $f.$r = $r; return $f;
  28293. };
  28294. FlagSet.prototype.Uint64Var = function(p, name, value, usage) { return this.$val.Uint64Var(p, name, value, usage); };
  28295. FlagSet.ptr.prototype.Uint64 = function(name, value, usage) {
  28296. var $ptr, f, name, p, usage, value, $s, $r;
  28297. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; f = $f.f; name = $f.name; p = $f.p; usage = $f.usage; value = $f.value; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  28298. f = this;
  28299. p = $newDataPointer(new $Uint64(0, 0), ptrType$14);
  28300. $r = f.Uint64Var(p, name, value, usage); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  28301. return p;
  28302. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: FlagSet.ptr.prototype.Uint64 }; } $f.$ptr = $ptr; $f.f = f; $f.name = name; $f.p = p; $f.usage = usage; $f.value = value; $f.$s = $s; $f.$r = $r; return $f;
  28303. };
  28304. FlagSet.prototype.Uint64 = function(name, value, usage) { return this.$val.Uint64(name, value, usage); };
  28305. FlagSet.ptr.prototype.StringVar = function(p, name, value, usage) {
  28306. var $ptr, f, name, p, usage, value, $s, $r;
  28307. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; f = $f.f; name = $f.name; p = $f.p; usage = $f.usage; value = $f.value; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  28308. f = this;
  28309. $r = f.Var(newStringValue(value, p), name, usage); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  28310. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: FlagSet.ptr.prototype.StringVar }; } $f.$ptr = $ptr; $f.f = f; $f.name = name; $f.p = p; $f.usage = usage; $f.value = value; $f.$s = $s; $f.$r = $r; return $f;
  28311. };
  28312. FlagSet.prototype.StringVar = function(p, name, value, usage) { return this.$val.StringVar(p, name, value, usage); };
  28313. FlagSet.ptr.prototype.String = function(name, value, usage) {
  28314. var $ptr, f, name, p, usage, value, $s, $r;
  28315. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; f = $f.f; name = $f.name; p = $f.p; usage = $f.usage; value = $f.value; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  28316. f = this;
  28317. p = $newDataPointer("", ptrType$15);
  28318. $r = f.StringVar(p, name, value, usage); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  28319. return p;
  28320. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: FlagSet.ptr.prototype.String }; } $f.$ptr = $ptr; $f.f = f; $f.name = name; $f.p = p; $f.usage = usage; $f.value = value; $f.$s = $s; $f.$r = $r; return $f;
  28321. };
  28322. FlagSet.prototype.String = function(name, value, usage) { return this.$val.String(name, value, usage); };
  28323. String = function(name, value, usage) {
  28324. var $ptr, _r, name, usage, value, $s, $r;
  28325. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; name = $f.name; usage = $f.usage; value = $f.value; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  28326. _r = $pkg.CommandLine.String(name, value, usage); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  28327. return _r;
  28328. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: String }; } $f.$ptr = $ptr; $f._r = _r; $f.name = name; $f.usage = usage; $f.value = value; $f.$s = $s; $f.$r = $r; return $f;
  28329. };
  28330. $pkg.String = String;
  28331. FlagSet.ptr.prototype.Float64Var = function(p, name, value, usage) {
  28332. var $ptr, f, name, p, usage, value, $s, $r;
  28333. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; f = $f.f; name = $f.name; p = $f.p; usage = $f.usage; value = $f.value; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  28334. f = this;
  28335. $r = f.Var(newFloat64Value(value, p), name, usage); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  28336. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: FlagSet.ptr.prototype.Float64Var }; } $f.$ptr = $ptr; $f.f = f; $f.name = name; $f.p = p; $f.usage = usage; $f.value = value; $f.$s = $s; $f.$r = $r; return $f;
  28337. };
  28338. FlagSet.prototype.Float64Var = function(p, name, value, usage) { return this.$val.Float64Var(p, name, value, usage); };
  28339. FlagSet.ptr.prototype.Float64 = function(name, value, usage) {
  28340. var $ptr, f, name, p, usage, value, $s, $r;
  28341. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; f = $f.f; name = $f.name; p = $f.p; usage = $f.usage; value = $f.value; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  28342. f = this;
  28343. p = $newDataPointer(0, ptrType$16);
  28344. $r = f.Float64Var(p, name, value, usage); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  28345. return p;
  28346. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: FlagSet.ptr.prototype.Float64 }; } $f.$ptr = $ptr; $f.f = f; $f.name = name; $f.p = p; $f.usage = usage; $f.value = value; $f.$s = $s; $f.$r = $r; return $f;
  28347. };
  28348. FlagSet.prototype.Float64 = function(name, value, usage) { return this.$val.Float64(name, value, usage); };
  28349. FlagSet.ptr.prototype.DurationVar = function(p, name, value, usage) {
  28350. var $ptr, f, name, p, usage, value, $s, $r;
  28351. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; f = $f.f; name = $f.name; p = $f.p; usage = $f.usage; value = $f.value; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  28352. f = this;
  28353. $r = f.Var(newDurationValue(value, p), name, usage); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  28354. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: FlagSet.ptr.prototype.DurationVar }; } $f.$ptr = $ptr; $f.f = f; $f.name = name; $f.p = p; $f.usage = usage; $f.value = value; $f.$s = $s; $f.$r = $r; return $f;
  28355. };
  28356. FlagSet.prototype.DurationVar = function(p, name, value, usage) { return this.$val.DurationVar(p, name, value, usage); };
  28357. FlagSet.ptr.prototype.Duration = function(name, value, usage) {
  28358. var $ptr, f, name, p, usage, value, $s, $r;
  28359. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; f = $f.f; name = $f.name; p = $f.p; usage = $f.usage; value = $f.value; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  28360. f = this;
  28361. p = $newDataPointer(new time.Duration(0, 0), ptrType$8);
  28362. $r = f.DurationVar(p, name, value, usage); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  28363. return p;
  28364. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: FlagSet.ptr.prototype.Duration }; } $f.$ptr = $ptr; $f.f = f; $f.name = name; $f.p = p; $f.usage = usage; $f.value = value; $f.$s = $s; $f.$r = $r; return $f;
  28365. };
  28366. FlagSet.prototype.Duration = function(name, value, usage) { return this.$val.Duration(name, value, usage); };
  28367. Duration = function(name, value, usage) {
  28368. var $ptr, _r, name, usage, value, $s, $r;
  28369. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; name = $f.name; usage = $f.usage; value = $f.value; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  28370. _r = $pkg.CommandLine.Duration(name, value, usage); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  28371. return _r;
  28372. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Duration }; } $f.$ptr = $ptr; $f._r = _r; $f.name = name; $f.usage = usage; $f.value = value; $f.$s = $s; $f.$r = $r; return $f;
  28373. };
  28374. $pkg.Duration = Duration;
  28375. FlagSet.ptr.prototype.Var = function(value, name, usage) {
  28376. var $ptr, _entry, _key, _r, _r$1, _r$2, _r$3, _tuple, alreadythere, f, flag, msg, name, usage, value, $s, $r;
  28377. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _entry = $f._entry; _key = $f._key; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _tuple = $f._tuple; alreadythere = $f.alreadythere; f = $f.f; flag = $f.flag; msg = $f.msg; name = $f.name; usage = $f.usage; value = $f.value; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  28378. f = this;
  28379. _r = value.String(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  28380. flag = new Flag.ptr(name, usage, value, _r);
  28381. _tuple = (_entry = f.formal[name], _entry !== undefined ? [_entry.v, true] : [ptrType$9.nil, false]); alreadythere = _tuple[1];
  28382. /* */ if (alreadythere) { $s = 2; continue; }
  28383. /* */ $s = 3; continue;
  28384. /* if (alreadythere) { */ case 2:
  28385. msg = "";
  28386. /* */ if (f.name === "") { $s = 4; continue; }
  28387. /* */ $s = 5; continue;
  28388. /* if (f.name === "") { */ case 4:
  28389. _r$1 = fmt.Sprintf("flag redefined: %s", new sliceType([new $String(name)])); /* */ $s = 7; case 7: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  28390. msg = _r$1;
  28391. $s = 6; continue;
  28392. /* } else { */ case 5:
  28393. _r$2 = fmt.Sprintf("%s flag redefined: %s", new sliceType([new $String(f.name), new $String(name)])); /* */ $s = 8; case 8: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  28394. msg = _r$2;
  28395. /* } */ case 6:
  28396. _r$3 = fmt.Fprintln(f.out(), new sliceType([new $String(msg)])); /* */ $s = 9; case 9: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  28397. _r$3;
  28398. $panic(new $String(msg));
  28399. /* } */ case 3:
  28400. if (f.formal === false) {
  28401. f.formal = new $Map();
  28402. }
  28403. _key = name; (f.formal || $throwRuntimeError("assignment to entry in nil map"))[_key] = { k: _key, v: flag };
  28404. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: FlagSet.ptr.prototype.Var }; } $f.$ptr = $ptr; $f._entry = _entry; $f._key = _key; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._tuple = _tuple; $f.alreadythere = alreadythere; $f.f = f; $f.flag = flag; $f.msg = msg; $f.name = name; $f.usage = usage; $f.value = value; $f.$s = $s; $f.$r = $r; return $f;
  28405. };
  28406. FlagSet.prototype.Var = function(value, name, usage) { return this.$val.Var(value, name, usage); };
  28407. FlagSet.ptr.prototype.failf = function(format, a) {
  28408. var $ptr, _r, _r$1, a, err, f, format, $s, $r;
  28409. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; a = $f.a; err = $f.err; f = $f.f; format = $f.format; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  28410. f = this;
  28411. _r = fmt.Errorf(format, a); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  28412. err = _r;
  28413. _r$1 = fmt.Fprintln(f.out(), new sliceType([err])); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  28414. _r$1;
  28415. $r = f.usage(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  28416. return err;
  28417. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: FlagSet.ptr.prototype.failf }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f.a = a; $f.err = err; $f.f = f; $f.format = format; $f.$s = $s; $f.$r = $r; return $f;
  28418. };
  28419. FlagSet.prototype.failf = function(format, a) { return this.$val.failf(format, a); };
  28420. FlagSet.ptr.prototype.usage = function() {
  28421. var $ptr, f, $s, $r;
  28422. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; f = $f.f; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  28423. f = this;
  28424. /* */ if (f.Usage === $throwNilPointerError) { $s = 1; continue; }
  28425. /* */ $s = 2; continue;
  28426. /* if (f.Usage === $throwNilPointerError) { */ case 1:
  28427. /* */ if (f === $pkg.CommandLine) { $s = 4; continue; }
  28428. /* */ $s = 5; continue;
  28429. /* if (f === $pkg.CommandLine) { */ case 4:
  28430. $r = $pkg.Usage(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  28431. $s = 6; continue;
  28432. /* } else { */ case 5:
  28433. $r = defaultUsage(f); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  28434. /* } */ case 6:
  28435. $s = 3; continue;
  28436. /* } else { */ case 2:
  28437. $r = f.Usage(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  28438. /* } */ case 3:
  28439. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: FlagSet.ptr.prototype.usage }; } $f.$ptr = $ptr; $f.f = f; $f.$s = $s; $f.$r = $r; return $f;
  28440. };
  28441. FlagSet.prototype.usage = function() { return this.$val.usage(); };
  28442. FlagSet.ptr.prototype.parseOne = function() {
  28443. var $ptr, _entry, _key, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _tmp, _tmp$1, _tuple, _tuple$1, _v, alreadythere, err, err$1, f, flag, fv, has_value, i, m, name, num_minuses, ok, s, value, x$1, x$2, $s, $r;
  28444. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _entry = $f._entry; _key = $f._key; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _v = $f._v; alreadythere = $f.alreadythere; err = $f.err; err$1 = $f.err$1; f = $f.f; flag = $f.flag; fv = $f.fv; has_value = $f.has_value; i = $f.i; m = $f.m; name = $f.name; num_minuses = $f.num_minuses; ok = $f.ok; s = $f.s; value = $f.value; x$1 = $f.x$1; x$2 = $f.x$2; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  28445. f = this;
  28446. if (f.args.$length === 0) {
  28447. return [false, $ifaceNil];
  28448. }
  28449. s = (x$1 = f.args, (0 >= x$1.$length ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + 0]));
  28450. if ((s.length === 0) || !((s.charCodeAt(0) === 45)) || (s.length === 1)) {
  28451. return [false, $ifaceNil];
  28452. }
  28453. num_minuses = 1;
  28454. if (s.charCodeAt(1) === 45) {
  28455. num_minuses = num_minuses + (1) >> 0;
  28456. if (s.length === 2) {
  28457. f.args = $subslice(f.args, 1);
  28458. return [false, $ifaceNil];
  28459. }
  28460. }
  28461. name = s.substring(num_minuses);
  28462. /* */ if ((name.length === 0) || (name.charCodeAt(0) === 45) || (name.charCodeAt(0) === 61)) { $s = 1; continue; }
  28463. /* */ $s = 2; continue;
  28464. /* if ((name.length === 0) || (name.charCodeAt(0) === 45) || (name.charCodeAt(0) === 61)) { */ case 1:
  28465. _r = f.failf("bad flag syntax: %s", new sliceType([new $String(s)])); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  28466. return [false, _r];
  28467. /* } */ case 2:
  28468. f.args = $subslice(f.args, 1);
  28469. has_value = false;
  28470. value = "";
  28471. i = 1;
  28472. while (true) {
  28473. if (!(i < name.length)) { break; }
  28474. if (name.charCodeAt(i) === 61) {
  28475. value = name.substring((i + 1 >> 0));
  28476. has_value = true;
  28477. name = name.substring(0, i);
  28478. break;
  28479. }
  28480. i = i + (1) >> 0;
  28481. }
  28482. m = f.formal;
  28483. _tuple = (_entry = m[name], _entry !== undefined ? [_entry.v, true] : [ptrType$9.nil, false]); flag = _tuple[0]; alreadythere = _tuple[1];
  28484. /* */ if (!alreadythere) { $s = 4; continue; }
  28485. /* */ $s = 5; continue;
  28486. /* if (!alreadythere) { */ case 4:
  28487. /* */ if (name === "help" || name === "h") { $s = 6; continue; }
  28488. /* */ $s = 7; continue;
  28489. /* if (name === "help" || name === "h") { */ case 6:
  28490. $r = f.usage(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  28491. return [false, $pkg.ErrHelp];
  28492. /* } */ case 7:
  28493. _r$1 = f.failf("flag provided but not defined: -%s", new sliceType([new $String(name)])); /* */ $s = 9; case 9: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  28494. return [false, _r$1];
  28495. /* } */ case 5:
  28496. _tuple$1 = $assertType(flag.Value, boolFlag, true); fv = _tuple$1[0]; ok = _tuple$1[1];
  28497. if (!(ok)) { _v = false; $s = 13; continue s; }
  28498. _r$2 = fv.IsBoolFlag(); /* */ $s = 14; case 14: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  28499. _v = _r$2; case 13:
  28500. /* */ if (_v) { $s = 10; continue; }
  28501. /* */ $s = 11; continue;
  28502. /* if (_v) { */ case 10:
  28503. /* */ if (has_value) { $s = 15; continue; }
  28504. /* */ $s = 16; continue;
  28505. /* if (has_value) { */ case 15:
  28506. _r$3 = fv.Set(value); /* */ $s = 18; case 18: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  28507. err = _r$3;
  28508. /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 19; continue; }
  28509. /* */ $s = 20; continue;
  28510. /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 19:
  28511. _r$4 = f.failf("invalid boolean value %q for -%s: %v", new sliceType([new $String(value), new $String(name), err])); /* */ $s = 21; case 21: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
  28512. return [false, _r$4];
  28513. /* } */ case 20:
  28514. $s = 17; continue;
  28515. /* } else { */ case 16:
  28516. _r$5 = fv.Set("true"); /* */ $s = 22; case 22: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
  28517. _r$5;
  28518. /* } */ case 17:
  28519. $s = 12; continue;
  28520. /* } else { */ case 11:
  28521. if (!has_value && f.args.$length > 0) {
  28522. has_value = true;
  28523. _tmp = (x$2 = f.args, (0 >= x$2.$length ? $throwRuntimeError("index out of range") : x$2.$array[x$2.$offset + 0])); _tmp$1 = $subslice(f.args, 1); value = _tmp; f.args = _tmp$1;
  28524. }
  28525. /* */ if (!has_value) { $s = 23; continue; }
  28526. /* */ $s = 24; continue;
  28527. /* if (!has_value) { */ case 23:
  28528. _r$6 = f.failf("flag needs an argument: -%s", new sliceType([new $String(name)])); /* */ $s = 25; case 25: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
  28529. return [false, _r$6];
  28530. /* } */ case 24:
  28531. _r$7 = flag.Value.Set(value); /* */ $s = 26; case 26: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
  28532. err$1 = _r$7;
  28533. /* */ if (!($interfaceIsEqual(err$1, $ifaceNil))) { $s = 27; continue; }
  28534. /* */ $s = 28; continue;
  28535. /* if (!($interfaceIsEqual(err$1, $ifaceNil))) { */ case 27:
  28536. _r$8 = f.failf("invalid value %q for flag -%s: %v", new sliceType([new $String(value), new $String(name), err$1])); /* */ $s = 29; case 29: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
  28537. return [false, _r$8];
  28538. /* } */ case 28:
  28539. /* } */ case 12:
  28540. if (f.actual === false) {
  28541. f.actual = new $Map();
  28542. }
  28543. _key = name; (f.actual || $throwRuntimeError("assignment to entry in nil map"))[_key] = { k: _key, v: flag };
  28544. return [true, $ifaceNil];
  28545. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: FlagSet.ptr.prototype.parseOne }; } $f.$ptr = $ptr; $f._entry = _entry; $f._key = _key; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._v = _v; $f.alreadythere = alreadythere; $f.err = err; $f.err$1 = err$1; $f.f = f; $f.flag = flag; $f.fv = fv; $f.has_value = has_value; $f.i = i; $f.m = m; $f.name = name; $f.num_minuses = num_minuses; $f.ok = ok; $f.s = s; $f.value = value; $f.x$1 = x$1; $f.x$2 = x$2; $f.$s = $s; $f.$r = $r; return $f;
  28546. };
  28547. FlagSet.prototype.parseOne = function() { return this.$val.parseOne(); };
  28548. FlagSet.ptr.prototype.Parse = function(arguments$1) {
  28549. var $ptr, _r, _ref, _tuple, arguments$1, err, f, seen, $s, $r;
  28550. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _ref = $f._ref; _tuple = $f._tuple; arguments$1 = $f.arguments$1; err = $f.err; f = $f.f; seen = $f.seen; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  28551. f = this;
  28552. f.parsed = true;
  28553. f.args = arguments$1;
  28554. /* while (true) { */ case 1:
  28555. _r = f.parseOne(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  28556. _tuple = _r; seen = _tuple[0]; err = _tuple[1];
  28557. if (seen) {
  28558. /* continue; */ $s = 1; continue;
  28559. }
  28560. if ($interfaceIsEqual(err, $ifaceNil)) {
  28561. /* break; */ $s = 2; continue;
  28562. }
  28563. _ref = f.errorHandling;
  28564. if (_ref === 0) {
  28565. return err;
  28566. } else if (_ref === 1) {
  28567. os.Exit(2);
  28568. } else if (_ref === 2) {
  28569. $panic(err);
  28570. }
  28571. /* } */ $s = 1; continue; case 2:
  28572. return $ifaceNil;
  28573. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: FlagSet.ptr.prototype.Parse }; } $f.$ptr = $ptr; $f._r = _r; $f._ref = _ref; $f._tuple = _tuple; $f.arguments$1 = arguments$1; $f.err = err; $f.f = f; $f.seen = seen; $f.$s = $s; $f.$r = $r; return $f;
  28574. };
  28575. FlagSet.prototype.Parse = function(arguments$1) { return this.$val.Parse(arguments$1); };
  28576. FlagSet.ptr.prototype.Parsed = function() {
  28577. var $ptr, f;
  28578. f = this;
  28579. return f.parsed;
  28580. };
  28581. FlagSet.prototype.Parsed = function() { return this.$val.Parsed(); };
  28582. NewFlagSet = function(name, errorHandling) {
  28583. var $ptr, errorHandling, f, name;
  28584. f = new FlagSet.ptr($throwNilPointerError, name, false, false, false, sliceType$2.nil, errorHandling, $ifaceNil);
  28585. return f;
  28586. };
  28587. $pkg.NewFlagSet = NewFlagSet;
  28588. FlagSet.ptr.prototype.Init = function(name, errorHandling) {
  28589. var $ptr, errorHandling, f, name;
  28590. f = this;
  28591. f.name = name;
  28592. f.errorHandling = errorHandling;
  28593. };
  28594. FlagSet.prototype.Init = function(name, errorHandling) { return this.$val.Init(name, errorHandling); };
  28595. ptrType.methods = [{prop: "Set", name: "Set", pkg: "", typ: $funcType([$String], [$error], false)}, {prop: "Get", name: "Get", pkg: "", typ: $funcType([], [$emptyInterface], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "IsBoolFlag", name: "IsBoolFlag", pkg: "", typ: $funcType([], [$Bool], false)}];
  28596. ptrType$1.methods = [{prop: "Set", name: "Set", pkg: "", typ: $funcType([$String], [$error], false)}, {prop: "Get", name: "Get", pkg: "", typ: $funcType([], [$emptyInterface], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}];
  28597. ptrType$2.methods = [{prop: "Set", name: "Set", pkg: "", typ: $funcType([$String], [$error], false)}, {prop: "Get", name: "Get", pkg: "", typ: $funcType([], [$emptyInterface], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}];
  28598. ptrType$3.methods = [{prop: "Set", name: "Set", pkg: "", typ: $funcType([$String], [$error], false)}, {prop: "Get", name: "Get", pkg: "", typ: $funcType([], [$emptyInterface], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}];
  28599. ptrType$4.methods = [{prop: "Set", name: "Set", pkg: "", typ: $funcType([$String], [$error], false)}, {prop: "Get", name: "Get", pkg: "", typ: $funcType([], [$emptyInterface], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}];
  28600. ptrType$5.methods = [{prop: "Set", name: "Set", pkg: "", typ: $funcType([$String], [$error], false)}, {prop: "Get", name: "Get", pkg: "", typ: $funcType([], [$emptyInterface], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}];
  28601. ptrType$6.methods = [{prop: "Set", name: "Set", pkg: "", typ: $funcType([$String], [$error], false)}, {prop: "Get", name: "Get", pkg: "", typ: $funcType([], [$emptyInterface], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}];
  28602. ptrType$7.methods = [{prop: "Set", name: "Set", pkg: "", typ: $funcType([$String], [$error], false)}, {prop: "Get", name: "Get", pkg: "", typ: $funcType([], [$emptyInterface], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}];
  28603. ptrType$17.methods = [{prop: "out", name: "out", pkg: "flag", typ: $funcType([], [io.Writer], false)}, {prop: "SetOutput", name: "SetOutput", pkg: "", typ: $funcType([io.Writer], [], false)}, {prop: "VisitAll", name: "VisitAll", pkg: "", typ: $funcType([funcType], [], false)}, {prop: "Visit", name: "Visit", pkg: "", typ: $funcType([funcType], [], false)}, {prop: "Lookup", name: "Lookup", pkg: "", typ: $funcType([$String], [ptrType$9], false)}, {prop: "Set", name: "Set", pkg: "", typ: $funcType([$String, $String], [$error], false)}, {prop: "PrintDefaults", name: "PrintDefaults", pkg: "", typ: $funcType([], [], false)}, {prop: "NFlag", name: "NFlag", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Arg", name: "Arg", pkg: "", typ: $funcType([$Int], [$String], false)}, {prop: "NArg", name: "NArg", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Args", name: "Args", pkg: "", typ: $funcType([], [sliceType$2], false)}, {prop: "BoolVar", name: "BoolVar", pkg: "", typ: $funcType([ptrType$10, $String, $Bool, $String], [], false)}, {prop: "Bool", name: "Bool", pkg: "", typ: $funcType([$String, $Bool, $String], [ptrType$10], false)}, {prop: "IntVar", name: "IntVar", pkg: "", typ: $funcType([ptrType$11, $String, $Int, $String], [], false)}, {prop: "Int", name: "Int", pkg: "", typ: $funcType([$String, $Int, $String], [ptrType$11], false)}, {prop: "Int64Var", name: "Int64Var", pkg: "", typ: $funcType([ptrType$12, $String, $Int64, $String], [], false)}, {prop: "Int64", name: "Int64", pkg: "", typ: $funcType([$String, $Int64, $String], [ptrType$12], false)}, {prop: "UintVar", name: "UintVar", pkg: "", typ: $funcType([ptrType$13, $String, $Uint, $String], [], false)}, {prop: "Uint", name: "Uint", pkg: "", typ: $funcType([$String, $Uint, $String], [ptrType$13], false)}, {prop: "Uint64Var", name: "Uint64Var", pkg: "", typ: $funcType([ptrType$14, $String, $Uint64, $String], [], false)}, {prop: "Uint64", name: "Uint64", pkg: "", typ: $funcType([$String, $Uint64, $String], [ptrType$14], false)}, {prop: "StringVar", name: "StringVar", pkg: "", typ: $funcType([ptrType$15, $String, $String, $String], [], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([$String, $String, $String], [ptrType$15], false)}, {prop: "Float64Var", name: "Float64Var", pkg: "", typ: $funcType([ptrType$16, $String, $Float64, $String], [], false)}, {prop: "Float64", name: "Float64", pkg: "", typ: $funcType([$String, $Float64, $String], [ptrType$16], false)}, {prop: "DurationVar", name: "DurationVar", pkg: "", typ: $funcType([ptrType$8, $String, time.Duration, $String], [], false)}, {prop: "Duration", name: "Duration", pkg: "", typ: $funcType([$String, time.Duration, $String], [ptrType$8], false)}, {prop: "Var", name: "Var", pkg: "", typ: $funcType([Value, $String, $String], [], false)}, {prop: "failf", name: "failf", pkg: "flag", typ: $funcType([$String, sliceType], [$error], true)}, {prop: "usage", name: "usage", pkg: "flag", typ: $funcType([], [], false)}, {prop: "parseOne", name: "parseOne", pkg: "flag", typ: $funcType([], [$Bool, $error], false)}, {prop: "Parse", name: "Parse", pkg: "", typ: $funcType([sliceType$2], [$error], false)}, {prop: "Parsed", name: "Parsed", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "Init", name: "Init", pkg: "", typ: $funcType([$String, ErrorHandling], [], false)}];
  28604. boolFlag.init([{prop: "IsBoolFlag", name: "IsBoolFlag", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "Set", name: "Set", pkg: "", typ: $funcType([$String], [$error], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}]);
  28605. Value.init([{prop: "Set", name: "Set", pkg: "", typ: $funcType([$String], [$error], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}]);
  28606. FlagSet.init([{prop: "Usage", name: "Usage", pkg: "", typ: funcType$1, tag: ""}, {prop: "name", name: "name", pkg: "flag", typ: $String, tag: ""}, {prop: "parsed", name: "parsed", pkg: "flag", typ: $Bool, tag: ""}, {prop: "actual", name: "actual", pkg: "flag", typ: mapType, tag: ""}, {prop: "formal", name: "formal", pkg: "flag", typ: mapType, tag: ""}, {prop: "args", name: "args", pkg: "flag", typ: sliceType$2, tag: ""}, {prop: "errorHandling", name: "errorHandling", pkg: "flag", typ: ErrorHandling, tag: ""}, {prop: "output", name: "output", pkg: "flag", typ: io.Writer, tag: ""}]);
  28607. Flag.init([{prop: "Name", name: "Name", pkg: "", typ: $String, tag: ""}, {prop: "Usage", name: "Usage", pkg: "", typ: $String, tag: ""}, {prop: "Value", name: "Value", pkg: "", typ: Value, tag: ""}, {prop: "DefValue", name: "DefValue", pkg: "", typ: $String, tag: ""}]);
  28608. $init = function() {
  28609. $pkg.$init = function() {};
  28610. /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  28611. $r = errors.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  28612. $r = fmt.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  28613. $r = io.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  28614. $r = os.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  28615. $r = sort.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  28616. $r = strconv.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  28617. $r = time.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  28618. $pkg.ErrHelp = errors.New("flag: help requested");
  28619. $pkg.CommandLine = NewFlagSet((x = os.Args, (0 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 0])), 1);
  28620. $pkg.Usage = (function $b() {
  28621. var $ptr, _r, x$1, $s, $r;
  28622. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; x$1 = $f.x$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  28623. _r = fmt.Fprintf(os.Stderr, "Usage of %s:\n", new sliceType([new $String((x$1 = os.Args, (0 >= x$1.$length ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + 0])))])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  28624. _r;
  28625. $r = PrintDefaults(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  28626. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: $b }; } $f.$ptr = $ptr; $f._r = _r; $f.x$1 = x$1; $f.$s = $s; $f.$r = $r; return $f;
  28627. });
  28628. /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
  28629. };
  28630. $pkg.$init = $init;
  28631. return $pkg;
  28632. })();
  28633. $packages["runtime/pprof"] = (function() {
  28634. var $pkg = {}, $init, io, sync;
  28635. io = $packages["io"];
  28636. sync = $packages["sync"];
  28637. $init = function() {
  28638. $pkg.$init = function() {};
  28639. /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  28640. $r = io.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  28641. $r = sync.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  28642. /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
  28643. };
  28644. $pkg.$init = $init;
  28645. return $pkg;
  28646. })();
  28647. $packages["testing"] = (function() {
  28648. var $pkg = {}, $init, bytes, flag, fmt, nosync, io, os, runtime, pprof, strconv, strings, atomic, time, matchBenchmarks, benchTime, benchmarkMemory, short$1, outputDir, chatty, coverProfile, match, memProfile, memProfileRate, cpuProfile, blockProfile, blockProfileRate, timeout, cpuListStr, parallel, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15;
  28649. bytes = $packages["bytes"];
  28650. flag = $packages["flag"];
  28651. fmt = $packages["fmt"];
  28652. nosync = $packages["github.com/gopherjs/gopherjs/nosync"];
  28653. io = $packages["io"];
  28654. os = $packages["os"];
  28655. runtime = $packages["runtime"];
  28656. pprof = $packages["runtime/pprof"];
  28657. strconv = $packages["strconv"];
  28658. strings = $packages["strings"];
  28659. atomic = $packages["sync/atomic"];
  28660. time = $packages["time"];
  28661. $init = function() {
  28662. $pkg.$init = function() {};
  28663. /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  28664. $r = bytes.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  28665. $r = flag.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  28666. $r = fmt.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  28667. $r = nosync.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  28668. $r = io.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  28669. $r = os.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  28670. $r = runtime.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  28671. $r = pprof.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  28672. $r = strconv.$init(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  28673. $r = strings.$init(); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  28674. $r = atomic.$init(); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  28675. $r = time.$init(); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  28676. _r = flag.String("test.bench", "", "regular expression to select benchmarks to run"); /* */ $s = 13; case 13: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  28677. matchBenchmarks = _r;
  28678. _r$1 = flag.Duration("test.benchtime", new time.Duration(0, 1000000000), "approximate run time for each benchmark"); /* */ $s = 14; case 14: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  28679. benchTime = _r$1;
  28680. _r$2 = flag.Bool("test.benchmem", false, "print memory allocations for benchmarks"); /* */ $s = 15; case 15: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  28681. benchmarkMemory = _r$2;
  28682. _r$3 = flag.Bool("test.short", false, "run smaller test suite to save time"); /* */ $s = 16; case 16: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  28683. short$1 = _r$3;
  28684. _r$4 = flag.String("test.outputdir", "", "directory in which to write profiles"); /* */ $s = 17; case 17: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
  28685. outputDir = _r$4;
  28686. _r$5 = flag.Bool("test.v", false, "verbose: print additional output"); /* */ $s = 18; case 18: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
  28687. chatty = _r$5;
  28688. _r$6 = flag.String("test.coverprofile", "", "write a coverage profile to the named file after execution"); /* */ $s = 19; case 19: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
  28689. coverProfile = _r$6;
  28690. _r$7 = flag.String("test.run", "", "regular expression to select tests and examples to run"); /* */ $s = 20; case 20: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
  28691. match = _r$7;
  28692. _r$8 = flag.String("test.memprofile", "", "write a memory profile to the named file after execution"); /* */ $s = 21; case 21: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
  28693. memProfile = _r$8;
  28694. _r$9 = flag.Int("test.memprofilerate", 0, "if >=0, sets runtime.MemProfileRate"); /* */ $s = 22; case 22: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
  28695. memProfileRate = _r$9;
  28696. _r$10 = flag.String("test.cpuprofile", "", "write a cpu profile to the named file during execution"); /* */ $s = 23; case 23: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
  28697. cpuProfile = _r$10;
  28698. _r$11 = flag.String("test.blockprofile", "", "write a goroutine blocking profile to the named file after execution"); /* */ $s = 24; case 24: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
  28699. blockProfile = _r$11;
  28700. _r$12 = flag.Int("test.blockprofilerate", 1, "if >= 0, calls runtime.SetBlockProfileRate()"); /* */ $s = 25; case 25: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; }
  28701. blockProfileRate = _r$12;
  28702. _r$13 = flag.Duration("test.timeout", new time.Duration(0, 0), "if positive, sets an aggregate time limit for all tests"); /* */ $s = 26; case 26: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; }
  28703. timeout = _r$13;
  28704. _r$14 = flag.String("test.cpu", "", "comma-separated list of number of CPUs to use for each test"); /* */ $s = 27; case 27: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; }
  28705. cpuListStr = _r$14;
  28706. _r$15 = flag.Int("test.parallel", runtime.GOMAXPROCS(0), "maximum test parallelism"); /* */ $s = 28; case 28: if($c) { $c = false; _r$15 = _r$15.$blk(); } if (_r$15 && _r$15.$blk !== undefined) { break s; }
  28707. parallel = _r$15;
  28708. /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
  28709. };
  28710. $pkg.$init = $init;
  28711. return $pkg;
  28712. })();
  28713. $packages["regexp"] = (function() {
  28714. var $pkg = {}, $init, bytes, nosync, io, syntax, sort, strconv, strings, testing, unicode, utf8, queue, entry, thread, machine, onePassProg, onePassInst, queueOnePass, runeSlice, Regexp, input, inputString, inputBytes, inputReader, sliceType, sliceType$1, sliceType$2, ptrType, sliceType$3, ptrType$1, ptrType$2, ptrType$3, sliceType$5, sliceType$6, ptrType$4, ptrType$5, sliceType$7, ptrType$6, sliceType$8, ptrType$7, sliceType$9, ptrType$8, sliceType$10, sliceType$11, sliceType$12, sliceType$13, sliceType$14, ptrType$9, ptrType$10, funcType, funcType$1, funcType$2, funcType$3, ptrType$11, ptrType$12, ptrType$13, empty, noRune, noNext, anyRuneNotNL, anyRune, notOnePass, progMachine, onePassPrefix, onePassNext, iop, newQueue, mergeRuneSets, cleanupOnePass, onePassCopy, makeOnePass, compileOnePass, Compile, compile, MustCompile, quote, extract;
  28715. bytes = $packages["bytes"];
  28716. nosync = $packages["github.com/gopherjs/gopherjs/nosync"];
  28717. io = $packages["io"];
  28718. syntax = $packages["regexp/syntax"];
  28719. sort = $packages["sort"];
  28720. strconv = $packages["strconv"];
  28721. strings = $packages["strings"];
  28722. testing = $packages["testing"];
  28723. unicode = $packages["unicode"];
  28724. utf8 = $packages["unicode/utf8"];
  28725. queue = $pkg.queue = $newType(0, $kindStruct, "regexp.queue", "queue", "regexp", function(sparse_, dense_) {
  28726. this.$val = this;
  28727. if (arguments.length === 0) {
  28728. this.sparse = sliceType$2.nil;
  28729. this.dense = sliceType$6.nil;
  28730. return;
  28731. }
  28732. this.sparse = sparse_;
  28733. this.dense = dense_;
  28734. });
  28735. entry = $pkg.entry = $newType(0, $kindStruct, "regexp.entry", "entry", "regexp", function(pc_, t_) {
  28736. this.$val = this;
  28737. if (arguments.length === 0) {
  28738. this.pc = 0;
  28739. this.t = ptrType$3.nil;
  28740. return;
  28741. }
  28742. this.pc = pc_;
  28743. this.t = t_;
  28744. });
  28745. thread = $pkg.thread = $newType(0, $kindStruct, "regexp.thread", "thread", "regexp", function(inst_, cap_) {
  28746. this.$val = this;
  28747. if (arguments.length === 0) {
  28748. this.inst = ptrType$9.nil;
  28749. this.cap = sliceType.nil;
  28750. return;
  28751. }
  28752. this.inst = inst_;
  28753. this.cap = cap_;
  28754. });
  28755. machine = $pkg.machine = $newType(0, $kindStruct, "regexp.machine", "machine", "regexp", function(re_, p_, op_, q0_, q1_, pool_, matched_, matchcap_, inputBytes_, inputString_, inputReader_) {
  28756. this.$val = this;
  28757. if (arguments.length === 0) {
  28758. this.re = ptrType$1.nil;
  28759. this.p = ptrType$2.nil;
  28760. this.op = ptrType.nil;
  28761. this.q0 = new queue.ptr();
  28762. this.q1 = new queue.ptr();
  28763. this.pool = sliceType$5.nil;
  28764. this.matched = false;
  28765. this.matchcap = sliceType.nil;
  28766. this.inputBytes = new inputBytes.ptr();
  28767. this.inputString = new inputString.ptr();
  28768. this.inputReader = new inputReader.ptr();
  28769. return;
  28770. }
  28771. this.re = re_;
  28772. this.p = p_;
  28773. this.op = op_;
  28774. this.q0 = q0_;
  28775. this.q1 = q1_;
  28776. this.pool = pool_;
  28777. this.matched = matched_;
  28778. this.matchcap = matchcap_;
  28779. this.inputBytes = inputBytes_;
  28780. this.inputString = inputString_;
  28781. this.inputReader = inputReader_;
  28782. });
  28783. onePassProg = $pkg.onePassProg = $newType(0, $kindStruct, "regexp.onePassProg", "onePassProg", "regexp", function(Inst_, Start_, NumCap_) {
  28784. this.$val = this;
  28785. if (arguments.length === 0) {
  28786. this.Inst = sliceType$7.nil;
  28787. this.Start = 0;
  28788. this.NumCap = 0;
  28789. return;
  28790. }
  28791. this.Inst = Inst_;
  28792. this.Start = Start_;
  28793. this.NumCap = NumCap_;
  28794. });
  28795. onePassInst = $pkg.onePassInst = $newType(0, $kindStruct, "regexp.onePassInst", "onePassInst", "regexp", function(Inst_, Next_) {
  28796. this.$val = this;
  28797. if (arguments.length === 0) {
  28798. this.Inst = new syntax.Inst.ptr();
  28799. this.Next = sliceType$2.nil;
  28800. return;
  28801. }
  28802. this.Inst = Inst_;
  28803. this.Next = Next_;
  28804. });
  28805. queueOnePass = $pkg.queueOnePass = $newType(0, $kindStruct, "regexp.queueOnePass", "queueOnePass", "regexp", function(sparse_, dense_, size_, nextIndex_) {
  28806. this.$val = this;
  28807. if (arguments.length === 0) {
  28808. this.sparse = sliceType$2.nil;
  28809. this.dense = sliceType$2.nil;
  28810. this.size = 0;
  28811. this.nextIndex = 0;
  28812. return;
  28813. }
  28814. this.sparse = sparse_;
  28815. this.dense = dense_;
  28816. this.size = size_;
  28817. this.nextIndex = nextIndex_;
  28818. });
  28819. runeSlice = $pkg.runeSlice = $newType(12, $kindSlice, "regexp.runeSlice", "runeSlice", "regexp", null);
  28820. Regexp = $pkg.Regexp = $newType(0, $kindStruct, "regexp.Regexp", "Regexp", "regexp", function(expr_, prog_, onepass_, prefix_, prefixBytes_, prefixComplete_, prefixRune_, prefixEnd_, cond_, numSubexp_, subexpNames_, longest_, mu_, machine_) {
  28821. this.$val = this;
  28822. if (arguments.length === 0) {
  28823. this.expr = "";
  28824. this.prog = ptrType$2.nil;
  28825. this.onepass = ptrType.nil;
  28826. this.prefix = "";
  28827. this.prefixBytes = sliceType$3.nil;
  28828. this.prefixComplete = false;
  28829. this.prefixRune = 0;
  28830. this.prefixEnd = 0;
  28831. this.cond = 0;
  28832. this.numSubexp = 0;
  28833. this.subexpNames = sliceType$9.nil;
  28834. this.longest = false;
  28835. this.mu = new nosync.Mutex.ptr();
  28836. this.machine = sliceType$10.nil;
  28837. return;
  28838. }
  28839. this.expr = expr_;
  28840. this.prog = prog_;
  28841. this.onepass = onepass_;
  28842. this.prefix = prefix_;
  28843. this.prefixBytes = prefixBytes_;
  28844. this.prefixComplete = prefixComplete_;
  28845. this.prefixRune = prefixRune_;
  28846. this.prefixEnd = prefixEnd_;
  28847. this.cond = cond_;
  28848. this.numSubexp = numSubexp_;
  28849. this.subexpNames = subexpNames_;
  28850. this.longest = longest_;
  28851. this.mu = mu_;
  28852. this.machine = machine_;
  28853. });
  28854. input = $pkg.input = $newType(8, $kindInterface, "regexp.input", "input", "regexp", null);
  28855. inputString = $pkg.inputString = $newType(0, $kindStruct, "regexp.inputString", "inputString", "regexp", function(str_) {
  28856. this.$val = this;
  28857. if (arguments.length === 0) {
  28858. this.str = "";
  28859. return;
  28860. }
  28861. this.str = str_;
  28862. });
  28863. inputBytes = $pkg.inputBytes = $newType(0, $kindStruct, "regexp.inputBytes", "inputBytes", "regexp", function(str_) {
  28864. this.$val = this;
  28865. if (arguments.length === 0) {
  28866. this.str = sliceType$3.nil;
  28867. return;
  28868. }
  28869. this.str = str_;
  28870. });
  28871. inputReader = $pkg.inputReader = $newType(0, $kindStruct, "regexp.inputReader", "inputReader", "regexp", function(r_, atEOT_, pos_) {
  28872. this.$val = this;
  28873. if (arguments.length === 0) {
  28874. this.r = $ifaceNil;
  28875. this.atEOT = false;
  28876. this.pos = 0;
  28877. return;
  28878. }
  28879. this.r = r_;
  28880. this.atEOT = atEOT_;
  28881. this.pos = pos_;
  28882. });
  28883. sliceType = $sliceType($Int);
  28884. sliceType$1 = $sliceType($Int32);
  28885. sliceType$2 = $sliceType($Uint32);
  28886. ptrType = $ptrType(onePassProg);
  28887. sliceType$3 = $sliceType($Uint8);
  28888. ptrType$1 = $ptrType(Regexp);
  28889. ptrType$2 = $ptrType(syntax.Prog);
  28890. ptrType$3 = $ptrType(thread);
  28891. sliceType$5 = $sliceType(ptrType$3);
  28892. sliceType$6 = $sliceType(entry);
  28893. ptrType$4 = $ptrType($Int);
  28894. ptrType$5 = $ptrType(queueOnePass);
  28895. sliceType$7 = $sliceType(onePassInst);
  28896. ptrType$6 = $ptrType($Uint32);
  28897. sliceType$8 = $sliceType(sliceType$1);
  28898. ptrType$7 = $ptrType(sliceType$1);
  28899. sliceType$9 = $sliceType($String);
  28900. ptrType$8 = $ptrType(machine);
  28901. sliceType$10 = $sliceType(ptrType$8);
  28902. sliceType$11 = $sliceType(sliceType$3);
  28903. sliceType$12 = $sliceType(sliceType);
  28904. sliceType$13 = $sliceType(sliceType$11);
  28905. sliceType$14 = $sliceType(sliceType$9);
  28906. ptrType$9 = $ptrType(syntax.Inst);
  28907. ptrType$10 = $ptrType(queue);
  28908. funcType = $funcType([$String], [$String], false);
  28909. funcType$1 = $funcType([sliceType$3, sliceType], [sliceType$3], false);
  28910. funcType$2 = $funcType([sliceType$3], [sliceType$3], false);
  28911. funcType$3 = $funcType([sliceType], [], false);
  28912. ptrType$11 = $ptrType(inputString);
  28913. ptrType$12 = $ptrType(inputBytes);
  28914. ptrType$13 = $ptrType(inputReader);
  28915. machine.ptr.prototype.newInputBytes = function(b) {
  28916. var $ptr, b, m;
  28917. m = this;
  28918. m.inputBytes.str = b;
  28919. return m.inputBytes;
  28920. };
  28921. machine.prototype.newInputBytes = function(b) { return this.$val.newInputBytes(b); };
  28922. machine.ptr.prototype.newInputString = function(s) {
  28923. var $ptr, m, s;
  28924. m = this;
  28925. m.inputString.str = s;
  28926. return m.inputString;
  28927. };
  28928. machine.prototype.newInputString = function(s) { return this.$val.newInputString(s); };
  28929. machine.ptr.prototype.newInputReader = function(r) {
  28930. var $ptr, m, r;
  28931. m = this;
  28932. m.inputReader.r = r;
  28933. m.inputReader.atEOT = false;
  28934. m.inputReader.pos = 0;
  28935. return m.inputReader;
  28936. };
  28937. machine.prototype.newInputReader = function(r) { return this.$val.newInputReader(r); };
  28938. progMachine = function(p, op) {
  28939. var $ptr, m, n, ncap, op, p;
  28940. m = new machine.ptr(ptrType$1.nil, p, op, new queue.ptr(), new queue.ptr(), sliceType$5.nil, false, sliceType.nil, new inputBytes.ptr(), new inputString.ptr(), new inputReader.ptr());
  28941. n = m.p.Inst.$length;
  28942. $copy(m.q0, new queue.ptr($makeSlice(sliceType$2, n), $makeSlice(sliceType$6, 0, n)), queue);
  28943. $copy(m.q1, new queue.ptr($makeSlice(sliceType$2, n), $makeSlice(sliceType$6, 0, n)), queue);
  28944. ncap = p.NumCap;
  28945. if (ncap < 2) {
  28946. ncap = 2;
  28947. }
  28948. m.matchcap = $makeSlice(sliceType, ncap);
  28949. return m;
  28950. };
  28951. machine.ptr.prototype.init = function(ncap) {
  28952. var $ptr, _i, _ref, m, ncap, t;
  28953. m = this;
  28954. _ref = m.pool;
  28955. _i = 0;
  28956. while (true) {
  28957. if (!(_i < _ref.$length)) { break; }
  28958. t = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]);
  28959. t.cap = $subslice(t.cap, 0, ncap);
  28960. _i++;
  28961. }
  28962. m.matchcap = $subslice(m.matchcap, 0, ncap);
  28963. };
  28964. machine.prototype.init = function(ncap) { return this.$val.init(ncap); };
  28965. machine.ptr.prototype.alloc = function(i) {
  28966. var $ptr, i, m, n, t, x, x$1;
  28967. m = this;
  28968. t = ptrType$3.nil;
  28969. n = m.pool.$length;
  28970. if (n > 0) {
  28971. t = (x = m.pool, x$1 = n - 1 >> 0, ((x$1 < 0 || x$1 >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + x$1]));
  28972. m.pool = $subslice(m.pool, 0, (n - 1 >> 0));
  28973. } else {
  28974. t = new thread.ptr();
  28975. t.cap = $makeSlice(sliceType, m.matchcap.$length, m.matchcap.$capacity);
  28976. }
  28977. t.inst = i;
  28978. return t;
  28979. };
  28980. machine.prototype.alloc = function(i) { return this.$val.alloc(i); };
  28981. machine.ptr.prototype.match = function(i, pos) {
  28982. var $ptr, _i, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _ref, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _v, advance, flag, i, i$1, m, nextq, pos, r, r1, runq, startCond, width, width1, x, x$1, $s, $r;
  28983. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _i = $f._i; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _ref = $f._ref; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tmp$6 = $f._tmp$6; _tmp$7 = $f._tmp$7; _tmp$8 = $f._tmp$8; _tmp$9 = $f._tmp$9; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; _tuple$4 = $f._tuple$4; _v = $f._v; advance = $f.advance; flag = $f.flag; i = $f.i; i$1 = $f.i$1; m = $f.m; nextq = $f.nextq; pos = $f.pos; r = $f.r; r1 = $f.r1; runq = $f.runq; startCond = $f.startCond; width = $f.width; width1 = $f.width1; x = $f.x; x$1 = $f.x$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  28984. m = this;
  28985. startCond = m.re.cond;
  28986. if (startCond === 255) {
  28987. return false;
  28988. }
  28989. m.matched = false;
  28990. _ref = m.matchcap;
  28991. _i = 0;
  28992. while (true) {
  28993. if (!(_i < _ref.$length)) { break; }
  28994. i$1 = _i;
  28995. (x = m.matchcap, ((i$1 < 0 || i$1 >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + i$1] = -1));
  28996. _i++;
  28997. }
  28998. _tmp = m.q0; _tmp$1 = m.q1; runq = _tmp; nextq = _tmp$1;
  28999. _tmp$2 = -1; _tmp$3 = -1; r = _tmp$2; r1 = _tmp$3;
  29000. _tmp$4 = 0; _tmp$5 = 0; width = _tmp$4; width1 = _tmp$5;
  29001. _r = i.step(pos); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  29002. _tuple = _r; r = _tuple[0]; width = _tuple[1];
  29003. /* */ if (!((r === -1))) { $s = 2; continue; }
  29004. /* */ $s = 3; continue;
  29005. /* if (!((r === -1))) { */ case 2:
  29006. _r$1 = i.step(pos + width >> 0); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  29007. _tuple$1 = _r$1; r1 = _tuple$1[0]; width1 = _tuple$1[1];
  29008. /* } */ case 3:
  29009. flag = 0;
  29010. /* */ if (pos === 0) { $s = 5; continue; }
  29011. /* */ $s = 6; continue;
  29012. /* if (pos === 0) { */ case 5:
  29013. flag = syntax.EmptyOpContext(-1, r);
  29014. $s = 7; continue;
  29015. /* } else { */ case 6:
  29016. _r$2 = i.context(pos); /* */ $s = 8; case 8: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  29017. flag = _r$2;
  29018. /* } */ case 7:
  29019. /* while (true) { */ case 9:
  29020. /* */ if (runq.dense.$length === 0) { $s = 11; continue; }
  29021. /* */ $s = 12; continue;
  29022. /* if (runq.dense.$length === 0) { */ case 11:
  29023. if (!((((startCond & 4) >>> 0) === 0)) && !((pos === 0))) {
  29024. /* break; */ $s = 10; continue;
  29025. }
  29026. if (m.matched) {
  29027. /* break; */ $s = 10; continue;
  29028. }
  29029. if (!(m.re.prefix.length > 0 && !((r1 === m.re.prefixRune)))) { _v = false; $s = 15; continue s; }
  29030. _r$3 = i.canCheckPrefix(); /* */ $s = 16; case 16: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  29031. _v = _r$3; case 15:
  29032. /* */ if (_v) { $s = 13; continue; }
  29033. /* */ $s = 14; continue;
  29034. /* if (_v) { */ case 13:
  29035. _r$4 = i.index(m.re, pos); /* */ $s = 17; case 17: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
  29036. advance = _r$4;
  29037. if (advance < 0) {
  29038. /* break; */ $s = 10; continue;
  29039. }
  29040. pos = pos + (advance) >> 0;
  29041. _r$5 = i.step(pos); /* */ $s = 18; case 18: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
  29042. _tuple$2 = _r$5; r = _tuple$2[0]; width = _tuple$2[1];
  29043. _r$6 = i.step(pos + width >> 0); /* */ $s = 19; case 19: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
  29044. _tuple$3 = _r$6; r1 = _tuple$3[0]; width1 = _tuple$3[1];
  29045. /* } */ case 14:
  29046. /* } */ case 12:
  29047. if (!m.matched) {
  29048. if (m.matchcap.$length > 0) {
  29049. (x$1 = m.matchcap, (0 >= x$1.$length ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + 0] = pos));
  29050. }
  29051. m.add(runq, (m.p.Start >>> 0), pos, m.matchcap, flag, ptrType$3.nil);
  29052. }
  29053. flag = syntax.EmptyOpContext(r, r1);
  29054. m.step(runq, nextq, pos, pos + width >> 0, r, flag);
  29055. if (width === 0) {
  29056. /* break; */ $s = 10; continue;
  29057. }
  29058. if ((m.matchcap.$length === 0) && m.matched) {
  29059. /* break; */ $s = 10; continue;
  29060. }
  29061. pos = pos + (width) >> 0;
  29062. _tmp$6 = r1; _tmp$7 = width1; r = _tmp$6; width = _tmp$7;
  29063. /* */ if (!((r === -1))) { $s = 20; continue; }
  29064. /* */ $s = 21; continue;
  29065. /* if (!((r === -1))) { */ case 20:
  29066. _r$7 = i.step(pos + width >> 0); /* */ $s = 22; case 22: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
  29067. _tuple$4 = _r$7; r1 = _tuple$4[0]; width1 = _tuple$4[1];
  29068. /* } */ case 21:
  29069. _tmp$8 = nextq; _tmp$9 = runq; runq = _tmp$8; nextq = _tmp$9;
  29070. /* } */ $s = 9; continue; case 10:
  29071. m.clear(nextq);
  29072. return m.matched;
  29073. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: machine.ptr.prototype.match }; } $f.$ptr = $ptr; $f._i = _i; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._ref = _ref; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tmp$6 = _tmp$6; $f._tmp$7 = _tmp$7; $f._tmp$8 = _tmp$8; $f._tmp$9 = _tmp$9; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f._tuple$4 = _tuple$4; $f._v = _v; $f.advance = advance; $f.flag = flag; $f.i = i; $f.i$1 = i$1; $f.m = m; $f.nextq = nextq; $f.pos = pos; $f.r = r; $f.r1 = r1; $f.runq = runq; $f.startCond = startCond; $f.width = width; $f.width1 = width1; $f.x = x; $f.x$1 = x$1; $f.$s = $s; $f.$r = $r; return $f;
  29074. };
  29075. machine.prototype.match = function(i, pos) { return this.$val.match(i, pos); };
  29076. machine.ptr.prototype.clear = function(q) {
  29077. var $ptr, _i, _ref, d, m, q;
  29078. m = this;
  29079. _ref = q.dense;
  29080. _i = 0;
  29081. while (true) {
  29082. if (!(_i < _ref.$length)) { break; }
  29083. d = $clone(((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]), entry);
  29084. if (!(d.t === ptrType$3.nil)) {
  29085. m.pool = $append(m.pool, d.t);
  29086. }
  29087. _i++;
  29088. }
  29089. q.dense = $subslice(q.dense, 0, 0);
  29090. };
  29091. machine.prototype.clear = function(q) { return this.$val.clear(q); };
  29092. machine.ptr.prototype.step = function(runq, nextq, pos, nextPos, c, nextCond) {
  29093. var $ptr, _i, _ref, _ref$1, add, c, d, d$1, i, j, longest, m, nextCond, nextPos, nextq, pos, runq, t, x, x$1, x$2, x$3, x$4, x$5;
  29094. m = this;
  29095. longest = m.re.longest;
  29096. j = 0;
  29097. while (true) {
  29098. if (!(j < runq.dense.$length)) { break; }
  29099. d = (x = runq.dense, ((j < 0 || j >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + j]));
  29100. t = d.t;
  29101. if (t === ptrType$3.nil) {
  29102. j = j + (1) >> 0;
  29103. continue;
  29104. }
  29105. if (longest && m.matched && t.cap.$length > 0 && (x$1 = m.matchcap, (0 >= x$1.$length ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + 0])) < (x$2 = t.cap, (0 >= x$2.$length ? $throwRuntimeError("index out of range") : x$2.$array[x$2.$offset + 0]))) {
  29106. m.pool = $append(m.pool, t);
  29107. j = j + (1) >> 0;
  29108. continue;
  29109. }
  29110. i = t.inst;
  29111. add = false;
  29112. _ref = i.Op;
  29113. if (_ref === 4) {
  29114. if (t.cap.$length > 0 && (!longest || !m.matched || (x$3 = m.matchcap, (1 >= x$3.$length ? $throwRuntimeError("index out of range") : x$3.$array[x$3.$offset + 1])) < pos)) {
  29115. (x$4 = t.cap, (1 >= x$4.$length ? $throwRuntimeError("index out of range") : x$4.$array[x$4.$offset + 1] = pos));
  29116. $copySlice(m.matchcap, t.cap);
  29117. }
  29118. if (!longest) {
  29119. _ref$1 = $subslice(runq.dense, (j + 1 >> 0));
  29120. _i = 0;
  29121. while (true) {
  29122. if (!(_i < _ref$1.$length)) { break; }
  29123. d$1 = $clone(((_i < 0 || _i >= _ref$1.$length) ? $throwRuntimeError("index out of range") : _ref$1.$array[_ref$1.$offset + _i]), entry);
  29124. if (!(d$1.t === ptrType$3.nil)) {
  29125. m.pool = $append(m.pool, d$1.t);
  29126. }
  29127. _i++;
  29128. }
  29129. runq.dense = $subslice(runq.dense, 0, 0);
  29130. }
  29131. m.matched = true;
  29132. } else if (_ref === 7) {
  29133. add = i.MatchRune(c);
  29134. } else if (_ref === 8) {
  29135. add = c === (x$5 = i.Rune, (0 >= x$5.$length ? $throwRuntimeError("index out of range") : x$5.$array[x$5.$offset + 0]));
  29136. } else if (_ref === 9) {
  29137. add = true;
  29138. } else if (_ref === 10) {
  29139. add = !((c === 10));
  29140. } else {
  29141. $panic(new $String("bad inst"));
  29142. }
  29143. if (add) {
  29144. t = m.add(nextq, i.Out, nextPos, t.cap, nextCond, t);
  29145. }
  29146. if (!(t === ptrType$3.nil)) {
  29147. m.pool = $append(m.pool, t);
  29148. }
  29149. j = j + (1) >> 0;
  29150. }
  29151. runq.dense = $subslice(runq.dense, 0, 0);
  29152. };
  29153. machine.prototype.step = function(runq, nextq, pos, nextPos, c, nextCond) { return this.$val.step(runq, nextq, pos, nextPos, c, nextCond); };
  29154. machine.ptr.prototype.add = function(q, pc, pos, cap, cond, t) {
  29155. var $ptr, _ref, cap, cond, d, i, j, j$1, m, opos, pc, pos, q, t, x, x$1, x$2, x$3, x$4, x$5, x$6, x$7, x$8;
  29156. m = this;
  29157. if (pc === 0) {
  29158. return t;
  29159. }
  29160. j = (x = q.sparse, ((pc < 0 || pc >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + pc]));
  29161. if (j < (q.dense.$length >>> 0) && ((x$1 = q.dense, ((j < 0 || j >= x$1.$length) ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + j])).pc === pc)) {
  29162. return t;
  29163. }
  29164. j$1 = q.dense.$length;
  29165. q.dense = $subslice(q.dense, 0, (j$1 + 1 >> 0));
  29166. d = (x$2 = q.dense, ((j$1 < 0 || j$1 >= x$2.$length) ? $throwRuntimeError("index out of range") : x$2.$array[x$2.$offset + j$1]));
  29167. d.t = ptrType$3.nil;
  29168. d.pc = pc;
  29169. (x$3 = q.sparse, ((pc < 0 || pc >= x$3.$length) ? $throwRuntimeError("index out of range") : x$3.$array[x$3.$offset + pc] = (j$1 >>> 0)));
  29170. i = (x$4 = m.p.Inst, ((pc < 0 || pc >= x$4.$length) ? $throwRuntimeError("index out of range") : x$4.$array[x$4.$offset + pc]));
  29171. _ref = i.Op;
  29172. if (_ref === 5) {
  29173. } else if (_ref === 0 || _ref === 1) {
  29174. t = m.add(q, i.Out, pos, cap, cond, t);
  29175. t = m.add(q, i.Arg, pos, cap, cond, t);
  29176. } else if (_ref === 3) {
  29177. if ((((i.Arg << 24 >>> 24) & ~cond) << 24 >>> 24) === 0) {
  29178. t = m.add(q, i.Out, pos, cap, cond, t);
  29179. }
  29180. } else if (_ref === 6) {
  29181. t = m.add(q, i.Out, pos, cap, cond, t);
  29182. } else if (_ref === 2) {
  29183. if ((i.Arg >> 0) < cap.$length) {
  29184. opos = (x$5 = i.Arg, ((x$5 < 0 || x$5 >= cap.$length) ? $throwRuntimeError("index out of range") : cap.$array[cap.$offset + x$5]));
  29185. (x$6 = i.Arg, ((x$6 < 0 || x$6 >= cap.$length) ? $throwRuntimeError("index out of range") : cap.$array[cap.$offset + x$6] = pos));
  29186. m.add(q, i.Out, pos, cap, cond, ptrType$3.nil);
  29187. (x$7 = i.Arg, ((x$7 < 0 || x$7 >= cap.$length) ? $throwRuntimeError("index out of range") : cap.$array[cap.$offset + x$7] = opos));
  29188. } else {
  29189. t = m.add(q, i.Out, pos, cap, cond, t);
  29190. }
  29191. } else if (_ref === 4 || _ref === 7 || _ref === 8 || _ref === 9 || _ref === 10) {
  29192. if (t === ptrType$3.nil) {
  29193. t = m.alloc(i);
  29194. } else {
  29195. t.inst = i;
  29196. }
  29197. if (cap.$length > 0 && !((x$8 = t.cap, $indexPtr(x$8.$array, x$8.$offset + 0, ptrType$4)) === $indexPtr(cap.$array, cap.$offset + 0, ptrType$4))) {
  29198. $copySlice(t.cap, cap);
  29199. }
  29200. d.t = t;
  29201. t = ptrType$3.nil;
  29202. } else {
  29203. $panic(new $String("unhandled"));
  29204. }
  29205. return t;
  29206. };
  29207. machine.prototype.add = function(q, pc, pos, cap, cond, t) { return this.$val.add(q, pc, pos, cap, cond, t); };
  29208. machine.ptr.prototype.onepass = function(i, pos) {
  29209. var $ptr, _i, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _ref, _ref$1, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _v, flag, i, i$1, inst, m, pc, pos, r, r1, startCond, width, width1, x, x$1, x$2, x$3, x$4, x$5, x$6, x$7, $s, $r;
  29210. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _i = $f._i; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _ref = $f._ref; _ref$1 = $f._ref$1; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; _tuple$4 = $f._tuple$4; _v = $f._v; flag = $f.flag; i = $f.i; i$1 = $f.i$1; inst = $f.inst; m = $f.m; pc = $f.pc; pos = $f.pos; r = $f.r; r1 = $f.r1; startCond = $f.startCond; width = $f.width; width1 = $f.width1; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; x$3 = $f.x$3; x$4 = $f.x$4; x$5 = $f.x$5; x$6 = $f.x$6; x$7 = $f.x$7; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  29211. inst = [inst];
  29212. m = this;
  29213. startCond = m.re.cond;
  29214. if (startCond === 255) {
  29215. return false;
  29216. }
  29217. m.matched = false;
  29218. _ref = m.matchcap;
  29219. _i = 0;
  29220. while (true) {
  29221. if (!(_i < _ref.$length)) { break; }
  29222. i$1 = _i;
  29223. (x = m.matchcap, ((i$1 < 0 || i$1 >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + i$1] = -1));
  29224. _i++;
  29225. }
  29226. _tmp = -1; _tmp$1 = -1; r = _tmp; r1 = _tmp$1;
  29227. _tmp$2 = 0; _tmp$3 = 0; width = _tmp$2; width1 = _tmp$3;
  29228. _r = i.step(pos); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  29229. _tuple = _r; r = _tuple[0]; width = _tuple[1];
  29230. /* */ if (!((r === -1))) { $s = 2; continue; }
  29231. /* */ $s = 3; continue;
  29232. /* if (!((r === -1))) { */ case 2:
  29233. _r$1 = i.step(pos + width >> 0); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  29234. _tuple$1 = _r$1; r1 = _tuple$1[0]; width1 = _tuple$1[1];
  29235. /* } */ case 3:
  29236. flag = 0;
  29237. /* */ if (pos === 0) { $s = 5; continue; }
  29238. /* */ $s = 6; continue;
  29239. /* if (pos === 0) { */ case 5:
  29240. flag = syntax.EmptyOpContext(-1, r);
  29241. $s = 7; continue;
  29242. /* } else { */ case 6:
  29243. _r$2 = i.context(pos); /* */ $s = 8; case 8: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  29244. flag = _r$2;
  29245. /* } */ case 7:
  29246. pc = m.op.Start;
  29247. inst[0] = $clone((x$1 = m.op.Inst, ((pc < 0 || pc >= x$1.$length) ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + pc])), onePassInst);
  29248. if (!((pos === 0) && ((((inst[0].Inst.Arg << 24 >>> 24) & ~flag) << 24 >>> 24) === 0) && m.re.prefix.length > 0)) { _v = false; $s = 11; continue s; }
  29249. _r$3 = i.canCheckPrefix(); /* */ $s = 12; case 12: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  29250. _v = _r$3; case 11:
  29251. /* */ if (_v) { $s = 9; continue; }
  29252. /* */ $s = 10; continue;
  29253. /* if (_v) { */ case 9:
  29254. _r$4 = i.hasPrefix(m.re); /* */ $s = 16; case 16: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
  29255. /* */ if (_r$4) { $s = 13; continue; }
  29256. /* */ $s = 14; continue;
  29257. /* if (_r$4) { */ case 13:
  29258. pos = pos + (m.re.prefix.length) >> 0;
  29259. _r$5 = i.step(pos); /* */ $s = 17; case 17: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
  29260. _tuple$2 = _r$5; r = _tuple$2[0]; width = _tuple$2[1];
  29261. _r$6 = i.step(pos + width >> 0); /* */ $s = 18; case 18: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
  29262. _tuple$3 = _r$6; r1 = _tuple$3[0]; width1 = _tuple$3[1];
  29263. _r$7 = i.context(pos); /* */ $s = 19; case 19: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
  29264. flag = _r$7;
  29265. pc = (m.re.prefixEnd >> 0);
  29266. $s = 15; continue;
  29267. /* } else { */ case 14:
  29268. return m.matched;
  29269. /* } */ case 15:
  29270. /* } */ case 10:
  29271. /* while (true) { */ case 20:
  29272. $copy(inst[0], (x$2 = m.op.Inst, ((pc < 0 || pc >= x$2.$length) ? $throwRuntimeError("index out of range") : x$2.$array[x$2.$offset + pc])), onePassInst);
  29273. pc = (inst[0].Inst.Out >> 0);
  29274. _ref$1 = inst[0].Inst.Op;
  29275. /* */ if (_ref$1 === 4) { $s = 22; continue; }
  29276. /* */ if (_ref$1 === 7) { $s = 23; continue; }
  29277. /* */ if (_ref$1 === 8) { $s = 24; continue; }
  29278. /* */ if (_ref$1 === 9) { $s = 25; continue; }
  29279. /* */ if (_ref$1 === 10) { $s = 26; continue; }
  29280. /* */ if (_ref$1 === 0 || _ref$1 === 1) { $s = 27; continue; }
  29281. /* */ if (_ref$1 === 5) { $s = 28; continue; }
  29282. /* */ if (_ref$1 === 6) { $s = 29; continue; }
  29283. /* */ if (_ref$1 === 3) { $s = 30; continue; }
  29284. /* */ if (_ref$1 === 2) { $s = 31; continue; }
  29285. /* */ $s = 32; continue;
  29286. /* if (_ref$1 === 4) { */ case 22:
  29287. m.matched = true;
  29288. if (m.matchcap.$length > 0) {
  29289. (x$3 = m.matchcap, (0 >= x$3.$length ? $throwRuntimeError("index out of range") : x$3.$array[x$3.$offset + 0] = 0));
  29290. (x$4 = m.matchcap, (1 >= x$4.$length ? $throwRuntimeError("index out of range") : x$4.$array[x$4.$offset + 1] = pos));
  29291. }
  29292. return m.matched;
  29293. $s = 33; continue;
  29294. /* } else if (_ref$1 === 7) { */ case 23:
  29295. if (!inst[0].Inst.MatchRune(r)) {
  29296. return m.matched;
  29297. }
  29298. $s = 33; continue;
  29299. /* } else if (_ref$1 === 8) { */ case 24:
  29300. if (!((r === (x$5 = inst[0].Inst.Rune, (0 >= x$5.$length ? $throwRuntimeError("index out of range") : x$5.$array[x$5.$offset + 0]))))) {
  29301. return m.matched;
  29302. }
  29303. $s = 33; continue;
  29304. /* } else if (_ref$1 === 9) { */ case 25:
  29305. $s = 33; continue;
  29306. /* } else if (_ref$1 === 10) { */ case 26:
  29307. if (r === 10) {
  29308. return m.matched;
  29309. }
  29310. $s = 33; continue;
  29311. /* } else if (_ref$1 === 0 || _ref$1 === 1) { */ case 27:
  29312. pc = (onePassNext(inst[0], r) >> 0);
  29313. /* continue; */ $s = 20; continue;
  29314. $s = 33; continue;
  29315. /* } else if (_ref$1 === 5) { */ case 28:
  29316. return m.matched;
  29317. $s = 33; continue;
  29318. /* } else if (_ref$1 === 6) { */ case 29:
  29319. /* continue; */ $s = 20; continue;
  29320. $s = 33; continue;
  29321. /* } else if (_ref$1 === 3) { */ case 30:
  29322. if (!(((((inst[0].Inst.Arg << 24 >>> 24) & ~flag) << 24 >>> 24) === 0))) {
  29323. return m.matched;
  29324. }
  29325. /* continue; */ $s = 20; continue;
  29326. $s = 33; continue;
  29327. /* } else if (_ref$1 === 2) { */ case 31:
  29328. if ((inst[0].Inst.Arg >> 0) < m.matchcap.$length) {
  29329. (x$6 = m.matchcap, x$7 = inst[0].Inst.Arg, ((x$7 < 0 || x$7 >= x$6.$length) ? $throwRuntimeError("index out of range") : x$6.$array[x$6.$offset + x$7] = pos));
  29330. }
  29331. /* continue; */ $s = 20; continue;
  29332. $s = 33; continue;
  29333. /* } else { */ case 32:
  29334. $panic(new $String("bad inst"));
  29335. /* } */ case 33:
  29336. if (width === 0) {
  29337. /* break; */ $s = 21; continue;
  29338. }
  29339. flag = syntax.EmptyOpContext(r, r1);
  29340. pos = pos + (width) >> 0;
  29341. _tmp$4 = r1; _tmp$5 = width1; r = _tmp$4; width = _tmp$5;
  29342. /* */ if (!((r === -1))) { $s = 34; continue; }
  29343. /* */ $s = 35; continue;
  29344. /* if (!((r === -1))) { */ case 34:
  29345. _r$8 = i.step(pos + width >> 0); /* */ $s = 36; case 36: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
  29346. _tuple$4 = _r$8; r1 = _tuple$4[0]; width1 = _tuple$4[1];
  29347. /* } */ case 35:
  29348. /* } */ $s = 20; continue; case 21:
  29349. return m.matched;
  29350. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: machine.ptr.prototype.onepass }; } $f.$ptr = $ptr; $f._i = _i; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._ref = _ref; $f._ref$1 = _ref$1; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f._tuple$4 = _tuple$4; $f._v = _v; $f.flag = flag; $f.i = i; $f.i$1 = i$1; $f.inst = inst; $f.m = m; $f.pc = pc; $f.pos = pos; $f.r = r; $f.r1 = r1; $f.startCond = startCond; $f.width = width; $f.width1 = width1; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.x$3 = x$3; $f.x$4 = x$4; $f.x$5 = x$5; $f.x$6 = x$6; $f.x$7 = x$7; $f.$s = $s; $f.$r = $r; return $f;
  29351. };
  29352. machine.prototype.onepass = function(i, pos) { return this.$val.onepass(i, pos); };
  29353. Regexp.ptr.prototype.doExecute = function(r, b, s, pos, ncap) {
  29354. var $ptr, _r, _r$1, b, cap, i, m, ncap, pos, r, re, s, $s, $r;
  29355. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; b = $f.b; cap = $f.cap; i = $f.i; m = $f.m; ncap = $f.ncap; pos = $f.pos; r = $f.r; re = $f.re; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  29356. re = this;
  29357. m = re.get();
  29358. i = $ifaceNil;
  29359. if (!($interfaceIsEqual(r, $ifaceNil))) {
  29360. i = m.newInputReader(r);
  29361. } else if (!(b === sliceType$3.nil)) {
  29362. i = m.newInputBytes(b);
  29363. } else {
  29364. i = m.newInputString(s);
  29365. }
  29366. /* */ if (!(m.op === notOnePass)) { $s = 1; continue; }
  29367. /* */ $s = 2; continue;
  29368. /* if (!(m.op === notOnePass)) { */ case 1:
  29369. _r = m.onepass(i, pos); /* */ $s = 6; case 6: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  29370. /* */ if (!_r) { $s = 4; continue; }
  29371. /* */ $s = 5; continue;
  29372. /* if (!_r) { */ case 4:
  29373. re.put(m);
  29374. return sliceType.nil;
  29375. /* } */ case 5:
  29376. $s = 3; continue;
  29377. /* } else { */ case 2:
  29378. m.init(ncap);
  29379. _r$1 = m.match(i, pos); /* */ $s = 9; case 9: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  29380. /* */ if (!_r$1) { $s = 7; continue; }
  29381. /* */ $s = 8; continue;
  29382. /* if (!_r$1) { */ case 7:
  29383. re.put(m);
  29384. return sliceType.nil;
  29385. /* } */ case 8:
  29386. /* } */ case 3:
  29387. if (ncap === 0) {
  29388. re.put(m);
  29389. return empty;
  29390. }
  29391. cap = $makeSlice(sliceType, m.matchcap.$length);
  29392. $copySlice(cap, m.matchcap);
  29393. re.put(m);
  29394. return cap;
  29395. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Regexp.ptr.prototype.doExecute }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f.b = b; $f.cap = cap; $f.i = i; $f.m = m; $f.ncap = ncap; $f.pos = pos; $f.r = r; $f.re = re; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
  29396. };
  29397. Regexp.prototype.doExecute = function(r, b, s, pos, ncap) { return this.$val.doExecute(r, b, s, pos, ncap); };
  29398. onePassPrefix = function(p) {
  29399. var $ptr, _tmp, _tmp$1, _tmp$10, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, buf, complete, i, p, pc, prefix, x, x$1, x$2, x$3, x$4, x$5, x$6;
  29400. prefix = "";
  29401. complete = false;
  29402. pc = 0;
  29403. i = (x = p.Inst, x$1 = p.Start, ((x$1 < 0 || x$1 >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + x$1]));
  29404. if (!((i.Op === 3)) || (((((i.Arg << 24 >>> 24)) & 4) >>> 0) === 0)) {
  29405. _tmp = ""; _tmp$1 = i.Op === 4; _tmp$2 = (p.Start >>> 0); prefix = _tmp; complete = _tmp$1; pc = _tmp$2;
  29406. return [prefix, complete, pc];
  29407. }
  29408. pc = i.Out;
  29409. i = (x$2 = p.Inst, ((pc < 0 || pc >= x$2.$length) ? $throwRuntimeError("index out of range") : x$2.$array[x$2.$offset + pc]));
  29410. while (true) {
  29411. if (!(i.Op === 6)) { break; }
  29412. pc = i.Out;
  29413. i = (x$3 = p.Inst, ((pc < 0 || pc >= x$3.$length) ? $throwRuntimeError("index out of range") : x$3.$array[x$3.$offset + pc]));
  29414. }
  29415. if (!((iop(i) === 7)) || !((i.Rune.$length === 1))) {
  29416. _tmp$3 = ""; _tmp$4 = i.Op === 4; _tmp$5 = (p.Start >>> 0); prefix = _tmp$3; complete = _tmp$4; pc = _tmp$5;
  29417. return [prefix, complete, pc];
  29418. }
  29419. buf = $clone(new bytes.Buffer.ptr(), bytes.Buffer);
  29420. while (true) {
  29421. if (!((iop(i) === 7) && (i.Rune.$length === 1) && ((((i.Arg << 16 >>> 16) & 1) >>> 0) === 0))) { break; }
  29422. buf.WriteRune((x$4 = i.Rune, (0 >= x$4.$length ? $throwRuntimeError("index out of range") : x$4.$array[x$4.$offset + 0])));
  29423. _tmp$6 = i.Out; _tmp$7 = (x$5 = p.Inst, x$6 = i.Out, ((x$6 < 0 || x$6 >= x$5.$length) ? $throwRuntimeError("index out of range") : x$5.$array[x$5.$offset + x$6])); pc = _tmp$6; i = _tmp$7;
  29424. }
  29425. _tmp$8 = buf.String(); _tmp$9 = (i.Op === 3) && !((((((i.Arg << 24 >>> 24)) & 4) >>> 0) === 0)); _tmp$10 = pc; prefix = _tmp$8; complete = _tmp$9; pc = _tmp$10;
  29426. return [prefix, complete, pc];
  29427. };
  29428. onePassNext = function(i, r) {
  29429. var $ptr, i, next, r, x;
  29430. next = i.Inst.MatchRunePos(r);
  29431. if (next >= 0) {
  29432. return (x = i.Next, ((next < 0 || next >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + next]));
  29433. }
  29434. if (i.Inst.Op === 1) {
  29435. return i.Inst.Out;
  29436. }
  29437. return 0;
  29438. };
  29439. iop = function(i) {
  29440. var $ptr, _ref, i, op;
  29441. op = i.Op;
  29442. _ref = op;
  29443. if (_ref === 8 || _ref === 9 || _ref === 10) {
  29444. op = 7;
  29445. }
  29446. return op;
  29447. };
  29448. queueOnePass.ptr.prototype.empty = function() {
  29449. var $ptr, q;
  29450. q = this;
  29451. return q.nextIndex >= q.size;
  29452. };
  29453. queueOnePass.prototype.empty = function() { return this.$val.empty(); };
  29454. queueOnePass.ptr.prototype.next = function() {
  29455. var $ptr, n, q, x, x$1;
  29456. n = 0;
  29457. q = this;
  29458. n = (x = q.dense, x$1 = q.nextIndex, ((x$1 < 0 || x$1 >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + x$1]));
  29459. q.nextIndex = q.nextIndex + (1) >>> 0;
  29460. return n;
  29461. };
  29462. queueOnePass.prototype.next = function() { return this.$val.next(); };
  29463. queueOnePass.ptr.prototype.clear = function() {
  29464. var $ptr, q;
  29465. q = this;
  29466. q.size = 0;
  29467. q.nextIndex = 0;
  29468. };
  29469. queueOnePass.prototype.clear = function() { return this.$val.clear(); };
  29470. queueOnePass.ptr.prototype.contains = function(u) {
  29471. var $ptr, q, u, x, x$1, x$2, x$3;
  29472. q = this;
  29473. if (u >= (q.sparse.$length >>> 0)) {
  29474. return false;
  29475. }
  29476. return (x = q.sparse, ((u < 0 || u >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + u])) < q.size && ((x$1 = q.dense, x$2 = (x$3 = q.sparse, ((u < 0 || u >= x$3.$length) ? $throwRuntimeError("index out of range") : x$3.$array[x$3.$offset + u])), ((x$2 < 0 || x$2 >= x$1.$length) ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + x$2])) === u);
  29477. };
  29478. queueOnePass.prototype.contains = function(u) { return this.$val.contains(u); };
  29479. queueOnePass.ptr.prototype.insert = function(u) {
  29480. var $ptr, q, u;
  29481. q = this;
  29482. if (!q.contains(u)) {
  29483. q.insertNew(u);
  29484. }
  29485. };
  29486. queueOnePass.prototype.insert = function(u) { return this.$val.insert(u); };
  29487. queueOnePass.ptr.prototype.insertNew = function(u) {
  29488. var $ptr, q, u, x, x$1, x$2;
  29489. q = this;
  29490. if (u >= (q.sparse.$length >>> 0)) {
  29491. return;
  29492. }
  29493. (x = q.sparse, ((u < 0 || u >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + u] = q.size));
  29494. (x$1 = q.dense, x$2 = q.size, ((x$2 < 0 || x$2 >= x$1.$length) ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + x$2] = u));
  29495. q.size = q.size + (1) >>> 0;
  29496. };
  29497. queueOnePass.prototype.insertNew = function(u) { return this.$val.insertNew(u); };
  29498. newQueue = function(size) {
  29499. var $ptr, q, size;
  29500. q = ptrType$5.nil;
  29501. q = new queueOnePass.ptr($makeSlice(sliceType$2, size), $makeSlice(sliceType$2, size), 0, 0);
  29502. return q;
  29503. };
  29504. mergeRuneSets = function(leftRunes, rightRunes, leftPC, rightPC) {
  29505. var $ptr, _r, _r$1, _r$2, _r$3, _tmp, _tmp$1, extend, ix, leftLen, leftPC, leftRunes, lx, merged, next, ok, rightLen, rightPC, rightRunes, rx, x, x$1, $s, $deferred, $r;
  29506. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; extend = $f.extend; ix = $f.ix; leftLen = $f.leftLen; leftPC = $f.leftPC; leftRunes = $f.leftRunes; lx = $f.lx; merged = $f.merged; next = $f.next; ok = $f.ok; rightLen = $f.rightLen; rightPC = $f.rightPC; rightRunes = $f.rightRunes; rx = $f.rx; x = $f.x; x$1 = $f.x$1; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
  29507. ix = [ix];
  29508. lx = [lx];
  29509. merged = [merged];
  29510. next = [next];
  29511. ok = [ok];
  29512. rx = [rx];
  29513. leftLen = leftRunes.$get().$length;
  29514. rightLen = rightRunes.$get().$length;
  29515. if (!(((leftLen & 1) === 0)) || !(((rightLen & 1) === 0))) {
  29516. $panic(new $String("mergeRuneSets odd length []rune"));
  29517. }
  29518. _tmp = 0; _tmp$1 = 0; lx[0] = _tmp; rx[0] = _tmp$1;
  29519. merged[0] = $makeSlice(sliceType$1, 0);
  29520. next[0] = $makeSlice(sliceType$2, 0);
  29521. ok[0] = true;
  29522. $deferred.push([(function(ix, lx, merged, next, ok, rx) { return function() {
  29523. var $ptr;
  29524. if (!ok[0]) {
  29525. merged[0] = sliceType$1.nil;
  29526. next[0] = sliceType$2.nil;
  29527. }
  29528. }; })(ix, lx, merged, next, ok, rx), []]);
  29529. ix[0] = -1;
  29530. extend = (function(ix, lx, merged, next, ok, rx) { return function(newLow, newArray, pc) {
  29531. var $ptr, newArray, newLow, pc, x, x$1, x$2, x$3, x$4, x$5;
  29532. if (ix[0] > 0 && (x = newArray.$get(), x$1 = newLow.$get(), ((x$1 < 0 || x$1 >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + x$1])) <= ((ix[0] < 0 || ix[0] >= merged[0].$length) ? $throwRuntimeError("index out of range") : merged[0].$array[merged[0].$offset + ix[0]])) {
  29533. return false;
  29534. }
  29535. merged[0] = $append(merged[0], (x$2 = newArray.$get(), x$3 = newLow.$get(), ((x$3 < 0 || x$3 >= x$2.$length) ? $throwRuntimeError("index out of range") : x$2.$array[x$2.$offset + x$3])), (x$4 = newArray.$get(), x$5 = newLow.$get() + 1 >> 0, ((x$5 < 0 || x$5 >= x$4.$length) ? $throwRuntimeError("index out of range") : x$4.$array[x$4.$offset + x$5])));
  29536. newLow.$set(newLow.$get() + (2) >> 0);
  29537. ix[0] = ix[0] + (2) >> 0;
  29538. next[0] = $append(next[0], pc);
  29539. return true;
  29540. }; })(ix, lx, merged, next, ok, rx);
  29541. /* while (true) { */ case 1:
  29542. /* if (!(lx[0] < leftLen || rx[0] < rightLen)) { break; } */ if(!(lx[0] < leftLen || rx[0] < rightLen)) { $s = 2; continue; }
  29543. /* */ if (rx[0] >= rightLen) { $s = 3; continue; }
  29544. /* */ if (lx[0] >= leftLen) { $s = 4; continue; }
  29545. /* */ if ((x = rightRunes.$get(), ((rx[0] < 0 || rx[0] >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + rx[0]])) < (x$1 = leftRunes.$get(), ((lx[0] < 0 || lx[0] >= x$1.$length) ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + lx[0]]))) { $s = 5; continue; }
  29546. /* */ $s = 6; continue;
  29547. /* if (rx[0] >= rightLen) { */ case 3:
  29548. _r = extend((lx.$ptr || (lx.$ptr = new ptrType$4(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, lx))), leftRunes, leftPC); /* */ $s = 8; case 8: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  29549. ok[0] = _r;
  29550. $s = 7; continue;
  29551. /* } else if (lx[0] >= leftLen) { */ case 4:
  29552. _r$1 = extend((rx.$ptr || (rx.$ptr = new ptrType$4(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, rx))), rightRunes, rightPC); /* */ $s = 9; case 9: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  29553. ok[0] = _r$1;
  29554. $s = 7; continue;
  29555. /* } else if ((x = rightRunes.$get(), ((rx[0] < 0 || rx[0] >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + rx[0]])) < (x$1 = leftRunes.$get(), ((lx[0] < 0 || lx[0] >= x$1.$length) ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + lx[0]]))) { */ case 5:
  29556. _r$2 = extend((rx.$ptr || (rx.$ptr = new ptrType$4(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, rx))), rightRunes, rightPC); /* */ $s = 10; case 10: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  29557. ok[0] = _r$2;
  29558. $s = 7; continue;
  29559. /* } else { */ case 6:
  29560. _r$3 = extend((lx.$ptr || (lx.$ptr = new ptrType$4(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, lx))), leftRunes, leftPC); /* */ $s = 11; case 11: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  29561. ok[0] = _r$3;
  29562. /* } */ case 7:
  29563. if (!ok[0]) {
  29564. return [noRune, noNext];
  29565. }
  29566. /* } */ $s = 1; continue; case 2:
  29567. return [merged[0], next[0]];
  29568. /* */ $s = -1; case -1: } return; } } catch(err) { $err = err; $s = -1; return [sliceType$1.nil, sliceType$2.nil]; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: mergeRuneSets }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f.extend = extend; $f.ix = ix; $f.leftLen = leftLen; $f.leftPC = leftPC; $f.leftRunes = leftRunes; $f.lx = lx; $f.merged = merged; $f.next = next; $f.ok = ok; $f.rightLen = rightLen; $f.rightPC = rightPC; $f.rightRunes = rightRunes; $f.rx = rx; $f.x = x; $f.x$1 = x$1; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
  29569. };
  29570. cleanupOnePass = function(prog, original) {
  29571. var $ptr, _i, _ref, _ref$1, instOriginal, ix, original, prog, x, x$1, x$2;
  29572. _ref = original.Inst;
  29573. _i = 0;
  29574. while (true) {
  29575. if (!(_i < _ref.$length)) { break; }
  29576. ix = _i;
  29577. instOriginal = $clone(((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]), syntax.Inst);
  29578. _ref$1 = instOriginal.Op;
  29579. if (_ref$1 === 0 || _ref$1 === 1 || _ref$1 === 7) {
  29580. } else if (_ref$1 === 2 || _ref$1 === 3 || _ref$1 === 6 || _ref$1 === 4 || _ref$1 === 5) {
  29581. (x = prog.Inst, ((ix < 0 || ix >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + ix])).Next = sliceType$2.nil;
  29582. } else if (_ref$1 === 8 || _ref$1 === 9 || _ref$1 === 10) {
  29583. (x$1 = prog.Inst, ((ix < 0 || ix >= x$1.$length) ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + ix])).Next = sliceType$2.nil;
  29584. $copy((x$2 = prog.Inst, ((ix < 0 || ix >= x$2.$length) ? $throwRuntimeError("index out of range") : x$2.$array[x$2.$offset + ix])), new onePassInst.ptr($clone(instOriginal, syntax.Inst), sliceType$2.nil), onePassInst);
  29585. }
  29586. _i++;
  29587. }
  29588. };
  29589. onePassCopy = function(prog) {
  29590. var $ptr, _i, _i$1, _ref, _ref$1, _ref$2, _tmp, _tmp$1, _tmp$2, _tmp$3, inst, instAlt, instOther, p, p_A_Alt, p_A_Other, p_B_Alt, p_B_Other, patch, pc, prog, x, x$1, x$10, x$11, x$12, x$13, x$14, x$15, x$16, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9;
  29591. p = new onePassProg.ptr(sliceType$7.nil, prog.Start, prog.NumCap);
  29592. _ref = prog.Inst;
  29593. _i = 0;
  29594. while (true) {
  29595. if (!(_i < _ref.$length)) { break; }
  29596. inst = $clone(((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]), syntax.Inst);
  29597. p.Inst = $append(p.Inst, new onePassInst.ptr($clone(inst, syntax.Inst), sliceType$2.nil));
  29598. _i++;
  29599. }
  29600. _ref$1 = p.Inst;
  29601. _i$1 = 0;
  29602. while (true) {
  29603. if (!(_i$1 < _ref$1.$length)) { break; }
  29604. pc = _i$1;
  29605. _ref$2 = (x = p.Inst, ((pc < 0 || pc >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + pc])).Inst.Op;
  29606. if (_ref$2 === 0 || _ref$2 === 1) {
  29607. p_A_Other = (x$1 = (x$2 = p.Inst, ((pc < 0 || pc >= x$2.$length) ? $throwRuntimeError("index out of range") : x$2.$array[x$2.$offset + pc])), (x$1.$ptr_Out || (x$1.$ptr_Out = new ptrType$6(function() { return this.$target.Inst.Out; }, function($v) { this.$target.Inst.Out = $v; }, x$1))));
  29608. p_A_Alt = (x$3 = (x$4 = p.Inst, ((pc < 0 || pc >= x$4.$length) ? $throwRuntimeError("index out of range") : x$4.$array[x$4.$offset + pc])), (x$3.$ptr_Arg || (x$3.$ptr_Arg = new ptrType$6(function() { return this.$target.Inst.Arg; }, function($v) { this.$target.Inst.Arg = $v; }, x$3))));
  29609. instAlt = $clone((x$5 = p.Inst, x$6 = p_A_Alt.$get(), ((x$6 < 0 || x$6 >= x$5.$length) ? $throwRuntimeError("index out of range") : x$5.$array[x$5.$offset + x$6])), onePassInst);
  29610. if (!((instAlt.Inst.Op === 0) || (instAlt.Inst.Op === 1))) {
  29611. _tmp = p_A_Other; _tmp$1 = p_A_Alt; p_A_Alt = _tmp; p_A_Other = _tmp$1;
  29612. $copy(instAlt, (x$7 = p.Inst, x$8 = p_A_Alt.$get(), ((x$8 < 0 || x$8 >= x$7.$length) ? $throwRuntimeError("index out of range") : x$7.$array[x$7.$offset + x$8])), onePassInst);
  29613. if (!((instAlt.Inst.Op === 0) || (instAlt.Inst.Op === 1))) {
  29614. _i$1++;
  29615. continue;
  29616. }
  29617. }
  29618. instOther = $clone((x$9 = p.Inst, x$10 = p_A_Other.$get(), ((x$10 < 0 || x$10 >= x$9.$length) ? $throwRuntimeError("index out of range") : x$9.$array[x$9.$offset + x$10])), onePassInst);
  29619. if ((instOther.Inst.Op === 0) || (instOther.Inst.Op === 1)) {
  29620. _i$1++;
  29621. continue;
  29622. }
  29623. p_B_Alt = (x$11 = (x$12 = p.Inst, x$13 = p_A_Alt.$get(), ((x$13 < 0 || x$13 >= x$12.$length) ? $throwRuntimeError("index out of range") : x$12.$array[x$12.$offset + x$13])), (x$11.$ptr_Out || (x$11.$ptr_Out = new ptrType$6(function() { return this.$target.Inst.Out; }, function($v) { this.$target.Inst.Out = $v; }, x$11))));
  29624. p_B_Other = (x$14 = (x$15 = p.Inst, x$16 = p_A_Alt.$get(), ((x$16 < 0 || x$16 >= x$15.$length) ? $throwRuntimeError("index out of range") : x$15.$array[x$15.$offset + x$16])), (x$14.$ptr_Arg || (x$14.$ptr_Arg = new ptrType$6(function() { return this.$target.Inst.Arg; }, function($v) { this.$target.Inst.Arg = $v; }, x$14))));
  29625. patch = false;
  29626. if (instAlt.Inst.Out === (pc >>> 0)) {
  29627. patch = true;
  29628. } else if (instAlt.Inst.Arg === (pc >>> 0)) {
  29629. patch = true;
  29630. _tmp$2 = p_B_Other; _tmp$3 = p_B_Alt; p_B_Alt = _tmp$2; p_B_Other = _tmp$3;
  29631. }
  29632. if (patch) {
  29633. p_B_Alt.$set(p_A_Other.$get());
  29634. }
  29635. if (p_A_Other.$get() === p_B_Alt.$get()) {
  29636. p_A_Alt.$set(p_B_Other.$get());
  29637. }
  29638. } else {
  29639. _i$1++;
  29640. continue;
  29641. }
  29642. _i$1++;
  29643. }
  29644. return p;
  29645. };
  29646. runeSlice.prototype.Len = function() {
  29647. var $ptr, p;
  29648. p = this;
  29649. return p.$length;
  29650. };
  29651. $ptrType(runeSlice).prototype.Len = function() { return this.$get().Len(); };
  29652. runeSlice.prototype.Less = function(i, j) {
  29653. var $ptr, i, j, p;
  29654. p = this;
  29655. return ((i < 0 || i >= p.$length) ? $throwRuntimeError("index out of range") : p.$array[p.$offset + i]) < ((j < 0 || j >= p.$length) ? $throwRuntimeError("index out of range") : p.$array[p.$offset + j]);
  29656. };
  29657. $ptrType(runeSlice).prototype.Less = function(i, j) { return this.$get().Less(i, j); };
  29658. runeSlice.prototype.Swap = function(i, j) {
  29659. var $ptr, _tmp, _tmp$1, i, j, p;
  29660. p = this;
  29661. _tmp = ((j < 0 || j >= p.$length) ? $throwRuntimeError("index out of range") : p.$array[p.$offset + j]); _tmp$1 = ((i < 0 || i >= p.$length) ? $throwRuntimeError("index out of range") : p.$array[p.$offset + i]); ((i < 0 || i >= p.$length) ? $throwRuntimeError("index out of range") : p.$array[p.$offset + i] = _tmp); ((j < 0 || j >= p.$length) ? $throwRuntimeError("index out of range") : p.$array[p.$offset + j] = _tmp$1);
  29662. };
  29663. $ptrType(runeSlice).prototype.Swap = function(i, j) { return this.$get().Swap(i, j); };
  29664. runeSlice.prototype.Sort = function() {
  29665. var $ptr, p, $s, $r;
  29666. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; p = $f.p; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  29667. p = this;
  29668. $r = sort.Sort(p); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  29669. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: runeSlice.prototype.Sort }; } $f.$ptr = $ptr; $f.p = p; $f.$s = $s; $f.$r = $r; return $f;
  29670. };
  29671. $ptrType(runeSlice).prototype.Sort = function() { return this.$get().Sort(); };
  29672. makeOnePass = function(p) {
  29673. var $ptr, _i, _r, _ref, _ref$1, build, check, i, inst, instQueue, m, onePassRunes, p, pc, visitQueue, x, x$1, $s, $r;
  29674. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _i = $f._i; _r = $f._r; _ref = $f._ref; _ref$1 = $f._ref$1; build = $f.build; check = $f.check; i = $f.i; inst = $f.inst; instQueue = $f.instQueue; m = $f.m; onePassRunes = $f.onePassRunes; p = $f.p; pc = $f.pc; visitQueue = $f.visitQueue; x = $f.x; x$1 = $f.x$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  29675. build = [build];
  29676. check = [check];
  29677. onePassRunes = [onePassRunes];
  29678. p = [p];
  29679. visitQueue = [visitQueue];
  29680. if (p[0].Inst.$length >= 1000) {
  29681. return notOnePass;
  29682. }
  29683. instQueue = newQueue(p[0].Inst.$length);
  29684. visitQueue[0] = newQueue(p[0].Inst.$length);
  29685. build[0] = $throwNilPointerError;
  29686. check[0] = $throwNilPointerError;
  29687. onePassRunes[0] = $makeSlice(sliceType$8, p[0].Inst.$length);
  29688. build[0] = (function(build, check, onePassRunes, p, visitQueue) { return function $b(pc, q) {
  29689. var $ptr, _ref, inst, pc, q, x, $s, $r;
  29690. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _ref = $f._ref; inst = $f.inst; pc = $f.pc; q = $f.q; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  29691. if (q.contains(pc)) {
  29692. return;
  29693. }
  29694. inst = $clone((x = p[0].Inst, ((pc < 0 || pc >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + pc])), onePassInst);
  29695. _ref = inst.Inst.Op;
  29696. /* */ if (_ref === 0 || _ref === 1) { $s = 1; continue; }
  29697. /* */ if (_ref === 4 || _ref === 5) { $s = 2; continue; }
  29698. /* */ $s = 3; continue;
  29699. /* if (_ref === 0 || _ref === 1) { */ case 1:
  29700. q.insert(inst.Inst.Out);
  29701. $r = build[0](inst.Inst.Out, q); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  29702. q.insert(inst.Inst.Arg);
  29703. $s = 4; continue;
  29704. /* } else if (_ref === 4 || _ref === 5) { */ case 2:
  29705. $s = 4; continue;
  29706. /* } else { */ case 3:
  29707. q.insert(inst.Inst.Out);
  29708. /* } */ case 4:
  29709. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: $b }; } $f.$ptr = $ptr; $f._ref = _ref; $f.inst = inst; $f.pc = pc; $f.q = q; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
  29710. }; })(build, check, onePassRunes, p, visitQueue);
  29711. check[0] = (function(build, check, onePassRunes, p, visitQueue) { return function $b(pc, m) {
  29712. var $ptr, _entry, _entry$1, _entry$2, _entry$3, _key, _key$1, _key$2, _key$3, _key$4, _key$5, _key$6, _key$7, _q, _q$1, _q$2, _q$3, _q$4, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _ref, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, _v, i, i$1, i$2, i$3, i$4, inst, m, matchArg, matchOut, ok, pc, r0, r0$1, r1, r1$1, runes, runes$1, x, x$1, x$2, x$3, x$4, x$5, x$6, x$7, $s, $r;
  29713. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _entry = $f._entry; _entry$1 = $f._entry$1; _entry$2 = $f._entry$2; _entry$3 = $f._entry$3; _key = $f._key; _key$1 = $f._key$1; _key$2 = $f._key$2; _key$3 = $f._key$3; _key$4 = $f._key$4; _key$5 = $f._key$5; _key$6 = $f._key$6; _key$7 = $f._key$7; _q = $f._q; _q$1 = $f._q$1; _q$2 = $f._q$2; _q$3 = $f._q$3; _q$4 = $f._q$4; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _ref = $f._ref; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tuple = $f._tuple; _v = $f._v; i = $f.i; i$1 = $f.i$1; i$2 = $f.i$2; i$3 = $f.i$3; i$4 = $f.i$4; inst = $f.inst; m = $f.m; matchArg = $f.matchArg; matchOut = $f.matchOut; ok = $f.ok; pc = $f.pc; r0 = $f.r0; r0$1 = $f.r0$1; r1 = $f.r1; r1$1 = $f.r1$1; runes = $f.runes; runes$1 = $f.runes$1; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; x$3 = $f.x$3; x$4 = $f.x$4; x$5 = $f.x$5; x$6 = $f.x$6; x$7 = $f.x$7; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  29714. ok = false;
  29715. ok = true;
  29716. inst = (x = p[0].Inst, ((pc < 0 || pc >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + pc]));
  29717. if (visitQueue[0].contains(pc)) {
  29718. return ok;
  29719. }
  29720. visitQueue[0].insert(pc);
  29721. _ref = inst.Inst.Op;
  29722. /* */ if (_ref === 0 || _ref === 1) { $s = 1; continue; }
  29723. /* */ if (_ref === 2 || _ref === 6) { $s = 2; continue; }
  29724. /* */ if (_ref === 3) { $s = 3; continue; }
  29725. /* */ if (_ref === 4 || _ref === 5) { $s = 4; continue; }
  29726. /* */ if (_ref === 7) { $s = 5; continue; }
  29727. /* */ if (_ref === 8) { $s = 6; continue; }
  29728. /* */ if (_ref === 9) { $s = 7; continue; }
  29729. /* */ if (_ref === 10) { $s = 8; continue; }
  29730. /* */ $s = 9; continue;
  29731. /* switch (0) { default: if (_ref === 0 || _ref === 1) { */ case 1:
  29732. _r = check[0](inst.Inst.Out, m); /* */ $s = 11; case 11: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  29733. if (!(_r)) { _v = false; $s = 10; continue s; }
  29734. _r$1 = check[0](inst.Inst.Arg, m); /* */ $s = 12; case 12: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  29735. _v = _r$1; case 10:
  29736. ok = _v;
  29737. matchOut = (_entry = m[inst.Inst.Out], _entry !== undefined ? _entry.v : false);
  29738. matchArg = (_entry$1 = m[inst.Inst.Arg], _entry$1 !== undefined ? _entry$1.v : false);
  29739. if (matchOut && matchArg) {
  29740. ok = false;
  29741. /* break; */ $s = 9; continue;
  29742. }
  29743. if (matchArg) {
  29744. _tmp = inst.Inst.Arg; _tmp$1 = inst.Inst.Out; inst.Inst.Out = _tmp; inst.Inst.Arg = _tmp$1;
  29745. _tmp$2 = matchArg; _tmp$3 = matchOut; matchOut = _tmp$2; matchArg = _tmp$3;
  29746. }
  29747. if (matchOut) {
  29748. _key = pc; (m || $throwRuntimeError("assignment to entry in nil map"))[_key] = { k: _key, v: true };
  29749. inst.Inst.Op = 1;
  29750. }
  29751. _r$2 = mergeRuneSets($indexPtr(onePassRunes[0].$array, onePassRunes[0].$offset + inst.Inst.Out, ptrType$7), $indexPtr(onePassRunes[0].$array, onePassRunes[0].$offset + inst.Inst.Arg, ptrType$7), inst.Inst.Out, inst.Inst.Arg); /* */ $s = 13; case 13: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  29752. _tuple = _r$2; ((pc < 0 || pc >= onePassRunes[0].$length) ? $throwRuntimeError("index out of range") : onePassRunes[0].$array[onePassRunes[0].$offset + pc] = _tuple[0]); inst.Next = _tuple[1];
  29753. if (inst.Next.$length > 0 && ((x$1 = inst.Next, (0 >= x$1.$length ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + 0])) === 4294967295)) {
  29754. ok = false;
  29755. /* break; */ $s = 9; continue;
  29756. }
  29757. $s = 9; continue;
  29758. /* } else if (_ref === 2 || _ref === 6) { */ case 2:
  29759. _r$3 = check[0](inst.Inst.Out, m); /* */ $s = 14; case 14: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  29760. ok = _r$3;
  29761. _key$1 = pc; (m || $throwRuntimeError("assignment to entry in nil map"))[_key$1] = { k: _key$1, v: (_entry$2 = m[inst.Inst.Out], _entry$2 !== undefined ? _entry$2.v : false) };
  29762. ((pc < 0 || pc >= onePassRunes[0].$length) ? $throwRuntimeError("index out of range") : onePassRunes[0].$array[onePassRunes[0].$offset + pc] = $appendSlice(new sliceType$1([]), (x$2 = inst.Inst.Out, ((x$2 < 0 || x$2 >= onePassRunes[0].$length) ? $throwRuntimeError("index out of range") : onePassRunes[0].$array[onePassRunes[0].$offset + x$2]))));
  29763. inst.Next = new sliceType$2([]);
  29764. i = (_q = ((pc < 0 || pc >= onePassRunes[0].$length) ? $throwRuntimeError("index out of range") : onePassRunes[0].$array[onePassRunes[0].$offset + pc]).$length / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero"));
  29765. while (true) {
  29766. if (!(i >= 0)) { break; }
  29767. inst.Next = $append(inst.Next, inst.Inst.Out);
  29768. i = i - (1) >> 0;
  29769. }
  29770. $s = 9; continue;
  29771. /* } else if (_ref === 3) { */ case 3:
  29772. _r$4 = check[0](inst.Inst.Out, m); /* */ $s = 15; case 15: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
  29773. ok = _r$4;
  29774. _key$2 = pc; (m || $throwRuntimeError("assignment to entry in nil map"))[_key$2] = { k: _key$2, v: (_entry$3 = m[inst.Inst.Out], _entry$3 !== undefined ? _entry$3.v : false) };
  29775. ((pc < 0 || pc >= onePassRunes[0].$length) ? $throwRuntimeError("index out of range") : onePassRunes[0].$array[onePassRunes[0].$offset + pc] = $appendSlice(new sliceType$1([]), (x$3 = inst.Inst.Out, ((x$3 < 0 || x$3 >= onePassRunes[0].$length) ? $throwRuntimeError("index out of range") : onePassRunes[0].$array[onePassRunes[0].$offset + x$3]))));
  29776. inst.Next = new sliceType$2([]);
  29777. i$1 = (_q$1 = ((pc < 0 || pc >= onePassRunes[0].$length) ? $throwRuntimeError("index out of range") : onePassRunes[0].$array[onePassRunes[0].$offset + pc]).$length / 2, (_q$1 === _q$1 && _q$1 !== 1/0 && _q$1 !== -1/0) ? _q$1 >> 0 : $throwRuntimeError("integer divide by zero"));
  29778. while (true) {
  29779. if (!(i$1 >= 0)) { break; }
  29780. inst.Next = $append(inst.Next, inst.Inst.Out);
  29781. i$1 = i$1 - (1) >> 0;
  29782. }
  29783. $s = 9; continue;
  29784. /* } else if (_ref === 4 || _ref === 5) { */ case 4:
  29785. _key$3 = pc; (m || $throwRuntimeError("assignment to entry in nil map"))[_key$3] = { k: _key$3, v: inst.Inst.Op === 4 };
  29786. /* break; */ $s = 9; continue;
  29787. $s = 9; continue;
  29788. /* } else if (_ref === 7) { */ case 5:
  29789. _r$5 = check[0](inst.Inst.Out, m); /* */ $s = 16; case 16: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
  29790. ok = _r$5;
  29791. _key$4 = pc; (m || $throwRuntimeError("assignment to entry in nil map"))[_key$4] = { k: _key$4, v: false };
  29792. if (inst.Next.$length > 0) {
  29793. /* break; */ $s = 9; continue;
  29794. }
  29795. if (inst.Inst.Rune.$length === 0) {
  29796. ((pc < 0 || pc >= onePassRunes[0].$length) ? $throwRuntimeError("index out of range") : onePassRunes[0].$array[onePassRunes[0].$offset + pc] = new sliceType$1([]));
  29797. inst.Next = new sliceType$2([inst.Inst.Out]);
  29798. /* break; */ $s = 9; continue;
  29799. }
  29800. runes = $makeSlice(sliceType$1, 0);
  29801. /* */ if ((inst.Inst.Rune.$length === 1) && !(((((inst.Inst.Arg << 16 >>> 16) & 1) >>> 0) === 0))) { $s = 17; continue; }
  29802. /* */ $s = 18; continue;
  29803. /* if ((inst.Inst.Rune.$length === 1) && !(((((inst.Inst.Arg << 16 >>> 16) & 1) >>> 0) === 0))) { */ case 17:
  29804. r0 = (x$4 = inst.Inst.Rune, (0 >= x$4.$length ? $throwRuntimeError("index out of range") : x$4.$array[x$4.$offset + 0]));
  29805. runes = $append(runes, r0, r0);
  29806. r1 = unicode.SimpleFold(r0);
  29807. while (true) {
  29808. if (!(!((r1 === r0)))) { break; }
  29809. runes = $append(runes, r1, r1);
  29810. r1 = unicode.SimpleFold(r1);
  29811. }
  29812. $r = sort.Sort($subslice(new runeSlice(runes.$array), runes.$offset, runes.$offset + runes.$length)); /* */ $s = 20; case 20: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  29813. $s = 19; continue;
  29814. /* } else { */ case 18:
  29815. runes = $appendSlice(runes, inst.Inst.Rune);
  29816. /* } */ case 19:
  29817. ((pc < 0 || pc >= onePassRunes[0].$length) ? $throwRuntimeError("index out of range") : onePassRunes[0].$array[onePassRunes[0].$offset + pc] = runes);
  29818. inst.Next = new sliceType$2([]);
  29819. i$2 = (_q$2 = ((pc < 0 || pc >= onePassRunes[0].$length) ? $throwRuntimeError("index out of range") : onePassRunes[0].$array[onePassRunes[0].$offset + pc]).$length / 2, (_q$2 === _q$2 && _q$2 !== 1/0 && _q$2 !== -1/0) ? _q$2 >> 0 : $throwRuntimeError("integer divide by zero"));
  29820. while (true) {
  29821. if (!(i$2 >= 0)) { break; }
  29822. inst.Next = $append(inst.Next, inst.Inst.Out);
  29823. i$2 = i$2 - (1) >> 0;
  29824. }
  29825. inst.Inst.Op = 7;
  29826. $s = 9; continue;
  29827. /* } else if (_ref === 8) { */ case 6:
  29828. _r$6 = check[0](inst.Inst.Out, m); /* */ $s = 21; case 21: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
  29829. ok = _r$6;
  29830. _key$5 = pc; (m || $throwRuntimeError("assignment to entry in nil map"))[_key$5] = { k: _key$5, v: false };
  29831. if (inst.Next.$length > 0) {
  29832. /* break; */ $s = 9; continue;
  29833. }
  29834. runes$1 = new sliceType$1([]);
  29835. /* */ if (!(((((inst.Inst.Arg << 16 >>> 16) & 1) >>> 0) === 0))) { $s = 22; continue; }
  29836. /* */ $s = 23; continue;
  29837. /* if (!(((((inst.Inst.Arg << 16 >>> 16) & 1) >>> 0) === 0))) { */ case 22:
  29838. r0$1 = (x$5 = inst.Inst.Rune, (0 >= x$5.$length ? $throwRuntimeError("index out of range") : x$5.$array[x$5.$offset + 0]));
  29839. runes$1 = $append(runes$1, r0$1, r0$1);
  29840. r1$1 = unicode.SimpleFold(r0$1);
  29841. while (true) {
  29842. if (!(!((r1$1 === r0$1)))) { break; }
  29843. runes$1 = $append(runes$1, r1$1, r1$1);
  29844. r1$1 = unicode.SimpleFold(r1$1);
  29845. }
  29846. $r = sort.Sort($subslice(new runeSlice(runes$1.$array), runes$1.$offset, runes$1.$offset + runes$1.$length)); /* */ $s = 25; case 25: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  29847. $s = 24; continue;
  29848. /* } else { */ case 23:
  29849. runes$1 = $append(runes$1, (x$6 = inst.Inst.Rune, (0 >= x$6.$length ? $throwRuntimeError("index out of range") : x$6.$array[x$6.$offset + 0])), (x$7 = inst.Inst.Rune, (0 >= x$7.$length ? $throwRuntimeError("index out of range") : x$7.$array[x$7.$offset + 0])));
  29850. /* } */ case 24:
  29851. ((pc < 0 || pc >= onePassRunes[0].$length) ? $throwRuntimeError("index out of range") : onePassRunes[0].$array[onePassRunes[0].$offset + pc] = runes$1);
  29852. inst.Next = new sliceType$2([]);
  29853. i$3 = (_q$3 = ((pc < 0 || pc >= onePassRunes[0].$length) ? $throwRuntimeError("index out of range") : onePassRunes[0].$array[onePassRunes[0].$offset + pc]).$length / 2, (_q$3 === _q$3 && _q$3 !== 1/0 && _q$3 !== -1/0) ? _q$3 >> 0 : $throwRuntimeError("integer divide by zero"));
  29854. while (true) {
  29855. if (!(i$3 >= 0)) { break; }
  29856. inst.Next = $append(inst.Next, inst.Inst.Out);
  29857. i$3 = i$3 - (1) >> 0;
  29858. }
  29859. inst.Inst.Op = 7;
  29860. $s = 9; continue;
  29861. /* } else if (_ref === 9) { */ case 7:
  29862. _r$7 = check[0](inst.Inst.Out, m); /* */ $s = 26; case 26: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
  29863. ok = _r$7;
  29864. _key$6 = pc; (m || $throwRuntimeError("assignment to entry in nil map"))[_key$6] = { k: _key$6, v: false };
  29865. if (inst.Next.$length > 0) {
  29866. /* break; */ $s = 9; continue;
  29867. }
  29868. ((pc < 0 || pc >= onePassRunes[0].$length) ? $throwRuntimeError("index out of range") : onePassRunes[0].$array[onePassRunes[0].$offset + pc] = $appendSlice(new sliceType$1([]), anyRune));
  29869. inst.Next = new sliceType$2([inst.Inst.Out]);
  29870. $s = 9; continue;
  29871. /* } else if (_ref === 10) { */ case 8:
  29872. _r$8 = check[0](inst.Inst.Out, m); /* */ $s = 27; case 27: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
  29873. ok = _r$8;
  29874. _key$7 = pc; (m || $throwRuntimeError("assignment to entry in nil map"))[_key$7] = { k: _key$7, v: false };
  29875. if (inst.Next.$length > 0) {
  29876. /* break; */ $s = 9; continue;
  29877. }
  29878. ((pc < 0 || pc >= onePassRunes[0].$length) ? $throwRuntimeError("index out of range") : onePassRunes[0].$array[onePassRunes[0].$offset + pc] = $appendSlice(new sliceType$1([]), anyRuneNotNL));
  29879. inst.Next = new sliceType$2([]);
  29880. i$4 = (_q$4 = ((pc < 0 || pc >= onePassRunes[0].$length) ? $throwRuntimeError("index out of range") : onePassRunes[0].$array[onePassRunes[0].$offset + pc]).$length / 2, (_q$4 === _q$4 && _q$4 !== 1/0 && _q$4 !== -1/0) ? _q$4 >> 0 : $throwRuntimeError("integer divide by zero"));
  29881. while (true) {
  29882. if (!(i$4 >= 0)) { break; }
  29883. inst.Next = $append(inst.Next, inst.Inst.Out);
  29884. i$4 = i$4 - (1) >> 0;
  29885. }
  29886. /* } } */ case 9:
  29887. return ok;
  29888. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: $b }; } $f.$ptr = $ptr; $f._entry = _entry; $f._entry$1 = _entry$1; $f._entry$2 = _entry$2; $f._entry$3 = _entry$3; $f._key = _key; $f._key$1 = _key$1; $f._key$2 = _key$2; $f._key$3 = _key$3; $f._key$4 = _key$4; $f._key$5 = _key$5; $f._key$6 = _key$6; $f._key$7 = _key$7; $f._q = _q; $f._q$1 = _q$1; $f._q$2 = _q$2; $f._q$3 = _q$3; $f._q$4 = _q$4; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._ref = _ref; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tuple = _tuple; $f._v = _v; $f.i = i; $f.i$1 = i$1; $f.i$2 = i$2; $f.i$3 = i$3; $f.i$4 = i$4; $f.inst = inst; $f.m = m; $f.matchArg = matchArg; $f.matchOut = matchOut; $f.ok = ok; $f.pc = pc; $f.r0 = r0; $f.r0$1 = r0$1; $f.r1 = r1; $f.r1$1 = r1$1; $f.runes = runes; $f.runes$1 = runes$1; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.x$3 = x$3; $f.x$4 = x$4; $f.x$5 = x$5; $f.x$6 = x$6; $f.x$7 = x$7; $f.$s = $s; $f.$r = $r; return $f;
  29889. }; })(build, check, onePassRunes, p, visitQueue);
  29890. instQueue.clear();
  29891. instQueue.insert((p[0].Start >>> 0));
  29892. m = new $Map();
  29893. /* while (true) { */ case 1:
  29894. /* if (!(!instQueue.empty())) { break; } */ if(!(!instQueue.empty())) { $s = 2; continue; }
  29895. pc = instQueue.next();
  29896. inst = $clone((x = p[0].Inst, ((pc < 0 || pc >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + pc])), onePassInst);
  29897. visitQueue[0].clear();
  29898. _r = check[0](pc, m); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  29899. /* */ if (!_r) { $s = 3; continue; }
  29900. /* */ $s = 4; continue;
  29901. /* if (!_r) { */ case 3:
  29902. p[0] = notOnePass;
  29903. /* break; */ $s = 2; continue;
  29904. /* } */ case 4:
  29905. _ref = inst.Inst.Op;
  29906. if (_ref === 0 || _ref === 1) {
  29907. instQueue.insert(inst.Inst.Out);
  29908. instQueue.insert(inst.Inst.Arg);
  29909. } else if (_ref === 2 || _ref === 3 || _ref === 6) {
  29910. instQueue.insert(inst.Inst.Out);
  29911. } else if (_ref === 4) {
  29912. } else if (_ref === 5) {
  29913. } else if (_ref === 7 || _ref === 8 || _ref === 9 || _ref === 10) {
  29914. } else {
  29915. }
  29916. /* } */ $s = 1; continue; case 2:
  29917. if (!(p[0] === notOnePass)) {
  29918. _ref$1 = p[0].Inst;
  29919. _i = 0;
  29920. while (true) {
  29921. if (!(_i < _ref$1.$length)) { break; }
  29922. i = _i;
  29923. (x$1 = p[0].Inst, ((i < 0 || i >= x$1.$length) ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + i])).Inst.Rune = ((i < 0 || i >= onePassRunes[0].$length) ? $throwRuntimeError("index out of range") : onePassRunes[0].$array[onePassRunes[0].$offset + i]);
  29924. _i++;
  29925. }
  29926. }
  29927. return p[0];
  29928. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: makeOnePass }; } $f.$ptr = $ptr; $f._i = _i; $f._r = _r; $f._ref = _ref; $f._ref$1 = _ref$1; $f.build = build; $f.check = check; $f.i = i; $f.inst = inst; $f.instQueue = instQueue; $f.m = m; $f.onePassRunes = onePassRunes; $f.p = p; $f.pc = pc; $f.visitQueue = visitQueue; $f.x = x; $f.x$1 = x$1; $f.$s = $s; $f.$r = $r; return $f;
  29929. };
  29930. compileOnePass = function(prog) {
  29931. var $ptr, _i, _r, _ref, _ref$1, inst, opOut, p, prog, x, x$1, x$2, x$3, x$4, x$5, x$6, x$7, $s, $r;
  29932. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _i = $f._i; _r = $f._r; _ref = $f._ref; _ref$1 = $f._ref$1; inst = $f.inst; opOut = $f.opOut; p = $f.p; prog = $f.prog; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; x$3 = $f.x$3; x$4 = $f.x$4; x$5 = $f.x$5; x$6 = $f.x$6; x$7 = $f.x$7; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  29933. p = ptrType.nil;
  29934. if (prog.Start === 0) {
  29935. p = notOnePass;
  29936. return p;
  29937. }
  29938. if (!(((x = prog.Inst, x$1 = prog.Start, ((x$1 < 0 || x$1 >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + x$1])).Op === 3)) || !((((((x$2 = prog.Inst, x$3 = prog.Start, ((x$3 < 0 || x$3 >= x$2.$length) ? $throwRuntimeError("index out of range") : x$2.$array[x$2.$offset + x$3])).Arg << 24 >>> 24) & 4) >>> 0) === 4))) {
  29939. p = notOnePass;
  29940. return p;
  29941. }
  29942. _ref = prog.Inst;
  29943. _i = 0;
  29944. /* while (true) { */ case 1:
  29945. /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; }
  29946. inst = $clone(((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]), syntax.Inst);
  29947. opOut = (x$4 = prog.Inst, x$5 = inst.Out, ((x$5 < 0 || x$5 >= x$4.$length) ? $throwRuntimeError("index out of range") : x$4.$array[x$4.$offset + x$5])).Op;
  29948. _ref$1 = inst.Op;
  29949. if (_ref$1 === 0 || _ref$1 === 1) {
  29950. if ((opOut === 4) || ((x$6 = prog.Inst, x$7 = inst.Arg, ((x$7 < 0 || x$7 >= x$6.$length) ? $throwRuntimeError("index out of range") : x$6.$array[x$6.$offset + x$7])).Op === 4)) {
  29951. p = notOnePass;
  29952. return p;
  29953. }
  29954. } else if (_ref$1 === 3) {
  29955. if (opOut === 4) {
  29956. if ((((inst.Arg << 24 >>> 24) & 8) >>> 0) === 8) {
  29957. _i++;
  29958. /* continue; */ $s = 1; continue;
  29959. }
  29960. p = notOnePass;
  29961. return p;
  29962. }
  29963. } else {
  29964. if (opOut === 4) {
  29965. p = notOnePass;
  29966. return p;
  29967. }
  29968. }
  29969. _i++;
  29970. /* } */ $s = 1; continue; case 2:
  29971. p = onePassCopy(prog);
  29972. _r = makeOnePass(p); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  29973. p = _r;
  29974. if (!(p === notOnePass)) {
  29975. cleanupOnePass(p, prog);
  29976. }
  29977. p = p;
  29978. return p;
  29979. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: compileOnePass }; } $f.$ptr = $ptr; $f._i = _i; $f._r = _r; $f._ref = _ref; $f._ref$1 = _ref$1; $f.inst = inst; $f.opOut = opOut; $f.p = p; $f.prog = prog; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.x$3 = x$3; $f.x$4 = x$4; $f.x$5 = x$5; $f.x$6 = x$6; $f.x$7 = x$7; $f.$s = $s; $f.$r = $r; return $f;
  29980. };
  29981. Regexp.ptr.prototype.String = function() {
  29982. var $ptr, re;
  29983. re = this;
  29984. return re.expr;
  29985. };
  29986. Regexp.prototype.String = function() { return this.$val.String(); };
  29987. Compile = function(expr) {
  29988. var $ptr, _r, expr, $s, $r;
  29989. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; expr = $f.expr; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  29990. _r = compile(expr, 212, false); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  29991. return _r;
  29992. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Compile }; } $f.$ptr = $ptr; $f._r = _r; $f.expr = expr; $f.$s = $s; $f.$r = $r; return $f;
  29993. };
  29994. $pkg.Compile = Compile;
  29995. Regexp.ptr.prototype.Longest = function() {
  29996. var $ptr, re;
  29997. re = this;
  29998. re.longest = true;
  29999. };
  30000. Regexp.prototype.Longest = function() { return this.$val.Longest(); };
  30001. compile = function(expr, mode, longest) {
  30002. var $ptr, _r, _r$1, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, capNames, err, expr, longest, maxCap, mode, prog, re, regexp, $s, $r;
  30003. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; _tuple$4 = $f._tuple$4; capNames = $f.capNames; err = $f.err; expr = $f.expr; longest = $f.longest; maxCap = $f.maxCap; mode = $f.mode; prog = $f.prog; re = $f.re; regexp = $f.regexp; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  30004. _r = syntax.Parse(expr, mode); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  30005. _tuple = _r; re = _tuple[0]; err = _tuple[1];
  30006. if (!($interfaceIsEqual(err, $ifaceNil))) {
  30007. return [ptrType$1.nil, err];
  30008. }
  30009. maxCap = re.MaxCap();
  30010. capNames = re.CapNames();
  30011. re = re.Simplify();
  30012. _tuple$1 = syntax.Compile(re); prog = _tuple$1[0]; err = _tuple$1[1];
  30013. if (!($interfaceIsEqual(err, $ifaceNil))) {
  30014. return [ptrType$1.nil, err];
  30015. }
  30016. _r$1 = compileOnePass(prog); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  30017. regexp = new Regexp.ptr(expr, prog, _r$1, "", sliceType$3.nil, false, 0, 0, prog.StartCond(), maxCap, capNames, longest, new nosync.Mutex.ptr(), sliceType$10.nil);
  30018. if (regexp.onepass === notOnePass) {
  30019. _tuple$2 = prog.Prefix(); regexp.prefix = _tuple$2[0]; regexp.prefixComplete = _tuple$2[1];
  30020. } else {
  30021. _tuple$3 = onePassPrefix(prog); regexp.prefix = _tuple$3[0]; regexp.prefixComplete = _tuple$3[1]; regexp.prefixEnd = _tuple$3[2];
  30022. }
  30023. if (!(regexp.prefix === "")) {
  30024. regexp.prefixBytes = new sliceType$3($stringToBytes(regexp.prefix));
  30025. _tuple$4 = utf8.DecodeRuneInString(regexp.prefix); regexp.prefixRune = _tuple$4[0];
  30026. }
  30027. return [regexp, $ifaceNil];
  30028. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: compile }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f._tuple$4 = _tuple$4; $f.capNames = capNames; $f.err = err; $f.expr = expr; $f.longest = longest; $f.maxCap = maxCap; $f.mode = mode; $f.prog = prog; $f.re = re; $f.regexp = regexp; $f.$s = $s; $f.$r = $r; return $f;
  30029. };
  30030. Regexp.ptr.prototype.get = function() {
  30031. var $ptr, n, re, x, x$1, z, z$1;
  30032. re = this;
  30033. re.mu.Lock();
  30034. n = re.machine.$length;
  30035. if (n > 0) {
  30036. z = (x = re.machine, x$1 = n - 1 >> 0, ((x$1 < 0 || x$1 >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + x$1]));
  30037. re.machine = $subslice(re.machine, 0, (n - 1 >> 0));
  30038. re.mu.Unlock();
  30039. return z;
  30040. }
  30041. re.mu.Unlock();
  30042. z$1 = progMachine(re.prog, re.onepass);
  30043. z$1.re = re;
  30044. return z$1;
  30045. };
  30046. Regexp.prototype.get = function() { return this.$val.get(); };
  30047. Regexp.ptr.prototype.put = function(z) {
  30048. var $ptr, re, z;
  30049. re = this;
  30050. re.mu.Lock();
  30051. re.machine = $append(re.machine, z);
  30052. re.mu.Unlock();
  30053. };
  30054. Regexp.prototype.put = function(z) { return this.$val.put(z); };
  30055. MustCompile = function(str) {
  30056. var $ptr, _r, _r$1, _tuple, error, regexp, str, $s, $r;
  30057. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _tuple = $f._tuple; error = $f.error; regexp = $f.regexp; str = $f.str; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  30058. _r = Compile(str); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  30059. _tuple = _r; regexp = _tuple[0]; error = _tuple[1];
  30060. /* */ if (!($interfaceIsEqual(error, $ifaceNil))) { $s = 2; continue; }
  30061. /* */ $s = 3; continue;
  30062. /* if (!($interfaceIsEqual(error, $ifaceNil))) { */ case 2:
  30063. _r$1 = error.Error(); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  30064. $panic(new $String("regexp: Compile(" + quote(str) + "): " + _r$1));
  30065. /* } */ case 3:
  30066. return regexp;
  30067. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: MustCompile }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._tuple = _tuple; $f.error = error; $f.regexp = regexp; $f.str = str; $f.$s = $s; $f.$r = $r; return $f;
  30068. };
  30069. $pkg.MustCompile = MustCompile;
  30070. quote = function(s) {
  30071. var $ptr, s;
  30072. if (strconv.CanBackquote(s)) {
  30073. return "`" + s + "`";
  30074. }
  30075. return strconv.Quote(s);
  30076. };
  30077. Regexp.ptr.prototype.NumSubexp = function() {
  30078. var $ptr, re;
  30079. re = this;
  30080. return re.numSubexp;
  30081. };
  30082. Regexp.prototype.NumSubexp = function() { return this.$val.NumSubexp(); };
  30083. Regexp.ptr.prototype.SubexpNames = function() {
  30084. var $ptr, re;
  30085. re = this;
  30086. return re.subexpNames;
  30087. };
  30088. Regexp.prototype.SubexpNames = function() { return this.$val.SubexpNames(); };
  30089. inputString.ptr.prototype.step = function(pos) {
  30090. var $ptr, c, i, pos;
  30091. i = this;
  30092. if (pos < i.str.length) {
  30093. c = i.str.charCodeAt(pos);
  30094. if (c < 128) {
  30095. return [(c >> 0), 1];
  30096. }
  30097. return utf8.DecodeRuneInString(i.str.substring(pos));
  30098. }
  30099. return [-1, 0];
  30100. };
  30101. inputString.prototype.step = function(pos) { return this.$val.step(pos); };
  30102. inputString.ptr.prototype.canCheckPrefix = function() {
  30103. var $ptr, i;
  30104. i = this;
  30105. return true;
  30106. };
  30107. inputString.prototype.canCheckPrefix = function() { return this.$val.canCheckPrefix(); };
  30108. inputString.ptr.prototype.hasPrefix = function(re) {
  30109. var $ptr, i, re;
  30110. i = this;
  30111. return strings.HasPrefix(i.str, re.prefix);
  30112. };
  30113. inputString.prototype.hasPrefix = function(re) { return this.$val.hasPrefix(re); };
  30114. inputString.ptr.prototype.index = function(re, pos) {
  30115. var $ptr, i, pos, re;
  30116. i = this;
  30117. return strings.Index(i.str.substring(pos), re.prefix);
  30118. };
  30119. inputString.prototype.index = function(re, pos) { return this.$val.index(re, pos); };
  30120. inputString.ptr.prototype.context = function(pos) {
  30121. var $ptr, _tmp, _tmp$1, _tuple, _tuple$1, i, pos, r1, r2;
  30122. i = this;
  30123. _tmp = -1; _tmp$1 = -1; r1 = _tmp; r2 = _tmp$1;
  30124. if (pos > 0 && pos <= i.str.length) {
  30125. _tuple = utf8.DecodeLastRuneInString(i.str.substring(0, pos)); r1 = _tuple[0];
  30126. }
  30127. if (pos < i.str.length) {
  30128. _tuple$1 = utf8.DecodeRuneInString(i.str.substring(pos)); r2 = _tuple$1[0];
  30129. }
  30130. return syntax.EmptyOpContext(r1, r2);
  30131. };
  30132. inputString.prototype.context = function(pos) { return this.$val.context(pos); };
  30133. inputBytes.ptr.prototype.step = function(pos) {
  30134. var $ptr, c, i, pos, x;
  30135. i = this;
  30136. if (pos < i.str.$length) {
  30137. c = (x = i.str, ((pos < 0 || pos >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + pos]));
  30138. if (c < 128) {
  30139. return [(c >> 0), 1];
  30140. }
  30141. return utf8.DecodeRune($subslice(i.str, pos));
  30142. }
  30143. return [-1, 0];
  30144. };
  30145. inputBytes.prototype.step = function(pos) { return this.$val.step(pos); };
  30146. inputBytes.ptr.prototype.canCheckPrefix = function() {
  30147. var $ptr, i;
  30148. i = this;
  30149. return true;
  30150. };
  30151. inputBytes.prototype.canCheckPrefix = function() { return this.$val.canCheckPrefix(); };
  30152. inputBytes.ptr.prototype.hasPrefix = function(re) {
  30153. var $ptr, i, re;
  30154. i = this;
  30155. return bytes.HasPrefix(i.str, re.prefixBytes);
  30156. };
  30157. inputBytes.prototype.hasPrefix = function(re) { return this.$val.hasPrefix(re); };
  30158. inputBytes.ptr.prototype.index = function(re, pos) {
  30159. var $ptr, i, pos, re;
  30160. i = this;
  30161. return bytes.Index($subslice(i.str, pos), re.prefixBytes);
  30162. };
  30163. inputBytes.prototype.index = function(re, pos) { return this.$val.index(re, pos); };
  30164. inputBytes.ptr.prototype.context = function(pos) {
  30165. var $ptr, _tmp, _tmp$1, _tuple, _tuple$1, i, pos, r1, r2;
  30166. i = this;
  30167. _tmp = -1; _tmp$1 = -1; r1 = _tmp; r2 = _tmp$1;
  30168. if (pos > 0 && pos <= i.str.$length) {
  30169. _tuple = utf8.DecodeLastRune($subslice(i.str, 0, pos)); r1 = _tuple[0];
  30170. }
  30171. if (pos < i.str.$length) {
  30172. _tuple$1 = utf8.DecodeRune($subslice(i.str, pos)); r2 = _tuple$1[0];
  30173. }
  30174. return syntax.EmptyOpContext(r1, r2);
  30175. };
  30176. inputBytes.prototype.context = function(pos) { return this.$val.context(pos); };
  30177. inputReader.ptr.prototype.step = function(pos) {
  30178. var $ptr, _r, _tuple, err, i, pos, r, w, $s, $r;
  30179. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tuple = $f._tuple; err = $f.err; i = $f.i; pos = $f.pos; r = $f.r; w = $f.w; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  30180. i = this;
  30181. if (!i.atEOT && !((pos === i.pos))) {
  30182. return [-1, 0];
  30183. }
  30184. _r = i.r.ReadRune(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  30185. _tuple = _r; r = _tuple[0]; w = _tuple[1]; err = _tuple[2];
  30186. if (!($interfaceIsEqual(err, $ifaceNil))) {
  30187. i.atEOT = true;
  30188. return [-1, 0];
  30189. }
  30190. i.pos = i.pos + (w) >> 0;
  30191. return [r, w];
  30192. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: inputReader.ptr.prototype.step }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple = _tuple; $f.err = err; $f.i = i; $f.pos = pos; $f.r = r; $f.w = w; $f.$s = $s; $f.$r = $r; return $f;
  30193. };
  30194. inputReader.prototype.step = function(pos) { return this.$val.step(pos); };
  30195. inputReader.ptr.prototype.canCheckPrefix = function() {
  30196. var $ptr, i;
  30197. i = this;
  30198. return false;
  30199. };
  30200. inputReader.prototype.canCheckPrefix = function() { return this.$val.canCheckPrefix(); };
  30201. inputReader.ptr.prototype.hasPrefix = function(re) {
  30202. var $ptr, i, re;
  30203. i = this;
  30204. return false;
  30205. };
  30206. inputReader.prototype.hasPrefix = function(re) { return this.$val.hasPrefix(re); };
  30207. inputReader.ptr.prototype.index = function(re, pos) {
  30208. var $ptr, i, pos, re;
  30209. i = this;
  30210. return -1;
  30211. };
  30212. inputReader.prototype.index = function(re, pos) { return this.$val.index(re, pos); };
  30213. inputReader.ptr.prototype.context = function(pos) {
  30214. var $ptr, i, pos;
  30215. i = this;
  30216. return 0;
  30217. };
  30218. inputReader.prototype.context = function(pos) { return this.$val.context(pos); };
  30219. Regexp.ptr.prototype.LiteralPrefix = function() {
  30220. var $ptr, _tmp, _tmp$1, complete, prefix, re;
  30221. prefix = "";
  30222. complete = false;
  30223. re = this;
  30224. _tmp = re.prefix; _tmp$1 = re.prefixComplete; prefix = _tmp; complete = _tmp$1;
  30225. return [prefix, complete];
  30226. };
  30227. Regexp.prototype.LiteralPrefix = function() { return this.$val.LiteralPrefix(); };
  30228. Regexp.ptr.prototype.MatchReader = function(r) {
  30229. var $ptr, _r, r, re, $s, $r;
  30230. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; r = $f.r; re = $f.re; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  30231. re = this;
  30232. _r = re.doExecute(r, sliceType$3.nil, "", 0, 0); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  30233. return !(_r === sliceType.nil);
  30234. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Regexp.ptr.prototype.MatchReader }; } $f.$ptr = $ptr; $f._r = _r; $f.r = r; $f.re = re; $f.$s = $s; $f.$r = $r; return $f;
  30235. };
  30236. Regexp.prototype.MatchReader = function(r) { return this.$val.MatchReader(r); };
  30237. Regexp.ptr.prototype.MatchString = function(s) {
  30238. var $ptr, _r, re, s, $s, $r;
  30239. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; re = $f.re; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  30240. re = this;
  30241. _r = re.doExecute($ifaceNil, sliceType$3.nil, s, 0, 0); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  30242. return !(_r === sliceType.nil);
  30243. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Regexp.ptr.prototype.MatchString }; } $f.$ptr = $ptr; $f._r = _r; $f.re = re; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
  30244. };
  30245. Regexp.prototype.MatchString = function(s) { return this.$val.MatchString(s); };
  30246. Regexp.ptr.prototype.Match = function(b) {
  30247. var $ptr, _r, b, re, $s, $r;
  30248. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; b = $f.b; re = $f.re; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  30249. re = this;
  30250. _r = re.doExecute($ifaceNil, b, "", 0, 0); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  30251. return !(_r === sliceType.nil);
  30252. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Regexp.ptr.prototype.Match }; } $f.$ptr = $ptr; $f._r = _r; $f.b = b; $f.re = re; $f.$s = $s; $f.$r = $r; return $f;
  30253. };
  30254. Regexp.prototype.Match = function(b) { return this.$val.Match(b); };
  30255. Regexp.ptr.prototype.ReplaceAllString = function(src, repl) {
  30256. var $ptr, _r, b, n, re, repl, src, $s, $r;
  30257. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; b = $f.b; n = $f.n; re = $f.re; repl = $f.repl; src = $f.src; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  30258. re = [re];
  30259. repl = [repl];
  30260. src = [src];
  30261. re[0] = this;
  30262. n = 2;
  30263. if (strings.Index(repl[0], "$") >= 0) {
  30264. n = 2 * ((re[0].numSubexp + 1 >> 0)) >> 0;
  30265. }
  30266. _r = re[0].replaceAll(sliceType$3.nil, src[0], n, (function(re, repl, src) { return function(dst, match) {
  30267. var $ptr, dst, match;
  30268. return re[0].expand(dst, repl[0], sliceType$3.nil, src[0], match);
  30269. }; })(re, repl, src)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  30270. b = _r;
  30271. return $bytesToString(b);
  30272. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Regexp.ptr.prototype.ReplaceAllString }; } $f.$ptr = $ptr; $f._r = _r; $f.b = b; $f.n = n; $f.re = re; $f.repl = repl; $f.src = src; $f.$s = $s; $f.$r = $r; return $f;
  30273. };
  30274. Regexp.prototype.ReplaceAllString = function(src, repl) { return this.$val.ReplaceAllString(src, repl); };
  30275. Regexp.ptr.prototype.ReplaceAllLiteralString = function(src, repl) {
  30276. var $ptr, _r, re, repl, src, $s, $r;
  30277. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; re = $f.re; repl = $f.repl; src = $f.src; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  30278. repl = [repl];
  30279. re = this;
  30280. _r = re.replaceAll(sliceType$3.nil, src, 2, (function(repl) { return function(dst, match) {
  30281. var $ptr, dst, match;
  30282. return $appendSlice(dst, new sliceType$3($stringToBytes(repl[0])));
  30283. }; })(repl)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  30284. return $bytesToString(_r);
  30285. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Regexp.ptr.prototype.ReplaceAllLiteralString }; } $f.$ptr = $ptr; $f._r = _r; $f.re = re; $f.repl = repl; $f.src = src; $f.$s = $s; $f.$r = $r; return $f;
  30286. };
  30287. Regexp.prototype.ReplaceAllLiteralString = function(src, repl) { return this.$val.ReplaceAllLiteralString(src, repl); };
  30288. Regexp.ptr.prototype.ReplaceAllStringFunc = function(src, repl) {
  30289. var $ptr, _r, b, re, repl, src, $s, $r;
  30290. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; b = $f.b; re = $f.re; repl = $f.repl; src = $f.src; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  30291. repl = [repl];
  30292. src = [src];
  30293. re = this;
  30294. _r = re.replaceAll(sliceType$3.nil, src[0], 2, (function(repl, src) { return function $b(dst, match) {
  30295. var $ptr, _r, dst, match, $s, $r;
  30296. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; dst = $f.dst; match = $f.match; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  30297. _r = repl[0](src[0].substring((0 >= match.$length ? $throwRuntimeError("index out of range") : match.$array[match.$offset + 0]), (1 >= match.$length ? $throwRuntimeError("index out of range") : match.$array[match.$offset + 1]))); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  30298. return $appendSlice(dst, new sliceType$3($stringToBytes(_r)));
  30299. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: $b }; } $f.$ptr = $ptr; $f._r = _r; $f.dst = dst; $f.match = match; $f.$s = $s; $f.$r = $r; return $f;
  30300. }; })(repl, src)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  30301. b = _r;
  30302. return $bytesToString(b);
  30303. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Regexp.ptr.prototype.ReplaceAllStringFunc }; } $f.$ptr = $ptr; $f._r = _r; $f.b = b; $f.re = re; $f.repl = repl; $f.src = src; $f.$s = $s; $f.$r = $r; return $f;
  30304. };
  30305. Regexp.prototype.ReplaceAllStringFunc = function(src, repl) { return this.$val.ReplaceAllStringFunc(src, repl); };
  30306. Regexp.ptr.prototype.replaceAll = function(bsrc, src, nmatch, repl) {
  30307. var $ptr, _r, _r$1, _tuple, _tuple$1, a, bsrc, buf, endPos, lastMatchEnd, nmatch, re, repl, searchPos, src, width, $s, $r;
  30308. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; a = $f.a; bsrc = $f.bsrc; buf = $f.buf; endPos = $f.endPos; lastMatchEnd = $f.lastMatchEnd; nmatch = $f.nmatch; re = $f.re; repl = $f.repl; searchPos = $f.searchPos; src = $f.src; width = $f.width; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  30309. re = this;
  30310. lastMatchEnd = 0;
  30311. searchPos = 0;
  30312. buf = sliceType$3.nil;
  30313. endPos = 0;
  30314. if (!(bsrc === sliceType$3.nil)) {
  30315. endPos = bsrc.$length;
  30316. } else {
  30317. endPos = src.length;
  30318. }
  30319. /* while (true) { */ case 1:
  30320. /* if (!(searchPos <= endPos)) { break; } */ if(!(searchPos <= endPos)) { $s = 2; continue; }
  30321. _r = re.doExecute($ifaceNil, bsrc, src, searchPos, nmatch); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  30322. a = _r;
  30323. if (a.$length === 0) {
  30324. /* break; */ $s = 2; continue;
  30325. }
  30326. if (!(bsrc === sliceType$3.nil)) {
  30327. buf = $appendSlice(buf, $subslice(bsrc, lastMatchEnd, (0 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 0])));
  30328. } else {
  30329. buf = $appendSlice(buf, new sliceType$3($stringToBytes(src.substring(lastMatchEnd, (0 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 0])))));
  30330. }
  30331. /* */ if ((1 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 1]) > lastMatchEnd || ((0 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 0]) === 0)) { $s = 4; continue; }
  30332. /* */ $s = 5; continue;
  30333. /* if ((1 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 1]) > lastMatchEnd || ((0 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 0]) === 0)) { */ case 4:
  30334. _r$1 = repl(buf, a); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  30335. buf = _r$1;
  30336. /* } */ case 5:
  30337. lastMatchEnd = (1 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 1]);
  30338. width = 0;
  30339. if (!(bsrc === sliceType$3.nil)) {
  30340. _tuple = utf8.DecodeRune($subslice(bsrc, searchPos)); width = _tuple[1];
  30341. } else {
  30342. _tuple$1 = utf8.DecodeRuneInString(src.substring(searchPos)); width = _tuple$1[1];
  30343. }
  30344. if ((searchPos + width >> 0) > (1 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 1])) {
  30345. searchPos = searchPos + (width) >> 0;
  30346. } else if ((searchPos + 1 >> 0) > (1 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 1])) {
  30347. searchPos = searchPos + (1) >> 0;
  30348. } else {
  30349. searchPos = (1 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 1]);
  30350. }
  30351. /* } */ $s = 1; continue; case 2:
  30352. if (!(bsrc === sliceType$3.nil)) {
  30353. buf = $appendSlice(buf, $subslice(bsrc, lastMatchEnd));
  30354. } else {
  30355. buf = $appendSlice(buf, new sliceType$3($stringToBytes(src.substring(lastMatchEnd))));
  30356. }
  30357. return buf;
  30358. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Regexp.ptr.prototype.replaceAll }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.a = a; $f.bsrc = bsrc; $f.buf = buf; $f.endPos = endPos; $f.lastMatchEnd = lastMatchEnd; $f.nmatch = nmatch; $f.re = re; $f.repl = repl; $f.searchPos = searchPos; $f.src = src; $f.width = width; $f.$s = $s; $f.$r = $r; return $f;
  30359. };
  30360. Regexp.prototype.replaceAll = function(bsrc, src, nmatch, repl) { return this.$val.replaceAll(bsrc, src, nmatch, repl); };
  30361. Regexp.ptr.prototype.ReplaceAll = function(src, repl) {
  30362. var $ptr, _r, b, n, re, repl, src, srepl, $s, $r;
  30363. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; b = $f.b; n = $f.n; re = $f.re; repl = $f.repl; src = $f.src; srepl = $f.srepl; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  30364. re = [re];
  30365. repl = [repl];
  30366. src = [src];
  30367. srepl = [srepl];
  30368. re[0] = this;
  30369. n = 2;
  30370. if (bytes.IndexByte(repl[0], 36) >= 0) {
  30371. n = 2 * ((re[0].numSubexp + 1 >> 0)) >> 0;
  30372. }
  30373. srepl[0] = "";
  30374. _r = re[0].replaceAll(src[0], "", n, (function(re, repl, src, srepl) { return function(dst, match) {
  30375. var $ptr, dst, match;
  30376. if (!((srepl[0].length === repl[0].$length))) {
  30377. srepl[0] = $bytesToString(repl[0]);
  30378. }
  30379. return re[0].expand(dst, srepl[0], src[0], "", match);
  30380. }; })(re, repl, src, srepl)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  30381. b = _r;
  30382. return b;
  30383. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Regexp.ptr.prototype.ReplaceAll }; } $f.$ptr = $ptr; $f._r = _r; $f.b = b; $f.n = n; $f.re = re; $f.repl = repl; $f.src = src; $f.srepl = srepl; $f.$s = $s; $f.$r = $r; return $f;
  30384. };
  30385. Regexp.prototype.ReplaceAll = function(src, repl) { return this.$val.ReplaceAll(src, repl); };
  30386. Regexp.ptr.prototype.ReplaceAllLiteral = function(src, repl) {
  30387. var $ptr, _r, re, repl, src, $s, $r;
  30388. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; re = $f.re; repl = $f.repl; src = $f.src; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  30389. repl = [repl];
  30390. re = this;
  30391. _r = re.replaceAll(src, "", 2, (function(repl) { return function(dst, match) {
  30392. var $ptr, dst, match;
  30393. return $appendSlice(dst, repl[0]);
  30394. }; })(repl)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  30395. return _r;
  30396. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Regexp.ptr.prototype.ReplaceAllLiteral }; } $f.$ptr = $ptr; $f._r = _r; $f.re = re; $f.repl = repl; $f.src = src; $f.$s = $s; $f.$r = $r; return $f;
  30397. };
  30398. Regexp.prototype.ReplaceAllLiteral = function(src, repl) { return this.$val.ReplaceAllLiteral(src, repl); };
  30399. Regexp.ptr.prototype.ReplaceAllFunc = function(src, repl) {
  30400. var $ptr, _r, re, repl, src, $s, $r;
  30401. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; re = $f.re; repl = $f.repl; src = $f.src; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  30402. repl = [repl];
  30403. src = [src];
  30404. re = this;
  30405. _r = re.replaceAll(src[0], "", 2, (function(repl, src) { return function $b(dst, match) {
  30406. var $ptr, _r, dst, match, $s, $r;
  30407. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; dst = $f.dst; match = $f.match; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  30408. _r = repl[0]($subslice(src[0], (0 >= match.$length ? $throwRuntimeError("index out of range") : match.$array[match.$offset + 0]), (1 >= match.$length ? $throwRuntimeError("index out of range") : match.$array[match.$offset + 1]))); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  30409. return $appendSlice(dst, _r);
  30410. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: $b }; } $f.$ptr = $ptr; $f._r = _r; $f.dst = dst; $f.match = match; $f.$s = $s; $f.$r = $r; return $f;
  30411. }; })(repl, src)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  30412. return _r;
  30413. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Regexp.ptr.prototype.ReplaceAllFunc }; } $f.$ptr = $ptr; $f._r = _r; $f.re = re; $f.repl = repl; $f.src = src; $f.$s = $s; $f.$r = $r; return $f;
  30414. };
  30415. Regexp.prototype.ReplaceAllFunc = function(src, repl) { return this.$val.ReplaceAllFunc(src, repl); };
  30416. Regexp.ptr.prototype.pad = function(a) {
  30417. var $ptr, a, n, re;
  30418. re = this;
  30419. if (a === sliceType.nil) {
  30420. return sliceType.nil;
  30421. }
  30422. n = ((1 + re.numSubexp >> 0)) * 2 >> 0;
  30423. while (true) {
  30424. if (!(a.$length < n)) { break; }
  30425. a = $append(a, -1);
  30426. }
  30427. return a;
  30428. };
  30429. Regexp.prototype.pad = function(a) { return this.$val.pad(a); };
  30430. Regexp.ptr.prototype.allMatches = function(s, b, n, deliver) {
  30431. var $ptr, _r, _tmp, _tmp$1, _tmp$2, _tuple, _tuple$1, accept, b, deliver, end, i, matches, n, pos, prevMatchEnd, re, s, width, $s, $r;
  30432. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; accept = $f.accept; b = $f.b; deliver = $f.deliver; end = $f.end; i = $f.i; matches = $f.matches; n = $f.n; pos = $f.pos; prevMatchEnd = $f.prevMatchEnd; re = $f.re; s = $f.s; width = $f.width; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  30433. re = this;
  30434. end = 0;
  30435. if (b === sliceType$3.nil) {
  30436. end = s.length;
  30437. } else {
  30438. end = b.$length;
  30439. }
  30440. _tmp = 0; _tmp$1 = 0; _tmp$2 = -1; pos = _tmp; i = _tmp$1; prevMatchEnd = _tmp$2;
  30441. /* while (true) { */ case 1:
  30442. /* if (!(i < n && pos <= end)) { break; } */ if(!(i < n && pos <= end)) { $s = 2; continue; }
  30443. _r = re.doExecute($ifaceNil, b, s, pos, re.prog.NumCap); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  30444. matches = _r;
  30445. if (matches.$length === 0) {
  30446. /* break; */ $s = 2; continue;
  30447. }
  30448. accept = true;
  30449. if ((1 >= matches.$length ? $throwRuntimeError("index out of range") : matches.$array[matches.$offset + 1]) === pos) {
  30450. if ((0 >= matches.$length ? $throwRuntimeError("index out of range") : matches.$array[matches.$offset + 0]) === prevMatchEnd) {
  30451. accept = false;
  30452. }
  30453. width = 0;
  30454. if (b === sliceType$3.nil) {
  30455. _tuple = utf8.DecodeRuneInString(s.substring(pos, end)); width = _tuple[1];
  30456. } else {
  30457. _tuple$1 = utf8.DecodeRune($subslice(b, pos, end)); width = _tuple$1[1];
  30458. }
  30459. if (width > 0) {
  30460. pos = pos + (width) >> 0;
  30461. } else {
  30462. pos = end + 1 >> 0;
  30463. }
  30464. } else {
  30465. pos = (1 >= matches.$length ? $throwRuntimeError("index out of range") : matches.$array[matches.$offset + 1]);
  30466. }
  30467. prevMatchEnd = (1 >= matches.$length ? $throwRuntimeError("index out of range") : matches.$array[matches.$offset + 1]);
  30468. /* */ if (accept) { $s = 4; continue; }
  30469. /* */ $s = 5; continue;
  30470. /* if (accept) { */ case 4:
  30471. $r = deliver(re.pad(matches)); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  30472. i = i + (1) >> 0;
  30473. /* } */ case 5:
  30474. /* } */ $s = 1; continue; case 2:
  30475. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Regexp.ptr.prototype.allMatches }; } $f.$ptr = $ptr; $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.accept = accept; $f.b = b; $f.deliver = deliver; $f.end = end; $f.i = i; $f.matches = matches; $f.n = n; $f.pos = pos; $f.prevMatchEnd = prevMatchEnd; $f.re = re; $f.s = s; $f.width = width; $f.$s = $s; $f.$r = $r; return $f;
  30476. };
  30477. Regexp.prototype.allMatches = function(s, b, n, deliver) { return this.$val.allMatches(s, b, n, deliver); };
  30478. Regexp.ptr.prototype.Find = function(b) {
  30479. var $ptr, _r, a, b, re, $s, $r;
  30480. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; a = $f.a; b = $f.b; re = $f.re; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  30481. re = this;
  30482. _r = re.doExecute($ifaceNil, b, "", 0, 2); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  30483. a = _r;
  30484. if (a === sliceType.nil) {
  30485. return sliceType$3.nil;
  30486. }
  30487. return $subslice(b, (0 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 0]), (1 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 1]));
  30488. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Regexp.ptr.prototype.Find }; } $f.$ptr = $ptr; $f._r = _r; $f.a = a; $f.b = b; $f.re = re; $f.$s = $s; $f.$r = $r; return $f;
  30489. };
  30490. Regexp.prototype.Find = function(b) { return this.$val.Find(b); };
  30491. Regexp.ptr.prototype.FindIndex = function(b) {
  30492. var $ptr, _r, a, b, loc, re, $s, $r;
  30493. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; a = $f.a; b = $f.b; loc = $f.loc; re = $f.re; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  30494. loc = sliceType.nil;
  30495. re = this;
  30496. _r = re.doExecute($ifaceNil, b, "", 0, 2); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  30497. a = _r;
  30498. if (a === sliceType.nil) {
  30499. loc = sliceType.nil;
  30500. return loc;
  30501. }
  30502. loc = $subslice(a, 0, 2);
  30503. return loc;
  30504. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Regexp.ptr.prototype.FindIndex }; } $f.$ptr = $ptr; $f._r = _r; $f.a = a; $f.b = b; $f.loc = loc; $f.re = re; $f.$s = $s; $f.$r = $r; return $f;
  30505. };
  30506. Regexp.prototype.FindIndex = function(b) { return this.$val.FindIndex(b); };
  30507. Regexp.ptr.prototype.FindString = function(s) {
  30508. var $ptr, _r, a, re, s, $s, $r;
  30509. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; a = $f.a; re = $f.re; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  30510. re = this;
  30511. _r = re.doExecute($ifaceNil, sliceType$3.nil, s, 0, 2); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  30512. a = _r;
  30513. if (a === sliceType.nil) {
  30514. return "";
  30515. }
  30516. return s.substring((0 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 0]), (1 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 1]));
  30517. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Regexp.ptr.prototype.FindString }; } $f.$ptr = $ptr; $f._r = _r; $f.a = a; $f.re = re; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
  30518. };
  30519. Regexp.prototype.FindString = function(s) { return this.$val.FindString(s); };
  30520. Regexp.ptr.prototype.FindStringIndex = function(s) {
  30521. var $ptr, _r, a, loc, re, s, $s, $r;
  30522. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; a = $f.a; loc = $f.loc; re = $f.re; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  30523. loc = sliceType.nil;
  30524. re = this;
  30525. _r = re.doExecute($ifaceNil, sliceType$3.nil, s, 0, 2); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  30526. a = _r;
  30527. if (a === sliceType.nil) {
  30528. loc = sliceType.nil;
  30529. return loc;
  30530. }
  30531. loc = $subslice(a, 0, 2);
  30532. return loc;
  30533. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Regexp.ptr.prototype.FindStringIndex }; } $f.$ptr = $ptr; $f._r = _r; $f.a = a; $f.loc = loc; $f.re = re; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
  30534. };
  30535. Regexp.prototype.FindStringIndex = function(s) { return this.$val.FindStringIndex(s); };
  30536. Regexp.ptr.prototype.FindReaderIndex = function(r) {
  30537. var $ptr, _r, a, loc, r, re, $s, $r;
  30538. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; a = $f.a; loc = $f.loc; r = $f.r; re = $f.re; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  30539. loc = sliceType.nil;
  30540. re = this;
  30541. _r = re.doExecute(r, sliceType$3.nil, "", 0, 2); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  30542. a = _r;
  30543. if (a === sliceType.nil) {
  30544. loc = sliceType.nil;
  30545. return loc;
  30546. }
  30547. loc = $subslice(a, 0, 2);
  30548. return loc;
  30549. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Regexp.ptr.prototype.FindReaderIndex }; } $f.$ptr = $ptr; $f._r = _r; $f.a = a; $f.loc = loc; $f.r = r; $f.re = re; $f.$s = $s; $f.$r = $r; return $f;
  30550. };
  30551. Regexp.prototype.FindReaderIndex = function(r) { return this.$val.FindReaderIndex(r); };
  30552. Regexp.ptr.prototype.FindSubmatch = function(b) {
  30553. var $ptr, _i, _r, _ref, a, b, i, re, ret, x, x$1, x$2, $s, $r;
  30554. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _i = $f._i; _r = $f._r; _ref = $f._ref; a = $f.a; b = $f.b; i = $f.i; re = $f.re; ret = $f.ret; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  30555. re = this;
  30556. _r = re.doExecute($ifaceNil, b, "", 0, re.prog.NumCap); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  30557. a = _r;
  30558. if (a === sliceType.nil) {
  30559. return sliceType$11.nil;
  30560. }
  30561. ret = $makeSlice(sliceType$11, (1 + re.numSubexp >> 0));
  30562. _ref = ret;
  30563. _i = 0;
  30564. while (true) {
  30565. if (!(_i < _ref.$length)) { break; }
  30566. i = _i;
  30567. if ((2 * i >> 0) < a.$length && (x = 2 * i >> 0, ((x < 0 || x >= a.$length) ? $throwRuntimeError("index out of range") : a.$array[a.$offset + x])) >= 0) {
  30568. ((i < 0 || i >= ret.$length) ? $throwRuntimeError("index out of range") : ret.$array[ret.$offset + i] = $subslice(b, (x$1 = 2 * i >> 0, ((x$1 < 0 || x$1 >= a.$length) ? $throwRuntimeError("index out of range") : a.$array[a.$offset + x$1])), (x$2 = (2 * i >> 0) + 1 >> 0, ((x$2 < 0 || x$2 >= a.$length) ? $throwRuntimeError("index out of range") : a.$array[a.$offset + x$2]))));
  30569. }
  30570. _i++;
  30571. }
  30572. return ret;
  30573. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Regexp.ptr.prototype.FindSubmatch }; } $f.$ptr = $ptr; $f._i = _i; $f._r = _r; $f._ref = _ref; $f.a = a; $f.b = b; $f.i = i; $f.re = re; $f.ret = ret; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.$s = $s; $f.$r = $r; return $f;
  30574. };
  30575. Regexp.prototype.FindSubmatch = function(b) { return this.$val.FindSubmatch(b); };
  30576. Regexp.ptr.prototype.Expand = function(dst, template, src, match) {
  30577. var $ptr, dst, match, re, src, template;
  30578. re = this;
  30579. return re.expand(dst, $bytesToString(template), src, "", match);
  30580. };
  30581. Regexp.prototype.Expand = function(dst, template, src, match) { return this.$val.Expand(dst, template, src, match); };
  30582. Regexp.ptr.prototype.ExpandString = function(dst, template, src, match) {
  30583. var $ptr, dst, match, re, src, template;
  30584. re = this;
  30585. return re.expand(dst, template, sliceType$3.nil, src, match);
  30586. };
  30587. Regexp.prototype.ExpandString = function(dst, template, src, match) { return this.$val.ExpandString(dst, template, src, match); };
  30588. Regexp.ptr.prototype.expand = function(dst, template, bsrc, src, match) {
  30589. var $ptr, _i, _ref, _tuple, bsrc, dst, i, i$1, match, name, namei, num, ok, re, rest, src, template, x, x$1, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9;
  30590. re = this;
  30591. while (true) {
  30592. if (!(template.length > 0)) { break; }
  30593. i = strings.Index(template, "$");
  30594. if (i < 0) {
  30595. break;
  30596. }
  30597. dst = $appendSlice(dst, new sliceType$3($stringToBytes(template.substring(0, i))));
  30598. template = template.substring(i);
  30599. if (template.length > 1 && (template.charCodeAt(1) === 36)) {
  30600. dst = $append(dst, 36);
  30601. template = template.substring(2);
  30602. continue;
  30603. }
  30604. _tuple = extract(template); name = _tuple[0]; num = _tuple[1]; rest = _tuple[2]; ok = _tuple[3];
  30605. if (!ok) {
  30606. dst = $append(dst, 36);
  30607. template = template.substring(1);
  30608. continue;
  30609. }
  30610. template = rest;
  30611. if (num >= 0) {
  30612. if (((2 * num >> 0) + 1 >> 0) < match.$length && (x = 2 * num >> 0, ((x < 0 || x >= match.$length) ? $throwRuntimeError("index out of range") : match.$array[match.$offset + x])) >= 0) {
  30613. if (!(bsrc === sliceType$3.nil)) {
  30614. dst = $appendSlice(dst, $subslice(bsrc, (x$1 = 2 * num >> 0, ((x$1 < 0 || x$1 >= match.$length) ? $throwRuntimeError("index out of range") : match.$array[match.$offset + x$1])), (x$2 = (2 * num >> 0) + 1 >> 0, ((x$2 < 0 || x$2 >= match.$length) ? $throwRuntimeError("index out of range") : match.$array[match.$offset + x$2]))));
  30615. } else {
  30616. dst = $appendSlice(dst, new sliceType$3($stringToBytes(src.substring((x$3 = 2 * num >> 0, ((x$3 < 0 || x$3 >= match.$length) ? $throwRuntimeError("index out of range") : match.$array[match.$offset + x$3])), (x$4 = (2 * num >> 0) + 1 >> 0, ((x$4 < 0 || x$4 >= match.$length) ? $throwRuntimeError("index out of range") : match.$array[match.$offset + x$4]))))));
  30617. }
  30618. }
  30619. } else {
  30620. _ref = re.subexpNames;
  30621. _i = 0;
  30622. while (true) {
  30623. if (!(_i < _ref.$length)) { break; }
  30624. i$1 = _i;
  30625. namei = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]);
  30626. if (name === namei && ((2 * i$1 >> 0) + 1 >> 0) < match.$length && (x$5 = 2 * i$1 >> 0, ((x$5 < 0 || x$5 >= match.$length) ? $throwRuntimeError("index out of range") : match.$array[match.$offset + x$5])) >= 0) {
  30627. if (!(bsrc === sliceType$3.nil)) {
  30628. dst = $appendSlice(dst, $subslice(bsrc, (x$6 = 2 * i$1 >> 0, ((x$6 < 0 || x$6 >= match.$length) ? $throwRuntimeError("index out of range") : match.$array[match.$offset + x$6])), (x$7 = (2 * i$1 >> 0) + 1 >> 0, ((x$7 < 0 || x$7 >= match.$length) ? $throwRuntimeError("index out of range") : match.$array[match.$offset + x$7]))));
  30629. } else {
  30630. dst = $appendSlice(dst, new sliceType$3($stringToBytes(src.substring((x$8 = 2 * i$1 >> 0, ((x$8 < 0 || x$8 >= match.$length) ? $throwRuntimeError("index out of range") : match.$array[match.$offset + x$8])), (x$9 = (2 * i$1 >> 0) + 1 >> 0, ((x$9 < 0 || x$9 >= match.$length) ? $throwRuntimeError("index out of range") : match.$array[match.$offset + x$9]))))));
  30631. }
  30632. break;
  30633. }
  30634. _i++;
  30635. }
  30636. }
  30637. }
  30638. dst = $appendSlice(dst, new sliceType$3($stringToBytes(template)));
  30639. return dst;
  30640. };
  30641. Regexp.prototype.expand = function(dst, template, bsrc, src, match) { return this.$val.expand(dst, template, bsrc, src, match); };
  30642. extract = function(str) {
  30643. var $ptr, _tuple, brace, i, i$1, name, num, ok, rest, rune, size, str;
  30644. name = "";
  30645. num = 0;
  30646. rest = "";
  30647. ok = false;
  30648. if (str.length < 2 || !((str.charCodeAt(0) === 36))) {
  30649. return [name, num, rest, ok];
  30650. }
  30651. brace = false;
  30652. if (str.charCodeAt(1) === 123) {
  30653. brace = true;
  30654. str = str.substring(2);
  30655. } else {
  30656. str = str.substring(1);
  30657. }
  30658. i = 0;
  30659. while (true) {
  30660. if (!(i < str.length)) { break; }
  30661. _tuple = utf8.DecodeRuneInString(str.substring(i)); rune = _tuple[0]; size = _tuple[1];
  30662. if (!unicode.IsLetter(rune) && !unicode.IsDigit(rune) && !((rune === 95))) {
  30663. break;
  30664. }
  30665. i = i + (size) >> 0;
  30666. }
  30667. if (i === 0) {
  30668. return [name, num, rest, ok];
  30669. }
  30670. name = str.substring(0, i);
  30671. if (brace) {
  30672. if (i >= str.length || !((str.charCodeAt(i) === 125))) {
  30673. return [name, num, rest, ok];
  30674. }
  30675. i = i + (1) >> 0;
  30676. }
  30677. num = 0;
  30678. i$1 = 0;
  30679. while (true) {
  30680. if (!(i$1 < name.length)) { break; }
  30681. if (name.charCodeAt(i$1) < 48 || 57 < name.charCodeAt(i$1) || num >= 100000000) {
  30682. num = -1;
  30683. break;
  30684. }
  30685. num = ((num * 10 >> 0) + (name.charCodeAt(i$1) >> 0) >> 0) - 48 >> 0;
  30686. i$1 = i$1 + (1) >> 0;
  30687. }
  30688. if ((name.charCodeAt(0) === 48) && name.length > 1) {
  30689. num = -1;
  30690. }
  30691. rest = str.substring(i);
  30692. ok = true;
  30693. return [name, num, rest, ok];
  30694. };
  30695. Regexp.ptr.prototype.FindSubmatchIndex = function(b) {
  30696. var $ptr, _r, _r$1, b, re, $s, $r;
  30697. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; b = $f.b; re = $f.re; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  30698. re = this;
  30699. _r = re.doExecute($ifaceNil, b, "", 0, re.prog.NumCap); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  30700. _r$1 = re.pad(_r); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  30701. return _r$1;
  30702. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Regexp.ptr.prototype.FindSubmatchIndex }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f.b = b; $f.re = re; $f.$s = $s; $f.$r = $r; return $f;
  30703. };
  30704. Regexp.prototype.FindSubmatchIndex = function(b) { return this.$val.FindSubmatchIndex(b); };
  30705. Regexp.ptr.prototype.FindStringSubmatch = function(s) {
  30706. var $ptr, _i, _r, _ref, a, i, re, ret, s, x, x$1, x$2, $s, $r;
  30707. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _i = $f._i; _r = $f._r; _ref = $f._ref; a = $f.a; i = $f.i; re = $f.re; ret = $f.ret; s = $f.s; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  30708. re = this;
  30709. _r = re.doExecute($ifaceNil, sliceType$3.nil, s, 0, re.prog.NumCap); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  30710. a = _r;
  30711. if (a === sliceType.nil) {
  30712. return sliceType$9.nil;
  30713. }
  30714. ret = $makeSlice(sliceType$9, (1 + re.numSubexp >> 0));
  30715. _ref = ret;
  30716. _i = 0;
  30717. while (true) {
  30718. if (!(_i < _ref.$length)) { break; }
  30719. i = _i;
  30720. if ((2 * i >> 0) < a.$length && (x = 2 * i >> 0, ((x < 0 || x >= a.$length) ? $throwRuntimeError("index out of range") : a.$array[a.$offset + x])) >= 0) {
  30721. ((i < 0 || i >= ret.$length) ? $throwRuntimeError("index out of range") : ret.$array[ret.$offset + i] = s.substring((x$1 = 2 * i >> 0, ((x$1 < 0 || x$1 >= a.$length) ? $throwRuntimeError("index out of range") : a.$array[a.$offset + x$1])), (x$2 = (2 * i >> 0) + 1 >> 0, ((x$2 < 0 || x$2 >= a.$length) ? $throwRuntimeError("index out of range") : a.$array[a.$offset + x$2]))));
  30722. }
  30723. _i++;
  30724. }
  30725. return ret;
  30726. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Regexp.ptr.prototype.FindStringSubmatch }; } $f.$ptr = $ptr; $f._i = _i; $f._r = _r; $f._ref = _ref; $f.a = a; $f.i = i; $f.re = re; $f.ret = ret; $f.s = s; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.$s = $s; $f.$r = $r; return $f;
  30727. };
  30728. Regexp.prototype.FindStringSubmatch = function(s) { return this.$val.FindStringSubmatch(s); };
  30729. Regexp.ptr.prototype.FindStringSubmatchIndex = function(s) {
  30730. var $ptr, _r, _r$1, re, s, $s, $r;
  30731. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; re = $f.re; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  30732. re = this;
  30733. _r = re.doExecute($ifaceNil, sliceType$3.nil, s, 0, re.prog.NumCap); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  30734. _r$1 = re.pad(_r); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  30735. return _r$1;
  30736. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Regexp.ptr.prototype.FindStringSubmatchIndex }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f.re = re; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
  30737. };
  30738. Regexp.prototype.FindStringSubmatchIndex = function(s) { return this.$val.FindStringSubmatchIndex(s); };
  30739. Regexp.ptr.prototype.FindReaderSubmatchIndex = function(r) {
  30740. var $ptr, _r, _r$1, r, re, $s, $r;
  30741. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; r = $f.r; re = $f.re; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  30742. re = this;
  30743. _r = re.doExecute(r, sliceType$3.nil, "", 0, re.prog.NumCap); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  30744. _r$1 = re.pad(_r); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  30745. return _r$1;
  30746. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Regexp.ptr.prototype.FindReaderSubmatchIndex }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f.r = r; $f.re = re; $f.$s = $s; $f.$r = $r; return $f;
  30747. };
  30748. Regexp.prototype.FindReaderSubmatchIndex = function(r) { return this.$val.FindReaderSubmatchIndex(r); };
  30749. Regexp.ptr.prototype.FindAll = function(b, n) {
  30750. var $ptr, b, n, re, result, $s, $r;
  30751. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; b = $f.b; n = $f.n; re = $f.re; result = $f.result; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  30752. b = [b];
  30753. result = [result];
  30754. re = this;
  30755. if (n < 0) {
  30756. n = b[0].$length + 1 >> 0;
  30757. }
  30758. result[0] = $makeSlice(sliceType$11, 0, 10);
  30759. $r = re.allMatches("", b[0], n, (function(b, result) { return function(match) {
  30760. var $ptr, match;
  30761. result[0] = $append(result[0], $subslice(b[0], (0 >= match.$length ? $throwRuntimeError("index out of range") : match.$array[match.$offset + 0]), (1 >= match.$length ? $throwRuntimeError("index out of range") : match.$array[match.$offset + 1])));
  30762. }; })(b, result)); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  30763. if (result[0].$length === 0) {
  30764. return sliceType$11.nil;
  30765. }
  30766. return result[0];
  30767. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Regexp.ptr.prototype.FindAll }; } $f.$ptr = $ptr; $f.b = b; $f.n = n; $f.re = re; $f.result = result; $f.$s = $s; $f.$r = $r; return $f;
  30768. };
  30769. Regexp.prototype.FindAll = function(b, n) { return this.$val.FindAll(b, n); };
  30770. Regexp.ptr.prototype.FindAllIndex = function(b, n) {
  30771. var $ptr, b, n, re, result, $s, $r;
  30772. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; b = $f.b; n = $f.n; re = $f.re; result = $f.result; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  30773. result = [result];
  30774. re = this;
  30775. if (n < 0) {
  30776. n = b.$length + 1 >> 0;
  30777. }
  30778. result[0] = $makeSlice(sliceType$12, 0, 10);
  30779. $r = re.allMatches("", b, n, (function(result) { return function(match) {
  30780. var $ptr, match;
  30781. result[0] = $append(result[0], $subslice(match, 0, 2));
  30782. }; })(result)); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  30783. if (result[0].$length === 0) {
  30784. return sliceType$12.nil;
  30785. }
  30786. return result[0];
  30787. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Regexp.ptr.prototype.FindAllIndex }; } $f.$ptr = $ptr; $f.b = b; $f.n = n; $f.re = re; $f.result = result; $f.$s = $s; $f.$r = $r; return $f;
  30788. };
  30789. Regexp.prototype.FindAllIndex = function(b, n) { return this.$val.FindAllIndex(b, n); };
  30790. Regexp.ptr.prototype.FindAllString = function(s, n) {
  30791. var $ptr, n, re, result, s, $s, $r;
  30792. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; n = $f.n; re = $f.re; result = $f.result; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  30793. result = [result];
  30794. s = [s];
  30795. re = this;
  30796. if (n < 0) {
  30797. n = s[0].length + 1 >> 0;
  30798. }
  30799. result[0] = $makeSlice(sliceType$9, 0, 10);
  30800. $r = re.allMatches(s[0], sliceType$3.nil, n, (function(result, s) { return function(match) {
  30801. var $ptr, match;
  30802. result[0] = $append(result[0], s[0].substring((0 >= match.$length ? $throwRuntimeError("index out of range") : match.$array[match.$offset + 0]), (1 >= match.$length ? $throwRuntimeError("index out of range") : match.$array[match.$offset + 1])));
  30803. }; })(result, s)); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  30804. if (result[0].$length === 0) {
  30805. return sliceType$9.nil;
  30806. }
  30807. return result[0];
  30808. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Regexp.ptr.prototype.FindAllString }; } $f.$ptr = $ptr; $f.n = n; $f.re = re; $f.result = result; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
  30809. };
  30810. Regexp.prototype.FindAllString = function(s, n) { return this.$val.FindAllString(s, n); };
  30811. Regexp.ptr.prototype.FindAllStringIndex = function(s, n) {
  30812. var $ptr, n, re, result, s, $s, $r;
  30813. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; n = $f.n; re = $f.re; result = $f.result; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  30814. result = [result];
  30815. re = this;
  30816. if (n < 0) {
  30817. n = s.length + 1 >> 0;
  30818. }
  30819. result[0] = $makeSlice(sliceType$12, 0, 10);
  30820. $r = re.allMatches(s, sliceType$3.nil, n, (function(result) { return function(match) {
  30821. var $ptr, match;
  30822. result[0] = $append(result[0], $subslice(match, 0, 2));
  30823. }; })(result)); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  30824. if (result[0].$length === 0) {
  30825. return sliceType$12.nil;
  30826. }
  30827. return result[0];
  30828. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Regexp.ptr.prototype.FindAllStringIndex }; } $f.$ptr = $ptr; $f.n = n; $f.re = re; $f.result = result; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
  30829. };
  30830. Regexp.prototype.FindAllStringIndex = function(s, n) { return this.$val.FindAllStringIndex(s, n); };
  30831. Regexp.ptr.prototype.FindAllSubmatch = function(b, n) {
  30832. var $ptr, b, n, re, result, $s, $r;
  30833. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; b = $f.b; n = $f.n; re = $f.re; result = $f.result; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  30834. b = [b];
  30835. result = [result];
  30836. re = this;
  30837. if (n < 0) {
  30838. n = b[0].$length + 1 >> 0;
  30839. }
  30840. result[0] = $makeSlice(sliceType$13, 0, 10);
  30841. $r = re.allMatches("", b[0], n, (function(b, result) { return function(match) {
  30842. var $ptr, _i, _q, _ref, j, match, slice, x, x$1, x$2;
  30843. slice = $makeSlice(sliceType$11, (_q = match.$length / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")));
  30844. _ref = slice;
  30845. _i = 0;
  30846. while (true) {
  30847. if (!(_i < _ref.$length)) { break; }
  30848. j = _i;
  30849. if ((x = 2 * j >> 0, ((x < 0 || x >= match.$length) ? $throwRuntimeError("index out of range") : match.$array[match.$offset + x])) >= 0) {
  30850. ((j < 0 || j >= slice.$length) ? $throwRuntimeError("index out of range") : slice.$array[slice.$offset + j] = $subslice(b[0], (x$1 = 2 * j >> 0, ((x$1 < 0 || x$1 >= match.$length) ? $throwRuntimeError("index out of range") : match.$array[match.$offset + x$1])), (x$2 = (2 * j >> 0) + 1 >> 0, ((x$2 < 0 || x$2 >= match.$length) ? $throwRuntimeError("index out of range") : match.$array[match.$offset + x$2]))));
  30851. }
  30852. _i++;
  30853. }
  30854. result[0] = $append(result[0], slice);
  30855. }; })(b, result)); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  30856. if (result[0].$length === 0) {
  30857. return sliceType$13.nil;
  30858. }
  30859. return result[0];
  30860. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Regexp.ptr.prototype.FindAllSubmatch }; } $f.$ptr = $ptr; $f.b = b; $f.n = n; $f.re = re; $f.result = result; $f.$s = $s; $f.$r = $r; return $f;
  30861. };
  30862. Regexp.prototype.FindAllSubmatch = function(b, n) { return this.$val.FindAllSubmatch(b, n); };
  30863. Regexp.ptr.prototype.FindAllSubmatchIndex = function(b, n) {
  30864. var $ptr, b, n, re, result, $s, $r;
  30865. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; b = $f.b; n = $f.n; re = $f.re; result = $f.result; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  30866. result = [result];
  30867. re = this;
  30868. if (n < 0) {
  30869. n = b.$length + 1 >> 0;
  30870. }
  30871. result[0] = $makeSlice(sliceType$12, 0, 10);
  30872. $r = re.allMatches("", b, n, (function(result) { return function(match) {
  30873. var $ptr, match;
  30874. result[0] = $append(result[0], match);
  30875. }; })(result)); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  30876. if (result[0].$length === 0) {
  30877. return sliceType$12.nil;
  30878. }
  30879. return result[0];
  30880. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Regexp.ptr.prototype.FindAllSubmatchIndex }; } $f.$ptr = $ptr; $f.b = b; $f.n = n; $f.re = re; $f.result = result; $f.$s = $s; $f.$r = $r; return $f;
  30881. };
  30882. Regexp.prototype.FindAllSubmatchIndex = function(b, n) { return this.$val.FindAllSubmatchIndex(b, n); };
  30883. Regexp.ptr.prototype.FindAllStringSubmatch = function(s, n) {
  30884. var $ptr, n, re, result, s, $s, $r;
  30885. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; n = $f.n; re = $f.re; result = $f.result; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  30886. result = [result];
  30887. s = [s];
  30888. re = this;
  30889. if (n < 0) {
  30890. n = s[0].length + 1 >> 0;
  30891. }
  30892. result[0] = $makeSlice(sliceType$14, 0, 10);
  30893. $r = re.allMatches(s[0], sliceType$3.nil, n, (function(result, s) { return function(match) {
  30894. var $ptr, _i, _q, _ref, j, match, slice, x, x$1, x$2;
  30895. slice = $makeSlice(sliceType$9, (_q = match.$length / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")));
  30896. _ref = slice;
  30897. _i = 0;
  30898. while (true) {
  30899. if (!(_i < _ref.$length)) { break; }
  30900. j = _i;
  30901. if ((x = 2 * j >> 0, ((x < 0 || x >= match.$length) ? $throwRuntimeError("index out of range") : match.$array[match.$offset + x])) >= 0) {
  30902. ((j < 0 || j >= slice.$length) ? $throwRuntimeError("index out of range") : slice.$array[slice.$offset + j] = s[0].substring((x$1 = 2 * j >> 0, ((x$1 < 0 || x$1 >= match.$length) ? $throwRuntimeError("index out of range") : match.$array[match.$offset + x$1])), (x$2 = (2 * j >> 0) + 1 >> 0, ((x$2 < 0 || x$2 >= match.$length) ? $throwRuntimeError("index out of range") : match.$array[match.$offset + x$2]))));
  30903. }
  30904. _i++;
  30905. }
  30906. result[0] = $append(result[0], slice);
  30907. }; })(result, s)); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  30908. if (result[0].$length === 0) {
  30909. return sliceType$14.nil;
  30910. }
  30911. return result[0];
  30912. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Regexp.ptr.prototype.FindAllStringSubmatch }; } $f.$ptr = $ptr; $f.n = n; $f.re = re; $f.result = result; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
  30913. };
  30914. Regexp.prototype.FindAllStringSubmatch = function(s, n) { return this.$val.FindAllStringSubmatch(s, n); };
  30915. Regexp.ptr.prototype.FindAllStringSubmatchIndex = function(s, n) {
  30916. var $ptr, n, re, result, s, $s, $r;
  30917. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; n = $f.n; re = $f.re; result = $f.result; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  30918. result = [result];
  30919. re = this;
  30920. if (n < 0) {
  30921. n = s.length + 1 >> 0;
  30922. }
  30923. result[0] = $makeSlice(sliceType$12, 0, 10);
  30924. $r = re.allMatches(s, sliceType$3.nil, n, (function(result) { return function(match) {
  30925. var $ptr, match;
  30926. result[0] = $append(result[0], match);
  30927. }; })(result)); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  30928. if (result[0].$length === 0) {
  30929. return sliceType$12.nil;
  30930. }
  30931. return result[0];
  30932. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Regexp.ptr.prototype.FindAllStringSubmatchIndex }; } $f.$ptr = $ptr; $f.n = n; $f.re = re; $f.result = result; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
  30933. };
  30934. Regexp.prototype.FindAllStringSubmatchIndex = function(s, n) { return this.$val.FindAllStringSubmatchIndex(s, n); };
  30935. Regexp.ptr.prototype.Split = function(s, n) {
  30936. var $ptr, _i, _r, _ref, beg, end, match, matches, n, re, s, strings$1, $s, $r;
  30937. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _i = $f._i; _r = $f._r; _ref = $f._ref; beg = $f.beg; end = $f.end; match = $f.match; matches = $f.matches; n = $f.n; re = $f.re; s = $f.s; strings$1 = $f.strings$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  30938. re = this;
  30939. if (n === 0) {
  30940. return sliceType$9.nil;
  30941. }
  30942. if (re.expr.length > 0 && (s.length === 0)) {
  30943. return new sliceType$9([""]);
  30944. }
  30945. _r = re.FindAllStringIndex(s, n); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  30946. matches = _r;
  30947. strings$1 = $makeSlice(sliceType$9, 0, matches.$length);
  30948. beg = 0;
  30949. end = 0;
  30950. _ref = matches;
  30951. _i = 0;
  30952. while (true) {
  30953. if (!(_i < _ref.$length)) { break; }
  30954. match = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]);
  30955. if (n > 0 && strings$1.$length >= (n - 1 >> 0)) {
  30956. break;
  30957. }
  30958. end = (0 >= match.$length ? $throwRuntimeError("index out of range") : match.$array[match.$offset + 0]);
  30959. if (!(((1 >= match.$length ? $throwRuntimeError("index out of range") : match.$array[match.$offset + 1]) === 0))) {
  30960. strings$1 = $append(strings$1, s.substring(beg, end));
  30961. }
  30962. beg = (1 >= match.$length ? $throwRuntimeError("index out of range") : match.$array[match.$offset + 1]);
  30963. _i++;
  30964. }
  30965. if (!((end === s.length))) {
  30966. strings$1 = $append(strings$1, s.substring(beg));
  30967. }
  30968. return strings$1;
  30969. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Regexp.ptr.prototype.Split }; } $f.$ptr = $ptr; $f._i = _i; $f._r = _r; $f._ref = _ref; $f.beg = beg; $f.end = end; $f.match = match; $f.matches = matches; $f.n = n; $f.re = re; $f.s = s; $f.strings$1 = strings$1; $f.$s = $s; $f.$r = $r; return $f;
  30970. };
  30971. Regexp.prototype.Split = function(s, n) { return this.$val.Split(s, n); };
  30972. ptrType$8.methods = [{prop: "newInputBytes", name: "newInputBytes", pkg: "regexp", typ: $funcType([sliceType$3], [input], false)}, {prop: "newInputString", name: "newInputString", pkg: "regexp", typ: $funcType([$String], [input], false)}, {prop: "newInputReader", name: "newInputReader", pkg: "regexp", typ: $funcType([io.RuneReader], [input], false)}, {prop: "init", name: "init", pkg: "regexp", typ: $funcType([$Int], [], false)}, {prop: "alloc", name: "alloc", pkg: "regexp", typ: $funcType([ptrType$9], [ptrType$3], false)}, {prop: "free", name: "free", pkg: "regexp", typ: $funcType([ptrType$3], [], false)}, {prop: "match", name: "match", pkg: "regexp", typ: $funcType([input, $Int], [$Bool], false)}, {prop: "clear", name: "clear", pkg: "regexp", typ: $funcType([ptrType$10], [], false)}, {prop: "step", name: "step", pkg: "regexp", typ: $funcType([ptrType$10, ptrType$10, $Int, $Int, $Int32, syntax.EmptyOp], [], false)}, {prop: "add", name: "add", pkg: "regexp", typ: $funcType([ptrType$10, $Uint32, $Int, sliceType, syntax.EmptyOp, ptrType$3], [ptrType$3], false)}, {prop: "onepass", name: "onepass", pkg: "regexp", typ: $funcType([input, $Int], [$Bool], false)}];
  30973. ptrType$5.methods = [{prop: "empty", name: "empty", pkg: "regexp", typ: $funcType([], [$Bool], false)}, {prop: "next", name: "next", pkg: "regexp", typ: $funcType([], [$Uint32], false)}, {prop: "clear", name: "clear", pkg: "regexp", typ: $funcType([], [], false)}, {prop: "reset", name: "reset", pkg: "regexp", typ: $funcType([], [], false)}, {prop: "contains", name: "contains", pkg: "regexp", typ: $funcType([$Uint32], [$Bool], false)}, {prop: "insert", name: "insert", pkg: "regexp", typ: $funcType([$Uint32], [], false)}, {prop: "insertNew", name: "insertNew", pkg: "regexp", typ: $funcType([$Uint32], [], false)}];
  30974. runeSlice.methods = [{prop: "Len", name: "Len", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Less", name: "Less", pkg: "", typ: $funcType([$Int, $Int], [$Bool], false)}, {prop: "Swap", name: "Swap", pkg: "", typ: $funcType([$Int, $Int], [], false)}, {prop: "Sort", name: "Sort", pkg: "", typ: $funcType([], [], false)}];
  30975. ptrType$1.methods = [{prop: "doExecute", name: "doExecute", pkg: "regexp", typ: $funcType([io.RuneReader, sliceType$3, $String, $Int, $Int], [sliceType], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Longest", name: "Longest", pkg: "", typ: $funcType([], [], false)}, {prop: "get", name: "get", pkg: "regexp", typ: $funcType([], [ptrType$8], false)}, {prop: "put", name: "put", pkg: "regexp", typ: $funcType([ptrType$8], [], false)}, {prop: "NumSubexp", name: "NumSubexp", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "SubexpNames", name: "SubexpNames", pkg: "", typ: $funcType([], [sliceType$9], false)}, {prop: "LiteralPrefix", name: "LiteralPrefix", pkg: "", typ: $funcType([], [$String, $Bool], false)}, {prop: "MatchReader", name: "MatchReader", pkg: "", typ: $funcType([io.RuneReader], [$Bool], false)}, {prop: "MatchString", name: "MatchString", pkg: "", typ: $funcType([$String], [$Bool], false)}, {prop: "Match", name: "Match", pkg: "", typ: $funcType([sliceType$3], [$Bool], false)}, {prop: "ReplaceAllString", name: "ReplaceAllString", pkg: "", typ: $funcType([$String, $String], [$String], false)}, {prop: "ReplaceAllLiteralString", name: "ReplaceAllLiteralString", pkg: "", typ: $funcType([$String, $String], [$String], false)}, {prop: "ReplaceAllStringFunc", name: "ReplaceAllStringFunc", pkg: "", typ: $funcType([$String, funcType], [$String], false)}, {prop: "replaceAll", name: "replaceAll", pkg: "regexp", typ: $funcType([sliceType$3, $String, $Int, funcType$1], [sliceType$3], false)}, {prop: "ReplaceAll", name: "ReplaceAll", pkg: "", typ: $funcType([sliceType$3, sliceType$3], [sliceType$3], false)}, {prop: "ReplaceAllLiteral", name: "ReplaceAllLiteral", pkg: "", typ: $funcType([sliceType$3, sliceType$3], [sliceType$3], false)}, {prop: "ReplaceAllFunc", name: "ReplaceAllFunc", pkg: "", typ: $funcType([sliceType$3, funcType$2], [sliceType$3], false)}, {prop: "pad", name: "pad", pkg: "regexp", typ: $funcType([sliceType], [sliceType], false)}, {prop: "allMatches", name: "allMatches", pkg: "regexp", typ: $funcType([$String, sliceType$3, $Int, funcType$3], [], false)}, {prop: "Find", name: "Find", pkg: "", typ: $funcType([sliceType$3], [sliceType$3], false)}, {prop: "FindIndex", name: "FindIndex", pkg: "", typ: $funcType([sliceType$3], [sliceType], false)}, {prop: "FindString", name: "FindString", pkg: "", typ: $funcType([$String], [$String], false)}, {prop: "FindStringIndex", name: "FindStringIndex", pkg: "", typ: $funcType([$String], [sliceType], false)}, {prop: "FindReaderIndex", name: "FindReaderIndex", pkg: "", typ: $funcType([io.RuneReader], [sliceType], false)}, {prop: "FindSubmatch", name: "FindSubmatch", pkg: "", typ: $funcType([sliceType$3], [sliceType$11], false)}, {prop: "Expand", name: "Expand", pkg: "", typ: $funcType([sliceType$3, sliceType$3, sliceType$3, sliceType], [sliceType$3], false)}, {prop: "ExpandString", name: "ExpandString", pkg: "", typ: $funcType([sliceType$3, $String, $String, sliceType], [sliceType$3], false)}, {prop: "expand", name: "expand", pkg: "regexp", typ: $funcType([sliceType$3, $String, sliceType$3, $String, sliceType], [sliceType$3], false)}, {prop: "FindSubmatchIndex", name: "FindSubmatchIndex", pkg: "", typ: $funcType([sliceType$3], [sliceType], false)}, {prop: "FindStringSubmatch", name: "FindStringSubmatch", pkg: "", typ: $funcType([$String], [sliceType$9], false)}, {prop: "FindStringSubmatchIndex", name: "FindStringSubmatchIndex", pkg: "", typ: $funcType([$String], [sliceType], false)}, {prop: "FindReaderSubmatchIndex", name: "FindReaderSubmatchIndex", pkg: "", typ: $funcType([io.RuneReader], [sliceType], false)}, {prop: "FindAll", name: "FindAll", pkg: "", typ: $funcType([sliceType$3, $Int], [sliceType$11], false)}, {prop: "FindAllIndex", name: "FindAllIndex", pkg: "", typ: $funcType([sliceType$3, $Int], [sliceType$12], false)}, {prop: "FindAllString", name: "FindAllString", pkg: "", typ: $funcType([$String, $Int], [sliceType$9], false)}, {prop: "FindAllStringIndex", name: "FindAllStringIndex", pkg: "", typ: $funcType([$String, $Int], [sliceType$12], false)}, {prop: "FindAllSubmatch", name: "FindAllSubmatch", pkg: "", typ: $funcType([sliceType$3, $Int], [sliceType$13], false)}, {prop: "FindAllSubmatchIndex", name: "FindAllSubmatchIndex", pkg: "", typ: $funcType([sliceType$3, $Int], [sliceType$12], false)}, {prop: "FindAllStringSubmatch", name: "FindAllStringSubmatch", pkg: "", typ: $funcType([$String, $Int], [sliceType$14], false)}, {prop: "FindAllStringSubmatchIndex", name: "FindAllStringSubmatchIndex", pkg: "", typ: $funcType([$String, $Int], [sliceType$12], false)}, {prop: "Split", name: "Split", pkg: "", typ: $funcType([$String, $Int], [sliceType$9], false)}];
  30976. ptrType$11.methods = [{prop: "step", name: "step", pkg: "regexp", typ: $funcType([$Int], [$Int32, $Int], false)}, {prop: "canCheckPrefix", name: "canCheckPrefix", pkg: "regexp", typ: $funcType([], [$Bool], false)}, {prop: "hasPrefix", name: "hasPrefix", pkg: "regexp", typ: $funcType([ptrType$1], [$Bool], false)}, {prop: "index", name: "index", pkg: "regexp", typ: $funcType([ptrType$1, $Int], [$Int], false)}, {prop: "context", name: "context", pkg: "regexp", typ: $funcType([$Int], [syntax.EmptyOp], false)}];
  30977. ptrType$12.methods = [{prop: "step", name: "step", pkg: "regexp", typ: $funcType([$Int], [$Int32, $Int], false)}, {prop: "canCheckPrefix", name: "canCheckPrefix", pkg: "regexp", typ: $funcType([], [$Bool], false)}, {prop: "hasPrefix", name: "hasPrefix", pkg: "regexp", typ: $funcType([ptrType$1], [$Bool], false)}, {prop: "index", name: "index", pkg: "regexp", typ: $funcType([ptrType$1, $Int], [$Int], false)}, {prop: "context", name: "context", pkg: "regexp", typ: $funcType([$Int], [syntax.EmptyOp], false)}];
  30978. ptrType$13.methods = [{prop: "step", name: "step", pkg: "regexp", typ: $funcType([$Int], [$Int32, $Int], false)}, {prop: "canCheckPrefix", name: "canCheckPrefix", pkg: "regexp", typ: $funcType([], [$Bool], false)}, {prop: "hasPrefix", name: "hasPrefix", pkg: "regexp", typ: $funcType([ptrType$1], [$Bool], false)}, {prop: "index", name: "index", pkg: "regexp", typ: $funcType([ptrType$1, $Int], [$Int], false)}, {prop: "context", name: "context", pkg: "regexp", typ: $funcType([$Int], [syntax.EmptyOp], false)}];
  30979. queue.init([{prop: "sparse", name: "sparse", pkg: "regexp", typ: sliceType$2, tag: ""}, {prop: "dense", name: "dense", pkg: "regexp", typ: sliceType$6, tag: ""}]);
  30980. entry.init([{prop: "pc", name: "pc", pkg: "regexp", typ: $Uint32, tag: ""}, {prop: "t", name: "t", pkg: "regexp", typ: ptrType$3, tag: ""}]);
  30981. thread.init([{prop: "inst", name: "inst", pkg: "regexp", typ: ptrType$9, tag: ""}, {prop: "cap", name: "cap", pkg: "regexp", typ: sliceType, tag: ""}]);
  30982. machine.init([{prop: "re", name: "re", pkg: "regexp", typ: ptrType$1, tag: ""}, {prop: "p", name: "p", pkg: "regexp", typ: ptrType$2, tag: ""}, {prop: "op", name: "op", pkg: "regexp", typ: ptrType, tag: ""}, {prop: "q0", name: "q0", pkg: "regexp", typ: queue, tag: ""}, {prop: "q1", name: "q1", pkg: "regexp", typ: queue, tag: ""}, {prop: "pool", name: "pool", pkg: "regexp", typ: sliceType$5, tag: ""}, {prop: "matched", name: "matched", pkg: "regexp", typ: $Bool, tag: ""}, {prop: "matchcap", name: "matchcap", pkg: "regexp", typ: sliceType, tag: ""}, {prop: "inputBytes", name: "inputBytes", pkg: "regexp", typ: inputBytes, tag: ""}, {prop: "inputString", name: "inputString", pkg: "regexp", typ: inputString, tag: ""}, {prop: "inputReader", name: "inputReader", pkg: "regexp", typ: inputReader, tag: ""}]);
  30983. onePassProg.init([{prop: "Inst", name: "Inst", pkg: "", typ: sliceType$7, tag: ""}, {prop: "Start", name: "Start", pkg: "", typ: $Int, tag: ""}, {prop: "NumCap", name: "NumCap", pkg: "", typ: $Int, tag: ""}]);
  30984. onePassInst.init([{prop: "Inst", name: "", pkg: "", typ: syntax.Inst, tag: ""}, {prop: "Next", name: "Next", pkg: "", typ: sliceType$2, tag: ""}]);
  30985. queueOnePass.init([{prop: "sparse", name: "sparse", pkg: "regexp", typ: sliceType$2, tag: ""}, {prop: "dense", name: "dense", pkg: "regexp", typ: sliceType$2, tag: ""}, {prop: "size", name: "size", pkg: "regexp", typ: $Uint32, tag: ""}, {prop: "nextIndex", name: "nextIndex", pkg: "regexp", typ: $Uint32, tag: ""}]);
  30986. runeSlice.init($Int32);
  30987. Regexp.init([{prop: "expr", name: "expr", pkg: "regexp", typ: $String, tag: ""}, {prop: "prog", name: "prog", pkg: "regexp", typ: ptrType$2, tag: ""}, {prop: "onepass", name: "onepass", pkg: "regexp", typ: ptrType, tag: ""}, {prop: "prefix", name: "prefix", pkg: "regexp", typ: $String, tag: ""}, {prop: "prefixBytes", name: "prefixBytes", pkg: "regexp", typ: sliceType$3, tag: ""}, {prop: "prefixComplete", name: "prefixComplete", pkg: "regexp", typ: $Bool, tag: ""}, {prop: "prefixRune", name: "prefixRune", pkg: "regexp", typ: $Int32, tag: ""}, {prop: "prefixEnd", name: "prefixEnd", pkg: "regexp", typ: $Uint32, tag: ""}, {prop: "cond", name: "cond", pkg: "regexp", typ: syntax.EmptyOp, tag: ""}, {prop: "numSubexp", name: "numSubexp", pkg: "regexp", typ: $Int, tag: ""}, {prop: "subexpNames", name: "subexpNames", pkg: "regexp", typ: sliceType$9, tag: ""}, {prop: "longest", name: "longest", pkg: "regexp", typ: $Bool, tag: ""}, {prop: "mu", name: "mu", pkg: "regexp", typ: nosync.Mutex, tag: ""}, {prop: "machine", name: "machine", pkg: "regexp", typ: sliceType$10, tag: ""}]);
  30988. input.init([{prop: "canCheckPrefix", name: "canCheckPrefix", pkg: "regexp", typ: $funcType([], [$Bool], false)}, {prop: "context", name: "context", pkg: "regexp", typ: $funcType([$Int], [syntax.EmptyOp], false)}, {prop: "hasPrefix", name: "hasPrefix", pkg: "regexp", typ: $funcType([ptrType$1], [$Bool], false)}, {prop: "index", name: "index", pkg: "regexp", typ: $funcType([ptrType$1, $Int], [$Int], false)}, {prop: "step", name: "step", pkg: "regexp", typ: $funcType([$Int], [$Int32, $Int], false)}]);
  30989. inputString.init([{prop: "str", name: "str", pkg: "regexp", typ: $String, tag: ""}]);
  30990. inputBytes.init([{prop: "str", name: "str", pkg: "regexp", typ: sliceType$3, tag: ""}]);
  30991. inputReader.init([{prop: "r", name: "r", pkg: "regexp", typ: io.RuneReader, tag: ""}, {prop: "atEOT", name: "atEOT", pkg: "regexp", typ: $Bool, tag: ""}, {prop: "pos", name: "pos", pkg: "regexp", typ: $Int, tag: ""}]);
  30992. $init = function() {
  30993. $pkg.$init = function() {};
  30994. /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  30995. $r = bytes.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  30996. $r = nosync.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  30997. $r = io.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  30998. $r = syntax.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  30999. $r = sort.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  31000. $r = strconv.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  31001. $r = strings.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  31002. $r = testing.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  31003. $r = unicode.$init(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  31004. $r = utf8.$init(); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  31005. empty = $makeSlice(sliceType, 0);
  31006. noRune = new sliceType$1([]);
  31007. noNext = new sliceType$2([4294967295]);
  31008. anyRuneNotNL = new sliceType$1([0, 9, 11, 1114111]);
  31009. anyRune = new sliceType$1([0, 1114111]);
  31010. notOnePass = ptrType.nil;
  31011. /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
  31012. };
  31013. $pkg.$init = $init;
  31014. return $pkg;
  31015. })();
  31016. $packages["gopkg.in/yaml.v2"] = (function() {
  31017. var $pkg = {}, $init, bytes, encoding, base64, errors, fmt, io, math, os, reflect, regexp, sort, strconv, strings, sync, time, unicode, utf8, node, parser, decoder, resolveMapItem, MapItem, Unmarshaler, yamlError, TypeError, structInfo, fieldInfo, yaml_version_directive_t, yaml_tag_directive_t, yaml_encoding_t, yaml_error_type_t, yaml_mark_t, yaml_style_t, yaml_scalar_style_t, yaml_sequence_style_t, yaml_mapping_style_t, yaml_token_type_t, yaml_token_t, yaml_event_type_t, yaml_event_t, yaml_node_type_t, yaml_node_item_t, yaml_node_pair_t, yaml_node_t, yaml_document_t, yaml_read_handler_t, yaml_simple_key_t, yaml_parser_state_t, yaml_alias_data_t, yaml_parser_t, mapType, sliceType, sliceType$1, sliceType$2, sliceType$3, sliceType$4, sliceType$5, sliceType$6, sliceType$7, ptrType, ptrType$1, ptrType$3, ptrType$4, sliceType$10, sliceType$11, sliceType$12, ptrType$5, ptrType$6, sliceType$13, ptrType$7, ptrType$8, ptrType$10, ptrType$11, ptrType$12, structType$4, sliceType$14, ptrType$13, ptrType$14, sliceType$16, mapType$1, ptrType$15, ptrType$16, mapType$2, funcType$1, mapType$3, ptrType$17, structType$5, sliceType$17, structType$6, sliceType$18, ptrType$18, structType$7, sliceType$19, ptrType$19, mapItemType, durationType, defaultMapType, ifaceType, zeroValue, base60float, default_tag_directives, resolveTable, resolveMap, structMap, fieldMapMutex, x, _map, _key, _r, _r$1, yaml_insert_token, yaml_parser_initialize, yaml_parser_delete, yaml_string_read_handler, yaml_parser_set_input_string, yaml_event_delete, newParser, newDecoder, resetMap, settableValueOf, failWantMap, isMerge, peek_token, skip_token, yaml_parser_parse, yaml_parser_set_parser_error, yaml_parser_set_parser_error_context, yaml_parser_state_machine, yaml_parser_parse_stream_start, yaml_parser_parse_document_start, yaml_parser_parse_document_content, yaml_parser_parse_document_end, yaml_parser_parse_node, yaml_parser_parse_block_sequence_entry, yaml_parser_parse_indentless_sequence_entry, yaml_parser_parse_block_mapping_key, yaml_parser_parse_block_mapping_value, yaml_parser_parse_flow_sequence_entry, yaml_parser_parse_flow_sequence_entry_mapping_key, yaml_parser_parse_flow_sequence_entry_mapping_value, yaml_parser_parse_flow_sequence_entry_mapping_end, yaml_parser_parse_flow_mapping_key, yaml_parser_parse_flow_mapping_value, yaml_parser_process_empty_scalar, yaml_parser_process_directives, yaml_parser_append_tag_directive, yaml_parser_set_reader_error, yaml_parser_determine_encoding, yaml_parser_update_raw_buffer, yaml_parser_update_buffer, init, shortTag, resolvableTag, resolve, encodeBase64, skip, skip_line, read, read_line, yaml_parser_set_scanner_error, yaml_parser_set_scanner_tag_error, yaml_parser_fetch_more_tokens, yaml_parser_fetch_next_token, yaml_parser_stale_simple_keys, yaml_parser_save_simple_key, yaml_parser_remove_simple_key, yaml_parser_increase_flow_level, yaml_parser_decrease_flow_level, yaml_parser_roll_indent, yaml_parser_unroll_indent, yaml_parser_fetch_stream_start, yaml_parser_fetch_stream_end, yaml_parser_fetch_directive, yaml_parser_fetch_document_indicator, yaml_parser_fetch_flow_collection_start, yaml_parser_fetch_flow_collection_end, yaml_parser_fetch_flow_entry, yaml_parser_fetch_block_entry, yaml_parser_fetch_key, yaml_parser_fetch_value, yaml_parser_fetch_anchor, yaml_parser_fetch_tag, yaml_parser_fetch_block_scalar, yaml_parser_fetch_flow_scalar, yaml_parser_fetch_plain_scalar, yaml_parser_scan_to_next_token, yaml_parser_scan_directive, yaml_parser_scan_directive_name, yaml_parser_scan_version_directive_value, yaml_parser_scan_version_directive_number, yaml_parser_scan_tag_directive_value, yaml_parser_scan_anchor, yaml_parser_scan_tag, yaml_parser_scan_tag_handle, yaml_parser_scan_tag_uri, yaml_parser_scan_uri_escapes, yaml_parser_scan_block_scalar, yaml_parser_scan_block_scalar_breaks, yaml_parser_scan_flow_scalar, yaml_parser_scan_plain_scalar, Unmarshal, handleErr, fail, failf, getStructInfo, is_alpha, is_digit, as_digit, is_hex, as_hex, is_z, is_bom, is_space, is_tab, is_blank, is_break, is_crlf, is_breakz, is_blankz, width;
  31018. bytes = $packages["bytes"];
  31019. encoding = $packages["encoding"];
  31020. base64 = $packages["encoding/base64"];
  31021. errors = $packages["errors"];
  31022. fmt = $packages["fmt"];
  31023. io = $packages["io"];
  31024. math = $packages["math"];
  31025. os = $packages["os"];
  31026. reflect = $packages["reflect"];
  31027. regexp = $packages["regexp"];
  31028. sort = $packages["sort"];
  31029. strconv = $packages["strconv"];
  31030. strings = $packages["strings"];
  31031. sync = $packages["sync"];
  31032. time = $packages["time"];
  31033. unicode = $packages["unicode"];
  31034. utf8 = $packages["unicode/utf8"];
  31035. node = $pkg.node = $newType(0, $kindStruct, "yaml.node", "node", "gopkg.in/yaml.v2", function(kind_, line_, column_, tag_, value_, implicit_, children_, anchors_) {
  31036. this.$val = this;
  31037. if (arguments.length === 0) {
  31038. this.kind = 0;
  31039. this.line = 0;
  31040. this.column = 0;
  31041. this.tag = "";
  31042. this.value = "";
  31043. this.implicit = false;
  31044. this.children = sliceType$11.nil;
  31045. this.anchors = false;
  31046. return;
  31047. }
  31048. this.kind = kind_;
  31049. this.line = line_;
  31050. this.column = column_;
  31051. this.tag = tag_;
  31052. this.value = value_;
  31053. this.implicit = implicit_;
  31054. this.children = children_;
  31055. this.anchors = anchors_;
  31056. });
  31057. parser = $pkg.parser = $newType(0, $kindStruct, "yaml.parser", "parser", "gopkg.in/yaml.v2", function(parser_, event_, doc_) {
  31058. this.$val = this;
  31059. if (arguments.length === 0) {
  31060. this.parser = new yaml_parser_t.ptr();
  31061. this.event = new yaml_event_t.ptr();
  31062. this.doc = ptrType$4.nil;
  31063. return;
  31064. }
  31065. this.parser = parser_;
  31066. this.event = event_;
  31067. this.doc = doc_;
  31068. });
  31069. decoder = $pkg.decoder = $newType(0, $kindStruct, "yaml.decoder", "decoder", "gopkg.in/yaml.v2", function(doc_, aliases_, mapType_, terrors_) {
  31070. this.$val = this;
  31071. if (arguments.length === 0) {
  31072. this.doc = ptrType$4.nil;
  31073. this.aliases = false;
  31074. this.mapType = $ifaceNil;
  31075. this.terrors = sliceType$12.nil;
  31076. return;
  31077. }
  31078. this.doc = doc_;
  31079. this.aliases = aliases_;
  31080. this.mapType = mapType_;
  31081. this.terrors = terrors_;
  31082. });
  31083. resolveMapItem = $pkg.resolveMapItem = $newType(0, $kindStruct, "yaml.resolveMapItem", "resolveMapItem", "gopkg.in/yaml.v2", function(value_, tag_) {
  31084. this.$val = this;
  31085. if (arguments.length === 0) {
  31086. this.value = $ifaceNil;
  31087. this.tag = "";
  31088. return;
  31089. }
  31090. this.value = value_;
  31091. this.tag = tag_;
  31092. });
  31093. MapItem = $pkg.MapItem = $newType(0, $kindStruct, "yaml.MapItem", "MapItem", "gopkg.in/yaml.v2", function(Key_, Value_) {
  31094. this.$val = this;
  31095. if (arguments.length === 0) {
  31096. this.Key = $ifaceNil;
  31097. this.Value = $ifaceNil;
  31098. return;
  31099. }
  31100. this.Key = Key_;
  31101. this.Value = Value_;
  31102. });
  31103. Unmarshaler = $pkg.Unmarshaler = $newType(8, $kindInterface, "yaml.Unmarshaler", "Unmarshaler", "gopkg.in/yaml.v2", null);
  31104. yamlError = $pkg.yamlError = $newType(0, $kindStruct, "yaml.yamlError", "yamlError", "gopkg.in/yaml.v2", function(err_) {
  31105. this.$val = this;
  31106. if (arguments.length === 0) {
  31107. this.err = $ifaceNil;
  31108. return;
  31109. }
  31110. this.err = err_;
  31111. });
  31112. TypeError = $pkg.TypeError = $newType(0, $kindStruct, "yaml.TypeError", "TypeError", "gopkg.in/yaml.v2", function(Errors_) {
  31113. this.$val = this;
  31114. if (arguments.length === 0) {
  31115. this.Errors = sliceType$12.nil;
  31116. return;
  31117. }
  31118. this.Errors = Errors_;
  31119. });
  31120. structInfo = $pkg.structInfo = $newType(0, $kindStruct, "yaml.structInfo", "structInfo", "gopkg.in/yaml.v2", function(FieldsMap_, FieldsList_, InlineMap_) {
  31121. this.$val = this;
  31122. if (arguments.length === 0) {
  31123. this.FieldsMap = false;
  31124. this.FieldsList = sliceType$16.nil;
  31125. this.InlineMap = 0;
  31126. return;
  31127. }
  31128. this.FieldsMap = FieldsMap_;
  31129. this.FieldsList = FieldsList_;
  31130. this.InlineMap = InlineMap_;
  31131. });
  31132. fieldInfo = $pkg.fieldInfo = $newType(0, $kindStruct, "yaml.fieldInfo", "fieldInfo", "gopkg.in/yaml.v2", function(Key_, Num_, OmitEmpty_, Flow_, Inline_) {
  31133. this.$val = this;
  31134. if (arguments.length === 0) {
  31135. this.Key = "";
  31136. this.Num = 0;
  31137. this.OmitEmpty = false;
  31138. this.Flow = false;
  31139. this.Inline = sliceType$3.nil;
  31140. return;
  31141. }
  31142. this.Key = Key_;
  31143. this.Num = Num_;
  31144. this.OmitEmpty = OmitEmpty_;
  31145. this.Flow = Flow_;
  31146. this.Inline = Inline_;
  31147. });
  31148. yaml_version_directive_t = $pkg.yaml_version_directive_t = $newType(0, $kindStruct, "yaml.yaml_version_directive_t", "yaml_version_directive_t", "gopkg.in/yaml.v2", function(major_, minor_) {
  31149. this.$val = this;
  31150. if (arguments.length === 0) {
  31151. this.major = 0;
  31152. this.minor = 0;
  31153. return;
  31154. }
  31155. this.major = major_;
  31156. this.minor = minor_;
  31157. });
  31158. yaml_tag_directive_t = $pkg.yaml_tag_directive_t = $newType(0, $kindStruct, "yaml.yaml_tag_directive_t", "yaml_tag_directive_t", "gopkg.in/yaml.v2", function(handle_, prefix_) {
  31159. this.$val = this;
  31160. if (arguments.length === 0) {
  31161. this.handle = sliceType$1.nil;
  31162. this.prefix = sliceType$1.nil;
  31163. return;
  31164. }
  31165. this.handle = handle_;
  31166. this.prefix = prefix_;
  31167. });
  31168. yaml_encoding_t = $pkg.yaml_encoding_t = $newType(4, $kindInt, "yaml.yaml_encoding_t", "yaml_encoding_t", "gopkg.in/yaml.v2", null);
  31169. yaml_error_type_t = $pkg.yaml_error_type_t = $newType(4, $kindInt, "yaml.yaml_error_type_t", "yaml_error_type_t", "gopkg.in/yaml.v2", null);
  31170. yaml_mark_t = $pkg.yaml_mark_t = $newType(0, $kindStruct, "yaml.yaml_mark_t", "yaml_mark_t", "gopkg.in/yaml.v2", function(index_, line_, column_) {
  31171. this.$val = this;
  31172. if (arguments.length === 0) {
  31173. this.index = 0;
  31174. this.line = 0;
  31175. this.column = 0;
  31176. return;
  31177. }
  31178. this.index = index_;
  31179. this.line = line_;
  31180. this.column = column_;
  31181. });
  31182. yaml_style_t = $pkg.yaml_style_t = $newType(1, $kindInt8, "yaml.yaml_style_t", "yaml_style_t", "gopkg.in/yaml.v2", null);
  31183. yaml_scalar_style_t = $pkg.yaml_scalar_style_t = $newType(1, $kindInt8, "yaml.yaml_scalar_style_t", "yaml_scalar_style_t", "gopkg.in/yaml.v2", null);
  31184. yaml_sequence_style_t = $pkg.yaml_sequence_style_t = $newType(1, $kindInt8, "yaml.yaml_sequence_style_t", "yaml_sequence_style_t", "gopkg.in/yaml.v2", null);
  31185. yaml_mapping_style_t = $pkg.yaml_mapping_style_t = $newType(1, $kindInt8, "yaml.yaml_mapping_style_t", "yaml_mapping_style_t", "gopkg.in/yaml.v2", null);
  31186. yaml_token_type_t = $pkg.yaml_token_type_t = $newType(4, $kindInt, "yaml.yaml_token_type_t", "yaml_token_type_t", "gopkg.in/yaml.v2", null);
  31187. yaml_token_t = $pkg.yaml_token_t = $newType(0, $kindStruct, "yaml.yaml_token_t", "yaml_token_t", "gopkg.in/yaml.v2", function(typ_, start_mark_, end_mark_, encoding_, value_, suffix_, prefix_, style_, major_, minor_) {
  31188. this.$val = this;
  31189. if (arguments.length === 0) {
  31190. this.typ = 0;
  31191. this.start_mark = new yaml_mark_t.ptr();
  31192. this.end_mark = new yaml_mark_t.ptr();
  31193. this.encoding = 0;
  31194. this.value = sliceType$1.nil;
  31195. this.suffix = sliceType$1.nil;
  31196. this.prefix = sliceType$1.nil;
  31197. this.style = 0;
  31198. this.major = 0;
  31199. this.minor = 0;
  31200. return;
  31201. }
  31202. this.typ = typ_;
  31203. this.start_mark = start_mark_;
  31204. this.end_mark = end_mark_;
  31205. this.encoding = encoding_;
  31206. this.value = value_;
  31207. this.suffix = suffix_;
  31208. this.prefix = prefix_;
  31209. this.style = style_;
  31210. this.major = major_;
  31211. this.minor = minor_;
  31212. });
  31213. yaml_event_type_t = $pkg.yaml_event_type_t = $newType(1, $kindInt8, "yaml.yaml_event_type_t", "yaml_event_type_t", "gopkg.in/yaml.v2", null);
  31214. yaml_event_t = $pkg.yaml_event_t = $newType(0, $kindStruct, "yaml.yaml_event_t", "yaml_event_t", "gopkg.in/yaml.v2", function(typ_, start_mark_, end_mark_, encoding_, version_directive_, tag_directives_, anchor_, tag_, value_, implicit_, quoted_implicit_, style_) {
  31215. this.$val = this;
  31216. if (arguments.length === 0) {
  31217. this.typ = 0;
  31218. this.start_mark = new yaml_mark_t.ptr();
  31219. this.end_mark = new yaml_mark_t.ptr();
  31220. this.encoding = 0;
  31221. this.version_directive = ptrType$3.nil;
  31222. this.tag_directives = sliceType.nil;
  31223. this.anchor = sliceType$1.nil;
  31224. this.tag = sliceType$1.nil;
  31225. this.value = sliceType$1.nil;
  31226. this.implicit = false;
  31227. this.quoted_implicit = false;
  31228. this.style = 0;
  31229. return;
  31230. }
  31231. this.typ = typ_;
  31232. this.start_mark = start_mark_;
  31233. this.end_mark = end_mark_;
  31234. this.encoding = encoding_;
  31235. this.version_directive = version_directive_;
  31236. this.tag_directives = tag_directives_;
  31237. this.anchor = anchor_;
  31238. this.tag = tag_;
  31239. this.value = value_;
  31240. this.implicit = implicit_;
  31241. this.quoted_implicit = quoted_implicit_;
  31242. this.style = style_;
  31243. });
  31244. yaml_node_type_t = $pkg.yaml_node_type_t = $newType(4, $kindInt, "yaml.yaml_node_type_t", "yaml_node_type_t", "gopkg.in/yaml.v2", null);
  31245. yaml_node_item_t = $pkg.yaml_node_item_t = $newType(4, $kindInt, "yaml.yaml_node_item_t", "yaml_node_item_t", "gopkg.in/yaml.v2", null);
  31246. yaml_node_pair_t = $pkg.yaml_node_pair_t = $newType(0, $kindStruct, "yaml.yaml_node_pair_t", "yaml_node_pair_t", "gopkg.in/yaml.v2", function(key_, value_) {
  31247. this.$val = this;
  31248. if (arguments.length === 0) {
  31249. this.key = 0;
  31250. this.value = 0;
  31251. return;
  31252. }
  31253. this.key = key_;
  31254. this.value = value_;
  31255. });
  31256. yaml_node_t = $pkg.yaml_node_t = $newType(0, $kindStruct, "yaml.yaml_node_t", "yaml_node_t", "gopkg.in/yaml.v2", function(typ_, tag_, scalar_, sequence_, mapping_, start_mark_, end_mark_) {
  31257. this.$val = this;
  31258. if (arguments.length === 0) {
  31259. this.typ = 0;
  31260. this.tag = sliceType$1.nil;
  31261. this.scalar = new structType$5.ptr();
  31262. this.sequence = new structType$6.ptr();
  31263. this.mapping = new structType$7.ptr();
  31264. this.start_mark = new yaml_mark_t.ptr();
  31265. this.end_mark = new yaml_mark_t.ptr();
  31266. return;
  31267. }
  31268. this.typ = typ_;
  31269. this.tag = tag_;
  31270. this.scalar = scalar_;
  31271. this.sequence = sequence_;
  31272. this.mapping = mapping_;
  31273. this.start_mark = start_mark_;
  31274. this.end_mark = end_mark_;
  31275. });
  31276. yaml_document_t = $pkg.yaml_document_t = $newType(0, $kindStruct, "yaml.yaml_document_t", "yaml_document_t", "gopkg.in/yaml.v2", function(nodes_, version_directive_, tag_directives_data_, tag_directives_start_, tag_directives_end_, start_implicit_, end_implicit_, start_mark_, end_mark_) {
  31277. this.$val = this;
  31278. if (arguments.length === 0) {
  31279. this.nodes = sliceType$19.nil;
  31280. this.version_directive = ptrType$3.nil;
  31281. this.tag_directives_data = sliceType.nil;
  31282. this.tag_directives_start = 0;
  31283. this.tag_directives_end = 0;
  31284. this.start_implicit = 0;
  31285. this.end_implicit = 0;
  31286. this.start_mark = new yaml_mark_t.ptr();
  31287. this.end_mark = new yaml_mark_t.ptr();
  31288. return;
  31289. }
  31290. this.nodes = nodes_;
  31291. this.version_directive = version_directive_;
  31292. this.tag_directives_data = tag_directives_data_;
  31293. this.tag_directives_start = tag_directives_start_;
  31294. this.tag_directives_end = tag_directives_end_;
  31295. this.start_implicit = start_implicit_;
  31296. this.end_implicit = end_implicit_;
  31297. this.start_mark = start_mark_;
  31298. this.end_mark = end_mark_;
  31299. });
  31300. yaml_read_handler_t = $pkg.yaml_read_handler_t = $newType(4, $kindFunc, "yaml.yaml_read_handler_t", "yaml_read_handler_t", "gopkg.in/yaml.v2", null);
  31301. yaml_simple_key_t = $pkg.yaml_simple_key_t = $newType(0, $kindStruct, "yaml.yaml_simple_key_t", "yaml_simple_key_t", "gopkg.in/yaml.v2", function(possible_, required_, token_number_, mark_) {
  31302. this.$val = this;
  31303. if (arguments.length === 0) {
  31304. this.possible = false;
  31305. this.required = false;
  31306. this.token_number = 0;
  31307. this.mark = new yaml_mark_t.ptr();
  31308. return;
  31309. }
  31310. this.possible = possible_;
  31311. this.required = required_;
  31312. this.token_number = token_number_;
  31313. this.mark = mark_;
  31314. });
  31315. yaml_parser_state_t = $pkg.yaml_parser_state_t = $newType(4, $kindInt, "yaml.yaml_parser_state_t", "yaml_parser_state_t", "gopkg.in/yaml.v2", null);
  31316. yaml_alias_data_t = $pkg.yaml_alias_data_t = $newType(0, $kindStruct, "yaml.yaml_alias_data_t", "yaml_alias_data_t", "gopkg.in/yaml.v2", function(anchor_, index_, mark_) {
  31317. this.$val = this;
  31318. if (arguments.length === 0) {
  31319. this.anchor = sliceType$1.nil;
  31320. this.index = 0;
  31321. this.mark = new yaml_mark_t.ptr();
  31322. return;
  31323. }
  31324. this.anchor = anchor_;
  31325. this.index = index_;
  31326. this.mark = mark_;
  31327. });
  31328. yaml_parser_t = $pkg.yaml_parser_t = $newType(0, $kindStruct, "yaml.yaml_parser_t", "yaml_parser_t", "gopkg.in/yaml.v2", function(error_, problem_, problem_offset_, problem_value_, problem_mark_, context_, context_mark_, read_handler_, input_file_, input_, input_pos_, eof_, buffer_, buffer_pos_, unread_, raw_buffer_, raw_buffer_pos_, encoding_, offset_, mark_, stream_start_produced_, stream_end_produced_, flow_level_, tokens_, tokens_head_, tokens_parsed_, token_available_, indent_, indents_, simple_key_allowed_, simple_keys_, state_, states_, marks_, tag_directives_, aliases_, document_) {
  31329. this.$val = this;
  31330. if (arguments.length === 0) {
  31331. this.error = 0;
  31332. this.problem = "";
  31333. this.problem_offset = 0;
  31334. this.problem_value = 0;
  31335. this.problem_mark = new yaml_mark_t.ptr();
  31336. this.context = "";
  31337. this.context_mark = new yaml_mark_t.ptr();
  31338. this.read_handler = $throwNilPointerError;
  31339. this.input_file = $ifaceNil;
  31340. this.input = sliceType$1.nil;
  31341. this.input_pos = 0;
  31342. this.eof = false;
  31343. this.buffer = sliceType$1.nil;
  31344. this.buffer_pos = 0;
  31345. this.unread = 0;
  31346. this.raw_buffer = sliceType$1.nil;
  31347. this.raw_buffer_pos = 0;
  31348. this.encoding = 0;
  31349. this.offset = 0;
  31350. this.mark = new yaml_mark_t.ptr();
  31351. this.stream_start_produced = false;
  31352. this.stream_end_produced = false;
  31353. this.flow_level = 0;
  31354. this.tokens = sliceType$2.nil;
  31355. this.tokens_head = 0;
  31356. this.tokens_parsed = 0;
  31357. this.token_available = false;
  31358. this.indent = 0;
  31359. this.indents = sliceType$3.nil;
  31360. this.simple_key_allowed = false;
  31361. this.simple_keys = sliceType$4.nil;
  31362. this.state = 0;
  31363. this.states = sliceType$5.nil;
  31364. this.marks = sliceType$6.nil;
  31365. this.tag_directives = sliceType.nil;
  31366. this.aliases = sliceType$7.nil;
  31367. this.document = ptrType.nil;
  31368. return;
  31369. }
  31370. this.error = error_;
  31371. this.problem = problem_;
  31372. this.problem_offset = problem_offset_;
  31373. this.problem_value = problem_value_;
  31374. this.problem_mark = problem_mark_;
  31375. this.context = context_;
  31376. this.context_mark = context_mark_;
  31377. this.read_handler = read_handler_;
  31378. this.input_file = input_file_;
  31379. this.input = input_;
  31380. this.input_pos = input_pos_;
  31381. this.eof = eof_;
  31382. this.buffer = buffer_;
  31383. this.buffer_pos = buffer_pos_;
  31384. this.unread = unread_;
  31385. this.raw_buffer = raw_buffer_;
  31386. this.raw_buffer_pos = raw_buffer_pos_;
  31387. this.encoding = encoding_;
  31388. this.offset = offset_;
  31389. this.mark = mark_;
  31390. this.stream_start_produced = stream_start_produced_;
  31391. this.stream_end_produced = stream_end_produced_;
  31392. this.flow_level = flow_level_;
  31393. this.tokens = tokens_;
  31394. this.tokens_head = tokens_head_;
  31395. this.tokens_parsed = tokens_parsed_;
  31396. this.token_available = token_available_;
  31397. this.indent = indent_;
  31398. this.indents = indents_;
  31399. this.simple_key_allowed = simple_key_allowed_;
  31400. this.simple_keys = simple_keys_;
  31401. this.state = state_;
  31402. this.states = states_;
  31403. this.marks = marks_;
  31404. this.tag_directives = tag_directives_;
  31405. this.aliases = aliases_;
  31406. this.document = document_;
  31407. });
  31408. mapType = $mapType($emptyInterface, $emptyInterface);
  31409. sliceType = $sliceType(yaml_tag_directive_t);
  31410. sliceType$1 = $sliceType($Uint8);
  31411. sliceType$2 = $sliceType(yaml_token_t);
  31412. sliceType$3 = $sliceType($Int);
  31413. sliceType$4 = $sliceType(yaml_simple_key_t);
  31414. sliceType$5 = $sliceType(yaml_parser_state_t);
  31415. sliceType$6 = $sliceType(yaml_mark_t);
  31416. sliceType$7 = $sliceType(yaml_alias_data_t);
  31417. ptrType = $ptrType(yaml_document_t);
  31418. ptrType$1 = $ptrType(sliceType$1);
  31419. ptrType$3 = $ptrType(yaml_version_directive_t);
  31420. ptrType$4 = $ptrType(node);
  31421. sliceType$10 = $sliceType($emptyInterface);
  31422. sliceType$11 = $sliceType(ptrType$4);
  31423. sliceType$12 = $sliceType($String);
  31424. ptrType$5 = $ptrType($error);
  31425. ptrType$6 = $ptrType(TypeError);
  31426. sliceType$13 = $sliceType(MapItem);
  31427. ptrType$7 = $ptrType($emptyInterface);
  31428. ptrType$8 = $ptrType($Int);
  31429. ptrType$10 = $ptrType(yaml_token_t);
  31430. ptrType$11 = $ptrType(ptrType$3);
  31431. ptrType$12 = $ptrType(sliceType);
  31432. structType$4 = $structType([{prop: "v", name: "v", pkg: "gopkg.in/yaml.v2", typ: $emptyInterface, tag: ""}, {prop: "tag", name: "tag", pkg: "gopkg.in/yaml.v2", typ: $String, tag: ""}, {prop: "l", name: "l", pkg: "gopkg.in/yaml.v2", typ: sliceType$12, tag: ""}]);
  31433. sliceType$14 = $sliceType(structType$4);
  31434. ptrType$13 = $ptrType($Int8);
  31435. ptrType$14 = $ptrType(structInfo);
  31436. sliceType$16 = $sliceType(fieldInfo);
  31437. mapType$1 = $mapType($String, ptrType$4);
  31438. ptrType$15 = $ptrType(parser);
  31439. ptrType$16 = $ptrType(decoder);
  31440. mapType$2 = $mapType($String, $Bool);
  31441. funcType$1 = $funcType([$emptyInterface], [$error], false);
  31442. mapType$3 = $mapType($String, fieldInfo);
  31443. ptrType$17 = $ptrType(yaml_event_t);
  31444. structType$5 = $structType([{prop: "value", name: "value", pkg: "gopkg.in/yaml.v2", typ: sliceType$1, tag: ""}, {prop: "length", name: "length", pkg: "gopkg.in/yaml.v2", typ: $Int, tag: ""}, {prop: "style", name: "style", pkg: "gopkg.in/yaml.v2", typ: yaml_scalar_style_t, tag: ""}]);
  31445. sliceType$17 = $sliceType(yaml_node_item_t);
  31446. structType$6 = $structType([{prop: "items_data", name: "items_data", pkg: "gopkg.in/yaml.v2", typ: sliceType$17, tag: ""}, {prop: "style", name: "style", pkg: "gopkg.in/yaml.v2", typ: yaml_sequence_style_t, tag: ""}]);
  31447. sliceType$18 = $sliceType(yaml_node_pair_t);
  31448. ptrType$18 = $ptrType(yaml_node_pair_t);
  31449. structType$7 = $structType([{prop: "pairs_data", name: "pairs_data", pkg: "gopkg.in/yaml.v2", typ: sliceType$18, tag: ""}, {prop: "pairs_start", name: "pairs_start", pkg: "gopkg.in/yaml.v2", typ: ptrType$18, tag: ""}, {prop: "pairs_end", name: "pairs_end", pkg: "gopkg.in/yaml.v2", typ: ptrType$18, tag: ""}, {prop: "pairs_top", name: "pairs_top", pkg: "gopkg.in/yaml.v2", typ: ptrType$18, tag: ""}, {prop: "style", name: "style", pkg: "gopkg.in/yaml.v2", typ: yaml_mapping_style_t, tag: ""}]);
  31450. sliceType$19 = $sliceType(yaml_node_t);
  31451. ptrType$19 = $ptrType(yaml_parser_t);
  31452. yaml_insert_token = function(parser$1, pos, token) {
  31453. var $ptr, parser$1, pos, token, x$1, x$2;
  31454. if (parser$1.tokens_head > 0 && (parser$1.tokens.$length === parser$1.tokens.$capacity)) {
  31455. if (!((parser$1.tokens_head === parser$1.tokens.$length))) {
  31456. $copySlice(parser$1.tokens, $subslice(parser$1.tokens, parser$1.tokens_head));
  31457. }
  31458. parser$1.tokens = $subslice(parser$1.tokens, 0, (parser$1.tokens.$length - parser$1.tokens_head >> 0));
  31459. parser$1.tokens_head = 0;
  31460. }
  31461. parser$1.tokens = $append(parser$1.tokens, token);
  31462. if (pos < 0) {
  31463. return;
  31464. }
  31465. $copySlice($subslice(parser$1.tokens, ((parser$1.tokens_head + pos >> 0) + 1 >> 0)), $subslice(parser$1.tokens, (parser$1.tokens_head + pos >> 0)));
  31466. $copy((x$1 = parser$1.tokens, x$2 = parser$1.tokens_head + pos >> 0, ((x$2 < 0 || x$2 >= x$1.$length) ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + x$2])), token, yaml_token_t);
  31467. };
  31468. yaml_parser_initialize = function(parser$1) {
  31469. var $ptr, parser$1;
  31470. $copy(parser$1, new yaml_parser_t.ptr(0, "", 0, 0, new yaml_mark_t.ptr(), "", new yaml_mark_t.ptr(), $throwNilPointerError, $ifaceNil, sliceType$1.nil, 0, false, $makeSlice(sliceType$1, 0, 1536), 0, 0, $makeSlice(sliceType$1, 0, 512), 0, 0, 0, new yaml_mark_t.ptr(), false, false, 0, sliceType$2.nil, 0, 0, false, 0, sliceType$3.nil, false, sliceType$4.nil, 0, sliceType$5.nil, sliceType$6.nil, sliceType.nil, sliceType$7.nil, ptrType.nil), yaml_parser_t);
  31471. return true;
  31472. };
  31473. yaml_parser_delete = function(parser$1) {
  31474. var $ptr, parser$1;
  31475. $copy(parser$1, new yaml_parser_t.ptr(0, "", 0, 0, new yaml_mark_t.ptr(), "", new yaml_mark_t.ptr(), $throwNilPointerError, $ifaceNil, sliceType$1.nil, 0, false, sliceType$1.nil, 0, 0, sliceType$1.nil, 0, 0, 0, new yaml_mark_t.ptr(), false, false, 0, sliceType$2.nil, 0, 0, false, 0, sliceType$3.nil, false, sliceType$4.nil, 0, sliceType$5.nil, sliceType$6.nil, sliceType.nil, sliceType$7.nil, ptrType.nil), yaml_parser_t);
  31476. };
  31477. yaml_string_read_handler = function(parser$1, buffer) {
  31478. var $ptr, _tmp, _tmp$1, _tmp$2, _tmp$3, buffer, err, n, parser$1;
  31479. n = 0;
  31480. err = $ifaceNil;
  31481. if (parser$1.input_pos === parser$1.input.$length) {
  31482. _tmp = 0; _tmp$1 = io.EOF; n = _tmp; err = _tmp$1;
  31483. return [n, err];
  31484. }
  31485. n = $copySlice(buffer, $subslice(parser$1.input, parser$1.input_pos));
  31486. parser$1.input_pos = parser$1.input_pos + (n) >> 0;
  31487. _tmp$2 = n; _tmp$3 = $ifaceNil; n = _tmp$2; err = _tmp$3;
  31488. return [n, err];
  31489. };
  31490. yaml_parser_set_input_string = function(parser$1, input) {
  31491. var $ptr, input, parser$1;
  31492. if (!(parser$1.read_handler === $throwNilPointerError)) {
  31493. $panic(new $String("must set the input source only once"));
  31494. }
  31495. parser$1.read_handler = yaml_string_read_handler;
  31496. parser$1.input = input;
  31497. parser$1.input_pos = 0;
  31498. };
  31499. yaml_event_delete = function(event) {
  31500. var $ptr, event;
  31501. $copy(event, new yaml_event_t.ptr(0, new yaml_mark_t.ptr(), new yaml_mark_t.ptr(), 0, ptrType$3.nil, sliceType.nil, sliceType$1.nil, sliceType$1.nil, sliceType$1.nil, false, false, 0), yaml_event_t);
  31502. };
  31503. newParser = function(b) {
  31504. var $ptr, b, p, $s, $r;
  31505. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; b = $f.b; p = $f.p; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  31506. p = [p];
  31507. p[0] = new parser.ptr(new yaml_parser_t.ptr(), new yaml_event_t.ptr(), ptrType$4.nil);
  31508. if (!yaml_parser_initialize(p[0].parser)) {
  31509. $panic(new $String("failed to initialize YAML emitter"));
  31510. }
  31511. if (b.$length === 0) {
  31512. b = new sliceType$1([10]);
  31513. }
  31514. yaml_parser_set_input_string(p[0].parser, b);
  31515. $r = p[0].skip(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  31516. if (!((p[0].event.typ === 1))) {
  31517. $panic(new $String("expected stream start event, got " + strconv.Itoa((p[0].event.typ >> 0))));
  31518. }
  31519. $r = p[0].skip(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  31520. return p[0];
  31521. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: newParser }; } $f.$ptr = $ptr; $f.b = b; $f.p = p; $f.$s = $s; $f.$r = $r; return $f;
  31522. };
  31523. parser.ptr.prototype.destroy = function() {
  31524. var $ptr, p;
  31525. p = this;
  31526. if (!((p.event.typ === 0))) {
  31527. yaml_event_delete(p.event);
  31528. }
  31529. yaml_parser_delete(p.parser);
  31530. };
  31531. parser.prototype.destroy = function() { return this.$val.destroy(); };
  31532. parser.ptr.prototype.skip = function() {
  31533. var $ptr, _r$2, p, $s, $r;
  31534. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r$2 = $f._r$2; p = $f.p; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  31535. p = this;
  31536. /* */ if (!((p.event.typ === 0))) { $s = 1; continue; }
  31537. /* */ $s = 2; continue;
  31538. /* if (!((p.event.typ === 0))) { */ case 1:
  31539. /* */ if (p.event.typ === 2) { $s = 3; continue; }
  31540. /* */ $s = 4; continue;
  31541. /* if (p.event.typ === 2) { */ case 3:
  31542. $r = failf("attempted to go past the end of stream; corrupted value?", new sliceType$10([])); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  31543. /* } */ case 4:
  31544. yaml_event_delete(p.event);
  31545. /* } */ case 2:
  31546. _r$2 = yaml_parser_parse(p.parser, p.event); /* */ $s = 8; case 8: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  31547. /* */ if (!_r$2) { $s = 6; continue; }
  31548. /* */ $s = 7; continue;
  31549. /* if (!_r$2) { */ case 6:
  31550. $r = p.fail(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  31551. /* } */ case 7:
  31552. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: parser.ptr.prototype.skip }; } $f.$ptr = $ptr; $f._r$2 = _r$2; $f.p = p; $f.$s = $s; $f.$r = $r; return $f;
  31553. };
  31554. parser.prototype.skip = function() { return this.$val.skip(); };
  31555. parser.ptr.prototype.fail = function() {
  31556. var $ptr, line, msg, p, where, $s, $r;
  31557. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; line = $f.line; msg = $f.msg; p = $f.p; where = $f.where; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  31558. p = this;
  31559. where = "";
  31560. line = 0;
  31561. if (!((p.parser.problem_mark.line === 0))) {
  31562. line = p.parser.problem_mark.line;
  31563. } else if (!((p.parser.context_mark.line === 0))) {
  31564. line = p.parser.context_mark.line;
  31565. }
  31566. if (!((line === 0))) {
  31567. where = "line " + strconv.Itoa(line) + ": ";
  31568. }
  31569. msg = "";
  31570. if (p.parser.problem.length > 0) {
  31571. msg = p.parser.problem;
  31572. } else {
  31573. msg = "unknown problem parsing YAML content";
  31574. }
  31575. $r = failf("%s%s", new sliceType$10([new $String(where), new $String(msg)])); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  31576. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: parser.ptr.prototype.fail }; } $f.$ptr = $ptr; $f.line = line; $f.msg = msg; $f.p = p; $f.where = where; $f.$s = $s; $f.$r = $r; return $f;
  31577. };
  31578. parser.prototype.fail = function() { return this.$val.fail(); };
  31579. parser.ptr.prototype.anchor = function(n, anchor) {
  31580. var $ptr, _key$1, anchor, n, p;
  31581. p = this;
  31582. if (!(anchor === sliceType$1.nil)) {
  31583. _key$1 = $bytesToString(anchor); (p.doc.anchors || $throwRuntimeError("assignment to entry in nil map"))[_key$1] = { k: _key$1, v: n };
  31584. }
  31585. };
  31586. parser.prototype.anchor = function(n, anchor) { return this.$val.anchor(n, anchor); };
  31587. parser.ptr.prototype.parse = function() {
  31588. var $ptr, _r$2, _r$3, _r$4, _r$5, _r$6, _ref, p, $s, $r;
  31589. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _ref = $f._ref; p = $f.p; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  31590. p = this;
  31591. _ref = p.event.typ;
  31592. /* */ if (_ref === 6) { $s = 1; continue; }
  31593. /* */ if (_ref === 5) { $s = 2; continue; }
  31594. /* */ if (_ref === 9) { $s = 3; continue; }
  31595. /* */ if (_ref === 7) { $s = 4; continue; }
  31596. /* */ if (_ref === 3) { $s = 5; continue; }
  31597. /* */ if (_ref === 2) { $s = 6; continue; }
  31598. /* */ $s = 7; continue;
  31599. /* if (_ref === 6) { */ case 1:
  31600. _r$2 = p.scalar(); /* */ $s = 9; case 9: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  31601. return _r$2;
  31602. $s = 8; continue;
  31603. /* } else if (_ref === 5) { */ case 2:
  31604. _r$3 = p.alias(); /* */ $s = 10; case 10: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  31605. return _r$3;
  31606. $s = 8; continue;
  31607. /* } else if (_ref === 9) { */ case 3:
  31608. _r$4 = p.mapping(); /* */ $s = 11; case 11: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
  31609. return _r$4;
  31610. $s = 8; continue;
  31611. /* } else if (_ref === 7) { */ case 4:
  31612. _r$5 = p.sequence(); /* */ $s = 12; case 12: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
  31613. return _r$5;
  31614. $s = 8; continue;
  31615. /* } else if (_ref === 3) { */ case 5:
  31616. _r$6 = p.document(); /* */ $s = 13; case 13: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
  31617. return _r$6;
  31618. $s = 8; continue;
  31619. /* } else if (_ref === 2) { */ case 6:
  31620. return ptrType$4.nil;
  31621. $s = 8; continue;
  31622. /* } else { */ case 7:
  31623. $panic(new $String("attempted to parse unknown event: " + strconv.Itoa((p.event.typ >> 0))));
  31624. /* } */ case 8:
  31625. $panic(new $String("unreachable"));
  31626. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: parser.ptr.prototype.parse }; } $f.$ptr = $ptr; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._ref = _ref; $f.p = p; $f.$s = $s; $f.$r = $r; return $f;
  31627. };
  31628. parser.prototype.parse = function() { return this.$val.parse(); };
  31629. parser.ptr.prototype.node = function(kind) {
  31630. var $ptr, kind, p;
  31631. p = this;
  31632. return new node.ptr(kind, p.event.start_mark.line, p.event.start_mark.column, "", "", false, sliceType$11.nil, false);
  31633. };
  31634. parser.prototype.node = function(kind) { return this.$val.node(kind); };
  31635. parser.ptr.prototype.document = function() {
  31636. var $ptr, _r$2, n, p, $s, $r;
  31637. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r$2 = $f._r$2; n = $f.n; p = $f.p; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  31638. p = this;
  31639. n = p.node(1);
  31640. n.anchors = new $Map();
  31641. p.doc = n;
  31642. $r = p.skip(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  31643. _r$2 = p.parse(); /* */ $s = 2; case 2: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  31644. n.children = $append(n.children, _r$2);
  31645. if (!((p.event.typ === 4))) {
  31646. $panic(new $String("expected end of document event but got " + strconv.Itoa((p.event.typ >> 0))));
  31647. }
  31648. $r = p.skip(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  31649. return n;
  31650. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: parser.ptr.prototype.document }; } $f.$ptr = $ptr; $f._r$2 = _r$2; $f.n = n; $f.p = p; $f.$s = $s; $f.$r = $r; return $f;
  31651. };
  31652. parser.prototype.document = function() { return this.$val.document(); };
  31653. parser.ptr.prototype.alias = function() {
  31654. var $ptr, n, p, $s, $r;
  31655. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; n = $f.n; p = $f.p; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  31656. p = this;
  31657. n = p.node(16);
  31658. n.value = $bytesToString(p.event.anchor);
  31659. $r = p.skip(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  31660. return n;
  31661. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: parser.ptr.prototype.alias }; } $f.$ptr = $ptr; $f.n = n; $f.p = p; $f.$s = $s; $f.$r = $r; return $f;
  31662. };
  31663. parser.prototype.alias = function() { return this.$val.alias(); };
  31664. parser.ptr.prototype.scalar = function() {
  31665. var $ptr, n, p, $s, $r;
  31666. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; n = $f.n; p = $f.p; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  31667. p = this;
  31668. n = p.node(8);
  31669. n.value = $bytesToString(p.event.value);
  31670. n.tag = $bytesToString(p.event.tag);
  31671. n.implicit = p.event.implicit;
  31672. p.anchor(n, p.event.anchor);
  31673. $r = p.skip(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  31674. return n;
  31675. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: parser.ptr.prototype.scalar }; } $f.$ptr = $ptr; $f.n = n; $f.p = p; $f.$s = $s; $f.$r = $r; return $f;
  31676. };
  31677. parser.prototype.scalar = function() { return this.$val.scalar(); };
  31678. parser.ptr.prototype.sequence = function() {
  31679. var $ptr, _r$2, n, p, $s, $r;
  31680. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r$2 = $f._r$2; n = $f.n; p = $f.p; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  31681. p = this;
  31682. n = p.node(4);
  31683. p.anchor(n, p.event.anchor);
  31684. $r = p.skip(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  31685. /* while (true) { */ case 2:
  31686. /* if (!(!((p.event.typ === 8)))) { break; } */ if(!(!((p.event.typ === 8)))) { $s = 3; continue; }
  31687. _r$2 = p.parse(); /* */ $s = 4; case 4: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  31688. n.children = $append(n.children, _r$2);
  31689. /* } */ $s = 2; continue; case 3:
  31690. $r = p.skip(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  31691. return n;
  31692. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: parser.ptr.prototype.sequence }; } $f.$ptr = $ptr; $f._r$2 = _r$2; $f.n = n; $f.p = p; $f.$s = $s; $f.$r = $r; return $f;
  31693. };
  31694. parser.prototype.sequence = function() { return this.$val.sequence(); };
  31695. parser.ptr.prototype.mapping = function() {
  31696. var $ptr, _r$2, _r$3, n, p, $s, $r;
  31697. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r$2 = $f._r$2; _r$3 = $f._r$3; n = $f.n; p = $f.p; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  31698. p = this;
  31699. n = p.node(2);
  31700. p.anchor(n, p.event.anchor);
  31701. $r = p.skip(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  31702. /* while (true) { */ case 2:
  31703. /* if (!(!((p.event.typ === 10)))) { break; } */ if(!(!((p.event.typ === 10)))) { $s = 3; continue; }
  31704. _r$2 = p.parse(); /* */ $s = 4; case 4: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  31705. _r$3 = p.parse(); /* */ $s = 5; case 5: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  31706. n.children = $append(n.children, _r$2, _r$3);
  31707. /* } */ $s = 2; continue; case 3:
  31708. $r = p.skip(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  31709. return n;
  31710. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: parser.ptr.prototype.mapping }; } $f.$ptr = $ptr; $f._r$2 = _r$2; $f._r$3 = _r$3; $f.n = n; $f.p = p; $f.$s = $s; $f.$r = $r; return $f;
  31711. };
  31712. parser.prototype.mapping = function() { return this.$val.mapping(); };
  31713. newDecoder = function() {
  31714. var $ptr, d;
  31715. d = new decoder.ptr(ptrType$4.nil, false, defaultMapType, sliceType$12.nil);
  31716. d.aliases = new $Map();
  31717. return d;
  31718. };
  31719. decoder.ptr.prototype.terror = function(n, tag, out) {
  31720. var $ptr, _r$2, d, n, out, tag, value, $s, $r;
  31721. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r$2 = $f._r$2; d = $f.d; n = $f.n; out = $f.out; tag = $f.tag; value = $f.value; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  31722. d = this;
  31723. out = out;
  31724. if (!(n.tag === "")) {
  31725. tag = n.tag;
  31726. }
  31727. value = n.value;
  31728. if (!(tag === "tag:yaml.org,2002:seq") && !(tag === "tag:yaml.org,2002:map")) {
  31729. if (value.length > 10) {
  31730. value = " `" + value.substring(0, 7) + "...`";
  31731. } else {
  31732. value = " `" + value + "`";
  31733. }
  31734. }
  31735. _r$2 = fmt.Sprintf("line %d: cannot unmarshal %s%s into %s", new sliceType$10([new $Int((n.line + 1 >> 0)), new $String(shortTag(tag)), new $String(value), out.Type()])); /* */ $s = 1; case 1: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  31736. d.terrors = $append(d.terrors, _r$2);
  31737. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: decoder.ptr.prototype.terror }; } $f.$ptr = $ptr; $f._r$2 = _r$2; $f.d = d; $f.n = n; $f.out = out; $f.tag = tag; $f.value = value; $f.$s = $s; $f.$r = $r; return $f;
  31738. };
  31739. decoder.prototype.terror = function(n, tag, out) { return this.$val.terror(n, tag, out); };
  31740. decoder.ptr.prototype.callUnmarshaler = function(n, u) {
  31741. var $ptr, _r$2, _tuple, d, e, err, good, n, ok, terrlen, u, $s, $r;
  31742. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r$2 = $f._r$2; _tuple = $f._tuple; d = $f.d; e = $f.e; err = $f.err; good = $f.good; n = $f.n; ok = $f.ok; terrlen = $f.terrlen; u = $f.u; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  31743. d = [d];
  31744. n = [n];
  31745. terrlen = [terrlen];
  31746. good = false;
  31747. d[0] = this;
  31748. terrlen[0] = d[0].terrors.$length;
  31749. _r$2 = u.UnmarshalYAML((function(d, n, terrlen) { return function $b(v) {
  31750. var $ptr, _arg, _arg$1, _r$2, _r$3, err, issues, v, $s, $deferred, $r;
  31751. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _arg = $f._arg; _arg$1 = $f._arg$1; _r$2 = $f._r$2; _r$3 = $f._r$3; err = $f.err; issues = $f.issues; v = $f.v; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
  31752. err = [err];
  31753. err[0] = $ifaceNil;
  31754. $deferred.push([handleErr, [(err.$ptr || (err.$ptr = new ptrType$5(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, err)))]]);
  31755. _arg = n[0];
  31756. _r$2 = reflect.ValueOf(v); /* */ $s = 1; case 1: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  31757. _arg$1 = _r$2;
  31758. _r$3 = d[0].unmarshal(_arg, _arg$1); /* */ $s = 2; case 2: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  31759. _r$3;
  31760. if (d[0].terrors.$length > terrlen[0]) {
  31761. issues = $subslice(d[0].terrors, terrlen[0]);
  31762. d[0].terrors = $subslice(d[0].terrors, 0, terrlen[0]);
  31763. err[0] = new TypeError.ptr(issues);
  31764. return err[0];
  31765. }
  31766. err[0] = $ifaceNil;
  31767. return err[0];
  31768. /* */ $s = -1; case -1: } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if (!$curGoroutine.asleep) { return err[0]; } if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: $b }; } $f.$ptr = $ptr; $f._arg = _arg; $f._arg$1 = _arg$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f.err = err; $f.issues = issues; $f.v = v; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
  31769. }; })(d, n, terrlen)); /* */ $s = 1; case 1: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  31770. err = _r$2;
  31771. _tuple = $assertType(err, ptrType$6, true); e = _tuple[0]; ok = _tuple[1];
  31772. if (ok) {
  31773. d[0].terrors = $appendSlice(d[0].terrors, e.Errors);
  31774. good = false;
  31775. return good;
  31776. }
  31777. if (!($interfaceIsEqual(err, $ifaceNil))) {
  31778. fail(err);
  31779. }
  31780. good = true;
  31781. return good;
  31782. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: decoder.ptr.prototype.callUnmarshaler }; } $f.$ptr = $ptr; $f._r$2 = _r$2; $f._tuple = _tuple; $f.d = d; $f.e = e; $f.err = err; $f.good = good; $f.n = n; $f.ok = ok; $f.terrlen = terrlen; $f.u = u; $f.$s = $s; $f.$r = $r; return $f;
  31783. };
  31784. decoder.prototype.callUnmarshaler = function(n, u) { return this.$val.callUnmarshaler(n, u); };
  31785. decoder.ptr.prototype.prepare = function(n, out) {
  31786. var $ptr, _r$2, _r$3, _r$4, _r$5, _r$6, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tuple, again, d, good, n, newout, ok, out, u, unmarshaled, $s, $r;
  31787. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tmp$6 = $f._tmp$6; _tmp$7 = $f._tmp$7; _tmp$8 = $f._tmp$8; _tuple = $f._tuple; again = $f.again; d = $f.d; good = $f.good; n = $f.n; newout = $f.newout; ok = $f.ok; out = $f.out; u = $f.u; unmarshaled = $f.unmarshaled; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  31788. newout = new reflect.Value.ptr();
  31789. unmarshaled = false;
  31790. good = false;
  31791. d = this;
  31792. out = out;
  31793. if (n.tag === "tag:yaml.org,2002:null" || (n.kind === 8) && n.tag === "" && (n.value === "null" || n.value === "")) {
  31794. _tmp = out; _tmp$1 = false; _tmp$2 = false; newout = _tmp; unmarshaled = _tmp$1; good = _tmp$2;
  31795. return [newout, unmarshaled, good];
  31796. }
  31797. again = true;
  31798. /* while (true) { */ case 1:
  31799. /* if (!(again)) { break; } */ if(!(again)) { $s = 2; continue; }
  31800. again = false;
  31801. /* */ if (out.Kind() === 22) { $s = 3; continue; }
  31802. /* */ $s = 4; continue;
  31803. /* if (out.Kind() === 22) { */ case 3:
  31804. /* */ if (out.IsNil()) { $s = 5; continue; }
  31805. /* */ $s = 6; continue;
  31806. /* if (out.IsNil()) { */ case 5:
  31807. _r$2 = out.Type().Elem(); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  31808. _r$3 = reflect.New(_r$2); /* */ $s = 8; case 8: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  31809. $r = out.Set(_r$3); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  31810. /* } */ case 6:
  31811. _r$4 = out.Elem(); /* */ $s = 10; case 10: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
  31812. out = _r$4;
  31813. again = true;
  31814. /* } */ case 4:
  31815. /* */ if (out.CanAddr()) { $s = 11; continue; }
  31816. /* */ $s = 12; continue;
  31817. /* if (out.CanAddr()) { */ case 11:
  31818. _r$5 = out.Addr().Interface(); /* */ $s = 13; case 13: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
  31819. _tuple = $assertType(_r$5, Unmarshaler, true); u = _tuple[0]; ok = _tuple[1];
  31820. /* */ if (ok) { $s = 14; continue; }
  31821. /* */ $s = 15; continue;
  31822. /* if (ok) { */ case 14:
  31823. _r$6 = d.callUnmarshaler(n, u); /* */ $s = 16; case 16: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
  31824. good = _r$6;
  31825. _tmp$3 = out; _tmp$4 = true; _tmp$5 = good; newout = _tmp$3; unmarshaled = _tmp$4; good = _tmp$5;
  31826. return [newout, unmarshaled, good];
  31827. /* } */ case 15:
  31828. /* } */ case 12:
  31829. /* } */ $s = 1; continue; case 2:
  31830. _tmp$6 = out; _tmp$7 = false; _tmp$8 = false; newout = _tmp$6; unmarshaled = _tmp$7; good = _tmp$8;
  31831. return [newout, unmarshaled, good];
  31832. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: decoder.ptr.prototype.prepare }; } $f.$ptr = $ptr; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tmp$6 = _tmp$6; $f._tmp$7 = _tmp$7; $f._tmp$8 = _tmp$8; $f._tuple = _tuple; $f.again = again; $f.d = d; $f.good = good; $f.n = n; $f.newout = newout; $f.ok = ok; $f.out = out; $f.u = u; $f.unmarshaled = unmarshaled; $f.$s = $s; $f.$r = $r; return $f;
  31833. };
  31834. decoder.prototype.prepare = function(n, out) { return this.$val.prepare(n, out); };
  31835. decoder.ptr.prototype.unmarshal = function(n, out) {
  31836. var $ptr, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _ref, _ref$1, _tuple, d, good, n, out, unmarshaled, $s, $r;
  31837. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _ref = $f._ref; _ref$1 = $f._ref$1; _tuple = $f._tuple; d = $f.d; good = $f.good; n = $f.n; out = $f.out; unmarshaled = $f.unmarshaled; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  31838. good = false;
  31839. d = this;
  31840. out = out;
  31841. _ref = n.kind;
  31842. /* */ if (_ref === 1) { $s = 1; continue; }
  31843. /* */ if (_ref === 16) { $s = 2; continue; }
  31844. /* */ $s = 3; continue;
  31845. /* if (_ref === 1) { */ case 1:
  31846. _r$2 = d.document(n, out); /* */ $s = 4; case 4: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  31847. good = _r$2;
  31848. return good;
  31849. $s = 3; continue;
  31850. /* } else if (_ref === 16) { */ case 2:
  31851. _r$3 = d.alias(n, out); /* */ $s = 5; case 5: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  31852. good = _r$3;
  31853. return good;
  31854. /* } */ case 3:
  31855. _r$4 = d.prepare(n, out); /* */ $s = 6; case 6: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
  31856. _tuple = _r$4; out = _tuple[0]; unmarshaled = _tuple[1]; good = _tuple[2];
  31857. if (unmarshaled) {
  31858. good = good;
  31859. return good;
  31860. }
  31861. _ref$1 = n.kind;
  31862. /* */ if (_ref$1 === 8) { $s = 7; continue; }
  31863. /* */ if (_ref$1 === 2) { $s = 8; continue; }
  31864. /* */ if (_ref$1 === 4) { $s = 9; continue; }
  31865. /* */ $s = 10; continue;
  31866. /* if (_ref$1 === 8) { */ case 7:
  31867. _r$5 = d.scalar(n, out); /* */ $s = 12; case 12: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
  31868. good = _r$5;
  31869. $s = 11; continue;
  31870. /* } else if (_ref$1 === 2) { */ case 8:
  31871. _r$6 = d.mapping(n, out); /* */ $s = 13; case 13: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
  31872. good = _r$6;
  31873. $s = 11; continue;
  31874. /* } else if (_ref$1 === 4) { */ case 9:
  31875. _r$7 = d.sequence(n, out); /* */ $s = 14; case 14: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
  31876. good = _r$7;
  31877. $s = 11; continue;
  31878. /* } else { */ case 10:
  31879. $panic(new $String("internal error: unknown node kind: " + strconv.Itoa(n.kind)));
  31880. /* } */ case 11:
  31881. good = good;
  31882. return good;
  31883. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: decoder.ptr.prototype.unmarshal }; } $f.$ptr = $ptr; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._ref = _ref; $f._ref$1 = _ref$1; $f._tuple = _tuple; $f.d = d; $f.good = good; $f.n = n; $f.out = out; $f.unmarshaled = unmarshaled; $f.$s = $s; $f.$r = $r; return $f;
  31884. };
  31885. decoder.prototype.unmarshal = function(n, out) { return this.$val.unmarshal(n, out); };
  31886. decoder.ptr.prototype.document = function(n, out) {
  31887. var $ptr, _r$2, d, good, n, out, x$1, $s, $r;
  31888. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r$2 = $f._r$2; d = $f.d; good = $f.good; n = $f.n; out = $f.out; x$1 = $f.x$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  31889. good = false;
  31890. d = this;
  31891. out = out;
  31892. /* */ if (n.children.$length === 1) { $s = 1; continue; }
  31893. /* */ $s = 2; continue;
  31894. /* if (n.children.$length === 1) { */ case 1:
  31895. d.doc = n;
  31896. _r$2 = d.unmarshal((x$1 = n.children, (0 >= x$1.$length ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + 0])), out); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  31897. _r$2;
  31898. good = true;
  31899. return good;
  31900. /* } */ case 2:
  31901. good = false;
  31902. return good;
  31903. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: decoder.ptr.prototype.document }; } $f.$ptr = $ptr; $f._r$2 = _r$2; $f.d = d; $f.good = good; $f.n = n; $f.out = out; $f.x$1 = x$1; $f.$s = $s; $f.$r = $r; return $f;
  31904. };
  31905. decoder.prototype.document = function(n, out) { return this.$val.document(n, out); };
  31906. decoder.ptr.prototype.alias = function(n, out) {
  31907. var $ptr, _entry, _entry$1, _key$1, _r$2, _tuple, an, d, good, n, ok, out, $s, $r;
  31908. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _entry = $f._entry; _entry$1 = $f._entry$1; _key$1 = $f._key$1; _r$2 = $f._r$2; _tuple = $f._tuple; an = $f.an; d = $f.d; good = $f.good; n = $f.n; ok = $f.ok; out = $f.out; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  31909. good = false;
  31910. d = this;
  31911. out = out;
  31912. _tuple = (_entry = d.doc.anchors[n.value], _entry !== undefined ? [_entry.v, true] : [ptrType$4.nil, false]); an = _tuple[0]; ok = _tuple[1];
  31913. /* */ if (!ok) { $s = 1; continue; }
  31914. /* */ $s = 2; continue;
  31915. /* if (!ok) { */ case 1:
  31916. $r = failf("unknown anchor '%s' referenced", new sliceType$10([new $String(n.value)])); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  31917. /* } */ case 2:
  31918. /* */ if ((_entry$1 = d.aliases[n.value], _entry$1 !== undefined ? _entry$1.v : false)) { $s = 4; continue; }
  31919. /* */ $s = 5; continue;
  31920. /* if ((_entry$1 = d.aliases[n.value], _entry$1 !== undefined ? _entry$1.v : false)) { */ case 4:
  31921. $r = failf("anchor '%s' value contains itself", new sliceType$10([new $String(n.value)])); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  31922. /* } */ case 5:
  31923. _key$1 = n.value; (d.aliases || $throwRuntimeError("assignment to entry in nil map"))[_key$1] = { k: _key$1, v: true };
  31924. _r$2 = d.unmarshal(an, out); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  31925. good = _r$2;
  31926. delete d.aliases[n.value];
  31927. good = good;
  31928. return good;
  31929. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: decoder.ptr.prototype.alias }; } $f.$ptr = $ptr; $f._entry = _entry; $f._entry$1 = _entry$1; $f._key$1 = _key$1; $f._r$2 = _r$2; $f._tuple = _tuple; $f.an = an; $f.d = d; $f.good = good; $f.n = n; $f.ok = ok; $f.out = out; $f.$s = $s; $f.$r = $r; return $f;
  31930. };
  31931. decoder.prototype.alias = function(n, out) { return this.$val.alias(n, out); };
  31932. resetMap = function(out) {
  31933. var $ptr, _i, _r$2, _ref, k, out, $s, $r;
  31934. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _i = $f._i; _r$2 = $f._r$2; _ref = $f._ref; k = $f.k; out = $f.out; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  31935. out = out;
  31936. _r$2 = out.MapKeys(); /* */ $s = 1; case 1: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  31937. _ref = _r$2;
  31938. _i = 0;
  31939. /* while (true) { */ case 2:
  31940. /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 3; continue; }
  31941. k = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]);
  31942. $r = out.SetMapIndex(k, zeroValue); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  31943. _i++;
  31944. /* } */ $s = 2; continue; case 3:
  31945. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: resetMap }; } $f.$ptr = $ptr; $f._i = _i; $f._r$2 = _r$2; $f._ref = _ref; $f.k = k; $f.out = out; $f.$s = $s; $f.$r = $r; return $f;
  31946. };
  31947. decoder.ptr.prototype.scalar = function(n, out) {
  31948. var $ptr, _r$10, _r$11, _r$12, _r$13, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _ref$1, _ref$2, _ref$3, _ref$4, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, d, d$1, data, elem, err, err$1, err$2, good, n, ok, ok$1, out, resolved, resolved$1, resolved$10, resolved$11, resolved$12, resolved$13, resolved$14, resolved$2, resolved$3, resolved$4, resolved$5, resolved$6, resolved$7, resolved$8, resolved$9, s, tag, u, $s, $r;
  31949. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$12 = $f._r$12; _r$13 = $f._r$13; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _r$9 = $f._r$9; _ref = $f._ref; _ref$1 = $f._ref$1; _ref$2 = $f._ref$2; _ref$3 = $f._ref$3; _ref$4 = $f._ref$4; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; _tuple$4 = $f._tuple$4; d = $f.d; d$1 = $f.d$1; data = $f.data; elem = $f.elem; err = $f.err; err$1 = $f.err$1; err$2 = $f.err$2; good = $f.good; n = $f.n; ok = $f.ok; ok$1 = $f.ok$1; out = $f.out; resolved = $f.resolved; resolved$1 = $f.resolved$1; resolved$10 = $f.resolved$10; resolved$11 = $f.resolved$11; resolved$12 = $f.resolved$12; resolved$13 = $f.resolved$13; resolved$14 = $f.resolved$14; resolved$2 = $f.resolved$2; resolved$3 = $f.resolved$3; resolved$4 = $f.resolved$4; resolved$5 = $f.resolved$5; resolved$6 = $f.resolved$6; resolved$7 = $f.resolved$7; resolved$8 = $f.resolved$8; resolved$9 = $f.resolved$9; s = $f.s; tag = $f.tag; u = $f.u; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  31950. good = false;
  31951. d = this;
  31952. out = out;
  31953. tag = "";
  31954. resolved = $ifaceNil;
  31955. /* */ if (n.tag === "" && !n.implicit) { $s = 1; continue; }
  31956. /* */ $s = 2; continue;
  31957. /* if (n.tag === "" && !n.implicit) { */ case 1:
  31958. tag = "tag:yaml.org,2002:str";
  31959. resolved = new $String(n.value);
  31960. $s = 3; continue;
  31961. /* } else { */ case 2:
  31962. _r$2 = resolve(n.tag, n.value); /* */ $s = 4; case 4: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  31963. _tuple = _r$2; tag = _tuple[0]; resolved = _tuple[1];
  31964. /* */ if (tag === "tag:yaml.org,2002:binary") { $s = 5; continue; }
  31965. /* */ $s = 6; continue;
  31966. /* if (tag === "tag:yaml.org,2002:binary") { */ case 5:
  31967. _r$3 = base64.StdEncoding.DecodeString($assertType(resolved, $String)); /* */ $s = 7; case 7: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  31968. _tuple$1 = _r$3; data = _tuple$1[0]; err = _tuple$1[1];
  31969. /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 8; continue; }
  31970. /* */ $s = 9; continue;
  31971. /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 8:
  31972. $r = failf("!!binary value contains invalid base64 data", new sliceType$10([])); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  31973. /* } */ case 9:
  31974. resolved = new $String($bytesToString(data));
  31975. /* } */ case 6:
  31976. /* } */ case 3:
  31977. /* */ if ($interfaceIsEqual(resolved, $ifaceNil)) { $s = 11; continue; }
  31978. /* */ $s = 12; continue;
  31979. /* if ($interfaceIsEqual(resolved, $ifaceNil)) { */ case 11:
  31980. /* */ if ((out.Kind() === 21) && !out.CanAddr()) { $s = 13; continue; }
  31981. /* */ $s = 14; continue;
  31982. /* if ((out.Kind() === 21) && !out.CanAddr()) { */ case 13:
  31983. $r = resetMap(out); /* */ $s = 16; case 16: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  31984. $s = 15; continue;
  31985. /* } else { */ case 14:
  31986. _r$4 = reflect.Zero(out.Type()); /* */ $s = 17; case 17: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
  31987. $r = out.Set(_r$4); /* */ $s = 18; case 18: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  31988. /* } */ case 15:
  31989. good = true;
  31990. return good;
  31991. /* } */ case 12:
  31992. _tuple$2 = $assertType(resolved, $String, true); s = _tuple$2[0]; ok = _tuple$2[1];
  31993. /* */ if (ok && out.CanAddr()) { $s = 19; continue; }
  31994. /* */ $s = 20; continue;
  31995. /* if (ok && out.CanAddr()) { */ case 19:
  31996. _r$5 = out.Addr().Interface(); /* */ $s = 21; case 21: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
  31997. _tuple$3 = $assertType(_r$5, encoding.TextUnmarshaler, true); u = _tuple$3[0]; ok$1 = _tuple$3[1];
  31998. /* */ if (ok$1) { $s = 22; continue; }
  31999. /* */ $s = 23; continue;
  32000. /* if (ok$1) { */ case 22:
  32001. _r$6 = u.UnmarshalText(new sliceType$1($stringToBytes(s))); /* */ $s = 24; case 24: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
  32002. err$1 = _r$6;
  32003. if (!($interfaceIsEqual(err$1, $ifaceNil))) {
  32004. fail(err$1);
  32005. }
  32006. good = true;
  32007. return good;
  32008. /* } */ case 23:
  32009. /* } */ case 20:
  32010. _ref = out.Kind();
  32011. /* */ if (_ref === 24) { $s = 25; continue; }
  32012. /* */ if (_ref === 20) { $s = 26; continue; }
  32013. /* */ if (_ref === 2 || _ref === 3 || _ref === 4 || _ref === 5 || _ref === 6) { $s = 27; continue; }
  32014. /* */ if (_ref === 7 || _ref === 8 || _ref === 9 || _ref === 10 || _ref === 11 || _ref === 12) { $s = 28; continue; }
  32015. /* */ if (_ref === 1) { $s = 29; continue; }
  32016. /* */ if (_ref === 13 || _ref === 14) { $s = 30; continue; }
  32017. /* */ if (_ref === 22) { $s = 31; continue; }
  32018. /* */ $s = 32; continue;
  32019. /* if (_ref === 24) { */ case 25:
  32020. if (tag === "tag:yaml.org,2002:binary") {
  32021. out.SetString($assertType(resolved, $String));
  32022. good = true;
  32023. } else if (!($interfaceIsEqual(resolved, $ifaceNil))) {
  32024. out.SetString(n.value);
  32025. good = true;
  32026. }
  32027. $s = 32; continue;
  32028. /* } else if (_ref === 20) { */ case 26:
  32029. /* */ if ($interfaceIsEqual(resolved, $ifaceNil)) { $s = 33; continue; }
  32030. /* */ $s = 34; continue;
  32031. /* if ($interfaceIsEqual(resolved, $ifaceNil)) { */ case 33:
  32032. _r$7 = reflect.Zero(out.Type()); /* */ $s = 36; case 36: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
  32033. $r = out.Set(_r$7); /* */ $s = 37; case 37: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  32034. $s = 35; continue;
  32035. /* } else { */ case 34:
  32036. _r$8 = reflect.ValueOf(resolved); /* */ $s = 38; case 38: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
  32037. $r = out.Set(_r$8); /* */ $s = 39; case 39: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  32038. /* } */ case 35:
  32039. good = true;
  32040. $s = 32; continue;
  32041. /* } else if (_ref === 2 || _ref === 3 || _ref === 4 || _ref === 5 || _ref === 6) { */ case 27:
  32042. _ref$1 = resolved;
  32043. if ($assertType(_ref$1, $Int, true)[1]) {
  32044. resolved$1 = _ref$1.$val;
  32045. if (!out.OverflowInt(new $Int64(0, resolved$1))) {
  32046. out.SetInt(new $Int64(0, resolved$1));
  32047. good = true;
  32048. }
  32049. } else if ($assertType(_ref$1, $Int64, true)[1]) {
  32050. resolved$2 = _ref$1.$val;
  32051. if (!out.OverflowInt(resolved$2)) {
  32052. out.SetInt(resolved$2);
  32053. good = true;
  32054. }
  32055. } else if ($assertType(_ref$1, $Uint64, true)[1]) {
  32056. resolved$3 = _ref$1.$val;
  32057. if ((resolved$3.$high < 2147483647 || (resolved$3.$high === 2147483647 && resolved$3.$low <= 4294967295)) && !out.OverflowInt(new $Int64(resolved$3.$high, resolved$3.$low))) {
  32058. out.SetInt(new $Int64(resolved$3.$high, resolved$3.$low));
  32059. good = true;
  32060. }
  32061. } else if ($assertType(_ref$1, $Float64, true)[1]) {
  32062. resolved$4 = _ref$1.$val;
  32063. if (resolved$4 <= 9.223372036854776e+18 && !out.OverflowInt(new $Int64(0, resolved$4))) {
  32064. out.SetInt(new $Int64(0, resolved$4));
  32065. good = true;
  32066. }
  32067. } else if ($assertType(_ref$1, $String, true)[1]) {
  32068. resolved$5 = _ref$1.$val;
  32069. if ($interfaceIsEqual(out.Type(), durationType)) {
  32070. _tuple$4 = time.ParseDuration(resolved$5); d$1 = _tuple$4[0]; err$2 = _tuple$4[1];
  32071. if ($interfaceIsEqual(err$2, $ifaceNil)) {
  32072. out.SetInt(new $Int64(d$1.$high, d$1.$low));
  32073. good = true;
  32074. }
  32075. }
  32076. }
  32077. $s = 32; continue;
  32078. /* } else if (_ref === 7 || _ref === 8 || _ref === 9 || _ref === 10 || _ref === 11 || _ref === 12) { */ case 28:
  32079. _ref$2 = resolved;
  32080. if ($assertType(_ref$2, $Int, true)[1]) {
  32081. resolved$6 = _ref$2.$val;
  32082. if (resolved$6 >= 0 && !out.OverflowUint(new $Uint64(0, resolved$6))) {
  32083. out.SetUint(new $Uint64(0, resolved$6));
  32084. good = true;
  32085. }
  32086. } else if ($assertType(_ref$2, $Int64, true)[1]) {
  32087. resolved$7 = _ref$2.$val;
  32088. if ((resolved$7.$high > 0 || (resolved$7.$high === 0 && resolved$7.$low >= 0)) && !out.OverflowUint(new $Uint64(resolved$7.$high, resolved$7.$low))) {
  32089. out.SetUint(new $Uint64(resolved$7.$high, resolved$7.$low));
  32090. good = true;
  32091. }
  32092. } else if ($assertType(_ref$2, $Uint64, true)[1]) {
  32093. resolved$8 = _ref$2.$val;
  32094. if (!out.OverflowUint(resolved$8)) {
  32095. out.SetUint(resolved$8);
  32096. good = true;
  32097. }
  32098. } else if ($assertType(_ref$2, $Float64, true)[1]) {
  32099. resolved$9 = _ref$2.$val;
  32100. if (resolved$9 <= 1.8446744073709552e+19 && !out.OverflowUint(new $Uint64(0, resolved$9))) {
  32101. out.SetUint(new $Uint64(0, resolved$9));
  32102. good = true;
  32103. }
  32104. }
  32105. $s = 32; continue;
  32106. /* } else if (_ref === 1) { */ case 29:
  32107. _ref$3 = resolved;
  32108. if ($assertType(_ref$3, $Bool, true)[1]) {
  32109. resolved$10 = _ref$3.$val;
  32110. out.SetBool(resolved$10);
  32111. good = true;
  32112. }
  32113. $s = 32; continue;
  32114. /* } else if (_ref === 13 || _ref === 14) { */ case 30:
  32115. _ref$4 = resolved;
  32116. if ($assertType(_ref$4, $Int, true)[1]) {
  32117. resolved$11 = _ref$4.$val;
  32118. out.SetFloat(resolved$11);
  32119. good = true;
  32120. } else if ($assertType(_ref$4, $Int64, true)[1]) {
  32121. resolved$12 = _ref$4.$val;
  32122. out.SetFloat($flatten64(resolved$12));
  32123. good = true;
  32124. } else if ($assertType(_ref$4, $Uint64, true)[1]) {
  32125. resolved$13 = _ref$4.$val;
  32126. out.SetFloat($flatten64(resolved$13));
  32127. good = true;
  32128. } else if ($assertType(_ref$4, $Float64, true)[1]) {
  32129. resolved$14 = _ref$4.$val;
  32130. out.SetFloat(resolved$14);
  32131. good = true;
  32132. }
  32133. $s = 32; continue;
  32134. /* } else if (_ref === 22) { */ case 31:
  32135. _r$9 = out.Type().Elem(); /* */ $s = 42; case 42: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
  32136. /* */ if ($interfaceIsEqual(_r$9, reflect.TypeOf(resolved))) { $s = 40; continue; }
  32137. /* */ $s = 41; continue;
  32138. /* if ($interfaceIsEqual(_r$9, reflect.TypeOf(resolved))) { */ case 40:
  32139. _r$10 = out.Type().Elem(); /* */ $s = 43; case 43: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
  32140. _r$11 = reflect.New(_r$10); /* */ $s = 44; case 44: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
  32141. elem = _r$11;
  32142. _r$12 = elem.Elem(); /* */ $s = 45; case 45: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; }
  32143. _r$13 = reflect.ValueOf(resolved); /* */ $s = 46; case 46: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; }
  32144. $r = _r$12.Set(_r$13); /* */ $s = 47; case 47: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  32145. $r = out.Set(elem); /* */ $s = 48; case 48: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  32146. good = true;
  32147. /* } */ case 41:
  32148. /* } */ case 32:
  32149. /* */ if (!good) { $s = 49; continue; }
  32150. /* */ $s = 50; continue;
  32151. /* if (!good) { */ case 49:
  32152. $r = d.terror(n, tag, out); /* */ $s = 51; case 51: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  32153. /* } */ case 50:
  32154. good = good;
  32155. return good;
  32156. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: decoder.ptr.prototype.scalar }; } $f.$ptr = $ptr; $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$12 = _r$12; $f._r$13 = _r$13; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._r$9 = _r$9; $f._ref = _ref; $f._ref$1 = _ref$1; $f._ref$2 = _ref$2; $f._ref$3 = _ref$3; $f._ref$4 = _ref$4; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f._tuple$4 = _tuple$4; $f.d = d; $f.d$1 = d$1; $f.data = data; $f.elem = elem; $f.err = err; $f.err$1 = err$1; $f.err$2 = err$2; $f.good = good; $f.n = n; $f.ok = ok; $f.ok$1 = ok$1; $f.out = out; $f.resolved = resolved; $f.resolved$1 = resolved$1; $f.resolved$10 = resolved$10; $f.resolved$11 = resolved$11; $f.resolved$12 = resolved$12; $f.resolved$13 = resolved$13; $f.resolved$14 = resolved$14; $f.resolved$2 = resolved$2; $f.resolved$3 = resolved$3; $f.resolved$4 = resolved$4; $f.resolved$5 = resolved$5; $f.resolved$6 = resolved$6; $f.resolved$7 = resolved$7; $f.resolved$8 = resolved$8; $f.resolved$9 = resolved$9; $f.s = s; $f.tag = tag; $f.u = u; $f.$s = $s; $f.$r = $r; return $f;
  32157. };
  32158. decoder.prototype.scalar = function(n, out) { return this.$val.scalar(n, out); };
  32159. settableValueOf = function(i) {
  32160. var $ptr, _r$2, _r$3, _r$4, i, sv, v, $s, $r;
  32161. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; i = $f.i; sv = $f.sv; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  32162. _r$2 = reflect.ValueOf(i); /* */ $s = 1; case 1: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  32163. v = _r$2;
  32164. _r$3 = reflect.New(v.Type()); /* */ $s = 2; case 2: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  32165. _r$4 = _r$3.Elem(); /* */ $s = 3; case 3: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
  32166. sv = _r$4;
  32167. $r = sv.Set(v); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  32168. return sv;
  32169. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: settableValueOf }; } $f.$ptr = $ptr; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f.i = i; $f.sv = sv; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
  32170. };
  32171. decoder.ptr.prototype.sequence = function(n, out) {
  32172. var $ptr, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, d, e, et, good, i, iface, j, l, n, ok, out, x$1, $s, $r;
  32173. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _r$9 = $f._r$9; _ref = $f._ref; d = $f.d; e = $f.e; et = $f.et; good = $f.good; i = $f.i; iface = $f.iface; j = $f.j; l = $f.l; n = $f.n; ok = $f.ok; out = $f.out; x$1 = $f.x$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  32174. good = false;
  32175. d = this;
  32176. out = out;
  32177. l = n.children.$length;
  32178. iface = new reflect.Value.ptr();
  32179. _ref = out.Kind();
  32180. /* */ if (_ref === 23) { $s = 1; continue; }
  32181. /* */ if (_ref === 20) { $s = 2; continue; }
  32182. /* */ $s = 3; continue;
  32183. /* if (_ref === 23) { */ case 1:
  32184. _r$2 = reflect.MakeSlice(out.Type(), l, l); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  32185. $r = out.Set(_r$2); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  32186. $s = 4; continue;
  32187. /* } else if (_ref === 20) { */ case 2:
  32188. iface = out;
  32189. _r$3 = settableValueOf($makeSlice(sliceType$10, l)); /* */ $s = 7; case 7: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  32190. out = _r$3;
  32191. $s = 4; continue;
  32192. /* } else { */ case 3:
  32193. $r = d.terror(n, "tag:yaml.org,2002:seq", out); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  32194. good = false;
  32195. return good;
  32196. /* } */ case 4:
  32197. _r$4 = out.Type().Elem(); /* */ $s = 9; case 9: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
  32198. et = _r$4;
  32199. j = 0;
  32200. i = 0;
  32201. /* while (true) { */ case 10:
  32202. /* if (!(i < l)) { break; } */ if(!(i < l)) { $s = 11; continue; }
  32203. _r$5 = reflect.New(et); /* */ $s = 12; case 12: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
  32204. _r$6 = _r$5.Elem(); /* */ $s = 13; case 13: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
  32205. e = _r$6;
  32206. _r$7 = d.unmarshal((x$1 = n.children, ((i < 0 || i >= x$1.$length) ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + i])), e); /* */ $s = 14; case 14: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
  32207. ok = _r$7;
  32208. /* */ if (ok) { $s = 15; continue; }
  32209. /* */ $s = 16; continue;
  32210. /* if (ok) { */ case 15:
  32211. _r$8 = out.Index(j); /* */ $s = 17; case 17: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
  32212. $r = _r$8.Set(e); /* */ $s = 18; case 18: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  32213. j = j + (1) >> 0;
  32214. /* } */ case 16:
  32215. i = i + (1) >> 0;
  32216. /* } */ $s = 10; continue; case 11:
  32217. _r$9 = out.Slice(0, j); /* */ $s = 19; case 19: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
  32218. $r = out.Set(_r$9); /* */ $s = 20; case 20: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  32219. /* */ if (iface.IsValid()) { $s = 21; continue; }
  32220. /* */ $s = 22; continue;
  32221. /* if (iface.IsValid()) { */ case 21:
  32222. $r = iface.Set(out); /* */ $s = 23; case 23: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  32223. /* } */ case 22:
  32224. good = true;
  32225. return good;
  32226. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: decoder.ptr.prototype.sequence }; } $f.$ptr = $ptr; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._r$9 = _r$9; $f._ref = _ref; $f.d = d; $f.e = e; $f.et = et; $f.good = good; $f.i = i; $f.iface = iface; $f.j = j; $f.l = l; $f.n = n; $f.ok = ok; $f.out = out; $f.x$1 = x$1; $f.$s = $s; $f.$r = $r; return $f;
  32227. };
  32228. decoder.prototype.sequence = function(n, out) { return this.$val.sequence(n, out); };
  32229. decoder.ptr.prototype.mapping = function(n, out) {
  32230. var $ptr, _arg, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$16, _r$17, _r$18, _r$19, _r$2, _r$20, _r$21, _r$22, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _v, d, e, et, good, i, iface, k, kkind, kt, l, mapType$1, n, out, outt, slicev, x$1, x$2, x$3, x$4, x$5, x$6, $s, $r;
  32231. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _arg = $f._arg; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$12 = $f._r$12; _r$13 = $f._r$13; _r$14 = $f._r$14; _r$15 = $f._r$15; _r$16 = $f._r$16; _r$17 = $f._r$17; _r$18 = $f._r$18; _r$19 = $f._r$19; _r$2 = $f._r$2; _r$20 = $f._r$20; _r$21 = $f._r$21; _r$22 = $f._r$22; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _r$9 = $f._r$9; _ref = $f._ref; _v = $f._v; d = $f.d; e = $f.e; et = $f.et; good = $f.good; i = $f.i; iface = $f.iface; k = $f.k; kkind = $f.kkind; kt = $f.kt; l = $f.l; mapType$1 = $f.mapType$1; n = $f.n; out = $f.out; outt = $f.outt; slicev = $f.slicev; x$1 = $f.x$1; x$2 = $f.x$2; x$3 = $f.x$3; x$4 = $f.x$4; x$5 = $f.x$5; x$6 = $f.x$6; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  32232. good = false;
  32233. d = this;
  32234. out = out;
  32235. _ref = out.Kind();
  32236. /* */ if (_ref === 25) { $s = 1; continue; }
  32237. /* */ if (_ref === 23) { $s = 2; continue; }
  32238. /* */ if (_ref === 21) { $s = 3; continue; }
  32239. /* */ if (_ref === 20) { $s = 4; continue; }
  32240. /* */ $s = 5; continue;
  32241. /* if (_ref === 25) { */ case 1:
  32242. _r$2 = d.mappingStruct(n, out); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  32243. good = _r$2;
  32244. return good;
  32245. $s = 6; continue;
  32246. /* } else if (_ref === 23) { */ case 2:
  32247. _r$3 = d.mappingSlice(n, out); /* */ $s = 8; case 8: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  32248. good = _r$3;
  32249. return good;
  32250. $s = 6; continue;
  32251. /* } else if (_ref === 21) { */ case 3:
  32252. $s = 6; continue;
  32253. /* } else if (_ref === 20) { */ case 4:
  32254. _r$4 = d.mapType.Kind(); /* */ $s = 12; case 12: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
  32255. /* */ if (_r$4 === 21) { $s = 9; continue; }
  32256. /* */ $s = 10; continue;
  32257. /* if (_r$4 === 21) { */ case 9:
  32258. iface = out;
  32259. _r$5 = reflect.MakeMap(d.mapType); /* */ $s = 13; case 13: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
  32260. out = _r$5;
  32261. $r = iface.Set(out); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  32262. $s = 11; continue;
  32263. /* } else { */ case 10:
  32264. _r$6 = reflect.New(d.mapType); /* */ $s = 15; case 15: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
  32265. _r$7 = _r$6.Elem(); /* */ $s = 16; case 16: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
  32266. slicev = _r$7;
  32267. _r$8 = d.mappingSlice(n, slicev); /* */ $s = 19; case 19: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
  32268. /* */ if (!_r$8) { $s = 17; continue; }
  32269. /* */ $s = 18; continue;
  32270. /* if (!_r$8) { */ case 17:
  32271. good = false;
  32272. return good;
  32273. /* } */ case 18:
  32274. $r = out.Set(slicev); /* */ $s = 20; case 20: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  32275. good = true;
  32276. return good;
  32277. /* } */ case 11:
  32278. $s = 6; continue;
  32279. /* } else { */ case 5:
  32280. $r = d.terror(n, "tag:yaml.org,2002:map", out); /* */ $s = 21; case 21: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  32281. good = false;
  32282. return good;
  32283. /* } */ case 6:
  32284. outt = out.Type();
  32285. _r$9 = outt.Key(); /* */ $s = 22; case 22: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
  32286. kt = _r$9;
  32287. _r$10 = outt.Elem(); /* */ $s = 23; case 23: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
  32288. et = _r$10;
  32289. mapType$1 = d.mapType;
  32290. _r$11 = outt.Key(); /* */ $s = 27; case 27: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
  32291. if (!($interfaceIsEqual(_r$11, ifaceType))) { _v = false; $s = 26; continue s; }
  32292. _r$12 = outt.Elem(); /* */ $s = 28; case 28: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; }
  32293. _v = $interfaceIsEqual(_r$12, ifaceType); case 26:
  32294. /* */ if (_v) { $s = 24; continue; }
  32295. /* */ $s = 25; continue;
  32296. /* if (_v) { */ case 24:
  32297. d.mapType = outt;
  32298. /* } */ case 25:
  32299. /* */ if (out.IsNil()) { $s = 29; continue; }
  32300. /* */ $s = 30; continue;
  32301. /* if (out.IsNil()) { */ case 29:
  32302. _r$13 = reflect.MakeMap(outt); /* */ $s = 31; case 31: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; }
  32303. $r = out.Set(_r$13); /* */ $s = 32; case 32: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  32304. /* } */ case 30:
  32305. l = n.children.$length;
  32306. i = 0;
  32307. /* while (true) { */ case 33:
  32308. /* if (!(i < l)) { break; } */ if(!(i < l)) { $s = 34; continue; }
  32309. /* */ if (isMerge((x$1 = n.children, ((i < 0 || i >= x$1.$length) ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + i])))) { $s = 35; continue; }
  32310. /* */ $s = 36; continue;
  32311. /* if (isMerge((x$1 = n.children, ((i < 0 || i >= x$1.$length) ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + i])))) { */ case 35:
  32312. $r = d.merge((x$2 = n.children, x$3 = i + 1 >> 0, ((x$3 < 0 || x$3 >= x$2.$length) ? $throwRuntimeError("index out of range") : x$2.$array[x$2.$offset + x$3])), out); /* */ $s = 37; case 37: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  32313. i = i + (2) >> 0;
  32314. /* continue; */ $s = 33; continue;
  32315. /* } */ case 36:
  32316. _r$14 = reflect.New(kt); /* */ $s = 38; case 38: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; }
  32317. _r$15 = _r$14.Elem(); /* */ $s = 39; case 39: if($c) { $c = false; _r$15 = _r$15.$blk(); } if (_r$15 && _r$15.$blk !== undefined) { break s; }
  32318. k = _r$15;
  32319. _r$16 = d.unmarshal((x$4 = n.children, ((i < 0 || i >= x$4.$length) ? $throwRuntimeError("index out of range") : x$4.$array[x$4.$offset + i])), k); /* */ $s = 42; case 42: if($c) { $c = false; _r$16 = _r$16.$blk(); } if (_r$16 && _r$16.$blk !== undefined) { break s; }
  32320. /* */ if (_r$16) { $s = 40; continue; }
  32321. /* */ $s = 41; continue;
  32322. /* if (_r$16) { */ case 40:
  32323. kkind = k.Kind();
  32324. /* */ if (kkind === 20) { $s = 43; continue; }
  32325. /* */ $s = 44; continue;
  32326. /* if (kkind === 20) { */ case 43:
  32327. _r$17 = k.Elem(); /* */ $s = 45; case 45: if($c) { $c = false; _r$17 = _r$17.$blk(); } if (_r$17 && _r$17.$blk !== undefined) { break s; }
  32328. _r$18 = _r$17.Kind(); /* */ $s = 46; case 46: if($c) { $c = false; _r$18 = _r$18.$blk(); } if (_r$18 && _r$18.$blk !== undefined) { break s; }
  32329. kkind = _r$18;
  32330. /* } */ case 44:
  32331. /* */ if ((kkind === 21) || (kkind === 23)) { $s = 47; continue; }
  32332. /* */ $s = 48; continue;
  32333. /* if ((kkind === 21) || (kkind === 23)) { */ case 47:
  32334. _r$19 = k.Interface(); /* */ $s = 49; case 49: if($c) { $c = false; _r$19 = _r$19.$blk(); } if (_r$19 && _r$19.$blk !== undefined) { break s; }
  32335. _arg = _r$19;
  32336. $r = failf("invalid map key: %#v", new sliceType$10([_arg])); /* */ $s = 50; case 50: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  32337. /* } */ case 48:
  32338. _r$20 = reflect.New(et); /* */ $s = 51; case 51: if($c) { $c = false; _r$20 = _r$20.$blk(); } if (_r$20 && _r$20.$blk !== undefined) { break s; }
  32339. _r$21 = _r$20.Elem(); /* */ $s = 52; case 52: if($c) { $c = false; _r$21 = _r$21.$blk(); } if (_r$21 && _r$21.$blk !== undefined) { break s; }
  32340. e = _r$21;
  32341. _r$22 = d.unmarshal((x$5 = n.children, x$6 = i + 1 >> 0, ((x$6 < 0 || x$6 >= x$5.$length) ? $throwRuntimeError("index out of range") : x$5.$array[x$5.$offset + x$6])), e); /* */ $s = 55; case 55: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; }
  32342. /* */ if (_r$22) { $s = 53; continue; }
  32343. /* */ $s = 54; continue;
  32344. /* if (_r$22) { */ case 53:
  32345. $r = out.SetMapIndex(k, e); /* */ $s = 56; case 56: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  32346. /* } */ case 54:
  32347. /* } */ case 41:
  32348. i = i + (2) >> 0;
  32349. /* } */ $s = 33; continue; case 34:
  32350. d.mapType = mapType$1;
  32351. good = true;
  32352. return good;
  32353. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: decoder.ptr.prototype.mapping }; } $f.$ptr = $ptr; $f._arg = _arg; $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$12 = _r$12; $f._r$13 = _r$13; $f._r$14 = _r$14; $f._r$15 = _r$15; $f._r$16 = _r$16; $f._r$17 = _r$17; $f._r$18 = _r$18; $f._r$19 = _r$19; $f._r$2 = _r$2; $f._r$20 = _r$20; $f._r$21 = _r$21; $f._r$22 = _r$22; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._r$9 = _r$9; $f._ref = _ref; $f._v = _v; $f.d = d; $f.e = e; $f.et = et; $f.good = good; $f.i = i; $f.iface = iface; $f.k = k; $f.kkind = kkind; $f.kt = kt; $f.l = l; $f.mapType$1 = mapType$1; $f.n = n; $f.out = out; $f.outt = outt; $f.slicev = slicev; $f.x$1 = x$1; $f.x$2 = x$2; $f.x$3 = x$3; $f.x$4 = x$4; $f.x$5 = x$5; $f.x$6 = x$6; $f.$s = $s; $f.$r = $r; return $f;
  32354. };
  32355. decoder.prototype.mapping = function(n, out) { return this.$val.mapping(n, out); };
  32356. decoder.ptr.prototype.mappingSlice = function(n, out) {
  32357. var $ptr, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, d, good, i, item, k, l, mapType$1, n, out, outt, slice, v, x$1, x$2, x$3, x$4, x$5, x$6, $s, $r;
  32358. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _r$9 = $f._r$9; d = $f.d; good = $f.good; i = $f.i; item = $f.item; k = $f.k; l = $f.l; mapType$1 = $f.mapType$1; n = $f.n; out = $f.out; outt = $f.outt; slice = $f.slice; v = $f.v; x$1 = $f.x$1; x$2 = $f.x$2; x$3 = $f.x$3; x$4 = $f.x$4; x$5 = $f.x$5; x$6 = $f.x$6; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  32359. good = false;
  32360. d = this;
  32361. out = out;
  32362. outt = out.Type();
  32363. _r$2 = outt.Elem(); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  32364. /* */ if (!($interfaceIsEqual(_r$2, mapItemType))) { $s = 1; continue; }
  32365. /* */ $s = 2; continue;
  32366. /* if (!($interfaceIsEqual(_r$2, mapItemType))) { */ case 1:
  32367. $r = d.terror(n, "tag:yaml.org,2002:map", out); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  32368. good = false;
  32369. return good;
  32370. /* } */ case 2:
  32371. mapType$1 = d.mapType;
  32372. d.mapType = outt;
  32373. slice = sliceType$13.nil;
  32374. l = n.children.$length;
  32375. i = 0;
  32376. /* while (true) { */ case 5:
  32377. /* if (!(i < l)) { break; } */ if(!(i < l)) { $s = 6; continue; }
  32378. /* */ if (isMerge((x$1 = n.children, ((i < 0 || i >= x$1.$length) ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + i])))) { $s = 7; continue; }
  32379. /* */ $s = 8; continue;
  32380. /* if (isMerge((x$1 = n.children, ((i < 0 || i >= x$1.$length) ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + i])))) { */ case 7:
  32381. $r = d.merge((x$2 = n.children, x$3 = i + 1 >> 0, ((x$3 < 0 || x$3 >= x$2.$length) ? $throwRuntimeError("index out of range") : x$2.$array[x$2.$offset + x$3])), out); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  32382. i = i + (2) >> 0;
  32383. /* continue; */ $s = 5; continue;
  32384. /* } */ case 8:
  32385. item = new MapItem.ptr($ifaceNil, $ifaceNil);
  32386. _r$3 = reflect.ValueOf((item.$ptr_Key || (item.$ptr_Key = new ptrType$7(function() { return this.$target.Key; }, function($v) { this.$target.Key = $v; }, item)))); /* */ $s = 10; case 10: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  32387. _r$4 = _r$3.Elem(); /* */ $s = 11; case 11: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
  32388. k = _r$4;
  32389. _r$5 = d.unmarshal((x$4 = n.children, ((i < 0 || i >= x$4.$length) ? $throwRuntimeError("index out of range") : x$4.$array[x$4.$offset + i])), k); /* */ $s = 14; case 14: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
  32390. /* */ if (_r$5) { $s = 12; continue; }
  32391. /* */ $s = 13; continue;
  32392. /* if (_r$5) { */ case 12:
  32393. _r$6 = reflect.ValueOf((item.$ptr_Value || (item.$ptr_Value = new ptrType$7(function() { return this.$target.Value; }, function($v) { this.$target.Value = $v; }, item)))); /* */ $s = 15; case 15: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
  32394. _r$7 = _r$6.Elem(); /* */ $s = 16; case 16: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
  32395. v = _r$7;
  32396. _r$8 = d.unmarshal((x$5 = n.children, x$6 = i + 1 >> 0, ((x$6 < 0 || x$6 >= x$5.$length) ? $throwRuntimeError("index out of range") : x$5.$array[x$5.$offset + x$6])), v); /* */ $s = 19; case 19: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
  32397. /* */ if (_r$8) { $s = 17; continue; }
  32398. /* */ $s = 18; continue;
  32399. /* if (_r$8) { */ case 17:
  32400. slice = $append(slice, item);
  32401. /* } */ case 18:
  32402. /* } */ case 13:
  32403. i = i + (2) >> 0;
  32404. /* } */ $s = 5; continue; case 6:
  32405. _r$9 = reflect.ValueOf(slice); /* */ $s = 20; case 20: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
  32406. $r = out.Set(_r$9); /* */ $s = 21; case 21: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  32407. d.mapType = mapType$1;
  32408. good = true;
  32409. return good;
  32410. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: decoder.ptr.prototype.mappingSlice }; } $f.$ptr = $ptr; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._r$9 = _r$9; $f.d = d; $f.good = good; $f.i = i; $f.item = item; $f.k = k; $f.l = l; $f.mapType$1 = mapType$1; $f.n = n; $f.out = out; $f.outt = outt; $f.slice = slice; $f.v = v; $f.x$1 = x$1; $f.x$2 = x$2; $f.x$3 = x$3; $f.x$4 = x$4; $f.x$5 = x$5; $f.x$6 = x$6; $f.$s = $s; $f.$r = $r; return $f;
  32411. };
  32412. decoder.prototype.mappingSlice = function(n, out) { return this.$val.mappingSlice(n, out); };
  32413. decoder.ptr.prototype.mappingStruct = function(n, out) {
  32414. var $ptr, _entry, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$16, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _tuple, _tuple$1, d, elemType, err, field, good, i, info, inlineMap, l, n, name, ni, ok, out, sinfo, value, x$1, x$2, x$3, x$4, x$5, x$6, x$7, $s, $r;
  32415. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _entry = $f._entry; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$12 = $f._r$12; _r$13 = $f._r$13; _r$14 = $f._r$14; _r$15 = $f._r$15; _r$16 = $f._r$16; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _r$9 = $f._r$9; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; d = $f.d; elemType = $f.elemType; err = $f.err; field = $f.field; good = $f.good; i = $f.i; info = $f.info; inlineMap = $f.inlineMap; l = $f.l; n = $f.n; name = $f.name; ni = $f.ni; ok = $f.ok; out = $f.out; sinfo = $f.sinfo; value = $f.value; x$1 = $f.x$1; x$2 = $f.x$2; x$3 = $f.x$3; x$4 = $f.x$4; x$5 = $f.x$5; x$6 = $f.x$6; x$7 = $f.x$7; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  32416. good = false;
  32417. d = this;
  32418. out = out;
  32419. _r$2 = getStructInfo(out.Type()); /* */ $s = 1; case 1: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  32420. _tuple = _r$2; sinfo = _tuple[0]; err = _tuple[1];
  32421. if (!($interfaceIsEqual(err, $ifaceNil))) {
  32422. $panic(err);
  32423. }
  32424. _r$3 = settableValueOf(new $String("")); /* */ $s = 2; case 2: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  32425. name = _r$3;
  32426. l = n.children.$length;
  32427. inlineMap = new reflect.Value.ptr();
  32428. elemType = $ifaceNil;
  32429. /* */ if (!((sinfo.InlineMap === -1))) { $s = 3; continue; }
  32430. /* */ $s = 4; continue;
  32431. /* if (!((sinfo.InlineMap === -1))) { */ case 3:
  32432. _r$4 = out.Field(sinfo.InlineMap); /* */ $s = 5; case 5: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
  32433. inlineMap = _r$4;
  32434. _r$5 = reflect.New(inlineMap.Type()); /* */ $s = 6; case 6: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
  32435. _r$6 = _r$5.Elem(); /* */ $s = 7; case 7: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
  32436. $r = inlineMap.Set(_r$6); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  32437. _r$7 = inlineMap.Type().Elem(); /* */ $s = 9; case 9: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
  32438. elemType = _r$7;
  32439. /* } */ case 4:
  32440. i = 0;
  32441. /* while (true) { */ case 10:
  32442. /* if (!(i < l)) { break; } */ if(!(i < l)) { $s = 11; continue; }
  32443. ni = (x$1 = n.children, ((i < 0 || i >= x$1.$length) ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + i]));
  32444. /* */ if (isMerge(ni)) { $s = 12; continue; }
  32445. /* */ $s = 13; continue;
  32446. /* if (isMerge(ni)) { */ case 12:
  32447. $r = d.merge((x$2 = n.children, x$3 = i + 1 >> 0, ((x$3 < 0 || x$3 >= x$2.$length) ? $throwRuntimeError("index out of range") : x$2.$array[x$2.$offset + x$3])), out); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  32448. i = i + (2) >> 0;
  32449. /* continue; */ $s = 10; continue;
  32450. /* } */ case 13:
  32451. _r$8 = d.unmarshal(ni, name); /* */ $s = 17; case 17: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
  32452. /* */ if (!_r$8) { $s = 15; continue; }
  32453. /* */ $s = 16; continue;
  32454. /* if (!_r$8) { */ case 15:
  32455. i = i + (2) >> 0;
  32456. /* continue; */ $s = 10; continue;
  32457. /* } */ case 16:
  32458. _r$9 = name.String(); /* */ $s = 18; case 18: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
  32459. _tuple$1 = (_entry = sinfo.FieldsMap[_r$9], _entry !== undefined ? [_entry.v, true] : [new fieldInfo.ptr(), false]); info = $clone(_tuple$1[0], fieldInfo); ok = _tuple$1[1];
  32460. /* */ if (ok) { $s = 19; continue; }
  32461. /* */ if (!((sinfo.InlineMap === -1))) { $s = 20; continue; }
  32462. /* */ $s = 21; continue;
  32463. /* if (ok) { */ case 19:
  32464. field = new reflect.Value.ptr();
  32465. /* */ if (info.Inline === sliceType$3.nil) { $s = 22; continue; }
  32466. /* */ $s = 23; continue;
  32467. /* if (info.Inline === sliceType$3.nil) { */ case 22:
  32468. _r$10 = out.Field(info.Num); /* */ $s = 25; case 25: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
  32469. field = _r$10;
  32470. $s = 24; continue;
  32471. /* } else { */ case 23:
  32472. _r$11 = out.FieldByIndex(info.Inline); /* */ $s = 26; case 26: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
  32473. field = _r$11;
  32474. /* } */ case 24:
  32475. _r$12 = d.unmarshal((x$4 = n.children, x$5 = i + 1 >> 0, ((x$5 < 0 || x$5 >= x$4.$length) ? $throwRuntimeError("index out of range") : x$4.$array[x$4.$offset + x$5])), field); /* */ $s = 27; case 27: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; }
  32476. _r$12;
  32477. $s = 21; continue;
  32478. /* } else if (!((sinfo.InlineMap === -1))) { */ case 20:
  32479. /* */ if (inlineMap.IsNil()) { $s = 28; continue; }
  32480. /* */ $s = 29; continue;
  32481. /* if (inlineMap.IsNil()) { */ case 28:
  32482. _r$13 = reflect.MakeMap(inlineMap.Type()); /* */ $s = 30; case 30: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; }
  32483. $r = inlineMap.Set(_r$13); /* */ $s = 31; case 31: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  32484. /* } */ case 29:
  32485. _r$14 = reflect.New(elemType); /* */ $s = 32; case 32: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; }
  32486. _r$15 = _r$14.Elem(); /* */ $s = 33; case 33: if($c) { $c = false; _r$15 = _r$15.$blk(); } if (_r$15 && _r$15.$blk !== undefined) { break s; }
  32487. value = _r$15;
  32488. _r$16 = d.unmarshal((x$6 = n.children, x$7 = i + 1 >> 0, ((x$7 < 0 || x$7 >= x$6.$length) ? $throwRuntimeError("index out of range") : x$6.$array[x$6.$offset + x$7])), value); /* */ $s = 34; case 34: if($c) { $c = false; _r$16 = _r$16.$blk(); } if (_r$16 && _r$16.$blk !== undefined) { break s; }
  32489. _r$16;
  32490. $r = inlineMap.SetMapIndex(name, value); /* */ $s = 35; case 35: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  32491. /* } */ case 21:
  32492. i = i + (2) >> 0;
  32493. /* } */ $s = 10; continue; case 11:
  32494. good = true;
  32495. return good;
  32496. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: decoder.ptr.prototype.mappingStruct }; } $f.$ptr = $ptr; $f._entry = _entry; $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$12 = _r$12; $f._r$13 = _r$13; $f._r$14 = _r$14; $f._r$15 = _r$15; $f._r$16 = _r$16; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._r$9 = _r$9; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.d = d; $f.elemType = elemType; $f.err = err; $f.field = field; $f.good = good; $f.i = i; $f.info = info; $f.inlineMap = inlineMap; $f.l = l; $f.n = n; $f.name = name; $f.ni = ni; $f.ok = ok; $f.out = out; $f.sinfo = sinfo; $f.value = value; $f.x$1 = x$1; $f.x$2 = x$2; $f.x$3 = x$3; $f.x$4 = x$4; $f.x$5 = x$5; $f.x$6 = x$6; $f.x$7 = x$7; $f.$s = $s; $f.$r = $r; return $f;
  32497. };
  32498. decoder.prototype.mappingStruct = function(n, out) { return this.$val.mappingStruct(n, out); };
  32499. failWantMap = function() {
  32500. var $ptr, $s, $r;
  32501. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  32502. $r = failf("map merge requires map or sequence of maps as the value", new sliceType$10([])); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  32503. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: failWantMap }; } $f.$ptr = $ptr; $f.$s = $s; $f.$r = $r; return $f;
  32504. };
  32505. decoder.ptr.prototype.merge = function(n, out) {
  32506. var $ptr, _entry, _entry$1, _r$2, _r$3, _r$4, _ref, _tuple, _tuple$1, an, an$1, d, i, n, ni, ok, ok$1, out, x$1, $s, $r;
  32507. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _entry = $f._entry; _entry$1 = $f._entry$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _ref = $f._ref; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; an = $f.an; an$1 = $f.an$1; d = $f.d; i = $f.i; n = $f.n; ni = $f.ni; ok = $f.ok; ok$1 = $f.ok$1; out = $f.out; x$1 = $f.x$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  32508. d = this;
  32509. out = out;
  32510. _ref = n.kind;
  32511. /* */ if (_ref === 2) { $s = 1; continue; }
  32512. /* */ if (_ref === 16) { $s = 2; continue; }
  32513. /* */ if (_ref === 4) { $s = 3; continue; }
  32514. /* */ $s = 4; continue;
  32515. /* if (_ref === 2) { */ case 1:
  32516. _r$2 = d.unmarshal(n, out); /* */ $s = 6; case 6: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  32517. _r$2;
  32518. $s = 5; continue;
  32519. /* } else if (_ref === 16) { */ case 2:
  32520. _tuple = (_entry = d.doc.anchors[n.value], _entry !== undefined ? [_entry.v, true] : [ptrType$4.nil, false]); an = _tuple[0]; ok = _tuple[1];
  32521. /* */ if (ok && !((an.kind === 2))) { $s = 7; continue; }
  32522. /* */ $s = 8; continue;
  32523. /* if (ok && !((an.kind === 2))) { */ case 7:
  32524. $r = failWantMap(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  32525. /* } */ case 8:
  32526. _r$3 = d.unmarshal(n, out); /* */ $s = 10; case 10: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  32527. _r$3;
  32528. $s = 5; continue;
  32529. /* } else if (_ref === 4) { */ case 3:
  32530. i = n.children.$length - 1 >> 0;
  32531. /* while (true) { */ case 11:
  32532. /* if (!(i >= 0)) { break; } */ if(!(i >= 0)) { $s = 12; continue; }
  32533. ni = (x$1 = n.children, ((i < 0 || i >= x$1.$length) ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + i]));
  32534. /* */ if (ni.kind === 16) { $s = 13; continue; }
  32535. /* */ if (!((ni.kind === 2))) { $s = 14; continue; }
  32536. /* */ $s = 15; continue;
  32537. /* if (ni.kind === 16) { */ case 13:
  32538. _tuple$1 = (_entry$1 = d.doc.anchors[ni.value], _entry$1 !== undefined ? [_entry$1.v, true] : [ptrType$4.nil, false]); an$1 = _tuple$1[0]; ok$1 = _tuple$1[1];
  32539. /* */ if (ok$1 && !((an$1.kind === 2))) { $s = 16; continue; }
  32540. /* */ $s = 17; continue;
  32541. /* if (ok$1 && !((an$1.kind === 2))) { */ case 16:
  32542. $r = failWantMap(); /* */ $s = 18; case 18: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  32543. /* } */ case 17:
  32544. $s = 15; continue;
  32545. /* } else if (!((ni.kind === 2))) { */ case 14:
  32546. $r = failWantMap(); /* */ $s = 19; case 19: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  32547. /* } */ case 15:
  32548. _r$4 = d.unmarshal(ni, out); /* */ $s = 20; case 20: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
  32549. _r$4;
  32550. i = i - (1) >> 0;
  32551. /* } */ $s = 11; continue; case 12:
  32552. $s = 5; continue;
  32553. /* } else { */ case 4:
  32554. $r = failWantMap(); /* */ $s = 21; case 21: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  32555. /* } */ case 5:
  32556. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: decoder.ptr.prototype.merge }; } $f.$ptr = $ptr; $f._entry = _entry; $f._entry$1 = _entry$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._ref = _ref; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.an = an; $f.an$1 = an$1; $f.d = d; $f.i = i; $f.n = n; $f.ni = ni; $f.ok = ok; $f.ok$1 = ok$1; $f.out = out; $f.x$1 = x$1; $f.$s = $s; $f.$r = $r; return $f;
  32557. };
  32558. decoder.prototype.merge = function(n, out) { return this.$val.merge(n, out); };
  32559. isMerge = function(n) {
  32560. var $ptr, n;
  32561. return (n.kind === 8) && n.value === "<<" && (n.implicit === true || n.tag === "tag:yaml.org,2002:merge");
  32562. };
  32563. peek_token = function(parser$1) {
  32564. var $ptr, _r$2, _v, parser$1, x$1, x$2, $s, $r;
  32565. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r$2 = $f._r$2; _v = $f._v; parser$1 = $f.parser$1; x$1 = $f.x$1; x$2 = $f.x$2; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  32566. if (parser$1.token_available) { _v = true; $s = 3; continue s; }
  32567. _r$2 = yaml_parser_fetch_more_tokens(parser$1); /* */ $s = 4; case 4: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  32568. _v = _r$2; case 3:
  32569. /* */ if (_v) { $s = 1; continue; }
  32570. /* */ $s = 2; continue;
  32571. /* if (_v) { */ case 1:
  32572. return (x$1 = parser$1.tokens, x$2 = parser$1.tokens_head, ((x$2 < 0 || x$2 >= x$1.$length) ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + x$2]));
  32573. /* } */ case 2:
  32574. return ptrType$10.nil;
  32575. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: peek_token }; } $f.$ptr = $ptr; $f._r$2 = _r$2; $f._v = _v; $f.parser$1 = parser$1; $f.x$1 = x$1; $f.x$2 = x$2; $f.$s = $s; $f.$r = $r; return $f;
  32576. };
  32577. skip_token = function(parser$1) {
  32578. var $ptr, parser$1, x$1, x$2;
  32579. parser$1.token_available = false;
  32580. parser$1.tokens_parsed = parser$1.tokens_parsed + (1) >> 0;
  32581. parser$1.stream_end_produced = (x$1 = parser$1.tokens, x$2 = parser$1.tokens_head, ((x$2 < 0 || x$2 >= x$1.$length) ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + x$2])).typ === 2;
  32582. parser$1.tokens_head = parser$1.tokens_head + (1) >> 0;
  32583. };
  32584. yaml_parser_parse = function(parser$1, event) {
  32585. var $ptr, _r$2, event, parser$1, $s, $r;
  32586. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r$2 = $f._r$2; event = $f.event; parser$1 = $f.parser$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  32587. $copy(event, new yaml_event_t.ptr(0, new yaml_mark_t.ptr(), new yaml_mark_t.ptr(), 0, ptrType$3.nil, sliceType.nil, sliceType$1.nil, sliceType$1.nil, sliceType$1.nil, false, false, 0), yaml_event_t);
  32588. if (parser$1.stream_end_produced || !((parser$1.error === 0)) || (parser$1.state === 23)) {
  32589. return true;
  32590. }
  32591. _r$2 = yaml_parser_state_machine(parser$1, event); /* */ $s = 1; case 1: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  32592. return _r$2;
  32593. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: yaml_parser_parse }; } $f.$ptr = $ptr; $f._r$2 = _r$2; $f.event = event; $f.parser$1 = parser$1; $f.$s = $s; $f.$r = $r; return $f;
  32594. };
  32595. yaml_parser_set_parser_error = function(parser$1, problem, problem_mark) {
  32596. var $ptr, parser$1, problem, problem_mark;
  32597. problem_mark = $clone(problem_mark, yaml_mark_t);
  32598. parser$1.error = 4;
  32599. parser$1.problem = problem;
  32600. $copy(parser$1.problem_mark, problem_mark, yaml_mark_t);
  32601. return false;
  32602. };
  32603. yaml_parser_set_parser_error_context = function(parser$1, context, context_mark, problem, problem_mark) {
  32604. var $ptr, context, context_mark, parser$1, problem, problem_mark;
  32605. problem_mark = $clone(problem_mark, yaml_mark_t);
  32606. context_mark = $clone(context_mark, yaml_mark_t);
  32607. parser$1.error = 4;
  32608. parser$1.context = context;
  32609. $copy(parser$1.context_mark, context_mark, yaml_mark_t);
  32610. parser$1.problem = problem;
  32611. $copy(parser$1.problem_mark, problem_mark, yaml_mark_t);
  32612. return false;
  32613. };
  32614. yaml_parser_state_machine = function(parser$1, event) {
  32615. var $ptr, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$16, _r$17, _r$18, _r$19, _r$2, _r$20, _r$21, _r$22, _r$23, _r$24, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, event, parser$1, $s, $r;
  32616. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$12 = $f._r$12; _r$13 = $f._r$13; _r$14 = $f._r$14; _r$15 = $f._r$15; _r$16 = $f._r$16; _r$17 = $f._r$17; _r$18 = $f._r$18; _r$19 = $f._r$19; _r$2 = $f._r$2; _r$20 = $f._r$20; _r$21 = $f._r$21; _r$22 = $f._r$22; _r$23 = $f._r$23; _r$24 = $f._r$24; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _r$9 = $f._r$9; _ref = $f._ref; event = $f.event; parser$1 = $f.parser$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  32617. _ref = parser$1.state;
  32618. /* */ if (_ref === 0) { $s = 1; continue; }
  32619. /* */ if (_ref === 1) { $s = 2; continue; }
  32620. /* */ if (_ref === 2) { $s = 3; continue; }
  32621. /* */ if (_ref === 3) { $s = 4; continue; }
  32622. /* */ if (_ref === 4) { $s = 5; continue; }
  32623. /* */ if (_ref === 5) { $s = 6; continue; }
  32624. /* */ if (_ref === 6) { $s = 7; continue; }
  32625. /* */ if (_ref === 7) { $s = 8; continue; }
  32626. /* */ if (_ref === 8) { $s = 9; continue; }
  32627. /* */ if (_ref === 9) { $s = 10; continue; }
  32628. /* */ if (_ref === 10) { $s = 11; continue; }
  32629. /* */ if (_ref === 11) { $s = 12; continue; }
  32630. /* */ if (_ref === 12) { $s = 13; continue; }
  32631. /* */ if (_ref === 13) { $s = 14; continue; }
  32632. /* */ if (_ref === 14) { $s = 15; continue; }
  32633. /* */ if (_ref === 15) { $s = 16; continue; }
  32634. /* */ if (_ref === 16) { $s = 17; continue; }
  32635. /* */ if (_ref === 17) { $s = 18; continue; }
  32636. /* */ if (_ref === 18) { $s = 19; continue; }
  32637. /* */ if (_ref === 19) { $s = 20; continue; }
  32638. /* */ if (_ref === 20) { $s = 21; continue; }
  32639. /* */ if (_ref === 21) { $s = 22; continue; }
  32640. /* */ if (_ref === 22) { $s = 23; continue; }
  32641. /* */ $s = 24; continue;
  32642. /* if (_ref === 0) { */ case 1:
  32643. _r$2 = yaml_parser_parse_stream_start(parser$1, event); /* */ $s = 26; case 26: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  32644. return _r$2;
  32645. $s = 25; continue;
  32646. /* } else if (_ref === 1) { */ case 2:
  32647. _r$3 = yaml_parser_parse_document_start(parser$1, event, true); /* */ $s = 27; case 27: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  32648. return _r$3;
  32649. $s = 25; continue;
  32650. /* } else if (_ref === 2) { */ case 3:
  32651. _r$4 = yaml_parser_parse_document_start(parser$1, event, false); /* */ $s = 28; case 28: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
  32652. return _r$4;
  32653. $s = 25; continue;
  32654. /* } else if (_ref === 3) { */ case 4:
  32655. _r$5 = yaml_parser_parse_document_content(parser$1, event); /* */ $s = 29; case 29: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
  32656. return _r$5;
  32657. $s = 25; continue;
  32658. /* } else if (_ref === 4) { */ case 5:
  32659. _r$6 = yaml_parser_parse_document_end(parser$1, event); /* */ $s = 30; case 30: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
  32660. return _r$6;
  32661. $s = 25; continue;
  32662. /* } else if (_ref === 5) { */ case 6:
  32663. _r$7 = yaml_parser_parse_node(parser$1, event, true, false); /* */ $s = 31; case 31: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
  32664. return _r$7;
  32665. $s = 25; continue;
  32666. /* } else if (_ref === 6) { */ case 7:
  32667. _r$8 = yaml_parser_parse_node(parser$1, event, true, true); /* */ $s = 32; case 32: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
  32668. return _r$8;
  32669. $s = 25; continue;
  32670. /* } else if (_ref === 7) { */ case 8:
  32671. _r$9 = yaml_parser_parse_node(parser$1, event, false, false); /* */ $s = 33; case 33: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
  32672. return _r$9;
  32673. $s = 25; continue;
  32674. /* } else if (_ref === 8) { */ case 9:
  32675. _r$10 = yaml_parser_parse_block_sequence_entry(parser$1, event, true); /* */ $s = 34; case 34: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
  32676. return _r$10;
  32677. $s = 25; continue;
  32678. /* } else if (_ref === 9) { */ case 10:
  32679. _r$11 = yaml_parser_parse_block_sequence_entry(parser$1, event, false); /* */ $s = 35; case 35: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
  32680. return _r$11;
  32681. $s = 25; continue;
  32682. /* } else if (_ref === 10) { */ case 11:
  32683. _r$12 = yaml_parser_parse_indentless_sequence_entry(parser$1, event); /* */ $s = 36; case 36: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; }
  32684. return _r$12;
  32685. $s = 25; continue;
  32686. /* } else if (_ref === 11) { */ case 12:
  32687. _r$13 = yaml_parser_parse_block_mapping_key(parser$1, event, true); /* */ $s = 37; case 37: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; }
  32688. return _r$13;
  32689. $s = 25; continue;
  32690. /* } else if (_ref === 12) { */ case 13:
  32691. _r$14 = yaml_parser_parse_block_mapping_key(parser$1, event, false); /* */ $s = 38; case 38: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; }
  32692. return _r$14;
  32693. $s = 25; continue;
  32694. /* } else if (_ref === 13) { */ case 14:
  32695. _r$15 = yaml_parser_parse_block_mapping_value(parser$1, event); /* */ $s = 39; case 39: if($c) { $c = false; _r$15 = _r$15.$blk(); } if (_r$15 && _r$15.$blk !== undefined) { break s; }
  32696. return _r$15;
  32697. $s = 25; continue;
  32698. /* } else if (_ref === 14) { */ case 15:
  32699. _r$16 = yaml_parser_parse_flow_sequence_entry(parser$1, event, true); /* */ $s = 40; case 40: if($c) { $c = false; _r$16 = _r$16.$blk(); } if (_r$16 && _r$16.$blk !== undefined) { break s; }
  32700. return _r$16;
  32701. $s = 25; continue;
  32702. /* } else if (_ref === 15) { */ case 16:
  32703. _r$17 = yaml_parser_parse_flow_sequence_entry(parser$1, event, false); /* */ $s = 41; case 41: if($c) { $c = false; _r$17 = _r$17.$blk(); } if (_r$17 && _r$17.$blk !== undefined) { break s; }
  32704. return _r$17;
  32705. $s = 25; continue;
  32706. /* } else if (_ref === 16) { */ case 17:
  32707. _r$18 = yaml_parser_parse_flow_sequence_entry_mapping_key(parser$1, event); /* */ $s = 42; case 42: if($c) { $c = false; _r$18 = _r$18.$blk(); } if (_r$18 && _r$18.$blk !== undefined) { break s; }
  32708. return _r$18;
  32709. $s = 25; continue;
  32710. /* } else if (_ref === 17) { */ case 18:
  32711. _r$19 = yaml_parser_parse_flow_sequence_entry_mapping_value(parser$1, event); /* */ $s = 43; case 43: if($c) { $c = false; _r$19 = _r$19.$blk(); } if (_r$19 && _r$19.$blk !== undefined) { break s; }
  32712. return _r$19;
  32713. $s = 25; continue;
  32714. /* } else if (_ref === 18) { */ case 19:
  32715. _r$20 = yaml_parser_parse_flow_sequence_entry_mapping_end(parser$1, event); /* */ $s = 44; case 44: if($c) { $c = false; _r$20 = _r$20.$blk(); } if (_r$20 && _r$20.$blk !== undefined) { break s; }
  32716. return _r$20;
  32717. $s = 25; continue;
  32718. /* } else if (_ref === 19) { */ case 20:
  32719. _r$21 = yaml_parser_parse_flow_mapping_key(parser$1, event, true); /* */ $s = 45; case 45: if($c) { $c = false; _r$21 = _r$21.$blk(); } if (_r$21 && _r$21.$blk !== undefined) { break s; }
  32720. return _r$21;
  32721. $s = 25; continue;
  32722. /* } else if (_ref === 20) { */ case 21:
  32723. _r$22 = yaml_parser_parse_flow_mapping_key(parser$1, event, false); /* */ $s = 46; case 46: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; }
  32724. return _r$22;
  32725. $s = 25; continue;
  32726. /* } else if (_ref === 21) { */ case 22:
  32727. _r$23 = yaml_parser_parse_flow_mapping_value(parser$1, event, false); /* */ $s = 47; case 47: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; }
  32728. return _r$23;
  32729. $s = 25; continue;
  32730. /* } else if (_ref === 22) { */ case 23:
  32731. _r$24 = yaml_parser_parse_flow_mapping_value(parser$1, event, true); /* */ $s = 48; case 48: if($c) { $c = false; _r$24 = _r$24.$blk(); } if (_r$24 && _r$24.$blk !== undefined) { break s; }
  32732. return _r$24;
  32733. $s = 25; continue;
  32734. /* } else { */ case 24:
  32735. $panic(new $String("invalid parser state"));
  32736. /* } */ case 25:
  32737. return false;
  32738. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: yaml_parser_state_machine }; } $f.$ptr = $ptr; $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$12 = _r$12; $f._r$13 = _r$13; $f._r$14 = _r$14; $f._r$15 = _r$15; $f._r$16 = _r$16; $f._r$17 = _r$17; $f._r$18 = _r$18; $f._r$19 = _r$19; $f._r$2 = _r$2; $f._r$20 = _r$20; $f._r$21 = _r$21; $f._r$22 = _r$22; $f._r$23 = _r$23; $f._r$24 = _r$24; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._r$9 = _r$9; $f._ref = _ref; $f.event = event; $f.parser$1 = parser$1; $f.$s = $s; $f.$r = $r; return $f;
  32739. };
  32740. yaml_parser_parse_stream_start = function(parser$1, event) {
  32741. var $ptr, _r$2, event, parser$1, token, $s, $r;
  32742. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r$2 = $f._r$2; event = $f.event; parser$1 = $f.parser$1; token = $f.token; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  32743. _r$2 = peek_token(parser$1); /* */ $s = 1; case 1: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  32744. token = _r$2;
  32745. if (token === ptrType$10.nil) {
  32746. return false;
  32747. }
  32748. if (!((token.typ === 1))) {
  32749. return yaml_parser_set_parser_error(parser$1, "did not find expected <stream-start>", token.start_mark);
  32750. }
  32751. parser$1.state = 1;
  32752. $copy(event, new yaml_event_t.ptr(1, $clone(token.start_mark, yaml_mark_t), $clone(token.end_mark, yaml_mark_t), token.encoding, ptrType$3.nil, sliceType.nil, sliceType$1.nil, sliceType$1.nil, sliceType$1.nil, false, false, 0), yaml_event_t);
  32753. skip_token(parser$1);
  32754. return true;
  32755. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: yaml_parser_parse_stream_start }; } $f.$ptr = $ptr; $f._r$2 = _r$2; $f.event = event; $f.parser$1 = parser$1; $f.token = token; $f.$s = $s; $f.$r = $r; return $f;
  32756. };
  32757. yaml_parser_parse_document_start = function(parser$1, event, implicit) {
  32758. var $ptr, _r$2, _r$3, _r$4, _r$5, _r$6, end_mark, event, implicit, parser$1, start_mark, tag_directives, token, version_directive, $s, $r;
  32759. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; end_mark = $f.end_mark; event = $f.event; implicit = $f.implicit; parser$1 = $f.parser$1; start_mark = $f.start_mark; tag_directives = $f.tag_directives; token = $f.token; version_directive = $f.version_directive; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  32760. tag_directives = [tag_directives];
  32761. version_directive = [version_directive];
  32762. _r$2 = peek_token(parser$1); /* */ $s = 1; case 1: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  32763. token = _r$2;
  32764. if (token === ptrType$10.nil) {
  32765. return false;
  32766. }
  32767. /* */ if (!implicit) { $s = 2; continue; }
  32768. /* */ $s = 3; continue;
  32769. /* if (!implicit) { */ case 2:
  32770. /* while (true) { */ case 4:
  32771. /* if (!(token.typ === 6)) { break; } */ if(!(token.typ === 6)) { $s = 5; continue; }
  32772. skip_token(parser$1);
  32773. _r$3 = peek_token(parser$1); /* */ $s = 6; case 6: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  32774. token = _r$3;
  32775. if (token === ptrType$10.nil) {
  32776. return false;
  32777. }
  32778. /* } */ $s = 4; continue; case 5:
  32779. /* } */ case 3:
  32780. /* */ if (implicit && !((token.typ === 3)) && !((token.typ === 4)) && !((token.typ === 5)) && !((token.typ === 2))) { $s = 7; continue; }
  32781. /* */ if (!((token.typ === 2))) { $s = 8; continue; }
  32782. /* */ $s = 9; continue;
  32783. /* if (implicit && !((token.typ === 3)) && !((token.typ === 4)) && !((token.typ === 5)) && !((token.typ === 2))) { */ case 7:
  32784. _r$4 = yaml_parser_process_directives(parser$1, ptrType$11.nil, ptrType$12.nil); /* */ $s = 13; case 13: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
  32785. /* */ if (!_r$4) { $s = 11; continue; }
  32786. /* */ $s = 12; continue;
  32787. /* if (!_r$4) { */ case 11:
  32788. return false;
  32789. /* } */ case 12:
  32790. parser$1.states = $append(parser$1.states, 4);
  32791. parser$1.state = 5;
  32792. $copy(event, new yaml_event_t.ptr(3, $clone(token.start_mark, yaml_mark_t), $clone(token.end_mark, yaml_mark_t), 0, ptrType$3.nil, sliceType.nil, sliceType$1.nil, sliceType$1.nil, sliceType$1.nil, false, false, 0), yaml_event_t);
  32793. $s = 10; continue;
  32794. /* } else if (!((token.typ === 2))) { */ case 8:
  32795. version_directive[0] = ptrType$3.nil;
  32796. tag_directives[0] = sliceType.nil;
  32797. start_mark = $clone(token.start_mark, yaml_mark_t);
  32798. _r$5 = yaml_parser_process_directives(parser$1, (version_directive.$ptr || (version_directive.$ptr = new ptrType$11(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, version_directive))), (tag_directives.$ptr || (tag_directives.$ptr = new ptrType$12(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, tag_directives)))); /* */ $s = 16; case 16: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
  32799. /* */ if (!_r$5) { $s = 14; continue; }
  32800. /* */ $s = 15; continue;
  32801. /* if (!_r$5) { */ case 14:
  32802. return false;
  32803. /* } */ case 15:
  32804. _r$6 = peek_token(parser$1); /* */ $s = 17; case 17: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
  32805. token = _r$6;
  32806. if (token === ptrType$10.nil) {
  32807. return false;
  32808. }
  32809. if (!((token.typ === 5))) {
  32810. yaml_parser_set_parser_error(parser$1, "did not find expected <document start>", token.start_mark);
  32811. return false;
  32812. }
  32813. parser$1.states = $append(parser$1.states, 4);
  32814. parser$1.state = 3;
  32815. end_mark = $clone(token.end_mark, yaml_mark_t);
  32816. $copy(event, new yaml_event_t.ptr(3, $clone(start_mark, yaml_mark_t), $clone(end_mark, yaml_mark_t), 0, version_directive[0], tag_directives[0], sliceType$1.nil, sliceType$1.nil, sliceType$1.nil, false, false, 0), yaml_event_t);
  32817. skip_token(parser$1);
  32818. $s = 10; continue;
  32819. /* } else { */ case 9:
  32820. parser$1.state = 23;
  32821. $copy(event, new yaml_event_t.ptr(2, $clone(token.start_mark, yaml_mark_t), $clone(token.end_mark, yaml_mark_t), 0, ptrType$3.nil, sliceType.nil, sliceType$1.nil, sliceType$1.nil, sliceType$1.nil, false, false, 0), yaml_event_t);
  32822. skip_token(parser$1);
  32823. /* } */ case 10:
  32824. return true;
  32825. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: yaml_parser_parse_document_start }; } $f.$ptr = $ptr; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f.end_mark = end_mark; $f.event = event; $f.implicit = implicit; $f.parser$1 = parser$1; $f.start_mark = start_mark; $f.tag_directives = tag_directives; $f.token = token; $f.version_directive = version_directive; $f.$s = $s; $f.$r = $r; return $f;
  32826. };
  32827. yaml_parser_parse_document_content = function(parser$1, event) {
  32828. var $ptr, _r$2, _r$3, event, parser$1, token, x$1, x$2, $s, $r;
  32829. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r$2 = $f._r$2; _r$3 = $f._r$3; event = $f.event; parser$1 = $f.parser$1; token = $f.token; x$1 = $f.x$1; x$2 = $f.x$2; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  32830. _r$2 = peek_token(parser$1); /* */ $s = 1; case 1: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  32831. token = _r$2;
  32832. if (token === ptrType$10.nil) {
  32833. return false;
  32834. }
  32835. if ((token.typ === 3) || (token.typ === 4) || (token.typ === 5) || (token.typ === 6) || (token.typ === 2)) {
  32836. parser$1.state = (x$1 = parser$1.states, x$2 = parser$1.states.$length - 1 >> 0, ((x$2 < 0 || x$2 >= x$1.$length) ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + x$2]));
  32837. parser$1.states = $subslice(parser$1.states, 0, (parser$1.states.$length - 1 >> 0));
  32838. return yaml_parser_process_empty_scalar(parser$1, event, token.start_mark);
  32839. }
  32840. _r$3 = yaml_parser_parse_node(parser$1, event, true, false); /* */ $s = 2; case 2: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  32841. return _r$3;
  32842. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: yaml_parser_parse_document_content }; } $f.$ptr = $ptr; $f._r$2 = _r$2; $f._r$3 = _r$3; $f.event = event; $f.parser$1 = parser$1; $f.token = token; $f.x$1 = x$1; $f.x$2 = x$2; $f.$s = $s; $f.$r = $r; return $f;
  32843. };
  32844. yaml_parser_parse_document_end = function(parser$1, event) {
  32845. var $ptr, _r$2, end_mark, event, implicit, parser$1, start_mark, token, $s, $r;
  32846. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r$2 = $f._r$2; end_mark = $f.end_mark; event = $f.event; implicit = $f.implicit; parser$1 = $f.parser$1; start_mark = $f.start_mark; token = $f.token; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  32847. _r$2 = peek_token(parser$1); /* */ $s = 1; case 1: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  32848. token = _r$2;
  32849. if (token === ptrType$10.nil) {
  32850. return false;
  32851. }
  32852. start_mark = $clone(token.start_mark, yaml_mark_t);
  32853. end_mark = $clone(token.start_mark, yaml_mark_t);
  32854. implicit = true;
  32855. if (token.typ === 6) {
  32856. $copy(end_mark, token.end_mark, yaml_mark_t);
  32857. skip_token(parser$1);
  32858. implicit = false;
  32859. }
  32860. parser$1.tag_directives = $subslice(parser$1.tag_directives, 0, 0);
  32861. parser$1.state = 2;
  32862. $copy(event, new yaml_event_t.ptr(4, $clone(start_mark, yaml_mark_t), $clone(end_mark, yaml_mark_t), 0, ptrType$3.nil, sliceType.nil, sliceType$1.nil, sliceType$1.nil, sliceType$1.nil, implicit, false, 0), yaml_event_t);
  32863. return true;
  32864. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: yaml_parser_parse_document_end }; } $f.$ptr = $ptr; $f._r$2 = _r$2; $f.end_mark = end_mark; $f.event = event; $f.implicit = implicit; $f.parser$1 = parser$1; $f.start_mark = start_mark; $f.token = token; $f.$s = $s; $f.$r = $r; return $f;
  32865. };
  32866. yaml_parser_parse_node = function(parser$1, event, block, indentless_sequence) {
  32867. var $ptr, _i, _r$2, _r$3, _r$4, _r$5, _r$6, _ref, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, anchor, block, context, end_mark, event, i, implicit, indentless_sequence, parser$1, plain_implicit, quoted_implicit, start_mark, tag, tag_handle, tag_mark, tag_suffix, tag_token, token, x$1, x$2, x$3, x$4, x$5, x$6, x$7, x$8, $s, $r;
  32868. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _i = $f._i; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _ref = $f._ref; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; anchor = $f.anchor; block = $f.block; context = $f.context; end_mark = $f.end_mark; event = $f.event; i = $f.i; implicit = $f.implicit; indentless_sequence = $f.indentless_sequence; parser$1 = $f.parser$1; plain_implicit = $f.plain_implicit; quoted_implicit = $f.quoted_implicit; start_mark = $f.start_mark; tag = $f.tag; tag_handle = $f.tag_handle; tag_mark = $f.tag_mark; tag_suffix = $f.tag_suffix; tag_token = $f.tag_token; token = $f.token; x$1 = $f.x$1; x$2 = $f.x$2; x$3 = $f.x$3; x$4 = $f.x$4; x$5 = $f.x$5; x$6 = $f.x$6; x$7 = $f.x$7; x$8 = $f.x$8; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  32869. _r$2 = peek_token(parser$1); /* */ $s = 1; case 1: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  32870. token = _r$2;
  32871. if (token === ptrType$10.nil) {
  32872. return false;
  32873. }
  32874. if (token.typ === 18) {
  32875. parser$1.state = (x$1 = parser$1.states, x$2 = parser$1.states.$length - 1 >> 0, ((x$2 < 0 || x$2 >= x$1.$length) ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + x$2]));
  32876. parser$1.states = $subslice(parser$1.states, 0, (parser$1.states.$length - 1 >> 0));
  32877. $copy(event, new yaml_event_t.ptr(5, $clone(token.start_mark, yaml_mark_t), $clone(token.end_mark, yaml_mark_t), 0, ptrType$3.nil, sliceType.nil, token.value, sliceType$1.nil, sliceType$1.nil, false, false, 0), yaml_event_t);
  32878. skip_token(parser$1);
  32879. return true;
  32880. }
  32881. start_mark = $clone(token.start_mark, yaml_mark_t);
  32882. end_mark = $clone(token.start_mark, yaml_mark_t);
  32883. tag_token = false;
  32884. _tmp = sliceType$1.nil; _tmp$1 = sliceType$1.nil; _tmp$2 = sliceType$1.nil; tag_handle = _tmp; tag_suffix = _tmp$1; anchor = _tmp$2;
  32885. tag_mark = $clone(new yaml_mark_t.ptr(), yaml_mark_t);
  32886. /* */ if (token.typ === 19) { $s = 2; continue; }
  32887. /* */ if (token.typ === 20) { $s = 3; continue; }
  32888. /* */ $s = 4; continue;
  32889. /* if (token.typ === 19) { */ case 2:
  32890. anchor = token.value;
  32891. $copy(start_mark, token.start_mark, yaml_mark_t);
  32892. $copy(end_mark, token.end_mark, yaml_mark_t);
  32893. skip_token(parser$1);
  32894. _r$3 = peek_token(parser$1); /* */ $s = 5; case 5: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  32895. token = _r$3;
  32896. if (token === ptrType$10.nil) {
  32897. return false;
  32898. }
  32899. /* */ if (token.typ === 20) { $s = 6; continue; }
  32900. /* */ $s = 7; continue;
  32901. /* if (token.typ === 20) { */ case 6:
  32902. tag_token = true;
  32903. tag_handle = token.value;
  32904. tag_suffix = token.suffix;
  32905. $copy(tag_mark, token.start_mark, yaml_mark_t);
  32906. $copy(end_mark, token.end_mark, yaml_mark_t);
  32907. skip_token(parser$1);
  32908. _r$4 = peek_token(parser$1); /* */ $s = 8; case 8: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
  32909. token = _r$4;
  32910. if (token === ptrType$10.nil) {
  32911. return false;
  32912. }
  32913. /* } */ case 7:
  32914. $s = 4; continue;
  32915. /* } else if (token.typ === 20) { */ case 3:
  32916. tag_token = true;
  32917. tag_handle = token.value;
  32918. tag_suffix = token.suffix;
  32919. $copy(start_mark, token.start_mark, yaml_mark_t);
  32920. $copy(tag_mark, token.start_mark, yaml_mark_t);
  32921. $copy(end_mark, token.end_mark, yaml_mark_t);
  32922. skip_token(parser$1);
  32923. _r$5 = peek_token(parser$1); /* */ $s = 9; case 9: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
  32924. token = _r$5;
  32925. if (token === ptrType$10.nil) {
  32926. return false;
  32927. }
  32928. /* */ if (token.typ === 19) { $s = 10; continue; }
  32929. /* */ $s = 11; continue;
  32930. /* if (token.typ === 19) { */ case 10:
  32931. anchor = token.value;
  32932. $copy(end_mark, token.end_mark, yaml_mark_t);
  32933. skip_token(parser$1);
  32934. _r$6 = peek_token(parser$1); /* */ $s = 12; case 12: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
  32935. token = _r$6;
  32936. if (token === ptrType$10.nil) {
  32937. return false;
  32938. }
  32939. /* } */ case 11:
  32940. /* } */ case 4:
  32941. tag = sliceType$1.nil;
  32942. if (tag_token) {
  32943. if (tag_handle.$length === 0) {
  32944. tag = tag_suffix;
  32945. tag_suffix = sliceType$1.nil;
  32946. } else {
  32947. _ref = parser$1.tag_directives;
  32948. _i = 0;
  32949. while (true) {
  32950. if (!(_i < _ref.$length)) { break; }
  32951. i = _i;
  32952. if (bytes.Equal((x$3 = parser$1.tag_directives, ((i < 0 || i >= x$3.$length) ? $throwRuntimeError("index out of range") : x$3.$array[x$3.$offset + i])).handle, tag_handle)) {
  32953. tag = $appendSlice(sliceType$1.nil, (x$4 = parser$1.tag_directives, ((i < 0 || i >= x$4.$length) ? $throwRuntimeError("index out of range") : x$4.$array[x$4.$offset + i])).prefix);
  32954. tag = $appendSlice(tag, tag_suffix);
  32955. break;
  32956. }
  32957. _i++;
  32958. }
  32959. if (tag.$length === 0) {
  32960. yaml_parser_set_parser_error_context(parser$1, "while parsing a node", start_mark, "found undefined tag handle", tag_mark);
  32961. return false;
  32962. }
  32963. }
  32964. }
  32965. implicit = tag.$length === 0;
  32966. if (indentless_sequence && (token.typ === 14)) {
  32967. $copy(end_mark, token.end_mark, yaml_mark_t);
  32968. parser$1.state = 10;
  32969. $copy(event, new yaml_event_t.ptr(7, $clone(start_mark, yaml_mark_t), $clone(end_mark, yaml_mark_t), 0, ptrType$3.nil, sliceType.nil, anchor, tag, sliceType$1.nil, implicit, false, 1), yaml_event_t);
  32970. return true;
  32971. }
  32972. if (token.typ === 21) {
  32973. _tmp$3 = false; _tmp$4 = false; plain_implicit = _tmp$3; quoted_implicit = _tmp$4;
  32974. $copy(end_mark, token.end_mark, yaml_mark_t);
  32975. if (((tag.$length === 0) && (token.style === 1)) || ((tag.$length === 1) && ((0 >= tag.$length ? $throwRuntimeError("index out of range") : tag.$array[tag.$offset + 0]) === 33))) {
  32976. plain_implicit = true;
  32977. } else if (tag.$length === 0) {
  32978. quoted_implicit = true;
  32979. }
  32980. parser$1.state = (x$5 = parser$1.states, x$6 = parser$1.states.$length - 1 >> 0, ((x$6 < 0 || x$6 >= x$5.$length) ? $throwRuntimeError("index out of range") : x$5.$array[x$5.$offset + x$6]));
  32981. parser$1.states = $subslice(parser$1.states, 0, (parser$1.states.$length - 1 >> 0));
  32982. $copy(event, new yaml_event_t.ptr(6, $clone(start_mark, yaml_mark_t), $clone(end_mark, yaml_mark_t), 0, ptrType$3.nil, sliceType.nil, anchor, tag, token.value, plain_implicit, quoted_implicit, (token.style << 24 >> 24)), yaml_event_t);
  32983. skip_token(parser$1);
  32984. return true;
  32985. }
  32986. if (token.typ === 10) {
  32987. $copy(end_mark, token.end_mark, yaml_mark_t);
  32988. parser$1.state = 14;
  32989. $copy(event, new yaml_event_t.ptr(7, $clone(start_mark, yaml_mark_t), $clone(end_mark, yaml_mark_t), 0, ptrType$3.nil, sliceType.nil, anchor, tag, sliceType$1.nil, implicit, false, 2), yaml_event_t);
  32990. return true;
  32991. }
  32992. if (token.typ === 12) {
  32993. $copy(end_mark, token.end_mark, yaml_mark_t);
  32994. parser$1.state = 19;
  32995. $copy(event, new yaml_event_t.ptr(9, $clone(start_mark, yaml_mark_t), $clone(end_mark, yaml_mark_t), 0, ptrType$3.nil, sliceType.nil, anchor, tag, sliceType$1.nil, implicit, false, 2), yaml_event_t);
  32996. return true;
  32997. }
  32998. if (block && (token.typ === 7)) {
  32999. $copy(end_mark, token.end_mark, yaml_mark_t);
  33000. parser$1.state = 8;
  33001. $copy(event, new yaml_event_t.ptr(7, $clone(start_mark, yaml_mark_t), $clone(end_mark, yaml_mark_t), 0, ptrType$3.nil, sliceType.nil, anchor, tag, sliceType$1.nil, implicit, false, 1), yaml_event_t);
  33002. return true;
  33003. }
  33004. if (block && (token.typ === 8)) {
  33005. $copy(end_mark, token.end_mark, yaml_mark_t);
  33006. parser$1.state = 11;
  33007. $copy(event, new yaml_event_t.ptr(9, $clone(start_mark, yaml_mark_t), $clone(end_mark, yaml_mark_t), 0, ptrType$3.nil, sliceType.nil, anchor, tag, sliceType$1.nil, implicit, false, 1), yaml_event_t);
  33008. return true;
  33009. }
  33010. if (anchor.$length > 0 || tag.$length > 0) {
  33011. parser$1.state = (x$7 = parser$1.states, x$8 = parser$1.states.$length - 1 >> 0, ((x$8 < 0 || x$8 >= x$7.$length) ? $throwRuntimeError("index out of range") : x$7.$array[x$7.$offset + x$8]));
  33012. parser$1.states = $subslice(parser$1.states, 0, (parser$1.states.$length - 1 >> 0));
  33013. $copy(event, new yaml_event_t.ptr(6, $clone(start_mark, yaml_mark_t), $clone(end_mark, yaml_mark_t), 0, ptrType$3.nil, sliceType.nil, anchor, tag, sliceType$1.nil, implicit, false, 1), yaml_event_t);
  33014. return true;
  33015. }
  33016. context = "while parsing a flow node";
  33017. if (block) {
  33018. context = "while parsing a block node";
  33019. }
  33020. yaml_parser_set_parser_error_context(parser$1, context, start_mark, "did not find expected node content", token.start_mark);
  33021. return false;
  33022. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: yaml_parser_parse_node }; } $f.$ptr = $ptr; $f._i = _i; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._ref = _ref; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f.anchor = anchor; $f.block = block; $f.context = context; $f.end_mark = end_mark; $f.event = event; $f.i = i; $f.implicit = implicit; $f.indentless_sequence = indentless_sequence; $f.parser$1 = parser$1; $f.plain_implicit = plain_implicit; $f.quoted_implicit = quoted_implicit; $f.start_mark = start_mark; $f.tag = tag; $f.tag_handle = tag_handle; $f.tag_mark = tag_mark; $f.tag_suffix = tag_suffix; $f.tag_token = tag_token; $f.token = token; $f.x$1 = x$1; $f.x$2 = x$2; $f.x$3 = x$3; $f.x$4 = x$4; $f.x$5 = x$5; $f.x$6 = x$6; $f.x$7 = x$7; $f.x$8 = x$8; $f.$s = $s; $f.$r = $r; return $f;
  33023. };
  33024. yaml_parser_parse_block_sequence_entry = function(parser$1, event, first) {
  33025. var $ptr, _r$2, _r$3, _r$4, _r$5, context_mark, event, first, mark, parser$1, token, token$1, x$1, x$2, x$3, x$4, $s, $r;
  33026. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; context_mark = $f.context_mark; event = $f.event; first = $f.first; mark = $f.mark; parser$1 = $f.parser$1; token = $f.token; token$1 = $f.token$1; x$1 = $f.x$1; x$2 = $f.x$2; x$3 = $f.x$3; x$4 = $f.x$4; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  33027. /* */ if (first) { $s = 1; continue; }
  33028. /* */ $s = 2; continue;
  33029. /* if (first) { */ case 1:
  33030. _r$2 = peek_token(parser$1); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  33031. token = _r$2;
  33032. parser$1.marks = $append(parser$1.marks, token.start_mark);
  33033. skip_token(parser$1);
  33034. /* } */ case 2:
  33035. _r$3 = peek_token(parser$1); /* */ $s = 4; case 4: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  33036. token$1 = _r$3;
  33037. if (token$1 === ptrType$10.nil) {
  33038. return false;
  33039. }
  33040. /* */ if (token$1.typ === 14) { $s = 5; continue; }
  33041. /* */ $s = 6; continue;
  33042. /* if (token$1.typ === 14) { */ case 5:
  33043. mark = $clone(token$1.end_mark, yaml_mark_t);
  33044. skip_token(parser$1);
  33045. _r$4 = peek_token(parser$1); /* */ $s = 7; case 7: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
  33046. token$1 = _r$4;
  33047. if (token$1 === ptrType$10.nil) {
  33048. return false;
  33049. }
  33050. /* */ if (!((token$1.typ === 14)) && !((token$1.typ === 9))) { $s = 8; continue; }
  33051. /* */ $s = 9; continue;
  33052. /* if (!((token$1.typ === 14)) && !((token$1.typ === 9))) { */ case 8:
  33053. parser$1.states = $append(parser$1.states, 9);
  33054. _r$5 = yaml_parser_parse_node(parser$1, event, true, false); /* */ $s = 11; case 11: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
  33055. return _r$5;
  33056. $s = 10; continue;
  33057. /* } else { */ case 9:
  33058. parser$1.state = 9;
  33059. return yaml_parser_process_empty_scalar(parser$1, event, mark);
  33060. /* } */ case 10:
  33061. /* } */ case 6:
  33062. if (token$1.typ === 9) {
  33063. parser$1.state = (x$1 = parser$1.states, x$2 = parser$1.states.$length - 1 >> 0, ((x$2 < 0 || x$2 >= x$1.$length) ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + x$2]));
  33064. parser$1.states = $subslice(parser$1.states, 0, (parser$1.states.$length - 1 >> 0));
  33065. parser$1.marks = $subslice(parser$1.marks, 0, (parser$1.marks.$length - 1 >> 0));
  33066. $copy(event, new yaml_event_t.ptr(8, $clone(token$1.start_mark, yaml_mark_t), $clone(token$1.end_mark, yaml_mark_t), 0, ptrType$3.nil, sliceType.nil, sliceType$1.nil, sliceType$1.nil, sliceType$1.nil, false, false, 0), yaml_event_t);
  33067. skip_token(parser$1);
  33068. return true;
  33069. }
  33070. context_mark = $clone((x$3 = parser$1.marks, x$4 = parser$1.marks.$length - 1 >> 0, ((x$4 < 0 || x$4 >= x$3.$length) ? $throwRuntimeError("index out of range") : x$3.$array[x$3.$offset + x$4])), yaml_mark_t);
  33071. parser$1.marks = $subslice(parser$1.marks, 0, (parser$1.marks.$length - 1 >> 0));
  33072. return yaml_parser_set_parser_error_context(parser$1, "while parsing a block collection", context_mark, "did not find expected '-' indicator", token$1.start_mark);
  33073. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: yaml_parser_parse_block_sequence_entry }; } $f.$ptr = $ptr; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f.context_mark = context_mark; $f.event = event; $f.first = first; $f.mark = mark; $f.parser$1 = parser$1; $f.token = token; $f.token$1 = token$1; $f.x$1 = x$1; $f.x$2 = x$2; $f.x$3 = x$3; $f.x$4 = x$4; $f.$s = $s; $f.$r = $r; return $f;
  33074. };
  33075. yaml_parser_parse_indentless_sequence_entry = function(parser$1, event) {
  33076. var $ptr, _r$2, _r$3, _r$4, event, mark, parser$1, token, x$1, x$2, $s, $r;
  33077. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; event = $f.event; mark = $f.mark; parser$1 = $f.parser$1; token = $f.token; x$1 = $f.x$1; x$2 = $f.x$2; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  33078. _r$2 = peek_token(parser$1); /* */ $s = 1; case 1: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  33079. token = _r$2;
  33080. if (token === ptrType$10.nil) {
  33081. return false;
  33082. }
  33083. /* */ if (token.typ === 14) { $s = 2; continue; }
  33084. /* */ $s = 3; continue;
  33085. /* if (token.typ === 14) { */ case 2:
  33086. mark = $clone(token.end_mark, yaml_mark_t);
  33087. skip_token(parser$1);
  33088. _r$3 = peek_token(parser$1); /* */ $s = 4; case 4: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  33089. token = _r$3;
  33090. if (token === ptrType$10.nil) {
  33091. return false;
  33092. }
  33093. /* */ if (!((token.typ === 14)) && !((token.typ === 16)) && !((token.typ === 17)) && !((token.typ === 9))) { $s = 5; continue; }
  33094. /* */ $s = 6; continue;
  33095. /* if (!((token.typ === 14)) && !((token.typ === 16)) && !((token.typ === 17)) && !((token.typ === 9))) { */ case 5:
  33096. parser$1.states = $append(parser$1.states, 10);
  33097. _r$4 = yaml_parser_parse_node(parser$1, event, true, false); /* */ $s = 7; case 7: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
  33098. return _r$4;
  33099. /* } */ case 6:
  33100. parser$1.state = 10;
  33101. return yaml_parser_process_empty_scalar(parser$1, event, mark);
  33102. /* } */ case 3:
  33103. parser$1.state = (x$1 = parser$1.states, x$2 = parser$1.states.$length - 1 >> 0, ((x$2 < 0 || x$2 >= x$1.$length) ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + x$2]));
  33104. parser$1.states = $subslice(parser$1.states, 0, (parser$1.states.$length - 1 >> 0));
  33105. $copy(event, new yaml_event_t.ptr(8, $clone(token.start_mark, yaml_mark_t), $clone(token.start_mark, yaml_mark_t), 0, ptrType$3.nil, sliceType.nil, sliceType$1.nil, sliceType$1.nil, sliceType$1.nil, false, false, 0), yaml_event_t);
  33106. return true;
  33107. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: yaml_parser_parse_indentless_sequence_entry }; } $f.$ptr = $ptr; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f.event = event; $f.mark = mark; $f.parser$1 = parser$1; $f.token = token; $f.x$1 = x$1; $f.x$2 = x$2; $f.$s = $s; $f.$r = $r; return $f;
  33108. };
  33109. yaml_parser_parse_block_mapping_key = function(parser$1, event, first) {
  33110. var $ptr, _r$2, _r$3, _r$4, _r$5, context_mark, event, first, mark, parser$1, token, token$1, x$1, x$2, x$3, x$4, $s, $r;
  33111. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; context_mark = $f.context_mark; event = $f.event; first = $f.first; mark = $f.mark; parser$1 = $f.parser$1; token = $f.token; token$1 = $f.token$1; x$1 = $f.x$1; x$2 = $f.x$2; x$3 = $f.x$3; x$4 = $f.x$4; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  33112. /* */ if (first) { $s = 1; continue; }
  33113. /* */ $s = 2; continue;
  33114. /* if (first) { */ case 1:
  33115. _r$2 = peek_token(parser$1); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  33116. token = _r$2;
  33117. parser$1.marks = $append(parser$1.marks, token.start_mark);
  33118. skip_token(parser$1);
  33119. /* } */ case 2:
  33120. _r$3 = peek_token(parser$1); /* */ $s = 4; case 4: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  33121. token$1 = _r$3;
  33122. if (token$1 === ptrType$10.nil) {
  33123. return false;
  33124. }
  33125. /* */ if (token$1.typ === 16) { $s = 5; continue; }
  33126. /* */ if (token$1.typ === 9) { $s = 6; continue; }
  33127. /* */ $s = 7; continue;
  33128. /* if (token$1.typ === 16) { */ case 5:
  33129. mark = $clone(token$1.end_mark, yaml_mark_t);
  33130. skip_token(parser$1);
  33131. _r$4 = peek_token(parser$1); /* */ $s = 8; case 8: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
  33132. token$1 = _r$4;
  33133. if (token$1 === ptrType$10.nil) {
  33134. return false;
  33135. }
  33136. /* */ if (!((token$1.typ === 16)) && !((token$1.typ === 17)) && !((token$1.typ === 9))) { $s = 9; continue; }
  33137. /* */ $s = 10; continue;
  33138. /* if (!((token$1.typ === 16)) && !((token$1.typ === 17)) && !((token$1.typ === 9))) { */ case 9:
  33139. parser$1.states = $append(parser$1.states, 13);
  33140. _r$5 = yaml_parser_parse_node(parser$1, event, true, true); /* */ $s = 12; case 12: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
  33141. return _r$5;
  33142. $s = 11; continue;
  33143. /* } else { */ case 10:
  33144. parser$1.state = 13;
  33145. return yaml_parser_process_empty_scalar(parser$1, event, mark);
  33146. /* } */ case 11:
  33147. $s = 7; continue;
  33148. /* } else if (token$1.typ === 9) { */ case 6:
  33149. parser$1.state = (x$1 = parser$1.states, x$2 = parser$1.states.$length - 1 >> 0, ((x$2 < 0 || x$2 >= x$1.$length) ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + x$2]));
  33150. parser$1.states = $subslice(parser$1.states, 0, (parser$1.states.$length - 1 >> 0));
  33151. parser$1.marks = $subslice(parser$1.marks, 0, (parser$1.marks.$length - 1 >> 0));
  33152. $copy(event, new yaml_event_t.ptr(10, $clone(token$1.start_mark, yaml_mark_t), $clone(token$1.end_mark, yaml_mark_t), 0, ptrType$3.nil, sliceType.nil, sliceType$1.nil, sliceType$1.nil, sliceType$1.nil, false, false, 0), yaml_event_t);
  33153. skip_token(parser$1);
  33154. return true;
  33155. /* } */ case 7:
  33156. context_mark = $clone((x$3 = parser$1.marks, x$4 = parser$1.marks.$length - 1 >> 0, ((x$4 < 0 || x$4 >= x$3.$length) ? $throwRuntimeError("index out of range") : x$3.$array[x$3.$offset + x$4])), yaml_mark_t);
  33157. parser$1.marks = $subslice(parser$1.marks, 0, (parser$1.marks.$length - 1 >> 0));
  33158. return yaml_parser_set_parser_error_context(parser$1, "while parsing a block mapping", context_mark, "did not find expected key", token$1.start_mark);
  33159. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: yaml_parser_parse_block_mapping_key }; } $f.$ptr = $ptr; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f.context_mark = context_mark; $f.event = event; $f.first = first; $f.mark = mark; $f.parser$1 = parser$1; $f.token = token; $f.token$1 = token$1; $f.x$1 = x$1; $f.x$2 = x$2; $f.x$3 = x$3; $f.x$4 = x$4; $f.$s = $s; $f.$r = $r; return $f;
  33160. };
  33161. yaml_parser_parse_block_mapping_value = function(parser$1, event) {
  33162. var $ptr, _r$2, _r$3, _r$4, event, mark, parser$1, token, $s, $r;
  33163. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; event = $f.event; mark = $f.mark; parser$1 = $f.parser$1; token = $f.token; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  33164. _r$2 = peek_token(parser$1); /* */ $s = 1; case 1: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  33165. token = _r$2;
  33166. if (token === ptrType$10.nil) {
  33167. return false;
  33168. }
  33169. /* */ if (token.typ === 17) { $s = 2; continue; }
  33170. /* */ $s = 3; continue;
  33171. /* if (token.typ === 17) { */ case 2:
  33172. mark = $clone(token.end_mark, yaml_mark_t);
  33173. skip_token(parser$1);
  33174. _r$3 = peek_token(parser$1); /* */ $s = 4; case 4: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  33175. token = _r$3;
  33176. if (token === ptrType$10.nil) {
  33177. return false;
  33178. }
  33179. /* */ if (!((token.typ === 16)) && !((token.typ === 17)) && !((token.typ === 9))) { $s = 5; continue; }
  33180. /* */ $s = 6; continue;
  33181. /* if (!((token.typ === 16)) && !((token.typ === 17)) && !((token.typ === 9))) { */ case 5:
  33182. parser$1.states = $append(parser$1.states, 12);
  33183. _r$4 = yaml_parser_parse_node(parser$1, event, true, true); /* */ $s = 7; case 7: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
  33184. return _r$4;
  33185. /* } */ case 6:
  33186. parser$1.state = 12;
  33187. return yaml_parser_process_empty_scalar(parser$1, event, mark);
  33188. /* } */ case 3:
  33189. parser$1.state = 12;
  33190. return yaml_parser_process_empty_scalar(parser$1, event, token.start_mark);
  33191. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: yaml_parser_parse_block_mapping_value }; } $f.$ptr = $ptr; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f.event = event; $f.mark = mark; $f.parser$1 = parser$1; $f.token = token; $f.$s = $s; $f.$r = $r; return $f;
  33192. };
  33193. yaml_parser_parse_flow_sequence_entry = function(parser$1, event, first) {
  33194. var $ptr, _r$2, _r$3, _r$4, _r$5, context_mark, event, first, parser$1, token, token$1, x$1, x$2, x$3, x$4, $s, $r;
  33195. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; context_mark = $f.context_mark; event = $f.event; first = $f.first; parser$1 = $f.parser$1; token = $f.token; token$1 = $f.token$1; x$1 = $f.x$1; x$2 = $f.x$2; x$3 = $f.x$3; x$4 = $f.x$4; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  33196. /* */ if (first) { $s = 1; continue; }
  33197. /* */ $s = 2; continue;
  33198. /* if (first) { */ case 1:
  33199. _r$2 = peek_token(parser$1); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  33200. token = _r$2;
  33201. parser$1.marks = $append(parser$1.marks, token.start_mark);
  33202. skip_token(parser$1);
  33203. /* } */ case 2:
  33204. _r$3 = peek_token(parser$1); /* */ $s = 4; case 4: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  33205. token$1 = _r$3;
  33206. if (token$1 === ptrType$10.nil) {
  33207. return false;
  33208. }
  33209. /* */ if (!((token$1.typ === 11))) { $s = 5; continue; }
  33210. /* */ $s = 6; continue;
  33211. /* if (!((token$1.typ === 11))) { */ case 5:
  33212. /* */ if (!first) { $s = 7; continue; }
  33213. /* */ $s = 8; continue;
  33214. /* if (!first) { */ case 7:
  33215. /* */ if (token$1.typ === 15) { $s = 9; continue; }
  33216. /* */ $s = 10; continue;
  33217. /* if (token$1.typ === 15) { */ case 9:
  33218. skip_token(parser$1);
  33219. _r$4 = peek_token(parser$1); /* */ $s = 12; case 12: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
  33220. token$1 = _r$4;
  33221. if (token$1 === ptrType$10.nil) {
  33222. return false;
  33223. }
  33224. $s = 11; continue;
  33225. /* } else { */ case 10:
  33226. context_mark = $clone((x$1 = parser$1.marks, x$2 = parser$1.marks.$length - 1 >> 0, ((x$2 < 0 || x$2 >= x$1.$length) ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + x$2])), yaml_mark_t);
  33227. parser$1.marks = $subslice(parser$1.marks, 0, (parser$1.marks.$length - 1 >> 0));
  33228. return yaml_parser_set_parser_error_context(parser$1, "while parsing a flow sequence", context_mark, "did not find expected ',' or ']'", token$1.start_mark);
  33229. /* } */ case 11:
  33230. /* } */ case 8:
  33231. /* */ if (token$1.typ === 16) { $s = 13; continue; }
  33232. /* */ if (!((token$1.typ === 11))) { $s = 14; continue; }
  33233. /* */ $s = 15; continue;
  33234. /* if (token$1.typ === 16) { */ case 13:
  33235. parser$1.state = 16;
  33236. $copy(event, new yaml_event_t.ptr(9, $clone(token$1.start_mark, yaml_mark_t), $clone(token$1.end_mark, yaml_mark_t), 0, ptrType$3.nil, sliceType.nil, sliceType$1.nil, sliceType$1.nil, sliceType$1.nil, true, false, 2), yaml_event_t);
  33237. skip_token(parser$1);
  33238. return true;
  33239. $s = 15; continue;
  33240. /* } else if (!((token$1.typ === 11))) { */ case 14:
  33241. parser$1.states = $append(parser$1.states, 15);
  33242. _r$5 = yaml_parser_parse_node(parser$1, event, false, false); /* */ $s = 16; case 16: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
  33243. return _r$5;
  33244. /* } */ case 15:
  33245. /* } */ case 6:
  33246. parser$1.state = (x$3 = parser$1.states, x$4 = parser$1.states.$length - 1 >> 0, ((x$4 < 0 || x$4 >= x$3.$length) ? $throwRuntimeError("index out of range") : x$3.$array[x$3.$offset + x$4]));
  33247. parser$1.states = $subslice(parser$1.states, 0, (parser$1.states.$length - 1 >> 0));
  33248. parser$1.marks = $subslice(parser$1.marks, 0, (parser$1.marks.$length - 1 >> 0));
  33249. $copy(event, new yaml_event_t.ptr(8, $clone(token$1.start_mark, yaml_mark_t), $clone(token$1.end_mark, yaml_mark_t), 0, ptrType$3.nil, sliceType.nil, sliceType$1.nil, sliceType$1.nil, sliceType$1.nil, false, false, 0), yaml_event_t);
  33250. skip_token(parser$1);
  33251. return true;
  33252. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: yaml_parser_parse_flow_sequence_entry }; } $f.$ptr = $ptr; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f.context_mark = context_mark; $f.event = event; $f.first = first; $f.parser$1 = parser$1; $f.token = token; $f.token$1 = token$1; $f.x$1 = x$1; $f.x$2 = x$2; $f.x$3 = x$3; $f.x$4 = x$4; $f.$s = $s; $f.$r = $r; return $f;
  33253. };
  33254. yaml_parser_parse_flow_sequence_entry_mapping_key = function(parser$1, event) {
  33255. var $ptr, _r$2, _r$3, event, mark, parser$1, token, $s, $r;
  33256. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r$2 = $f._r$2; _r$3 = $f._r$3; event = $f.event; mark = $f.mark; parser$1 = $f.parser$1; token = $f.token; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  33257. _r$2 = peek_token(parser$1); /* */ $s = 1; case 1: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  33258. token = _r$2;
  33259. if (token === ptrType$10.nil) {
  33260. return false;
  33261. }
  33262. /* */ if (!((token.typ === 17)) && !((token.typ === 15)) && !((token.typ === 11))) { $s = 2; continue; }
  33263. /* */ $s = 3; continue;
  33264. /* if (!((token.typ === 17)) && !((token.typ === 15)) && !((token.typ === 11))) { */ case 2:
  33265. parser$1.states = $append(parser$1.states, 17);
  33266. _r$3 = yaml_parser_parse_node(parser$1, event, false, false); /* */ $s = 4; case 4: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  33267. return _r$3;
  33268. /* } */ case 3:
  33269. mark = $clone(token.end_mark, yaml_mark_t);
  33270. skip_token(parser$1);
  33271. parser$1.state = 17;
  33272. return yaml_parser_process_empty_scalar(parser$1, event, mark);
  33273. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: yaml_parser_parse_flow_sequence_entry_mapping_key }; } $f.$ptr = $ptr; $f._r$2 = _r$2; $f._r$3 = _r$3; $f.event = event; $f.mark = mark; $f.parser$1 = parser$1; $f.token = token; $f.$s = $s; $f.$r = $r; return $f;
  33274. };
  33275. yaml_parser_parse_flow_sequence_entry_mapping_value = function(parser$1, event) {
  33276. var $ptr, _r$2, _r$3, _r$4, event, parser$1, token, token$1, $s, $r;
  33277. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; event = $f.event; parser$1 = $f.parser$1; token = $f.token; token$1 = $f.token$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  33278. _r$2 = peek_token(parser$1); /* */ $s = 1; case 1: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  33279. token = _r$2;
  33280. if (token === ptrType$10.nil) {
  33281. return false;
  33282. }
  33283. /* */ if (token.typ === 17) { $s = 2; continue; }
  33284. /* */ $s = 3; continue;
  33285. /* if (token.typ === 17) { */ case 2:
  33286. skip_token(parser$1);
  33287. _r$3 = peek_token(parser$1); /* */ $s = 4; case 4: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  33288. token$1 = _r$3;
  33289. if (token$1 === ptrType$10.nil) {
  33290. return false;
  33291. }
  33292. /* */ if (!((token$1.typ === 15)) && !((token$1.typ === 11))) { $s = 5; continue; }
  33293. /* */ $s = 6; continue;
  33294. /* if (!((token$1.typ === 15)) && !((token$1.typ === 11))) { */ case 5:
  33295. parser$1.states = $append(parser$1.states, 18);
  33296. _r$4 = yaml_parser_parse_node(parser$1, event, false, false); /* */ $s = 7; case 7: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
  33297. return _r$4;
  33298. /* } */ case 6:
  33299. /* } */ case 3:
  33300. parser$1.state = 18;
  33301. return yaml_parser_process_empty_scalar(parser$1, event, token.start_mark);
  33302. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: yaml_parser_parse_flow_sequence_entry_mapping_value }; } $f.$ptr = $ptr; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f.event = event; $f.parser$1 = parser$1; $f.token = token; $f.token$1 = token$1; $f.$s = $s; $f.$r = $r; return $f;
  33303. };
  33304. yaml_parser_parse_flow_sequence_entry_mapping_end = function(parser$1, event) {
  33305. var $ptr, _r$2, event, parser$1, token, $s, $r;
  33306. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r$2 = $f._r$2; event = $f.event; parser$1 = $f.parser$1; token = $f.token; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  33307. _r$2 = peek_token(parser$1); /* */ $s = 1; case 1: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  33308. token = _r$2;
  33309. if (token === ptrType$10.nil) {
  33310. return false;
  33311. }
  33312. parser$1.state = 15;
  33313. $copy(event, new yaml_event_t.ptr(10, $clone(token.start_mark, yaml_mark_t), $clone(token.start_mark, yaml_mark_t), 0, ptrType$3.nil, sliceType.nil, sliceType$1.nil, sliceType$1.nil, sliceType$1.nil, false, false, 0), yaml_event_t);
  33314. return true;
  33315. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: yaml_parser_parse_flow_sequence_entry_mapping_end }; } $f.$ptr = $ptr; $f._r$2 = _r$2; $f.event = event; $f.parser$1 = parser$1; $f.token = token; $f.$s = $s; $f.$r = $r; return $f;
  33316. };
  33317. yaml_parser_parse_flow_mapping_key = function(parser$1, event, first) {
  33318. var $ptr, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, context_mark, event, first, parser$1, token, token$1, x$1, x$2, x$3, x$4, $s, $r;
  33319. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; context_mark = $f.context_mark; event = $f.event; first = $f.first; parser$1 = $f.parser$1; token = $f.token; token$1 = $f.token$1; x$1 = $f.x$1; x$2 = $f.x$2; x$3 = $f.x$3; x$4 = $f.x$4; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  33320. /* */ if (first) { $s = 1; continue; }
  33321. /* */ $s = 2; continue;
  33322. /* if (first) { */ case 1:
  33323. _r$2 = peek_token(parser$1); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  33324. token = _r$2;
  33325. parser$1.marks = $append(parser$1.marks, token.start_mark);
  33326. skip_token(parser$1);
  33327. /* } */ case 2:
  33328. _r$3 = peek_token(parser$1); /* */ $s = 4; case 4: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  33329. token$1 = _r$3;
  33330. if (token$1 === ptrType$10.nil) {
  33331. return false;
  33332. }
  33333. /* */ if (!((token$1.typ === 13))) { $s = 5; continue; }
  33334. /* */ $s = 6; continue;
  33335. /* if (!((token$1.typ === 13))) { */ case 5:
  33336. /* */ if (!first) { $s = 7; continue; }
  33337. /* */ $s = 8; continue;
  33338. /* if (!first) { */ case 7:
  33339. /* */ if (token$1.typ === 15) { $s = 9; continue; }
  33340. /* */ $s = 10; continue;
  33341. /* if (token$1.typ === 15) { */ case 9:
  33342. skip_token(parser$1);
  33343. _r$4 = peek_token(parser$1); /* */ $s = 12; case 12: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
  33344. token$1 = _r$4;
  33345. if (token$1 === ptrType$10.nil) {
  33346. return false;
  33347. }
  33348. $s = 11; continue;
  33349. /* } else { */ case 10:
  33350. context_mark = $clone((x$1 = parser$1.marks, x$2 = parser$1.marks.$length - 1 >> 0, ((x$2 < 0 || x$2 >= x$1.$length) ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + x$2])), yaml_mark_t);
  33351. parser$1.marks = $subslice(parser$1.marks, 0, (parser$1.marks.$length - 1 >> 0));
  33352. return yaml_parser_set_parser_error_context(parser$1, "while parsing a flow mapping", context_mark, "did not find expected ',' or '}'", token$1.start_mark);
  33353. /* } */ case 11:
  33354. /* } */ case 8:
  33355. /* */ if (token$1.typ === 16) { $s = 13; continue; }
  33356. /* */ if (!((token$1.typ === 13))) { $s = 14; continue; }
  33357. /* */ $s = 15; continue;
  33358. /* if (token$1.typ === 16) { */ case 13:
  33359. skip_token(parser$1);
  33360. _r$5 = peek_token(parser$1); /* */ $s = 16; case 16: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
  33361. token$1 = _r$5;
  33362. if (token$1 === ptrType$10.nil) {
  33363. return false;
  33364. }
  33365. /* */ if (!((token$1.typ === 17)) && !((token$1.typ === 15)) && !((token$1.typ === 13))) { $s = 17; continue; }
  33366. /* */ $s = 18; continue;
  33367. /* if (!((token$1.typ === 17)) && !((token$1.typ === 15)) && !((token$1.typ === 13))) { */ case 17:
  33368. parser$1.states = $append(parser$1.states, 21);
  33369. _r$6 = yaml_parser_parse_node(parser$1, event, false, false); /* */ $s = 20; case 20: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
  33370. return _r$6;
  33371. $s = 19; continue;
  33372. /* } else { */ case 18:
  33373. parser$1.state = 21;
  33374. return yaml_parser_process_empty_scalar(parser$1, event, token$1.start_mark);
  33375. /* } */ case 19:
  33376. $s = 15; continue;
  33377. /* } else if (!((token$1.typ === 13))) { */ case 14:
  33378. parser$1.states = $append(parser$1.states, 22);
  33379. _r$7 = yaml_parser_parse_node(parser$1, event, false, false); /* */ $s = 21; case 21: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
  33380. return _r$7;
  33381. /* } */ case 15:
  33382. /* } */ case 6:
  33383. parser$1.state = (x$3 = parser$1.states, x$4 = parser$1.states.$length - 1 >> 0, ((x$4 < 0 || x$4 >= x$3.$length) ? $throwRuntimeError("index out of range") : x$3.$array[x$3.$offset + x$4]));
  33384. parser$1.states = $subslice(parser$1.states, 0, (parser$1.states.$length - 1 >> 0));
  33385. parser$1.marks = $subslice(parser$1.marks, 0, (parser$1.marks.$length - 1 >> 0));
  33386. $copy(event, new yaml_event_t.ptr(10, $clone(token$1.start_mark, yaml_mark_t), $clone(token$1.end_mark, yaml_mark_t), 0, ptrType$3.nil, sliceType.nil, sliceType$1.nil, sliceType$1.nil, sliceType$1.nil, false, false, 0), yaml_event_t);
  33387. skip_token(parser$1);
  33388. return true;
  33389. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: yaml_parser_parse_flow_mapping_key }; } $f.$ptr = $ptr; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f.context_mark = context_mark; $f.event = event; $f.first = first; $f.parser$1 = parser$1; $f.token = token; $f.token$1 = token$1; $f.x$1 = x$1; $f.x$2 = x$2; $f.x$3 = x$3; $f.x$4 = x$4; $f.$s = $s; $f.$r = $r; return $f;
  33390. };
  33391. yaml_parser_parse_flow_mapping_value = function(parser$1, event, empty) {
  33392. var $ptr, _r$2, _r$3, _r$4, empty, event, parser$1, token, $s, $r;
  33393. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; empty = $f.empty; event = $f.event; parser$1 = $f.parser$1; token = $f.token; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  33394. _r$2 = peek_token(parser$1); /* */ $s = 1; case 1: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  33395. token = _r$2;
  33396. if (token === ptrType$10.nil) {
  33397. return false;
  33398. }
  33399. if (empty) {
  33400. parser$1.state = 20;
  33401. return yaml_parser_process_empty_scalar(parser$1, event, token.start_mark);
  33402. }
  33403. /* */ if (token.typ === 17) { $s = 2; continue; }
  33404. /* */ $s = 3; continue;
  33405. /* if (token.typ === 17) { */ case 2:
  33406. skip_token(parser$1);
  33407. _r$3 = peek_token(parser$1); /* */ $s = 4; case 4: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  33408. token = _r$3;
  33409. if (token === ptrType$10.nil) {
  33410. return false;
  33411. }
  33412. /* */ if (!((token.typ === 15)) && !((token.typ === 13))) { $s = 5; continue; }
  33413. /* */ $s = 6; continue;
  33414. /* if (!((token.typ === 15)) && !((token.typ === 13))) { */ case 5:
  33415. parser$1.states = $append(parser$1.states, 20);
  33416. _r$4 = yaml_parser_parse_node(parser$1, event, false, false); /* */ $s = 7; case 7: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
  33417. return _r$4;
  33418. /* } */ case 6:
  33419. /* } */ case 3:
  33420. parser$1.state = 20;
  33421. return yaml_parser_process_empty_scalar(parser$1, event, token.start_mark);
  33422. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: yaml_parser_parse_flow_mapping_value }; } $f.$ptr = $ptr; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f.empty = empty; $f.event = event; $f.parser$1 = parser$1; $f.token = token; $f.$s = $s; $f.$r = $r; return $f;
  33423. };
  33424. yaml_parser_process_empty_scalar = function(parser$1, event, mark) {
  33425. var $ptr, event, mark, parser$1;
  33426. mark = $clone(mark, yaml_mark_t);
  33427. $copy(event, new yaml_event_t.ptr(6, $clone(mark, yaml_mark_t), $clone(mark, yaml_mark_t), 0, ptrType$3.nil, sliceType.nil, sliceType$1.nil, sliceType$1.nil, sliceType$1.nil, true, false, 1), yaml_event_t);
  33428. return true;
  33429. };
  33430. yaml_parser_process_directives = function(parser$1, version_directive_ref, tag_directives_ref) {
  33431. var $ptr, _i, _r$2, _r$3, _ref, i, parser$1, tag_directives, tag_directives_ref, token, value, version_directive, version_directive_ref, $s, $r;
  33432. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _i = $f._i; _r$2 = $f._r$2; _r$3 = $f._r$3; _ref = $f._ref; i = $f.i; parser$1 = $f.parser$1; tag_directives = $f.tag_directives; tag_directives_ref = $f.tag_directives_ref; token = $f.token; value = $f.value; version_directive = $f.version_directive; version_directive_ref = $f.version_directive_ref; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  33433. version_directive = ptrType$3.nil;
  33434. tag_directives = sliceType.nil;
  33435. _r$2 = peek_token(parser$1); /* */ $s = 1; case 1: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  33436. token = _r$2;
  33437. if (token === ptrType$10.nil) {
  33438. return false;
  33439. }
  33440. /* while (true) { */ case 2:
  33441. /* if (!((token.typ === 3) || (token.typ === 4))) { break; } */ if(!((token.typ === 3) || (token.typ === 4))) { $s = 3; continue; }
  33442. if (token.typ === 3) {
  33443. if (!(version_directive === ptrType$3.nil)) {
  33444. yaml_parser_set_parser_error(parser$1, "found duplicate %YAML directive", token.start_mark);
  33445. return false;
  33446. }
  33447. if (!((token.major === 1)) || !((token.minor === 1))) {
  33448. yaml_parser_set_parser_error(parser$1, "found incompatible YAML document", token.start_mark);
  33449. return false;
  33450. }
  33451. version_directive = new yaml_version_directive_t.ptr(token.major, token.minor);
  33452. } else if (token.typ === 4) {
  33453. value = new yaml_tag_directive_t.ptr(token.value, token.prefix);
  33454. if (!yaml_parser_append_tag_directive(parser$1, value, false, token.start_mark)) {
  33455. return false;
  33456. }
  33457. tag_directives = $append(tag_directives, value);
  33458. }
  33459. skip_token(parser$1);
  33460. _r$3 = peek_token(parser$1); /* */ $s = 4; case 4: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  33461. token = _r$3;
  33462. if (token === ptrType$10.nil) {
  33463. return false;
  33464. }
  33465. /* } */ $s = 2; continue; case 3:
  33466. _ref = default_tag_directives;
  33467. _i = 0;
  33468. while (true) {
  33469. if (!(_i < _ref.$length)) { break; }
  33470. i = _i;
  33471. if (!yaml_parser_append_tag_directive(parser$1, ((i < 0 || i >= default_tag_directives.$length) ? $throwRuntimeError("index out of range") : default_tag_directives.$array[default_tag_directives.$offset + i]), true, token.start_mark)) {
  33472. return false;
  33473. }
  33474. _i++;
  33475. }
  33476. if (!(version_directive_ref === ptrType$11.nil)) {
  33477. version_directive_ref.$set(version_directive);
  33478. }
  33479. if (!(tag_directives_ref === ptrType$12.nil)) {
  33480. tag_directives_ref.$set(tag_directives);
  33481. }
  33482. return true;
  33483. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: yaml_parser_process_directives }; } $f.$ptr = $ptr; $f._i = _i; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._ref = _ref; $f.i = i; $f.parser$1 = parser$1; $f.tag_directives = tag_directives; $f.tag_directives_ref = tag_directives_ref; $f.token = token; $f.value = value; $f.version_directive = version_directive; $f.version_directive_ref = version_directive_ref; $f.$s = $s; $f.$r = $r; return $f;
  33484. };
  33485. yaml_parser_append_tag_directive = function(parser$1, value, allow_duplicates, mark) {
  33486. var $ptr, _i, _ref, allow_duplicates, i, mark, parser$1, value, value_copy, x$1;
  33487. mark = $clone(mark, yaml_mark_t);
  33488. value = $clone(value, yaml_tag_directive_t);
  33489. _ref = parser$1.tag_directives;
  33490. _i = 0;
  33491. while (true) {
  33492. if (!(_i < _ref.$length)) { break; }
  33493. i = _i;
  33494. if (bytes.Equal(value.handle, (x$1 = parser$1.tag_directives, ((i < 0 || i >= x$1.$length) ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + i])).handle)) {
  33495. if (allow_duplicates) {
  33496. return true;
  33497. }
  33498. return yaml_parser_set_parser_error(parser$1, "found duplicate %TAG directive", mark);
  33499. }
  33500. _i++;
  33501. }
  33502. value_copy = new yaml_tag_directive_t.ptr($makeSlice(sliceType$1, value.handle.$length), $makeSlice(sliceType$1, value.prefix.$length));
  33503. $copySlice(value_copy.handle, value.handle);
  33504. $copySlice(value_copy.prefix, value.prefix);
  33505. parser$1.tag_directives = $append(parser$1.tag_directives, value_copy);
  33506. return true;
  33507. };
  33508. yaml_parser_set_reader_error = function(parser$1, problem, offset, value) {
  33509. var $ptr, offset, parser$1, problem, value;
  33510. parser$1.error = 2;
  33511. parser$1.problem = problem;
  33512. parser$1.problem_offset = offset;
  33513. parser$1.problem_value = value;
  33514. return false;
  33515. };
  33516. yaml_parser_determine_encoding = function(parser$1) {
  33517. var $ptr, _r$2, avail, buf, parser$1, pos, x$1, x$2, x$3, x$4, $s, $r;
  33518. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r$2 = $f._r$2; avail = $f.avail; buf = $f.buf; parser$1 = $f.parser$1; pos = $f.pos; x$1 = $f.x$1; x$2 = $f.x$2; x$3 = $f.x$3; x$4 = $f.x$4; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  33519. /* while (true) { */ case 1:
  33520. /* if (!(!parser$1.eof && (parser$1.raw_buffer.$length - parser$1.raw_buffer_pos >> 0) < 3)) { break; } */ if(!(!parser$1.eof && (parser$1.raw_buffer.$length - parser$1.raw_buffer_pos >> 0) < 3)) { $s = 2; continue; }
  33521. _r$2 = yaml_parser_update_raw_buffer(parser$1); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  33522. /* */ if (!_r$2) { $s = 3; continue; }
  33523. /* */ $s = 4; continue;
  33524. /* if (!_r$2) { */ case 3:
  33525. return false;
  33526. /* } */ case 4:
  33527. /* } */ $s = 1; continue; case 2:
  33528. buf = parser$1.raw_buffer;
  33529. pos = parser$1.raw_buffer_pos;
  33530. avail = buf.$length - pos >> 0;
  33531. if (avail >= 2 && (((pos < 0 || pos >= buf.$length) ? $throwRuntimeError("index out of range") : buf.$array[buf.$offset + pos]) === "\xFF\xFE".charCodeAt(0)) && ((x$1 = pos + 1 >> 0, ((x$1 < 0 || x$1 >= buf.$length) ? $throwRuntimeError("index out of range") : buf.$array[buf.$offset + x$1])) === "\xFF\xFE".charCodeAt(1))) {
  33532. parser$1.encoding = 2;
  33533. parser$1.raw_buffer_pos = parser$1.raw_buffer_pos + (2) >> 0;
  33534. parser$1.offset = parser$1.offset + (2) >> 0;
  33535. } else if (avail >= 2 && (((pos < 0 || pos >= buf.$length) ? $throwRuntimeError("index out of range") : buf.$array[buf.$offset + pos]) === "\xFE\xFF".charCodeAt(0)) && ((x$2 = pos + 1 >> 0, ((x$2 < 0 || x$2 >= buf.$length) ? $throwRuntimeError("index out of range") : buf.$array[buf.$offset + x$2])) === "\xFE\xFF".charCodeAt(1))) {
  33536. parser$1.encoding = 3;
  33537. parser$1.raw_buffer_pos = parser$1.raw_buffer_pos + (2) >> 0;
  33538. parser$1.offset = parser$1.offset + (2) >> 0;
  33539. } else if (avail >= 3 && (((pos < 0 || pos >= buf.$length) ? $throwRuntimeError("index out of range") : buf.$array[buf.$offset + pos]) === "\xEF\xBB\xBF".charCodeAt(0)) && ((x$3 = pos + 1 >> 0, ((x$3 < 0 || x$3 >= buf.$length) ? $throwRuntimeError("index out of range") : buf.$array[buf.$offset + x$3])) === "\xEF\xBB\xBF".charCodeAt(1)) && ((x$4 = pos + 2 >> 0, ((x$4 < 0 || x$4 >= buf.$length) ? $throwRuntimeError("index out of range") : buf.$array[buf.$offset + x$4])) === "\xEF\xBB\xBF".charCodeAt(2))) {
  33540. parser$1.encoding = 1;
  33541. parser$1.raw_buffer_pos = parser$1.raw_buffer_pos + (3) >> 0;
  33542. parser$1.offset = parser$1.offset + (3) >> 0;
  33543. } else {
  33544. parser$1.encoding = 1;
  33545. }
  33546. return true;
  33547. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: yaml_parser_determine_encoding }; } $f.$ptr = $ptr; $f._r$2 = _r$2; $f.avail = avail; $f.buf = buf; $f.parser$1 = parser$1; $f.pos = pos; $f.x$1 = x$1; $f.x$2 = x$2; $f.x$3 = x$3; $f.x$4 = x$4; $f.$s = $s; $f.$r = $r; return $f;
  33548. };
  33549. yaml_parser_update_raw_buffer = function(parser$1) {
  33550. var $ptr, _arg, _arg$1, _arg$2, _r$2, _r$3, _r$4, _tuple, err, parser$1, size_read, $s, $r;
  33551. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _arg = $f._arg; _arg$1 = $f._arg$1; _arg$2 = $f._arg$2; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _tuple = $f._tuple; err = $f.err; parser$1 = $f.parser$1; size_read = $f.size_read; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  33552. size_read = 0;
  33553. if ((parser$1.raw_buffer_pos === 0) && (parser$1.raw_buffer.$length === parser$1.raw_buffer.$capacity)) {
  33554. return true;
  33555. }
  33556. if (parser$1.eof) {
  33557. return true;
  33558. }
  33559. if (parser$1.raw_buffer_pos > 0 && parser$1.raw_buffer_pos < parser$1.raw_buffer.$length) {
  33560. $copySlice(parser$1.raw_buffer, $subslice(parser$1.raw_buffer, parser$1.raw_buffer_pos));
  33561. }
  33562. parser$1.raw_buffer = $subslice(parser$1.raw_buffer, 0, (parser$1.raw_buffer.$length - parser$1.raw_buffer_pos >> 0));
  33563. parser$1.raw_buffer_pos = 0;
  33564. _r$2 = parser$1.read_handler(parser$1, $subslice(parser$1.raw_buffer, parser$1.raw_buffer.$length, parser$1.raw_buffer.$capacity)); /* */ $s = 1; case 1: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  33565. _tuple = _r$2; size_read = _tuple[0]; err = _tuple[1];
  33566. parser$1.raw_buffer = $subslice(parser$1.raw_buffer, 0, (parser$1.raw_buffer.$length + size_read >> 0));
  33567. /* */ if ($interfaceIsEqual(err, io.EOF)) { $s = 2; continue; }
  33568. /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 3; continue; }
  33569. /* */ $s = 4; continue;
  33570. /* if ($interfaceIsEqual(err, io.EOF)) { */ case 2:
  33571. parser$1.eof = true;
  33572. $s = 4; continue;
  33573. /* } else if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 3:
  33574. _arg = parser$1;
  33575. _r$3 = err.Error(); /* */ $s = 5; case 5: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  33576. _arg$1 = "input error: " + _r$3;
  33577. _arg$2 = parser$1.offset;
  33578. _r$4 = yaml_parser_set_reader_error(_arg, _arg$1, _arg$2, -1); /* */ $s = 6; case 6: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
  33579. return _r$4;
  33580. /* } */ case 4:
  33581. return true;
  33582. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: yaml_parser_update_raw_buffer }; } $f.$ptr = $ptr; $f._arg = _arg; $f._arg$1 = _arg$1; $f._arg$2 = _arg$2; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._tuple = _tuple; $f.err = err; $f.parser$1 = parser$1; $f.size_read = size_read; $f.$s = $s; $f.$r = $r; return $f;
  33583. };
  33584. yaml_parser_update_buffer = function(parser$1, length) {
  33585. var $ptr, _r$2, _r$3, _ref, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, buffer_len, first, high, k, length, low, octet, parser$1, raw_unread, value, value2, width$1, x$1, x$10, x$11, x$12, x$13, x$14, x$15, x$16, x$17, x$18, x$19, x$2, x$20, x$21, x$22, x$23, x$24, x$25, x$26, x$27, x$28, x$29, x$3, x$30, x$31, x$32, x$33, x$4, x$5, x$6, x$7, x$8, x$9, $s, $r;
  33586. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r$2 = $f._r$2; _r$3 = $f._r$3; _ref = $f._ref; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; buffer_len = $f.buffer_len; first = $f.first; high = $f.high; k = $f.k; length = $f.length; low = $f.low; octet = $f.octet; parser$1 = $f.parser$1; raw_unread = $f.raw_unread; value = $f.value; value2 = $f.value2; width$1 = $f.width$1; x$1 = $f.x$1; x$10 = $f.x$10; x$11 = $f.x$11; x$12 = $f.x$12; x$13 = $f.x$13; x$14 = $f.x$14; x$15 = $f.x$15; x$16 = $f.x$16; x$17 = $f.x$17; x$18 = $f.x$18; x$19 = $f.x$19; x$2 = $f.x$2; x$20 = $f.x$20; x$21 = $f.x$21; x$22 = $f.x$22; x$23 = $f.x$23; x$24 = $f.x$24; x$25 = $f.x$25; x$26 = $f.x$26; x$27 = $f.x$27; x$28 = $f.x$28; x$29 = $f.x$29; x$3 = $f.x$3; x$30 = $f.x$30; x$31 = $f.x$31; x$32 = $f.x$32; x$33 = $f.x$33; x$4 = $f.x$4; x$5 = $f.x$5; x$6 = $f.x$6; x$7 = $f.x$7; x$8 = $f.x$8; x$9 = $f.x$9; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  33587. if (parser$1.read_handler === $throwNilPointerError) {
  33588. $panic(new $String("read handler must be set"));
  33589. }
  33590. if (parser$1.eof && (parser$1.raw_buffer_pos === parser$1.raw_buffer.$length)) {
  33591. return true;
  33592. }
  33593. if (parser$1.unread >= length) {
  33594. return true;
  33595. }
  33596. /* */ if (parser$1.encoding === 0) { $s = 1; continue; }
  33597. /* */ $s = 2; continue;
  33598. /* if (parser$1.encoding === 0) { */ case 1:
  33599. _r$2 = yaml_parser_determine_encoding(parser$1); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  33600. /* */ if (!_r$2) { $s = 3; continue; }
  33601. /* */ $s = 4; continue;
  33602. /* if (!_r$2) { */ case 3:
  33603. return false;
  33604. /* } */ case 4:
  33605. /* } */ case 2:
  33606. buffer_len = parser$1.buffer.$length;
  33607. if (parser$1.buffer_pos > 0 && parser$1.buffer_pos < buffer_len) {
  33608. $copySlice(parser$1.buffer, $subslice(parser$1.buffer, parser$1.buffer_pos));
  33609. buffer_len = buffer_len - (parser$1.buffer_pos) >> 0;
  33610. parser$1.buffer_pos = 0;
  33611. } else if (parser$1.buffer_pos === buffer_len) {
  33612. buffer_len = 0;
  33613. parser$1.buffer_pos = 0;
  33614. }
  33615. parser$1.buffer = $subslice(parser$1.buffer, 0, parser$1.buffer.$capacity);
  33616. first = true;
  33617. /* while (true) { */ case 6:
  33618. /* if (!(parser$1.unread < length)) { break; } */ if(!(parser$1.unread < length)) { $s = 7; continue; }
  33619. /* */ if (!first || (parser$1.raw_buffer_pos === parser$1.raw_buffer.$length)) { $s = 8; continue; }
  33620. /* */ $s = 9; continue;
  33621. /* if (!first || (parser$1.raw_buffer_pos === parser$1.raw_buffer.$length)) { */ case 8:
  33622. _r$3 = yaml_parser_update_raw_buffer(parser$1); /* */ $s = 12; case 12: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  33623. /* */ if (!_r$3) { $s = 10; continue; }
  33624. /* */ $s = 11; continue;
  33625. /* if (!_r$3) { */ case 10:
  33626. parser$1.buffer = $subslice(parser$1.buffer, 0, buffer_len);
  33627. return false;
  33628. /* } */ case 11:
  33629. /* } */ case 9:
  33630. first = false;
  33631. inner:
  33632. while (true) {
  33633. if (!(!((parser$1.raw_buffer_pos === parser$1.raw_buffer.$length)))) { break; }
  33634. value = 0;
  33635. width$1 = 0;
  33636. raw_unread = parser$1.raw_buffer.$length - parser$1.raw_buffer_pos >> 0;
  33637. _ref = parser$1.encoding;
  33638. if (_ref === 1) {
  33639. octet = (x$1 = parser$1.raw_buffer, x$2 = parser$1.raw_buffer_pos, ((x$2 < 0 || x$2 >= x$1.$length) ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + x$2]));
  33640. if (((octet & 128) >>> 0) === 0) {
  33641. width$1 = 1;
  33642. } else if (((octet & 224) >>> 0) === 192) {
  33643. width$1 = 2;
  33644. } else if (((octet & 240) >>> 0) === 224) {
  33645. width$1 = 3;
  33646. } else if (((octet & 248) >>> 0) === 240) {
  33647. width$1 = 4;
  33648. } else {
  33649. return yaml_parser_set_reader_error(parser$1, "invalid leading UTF-8 octet", parser$1.offset, (octet >> 0));
  33650. }
  33651. if (width$1 > raw_unread) {
  33652. if (parser$1.eof) {
  33653. return yaml_parser_set_reader_error(parser$1, "incomplete UTF-8 octet sequence", parser$1.offset, -1);
  33654. }
  33655. break inner;
  33656. }
  33657. if (((octet & 128) >>> 0) === 0) {
  33658. value = (((octet & 127) >>> 0) >> 0);
  33659. } else if (((octet & 224) >>> 0) === 192) {
  33660. value = (((octet & 31) >>> 0) >> 0);
  33661. } else if (((octet & 240) >>> 0) === 224) {
  33662. value = (((octet & 15) >>> 0) >> 0);
  33663. } else if (((octet & 248) >>> 0) === 240) {
  33664. value = (((octet & 7) >>> 0) >> 0);
  33665. } else {
  33666. value = 0;
  33667. }
  33668. k = 1;
  33669. while (true) {
  33670. if (!(k < width$1)) { break; }
  33671. octet = (x$3 = parser$1.raw_buffer, x$4 = parser$1.raw_buffer_pos + k >> 0, ((x$4 < 0 || x$4 >= x$3.$length) ? $throwRuntimeError("index out of range") : x$3.$array[x$3.$offset + x$4]));
  33672. if (!(((((octet & 192) >>> 0)) === 128))) {
  33673. return yaml_parser_set_reader_error(parser$1, "invalid trailing UTF-8 octet", parser$1.offset + k >> 0, (octet >> 0));
  33674. }
  33675. value = ((value << 6 >> 0)) + (((octet & 63) >>> 0) >> 0) >> 0;
  33676. k = k + (1) >> 0;
  33677. }
  33678. if (width$1 === 1) {
  33679. } else if ((width$1 === 2) && value >= 128) {
  33680. } else if ((width$1 === 3) && value >= 2048) {
  33681. } else if ((width$1 === 4) && value >= 65536) {
  33682. } else {
  33683. return yaml_parser_set_reader_error(parser$1, "invalid length of a UTF-8 sequence", parser$1.offset, -1);
  33684. }
  33685. if (value >= 55296 && value <= 57343 || value > 1114111) {
  33686. return yaml_parser_set_reader_error(parser$1, "invalid Unicode character", parser$1.offset, (value >> 0));
  33687. }
  33688. } else if (_ref === 2 || _ref === 3) {
  33689. _tmp = 0; _tmp$1 = 0; low = _tmp; high = _tmp$1;
  33690. if (parser$1.encoding === 2) {
  33691. _tmp$2 = 0; _tmp$3 = 1; low = _tmp$2; high = _tmp$3;
  33692. } else {
  33693. _tmp$4 = 1; _tmp$5 = 0; high = _tmp$4; low = _tmp$5;
  33694. }
  33695. if (raw_unread < 2) {
  33696. if (parser$1.eof) {
  33697. return yaml_parser_set_reader_error(parser$1, "incomplete UTF-16 character", parser$1.offset, -1);
  33698. }
  33699. break inner;
  33700. }
  33701. value = ((x$5 = parser$1.raw_buffer, x$6 = parser$1.raw_buffer_pos + low >> 0, ((x$6 < 0 || x$6 >= x$5.$length) ? $throwRuntimeError("index out of range") : x$5.$array[x$5.$offset + x$6])) >> 0) + ((((x$7 = parser$1.raw_buffer, x$8 = parser$1.raw_buffer_pos + high >> 0, ((x$8 < 0 || x$8 >= x$7.$length) ? $throwRuntimeError("index out of range") : x$7.$array[x$7.$offset + x$8])) >> 0) << 8 >> 0)) >> 0;
  33702. if ((value & 64512) === 56320) {
  33703. return yaml_parser_set_reader_error(parser$1, "unexpected low surrogate area", parser$1.offset, (value >> 0));
  33704. }
  33705. if ((value & 64512) === 55296) {
  33706. width$1 = 4;
  33707. if (raw_unread < 4) {
  33708. if (parser$1.eof) {
  33709. return yaml_parser_set_reader_error(parser$1, "incomplete UTF-16 surrogate pair", parser$1.offset, -1);
  33710. }
  33711. break inner;
  33712. }
  33713. value2 = ((x$9 = parser$1.raw_buffer, x$10 = (parser$1.raw_buffer_pos + low >> 0) + 2 >> 0, ((x$10 < 0 || x$10 >= x$9.$length) ? $throwRuntimeError("index out of range") : x$9.$array[x$9.$offset + x$10])) >> 0) + ((((x$11 = parser$1.raw_buffer, x$12 = (parser$1.raw_buffer_pos + high >> 0) + 2 >> 0, ((x$12 < 0 || x$12 >= x$11.$length) ? $throwRuntimeError("index out of range") : x$11.$array[x$11.$offset + x$12])) >> 0) << 8 >> 0)) >> 0;
  33714. if (!(((value2 & 64512) === 56320))) {
  33715. return yaml_parser_set_reader_error(parser$1, "expected low surrogate area", parser$1.offset + 2 >> 0, (value2 >> 0));
  33716. }
  33717. value = (65536 + ((((value & 1023)) << 10 >> 0)) >> 0) + ((value2 & 1023)) >> 0;
  33718. } else {
  33719. width$1 = 2;
  33720. }
  33721. } else {
  33722. $panic(new $String("impossible"));
  33723. }
  33724. if (value === 9) {
  33725. } else if (value === 10) {
  33726. } else if (value === 13) {
  33727. } else if (value >= 32 && value <= 126) {
  33728. } else if (value === 133) {
  33729. } else if (value >= 160 && value <= 55295) {
  33730. } else if (value >= 57344 && value <= 65533) {
  33731. } else if (value >= 65536 && value <= 1114111) {
  33732. } else {
  33733. return yaml_parser_set_reader_error(parser$1, "control characters are not allowed", parser$1.offset, (value >> 0));
  33734. }
  33735. parser$1.raw_buffer_pos = parser$1.raw_buffer_pos + (width$1) >> 0;
  33736. parser$1.offset = parser$1.offset + (width$1) >> 0;
  33737. if (value <= 127) {
  33738. (x$13 = parser$1.buffer, x$14 = buffer_len + 0 >> 0, ((x$14 < 0 || x$14 >= x$13.$length) ? $throwRuntimeError("index out of range") : x$13.$array[x$13.$offset + x$14] = (value << 24 >>> 24)));
  33739. } else if (value <= 2047) {
  33740. (x$15 = parser$1.buffer, x$16 = buffer_len + 0 >> 0, ((x$16 < 0 || x$16 >= x$15.$length) ? $throwRuntimeError("index out of range") : x$15.$array[x$15.$offset + x$16] = ((192 + ((value >> 6 >> 0)) >> 0) << 24 >>> 24)));
  33741. (x$17 = parser$1.buffer, x$18 = buffer_len + 1 >> 0, ((x$18 < 0 || x$18 >= x$17.$length) ? $throwRuntimeError("index out of range") : x$17.$array[x$17.$offset + x$18] = ((128 + ((value & 63)) >> 0) << 24 >>> 24)));
  33742. } else if (value <= 65535) {
  33743. (x$19 = parser$1.buffer, x$20 = buffer_len + 0 >> 0, ((x$20 < 0 || x$20 >= x$19.$length) ? $throwRuntimeError("index out of range") : x$19.$array[x$19.$offset + x$20] = ((224 + ((value >> 12 >> 0)) >> 0) << 24 >>> 24)));
  33744. (x$21 = parser$1.buffer, x$22 = buffer_len + 1 >> 0, ((x$22 < 0 || x$22 >= x$21.$length) ? $throwRuntimeError("index out of range") : x$21.$array[x$21.$offset + x$22] = ((128 + ((((value >> 6 >> 0)) & 63)) >> 0) << 24 >>> 24)));
  33745. (x$23 = parser$1.buffer, x$24 = buffer_len + 2 >> 0, ((x$24 < 0 || x$24 >= x$23.$length) ? $throwRuntimeError("index out of range") : x$23.$array[x$23.$offset + x$24] = ((128 + ((value & 63)) >> 0) << 24 >>> 24)));
  33746. } else {
  33747. (x$25 = parser$1.buffer, x$26 = buffer_len + 0 >> 0, ((x$26 < 0 || x$26 >= x$25.$length) ? $throwRuntimeError("index out of range") : x$25.$array[x$25.$offset + x$26] = ((240 + ((value >> 18 >> 0)) >> 0) << 24 >>> 24)));
  33748. (x$27 = parser$1.buffer, x$28 = buffer_len + 1 >> 0, ((x$28 < 0 || x$28 >= x$27.$length) ? $throwRuntimeError("index out of range") : x$27.$array[x$27.$offset + x$28] = ((128 + ((((value >> 12 >> 0)) & 63)) >> 0) << 24 >>> 24)));
  33749. (x$29 = parser$1.buffer, x$30 = buffer_len + 2 >> 0, ((x$30 < 0 || x$30 >= x$29.$length) ? $throwRuntimeError("index out of range") : x$29.$array[x$29.$offset + x$30] = ((128 + ((((value >> 6 >> 0)) & 63)) >> 0) << 24 >>> 24)));
  33750. (x$31 = parser$1.buffer, x$32 = buffer_len + 3 >> 0, ((x$32 < 0 || x$32 >= x$31.$length) ? $throwRuntimeError("index out of range") : x$31.$array[x$31.$offset + x$32] = ((128 + ((value & 63)) >> 0) << 24 >>> 24)));
  33751. }
  33752. buffer_len = buffer_len + (width$1) >> 0;
  33753. parser$1.unread = parser$1.unread + (1) >> 0;
  33754. }
  33755. if (parser$1.eof) {
  33756. (x$33 = parser$1.buffer, ((buffer_len < 0 || buffer_len >= x$33.$length) ? $throwRuntimeError("index out of range") : x$33.$array[x$33.$offset + buffer_len] = 0));
  33757. buffer_len = buffer_len + (1) >> 0;
  33758. parser$1.unread = parser$1.unread + (1) >> 0;
  33759. /* break; */ $s = 7; continue;
  33760. }
  33761. /* } */ $s = 6; continue; case 7:
  33762. parser$1.buffer = $subslice(parser$1.buffer, 0, buffer_len);
  33763. return true;
  33764. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: yaml_parser_update_buffer }; } $f.$ptr = $ptr; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._ref = _ref; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f.buffer_len = buffer_len; $f.first = first; $f.high = high; $f.k = k; $f.length = length; $f.low = low; $f.octet = octet; $f.parser$1 = parser$1; $f.raw_unread = raw_unread; $f.value = value; $f.value2 = value2; $f.width$1 = width$1; $f.x$1 = x$1; $f.x$10 = x$10; $f.x$11 = x$11; $f.x$12 = x$12; $f.x$13 = x$13; $f.x$14 = x$14; $f.x$15 = x$15; $f.x$16 = x$16; $f.x$17 = x$17; $f.x$18 = x$18; $f.x$19 = x$19; $f.x$2 = x$2; $f.x$20 = x$20; $f.x$21 = x$21; $f.x$22 = x$22; $f.x$23 = x$23; $f.x$24 = x$24; $f.x$25 = x$25; $f.x$26 = x$26; $f.x$27 = x$27; $f.x$28 = x$28; $f.x$29 = x$29; $f.x$3 = x$3; $f.x$30 = x$30; $f.x$31 = x$31; $f.x$32 = x$32; $f.x$33 = x$33; $f.x$4 = x$4; $f.x$5 = x$5; $f.x$6 = x$6; $f.x$7 = x$7; $f.x$8 = x$8; $f.x$9 = x$9; $f.$s = $s; $f.$r = $r; return $f;
  33765. };
  33766. init = function() {
  33767. var $ptr, _i, _i$1, _i$2, _i$3, _key$1, _ref, _ref$1, _ref$2, _ref$3, _rune, _rune$1, c, c$1, item, m, resolveMapList, s, t, x$1, x$2;
  33768. t = resolveTable;
  33769. (43 >= t.$length ? $throwRuntimeError("index out of range") : t.$array[t.$offset + 43] = 83);
  33770. (45 >= t.$length ? $throwRuntimeError("index out of range") : t.$array[t.$offset + 45] = 83);
  33771. _ref = "0123456789";
  33772. _i = 0;
  33773. while (true) {
  33774. if (!(_i < _ref.length)) { break; }
  33775. _rune = $decodeRune(_ref, _i);
  33776. c = _rune[0];
  33777. (x$1 = (c >> 0), ((x$1 < 0 || x$1 >= t.$length) ? $throwRuntimeError("index out of range") : t.$array[t.$offset + x$1] = 68));
  33778. _i += _rune[1];
  33779. }
  33780. _ref$1 = "yYnNtTfFoO~";
  33781. _i$1 = 0;
  33782. while (true) {
  33783. if (!(_i$1 < _ref$1.length)) { break; }
  33784. _rune$1 = $decodeRune(_ref$1, _i$1);
  33785. c$1 = _rune$1[0];
  33786. (x$2 = (c$1 >> 0), ((x$2 < 0 || x$2 >= t.$length) ? $throwRuntimeError("index out of range") : t.$array[t.$offset + x$2] = 77));
  33787. _i$1 += _rune$1[1];
  33788. }
  33789. (46 >= t.$length ? $throwRuntimeError("index out of range") : t.$array[t.$offset + 46] = 46);
  33790. resolveMapList = new sliceType$14([new structType$4.ptr(new $Bool(true), "tag:yaml.org,2002:bool", new sliceType$12(["y", "Y", "yes", "Yes", "YES"])), new structType$4.ptr(new $Bool(true), "tag:yaml.org,2002:bool", new sliceType$12(["true", "True", "TRUE"])), new structType$4.ptr(new $Bool(true), "tag:yaml.org,2002:bool", new sliceType$12(["on", "On", "ON"])), new structType$4.ptr(new $Bool(false), "tag:yaml.org,2002:bool", new sliceType$12(["n", "N", "no", "No", "NO"])), new structType$4.ptr(new $Bool(false), "tag:yaml.org,2002:bool", new sliceType$12(["false", "False", "FALSE"])), new structType$4.ptr(new $Bool(false), "tag:yaml.org,2002:bool", new sliceType$12(["off", "Off", "OFF"])), new structType$4.ptr($ifaceNil, "tag:yaml.org,2002:null", new sliceType$12(["", "~", "null", "Null", "NULL"])), new structType$4.ptr(new $Float64(math.NaN()), "tag:yaml.org,2002:float", new sliceType$12([".nan", ".NaN", ".NAN"])), new structType$4.ptr(new $Float64(math.Inf(1)), "tag:yaml.org,2002:float", new sliceType$12([".inf", ".Inf", ".INF"])), new structType$4.ptr(new $Float64(math.Inf(1)), "tag:yaml.org,2002:float", new sliceType$12(["+.inf", "+.Inf", "+.INF"])), new structType$4.ptr(new $Float64(math.Inf(-1)), "tag:yaml.org,2002:float", new sliceType$12(["-.inf", "-.Inf", "-.INF"])), new structType$4.ptr(new $String("<<"), "tag:yaml.org,2002:merge", new sliceType$12(["<<"]))]);
  33791. m = resolveMap;
  33792. _ref$2 = resolveMapList;
  33793. _i$2 = 0;
  33794. while (true) {
  33795. if (!(_i$2 < _ref$2.$length)) { break; }
  33796. item = $clone(((_i$2 < 0 || _i$2 >= _ref$2.$length) ? $throwRuntimeError("index out of range") : _ref$2.$array[_ref$2.$offset + _i$2]), structType$4);
  33797. _ref$3 = item.l;
  33798. _i$3 = 0;
  33799. while (true) {
  33800. if (!(_i$3 < _ref$3.$length)) { break; }
  33801. s = ((_i$3 < 0 || _i$3 >= _ref$3.$length) ? $throwRuntimeError("index out of range") : _ref$3.$array[_ref$3.$offset + _i$3]);
  33802. _key$1 = s; (m || $throwRuntimeError("assignment to entry in nil map"))[_key$1] = { k: _key$1, v: new resolveMapItem.ptr(item.v, item.tag) };
  33803. _i$3++;
  33804. }
  33805. _i$2++;
  33806. }
  33807. };
  33808. shortTag = function(tag) {
  33809. var $ptr, tag;
  33810. if (strings.HasPrefix(tag, "tag:yaml.org,2002:")) {
  33811. return "!!" + tag.substring(18);
  33812. }
  33813. return tag;
  33814. };
  33815. resolvableTag = function(tag) {
  33816. var $ptr, _ref, tag;
  33817. _ref = tag;
  33818. if (_ref === "" || _ref === "tag:yaml.org,2002:str" || _ref === "tag:yaml.org,2002:bool" || _ref === "tag:yaml.org,2002:int" || _ref === "tag:yaml.org,2002:float" || _ref === "tag:yaml.org,2002:null") {
  33819. return true;
  33820. }
  33821. return false;
  33822. };
  33823. resolve = function(tag, in$1) {
  33824. var $ptr, _entry, _ref, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$16, _tmp$17, _tmp$18, _tmp$19, _tmp$2, _tmp$20, _tmp$21, _tmp$22, _tmp$23, _tmp$24, _tmp$25, _tmp$26, _tmp$27, _tmp$28, _tmp$29, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, _tuple$6, _tuple$7, err, err$1, err$2, err$3, floatv, floatv$1, hint, in$1, intv, intv$1, intv$2, item, ok, out, plain, rtag, tag, uintv, uintv$1, x$1, x$2, x$3, x$4, $s, $deferred, $r;
  33825. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _entry = $f._entry; _ref = $f._ref; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$10 = $f._tmp$10; _tmp$11 = $f._tmp$11; _tmp$12 = $f._tmp$12; _tmp$13 = $f._tmp$13; _tmp$14 = $f._tmp$14; _tmp$15 = $f._tmp$15; _tmp$16 = $f._tmp$16; _tmp$17 = $f._tmp$17; _tmp$18 = $f._tmp$18; _tmp$19 = $f._tmp$19; _tmp$2 = $f._tmp$2; _tmp$20 = $f._tmp$20; _tmp$21 = $f._tmp$21; _tmp$22 = $f._tmp$22; _tmp$23 = $f._tmp$23; _tmp$24 = $f._tmp$24; _tmp$25 = $f._tmp$25; _tmp$26 = $f._tmp$26; _tmp$27 = $f._tmp$27; _tmp$28 = $f._tmp$28; _tmp$29 = $f._tmp$29; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tmp$6 = $f._tmp$6; _tmp$7 = $f._tmp$7; _tmp$8 = $f._tmp$8; _tmp$9 = $f._tmp$9; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; _tuple$4 = $f._tuple$4; _tuple$5 = $f._tuple$5; _tuple$6 = $f._tuple$6; _tuple$7 = $f._tuple$7; err = $f.err; err$1 = $f.err$1; err$2 = $f.err$2; err$3 = $f.err$3; floatv = $f.floatv; floatv$1 = $f.floatv$1; hint = $f.hint; in$1 = $f.in$1; intv = $f.intv; intv$1 = $f.intv$1; intv$2 = $f.intv$2; item = $f.item; ok = $f.ok; out = $f.out; plain = $f.plain; rtag = $f.rtag; tag = $f.tag; uintv = $f.uintv; uintv$1 = $f.uintv$1; x$1 = $f.x$1; x$2 = $f.x$2; x$3 = $f.x$3; x$4 = $f.x$4; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
  33826. in$1 = [in$1];
  33827. rtag = [rtag];
  33828. tag = [tag];
  33829. rtag[0] = "";
  33830. out = $ifaceNil;
  33831. if (!resolvableTag(tag[0])) {
  33832. _tmp = tag[0]; _tmp$1 = new $String(in$1[0]); rtag[0] = _tmp; out = _tmp$1;
  33833. return [rtag[0], out];
  33834. }
  33835. $deferred.push([(function(in$1, rtag, tag) { return function $b() {
  33836. var $ptr, _ref, $s, $r;
  33837. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _ref = $f._ref; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  33838. _ref = tag[0];
  33839. if (_ref === "" || _ref === rtag[0] || _ref === "tag:yaml.org,2002:str" || _ref === "tag:yaml.org,2002:binary") {
  33840. return;
  33841. }
  33842. $r = failf("cannot decode %s `%s` as a %s", new sliceType$10([new $String(shortTag(rtag[0])), new $String(in$1[0]), new $String(shortTag(tag[0]))])); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  33843. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: $b }; } $f.$ptr = $ptr; $f._ref = _ref; $f.$s = $s; $f.$r = $r; return $f;
  33844. }; })(in$1, rtag, tag), []]);
  33845. hint = 78;
  33846. if (!(in$1[0] === "")) {
  33847. hint = (x$1 = in$1[0].charCodeAt(0), ((x$1 < 0 || x$1 >= resolveTable.$length) ? $throwRuntimeError("index out of range") : resolveTable.$array[resolveTable.$offset + x$1]));
  33848. }
  33849. if (!((hint === 0)) && !(tag[0] === "tag:yaml.org,2002:str") && !(tag[0] === "tag:yaml.org,2002:binary")) {
  33850. _tuple = (_entry = resolveMap[in$1[0]], _entry !== undefined ? [_entry.v, true] : [new resolveMapItem.ptr(), false]); item = $clone(_tuple[0], resolveMapItem); ok = _tuple[1];
  33851. if (ok) {
  33852. _tmp$2 = item.tag; _tmp$3 = item.value; rtag[0] = _tmp$2; out = _tmp$3;
  33853. return [rtag[0], out];
  33854. }
  33855. _ref = hint;
  33856. if (_ref === 77) {
  33857. } else if (_ref === 46) {
  33858. _tuple$1 = strconv.ParseFloat(in$1[0], 64); floatv = _tuple$1[0]; err = _tuple$1[1];
  33859. if ($interfaceIsEqual(err, $ifaceNil)) {
  33860. _tmp$4 = "tag:yaml.org,2002:float"; _tmp$5 = new $Float64(floatv); rtag[0] = _tmp$4; out = _tmp$5;
  33861. return [rtag[0], out];
  33862. }
  33863. } else if (_ref === 68 || _ref === 83) {
  33864. plain = strings.Replace(in$1[0], "_", "", -1);
  33865. _tuple$2 = strconv.ParseInt(plain, 0, 64); intv = _tuple$2[0]; err$1 = _tuple$2[1];
  33866. if ($interfaceIsEqual(err$1, $ifaceNil)) {
  33867. if ((x$2 = new $Int64(0, ((intv.$low + ((intv.$high >> 31) * 4294967296)) >> 0)), (intv.$high === x$2.$high && intv.$low === x$2.$low))) {
  33868. _tmp$6 = "tag:yaml.org,2002:int"; _tmp$7 = new $Int(((intv.$low + ((intv.$high >> 31) * 4294967296)) >> 0)); rtag[0] = _tmp$6; out = _tmp$7;
  33869. return [rtag[0], out];
  33870. } else {
  33871. _tmp$8 = "tag:yaml.org,2002:int"; _tmp$9 = intv; rtag[0] = _tmp$8; out = _tmp$9;
  33872. return [rtag[0], out];
  33873. }
  33874. }
  33875. _tuple$3 = strconv.ParseUint(plain, 0, 64); uintv = _tuple$3[0]; err$1 = _tuple$3[1];
  33876. if ($interfaceIsEqual(err$1, $ifaceNil)) {
  33877. _tmp$10 = "tag:yaml.org,2002:int"; _tmp$11 = uintv; rtag[0] = _tmp$10; out = _tmp$11;
  33878. return [rtag[0], out];
  33879. }
  33880. _tuple$4 = strconv.ParseFloat(plain, 64); floatv$1 = _tuple$4[0]; err$1 = _tuple$4[1];
  33881. if ($interfaceIsEqual(err$1, $ifaceNil)) {
  33882. _tmp$12 = "tag:yaml.org,2002:float"; _tmp$13 = new $Float64(floatv$1); rtag[0] = _tmp$12; out = _tmp$13;
  33883. return [rtag[0], out];
  33884. }
  33885. if (strings.HasPrefix(plain, "0b")) {
  33886. _tuple$5 = strconv.ParseInt(plain.substring(2), 2, 64); intv$1 = _tuple$5[0]; err$2 = _tuple$5[1];
  33887. if ($interfaceIsEqual(err$2, $ifaceNil)) {
  33888. if ((x$3 = new $Int64(0, ((intv$1.$low + ((intv$1.$high >> 31) * 4294967296)) >> 0)), (intv$1.$high === x$3.$high && intv$1.$low === x$3.$low))) {
  33889. _tmp$14 = "tag:yaml.org,2002:int"; _tmp$15 = new $Int(((intv$1.$low + ((intv$1.$high >> 31) * 4294967296)) >> 0)); rtag[0] = _tmp$14; out = _tmp$15;
  33890. return [rtag[0], out];
  33891. } else {
  33892. _tmp$16 = "tag:yaml.org,2002:int"; _tmp$17 = intv$1; rtag[0] = _tmp$16; out = _tmp$17;
  33893. return [rtag[0], out];
  33894. }
  33895. }
  33896. _tuple$6 = strconv.ParseUint(plain.substring(2), 2, 64); uintv$1 = _tuple$6[0]; err$2 = _tuple$6[1];
  33897. if ($interfaceIsEqual(err$2, $ifaceNil)) {
  33898. _tmp$18 = "tag:yaml.org,2002:int"; _tmp$19 = uintv$1; rtag[0] = _tmp$18; out = _tmp$19;
  33899. return [rtag[0], out];
  33900. }
  33901. } else if (strings.HasPrefix(plain, "-0b")) {
  33902. _tuple$7 = strconv.ParseInt(plain.substring(3), 2, 64); intv$2 = _tuple$7[0]; err$3 = _tuple$7[1];
  33903. if ($interfaceIsEqual(err$3, $ifaceNil)) {
  33904. if ((x$4 = new $Int64(0, ((intv$2.$low + ((intv$2.$high >> 31) * 4294967296)) >> 0)), (intv$2.$high === x$4.$high && intv$2.$low === x$4.$low))) {
  33905. _tmp$20 = "tag:yaml.org,2002:int"; _tmp$21 = new $Int(-((intv$2.$low + ((intv$2.$high >> 31) * 4294967296)) >> 0)); rtag[0] = _tmp$20; out = _tmp$21;
  33906. return [rtag[0], out];
  33907. } else {
  33908. _tmp$22 = "tag:yaml.org,2002:int"; _tmp$23 = new $Int64(-intv$2.$high, -intv$2.$low); rtag[0] = _tmp$22; out = _tmp$23;
  33909. return [rtag[0], out];
  33910. }
  33911. }
  33912. }
  33913. } else {
  33914. $panic(new $String("resolveTable item not yet handled: " + $encodeRune((hint >> 0)) + " (with " + in$1[0] + ")"));
  33915. }
  33916. }
  33917. if (tag[0] === "tag:yaml.org,2002:binary") {
  33918. _tmp$24 = "tag:yaml.org,2002:binary"; _tmp$25 = new $String(in$1[0]); rtag[0] = _tmp$24; out = _tmp$25;
  33919. return [rtag[0], out];
  33920. }
  33921. if (utf8.ValidString(in$1[0])) {
  33922. _tmp$26 = "tag:yaml.org,2002:str"; _tmp$27 = new $String(in$1[0]); rtag[0] = _tmp$26; out = _tmp$27;
  33923. return [rtag[0], out];
  33924. }
  33925. _tmp$28 = "tag:yaml.org,2002:binary"; _tmp$29 = new $String(encodeBase64(in$1[0])); rtag[0] = _tmp$28; out = _tmp$29;
  33926. return [rtag[0], out];
  33927. /* */ $s = -1; case -1: } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if (!$curGoroutine.asleep) { return [rtag[0], out]; } if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: resolve }; } $f.$ptr = $ptr; $f._entry = _entry; $f._ref = _ref; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$10 = _tmp$10; $f._tmp$11 = _tmp$11; $f._tmp$12 = _tmp$12; $f._tmp$13 = _tmp$13; $f._tmp$14 = _tmp$14; $f._tmp$15 = _tmp$15; $f._tmp$16 = _tmp$16; $f._tmp$17 = _tmp$17; $f._tmp$18 = _tmp$18; $f._tmp$19 = _tmp$19; $f._tmp$2 = _tmp$2; $f._tmp$20 = _tmp$20; $f._tmp$21 = _tmp$21; $f._tmp$22 = _tmp$22; $f._tmp$23 = _tmp$23; $f._tmp$24 = _tmp$24; $f._tmp$25 = _tmp$25; $f._tmp$26 = _tmp$26; $f._tmp$27 = _tmp$27; $f._tmp$28 = _tmp$28; $f._tmp$29 = _tmp$29; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tmp$6 = _tmp$6; $f._tmp$7 = _tmp$7; $f._tmp$8 = _tmp$8; $f._tmp$9 = _tmp$9; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f._tuple$4 = _tuple$4; $f._tuple$5 = _tuple$5; $f._tuple$6 = _tuple$6; $f._tuple$7 = _tuple$7; $f.err = err; $f.err$1 = err$1; $f.err$2 = err$2; $f.err$3 = err$3; $f.floatv = floatv; $f.floatv$1 = floatv$1; $f.hint = hint; $f.in$1 = in$1; $f.intv = intv; $f.intv$1 = intv$1; $f.intv$2 = intv$2; $f.item = item; $f.ok = ok; $f.out = out; $f.plain = plain; $f.rtag = rtag; $f.tag = tag; $f.uintv = uintv; $f.uintv$1 = uintv$1; $f.x$1 = x$1; $f.x$2 = x$2; $f.x$3 = x$3; $f.x$4 = x$4; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
  33928. };
  33929. encodeBase64 = function(s) {
  33930. var $ptr, _q, buf, encLen, i, in$1, j, k, lines, out, s;
  33931. encLen = base64.StdEncoding.EncodedLen(s.length);
  33932. lines = (_q = encLen / 70, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")) + 1 >> 0;
  33933. buf = $makeSlice(sliceType$1, ((encLen * 2 >> 0) + lines >> 0));
  33934. in$1 = $subslice(buf, 0, encLen);
  33935. out = $subslice(buf, encLen);
  33936. base64.StdEncoding.Encode(in$1, new sliceType$1($stringToBytes(s)));
  33937. k = 0;
  33938. i = 0;
  33939. while (true) {
  33940. if (!(i < in$1.$length)) { break; }
  33941. j = i + 70 >> 0;
  33942. if (j > in$1.$length) {
  33943. j = in$1.$length;
  33944. }
  33945. k = k + ($copySlice($subslice(out, k), $subslice(in$1, i, j))) >> 0;
  33946. if (lines > 1) {
  33947. ((k < 0 || k >= out.$length) ? $throwRuntimeError("index out of range") : out.$array[out.$offset + k] = 10);
  33948. k = k + (1) >> 0;
  33949. }
  33950. i = i + (70) >> 0;
  33951. }
  33952. return $bytesToString($subslice(out, 0, k));
  33953. };
  33954. skip = function(parser$1) {
  33955. var $ptr, parser$1, x$1, x$2;
  33956. parser$1.mark.index = parser$1.mark.index + (1) >> 0;
  33957. parser$1.mark.column = parser$1.mark.column + (1) >> 0;
  33958. parser$1.unread = parser$1.unread - (1) >> 0;
  33959. parser$1.buffer_pos = parser$1.buffer_pos + (width((x$1 = parser$1.buffer, x$2 = parser$1.buffer_pos, ((x$2 < 0 || x$2 >= x$1.$length) ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + x$2])))) >> 0;
  33960. };
  33961. skip_line = function(parser$1) {
  33962. var $ptr, parser$1, x$1, x$2;
  33963. if (is_crlf(parser$1.buffer, parser$1.buffer_pos)) {
  33964. parser$1.mark.index = parser$1.mark.index + (2) >> 0;
  33965. parser$1.mark.column = 0;
  33966. parser$1.mark.line = parser$1.mark.line + (1) >> 0;
  33967. parser$1.unread = parser$1.unread - (2) >> 0;
  33968. parser$1.buffer_pos = parser$1.buffer_pos + (2) >> 0;
  33969. } else if (is_break(parser$1.buffer, parser$1.buffer_pos)) {
  33970. parser$1.mark.index = parser$1.mark.index + (1) >> 0;
  33971. parser$1.mark.column = 0;
  33972. parser$1.mark.line = parser$1.mark.line + (1) >> 0;
  33973. parser$1.unread = parser$1.unread - (1) >> 0;
  33974. parser$1.buffer_pos = parser$1.buffer_pos + (width((x$1 = parser$1.buffer, x$2 = parser$1.buffer_pos, ((x$2 < 0 || x$2 >= x$1.$length) ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + x$2])))) >> 0;
  33975. }
  33976. };
  33977. read = function(parser$1, s) {
  33978. var $ptr, parser$1, s, w, x$1, x$2, x$3, x$4, x$5;
  33979. w = width((x$1 = parser$1.buffer, x$2 = parser$1.buffer_pos, ((x$2 < 0 || x$2 >= x$1.$length) ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + x$2])));
  33980. if (w === 0) {
  33981. $panic(new $String("invalid character sequence"));
  33982. }
  33983. if (s.$length === 0) {
  33984. s = $makeSlice(sliceType$1, 0, 32);
  33985. }
  33986. if ((w === 1) && (s.$length + w >> 0) <= s.$capacity) {
  33987. s = $subslice(s, 0, (s.$length + 1 >> 0));
  33988. (x$5 = s.$length - 1 >> 0, ((x$5 < 0 || x$5 >= s.$length) ? $throwRuntimeError("index out of range") : s.$array[s.$offset + x$5] = (x$3 = parser$1.buffer, x$4 = parser$1.buffer_pos, ((x$4 < 0 || x$4 >= x$3.$length) ? $throwRuntimeError("index out of range") : x$3.$array[x$3.$offset + x$4]))));
  33989. parser$1.buffer_pos = parser$1.buffer_pos + (1) >> 0;
  33990. } else {
  33991. s = $appendSlice(s, $subslice(parser$1.buffer, parser$1.buffer_pos, (parser$1.buffer_pos + w >> 0)));
  33992. parser$1.buffer_pos = parser$1.buffer_pos + (w) >> 0;
  33993. }
  33994. parser$1.mark.index = parser$1.mark.index + (1) >> 0;
  33995. parser$1.mark.column = parser$1.mark.column + (1) >> 0;
  33996. parser$1.unread = parser$1.unread - (1) >> 0;
  33997. return s;
  33998. };
  33999. read_line = function(parser$1, s) {
  34000. var $ptr, buf, parser$1, pos, s, x$1, x$2, x$3, x$4, x$5;
  34001. buf = parser$1.buffer;
  34002. pos = parser$1.buffer_pos;
  34003. if ((((pos < 0 || pos >= buf.$length) ? $throwRuntimeError("index out of range") : buf.$array[buf.$offset + pos]) === 13) && ((x$1 = pos + 1 >> 0, ((x$1 < 0 || x$1 >= buf.$length) ? $throwRuntimeError("index out of range") : buf.$array[buf.$offset + x$1])) === 10)) {
  34004. s = $append(s, 10);
  34005. parser$1.buffer_pos = parser$1.buffer_pos + (2) >> 0;
  34006. parser$1.mark.index = parser$1.mark.index + (1) >> 0;
  34007. parser$1.unread = parser$1.unread - (1) >> 0;
  34008. } else if ((((pos < 0 || pos >= buf.$length) ? $throwRuntimeError("index out of range") : buf.$array[buf.$offset + pos]) === 13) || (((pos < 0 || pos >= buf.$length) ? $throwRuntimeError("index out of range") : buf.$array[buf.$offset + pos]) === 10)) {
  34009. s = $append(s, 10);
  34010. parser$1.buffer_pos = parser$1.buffer_pos + (1) >> 0;
  34011. } else if ((((pos < 0 || pos >= buf.$length) ? $throwRuntimeError("index out of range") : buf.$array[buf.$offset + pos]) === 194) && ((x$2 = pos + 1 >> 0, ((x$2 < 0 || x$2 >= buf.$length) ? $throwRuntimeError("index out of range") : buf.$array[buf.$offset + x$2])) === 133)) {
  34012. s = $append(s, 10);
  34013. parser$1.buffer_pos = parser$1.buffer_pos + (2) >> 0;
  34014. } else if ((((pos < 0 || pos >= buf.$length) ? $throwRuntimeError("index out of range") : buf.$array[buf.$offset + pos]) === 226) && ((x$3 = pos + 1 >> 0, ((x$3 < 0 || x$3 >= buf.$length) ? $throwRuntimeError("index out of range") : buf.$array[buf.$offset + x$3])) === 128) && (((x$4 = pos + 2 >> 0, ((x$4 < 0 || x$4 >= buf.$length) ? $throwRuntimeError("index out of range") : buf.$array[buf.$offset + x$4])) === 168) || ((x$5 = pos + 2 >> 0, ((x$5 < 0 || x$5 >= buf.$length) ? $throwRuntimeError("index out of range") : buf.$array[buf.$offset + x$5])) === 169))) {
  34015. s = $appendSlice(s, $subslice(buf, parser$1.buffer_pos, (pos + 3 >> 0)));
  34016. parser$1.buffer_pos = parser$1.buffer_pos + (3) >> 0;
  34017. } else {
  34018. return s;
  34019. }
  34020. parser$1.mark.index = parser$1.mark.index + (1) >> 0;
  34021. parser$1.mark.column = 0;
  34022. parser$1.mark.line = parser$1.mark.line + (1) >> 0;
  34023. parser$1.unread = parser$1.unread - (1) >> 0;
  34024. return s;
  34025. };
  34026. yaml_parser_set_scanner_error = function(parser$1, context, context_mark, problem) {
  34027. var $ptr, context, context_mark, parser$1, problem;
  34028. context_mark = $clone(context_mark, yaml_mark_t);
  34029. parser$1.error = 3;
  34030. parser$1.context = context;
  34031. $copy(parser$1.context_mark, context_mark, yaml_mark_t);
  34032. parser$1.problem = problem;
  34033. $copy(parser$1.problem_mark, parser$1.mark, yaml_mark_t);
  34034. return false;
  34035. };
  34036. yaml_parser_set_scanner_tag_error = function(parser$1, directive, context_mark, problem) {
  34037. var $ptr, context, context_mark, directive, parser$1, problem;
  34038. context_mark = $clone(context_mark, yaml_mark_t);
  34039. context = "while parsing a tag";
  34040. if (directive) {
  34041. context = "while parsing a %TAG directive";
  34042. }
  34043. return yaml_parser_set_scanner_error(parser$1, context, context_mark, "did not find URI escaped octet");
  34044. };
  34045. yaml_parser_fetch_more_tokens = function(parser$1) {
  34046. var $ptr, _i, _r$2, _ref, i, need_more_tokens, parser$1, simple_key, x$1, $s, $r;
  34047. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _i = $f._i; _r$2 = $f._r$2; _ref = $f._ref; i = $f.i; need_more_tokens = $f.need_more_tokens; parser$1 = $f.parser$1; simple_key = $f.simple_key; x$1 = $f.x$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  34048. /* while (true) { */ case 1:
  34049. need_more_tokens = false;
  34050. if (parser$1.tokens_head === parser$1.tokens.$length) {
  34051. need_more_tokens = true;
  34052. } else {
  34053. if (!yaml_parser_stale_simple_keys(parser$1)) {
  34054. return false;
  34055. }
  34056. _ref = parser$1.simple_keys;
  34057. _i = 0;
  34058. while (true) {
  34059. if (!(_i < _ref.$length)) { break; }
  34060. i = _i;
  34061. simple_key = (x$1 = parser$1.simple_keys, ((i < 0 || i >= x$1.$length) ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + i]));
  34062. if (simple_key.possible && (simple_key.token_number === parser$1.tokens_parsed)) {
  34063. need_more_tokens = true;
  34064. break;
  34065. }
  34066. _i++;
  34067. }
  34068. }
  34069. if (!need_more_tokens) {
  34070. /* break; */ $s = 2; continue;
  34071. }
  34072. _r$2 = yaml_parser_fetch_next_token(parser$1); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  34073. /* */ if (!_r$2) { $s = 3; continue; }
  34074. /* */ $s = 4; continue;
  34075. /* if (!_r$2) { */ case 3:
  34076. return false;
  34077. /* } */ case 4:
  34078. /* } */ $s = 1; continue; case 2:
  34079. parser$1.token_available = true;
  34080. return true;
  34081. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: yaml_parser_fetch_more_tokens }; } $f.$ptr = $ptr; $f._i = _i; $f._r$2 = _r$2; $f._ref = _ref; $f.i = i; $f.need_more_tokens = need_more_tokens; $f.parser$1 = parser$1; $f.simple_key = simple_key; $f.x$1 = x$1; $f.$s = $s; $f.$r = $r; return $f;
  34082. };
  34083. yaml_parser_fetch_next_token = function(parser$1) {
  34084. var $ptr, _r$10, _r$11, _r$12, _r$13, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _v, _v$1, buf, parser$1, pos, x$1, x$10, x$11, x$12, x$13, x$14, x$15, x$16, x$17, x$18, x$19, x$2, x$20, x$21, x$22, x$23, x$24, x$25, x$26, x$27, x$28, x$29, x$3, x$30, x$31, x$32, x$33, x$34, x$35, x$36, x$37, x$38, x$39, x$4, x$40, x$41, x$42, x$43, x$44, x$45, x$46, x$47, x$48, x$49, x$5, x$50, x$51, x$52, x$53, x$54, x$55, x$56, x$57, x$58, x$59, x$6, x$60, x$61, x$62, x$63, x$64, x$65, x$66, x$67, x$68, x$69, x$7, x$70, x$71, x$72, x$73, x$74, x$75, x$76, x$77, x$78, x$8, x$9, $s, $r;
  34085. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$12 = $f._r$12; _r$13 = $f._r$13; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _r$9 = $f._r$9; _v = $f._v; _v$1 = $f._v$1; buf = $f.buf; parser$1 = $f.parser$1; pos = $f.pos; x$1 = $f.x$1; x$10 = $f.x$10; x$11 = $f.x$11; x$12 = $f.x$12; x$13 = $f.x$13; x$14 = $f.x$14; x$15 = $f.x$15; x$16 = $f.x$16; x$17 = $f.x$17; x$18 = $f.x$18; x$19 = $f.x$19; x$2 = $f.x$2; x$20 = $f.x$20; x$21 = $f.x$21; x$22 = $f.x$22; x$23 = $f.x$23; x$24 = $f.x$24; x$25 = $f.x$25; x$26 = $f.x$26; x$27 = $f.x$27; x$28 = $f.x$28; x$29 = $f.x$29; x$3 = $f.x$3; x$30 = $f.x$30; x$31 = $f.x$31; x$32 = $f.x$32; x$33 = $f.x$33; x$34 = $f.x$34; x$35 = $f.x$35; x$36 = $f.x$36; x$37 = $f.x$37; x$38 = $f.x$38; x$39 = $f.x$39; x$4 = $f.x$4; x$40 = $f.x$40; x$41 = $f.x$41; x$42 = $f.x$42; x$43 = $f.x$43; x$44 = $f.x$44; x$45 = $f.x$45; x$46 = $f.x$46; x$47 = $f.x$47; x$48 = $f.x$48; x$49 = $f.x$49; x$5 = $f.x$5; x$50 = $f.x$50; x$51 = $f.x$51; x$52 = $f.x$52; x$53 = $f.x$53; x$54 = $f.x$54; x$55 = $f.x$55; x$56 = $f.x$56; x$57 = $f.x$57; x$58 = $f.x$58; x$59 = $f.x$59; x$6 = $f.x$6; x$60 = $f.x$60; x$61 = $f.x$61; x$62 = $f.x$62; x$63 = $f.x$63; x$64 = $f.x$64; x$65 = $f.x$65; x$66 = $f.x$66; x$67 = $f.x$67; x$68 = $f.x$68; x$69 = $f.x$69; x$7 = $f.x$7; x$70 = $f.x$70; x$71 = $f.x$71; x$72 = $f.x$72; x$73 = $f.x$73; x$74 = $f.x$74; x$75 = $f.x$75; x$76 = $f.x$76; x$77 = $f.x$77; x$78 = $f.x$78; x$8 = $f.x$8; x$9 = $f.x$9; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  34086. if (!(parser$1.unread < 1)) { _v = false; $s = 3; continue s; }
  34087. _r$2 = yaml_parser_update_buffer(parser$1, 1); /* */ $s = 4; case 4: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  34088. _v = !_r$2; case 3:
  34089. /* */ if (_v) { $s = 1; continue; }
  34090. /* */ $s = 2; continue;
  34091. /* if (_v) { */ case 1:
  34092. return false;
  34093. /* } */ case 2:
  34094. if (!parser$1.stream_start_produced) {
  34095. return yaml_parser_fetch_stream_start(parser$1);
  34096. }
  34097. _r$3 = yaml_parser_scan_to_next_token(parser$1); /* */ $s = 7; case 7: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  34098. /* */ if (!_r$3) { $s = 5; continue; }
  34099. /* */ $s = 6; continue;
  34100. /* if (!_r$3) { */ case 5:
  34101. return false;
  34102. /* } */ case 6:
  34103. if (!yaml_parser_stale_simple_keys(parser$1)) {
  34104. return false;
  34105. }
  34106. if (!yaml_parser_unroll_indent(parser$1, parser$1.mark.column)) {
  34107. return false;
  34108. }
  34109. if (!(parser$1.unread < 4)) { _v$1 = false; $s = 10; continue s; }
  34110. _r$4 = yaml_parser_update_buffer(parser$1, 4); /* */ $s = 11; case 11: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
  34111. _v$1 = !_r$4; case 10:
  34112. /* */ if (_v$1) { $s = 8; continue; }
  34113. /* */ $s = 9; continue;
  34114. /* if (_v$1) { */ case 8:
  34115. return false;
  34116. /* } */ case 9:
  34117. if (is_z(parser$1.buffer, parser$1.buffer_pos)) {
  34118. return yaml_parser_fetch_stream_end(parser$1);
  34119. }
  34120. /* */ if ((parser$1.mark.column === 0) && ((x$1 = parser$1.buffer, x$2 = parser$1.buffer_pos, ((x$2 < 0 || x$2 >= x$1.$length) ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + x$2])) === 37)) { $s = 12; continue; }
  34121. /* */ $s = 13; continue;
  34122. /* if ((parser$1.mark.column === 0) && ((x$1 = parser$1.buffer, x$2 = parser$1.buffer_pos, ((x$2 < 0 || x$2 >= x$1.$length) ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + x$2])) === 37)) { */ case 12:
  34123. _r$5 = yaml_parser_fetch_directive(parser$1); /* */ $s = 14; case 14: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
  34124. return _r$5;
  34125. /* } */ case 13:
  34126. buf = parser$1.buffer;
  34127. pos = parser$1.buffer_pos;
  34128. if ((parser$1.mark.column === 0) && (((pos < 0 || pos >= buf.$length) ? $throwRuntimeError("index out of range") : buf.$array[buf.$offset + pos]) === 45) && ((x$3 = pos + 1 >> 0, ((x$3 < 0 || x$3 >= buf.$length) ? $throwRuntimeError("index out of range") : buf.$array[buf.$offset + x$3])) === 45) && ((x$4 = pos + 2 >> 0, ((x$4 < 0 || x$4 >= buf.$length) ? $throwRuntimeError("index out of range") : buf.$array[buf.$offset + x$4])) === 45) && is_blankz(buf, pos + 3 >> 0)) {
  34129. return yaml_parser_fetch_document_indicator(parser$1, 5);
  34130. }
  34131. if ((parser$1.mark.column === 0) && (((pos < 0 || pos >= buf.$length) ? $throwRuntimeError("index out of range") : buf.$array[buf.$offset + pos]) === 46) && ((x$5 = pos + 1 >> 0, ((x$5 < 0 || x$5 >= buf.$length) ? $throwRuntimeError("index out of range") : buf.$array[buf.$offset + x$5])) === 46) && ((x$6 = pos + 2 >> 0, ((x$6 < 0 || x$6 >= buf.$length) ? $throwRuntimeError("index out of range") : buf.$array[buf.$offset + x$6])) === 46) && is_blankz(buf, pos + 3 >> 0)) {
  34132. return yaml_parser_fetch_document_indicator(parser$1, 6);
  34133. }
  34134. if (((pos < 0 || pos >= buf.$length) ? $throwRuntimeError("index out of range") : buf.$array[buf.$offset + pos]) === 91) {
  34135. return yaml_parser_fetch_flow_collection_start(parser$1, 10);
  34136. }
  34137. if ((x$7 = parser$1.buffer, x$8 = parser$1.buffer_pos, ((x$8 < 0 || x$8 >= x$7.$length) ? $throwRuntimeError("index out of range") : x$7.$array[x$7.$offset + x$8])) === 123) {
  34138. return yaml_parser_fetch_flow_collection_start(parser$1, 12);
  34139. }
  34140. if ((x$9 = parser$1.buffer, x$10 = parser$1.buffer_pos, ((x$10 < 0 || x$10 >= x$9.$length) ? $throwRuntimeError("index out of range") : x$9.$array[x$9.$offset + x$10])) === 93) {
  34141. return yaml_parser_fetch_flow_collection_end(parser$1, 11);
  34142. }
  34143. if ((x$11 = parser$1.buffer, x$12 = parser$1.buffer_pos, ((x$12 < 0 || x$12 >= x$11.$length) ? $throwRuntimeError("index out of range") : x$11.$array[x$11.$offset + x$12])) === 125) {
  34144. return yaml_parser_fetch_flow_collection_end(parser$1, 13);
  34145. }
  34146. if ((x$13 = parser$1.buffer, x$14 = parser$1.buffer_pos, ((x$14 < 0 || x$14 >= x$13.$length) ? $throwRuntimeError("index out of range") : x$13.$array[x$13.$offset + x$14])) === 44) {
  34147. return yaml_parser_fetch_flow_entry(parser$1);
  34148. }
  34149. if (((x$15 = parser$1.buffer, x$16 = parser$1.buffer_pos, ((x$16 < 0 || x$16 >= x$15.$length) ? $throwRuntimeError("index out of range") : x$15.$array[x$15.$offset + x$16])) === 45) && is_blankz(parser$1.buffer, parser$1.buffer_pos + 1 >> 0)) {
  34150. return yaml_parser_fetch_block_entry(parser$1);
  34151. }
  34152. if (((x$17 = parser$1.buffer, x$18 = parser$1.buffer_pos, ((x$18 < 0 || x$18 >= x$17.$length) ? $throwRuntimeError("index out of range") : x$17.$array[x$17.$offset + x$18])) === 63) && (parser$1.flow_level > 0 || is_blankz(parser$1.buffer, parser$1.buffer_pos + 1 >> 0))) {
  34153. return yaml_parser_fetch_key(parser$1);
  34154. }
  34155. if (((x$19 = parser$1.buffer, x$20 = parser$1.buffer_pos, ((x$20 < 0 || x$20 >= x$19.$length) ? $throwRuntimeError("index out of range") : x$19.$array[x$19.$offset + x$20])) === 58) && (parser$1.flow_level > 0 || is_blankz(parser$1.buffer, parser$1.buffer_pos + 1 >> 0))) {
  34156. return yaml_parser_fetch_value(parser$1);
  34157. }
  34158. /* */ if ((x$21 = parser$1.buffer, x$22 = parser$1.buffer_pos, ((x$22 < 0 || x$22 >= x$21.$length) ? $throwRuntimeError("index out of range") : x$21.$array[x$21.$offset + x$22])) === 42) { $s = 15; continue; }
  34159. /* */ $s = 16; continue;
  34160. /* if ((x$21 = parser$1.buffer, x$22 = parser$1.buffer_pos, ((x$22 < 0 || x$22 >= x$21.$length) ? $throwRuntimeError("index out of range") : x$21.$array[x$21.$offset + x$22])) === 42) { */ case 15:
  34161. _r$6 = yaml_parser_fetch_anchor(parser$1, 18); /* */ $s = 17; case 17: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
  34162. return _r$6;
  34163. /* } */ case 16:
  34164. /* */ if ((x$23 = parser$1.buffer, x$24 = parser$1.buffer_pos, ((x$24 < 0 || x$24 >= x$23.$length) ? $throwRuntimeError("index out of range") : x$23.$array[x$23.$offset + x$24])) === 38) { $s = 18; continue; }
  34165. /* */ $s = 19; continue;
  34166. /* if ((x$23 = parser$1.buffer, x$24 = parser$1.buffer_pos, ((x$24 < 0 || x$24 >= x$23.$length) ? $throwRuntimeError("index out of range") : x$23.$array[x$23.$offset + x$24])) === 38) { */ case 18:
  34167. _r$7 = yaml_parser_fetch_anchor(parser$1, 19); /* */ $s = 20; case 20: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
  34168. return _r$7;
  34169. /* } */ case 19:
  34170. /* */ if ((x$25 = parser$1.buffer, x$26 = parser$1.buffer_pos, ((x$26 < 0 || x$26 >= x$25.$length) ? $throwRuntimeError("index out of range") : x$25.$array[x$25.$offset + x$26])) === 33) { $s = 21; continue; }
  34171. /* */ $s = 22; continue;
  34172. /* if ((x$25 = parser$1.buffer, x$26 = parser$1.buffer_pos, ((x$26 < 0 || x$26 >= x$25.$length) ? $throwRuntimeError("index out of range") : x$25.$array[x$25.$offset + x$26])) === 33) { */ case 21:
  34173. _r$8 = yaml_parser_fetch_tag(parser$1); /* */ $s = 23; case 23: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
  34174. return _r$8;
  34175. /* } */ case 22:
  34176. /* */ if (((x$27 = parser$1.buffer, x$28 = parser$1.buffer_pos, ((x$28 < 0 || x$28 >= x$27.$length) ? $throwRuntimeError("index out of range") : x$27.$array[x$27.$offset + x$28])) === 124) && (parser$1.flow_level === 0)) { $s = 24; continue; }
  34177. /* */ $s = 25; continue;
  34178. /* if (((x$27 = parser$1.buffer, x$28 = parser$1.buffer_pos, ((x$28 < 0 || x$28 >= x$27.$length) ? $throwRuntimeError("index out of range") : x$27.$array[x$27.$offset + x$28])) === 124) && (parser$1.flow_level === 0)) { */ case 24:
  34179. _r$9 = yaml_parser_fetch_block_scalar(parser$1, true); /* */ $s = 26; case 26: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
  34180. return _r$9;
  34181. /* } */ case 25:
  34182. /* */ if (((x$29 = parser$1.buffer, x$30 = parser$1.buffer_pos, ((x$30 < 0 || x$30 >= x$29.$length) ? $throwRuntimeError("index out of range") : x$29.$array[x$29.$offset + x$30])) === 62) && (parser$1.flow_level === 0)) { $s = 27; continue; }
  34183. /* */ $s = 28; continue;
  34184. /* if (((x$29 = parser$1.buffer, x$30 = parser$1.buffer_pos, ((x$30 < 0 || x$30 >= x$29.$length) ? $throwRuntimeError("index out of range") : x$29.$array[x$29.$offset + x$30])) === 62) && (parser$1.flow_level === 0)) { */ case 27:
  34185. _r$10 = yaml_parser_fetch_block_scalar(parser$1, false); /* */ $s = 29; case 29: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
  34186. return _r$10;
  34187. /* } */ case 28:
  34188. /* */ if ((x$31 = parser$1.buffer, x$32 = parser$1.buffer_pos, ((x$32 < 0 || x$32 >= x$31.$length) ? $throwRuntimeError("index out of range") : x$31.$array[x$31.$offset + x$32])) === 39) { $s = 30; continue; }
  34189. /* */ $s = 31; continue;
  34190. /* if ((x$31 = parser$1.buffer, x$32 = parser$1.buffer_pos, ((x$32 < 0 || x$32 >= x$31.$length) ? $throwRuntimeError("index out of range") : x$31.$array[x$31.$offset + x$32])) === 39) { */ case 30:
  34191. _r$11 = yaml_parser_fetch_flow_scalar(parser$1, true); /* */ $s = 32; case 32: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
  34192. return _r$11;
  34193. /* } */ case 31:
  34194. /* */ if ((x$33 = parser$1.buffer, x$34 = parser$1.buffer_pos, ((x$34 < 0 || x$34 >= x$33.$length) ? $throwRuntimeError("index out of range") : x$33.$array[x$33.$offset + x$34])) === 34) { $s = 33; continue; }
  34195. /* */ $s = 34; continue;
  34196. /* if ((x$33 = parser$1.buffer, x$34 = parser$1.buffer_pos, ((x$34 < 0 || x$34 >= x$33.$length) ? $throwRuntimeError("index out of range") : x$33.$array[x$33.$offset + x$34])) === 34) { */ case 33:
  34197. _r$12 = yaml_parser_fetch_flow_scalar(parser$1, false); /* */ $s = 35; case 35: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; }
  34198. return _r$12;
  34199. /* } */ case 34:
  34200. /* */ if (!(is_blankz(parser$1.buffer, parser$1.buffer_pos) || ((x$35 = parser$1.buffer, x$36 = parser$1.buffer_pos, ((x$36 < 0 || x$36 >= x$35.$length) ? $throwRuntimeError("index out of range") : x$35.$array[x$35.$offset + x$36])) === 45) || ((x$37 = parser$1.buffer, x$38 = parser$1.buffer_pos, ((x$38 < 0 || x$38 >= x$37.$length) ? $throwRuntimeError("index out of range") : x$37.$array[x$37.$offset + x$38])) === 63) || ((x$39 = parser$1.buffer, x$40 = parser$1.buffer_pos, ((x$40 < 0 || x$40 >= x$39.$length) ? $throwRuntimeError("index out of range") : x$39.$array[x$39.$offset + x$40])) === 58) || ((x$41 = parser$1.buffer, x$42 = parser$1.buffer_pos, ((x$42 < 0 || x$42 >= x$41.$length) ? $throwRuntimeError("index out of range") : x$41.$array[x$41.$offset + x$42])) === 44) || ((x$43 = parser$1.buffer, x$44 = parser$1.buffer_pos, ((x$44 < 0 || x$44 >= x$43.$length) ? $throwRuntimeError("index out of range") : x$43.$array[x$43.$offset + x$44])) === 91) || ((x$45 = parser$1.buffer, x$46 = parser$1.buffer_pos, ((x$46 < 0 || x$46 >= x$45.$length) ? $throwRuntimeError("index out of range") : x$45.$array[x$45.$offset + x$46])) === 93) || ((x$47 = parser$1.buffer, x$48 = parser$1.buffer_pos, ((x$48 < 0 || x$48 >= x$47.$length) ? $throwRuntimeError("index out of range") : x$47.$array[x$47.$offset + x$48])) === 123) || ((x$49 = parser$1.buffer, x$50 = parser$1.buffer_pos, ((x$50 < 0 || x$50 >= x$49.$length) ? $throwRuntimeError("index out of range") : x$49.$array[x$49.$offset + x$50])) === 125) || ((x$51 = parser$1.buffer, x$52 = parser$1.buffer_pos, ((x$52 < 0 || x$52 >= x$51.$length) ? $throwRuntimeError("index out of range") : x$51.$array[x$51.$offset + x$52])) === 35) || ((x$53 = parser$1.buffer, x$54 = parser$1.buffer_pos, ((x$54 < 0 || x$54 >= x$53.$length) ? $throwRuntimeError("index out of range") : x$53.$array[x$53.$offset + x$54])) === 38) || ((x$55 = parser$1.buffer, x$56 = parser$1.buffer_pos, ((x$56 < 0 || x$56 >= x$55.$length) ? $throwRuntimeError("index out of range") : x$55.$array[x$55.$offset + x$56])) === 42) || ((x$57 = parser$1.buffer, x$58 = parser$1.buffer_pos, ((x$58 < 0 || x$58 >= x$57.$length) ? $throwRuntimeError("index out of range") : x$57.$array[x$57.$offset + x$58])) === 33) || ((x$59 = parser$1.buffer, x$60 = parser$1.buffer_pos, ((x$60 < 0 || x$60 >= x$59.$length) ? $throwRuntimeError("index out of range") : x$59.$array[x$59.$offset + x$60])) === 124) || ((x$61 = parser$1.buffer, x$62 = parser$1.buffer_pos, ((x$62 < 0 || x$62 >= x$61.$length) ? $throwRuntimeError("index out of range") : x$61.$array[x$61.$offset + x$62])) === 62) || ((x$63 = parser$1.buffer, x$64 = parser$1.buffer_pos, ((x$64 < 0 || x$64 >= x$63.$length) ? $throwRuntimeError("index out of range") : x$63.$array[x$63.$offset + x$64])) === 39) || ((x$65 = parser$1.buffer, x$66 = parser$1.buffer_pos, ((x$66 < 0 || x$66 >= x$65.$length) ? $throwRuntimeError("index out of range") : x$65.$array[x$65.$offset + x$66])) === 34) || ((x$67 = parser$1.buffer, x$68 = parser$1.buffer_pos, ((x$68 < 0 || x$68 >= x$67.$length) ? $throwRuntimeError("index out of range") : x$67.$array[x$67.$offset + x$68])) === 37) || ((x$69 = parser$1.buffer, x$70 = parser$1.buffer_pos, ((x$70 < 0 || x$70 >= x$69.$length) ? $throwRuntimeError("index out of range") : x$69.$array[x$69.$offset + x$70])) === 64) || ((x$71 = parser$1.buffer, x$72 = parser$1.buffer_pos, ((x$72 < 0 || x$72 >= x$71.$length) ? $throwRuntimeError("index out of range") : x$71.$array[x$71.$offset + x$72])) === 96)) || (((x$73 = parser$1.buffer, x$74 = parser$1.buffer_pos, ((x$74 < 0 || x$74 >= x$73.$length) ? $throwRuntimeError("index out of range") : x$73.$array[x$73.$offset + x$74])) === 45) && !is_blank(parser$1.buffer, parser$1.buffer_pos + 1 >> 0)) || ((parser$1.flow_level === 0) && (((x$75 = parser$1.buffer, x$76 = parser$1.buffer_pos, ((x$76 < 0 || x$76 >= x$75.$length) ? $throwRuntimeError("index out of range") : x$75.$array[x$75.$offset + x$76])) === 63) || ((x$77 = parser$1.buffer, x$78 = parser$1.buffer_pos, ((x$78 < 0 || x$78 >= x$77.$length) ? $throwRuntimeError("index out of range") : x$77.$array[x$77.$offset + x$78])) === 58)) && !is_blankz(parser$1.buffer, parser$1.buffer_pos + 1 >> 0))) { $s = 36; continue; }
  34201. /* */ $s = 37; continue;
  34202. /* if (!(is_blankz(parser$1.buffer, parser$1.buffer_pos) || ((x$35 = parser$1.buffer, x$36 = parser$1.buffer_pos, ((x$36 < 0 || x$36 >= x$35.$length) ? $throwRuntimeError("index out of range") : x$35.$array[x$35.$offset + x$36])) === 45) || ((x$37 = parser$1.buffer, x$38 = parser$1.buffer_pos, ((x$38 < 0 || x$38 >= x$37.$length) ? $throwRuntimeError("index out of range") : x$37.$array[x$37.$offset + x$38])) === 63) || ((x$39 = parser$1.buffer, x$40 = parser$1.buffer_pos, ((x$40 < 0 || x$40 >= x$39.$length) ? $throwRuntimeError("index out of range") : x$39.$array[x$39.$offset + x$40])) === 58) || ((x$41 = parser$1.buffer, x$42 = parser$1.buffer_pos, ((x$42 < 0 || x$42 >= x$41.$length) ? $throwRuntimeError("index out of range") : x$41.$array[x$41.$offset + x$42])) === 44) || ((x$43 = parser$1.buffer, x$44 = parser$1.buffer_pos, ((x$44 < 0 || x$44 >= x$43.$length) ? $throwRuntimeError("index out of range") : x$43.$array[x$43.$offset + x$44])) === 91) || ((x$45 = parser$1.buffer, x$46 = parser$1.buffer_pos, ((x$46 < 0 || x$46 >= x$45.$length) ? $throwRuntimeError("index out of range") : x$45.$array[x$45.$offset + x$46])) === 93) || ((x$47 = parser$1.buffer, x$48 = parser$1.buffer_pos, ((x$48 < 0 || x$48 >= x$47.$length) ? $throwRuntimeError("index out of range") : x$47.$array[x$47.$offset + x$48])) === 123) || ((x$49 = parser$1.buffer, x$50 = parser$1.buffer_pos, ((x$50 < 0 || x$50 >= x$49.$length) ? $throwRuntimeError("index out of range") : x$49.$array[x$49.$offset + x$50])) === 125) || ((x$51 = parser$1.buffer, x$52 = parser$1.buffer_pos, ((x$52 < 0 || x$52 >= x$51.$length) ? $throwRuntimeError("index out of range") : x$51.$array[x$51.$offset + x$52])) === 35) || ((x$53 = parser$1.buffer, x$54 = parser$1.buffer_pos, ((x$54 < 0 || x$54 >= x$53.$length) ? $throwRuntimeError("index out of range") : x$53.$array[x$53.$offset + x$54])) === 38) || ((x$55 = parser$1.buffer, x$56 = parser$1.buffer_pos, ((x$56 < 0 || x$56 >= x$55.$length) ? $throwRuntimeError("index out of range") : x$55.$array[x$55.$offset + x$56])) === 42) || ((x$57 = parser$1.buffer, x$58 = parser$1.buffer_pos, ((x$58 < 0 || x$58 >= x$57.$length) ? $throwRuntimeError("index out of range") : x$57.$array[x$57.$offset + x$58])) === 33) || ((x$59 = parser$1.buffer, x$60 = parser$1.buffer_pos, ((x$60 < 0 || x$60 >= x$59.$length) ? $throwRuntimeError("index out of range") : x$59.$array[x$59.$offset + x$60])) === 124) || ((x$61 = parser$1.buffer, x$62 = parser$1.buffer_pos, ((x$62 < 0 || x$62 >= x$61.$length) ? $throwRuntimeError("index out of range") : x$61.$array[x$61.$offset + x$62])) === 62) || ((x$63 = parser$1.buffer, x$64 = parser$1.buffer_pos, ((x$64 < 0 || x$64 >= x$63.$length) ? $throwRuntimeError("index out of range") : x$63.$array[x$63.$offset + x$64])) === 39) || ((x$65 = parser$1.buffer, x$66 = parser$1.buffer_pos, ((x$66 < 0 || x$66 >= x$65.$length) ? $throwRuntimeError("index out of range") : x$65.$array[x$65.$offset + x$66])) === 34) || ((x$67 = parser$1.buffer, x$68 = parser$1.buffer_pos, ((x$68 < 0 || x$68 >= x$67.$length) ? $throwRuntimeError("index out of range") : x$67.$array[x$67.$offset + x$68])) === 37) || ((x$69 = parser$1.buffer, x$70 = parser$1.buffer_pos, ((x$70 < 0 || x$70 >= x$69.$length) ? $throwRuntimeError("index out of range") : x$69.$array[x$69.$offset + x$70])) === 64) || ((x$71 = parser$1.buffer, x$72 = parser$1.buffer_pos, ((x$72 < 0 || x$72 >= x$71.$length) ? $throwRuntimeError("index out of range") : x$71.$array[x$71.$offset + x$72])) === 96)) || (((x$73 = parser$1.buffer, x$74 = parser$1.buffer_pos, ((x$74 < 0 || x$74 >= x$73.$length) ? $throwRuntimeError("index out of range") : x$73.$array[x$73.$offset + x$74])) === 45) && !is_blank(parser$1.buffer, parser$1.buffer_pos + 1 >> 0)) || ((parser$1.flow_level === 0) && (((x$75 = parser$1.buffer, x$76 = parser$1.buffer_pos, ((x$76 < 0 || x$76 >= x$75.$length) ? $throwRuntimeError("index out of range") : x$75.$array[x$75.$offset + x$76])) === 63) || ((x$77 = parser$1.buffer, x$78 = parser$1.buffer_pos, ((x$78 < 0 || x$78 >= x$77.$length) ? $throwRuntimeError("index out of range") : x$77.$array[x$77.$offset + x$78])) === 58)) && !is_blankz(parser$1.buffer, parser$1.buffer_pos + 1 >> 0))) { */ case 36:
  34203. _r$13 = yaml_parser_fetch_plain_scalar(parser$1); /* */ $s = 38; case 38: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; }
  34204. return _r$13;
  34205. /* } */ case 37:
  34206. return yaml_parser_set_scanner_error(parser$1, "while scanning for the next token", parser$1.mark, "found character that cannot start any token");
  34207. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: yaml_parser_fetch_next_token }; } $f.$ptr = $ptr; $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$12 = _r$12; $f._r$13 = _r$13; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._r$9 = _r$9; $f._v = _v; $f._v$1 = _v$1; $f.buf = buf; $f.parser$1 = parser$1; $f.pos = pos; $f.x$1 = x$1; $f.x$10 = x$10; $f.x$11 = x$11; $f.x$12 = x$12; $f.x$13 = x$13; $f.x$14 = x$14; $f.x$15 = x$15; $f.x$16 = x$16; $f.x$17 = x$17; $f.x$18 = x$18; $f.x$19 = x$19; $f.x$2 = x$2; $f.x$20 = x$20; $f.x$21 = x$21; $f.x$22 = x$22; $f.x$23 = x$23; $f.x$24 = x$24; $f.x$25 = x$25; $f.x$26 = x$26; $f.x$27 = x$27; $f.x$28 = x$28; $f.x$29 = x$29; $f.x$3 = x$3; $f.x$30 = x$30; $f.x$31 = x$31; $f.x$32 = x$32; $f.x$33 = x$33; $f.x$34 = x$34; $f.x$35 = x$35; $f.x$36 = x$36; $f.x$37 = x$37; $f.x$38 = x$38; $f.x$39 = x$39; $f.x$4 = x$4; $f.x$40 = x$40; $f.x$41 = x$41; $f.x$42 = x$42; $f.x$43 = x$43; $f.x$44 = x$44; $f.x$45 = x$45; $f.x$46 = x$46; $f.x$47 = x$47; $f.x$48 = x$48; $f.x$49 = x$49; $f.x$5 = x$5; $f.x$50 = x$50; $f.x$51 = x$51; $f.x$52 = x$52; $f.x$53 = x$53; $f.x$54 = x$54; $f.x$55 = x$55; $f.x$56 = x$56; $f.x$57 = x$57; $f.x$58 = x$58; $f.x$59 = x$59; $f.x$6 = x$6; $f.x$60 = x$60; $f.x$61 = x$61; $f.x$62 = x$62; $f.x$63 = x$63; $f.x$64 = x$64; $f.x$65 = x$65; $f.x$66 = x$66; $f.x$67 = x$67; $f.x$68 = x$68; $f.x$69 = x$69; $f.x$7 = x$7; $f.x$70 = x$70; $f.x$71 = x$71; $f.x$72 = x$72; $f.x$73 = x$73; $f.x$74 = x$74; $f.x$75 = x$75; $f.x$76 = x$76; $f.x$77 = x$77; $f.x$78 = x$78; $f.x$8 = x$8; $f.x$9 = x$9; $f.$s = $s; $f.$r = $r; return $f;
  34208. };
  34209. yaml_parser_stale_simple_keys = function(parser$1) {
  34210. var $ptr, _i, _ref, i, parser$1, simple_key, x$1;
  34211. _ref = parser$1.simple_keys;
  34212. _i = 0;
  34213. while (true) {
  34214. if (!(_i < _ref.$length)) { break; }
  34215. i = _i;
  34216. simple_key = (x$1 = parser$1.simple_keys, ((i < 0 || i >= x$1.$length) ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + i]));
  34217. if (simple_key.possible && (simple_key.mark.line < parser$1.mark.line || (simple_key.mark.index + 1024 >> 0) < parser$1.mark.index)) {
  34218. if (simple_key.required) {
  34219. return yaml_parser_set_scanner_error(parser$1, "while scanning a simple key", simple_key.mark, "could not find expected ':'");
  34220. }
  34221. simple_key.possible = false;
  34222. }
  34223. _i++;
  34224. }
  34225. return true;
  34226. };
  34227. yaml_parser_save_simple_key = function(parser$1) {
  34228. var $ptr, parser$1, required, simple_key, x$1, x$2;
  34229. required = (parser$1.flow_level === 0) && (parser$1.indent === parser$1.mark.column);
  34230. if (required && !parser$1.simple_key_allowed) {
  34231. $panic(new $String("should not happen"));
  34232. }
  34233. if (parser$1.simple_key_allowed) {
  34234. simple_key = new yaml_simple_key_t.ptr(true, required, parser$1.tokens_parsed + ((parser$1.tokens.$length - parser$1.tokens_head >> 0)) >> 0, new yaml_mark_t.ptr());
  34235. $copy(simple_key.mark, parser$1.mark, yaml_mark_t);
  34236. if (!yaml_parser_remove_simple_key(parser$1)) {
  34237. return false;
  34238. }
  34239. $copy((x$1 = parser$1.simple_keys, x$2 = parser$1.simple_keys.$length - 1 >> 0, ((x$2 < 0 || x$2 >= x$1.$length) ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + x$2])), simple_key, yaml_simple_key_t);
  34240. }
  34241. return true;
  34242. };
  34243. yaml_parser_remove_simple_key = function(parser$1) {
  34244. var $ptr, i, parser$1, x$1, x$2, x$3, x$4;
  34245. i = parser$1.simple_keys.$length - 1 >> 0;
  34246. if ((x$1 = parser$1.simple_keys, ((i < 0 || i >= x$1.$length) ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + i])).possible) {
  34247. if ((x$2 = parser$1.simple_keys, ((i < 0 || i >= x$2.$length) ? $throwRuntimeError("index out of range") : x$2.$array[x$2.$offset + i])).required) {
  34248. return yaml_parser_set_scanner_error(parser$1, "while scanning a simple key", (x$3 = parser$1.simple_keys, ((i < 0 || i >= x$3.$length) ? $throwRuntimeError("index out of range") : x$3.$array[x$3.$offset + i])).mark, "could not find expected ':'");
  34249. }
  34250. }
  34251. (x$4 = parser$1.simple_keys, ((i < 0 || i >= x$4.$length) ? $throwRuntimeError("index out of range") : x$4.$array[x$4.$offset + i])).possible = false;
  34252. return true;
  34253. };
  34254. yaml_parser_increase_flow_level = function(parser$1) {
  34255. var $ptr, parser$1;
  34256. parser$1.simple_keys = $append(parser$1.simple_keys, new yaml_simple_key_t.ptr(false, false, 0, new yaml_mark_t.ptr()));
  34257. parser$1.flow_level = parser$1.flow_level + (1) >> 0;
  34258. return true;
  34259. };
  34260. yaml_parser_decrease_flow_level = function(parser$1) {
  34261. var $ptr, parser$1;
  34262. if (parser$1.flow_level > 0) {
  34263. parser$1.flow_level = parser$1.flow_level - (1) >> 0;
  34264. parser$1.simple_keys = $subslice(parser$1.simple_keys, 0, (parser$1.simple_keys.$length - 1 >> 0));
  34265. }
  34266. return true;
  34267. };
  34268. yaml_parser_roll_indent = function(parser$1, column, number, typ, mark) {
  34269. var $ptr, column, mark, number, parser$1, token, typ;
  34270. mark = $clone(mark, yaml_mark_t);
  34271. if (parser$1.flow_level > 0) {
  34272. return true;
  34273. }
  34274. if (parser$1.indent < column) {
  34275. parser$1.indents = $append(parser$1.indents, parser$1.indent);
  34276. parser$1.indent = column;
  34277. token = new yaml_token_t.ptr(typ, $clone(mark, yaml_mark_t), $clone(mark, yaml_mark_t), 0, sliceType$1.nil, sliceType$1.nil, sliceType$1.nil, 0, 0, 0);
  34278. if (number > -1) {
  34279. number = number - (parser$1.tokens_parsed) >> 0;
  34280. }
  34281. yaml_insert_token(parser$1, number, token);
  34282. }
  34283. return true;
  34284. };
  34285. yaml_parser_unroll_indent = function(parser$1, column) {
  34286. var $ptr, column, parser$1, token, x$1, x$2;
  34287. if (parser$1.flow_level > 0) {
  34288. return true;
  34289. }
  34290. while (true) {
  34291. if (!(parser$1.indent > column)) { break; }
  34292. token = [token];
  34293. token[0] = new yaml_token_t.ptr(9, $clone(parser$1.mark, yaml_mark_t), $clone(parser$1.mark, yaml_mark_t), 0, sliceType$1.nil, sliceType$1.nil, sliceType$1.nil, 0, 0, 0);
  34294. yaml_insert_token(parser$1, -1, token[0]);
  34295. parser$1.indent = (x$1 = parser$1.indents, x$2 = parser$1.indents.$length - 1 >> 0, ((x$2 < 0 || x$2 >= x$1.$length) ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + x$2]));
  34296. parser$1.indents = $subslice(parser$1.indents, 0, (parser$1.indents.$length - 1 >> 0));
  34297. }
  34298. return true;
  34299. };
  34300. yaml_parser_fetch_stream_start = function(parser$1) {
  34301. var $ptr, parser$1, token;
  34302. parser$1.indent = -1;
  34303. parser$1.simple_keys = $append(parser$1.simple_keys, new yaml_simple_key_t.ptr(false, false, 0, new yaml_mark_t.ptr()));
  34304. parser$1.simple_key_allowed = true;
  34305. parser$1.stream_start_produced = true;
  34306. token = new yaml_token_t.ptr(1, $clone(parser$1.mark, yaml_mark_t), $clone(parser$1.mark, yaml_mark_t), parser$1.encoding, sliceType$1.nil, sliceType$1.nil, sliceType$1.nil, 0, 0, 0);
  34307. yaml_insert_token(parser$1, -1, token);
  34308. return true;
  34309. };
  34310. yaml_parser_fetch_stream_end = function(parser$1) {
  34311. var $ptr, parser$1, token;
  34312. if (!((parser$1.mark.column === 0))) {
  34313. parser$1.mark.column = 0;
  34314. parser$1.mark.line = parser$1.mark.line + (1) >> 0;
  34315. }
  34316. if (!yaml_parser_unroll_indent(parser$1, -1)) {
  34317. return false;
  34318. }
  34319. if (!yaml_parser_remove_simple_key(parser$1)) {
  34320. return false;
  34321. }
  34322. parser$1.simple_key_allowed = false;
  34323. token = new yaml_token_t.ptr(2, $clone(parser$1.mark, yaml_mark_t), $clone(parser$1.mark, yaml_mark_t), 0, sliceType$1.nil, sliceType$1.nil, sliceType$1.nil, 0, 0, 0);
  34324. yaml_insert_token(parser$1, -1, token);
  34325. return true;
  34326. };
  34327. yaml_parser_fetch_directive = function(parser$1) {
  34328. var $ptr, _r$2, parser$1, token, $s, $r;
  34329. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r$2 = $f._r$2; parser$1 = $f.parser$1; token = $f.token; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  34330. token = [token];
  34331. if (!yaml_parser_unroll_indent(parser$1, -1)) {
  34332. return false;
  34333. }
  34334. if (!yaml_parser_remove_simple_key(parser$1)) {
  34335. return false;
  34336. }
  34337. parser$1.simple_key_allowed = false;
  34338. token[0] = new yaml_token_t.ptr(0, new yaml_mark_t.ptr(), new yaml_mark_t.ptr(), 0, sliceType$1.nil, sliceType$1.nil, sliceType$1.nil, 0, 0, 0);
  34339. _r$2 = yaml_parser_scan_directive(parser$1, token[0]); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  34340. /* */ if (!_r$2) { $s = 1; continue; }
  34341. /* */ $s = 2; continue;
  34342. /* if (!_r$2) { */ case 1:
  34343. return false;
  34344. /* } */ case 2:
  34345. yaml_insert_token(parser$1, -1, token[0]);
  34346. return true;
  34347. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: yaml_parser_fetch_directive }; } $f.$ptr = $ptr; $f._r$2 = _r$2; $f.parser$1 = parser$1; $f.token = token; $f.$s = $s; $f.$r = $r; return $f;
  34348. };
  34349. yaml_parser_fetch_document_indicator = function(parser$1, typ) {
  34350. var $ptr, end_mark, parser$1, start_mark, token, typ;
  34351. if (!yaml_parser_unroll_indent(parser$1, -1)) {
  34352. return false;
  34353. }
  34354. if (!yaml_parser_remove_simple_key(parser$1)) {
  34355. return false;
  34356. }
  34357. parser$1.simple_key_allowed = false;
  34358. start_mark = $clone(parser$1.mark, yaml_mark_t);
  34359. skip(parser$1);
  34360. skip(parser$1);
  34361. skip(parser$1);
  34362. end_mark = $clone(parser$1.mark, yaml_mark_t);
  34363. token = new yaml_token_t.ptr(typ, $clone(start_mark, yaml_mark_t), $clone(end_mark, yaml_mark_t), 0, sliceType$1.nil, sliceType$1.nil, sliceType$1.nil, 0, 0, 0);
  34364. yaml_insert_token(parser$1, -1, token);
  34365. return true;
  34366. };
  34367. yaml_parser_fetch_flow_collection_start = function(parser$1, typ) {
  34368. var $ptr, end_mark, parser$1, start_mark, token, typ;
  34369. if (!yaml_parser_save_simple_key(parser$1)) {
  34370. return false;
  34371. }
  34372. if (!yaml_parser_increase_flow_level(parser$1)) {
  34373. return false;
  34374. }
  34375. parser$1.simple_key_allowed = true;
  34376. start_mark = $clone(parser$1.mark, yaml_mark_t);
  34377. skip(parser$1);
  34378. end_mark = $clone(parser$1.mark, yaml_mark_t);
  34379. token = new yaml_token_t.ptr(typ, $clone(start_mark, yaml_mark_t), $clone(end_mark, yaml_mark_t), 0, sliceType$1.nil, sliceType$1.nil, sliceType$1.nil, 0, 0, 0);
  34380. yaml_insert_token(parser$1, -1, token);
  34381. return true;
  34382. };
  34383. yaml_parser_fetch_flow_collection_end = function(parser$1, typ) {
  34384. var $ptr, end_mark, parser$1, start_mark, token, typ;
  34385. if (!yaml_parser_remove_simple_key(parser$1)) {
  34386. return false;
  34387. }
  34388. if (!yaml_parser_decrease_flow_level(parser$1)) {
  34389. return false;
  34390. }
  34391. parser$1.simple_key_allowed = false;
  34392. start_mark = $clone(parser$1.mark, yaml_mark_t);
  34393. skip(parser$1);
  34394. end_mark = $clone(parser$1.mark, yaml_mark_t);
  34395. token = new yaml_token_t.ptr(typ, $clone(start_mark, yaml_mark_t), $clone(end_mark, yaml_mark_t), 0, sliceType$1.nil, sliceType$1.nil, sliceType$1.nil, 0, 0, 0);
  34396. yaml_insert_token(parser$1, -1, token);
  34397. return true;
  34398. };
  34399. yaml_parser_fetch_flow_entry = function(parser$1) {
  34400. var $ptr, end_mark, parser$1, start_mark, token;
  34401. if (!yaml_parser_remove_simple_key(parser$1)) {
  34402. return false;
  34403. }
  34404. parser$1.simple_key_allowed = true;
  34405. start_mark = $clone(parser$1.mark, yaml_mark_t);
  34406. skip(parser$1);
  34407. end_mark = $clone(parser$1.mark, yaml_mark_t);
  34408. token = new yaml_token_t.ptr(15, $clone(start_mark, yaml_mark_t), $clone(end_mark, yaml_mark_t), 0, sliceType$1.nil, sliceType$1.nil, sliceType$1.nil, 0, 0, 0);
  34409. yaml_insert_token(parser$1, -1, token);
  34410. return true;
  34411. };
  34412. yaml_parser_fetch_block_entry = function(parser$1) {
  34413. var $ptr, end_mark, parser$1, start_mark, token;
  34414. if (parser$1.flow_level === 0) {
  34415. if (!parser$1.simple_key_allowed) {
  34416. return yaml_parser_set_scanner_error(parser$1, "", parser$1.mark, "block sequence entries are not allowed in this context");
  34417. }
  34418. if (!yaml_parser_roll_indent(parser$1, parser$1.mark.column, -1, 7, parser$1.mark)) {
  34419. return false;
  34420. }
  34421. } else {
  34422. }
  34423. if (!yaml_parser_remove_simple_key(parser$1)) {
  34424. return false;
  34425. }
  34426. parser$1.simple_key_allowed = true;
  34427. start_mark = $clone(parser$1.mark, yaml_mark_t);
  34428. skip(parser$1);
  34429. end_mark = $clone(parser$1.mark, yaml_mark_t);
  34430. token = new yaml_token_t.ptr(14, $clone(start_mark, yaml_mark_t), $clone(end_mark, yaml_mark_t), 0, sliceType$1.nil, sliceType$1.nil, sliceType$1.nil, 0, 0, 0);
  34431. yaml_insert_token(parser$1, -1, token);
  34432. return true;
  34433. };
  34434. yaml_parser_fetch_key = function(parser$1) {
  34435. var $ptr, end_mark, parser$1, start_mark, token;
  34436. if (parser$1.flow_level === 0) {
  34437. if (!parser$1.simple_key_allowed) {
  34438. return yaml_parser_set_scanner_error(parser$1, "", parser$1.mark, "mapping keys are not allowed in this context");
  34439. }
  34440. if (!yaml_parser_roll_indent(parser$1, parser$1.mark.column, -1, 8, parser$1.mark)) {
  34441. return false;
  34442. }
  34443. }
  34444. if (!yaml_parser_remove_simple_key(parser$1)) {
  34445. return false;
  34446. }
  34447. parser$1.simple_key_allowed = parser$1.flow_level === 0;
  34448. start_mark = $clone(parser$1.mark, yaml_mark_t);
  34449. skip(parser$1);
  34450. end_mark = $clone(parser$1.mark, yaml_mark_t);
  34451. token = new yaml_token_t.ptr(16, $clone(start_mark, yaml_mark_t), $clone(end_mark, yaml_mark_t), 0, sliceType$1.nil, sliceType$1.nil, sliceType$1.nil, 0, 0, 0);
  34452. yaml_insert_token(parser$1, -1, token);
  34453. return true;
  34454. };
  34455. yaml_parser_fetch_value = function(parser$1) {
  34456. var $ptr, end_mark, parser$1, simple_key, start_mark, token, token$1, x$1, x$2;
  34457. simple_key = (x$1 = parser$1.simple_keys, x$2 = parser$1.simple_keys.$length - 1 >> 0, ((x$2 < 0 || x$2 >= x$1.$length) ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + x$2]));
  34458. if (simple_key.possible) {
  34459. token = new yaml_token_t.ptr(16, $clone(simple_key.mark, yaml_mark_t), $clone(simple_key.mark, yaml_mark_t), 0, sliceType$1.nil, sliceType$1.nil, sliceType$1.nil, 0, 0, 0);
  34460. yaml_insert_token(parser$1, simple_key.token_number - parser$1.tokens_parsed >> 0, token);
  34461. if (!yaml_parser_roll_indent(parser$1, simple_key.mark.column, simple_key.token_number, 8, simple_key.mark)) {
  34462. return false;
  34463. }
  34464. simple_key.possible = false;
  34465. parser$1.simple_key_allowed = false;
  34466. } else {
  34467. if (parser$1.flow_level === 0) {
  34468. if (!parser$1.simple_key_allowed) {
  34469. return yaml_parser_set_scanner_error(parser$1, "", parser$1.mark, "mapping values are not allowed in this context");
  34470. }
  34471. if (!yaml_parser_roll_indent(parser$1, parser$1.mark.column, -1, 8, parser$1.mark)) {
  34472. return false;
  34473. }
  34474. }
  34475. parser$1.simple_key_allowed = parser$1.flow_level === 0;
  34476. }
  34477. start_mark = $clone(parser$1.mark, yaml_mark_t);
  34478. skip(parser$1);
  34479. end_mark = $clone(parser$1.mark, yaml_mark_t);
  34480. token$1 = new yaml_token_t.ptr(17, $clone(start_mark, yaml_mark_t), $clone(end_mark, yaml_mark_t), 0, sliceType$1.nil, sliceType$1.nil, sliceType$1.nil, 0, 0, 0);
  34481. yaml_insert_token(parser$1, -1, token$1);
  34482. return true;
  34483. };
  34484. yaml_parser_fetch_anchor = function(parser$1, typ) {
  34485. var $ptr, _r$2, parser$1, token, typ, $s, $r;
  34486. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r$2 = $f._r$2; parser$1 = $f.parser$1; token = $f.token; typ = $f.typ; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  34487. token = [token];
  34488. if (!yaml_parser_save_simple_key(parser$1)) {
  34489. return false;
  34490. }
  34491. parser$1.simple_key_allowed = false;
  34492. token[0] = $clone(new yaml_token_t.ptr(), yaml_token_t);
  34493. _r$2 = yaml_parser_scan_anchor(parser$1, token[0], typ); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  34494. /* */ if (!_r$2) { $s = 1; continue; }
  34495. /* */ $s = 2; continue;
  34496. /* if (!_r$2) { */ case 1:
  34497. return false;
  34498. /* } */ case 2:
  34499. yaml_insert_token(parser$1, -1, token[0]);
  34500. return true;
  34501. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: yaml_parser_fetch_anchor }; } $f.$ptr = $ptr; $f._r$2 = _r$2; $f.parser$1 = parser$1; $f.token = token; $f.typ = typ; $f.$s = $s; $f.$r = $r; return $f;
  34502. };
  34503. yaml_parser_fetch_tag = function(parser$1) {
  34504. var $ptr, _r$2, parser$1, token, $s, $r;
  34505. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r$2 = $f._r$2; parser$1 = $f.parser$1; token = $f.token; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  34506. token = [token];
  34507. if (!yaml_parser_save_simple_key(parser$1)) {
  34508. return false;
  34509. }
  34510. parser$1.simple_key_allowed = false;
  34511. token[0] = $clone(new yaml_token_t.ptr(), yaml_token_t);
  34512. _r$2 = yaml_parser_scan_tag(parser$1, token[0]); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  34513. /* */ if (!_r$2) { $s = 1; continue; }
  34514. /* */ $s = 2; continue;
  34515. /* if (!_r$2) { */ case 1:
  34516. return false;
  34517. /* } */ case 2:
  34518. yaml_insert_token(parser$1, -1, token[0]);
  34519. return true;
  34520. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: yaml_parser_fetch_tag }; } $f.$ptr = $ptr; $f._r$2 = _r$2; $f.parser$1 = parser$1; $f.token = token; $f.$s = $s; $f.$r = $r; return $f;
  34521. };
  34522. yaml_parser_fetch_block_scalar = function(parser$1, literal) {
  34523. var $ptr, _r$2, literal, parser$1, token, $s, $r;
  34524. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r$2 = $f._r$2; literal = $f.literal; parser$1 = $f.parser$1; token = $f.token; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  34525. token = [token];
  34526. if (!yaml_parser_remove_simple_key(parser$1)) {
  34527. return false;
  34528. }
  34529. parser$1.simple_key_allowed = true;
  34530. token[0] = $clone(new yaml_token_t.ptr(), yaml_token_t);
  34531. _r$2 = yaml_parser_scan_block_scalar(parser$1, token[0], literal); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  34532. /* */ if (!_r$2) { $s = 1; continue; }
  34533. /* */ $s = 2; continue;
  34534. /* if (!_r$2) { */ case 1:
  34535. return false;
  34536. /* } */ case 2:
  34537. yaml_insert_token(parser$1, -1, token[0]);
  34538. return true;
  34539. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: yaml_parser_fetch_block_scalar }; } $f.$ptr = $ptr; $f._r$2 = _r$2; $f.literal = literal; $f.parser$1 = parser$1; $f.token = token; $f.$s = $s; $f.$r = $r; return $f;
  34540. };
  34541. yaml_parser_fetch_flow_scalar = function(parser$1, single) {
  34542. var $ptr, _r$2, parser$1, single, token, $s, $r;
  34543. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r$2 = $f._r$2; parser$1 = $f.parser$1; single = $f.single; token = $f.token; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  34544. token = [token];
  34545. if (!yaml_parser_save_simple_key(parser$1)) {
  34546. return false;
  34547. }
  34548. parser$1.simple_key_allowed = false;
  34549. token[0] = $clone(new yaml_token_t.ptr(), yaml_token_t);
  34550. _r$2 = yaml_parser_scan_flow_scalar(parser$1, token[0], single); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  34551. /* */ if (!_r$2) { $s = 1; continue; }
  34552. /* */ $s = 2; continue;
  34553. /* if (!_r$2) { */ case 1:
  34554. return false;
  34555. /* } */ case 2:
  34556. yaml_insert_token(parser$1, -1, token[0]);
  34557. return true;
  34558. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: yaml_parser_fetch_flow_scalar }; } $f.$ptr = $ptr; $f._r$2 = _r$2; $f.parser$1 = parser$1; $f.single = single; $f.token = token; $f.$s = $s; $f.$r = $r; return $f;
  34559. };
  34560. yaml_parser_fetch_plain_scalar = function(parser$1) {
  34561. var $ptr, _r$2, parser$1, token, $s, $r;
  34562. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r$2 = $f._r$2; parser$1 = $f.parser$1; token = $f.token; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  34563. token = [token];
  34564. if (!yaml_parser_save_simple_key(parser$1)) {
  34565. return false;
  34566. }
  34567. parser$1.simple_key_allowed = false;
  34568. token[0] = $clone(new yaml_token_t.ptr(), yaml_token_t);
  34569. _r$2 = yaml_parser_scan_plain_scalar(parser$1, token[0]); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  34570. /* */ if (!_r$2) { $s = 1; continue; }
  34571. /* */ $s = 2; continue;
  34572. /* if (!_r$2) { */ case 1:
  34573. return false;
  34574. /* } */ case 2:
  34575. yaml_insert_token(parser$1, -1, token[0]);
  34576. return true;
  34577. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: yaml_parser_fetch_plain_scalar }; } $f.$ptr = $ptr; $f._r$2 = _r$2; $f.parser$1 = parser$1; $f.token = token; $f.$s = $s; $f.$r = $r; return $f;
  34578. };
  34579. yaml_parser_scan_to_next_token = function(parser$1) {
  34580. var $ptr, _r$2, _r$3, _r$4, _r$5, _r$6, _v, _v$1, _v$2, _v$3, _v$4, parser$1, x$1, x$2, x$3, x$4, x$5, x$6, $s, $r;
  34581. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _v = $f._v; _v$1 = $f._v$1; _v$2 = $f._v$2; _v$3 = $f._v$3; _v$4 = $f._v$4; parser$1 = $f.parser$1; x$1 = $f.x$1; x$2 = $f.x$2; x$3 = $f.x$3; x$4 = $f.x$4; x$5 = $f.x$5; x$6 = $f.x$6; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  34582. /* while (true) { */ case 1:
  34583. if (!(parser$1.unread < 1)) { _v = false; $s = 5; continue s; }
  34584. _r$2 = yaml_parser_update_buffer(parser$1, 1); /* */ $s = 6; case 6: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  34585. _v = !_r$2; case 5:
  34586. /* */ if (_v) { $s = 3; continue; }
  34587. /* */ $s = 4; continue;
  34588. /* if (_v) { */ case 3:
  34589. return false;
  34590. /* } */ case 4:
  34591. if ((parser$1.mark.column === 0) && is_bom(parser$1.buffer, parser$1.buffer_pos)) {
  34592. skip(parser$1);
  34593. }
  34594. if (!(parser$1.unread < 1)) { _v$1 = false; $s = 9; continue s; }
  34595. _r$3 = yaml_parser_update_buffer(parser$1, 1); /* */ $s = 10; case 10: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  34596. _v$1 = !_r$3; case 9:
  34597. /* */ if (_v$1) { $s = 7; continue; }
  34598. /* */ $s = 8; continue;
  34599. /* if (_v$1) { */ case 7:
  34600. return false;
  34601. /* } */ case 8:
  34602. /* while (true) { */ case 11:
  34603. /* if (!(((x$1 = parser$1.buffer, x$2 = parser$1.buffer_pos, ((x$2 < 0 || x$2 >= x$1.$length) ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + x$2])) === 32) || ((parser$1.flow_level > 0 || !parser$1.simple_key_allowed) && ((x$3 = parser$1.buffer, x$4 = parser$1.buffer_pos, ((x$4 < 0 || x$4 >= x$3.$length) ? $throwRuntimeError("index out of range") : x$3.$array[x$3.$offset + x$4])) === 9)))) { break; } */ if(!(((x$1 = parser$1.buffer, x$2 = parser$1.buffer_pos, ((x$2 < 0 || x$2 >= x$1.$length) ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + x$2])) === 32) || ((parser$1.flow_level > 0 || !parser$1.simple_key_allowed) && ((x$3 = parser$1.buffer, x$4 = parser$1.buffer_pos, ((x$4 < 0 || x$4 >= x$3.$length) ? $throwRuntimeError("index out of range") : x$3.$array[x$3.$offset + x$4])) === 9)))) { $s = 12; continue; }
  34604. skip(parser$1);
  34605. if (!(parser$1.unread < 1)) { _v$2 = false; $s = 15; continue s; }
  34606. _r$4 = yaml_parser_update_buffer(parser$1, 1); /* */ $s = 16; case 16: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
  34607. _v$2 = !_r$4; case 15:
  34608. /* */ if (_v$2) { $s = 13; continue; }
  34609. /* */ $s = 14; continue;
  34610. /* if (_v$2) { */ case 13:
  34611. return false;
  34612. /* } */ case 14:
  34613. /* } */ $s = 11; continue; case 12:
  34614. /* */ if ((x$5 = parser$1.buffer, x$6 = parser$1.buffer_pos, ((x$6 < 0 || x$6 >= x$5.$length) ? $throwRuntimeError("index out of range") : x$5.$array[x$5.$offset + x$6])) === 35) { $s = 17; continue; }
  34615. /* */ $s = 18; continue;
  34616. /* if ((x$5 = parser$1.buffer, x$6 = parser$1.buffer_pos, ((x$6 < 0 || x$6 >= x$5.$length) ? $throwRuntimeError("index out of range") : x$5.$array[x$5.$offset + x$6])) === 35) { */ case 17:
  34617. /* while (true) { */ case 19:
  34618. /* if (!(!is_breakz(parser$1.buffer, parser$1.buffer_pos))) { break; } */ if(!(!is_breakz(parser$1.buffer, parser$1.buffer_pos))) { $s = 20; continue; }
  34619. skip(parser$1);
  34620. if (!(parser$1.unread < 1)) { _v$3 = false; $s = 23; continue s; }
  34621. _r$5 = yaml_parser_update_buffer(parser$1, 1); /* */ $s = 24; case 24: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
  34622. _v$3 = !_r$5; case 23:
  34623. /* */ if (_v$3) { $s = 21; continue; }
  34624. /* */ $s = 22; continue;
  34625. /* if (_v$3) { */ case 21:
  34626. return false;
  34627. /* } */ case 22:
  34628. /* } */ $s = 19; continue; case 20:
  34629. /* } */ case 18:
  34630. /* */ if (is_break(parser$1.buffer, parser$1.buffer_pos)) { $s = 25; continue; }
  34631. /* */ $s = 26; continue;
  34632. /* if (is_break(parser$1.buffer, parser$1.buffer_pos)) { */ case 25:
  34633. if (!(parser$1.unread < 2)) { _v$4 = false; $s = 30; continue s; }
  34634. _r$6 = yaml_parser_update_buffer(parser$1, 2); /* */ $s = 31; case 31: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
  34635. _v$4 = !_r$6; case 30:
  34636. /* */ if (_v$4) { $s = 28; continue; }
  34637. /* */ $s = 29; continue;
  34638. /* if (_v$4) { */ case 28:
  34639. return false;
  34640. /* } */ case 29:
  34641. skip_line(parser$1);
  34642. if (parser$1.flow_level === 0) {
  34643. parser$1.simple_key_allowed = true;
  34644. }
  34645. $s = 27; continue;
  34646. /* } else { */ case 26:
  34647. /* break; */ $s = 2; continue;
  34648. /* } */ case 27:
  34649. /* } */ $s = 1; continue; case 2:
  34650. return true;
  34651. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: yaml_parser_scan_to_next_token }; } $f.$ptr = $ptr; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._v = _v; $f._v$1 = _v$1; $f._v$2 = _v$2; $f._v$3 = _v$3; $f._v$4 = _v$4; $f.parser$1 = parser$1; $f.x$1 = x$1; $f.x$2 = x$2; $f.x$3 = x$3; $f.x$4 = x$4; $f.x$5 = x$5; $f.x$6 = x$6; $f.$s = $s; $f.$r = $r; return $f;
  34652. };
  34653. yaml_parser_scan_directive = function(parser$1, token) {
  34654. var $ptr, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _tmp, _tmp$1, _tmp$2, _tmp$3, _v, _v$1, _v$2, _v$3, end_mark, end_mark$1, handle, major, minor, name, parser$1, prefix, start_mark, token, x$1, x$2, $s, $r;
  34655. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _v = $f._v; _v$1 = $f._v$1; _v$2 = $f._v$2; _v$3 = $f._v$3; end_mark = $f.end_mark; end_mark$1 = $f.end_mark$1; handle = $f.handle; major = $f.major; minor = $f.minor; name = $f.name; parser$1 = $f.parser$1; prefix = $f.prefix; start_mark = $f.start_mark; token = $f.token; x$1 = $f.x$1; x$2 = $f.x$2; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  34656. handle = [handle];
  34657. major = [major];
  34658. minor = [minor];
  34659. name = [name];
  34660. prefix = [prefix];
  34661. start_mark = $clone(parser$1.mark, yaml_mark_t);
  34662. skip(parser$1);
  34663. name[0] = sliceType$1.nil;
  34664. _r$2 = yaml_parser_scan_directive_name(parser$1, start_mark, (name.$ptr || (name.$ptr = new ptrType$1(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, name)))); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  34665. /* */ if (!_r$2) { $s = 1; continue; }
  34666. /* */ $s = 2; continue;
  34667. /* if (!_r$2) { */ case 1:
  34668. return false;
  34669. /* } */ case 2:
  34670. /* */ if (bytes.Equal(name[0], new sliceType$1($stringToBytes("YAML")))) { $s = 4; continue; }
  34671. /* */ if (bytes.Equal(name[0], new sliceType$1($stringToBytes("TAG")))) { $s = 5; continue; }
  34672. /* */ $s = 6; continue;
  34673. /* if (bytes.Equal(name[0], new sliceType$1($stringToBytes("YAML")))) { */ case 4:
  34674. _tmp = 0; _tmp$1 = 0; major[0] = _tmp; minor[0] = _tmp$1;
  34675. _r$3 = yaml_parser_scan_version_directive_value(parser$1, start_mark, (major.$ptr || (major.$ptr = new ptrType$13(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, major))), (minor.$ptr || (minor.$ptr = new ptrType$13(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, minor)))); /* */ $s = 10; case 10: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  34676. /* */ if (!_r$3) { $s = 8; continue; }
  34677. /* */ $s = 9; continue;
  34678. /* if (!_r$3) { */ case 8:
  34679. return false;
  34680. /* } */ case 9:
  34681. end_mark = $clone(parser$1.mark, yaml_mark_t);
  34682. $copy(token, new yaml_token_t.ptr(3, $clone(start_mark, yaml_mark_t), $clone(end_mark, yaml_mark_t), 0, sliceType$1.nil, sliceType$1.nil, sliceType$1.nil, 0, major[0], minor[0]), yaml_token_t);
  34683. $s = 7; continue;
  34684. /* } else if (bytes.Equal(name[0], new sliceType$1($stringToBytes("TAG")))) { */ case 5:
  34685. _tmp$2 = sliceType$1.nil; _tmp$3 = sliceType$1.nil; handle[0] = _tmp$2; prefix[0] = _tmp$3;
  34686. _r$4 = yaml_parser_scan_tag_directive_value(parser$1, start_mark, (handle.$ptr || (handle.$ptr = new ptrType$1(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, handle))), (prefix.$ptr || (prefix.$ptr = new ptrType$1(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, prefix)))); /* */ $s = 13; case 13: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
  34687. /* */ if (!_r$4) { $s = 11; continue; }
  34688. /* */ $s = 12; continue;
  34689. /* if (!_r$4) { */ case 11:
  34690. return false;
  34691. /* } */ case 12:
  34692. end_mark$1 = $clone(parser$1.mark, yaml_mark_t);
  34693. $copy(token, new yaml_token_t.ptr(4, $clone(start_mark, yaml_mark_t), $clone(end_mark$1, yaml_mark_t), 0, handle[0], sliceType$1.nil, prefix[0], 0, 0, 0), yaml_token_t);
  34694. $s = 7; continue;
  34695. /* } else { */ case 6:
  34696. yaml_parser_set_scanner_error(parser$1, "while scanning a directive", start_mark, "found uknown directive name");
  34697. return false;
  34698. /* } */ case 7:
  34699. if (!(parser$1.unread < 1)) { _v = false; $s = 16; continue s; }
  34700. _r$5 = yaml_parser_update_buffer(parser$1, 1); /* */ $s = 17; case 17: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
  34701. _v = !_r$5; case 16:
  34702. /* */ if (_v) { $s = 14; continue; }
  34703. /* */ $s = 15; continue;
  34704. /* if (_v) { */ case 14:
  34705. return false;
  34706. /* } */ case 15:
  34707. /* while (true) { */ case 18:
  34708. /* if (!(is_blank(parser$1.buffer, parser$1.buffer_pos))) { break; } */ if(!(is_blank(parser$1.buffer, parser$1.buffer_pos))) { $s = 19; continue; }
  34709. skip(parser$1);
  34710. if (!(parser$1.unread < 1)) { _v$1 = false; $s = 22; continue s; }
  34711. _r$6 = yaml_parser_update_buffer(parser$1, 1); /* */ $s = 23; case 23: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
  34712. _v$1 = !_r$6; case 22:
  34713. /* */ if (_v$1) { $s = 20; continue; }
  34714. /* */ $s = 21; continue;
  34715. /* if (_v$1) { */ case 20:
  34716. return false;
  34717. /* } */ case 21:
  34718. /* } */ $s = 18; continue; case 19:
  34719. /* */ if ((x$1 = parser$1.buffer, x$2 = parser$1.buffer_pos, ((x$2 < 0 || x$2 >= x$1.$length) ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + x$2])) === 35) { $s = 24; continue; }
  34720. /* */ $s = 25; continue;
  34721. /* if ((x$1 = parser$1.buffer, x$2 = parser$1.buffer_pos, ((x$2 < 0 || x$2 >= x$1.$length) ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + x$2])) === 35) { */ case 24:
  34722. /* while (true) { */ case 26:
  34723. /* if (!(!is_breakz(parser$1.buffer, parser$1.buffer_pos))) { break; } */ if(!(!is_breakz(parser$1.buffer, parser$1.buffer_pos))) { $s = 27; continue; }
  34724. skip(parser$1);
  34725. if (!(parser$1.unread < 1)) { _v$2 = false; $s = 30; continue s; }
  34726. _r$7 = yaml_parser_update_buffer(parser$1, 1); /* */ $s = 31; case 31: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
  34727. _v$2 = !_r$7; case 30:
  34728. /* */ if (_v$2) { $s = 28; continue; }
  34729. /* */ $s = 29; continue;
  34730. /* if (_v$2) { */ case 28:
  34731. return false;
  34732. /* } */ case 29:
  34733. /* } */ $s = 26; continue; case 27:
  34734. /* } */ case 25:
  34735. if (!is_breakz(parser$1.buffer, parser$1.buffer_pos)) {
  34736. yaml_parser_set_scanner_error(parser$1, "while scanning a directive", start_mark, "did not find expected comment or line break");
  34737. return false;
  34738. }
  34739. /* */ if (is_break(parser$1.buffer, parser$1.buffer_pos)) { $s = 32; continue; }
  34740. /* */ $s = 33; continue;
  34741. /* if (is_break(parser$1.buffer, parser$1.buffer_pos)) { */ case 32:
  34742. if (!(parser$1.unread < 2)) { _v$3 = false; $s = 36; continue s; }
  34743. _r$8 = yaml_parser_update_buffer(parser$1, 2); /* */ $s = 37; case 37: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
  34744. _v$3 = !_r$8; case 36:
  34745. /* */ if (_v$3) { $s = 34; continue; }
  34746. /* */ $s = 35; continue;
  34747. /* if (_v$3) { */ case 34:
  34748. return false;
  34749. /* } */ case 35:
  34750. skip_line(parser$1);
  34751. /* } */ case 33:
  34752. return true;
  34753. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: yaml_parser_scan_directive }; } $f.$ptr = $ptr; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._v = _v; $f._v$1 = _v$1; $f._v$2 = _v$2; $f._v$3 = _v$3; $f.end_mark = end_mark; $f.end_mark$1 = end_mark$1; $f.handle = handle; $f.major = major; $f.minor = minor; $f.name = name; $f.parser$1 = parser$1; $f.prefix = prefix; $f.start_mark = start_mark; $f.token = token; $f.x$1 = x$1; $f.x$2 = x$2; $f.$s = $s; $f.$r = $r; return $f;
  34754. };
  34755. yaml_parser_scan_directive_name = function(parser$1, start_mark, name) {
  34756. var $ptr, _r$2, _r$3, _v, _v$1, name, parser$1, s, start_mark, $s, $r;
  34757. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r$2 = $f._r$2; _r$3 = $f._r$3; _v = $f._v; _v$1 = $f._v$1; name = $f.name; parser$1 = $f.parser$1; s = $f.s; start_mark = $f.start_mark; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  34758. start_mark = $clone(start_mark, yaml_mark_t);
  34759. if (!(parser$1.unread < 1)) { _v = false; $s = 3; continue s; }
  34760. _r$2 = yaml_parser_update_buffer(parser$1, 1); /* */ $s = 4; case 4: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  34761. _v = !_r$2; case 3:
  34762. /* */ if (_v) { $s = 1; continue; }
  34763. /* */ $s = 2; continue;
  34764. /* if (_v) { */ case 1:
  34765. return false;
  34766. /* } */ case 2:
  34767. s = sliceType$1.nil;
  34768. /* while (true) { */ case 5:
  34769. /* if (!(is_alpha(parser$1.buffer, parser$1.buffer_pos))) { break; } */ if(!(is_alpha(parser$1.buffer, parser$1.buffer_pos))) { $s = 6; continue; }
  34770. s = read(parser$1, s);
  34771. if (!(parser$1.unread < 1)) { _v$1 = false; $s = 9; continue s; }
  34772. _r$3 = yaml_parser_update_buffer(parser$1, 1); /* */ $s = 10; case 10: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  34773. _v$1 = !_r$3; case 9:
  34774. /* */ if (_v$1) { $s = 7; continue; }
  34775. /* */ $s = 8; continue;
  34776. /* if (_v$1) { */ case 7:
  34777. return false;
  34778. /* } */ case 8:
  34779. /* } */ $s = 5; continue; case 6:
  34780. if (s.$length === 0) {
  34781. yaml_parser_set_scanner_error(parser$1, "while scanning a directive", start_mark, "could not find expected directive name");
  34782. return false;
  34783. }
  34784. if (!is_blankz(parser$1.buffer, parser$1.buffer_pos)) {
  34785. yaml_parser_set_scanner_error(parser$1, "while scanning a directive", start_mark, "found unexpected non-alphabetical character");
  34786. return false;
  34787. }
  34788. name.$set(s);
  34789. return true;
  34790. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: yaml_parser_scan_directive_name }; } $f.$ptr = $ptr; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._v = _v; $f._v$1 = _v$1; $f.name = name; $f.parser$1 = parser$1; $f.s = s; $f.start_mark = start_mark; $f.$s = $s; $f.$r = $r; return $f;
  34791. };
  34792. yaml_parser_scan_version_directive_value = function(parser$1, start_mark, major, minor) {
  34793. var $ptr, _r$2, _r$3, _r$4, _r$5, _v, _v$1, major, minor, parser$1, start_mark, x$1, x$2, $s, $r;
  34794. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _v = $f._v; _v$1 = $f._v$1; major = $f.major; minor = $f.minor; parser$1 = $f.parser$1; start_mark = $f.start_mark; x$1 = $f.x$1; x$2 = $f.x$2; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  34795. start_mark = $clone(start_mark, yaml_mark_t);
  34796. if (!(parser$1.unread < 1)) { _v = false; $s = 3; continue s; }
  34797. _r$2 = yaml_parser_update_buffer(parser$1, 1); /* */ $s = 4; case 4: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  34798. _v = !_r$2; case 3:
  34799. /* */ if (_v) { $s = 1; continue; }
  34800. /* */ $s = 2; continue;
  34801. /* if (_v) { */ case 1:
  34802. return false;
  34803. /* } */ case 2:
  34804. /* while (true) { */ case 5:
  34805. /* if (!(is_blank(parser$1.buffer, parser$1.buffer_pos))) { break; } */ if(!(is_blank(parser$1.buffer, parser$1.buffer_pos))) { $s = 6; continue; }
  34806. skip(parser$1);
  34807. if (!(parser$1.unread < 1)) { _v$1 = false; $s = 9; continue s; }
  34808. _r$3 = yaml_parser_update_buffer(parser$1, 1); /* */ $s = 10; case 10: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  34809. _v$1 = !_r$3; case 9:
  34810. /* */ if (_v$1) { $s = 7; continue; }
  34811. /* */ $s = 8; continue;
  34812. /* if (_v$1) { */ case 7:
  34813. return false;
  34814. /* } */ case 8:
  34815. /* } */ $s = 5; continue; case 6:
  34816. _r$4 = yaml_parser_scan_version_directive_number(parser$1, start_mark, major); /* */ $s = 13; case 13: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
  34817. /* */ if (!_r$4) { $s = 11; continue; }
  34818. /* */ $s = 12; continue;
  34819. /* if (!_r$4) { */ case 11:
  34820. return false;
  34821. /* } */ case 12:
  34822. if (!(((x$1 = parser$1.buffer, x$2 = parser$1.buffer_pos, ((x$2 < 0 || x$2 >= x$1.$length) ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + x$2])) === 46))) {
  34823. return yaml_parser_set_scanner_error(parser$1, "while scanning a %YAML directive", start_mark, "did not find expected digit or '.' character");
  34824. }
  34825. skip(parser$1);
  34826. _r$5 = yaml_parser_scan_version_directive_number(parser$1, start_mark, minor); /* */ $s = 16; case 16: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
  34827. /* */ if (!_r$5) { $s = 14; continue; }
  34828. /* */ $s = 15; continue;
  34829. /* if (!_r$5) { */ case 14:
  34830. return false;
  34831. /* } */ case 15:
  34832. return true;
  34833. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: yaml_parser_scan_version_directive_value }; } $f.$ptr = $ptr; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._v = _v; $f._v$1 = _v$1; $f.major = major; $f.minor = minor; $f.parser$1 = parser$1; $f.start_mark = start_mark; $f.x$1 = x$1; $f.x$2 = x$2; $f.$s = $s; $f.$r = $r; return $f;
  34834. };
  34835. yaml_parser_scan_version_directive_number = function(parser$1, start_mark, number) {
  34836. var $ptr, _r$2, _r$3, _tmp, _tmp$1, _v, _v$1, length, number, parser$1, start_mark, value, $s, $r;
  34837. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r$2 = $f._r$2; _r$3 = $f._r$3; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _v = $f._v; _v$1 = $f._v$1; length = $f.length; number = $f.number; parser$1 = $f.parser$1; start_mark = $f.start_mark; value = $f.value; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  34838. start_mark = $clone(start_mark, yaml_mark_t);
  34839. if (!(parser$1.unread < 1)) { _v = false; $s = 3; continue s; }
  34840. _r$2 = yaml_parser_update_buffer(parser$1, 1); /* */ $s = 4; case 4: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  34841. _v = !_r$2; case 3:
  34842. /* */ if (_v) { $s = 1; continue; }
  34843. /* */ $s = 2; continue;
  34844. /* if (_v) { */ case 1:
  34845. return false;
  34846. /* } */ case 2:
  34847. _tmp = 0; _tmp$1 = 0; value = _tmp; length = _tmp$1;
  34848. /* while (true) { */ case 5:
  34849. /* if (!(is_digit(parser$1.buffer, parser$1.buffer_pos))) { break; } */ if(!(is_digit(parser$1.buffer, parser$1.buffer_pos))) { $s = 6; continue; }
  34850. length = length + (1) << 24 >> 24;
  34851. if (length > 2) {
  34852. return yaml_parser_set_scanner_error(parser$1, "while scanning a %YAML directive", start_mark, "found extremely long version number");
  34853. }
  34854. value = (value * 10 << 24 >> 24) + (as_digit(parser$1.buffer, parser$1.buffer_pos) << 24 >> 24) << 24 >> 24;
  34855. skip(parser$1);
  34856. if (!(parser$1.unread < 1)) { _v$1 = false; $s = 9; continue s; }
  34857. _r$3 = yaml_parser_update_buffer(parser$1, 1); /* */ $s = 10; case 10: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  34858. _v$1 = !_r$3; case 9:
  34859. /* */ if (_v$1) { $s = 7; continue; }
  34860. /* */ $s = 8; continue;
  34861. /* if (_v$1) { */ case 7:
  34862. return false;
  34863. /* } */ case 8:
  34864. /* } */ $s = 5; continue; case 6:
  34865. if (length === 0) {
  34866. return yaml_parser_set_scanner_error(parser$1, "while scanning a %YAML directive", start_mark, "did not find expected version number");
  34867. }
  34868. number.$set(value);
  34869. return true;
  34870. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: yaml_parser_scan_version_directive_number }; } $f.$ptr = $ptr; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._v = _v; $f._v$1 = _v$1; $f.length = length; $f.number = number; $f.parser$1 = parser$1; $f.start_mark = start_mark; $f.value = value; $f.$s = $s; $f.$r = $r; return $f;
  34871. };
  34872. yaml_parser_scan_tag_directive_value = function(parser$1, start_mark, handle, prefix) {
  34873. var $ptr, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _tmp, _tmp$1, _v, _v$1, _v$2, _v$3, _v$4, handle, handle_value, parser$1, prefix, prefix_value, start_mark, $s, $r;
  34874. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _v = $f._v; _v$1 = $f._v$1; _v$2 = $f._v$2; _v$3 = $f._v$3; _v$4 = $f._v$4; handle = $f.handle; handle_value = $f.handle_value; parser$1 = $f.parser$1; prefix = $f.prefix; prefix_value = $f.prefix_value; start_mark = $f.start_mark; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  34875. handle_value = [handle_value];
  34876. prefix_value = [prefix_value];
  34877. start_mark = $clone(start_mark, yaml_mark_t);
  34878. _tmp = sliceType$1.nil; _tmp$1 = sliceType$1.nil; handle_value[0] = _tmp; prefix_value[0] = _tmp$1;
  34879. if (!(parser$1.unread < 1)) { _v = false; $s = 3; continue s; }
  34880. _r$2 = yaml_parser_update_buffer(parser$1, 1); /* */ $s = 4; case 4: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  34881. _v = !_r$2; case 3:
  34882. /* */ if (_v) { $s = 1; continue; }
  34883. /* */ $s = 2; continue;
  34884. /* if (_v) { */ case 1:
  34885. return false;
  34886. /* } */ case 2:
  34887. /* while (true) { */ case 5:
  34888. /* if (!(is_blank(parser$1.buffer, parser$1.buffer_pos))) { break; } */ if(!(is_blank(parser$1.buffer, parser$1.buffer_pos))) { $s = 6; continue; }
  34889. skip(parser$1);
  34890. if (!(parser$1.unread < 1)) { _v$1 = false; $s = 9; continue s; }
  34891. _r$3 = yaml_parser_update_buffer(parser$1, 1); /* */ $s = 10; case 10: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  34892. _v$1 = !_r$3; case 9:
  34893. /* */ if (_v$1) { $s = 7; continue; }
  34894. /* */ $s = 8; continue;
  34895. /* if (_v$1) { */ case 7:
  34896. return false;
  34897. /* } */ case 8:
  34898. /* } */ $s = 5; continue; case 6:
  34899. _r$4 = yaml_parser_scan_tag_handle(parser$1, true, start_mark, (handle_value.$ptr || (handle_value.$ptr = new ptrType$1(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, handle_value)))); /* */ $s = 13; case 13: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
  34900. /* */ if (!_r$4) { $s = 11; continue; }
  34901. /* */ $s = 12; continue;
  34902. /* if (!_r$4) { */ case 11:
  34903. return false;
  34904. /* } */ case 12:
  34905. if (!(parser$1.unread < 1)) { _v$2 = false; $s = 16; continue s; }
  34906. _r$5 = yaml_parser_update_buffer(parser$1, 1); /* */ $s = 17; case 17: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
  34907. _v$2 = !_r$5; case 16:
  34908. /* */ if (_v$2) { $s = 14; continue; }
  34909. /* */ $s = 15; continue;
  34910. /* if (_v$2) { */ case 14:
  34911. return false;
  34912. /* } */ case 15:
  34913. if (!is_blank(parser$1.buffer, parser$1.buffer_pos)) {
  34914. yaml_parser_set_scanner_error(parser$1, "while scanning a %TAG directive", start_mark, "did not find expected whitespace");
  34915. return false;
  34916. }
  34917. /* while (true) { */ case 18:
  34918. /* if (!(is_blank(parser$1.buffer, parser$1.buffer_pos))) { break; } */ if(!(is_blank(parser$1.buffer, parser$1.buffer_pos))) { $s = 19; continue; }
  34919. skip(parser$1);
  34920. if (!(parser$1.unread < 1)) { _v$3 = false; $s = 22; continue s; }
  34921. _r$6 = yaml_parser_update_buffer(parser$1, 1); /* */ $s = 23; case 23: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
  34922. _v$3 = !_r$6; case 22:
  34923. /* */ if (_v$3) { $s = 20; continue; }
  34924. /* */ $s = 21; continue;
  34925. /* if (_v$3) { */ case 20:
  34926. return false;
  34927. /* } */ case 21:
  34928. /* } */ $s = 18; continue; case 19:
  34929. _r$7 = yaml_parser_scan_tag_uri(parser$1, true, sliceType$1.nil, start_mark, (prefix_value.$ptr || (prefix_value.$ptr = new ptrType$1(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, prefix_value)))); /* */ $s = 26; case 26: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
  34930. /* */ if (!_r$7) { $s = 24; continue; }
  34931. /* */ $s = 25; continue;
  34932. /* if (!_r$7) { */ case 24:
  34933. return false;
  34934. /* } */ case 25:
  34935. if (!(parser$1.unread < 1)) { _v$4 = false; $s = 29; continue s; }
  34936. _r$8 = yaml_parser_update_buffer(parser$1, 1); /* */ $s = 30; case 30: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
  34937. _v$4 = !_r$8; case 29:
  34938. /* */ if (_v$4) { $s = 27; continue; }
  34939. /* */ $s = 28; continue;
  34940. /* if (_v$4) { */ case 27:
  34941. return false;
  34942. /* } */ case 28:
  34943. if (!is_blankz(parser$1.buffer, parser$1.buffer_pos)) {
  34944. yaml_parser_set_scanner_error(parser$1, "while scanning a %TAG directive", start_mark, "did not find expected whitespace or line break");
  34945. return false;
  34946. }
  34947. handle.$set(handle_value[0]);
  34948. prefix.$set(prefix_value[0]);
  34949. return true;
  34950. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: yaml_parser_scan_tag_directive_value }; } $f.$ptr = $ptr; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._v = _v; $f._v$1 = _v$1; $f._v$2 = _v$2; $f._v$3 = _v$3; $f._v$4 = _v$4; $f.handle = handle; $f.handle_value = handle_value; $f.parser$1 = parser$1; $f.prefix = prefix; $f.prefix_value = prefix_value; $f.start_mark = start_mark; $f.$s = $s; $f.$r = $r; return $f;
  34951. };
  34952. yaml_parser_scan_anchor = function(parser$1, token, typ) {
  34953. var $ptr, _r$2, _r$3, _v, _v$1, context, end_mark, parser$1, s, start_mark, token, typ, x$1, x$10, x$11, x$12, x$13, x$14, x$15, x$16, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9, $s, $r;
  34954. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r$2 = $f._r$2; _r$3 = $f._r$3; _v = $f._v; _v$1 = $f._v$1; context = $f.context; end_mark = $f.end_mark; parser$1 = $f.parser$1; s = $f.s; start_mark = $f.start_mark; token = $f.token; typ = $f.typ; x$1 = $f.x$1; x$10 = $f.x$10; x$11 = $f.x$11; x$12 = $f.x$12; x$13 = $f.x$13; x$14 = $f.x$14; x$15 = $f.x$15; x$16 = $f.x$16; x$2 = $f.x$2; x$3 = $f.x$3; x$4 = $f.x$4; x$5 = $f.x$5; x$6 = $f.x$6; x$7 = $f.x$7; x$8 = $f.x$8; x$9 = $f.x$9; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  34955. s = sliceType$1.nil;
  34956. start_mark = $clone(parser$1.mark, yaml_mark_t);
  34957. skip(parser$1);
  34958. if (!(parser$1.unread < 1)) { _v = false; $s = 3; continue s; }
  34959. _r$2 = yaml_parser_update_buffer(parser$1, 1); /* */ $s = 4; case 4: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  34960. _v = !_r$2; case 3:
  34961. /* */ if (_v) { $s = 1; continue; }
  34962. /* */ $s = 2; continue;
  34963. /* if (_v) { */ case 1:
  34964. return false;
  34965. /* } */ case 2:
  34966. /* while (true) { */ case 5:
  34967. /* if (!(is_alpha(parser$1.buffer, parser$1.buffer_pos))) { break; } */ if(!(is_alpha(parser$1.buffer, parser$1.buffer_pos))) { $s = 6; continue; }
  34968. s = read(parser$1, s);
  34969. if (!(parser$1.unread < 1)) { _v$1 = false; $s = 9; continue s; }
  34970. _r$3 = yaml_parser_update_buffer(parser$1, 1); /* */ $s = 10; case 10: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  34971. _v$1 = !_r$3; case 9:
  34972. /* */ if (_v$1) { $s = 7; continue; }
  34973. /* */ $s = 8; continue;
  34974. /* if (_v$1) { */ case 7:
  34975. return false;
  34976. /* } */ case 8:
  34977. /* } */ $s = 5; continue; case 6:
  34978. end_mark = $clone(parser$1.mark, yaml_mark_t);
  34979. if ((s.$length === 0) || !(is_blankz(parser$1.buffer, parser$1.buffer_pos) || ((x$1 = parser$1.buffer, x$2 = parser$1.buffer_pos, ((x$2 < 0 || x$2 >= x$1.$length) ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + x$2])) === 63) || ((x$3 = parser$1.buffer, x$4 = parser$1.buffer_pos, ((x$4 < 0 || x$4 >= x$3.$length) ? $throwRuntimeError("index out of range") : x$3.$array[x$3.$offset + x$4])) === 58) || ((x$5 = parser$1.buffer, x$6 = parser$1.buffer_pos, ((x$6 < 0 || x$6 >= x$5.$length) ? $throwRuntimeError("index out of range") : x$5.$array[x$5.$offset + x$6])) === 44) || ((x$7 = parser$1.buffer, x$8 = parser$1.buffer_pos, ((x$8 < 0 || x$8 >= x$7.$length) ? $throwRuntimeError("index out of range") : x$7.$array[x$7.$offset + x$8])) === 93) || ((x$9 = parser$1.buffer, x$10 = parser$1.buffer_pos, ((x$10 < 0 || x$10 >= x$9.$length) ? $throwRuntimeError("index out of range") : x$9.$array[x$9.$offset + x$10])) === 125) || ((x$11 = parser$1.buffer, x$12 = parser$1.buffer_pos, ((x$12 < 0 || x$12 >= x$11.$length) ? $throwRuntimeError("index out of range") : x$11.$array[x$11.$offset + x$12])) === 37) || ((x$13 = parser$1.buffer, x$14 = parser$1.buffer_pos, ((x$14 < 0 || x$14 >= x$13.$length) ? $throwRuntimeError("index out of range") : x$13.$array[x$13.$offset + x$14])) === 64) || ((x$15 = parser$1.buffer, x$16 = parser$1.buffer_pos, ((x$16 < 0 || x$16 >= x$15.$length) ? $throwRuntimeError("index out of range") : x$15.$array[x$15.$offset + x$16])) === 96))) {
  34980. context = "while scanning an alias";
  34981. if (typ === 19) {
  34982. context = "while scanning an anchor";
  34983. }
  34984. yaml_parser_set_scanner_error(parser$1, context, start_mark, "did not find expected alphabetic or numeric character");
  34985. return false;
  34986. }
  34987. $copy(token, new yaml_token_t.ptr(typ, $clone(start_mark, yaml_mark_t), $clone(end_mark, yaml_mark_t), 0, s, sliceType$1.nil, sliceType$1.nil, 0, 0, 0), yaml_token_t);
  34988. return true;
  34989. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: yaml_parser_scan_anchor }; } $f.$ptr = $ptr; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._v = _v; $f._v$1 = _v$1; $f.context = context; $f.end_mark = end_mark; $f.parser$1 = parser$1; $f.s = s; $f.start_mark = start_mark; $f.token = token; $f.typ = typ; $f.x$1 = x$1; $f.x$10 = x$10; $f.x$11 = x$11; $f.x$12 = x$12; $f.x$13 = x$13; $f.x$14 = x$14; $f.x$15 = x$15; $f.x$16 = x$16; $f.x$2 = x$2; $f.x$3 = x$3; $f.x$4 = x$4; $f.x$5 = x$5; $f.x$6 = x$6; $f.x$7 = x$7; $f.x$8 = x$8; $f.x$9 = x$9; $f.$s = $s; $f.$r = $r; return $f;
  34990. };
  34991. yaml_parser_scan_tag = function(parser$1, token) {
  34992. var $ptr, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _tmp, _tmp$1, _tmp$2, _tmp$3, _v, _v$1, end_mark, handle, parser$1, start_mark, suffix, token, x$1, x$2, x$3, x$4, x$5, $s, $r;
  34993. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _v = $f._v; _v$1 = $f._v$1; end_mark = $f.end_mark; handle = $f.handle; parser$1 = $f.parser$1; start_mark = $f.start_mark; suffix = $f.suffix; token = $f.token; x$1 = $f.x$1; x$2 = $f.x$2; x$3 = $f.x$3; x$4 = $f.x$4; x$5 = $f.x$5; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  34994. handle = [handle];
  34995. suffix = [suffix];
  34996. _tmp = sliceType$1.nil; _tmp$1 = sliceType$1.nil; handle[0] = _tmp; suffix[0] = _tmp$1;
  34997. start_mark = $clone(parser$1.mark, yaml_mark_t);
  34998. if (!(parser$1.unread < 2)) { _v = false; $s = 3; continue s; }
  34999. _r$2 = yaml_parser_update_buffer(parser$1, 2); /* */ $s = 4; case 4: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  35000. _v = !_r$2; case 3:
  35001. /* */ if (_v) { $s = 1; continue; }
  35002. /* */ $s = 2; continue;
  35003. /* if (_v) { */ case 1:
  35004. return false;
  35005. /* } */ case 2:
  35006. /* */ if ((x$1 = parser$1.buffer, x$2 = parser$1.buffer_pos + 1 >> 0, ((x$2 < 0 || x$2 >= x$1.$length) ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + x$2])) === 60) { $s = 5; continue; }
  35007. /* */ $s = 6; continue;
  35008. /* if ((x$1 = parser$1.buffer, x$2 = parser$1.buffer_pos + 1 >> 0, ((x$2 < 0 || x$2 >= x$1.$length) ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + x$2])) === 60) { */ case 5:
  35009. skip(parser$1);
  35010. skip(parser$1);
  35011. _r$3 = yaml_parser_scan_tag_uri(parser$1, false, sliceType$1.nil, start_mark, (suffix.$ptr || (suffix.$ptr = new ptrType$1(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, suffix)))); /* */ $s = 10; case 10: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  35012. /* */ if (!_r$3) { $s = 8; continue; }
  35013. /* */ $s = 9; continue;
  35014. /* if (!_r$3) { */ case 8:
  35015. return false;
  35016. /* } */ case 9:
  35017. if (!(((x$3 = parser$1.buffer, x$4 = parser$1.buffer_pos, ((x$4 < 0 || x$4 >= x$3.$length) ? $throwRuntimeError("index out of range") : x$3.$array[x$3.$offset + x$4])) === 62))) {
  35018. yaml_parser_set_scanner_error(parser$1, "while scanning a tag", start_mark, "did not find the expected '>'");
  35019. return false;
  35020. }
  35021. skip(parser$1);
  35022. $s = 7; continue;
  35023. /* } else { */ case 6:
  35024. _r$4 = yaml_parser_scan_tag_handle(parser$1, false, start_mark, (handle.$ptr || (handle.$ptr = new ptrType$1(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, handle)))); /* */ $s = 13; case 13: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
  35025. /* */ if (!_r$4) { $s = 11; continue; }
  35026. /* */ $s = 12; continue;
  35027. /* if (!_r$4) { */ case 11:
  35028. return false;
  35029. /* } */ case 12:
  35030. /* */ if (((0 >= handle[0].$length ? $throwRuntimeError("index out of range") : handle[0].$array[handle[0].$offset + 0]) === 33) && handle[0].$length > 1 && ((x$5 = handle[0].$length - 1 >> 0, ((x$5 < 0 || x$5 >= handle[0].$length) ? $throwRuntimeError("index out of range") : handle[0].$array[handle[0].$offset + x$5])) === 33)) { $s = 14; continue; }
  35031. /* */ $s = 15; continue;
  35032. /* if (((0 >= handle[0].$length ? $throwRuntimeError("index out of range") : handle[0].$array[handle[0].$offset + 0]) === 33) && handle[0].$length > 1 && ((x$5 = handle[0].$length - 1 >> 0, ((x$5 < 0 || x$5 >= handle[0].$length) ? $throwRuntimeError("index out of range") : handle[0].$array[handle[0].$offset + x$5])) === 33)) { */ case 14:
  35033. _r$5 = yaml_parser_scan_tag_uri(parser$1, false, sliceType$1.nil, start_mark, (suffix.$ptr || (suffix.$ptr = new ptrType$1(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, suffix)))); /* */ $s = 19; case 19: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
  35034. /* */ if (!_r$5) { $s = 17; continue; }
  35035. /* */ $s = 18; continue;
  35036. /* if (!_r$5) { */ case 17:
  35037. return false;
  35038. /* } */ case 18:
  35039. $s = 16; continue;
  35040. /* } else { */ case 15:
  35041. _r$6 = yaml_parser_scan_tag_uri(parser$1, false, handle[0], start_mark, (suffix.$ptr || (suffix.$ptr = new ptrType$1(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, suffix)))); /* */ $s = 22; case 22: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
  35042. /* */ if (!_r$6) { $s = 20; continue; }
  35043. /* */ $s = 21; continue;
  35044. /* if (!_r$6) { */ case 20:
  35045. return false;
  35046. /* } */ case 21:
  35047. handle[0] = new sliceType$1([33]);
  35048. if (suffix[0].$length === 0) {
  35049. _tmp$2 = suffix[0]; _tmp$3 = handle[0]; handle[0] = _tmp$2; suffix[0] = _tmp$3;
  35050. }
  35051. /* } */ case 16:
  35052. /* } */ case 7:
  35053. if (!(parser$1.unread < 1)) { _v$1 = false; $s = 25; continue s; }
  35054. _r$7 = yaml_parser_update_buffer(parser$1, 1); /* */ $s = 26; case 26: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
  35055. _v$1 = !_r$7; case 25:
  35056. /* */ if (_v$1) { $s = 23; continue; }
  35057. /* */ $s = 24; continue;
  35058. /* if (_v$1) { */ case 23:
  35059. return false;
  35060. /* } */ case 24:
  35061. if (!is_blankz(parser$1.buffer, parser$1.buffer_pos)) {
  35062. yaml_parser_set_scanner_error(parser$1, "while scanning a tag", start_mark, "did not find expected whitespace or line break");
  35063. return false;
  35064. }
  35065. end_mark = $clone(parser$1.mark, yaml_mark_t);
  35066. $copy(token, new yaml_token_t.ptr(20, $clone(start_mark, yaml_mark_t), $clone(end_mark, yaml_mark_t), 0, handle[0], suffix[0], sliceType$1.nil, 0, 0, 0), yaml_token_t);
  35067. return true;
  35068. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: yaml_parser_scan_tag }; } $f.$ptr = $ptr; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._v = _v; $f._v$1 = _v$1; $f.end_mark = end_mark; $f.handle = handle; $f.parser$1 = parser$1; $f.start_mark = start_mark; $f.suffix = suffix; $f.token = token; $f.x$1 = x$1; $f.x$2 = x$2; $f.x$3 = x$3; $f.x$4 = x$4; $f.x$5 = x$5; $f.$s = $s; $f.$r = $r; return $f;
  35069. };
  35070. yaml_parser_scan_tag_handle = function(parser$1, directive, start_mark, handle) {
  35071. var $ptr, _r$2, _r$3, _r$4, _v, _v$1, _v$2, directive, handle, parser$1, s, start_mark, x$1, x$2, x$3, x$4, $s, $r;
  35072. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _v = $f._v; _v$1 = $f._v$1; _v$2 = $f._v$2; directive = $f.directive; handle = $f.handle; parser$1 = $f.parser$1; s = $f.s; start_mark = $f.start_mark; x$1 = $f.x$1; x$2 = $f.x$2; x$3 = $f.x$3; x$4 = $f.x$4; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  35073. start_mark = $clone(start_mark, yaml_mark_t);
  35074. if (!(parser$1.unread < 1)) { _v = false; $s = 3; continue s; }
  35075. _r$2 = yaml_parser_update_buffer(parser$1, 1); /* */ $s = 4; case 4: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  35076. _v = !_r$2; case 3:
  35077. /* */ if (_v) { $s = 1; continue; }
  35078. /* */ $s = 2; continue;
  35079. /* if (_v) { */ case 1:
  35080. return false;
  35081. /* } */ case 2:
  35082. if (!(((x$1 = parser$1.buffer, x$2 = parser$1.buffer_pos, ((x$2 < 0 || x$2 >= x$1.$length) ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + x$2])) === 33))) {
  35083. yaml_parser_set_scanner_tag_error(parser$1, directive, start_mark, "did not find expected '!'");
  35084. return false;
  35085. }
  35086. s = sliceType$1.nil;
  35087. s = read(parser$1, s);
  35088. if (!(parser$1.unread < 1)) { _v$1 = false; $s = 7; continue s; }
  35089. _r$3 = yaml_parser_update_buffer(parser$1, 1); /* */ $s = 8; case 8: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  35090. _v$1 = !_r$3; case 7:
  35091. /* */ if (_v$1) { $s = 5; continue; }
  35092. /* */ $s = 6; continue;
  35093. /* if (_v$1) { */ case 5:
  35094. return false;
  35095. /* } */ case 6:
  35096. /* while (true) { */ case 9:
  35097. /* if (!(is_alpha(parser$1.buffer, parser$1.buffer_pos))) { break; } */ if(!(is_alpha(parser$1.buffer, parser$1.buffer_pos))) { $s = 10; continue; }
  35098. s = read(parser$1, s);
  35099. if (!(parser$1.unread < 1)) { _v$2 = false; $s = 13; continue s; }
  35100. _r$4 = yaml_parser_update_buffer(parser$1, 1); /* */ $s = 14; case 14: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
  35101. _v$2 = !_r$4; case 13:
  35102. /* */ if (_v$2) { $s = 11; continue; }
  35103. /* */ $s = 12; continue;
  35104. /* if (_v$2) { */ case 11:
  35105. return false;
  35106. /* } */ case 12:
  35107. /* } */ $s = 9; continue; case 10:
  35108. if ((x$3 = parser$1.buffer, x$4 = parser$1.buffer_pos, ((x$4 < 0 || x$4 >= x$3.$length) ? $throwRuntimeError("index out of range") : x$3.$array[x$3.$offset + x$4])) === 33) {
  35109. s = read(parser$1, s);
  35110. } else {
  35111. if (directive && !(((0 >= s.$length ? $throwRuntimeError("index out of range") : s.$array[s.$offset + 0]) === 33) && ((1 >= s.$length ? $throwRuntimeError("index out of range") : s.$array[s.$offset + 1]) === 0))) {
  35112. yaml_parser_set_scanner_tag_error(parser$1, directive, start_mark, "did not find expected '!'");
  35113. return false;
  35114. }
  35115. }
  35116. handle.$set(s);
  35117. return true;
  35118. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: yaml_parser_scan_tag_handle }; } $f.$ptr = $ptr; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._v = _v; $f._v$1 = _v$1; $f._v$2 = _v$2; $f.directive = directive; $f.handle = handle; $f.parser$1 = parser$1; $f.s = s; $f.start_mark = start_mark; $f.x$1 = x$1; $f.x$2 = x$2; $f.x$3 = x$3; $f.x$4 = x$4; $f.$s = $s; $f.$r = $r; return $f;
  35119. };
  35120. yaml_parser_scan_tag_uri = function(parser$1, directive, head, start_mark, uri) {
  35121. var $ptr, _r$2, _r$3, _r$4, _v, _v$1, directive, head, parser$1, s, start_mark, uri, x$1, x$10, x$11, x$12, x$13, x$14, x$15, x$16, x$17, x$18, x$19, x$2, x$20, x$21, x$22, x$23, x$24, x$25, x$26, x$27, x$28, x$29, x$3, x$30, x$31, x$32, x$33, x$34, x$35, x$36, x$37, x$38, x$39, x$4, x$40, x$41, x$42, x$5, x$6, x$7, x$8, x$9, $s, $r;
  35122. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _v = $f._v; _v$1 = $f._v$1; directive = $f.directive; head = $f.head; parser$1 = $f.parser$1; s = $f.s; start_mark = $f.start_mark; uri = $f.uri; x$1 = $f.x$1; x$10 = $f.x$10; x$11 = $f.x$11; x$12 = $f.x$12; x$13 = $f.x$13; x$14 = $f.x$14; x$15 = $f.x$15; x$16 = $f.x$16; x$17 = $f.x$17; x$18 = $f.x$18; x$19 = $f.x$19; x$2 = $f.x$2; x$20 = $f.x$20; x$21 = $f.x$21; x$22 = $f.x$22; x$23 = $f.x$23; x$24 = $f.x$24; x$25 = $f.x$25; x$26 = $f.x$26; x$27 = $f.x$27; x$28 = $f.x$28; x$29 = $f.x$29; x$3 = $f.x$3; x$30 = $f.x$30; x$31 = $f.x$31; x$32 = $f.x$32; x$33 = $f.x$33; x$34 = $f.x$34; x$35 = $f.x$35; x$36 = $f.x$36; x$37 = $f.x$37; x$38 = $f.x$38; x$39 = $f.x$39; x$4 = $f.x$4; x$40 = $f.x$40; x$41 = $f.x$41; x$42 = $f.x$42; x$5 = $f.x$5; x$6 = $f.x$6; x$7 = $f.x$7; x$8 = $f.x$8; x$9 = $f.x$9; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  35123. s = [s];
  35124. start_mark = $clone(start_mark, yaml_mark_t);
  35125. s[0] = sliceType$1.nil;
  35126. if (head.$length > 1) {
  35127. s[0] = $appendSlice(s[0], $subslice(head, 1));
  35128. }
  35129. if (!(parser$1.unread < 1)) { _v = false; $s = 3; continue s; }
  35130. _r$2 = yaml_parser_update_buffer(parser$1, 1); /* */ $s = 4; case 4: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  35131. _v = !_r$2; case 3:
  35132. /* */ if (_v) { $s = 1; continue; }
  35133. /* */ $s = 2; continue;
  35134. /* if (_v) { */ case 1:
  35135. return false;
  35136. /* } */ case 2:
  35137. /* while (true) { */ case 5:
  35138. /* if (!(is_alpha(parser$1.buffer, parser$1.buffer_pos) || ((x$1 = parser$1.buffer, x$2 = parser$1.buffer_pos, ((x$2 < 0 || x$2 >= x$1.$length) ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + x$2])) === 59) || ((x$3 = parser$1.buffer, x$4 = parser$1.buffer_pos, ((x$4 < 0 || x$4 >= x$3.$length) ? $throwRuntimeError("index out of range") : x$3.$array[x$3.$offset + x$4])) === 47) || ((x$5 = parser$1.buffer, x$6 = parser$1.buffer_pos, ((x$6 < 0 || x$6 >= x$5.$length) ? $throwRuntimeError("index out of range") : x$5.$array[x$5.$offset + x$6])) === 63) || ((x$7 = parser$1.buffer, x$8 = parser$1.buffer_pos, ((x$8 < 0 || x$8 >= x$7.$length) ? $throwRuntimeError("index out of range") : x$7.$array[x$7.$offset + x$8])) === 58) || ((x$9 = parser$1.buffer, x$10 = parser$1.buffer_pos, ((x$10 < 0 || x$10 >= x$9.$length) ? $throwRuntimeError("index out of range") : x$9.$array[x$9.$offset + x$10])) === 64) || ((x$11 = parser$1.buffer, x$12 = parser$1.buffer_pos, ((x$12 < 0 || x$12 >= x$11.$length) ? $throwRuntimeError("index out of range") : x$11.$array[x$11.$offset + x$12])) === 38) || ((x$13 = parser$1.buffer, x$14 = parser$1.buffer_pos, ((x$14 < 0 || x$14 >= x$13.$length) ? $throwRuntimeError("index out of range") : x$13.$array[x$13.$offset + x$14])) === 61) || ((x$15 = parser$1.buffer, x$16 = parser$1.buffer_pos, ((x$16 < 0 || x$16 >= x$15.$length) ? $throwRuntimeError("index out of range") : x$15.$array[x$15.$offset + x$16])) === 43) || ((x$17 = parser$1.buffer, x$18 = parser$1.buffer_pos, ((x$18 < 0 || x$18 >= x$17.$length) ? $throwRuntimeError("index out of range") : x$17.$array[x$17.$offset + x$18])) === 36) || ((x$19 = parser$1.buffer, x$20 = parser$1.buffer_pos, ((x$20 < 0 || x$20 >= x$19.$length) ? $throwRuntimeError("index out of range") : x$19.$array[x$19.$offset + x$20])) === 44) || ((x$21 = parser$1.buffer, x$22 = parser$1.buffer_pos, ((x$22 < 0 || x$22 >= x$21.$length) ? $throwRuntimeError("index out of range") : x$21.$array[x$21.$offset + x$22])) === 46) || ((x$23 = parser$1.buffer, x$24 = parser$1.buffer_pos, ((x$24 < 0 || x$24 >= x$23.$length) ? $throwRuntimeError("index out of range") : x$23.$array[x$23.$offset + x$24])) === 33) || ((x$25 = parser$1.buffer, x$26 = parser$1.buffer_pos, ((x$26 < 0 || x$26 >= x$25.$length) ? $throwRuntimeError("index out of range") : x$25.$array[x$25.$offset + x$26])) === 126) || ((x$27 = parser$1.buffer, x$28 = parser$1.buffer_pos, ((x$28 < 0 || x$28 >= x$27.$length) ? $throwRuntimeError("index out of range") : x$27.$array[x$27.$offset + x$28])) === 42) || ((x$29 = parser$1.buffer, x$30 = parser$1.buffer_pos, ((x$30 < 0 || x$30 >= x$29.$length) ? $throwRuntimeError("index out of range") : x$29.$array[x$29.$offset + x$30])) === 39) || ((x$31 = parser$1.buffer, x$32 = parser$1.buffer_pos, ((x$32 < 0 || x$32 >= x$31.$length) ? $throwRuntimeError("index out of range") : x$31.$array[x$31.$offset + x$32])) === 40) || ((x$33 = parser$1.buffer, x$34 = parser$1.buffer_pos, ((x$34 < 0 || x$34 >= x$33.$length) ? $throwRuntimeError("index out of range") : x$33.$array[x$33.$offset + x$34])) === 41) || ((x$35 = parser$1.buffer, x$36 = parser$1.buffer_pos, ((x$36 < 0 || x$36 >= x$35.$length) ? $throwRuntimeError("index out of range") : x$35.$array[x$35.$offset + x$36])) === 91) || ((x$37 = parser$1.buffer, x$38 = parser$1.buffer_pos, ((x$38 < 0 || x$38 >= x$37.$length) ? $throwRuntimeError("index out of range") : x$37.$array[x$37.$offset + x$38])) === 93) || ((x$39 = parser$1.buffer, x$40 = parser$1.buffer_pos, ((x$40 < 0 || x$40 >= x$39.$length) ? $throwRuntimeError("index out of range") : x$39.$array[x$39.$offset + x$40])) === 37))) { break; } */ if(!(is_alpha(parser$1.buffer, parser$1.buffer_pos) || ((x$1 = parser$1.buffer, x$2 = parser$1.buffer_pos, ((x$2 < 0 || x$2 >= x$1.$length) ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + x$2])) === 59) || ((x$3 = parser$1.buffer, x$4 = parser$1.buffer_pos, ((x$4 < 0 || x$4 >= x$3.$length) ? $throwRuntimeError("index out of range") : x$3.$array[x$3.$offset + x$4])) === 47) || ((x$5 = parser$1.buffer, x$6 = parser$1.buffer_pos, ((x$6 < 0 || x$6 >= x$5.$length) ? $throwRuntimeError("index out of range") : x$5.$array[x$5.$offset + x$6])) === 63) || ((x$7 = parser$1.buffer, x$8 = parser$1.buffer_pos, ((x$8 < 0 || x$8 >= x$7.$length) ? $throwRuntimeError("index out of range") : x$7.$array[x$7.$offset + x$8])) === 58) || ((x$9 = parser$1.buffer, x$10 = parser$1.buffer_pos, ((x$10 < 0 || x$10 >= x$9.$length) ? $throwRuntimeError("index out of range") : x$9.$array[x$9.$offset + x$10])) === 64) || ((x$11 = parser$1.buffer, x$12 = parser$1.buffer_pos, ((x$12 < 0 || x$12 >= x$11.$length) ? $throwRuntimeError("index out of range") : x$11.$array[x$11.$offset + x$12])) === 38) || ((x$13 = parser$1.buffer, x$14 = parser$1.buffer_pos, ((x$14 < 0 || x$14 >= x$13.$length) ? $throwRuntimeError("index out of range") : x$13.$array[x$13.$offset + x$14])) === 61) || ((x$15 = parser$1.buffer, x$16 = parser$1.buffer_pos, ((x$16 < 0 || x$16 >= x$15.$length) ? $throwRuntimeError("index out of range") : x$15.$array[x$15.$offset + x$16])) === 43) || ((x$17 = parser$1.buffer, x$18 = parser$1.buffer_pos, ((x$18 < 0 || x$18 >= x$17.$length) ? $throwRuntimeError("index out of range") : x$17.$array[x$17.$offset + x$18])) === 36) || ((x$19 = parser$1.buffer, x$20 = parser$1.buffer_pos, ((x$20 < 0 || x$20 >= x$19.$length) ? $throwRuntimeError("index out of range") : x$19.$array[x$19.$offset + x$20])) === 44) || ((x$21 = parser$1.buffer, x$22 = parser$1.buffer_pos, ((x$22 < 0 || x$22 >= x$21.$length) ? $throwRuntimeError("index out of range") : x$21.$array[x$21.$offset + x$22])) === 46) || ((x$23 = parser$1.buffer, x$24 = parser$1.buffer_pos, ((x$24 < 0 || x$24 >= x$23.$length) ? $throwRuntimeError("index out of range") : x$23.$array[x$23.$offset + x$24])) === 33) || ((x$25 = parser$1.buffer, x$26 = parser$1.buffer_pos, ((x$26 < 0 || x$26 >= x$25.$length) ? $throwRuntimeError("index out of range") : x$25.$array[x$25.$offset + x$26])) === 126) || ((x$27 = parser$1.buffer, x$28 = parser$1.buffer_pos, ((x$28 < 0 || x$28 >= x$27.$length) ? $throwRuntimeError("index out of range") : x$27.$array[x$27.$offset + x$28])) === 42) || ((x$29 = parser$1.buffer, x$30 = parser$1.buffer_pos, ((x$30 < 0 || x$30 >= x$29.$length) ? $throwRuntimeError("index out of range") : x$29.$array[x$29.$offset + x$30])) === 39) || ((x$31 = parser$1.buffer, x$32 = parser$1.buffer_pos, ((x$32 < 0 || x$32 >= x$31.$length) ? $throwRuntimeError("index out of range") : x$31.$array[x$31.$offset + x$32])) === 40) || ((x$33 = parser$1.buffer, x$34 = parser$1.buffer_pos, ((x$34 < 0 || x$34 >= x$33.$length) ? $throwRuntimeError("index out of range") : x$33.$array[x$33.$offset + x$34])) === 41) || ((x$35 = parser$1.buffer, x$36 = parser$1.buffer_pos, ((x$36 < 0 || x$36 >= x$35.$length) ? $throwRuntimeError("index out of range") : x$35.$array[x$35.$offset + x$36])) === 91) || ((x$37 = parser$1.buffer, x$38 = parser$1.buffer_pos, ((x$38 < 0 || x$38 >= x$37.$length) ? $throwRuntimeError("index out of range") : x$37.$array[x$37.$offset + x$38])) === 93) || ((x$39 = parser$1.buffer, x$40 = parser$1.buffer_pos, ((x$40 < 0 || x$40 >= x$39.$length) ? $throwRuntimeError("index out of range") : x$39.$array[x$39.$offset + x$40])) === 37))) { $s = 6; continue; }
  35139. /* */ if ((x$41 = parser$1.buffer, x$42 = parser$1.buffer_pos, ((x$42 < 0 || x$42 >= x$41.$length) ? $throwRuntimeError("index out of range") : x$41.$array[x$41.$offset + x$42])) === 37) { $s = 7; continue; }
  35140. /* */ $s = 8; continue;
  35141. /* if ((x$41 = parser$1.buffer, x$42 = parser$1.buffer_pos, ((x$42 < 0 || x$42 >= x$41.$length) ? $throwRuntimeError("index out of range") : x$41.$array[x$41.$offset + x$42])) === 37) { */ case 7:
  35142. _r$3 = yaml_parser_scan_uri_escapes(parser$1, directive, start_mark, (s.$ptr || (s.$ptr = new ptrType$1(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, s)))); /* */ $s = 12; case 12: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  35143. /* */ if (!_r$3) { $s = 10; continue; }
  35144. /* */ $s = 11; continue;
  35145. /* if (!_r$3) { */ case 10:
  35146. return false;
  35147. /* } */ case 11:
  35148. $s = 9; continue;
  35149. /* } else { */ case 8:
  35150. s[0] = read(parser$1, s[0]);
  35151. /* } */ case 9:
  35152. if (!(parser$1.unread < 1)) { _v$1 = false; $s = 15; continue s; }
  35153. _r$4 = yaml_parser_update_buffer(parser$1, 1); /* */ $s = 16; case 16: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
  35154. _v$1 = !_r$4; case 15:
  35155. /* */ if (_v$1) { $s = 13; continue; }
  35156. /* */ $s = 14; continue;
  35157. /* if (_v$1) { */ case 13:
  35158. return false;
  35159. /* } */ case 14:
  35160. /* } */ $s = 5; continue; case 6:
  35161. if (s[0].$length === 0) {
  35162. yaml_parser_set_scanner_tag_error(parser$1, directive, start_mark, "did not find expected tag URI");
  35163. return false;
  35164. }
  35165. uri.$set(s[0]);
  35166. return true;
  35167. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: yaml_parser_scan_tag_uri }; } $f.$ptr = $ptr; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._v = _v; $f._v$1 = _v$1; $f.directive = directive; $f.head = head; $f.parser$1 = parser$1; $f.s = s; $f.start_mark = start_mark; $f.uri = uri; $f.x$1 = x$1; $f.x$10 = x$10; $f.x$11 = x$11; $f.x$12 = x$12; $f.x$13 = x$13; $f.x$14 = x$14; $f.x$15 = x$15; $f.x$16 = x$16; $f.x$17 = x$17; $f.x$18 = x$18; $f.x$19 = x$19; $f.x$2 = x$2; $f.x$20 = x$20; $f.x$21 = x$21; $f.x$22 = x$22; $f.x$23 = x$23; $f.x$24 = x$24; $f.x$25 = x$25; $f.x$26 = x$26; $f.x$27 = x$27; $f.x$28 = x$28; $f.x$29 = x$29; $f.x$3 = x$3; $f.x$30 = x$30; $f.x$31 = x$31; $f.x$32 = x$32; $f.x$33 = x$33; $f.x$34 = x$34; $f.x$35 = x$35; $f.x$36 = x$36; $f.x$37 = x$37; $f.x$38 = x$38; $f.x$39 = x$39; $f.x$4 = x$4; $f.x$40 = x$40; $f.x$41 = x$41; $f.x$42 = x$42; $f.x$5 = x$5; $f.x$6 = x$6; $f.x$7 = x$7; $f.x$8 = x$8; $f.x$9 = x$9; $f.$s = $s; $f.$r = $r; return $f;
  35168. };
  35169. yaml_parser_scan_uri_escapes = function(parser$1, directive, start_mark, s) {
  35170. var $ptr, _r$2, _v, directive, octet, parser$1, s, start_mark, w, x$1, x$2, $s, $r;
  35171. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r$2 = $f._r$2; _v = $f._v; directive = $f.directive; octet = $f.octet; parser$1 = $f.parser$1; s = $f.s; start_mark = $f.start_mark; w = $f.w; x$1 = $f.x$1; x$2 = $f.x$2; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  35172. start_mark = $clone(start_mark, yaml_mark_t);
  35173. w = 1024;
  35174. /* while (true) { */ case 1:
  35175. /* if (!(w > 0)) { break; } */ if(!(w > 0)) { $s = 2; continue; }
  35176. if (!(parser$1.unread < 3)) { _v = false; $s = 5; continue s; }
  35177. _r$2 = yaml_parser_update_buffer(parser$1, 3); /* */ $s = 6; case 6: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  35178. _v = !_r$2; case 5:
  35179. /* */ if (_v) { $s = 3; continue; }
  35180. /* */ $s = 4; continue;
  35181. /* if (_v) { */ case 3:
  35182. return false;
  35183. /* } */ case 4:
  35184. if (!(((x$1 = parser$1.buffer, x$2 = parser$1.buffer_pos, ((x$2 < 0 || x$2 >= x$1.$length) ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + x$2])) === 37) && is_hex(parser$1.buffer, parser$1.buffer_pos + 1 >> 0) && is_hex(parser$1.buffer, parser$1.buffer_pos + 2 >> 0))) {
  35185. return yaml_parser_set_scanner_tag_error(parser$1, directive, start_mark, "did not find URI escaped octet");
  35186. }
  35187. octet = ((((as_hex(parser$1.buffer, parser$1.buffer_pos + 1 >> 0) << 4 >> 0)) + as_hex(parser$1.buffer, parser$1.buffer_pos + 2 >> 0) >> 0) << 24 >>> 24);
  35188. if (w === 1024) {
  35189. w = width(octet);
  35190. if (w === 0) {
  35191. return yaml_parser_set_scanner_tag_error(parser$1, directive, start_mark, "found an incorrect leading UTF-8 octet");
  35192. }
  35193. } else {
  35194. if (!((((octet & 192) >>> 0) === 128))) {
  35195. return yaml_parser_set_scanner_tag_error(parser$1, directive, start_mark, "found an incorrect trailing UTF-8 octet");
  35196. }
  35197. }
  35198. s.$set($append(s.$get(), octet));
  35199. skip(parser$1);
  35200. skip(parser$1);
  35201. skip(parser$1);
  35202. w = w - (1) >> 0;
  35203. /* } */ $s = 1; continue; case 2:
  35204. return true;
  35205. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: yaml_parser_scan_uri_escapes }; } $f.$ptr = $ptr; $f._r$2 = _r$2; $f._v = _v; $f.directive = directive; $f.octet = octet; $f.parser$1 = parser$1; $f.s = s; $f.start_mark = start_mark; $f.w = w; $f.x$1 = x$1; $f.x$2 = x$2; $f.$s = $s; $f.$r = $r; return $f;
  35206. };
  35207. yaml_parser_scan_block_scalar = function(parser$1, token, literal) {
  35208. var $ptr, _r$10, _r$11, _r$12, _r$13, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _v, _v$1, _v$2, _v$3, _v$4, _v$5, _v$6, _v$7, _v$8, _v$9, chomping, end_mark, increment, indent, leading_blank, leading_break, literal, parser$1, s, start_mark, token, trailing_blank, trailing_breaks, x$1, x$10, x$11, x$12, x$13, x$14, x$15, x$16, x$17, x$18, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9, $s, $r;
  35209. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$12 = $f._r$12; _r$13 = $f._r$13; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _r$9 = $f._r$9; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tmp$6 = $f._tmp$6; _v = $f._v; _v$1 = $f._v$1; _v$2 = $f._v$2; _v$3 = $f._v$3; _v$4 = $f._v$4; _v$5 = $f._v$5; _v$6 = $f._v$6; _v$7 = $f._v$7; _v$8 = $f._v$8; _v$9 = $f._v$9; chomping = $f.chomping; end_mark = $f.end_mark; increment = $f.increment; indent = $f.indent; leading_blank = $f.leading_blank; leading_break = $f.leading_break; literal = $f.literal; parser$1 = $f.parser$1; s = $f.s; start_mark = $f.start_mark; token = $f.token; trailing_blank = $f.trailing_blank; trailing_breaks = $f.trailing_breaks; x$1 = $f.x$1; x$10 = $f.x$10; x$11 = $f.x$11; x$12 = $f.x$12; x$13 = $f.x$13; x$14 = $f.x$14; x$15 = $f.x$15; x$16 = $f.x$16; x$17 = $f.x$17; x$18 = $f.x$18; x$2 = $f.x$2; x$3 = $f.x$3; x$4 = $f.x$4; x$5 = $f.x$5; x$6 = $f.x$6; x$7 = $f.x$7; x$8 = $f.x$8; x$9 = $f.x$9; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  35210. end_mark = [end_mark];
  35211. indent = [indent];
  35212. trailing_breaks = [trailing_breaks];
  35213. start_mark = $clone(parser$1.mark, yaml_mark_t);
  35214. skip(parser$1);
  35215. if (!(parser$1.unread < 1)) { _v = false; $s = 3; continue s; }
  35216. _r$2 = yaml_parser_update_buffer(parser$1, 1); /* */ $s = 4; case 4: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  35217. _v = !_r$2; case 3:
  35218. /* */ if (_v) { $s = 1; continue; }
  35219. /* */ $s = 2; continue;
  35220. /* if (_v) { */ case 1:
  35221. return false;
  35222. /* } */ case 2:
  35223. _tmp = 0; _tmp$1 = 0; chomping = _tmp; increment = _tmp$1;
  35224. /* */ if (((x$1 = parser$1.buffer, x$2 = parser$1.buffer_pos, ((x$2 < 0 || x$2 >= x$1.$length) ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + x$2])) === 43) || ((x$3 = parser$1.buffer, x$4 = parser$1.buffer_pos, ((x$4 < 0 || x$4 >= x$3.$length) ? $throwRuntimeError("index out of range") : x$3.$array[x$3.$offset + x$4])) === 45)) { $s = 5; continue; }
  35225. /* */ if (is_digit(parser$1.buffer, parser$1.buffer_pos)) { $s = 6; continue; }
  35226. /* */ $s = 7; continue;
  35227. /* if (((x$1 = parser$1.buffer, x$2 = parser$1.buffer_pos, ((x$2 < 0 || x$2 >= x$1.$length) ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + x$2])) === 43) || ((x$3 = parser$1.buffer, x$4 = parser$1.buffer_pos, ((x$4 < 0 || x$4 >= x$3.$length) ? $throwRuntimeError("index out of range") : x$3.$array[x$3.$offset + x$4])) === 45)) { */ case 5:
  35228. if ((x$5 = parser$1.buffer, x$6 = parser$1.buffer_pos, ((x$6 < 0 || x$6 >= x$5.$length) ? $throwRuntimeError("index out of range") : x$5.$array[x$5.$offset + x$6])) === 43) {
  35229. chomping = 1;
  35230. } else {
  35231. chomping = -1;
  35232. }
  35233. skip(parser$1);
  35234. if (!(parser$1.unread < 1)) { _v$1 = false; $s = 10; continue s; }
  35235. _r$3 = yaml_parser_update_buffer(parser$1, 1); /* */ $s = 11; case 11: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  35236. _v$1 = !_r$3; case 10:
  35237. /* */ if (_v$1) { $s = 8; continue; }
  35238. /* */ $s = 9; continue;
  35239. /* if (_v$1) { */ case 8:
  35240. return false;
  35241. /* } */ case 9:
  35242. if (is_digit(parser$1.buffer, parser$1.buffer_pos)) {
  35243. if ((x$7 = parser$1.buffer, x$8 = parser$1.buffer_pos, ((x$8 < 0 || x$8 >= x$7.$length) ? $throwRuntimeError("index out of range") : x$7.$array[x$7.$offset + x$8])) === 48) {
  35244. yaml_parser_set_scanner_error(parser$1, "while scanning a block scalar", start_mark, "found an intendation indicator equal to 0");
  35245. return false;
  35246. }
  35247. increment = as_digit(parser$1.buffer, parser$1.buffer_pos);
  35248. skip(parser$1);
  35249. }
  35250. $s = 7; continue;
  35251. /* } else if (is_digit(parser$1.buffer, parser$1.buffer_pos)) { */ case 6:
  35252. if ((x$9 = parser$1.buffer, x$10 = parser$1.buffer_pos, ((x$10 < 0 || x$10 >= x$9.$length) ? $throwRuntimeError("index out of range") : x$9.$array[x$9.$offset + x$10])) === 48) {
  35253. yaml_parser_set_scanner_error(parser$1, "while scanning a block scalar", start_mark, "found an intendation indicator equal to 0");
  35254. return false;
  35255. }
  35256. increment = as_digit(parser$1.buffer, parser$1.buffer_pos);
  35257. skip(parser$1);
  35258. if (!(parser$1.unread < 1)) { _v$2 = false; $s = 14; continue s; }
  35259. _r$4 = yaml_parser_update_buffer(parser$1, 1); /* */ $s = 15; case 15: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
  35260. _v$2 = !_r$4; case 14:
  35261. /* */ if (_v$2) { $s = 12; continue; }
  35262. /* */ $s = 13; continue;
  35263. /* if (_v$2) { */ case 12:
  35264. return false;
  35265. /* } */ case 13:
  35266. if (((x$11 = parser$1.buffer, x$12 = parser$1.buffer_pos, ((x$12 < 0 || x$12 >= x$11.$length) ? $throwRuntimeError("index out of range") : x$11.$array[x$11.$offset + x$12])) === 43) || ((x$13 = parser$1.buffer, x$14 = parser$1.buffer_pos, ((x$14 < 0 || x$14 >= x$13.$length) ? $throwRuntimeError("index out of range") : x$13.$array[x$13.$offset + x$14])) === 45)) {
  35267. if ((x$15 = parser$1.buffer, x$16 = parser$1.buffer_pos, ((x$16 < 0 || x$16 >= x$15.$length) ? $throwRuntimeError("index out of range") : x$15.$array[x$15.$offset + x$16])) === 43) {
  35268. chomping = 1;
  35269. } else {
  35270. chomping = -1;
  35271. }
  35272. skip(parser$1);
  35273. }
  35274. /* } */ case 7:
  35275. if (!(parser$1.unread < 1)) { _v$3 = false; $s = 18; continue s; }
  35276. _r$5 = yaml_parser_update_buffer(parser$1, 1); /* */ $s = 19; case 19: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
  35277. _v$3 = !_r$5; case 18:
  35278. /* */ if (_v$3) { $s = 16; continue; }
  35279. /* */ $s = 17; continue;
  35280. /* if (_v$3) { */ case 16:
  35281. return false;
  35282. /* } */ case 17:
  35283. /* while (true) { */ case 20:
  35284. /* if (!(is_blank(parser$1.buffer, parser$1.buffer_pos))) { break; } */ if(!(is_blank(parser$1.buffer, parser$1.buffer_pos))) { $s = 21; continue; }
  35285. skip(parser$1);
  35286. if (!(parser$1.unread < 1)) { _v$4 = false; $s = 24; continue s; }
  35287. _r$6 = yaml_parser_update_buffer(parser$1, 1); /* */ $s = 25; case 25: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
  35288. _v$4 = !_r$6; case 24:
  35289. /* */ if (_v$4) { $s = 22; continue; }
  35290. /* */ $s = 23; continue;
  35291. /* if (_v$4) { */ case 22:
  35292. return false;
  35293. /* } */ case 23:
  35294. /* } */ $s = 20; continue; case 21:
  35295. /* */ if ((x$17 = parser$1.buffer, x$18 = parser$1.buffer_pos, ((x$18 < 0 || x$18 >= x$17.$length) ? $throwRuntimeError("index out of range") : x$17.$array[x$17.$offset + x$18])) === 35) { $s = 26; continue; }
  35296. /* */ $s = 27; continue;
  35297. /* if ((x$17 = parser$1.buffer, x$18 = parser$1.buffer_pos, ((x$18 < 0 || x$18 >= x$17.$length) ? $throwRuntimeError("index out of range") : x$17.$array[x$17.$offset + x$18])) === 35) { */ case 26:
  35298. /* while (true) { */ case 28:
  35299. /* if (!(!is_breakz(parser$1.buffer, parser$1.buffer_pos))) { break; } */ if(!(!is_breakz(parser$1.buffer, parser$1.buffer_pos))) { $s = 29; continue; }
  35300. skip(parser$1);
  35301. if (!(parser$1.unread < 1)) { _v$5 = false; $s = 32; continue s; }
  35302. _r$7 = yaml_parser_update_buffer(parser$1, 1); /* */ $s = 33; case 33: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
  35303. _v$5 = !_r$7; case 32:
  35304. /* */ if (_v$5) { $s = 30; continue; }
  35305. /* */ $s = 31; continue;
  35306. /* if (_v$5) { */ case 30:
  35307. return false;
  35308. /* } */ case 31:
  35309. /* } */ $s = 28; continue; case 29:
  35310. /* } */ case 27:
  35311. if (!is_breakz(parser$1.buffer, parser$1.buffer_pos)) {
  35312. yaml_parser_set_scanner_error(parser$1, "while scanning a block scalar", start_mark, "did not find expected comment or line break");
  35313. return false;
  35314. }
  35315. /* */ if (is_break(parser$1.buffer, parser$1.buffer_pos)) { $s = 34; continue; }
  35316. /* */ $s = 35; continue;
  35317. /* if (is_break(parser$1.buffer, parser$1.buffer_pos)) { */ case 34:
  35318. if (!(parser$1.unread < 2)) { _v$6 = false; $s = 38; continue s; }
  35319. _r$8 = yaml_parser_update_buffer(parser$1, 2); /* */ $s = 39; case 39: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
  35320. _v$6 = !_r$8; case 38:
  35321. /* */ if (_v$6) { $s = 36; continue; }
  35322. /* */ $s = 37; continue;
  35323. /* if (_v$6) { */ case 36:
  35324. return false;
  35325. /* } */ case 37:
  35326. skip_line(parser$1);
  35327. /* } */ case 35:
  35328. end_mark[0] = $clone(parser$1.mark, yaml_mark_t);
  35329. indent[0] = 0;
  35330. if (increment > 0) {
  35331. if (parser$1.indent >= 0) {
  35332. indent[0] = parser$1.indent + increment >> 0;
  35333. } else {
  35334. indent[0] = increment;
  35335. }
  35336. }
  35337. _tmp$2 = sliceType$1.nil; _tmp$3 = sliceType$1.nil; _tmp$4 = sliceType$1.nil; s = _tmp$2; leading_break = _tmp$3; trailing_breaks[0] = _tmp$4;
  35338. _r$9 = yaml_parser_scan_block_scalar_breaks(parser$1, (indent.$ptr || (indent.$ptr = new ptrType$8(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, indent))), (trailing_breaks.$ptr || (trailing_breaks.$ptr = new ptrType$1(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, trailing_breaks))), start_mark, end_mark[0]); /* */ $s = 42; case 42: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
  35339. /* */ if (!_r$9) { $s = 40; continue; }
  35340. /* */ $s = 41; continue;
  35341. /* if (!_r$9) { */ case 40:
  35342. return false;
  35343. /* } */ case 41:
  35344. if (!(parser$1.unread < 1)) { _v$7 = false; $s = 45; continue s; }
  35345. _r$10 = yaml_parser_update_buffer(parser$1, 1); /* */ $s = 46; case 46: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
  35346. _v$7 = !_r$10; case 45:
  35347. /* */ if (_v$7) { $s = 43; continue; }
  35348. /* */ $s = 44; continue;
  35349. /* if (_v$7) { */ case 43:
  35350. return false;
  35351. /* } */ case 44:
  35352. _tmp$5 = false; _tmp$6 = false; leading_blank = _tmp$5; trailing_blank = _tmp$6;
  35353. /* while (true) { */ case 47:
  35354. /* if (!((parser$1.mark.column === indent[0]) && !is_z(parser$1.buffer, parser$1.buffer_pos))) { break; } */ if(!((parser$1.mark.column === indent[0]) && !is_z(parser$1.buffer, parser$1.buffer_pos))) { $s = 48; continue; }
  35355. trailing_blank = is_blank(parser$1.buffer, parser$1.buffer_pos);
  35356. if (!literal && !leading_blank && !trailing_blank && leading_break.$length > 0 && ((0 >= leading_break.$length ? $throwRuntimeError("index out of range") : leading_break.$array[leading_break.$offset + 0]) === 10)) {
  35357. if (trailing_breaks[0].$length === 0) {
  35358. s = $append(s, 32);
  35359. }
  35360. } else {
  35361. s = $appendSlice(s, leading_break);
  35362. }
  35363. leading_break = $subslice(leading_break, 0, 0);
  35364. s = $appendSlice(s, trailing_breaks[0]);
  35365. trailing_breaks[0] = $subslice(trailing_breaks[0], 0, 0);
  35366. leading_blank = is_blank(parser$1.buffer, parser$1.buffer_pos);
  35367. /* while (true) { */ case 49:
  35368. /* if (!(!is_breakz(parser$1.buffer, parser$1.buffer_pos))) { break; } */ if(!(!is_breakz(parser$1.buffer, parser$1.buffer_pos))) { $s = 50; continue; }
  35369. s = read(parser$1, s);
  35370. if (!(parser$1.unread < 1)) { _v$8 = false; $s = 53; continue s; }
  35371. _r$11 = yaml_parser_update_buffer(parser$1, 1); /* */ $s = 54; case 54: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
  35372. _v$8 = !_r$11; case 53:
  35373. /* */ if (_v$8) { $s = 51; continue; }
  35374. /* */ $s = 52; continue;
  35375. /* if (_v$8) { */ case 51:
  35376. return false;
  35377. /* } */ case 52:
  35378. /* } */ $s = 49; continue; case 50:
  35379. if (!(parser$1.unread < 2)) { _v$9 = false; $s = 57; continue s; }
  35380. _r$12 = yaml_parser_update_buffer(parser$1, 2); /* */ $s = 58; case 58: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; }
  35381. _v$9 = !_r$12; case 57:
  35382. /* */ if (_v$9) { $s = 55; continue; }
  35383. /* */ $s = 56; continue;
  35384. /* if (_v$9) { */ case 55:
  35385. return false;
  35386. /* } */ case 56:
  35387. leading_break = read_line(parser$1, leading_break);
  35388. _r$13 = yaml_parser_scan_block_scalar_breaks(parser$1, (indent.$ptr || (indent.$ptr = new ptrType$8(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, indent))), (trailing_breaks.$ptr || (trailing_breaks.$ptr = new ptrType$1(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, trailing_breaks))), start_mark, end_mark[0]); /* */ $s = 61; case 61: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; }
  35389. /* */ if (!_r$13) { $s = 59; continue; }
  35390. /* */ $s = 60; continue;
  35391. /* if (!_r$13) { */ case 59:
  35392. return false;
  35393. /* } */ case 60:
  35394. /* } */ $s = 47; continue; case 48:
  35395. if (!((chomping === -1))) {
  35396. s = $appendSlice(s, leading_break);
  35397. }
  35398. if (chomping === 1) {
  35399. s = $appendSlice(s, trailing_breaks[0]);
  35400. }
  35401. $copy(token, new yaml_token_t.ptr(21, $clone(start_mark, yaml_mark_t), $clone(end_mark[0], yaml_mark_t), 0, s, sliceType$1.nil, sliceType$1.nil, 4, 0, 0), yaml_token_t);
  35402. if (!literal) {
  35403. token.style = 5;
  35404. }
  35405. return true;
  35406. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: yaml_parser_scan_block_scalar }; } $f.$ptr = $ptr; $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$12 = _r$12; $f._r$13 = _r$13; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._r$9 = _r$9; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tmp$6 = _tmp$6; $f._v = _v; $f._v$1 = _v$1; $f._v$2 = _v$2; $f._v$3 = _v$3; $f._v$4 = _v$4; $f._v$5 = _v$5; $f._v$6 = _v$6; $f._v$7 = _v$7; $f._v$8 = _v$8; $f._v$9 = _v$9; $f.chomping = chomping; $f.end_mark = end_mark; $f.increment = increment; $f.indent = indent; $f.leading_blank = leading_blank; $f.leading_break = leading_break; $f.literal = literal; $f.parser$1 = parser$1; $f.s = s; $f.start_mark = start_mark; $f.token = token; $f.trailing_blank = trailing_blank; $f.trailing_breaks = trailing_breaks; $f.x$1 = x$1; $f.x$10 = x$10; $f.x$11 = x$11; $f.x$12 = x$12; $f.x$13 = x$13; $f.x$14 = x$14; $f.x$15 = x$15; $f.x$16 = x$16; $f.x$17 = x$17; $f.x$18 = x$18; $f.x$2 = x$2; $f.x$3 = x$3; $f.x$4 = x$4; $f.x$5 = x$5; $f.x$6 = x$6; $f.x$7 = x$7; $f.x$8 = x$8; $f.x$9 = x$9; $f.$s = $s; $f.$r = $r; return $f;
  35407. };
  35408. yaml_parser_scan_block_scalar_breaks = function(parser$1, indent, breaks, start_mark, end_mark) {
  35409. var $ptr, _r$2, _r$3, _r$4, _v, _v$1, _v$2, breaks, end_mark, indent, max_indent, parser$1, start_mark, $s, $r;
  35410. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _v = $f._v; _v$1 = $f._v$1; _v$2 = $f._v$2; breaks = $f.breaks; end_mark = $f.end_mark; indent = $f.indent; max_indent = $f.max_indent; parser$1 = $f.parser$1; start_mark = $f.start_mark; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  35411. start_mark = $clone(start_mark, yaml_mark_t);
  35412. $copy(end_mark, parser$1.mark, yaml_mark_t);
  35413. max_indent = 0;
  35414. /* while (true) { */ case 1:
  35415. if (!(parser$1.unread < 1)) { _v = false; $s = 5; continue s; }
  35416. _r$2 = yaml_parser_update_buffer(parser$1, 1); /* */ $s = 6; case 6: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  35417. _v = !_r$2; case 5:
  35418. /* */ if (_v) { $s = 3; continue; }
  35419. /* */ $s = 4; continue;
  35420. /* if (_v) { */ case 3:
  35421. return false;
  35422. /* } */ case 4:
  35423. /* while (true) { */ case 7:
  35424. /* if (!(((indent.$get() === 0) || parser$1.mark.column < indent.$get()) && is_space(parser$1.buffer, parser$1.buffer_pos))) { break; } */ if(!(((indent.$get() === 0) || parser$1.mark.column < indent.$get()) && is_space(parser$1.buffer, parser$1.buffer_pos))) { $s = 8; continue; }
  35425. skip(parser$1);
  35426. if (!(parser$1.unread < 1)) { _v$1 = false; $s = 11; continue s; }
  35427. _r$3 = yaml_parser_update_buffer(parser$1, 1); /* */ $s = 12; case 12: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  35428. _v$1 = !_r$3; case 11:
  35429. /* */ if (_v$1) { $s = 9; continue; }
  35430. /* */ $s = 10; continue;
  35431. /* if (_v$1) { */ case 9:
  35432. return false;
  35433. /* } */ case 10:
  35434. /* } */ $s = 7; continue; case 8:
  35435. if (parser$1.mark.column > max_indent) {
  35436. max_indent = parser$1.mark.column;
  35437. }
  35438. if (((indent.$get() === 0) || parser$1.mark.column < indent.$get()) && is_tab(parser$1.buffer, parser$1.buffer_pos)) {
  35439. return yaml_parser_set_scanner_error(parser$1, "while scanning a block scalar", start_mark, "found a tab character where an intendation space is expected");
  35440. }
  35441. if (!is_break(parser$1.buffer, parser$1.buffer_pos)) {
  35442. /* break; */ $s = 2; continue;
  35443. }
  35444. if (!(parser$1.unread < 2)) { _v$2 = false; $s = 15; continue s; }
  35445. _r$4 = yaml_parser_update_buffer(parser$1, 2); /* */ $s = 16; case 16: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
  35446. _v$2 = !_r$4; case 15:
  35447. /* */ if (_v$2) { $s = 13; continue; }
  35448. /* */ $s = 14; continue;
  35449. /* if (_v$2) { */ case 13:
  35450. return false;
  35451. /* } */ case 14:
  35452. breaks.$set(read_line(parser$1, breaks.$get()));
  35453. $copy(end_mark, parser$1.mark, yaml_mark_t);
  35454. /* } */ $s = 1; continue; case 2:
  35455. if (indent.$get() === 0) {
  35456. indent.$set(max_indent);
  35457. if (indent.$get() < (parser$1.indent + 1 >> 0)) {
  35458. indent.$set(parser$1.indent + 1 >> 0);
  35459. }
  35460. if (indent.$get() < 1) {
  35461. indent.$set(1);
  35462. }
  35463. }
  35464. return true;
  35465. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: yaml_parser_scan_block_scalar_breaks }; } $f.$ptr = $ptr; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._v = _v; $f._v$1 = _v$1; $f._v$2 = _v$2; $f.breaks = breaks; $f.end_mark = end_mark; $f.indent = indent; $f.max_indent = max_indent; $f.parser$1 = parser$1; $f.start_mark = start_mark; $f.$s = $s; $f.$r = $r; return $f;
  35466. };
  35467. yaml_parser_scan_flow_scalar = function(parser$1, token, single) {
  35468. var $ptr, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _ref, _tmp, _tmp$1, _tmp$2, _tmp$3, _v, _v$1, _v$2, _v$3, _v$4, _v$5, _v$6, code_length, end_mark, k, k$1, leading_blanks, leading_break, parser$1, s, single, start_mark, token, trailing_breaks, value, whitespaces, x$1, x$10, x$11, x$12, x$13, x$14, x$15, x$16, x$17, x$18, x$19, x$2, x$20, x$21, x$22, x$23, x$24, x$25, x$26, x$27, x$28, x$29, x$3, x$30, x$4, x$5, x$6, x$7, x$8, x$9, $s, $r;
  35469. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _ref = $f._ref; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _v = $f._v; _v$1 = $f._v$1; _v$2 = $f._v$2; _v$3 = $f._v$3; _v$4 = $f._v$4; _v$5 = $f._v$5; _v$6 = $f._v$6; code_length = $f.code_length; end_mark = $f.end_mark; k = $f.k; k$1 = $f.k$1; leading_blanks = $f.leading_blanks; leading_break = $f.leading_break; parser$1 = $f.parser$1; s = $f.s; single = $f.single; start_mark = $f.start_mark; token = $f.token; trailing_breaks = $f.trailing_breaks; value = $f.value; whitespaces = $f.whitespaces; x$1 = $f.x$1; x$10 = $f.x$10; x$11 = $f.x$11; x$12 = $f.x$12; x$13 = $f.x$13; x$14 = $f.x$14; x$15 = $f.x$15; x$16 = $f.x$16; x$17 = $f.x$17; x$18 = $f.x$18; x$19 = $f.x$19; x$2 = $f.x$2; x$20 = $f.x$20; x$21 = $f.x$21; x$22 = $f.x$22; x$23 = $f.x$23; x$24 = $f.x$24; x$25 = $f.x$25; x$26 = $f.x$26; x$27 = $f.x$27; x$28 = $f.x$28; x$29 = $f.x$29; x$3 = $f.x$3; x$30 = $f.x$30; x$4 = $f.x$4; x$5 = $f.x$5; x$6 = $f.x$6; x$7 = $f.x$7; x$8 = $f.x$8; x$9 = $f.x$9; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  35470. start_mark = $clone(parser$1.mark, yaml_mark_t);
  35471. skip(parser$1);
  35472. _tmp = sliceType$1.nil; _tmp$1 = sliceType$1.nil; _tmp$2 = sliceType$1.nil; _tmp$3 = sliceType$1.nil; s = _tmp; leading_break = _tmp$1; trailing_breaks = _tmp$2; whitespaces = _tmp$3;
  35473. /* while (true) { */ case 1:
  35474. if (!(parser$1.unread < 4)) { _v = false; $s = 5; continue s; }
  35475. _r$2 = yaml_parser_update_buffer(parser$1, 4); /* */ $s = 6; case 6: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  35476. _v = !_r$2; case 5:
  35477. /* */ if (_v) { $s = 3; continue; }
  35478. /* */ $s = 4; continue;
  35479. /* if (_v) { */ case 3:
  35480. return false;
  35481. /* } */ case 4:
  35482. if ((parser$1.mark.column === 0) && ((((x$1 = parser$1.buffer, x$2 = parser$1.buffer_pos + 0 >> 0, ((x$2 < 0 || x$2 >= x$1.$length) ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + x$2])) === 45) && ((x$3 = parser$1.buffer, x$4 = parser$1.buffer_pos + 1 >> 0, ((x$4 < 0 || x$4 >= x$3.$length) ? $throwRuntimeError("index out of range") : x$3.$array[x$3.$offset + x$4])) === 45) && ((x$5 = parser$1.buffer, x$6 = parser$1.buffer_pos + 2 >> 0, ((x$6 < 0 || x$6 >= x$5.$length) ? $throwRuntimeError("index out of range") : x$5.$array[x$5.$offset + x$6])) === 45)) || (((x$7 = parser$1.buffer, x$8 = parser$1.buffer_pos + 0 >> 0, ((x$8 < 0 || x$8 >= x$7.$length) ? $throwRuntimeError("index out of range") : x$7.$array[x$7.$offset + x$8])) === 46) && ((x$9 = parser$1.buffer, x$10 = parser$1.buffer_pos + 1 >> 0, ((x$10 < 0 || x$10 >= x$9.$length) ? $throwRuntimeError("index out of range") : x$9.$array[x$9.$offset + x$10])) === 46) && ((x$11 = parser$1.buffer, x$12 = parser$1.buffer_pos + 2 >> 0, ((x$12 < 0 || x$12 >= x$11.$length) ? $throwRuntimeError("index out of range") : x$11.$array[x$11.$offset + x$12])) === 46))) && is_blankz(parser$1.buffer, parser$1.buffer_pos + 3 >> 0)) {
  35483. yaml_parser_set_scanner_error(parser$1, "while scanning a quoted scalar", start_mark, "found unexpected document indicator");
  35484. return false;
  35485. }
  35486. if (is_z(parser$1.buffer, parser$1.buffer_pos)) {
  35487. yaml_parser_set_scanner_error(parser$1, "while scanning a quoted scalar", start_mark, "found unexpected end of stream");
  35488. return false;
  35489. }
  35490. leading_blanks = false;
  35491. /* while (true) { */ case 7:
  35492. /* if (!(!is_blankz(parser$1.buffer, parser$1.buffer_pos))) { break; } */ if(!(!is_blankz(parser$1.buffer, parser$1.buffer_pos))) { $s = 8; continue; }
  35493. /* */ if (single && ((x$13 = parser$1.buffer, x$14 = parser$1.buffer_pos, ((x$14 < 0 || x$14 >= x$13.$length) ? $throwRuntimeError("index out of range") : x$13.$array[x$13.$offset + x$14])) === 39) && ((x$15 = parser$1.buffer, x$16 = parser$1.buffer_pos + 1 >> 0, ((x$16 < 0 || x$16 >= x$15.$length) ? $throwRuntimeError("index out of range") : x$15.$array[x$15.$offset + x$16])) === 39)) { $s = 9; continue; }
  35494. /* */ if (single && ((x$17 = parser$1.buffer, x$18 = parser$1.buffer_pos, ((x$18 < 0 || x$18 >= x$17.$length) ? $throwRuntimeError("index out of range") : x$17.$array[x$17.$offset + x$18])) === 39)) { $s = 10; continue; }
  35495. /* */ if (!single && ((x$19 = parser$1.buffer, x$20 = parser$1.buffer_pos, ((x$20 < 0 || x$20 >= x$19.$length) ? $throwRuntimeError("index out of range") : x$19.$array[x$19.$offset + x$20])) === 34)) { $s = 11; continue; }
  35496. /* */ if (!single && ((x$21 = parser$1.buffer, x$22 = parser$1.buffer_pos, ((x$22 < 0 || x$22 >= x$21.$length) ? $throwRuntimeError("index out of range") : x$21.$array[x$21.$offset + x$22])) === 92) && is_break(parser$1.buffer, parser$1.buffer_pos + 1 >> 0)) { $s = 12; continue; }
  35497. /* */ if (!single && ((x$23 = parser$1.buffer, x$24 = parser$1.buffer_pos, ((x$24 < 0 || x$24 >= x$23.$length) ? $throwRuntimeError("index out of range") : x$23.$array[x$23.$offset + x$24])) === 92)) { $s = 13; continue; }
  35498. /* */ $s = 14; continue;
  35499. /* if (single && ((x$13 = parser$1.buffer, x$14 = parser$1.buffer_pos, ((x$14 < 0 || x$14 >= x$13.$length) ? $throwRuntimeError("index out of range") : x$13.$array[x$13.$offset + x$14])) === 39) && ((x$15 = parser$1.buffer, x$16 = parser$1.buffer_pos + 1 >> 0, ((x$16 < 0 || x$16 >= x$15.$length) ? $throwRuntimeError("index out of range") : x$15.$array[x$15.$offset + x$16])) === 39)) { */ case 9:
  35500. s = $append(s, 39);
  35501. skip(parser$1);
  35502. skip(parser$1);
  35503. $s = 15; continue;
  35504. /* } else if (single && ((x$17 = parser$1.buffer, x$18 = parser$1.buffer_pos, ((x$18 < 0 || x$18 >= x$17.$length) ? $throwRuntimeError("index out of range") : x$17.$array[x$17.$offset + x$18])) === 39)) { */ case 10:
  35505. /* break; */ $s = 8; continue;
  35506. $s = 15; continue;
  35507. /* } else if (!single && ((x$19 = parser$1.buffer, x$20 = parser$1.buffer_pos, ((x$20 < 0 || x$20 >= x$19.$length) ? $throwRuntimeError("index out of range") : x$19.$array[x$19.$offset + x$20])) === 34)) { */ case 11:
  35508. /* break; */ $s = 8; continue;
  35509. $s = 15; continue;
  35510. /* } else if (!single && ((x$21 = parser$1.buffer, x$22 = parser$1.buffer_pos, ((x$22 < 0 || x$22 >= x$21.$length) ? $throwRuntimeError("index out of range") : x$21.$array[x$21.$offset + x$22])) === 92) && is_break(parser$1.buffer, parser$1.buffer_pos + 1 >> 0)) { */ case 12:
  35511. if (!(parser$1.unread < 3)) { _v$1 = false; $s = 18; continue s; }
  35512. _r$3 = yaml_parser_update_buffer(parser$1, 3); /* */ $s = 19; case 19: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  35513. _v$1 = !_r$3; case 18:
  35514. /* */ if (_v$1) { $s = 16; continue; }
  35515. /* */ $s = 17; continue;
  35516. /* if (_v$1) { */ case 16:
  35517. return false;
  35518. /* } */ case 17:
  35519. skip(parser$1);
  35520. skip_line(parser$1);
  35521. leading_blanks = true;
  35522. /* break; */ $s = 8; continue;
  35523. $s = 15; continue;
  35524. /* } else if (!single && ((x$23 = parser$1.buffer, x$24 = parser$1.buffer_pos, ((x$24 < 0 || x$24 >= x$23.$length) ? $throwRuntimeError("index out of range") : x$23.$array[x$23.$offset + x$24])) === 92)) { */ case 13:
  35525. code_length = 0;
  35526. _ref = (x$25 = parser$1.buffer, x$26 = parser$1.buffer_pos + 1 >> 0, ((x$26 < 0 || x$26 >= x$25.$length) ? $throwRuntimeError("index out of range") : x$25.$array[x$25.$offset + x$26]));
  35527. if (_ref === 48) {
  35528. s = $append(s, 0);
  35529. } else if (_ref === 97) {
  35530. s = $append(s, 7);
  35531. } else if (_ref === 98) {
  35532. s = $append(s, 8);
  35533. } else if (_ref === 116 || _ref === 9) {
  35534. s = $append(s, 9);
  35535. } else if (_ref === 110) {
  35536. s = $append(s, 10);
  35537. } else if (_ref === 118) {
  35538. s = $append(s, 11);
  35539. } else if (_ref === 102) {
  35540. s = $append(s, 12);
  35541. } else if (_ref === 114) {
  35542. s = $append(s, 13);
  35543. } else if (_ref === 101) {
  35544. s = $append(s, 27);
  35545. } else if (_ref === 32) {
  35546. s = $append(s, 32);
  35547. } else if (_ref === 34) {
  35548. s = $append(s, 34);
  35549. } else if (_ref === 39) {
  35550. s = $append(s, 39);
  35551. } else if (_ref === 92) {
  35552. s = $append(s, 92);
  35553. } else if (_ref === 78) {
  35554. s = $append(s, 194);
  35555. s = $append(s, 133);
  35556. } else if (_ref === 95) {
  35557. s = $append(s, 194);
  35558. s = $append(s, 160);
  35559. } else if (_ref === 76) {
  35560. s = $append(s, 226);
  35561. s = $append(s, 128);
  35562. s = $append(s, 168);
  35563. } else if (_ref === 80) {
  35564. s = $append(s, 226);
  35565. s = $append(s, 128);
  35566. s = $append(s, 169);
  35567. } else if (_ref === 120) {
  35568. code_length = 2;
  35569. } else if (_ref === 117) {
  35570. code_length = 4;
  35571. } else if (_ref === 85) {
  35572. code_length = 8;
  35573. } else {
  35574. yaml_parser_set_scanner_error(parser$1, "while parsing a quoted scalar", start_mark, "found unknown escape character");
  35575. return false;
  35576. }
  35577. skip(parser$1);
  35578. skip(parser$1);
  35579. /* */ if (code_length > 0) { $s = 20; continue; }
  35580. /* */ $s = 21; continue;
  35581. /* if (code_length > 0) { */ case 20:
  35582. value = 0;
  35583. if (!(parser$1.unread < code_length)) { _v$2 = false; $s = 24; continue s; }
  35584. _r$4 = yaml_parser_update_buffer(parser$1, code_length); /* */ $s = 25; case 25: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
  35585. _v$2 = !_r$4; case 24:
  35586. /* */ if (_v$2) { $s = 22; continue; }
  35587. /* */ $s = 23; continue;
  35588. /* if (_v$2) { */ case 22:
  35589. return false;
  35590. /* } */ case 23:
  35591. k = 0;
  35592. while (true) {
  35593. if (!(k < code_length)) { break; }
  35594. if (!is_hex(parser$1.buffer, parser$1.buffer_pos + k >> 0)) {
  35595. yaml_parser_set_scanner_error(parser$1, "while parsing a quoted scalar", start_mark, "did not find expected hexdecimal number");
  35596. return false;
  35597. }
  35598. value = ((value << 4 >> 0)) + as_hex(parser$1.buffer, parser$1.buffer_pos + k >> 0) >> 0;
  35599. k = k + (1) >> 0;
  35600. }
  35601. if ((value >= 55296 && value <= 57343) || value > 1114111) {
  35602. yaml_parser_set_scanner_error(parser$1, "while parsing a quoted scalar", start_mark, "found invalid Unicode character escape code");
  35603. return false;
  35604. }
  35605. if (value <= 127) {
  35606. s = $append(s, (value << 24 >>> 24));
  35607. } else if (value <= 2047) {
  35608. s = $append(s, ((192 + ((value >> 6 >> 0)) >> 0) << 24 >>> 24));
  35609. s = $append(s, ((128 + ((value & 63)) >> 0) << 24 >>> 24));
  35610. } else if (value <= 65535) {
  35611. s = $append(s, ((224 + ((value >> 12 >> 0)) >> 0) << 24 >>> 24));
  35612. s = $append(s, ((128 + ((((value >> 6 >> 0)) & 63)) >> 0) << 24 >>> 24));
  35613. s = $append(s, ((128 + ((value & 63)) >> 0) << 24 >>> 24));
  35614. } else {
  35615. s = $append(s, ((240 + ((value >> 18 >> 0)) >> 0) << 24 >>> 24));
  35616. s = $append(s, ((128 + ((((value >> 12 >> 0)) & 63)) >> 0) << 24 >>> 24));
  35617. s = $append(s, ((128 + ((((value >> 6 >> 0)) & 63)) >> 0) << 24 >>> 24));
  35618. s = $append(s, ((128 + ((value & 63)) >> 0) << 24 >>> 24));
  35619. }
  35620. k$1 = 0;
  35621. while (true) {
  35622. if (!(k$1 < code_length)) { break; }
  35623. skip(parser$1);
  35624. k$1 = k$1 + (1) >> 0;
  35625. }
  35626. /* } */ case 21:
  35627. $s = 15; continue;
  35628. /* } else { */ case 14:
  35629. s = read(parser$1, s);
  35630. /* } */ case 15:
  35631. if (!(parser$1.unread < 2)) { _v$3 = false; $s = 28; continue s; }
  35632. _r$5 = yaml_parser_update_buffer(parser$1, 2); /* */ $s = 29; case 29: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
  35633. _v$3 = !_r$5; case 28:
  35634. /* */ if (_v$3) { $s = 26; continue; }
  35635. /* */ $s = 27; continue;
  35636. /* if (_v$3) { */ case 26:
  35637. return false;
  35638. /* } */ case 27:
  35639. /* } */ $s = 7; continue; case 8:
  35640. if (single) {
  35641. if ((x$27 = parser$1.buffer, x$28 = parser$1.buffer_pos, ((x$28 < 0 || x$28 >= x$27.$length) ? $throwRuntimeError("index out of range") : x$27.$array[x$27.$offset + x$28])) === 39) {
  35642. /* break; */ $s = 2; continue;
  35643. }
  35644. } else {
  35645. if ((x$29 = parser$1.buffer, x$30 = parser$1.buffer_pos, ((x$30 < 0 || x$30 >= x$29.$length) ? $throwRuntimeError("index out of range") : x$29.$array[x$29.$offset + x$30])) === 34) {
  35646. /* break; */ $s = 2; continue;
  35647. }
  35648. }
  35649. if (!(parser$1.unread < 1)) { _v$4 = false; $s = 32; continue s; }
  35650. _r$6 = yaml_parser_update_buffer(parser$1, 1); /* */ $s = 33; case 33: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
  35651. _v$4 = !_r$6; case 32:
  35652. /* */ if (_v$4) { $s = 30; continue; }
  35653. /* */ $s = 31; continue;
  35654. /* if (_v$4) { */ case 30:
  35655. return false;
  35656. /* } */ case 31:
  35657. /* while (true) { */ case 34:
  35658. /* if (!(is_blank(parser$1.buffer, parser$1.buffer_pos) || is_break(parser$1.buffer, parser$1.buffer_pos))) { break; } */ if(!(is_blank(parser$1.buffer, parser$1.buffer_pos) || is_break(parser$1.buffer, parser$1.buffer_pos))) { $s = 35; continue; }
  35659. /* */ if (is_blank(parser$1.buffer, parser$1.buffer_pos)) { $s = 36; continue; }
  35660. /* */ $s = 37; continue;
  35661. /* if (is_blank(parser$1.buffer, parser$1.buffer_pos)) { */ case 36:
  35662. if (!leading_blanks) {
  35663. whitespaces = read(parser$1, whitespaces);
  35664. } else {
  35665. skip(parser$1);
  35666. }
  35667. $s = 38; continue;
  35668. /* } else { */ case 37:
  35669. if (!(parser$1.unread < 2)) { _v$5 = false; $s = 41; continue s; }
  35670. _r$7 = yaml_parser_update_buffer(parser$1, 2); /* */ $s = 42; case 42: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
  35671. _v$5 = !_r$7; case 41:
  35672. /* */ if (_v$5) { $s = 39; continue; }
  35673. /* */ $s = 40; continue;
  35674. /* if (_v$5) { */ case 39:
  35675. return false;
  35676. /* } */ case 40:
  35677. if (!leading_blanks) {
  35678. whitespaces = $subslice(whitespaces, 0, 0);
  35679. leading_break = read_line(parser$1, leading_break);
  35680. leading_blanks = true;
  35681. } else {
  35682. trailing_breaks = read_line(parser$1, trailing_breaks);
  35683. }
  35684. /* } */ case 38:
  35685. if (!(parser$1.unread < 1)) { _v$6 = false; $s = 45; continue s; }
  35686. _r$8 = yaml_parser_update_buffer(parser$1, 1); /* */ $s = 46; case 46: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
  35687. _v$6 = !_r$8; case 45:
  35688. /* */ if (_v$6) { $s = 43; continue; }
  35689. /* */ $s = 44; continue;
  35690. /* if (_v$6) { */ case 43:
  35691. return false;
  35692. /* } */ case 44:
  35693. /* } */ $s = 34; continue; case 35:
  35694. if (leading_blanks) {
  35695. if (leading_break.$length > 0 && ((0 >= leading_break.$length ? $throwRuntimeError("index out of range") : leading_break.$array[leading_break.$offset + 0]) === 10)) {
  35696. if (trailing_breaks.$length === 0) {
  35697. s = $append(s, 32);
  35698. } else {
  35699. s = $appendSlice(s, trailing_breaks);
  35700. }
  35701. } else {
  35702. s = $appendSlice(s, leading_break);
  35703. s = $appendSlice(s, trailing_breaks);
  35704. }
  35705. trailing_breaks = $subslice(trailing_breaks, 0, 0);
  35706. leading_break = $subslice(leading_break, 0, 0);
  35707. } else {
  35708. s = $appendSlice(s, whitespaces);
  35709. whitespaces = $subslice(whitespaces, 0, 0);
  35710. }
  35711. /* } */ $s = 1; continue; case 2:
  35712. skip(parser$1);
  35713. end_mark = $clone(parser$1.mark, yaml_mark_t);
  35714. $copy(token, new yaml_token_t.ptr(21, $clone(start_mark, yaml_mark_t), $clone(end_mark, yaml_mark_t), 0, s, sliceType$1.nil, sliceType$1.nil, 2, 0, 0), yaml_token_t);
  35715. if (!single) {
  35716. token.style = 3;
  35717. }
  35718. return true;
  35719. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: yaml_parser_scan_flow_scalar }; } $f.$ptr = $ptr; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._ref = _ref; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._v = _v; $f._v$1 = _v$1; $f._v$2 = _v$2; $f._v$3 = _v$3; $f._v$4 = _v$4; $f._v$5 = _v$5; $f._v$6 = _v$6; $f.code_length = code_length; $f.end_mark = end_mark; $f.k = k; $f.k$1 = k$1; $f.leading_blanks = leading_blanks; $f.leading_break = leading_break; $f.parser$1 = parser$1; $f.s = s; $f.single = single; $f.start_mark = start_mark; $f.token = token; $f.trailing_breaks = trailing_breaks; $f.value = value; $f.whitespaces = whitespaces; $f.x$1 = x$1; $f.x$10 = x$10; $f.x$11 = x$11; $f.x$12 = x$12; $f.x$13 = x$13; $f.x$14 = x$14; $f.x$15 = x$15; $f.x$16 = x$16; $f.x$17 = x$17; $f.x$18 = x$18; $f.x$19 = x$19; $f.x$2 = x$2; $f.x$20 = x$20; $f.x$21 = x$21; $f.x$22 = x$22; $f.x$23 = x$23; $f.x$24 = x$24; $f.x$25 = x$25; $f.x$26 = x$26; $f.x$27 = x$27; $f.x$28 = x$28; $f.x$29 = x$29; $f.x$3 = x$3; $f.x$30 = x$30; $f.x$4 = x$4; $f.x$5 = x$5; $f.x$6 = x$6; $f.x$7 = x$7; $f.x$8 = x$8; $f.x$9 = x$9; $f.$s = $s; $f.$r = $r; return $f;
  35720. };
  35721. yaml_parser_scan_plain_scalar = function(parser$1, token) {
  35722. var $ptr, _r$2, _r$3, _r$4, _r$5, _r$6, _tmp, _tmp$1, _tmp$2, _tmp$3, _v, _v$1, _v$2, _v$3, _v$4, end_mark, indent, leading_blanks, leading_break, parser$1, s, start_mark, token, trailing_breaks, whitespaces, x$1, x$10, x$11, x$12, x$13, x$14, x$15, x$16, x$17, x$18, x$19, x$2, x$20, x$21, x$22, x$23, x$24, x$25, x$26, x$27, x$28, x$29, x$3, x$30, x$31, x$32, x$4, x$5, x$6, x$7, x$8, x$9, $s, $r;
  35723. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _v = $f._v; _v$1 = $f._v$1; _v$2 = $f._v$2; _v$3 = $f._v$3; _v$4 = $f._v$4; end_mark = $f.end_mark; indent = $f.indent; leading_blanks = $f.leading_blanks; leading_break = $f.leading_break; parser$1 = $f.parser$1; s = $f.s; start_mark = $f.start_mark; token = $f.token; trailing_breaks = $f.trailing_breaks; whitespaces = $f.whitespaces; x$1 = $f.x$1; x$10 = $f.x$10; x$11 = $f.x$11; x$12 = $f.x$12; x$13 = $f.x$13; x$14 = $f.x$14; x$15 = $f.x$15; x$16 = $f.x$16; x$17 = $f.x$17; x$18 = $f.x$18; x$19 = $f.x$19; x$2 = $f.x$2; x$20 = $f.x$20; x$21 = $f.x$21; x$22 = $f.x$22; x$23 = $f.x$23; x$24 = $f.x$24; x$25 = $f.x$25; x$26 = $f.x$26; x$27 = $f.x$27; x$28 = $f.x$28; x$29 = $f.x$29; x$3 = $f.x$3; x$30 = $f.x$30; x$31 = $f.x$31; x$32 = $f.x$32; x$4 = $f.x$4; x$5 = $f.x$5; x$6 = $f.x$6; x$7 = $f.x$7; x$8 = $f.x$8; x$9 = $f.x$9; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  35724. _tmp = sliceType$1.nil; _tmp$1 = sliceType$1.nil; _tmp$2 = sliceType$1.nil; _tmp$3 = sliceType$1.nil; s = _tmp; leading_break = _tmp$1; trailing_breaks = _tmp$2; whitespaces = _tmp$3;
  35725. leading_blanks = false;
  35726. indent = parser$1.indent + 1 >> 0;
  35727. start_mark = $clone(parser$1.mark, yaml_mark_t);
  35728. end_mark = $clone(parser$1.mark, yaml_mark_t);
  35729. /* while (true) { */ case 1:
  35730. if (!(parser$1.unread < 4)) { _v = false; $s = 5; continue s; }
  35731. _r$2 = yaml_parser_update_buffer(parser$1, 4); /* */ $s = 6; case 6: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  35732. _v = !_r$2; case 5:
  35733. /* */ if (_v) { $s = 3; continue; }
  35734. /* */ $s = 4; continue;
  35735. /* if (_v) { */ case 3:
  35736. return false;
  35737. /* } */ case 4:
  35738. if ((parser$1.mark.column === 0) && ((((x$1 = parser$1.buffer, x$2 = parser$1.buffer_pos + 0 >> 0, ((x$2 < 0 || x$2 >= x$1.$length) ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + x$2])) === 45) && ((x$3 = parser$1.buffer, x$4 = parser$1.buffer_pos + 1 >> 0, ((x$4 < 0 || x$4 >= x$3.$length) ? $throwRuntimeError("index out of range") : x$3.$array[x$3.$offset + x$4])) === 45) && ((x$5 = parser$1.buffer, x$6 = parser$1.buffer_pos + 2 >> 0, ((x$6 < 0 || x$6 >= x$5.$length) ? $throwRuntimeError("index out of range") : x$5.$array[x$5.$offset + x$6])) === 45)) || (((x$7 = parser$1.buffer, x$8 = parser$1.buffer_pos + 0 >> 0, ((x$8 < 0 || x$8 >= x$7.$length) ? $throwRuntimeError("index out of range") : x$7.$array[x$7.$offset + x$8])) === 46) && ((x$9 = parser$1.buffer, x$10 = parser$1.buffer_pos + 1 >> 0, ((x$10 < 0 || x$10 >= x$9.$length) ? $throwRuntimeError("index out of range") : x$9.$array[x$9.$offset + x$10])) === 46) && ((x$11 = parser$1.buffer, x$12 = parser$1.buffer_pos + 2 >> 0, ((x$12 < 0 || x$12 >= x$11.$length) ? $throwRuntimeError("index out of range") : x$11.$array[x$11.$offset + x$12])) === 46))) && is_blankz(parser$1.buffer, parser$1.buffer_pos + 3 >> 0)) {
  35739. /* break; */ $s = 2; continue;
  35740. }
  35741. if ((x$13 = parser$1.buffer, x$14 = parser$1.buffer_pos, ((x$14 < 0 || x$14 >= x$13.$length) ? $throwRuntimeError("index out of range") : x$13.$array[x$13.$offset + x$14])) === 35) {
  35742. /* break; */ $s = 2; continue;
  35743. }
  35744. /* while (true) { */ case 7:
  35745. /* if (!(!is_blankz(parser$1.buffer, parser$1.buffer_pos))) { break; } */ if(!(!is_blankz(parser$1.buffer, parser$1.buffer_pos))) { $s = 8; continue; }
  35746. if (parser$1.flow_level > 0 && ((x$15 = parser$1.buffer, x$16 = parser$1.buffer_pos, ((x$16 < 0 || x$16 >= x$15.$length) ? $throwRuntimeError("index out of range") : x$15.$array[x$15.$offset + x$16])) === 58) && !is_blankz(parser$1.buffer, parser$1.buffer_pos + 1 >> 0)) {
  35747. yaml_parser_set_scanner_error(parser$1, "while scanning a plain scalar", start_mark, "found unexpected ':'");
  35748. return false;
  35749. }
  35750. if ((((x$17 = parser$1.buffer, x$18 = parser$1.buffer_pos, ((x$18 < 0 || x$18 >= x$17.$length) ? $throwRuntimeError("index out of range") : x$17.$array[x$17.$offset + x$18])) === 58) && is_blankz(parser$1.buffer, parser$1.buffer_pos + 1 >> 0)) || (parser$1.flow_level > 0 && (((x$19 = parser$1.buffer, x$20 = parser$1.buffer_pos, ((x$20 < 0 || x$20 >= x$19.$length) ? $throwRuntimeError("index out of range") : x$19.$array[x$19.$offset + x$20])) === 44) || ((x$21 = parser$1.buffer, x$22 = parser$1.buffer_pos, ((x$22 < 0 || x$22 >= x$21.$length) ? $throwRuntimeError("index out of range") : x$21.$array[x$21.$offset + x$22])) === 58) || ((x$23 = parser$1.buffer, x$24 = parser$1.buffer_pos, ((x$24 < 0 || x$24 >= x$23.$length) ? $throwRuntimeError("index out of range") : x$23.$array[x$23.$offset + x$24])) === 63) || ((x$25 = parser$1.buffer, x$26 = parser$1.buffer_pos, ((x$26 < 0 || x$26 >= x$25.$length) ? $throwRuntimeError("index out of range") : x$25.$array[x$25.$offset + x$26])) === 91) || ((x$27 = parser$1.buffer, x$28 = parser$1.buffer_pos, ((x$28 < 0 || x$28 >= x$27.$length) ? $throwRuntimeError("index out of range") : x$27.$array[x$27.$offset + x$28])) === 93) || ((x$29 = parser$1.buffer, x$30 = parser$1.buffer_pos, ((x$30 < 0 || x$30 >= x$29.$length) ? $throwRuntimeError("index out of range") : x$29.$array[x$29.$offset + x$30])) === 123) || ((x$31 = parser$1.buffer, x$32 = parser$1.buffer_pos, ((x$32 < 0 || x$32 >= x$31.$length) ? $throwRuntimeError("index out of range") : x$31.$array[x$31.$offset + x$32])) === 125)))) {
  35751. /* break; */ $s = 8; continue;
  35752. }
  35753. if (leading_blanks || whitespaces.$length > 0) {
  35754. if (leading_blanks) {
  35755. if ((0 >= leading_break.$length ? $throwRuntimeError("index out of range") : leading_break.$array[leading_break.$offset + 0]) === 10) {
  35756. if (trailing_breaks.$length === 0) {
  35757. s = $append(s, 32);
  35758. } else {
  35759. s = $appendSlice(s, trailing_breaks);
  35760. }
  35761. } else {
  35762. s = $appendSlice(s, leading_break);
  35763. s = $appendSlice(s, trailing_breaks);
  35764. }
  35765. trailing_breaks = $subslice(trailing_breaks, 0, 0);
  35766. leading_break = $subslice(leading_break, 0, 0);
  35767. leading_blanks = false;
  35768. } else {
  35769. s = $appendSlice(s, whitespaces);
  35770. whitespaces = $subslice(whitespaces, 0, 0);
  35771. }
  35772. }
  35773. s = read(parser$1, s);
  35774. $copy(end_mark, parser$1.mark, yaml_mark_t);
  35775. if (!(parser$1.unread < 2)) { _v$1 = false; $s = 11; continue s; }
  35776. _r$3 = yaml_parser_update_buffer(parser$1, 2); /* */ $s = 12; case 12: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  35777. _v$1 = !_r$3; case 11:
  35778. /* */ if (_v$1) { $s = 9; continue; }
  35779. /* */ $s = 10; continue;
  35780. /* if (_v$1) { */ case 9:
  35781. return false;
  35782. /* } */ case 10:
  35783. /* } */ $s = 7; continue; case 8:
  35784. if (!(is_blank(parser$1.buffer, parser$1.buffer_pos) || is_break(parser$1.buffer, parser$1.buffer_pos))) {
  35785. /* break; */ $s = 2; continue;
  35786. }
  35787. if (!(parser$1.unread < 1)) { _v$2 = false; $s = 15; continue s; }
  35788. _r$4 = yaml_parser_update_buffer(parser$1, 1); /* */ $s = 16; case 16: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
  35789. _v$2 = !_r$4; case 15:
  35790. /* */ if (_v$2) { $s = 13; continue; }
  35791. /* */ $s = 14; continue;
  35792. /* if (_v$2) { */ case 13:
  35793. return false;
  35794. /* } */ case 14:
  35795. /* while (true) { */ case 17:
  35796. /* if (!(is_blank(parser$1.buffer, parser$1.buffer_pos) || is_break(parser$1.buffer, parser$1.buffer_pos))) { break; } */ if(!(is_blank(parser$1.buffer, parser$1.buffer_pos) || is_break(parser$1.buffer, parser$1.buffer_pos))) { $s = 18; continue; }
  35797. /* */ if (is_blank(parser$1.buffer, parser$1.buffer_pos)) { $s = 19; continue; }
  35798. /* */ $s = 20; continue;
  35799. /* if (is_blank(parser$1.buffer, parser$1.buffer_pos)) { */ case 19:
  35800. if (leading_blanks && parser$1.mark.column < indent && is_tab(parser$1.buffer, parser$1.buffer_pos)) {
  35801. yaml_parser_set_scanner_error(parser$1, "while scanning a plain scalar", start_mark, "found a tab character that violate intendation");
  35802. return false;
  35803. }
  35804. if (!leading_blanks) {
  35805. whitespaces = read(parser$1, whitespaces);
  35806. } else {
  35807. skip(parser$1);
  35808. }
  35809. $s = 21; continue;
  35810. /* } else { */ case 20:
  35811. if (!(parser$1.unread < 2)) { _v$3 = false; $s = 24; continue s; }
  35812. _r$5 = yaml_parser_update_buffer(parser$1, 2); /* */ $s = 25; case 25: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
  35813. _v$3 = !_r$5; case 24:
  35814. /* */ if (_v$3) { $s = 22; continue; }
  35815. /* */ $s = 23; continue;
  35816. /* if (_v$3) { */ case 22:
  35817. return false;
  35818. /* } */ case 23:
  35819. if (!leading_blanks) {
  35820. whitespaces = $subslice(whitespaces, 0, 0);
  35821. leading_break = read_line(parser$1, leading_break);
  35822. leading_blanks = true;
  35823. } else {
  35824. trailing_breaks = read_line(parser$1, trailing_breaks);
  35825. }
  35826. /* } */ case 21:
  35827. if (!(parser$1.unread < 1)) { _v$4 = false; $s = 28; continue s; }
  35828. _r$6 = yaml_parser_update_buffer(parser$1, 1); /* */ $s = 29; case 29: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
  35829. _v$4 = !_r$6; case 28:
  35830. /* */ if (_v$4) { $s = 26; continue; }
  35831. /* */ $s = 27; continue;
  35832. /* if (_v$4) { */ case 26:
  35833. return false;
  35834. /* } */ case 27:
  35835. /* } */ $s = 17; continue; case 18:
  35836. if ((parser$1.flow_level === 0) && parser$1.mark.column < indent) {
  35837. /* break; */ $s = 2; continue;
  35838. }
  35839. /* } */ $s = 1; continue; case 2:
  35840. $copy(token, new yaml_token_t.ptr(21, $clone(start_mark, yaml_mark_t), $clone(end_mark, yaml_mark_t), 0, s, sliceType$1.nil, sliceType$1.nil, 1, 0, 0), yaml_token_t);
  35841. if (leading_blanks) {
  35842. parser$1.simple_key_allowed = true;
  35843. }
  35844. return true;
  35845. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: yaml_parser_scan_plain_scalar }; } $f.$ptr = $ptr; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._v = _v; $f._v$1 = _v$1; $f._v$2 = _v$2; $f._v$3 = _v$3; $f._v$4 = _v$4; $f.end_mark = end_mark; $f.indent = indent; $f.leading_blanks = leading_blanks; $f.leading_break = leading_break; $f.parser$1 = parser$1; $f.s = s; $f.start_mark = start_mark; $f.token = token; $f.trailing_breaks = trailing_breaks; $f.whitespaces = whitespaces; $f.x$1 = x$1; $f.x$10 = x$10; $f.x$11 = x$11; $f.x$12 = x$12; $f.x$13 = x$13; $f.x$14 = x$14; $f.x$15 = x$15; $f.x$16 = x$16; $f.x$17 = x$17; $f.x$18 = x$18; $f.x$19 = x$19; $f.x$2 = x$2; $f.x$20 = x$20; $f.x$21 = x$21; $f.x$22 = x$22; $f.x$23 = x$23; $f.x$24 = x$24; $f.x$25 = x$25; $f.x$26 = x$26; $f.x$27 = x$27; $f.x$28 = x$28; $f.x$29 = x$29; $f.x$3 = x$3; $f.x$30 = x$30; $f.x$31 = x$31; $f.x$32 = x$32; $f.x$4 = x$4; $f.x$5 = x$5; $f.x$6 = x$6; $f.x$7 = x$7; $f.x$8 = x$8; $f.x$9 = x$9; $f.$s = $s; $f.$r = $r; return $f;
  35846. };
  35847. Unmarshal = function(in$1, out) {
  35848. var $ptr, _r$2, _r$3, _r$4, _r$5, _r$6, d, err, in$1, node$1, out, p, v, $s, $deferred, $r;
  35849. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; d = $f.d; err = $f.err; in$1 = $f.in$1; node$1 = $f.node$1; out = $f.out; p = $f.p; v = $f.v; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
  35850. err = [err];
  35851. err[0] = $ifaceNil;
  35852. $deferred.push([handleErr, [(err.$ptr || (err.$ptr = new ptrType$5(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, err)))]]);
  35853. d = newDecoder();
  35854. _r$2 = newParser(in$1); /* */ $s = 1; case 1: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  35855. p = _r$2;
  35856. $deferred.push([$methodVal(p, "destroy"), []]);
  35857. _r$3 = p.parse(); /* */ $s = 2; case 2: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  35858. node$1 = _r$3;
  35859. /* */ if (!(node$1 === ptrType$4.nil)) { $s = 3; continue; }
  35860. /* */ $s = 4; continue;
  35861. /* if (!(node$1 === ptrType$4.nil)) { */ case 3:
  35862. _r$4 = reflect.ValueOf(out); /* */ $s = 5; case 5: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
  35863. v = _r$4;
  35864. /* */ if ((v.Kind() === 22) && !v.IsNil()) { $s = 6; continue; }
  35865. /* */ $s = 7; continue;
  35866. /* if ((v.Kind() === 22) && !v.IsNil()) { */ case 6:
  35867. _r$5 = v.Elem(); /* */ $s = 8; case 8: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
  35868. v = _r$5;
  35869. /* } */ case 7:
  35870. _r$6 = d.unmarshal(node$1, v); /* */ $s = 9; case 9: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
  35871. _r$6;
  35872. /* } */ case 4:
  35873. if (d.terrors.$length > 0) {
  35874. err[0] = new TypeError.ptr(d.terrors);
  35875. return err[0];
  35876. }
  35877. err[0] = $ifaceNil;
  35878. return err[0];
  35879. /* */ $s = -1; case -1: } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if (!$curGoroutine.asleep) { return err[0]; } if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: Unmarshal }; } $f.$ptr = $ptr; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f.d = d; $f.err = err; $f.in$1 = in$1; $f.node$1 = node$1; $f.out = out; $f.p = p; $f.v = v; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
  35880. };
  35881. $pkg.Unmarshal = Unmarshal;
  35882. handleErr = function(err) {
  35883. var $ptr, _tuple, e, err, ok, v;
  35884. v = $recover();
  35885. if (!($interfaceIsEqual(v, $ifaceNil))) {
  35886. _tuple = $assertType(v, yamlError, true); e = $clone(_tuple[0], yamlError); ok = _tuple[1];
  35887. if (ok) {
  35888. err.$set(e.err);
  35889. } else {
  35890. $panic(v);
  35891. }
  35892. }
  35893. };
  35894. fail = function(err) {
  35895. var $ptr, err, x$1;
  35896. $panic((x$1 = new yamlError.ptr(err), new x$1.constructor.elem(x$1)));
  35897. };
  35898. failf = function(format, args) {
  35899. var $ptr, _r$2, args, format, x$1, $s, $r;
  35900. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r$2 = $f._r$2; args = $f.args; format = $f.format; x$1 = $f.x$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  35901. _r$2 = fmt.Errorf("yaml: " + format, args); /* */ $s = 1; case 1: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  35902. $panic((x$1 = new yamlError.ptr(_r$2), new x$1.constructor.elem(x$1)));
  35903. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: failf }; } $f.$ptr = $ptr; $f._r$2 = _r$2; $f.args = args; $f.format = format; $f.x$1 = x$1; $f.$s = $s; $f.$r = $r; return $f;
  35904. };
  35905. TypeError.ptr.prototype.Error = function() {
  35906. var $ptr, _r$2, e, $s, $r;
  35907. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r$2 = $f._r$2; e = $f.e; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  35908. e = this;
  35909. _r$2 = fmt.Sprintf("yaml: unmarshal errors:\n %s", new sliceType$10([new $String(strings.Join(e.Errors, "\n "))])); /* */ $s = 1; case 1: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  35910. return _r$2;
  35911. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: TypeError.ptr.prototype.Error }; } $f.$ptr = $ptr; $f._r$2 = _r$2; $f.e = e; $f.$s = $s; $f.$r = $r; return $f;
  35912. };
  35913. TypeError.prototype.Error = function() { return this.$val.Error(); };
  35914. getStructInfo = function(st) {
  35915. var $ptr, _entry, _entry$1, _entry$2, _i, _i$1, _key$1, _key$2, _key$3, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _ref$1, _ref$2, _ref$3, _tuple, _tuple$1, _tuple$2, _tuple$3, err, field, fields, fieldsList, fieldsMap, finfo, flag, found, found$1, i, info, inline, inlineMap, msg, msg$1, n, sinfo, sinfo$1, st, tag, $s, $r;
  35916. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _entry = $f._entry; _entry$1 = $f._entry$1; _entry$2 = $f._entry$2; _i = $f._i; _i$1 = $f._i$1; _key$1 = $f._key$1; _key$2 = $f._key$2; _key$3 = $f._key$3; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$12 = $f._r$12; _r$13 = $f._r$13; _r$14 = $f._r$14; _r$15 = $f._r$15; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _r$9 = $f._r$9; _ref = $f._ref; _ref$1 = $f._ref$1; _ref$2 = $f._ref$2; _ref$3 = $f._ref$3; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; err = $f.err; field = $f.field; fields = $f.fields; fieldsList = $f.fieldsList; fieldsMap = $f.fieldsMap; finfo = $f.finfo; flag = $f.flag; found = $f.found; found$1 = $f.found$1; i = $f.i; info = $f.info; inline = $f.inline; inlineMap = $f.inlineMap; msg = $f.msg; msg$1 = $f.msg$1; n = $f.n; sinfo = $f.sinfo; sinfo$1 = $f.sinfo$1; st = $f.st; tag = $f.tag; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  35917. $r = fieldMapMutex.RLock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  35918. _tuple = (_entry = structMap[st.$key()], _entry !== undefined ? [_entry.v, true] : [ptrType$14.nil, false]); sinfo = _tuple[0]; found = _tuple[1];
  35919. $r = fieldMapMutex.RUnlock(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  35920. if (found) {
  35921. return [sinfo, $ifaceNil];
  35922. }
  35923. _r$2 = st.NumField(); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  35924. n = _r$2;
  35925. fieldsMap = new $Map();
  35926. fieldsList = $makeSlice(sliceType$16, 0, n);
  35927. inlineMap = -1;
  35928. i = 0;
  35929. /* while (true) { */ case 4:
  35930. /* if (!(!((i === n)))) { break; } */ if(!(!((i === n)))) { $s = 5; continue; }
  35931. _r$3 = st.Field(i); /* */ $s = 6; case 6: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  35932. field = $clone(_r$3, reflect.StructField);
  35933. /* */ if (!(field.PkgPath === "")) { $s = 7; continue; }
  35934. /* */ $s = 8; continue;
  35935. /* if (!(field.PkgPath === "")) { */ case 7:
  35936. i = i + (1) >> 0;
  35937. /* continue; */ $s = 4; continue;
  35938. /* } */ case 8:
  35939. info = new fieldInfo.ptr("", i, false, false, sliceType$3.nil);
  35940. tag = new reflect.StructTag(field.Tag).Get("yaml");
  35941. if (tag === "" && strings.Index(field.Tag, ":") < 0) {
  35942. tag = field.Tag;
  35943. }
  35944. /* */ if (tag === "-") { $s = 9; continue; }
  35945. /* */ $s = 10; continue;
  35946. /* if (tag === "-") { */ case 9:
  35947. i = i + (1) >> 0;
  35948. /* continue; */ $s = 4; continue;
  35949. /* } */ case 10:
  35950. inline = false;
  35951. fields = strings.Split(tag, ",");
  35952. /* */ if (fields.$length > 1) { $s = 11; continue; }
  35953. /* */ $s = 12; continue;
  35954. /* if (fields.$length > 1) { */ case 11:
  35955. _ref = $subslice(fields, 1);
  35956. _i = 0;
  35957. /* while (true) { */ case 13:
  35958. /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 14; continue; }
  35959. flag = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]);
  35960. _ref$1 = flag;
  35961. /* */ if (_ref$1 === "omitempty") { $s = 15; continue; }
  35962. /* */ if (_ref$1 === "flow") { $s = 16; continue; }
  35963. /* */ if (_ref$1 === "inline") { $s = 17; continue; }
  35964. /* */ $s = 18; continue;
  35965. /* if (_ref$1 === "omitempty") { */ case 15:
  35966. info.OmitEmpty = true;
  35967. $s = 19; continue;
  35968. /* } else if (_ref$1 === "flow") { */ case 16:
  35969. info.Flow = true;
  35970. $s = 19; continue;
  35971. /* } else if (_ref$1 === "inline") { */ case 17:
  35972. inline = true;
  35973. $s = 19; continue;
  35974. /* } else { */ case 18:
  35975. _r$4 = fmt.Sprintf("Unsupported flag %q in tag %q of type %s", new sliceType$10([new $String(flag), new $String(tag), st])); /* */ $s = 20; case 20: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
  35976. _r$5 = errors.New(_r$4); /* */ $s = 21; case 21: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
  35977. return [ptrType$14.nil, _r$5];
  35978. /* } */ case 19:
  35979. _i++;
  35980. /* } */ $s = 13; continue; case 14:
  35981. tag = (0 >= fields.$length ? $throwRuntimeError("index out of range") : fields.$array[fields.$offset + 0]);
  35982. /* } */ case 12:
  35983. /* */ if (inline) { $s = 22; continue; }
  35984. /* */ $s = 23; continue;
  35985. /* if (inline) { */ case 22:
  35986. _r$6 = field.Type.Kind(); /* */ $s = 24; case 24: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
  35987. _ref$2 = _r$6;
  35988. /* */ if (_ref$2 === 21) { $s = 25; continue; }
  35989. /* */ if (_ref$2 === 25) { $s = 26; continue; }
  35990. /* */ $s = 27; continue;
  35991. /* if (_ref$2 === 21) { */ case 25:
  35992. /* */ if (inlineMap >= 0) { $s = 29; continue; }
  35993. /* */ $s = 30; continue;
  35994. /* if (inlineMap >= 0) { */ case 29:
  35995. _r$7 = st.String(); /* */ $s = 31; case 31: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
  35996. _r$8 = errors.New("Multiple ,inline maps in struct " + _r$7); /* */ $s = 32; case 32: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
  35997. return [ptrType$14.nil, _r$8];
  35998. /* } */ case 30:
  35999. _r$9 = field.Type.Key(); /* */ $s = 35; case 35: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
  36000. /* */ if (!($interfaceIsEqual(_r$9, reflect.TypeOf(new $String(""))))) { $s = 33; continue; }
  36001. /* */ $s = 34; continue;
  36002. /* if (!($interfaceIsEqual(_r$9, reflect.TypeOf(new $String(""))))) { */ case 33:
  36003. _r$10 = st.String(); /* */ $s = 36; case 36: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
  36004. _r$11 = errors.New("Option ,inline needs a map with string keys in struct " + _r$10); /* */ $s = 37; case 37: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
  36005. return [ptrType$14.nil, _r$11];
  36006. /* } */ case 34:
  36007. inlineMap = info.Num;
  36008. $s = 28; continue;
  36009. /* } else if (_ref$2 === 25) { */ case 26:
  36010. _r$12 = getStructInfo(field.Type); /* */ $s = 38; case 38: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; }
  36011. _tuple$1 = _r$12; sinfo$1 = _tuple$1[0]; err = _tuple$1[1];
  36012. if (!($interfaceIsEqual(err, $ifaceNil))) {
  36013. return [ptrType$14.nil, err];
  36014. }
  36015. _ref$3 = sinfo$1.FieldsList;
  36016. _i$1 = 0;
  36017. /* while (true) { */ case 39:
  36018. /* if (!(_i$1 < _ref$3.$length)) { break; } */ if(!(_i$1 < _ref$3.$length)) { $s = 40; continue; }
  36019. finfo = $clone(((_i$1 < 0 || _i$1 >= _ref$3.$length) ? $throwRuntimeError("index out of range") : _ref$3.$array[_ref$3.$offset + _i$1]), fieldInfo);
  36020. _tuple$2 = (_entry$1 = fieldsMap[finfo.Key], _entry$1 !== undefined ? [_entry$1.v, true] : [new fieldInfo.ptr(), false]); found$1 = _tuple$2[1];
  36021. /* */ if (found$1) { $s = 41; continue; }
  36022. /* */ $s = 42; continue;
  36023. /* if (found$1) { */ case 41:
  36024. _r$13 = st.String(); /* */ $s = 43; case 43: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; }
  36025. msg = "Duplicated key '" + finfo.Key + "' in struct " + _r$13;
  36026. return [ptrType$14.nil, errors.New(msg)];
  36027. /* } */ case 42:
  36028. if (finfo.Inline === sliceType$3.nil) {
  36029. finfo.Inline = new sliceType$3([i, finfo.Num]);
  36030. } else {
  36031. finfo.Inline = $appendSlice(new sliceType$3([i]), finfo.Inline);
  36032. }
  36033. _key$1 = finfo.Key; (fieldsMap || $throwRuntimeError("assignment to entry in nil map"))[_key$1] = { k: _key$1, v: $clone(finfo, fieldInfo) };
  36034. fieldsList = $append(fieldsList, finfo);
  36035. _i$1++;
  36036. /* } */ $s = 39; continue; case 40:
  36037. $s = 28; continue;
  36038. /* } else { */ case 27:
  36039. return [ptrType$14.nil, errors.New("Option ,inline needs a struct value field")];
  36040. /* } */ case 28:
  36041. i = i + (1) >> 0;
  36042. /* continue; */ $s = 4; continue;
  36043. /* } */ case 23:
  36044. /* */ if (!(tag === "")) { $s = 44; continue; }
  36045. /* */ $s = 45; continue;
  36046. /* if (!(tag === "")) { */ case 44:
  36047. info.Key = tag;
  36048. $s = 46; continue;
  36049. /* } else { */ case 45:
  36050. _r$14 = strings.ToLower(field.Name); /* */ $s = 47; case 47: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; }
  36051. info.Key = _r$14;
  36052. /* } */ case 46:
  36053. _tuple$3 = (_entry$2 = fieldsMap[info.Key], _entry$2 !== undefined ? [_entry$2.v, true] : [new fieldInfo.ptr(), false]); found = _tuple$3[1];
  36054. /* */ if (found) { $s = 48; continue; }
  36055. /* */ $s = 49; continue;
  36056. /* if (found) { */ case 48:
  36057. _r$15 = st.String(); /* */ $s = 50; case 50: if($c) { $c = false; _r$15 = _r$15.$blk(); } if (_r$15 && _r$15.$blk !== undefined) { break s; }
  36058. msg$1 = "Duplicated key '" + info.Key + "' in struct " + _r$15;
  36059. return [ptrType$14.nil, errors.New(msg$1)];
  36060. /* } */ case 49:
  36061. fieldsList = $append(fieldsList, info);
  36062. _key$2 = info.Key; (fieldsMap || $throwRuntimeError("assignment to entry in nil map"))[_key$2] = { k: _key$2, v: $clone(info, fieldInfo) };
  36063. i = i + (1) >> 0;
  36064. /* } */ $s = 4; continue; case 5:
  36065. sinfo = new structInfo.ptr(fieldsMap, fieldsList, inlineMap);
  36066. $r = fieldMapMutex.Lock(); /* */ $s = 51; case 51: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  36067. _key$3 = st; (structMap || $throwRuntimeError("assignment to entry in nil map"))[_key$3.$key()] = { k: _key$3, v: sinfo };
  36068. $r = fieldMapMutex.Unlock(); /* */ $s = 52; case 52: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  36069. return [sinfo, $ifaceNil];
  36070. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: getStructInfo }; } $f.$ptr = $ptr; $f._entry = _entry; $f._entry$1 = _entry$1; $f._entry$2 = _entry$2; $f._i = _i; $f._i$1 = _i$1; $f._key$1 = _key$1; $f._key$2 = _key$2; $f._key$3 = _key$3; $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$12 = _r$12; $f._r$13 = _r$13; $f._r$14 = _r$14; $f._r$15 = _r$15; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._r$9 = _r$9; $f._ref = _ref; $f._ref$1 = _ref$1; $f._ref$2 = _ref$2; $f._ref$3 = _ref$3; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f.err = err; $f.field = field; $f.fields = fields; $f.fieldsList = fieldsList; $f.fieldsMap = fieldsMap; $f.finfo = finfo; $f.flag = flag; $f.found = found; $f.found$1 = found$1; $f.i = i; $f.info = info; $f.inline = inline; $f.inlineMap = inlineMap; $f.msg = msg; $f.msg$1 = msg$1; $f.n = n; $f.sinfo = sinfo; $f.sinfo$1 = sinfo$1; $f.st = st; $f.tag = tag; $f.$s = $s; $f.$r = $r; return $f;
  36071. };
  36072. yaml_token_type_t.prototype.String = function() {
  36073. var $ptr, _ref, tt;
  36074. tt = this.$val;
  36075. _ref = tt;
  36076. if (_ref === 0) {
  36077. return "yaml_NO_TOKEN";
  36078. } else if (_ref === 1) {
  36079. return "yaml_STREAM_START_TOKEN";
  36080. } else if (_ref === 2) {
  36081. return "yaml_STREAM_END_TOKEN";
  36082. } else if (_ref === 3) {
  36083. return "yaml_VERSION_DIRECTIVE_TOKEN";
  36084. } else if (_ref === 4) {
  36085. return "yaml_TAG_DIRECTIVE_TOKEN";
  36086. } else if (_ref === 5) {
  36087. return "yaml_DOCUMENT_START_TOKEN";
  36088. } else if (_ref === 6) {
  36089. return "yaml_DOCUMENT_END_TOKEN";
  36090. } else if (_ref === 7) {
  36091. return "yaml_BLOCK_SEQUENCE_START_TOKEN";
  36092. } else if (_ref === 8) {
  36093. return "yaml_BLOCK_MAPPING_START_TOKEN";
  36094. } else if (_ref === 9) {
  36095. return "yaml_BLOCK_END_TOKEN";
  36096. } else if (_ref === 10) {
  36097. return "yaml_FLOW_SEQUENCE_START_TOKEN";
  36098. } else if (_ref === 11) {
  36099. return "yaml_FLOW_SEQUENCE_END_TOKEN";
  36100. } else if (_ref === 12) {
  36101. return "yaml_FLOW_MAPPING_START_TOKEN";
  36102. } else if (_ref === 13) {
  36103. return "yaml_FLOW_MAPPING_END_TOKEN";
  36104. } else if (_ref === 14) {
  36105. return "yaml_BLOCK_ENTRY_TOKEN";
  36106. } else if (_ref === 15) {
  36107. return "yaml_FLOW_ENTRY_TOKEN";
  36108. } else if (_ref === 16) {
  36109. return "yaml_KEY_TOKEN";
  36110. } else if (_ref === 17) {
  36111. return "yaml_VALUE_TOKEN";
  36112. } else if (_ref === 18) {
  36113. return "yaml_ALIAS_TOKEN";
  36114. } else if (_ref === 19) {
  36115. return "yaml_ANCHOR_TOKEN";
  36116. } else if (_ref === 20) {
  36117. return "yaml_TAG_TOKEN";
  36118. } else if (_ref === 21) {
  36119. return "yaml_SCALAR_TOKEN";
  36120. }
  36121. return "<unknown token>";
  36122. };
  36123. $ptrType(yaml_token_type_t).prototype.String = function() { return new yaml_token_type_t(this.$get()).String(); };
  36124. yaml_parser_state_t.prototype.String = function() {
  36125. var $ptr, _ref, ps;
  36126. ps = this.$val;
  36127. _ref = ps;
  36128. if (_ref === 0) {
  36129. return "yaml_PARSE_STREAM_START_STATE";
  36130. } else if (_ref === 1) {
  36131. return "yaml_PARSE_IMPLICIT_DOCUMENT_START_STATE";
  36132. } else if (_ref === 2) {
  36133. return "yaml_PARSE_DOCUMENT_START_STATE";
  36134. } else if (_ref === 3) {
  36135. return "yaml_PARSE_DOCUMENT_CONTENT_STATE";
  36136. } else if (_ref === 4) {
  36137. return "yaml_PARSE_DOCUMENT_END_STATE";
  36138. } else if (_ref === 5) {
  36139. return "yaml_PARSE_BLOCK_NODE_STATE";
  36140. } else if (_ref === 6) {
  36141. return "yaml_PARSE_BLOCK_NODE_OR_INDENTLESS_SEQUENCE_STATE";
  36142. } else if (_ref === 7) {
  36143. return "yaml_PARSE_FLOW_NODE_STATE";
  36144. } else if (_ref === 8) {
  36145. return "yaml_PARSE_BLOCK_SEQUENCE_FIRST_ENTRY_STATE";
  36146. } else if (_ref === 9) {
  36147. return "yaml_PARSE_BLOCK_SEQUENCE_ENTRY_STATE";
  36148. } else if (_ref === 10) {
  36149. return "yaml_PARSE_INDENTLESS_SEQUENCE_ENTRY_STATE";
  36150. } else if (_ref === 11) {
  36151. return "yaml_PARSE_BLOCK_MAPPING_FIRST_KEY_STATE";
  36152. } else if (_ref === 12) {
  36153. return "yaml_PARSE_BLOCK_MAPPING_KEY_STATE";
  36154. } else if (_ref === 13) {
  36155. return "yaml_PARSE_BLOCK_MAPPING_VALUE_STATE";
  36156. } else if (_ref === 14) {
  36157. return "yaml_PARSE_FLOW_SEQUENCE_FIRST_ENTRY_STATE";
  36158. } else if (_ref === 15) {
  36159. return "yaml_PARSE_FLOW_SEQUENCE_ENTRY_STATE";
  36160. } else if (_ref === 16) {
  36161. return "yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_KEY_STATE";
  36162. } else if (_ref === 17) {
  36163. return "yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_VALUE_STATE";
  36164. } else if (_ref === 18) {
  36165. return "yaml_PARSE_FLOW_SEQUENCE_ENTRY_MAPPING_END_STATE";
  36166. } else if (_ref === 19) {
  36167. return "yaml_PARSE_FLOW_MAPPING_FIRST_KEY_STATE";
  36168. } else if (_ref === 20) {
  36169. return "yaml_PARSE_FLOW_MAPPING_KEY_STATE";
  36170. } else if (_ref === 21) {
  36171. return "yaml_PARSE_FLOW_MAPPING_VALUE_STATE";
  36172. } else if (_ref === 22) {
  36173. return "yaml_PARSE_FLOW_MAPPING_EMPTY_VALUE_STATE";
  36174. } else if (_ref === 23) {
  36175. return "yaml_PARSE_END_STATE";
  36176. }
  36177. return "<unknown parser state>";
  36178. };
  36179. $ptrType(yaml_parser_state_t).prototype.String = function() { return new yaml_parser_state_t(this.$get()).String(); };
  36180. is_alpha = function(b, i) {
  36181. var $ptr, b, i;
  36182. return ((i < 0 || i >= b.$length) ? $throwRuntimeError("index out of range") : b.$array[b.$offset + i]) >= 48 && ((i < 0 || i >= b.$length) ? $throwRuntimeError("index out of range") : b.$array[b.$offset + i]) <= 57 || ((i < 0 || i >= b.$length) ? $throwRuntimeError("index out of range") : b.$array[b.$offset + i]) >= 65 && ((i < 0 || i >= b.$length) ? $throwRuntimeError("index out of range") : b.$array[b.$offset + i]) <= 90 || ((i < 0 || i >= b.$length) ? $throwRuntimeError("index out of range") : b.$array[b.$offset + i]) >= 97 && ((i < 0 || i >= b.$length) ? $throwRuntimeError("index out of range") : b.$array[b.$offset + i]) <= 122 || (((i < 0 || i >= b.$length) ? $throwRuntimeError("index out of range") : b.$array[b.$offset + i]) === 95) || (((i < 0 || i >= b.$length) ? $throwRuntimeError("index out of range") : b.$array[b.$offset + i]) === 45);
  36183. };
  36184. is_digit = function(b, i) {
  36185. var $ptr, b, i;
  36186. return ((i < 0 || i >= b.$length) ? $throwRuntimeError("index out of range") : b.$array[b.$offset + i]) >= 48 && ((i < 0 || i >= b.$length) ? $throwRuntimeError("index out of range") : b.$array[b.$offset + i]) <= 57;
  36187. };
  36188. as_digit = function(b, i) {
  36189. var $ptr, b, i;
  36190. return (((i < 0 || i >= b.$length) ? $throwRuntimeError("index out of range") : b.$array[b.$offset + i]) >> 0) - 48 >> 0;
  36191. };
  36192. is_hex = function(b, i) {
  36193. var $ptr, b, i;
  36194. return ((i < 0 || i >= b.$length) ? $throwRuntimeError("index out of range") : b.$array[b.$offset + i]) >= 48 && ((i < 0 || i >= b.$length) ? $throwRuntimeError("index out of range") : b.$array[b.$offset + i]) <= 57 || ((i < 0 || i >= b.$length) ? $throwRuntimeError("index out of range") : b.$array[b.$offset + i]) >= 65 && ((i < 0 || i >= b.$length) ? $throwRuntimeError("index out of range") : b.$array[b.$offset + i]) <= 70 || ((i < 0 || i >= b.$length) ? $throwRuntimeError("index out of range") : b.$array[b.$offset + i]) >= 97 && ((i < 0 || i >= b.$length) ? $throwRuntimeError("index out of range") : b.$array[b.$offset + i]) <= 102;
  36195. };
  36196. as_hex = function(b, i) {
  36197. var $ptr, b, bi, i;
  36198. bi = ((i < 0 || i >= b.$length) ? $throwRuntimeError("index out of range") : b.$array[b.$offset + i]);
  36199. if (bi >= 65 && bi <= 70) {
  36200. return ((bi >> 0) - 65 >> 0) + 10 >> 0;
  36201. }
  36202. if (bi >= 97 && bi <= 102) {
  36203. return ((bi >> 0) - 97 >> 0) + 10 >> 0;
  36204. }
  36205. return (bi >> 0) - 48 >> 0;
  36206. };
  36207. is_z = function(b, i) {
  36208. var $ptr, b, i;
  36209. return ((i < 0 || i >= b.$length) ? $throwRuntimeError("index out of range") : b.$array[b.$offset + i]) === 0;
  36210. };
  36211. is_bom = function(b, i) {
  36212. var $ptr, b, i;
  36213. return ((0 >= b.$length ? $throwRuntimeError("index out of range") : b.$array[b.$offset + 0]) === 239) && ((1 >= b.$length ? $throwRuntimeError("index out of range") : b.$array[b.$offset + 1]) === 187) && ((2 >= b.$length ? $throwRuntimeError("index out of range") : b.$array[b.$offset + 2]) === 191);
  36214. };
  36215. is_space = function(b, i) {
  36216. var $ptr, b, i;
  36217. return ((i < 0 || i >= b.$length) ? $throwRuntimeError("index out of range") : b.$array[b.$offset + i]) === 32;
  36218. };
  36219. is_tab = function(b, i) {
  36220. var $ptr, b, i;
  36221. return ((i < 0 || i >= b.$length) ? $throwRuntimeError("index out of range") : b.$array[b.$offset + i]) === 9;
  36222. };
  36223. is_blank = function(b, i) {
  36224. var $ptr, b, i;
  36225. return (((i < 0 || i >= b.$length) ? $throwRuntimeError("index out of range") : b.$array[b.$offset + i]) === 32) || (((i < 0 || i >= b.$length) ? $throwRuntimeError("index out of range") : b.$array[b.$offset + i]) === 9);
  36226. };
  36227. is_break = function(b, i) {
  36228. var $ptr, b, i, x$1, x$2, x$3, x$4, x$5;
  36229. return (((i < 0 || i >= b.$length) ? $throwRuntimeError("index out of range") : b.$array[b.$offset + i]) === 13) || (((i < 0 || i >= b.$length) ? $throwRuntimeError("index out of range") : b.$array[b.$offset + i]) === 10) || (((i < 0 || i >= b.$length) ? $throwRuntimeError("index out of range") : b.$array[b.$offset + i]) === 194) && ((x$1 = i + 1 >> 0, ((x$1 < 0 || x$1 >= b.$length) ? $throwRuntimeError("index out of range") : b.$array[b.$offset + x$1])) === 133) || (((i < 0 || i >= b.$length) ? $throwRuntimeError("index out of range") : b.$array[b.$offset + i]) === 226) && ((x$2 = i + 1 >> 0, ((x$2 < 0 || x$2 >= b.$length) ? $throwRuntimeError("index out of range") : b.$array[b.$offset + x$2])) === 128) && ((x$3 = i + 2 >> 0, ((x$3 < 0 || x$3 >= b.$length) ? $throwRuntimeError("index out of range") : b.$array[b.$offset + x$3])) === 168) || (((i < 0 || i >= b.$length) ? $throwRuntimeError("index out of range") : b.$array[b.$offset + i]) === 226) && ((x$4 = i + 1 >> 0, ((x$4 < 0 || x$4 >= b.$length) ? $throwRuntimeError("index out of range") : b.$array[b.$offset + x$4])) === 128) && ((x$5 = i + 2 >> 0, ((x$5 < 0 || x$5 >= b.$length) ? $throwRuntimeError("index out of range") : b.$array[b.$offset + x$5])) === 169);
  36230. };
  36231. is_crlf = function(b, i) {
  36232. var $ptr, b, i, x$1;
  36233. return (((i < 0 || i >= b.$length) ? $throwRuntimeError("index out of range") : b.$array[b.$offset + i]) === 13) && ((x$1 = i + 1 >> 0, ((x$1 < 0 || x$1 >= b.$length) ? $throwRuntimeError("index out of range") : b.$array[b.$offset + x$1])) === 10);
  36234. };
  36235. is_breakz = function(b, i) {
  36236. var $ptr, b, i, x$1, x$2, x$3, x$4, x$5;
  36237. return (((i < 0 || i >= b.$length) ? $throwRuntimeError("index out of range") : b.$array[b.$offset + i]) === 13) || (((i < 0 || i >= b.$length) ? $throwRuntimeError("index out of range") : b.$array[b.$offset + i]) === 10) || (((i < 0 || i >= b.$length) ? $throwRuntimeError("index out of range") : b.$array[b.$offset + i]) === 194) && ((x$1 = i + 1 >> 0, ((x$1 < 0 || x$1 >= b.$length) ? $throwRuntimeError("index out of range") : b.$array[b.$offset + x$1])) === 133) || (((i < 0 || i >= b.$length) ? $throwRuntimeError("index out of range") : b.$array[b.$offset + i]) === 226) && ((x$2 = i + 1 >> 0, ((x$2 < 0 || x$2 >= b.$length) ? $throwRuntimeError("index out of range") : b.$array[b.$offset + x$2])) === 128) && ((x$3 = i + 2 >> 0, ((x$3 < 0 || x$3 >= b.$length) ? $throwRuntimeError("index out of range") : b.$array[b.$offset + x$3])) === 168) || (((i < 0 || i >= b.$length) ? $throwRuntimeError("index out of range") : b.$array[b.$offset + i]) === 226) && ((x$4 = i + 1 >> 0, ((x$4 < 0 || x$4 >= b.$length) ? $throwRuntimeError("index out of range") : b.$array[b.$offset + x$4])) === 128) && ((x$5 = i + 2 >> 0, ((x$5 < 0 || x$5 >= b.$length) ? $throwRuntimeError("index out of range") : b.$array[b.$offset + x$5])) === 169) || (((i < 0 || i >= b.$length) ? $throwRuntimeError("index out of range") : b.$array[b.$offset + i]) === 0);
  36238. };
  36239. is_blankz = function(b, i) {
  36240. var $ptr, b, i, x$1, x$2, x$3, x$4, x$5;
  36241. return (((i < 0 || i >= b.$length) ? $throwRuntimeError("index out of range") : b.$array[b.$offset + i]) === 32) || (((i < 0 || i >= b.$length) ? $throwRuntimeError("index out of range") : b.$array[b.$offset + i]) === 9) || (((i < 0 || i >= b.$length) ? $throwRuntimeError("index out of range") : b.$array[b.$offset + i]) === 13) || (((i < 0 || i >= b.$length) ? $throwRuntimeError("index out of range") : b.$array[b.$offset + i]) === 10) || (((i < 0 || i >= b.$length) ? $throwRuntimeError("index out of range") : b.$array[b.$offset + i]) === 194) && ((x$1 = i + 1 >> 0, ((x$1 < 0 || x$1 >= b.$length) ? $throwRuntimeError("index out of range") : b.$array[b.$offset + x$1])) === 133) || (((i < 0 || i >= b.$length) ? $throwRuntimeError("index out of range") : b.$array[b.$offset + i]) === 226) && ((x$2 = i + 1 >> 0, ((x$2 < 0 || x$2 >= b.$length) ? $throwRuntimeError("index out of range") : b.$array[b.$offset + x$2])) === 128) && ((x$3 = i + 2 >> 0, ((x$3 < 0 || x$3 >= b.$length) ? $throwRuntimeError("index out of range") : b.$array[b.$offset + x$3])) === 168) || (((i < 0 || i >= b.$length) ? $throwRuntimeError("index out of range") : b.$array[b.$offset + i]) === 226) && ((x$4 = i + 1 >> 0, ((x$4 < 0 || x$4 >= b.$length) ? $throwRuntimeError("index out of range") : b.$array[b.$offset + x$4])) === 128) && ((x$5 = i + 2 >> 0, ((x$5 < 0 || x$5 >= b.$length) ? $throwRuntimeError("index out of range") : b.$array[b.$offset + x$5])) === 169) || (((i < 0 || i >= b.$length) ? $throwRuntimeError("index out of range") : b.$array[b.$offset + i]) === 0);
  36242. };
  36243. width = function(b) {
  36244. var $ptr, b;
  36245. if (((b & 128) >>> 0) === 0) {
  36246. return 1;
  36247. }
  36248. if (((b & 224) >>> 0) === 192) {
  36249. return 2;
  36250. }
  36251. if (((b & 240) >>> 0) === 224) {
  36252. return 3;
  36253. }
  36254. if (((b & 248) >>> 0) === 240) {
  36255. return 4;
  36256. }
  36257. return 0;
  36258. };
  36259. ptrType$15.methods = [{prop: "destroy", name: "destroy", pkg: "gopkg.in/yaml.v2", typ: $funcType([], [], false)}, {prop: "skip", name: "skip", pkg: "gopkg.in/yaml.v2", typ: $funcType([], [], false)}, {prop: "fail", name: "fail", pkg: "gopkg.in/yaml.v2", typ: $funcType([], [], false)}, {prop: "anchor", name: "anchor", pkg: "gopkg.in/yaml.v2", typ: $funcType([ptrType$4, sliceType$1], [], false)}, {prop: "parse", name: "parse", pkg: "gopkg.in/yaml.v2", typ: $funcType([], [ptrType$4], false)}, {prop: "node", name: "node", pkg: "gopkg.in/yaml.v2", typ: $funcType([$Int], [ptrType$4], false)}, {prop: "document", name: "document", pkg: "gopkg.in/yaml.v2", typ: $funcType([], [ptrType$4], false)}, {prop: "alias", name: "alias", pkg: "gopkg.in/yaml.v2", typ: $funcType([], [ptrType$4], false)}, {prop: "scalar", name: "scalar", pkg: "gopkg.in/yaml.v2", typ: $funcType([], [ptrType$4], false)}, {prop: "sequence", name: "sequence", pkg: "gopkg.in/yaml.v2", typ: $funcType([], [ptrType$4], false)}, {prop: "mapping", name: "mapping", pkg: "gopkg.in/yaml.v2", typ: $funcType([], [ptrType$4], false)}];
  36260. ptrType$16.methods = [{prop: "terror", name: "terror", pkg: "gopkg.in/yaml.v2", typ: $funcType([ptrType$4, $String, reflect.Value], [], false)}, {prop: "callUnmarshaler", name: "callUnmarshaler", pkg: "gopkg.in/yaml.v2", typ: $funcType([ptrType$4, Unmarshaler], [$Bool], false)}, {prop: "prepare", name: "prepare", pkg: "gopkg.in/yaml.v2", typ: $funcType([ptrType$4, reflect.Value], [reflect.Value, $Bool, $Bool], false)}, {prop: "unmarshal", name: "unmarshal", pkg: "gopkg.in/yaml.v2", typ: $funcType([ptrType$4, reflect.Value], [$Bool], false)}, {prop: "document", name: "document", pkg: "gopkg.in/yaml.v2", typ: $funcType([ptrType$4, reflect.Value], [$Bool], false)}, {prop: "alias", name: "alias", pkg: "gopkg.in/yaml.v2", typ: $funcType([ptrType$4, reflect.Value], [$Bool], false)}, {prop: "scalar", name: "scalar", pkg: "gopkg.in/yaml.v2", typ: $funcType([ptrType$4, reflect.Value], [$Bool], false)}, {prop: "sequence", name: "sequence", pkg: "gopkg.in/yaml.v2", typ: $funcType([ptrType$4, reflect.Value], [$Bool], false)}, {prop: "mapping", name: "mapping", pkg: "gopkg.in/yaml.v2", typ: $funcType([ptrType$4, reflect.Value], [$Bool], false)}, {prop: "mappingSlice", name: "mappingSlice", pkg: "gopkg.in/yaml.v2", typ: $funcType([ptrType$4, reflect.Value], [$Bool], false)}, {prop: "mappingStruct", name: "mappingStruct", pkg: "gopkg.in/yaml.v2", typ: $funcType([ptrType$4, reflect.Value], [$Bool], false)}, {prop: "merge", name: "merge", pkg: "gopkg.in/yaml.v2", typ: $funcType([ptrType$4, reflect.Value], [], false)}];
  36261. ptrType$6.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}];
  36262. yaml_token_type_t.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}];
  36263. ptrType$17.methods = [{prop: "scalar_style", name: "scalar_style", pkg: "gopkg.in/yaml.v2", typ: $funcType([], [yaml_scalar_style_t], false)}, {prop: "sequence_style", name: "sequence_style", pkg: "gopkg.in/yaml.v2", typ: $funcType([], [yaml_sequence_style_t], false)}, {prop: "mapping_style", name: "mapping_style", pkg: "gopkg.in/yaml.v2", typ: $funcType([], [yaml_mapping_style_t], false)}];
  36264. yaml_parser_state_t.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}];
  36265. node.init([{prop: "kind", name: "kind", pkg: "gopkg.in/yaml.v2", typ: $Int, tag: ""}, {prop: "line", name: "line", pkg: "gopkg.in/yaml.v2", typ: $Int, tag: ""}, {prop: "column", name: "column", pkg: "gopkg.in/yaml.v2", typ: $Int, tag: ""}, {prop: "tag", name: "tag", pkg: "gopkg.in/yaml.v2", typ: $String, tag: ""}, {prop: "value", name: "value", pkg: "gopkg.in/yaml.v2", typ: $String, tag: ""}, {prop: "implicit", name: "implicit", pkg: "gopkg.in/yaml.v2", typ: $Bool, tag: ""}, {prop: "children", name: "children", pkg: "gopkg.in/yaml.v2", typ: sliceType$11, tag: ""}, {prop: "anchors", name: "anchors", pkg: "gopkg.in/yaml.v2", typ: mapType$1, tag: ""}]);
  36266. parser.init([{prop: "parser", name: "parser", pkg: "gopkg.in/yaml.v2", typ: yaml_parser_t, tag: ""}, {prop: "event", name: "event", pkg: "gopkg.in/yaml.v2", typ: yaml_event_t, tag: ""}, {prop: "doc", name: "doc", pkg: "gopkg.in/yaml.v2", typ: ptrType$4, tag: ""}]);
  36267. decoder.init([{prop: "doc", name: "doc", pkg: "gopkg.in/yaml.v2", typ: ptrType$4, tag: ""}, {prop: "aliases", name: "aliases", pkg: "gopkg.in/yaml.v2", typ: mapType$2, tag: ""}, {prop: "mapType", name: "mapType", pkg: "gopkg.in/yaml.v2", typ: reflect.Type, tag: ""}, {prop: "terrors", name: "terrors", pkg: "gopkg.in/yaml.v2", typ: sliceType$12, tag: ""}]);
  36268. resolveMapItem.init([{prop: "value", name: "value", pkg: "gopkg.in/yaml.v2", typ: $emptyInterface, tag: ""}, {prop: "tag", name: "tag", pkg: "gopkg.in/yaml.v2", typ: $String, tag: ""}]);
  36269. MapItem.init([{prop: "Key", name: "Key", pkg: "", typ: $emptyInterface, tag: ""}, {prop: "Value", name: "Value", pkg: "", typ: $emptyInterface, tag: ""}]);
  36270. Unmarshaler.init([{prop: "UnmarshalYAML", name: "UnmarshalYAML", pkg: "", typ: $funcType([funcType$1], [$error], false)}]);
  36271. yamlError.init([{prop: "err", name: "err", pkg: "gopkg.in/yaml.v2", typ: $error, tag: ""}]);
  36272. TypeError.init([{prop: "Errors", name: "Errors", pkg: "", typ: sliceType$12, tag: ""}]);
  36273. structInfo.init([{prop: "FieldsMap", name: "FieldsMap", pkg: "", typ: mapType$3, tag: ""}, {prop: "FieldsList", name: "FieldsList", pkg: "", typ: sliceType$16, tag: ""}, {prop: "InlineMap", name: "InlineMap", pkg: "", typ: $Int, tag: ""}]);
  36274. fieldInfo.init([{prop: "Key", name: "Key", pkg: "", typ: $String, tag: ""}, {prop: "Num", name: "Num", pkg: "", typ: $Int, tag: ""}, {prop: "OmitEmpty", name: "OmitEmpty", pkg: "", typ: $Bool, tag: ""}, {prop: "Flow", name: "Flow", pkg: "", typ: $Bool, tag: ""}, {prop: "Inline", name: "Inline", pkg: "", typ: sliceType$3, tag: ""}]);
  36275. yaml_version_directive_t.init([{prop: "major", name: "major", pkg: "gopkg.in/yaml.v2", typ: $Int8, tag: ""}, {prop: "minor", name: "minor", pkg: "gopkg.in/yaml.v2", typ: $Int8, tag: ""}]);
  36276. yaml_tag_directive_t.init([{prop: "handle", name: "handle", pkg: "gopkg.in/yaml.v2", typ: sliceType$1, tag: ""}, {prop: "prefix", name: "prefix", pkg: "gopkg.in/yaml.v2", typ: sliceType$1, tag: ""}]);
  36277. yaml_mark_t.init([{prop: "index", name: "index", pkg: "gopkg.in/yaml.v2", typ: $Int, tag: ""}, {prop: "line", name: "line", pkg: "gopkg.in/yaml.v2", typ: $Int, tag: ""}, {prop: "column", name: "column", pkg: "gopkg.in/yaml.v2", typ: $Int, tag: ""}]);
  36278. yaml_token_t.init([{prop: "typ", name: "typ", pkg: "gopkg.in/yaml.v2", typ: yaml_token_type_t, tag: ""}, {prop: "start_mark", name: "start_mark", pkg: "gopkg.in/yaml.v2", typ: yaml_mark_t, tag: ""}, {prop: "end_mark", name: "end_mark", pkg: "gopkg.in/yaml.v2", typ: yaml_mark_t, tag: ""}, {prop: "encoding", name: "encoding", pkg: "gopkg.in/yaml.v2", typ: yaml_encoding_t, tag: ""}, {prop: "value", name: "value", pkg: "gopkg.in/yaml.v2", typ: sliceType$1, tag: ""}, {prop: "suffix", name: "suffix", pkg: "gopkg.in/yaml.v2", typ: sliceType$1, tag: ""}, {prop: "prefix", name: "prefix", pkg: "gopkg.in/yaml.v2", typ: sliceType$1, tag: ""}, {prop: "style", name: "style", pkg: "gopkg.in/yaml.v2", typ: yaml_scalar_style_t, tag: ""}, {prop: "major", name: "major", pkg: "gopkg.in/yaml.v2", typ: $Int8, tag: ""}, {prop: "minor", name: "minor", pkg: "gopkg.in/yaml.v2", typ: $Int8, tag: ""}]);
  36279. yaml_event_t.init([{prop: "typ", name: "typ", pkg: "gopkg.in/yaml.v2", typ: yaml_event_type_t, tag: ""}, {prop: "start_mark", name: "start_mark", pkg: "gopkg.in/yaml.v2", typ: yaml_mark_t, tag: ""}, {prop: "end_mark", name: "end_mark", pkg: "gopkg.in/yaml.v2", typ: yaml_mark_t, tag: ""}, {prop: "encoding", name: "encoding", pkg: "gopkg.in/yaml.v2", typ: yaml_encoding_t, tag: ""}, {prop: "version_directive", name: "version_directive", pkg: "gopkg.in/yaml.v2", typ: ptrType$3, tag: ""}, {prop: "tag_directives", name: "tag_directives", pkg: "gopkg.in/yaml.v2", typ: sliceType, tag: ""}, {prop: "anchor", name: "anchor", pkg: "gopkg.in/yaml.v2", typ: sliceType$1, tag: ""}, {prop: "tag", name: "tag", pkg: "gopkg.in/yaml.v2", typ: sliceType$1, tag: ""}, {prop: "value", name: "value", pkg: "gopkg.in/yaml.v2", typ: sliceType$1, tag: ""}, {prop: "implicit", name: "implicit", pkg: "gopkg.in/yaml.v2", typ: $Bool, tag: ""}, {prop: "quoted_implicit", name: "quoted_implicit", pkg: "gopkg.in/yaml.v2", typ: $Bool, tag: ""}, {prop: "style", name: "style", pkg: "gopkg.in/yaml.v2", typ: yaml_style_t, tag: ""}]);
  36280. yaml_node_pair_t.init([{prop: "key", name: "key", pkg: "gopkg.in/yaml.v2", typ: $Int, tag: ""}, {prop: "value", name: "value", pkg: "gopkg.in/yaml.v2", typ: $Int, tag: ""}]);
  36281. yaml_node_t.init([{prop: "typ", name: "typ", pkg: "gopkg.in/yaml.v2", typ: yaml_node_type_t, tag: ""}, {prop: "tag", name: "tag", pkg: "gopkg.in/yaml.v2", typ: sliceType$1, tag: ""}, {prop: "scalar", name: "scalar", pkg: "gopkg.in/yaml.v2", typ: structType$5, tag: ""}, {prop: "sequence", name: "sequence", pkg: "gopkg.in/yaml.v2", typ: structType$6, tag: ""}, {prop: "mapping", name: "mapping", pkg: "gopkg.in/yaml.v2", typ: structType$7, tag: ""}, {prop: "start_mark", name: "start_mark", pkg: "gopkg.in/yaml.v2", typ: yaml_mark_t, tag: ""}, {prop: "end_mark", name: "end_mark", pkg: "gopkg.in/yaml.v2", typ: yaml_mark_t, tag: ""}]);
  36282. yaml_document_t.init([{prop: "nodes", name: "nodes", pkg: "gopkg.in/yaml.v2", typ: sliceType$19, tag: ""}, {prop: "version_directive", name: "version_directive", pkg: "gopkg.in/yaml.v2", typ: ptrType$3, tag: ""}, {prop: "tag_directives_data", name: "tag_directives_data", pkg: "gopkg.in/yaml.v2", typ: sliceType, tag: ""}, {prop: "tag_directives_start", name: "tag_directives_start", pkg: "gopkg.in/yaml.v2", typ: $Int, tag: ""}, {prop: "tag_directives_end", name: "tag_directives_end", pkg: "gopkg.in/yaml.v2", typ: $Int, tag: ""}, {prop: "start_implicit", name: "start_implicit", pkg: "gopkg.in/yaml.v2", typ: $Int, tag: ""}, {prop: "end_implicit", name: "end_implicit", pkg: "gopkg.in/yaml.v2", typ: $Int, tag: ""}, {prop: "start_mark", name: "start_mark", pkg: "gopkg.in/yaml.v2", typ: yaml_mark_t, tag: ""}, {prop: "end_mark", name: "end_mark", pkg: "gopkg.in/yaml.v2", typ: yaml_mark_t, tag: ""}]);
  36283. yaml_read_handler_t.init([ptrType$19, sliceType$1], [$Int, $error], false);
  36284. yaml_simple_key_t.init([{prop: "possible", name: "possible", pkg: "gopkg.in/yaml.v2", typ: $Bool, tag: ""}, {prop: "required", name: "required", pkg: "gopkg.in/yaml.v2", typ: $Bool, tag: ""}, {prop: "token_number", name: "token_number", pkg: "gopkg.in/yaml.v2", typ: $Int, tag: ""}, {prop: "mark", name: "mark", pkg: "gopkg.in/yaml.v2", typ: yaml_mark_t, tag: ""}]);
  36285. yaml_alias_data_t.init([{prop: "anchor", name: "anchor", pkg: "gopkg.in/yaml.v2", typ: sliceType$1, tag: ""}, {prop: "index", name: "index", pkg: "gopkg.in/yaml.v2", typ: $Int, tag: ""}, {prop: "mark", name: "mark", pkg: "gopkg.in/yaml.v2", typ: yaml_mark_t, tag: ""}]);
  36286. yaml_parser_t.init([{prop: "error", name: "error", pkg: "gopkg.in/yaml.v2", typ: yaml_error_type_t, tag: ""}, {prop: "problem", name: "problem", pkg: "gopkg.in/yaml.v2", typ: $String, tag: ""}, {prop: "problem_offset", name: "problem_offset", pkg: "gopkg.in/yaml.v2", typ: $Int, tag: ""}, {prop: "problem_value", name: "problem_value", pkg: "gopkg.in/yaml.v2", typ: $Int, tag: ""}, {prop: "problem_mark", name: "problem_mark", pkg: "gopkg.in/yaml.v2", typ: yaml_mark_t, tag: ""}, {prop: "context", name: "context", pkg: "gopkg.in/yaml.v2", typ: $String, tag: ""}, {prop: "context_mark", name: "context_mark", pkg: "gopkg.in/yaml.v2", typ: yaml_mark_t, tag: ""}, {prop: "read_handler", name: "read_handler", pkg: "gopkg.in/yaml.v2", typ: yaml_read_handler_t, tag: ""}, {prop: "input_file", name: "input_file", pkg: "gopkg.in/yaml.v2", typ: io.Reader, tag: ""}, {prop: "input", name: "input", pkg: "gopkg.in/yaml.v2", typ: sliceType$1, tag: ""}, {prop: "input_pos", name: "input_pos", pkg: "gopkg.in/yaml.v2", typ: $Int, tag: ""}, {prop: "eof", name: "eof", pkg: "gopkg.in/yaml.v2", typ: $Bool, tag: ""}, {prop: "buffer", name: "buffer", pkg: "gopkg.in/yaml.v2", typ: sliceType$1, tag: ""}, {prop: "buffer_pos", name: "buffer_pos", pkg: "gopkg.in/yaml.v2", typ: $Int, tag: ""}, {prop: "unread", name: "unread", pkg: "gopkg.in/yaml.v2", typ: $Int, tag: ""}, {prop: "raw_buffer", name: "raw_buffer", pkg: "gopkg.in/yaml.v2", typ: sliceType$1, tag: ""}, {prop: "raw_buffer_pos", name: "raw_buffer_pos", pkg: "gopkg.in/yaml.v2", typ: $Int, tag: ""}, {prop: "encoding", name: "encoding", pkg: "gopkg.in/yaml.v2", typ: yaml_encoding_t, tag: ""}, {prop: "offset", name: "offset", pkg: "gopkg.in/yaml.v2", typ: $Int, tag: ""}, {prop: "mark", name: "mark", pkg: "gopkg.in/yaml.v2", typ: yaml_mark_t, tag: ""}, {prop: "stream_start_produced", name: "stream_start_produced", pkg: "gopkg.in/yaml.v2", typ: $Bool, tag: ""}, {prop: "stream_end_produced", name: "stream_end_produced", pkg: "gopkg.in/yaml.v2", typ: $Bool, tag: ""}, {prop: "flow_level", name: "flow_level", pkg: "gopkg.in/yaml.v2", typ: $Int, tag: ""}, {prop: "tokens", name: "tokens", pkg: "gopkg.in/yaml.v2", typ: sliceType$2, tag: ""}, {prop: "tokens_head", name: "tokens_head", pkg: "gopkg.in/yaml.v2", typ: $Int, tag: ""}, {prop: "tokens_parsed", name: "tokens_parsed", pkg: "gopkg.in/yaml.v2", typ: $Int, tag: ""}, {prop: "token_available", name: "token_available", pkg: "gopkg.in/yaml.v2", typ: $Bool, tag: ""}, {prop: "indent", name: "indent", pkg: "gopkg.in/yaml.v2", typ: $Int, tag: ""}, {prop: "indents", name: "indents", pkg: "gopkg.in/yaml.v2", typ: sliceType$3, tag: ""}, {prop: "simple_key_allowed", name: "simple_key_allowed", pkg: "gopkg.in/yaml.v2", typ: $Bool, tag: ""}, {prop: "simple_keys", name: "simple_keys", pkg: "gopkg.in/yaml.v2", typ: sliceType$4, tag: ""}, {prop: "state", name: "state", pkg: "gopkg.in/yaml.v2", typ: yaml_parser_state_t, tag: ""}, {prop: "states", name: "states", pkg: "gopkg.in/yaml.v2", typ: sliceType$5, tag: ""}, {prop: "marks", name: "marks", pkg: "gopkg.in/yaml.v2", typ: sliceType$6, tag: ""}, {prop: "tag_directives", name: "tag_directives", pkg: "gopkg.in/yaml.v2", typ: sliceType, tag: ""}, {prop: "aliases", name: "aliases", pkg: "gopkg.in/yaml.v2", typ: sliceType$7, tag: ""}, {prop: "document", name: "document", pkg: "gopkg.in/yaml.v2", typ: ptrType, tag: ""}]);
  36287. $init = function() {
  36288. $pkg.$init = function() {};
  36289. /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  36290. $r = bytes.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  36291. $r = encoding.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  36292. $r = base64.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  36293. $r = errors.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  36294. $r = fmt.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  36295. $r = io.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  36296. $r = math.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  36297. $r = os.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  36298. $r = reflect.$init(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  36299. $r = regexp.$init(); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  36300. $r = sort.$init(); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  36301. $r = strconv.$init(); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  36302. $r = strings.$init(); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  36303. $r = sync.$init(); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  36304. $r = time.$init(); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  36305. $r = unicode.$init(); /* */ $s = 16; case 16: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  36306. $r = utf8.$init(); /* */ $s = 17; case 17: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  36307. zeroValue = new reflect.Value.ptr();
  36308. fieldMapMutex = new sync.RWMutex.ptr();
  36309. mapItemType = reflect.TypeOf((x = new MapItem.ptr($ifaceNil, $ifaceNil), new x.constructor.elem(x)));
  36310. durationType = reflect.TypeOf(new time.Duration(0, 0));
  36311. defaultMapType = reflect.TypeOf(new mapType((_map = new $Map(), _map)));
  36312. _r = defaultMapType.Elem(); /* */ $s = 18; case 18: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  36313. ifaceType = _r;
  36314. _r$1 = regexp.MustCompile("^[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+(?:\\.[0-9_]*)?$"); /* */ $s = 19; case 19: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  36315. base60float = _r$1;
  36316. default_tag_directives = new sliceType([new yaml_tag_directive_t.ptr(new sliceType$1($stringToBytes("!")), new sliceType$1($stringToBytes("!"))), new yaml_tag_directive_t.ptr(new sliceType$1($stringToBytes("!!")), new sliceType$1($stringToBytes("tag:yaml.org,2002:")))]);
  36317. resolveTable = $makeSlice(sliceType$1, 256);
  36318. resolveMap = new $Map();
  36319. structMap = new $Map();
  36320. init();
  36321. /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
  36322. };
  36323. $pkg.$init = $init;
  36324. return $pkg;
  36325. })();
  36326. $packages["hash"] = (function() {
  36327. var $pkg = {}, $init, io, Hash, sliceType;
  36328. io = $packages["io"];
  36329. Hash = $pkg.Hash = $newType(8, $kindInterface, "hash.Hash", "Hash", "hash", null);
  36330. sliceType = $sliceType($Uint8);
  36331. Hash.init([{prop: "BlockSize", name: "BlockSize", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Reset", name: "Reset", pkg: "", typ: $funcType([], [], false)}, {prop: "Size", name: "Size", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Sum", name: "Sum", pkg: "", typ: $funcType([sliceType], [sliceType], false)}, {prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType], [$Int, $error], false)}]);
  36332. $init = function() {
  36333. $pkg.$init = function() {};
  36334. /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  36335. $r = io.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  36336. /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
  36337. };
  36338. $pkg.$init = $init;
  36339. return $pkg;
  36340. })();
  36341. $packages["hash/fnv"] = (function() {
  36342. var $pkg = {}, $init, hash, sum32, ptrType, sliceType, New32;
  36343. hash = $packages["hash"];
  36344. sum32 = $pkg.sum32 = $newType(4, $kindUint32, "fnv.sum32", "sum32", "hash/fnv", null);
  36345. ptrType = $ptrType(sum32);
  36346. sliceType = $sliceType($Uint8);
  36347. New32 = function() {
  36348. var $ptr, s, s_ptr;
  36349. s = 2166136261;
  36350. return (s_ptr || (s_ptr = new ptrType(function() { return s; }, function($v) { s = $v; })));
  36351. };
  36352. $pkg.New32 = New32;
  36353. $ptrType(sum32).prototype.Reset = function() {
  36354. var $ptr, s;
  36355. s = this;
  36356. s.$set(2166136261);
  36357. };
  36358. $ptrType(sum32).prototype.Sum32 = function() {
  36359. var $ptr, s;
  36360. s = this;
  36361. return (s.$get() >>> 0);
  36362. };
  36363. $ptrType(sum32).prototype.Write = function(data) {
  36364. var $ptr, _i, _ref, c, data, hash$1, s, x;
  36365. s = this;
  36366. hash$1 = s.$get();
  36367. _ref = data;
  36368. _i = 0;
  36369. while (true) {
  36370. if (!(_i < _ref.$length)) { break; }
  36371. c = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]);
  36372. hash$1 = (x = 16777619, (((hash$1 >>> 16 << 16) * x >>> 0) + (hash$1 << 16 >>> 16) * x) >>> 0);
  36373. hash$1 = (hash$1 ^ ((c >>> 0))) >>> 0;
  36374. _i++;
  36375. }
  36376. s.$set(hash$1);
  36377. return [data.$length, $ifaceNil];
  36378. };
  36379. $ptrType(sum32).prototype.Size = function() {
  36380. var $ptr, s;
  36381. s = this;
  36382. return 4;
  36383. };
  36384. $ptrType(sum32).prototype.BlockSize = function() {
  36385. var $ptr, s;
  36386. s = this;
  36387. return 1;
  36388. };
  36389. $ptrType(sum32).prototype.Sum = function(in$1) {
  36390. var $ptr, in$1, s, v;
  36391. s = this;
  36392. v = (s.$get() >>> 0);
  36393. return $append(in$1, ((v >>> 24 >>> 0) << 24 >>> 24), ((v >>> 16 >>> 0) << 24 >>> 24), ((v >>> 8 >>> 0) << 24 >>> 24), (v << 24 >>> 24));
  36394. };
  36395. ptrType.methods = [{prop: "Reset", name: "Reset", pkg: "", typ: $funcType([], [], false)}, {prop: "Sum32", name: "Sum32", pkg: "", typ: $funcType([], [$Uint32], false)}, {prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType], [$Int, $error], false)}, {prop: "Size", name: "Size", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "BlockSize", name: "BlockSize", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Sum", name: "Sum", pkg: "", typ: $funcType([sliceType], [sliceType], false)}];
  36396. $init = function() {
  36397. $pkg.$init = function() {};
  36398. /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  36399. $r = hash.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  36400. /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
  36401. };
  36402. $pkg.$init = $init;
  36403. return $pkg;
  36404. })();
  36405. $packages["ypk/halt"] = (function() {
  36406. var $pkg = {}, $init, fmt, sliceType, As;
  36407. fmt = $packages["fmt"];
  36408. sliceType = $sliceType($emptyInterface);
  36409. As = function(code, msg) {
  36410. var $ptr, _arg, _arg$1, _r, _r$1, code, msg, $s, $r;
  36411. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _arg = $f._arg; _arg$1 = $f._arg$1; _r = $f._r; _r$1 = $f._r$1; code = $f.code; msg = $f.msg; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  36412. _arg = new $Int(code);
  36413. _r = fmt.Sprint(msg); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  36414. _arg$1 = new $String(_r);
  36415. _r$1 = fmt.Sprintln(new sliceType([new $String("halt"), _arg, new $String(":"), _arg$1])); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  36416. $panic(new $String(_r$1));
  36417. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: As }; } $f.$ptr = $ptr; $f._arg = _arg; $f._arg$1 = _arg$1; $f._r = _r; $f._r$1 = _r$1; $f.code = code; $f.msg = msg; $f.$s = $s; $f.$r = $r; return $f;
  36418. };
  36419. $pkg.As = As;
  36420. $init = function() {
  36421. $pkg.$init = function() {};
  36422. /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  36423. $r = fmt.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  36424. /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
  36425. };
  36426. $pkg.$init = $init;
  36427. return $pkg;
  36428. })();
  36429. $packages["sim3/ncl/std"] = (function() {
  36430. var $pkg = {}, $init, fmt, reflect, ncl, tri, sync, assert, halt, any2, any3, mux, demux, power, probe, board, trig, out, in$1, point, structType, sliceType, ptrType, ptrType$1, ptrType$2, ptrType$4, ptrType$5, ptrType$6, sliceType$2, ptrType$7, ptrType$8, ptrType$9, chanType, funcType, ptrType$10, funcType$1, ptrType$11, ptrType$12, mapType, sliceType$3, ptrType$13, mapType$1, sliceType$4, ptrType$14, sliceType$5, Not, Buffer, CycleRight, CycleLeft, AndNot, OrNot, Cmp, Sum3, Sum3r, Car3s, Car3sr, Car3m, Mux, Demux, Probe, Source, init, Board, Trigger, pt, NewOut, NewIn;
  36431. fmt = $packages["fmt"];
  36432. reflect = $packages["reflect"];
  36433. ncl = $packages["sim3/ncl"];
  36434. tri = $packages["sim3/tri"];
  36435. sync = $packages["sync"];
  36436. assert = $packages["ypk/assert"];
  36437. halt = $packages["ypk/halt"];
  36438. any2 = $pkg.any2 = $newType(0, $kindStruct, "std.any2", "any2", "sim3/ncl/std", function(typ_, I_, O_, fn_) {
  36439. this.$val = this;
  36440. if (arguments.length === 0) {
  36441. this.typ = "";
  36442. this.I = $ifaceNil;
  36443. this.O = $ifaceNil;
  36444. this.fn = $throwNilPointerError;
  36445. return;
  36446. }
  36447. this.typ = typ_;
  36448. this.I = I_;
  36449. this.O = O_;
  36450. this.fn = fn_;
  36451. });
  36452. any3 = $pkg.any3 = $newType(0, $kindStruct, "std.any3", "any3", "sim3/ncl/std", function(typ_, A_, B_, O_, fn_) {
  36453. this.$val = this;
  36454. if (arguments.length === 0) {
  36455. this.typ = "";
  36456. this.A = $ifaceNil;
  36457. this.B = $ifaceNil;
  36458. this.O = $ifaceNil;
  36459. this.fn = $throwNilPointerError;
  36460. return;
  36461. }
  36462. this.typ = typ_;
  36463. this.A = A_;
  36464. this.B = B_;
  36465. this.O = O_;
  36466. this.fn = fn_;
  36467. });
  36468. mux = $pkg.mux = $newType(0, $kindStruct, "std.mux", "mux", "sim3/ncl/std", function(T_, N_, F_, A_, B_) {
  36469. this.$val = this;
  36470. if (arguments.length === 0) {
  36471. this.T = $ifaceNil;
  36472. this.N = $ifaceNil;
  36473. this.F = $ifaceNil;
  36474. this.A = $ifaceNil;
  36475. this.B = $ifaceNil;
  36476. return;
  36477. }
  36478. this.T = T_;
  36479. this.N = N_;
  36480. this.F = F_;
  36481. this.A = A_;
  36482. this.B = B_;
  36483. });
  36484. demux = $pkg.demux = $newType(0, $kindStruct, "std.demux", "demux", "sim3/ncl/std", function(T_, N_, F_, A_, B_) {
  36485. this.$val = this;
  36486. if (arguments.length === 0) {
  36487. this.T = $ifaceNil;
  36488. this.N = $ifaceNil;
  36489. this.F = $ifaceNil;
  36490. this.A = $ifaceNil;
  36491. this.B = $ifaceNil;
  36492. return;
  36493. }
  36494. this.T = T_;
  36495. this.N = N_;
  36496. this.F = F_;
  36497. this.A = A_;
  36498. this.B = B_;
  36499. });
  36500. power = $pkg.power = $newType(0, $kindStruct, "std.power", "power", "sim3/ncl/std", function(Element_, O_, value_) {
  36501. this.$val = this;
  36502. if (arguments.length === 0) {
  36503. this.Element = $ifaceNil;
  36504. this.O = $ifaceNil;
  36505. this.value = new tri.Trit.ptr();
  36506. return;
  36507. }
  36508. this.Element = Element_;
  36509. this.O = O_;
  36510. this.value = value_;
  36511. });
  36512. probe = $pkg.probe = $newType(0, $kindStruct, "std.probe", "probe", "sim3/ncl/std", function(Element_, I_, name_) {
  36513. this.$val = this;
  36514. if (arguments.length === 0) {
  36515. this.Element = $ifaceNil;
  36516. this.I = $ifaceNil;
  36517. this.name = "";
  36518. return;
  36519. }
  36520. this.Element = Element_;
  36521. this.I = I_;
  36522. this.name = name_;
  36523. });
  36524. board = $pkg.board = $newType(0, $kindStruct, "std.board", "board", "sim3/ncl/std", function(Compound_, points_, pins_, _pins_) {
  36525. this.$val = this;
  36526. if (arguments.length === 0) {
  36527. this.Compound = $ifaceNil;
  36528. this.points = false;
  36529. this.pins = false;
  36530. this._pins = false;
  36531. return;
  36532. }
  36533. this.Compound = Compound_;
  36534. this.points = points_;
  36535. this.pins = pins_;
  36536. this._pins = _pins_;
  36537. });
  36538. trig = $pkg.trig = $newType(0, $kindStruct, "std.trig", "trig", "sim3/ncl/std", function(D_, S_, data_) {
  36539. this.$val = this;
  36540. if (arguments.length === 0) {
  36541. this.D = $ifaceNil;
  36542. this.S = $ifaceNil;
  36543. this.data = new tri.Trit.ptr();
  36544. return;
  36545. }
  36546. this.D = D_;
  36547. this.S = S_;
  36548. this.data = data_;
  36549. });
  36550. out = $pkg.out = $newType(0, $kindStruct, "std.out", "out", "sim3/ncl/std", function(Out_, val_, owner_) {
  36551. this.$val = this;
  36552. if (arguments.length === 0) {
  36553. this.Out = $ifaceNil;
  36554. this.val = ptrType.nil;
  36555. this.owner = $ifaceNil;
  36556. return;
  36557. }
  36558. this.Out = Out_;
  36559. this.val = val_;
  36560. this.owner = owner_;
  36561. });
  36562. in$1 = $pkg.in = $newType(0, $kindStruct, "std.in", "in", "sim3/ncl/std", function(In_, val_, meta_, owner_) {
  36563. this.$val = this;
  36564. if (arguments.length === 0) {
  36565. this.In = $ifaceNil;
  36566. this.val = ptrType.nil;
  36567. this.meta = chanType.nil;
  36568. this.owner = $ifaceNil;
  36569. return;
  36570. }
  36571. this.In = In_;
  36572. this.val = val_;
  36573. this.meta = meta_;
  36574. this.owner = owner_;
  36575. });
  36576. point = $pkg.point = $newType(0, $kindStruct, "std.point", "point", "sim3/ncl/std", function(pins_, name_) {
  36577. this.$val = this;
  36578. if (arguments.length === 0) {
  36579. this.pins = sliceType$2.nil;
  36580. this.name = "";
  36581. return;
  36582. }
  36583. this.pins = pins_;
  36584. this.name = name_;
  36585. });
  36586. structType = $structType([{prop: "Pos", name: "Pos", pkg: "", typ: ncl.Element, tag: ""}, {prop: "Neg", name: "Neg", pkg: "", typ: ncl.Element, tag: ""}, {prop: "Ground", name: "Ground", pkg: "", typ: ncl.Element, tag: ""}]);
  36587. sliceType = $sliceType($emptyInterface);
  36588. ptrType = $ptrType(tri.Trit);
  36589. ptrType$1 = $ptrType(probe);
  36590. ptrType$2 = $ptrType(power);
  36591. ptrType$4 = $ptrType(any2);
  36592. ptrType$5 = $ptrType(in$1);
  36593. ptrType$6 = $ptrType(out);
  36594. sliceType$2 = $sliceType(ncl.Pin);
  36595. ptrType$7 = $ptrType($Uint32);
  36596. ptrType$8 = $ptrType(point);
  36597. ptrType$9 = $ptrType(sync.WaitGroup);
  36598. chanType = $chanType(ptrType$9, false, false);
  36599. funcType = $funcType([tri.Trit], [tri.Trit], false);
  36600. ptrType$10 = $ptrType(any3);
  36601. funcType$1 = $funcType([tri.Trit, tri.Trit], [tri.Trit], false);
  36602. ptrType$11 = $ptrType(mux);
  36603. ptrType$12 = $ptrType(demux);
  36604. mapType = $mapType(ncl.PinCode, ncl.Pin);
  36605. sliceType$3 = $sliceType(mapType);
  36606. ptrType$13 = $ptrType(board);
  36607. mapType$1 = $mapType($String, ncl.Point);
  36608. sliceType$4 = $sliceType(ptrType);
  36609. ptrType$14 = $ptrType(trig);
  36610. sliceType$5 = $sliceType($String);
  36611. any2.ptr.prototype.Pin = function(c) {
  36612. var $ptr, _ref, c, e, $s, $r;
  36613. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _ref = $f._ref; c = $f.c; e = $f.e; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  36614. e = this;
  36615. _ref = c;
  36616. /* */ if (_ref === 0) { $s = 1; continue; }
  36617. /* */ if (_ref === 1) { $s = 2; continue; }
  36618. /* */ $s = 3; continue;
  36619. /* if (_ref === 0) { */ case 1:
  36620. return e.I;
  36621. $s = 4; continue;
  36622. /* } else if (_ref === 1) { */ case 2:
  36623. return e.O;
  36624. $s = 4; continue;
  36625. /* } else { */ case 3:
  36626. $r = halt.As(100, new sliceType([])); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  36627. /* } */ case 4:
  36628. $panic(new $Int(0));
  36629. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: any2.ptr.prototype.Pin }; } $f.$ptr = $ptr; $f._ref = _ref; $f.c = c; $f.e = e; $f.$s = $s; $f.$r = $r; return $f;
  36630. };
  36631. any2.prototype.Pin = function(c) { return this.$val.Pin(c); };
  36632. any2.ptr.prototype.String = function() {
  36633. var $ptr, _r, e, $s, $r;
  36634. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; e = $f.e; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  36635. e = this;
  36636. _r = fmt.Sprint(new sliceType([new $String(e.typ)])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  36637. return _r;
  36638. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: any2.ptr.prototype.String }; } $f.$ptr = $ptr; $f._r = _r; $f.e = e; $f.$s = $s; $f.$r = $r; return $f;
  36639. };
  36640. any2.prototype.String = function() { return this.$val.String(); };
  36641. any2.ptr.prototype.init = function() {
  36642. var $ptr, _r, e, $s, $r;
  36643. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; e = $f.e; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  36644. e = this;
  36645. _r = NewIn(e); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  36646. e.I = _r;
  36647. e.O = NewOut(e);
  36648. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: any2.ptr.prototype.init }; } $f.$ptr = $ptr; $f._r = _r; $f.e = e; $f.$s = $s; $f.$r = $r; return $f;
  36649. };
  36650. any2.prototype.init = function() { return this.$val.init(); };
  36651. any2.ptr.prototype.Do = function() {
  36652. var $ptr, _r, _r$1, e, sig, val, $s, $r;
  36653. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; e = $f.e; sig = $f.sig; val = $f.val; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  36654. val = [val];
  36655. e = this;
  36656. _r = e.I.Select(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  36657. sig = _r;
  36658. /* */ if (!(sig === ptrType.nil)) { $s = 2; continue; }
  36659. /* */ $s = 3; continue;
  36660. /* if (!(sig === ptrType.nil)) { */ case 2:
  36661. _r$1 = e.fn(sig); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  36662. val[0] = $clone(_r$1, tri.Trit);
  36663. $r = e.O.Update(val[0]); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  36664. $s = 4; continue;
  36665. /* } else { */ case 3:
  36666. $r = e.O.Update(ptrType.nil); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  36667. /* } */ case 4:
  36668. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: any2.ptr.prototype.Do }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f.e = e; $f.sig = sig; $f.val = val; $f.$s = $s; $f.$r = $r; return $f;
  36669. };
  36670. any2.prototype.Do = function() { return this.$val.Do(); };
  36671. Not = function() {
  36672. var $ptr, e, f, $s, $r;
  36673. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; e = $f.e; f = $f.f; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  36674. f = (function(p) {
  36675. var $ptr, p, q;
  36676. q = new tri.Trit.ptr();
  36677. $copy(q, tri.Not(p), tri.Trit);
  36678. return q;
  36679. });
  36680. e = new any2.ptr("\xC2\xAC", $ifaceNil, $ifaceNil, f);
  36681. $r = e.init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  36682. return e;
  36683. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Not }; } $f.$ptr = $ptr; $f.e = e; $f.f = f; $f.$s = $s; $f.$r = $r; return $f;
  36684. };
  36685. $pkg.Not = Not;
  36686. Buffer = function() {
  36687. var $ptr, e, f, $s, $r;
  36688. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; e = $f.e; f = $f.f; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  36689. f = (function(p) {
  36690. var $ptr, p, q;
  36691. q = new tri.Trit.ptr();
  36692. $copy(q, p, tri.Trit);
  36693. return q;
  36694. });
  36695. e = new any2.ptr("BUF", $ifaceNil, $ifaceNil, f);
  36696. $r = e.init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  36697. return e;
  36698. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Buffer }; } $f.$ptr = $ptr; $f.e = e; $f.f = f; $f.$s = $s; $f.$r = $r; return $f;
  36699. };
  36700. $pkg.Buffer = Buffer;
  36701. CycleRight = function() {
  36702. var $ptr, e, f, $s, $r;
  36703. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; e = $f.e; f = $f.f; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  36704. f = (function(p) {
  36705. var $ptr, p, q;
  36706. q = new tri.Trit.ptr();
  36707. $copy(q, tri.CNot(p), tri.Trit);
  36708. return q;
  36709. });
  36710. e = new any2.ptr("\xE2\x86\x92", $ifaceNil, $ifaceNil, f);
  36711. $r = e.init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  36712. return e;
  36713. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: CycleRight }; } $f.$ptr = $ptr; $f.e = e; $f.f = f; $f.$s = $s; $f.$r = $r; return $f;
  36714. };
  36715. $pkg.CycleRight = CycleRight;
  36716. CycleLeft = function() {
  36717. var $ptr, e, f, $s, $r;
  36718. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; e = $f.e; f = $f.f; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  36719. f = (function(p) {
  36720. var $ptr, p, q;
  36721. q = new tri.Trit.ptr();
  36722. $copy(q, tri.CNot(tri.CNot(p)), tri.Trit);
  36723. return q;
  36724. });
  36725. e = new any2.ptr("\xE2\x86\x90", $ifaceNil, $ifaceNil, f);
  36726. $r = e.init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  36727. return e;
  36728. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: CycleLeft }; } $f.$ptr = $ptr; $f.e = e; $f.f = f; $f.$s = $s; $f.$r = $r; return $f;
  36729. };
  36730. $pkg.CycleLeft = CycleLeft;
  36731. any3.ptr.prototype.Pin = function(c) {
  36732. var $ptr, _ref, c, e, $s, $r;
  36733. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _ref = $f._ref; c = $f.c; e = $f.e; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  36734. e = this;
  36735. _ref = c;
  36736. /* */ if (_ref === 4) { $s = 1; continue; }
  36737. /* */ if (_ref === 1) { $s = 2; continue; }
  36738. /* */ if (_ref === 5) { $s = 3; continue; }
  36739. /* */ $s = 4; continue;
  36740. /* if (_ref === 4) { */ case 1:
  36741. return e.A;
  36742. $s = 5; continue;
  36743. /* } else if (_ref === 1) { */ case 2:
  36744. return e.O;
  36745. $s = 5; continue;
  36746. /* } else if (_ref === 5) { */ case 3:
  36747. return e.B;
  36748. $s = 5; continue;
  36749. /* } else { */ case 4:
  36750. $r = halt.As(100, new sliceType([])); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  36751. /* } */ case 5:
  36752. $panic(new $Int(0));
  36753. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: any3.ptr.prototype.Pin }; } $f.$ptr = $ptr; $f._ref = _ref; $f.c = c; $f.e = e; $f.$s = $s; $f.$r = $r; return $f;
  36754. };
  36755. any3.prototype.Pin = function(c) { return this.$val.Pin(c); };
  36756. any3.ptr.prototype.Do = function() {
  36757. var $ptr, _r, _r$1, _r$2, a, b, e, val, $s, $r;
  36758. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; a = $f.a; b = $f.b; e = $f.e; val = $f.val; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  36759. val = [val];
  36760. e = this;
  36761. _r = e.A.Select(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  36762. a = _r;
  36763. _r$1 = e.B.Select(); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  36764. b = _r$1;
  36765. /* */ if (!(a === ptrType.nil) && !(b === ptrType.nil)) { $s = 3; continue; }
  36766. /* */ $s = 4; continue;
  36767. /* if (!(a === ptrType.nil) && !(b === ptrType.nil)) { */ case 3:
  36768. _r$2 = e.fn(a, b); /* */ $s = 6; case 6: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  36769. val[0] = $clone(_r$2, tri.Trit);
  36770. $r = e.O.Update(val[0]); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  36771. $s = 5; continue;
  36772. /* } else { */ case 4:
  36773. $r = e.O.Update(ptrType.nil); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  36774. /* } */ case 5:
  36775. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: any3.ptr.prototype.Do }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f.a = a; $f.b = b; $f.e = e; $f.val = val; $f.$s = $s; $f.$r = $r; return $f;
  36776. };
  36777. any3.prototype.Do = function() { return this.$val.Do(); };
  36778. any3.ptr.prototype.String = function() {
  36779. var $ptr, _r, e, $s, $r;
  36780. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; e = $f.e; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  36781. e = this;
  36782. _r = fmt.Sprint(new sliceType([new $String(e.typ)])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  36783. return _r;
  36784. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: any3.ptr.prototype.String }; } $f.$ptr = $ptr; $f._r = _r; $f.e = e; $f.$s = $s; $f.$r = $r; return $f;
  36785. };
  36786. any3.prototype.String = function() { return this.$val.String(); };
  36787. any3.ptr.prototype.init = function() {
  36788. var $ptr, _r, _r$1, e, $s, $r;
  36789. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; e = $f.e; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  36790. e = this;
  36791. _r = NewIn(e); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  36792. e.A = _r;
  36793. _r$1 = NewIn(e); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  36794. e.B = _r$1;
  36795. e.O = NewOut(e);
  36796. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: any3.ptr.prototype.init }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f.e = e; $f.$s = $s; $f.$r = $r; return $f;
  36797. };
  36798. any3.prototype.init = function() { return this.$val.init(); };
  36799. AndNot = function() {
  36800. var $ptr, e, f, $s, $r;
  36801. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; e = $f.e; f = $f.f; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  36802. f = (function(a, b) {
  36803. var $ptr, a, b;
  36804. return tri.Not(tri.And(a, b));
  36805. });
  36806. e = new any3.ptr("\xC2\xAC&", $ifaceNil, $ifaceNil, $ifaceNil, f);
  36807. $r = e.init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  36808. return e;
  36809. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: AndNot }; } $f.$ptr = $ptr; $f.e = e; $f.f = f; $f.$s = $s; $f.$r = $r; return $f;
  36810. };
  36811. $pkg.AndNot = AndNot;
  36812. OrNot = function() {
  36813. var $ptr, e, f, $s, $r;
  36814. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; e = $f.e; f = $f.f; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  36815. f = (function(a, b) {
  36816. var $ptr, a, b;
  36817. return tri.Not(tri.Or(a, b));
  36818. });
  36819. e = new any3.ptr("\xC2\xAC|", $ifaceNil, $ifaceNil, $ifaceNil, f);
  36820. $r = e.init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  36821. return e;
  36822. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: OrNot }; } $f.$ptr = $ptr; $f.e = e; $f.f = f; $f.$s = $s; $f.$r = $r; return $f;
  36823. };
  36824. $pkg.OrNot = OrNot;
  36825. Cmp = function() {
  36826. var $ptr, e, f, $s, $r;
  36827. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; e = $f.e; f = $f.f; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  36828. f = (function(a, b) {
  36829. var $ptr, a, b;
  36830. if ($equal(a, b, tri.Trit)) {
  36831. return tri.NIL;
  36832. } else if (tri.Ord(a) > tri.Ord(b)) {
  36833. return tri.TRUE;
  36834. } else if (tri.Ord(a) < tri.Ord(b)) {
  36835. return tri.FALSE;
  36836. }
  36837. $panic(new $Int(0));
  36838. });
  36839. e = new any3.ptr("<=>", $ifaceNil, $ifaceNil, $ifaceNil, f);
  36840. $r = e.init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  36841. return e;
  36842. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Cmp }; } $f.$ptr = $ptr; $f.e = e; $f.f = f; $f.$s = $s; $f.$r = $r; return $f;
  36843. };
  36844. $pkg.Cmp = Cmp;
  36845. Sum3 = function() {
  36846. var $ptr, e, f, $s, $r;
  36847. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; e = $f.e; f = $f.f; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  36848. f = (function(a, b) {
  36849. var $ptr, a, b;
  36850. return tri.Sum3(a, b);
  36851. });
  36852. e = new any3.ptr("SUM3", $ifaceNil, $ifaceNil, $ifaceNil, f);
  36853. $r = e.init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  36854. return e;
  36855. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Sum3 }; } $f.$ptr = $ptr; $f.e = e; $f.f = f; $f.$s = $s; $f.$r = $r; return $f;
  36856. };
  36857. $pkg.Sum3 = Sum3;
  36858. Sum3r = function() {
  36859. var $ptr, e, f, $s, $r;
  36860. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; e = $f.e; f = $f.f; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  36861. f = (function(a, b) {
  36862. var $ptr, a, b;
  36863. return tri.Sum3r(a, b);
  36864. });
  36865. e = new any3.ptr("SUM3r", $ifaceNil, $ifaceNil, $ifaceNil, f);
  36866. $r = e.init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  36867. return e;
  36868. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Sum3r }; } $f.$ptr = $ptr; $f.e = e; $f.f = f; $f.$s = $s; $f.$r = $r; return $f;
  36869. };
  36870. $pkg.Sum3r = Sum3r;
  36871. Car3s = function() {
  36872. var $ptr, e, f, $s, $r;
  36873. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; e = $f.e; f = $f.f; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  36874. f = (function(a, b) {
  36875. var $ptr, a, b;
  36876. return tri.CarryS(a, b);
  36877. });
  36878. e = new any3.ptr("CAR3s", $ifaceNil, $ifaceNil, $ifaceNil, f);
  36879. $r = e.init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  36880. return e;
  36881. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Car3s }; } $f.$ptr = $ptr; $f.e = e; $f.f = f; $f.$s = $s; $f.$r = $r; return $f;
  36882. };
  36883. $pkg.Car3s = Car3s;
  36884. Car3sr = function() {
  36885. var $ptr, e, f, $s, $r;
  36886. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; e = $f.e; f = $f.f; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  36887. f = (function(a, b) {
  36888. var $ptr, a, b;
  36889. return tri.CarrySr(a, b);
  36890. });
  36891. e = new any3.ptr("CAR3sr", $ifaceNil, $ifaceNil, $ifaceNil, f);
  36892. $r = e.init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  36893. return e;
  36894. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Car3sr }; } $f.$ptr = $ptr; $f.e = e; $f.f = f; $f.$s = $s; $f.$r = $r; return $f;
  36895. };
  36896. $pkg.Car3sr = Car3sr;
  36897. Car3m = function() {
  36898. var $ptr, e, f, $s, $r;
  36899. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; e = $f.e; f = $f.f; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  36900. f = (function(a, b) {
  36901. var $ptr, a, b;
  36902. return tri.CarryM(a, b);
  36903. });
  36904. e = new any3.ptr("CAR3m", $ifaceNil, $ifaceNil, $ifaceNil, f);
  36905. $r = e.init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  36906. return e;
  36907. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Car3m }; } $f.$ptr = $ptr; $f.e = e; $f.f = f; $f.$s = $s; $f.$r = $r; return $f;
  36908. };
  36909. $pkg.Car3m = Car3m;
  36910. mux.ptr.prototype.Pin = function(c) {
  36911. var $ptr, _ref, c, e, $s, $r;
  36912. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _ref = $f._ref; c = $f.c; e = $f.e; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  36913. e = this;
  36914. _ref = c;
  36915. /* */ if (_ref === 4) { $s = 1; continue; }
  36916. /* */ if (_ref === 6) { $s = 2; continue; }
  36917. /* */ if (_ref === 7) { $s = 3; continue; }
  36918. /* */ if (_ref === 8) { $s = 4; continue; }
  36919. /* */ if (_ref === 5) { $s = 5; continue; }
  36920. /* */ $s = 6; continue;
  36921. /* if (_ref === 4) { */ case 1:
  36922. return e.A;
  36923. $s = 7; continue;
  36924. /* } else if (_ref === 6) { */ case 2:
  36925. return e.T;
  36926. $s = 7; continue;
  36927. /* } else if (_ref === 7) { */ case 3:
  36928. return e.N;
  36929. $s = 7; continue;
  36930. /* } else if (_ref === 8) { */ case 4:
  36931. return e.F;
  36932. $s = 7; continue;
  36933. /* } else if (_ref === 5) { */ case 5:
  36934. return e.B;
  36935. $s = 7; continue;
  36936. /* } else { */ case 6:
  36937. $r = halt.As(100, new sliceType([])); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  36938. /* } */ case 7:
  36939. $panic(new $Int(0));
  36940. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: mux.ptr.prototype.Pin }; } $f.$ptr = $ptr; $f._ref = _ref; $f.c = c; $f.e = e; $f.$s = $s; $f.$r = $r; return $f;
  36941. };
  36942. mux.prototype.Pin = function(c) { return this.$val.Pin(c); };
  36943. mux.ptr.prototype.init = function() {
  36944. var $ptr, _r, _r$1, _r$2, _r$3, e, $s, $r;
  36945. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; e = $f.e; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  36946. e = this;
  36947. _r = NewIn(e); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  36948. e.A = _r;
  36949. e.B = NewOut(e);
  36950. _r$1 = NewIn(e); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  36951. e.T = _r$1;
  36952. _r$2 = NewIn(e); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  36953. e.N = _r$2;
  36954. _r$3 = NewIn(e); /* */ $s = 4; case 4: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  36955. e.F = _r$3;
  36956. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: mux.ptr.prototype.init }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f.e = e; $f.$s = $s; $f.$r = $r; return $f;
  36957. };
  36958. mux.prototype.init = function() { return this.$val.init(); };
  36959. mux.ptr.prototype.Do = function() {
  36960. var $ptr, _a, _r, _r$1, _r$2, _r$3, a, e, val, $s, $r;
  36961. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _a = $f._a; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; a = $f.a; e = $f.e; val = $f.val; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  36962. e = this;
  36963. _r = e.A.Select(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  36964. _a = _r;
  36965. val = ptrType.nil;
  36966. /* */ if (!(_a === ptrType.nil)) { $s = 2; continue; }
  36967. /* */ $s = 3; continue;
  36968. /* if (!(_a === ptrType.nil)) { */ case 2:
  36969. a = $clone(_a, tri.Trit);
  36970. /* */ if ($equal(a, tri.TRUE, tri.Trit)) { $s = 4; continue; }
  36971. /* */ if ($equal(a, tri.NIL, tri.Trit)) { $s = 5; continue; }
  36972. /* */ if ($equal(a, tri.FALSE, tri.Trit)) { $s = 6; continue; }
  36973. /* */ $s = 7; continue;
  36974. /* if ($equal(a, tri.TRUE, tri.Trit)) { */ case 4:
  36975. _r$1 = e.T.Select(); /* */ $s = 8; case 8: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  36976. val = _r$1;
  36977. $s = 7; continue;
  36978. /* } else if ($equal(a, tri.NIL, tri.Trit)) { */ case 5:
  36979. _r$2 = e.N.Select(); /* */ $s = 9; case 9: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  36980. val = _r$2;
  36981. $s = 7; continue;
  36982. /* } else if ($equal(a, tri.FALSE, tri.Trit)) { */ case 6:
  36983. _r$3 = e.F.Select(); /* */ $s = 10; case 10: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  36984. val = _r$3;
  36985. /* } */ case 7:
  36986. /* } */ case 3:
  36987. $r = e.B.Update(val); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  36988. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: mux.ptr.prototype.Do }; } $f.$ptr = $ptr; $f._a = _a; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f.a = a; $f.e = e; $f.val = val; $f.$s = $s; $f.$r = $r; return $f;
  36989. };
  36990. mux.prototype.Do = function() { return this.$val.Do(); };
  36991. demux.ptr.prototype.Pin = function(c) {
  36992. var $ptr, _ref, c, e, $s, $r;
  36993. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _ref = $f._ref; c = $f.c; e = $f.e; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  36994. e = this;
  36995. _ref = c;
  36996. /* */ if (_ref === 4) { $s = 1; continue; }
  36997. /* */ if (_ref === 6) { $s = 2; continue; }
  36998. /* */ if (_ref === 7) { $s = 3; continue; }
  36999. /* */ if (_ref === 8) { $s = 4; continue; }
  37000. /* */ if (_ref === 5) { $s = 5; continue; }
  37001. /* */ $s = 6; continue;
  37002. /* if (_ref === 4) { */ case 1:
  37003. return e.A;
  37004. $s = 7; continue;
  37005. /* } else if (_ref === 6) { */ case 2:
  37006. return e.T;
  37007. $s = 7; continue;
  37008. /* } else if (_ref === 7) { */ case 3:
  37009. return e.N;
  37010. $s = 7; continue;
  37011. /* } else if (_ref === 8) { */ case 4:
  37012. return e.F;
  37013. $s = 7; continue;
  37014. /* } else if (_ref === 5) { */ case 5:
  37015. return e.B;
  37016. $s = 7; continue;
  37017. /* } else { */ case 6:
  37018. $r = halt.As(100, new sliceType([])); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  37019. /* } */ case 7:
  37020. $panic(new $Int(0));
  37021. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: demux.ptr.prototype.Pin }; } $f.$ptr = $ptr; $f._ref = _ref; $f.c = c; $f.e = e; $f.$s = $s; $f.$r = $r; return $f;
  37022. };
  37023. demux.prototype.Pin = function(c) { return this.$val.Pin(c); };
  37024. demux.ptr.prototype.init = function() {
  37025. var $ptr, _r, _r$1, e, $s, $r;
  37026. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; e = $f.e; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  37027. e = this;
  37028. _r = NewIn(e); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  37029. e.A = _r;
  37030. _r$1 = NewIn(e); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  37031. e.B = _r$1;
  37032. e.T = NewOut(e);
  37033. e.N = NewOut(e);
  37034. e.F = NewOut(e);
  37035. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: demux.ptr.prototype.init }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f.e = e; $f.$s = $s; $f.$r = $r; return $f;
  37036. };
  37037. demux.prototype.init = function() { return this.$val.init(); };
  37038. demux.ptr.prototype.Do = function() {
  37039. var $ptr, _a, _r, _r$1, a, b, e, reset, $s, $r;
  37040. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _a = $f._a; _r = $f._r; _r$1 = $f._r$1; a = $f.a; b = $f.b; e = $f.e; reset = $f.reset; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  37041. e = this;
  37042. reset = (function $b(e$1) {
  37043. var $ptr, e$1, $s, $r;
  37044. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; e$1 = $f.e$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  37045. $r = e$1.T.Update(ptrType.nil); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  37046. $r = e$1.N.Update(ptrType.nil); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  37047. $r = e$1.F.Update(ptrType.nil); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  37048. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: $b }; } $f.$ptr = $ptr; $f.e$1 = e$1; $f.$s = $s; $f.$r = $r; return $f;
  37049. });
  37050. _r = e.A.Select(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  37051. _a = _r;
  37052. /* */ if (!(_a === ptrType.nil)) { $s = 2; continue; }
  37053. /* */ $s = 3; continue;
  37054. /* if (!(_a === ptrType.nil)) { */ case 2:
  37055. _r$1 = e.B.Select(); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  37056. b = _r$1;
  37057. /* */ if (!(b === ptrType.nil)) { $s = 6; continue; }
  37058. /* */ $s = 7; continue;
  37059. /* if (!(b === ptrType.nil)) { */ case 6:
  37060. a = $clone(_a, tri.Trit);
  37061. /* */ if ($equal(a, tri.TRUE, tri.Trit)) { $s = 9; continue; }
  37062. /* */ if ($equal(a, tri.NIL, tri.Trit)) { $s = 10; continue; }
  37063. /* */ if ($equal(a, tri.FALSE, tri.Trit)) { $s = 11; continue; }
  37064. /* */ $s = 12; continue;
  37065. /* if ($equal(a, tri.TRUE, tri.Trit)) { */ case 9:
  37066. $r = e.T.Update(b); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  37067. $s = 12; continue;
  37068. /* } else if ($equal(a, tri.NIL, tri.Trit)) { */ case 10:
  37069. $r = e.N.Update(b); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  37070. $s = 12; continue;
  37071. /* } else if ($equal(a, tri.FALSE, tri.Trit)) { */ case 11:
  37072. $r = e.F.Update(b); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  37073. /* } */ case 12:
  37074. $s = 8; continue;
  37075. /* } else { */ case 7:
  37076. $r = reset(e); /* */ $s = 16; case 16: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  37077. /* } */ case 8:
  37078. $s = 4; continue;
  37079. /* } else { */ case 3:
  37080. $r = reset(e); /* */ $s = 17; case 17: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  37081. /* } */ case 4:
  37082. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: demux.ptr.prototype.Do }; } $f.$ptr = $ptr; $f._a = _a; $f._r = _r; $f._r$1 = _r$1; $f.a = a; $f.b = b; $f.e = e; $f.reset = reset; $f.$s = $s; $f.$r = $r; return $f;
  37083. };
  37084. demux.prototype.Do = function() { return this.$val.Do(); };
  37085. Mux = function() {
  37086. var $ptr, e, $s, $r;
  37087. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; e = $f.e; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  37088. e = new mux.ptr($ifaceNil, $ifaceNil, $ifaceNil, $ifaceNil, $ifaceNil);
  37089. $r = e.init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  37090. return e;
  37091. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Mux }; } $f.$ptr = $ptr; $f.e = e; $f.$s = $s; $f.$r = $r; return $f;
  37092. };
  37093. $pkg.Mux = Mux;
  37094. Demux = function() {
  37095. var $ptr, e, $s, $r;
  37096. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; e = $f.e; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  37097. e = new demux.ptr($ifaceNil, $ifaceNil, $ifaceNil, $ifaceNil, $ifaceNil);
  37098. $r = e.init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  37099. return e;
  37100. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Demux }; } $f.$ptr = $ptr; $f.e = e; $f.$s = $s; $f.$r = $r; return $f;
  37101. };
  37102. $pkg.Demux = Demux;
  37103. power.ptr.prototype.Pin = function(c) {
  37104. var $ptr, c, t, $s, $r;
  37105. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; c = $f.c; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  37106. t = this;
  37107. $r = assert.For(c === 1, 20, new sliceType([])); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  37108. return t.O;
  37109. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: power.ptr.prototype.Pin }; } $f.$ptr = $ptr; $f.c = c; $f.t = t; $f.$s = $s; $f.$r = $r; return $f;
  37110. };
  37111. power.prototype.Pin = function(c) { return this.$val.Pin(c); };
  37112. power.ptr.prototype.Do = function() {
  37113. var $ptr, t, $s, $r;
  37114. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  37115. t = this;
  37116. $r = t.O.Update(t.value); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  37117. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: power.ptr.prototype.Do }; } $f.$ptr = $ptr; $f.t = t; $f.$s = $s; $f.$r = $r; return $f;
  37118. };
  37119. power.prototype.Do = function() { return this.$val.Do(); };
  37120. power.ptr.prototype.String = function() {
  37121. var $ptr, _r, p, x, $s, $r;
  37122. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; p = $f.p; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  37123. p = this;
  37124. _r = fmt.Sprint(new sliceType([(x = p.value, new x.constructor.elem(x))])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  37125. return _r;
  37126. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: power.ptr.prototype.String }; } $f.$ptr = $ptr; $f._r = _r; $f.p = p; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
  37127. };
  37128. power.prototype.String = function() { return this.$val.String(); };
  37129. probe.ptr.prototype.Pin = function(c) {
  37130. var $ptr, c, p, $s, $r;
  37131. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; c = $f.c; p = $f.p; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  37132. p = this;
  37133. $r = assert.For(c === 0, 20, new sliceType([])); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  37134. return p.I;
  37135. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: probe.ptr.prototype.Pin }; } $f.$ptr = $ptr; $f.c = c; $f.p = p; $f.$s = $s; $f.$r = $r; return $f;
  37136. };
  37137. probe.prototype.Pin = function(c) { return this.$val.Pin(c); };
  37138. Probe = function(n) {
  37139. var $ptr, _r, n, ret, $s, $r;
  37140. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; n = $f.n; ret = $f.ret; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  37141. ret = $ifaceNil;
  37142. ret = new probe.ptr($ifaceNil, $ifaceNil, n);
  37143. _r = NewIn(ret); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  37144. $assertType(ret, ptrType$1).I = _r;
  37145. return ret;
  37146. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Probe }; } $f.$ptr = $ptr; $f._r = _r; $f.n = n; $f.ret = ret; $f.$s = $s; $f.$r = $r; return $f;
  37147. };
  37148. $pkg.Probe = Probe;
  37149. probe.ptr.prototype.Do = function() {
  37150. var $ptr, p;
  37151. p = this;
  37152. };
  37153. probe.prototype.Do = function() { return this.$val.Do(); };
  37154. probe.ptr.prototype.String = function() {
  37155. var $ptr, _r, p, $s, $r;
  37156. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; p = $f.p; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  37157. p = this;
  37158. _r = fmt.Sprint(new sliceType([new $String(p.name)])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  37159. return _r;
  37160. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: probe.ptr.prototype.String }; } $f.$ptr = $ptr; $f._r = _r; $f.p = p; $f.$s = $s; $f.$r = $r; return $f;
  37161. };
  37162. probe.prototype.String = function() { return this.$val.String(); };
  37163. Source = function(trit) {
  37164. var $ptr, ret, trit, $s, $r;
  37165. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; ret = $f.ret; trit = $f.trit; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  37166. ret = ptrType$2.nil;
  37167. trit = $clone(trit, tri.Trit);
  37168. ret = new power.ptr($ifaceNil, $ifaceNil, $clone(trit, tri.Trit));
  37169. ret.O = NewOut(ret);
  37170. $r = ret.Do(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  37171. return ret;
  37172. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Source }; } $f.$ptr = $ptr; $f.ret = ret; $f.trit = trit; $f.$s = $s; $f.$r = $r; return $f;
  37173. };
  37174. $pkg.Source = Source;
  37175. init = function() {
  37176. var $ptr, _r, _r$1, _r$2, $s, $r;
  37177. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  37178. _r = Source(tri.TRUE); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  37179. $pkg.Static.Pos = _r;
  37180. _r$1 = Source(tri.FALSE); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  37181. $pkg.Static.Neg = _r$1;
  37182. _r$2 = Source(tri.NIL); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  37183. $pkg.Static.Ground = _r$2;
  37184. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: init }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f.$s = $s; $f.$r = $r; return $f;
  37185. };
  37186. board.ptr.prototype.Pin = function(c) {
  37187. var $ptr, _entry, b, c, ret, $s, $r;
  37188. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _entry = $f._entry; b = $f.b; c = $f.c; ret = $f.ret; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  37189. ret = $ifaceNil;
  37190. b = this;
  37191. ret = (_entry = b.pins[c], _entry !== undefined ? _entry.v : $ifaceNil);
  37192. $r = assert.For(!($interfaceIsEqual(ret, $ifaceNil)), 20, new sliceType([])); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  37193. return ret;
  37194. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: board.ptr.prototype.Pin }; } $f.$ptr = $ptr; $f._entry = _entry; $f.b = b; $f.c = c; $f.ret = ret; $f.$s = $s; $f.$r = $r; return $f;
  37195. };
  37196. board.prototype.Pin = function(c) { return this.$val.Pin(c); };
  37197. board.ptr.prototype.InnerPin = function(c) {
  37198. var $ptr, _entry, b, c, ret, $s, $r;
  37199. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _entry = $f._entry; b = $f.b; c = $f.c; ret = $f.ret; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  37200. ret = $ifaceNil;
  37201. b = this;
  37202. ret = (_entry = b._pins[c], _entry !== undefined ? _entry.v : $ifaceNil);
  37203. $r = assert.For(!($interfaceIsEqual(ret, $ifaceNil)), 20, new sliceType([])); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  37204. return ret;
  37205. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: board.ptr.prototype.InnerPin }; } $f.$ptr = $ptr; $f._entry = _entry; $f.b = b; $f.c = c; $f.ret = ret; $f.$s = $s; $f.$r = $r; return $f;
  37206. };
  37207. board.prototype.InnerPin = function(c) { return this.$val.InnerPin(c); };
  37208. board.ptr.prototype.Point = function(x) {
  37209. var $ptr, _entry, _key, b, ret, x;
  37210. ret = $ifaceNil;
  37211. b = this;
  37212. ret = (_entry = b.points[x], _entry !== undefined ? _entry.v : $ifaceNil);
  37213. if ($interfaceIsEqual(ret, $ifaceNil)) {
  37214. ret = pt(x);
  37215. _key = x; (b.points || $throwRuntimeError("assignment to entry in nil map"))[_key] = { k: _key, v: ret };
  37216. }
  37217. return ret;
  37218. };
  37219. board.prototype.Point = function(x) { return this.$val.Point(x); };
  37220. board.ptr.prototype.Do = function() {
  37221. var $ptr, b;
  37222. b = this;
  37223. };
  37224. board.prototype.Do = function() { return this.$val.Do(); };
  37225. board.ptr.prototype.String = function() {
  37226. var $ptr, b;
  37227. b = this;
  37228. return "board";
  37229. };
  37230. board.prototype.String = function() { return this.$val.String(); };
  37231. board.ptr.prototype.Pins = function(pins) {
  37232. var $ptr, _entry, _i, _key, _key$1, _key$2, _key$3, _keys, _p, _r, _ref, _ref$1, b, brd, k, p, p$1, p$2, pins, $s, $r;
  37233. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _entry = $f._entry; _i = $f._i; _key = $f._key; _key$1 = $f._key$1; _key$2 = $f._key$2; _key$3 = $f._key$3; _keys = $f._keys; _p = $f._p; _r = $f._r; _ref = $f._ref; _ref$1 = $f._ref$1; b = $f.b; brd = $f.brd; k = $f.k; p = $f.p; p$1 = $f.p$1; p$2 = $f.p$2; pins = $f.pins; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  37234. brd = this;
  37235. /* */ if (pins.$length > 0) { $s = 1; continue; }
  37236. /* */ $s = 2; continue;
  37237. /* if (pins.$length > 0) { */ case 1:
  37238. brd.pins = new $Map();
  37239. brd._pins = new $Map();
  37240. /* */ if (!((0 >= pins.$length ? $throwRuntimeError("index out of range") : pins.$array[pins.$offset + 0]) === false)) { $s = 3; continue; }
  37241. /* */ $s = 4; continue;
  37242. /* if (!((0 >= pins.$length ? $throwRuntimeError("index out of range") : pins.$array[pins.$offset + 0]) === false)) { */ case 3:
  37243. _ref = (0 >= pins.$length ? $throwRuntimeError("index out of range") : pins.$array[pins.$offset + 0]);
  37244. _i = 0;
  37245. _keys = $keys(_ref);
  37246. /* while (true) { */ case 5:
  37247. /* if (!(_i < _keys.length)) { break; } */ if(!(_i < _keys.length)) { $s = 6; continue; }
  37248. _entry = _ref[_keys[_i]];
  37249. if (_entry === undefined) {
  37250. _i++;
  37251. /* continue; */ $s = 5; continue;
  37252. }
  37253. k = _entry.k;
  37254. _p = _entry.v;
  37255. _r = Buffer(); /* */ $s = 7; case 7: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  37256. b = $assertType(_r, ptrType$4);
  37257. _ref$1 = _p;
  37258. /* */ if ($assertType(_ref$1, ptrType$5, true)[1]) { $s = 8; continue; }
  37259. /* */ if ($assertType(_ref$1, ptrType$6, true)[1]) { $s = 9; continue; }
  37260. /* */ $s = 10; continue;
  37261. /* if ($assertType(_ref$1, ptrType$5, true)[1]) { */ case 8:
  37262. p = _ref$1.$val;
  37263. b.I = p;
  37264. _key = k; (brd.pins || $throwRuntimeError("assignment to entry in nil map"))[_key] = { k: _key, v: p };
  37265. p.owner = b;
  37266. _key$1 = k; (brd._pins || $throwRuntimeError("assignment to entry in nil map"))[_key$1] = { k: _key$1, v: b.O };
  37267. $s = 11; continue;
  37268. /* } else if ($assertType(_ref$1, ptrType$6, true)[1]) { */ case 9:
  37269. p$1 = _ref$1.$val;
  37270. b.O = p$1;
  37271. _key$2 = k; (brd.pins || $throwRuntimeError("assignment to entry in nil map"))[_key$2] = { k: _key$2, v: p$1 };
  37272. p$1.owner = b;
  37273. _key$3 = k; (brd._pins || $throwRuntimeError("assignment to entry in nil map"))[_key$3] = { k: _key$3, v: b.I };
  37274. $s = 11; continue;
  37275. /* } else { */ case 10:
  37276. p$2 = _ref$1;
  37277. $r = halt.As(100, new sliceType([reflect.TypeOf(p$2)])); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  37278. /* } */ case 11:
  37279. _i++;
  37280. /* } */ $s = 5; continue; case 6:
  37281. /* } */ case 4:
  37282. /* } */ case 2:
  37283. return brd.pins;
  37284. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: board.ptr.prototype.Pins }; } $f.$ptr = $ptr; $f._entry = _entry; $f._i = _i; $f._key = _key; $f._key$1 = _key$1; $f._key$2 = _key$2; $f._key$3 = _key$3; $f._keys = _keys; $f._p = _p; $f._r = _r; $f._ref = _ref; $f._ref$1 = _ref$1; $f.b = b; $f.brd = brd; $f.k = k; $f.p = p; $f.p$1 = p$1; $f.p$2 = p$2; $f.pins = pins; $f.$s = $s; $f.$r = $r; return $f;
  37285. };
  37286. board.prototype.Pins = function(pins) { return this.$val.Pins(pins); };
  37287. Board = function() {
  37288. var $ptr, _r, _r$1, _r$2, ret, $s, $r;
  37289. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; ret = $f.ret; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  37290. ret = new board.ptr($ifaceNil, false, false, false);
  37291. ret.points = new $Map();
  37292. _r = $pkg.Static.Pos.Pin(1); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  37293. $r = ret.Point("T").Solder(new sliceType$2([_r])); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  37294. _r$1 = $pkg.Static.Neg.Pin(1); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  37295. $r = ret.Point("F").Solder(new sliceType$2([_r$1])); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  37296. _r$2 = $pkg.Static.Ground.Pin(1); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  37297. $r = ret.Point("N").Solder(new sliceType$2([_r$2])); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  37298. return ret;
  37299. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Board }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f.ret = ret; $f.$s = $s; $f.$r = $r; return $f;
  37300. };
  37301. $pkg.Board = Board;
  37302. trig.ptr.prototype.Pin = function(c) {
  37303. var $ptr, _ref, c, t;
  37304. t = this;
  37305. _ref = c;
  37306. if (_ref === 2) {
  37307. return t.D;
  37308. } else if (_ref === 3) {
  37309. return t.S;
  37310. }
  37311. $panic(new $Int(0));
  37312. };
  37313. trig.prototype.Pin = function(c) { return this.$val.Pin(c); };
  37314. trig.ptr.prototype.Value = function(v) {
  37315. var $ptr, t, v;
  37316. t = this;
  37317. if (v.$length > 0) {
  37318. $copy(t.data, (0 >= v.$length ? $throwRuntimeError("index out of range") : v.$array[v.$offset + 0]), tri.Trit);
  37319. }
  37320. return t.data;
  37321. };
  37322. trig.prototype.Value = function(v) { return this.$val.Value(v); };
  37323. trig.ptr.prototype.Do = function() {
  37324. var $ptr, _r, t, val, $s, $r;
  37325. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; t = $f.t; val = $f.val; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  37326. t = this;
  37327. _r = t.S.Select(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  37328. val = _r;
  37329. if (!(val === ptrType.nil)) {
  37330. $copy(t.data, val, tri.Trit);
  37331. }
  37332. $r = t.D.Update(t.data); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  37333. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: trig.ptr.prototype.Do }; } $f.$ptr = $ptr; $f._r = _r; $f.t = t; $f.val = val; $f.$s = $s; $f.$r = $r; return $f;
  37334. };
  37335. trig.prototype.Do = function() { return this.$val.Do(); };
  37336. trig.ptr.prototype.String = function() {
  37337. var $ptr, _r, t, x, $s, $r;
  37338. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; t = $f.t; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  37339. t = this;
  37340. _r = fmt.Sprint(new sliceType([new $String("T"), new $String(":"), (x = t.data, new x.constructor.elem(x))])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  37341. return _r;
  37342. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: trig.ptr.prototype.String }; } $f.$ptr = $ptr; $f._r = _r; $f.t = t; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
  37343. };
  37344. trig.prototype.String = function() { return this.$val.String(); };
  37345. Trigger = function() {
  37346. var $ptr, _r, t, $s, $r;
  37347. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  37348. t = new trig.ptr($ifaceNil, $ifaceNil, $clone(tri.NIL, tri.Trit));
  37349. t.D = NewOut(t);
  37350. _r = NewIn(t); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  37351. t.S = _r;
  37352. return t;
  37353. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Trigger }; } $f.$ptr = $ptr; $f._r = _r; $f.t = t; $f.$s = $s; $f.$r = $r; return $f;
  37354. };
  37355. $pkg.Trigger = Trigger;
  37356. out.ptr.prototype.String = function() {
  37357. var $ptr, _r, o, $s, $r;
  37358. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; o = $f.o; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  37359. o = this;
  37360. _r = fmt.Sprint(new sliceType([o.owner, new $String(":"), o.val, new $String("."), new $String("out")])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  37361. return _r;
  37362. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: out.ptr.prototype.String }; } $f.$ptr = $ptr; $f._r = _r; $f.o = o; $f.$s = $s; $f.$r = $r; return $f;
  37363. };
  37364. out.prototype.String = function() { return this.$val.String(); };
  37365. out.ptr.prototype.Update = function(value) {
  37366. var $ptr, o, value;
  37367. o = this;
  37368. o.val = value;
  37369. };
  37370. out.prototype.Update = function(value) { return this.$val.Update(value); };
  37371. in$1.ptr.prototype.String = function() {
  37372. var $ptr, _r, i, $s, $r;
  37373. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; i = $f.i; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  37374. i = this;
  37375. _r = fmt.Sprint(new sliceType([i.owner, new $String(":"), i.val, new $String("."), new $String("in")])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  37376. return _r;
  37377. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: in$1.ptr.prototype.String }; } $f.$ptr = $ptr; $f._r = _r; $f.i = i; $f.$s = $s; $f.$r = $r; return $f;
  37378. };
  37379. in$1.prototype.String = function() { return this.$val.String(); };
  37380. in$1.ptr.prototype.Select = function() {
  37381. var $ptr, i;
  37382. i = this;
  37383. return i.val;
  37384. };
  37385. in$1.prototype.Select = function() { return this.$val.Select(); };
  37386. point.ptr.prototype.Solder = function(pins) {
  37387. var $ptr, _i, _r, _ref, exists, p, pin, pins, $s, $r;
  37388. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _i = $f._i; _r = $f._r; _ref = $f._ref; exists = $f.exists; p = $f.p; pin = $f.pin; pins = $f.pins; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  37389. p = [p];
  37390. p[0] = this;
  37391. exists = (function(p) { return function(pin) {
  37392. var $ptr, _i, _ref, pin, x;
  37393. _ref = p[0].pins;
  37394. _i = 0;
  37395. while (true) {
  37396. if (!(_i < _ref.$length)) { break; }
  37397. x = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]);
  37398. if ($interfaceIsEqual(x, pin)) {
  37399. return true;
  37400. }
  37401. _i++;
  37402. }
  37403. return false;
  37404. }; })(p);
  37405. _ref = pins;
  37406. _i = 0;
  37407. /* while (true) { */ case 1:
  37408. /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; }
  37409. pin = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]);
  37410. _r = exists(pin); /* */ $s = 6; case 6: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  37411. /* */ if (!_r) { $s = 3; continue; }
  37412. /* */ $s = 4; continue;
  37413. /* if (!_r) { */ case 3:
  37414. p[0].pins = $append(p[0].pins, pin);
  37415. $s = 5; continue;
  37416. /* } else { */ case 4:
  37417. $r = halt.As(100, new sliceType([pin])); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  37418. /* } */ case 5:
  37419. _i++;
  37420. /* } */ $s = 1; continue; case 2:
  37421. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: point.ptr.prototype.Solder }; } $f.$ptr = $ptr; $f._i = _i; $f._r = _r; $f._ref = _ref; $f.exists = exists; $f.p = p; $f.pin = pin; $f.pins = pins; $f.$s = $s; $f.$r = $r; return $f;
  37422. };
  37423. point.prototype.Solder = function(pins) { return this.$val.Solder(pins); };
  37424. point.ptr.prototype.sel = function() {
  37425. var $ptr, _i, _ref, _ref$1, _x, p, value, x, x$1, x$2, $s, $r;
  37426. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _i = $f._i; _ref = $f._ref; _ref$1 = $f._ref$1; _x = $f._x; p = $f.p; value = $f.value; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  37427. value = ptrType.nil;
  37428. p = this;
  37429. _ref = p.pins;
  37430. _i = 0;
  37431. /* while (true) { */ case 1:
  37432. /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; }
  37433. _x = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]);
  37434. _ref$1 = _x;
  37435. /* */ if ($assertType(_ref$1, ptrType$6, true)[1]) { $s = 3; continue; }
  37436. /* */ if ($assertType(_ref$1, ptrType$5, true)[1]) { $s = 4; continue; }
  37437. /* */ $s = 5; continue;
  37438. /* if ($assertType(_ref$1, ptrType$6, true)[1]) { */ case 3:
  37439. x = _ref$1.$val;
  37440. if (value === ptrType.nil) {
  37441. value = x.val;
  37442. }
  37443. $s = 6; continue;
  37444. /* } else if ($assertType(_ref$1, ptrType$5, true)[1]) { */ case 4:
  37445. x$1 = _ref$1.$val;
  37446. $s = 6; continue;
  37447. /* } else { */ case 5:
  37448. x$2 = _ref$1;
  37449. $r = halt.As(100, new sliceType([])); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  37450. /* } */ case 6:
  37451. _i++;
  37452. /* } */ $s = 1; continue; case 2:
  37453. return value;
  37454. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: point.ptr.prototype.sel }; } $f.$ptr = $ptr; $f._i = _i; $f._ref = _ref; $f._ref$1 = _ref$1; $f._x = _x; $f.p = p; $f.value = value; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.$s = $s; $f.$r = $r; return $f;
  37455. };
  37456. point.prototype.sel = function() { return this.$val.sel(); };
  37457. point.ptr.prototype.set = function(value) {
  37458. var $ptr, _i, _ref, _ref$1, _x, p, value, x, x$1, x$2, $s, $r;
  37459. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _i = $f._i; _ref = $f._ref; _ref$1 = $f._ref$1; _x = $f._x; p = $f.p; value = $f.value; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  37460. p = this;
  37461. _ref = p.pins;
  37462. _i = 0;
  37463. /* while (true) { */ case 1:
  37464. /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; }
  37465. _x = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]);
  37466. _ref$1 = _x;
  37467. /* */ if ($assertType(_ref$1, ptrType$6, true)[1]) { $s = 3; continue; }
  37468. /* */ if ($assertType(_ref$1, ptrType$5, true)[1]) { $s = 4; continue; }
  37469. /* */ $s = 5; continue;
  37470. /* if ($assertType(_ref$1, ptrType$6, true)[1]) { */ case 3:
  37471. x = _ref$1.$val;
  37472. $s = 6; continue;
  37473. /* } else if ($assertType(_ref$1, ptrType$5, true)[1]) { */ case 4:
  37474. x$1 = _ref$1.$val;
  37475. x$1.val = value;
  37476. $s = 6; continue;
  37477. /* } else { */ case 5:
  37478. x$2 = _ref$1;
  37479. $r = halt.As(100, new sliceType([])); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  37480. /* } */ case 6:
  37481. _i++;
  37482. /* } */ $s = 1; continue; case 2:
  37483. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: point.ptr.prototype.set }; } $f.$ptr = $ptr; $f._i = _i; $f._ref = _ref; $f._ref$1 = _ref$1; $f._x = _x; $f.p = p; $f.value = value; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.$s = $s; $f.$r = $r; return $f;
  37484. };
  37485. point.prototype.set = function(value) { return this.$val.set(value); };
  37486. point.ptr.prototype.run = function() {
  37487. var $ptr, _i, _ref, _ref$1, _x, p, wg, x, x$1, x$2, $s, $r;
  37488. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _i = $f._i; _ref = $f._ref; _ref$1 = $f._ref$1; _x = $f._x; p = $f.p; wg = $f.wg; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  37489. p = this;
  37490. wg = new sync.WaitGroup.ptr(new sync.Mutex.ptr(), 0, 0, ptrType$7.nil);
  37491. _ref = p.pins;
  37492. _i = 0;
  37493. /* while (true) { */ case 1:
  37494. /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; }
  37495. _x = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]);
  37496. _ref$1 = _x;
  37497. /* */ if ($assertType(_ref$1, ptrType$6, true)[1]) { $s = 3; continue; }
  37498. /* */ if ($assertType(_ref$1, ptrType$5, true)[1]) { $s = 4; continue; }
  37499. /* */ $s = 5; continue;
  37500. /* if ($assertType(_ref$1, ptrType$6, true)[1]) { */ case 3:
  37501. x = _ref$1.$val;
  37502. $r = x.owner.Do(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  37503. $s = 6; continue;
  37504. /* } else if ($assertType(_ref$1, ptrType$5, true)[1]) { */ case 4:
  37505. x$1 = _ref$1.$val;
  37506. $r = wg.Add(1); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  37507. $r = $send(x$1.meta, wg); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  37508. $s = 6; continue;
  37509. /* } else { */ case 5:
  37510. x$2 = _ref$1;
  37511. $r = halt.As(100, new sliceType([])); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  37512. /* } */ case 6:
  37513. _i++;
  37514. /* } */ $s = 1; continue; case 2:
  37515. $r = wg.Wait(); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  37516. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: point.ptr.prototype.run }; } $f.$ptr = $ptr; $f._i = _i; $f._ref = _ref; $f._ref$1 = _ref$1; $f._x = _x; $f.p = p; $f.wg = wg; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.$s = $s; $f.$r = $r; return $f;
  37517. };
  37518. point.prototype.run = function() { return this.$val.run(); };
  37519. pt = function(n) {
  37520. var $ptr, n, ret;
  37521. ret = ptrType$8.nil;
  37522. ret = new point.ptr($makeSlice(sliceType$2, 0), n);
  37523. $go((function $b(p) {
  37524. var $ptr, p, $s, $r;
  37525. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; p = $f.p; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  37526. p = [p];
  37527. $r = ncl.Step(p[0], (function(p) { return function $b() {
  37528. var $ptr, _r, $s, $r;
  37529. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  37530. _r = p[0].sel(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  37531. $r = p[0].set(_r); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  37532. $r = p[0].run(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  37533. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: $b }; } $f.$ptr = $ptr; $f._r = _r; $f.$s = $s; $f.$r = $r; return $f;
  37534. }; })(p)); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  37535. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: $b }; } $f.$ptr = $ptr; $f.p = p; $f.$s = $s; $f.$r = $r; return $f;
  37536. }), [ret]);
  37537. ret = ret;
  37538. return ret;
  37539. };
  37540. NewOut = function(o) {
  37541. var $ptr, o, ret;
  37542. ret = ptrType$6.nil;
  37543. ret = new out.ptr($ifaceNil, ptrType.nil, o);
  37544. return ret;
  37545. };
  37546. $pkg.NewOut = NewOut;
  37547. NewIn = function(o) {
  37548. var $ptr, o, ret, $s, $r;
  37549. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; o = $f.o; ret = $f.ret; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  37550. ret = ptrType$5.nil;
  37551. $r = assert.For(!($interfaceIsEqual(o, $ifaceNil)), 20, new sliceType([])); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  37552. ret = new in$1.ptr($ifaceNil, ptrType.nil, chanType.nil, o);
  37553. ret.meta = new chanType(0);
  37554. $go((function $b(i) {
  37555. var $ptr, i, $s, $r;
  37556. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; i = $f.i; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  37557. i = [i];
  37558. $r = ncl.Step(i[0], (function(i) { return function $b() {
  37559. var $ptr, _r, wg, $s, $r;
  37560. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; wg = $f.wg; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  37561. _r = $recv(i[0].meta); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  37562. wg = _r[0];
  37563. $r = i[0].owner.Do(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  37564. $r = wg.Done(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  37565. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: $b }; } $f.$ptr = $ptr; $f._r = _r; $f.wg = wg; $f.$s = $s; $f.$r = $r; return $f;
  37566. }; })(i)); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  37567. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: $b }; } $f.$ptr = $ptr; $f.i = i; $f.$s = $s; $f.$r = $r; return $f;
  37568. }), [ret]);
  37569. return ret;
  37570. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: NewIn }; } $f.$ptr = $ptr; $f.o = o; $f.ret = ret; $f.$s = $s; $f.$r = $r; return $f;
  37571. };
  37572. $pkg.NewIn = NewIn;
  37573. ptrType$4.methods = [{prop: "Pin", name: "Pin", pkg: "", typ: $funcType([ncl.PinCode], [ncl.Pin], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "init", name: "init", pkg: "sim3/ncl/std", typ: $funcType([], [], false)}, {prop: "Do", name: "Do", pkg: "", typ: $funcType([], [], false)}];
  37574. ptrType$10.methods = [{prop: "Pin", name: "Pin", pkg: "", typ: $funcType([ncl.PinCode], [ncl.Pin], false)}, {prop: "Do", name: "Do", pkg: "", typ: $funcType([], [], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "init", name: "init", pkg: "sim3/ncl/std", typ: $funcType([], [], false)}];
  37575. ptrType$11.methods = [{prop: "Pin", name: "Pin", pkg: "", typ: $funcType([ncl.PinCode], [ncl.Pin], false)}, {prop: "init", name: "init", pkg: "sim3/ncl/std", typ: $funcType([], [], false)}, {prop: "Do", name: "Do", pkg: "", typ: $funcType([], [], false)}];
  37576. ptrType$12.methods = [{prop: "Pin", name: "Pin", pkg: "", typ: $funcType([ncl.PinCode], [ncl.Pin], false)}, {prop: "init", name: "init", pkg: "sim3/ncl/std", typ: $funcType([], [], false)}, {prop: "Do", name: "Do", pkg: "", typ: $funcType([], [], false)}];
  37577. ptrType$2.methods = [{prop: "Pin", name: "Pin", pkg: "", typ: $funcType([ncl.PinCode], [ncl.Pin], false)}, {prop: "Do", name: "Do", pkg: "", typ: $funcType([], [], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}];
  37578. ptrType$1.methods = [{prop: "Pin", name: "Pin", pkg: "", typ: $funcType([ncl.PinCode], [ncl.Pin], false)}, {prop: "Do", name: "Do", pkg: "", typ: $funcType([], [], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}];
  37579. ptrType$13.methods = [{prop: "Pin", name: "Pin", pkg: "", typ: $funcType([ncl.PinCode], [ncl.Pin], false)}, {prop: "InnerPin", name: "InnerPin", pkg: "", typ: $funcType([ncl.PinCode], [ncl.Pin], false)}, {prop: "Point", name: "Point", pkg: "", typ: $funcType([$String], [ncl.Point], false)}, {prop: "Do", name: "Do", pkg: "", typ: $funcType([], [], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Pins", name: "Pins", pkg: "", typ: $funcType([sliceType$3], [mapType], true)}];
  37580. ptrType$14.methods = [{prop: "Pin", name: "Pin", pkg: "", typ: $funcType([ncl.PinCode], [ncl.Pin], false)}, {prop: "Value", name: "Value", pkg: "", typ: $funcType([sliceType$4], [ptrType], true)}, {prop: "Do", name: "Do", pkg: "", typ: $funcType([], [], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}];
  37581. ptrType$6.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Update", name: "Update", pkg: "", typ: $funcType([ptrType], [], false)}];
  37582. ptrType$5.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Select", name: "Select", pkg: "", typ: $funcType([], [ptrType], false)}];
  37583. ptrType$8.methods = [{prop: "dump", name: "dump", pkg: "sim3/ncl/std", typ: $funcType([sliceType$5], [$String], true)}, {prop: "Solder", name: "Solder", pkg: "", typ: $funcType([sliceType$2], [], true)}, {prop: "sel", name: "sel", pkg: "sim3/ncl/std", typ: $funcType([], [ptrType], false)}, {prop: "set", name: "set", pkg: "sim3/ncl/std", typ: $funcType([ptrType], [], false)}, {prop: "run", name: "run", pkg: "sim3/ncl/std", typ: $funcType([], [], false)}];
  37584. any2.init([{prop: "typ", name: "typ", pkg: "sim3/ncl/std", typ: $String, tag: ""}, {prop: "I", name: "I", pkg: "", typ: ncl.In, tag: ""}, {prop: "O", name: "O", pkg: "", typ: ncl.Out, tag: ""}, {prop: "fn", name: "fn", pkg: "sim3/ncl/std", typ: funcType, tag: ""}]);
  37585. any3.init([{prop: "typ", name: "typ", pkg: "sim3/ncl/std", typ: $String, tag: ""}, {prop: "A", name: "A", pkg: "", typ: ncl.In, tag: ""}, {prop: "B", name: "B", pkg: "", typ: ncl.In, tag: ""}, {prop: "O", name: "O", pkg: "", typ: ncl.Out, tag: ""}, {prop: "fn", name: "fn", pkg: "sim3/ncl/std", typ: funcType$1, tag: ""}]);
  37586. mux.init([{prop: "T", name: "T", pkg: "", typ: ncl.In, tag: ""}, {prop: "N", name: "N", pkg: "", typ: ncl.In, tag: ""}, {prop: "F", name: "F", pkg: "", typ: ncl.In, tag: ""}, {prop: "A", name: "A", pkg: "", typ: ncl.In, tag: ""}, {prop: "B", name: "B", pkg: "", typ: ncl.Out, tag: ""}]);
  37587. demux.init([{prop: "T", name: "T", pkg: "", typ: ncl.Out, tag: ""}, {prop: "N", name: "N", pkg: "", typ: ncl.Out, tag: ""}, {prop: "F", name: "F", pkg: "", typ: ncl.Out, tag: ""}, {prop: "A", name: "A", pkg: "", typ: ncl.In, tag: ""}, {prop: "B", name: "B", pkg: "", typ: ncl.In, tag: ""}]);
  37588. power.init([{prop: "Element", name: "", pkg: "", typ: ncl.Element, tag: ""}, {prop: "O", name: "O", pkg: "", typ: ncl.Out, tag: ""}, {prop: "value", name: "value", pkg: "sim3/ncl/std", typ: tri.Trit, tag: ""}]);
  37589. probe.init([{prop: "Element", name: "", pkg: "", typ: ncl.Element, tag: ""}, {prop: "I", name: "I", pkg: "", typ: ncl.In, tag: ""}, {prop: "name", name: "name", pkg: "sim3/ncl/std", typ: $String, tag: ""}]);
  37590. board.init([{prop: "Compound", name: "", pkg: "", typ: ncl.Compound, tag: ""}, {prop: "points", name: "points", pkg: "sim3/ncl/std", typ: mapType$1, tag: ""}, {prop: "pins", name: "pins", pkg: "sim3/ncl/std", typ: mapType, tag: ""}, {prop: "_pins", name: "_pins", pkg: "sim3/ncl/std", typ: mapType, tag: ""}]);
  37591. trig.init([{prop: "D", name: "D", pkg: "", typ: ncl.Out, tag: ""}, {prop: "S", name: "S", pkg: "", typ: ncl.In, tag: ""}, {prop: "data", name: "data", pkg: "sim3/ncl/std", typ: tri.Trit, tag: ""}]);
  37592. out.init([{prop: "Out", name: "", pkg: "", typ: ncl.Out, tag: ""}, {prop: "val", name: "val", pkg: "sim3/ncl/std", typ: ptrType, tag: ""}, {prop: "owner", name: "owner", pkg: "sim3/ncl/std", typ: ncl.Element, tag: ""}]);
  37593. in$1.init([{prop: "In", name: "", pkg: "", typ: ncl.In, tag: ""}, {prop: "val", name: "val", pkg: "sim3/ncl/std", typ: ptrType, tag: ""}, {prop: "meta", name: "meta", pkg: "sim3/ncl/std", typ: chanType, tag: ""}, {prop: "owner", name: "owner", pkg: "sim3/ncl/std", typ: ncl.Element, tag: ""}]);
  37594. point.init([{prop: "pins", name: "pins", pkg: "sim3/ncl/std", typ: sliceType$2, tag: ""}, {prop: "name", name: "name", pkg: "sim3/ncl/std", typ: $String, tag: ""}]);
  37595. $init = function() {
  37596. $pkg.$init = function() {};
  37597. /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  37598. $r = fmt.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  37599. $r = reflect.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  37600. $r = ncl.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  37601. $r = tri.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  37602. $r = sync.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  37603. $r = assert.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  37604. $r = halt.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  37605. $pkg.Static = new structType.ptr();
  37606. $r = init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  37607. /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
  37608. };
  37609. $pkg.$init = $init;
  37610. return $pkg;
  37611. })();
  37612. $packages["sim3/ncl/tool"] = (function() {
  37613. var $pkg = {}, $init, yaml, fnv, reflect, ncl, std, tri, assert, Import, DataSource, PinClosure, Solder, Pin, PinList, NetList, sliceType, sliceType$1, sliceType$2, ptrType, sliceType$3, sliceType$4, mapType, sliceType$5, ptrType$1, ptrType$2, mapType$1, mapType$2, mapType$3, mapType$4, mapType$5, imps, Simple, In, Out, init, Register, value, encodePin;
  37614. yaml = $packages["gopkg.in/yaml.v2"];
  37615. fnv = $packages["hash/fnv"];
  37616. reflect = $packages["reflect"];
  37617. ncl = $packages["sim3/ncl"];
  37618. std = $packages["sim3/ncl/std"];
  37619. tri = $packages["sim3/tri"];
  37620. assert = $packages["ypk/assert"];
  37621. Import = $pkg.Import = $newType(4, $kindFunc, "tool.Import", "Import", "sim3/ncl/tool", null);
  37622. DataSource = $pkg.DataSource = $newType(8, $kindInterface, "tool.DataSource", "DataSource", "sim3/ncl/tool", null);
  37623. PinClosure = $pkg.PinClosure = $newType(4, $kindFunc, "tool.PinClosure", "PinClosure", "sim3/ncl/tool", null);
  37624. Solder = $pkg.Solder = $newType(0, $kindStruct, "tool.Solder", "Solder", "sim3/ncl/tool", function(imp_, ent_, root_, pins_, Data_) {
  37625. this.$val = this;
  37626. if (arguments.length === 0) {
  37627. this.imp = false;
  37628. this.ent = false;
  37629. this.root = $ifaceNil;
  37630. this.pins = false;
  37631. this.Data = $ifaceNil;
  37632. return;
  37633. }
  37634. this.imp = imp_;
  37635. this.ent = ent_;
  37636. this.root = root_;
  37637. this.pins = pins_;
  37638. this.Data = Data_;
  37639. });
  37640. Pin = $pkg.Pin = $newType(4, $kindMap, "tool.Pin", "Pin", "sim3/ncl/tool", null);
  37641. PinList = $pkg.PinList = $newType(12, $kindSlice, "tool.PinList", "PinList", "sim3/ncl/tool", null);
  37642. NetList = $pkg.NetList = $newType(0, $kindStruct, "tool.NetList", "NetList", "sim3/ncl/tool", function(Import_, Entities_, Netlist_, Init_) {
  37643. this.$val = this;
  37644. if (arguments.length === 0) {
  37645. this.Import = sliceType$4.nil;
  37646. this.Entities = false;
  37647. this.Netlist = false;
  37648. this.Init = false;
  37649. return;
  37650. }
  37651. this.Import = Import_;
  37652. this.Entities = Entities_;
  37653. this.Netlist = Netlist_;
  37654. this.Init = Init_;
  37655. });
  37656. sliceType = $sliceType($emptyInterface);
  37657. sliceType$1 = $sliceType($Uint8);
  37658. sliceType$2 = $sliceType(ncl.Pin);
  37659. ptrType = $ptrType(tri.Trit);
  37660. sliceType$3 = $sliceType(ptrType);
  37661. sliceType$4 = $sliceType($String);
  37662. mapType = $mapType(ncl.PinCode, ncl.Pin);
  37663. sliceType$5 = $sliceType(mapType);
  37664. ptrType$1 = $ptrType(NetList);
  37665. ptrType$2 = $ptrType(Solder);
  37666. mapType$1 = $mapType($String, Import);
  37667. mapType$2 = $mapType($String, ncl.Element);
  37668. mapType$3 = $mapType(ncl.PinCode, PinClosure);
  37669. mapType$4 = $mapType($String, $String);
  37670. mapType$5 = $mapType($String, PinList);
  37671. Simple = function(f) {
  37672. var $ptr, f;
  37673. return (function $b(param) {
  37674. var $ptr, _r, param, $s, $r;
  37675. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; param = $f.param; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  37676. _r = f(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  37677. return _r;
  37678. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: $b }; } $f.$ptr = $ptr; $f._r = _r; $f.param = param; $f.$s = $s; $f.$r = $r; return $f;
  37679. });
  37680. };
  37681. $pkg.Simple = Simple;
  37682. In = function(e) {
  37683. var $ptr, _r, e, $s, $r;
  37684. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; e = $f.e; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  37685. _r = std.NewIn(e); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  37686. return _r;
  37687. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: In }; } $f.$ptr = $ptr; $f._r = _r; $f.e = e; $f.$s = $s; $f.$r = $r; return $f;
  37688. };
  37689. $pkg.In = In;
  37690. Out = function(e) {
  37691. var $ptr, e;
  37692. return std.NewOut(e);
  37693. };
  37694. $pkg.Out = Out;
  37695. init = function() {
  37696. var $ptr, _key, _key$1, _key$10, _key$11, _key$12, _key$13, _key$14, _key$2, _key$3, _key$4, _key$5, _key$6, _key$7, _key$8, _key$9;
  37697. _key = "NOT"; (imps || $throwRuntimeError("assignment to entry in nil map"))[_key] = { k: _key, v: Simple(std.Not) };
  37698. _key$1 = "PROBE"; (imps || $throwRuntimeError("assignment to entry in nil map"))[_key$1] = { k: _key$1, v: (function $b(opts) {
  37699. var $ptr, _r, opts, $s, $r;
  37700. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; opts = $f.opts; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  37701. $r = assert.For(!((opts.$length === 0)), 20, new sliceType([])); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  37702. _r = std.Probe($assertType((0 >= opts.$length ? $throwRuntimeError("index out of range") : opts.$array[opts.$offset + 0]), $String)); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  37703. return _r;
  37704. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: $b }; } $f.$ptr = $ptr; $f._r = _r; $f.opts = opts; $f.$s = $s; $f.$r = $r; return $f;
  37705. }) };
  37706. _key$2 = "SUM3"; (imps || $throwRuntimeError("assignment to entry in nil map"))[_key$2] = { k: _key$2, v: Simple(std.Sum3) };
  37707. _key$3 = "SUM3r"; (imps || $throwRuntimeError("assignment to entry in nil map"))[_key$3] = { k: _key$3, v: Simple(std.Sum3r) };
  37708. _key$4 = "DMX"; (imps || $throwRuntimeError("assignment to entry in nil map"))[_key$4] = { k: _key$4, v: Simple(std.Demux) };
  37709. _key$5 = "MX"; (imps || $throwRuntimeError("assignment to entry in nil map"))[_key$5] = { k: _key$5, v: Simple(std.Mux) };
  37710. _key$6 = "NAND"; (imps || $throwRuntimeError("assignment to entry in nil map"))[_key$6] = { k: _key$6, v: Simple(std.AndNot) };
  37711. _key$7 = "NOR"; (imps || $throwRuntimeError("assignment to entry in nil map"))[_key$7] = { k: _key$7, v: Simple(std.OrNot) };
  37712. _key$8 = "CAR3s"; (imps || $throwRuntimeError("assignment to entry in nil map"))[_key$8] = { k: _key$8, v: Simple(std.Car3s) };
  37713. _key$9 = "CAR3m"; (imps || $throwRuntimeError("assignment to entry in nil map"))[_key$9] = { k: _key$9, v: Simple(std.Car3m) };
  37714. _key$10 = "CAR3sr"; (imps || $throwRuntimeError("assignment to entry in nil map"))[_key$10] = { k: _key$10, v: Simple(std.Car3sr) };
  37715. _key$11 = "CMP"; (imps || $throwRuntimeError("assignment to entry in nil map"))[_key$11] = { k: _key$11, v: Simple(std.Cmp) };
  37716. _key$12 = "CL"; (imps || $throwRuntimeError("assignment to entry in nil map"))[_key$12] = { k: _key$12, v: Simple(std.CycleLeft) };
  37717. _key$13 = "CR"; (imps || $throwRuntimeError("assignment to entry in nil map"))[_key$13] = { k: _key$13, v: Simple(std.CycleRight) };
  37718. _key$14 = "T"; (imps || $throwRuntimeError("assignment to entry in nil map"))[_key$14] = { k: _key$14, v: Simple(std.Trigger) };
  37719. };
  37720. Register = function(name, i) {
  37721. var $ptr, _key, i, name;
  37722. _key = name; (imps || $throwRuntimeError("assignment to entry in nil map"))[_key] = { k: _key, v: i };
  37723. };
  37724. $pkg.Register = Register;
  37725. value = function(v) {
  37726. var $ptr, _ref, v;
  37727. _ref = v;
  37728. if (_ref === "T") {
  37729. return tri.TRUE;
  37730. } else if (_ref === "N") {
  37731. return tri.NIL;
  37732. } else if (_ref === "F") {
  37733. return tri.FALSE;
  37734. } else {
  37735. $panic(new $Int(0));
  37736. }
  37737. };
  37738. encodePin = function(p) {
  37739. var $ptr, _r, _r$1, _ref, h, p, $s, $r;
  37740. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _ref = $f._ref; h = $f.h; p = $f.p; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  37741. _ref = p;
  37742. /* */ if (_ref === "A") { $s = 1; continue; }
  37743. /* */ if (_ref === "B") { $s = 2; continue; }
  37744. /* */ if (_ref === "N") { $s = 3; continue; }
  37745. /* */ if (_ref === "T") { $s = 4; continue; }
  37746. /* */ if (_ref === "F") { $s = 5; continue; }
  37747. /* */ if (_ref === "I") { $s = 6; continue; }
  37748. /* */ if (_ref === "O") { $s = 7; continue; }
  37749. /* */ if (_ref === "S") { $s = 8; continue; }
  37750. /* */ if (_ref === "D") { $s = 9; continue; }
  37751. /* */ if (_ref === "C") { $s = 10; continue; }
  37752. /* */ $s = 11; continue;
  37753. /* if (_ref === "A") { */ case 1:
  37754. return 4;
  37755. $s = 12; continue;
  37756. /* } else if (_ref === "B") { */ case 2:
  37757. return 5;
  37758. $s = 12; continue;
  37759. /* } else if (_ref === "N") { */ case 3:
  37760. return 7;
  37761. $s = 12; continue;
  37762. /* } else if (_ref === "T") { */ case 4:
  37763. return 6;
  37764. $s = 12; continue;
  37765. /* } else if (_ref === "F") { */ case 5:
  37766. return 8;
  37767. $s = 12; continue;
  37768. /* } else if (_ref === "I") { */ case 6:
  37769. return 0;
  37770. $s = 12; continue;
  37771. /* } else if (_ref === "O") { */ case 7:
  37772. return 1;
  37773. $s = 12; continue;
  37774. /* } else if (_ref === "S") { */ case 8:
  37775. return 3;
  37776. $s = 12; continue;
  37777. /* } else if (_ref === "D") { */ case 9:
  37778. return 2;
  37779. $s = 12; continue;
  37780. /* } else if (_ref === "C") { */ case 10:
  37781. return 9;
  37782. $s = 12; continue;
  37783. /* } else { */ case 11:
  37784. h = fnv.New32();
  37785. _r = h.Write(new sliceType$1($stringToBytes(p))); /* */ $s = 13; case 13: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  37786. _r;
  37787. _r$1 = h.Sum32(); /* */ $s = 14; case 14: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  37788. return (_r$1 >> 0);
  37789. /* } */ case 12:
  37790. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: encodePin }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._ref = _ref; $f.h = h; $f.p = p; $f.$s = $s; $f.$r = $r; return $f;
  37791. };
  37792. Solder.ptr.prototype.handle = function(n) {
  37793. var $ptr, _e, _entry, _entry$1, _entry$10, _entry$2, _entry$3, _entry$4, _entry$5, _entry$6, _entry$7, _entry$8, _entry$9, _i, _i$1, _i$2, _i$3, _i$4, _i$5, _key, _key$1, _keys, _keys$1, _keys$2, _keys$3, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _ref, _ref$1, _ref$2, _ref$3, _ref$4, _ref$5, _tuple, e, i, i$1, io, k, k$1, k$2, n, ok, p, pin, s, t, v, v$1, v$2, val, $s, $r;
  37794. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _e = $f._e; _entry = $f._entry; _entry$1 = $f._entry$1; _entry$10 = $f._entry$10; _entry$2 = $f._entry$2; _entry$3 = $f._entry$3; _entry$4 = $f._entry$4; _entry$5 = $f._entry$5; _entry$6 = $f._entry$6; _entry$7 = $f._entry$7; _entry$8 = $f._entry$8; _entry$9 = $f._entry$9; _i = $f._i; _i$1 = $f._i$1; _i$2 = $f._i$2; _i$3 = $f._i$3; _i$4 = $f._i$4; _i$5 = $f._i$5; _key = $f._key; _key$1 = $f._key$1; _keys = $f._keys; _keys$1 = $f._keys$1; _keys$2 = $f._keys$2; _keys$3 = $f._keys$3; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _ref = $f._ref; _ref$1 = $f._ref$1; _ref$2 = $f._ref$2; _ref$3 = $f._ref$3; _ref$4 = $f._ref$4; _ref$5 = $f._ref$5; _tuple = $f._tuple; e = $f.e; i = $f.i; i$1 = $f.i$1; io = $f.io; k = $f.k; k$1 = $f.k$1; k$2 = $f.k$2; n = $f.n; ok = $f.ok; p = $f.p; pin = $f.pin; s = $f.s; t = $f.t; v = $f.v; v$1 = $f.v$1; v$2 = $f.v$2; val = $f.val; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  37795. s = this;
  37796. _ref = n.Import;
  37797. _i = 0;
  37798. while (true) {
  37799. if (!(_i < _ref.$length)) { break; }
  37800. i = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]);
  37801. _key = i; (s.imp || $throwRuntimeError("assignment to entry in nil map"))[_key] = { k: _key, v: (_entry = imps[i], _entry !== undefined ? _entry.v : $throwNilPointerError) };
  37802. _i++;
  37803. }
  37804. _ref$1 = n.Entities;
  37805. _i$1 = 0;
  37806. _keys = $keys(_ref$1);
  37807. /* while (true) { */ case 1:
  37808. /* if (!(_i$1 < _keys.length)) { break; } */ if(!(_i$1 < _keys.length)) { $s = 2; continue; }
  37809. _entry$1 = _ref$1[_keys[_i$1]];
  37810. if (_entry$1 === undefined) {
  37811. _i$1++;
  37812. /* continue; */ $s = 1; continue;
  37813. }
  37814. k = _entry$1.k;
  37815. v = _entry$1.v;
  37816. $r = assert.For($interfaceIsEqual((_entry$2 = s.ent[k], _entry$2 !== undefined ? _entry$2.v : $ifaceNil), $ifaceNil), 27, new sliceType([new $String(k), new $String(v)])); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  37817. $r = assert.For(!((_entry$3 = s.imp[v], _entry$3 !== undefined ? _entry$3.v : $throwNilPointerError) === $throwNilPointerError), 28, new sliceType([new $String(v)])); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  37818. _r = (_entry$4 = s.imp[v], _entry$4 !== undefined ? _entry$4.v : $throwNilPointerError)(new sliceType([new $String(k)])); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  37819. _key$1 = k; (s.ent || $throwRuntimeError("assignment to entry in nil map"))[_key$1] = { k: _key$1, v: _r };
  37820. _i$1++;
  37821. /* } */ $s = 1; continue; case 2:
  37822. _ref$2 = n.Netlist;
  37823. _i$2 = 0;
  37824. _keys$1 = $keys(_ref$2);
  37825. /* while (true) { */ case 6:
  37826. /* if (!(_i$2 < _keys$1.length)) { break; } */ if(!(_i$2 < _keys$1.length)) { $s = 7; continue; }
  37827. _entry$5 = _ref$2[_keys$1[_i$2]];
  37828. if (_entry$5 === undefined) {
  37829. _i$2++;
  37830. /* continue; */ $s = 6; continue;
  37831. }
  37832. k$1 = _entry$5.k;
  37833. v$1 = _entry$5.v;
  37834. _r$1 = s.root.Point(k$1); /* */ $s = 8; case 8: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  37835. p = _r$1;
  37836. _ref$3 = v$1;
  37837. _i$3 = 0;
  37838. /* while (true) { */ case 9:
  37839. /* if (!(_i$3 < _ref$3.$length)) { break; } */ if(!(_i$3 < _ref$3.$length)) { $s = 10; continue; }
  37840. i$1 = ((_i$3 < 0 || _i$3 >= _ref$3.$length) ? $throwRuntimeError("index out of range") : _ref$3.$array[_ref$3.$offset + _i$3]);
  37841. _ref$4 = i$1;
  37842. _i$4 = 0;
  37843. _keys$2 = $keys(_ref$4);
  37844. /* while (true) { */ case 11:
  37845. /* if (!(_i$4 < _keys$2.length)) { break; } */ if(!(_i$4 < _keys$2.length)) { $s = 12; continue; }
  37846. _entry$6 = _ref$4[_keys$2[_i$4]];
  37847. if (_entry$6 === undefined) {
  37848. _i$4++;
  37849. /* continue; */ $s = 11; continue;
  37850. }
  37851. _e = _entry$6.k;
  37852. io = _entry$6.v;
  37853. e = (_entry$7 = s.ent[_e], _entry$7 !== undefined ? _entry$7.v : $ifaceNil);
  37854. $r = assert.For(!($interfaceIsEqual(e, $ifaceNil)), 29, new sliceType([new $String(_e)])); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  37855. pin = $ifaceNil;
  37856. /* */ if (_e === "$") { $s = 14; continue; }
  37857. /* */ $s = 15; continue;
  37858. /* if (_e === "$") { */ case 14:
  37859. _r$2 = encodePin(io); /* */ $s = 17; case 17: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  37860. _r$3 = s.root.InnerPin(_r$2); /* */ $s = 18; case 18: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  37861. pin = _r$3;
  37862. $s = 16; continue;
  37863. /* } else { */ case 15:
  37864. _r$4 = encodePin(io); /* */ $s = 19; case 19: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
  37865. _r$5 = e.Pin(_r$4); /* */ $s = 20; case 20: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
  37866. pin = _r$5;
  37867. /* } */ case 16:
  37868. $r = assert.For(!($interfaceIsEqual(pin, $ifaceNil)), 30, new sliceType([e, new $String(io)])); /* */ $s = 21; case 21: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  37869. $r = p.Solder(new sliceType$2([pin])); /* */ $s = 22; case 22: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  37870. _i$4++;
  37871. /* } */ $s = 11; continue; case 12:
  37872. _i$3++;
  37873. /* } */ $s = 9; continue; case 10:
  37874. _i$2++;
  37875. /* } */ $s = 6; continue; case 7:
  37876. _ref$5 = n.Init;
  37877. _i$5 = 0;
  37878. _keys$3 = $keys(_ref$5);
  37879. /* while (true) { */ case 23:
  37880. /* if (!(_i$5 < _keys$3.length)) { break; } */ if(!(_i$5 < _keys$3.length)) { $s = 24; continue; }
  37881. val = [val];
  37882. _entry$8 = _ref$5[_keys$3[_i$5]];
  37883. if (_entry$8 === undefined) {
  37884. _i$5++;
  37885. /* continue; */ $s = 23; continue;
  37886. }
  37887. k$2 = _entry$8.k;
  37888. v$2 = _entry$8.v;
  37889. _tuple = $assertType((_entry$9 = s.ent[k$2], _entry$9 !== undefined ? _entry$9.v : $ifaceNil), ncl.Trigger, true); t = _tuple[0]; ok = _tuple[1];
  37890. $r = assert.For(ok, 20, new sliceType([reflect.TypeOf((_entry$10 = s.ent[k$2], _entry$10 !== undefined ? _entry$10.v : $ifaceNil))])); /* */ $s = 25; case 25: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  37891. val[0] = $clone(value(v$2), tri.Trit);
  37892. _r$6 = t.Value(new sliceType$3([val[0]])); /* */ $s = 26; case 26: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
  37893. _r$6;
  37894. _i$5++;
  37895. /* } */ $s = 23; continue; case 24:
  37896. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Solder.ptr.prototype.handle }; } $f.$ptr = $ptr; $f._e = _e; $f._entry = _entry; $f._entry$1 = _entry$1; $f._entry$10 = _entry$10; $f._entry$2 = _entry$2; $f._entry$3 = _entry$3; $f._entry$4 = _entry$4; $f._entry$5 = _entry$5; $f._entry$6 = _entry$6; $f._entry$7 = _entry$7; $f._entry$8 = _entry$8; $f._entry$9 = _entry$9; $f._i = _i; $f._i$1 = _i$1; $f._i$2 = _i$2; $f._i$3 = _i$3; $f._i$4 = _i$4; $f._i$5 = _i$5; $f._key = _key; $f._key$1 = _key$1; $f._keys = _keys; $f._keys$1 = _keys$1; $f._keys$2 = _keys$2; $f._keys$3 = _keys$3; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._ref = _ref; $f._ref$1 = _ref$1; $f._ref$2 = _ref$2; $f._ref$3 = _ref$3; $f._ref$4 = _ref$4; $f._ref$5 = _ref$5; $f._tuple = _tuple; $f.e = e; $f.i = i; $f.i$1 = i$1; $f.io = io; $f.k = k; $f.k$1 = k$1; $f.k$2 = k$2; $f.n = n; $f.ok = ok; $f.p = p; $f.pin = pin; $f.s = s; $f.t = t; $f.v = v; $f.v$1 = v$1; $f.v$2 = v$2; $f.val = val; $f.$s = $s; $f.$r = $r; return $f;
  37897. };
  37898. Solder.prototype.handle = function(n) { return this.$val.handle(n); };
  37899. Solder.ptr.prototype.parse = function(data) {
  37900. var $ptr, _r, data, err, n, s, $s, $r;
  37901. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; data = $f.data; err = $f.err; n = $f.n; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  37902. s = this;
  37903. n = new NetList.ptr(sliceType$4.nil, false, false, false);
  37904. _r = yaml.Unmarshal(new sliceType$1($stringToBytes(data)), n); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  37905. err = _r;
  37906. $r = assert.For($interfaceIsEqual(err, $ifaceNil), 39, new sliceType([new $String(data), err])); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  37907. $r = s.handle(n); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  37908. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Solder.ptr.prototype.parse }; } $f.$ptr = $ptr; $f._r = _r; $f.data = data; $f.err = err; $f.n = n; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
  37909. };
  37910. Solder.prototype.parse = function(data) { return this.$val.parse(data); };
  37911. Solder.ptr.prototype.init = function() {
  37912. var $ptr, _entry, _i, _key, _key$1, _keys, _r, _r$1, _r$2, _ref, k, pins, s, v, $s, $r;
  37913. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _entry = $f._entry; _i = $f._i; _key = $f._key; _key$1 = $f._key$1; _keys = $f._keys; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _ref = $f._ref; k = $f.k; pins = $f.pins; s = $f.s; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  37914. s = this;
  37915. _r = std.Board(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  37916. s.root = _r;
  37917. pins = new $Map();
  37918. _ref = s.pins;
  37919. _i = 0;
  37920. _keys = $keys(_ref);
  37921. /* while (true) { */ case 2:
  37922. /* if (!(_i < _keys.length)) { break; } */ if(!(_i < _keys.length)) { $s = 3; continue; }
  37923. _entry = _ref[_keys[_i]];
  37924. if (_entry === undefined) {
  37925. _i++;
  37926. /* continue; */ $s = 2; continue;
  37927. }
  37928. k = _entry.k;
  37929. v = _entry.v;
  37930. _r$1 = v(s.root); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  37931. _key = k; (pins || $throwRuntimeError("assignment to entry in nil map"))[_key] = { k: _key, v: _r$1 };
  37932. _i++;
  37933. /* } */ $s = 2; continue; case 3:
  37934. _r$2 = s.root.Pins(new sliceType$5([pins])); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  37935. _r$2;
  37936. s.imp = new $Map();
  37937. s.ent = new $Map();
  37938. $r = s.parse("import: [PROBE]"); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  37939. _key$1 = "$"; (s.ent || $throwRuntimeError("assignment to entry in nil map"))[_key$1] = { k: _key$1, v: s.root };
  37940. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Solder.ptr.prototype.init }; } $f.$ptr = $ptr; $f._entry = _entry; $f._i = _i; $f._key = _key; $f._key$1 = _key$1; $f._keys = _keys; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._ref = _ref; $f.k = k; $f.pins = pins; $f.s = s; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
  37941. };
  37942. Solder.prototype.init = function() { return this.$val.init(); };
  37943. Solder.ptr.prototype.UserPin = function(name, p) {
  37944. var $ptr, _key, _r, name, p, s, $s, $r;
  37945. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _key = $f._key; _r = $f._r; name = $f.name; p = $f.p; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  37946. s = this;
  37947. $r = assert.For(!(name === ""), 20, new sliceType([])); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  37948. $r = assert.For(!(p === $throwNilPointerError), 21, new sliceType([])); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  37949. $r = assert.For($interfaceIsEqual(s.root, $ifaceNil), 22, new sliceType([])); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  37950. if (s.pins === false) {
  37951. s.pins = new $Map();
  37952. }
  37953. _r = encodePin(name); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  37954. _key = _r; (s.pins || $throwRuntimeError("assignment to entry in nil map"))[_key] = { k: _key, v: p };
  37955. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Solder.ptr.prototype.UserPin }; } $f.$ptr = $ptr; $f._key = _key; $f._r = _r; $f.name = name; $f.p = p; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
  37956. };
  37957. Solder.prototype.UserPin = function(name, p) { return this.$val.UserPin(name, p); };
  37958. Solder.ptr.prototype.Y = function(y) {
  37959. var $ptr, s, y, $s, $r;
  37960. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; s = $f.s; y = $f.y; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  37961. s = this;
  37962. /* */ if ($interfaceIsEqual(s.root, $ifaceNil)) { $s = 1; continue; }
  37963. /* */ $s = 2; continue;
  37964. /* if ($interfaceIsEqual(s.root, $ifaceNil)) { */ case 1:
  37965. $r = s.init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  37966. /* } */ case 2:
  37967. $r = s.parse(y); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  37968. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Solder.ptr.prototype.Y }; } $f.$ptr = $ptr; $f.s = s; $f.y = y; $f.$s = $s; $f.$r = $r; return $f;
  37969. };
  37970. Solder.prototype.Y = function(y) { return this.$val.Y(y); };
  37971. Solder.ptr.prototype.F = function(fn) {
  37972. var $ptr, _r, _r$1, _tuple, data, err, fn, nl, s, $s, $r;
  37973. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _tuple = $f._tuple; data = $f.data; err = $f.err; fn = $f.fn; nl = $f.nl; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  37974. s = this;
  37975. /* */ if ($interfaceIsEqual(s.root, $ifaceNil)) { $s = 1; continue; }
  37976. /* */ $s = 2; continue;
  37977. /* if ($interfaceIsEqual(s.root, $ifaceNil)) { */ case 1:
  37978. $r = s.init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  37979. /* } */ case 2:
  37980. if ($interfaceIsEqual(s.Data, $ifaceNil)) {
  37981. s.Data = $pkg.Src;
  37982. }
  37983. $r = assert.For(!($interfaceIsEqual(s.Data, $ifaceNil)), 20, new sliceType([])); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  37984. _r = s.Data.Get(fn); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  37985. _tuple = _r; data = _tuple[0];
  37986. nl = new NetList.ptr(sliceType$4.nil, false, false, false);
  37987. _r$1 = yaml.Unmarshal(data, nl); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  37988. err = _r$1;
  37989. $r = assert.For($interfaceIsEqual(err, $ifaceNil), 41, new sliceType([err])); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  37990. $r = s.handle(nl); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  37991. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Solder.ptr.prototype.F }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._tuple = _tuple; $f.data = data; $f.err = err; $f.fn = fn; $f.nl = nl; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
  37992. };
  37993. Solder.prototype.F = function(fn) { return this.$val.F(fn); };
  37994. Solder.ptr.prototype.Root = function() {
  37995. var $ptr, s, $s, $r;
  37996. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  37997. s = this;
  37998. $r = assert.For(!($interfaceIsEqual(s.root, $ifaceNil)), 20, new sliceType([])); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  37999. return s.root;
  38000. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Solder.ptr.prototype.Root }; } $f.$ptr = $ptr; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
  38001. };
  38002. Solder.prototype.Root = function() { return this.$val.Root(); };
  38003. ptrType$2.methods = [{prop: "handle", name: "handle", pkg: "sim3/ncl/tool", typ: $funcType([ptrType$1], [], false)}, {prop: "parse", name: "parse", pkg: "sim3/ncl/tool", typ: $funcType([$String], [], false)}, {prop: "init", name: "init", pkg: "sim3/ncl/tool", typ: $funcType([], [], false)}, {prop: "UserPin", name: "UserPin", pkg: "", typ: $funcType([$String, PinClosure], [], false)}, {prop: "Y", name: "Y", pkg: "", typ: $funcType([$String], [], false)}, {prop: "F", name: "F", pkg: "", typ: $funcType([$String], [], false)}, {prop: "Root", name: "Root", pkg: "", typ: $funcType([], [ncl.Element], false)}];
  38004. Import.init([sliceType], [ncl.Element], true);
  38005. DataSource.init([{prop: "Get", name: "Get", pkg: "", typ: $funcType([$String], [sliceType$1, $error], false)}]);
  38006. PinClosure.init([ncl.Element], [ncl.Pin], false);
  38007. Solder.init([{prop: "imp", name: "imp", pkg: "sim3/ncl/tool", typ: mapType$1, tag: ""}, {prop: "ent", name: "ent", pkg: "sim3/ncl/tool", typ: mapType$2, tag: ""}, {prop: "root", name: "root", pkg: "sim3/ncl/tool", typ: ncl.Compound, tag: ""}, {prop: "pins", name: "pins", pkg: "sim3/ncl/tool", typ: mapType$3, tag: ""}, {prop: "Data", name: "Data", pkg: "", typ: DataSource, tag: ""}]);
  38008. Pin.init($String, $String);
  38009. PinList.init(Pin);
  38010. NetList.init([{prop: "Import", name: "Import", pkg: "", typ: sliceType$4, tag: ""}, {prop: "Entities", name: "Entities", pkg: "", typ: mapType$4, tag: ""}, {prop: "Netlist", name: "Netlist", pkg: "", typ: mapType$5, tag: ""}, {prop: "Init", name: "Init", pkg: "", typ: mapType$4, tag: ""}]);
  38011. $init = function() {
  38012. $pkg.$init = function() {};
  38013. /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  38014. $r = yaml.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  38015. $r = fnv.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  38016. $r = reflect.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  38017. $r = ncl.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  38018. $r = std.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  38019. $r = tri.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  38020. $r = assert.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  38021. $pkg.Src = $ifaceNil;
  38022. imps = new $Map();
  38023. init();
  38024. /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
  38025. };
  38026. $pkg.$init = $init;
  38027. return $pkg;
  38028. })();
  38029. $packages["sim3/ncl/extra"] = (function() {
  38030. var $pkg = {}, $init, ncl, tool, SM3, init, SM3r, SM, SMr;
  38031. ncl = $packages["sim3/ncl"];
  38032. tool = $packages["sim3/ncl/tool"];
  38033. SM3 = function() {
  38034. var $ptr, _r, t, $s, $r;
  38035. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  38036. t = new tool.Solder.ptr(false, false, $ifaceNil, false, $ifaceNil);
  38037. $r = t.UserPin("A", tool.In); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  38038. $r = t.UserPin("B", tool.In); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  38039. $r = t.UserPin("C", tool.Out); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  38040. $r = t.UserPin("S", tool.Out); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  38041. $r = t.F("sm3.yml"); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  38042. _r = t.Root(); /* */ $s = 6; case 6: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  38043. return _r;
  38044. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: SM3 }; } $f.$ptr = $ptr; $f._r = _r; $f.t = t; $f.$s = $s; $f.$r = $r; return $f;
  38045. };
  38046. $pkg.SM3 = SM3;
  38047. init = function() {
  38048. var $ptr;
  38049. tool.Register("SM3", tool.Simple(SM3));
  38050. tool.Register("SM3r", tool.Simple(SM3r));
  38051. tool.Register("SM", tool.Simple(SM));
  38052. tool.Register("SMr", tool.Simple(SMr));
  38053. };
  38054. SM3r = function() {
  38055. var $ptr, _r, t, $s, $r;
  38056. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  38057. t = new tool.Solder.ptr(false, false, $ifaceNil, false, $ifaceNil);
  38058. $r = t.UserPin("A", tool.In); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  38059. $r = t.UserPin("B", tool.In); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  38060. $r = t.UserPin("Cr", tool.Out); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  38061. $r = t.UserPin("Sr", tool.Out); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  38062. $r = t.F("sm3r.yml"); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  38063. _r = t.Root(); /* */ $s = 6; case 6: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  38064. return _r;
  38065. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: SM3r }; } $f.$ptr = $ptr; $f._r = _r; $f.t = t; $f.$s = $s; $f.$r = $r; return $f;
  38066. };
  38067. $pkg.SM3r = SM3r;
  38068. SM = function() {
  38069. var $ptr, _r, t, $s, $r;
  38070. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  38071. t = new tool.Solder.ptr(false, false, $ifaceNil, false, $ifaceNil);
  38072. $r = t.UserPin("C0", tool.In); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  38073. $r = t.UserPin("A", tool.In); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  38074. $r = t.UserPin("B", tool.In); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  38075. $r = t.UserPin("S", tool.Out); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  38076. $r = t.UserPin("C", tool.Out); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  38077. $r = t.F("sm.yml"); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  38078. _r = t.Root(); /* */ $s = 7; case 7: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  38079. return _r;
  38080. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: SM }; } $f.$ptr = $ptr; $f._r = _r; $f.t = t; $f.$s = $s; $f.$r = $r; return $f;
  38081. };
  38082. $pkg.SM = SM;
  38083. SMr = function() {
  38084. var $ptr, _r, t, $s, $r;
  38085. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  38086. t = new tool.Solder.ptr(false, false, $ifaceNil, false, $ifaceNil);
  38087. $r = t.UserPin("C0r", tool.In); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  38088. $r = t.UserPin("A", tool.In); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  38089. $r = t.UserPin("B", tool.In); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  38090. $r = t.UserPin("Sr", tool.Out); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  38091. $r = t.UserPin("Cr", tool.Out); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  38092. $r = t.F("smr.yml"); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  38093. _r = t.Root(); /* */ $s = 7; case 7: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  38094. return _r;
  38095. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: SMr }; } $f.$ptr = $ptr; $f._r = _r; $f.t = t; $f.$s = $s; $f.$r = $r; return $f;
  38096. };
  38097. $pkg.SMr = SMr;
  38098. $init = function() {
  38099. $pkg.$init = function() {};
  38100. /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  38101. $r = ncl.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  38102. $r = tool.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  38103. init();
  38104. /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
  38105. };
  38106. $pkg.$init = $init;
  38107. return $pkg;
  38108. })();
  38109. $packages["path/filepath"] = (function() {
  38110. var $pkg = {}, $init, bytes, errors, os, runtime, sort, strings, syscall, utf8, lazybuf, sliceType$1, ptrType$1, Clean, FromSlash, Join, isSlash, volumeNameLen;
  38111. bytes = $packages["bytes"];
  38112. errors = $packages["errors"];
  38113. os = $packages["os"];
  38114. runtime = $packages["runtime"];
  38115. sort = $packages["sort"];
  38116. strings = $packages["strings"];
  38117. syscall = $packages["syscall"];
  38118. utf8 = $packages["unicode/utf8"];
  38119. lazybuf = $pkg.lazybuf = $newType(0, $kindStruct, "filepath.lazybuf", "lazybuf", "path/filepath", function(path_, buf_, w_, volAndPath_, volLen_) {
  38120. this.$val = this;
  38121. if (arguments.length === 0) {
  38122. this.path = "";
  38123. this.buf = sliceType$1.nil;
  38124. this.w = 0;
  38125. this.volAndPath = "";
  38126. this.volLen = 0;
  38127. return;
  38128. }
  38129. this.path = path_;
  38130. this.buf = buf_;
  38131. this.w = w_;
  38132. this.volAndPath = volAndPath_;
  38133. this.volLen = volLen_;
  38134. });
  38135. sliceType$1 = $sliceType($Uint8);
  38136. ptrType$1 = $ptrType(lazybuf);
  38137. lazybuf.ptr.prototype.index = function(i) {
  38138. var $ptr, b, i, x;
  38139. b = this;
  38140. if (!(b.buf === sliceType$1.nil)) {
  38141. return (x = b.buf, ((i < 0 || i >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + i]));
  38142. }
  38143. return b.path.charCodeAt(i);
  38144. };
  38145. lazybuf.prototype.index = function(i) { return this.$val.index(i); };
  38146. lazybuf.ptr.prototype.append = function(c) {
  38147. var $ptr, b, c, x, x$1;
  38148. b = this;
  38149. if (b.buf === sliceType$1.nil) {
  38150. if (b.w < b.path.length && (b.path.charCodeAt(b.w) === c)) {
  38151. b.w = b.w + (1) >> 0;
  38152. return;
  38153. }
  38154. b.buf = $makeSlice(sliceType$1, b.path.length);
  38155. $copyString(b.buf, b.path.substring(0, b.w));
  38156. }
  38157. (x = b.buf, x$1 = b.w, ((x$1 < 0 || x$1 >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + x$1] = c));
  38158. b.w = b.w + (1) >> 0;
  38159. };
  38160. lazybuf.prototype.append = function(c) { return this.$val.append(c); };
  38161. lazybuf.ptr.prototype.string = function() {
  38162. var $ptr, b;
  38163. b = this;
  38164. if (b.buf === sliceType$1.nil) {
  38165. return b.volAndPath.substring(0, (b.volLen + b.w >> 0));
  38166. }
  38167. return b.volAndPath.substring(0, b.volLen) + $bytesToString($subslice(b.buf, 0, b.w));
  38168. };
  38169. lazybuf.prototype.string = function() { return this.$val.string(); };
  38170. Clean = function(path) {
  38171. var $ptr, _tmp, _tmp$1, _tmp$2, _tmp$3, dotdot, n, originalPath, out, path, r, rooted, volLen;
  38172. originalPath = path;
  38173. volLen = volumeNameLen(path);
  38174. path = path.substring(volLen);
  38175. if (path === "") {
  38176. if (volLen > 1 && !((originalPath.charCodeAt(1) === 58))) {
  38177. return FromSlash(originalPath);
  38178. }
  38179. return originalPath + ".";
  38180. }
  38181. rooted = os.IsPathSeparator(path.charCodeAt(0));
  38182. n = path.length;
  38183. out = new lazybuf.ptr(path, sliceType$1.nil, 0, originalPath, volLen);
  38184. _tmp = 0; _tmp$1 = 0; r = _tmp; dotdot = _tmp$1;
  38185. if (rooted) {
  38186. out.append(92);
  38187. _tmp$2 = 1; _tmp$3 = 1; r = _tmp$2; dotdot = _tmp$3;
  38188. }
  38189. while (true) {
  38190. if (!(r < n)) { break; }
  38191. if (os.IsPathSeparator(path.charCodeAt(r))) {
  38192. r = r + (1) >> 0;
  38193. } else if ((path.charCodeAt(r) === 46) && (((r + 1 >> 0) === n) || os.IsPathSeparator(path.charCodeAt((r + 1 >> 0))))) {
  38194. r = r + (1) >> 0;
  38195. } else if ((path.charCodeAt(r) === 46) && (path.charCodeAt((r + 1 >> 0)) === 46) && (((r + 2 >> 0) === n) || os.IsPathSeparator(path.charCodeAt((r + 2 >> 0))))) {
  38196. r = r + (2) >> 0;
  38197. if (out.w > dotdot) {
  38198. out.w = out.w - (1) >> 0;
  38199. while (true) {
  38200. if (!(out.w > dotdot && !os.IsPathSeparator(out.index(out.w)))) { break; }
  38201. out.w = out.w - (1) >> 0;
  38202. }
  38203. } else if (!rooted) {
  38204. if (out.w > 0) {
  38205. out.append(92);
  38206. }
  38207. out.append(46);
  38208. out.append(46);
  38209. dotdot = out.w;
  38210. }
  38211. } else {
  38212. if (rooted && !((out.w === 1)) || !rooted && !((out.w === 0))) {
  38213. out.append(92);
  38214. }
  38215. while (true) {
  38216. if (!(r < n && !os.IsPathSeparator(path.charCodeAt(r)))) { break; }
  38217. out.append(path.charCodeAt(r));
  38218. r = r + (1) >> 0;
  38219. }
  38220. }
  38221. }
  38222. if (out.w === 0) {
  38223. out.append(46);
  38224. }
  38225. return FromSlash(out.string());
  38226. };
  38227. $pkg.Clean = Clean;
  38228. FromSlash = function(path) {
  38229. var $ptr, path;
  38230. return strings.Replace(path, "/", "\\", -1);
  38231. };
  38232. $pkg.FromSlash = FromSlash;
  38233. Join = function(elem) {
  38234. var $ptr, _i, _ref, e, elem, i;
  38235. _ref = elem;
  38236. _i = 0;
  38237. while (true) {
  38238. if (!(_i < _ref.$length)) { break; }
  38239. i = _i;
  38240. e = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]);
  38241. if (!(e === "")) {
  38242. return Clean(strings.Join($subslice(elem, i), "\\"));
  38243. }
  38244. _i++;
  38245. }
  38246. return "";
  38247. };
  38248. $pkg.Join = Join;
  38249. isSlash = function(c) {
  38250. var $ptr, c;
  38251. return (c === 92) || (c === 47);
  38252. };
  38253. volumeNameLen = function(path) {
  38254. var $ptr, c, l, n, path;
  38255. if (path.length < 2) {
  38256. return 0;
  38257. }
  38258. c = path.charCodeAt(0);
  38259. if ((path.charCodeAt(1) === 58) && (97 <= c && c <= 122 || 65 <= c && c <= 90)) {
  38260. return 2;
  38261. }
  38262. l = path.length;
  38263. if (l >= 5 && isSlash(path.charCodeAt(0)) && isSlash(path.charCodeAt(1)) && !isSlash(path.charCodeAt(2)) && !((path.charCodeAt(2) === 46))) {
  38264. n = 3;
  38265. while (true) {
  38266. if (!(n < (l - 1 >> 0))) { break; }
  38267. if (isSlash(path.charCodeAt(n))) {
  38268. n = n + (1) >> 0;
  38269. if (!isSlash(path.charCodeAt(n))) {
  38270. if (path.charCodeAt(n) === 46) {
  38271. break;
  38272. }
  38273. while (true) {
  38274. if (!(n < l)) { break; }
  38275. if (isSlash(path.charCodeAt(n))) {
  38276. break;
  38277. }
  38278. n = n + (1) >> 0;
  38279. }
  38280. return n;
  38281. }
  38282. break;
  38283. }
  38284. n = n + (1) >> 0;
  38285. }
  38286. }
  38287. return 0;
  38288. };
  38289. ptrType$1.methods = [{prop: "index", name: "index", pkg: "path/filepath", typ: $funcType([$Int], [$Uint8], false)}, {prop: "append", name: "append", pkg: "path/filepath", typ: $funcType([$Uint8], [], false)}, {prop: "string", name: "string", pkg: "path/filepath", typ: $funcType([], [$String], false)}];
  38290. lazybuf.init([{prop: "path", name: "path", pkg: "path/filepath", typ: $String, tag: ""}, {prop: "buf", name: "buf", pkg: "path/filepath", typ: sliceType$1, tag: ""}, {prop: "w", name: "w", pkg: "path/filepath", typ: $Int, tag: ""}, {prop: "volAndPath", name: "volAndPath", pkg: "path/filepath", typ: $String, tag: ""}, {prop: "volLen", name: "volLen", pkg: "path/filepath", typ: $Int, tag: ""}]);
  38291. $init = function() {
  38292. $pkg.$init = function() {};
  38293. /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  38294. $r = bytes.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  38295. $r = errors.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  38296. $r = os.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  38297. $r = runtime.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  38298. $r = sort.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  38299. $r = strings.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  38300. $r = syscall.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  38301. $r = utf8.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  38302. $pkg.ErrBadPattern = errors.New("syntax error in pattern");
  38303. $pkg.SkipDir = errors.New("skip this directory");
  38304. /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
  38305. };
  38306. $pkg.$init = $init;
  38307. return $pkg;
  38308. })();
  38309. $packages["io/ioutil"] = (function() {
  38310. var $pkg = {}, $init, bytes, io, os, filepath, sort, strconv, sync, time, nopCloser, devNull, sliceType, sliceType$1, ptrType, ptrType$1, sliceType$3, blackHolePool, rand, randmu, readAll, ReadAll, ReadFile, NopCloser, reseed, nextSuffix, TempFile;
  38311. bytes = $packages["bytes"];
  38312. io = $packages["io"];
  38313. os = $packages["os"];
  38314. filepath = $packages["path/filepath"];
  38315. sort = $packages["sort"];
  38316. strconv = $packages["strconv"];
  38317. sync = $packages["sync"];
  38318. time = $packages["time"];
  38319. nopCloser = $pkg.nopCloser = $newType(0, $kindStruct, "ioutil.nopCloser", "nopCloser", "io/ioutil", function(Reader_) {
  38320. this.$val = this;
  38321. if (arguments.length === 0) {
  38322. this.Reader = $ifaceNil;
  38323. return;
  38324. }
  38325. this.Reader = Reader_;
  38326. });
  38327. devNull = $pkg.devNull = $newType(4, $kindInt, "ioutil.devNull", "devNull", "io/ioutil", null);
  38328. sliceType = $sliceType($emptyInterface);
  38329. sliceType$1 = $sliceType($Uint8);
  38330. ptrType = $ptrType(sliceType$1);
  38331. ptrType$1 = $ptrType(os.File);
  38332. sliceType$3 = $sliceType($String);
  38333. readAll = function(r, capacity) {
  38334. var $ptr, _r, _tmp, _tmp$1, _tuple, b, buf, capacity, err, r, $s, $deferred, $r;
  38335. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; b = $f.b; buf = $f.buf; capacity = $f.capacity; err = $f.err; r = $f.r; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
  38336. err = [err];
  38337. b = sliceType$1.nil;
  38338. err[0] = $ifaceNil;
  38339. buf = bytes.NewBuffer($makeSlice(sliceType$1, 0, $flatten64(capacity)));
  38340. $deferred.push([(function(err) { return function() {
  38341. var $ptr, _tuple, e, ok, panicErr;
  38342. e = $recover();
  38343. if ($interfaceIsEqual(e, $ifaceNil)) {
  38344. return;
  38345. }
  38346. _tuple = $assertType(e, $error, true); panicErr = _tuple[0]; ok = _tuple[1];
  38347. if (ok && $interfaceIsEqual(panicErr, bytes.ErrTooLarge)) {
  38348. err[0] = panicErr;
  38349. } else {
  38350. $panic(e);
  38351. }
  38352. }; })(err), []]);
  38353. _r = buf.ReadFrom(r); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  38354. _tuple = _r; err[0] = _tuple[1];
  38355. _tmp = buf.Bytes(); _tmp$1 = err[0]; b = _tmp; err[0] = _tmp$1;
  38356. return [b, err[0]];
  38357. /* */ $s = -1; case -1: } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if (!$curGoroutine.asleep) { return [b, err[0]]; } if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: readAll }; } $f.$ptr = $ptr; $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f.b = b; $f.buf = buf; $f.capacity = capacity; $f.err = err; $f.r = r; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
  38358. };
  38359. ReadAll = function(r) {
  38360. var $ptr, _r, r, $s, $r;
  38361. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  38362. _r = readAll(r, new $Int64(0, 512)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  38363. return _r;
  38364. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: ReadAll }; } $f.$ptr = $ptr; $f._r = _r; $f.r = r; $f.$s = $s; $f.$r = $r; return $f;
  38365. };
  38366. $pkg.ReadAll = ReadAll;
  38367. ReadFile = function(filename) {
  38368. var $ptr, _r, _r$1, _r$2, _tuple, _tuple$1, err, err$1, f, fi, filename, n, size, $s, $deferred, $r;
  38369. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; err = $f.err; err$1 = $f.err$1; f = $f.f; fi = $f.fi; filename = $f.filename; n = $f.n; size = $f.size; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
  38370. _tuple = os.Open(filename); f = _tuple[0]; err = _tuple[1];
  38371. if (!($interfaceIsEqual(err, $ifaceNil))) {
  38372. return [sliceType$1.nil, err];
  38373. }
  38374. $deferred.push([$methodVal(f, "Close"), []]);
  38375. n = new $Int64(0, 0);
  38376. _r = f.Stat(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  38377. _tuple$1 = _r; fi = _tuple$1[0]; err$1 = _tuple$1[1];
  38378. /* */ if ($interfaceIsEqual(err$1, $ifaceNil)) { $s = 2; continue; }
  38379. /* */ $s = 3; continue;
  38380. /* if ($interfaceIsEqual(err$1, $ifaceNil)) { */ case 2:
  38381. _r$1 = fi.Size(); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  38382. size = _r$1;
  38383. /* */ if ((size.$high < 0 || (size.$high === 0 && size.$low < 1000000000))) { $s = 5; continue; }
  38384. /* */ $s = 6; continue;
  38385. /* if ((size.$high < 0 || (size.$high === 0 && size.$low < 1000000000))) { */ case 5:
  38386. n = size;
  38387. /* } */ case 6:
  38388. /* } */ case 3:
  38389. _r$2 = readAll(f, new $Int64(n.$high + 0, n.$low + 512)); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  38390. return _r$2;
  38391. /* */ $s = -1; case -1: } return; } } catch(err) { $err = err; $s = -1; return [sliceType$1.nil, $ifaceNil]; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: ReadFile }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.err = err; $f.err$1 = err$1; $f.f = f; $f.fi = fi; $f.filename = filename; $f.n = n; $f.size = size; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
  38392. };
  38393. $pkg.ReadFile = ReadFile;
  38394. nopCloser.ptr.prototype.Close = function() {
  38395. var $ptr;
  38396. return $ifaceNil;
  38397. };
  38398. nopCloser.prototype.Close = function() { return this.$val.Close(); };
  38399. NopCloser = function(r) {
  38400. var $ptr, r, x;
  38401. return (x = new nopCloser.ptr(r), new x.constructor.elem(x));
  38402. };
  38403. $pkg.NopCloser = NopCloser;
  38404. devNull.prototype.Write = function(p) {
  38405. var $ptr, p;
  38406. return [p.$length, $ifaceNil];
  38407. };
  38408. $ptrType(devNull).prototype.Write = function(p) { return new devNull(this.$get()).Write(p); };
  38409. devNull.prototype.WriteString = function(s) {
  38410. var $ptr, s;
  38411. return [s.length, $ifaceNil];
  38412. };
  38413. $ptrType(devNull).prototype.WriteString = function(s) { return new devNull(this.$get()).WriteString(s); };
  38414. devNull.prototype.ReadFrom = function(r) {
  38415. var $ptr, _r, _r$1, _tmp, _tmp$1, _tuple, bufp, err, n, r, readSize, x, $s, $r;
  38416. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; bufp = $f.bufp; err = $f.err; n = $f.n; r = $f.r; readSize = $f.readSize; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  38417. n = new $Int64(0, 0);
  38418. err = $ifaceNil;
  38419. _r = blackHolePool.Get(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  38420. bufp = $assertType(_r, ptrType);
  38421. readSize = 0;
  38422. /* while (true) { */ case 2:
  38423. _r$1 = r.Read(bufp.$get()); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  38424. _tuple = _r$1; readSize = _tuple[0]; err = _tuple[1];
  38425. n = (x = new $Int64(0, readSize), new $Int64(n.$high + x.$high, n.$low + x.$low));
  38426. if (!($interfaceIsEqual(err, $ifaceNil))) {
  38427. blackHolePool.Put(bufp);
  38428. if ($interfaceIsEqual(err, io.EOF)) {
  38429. _tmp = n; _tmp$1 = $ifaceNil; n = _tmp; err = _tmp$1;
  38430. return [n, err];
  38431. }
  38432. return [n, err];
  38433. }
  38434. /* } */ $s = 2; continue; case 3:
  38435. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: devNull.prototype.ReadFrom }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f.bufp = bufp; $f.err = err; $f.n = n; $f.r = r; $f.readSize = readSize; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
  38436. };
  38437. $ptrType(devNull).prototype.ReadFrom = function(r) { return new devNull(this.$get()).ReadFrom(r); };
  38438. reseed = function() {
  38439. var $ptr, x, x$1;
  38440. return ((x = time.Now().UnixNano(), x$1 = new $Int64(0, os.Getpid()), new $Int64(x.$high + x$1.$high, x.$low + x$1.$low)).$low >>> 0);
  38441. };
  38442. nextSuffix = function() {
  38443. var $ptr, _r, r, $s, $r;
  38444. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  38445. $r = randmu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  38446. r = rand;
  38447. if (r === 0) {
  38448. r = reseed();
  38449. }
  38450. r = ((((r >>> 16 << 16) * 1664525 >>> 0) + (r << 16 >>> 16) * 1664525) >>> 0) + 1013904223 >>> 0;
  38451. rand = r;
  38452. $r = randmu.Unlock(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  38453. return strconv.Itoa(((1000000000 + (_r = r % 1000000000, _r === _r ? _r : $throwRuntimeError("integer divide by zero")) >>> 0) >> 0)).substring(1);
  38454. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: nextSuffix }; } $f.$ptr = $ptr; $f._r = _r; $f.r = r; $f.$s = $s; $f.$r = $r; return $f;
  38455. };
  38456. TempFile = function(dir, prefix) {
  38457. var $ptr, _arg, _arg$1, _r, _r$1, _tuple, dir, err, f, i, name, nconflict, prefix, $s, $r;
  38458. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _arg = $f._arg; _arg$1 = $f._arg$1; _r = $f._r; _r$1 = $f._r$1; _tuple = $f._tuple; dir = $f.dir; err = $f.err; f = $f.f; i = $f.i; name = $f.name; nconflict = $f.nconflict; prefix = $f.prefix; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  38459. f = ptrType$1.nil;
  38460. err = $ifaceNil;
  38461. if (dir === "") {
  38462. dir = os.TempDir();
  38463. }
  38464. nconflict = 0;
  38465. i = 0;
  38466. /* while (true) { */ case 1:
  38467. /* if (!(i < 10000)) { break; } */ if(!(i < 10000)) { $s = 2; continue; }
  38468. _arg = dir;
  38469. _r = nextSuffix(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  38470. _arg$1 = prefix + _r;
  38471. _r$1 = filepath.Join(new sliceType$3([_arg, _arg$1])); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  38472. name = _r$1;
  38473. _tuple = os.OpenFile(name, 194, 384); f = _tuple[0]; err = _tuple[1];
  38474. if (os.IsExist(err)) {
  38475. nconflict = nconflict + (1) >> 0;
  38476. if (nconflict > 10) {
  38477. rand = reseed();
  38478. }
  38479. i = i + (1) >> 0;
  38480. /* continue; */ $s = 1; continue;
  38481. }
  38482. /* break; */ $s = 2; continue;
  38483. /* } */ $s = 1; continue; case 2:
  38484. return [f, err];
  38485. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: TempFile }; } $f.$ptr = $ptr; $f._arg = _arg; $f._arg$1 = _arg$1; $f._r = _r; $f._r$1 = _r$1; $f._tuple = _tuple; $f.dir = dir; $f.err = err; $f.f = f; $f.i = i; $f.name = name; $f.nconflict = nconflict; $f.prefix = prefix; $f.$s = $s; $f.$r = $r; return $f;
  38486. };
  38487. $pkg.TempFile = TempFile;
  38488. nopCloser.methods = [{prop: "Close", name: "Close", pkg: "", typ: $funcType([], [$error], false)}];
  38489. devNull.methods = [{prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType$1], [$Int, $error], false)}, {prop: "WriteString", name: "WriteString", pkg: "", typ: $funcType([$String], [$Int, $error], false)}, {prop: "ReadFrom", name: "ReadFrom", pkg: "", typ: $funcType([io.Reader], [$Int64, $error], false)}];
  38490. nopCloser.init([{prop: "Reader", name: "", pkg: "", typ: io.Reader, tag: ""}]);
  38491. $init = function() {
  38492. $pkg.$init = function() {};
  38493. /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  38494. $r = bytes.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  38495. $r = io.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  38496. $r = os.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  38497. $r = filepath.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  38498. $r = sort.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  38499. $r = strconv.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  38500. $r = sync.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  38501. $r = time.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  38502. rand = 0;
  38503. randmu = new sync.Mutex.ptr();
  38504. blackHolePool = new sync.Pool.ptr(0, 0, sliceType.nil, (function() {
  38505. var $ptr, b, b_ptr;
  38506. b = $makeSlice(sliceType$1, 8192);
  38507. return (b_ptr || (b_ptr = new ptrType(function() { return b; }, function($v) { b = $v; })));
  38508. }));
  38509. $pkg.Discard = new devNull(0);
  38510. /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
  38511. };
  38512. $pkg.$init = $init;
  38513. return $pkg;
  38514. })();
  38515. $packages["bufio"] = (function() {
  38516. var $pkg = {}, $init, bytes, errors, io, utf8, Reader, Writer, ReadWriter, sliceType, ptrType, sliceType$1, ptrType$1, errNegativeRead, errNegativeWrite, NewReaderSize, NewReader, NewWriterSize, NewWriter, NewReadWriter;
  38517. bytes = $packages["bytes"];
  38518. errors = $packages["errors"];
  38519. io = $packages["io"];
  38520. utf8 = $packages["unicode/utf8"];
  38521. Reader = $pkg.Reader = $newType(0, $kindStruct, "bufio.Reader", "Reader", "bufio", function(buf_, rd_, r_, w_, err_, lastByte_, lastRuneSize_) {
  38522. this.$val = this;
  38523. if (arguments.length === 0) {
  38524. this.buf = sliceType.nil;
  38525. this.rd = $ifaceNil;
  38526. this.r = 0;
  38527. this.w = 0;
  38528. this.err = $ifaceNil;
  38529. this.lastByte = 0;
  38530. this.lastRuneSize = 0;
  38531. return;
  38532. }
  38533. this.buf = buf_;
  38534. this.rd = rd_;
  38535. this.r = r_;
  38536. this.w = w_;
  38537. this.err = err_;
  38538. this.lastByte = lastByte_;
  38539. this.lastRuneSize = lastRuneSize_;
  38540. });
  38541. Writer = $pkg.Writer = $newType(0, $kindStruct, "bufio.Writer", "Writer", "bufio", function(err_, buf_, n_, wr_) {
  38542. this.$val = this;
  38543. if (arguments.length === 0) {
  38544. this.err = $ifaceNil;
  38545. this.buf = sliceType.nil;
  38546. this.n = 0;
  38547. this.wr = $ifaceNil;
  38548. return;
  38549. }
  38550. this.err = err_;
  38551. this.buf = buf_;
  38552. this.n = n_;
  38553. this.wr = wr_;
  38554. });
  38555. ReadWriter = $pkg.ReadWriter = $newType(0, $kindStruct, "bufio.ReadWriter", "ReadWriter", "bufio", function(Reader_, Writer_) {
  38556. this.$val = this;
  38557. if (arguments.length === 0) {
  38558. this.Reader = ptrType.nil;
  38559. this.Writer = ptrType$1.nil;
  38560. return;
  38561. }
  38562. this.Reader = Reader_;
  38563. this.Writer = Writer_;
  38564. });
  38565. sliceType = $sliceType($Uint8);
  38566. ptrType = $ptrType(Reader);
  38567. sliceType$1 = $sliceType(sliceType);
  38568. ptrType$1 = $ptrType(Writer);
  38569. NewReaderSize = function(rd, size) {
  38570. var $ptr, _tuple, b, ok, r, rd, size;
  38571. _tuple = $assertType(rd, ptrType, true); b = _tuple[0]; ok = _tuple[1];
  38572. if (ok && b.buf.$length >= size) {
  38573. return b;
  38574. }
  38575. if (size < 16) {
  38576. size = 16;
  38577. }
  38578. r = new Reader.ptr();
  38579. r.reset($makeSlice(sliceType, size), rd);
  38580. return r;
  38581. };
  38582. $pkg.NewReaderSize = NewReaderSize;
  38583. NewReader = function(rd) {
  38584. var $ptr, rd;
  38585. return NewReaderSize(rd, 4096);
  38586. };
  38587. $pkg.NewReader = NewReader;
  38588. Reader.ptr.prototype.Reset = function(r) {
  38589. var $ptr, b, r;
  38590. b = this;
  38591. b.reset(b.buf, r);
  38592. };
  38593. Reader.prototype.Reset = function(r) { return this.$val.Reset(r); };
  38594. Reader.ptr.prototype.reset = function(buf, r) {
  38595. var $ptr, b, buf, r;
  38596. b = this;
  38597. $copy(b, new Reader.ptr(buf, r, 0, 0, $ifaceNil, -1, -1), Reader);
  38598. };
  38599. Reader.prototype.reset = function(buf, r) { return this.$val.reset(buf, r); };
  38600. Reader.ptr.prototype.fill = function() {
  38601. var $ptr, _r, _tuple, b, err, i, n, $s, $r;
  38602. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tuple = $f._tuple; b = $f.b; err = $f.err; i = $f.i; n = $f.n; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  38603. b = this;
  38604. if (b.r > 0) {
  38605. $copySlice(b.buf, $subslice(b.buf, b.r, b.w));
  38606. b.w = b.w - (b.r) >> 0;
  38607. b.r = 0;
  38608. }
  38609. if (b.w >= b.buf.$length) {
  38610. $panic(new $String("bufio: tried to fill full buffer"));
  38611. }
  38612. i = 100;
  38613. /* while (true) { */ case 1:
  38614. /* if (!(i > 0)) { break; } */ if(!(i > 0)) { $s = 2; continue; }
  38615. _r = b.rd.Read($subslice(b.buf, b.w)); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  38616. _tuple = _r; n = _tuple[0]; err = _tuple[1];
  38617. if (n < 0) {
  38618. $panic(errNegativeRead);
  38619. }
  38620. b.w = b.w + (n) >> 0;
  38621. if (!($interfaceIsEqual(err, $ifaceNil))) {
  38622. b.err = err;
  38623. return;
  38624. }
  38625. if (n > 0) {
  38626. return;
  38627. }
  38628. i = i - (1) >> 0;
  38629. /* } */ $s = 1; continue; case 2:
  38630. b.err = io.ErrNoProgress;
  38631. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Reader.ptr.prototype.fill }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple = _tuple; $f.b = b; $f.err = err; $f.i = i; $f.n = n; $f.$s = $s; $f.$r = $r; return $f;
  38632. };
  38633. Reader.prototype.fill = function() { return this.$val.fill(); };
  38634. Reader.ptr.prototype.readErr = function() {
  38635. var $ptr, b, err;
  38636. b = this;
  38637. err = b.err;
  38638. b.err = $ifaceNil;
  38639. return err;
  38640. };
  38641. Reader.prototype.readErr = function() { return this.$val.readErr(); };
  38642. Reader.ptr.prototype.Peek = function(n) {
  38643. var $ptr, avail, b, err, n, $s, $r;
  38644. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; avail = $f.avail; b = $f.b; err = $f.err; n = $f.n; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  38645. b = this;
  38646. if (n < 0) {
  38647. return [sliceType.nil, $pkg.ErrNegativeCount];
  38648. }
  38649. if (n > b.buf.$length) {
  38650. return [sliceType.nil, $pkg.ErrBufferFull];
  38651. }
  38652. /* while (true) { */ case 1:
  38653. /* if (!((b.w - b.r >> 0) < n && $interfaceIsEqual(b.err, $ifaceNil))) { break; } */ if(!((b.w - b.r >> 0) < n && $interfaceIsEqual(b.err, $ifaceNil))) { $s = 2; continue; }
  38654. $r = b.fill(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  38655. /* } */ $s = 1; continue; case 2:
  38656. err = $ifaceNil;
  38657. avail = b.w - b.r >> 0;
  38658. if (avail < n) {
  38659. n = avail;
  38660. err = b.readErr();
  38661. if ($interfaceIsEqual(err, $ifaceNil)) {
  38662. err = $pkg.ErrBufferFull;
  38663. }
  38664. }
  38665. return [$subslice(b.buf, b.r, (b.r + n >> 0)), err];
  38666. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Reader.ptr.prototype.Peek }; } $f.$ptr = $ptr; $f.avail = avail; $f.b = b; $f.err = err; $f.n = n; $f.$s = $s; $f.$r = $r; return $f;
  38667. };
  38668. Reader.prototype.Peek = function(n) { return this.$val.Peek(n); };
  38669. Reader.ptr.prototype.Read = function(p) {
  38670. var $ptr, _r, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, b, err, n, p, x, x$1, x$2, $s, $r;
  38671. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tmp$6 = $f._tmp$6; _tmp$7 = $f._tmp$7; _tmp$8 = $f._tmp$8; _tmp$9 = $f._tmp$9; _tuple = $f._tuple; b = $f.b; err = $f.err; n = $f.n; p = $f.p; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  38672. n = 0;
  38673. err = $ifaceNil;
  38674. b = this;
  38675. n = p.$length;
  38676. if (n === 0) {
  38677. _tmp = 0; _tmp$1 = b.readErr(); n = _tmp; err = _tmp$1;
  38678. return [n, err];
  38679. }
  38680. /* */ if (b.r === b.w) { $s = 1; continue; }
  38681. /* */ $s = 2; continue;
  38682. /* if (b.r === b.w) { */ case 1:
  38683. if (!($interfaceIsEqual(b.err, $ifaceNil))) {
  38684. _tmp$2 = 0; _tmp$3 = b.readErr(); n = _tmp$2; err = _tmp$3;
  38685. return [n, err];
  38686. }
  38687. /* */ if (p.$length >= b.buf.$length) { $s = 3; continue; }
  38688. /* */ $s = 4; continue;
  38689. /* if (p.$length >= b.buf.$length) { */ case 3:
  38690. _r = b.rd.Read(p); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  38691. _tuple = _r; n = _tuple[0]; b.err = _tuple[1];
  38692. if (n < 0) {
  38693. $panic(errNegativeRead);
  38694. }
  38695. if (n > 0) {
  38696. b.lastByte = ((x = n - 1 >> 0, ((x < 0 || x >= p.$length) ? $throwRuntimeError("index out of range") : p.$array[p.$offset + x])) >> 0);
  38697. b.lastRuneSize = -1;
  38698. }
  38699. _tmp$4 = n; _tmp$5 = b.readErr(); n = _tmp$4; err = _tmp$5;
  38700. return [n, err];
  38701. /* } */ case 4:
  38702. $r = b.fill(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  38703. if (b.r === b.w) {
  38704. _tmp$6 = 0; _tmp$7 = b.readErr(); n = _tmp$6; err = _tmp$7;
  38705. return [n, err];
  38706. }
  38707. /* } */ case 2:
  38708. n = $copySlice(p, $subslice(b.buf, b.r, b.w));
  38709. b.r = b.r + (n) >> 0;
  38710. b.lastByte = ((x$1 = b.buf, x$2 = b.r - 1 >> 0, ((x$2 < 0 || x$2 >= x$1.$length) ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + x$2])) >> 0);
  38711. b.lastRuneSize = -1;
  38712. _tmp$8 = n; _tmp$9 = $ifaceNil; n = _tmp$8; err = _tmp$9;
  38713. return [n, err];
  38714. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Reader.ptr.prototype.Read }; } $f.$ptr = $ptr; $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tmp$6 = _tmp$6; $f._tmp$7 = _tmp$7; $f._tmp$8 = _tmp$8; $f._tmp$9 = _tmp$9; $f._tuple = _tuple; $f.b = b; $f.err = err; $f.n = n; $f.p = p; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.$s = $s; $f.$r = $r; return $f;
  38715. };
  38716. Reader.prototype.Read = function(p) { return this.$val.Read(p); };
  38717. Reader.ptr.prototype.ReadByte = function() {
  38718. var $ptr, _tmp, _tmp$1, _tmp$2, _tmp$3, b, c, err, x, x$1, $s, $r;
  38719. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; b = $f.b; c = $f.c; err = $f.err; x = $f.x; x$1 = $f.x$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  38720. c = 0;
  38721. err = $ifaceNil;
  38722. b = this;
  38723. b.lastRuneSize = -1;
  38724. /* while (true) { */ case 1:
  38725. /* if (!(b.r === b.w)) { break; } */ if(!(b.r === b.w)) { $s = 2; continue; }
  38726. if (!($interfaceIsEqual(b.err, $ifaceNil))) {
  38727. _tmp = 0; _tmp$1 = b.readErr(); c = _tmp; err = _tmp$1;
  38728. return [c, err];
  38729. }
  38730. $r = b.fill(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  38731. /* } */ $s = 1; continue; case 2:
  38732. c = (x = b.buf, x$1 = b.r, ((x$1 < 0 || x$1 >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + x$1]));
  38733. b.r = b.r + (1) >> 0;
  38734. b.lastByte = (c >> 0);
  38735. _tmp$2 = c; _tmp$3 = $ifaceNil; c = _tmp$2; err = _tmp$3;
  38736. return [c, err];
  38737. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Reader.ptr.prototype.ReadByte }; } $f.$ptr = $ptr; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f.b = b; $f.c = c; $f.err = err; $f.x = x; $f.x$1 = x$1; $f.$s = $s; $f.$r = $r; return $f;
  38738. };
  38739. Reader.prototype.ReadByte = function() { return this.$val.ReadByte(); };
  38740. Reader.ptr.prototype.UnreadByte = function() {
  38741. var $ptr, b, x, x$1;
  38742. b = this;
  38743. if (b.lastByte < 0 || (b.r === 0) && b.w > 0) {
  38744. return $pkg.ErrInvalidUnreadByte;
  38745. }
  38746. if (b.r > 0) {
  38747. b.r = b.r - (1) >> 0;
  38748. } else {
  38749. b.w = 1;
  38750. }
  38751. (x = b.buf, x$1 = b.r, ((x$1 < 0 || x$1 >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + x$1] = (b.lastByte << 24 >>> 24)));
  38752. b.lastByte = -1;
  38753. b.lastRuneSize = -1;
  38754. return $ifaceNil;
  38755. };
  38756. Reader.prototype.UnreadByte = function() { return this.$val.UnreadByte(); };
  38757. Reader.ptr.prototype.ReadRune = function() {
  38758. var $ptr, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tuple, b, err, r, size, x, x$1, x$2, x$3, $s, $r;
  38759. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tmp$6 = $f._tmp$6; _tmp$7 = $f._tmp$7; _tuple = $f._tuple; b = $f.b; err = $f.err; r = $f.r; size = $f.size; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; x$3 = $f.x$3; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  38760. r = 0;
  38761. size = 0;
  38762. err = $ifaceNil;
  38763. b = this;
  38764. /* while (true) { */ case 1:
  38765. /* if (!((b.r + 4 >> 0) > b.w && !utf8.FullRune($subslice(b.buf, b.r, b.w)) && $interfaceIsEqual(b.err, $ifaceNil) && (b.w - b.r >> 0) < b.buf.$length)) { break; } */ if(!((b.r + 4 >> 0) > b.w && !utf8.FullRune($subslice(b.buf, b.r, b.w)) && $interfaceIsEqual(b.err, $ifaceNil) && (b.w - b.r >> 0) < b.buf.$length)) { $s = 2; continue; }
  38766. $r = b.fill(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  38767. /* } */ $s = 1; continue; case 2:
  38768. b.lastRuneSize = -1;
  38769. if (b.r === b.w) {
  38770. _tmp = 0; _tmp$1 = 0; _tmp$2 = b.readErr(); r = _tmp; size = _tmp$1; err = _tmp$2;
  38771. return [r, size, err];
  38772. }
  38773. _tmp$3 = ((x = b.buf, x$1 = b.r, ((x$1 < 0 || x$1 >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + x$1])) >> 0); _tmp$4 = 1; r = _tmp$3; size = _tmp$4;
  38774. if (r >= 128) {
  38775. _tuple = utf8.DecodeRune($subslice(b.buf, b.r, b.w)); r = _tuple[0]; size = _tuple[1];
  38776. }
  38777. b.r = b.r + (size) >> 0;
  38778. b.lastByte = ((x$2 = b.buf, x$3 = b.r - 1 >> 0, ((x$3 < 0 || x$3 >= x$2.$length) ? $throwRuntimeError("index out of range") : x$2.$array[x$2.$offset + x$3])) >> 0);
  38779. b.lastRuneSize = size;
  38780. _tmp$5 = r; _tmp$6 = size; _tmp$7 = $ifaceNil; r = _tmp$5; size = _tmp$6; err = _tmp$7;
  38781. return [r, size, err];
  38782. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Reader.ptr.prototype.ReadRune }; } $f.$ptr = $ptr; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tmp$6 = _tmp$6; $f._tmp$7 = _tmp$7; $f._tuple = _tuple; $f.b = b; $f.err = err; $f.r = r; $f.size = size; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.x$3 = x$3; $f.$s = $s; $f.$r = $r; return $f;
  38783. };
  38784. Reader.prototype.ReadRune = function() { return this.$val.ReadRune(); };
  38785. Reader.ptr.prototype.UnreadRune = function() {
  38786. var $ptr, b;
  38787. b = this;
  38788. if (b.lastRuneSize < 0 || b.r < b.lastRuneSize) {
  38789. return $pkg.ErrInvalidUnreadRune;
  38790. }
  38791. b.r = b.r - (b.lastRuneSize) >> 0;
  38792. b.lastByte = -1;
  38793. b.lastRuneSize = -1;
  38794. return $ifaceNil;
  38795. };
  38796. Reader.prototype.UnreadRune = function() { return this.$val.UnreadRune(); };
  38797. Reader.ptr.prototype.Buffered = function() {
  38798. var $ptr, b;
  38799. b = this;
  38800. return b.w - b.r >> 0;
  38801. };
  38802. Reader.prototype.Buffered = function() { return this.$val.Buffered(); };
  38803. Reader.ptr.prototype.ReadSlice = function(delim) {
  38804. var $ptr, b, delim, err, i, i$1, line, $s, $r;
  38805. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; b = $f.b; delim = $f.delim; err = $f.err; i = $f.i; i$1 = $f.i$1; line = $f.line; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  38806. line = sliceType.nil;
  38807. err = $ifaceNil;
  38808. b = this;
  38809. /* while (true) { */ case 1:
  38810. i = bytes.IndexByte($subslice(b.buf, b.r, b.w), delim);
  38811. if (i >= 0) {
  38812. line = $subslice(b.buf, b.r, ((b.r + i >> 0) + 1 >> 0));
  38813. b.r = b.r + ((i + 1 >> 0)) >> 0;
  38814. /* break; */ $s = 2; continue;
  38815. }
  38816. if (!($interfaceIsEqual(b.err, $ifaceNil))) {
  38817. line = $subslice(b.buf, b.r, b.w);
  38818. b.r = b.w;
  38819. err = b.readErr();
  38820. /* break; */ $s = 2; continue;
  38821. }
  38822. if (b.Buffered() >= b.buf.$length) {
  38823. b.r = b.w;
  38824. line = b.buf;
  38825. err = $pkg.ErrBufferFull;
  38826. /* break; */ $s = 2; continue;
  38827. }
  38828. $r = b.fill(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  38829. /* } */ $s = 1; continue; case 2:
  38830. i$1 = line.$length - 1 >> 0;
  38831. if (i$1 >= 0) {
  38832. b.lastByte = (((i$1 < 0 || i$1 >= line.$length) ? $throwRuntimeError("index out of range") : line.$array[line.$offset + i$1]) >> 0);
  38833. b.lastRuneSize = -1;
  38834. }
  38835. return [line, err];
  38836. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Reader.ptr.prototype.ReadSlice }; } $f.$ptr = $ptr; $f.b = b; $f.delim = delim; $f.err = err; $f.i = i; $f.i$1 = i$1; $f.line = line; $f.$s = $s; $f.$r = $r; return $f;
  38837. };
  38838. Reader.prototype.ReadSlice = function(delim) { return this.$val.ReadSlice(delim); };
  38839. Reader.ptr.prototype.ReadLine = function() {
  38840. var $ptr, _r, _tmp, _tmp$1, _tmp$2, _tuple, b, drop, err, isPrefix, line, x, x$1, x$2, $s, $r;
  38841. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tuple = $f._tuple; b = $f.b; drop = $f.drop; err = $f.err; isPrefix = $f.isPrefix; line = $f.line; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  38842. line = sliceType.nil;
  38843. isPrefix = false;
  38844. err = $ifaceNil;
  38845. b = this;
  38846. _r = b.ReadSlice(10); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  38847. _tuple = _r; line = _tuple[0]; err = _tuple[1];
  38848. if ($interfaceIsEqual(err, $pkg.ErrBufferFull)) {
  38849. if (line.$length > 0 && ((x = line.$length - 1 >> 0, ((x < 0 || x >= line.$length) ? $throwRuntimeError("index out of range") : line.$array[line.$offset + x])) === 13)) {
  38850. if (b.r === 0) {
  38851. $panic(new $String("bufio: tried to rewind past start of buffer"));
  38852. }
  38853. b.r = b.r - (1) >> 0;
  38854. line = $subslice(line, 0, (line.$length - 1 >> 0));
  38855. }
  38856. _tmp = line; _tmp$1 = true; _tmp$2 = $ifaceNil; line = _tmp; isPrefix = _tmp$1; err = _tmp$2;
  38857. return [line, isPrefix, err];
  38858. }
  38859. if (line.$length === 0) {
  38860. if (!($interfaceIsEqual(err, $ifaceNil))) {
  38861. line = sliceType.nil;
  38862. }
  38863. return [line, isPrefix, err];
  38864. }
  38865. err = $ifaceNil;
  38866. if ((x$1 = line.$length - 1 >> 0, ((x$1 < 0 || x$1 >= line.$length) ? $throwRuntimeError("index out of range") : line.$array[line.$offset + x$1])) === 10) {
  38867. drop = 1;
  38868. if (line.$length > 1 && ((x$2 = line.$length - 2 >> 0, ((x$2 < 0 || x$2 >= line.$length) ? $throwRuntimeError("index out of range") : line.$array[line.$offset + x$2])) === 13)) {
  38869. drop = 2;
  38870. }
  38871. line = $subslice(line, 0, (line.$length - drop >> 0));
  38872. }
  38873. return [line, isPrefix, err];
  38874. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Reader.ptr.prototype.ReadLine }; } $f.$ptr = $ptr; $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tuple = _tuple; $f.b = b; $f.drop = drop; $f.err = err; $f.isPrefix = isPrefix; $f.line = line; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.$s = $s; $f.$r = $r; return $f;
  38875. };
  38876. Reader.prototype.ReadLine = function() { return this.$val.ReadLine(); };
  38877. Reader.ptr.prototype.ReadBytes = function(delim) {
  38878. var $ptr, _i, _i$1, _r, _ref, _ref$1, _tmp, _tmp$1, _tuple, b, buf, buf$1, delim, e, err, frag, full, i, i$1, line, n, $s, $r;
  38879. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _i = $f._i; _i$1 = $f._i$1; _r = $f._r; _ref = $f._ref; _ref$1 = $f._ref$1; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; b = $f.b; buf = $f.buf; buf$1 = $f.buf$1; delim = $f.delim; e = $f.e; err = $f.err; frag = $f.frag; full = $f.full; i = $f.i; i$1 = $f.i$1; line = $f.line; n = $f.n; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  38880. line = sliceType.nil;
  38881. err = $ifaceNil;
  38882. b = this;
  38883. frag = sliceType.nil;
  38884. full = sliceType$1.nil;
  38885. err = $ifaceNil;
  38886. /* while (true) { */ case 1:
  38887. e = $ifaceNil;
  38888. _r = b.ReadSlice(delim); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  38889. _tuple = _r; frag = _tuple[0]; e = _tuple[1];
  38890. if ($interfaceIsEqual(e, $ifaceNil)) {
  38891. /* break; */ $s = 2; continue;
  38892. }
  38893. if (!($interfaceIsEqual(e, $pkg.ErrBufferFull))) {
  38894. err = e;
  38895. /* break; */ $s = 2; continue;
  38896. }
  38897. buf = $makeSlice(sliceType, frag.$length);
  38898. $copySlice(buf, frag);
  38899. full = $append(full, buf);
  38900. /* } */ $s = 1; continue; case 2:
  38901. n = 0;
  38902. _ref = full;
  38903. _i = 0;
  38904. while (true) {
  38905. if (!(_i < _ref.$length)) { break; }
  38906. i = _i;
  38907. n = n + (((i < 0 || i >= full.$length) ? $throwRuntimeError("index out of range") : full.$array[full.$offset + i]).$length) >> 0;
  38908. _i++;
  38909. }
  38910. n = n + (frag.$length) >> 0;
  38911. buf$1 = $makeSlice(sliceType, n);
  38912. n = 0;
  38913. _ref$1 = full;
  38914. _i$1 = 0;
  38915. while (true) {
  38916. if (!(_i$1 < _ref$1.$length)) { break; }
  38917. i$1 = _i$1;
  38918. n = n + ($copySlice($subslice(buf$1, n), ((i$1 < 0 || i$1 >= full.$length) ? $throwRuntimeError("index out of range") : full.$array[full.$offset + i$1]))) >> 0;
  38919. _i$1++;
  38920. }
  38921. $copySlice($subslice(buf$1, n), frag);
  38922. _tmp = buf$1; _tmp$1 = err; line = _tmp; err = _tmp$1;
  38923. return [line, err];
  38924. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Reader.ptr.prototype.ReadBytes }; } $f.$ptr = $ptr; $f._i = _i; $f._i$1 = _i$1; $f._r = _r; $f._ref = _ref; $f._ref$1 = _ref$1; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f.b = b; $f.buf = buf; $f.buf$1 = buf$1; $f.delim = delim; $f.e = e; $f.err = err; $f.frag = frag; $f.full = full; $f.i = i; $f.i$1 = i$1; $f.line = line; $f.n = n; $f.$s = $s; $f.$r = $r; return $f;
  38925. };
  38926. Reader.prototype.ReadBytes = function(delim) { return this.$val.ReadBytes(delim); };
  38927. Reader.ptr.prototype.ReadString = function(delim) {
  38928. var $ptr, _r, _tmp, _tmp$1, _tuple, b, bytes$1, delim, err, line, $s, $r;
  38929. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; b = $f.b; bytes$1 = $f.bytes$1; delim = $f.delim; err = $f.err; line = $f.line; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  38930. line = "";
  38931. err = $ifaceNil;
  38932. b = this;
  38933. _r = b.ReadBytes(delim); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  38934. _tuple = _r; bytes$1 = _tuple[0]; err = _tuple[1];
  38935. line = $bytesToString(bytes$1);
  38936. _tmp = line; _tmp$1 = err; line = _tmp; err = _tmp$1;
  38937. return [line, err];
  38938. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Reader.ptr.prototype.ReadString }; } $f.$ptr = $ptr; $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f.b = b; $f.bytes$1 = bytes$1; $f.delim = delim; $f.err = err; $f.line = line; $f.$s = $s; $f.$r = $r; return $f;
  38939. };
  38940. Reader.prototype.ReadString = function(delim) { return this.$val.ReadString(delim); };
  38941. Reader.ptr.prototype.WriteTo = function(w) {
  38942. var $ptr, _r, _r$1, _r$2, _r$3, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, b, err, err$1, err$2, err$3, m, m$1, m$2, n, ok, ok$1, r, w, w$1, x, x$1, x$2, $s, $r;
  38943. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tmp$6 = $f._tmp$6; _tmp$7 = $f._tmp$7; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; _tuple$4 = $f._tuple$4; _tuple$5 = $f._tuple$5; b = $f.b; err = $f.err; err$1 = $f.err$1; err$2 = $f.err$2; err$3 = $f.err$3; m = $f.m; m$1 = $f.m$1; m$2 = $f.m$2; n = $f.n; ok = $f.ok; ok$1 = $f.ok$1; r = $f.r; w = $f.w; w$1 = $f.w$1; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  38944. n = new $Int64(0, 0);
  38945. err = $ifaceNil;
  38946. b = this;
  38947. _r = b.writeBuf(w); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  38948. _tuple = _r; n = _tuple[0]; err = _tuple[1];
  38949. if (!($interfaceIsEqual(err, $ifaceNil))) {
  38950. return [n, err];
  38951. }
  38952. _tuple$1 = $assertType(b.rd, io.WriterTo, true); r = _tuple$1[0]; ok = _tuple$1[1];
  38953. /* */ if (ok) { $s = 2; continue; }
  38954. /* */ $s = 3; continue;
  38955. /* if (ok) { */ case 2:
  38956. _r$1 = r.WriteTo(w); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  38957. _tuple$2 = _r$1; m = _tuple$2[0]; err$1 = _tuple$2[1];
  38958. n = (x = m, new $Int64(n.$high + x.$high, n.$low + x.$low));
  38959. _tmp = n; _tmp$1 = err$1; n = _tmp; err = _tmp$1;
  38960. return [n, err];
  38961. /* } */ case 3:
  38962. _tuple$3 = $assertType(w, io.ReaderFrom, true); w$1 = _tuple$3[0]; ok$1 = _tuple$3[1];
  38963. /* */ if (ok$1) { $s = 5; continue; }
  38964. /* */ $s = 6; continue;
  38965. /* if (ok$1) { */ case 5:
  38966. _r$2 = w$1.ReadFrom(b.rd); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  38967. _tuple$4 = _r$2; m$1 = _tuple$4[0]; err$2 = _tuple$4[1];
  38968. n = (x$1 = m$1, new $Int64(n.$high + x$1.$high, n.$low + x$1.$low));
  38969. _tmp$2 = n; _tmp$3 = err$2; n = _tmp$2; err = _tmp$3;
  38970. return [n, err];
  38971. /* } */ case 6:
  38972. /* */ if ((b.w - b.r >> 0) < b.buf.$length) { $s = 8; continue; }
  38973. /* */ $s = 9; continue;
  38974. /* if ((b.w - b.r >> 0) < b.buf.$length) { */ case 8:
  38975. $r = b.fill(); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  38976. /* } */ case 9:
  38977. /* while (true) { */ case 11:
  38978. /* if (!(b.r < b.w)) { break; } */ if(!(b.r < b.w)) { $s = 12; continue; }
  38979. _r$3 = b.writeBuf(w); /* */ $s = 13; case 13: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  38980. _tuple$5 = _r$3; m$2 = _tuple$5[0]; err$3 = _tuple$5[1];
  38981. n = (x$2 = m$2, new $Int64(n.$high + x$2.$high, n.$low + x$2.$low));
  38982. if (!($interfaceIsEqual(err$3, $ifaceNil))) {
  38983. _tmp$4 = n; _tmp$5 = err$3; n = _tmp$4; err = _tmp$5;
  38984. return [n, err];
  38985. }
  38986. $r = b.fill(); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  38987. /* } */ $s = 11; continue; case 12:
  38988. if ($interfaceIsEqual(b.err, io.EOF)) {
  38989. b.err = $ifaceNil;
  38990. }
  38991. _tmp$6 = n; _tmp$7 = b.readErr(); n = _tmp$6; err = _tmp$7;
  38992. return [n, err];
  38993. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Reader.ptr.prototype.WriteTo }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tmp$6 = _tmp$6; $f._tmp$7 = _tmp$7; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f._tuple$4 = _tuple$4; $f._tuple$5 = _tuple$5; $f.b = b; $f.err = err; $f.err$1 = err$1; $f.err$2 = err$2; $f.err$3 = err$3; $f.m = m; $f.m$1 = m$1; $f.m$2 = m$2; $f.n = n; $f.ok = ok; $f.ok$1 = ok$1; $f.r = r; $f.w = w; $f.w$1 = w$1; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.$s = $s; $f.$r = $r; return $f;
  38994. };
  38995. Reader.prototype.WriteTo = function(w) { return this.$val.WriteTo(w); };
  38996. Reader.ptr.prototype.writeBuf = function(w) {
  38997. var $ptr, _r, _tuple, b, err, n, w, $s, $r;
  38998. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tuple = $f._tuple; b = $f.b; err = $f.err; n = $f.n; w = $f.w; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  38999. b = this;
  39000. _r = w.Write($subslice(b.buf, b.r, b.w)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  39001. _tuple = _r; n = _tuple[0]; err = _tuple[1];
  39002. if (n < 0) {
  39003. $panic(errNegativeWrite);
  39004. }
  39005. b.r = b.r + (n) >> 0;
  39006. return [new $Int64(0, n), err];
  39007. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Reader.ptr.prototype.writeBuf }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple = _tuple; $f.b = b; $f.err = err; $f.n = n; $f.w = w; $f.$s = $s; $f.$r = $r; return $f;
  39008. };
  39009. Reader.prototype.writeBuf = function(w) { return this.$val.writeBuf(w); };
  39010. NewWriterSize = function(w, size) {
  39011. var $ptr, _tuple, b, ok, size, w;
  39012. _tuple = $assertType(w, ptrType$1, true); b = _tuple[0]; ok = _tuple[1];
  39013. if (ok && b.buf.$length >= size) {
  39014. return b;
  39015. }
  39016. if (size <= 0) {
  39017. size = 4096;
  39018. }
  39019. return new Writer.ptr($ifaceNil, $makeSlice(sliceType, size), 0, w);
  39020. };
  39021. $pkg.NewWriterSize = NewWriterSize;
  39022. NewWriter = function(w) {
  39023. var $ptr, w;
  39024. return NewWriterSize(w, 4096);
  39025. };
  39026. $pkg.NewWriter = NewWriter;
  39027. Writer.ptr.prototype.Reset = function(w) {
  39028. var $ptr, b, w;
  39029. b = this;
  39030. b.err = $ifaceNil;
  39031. b.n = 0;
  39032. b.wr = w;
  39033. };
  39034. Writer.prototype.Reset = function(w) { return this.$val.Reset(w); };
  39035. Writer.ptr.prototype.Flush = function() {
  39036. var $ptr, _r, b, err, $s, $r;
  39037. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; b = $f.b; err = $f.err; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  39038. b = this;
  39039. _r = b.flush(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  39040. err = _r;
  39041. return err;
  39042. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Writer.ptr.prototype.Flush }; } $f.$ptr = $ptr; $f._r = _r; $f.b = b; $f.err = err; $f.$s = $s; $f.$r = $r; return $f;
  39043. };
  39044. Writer.prototype.Flush = function() { return this.$val.Flush(); };
  39045. Writer.ptr.prototype.flush = function() {
  39046. var $ptr, _r, _tuple, b, err, n, $s, $r;
  39047. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tuple = $f._tuple; b = $f.b; err = $f.err; n = $f.n; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  39048. b = this;
  39049. if (!($interfaceIsEqual(b.err, $ifaceNil))) {
  39050. return b.err;
  39051. }
  39052. if (b.n === 0) {
  39053. return $ifaceNil;
  39054. }
  39055. _r = b.wr.Write($subslice(b.buf, 0, b.n)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  39056. _tuple = _r; n = _tuple[0]; err = _tuple[1];
  39057. if (n < b.n && $interfaceIsEqual(err, $ifaceNil)) {
  39058. err = io.ErrShortWrite;
  39059. }
  39060. if (!($interfaceIsEqual(err, $ifaceNil))) {
  39061. if (n > 0 && n < b.n) {
  39062. $copySlice($subslice(b.buf, 0, (b.n - n >> 0)), $subslice(b.buf, n, b.n));
  39063. }
  39064. b.n = b.n - (n) >> 0;
  39065. b.err = err;
  39066. return err;
  39067. }
  39068. b.n = 0;
  39069. return $ifaceNil;
  39070. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Writer.ptr.prototype.flush }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple = _tuple; $f.b = b; $f.err = err; $f.n = n; $f.$s = $s; $f.$r = $r; return $f;
  39071. };
  39072. Writer.prototype.flush = function() { return this.$val.flush(); };
  39073. Writer.ptr.prototype.Available = function() {
  39074. var $ptr, b;
  39075. b = this;
  39076. return b.buf.$length - b.n >> 0;
  39077. };
  39078. Writer.prototype.Available = function() { return this.$val.Available(); };
  39079. Writer.ptr.prototype.Buffered = function() {
  39080. var $ptr, b;
  39081. b = this;
  39082. return b.n;
  39083. };
  39084. Writer.prototype.Buffered = function() { return this.$val.Buffered(); };
  39085. Writer.ptr.prototype.Write = function(p) {
  39086. var $ptr, _r, _r$1, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, b, err, n, n$1, nn, p, $s, $r;
  39087. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tuple = $f._tuple; b = $f.b; err = $f.err; n = $f.n; n$1 = $f.n$1; nn = $f.nn; p = $f.p; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  39088. nn = 0;
  39089. err = $ifaceNil;
  39090. b = this;
  39091. /* while (true) { */ case 1:
  39092. /* if (!(p.$length > b.Available() && $interfaceIsEqual(b.err, $ifaceNil))) { break; } */ if(!(p.$length > b.Available() && $interfaceIsEqual(b.err, $ifaceNil))) { $s = 2; continue; }
  39093. n = 0;
  39094. /* */ if (b.Buffered() === 0) { $s = 3; continue; }
  39095. /* */ $s = 4; continue;
  39096. /* if (b.Buffered() === 0) { */ case 3:
  39097. _r = b.wr.Write(p); /* */ $s = 6; case 6: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  39098. _tuple = _r; n = _tuple[0]; b.err = _tuple[1];
  39099. $s = 5; continue;
  39100. /* } else { */ case 4:
  39101. n = $copySlice($subslice(b.buf, b.n), p);
  39102. b.n = b.n + (n) >> 0;
  39103. _r$1 = b.flush(); /* */ $s = 7; case 7: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  39104. _r$1;
  39105. /* } */ case 5:
  39106. nn = nn + (n) >> 0;
  39107. p = $subslice(p, n);
  39108. /* } */ $s = 1; continue; case 2:
  39109. if (!($interfaceIsEqual(b.err, $ifaceNil))) {
  39110. _tmp = nn; _tmp$1 = b.err; nn = _tmp; err = _tmp$1;
  39111. return [nn, err];
  39112. }
  39113. n$1 = $copySlice($subslice(b.buf, b.n), p);
  39114. b.n = b.n + (n$1) >> 0;
  39115. nn = nn + (n$1) >> 0;
  39116. _tmp$2 = nn; _tmp$3 = $ifaceNil; nn = _tmp$2; err = _tmp$3;
  39117. return [nn, err];
  39118. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Writer.ptr.prototype.Write }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tuple = _tuple; $f.b = b; $f.err = err; $f.n = n; $f.n$1 = n$1; $f.nn = nn; $f.p = p; $f.$s = $s; $f.$r = $r; return $f;
  39119. };
  39120. Writer.prototype.Write = function(p) { return this.$val.Write(p); };
  39121. Writer.ptr.prototype.WriteByte = function(c) {
  39122. var $ptr, _r, _v, b, c, x, x$1, $s, $r;
  39123. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _v = $f._v; b = $f.b; c = $f.c; x = $f.x; x$1 = $f.x$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  39124. b = this;
  39125. if (!($interfaceIsEqual(b.err, $ifaceNil))) {
  39126. return b.err;
  39127. }
  39128. if (!(b.Available() <= 0)) { _v = false; $s = 3; continue s; }
  39129. _r = b.flush(); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  39130. _v = !($interfaceIsEqual(_r, $ifaceNil)); case 3:
  39131. /* */ if (_v) { $s = 1; continue; }
  39132. /* */ $s = 2; continue;
  39133. /* if (_v) { */ case 1:
  39134. return b.err;
  39135. /* } */ case 2:
  39136. (x = b.buf, x$1 = b.n, ((x$1 < 0 || x$1 >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + x$1] = c));
  39137. b.n = b.n + (1) >> 0;
  39138. return $ifaceNil;
  39139. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Writer.ptr.prototype.WriteByte }; } $f.$ptr = $ptr; $f._r = _r; $f._v = _v; $f.b = b; $f.c = c; $f.x = x; $f.x$1 = x$1; $f.$s = $s; $f.$r = $r; return $f;
  39140. };
  39141. Writer.prototype.WriteByte = function(c) { return this.$val.WriteByte(c); };
  39142. Writer.ptr.prototype.WriteRune = function(r) {
  39143. var $ptr, _r, _r$1, _r$2, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, b, err, n, r, size, $s, $r;
  39144. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tmp$6 = $f._tmp$6; _tmp$7 = $f._tmp$7; _tmp$8 = $f._tmp$8; _tmp$9 = $f._tmp$9; _tuple = $f._tuple; b = $f.b; err = $f.err; n = $f.n; r = $f.r; size = $f.size; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  39145. size = 0;
  39146. err = $ifaceNil;
  39147. b = this;
  39148. /* */ if (r < 128) { $s = 1; continue; }
  39149. /* */ $s = 2; continue;
  39150. /* if (r < 128) { */ case 1:
  39151. _r = b.WriteByte((r << 24 >>> 24)); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  39152. err = _r;
  39153. if (!($interfaceIsEqual(err, $ifaceNil))) {
  39154. _tmp = 0; _tmp$1 = err; size = _tmp; err = _tmp$1;
  39155. return [size, err];
  39156. }
  39157. _tmp$2 = 1; _tmp$3 = $ifaceNil; size = _tmp$2; err = _tmp$3;
  39158. return [size, err];
  39159. /* } */ case 2:
  39160. if (!($interfaceIsEqual(b.err, $ifaceNil))) {
  39161. _tmp$4 = 0; _tmp$5 = b.err; size = _tmp$4; err = _tmp$5;
  39162. return [size, err];
  39163. }
  39164. n = b.Available();
  39165. /* */ if (n < 4) { $s = 4; continue; }
  39166. /* */ $s = 5; continue;
  39167. /* if (n < 4) { */ case 4:
  39168. _r$1 = b.flush(); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  39169. _r$1;
  39170. /* */ if (!($interfaceIsEqual(b.err, $ifaceNil))) { $s = 7; continue; }
  39171. /* */ $s = 8; continue;
  39172. /* if (!($interfaceIsEqual(b.err, $ifaceNil))) { */ case 7:
  39173. _tmp$6 = 0; _tmp$7 = b.err; size = _tmp$6; err = _tmp$7;
  39174. return [size, err];
  39175. /* } */ case 8:
  39176. n = b.Available();
  39177. /* */ if (n < 4) { $s = 9; continue; }
  39178. /* */ $s = 10; continue;
  39179. /* if (n < 4) { */ case 9:
  39180. _r$2 = b.WriteString($encodeRune(r)); /* */ $s = 11; case 11: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  39181. _tuple = _r$2; size = _tuple[0]; err = _tuple[1];
  39182. return [size, err];
  39183. /* } */ case 10:
  39184. /* } */ case 5:
  39185. size = utf8.EncodeRune($subslice(b.buf, b.n), r);
  39186. b.n = b.n + (size) >> 0;
  39187. _tmp$8 = size; _tmp$9 = $ifaceNil; size = _tmp$8; err = _tmp$9;
  39188. return [size, err];
  39189. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Writer.ptr.prototype.WriteRune }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tmp$6 = _tmp$6; $f._tmp$7 = _tmp$7; $f._tmp$8 = _tmp$8; $f._tmp$9 = _tmp$9; $f._tuple = _tuple; $f.b = b; $f.err = err; $f.n = n; $f.r = r; $f.size = size; $f.$s = $s; $f.$r = $r; return $f;
  39190. };
  39191. Writer.prototype.WriteRune = function(r) { return this.$val.WriteRune(r); };
  39192. Writer.ptr.prototype.WriteString = function(s) {
  39193. var $ptr, _r, b, n, n$1, nn, s, $s, $r;
  39194. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; b = $f.b; n = $f.n; n$1 = $f.n$1; nn = $f.nn; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  39195. b = this;
  39196. nn = 0;
  39197. /* while (true) { */ case 1:
  39198. /* if (!(s.length > b.Available() && $interfaceIsEqual(b.err, $ifaceNil))) { break; } */ if(!(s.length > b.Available() && $interfaceIsEqual(b.err, $ifaceNil))) { $s = 2; continue; }
  39199. n = $copyString($subslice(b.buf, b.n), s);
  39200. b.n = b.n + (n) >> 0;
  39201. nn = nn + (n) >> 0;
  39202. s = s.substring(n);
  39203. _r = b.flush(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  39204. _r;
  39205. /* } */ $s = 1; continue; case 2:
  39206. if (!($interfaceIsEqual(b.err, $ifaceNil))) {
  39207. return [nn, b.err];
  39208. }
  39209. n$1 = $copyString($subslice(b.buf, b.n), s);
  39210. b.n = b.n + (n$1) >> 0;
  39211. nn = nn + (n$1) >> 0;
  39212. return [nn, $ifaceNil];
  39213. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Writer.ptr.prototype.WriteString }; } $f.$ptr = $ptr; $f._r = _r; $f.b = b; $f.n = n; $f.n$1 = n$1; $f.nn = nn; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
  39214. };
  39215. Writer.prototype.WriteString = function(s) { return this.$val.WriteString(s); };
  39216. Writer.ptr.prototype.ReadFrom = function(r) {
  39217. var $ptr, _r, _r$1, _r$2, _r$3, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tuple, _tuple$1, _tuple$2, b, err, err1, m, n, nr, ok, r, w, x, $s, $r;
  39218. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; b = $f.b; err = $f.err; err1 = $f.err1; m = $f.m; n = $f.n; nr = $f.nr; ok = $f.ok; r = $f.r; w = $f.w; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  39219. n = new $Int64(0, 0);
  39220. err = $ifaceNil;
  39221. b = this;
  39222. /* */ if (b.Buffered() === 0) { $s = 1; continue; }
  39223. /* */ $s = 2; continue;
  39224. /* if (b.Buffered() === 0) { */ case 1:
  39225. _tuple = $assertType(b.wr, io.ReaderFrom, true); w = _tuple[0]; ok = _tuple[1];
  39226. /* */ if (ok) { $s = 3; continue; }
  39227. /* */ $s = 4; continue;
  39228. /* if (ok) { */ case 3:
  39229. _r = w.ReadFrom(r); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  39230. _tuple$1 = _r; n = _tuple$1[0]; err = _tuple$1[1];
  39231. return [n, err];
  39232. /* } */ case 4:
  39233. /* } */ case 2:
  39234. m = 0;
  39235. /* while (true) { */ case 6:
  39236. /* */ if (b.Available() === 0) { $s = 8; continue; }
  39237. /* */ $s = 9; continue;
  39238. /* if (b.Available() === 0) { */ case 8:
  39239. _r$1 = b.flush(); /* */ $s = 10; case 10: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  39240. err1 = _r$1;
  39241. /* */ if (!($interfaceIsEqual(err1, $ifaceNil))) { $s = 11; continue; }
  39242. /* */ $s = 12; continue;
  39243. /* if (!($interfaceIsEqual(err1, $ifaceNil))) { */ case 11:
  39244. _tmp = n; _tmp$1 = err1; n = _tmp; err = _tmp$1;
  39245. return [n, err];
  39246. /* } */ case 12:
  39247. /* } */ case 9:
  39248. nr = 0;
  39249. /* while (true) { */ case 13:
  39250. /* if (!(nr < 100)) { break; } */ if(!(nr < 100)) { $s = 14; continue; }
  39251. _r$2 = r.Read($subslice(b.buf, b.n)); /* */ $s = 15; case 15: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  39252. _tuple$2 = _r$2; m = _tuple$2[0]; err = _tuple$2[1];
  39253. if (!((m === 0)) || !($interfaceIsEqual(err, $ifaceNil))) {
  39254. /* break; */ $s = 14; continue;
  39255. }
  39256. nr = nr + (1) >> 0;
  39257. /* } */ $s = 13; continue; case 14:
  39258. if (nr === 100) {
  39259. _tmp$2 = n; _tmp$3 = io.ErrNoProgress; n = _tmp$2; err = _tmp$3;
  39260. return [n, err];
  39261. }
  39262. b.n = b.n + (m) >> 0;
  39263. n = (x = new $Int64(0, m), new $Int64(n.$high + x.$high, n.$low + x.$low));
  39264. if (!($interfaceIsEqual(err, $ifaceNil))) {
  39265. /* break; */ $s = 7; continue;
  39266. }
  39267. /* } */ $s = 6; continue; case 7:
  39268. /* */ if ($interfaceIsEqual(err, io.EOF)) { $s = 16; continue; }
  39269. /* */ $s = 17; continue;
  39270. /* if ($interfaceIsEqual(err, io.EOF)) { */ case 16:
  39271. /* */ if (b.Available() === 0) { $s = 18; continue; }
  39272. /* */ $s = 19; continue;
  39273. /* if (b.Available() === 0) { */ case 18:
  39274. _r$3 = b.flush(); /* */ $s = 21; case 21: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  39275. err = _r$3;
  39276. $s = 20; continue;
  39277. /* } else { */ case 19:
  39278. err = $ifaceNil;
  39279. /* } */ case 20:
  39280. /* } */ case 17:
  39281. _tmp$4 = n; _tmp$5 = err; n = _tmp$4; err = _tmp$5;
  39282. return [n, err];
  39283. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Writer.ptr.prototype.ReadFrom }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f.b = b; $f.err = err; $f.err1 = err1; $f.m = m; $f.n = n; $f.nr = nr; $f.ok = ok; $f.r = r; $f.w = w; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
  39284. };
  39285. Writer.prototype.ReadFrom = function(r) { return this.$val.ReadFrom(r); };
  39286. NewReadWriter = function(r, w) {
  39287. var $ptr, r, w;
  39288. return new ReadWriter.ptr(r, w);
  39289. };
  39290. $pkg.NewReadWriter = NewReadWriter;
  39291. ptrType.methods = [{prop: "Reset", name: "Reset", pkg: "", typ: $funcType([io.Reader], [], false)}, {prop: "reset", name: "reset", pkg: "bufio", typ: $funcType([sliceType, io.Reader], [], false)}, {prop: "fill", name: "fill", pkg: "bufio", typ: $funcType([], [], false)}, {prop: "readErr", name: "readErr", pkg: "bufio", typ: $funcType([], [$error], false)}, {prop: "Peek", name: "Peek", pkg: "", typ: $funcType([$Int], [sliceType, $error], false)}, {prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType], [$Int, $error], false)}, {prop: "ReadByte", name: "ReadByte", pkg: "", typ: $funcType([], [$Uint8, $error], false)}, {prop: "UnreadByte", name: "UnreadByte", pkg: "", typ: $funcType([], [$error], false)}, {prop: "ReadRune", name: "ReadRune", pkg: "", typ: $funcType([], [$Int32, $Int, $error], false)}, {prop: "UnreadRune", name: "UnreadRune", pkg: "", typ: $funcType([], [$error], false)}, {prop: "Buffered", name: "Buffered", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "ReadSlice", name: "ReadSlice", pkg: "", typ: $funcType([$Uint8], [sliceType, $error], false)}, {prop: "ReadLine", name: "ReadLine", pkg: "", typ: $funcType([], [sliceType, $Bool, $error], false)}, {prop: "ReadBytes", name: "ReadBytes", pkg: "", typ: $funcType([$Uint8], [sliceType, $error], false)}, {prop: "ReadString", name: "ReadString", pkg: "", typ: $funcType([$Uint8], [$String, $error], false)}, {prop: "WriteTo", name: "WriteTo", pkg: "", typ: $funcType([io.Writer], [$Int64, $error], false)}, {prop: "writeBuf", name: "writeBuf", pkg: "bufio", typ: $funcType([io.Writer], [$Int64, $error], false)}];
  39292. ptrType$1.methods = [{prop: "Reset", name: "Reset", pkg: "", typ: $funcType([io.Writer], [], false)}, {prop: "Flush", name: "Flush", pkg: "", typ: $funcType([], [$error], false)}, {prop: "flush", name: "flush", pkg: "bufio", typ: $funcType([], [$error], false)}, {prop: "Available", name: "Available", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Buffered", name: "Buffered", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType], [$Int, $error], false)}, {prop: "WriteByte", name: "WriteByte", pkg: "", typ: $funcType([$Uint8], [$error], false)}, {prop: "WriteRune", name: "WriteRune", pkg: "", typ: $funcType([$Int32], [$Int, $error], false)}, {prop: "WriteString", name: "WriteString", pkg: "", typ: $funcType([$String], [$Int, $error], false)}, {prop: "ReadFrom", name: "ReadFrom", pkg: "", typ: $funcType([io.Reader], [$Int64, $error], false)}];
  39293. Reader.init([{prop: "buf", name: "buf", pkg: "bufio", typ: sliceType, tag: ""}, {prop: "rd", name: "rd", pkg: "bufio", typ: io.Reader, tag: ""}, {prop: "r", name: "r", pkg: "bufio", typ: $Int, tag: ""}, {prop: "w", name: "w", pkg: "bufio", typ: $Int, tag: ""}, {prop: "err", name: "err", pkg: "bufio", typ: $error, tag: ""}, {prop: "lastByte", name: "lastByte", pkg: "bufio", typ: $Int, tag: ""}, {prop: "lastRuneSize", name: "lastRuneSize", pkg: "bufio", typ: $Int, tag: ""}]);
  39294. Writer.init([{prop: "err", name: "err", pkg: "bufio", typ: $error, tag: ""}, {prop: "buf", name: "buf", pkg: "bufio", typ: sliceType, tag: ""}, {prop: "n", name: "n", pkg: "bufio", typ: $Int, tag: ""}, {prop: "wr", name: "wr", pkg: "bufio", typ: io.Writer, tag: ""}]);
  39295. ReadWriter.init([{prop: "Reader", name: "", pkg: "", typ: ptrType, tag: ""}, {prop: "Writer", name: "", pkg: "", typ: ptrType$1, tag: ""}]);
  39296. $init = function() {
  39297. $pkg.$init = function() {};
  39298. /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  39299. $r = bytes.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  39300. $r = errors.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  39301. $r = io.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  39302. $r = utf8.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  39303. $pkg.ErrInvalidUnreadByte = errors.New("bufio: invalid use of UnreadByte");
  39304. $pkg.ErrInvalidUnreadRune = errors.New("bufio: invalid use of UnreadRune");
  39305. $pkg.ErrBufferFull = errors.New("bufio: buffer full");
  39306. $pkg.ErrNegativeCount = errors.New("bufio: negative count");
  39307. errNegativeRead = errors.New("bufio: reader returned negative count from Read");
  39308. errNegativeWrite = errors.New("bufio: writer returned negative count from Write");
  39309. $pkg.ErrTooLong = errors.New("bufio.Scanner: token too long");
  39310. $pkg.ErrNegativeAdvance = errors.New("bufio.Scanner: SplitFunc returns negative advance count");
  39311. $pkg.ErrAdvanceTooFar = errors.New("bufio.Scanner: SplitFunc returns advance count beyond input");
  39312. /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
  39313. };
  39314. $pkg.$init = $init;
  39315. return $pkg;
  39316. })();
  39317. $packages["compress/flate"] = (function() {
  39318. var $pkg = {}, $init, bufio, fmt, io, math, sort, strconv, huffmanEncoder, literalNode, sliceType$4, sliceType$8, ptrType$3, sliceType$9, sliceType$10, fixedLiteralEncoding, fixedOffsetEncoding, reverseByte, newHuffmanEncoder, generateFixedLiteralEncoding, generateFixedOffsetEncoding, reverseUint16, reverseBits;
  39319. bufio = $packages["bufio"];
  39320. fmt = $packages["fmt"];
  39321. io = $packages["io"];
  39322. math = $packages["math"];
  39323. sort = $packages["sort"];
  39324. strconv = $packages["strconv"];
  39325. huffmanEncoder = $pkg.huffmanEncoder = $newType(0, $kindStruct, "flate.huffmanEncoder", "huffmanEncoder", "compress/flate", function(codeBits_, code_) {
  39326. this.$val = this;
  39327. if (arguments.length === 0) {
  39328. this.codeBits = sliceType$4.nil;
  39329. this.code = sliceType$9.nil;
  39330. return;
  39331. }
  39332. this.codeBits = codeBits_;
  39333. this.code = code_;
  39334. });
  39335. literalNode = $pkg.literalNode = $newType(0, $kindStruct, "flate.literalNode", "literalNode", "compress/flate", function(literal_, freq_) {
  39336. this.$val = this;
  39337. if (arguments.length === 0) {
  39338. this.literal = 0;
  39339. this.freq = 0;
  39340. return;
  39341. }
  39342. this.literal = literal_;
  39343. this.freq = freq_;
  39344. });
  39345. sliceType$4 = $sliceType($Uint8);
  39346. sliceType$8 = $sliceType($Int32);
  39347. ptrType$3 = $ptrType(huffmanEncoder);
  39348. sliceType$9 = $sliceType($Uint16);
  39349. sliceType$10 = $sliceType(literalNode);
  39350. newHuffmanEncoder = function(size) {
  39351. var $ptr, size;
  39352. return new huffmanEncoder.ptr($makeSlice(sliceType$4, size), $makeSlice(sliceType$9, size));
  39353. };
  39354. generateFixedLiteralEncoding = function() {
  39355. var $ptr, bits, ch, code, codeBits, h, size;
  39356. h = newHuffmanEncoder(286);
  39357. codeBits = h.codeBits;
  39358. code = h.code;
  39359. ch = 0;
  39360. ch = 0;
  39361. while (true) {
  39362. if (!(ch < 286)) { break; }
  39363. bits = 0;
  39364. size = 0;
  39365. switch (0) { default: if (ch < 144) {
  39366. bits = ch + 48 << 16 >>> 16;
  39367. size = 8;
  39368. break;
  39369. } else if (ch < 256) {
  39370. bits = (ch + 400 << 16 >>> 16) - 144 << 16 >>> 16;
  39371. size = 9;
  39372. break;
  39373. } else if (ch < 280) {
  39374. bits = ch - 256 << 16 >>> 16;
  39375. size = 7;
  39376. break;
  39377. } else {
  39378. bits = (ch + 192 << 16 >>> 16) - 280 << 16 >>> 16;
  39379. size = 8;
  39380. } }
  39381. ((ch < 0 || ch >= codeBits.$length) ? $throwRuntimeError("index out of range") : codeBits.$array[codeBits.$offset + ch] = size);
  39382. ((ch < 0 || ch >= code.$length) ? $throwRuntimeError("index out of range") : code.$array[code.$offset + ch] = reverseBits(bits, size));
  39383. ch = ch + (1) << 16 >>> 16;
  39384. }
  39385. return h;
  39386. };
  39387. generateFixedOffsetEncoding = function() {
  39388. var $ptr, ch, code, codeBits, h;
  39389. h = newHuffmanEncoder(30);
  39390. codeBits = h.codeBits;
  39391. code = h.code;
  39392. ch = 0;
  39393. while (true) {
  39394. if (!(ch < 30)) { break; }
  39395. ((ch < 0 || ch >= codeBits.$length) ? $throwRuntimeError("index out of range") : codeBits.$array[codeBits.$offset + ch] = 5);
  39396. ((ch < 0 || ch >= code.$length) ? $throwRuntimeError("index out of range") : code.$array[code.$offset + ch] = reverseBits(ch, 5));
  39397. ch = ch + (1) << 16 >>> 16;
  39398. }
  39399. return h;
  39400. };
  39401. reverseUint16 = function(v) {
  39402. var $ptr, v, x, x$1;
  39403. return (((x = v >>> 8 << 16 >>> 16, ((x < 0 || x >= reverseByte.length) ? $throwRuntimeError("index out of range") : reverseByte[x])) << 16 >>> 16) | (((x$1 = (v & 255) >>> 0, ((x$1 < 0 || x$1 >= reverseByte.length) ? $throwRuntimeError("index out of range") : reverseByte[x$1])) << 16 >>> 16) << 8 << 16 >>> 16)) >>> 0;
  39404. };
  39405. reverseBits = function(number, bitLength) {
  39406. var $ptr, bitLength, number, y;
  39407. return reverseUint16((y = (16 - bitLength << 24 >>> 24), y < 32 ? (number << y) : 0) << 16 >>> 16);
  39408. };
  39409. ptrType$3.methods = [{prop: "bitLength", name: "bitLength", pkg: "compress/flate", typ: $funcType([sliceType$8], [$Int64], false)}, {prop: "bitCounts", name: "bitCounts", pkg: "compress/flate", typ: $funcType([sliceType$10, $Int32], [sliceType$8], false)}, {prop: "assignEncodingAndSize", name: "assignEncodingAndSize", pkg: "compress/flate", typ: $funcType([sliceType$8, sliceType$10], [], false)}, {prop: "generate", name: "generate", pkg: "compress/flate", typ: $funcType([sliceType$8, $Int32], [], false)}];
  39410. huffmanEncoder.init([{prop: "codeBits", name: "codeBits", pkg: "compress/flate", typ: sliceType$4, tag: ""}, {prop: "code", name: "code", pkg: "compress/flate", typ: sliceType$9, tag: ""}]);
  39411. literalNode.init([{prop: "literal", name: "literal", pkg: "compress/flate", typ: $Uint16, tag: ""}, {prop: "freq", name: "freq", pkg: "compress/flate", typ: $Int32, tag: ""}]);
  39412. $init = function() {
  39413. $pkg.$init = function() {};
  39414. /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  39415. $r = bufio.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  39416. $r = fmt.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  39417. $r = io.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  39418. $r = math.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  39419. $r = sort.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  39420. $r = strconv.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  39421. reverseByte = $toNativeArray($kindUint8, [0, 128, 64, 192, 32, 160, 96, 224, 16, 144, 80, 208, 48, 176, 112, 240, 8, 136, 72, 200, 40, 168, 104, 232, 24, 152, 88, 216, 56, 184, 120, 248, 4, 132, 68, 196, 36, 164, 100, 228, 20, 148, 84, 212, 52, 180, 116, 244, 12, 140, 76, 204, 44, 172, 108, 236, 28, 156, 92, 220, 60, 188, 124, 252, 2, 130, 66, 194, 34, 162, 98, 226, 18, 146, 82, 210, 50, 178, 114, 242, 10, 138, 74, 202, 42, 170, 106, 234, 26, 154, 90, 218, 58, 186, 122, 250, 6, 134, 70, 198, 38, 166, 102, 230, 22, 150, 86, 214, 54, 182, 118, 246, 14, 142, 78, 206, 46, 174, 110, 238, 30, 158, 94, 222, 62, 190, 126, 254, 1, 129, 65, 193, 33, 161, 97, 225, 17, 145, 81, 209, 49, 177, 113, 241, 9, 137, 73, 201, 41, 169, 105, 233, 25, 153, 89, 217, 57, 185, 121, 249, 5, 133, 69, 197, 37, 165, 101, 229, 21, 149, 85, 213, 53, 181, 117, 245, 13, 141, 77, 205, 45, 173, 109, 237, 29, 157, 93, 221, 61, 189, 125, 253, 3, 131, 67, 195, 35, 163, 99, 227, 19, 147, 83, 211, 51, 179, 115, 243, 11, 139, 75, 203, 43, 171, 107, 235, 27, 155, 91, 219, 59, 187, 123, 251, 7, 135, 71, 199, 39, 167, 103, 231, 23, 151, 87, 215, 55, 183, 119, 247, 15, 143, 79, 207, 47, 175, 111, 239, 31, 159, 95, 223, 63, 191, 127, 255]);
  39422. fixedLiteralEncoding = generateFixedLiteralEncoding();
  39423. fixedOffsetEncoding = generateFixedOffsetEncoding();
  39424. /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
  39425. };
  39426. $pkg.$init = $init;
  39427. return $pkg;
  39428. })();
  39429. $packages["hash/crc32"] = (function() {
  39430. var $pkg = {}, $init, hash, sync, Table, makeTable;
  39431. hash = $packages["hash"];
  39432. sync = $packages["sync"];
  39433. Table = $pkg.Table = $newType(1024, $kindArray, "crc32.Table", "Table", "hash/crc32", null);
  39434. makeTable = function(poly) {
  39435. var $ptr, crc, i, j, poly, t, y;
  39436. t = Table.zero();
  39437. i = 0;
  39438. while (true) {
  39439. if (!(i < 256)) { break; }
  39440. crc = (i >>> 0);
  39441. j = 0;
  39442. while (true) {
  39443. if (!(j < 8)) { break; }
  39444. if (((crc & 1) >>> 0) === 1) {
  39445. crc = (((crc >>> 1 >>> 0)) ^ poly) >>> 0;
  39446. } else {
  39447. crc = (y = (1), y < 32 ? (crc >>> y) : 0) >>> 0;
  39448. }
  39449. j = j + (1) >> 0;
  39450. }
  39451. t.nilCheck, ((i < 0 || i >= t.length) ? $throwRuntimeError("index out of range") : t[i] = crc);
  39452. i = i + (1) >> 0;
  39453. }
  39454. return t;
  39455. };
  39456. Table.init($Uint32, 256);
  39457. $init = function() {
  39458. $pkg.$init = function() {};
  39459. /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  39460. $r = hash.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  39461. $r = sync.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  39462. $pkg.IEEETable = makeTable(3988292384);
  39463. /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
  39464. };
  39465. $pkg.$init = $init;
  39466. return $pkg;
  39467. })();
  39468. $packages["compress/gzip"] = (function() {
  39469. var $pkg = {}, $init, bufio, flate, errors, fmt, hash, crc32, io, time;
  39470. bufio = $packages["bufio"];
  39471. flate = $packages["compress/flate"];
  39472. errors = $packages["errors"];
  39473. fmt = $packages["fmt"];
  39474. hash = $packages["hash"];
  39475. crc32 = $packages["hash/crc32"];
  39476. io = $packages["io"];
  39477. time = $packages["time"];
  39478. $init = function() {
  39479. $pkg.$init = function() {};
  39480. /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  39481. $r = bufio.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  39482. $r = flate.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  39483. $r = errors.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  39484. $r = fmt.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  39485. $r = hash.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  39486. $r = crc32.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  39487. $r = io.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  39488. $r = time.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  39489. $pkg.ErrChecksum = errors.New("gzip: invalid checksum");
  39490. $pkg.ErrHeader = errors.New("gzip: invalid header");
  39491. /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
  39492. };
  39493. $pkg.$init = $init;
  39494. return $pkg;
  39495. })();
  39496. $packages["container/list"] = (function() {
  39497. var $pkg = {}, $init;
  39498. $init = function() {
  39499. $pkg.$init = function() {};
  39500. /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  39501. /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
  39502. };
  39503. $pkg.$init = $init;
  39504. return $pkg;
  39505. })();
  39506. $packages["crypto"] = (function() {
  39507. var $pkg = {}, $init, hash, io, strconv, Hash, PublicKey, PrivateKey, Signer, SignerOpts, sliceType, funcType, sliceType$1, digestSizes, hashes, RegisterHash;
  39508. hash = $packages["hash"];
  39509. io = $packages["io"];
  39510. strconv = $packages["strconv"];
  39511. Hash = $pkg.Hash = $newType(4, $kindUint, "crypto.Hash", "Hash", "crypto", null);
  39512. PublicKey = $pkg.PublicKey = $newType(8, $kindInterface, "crypto.PublicKey", "PublicKey", "crypto", null);
  39513. PrivateKey = $pkg.PrivateKey = $newType(8, $kindInterface, "crypto.PrivateKey", "PrivateKey", "crypto", null);
  39514. Signer = $pkg.Signer = $newType(8, $kindInterface, "crypto.Signer", "Signer", "crypto", null);
  39515. SignerOpts = $pkg.SignerOpts = $newType(8, $kindInterface, "crypto.SignerOpts", "SignerOpts", "crypto", null);
  39516. sliceType = $sliceType($Uint8);
  39517. funcType = $funcType([], [hash.Hash], false);
  39518. sliceType$1 = $sliceType(funcType);
  39519. Hash.prototype.HashFunc = function() {
  39520. var $ptr, h;
  39521. h = this.$val;
  39522. return h;
  39523. };
  39524. $ptrType(Hash).prototype.HashFunc = function() { return new Hash(this.$get()).HashFunc(); };
  39525. Hash.prototype.Size = function() {
  39526. var $ptr, h;
  39527. h = this.$val;
  39528. if (h > 0 && h < 14) {
  39529. return (((h < 0 || h >= digestSizes.$length) ? $throwRuntimeError("index out of range") : digestSizes.$array[digestSizes.$offset + h]) >> 0);
  39530. }
  39531. $panic(new $String("crypto: Size of unknown hash function"));
  39532. };
  39533. $ptrType(Hash).prototype.Size = function() { return new Hash(this.$get()).Size(); };
  39534. Hash.prototype.New = function() {
  39535. var $ptr, _r, f, h, $s, $r;
  39536. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; f = $f.f; h = $f.h; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  39537. h = this.$val;
  39538. /* */ if (h > 0 && h < 14) { $s = 1; continue; }
  39539. /* */ $s = 2; continue;
  39540. /* if (h > 0 && h < 14) { */ case 1:
  39541. f = ((h < 0 || h >= hashes.$length) ? $throwRuntimeError("index out of range") : hashes.$array[hashes.$offset + h]);
  39542. /* */ if (!(f === $throwNilPointerError)) { $s = 3; continue; }
  39543. /* */ $s = 4; continue;
  39544. /* if (!(f === $throwNilPointerError)) { */ case 3:
  39545. _r = f(); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  39546. return _r;
  39547. /* } */ case 4:
  39548. /* } */ case 2:
  39549. $panic(new $String("crypto: requested hash function #" + strconv.Itoa((h >> 0)) + " is unavailable"));
  39550. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Hash.prototype.New }; } $f.$ptr = $ptr; $f._r = _r; $f.f = f; $f.h = h; $f.$s = $s; $f.$r = $r; return $f;
  39551. };
  39552. $ptrType(Hash).prototype.New = function() { return new Hash(this.$get()).New(); };
  39553. Hash.prototype.Available = function() {
  39554. var $ptr, h;
  39555. h = this.$val;
  39556. return h < 14 && !(((h < 0 || h >= hashes.$length) ? $throwRuntimeError("index out of range") : hashes.$array[hashes.$offset + h]) === $throwNilPointerError);
  39557. };
  39558. $ptrType(Hash).prototype.Available = function() { return new Hash(this.$get()).Available(); };
  39559. RegisterHash = function(h, f) {
  39560. var $ptr, f, h;
  39561. if (h >= 14) {
  39562. $panic(new $String("crypto: RegisterHash of unknown hash function"));
  39563. }
  39564. ((h < 0 || h >= hashes.$length) ? $throwRuntimeError("index out of range") : hashes.$array[hashes.$offset + h] = f);
  39565. };
  39566. $pkg.RegisterHash = RegisterHash;
  39567. Hash.methods = [{prop: "HashFunc", name: "HashFunc", pkg: "", typ: $funcType([], [Hash], false)}, {prop: "Size", name: "Size", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "New", name: "New", pkg: "", typ: $funcType([], [hash.Hash], false)}, {prop: "Available", name: "Available", pkg: "", typ: $funcType([], [$Bool], false)}];
  39568. PublicKey.init([]);
  39569. PrivateKey.init([]);
  39570. Signer.init([{prop: "Public", name: "Public", pkg: "", typ: $funcType([], [PublicKey], false)}, {prop: "Sign", name: "Sign", pkg: "", typ: $funcType([io.Reader, sliceType, SignerOpts], [sliceType, $error], false)}]);
  39571. SignerOpts.init([{prop: "HashFunc", name: "HashFunc", pkg: "", typ: $funcType([], [Hash], false)}]);
  39572. $init = function() {
  39573. $pkg.$init = function() {};
  39574. /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  39575. $r = hash.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  39576. $r = io.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  39577. $r = strconv.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  39578. digestSizes = new sliceType([0, 16, 16, 20, 28, 32, 48, 64, 36, 20, 28, 32, 48, 64]);
  39579. hashes = $makeSlice(sliceType$1, 14);
  39580. /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
  39581. };
  39582. $pkg.$init = $init;
  39583. return $pkg;
  39584. })();
  39585. $packages["crypto/subtle"] = (function() {
  39586. var $pkg = {}, $init, ConstantTimeCompare, ConstantTimeSelect, ConstantTimeByteEq, ConstantTimeEq, ConstantTimeCopy, ConstantTimeLessOrEq;
  39587. ConstantTimeCompare = function(x, y) {
  39588. var $ptr, i, v, x, y;
  39589. if (!((x.$length === y.$length))) {
  39590. return 0;
  39591. }
  39592. v = 0;
  39593. i = 0;
  39594. while (true) {
  39595. if (!(i < x.$length)) { break; }
  39596. v = (v | (((((i < 0 || i >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + i]) ^ ((i < 0 || i >= y.$length) ? $throwRuntimeError("index out of range") : y.$array[y.$offset + i])) << 24 >>> 24))) >>> 0;
  39597. i = i + (1) >> 0;
  39598. }
  39599. return ConstantTimeByteEq(v, 0);
  39600. };
  39601. $pkg.ConstantTimeCompare = ConstantTimeCompare;
  39602. ConstantTimeSelect = function(v, x, y) {
  39603. var $ptr, v, x, y;
  39604. return ((~((v - 1 >> 0)) >> 0) & x) | (((v - 1 >> 0)) & y);
  39605. };
  39606. $pkg.ConstantTimeSelect = ConstantTimeSelect;
  39607. ConstantTimeByteEq = function(x, y) {
  39608. var $ptr, x, y, z;
  39609. z = ~(((x ^ y) << 24 >>> 24)) << 24 >>> 24;
  39610. z = (z & ((z >>> 4 << 24 >>> 24))) >>> 0;
  39611. z = (z & ((z >>> 2 << 24 >>> 24))) >>> 0;
  39612. z = (z & ((z >>> 1 << 24 >>> 24))) >>> 0;
  39613. return (z >> 0);
  39614. };
  39615. $pkg.ConstantTimeByteEq = ConstantTimeByteEq;
  39616. ConstantTimeEq = function(x, y) {
  39617. var $ptr, x, y, z;
  39618. z = ~(((x ^ y) >> 0)) >> 0;
  39619. z = z & ((z >> 16 >> 0));
  39620. z = z & ((z >> 8 >> 0));
  39621. z = z & ((z >> 4 >> 0));
  39622. z = z & ((z >> 2 >> 0));
  39623. z = z & ((z >> 1 >> 0));
  39624. return ((z & 1) >> 0);
  39625. };
  39626. $pkg.ConstantTimeEq = ConstantTimeEq;
  39627. ConstantTimeCopy = function(v, x, y) {
  39628. var $ptr, i, v, x, xmask, y, ymask;
  39629. if (!((x.$length === y.$length))) {
  39630. $panic(new $String("subtle: slices have different lengths"));
  39631. }
  39632. xmask = ((v - 1 >> 0) << 24 >>> 24);
  39633. ymask = ((~((v - 1 >> 0)) >> 0) << 24 >>> 24);
  39634. i = 0;
  39635. while (true) {
  39636. if (!(i < x.$length)) { break; }
  39637. ((i < 0 || i >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + i] = (((((i < 0 || i >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + i]) & xmask) >>> 0) | ((((i < 0 || i >= y.$length) ? $throwRuntimeError("index out of range") : y.$array[y.$offset + i]) & ymask) >>> 0)) >>> 0);
  39638. i = i + (1) >> 0;
  39639. }
  39640. };
  39641. $pkg.ConstantTimeCopy = ConstantTimeCopy;
  39642. ConstantTimeLessOrEq = function(x, y) {
  39643. var $ptr, x, x32, y, y32;
  39644. x32 = (x >> 0);
  39645. y32 = (y >> 0);
  39646. return (((((((x32 - y32 >> 0) - 1 >> 0)) >> 31 >> 0)) & 1) >> 0);
  39647. };
  39648. $pkg.ConstantTimeLessOrEq = ConstantTimeLessOrEq;
  39649. $init = function() {
  39650. $pkg.$init = function() {};
  39651. /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  39652. /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
  39653. };
  39654. $pkg.$init = $init;
  39655. return $pkg;
  39656. })();
  39657. $packages["crypto/cipher"] = (function() {
  39658. var $pkg = {}, $init, subtle, errors, io, runtime, cbc, cbcEncrypter, cbcDecrypter, Block, Stream, BlockMode, ctr, AEAD, gcmFieldElement, gcm, sliceType, sliceType$1, ptrType, ptrType$1, arrayType, arrayType$1, ptrType$3, ptrType$4, ptrType$5, ptrType$6, errOpen, gcmReductionTable, newCBC, NewCBCEncrypter, NewCBCDecrypter, dup, NewCTR, NewGCM, reverseBits, gcmAdd, gcmDouble, gcmInc32, sliceForAppend, getUint64, putUint64, safeXORBytes, xorBytes, xorWords;
  39659. subtle = $packages["crypto/subtle"];
  39660. errors = $packages["errors"];
  39661. io = $packages["io"];
  39662. runtime = $packages["runtime"];
  39663. cbc = $pkg.cbc = $newType(0, $kindStruct, "cipher.cbc", "cbc", "crypto/cipher", function(b_, blockSize_, iv_, tmp_) {
  39664. this.$val = this;
  39665. if (arguments.length === 0) {
  39666. this.b = $ifaceNil;
  39667. this.blockSize = 0;
  39668. this.iv = sliceType$1.nil;
  39669. this.tmp = sliceType$1.nil;
  39670. return;
  39671. }
  39672. this.b = b_;
  39673. this.blockSize = blockSize_;
  39674. this.iv = iv_;
  39675. this.tmp = tmp_;
  39676. });
  39677. cbcEncrypter = $pkg.cbcEncrypter = $newType(0, $kindStruct, "cipher.cbcEncrypter", "cbcEncrypter", "crypto/cipher", function(b_, blockSize_, iv_, tmp_) {
  39678. this.$val = this;
  39679. if (arguments.length === 0) {
  39680. this.b = $ifaceNil;
  39681. this.blockSize = 0;
  39682. this.iv = sliceType$1.nil;
  39683. this.tmp = sliceType$1.nil;
  39684. return;
  39685. }
  39686. this.b = b_;
  39687. this.blockSize = blockSize_;
  39688. this.iv = iv_;
  39689. this.tmp = tmp_;
  39690. });
  39691. cbcDecrypter = $pkg.cbcDecrypter = $newType(0, $kindStruct, "cipher.cbcDecrypter", "cbcDecrypter", "crypto/cipher", function(b_, blockSize_, iv_, tmp_) {
  39692. this.$val = this;
  39693. if (arguments.length === 0) {
  39694. this.b = $ifaceNil;
  39695. this.blockSize = 0;
  39696. this.iv = sliceType$1.nil;
  39697. this.tmp = sliceType$1.nil;
  39698. return;
  39699. }
  39700. this.b = b_;
  39701. this.blockSize = blockSize_;
  39702. this.iv = iv_;
  39703. this.tmp = tmp_;
  39704. });
  39705. Block = $pkg.Block = $newType(8, $kindInterface, "cipher.Block", "Block", "crypto/cipher", null);
  39706. Stream = $pkg.Stream = $newType(8, $kindInterface, "cipher.Stream", "Stream", "crypto/cipher", null);
  39707. BlockMode = $pkg.BlockMode = $newType(8, $kindInterface, "cipher.BlockMode", "BlockMode", "crypto/cipher", null);
  39708. ctr = $pkg.ctr = $newType(0, $kindStruct, "cipher.ctr", "ctr", "crypto/cipher", function(b_, ctr_, out_, outUsed_) {
  39709. this.$val = this;
  39710. if (arguments.length === 0) {
  39711. this.b = $ifaceNil;
  39712. this.ctr = sliceType$1.nil;
  39713. this.out = sliceType$1.nil;
  39714. this.outUsed = 0;
  39715. return;
  39716. }
  39717. this.b = b_;
  39718. this.ctr = ctr_;
  39719. this.out = out_;
  39720. this.outUsed = outUsed_;
  39721. });
  39722. AEAD = $pkg.AEAD = $newType(8, $kindInterface, "cipher.AEAD", "AEAD", "crypto/cipher", null);
  39723. gcmFieldElement = $pkg.gcmFieldElement = $newType(0, $kindStruct, "cipher.gcmFieldElement", "gcmFieldElement", "crypto/cipher", function(low_, high_) {
  39724. this.$val = this;
  39725. if (arguments.length === 0) {
  39726. this.low = new $Uint64(0, 0);
  39727. this.high = new $Uint64(0, 0);
  39728. return;
  39729. }
  39730. this.low = low_;
  39731. this.high = high_;
  39732. });
  39733. gcm = $pkg.gcm = $newType(0, $kindStruct, "cipher.gcm", "gcm", "crypto/cipher", function(cipher_, productTable_) {
  39734. this.$val = this;
  39735. if (arguments.length === 0) {
  39736. this.cipher = $ifaceNil;
  39737. this.productTable = arrayType$1.zero();
  39738. return;
  39739. }
  39740. this.cipher = cipher_;
  39741. this.productTable = productTable_;
  39742. });
  39743. sliceType = $sliceType($Uint16);
  39744. sliceType$1 = $sliceType($Uint8);
  39745. ptrType = $ptrType(cbcEncrypter);
  39746. ptrType$1 = $ptrType(cbcDecrypter);
  39747. arrayType = $arrayType($Uint8, 16);
  39748. arrayType$1 = $arrayType(gcmFieldElement, 16);
  39749. ptrType$3 = $ptrType(ctr);
  39750. ptrType$4 = $ptrType(gcmFieldElement);
  39751. ptrType$5 = $ptrType(arrayType);
  39752. ptrType$6 = $ptrType(gcm);
  39753. newCBC = function(b, iv) {
  39754. var $ptr, _r, _r$1, b, iv, $s, $r;
  39755. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; b = $f.b; iv = $f.iv; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  39756. _r = b.BlockSize(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  39757. _r$1 = b.BlockSize(); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  39758. return new cbc.ptr(b, _r, dup(iv), $makeSlice(sliceType$1, _r$1));
  39759. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: newCBC }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f.b = b; $f.iv = iv; $f.$s = $s; $f.$r = $r; return $f;
  39760. };
  39761. NewCBCEncrypter = function(b, iv) {
  39762. var $ptr, _r, _r$1, b, iv, $s, $r;
  39763. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; b = $f.b; iv = $f.iv; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  39764. _r = b.BlockSize(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  39765. /* */ if (!((iv.$length === _r))) { $s = 1; continue; }
  39766. /* */ $s = 2; continue;
  39767. /* if (!((iv.$length === _r))) { */ case 1:
  39768. $panic(new $String("cipher.NewCBCEncrypter: IV length must equal block size"));
  39769. /* } */ case 2:
  39770. _r$1 = newCBC(b, iv); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  39771. return $pointerOfStructConversion(_r$1, ptrType);
  39772. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: NewCBCEncrypter }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f.b = b; $f.iv = iv; $f.$s = $s; $f.$r = $r; return $f;
  39773. };
  39774. $pkg.NewCBCEncrypter = NewCBCEncrypter;
  39775. cbcEncrypter.ptr.prototype.BlockSize = function() {
  39776. var $ptr, x;
  39777. x = this;
  39778. return x.blockSize;
  39779. };
  39780. cbcEncrypter.prototype.BlockSize = function() { return this.$val.BlockSize(); };
  39781. cbcEncrypter.ptr.prototype.CryptBlocks = function(dst, src) {
  39782. var $ptr, _r, dst, iv, src, x, $s, $r;
  39783. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; dst = $f.dst; iv = $f.iv; src = $f.src; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  39784. x = this;
  39785. if (!(((_r = src.$length % x.blockSize, _r === _r ? _r : $throwRuntimeError("integer divide by zero")) === 0))) {
  39786. $panic(new $String("crypto/cipher: input not full blocks"));
  39787. }
  39788. if (dst.$length < src.$length) {
  39789. $panic(new $String("crypto/cipher: output smaller than input"));
  39790. }
  39791. iv = x.iv;
  39792. /* while (true) { */ case 1:
  39793. /* if (!(src.$length > 0)) { break; } */ if(!(src.$length > 0)) { $s = 2; continue; }
  39794. xorBytes($subslice(dst, 0, x.blockSize), $subslice(src, 0, x.blockSize), iv);
  39795. $r = x.b.Encrypt($subslice(dst, 0, x.blockSize), $subslice(dst, 0, x.blockSize)); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  39796. iv = $subslice(dst, 0, x.blockSize);
  39797. src = $subslice(src, x.blockSize);
  39798. dst = $subslice(dst, x.blockSize);
  39799. /* } */ $s = 1; continue; case 2:
  39800. $copySlice(x.iv, iv);
  39801. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: cbcEncrypter.ptr.prototype.CryptBlocks }; } $f.$ptr = $ptr; $f._r = _r; $f.dst = dst; $f.iv = iv; $f.src = src; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
  39802. };
  39803. cbcEncrypter.prototype.CryptBlocks = function(dst, src) { return this.$val.CryptBlocks(dst, src); };
  39804. cbcEncrypter.ptr.prototype.SetIV = function(iv) {
  39805. var $ptr, iv, x;
  39806. x = this;
  39807. if (!((iv.$length === x.iv.$length))) {
  39808. $panic(new $String("cipher: incorrect length IV"));
  39809. }
  39810. $copySlice(x.iv, iv);
  39811. };
  39812. cbcEncrypter.prototype.SetIV = function(iv) { return this.$val.SetIV(iv); };
  39813. NewCBCDecrypter = function(b, iv) {
  39814. var $ptr, _r, _r$1, b, iv, $s, $r;
  39815. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; b = $f.b; iv = $f.iv; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  39816. _r = b.BlockSize(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  39817. /* */ if (!((iv.$length === _r))) { $s = 1; continue; }
  39818. /* */ $s = 2; continue;
  39819. /* if (!((iv.$length === _r))) { */ case 1:
  39820. $panic(new $String("cipher.NewCBCDecrypter: IV length must equal block size"));
  39821. /* } */ case 2:
  39822. _r$1 = newCBC(b, iv); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  39823. return $pointerOfStructConversion(_r$1, ptrType$1);
  39824. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: NewCBCDecrypter }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f.b = b; $f.iv = iv; $f.$s = $s; $f.$r = $r; return $f;
  39825. };
  39826. $pkg.NewCBCDecrypter = NewCBCDecrypter;
  39827. cbcDecrypter.ptr.prototype.BlockSize = function() {
  39828. var $ptr, x;
  39829. x = this;
  39830. return x.blockSize;
  39831. };
  39832. cbcDecrypter.prototype.BlockSize = function() { return this.$val.BlockSize(); };
  39833. cbcDecrypter.ptr.prototype.CryptBlocks = function(dst, src) {
  39834. var $ptr, _r, _tmp, _tmp$1, dst, end, prev, src, start, x, $s, $r;
  39835. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; dst = $f.dst; end = $f.end; prev = $f.prev; src = $f.src; start = $f.start; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  39836. x = this;
  39837. if (!(((_r = src.$length % x.blockSize, _r === _r ? _r : $throwRuntimeError("integer divide by zero")) === 0))) {
  39838. $panic(new $String("crypto/cipher: input not full blocks"));
  39839. }
  39840. if (dst.$length < src.$length) {
  39841. $panic(new $String("crypto/cipher: output smaller than input"));
  39842. }
  39843. if (src.$length === 0) {
  39844. return;
  39845. }
  39846. end = src.$length;
  39847. start = end - x.blockSize >> 0;
  39848. prev = start - x.blockSize >> 0;
  39849. $copySlice(x.tmp, $subslice(src, start, end));
  39850. /* while (true) { */ case 1:
  39851. /* if (!(start > 0)) { break; } */ if(!(start > 0)) { $s = 2; continue; }
  39852. $r = x.b.Decrypt($subslice(dst, start, end), $subslice(src, start, end)); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  39853. xorBytes($subslice(dst, start, end), $subslice(dst, start, end), $subslice(src, prev, start));
  39854. end = start;
  39855. start = prev;
  39856. prev = prev - (x.blockSize) >> 0;
  39857. /* } */ $s = 1; continue; case 2:
  39858. $r = x.b.Decrypt($subslice(dst, start, end), $subslice(src, start, end)); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  39859. xorBytes($subslice(dst, start, end), $subslice(dst, start, end), x.iv);
  39860. _tmp = x.tmp; _tmp$1 = x.iv; x.iv = _tmp; x.tmp = _tmp$1;
  39861. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: cbcDecrypter.ptr.prototype.CryptBlocks }; } $f.$ptr = $ptr; $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f.dst = dst; $f.end = end; $f.prev = prev; $f.src = src; $f.start = start; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
  39862. };
  39863. cbcDecrypter.prototype.CryptBlocks = function(dst, src) { return this.$val.CryptBlocks(dst, src); };
  39864. cbcDecrypter.ptr.prototype.SetIV = function(iv) {
  39865. var $ptr, iv, x;
  39866. x = this;
  39867. if (!((iv.$length === x.iv.$length))) {
  39868. $panic(new $String("cipher: incorrect length IV"));
  39869. }
  39870. $copySlice(x.iv, iv);
  39871. };
  39872. cbcDecrypter.prototype.SetIV = function(iv) { return this.$val.SetIV(iv); };
  39873. dup = function(p) {
  39874. var $ptr, p, q;
  39875. q = $makeSlice(sliceType$1, p.$length);
  39876. $copySlice(q, p);
  39877. return q;
  39878. };
  39879. NewCTR = function(block, iv) {
  39880. var $ptr, _r, _r$1, _r$2, block, bufSize, iv, $s, $r;
  39881. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; block = $f.block; bufSize = $f.bufSize; iv = $f.iv; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  39882. _r = block.BlockSize(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  39883. /* */ if (!((iv.$length === _r))) { $s = 1; continue; }
  39884. /* */ $s = 2; continue;
  39885. /* if (!((iv.$length === _r))) { */ case 1:
  39886. $panic(new $String("cipher.NewCTR: IV length must equal block size"));
  39887. /* } */ case 2:
  39888. bufSize = 512;
  39889. _r$1 = block.BlockSize(); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  39890. /* */ if (bufSize < _r$1) { $s = 4; continue; }
  39891. /* */ $s = 5; continue;
  39892. /* if (bufSize < _r$1) { */ case 4:
  39893. _r$2 = block.BlockSize(); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  39894. bufSize = _r$2;
  39895. /* } */ case 5:
  39896. return new ctr.ptr(block, dup(iv), $makeSlice(sliceType$1, 0, bufSize), 0);
  39897. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: NewCTR }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f.block = block; $f.bufSize = bufSize; $f.iv = iv; $f.$s = $s; $f.$r = $r; return $f;
  39898. };
  39899. $pkg.NewCTR = NewCTR;
  39900. ctr.ptr.prototype.refill = function() {
  39901. var $ptr, _r, bs, i, remain, x, x$1, x$2, x$3, $s, $r;
  39902. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; bs = $f.bs; i = $f.i; remain = $f.remain; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; x$3 = $f.x$3; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  39903. x = this;
  39904. remain = x.out.$length - x.outUsed >> 0;
  39905. if (remain > x.outUsed) {
  39906. return;
  39907. }
  39908. $copySlice(x.out, $subslice(x.out, x.outUsed));
  39909. x.out = $subslice(x.out, 0, x.out.$capacity);
  39910. _r = x.b.BlockSize(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  39911. bs = _r;
  39912. /* while (true) { */ case 2:
  39913. /* if (!(remain < (x.out.$length - bs >> 0))) { break; } */ if(!(remain < (x.out.$length - bs >> 0))) { $s = 3; continue; }
  39914. $r = x.b.Encrypt($subslice(x.out, remain), x.ctr); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  39915. remain = remain + (bs) >> 0;
  39916. i = x.ctr.$length - 1 >> 0;
  39917. while (true) {
  39918. if (!(i >= 0)) { break; }
  39919. (x$2 = x.ctr, ((i < 0 || i >= x$2.$length) ? $throwRuntimeError("index out of range") : x$2.$array[x$2.$offset + i] = (x$1 = x.ctr, ((i < 0 || i >= x$1.$length) ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + i])) + (1) << 24 >>> 24));
  39920. if (!(((x$3 = x.ctr, ((i < 0 || i >= x$3.$length) ? $throwRuntimeError("index out of range") : x$3.$array[x$3.$offset + i])) === 0))) {
  39921. break;
  39922. }
  39923. i = i - (1) >> 0;
  39924. }
  39925. /* } */ $s = 2; continue; case 3:
  39926. x.out = $subslice(x.out, 0, remain);
  39927. x.outUsed = 0;
  39928. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: ctr.ptr.prototype.refill }; } $f.$ptr = $ptr; $f._r = _r; $f.bs = bs; $f.i = i; $f.remain = remain; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.x$3 = x$3; $f.$s = $s; $f.$r = $r; return $f;
  39929. };
  39930. ctr.prototype.refill = function() { return this.$val.refill(); };
  39931. ctr.ptr.prototype.XORKeyStream = function(dst, src) {
  39932. var $ptr, _r, dst, n, src, x, $s, $r;
  39933. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; dst = $f.dst; n = $f.n; src = $f.src; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  39934. x = this;
  39935. /* while (true) { */ case 1:
  39936. /* if (!(src.$length > 0)) { break; } */ if(!(src.$length > 0)) { $s = 2; continue; }
  39937. _r = x.b.BlockSize(); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  39938. /* */ if (x.outUsed >= (x.out.$length - _r >> 0)) { $s = 3; continue; }
  39939. /* */ $s = 4; continue;
  39940. /* if (x.outUsed >= (x.out.$length - _r >> 0)) { */ case 3:
  39941. $r = x.refill(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  39942. /* } */ case 4:
  39943. n = xorBytes(dst, src, $subslice(x.out, x.outUsed));
  39944. dst = $subslice(dst, n);
  39945. src = $subslice(src, n);
  39946. x.outUsed = x.outUsed + (n) >> 0;
  39947. /* } */ $s = 1; continue; case 2:
  39948. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: ctr.ptr.prototype.XORKeyStream }; } $f.$ptr = $ptr; $f._r = _r; $f.dst = dst; $f.n = n; $f.src = src; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
  39949. };
  39950. ctr.prototype.XORKeyStream = function(dst, src) { return this.$val.XORKeyStream(dst, src); };
  39951. NewGCM = function(cipher) {
  39952. var $ptr, _q, _r, cipher, g, i, key, x, x$1, x$10, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9, $s, $r;
  39953. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _q = $f._q; _r = $f._r; cipher = $f.cipher; g = $f.g; i = $f.i; key = $f.key; x = $f.x; x$1 = $f.x$1; x$10 = $f.x$10; x$2 = $f.x$2; x$3 = $f.x$3; x$4 = $f.x$4; x$5 = $f.x$5; x$6 = $f.x$6; x$7 = $f.x$7; x$8 = $f.x$8; x$9 = $f.x$9; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  39954. x = [x];
  39955. _r = cipher.BlockSize(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  39956. /* */ if (!((_r === 16))) { $s = 1; continue; }
  39957. /* */ $s = 2; continue;
  39958. /* if (!((_r === 16))) { */ case 1:
  39959. return [$ifaceNil, errors.New("cipher: NewGCM requires 128-bit block cipher")];
  39960. /* } */ case 2:
  39961. key = $clone(arrayType.zero(), arrayType);
  39962. $r = cipher.Encrypt(new sliceType$1(key), new sliceType$1(key)); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  39963. g = new gcm.ptr(cipher, arrayType$1.zero());
  39964. x[0] = new gcmFieldElement.ptr(getUint64($subslice(new sliceType$1(key), 0, 8)), getUint64($subslice(new sliceType$1(key), 8)));
  39965. $copy((x$1 = g.productTable, x$2 = reverseBits(1), ((x$2 < 0 || x$2 >= x$1.length) ? $throwRuntimeError("index out of range") : x$1[x$2])), x[0], gcmFieldElement);
  39966. i = 2;
  39967. while (true) {
  39968. if (!(i < 16)) { break; }
  39969. $copy((x$5 = g.productTable, x$6 = reverseBits(i), ((x$6 < 0 || x$6 >= x$5.length) ? $throwRuntimeError("index out of range") : x$5[x$6])), gcmDouble((x$3 = g.productTable, x$4 = reverseBits((_q = i / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero"))), ((x$4 < 0 || x$4 >= x$3.length) ? $throwRuntimeError("index out of range") : x$3[x$4]))), gcmFieldElement);
  39970. $copy((x$9 = g.productTable, x$10 = reverseBits(i + 1 >> 0), ((x$10 < 0 || x$10 >= x$9.length) ? $throwRuntimeError("index out of range") : x$9[x$10])), gcmAdd((x$7 = g.productTable, x$8 = reverseBits(i), ((x$8 < 0 || x$8 >= x$7.length) ? $throwRuntimeError("index out of range") : x$7[x$8])), x[0]), gcmFieldElement);
  39971. i = i + (2) >> 0;
  39972. }
  39973. return [g, $ifaceNil];
  39974. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: NewGCM }; } $f.$ptr = $ptr; $f._q = _q; $f._r = _r; $f.cipher = cipher; $f.g = g; $f.i = i; $f.key = key; $f.x = x; $f.x$1 = x$1; $f.x$10 = x$10; $f.x$2 = x$2; $f.x$3 = x$3; $f.x$4 = x$4; $f.x$5 = x$5; $f.x$6 = x$6; $f.x$7 = x$7; $f.x$8 = x$8; $f.x$9 = x$9; $f.$s = $s; $f.$r = $r; return $f;
  39975. };
  39976. $pkg.NewGCM = NewGCM;
  39977. gcm.ptr.prototype.NonceSize = function() {
  39978. var $ptr;
  39979. return 12;
  39980. };
  39981. gcm.prototype.NonceSize = function() { return this.$val.NonceSize(); };
  39982. gcm.ptr.prototype.Overhead = function() {
  39983. var $ptr;
  39984. return 16;
  39985. };
  39986. gcm.prototype.Overhead = function() { return this.$val.Overhead(); };
  39987. gcm.ptr.prototype.Seal = function(dst, nonce, plaintext, data) {
  39988. var $ptr, _tmp, _tmp$1, _tuple, counter, data, dst, g, nonce, out, plaintext, ret, tagMask, $s, $r;
  39989. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; counter = $f.counter; data = $f.data; dst = $f.dst; g = $f.g; nonce = $f.nonce; out = $f.out; plaintext = $f.plaintext; ret = $f.ret; tagMask = $f.tagMask; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  39990. counter = [counter];
  39991. tagMask = [tagMask];
  39992. g = this;
  39993. if (!((nonce.$length === 12))) {
  39994. $panic(new $String("cipher: incorrect nonce length given to GCM"));
  39995. }
  39996. _tuple = sliceForAppend(dst, plaintext.$length + 16 >> 0); ret = _tuple[0]; out = _tuple[1];
  39997. _tmp = $clone(arrayType.zero(), arrayType); _tmp$1 = $clone(arrayType.zero(), arrayType); counter[0] = $clone(_tmp, arrayType); tagMask[0] = $clone(_tmp$1, arrayType);
  39998. $copySlice(new sliceType$1(counter[0]), nonce);
  39999. counter[0][15] = 1;
  40000. $r = g.cipher.Encrypt(new sliceType$1(tagMask[0]), new sliceType$1(counter[0])); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  40001. gcmInc32(counter[0]);
  40002. $r = g.counterCrypt(out, plaintext, counter[0]); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  40003. g.auth($subslice(out, plaintext.$length), $subslice(out, 0, plaintext.$length), data, tagMask[0]);
  40004. return ret;
  40005. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: gcm.ptr.prototype.Seal }; } $f.$ptr = $ptr; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f.counter = counter; $f.data = data; $f.dst = dst; $f.g = g; $f.nonce = nonce; $f.out = out; $f.plaintext = plaintext; $f.ret = ret; $f.tagMask = tagMask; $f.$s = $s; $f.$r = $r; return $f;
  40006. };
  40007. gcm.prototype.Seal = function(dst, nonce, plaintext, data) { return this.$val.Seal(dst, nonce, plaintext, data); };
  40008. gcm.ptr.prototype.Open = function(dst, nonce, ciphertext, data) {
  40009. var $ptr, _tmp, _tmp$1, _tuple, ciphertext, counter, data, dst, expectedTag, g, nonce, out, ret, tag, tagMask, $s, $r;
  40010. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; ciphertext = $f.ciphertext; counter = $f.counter; data = $f.data; dst = $f.dst; expectedTag = $f.expectedTag; g = $f.g; nonce = $f.nonce; out = $f.out; ret = $f.ret; tag = $f.tag; tagMask = $f.tagMask; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  40011. counter = [counter];
  40012. tagMask = [tagMask];
  40013. g = this;
  40014. if (!((nonce.$length === 12))) {
  40015. $panic(new $String("cipher: incorrect nonce length given to GCM"));
  40016. }
  40017. if (ciphertext.$length < 16) {
  40018. return [sliceType$1.nil, errOpen];
  40019. }
  40020. tag = $subslice(ciphertext, (ciphertext.$length - 16 >> 0));
  40021. ciphertext = $subslice(ciphertext, 0, (ciphertext.$length - 16 >> 0));
  40022. _tmp = $clone(arrayType.zero(), arrayType); _tmp$1 = $clone(arrayType.zero(), arrayType); counter[0] = $clone(_tmp, arrayType); tagMask[0] = $clone(_tmp$1, arrayType);
  40023. $copySlice(new sliceType$1(counter[0]), nonce);
  40024. counter[0][15] = 1;
  40025. $r = g.cipher.Encrypt(new sliceType$1(tagMask[0]), new sliceType$1(counter[0])); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  40026. gcmInc32(counter[0]);
  40027. expectedTag = $clone(arrayType.zero(), arrayType);
  40028. g.auth(new sliceType$1(expectedTag), ciphertext, data, tagMask[0]);
  40029. if (!((subtle.ConstantTimeCompare(new sliceType$1(expectedTag), tag) === 1))) {
  40030. return [sliceType$1.nil, errOpen];
  40031. }
  40032. _tuple = sliceForAppend(dst, ciphertext.$length); ret = _tuple[0]; out = _tuple[1];
  40033. $r = g.counterCrypt(out, ciphertext, counter[0]); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  40034. return [ret, $ifaceNil];
  40035. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: gcm.ptr.prototype.Open }; } $f.$ptr = $ptr; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f.ciphertext = ciphertext; $f.counter = counter; $f.data = data; $f.dst = dst; $f.expectedTag = expectedTag; $f.g = g; $f.nonce = nonce; $f.out = out; $f.ret = ret; $f.tag = tag; $f.tagMask = tagMask; $f.$s = $s; $f.$r = $r; return $f;
  40036. };
  40037. gcm.prototype.Open = function(dst, nonce, ciphertext, data) { return this.$val.Open(dst, nonce, ciphertext, data); };
  40038. reverseBits = function(i) {
  40039. var $ptr, i;
  40040. i = ((((i << 2 >> 0)) & 12)) | ((((i >> 2 >> 0)) & 3));
  40041. i = ((((i << 1 >> 0)) & 10)) | ((((i >> 1 >> 0)) & 5));
  40042. return i;
  40043. };
  40044. gcmAdd = function(x, y) {
  40045. var $ptr, x, x$1, x$2, x$3, x$4, y;
  40046. return new gcmFieldElement.ptr((x$1 = x.low, x$2 = y.low, new $Uint64(x$1.$high ^ x$2.$high, (x$1.$low ^ x$2.$low) >>> 0)), (x$3 = x.high, x$4 = y.high, new $Uint64(x$3.$high ^ x$4.$high, (x$3.$low ^ x$4.$low) >>> 0)));
  40047. };
  40048. gcmDouble = function(x) {
  40049. var $ptr, double$1, msbSet, x, x$1, x$2, x$3, x$4, x$5, x$6;
  40050. double$1 = new gcmFieldElement.ptr();
  40051. msbSet = (x$1 = (x$2 = x.high, new $Uint64(x$2.$high & 0, (x$2.$low & 1) >>> 0)), (x$1.$high === 0 && x$1.$low === 1));
  40052. double$1.high = $shiftRightUint64(x.high, 1);
  40053. double$1.high = (x$3 = double$1.high, x$4 = $shiftLeft64(x.low, 63), new $Uint64(x$3.$high | x$4.$high, (x$3.$low | x$4.$low) >>> 0));
  40054. double$1.low = $shiftRightUint64(x.low, 1);
  40055. if (msbSet) {
  40056. double$1.low = (x$5 = double$1.low, x$6 = new $Uint64(3774873600, 0), new $Uint64(x$5.$high ^ x$6.$high, (x$5.$low ^ x$6.$low) >>> 0));
  40057. }
  40058. return double$1;
  40059. };
  40060. gcm.ptr.prototype.mul = function(y) {
  40061. var $ptr, g, i, j, msw, t, word, x, x$1, x$10, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9, y, z;
  40062. g = this;
  40063. z = $clone(new gcmFieldElement.ptr(), gcmFieldElement);
  40064. i = 0;
  40065. while (true) {
  40066. if (!(i < 2)) { break; }
  40067. word = y.high;
  40068. if (i === 1) {
  40069. word = y.low;
  40070. }
  40071. j = 0;
  40072. while (true) {
  40073. if (!(j < 64)) { break; }
  40074. msw = (x = z.high, new $Uint64(x.$high & 0, (x.$low & 15) >>> 0));
  40075. z.high = $shiftRightUint64(z.high, (4));
  40076. z.high = (x$1 = z.high, x$2 = $shiftLeft64(z.low, 60), new $Uint64(x$1.$high | x$2.$high, (x$1.$low | x$2.$low) >>> 0));
  40077. z.low = $shiftRightUint64(z.low, (4));
  40078. z.low = (x$3 = z.low, x$4 = $shiftLeft64(new $Uint64(0, (($flatten64(msw) < 0 || $flatten64(msw) >= gcmReductionTable.$length) ? $throwRuntimeError("index out of range") : gcmReductionTable.$array[gcmReductionTable.$offset + $flatten64(msw)])), 48), new $Uint64(x$3.$high ^ x$4.$high, (x$3.$low ^ x$4.$low) >>> 0));
  40079. t = (x$5 = g.productTable, x$6 = new $Uint64(word.$high & 0, (word.$low & 15) >>> 0), (($flatten64(x$6) < 0 || $flatten64(x$6) >= x$5.length) ? $throwRuntimeError("index out of range") : x$5[$flatten64(x$6)]));
  40080. z.low = (x$7 = z.low, x$8 = t.low, new $Uint64(x$7.$high ^ x$8.$high, (x$7.$low ^ x$8.$low) >>> 0));
  40081. z.high = (x$9 = z.high, x$10 = t.high, new $Uint64(x$9.$high ^ x$10.$high, (x$9.$low ^ x$10.$low) >>> 0));
  40082. word = $shiftRightUint64(word, (4));
  40083. j = j + (4) >> 0;
  40084. }
  40085. i = i + (1) >> 0;
  40086. }
  40087. $copy(y, z, gcmFieldElement);
  40088. };
  40089. gcm.prototype.mul = function(y) { return this.$val.mul(y); };
  40090. gcm.ptr.prototype.updateBlocks = function(y, blocks) {
  40091. var $ptr, blocks, g, x, x$1, x$2, x$3, y;
  40092. g = this;
  40093. while (true) {
  40094. if (!(blocks.$length > 0)) { break; }
  40095. y.low = (x = y.low, x$1 = getUint64(blocks), new $Uint64(x.$high ^ x$1.$high, (x.$low ^ x$1.$low) >>> 0));
  40096. y.high = (x$2 = y.high, x$3 = getUint64($subslice(blocks, 8)), new $Uint64(x$2.$high ^ x$3.$high, (x$2.$low ^ x$3.$low) >>> 0));
  40097. g.mul(y);
  40098. blocks = $subslice(blocks, 16);
  40099. }
  40100. };
  40101. gcm.prototype.updateBlocks = function(y, blocks) { return this.$val.updateBlocks(y, blocks); };
  40102. gcm.ptr.prototype.update = function(y, data) {
  40103. var $ptr, data, fullBlocks, g, partialBlock, y;
  40104. g = this;
  40105. fullBlocks = ((data.$length >> 4 >> 0)) << 4 >> 0;
  40106. g.updateBlocks(y, $subslice(data, 0, fullBlocks));
  40107. if (!((data.$length === fullBlocks))) {
  40108. partialBlock = $clone(arrayType.zero(), arrayType);
  40109. $copySlice(new sliceType$1(partialBlock), $subslice(data, fullBlocks));
  40110. g.updateBlocks(y, new sliceType$1(partialBlock));
  40111. }
  40112. };
  40113. gcm.prototype.update = function(y, data) { return this.$val.update(y, data); };
  40114. gcmInc32 = function(counterBlock) {
  40115. var $ptr, counterBlock, i;
  40116. i = 15;
  40117. while (true) {
  40118. if (!(i >= 12)) { break; }
  40119. counterBlock.nilCheck, ((i < 0 || i >= counterBlock.length) ? $throwRuntimeError("index out of range") : counterBlock[i] = (counterBlock.nilCheck, ((i < 0 || i >= counterBlock.length) ? $throwRuntimeError("index out of range") : counterBlock[i])) + (1) << 24 >>> 24);
  40120. if (!(((counterBlock.nilCheck, ((i < 0 || i >= counterBlock.length) ? $throwRuntimeError("index out of range") : counterBlock[i])) === 0))) {
  40121. break;
  40122. }
  40123. i = i - (1) >> 0;
  40124. }
  40125. };
  40126. sliceForAppend = function(in$1, n) {
  40127. var $ptr, head, in$1, n, tail, total;
  40128. head = sliceType$1.nil;
  40129. tail = sliceType$1.nil;
  40130. total = in$1.$length + n >> 0;
  40131. if (in$1.$capacity >= total) {
  40132. head = $subslice(in$1, 0, total);
  40133. } else {
  40134. head = $makeSlice(sliceType$1, total);
  40135. $copySlice(head, in$1);
  40136. }
  40137. tail = $subslice(head, in$1.$length);
  40138. return [head, tail];
  40139. };
  40140. gcm.ptr.prototype.counterCrypt = function(out, in$1, counter) {
  40141. var $ptr, counter, g, in$1, mask, out, $s, $r;
  40142. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; counter = $f.counter; g = $f.g; in$1 = $f.in$1; mask = $f.mask; out = $f.out; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  40143. g = this;
  40144. mask = $clone(arrayType.zero(), arrayType);
  40145. /* while (true) { */ case 1:
  40146. /* if (!(in$1.$length >= 16)) { break; } */ if(!(in$1.$length >= 16)) { $s = 2; continue; }
  40147. $r = g.cipher.Encrypt(new sliceType$1(mask), new sliceType$1(counter)); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  40148. gcmInc32(counter);
  40149. xorWords(out, in$1, new sliceType$1(mask));
  40150. out = $subslice(out, 16);
  40151. in$1 = $subslice(in$1, 16);
  40152. /* } */ $s = 1; continue; case 2:
  40153. /* */ if (in$1.$length > 0) { $s = 4; continue; }
  40154. /* */ $s = 5; continue;
  40155. /* if (in$1.$length > 0) { */ case 4:
  40156. $r = g.cipher.Encrypt(new sliceType$1(mask), new sliceType$1(counter)); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  40157. gcmInc32(counter);
  40158. xorBytes(out, in$1, new sliceType$1(mask));
  40159. /* } */ case 5:
  40160. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: gcm.ptr.prototype.counterCrypt }; } $f.$ptr = $ptr; $f.counter = counter; $f.g = g; $f.in$1 = in$1; $f.mask = mask; $f.out = out; $f.$s = $s; $f.$r = $r; return $f;
  40161. };
  40162. gcm.prototype.counterCrypt = function(out, in$1, counter) { return this.$val.counterCrypt(out, in$1, counter); };
  40163. gcm.ptr.prototype.auth = function(out, ciphertext, additionalData, tagMask) {
  40164. var $ptr, additionalData, ciphertext, g, out, tagMask, x, x$1, x$2, x$3, y;
  40165. g = this;
  40166. y = $clone(new gcmFieldElement.ptr(), gcmFieldElement);
  40167. g.update(y, additionalData);
  40168. g.update(y, ciphertext);
  40169. y.low = (x = y.low, x$1 = $mul64(new $Uint64(0, additionalData.$length), new $Uint64(0, 8)), new $Uint64(x.$high ^ x$1.$high, (x.$low ^ x$1.$low) >>> 0));
  40170. y.high = (x$2 = y.high, x$3 = $mul64(new $Uint64(0, ciphertext.$length), new $Uint64(0, 8)), new $Uint64(x$2.$high ^ x$3.$high, (x$2.$low ^ x$3.$low) >>> 0));
  40171. g.mul(y);
  40172. putUint64(out, y.low);
  40173. putUint64($subslice(out, 8), y.high);
  40174. xorWords(out, out, new sliceType$1(tagMask));
  40175. };
  40176. gcm.prototype.auth = function(out, ciphertext, additionalData, tagMask) { return this.$val.auth(out, ciphertext, additionalData, tagMask); };
  40177. getUint64 = function(data) {
  40178. var $ptr, data, r, x, x$1, x$10, x$11, x$12, x$13, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9;
  40179. r = (x = (x$1 = (x$2 = (x$3 = (x$4 = (x$5 = (x$6 = $shiftLeft64(new $Uint64(0, (0 >= data.$length ? $throwRuntimeError("index out of range") : data.$array[data.$offset + 0])), 56), x$7 = $shiftLeft64(new $Uint64(0, (1 >= data.$length ? $throwRuntimeError("index out of range") : data.$array[data.$offset + 1])), 48), new $Uint64(x$6.$high | x$7.$high, (x$6.$low | x$7.$low) >>> 0)), x$8 = $shiftLeft64(new $Uint64(0, (2 >= data.$length ? $throwRuntimeError("index out of range") : data.$array[data.$offset + 2])), 40), new $Uint64(x$5.$high | x$8.$high, (x$5.$low | x$8.$low) >>> 0)), x$9 = $shiftLeft64(new $Uint64(0, (3 >= data.$length ? $throwRuntimeError("index out of range") : data.$array[data.$offset + 3])), 32), new $Uint64(x$4.$high | x$9.$high, (x$4.$low | x$9.$low) >>> 0)), x$10 = $shiftLeft64(new $Uint64(0, (4 >= data.$length ? $throwRuntimeError("index out of range") : data.$array[data.$offset + 4])), 24), new $Uint64(x$3.$high | x$10.$high, (x$3.$low | x$10.$low) >>> 0)), x$11 = $shiftLeft64(new $Uint64(0, (5 >= data.$length ? $throwRuntimeError("index out of range") : data.$array[data.$offset + 5])), 16), new $Uint64(x$2.$high | x$11.$high, (x$2.$low | x$11.$low) >>> 0)), x$12 = $shiftLeft64(new $Uint64(0, (6 >= data.$length ? $throwRuntimeError("index out of range") : data.$array[data.$offset + 6])), 8), new $Uint64(x$1.$high | x$12.$high, (x$1.$low | x$12.$low) >>> 0)), x$13 = new $Uint64(0, (7 >= data.$length ? $throwRuntimeError("index out of range") : data.$array[data.$offset + 7])), new $Uint64(x.$high | x$13.$high, (x.$low | x$13.$low) >>> 0));
  40180. return r;
  40181. };
  40182. putUint64 = function(out, v) {
  40183. var $ptr, out, v;
  40184. (0 >= out.$length ? $throwRuntimeError("index out of range") : out.$array[out.$offset + 0] = ($shiftRightUint64(v, 56).$low << 24 >>> 24));
  40185. (1 >= out.$length ? $throwRuntimeError("index out of range") : out.$array[out.$offset + 1] = ($shiftRightUint64(v, 48).$low << 24 >>> 24));
  40186. (2 >= out.$length ? $throwRuntimeError("index out of range") : out.$array[out.$offset + 2] = ($shiftRightUint64(v, 40).$low << 24 >>> 24));
  40187. (3 >= out.$length ? $throwRuntimeError("index out of range") : out.$array[out.$offset + 3] = ($shiftRightUint64(v, 32).$low << 24 >>> 24));
  40188. (4 >= out.$length ? $throwRuntimeError("index out of range") : out.$array[out.$offset + 4] = ($shiftRightUint64(v, 24).$low << 24 >>> 24));
  40189. (5 >= out.$length ? $throwRuntimeError("index out of range") : out.$array[out.$offset + 5] = ($shiftRightUint64(v, 16).$low << 24 >>> 24));
  40190. (6 >= out.$length ? $throwRuntimeError("index out of range") : out.$array[out.$offset + 6] = ($shiftRightUint64(v, 8).$low << 24 >>> 24));
  40191. (7 >= out.$length ? $throwRuntimeError("index out of range") : out.$array[out.$offset + 7] = (v.$low << 24 >>> 24));
  40192. };
  40193. safeXORBytes = function(dst, a, b) {
  40194. var $ptr, a, b, dst, i, n;
  40195. n = a.$length;
  40196. if (b.$length < n) {
  40197. n = b.$length;
  40198. }
  40199. i = 0;
  40200. while (true) {
  40201. if (!(i < n)) { break; }
  40202. ((i < 0 || i >= dst.$length) ? $throwRuntimeError("index out of range") : dst.$array[dst.$offset + i] = (((i < 0 || i >= a.$length) ? $throwRuntimeError("index out of range") : a.$array[a.$offset + i]) ^ ((i < 0 || i >= b.$length) ? $throwRuntimeError("index out of range") : b.$array[b.$offset + i])) << 24 >>> 24);
  40203. i = i + (1) >> 0;
  40204. }
  40205. return n;
  40206. };
  40207. xorBytes = function(dst, a, b) {
  40208. var $ptr, a, b, dst;
  40209. return safeXORBytes(dst, a, b);
  40210. };
  40211. xorWords = function(dst, a, b) {
  40212. var $ptr, a, b, dst;
  40213. safeXORBytes(dst, a, b);
  40214. };
  40215. ptrType.methods = [{prop: "BlockSize", name: "BlockSize", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "CryptBlocks", name: "CryptBlocks", pkg: "", typ: $funcType([sliceType$1, sliceType$1], [], false)}, {prop: "SetIV", name: "SetIV", pkg: "", typ: $funcType([sliceType$1], [], false)}];
  40216. ptrType$1.methods = [{prop: "BlockSize", name: "BlockSize", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "CryptBlocks", name: "CryptBlocks", pkg: "", typ: $funcType([sliceType$1, sliceType$1], [], false)}, {prop: "SetIV", name: "SetIV", pkg: "", typ: $funcType([sliceType$1], [], false)}];
  40217. ptrType$3.methods = [{prop: "refill", name: "refill", pkg: "crypto/cipher", typ: $funcType([], [], false)}, {prop: "XORKeyStream", name: "XORKeyStream", pkg: "", typ: $funcType([sliceType$1, sliceType$1], [], false)}];
  40218. ptrType$6.methods = [{prop: "NonceSize", name: "NonceSize", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Overhead", name: "Overhead", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Seal", name: "Seal", pkg: "", typ: $funcType([sliceType$1, sliceType$1, sliceType$1, sliceType$1], [sliceType$1], false)}, {prop: "Open", name: "Open", pkg: "", typ: $funcType([sliceType$1, sliceType$1, sliceType$1, sliceType$1], [sliceType$1, $error], false)}, {prop: "mul", name: "mul", pkg: "crypto/cipher", typ: $funcType([ptrType$4], [], false)}, {prop: "updateBlocks", name: "updateBlocks", pkg: "crypto/cipher", typ: $funcType([ptrType$4, sliceType$1], [], false)}, {prop: "update", name: "update", pkg: "crypto/cipher", typ: $funcType([ptrType$4, sliceType$1], [], false)}, {prop: "counterCrypt", name: "counterCrypt", pkg: "crypto/cipher", typ: $funcType([sliceType$1, sliceType$1, ptrType$5], [], false)}, {prop: "auth", name: "auth", pkg: "crypto/cipher", typ: $funcType([sliceType$1, sliceType$1, sliceType$1, ptrType$5], [], false)}];
  40219. cbc.init([{prop: "b", name: "b", pkg: "crypto/cipher", typ: Block, tag: ""}, {prop: "blockSize", name: "blockSize", pkg: "crypto/cipher", typ: $Int, tag: ""}, {prop: "iv", name: "iv", pkg: "crypto/cipher", typ: sliceType$1, tag: ""}, {prop: "tmp", name: "tmp", pkg: "crypto/cipher", typ: sliceType$1, tag: ""}]);
  40220. cbcEncrypter.init([{prop: "b", name: "b", pkg: "crypto/cipher", typ: Block, tag: ""}, {prop: "blockSize", name: "blockSize", pkg: "crypto/cipher", typ: $Int, tag: ""}, {prop: "iv", name: "iv", pkg: "crypto/cipher", typ: sliceType$1, tag: ""}, {prop: "tmp", name: "tmp", pkg: "crypto/cipher", typ: sliceType$1, tag: ""}]);
  40221. cbcDecrypter.init([{prop: "b", name: "b", pkg: "crypto/cipher", typ: Block, tag: ""}, {prop: "blockSize", name: "blockSize", pkg: "crypto/cipher", typ: $Int, tag: ""}, {prop: "iv", name: "iv", pkg: "crypto/cipher", typ: sliceType$1, tag: ""}, {prop: "tmp", name: "tmp", pkg: "crypto/cipher", typ: sliceType$1, tag: ""}]);
  40222. Block.init([{prop: "BlockSize", name: "BlockSize", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Decrypt", name: "Decrypt", pkg: "", typ: $funcType([sliceType$1, sliceType$1], [], false)}, {prop: "Encrypt", name: "Encrypt", pkg: "", typ: $funcType([sliceType$1, sliceType$1], [], false)}]);
  40223. Stream.init([{prop: "XORKeyStream", name: "XORKeyStream", pkg: "", typ: $funcType([sliceType$1, sliceType$1], [], false)}]);
  40224. BlockMode.init([{prop: "BlockSize", name: "BlockSize", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "CryptBlocks", name: "CryptBlocks", pkg: "", typ: $funcType([sliceType$1, sliceType$1], [], false)}]);
  40225. ctr.init([{prop: "b", name: "b", pkg: "crypto/cipher", typ: Block, tag: ""}, {prop: "ctr", name: "ctr", pkg: "crypto/cipher", typ: sliceType$1, tag: ""}, {prop: "out", name: "out", pkg: "crypto/cipher", typ: sliceType$1, tag: ""}, {prop: "outUsed", name: "outUsed", pkg: "crypto/cipher", typ: $Int, tag: ""}]);
  40226. AEAD.init([{prop: "NonceSize", name: "NonceSize", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Open", name: "Open", pkg: "", typ: $funcType([sliceType$1, sliceType$1, sliceType$1, sliceType$1], [sliceType$1, $error], false)}, {prop: "Overhead", name: "Overhead", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Seal", name: "Seal", pkg: "", typ: $funcType([sliceType$1, sliceType$1, sliceType$1, sliceType$1], [sliceType$1], false)}]);
  40227. gcmFieldElement.init([{prop: "low", name: "low", pkg: "crypto/cipher", typ: $Uint64, tag: ""}, {prop: "high", name: "high", pkg: "crypto/cipher", typ: $Uint64, tag: ""}]);
  40228. gcm.init([{prop: "cipher", name: "cipher", pkg: "crypto/cipher", typ: Block, tag: ""}, {prop: "productTable", name: "productTable", pkg: "crypto/cipher", typ: arrayType$1, tag: ""}]);
  40229. $init = function() {
  40230. $pkg.$init = function() {};
  40231. /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  40232. $r = subtle.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  40233. $r = errors.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  40234. $r = io.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  40235. $r = runtime.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  40236. errOpen = errors.New("cipher: message authentication failed");
  40237. gcmReductionTable = new sliceType([0, 7200, 14400, 9312, 28800, 27808, 18624, 21728, 57600, 64800, 55616, 50528, 37248, 36256, 43456, 46560]);
  40238. /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
  40239. };
  40240. $pkg.$init = $init;
  40241. return $pkg;
  40242. })();
  40243. $packages["crypto/aes"] = (function() {
  40244. var $pkg = {}, $init, cipher, strconv, aesCipher, KeySizeError, sliceType, sliceType$1, ptrType, powx, sbox0, sbox1, te0, te1, te2, te3, td0, td1, td2, td3, encryptBlockGo, decryptBlockGo, subw, rotw, expandKeyGo, NewCipher, encryptBlock, decryptBlock, expandKey;
  40245. cipher = $packages["crypto/cipher"];
  40246. strconv = $packages["strconv"];
  40247. aesCipher = $pkg.aesCipher = $newType(0, $kindStruct, "aes.aesCipher", "aesCipher", "crypto/aes", function(enc_, dec_) {
  40248. this.$val = this;
  40249. if (arguments.length === 0) {
  40250. this.enc = sliceType.nil;
  40251. this.dec = sliceType.nil;
  40252. return;
  40253. }
  40254. this.enc = enc_;
  40255. this.dec = dec_;
  40256. });
  40257. KeySizeError = $pkg.KeySizeError = $newType(4, $kindInt, "aes.KeySizeError", "KeySizeError", "crypto/aes", null);
  40258. sliceType = $sliceType($Uint32);
  40259. sliceType$1 = $sliceType($Uint8);
  40260. ptrType = $ptrType(aesCipher);
  40261. encryptBlockGo = function(xk, dst, src) {
  40262. var $ptr, _q, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$16, _tmp$17, _tmp$18, _tmp$19, _tmp$2, _tmp$20, _tmp$21, _tmp$22, _tmp$23, _tmp$24, _tmp$25, _tmp$26, _tmp$27, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, dst, k, nr, r, s0, s1, s2, s3, src, t0, t1, t2, t3, x, x$1, x$10, x$11, x$12, x$13, x$14, x$15, x$16, x$17, x$18, x$19, x$2, x$20, x$21, x$22, x$23, x$24, x$25, x$26, x$27, x$28, x$29, x$3, x$30, x$31, x$32, x$33, x$34, x$35, x$36, x$37, x$38, x$39, x$4, x$5, x$6, x$7, x$8, x$9, xk;
  40263. _tmp = 0; _tmp$1 = 0; _tmp$2 = 0; _tmp$3 = 0; _tmp$4 = 0; _tmp$5 = 0; _tmp$6 = 0; _tmp$7 = 0; s0 = _tmp; s1 = _tmp$1; s2 = _tmp$2; s3 = _tmp$3; t0 = _tmp$4; t1 = _tmp$5; t2 = _tmp$6; t3 = _tmp$7;
  40264. s0 = ((((((((0 >= src.$length ? $throwRuntimeError("index out of range") : src.$array[src.$offset + 0]) >>> 0) << 24 >>> 0) | (((1 >= src.$length ? $throwRuntimeError("index out of range") : src.$array[src.$offset + 1]) >>> 0) << 16 >>> 0)) >>> 0) | (((2 >= src.$length ? $throwRuntimeError("index out of range") : src.$array[src.$offset + 2]) >>> 0) << 8 >>> 0)) >>> 0) | ((3 >= src.$length ? $throwRuntimeError("index out of range") : src.$array[src.$offset + 3]) >>> 0)) >>> 0;
  40265. s1 = ((((((((4 >= src.$length ? $throwRuntimeError("index out of range") : src.$array[src.$offset + 4]) >>> 0) << 24 >>> 0) | (((5 >= src.$length ? $throwRuntimeError("index out of range") : src.$array[src.$offset + 5]) >>> 0) << 16 >>> 0)) >>> 0) | (((6 >= src.$length ? $throwRuntimeError("index out of range") : src.$array[src.$offset + 6]) >>> 0) << 8 >>> 0)) >>> 0) | ((7 >= src.$length ? $throwRuntimeError("index out of range") : src.$array[src.$offset + 7]) >>> 0)) >>> 0;
  40266. s2 = ((((((((8 >= src.$length ? $throwRuntimeError("index out of range") : src.$array[src.$offset + 8]) >>> 0) << 24 >>> 0) | (((9 >= src.$length ? $throwRuntimeError("index out of range") : src.$array[src.$offset + 9]) >>> 0) << 16 >>> 0)) >>> 0) | (((10 >= src.$length ? $throwRuntimeError("index out of range") : src.$array[src.$offset + 10]) >>> 0) << 8 >>> 0)) >>> 0) | ((11 >= src.$length ? $throwRuntimeError("index out of range") : src.$array[src.$offset + 11]) >>> 0)) >>> 0;
  40267. s3 = ((((((((12 >= src.$length ? $throwRuntimeError("index out of range") : src.$array[src.$offset + 12]) >>> 0) << 24 >>> 0) | (((13 >= src.$length ? $throwRuntimeError("index out of range") : src.$array[src.$offset + 13]) >>> 0) << 16 >>> 0)) >>> 0) | (((14 >= src.$length ? $throwRuntimeError("index out of range") : src.$array[src.$offset + 14]) >>> 0) << 8 >>> 0)) >>> 0) | ((15 >= src.$length ? $throwRuntimeError("index out of range") : src.$array[src.$offset + 15]) >>> 0)) >>> 0;
  40268. s0 = (s0 ^ ((0 >= xk.$length ? $throwRuntimeError("index out of range") : xk.$array[xk.$offset + 0]))) >>> 0;
  40269. s1 = (s1 ^ ((1 >= xk.$length ? $throwRuntimeError("index out of range") : xk.$array[xk.$offset + 1]))) >>> 0;
  40270. s2 = (s2 ^ ((2 >= xk.$length ? $throwRuntimeError("index out of range") : xk.$array[xk.$offset + 2]))) >>> 0;
  40271. s3 = (s3 ^ ((3 >= xk.$length ? $throwRuntimeError("index out of range") : xk.$array[xk.$offset + 3]))) >>> 0;
  40272. nr = (_q = xk.$length / 4, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")) - 2 >> 0;
  40273. k = 4;
  40274. r = 0;
  40275. while (true) {
  40276. if (!(r < nr)) { break; }
  40277. t0 = ((((((((x = k + 0 >> 0, ((x < 0 || x >= xk.$length) ? $throwRuntimeError("index out of range") : xk.$array[xk.$offset + x])) ^ (x$1 = ((s0 >>> 24 >>> 0) << 24 >>> 24), ((x$1 < 0 || x$1 >= te0.length) ? $throwRuntimeError("index out of range") : te0[x$1]))) >>> 0) ^ (x$2 = ((s1 >>> 16 >>> 0) << 24 >>> 24), ((x$2 < 0 || x$2 >= te1.length) ? $throwRuntimeError("index out of range") : te1[x$2]))) >>> 0) ^ (x$3 = ((s2 >>> 8 >>> 0) << 24 >>> 24), ((x$3 < 0 || x$3 >= te2.length) ? $throwRuntimeError("index out of range") : te2[x$3]))) >>> 0) ^ (x$4 = (s3 << 24 >>> 24), ((x$4 < 0 || x$4 >= te3.length) ? $throwRuntimeError("index out of range") : te3[x$4]))) >>> 0;
  40278. t1 = ((((((((x$5 = k + 1 >> 0, ((x$5 < 0 || x$5 >= xk.$length) ? $throwRuntimeError("index out of range") : xk.$array[xk.$offset + x$5])) ^ (x$6 = ((s1 >>> 24 >>> 0) << 24 >>> 24), ((x$6 < 0 || x$6 >= te0.length) ? $throwRuntimeError("index out of range") : te0[x$6]))) >>> 0) ^ (x$7 = ((s2 >>> 16 >>> 0) << 24 >>> 24), ((x$7 < 0 || x$7 >= te1.length) ? $throwRuntimeError("index out of range") : te1[x$7]))) >>> 0) ^ (x$8 = ((s3 >>> 8 >>> 0) << 24 >>> 24), ((x$8 < 0 || x$8 >= te2.length) ? $throwRuntimeError("index out of range") : te2[x$8]))) >>> 0) ^ (x$9 = (s0 << 24 >>> 24), ((x$9 < 0 || x$9 >= te3.length) ? $throwRuntimeError("index out of range") : te3[x$9]))) >>> 0;
  40279. t2 = ((((((((x$10 = k + 2 >> 0, ((x$10 < 0 || x$10 >= xk.$length) ? $throwRuntimeError("index out of range") : xk.$array[xk.$offset + x$10])) ^ (x$11 = ((s2 >>> 24 >>> 0) << 24 >>> 24), ((x$11 < 0 || x$11 >= te0.length) ? $throwRuntimeError("index out of range") : te0[x$11]))) >>> 0) ^ (x$12 = ((s3 >>> 16 >>> 0) << 24 >>> 24), ((x$12 < 0 || x$12 >= te1.length) ? $throwRuntimeError("index out of range") : te1[x$12]))) >>> 0) ^ (x$13 = ((s0 >>> 8 >>> 0) << 24 >>> 24), ((x$13 < 0 || x$13 >= te2.length) ? $throwRuntimeError("index out of range") : te2[x$13]))) >>> 0) ^ (x$14 = (s1 << 24 >>> 24), ((x$14 < 0 || x$14 >= te3.length) ? $throwRuntimeError("index out of range") : te3[x$14]))) >>> 0;
  40280. t3 = ((((((((x$15 = k + 3 >> 0, ((x$15 < 0 || x$15 >= xk.$length) ? $throwRuntimeError("index out of range") : xk.$array[xk.$offset + x$15])) ^ (x$16 = ((s3 >>> 24 >>> 0) << 24 >>> 24), ((x$16 < 0 || x$16 >= te0.length) ? $throwRuntimeError("index out of range") : te0[x$16]))) >>> 0) ^ (x$17 = ((s0 >>> 16 >>> 0) << 24 >>> 24), ((x$17 < 0 || x$17 >= te1.length) ? $throwRuntimeError("index out of range") : te1[x$17]))) >>> 0) ^ (x$18 = ((s1 >>> 8 >>> 0) << 24 >>> 24), ((x$18 < 0 || x$18 >= te2.length) ? $throwRuntimeError("index out of range") : te2[x$18]))) >>> 0) ^ (x$19 = (s2 << 24 >>> 24), ((x$19 < 0 || x$19 >= te3.length) ? $throwRuntimeError("index out of range") : te3[x$19]))) >>> 0;
  40281. k = k + (4) >> 0;
  40282. _tmp$8 = t0; _tmp$9 = t1; _tmp$10 = t2; _tmp$11 = t3; s0 = _tmp$8; s1 = _tmp$9; s2 = _tmp$10; s3 = _tmp$11;
  40283. r = r + (1) >> 0;
  40284. }
  40285. s0 = ((((((((x$20 = t0 >>> 24 >>> 0, ((x$20 < 0 || x$20 >= sbox0.length) ? $throwRuntimeError("index out of range") : sbox0[x$20])) >>> 0) << 24 >>> 0) | (((x$21 = ((t1 >>> 16 >>> 0) & 255) >>> 0, ((x$21 < 0 || x$21 >= sbox0.length) ? $throwRuntimeError("index out of range") : sbox0[x$21])) >>> 0) << 16 >>> 0)) >>> 0) | (((x$22 = ((t2 >>> 8 >>> 0) & 255) >>> 0, ((x$22 < 0 || x$22 >= sbox0.length) ? $throwRuntimeError("index out of range") : sbox0[x$22])) >>> 0) << 8 >>> 0)) >>> 0) | ((x$23 = (t3 & 255) >>> 0, ((x$23 < 0 || x$23 >= sbox0.length) ? $throwRuntimeError("index out of range") : sbox0[x$23])) >>> 0)) >>> 0;
  40286. s1 = ((((((((x$24 = t1 >>> 24 >>> 0, ((x$24 < 0 || x$24 >= sbox0.length) ? $throwRuntimeError("index out of range") : sbox0[x$24])) >>> 0) << 24 >>> 0) | (((x$25 = ((t2 >>> 16 >>> 0) & 255) >>> 0, ((x$25 < 0 || x$25 >= sbox0.length) ? $throwRuntimeError("index out of range") : sbox0[x$25])) >>> 0) << 16 >>> 0)) >>> 0) | (((x$26 = ((t3 >>> 8 >>> 0) & 255) >>> 0, ((x$26 < 0 || x$26 >= sbox0.length) ? $throwRuntimeError("index out of range") : sbox0[x$26])) >>> 0) << 8 >>> 0)) >>> 0) | ((x$27 = (t0 & 255) >>> 0, ((x$27 < 0 || x$27 >= sbox0.length) ? $throwRuntimeError("index out of range") : sbox0[x$27])) >>> 0)) >>> 0;
  40287. s2 = ((((((((x$28 = t2 >>> 24 >>> 0, ((x$28 < 0 || x$28 >= sbox0.length) ? $throwRuntimeError("index out of range") : sbox0[x$28])) >>> 0) << 24 >>> 0) | (((x$29 = ((t3 >>> 16 >>> 0) & 255) >>> 0, ((x$29 < 0 || x$29 >= sbox0.length) ? $throwRuntimeError("index out of range") : sbox0[x$29])) >>> 0) << 16 >>> 0)) >>> 0) | (((x$30 = ((t0 >>> 8 >>> 0) & 255) >>> 0, ((x$30 < 0 || x$30 >= sbox0.length) ? $throwRuntimeError("index out of range") : sbox0[x$30])) >>> 0) << 8 >>> 0)) >>> 0) | ((x$31 = (t1 & 255) >>> 0, ((x$31 < 0 || x$31 >= sbox0.length) ? $throwRuntimeError("index out of range") : sbox0[x$31])) >>> 0)) >>> 0;
  40288. s3 = ((((((((x$32 = t3 >>> 24 >>> 0, ((x$32 < 0 || x$32 >= sbox0.length) ? $throwRuntimeError("index out of range") : sbox0[x$32])) >>> 0) << 24 >>> 0) | (((x$33 = ((t0 >>> 16 >>> 0) & 255) >>> 0, ((x$33 < 0 || x$33 >= sbox0.length) ? $throwRuntimeError("index out of range") : sbox0[x$33])) >>> 0) << 16 >>> 0)) >>> 0) | (((x$34 = ((t1 >>> 8 >>> 0) & 255) >>> 0, ((x$34 < 0 || x$34 >= sbox0.length) ? $throwRuntimeError("index out of range") : sbox0[x$34])) >>> 0) << 8 >>> 0)) >>> 0) | ((x$35 = (t2 & 255) >>> 0, ((x$35 < 0 || x$35 >= sbox0.length) ? $throwRuntimeError("index out of range") : sbox0[x$35])) >>> 0)) >>> 0;
  40289. s0 = (s0 ^ ((x$36 = k + 0 >> 0, ((x$36 < 0 || x$36 >= xk.$length) ? $throwRuntimeError("index out of range") : xk.$array[xk.$offset + x$36])))) >>> 0;
  40290. s1 = (s1 ^ ((x$37 = k + 1 >> 0, ((x$37 < 0 || x$37 >= xk.$length) ? $throwRuntimeError("index out of range") : xk.$array[xk.$offset + x$37])))) >>> 0;
  40291. s2 = (s2 ^ ((x$38 = k + 2 >> 0, ((x$38 < 0 || x$38 >= xk.$length) ? $throwRuntimeError("index out of range") : xk.$array[xk.$offset + x$38])))) >>> 0;
  40292. s3 = (s3 ^ ((x$39 = k + 3 >> 0, ((x$39 < 0 || x$39 >= xk.$length) ? $throwRuntimeError("index out of range") : xk.$array[xk.$offset + x$39])))) >>> 0;
  40293. _tmp$12 = ((s0 >>> 24 >>> 0) << 24 >>> 24); _tmp$13 = ((s0 >>> 16 >>> 0) << 24 >>> 24); _tmp$14 = ((s0 >>> 8 >>> 0) << 24 >>> 24); _tmp$15 = (s0 << 24 >>> 24); (0 >= dst.$length ? $throwRuntimeError("index out of range") : dst.$array[dst.$offset + 0] = _tmp$12); (1 >= dst.$length ? $throwRuntimeError("index out of range") : dst.$array[dst.$offset + 1] = _tmp$13); (2 >= dst.$length ? $throwRuntimeError("index out of range") : dst.$array[dst.$offset + 2] = _tmp$14); (3 >= dst.$length ? $throwRuntimeError("index out of range") : dst.$array[dst.$offset + 3] = _tmp$15);
  40294. _tmp$16 = ((s1 >>> 24 >>> 0) << 24 >>> 24); _tmp$17 = ((s1 >>> 16 >>> 0) << 24 >>> 24); _tmp$18 = ((s1 >>> 8 >>> 0) << 24 >>> 24); _tmp$19 = (s1 << 24 >>> 24); (4 >= dst.$length ? $throwRuntimeError("index out of range") : dst.$array[dst.$offset + 4] = _tmp$16); (5 >= dst.$length ? $throwRuntimeError("index out of range") : dst.$array[dst.$offset + 5] = _tmp$17); (6 >= dst.$length ? $throwRuntimeError("index out of range") : dst.$array[dst.$offset + 6] = _tmp$18); (7 >= dst.$length ? $throwRuntimeError("index out of range") : dst.$array[dst.$offset + 7] = _tmp$19);
  40295. _tmp$20 = ((s2 >>> 24 >>> 0) << 24 >>> 24); _tmp$21 = ((s2 >>> 16 >>> 0) << 24 >>> 24); _tmp$22 = ((s2 >>> 8 >>> 0) << 24 >>> 24); _tmp$23 = (s2 << 24 >>> 24); (8 >= dst.$length ? $throwRuntimeError("index out of range") : dst.$array[dst.$offset + 8] = _tmp$20); (9 >= dst.$length ? $throwRuntimeError("index out of range") : dst.$array[dst.$offset + 9] = _tmp$21); (10 >= dst.$length ? $throwRuntimeError("index out of range") : dst.$array[dst.$offset + 10] = _tmp$22); (11 >= dst.$length ? $throwRuntimeError("index out of range") : dst.$array[dst.$offset + 11] = _tmp$23);
  40296. _tmp$24 = ((s3 >>> 24 >>> 0) << 24 >>> 24); _tmp$25 = ((s3 >>> 16 >>> 0) << 24 >>> 24); _tmp$26 = ((s3 >>> 8 >>> 0) << 24 >>> 24); _tmp$27 = (s3 << 24 >>> 24); (12 >= dst.$length ? $throwRuntimeError("index out of range") : dst.$array[dst.$offset + 12] = _tmp$24); (13 >= dst.$length ? $throwRuntimeError("index out of range") : dst.$array[dst.$offset + 13] = _tmp$25); (14 >= dst.$length ? $throwRuntimeError("index out of range") : dst.$array[dst.$offset + 14] = _tmp$26); (15 >= dst.$length ? $throwRuntimeError("index out of range") : dst.$array[dst.$offset + 15] = _tmp$27);
  40297. };
  40298. decryptBlockGo = function(xk, dst, src) {
  40299. var $ptr, _q, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$16, _tmp$17, _tmp$18, _tmp$19, _tmp$2, _tmp$20, _tmp$21, _tmp$22, _tmp$23, _tmp$24, _tmp$25, _tmp$26, _tmp$27, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, dst, k, nr, r, s0, s1, s2, s3, src, t0, t1, t2, t3, x, x$1, x$10, x$11, x$12, x$13, x$14, x$15, x$16, x$17, x$18, x$19, x$2, x$20, x$21, x$22, x$23, x$24, x$25, x$26, x$27, x$28, x$29, x$3, x$30, x$31, x$32, x$33, x$34, x$35, x$36, x$37, x$38, x$39, x$4, x$5, x$6, x$7, x$8, x$9, xk;
  40300. _tmp = 0; _tmp$1 = 0; _tmp$2 = 0; _tmp$3 = 0; _tmp$4 = 0; _tmp$5 = 0; _tmp$6 = 0; _tmp$7 = 0; s0 = _tmp; s1 = _tmp$1; s2 = _tmp$2; s3 = _tmp$3; t0 = _tmp$4; t1 = _tmp$5; t2 = _tmp$6; t3 = _tmp$7;
  40301. s0 = ((((((((0 >= src.$length ? $throwRuntimeError("index out of range") : src.$array[src.$offset + 0]) >>> 0) << 24 >>> 0) | (((1 >= src.$length ? $throwRuntimeError("index out of range") : src.$array[src.$offset + 1]) >>> 0) << 16 >>> 0)) >>> 0) | (((2 >= src.$length ? $throwRuntimeError("index out of range") : src.$array[src.$offset + 2]) >>> 0) << 8 >>> 0)) >>> 0) | ((3 >= src.$length ? $throwRuntimeError("index out of range") : src.$array[src.$offset + 3]) >>> 0)) >>> 0;
  40302. s1 = ((((((((4 >= src.$length ? $throwRuntimeError("index out of range") : src.$array[src.$offset + 4]) >>> 0) << 24 >>> 0) | (((5 >= src.$length ? $throwRuntimeError("index out of range") : src.$array[src.$offset + 5]) >>> 0) << 16 >>> 0)) >>> 0) | (((6 >= src.$length ? $throwRuntimeError("index out of range") : src.$array[src.$offset + 6]) >>> 0) << 8 >>> 0)) >>> 0) | ((7 >= src.$length ? $throwRuntimeError("index out of range") : src.$array[src.$offset + 7]) >>> 0)) >>> 0;
  40303. s2 = ((((((((8 >= src.$length ? $throwRuntimeError("index out of range") : src.$array[src.$offset + 8]) >>> 0) << 24 >>> 0) | (((9 >= src.$length ? $throwRuntimeError("index out of range") : src.$array[src.$offset + 9]) >>> 0) << 16 >>> 0)) >>> 0) | (((10 >= src.$length ? $throwRuntimeError("index out of range") : src.$array[src.$offset + 10]) >>> 0) << 8 >>> 0)) >>> 0) | ((11 >= src.$length ? $throwRuntimeError("index out of range") : src.$array[src.$offset + 11]) >>> 0)) >>> 0;
  40304. s3 = ((((((((12 >= src.$length ? $throwRuntimeError("index out of range") : src.$array[src.$offset + 12]) >>> 0) << 24 >>> 0) | (((13 >= src.$length ? $throwRuntimeError("index out of range") : src.$array[src.$offset + 13]) >>> 0) << 16 >>> 0)) >>> 0) | (((14 >= src.$length ? $throwRuntimeError("index out of range") : src.$array[src.$offset + 14]) >>> 0) << 8 >>> 0)) >>> 0) | ((15 >= src.$length ? $throwRuntimeError("index out of range") : src.$array[src.$offset + 15]) >>> 0)) >>> 0;
  40305. s0 = (s0 ^ ((0 >= xk.$length ? $throwRuntimeError("index out of range") : xk.$array[xk.$offset + 0]))) >>> 0;
  40306. s1 = (s1 ^ ((1 >= xk.$length ? $throwRuntimeError("index out of range") : xk.$array[xk.$offset + 1]))) >>> 0;
  40307. s2 = (s2 ^ ((2 >= xk.$length ? $throwRuntimeError("index out of range") : xk.$array[xk.$offset + 2]))) >>> 0;
  40308. s3 = (s3 ^ ((3 >= xk.$length ? $throwRuntimeError("index out of range") : xk.$array[xk.$offset + 3]))) >>> 0;
  40309. nr = (_q = xk.$length / 4, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")) - 2 >> 0;
  40310. k = 4;
  40311. r = 0;
  40312. while (true) {
  40313. if (!(r < nr)) { break; }
  40314. t0 = ((((((((x = k + 0 >> 0, ((x < 0 || x >= xk.$length) ? $throwRuntimeError("index out of range") : xk.$array[xk.$offset + x])) ^ (x$1 = ((s0 >>> 24 >>> 0) << 24 >>> 24), ((x$1 < 0 || x$1 >= td0.length) ? $throwRuntimeError("index out of range") : td0[x$1]))) >>> 0) ^ (x$2 = ((s3 >>> 16 >>> 0) << 24 >>> 24), ((x$2 < 0 || x$2 >= td1.length) ? $throwRuntimeError("index out of range") : td1[x$2]))) >>> 0) ^ (x$3 = ((s2 >>> 8 >>> 0) << 24 >>> 24), ((x$3 < 0 || x$3 >= td2.length) ? $throwRuntimeError("index out of range") : td2[x$3]))) >>> 0) ^ (x$4 = (s1 << 24 >>> 24), ((x$4 < 0 || x$4 >= td3.length) ? $throwRuntimeError("index out of range") : td3[x$4]))) >>> 0;
  40315. t1 = ((((((((x$5 = k + 1 >> 0, ((x$5 < 0 || x$5 >= xk.$length) ? $throwRuntimeError("index out of range") : xk.$array[xk.$offset + x$5])) ^ (x$6 = ((s1 >>> 24 >>> 0) << 24 >>> 24), ((x$6 < 0 || x$6 >= td0.length) ? $throwRuntimeError("index out of range") : td0[x$6]))) >>> 0) ^ (x$7 = ((s0 >>> 16 >>> 0) << 24 >>> 24), ((x$7 < 0 || x$7 >= td1.length) ? $throwRuntimeError("index out of range") : td1[x$7]))) >>> 0) ^ (x$8 = ((s3 >>> 8 >>> 0) << 24 >>> 24), ((x$8 < 0 || x$8 >= td2.length) ? $throwRuntimeError("index out of range") : td2[x$8]))) >>> 0) ^ (x$9 = (s2 << 24 >>> 24), ((x$9 < 0 || x$9 >= td3.length) ? $throwRuntimeError("index out of range") : td3[x$9]))) >>> 0;
  40316. t2 = ((((((((x$10 = k + 2 >> 0, ((x$10 < 0 || x$10 >= xk.$length) ? $throwRuntimeError("index out of range") : xk.$array[xk.$offset + x$10])) ^ (x$11 = ((s2 >>> 24 >>> 0) << 24 >>> 24), ((x$11 < 0 || x$11 >= td0.length) ? $throwRuntimeError("index out of range") : td0[x$11]))) >>> 0) ^ (x$12 = ((s1 >>> 16 >>> 0) << 24 >>> 24), ((x$12 < 0 || x$12 >= td1.length) ? $throwRuntimeError("index out of range") : td1[x$12]))) >>> 0) ^ (x$13 = ((s0 >>> 8 >>> 0) << 24 >>> 24), ((x$13 < 0 || x$13 >= td2.length) ? $throwRuntimeError("index out of range") : td2[x$13]))) >>> 0) ^ (x$14 = (s3 << 24 >>> 24), ((x$14 < 0 || x$14 >= td3.length) ? $throwRuntimeError("index out of range") : td3[x$14]))) >>> 0;
  40317. t3 = ((((((((x$15 = k + 3 >> 0, ((x$15 < 0 || x$15 >= xk.$length) ? $throwRuntimeError("index out of range") : xk.$array[xk.$offset + x$15])) ^ (x$16 = ((s3 >>> 24 >>> 0) << 24 >>> 24), ((x$16 < 0 || x$16 >= td0.length) ? $throwRuntimeError("index out of range") : td0[x$16]))) >>> 0) ^ (x$17 = ((s2 >>> 16 >>> 0) << 24 >>> 24), ((x$17 < 0 || x$17 >= td1.length) ? $throwRuntimeError("index out of range") : td1[x$17]))) >>> 0) ^ (x$18 = ((s1 >>> 8 >>> 0) << 24 >>> 24), ((x$18 < 0 || x$18 >= td2.length) ? $throwRuntimeError("index out of range") : td2[x$18]))) >>> 0) ^ (x$19 = (s0 << 24 >>> 24), ((x$19 < 0 || x$19 >= td3.length) ? $throwRuntimeError("index out of range") : td3[x$19]))) >>> 0;
  40318. k = k + (4) >> 0;
  40319. _tmp$8 = t0; _tmp$9 = t1; _tmp$10 = t2; _tmp$11 = t3; s0 = _tmp$8; s1 = _tmp$9; s2 = _tmp$10; s3 = _tmp$11;
  40320. r = r + (1) >> 0;
  40321. }
  40322. s0 = ((((((((x$20 = t0 >>> 24 >>> 0, ((x$20 < 0 || x$20 >= sbox1.length) ? $throwRuntimeError("index out of range") : sbox1[x$20])) >>> 0) << 24 >>> 0) | (((x$21 = ((t3 >>> 16 >>> 0) & 255) >>> 0, ((x$21 < 0 || x$21 >= sbox1.length) ? $throwRuntimeError("index out of range") : sbox1[x$21])) >>> 0) << 16 >>> 0)) >>> 0) | (((x$22 = ((t2 >>> 8 >>> 0) & 255) >>> 0, ((x$22 < 0 || x$22 >= sbox1.length) ? $throwRuntimeError("index out of range") : sbox1[x$22])) >>> 0) << 8 >>> 0)) >>> 0) | ((x$23 = (t1 & 255) >>> 0, ((x$23 < 0 || x$23 >= sbox1.length) ? $throwRuntimeError("index out of range") : sbox1[x$23])) >>> 0)) >>> 0;
  40323. s1 = ((((((((x$24 = t1 >>> 24 >>> 0, ((x$24 < 0 || x$24 >= sbox1.length) ? $throwRuntimeError("index out of range") : sbox1[x$24])) >>> 0) << 24 >>> 0) | (((x$25 = ((t0 >>> 16 >>> 0) & 255) >>> 0, ((x$25 < 0 || x$25 >= sbox1.length) ? $throwRuntimeError("index out of range") : sbox1[x$25])) >>> 0) << 16 >>> 0)) >>> 0) | (((x$26 = ((t3 >>> 8 >>> 0) & 255) >>> 0, ((x$26 < 0 || x$26 >= sbox1.length) ? $throwRuntimeError("index out of range") : sbox1[x$26])) >>> 0) << 8 >>> 0)) >>> 0) | ((x$27 = (t2 & 255) >>> 0, ((x$27 < 0 || x$27 >= sbox1.length) ? $throwRuntimeError("index out of range") : sbox1[x$27])) >>> 0)) >>> 0;
  40324. s2 = ((((((((x$28 = t2 >>> 24 >>> 0, ((x$28 < 0 || x$28 >= sbox1.length) ? $throwRuntimeError("index out of range") : sbox1[x$28])) >>> 0) << 24 >>> 0) | (((x$29 = ((t1 >>> 16 >>> 0) & 255) >>> 0, ((x$29 < 0 || x$29 >= sbox1.length) ? $throwRuntimeError("index out of range") : sbox1[x$29])) >>> 0) << 16 >>> 0)) >>> 0) | (((x$30 = ((t0 >>> 8 >>> 0) & 255) >>> 0, ((x$30 < 0 || x$30 >= sbox1.length) ? $throwRuntimeError("index out of range") : sbox1[x$30])) >>> 0) << 8 >>> 0)) >>> 0) | ((x$31 = (t3 & 255) >>> 0, ((x$31 < 0 || x$31 >= sbox1.length) ? $throwRuntimeError("index out of range") : sbox1[x$31])) >>> 0)) >>> 0;
  40325. s3 = ((((((((x$32 = t3 >>> 24 >>> 0, ((x$32 < 0 || x$32 >= sbox1.length) ? $throwRuntimeError("index out of range") : sbox1[x$32])) >>> 0) << 24 >>> 0) | (((x$33 = ((t2 >>> 16 >>> 0) & 255) >>> 0, ((x$33 < 0 || x$33 >= sbox1.length) ? $throwRuntimeError("index out of range") : sbox1[x$33])) >>> 0) << 16 >>> 0)) >>> 0) | (((x$34 = ((t1 >>> 8 >>> 0) & 255) >>> 0, ((x$34 < 0 || x$34 >= sbox1.length) ? $throwRuntimeError("index out of range") : sbox1[x$34])) >>> 0) << 8 >>> 0)) >>> 0) | ((x$35 = (t0 & 255) >>> 0, ((x$35 < 0 || x$35 >= sbox1.length) ? $throwRuntimeError("index out of range") : sbox1[x$35])) >>> 0)) >>> 0;
  40326. s0 = (s0 ^ ((x$36 = k + 0 >> 0, ((x$36 < 0 || x$36 >= xk.$length) ? $throwRuntimeError("index out of range") : xk.$array[xk.$offset + x$36])))) >>> 0;
  40327. s1 = (s1 ^ ((x$37 = k + 1 >> 0, ((x$37 < 0 || x$37 >= xk.$length) ? $throwRuntimeError("index out of range") : xk.$array[xk.$offset + x$37])))) >>> 0;
  40328. s2 = (s2 ^ ((x$38 = k + 2 >> 0, ((x$38 < 0 || x$38 >= xk.$length) ? $throwRuntimeError("index out of range") : xk.$array[xk.$offset + x$38])))) >>> 0;
  40329. s3 = (s3 ^ ((x$39 = k + 3 >> 0, ((x$39 < 0 || x$39 >= xk.$length) ? $throwRuntimeError("index out of range") : xk.$array[xk.$offset + x$39])))) >>> 0;
  40330. _tmp$12 = ((s0 >>> 24 >>> 0) << 24 >>> 24); _tmp$13 = ((s0 >>> 16 >>> 0) << 24 >>> 24); _tmp$14 = ((s0 >>> 8 >>> 0) << 24 >>> 24); _tmp$15 = (s0 << 24 >>> 24); (0 >= dst.$length ? $throwRuntimeError("index out of range") : dst.$array[dst.$offset + 0] = _tmp$12); (1 >= dst.$length ? $throwRuntimeError("index out of range") : dst.$array[dst.$offset + 1] = _tmp$13); (2 >= dst.$length ? $throwRuntimeError("index out of range") : dst.$array[dst.$offset + 2] = _tmp$14); (3 >= dst.$length ? $throwRuntimeError("index out of range") : dst.$array[dst.$offset + 3] = _tmp$15);
  40331. _tmp$16 = ((s1 >>> 24 >>> 0) << 24 >>> 24); _tmp$17 = ((s1 >>> 16 >>> 0) << 24 >>> 24); _tmp$18 = ((s1 >>> 8 >>> 0) << 24 >>> 24); _tmp$19 = (s1 << 24 >>> 24); (4 >= dst.$length ? $throwRuntimeError("index out of range") : dst.$array[dst.$offset + 4] = _tmp$16); (5 >= dst.$length ? $throwRuntimeError("index out of range") : dst.$array[dst.$offset + 5] = _tmp$17); (6 >= dst.$length ? $throwRuntimeError("index out of range") : dst.$array[dst.$offset + 6] = _tmp$18); (7 >= dst.$length ? $throwRuntimeError("index out of range") : dst.$array[dst.$offset + 7] = _tmp$19);
  40332. _tmp$20 = ((s2 >>> 24 >>> 0) << 24 >>> 24); _tmp$21 = ((s2 >>> 16 >>> 0) << 24 >>> 24); _tmp$22 = ((s2 >>> 8 >>> 0) << 24 >>> 24); _tmp$23 = (s2 << 24 >>> 24); (8 >= dst.$length ? $throwRuntimeError("index out of range") : dst.$array[dst.$offset + 8] = _tmp$20); (9 >= dst.$length ? $throwRuntimeError("index out of range") : dst.$array[dst.$offset + 9] = _tmp$21); (10 >= dst.$length ? $throwRuntimeError("index out of range") : dst.$array[dst.$offset + 10] = _tmp$22); (11 >= dst.$length ? $throwRuntimeError("index out of range") : dst.$array[dst.$offset + 11] = _tmp$23);
  40333. _tmp$24 = ((s3 >>> 24 >>> 0) << 24 >>> 24); _tmp$25 = ((s3 >>> 16 >>> 0) << 24 >>> 24); _tmp$26 = ((s3 >>> 8 >>> 0) << 24 >>> 24); _tmp$27 = (s3 << 24 >>> 24); (12 >= dst.$length ? $throwRuntimeError("index out of range") : dst.$array[dst.$offset + 12] = _tmp$24); (13 >= dst.$length ? $throwRuntimeError("index out of range") : dst.$array[dst.$offset + 13] = _tmp$25); (14 >= dst.$length ? $throwRuntimeError("index out of range") : dst.$array[dst.$offset + 14] = _tmp$26); (15 >= dst.$length ? $throwRuntimeError("index out of range") : dst.$array[dst.$offset + 15] = _tmp$27);
  40334. };
  40335. subw = function(w) {
  40336. var $ptr, w, x, x$1, x$2, x$3;
  40337. return ((((((((x = w >>> 24 >>> 0, ((x < 0 || x >= sbox0.length) ? $throwRuntimeError("index out of range") : sbox0[x])) >>> 0) << 24 >>> 0) | (((x$1 = ((w >>> 16 >>> 0) & 255) >>> 0, ((x$1 < 0 || x$1 >= sbox0.length) ? $throwRuntimeError("index out of range") : sbox0[x$1])) >>> 0) << 16 >>> 0)) >>> 0) | (((x$2 = ((w >>> 8 >>> 0) & 255) >>> 0, ((x$2 < 0 || x$2 >= sbox0.length) ? $throwRuntimeError("index out of range") : sbox0[x$2])) >>> 0) << 8 >>> 0)) >>> 0) | ((x$3 = (w & 255) >>> 0, ((x$3 < 0 || x$3 >= sbox0.length) ? $throwRuntimeError("index out of range") : sbox0[x$3])) >>> 0)) >>> 0;
  40338. };
  40339. rotw = function(w) {
  40340. var $ptr, w;
  40341. return ((w << 8 >>> 0) | (w >>> 24 >>> 0)) >>> 0;
  40342. };
  40343. expandKeyGo = function(key, enc, dec) {
  40344. var $ptr, _q, _q$1, _r, _r$1, dec, ei, enc, i, i$1, j, key, n, nk, t, x, x$1, x$10, x$11, x$12, x$13, x$14, x$15, x$16, x$17, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9;
  40345. i = 0;
  40346. nk = (_q = key.$length / 4, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero"));
  40347. i = 0;
  40348. while (true) {
  40349. if (!(i < nk)) { break; }
  40350. ((i < 0 || i >= enc.$length) ? $throwRuntimeError("index out of range") : enc.$array[enc.$offset + i] = ((((((((x = 4 * i >> 0, ((x < 0 || x >= key.$length) ? $throwRuntimeError("index out of range") : key.$array[key.$offset + x])) >>> 0) << 24 >>> 0) | (((x$1 = (4 * i >> 0) + 1 >> 0, ((x$1 < 0 || x$1 >= key.$length) ? $throwRuntimeError("index out of range") : key.$array[key.$offset + x$1])) >>> 0) << 16 >>> 0)) >>> 0) | (((x$2 = (4 * i >> 0) + 2 >> 0, ((x$2 < 0 || x$2 >= key.$length) ? $throwRuntimeError("index out of range") : key.$array[key.$offset + x$2])) >>> 0) << 8 >>> 0)) >>> 0) | ((x$3 = (4 * i >> 0) + 3 >> 0, ((x$3 < 0 || x$3 >= key.$length) ? $throwRuntimeError("index out of range") : key.$array[key.$offset + x$3])) >>> 0)) >>> 0);
  40351. i = i + (1) >> 0;
  40352. }
  40353. while (true) {
  40354. if (!(i < enc.$length)) { break; }
  40355. t = (x$4 = i - 1 >> 0, ((x$4 < 0 || x$4 >= enc.$length) ? $throwRuntimeError("index out of range") : enc.$array[enc.$offset + x$4]));
  40356. if ((_r = i % nk, _r === _r ? _r : $throwRuntimeError("integer divide by zero")) === 0) {
  40357. t = (subw(rotw(t)) ^ ((((x$5 = (_q$1 = i / nk, (_q$1 === _q$1 && _q$1 !== 1/0 && _q$1 !== -1/0) ? _q$1 >> 0 : $throwRuntimeError("integer divide by zero")) - 1 >> 0, ((x$5 < 0 || x$5 >= powx.length) ? $throwRuntimeError("index out of range") : powx[x$5])) >>> 0) << 24 >>> 0))) >>> 0;
  40358. } else if (nk > 6 && ((_r$1 = i % nk, _r$1 === _r$1 ? _r$1 : $throwRuntimeError("integer divide by zero")) === 4)) {
  40359. t = subw(t);
  40360. }
  40361. ((i < 0 || i >= enc.$length) ? $throwRuntimeError("index out of range") : enc.$array[enc.$offset + i] = ((x$6 = i - nk >> 0, ((x$6 < 0 || x$6 >= enc.$length) ? $throwRuntimeError("index out of range") : enc.$array[enc.$offset + x$6])) ^ t) >>> 0);
  40362. i = i + (1) >> 0;
  40363. }
  40364. if (dec === sliceType.nil) {
  40365. return;
  40366. }
  40367. n = enc.$length;
  40368. i$1 = 0;
  40369. while (true) {
  40370. if (!(i$1 < n)) { break; }
  40371. ei = (n - i$1 >> 0) - 4 >> 0;
  40372. j = 0;
  40373. while (true) {
  40374. if (!(j < 4)) { break; }
  40375. x$8 = (x$7 = ei + j >> 0, ((x$7 < 0 || x$7 >= enc.$length) ? $throwRuntimeError("index out of range") : enc.$array[enc.$offset + x$7]));
  40376. if (i$1 > 0 && (i$1 + 4 >> 0) < n) {
  40377. x$8 = ((((((x$9 = (x$10 = x$8 >>> 24 >>> 0, ((x$10 < 0 || x$10 >= sbox0.length) ? $throwRuntimeError("index out of range") : sbox0[x$10])), ((x$9 < 0 || x$9 >= td0.length) ? $throwRuntimeError("index out of range") : td0[x$9])) ^ (x$11 = (x$12 = ((x$8 >>> 16 >>> 0) & 255) >>> 0, ((x$12 < 0 || x$12 >= sbox0.length) ? $throwRuntimeError("index out of range") : sbox0[x$12])), ((x$11 < 0 || x$11 >= td1.length) ? $throwRuntimeError("index out of range") : td1[x$11]))) >>> 0) ^ (x$13 = (x$14 = ((x$8 >>> 8 >>> 0) & 255) >>> 0, ((x$14 < 0 || x$14 >= sbox0.length) ? $throwRuntimeError("index out of range") : sbox0[x$14])), ((x$13 < 0 || x$13 >= td2.length) ? $throwRuntimeError("index out of range") : td2[x$13]))) >>> 0) ^ (x$15 = (x$16 = (x$8 & 255) >>> 0, ((x$16 < 0 || x$16 >= sbox0.length) ? $throwRuntimeError("index out of range") : sbox0[x$16])), ((x$15 < 0 || x$15 >= td3.length) ? $throwRuntimeError("index out of range") : td3[x$15]))) >>> 0;
  40378. }
  40379. (x$17 = i$1 + j >> 0, ((x$17 < 0 || x$17 >= dec.$length) ? $throwRuntimeError("index out of range") : dec.$array[dec.$offset + x$17] = x$8));
  40380. j = j + (1) >> 0;
  40381. }
  40382. i$1 = i$1 + (4) >> 0;
  40383. }
  40384. };
  40385. KeySizeError.prototype.Error = function() {
  40386. var $ptr, k;
  40387. k = this.$val;
  40388. return "crypto/aes: invalid key size " + strconv.Itoa((k >> 0));
  40389. };
  40390. $ptrType(KeySizeError).prototype.Error = function() { return new KeySizeError(this.$get()).Error(); };
  40391. NewCipher = function(key) {
  40392. var $ptr, _ref, c, k, key, n;
  40393. k = key.$length;
  40394. _ref = k;
  40395. switch (0) { default: if (_ref === 16 || _ref === 24 || _ref === 32) {
  40396. break;
  40397. } else {
  40398. return [$ifaceNil, new KeySizeError((k >> 0))];
  40399. } }
  40400. n = k + 28 >> 0;
  40401. c = new aesCipher.ptr($makeSlice(sliceType, n), $makeSlice(sliceType, n));
  40402. expandKey(key, c.enc, c.dec);
  40403. return [c, $ifaceNil];
  40404. };
  40405. $pkg.NewCipher = NewCipher;
  40406. aesCipher.ptr.prototype.BlockSize = function() {
  40407. var $ptr, c;
  40408. c = this;
  40409. return 16;
  40410. };
  40411. aesCipher.prototype.BlockSize = function() { return this.$val.BlockSize(); };
  40412. aesCipher.ptr.prototype.Encrypt = function(dst, src) {
  40413. var $ptr, c, dst, src;
  40414. c = this;
  40415. if (src.$length < 16) {
  40416. $panic(new $String("crypto/aes: input not full block"));
  40417. }
  40418. if (dst.$length < 16) {
  40419. $panic(new $String("crypto/aes: output not full block"));
  40420. }
  40421. encryptBlock(c.enc, dst, src);
  40422. };
  40423. aesCipher.prototype.Encrypt = function(dst, src) { return this.$val.Encrypt(dst, src); };
  40424. aesCipher.ptr.prototype.Decrypt = function(dst, src) {
  40425. var $ptr, c, dst, src;
  40426. c = this;
  40427. if (src.$length < 16) {
  40428. $panic(new $String("crypto/aes: input not full block"));
  40429. }
  40430. if (dst.$length < 16) {
  40431. $panic(new $String("crypto/aes: output not full block"));
  40432. }
  40433. decryptBlock(c.dec, dst, src);
  40434. };
  40435. aesCipher.prototype.Decrypt = function(dst, src) { return this.$val.Decrypt(dst, src); };
  40436. encryptBlock = function(xk, dst, src) {
  40437. var $ptr, dst, src, xk;
  40438. encryptBlockGo(xk, dst, src);
  40439. };
  40440. decryptBlock = function(xk, dst, src) {
  40441. var $ptr, dst, src, xk;
  40442. decryptBlockGo(xk, dst, src);
  40443. };
  40444. expandKey = function(key, enc, dec) {
  40445. var $ptr, dec, enc, key;
  40446. expandKeyGo(key, enc, dec);
  40447. };
  40448. ptrType.methods = [{prop: "BlockSize", name: "BlockSize", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Encrypt", name: "Encrypt", pkg: "", typ: $funcType([sliceType$1, sliceType$1], [], false)}, {prop: "Decrypt", name: "Decrypt", pkg: "", typ: $funcType([sliceType$1, sliceType$1], [], false)}];
  40449. KeySizeError.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}];
  40450. aesCipher.init([{prop: "enc", name: "enc", pkg: "crypto/aes", typ: sliceType, tag: ""}, {prop: "dec", name: "dec", pkg: "crypto/aes", typ: sliceType, tag: ""}]);
  40451. $init = function() {
  40452. $pkg.$init = function() {};
  40453. /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  40454. $r = cipher.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  40455. $r = strconv.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  40456. powx = $toNativeArray($kindUint8, [1, 2, 4, 8, 16, 32, 64, 128, 27, 54, 108, 216, 171, 77, 154, 47]);
  40457. sbox0 = $toNativeArray($kindUint8, [99, 124, 119, 123, 242, 107, 111, 197, 48, 1, 103, 43, 254, 215, 171, 118, 202, 130, 201, 125, 250, 89, 71, 240, 173, 212, 162, 175, 156, 164, 114, 192, 183, 253, 147, 38, 54, 63, 247, 204, 52, 165, 229, 241, 113, 216, 49, 21, 4, 199, 35, 195, 24, 150, 5, 154, 7, 18, 128, 226, 235, 39, 178, 117, 9, 131, 44, 26, 27, 110, 90, 160, 82, 59, 214, 179, 41, 227, 47, 132, 83, 209, 0, 237, 32, 252, 177, 91, 106, 203, 190, 57, 74, 76, 88, 207, 208, 239, 170, 251, 67, 77, 51, 133, 69, 249, 2, 127, 80, 60, 159, 168, 81, 163, 64, 143, 146, 157, 56, 245, 188, 182, 218, 33, 16, 255, 243, 210, 205, 12, 19, 236, 95, 151, 68, 23, 196, 167, 126, 61, 100, 93, 25, 115, 96, 129, 79, 220, 34, 42, 144, 136, 70, 238, 184, 20, 222, 94, 11, 219, 224, 50, 58, 10, 73, 6, 36, 92, 194, 211, 172, 98, 145, 149, 228, 121, 231, 200, 55, 109, 141, 213, 78, 169, 108, 86, 244, 234, 101, 122, 174, 8, 186, 120, 37, 46, 28, 166, 180, 198, 232, 221, 116, 31, 75, 189, 139, 138, 112, 62, 181, 102, 72, 3, 246, 14, 97, 53, 87, 185, 134, 193, 29, 158, 225, 248, 152, 17, 105, 217, 142, 148, 155, 30, 135, 233, 206, 85, 40, 223, 140, 161, 137, 13, 191, 230, 66, 104, 65, 153, 45, 15, 176, 84, 187, 22]);
  40458. sbox1 = $toNativeArray($kindUint8, [82, 9, 106, 213, 48, 54, 165, 56, 191, 64, 163, 158, 129, 243, 215, 251, 124, 227, 57, 130, 155, 47, 255, 135, 52, 142, 67, 68, 196, 222, 233, 203, 84, 123, 148, 50, 166, 194, 35, 61, 238, 76, 149, 11, 66, 250, 195, 78, 8, 46, 161, 102, 40, 217, 36, 178, 118, 91, 162, 73, 109, 139, 209, 37, 114, 248, 246, 100, 134, 104, 152, 22, 212, 164, 92, 204, 93, 101, 182, 146, 108, 112, 72, 80, 253, 237, 185, 218, 94, 21, 70, 87, 167, 141, 157, 132, 144, 216, 171, 0, 140, 188, 211, 10, 247, 228, 88, 5, 184, 179, 69, 6, 208, 44, 30, 143, 202, 63, 15, 2, 193, 175, 189, 3, 1, 19, 138, 107, 58, 145, 17, 65, 79, 103, 220, 234, 151, 242, 207, 206, 240, 180, 230, 115, 150, 172, 116, 34, 231, 173, 53, 133, 226, 249, 55, 232, 28, 117, 223, 110, 71, 241, 26, 113, 29, 41, 197, 137, 111, 183, 98, 14, 170, 24, 190, 27, 252, 86, 62, 75, 198, 210, 121, 32, 154, 219, 192, 254, 120, 205, 90, 244, 31, 221, 168, 51, 136, 7, 199, 49, 177, 18, 16, 89, 39, 128, 236, 95, 96, 81, 127, 169, 25, 181, 74, 13, 45, 229, 122, 159, 147, 201, 156, 239, 160, 224, 59, 77, 174, 42, 245, 176, 200, 235, 187, 60, 131, 83, 153, 97, 23, 43, 4, 126, 186, 119, 214, 38, 225, 105, 20, 99, 85, 33, 12, 125]);
  40459. te0 = $toNativeArray($kindUint32, [3328402341, 4168907908, 4000806809, 4135287693, 4294111757, 3597364157, 3731845041, 2445657428, 1613770832, 33620227, 3462883241, 1445669757, 3892248089, 3050821474, 1303096294, 3967186586, 2412431941, 528646813, 2311702848, 4202528135, 4026202645, 2992200171, 2387036105, 4226871307, 1101901292, 3017069671, 1604494077, 1169141738, 597466303, 1403299063, 3832705686, 2613100635, 1974974402, 3791519004, 1033081774, 1277568618, 1815492186, 2118074177, 4126668546, 2211236943, 1748251740, 1369810420, 3521504564, 4193382664, 3799085459, 2883115123, 1647391059, 706024767, 134480908, 2512897874, 1176707941, 2646852446, 806885416, 932615841, 168101135, 798661301, 235341577, 605164086, 461406363, 3756188221, 3454790438, 1311188841, 2142417613, 3933566367, 302582043, 495158174, 1479289972, 874125870, 907746093, 3698224818, 3025820398, 1537253627, 2756858614, 1983593293, 3084310113, 2108928974, 1378429307, 3722699582, 1580150641, 327451799, 2790478837, 3117535592, 0, 3253595436, 1075847264, 3825007647, 2041688520, 3059440621, 3563743934, 2378943302, 1740553945, 1916352843, 2487896798, 2555137236, 2958579944, 2244988746, 3151024235, 3320835882, 1336584933, 3992714006, 2252555205, 2588757463, 1714631509, 293963156, 2319795663, 3925473552, 67240454, 4269768577, 2689618160, 2017213508, 631218106, 1269344483, 2723238387, 1571005438, 2151694528, 93294474, 1066570413, 563977660, 1882732616, 4059428100, 1673313503, 2008463041, 2950355573, 1109467491, 537923632, 3858759450, 4260623118, 3218264685, 2177748300, 403442708, 638784309, 3287084079, 3193921505, 899127202, 2286175436, 773265209, 2479146071, 1437050866, 4236148354, 2050833735, 3362022572, 3126681063, 840505643, 3866325909, 3227541664, 427917720, 2655997905, 2749160575, 1143087718, 1412049534, 999329963, 193497219, 2353415882, 3354324521, 1807268051, 672404540, 2816401017, 3160301282, 369822493, 2916866934, 3688947771, 1681011286, 1949973070, 336202270, 2454276571, 201721354, 1210328172, 3093060836, 2680341085, 3184776046, 1135389935, 3294782118, 965841320, 831886756, 3554993207, 4068047243, 3588745010, 2345191491, 1849112409, 3664604599, 26054028, 2983581028, 2622377682, 1235855840, 3630984372, 2891339514, 4092916743, 3488279077, 3395642799, 4101667470, 1202630377, 268961816, 1874508501, 4034427016, 1243948399, 1546530418, 941366308, 1470539505, 1941222599, 2546386513, 3421038627, 2715671932, 3899946140, 1042226977, 2521517021, 1639824860, 227249030, 260737669, 3765465232, 2084453954, 1907733956, 3429263018, 2420656344, 100860677, 4160157185, 470683154, 3261161891, 1781871967, 2924959737, 1773779408, 394692241, 2579611992, 974986535, 664706745, 3655459128, 3958962195, 731420851, 571543859, 3530123707, 2849626480, 126783113, 865375399, 765172662, 1008606754, 361203602, 3387549984, 2278477385, 2857719295, 1344809080, 2782912378, 59542671, 1503764984, 160008576, 437062935, 1707065306, 3622233649, 2218934982, 3496503480, 2185314755, 697932208, 1512910199, 504303377, 2075177163, 2824099068, 1841019862, 739644986]);
  40460. te1 = $toNativeArray($kindUint32, [2781242211, 2230877308, 2582542199, 2381740923, 234877682, 3184946027, 2984144751, 1418839493, 1348481072, 50462977, 2848876391, 2102799147, 434634494, 1656084439, 3863849899, 2599188086, 1167051466, 2636087938, 1082771913, 2281340285, 368048890, 3954334041, 3381544775, 201060592, 3963727277, 1739838676, 4250903202, 3930435503, 3206782108, 4149453988, 2531553906, 1536934080, 3262494647, 484572669, 2923271059, 1783375398, 1517041206, 1098792767, 49674231, 1334037708, 1550332980, 4098991525, 886171109, 150598129, 2481090929, 1940642008, 1398944049, 1059722517, 201851908, 1385547719, 1699095331, 1587397571, 674240536, 2704774806, 252314885, 3039795866, 151914247, 908333586, 2602270848, 1038082786, 651029483, 1766729511, 3447698098, 2682942837, 454166793, 2652734339, 1951935532, 775166490, 758520603, 3000790638, 4004797018, 4217086112, 4137964114, 1299594043, 1639438038, 3464344499, 2068982057, 1054729187, 1901997871, 2534638724, 4121318227, 1757008337, 0, 750906861, 1614815264, 535035132, 3363418545, 3988151131, 3201591914, 1183697867, 3647454910, 1265776953, 3734260298, 3566750796, 3903871064, 1250283471, 1807470800, 717615087, 3847203498, 384695291, 3313910595, 3617213773, 1432761139, 2484176261, 3481945413, 283769337, 100925954, 2180939647, 4037038160, 1148730428, 3123027871, 3813386408, 4087501137, 4267549603, 3229630528, 2315620239, 2906624658, 3156319645, 1215313976, 82966005, 3747855548, 3245848246, 1974459098, 1665278241, 807407632, 451280895, 251524083, 1841287890, 1283575245, 337120268, 891687699, 801369324, 3787349855, 2721421207, 3431482436, 959321879, 1469301956, 4065699751, 2197585534, 1199193405, 2898814052, 3887750493, 724703513, 2514908019, 2696962144, 2551808385, 3516813135, 2141445340, 1715741218, 2119445034, 2872807568, 2198571144, 3398190662, 700968686, 3547052216, 1009259540, 2041044702, 3803995742, 487983883, 1991105499, 1004265696, 1449407026, 1316239930, 504629770, 3683797321, 168560134, 1816667172, 3837287516, 1570751170, 1857934291, 4014189740, 2797888098, 2822345105, 2754712981, 936633572, 2347923833, 852879335, 1133234376, 1500395319, 3084545389, 2348912013, 1689376213, 3533459022, 3762923945, 3034082412, 4205598294, 133428468, 634383082, 2949277029, 2398386810, 3913789102, 403703816, 3580869306, 2297460856, 1867130149, 1918643758, 607656988, 4049053350, 3346248884, 1368901318, 600565992, 2090982877, 2632479860, 557719327, 3717614411, 3697393085, 2249034635, 2232388234, 2430627952, 1115438654, 3295786421, 2865522278, 3633334344, 84280067, 33027830, 303828494, 2747425121, 1600795957, 4188952407, 3496589753, 2434238086, 1486471617, 658119965, 3106381470, 953803233, 334231800, 3005978776, 857870609, 3151128937, 1890179545, 2298973838, 2805175444, 3056442267, 574365214, 2450884487, 550103529, 1233637070, 4289353045, 2018519080, 2057691103, 2399374476, 4166623649, 2148108681, 387583245, 3664101311, 836232934, 3330556482, 3100665960, 3280093505, 2955516313, 2002398509, 287182607, 3413881008, 4238890068, 3597515707, 975967766]);
  40461. te2 = $toNativeArray($kindUint32, [1671808611, 2089089148, 2006576759, 2072901243, 4061003762, 1807603307, 1873927791, 3310653893, 810573872, 16974337, 1739181671, 729634347, 4263110654, 3613570519, 2883997099, 1989864566, 3393556426, 2191335298, 3376449993, 2106063485, 4195741690, 1508618841, 1204391495, 4027317232, 2917941677, 3563566036, 2734514082, 2951366063, 2629772188, 2767672228, 1922491506, 3227229120, 3082974647, 4246528509, 2477669779, 644500518, 911895606, 1061256767, 4144166391, 3427763148, 878471220, 2784252325, 3845444069, 4043897329, 1905517169, 3631459288, 827548209, 356461077, 67897348, 3344078279, 593839651, 3277757891, 405286936, 2527147926, 84871685, 2595565466, 118033927, 305538066, 2157648768, 3795705826, 3945188843, 661212711, 2999812018, 1973414517, 152769033, 2208177539, 745822252, 439235610, 455947803, 1857215598, 1525593178, 2700827552, 1391895634, 994932283, 3596728278, 3016654259, 695947817, 3812548067, 795958831, 2224493444, 1408607827, 3513301457, 0, 3979133421, 543178784, 4229948412, 2982705585, 1542305371, 1790891114, 3410398667, 3201918910, 961245753, 1256100938, 1289001036, 1491644504, 3477767631, 3496721360, 4012557807, 2867154858, 4212583931, 1137018435, 1305975373, 861234739, 2241073541, 1171229253, 4178635257, 33948674, 2139225727, 1357946960, 1011120188, 2679776671, 2833468328, 1374921297, 2751356323, 1086357568, 2408187279, 2460827538, 2646352285, 944271416, 4110742005, 3168756668, 3066132406, 3665145818, 560153121, 271589392, 4279952895, 4077846003, 3530407890, 3444343245, 202643468, 322250259, 3962553324, 1608629855, 2543990167, 1154254916, 389623319, 3294073796, 2817676711, 2122513534, 1028094525, 1689045092, 1575467613, 422261273, 1939203699, 1621147744, 2174228865, 1339137615, 3699352540, 577127458, 712922154, 2427141008, 2290289544, 1187679302, 3995715566, 3100863416, 339486740, 3732514782, 1591917662, 186455563, 3681988059, 3762019296, 844522546, 978220090, 169743370, 1239126601, 101321734, 611076132, 1558493276, 3260915650, 3547250131, 2901361580, 1655096418, 2443721105, 2510565781, 3828863972, 2039214713, 3878868455, 3359869896, 928607799, 1840765549, 2374762893, 3580146133, 1322425422, 2850048425, 1823791212, 1459268694, 4094161908, 3928346602, 1706019429, 2056189050, 2934523822, 135794696, 3134549946, 2022240376, 628050469, 779246638, 472135708, 2800834470, 3032970164, 3327236038, 3894660072, 3715932637, 1956440180, 522272287, 1272813131, 3185336765, 2340818315, 2323976074, 1888542832, 1044544574, 3049550261, 1722469478, 1222152264, 50660867, 4127324150, 236067854, 1638122081, 895445557, 1475980887, 3117443513, 2257655686, 3243809217, 489110045, 2662934430, 3778599393, 4162055160, 2561878936, 288563729, 1773916777, 3648039385, 2391345038, 2493985684, 2612407707, 505560094, 2274497927, 3911240169, 3460925390, 1442818645, 678973480, 3749357023, 2358182796, 2717407649, 2306869641, 219617805, 3218761151, 3862026214, 1120306242, 1756942440, 1103331905, 2578459033, 762796589, 252780047, 2966125488, 1425844308, 3151392187, 372911126]);
  40462. te3 = $toNativeArray($kindUint32, [1667474886, 2088535288, 2004326894, 2071694838, 4075949567, 1802223062, 1869591006, 3318043793, 808472672, 16843522, 1734846926, 724270422, 4278065639, 3621216949, 2880169549, 1987484396, 3402253711, 2189597983, 3385409673, 2105378810, 4210693615, 1499065266, 1195886990, 4042263547, 2913856577, 3570689971, 2728590687, 2947541573, 2627518243, 2762274643, 1920112356, 3233831835, 3082273397, 4261223649, 2475929149, 640051788, 909531756, 1061110142, 4160160501, 3435941763, 875846760, 2779116625, 3857003729, 4059105529, 1903268834, 3638064043, 825316194, 353713962, 67374088, 3351728789, 589522246, 3284360861, 404236336, 2526454071, 84217610, 2593830191, 117901582, 303183396, 2155911963, 3806477791, 3958056653, 656894286, 2998062463, 1970642922, 151591698, 2206440989, 741110872, 437923380, 454765878, 1852748508, 1515908788, 2694904667, 1381168804, 993742198, 3604373943, 3014905469, 690584402, 3823320797, 791638366, 2223281939, 1398011302, 3520161977, 0, 3991743681, 538992704, 4244381667, 2981218425, 1532751286, 1785380564, 3419096717, 3200178535, 960056178, 1246420628, 1280103576, 1482221744, 3486468741, 3503319995, 4025428677, 2863326543, 4227536621, 1128514950, 1296947098, 859002214, 2240123921, 1162203018, 4193849577, 33687044, 2139062782, 1347481760, 1010582648, 2678045221, 2829640523, 1364325282, 2745433693, 1077985408, 2408548869, 2459086143, 2644360225, 943212656, 4126475505, 3166494563, 3065430391, 3671750063, 555836226, 269496352, 4294908645, 4092792573, 3537006015, 3452783745, 202118168, 320025894, 3974901699, 1600119230, 2543297077, 1145359496, 387397934, 3301201811, 2812801621, 2122220284, 1027426170, 1684319432, 1566435258, 421079858, 1936954854, 1616945344, 2172753945, 1330631070, 3705438115, 572679748, 707427924, 2425400123, 2290647819, 1179044492, 4008585671, 3099120491, 336870440, 3739122087, 1583276732, 185277718, 3688593069, 3772791771, 842159716, 976899700, 168435220, 1229577106, 101059084, 606366792, 1549591736, 3267517855, 3553849021, 2897014595, 1650632388, 2442242105, 2509612081, 3840161747, 2038008818, 3890688725, 3368567691, 926374254, 1835907034, 2374863873, 3587531953, 1313788572, 2846482505, 1819063512, 1448540844, 4109633523, 3941213647, 1701162954, 2054852340, 2930698567, 134748176, 3132806511, 2021165296, 623210314, 774795868, 471606328, 2795958615, 3031746419, 3334885783, 3907527627, 3722280097, 1953799400, 522133822, 1263263126, 3183336545, 2341176845, 2324333839, 1886425312, 1044267644, 3048588401, 1718004428, 1212733584, 50529542, 4143317495, 235803164, 1633788866, 892690282, 1465383342, 3115962473, 2256965911, 3250673817, 488449850, 2661202215, 3789633753, 4177007595, 2560144171, 286339874, 1768537042, 3654906025, 2391705863, 2492770099, 2610673197, 505291324, 2273808917, 3924369609, 3469625735, 1431699370, 673740880, 3755965093, 2358021891, 2711746649, 2307489801, 218961690, 3217021541, 3873845719, 1111672452, 1751693520, 1094828930, 2576986153, 757954394, 252645662, 2964376443, 1414855848, 3149649517, 370555436]);
  40463. td0 = $toNativeArray($kindUint32, [1374988112, 2118214995, 437757123, 975658646, 1001089995, 530400753, 2902087851, 1273168787, 540080725, 2910219766, 2295101073, 4110568485, 1340463100, 3307916247, 641025152, 3043140495, 3736164937, 632953703, 1172967064, 1576976609, 3274667266, 2169303058, 2370213795, 1809054150, 59727847, 361929877, 3211623147, 2505202138, 3569255213, 1484005843, 1239443753, 2395588676, 1975683434, 4102977912, 2572697195, 666464733, 3202437046, 4035489047, 3374361702, 2110667444, 1675577880, 3843699074, 2538681184, 1649639237, 2976151520, 3144396420, 4269907996, 4178062228, 1883793496, 2403728665, 2497604743, 1383856311, 2876494627, 1917518562, 3810496343, 1716890410, 3001755655, 800440835, 2261089178, 3543599269, 807962610, 599762354, 33778362, 3977675356, 2328828971, 2809771154, 4077384432, 1315562145, 1708848333, 101039829, 3509871135, 3299278474, 875451293, 2733856160, 92987698, 2767645557, 193195065, 1080094634, 1584504582, 3178106961, 1042385657, 2531067453, 3711829422, 1306967366, 2438237621, 1908694277, 67556463, 1615861247, 429456164, 3602770327, 2302690252, 1742315127, 2968011453, 126454664, 3877198648, 2043211483, 2709260871, 2084704233, 4169408201, 0, 159417987, 841739592, 504459436, 1817866830, 4245618683, 260388950, 1034867998, 908933415, 168810852, 1750902305, 2606453969, 607530554, 202008497, 2472011535, 3035535058, 463180190, 2160117071, 1641816226, 1517767529, 470948374, 3801332234, 3231722213, 1008918595, 303765277, 235474187, 4069246893, 766945465, 337553864, 1475418501, 2943682380, 4003061179, 2743034109, 4144047775, 1551037884, 1147550661, 1543208500, 2336434550, 3408119516, 3069049960, 3102011747, 3610369226, 1113818384, 328671808, 2227573024, 2236228733, 3535486456, 2935566865, 3341394285, 496906059, 3702665459, 226906860, 2009195472, 733156972, 2842737049, 294930682, 1206477858, 2835123396, 2700099354, 1451044056, 573804783, 2269728455, 3644379585, 2362090238, 2564033334, 2801107407, 2776292904, 3669462566, 1068351396, 742039012, 1350078989, 1784663195, 1417561698, 4136440770, 2430122216, 775550814, 2193862645, 2673705150, 1775276924, 1876241833, 3475313331, 3366754619, 270040487, 3902563182, 3678124923, 3441850377, 1851332852, 3969562369, 2203032232, 3868552805, 2868897406, 566021896, 4011190502, 3135740889, 1248802510, 3936291284, 699432150, 832877231, 708780849, 3332740144, 899835584, 1951317047, 4236429990, 3767586992, 866637845, 4043610186, 1106041591, 2144161806, 395441711, 1984812685, 1139781709, 3433712980, 3835036895, 2664543715, 1282050075, 3240894392, 1181045119, 2640243204, 25965917, 4203181171, 4211818798, 3009879386, 2463879762, 3910161971, 1842759443, 2597806476, 933301370, 1509430414, 3943906441, 3467192302, 3076639029, 3776767469, 2051518780, 2631065433, 1441952575, 404016761, 1942435775, 1408749034, 1610459739, 3745345300, 2017778566, 3400528769, 3110650942, 941896748, 3265478751, 371049330, 3168937228, 675039627, 4279080257, 967311729, 135050206, 3635733660, 1683407248, 2076935265, 3576870512, 1215061108, 3501741890]);
  40464. td1 = $toNativeArray($kindUint32, [1347548327, 1400783205, 3273267108, 2520393566, 3409685355, 4045380933, 2880240216, 2471224067, 1428173050, 4138563181, 2441661558, 636813900, 4233094615, 3620022987, 2149987652, 2411029155, 1239331162, 1730525723, 2554718734, 3781033664, 46346101, 310463728, 2743944855, 3328955385, 3875770207, 2501218972, 3955191162, 3667219033, 768917123, 3545789473, 692707433, 1150208456, 1786102409, 2029293177, 1805211710, 3710368113, 3065962831, 401639597, 1724457132, 3028143674, 409198410, 2196052529, 1620529459, 1164071807, 3769721975, 2226875310, 486441376, 2499348523, 1483753576, 428819965, 2274680428, 3075636216, 598438867, 3799141122, 1474502543, 711349675, 129166120, 53458370, 2592523643, 2782082824, 4063242375, 2988687269, 3120694122, 1559041666, 730517276, 2460449204, 4042459122, 2706270690, 3446004468, 3573941694, 533804130, 2328143614, 2637442643, 2695033685, 839224033, 1973745387, 957055980, 2856345839, 106852767, 1371368976, 4181598602, 1033297158, 2933734917, 1179510461, 3046200461, 91341917, 1862534868, 4284502037, 605657339, 2547432937, 3431546947, 2003294622, 3182487618, 2282195339, 954669403, 3682191598, 1201765386, 3917234703, 3388507166, 0, 2198438022, 1211247597, 2887651696, 1315723890, 4227665663, 1443857720, 507358933, 657861945, 1678381017, 560487590, 3516619604, 975451694, 2970356327, 261314535, 3535072918, 2652609425, 1333838021, 2724322336, 1767536459, 370938394, 182621114, 3854606378, 1128014560, 487725847, 185469197, 2918353863, 3106780840, 3356761769, 2237133081, 1286567175, 3152976349, 4255350624, 2683765030, 3160175349, 3309594171, 878443390, 1988838185, 3704300486, 1756818940, 1673061617, 3403100636, 272786309, 1075025698, 545572369, 2105887268, 4174560061, 296679730, 1841768865, 1260232239, 4091327024, 3960309330, 3497509347, 1814803222, 2578018489, 4195456072, 575138148, 3299409036, 446754879, 3629546796, 4011996048, 3347532110, 3252238545, 4270639778, 915985419, 3483825537, 681933534, 651868046, 2755636671, 3828103837, 223377554, 2607439820, 1649704518, 3270937875, 3901806776, 1580087799, 4118987695, 3198115200, 2087309459, 2842678573, 3016697106, 1003007129, 2802849917, 1860738147, 2077965243, 164439672, 4100872472, 32283319, 2827177882, 1709610350, 2125135846, 136428751, 3874428392, 3652904859, 3460984630, 3572145929, 3593056380, 2939266226, 824852259, 818324884, 3224740454, 930369212, 2801566410, 2967507152, 355706840, 1257309336, 4148292826, 243256656, 790073846, 2373340630, 1296297904, 1422699085, 3756299780, 3818836405, 457992840, 3099667487, 2135319889, 77422314, 1560382517, 1945798516, 788204353, 1521706781, 1385356242, 870912086, 325965383, 2358957921, 2050466060, 2388260884, 2313884476, 4006521127, 901210569, 3990953189, 1014646705, 1503449823, 1062597235, 2031621326, 3212035895, 3931371469, 1533017514, 350174575, 2256028891, 2177544179, 1052338372, 741876788, 1606591296, 1914052035, 213705253, 2334669897, 1107234197, 1899603969, 3725069491, 2631447780, 2422494913, 1635502980, 1893020342, 1950903388, 1120974935]);
  40465. td2 = $toNativeArray($kindUint32, [2807058932, 1699970625, 2764249623, 1586903591, 1808481195, 1173430173, 1487645946, 59984867, 4199882800, 1844882806, 1989249228, 1277555970, 3623636965, 3419915562, 1149249077, 2744104290, 1514790577, 459744698, 244860394, 3235995134, 1963115311, 4027744588, 2544078150, 4190530515, 1608975247, 2627016082, 2062270317, 1507497298, 2200818878, 567498868, 1764313568, 3359936201, 2305455554, 2037970062, 1047239000, 1910319033, 1337376481, 2904027272, 2892417312, 984907214, 1243112415, 830661914, 861968209, 2135253587, 2011214180, 2927934315, 2686254721, 731183368, 1750626376, 4246310725, 1820824798, 4172763771, 3542330227, 48394827, 2404901663, 2871682645, 671593195, 3254988725, 2073724613, 145085239, 2280796200, 2779915199, 1790575107, 2187128086, 472615631, 3029510009, 4075877127, 3802222185, 4107101658, 3201631749, 1646252340, 4270507174, 1402811438, 1436590835, 3778151818, 3950355702, 3963161475, 4020912224, 2667994737, 273792366, 2331590177, 104699613, 95345982, 3175501286, 2377486676, 1560637892, 3564045318, 369057872, 4213447064, 3919042237, 1137477952, 2658625497, 1119727848, 2340947849, 1530455833, 4007360968, 172466556, 266959938, 516552836, 0, 2256734592, 3980931627, 1890328081, 1917742170, 4294704398, 945164165, 3575528878, 958871085, 3647212047, 2787207260, 1423022939, 775562294, 1739656202, 3876557655, 2530391278, 2443058075, 3310321856, 547512796, 1265195639, 437656594, 3121275539, 719700128, 3762502690, 387781147, 218828297, 3350065803, 2830708150, 2848461854, 428169201, 122466165, 3720081049, 1627235199, 648017665, 4122762354, 1002783846, 2117360635, 695634755, 3336358691, 4234721005, 4049844452, 3704280881, 2232435299, 574624663, 287343814, 612205898, 1039717051, 840019705, 2708326185, 793451934, 821288114, 1391201670, 3822090177, 376187827, 3113855344, 1224348052, 1679968233, 2361698556, 1058709744, 752375421, 2431590963, 1321699145, 3519142200, 2734591178, 188127444, 2177869557, 3727205754, 2384911031, 3215212461, 2648976442, 2450346104, 3432737375, 1180849278, 331544205, 3102249176, 4150144569, 2952102595, 2159976285, 2474404304, 766078933, 313773861, 2570832044, 2108100632, 1668212892, 3145456443, 2013908262, 418672217, 3070356634, 2594734927, 1852171925, 3867060991, 3473416636, 3907448597, 2614737639, 919489135, 164948639, 2094410160, 2997825956, 590424639, 2486224549, 1723872674, 3157750862, 3399941250, 3501252752, 3625268135, 2555048196, 3673637356, 1343127501, 4130281361, 3599595085, 2957853679, 1297403050, 81781910, 3051593425, 2283490410, 532201772, 1367295589, 3926170974, 895287692, 1953757831, 1093597963, 492483431, 3528626907, 1446242576, 1192455638, 1636604631, 209336225, 344873464, 1015671571, 669961897, 3375740769, 3857572124, 2973530695, 3747192018, 1933530610, 3464042516, 935293895, 3454686199, 2858115069, 1863638845, 3683022916, 4085369519, 3292445032, 875313188, 1080017571, 3279033885, 621591778, 1233856572, 2504130317, 24197544, 3017672716, 3835484340, 3247465558, 2220981195, 3060847922, 1551124588, 1463996600]);
  40466. td3 = $toNativeArray($kindUint32, [4104605777, 1097159550, 396673818, 660510266, 2875968315, 2638606623, 4200115116, 3808662347, 821712160, 1986918061, 3430322568, 38544885, 3856137295, 718002117, 893681702, 1654886325, 2975484382, 3122358053, 3926825029, 4274053469, 796197571, 1290801793, 1184342925, 3556361835, 2405426947, 2459735317, 1836772287, 1381620373, 3196267988, 1948373848, 3764988233, 3385345166, 3263785589, 2390325492, 1480485785, 3111247143, 3780097726, 2293045232, 548169417, 3459953789, 3746175075, 439452389, 1362321559, 1400849762, 1685577905, 1806599355, 2174754046, 137073913, 1214797936, 1174215055, 3731654548, 2079897426, 1943217067, 1258480242, 529487843, 1437280870, 3945269170, 3049390895, 3313212038, 923313619, 679998000, 3215307299, 57326082, 377642221, 3474729866, 2041877159, 133361907, 1776460110, 3673476453, 96392454, 878845905, 2801699524, 777231668, 4082475170, 2330014213, 4142626212, 2213296395, 1626319424, 1906247262, 1846563261, 562755902, 3708173718, 1040559837, 3871163981, 1418573201, 3294430577, 114585348, 1343618912, 2566595609, 3186202582, 1078185097, 3651041127, 3896688048, 2307622919, 425408743, 3371096953, 2081048481, 1108339068, 2216610296, 0, 2156299017, 736970802, 292596766, 1517440620, 251657213, 2235061775, 2933202493, 758720310, 265905162, 1554391400, 1532285339, 908999204, 174567692, 1474760595, 4002861748, 2610011675, 3234156416, 3693126241, 2001430874, 303699484, 2478443234, 2687165888, 585122620, 454499602, 151849742, 2345119218, 3064510765, 514443284, 4044981591, 1963412655, 2581445614, 2137062819, 19308535, 1928707164, 1715193156, 4219352155, 1126790795, 600235211, 3992742070, 3841024952, 836553431, 1669664834, 2535604243, 3323011204, 1243905413, 3141400786, 4180808110, 698445255, 2653899549, 2989552604, 2253581325, 3252932727, 3004591147, 1891211689, 2487810577, 3915653703, 4237083816, 4030667424, 2100090966, 865136418, 1229899655, 953270745, 3399679628, 3557504664, 4118925222, 2061379749, 3079546586, 2915017791, 983426092, 2022837584, 1607244650, 2118541908, 2366882550, 3635996816, 972512814, 3283088770, 1568718495, 3499326569, 3576539503, 621982671, 2895723464, 410887952, 2623762152, 1002142683, 645401037, 1494807662, 2595684844, 1335535747, 2507040230, 4293295786, 3167684641, 367585007, 3885750714, 1865862730, 2668221674, 2960971305, 2763173681, 1059270954, 2777952454, 2724642869, 1320957812, 2194319100, 2429595872, 2815956275, 77089521, 3973773121, 3444575871, 2448830231, 1305906550, 4021308739, 2857194700, 2516901860, 3518358430, 1787304780, 740276417, 1699839814, 1592394909, 2352307457, 2272556026, 188821243, 1729977011, 3687994002, 274084841, 3594982253, 3613494426, 2701949495, 4162096729, 322734571, 2837966542, 1640576439, 484830689, 1202797690, 3537852828, 4067639125, 349075736, 3342319475, 4157467219, 4255800159, 1030690015, 1155237496, 2951971274, 1757691577, 607398968, 2738905026, 499347990, 3794078908, 1011452712, 227885567, 2818666809, 213114376, 3034881240, 1455525988, 3414450555, 850817237, 1817998408, 3092726480]);
  40467. /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
  40468. };
  40469. $pkg.$init = $init;
  40470. return $pkg;
  40471. })();
  40472. $packages["encoding/binary"] = (function() {
  40473. var $pkg = {}, $init, errors, io, math, reflect, bigEndian, sliceType, overflow;
  40474. errors = $packages["errors"];
  40475. io = $packages["io"];
  40476. math = $packages["math"];
  40477. reflect = $packages["reflect"];
  40478. bigEndian = $pkg.bigEndian = $newType(0, $kindStruct, "binary.bigEndian", "bigEndian", "encoding/binary", function() {
  40479. this.$val = this;
  40480. if (arguments.length === 0) {
  40481. return;
  40482. }
  40483. });
  40484. sliceType = $sliceType($Uint8);
  40485. bigEndian.ptr.prototype.Uint16 = function(b) {
  40486. var $ptr, b;
  40487. return (((1 >= b.$length ? $throwRuntimeError("index out of range") : b.$array[b.$offset + 1]) << 16 >>> 16) | (((0 >= b.$length ? $throwRuntimeError("index out of range") : b.$array[b.$offset + 0]) << 16 >>> 16) << 8 << 16 >>> 16)) >>> 0;
  40488. };
  40489. bigEndian.prototype.Uint16 = function(b) { return this.$val.Uint16(b); };
  40490. bigEndian.ptr.prototype.PutUint16 = function(b, v) {
  40491. var $ptr, b, v;
  40492. (0 >= b.$length ? $throwRuntimeError("index out of range") : b.$array[b.$offset + 0] = ((v >>> 8 << 16 >>> 16) << 24 >>> 24));
  40493. (1 >= b.$length ? $throwRuntimeError("index out of range") : b.$array[b.$offset + 1] = (v << 24 >>> 24));
  40494. };
  40495. bigEndian.prototype.PutUint16 = function(b, v) { return this.$val.PutUint16(b, v); };
  40496. bigEndian.ptr.prototype.Uint32 = function(b) {
  40497. var $ptr, b;
  40498. return (((((((3 >= b.$length ? $throwRuntimeError("index out of range") : b.$array[b.$offset + 3]) >>> 0) | (((2 >= b.$length ? $throwRuntimeError("index out of range") : b.$array[b.$offset + 2]) >>> 0) << 8 >>> 0)) >>> 0) | (((1 >= b.$length ? $throwRuntimeError("index out of range") : b.$array[b.$offset + 1]) >>> 0) << 16 >>> 0)) >>> 0) | (((0 >= b.$length ? $throwRuntimeError("index out of range") : b.$array[b.$offset + 0]) >>> 0) << 24 >>> 0)) >>> 0;
  40499. };
  40500. bigEndian.prototype.Uint32 = function(b) { return this.$val.Uint32(b); };
  40501. bigEndian.ptr.prototype.PutUint32 = function(b, v) {
  40502. var $ptr, b, v;
  40503. (0 >= b.$length ? $throwRuntimeError("index out of range") : b.$array[b.$offset + 0] = ((v >>> 24 >>> 0) << 24 >>> 24));
  40504. (1 >= b.$length ? $throwRuntimeError("index out of range") : b.$array[b.$offset + 1] = ((v >>> 16 >>> 0) << 24 >>> 24));
  40505. (2 >= b.$length ? $throwRuntimeError("index out of range") : b.$array[b.$offset + 2] = ((v >>> 8 >>> 0) << 24 >>> 24));
  40506. (3 >= b.$length ? $throwRuntimeError("index out of range") : b.$array[b.$offset + 3] = (v << 24 >>> 24));
  40507. };
  40508. bigEndian.prototype.PutUint32 = function(b, v) { return this.$val.PutUint32(b, v); };
  40509. bigEndian.ptr.prototype.Uint64 = function(b) {
  40510. var $ptr, b, x, x$1, x$10, x$11, x$12, x$13, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9;
  40511. return (x = (x$1 = (x$2 = (x$3 = (x$4 = (x$5 = (x$6 = new $Uint64(0, (7 >= b.$length ? $throwRuntimeError("index out of range") : b.$array[b.$offset + 7])), x$7 = $shiftLeft64(new $Uint64(0, (6 >= b.$length ? $throwRuntimeError("index out of range") : b.$array[b.$offset + 6])), 8), new $Uint64(x$6.$high | x$7.$high, (x$6.$low | x$7.$low) >>> 0)), x$8 = $shiftLeft64(new $Uint64(0, (5 >= b.$length ? $throwRuntimeError("index out of range") : b.$array[b.$offset + 5])), 16), new $Uint64(x$5.$high | x$8.$high, (x$5.$low | x$8.$low) >>> 0)), x$9 = $shiftLeft64(new $Uint64(0, (4 >= b.$length ? $throwRuntimeError("index out of range") : b.$array[b.$offset + 4])), 24), new $Uint64(x$4.$high | x$9.$high, (x$4.$low | x$9.$low) >>> 0)), x$10 = $shiftLeft64(new $Uint64(0, (3 >= b.$length ? $throwRuntimeError("index out of range") : b.$array[b.$offset + 3])), 32), new $Uint64(x$3.$high | x$10.$high, (x$3.$low | x$10.$low) >>> 0)), x$11 = $shiftLeft64(new $Uint64(0, (2 >= b.$length ? $throwRuntimeError("index out of range") : b.$array[b.$offset + 2])), 40), new $Uint64(x$2.$high | x$11.$high, (x$2.$low | x$11.$low) >>> 0)), x$12 = $shiftLeft64(new $Uint64(0, (1 >= b.$length ? $throwRuntimeError("index out of range") : b.$array[b.$offset + 1])), 48), new $Uint64(x$1.$high | x$12.$high, (x$1.$low | x$12.$low) >>> 0)), x$13 = $shiftLeft64(new $Uint64(0, (0 >= b.$length ? $throwRuntimeError("index out of range") : b.$array[b.$offset + 0])), 56), new $Uint64(x.$high | x$13.$high, (x.$low | x$13.$low) >>> 0));
  40512. };
  40513. bigEndian.prototype.Uint64 = function(b) { return this.$val.Uint64(b); };
  40514. bigEndian.ptr.prototype.PutUint64 = function(b, v) {
  40515. var $ptr, b, v;
  40516. (0 >= b.$length ? $throwRuntimeError("index out of range") : b.$array[b.$offset + 0] = ($shiftRightUint64(v, 56).$low << 24 >>> 24));
  40517. (1 >= b.$length ? $throwRuntimeError("index out of range") : b.$array[b.$offset + 1] = ($shiftRightUint64(v, 48).$low << 24 >>> 24));
  40518. (2 >= b.$length ? $throwRuntimeError("index out of range") : b.$array[b.$offset + 2] = ($shiftRightUint64(v, 40).$low << 24 >>> 24));
  40519. (3 >= b.$length ? $throwRuntimeError("index out of range") : b.$array[b.$offset + 3] = ($shiftRightUint64(v, 32).$low << 24 >>> 24));
  40520. (4 >= b.$length ? $throwRuntimeError("index out of range") : b.$array[b.$offset + 4] = ($shiftRightUint64(v, 24).$low << 24 >>> 24));
  40521. (5 >= b.$length ? $throwRuntimeError("index out of range") : b.$array[b.$offset + 5] = ($shiftRightUint64(v, 16).$low << 24 >>> 24));
  40522. (6 >= b.$length ? $throwRuntimeError("index out of range") : b.$array[b.$offset + 6] = ($shiftRightUint64(v, 8).$low << 24 >>> 24));
  40523. (7 >= b.$length ? $throwRuntimeError("index out of range") : b.$array[b.$offset + 7] = (v.$low << 24 >>> 24));
  40524. };
  40525. bigEndian.prototype.PutUint64 = function(b, v) { return this.$val.PutUint64(b, v); };
  40526. bigEndian.ptr.prototype.String = function() {
  40527. var $ptr;
  40528. return "BigEndian";
  40529. };
  40530. bigEndian.prototype.String = function() { return this.$val.String(); };
  40531. bigEndian.ptr.prototype.GoString = function() {
  40532. var $ptr;
  40533. return "binary.BigEndian";
  40534. };
  40535. bigEndian.prototype.GoString = function() { return this.$val.GoString(); };
  40536. bigEndian.methods = [{prop: "Uint16", name: "Uint16", pkg: "", typ: $funcType([sliceType], [$Uint16], false)}, {prop: "PutUint16", name: "PutUint16", pkg: "", typ: $funcType([sliceType, $Uint16], [], false)}, {prop: "Uint32", name: "Uint32", pkg: "", typ: $funcType([sliceType], [$Uint32], false)}, {prop: "PutUint32", name: "PutUint32", pkg: "", typ: $funcType([sliceType, $Uint32], [], false)}, {prop: "Uint64", name: "Uint64", pkg: "", typ: $funcType([sliceType], [$Uint64], false)}, {prop: "PutUint64", name: "PutUint64", pkg: "", typ: $funcType([sliceType, $Uint64], [], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "GoString", name: "GoString", pkg: "", typ: $funcType([], [$String], false)}];
  40537. bigEndian.init([]);
  40538. $init = function() {
  40539. $pkg.$init = function() {};
  40540. /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  40541. $r = errors.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  40542. $r = io.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  40543. $r = math.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  40544. $r = reflect.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  40545. $pkg.BigEndian = new bigEndian.ptr();
  40546. overflow = errors.New("binary: varint overflows a 64-bit integer");
  40547. /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
  40548. };
  40549. $pkg.$init = $init;
  40550. return $pkg;
  40551. })();
  40552. $packages["crypto/des"] = (function() {
  40553. var $pkg = {}, $init, cipher, binary, strconv, KeySizeError, desCipher, tripleDESCipher, arrayType, arrayType$1, arrayType$2, arrayType$3, sliceType, sliceType$1, sliceType$2, arrayType$4, ptrType, ptrType$1, feistelBox, permutationFunction, permutedChoice1, permutedChoice2, sBoxes, ksRotations, cryptBlock, encryptBlock, decryptBlock, feistel, permuteBlock, init, expandBlock, permuteInitialBlock, permuteFinalBlock, ksRotate, NewTripleDESCipher;
  40554. cipher = $packages["crypto/cipher"];
  40555. binary = $packages["encoding/binary"];
  40556. strconv = $packages["strconv"];
  40557. KeySizeError = $pkg.KeySizeError = $newType(4, $kindInt, "des.KeySizeError", "KeySizeError", "crypto/des", null);
  40558. desCipher = $pkg.desCipher = $newType(0, $kindStruct, "des.desCipher", "desCipher", "crypto/des", function(subkeys_) {
  40559. this.$val = this;
  40560. if (arguments.length === 0) {
  40561. this.subkeys = arrayType$4.zero();
  40562. return;
  40563. }
  40564. this.subkeys = subkeys_;
  40565. });
  40566. tripleDESCipher = $pkg.tripleDESCipher = $newType(0, $kindStruct, "des.tripleDESCipher", "tripleDESCipher", "crypto/des", function(cipher1_, cipher2_, cipher3_) {
  40567. this.$val = this;
  40568. if (arguments.length === 0) {
  40569. this.cipher1 = new desCipher.ptr();
  40570. this.cipher2 = new desCipher.ptr();
  40571. this.cipher3 = new desCipher.ptr();
  40572. return;
  40573. }
  40574. this.cipher1 = cipher1_;
  40575. this.cipher2 = cipher2_;
  40576. this.cipher3 = cipher3_;
  40577. });
  40578. arrayType = $arrayType($Uint32, 64);
  40579. arrayType$1 = $arrayType(arrayType, 8);
  40580. arrayType$2 = $arrayType($Uint8, 16);
  40581. arrayType$3 = $arrayType(arrayType$2, 4);
  40582. sliceType = $sliceType($Uint8);
  40583. sliceType$1 = $sliceType($Uint32);
  40584. sliceType$2 = $sliceType($Uint64);
  40585. arrayType$4 = $arrayType($Uint64, 16);
  40586. ptrType = $ptrType(desCipher);
  40587. ptrType$1 = $ptrType(tripleDESCipher);
  40588. cryptBlock = function(subkeys, dst, src, decrypt) {
  40589. var $ptr, _tmp, _tmp$1, _tmp$2, _tmp$3, b, decrypt, dst, i, left, preOutput, right, src, subkey, subkeys, x, x$1, x$2;
  40590. b = binary.BigEndian.Uint64(src);
  40591. b = permuteInitialBlock(b);
  40592. _tmp = ($shiftRightUint64(b, 32).$low >>> 0); _tmp$1 = (b.$low >>> 0); left = _tmp; right = _tmp$1;
  40593. subkey = new $Uint64(0, 0);
  40594. i = 0;
  40595. while (true) {
  40596. if (!(i < 16)) { break; }
  40597. if (decrypt) {
  40598. subkey = (x = 15 - i >> 0, ((x < 0 || x >= subkeys.$length) ? $throwRuntimeError("index out of range") : subkeys.$array[subkeys.$offset + x]));
  40599. } else {
  40600. subkey = ((i < 0 || i >= subkeys.$length) ? $throwRuntimeError("index out of range") : subkeys.$array[subkeys.$offset + i]);
  40601. }
  40602. _tmp$2 = right; _tmp$3 = (left ^ feistel(right, subkey)) >>> 0; left = _tmp$2; right = _tmp$3;
  40603. i = i + (1) >> 0;
  40604. }
  40605. preOutput = (x$1 = $shiftLeft64(new $Uint64(0, right), 32), x$2 = new $Uint64(0, left), new $Uint64(x$1.$high | x$2.$high, (x$1.$low | x$2.$low) >>> 0));
  40606. binary.BigEndian.PutUint64(dst, permuteFinalBlock(preOutput));
  40607. };
  40608. encryptBlock = function(subkeys, dst, src) {
  40609. var $ptr, dst, src, subkeys;
  40610. cryptBlock(subkeys, dst, src, false);
  40611. };
  40612. decryptBlock = function(subkeys, dst, src) {
  40613. var $ptr, dst, src, subkeys;
  40614. cryptBlock(subkeys, dst, src, true);
  40615. };
  40616. feistel = function(right, key) {
  40617. var $ptr, column, i, key, result, right, row, sBoxLocation, sBoxLocations, sBoxResult, x, x$1, x$2;
  40618. result = 0;
  40619. sBoxLocations = (x = expandBlock(right), new $Uint64(key.$high ^ x.$high, (key.$low ^ x.$low) >>> 0));
  40620. sBoxResult = 0;
  40621. i = 0;
  40622. while (true) {
  40623. if (!(i < 8)) { break; }
  40624. sBoxLocation = (($shiftRightUint64(sBoxLocations, 42).$low << 24 >>> 24) & 63) >>> 0;
  40625. sBoxLocations = $shiftLeft64(sBoxLocations, (6));
  40626. row = ((((sBoxLocation & 1) >>> 0)) | (((((sBoxLocation & 32) >>> 0)) >>> 4 << 24 >>> 24))) >>> 0;
  40627. column = (((sBoxLocation >>> 1 << 24 >>> 24)) & 15) >>> 0;
  40628. sBoxResult = (sBoxResult ^ ((x$1 = ((i < 0 || i >= feistelBox.length) ? $throwRuntimeError("index out of range") : feistelBox[i]), x$2 = (16 * row << 24 >>> 24) + column << 24 >>> 24, ((x$2 < 0 || x$2 >= x$1.length) ? $throwRuntimeError("index out of range") : x$1[x$2])))) >>> 0;
  40629. i = i + (1) << 24 >>> 24;
  40630. }
  40631. result = sBoxResult;
  40632. return result;
  40633. };
  40634. permuteBlock = function(src, permutation) {
  40635. var $ptr, _i, _ref, bit, block, n, permutation, position, src, x, x$1;
  40636. block = new $Uint64(0, 0);
  40637. _ref = permutation;
  40638. _i = 0;
  40639. while (true) {
  40640. if (!(_i < _ref.$length)) { break; }
  40641. position = _i;
  40642. n = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]);
  40643. bit = (x = $shiftRightUint64(src, n), new $Uint64(x.$high & 0, (x.$low & 1) >>> 0));
  40644. block = (x$1 = $shiftLeft64(bit, ((((permutation.$length - 1 >> 0)) - position >> 0) >>> 0)), new $Uint64(block.$high | x$1.$high, (block.$low | x$1.$low) >>> 0));
  40645. _i++;
  40646. }
  40647. return block;
  40648. };
  40649. init = function() {
  40650. var $ptr, _i, _ref, f, i, j, s, x, x$1, x$2, x$3;
  40651. _ref = sBoxes;
  40652. _i = 0;
  40653. while (true) {
  40654. if (!(_i < 8)) { break; }
  40655. s = _i;
  40656. i = 0;
  40657. while (true) {
  40658. if (!(i < 4)) { break; }
  40659. j = 0;
  40660. while (true) {
  40661. if (!(j < 16)) { break; }
  40662. f = $shiftLeft64(new $Uint64(0, (x = (x$1 = ((s < 0 || s >= sBoxes.length) ? $throwRuntimeError("index out of range") : sBoxes[s]), ((i < 0 || i >= x$1.length) ? $throwRuntimeError("index out of range") : x$1[i])), ((j < 0 || j >= x.length) ? $throwRuntimeError("index out of range") : x[j]))), ((4 * ((7 - (s >>> 0) >>> 0)) >>> 0)));
  40663. f = permuteBlock(f, new sliceType(permutationFunction));
  40664. (x$2 = ((s < 0 || s >= feistelBox.length) ? $throwRuntimeError("index out of range") : feistelBox[s]), x$3 = (16 * i >> 0) + j >> 0, ((x$3 < 0 || x$3 >= x$2.length) ? $throwRuntimeError("index out of range") : x$2[x$3] = (f.$low >>> 0)));
  40665. j = j + (1) >> 0;
  40666. }
  40667. i = i + (1) >> 0;
  40668. }
  40669. _i++;
  40670. }
  40671. };
  40672. expandBlock = function(src) {
  40673. var $ptr, block, i, src, x, x$1;
  40674. block = new $Uint64(0, 0);
  40675. src = (((src << 5 >>> 0)) | ((src >>> 27 >>> 0))) >>> 0;
  40676. i = 0;
  40677. while (true) {
  40678. if (!(i < 8)) { break; }
  40679. block = $shiftLeft64(block, (6));
  40680. block = (x = (x$1 = new $Uint64(0, src), new $Uint64(x$1.$high & 0, (x$1.$low & 63) >>> 0)), new $Uint64(block.$high | x.$high, (block.$low | x.$low) >>> 0));
  40681. src = (((src << 4 >>> 0)) | ((src >>> 28 >>> 0))) >>> 0;
  40682. i = i + (1) >> 0;
  40683. }
  40684. return block;
  40685. };
  40686. permuteInitialBlock = function(block) {
  40687. var $ptr, b1, b2, block, x, x$1, x$10, x$11, x$12, x$13, x$14, x$15, x$16, x$17, x$18, x$19, x$2, x$20, x$21, x$22, x$23, x$24, x$25, x$3, x$4, x$5, x$6, x$7, x$8, x$9;
  40688. b1 = $shiftRightUint64(block, 48);
  40689. b2 = $shiftLeft64(block, 48);
  40690. block = (x = (x$1 = (x$2 = new $Uint64(b1.$high ^ b2.$high, (b1.$low ^ b2.$low) >>> 0), x$3 = $shiftLeft64(b1, 48), new $Uint64(x$2.$high ^ x$3.$high, (x$2.$low ^ x$3.$low) >>> 0)), x$4 = $shiftRightUint64(b2, 48), new $Uint64(x$1.$high ^ x$4.$high, (x$1.$low ^ x$4.$low) >>> 0)), new $Uint64(block.$high ^ x.$high, (block.$low ^ x.$low) >>> 0));
  40691. b1 = (x$5 = $shiftRightUint64(block, 32), new $Uint64(x$5.$high & 0, (x$5.$low & 16711935) >>> 0));
  40692. b2 = new $Uint64(block.$high & 0, (block.$low & 4278255360) >>> 0);
  40693. block = (x$6 = (x$7 = (x$8 = (x$9 = $shiftLeft64(b1, 32), new $Uint64(x$9.$high ^ b2.$high, (x$9.$low ^ b2.$low) >>> 0)), x$10 = $shiftLeft64(b1, 8), new $Uint64(x$8.$high ^ x$10.$high, (x$8.$low ^ x$10.$low) >>> 0)), x$11 = $shiftLeft64(b2, 24), new $Uint64(x$7.$high ^ x$11.$high, (x$7.$low ^ x$11.$low) >>> 0)), new $Uint64(block.$high ^ x$6.$high, (block.$low ^ x$6.$low) >>> 0));
  40694. b1 = new $Uint64(block.$high & 252641280, (block.$low & 252641280) >>> 0);
  40695. b2 = new $Uint64(block.$high & 61680, (block.$low & 61680) >>> 0);
  40696. block = (x$12 = (x$13 = (x$14 = new $Uint64(b1.$high ^ b2.$high, (b1.$low ^ b2.$low) >>> 0), x$15 = $shiftRightUint64(b1, 12), new $Uint64(x$14.$high ^ x$15.$high, (x$14.$low ^ x$15.$low) >>> 0)), x$16 = $shiftLeft64(b2, 12), new $Uint64(x$13.$high ^ x$16.$high, (x$13.$low ^ x$16.$low) >>> 0)), new $Uint64(block.$high ^ x$12.$high, (block.$low ^ x$12.$low) >>> 0));
  40697. b1 = new $Uint64(block.$high & 855651072, (block.$low & 855651072) >>> 0);
  40698. b2 = new $Uint64(block.$high & 13369548, (block.$low & 13369548) >>> 0);
  40699. block = (x$17 = (x$18 = (x$19 = new $Uint64(b1.$high ^ b2.$high, (b1.$low ^ b2.$low) >>> 0), x$20 = $shiftRightUint64(b1, 6), new $Uint64(x$19.$high ^ x$20.$high, (x$19.$low ^ x$20.$low) >>> 0)), x$21 = $shiftLeft64(b2, 6), new $Uint64(x$18.$high ^ x$21.$high, (x$18.$low ^ x$21.$low) >>> 0)), new $Uint64(block.$high ^ x$17.$high, (block.$low ^ x$17.$low) >>> 0));
  40700. b1 = new $Uint64(block.$high & 2863311530, (block.$low & 1431655765) >>> 0);
  40701. block = (x$22 = (x$23 = (x$24 = $shiftRightUint64(b1, 33), new $Uint64(b1.$high ^ x$24.$high, (b1.$low ^ x$24.$low) >>> 0)), x$25 = $shiftLeft64(b1, 33), new $Uint64(x$23.$high ^ x$25.$high, (x$23.$low ^ x$25.$low) >>> 0)), new $Uint64(block.$high ^ x$22.$high, (block.$low ^ x$22.$low) >>> 0));
  40702. return block;
  40703. };
  40704. permuteFinalBlock = function(block) {
  40705. var $ptr, b1, b2, block, x, x$1, x$10, x$11, x$12, x$13, x$14, x$15, x$16, x$17, x$18, x$19, x$2, x$20, x$21, x$22, x$23, x$24, x$25, x$3, x$4, x$5, x$6, x$7, x$8, x$9;
  40706. b1 = new $Uint64(block.$high & 2863311530, (block.$low & 1431655765) >>> 0);
  40707. block = (x = (x$1 = (x$2 = $shiftRightUint64(b1, 33), new $Uint64(b1.$high ^ x$2.$high, (b1.$low ^ x$2.$low) >>> 0)), x$3 = $shiftLeft64(b1, 33), new $Uint64(x$1.$high ^ x$3.$high, (x$1.$low ^ x$3.$low) >>> 0)), new $Uint64(block.$high ^ x.$high, (block.$low ^ x.$low) >>> 0));
  40708. b1 = new $Uint64(block.$high & 855651072, (block.$low & 855651072) >>> 0);
  40709. b2 = new $Uint64(block.$high & 13369548, (block.$low & 13369548) >>> 0);
  40710. block = (x$4 = (x$5 = (x$6 = new $Uint64(b1.$high ^ b2.$high, (b1.$low ^ b2.$low) >>> 0), x$7 = $shiftRightUint64(b1, 6), new $Uint64(x$6.$high ^ x$7.$high, (x$6.$low ^ x$7.$low) >>> 0)), x$8 = $shiftLeft64(b2, 6), new $Uint64(x$5.$high ^ x$8.$high, (x$5.$low ^ x$8.$low) >>> 0)), new $Uint64(block.$high ^ x$4.$high, (block.$low ^ x$4.$low) >>> 0));
  40711. b1 = new $Uint64(block.$high & 252641280, (block.$low & 252641280) >>> 0);
  40712. b2 = new $Uint64(block.$high & 61680, (block.$low & 61680) >>> 0);
  40713. block = (x$9 = (x$10 = (x$11 = new $Uint64(b1.$high ^ b2.$high, (b1.$low ^ b2.$low) >>> 0), x$12 = $shiftRightUint64(b1, 12), new $Uint64(x$11.$high ^ x$12.$high, (x$11.$low ^ x$12.$low) >>> 0)), x$13 = $shiftLeft64(b2, 12), new $Uint64(x$10.$high ^ x$13.$high, (x$10.$low ^ x$13.$low) >>> 0)), new $Uint64(block.$high ^ x$9.$high, (block.$low ^ x$9.$low) >>> 0));
  40714. b1 = (x$14 = $shiftRightUint64(block, 32), new $Uint64(x$14.$high & 0, (x$14.$low & 16711935) >>> 0));
  40715. b2 = new $Uint64(block.$high & 0, (block.$low & 4278255360) >>> 0);
  40716. block = (x$15 = (x$16 = (x$17 = (x$18 = $shiftLeft64(b1, 32), new $Uint64(x$18.$high ^ b2.$high, (x$18.$low ^ b2.$low) >>> 0)), x$19 = $shiftLeft64(b1, 8), new $Uint64(x$17.$high ^ x$19.$high, (x$17.$low ^ x$19.$low) >>> 0)), x$20 = $shiftLeft64(b2, 24), new $Uint64(x$16.$high ^ x$20.$high, (x$16.$low ^ x$20.$low) >>> 0)), new $Uint64(block.$high ^ x$15.$high, (block.$low ^ x$15.$low) >>> 0));
  40717. b1 = $shiftRightUint64(block, 48);
  40718. b2 = $shiftLeft64(block, 48);
  40719. block = (x$21 = (x$22 = (x$23 = new $Uint64(b1.$high ^ b2.$high, (b1.$low ^ b2.$low) >>> 0), x$24 = $shiftLeft64(b1, 48), new $Uint64(x$23.$high ^ x$24.$high, (x$23.$low ^ x$24.$low) >>> 0)), x$25 = $shiftRightUint64(b2, 48), new $Uint64(x$22.$high ^ x$25.$high, (x$22.$low ^ x$25.$low) >>> 0)), new $Uint64(block.$high ^ x$21.$high, (block.$low ^ x$21.$low) >>> 0));
  40720. return block;
  40721. };
  40722. ksRotate = function(in$1) {
  40723. var $ptr, i, in$1, last, left, out, right, y, y$1;
  40724. out = sliceType$1.nil;
  40725. out = $makeSlice(sliceType$1, 16);
  40726. last = in$1;
  40727. i = 0;
  40728. while (true) {
  40729. if (!(i < 16)) { break; }
  40730. left = (((y = ((4 + ((i < 0 || i >= ksRotations.length) ? $throwRuntimeError("index out of range") : ksRotations[i]) << 24 >>> 24)), y < 32 ? (last << y) : 0) >>> 0)) >>> 4 >>> 0;
  40731. right = (y$1 = ((32 - ((i < 0 || i >= ksRotations.length) ? $throwRuntimeError("index out of range") : ksRotations[i]) << 24 >>> 24)), y$1 < 32 ? (((last << 4 >>> 0)) >>> y$1) : 0) >>> 0;
  40732. ((i < 0 || i >= out.$length) ? $throwRuntimeError("index out of range") : out.$array[out.$offset + i] = (left | right) >>> 0);
  40733. last = ((i < 0 || i >= out.$length) ? $throwRuntimeError("index out of range") : out.$array[out.$offset + i]);
  40734. i = i + (1) >> 0;
  40735. }
  40736. return out;
  40737. };
  40738. desCipher.ptr.prototype.generateSubkeys = function(keyBytes) {
  40739. var $ptr, c, i, key, keyBytes, leftRotations, pc2Input, permutedKey, rightRotations, x, x$1, x$2;
  40740. c = this;
  40741. key = binary.BigEndian.Uint64(keyBytes);
  40742. permutedKey = permuteBlock(key, new sliceType(permutedChoice1));
  40743. leftRotations = ksRotate(($shiftRightUint64(permutedKey, 28).$low >>> 0));
  40744. rightRotations = ksRotate(($shiftLeft64(permutedKey, 4).$low >>> 0) >>> 4 >>> 0);
  40745. i = 0;
  40746. while (true) {
  40747. if (!(i < 16)) { break; }
  40748. pc2Input = (x = $shiftLeft64(new $Uint64(0, ((i < 0 || i >= leftRotations.$length) ? $throwRuntimeError("index out of range") : leftRotations.$array[leftRotations.$offset + i])), 28), x$1 = new $Uint64(0, ((i < 0 || i >= rightRotations.$length) ? $throwRuntimeError("index out of range") : rightRotations.$array[rightRotations.$offset + i])), new $Uint64(x.$high | x$1.$high, (x.$low | x$1.$low) >>> 0));
  40749. (x$2 = c.subkeys, ((i < 0 || i >= x$2.length) ? $throwRuntimeError("index out of range") : x$2[i] = permuteBlock(pc2Input, new sliceType(permutedChoice2))));
  40750. i = i + (1) >> 0;
  40751. }
  40752. };
  40753. desCipher.prototype.generateSubkeys = function(keyBytes) { return this.$val.generateSubkeys(keyBytes); };
  40754. KeySizeError.prototype.Error = function() {
  40755. var $ptr, k;
  40756. k = this.$val;
  40757. return "crypto/des: invalid key size " + strconv.Itoa((k >> 0));
  40758. };
  40759. $ptrType(KeySizeError).prototype.Error = function() { return new KeySizeError(this.$get()).Error(); };
  40760. desCipher.ptr.prototype.BlockSize = function() {
  40761. var $ptr, c;
  40762. c = this;
  40763. return 8;
  40764. };
  40765. desCipher.prototype.BlockSize = function() { return this.$val.BlockSize(); };
  40766. desCipher.ptr.prototype.Encrypt = function(dst, src) {
  40767. var $ptr, c, dst, src;
  40768. c = this;
  40769. encryptBlock(new sliceType$2(c.subkeys), dst, src);
  40770. };
  40771. desCipher.prototype.Encrypt = function(dst, src) { return this.$val.Encrypt(dst, src); };
  40772. desCipher.ptr.prototype.Decrypt = function(dst, src) {
  40773. var $ptr, c, dst, src;
  40774. c = this;
  40775. decryptBlock(new sliceType$2(c.subkeys), dst, src);
  40776. };
  40777. desCipher.prototype.Decrypt = function(dst, src) { return this.$val.Decrypt(dst, src); };
  40778. NewTripleDESCipher = function(key) {
  40779. var $ptr, c, key;
  40780. if (!((key.$length === 24))) {
  40781. return [$ifaceNil, new KeySizeError((key.$length >> 0))];
  40782. }
  40783. c = new tripleDESCipher.ptr();
  40784. c.cipher1.generateSubkeys($subslice(key, 0, 8));
  40785. c.cipher2.generateSubkeys($subslice(key, 8, 16));
  40786. c.cipher3.generateSubkeys($subslice(key, 16));
  40787. return [c, $ifaceNil];
  40788. };
  40789. $pkg.NewTripleDESCipher = NewTripleDESCipher;
  40790. tripleDESCipher.ptr.prototype.BlockSize = function() {
  40791. var $ptr, c;
  40792. c = this;
  40793. return 8;
  40794. };
  40795. tripleDESCipher.prototype.BlockSize = function() { return this.$val.BlockSize(); };
  40796. tripleDESCipher.ptr.prototype.Encrypt = function(dst, src) {
  40797. var $ptr, c, dst, src;
  40798. c = this;
  40799. c.cipher1.Encrypt(dst, src);
  40800. c.cipher2.Decrypt(dst, dst);
  40801. c.cipher3.Encrypt(dst, dst);
  40802. };
  40803. tripleDESCipher.prototype.Encrypt = function(dst, src) { return this.$val.Encrypt(dst, src); };
  40804. tripleDESCipher.ptr.prototype.Decrypt = function(dst, src) {
  40805. var $ptr, c, dst, src;
  40806. c = this;
  40807. c.cipher3.Decrypt(dst, src);
  40808. c.cipher2.Encrypt(dst, dst);
  40809. c.cipher1.Decrypt(dst, dst);
  40810. };
  40811. tripleDESCipher.prototype.Decrypt = function(dst, src) { return this.$val.Decrypt(dst, src); };
  40812. KeySizeError.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}];
  40813. ptrType.methods = [{prop: "generateSubkeys", name: "generateSubkeys", pkg: "crypto/des", typ: $funcType([sliceType], [], false)}, {prop: "BlockSize", name: "BlockSize", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Encrypt", name: "Encrypt", pkg: "", typ: $funcType([sliceType, sliceType], [], false)}, {prop: "Decrypt", name: "Decrypt", pkg: "", typ: $funcType([sliceType, sliceType], [], false)}];
  40814. ptrType$1.methods = [{prop: "BlockSize", name: "BlockSize", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Encrypt", name: "Encrypt", pkg: "", typ: $funcType([sliceType, sliceType], [], false)}, {prop: "Decrypt", name: "Decrypt", pkg: "", typ: $funcType([sliceType, sliceType], [], false)}];
  40815. desCipher.init([{prop: "subkeys", name: "subkeys", pkg: "crypto/des", typ: arrayType$4, tag: ""}]);
  40816. tripleDESCipher.init([{prop: "cipher1", name: "cipher1", pkg: "crypto/des", typ: desCipher, tag: ""}, {prop: "cipher2", name: "cipher2", pkg: "crypto/des", typ: desCipher, tag: ""}, {prop: "cipher3", name: "cipher3", pkg: "crypto/des", typ: desCipher, tag: ""}]);
  40817. $init = function() {
  40818. $pkg.$init = function() {};
  40819. /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  40820. $r = cipher.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  40821. $r = binary.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  40822. $r = strconv.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  40823. feistelBox = arrayType$1.zero();
  40824. permutationFunction = $toNativeArray($kindUint8, [16, 25, 12, 11, 3, 20, 4, 15, 31, 17, 9, 6, 27, 14, 1, 22, 30, 24, 8, 18, 0, 5, 29, 23, 13, 19, 2, 26, 10, 21, 28, 7]);
  40825. permutedChoice1 = $toNativeArray($kindUint8, [7, 15, 23, 31, 39, 47, 55, 63, 6, 14, 22, 30, 38, 46, 54, 62, 5, 13, 21, 29, 37, 45, 53, 61, 4, 12, 20, 28, 1, 9, 17, 25, 33, 41, 49, 57, 2, 10, 18, 26, 34, 42, 50, 58, 3, 11, 19, 27, 35, 43, 51, 59, 36, 44, 52, 60]);
  40826. permutedChoice2 = $toNativeArray($kindUint8, [42, 39, 45, 32, 55, 51, 53, 28, 41, 50, 35, 46, 33, 37, 44, 52, 30, 48, 40, 49, 29, 36, 43, 54, 15, 4, 25, 19, 9, 1, 26, 16, 5, 11, 23, 8, 12, 7, 17, 0, 22, 3, 10, 14, 6, 20, 27, 24]);
  40827. sBoxes = $toNativeArray($kindArray, [$toNativeArray($kindArray, [$toNativeArray($kindUint8, [14, 4, 13, 1, 2, 15, 11, 8, 3, 10, 6, 12, 5, 9, 0, 7]), $toNativeArray($kindUint8, [0, 15, 7, 4, 14, 2, 13, 1, 10, 6, 12, 11, 9, 5, 3, 8]), $toNativeArray($kindUint8, [4, 1, 14, 8, 13, 6, 2, 11, 15, 12, 9, 7, 3, 10, 5, 0]), $toNativeArray($kindUint8, [15, 12, 8, 2, 4, 9, 1, 7, 5, 11, 3, 14, 10, 0, 6, 13])]), $toNativeArray($kindArray, [$toNativeArray($kindUint8, [15, 1, 8, 14, 6, 11, 3, 4, 9, 7, 2, 13, 12, 0, 5, 10]), $toNativeArray($kindUint8, [3, 13, 4, 7, 15, 2, 8, 14, 12, 0, 1, 10, 6, 9, 11, 5]), $toNativeArray($kindUint8, [0, 14, 7, 11, 10, 4, 13, 1, 5, 8, 12, 6, 9, 3, 2, 15]), $toNativeArray($kindUint8, [13, 8, 10, 1, 3, 15, 4, 2, 11, 6, 7, 12, 0, 5, 14, 9])]), $toNativeArray($kindArray, [$toNativeArray($kindUint8, [10, 0, 9, 14, 6, 3, 15, 5, 1, 13, 12, 7, 11, 4, 2, 8]), $toNativeArray($kindUint8, [13, 7, 0, 9, 3, 4, 6, 10, 2, 8, 5, 14, 12, 11, 15, 1]), $toNativeArray($kindUint8, [13, 6, 4, 9, 8, 15, 3, 0, 11, 1, 2, 12, 5, 10, 14, 7]), $toNativeArray($kindUint8, [1, 10, 13, 0, 6, 9, 8, 7, 4, 15, 14, 3, 11, 5, 2, 12])]), $toNativeArray($kindArray, [$toNativeArray($kindUint8, [7, 13, 14, 3, 0, 6, 9, 10, 1, 2, 8, 5, 11, 12, 4, 15]), $toNativeArray($kindUint8, [13, 8, 11, 5, 6, 15, 0, 3, 4, 7, 2, 12, 1, 10, 14, 9]), $toNativeArray($kindUint8, [10, 6, 9, 0, 12, 11, 7, 13, 15, 1, 3, 14, 5, 2, 8, 4]), $toNativeArray($kindUint8, [3, 15, 0, 6, 10, 1, 13, 8, 9, 4, 5, 11, 12, 7, 2, 14])]), $toNativeArray($kindArray, [$toNativeArray($kindUint8, [2, 12, 4, 1, 7, 10, 11, 6, 8, 5, 3, 15, 13, 0, 14, 9]), $toNativeArray($kindUint8, [14, 11, 2, 12, 4, 7, 13, 1, 5, 0, 15, 10, 3, 9, 8, 6]), $toNativeArray($kindUint8, [4, 2, 1, 11, 10, 13, 7, 8, 15, 9, 12, 5, 6, 3, 0, 14]), $toNativeArray($kindUint8, [11, 8, 12, 7, 1, 14, 2, 13, 6, 15, 0, 9, 10, 4, 5, 3])]), $toNativeArray($kindArray, [$toNativeArray($kindUint8, [12, 1, 10, 15, 9, 2, 6, 8, 0, 13, 3, 4, 14, 7, 5, 11]), $toNativeArray($kindUint8, [10, 15, 4, 2, 7, 12, 9, 5, 6, 1, 13, 14, 0, 11, 3, 8]), $toNativeArray($kindUint8, [9, 14, 15, 5, 2, 8, 12, 3, 7, 0, 4, 10, 1, 13, 11, 6]), $toNativeArray($kindUint8, [4, 3, 2, 12, 9, 5, 15, 10, 11, 14, 1, 7, 6, 0, 8, 13])]), $toNativeArray($kindArray, [$toNativeArray($kindUint8, [4, 11, 2, 14, 15, 0, 8, 13, 3, 12, 9, 7, 5, 10, 6, 1]), $toNativeArray($kindUint8, [13, 0, 11, 7, 4, 9, 1, 10, 14, 3, 5, 12, 2, 15, 8, 6]), $toNativeArray($kindUint8, [1, 4, 11, 13, 12, 3, 7, 14, 10, 15, 6, 8, 0, 5, 9, 2]), $toNativeArray($kindUint8, [6, 11, 13, 8, 1, 4, 10, 7, 9, 5, 0, 15, 14, 2, 3, 12])]), $toNativeArray($kindArray, [$toNativeArray($kindUint8, [13, 2, 8, 4, 6, 15, 11, 1, 10, 9, 3, 14, 5, 0, 12, 7]), $toNativeArray($kindUint8, [1, 15, 13, 8, 10, 3, 7, 4, 12, 5, 6, 11, 0, 14, 9, 2]), $toNativeArray($kindUint8, [7, 11, 4, 1, 9, 12, 14, 2, 0, 6, 10, 13, 15, 3, 5, 8]), $toNativeArray($kindUint8, [2, 1, 14, 7, 4, 10, 8, 13, 15, 12, 9, 0, 3, 5, 6, 11])])]);
  40828. ksRotations = $toNativeArray($kindUint8, [1, 1, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 1]);
  40829. init();
  40830. /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
  40831. };
  40832. $pkg.$init = $init;
  40833. return $pkg;
  40834. })();
  40835. $packages["math/rand"] = (function() {
  40836. var $pkg = {}, $init, nosync, math, testing, Source, Rand, lockedSource, rngSource, sliceType$1, ptrType$1, ptrType$2, arrayType, ptrType$3, ke, we, fe, kn, wn, fn, globalRand, rng_cooked, absInt32, NewSource, New, seedrand;
  40837. nosync = $packages["github.com/gopherjs/gopherjs/nosync"];
  40838. math = $packages["math"];
  40839. testing = $packages["testing"];
  40840. Source = $pkg.Source = $newType(8, $kindInterface, "rand.Source", "Source", "math/rand", null);
  40841. Rand = $pkg.Rand = $newType(0, $kindStruct, "rand.Rand", "Rand", "math/rand", function(src_) {
  40842. this.$val = this;
  40843. if (arguments.length === 0) {
  40844. this.src = $ifaceNil;
  40845. return;
  40846. }
  40847. this.src = src_;
  40848. });
  40849. lockedSource = $pkg.lockedSource = $newType(0, $kindStruct, "rand.lockedSource", "lockedSource", "math/rand", function(lk_, src_) {
  40850. this.$val = this;
  40851. if (arguments.length === 0) {
  40852. this.lk = new nosync.Mutex.ptr();
  40853. this.src = $ifaceNil;
  40854. return;
  40855. }
  40856. this.lk = lk_;
  40857. this.src = src_;
  40858. });
  40859. rngSource = $pkg.rngSource = $newType(0, $kindStruct, "rand.rngSource", "rngSource", "math/rand", function(tap_, feed_, vec_) {
  40860. this.$val = this;
  40861. if (arguments.length === 0) {
  40862. this.tap = 0;
  40863. this.feed = 0;
  40864. this.vec = arrayType.zero();
  40865. return;
  40866. }
  40867. this.tap = tap_;
  40868. this.feed = feed_;
  40869. this.vec = vec_;
  40870. });
  40871. sliceType$1 = $sliceType($Int);
  40872. ptrType$1 = $ptrType(Rand);
  40873. ptrType$2 = $ptrType(lockedSource);
  40874. arrayType = $arrayType($Int64, 607);
  40875. ptrType$3 = $ptrType(rngSource);
  40876. Rand.ptr.prototype.ExpFloat64 = function() {
  40877. var $ptr, _r, _r$1, _r$2, _r$3, i, j, r, x, x$1, $s, $r;
  40878. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; i = $f.i; j = $f.j; r = $f.r; x = $f.x; x$1 = $f.x$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  40879. r = this;
  40880. /* while (true) { */ case 1:
  40881. _r = r.Uint32(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  40882. j = _r;
  40883. i = (j & 255) >>> 0;
  40884. x = j * ((i < 0 || i >= we.length) ? $throwRuntimeError("index out of range") : we[i]);
  40885. if (j < ((i < 0 || i >= ke.length) ? $throwRuntimeError("index out of range") : ke[i])) {
  40886. return x;
  40887. }
  40888. /* */ if (i === 0) { $s = 4; continue; }
  40889. /* */ $s = 5; continue;
  40890. /* if (i === 0) { */ case 4:
  40891. _r$1 = r.Float64(); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  40892. _r$2 = math.Log(_r$1); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  40893. return 7.69711747013105 - _r$2;
  40894. /* } */ case 5:
  40895. _r$3 = r.Float64(); /* */ $s = 10; case 10: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  40896. /* */ if ($fround(((i < 0 || i >= fe.length) ? $throwRuntimeError("index out of range") : fe[i]) + $fround($fround(_r$3) * ($fround((x$1 = i - 1 >>> 0, ((x$1 < 0 || x$1 >= fe.length) ? $throwRuntimeError("index out of range") : fe[x$1])) - ((i < 0 || i >= fe.length) ? $throwRuntimeError("index out of range") : fe[i]))))) < $fround(math.Exp(-x))) { $s = 8; continue; }
  40897. /* */ $s = 9; continue;
  40898. /* if ($fround(((i < 0 || i >= fe.length) ? $throwRuntimeError("index out of range") : fe[i]) + $fround($fround(_r$3) * ($fround((x$1 = i - 1 >>> 0, ((x$1 < 0 || x$1 >= fe.length) ? $throwRuntimeError("index out of range") : fe[x$1])) - ((i < 0 || i >= fe.length) ? $throwRuntimeError("index out of range") : fe[i]))))) < $fround(math.Exp(-x))) { */ case 8:
  40899. return x;
  40900. /* } */ case 9:
  40901. /* } */ $s = 1; continue; case 2:
  40902. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Rand.ptr.prototype.ExpFloat64 }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f.i = i; $f.j = j; $f.r = r; $f.x = x; $f.x$1 = x$1; $f.$s = $s; $f.$r = $r; return $f;
  40903. };
  40904. Rand.prototype.ExpFloat64 = function() { return this.$val.ExpFloat64(); };
  40905. absInt32 = function(i) {
  40906. var $ptr, i;
  40907. if (i < 0) {
  40908. return (-i >>> 0);
  40909. }
  40910. return (i >>> 0);
  40911. };
  40912. Rand.ptr.prototype.NormFloat64 = function() {
  40913. var $ptr, _r, _r$1, _r$2, _r$3, _r$4, _r$5, i, j, r, x, x$1, y, $s, $r;
  40914. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; i = $f.i; j = $f.j; r = $f.r; x = $f.x; x$1 = $f.x$1; y = $f.y; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  40915. r = this;
  40916. /* while (true) { */ case 1:
  40917. _r = r.Uint32(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  40918. j = (_r >> 0);
  40919. i = j & 127;
  40920. x = j * ((i < 0 || i >= wn.length) ? $throwRuntimeError("index out of range") : wn[i]);
  40921. if (absInt32(j) < ((i < 0 || i >= kn.length) ? $throwRuntimeError("index out of range") : kn[i])) {
  40922. return x;
  40923. }
  40924. /* */ if (i === 0) { $s = 4; continue; }
  40925. /* */ $s = 5; continue;
  40926. /* if (i === 0) { */ case 4:
  40927. /* while (true) { */ case 6:
  40928. _r$1 = r.Float64(); /* */ $s = 8; case 8: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  40929. _r$2 = math.Log(_r$1); /* */ $s = 9; case 9: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  40930. x = -_r$2 * 0.29047645161474317;
  40931. _r$3 = r.Float64(); /* */ $s = 10; case 10: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  40932. _r$4 = math.Log(_r$3); /* */ $s = 11; case 11: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
  40933. y = -_r$4;
  40934. if (y + y >= x * x) {
  40935. /* break; */ $s = 7; continue;
  40936. }
  40937. /* } */ $s = 6; continue; case 7:
  40938. if (j > 0) {
  40939. return 3.442619855899 + x;
  40940. }
  40941. return -3.442619855899 - x;
  40942. /* } */ case 5:
  40943. _r$5 = r.Float64(); /* */ $s = 14; case 14: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
  40944. /* */ if ($fround(((i < 0 || i >= fn.length) ? $throwRuntimeError("index out of range") : fn[i]) + $fround($fround(_r$5) * ($fround((x$1 = i - 1 >> 0, ((x$1 < 0 || x$1 >= fn.length) ? $throwRuntimeError("index out of range") : fn[x$1])) - ((i < 0 || i >= fn.length) ? $throwRuntimeError("index out of range") : fn[i]))))) < $fround(math.Exp(-0.5 * x * x))) { $s = 12; continue; }
  40945. /* */ $s = 13; continue;
  40946. /* if ($fround(((i < 0 || i >= fn.length) ? $throwRuntimeError("index out of range") : fn[i]) + $fround($fround(_r$5) * ($fround((x$1 = i - 1 >> 0, ((x$1 < 0 || x$1 >= fn.length) ? $throwRuntimeError("index out of range") : fn[x$1])) - ((i < 0 || i >= fn.length) ? $throwRuntimeError("index out of range") : fn[i]))))) < $fround(math.Exp(-0.5 * x * x))) { */ case 12:
  40947. return x;
  40948. /* } */ case 13:
  40949. /* } */ $s = 1; continue; case 2:
  40950. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Rand.ptr.prototype.NormFloat64 }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f.i = i; $f.j = j; $f.r = r; $f.x = x; $f.x$1 = x$1; $f.y = y; $f.$s = $s; $f.$r = $r; return $f;
  40951. };
  40952. Rand.prototype.NormFloat64 = function() { return this.$val.NormFloat64(); };
  40953. NewSource = function(seed) {
  40954. var $ptr, rng, seed;
  40955. rng = $clone(new rngSource.ptr(), rngSource);
  40956. rng.Seed(seed);
  40957. return rng;
  40958. };
  40959. $pkg.NewSource = NewSource;
  40960. New = function(src) {
  40961. var $ptr, src;
  40962. return new Rand.ptr(src);
  40963. };
  40964. $pkg.New = New;
  40965. Rand.ptr.prototype.Seed = function(seed) {
  40966. var $ptr, r, seed, $s, $r;
  40967. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; r = $f.r; seed = $f.seed; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  40968. r = this;
  40969. $r = r.src.Seed(seed); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  40970. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Rand.ptr.prototype.Seed }; } $f.$ptr = $ptr; $f.r = r; $f.seed = seed; $f.$s = $s; $f.$r = $r; return $f;
  40971. };
  40972. Rand.prototype.Seed = function(seed) { return this.$val.Seed(seed); };
  40973. Rand.ptr.prototype.Int63 = function() {
  40974. var $ptr, _r, r, $s, $r;
  40975. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  40976. r = this;
  40977. _r = r.src.Int63(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  40978. return _r;
  40979. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Rand.ptr.prototype.Int63 }; } $f.$ptr = $ptr; $f._r = _r; $f.r = r; $f.$s = $s; $f.$r = $r; return $f;
  40980. };
  40981. Rand.prototype.Int63 = function() { return this.$val.Int63(); };
  40982. Rand.ptr.prototype.Uint32 = function() {
  40983. var $ptr, _r, r, $s, $r;
  40984. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  40985. r = this;
  40986. _r = r.Int63(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  40987. return ($shiftRightInt64(_r, 31).$low >>> 0);
  40988. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Rand.ptr.prototype.Uint32 }; } $f.$ptr = $ptr; $f._r = _r; $f.r = r; $f.$s = $s; $f.$r = $r; return $f;
  40989. };
  40990. Rand.prototype.Uint32 = function() { return this.$val.Uint32(); };
  40991. Rand.ptr.prototype.Int31 = function() {
  40992. var $ptr, _r, r, x, $s, $r;
  40993. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; r = $f.r; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  40994. r = this;
  40995. _r = r.Int63(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  40996. return ((x = $shiftRightInt64(_r, 32), x.$low + ((x.$high >> 31) * 4294967296)) >> 0);
  40997. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Rand.ptr.prototype.Int31 }; } $f.$ptr = $ptr; $f._r = _r; $f.r = r; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
  40998. };
  40999. Rand.prototype.Int31 = function() { return this.$val.Int31(); };
  41000. Rand.ptr.prototype.Int = function() {
  41001. var $ptr, _r, r, u, $s, $r;
  41002. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; r = $f.r; u = $f.u; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  41003. r = this;
  41004. _r = r.Int63(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  41005. u = (_r.$low >>> 0);
  41006. return (((u << 1 >>> 0) >>> 1 >>> 0) >> 0);
  41007. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Rand.ptr.prototype.Int }; } $f.$ptr = $ptr; $f._r = _r; $f.r = r; $f.u = u; $f.$s = $s; $f.$r = $r; return $f;
  41008. };
  41009. Rand.prototype.Int = function() { return this.$val.Int(); };
  41010. Rand.ptr.prototype.Int63n = function(n) {
  41011. var $ptr, _r, _r$1, _r$2, max, n, r, v, x, x$1, x$2, x$3, x$4, x$5, $s, $r;
  41012. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; max = $f.max; n = $f.n; r = $f.r; v = $f.v; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; x$3 = $f.x$3; x$4 = $f.x$4; x$5 = $f.x$5; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  41013. r = this;
  41014. if ((n.$high < 0 || (n.$high === 0 && n.$low <= 0))) {
  41015. $panic(new $String("invalid argument to Int63n"));
  41016. }
  41017. /* */ if ((x = (x$1 = new $Int64(n.$high - 0, n.$low - 1), new $Int64(n.$high & x$1.$high, (n.$low & x$1.$low) >>> 0)), (x.$high === 0 && x.$low === 0))) { $s = 1; continue; }
  41018. /* */ $s = 2; continue;
  41019. /* if ((x = (x$1 = new $Int64(n.$high - 0, n.$low - 1), new $Int64(n.$high & x$1.$high, (n.$low & x$1.$low) >>> 0)), (x.$high === 0 && x.$low === 0))) { */ case 1:
  41020. _r = r.Int63(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  41021. return (x$2 = _r, x$3 = new $Int64(n.$high - 0, n.$low - 1), new $Int64(x$2.$high & x$3.$high, (x$2.$low & x$3.$low) >>> 0));
  41022. /* } */ case 2:
  41023. max = (x$4 = (x$5 = $div64(new $Uint64(2147483648, 0), new $Uint64(n.$high, n.$low), true), new $Uint64(2147483647 - x$5.$high, 4294967295 - x$5.$low)), new $Int64(x$4.$high, x$4.$low));
  41024. _r$1 = r.Int63(); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  41025. v = _r$1;
  41026. /* while (true) { */ case 5:
  41027. /* if (!((v.$high > max.$high || (v.$high === max.$high && v.$low > max.$low)))) { break; } */ if(!((v.$high > max.$high || (v.$high === max.$high && v.$low > max.$low)))) { $s = 6; continue; }
  41028. _r$2 = r.Int63(); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  41029. v = _r$2;
  41030. /* } */ $s = 5; continue; case 6:
  41031. return $div64(v, n, true);
  41032. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Rand.ptr.prototype.Int63n }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f.max = max; $f.n = n; $f.r = r; $f.v = v; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.x$3 = x$3; $f.x$4 = x$4; $f.x$5 = x$5; $f.$s = $s; $f.$r = $r; return $f;
  41033. };
  41034. Rand.prototype.Int63n = function(n) { return this.$val.Int63n(n); };
  41035. Rand.ptr.prototype.Int31n = function(n) {
  41036. var $ptr, _r, _r$1, _r$2, _r$3, _r$4, max, n, r, v, $s, $r;
  41037. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; max = $f.max; n = $f.n; r = $f.r; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  41038. r = this;
  41039. if (n <= 0) {
  41040. $panic(new $String("invalid argument to Int31n"));
  41041. }
  41042. /* */ if ((n & ((n - 1 >> 0))) === 0) { $s = 1; continue; }
  41043. /* */ $s = 2; continue;
  41044. /* if ((n & ((n - 1 >> 0))) === 0) { */ case 1:
  41045. _r = r.Int31(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  41046. return _r & ((n - 1 >> 0));
  41047. /* } */ case 2:
  41048. max = ((2147483647 - (_r$1 = 2147483648 % (n >>> 0), _r$1 === _r$1 ? _r$1 : $throwRuntimeError("integer divide by zero")) >>> 0) >> 0);
  41049. _r$2 = r.Int31(); /* */ $s = 4; case 4: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  41050. v = _r$2;
  41051. /* while (true) { */ case 5:
  41052. /* if (!(v > max)) { break; } */ if(!(v > max)) { $s = 6; continue; }
  41053. _r$3 = r.Int31(); /* */ $s = 7; case 7: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  41054. v = _r$3;
  41055. /* } */ $s = 5; continue; case 6:
  41056. return (_r$4 = v % n, _r$4 === _r$4 ? _r$4 : $throwRuntimeError("integer divide by zero"));
  41057. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Rand.ptr.prototype.Int31n }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f.max = max; $f.n = n; $f.r = r; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
  41058. };
  41059. Rand.prototype.Int31n = function(n) { return this.$val.Int31n(n); };
  41060. Rand.ptr.prototype.Intn = function(n) {
  41061. var $ptr, _r, _r$1, n, r, x, $s, $r;
  41062. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; n = $f.n; r = $f.r; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  41063. r = this;
  41064. if (n <= 0) {
  41065. $panic(new $String("invalid argument to Intn"));
  41066. }
  41067. /* */ if (n <= 2147483647) { $s = 1; continue; }
  41068. /* */ $s = 2; continue;
  41069. /* if (n <= 2147483647) { */ case 1:
  41070. _r = r.Int31n((n >> 0)); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  41071. return (_r >> 0);
  41072. /* } */ case 2:
  41073. _r$1 = r.Int63n(new $Int64(0, n)); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  41074. return ((x = _r$1, x.$low + ((x.$high >> 31) * 4294967296)) >> 0);
  41075. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Rand.ptr.prototype.Intn }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f.n = n; $f.r = r; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
  41076. };
  41077. Rand.prototype.Intn = function(n) { return this.$val.Intn(n); };
  41078. Rand.ptr.prototype.Float64 = function() {
  41079. var $ptr, _r, f, r, $s, $r;
  41080. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; f = $f.f; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  41081. r = this;
  41082. _r = r.Int63(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  41083. f = $flatten64(_r) / 9.223372036854776e+18;
  41084. if (f === 1) {
  41085. f = 0;
  41086. }
  41087. return f;
  41088. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Rand.ptr.prototype.Float64 }; } $f.$ptr = $ptr; $f._r = _r; $f.f = f; $f.r = r; $f.$s = $s; $f.$r = $r; return $f;
  41089. };
  41090. Rand.prototype.Float64 = function() { return this.$val.Float64(); };
  41091. Rand.ptr.prototype.Float32 = function() {
  41092. var $ptr, _r, f, r, $s, $r;
  41093. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; f = $f.f; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  41094. r = this;
  41095. _r = r.Float64(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  41096. f = $fround(_r);
  41097. if (f === 1) {
  41098. f = 0;
  41099. }
  41100. return f;
  41101. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Rand.ptr.prototype.Float32 }; } $f.$ptr = $ptr; $f._r = _r; $f.f = f; $f.r = r; $f.$s = $s; $f.$r = $r; return $f;
  41102. };
  41103. Rand.prototype.Float32 = function() { return this.$val.Float32(); };
  41104. Rand.ptr.prototype.Perm = function(n) {
  41105. var $ptr, _r, i, j, m, n, r, $s, $r;
  41106. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; i = $f.i; j = $f.j; m = $f.m; n = $f.n; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  41107. r = this;
  41108. m = $makeSlice(sliceType$1, n);
  41109. i = 0;
  41110. /* while (true) { */ case 1:
  41111. /* if (!(i < n)) { break; } */ if(!(i < n)) { $s = 2; continue; }
  41112. _r = r.Intn(i + 1 >> 0); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  41113. j = _r;
  41114. ((i < 0 || i >= m.$length) ? $throwRuntimeError("index out of range") : m.$array[m.$offset + i] = ((j < 0 || j >= m.$length) ? $throwRuntimeError("index out of range") : m.$array[m.$offset + j]));
  41115. ((j < 0 || j >= m.$length) ? $throwRuntimeError("index out of range") : m.$array[m.$offset + j] = i);
  41116. i = i + (1) >> 0;
  41117. /* } */ $s = 1; continue; case 2:
  41118. return m;
  41119. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Rand.ptr.prototype.Perm }; } $f.$ptr = $ptr; $f._r = _r; $f.i = i; $f.j = j; $f.m = m; $f.n = n; $f.r = r; $f.$s = $s; $f.$r = $r; return $f;
  41120. };
  41121. Rand.prototype.Perm = function(n) { return this.$val.Perm(n); };
  41122. lockedSource.ptr.prototype.Int63 = function() {
  41123. var $ptr, _r, n, r, $s, $r;
  41124. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; n = $f.n; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  41125. n = new $Int64(0, 0);
  41126. r = this;
  41127. r.lk.Lock();
  41128. _r = r.src.Int63(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  41129. n = _r;
  41130. r.lk.Unlock();
  41131. return n;
  41132. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: lockedSource.ptr.prototype.Int63 }; } $f.$ptr = $ptr; $f._r = _r; $f.n = n; $f.r = r; $f.$s = $s; $f.$r = $r; return $f;
  41133. };
  41134. lockedSource.prototype.Int63 = function() { return this.$val.Int63(); };
  41135. lockedSource.ptr.prototype.Seed = function(seed) {
  41136. var $ptr, r, seed, $s, $r;
  41137. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; r = $f.r; seed = $f.seed; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  41138. r = this;
  41139. r.lk.Lock();
  41140. $r = r.src.Seed(seed); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  41141. r.lk.Unlock();
  41142. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: lockedSource.ptr.prototype.Seed }; } $f.$ptr = $ptr; $f.r = r; $f.seed = seed; $f.$s = $s; $f.$r = $r; return $f;
  41143. };
  41144. lockedSource.prototype.Seed = function(seed) { return this.$val.Seed(seed); };
  41145. seedrand = function(x) {
  41146. var $ptr, _q, _r, hi, lo, x;
  41147. hi = (_q = x / 44488, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero"));
  41148. lo = (_r = x % 44488, _r === _r ? _r : $throwRuntimeError("integer divide by zero"));
  41149. x = ((((48271 >>> 16 << 16) * lo >> 0) + (48271 << 16 >>> 16) * lo) >> 0) - ((((3399 >>> 16 << 16) * hi >> 0) + (3399 << 16 >>> 16) * hi) >> 0) >> 0;
  41150. if (x < 0) {
  41151. x = x + (2147483647) >> 0;
  41152. }
  41153. return x;
  41154. };
  41155. rngSource.ptr.prototype.Seed = function(seed) {
  41156. var $ptr, i, rng, seed, u, x, x$1, x$2, x$3, x$4, x$5;
  41157. rng = this;
  41158. rng.tap = 0;
  41159. rng.feed = 334;
  41160. seed = $div64(seed, new $Int64(0, 2147483647), true);
  41161. if ((seed.$high < 0 || (seed.$high === 0 && seed.$low < 0))) {
  41162. seed = (x = new $Int64(0, 2147483647), new $Int64(seed.$high + x.$high, seed.$low + x.$low));
  41163. }
  41164. if ((seed.$high === 0 && seed.$low === 0)) {
  41165. seed = new $Int64(0, 89482311);
  41166. }
  41167. x$1 = ((seed.$low + ((seed.$high >> 31) * 4294967296)) >> 0);
  41168. i = -20;
  41169. while (true) {
  41170. if (!(i < 607)) { break; }
  41171. x$1 = seedrand(x$1);
  41172. if (i >= 0) {
  41173. u = new $Int64(0, 0);
  41174. u = $shiftLeft64(new $Int64(0, x$1), 40);
  41175. x$1 = seedrand(x$1);
  41176. u = (x$2 = $shiftLeft64(new $Int64(0, x$1), 20), new $Int64(u.$high ^ x$2.$high, (u.$low ^ x$2.$low) >>> 0));
  41177. x$1 = seedrand(x$1);
  41178. u = (x$3 = new $Int64(0, x$1), new $Int64(u.$high ^ x$3.$high, (u.$low ^ x$3.$low) >>> 0));
  41179. u = (x$4 = ((i < 0 || i >= rng_cooked.length) ? $throwRuntimeError("index out of range") : rng_cooked[i]), new $Int64(u.$high ^ x$4.$high, (u.$low ^ x$4.$low) >>> 0));
  41180. (x$5 = rng.vec, ((i < 0 || i >= x$5.length) ? $throwRuntimeError("index out of range") : x$5[i] = new $Int64(u.$high & 2147483647, (u.$low & 4294967295) >>> 0)));
  41181. }
  41182. i = i + (1) >> 0;
  41183. }
  41184. };
  41185. rngSource.prototype.Seed = function(seed) { return this.$val.Seed(seed); };
  41186. rngSource.ptr.prototype.Int63 = function() {
  41187. var $ptr, rng, x, x$1, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9;
  41188. rng = this;
  41189. rng.tap = rng.tap - (1) >> 0;
  41190. if (rng.tap < 0) {
  41191. rng.tap = rng.tap + (607) >> 0;
  41192. }
  41193. rng.feed = rng.feed - (1) >> 0;
  41194. if (rng.feed < 0) {
  41195. rng.feed = rng.feed + (607) >> 0;
  41196. }
  41197. x$7 = (x = (x$1 = (x$2 = rng.vec, x$3 = rng.feed, ((x$3 < 0 || x$3 >= x$2.length) ? $throwRuntimeError("index out of range") : x$2[x$3])), x$4 = (x$5 = rng.vec, x$6 = rng.tap, ((x$6 < 0 || x$6 >= x$5.length) ? $throwRuntimeError("index out of range") : x$5[x$6])), new $Int64(x$1.$high + x$4.$high, x$1.$low + x$4.$low)), new $Int64(x.$high & 2147483647, (x.$low & 4294967295) >>> 0));
  41198. (x$8 = rng.vec, x$9 = rng.feed, ((x$9 < 0 || x$9 >= x$8.length) ? $throwRuntimeError("index out of range") : x$8[x$9] = x$7));
  41199. return x$7;
  41200. };
  41201. rngSource.prototype.Int63 = function() { return this.$val.Int63(); };
  41202. ptrType$1.methods = [{prop: "ExpFloat64", name: "ExpFloat64", pkg: "", typ: $funcType([], [$Float64], false)}, {prop: "NormFloat64", name: "NormFloat64", pkg: "", typ: $funcType([], [$Float64], false)}, {prop: "Seed", name: "Seed", pkg: "", typ: $funcType([$Int64], [], false)}, {prop: "Int63", name: "Int63", pkg: "", typ: $funcType([], [$Int64], false)}, {prop: "Uint32", name: "Uint32", pkg: "", typ: $funcType([], [$Uint32], false)}, {prop: "Int31", name: "Int31", pkg: "", typ: $funcType([], [$Int32], false)}, {prop: "Int", name: "Int", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Int63n", name: "Int63n", pkg: "", typ: $funcType([$Int64], [$Int64], false)}, {prop: "Int31n", name: "Int31n", pkg: "", typ: $funcType([$Int32], [$Int32], false)}, {prop: "Intn", name: "Intn", pkg: "", typ: $funcType([$Int], [$Int], false)}, {prop: "Float64", name: "Float64", pkg: "", typ: $funcType([], [$Float64], false)}, {prop: "Float32", name: "Float32", pkg: "", typ: $funcType([], [$Float32], false)}, {prop: "Perm", name: "Perm", pkg: "", typ: $funcType([$Int], [sliceType$1], false)}];
  41203. ptrType$2.methods = [{prop: "Int63", name: "Int63", pkg: "", typ: $funcType([], [$Int64], false)}, {prop: "Seed", name: "Seed", pkg: "", typ: $funcType([$Int64], [], false)}];
  41204. ptrType$3.methods = [{prop: "Seed", name: "Seed", pkg: "", typ: $funcType([$Int64], [], false)}, {prop: "Int63", name: "Int63", pkg: "", typ: $funcType([], [$Int64], false)}];
  41205. Source.init([{prop: "Int63", name: "Int63", pkg: "", typ: $funcType([], [$Int64], false)}, {prop: "Seed", name: "Seed", pkg: "", typ: $funcType([$Int64], [], false)}]);
  41206. Rand.init([{prop: "src", name: "src", pkg: "math/rand", typ: Source, tag: ""}]);
  41207. lockedSource.init([{prop: "lk", name: "lk", pkg: "math/rand", typ: nosync.Mutex, tag: ""}, {prop: "src", name: "src", pkg: "math/rand", typ: Source, tag: ""}]);
  41208. rngSource.init([{prop: "tap", name: "tap", pkg: "math/rand", typ: $Int, tag: ""}, {prop: "feed", name: "feed", pkg: "math/rand", typ: $Int, tag: ""}, {prop: "vec", name: "vec", pkg: "math/rand", typ: arrayType, tag: ""}]);
  41209. $init = function() {
  41210. $pkg.$init = function() {};
  41211. /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  41212. $r = nosync.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  41213. $r = math.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  41214. $r = testing.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  41215. ke = $toNativeArray($kindUint32, [3801129273, 0, 2615860924, 3279400049, 3571300752, 3733536696, 3836274812, 3906990442, 3958562475, 3997804264, 4028649213, 4053523342, 4074002619, 4091154507, 4105727352, 4118261130, 4129155133, 4138710916, 4147160435, 4154685009, 4161428406, 4167506077, 4173011791, 4178022498, 4182601930, 4186803325, 4190671498, 4194244443, 4197554582, 4200629752, 4203493986, 4206168142, 4208670408, 4211016720, 4213221098, 4215295924, 4217252177, 4219099625, 4220846988, 4222502074, 4224071896, 4225562770, 4226980400, 4228329951, 4229616109, 4230843138, 4232014925, 4233135020, 4234206673, 4235232866, 4236216336, 4237159604, 4238064994, 4238934652, 4239770563, 4240574564, 4241348362, 4242093539, 4242811568, 4243503822, 4244171579, 4244816032, 4245438297, 4246039419, 4246620374, 4247182079, 4247725394, 4248251127, 4248760037, 4249252839, 4249730206, 4250192773, 4250641138, 4251075867, 4251497493, 4251906522, 4252303431, 4252688672, 4253062674, 4253425844, 4253778565, 4254121205, 4254454110, 4254777611, 4255092022, 4255397640, 4255694750, 4255983622, 4256264513, 4256537670, 4256803325, 4257061702, 4257313014, 4257557464, 4257795244, 4258026541, 4258251531, 4258470383, 4258683258, 4258890309, 4259091685, 4259287526, 4259477966, 4259663135, 4259843154, 4260018142, 4260188212, 4260353470, 4260514019, 4260669958, 4260821380, 4260968374, 4261111028, 4261249421, 4261383632, 4261513736, 4261639802, 4261761900, 4261880092, 4261994441, 4262105003, 4262211835, 4262314988, 4262414513, 4262510454, 4262602857, 4262691764, 4262777212, 4262859239, 4262937878, 4263013162, 4263085118, 4263153776, 4263219158, 4263281289, 4263340187, 4263395872, 4263448358, 4263497660, 4263543789, 4263586755, 4263626565, 4263663224, 4263696735, 4263727099, 4263754314, 4263778377, 4263799282, 4263817020, 4263831582, 4263842955, 4263851124, 4263856071, 4263857776, 4263856218, 4263851370, 4263843206, 4263831695, 4263816804, 4263798497, 4263776735, 4263751476, 4263722676, 4263690284, 4263654251, 4263614520, 4263571032, 4263523724, 4263472530, 4263417377, 4263358192, 4263294892, 4263227394, 4263155608, 4263079437, 4262998781, 4262913534, 4262823581, 4262728804, 4262629075, 4262524261, 4262414220, 4262298801, 4262177846, 4262051187, 4261918645, 4261780032, 4261635148, 4261483780, 4261325704, 4261160681, 4260988457, 4260808763, 4260621313, 4260425802, 4260221905, 4260009277, 4259787550, 4259556329, 4259315195, 4259063697, 4258801357, 4258527656, 4258242044, 4257943926, 4257632664, 4257307571, 4256967906, 4256612870, 4256241598, 4255853155, 4255446525, 4255020608, 4254574202, 4254106002, 4253614578, 4253098370, 4252555662, 4251984571, 4251383021, 4250748722, 4250079132, 4249371435, 4248622490, 4247828790, 4246986404, 4246090910, 4245137315, 4244119963, 4243032411, 4241867296, 4240616155, 4239269214, 4237815118, 4236240596, 4234530035, 4232664930, 4230623176, 4228378137, 4225897409, 4223141146, 4220059768, 4216590757, 4212654085, 4208145538, 4202926710, 4196809522, 4189531420, 4180713890, 4169789475, 4155865042, 4137444620, 4111806704, 4073393724, 4008685917, 3873074895]);
  41216. we = $toNativeArray($kindFloat32, [2.0249555365836613e-09, 1.4866739783681027e-11, 2.4409616689036184e-11, 3.1968806074589295e-11, 3.844677007314168e-11, 4.42282044321729e-11, 4.951644302919611e-11, 5.443358958023836e-11, 5.905943789574764e-11, 6.34494193296753e-11, 6.764381416113352e-11, 7.167294535648239e-11, 7.556032188826833e-11, 7.932458162551725e-11, 8.298078890689453e-11, 8.654132271912474e-11, 9.001651507523079e-11, 9.341507428706208e-11, 9.674443190998971e-11, 1.0001099254308699e-10, 1.0322031424037093e-10, 1.0637725422757427e-10, 1.0948611461891744e-10, 1.1255067711157807e-10, 1.1557434870246297e-10, 1.1856014781042035e-10, 1.2151082917633005e-10, 1.2442885610752796e-10, 1.2731647680563896e-10, 1.3017574518325858e-10, 1.330085347417409e-10, 1.3581656632677408e-10, 1.386014220061682e-10, 1.413645728254309e-10, 1.4410737880776736e-10, 1.4683107507629245e-10, 1.4953686899854546e-10, 1.522258291641876e-10, 1.5489899640730442e-10, 1.575573282952547e-10, 1.6020171300645814e-10, 1.628330109637588e-10, 1.6545202707884954e-10, 1.68059510752272e-10, 1.7065616975120435e-10, 1.73242697965037e-10, 1.758197337720091e-10, 1.783878739169964e-10, 1.8094774290045024e-10, 1.834998542005195e-10, 1.8604476292871652e-10, 1.8858298256319017e-10, 1.9111498494872592e-10, 1.9364125580789704e-10, 1.9616222535212557e-10, 1.9867835154840918e-10, 2.011900368525943e-10, 2.0369768372052732e-10, 2.062016807302669e-10, 2.0870240258208383e-10, 2.1120022397624894e-10, 2.136955057352452e-10, 2.1618855317040442e-10, 2.1867974098199738e-10, 2.2116936060356807e-10, 2.2365774510202385e-10, 2.2614519978869652e-10, 2.2863201609713002e-10, 2.3111849933865614e-10, 2.3360494094681883e-10, 2.3609159072179864e-10, 2.3857874009713953e-10, 2.4106666662859766e-10, 2.4355562011635357e-10, 2.460458781161634e-10, 2.485376904282077e-10, 2.5103127909709144e-10, 2.5352694943414633e-10, 2.560248957284017e-10, 2.585253955356137e-10, 2.610286709003873e-10, 2.6353494386732734e-10, 2.6604446423661443e-10, 2.6855745405285347e-10, 2.71074163116225e-10, 2.7359478571575835e-10, 2.7611959940720965e-10, 2.786487707240326e-10, 2.8118254946640775e-10, 2.8372118543451563e-10, 2.8626484516180994e-10, 2.8881380620404684e-10, 2.9136826285025563e-10, 2.9392840938946563e-10, 2.96494523377433e-10, 2.990667713476114e-10, 3.016454031001814e-10, 3.042306406797479e-10, 3.068226783753403e-10, 3.09421765987139e-10, 3.12028125559749e-10, 3.1464195138219964e-10, 3.17263521010247e-10, 3.1989300097734485e-10, 3.225306410836737e-10, 3.2517669112941405e-10, 3.2783134540359526e-10, 3.3049485370639786e-10, 3.3316743808242677e-10, 3.3584937608743815e-10, 3.385408342548857e-10, 3.4124211789610115e-10, 3.4395342130011386e-10, 3.4667499426710435e-10, 3.494071143528288e-10, 3.521500313574677e-10, 3.54903967325626e-10, 3.576691720574843e-10, 3.6044595086437425e-10, 3.632345535464765e-10, 3.660352021483959e-10, 3.688482297370399e-10, 3.716738583570134e-10, 3.7451239331964814e-10, 3.773641121807003e-10, 3.802292924959261e-10, 3.831082673322328e-10, 3.8600128648980103e-10, 3.8890865527996255e-10, 3.9183070676962473e-10, 3.9476774627011935e-10, 3.977200790927782e-10, 4.006880383045086e-10, 4.0367195697221803e-10, 4.066721681628138e-10, 4.0968900494320337e-10, 4.127228558914453e-10, 4.15774054074447e-10, 4.188429603146915e-10, 4.2192993543466173e-10, 4.25035395767992e-10, 4.2815970213716525e-10, 4.313032986313914e-10, 4.3446651831757777e-10, 4.376498607960855e-10, 4.408536868893975e-10, 4.4407846844229937e-10, 4.4732464954400086e-10, 4.5059267428371186e-10, 4.538830145062178e-10, 4.5719619756745544e-10, 4.605326675566346e-10, 4.638929240741163e-10, 4.672775499869886e-10, 4.706869893844612e-10, 4.74121908400349e-10, 4.775827511238617e-10, 4.810701836888143e-10, 4.845848167178701e-10, 4.881271498113904e-10, 4.916979601254923e-10, 4.952977472605369e-10, 4.989272883726414e-10, 5.025872495956207e-10, 5.062783525744408e-10, 5.100013189540675e-10, 5.13756870379467e-10, 5.175458395179078e-10, 5.21369003525507e-10, 5.252272505806843e-10, 5.29121357839557e-10, 5.330522134805449e-10, 5.3702081670437e-10, 5.41028055689452e-10, 5.450749851476644e-10, 5.491624932574268e-10, 5.532918012640664e-10, 5.574638528571541e-10, 5.616799247931681e-10, 5.659410717839819e-10, 5.702485705860738e-10, 5.746036979559221e-10, 5.790077306500052e-10, 5.83462111958255e-10, 5.879682296594524e-10, 5.925275825546805e-10, 5.971417249561739e-10, 6.01812211176167e-10, 6.065408175714992e-10, 6.113292094767075e-10, 6.16179329782085e-10, 6.21092954844471e-10, 6.260721940876124e-10, 6.311191569352559e-10, 6.362359528111483e-10, 6.414249686947926e-10, 6.466885360545405e-10, 6.520292639144998e-10, 6.574497612987784e-10, 6.629528592760892e-10, 6.685415554485985e-10, 6.742187919073217e-10, 6.799880103436351e-10, 6.858525969377638e-10, 6.918161599145378e-10, 6.978825850545434e-10, 7.040559801829716e-10, 7.103406751696184e-10, 7.167412219288849e-10, 7.232625609532306e-10, 7.2990985477972e-10, 7.366885990123251e-10, 7.436047333442275e-10, 7.506645305355164e-10, 7.57874762946642e-10, 7.652426470272644e-10, 7.727759543385559e-10, 7.804830115532013e-10, 7.883728114777e-10, 7.964550685635174e-10, 8.047402189070851e-10, 8.132396422944055e-10, 8.219657177122031e-10, 8.309318788590758e-10, 8.401527806789488e-10, 8.496445214056791e-10, 8.594246980742071e-10, 8.695127395874636e-10, 8.799300732498239e-10, 8.90700457834015e-10, 9.01850316648023e-10, 9.134091816243028e-10, 9.254100818978372e-10, 9.37890431984556e-10, 9.508922538259412e-10, 9.64463842123564e-10, 9.78660263939446e-10, 9.935448019859905e-10, 1.0091912860943353e-09, 1.0256859805934937e-09, 1.0431305819125214e-09, 1.0616465484503124e-09, 1.0813799855569073e-09, 1.1025096391392708e-09, 1.1252564435793033e-09, 1.149898620766976e-09, 1.176793218427008e-09, 1.2064089727203964e-09, 1.2393785997488749e-09, 1.2765849488616254e-09, 1.319313880365769e-09, 1.36954347862428e-09, 1.4305497897382224e-09, 1.5083649884672923e-09, 1.6160853766322703e-09, 1.7921247819074893e-09]);
  41217. fe = $toNativeArray($kindFloat32, [1, 0.9381436705589294, 0.900469958782196, 0.8717043399810791, 0.847785472869873, 0.8269932866096497, 0.8084216713905334, 0.7915276288986206, 0.7759568691253662, 0.7614634037017822, 0.7478685975074768, 0.7350381016731262, 0.7228676676750183, 0.7112747430801392, 0.7001926302909851, 0.6895664930343628, 0.6793505549430847, 0.669506311416626, 0.6600008606910706, 0.6508058309555054, 0.6418967247009277, 0.633251965045929, 0.62485271692276, 0.6166821718215942, 0.608725368976593, 0.6009689569473267, 0.5934008955955505, 0.5860103368759155, 0.5787873864173889, 0.5717230439186096, 0.5648092031478882, 0.5580382943153381, 0.5514034032821655, 0.5448982119560242, 0.5385168790817261, 0.5322538614273071, 0.526104211807251, 0.5200631618499756, 0.5141264200210571, 0.5082897543907166, 0.5025495290756226, 0.4969019889831543, 0.4913438558578491, 0.4858720004558563, 0.48048335313796997, 0.4751752018928528, 0.4699448347091675, 0.4647897481918335, 0.4597076177597046, 0.4546961486339569, 0.4497532546520233, 0.44487687945365906, 0.4400651156902313, 0.4353161156177521, 0.4306281507015228, 0.42599955201148987, 0.42142874002456665, 0.4169141948223114, 0.4124544560909271, 0.40804818272590637, 0.4036940038204193, 0.39939069747924805, 0.3951369822025299, 0.39093172550201416, 0.38677382469177246, 0.38266217708587646, 0.378595769405365, 0.37457355856895447, 0.37059465050697327, 0.366658091545105, 0.362762987613678, 0.358908474445343, 0.35509374737739563, 0.35131800174713135, 0.3475804924964905, 0.34388044476509094, 0.34021714329719543, 0.33658990263938904, 0.3329980671405792, 0.3294409513473511, 0.32591795921325684, 0.32242849469184875, 0.3189719021320343, 0.3155476748943329, 0.31215524673461914, 0.3087940812110901, 0.30546361207962036, 0.30216339230537415, 0.29889291524887085, 0.29565170407295227, 0.2924392819404602, 0.2892552316188812, 0.28609907627105713, 0.2829704284667969, 0.27986884117126465, 0.2767939269542694, 0.2737452983856201, 0.2707225978374481, 0.26772540807724, 0.26475343108177185, 0.2618062496185303, 0.258883535861969, 0.2559850215911865, 0.25311028957366943, 0.25025907158851624, 0.24743106961250305, 0.2446259707212448, 0.24184346199035645, 0.23908329010009766, 0.23634515702724457, 0.2336287796497345, 0.23093391954898834, 0.22826029360294342, 0.22560766339302063, 0.22297576069831848, 0.22036437690258026, 0.21777324378490448, 0.21520215272903442, 0.212650865316391, 0.21011915802955627, 0.20760682225227356, 0.20511364936828613, 0.20263944566249847, 0.20018397271633148, 0.19774706661701202, 0.1953285187482834, 0.19292815029621124, 0.19054576754570007, 0.18818120658397675, 0.18583425879478455, 0.18350479006767273, 0.18119260668754578, 0.17889754474163055, 0.17661945521831512, 0.17435817420482635, 0.1721135377883911, 0.16988539695739746, 0.16767361760139465, 0.16547803580760956, 0.16329853236675262, 0.16113494336605072, 0.1589871346950531, 0.15685498714447021, 0.15473836660385132, 0.15263713896274567, 0.1505511850118637, 0.1484803706407547, 0.14642459154129028, 0.1443837285041809, 0.14235764741897583, 0.1403462439775467, 0.13834942877292633, 0.136367067694664, 0.13439907133579254, 0.1324453204870224, 0.1305057406425476, 0.12858019769191742, 0.12666863203048706, 0.12477091699838638, 0.12288697808980942, 0.1210167184472084, 0.11916005611419678, 0.11731690168380737, 0.11548716574907303, 0.11367076635360718, 0.11186762899160385, 0.11007767915725708, 0.1083008274435997, 0.10653700679540634, 0.10478614270687103, 0.1030481606721878, 0.10132300108671188, 0.0996105819940567, 0.09791085124015808, 0.09622374176979065, 0.09454918652772903, 0.09288713335990906, 0.09123751521110535, 0.08960027992725372, 0.08797537535429001, 0.08636274188756943, 0.0847623273730278, 0.08317409455776215, 0.08159798383712769, 0.08003395050764084, 0.07848194986581802, 0.07694194465875626, 0.07541389018297195, 0.07389774918556213, 0.07239348441362381, 0.070901058614254, 0.06942043453454971, 0.06795158982276917, 0.06649449467658997, 0.06504911929368973, 0.06361543387174606, 0.06219341605901718, 0.06078304722905159, 0.0593843050301075, 0.05799717456102371, 0.05662164092063904, 0.05525768920779228, 0.05390531197190285, 0.05256449431180954, 0.05123523622751236, 0.04991753399372101, 0.04861138388514519, 0.047316793352365494, 0.04603376239538193, 0.044762298464775085, 0.04350241273641586, 0.04225412383675575, 0.04101744294166565, 0.039792392402887344, 0.03857899457216263, 0.03737728297710419, 0.03618728369474411, 0.03500903770327568, 0.03384258225560188, 0.0326879620552063, 0.031545232981443405, 0.030414443463087082, 0.0292956605553627, 0.028188949450850487, 0.027094384655356407, 0.02601204626262188, 0.024942025542259216, 0.023884421214461327, 0.022839335724711418, 0.021806888282299042, 0.020787203684449196, 0.019780423492193222, 0.018786700442433357, 0.017806200310587883, 0.016839107498526573, 0.015885621309280396, 0.014945968054234982, 0.01402039173990488, 0.013109165243804455, 0.012212592177093029, 0.011331013403832912, 0.010464809834957123, 0.009614413604140282, 0.008780314587056637, 0.007963077165186405, 0.007163353264331818, 0.0063819061033427715, 0.005619642324745655, 0.004877655766904354, 0.004157294984906912, 0.003460264764726162, 0.0027887988835573196, 0.0021459676790982485, 0.001536299823783338, 0.0009672692976891994, 0.0004541343660093844]);
  41218. kn = $toNativeArray($kindUint32, [1991057938, 0, 1611602771, 1826899878, 1918584482, 1969227037, 2001281515, 2023368125, 2039498179, 2051788381, 2061460127, 2069267110, 2075699398, 2081089314, 2085670119, 2089610331, 2093034710, 2096037586, 2098691595, 2101053571, 2103168620, 2105072996, 2106796166, 2108362327, 2109791536, 2111100552, 2112303493, 2113412330, 2114437283, 2115387130, 2116269447, 2117090813, 2117856962, 2118572919, 2119243101, 2119871411, 2120461303, 2121015852, 2121537798, 2122029592, 2122493434, 2122931299, 2123344971, 2123736059, 2124106020, 2124456175, 2124787725, 2125101763, 2125399283, 2125681194, 2125948325, 2126201433, 2126441213, 2126668298, 2126883268, 2127086657, 2127278949, 2127460589, 2127631985, 2127793506, 2127945490, 2128088244, 2128222044, 2128347141, 2128463758, 2128572095, 2128672327, 2128764606, 2128849065, 2128925811, 2128994934, 2129056501, 2129110560, 2129157136, 2129196237, 2129227847, 2129251929, 2129268426, 2129277255, 2129278312, 2129271467, 2129256561, 2129233410, 2129201800, 2129161480, 2129112170, 2129053545, 2128985244, 2128906855, 2128817916, 2128717911, 2128606255, 2128482298, 2128345305, 2128194452, 2128028813, 2127847342, 2127648860, 2127432031, 2127195339, 2126937058, 2126655214, 2126347546, 2126011445, 2125643893, 2125241376, 2124799783, 2124314271, 2123779094, 2123187386, 2122530867, 2121799464, 2120980787, 2120059418, 2119015917, 2117825402, 2116455471, 2114863093, 2112989789, 2110753906, 2108037662, 2104664315, 2100355223, 2094642347, 2086670106, 2074676188, 2054300022, 2010539237]);
  41219. wn = $toNativeArray($kindFloat32, [1.7290404663583558e-09, 1.2680928529462676e-10, 1.689751810696194e-10, 1.9862687883343e-10, 2.223243117382978e-10, 2.4244936613904144e-10, 2.601613091623989e-10, 2.761198769629658e-10, 2.9073962681813725e-10, 3.042996965518796e-10, 3.169979556627567e-10, 3.289802041894774e-10, 3.4035738116777736e-10, 3.5121602848242617e-10, 3.61625090983253e-10, 3.7164057942185025e-10, 3.813085680537398e-10, 3.906675816178762e-10, 3.997501218933053e-10, 4.0858399996679395e-10, 4.1719308563337165e-10, 4.255982233303257e-10, 4.3381759295968436e-10, 4.4186720948857783e-10, 4.497613115272969e-10, 4.57512583373898e-10, 4.6513240481438345e-10, 4.726310454117311e-10, 4.800177477726209e-10, 4.873009773476156e-10, 4.944885056978876e-10, 5.015873272284921e-10, 5.086040477664255e-10, 5.155446070048697e-10, 5.224146670812502e-10, 5.292193350214802e-10, 5.359634958068682e-10, 5.426517013518151e-10, 5.492881705038144e-10, 5.558769555769061e-10, 5.624218868405251e-10, 5.689264614971989e-10, 5.75394121238304e-10, 5.818281967329142e-10, 5.882316855831959e-10, 5.946076964136182e-10, 6.009590047817426e-10, 6.072883862451306e-10, 6.135985053390414e-10, 6.19892026598734e-10, 6.261713370037114e-10, 6.324390455780815e-10, 6.386973727678935e-10, 6.449488165749528e-10, 6.511955974453087e-10, 6.574400468473129e-10, 6.636843297158634e-10, 6.699307220081607e-10, 6.761814441702541e-10, 6.824387166481927e-10, 6.887046488657234e-10, 6.949815167800466e-10, 7.012714853260604e-10, 7.075767749498141e-10, 7.13899661608508e-10, 7.202424212593428e-10, 7.266072743483676e-10, 7.329966078550854e-10, 7.394128087589991e-10, 7.458582640396116e-10, 7.523354716987285e-10, 7.588469852493063e-10, 7.653954137154528e-10, 7.719834771435785e-10, 7.786139510912449e-10, 7.852897221383159e-10, 7.920137878869582e-10, 7.987892014504894e-10, 8.056192379868321e-10, 8.125072836762115e-10, 8.194568912323064e-10, 8.264716688799467e-10, 8.3355555791087e-10, 8.407127216614185e-10, 8.479473234679347e-10, 8.552640262671218e-10, 8.626675485068347e-10, 8.701631637464402e-10, 8.777562010564566e-10, 8.854524335966119e-10, 8.932581896381464e-10, 9.011799639857543e-10, 9.092249730890956e-10, 9.174008219758889e-10, 9.25715837318819e-10, 9.341788453909317e-10, 9.42799727177146e-10, 9.515889187738935e-10, 9.605578554783278e-10, 9.697193048552322e-10, 9.790869226478094e-10, 9.886760299337993e-10, 9.985036131254788e-10, 1.008588212947359e-09, 1.0189509236369076e-09, 1.0296150598776421e-09, 1.040606933955246e-09, 1.0519566329136865e-09, 1.0636980185552147e-09, 1.0758701707302976e-09, 1.0885182755160372e-09, 1.101694735439196e-09, 1.115461056855338e-09, 1.1298901814171813e-09, 1.1450695946990663e-09, 1.1611052119775422e-09, 1.178127595480305e-09, 1.1962995039027646e-09, 1.2158286599728285e-09, 1.2369856250415978e-09, 1.2601323318151003e-09, 1.2857697129220469e-09, 1.3146201904845611e-09, 1.3477839955200466e-09, 1.3870635751089821e-09, 1.43574030442295e-09, 1.5008658760251592e-09, 1.6030947680434338e-09]);
  41220. fn = $toNativeArray($kindFloat32, [1, 0.963599681854248, 0.9362826943397522, 0.9130436182022095, 0.8922816514968872, 0.8732430338859558, 0.8555005788803101, 0.8387836217880249, 0.8229072093963623, 0.8077383041381836, 0.7931770086288452, 0.7791460752487183, 0.7655841708183289, 0.7524415850639343, 0.7396772503852844, 0.7272568941116333, 0.7151514887809753, 0.7033361196517944, 0.6917891502380371, 0.6804918646812439, 0.6694276928901672, 0.6585819721221924, 0.6479418277740479, 0.6374954581260681, 0.6272324919700623, 0.6171433925628662, 0.6072195172309875, 0.5974531769752502, 0.5878370404243469, 0.5783646702766418, 0.5690299868583679, 0.5598273873329163, 0.550751805305481, 0.5417983531951904, 0.5329626798629761, 0.5242405533790588, 0.5156282186508179, 0.5071220397949219, 0.49871864914894104, 0.4904148280620575, 0.48220765590667725, 0.47409430146217346, 0.466072142124176, 0.45813870429992676, 0.45029163360595703, 0.44252872467041016, 0.4348478317260742, 0.42724698781967163, 0.41972434520721436, 0.41227802634239197, 0.40490642189979553, 0.39760786294937134, 0.3903807997703552, 0.3832238018512726, 0.3761354684829712, 0.3691144585609436, 0.36215949058532715, 0.3552693724632263, 0.3484429717063904, 0.3416791558265686, 0.33497685194015503, 0.32833510637283325, 0.3217529058456421, 0.3152293860912323, 0.30876362323760986, 0.3023548424243927, 0.2960021495819092, 0.2897048592567444, 0.28346219658851624, 0.2772735059261322, 0.271138072013855, 0.2650552988052368, 0.25902456045150757, 0.25304529070854187, 0.24711695313453674, 0.24123899638652802, 0.23541094362735748, 0.22963231801986694, 0.22390270233154297, 0.21822164952754974, 0.21258877217769623, 0.20700371265411377, 0.20146611332893372, 0.1959756463766098, 0.19053204357624054, 0.18513499200344086, 0.17978426814079285, 0.1744796335697174, 0.16922089457511902, 0.16400785744190216, 0.1588403731584549, 0.15371830761432648, 0.14864157140254974, 0.14361007511615753, 0.13862377405166626, 0.13368265330791473, 0.12878671288490295, 0.12393598258495331, 0.11913054436445236, 0.11437050998210907, 0.10965602099895477, 0.1049872562289238, 0.10036443918943405, 0.09578784555196762, 0.09125780314207077, 0.08677466958761215, 0.08233889937400818, 0.07795098423957825, 0.07361150532960892, 0.06932111829519272, 0.06508058309555054, 0.06089077144861221, 0.05675266310572624, 0.05266740173101425, 0.048636294901371, 0.044660862535238266, 0.040742866694927216, 0.03688438981771469, 0.03308788686990738, 0.029356317594647408, 0.025693291798233986, 0.02210330404341221, 0.018592102453112602, 0.015167297795414925, 0.011839478276669979, 0.0086244847625494, 0.005548994988203049, 0.0026696291752159595]);
  41221. rng_cooked = $toNativeArray($kindInt64, [new $Int64(1173834291, 3952672746), new $Int64(1081821761, 3130416987), new $Int64(324977939, 3414273807), new $Int64(1241840476, 2806224363), new $Int64(669549340, 1997590414), new $Int64(2103305448, 2402795971), new $Int64(1663160183, 1140819369), new $Int64(1120601685, 1788868961), new $Int64(1848035537, 1089001426), new $Int64(1235702047, 873593504), new $Int64(1911387977, 581324885), new $Int64(492609478, 1609182556), new $Int64(1069394745, 1241596776), new $Int64(1895445337, 1771189259), new $Int64(772864846, 3467012610), new $Int64(2006957225, 2344407434), new $Int64(402115761, 782467244), new $Int64(26335124, 3404933915), new $Int64(1063924276, 618867887), new $Int64(1178782866, 520164395), new $Int64(555910815, 1341358184), new $Int64(632398609, 665794848), new $Int64(1527227641, 3183648150), new $Int64(1781176124, 696329606), new $Int64(1789146075, 4151988961), new $Int64(60039534, 998951326), new $Int64(1535158725, 1364957564), new $Int64(63173359, 4090230633), new $Int64(649454641, 4009697548), new $Int64(248009524, 2569622517), new $Int64(778703922, 3742421481), new $Int64(1038377625, 1506914633), new $Int64(1738099768, 1983412561), new $Int64(236311649, 1436266083), new $Int64(1035966148, 3922894967), new $Int64(810508934, 1792680179), new $Int64(563141142, 1188796351), new $Int64(1349617468, 405968250), new $Int64(1044074554, 433754187), new $Int64(870549669, 4073162024), new $Int64(1053232044, 433121399), new $Int64(2451824, 4162580594), new $Int64(2010221076, 4132415622), new $Int64(611252600, 3033822028), new $Int64(2016407895, 824682382), new $Int64(2366218, 3583765414), new $Int64(1522878809, 535386927), new $Int64(1637219058, 2286693689), new $Int64(1453075389, 2968466525), new $Int64(193683513, 1351410206), new $Int64(1863677552, 1412813499), new $Int64(492736522, 4126267639), new $Int64(512765208, 2105529399), new $Int64(2132966268, 2413882233), new $Int64(947457634, 32226200), new $Int64(1149341356, 2032329073), new $Int64(106485445, 1356518208), new $Int64(79673492, 3430061722), new $Int64(663048513, 3820169661), new $Int64(481498454, 2981816134), new $Int64(1017155588, 4184371017), new $Int64(206574701, 2119206761), new $Int64(1295374591, 2472200560), new $Int64(1587026100, 2853524696), new $Int64(1307803389, 1681119904), new $Int64(1972496813, 95608918), new $Int64(392686347, 3690479145), new $Int64(941912722, 1397922290), new $Int64(988169623, 1516129515), new $Int64(1827305493, 1547420459), new $Int64(1311333971, 1470949486), new $Int64(194013850, 1336785672), new $Int64(2102397034, 4131677129), new $Int64(755205548, 4246329084), new $Int64(1004983461, 3788585631), new $Int64(2081005363, 3080389532), new $Int64(1501045284, 2215402037), new $Int64(391002300, 1171593935), new $Int64(1408774047, 1423855166), new $Int64(1628305930, 2276716302), new $Int64(1779030508, 2068027241), new $Int64(1369359303, 3427553297), new $Int64(189241615, 3289637845), new $Int64(1057480830, 3486407650), new $Int64(634572984, 3071877822), new $Int64(1159653919, 3363620705), new $Int64(1213226718, 4159821533), new $Int64(2070861710, 1894661), new $Int64(1472989750, 1156868282), new $Int64(348271067, 776219088), new $Int64(1646054810, 2425634259), new $Int64(1716021749, 680510161), new $Int64(1573220192, 1310101429), new $Int64(1095885995, 2964454134), new $Int64(1821788136, 3467098407), new $Int64(1990672920, 2109628894), new $Int64(7834944, 1232604732), new $Int64(309412934, 3261916179), new $Int64(1699175360, 434597899), new $Int64(235436061, 1624796439), new $Int64(521080809, 3589632480), new $Int64(1198416575, 864579159), new $Int64(208735487, 1380889830), new $Int64(619206309, 2654509477), new $Int64(1419738251, 1468209306), new $Int64(403198876, 100794388), new $Int64(956062190, 2991674471), new $Int64(1938816907, 2224662036), new $Int64(1973824487, 977097250), new $Int64(1351320195, 726419512), new $Int64(1964023751, 1747974366), new $Int64(1394388465, 1556430604), new $Int64(1097991433, 1080776742), new $Int64(1761636690, 280794874), new $Int64(117767733, 919835643), new $Int64(1180474222, 3434019658), new $Int64(196069168, 2461941785), new $Int64(133215641, 3615001066), new $Int64(417204809, 3103414427), new $Int64(790056561, 3380809712), new $Int64(879802240, 2724693469), new $Int64(547796833, 598827710), new $Int64(300924196, 3452273442), new $Int64(2071705424, 649274915), new $Int64(1346182319, 2585724112), new $Int64(636549385, 3165579553), new $Int64(1185578221, 2635894283), new $Int64(2094573470, 2053289721), new $Int64(985976581, 3169337108), new $Int64(1170569632, 144717764), new $Int64(1079216270, 1383666384), new $Int64(2022678706, 681540375), new $Int64(1375448925, 537050586), new $Int64(182715304, 315246468), new $Int64(226402871, 849323088), new $Int64(1262421183, 45543944), new $Int64(1201038398, 2319052083), new $Int64(2106775454, 3613090841), new $Int64(560472520, 2992171180), new $Int64(1765620479, 2068244785), new $Int64(917538188, 4239862634), new $Int64(777927839, 3892253031), new $Int64(720683925, 958186149), new $Int64(1724185863, 1877702262), new $Int64(1357886971, 837674867), new $Int64(1837048883, 1507589294), new $Int64(1905518400, 873336795), new $Int64(267722611, 2764496274), new $Int64(341003118, 4196182374), new $Int64(1080717893, 550964545), new $Int64(818747069, 420611474), new $Int64(222653272, 204265180), new $Int64(1549974541, 1787046383), new $Int64(1215581865, 3102292318), new $Int64(418321538, 1552199393), new $Int64(1243493047, 980542004), new $Int64(267284263, 3293718720), new $Int64(1179528763, 3771917473), new $Int64(599484404, 2195808264), new $Int64(252818753, 3894702887), new $Int64(780007692, 2099949527), new $Int64(1424094358, 338442522), new $Int64(490737398, 637158004), new $Int64(419862118, 281976339), new $Int64(574970164, 3619802330), new $Int64(1715552825, 3084554784), new $Int64(882872465, 4129772886), new $Int64(43084605, 1680378557), new $Int64(525521057, 3339087776), new $Int64(1680500332, 4220317857), new $Int64(211654685, 2959322499), new $Int64(1675600481, 1488354890), new $Int64(1312620086, 3958162143), new $Int64(920972075, 2773705983), new $Int64(1876039582, 225908689), new $Int64(963748535, 908216283), new $Int64(1541787429, 3574646075), new $Int64(319760557, 1936937569), new $Int64(1519770881, 75492235), new $Int64(816689472, 1935193178), new $Int64(2142521206, 2018250883), new $Int64(455141620, 3943126022), new $Int64(1546084160, 3066544345), new $Int64(1932392669, 2793082663), new $Int64(908474287, 3297036421), new $Int64(1640597065, 2206987825), new $Int64(1594236910, 807894872), new $Int64(366158341, 766252117), new $Int64(2060649606, 3833114345), new $Int64(845619743, 1255067973), new $Int64(1201145605, 741697208), new $Int64(671241040, 2810093753), new $Int64(1109032642, 4229340371), new $Int64(1462188720, 1361684224), new $Int64(988084219, 1906263026), new $Int64(475781207, 3904421704), new $Int64(1523946520, 1769075545), new $Int64(1062308525, 2621599764), new $Int64(1279509432, 3431891480), new $Int64(404732502, 1871896503), new $Int64(128756421, 1412808876), new $Int64(1605404688, 952876175), new $Int64(1917039957, 1824438899), new $Int64(1662295856, 1005035476), new $Int64(1990909507, 527508597), new $Int64(1288873303, 3066806859), new $Int64(565995893, 3244940914), new $Int64(1257737460, 209092916), new $Int64(1899814242, 1242699167), new $Int64(1433653252, 456723774), new $Int64(1776978905, 1001252870), new $Int64(1468772157, 2026725874), new $Int64(857254202, 2137562569), new $Int64(765939740, 3183366709), new $Int64(1533887628, 2612072960), new $Int64(56977098, 1727148468), new $Int64(949899753, 3803658212), new $Int64(1883670356, 479946959), new $Int64(685713571, 1562982345), new $Int64(201241205, 1766109365), new $Int64(700596547, 3257093788), new $Int64(1962768719, 2365720207), new $Int64(93384808, 3742754173), new $Int64(1689098413, 2878193673), new $Int64(1096135042, 2174002182), new $Int64(1313222695, 3573511231), new $Int64(1392911121, 1760299077), new $Int64(771856457, 2260779833), new $Int64(1281464374, 1452805722), new $Int64(917811730, 2940011802), new $Int64(1890251082, 1886183802), new $Int64(893897673, 2514369088), new $Int64(1644345561, 3924317791), new $Int64(172616216, 500935732), new $Int64(1403501753, 676580929), new $Int64(581571365, 1184984890), new $Int64(1455515235, 1271474274), new $Int64(318728910, 3163791473), new $Int64(2051027584, 2842487377), new $Int64(1511537551, 2170968612), new $Int64(573262976, 3535856740), new $Int64(94256461, 1488599718), new $Int64(966951817, 3408913763), new $Int64(60951736, 2501050084), new $Int64(1272353200, 1639124157), new $Int64(138001144, 4088176393), new $Int64(1574896563, 3989947576), new $Int64(1982239940, 3414355209), new $Int64(1355154361, 2275136352), new $Int64(89709303, 2151835223), new $Int64(1216338715, 1654534827), new $Int64(1467562197, 377892833), new $Int64(1664767638, 660204544), new $Int64(85706799, 390828249), new $Int64(725310955, 3402783878), new $Int64(678849488, 3717936603), new $Int64(1113532086, 2211058823), new $Int64(1564224320, 2692150867), new $Int64(1952770442, 1928910388), new $Int64(788716862, 3931011137), new $Int64(1083670504, 1112701047), new $Int64(2079333076, 2452299106), new $Int64(1251318826, 2337204777), new $Int64(1774877857, 273889282), new $Int64(1798719843, 1462008793), new $Int64(2138834788, 1554494002), new $Int64(952516517, 182675323), new $Int64(548928884, 1882802136), new $Int64(589279648, 3700220025), new $Int64(381039426, 3083431543), new $Int64(1295624457, 3622207527), new $Int64(338126939, 432729309), new $Int64(480013522, 2391914317), new $Int64(297925497, 235747924), new $Int64(2120733629, 3088823825), new $Int64(1402403853, 2314658321), new $Int64(1165929723, 2957634338), new $Int64(501323675, 4117056981), new $Int64(1564699815, 1482500298), new $Int64(1406657158, 840489337), new $Int64(799522364, 3483178565), new $Int64(532129761, 2074004656), new $Int64(724246478, 3643392642), new $Int64(1482330167, 1583624461), new $Int64(1261660694, 287473085), new $Int64(1667835381, 3136843981), new $Int64(1138806821, 1266970974), new $Int64(135185781, 1998688839), new $Int64(392094735, 1492900209), new $Int64(1031326774, 1538112737), new $Int64(76914806, 2207265429), new $Int64(260686035, 963263315), new $Int64(1671145500, 2295892134), new $Int64(1068469660, 2002560897), new $Int64(1791233343, 1369254035), new $Int64(33436120, 3353312708), new $Int64(57507843, 947771099), new $Int64(201728503, 1747061399), new $Int64(1507240140, 2047354631), new $Int64(720000810, 4165367136), new $Int64(479265078, 3388864963), new $Int64(1195302398, 286492130), new $Int64(2045622690, 2795735007), new $Int64(1431753082, 3703961339), new $Int64(1999047161, 1797825479), new $Int64(1429039600, 1116589674), new $Int64(482063550, 2593309206), new $Int64(1329049334, 3404995677), new $Int64(1396904208, 3453462936), new $Int64(1014767077, 3016498634), new $Int64(75698599, 1650371545), new $Int64(1592007860, 212344364), new $Int64(1127766888, 3843932156), new $Int64(1399463792, 3573129983), new $Int64(1256901817, 665897820), new $Int64(1071492673, 1675628772), new $Int64(243225682, 2831752928), new $Int64(2120298836, 1486294219), new $Int64(193076235, 268782709), new $Int64(1145360145, 4186179080), new $Int64(624342951, 1613720397), new $Int64(857179861, 2703686015), new $Int64(1235864944, 2205342611), new $Int64(1474779655, 1411666394), new $Int64(619028749, 677744900), new $Int64(270855115, 4172867247), new $Int64(135494707, 2163418403), new $Int64(849547544, 2841526879), new $Int64(1029966689, 1082141470), new $Int64(377371856, 4046134367), new $Int64(51415528, 2142943655), new $Int64(1897659315, 3124627521), new $Int64(998228909, 219992939), new $Int64(1068692697, 1756846531), new $Int64(1283749206, 1225118210), new $Int64(1621625642, 1647770243), new $Int64(111523943, 444807907), new $Int64(2036369448, 3952076173), new $Int64(53201823, 1461839639), new $Int64(315761893, 3699250910), new $Int64(702974850, 1373688981), new $Int64(734022261, 147523747), new $Int64(100152742, 1211276581), new $Int64(1294440951, 2548832680), new $Int64(1144696256, 1995631888), new $Int64(154500578, 2011457303), new $Int64(796460974, 3057425772), new $Int64(667839456, 81484597), new $Int64(465502760, 3646681560), new $Int64(775020923, 635548515), new $Int64(602489502, 2508044581), new $Int64(353263531, 1014917157), new $Int64(719992433, 3214891315), new $Int64(852684611, 959582252), new $Int64(226415134, 3347040449), new $Int64(1784615552, 4102971975), new $Int64(397887437, 4078022210), new $Int64(1610679822, 2851767182), new $Int64(749162636, 1540160644), new $Int64(598384772, 1057290595), new $Int64(2034890660, 3907769253), new $Int64(579300318, 4248952684), new $Int64(1092907599, 132554364), new $Int64(1061621234, 1029351092), new $Int64(697840928, 2583007416), new $Int64(298619124, 1486185789), new $Int64(55905697, 2871589073), new $Int64(2017643612, 723203291), new $Int64(146250550, 2494333952), new $Int64(1064490251, 2230939180), new $Int64(342915576, 3943232912), new $Int64(1768732449, 2181367922), new $Int64(1418222537, 2889274791), new $Int64(1824032949, 2046728161), new $Int64(1653899792, 1376052477), new $Int64(1022327048, 381236993), new $Int64(1034385958, 3188942166), new $Int64(2073003539, 350070824), new $Int64(144881592, 61758415), new $Int64(1405659422, 3492950336), new $Int64(117440928, 3093818430), new $Int64(1693893113, 2962480613), new $Int64(235432940, 3154871160), new $Int64(511005079, 3228564679), new $Int64(610731502, 888276216), new $Int64(1200780674, 3574998604), new $Int64(870415268, 1967526716), new $Int64(591335707, 1554691298), new $Int64(574459414, 339944798), new $Int64(1223764147, 1154515356), new $Int64(1825645307, 967516237), new $Int64(1546195135, 596588202), new $Int64(279882768, 3764362170), new $Int64(492091056, 266611402), new $Int64(1754227768, 2047856075), new $Int64(1146757215, 21444105), new $Int64(1198058894, 3065563181), new $Int64(1915064845, 1140663212), new $Int64(633187674, 2323741028), new $Int64(2126290159, 3103873707), new $Int64(1008658319, 2766828349), new $Int64(1661896145, 1970872996), new $Int64(1628585413, 3766615585), new $Int64(1552335120, 2036813414), new $Int64(152606527, 3105536507), new $Int64(13954645, 3396176938), new $Int64(1426081645, 1377154485), new $Int64(2085644467, 3807014186), new $Int64(543009040, 3710110597), new $Int64(396058129, 916420443), new $Int64(734556788, 2103831255), new $Int64(381322154, 717331943), new $Int64(572884752, 3550505941), new $Int64(45939673, 378749927), new $Int64(149867929, 611017331), new $Int64(592130075, 758907650), new $Int64(1012992349, 154266815), new $Int64(1107028706, 1407468696), new $Int64(469292398, 970098704), new $Int64(1862426162, 1971660656), new $Int64(998365243, 3332747885), new $Int64(1947089649, 1935189867), new $Int64(1510248801, 203520055), new $Int64(842317902, 3916463034), new $Int64(1758884993, 3474113316), new $Int64(1036101639, 316544223), new $Int64(373738757, 1650844677), new $Int64(1240292229, 4267565603), new $Int64(1077208624, 2501167616), new $Int64(626831785, 3929401789), new $Int64(56122796, 337170252), new $Int64(1186981558, 2061966842), new $Int64(1843292800, 2508461464), new $Int64(206012532, 2791377107), new $Int64(1240791848, 1227227588), new $Int64(1813978778, 1709681848), new $Int64(1153692192, 3768820575), new $Int64(1145186199, 2887126398), new $Int64(700372314, 296561685), new $Int64(700300844, 3729960077), new $Int64(575172304, 372833036), new $Int64(2078875613, 2409779288), new $Int64(1829161290, 555274064), new $Int64(1041887929, 4239804901), new $Int64(1839403216, 3723486978), new $Int64(498390553, 2145871984), new $Int64(564717933, 3565480803), new $Int64(578829821, 2197313814), new $Int64(974785092, 3613674566), new $Int64(438638731, 3042093666), new $Int64(2050927384, 3324034321), new $Int64(869420878, 3708873369), new $Int64(946682149, 1698090092), new $Int64(1618900382, 4213940712), new $Int64(304003901, 2087477361), new $Int64(381315848, 2407950639), new $Int64(851258090, 3942568569), new $Int64(923583198, 4088074412), new $Int64(723260036, 2964773675), new $Int64(1473561819, 1539178386), new $Int64(1062961552, 2694849566), new $Int64(460977733, 2120273838), new $Int64(542912908, 2484608657), new $Int64(880846449, 2956190677), new $Int64(1970902366, 4223313749), new $Int64(662161910, 3502682327), new $Int64(705634754, 4133891139), new $Int64(1116124348, 1166449596), new $Int64(1038247601, 3362705993), new $Int64(93734798, 3892921029), new $Int64(1876124043, 786869787), new $Int64(1057490746, 1046342263), new $Int64(242763728, 493777327), new $Int64(1293910447, 3304827646), new $Int64(616460742, 125356352), new $Int64(499300063, 74094113), new $Int64(1351896723, 2500816079), new $Int64(1657235204, 514015239), new $Int64(1377565129, 543520454), new $Int64(107706923, 3614531153), new $Int64(2056746300, 2356753985), new $Int64(1390062617, 2018141668), new $Int64(131272971, 2087974891), new $Int64(644556607, 3166972343), new $Int64(372256200, 1517638666), new $Int64(1212207984, 173466846), new $Int64(1451709187, 4241513471), new $Int64(733932806, 2783126920), new $Int64(1972004134, 4167264826), new $Int64(29260506, 3907395640), new $Int64(1236582087, 1539634186), new $Int64(1551526350, 178241987), new $Int64(2034206012, 182168164), new $Int64(1044953189, 2386154934), new $Int64(1379126408, 4077374341), new $Int64(32803926, 1732699140), new $Int64(1726425903, 1041306002), new $Int64(1860414813, 2068001749), new $Int64(1005320202, 3208962910), new $Int64(844054010, 697710380), new $Int64(638124245, 2228431183), new $Int64(1337169671, 3554678728), new $Int64(1396494601, 173470263), new $Int64(2061597383, 3848297795), new $Int64(1220546671, 246236185), new $Int64(163293187, 2066374846), new $Int64(1771673660, 312890749), new $Int64(703378057, 3573310289), new $Int64(1548631747, 143166754), new $Int64(613554316, 2081511079), new $Int64(1197802104, 486038032), new $Int64(240999859, 2982218564), new $Int64(364901986, 1000939191), new $Int64(1902782651, 2750454885), new $Int64(1475638791, 3375313137), new $Int64(503615608, 881302957), new $Int64(638698903, 2514186393), new $Int64(443860803, 360024739), new $Int64(1399671872, 292500025), new $Int64(1381210821, 2276300752), new $Int64(521803381, 4069087683), new $Int64(208500981, 1637778212), new $Int64(720490469, 1676670893), new $Int64(1067262482, 3855174429), new $Int64(2114075974, 2067248671), new $Int64(2058057389, 2884561259), new $Int64(1341742553, 2456511185), new $Int64(983726246, 561175414), new $Int64(427994085, 432588903), new $Int64(885133709, 4059399550), new $Int64(2054387382, 1075014784), new $Int64(413651020, 2728058415), new $Int64(1839142064, 1299703678), new $Int64(1262333188, 2347583393), new $Int64(1285481956, 2468164145), new $Int64(989129637, 1140014346), new $Int64(2033889184, 1936972070), new $Int64(409904655, 3870530098), new $Int64(1662989391, 1717789158), new $Int64(1914486492, 1153452491), new $Int64(1157059232, 3948827651), new $Int64(790338018, 2101413152), new $Int64(1495744672, 3854091229), new $Int64(83644069, 4215565463), new $Int64(762206335, 1202710438), new $Int64(1582574611, 2072216740), new $Int64(705690639, 2066751068), new $Int64(33900336, 173902580), new $Int64(1405499842, 142459001), new $Int64(172391592, 1889151926), new $Int64(1648540523, 3034199774), new $Int64(1618587731, 516490102), new $Int64(93114264, 3692577783), new $Int64(68662295, 2953948865), new $Int64(1826544975, 4041040923), new $Int64(204965672, 592046130), new $Int64(1441840008, 384297211), new $Int64(95834184, 265863924), new $Int64(2101717619, 1333136237), new $Int64(1499611781, 1406273556), new $Int64(1074670496, 426305476), new $Int64(125704633, 2750898176), new $Int64(488068495, 1633944332), new $Int64(2037723464, 3236349343), new $Int64(444060402, 4013676611), new $Int64(1718532237, 2265047407), new $Int64(1433593806, 875071080), new $Int64(1804436145, 1418843655), new $Int64(2009228711, 451657300), new $Int64(1229446621, 1866374663), new $Int64(1653472867, 1551455622), new $Int64(577191481, 3560962459), new $Int64(1669204077, 3347903778), new $Int64(1849156454, 2675874918), new $Int64(316128071, 2762991672), new $Int64(530492383, 3689068477), new $Int64(844089962, 4071997905), new $Int64(1508155730, 1381702441), new $Int64(2089931018, 2373284878), new $Int64(1283216186, 2143983064), new $Int64(308739063, 1938207195), new $Int64(1754949306, 1188152253), new $Int64(1272345009, 615870490), new $Int64(742653194, 2662252621), new $Int64(1477718295, 3839976789), new $Int64(56149435, 306752547), new $Int64(720795581, 2162363077), new $Int64(2090431015, 2767224719), new $Int64(675859549, 2628837712), new $Int64(1678405918, 2967771969), new $Int64(1694285728, 499792248), new $Int64(403352367, 4285253508), new $Int64(962357072, 2856511070), new $Int64(679471692, 2526409716), new $Int64(353777175, 1240875658), new $Int64(1232590226, 2577342868), new $Int64(1146185433, 4136853496), new $Int64(670368674, 2403540137), new $Int64(1372824515, 1371410668), new $Int64(1970921600, 371758825), new $Int64(1706420536, 1528834084), new $Int64(2075795018, 1504757260), new $Int64(685663576, 699052551), new $Int64(1641940109, 3347789870), new $Int64(1951619734, 3430604759), new $Int64(2119672219, 1935601723), new $Int64(966789690, 834676166)]);
  41222. globalRand = New(new lockedSource.ptr(new nosync.Mutex.ptr(), NewSource(new $Int64(0, 1))));
  41223. /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
  41224. };
  41225. $pkg.$init = $init;
  41226. return $pkg;
  41227. })();
  41228. $packages["math/big"] = (function() {
  41229. var $pkg = {}, $init, binary, errors, fmt, nosync, io, math, rand, strings, Word, Int, nat, divisor, arrayType, structType, sliceType, sliceType$1, ptrType, sliceType$2, ptrType$1, sliceType$3, arrayType$1, ptrType$2, ptrType$4, intOne, natOne, natTwo, karatsubaThreshold, leafSize, cacheBase10, deBruijn32Lookup, deBruijn64Lookup, mulWW, divWW, addVV, subVV, addVW, subVW, shlVU, shrVU, mulAddVWW, addMulVVW, divWVW, bitLen, addWW_g, subWW_g, mulWW_g, mulAddWWW_g, bitLen_g, leadingZeros, divWW_g, addVV_g, subVV_g, addVW_g, subVW_g, shlVU_g, shrVU_g, mulAddVWW_g, addMulVVW_g, divWVW_g, NewInt, charset, writeMultiple, low64, basicMul, karatsubaAdd, karatsubaSub, karatsuba, alias, addAt, max, karatsubaLen, hexValue, divisors, trailingZeroBits, greaterThan;
  41230. binary = $packages["encoding/binary"];
  41231. errors = $packages["errors"];
  41232. fmt = $packages["fmt"];
  41233. nosync = $packages["github.com/gopherjs/gopherjs/nosync"];
  41234. io = $packages["io"];
  41235. math = $packages["math"];
  41236. rand = $packages["math/rand"];
  41237. strings = $packages["strings"];
  41238. Word = $pkg.Word = $newType(4, $kindUintptr, "big.Word", "Word", "math/big", null);
  41239. Int = $pkg.Int = $newType(0, $kindStruct, "big.Int", "Int", "math/big", function(neg_, abs_) {
  41240. this.$val = this;
  41241. if (arguments.length === 0) {
  41242. this.neg = false;
  41243. this.abs = nat.nil;
  41244. return;
  41245. }
  41246. this.neg = neg_;
  41247. this.abs = abs_;
  41248. });
  41249. nat = $pkg.nat = $newType(12, $kindSlice, "big.nat", "nat", "math/big", null);
  41250. divisor = $pkg.divisor = $newType(0, $kindStruct, "big.divisor", "divisor", "math/big", function(bbb_, nbits_, ndigits_) {
  41251. this.$val = this;
  41252. if (arguments.length === 0) {
  41253. this.bbb = nat.nil;
  41254. this.nbits = 0;
  41255. this.ndigits = 0;
  41256. return;
  41257. }
  41258. this.bbb = bbb_;
  41259. this.nbits = nbits_;
  41260. this.ndigits = ndigits_;
  41261. });
  41262. arrayType = $arrayType(divisor, 64);
  41263. structType = $structType([{prop: "Mutex", name: "", pkg: "", typ: nosync.Mutex, tag: ""}, {prop: "table", name: "table", pkg: "math/big", typ: arrayType, tag: ""}]);
  41264. sliceType = $sliceType($Uint8);
  41265. sliceType$1 = $sliceType(Word);
  41266. ptrType = $ptrType(Int);
  41267. sliceType$2 = $sliceType($emptyInterface);
  41268. ptrType$1 = $ptrType(Word);
  41269. sliceType$3 = $sliceType(divisor);
  41270. arrayType$1 = $arrayType(nat, 16);
  41271. ptrType$2 = $ptrType(nat);
  41272. ptrType$4 = $ptrType(rand.Rand);
  41273. mulWW = function(x, y) {
  41274. var $ptr, _tuple, x, y, z0, z1;
  41275. z1 = 0;
  41276. z0 = 0;
  41277. _tuple = mulWW_g(x, y); z1 = _tuple[0]; z0 = _tuple[1];
  41278. return [z1, z0];
  41279. };
  41280. divWW = function(x1, x0, y) {
  41281. var $ptr, _tuple, q, r, x0, x1, y;
  41282. q = 0;
  41283. r = 0;
  41284. _tuple = divWW_g(x1, x0, y); q = _tuple[0]; r = _tuple[1];
  41285. return [q, r];
  41286. };
  41287. addVV = function(z, x, y) {
  41288. var $ptr, c, x, y, z;
  41289. c = 0;
  41290. c = addVV_g(z, x, y);
  41291. return c;
  41292. };
  41293. subVV = function(z, x, y) {
  41294. var $ptr, c, x, y, z;
  41295. c = 0;
  41296. c = subVV_g(z, x, y);
  41297. return c;
  41298. };
  41299. addVW = function(z, x, y) {
  41300. var $ptr, c, x, y, z;
  41301. c = 0;
  41302. c = addVW_g(z, x, y);
  41303. return c;
  41304. };
  41305. subVW = function(z, x, y) {
  41306. var $ptr, c, x, y, z;
  41307. c = 0;
  41308. c = subVW_g(z, x, y);
  41309. return c;
  41310. };
  41311. shlVU = function(z, x, s) {
  41312. var $ptr, c, s, x, z;
  41313. c = 0;
  41314. c = shlVU_g(z, x, s);
  41315. return c;
  41316. };
  41317. shrVU = function(z, x, s) {
  41318. var $ptr, c, s, x, z;
  41319. c = 0;
  41320. c = shrVU_g(z, x, s);
  41321. return c;
  41322. };
  41323. mulAddVWW = function(z, x, y, r) {
  41324. var $ptr, c, r, x, y, z;
  41325. c = 0;
  41326. c = mulAddVWW_g(z, x, y, r);
  41327. return c;
  41328. };
  41329. addMulVVW = function(z, x, y) {
  41330. var $ptr, c, x, y, z;
  41331. c = 0;
  41332. c = addMulVVW_g(z, x, y);
  41333. return c;
  41334. };
  41335. divWVW = function(z, xn, x, y) {
  41336. var $ptr, r, x, xn, y, z;
  41337. r = 0;
  41338. r = divWVW_g(z, xn, x, y);
  41339. return r;
  41340. };
  41341. bitLen = function(x) {
  41342. var $ptr, n, x;
  41343. n = 0;
  41344. n = bitLen_g(x);
  41345. return n;
  41346. };
  41347. addWW_g = function(x, y, c) {
  41348. var $ptr, c, x, y, yc, z0, z1;
  41349. z1 = 0;
  41350. z0 = 0;
  41351. yc = y + c >>> 0;
  41352. z0 = x + yc >>> 0;
  41353. if (z0 < x || yc < y) {
  41354. z1 = 1;
  41355. }
  41356. return [z1, z0];
  41357. };
  41358. subWW_g = function(x, y, c) {
  41359. var $ptr, c, x, y, yc, z0, z1;
  41360. z1 = 0;
  41361. z0 = 0;
  41362. yc = y + c >>> 0;
  41363. z0 = x - yc >>> 0;
  41364. if (z0 > x || yc < y) {
  41365. z1 = 1;
  41366. }
  41367. return [z1, z0];
  41368. };
  41369. mulWW_g = function(x, y) {
  41370. var $ptr, t, w0, w1, w2, x, x0, x1, y, y0, y1, z0, z1;
  41371. z1 = 0;
  41372. z0 = 0;
  41373. x0 = (x & 65535) >>> 0;
  41374. x1 = x >>> 16 >>> 0;
  41375. y0 = (y & 65535) >>> 0;
  41376. y1 = y >>> 16 >>> 0;
  41377. w0 = (((x0 >>> 16 << 16) * y0 >>> 0) + (x0 << 16 >>> 16) * y0) >>> 0;
  41378. t = ((((x1 >>> 16 << 16) * y0 >>> 0) + (x1 << 16 >>> 16) * y0) >>> 0) + (w0 >>> 16 >>> 0) >>> 0;
  41379. w1 = (t & 65535) >>> 0;
  41380. w2 = t >>> 16 >>> 0;
  41381. w1 = w1 + (((((x0 >>> 16 << 16) * y1 >>> 0) + (x0 << 16 >>> 16) * y1) >>> 0)) >>> 0;
  41382. z1 = (((((x1 >>> 16 << 16) * y1 >>> 0) + (x1 << 16 >>> 16) * y1) >>> 0) + w2 >>> 0) + (w1 >>> 16 >>> 0) >>> 0;
  41383. z0 = (((x >>> 16 << 16) * y >>> 0) + (x << 16 >>> 16) * y) >>> 0;
  41384. return [z1, z0];
  41385. };
  41386. mulAddWWW_g = function(x, y, c) {
  41387. var $ptr, _tuple, c, x, y, z0, z1, zz0;
  41388. z1 = 0;
  41389. z0 = 0;
  41390. _tuple = mulWW(x, y); z1 = _tuple[0]; zz0 = _tuple[1];
  41391. z0 = zz0 + c >>> 0;
  41392. if (z0 < zz0) {
  41393. z1 = z1 + (1) >>> 0;
  41394. }
  41395. return [z1, z0];
  41396. };
  41397. bitLen_g = function(x) {
  41398. var $ptr, n, x, y, y$1, y$2, y$3;
  41399. n = 0;
  41400. while (true) {
  41401. if (!(x >= 32768)) { break; }
  41402. n = n + (16) >> 0;
  41403. x = (y = (16), y < 32 ? (x >>> y) : 0) >>> 0;
  41404. }
  41405. if (x >= 128) {
  41406. x = (y$1 = (8), y$1 < 32 ? (x >>> y$1) : 0) >>> 0;
  41407. n = n + (8) >> 0;
  41408. }
  41409. if (x >= 8) {
  41410. x = (y$2 = (4), y$2 < 32 ? (x >>> y$2) : 0) >>> 0;
  41411. n = n + (4) >> 0;
  41412. }
  41413. if (x >= 2) {
  41414. x = (y$3 = (2), y$3 < 32 ? (x >>> y$3) : 0) >>> 0;
  41415. n = n + (2) >> 0;
  41416. }
  41417. if (x >= 1) {
  41418. n = n + (1) >> 0;
  41419. }
  41420. return n;
  41421. };
  41422. leadingZeros = function(x) {
  41423. var $ptr, x;
  41424. return ((32 - bitLen(x) >> 0) >>> 0);
  41425. };
  41426. divWW_g = function(u1, u0, v) {
  41427. var $ptr, _q, _q$1, _tmp, _tmp$1, _tmp$2, _tmp$3, q, q0, q1, r, rhat, s, u0, u1, un0, un1, un10, un21, un32, v, vn0, vn1, y, y$1, y$2, y$3, y$4;
  41428. q = 0;
  41429. r = 0;
  41430. if (u1 >= v) {
  41431. _tmp = 4294967295; _tmp$1 = 4294967295; q = _tmp; r = _tmp$1;
  41432. return [q, r];
  41433. }
  41434. s = leadingZeros(v);
  41435. v = (y = (s), y < 32 ? (v << y) : 0) >>> 0;
  41436. vn1 = v >>> 16 >>> 0;
  41437. vn0 = (v & 65535) >>> 0;
  41438. un32 = (((y$1 = s, y$1 < 32 ? (u1 << y$1) : 0) >>> 0) | ((y$2 = ((32 - s >>> 0)), y$2 < 32 ? (u0 >>> y$2) : 0) >>> 0)) >>> 0;
  41439. un10 = (y$3 = s, y$3 < 32 ? (u0 << y$3) : 0) >>> 0;
  41440. un1 = un10 >>> 16 >>> 0;
  41441. un0 = (un10 & 65535) >>> 0;
  41442. q1 = (_q = un32 / vn1, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >>> 0 : $throwRuntimeError("integer divide by zero"));
  41443. rhat = un32 - ((((q1 >>> 16 << 16) * vn1 >>> 0) + (q1 << 16 >>> 16) * vn1) >>> 0) >>> 0;
  41444. while (true) {
  41445. if (!(q1 >= 65536 || ((((q1 >>> 16 << 16) * vn0 >>> 0) + (q1 << 16 >>> 16) * vn0) >>> 0) > (((((65536 >>> 16 << 16) * rhat >>> 0) + (65536 << 16 >>> 16) * rhat) >>> 0) + un1 >>> 0))) { break; }
  41446. q1 = q1 - (1) >>> 0;
  41447. rhat = rhat + (vn1) >>> 0;
  41448. if (rhat >= 65536) {
  41449. break;
  41450. }
  41451. }
  41452. un21 = (((((un32 >>> 16 << 16) * 65536 >>> 0) + (un32 << 16 >>> 16) * 65536) >>> 0) + un1 >>> 0) - ((((q1 >>> 16 << 16) * v >>> 0) + (q1 << 16 >>> 16) * v) >>> 0) >>> 0;
  41453. q0 = (_q$1 = un21 / vn1, (_q$1 === _q$1 && _q$1 !== 1/0 && _q$1 !== -1/0) ? _q$1 >>> 0 : $throwRuntimeError("integer divide by zero"));
  41454. rhat = un21 - ((((q0 >>> 16 << 16) * vn1 >>> 0) + (q0 << 16 >>> 16) * vn1) >>> 0) >>> 0;
  41455. while (true) {
  41456. if (!(q0 >= 65536 || ((((q0 >>> 16 << 16) * vn0 >>> 0) + (q0 << 16 >>> 16) * vn0) >>> 0) > (((((65536 >>> 16 << 16) * rhat >>> 0) + (65536 << 16 >>> 16) * rhat) >>> 0) + un0 >>> 0))) { break; }
  41457. q0 = q0 - (1) >>> 0;
  41458. rhat = rhat + (vn1) >>> 0;
  41459. if (rhat >= 65536) {
  41460. break;
  41461. }
  41462. }
  41463. _tmp$2 = ((((q1 >>> 16 << 16) * 65536 >>> 0) + (q1 << 16 >>> 16) * 65536) >>> 0) + q0 >>> 0; _tmp$3 = (y$4 = s, y$4 < 32 ? ((((((((un21 >>> 16 << 16) * 65536 >>> 0) + (un21 << 16 >>> 16) * 65536) >>> 0) + un0 >>> 0) - ((((q0 >>> 16 << 16) * v >>> 0) + (q0 << 16 >>> 16) * v) >>> 0) >>> 0)) >>> y$4) : 0) >>> 0; q = _tmp$2; r = _tmp$3;
  41464. return [q, r];
  41465. };
  41466. addVV_g = function(z, x, y) {
  41467. var $ptr, _i, _ref, _tuple, c, i, x, y, z;
  41468. c = 0;
  41469. _ref = z;
  41470. _i = 0;
  41471. while (true) {
  41472. if (!(_i < _ref.$length)) { break; }
  41473. i = _i;
  41474. _tuple = addWW_g(((i < 0 || i >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + i]), ((i < 0 || i >= y.$length) ? $throwRuntimeError("index out of range") : y.$array[y.$offset + i]), c); c = _tuple[0]; ((i < 0 || i >= z.$length) ? $throwRuntimeError("index out of range") : z.$array[z.$offset + i] = _tuple[1]);
  41475. _i++;
  41476. }
  41477. return c;
  41478. };
  41479. subVV_g = function(z, x, y) {
  41480. var $ptr, _i, _ref, _tuple, c, i, x, y, z;
  41481. c = 0;
  41482. _ref = z;
  41483. _i = 0;
  41484. while (true) {
  41485. if (!(_i < _ref.$length)) { break; }
  41486. i = _i;
  41487. _tuple = subWW_g(((i < 0 || i >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + i]), ((i < 0 || i >= y.$length) ? $throwRuntimeError("index out of range") : y.$array[y.$offset + i]), c); c = _tuple[0]; ((i < 0 || i >= z.$length) ? $throwRuntimeError("index out of range") : z.$array[z.$offset + i] = _tuple[1]);
  41488. _i++;
  41489. }
  41490. return c;
  41491. };
  41492. addVW_g = function(z, x, y) {
  41493. var $ptr, _i, _ref, _tuple, c, i, x, y, z;
  41494. c = 0;
  41495. c = y;
  41496. _ref = z;
  41497. _i = 0;
  41498. while (true) {
  41499. if (!(_i < _ref.$length)) { break; }
  41500. i = _i;
  41501. _tuple = addWW_g(((i < 0 || i >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + i]), c, 0); c = _tuple[0]; ((i < 0 || i >= z.$length) ? $throwRuntimeError("index out of range") : z.$array[z.$offset + i] = _tuple[1]);
  41502. _i++;
  41503. }
  41504. return c;
  41505. };
  41506. subVW_g = function(z, x, y) {
  41507. var $ptr, _i, _ref, _tuple, c, i, x, y, z;
  41508. c = 0;
  41509. c = y;
  41510. _ref = z;
  41511. _i = 0;
  41512. while (true) {
  41513. if (!(_i < _ref.$length)) { break; }
  41514. i = _i;
  41515. _tuple = subWW_g(((i < 0 || i >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + i]), c, 0); c = _tuple[0]; ((i < 0 || i >= z.$length) ? $throwRuntimeError("index out of range") : z.$array[z.$offset + i] = _tuple[1]);
  41516. _i++;
  41517. }
  41518. return c;
  41519. };
  41520. shlVU_g = function(z, x, s) {
  41521. var $ptr, c, i, n, nonAsciiName, s, w, w1, x, x$1, x$2, y, y$1, y$2, y$3, z;
  41522. c = 0;
  41523. n = z.$length;
  41524. if (n > 0) {
  41525. nonAsciiName = 32 - s >>> 0;
  41526. w1 = (x$1 = n - 1 >> 0, ((x$1 < 0 || x$1 >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + x$1]));
  41527. c = (y = nonAsciiName, y < 32 ? (w1 >>> y) : 0) >>> 0;
  41528. i = n - 1 >> 0;
  41529. while (true) {
  41530. if (!(i > 0)) { break; }
  41531. w = w1;
  41532. w1 = (x$2 = i - 1 >> 0, ((x$2 < 0 || x$2 >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + x$2]));
  41533. ((i < 0 || i >= z.$length) ? $throwRuntimeError("index out of range") : z.$array[z.$offset + i] = (((y$1 = s, y$1 < 32 ? (w << y$1) : 0) >>> 0) | ((y$2 = nonAsciiName, y$2 < 32 ? (w1 >>> y$2) : 0) >>> 0)) >>> 0);
  41534. i = i - (1) >> 0;
  41535. }
  41536. (0 >= z.$length ? $throwRuntimeError("index out of range") : z.$array[z.$offset + 0] = (y$3 = s, y$3 < 32 ? (w1 << y$3) : 0) >>> 0);
  41537. }
  41538. return c;
  41539. };
  41540. shrVU_g = function(z, x, s) {
  41541. var $ptr, c, i, n, nonAsciiName, s, w, w1, x, x$1, x$2, y, y$1, y$2, y$3, z;
  41542. c = 0;
  41543. n = z.$length;
  41544. if (n > 0) {
  41545. nonAsciiName = 32 - s >>> 0;
  41546. w1 = (0 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 0]);
  41547. c = (y = nonAsciiName, y < 32 ? (w1 << y) : 0) >>> 0;
  41548. i = 0;
  41549. while (true) {
  41550. if (!(i < (n - 1 >> 0))) { break; }
  41551. w = w1;
  41552. w1 = (x$1 = i + 1 >> 0, ((x$1 < 0 || x$1 >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + x$1]));
  41553. ((i < 0 || i >= z.$length) ? $throwRuntimeError("index out of range") : z.$array[z.$offset + i] = (((y$1 = s, y$1 < 32 ? (w >>> y$1) : 0) >>> 0) | ((y$2 = nonAsciiName, y$2 < 32 ? (w1 << y$2) : 0) >>> 0)) >>> 0);
  41554. i = i + (1) >> 0;
  41555. }
  41556. (x$2 = n - 1 >> 0, ((x$2 < 0 || x$2 >= z.$length) ? $throwRuntimeError("index out of range") : z.$array[z.$offset + x$2] = (y$3 = s, y$3 < 32 ? (w1 >>> y$3) : 0) >>> 0));
  41557. }
  41558. return c;
  41559. };
  41560. mulAddVWW_g = function(z, x, y, r) {
  41561. var $ptr, _i, _ref, _tuple, c, i, r, x, y, z;
  41562. c = 0;
  41563. c = r;
  41564. _ref = z;
  41565. _i = 0;
  41566. while (true) {
  41567. if (!(_i < _ref.$length)) { break; }
  41568. i = _i;
  41569. _tuple = mulAddWWW_g(((i < 0 || i >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + i]), y, c); c = _tuple[0]; ((i < 0 || i >= z.$length) ? $throwRuntimeError("index out of range") : z.$array[z.$offset + i] = _tuple[1]);
  41570. _i++;
  41571. }
  41572. return c;
  41573. };
  41574. addMulVVW_g = function(z, x, y) {
  41575. var $ptr, _i, _ref, _tuple, _tuple$1, c, i, x, y, z, z0, z1;
  41576. c = 0;
  41577. _ref = z;
  41578. _i = 0;
  41579. while (true) {
  41580. if (!(_i < _ref.$length)) { break; }
  41581. i = _i;
  41582. _tuple = mulAddWWW_g(((i < 0 || i >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + i]), y, ((i < 0 || i >= z.$length) ? $throwRuntimeError("index out of range") : z.$array[z.$offset + i])); z1 = _tuple[0]; z0 = _tuple[1];
  41583. _tuple$1 = addWW_g(z0, c, 0); c = _tuple$1[0]; ((i < 0 || i >= z.$length) ? $throwRuntimeError("index out of range") : z.$array[z.$offset + i] = _tuple$1[1]);
  41584. c = c + (z1) >>> 0;
  41585. _i++;
  41586. }
  41587. return c;
  41588. };
  41589. divWVW_g = function(z, xn, x, y) {
  41590. var $ptr, _tuple, i, r, x, xn, y, z;
  41591. r = 0;
  41592. r = xn;
  41593. i = z.$length - 1 >> 0;
  41594. while (true) {
  41595. if (!(i >= 0)) { break; }
  41596. _tuple = divWW_g(r, ((i < 0 || i >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + i]), y); ((i < 0 || i >= z.$length) ? $throwRuntimeError("index out of range") : z.$array[z.$offset + i] = _tuple[0]); r = _tuple[1];
  41597. i = i - (1) >> 0;
  41598. }
  41599. return r;
  41600. };
  41601. Int.ptr.prototype.Sign = function() {
  41602. var $ptr, x;
  41603. x = this;
  41604. if (x.abs.$length === 0) {
  41605. return 0;
  41606. }
  41607. if (x.neg) {
  41608. return -1;
  41609. }
  41610. return 1;
  41611. };
  41612. Int.prototype.Sign = function() { return this.$val.Sign(); };
  41613. Int.ptr.prototype.SetInt64 = function(x) {
  41614. var $ptr, neg, x, z;
  41615. z = this;
  41616. neg = false;
  41617. if ((x.$high < 0 || (x.$high === 0 && x.$low < 0))) {
  41618. neg = true;
  41619. x = new $Int64(-x.$high, -x.$low);
  41620. }
  41621. z.abs = z.abs.setUint64(new $Uint64(x.$high, x.$low));
  41622. z.neg = neg;
  41623. return z;
  41624. };
  41625. Int.prototype.SetInt64 = function(x) { return this.$val.SetInt64(x); };
  41626. Int.ptr.prototype.SetUint64 = function(x) {
  41627. var $ptr, x, z;
  41628. z = this;
  41629. z.abs = z.abs.setUint64(x);
  41630. z.neg = false;
  41631. return z;
  41632. };
  41633. Int.prototype.SetUint64 = function(x) { return this.$val.SetUint64(x); };
  41634. NewInt = function(x) {
  41635. var $ptr, x;
  41636. return new Int.ptr().SetInt64(x);
  41637. };
  41638. $pkg.NewInt = NewInt;
  41639. Int.ptr.prototype.Set = function(x) {
  41640. var $ptr, x, z;
  41641. z = this;
  41642. if (!(z === x)) {
  41643. z.abs = z.abs.set(x.abs);
  41644. z.neg = x.neg;
  41645. }
  41646. return z;
  41647. };
  41648. Int.prototype.Set = function(x) { return this.$val.Set(x); };
  41649. Int.ptr.prototype.Bits = function() {
  41650. var $ptr, x, x$1;
  41651. x = this;
  41652. return (x$1 = x.abs, $subslice(new sliceType$1(x$1.$array), x$1.$offset, x$1.$offset + x$1.$length));
  41653. };
  41654. Int.prototype.Bits = function() { return this.$val.Bits(); };
  41655. Int.ptr.prototype.SetBits = function(abs) {
  41656. var $ptr, abs, z;
  41657. z = this;
  41658. z.abs = $subslice(new nat(abs.$array), abs.$offset, abs.$offset + abs.$length).norm();
  41659. z.neg = false;
  41660. return z;
  41661. };
  41662. Int.prototype.SetBits = function(abs) { return this.$val.SetBits(abs); };
  41663. Int.ptr.prototype.Abs = function(x) {
  41664. var $ptr, x, z;
  41665. z = this;
  41666. z.Set(x);
  41667. z.neg = false;
  41668. return z;
  41669. };
  41670. Int.prototype.Abs = function(x) { return this.$val.Abs(x); };
  41671. Int.ptr.prototype.Neg = function(x) {
  41672. var $ptr, x, z;
  41673. z = this;
  41674. z.Set(x);
  41675. z.neg = z.abs.$length > 0 && !z.neg;
  41676. return z;
  41677. };
  41678. Int.prototype.Neg = function(x) { return this.$val.Neg(x); };
  41679. Int.ptr.prototype.Add = function(x, y) {
  41680. var $ptr, neg, x, y, z;
  41681. z = this;
  41682. neg = x.neg;
  41683. if (x.neg === y.neg) {
  41684. z.abs = z.abs.add(x.abs, y.abs);
  41685. } else {
  41686. if (x.abs.cmp(y.abs) >= 0) {
  41687. z.abs = z.abs.sub(x.abs, y.abs);
  41688. } else {
  41689. neg = !neg;
  41690. z.abs = z.abs.sub(y.abs, x.abs);
  41691. }
  41692. }
  41693. z.neg = z.abs.$length > 0 && neg;
  41694. return z;
  41695. };
  41696. Int.prototype.Add = function(x, y) { return this.$val.Add(x, y); };
  41697. Int.ptr.prototype.Sub = function(x, y) {
  41698. var $ptr, neg, x, y, z;
  41699. z = this;
  41700. neg = x.neg;
  41701. if (!(x.neg === y.neg)) {
  41702. z.abs = z.abs.add(x.abs, y.abs);
  41703. } else {
  41704. if (x.abs.cmp(y.abs) >= 0) {
  41705. z.abs = z.abs.sub(x.abs, y.abs);
  41706. } else {
  41707. neg = !neg;
  41708. z.abs = z.abs.sub(y.abs, x.abs);
  41709. }
  41710. }
  41711. z.neg = z.abs.$length > 0 && neg;
  41712. return z;
  41713. };
  41714. Int.prototype.Sub = function(x, y) { return this.$val.Sub(x, y); };
  41715. Int.ptr.prototype.Mul = function(x, y) {
  41716. var $ptr, x, y, z;
  41717. z = this;
  41718. z.abs = z.abs.mul(x.abs, y.abs);
  41719. z.neg = z.abs.$length > 0 && !(x.neg === y.neg);
  41720. return z;
  41721. };
  41722. Int.prototype.Mul = function(x, y) { return this.$val.Mul(x, y); };
  41723. Int.ptr.prototype.MulRange = function(a, b) {
  41724. var $ptr, _tmp, _tmp$1, a, b, neg, x, x$1, z;
  41725. z = this;
  41726. if ((a.$high > b.$high || (a.$high === b.$high && a.$low > b.$low))) {
  41727. return z.SetInt64(new $Int64(0, 1));
  41728. } else if ((a.$high < 0 || (a.$high === 0 && a.$low <= 0)) && (b.$high > 0 || (b.$high === 0 && b.$low >= 0))) {
  41729. return z.SetInt64(new $Int64(0, 0));
  41730. }
  41731. neg = false;
  41732. if ((a.$high < 0 || (a.$high === 0 && a.$low < 0))) {
  41733. neg = (x = (x$1 = new $Int64(b.$high - a.$high, b.$low - a.$low), new $Int64(x$1.$high & 0, (x$1.$low & 1) >>> 0)), (x.$high === 0 && x.$low === 0));
  41734. _tmp = new $Int64(-b.$high, -b.$low); _tmp$1 = new $Int64(-a.$high, -a.$low); a = _tmp; b = _tmp$1;
  41735. }
  41736. z.abs = z.abs.mulRange(new $Uint64(a.$high, a.$low), new $Uint64(b.$high, b.$low));
  41737. z.neg = neg;
  41738. return z;
  41739. };
  41740. Int.prototype.MulRange = function(a, b) { return this.$val.MulRange(a, b); };
  41741. Int.ptr.prototype.Binomial = function(n, k) {
  41742. var $ptr, _tmp, _tmp$1, a, b, k, n, x, z;
  41743. z = this;
  41744. _tmp = $clone(new Int.ptr(), Int); _tmp$1 = $clone(new Int.ptr(), Int); a = $clone(_tmp, Int); b = $clone(_tmp$1, Int);
  41745. a.MulRange((x = new $Int64(n.$high - k.$high, n.$low - k.$low), new $Int64(x.$high + 0, x.$low + 1)), n);
  41746. b.MulRange(new $Int64(0, 1), k);
  41747. return z.Quo(a, b);
  41748. };
  41749. Int.prototype.Binomial = function(n, k) { return this.$val.Binomial(n, k); };
  41750. Int.ptr.prototype.Quo = function(x, y) {
  41751. var $ptr, _tuple, x, y, z;
  41752. z = this;
  41753. _tuple = z.abs.div(nat.nil, x.abs, y.abs); z.abs = _tuple[0];
  41754. z.neg = z.abs.$length > 0 && !(x.neg === y.neg);
  41755. return z;
  41756. };
  41757. Int.prototype.Quo = function(x, y) { return this.$val.Quo(x, y); };
  41758. Int.ptr.prototype.Rem = function(x, y) {
  41759. var $ptr, _tuple, x, y, z;
  41760. z = this;
  41761. _tuple = nat.nil.div(z.abs, x.abs, y.abs); z.abs = _tuple[1];
  41762. z.neg = z.abs.$length > 0 && x.neg;
  41763. return z;
  41764. };
  41765. Int.prototype.Rem = function(x, y) { return this.$val.Rem(x, y); };
  41766. Int.ptr.prototype.QuoRem = function(x, y, r) {
  41767. var $ptr, _tmp, _tmp$1, _tuple, r, x, y, z;
  41768. z = this;
  41769. _tuple = z.abs.div(r.abs, x.abs, y.abs); z.abs = _tuple[0]; r.abs = _tuple[1];
  41770. _tmp = z.abs.$length > 0 && !(x.neg === y.neg); _tmp$1 = r.abs.$length > 0 && x.neg; z.neg = _tmp; r.neg = _tmp$1;
  41771. return [z, r];
  41772. };
  41773. Int.prototype.QuoRem = function(x, y, r) { return this.$val.QuoRem(x, y, r); };
  41774. Int.ptr.prototype.Div = function(x, y) {
  41775. var $ptr, r, x, y, y_neg, z;
  41776. z = this;
  41777. y_neg = y.neg;
  41778. r = $clone(new Int.ptr(), Int);
  41779. z.QuoRem(x, y, r);
  41780. if (r.neg) {
  41781. if (y_neg) {
  41782. z.Add(z, intOne);
  41783. } else {
  41784. z.Sub(z, intOne);
  41785. }
  41786. }
  41787. return z;
  41788. };
  41789. Int.prototype.Div = function(x, y) { return this.$val.Div(x, y); };
  41790. Int.ptr.prototype.Mod = function(x, y) {
  41791. var $ptr, q, x, y, y0, z;
  41792. z = this;
  41793. y0 = y;
  41794. if (z === y || alias(z.abs, y.abs)) {
  41795. y0 = new Int.ptr().Set(y);
  41796. }
  41797. q = $clone(new Int.ptr(), Int);
  41798. q.QuoRem(x, y, z);
  41799. if (z.neg) {
  41800. if (y0.neg) {
  41801. z.Sub(z, y0);
  41802. } else {
  41803. z.Add(z, y0);
  41804. }
  41805. }
  41806. return z;
  41807. };
  41808. Int.prototype.Mod = function(x, y) { return this.$val.Mod(x, y); };
  41809. Int.ptr.prototype.DivMod = function(x, y, m) {
  41810. var $ptr, m, x, y, y0, z;
  41811. z = this;
  41812. y0 = y;
  41813. if (z === y || alias(z.abs, y.abs)) {
  41814. y0 = new Int.ptr().Set(y);
  41815. }
  41816. z.QuoRem(x, y, m);
  41817. if (m.neg) {
  41818. if (y0.neg) {
  41819. z.Add(z, intOne);
  41820. m.Sub(m, y0);
  41821. } else {
  41822. z.Sub(z, intOne);
  41823. m.Add(m, y0);
  41824. }
  41825. }
  41826. return [z, m];
  41827. };
  41828. Int.prototype.DivMod = function(x, y, m) { return this.$val.DivMod(x, y, m); };
  41829. Int.ptr.prototype.Cmp = function(y) {
  41830. var $ptr, r, x, y;
  41831. r = 0;
  41832. x = this;
  41833. if (x.neg === y.neg) {
  41834. r = x.abs.cmp(y.abs);
  41835. if (x.neg) {
  41836. r = -r;
  41837. }
  41838. } else if (x.neg) {
  41839. r = -1;
  41840. } else {
  41841. r = 1;
  41842. }
  41843. return r;
  41844. };
  41845. Int.prototype.Cmp = function(y) { return this.$val.Cmp(y); };
  41846. Int.ptr.prototype.String = function() {
  41847. var $ptr, x;
  41848. x = this;
  41849. if (x === ptrType.nil) {
  41850. return "<nil>";
  41851. } else if (x.neg) {
  41852. return "-" + x.abs.decimalString();
  41853. }
  41854. return x.abs.decimalString();
  41855. };
  41856. Int.prototype.String = function() { return this.$val.String(); };
  41857. charset = function(ch) {
  41858. var $ptr, _ref, ch;
  41859. _ref = ch;
  41860. if (_ref === 98) {
  41861. return "0123456789abcdefghijklmnopqrstuvwxyz".substring(0, 2);
  41862. } else if (_ref === 111) {
  41863. return "0123456789abcdefghijklmnopqrstuvwxyz".substring(0, 8);
  41864. } else if (_ref === 100 || _ref === 115 || _ref === 118) {
  41865. return "0123456789abcdefghijklmnopqrstuvwxyz".substring(0, 10);
  41866. } else if (_ref === 120) {
  41867. return "0123456789abcdefghijklmnopqrstuvwxyz".substring(0, 16);
  41868. } else if (_ref === 88) {
  41869. return "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ".substring(0, 16);
  41870. }
  41871. return "";
  41872. };
  41873. writeMultiple = function(s, text, count) {
  41874. var $ptr, _r, b, count, s, text, $s, $r;
  41875. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; b = $f.b; count = $f.count; s = $f.s; text = $f.text; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  41876. /* */ if (text.length > 0) { $s = 1; continue; }
  41877. /* */ $s = 2; continue;
  41878. /* if (text.length > 0) { */ case 1:
  41879. b = new sliceType($stringToBytes(text));
  41880. /* while (true) { */ case 3:
  41881. /* if (!(count > 0)) { break; } */ if(!(count > 0)) { $s = 4; continue; }
  41882. _r = s.Write(b); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  41883. _r;
  41884. count = count - (1) >> 0;
  41885. /* } */ $s = 3; continue; case 4:
  41886. /* } */ case 2:
  41887. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: writeMultiple }; } $f.$ptr = $ptr; $f._r = _r; $f.b = b; $f.count = count; $f.s = s; $f.text = text; $f.$s = $s; $f.$r = $r; return $f;
  41888. };
  41889. Int.ptr.prototype.Format = function(s, ch) {
  41890. var $ptr, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _ref, _tuple, _tuple$1, ch, cs, d, digits, left, length, precision, precisionSet, prefix, right, s, sign, width, widthSet, x, zeroes, $s, $r;
  41891. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _ref = $f._ref; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; ch = $f.ch; cs = $f.cs; d = $f.d; digits = $f.digits; left = $f.left; length = $f.length; precision = $f.precision; precisionSet = $f.precisionSet; prefix = $f.prefix; right = $f.right; s = $f.s; sign = $f.sign; width = $f.width; widthSet = $f.widthSet; x = $f.x; zeroes = $f.zeroes; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  41892. x = this;
  41893. cs = charset(ch);
  41894. /* */ if (cs === "") { $s = 1; continue; }
  41895. /* */ if (x === ptrType.nil) { $s = 2; continue; }
  41896. /* */ $s = 3; continue;
  41897. /* if (cs === "") { */ case 1:
  41898. _r = fmt.Fprintf(s, "%%!%c(big.Int=%s)", new sliceType$2([new $Int32(ch), new $String(x.String())])); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  41899. _r;
  41900. return;
  41901. $s = 3; continue;
  41902. /* } else if (x === ptrType.nil) { */ case 2:
  41903. _r$1 = fmt.Fprint(s, new sliceType$2([new $String("<nil>")])); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  41904. _r$1;
  41905. return;
  41906. /* } */ case 3:
  41907. sign = "";
  41908. /* */ if (x.neg) { $s = 6; continue; }
  41909. _r$2 = s.Flag(43); /* */ $s = 10; case 10: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  41910. /* */ if (_r$2) { $s = 7; continue; }
  41911. _r$3 = s.Flag(32); /* */ $s = 11; case 11: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  41912. /* */ if (_r$3) { $s = 8; continue; }
  41913. /* */ $s = 9; continue;
  41914. /* if (x.neg) { */ case 6:
  41915. sign = "-";
  41916. $s = 9; continue;
  41917. /* } else if (_r$2) { */ case 7:
  41918. sign = "+";
  41919. $s = 9; continue;
  41920. /* } else if (_r$3) { */ case 8:
  41921. sign = " ";
  41922. /* } */ case 9:
  41923. prefix = "";
  41924. _r$4 = s.Flag(35); /* */ $s = 14; case 14: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
  41925. /* */ if (_r$4) { $s = 12; continue; }
  41926. /* */ $s = 13; continue;
  41927. /* if (_r$4) { */ case 12:
  41928. _ref = ch;
  41929. if (_ref === 111) {
  41930. prefix = "0";
  41931. } else if (_ref === 120) {
  41932. prefix = "0x";
  41933. } else if (_ref === 88) {
  41934. prefix = "0X";
  41935. }
  41936. /* } */ case 13:
  41937. digits = x.abs.string(cs);
  41938. left = 0;
  41939. zeroes = 0;
  41940. right = 0;
  41941. _r$5 = s.Precision(); /* */ $s = 15; case 15: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
  41942. _tuple = _r$5; precision = _tuple[0]; precisionSet = _tuple[1];
  41943. if (precisionSet) {
  41944. if (digits.length < precision) {
  41945. zeroes = precision - digits.length >> 0;
  41946. } else if (digits === "0" && (precision === 0)) {
  41947. return;
  41948. }
  41949. }
  41950. length = ((sign.length + prefix.length >> 0) + zeroes >> 0) + digits.length >> 0;
  41951. _r$6 = s.Width(); /* */ $s = 16; case 16: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
  41952. _tuple$1 = _r$6; width = _tuple$1[0]; widthSet = _tuple$1[1];
  41953. /* */ if (widthSet && length < width) { $s = 17; continue; }
  41954. /* */ $s = 18; continue;
  41955. /* if (widthSet && length < width) { */ case 17:
  41956. d = width - length >> 0;
  41957. _r$7 = s.Flag(45); /* */ $s = 23; case 23: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
  41958. /* */ if (_r$7) { $s = 19; continue; }
  41959. _r$8 = s.Flag(48); /* */ $s = 24; case 24: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
  41960. /* */ if (_r$8 && !precisionSet) { $s = 20; continue; }
  41961. /* */ $s = 21; continue;
  41962. /* if (_r$7) { */ case 19:
  41963. right = d;
  41964. $s = 22; continue;
  41965. /* } else if (_r$8 && !precisionSet) { */ case 20:
  41966. zeroes = d;
  41967. $s = 22; continue;
  41968. /* } else { */ case 21:
  41969. left = d;
  41970. /* } */ case 22:
  41971. /* } */ case 18:
  41972. $r = writeMultiple(s, " ", left); /* */ $s = 25; case 25: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  41973. $r = writeMultiple(s, sign, 1); /* */ $s = 26; case 26: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  41974. $r = writeMultiple(s, prefix, 1); /* */ $s = 27; case 27: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  41975. $r = writeMultiple(s, "0", zeroes); /* */ $s = 28; case 28: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  41976. $r = writeMultiple(s, digits, 1); /* */ $s = 29; case 29: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  41977. $r = writeMultiple(s, " ", right); /* */ $s = 30; case 30: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  41978. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Int.ptr.prototype.Format }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._ref = _ref; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.ch = ch; $f.cs = cs; $f.d = d; $f.digits = digits; $f.left = left; $f.length = length; $f.precision = precision; $f.precisionSet = precisionSet; $f.prefix = prefix; $f.right = right; $f.s = s; $f.sign = sign; $f.width = width; $f.widthSet = widthSet; $f.x = x; $f.zeroes = zeroes; $f.$s = $s; $f.$r = $r; return $f;
  41979. };
  41980. Int.prototype.Format = function(s, ch) { return this.$val.Format(s, ch); };
  41981. Int.ptr.prototype.scan = function(r, base) {
  41982. var $ptr, _r, _r$1, _r$2, _ref, _tuple, _tuple$1, base, ch, err, neg, r, z, $s, $r;
  41983. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _ref = $f._ref; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; base = $f.base; ch = $f.ch; err = $f.err; neg = $f.neg; r = $f.r; z = $f.z; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  41984. z = this;
  41985. _r = r.ReadRune(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  41986. _tuple = _r; ch = _tuple[0]; err = _tuple[2];
  41987. if (!($interfaceIsEqual(err, $ifaceNil))) {
  41988. return [ptrType.nil, 0, err];
  41989. }
  41990. neg = false;
  41991. _ref = ch;
  41992. /* */ if (_ref === 45) { $s = 2; continue; }
  41993. /* */ if (_ref === 43) { $s = 3; continue; }
  41994. /* */ $s = 4; continue;
  41995. /* if (_ref === 45) { */ case 2:
  41996. neg = true;
  41997. $s = 5; continue;
  41998. /* } else if (_ref === 43) { */ case 3:
  41999. $s = 5; continue;
  42000. /* } else { */ case 4:
  42001. _r$1 = r.UnreadRune(); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  42002. _r$1;
  42003. /* } */ case 5:
  42004. _r$2 = z.abs.scan(r, base); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  42005. _tuple$1 = _r$2; z.abs = _tuple$1[0]; base = _tuple$1[1]; err = _tuple$1[2];
  42006. if (!($interfaceIsEqual(err, $ifaceNil))) {
  42007. return [ptrType.nil, base, err];
  42008. }
  42009. z.neg = z.abs.$length > 0 && neg;
  42010. return [z, base, $ifaceNil];
  42011. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Int.ptr.prototype.scan }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._ref = _ref; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.base = base; $f.ch = ch; $f.err = err; $f.neg = neg; $f.r = r; $f.z = z; $f.$s = $s; $f.$r = $r; return $f;
  42012. };
  42013. Int.prototype.scan = function(r, base) { return this.$val.scan(r, base); };
  42014. Int.ptr.prototype.Scan = function(s, ch) {
  42015. var $ptr, _r, _ref, _tuple, base, ch, err, s, z, $s, $r;
  42016. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _ref = $f._ref; _tuple = $f._tuple; base = $f.base; ch = $f.ch; err = $f.err; s = $f.s; z = $f.z; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  42017. z = this;
  42018. $r = s.SkipSpace(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  42019. base = 0;
  42020. _ref = ch;
  42021. if (_ref === 98) {
  42022. base = 2;
  42023. } else if (_ref === 111) {
  42024. base = 8;
  42025. } else if (_ref === 100) {
  42026. base = 10;
  42027. } else if (_ref === 120 || _ref === 88) {
  42028. base = 16;
  42029. } else if (_ref === 115 || _ref === 118) {
  42030. } else {
  42031. return errors.New("Int.Scan: invalid verb");
  42032. }
  42033. _r = z.scan(s, base); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  42034. _tuple = _r; err = _tuple[2];
  42035. return err;
  42036. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Int.ptr.prototype.Scan }; } $f.$ptr = $ptr; $f._r = _r; $f._ref = _ref; $f._tuple = _tuple; $f.base = base; $f.ch = ch; $f.err = err; $f.s = s; $f.z = z; $f.$s = $s; $f.$r = $r; return $f;
  42037. };
  42038. Int.prototype.Scan = function(s, ch) { return this.$val.Scan(s, ch); };
  42039. low64 = function(z) {
  42040. var $ptr, v, x, x$1, x$2, z;
  42041. if (z.$length === 0) {
  42042. return new $Uint64(0, 0);
  42043. }
  42044. v = (x = (0 >= z.$length ? $throwRuntimeError("index out of range") : z.$array[z.$offset + 0]), new $Uint64(0, x.constructor === Number ? x : 1));
  42045. if (true && z.$length > 1) {
  42046. v = (x$1 = $shiftLeft64((x$2 = (1 >= z.$length ? $throwRuntimeError("index out of range") : z.$array[z.$offset + 1]), new $Uint64(0, x$2.constructor === Number ? x$2 : 1)), 32), new $Uint64(v.$high | x$1.$high, (v.$low | x$1.$low) >>> 0));
  42047. }
  42048. return v;
  42049. };
  42050. Int.ptr.prototype.Int64 = function() {
  42051. var $ptr, v, x, x$1;
  42052. x = this;
  42053. v = (x$1 = low64(x.abs), new $Int64(x$1.$high, x$1.$low));
  42054. if (x.neg) {
  42055. v = new $Int64(-v.$high, -v.$low);
  42056. }
  42057. return v;
  42058. };
  42059. Int.prototype.Int64 = function() { return this.$val.Int64(); };
  42060. Int.ptr.prototype.Uint64 = function() {
  42061. var $ptr, x;
  42062. x = this;
  42063. return low64(x.abs);
  42064. };
  42065. Int.prototype.Uint64 = function() { return this.$val.Uint64(); };
  42066. Int.ptr.prototype.SetString = function(s, base) {
  42067. var $ptr, _r, _tuple, _tuple$1, base, err, r, s, z, $s, $r;
  42068. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; base = $f.base; err = $f.err; r = $f.r; s = $f.s; z = $f.z; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  42069. z = this;
  42070. r = strings.NewReader(s);
  42071. _r = z.scan(r, base); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  42072. _tuple = _r; err = _tuple[2];
  42073. if (!($interfaceIsEqual(err, $ifaceNil))) {
  42074. return [ptrType.nil, false];
  42075. }
  42076. _tuple$1 = r.ReadRune(); err = _tuple$1[2];
  42077. if (!($interfaceIsEqual(err, io.EOF))) {
  42078. return [ptrType.nil, false];
  42079. }
  42080. return [z, true];
  42081. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Int.ptr.prototype.SetString }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.base = base; $f.err = err; $f.r = r; $f.s = s; $f.z = z; $f.$s = $s; $f.$r = $r; return $f;
  42082. };
  42083. Int.prototype.SetString = function(s, base) { return this.$val.SetString(s, base); };
  42084. Int.ptr.prototype.SetBytes = function(buf) {
  42085. var $ptr, buf, z;
  42086. z = this;
  42087. z.abs = z.abs.setBytes(buf);
  42088. z.neg = false;
  42089. return z;
  42090. };
  42091. Int.prototype.SetBytes = function(buf) { return this.$val.SetBytes(buf); };
  42092. Int.ptr.prototype.Bytes = function() {
  42093. var $ptr, buf, x;
  42094. x = this;
  42095. buf = $makeSlice(sliceType, (x.abs.$length * 4 >> 0));
  42096. return $subslice(buf, x.abs.bytes(buf));
  42097. };
  42098. Int.prototype.Bytes = function() { return this.$val.Bytes(); };
  42099. Int.ptr.prototype.BitLen = function() {
  42100. var $ptr, x;
  42101. x = this;
  42102. return x.abs.bitLen();
  42103. };
  42104. Int.prototype.BitLen = function() { return this.$val.BitLen(); };
  42105. Int.ptr.prototype.Exp = function(x, y, m) {
  42106. var $ptr, m, mWords, x, y, yWords, z;
  42107. z = this;
  42108. yWords = nat.nil;
  42109. if (!y.neg) {
  42110. yWords = y.abs;
  42111. }
  42112. mWords = nat.nil;
  42113. if (!(m === ptrType.nil)) {
  42114. mWords = m.abs;
  42115. }
  42116. z.abs = z.abs.expNN(x.abs, yWords, mWords);
  42117. z.neg = z.abs.$length > 0 && x.neg && yWords.$length > 0 && ((((0 >= yWords.$length ? $throwRuntimeError("index out of range") : yWords.$array[yWords.$offset + 0]) & 1) >>> 0) === 1);
  42118. if (z.neg && mWords.$length > 0) {
  42119. z.abs = z.abs.sub(mWords, z.abs);
  42120. z.neg = false;
  42121. }
  42122. return z;
  42123. };
  42124. Int.prototype.Exp = function(x, y, m) { return this.$val.Exp(x, y, m); };
  42125. Int.ptr.prototype.GCD = function(x, y, a, b) {
  42126. var $ptr, A, B, X, Y, _tmp, _tmp$1, _tuple, a, b, lastX, lastY, q, r, temp, x, y, z;
  42127. z = this;
  42128. if (a.Sign() <= 0 || b.Sign() <= 0) {
  42129. z.SetInt64(new $Int64(0, 0));
  42130. if (!(x === ptrType.nil)) {
  42131. x.SetInt64(new $Int64(0, 0));
  42132. }
  42133. if (!(y === ptrType.nil)) {
  42134. y.SetInt64(new $Int64(0, 0));
  42135. }
  42136. return z;
  42137. }
  42138. if (x === ptrType.nil && y === ptrType.nil) {
  42139. return z.binaryGCD(a, b);
  42140. }
  42141. A = new Int.ptr().Set(a);
  42142. B = new Int.ptr().Set(b);
  42143. X = new Int.ptr();
  42144. Y = new Int.ptr().SetInt64(new $Int64(0, 1));
  42145. lastX = new Int.ptr().SetInt64(new $Int64(0, 1));
  42146. lastY = new Int.ptr();
  42147. q = new Int.ptr();
  42148. temp = new Int.ptr();
  42149. while (true) {
  42150. if (!(B.abs.$length > 0)) { break; }
  42151. r = new Int.ptr();
  42152. _tuple = q.QuoRem(A, B, r); q = _tuple[0]; r = _tuple[1];
  42153. _tmp = B; _tmp$1 = r; A = _tmp; B = _tmp$1;
  42154. temp.Set(X);
  42155. X.Mul(X, q);
  42156. X.neg = !X.neg;
  42157. X.Add(X, lastX);
  42158. lastX.Set(temp);
  42159. temp.Set(Y);
  42160. Y.Mul(Y, q);
  42161. Y.neg = !Y.neg;
  42162. Y.Add(Y, lastY);
  42163. lastY.Set(temp);
  42164. }
  42165. if (!(x === ptrType.nil)) {
  42166. $copy(x, lastX, Int);
  42167. }
  42168. if (!(y === ptrType.nil)) {
  42169. $copy(y, lastY, Int);
  42170. }
  42171. $copy(z, A, Int);
  42172. return z;
  42173. };
  42174. Int.prototype.GCD = function(x, y, a, b) { return this.$val.GCD(x, y, a, b); };
  42175. Int.ptr.prototype.binaryGCD = function(a, b) {
  42176. var $ptr, _tmp, _tmp$1, _tmp$2, _tmp$3, a, b, k, t, u, v, vk, x, z;
  42177. z = this;
  42178. u = z;
  42179. v = new Int.ptr();
  42180. if (a.abs.$length > b.abs.$length) {
  42181. u.Set(b);
  42182. v.Rem(a, b);
  42183. } else if (a.abs.$length < b.abs.$length) {
  42184. u.Set(a);
  42185. v.Rem(b, a);
  42186. } else {
  42187. u.Set(a);
  42188. v.Set(b);
  42189. }
  42190. if (v.abs.$length === 0) {
  42191. return u;
  42192. }
  42193. k = u.abs.trailingZeroBits();
  42194. vk = v.abs.trailingZeroBits();
  42195. if (vk < k) {
  42196. k = vk;
  42197. }
  42198. u.Rsh(u, k);
  42199. v.Rsh(v, k);
  42200. t = new Int.ptr();
  42201. if (!(((((x = u.abs, (0 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 0])) & 1) >>> 0) === 0))) {
  42202. t.Neg(v);
  42203. } else {
  42204. t.Set(u);
  42205. }
  42206. while (true) {
  42207. if (!(t.abs.$length > 0)) { break; }
  42208. t.Rsh(t, t.abs.trailingZeroBits());
  42209. if (t.neg) {
  42210. _tmp = t; _tmp$1 = v; v = _tmp; t = _tmp$1;
  42211. v.neg = v.abs.$length > 0 && !v.neg;
  42212. } else {
  42213. _tmp$2 = t; _tmp$3 = u; u = _tmp$2; t = _tmp$3;
  42214. }
  42215. t.Sub(u, v);
  42216. }
  42217. return z.Lsh(u, k);
  42218. };
  42219. Int.prototype.binaryGCD = function(a, b) { return this.$val.binaryGCD(a, b); };
  42220. Int.ptr.prototype.ProbablyPrime = function(n) {
  42221. var $ptr, _r, _v, n, x, $s, $r;
  42222. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _v = $f._v; n = $f.n; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  42223. x = this;
  42224. if (!(!x.neg)) { _v = false; $s = 1; continue s; }
  42225. _r = x.abs.probablyPrime(n); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  42226. _v = _r; case 1:
  42227. return _v;
  42228. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Int.ptr.prototype.ProbablyPrime }; } $f.$ptr = $ptr; $f._r = _r; $f._v = _v; $f.n = n; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
  42229. };
  42230. Int.prototype.ProbablyPrime = function(n) { return this.$val.ProbablyPrime(n); };
  42231. Int.ptr.prototype.Rand = function(rnd, n) {
  42232. var $ptr, _r, n, rnd, z, $s, $r;
  42233. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; n = $f.n; rnd = $f.rnd; z = $f.z; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  42234. z = this;
  42235. z.neg = false;
  42236. if (n.neg === true || (n.abs.$length === 0)) {
  42237. z.abs = nat.nil;
  42238. return z;
  42239. }
  42240. _r = z.abs.random(rnd, n.abs, n.abs.bitLen()); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  42241. z.abs = _r;
  42242. return z;
  42243. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Int.ptr.prototype.Rand }; } $f.$ptr = $ptr; $f._r = _r; $f.n = n; $f.rnd = rnd; $f.z = z; $f.$s = $s; $f.$r = $r; return $f;
  42244. };
  42245. Int.prototype.Rand = function(rnd, n) { return this.$val.Rand(rnd, n); };
  42246. Int.ptr.prototype.ModInverse = function(g, n) {
  42247. var $ptr, d, g, n, z;
  42248. z = this;
  42249. d = $clone(new Int.ptr(), Int);
  42250. d.GCD(z, ptrType.nil, g, n);
  42251. if (z.neg) {
  42252. z.Add(z, n);
  42253. }
  42254. return z;
  42255. };
  42256. Int.prototype.ModInverse = function(g, n) { return this.$val.ModInverse(g, n); };
  42257. Int.ptr.prototype.Lsh = function(x, n) {
  42258. var $ptr, n, x, z;
  42259. z = this;
  42260. z.abs = z.abs.shl(x.abs, n);
  42261. z.neg = x.neg;
  42262. return z;
  42263. };
  42264. Int.prototype.Lsh = function(x, n) { return this.$val.Lsh(x, n); };
  42265. Int.ptr.prototype.Rsh = function(x, n) {
  42266. var $ptr, n, t, x, z;
  42267. z = this;
  42268. if (x.neg) {
  42269. t = z.abs.sub(x.abs, natOne);
  42270. t = t.shr(t, n);
  42271. z.abs = t.add(t, natOne);
  42272. z.neg = true;
  42273. return z;
  42274. }
  42275. z.abs = z.abs.shr(x.abs, n);
  42276. z.neg = false;
  42277. return z;
  42278. };
  42279. Int.prototype.Rsh = function(x, n) { return this.$val.Rsh(x, n); };
  42280. Int.ptr.prototype.Bit = function(i) {
  42281. var $ptr, i, t, x, x$1;
  42282. x = this;
  42283. if (i === 0) {
  42284. if (x.abs.$length > 0) {
  42285. return ((((x$1 = x.abs, (0 >= x$1.$length ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + 0])) & 1) >>> 0) >>> 0);
  42286. }
  42287. return 0;
  42288. }
  42289. if (i < 0) {
  42290. $panic(new $String("negative bit index"));
  42291. }
  42292. if (x.neg) {
  42293. t = nat.nil.sub(x.abs, natOne);
  42294. return (t.bit((i >>> 0)) ^ 1) >>> 0;
  42295. }
  42296. return x.abs.bit((i >>> 0));
  42297. };
  42298. Int.prototype.Bit = function(i) { return this.$val.Bit(i); };
  42299. Int.ptr.prototype.SetBit = function(x, i, b) {
  42300. var $ptr, b, i, t, x, z;
  42301. z = this;
  42302. if (i < 0) {
  42303. $panic(new $String("negative bit index"));
  42304. }
  42305. if (x.neg) {
  42306. t = z.abs.sub(x.abs, natOne);
  42307. t = t.setBit(t, (i >>> 0), (b ^ 1) >>> 0);
  42308. z.abs = t.add(t, natOne);
  42309. z.neg = z.abs.$length > 0;
  42310. return z;
  42311. }
  42312. z.abs = z.abs.setBit(x.abs, (i >>> 0), b);
  42313. z.neg = false;
  42314. return z;
  42315. };
  42316. Int.prototype.SetBit = function(x, i, b) { return this.$val.SetBit(x, i, b); };
  42317. Int.ptr.prototype.And = function(x, y) {
  42318. var $ptr, _tmp, _tmp$1, x, x1, y, y1, y1$1, z;
  42319. z = this;
  42320. if (x.neg === y.neg) {
  42321. if (x.neg) {
  42322. x1 = nat.nil.sub(x.abs, natOne);
  42323. y1 = nat.nil.sub(y.abs, natOne);
  42324. z.abs = z.abs.add(z.abs.or(x1, y1), natOne);
  42325. z.neg = true;
  42326. return z;
  42327. }
  42328. z.abs = z.abs.and(x.abs, y.abs);
  42329. z.neg = false;
  42330. return z;
  42331. }
  42332. if (x.neg) {
  42333. _tmp = y; _tmp$1 = x; x = _tmp; y = _tmp$1;
  42334. }
  42335. y1$1 = nat.nil.sub(y.abs, natOne);
  42336. z.abs = z.abs.andNot(x.abs, y1$1);
  42337. z.neg = false;
  42338. return z;
  42339. };
  42340. Int.prototype.And = function(x, y) { return this.$val.And(x, y); };
  42341. Int.ptr.prototype.AndNot = function(x, y) {
  42342. var $ptr, x, x1, x1$1, y, y1, y1$1, z;
  42343. z = this;
  42344. if (x.neg === y.neg) {
  42345. if (x.neg) {
  42346. x1 = nat.nil.sub(x.abs, natOne);
  42347. y1 = nat.nil.sub(y.abs, natOne);
  42348. z.abs = z.abs.andNot(y1, x1);
  42349. z.neg = false;
  42350. return z;
  42351. }
  42352. z.abs = z.abs.andNot(x.abs, y.abs);
  42353. z.neg = false;
  42354. return z;
  42355. }
  42356. if (x.neg) {
  42357. x1$1 = nat.nil.sub(x.abs, natOne);
  42358. z.abs = z.abs.add(z.abs.or(x1$1, y.abs), natOne);
  42359. z.neg = true;
  42360. return z;
  42361. }
  42362. y1$1 = nat.nil.add(y.abs, natOne);
  42363. z.abs = z.abs.and(x.abs, y1$1);
  42364. z.neg = false;
  42365. return z;
  42366. };
  42367. Int.prototype.AndNot = function(x, y) { return this.$val.AndNot(x, y); };
  42368. Int.ptr.prototype.Or = function(x, y) {
  42369. var $ptr, _tmp, _tmp$1, x, x1, y, y1, y1$1, z;
  42370. z = this;
  42371. if (x.neg === y.neg) {
  42372. if (x.neg) {
  42373. x1 = nat.nil.sub(x.abs, natOne);
  42374. y1 = nat.nil.sub(y.abs, natOne);
  42375. z.abs = z.abs.add(z.abs.and(x1, y1), natOne);
  42376. z.neg = true;
  42377. return z;
  42378. }
  42379. z.abs = z.abs.or(x.abs, y.abs);
  42380. z.neg = false;
  42381. return z;
  42382. }
  42383. if (x.neg) {
  42384. _tmp = y; _tmp$1 = x; x = _tmp; y = _tmp$1;
  42385. }
  42386. y1$1 = nat.nil.sub(y.abs, natOne);
  42387. z.abs = z.abs.add(z.abs.andNot(y1$1, x.abs), natOne);
  42388. z.neg = true;
  42389. return z;
  42390. };
  42391. Int.prototype.Or = function(x, y) { return this.$val.Or(x, y); };
  42392. Int.ptr.prototype.Xor = function(x, y) {
  42393. var $ptr, _tmp, _tmp$1, x, x1, y, y1, y1$1, z;
  42394. z = this;
  42395. if (x.neg === y.neg) {
  42396. if (x.neg) {
  42397. x1 = nat.nil.sub(x.abs, natOne);
  42398. y1 = nat.nil.sub(y.abs, natOne);
  42399. z.abs = z.abs.xor(x1, y1);
  42400. z.neg = false;
  42401. return z;
  42402. }
  42403. z.abs = z.abs.xor(x.abs, y.abs);
  42404. z.neg = false;
  42405. return z;
  42406. }
  42407. if (x.neg) {
  42408. _tmp = y; _tmp$1 = x; x = _tmp; y = _tmp$1;
  42409. }
  42410. y1$1 = nat.nil.sub(y.abs, natOne);
  42411. z.abs = z.abs.add(z.abs.xor(x.abs, y1$1), natOne);
  42412. z.neg = true;
  42413. return z;
  42414. };
  42415. Int.prototype.Xor = function(x, y) { return this.$val.Xor(x, y); };
  42416. Int.ptr.prototype.Not = function(x) {
  42417. var $ptr, x, z;
  42418. z = this;
  42419. if (x.neg) {
  42420. z.abs = z.abs.sub(x.abs, natOne);
  42421. z.neg = false;
  42422. return z;
  42423. }
  42424. z.abs = z.abs.add(x.abs, natOne);
  42425. z.neg = true;
  42426. return z;
  42427. };
  42428. Int.prototype.Not = function(x) { return this.$val.Not(x); };
  42429. Int.ptr.prototype.GobEncode = function() {
  42430. var $ptr, b, buf, i, x;
  42431. x = this;
  42432. if (x === ptrType.nil) {
  42433. return [sliceType.nil, $ifaceNil];
  42434. }
  42435. buf = $makeSlice(sliceType, (1 + (x.abs.$length * 4 >> 0) >> 0));
  42436. i = x.abs.bytes(buf) - 1 >> 0;
  42437. b = 2;
  42438. if (x.neg) {
  42439. b = (b | (1)) >>> 0;
  42440. }
  42441. ((i < 0 || i >= buf.$length) ? $throwRuntimeError("index out of range") : buf.$array[buf.$offset + i] = b);
  42442. return [$subslice(buf, i), $ifaceNil];
  42443. };
  42444. Int.prototype.GobEncode = function() { return this.$val.GobEncode(); };
  42445. Int.ptr.prototype.GobDecode = function(buf) {
  42446. var $ptr, _r, _r$1, b, buf, z, $s, $r;
  42447. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; b = $f.b; buf = $f.buf; z = $f.z; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  42448. z = this;
  42449. if (buf.$length === 0) {
  42450. $copy(z, new Int.ptr(false, nat.nil), Int);
  42451. return $ifaceNil;
  42452. }
  42453. b = (0 >= buf.$length ? $throwRuntimeError("index out of range") : buf.$array[buf.$offset + 0]);
  42454. /* */ if (!(((b >>> 1 << 24 >>> 24) === 1))) { $s = 1; continue; }
  42455. /* */ $s = 2; continue;
  42456. /* if (!(((b >>> 1 << 24 >>> 24) === 1))) { */ case 1:
  42457. _r = fmt.Sprintf("Int.GobDecode: encoding version %d not supported", new sliceType$2([new $Uint8((b >>> 1 << 24 >>> 24))])); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  42458. _r$1 = errors.New(_r); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  42459. return _r$1;
  42460. /* } */ case 2:
  42461. z.neg = !((((b & 1) >>> 0) === 0));
  42462. z.abs = z.abs.setBytes($subslice(buf, 1));
  42463. return $ifaceNil;
  42464. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Int.ptr.prototype.GobDecode }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f.b = b; $f.buf = buf; $f.z = z; $f.$s = $s; $f.$r = $r; return $f;
  42465. };
  42466. Int.prototype.GobDecode = function(buf) { return this.$val.GobDecode(buf); };
  42467. Int.ptr.prototype.MarshalJSON = function() {
  42468. var $ptr, z;
  42469. z = this;
  42470. return [new sliceType($stringToBytes(z.String())), $ifaceNil];
  42471. };
  42472. Int.prototype.MarshalJSON = function() { return this.$val.MarshalJSON(); };
  42473. Int.ptr.prototype.UnmarshalJSON = function(text) {
  42474. var $ptr, _r, _r$1, _tuple, ok, text, z, $s, $r;
  42475. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _tuple = $f._tuple; ok = $f.ok; text = $f.text; z = $f.z; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  42476. z = this;
  42477. _r = z.SetString($bytesToString(text), 0); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  42478. _tuple = _r; ok = _tuple[1];
  42479. /* */ if (!ok) { $s = 2; continue; }
  42480. /* */ $s = 3; continue;
  42481. /* if (!ok) { */ case 2:
  42482. _r$1 = fmt.Errorf("math/big: cannot unmarshal %q into a *big.Int", new sliceType$2([text])); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  42483. return _r$1;
  42484. /* } */ case 3:
  42485. return $ifaceNil;
  42486. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Int.ptr.prototype.UnmarshalJSON }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._tuple = _tuple; $f.ok = ok; $f.text = text; $f.z = z; $f.$s = $s; $f.$r = $r; return $f;
  42487. };
  42488. Int.prototype.UnmarshalJSON = function(text) { return this.$val.UnmarshalJSON(text); };
  42489. Int.ptr.prototype.MarshalText = function() {
  42490. var $ptr, _tmp, _tmp$1, err, text, z;
  42491. text = sliceType.nil;
  42492. err = $ifaceNil;
  42493. z = this;
  42494. _tmp = new sliceType($stringToBytes(z.String())); _tmp$1 = $ifaceNil; text = _tmp; err = _tmp$1;
  42495. return [text, err];
  42496. };
  42497. Int.prototype.MarshalText = function() { return this.$val.MarshalText(); };
  42498. Int.ptr.prototype.UnmarshalText = function(text) {
  42499. var $ptr, _r, _r$1, _tuple, ok, text, z, $s, $r;
  42500. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _tuple = $f._tuple; ok = $f.ok; text = $f.text; z = $f.z; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  42501. z = this;
  42502. _r = z.SetString($bytesToString(text), 0); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  42503. _tuple = _r; ok = _tuple[1];
  42504. /* */ if (!ok) { $s = 2; continue; }
  42505. /* */ $s = 3; continue;
  42506. /* if (!ok) { */ case 2:
  42507. _r$1 = fmt.Errorf("math/big: cannot unmarshal %q into a *big.Int", new sliceType$2([text])); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  42508. return _r$1;
  42509. /* } */ case 3:
  42510. return $ifaceNil;
  42511. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Int.ptr.prototype.UnmarshalText }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._tuple = _tuple; $f.ok = ok; $f.text = text; $f.z = z; $f.$s = $s; $f.$r = $r; return $f;
  42512. };
  42513. Int.prototype.UnmarshalText = function(text) { return this.$val.UnmarshalText(text); };
  42514. nat.prototype.clear = function() {
  42515. var $ptr, _i, _ref, i, z;
  42516. z = this;
  42517. _ref = z;
  42518. _i = 0;
  42519. while (true) {
  42520. if (!(_i < _ref.$length)) { break; }
  42521. i = _i;
  42522. ((i < 0 || i >= z.$length) ? $throwRuntimeError("index out of range") : z.$array[z.$offset + i] = 0);
  42523. _i++;
  42524. }
  42525. };
  42526. $ptrType(nat).prototype.clear = function() { return this.$get().clear(); };
  42527. nat.prototype.norm = function() {
  42528. var $ptr, i, x, z;
  42529. z = this;
  42530. i = z.$length;
  42531. while (true) {
  42532. if (!(i > 0 && ((x = i - 1 >> 0, ((x < 0 || x >= z.$length) ? $throwRuntimeError("index out of range") : z.$array[z.$offset + x])) === 0))) { break; }
  42533. i = i - (1) >> 0;
  42534. }
  42535. return $subslice(z, 0, i);
  42536. };
  42537. $ptrType(nat).prototype.norm = function() { return this.$get().norm(); };
  42538. nat.prototype.make = function(n) {
  42539. var $ptr, n, z;
  42540. z = this;
  42541. if (n <= z.$capacity) {
  42542. return $subslice(z, 0, n);
  42543. }
  42544. return $makeSlice(nat, n, (n + 4 >> 0));
  42545. };
  42546. $ptrType(nat).prototype.make = function(n) { return this.$get().make(n); };
  42547. nat.prototype.setWord = function(x) {
  42548. var $ptr, x, z;
  42549. z = this;
  42550. if (x === 0) {
  42551. return z.make(0);
  42552. }
  42553. z = z.make(1);
  42554. (0 >= z.$length ? $throwRuntimeError("index out of range") : z.$array[z.$offset + 0] = x);
  42555. return z;
  42556. };
  42557. $ptrType(nat).prototype.setWord = function(x) { return this.$get().setWord(x); };
  42558. nat.prototype.setUint64 = function(x) {
  42559. var $ptr, _i, _ref, i, n, t, w, x, x$1, z;
  42560. z = this;
  42561. w = (x.$low >>> 0);
  42562. if ((x$1 = new $Uint64(0, w.constructor === Number ? w : 1), (x$1.$high === x.$high && x$1.$low === x.$low))) {
  42563. return z.setWord(w);
  42564. }
  42565. n = 0;
  42566. t = x;
  42567. while (true) {
  42568. if (!((t.$high > 0 || (t.$high === 0 && t.$low > 0)))) { break; }
  42569. n = n + (1) >> 0;
  42570. t = $shiftRightUint64(t, (32));
  42571. }
  42572. z = z.make(n);
  42573. _ref = z;
  42574. _i = 0;
  42575. while (true) {
  42576. if (!(_i < _ref.$length)) { break; }
  42577. i = _i;
  42578. ((i < 0 || i >= z.$length) ? $throwRuntimeError("index out of range") : z.$array[z.$offset + i] = (new $Uint64(x.$high & 0, (x.$low & 4294967295) >>> 0).$low >>> 0));
  42579. x = $shiftRightUint64(x, (32));
  42580. _i++;
  42581. }
  42582. return z;
  42583. };
  42584. $ptrType(nat).prototype.setUint64 = function(x) { return this.$get().setUint64(x); };
  42585. nat.prototype.set = function(x) {
  42586. var $ptr, x, z;
  42587. z = this;
  42588. z = z.make(x.$length);
  42589. $copySlice(z, x);
  42590. return z;
  42591. };
  42592. $ptrType(nat).prototype.set = function(x) { return this.$get().set(x); };
  42593. nat.prototype.add = function(x, y) {
  42594. var $ptr, c, m, n, x, x$1, x$2, x$3, y, z;
  42595. z = this;
  42596. m = x.$length;
  42597. n = y.$length;
  42598. if (m < n) {
  42599. return z.add(y, x);
  42600. } else if (m === 0) {
  42601. return z.make(0);
  42602. } else if (n === 0) {
  42603. return z.set(x);
  42604. }
  42605. z = z.make(m + 1 >> 0);
  42606. c = addVV((x$1 = $subslice(z, 0, n), $subslice(new sliceType$1(x$1.$array), x$1.$offset, x$1.$offset + x$1.$length)), $subslice(new sliceType$1(x.$array), x.$offset, x.$offset + x.$length), $subslice(new sliceType$1(y.$array), y.$offset, y.$offset + y.$length));
  42607. if (m > n) {
  42608. c = addVW((x$2 = $subslice(z, n, m), $subslice(new sliceType$1(x$2.$array), x$2.$offset, x$2.$offset + x$2.$length)), (x$3 = $subslice(x, n), $subslice(new sliceType$1(x$3.$array), x$3.$offset, x$3.$offset + x$3.$length)), c);
  42609. }
  42610. ((m < 0 || m >= z.$length) ? $throwRuntimeError("index out of range") : z.$array[z.$offset + m] = c);
  42611. return z.norm();
  42612. };
  42613. $ptrType(nat).prototype.add = function(x, y) { return this.$get().add(x, y); };
  42614. nat.prototype.sub = function(x, y) {
  42615. var $ptr, c, m, n, x, x$1, x$2, x$3, y, z;
  42616. z = this;
  42617. m = x.$length;
  42618. n = y.$length;
  42619. if (m < n) {
  42620. $panic(new $String("underflow"));
  42621. } else if (m === 0) {
  42622. return z.make(0);
  42623. } else if (n === 0) {
  42624. return z.set(x);
  42625. }
  42626. z = z.make(m);
  42627. c = subVV((x$1 = $subslice(z, 0, n), $subslice(new sliceType$1(x$1.$array), x$1.$offset, x$1.$offset + x$1.$length)), $subslice(new sliceType$1(x.$array), x.$offset, x.$offset + x.$length), $subslice(new sliceType$1(y.$array), y.$offset, y.$offset + y.$length));
  42628. if (m > n) {
  42629. c = subVW((x$2 = $subslice(z, n), $subslice(new sliceType$1(x$2.$array), x$2.$offset, x$2.$offset + x$2.$length)), (x$3 = $subslice(x, n), $subslice(new sliceType$1(x$3.$array), x$3.$offset, x$3.$offset + x$3.$length)), c);
  42630. }
  42631. if (!((c === 0))) {
  42632. $panic(new $String("underflow"));
  42633. }
  42634. return z.norm();
  42635. };
  42636. $ptrType(nat).prototype.sub = function(x, y) { return this.$get().sub(x, y); };
  42637. nat.prototype.cmp = function(y) {
  42638. var $ptr, i, m, n, r, x, y;
  42639. r = 0;
  42640. x = this;
  42641. m = x.$length;
  42642. n = y.$length;
  42643. if (!((m === n)) || (m === 0)) {
  42644. if (m < n) {
  42645. r = -1;
  42646. } else if (m > n) {
  42647. r = 1;
  42648. }
  42649. return r;
  42650. }
  42651. i = m - 1 >> 0;
  42652. while (true) {
  42653. if (!(i > 0 && (((i < 0 || i >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + i]) === ((i < 0 || i >= y.$length) ? $throwRuntimeError("index out of range") : y.$array[y.$offset + i])))) { break; }
  42654. i = i - (1) >> 0;
  42655. }
  42656. if (((i < 0 || i >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + i]) < ((i < 0 || i >= y.$length) ? $throwRuntimeError("index out of range") : y.$array[y.$offset + i])) {
  42657. r = -1;
  42658. } else if (((i < 0 || i >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + i]) > ((i < 0 || i >= y.$length) ? $throwRuntimeError("index out of range") : y.$array[y.$offset + i])) {
  42659. r = 1;
  42660. }
  42661. return r;
  42662. };
  42663. $ptrType(nat).prototype.cmp = function(y) { return this.$get().cmp(y); };
  42664. nat.prototype.mulAddWW = function(x, y, r) {
  42665. var $ptr, m, r, x, x$1, y, z;
  42666. z = this;
  42667. m = x.$length;
  42668. if ((m === 0) || (y === 0)) {
  42669. return z.setWord(r);
  42670. }
  42671. z = z.make(m + 1 >> 0);
  42672. ((m < 0 || m >= z.$length) ? $throwRuntimeError("index out of range") : z.$array[z.$offset + m] = mulAddVWW((x$1 = $subslice(z, 0, m), $subslice(new sliceType$1(x$1.$array), x$1.$offset, x$1.$offset + x$1.$length)), $subslice(new sliceType$1(x.$array), x.$offset, x.$offset + x.$length), y, r));
  42673. return z.norm();
  42674. };
  42675. $ptrType(nat).prototype.mulAddWW = function(x, y, r) { return this.$get().mulAddWW(x, y, r); };
  42676. basicMul = function(z, x, y) {
  42677. var $ptr, _i, _ref, d, i, x, x$1, x$2, y, z;
  42678. $subslice(z, 0, (x.$length + y.$length >> 0)).clear();
  42679. _ref = y;
  42680. _i = 0;
  42681. while (true) {
  42682. if (!(_i < _ref.$length)) { break; }
  42683. i = _i;
  42684. d = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]);
  42685. if (!((d === 0))) {
  42686. (x$2 = x.$length + i >> 0, ((x$2 < 0 || x$2 >= z.$length) ? $throwRuntimeError("index out of range") : z.$array[z.$offset + x$2] = addMulVVW((x$1 = $subslice(z, i, (i + x.$length >> 0)), $subslice(new sliceType$1(x$1.$array), x$1.$offset, x$1.$offset + x$1.$length)), $subslice(new sliceType$1(x.$array), x.$offset, x.$offset + x.$length), d)));
  42687. }
  42688. _i++;
  42689. }
  42690. };
  42691. karatsubaAdd = function(z, x, n) {
  42692. var $ptr, c, n, x, x$1, x$2, x$3, z;
  42693. c = addVV((x$1 = $subslice(z, 0, n), $subslice(new sliceType$1(x$1.$array), x$1.$offset, x$1.$offset + x$1.$length)), $subslice(new sliceType$1(z.$array), z.$offset, z.$offset + z.$length), $subslice(new sliceType$1(x.$array), x.$offset, x.$offset + x.$length));
  42694. if (!((c === 0))) {
  42695. addVW((x$2 = $subslice(z, n, (n + (n >> 1 >> 0) >> 0)), $subslice(new sliceType$1(x$2.$array), x$2.$offset, x$2.$offset + x$2.$length)), (x$3 = $subslice(z, n), $subslice(new sliceType$1(x$3.$array), x$3.$offset, x$3.$offset + x$3.$length)), c);
  42696. }
  42697. };
  42698. karatsubaSub = function(z, x, n) {
  42699. var $ptr, c, n, x, x$1, x$2, x$3, z;
  42700. c = subVV((x$1 = $subslice(z, 0, n), $subslice(new sliceType$1(x$1.$array), x$1.$offset, x$1.$offset + x$1.$length)), $subslice(new sliceType$1(z.$array), z.$offset, z.$offset + z.$length), $subslice(new sliceType$1(x.$array), x.$offset, x.$offset + x.$length));
  42701. if (!((c === 0))) {
  42702. subVW((x$2 = $subslice(z, n, (n + (n >> 1 >> 0) >> 0)), $subslice(new sliceType$1(x$2.$array), x$2.$offset, x$2.$offset + x$2.$length)), (x$3 = $subslice(z, n), $subslice(new sliceType$1(x$3.$array), x$3.$offset, x$3.$offset + x$3.$length)), c);
  42703. }
  42704. };
  42705. karatsuba = function(z, x, y) {
  42706. var $ptr, _tmp, _tmp$1, _tmp$2, _tmp$3, n, n2, p, r, s, x, x0, x1, xd, y, y0, y1, yd, z;
  42707. n = y.$length;
  42708. if (!(((n & 1) === 0)) || n < karatsubaThreshold || n < 2) {
  42709. basicMul(z, x, y);
  42710. return;
  42711. }
  42712. n2 = n >> 1 >> 0;
  42713. _tmp = $subslice(x, n2); _tmp$1 = $subslice(x, 0, n2); x1 = _tmp; x0 = _tmp$1;
  42714. _tmp$2 = $subslice(y, n2); _tmp$3 = $subslice(y, 0, n2); y1 = _tmp$2; y0 = _tmp$3;
  42715. karatsuba(z, x0, y0);
  42716. karatsuba($subslice(z, n), x1, y1);
  42717. s = 1;
  42718. xd = $subslice(z, (2 * n >> 0), ((2 * n >> 0) + n2 >> 0));
  42719. if (!((subVV($subslice(new sliceType$1(xd.$array), xd.$offset, xd.$offset + xd.$length), $subslice(new sliceType$1(x1.$array), x1.$offset, x1.$offset + x1.$length), $subslice(new sliceType$1(x0.$array), x0.$offset, x0.$offset + x0.$length)) === 0))) {
  42720. s = -s;
  42721. subVV($subslice(new sliceType$1(xd.$array), xd.$offset, xd.$offset + xd.$length), $subslice(new sliceType$1(x0.$array), x0.$offset, x0.$offset + x0.$length), $subslice(new sliceType$1(x1.$array), x1.$offset, x1.$offset + x1.$length));
  42722. }
  42723. yd = $subslice(z, ((2 * n >> 0) + n2 >> 0), (3 * n >> 0));
  42724. if (!((subVV($subslice(new sliceType$1(yd.$array), yd.$offset, yd.$offset + yd.$length), $subslice(new sliceType$1(y0.$array), y0.$offset, y0.$offset + y0.$length), $subslice(new sliceType$1(y1.$array), y1.$offset, y1.$offset + y1.$length)) === 0))) {
  42725. s = -s;
  42726. subVV($subslice(new sliceType$1(yd.$array), yd.$offset, yd.$offset + yd.$length), $subslice(new sliceType$1(y1.$array), y1.$offset, y1.$offset + y1.$length), $subslice(new sliceType$1(y0.$array), y0.$offset, y0.$offset + y0.$length));
  42727. }
  42728. p = $subslice(z, (n * 3 >> 0));
  42729. karatsuba(p, xd, yd);
  42730. r = $subslice(z, (n * 4 >> 0));
  42731. $copySlice(r, $subslice(z, 0, (n * 2 >> 0)));
  42732. karatsubaAdd($subslice(z, n2), r, n);
  42733. karatsubaAdd($subslice(z, n2), $subslice(r, n), n);
  42734. if (s > 0) {
  42735. karatsubaAdd($subslice(z, n2), p, n);
  42736. } else {
  42737. karatsubaSub($subslice(z, n2), p, n);
  42738. }
  42739. };
  42740. alias = function(x, y) {
  42741. var $ptr, x, x$1, x$2, y;
  42742. return x.$capacity > 0 && y.$capacity > 0 && (x$1 = $subslice(x, 0, x.$capacity), $indexPtr(x$1.$array, x$1.$offset + (x.$capacity - 1 >> 0), ptrType$1)) === (x$2 = $subslice(y, 0, y.$capacity), $indexPtr(x$2.$array, x$2.$offset + (y.$capacity - 1 >> 0), ptrType$1));
  42743. };
  42744. addAt = function(z, x, i) {
  42745. var $ptr, c, i, j, n, x, x$1, x$2, x$3, x$4, z;
  42746. n = x.$length;
  42747. if (n > 0) {
  42748. c = addVV((x$1 = $subslice(z, i, (i + n >> 0)), $subslice(new sliceType$1(x$1.$array), x$1.$offset, x$1.$offset + x$1.$length)), (x$2 = $subslice(z, i), $subslice(new sliceType$1(x$2.$array), x$2.$offset, x$2.$offset + x$2.$length)), $subslice(new sliceType$1(x.$array), x.$offset, x.$offset + x.$length));
  42749. if (!((c === 0))) {
  42750. j = i + n >> 0;
  42751. if (j < z.$length) {
  42752. addVW((x$3 = $subslice(z, j), $subslice(new sliceType$1(x$3.$array), x$3.$offset, x$3.$offset + x$3.$length)), (x$4 = $subslice(z, j), $subslice(new sliceType$1(x$4.$array), x$4.$offset, x$4.$offset + x$4.$length)), c);
  42753. }
  42754. }
  42755. }
  42756. };
  42757. max = function(x, y) {
  42758. var $ptr, x, y;
  42759. if (x > y) {
  42760. return x;
  42761. }
  42762. return y;
  42763. };
  42764. karatsubaLen = function(n) {
  42765. var $ptr, i, n, y;
  42766. i = 0;
  42767. while (true) {
  42768. if (!(n > karatsubaThreshold)) { break; }
  42769. n = (n >> $min((1), 31)) >> 0;
  42770. i = i + (1) >>> 0;
  42771. }
  42772. return (y = i, y < 32 ? (n << y) : 0) >> 0;
  42773. };
  42774. nat.prototype.mul = function(x, y) {
  42775. var $ptr, i, k, m, n, t, x, x0, x0$1, xi, y, y0, y0$1, y1, z;
  42776. z = this;
  42777. m = x.$length;
  42778. n = y.$length;
  42779. if (m < n) {
  42780. return z.mul(y, x);
  42781. } else if ((m === 0) || (n === 0)) {
  42782. return z.make(0);
  42783. } else if (n === 1) {
  42784. return z.mulAddWW(x, (0 >= y.$length ? $throwRuntimeError("index out of range") : y.$array[y.$offset + 0]), 0);
  42785. }
  42786. if (alias(z, x) || alias(z, y)) {
  42787. z = nat.nil;
  42788. }
  42789. if (n < karatsubaThreshold) {
  42790. z = z.make(m + n >> 0);
  42791. basicMul(z, x, y);
  42792. return z.norm();
  42793. }
  42794. k = karatsubaLen(n);
  42795. x0 = $subslice(x, 0, k);
  42796. y0 = $subslice(y, 0, k);
  42797. z = z.make(max(6 * k >> 0, m + n >> 0));
  42798. karatsuba(z, x0, y0);
  42799. z = $subslice(z, 0, (m + n >> 0));
  42800. $subslice(z, (2 * k >> 0)).clear();
  42801. if (k < n || !((m === n))) {
  42802. t = nat.nil;
  42803. x0$1 = x0.norm();
  42804. y1 = $subslice(y, k);
  42805. t = t.mul(x0$1, y1);
  42806. addAt(z, t, k);
  42807. y0$1 = y0.norm();
  42808. i = k;
  42809. while (true) {
  42810. if (!(i < x.$length)) { break; }
  42811. xi = $subslice(x, i);
  42812. if (xi.$length > k) {
  42813. xi = $subslice(xi, 0, k);
  42814. }
  42815. xi = xi.norm();
  42816. t = t.mul(xi, y0$1);
  42817. addAt(z, t, i);
  42818. t = t.mul(xi, y1);
  42819. addAt(z, t, i + k >> 0);
  42820. i = i + (k) >> 0;
  42821. }
  42822. }
  42823. return z.norm();
  42824. };
  42825. $ptrType(nat).prototype.mul = function(x, y) { return this.$get().mul(x, y); };
  42826. nat.prototype.mulRange = function(a, b) {
  42827. var $ptr, a, b, m, x, z;
  42828. z = this;
  42829. if ((a.$high === 0 && a.$low === 0)) {
  42830. return z.setUint64(new $Uint64(0, 0));
  42831. } else if ((a.$high > b.$high || (a.$high === b.$high && a.$low > b.$low))) {
  42832. return z.setUint64(new $Uint64(0, 1));
  42833. } else if ((a.$high === b.$high && a.$low === b.$low)) {
  42834. return z.setUint64(a);
  42835. } else if ((x = new $Uint64(a.$high + 0, a.$low + 1), (x.$high === b.$high && x.$low === b.$low))) {
  42836. return z.mul(nat.nil.setUint64(a), nat.nil.setUint64(b));
  42837. }
  42838. m = $div64((new $Uint64(a.$high + b.$high, a.$low + b.$low)), new $Uint64(0, 2), false);
  42839. return z.mul(nat.nil.mulRange(a, m), nat.nil.mulRange(new $Uint64(m.$high + 0, m.$low + 1), b));
  42840. };
  42841. $ptrType(nat).prototype.mulRange = function(a, b) { return this.$get().mulRange(a, b); };
  42842. nat.prototype.divW = function(x, y) {
  42843. var $ptr, m, q, r, x, y, z;
  42844. q = nat.nil;
  42845. r = 0;
  42846. z = this;
  42847. m = x.$length;
  42848. if (y === 0) {
  42849. $panic(new $String("division by zero"));
  42850. } else if (y === 1) {
  42851. q = z.set(x);
  42852. return [q, r];
  42853. } else if (m === 0) {
  42854. q = z.make(0);
  42855. return [q, r];
  42856. }
  42857. z = z.make(m);
  42858. r = divWVW($subslice(new sliceType$1(z.$array), z.$offset, z.$offset + z.$length), 0, $subslice(new sliceType$1(x.$array), x.$offset, x.$offset + x.$length), y);
  42859. q = z.norm();
  42860. return [q, r];
  42861. };
  42862. $ptrType(nat).prototype.divW = function(x, y) { return this.$get().divW(x, y); };
  42863. nat.prototype.div = function(z2, u, v) {
  42864. var $ptr, _tuple, _tuple$1, q, r, r2, u, v, z, z2;
  42865. q = nat.nil;
  42866. r = nat.nil;
  42867. z = this;
  42868. if (v.$length === 0) {
  42869. $panic(new $String("division by zero"));
  42870. }
  42871. if (u.cmp(v) < 0) {
  42872. q = z.make(0);
  42873. r = z2.set(u);
  42874. return [q, r];
  42875. }
  42876. if (v.$length === 1) {
  42877. r2 = 0;
  42878. _tuple = z.divW(u, (0 >= v.$length ? $throwRuntimeError("index out of range") : v.$array[v.$offset + 0])); q = _tuple[0]; r2 = _tuple[1];
  42879. r = z2.setWord(r2);
  42880. return [q, r];
  42881. }
  42882. _tuple$1 = z.divLarge(z2, u, v); q = _tuple$1[0]; r = _tuple$1[1];
  42883. return [q, r];
  42884. };
  42885. $ptrType(nat).prototype.div = function(z2, u, v) { return this.$get().div(z2, u, v); };
  42886. nat.prototype.divLarge = function(u, uIn, v) {
  42887. var $ptr, _index, _tmp, _tmp$1, _tuple, _tuple$1, _tuple$2, c, c$1, j, m, n, prevRhat, q, qhat, qhatv, r, rhat, shift, u, uIn, v, v1, x, x$1, x$10, x$11, x$12, x$13, x$14, x$15, x$16, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9, x1, x2, z;
  42888. q = nat.nil;
  42889. r = nat.nil;
  42890. z = this;
  42891. n = v.$length;
  42892. m = uIn.$length - n >> 0;
  42893. if (alias(z, uIn) || alias(z, v)) {
  42894. z = nat.nil;
  42895. }
  42896. q = z.make(m + 1 >> 0);
  42897. qhatv = $makeSlice(nat, (n + 1 >> 0));
  42898. if (alias(u, uIn) || alias(u, v)) {
  42899. u = nat.nil;
  42900. }
  42901. u = u.make(uIn.$length + 1 >> 0);
  42902. u.clear();
  42903. shift = leadingZeros((x = n - 1 >> 0, ((x < 0 || x >= v.$length) ? $throwRuntimeError("index out of range") : v.$array[v.$offset + x])));
  42904. if (shift > 0) {
  42905. v1 = $makeSlice(nat, n);
  42906. shlVU($subslice(new sliceType$1(v1.$array), v1.$offset, v1.$offset + v1.$length), $subslice(new sliceType$1(v.$array), v.$offset, v.$offset + v.$length), shift);
  42907. v = v1;
  42908. }
  42909. (x$2 = uIn.$length, ((x$2 < 0 || x$2 >= u.$length) ? $throwRuntimeError("index out of range") : u.$array[u.$offset + x$2] = shlVU((x$1 = $subslice(u, 0, uIn.$length), $subslice(new sliceType$1(x$1.$array), x$1.$offset, x$1.$offset + x$1.$length)), $subslice(new sliceType$1(uIn.$array), uIn.$offset, uIn.$offset + uIn.$length), shift)));
  42910. j = m;
  42911. while (true) {
  42912. if (!(j >= 0)) { break; }
  42913. qhat = 4294967295;
  42914. if (!(((x$3 = j + n >> 0, ((x$3 < 0 || x$3 >= u.$length) ? $throwRuntimeError("index out of range") : u.$array[u.$offset + x$3])) === (x$4 = n - 1 >> 0, ((x$4 < 0 || x$4 >= v.$length) ? $throwRuntimeError("index out of range") : v.$array[v.$offset + x$4]))))) {
  42915. rhat = 0;
  42916. _tuple = divWW((x$5 = j + n >> 0, ((x$5 < 0 || x$5 >= u.$length) ? $throwRuntimeError("index out of range") : u.$array[u.$offset + x$5])), (x$6 = (j + n >> 0) - 1 >> 0, ((x$6 < 0 || x$6 >= u.$length) ? $throwRuntimeError("index out of range") : u.$array[u.$offset + x$6])), (x$7 = n - 1 >> 0, ((x$7 < 0 || x$7 >= v.$length) ? $throwRuntimeError("index out of range") : v.$array[v.$offset + x$7]))); qhat = _tuple[0]; rhat = _tuple[1];
  42917. _tuple$1 = mulWW(qhat, (x$8 = n - 2 >> 0, ((x$8 < 0 || x$8 >= v.$length) ? $throwRuntimeError("index out of range") : v.$array[v.$offset + x$8]))); x1 = _tuple$1[0]; x2 = _tuple$1[1];
  42918. while (true) {
  42919. if (!(greaterThan(x1, x2, rhat, (x$9 = (j + n >> 0) - 2 >> 0, ((x$9 < 0 || x$9 >= u.$length) ? $throwRuntimeError("index out of range") : u.$array[u.$offset + x$9]))))) { break; }
  42920. qhat = qhat - (1) >>> 0;
  42921. prevRhat = rhat;
  42922. rhat = rhat + ((x$10 = n - 1 >> 0, ((x$10 < 0 || x$10 >= v.$length) ? $throwRuntimeError("index out of range") : v.$array[v.$offset + x$10]))) >>> 0;
  42923. if (rhat < prevRhat) {
  42924. break;
  42925. }
  42926. _tuple$2 = mulWW(qhat, (x$11 = n - 2 >> 0, ((x$11 < 0 || x$11 >= v.$length) ? $throwRuntimeError("index out of range") : v.$array[v.$offset + x$11]))); x1 = _tuple$2[0]; x2 = _tuple$2[1];
  42927. }
  42928. }
  42929. ((n < 0 || n >= qhatv.$length) ? $throwRuntimeError("index out of range") : qhatv.$array[qhatv.$offset + n] = mulAddVWW((x$12 = $subslice(qhatv, 0, n), $subslice(new sliceType$1(x$12.$array), x$12.$offset, x$12.$offset + x$12.$length)), $subslice(new sliceType$1(v.$array), v.$offset, v.$offset + v.$length), qhat, 0));
  42930. c = subVV((x$13 = $subslice(u, j, (j + qhatv.$length >> 0)), $subslice(new sliceType$1(x$13.$array), x$13.$offset, x$13.$offset + x$13.$length)), (x$14 = $subslice(u, j), $subslice(new sliceType$1(x$14.$array), x$14.$offset, x$14.$offset + x$14.$length)), $subslice(new sliceType$1(qhatv.$array), qhatv.$offset, qhatv.$offset + qhatv.$length));
  42931. if (!((c === 0))) {
  42932. c$1 = addVV((x$15 = $subslice(u, j, (j + n >> 0)), $subslice(new sliceType$1(x$15.$array), x$15.$offset, x$15.$offset + x$15.$length)), (x$16 = $subslice(u, j), $subslice(new sliceType$1(x$16.$array), x$16.$offset, x$16.$offset + x$16.$length)), $subslice(new sliceType$1(v.$array), v.$offset, v.$offset + v.$length));
  42933. _index = j + n >> 0;
  42934. ((_index < 0 || _index >= u.$length) ? $throwRuntimeError("index out of range") : u.$array[u.$offset + _index] = ((_index < 0 || _index >= u.$length) ? $throwRuntimeError("index out of range") : u.$array[u.$offset + _index]) + (c$1) >>> 0);
  42935. qhat = qhat - (1) >>> 0;
  42936. }
  42937. ((j < 0 || j >= q.$length) ? $throwRuntimeError("index out of range") : q.$array[q.$offset + j] = qhat);
  42938. j = j - (1) >> 0;
  42939. }
  42940. q = q.norm();
  42941. shrVU($subslice(new sliceType$1(u.$array), u.$offset, u.$offset + u.$length), $subslice(new sliceType$1(u.$array), u.$offset, u.$offset + u.$length), shift);
  42942. r = u.norm();
  42943. _tmp = q; _tmp$1 = r; q = _tmp; r = _tmp$1;
  42944. return [q, r];
  42945. };
  42946. $ptrType(nat).prototype.divLarge = function(u, uIn, v) { return this.$get().divLarge(u, uIn, v); };
  42947. nat.prototype.bitLen = function() {
  42948. var $ptr, i, x;
  42949. x = this;
  42950. i = x.$length - 1 >> 0;
  42951. if (i >= 0) {
  42952. return (i * 32 >> 0) + bitLen(((i < 0 || i >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + i])) >> 0;
  42953. }
  42954. return 0;
  42955. };
  42956. $ptrType(nat).prototype.bitLen = function() { return this.$get().bitLen(); };
  42957. hexValue = function(ch) {
  42958. var $ptr, ch, d;
  42959. d = 37;
  42960. if (48 <= ch && ch <= 57) {
  42961. d = ((ch - 48 >> 0) >> 0);
  42962. } else if (97 <= ch && ch <= 122) {
  42963. d = (((ch - 97 >> 0) + 10 >> 0) >> 0);
  42964. } else if (65 <= ch && ch <= 90) {
  42965. d = (((ch - 65 >> 0) + 10 >> 0) >> 0);
  42966. }
  42967. return (d >>> 0);
  42968. };
  42969. nat.prototype.scan = function(r, base) {
  42970. var $ptr, _q, _r, _r$1, _r$2, _r$3, _r$4, _ref, _ref$1, _tuple, _tuple$1, _tuple$2, _tuple$3, b, base, bb, ch, d, dd, err, max$1, r, x, z, $s, $r;
  42971. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _q = $f._q; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _ref = $f._ref; _ref$1 = $f._ref$1; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; b = $f.b; base = $f.base; bb = $f.bb; ch = $f.ch; d = $f.d; dd = $f.dd; err = $f.err; max$1 = $f.max$1; r = $f.r; x = $f.x; z = $f.z; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  42972. z = this;
  42973. if (base < 0 || (base === 1) || 36 < base) {
  42974. return [z, 0, errors.New("illegal number base")];
  42975. }
  42976. _r = r.ReadRune(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  42977. _tuple = _r; ch = _tuple[0]; err = _tuple[2];
  42978. if (!($interfaceIsEqual(err, $ifaceNil))) {
  42979. return [z, 0, err];
  42980. }
  42981. b = (base >>> 0);
  42982. /* */ if (base === 0) { $s = 2; continue; }
  42983. /* */ $s = 3; continue;
  42984. /* if (base === 0) { */ case 2:
  42985. b = 10;
  42986. /* */ if (ch === 48) { $s = 4; continue; }
  42987. /* */ $s = 5; continue;
  42988. /* if (ch === 48) { */ case 4:
  42989. _r$1 = r.ReadRune(); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  42990. _tuple$1 = _r$1; ch = _tuple$1[0]; err = _tuple$1[2];
  42991. _ref = err;
  42992. /* */ if ($interfaceIsEqual(_ref, $ifaceNil)) { $s = 7; continue; }
  42993. /* */ if ($interfaceIsEqual(_ref, io.EOF)) { $s = 8; continue; }
  42994. /* */ $s = 9; continue;
  42995. /* if ($interfaceIsEqual(_ref, $ifaceNil)) { */ case 7:
  42996. b = 8;
  42997. _ref$1 = ch;
  42998. if (_ref$1 === 120 || _ref$1 === 88) {
  42999. b = 16;
  43000. } else if (_ref$1 === 98 || _ref$1 === 66) {
  43001. b = 2;
  43002. }
  43003. /* */ if ((b === 2) || (b === 16)) { $s = 11; continue; }
  43004. /* */ $s = 12; continue;
  43005. /* if ((b === 2) || (b === 16)) { */ case 11:
  43006. _r$2 = r.ReadRune(); /* */ $s = 13; case 13: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  43007. _tuple$2 = _r$2; ch = _tuple$2[0]; err = _tuple$2[2];
  43008. /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 14; continue; }
  43009. /* */ $s = 15; continue;
  43010. /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 14:
  43011. return [z, 0, err];
  43012. /* } */ case 15:
  43013. /* } */ case 12:
  43014. $s = 10; continue;
  43015. /* } else if ($interfaceIsEqual(_ref, io.EOF)) { */ case 8:
  43016. return [z.make(0), 10, $ifaceNil];
  43017. $s = 10; continue;
  43018. /* } else { */ case 9:
  43019. return [z, 10, err];
  43020. /* } */ case 10:
  43021. /* } */ case 5:
  43022. /* } */ case 3:
  43023. z = z.make(0);
  43024. bb = 1;
  43025. dd = 0;
  43026. max$1 = (_q = 4294967295 / b, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >>> 0 : $throwRuntimeError("integer divide by zero"));
  43027. /* while (true) { */ case 16:
  43028. d = hexValue(ch);
  43029. /* */ if (d >= b) { $s = 18; continue; }
  43030. /* */ $s = 19; continue;
  43031. /* if (d >= b) { */ case 18:
  43032. _r$3 = r.UnreadRune(); /* */ $s = 20; case 20: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  43033. _r$3;
  43034. /* break; */ $s = 17; continue;
  43035. /* } */ case 19:
  43036. if (bb <= max$1) {
  43037. bb = (x = b, (((bb >>> 16 << 16) * x >>> 0) + (bb << 16 >>> 16) * x) >>> 0);
  43038. dd = ((((dd >>> 16 << 16) * b >>> 0) + (dd << 16 >>> 16) * b) >>> 0) + d >>> 0;
  43039. } else {
  43040. z = z.mulAddWW(z, bb, dd);
  43041. bb = b;
  43042. dd = d;
  43043. }
  43044. _r$4 = r.ReadRune(); /* */ $s = 21; case 21: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
  43045. _tuple$3 = _r$4; ch = _tuple$3[0]; err = _tuple$3[2];
  43046. /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 22; continue; }
  43047. /* */ $s = 23; continue;
  43048. /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 22:
  43049. if (!($interfaceIsEqual(err, io.EOF))) {
  43050. return [z, (b >> 0), err];
  43051. }
  43052. /* break; */ $s = 17; continue;
  43053. /* } */ case 23:
  43054. /* } */ $s = 16; continue; case 17:
  43055. if (bb > 1) {
  43056. z = z.mulAddWW(z, bb, dd);
  43057. } else if ((base === 0) && (b === 8)) {
  43058. return [z, 10, $ifaceNil];
  43059. } else if (!((base === 0)) || !((b === 8))) {
  43060. return [z, (b >> 0), errors.New("syntax error scanning number")];
  43061. }
  43062. return [z.norm(), (b >> 0), $ifaceNil];
  43063. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: nat.prototype.scan }; } $f.$ptr = $ptr; $f._q = _q; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._ref = _ref; $f._ref$1 = _ref$1; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f.b = b; $f.base = base; $f.bb = bb; $f.ch = ch; $f.d = d; $f.dd = dd; $f.err = err; $f.max$1 = max$1; $f.r = r; $f.x = x; $f.z = z; $f.$s = $s; $f.$r = $r; return $f;
  43064. };
  43065. $ptrType(nat).prototype.scan = function(r, base) { return this.$get().scan(r, base); };
  43066. nat.prototype.decimalString = function() {
  43067. var $ptr, x;
  43068. x = this;
  43069. return x.string("0123456789abcdefghijklmnopqrstuvwxyz".substring(0, 10));
  43070. };
  43071. $ptrType(nat).prototype.decimalString = function() { return this.$get().decimalString(); };
  43072. nat.prototype.string = function(charset$1) {
  43073. var $ptr, _q, b, bb, charset$1, i, k, mask, max$1, nbits, ndigits, q, s, shift, table, w, x, x$1, y, y$1, y$2, y$3, y$4, zero;
  43074. x = this;
  43075. b = (charset$1.length >>> 0);
  43076. if (b < 2 || false) {
  43077. $panic(new $String("illegal base"));
  43078. } else if (x.$length === 0) {
  43079. return $encodeRune(charset$1.charCodeAt(0));
  43080. }
  43081. i = (x.bitLen() / math.Log2(b) >> 0) + 1 >> 0;
  43082. s = $makeSlice(sliceType, i);
  43083. if (b === ((b & (-b >>> 0)) >>> 0)) {
  43084. shift = trailingZeroBits(b);
  43085. mask = ((y = shift, y < 32 ? (1 << y) : 0) >>> 0) - 1 >>> 0;
  43086. w = (0 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 0]);
  43087. nbits = 32;
  43088. k = 1;
  43089. while (true) {
  43090. if (!(k < x.$length)) { break; }
  43091. while (true) {
  43092. if (!(nbits >= shift)) { break; }
  43093. i = i - (1) >> 0;
  43094. ((i < 0 || i >= s.$length) ? $throwRuntimeError("index out of range") : s.$array[s.$offset + i] = charset$1.charCodeAt(((w & mask) >>> 0)));
  43095. w = (y$1 = (shift), y$1 < 32 ? (w >>> y$1) : 0) >>> 0;
  43096. nbits = nbits - (shift) >>> 0;
  43097. }
  43098. if (nbits === 0) {
  43099. w = ((k < 0 || k >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + k]);
  43100. nbits = 32;
  43101. } else {
  43102. w = (w | (((y$2 = nbits, y$2 < 32 ? (((k < 0 || k >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + k]) << y$2) : 0) >>> 0))) >>> 0;
  43103. i = i - (1) >> 0;
  43104. ((i < 0 || i >= s.$length) ? $throwRuntimeError("index out of range") : s.$array[s.$offset + i] = charset$1.charCodeAt(((w & mask) >>> 0)));
  43105. w = (y$3 = ((shift - nbits >>> 0)), y$3 < 32 ? (((k < 0 || k >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + k]) >>> y$3) : 0) >>> 0;
  43106. nbits = 32 - ((shift - nbits >>> 0)) >>> 0;
  43107. }
  43108. k = k + (1) >> 0;
  43109. }
  43110. while (true) {
  43111. if (!(nbits >= 0 && !((w === 0)))) { break; }
  43112. i = i - (1) >> 0;
  43113. ((i < 0 || i >= s.$length) ? $throwRuntimeError("index out of range") : s.$array[s.$offset + i] = charset$1.charCodeAt(((w & mask) >>> 0)));
  43114. w = (y$4 = (shift), y$4 < 32 ? (w >>> y$4) : 0) >>> 0;
  43115. nbits = nbits - (shift) >>> 0;
  43116. }
  43117. } else {
  43118. bb = b;
  43119. ndigits = 1;
  43120. max$1 = (_q = 4294967295 / b, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >>> 0 : $throwRuntimeError("integer divide by zero"));
  43121. while (true) {
  43122. if (!(bb <= max$1)) { break; }
  43123. ndigits = ndigits + (1) >> 0;
  43124. bb = (x$1 = b, (((bb >>> 16 << 16) * x$1 >>> 0) + (bb << 16 >>> 16) * x$1) >>> 0);
  43125. }
  43126. table = divisors(x.$length, b, ndigits, bb);
  43127. q = nat.nil.set(x);
  43128. q.convertWords(s, charset$1, b, ndigits, bb, table);
  43129. i = 0;
  43130. zero = charset$1.charCodeAt(0);
  43131. while (true) {
  43132. if (!(((i < 0 || i >= s.$length) ? $throwRuntimeError("index out of range") : s.$array[s.$offset + i]) === zero)) { break; }
  43133. i = i + (1) >> 0;
  43134. }
  43135. }
  43136. return $bytesToString($subslice(s, i));
  43137. };
  43138. $ptrType(nat).prototype.string = function(charset$1) { return this.$get().string(charset$1); };
  43139. nat.prototype.convertWords = function(s, charset$1, b, ndigits, bb, table) {
  43140. var $ptr, _q, _q$1, _r, _tuple, _tuple$1, _tuple$2, b, bb, charset$1, h, i, index, j, j$1, maxLength, minLength, ndigits, q, r, r$1, s, t, table, x, zero;
  43141. q = this;
  43142. if (!(table === sliceType$3.nil)) {
  43143. r = nat.nil;
  43144. index = table.$length - 1 >> 0;
  43145. while (true) {
  43146. if (!(q.$length > leafSize)) { break; }
  43147. maxLength = q.bitLen();
  43148. minLength = maxLength >> 1 >> 0;
  43149. while (true) {
  43150. if (!(index > 0 && (x = index - 1 >> 0, ((x < 0 || x >= table.$length) ? $throwRuntimeError("index out of range") : table.$array[table.$offset + x])).nbits > minLength)) { break; }
  43151. index = index - (1) >> 0;
  43152. }
  43153. if (((index < 0 || index >= table.$length) ? $throwRuntimeError("index out of range") : table.$array[table.$offset + index]).nbits >= maxLength && ((index < 0 || index >= table.$length) ? $throwRuntimeError("index out of range") : table.$array[table.$offset + index]).bbb.cmp(q) >= 0) {
  43154. index = index - (1) >> 0;
  43155. if (index < 0) {
  43156. $panic(new $String("internal inconsistency"));
  43157. }
  43158. }
  43159. _tuple = q.div(r, q, ((index < 0 || index >= table.$length) ? $throwRuntimeError("index out of range") : table.$array[table.$offset + index]).bbb); q = _tuple[0]; r = _tuple[1];
  43160. h = s.$length - ((index < 0 || index >= table.$length) ? $throwRuntimeError("index out of range") : table.$array[table.$offset + index]).ndigits >> 0;
  43161. r.convertWords($subslice(s, h), charset$1, b, ndigits, bb, $subslice(table, 0, index));
  43162. s = $subslice(s, 0, h);
  43163. }
  43164. }
  43165. i = s.$length;
  43166. r$1 = 0;
  43167. if (b === 10) {
  43168. while (true) {
  43169. if (!(q.$length > 0)) { break; }
  43170. _tuple$1 = q.divW(q, bb); q = _tuple$1[0]; r$1 = _tuple$1[1];
  43171. j = 0;
  43172. while (true) {
  43173. if (!(j < ndigits && i > 0)) { break; }
  43174. i = i - (1) >> 0;
  43175. t = (_q = r$1 / 10, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >>> 0 : $throwRuntimeError("integer divide by zero"));
  43176. ((i < 0 || i >= s.$length) ? $throwRuntimeError("index out of range") : s.$array[s.$offset + i] = charset$1.charCodeAt((((r$1 - (t << 3 >>> 0) >>> 0) - t >>> 0) - t >>> 0)));
  43177. r$1 = t;
  43178. j = j + (1) >> 0;
  43179. }
  43180. }
  43181. } else {
  43182. while (true) {
  43183. if (!(q.$length > 0)) { break; }
  43184. _tuple$2 = q.divW(q, bb); q = _tuple$2[0]; r$1 = _tuple$2[1];
  43185. j$1 = 0;
  43186. while (true) {
  43187. if (!(j$1 < ndigits && i > 0)) { break; }
  43188. i = i - (1) >> 0;
  43189. ((i < 0 || i >= s.$length) ? $throwRuntimeError("index out of range") : s.$array[s.$offset + i] = charset$1.charCodeAt((_r = r$1 % b, _r === _r ? _r : $throwRuntimeError("integer divide by zero"))));
  43190. r$1 = (_q$1 = r$1 / (b), (_q$1 === _q$1 && _q$1 !== 1/0 && _q$1 !== -1/0) ? _q$1 >>> 0 : $throwRuntimeError("integer divide by zero"));
  43191. j$1 = j$1 + (1) >> 0;
  43192. }
  43193. }
  43194. }
  43195. zero = charset$1.charCodeAt(0);
  43196. while (true) {
  43197. if (!(i > 0)) { break; }
  43198. i = i - (1) >> 0;
  43199. ((i < 0 || i >= s.$length) ? $throwRuntimeError("index out of range") : s.$array[s.$offset + i] = zero);
  43200. }
  43201. };
  43202. $ptrType(nat).prototype.convertWords = function(s, charset$1, b, ndigits, bb, table) { return this.$get().convertWords(s, charset$1, b, ndigits, bb, table); };
  43203. nat.prototype.expWW = function(x, y) {
  43204. var $ptr, x, y, z;
  43205. z = this;
  43206. return z.expNN(nat.nil.setWord(x), nat.nil.setWord(y), nat.nil);
  43207. };
  43208. $ptrType(nat).prototype.expWW = function(x, y) { return this.$get().expWW(x, y); };
  43209. divisors = function(m, b, ndigits, bb) {
  43210. var $ptr, b, bb, i, k, larger, m, ndigits, table, words, x, x$1, x$2, x$3, y;
  43211. if ((leafSize === 0) || m <= leafSize) {
  43212. return sliceType$3.nil;
  43213. }
  43214. k = 1;
  43215. words = leafSize;
  43216. while (true) {
  43217. if (!(words < (m >> 1 >> 0) && k < 64)) { break; }
  43218. k = k + (1) >> 0;
  43219. words = (y = (1), y < 32 ? (words << y) : 0) >> 0;
  43220. }
  43221. table = sliceType$3.nil;
  43222. if (b === 10) {
  43223. cacheBase10.Mutex.Lock();
  43224. table = $subslice(new sliceType$3(cacheBase10.table), 0, k);
  43225. } else {
  43226. table = $makeSlice(sliceType$3, k);
  43227. }
  43228. if ((x = k - 1 >> 0, ((x < 0 || x >= table.$length) ? $throwRuntimeError("index out of range") : table.$array[table.$offset + x])).ndigits === 0) {
  43229. larger = nat.nil;
  43230. i = 0;
  43231. while (true) {
  43232. if (!(i < k)) { break; }
  43233. if (((i < 0 || i >= table.$length) ? $throwRuntimeError("index out of range") : table.$array[table.$offset + i]).ndigits === 0) {
  43234. if (i === 0) {
  43235. (0 >= table.$length ? $throwRuntimeError("index out of range") : table.$array[table.$offset + 0]).bbb = nat.nil.expWW(bb, (leafSize >>> 0));
  43236. (0 >= table.$length ? $throwRuntimeError("index out of range") : table.$array[table.$offset + 0]).ndigits = ndigits * leafSize >> 0;
  43237. } else {
  43238. ((i < 0 || i >= table.$length) ? $throwRuntimeError("index out of range") : table.$array[table.$offset + i]).bbb = nat.nil.mul((x$1 = i - 1 >> 0, ((x$1 < 0 || x$1 >= table.$length) ? $throwRuntimeError("index out of range") : table.$array[table.$offset + x$1])).bbb, (x$2 = i - 1 >> 0, ((x$2 < 0 || x$2 >= table.$length) ? $throwRuntimeError("index out of range") : table.$array[table.$offset + x$2])).bbb);
  43239. ((i < 0 || i >= table.$length) ? $throwRuntimeError("index out of range") : table.$array[table.$offset + i]).ndigits = 2 * (x$3 = i - 1 >> 0, ((x$3 < 0 || x$3 >= table.$length) ? $throwRuntimeError("index out of range") : table.$array[table.$offset + x$3])).ndigits >> 0;
  43240. }
  43241. larger = nat.nil.set(((i < 0 || i >= table.$length) ? $throwRuntimeError("index out of range") : table.$array[table.$offset + i]).bbb);
  43242. while (true) {
  43243. if (!(mulAddVWW($subslice(new sliceType$1(larger.$array), larger.$offset, larger.$offset + larger.$length), $subslice(new sliceType$1(larger.$array), larger.$offset, larger.$offset + larger.$length), b, 0) === 0)) { break; }
  43244. ((i < 0 || i >= table.$length) ? $throwRuntimeError("index out of range") : table.$array[table.$offset + i]).bbb = ((i < 0 || i >= table.$length) ? $throwRuntimeError("index out of range") : table.$array[table.$offset + i]).bbb.set(larger);
  43245. ((i < 0 || i >= table.$length) ? $throwRuntimeError("index out of range") : table.$array[table.$offset + i]).ndigits = ((i < 0 || i >= table.$length) ? $throwRuntimeError("index out of range") : table.$array[table.$offset + i]).ndigits + (1) >> 0;
  43246. }
  43247. ((i < 0 || i >= table.$length) ? $throwRuntimeError("index out of range") : table.$array[table.$offset + i]).nbits = ((i < 0 || i >= table.$length) ? $throwRuntimeError("index out of range") : table.$array[table.$offset + i]).bbb.bitLen();
  43248. }
  43249. i = i + (1) >> 0;
  43250. }
  43251. }
  43252. if (b === 10) {
  43253. cacheBase10.Mutex.Unlock();
  43254. }
  43255. return table;
  43256. };
  43257. trailingZeroBits = function(x) {
  43258. var $ptr, _ref, x, x$1, x$2, x$3, x$4;
  43259. _ref = 32;
  43260. if (_ref === 32) {
  43261. return ((x$1 = ((x$2 = ((x & (-x >>> 0)) >>> 0), (((x$2 >>> 16 << 16) * 125613361 >>> 0) + (x$2 << 16 >>> 16) * 125613361) >>> 0)) >>> 27 >>> 0, ((x$1 < 0 || x$1 >= deBruijn32Lookup.$length) ? $throwRuntimeError("index out of range") : deBruijn32Lookup.$array[deBruijn32Lookup.$offset + x$1])) >>> 0);
  43262. } else if (_ref === 64) {
  43263. return ((x$3 = ((x$4 = ((x & (-x >>> 0)) >>> 0), (((x$4 >>> 16 << 16) * 3033172745 >>> 0) + (x$4 << 16 >>> 16) * 3033172745) >>> 0)) >>> 58 >>> 0, ((x$3 < 0 || x$3 >= deBruijn64Lookup.$length) ? $throwRuntimeError("index out of range") : deBruijn64Lookup.$array[deBruijn64Lookup.$offset + x$3])) >>> 0);
  43264. } else {
  43265. $panic(new $String("unknown word size"));
  43266. }
  43267. };
  43268. nat.prototype.trailingZeroBits = function() {
  43269. var $ptr, i, x;
  43270. x = this;
  43271. if (x.$length === 0) {
  43272. return 0;
  43273. }
  43274. i = 0;
  43275. while (true) {
  43276. if (!(((i < 0 || i >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + i]) === 0)) { break; }
  43277. i = i + (1) >>> 0;
  43278. }
  43279. return (i * 32 >>> 0) + trailingZeroBits(((i < 0 || i >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + i])) >>> 0;
  43280. };
  43281. $ptrType(nat).prototype.trailingZeroBits = function() { return this.$get().trailingZeroBits(); };
  43282. nat.prototype.shl = function(x, s) {
  43283. var $ptr, _q, _r, m, n, s, x, x$1, z;
  43284. z = this;
  43285. m = x.$length;
  43286. if (m === 0) {
  43287. return z.make(0);
  43288. }
  43289. n = m + ((_q = s / 32, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >>> 0 : $throwRuntimeError("integer divide by zero")) >> 0) >> 0;
  43290. z = z.make(n + 1 >> 0);
  43291. ((n < 0 || n >= z.$length) ? $throwRuntimeError("index out of range") : z.$array[z.$offset + n] = shlVU((x$1 = $subslice(z, (n - m >> 0), n), $subslice(new sliceType$1(x$1.$array), x$1.$offset, x$1.$offset + x$1.$length)), $subslice(new sliceType$1(x.$array), x.$offset, x.$offset + x.$length), (_r = s % 32, _r === _r ? _r : $throwRuntimeError("integer divide by zero"))));
  43292. $subslice(z, 0, (n - m >> 0)).clear();
  43293. return z.norm();
  43294. };
  43295. $ptrType(nat).prototype.shl = function(x, s) { return this.$get().shl(x, s); };
  43296. nat.prototype.shr = function(x, s) {
  43297. var $ptr, _q, _r, m, n, s, x, x$1, z;
  43298. z = this;
  43299. m = x.$length;
  43300. n = m - ((_q = s / 32, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >>> 0 : $throwRuntimeError("integer divide by zero")) >> 0) >> 0;
  43301. if (n <= 0) {
  43302. return z.make(0);
  43303. }
  43304. z = z.make(n);
  43305. shrVU($subslice(new sliceType$1(z.$array), z.$offset, z.$offset + z.$length), (x$1 = $subslice(x, (m - n >> 0)), $subslice(new sliceType$1(x$1.$array), x$1.$offset, x$1.$offset + x$1.$length)), (_r = s % 32, _r === _r ? _r : $throwRuntimeError("integer divide by zero")));
  43306. return z.norm();
  43307. };
  43308. $ptrType(nat).prototype.shr = function(x, s) { return this.$get().shr(x, s); };
  43309. nat.prototype.setBit = function(x, i, b) {
  43310. var $ptr, _q, _r, _ref, b, i, j, m, n, x, y, z;
  43311. z = this;
  43312. j = ((_q = i / 32, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >>> 0 : $throwRuntimeError("integer divide by zero")) >> 0);
  43313. m = (y = ((_r = i % 32, _r === _r ? _r : $throwRuntimeError("integer divide by zero"))), y < 32 ? (1 << y) : 0) >>> 0;
  43314. n = x.$length;
  43315. _ref = b;
  43316. if (_ref === 0) {
  43317. z = z.make(n);
  43318. $copySlice(z, x);
  43319. if (j >= n) {
  43320. return z;
  43321. }
  43322. ((j < 0 || j >= z.$length) ? $throwRuntimeError("index out of range") : z.$array[z.$offset + j] = (((j < 0 || j >= z.$length) ? $throwRuntimeError("index out of range") : z.$array[z.$offset + j]) & ~(m)) >>> 0);
  43323. return z.norm();
  43324. } else if (_ref === 1) {
  43325. if (j >= n) {
  43326. z = z.make(j + 1 >> 0);
  43327. $subslice(z, n).clear();
  43328. } else {
  43329. z = z.make(n);
  43330. }
  43331. $copySlice(z, x);
  43332. ((j < 0 || j >= z.$length) ? $throwRuntimeError("index out of range") : z.$array[z.$offset + j] = (((j < 0 || j >= z.$length) ? $throwRuntimeError("index out of range") : z.$array[z.$offset + j]) | (m)) >>> 0);
  43333. return z;
  43334. }
  43335. $panic(new $String("set bit is not 0 or 1"));
  43336. };
  43337. $ptrType(nat).prototype.setBit = function(x, i, b) { return this.$get().setBit(x, i, b); };
  43338. nat.prototype.bit = function(i) {
  43339. var $ptr, _q, _r, i, j, y, z;
  43340. z = this;
  43341. j = ((_q = i / 32, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >>> 0 : $throwRuntimeError("integer divide by zero")) >> 0);
  43342. if (j >= z.$length) {
  43343. return 0;
  43344. }
  43345. return (((((y = ((_r = i % 32, _r === _r ? _r : $throwRuntimeError("integer divide by zero"))), y < 32 ? (((j < 0 || j >= z.$length) ? $throwRuntimeError("index out of range") : z.$array[z.$offset + j]) >>> y) : 0) >>> 0) & 1) >>> 0) >>> 0);
  43346. };
  43347. $ptrType(nat).prototype.bit = function(i) { return this.$get().bit(i); };
  43348. nat.prototype.and = function(x, y) {
  43349. var $ptr, i, m, n, x, y, z;
  43350. z = this;
  43351. m = x.$length;
  43352. n = y.$length;
  43353. if (m > n) {
  43354. m = n;
  43355. }
  43356. z = z.make(m);
  43357. i = 0;
  43358. while (true) {
  43359. if (!(i < m)) { break; }
  43360. ((i < 0 || i >= z.$length) ? $throwRuntimeError("index out of range") : z.$array[z.$offset + i] = (((i < 0 || i >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + i]) & ((i < 0 || i >= y.$length) ? $throwRuntimeError("index out of range") : y.$array[y.$offset + i])) >>> 0);
  43361. i = i + (1) >> 0;
  43362. }
  43363. return z.norm();
  43364. };
  43365. $ptrType(nat).prototype.and = function(x, y) { return this.$get().and(x, y); };
  43366. nat.prototype.andNot = function(x, y) {
  43367. var $ptr, i, m, n, x, y, z;
  43368. z = this;
  43369. m = x.$length;
  43370. n = y.$length;
  43371. if (n > m) {
  43372. n = m;
  43373. }
  43374. z = z.make(m);
  43375. i = 0;
  43376. while (true) {
  43377. if (!(i < n)) { break; }
  43378. ((i < 0 || i >= z.$length) ? $throwRuntimeError("index out of range") : z.$array[z.$offset + i] = (((i < 0 || i >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + i]) & ~((i < 0 || i >= y.$length) ? $throwRuntimeError("index out of range") : y.$array[y.$offset + i])) >>> 0);
  43379. i = i + (1) >> 0;
  43380. }
  43381. $copySlice($subslice(z, n, m), $subslice(x, n, m));
  43382. return z.norm();
  43383. };
  43384. $ptrType(nat).prototype.andNot = function(x, y) { return this.$get().andNot(x, y); };
  43385. nat.prototype.or = function(x, y) {
  43386. var $ptr, _tmp, _tmp$1, i, m, n, s, x, y, z;
  43387. z = this;
  43388. m = x.$length;
  43389. n = y.$length;
  43390. s = x;
  43391. if (m < n) {
  43392. _tmp = m; _tmp$1 = n; n = _tmp; m = _tmp$1;
  43393. s = y;
  43394. }
  43395. z = z.make(m);
  43396. i = 0;
  43397. while (true) {
  43398. if (!(i < n)) { break; }
  43399. ((i < 0 || i >= z.$length) ? $throwRuntimeError("index out of range") : z.$array[z.$offset + i] = (((i < 0 || i >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + i]) | ((i < 0 || i >= y.$length) ? $throwRuntimeError("index out of range") : y.$array[y.$offset + i])) >>> 0);
  43400. i = i + (1) >> 0;
  43401. }
  43402. $copySlice($subslice(z, n, m), $subslice(s, n, m));
  43403. return z.norm();
  43404. };
  43405. $ptrType(nat).prototype.or = function(x, y) { return this.$get().or(x, y); };
  43406. nat.prototype.xor = function(x, y) {
  43407. var $ptr, _tmp, _tmp$1, i, m, n, s, x, y, z;
  43408. z = this;
  43409. m = x.$length;
  43410. n = y.$length;
  43411. s = x;
  43412. if (m < n) {
  43413. _tmp = m; _tmp$1 = n; n = _tmp; m = _tmp$1;
  43414. s = y;
  43415. }
  43416. z = z.make(m);
  43417. i = 0;
  43418. while (true) {
  43419. if (!(i < n)) { break; }
  43420. ((i < 0 || i >= z.$length) ? $throwRuntimeError("index out of range") : z.$array[z.$offset + i] = (((i < 0 || i >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + i]) ^ ((i < 0 || i >= y.$length) ? $throwRuntimeError("index out of range") : y.$array[y.$offset + i])) >>> 0);
  43421. i = i + (1) >> 0;
  43422. }
  43423. $copySlice($subslice(z, n, m), $subslice(s, n, m));
  43424. return z.norm();
  43425. };
  43426. $ptrType(nat).prototype.xor = function(x, y) { return this.$get().xor(x, y); };
  43427. greaterThan = function(x1, x2, y1, y2) {
  43428. var $ptr, x1, x2, y1, y2;
  43429. return x1 > y1 || (x1 === y1) && x2 > y2;
  43430. };
  43431. nat.prototype.modW = function(d) {
  43432. var $ptr, d, q, r, x;
  43433. r = 0;
  43434. x = this;
  43435. q = nat.nil;
  43436. q = q.make(x.$length);
  43437. r = divWVW($subslice(new sliceType$1(q.$array), q.$offset, q.$offset + q.$length), 0, $subslice(new sliceType$1(x.$array), x.$offset, x.$offset + x.$length), d);
  43438. return r;
  43439. };
  43440. $ptrType(nat).prototype.modW = function(d) { return this.$get().modW(d); };
  43441. nat.prototype.random = function(rand$1, limit, n) {
  43442. var $ptr, _i, _i$1, _index, _r, _r$1, _r$2, _r$3, _ref, _ref$1, _ref$2, bitLengthOfMSW, i, i$1, limit, mask, n, rand$1, y, z, $s, $r;
  43443. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _i = $f._i; _i$1 = $f._i$1; _index = $f._index; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _ref = $f._ref; _ref$1 = $f._ref$1; _ref$2 = $f._ref$2; bitLengthOfMSW = $f.bitLengthOfMSW; i = $f.i; i$1 = $f.i$1; limit = $f.limit; mask = $f.mask; n = $f.n; rand$1 = $f.rand$1; y = $f.y; z = $f.z; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  43444. z = this;
  43445. if (alias(z, limit)) {
  43446. z = nat.nil;
  43447. }
  43448. z = z.make(limit.$length);
  43449. bitLengthOfMSW = ((_r = n % 32, _r === _r ? _r : $throwRuntimeError("integer divide by zero")) >>> 0);
  43450. if (bitLengthOfMSW === 0) {
  43451. bitLengthOfMSW = 32;
  43452. }
  43453. mask = ((((y = bitLengthOfMSW, y < 32 ? (1 << y) : 0) >>> 0)) - 1 >>> 0);
  43454. /* while (true) { */ case 1:
  43455. _ref = 32;
  43456. /* */ if (_ref === 32) { $s = 3; continue; }
  43457. /* */ if (_ref === 64) { $s = 4; continue; }
  43458. /* */ $s = 5; continue;
  43459. /* if (_ref === 32) { */ case 3:
  43460. _ref$1 = z;
  43461. _i = 0;
  43462. /* while (true) { */ case 7:
  43463. /* if (!(_i < _ref$1.$length)) { break; } */ if(!(_i < _ref$1.$length)) { $s = 8; continue; }
  43464. i = _i;
  43465. _r$1 = rand$1.Uint32(); /* */ $s = 9; case 9: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  43466. ((i < 0 || i >= z.$length) ? $throwRuntimeError("index out of range") : z.$array[z.$offset + i] = (_r$1 >>> 0));
  43467. _i++;
  43468. /* } */ $s = 7; continue; case 8:
  43469. $s = 6; continue;
  43470. /* } else if (_ref === 64) { */ case 4:
  43471. _ref$2 = z;
  43472. _i$1 = 0;
  43473. /* while (true) { */ case 10:
  43474. /* if (!(_i$1 < _ref$2.$length)) { break; } */ if(!(_i$1 < _ref$2.$length)) { $s = 11; continue; }
  43475. i$1 = _i$1;
  43476. _r$2 = rand$1.Uint32(); /* */ $s = 12; case 12: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  43477. _r$3 = rand$1.Uint32(); /* */ $s = 13; case 13: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  43478. ((i$1 < 0 || i$1 >= z.$length) ? $throwRuntimeError("index out of range") : z.$array[z.$offset + i$1] = ((_r$2 >>> 0) | ((_r$3 >>> 0) << 32 >>> 0)) >>> 0);
  43479. _i$1++;
  43480. /* } */ $s = 10; continue; case 11:
  43481. $s = 6; continue;
  43482. /* } else { */ case 5:
  43483. $panic(new $String("unknown word size"));
  43484. /* } */ case 6:
  43485. _index = limit.$length - 1 >> 0;
  43486. ((_index < 0 || _index >= z.$length) ? $throwRuntimeError("index out of range") : z.$array[z.$offset + _index] = (((_index < 0 || _index >= z.$length) ? $throwRuntimeError("index out of range") : z.$array[z.$offset + _index]) & (mask)) >>> 0);
  43487. if (z.cmp(limit) < 0) {
  43488. /* break; */ $s = 2; continue;
  43489. }
  43490. /* } */ $s = 1; continue; case 2:
  43491. return z.norm();
  43492. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: nat.prototype.random }; } $f.$ptr = $ptr; $f._i = _i; $f._i$1 = _i$1; $f._index = _index; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._ref = _ref; $f._ref$1 = _ref$1; $f._ref$2 = _ref$2; $f.bitLengthOfMSW = bitLengthOfMSW; $f.i = i; $f.i$1 = i$1; $f.limit = limit; $f.mask = mask; $f.n = n; $f.rand$1 = rand$1; $f.y = y; $f.z = z; $f.$s = $s; $f.$r = $r; return $f;
  43493. };
  43494. $ptrType(nat).prototype.random = function(rand$1, limit, n) { return this.$get().random(rand$1, limit, n); };
  43495. nat.prototype.expNN = function(x, y, m) {
  43496. var $ptr, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$16, _tmp$17, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, i, j, j$1, m, q, r, shift, v, w, x, x$1, y, y$1, y$2, y$3, z, zz;
  43497. z = this;
  43498. if (alias(z, x) || alias(z, y)) {
  43499. z = nat.nil;
  43500. }
  43501. if ((m.$length === 1) && ((0 >= m.$length ? $throwRuntimeError("index out of range") : m.$array[m.$offset + 0]) === 1)) {
  43502. return z.setWord(0);
  43503. }
  43504. if (y.$length === 0) {
  43505. return z.setWord(1);
  43506. }
  43507. if (!((m.$length === 0))) {
  43508. z = z.make(m.$length);
  43509. }
  43510. z = z.set(x);
  43511. if (x.$length > 1 && y.$length > 1 && m.$length > 0) {
  43512. return z.expNNWindowed(x, y, m);
  43513. }
  43514. v = (x$1 = y.$length - 1 >> 0, ((x$1 < 0 || x$1 >= y.$length) ? $throwRuntimeError("index out of range") : y.$array[y.$offset + x$1]));
  43515. shift = leadingZeros(v) + 1 >>> 0;
  43516. v = (y$1 = (shift), y$1 < 32 ? (v << y$1) : 0) >>> 0;
  43517. q = nat.nil;
  43518. w = 32 - (shift >> 0) >> 0;
  43519. _tmp = nat.nil; _tmp$1 = nat.nil; zz = _tmp; r = _tmp$1;
  43520. j = 0;
  43521. while (true) {
  43522. if (!(j < w)) { break; }
  43523. zz = zz.mul(z, z);
  43524. _tmp$2 = z; _tmp$3 = zz; zz = _tmp$2; z = _tmp$3;
  43525. if (!((((v & 2147483648) >>> 0) === 0))) {
  43526. zz = zz.mul(z, x);
  43527. _tmp$4 = z; _tmp$5 = zz; zz = _tmp$4; z = _tmp$5;
  43528. }
  43529. if (!((m.$length === 0))) {
  43530. _tuple = zz.div(r, z, m); zz = _tuple[0]; r = _tuple[1];
  43531. _tmp$6 = q; _tmp$7 = z; _tmp$8 = zz; _tmp$9 = r; zz = _tmp$6; r = _tmp$7; q = _tmp$8; z = _tmp$9;
  43532. }
  43533. v = (y$2 = (1), y$2 < 32 ? (v << y$2) : 0) >>> 0;
  43534. j = j + (1) >> 0;
  43535. }
  43536. i = y.$length - 2 >> 0;
  43537. while (true) {
  43538. if (!(i >= 0)) { break; }
  43539. v = ((i < 0 || i >= y.$length) ? $throwRuntimeError("index out of range") : y.$array[y.$offset + i]);
  43540. j$1 = 0;
  43541. while (true) {
  43542. if (!(j$1 < 32)) { break; }
  43543. zz = zz.mul(z, z);
  43544. _tmp$10 = z; _tmp$11 = zz; zz = _tmp$10; z = _tmp$11;
  43545. if (!((((v & 2147483648) >>> 0) === 0))) {
  43546. zz = zz.mul(z, x);
  43547. _tmp$12 = z; _tmp$13 = zz; zz = _tmp$12; z = _tmp$13;
  43548. }
  43549. if (!((m.$length === 0))) {
  43550. _tuple$1 = zz.div(r, z, m); zz = _tuple$1[0]; r = _tuple$1[1];
  43551. _tmp$14 = q; _tmp$15 = z; _tmp$16 = zz; _tmp$17 = r; zz = _tmp$14; r = _tmp$15; q = _tmp$16; z = _tmp$17;
  43552. }
  43553. v = (y$3 = (1), y$3 < 32 ? (v << y$3) : 0) >>> 0;
  43554. j$1 = j$1 + (1) >> 0;
  43555. }
  43556. i = i - (1) >> 0;
  43557. }
  43558. return z.norm();
  43559. };
  43560. $ptrType(nat).prototype.expNN = function(x, y, m) { return this.$get().expNN(x, y, m); };
  43561. nat.prototype.expNNWindowed = function(x, y, m) {
  43562. var $ptr, _q, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$16, _tmp$17, _tmp$18, _tmp$19, _tmp$2, _tmp$20, _tmp$21, _tmp$22, _tmp$23, _tmp$24, _tmp$25, _tmp$26, _tmp$27, _tmp$28, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, _tuple$6, i, i$1, j, m, p, p1, p2, powers, r, x, x$1, y, y$1, yi, z, zz;
  43563. z = this;
  43564. _tmp = nat.nil; _tmp$1 = nat.nil; zz = _tmp; r = _tmp$1;
  43565. powers = $clone(arrayType$1.zero(), arrayType$1);
  43566. powers[0] = natOne;
  43567. powers[1] = x;
  43568. i = 2;
  43569. while (true) {
  43570. if (!(i < 16)) { break; }
  43571. _tmp$2 = $indexPtr(powers, (_q = i / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")), ptrType$2); _tmp$3 = $indexPtr(powers, i, ptrType$2); _tmp$4 = $indexPtr(powers, (i + 1 >> 0), ptrType$2); p2 = _tmp$2; p = _tmp$3; p1 = _tmp$4;
  43572. p.$set(p.mul(p2.$get(), p2.$get()));
  43573. _tuple = zz.div(r, p.$get(), m); zz = _tuple[0]; r = _tuple[1];
  43574. _tmp$5 = r; _tmp$6 = p.$get(); p.$set(_tmp$5); r = _tmp$6;
  43575. p1.$set(p1.mul(p.$get(), x));
  43576. _tuple$1 = zz.div(r, p1.$get(), m); zz = _tuple$1[0]; r = _tuple$1[1];
  43577. _tmp$7 = r; _tmp$8 = p1.$get(); p1.$set(_tmp$7); r = _tmp$8;
  43578. i = i + (2) >> 0;
  43579. }
  43580. z = z.setWord(1);
  43581. i$1 = y.$length - 1 >> 0;
  43582. while (true) {
  43583. if (!(i$1 >= 0)) { break; }
  43584. yi = ((i$1 < 0 || i$1 >= y.$length) ? $throwRuntimeError("index out of range") : y.$array[y.$offset + i$1]);
  43585. j = 0;
  43586. while (true) {
  43587. if (!(j < 32)) { break; }
  43588. if (!((i$1 === (y.$length - 1 >> 0))) || !((j === 0))) {
  43589. zz = zz.mul(z, z);
  43590. _tmp$9 = z; _tmp$10 = zz; zz = _tmp$9; z = _tmp$10;
  43591. _tuple$2 = zz.div(r, z, m); zz = _tuple$2[0]; r = _tuple$2[1];
  43592. _tmp$11 = r; _tmp$12 = z; z = _tmp$11; r = _tmp$12;
  43593. zz = zz.mul(z, z);
  43594. _tmp$13 = z; _tmp$14 = zz; zz = _tmp$13; z = _tmp$14;
  43595. _tuple$3 = zz.div(r, z, m); zz = _tuple$3[0]; r = _tuple$3[1];
  43596. _tmp$15 = r; _tmp$16 = z; z = _tmp$15; r = _tmp$16;
  43597. zz = zz.mul(z, z);
  43598. _tmp$17 = z; _tmp$18 = zz; zz = _tmp$17; z = _tmp$18;
  43599. _tuple$4 = zz.div(r, z, m); zz = _tuple$4[0]; r = _tuple$4[1];
  43600. _tmp$19 = r; _tmp$20 = z; z = _tmp$19; r = _tmp$20;
  43601. zz = zz.mul(z, z);
  43602. _tmp$21 = z; _tmp$22 = zz; zz = _tmp$21; z = _tmp$22;
  43603. _tuple$5 = zz.div(r, z, m); zz = _tuple$5[0]; r = _tuple$5[1];
  43604. _tmp$23 = r; _tmp$24 = z; z = _tmp$23; r = _tmp$24;
  43605. }
  43606. zz = zz.mul(z, (x$1 = yi >>> 28 >>> 0, ((x$1 < 0 || x$1 >= powers.length) ? $throwRuntimeError("index out of range") : powers[x$1])));
  43607. _tmp$25 = z; _tmp$26 = zz; zz = _tmp$25; z = _tmp$26;
  43608. _tuple$6 = zz.div(r, z, m); zz = _tuple$6[0]; r = _tuple$6[1];
  43609. _tmp$27 = r; _tmp$28 = z; z = _tmp$27; r = _tmp$28;
  43610. yi = (y$1 = (4), y$1 < 32 ? (yi << y$1) : 0) >>> 0;
  43611. j = j + (4) >> 0;
  43612. }
  43613. i$1 = i$1 - (1) >> 0;
  43614. }
  43615. return z.norm();
  43616. };
  43617. $ptrType(nat).prototype.expNNWindowed = function(x, y, m) { return this.$get().expNNWindowed(x, y, m); };
  43618. nat.prototype.probablyPrime = function(reps) {
  43619. var $ptr, _r, _r$1, _r$10, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _ref$1, _tmp, _tmp$1, _tmp$2, _tuple, i, j, k, n, nm1, nm3, nm3Len, q, quotient, r, rand$1, reps, x, x$1, y, $s, $r;
  43620. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$10 = $f._r$10; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _r$9 = $f._r$9; _ref = $f._ref; _ref$1 = $f._ref$1; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tuple = $f._tuple; i = $f.i; j = $f.j; k = $f.k; n = $f.n; nm1 = $f.nm1; nm3 = $f.nm3; nm3Len = $f.nm3Len; q = $f.q; quotient = $f.quotient; r = $f.r; rand$1 = $f.rand$1; reps = $f.reps; x = $f.x; x$1 = $f.x$1; y = $f.y; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  43621. n = this;
  43622. if (n.$length === 0) {
  43623. return false;
  43624. }
  43625. if (n.$length === 1) {
  43626. if ((0 >= n.$length ? $throwRuntimeError("index out of range") : n.$array[n.$offset + 0]) < 2) {
  43627. return false;
  43628. }
  43629. if ((_r = (0 >= n.$length ? $throwRuntimeError("index out of range") : n.$array[n.$offset + 0]) % 2, _r === _r ? _r : $throwRuntimeError("integer divide by zero")) === 0) {
  43630. return (0 >= n.$length ? $throwRuntimeError("index out of range") : n.$array[n.$offset + 0]) === 2;
  43631. }
  43632. _ref = (0 >= n.$length ? $throwRuntimeError("index out of range") : n.$array[n.$offset + 0]);
  43633. if (_ref === 3 || _ref === 5 || _ref === 7 || _ref === 11 || _ref === 13 || _ref === 17 || _ref === 19 || _ref === 23 || _ref === 29 || _ref === 31 || _ref === 37 || _ref === 41 || _ref === 43 || _ref === 47 || _ref === 53) {
  43634. return true;
  43635. }
  43636. }
  43637. r = 0;
  43638. _ref$1 = 32;
  43639. if (_ref$1 === 32) {
  43640. r = n.modW(3234846615);
  43641. } else if (_ref$1 === 64) {
  43642. r = n.modW(820596253);
  43643. } else {
  43644. $panic(new $String("Unknown word size"));
  43645. }
  43646. if (((_r$1 = r % 3, _r$1 === _r$1 ? _r$1 : $throwRuntimeError("integer divide by zero")) === 0) || ((_r$2 = r % 5, _r$2 === _r$2 ? _r$2 : $throwRuntimeError("integer divide by zero")) === 0) || ((_r$3 = r % 7, _r$3 === _r$3 ? _r$3 : $throwRuntimeError("integer divide by zero")) === 0) || ((_r$4 = r % 11, _r$4 === _r$4 ? _r$4 : $throwRuntimeError("integer divide by zero")) === 0) || ((_r$5 = r % 13, _r$5 === _r$5 ? _r$5 : $throwRuntimeError("integer divide by zero")) === 0) || ((_r$6 = r % 17, _r$6 === _r$6 ? _r$6 : $throwRuntimeError("integer divide by zero")) === 0) || ((_r$7 = r % 19, _r$7 === _r$7 ? _r$7 : $throwRuntimeError("integer divide by zero")) === 0) || ((_r$8 = r % 23, _r$8 === _r$8 ? _r$8 : $throwRuntimeError("integer divide by zero")) === 0) || ((_r$9 = r % 29, _r$9 === _r$9 ? _r$9 : $throwRuntimeError("integer divide by zero")) === 0)) {
  43647. return false;
  43648. }
  43649. nm1 = nat.nil.sub(n, natOne);
  43650. k = nm1.trailingZeroBits();
  43651. q = nat.nil.shr(nm1, k);
  43652. nm3 = nat.nil.sub(nm1, natTwo);
  43653. rand$1 = rand.New(rand.NewSource((x = (0 >= n.$length ? $throwRuntimeError("index out of range") : n.$array[n.$offset + 0]), new $Int64(0, x.constructor === Number ? x : 1))));
  43654. _tmp = nat.nil; _tmp$1 = nat.nil; _tmp$2 = nat.nil; x$1 = _tmp; y = _tmp$1; quotient = _tmp$2;
  43655. nm3Len = nm3.bitLen();
  43656. i = 0;
  43657. /* while (true) { */ case 1:
  43658. /* if (!(i < reps)) { break; } */ if(!(i < reps)) { $s = 2; continue; }
  43659. _r$10 = x$1.random(rand$1, nm3, nm3Len); /* */ $s = 3; case 3: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
  43660. x$1 = _r$10;
  43661. x$1 = x$1.add(x$1, natTwo);
  43662. y = y.expNN(x$1, q, n);
  43663. if ((y.cmp(natOne) === 0) || (y.cmp(nm1) === 0)) {
  43664. i = i + (1) >> 0;
  43665. /* continue; */ $s = 1; continue;
  43666. }
  43667. j = 1;
  43668. while (true) {
  43669. if (!(j < k)) { break; }
  43670. y = y.mul(y, y);
  43671. _tuple = quotient.div(y, y, n); quotient = _tuple[0]; y = _tuple[1];
  43672. if (y.cmp(nm1) === 0) {
  43673. i = i + (1) >> 0;
  43674. /* continue NextRandom; */ $s = 1; continue s;
  43675. }
  43676. if (y.cmp(natOne) === 0) {
  43677. return false;
  43678. }
  43679. j = j + (1) >>> 0;
  43680. }
  43681. return false;
  43682. /* } */ $s = 1; continue; case 2:
  43683. return true;
  43684. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: nat.prototype.probablyPrime }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$10 = _r$10; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._r$9 = _r$9; $f._ref = _ref; $f._ref$1 = _ref$1; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tuple = _tuple; $f.i = i; $f.j = j; $f.k = k; $f.n = n; $f.nm1 = nm1; $f.nm3 = nm3; $f.nm3Len = nm3Len; $f.q = q; $f.quotient = quotient; $f.r = r; $f.rand$1 = rand$1; $f.reps = reps; $f.x = x; $f.x$1 = x$1; $f.y = y; $f.$s = $s; $f.$r = $r; return $f;
  43685. };
  43686. $ptrType(nat).prototype.probablyPrime = function(reps) { return this.$get().probablyPrime(reps); };
  43687. nat.prototype.bytes = function(buf) {
  43688. var $ptr, _i, _ref, buf, d, i, j, y, z;
  43689. i = 0;
  43690. z = this;
  43691. i = buf.$length;
  43692. _ref = z;
  43693. _i = 0;
  43694. while (true) {
  43695. if (!(_i < _ref.$length)) { break; }
  43696. d = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]);
  43697. j = 0;
  43698. while (true) {
  43699. if (!(j < 4)) { break; }
  43700. i = i - (1) >> 0;
  43701. ((i < 0 || i >= buf.$length) ? $throwRuntimeError("index out of range") : buf.$array[buf.$offset + i] = (d << 24 >>> 24));
  43702. d = (y = (8), y < 32 ? (d >>> y) : 0) >>> 0;
  43703. j = j + (1) >> 0;
  43704. }
  43705. _i++;
  43706. }
  43707. while (true) {
  43708. if (!(i < buf.$length && (((i < 0 || i >= buf.$length) ? $throwRuntimeError("index out of range") : buf.$array[buf.$offset + i]) === 0))) { break; }
  43709. i = i + (1) >> 0;
  43710. }
  43711. return i;
  43712. };
  43713. $ptrType(nat).prototype.bytes = function(buf) { return this.$get().bytes(buf); };
  43714. nat.prototype.setBytes = function(buf) {
  43715. var $ptr, _q, buf, d, i, k, s, x, y, z;
  43716. z = this;
  43717. z = z.make((_q = (((buf.$length + 4 >> 0) - 1 >> 0)) / 4, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")));
  43718. k = 0;
  43719. s = 0;
  43720. d = 0;
  43721. i = buf.$length;
  43722. while (true) {
  43723. if (!(i > 0)) { break; }
  43724. d = (d | (((y = s, y < 32 ? (((x = i - 1 >> 0, ((x < 0 || x >= buf.$length) ? $throwRuntimeError("index out of range") : buf.$array[buf.$offset + x])) >>> 0) << y) : 0) >>> 0))) >>> 0;
  43725. s = s + (8) >>> 0;
  43726. if (s === 32) {
  43727. ((k < 0 || k >= z.$length) ? $throwRuntimeError("index out of range") : z.$array[z.$offset + k] = d);
  43728. k = k + (1) >> 0;
  43729. s = 0;
  43730. d = 0;
  43731. }
  43732. i = i - (1) >> 0;
  43733. }
  43734. if (k < z.$length) {
  43735. ((k < 0 || k >= z.$length) ? $throwRuntimeError("index out of range") : z.$array[z.$offset + k] = d);
  43736. }
  43737. return z.norm();
  43738. };
  43739. $ptrType(nat).prototype.setBytes = function(buf) { return this.$get().setBytes(buf); };
  43740. ptrType.methods = [{prop: "Sign", name: "Sign", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "SetInt64", name: "SetInt64", pkg: "", typ: $funcType([$Int64], [ptrType], false)}, {prop: "SetUint64", name: "SetUint64", pkg: "", typ: $funcType([$Uint64], [ptrType], false)}, {prop: "Set", name: "Set", pkg: "", typ: $funcType([ptrType], [ptrType], false)}, {prop: "Bits", name: "Bits", pkg: "", typ: $funcType([], [sliceType$1], false)}, {prop: "SetBits", name: "SetBits", pkg: "", typ: $funcType([sliceType$1], [ptrType], false)}, {prop: "Abs", name: "Abs", pkg: "", typ: $funcType([ptrType], [ptrType], false)}, {prop: "Neg", name: "Neg", pkg: "", typ: $funcType([ptrType], [ptrType], false)}, {prop: "Add", name: "Add", pkg: "", typ: $funcType([ptrType, ptrType], [ptrType], false)}, {prop: "Sub", name: "Sub", pkg: "", typ: $funcType([ptrType, ptrType], [ptrType], false)}, {prop: "Mul", name: "Mul", pkg: "", typ: $funcType([ptrType, ptrType], [ptrType], false)}, {prop: "MulRange", name: "MulRange", pkg: "", typ: $funcType([$Int64, $Int64], [ptrType], false)}, {prop: "Binomial", name: "Binomial", pkg: "", typ: $funcType([$Int64, $Int64], [ptrType], false)}, {prop: "Quo", name: "Quo", pkg: "", typ: $funcType([ptrType, ptrType], [ptrType], false)}, {prop: "Rem", name: "Rem", pkg: "", typ: $funcType([ptrType, ptrType], [ptrType], false)}, {prop: "QuoRem", name: "QuoRem", pkg: "", typ: $funcType([ptrType, ptrType, ptrType], [ptrType, ptrType], false)}, {prop: "Div", name: "Div", pkg: "", typ: $funcType([ptrType, ptrType], [ptrType], false)}, {prop: "Mod", name: "Mod", pkg: "", typ: $funcType([ptrType, ptrType], [ptrType], false)}, {prop: "DivMod", name: "DivMod", pkg: "", typ: $funcType([ptrType, ptrType, ptrType], [ptrType, ptrType], false)}, {prop: "Cmp", name: "Cmp", pkg: "", typ: $funcType([ptrType], [$Int], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Format", name: "Format", pkg: "", typ: $funcType([fmt.State, $Int32], [], false)}, {prop: "scan", name: "scan", pkg: "math/big", typ: $funcType([io.RuneScanner, $Int], [ptrType, $Int, $error], false)}, {prop: "Scan", name: "Scan", pkg: "", typ: $funcType([fmt.ScanState, $Int32], [$error], false)}, {prop: "Int64", name: "Int64", pkg: "", typ: $funcType([], [$Int64], false)}, {prop: "Uint64", name: "Uint64", pkg: "", typ: $funcType([], [$Uint64], false)}, {prop: "SetString", name: "SetString", pkg: "", typ: $funcType([$String, $Int], [ptrType, $Bool], false)}, {prop: "SetBytes", name: "SetBytes", pkg: "", typ: $funcType([sliceType], [ptrType], false)}, {prop: "Bytes", name: "Bytes", pkg: "", typ: $funcType([], [sliceType], false)}, {prop: "BitLen", name: "BitLen", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Exp", name: "Exp", pkg: "", typ: $funcType([ptrType, ptrType, ptrType], [ptrType], false)}, {prop: "GCD", name: "GCD", pkg: "", typ: $funcType([ptrType, ptrType, ptrType, ptrType], [ptrType], false)}, {prop: "binaryGCD", name: "binaryGCD", pkg: "math/big", typ: $funcType([ptrType, ptrType], [ptrType], false)}, {prop: "ProbablyPrime", name: "ProbablyPrime", pkg: "", typ: $funcType([$Int], [$Bool], false)}, {prop: "Rand", name: "Rand", pkg: "", typ: $funcType([ptrType$4, ptrType], [ptrType], false)}, {prop: "ModInverse", name: "ModInverse", pkg: "", typ: $funcType([ptrType, ptrType], [ptrType], false)}, {prop: "Lsh", name: "Lsh", pkg: "", typ: $funcType([ptrType, $Uint], [ptrType], false)}, {prop: "Rsh", name: "Rsh", pkg: "", typ: $funcType([ptrType, $Uint], [ptrType], false)}, {prop: "Bit", name: "Bit", pkg: "", typ: $funcType([$Int], [$Uint], false)}, {prop: "SetBit", name: "SetBit", pkg: "", typ: $funcType([ptrType, $Int, $Uint], [ptrType], false)}, {prop: "And", name: "And", pkg: "", typ: $funcType([ptrType, ptrType], [ptrType], false)}, {prop: "AndNot", name: "AndNot", pkg: "", typ: $funcType([ptrType, ptrType], [ptrType], false)}, {prop: "Or", name: "Or", pkg: "", typ: $funcType([ptrType, ptrType], [ptrType], false)}, {prop: "Xor", name: "Xor", pkg: "", typ: $funcType([ptrType, ptrType], [ptrType], false)}, {prop: "Not", name: "Not", pkg: "", typ: $funcType([ptrType], [ptrType], false)}, {prop: "GobEncode", name: "GobEncode", pkg: "", typ: $funcType([], [sliceType, $error], false)}, {prop: "GobDecode", name: "GobDecode", pkg: "", typ: $funcType([sliceType], [$error], false)}, {prop: "MarshalJSON", name: "MarshalJSON", pkg: "", typ: $funcType([], [sliceType, $error], false)}, {prop: "UnmarshalJSON", name: "UnmarshalJSON", pkg: "", typ: $funcType([sliceType], [$error], false)}, {prop: "MarshalText", name: "MarshalText", pkg: "", typ: $funcType([], [sliceType, $error], false)}, {prop: "UnmarshalText", name: "UnmarshalText", pkg: "", typ: $funcType([sliceType], [$error], false)}];
  43741. nat.methods = [{prop: "clear", name: "clear", pkg: "math/big", typ: $funcType([], [], false)}, {prop: "norm", name: "norm", pkg: "math/big", typ: $funcType([], [nat], false)}, {prop: "make", name: "make", pkg: "math/big", typ: $funcType([$Int], [nat], false)}, {prop: "setWord", name: "setWord", pkg: "math/big", typ: $funcType([Word], [nat], false)}, {prop: "setUint64", name: "setUint64", pkg: "math/big", typ: $funcType([$Uint64], [nat], false)}, {prop: "set", name: "set", pkg: "math/big", typ: $funcType([nat], [nat], false)}, {prop: "add", name: "add", pkg: "math/big", typ: $funcType([nat, nat], [nat], false)}, {prop: "sub", name: "sub", pkg: "math/big", typ: $funcType([nat, nat], [nat], false)}, {prop: "cmp", name: "cmp", pkg: "math/big", typ: $funcType([nat], [$Int], false)}, {prop: "mulAddWW", name: "mulAddWW", pkg: "math/big", typ: $funcType([nat, Word, Word], [nat], false)}, {prop: "mul", name: "mul", pkg: "math/big", typ: $funcType([nat, nat], [nat], false)}, {prop: "mulRange", name: "mulRange", pkg: "math/big", typ: $funcType([$Uint64, $Uint64], [nat], false)}, {prop: "divW", name: "divW", pkg: "math/big", typ: $funcType([nat, Word], [nat, Word], false)}, {prop: "div", name: "div", pkg: "math/big", typ: $funcType([nat, nat, nat], [nat, nat], false)}, {prop: "divLarge", name: "divLarge", pkg: "math/big", typ: $funcType([nat, nat, nat], [nat, nat], false)}, {prop: "bitLen", name: "bitLen", pkg: "math/big", typ: $funcType([], [$Int], false)}, {prop: "scan", name: "scan", pkg: "math/big", typ: $funcType([io.RuneScanner, $Int], [nat, $Int, $error], false)}, {prop: "decimalString", name: "decimalString", pkg: "math/big", typ: $funcType([], [$String], false)}, {prop: "string", name: "string", pkg: "math/big", typ: $funcType([$String], [$String], false)}, {prop: "convertWords", name: "convertWords", pkg: "math/big", typ: $funcType([sliceType, $String, Word, $Int, Word, sliceType$3], [], false)}, {prop: "expWW", name: "expWW", pkg: "math/big", typ: $funcType([Word, Word], [nat], false)}, {prop: "trailingZeroBits", name: "trailingZeroBits", pkg: "math/big", typ: $funcType([], [$Uint], false)}, {prop: "shl", name: "shl", pkg: "math/big", typ: $funcType([nat, $Uint], [nat], false)}, {prop: "shr", name: "shr", pkg: "math/big", typ: $funcType([nat, $Uint], [nat], false)}, {prop: "setBit", name: "setBit", pkg: "math/big", typ: $funcType([nat, $Uint, $Uint], [nat], false)}, {prop: "bit", name: "bit", pkg: "math/big", typ: $funcType([$Uint], [$Uint], false)}, {prop: "and", name: "and", pkg: "math/big", typ: $funcType([nat, nat], [nat], false)}, {prop: "andNot", name: "andNot", pkg: "math/big", typ: $funcType([nat, nat], [nat], false)}, {prop: "or", name: "or", pkg: "math/big", typ: $funcType([nat, nat], [nat], false)}, {prop: "xor", name: "xor", pkg: "math/big", typ: $funcType([nat, nat], [nat], false)}, {prop: "modW", name: "modW", pkg: "math/big", typ: $funcType([Word], [Word], false)}, {prop: "random", name: "random", pkg: "math/big", typ: $funcType([ptrType$4, nat, $Int], [nat], false)}, {prop: "expNN", name: "expNN", pkg: "math/big", typ: $funcType([nat, nat, nat], [nat], false)}, {prop: "expNNWindowed", name: "expNNWindowed", pkg: "math/big", typ: $funcType([nat, nat, nat], [nat], false)}, {prop: "probablyPrime", name: "probablyPrime", pkg: "math/big", typ: $funcType([$Int], [$Bool], false)}, {prop: "bytes", name: "bytes", pkg: "math/big", typ: $funcType([sliceType], [$Int], false)}, {prop: "setBytes", name: "setBytes", pkg: "math/big", typ: $funcType([sliceType], [nat], false)}];
  43742. Int.init([{prop: "neg", name: "neg", pkg: "math/big", typ: $Bool, tag: ""}, {prop: "abs", name: "abs", pkg: "math/big", typ: nat, tag: ""}]);
  43743. nat.init(Word);
  43744. divisor.init([{prop: "bbb", name: "bbb", pkg: "math/big", typ: nat, tag: ""}, {prop: "nbits", name: "nbits", pkg: "math/big", typ: $Int, tag: ""}, {prop: "ndigits", name: "ndigits", pkg: "math/big", typ: $Int, tag: ""}]);
  43745. $init = function() {
  43746. $pkg.$init = function() {};
  43747. /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  43748. $r = binary.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  43749. $r = errors.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  43750. $r = fmt.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  43751. $r = nosync.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  43752. $r = io.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  43753. $r = math.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  43754. $r = rand.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  43755. $r = strings.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  43756. cacheBase10 = new structType.ptr();
  43757. natOne = new nat([1]);
  43758. intOne = new Int.ptr(false, natOne);
  43759. natTwo = new nat([2]);
  43760. karatsubaThreshold = 40;
  43761. leafSize = 8;
  43762. deBruijn32Lookup = new sliceType([0, 1, 28, 2, 29, 14, 24, 3, 30, 22, 20, 15, 25, 17, 4, 8, 31, 27, 13, 23, 21, 19, 16, 7, 26, 12, 18, 6, 11, 5, 10, 9]);
  43763. deBruijn64Lookup = new sliceType([0, 1, 56, 2, 57, 49, 28, 3, 61, 58, 42, 50, 38, 29, 17, 4, 62, 47, 59, 36, 45, 43, 51, 22, 53, 39, 33, 30, 24, 18, 12, 5, 63, 55, 48, 27, 60, 41, 37, 16, 46, 35, 44, 21, 52, 32, 23, 11, 54, 26, 40, 15, 34, 20, 31, 10, 25, 14, 19, 9, 13, 8, 7, 6]);
  43764. /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
  43765. };
  43766. $pkg.$init = $init;
  43767. return $pkg;
  43768. })();
  43769. $packages["crypto/elliptic"] = (function() {
  43770. var $pkg = {}, $init, io, big, sync, Curve, CurveParams, p224Curve, p224FieldElement, p224LargeFieldElement, p256Curve, ptrType, ptrType$1, sliceType, sliceType$1, arrayType, arrayType$1, arrayType$2, arrayType$3, arrayType$4, arrayType$5, arrayType$6, mask, initonce, p384, p521, p224, p224P, p224ZeroModP31, p224ZeroModP63, p256, p256RInverse, p256One, p256One_ptr, p256Precomputed, p256Zero31, zForAffine, GenerateKey, Marshal, Unmarshal, initAll, initP384, initP521, P256, P384, P521, initP224, P224, p224IsZero, p224Add, p224Sub, p224Mul, p224Square, p224ReduceLarge, p224Reduce, p224Invert, p224Contract, p224AddJacobian, p224DoubleJacobian, p224CopyConditional, p224ScalarMult, p224ToAffine, get28BitsFromEnd, p224FromBig, p224ToBig, initP256, p256GetScalar, nonZeroToAllOnes, p256ReduceCarry, p256Sum, p256Diff, p256ReduceDegree, p256Square, p256Mul, p256Assign, p256Invert, p256Scalar3, p256Scalar4, p256Scalar8, p256PointDouble, p256PointAddMixed, p256PointAdd, p256CopyConditional, p256SelectAffinePoint, p256SelectJacobianPoint, p256GetBit, p256ScalarBaseMult, p256PointToAffine, p256ToAffine, p256ScalarMult, p256FromBig, p256ToBig;
  43771. io = $packages["io"];
  43772. big = $packages["math/big"];
  43773. sync = $packages["sync"];
  43774. Curve = $pkg.Curve = $newType(8, $kindInterface, "elliptic.Curve", "Curve", "crypto/elliptic", null);
  43775. CurveParams = $pkg.CurveParams = $newType(0, $kindStruct, "elliptic.CurveParams", "CurveParams", "crypto/elliptic", function(P_, N_, B_, Gx_, Gy_, BitSize_) {
  43776. this.$val = this;
  43777. if (arguments.length === 0) {
  43778. this.P = ptrType$1.nil;
  43779. this.N = ptrType$1.nil;
  43780. this.B = ptrType$1.nil;
  43781. this.Gx = ptrType$1.nil;
  43782. this.Gy = ptrType$1.nil;
  43783. this.BitSize = 0;
  43784. return;
  43785. }
  43786. this.P = P_;
  43787. this.N = N_;
  43788. this.B = B_;
  43789. this.Gx = Gx_;
  43790. this.Gy = Gy_;
  43791. this.BitSize = BitSize_;
  43792. });
  43793. p224Curve = $pkg.p224Curve = $newType(0, $kindStruct, "elliptic.p224Curve", "p224Curve", "crypto/elliptic", function(CurveParams_, gx_, gy_, b_) {
  43794. this.$val = this;
  43795. if (arguments.length === 0) {
  43796. this.CurveParams = ptrType.nil;
  43797. this.gx = p224FieldElement.zero();
  43798. this.gy = p224FieldElement.zero();
  43799. this.b = p224FieldElement.zero();
  43800. return;
  43801. }
  43802. this.CurveParams = CurveParams_;
  43803. this.gx = gx_;
  43804. this.gy = gy_;
  43805. this.b = b_;
  43806. });
  43807. p224FieldElement = $pkg.p224FieldElement = $newType(32, $kindArray, "elliptic.p224FieldElement", "p224FieldElement", "crypto/elliptic", null);
  43808. p224LargeFieldElement = $pkg.p224LargeFieldElement = $newType(120, $kindArray, "elliptic.p224LargeFieldElement", "p224LargeFieldElement", "crypto/elliptic", null);
  43809. p256Curve = $pkg.p256Curve = $newType(0, $kindStruct, "elliptic.p256Curve", "p256Curve", "crypto/elliptic", function(CurveParams_) {
  43810. this.$val = this;
  43811. if (arguments.length === 0) {
  43812. this.CurveParams = ptrType.nil;
  43813. return;
  43814. }
  43815. this.CurveParams = CurveParams_;
  43816. });
  43817. ptrType = $ptrType(CurveParams);
  43818. ptrType$1 = $ptrType(big.Int);
  43819. sliceType = $sliceType($Uint8);
  43820. sliceType$1 = $sliceType($Uint32);
  43821. arrayType = $arrayType($Uint8, 28);
  43822. arrayType$1 = $arrayType($Uint8, 32);
  43823. arrayType$2 = $arrayType($Uint32, 9);
  43824. arrayType$3 = $arrayType($Uint64, 17);
  43825. arrayType$4 = $arrayType($Uint32, 18);
  43826. arrayType$5 = $arrayType(arrayType$2, 3);
  43827. arrayType$6 = $arrayType(arrayType$5, 16);
  43828. CurveParams.ptr.prototype.Params = function() {
  43829. var $ptr, curve;
  43830. curve = this;
  43831. return curve;
  43832. };
  43833. CurveParams.prototype.Params = function() { return this.$val.Params(); };
  43834. CurveParams.ptr.prototype.IsOnCurve = function(x, y) {
  43835. var $ptr, curve, threeX, x, x3, y, y2;
  43836. curve = this;
  43837. y2 = new big.Int.ptr().Mul(y, y);
  43838. y2.Mod(y2, curve.P);
  43839. x3 = new big.Int.ptr().Mul(x, x);
  43840. x3.Mul(x3, x);
  43841. threeX = new big.Int.ptr().Lsh(x, 1);
  43842. threeX.Add(threeX, x);
  43843. x3.Sub(x3, threeX);
  43844. x3.Add(x3, curve.B);
  43845. x3.Mod(x3, curve.P);
  43846. return x3.Cmp(y2) === 0;
  43847. };
  43848. CurveParams.prototype.IsOnCurve = function(x, y) { return this.$val.IsOnCurve(x, y); };
  43849. zForAffine = function(x, y) {
  43850. var $ptr, x, y, z;
  43851. z = new big.Int.ptr();
  43852. if (!((x.Sign() === 0)) || !((y.Sign() === 0))) {
  43853. z.SetInt64(new $Int64(0, 1));
  43854. }
  43855. return z;
  43856. };
  43857. CurveParams.ptr.prototype.affineFromJacobian = function(x, y, z) {
  43858. var $ptr, _tmp, _tmp$1, curve, x, xOut, y, yOut, z, zinv, zinvsq;
  43859. xOut = ptrType$1.nil;
  43860. yOut = ptrType$1.nil;
  43861. curve = this;
  43862. if (z.Sign() === 0) {
  43863. _tmp = new big.Int.ptr(); _tmp$1 = new big.Int.ptr(); xOut = _tmp; yOut = _tmp$1;
  43864. return [xOut, yOut];
  43865. }
  43866. zinv = new big.Int.ptr().ModInverse(z, curve.P);
  43867. zinvsq = new big.Int.ptr().Mul(zinv, zinv);
  43868. xOut = new big.Int.ptr().Mul(x, zinvsq);
  43869. xOut.Mod(xOut, curve.P);
  43870. zinvsq.Mul(zinvsq, zinv);
  43871. yOut = new big.Int.ptr().Mul(y, zinvsq);
  43872. yOut.Mod(yOut, curve.P);
  43873. return [xOut, yOut];
  43874. };
  43875. CurveParams.prototype.affineFromJacobian = function(x, y, z) { return this.$val.affineFromJacobian(x, y, z); };
  43876. CurveParams.ptr.prototype.Add = function(x1, y1, x2, y2) {
  43877. var $ptr, _tuple, curve, x1, x2, y1, y2, z1, z2;
  43878. curve = this;
  43879. z1 = zForAffine(x1, y1);
  43880. z2 = zForAffine(x2, y2);
  43881. _tuple = curve.addJacobian(x1, y1, z1, x2, y2, z2);
  43882. return curve.affineFromJacobian(_tuple[0], _tuple[1], _tuple[2]);
  43883. };
  43884. CurveParams.prototype.Add = function(x1, y1, x2, y2) { return this.$val.Add(x1, y1, x2, y2); };
  43885. CurveParams.ptr.prototype.addJacobian = function(x1, y1, z1, x2, y2, z2) {
  43886. var $ptr, _tmp, _tmp$1, _tmp$2, curve, h, i, j, r, s1, s2, u1, u2, v, x1, x2, x3, xEqual, y1, y2, y3, yEqual, z1, z1z1, z2, z2z2, z3;
  43887. curve = this;
  43888. _tmp = new big.Int.ptr(); _tmp$1 = new big.Int.ptr(); _tmp$2 = new big.Int.ptr(); x3 = _tmp; y3 = _tmp$1; z3 = _tmp$2;
  43889. if (z1.Sign() === 0) {
  43890. x3.Set(x2);
  43891. y3.Set(y2);
  43892. z3.Set(z2);
  43893. return [x3, y3, z3];
  43894. }
  43895. if (z2.Sign() === 0) {
  43896. x3.Set(x1);
  43897. y3.Set(y1);
  43898. z3.Set(z1);
  43899. return [x3, y3, z3];
  43900. }
  43901. z1z1 = new big.Int.ptr().Mul(z1, z1);
  43902. z1z1.Mod(z1z1, curve.P);
  43903. z2z2 = new big.Int.ptr().Mul(z2, z2);
  43904. z2z2.Mod(z2z2, curve.P);
  43905. u1 = new big.Int.ptr().Mul(x1, z2z2);
  43906. u1.Mod(u1, curve.P);
  43907. u2 = new big.Int.ptr().Mul(x2, z1z1);
  43908. u2.Mod(u2, curve.P);
  43909. h = new big.Int.ptr().Sub(u2, u1);
  43910. xEqual = h.Sign() === 0;
  43911. if (h.Sign() === -1) {
  43912. h.Add(h, curve.P);
  43913. }
  43914. i = new big.Int.ptr().Lsh(h, 1);
  43915. i.Mul(i, i);
  43916. j = new big.Int.ptr().Mul(h, i);
  43917. s1 = new big.Int.ptr().Mul(y1, z2);
  43918. s1.Mul(s1, z2z2);
  43919. s1.Mod(s1, curve.P);
  43920. s2 = new big.Int.ptr().Mul(y2, z1);
  43921. s2.Mul(s2, z1z1);
  43922. s2.Mod(s2, curve.P);
  43923. r = new big.Int.ptr().Sub(s2, s1);
  43924. if (r.Sign() === -1) {
  43925. r.Add(r, curve.P);
  43926. }
  43927. yEqual = r.Sign() === 0;
  43928. if (xEqual && yEqual) {
  43929. return curve.doubleJacobian(x1, y1, z1);
  43930. }
  43931. r.Lsh(r, 1);
  43932. v = new big.Int.ptr().Mul(u1, i);
  43933. x3.Set(r);
  43934. x3.Mul(x3, x3);
  43935. x3.Sub(x3, j);
  43936. x3.Sub(x3, v);
  43937. x3.Sub(x3, v);
  43938. x3.Mod(x3, curve.P);
  43939. y3.Set(r);
  43940. v.Sub(v, x3);
  43941. y3.Mul(y3, v);
  43942. s1.Mul(s1, j);
  43943. s1.Lsh(s1, 1);
  43944. y3.Sub(y3, s1);
  43945. y3.Mod(y3, curve.P);
  43946. z3.Add(z1, z2);
  43947. z3.Mul(z3, z3);
  43948. z3.Sub(z3, z1z1);
  43949. z3.Sub(z3, z2z2);
  43950. z3.Mul(z3, h);
  43951. z3.Mod(z3, curve.P);
  43952. return [x3, y3, z3];
  43953. };
  43954. CurveParams.prototype.addJacobian = function(x1, y1, z1, x2, y2, z2) { return this.$val.addJacobian(x1, y1, z1, x2, y2, z2); };
  43955. CurveParams.ptr.prototype.Double = function(x1, y1) {
  43956. var $ptr, _tuple, curve, x1, y1, z1;
  43957. curve = this;
  43958. z1 = zForAffine(x1, y1);
  43959. _tuple = curve.doubleJacobian(x1, y1, z1);
  43960. return curve.affineFromJacobian(_tuple[0], _tuple[1], _tuple[2]);
  43961. };
  43962. CurveParams.prototype.Double = function(x1, y1) { return this.$val.Double(x1, y1); };
  43963. CurveParams.ptr.prototype.doubleJacobian = function(x, y, z) {
  43964. var $ptr, alpha, alpha2, beta, beta8, curve, delta, gamma, x, x3, y, y3, z, z3;
  43965. curve = this;
  43966. delta = new big.Int.ptr().Mul(z, z);
  43967. delta.Mod(delta, curve.P);
  43968. gamma = new big.Int.ptr().Mul(y, y);
  43969. gamma.Mod(gamma, curve.P);
  43970. alpha = new big.Int.ptr().Sub(x, delta);
  43971. if (alpha.Sign() === -1) {
  43972. alpha.Add(alpha, curve.P);
  43973. }
  43974. alpha2 = new big.Int.ptr().Add(x, delta);
  43975. alpha.Mul(alpha, alpha2);
  43976. alpha2.Set(alpha);
  43977. alpha.Lsh(alpha, 1);
  43978. alpha.Add(alpha, alpha2);
  43979. beta = alpha2.Mul(x, gamma);
  43980. x3 = new big.Int.ptr().Mul(alpha, alpha);
  43981. beta8 = new big.Int.ptr().Lsh(beta, 3);
  43982. x3.Sub(x3, beta8);
  43983. while (true) {
  43984. if (!(x3.Sign() === -1)) { break; }
  43985. x3.Add(x3, curve.P);
  43986. }
  43987. x3.Mod(x3, curve.P);
  43988. z3 = new big.Int.ptr().Add(y, z);
  43989. z3.Mul(z3, z3);
  43990. z3.Sub(z3, gamma);
  43991. if (z3.Sign() === -1) {
  43992. z3.Add(z3, curve.P);
  43993. }
  43994. z3.Sub(z3, delta);
  43995. if (z3.Sign() === -1) {
  43996. z3.Add(z3, curve.P);
  43997. }
  43998. z3.Mod(z3, curve.P);
  43999. beta.Lsh(beta, 2);
  44000. beta.Sub(beta, x3);
  44001. if (beta.Sign() === -1) {
  44002. beta.Add(beta, curve.P);
  44003. }
  44004. y3 = alpha.Mul(alpha, beta);
  44005. gamma.Mul(gamma, gamma);
  44006. gamma.Lsh(gamma, 3);
  44007. gamma.Mod(gamma, curve.P);
  44008. y3.Sub(y3, gamma);
  44009. if (y3.Sign() === -1) {
  44010. y3.Add(y3, curve.P);
  44011. }
  44012. y3.Mod(y3, curve.P);
  44013. return [x3, y3, z3];
  44014. };
  44015. CurveParams.prototype.doubleJacobian = function(x, y, z) { return this.$val.doubleJacobian(x, y, z); };
  44016. CurveParams.ptr.prototype.ScalarMult = function(Bx, By, k) {
  44017. var $ptr, Bx, By, Bz, _i, _ref, _tmp, _tmp$1, _tmp$2, _tuple, _tuple$1, bitNum, byte$1, curve, k, x, y, y$1, z;
  44018. curve = this;
  44019. Bz = new big.Int.ptr().SetInt64(new $Int64(0, 1));
  44020. _tmp = new big.Int.ptr(); _tmp$1 = new big.Int.ptr(); _tmp$2 = new big.Int.ptr(); x = _tmp; y = _tmp$1; z = _tmp$2;
  44021. _ref = k;
  44022. _i = 0;
  44023. while (true) {
  44024. if (!(_i < _ref.$length)) { break; }
  44025. byte$1 = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]);
  44026. bitNum = 0;
  44027. while (true) {
  44028. if (!(bitNum < 8)) { break; }
  44029. _tuple = curve.doubleJacobian(x, y, z); x = _tuple[0]; y = _tuple[1]; z = _tuple[2];
  44030. if (((byte$1 & 128) >>> 0) === 128) {
  44031. _tuple$1 = curve.addJacobian(Bx, By, Bz, x, y, z); x = _tuple$1[0]; y = _tuple$1[1]; z = _tuple$1[2];
  44032. }
  44033. byte$1 = (y$1 = (1), y$1 < 32 ? (byte$1 << y$1) : 0) << 24 >>> 24;
  44034. bitNum = bitNum + (1) >> 0;
  44035. }
  44036. _i++;
  44037. }
  44038. return curve.affineFromJacobian(x, y, z);
  44039. };
  44040. CurveParams.prototype.ScalarMult = function(Bx, By, k) { return this.$val.ScalarMult(Bx, By, k); };
  44041. CurveParams.ptr.prototype.ScalarBaseMult = function(k) {
  44042. var $ptr, curve, k;
  44043. curve = this;
  44044. return curve.ScalarMult(curve.Gx, curve.Gy, k);
  44045. };
  44046. CurveParams.prototype.ScalarBaseMult = function(k) { return this.$val.ScalarBaseMult(k); };
  44047. GenerateKey = function(curve, rand) {
  44048. var $ptr, _r, _r$1, _r$2, _r$3, _tuple, _tuple$1, bitSize, byteLen, curve, err, priv, rand, x, x$1, y, $s, $r;
  44049. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; bitSize = $f.bitSize; byteLen = $f.byteLen; curve = $f.curve; err = $f.err; priv = $f.priv; rand = $f.rand; x = $f.x; x$1 = $f.x$1; y = $f.y; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  44050. priv = sliceType.nil;
  44051. x = ptrType$1.nil;
  44052. y = ptrType$1.nil;
  44053. err = $ifaceNil;
  44054. _r = curve.Params(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  44055. bitSize = _r.BitSize;
  44056. byteLen = ((bitSize + 7 >> 0)) >> 3 >> 0;
  44057. priv = $makeSlice(sliceType, byteLen);
  44058. /* while (true) { */ case 2:
  44059. /* if (!(x === ptrType$1.nil)) { break; } */ if(!(x === ptrType$1.nil)) { $s = 3; continue; }
  44060. _r$1 = io.ReadFull(rand, priv); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  44061. _tuple = _r$1; err = _tuple[1];
  44062. if (!($interfaceIsEqual(err, $ifaceNil))) {
  44063. return [priv, x, y, err];
  44064. }
  44065. (0 >= priv.$length ? $throwRuntimeError("index out of range") : priv.$array[priv.$offset + 0] = ((0 >= priv.$length ? $throwRuntimeError("index out of range") : priv.$array[priv.$offset + 0]) & ((x$1 = (_r$2 = bitSize % 8, _r$2 === _r$2 ? _r$2 : $throwRuntimeError("integer divide by zero")), ((x$1 < 0 || x$1 >= mask.$length) ? $throwRuntimeError("index out of range") : mask.$array[mask.$offset + x$1])))) >>> 0);
  44066. (1 >= priv.$length ? $throwRuntimeError("index out of range") : priv.$array[priv.$offset + 1] = ((1 >= priv.$length ? $throwRuntimeError("index out of range") : priv.$array[priv.$offset + 1]) ^ (66)) << 24 >>> 24);
  44067. _r$3 = curve.ScalarBaseMult(priv); /* */ $s = 5; case 5: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  44068. _tuple$1 = _r$3; x = _tuple$1[0]; y = _tuple$1[1];
  44069. /* } */ $s = 2; continue; case 3:
  44070. return [priv, x, y, err];
  44071. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: GenerateKey }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.bitSize = bitSize; $f.byteLen = byteLen; $f.curve = curve; $f.err = err; $f.priv = priv; $f.rand = rand; $f.x = x; $f.x$1 = x$1; $f.y = y; $f.$s = $s; $f.$r = $r; return $f;
  44072. };
  44073. $pkg.GenerateKey = GenerateKey;
  44074. Marshal = function(curve, x, y) {
  44075. var $ptr, _r, byteLen, curve, ret, x, xBytes, y, yBytes, $s, $r;
  44076. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; byteLen = $f.byteLen; curve = $f.curve; ret = $f.ret; x = $f.x; xBytes = $f.xBytes; y = $f.y; yBytes = $f.yBytes; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  44077. _r = curve.Params(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  44078. byteLen = ((_r.BitSize + 7 >> 0)) >> 3 >> 0;
  44079. ret = $makeSlice(sliceType, (1 + (2 * byteLen >> 0) >> 0));
  44080. (0 >= ret.$length ? $throwRuntimeError("index out of range") : ret.$array[ret.$offset + 0] = 4);
  44081. xBytes = x.Bytes();
  44082. $copySlice($subslice(ret, ((1 + byteLen >> 0) - xBytes.$length >> 0)), xBytes);
  44083. yBytes = y.Bytes();
  44084. $copySlice($subslice(ret, ((1 + (2 * byteLen >> 0) >> 0) - yBytes.$length >> 0)), yBytes);
  44085. return ret;
  44086. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Marshal }; } $f.$ptr = $ptr; $f._r = _r; $f.byteLen = byteLen; $f.curve = curve; $f.ret = ret; $f.x = x; $f.xBytes = xBytes; $f.y = y; $f.yBytes = yBytes; $f.$s = $s; $f.$r = $r; return $f;
  44087. };
  44088. $pkg.Marshal = Marshal;
  44089. Unmarshal = function(curve, data) {
  44090. var $ptr, _r, byteLen, curve, data, x, y, $s, $r;
  44091. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; byteLen = $f.byteLen; curve = $f.curve; data = $f.data; x = $f.x; y = $f.y; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  44092. x = ptrType$1.nil;
  44093. y = ptrType$1.nil;
  44094. _r = curve.Params(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  44095. byteLen = ((_r.BitSize + 7 >> 0)) >> 3 >> 0;
  44096. if (!((data.$length === (1 + (2 * byteLen >> 0) >> 0)))) {
  44097. return [x, y];
  44098. }
  44099. if (!(((0 >= data.$length ? $throwRuntimeError("index out of range") : data.$array[data.$offset + 0]) === 4))) {
  44100. return [x, y];
  44101. }
  44102. x = new big.Int.ptr().SetBytes($subslice(data, 1, (1 + byteLen >> 0)));
  44103. y = new big.Int.ptr().SetBytes($subslice(data, (1 + byteLen >> 0)));
  44104. return [x, y];
  44105. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Unmarshal }; } $f.$ptr = $ptr; $f._r = _r; $f.byteLen = byteLen; $f.curve = curve; $f.data = data; $f.x = x; $f.y = y; $f.$s = $s; $f.$r = $r; return $f;
  44106. };
  44107. $pkg.Unmarshal = Unmarshal;
  44108. initAll = function() {
  44109. var $ptr, $s, $r;
  44110. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  44111. $r = initP224(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  44112. $r = initP256(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  44113. $r = initP384(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  44114. $r = initP521(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  44115. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: initAll }; } $f.$ptr = $ptr; $f.$s = $s; $f.$r = $r; return $f;
  44116. };
  44117. initP384 = function() {
  44118. var $ptr, _r, _r$1, _r$2, _r$3, _r$4, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, $s, $r;
  44119. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; _tuple$4 = $f._tuple$4; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  44120. p384 = new CurveParams.ptr();
  44121. _r = new big.Int.ptr().SetString("39402006196394479212279040100143613805079739270465446667948293404245721771496870329047266088258938001861606973112319", 10); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  44122. _tuple = _r; p384.P = _tuple[0];
  44123. _r$1 = new big.Int.ptr().SetString("39402006196394479212279040100143613805079739270465446667946905279627659399113263569398956308152294913554433653942643", 10); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  44124. _tuple$1 = _r$1; p384.N = _tuple$1[0];
  44125. _r$2 = new big.Int.ptr().SetString("b3312fa7e23ee7e4988e056be3f82d19181d9c6efe8141120314088f5013875ac656398d8a2ed19d2a85c8edd3ec2aef", 16); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  44126. _tuple$2 = _r$2; p384.B = _tuple$2[0];
  44127. _r$3 = new big.Int.ptr().SetString("aa87ca22be8b05378eb1c71ef320ad746e1d3b628ba79b9859f741e082542a385502f25dbf55296c3a545e3872760ab7", 16); /* */ $s = 4; case 4: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  44128. _tuple$3 = _r$3; p384.Gx = _tuple$3[0];
  44129. _r$4 = new big.Int.ptr().SetString("3617de4a96262c6f5d9e98bf9292dc29f8f41dbd289a147ce9da3113b5f0b8c00a60b1ce1d7e819d7a431d7c90ea0e5f", 16); /* */ $s = 5; case 5: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
  44130. _tuple$4 = _r$4; p384.Gy = _tuple$4[0];
  44131. p384.BitSize = 384;
  44132. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: initP384 }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f._tuple$4 = _tuple$4; $f.$s = $s; $f.$r = $r; return $f;
  44133. };
  44134. initP521 = function() {
  44135. var $ptr, _r, _r$1, _r$2, _r$3, _r$4, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, $s, $r;
  44136. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; _tuple$4 = $f._tuple$4; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  44137. p521 = new CurveParams.ptr();
  44138. _r = new big.Int.ptr().SetString("6864797660130609714981900799081393217269435300143305409394463459185543183397656052122559640661454554977296311391480858037121987999716643812574028291115057151", 10); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  44139. _tuple = _r; p521.P = _tuple[0];
  44140. _r$1 = new big.Int.ptr().SetString("6864797660130609714981900799081393217269435300143305409394463459185543183397655394245057746333217197532963996371363321113864768612440380340372808892707005449", 10); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  44141. _tuple$1 = _r$1; p521.N = _tuple$1[0];
  44142. _r$2 = new big.Int.ptr().SetString("051953eb9618e1c9a1f929a21a0b68540eea2da725b99b315f3b8b489918ef109e156193951ec7e937b1652c0bd3bb1bf073573df883d2c34f1ef451fd46b503f00", 16); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  44143. _tuple$2 = _r$2; p521.B = _tuple$2[0];
  44144. _r$3 = new big.Int.ptr().SetString("c6858e06b70404e9cd9e3ecb662395b4429c648139053fb521f828af606b4d3dbaa14b5e77efe75928fe1dc127a2ffa8de3348b3c1856a429bf97e7e31c2e5bd66", 16); /* */ $s = 4; case 4: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  44145. _tuple$3 = _r$3; p521.Gx = _tuple$3[0];
  44146. _r$4 = new big.Int.ptr().SetString("11839296a789a3bc0045c8a5fb42c7d1bd998f54449579b446817afbd17273e662c97ee72995ef42640c550b9013fad0761353c7086a272c24088be94769fd16650", 16); /* */ $s = 5; case 5: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
  44147. _tuple$4 = _r$4; p521.Gy = _tuple$4[0];
  44148. p521.BitSize = 521;
  44149. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: initP521 }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f._tuple$4 = _tuple$4; $f.$s = $s; $f.$r = $r; return $f;
  44150. };
  44151. P256 = function() {
  44152. var $ptr, $s, $r;
  44153. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  44154. $r = initonce.Do(initAll); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  44155. return new p256.constructor.elem(p256);
  44156. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: P256 }; } $f.$ptr = $ptr; $f.$s = $s; $f.$r = $r; return $f;
  44157. };
  44158. $pkg.P256 = P256;
  44159. P384 = function() {
  44160. var $ptr, $s, $r;
  44161. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  44162. $r = initonce.Do(initAll); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  44163. return p384;
  44164. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: P384 }; } $f.$ptr = $ptr; $f.$s = $s; $f.$r = $r; return $f;
  44165. };
  44166. $pkg.P384 = P384;
  44167. P521 = function() {
  44168. var $ptr, $s, $r;
  44169. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  44170. $r = initonce.Do(initAll); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  44171. return p521;
  44172. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: P521 }; } $f.$ptr = $ptr; $f.$s = $s; $f.$r = $r; return $f;
  44173. };
  44174. $pkg.P521 = P521;
  44175. initP224 = function() {
  44176. var $ptr, _r, _r$1, _r$2, _r$3, _r$4, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, $s, $r;
  44177. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; _tuple$4 = $f._tuple$4; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  44178. p224.CurveParams = new CurveParams.ptr();
  44179. _r = new big.Int.ptr().SetString("26959946667150639794667015087019630673557916260026308143510066298881", 10); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  44180. _tuple = _r; p224.CurveParams.P = _tuple[0];
  44181. _r$1 = new big.Int.ptr().SetString("26959946667150639794667015087019625940457807714424391721682722368061", 10); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  44182. _tuple$1 = _r$1; p224.CurveParams.N = _tuple$1[0];
  44183. _r$2 = new big.Int.ptr().SetString("b4050a850c04b3abf54132565044b0b7d7bfd8ba270b39432355ffb4", 16); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  44184. _tuple$2 = _r$2; p224.CurveParams.B = _tuple$2[0];
  44185. _r$3 = new big.Int.ptr().SetString("b70e0cbd6bb4bf7f321390b94a03c1d356c21122343280d6115c1d21", 16); /* */ $s = 4; case 4: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  44186. _tuple$3 = _r$3; p224.CurveParams.Gx = _tuple$3[0];
  44187. _r$4 = new big.Int.ptr().SetString("bd376388b5f723fb4c22dfe6cd4375a05a07476444d5819985007e34", 16); /* */ $s = 5; case 5: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
  44188. _tuple$4 = _r$4; p224.CurveParams.Gy = _tuple$4[0];
  44189. p224.CurveParams.BitSize = 224;
  44190. p224FromBig(p224.gx, p224.CurveParams.Gx);
  44191. p224FromBig(p224.gy, p224.CurveParams.Gy);
  44192. p224FromBig(p224.b, p224.CurveParams.B);
  44193. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: initP224 }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f._tuple$4 = _tuple$4; $f.$s = $s; $f.$r = $r; return $f;
  44194. };
  44195. P224 = function() {
  44196. var $ptr, $s, $r;
  44197. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  44198. $r = initonce.Do(initAll); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  44199. return new p224.constructor.elem(p224);
  44200. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: P224 }; } $f.$ptr = $ptr; $f.$s = $s; $f.$r = $r; return $f;
  44201. };
  44202. $pkg.P224 = P224;
  44203. p224Curve.ptr.prototype.Params = function() {
  44204. var $ptr, curve;
  44205. curve = $clone(this, p224Curve);
  44206. return curve.CurveParams;
  44207. };
  44208. p224Curve.prototype.Params = function() { return this.$val.Params(); };
  44209. p224Curve.ptr.prototype.IsOnCurve = function(bigX, bigY) {
  44210. var $ptr, _tmp, _tmp$1, bigX, bigY, curve, i, i$1, tmp, x, x$1, x$2, x3, y;
  44211. curve = $clone(this, p224Curve);
  44212. _tmp = $clone(p224FieldElement.zero(), p224FieldElement); _tmp$1 = $clone(p224FieldElement.zero(), p224FieldElement); x = $clone(_tmp, p224FieldElement); y = $clone(_tmp$1, p224FieldElement);
  44213. p224FromBig(x, bigX);
  44214. p224FromBig(y, bigY);
  44215. tmp = $clone(p224LargeFieldElement.zero(), p224LargeFieldElement);
  44216. x3 = $clone(p224FieldElement.zero(), p224FieldElement);
  44217. p224Square(x3, x, tmp);
  44218. p224Mul(x3, x3, x, tmp);
  44219. i = 0;
  44220. while (true) {
  44221. if (!(i < 8)) { break; }
  44222. ((i < 0 || i >= x.length) ? $throwRuntimeError("index out of range") : x[i] = (x$1 = ((i < 0 || i >= x.length) ? $throwRuntimeError("index out of range") : x[i]), x$2 = 3, (((x$1 >>> 16 << 16) * x$2 >>> 0) + (x$1 << 16 >>> 16) * x$2) >>> 0));
  44223. i = i + (1) >> 0;
  44224. }
  44225. p224Sub(x3, x3, x);
  44226. p224Reduce(x3);
  44227. p224Add(x3, x3, curve.b);
  44228. p224Contract(x3, x3);
  44229. p224Square(y, y, tmp);
  44230. p224Contract(y, y);
  44231. i$1 = 0;
  44232. while (true) {
  44233. if (!(i$1 < 8)) { break; }
  44234. if (!((((i$1 < 0 || i$1 >= y.length) ? $throwRuntimeError("index out of range") : y[i$1]) === ((i$1 < 0 || i$1 >= x3.length) ? $throwRuntimeError("index out of range") : x3[i$1])))) {
  44235. return false;
  44236. }
  44237. i$1 = i$1 + (1) >> 0;
  44238. }
  44239. return true;
  44240. };
  44241. p224Curve.prototype.IsOnCurve = function(bigX, bigY) { return this.$val.IsOnCurve(bigX, bigY); };
  44242. p224Curve.ptr.prototype.Add = function(bigX1, bigY1, bigX2, bigY2) {
  44243. var $ptr, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tuple, bigX1, bigX2, bigY1, bigY2, x, x1, x2, x3, y, y1, y2, y3, z1, z2, z3;
  44244. x = ptrType$1.nil;
  44245. y = ptrType$1.nil;
  44246. _tmp = $clone(p224FieldElement.zero(), p224FieldElement); _tmp$1 = $clone(p224FieldElement.zero(), p224FieldElement); _tmp$2 = $clone(p224FieldElement.zero(), p224FieldElement); _tmp$3 = $clone(p224FieldElement.zero(), p224FieldElement); _tmp$4 = $clone(p224FieldElement.zero(), p224FieldElement); _tmp$5 = $clone(p224FieldElement.zero(), p224FieldElement); _tmp$6 = $clone(p224FieldElement.zero(), p224FieldElement); _tmp$7 = $clone(p224FieldElement.zero(), p224FieldElement); _tmp$8 = $clone(p224FieldElement.zero(), p224FieldElement); x1 = $clone(_tmp, p224FieldElement); y1 = $clone(_tmp$1, p224FieldElement); z1 = $clone(_tmp$2, p224FieldElement); x2 = $clone(_tmp$3, p224FieldElement); y2 = $clone(_tmp$4, p224FieldElement); z2 = $clone(_tmp$5, p224FieldElement); x3 = $clone(_tmp$6, p224FieldElement); y3 = $clone(_tmp$7, p224FieldElement); z3 = $clone(_tmp$8, p224FieldElement);
  44247. p224FromBig(x1, bigX1);
  44248. p224FromBig(y1, bigY1);
  44249. if (!((bigX1.Sign() === 0)) || !((bigY1.Sign() === 0))) {
  44250. z1[0] = 1;
  44251. }
  44252. p224FromBig(x2, bigX2);
  44253. p224FromBig(y2, bigY2);
  44254. if (!((bigX2.Sign() === 0)) || !((bigY2.Sign() === 0))) {
  44255. z2[0] = 1;
  44256. }
  44257. p224AddJacobian(x3, y3, z3, x1, y1, z1, x2, y2, z2);
  44258. _tuple = p224ToAffine(x3, y3, z3); x = _tuple[0]; y = _tuple[1];
  44259. return [x, y];
  44260. };
  44261. p224Curve.prototype.Add = function(bigX1, bigY1, bigX2, bigY2) { return this.$val.Add(bigX1, bigY1, bigX2, bigY2); };
  44262. p224Curve.ptr.prototype.Double = function(bigX1, bigY1) {
  44263. var $ptr, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tuple, bigX1, bigY1, x, x1, x2, y, y1, y2, z1, z2;
  44264. x = ptrType$1.nil;
  44265. y = ptrType$1.nil;
  44266. _tmp = $clone(p224FieldElement.zero(), p224FieldElement); _tmp$1 = $clone(p224FieldElement.zero(), p224FieldElement); _tmp$2 = $clone(p224FieldElement.zero(), p224FieldElement); _tmp$3 = $clone(p224FieldElement.zero(), p224FieldElement); _tmp$4 = $clone(p224FieldElement.zero(), p224FieldElement); _tmp$5 = $clone(p224FieldElement.zero(), p224FieldElement); x1 = $clone(_tmp, p224FieldElement); y1 = $clone(_tmp$1, p224FieldElement); z1 = $clone(_tmp$2, p224FieldElement); x2 = $clone(_tmp$3, p224FieldElement); y2 = $clone(_tmp$4, p224FieldElement); z2 = $clone(_tmp$5, p224FieldElement);
  44267. p224FromBig(x1, bigX1);
  44268. p224FromBig(y1, bigY1);
  44269. z1[0] = 1;
  44270. p224DoubleJacobian(x2, y2, z2, x1, y1, z1);
  44271. _tuple = p224ToAffine(x2, y2, z2); x = _tuple[0]; y = _tuple[1];
  44272. return [x, y];
  44273. };
  44274. p224Curve.prototype.Double = function(bigX1, bigY1) { return this.$val.Double(bigX1, bigY1); };
  44275. p224Curve.ptr.prototype.ScalarMult = function(bigX1, bigY1, scalar) {
  44276. var $ptr, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tuple, bigX1, bigY1, scalar, x, x1, x2, y, y1, y2, z1, z2;
  44277. x = ptrType$1.nil;
  44278. y = ptrType$1.nil;
  44279. _tmp = $clone(p224FieldElement.zero(), p224FieldElement); _tmp$1 = $clone(p224FieldElement.zero(), p224FieldElement); _tmp$2 = $clone(p224FieldElement.zero(), p224FieldElement); _tmp$3 = $clone(p224FieldElement.zero(), p224FieldElement); _tmp$4 = $clone(p224FieldElement.zero(), p224FieldElement); _tmp$5 = $clone(p224FieldElement.zero(), p224FieldElement); x1 = $clone(_tmp, p224FieldElement); y1 = $clone(_tmp$1, p224FieldElement); z1 = $clone(_tmp$2, p224FieldElement); x2 = $clone(_tmp$3, p224FieldElement); y2 = $clone(_tmp$4, p224FieldElement); z2 = $clone(_tmp$5, p224FieldElement);
  44280. p224FromBig(x1, bigX1);
  44281. p224FromBig(y1, bigY1);
  44282. z1[0] = 1;
  44283. p224ScalarMult(x2, y2, z2, x1, y1, z1, scalar);
  44284. _tuple = p224ToAffine(x2, y2, z2); x = _tuple[0]; y = _tuple[1];
  44285. return [x, y];
  44286. };
  44287. p224Curve.prototype.ScalarMult = function(bigX1, bigY1, scalar) { return this.$val.ScalarMult(bigX1, bigY1, scalar); };
  44288. p224Curve.ptr.prototype.ScalarBaseMult = function(scalar) {
  44289. var $ptr, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, curve, scalar, x, x2, y, y2, z1, z2;
  44290. x = ptrType$1.nil;
  44291. y = ptrType$1.nil;
  44292. curve = $clone(this, p224Curve);
  44293. _tmp = $clone(p224FieldElement.zero(), p224FieldElement); _tmp$1 = $clone(p224FieldElement.zero(), p224FieldElement); _tmp$2 = $clone(p224FieldElement.zero(), p224FieldElement); _tmp$3 = $clone(p224FieldElement.zero(), p224FieldElement); z1 = $clone(_tmp, p224FieldElement); x2 = $clone(_tmp$1, p224FieldElement); y2 = $clone(_tmp$2, p224FieldElement); z2 = $clone(_tmp$3, p224FieldElement);
  44294. z1[0] = 1;
  44295. p224ScalarMult(x2, y2, z2, curve.gx, curve.gy, z1, scalar);
  44296. _tuple = p224ToAffine(x2, y2, z2); x = _tuple[0]; y = _tuple[1];
  44297. return [x, y];
  44298. };
  44299. p224Curve.prototype.ScalarBaseMult = function(scalar) { return this.$val.ScalarBaseMult(scalar); };
  44300. p224IsZero = function(a) {
  44301. var $ptr, _i, _ref, _tmp, _tmp$1, a, i, isP, isZero, minimal, result, v;
  44302. minimal = $clone(p224FieldElement.zero(), p224FieldElement);
  44303. p224Contract(minimal, a);
  44304. _tmp = 0; _tmp$1 = 0; isZero = _tmp; isP = _tmp$1;
  44305. _ref = minimal;
  44306. _i = 0;
  44307. while (true) {
  44308. if (!(_i < 8)) { break; }
  44309. i = _i;
  44310. v = ((_i < 0 || _i >= _ref.length) ? $throwRuntimeError("index out of range") : _ref[_i]);
  44311. isZero = (isZero | (v)) >>> 0;
  44312. isP = (isP | ((v - ((i < 0 || i >= p224P.length) ? $throwRuntimeError("index out of range") : p224P[i]) >>> 0))) >>> 0;
  44313. _i++;
  44314. }
  44315. isZero = (isZero | ((isZero >>> 16 >>> 0))) >>> 0;
  44316. isZero = (isZero | ((isZero >>> 8 >>> 0))) >>> 0;
  44317. isZero = (isZero | ((isZero >>> 4 >>> 0))) >>> 0;
  44318. isZero = (isZero | ((isZero >>> 2 >>> 0))) >>> 0;
  44319. isZero = (isZero | ((isZero >>> 1 >>> 0))) >>> 0;
  44320. isP = (isP | ((isP >>> 16 >>> 0))) >>> 0;
  44321. isP = (isP | ((isP >>> 8 >>> 0))) >>> 0;
  44322. isP = (isP | ((isP >>> 4 >>> 0))) >>> 0;
  44323. isP = (isP | ((isP >>> 2 >>> 0))) >>> 0;
  44324. isP = (isP | ((isP >>> 1 >>> 0))) >>> 0;
  44325. result = (isZero & isP) >>> 0;
  44326. result = (((~result >>> 0)) & 1) >>> 0;
  44327. return result;
  44328. };
  44329. p224Add = function(out, a, b) {
  44330. var $ptr, a, b, i, out;
  44331. i = 0;
  44332. while (true) {
  44333. if (!(i < 8)) { break; }
  44334. out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i] = (a.nilCheck, ((i < 0 || i >= a.length) ? $throwRuntimeError("index out of range") : a[i])) + (b.nilCheck, ((i < 0 || i >= b.length) ? $throwRuntimeError("index out of range") : b[i])) >>> 0);
  44335. i = i + (1) >> 0;
  44336. }
  44337. };
  44338. p224Sub = function(out, a, b) {
  44339. var $ptr, a, b, i, out;
  44340. i = 0;
  44341. while (true) {
  44342. if (!(i < 8)) { break; }
  44343. out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i] = ((a.nilCheck, ((i < 0 || i >= a.length) ? $throwRuntimeError("index out of range") : a[i])) + ((i < 0 || i >= p224ZeroModP31.$length) ? $throwRuntimeError("index out of range") : p224ZeroModP31.$array[p224ZeroModP31.$offset + i]) >>> 0) - (b.nilCheck, ((i < 0 || i >= b.length) ? $throwRuntimeError("index out of range") : b[i])) >>> 0);
  44344. i = i + (1) >> 0;
  44345. }
  44346. };
  44347. p224Mul = function(out, a, b, tmp) {
  44348. var $ptr, _index, a, b, i, i$1, j, out, tmp, x, x$1;
  44349. i = 0;
  44350. while (true) {
  44351. if (!(i < 15)) { break; }
  44352. tmp.nilCheck, ((i < 0 || i >= tmp.length) ? $throwRuntimeError("index out of range") : tmp[i] = new $Uint64(0, 0));
  44353. i = i + (1) >> 0;
  44354. }
  44355. i$1 = 0;
  44356. while (true) {
  44357. if (!(i$1 < 8)) { break; }
  44358. j = 0;
  44359. while (true) {
  44360. if (!(j < 8)) { break; }
  44361. _index = i$1 + j >> 0;
  44362. tmp.nilCheck, ((_index < 0 || _index >= tmp.length) ? $throwRuntimeError("index out of range") : tmp[_index] = (x = (tmp.nilCheck, ((_index < 0 || _index >= tmp.length) ? $throwRuntimeError("index out of range") : tmp[_index])), x$1 = $mul64(new $Uint64(0, (a.nilCheck, ((i$1 < 0 || i$1 >= a.length) ? $throwRuntimeError("index out of range") : a[i$1]))), new $Uint64(0, (b.nilCheck, ((j < 0 || j >= b.length) ? $throwRuntimeError("index out of range") : b[j])))), new $Uint64(x.$high + x$1.$high, x.$low + x$1.$low)));
  44363. j = j + (1) >> 0;
  44364. }
  44365. i$1 = i$1 + (1) >> 0;
  44366. }
  44367. p224ReduceLarge(out, tmp);
  44368. };
  44369. p224Square = function(out, a, tmp) {
  44370. var $ptr, _index, _index$1, a, i, i$1, j, out, r, tmp, x, x$1, x$2, x$3;
  44371. i = 0;
  44372. while (true) {
  44373. if (!(i < 15)) { break; }
  44374. tmp.nilCheck, ((i < 0 || i >= tmp.length) ? $throwRuntimeError("index out of range") : tmp[i] = new $Uint64(0, 0));
  44375. i = i + (1) >> 0;
  44376. }
  44377. i$1 = 0;
  44378. while (true) {
  44379. if (!(i$1 < 8)) { break; }
  44380. j = 0;
  44381. while (true) {
  44382. if (!(j <= i$1)) { break; }
  44383. r = $mul64(new $Uint64(0, (a.nilCheck, ((i$1 < 0 || i$1 >= a.length) ? $throwRuntimeError("index out of range") : a[i$1]))), new $Uint64(0, (a.nilCheck, ((j < 0 || j >= a.length) ? $throwRuntimeError("index out of range") : a[j]))));
  44384. if (i$1 === j) {
  44385. _index = i$1 + j >> 0;
  44386. tmp.nilCheck, ((_index < 0 || _index >= tmp.length) ? $throwRuntimeError("index out of range") : tmp[_index] = (x = (tmp.nilCheck, ((_index < 0 || _index >= tmp.length) ? $throwRuntimeError("index out of range") : tmp[_index])), x$1 = r, new $Uint64(x.$high + x$1.$high, x.$low + x$1.$low)));
  44387. } else {
  44388. _index$1 = i$1 + j >> 0;
  44389. tmp.nilCheck, ((_index$1 < 0 || _index$1 >= tmp.length) ? $throwRuntimeError("index out of range") : tmp[_index$1] = (x$2 = (tmp.nilCheck, ((_index$1 < 0 || _index$1 >= tmp.length) ? $throwRuntimeError("index out of range") : tmp[_index$1])), x$3 = $shiftLeft64(r, 1), new $Uint64(x$2.$high + x$3.$high, x$2.$low + x$3.$low)));
  44390. }
  44391. j = j + (1) >> 0;
  44392. }
  44393. i$1 = i$1 + (1) >> 0;
  44394. }
  44395. p224ReduceLarge(out, tmp);
  44396. };
  44397. p224ReduceLarge = function(out, in$1) {
  44398. var $ptr, _index, _index$1, _index$2, _index$3, i, i$1, i$2, in$1, out, x, x$1, x$10, x$11, x$12, x$13, x$14, x$15, x$16, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9;
  44399. i = 0;
  44400. while (true) {
  44401. if (!(i < 8)) { break; }
  44402. in$1.nilCheck, ((i < 0 || i >= in$1.length) ? $throwRuntimeError("index out of range") : in$1[i] = (x = (in$1.nilCheck, ((i < 0 || i >= in$1.length) ? $throwRuntimeError("index out of range") : in$1[i])), x$1 = ((i < 0 || i >= p224ZeroModP63.length) ? $throwRuntimeError("index out of range") : p224ZeroModP63[i]), new $Uint64(x.$high + x$1.$high, x.$low + x$1.$low)));
  44403. i = i + (1) >> 0;
  44404. }
  44405. i$1 = 14;
  44406. while (true) {
  44407. if (!(i$1 >= 8)) { break; }
  44408. _index = i$1 - 8 >> 0;
  44409. in$1.nilCheck, ((_index < 0 || _index >= in$1.length) ? $throwRuntimeError("index out of range") : in$1[_index] = (x$2 = (in$1.nilCheck, ((_index < 0 || _index >= in$1.length) ? $throwRuntimeError("index out of range") : in$1[_index])), x$3 = (in$1.nilCheck, ((i$1 < 0 || i$1 >= in$1.length) ? $throwRuntimeError("index out of range") : in$1[i$1])), new $Uint64(x$2.$high - x$3.$high, x$2.$low - x$3.$low)));
  44410. _index$1 = i$1 - 5 >> 0;
  44411. in$1.nilCheck, ((_index$1 < 0 || _index$1 >= in$1.length) ? $throwRuntimeError("index out of range") : in$1[_index$1] = (x$4 = (in$1.nilCheck, ((_index$1 < 0 || _index$1 >= in$1.length) ? $throwRuntimeError("index out of range") : in$1[_index$1])), x$5 = $shiftLeft64(((x$6 = (in$1.nilCheck, ((i$1 < 0 || i$1 >= in$1.length) ? $throwRuntimeError("index out of range") : in$1[i$1])), new $Uint64(x$6.$high & 0, (x$6.$low & 65535) >>> 0))), 12), new $Uint64(x$4.$high + x$5.$high, x$4.$low + x$5.$low)));
  44412. _index$2 = i$1 - 4 >> 0;
  44413. in$1.nilCheck, ((_index$2 < 0 || _index$2 >= in$1.length) ? $throwRuntimeError("index out of range") : in$1[_index$2] = (x$7 = (in$1.nilCheck, ((_index$2 < 0 || _index$2 >= in$1.length) ? $throwRuntimeError("index out of range") : in$1[_index$2])), x$8 = $shiftRightUint64((in$1.nilCheck, ((i$1 < 0 || i$1 >= in$1.length) ? $throwRuntimeError("index out of range") : in$1[i$1])), 16), new $Uint64(x$7.$high + x$8.$high, x$7.$low + x$8.$low)));
  44414. i$1 = i$1 - (1) >> 0;
  44415. }
  44416. in$1.nilCheck, in$1[8] = new $Uint64(0, 0);
  44417. i$2 = 1;
  44418. while (true) {
  44419. if (!(i$2 < 8)) { break; }
  44420. _index$3 = i$2 + 1 >> 0;
  44421. in$1.nilCheck, ((_index$3 < 0 || _index$3 >= in$1.length) ? $throwRuntimeError("index out of range") : in$1[_index$3] = (x$9 = (in$1.nilCheck, ((_index$3 < 0 || _index$3 >= in$1.length) ? $throwRuntimeError("index out of range") : in$1[_index$3])), x$10 = $shiftRightUint64((in$1.nilCheck, ((i$2 < 0 || i$2 >= in$1.length) ? $throwRuntimeError("index out of range") : in$1[i$2])), 28), new $Uint64(x$9.$high + x$10.$high, x$9.$low + x$10.$low)));
  44422. out.nilCheck, ((i$2 < 0 || i$2 >= out.length) ? $throwRuntimeError("index out of range") : out[i$2] = ((x$11 = (in$1.nilCheck, ((i$2 < 0 || i$2 >= in$1.length) ? $throwRuntimeError("index out of range") : in$1[i$2])), new $Uint64(x$11.$high & 0, (x$11.$low & 268435455) >>> 0)).$low >>> 0));
  44423. i$2 = i$2 + (1) >> 0;
  44424. }
  44425. in$1.nilCheck, in$1[0] = (x$12 = (in$1.nilCheck, in$1[0]), x$13 = (in$1.nilCheck, in$1[8]), new $Uint64(x$12.$high - x$13.$high, x$12.$low - x$13.$low));
  44426. out.nilCheck, out[3] = (out.nilCheck, out[3]) + ((((x$14 = (in$1.nilCheck, in$1[8]), new $Uint64(x$14.$high & 0, (x$14.$low & 65535) >>> 0)).$low >>> 0) << 12 >>> 0)) >>> 0;
  44427. out.nilCheck, out[4] = (out.nilCheck, out[4]) + (($shiftRightUint64((in$1.nilCheck, in$1[8]), 16).$low >>> 0)) >>> 0;
  44428. out.nilCheck, out[0] = ((x$15 = (in$1.nilCheck, in$1[0]), new $Uint64(x$15.$high & 0, (x$15.$low & 268435455) >>> 0)).$low >>> 0);
  44429. out.nilCheck, out[1] = (out.nilCheck, out[1]) + (((x$16 = $shiftRightUint64((in$1.nilCheck, in$1[0]), 28), new $Uint64(x$16.$high & 0, (x$16.$low & 268435455) >>> 0)).$low >>> 0)) >>> 0;
  44430. out.nilCheck, out[2] = (out.nilCheck, out[2]) + (($shiftRightUint64((in$1.nilCheck, in$1[0]), 56).$low >>> 0)) >>> 0;
  44431. };
  44432. p224Reduce = function(a) {
  44433. var $ptr, _index, a, i, mask$1, top, y;
  44434. i = 0;
  44435. while (true) {
  44436. if (!(i < 7)) { break; }
  44437. _index = i + 1 >> 0;
  44438. a.nilCheck, ((_index < 0 || _index >= a.length) ? $throwRuntimeError("index out of range") : a[_index] = (a.nilCheck, ((_index < 0 || _index >= a.length) ? $throwRuntimeError("index out of range") : a[_index])) + (((a.nilCheck, ((i < 0 || i >= a.length) ? $throwRuntimeError("index out of range") : a[i])) >>> 28 >>> 0)) >>> 0);
  44439. a.nilCheck, ((i < 0 || i >= a.length) ? $throwRuntimeError("index out of range") : a[i] = ((a.nilCheck, ((i < 0 || i >= a.length) ? $throwRuntimeError("index out of range") : a[i])) & (268435455)) >>> 0);
  44440. i = i + (1) >> 0;
  44441. }
  44442. top = (a.nilCheck, a[7]) >>> 28 >>> 0;
  44443. a.nilCheck, a[7] = ((a.nilCheck, a[7]) & (268435455)) >>> 0;
  44444. mask$1 = top;
  44445. mask$1 = (mask$1 | ((mask$1 >>> 2 >>> 0))) >>> 0;
  44446. mask$1 = (mask$1 | ((mask$1 >>> 1 >>> 0))) >>> 0;
  44447. mask$1 = (y = (31), y < 32 ? (mask$1 << y) : 0) >>> 0;
  44448. mask$1 = (((mask$1 >> 0) >> 31 >> 0) >>> 0);
  44449. a.nilCheck, a[0] = (a.nilCheck, a[0]) - (top) >>> 0;
  44450. a.nilCheck, a[3] = (a.nilCheck, a[3]) + ((top << 12 >>> 0)) >>> 0;
  44451. a.nilCheck, a[3] = (a.nilCheck, a[3]) - (((1 & mask$1) >>> 0)) >>> 0;
  44452. a.nilCheck, a[2] = (a.nilCheck, a[2]) + (((mask$1 & 268435455) >>> 0)) >>> 0;
  44453. a.nilCheck, a[1] = (a.nilCheck, a[1]) + (((mask$1 & 268435455) >>> 0)) >>> 0;
  44454. a.nilCheck, a[0] = (a.nilCheck, a[0]) + (((mask$1 & 268435456) >>> 0)) >>> 0;
  44455. };
  44456. p224Invert = function(out, in$1) {
  44457. var $ptr, _tmp, _tmp$1, _tmp$2, _tmp$3, c, f1, f2, f3, f4, i, i$1, i$2, i$3, i$4, i$5, i$6, in$1, out;
  44458. _tmp = $clone(p224FieldElement.zero(), p224FieldElement); _tmp$1 = $clone(p224FieldElement.zero(), p224FieldElement); _tmp$2 = $clone(p224FieldElement.zero(), p224FieldElement); _tmp$3 = $clone(p224FieldElement.zero(), p224FieldElement); f1 = $clone(_tmp, p224FieldElement); f2 = $clone(_tmp$1, p224FieldElement); f3 = $clone(_tmp$2, p224FieldElement); f4 = $clone(_tmp$3, p224FieldElement);
  44459. c = $clone(p224LargeFieldElement.zero(), p224LargeFieldElement);
  44460. p224Square(f1, in$1, c);
  44461. p224Mul(f1, f1, in$1, c);
  44462. p224Square(f1, f1, c);
  44463. p224Mul(f1, f1, in$1, c);
  44464. p224Square(f2, f1, c);
  44465. p224Square(f2, f2, c);
  44466. p224Square(f2, f2, c);
  44467. p224Mul(f1, f1, f2, c);
  44468. p224Square(f2, f1, c);
  44469. i = 0;
  44470. while (true) {
  44471. if (!(i < 5)) { break; }
  44472. p224Square(f2, f2, c);
  44473. i = i + (1) >> 0;
  44474. }
  44475. p224Mul(f2, f2, f1, c);
  44476. p224Square(f3, f2, c);
  44477. i$1 = 0;
  44478. while (true) {
  44479. if (!(i$1 < 11)) { break; }
  44480. p224Square(f3, f3, c);
  44481. i$1 = i$1 + (1) >> 0;
  44482. }
  44483. p224Mul(f2, f3, f2, c);
  44484. p224Square(f3, f2, c);
  44485. i$2 = 0;
  44486. while (true) {
  44487. if (!(i$2 < 23)) { break; }
  44488. p224Square(f3, f3, c);
  44489. i$2 = i$2 + (1) >> 0;
  44490. }
  44491. p224Mul(f3, f3, f2, c);
  44492. p224Square(f4, f3, c);
  44493. i$3 = 0;
  44494. while (true) {
  44495. if (!(i$3 < 47)) { break; }
  44496. p224Square(f4, f4, c);
  44497. i$3 = i$3 + (1) >> 0;
  44498. }
  44499. p224Mul(f3, f3, f4, c);
  44500. p224Square(f4, f3, c);
  44501. i$4 = 0;
  44502. while (true) {
  44503. if (!(i$4 < 23)) { break; }
  44504. p224Square(f4, f4, c);
  44505. i$4 = i$4 + (1) >> 0;
  44506. }
  44507. p224Mul(f2, f4, f2, c);
  44508. i$5 = 0;
  44509. while (true) {
  44510. if (!(i$5 < 6)) { break; }
  44511. p224Square(f2, f2, c);
  44512. i$5 = i$5 + (1) >> 0;
  44513. }
  44514. p224Mul(f1, f1, f2, c);
  44515. p224Square(f1, f1, c);
  44516. p224Mul(f1, f1, in$1, c);
  44517. i$6 = 0;
  44518. while (true) {
  44519. if (!(i$6 < 97)) { break; }
  44520. p224Square(f1, f1, c);
  44521. i$6 = i$6 + (1) >> 0;
  44522. }
  44523. p224Mul(out, f1, f3, c);
  44524. };
  44525. p224Contract = function(out, in$1) {
  44526. var $ptr, _index, _index$1, _index$2, _index$3, bottom3NonZero, i, i$1, i$2, i$3, i$4, in$1, mask$1, mask$2, mask$3, n, out, out3Equal, out3GT, top, top4AllOnes;
  44527. $copySlice(new sliceType$1(out), new sliceType$1(in$1));
  44528. i = 0;
  44529. while (true) {
  44530. if (!(i < 7)) { break; }
  44531. _index = i + 1 >> 0;
  44532. out.nilCheck, ((_index < 0 || _index >= out.length) ? $throwRuntimeError("index out of range") : out[_index] = (out.nilCheck, ((_index < 0 || _index >= out.length) ? $throwRuntimeError("index out of range") : out[_index])) + (((out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i])) >>> 28 >>> 0)) >>> 0);
  44533. out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i] = ((out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i])) & (268435455)) >>> 0);
  44534. i = i + (1) >> 0;
  44535. }
  44536. top = (out.nilCheck, out[7]) >>> 28 >>> 0;
  44537. out.nilCheck, out[7] = ((out.nilCheck, out[7]) & (268435455)) >>> 0;
  44538. out.nilCheck, out[0] = (out.nilCheck, out[0]) - (top) >>> 0;
  44539. out.nilCheck, out[3] = (out.nilCheck, out[3]) + ((top << 12 >>> 0)) >>> 0;
  44540. i$1 = 0;
  44541. while (true) {
  44542. if (!(i$1 < 3)) { break; }
  44543. mask$1 = ((((out.nilCheck, ((i$1 < 0 || i$1 >= out.length) ? $throwRuntimeError("index out of range") : out[i$1])) >> 0) >> 31 >> 0) >>> 0);
  44544. out.nilCheck, ((i$1 < 0 || i$1 >= out.length) ? $throwRuntimeError("index out of range") : out[i$1] = (out.nilCheck, ((i$1 < 0 || i$1 >= out.length) ? $throwRuntimeError("index out of range") : out[i$1])) + (((268435456 & mask$1) >>> 0)) >>> 0);
  44545. _index$1 = i$1 + 1 >> 0;
  44546. out.nilCheck, ((_index$1 < 0 || _index$1 >= out.length) ? $throwRuntimeError("index out of range") : out[_index$1] = (out.nilCheck, ((_index$1 < 0 || _index$1 >= out.length) ? $throwRuntimeError("index out of range") : out[_index$1])) - (((1 & mask$1) >>> 0)) >>> 0);
  44547. i$1 = i$1 + (1) >> 0;
  44548. }
  44549. i$2 = 3;
  44550. while (true) {
  44551. if (!(i$2 < 7)) { break; }
  44552. _index$2 = i$2 + 1 >> 0;
  44553. out.nilCheck, ((_index$2 < 0 || _index$2 >= out.length) ? $throwRuntimeError("index out of range") : out[_index$2] = (out.nilCheck, ((_index$2 < 0 || _index$2 >= out.length) ? $throwRuntimeError("index out of range") : out[_index$2])) + (((out.nilCheck, ((i$2 < 0 || i$2 >= out.length) ? $throwRuntimeError("index out of range") : out[i$2])) >>> 28 >>> 0)) >>> 0);
  44554. out.nilCheck, ((i$2 < 0 || i$2 >= out.length) ? $throwRuntimeError("index out of range") : out[i$2] = ((out.nilCheck, ((i$2 < 0 || i$2 >= out.length) ? $throwRuntimeError("index out of range") : out[i$2])) & (268435455)) >>> 0);
  44555. i$2 = i$2 + (1) >> 0;
  44556. }
  44557. top = (out.nilCheck, out[7]) >>> 28 >>> 0;
  44558. out.nilCheck, out[7] = ((out.nilCheck, out[7]) & (268435455)) >>> 0;
  44559. out.nilCheck, out[0] = (out.nilCheck, out[0]) - (top) >>> 0;
  44560. out.nilCheck, out[3] = (out.nilCheck, out[3]) + ((top << 12 >>> 0)) >>> 0;
  44561. i$3 = 0;
  44562. while (true) {
  44563. if (!(i$3 < 3)) { break; }
  44564. mask$2 = ((((out.nilCheck, ((i$3 < 0 || i$3 >= out.length) ? $throwRuntimeError("index out of range") : out[i$3])) >> 0) >> 31 >> 0) >>> 0);
  44565. out.nilCheck, ((i$3 < 0 || i$3 >= out.length) ? $throwRuntimeError("index out of range") : out[i$3] = (out.nilCheck, ((i$3 < 0 || i$3 >= out.length) ? $throwRuntimeError("index out of range") : out[i$3])) + (((268435456 & mask$2) >>> 0)) >>> 0);
  44566. _index$3 = i$3 + 1 >> 0;
  44567. out.nilCheck, ((_index$3 < 0 || _index$3 >= out.length) ? $throwRuntimeError("index out of range") : out[_index$3] = (out.nilCheck, ((_index$3 < 0 || _index$3 >= out.length) ? $throwRuntimeError("index out of range") : out[_index$3])) - (((1 & mask$2) >>> 0)) >>> 0);
  44568. i$3 = i$3 + (1) >> 0;
  44569. }
  44570. top4AllOnes = 4294967295;
  44571. i$4 = 4;
  44572. while (true) {
  44573. if (!(i$4 < 8)) { break; }
  44574. top4AllOnes = (top4AllOnes & ((out.nilCheck, ((i$4 < 0 || i$4 >= out.length) ? $throwRuntimeError("index out of range") : out[i$4])))) >>> 0;
  44575. i$4 = i$4 + (1) >> 0;
  44576. }
  44577. top4AllOnes = (top4AllOnes | (4026531840)) >>> 0;
  44578. top4AllOnes = (top4AllOnes & ((top4AllOnes >>> 16 >>> 0))) >>> 0;
  44579. top4AllOnes = (top4AllOnes & ((top4AllOnes >>> 8 >>> 0))) >>> 0;
  44580. top4AllOnes = (top4AllOnes & ((top4AllOnes >>> 4 >>> 0))) >>> 0;
  44581. top4AllOnes = (top4AllOnes & ((top4AllOnes >>> 2 >>> 0))) >>> 0;
  44582. top4AllOnes = (top4AllOnes & ((top4AllOnes >>> 1 >>> 0))) >>> 0;
  44583. top4AllOnes = ((((top4AllOnes << 31 >>> 0) >> 0) >> 31 >> 0) >>> 0);
  44584. bottom3NonZero = ((((out.nilCheck, out[0]) | (out.nilCheck, out[1])) >>> 0) | (out.nilCheck, out[2])) >>> 0;
  44585. bottom3NonZero = (bottom3NonZero | ((bottom3NonZero >>> 16 >>> 0))) >>> 0;
  44586. bottom3NonZero = (bottom3NonZero | ((bottom3NonZero >>> 8 >>> 0))) >>> 0;
  44587. bottom3NonZero = (bottom3NonZero | ((bottom3NonZero >>> 4 >>> 0))) >>> 0;
  44588. bottom3NonZero = (bottom3NonZero | ((bottom3NonZero >>> 2 >>> 0))) >>> 0;
  44589. bottom3NonZero = (bottom3NonZero | ((bottom3NonZero >>> 1 >>> 0))) >>> 0;
  44590. bottom3NonZero = ((((bottom3NonZero << 31 >>> 0) >> 0) >> 31 >> 0) >>> 0);
  44591. n = (out.nilCheck, out[3]) - 268431360 >>> 0;
  44592. out3Equal = n;
  44593. out3Equal = (out3Equal | ((out3Equal >>> 16 >>> 0))) >>> 0;
  44594. out3Equal = (out3Equal | ((out3Equal >>> 8 >>> 0))) >>> 0;
  44595. out3Equal = (out3Equal | ((out3Equal >>> 4 >>> 0))) >>> 0;
  44596. out3Equal = (out3Equal | ((out3Equal >>> 2 >>> 0))) >>> 0;
  44597. out3Equal = (out3Equal | ((out3Equal >>> 1 >>> 0))) >>> 0;
  44598. out3Equal = ~((((out3Equal << 31 >>> 0) >> 0) >> 31 >> 0) >>> 0) >>> 0;
  44599. out3GT = ~(((n >> 0) >> 31 >> 0) >>> 0) >>> 0;
  44600. mask$3 = (top4AllOnes & ((((((out3Equal & bottom3NonZero) >>> 0)) | out3GT) >>> 0))) >>> 0;
  44601. out.nilCheck, out[0] = (out.nilCheck, out[0]) - (((1 & mask$3) >>> 0)) >>> 0;
  44602. out.nilCheck, out[3] = (out.nilCheck, out[3]) - (((268431360 & mask$3) >>> 0)) >>> 0;
  44603. out.nilCheck, out[4] = (out.nilCheck, out[4]) - (((268435455 & mask$3) >>> 0)) >>> 0;
  44604. out.nilCheck, out[5] = (out.nilCheck, out[5]) - (((268435455 & mask$3) >>> 0)) >>> 0;
  44605. out.nilCheck, out[6] = (out.nilCheck, out[6]) - (((268435455 & mask$3) >>> 0)) >>> 0;
  44606. out.nilCheck, out[7] = (out.nilCheck, out[7]) - (((268435455 & mask$3) >>> 0)) >>> 0;
  44607. };
  44608. p224AddJacobian = function(x3, y3, z3, x1, y1, z1, x2, y2, z2) {
  44609. var $ptr, _tmp, _tmp$1, _tmp$10, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, c, h, i, i$1, i$2, i$3, j, j$1, r, s1, s2, u1, u2, v, x1, x2, x3, xEqual, y, y$1, y1, y2, y3, yEqual, z1, z1IsZero, z1z1, z2, z2IsZero, z2z2, z3;
  44610. _tmp = $clone(p224FieldElement.zero(), p224FieldElement); _tmp$1 = $clone(p224FieldElement.zero(), p224FieldElement); _tmp$2 = $clone(p224FieldElement.zero(), p224FieldElement); _tmp$3 = $clone(p224FieldElement.zero(), p224FieldElement); _tmp$4 = $clone(p224FieldElement.zero(), p224FieldElement); _tmp$5 = $clone(p224FieldElement.zero(), p224FieldElement); _tmp$6 = $clone(p224FieldElement.zero(), p224FieldElement); _tmp$7 = $clone(p224FieldElement.zero(), p224FieldElement); _tmp$8 = $clone(p224FieldElement.zero(), p224FieldElement); _tmp$9 = $clone(p224FieldElement.zero(), p224FieldElement); _tmp$10 = $clone(p224FieldElement.zero(), p224FieldElement); z1z1 = $clone(_tmp, p224FieldElement); z2z2 = $clone(_tmp$1, p224FieldElement); u1 = $clone(_tmp$2, p224FieldElement); u2 = $clone(_tmp$3, p224FieldElement); s1 = $clone(_tmp$4, p224FieldElement); s2 = $clone(_tmp$5, p224FieldElement); h = $clone(_tmp$6, p224FieldElement); i = $clone(_tmp$7, p224FieldElement); j = $clone(_tmp$8, p224FieldElement); r = $clone(_tmp$9, p224FieldElement); v = $clone(_tmp$10, p224FieldElement);
  44611. c = $clone(p224LargeFieldElement.zero(), p224LargeFieldElement);
  44612. z1IsZero = p224IsZero(z1);
  44613. z2IsZero = p224IsZero(z2);
  44614. p224Square(z1z1, z1, c);
  44615. p224Square(z2z2, z2, c);
  44616. p224Mul(u1, x1, z2z2, c);
  44617. p224Mul(u2, x2, z1z1, c);
  44618. p224Mul(s1, z2, z2z2, c);
  44619. p224Mul(s1, y1, s1, c);
  44620. p224Mul(s2, z1, z1z1, c);
  44621. p224Mul(s2, y2, s2, c);
  44622. p224Sub(h, u2, u1);
  44623. p224Reduce(h);
  44624. xEqual = p224IsZero(h);
  44625. j$1 = 0;
  44626. while (true) {
  44627. if (!(j$1 < 8)) { break; }
  44628. ((j$1 < 0 || j$1 >= i.length) ? $throwRuntimeError("index out of range") : i[j$1] = ((j$1 < 0 || j$1 >= h.length) ? $throwRuntimeError("index out of range") : h[j$1]) << 1 >>> 0);
  44629. j$1 = j$1 + (1) >> 0;
  44630. }
  44631. p224Reduce(i);
  44632. p224Square(i, i, c);
  44633. p224Mul(j, h, i, c);
  44634. p224Sub(r, s2, s1);
  44635. p224Reduce(r);
  44636. yEqual = p224IsZero(r);
  44637. if ((xEqual === 1) && (yEqual === 1) && (z1IsZero === 0) && (z2IsZero === 0)) {
  44638. p224DoubleJacobian(x3, y3, z3, x1, y1, z1);
  44639. return;
  44640. }
  44641. i$1 = 0;
  44642. while (true) {
  44643. if (!(i$1 < 8)) { break; }
  44644. ((i$1 < 0 || i$1 >= r.length) ? $throwRuntimeError("index out of range") : r[i$1] = (y = (1), y < 32 ? (((i$1 < 0 || i$1 >= r.length) ? $throwRuntimeError("index out of range") : r[i$1]) << y) : 0) >>> 0);
  44645. i$1 = i$1 + (1) >> 0;
  44646. }
  44647. p224Reduce(r);
  44648. p224Mul(v, u1, i, c);
  44649. p224Add(z1z1, z1z1, z2z2);
  44650. p224Add(z2z2, z1, z2);
  44651. p224Reduce(z2z2);
  44652. p224Square(z2z2, z2z2, c);
  44653. p224Sub(z3, z2z2, z1z1);
  44654. p224Reduce(z3);
  44655. p224Mul(z3, z3, h, c);
  44656. i$2 = 0;
  44657. while (true) {
  44658. if (!(i$2 < 8)) { break; }
  44659. ((i$2 < 0 || i$2 >= z1z1.length) ? $throwRuntimeError("index out of range") : z1z1[i$2] = ((i$2 < 0 || i$2 >= v.length) ? $throwRuntimeError("index out of range") : v[i$2]) << 1 >>> 0);
  44660. i$2 = i$2 + (1) >> 0;
  44661. }
  44662. p224Add(z1z1, j, z1z1);
  44663. p224Reduce(z1z1);
  44664. p224Square(x3, r, c);
  44665. p224Sub(x3, x3, z1z1);
  44666. p224Reduce(x3);
  44667. i$3 = 0;
  44668. while (true) {
  44669. if (!(i$3 < 8)) { break; }
  44670. ((i$3 < 0 || i$3 >= s1.length) ? $throwRuntimeError("index out of range") : s1[i$3] = (y$1 = (1), y$1 < 32 ? (((i$3 < 0 || i$3 >= s1.length) ? $throwRuntimeError("index out of range") : s1[i$3]) << y$1) : 0) >>> 0);
  44671. i$3 = i$3 + (1) >> 0;
  44672. }
  44673. p224Mul(s1, s1, j, c);
  44674. p224Sub(z1z1, v, x3);
  44675. p224Reduce(z1z1);
  44676. p224Mul(z1z1, z1z1, r, c);
  44677. p224Sub(y3, z1z1, s1);
  44678. p224Reduce(y3);
  44679. p224CopyConditional(x3, x2, z1IsZero);
  44680. p224CopyConditional(x3, x1, z2IsZero);
  44681. p224CopyConditional(y3, y2, z1IsZero);
  44682. p224CopyConditional(y3, y1, z2IsZero);
  44683. p224CopyConditional(z3, z2, z1IsZero);
  44684. p224CopyConditional(z3, z1, z2IsZero);
  44685. };
  44686. p224DoubleJacobian = function(x3, y3, z3, x1, y1, z1) {
  44687. var $ptr, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, alpha, beta, c, delta, gamma, i, i$1, i$2, i$3, t, x1, x3, y, y$1, y1, y3, z1, z3;
  44688. _tmp = $clone(p224FieldElement.zero(), p224FieldElement); _tmp$1 = $clone(p224FieldElement.zero(), p224FieldElement); _tmp$2 = $clone(p224FieldElement.zero(), p224FieldElement); _tmp$3 = $clone(p224FieldElement.zero(), p224FieldElement); _tmp$4 = $clone(p224FieldElement.zero(), p224FieldElement); delta = $clone(_tmp, p224FieldElement); gamma = $clone(_tmp$1, p224FieldElement); beta = $clone(_tmp$2, p224FieldElement); alpha = $clone(_tmp$3, p224FieldElement); t = $clone(_tmp$4, p224FieldElement);
  44689. c = $clone(p224LargeFieldElement.zero(), p224LargeFieldElement);
  44690. p224Square(delta, z1, c);
  44691. p224Square(gamma, y1, c);
  44692. p224Mul(beta, x1, gamma, c);
  44693. p224Add(t, x1, delta);
  44694. i = 0;
  44695. while (true) {
  44696. if (!(i < 8)) { break; }
  44697. ((i < 0 || i >= t.length) ? $throwRuntimeError("index out of range") : t[i] = ((i < 0 || i >= t.length) ? $throwRuntimeError("index out of range") : t[i]) + ((((i < 0 || i >= t.length) ? $throwRuntimeError("index out of range") : t[i]) << 1 >>> 0)) >>> 0);
  44698. i = i + (1) >> 0;
  44699. }
  44700. p224Reduce(t);
  44701. p224Sub(alpha, x1, delta);
  44702. p224Reduce(alpha);
  44703. p224Mul(alpha, alpha, t, c);
  44704. p224Add(z3, y1, z1);
  44705. p224Reduce(z3);
  44706. p224Square(z3, z3, c);
  44707. p224Sub(z3, z3, gamma);
  44708. p224Reduce(z3);
  44709. p224Sub(z3, z3, delta);
  44710. p224Reduce(z3);
  44711. i$1 = 0;
  44712. while (true) {
  44713. if (!(i$1 < 8)) { break; }
  44714. ((i$1 < 0 || i$1 >= delta.length) ? $throwRuntimeError("index out of range") : delta[i$1] = ((i$1 < 0 || i$1 >= beta.length) ? $throwRuntimeError("index out of range") : beta[i$1]) << 3 >>> 0);
  44715. i$1 = i$1 + (1) >> 0;
  44716. }
  44717. p224Reduce(delta);
  44718. p224Square(x3, alpha, c);
  44719. p224Sub(x3, x3, delta);
  44720. p224Reduce(x3);
  44721. i$2 = 0;
  44722. while (true) {
  44723. if (!(i$2 < 8)) { break; }
  44724. ((i$2 < 0 || i$2 >= beta.length) ? $throwRuntimeError("index out of range") : beta[i$2] = (y = (2), y < 32 ? (((i$2 < 0 || i$2 >= beta.length) ? $throwRuntimeError("index out of range") : beta[i$2]) << y) : 0) >>> 0);
  44725. i$2 = i$2 + (1) >> 0;
  44726. }
  44727. p224Sub(beta, beta, x3);
  44728. p224Reduce(beta);
  44729. p224Square(gamma, gamma, c);
  44730. i$3 = 0;
  44731. while (true) {
  44732. if (!(i$3 < 8)) { break; }
  44733. ((i$3 < 0 || i$3 >= gamma.length) ? $throwRuntimeError("index out of range") : gamma[i$3] = (y$1 = (3), y$1 < 32 ? (((i$3 < 0 || i$3 >= gamma.length) ? $throwRuntimeError("index out of range") : gamma[i$3]) << y$1) : 0) >>> 0);
  44734. i$3 = i$3 + (1) >> 0;
  44735. }
  44736. p224Reduce(gamma);
  44737. p224Mul(y3, alpha, beta, c);
  44738. p224Sub(y3, y3, gamma);
  44739. p224Reduce(y3);
  44740. };
  44741. p224CopyConditional = function(out, in$1, control) {
  44742. var $ptr, control, i, in$1, out, y;
  44743. control = (y = (31), y < 32 ? (control << y) : 0) >>> 0;
  44744. control = (((control >> 0) >> 31 >> 0) >>> 0);
  44745. i = 0;
  44746. while (true) {
  44747. if (!(i < 8)) { break; }
  44748. out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i] = ((out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i])) ^ (((((((out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i])) ^ (in$1.nilCheck, ((i < 0 || i >= in$1.length) ? $throwRuntimeError("index out of range") : in$1[i]))) >>> 0)) & control) >>> 0))) >>> 0);
  44749. i = i + (1) >> 0;
  44750. }
  44751. };
  44752. p224ScalarMult = function(outX, outY, outZ, inX, inY, inZ, scalar) {
  44753. var $ptr, _i, _ref, _tmp, _tmp$1, _tmp$2, bit, bitNum, byte$1, i, inX, inY, inZ, outX, outY, outZ, scalar, xx, y, yy, zz;
  44754. _tmp = $clone(p224FieldElement.zero(), p224FieldElement); _tmp$1 = $clone(p224FieldElement.zero(), p224FieldElement); _tmp$2 = $clone(p224FieldElement.zero(), p224FieldElement); xx = $clone(_tmp, p224FieldElement); yy = $clone(_tmp$1, p224FieldElement); zz = $clone(_tmp$2, p224FieldElement);
  44755. i = 0;
  44756. while (true) {
  44757. if (!(i < 8)) { break; }
  44758. outX.nilCheck, ((i < 0 || i >= outX.length) ? $throwRuntimeError("index out of range") : outX[i] = 0);
  44759. outY.nilCheck, ((i < 0 || i >= outY.length) ? $throwRuntimeError("index out of range") : outY[i] = 0);
  44760. outZ.nilCheck, ((i < 0 || i >= outZ.length) ? $throwRuntimeError("index out of range") : outZ[i] = 0);
  44761. i = i + (1) >> 0;
  44762. }
  44763. _ref = scalar;
  44764. _i = 0;
  44765. while (true) {
  44766. if (!(_i < _ref.$length)) { break; }
  44767. byte$1 = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]);
  44768. bitNum = 0;
  44769. while (true) {
  44770. if (!(bitNum < 8)) { break; }
  44771. p224DoubleJacobian(outX, outY, outZ, outX, outY, outZ);
  44772. bit = ((((((y = ((7 - bitNum >>> 0)), y < 32 ? (byte$1 >>> y) : 0) << 24 >>> 24)) & 1) >>> 0) >>> 0);
  44773. p224AddJacobian(xx, yy, zz, inX, inY, inZ, outX, outY, outZ);
  44774. p224CopyConditional(outX, xx, bit);
  44775. p224CopyConditional(outY, yy, bit);
  44776. p224CopyConditional(outZ, zz, bit);
  44777. bitNum = bitNum + (1) >>> 0;
  44778. }
  44779. _i++;
  44780. }
  44781. };
  44782. p224ToAffine = function(x, y, z) {
  44783. var $ptr, _tmp, _tmp$1, _tmp$2, _tmp$3, isPointAtInfinity, outx, outy, tmp, x, y, z, zinv, zinvsq;
  44784. _tmp = $clone(p224FieldElement.zero(), p224FieldElement); _tmp$1 = $clone(p224FieldElement.zero(), p224FieldElement); _tmp$2 = $clone(p224FieldElement.zero(), p224FieldElement); _tmp$3 = $clone(p224FieldElement.zero(), p224FieldElement); zinv = $clone(_tmp, p224FieldElement); zinvsq = $clone(_tmp$1, p224FieldElement); outx = $clone(_tmp$2, p224FieldElement); outy = $clone(_tmp$3, p224FieldElement);
  44785. tmp = $clone(p224LargeFieldElement.zero(), p224LargeFieldElement);
  44786. isPointAtInfinity = p224IsZero(z);
  44787. if (isPointAtInfinity === 1) {
  44788. return [new big.Int.ptr(), new big.Int.ptr()];
  44789. }
  44790. p224Invert(zinv, z);
  44791. p224Square(zinvsq, zinv, tmp);
  44792. p224Mul(x, x, zinvsq, tmp);
  44793. p224Mul(zinvsq, zinvsq, zinv, tmp);
  44794. p224Mul(y, y, zinvsq, tmp);
  44795. p224Contract(outx, x);
  44796. p224Contract(outy, y);
  44797. return [p224ToBig(outx), p224ToBig(outy)];
  44798. };
  44799. get28BitsFromEnd = function(buf, shift) {
  44800. var $ptr, b, buf, i, l, ret, shift, x, y, y$1;
  44801. ret = 0;
  44802. i = 0;
  44803. while (true) {
  44804. if (!(i < 4)) { break; }
  44805. b = 0;
  44806. l = buf.$length;
  44807. if (l > 0) {
  44808. b = (x = l - 1 >> 0, ((x < 0 || x >= buf.$length) ? $throwRuntimeError("index out of range") : buf.$array[buf.$offset + x]));
  44809. if (!((i === 3)) || (shift === 4)) {
  44810. buf = $subslice(buf, 0, (l - 1 >> 0));
  44811. }
  44812. }
  44813. ret = (ret | (((y = shift, y < 32 ? (((y$1 = ((8 * i >>> 0)), y$1 < 32 ? ((b >>> 0) << y$1) : 0) >>> 0) >>> y) : 0) >>> 0))) >>> 0;
  44814. i = i + (1) >>> 0;
  44815. }
  44816. ret = (ret & (268435455)) >>> 0;
  44817. return [ret, buf];
  44818. };
  44819. p224FromBig = function(out, in$1) {
  44820. var $ptr, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, _tuple$6, _tuple$7, bytes, in$1, out;
  44821. bytes = in$1.Bytes();
  44822. _tuple = get28BitsFromEnd(bytes, 0); out.nilCheck, out[0] = _tuple[0]; bytes = _tuple[1];
  44823. _tuple$1 = get28BitsFromEnd(bytes, 4); out.nilCheck, out[1] = _tuple$1[0]; bytes = _tuple$1[1];
  44824. _tuple$2 = get28BitsFromEnd(bytes, 0); out.nilCheck, out[2] = _tuple$2[0]; bytes = _tuple$2[1];
  44825. _tuple$3 = get28BitsFromEnd(bytes, 4); out.nilCheck, out[3] = _tuple$3[0]; bytes = _tuple$3[1];
  44826. _tuple$4 = get28BitsFromEnd(bytes, 0); out.nilCheck, out[4] = _tuple$4[0]; bytes = _tuple$4[1];
  44827. _tuple$5 = get28BitsFromEnd(bytes, 4); out.nilCheck, out[5] = _tuple$5[0]; bytes = _tuple$5[1];
  44828. _tuple$6 = get28BitsFromEnd(bytes, 0); out.nilCheck, out[6] = _tuple$6[0]; bytes = _tuple$6[1];
  44829. _tuple$7 = get28BitsFromEnd(bytes, 4); out.nilCheck, out[7] = _tuple$7[0]; bytes = _tuple$7[1];
  44830. };
  44831. p224ToBig = function(in$1) {
  44832. var $ptr, buf, in$1;
  44833. buf = $clone(arrayType.zero(), arrayType);
  44834. buf[27] = ((in$1.nilCheck, in$1[0]) << 24 >>> 24);
  44835. buf[26] = (((in$1.nilCheck, in$1[0]) >>> 8 >>> 0) << 24 >>> 24);
  44836. buf[25] = (((in$1.nilCheck, in$1[0]) >>> 16 >>> 0) << 24 >>> 24);
  44837. buf[24] = (((((((((in$1.nilCheck, in$1[0]) >>> 24 >>> 0)) & 15) >>> 0)) | (((((in$1.nilCheck, in$1[1]) << 4 >>> 0)) & 240) >>> 0)) >>> 0) << 24 >>> 24);
  44838. buf[23] = (((in$1.nilCheck, in$1[1]) >>> 4 >>> 0) << 24 >>> 24);
  44839. buf[22] = (((in$1.nilCheck, in$1[1]) >>> 12 >>> 0) << 24 >>> 24);
  44840. buf[21] = (((in$1.nilCheck, in$1[1]) >>> 20 >>> 0) << 24 >>> 24);
  44841. buf[20] = ((in$1.nilCheck, in$1[2]) << 24 >>> 24);
  44842. buf[19] = (((in$1.nilCheck, in$1[2]) >>> 8 >>> 0) << 24 >>> 24);
  44843. buf[18] = (((in$1.nilCheck, in$1[2]) >>> 16 >>> 0) << 24 >>> 24);
  44844. buf[17] = (((((((((in$1.nilCheck, in$1[2]) >>> 24 >>> 0)) & 15) >>> 0)) | (((((in$1.nilCheck, in$1[3]) << 4 >>> 0)) & 240) >>> 0)) >>> 0) << 24 >>> 24);
  44845. buf[16] = (((in$1.nilCheck, in$1[3]) >>> 4 >>> 0) << 24 >>> 24);
  44846. buf[15] = (((in$1.nilCheck, in$1[3]) >>> 12 >>> 0) << 24 >>> 24);
  44847. buf[14] = (((in$1.nilCheck, in$1[3]) >>> 20 >>> 0) << 24 >>> 24);
  44848. buf[13] = ((in$1.nilCheck, in$1[4]) << 24 >>> 24);
  44849. buf[12] = (((in$1.nilCheck, in$1[4]) >>> 8 >>> 0) << 24 >>> 24);
  44850. buf[11] = (((in$1.nilCheck, in$1[4]) >>> 16 >>> 0) << 24 >>> 24);
  44851. buf[10] = (((((((((in$1.nilCheck, in$1[4]) >>> 24 >>> 0)) & 15) >>> 0)) | (((((in$1.nilCheck, in$1[5]) << 4 >>> 0)) & 240) >>> 0)) >>> 0) << 24 >>> 24);
  44852. buf[9] = (((in$1.nilCheck, in$1[5]) >>> 4 >>> 0) << 24 >>> 24);
  44853. buf[8] = (((in$1.nilCheck, in$1[5]) >>> 12 >>> 0) << 24 >>> 24);
  44854. buf[7] = (((in$1.nilCheck, in$1[5]) >>> 20 >>> 0) << 24 >>> 24);
  44855. buf[6] = ((in$1.nilCheck, in$1[6]) << 24 >>> 24);
  44856. buf[5] = (((in$1.nilCheck, in$1[6]) >>> 8 >>> 0) << 24 >>> 24);
  44857. buf[4] = (((in$1.nilCheck, in$1[6]) >>> 16 >>> 0) << 24 >>> 24);
  44858. buf[3] = (((((((((in$1.nilCheck, in$1[6]) >>> 24 >>> 0)) & 15) >>> 0)) | (((((in$1.nilCheck, in$1[7]) << 4 >>> 0)) & 240) >>> 0)) >>> 0) << 24 >>> 24);
  44859. buf[2] = (((in$1.nilCheck, in$1[7]) >>> 4 >>> 0) << 24 >>> 24);
  44860. buf[1] = (((in$1.nilCheck, in$1[7]) >>> 12 >>> 0) << 24 >>> 24);
  44861. buf[0] = (((in$1.nilCheck, in$1[7]) >>> 20 >>> 0) << 24 >>> 24);
  44862. return new big.Int.ptr().SetBytes(new sliceType(buf));
  44863. };
  44864. initP256 = function() {
  44865. var $ptr, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, $s, $r;
  44866. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; _tuple$4 = $f._tuple$4; _tuple$5 = $f._tuple$5; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  44867. p256.CurveParams = new CurveParams.ptr();
  44868. _r = new big.Int.ptr().SetString("115792089210356248762697446949407573530086143415290314195533631308867097853951", 10); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  44869. _tuple = _r; p256.CurveParams.P = _tuple[0];
  44870. _r$1 = new big.Int.ptr().SetString("115792089210356248762697446949407573529996955224135760342422259061068512044369", 10); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  44871. _tuple$1 = _r$1; p256.CurveParams.N = _tuple$1[0];
  44872. _r$2 = new big.Int.ptr().SetString("5ac635d8aa3a93e7b3ebbd55769886bc651d06b0cc53b0f63bce3c3e27d2604b", 16); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  44873. _tuple$2 = _r$2; p256.CurveParams.B = _tuple$2[0];
  44874. _r$3 = new big.Int.ptr().SetString("6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296", 16); /* */ $s = 4; case 4: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  44875. _tuple$3 = _r$3; p256.CurveParams.Gx = _tuple$3[0];
  44876. _r$4 = new big.Int.ptr().SetString("4fe342e2fe1a7f9b8ee7eb4a7c0f9e162bce33576b315ececbb6406837bf51f5", 16); /* */ $s = 5; case 5: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
  44877. _tuple$4 = _r$4; p256.CurveParams.Gy = _tuple$4[0];
  44878. p256.CurveParams.BitSize = 256;
  44879. _r$5 = new big.Int.ptr().SetString("7fffffff00000001fffffffe8000000100000000ffffffff0000000180000000", 16); /* */ $s = 6; case 6: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
  44880. _tuple$5 = _r$5; p256RInverse = _tuple$5[0];
  44881. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: initP256 }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f._tuple$4 = _tuple$4; $f._tuple$5 = _tuple$5; $f.$s = $s; $f.$r = $r; return $f;
  44882. };
  44883. p256Curve.ptr.prototype.Params = function() {
  44884. var $ptr, curve;
  44885. curve = $clone(this, p256Curve);
  44886. return curve.CurveParams;
  44887. };
  44888. p256Curve.prototype.Params = function() { return this.$val.Params(); };
  44889. p256GetScalar = function(out, in$1) {
  44890. var $ptr, _i, _ref, i, in$1, n, out, scalarBytes, v, x;
  44891. n = new big.Int.ptr().SetBytes(in$1);
  44892. scalarBytes = sliceType.nil;
  44893. if (n.Cmp(p256.CurveParams.N) >= 0) {
  44894. n.Mod(n, p256.CurveParams.N);
  44895. scalarBytes = n.Bytes();
  44896. } else {
  44897. scalarBytes = in$1;
  44898. }
  44899. _ref = scalarBytes;
  44900. _i = 0;
  44901. while (true) {
  44902. if (!(_i < _ref.$length)) { break; }
  44903. i = _i;
  44904. v = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]);
  44905. (x = scalarBytes.$length - ((1 + i >> 0)) >> 0, out.nilCheck, ((x < 0 || x >= out.length) ? $throwRuntimeError("index out of range") : out[x] = v));
  44906. _i++;
  44907. }
  44908. };
  44909. p256Curve.ptr.prototype.ScalarBaseMult = function(scalar) {
  44910. var $ptr, _tmp, _tmp$1, _tmp$2, _tuple, scalar, scalarReversed, x, x1, y, y1, z1;
  44911. x = ptrType$1.nil;
  44912. y = ptrType$1.nil;
  44913. scalarReversed = $clone(arrayType$1.zero(), arrayType$1);
  44914. p256GetScalar(scalarReversed, scalar);
  44915. _tmp = $clone(arrayType$2.zero(), arrayType$2); _tmp$1 = $clone(arrayType$2.zero(), arrayType$2); _tmp$2 = $clone(arrayType$2.zero(), arrayType$2); x1 = $clone(_tmp, arrayType$2); y1 = $clone(_tmp$1, arrayType$2); z1 = $clone(_tmp$2, arrayType$2);
  44916. p256ScalarBaseMult(x1, y1, z1, scalarReversed);
  44917. _tuple = p256ToAffine(x1, y1, z1); x = _tuple[0]; y = _tuple[1];
  44918. return [x, y];
  44919. };
  44920. p256Curve.prototype.ScalarBaseMult = function(scalar) { return this.$val.ScalarBaseMult(scalar); };
  44921. p256Curve.ptr.prototype.ScalarMult = function(bigX, bigY, scalar) {
  44922. var $ptr, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tuple, bigX, bigY, px, py, scalar, scalarReversed, x, x1, y, y1, z1;
  44923. x = ptrType$1.nil;
  44924. y = ptrType$1.nil;
  44925. scalarReversed = $clone(arrayType$1.zero(), arrayType$1);
  44926. p256GetScalar(scalarReversed, scalar);
  44927. _tmp = $clone(arrayType$2.zero(), arrayType$2); _tmp$1 = $clone(arrayType$2.zero(), arrayType$2); _tmp$2 = $clone(arrayType$2.zero(), arrayType$2); _tmp$3 = $clone(arrayType$2.zero(), arrayType$2); _tmp$4 = $clone(arrayType$2.zero(), arrayType$2); px = $clone(_tmp, arrayType$2); py = $clone(_tmp$1, arrayType$2); x1 = $clone(_tmp$2, arrayType$2); y1 = $clone(_tmp$3, arrayType$2); z1 = $clone(_tmp$4, arrayType$2);
  44928. p256FromBig(px, bigX);
  44929. p256FromBig(py, bigY);
  44930. p256ScalarMult(x1, y1, z1, px, py, scalarReversed);
  44931. _tuple = p256ToAffine(x1, y1, z1); x = _tuple[0]; y = _tuple[1];
  44932. return [x, y];
  44933. };
  44934. p256Curve.prototype.ScalarMult = function(bigX, bigY, scalar) { return this.$val.ScalarMult(bigX, bigY, scalar); };
  44935. nonZeroToAllOnes = function(x) {
  44936. var $ptr, x;
  44937. return ((((x - 1 >>> 0)) >>> 31 >>> 0)) - 1 >>> 0;
  44938. };
  44939. p256ReduceCarry = function(inout, carry) {
  44940. var $ptr, carry, carry_mask, inout;
  44941. carry_mask = nonZeroToAllOnes(carry);
  44942. inout.nilCheck, inout[0] = (inout.nilCheck, inout[0]) + ((carry << 1 >>> 0)) >>> 0;
  44943. inout.nilCheck, inout[3] = (inout.nilCheck, inout[3]) + (((268435456 & carry_mask) >>> 0)) >>> 0;
  44944. inout.nilCheck, inout[3] = (inout.nilCheck, inout[3]) - ((carry << 11 >>> 0)) >>> 0;
  44945. inout.nilCheck, inout[4] = (inout.nilCheck, inout[4]) + (((536870911 & carry_mask) >>> 0)) >>> 0;
  44946. inout.nilCheck, inout[5] = (inout.nilCheck, inout[5]) + (((268435455 & carry_mask) >>> 0)) >>> 0;
  44947. inout.nilCheck, inout[6] = (inout.nilCheck, inout[6]) + (((536870911 & carry_mask) >>> 0)) >>> 0;
  44948. inout.nilCheck, inout[6] = (inout.nilCheck, inout[6]) - ((carry << 22 >>> 0)) >>> 0;
  44949. inout.nilCheck, inout[7] = (inout.nilCheck, inout[7]) - (((1 & carry_mask) >>> 0)) >>> 0;
  44950. inout.nilCheck, inout[7] = (inout.nilCheck, inout[7]) + ((carry << 25 >>> 0)) >>> 0;
  44951. };
  44952. p256Sum = function(out, in$1, in2) {
  44953. var $ptr, carry, i, in$1, in2, out;
  44954. carry = 0;
  44955. i = 0;
  44956. while (true) {
  44957. out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i] = (in$1.nilCheck, ((i < 0 || i >= in$1.length) ? $throwRuntimeError("index out of range") : in$1[i])) + (in2.nilCheck, ((i < 0 || i >= in2.length) ? $throwRuntimeError("index out of range") : in2[i])) >>> 0);
  44958. out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i] = (out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i])) + (carry) >>> 0);
  44959. carry = (out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i])) >>> 29 >>> 0;
  44960. out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i] = ((out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i])) & (536870911)) >>> 0);
  44961. i = i + (1) >> 0;
  44962. if (i === 9) {
  44963. break;
  44964. }
  44965. out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i] = (in$1.nilCheck, ((i < 0 || i >= in$1.length) ? $throwRuntimeError("index out of range") : in$1[i])) + (in2.nilCheck, ((i < 0 || i >= in2.length) ? $throwRuntimeError("index out of range") : in2[i])) >>> 0);
  44966. out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i] = (out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i])) + (carry) >>> 0);
  44967. carry = (out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i])) >>> 28 >>> 0;
  44968. out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i] = ((out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i])) & (268435455)) >>> 0);
  44969. i = i + (1) >> 0;
  44970. }
  44971. p256ReduceCarry(out, carry);
  44972. };
  44973. p256Diff = function(out, in$1, in2) {
  44974. var $ptr, carry, i, in$1, in2, out;
  44975. carry = 0;
  44976. i = 0;
  44977. while (true) {
  44978. out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i] = (in$1.nilCheck, ((i < 0 || i >= in$1.length) ? $throwRuntimeError("index out of range") : in$1[i])) - (in2.nilCheck, ((i < 0 || i >= in2.length) ? $throwRuntimeError("index out of range") : in2[i])) >>> 0);
  44979. out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i] = (out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i])) + (((i < 0 || i >= p256Zero31.length) ? $throwRuntimeError("index out of range") : p256Zero31[i])) >>> 0);
  44980. out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i] = (out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i])) + (carry) >>> 0);
  44981. carry = (out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i])) >>> 29 >>> 0;
  44982. out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i] = ((out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i])) & (536870911)) >>> 0);
  44983. i = i + (1) >> 0;
  44984. if (i === 9) {
  44985. break;
  44986. }
  44987. out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i] = (in$1.nilCheck, ((i < 0 || i >= in$1.length) ? $throwRuntimeError("index out of range") : in$1[i])) - (in2.nilCheck, ((i < 0 || i >= in2.length) ? $throwRuntimeError("index out of range") : in2[i])) >>> 0);
  44988. out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i] = (out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i])) + (((i < 0 || i >= p256Zero31.length) ? $throwRuntimeError("index out of range") : p256Zero31[i])) >>> 0);
  44989. out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i] = (out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i])) + (carry) >>> 0);
  44990. carry = (out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i])) >>> 28 >>> 0;
  44991. out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i] = ((out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i])) & (268435455)) >>> 0);
  44992. i = i + (1) >> 0;
  44993. }
  44994. p256ReduceCarry(out, carry);
  44995. };
  44996. p256ReduceDegree = function(out, tmp) {
  44997. var $ptr, _index, _index$1, _index$10, _index$11, _index$12, _index$13, _index$14, _index$15, _index$16, _index$17, _index$18, _index$19, _index$2, _index$20, _index$21, _index$22, _index$23, _index$24, _index$3, _index$4, _index$5, _index$6, _index$7, _index$8, _index$9, _tmp, _tmp$1, _tmp$2, carry, i, i$1, i$2, out, tmp, tmp2, x, x$1, x$10, x$11, x$12, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9, xMask;
  44998. tmp = $clone(tmp, arrayType$3);
  44999. tmp2 = $clone(arrayType$4.zero(), arrayType$4);
  45000. _tmp = 0; _tmp$1 = 0; _tmp$2 = 0; carry = _tmp; x = _tmp$1; xMask = _tmp$2;
  45001. tmp2[0] = ((tmp[0].$low >>> 0) & 536870911) >>> 0;
  45002. tmp2[1] = (tmp[0].$low >>> 0) >>> 29 >>> 0;
  45003. tmp2[1] = (tmp2[1] | (((((($shiftRightUint64(tmp[0], 32).$low >>> 0) << 3 >>> 0)) & 268435455) >>> 0))) >>> 0;
  45004. tmp2[1] = tmp2[1] + ((((tmp[1].$low >>> 0) & 268435455) >>> 0)) >>> 0;
  45005. carry = tmp2[1] >>> 28 >>> 0;
  45006. tmp2[1] = (tmp2[1] & (268435455)) >>> 0;
  45007. i = 2;
  45008. while (true) {
  45009. if (!(i < 17)) { break; }
  45010. ((i < 0 || i >= tmp2.length) ? $throwRuntimeError("index out of range") : tmp2[i] = (($shiftRightUint64((x$1 = i - 2 >> 0, ((x$1 < 0 || x$1 >= tmp.length) ? $throwRuntimeError("index out of range") : tmp[x$1])), 32).$low >>> 0)) >>> 25 >>> 0);
  45011. ((i < 0 || i >= tmp2.length) ? $throwRuntimeError("index out of range") : tmp2[i] = ((i < 0 || i >= tmp2.length) ? $throwRuntimeError("index out of range") : tmp2[i]) + (((((x$2 = i - 1 >> 0, ((x$2 < 0 || x$2 >= tmp.length) ? $throwRuntimeError("index out of range") : tmp[x$2])).$low >>> 0)) >>> 28 >>> 0)) >>> 0);
  45012. ((i < 0 || i >= tmp2.length) ? $throwRuntimeError("index out of range") : tmp2[i] = ((i < 0 || i >= tmp2.length) ? $throwRuntimeError("index out of range") : tmp2[i]) + (((((($shiftRightUint64((x$3 = i - 1 >> 0, ((x$3 < 0 || x$3 >= tmp.length) ? $throwRuntimeError("index out of range") : tmp[x$3])), 32).$low >>> 0) << 4 >>> 0)) & 536870911) >>> 0)) >>> 0);
  45013. ((i < 0 || i >= tmp2.length) ? $throwRuntimeError("index out of range") : tmp2[i] = ((i < 0 || i >= tmp2.length) ? $throwRuntimeError("index out of range") : tmp2[i]) + ((((((i < 0 || i >= tmp.length) ? $throwRuntimeError("index out of range") : tmp[i]).$low >>> 0) & 536870911) >>> 0)) >>> 0);
  45014. ((i < 0 || i >= tmp2.length) ? $throwRuntimeError("index out of range") : tmp2[i] = ((i < 0 || i >= tmp2.length) ? $throwRuntimeError("index out of range") : tmp2[i]) + (carry) >>> 0);
  45015. carry = ((i < 0 || i >= tmp2.length) ? $throwRuntimeError("index out of range") : tmp2[i]) >>> 29 >>> 0;
  45016. ((i < 0 || i >= tmp2.length) ? $throwRuntimeError("index out of range") : tmp2[i] = (((i < 0 || i >= tmp2.length) ? $throwRuntimeError("index out of range") : tmp2[i]) & (536870911)) >>> 0);
  45017. i = i + (1) >> 0;
  45018. if (i === 17) {
  45019. break;
  45020. }
  45021. ((i < 0 || i >= tmp2.length) ? $throwRuntimeError("index out of range") : tmp2[i] = ($shiftRightUint64((x$4 = i - 2 >> 0, ((x$4 < 0 || x$4 >= tmp.length) ? $throwRuntimeError("index out of range") : tmp[x$4])), 32).$low >>> 0) >>> 25 >>> 0);
  45022. ((i < 0 || i >= tmp2.length) ? $throwRuntimeError("index out of range") : tmp2[i] = ((i < 0 || i >= tmp2.length) ? $throwRuntimeError("index out of range") : tmp2[i]) + ((((x$5 = i - 1 >> 0, ((x$5 < 0 || x$5 >= tmp.length) ? $throwRuntimeError("index out of range") : tmp[x$5])).$low >>> 0) >>> 29 >>> 0)) >>> 0);
  45023. ((i < 0 || i >= tmp2.length) ? $throwRuntimeError("index out of range") : tmp2[i] = ((i < 0 || i >= tmp2.length) ? $throwRuntimeError("index out of range") : tmp2[i]) + ((((((($shiftRightUint64((x$6 = i - 1 >> 0, ((x$6 < 0 || x$6 >= tmp.length) ? $throwRuntimeError("index out of range") : tmp[x$6])), 32).$low >>> 0)) << 3 >>> 0)) & 268435455) >>> 0)) >>> 0);
  45024. ((i < 0 || i >= tmp2.length) ? $throwRuntimeError("index out of range") : tmp2[i] = ((i < 0 || i >= tmp2.length) ? $throwRuntimeError("index out of range") : tmp2[i]) + ((((((i < 0 || i >= tmp.length) ? $throwRuntimeError("index out of range") : tmp[i]).$low >>> 0) & 268435455) >>> 0)) >>> 0);
  45025. ((i < 0 || i >= tmp2.length) ? $throwRuntimeError("index out of range") : tmp2[i] = ((i < 0 || i >= tmp2.length) ? $throwRuntimeError("index out of range") : tmp2[i]) + (carry) >>> 0);
  45026. carry = ((i < 0 || i >= tmp2.length) ? $throwRuntimeError("index out of range") : tmp2[i]) >>> 28 >>> 0;
  45027. ((i < 0 || i >= tmp2.length) ? $throwRuntimeError("index out of range") : tmp2[i] = (((i < 0 || i >= tmp2.length) ? $throwRuntimeError("index out of range") : tmp2[i]) & (268435455)) >>> 0);
  45028. i = i + (1) >> 0;
  45029. }
  45030. tmp2[17] = ($shiftRightUint64(tmp[15], 32).$low >>> 0) >>> 25 >>> 0;
  45031. tmp2[17] = tmp2[17] + (((tmp[16].$low >>> 0) >>> 29 >>> 0)) >>> 0;
  45032. tmp2[17] = tmp2[17] + ((($shiftRightUint64(tmp[16], 32).$low >>> 0) << 3 >>> 0)) >>> 0;
  45033. tmp2[17] = tmp2[17] + (carry) >>> 0;
  45034. i$1 = 0;
  45035. while (true) {
  45036. _index = i$1 + 1 >> 0;
  45037. ((_index < 0 || _index >= tmp2.length) ? $throwRuntimeError("index out of range") : tmp2[_index] = ((_index < 0 || _index >= tmp2.length) ? $throwRuntimeError("index out of range") : tmp2[_index]) + ((((i$1 < 0 || i$1 >= tmp2.length) ? $throwRuntimeError("index out of range") : tmp2[i$1]) >>> 29 >>> 0)) >>> 0);
  45038. x = (((i$1 < 0 || i$1 >= tmp2.length) ? $throwRuntimeError("index out of range") : tmp2[i$1]) & 536870911) >>> 0;
  45039. xMask = nonZeroToAllOnes(x);
  45040. ((i$1 < 0 || i$1 >= tmp2.length) ? $throwRuntimeError("index out of range") : tmp2[i$1] = 0);
  45041. _index$1 = i$1 + 3 >> 0;
  45042. ((_index$1 < 0 || _index$1 >= tmp2.length) ? $throwRuntimeError("index out of range") : tmp2[_index$1] = ((_index$1 < 0 || _index$1 >= tmp2.length) ? $throwRuntimeError("index out of range") : tmp2[_index$1]) + (((((x << 10 >>> 0)) & 268435455) >>> 0)) >>> 0);
  45043. _index$2 = i$1 + 4 >> 0;
  45044. ((_index$2 < 0 || _index$2 >= tmp2.length) ? $throwRuntimeError("index out of range") : tmp2[_index$2] = ((_index$2 < 0 || _index$2 >= tmp2.length) ? $throwRuntimeError("index out of range") : tmp2[_index$2]) + (((x >>> 18 >>> 0))) >>> 0);
  45045. _index$3 = i$1 + 6 >> 0;
  45046. ((_index$3 < 0 || _index$3 >= tmp2.length) ? $throwRuntimeError("index out of range") : tmp2[_index$3] = ((_index$3 < 0 || _index$3 >= tmp2.length) ? $throwRuntimeError("index out of range") : tmp2[_index$3]) + (((((x << 21 >>> 0)) & 536870911) >>> 0)) >>> 0);
  45047. _index$4 = i$1 + 7 >> 0;
  45048. ((_index$4 < 0 || _index$4 >= tmp2.length) ? $throwRuntimeError("index out of range") : tmp2[_index$4] = ((_index$4 < 0 || _index$4 >= tmp2.length) ? $throwRuntimeError("index out of range") : tmp2[_index$4]) + ((x >>> 8 >>> 0)) >>> 0);
  45049. _index$5 = i$1 + 7 >> 0;
  45050. ((_index$5 < 0 || _index$5 >= tmp2.length) ? $throwRuntimeError("index out of range") : tmp2[_index$5] = ((_index$5 < 0 || _index$5 >= tmp2.length) ? $throwRuntimeError("index out of range") : tmp2[_index$5]) + (((268435456 & xMask) >>> 0)) >>> 0);
  45051. _index$6 = i$1 + 8 >> 0;
  45052. ((_index$6 < 0 || _index$6 >= tmp2.length) ? $throwRuntimeError("index out of range") : tmp2[_index$6] = ((_index$6 < 0 || _index$6 >= tmp2.length) ? $throwRuntimeError("index out of range") : tmp2[_index$6]) + (((((x - 1 >>> 0)) & xMask) >>> 0)) >>> 0);
  45053. _index$7 = i$1 + 7 >> 0;
  45054. ((_index$7 < 0 || _index$7 >= tmp2.length) ? $throwRuntimeError("index out of range") : tmp2[_index$7] = ((_index$7 < 0 || _index$7 >= tmp2.length) ? $throwRuntimeError("index out of range") : tmp2[_index$7]) - (((((x << 24 >>> 0)) & 268435455) >>> 0)) >>> 0);
  45055. _index$8 = i$1 + 8 >> 0;
  45056. ((_index$8 < 0 || _index$8 >= tmp2.length) ? $throwRuntimeError("index out of range") : tmp2[_index$8] = ((_index$8 < 0 || _index$8 >= tmp2.length) ? $throwRuntimeError("index out of range") : tmp2[_index$8]) - ((x >>> 4 >>> 0)) >>> 0);
  45057. _index$9 = i$1 + 8 >> 0;
  45058. ((_index$9 < 0 || _index$9 >= tmp2.length) ? $throwRuntimeError("index out of range") : tmp2[_index$9] = ((_index$9 < 0 || _index$9 >= tmp2.length) ? $throwRuntimeError("index out of range") : tmp2[_index$9]) + (((536870912 & xMask) >>> 0)) >>> 0);
  45059. _index$10 = i$1 + 8 >> 0;
  45060. ((_index$10 < 0 || _index$10 >= tmp2.length) ? $throwRuntimeError("index out of range") : tmp2[_index$10] = ((_index$10 < 0 || _index$10 >= tmp2.length) ? $throwRuntimeError("index out of range") : tmp2[_index$10]) - (x) >>> 0);
  45061. _index$11 = i$1 + 8 >> 0;
  45062. ((_index$11 < 0 || _index$11 >= tmp2.length) ? $throwRuntimeError("index out of range") : tmp2[_index$11] = ((_index$11 < 0 || _index$11 >= tmp2.length) ? $throwRuntimeError("index out of range") : tmp2[_index$11]) + (((((x << 28 >>> 0)) & 536870911) >>> 0)) >>> 0);
  45063. _index$12 = i$1 + 9 >> 0;
  45064. ((_index$12 < 0 || _index$12 >= tmp2.length) ? $throwRuntimeError("index out of range") : tmp2[_index$12] = ((_index$12 < 0 || _index$12 >= tmp2.length) ? $throwRuntimeError("index out of range") : tmp2[_index$12]) + (((((((x >>> 1 >>> 0)) - 1 >>> 0)) & xMask) >>> 0)) >>> 0);
  45065. if ((i$1 + 1 >> 0) === 9) {
  45066. break;
  45067. }
  45068. _index$13 = i$1 + 2 >> 0;
  45069. ((_index$13 < 0 || _index$13 >= tmp2.length) ? $throwRuntimeError("index out of range") : tmp2[_index$13] = ((_index$13 < 0 || _index$13 >= tmp2.length) ? $throwRuntimeError("index out of range") : tmp2[_index$13]) + (((x$7 = i$1 + 1 >> 0, ((x$7 < 0 || x$7 >= tmp2.length) ? $throwRuntimeError("index out of range") : tmp2[x$7])) >>> 28 >>> 0)) >>> 0);
  45070. x = ((x$8 = i$1 + 1 >> 0, ((x$8 < 0 || x$8 >= tmp2.length) ? $throwRuntimeError("index out of range") : tmp2[x$8])) & 268435455) >>> 0;
  45071. xMask = nonZeroToAllOnes(x);
  45072. (x$9 = i$1 + 1 >> 0, ((x$9 < 0 || x$9 >= tmp2.length) ? $throwRuntimeError("index out of range") : tmp2[x$9] = 0));
  45073. _index$14 = i$1 + 4 >> 0;
  45074. ((_index$14 < 0 || _index$14 >= tmp2.length) ? $throwRuntimeError("index out of range") : tmp2[_index$14] = ((_index$14 < 0 || _index$14 >= tmp2.length) ? $throwRuntimeError("index out of range") : tmp2[_index$14]) + (((((x << 11 >>> 0)) & 536870911) >>> 0)) >>> 0);
  45075. _index$15 = i$1 + 5 >> 0;
  45076. ((_index$15 < 0 || _index$15 >= tmp2.length) ? $throwRuntimeError("index out of range") : tmp2[_index$15] = ((_index$15 < 0 || _index$15 >= tmp2.length) ? $throwRuntimeError("index out of range") : tmp2[_index$15]) + (((x >>> 18 >>> 0))) >>> 0);
  45077. _index$16 = i$1 + 7 >> 0;
  45078. ((_index$16 < 0 || _index$16 >= tmp2.length) ? $throwRuntimeError("index out of range") : tmp2[_index$16] = ((_index$16 < 0 || _index$16 >= tmp2.length) ? $throwRuntimeError("index out of range") : tmp2[_index$16]) + (((((x << 21 >>> 0)) & 268435455) >>> 0)) >>> 0);
  45079. _index$17 = i$1 + 8 >> 0;
  45080. ((_index$17 < 0 || _index$17 >= tmp2.length) ? $throwRuntimeError("index out of range") : tmp2[_index$17] = ((_index$17 < 0 || _index$17 >= tmp2.length) ? $throwRuntimeError("index out of range") : tmp2[_index$17]) + ((x >>> 7 >>> 0)) >>> 0);
  45081. _index$18 = i$1 + 8 >> 0;
  45082. ((_index$18 < 0 || _index$18 >= tmp2.length) ? $throwRuntimeError("index out of range") : tmp2[_index$18] = ((_index$18 < 0 || _index$18 >= tmp2.length) ? $throwRuntimeError("index out of range") : tmp2[_index$18]) + (((536870912 & xMask) >>> 0)) >>> 0);
  45083. _index$19 = i$1 + 9 >> 0;
  45084. ((_index$19 < 0 || _index$19 >= tmp2.length) ? $throwRuntimeError("index out of range") : tmp2[_index$19] = ((_index$19 < 0 || _index$19 >= tmp2.length) ? $throwRuntimeError("index out of range") : tmp2[_index$19]) + (((((x - 1 >>> 0)) & xMask) >>> 0)) >>> 0);
  45085. _index$20 = i$1 + 8 >> 0;
  45086. ((_index$20 < 0 || _index$20 >= tmp2.length) ? $throwRuntimeError("index out of range") : tmp2[_index$20] = ((_index$20 < 0 || _index$20 >= tmp2.length) ? $throwRuntimeError("index out of range") : tmp2[_index$20]) - (((((x << 25 >>> 0)) & 536870911) >>> 0)) >>> 0);
  45087. _index$21 = i$1 + 9 >> 0;
  45088. ((_index$21 < 0 || _index$21 >= tmp2.length) ? $throwRuntimeError("index out of range") : tmp2[_index$21] = ((_index$21 < 0 || _index$21 >= tmp2.length) ? $throwRuntimeError("index out of range") : tmp2[_index$21]) - ((x >>> 4 >>> 0)) >>> 0);
  45089. _index$22 = i$1 + 9 >> 0;
  45090. ((_index$22 < 0 || _index$22 >= tmp2.length) ? $throwRuntimeError("index out of range") : tmp2[_index$22] = ((_index$22 < 0 || _index$22 >= tmp2.length) ? $throwRuntimeError("index out of range") : tmp2[_index$22]) + (((268435456 & xMask) >>> 0)) >>> 0);
  45091. _index$23 = i$1 + 9 >> 0;
  45092. ((_index$23 < 0 || _index$23 >= tmp2.length) ? $throwRuntimeError("index out of range") : tmp2[_index$23] = ((_index$23 < 0 || _index$23 >= tmp2.length) ? $throwRuntimeError("index out of range") : tmp2[_index$23]) - (x) >>> 0);
  45093. _index$24 = i$1 + 10 >> 0;
  45094. ((_index$24 < 0 || _index$24 >= tmp2.length) ? $throwRuntimeError("index out of range") : tmp2[_index$24] = ((_index$24 < 0 || _index$24 >= tmp2.length) ? $throwRuntimeError("index out of range") : tmp2[_index$24]) + (((((x - 1 >>> 0)) & xMask) >>> 0)) >>> 0);
  45095. i$1 = i$1 + (2) >> 0;
  45096. }
  45097. carry = 0;
  45098. i$2 = 0;
  45099. while (true) {
  45100. if (!(i$2 < 8)) { break; }
  45101. out.nilCheck, ((i$2 < 0 || i$2 >= out.length) ? $throwRuntimeError("index out of range") : out[i$2] = (x$10 = i$2 + 9 >> 0, ((x$10 < 0 || x$10 >= tmp2.length) ? $throwRuntimeError("index out of range") : tmp2[x$10])));
  45102. out.nilCheck, ((i$2 < 0 || i$2 >= out.length) ? $throwRuntimeError("index out of range") : out[i$2] = (out.nilCheck, ((i$2 < 0 || i$2 >= out.length) ? $throwRuntimeError("index out of range") : out[i$2])) + (carry) >>> 0);
  45103. out.nilCheck, ((i$2 < 0 || i$2 >= out.length) ? $throwRuntimeError("index out of range") : out[i$2] = (out.nilCheck, ((i$2 < 0 || i$2 >= out.length) ? $throwRuntimeError("index out of range") : out[i$2])) + ((((((x$11 = i$2 + 10 >> 0, ((x$11 < 0 || x$11 >= tmp2.length) ? $throwRuntimeError("index out of range") : tmp2[x$11])) << 28 >>> 0)) & 536870911) >>> 0)) >>> 0);
  45104. carry = (out.nilCheck, ((i$2 < 0 || i$2 >= out.length) ? $throwRuntimeError("index out of range") : out[i$2])) >>> 29 >>> 0;
  45105. out.nilCheck, ((i$2 < 0 || i$2 >= out.length) ? $throwRuntimeError("index out of range") : out[i$2] = ((out.nilCheck, ((i$2 < 0 || i$2 >= out.length) ? $throwRuntimeError("index out of range") : out[i$2])) & (536870911)) >>> 0);
  45106. i$2 = i$2 + (1) >> 0;
  45107. out.nilCheck, ((i$2 < 0 || i$2 >= out.length) ? $throwRuntimeError("index out of range") : out[i$2] = (x$12 = i$2 + 9 >> 0, ((x$12 < 0 || x$12 >= tmp2.length) ? $throwRuntimeError("index out of range") : tmp2[x$12])) >>> 1 >>> 0);
  45108. out.nilCheck, ((i$2 < 0 || i$2 >= out.length) ? $throwRuntimeError("index out of range") : out[i$2] = (out.nilCheck, ((i$2 < 0 || i$2 >= out.length) ? $throwRuntimeError("index out of range") : out[i$2])) + (carry) >>> 0);
  45109. carry = (out.nilCheck, ((i$2 < 0 || i$2 >= out.length) ? $throwRuntimeError("index out of range") : out[i$2])) >>> 28 >>> 0;
  45110. out.nilCheck, ((i$2 < 0 || i$2 >= out.length) ? $throwRuntimeError("index out of range") : out[i$2] = ((out.nilCheck, ((i$2 < 0 || i$2 >= out.length) ? $throwRuntimeError("index out of range") : out[i$2])) & (268435455)) >>> 0);
  45111. i$2 = i$2 + (1) >> 0;
  45112. }
  45113. out.nilCheck, out[8] = tmp2[17];
  45114. out.nilCheck, out[8] = (out.nilCheck, out[8]) + (carry) >>> 0;
  45115. carry = (out.nilCheck, out[8]) >>> 29 >>> 0;
  45116. out.nilCheck, out[8] = ((out.nilCheck, out[8]) & (536870911)) >>> 0;
  45117. p256ReduceCarry(out, carry);
  45118. };
  45119. p256Square = function(out, in$1) {
  45120. var $ptr, in$1, out, tmp, x, x$1, x$10, x$11, x$12, x$13, x$14, x$15, x$16, x$17, x$18, x$19, x$2, x$20, x$21, x$22, x$23, x$24, x$25, x$26, x$27, x$28, x$29, x$3, x$30, x$31, x$32, x$33, x$34, x$35, x$36, x$37, x$38, x$39, x$4, x$40, x$41, x$42, x$43, x$44, x$45, x$46, x$47, x$48, x$49, x$5, x$50, x$51, x$52, x$53, x$54, x$55, x$6, x$7, x$8, x$9;
  45121. tmp = $clone(arrayType$3.zero(), arrayType$3);
  45122. tmp[0] = $mul64(new $Uint64(0, (in$1.nilCheck, in$1[0])), new $Uint64(0, (in$1.nilCheck, in$1[0])));
  45123. tmp[1] = $mul64(new $Uint64(0, (in$1.nilCheck, in$1[0])), ($shiftLeft64(new $Uint64(0, (in$1.nilCheck, in$1[1])), 1)));
  45124. tmp[2] = (x = $mul64(new $Uint64(0, (in$1.nilCheck, in$1[0])), ($shiftLeft64(new $Uint64(0, (in$1.nilCheck, in$1[2])), 1))), x$1 = $mul64(new $Uint64(0, (in$1.nilCheck, in$1[1])), ($shiftLeft64(new $Uint64(0, (in$1.nilCheck, in$1[1])), 1))), new $Uint64(x.$high + x$1.$high, x.$low + x$1.$low));
  45125. tmp[3] = (x$2 = $mul64(new $Uint64(0, (in$1.nilCheck, in$1[0])), ($shiftLeft64(new $Uint64(0, (in$1.nilCheck, in$1[3])), 1))), x$3 = $mul64(new $Uint64(0, (in$1.nilCheck, in$1[1])), ($shiftLeft64(new $Uint64(0, (in$1.nilCheck, in$1[2])), 1))), new $Uint64(x$2.$high + x$3.$high, x$2.$low + x$3.$low));
  45126. tmp[4] = (x$4 = (x$5 = $mul64(new $Uint64(0, (in$1.nilCheck, in$1[0])), ($shiftLeft64(new $Uint64(0, (in$1.nilCheck, in$1[4])), 1))), x$6 = $mul64(new $Uint64(0, (in$1.nilCheck, in$1[1])), ($shiftLeft64(new $Uint64(0, (in$1.nilCheck, in$1[3])), 2))), new $Uint64(x$5.$high + x$6.$high, x$5.$low + x$6.$low)), x$7 = $mul64(new $Uint64(0, (in$1.nilCheck, in$1[2])), new $Uint64(0, (in$1.nilCheck, in$1[2]))), new $Uint64(x$4.$high + x$7.$high, x$4.$low + x$7.$low));
  45127. tmp[5] = (x$8 = (x$9 = $mul64(new $Uint64(0, (in$1.nilCheck, in$1[0])), ($shiftLeft64(new $Uint64(0, (in$1.nilCheck, in$1[5])), 1))), x$10 = $mul64(new $Uint64(0, (in$1.nilCheck, in$1[1])), ($shiftLeft64(new $Uint64(0, (in$1.nilCheck, in$1[4])), 1))), new $Uint64(x$9.$high + x$10.$high, x$9.$low + x$10.$low)), x$11 = $mul64(new $Uint64(0, (in$1.nilCheck, in$1[2])), ($shiftLeft64(new $Uint64(0, (in$1.nilCheck, in$1[3])), 1))), new $Uint64(x$8.$high + x$11.$high, x$8.$low + x$11.$low));
  45128. tmp[6] = (x$12 = (x$13 = (x$14 = $mul64(new $Uint64(0, (in$1.nilCheck, in$1[0])), ($shiftLeft64(new $Uint64(0, (in$1.nilCheck, in$1[6])), 1))), x$15 = $mul64(new $Uint64(0, (in$1.nilCheck, in$1[1])), ($shiftLeft64(new $Uint64(0, (in$1.nilCheck, in$1[5])), 2))), new $Uint64(x$14.$high + x$15.$high, x$14.$low + x$15.$low)), x$16 = $mul64(new $Uint64(0, (in$1.nilCheck, in$1[2])), ($shiftLeft64(new $Uint64(0, (in$1.nilCheck, in$1[4])), 1))), new $Uint64(x$13.$high + x$16.$high, x$13.$low + x$16.$low)), x$17 = $mul64(new $Uint64(0, (in$1.nilCheck, in$1[3])), ($shiftLeft64(new $Uint64(0, (in$1.nilCheck, in$1[3])), 1))), new $Uint64(x$12.$high + x$17.$high, x$12.$low + x$17.$low));
  45129. tmp[7] = (x$18 = (x$19 = (x$20 = $mul64(new $Uint64(0, (in$1.nilCheck, in$1[0])), ($shiftLeft64(new $Uint64(0, (in$1.nilCheck, in$1[7])), 1))), x$21 = $mul64(new $Uint64(0, (in$1.nilCheck, in$1[1])), ($shiftLeft64(new $Uint64(0, (in$1.nilCheck, in$1[6])), 1))), new $Uint64(x$20.$high + x$21.$high, x$20.$low + x$21.$low)), x$22 = $mul64(new $Uint64(0, (in$1.nilCheck, in$1[2])), ($shiftLeft64(new $Uint64(0, (in$1.nilCheck, in$1[5])), 1))), new $Uint64(x$19.$high + x$22.$high, x$19.$low + x$22.$low)), x$23 = $mul64(new $Uint64(0, (in$1.nilCheck, in$1[3])), ($shiftLeft64(new $Uint64(0, (in$1.nilCheck, in$1[4])), 1))), new $Uint64(x$18.$high + x$23.$high, x$18.$low + x$23.$low));
  45130. tmp[8] = (x$24 = (x$25 = (x$26 = (x$27 = $mul64(new $Uint64(0, (in$1.nilCheck, in$1[0])), ($shiftLeft64(new $Uint64(0, (in$1.nilCheck, in$1[8])), 1))), x$28 = $mul64(new $Uint64(0, (in$1.nilCheck, in$1[1])), ($shiftLeft64(new $Uint64(0, (in$1.nilCheck, in$1[7])), 2))), new $Uint64(x$27.$high + x$28.$high, x$27.$low + x$28.$low)), x$29 = $mul64(new $Uint64(0, (in$1.nilCheck, in$1[2])), ($shiftLeft64(new $Uint64(0, (in$1.nilCheck, in$1[6])), 1))), new $Uint64(x$26.$high + x$29.$high, x$26.$low + x$29.$low)), x$30 = $mul64(new $Uint64(0, (in$1.nilCheck, in$1[3])), ($shiftLeft64(new $Uint64(0, (in$1.nilCheck, in$1[5])), 2))), new $Uint64(x$25.$high + x$30.$high, x$25.$low + x$30.$low)), x$31 = $mul64(new $Uint64(0, (in$1.nilCheck, in$1[4])), new $Uint64(0, (in$1.nilCheck, in$1[4]))), new $Uint64(x$24.$high + x$31.$high, x$24.$low + x$31.$low));
  45131. tmp[9] = (x$32 = (x$33 = (x$34 = $mul64(new $Uint64(0, (in$1.nilCheck, in$1[1])), ($shiftLeft64(new $Uint64(0, (in$1.nilCheck, in$1[8])), 1))), x$35 = $mul64(new $Uint64(0, (in$1.nilCheck, in$1[2])), ($shiftLeft64(new $Uint64(0, (in$1.nilCheck, in$1[7])), 1))), new $Uint64(x$34.$high + x$35.$high, x$34.$low + x$35.$low)), x$36 = $mul64(new $Uint64(0, (in$1.nilCheck, in$1[3])), ($shiftLeft64(new $Uint64(0, (in$1.nilCheck, in$1[6])), 1))), new $Uint64(x$33.$high + x$36.$high, x$33.$low + x$36.$low)), x$37 = $mul64(new $Uint64(0, (in$1.nilCheck, in$1[4])), ($shiftLeft64(new $Uint64(0, (in$1.nilCheck, in$1[5])), 1))), new $Uint64(x$32.$high + x$37.$high, x$32.$low + x$37.$low));
  45132. tmp[10] = (x$38 = (x$39 = (x$40 = $mul64(new $Uint64(0, (in$1.nilCheck, in$1[2])), ($shiftLeft64(new $Uint64(0, (in$1.nilCheck, in$1[8])), 1))), x$41 = $mul64(new $Uint64(0, (in$1.nilCheck, in$1[3])), ($shiftLeft64(new $Uint64(0, (in$1.nilCheck, in$1[7])), 2))), new $Uint64(x$40.$high + x$41.$high, x$40.$low + x$41.$low)), x$42 = $mul64(new $Uint64(0, (in$1.nilCheck, in$1[4])), ($shiftLeft64(new $Uint64(0, (in$1.nilCheck, in$1[6])), 1))), new $Uint64(x$39.$high + x$42.$high, x$39.$low + x$42.$low)), x$43 = $mul64(new $Uint64(0, (in$1.nilCheck, in$1[5])), ($shiftLeft64(new $Uint64(0, (in$1.nilCheck, in$1[5])), 1))), new $Uint64(x$38.$high + x$43.$high, x$38.$low + x$43.$low));
  45133. tmp[11] = (x$44 = (x$45 = $mul64(new $Uint64(0, (in$1.nilCheck, in$1[3])), ($shiftLeft64(new $Uint64(0, (in$1.nilCheck, in$1[8])), 1))), x$46 = $mul64(new $Uint64(0, (in$1.nilCheck, in$1[4])), ($shiftLeft64(new $Uint64(0, (in$1.nilCheck, in$1[7])), 1))), new $Uint64(x$45.$high + x$46.$high, x$45.$low + x$46.$low)), x$47 = $mul64(new $Uint64(0, (in$1.nilCheck, in$1[5])), ($shiftLeft64(new $Uint64(0, (in$1.nilCheck, in$1[6])), 1))), new $Uint64(x$44.$high + x$47.$high, x$44.$low + x$47.$low));
  45134. tmp[12] = (x$48 = (x$49 = $mul64(new $Uint64(0, (in$1.nilCheck, in$1[4])), ($shiftLeft64(new $Uint64(0, (in$1.nilCheck, in$1[8])), 1))), x$50 = $mul64(new $Uint64(0, (in$1.nilCheck, in$1[5])), ($shiftLeft64(new $Uint64(0, (in$1.nilCheck, in$1[7])), 2))), new $Uint64(x$49.$high + x$50.$high, x$49.$low + x$50.$low)), x$51 = $mul64(new $Uint64(0, (in$1.nilCheck, in$1[6])), new $Uint64(0, (in$1.nilCheck, in$1[6]))), new $Uint64(x$48.$high + x$51.$high, x$48.$low + x$51.$low));
  45135. tmp[13] = (x$52 = $mul64(new $Uint64(0, (in$1.nilCheck, in$1[5])), ($shiftLeft64(new $Uint64(0, (in$1.nilCheck, in$1[8])), 1))), x$53 = $mul64(new $Uint64(0, (in$1.nilCheck, in$1[6])), ($shiftLeft64(new $Uint64(0, (in$1.nilCheck, in$1[7])), 1))), new $Uint64(x$52.$high + x$53.$high, x$52.$low + x$53.$low));
  45136. tmp[14] = (x$54 = $mul64(new $Uint64(0, (in$1.nilCheck, in$1[6])), ($shiftLeft64(new $Uint64(0, (in$1.nilCheck, in$1[8])), 1))), x$55 = $mul64(new $Uint64(0, (in$1.nilCheck, in$1[7])), ($shiftLeft64(new $Uint64(0, (in$1.nilCheck, in$1[7])), 1))), new $Uint64(x$54.$high + x$55.$high, x$54.$low + x$55.$low));
  45137. tmp[15] = $mul64(new $Uint64(0, (in$1.nilCheck, in$1[7])), ($shiftLeft64(new $Uint64(0, (in$1.nilCheck, in$1[8])), 1)));
  45138. tmp[16] = $mul64(new $Uint64(0, (in$1.nilCheck, in$1[8])), new $Uint64(0, (in$1.nilCheck, in$1[8])));
  45139. p256ReduceDegree(out, tmp);
  45140. };
  45141. p256Mul = function(out, in$1, in2) {
  45142. var $ptr, in$1, in2, out, tmp, x, x$1, x$10, x$100, x$101, x$102, x$103, x$104, x$105, x$106, x$107, x$108, x$109, x$11, x$110, x$111, x$112, x$113, x$114, x$115, x$116, x$117, x$118, x$119, x$12, x$120, x$121, x$122, x$123, x$124, x$125, x$126, x$127, x$13, x$14, x$15, x$16, x$17, x$18, x$19, x$2, x$20, x$21, x$22, x$23, x$24, x$25, x$26, x$27, x$28, x$29, x$3, x$30, x$31, x$32, x$33, x$34, x$35, x$36, x$37, x$38, x$39, x$4, x$40, x$41, x$42, x$43, x$44, x$45, x$46, x$47, x$48, x$49, x$5, x$50, x$51, x$52, x$53, x$54, x$55, x$56, x$57, x$58, x$59, x$6, x$60, x$61, x$62, x$63, x$64, x$65, x$66, x$67, x$68, x$69, x$7, x$70, x$71, x$72, x$73, x$74, x$75, x$76, x$77, x$78, x$79, x$8, x$80, x$81, x$82, x$83, x$84, x$85, x$86, x$87, x$88, x$89, x$9, x$90, x$91, x$92, x$93, x$94, x$95, x$96, x$97, x$98, x$99;
  45143. tmp = $clone(arrayType$3.zero(), arrayType$3);
  45144. tmp[0] = $mul64(new $Uint64(0, (in$1.nilCheck, in$1[0])), new $Uint64(0, (in2.nilCheck, in2[0])));
  45145. tmp[1] = (x = $mul64(new $Uint64(0, (in$1.nilCheck, in$1[0])), ($shiftLeft64(new $Uint64(0, (in2.nilCheck, in2[1])), 0))), x$1 = $mul64(new $Uint64(0, (in$1.nilCheck, in$1[1])), ($shiftLeft64(new $Uint64(0, (in2.nilCheck, in2[0])), 0))), new $Uint64(x.$high + x$1.$high, x.$low + x$1.$low));
  45146. tmp[2] = (x$2 = (x$3 = $mul64(new $Uint64(0, (in$1.nilCheck, in$1[0])), ($shiftLeft64(new $Uint64(0, (in2.nilCheck, in2[2])), 0))), x$4 = $mul64(new $Uint64(0, (in$1.nilCheck, in$1[1])), ($shiftLeft64(new $Uint64(0, (in2.nilCheck, in2[1])), 1))), new $Uint64(x$3.$high + x$4.$high, x$3.$low + x$4.$low)), x$5 = $mul64(new $Uint64(0, (in$1.nilCheck, in$1[2])), ($shiftLeft64(new $Uint64(0, (in2.nilCheck, in2[0])), 0))), new $Uint64(x$2.$high + x$5.$high, x$2.$low + x$5.$low));
  45147. tmp[3] = (x$6 = (x$7 = (x$8 = $mul64(new $Uint64(0, (in$1.nilCheck, in$1[0])), ($shiftLeft64(new $Uint64(0, (in2.nilCheck, in2[3])), 0))), x$9 = $mul64(new $Uint64(0, (in$1.nilCheck, in$1[1])), ($shiftLeft64(new $Uint64(0, (in2.nilCheck, in2[2])), 0))), new $Uint64(x$8.$high + x$9.$high, x$8.$low + x$9.$low)), x$10 = $mul64(new $Uint64(0, (in$1.nilCheck, in$1[2])), ($shiftLeft64(new $Uint64(0, (in2.nilCheck, in2[1])), 0))), new $Uint64(x$7.$high + x$10.$high, x$7.$low + x$10.$low)), x$11 = $mul64(new $Uint64(0, (in$1.nilCheck, in$1[3])), ($shiftLeft64(new $Uint64(0, (in2.nilCheck, in2[0])), 0))), new $Uint64(x$6.$high + x$11.$high, x$6.$low + x$11.$low));
  45148. tmp[4] = (x$12 = (x$13 = (x$14 = (x$15 = $mul64(new $Uint64(0, (in$1.nilCheck, in$1[0])), ($shiftLeft64(new $Uint64(0, (in2.nilCheck, in2[4])), 0))), x$16 = $mul64(new $Uint64(0, (in$1.nilCheck, in$1[1])), ($shiftLeft64(new $Uint64(0, (in2.nilCheck, in2[3])), 1))), new $Uint64(x$15.$high + x$16.$high, x$15.$low + x$16.$low)), x$17 = $mul64(new $Uint64(0, (in$1.nilCheck, in$1[2])), ($shiftLeft64(new $Uint64(0, (in2.nilCheck, in2[2])), 0))), new $Uint64(x$14.$high + x$17.$high, x$14.$low + x$17.$low)), x$18 = $mul64(new $Uint64(0, (in$1.nilCheck, in$1[3])), ($shiftLeft64(new $Uint64(0, (in2.nilCheck, in2[1])), 1))), new $Uint64(x$13.$high + x$18.$high, x$13.$low + x$18.$low)), x$19 = $mul64(new $Uint64(0, (in$1.nilCheck, in$1[4])), ($shiftLeft64(new $Uint64(0, (in2.nilCheck, in2[0])), 0))), new $Uint64(x$12.$high + x$19.$high, x$12.$low + x$19.$low));
  45149. tmp[5] = (x$20 = (x$21 = (x$22 = (x$23 = (x$24 = $mul64(new $Uint64(0, (in$1.nilCheck, in$1[0])), ($shiftLeft64(new $Uint64(0, (in2.nilCheck, in2[5])), 0))), x$25 = $mul64(new $Uint64(0, (in$1.nilCheck, in$1[1])), ($shiftLeft64(new $Uint64(0, (in2.nilCheck, in2[4])), 0))), new $Uint64(x$24.$high + x$25.$high, x$24.$low + x$25.$low)), x$26 = $mul64(new $Uint64(0, (in$1.nilCheck, in$1[2])), ($shiftLeft64(new $Uint64(0, (in2.nilCheck, in2[3])), 0))), new $Uint64(x$23.$high + x$26.$high, x$23.$low + x$26.$low)), x$27 = $mul64(new $Uint64(0, (in$1.nilCheck, in$1[3])), ($shiftLeft64(new $Uint64(0, (in2.nilCheck, in2[2])), 0))), new $Uint64(x$22.$high + x$27.$high, x$22.$low + x$27.$low)), x$28 = $mul64(new $Uint64(0, (in$1.nilCheck, in$1[4])), ($shiftLeft64(new $Uint64(0, (in2.nilCheck, in2[1])), 0))), new $Uint64(x$21.$high + x$28.$high, x$21.$low + x$28.$low)), x$29 = $mul64(new $Uint64(0, (in$1.nilCheck, in$1[5])), ($shiftLeft64(new $Uint64(0, (in2.nilCheck, in2[0])), 0))), new $Uint64(x$20.$high + x$29.$high, x$20.$low + x$29.$low));
  45150. tmp[6] = (x$30 = (x$31 = (x$32 = (x$33 = (x$34 = (x$35 = $mul64(new $Uint64(0, (in$1.nilCheck, in$1[0])), ($shiftLeft64(new $Uint64(0, (in2.nilCheck, in2[6])), 0))), x$36 = $mul64(new $Uint64(0, (in$1.nilCheck, in$1[1])), ($shiftLeft64(new $Uint64(0, (in2.nilCheck, in2[5])), 1))), new $Uint64(x$35.$high + x$36.$high, x$35.$low + x$36.$low)), x$37 = $mul64(new $Uint64(0, (in$1.nilCheck, in$1[2])), ($shiftLeft64(new $Uint64(0, (in2.nilCheck, in2[4])), 0))), new $Uint64(x$34.$high + x$37.$high, x$34.$low + x$37.$low)), x$38 = $mul64(new $Uint64(0, (in$1.nilCheck, in$1[3])), ($shiftLeft64(new $Uint64(0, (in2.nilCheck, in2[3])), 1))), new $Uint64(x$33.$high + x$38.$high, x$33.$low + x$38.$low)), x$39 = $mul64(new $Uint64(0, (in$1.nilCheck, in$1[4])), ($shiftLeft64(new $Uint64(0, (in2.nilCheck, in2[2])), 0))), new $Uint64(x$32.$high + x$39.$high, x$32.$low + x$39.$low)), x$40 = $mul64(new $Uint64(0, (in$1.nilCheck, in$1[5])), ($shiftLeft64(new $Uint64(0, (in2.nilCheck, in2[1])), 1))), new $Uint64(x$31.$high + x$40.$high, x$31.$low + x$40.$low)), x$41 = $mul64(new $Uint64(0, (in$1.nilCheck, in$1[6])), ($shiftLeft64(new $Uint64(0, (in2.nilCheck, in2[0])), 0))), new $Uint64(x$30.$high + x$41.$high, x$30.$low + x$41.$low));
  45151. tmp[7] = (x$42 = (x$43 = (x$44 = (x$45 = (x$46 = (x$47 = (x$48 = $mul64(new $Uint64(0, (in$1.nilCheck, in$1[0])), ($shiftLeft64(new $Uint64(0, (in2.nilCheck, in2[7])), 0))), x$49 = $mul64(new $Uint64(0, (in$1.nilCheck, in$1[1])), ($shiftLeft64(new $Uint64(0, (in2.nilCheck, in2[6])), 0))), new $Uint64(x$48.$high + x$49.$high, x$48.$low + x$49.$low)), x$50 = $mul64(new $Uint64(0, (in$1.nilCheck, in$1[2])), ($shiftLeft64(new $Uint64(0, (in2.nilCheck, in2[5])), 0))), new $Uint64(x$47.$high + x$50.$high, x$47.$low + x$50.$low)), x$51 = $mul64(new $Uint64(0, (in$1.nilCheck, in$1[3])), ($shiftLeft64(new $Uint64(0, (in2.nilCheck, in2[4])), 0))), new $Uint64(x$46.$high + x$51.$high, x$46.$low + x$51.$low)), x$52 = $mul64(new $Uint64(0, (in$1.nilCheck, in$1[4])), ($shiftLeft64(new $Uint64(0, (in2.nilCheck, in2[3])), 0))), new $Uint64(x$45.$high + x$52.$high, x$45.$low + x$52.$low)), x$53 = $mul64(new $Uint64(0, (in$1.nilCheck, in$1[5])), ($shiftLeft64(new $Uint64(0, (in2.nilCheck, in2[2])), 0))), new $Uint64(x$44.$high + x$53.$high, x$44.$low + x$53.$low)), x$54 = $mul64(new $Uint64(0, (in$1.nilCheck, in$1[6])), ($shiftLeft64(new $Uint64(0, (in2.nilCheck, in2[1])), 0))), new $Uint64(x$43.$high + x$54.$high, x$43.$low + x$54.$low)), x$55 = $mul64(new $Uint64(0, (in$1.nilCheck, in$1[7])), ($shiftLeft64(new $Uint64(0, (in2.nilCheck, in2[0])), 0))), new $Uint64(x$42.$high + x$55.$high, x$42.$low + x$55.$low));
  45152. tmp[8] = (x$56 = (x$57 = (x$58 = (x$59 = (x$60 = (x$61 = (x$62 = (x$63 = $mul64(new $Uint64(0, (in$1.nilCheck, in$1[0])), ($shiftLeft64(new $Uint64(0, (in2.nilCheck, in2[8])), 0))), x$64 = $mul64(new $Uint64(0, (in$1.nilCheck, in$1[1])), ($shiftLeft64(new $Uint64(0, (in2.nilCheck, in2[7])), 1))), new $Uint64(x$63.$high + x$64.$high, x$63.$low + x$64.$low)), x$65 = $mul64(new $Uint64(0, (in$1.nilCheck, in$1[2])), ($shiftLeft64(new $Uint64(0, (in2.nilCheck, in2[6])), 0))), new $Uint64(x$62.$high + x$65.$high, x$62.$low + x$65.$low)), x$66 = $mul64(new $Uint64(0, (in$1.nilCheck, in$1[3])), ($shiftLeft64(new $Uint64(0, (in2.nilCheck, in2[5])), 1))), new $Uint64(x$61.$high + x$66.$high, x$61.$low + x$66.$low)), x$67 = $mul64(new $Uint64(0, (in$1.nilCheck, in$1[4])), ($shiftLeft64(new $Uint64(0, (in2.nilCheck, in2[4])), 0))), new $Uint64(x$60.$high + x$67.$high, x$60.$low + x$67.$low)), x$68 = $mul64(new $Uint64(0, (in$1.nilCheck, in$1[5])), ($shiftLeft64(new $Uint64(0, (in2.nilCheck, in2[3])), 1))), new $Uint64(x$59.$high + x$68.$high, x$59.$low + x$68.$low)), x$69 = $mul64(new $Uint64(0, (in$1.nilCheck, in$1[6])), ($shiftLeft64(new $Uint64(0, (in2.nilCheck, in2[2])), 0))), new $Uint64(x$58.$high + x$69.$high, x$58.$low + x$69.$low)), x$70 = $mul64(new $Uint64(0, (in$1.nilCheck, in$1[7])), ($shiftLeft64(new $Uint64(0, (in2.nilCheck, in2[1])), 1))), new $Uint64(x$57.$high + x$70.$high, x$57.$low + x$70.$low)), x$71 = $mul64(new $Uint64(0, (in$1.nilCheck, in$1[8])), ($shiftLeft64(new $Uint64(0, (in2.nilCheck, in2[0])), 0))), new $Uint64(x$56.$high + x$71.$high, x$56.$low + x$71.$low));
  45153. tmp[9] = (x$72 = (x$73 = (x$74 = (x$75 = (x$76 = (x$77 = (x$78 = $mul64(new $Uint64(0, (in$1.nilCheck, in$1[1])), ($shiftLeft64(new $Uint64(0, (in2.nilCheck, in2[8])), 0))), x$79 = $mul64(new $Uint64(0, (in$1.nilCheck, in$1[2])), ($shiftLeft64(new $Uint64(0, (in2.nilCheck, in2[7])), 0))), new $Uint64(x$78.$high + x$79.$high, x$78.$low + x$79.$low)), x$80 = $mul64(new $Uint64(0, (in$1.nilCheck, in$1[3])), ($shiftLeft64(new $Uint64(0, (in2.nilCheck, in2[6])), 0))), new $Uint64(x$77.$high + x$80.$high, x$77.$low + x$80.$low)), x$81 = $mul64(new $Uint64(0, (in$1.nilCheck, in$1[4])), ($shiftLeft64(new $Uint64(0, (in2.nilCheck, in2[5])), 0))), new $Uint64(x$76.$high + x$81.$high, x$76.$low + x$81.$low)), x$82 = $mul64(new $Uint64(0, (in$1.nilCheck, in$1[5])), ($shiftLeft64(new $Uint64(0, (in2.nilCheck, in2[4])), 0))), new $Uint64(x$75.$high + x$82.$high, x$75.$low + x$82.$low)), x$83 = $mul64(new $Uint64(0, (in$1.nilCheck, in$1[6])), ($shiftLeft64(new $Uint64(0, (in2.nilCheck, in2[3])), 0))), new $Uint64(x$74.$high + x$83.$high, x$74.$low + x$83.$low)), x$84 = $mul64(new $Uint64(0, (in$1.nilCheck, in$1[7])), ($shiftLeft64(new $Uint64(0, (in2.nilCheck, in2[2])), 0))), new $Uint64(x$73.$high + x$84.$high, x$73.$low + x$84.$low)), x$85 = $mul64(new $Uint64(0, (in$1.nilCheck, in$1[8])), ($shiftLeft64(new $Uint64(0, (in2.nilCheck, in2[1])), 0))), new $Uint64(x$72.$high + x$85.$high, x$72.$low + x$85.$low));
  45154. tmp[10] = (x$86 = (x$87 = (x$88 = (x$89 = (x$90 = (x$91 = $mul64(new $Uint64(0, (in$1.nilCheck, in$1[2])), ($shiftLeft64(new $Uint64(0, (in2.nilCheck, in2[8])), 0))), x$92 = $mul64(new $Uint64(0, (in$1.nilCheck, in$1[3])), ($shiftLeft64(new $Uint64(0, (in2.nilCheck, in2[7])), 1))), new $Uint64(x$91.$high + x$92.$high, x$91.$low + x$92.$low)), x$93 = $mul64(new $Uint64(0, (in$1.nilCheck, in$1[4])), ($shiftLeft64(new $Uint64(0, (in2.nilCheck, in2[6])), 0))), new $Uint64(x$90.$high + x$93.$high, x$90.$low + x$93.$low)), x$94 = $mul64(new $Uint64(0, (in$1.nilCheck, in$1[5])), ($shiftLeft64(new $Uint64(0, (in2.nilCheck, in2[5])), 1))), new $Uint64(x$89.$high + x$94.$high, x$89.$low + x$94.$low)), x$95 = $mul64(new $Uint64(0, (in$1.nilCheck, in$1[6])), ($shiftLeft64(new $Uint64(0, (in2.nilCheck, in2[4])), 0))), new $Uint64(x$88.$high + x$95.$high, x$88.$low + x$95.$low)), x$96 = $mul64(new $Uint64(0, (in$1.nilCheck, in$1[7])), ($shiftLeft64(new $Uint64(0, (in2.nilCheck, in2[3])), 1))), new $Uint64(x$87.$high + x$96.$high, x$87.$low + x$96.$low)), x$97 = $mul64(new $Uint64(0, (in$1.nilCheck, in$1[8])), ($shiftLeft64(new $Uint64(0, (in2.nilCheck, in2[2])), 0))), new $Uint64(x$86.$high + x$97.$high, x$86.$low + x$97.$low));
  45155. tmp[11] = (x$98 = (x$99 = (x$100 = (x$101 = (x$102 = $mul64(new $Uint64(0, (in$1.nilCheck, in$1[3])), ($shiftLeft64(new $Uint64(0, (in2.nilCheck, in2[8])), 0))), x$103 = $mul64(new $Uint64(0, (in$1.nilCheck, in$1[4])), ($shiftLeft64(new $Uint64(0, (in2.nilCheck, in2[7])), 0))), new $Uint64(x$102.$high + x$103.$high, x$102.$low + x$103.$low)), x$104 = $mul64(new $Uint64(0, (in$1.nilCheck, in$1[5])), ($shiftLeft64(new $Uint64(0, (in2.nilCheck, in2[6])), 0))), new $Uint64(x$101.$high + x$104.$high, x$101.$low + x$104.$low)), x$105 = $mul64(new $Uint64(0, (in$1.nilCheck, in$1[6])), ($shiftLeft64(new $Uint64(0, (in2.nilCheck, in2[5])), 0))), new $Uint64(x$100.$high + x$105.$high, x$100.$low + x$105.$low)), x$106 = $mul64(new $Uint64(0, (in$1.nilCheck, in$1[7])), ($shiftLeft64(new $Uint64(0, (in2.nilCheck, in2[4])), 0))), new $Uint64(x$99.$high + x$106.$high, x$99.$low + x$106.$low)), x$107 = $mul64(new $Uint64(0, (in$1.nilCheck, in$1[8])), ($shiftLeft64(new $Uint64(0, (in2.nilCheck, in2[3])), 0))), new $Uint64(x$98.$high + x$107.$high, x$98.$low + x$107.$low));
  45156. tmp[12] = (x$108 = (x$109 = (x$110 = (x$111 = $mul64(new $Uint64(0, (in$1.nilCheck, in$1[4])), ($shiftLeft64(new $Uint64(0, (in2.nilCheck, in2[8])), 0))), x$112 = $mul64(new $Uint64(0, (in$1.nilCheck, in$1[5])), ($shiftLeft64(new $Uint64(0, (in2.nilCheck, in2[7])), 1))), new $Uint64(x$111.$high + x$112.$high, x$111.$low + x$112.$low)), x$113 = $mul64(new $Uint64(0, (in$1.nilCheck, in$1[6])), ($shiftLeft64(new $Uint64(0, (in2.nilCheck, in2[6])), 0))), new $Uint64(x$110.$high + x$113.$high, x$110.$low + x$113.$low)), x$114 = $mul64(new $Uint64(0, (in$1.nilCheck, in$1[7])), ($shiftLeft64(new $Uint64(0, (in2.nilCheck, in2[5])), 1))), new $Uint64(x$109.$high + x$114.$high, x$109.$low + x$114.$low)), x$115 = $mul64(new $Uint64(0, (in$1.nilCheck, in$1[8])), ($shiftLeft64(new $Uint64(0, (in2.nilCheck, in2[4])), 0))), new $Uint64(x$108.$high + x$115.$high, x$108.$low + x$115.$low));
  45157. tmp[13] = (x$116 = (x$117 = (x$118 = $mul64(new $Uint64(0, (in$1.nilCheck, in$1[5])), ($shiftLeft64(new $Uint64(0, (in2.nilCheck, in2[8])), 0))), x$119 = $mul64(new $Uint64(0, (in$1.nilCheck, in$1[6])), ($shiftLeft64(new $Uint64(0, (in2.nilCheck, in2[7])), 0))), new $Uint64(x$118.$high + x$119.$high, x$118.$low + x$119.$low)), x$120 = $mul64(new $Uint64(0, (in$1.nilCheck, in$1[7])), ($shiftLeft64(new $Uint64(0, (in2.nilCheck, in2[6])), 0))), new $Uint64(x$117.$high + x$120.$high, x$117.$low + x$120.$low)), x$121 = $mul64(new $Uint64(0, (in$1.nilCheck, in$1[8])), ($shiftLeft64(new $Uint64(0, (in2.nilCheck, in2[5])), 0))), new $Uint64(x$116.$high + x$121.$high, x$116.$low + x$121.$low));
  45158. tmp[14] = (x$122 = (x$123 = $mul64(new $Uint64(0, (in$1.nilCheck, in$1[6])), ($shiftLeft64(new $Uint64(0, (in2.nilCheck, in2[8])), 0))), x$124 = $mul64(new $Uint64(0, (in$1.nilCheck, in$1[7])), ($shiftLeft64(new $Uint64(0, (in2.nilCheck, in2[7])), 1))), new $Uint64(x$123.$high + x$124.$high, x$123.$low + x$124.$low)), x$125 = $mul64(new $Uint64(0, (in$1.nilCheck, in$1[8])), ($shiftLeft64(new $Uint64(0, (in2.nilCheck, in2[6])), 0))), new $Uint64(x$122.$high + x$125.$high, x$122.$low + x$125.$low));
  45159. tmp[15] = (x$126 = $mul64(new $Uint64(0, (in$1.nilCheck, in$1[7])), ($shiftLeft64(new $Uint64(0, (in2.nilCheck, in2[8])), 0))), x$127 = $mul64(new $Uint64(0, (in$1.nilCheck, in$1[8])), ($shiftLeft64(new $Uint64(0, (in2.nilCheck, in2[7])), 0))), new $Uint64(x$126.$high + x$127.$high, x$126.$low + x$127.$low));
  45160. tmp[16] = $mul64(new $Uint64(0, (in$1.nilCheck, in$1[8])), ($shiftLeft64(new $Uint64(0, (in2.nilCheck, in2[8])), 0)));
  45161. p256ReduceDegree(out, tmp);
  45162. };
  45163. p256Assign = function(out, in$1) {
  45164. var $ptr, in$1, out;
  45165. $copy(out, in$1, arrayType$2);
  45166. };
  45167. p256Invert = function(out, in$1) {
  45168. var $ptr, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, e16, e2, e32, e4, e64, e8, ftmp, ftmp2, i, i$1, i$2, i$3, i$4, i$5, i$6, in$1, out;
  45169. _tmp = $clone(arrayType$2.zero(), arrayType$2); _tmp$1 = $clone(arrayType$2.zero(), arrayType$2); ftmp = $clone(_tmp, arrayType$2); ftmp2 = $clone(_tmp$1, arrayType$2);
  45170. _tmp$2 = $clone(arrayType$2.zero(), arrayType$2); _tmp$3 = $clone(arrayType$2.zero(), arrayType$2); _tmp$4 = $clone(arrayType$2.zero(), arrayType$2); _tmp$5 = $clone(arrayType$2.zero(), arrayType$2); _tmp$6 = $clone(arrayType$2.zero(), arrayType$2); _tmp$7 = $clone(arrayType$2.zero(), arrayType$2); e2 = $clone(_tmp$2, arrayType$2); e4 = $clone(_tmp$3, arrayType$2); e8 = $clone(_tmp$4, arrayType$2); e16 = $clone(_tmp$5, arrayType$2); e32 = $clone(_tmp$6, arrayType$2); e64 = $clone(_tmp$7, arrayType$2);
  45171. p256Square(ftmp, in$1);
  45172. p256Mul(ftmp, in$1, ftmp);
  45173. p256Assign(e2, ftmp);
  45174. p256Square(ftmp, ftmp);
  45175. p256Square(ftmp, ftmp);
  45176. p256Mul(ftmp, ftmp, e2);
  45177. p256Assign(e4, ftmp);
  45178. p256Square(ftmp, ftmp);
  45179. p256Square(ftmp, ftmp);
  45180. p256Square(ftmp, ftmp);
  45181. p256Square(ftmp, ftmp);
  45182. p256Mul(ftmp, ftmp, e4);
  45183. p256Assign(e8, ftmp);
  45184. i = 0;
  45185. while (true) {
  45186. if (!(i < 8)) { break; }
  45187. p256Square(ftmp, ftmp);
  45188. i = i + (1) >> 0;
  45189. }
  45190. p256Mul(ftmp, ftmp, e8);
  45191. p256Assign(e16, ftmp);
  45192. i$1 = 0;
  45193. while (true) {
  45194. if (!(i$1 < 16)) { break; }
  45195. p256Square(ftmp, ftmp);
  45196. i$1 = i$1 + (1) >> 0;
  45197. }
  45198. p256Mul(ftmp, ftmp, e16);
  45199. p256Assign(e32, ftmp);
  45200. i$2 = 0;
  45201. while (true) {
  45202. if (!(i$2 < 32)) { break; }
  45203. p256Square(ftmp, ftmp);
  45204. i$2 = i$2 + (1) >> 0;
  45205. }
  45206. p256Assign(e64, ftmp);
  45207. p256Mul(ftmp, ftmp, in$1);
  45208. i$3 = 0;
  45209. while (true) {
  45210. if (!(i$3 < 192)) { break; }
  45211. p256Square(ftmp, ftmp);
  45212. i$3 = i$3 + (1) >> 0;
  45213. }
  45214. p256Mul(ftmp2, e64, e32);
  45215. i$4 = 0;
  45216. while (true) {
  45217. if (!(i$4 < 16)) { break; }
  45218. p256Square(ftmp2, ftmp2);
  45219. i$4 = i$4 + (1) >> 0;
  45220. }
  45221. p256Mul(ftmp2, ftmp2, e16);
  45222. i$5 = 0;
  45223. while (true) {
  45224. if (!(i$5 < 8)) { break; }
  45225. p256Square(ftmp2, ftmp2);
  45226. i$5 = i$5 + (1) >> 0;
  45227. }
  45228. p256Mul(ftmp2, ftmp2, e8);
  45229. i$6 = 0;
  45230. while (true) {
  45231. if (!(i$6 < 4)) { break; }
  45232. p256Square(ftmp2, ftmp2);
  45233. i$6 = i$6 + (1) >> 0;
  45234. }
  45235. p256Mul(ftmp2, ftmp2, e4);
  45236. p256Square(ftmp2, ftmp2);
  45237. p256Square(ftmp2, ftmp2);
  45238. p256Mul(ftmp2, ftmp2, e2);
  45239. p256Square(ftmp2, ftmp2);
  45240. p256Square(ftmp2, ftmp2);
  45241. p256Mul(ftmp2, ftmp2, in$1);
  45242. p256Mul(out, ftmp2, ftmp);
  45243. };
  45244. p256Scalar3 = function(out) {
  45245. var $ptr, carry, i, out, x, x$1, x$2, x$3;
  45246. carry = 0;
  45247. i = 0;
  45248. while (true) {
  45249. out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i] = (x = (out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i])), x$1 = 3, (((x >>> 16 << 16) * x$1 >>> 0) + (x << 16 >>> 16) * x$1) >>> 0));
  45250. out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i] = (out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i])) + (carry) >>> 0);
  45251. carry = (out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i])) >>> 29 >>> 0;
  45252. out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i] = ((out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i])) & (536870911)) >>> 0);
  45253. i = i + (1) >> 0;
  45254. if (i === 9) {
  45255. break;
  45256. }
  45257. out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i] = (x$2 = (out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i])), x$3 = 3, (((x$2 >>> 16 << 16) * x$3 >>> 0) + (x$2 << 16 >>> 16) * x$3) >>> 0));
  45258. out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i] = (out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i])) + (carry) >>> 0);
  45259. carry = (out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i])) >>> 28 >>> 0;
  45260. out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i] = ((out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i])) & (268435455)) >>> 0);
  45261. i = i + (1) >> 0;
  45262. }
  45263. p256ReduceCarry(out, carry);
  45264. };
  45265. p256Scalar4 = function(out) {
  45266. var $ptr, _tmp, _tmp$1, carry, i, nextCarry, out, y, y$1;
  45267. _tmp = 0; _tmp$1 = 0; carry = _tmp; nextCarry = _tmp$1;
  45268. i = 0;
  45269. while (true) {
  45270. nextCarry = (out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i])) >>> 27 >>> 0;
  45271. out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i] = (y = (2), y < 32 ? ((out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i])) << y) : 0) >>> 0);
  45272. out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i] = ((out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i])) & (536870911)) >>> 0);
  45273. out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i] = (out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i])) + (carry) >>> 0);
  45274. carry = nextCarry + (((out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i])) >>> 29 >>> 0)) >>> 0;
  45275. out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i] = ((out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i])) & (536870911)) >>> 0);
  45276. i = i + (1) >> 0;
  45277. if (i === 9) {
  45278. break;
  45279. }
  45280. nextCarry = (out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i])) >>> 26 >>> 0;
  45281. out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i] = (y$1 = (2), y$1 < 32 ? ((out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i])) << y$1) : 0) >>> 0);
  45282. out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i] = ((out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i])) & (268435455)) >>> 0);
  45283. out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i] = (out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i])) + (carry) >>> 0);
  45284. carry = nextCarry + (((out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i])) >>> 28 >>> 0)) >>> 0;
  45285. out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i] = ((out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i])) & (268435455)) >>> 0);
  45286. i = i + (1) >> 0;
  45287. }
  45288. p256ReduceCarry(out, carry);
  45289. };
  45290. p256Scalar8 = function(out) {
  45291. var $ptr, _tmp, _tmp$1, carry, i, nextCarry, out, y, y$1;
  45292. _tmp = 0; _tmp$1 = 0; carry = _tmp; nextCarry = _tmp$1;
  45293. i = 0;
  45294. while (true) {
  45295. nextCarry = (out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i])) >>> 26 >>> 0;
  45296. out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i] = (y = (3), y < 32 ? ((out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i])) << y) : 0) >>> 0);
  45297. out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i] = ((out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i])) & (536870911)) >>> 0);
  45298. out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i] = (out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i])) + (carry) >>> 0);
  45299. carry = nextCarry + (((out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i])) >>> 29 >>> 0)) >>> 0;
  45300. out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i] = ((out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i])) & (536870911)) >>> 0);
  45301. i = i + (1) >> 0;
  45302. if (i === 9) {
  45303. break;
  45304. }
  45305. nextCarry = (out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i])) >>> 25 >>> 0;
  45306. out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i] = (y$1 = (3), y$1 < 32 ? ((out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i])) << y$1) : 0) >>> 0);
  45307. out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i] = ((out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i])) & (268435455)) >>> 0);
  45308. out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i] = (out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i])) + (carry) >>> 0);
  45309. carry = nextCarry + (((out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i])) >>> 28 >>> 0)) >>> 0;
  45310. out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i] = ((out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i])) & (268435455)) >>> 0);
  45311. i = i + (1) >> 0;
  45312. }
  45313. p256ReduceCarry(out, carry);
  45314. };
  45315. p256PointDouble = function(xOut, yOut, zOut, x, y, z) {
  45316. var $ptr, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, alpha, beta, delta, gamma, tmp, tmp2, x, xOut, y, yOut, z, zOut;
  45317. _tmp = $clone(arrayType$2.zero(), arrayType$2); _tmp$1 = $clone(arrayType$2.zero(), arrayType$2); _tmp$2 = $clone(arrayType$2.zero(), arrayType$2); _tmp$3 = $clone(arrayType$2.zero(), arrayType$2); _tmp$4 = $clone(arrayType$2.zero(), arrayType$2); _tmp$5 = $clone(arrayType$2.zero(), arrayType$2); delta = $clone(_tmp, arrayType$2); gamma = $clone(_tmp$1, arrayType$2); alpha = $clone(_tmp$2, arrayType$2); beta = $clone(_tmp$3, arrayType$2); tmp = $clone(_tmp$4, arrayType$2); tmp2 = $clone(_tmp$5, arrayType$2);
  45318. p256Square(delta, z);
  45319. p256Square(gamma, y);
  45320. p256Mul(beta, x, gamma);
  45321. p256Sum(tmp, x, delta);
  45322. p256Diff(tmp2, x, delta);
  45323. p256Mul(alpha, tmp, tmp2);
  45324. p256Scalar3(alpha);
  45325. p256Sum(tmp, y, z);
  45326. p256Square(tmp, tmp);
  45327. p256Diff(tmp, tmp, gamma);
  45328. p256Diff(zOut, tmp, delta);
  45329. p256Scalar4(beta);
  45330. p256Square(xOut, alpha);
  45331. p256Diff(xOut, xOut, beta);
  45332. p256Diff(xOut, xOut, beta);
  45333. p256Diff(tmp, beta, xOut);
  45334. p256Mul(tmp, alpha, tmp);
  45335. p256Square(tmp2, gamma);
  45336. p256Scalar8(tmp2);
  45337. p256Diff(yOut, tmp, tmp2);
  45338. };
  45339. p256PointAddMixed = function(xOut, yOut, zOut, x1, y1, z1, x2, y2) {
  45340. var $ptr, _tmp, _tmp$1, _tmp$10, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, h, i, j, r, rr, s2, tmp, u2, v, x1, x2, xOut, y1, y2, yOut, z1, z1z1, z1z1z1, zOut;
  45341. _tmp = $clone(arrayType$2.zero(), arrayType$2); _tmp$1 = $clone(arrayType$2.zero(), arrayType$2); _tmp$2 = $clone(arrayType$2.zero(), arrayType$2); _tmp$3 = $clone(arrayType$2.zero(), arrayType$2); _tmp$4 = $clone(arrayType$2.zero(), arrayType$2); _tmp$5 = $clone(arrayType$2.zero(), arrayType$2); _tmp$6 = $clone(arrayType$2.zero(), arrayType$2); _tmp$7 = $clone(arrayType$2.zero(), arrayType$2); _tmp$8 = $clone(arrayType$2.zero(), arrayType$2); _tmp$9 = $clone(arrayType$2.zero(), arrayType$2); _tmp$10 = $clone(arrayType$2.zero(), arrayType$2); z1z1 = $clone(_tmp, arrayType$2); z1z1z1 = $clone(_tmp$1, arrayType$2); s2 = $clone(_tmp$2, arrayType$2); u2 = $clone(_tmp$3, arrayType$2); h = $clone(_tmp$4, arrayType$2); i = $clone(_tmp$5, arrayType$2); j = $clone(_tmp$6, arrayType$2); r = $clone(_tmp$7, arrayType$2); rr = $clone(_tmp$8, arrayType$2); v = $clone(_tmp$9, arrayType$2); tmp = $clone(_tmp$10, arrayType$2);
  45342. p256Square(z1z1, z1);
  45343. p256Sum(tmp, z1, z1);
  45344. p256Mul(u2, x2, z1z1);
  45345. p256Mul(z1z1z1, z1, z1z1);
  45346. p256Mul(s2, y2, z1z1z1);
  45347. p256Diff(h, u2, x1);
  45348. p256Sum(i, h, h);
  45349. p256Square(i, i);
  45350. p256Mul(j, h, i);
  45351. p256Diff(r, s2, y1);
  45352. p256Sum(r, r, r);
  45353. p256Mul(v, x1, i);
  45354. p256Mul(zOut, tmp, h);
  45355. p256Square(rr, r);
  45356. p256Diff(xOut, rr, j);
  45357. p256Diff(xOut, xOut, v);
  45358. p256Diff(xOut, xOut, v);
  45359. p256Diff(tmp, v, xOut);
  45360. p256Mul(yOut, tmp, r);
  45361. p256Mul(tmp, y1, j);
  45362. p256Diff(yOut, yOut, tmp);
  45363. p256Diff(yOut, yOut, tmp);
  45364. };
  45365. p256PointAdd = function(xOut, yOut, zOut, x1, y1, z1, x2, y2, z2) {
  45366. var $ptr, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, h, i, j, r, rr, s1, s2, tmp, u1, u2, v, x1, x2, xOut, y1, y2, yOut, z1, z1z1, z1z1z1, z2, z2z2, z2z2z2, zOut;
  45367. _tmp = $clone(arrayType$2.zero(), arrayType$2); _tmp$1 = $clone(arrayType$2.zero(), arrayType$2); _tmp$2 = $clone(arrayType$2.zero(), arrayType$2); _tmp$3 = $clone(arrayType$2.zero(), arrayType$2); _tmp$4 = $clone(arrayType$2.zero(), arrayType$2); _tmp$5 = $clone(arrayType$2.zero(), arrayType$2); _tmp$6 = $clone(arrayType$2.zero(), arrayType$2); _tmp$7 = $clone(arrayType$2.zero(), arrayType$2); _tmp$8 = $clone(arrayType$2.zero(), arrayType$2); _tmp$9 = $clone(arrayType$2.zero(), arrayType$2); _tmp$10 = $clone(arrayType$2.zero(), arrayType$2); _tmp$11 = $clone(arrayType$2.zero(), arrayType$2); _tmp$12 = $clone(arrayType$2.zero(), arrayType$2); _tmp$13 = $clone(arrayType$2.zero(), arrayType$2); _tmp$14 = $clone(arrayType$2.zero(), arrayType$2); z1z1 = $clone(_tmp, arrayType$2); z1z1z1 = $clone(_tmp$1, arrayType$2); z2z2 = $clone(_tmp$2, arrayType$2); z2z2z2 = $clone(_tmp$3, arrayType$2); s1 = $clone(_tmp$4, arrayType$2); s2 = $clone(_tmp$5, arrayType$2); u1 = $clone(_tmp$6, arrayType$2); u2 = $clone(_tmp$7, arrayType$2); h = $clone(_tmp$8, arrayType$2); i = $clone(_tmp$9, arrayType$2); j = $clone(_tmp$10, arrayType$2); r = $clone(_tmp$11, arrayType$2); rr = $clone(_tmp$12, arrayType$2); v = $clone(_tmp$13, arrayType$2); tmp = $clone(_tmp$14, arrayType$2);
  45368. p256Square(z1z1, z1);
  45369. p256Square(z2z2, z2);
  45370. p256Mul(u1, x1, z2z2);
  45371. p256Sum(tmp, z1, z2);
  45372. p256Square(tmp, tmp);
  45373. p256Diff(tmp, tmp, z1z1);
  45374. p256Diff(tmp, tmp, z2z2);
  45375. p256Mul(z2z2z2, z2, z2z2);
  45376. p256Mul(s1, y1, z2z2z2);
  45377. p256Mul(u2, x2, z1z1);
  45378. p256Mul(z1z1z1, z1, z1z1);
  45379. p256Mul(s2, y2, z1z1z1);
  45380. p256Diff(h, u2, u1);
  45381. p256Sum(i, h, h);
  45382. p256Square(i, i);
  45383. p256Mul(j, h, i);
  45384. p256Diff(r, s2, s1);
  45385. p256Sum(r, r, r);
  45386. p256Mul(v, u1, i);
  45387. p256Mul(zOut, tmp, h);
  45388. p256Square(rr, r);
  45389. p256Diff(xOut, rr, j);
  45390. p256Diff(xOut, xOut, v);
  45391. p256Diff(xOut, xOut, v);
  45392. p256Diff(tmp, v, xOut);
  45393. p256Mul(yOut, tmp, r);
  45394. p256Mul(tmp, s1, j);
  45395. p256Diff(yOut, yOut, tmp);
  45396. p256Diff(yOut, yOut, tmp);
  45397. };
  45398. p256CopyConditional = function(out, in$1, mask$1) {
  45399. var $ptr, i, in$1, mask$1, out, tmp;
  45400. i = 0;
  45401. while (true) {
  45402. if (!(i < 9)) { break; }
  45403. tmp = (mask$1 & ((((in$1.nilCheck, ((i < 0 || i >= in$1.length) ? $throwRuntimeError("index out of range") : in$1[i])) ^ (out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i]))) >>> 0))) >>> 0;
  45404. out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i] = ((out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i])) ^ (tmp)) >>> 0);
  45405. i = i + (1) >> 0;
  45406. }
  45407. };
  45408. p256SelectAffinePoint = function(xOut, yOut, table, index) {
  45409. var $ptr, _i, _i$1, _i$2, _i$3, _ref, _ref$1, _ref$2, _ref$3, i, i$1, i$2, index, j, j$1, mask$1, table, xOut, yOut;
  45410. _ref = xOut;
  45411. _i = 0;
  45412. while (true) {
  45413. if (!(_i < 9)) { break; }
  45414. i = _i;
  45415. xOut.nilCheck, ((i < 0 || i >= xOut.length) ? $throwRuntimeError("index out of range") : xOut[i] = 0);
  45416. _i++;
  45417. }
  45418. _ref$1 = yOut;
  45419. _i$1 = 0;
  45420. while (true) {
  45421. if (!(_i$1 < 9)) { break; }
  45422. i$1 = _i$1;
  45423. yOut.nilCheck, ((i$1 < 0 || i$1 >= yOut.length) ? $throwRuntimeError("index out of range") : yOut[i$1] = 0);
  45424. _i$1++;
  45425. }
  45426. i$2 = 1;
  45427. while (true) {
  45428. if (!(i$2 < 16)) { break; }
  45429. mask$1 = (i$2 ^ index) >>> 0;
  45430. mask$1 = (mask$1 | ((mask$1 >>> 2 >>> 0))) >>> 0;
  45431. mask$1 = (mask$1 | ((mask$1 >>> 1 >>> 0))) >>> 0;
  45432. mask$1 = (mask$1 & (1)) >>> 0;
  45433. mask$1 = mask$1 - (1) >>> 0;
  45434. _ref$2 = xOut;
  45435. _i$2 = 0;
  45436. while (true) {
  45437. if (!(_i$2 < 9)) { break; }
  45438. j = _i$2;
  45439. xOut.nilCheck, ((j < 0 || j >= xOut.length) ? $throwRuntimeError("index out of range") : xOut[j] = ((xOut.nilCheck, ((j < 0 || j >= xOut.length) ? $throwRuntimeError("index out of range") : xOut[j])) | ((((0 >= table.$length ? $throwRuntimeError("index out of range") : table.$array[table.$offset + 0]) & mask$1) >>> 0))) >>> 0);
  45440. table = $subslice(table, 1);
  45441. _i$2++;
  45442. }
  45443. _ref$3 = yOut;
  45444. _i$3 = 0;
  45445. while (true) {
  45446. if (!(_i$3 < 9)) { break; }
  45447. j$1 = _i$3;
  45448. yOut.nilCheck, ((j$1 < 0 || j$1 >= yOut.length) ? $throwRuntimeError("index out of range") : yOut[j$1] = ((yOut.nilCheck, ((j$1 < 0 || j$1 >= yOut.length) ? $throwRuntimeError("index out of range") : yOut[j$1])) | ((((0 >= table.$length ? $throwRuntimeError("index out of range") : table.$array[table.$offset + 0]) & mask$1) >>> 0))) >>> 0);
  45449. table = $subslice(table, 1);
  45450. _i$3++;
  45451. }
  45452. i$2 = i$2 + (1) >>> 0;
  45453. }
  45454. };
  45455. p256SelectJacobianPoint = function(xOut, yOut, zOut, table, index) {
  45456. var $ptr, _i, _i$1, _i$2, _i$3, _i$4, _i$5, _ref, _ref$1, _ref$2, _ref$3, _ref$4, _ref$5, i, i$1, i$2, i$3, index, j, j$1, j$2, mask$1, table, x, x$1, x$2, xOut, yOut, zOut;
  45457. _ref = xOut;
  45458. _i = 0;
  45459. while (true) {
  45460. if (!(_i < 9)) { break; }
  45461. i = _i;
  45462. xOut.nilCheck, ((i < 0 || i >= xOut.length) ? $throwRuntimeError("index out of range") : xOut[i] = 0);
  45463. _i++;
  45464. }
  45465. _ref$1 = yOut;
  45466. _i$1 = 0;
  45467. while (true) {
  45468. if (!(_i$1 < 9)) { break; }
  45469. i$1 = _i$1;
  45470. yOut.nilCheck, ((i$1 < 0 || i$1 >= yOut.length) ? $throwRuntimeError("index out of range") : yOut[i$1] = 0);
  45471. _i$1++;
  45472. }
  45473. _ref$2 = zOut;
  45474. _i$2 = 0;
  45475. while (true) {
  45476. if (!(_i$2 < 9)) { break; }
  45477. i$2 = _i$2;
  45478. zOut.nilCheck, ((i$2 < 0 || i$2 >= zOut.length) ? $throwRuntimeError("index out of range") : zOut[i$2] = 0);
  45479. _i$2++;
  45480. }
  45481. i$3 = 1;
  45482. while (true) {
  45483. if (!(i$3 < 16)) { break; }
  45484. mask$1 = (i$3 ^ index) >>> 0;
  45485. mask$1 = (mask$1 | ((mask$1 >>> 2 >>> 0))) >>> 0;
  45486. mask$1 = (mask$1 | ((mask$1 >>> 1 >>> 0))) >>> 0;
  45487. mask$1 = (mask$1 & (1)) >>> 0;
  45488. mask$1 = mask$1 - (1) >>> 0;
  45489. _ref$3 = xOut;
  45490. _i$3 = 0;
  45491. while (true) {
  45492. if (!(_i$3 < 9)) { break; }
  45493. j = _i$3;
  45494. xOut.nilCheck, ((j < 0 || j >= xOut.length) ? $throwRuntimeError("index out of range") : xOut[j] = ((xOut.nilCheck, ((j < 0 || j >= xOut.length) ? $throwRuntimeError("index out of range") : xOut[j])) | ((((x = (table.nilCheck, ((i$3 < 0 || i$3 >= table.length) ? $throwRuntimeError("index out of range") : table[i$3]))[0], ((j < 0 || j >= x.length) ? $throwRuntimeError("index out of range") : x[j])) & mask$1) >>> 0))) >>> 0);
  45495. _i$3++;
  45496. }
  45497. _ref$4 = yOut;
  45498. _i$4 = 0;
  45499. while (true) {
  45500. if (!(_i$4 < 9)) { break; }
  45501. j$1 = _i$4;
  45502. yOut.nilCheck, ((j$1 < 0 || j$1 >= yOut.length) ? $throwRuntimeError("index out of range") : yOut[j$1] = ((yOut.nilCheck, ((j$1 < 0 || j$1 >= yOut.length) ? $throwRuntimeError("index out of range") : yOut[j$1])) | ((((x$1 = (table.nilCheck, ((i$3 < 0 || i$3 >= table.length) ? $throwRuntimeError("index out of range") : table[i$3]))[1], ((j$1 < 0 || j$1 >= x$1.length) ? $throwRuntimeError("index out of range") : x$1[j$1])) & mask$1) >>> 0))) >>> 0);
  45503. _i$4++;
  45504. }
  45505. _ref$5 = zOut;
  45506. _i$5 = 0;
  45507. while (true) {
  45508. if (!(_i$5 < 9)) { break; }
  45509. j$2 = _i$5;
  45510. zOut.nilCheck, ((j$2 < 0 || j$2 >= zOut.length) ? $throwRuntimeError("index out of range") : zOut[j$2] = ((zOut.nilCheck, ((j$2 < 0 || j$2 >= zOut.length) ? $throwRuntimeError("index out of range") : zOut[j$2])) | ((((x$2 = (table.nilCheck, ((i$3 < 0 || i$3 >= table.length) ? $throwRuntimeError("index out of range") : table[i$3]))[2], ((j$2 < 0 || j$2 >= x$2.length) ? $throwRuntimeError("index out of range") : x$2[j$2])) & mask$1) >>> 0))) >>> 0);
  45511. _i$5++;
  45512. }
  45513. i$3 = i$3 + (1) >>> 0;
  45514. }
  45515. };
  45516. p256GetBit = function(scalar, bit) {
  45517. var $ptr, bit, scalar, x, y;
  45518. return ((((((y = (((bit & 7) >>> 0)), y < 32 ? (((x = bit >>> 3 >>> 0, (scalar.nilCheck, ((x < 0 || x >= scalar.length) ? $throwRuntimeError("index out of range") : scalar[x])))) >>> y) : 0) << 24 >>> 24)) & 1) >>> 0) >>> 0);
  45519. };
  45520. p256ScalarBaseMult = function(xOut, yOut, zOut, scalar) {
  45521. var $ptr, _i, _i$1, _i$2, _ref, _ref$1, _ref$2, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, bit0, bit1, bit2, bit3, i, i$1, i$2, i$3, index, j, mask$1, nIsInfinityMask, pIsNoninfiniteMask, px, py, scalar, tableOffset, tx, ty, tz, xOut, yOut, zOut;
  45522. nIsInfinityMask = 4294967295;
  45523. _tmp = 0; _tmp$1 = 0; _tmp$2 = 0; pIsNoninfiniteMask = _tmp; mask$1 = _tmp$1; tableOffset = _tmp$2;
  45524. _tmp$3 = $clone(arrayType$2.zero(), arrayType$2); _tmp$4 = $clone(arrayType$2.zero(), arrayType$2); _tmp$5 = $clone(arrayType$2.zero(), arrayType$2); _tmp$6 = $clone(arrayType$2.zero(), arrayType$2); _tmp$7 = $clone(arrayType$2.zero(), arrayType$2); px = $clone(_tmp$3, arrayType$2); py = $clone(_tmp$4, arrayType$2); tx = $clone(_tmp$5, arrayType$2); ty = $clone(_tmp$6, arrayType$2); tz = $clone(_tmp$7, arrayType$2);
  45525. _ref = xOut;
  45526. _i = 0;
  45527. while (true) {
  45528. if (!(_i < 9)) { break; }
  45529. i = _i;
  45530. xOut.nilCheck, ((i < 0 || i >= xOut.length) ? $throwRuntimeError("index out of range") : xOut[i] = 0);
  45531. _i++;
  45532. }
  45533. _ref$1 = yOut;
  45534. _i$1 = 0;
  45535. while (true) {
  45536. if (!(_i$1 < 9)) { break; }
  45537. i$1 = _i$1;
  45538. yOut.nilCheck, ((i$1 < 0 || i$1 >= yOut.length) ? $throwRuntimeError("index out of range") : yOut[i$1] = 0);
  45539. _i$1++;
  45540. }
  45541. _ref$2 = zOut;
  45542. _i$2 = 0;
  45543. while (true) {
  45544. if (!(_i$2 < 9)) { break; }
  45545. i$2 = _i$2;
  45546. zOut.nilCheck, ((i$2 < 0 || i$2 >= zOut.length) ? $throwRuntimeError("index out of range") : zOut[i$2] = 0);
  45547. _i$2++;
  45548. }
  45549. i$3 = 0;
  45550. while (true) {
  45551. if (!(i$3 < 32)) { break; }
  45552. if (!((i$3 === 0))) {
  45553. p256PointDouble(xOut, yOut, zOut, xOut, yOut, zOut);
  45554. }
  45555. tableOffset = 0;
  45556. j = 0;
  45557. while (true) {
  45558. if (!(j <= 32)) { break; }
  45559. bit0 = p256GetBit(scalar, (31 - i$3 >>> 0) + j >>> 0);
  45560. bit1 = p256GetBit(scalar, (95 - i$3 >>> 0) + j >>> 0);
  45561. bit2 = p256GetBit(scalar, (159 - i$3 >>> 0) + j >>> 0);
  45562. bit3 = p256GetBit(scalar, (223 - i$3 >>> 0) + j >>> 0);
  45563. index = (((((bit0 | ((bit1 << 1 >>> 0))) >>> 0) | ((bit2 << 2 >>> 0))) >>> 0) | ((bit3 << 3 >>> 0))) >>> 0;
  45564. p256SelectAffinePoint(px, py, $subslice(new sliceType$1(p256Precomputed), tableOffset), index);
  45565. tableOffset = tableOffset + (270) >>> 0;
  45566. p256PointAddMixed(tx, ty, tz, xOut, yOut, zOut, px, py);
  45567. p256CopyConditional(xOut, px, nIsInfinityMask);
  45568. p256CopyConditional(yOut, py, nIsInfinityMask);
  45569. p256CopyConditional(zOut, p256One, nIsInfinityMask);
  45570. pIsNoninfiniteMask = nonZeroToAllOnes(index);
  45571. mask$1 = (pIsNoninfiniteMask & (~nIsInfinityMask >>> 0)) >>> 0;
  45572. p256CopyConditional(xOut, tx, mask$1);
  45573. p256CopyConditional(yOut, ty, mask$1);
  45574. p256CopyConditional(zOut, tz, mask$1);
  45575. nIsInfinityMask = (nIsInfinityMask & ((~pIsNoninfiniteMask >>> 0))) >>> 0;
  45576. j = j + (32) >>> 0;
  45577. }
  45578. i$3 = i$3 + (1) >>> 0;
  45579. }
  45580. };
  45581. p256PointToAffine = function(xOut, yOut, x, y, z) {
  45582. var $ptr, _tmp, _tmp$1, x, xOut, y, yOut, z, zInv, zInvSq;
  45583. _tmp = $clone(arrayType$2.zero(), arrayType$2); _tmp$1 = $clone(arrayType$2.zero(), arrayType$2); zInv = $clone(_tmp, arrayType$2); zInvSq = $clone(_tmp$1, arrayType$2);
  45584. p256Invert(zInv, z);
  45585. p256Square(zInvSq, zInv);
  45586. p256Mul(xOut, x, zInvSq);
  45587. p256Mul(zInv, zInv, zInvSq);
  45588. p256Mul(yOut, y, zInv);
  45589. };
  45590. p256ToAffine = function(x, y, z) {
  45591. var $ptr, _tmp, _tmp$1, _tmp$2, _tmp$3, x, xOut, xx, y, yOut, yy, z;
  45592. xOut = ptrType$1.nil;
  45593. yOut = ptrType$1.nil;
  45594. _tmp = $clone(arrayType$2.zero(), arrayType$2); _tmp$1 = $clone(arrayType$2.zero(), arrayType$2); xx = $clone(_tmp, arrayType$2); yy = $clone(_tmp$1, arrayType$2);
  45595. p256PointToAffine(xx, yy, x, y, z);
  45596. _tmp$2 = p256ToBig(xx); _tmp$3 = p256ToBig(yy); xOut = _tmp$2; yOut = _tmp$3;
  45597. return [xOut, yOut];
  45598. };
  45599. p256ScalarMult = function(xOut, yOut, zOut, x, y, scalar) {
  45600. var $ptr, _i, _i$1, _i$2, _q, _q$1, _q$2, _q$3, _ref, _ref$1, _ref$2, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, i, i$1, i$2, i$3, i$4, index, mask$1, nIsInfinityMask, pIsNoninfiniteMask, precomp, px, py, pz, scalar, tx, ty, tz, x, x$1, x$2, x$3, x$4, x$5, x$6, x$7, xOut, y, y$1, yOut, zOut;
  45601. _tmp = $clone(arrayType$2.zero(), arrayType$2); _tmp$1 = $clone(arrayType$2.zero(), arrayType$2); _tmp$2 = $clone(arrayType$2.zero(), arrayType$2); _tmp$3 = $clone(arrayType$2.zero(), arrayType$2); _tmp$4 = $clone(arrayType$2.zero(), arrayType$2); _tmp$5 = $clone(arrayType$2.zero(), arrayType$2); px = $clone(_tmp, arrayType$2); py = $clone(_tmp$1, arrayType$2); pz = $clone(_tmp$2, arrayType$2); tx = $clone(_tmp$3, arrayType$2); ty = $clone(_tmp$4, arrayType$2); tz = $clone(_tmp$5, arrayType$2);
  45602. precomp = $clone(arrayType$6.zero(), arrayType$6);
  45603. _tmp$6 = 0; _tmp$7 = 0; _tmp$8 = 0; _tmp$9 = 0; nIsInfinityMask = _tmp$6; index = _tmp$7; pIsNoninfiniteMask = _tmp$8; mask$1 = _tmp$9;
  45604. $copy(precomp[1][0], x, arrayType$2);
  45605. $copy(precomp[1][1], y, arrayType$2);
  45606. $copy(precomp[1][2], p256One, arrayType$2);
  45607. i = 2;
  45608. while (true) {
  45609. if (!(i < 16)) { break; }
  45610. p256PointDouble(((i < 0 || i >= precomp.length) ? $throwRuntimeError("index out of range") : precomp[i])[0], ((i < 0 || i >= precomp.length) ? $throwRuntimeError("index out of range") : precomp[i])[1], ((i < 0 || i >= precomp.length) ? $throwRuntimeError("index out of range") : precomp[i])[2], (x$1 = (_q = i / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")), ((x$1 < 0 || x$1 >= precomp.length) ? $throwRuntimeError("index out of range") : precomp[x$1]))[0], (x$2 = (_q$1 = i / 2, (_q$1 === _q$1 && _q$1 !== 1/0 && _q$1 !== -1/0) ? _q$1 >> 0 : $throwRuntimeError("integer divide by zero")), ((x$2 < 0 || x$2 >= precomp.length) ? $throwRuntimeError("index out of range") : precomp[x$2]))[1], (x$3 = (_q$2 = i / 2, (_q$2 === _q$2 && _q$2 !== 1/0 && _q$2 !== -1/0) ? _q$2 >> 0 : $throwRuntimeError("integer divide by zero")), ((x$3 < 0 || x$3 >= precomp.length) ? $throwRuntimeError("index out of range") : precomp[x$3]))[2]);
  45611. p256PointAddMixed((x$4 = i + 1 >> 0, ((x$4 < 0 || x$4 >= precomp.length) ? $throwRuntimeError("index out of range") : precomp[x$4]))[0], (x$5 = i + 1 >> 0, ((x$5 < 0 || x$5 >= precomp.length) ? $throwRuntimeError("index out of range") : precomp[x$5]))[1], (x$6 = i + 1 >> 0, ((x$6 < 0 || x$6 >= precomp.length) ? $throwRuntimeError("index out of range") : precomp[x$6]))[2], ((i < 0 || i >= precomp.length) ? $throwRuntimeError("index out of range") : precomp[i])[0], ((i < 0 || i >= precomp.length) ? $throwRuntimeError("index out of range") : precomp[i])[1], ((i < 0 || i >= precomp.length) ? $throwRuntimeError("index out of range") : precomp[i])[2], x, y);
  45612. i = i + (2) >> 0;
  45613. }
  45614. _ref = xOut;
  45615. _i = 0;
  45616. while (true) {
  45617. if (!(_i < 9)) { break; }
  45618. i$1 = _i;
  45619. xOut.nilCheck, ((i$1 < 0 || i$1 >= xOut.length) ? $throwRuntimeError("index out of range") : xOut[i$1] = 0);
  45620. _i++;
  45621. }
  45622. _ref$1 = yOut;
  45623. _i$1 = 0;
  45624. while (true) {
  45625. if (!(_i$1 < 9)) { break; }
  45626. i$2 = _i$1;
  45627. yOut.nilCheck, ((i$2 < 0 || i$2 >= yOut.length) ? $throwRuntimeError("index out of range") : yOut[i$2] = 0);
  45628. _i$1++;
  45629. }
  45630. _ref$2 = zOut;
  45631. _i$2 = 0;
  45632. while (true) {
  45633. if (!(_i$2 < 9)) { break; }
  45634. i$3 = _i$2;
  45635. zOut.nilCheck, ((i$3 < 0 || i$3 >= zOut.length) ? $throwRuntimeError("index out of range") : zOut[i$3] = 0);
  45636. _i$2++;
  45637. }
  45638. nIsInfinityMask = 4294967295;
  45639. i$4 = 0;
  45640. while (true) {
  45641. if (!(i$4 < 64)) { break; }
  45642. if (!((i$4 === 0))) {
  45643. p256PointDouble(xOut, yOut, zOut, xOut, yOut, zOut);
  45644. p256PointDouble(xOut, yOut, zOut, xOut, yOut, zOut);
  45645. p256PointDouble(xOut, yOut, zOut, xOut, yOut, zOut);
  45646. p256PointDouble(xOut, yOut, zOut, xOut, yOut, zOut);
  45647. }
  45648. index = ((x$7 = 31 - (_q$3 = i$4 / 2, (_q$3 === _q$3 && _q$3 !== 1/0 && _q$3 !== -1/0) ? _q$3 >> 0 : $throwRuntimeError("integer divide by zero")) >> 0, (scalar.nilCheck, ((x$7 < 0 || x$7 >= scalar.length) ? $throwRuntimeError("index out of range") : scalar[x$7]))) >>> 0);
  45649. if (((i$4 & 1)) === 1) {
  45650. index = (index & (15)) >>> 0;
  45651. } else {
  45652. index = (y$1 = (4), y$1 < 32 ? (index >>> y$1) : 0) >>> 0;
  45653. }
  45654. p256SelectJacobianPoint(px, py, pz, precomp, index);
  45655. p256PointAdd(tx, ty, tz, xOut, yOut, zOut, px, py, pz);
  45656. p256CopyConditional(xOut, px, nIsInfinityMask);
  45657. p256CopyConditional(yOut, py, nIsInfinityMask);
  45658. p256CopyConditional(zOut, pz, nIsInfinityMask);
  45659. pIsNoninfiniteMask = nonZeroToAllOnes(index);
  45660. mask$1 = (pIsNoninfiniteMask & (~nIsInfinityMask >>> 0)) >>> 0;
  45661. p256CopyConditional(xOut, tx, mask$1);
  45662. p256CopyConditional(yOut, ty, mask$1);
  45663. p256CopyConditional(zOut, tz, mask$1);
  45664. nIsInfinityMask = (nIsInfinityMask & ((~pIsNoninfiniteMask >>> 0))) >>> 0;
  45665. i$4 = i$4 + (1) >> 0;
  45666. }
  45667. };
  45668. p256FromBig = function(out, in$1) {
  45669. var $ptr, bits, bits$1, i, in$1, out, tmp;
  45670. tmp = new big.Int.ptr().Lsh(in$1, 257);
  45671. tmp.Mod(tmp, p256.CurveParams.P);
  45672. i = 0;
  45673. while (true) {
  45674. if (!(i < 9)) { break; }
  45675. bits = tmp.Bits();
  45676. if (bits.$length > 0) {
  45677. out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i] = (((0 >= bits.$length ? $throwRuntimeError("index out of range") : bits.$array[bits.$offset + 0]) >>> 0) & 536870911) >>> 0);
  45678. } else {
  45679. out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i] = 0);
  45680. }
  45681. tmp.Rsh(tmp, 29);
  45682. i = i + (1) >> 0;
  45683. if (i === 9) {
  45684. break;
  45685. }
  45686. bits$1 = tmp.Bits();
  45687. if (bits$1.$length > 0) {
  45688. out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i] = (((0 >= bits$1.$length ? $throwRuntimeError("index out of range") : bits$1.$array[bits$1.$offset + 0]) >>> 0) & 268435455) >>> 0);
  45689. } else {
  45690. out.nilCheck, ((i < 0 || i >= out.length) ? $throwRuntimeError("index out of range") : out[i] = 0);
  45691. }
  45692. tmp.Rsh(tmp, 28);
  45693. i = i + (1) >> 0;
  45694. }
  45695. };
  45696. p256ToBig = function(in$1) {
  45697. var $ptr, _tmp, _tmp$1, i, in$1, result, tmp;
  45698. _tmp = new big.Int.ptr(); _tmp$1 = new big.Int.ptr(); result = _tmp; tmp = _tmp$1;
  45699. result.SetInt64(new $Int64(0, (in$1.nilCheck, in$1[8])));
  45700. i = 7;
  45701. while (true) {
  45702. if (!(i >= 0)) { break; }
  45703. if (((i & 1)) === 0) {
  45704. result.Lsh(result, 29);
  45705. } else {
  45706. result.Lsh(result, 28);
  45707. }
  45708. tmp.SetInt64(new $Int64(0, (in$1.nilCheck, ((i < 0 || i >= in$1.length) ? $throwRuntimeError("index out of range") : in$1[i]))));
  45709. result.Add(result, tmp);
  45710. i = i - (1) >> 0;
  45711. }
  45712. result.Mul(result, p256RInverse);
  45713. result.Mod(result, p256.CurveParams.P);
  45714. return result;
  45715. };
  45716. ptrType.methods = [{prop: "Params", name: "Params", pkg: "", typ: $funcType([], [ptrType], false)}, {prop: "IsOnCurve", name: "IsOnCurve", pkg: "", typ: $funcType([ptrType$1, ptrType$1], [$Bool], false)}, {prop: "affineFromJacobian", name: "affineFromJacobian", pkg: "crypto/elliptic", typ: $funcType([ptrType$1, ptrType$1, ptrType$1], [ptrType$1, ptrType$1], false)}, {prop: "Add", name: "Add", pkg: "", typ: $funcType([ptrType$1, ptrType$1, ptrType$1, ptrType$1], [ptrType$1, ptrType$1], false)}, {prop: "addJacobian", name: "addJacobian", pkg: "crypto/elliptic", typ: $funcType([ptrType$1, ptrType$1, ptrType$1, ptrType$1, ptrType$1, ptrType$1], [ptrType$1, ptrType$1, ptrType$1], false)}, {prop: "Double", name: "Double", pkg: "", typ: $funcType([ptrType$1, ptrType$1], [ptrType$1, ptrType$1], false)}, {prop: "doubleJacobian", name: "doubleJacobian", pkg: "crypto/elliptic", typ: $funcType([ptrType$1, ptrType$1, ptrType$1], [ptrType$1, ptrType$1, ptrType$1], false)}, {prop: "ScalarMult", name: "ScalarMult", pkg: "", typ: $funcType([ptrType$1, ptrType$1, sliceType], [ptrType$1, ptrType$1], false)}, {prop: "ScalarBaseMult", name: "ScalarBaseMult", pkg: "", typ: $funcType([sliceType], [ptrType$1, ptrType$1], false)}];
  45717. p224Curve.methods = [{prop: "Params", name: "Params", pkg: "", typ: $funcType([], [ptrType], false)}, {prop: "IsOnCurve", name: "IsOnCurve", pkg: "", typ: $funcType([ptrType$1, ptrType$1], [$Bool], false)}, {prop: "Add", name: "Add", pkg: "", typ: $funcType([ptrType$1, ptrType$1, ptrType$1, ptrType$1], [ptrType$1, ptrType$1], false)}, {prop: "Double", name: "Double", pkg: "", typ: $funcType([ptrType$1, ptrType$1], [ptrType$1, ptrType$1], false)}, {prop: "ScalarMult", name: "ScalarMult", pkg: "", typ: $funcType([ptrType$1, ptrType$1, sliceType], [ptrType$1, ptrType$1], false)}, {prop: "ScalarBaseMult", name: "ScalarBaseMult", pkg: "", typ: $funcType([sliceType], [ptrType$1, ptrType$1], false)}];
  45718. p256Curve.methods = [{prop: "Params", name: "Params", pkg: "", typ: $funcType([], [ptrType], false)}, {prop: "ScalarBaseMult", name: "ScalarBaseMult", pkg: "", typ: $funcType([sliceType], [ptrType$1, ptrType$1], false)}, {prop: "ScalarMult", name: "ScalarMult", pkg: "", typ: $funcType([ptrType$1, ptrType$1, sliceType], [ptrType$1, ptrType$1], false)}];
  45719. Curve.init([{prop: "Add", name: "Add", pkg: "", typ: $funcType([ptrType$1, ptrType$1, ptrType$1, ptrType$1], [ptrType$1, ptrType$1], false)}, {prop: "Double", name: "Double", pkg: "", typ: $funcType([ptrType$1, ptrType$1], [ptrType$1, ptrType$1], false)}, {prop: "IsOnCurve", name: "IsOnCurve", pkg: "", typ: $funcType([ptrType$1, ptrType$1], [$Bool], false)}, {prop: "Params", name: "Params", pkg: "", typ: $funcType([], [ptrType], false)}, {prop: "ScalarBaseMult", name: "ScalarBaseMult", pkg: "", typ: $funcType([sliceType], [ptrType$1, ptrType$1], false)}, {prop: "ScalarMult", name: "ScalarMult", pkg: "", typ: $funcType([ptrType$1, ptrType$1, sliceType], [ptrType$1, ptrType$1], false)}]);
  45720. CurveParams.init([{prop: "P", name: "P", pkg: "", typ: ptrType$1, tag: ""}, {prop: "N", name: "N", pkg: "", typ: ptrType$1, tag: ""}, {prop: "B", name: "B", pkg: "", typ: ptrType$1, tag: ""}, {prop: "Gx", name: "Gx", pkg: "", typ: ptrType$1, tag: ""}, {prop: "Gy", name: "Gy", pkg: "", typ: ptrType$1, tag: ""}, {prop: "BitSize", name: "BitSize", pkg: "", typ: $Int, tag: ""}]);
  45721. p224Curve.init([{prop: "CurveParams", name: "", pkg: "", typ: ptrType, tag: ""}, {prop: "gx", name: "gx", pkg: "crypto/elliptic", typ: p224FieldElement, tag: ""}, {prop: "gy", name: "gy", pkg: "crypto/elliptic", typ: p224FieldElement, tag: ""}, {prop: "b", name: "b", pkg: "crypto/elliptic", typ: p224FieldElement, tag: ""}]);
  45722. p224FieldElement.init($Uint32, 8);
  45723. p224LargeFieldElement.init($Uint64, 15);
  45724. p256Curve.init([{prop: "CurveParams", name: "", pkg: "", typ: ptrType, tag: ""}]);
  45725. $init = function() {
  45726. $pkg.$init = function() {};
  45727. /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  45728. $r = io.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  45729. $r = big.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  45730. $r = sync.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  45731. initonce = new sync.Once.ptr();
  45732. p384 = ptrType.nil;
  45733. p521 = ptrType.nil;
  45734. p224 = new p224Curve.ptr();
  45735. p256 = new p256Curve.ptr();
  45736. p256RInverse = ptrType$1.nil;
  45737. mask = new sliceType([255, 1, 3, 7, 15, 31, 63, 127]);
  45738. p224P = $toNativeArray($kindUint32, [1, 0, 0, 268431360, 268435455, 268435455, 268435455, 268435455]);
  45739. p224ZeroModP31 = new sliceType$1([2147483656, 2147483640, 2147483640, 2147450872, 2147483640, 2147483640, 2147483640, 2147483640]);
  45740. p224ZeroModP63 = $toNativeArray($kindUint64, [new $Uint64(2147483656, 0), new $Uint64(2147483640, 0), new $Uint64(2147483640, 0), new $Uint64(2147483640, 0), new $Uint64(2147483639, 4294443008), new $Uint64(2147483640, 0), new $Uint64(2147483640, 0), new $Uint64(2147483640, 0)]);
  45741. p256One = $toNativeArray($kindUint32, [2, 0, 0, 268433408, 536870911, 268435455, 532676607, 33554431, 0]);
  45742. p256Precomputed = $toNativeArray($kindUint32, [290596984, 242421057, 230031737, 78635775, 310917853, 212721032, 295599836, 222981803, 51514350, 489335829, 254096764, 434396381, 96936400, 429049253, 170095751, 22329889, 21696699, 11419619, 222406006, 153287761, 37001551, 101408979, 373655214, 216620824, 535072883, 66729676, 99339564, 188755759, 22835391, 358715996, 94529284, 229187216, 215751807, 513877062, 236641822, 248061730, 40859512, 90604670, 168553630, 37024851, 439480858, 226879324, 90992905, 170293760, 190300240, 10025815, 178796492, 101451666, 217734681, 102476702, 92922779, 10691781, 131522279, 43478603, 532943434, 176956491, 484992866, 215358590, 405915872, 123172065, 496412073, 138651209, 205172986, 115533781, 124205610, 395011560, 67124891, 438243778, 7870186, 258227729, 93078495, 255999938, 425934842, 143782578, 305931036, 74112396, 88539357, 94251799, 388871183, 138291069, 185456137, 265411090, 56389202, 435020300, 219799744, 159190848, 184638233, 71951349, 14748830, 54179201, 90859435, 91714381, 501071970, 207073549, 21607325, 40541819, 204857247, 75982029, 124632266, 212120422, 244515755, 443842791, 92184193, 504621904, 256273651, 116484896, 79311219, 202804275, 365646905, 111382033, 121002173, 187258447, 66509915, 5486974, 321045696, 106813439, 60941558, 350622890, 153379607, 466107082, 182025965, 221826634, 260222982, 54653047, 174775689, 76106445, 166814421, 260313327, 455502422, 14152227, 65063826, 238663282, 111317018, 110789974, 518080, 163043539, 3185280, 449863551, 204453341, 213898269, 164542008, 273777244, 228642651, 135456897, 116610665, 111505196, 502845828, 3430432, 343397495, 23354801, 199756881, 203603518, 238413402, 451639968, 204952341, 258456729, 134076345, 421511614, 6366045, 46236905, 29730873, 75111974, 192722006, 155066973, 351520493, 214702793, 402536435, 77105545, 445695234, 49487938, 169309851, 184388732, 135863406, 500019767, 23199936, 276509345, 107743451, 282094082, 261267, 90308643, 376580903, 109796441, 40959228, 262999756, 241033666, 246105707, 50090300, 67630940, 195735859, 158359529, 193509607, 120899987, 31588239, 420833648, 180162304, 273063591, 53033664, 215783594, 30950397, 236240872, 364806751, 9130514, 246676327, 136101161, 197537558, 45546695, 257576489, 324406118, 202074818, 85649040, 222421617, 255761364, 30870187, 16949106, 121510965, 250023868, 181935023, 166511770, 141325342, 266780208, 392647399, 2348054, 528735877, 41804168, 107966648, 404542751, 158035532, 412033845, 173930329, 396852918, 267062899, 357230868, 49540177, 58878809, 194113917, 29829449, 325238538, 237239775, 173413552, 1015183, 495713, 136567250, 136396601, 287878667, 218717445, 193315010, 32289519, 38657156, 238414081, 406919754, 257809469, 58222217, 86139112, 95303012, 88256781, 148453957, 429206180, 160877633, 273786665, 79574169, 86713258, 278868094, 116766395, 528802279, 125439226, 281337663, 39453418, 184844341, 238149222, 208587427, 42902325, 42491940, 326299680, 16080181, 367290444, 254451223, 441087273, 213368497, 187332769, 447880991, 104209615, 113842077, 185816615, 308787572, 71338925, 482342488, 238904593, 13096815, 30177897, 243196699, 89107279, 2855247, 450001456, 215177118, 206574156, 84781712, 11616114, 184986229, 118447302, 373941674, 139088658, 53019708, 68960273, 332604433, 184854584, 225840429, 387167538, 195693571, 138420907, 113046977, 49566585, 25878640, 415883550, 34327194, 107956587, 65991316, 108331218, 226451772, 2997227, 192155704, 235148095, 360879757, 199853559, 28097562, 443192223, 54415606, 224812756, 189496278, 509228953, 112408647, 402282239, 106887472, 2219082, 45315673, 72416791, 188054373, 234221484, 356088815, 164846207, 288014687, 103081518, 177253935, 276753618, 32938942, 125660110, 91493268, 331777276, 156289296, 119886379, 231179651, 68086459, 534655626, 198581654, 220775303, 166165897, 307563584, 123325309, 57143092, 182626656, 152800220, 154428073, 16017903, 187603695, 221030257, 89005890, 8038985, 103901883, 37829774, 88235001, 468532794, 254222964, 526283558, 104949015, 245526642, 164552359, 7239219, 130619730, 226520526, 149071841, 239214106, 68733409, 31180944, 456743990, 169722229, 499445619, 144011060, 239820018, 453851672, 51989046, 113402911, 239342156, 170872490, 176956858, 261258967, 103265812, 121052362, 195126932, 68664323, 130066403, 163798041, 292069893, 146190349, 283373001, 163683314, 92807721, 455819618, 173862682, 356737579, 163398462, 56942669, 122161042, 97105331, 243662629, 67694423, 404017060, 18986011, 220498447, 61887010, 60535146, 209032813, 168001811, 172627817, 18857068, 152560910, 250363304, 379416236, 17569433, 172056915, 259148050, 365781175, 78428889, 99599866, 253038295, 1190737, 285520906, 213382210, 263923967, 111956938, 425804492, 129961897, 9795153, 81850901, 248789496, 66350037, 95217711, 285808310, 7188600, 268270935, 254724780, 212364780, 366392026, 157674697, 479376578, 2045969, 481329397, 47757316, 433176877, 253803846, 26550183, 171333315, 86221861, 265094802, 222617032, 320802651, 184028746, 215612532, 161199640, 47944780, 174534800, 29495521, 395087139, 21447555, 280523837, 159753563, 48711545, 5726520, 156793127, 321990906, 199251222, 167040537, 196486512, 161400209, 227830014, 487028781, 264711691, 117551768, 409175611, 140072120, 303696950, 166199007, 258257961, 163174174, 350418392, 260410682, 155381416, 228964197, 116240383, 178067660, 208004282, 477396614, 240036117, 427939745, 137975385, 86955234, 142427063, 58372379, 433230542, 260916882, 415434047, 143015443, 79775424, 113112410, 82068861, 370483849, 180850370, 442090914, 33721239, 119287041, 43353375, 67400827, 142103949, 131242660, 332936223, 148565975, 329029421, 112716405, 222993886, 267477976, 136140247, 173797224, 192622808, 199703919, 178815297, 228027521, 132622796, 415151985, 225918141, 334829905, 164675959, 29661816]);
  45743. p256Zero31 = $toNativeArray($kindUint32, [2147483640, 1073741820, 2147483644, 1073750012, 2147483644, 1073741820, 2164260860, 939524092, 2147483644]);
  45744. /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
  45745. };
  45746. $pkg.$init = $init;
  45747. return $pkg;
  45748. })();
  45749. $packages["encoding/asn1"] = (function() {
  45750. var $pkg = {}, $init, bytes, errors, fmt, io, big, reflect, strconv, strings, time, utf8, StructuralError, SyntaxError, BitString, ObjectIdentifier, Enumerated, Flag, RawValue, RawContent, tagAndLength, fieldParameters, forkableWriter, sliceType, ptrType, sliceType$1, ptrType$1, ptrType$2, sliceType$2, ptrType$3, arrayType, ptrType$4, ptrType$5, bigOne, bitStringType, objectIdentifierType, enumeratedType, flagType, timeType, rawValueType, rawContentsType, bigIntType, x, x$1, x$2, parseBool, parseInt64, parseInt32, parseBigInt, parseBitString, parseObjectIdentifier, parseBase128Int, parseUTCTime, parseGeneralizedTime, parsePrintableString, isPrintable, parseIA5String, parseT61String, parseUTF8String, parseTagAndLength, parseSequenceOf, invalidLength, parseField, canHaveDefaultValue, setDefaultValue, Unmarshal, UnmarshalWithParams, parseFieldParameters, getUniversalType, newForkableWriter, marshalBase128Int, marshalInt64, int64Length, marshalBigInt, marshalLength, lengthLength, marshalTagAndLength, marshalBitString, marshalObjectIdentifier, marshalPrintableString, marshalIA5String, marshalUTF8String, marshalTwoDigits, marshalFourDigits, outsideUTCRange, marshalUTCTime, marshalGeneralizedTime, marshalTimeCommon, stripTagAndLength, marshalBody, marshalField, Marshal;
  45751. bytes = $packages["bytes"];
  45752. errors = $packages["errors"];
  45753. fmt = $packages["fmt"];
  45754. io = $packages["io"];
  45755. big = $packages["math/big"];
  45756. reflect = $packages["reflect"];
  45757. strconv = $packages["strconv"];
  45758. strings = $packages["strings"];
  45759. time = $packages["time"];
  45760. utf8 = $packages["unicode/utf8"];
  45761. StructuralError = $pkg.StructuralError = $newType(0, $kindStruct, "asn1.StructuralError", "StructuralError", "encoding/asn1", function(Msg_) {
  45762. this.$val = this;
  45763. if (arguments.length === 0) {
  45764. this.Msg = "";
  45765. return;
  45766. }
  45767. this.Msg = Msg_;
  45768. });
  45769. SyntaxError = $pkg.SyntaxError = $newType(0, $kindStruct, "asn1.SyntaxError", "SyntaxError", "encoding/asn1", function(Msg_) {
  45770. this.$val = this;
  45771. if (arguments.length === 0) {
  45772. this.Msg = "";
  45773. return;
  45774. }
  45775. this.Msg = Msg_;
  45776. });
  45777. BitString = $pkg.BitString = $newType(0, $kindStruct, "asn1.BitString", "BitString", "encoding/asn1", function(Bytes_, BitLength_) {
  45778. this.$val = this;
  45779. if (arguments.length === 0) {
  45780. this.Bytes = sliceType.nil;
  45781. this.BitLength = 0;
  45782. return;
  45783. }
  45784. this.Bytes = Bytes_;
  45785. this.BitLength = BitLength_;
  45786. });
  45787. ObjectIdentifier = $pkg.ObjectIdentifier = $newType(12, $kindSlice, "asn1.ObjectIdentifier", "ObjectIdentifier", "encoding/asn1", null);
  45788. Enumerated = $pkg.Enumerated = $newType(4, $kindInt, "asn1.Enumerated", "Enumerated", "encoding/asn1", null);
  45789. Flag = $pkg.Flag = $newType(1, $kindBool, "asn1.Flag", "Flag", "encoding/asn1", null);
  45790. RawValue = $pkg.RawValue = $newType(0, $kindStruct, "asn1.RawValue", "RawValue", "encoding/asn1", function(Class_, Tag_, IsCompound_, Bytes_, FullBytes_) {
  45791. this.$val = this;
  45792. if (arguments.length === 0) {
  45793. this.Class = 0;
  45794. this.Tag = 0;
  45795. this.IsCompound = false;
  45796. this.Bytes = sliceType.nil;
  45797. this.FullBytes = sliceType.nil;
  45798. return;
  45799. }
  45800. this.Class = Class_;
  45801. this.Tag = Tag_;
  45802. this.IsCompound = IsCompound_;
  45803. this.Bytes = Bytes_;
  45804. this.FullBytes = FullBytes_;
  45805. });
  45806. RawContent = $pkg.RawContent = $newType(12, $kindSlice, "asn1.RawContent", "RawContent", "encoding/asn1", null);
  45807. tagAndLength = $pkg.tagAndLength = $newType(0, $kindStruct, "asn1.tagAndLength", "tagAndLength", "encoding/asn1", function(class$0_, tag_, length_, isCompound_) {
  45808. this.$val = this;
  45809. if (arguments.length === 0) {
  45810. this.class$0 = 0;
  45811. this.tag = 0;
  45812. this.length = 0;
  45813. this.isCompound = false;
  45814. return;
  45815. }
  45816. this.class$0 = class$0_;
  45817. this.tag = tag_;
  45818. this.length = length_;
  45819. this.isCompound = isCompound_;
  45820. });
  45821. fieldParameters = $pkg.fieldParameters = $newType(0, $kindStruct, "asn1.fieldParameters", "fieldParameters", "encoding/asn1", function(optional_, explicit_, application_, defaultValue_, tag_, stringType_, set_, omitEmpty_) {
  45822. this.$val = this;
  45823. if (arguments.length === 0) {
  45824. this.optional = false;
  45825. this.explicit = false;
  45826. this.application = false;
  45827. this.defaultValue = ptrType$1.nil;
  45828. this.tag = ptrType$2.nil;
  45829. this.stringType = 0;
  45830. this.set = false;
  45831. this.omitEmpty = false;
  45832. return;
  45833. }
  45834. this.optional = optional_;
  45835. this.explicit = explicit_;
  45836. this.application = application_;
  45837. this.defaultValue = defaultValue_;
  45838. this.tag = tag_;
  45839. this.stringType = stringType_;
  45840. this.set = set_;
  45841. this.omitEmpty = omitEmpty_;
  45842. });
  45843. forkableWriter = $pkg.forkableWriter = $newType(0, $kindStruct, "asn1.forkableWriter", "forkableWriter", "encoding/asn1", function(Buffer_, pre_, post_) {
  45844. this.$val = this;
  45845. if (arguments.length === 0) {
  45846. this.Buffer = ptrType$5.nil;
  45847. this.pre = ptrType$3.nil;
  45848. this.post = ptrType$3.nil;
  45849. return;
  45850. }
  45851. this.Buffer = Buffer_;
  45852. this.pre = pre_;
  45853. this.post = post_;
  45854. });
  45855. sliceType = $sliceType($Uint8);
  45856. ptrType = $ptrType(time.Location);
  45857. sliceType$1 = $sliceType($Int);
  45858. ptrType$1 = $ptrType($Int64);
  45859. ptrType$2 = $ptrType($Int);
  45860. sliceType$2 = $sliceType($emptyInterface);
  45861. ptrType$3 = $ptrType(forkableWriter);
  45862. arrayType = $arrayType($Uint8, 4);
  45863. ptrType$4 = $ptrType(big.Int);
  45864. ptrType$5 = $ptrType(bytes.Buffer);
  45865. StructuralError.ptr.prototype.Error = function() {
  45866. var $ptr, e;
  45867. e = $clone(this, StructuralError);
  45868. return "asn1: structure error: " + e.Msg;
  45869. };
  45870. StructuralError.prototype.Error = function() { return this.$val.Error(); };
  45871. SyntaxError.ptr.prototype.Error = function() {
  45872. var $ptr, e;
  45873. e = $clone(this, SyntaxError);
  45874. return "asn1: syntax error: " + e.Msg;
  45875. };
  45876. SyntaxError.prototype.Error = function() { return this.$val.Error(); };
  45877. parseBool = function(bytes$1) {
  45878. var $ptr, _ref, bytes$1, err, ret, x$3, x$4;
  45879. ret = false;
  45880. err = $ifaceNil;
  45881. if (!((bytes$1.$length === 1))) {
  45882. err = (x$3 = new SyntaxError.ptr("invalid boolean"), new x$3.constructor.elem(x$3));
  45883. return [ret, err];
  45884. }
  45885. _ref = (0 >= bytes$1.$length ? $throwRuntimeError("index out of range") : bytes$1.$array[bytes$1.$offset + 0]);
  45886. if (_ref === 0) {
  45887. ret = false;
  45888. } else if (_ref === 255) {
  45889. ret = true;
  45890. } else {
  45891. err = (x$4 = new SyntaxError.ptr("invalid boolean"), new x$4.constructor.elem(x$4));
  45892. }
  45893. return [ret, err];
  45894. };
  45895. parseInt64 = function(bytes$1) {
  45896. var $ptr, bytes$1, bytesRead, err, ret, x$3, x$4;
  45897. ret = new $Int64(0, 0);
  45898. err = $ifaceNil;
  45899. if (bytes$1.$length > 8) {
  45900. err = (x$3 = new StructuralError.ptr("integer too large"), new x$3.constructor.elem(x$3));
  45901. return [ret, err];
  45902. }
  45903. bytesRead = 0;
  45904. while (true) {
  45905. if (!(bytesRead < bytes$1.$length)) { break; }
  45906. ret = $shiftLeft64(ret, (8));
  45907. ret = (x$4 = new $Int64(0, ((bytesRead < 0 || bytesRead >= bytes$1.$length) ? $throwRuntimeError("index out of range") : bytes$1.$array[bytes$1.$offset + bytesRead])), new $Int64(ret.$high | x$4.$high, (ret.$low | x$4.$low) >>> 0));
  45908. bytesRead = bytesRead + (1) >> 0;
  45909. }
  45910. ret = $shiftLeft64(ret, ((64 - ((bytes$1.$length << 24 >>> 24) * 8 << 24 >>> 24) << 24 >>> 24)));
  45911. ret = $shiftRightInt64(ret, ((64 - ((bytes$1.$length << 24 >>> 24) * 8 << 24 >>> 24) << 24 >>> 24)));
  45912. return [ret, err];
  45913. };
  45914. parseInt32 = function(bytes$1) {
  45915. var $ptr, _tuple, bytes$1, err, ret64, x$3, x$4;
  45916. _tuple = parseInt64(bytes$1); ret64 = _tuple[0]; err = _tuple[1];
  45917. if (!($interfaceIsEqual(err, $ifaceNil))) {
  45918. return [0, err];
  45919. }
  45920. if (!((x$3 = new $Int64(0, ((ret64.$low + ((ret64.$high >> 31) * 4294967296)) >> 0)), (ret64.$high === x$3.$high && ret64.$low === x$3.$low)))) {
  45921. return [0, (x$4 = new StructuralError.ptr("integer too large"), new x$4.constructor.elem(x$4))];
  45922. }
  45923. return [((ret64.$low + ((ret64.$high >> 31) * 4294967296)) >> 0), $ifaceNil];
  45924. };
  45925. parseBigInt = function(bytes$1) {
  45926. var $ptr, _i, _ref, bytes$1, i, notBytes, ret;
  45927. ret = new big.Int.ptr();
  45928. if (bytes$1.$length > 0 && ((((0 >= bytes$1.$length ? $throwRuntimeError("index out of range") : bytes$1.$array[bytes$1.$offset + 0]) & 128) >>> 0) === 128)) {
  45929. notBytes = $makeSlice(sliceType, bytes$1.$length);
  45930. _ref = notBytes;
  45931. _i = 0;
  45932. while (true) {
  45933. if (!(_i < _ref.$length)) { break; }
  45934. i = _i;
  45935. ((i < 0 || i >= notBytes.$length) ? $throwRuntimeError("index out of range") : notBytes.$array[notBytes.$offset + i] = ~((i < 0 || i >= bytes$1.$length) ? $throwRuntimeError("index out of range") : bytes$1.$array[bytes$1.$offset + i]) << 24 >>> 24);
  45936. _i++;
  45937. }
  45938. ret.SetBytes(notBytes);
  45939. ret.Add(ret, bigOne);
  45940. ret.Neg(ret);
  45941. return ret;
  45942. }
  45943. ret.SetBytes(bytes$1);
  45944. return ret;
  45945. };
  45946. BitString.ptr.prototype.At = function(i) {
  45947. var $ptr, _q, _r, b, i, x$3, x$4, y, y$1;
  45948. b = $clone(this, BitString);
  45949. if (i < 0 || i >= b.BitLength) {
  45950. return 0;
  45951. }
  45952. x$3 = (_q = i / 8, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero"));
  45953. y = 7 - ((_r = i % 8, _r === _r ? _r : $throwRuntimeError("integer divide by zero")) >>> 0) >>> 0;
  45954. return (((y$1 = y, y$1 < 32 ? ((x$4 = b.Bytes, ((x$3 < 0 || x$3 >= x$4.$length) ? $throwRuntimeError("index out of range") : x$4.$array[x$4.$offset + x$3])) >>> y$1) : 0) << 24 >>> 24) >> 0) & 1;
  45955. };
  45956. BitString.prototype.At = function(i) { return this.$val.At(i); };
  45957. BitString.ptr.prototype.RightAlign = function() {
  45958. var $ptr, _r, a, b, i, shift, x$3, x$4, x$5, x$6, y, y$1, y$2;
  45959. b = $clone(this, BitString);
  45960. shift = ((8 - ((_r = b.BitLength % 8, _r === _r ? _r : $throwRuntimeError("integer divide by zero"))) >> 0) >>> 0);
  45961. if ((shift === 8) || (b.Bytes.$length === 0)) {
  45962. return b.Bytes;
  45963. }
  45964. a = $makeSlice(sliceType, b.Bytes.$length);
  45965. (0 >= a.$length ? $throwRuntimeError("index out of range") : a.$array[a.$offset + 0] = (y = shift, y < 32 ? ((x$3 = b.Bytes, (0 >= x$3.$length ? $throwRuntimeError("index out of range") : x$3.$array[x$3.$offset + 0])) >>> y) : 0) << 24 >>> 24);
  45966. i = 1;
  45967. while (true) {
  45968. if (!(i < b.Bytes.$length)) { break; }
  45969. ((i < 0 || i >= a.$length) ? $throwRuntimeError("index out of range") : a.$array[a.$offset + i] = (y$1 = ((8 - shift >>> 0)), y$1 < 32 ? ((x$4 = b.Bytes, x$5 = i - 1 >> 0, ((x$5 < 0 || x$5 >= x$4.$length) ? $throwRuntimeError("index out of range") : x$4.$array[x$4.$offset + x$5])) << y$1) : 0) << 24 >>> 24);
  45970. ((i < 0 || i >= a.$length) ? $throwRuntimeError("index out of range") : a.$array[a.$offset + i] = (((i < 0 || i >= a.$length) ? $throwRuntimeError("index out of range") : a.$array[a.$offset + i]) | (((y$2 = shift, y$2 < 32 ? ((x$6 = b.Bytes, ((i < 0 || i >= x$6.$length) ? $throwRuntimeError("index out of range") : x$6.$array[x$6.$offset + i])) >>> y$2) : 0) << 24 >>> 24))) >>> 0);
  45971. i = i + (1) >> 0;
  45972. }
  45973. return a;
  45974. };
  45975. BitString.prototype.RightAlign = function() { return this.$val.RightAlign(); };
  45976. parseBitString = function(bytes$1) {
  45977. var $ptr, bytes$1, err, paddingBits, ret, x$3, x$4, x$5, y;
  45978. ret = new BitString.ptr();
  45979. err = $ifaceNil;
  45980. if (bytes$1.$length === 0) {
  45981. err = (x$3 = new SyntaxError.ptr("zero length BIT STRING"), new x$3.constructor.elem(x$3));
  45982. return [ret, err];
  45983. }
  45984. paddingBits = ((0 >= bytes$1.$length ? $throwRuntimeError("index out of range") : bytes$1.$array[bytes$1.$offset + 0]) >> 0);
  45985. if (paddingBits > 7 || (bytes$1.$length === 1) && paddingBits > 0 || !(((((x$4 = bytes$1.$length - 1 >> 0, ((x$4 < 0 || x$4 >= bytes$1.$length) ? $throwRuntimeError("index out of range") : bytes$1.$array[bytes$1.$offset + x$4])) & (((((y = (0 >= bytes$1.$length ? $throwRuntimeError("index out of range") : bytes$1.$array[bytes$1.$offset + 0]), y < 32 ? (1 << y) : 0) << 24 >>> 24)) - 1 << 24 >>> 24))) >>> 0) === 0))) {
  45986. err = (x$5 = new SyntaxError.ptr("invalid padding bits in BIT STRING"), new x$5.constructor.elem(x$5));
  45987. return [ret, err];
  45988. }
  45989. ret.BitLength = (((bytes$1.$length - 1 >> 0)) * 8 >> 0) - paddingBits >> 0;
  45990. ret.Bytes = $subslice(bytes$1, 1);
  45991. return [ret, err];
  45992. };
  45993. ObjectIdentifier.prototype.Equal = function(other) {
  45994. var $ptr, i, oi, other;
  45995. oi = this;
  45996. if (!((oi.$length === other.$length))) {
  45997. return false;
  45998. }
  45999. i = 0;
  46000. while (true) {
  46001. if (!(i < oi.$length)) { break; }
  46002. if (!((((i < 0 || i >= oi.$length) ? $throwRuntimeError("index out of range") : oi.$array[oi.$offset + i]) === ((i < 0 || i >= other.$length) ? $throwRuntimeError("index out of range") : other.$array[other.$offset + i])))) {
  46003. return false;
  46004. }
  46005. i = i + (1) >> 0;
  46006. }
  46007. return true;
  46008. };
  46009. $ptrType(ObjectIdentifier).prototype.Equal = function(other) { return this.$get().Equal(other); };
  46010. ObjectIdentifier.prototype.String = function() {
  46011. var $ptr, _i, _ref, i, oi, s, v;
  46012. oi = this;
  46013. s = "";
  46014. _ref = oi;
  46015. _i = 0;
  46016. while (true) {
  46017. if (!(_i < _ref.$length)) { break; }
  46018. i = _i;
  46019. v = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]);
  46020. if (i > 0) {
  46021. s = s + (".");
  46022. }
  46023. s = s + (strconv.Itoa(v));
  46024. _i++;
  46025. }
  46026. return s;
  46027. };
  46028. $ptrType(ObjectIdentifier).prototype.String = function() { return this.$get().String(); };
  46029. parseObjectIdentifier = function(bytes$1) {
  46030. var $ptr, _q, _r, _tuple, _tuple$1, bytes$1, err, i, offset, s, v, x$3;
  46031. s = sliceType$1.nil;
  46032. err = $ifaceNil;
  46033. if (bytes$1.$length === 0) {
  46034. err = (x$3 = new SyntaxError.ptr("zero length OBJECT IDENTIFIER"), new x$3.constructor.elem(x$3));
  46035. return [s, err];
  46036. }
  46037. s = $makeSlice(sliceType$1, (bytes$1.$length + 1 >> 0));
  46038. _tuple = parseBase128Int(bytes$1, 0); v = _tuple[0]; offset = _tuple[1]; err = _tuple[2];
  46039. if (!($interfaceIsEqual(err, $ifaceNil))) {
  46040. return [s, err];
  46041. }
  46042. if (v < 80) {
  46043. (0 >= s.$length ? $throwRuntimeError("index out of range") : s.$array[s.$offset + 0] = (_q = v / 40, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")));
  46044. (1 >= s.$length ? $throwRuntimeError("index out of range") : s.$array[s.$offset + 1] = (_r = v % 40, _r === _r ? _r : $throwRuntimeError("integer divide by zero")));
  46045. } else {
  46046. (0 >= s.$length ? $throwRuntimeError("index out of range") : s.$array[s.$offset + 0] = 2);
  46047. (1 >= s.$length ? $throwRuntimeError("index out of range") : s.$array[s.$offset + 1] = v - 80 >> 0);
  46048. }
  46049. i = 2;
  46050. while (true) {
  46051. if (!(offset < bytes$1.$length)) { break; }
  46052. _tuple$1 = parseBase128Int(bytes$1, offset); v = _tuple$1[0]; offset = _tuple$1[1]; err = _tuple$1[2];
  46053. if (!($interfaceIsEqual(err, $ifaceNil))) {
  46054. return [s, err];
  46055. }
  46056. ((i < 0 || i >= s.$length) ? $throwRuntimeError("index out of range") : s.$array[s.$offset + i] = v);
  46057. i = i + (1) >> 0;
  46058. }
  46059. s = $subslice(s, 0, i);
  46060. return [s, err];
  46061. };
  46062. parseBase128Int = function(bytes$1, initOffset) {
  46063. var $ptr, b, bytes$1, err, initOffset, offset, ret, shifted, x$3, x$4, y;
  46064. ret = 0;
  46065. offset = 0;
  46066. err = $ifaceNil;
  46067. offset = initOffset;
  46068. shifted = 0;
  46069. while (true) {
  46070. if (!(offset < bytes$1.$length)) { break; }
  46071. if (shifted > 4) {
  46072. err = (x$3 = new StructuralError.ptr("base 128 integer too large"), new x$3.constructor.elem(x$3));
  46073. return [ret, offset, err];
  46074. }
  46075. ret = (y = (7), y < 32 ? (ret << y) : 0) >> 0;
  46076. b = ((offset < 0 || offset >= bytes$1.$length) ? $throwRuntimeError("index out of range") : bytes$1.$array[bytes$1.$offset + offset]);
  46077. ret = ret | ((((b & 127) >>> 0) >> 0));
  46078. offset = offset + (1) >> 0;
  46079. if (((b & 128) >>> 0) === 0) {
  46080. return [ret, offset, err];
  46081. }
  46082. shifted = shifted + (1) >> 0;
  46083. }
  46084. err = (x$4 = new SyntaxError.ptr("truncated base 128 integer"), new x$4.constructor.elem(x$4));
  46085. return [ret, offset, err];
  46086. };
  46087. parseUTCTime = function(bytes$1) {
  46088. var $ptr, _r, _r$1, _r$2, _r$3, _tuple, _tuple$1, _v, bytes$1, err, ret, s, $s, $r;
  46089. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _v = $f._v; bytes$1 = $f.bytes$1; err = $f.err; ret = $f.ret; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  46090. ret = new time.Time.ptr();
  46091. err = $ifaceNil;
  46092. s = $bytesToString(bytes$1);
  46093. _r = time.Parse("0601021504Z0700", s); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  46094. _tuple = _r; $copy(ret, _tuple[0], time.Time); err = _tuple[1];
  46095. /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 2; continue; }
  46096. /* */ $s = 3; continue;
  46097. /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 2:
  46098. _r$1 = time.Parse("060102150405Z0700", s); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  46099. _tuple$1 = _r$1; $copy(ret, _tuple$1[0], time.Time); err = _tuple$1[1];
  46100. /* } */ case 3:
  46101. if (!($interfaceIsEqual(err, $ifaceNil))) { _v = false; $s = 7; continue s; }
  46102. _r$2 = ret.Year(); /* */ $s = 8; case 8: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  46103. _v = _r$2 >= 2050; case 7:
  46104. /* */ if (_v) { $s = 5; continue; }
  46105. /* */ $s = 6; continue;
  46106. /* if (_v) { */ case 5:
  46107. _r$3 = ret.AddDate(-100, 0, 0); /* */ $s = 9; case 9: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  46108. $copy(ret, _r$3, time.Time);
  46109. /* } */ case 6:
  46110. return [ret, err];
  46111. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: parseUTCTime }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._v = _v; $f.bytes$1 = bytes$1; $f.err = err; $f.ret = ret; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
  46112. };
  46113. parseGeneralizedTime = function(bytes$1) {
  46114. var $ptr, _r, _tuple, bytes$1, err, ret, $s, $r;
  46115. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tuple = $f._tuple; bytes$1 = $f.bytes$1; err = $f.err; ret = $f.ret; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  46116. ret = new time.Time.ptr();
  46117. err = $ifaceNil;
  46118. _r = time.Parse("20060102150405Z0700", $bytesToString(bytes$1)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  46119. _tuple = _r; $copy(ret, _tuple[0], time.Time); err = _tuple[1];
  46120. return [ret, err];
  46121. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: parseGeneralizedTime }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple = _tuple; $f.bytes$1 = bytes$1; $f.err = err; $f.ret = ret; $f.$s = $s; $f.$r = $r; return $f;
  46122. };
  46123. parsePrintableString = function(bytes$1) {
  46124. var $ptr, _i, _ref, b, bytes$1, err, ret, x$3;
  46125. ret = "";
  46126. err = $ifaceNil;
  46127. _ref = bytes$1;
  46128. _i = 0;
  46129. while (true) {
  46130. if (!(_i < _ref.$length)) { break; }
  46131. b = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]);
  46132. if (!isPrintable(b)) {
  46133. err = (x$3 = new SyntaxError.ptr("PrintableString contains invalid character"), new x$3.constructor.elem(x$3));
  46134. return [ret, err];
  46135. }
  46136. _i++;
  46137. }
  46138. ret = $bytesToString(bytes$1);
  46139. return [ret, err];
  46140. };
  46141. isPrintable = function(b) {
  46142. var $ptr, b;
  46143. return 97 <= b && b <= 122 || 65 <= b && b <= 90 || 48 <= b && b <= 57 || 39 <= b && b <= 41 || 43 <= b && b <= 47 || (b === 32) || (b === 58) || (b === 61) || (b === 63) || (b === 42);
  46144. };
  46145. parseIA5String = function(bytes$1) {
  46146. var $ptr, _i, _ref, b, bytes$1, err, ret, x$3;
  46147. ret = "";
  46148. err = $ifaceNil;
  46149. _ref = bytes$1;
  46150. _i = 0;
  46151. while (true) {
  46152. if (!(_i < _ref.$length)) { break; }
  46153. b = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]);
  46154. if (b >= 128) {
  46155. err = (x$3 = new SyntaxError.ptr("IA5String contains invalid character"), new x$3.constructor.elem(x$3));
  46156. return [ret, err];
  46157. }
  46158. _i++;
  46159. }
  46160. ret = $bytesToString(bytes$1);
  46161. return [ret, err];
  46162. };
  46163. parseT61String = function(bytes$1) {
  46164. var $ptr, _tmp, _tmp$1, bytes$1, err, ret;
  46165. ret = "";
  46166. err = $ifaceNil;
  46167. _tmp = $bytesToString(bytes$1); _tmp$1 = $ifaceNil; ret = _tmp; err = _tmp$1;
  46168. return [ret, err];
  46169. };
  46170. parseUTF8String = function(bytes$1) {
  46171. var $ptr, _tmp, _tmp$1, bytes$1, err, ret;
  46172. ret = "";
  46173. err = $ifaceNil;
  46174. _tmp = $bytesToString(bytes$1); _tmp$1 = $ifaceNil; ret = _tmp; err = _tmp$1;
  46175. return [ret, err];
  46176. };
  46177. parseTagAndLength = function(bytes$1, initOffset) {
  46178. var $ptr, _tuple, b, bytes$1, err, i, initOffset, numBytes, offset, ret, x$3, x$4, x$5, x$6, x$7, y;
  46179. ret = new tagAndLength.ptr();
  46180. offset = 0;
  46181. err = $ifaceNil;
  46182. offset = initOffset;
  46183. b = ((offset < 0 || offset >= bytes$1.$length) ? $throwRuntimeError("index out of range") : bytes$1.$array[bytes$1.$offset + offset]);
  46184. offset = offset + (1) >> 0;
  46185. ret.class$0 = ((b >>> 6 << 24 >>> 24) >> 0);
  46186. ret.isCompound = ((b & 32) >>> 0) === 32;
  46187. ret.tag = (((b & 31) >>> 0) >> 0);
  46188. if (ret.tag === 31) {
  46189. _tuple = parseBase128Int(bytes$1, offset); ret.tag = _tuple[0]; offset = _tuple[1]; err = _tuple[2];
  46190. if (!($interfaceIsEqual(err, $ifaceNil))) {
  46191. return [ret, offset, err];
  46192. }
  46193. }
  46194. if (offset >= bytes$1.$length) {
  46195. err = (x$3 = new SyntaxError.ptr("truncated tag or length"), new x$3.constructor.elem(x$3));
  46196. return [ret, offset, err];
  46197. }
  46198. b = ((offset < 0 || offset >= bytes$1.$length) ? $throwRuntimeError("index out of range") : bytes$1.$array[bytes$1.$offset + offset]);
  46199. offset = offset + (1) >> 0;
  46200. if (((b & 128) >>> 0) === 0) {
  46201. ret.length = (((b & 127) >>> 0) >> 0);
  46202. } else {
  46203. numBytes = (((b & 127) >>> 0) >> 0);
  46204. if (numBytes === 0) {
  46205. err = (x$4 = new SyntaxError.ptr("indefinite length found (not DER)"), new x$4.constructor.elem(x$4));
  46206. return [ret, offset, err];
  46207. }
  46208. ret.length = 0;
  46209. i = 0;
  46210. while (true) {
  46211. if (!(i < numBytes)) { break; }
  46212. if (offset >= bytes$1.$length) {
  46213. err = (x$5 = new SyntaxError.ptr("truncated tag or length"), new x$5.constructor.elem(x$5));
  46214. return [ret, offset, err];
  46215. }
  46216. b = ((offset < 0 || offset >= bytes$1.$length) ? $throwRuntimeError("index out of range") : bytes$1.$array[bytes$1.$offset + offset]);
  46217. offset = offset + (1) >> 0;
  46218. if (ret.length >= 8388608) {
  46219. err = (x$6 = new StructuralError.ptr("length too large"), new x$6.constructor.elem(x$6));
  46220. return [ret, offset, err];
  46221. }
  46222. ret.length = (y = (8), y < 32 ? (ret.length << y) : 0) >> 0;
  46223. ret.length = ret.length | ((b >> 0));
  46224. if (ret.length === 0) {
  46225. err = (x$7 = new StructuralError.ptr("superfluous leading zeros in length"), new x$7.constructor.elem(x$7));
  46226. return [ret, offset, err];
  46227. }
  46228. i = i + (1) >> 0;
  46229. }
  46230. }
  46231. return [ret, offset, err];
  46232. };
  46233. parseSequenceOf = function(bytes$1, sliceType$2, elemType) {
  46234. var $ptr, _r, _r$1, _r$2, _r$3, _ref, _tuple, _tuple$1, _tuple$2, bytes$1, compoundType, elemType, err, expectedTag, i, numElements, offset, offset$1, ok, params, ret, sliceType$2, t, x$3, x$4, x$5, $s, $r;
  46235. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _ref = $f._ref; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; bytes$1 = $f.bytes$1; compoundType = $f.compoundType; elemType = $f.elemType; err = $f.err; expectedTag = $f.expectedTag; i = $f.i; numElements = $f.numElements; offset = $f.offset; offset$1 = $f.offset$1; ok = $f.ok; params = $f.params; ret = $f.ret; sliceType$2 = $f.sliceType$2; t = $f.t; x$3 = $f.x$3; x$4 = $f.x$4; x$5 = $f.x$5; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  46236. ret = new reflect.Value.ptr();
  46237. err = $ifaceNil;
  46238. _r = getUniversalType(elemType); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  46239. _tuple = _r; expectedTag = _tuple[0]; compoundType = _tuple[1]; ok = _tuple[2];
  46240. if (!ok) {
  46241. err = (x$3 = new StructuralError.ptr("unknown Go type for slice"), new x$3.constructor.elem(x$3));
  46242. return [ret, err];
  46243. }
  46244. numElements = 0;
  46245. offset = 0;
  46246. while (true) {
  46247. if (!(offset < bytes$1.$length)) { break; }
  46248. t = $clone(new tagAndLength.ptr(), tagAndLength);
  46249. _tuple$1 = parseTagAndLength(bytes$1, offset); $copy(t, _tuple$1[0], tagAndLength); offset = _tuple$1[1]; err = _tuple$1[2];
  46250. if (!($interfaceIsEqual(err, $ifaceNil))) {
  46251. return [ret, err];
  46252. }
  46253. _ref = t.tag;
  46254. if (_ref === 22 || _ref === 27 || _ref === 20 || _ref === 12) {
  46255. t.tag = 19;
  46256. } else if (_ref === 24 || _ref === 23) {
  46257. t.tag = 23;
  46258. }
  46259. if (!((t.class$0 === 0)) || !(t.isCompound === compoundType) || !((t.tag === expectedTag))) {
  46260. err = (x$4 = new StructuralError.ptr("sequence tag mismatch"), new x$4.constructor.elem(x$4));
  46261. return [ret, err];
  46262. }
  46263. if (invalidLength(offset, t.length, bytes$1.$length)) {
  46264. err = (x$5 = new SyntaxError.ptr("truncated sequence"), new x$5.constructor.elem(x$5));
  46265. return [ret, err];
  46266. }
  46267. offset = offset + (t.length) >> 0;
  46268. numElements = numElements + (1) >> 0;
  46269. }
  46270. _r$1 = reflect.MakeSlice(sliceType$2, numElements, numElements); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  46271. ret = _r$1;
  46272. params = new fieldParameters.ptr(false, false, false, ptrType$1.nil, ptrType$2.nil, 0, false, false);
  46273. offset$1 = 0;
  46274. i = 0;
  46275. /* while (true) { */ case 3:
  46276. /* if (!(i < numElements)) { break; } */ if(!(i < numElements)) { $s = 4; continue; }
  46277. _r$2 = ret.Index(i); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  46278. _r$3 = parseField(_r$2, bytes$1, offset$1, params); /* */ $s = 6; case 6: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  46279. _tuple$2 = _r$3; offset$1 = _tuple$2[0]; err = _tuple$2[1];
  46280. if (!($interfaceIsEqual(err, $ifaceNil))) {
  46281. return [ret, err];
  46282. }
  46283. i = i + (1) >> 0;
  46284. /* } */ $s = 3; continue; case 4:
  46285. return [ret, err];
  46286. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: parseSequenceOf }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._ref = _ref; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f.bytes$1 = bytes$1; $f.compoundType = compoundType; $f.elemType = elemType; $f.err = err; $f.expectedTag = expectedTag; $f.i = i; $f.numElements = numElements; $f.offset = offset; $f.offset$1 = offset$1; $f.ok = ok; $f.params = params; $f.ret = ret; $f.sliceType$2 = sliceType$2; $f.t = t; $f.x$3 = x$3; $f.x$4 = x$4; $f.x$5 = x$5; $f.$s = $s; $f.$r = $r; return $f;
  46287. };
  46288. invalidLength = function(offset, length, sliceLength) {
  46289. var $ptr, length, offset, sliceLength;
  46290. return (offset + length >> 0) < offset || (offset + length >> 0) > sliceLength;
  46291. };
  46292. parseField = function(v, bytes$1, initOffset, params) {
  46293. var $ptr, _arg, _arg$1, _arg$10, _arg$11, _arg$2, _arg$3, _arg$4, _arg$5, _arg$6, _arg$7, _arg$8, _arg$9, _r, _r$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$16, _r$17, _r$18, _r$19, _r$2, _r$20, _r$21, _r$22, _r$23, _r$24, _r$25, _r$26, _r$27, _r$28, _r$29, _r$3, _r$30, _r$31, _r$32, _r$33, _r$34, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _ref$1, _ref$2, _ref$3, _ref$4, _tuple, _tuple$1, _tuple$10, _tuple$11, _tuple$12, _tuple$13, _tuple$14, _tuple$15, _tuple$16, _tuple$17, _tuple$18, _tuple$19, _tuple$2, _tuple$20, _tuple$21, _tuple$22, _tuple$23, _tuple$24, _tuple$25, _tuple$26, _tuple$27, _tuple$3, _tuple$4, _tuple$5, _tuple$6, _tuple$7, _tuple$8, _tuple$9, _v, _v$1, bs, bytes$1, bytes$2, compoundType, err, err1, err1$1, err1$2, err1$3, err1$4, err1$5, err1$6, err1$7, expectedClass, expectedClass$1, expectedTag, field, fieldType, i, ifaceType, initOffset, innerBytes, innerBytes$1, innerOffset, newSlice, newSlice$1, offset, ok, ok$1, ok1, params, parsedBool, parsedInt, parsedInt$1, parsedInt$2, parsedInt$3, result, result$1, sliceType$3, structType, t, t$1, t$2, time$1, universalTag, v, v$1, val, x$10, x$11, x$12, x$3, x$4, x$5, x$6, x$7, x$8, x$9, $s, $r;
  46294. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _arg = $f._arg; _arg$1 = $f._arg$1; _arg$10 = $f._arg$10; _arg$11 = $f._arg$11; _arg$2 = $f._arg$2; _arg$3 = $f._arg$3; _arg$4 = $f._arg$4; _arg$5 = $f._arg$5; _arg$6 = $f._arg$6; _arg$7 = $f._arg$7; _arg$8 = $f._arg$8; _arg$9 = $f._arg$9; _r = $f._r; _r$1 = $f._r$1; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$12 = $f._r$12; _r$13 = $f._r$13; _r$14 = $f._r$14; _r$15 = $f._r$15; _r$16 = $f._r$16; _r$17 = $f._r$17; _r$18 = $f._r$18; _r$19 = $f._r$19; _r$2 = $f._r$2; _r$20 = $f._r$20; _r$21 = $f._r$21; _r$22 = $f._r$22; _r$23 = $f._r$23; _r$24 = $f._r$24; _r$25 = $f._r$25; _r$26 = $f._r$26; _r$27 = $f._r$27; _r$28 = $f._r$28; _r$29 = $f._r$29; _r$3 = $f._r$3; _r$30 = $f._r$30; _r$31 = $f._r$31; _r$32 = $f._r$32; _r$33 = $f._r$33; _r$34 = $f._r$34; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _r$9 = $f._r$9; _ref = $f._ref; _ref$1 = $f._ref$1; _ref$2 = $f._ref$2; _ref$3 = $f._ref$3; _ref$4 = $f._ref$4; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$10 = $f._tuple$10; _tuple$11 = $f._tuple$11; _tuple$12 = $f._tuple$12; _tuple$13 = $f._tuple$13; _tuple$14 = $f._tuple$14; _tuple$15 = $f._tuple$15; _tuple$16 = $f._tuple$16; _tuple$17 = $f._tuple$17; _tuple$18 = $f._tuple$18; _tuple$19 = $f._tuple$19; _tuple$2 = $f._tuple$2; _tuple$20 = $f._tuple$20; _tuple$21 = $f._tuple$21; _tuple$22 = $f._tuple$22; _tuple$23 = $f._tuple$23; _tuple$24 = $f._tuple$24; _tuple$25 = $f._tuple$25; _tuple$26 = $f._tuple$26; _tuple$27 = $f._tuple$27; _tuple$3 = $f._tuple$3; _tuple$4 = $f._tuple$4; _tuple$5 = $f._tuple$5; _tuple$6 = $f._tuple$6; _tuple$7 = $f._tuple$7; _tuple$8 = $f._tuple$8; _tuple$9 = $f._tuple$9; _v = $f._v; _v$1 = $f._v$1; bs = $f.bs; bytes$1 = $f.bytes$1; bytes$2 = $f.bytes$2; compoundType = $f.compoundType; err = $f.err; err1 = $f.err1; err1$1 = $f.err1$1; err1$2 = $f.err1$2; err1$3 = $f.err1$3; err1$4 = $f.err1$4; err1$5 = $f.err1$5; err1$6 = $f.err1$6; err1$7 = $f.err1$7; expectedClass = $f.expectedClass; expectedClass$1 = $f.expectedClass$1; expectedTag = $f.expectedTag; field = $f.field; fieldType = $f.fieldType; i = $f.i; ifaceType = $f.ifaceType; initOffset = $f.initOffset; innerBytes = $f.innerBytes; innerBytes$1 = $f.innerBytes$1; innerOffset = $f.innerOffset; newSlice = $f.newSlice; newSlice$1 = $f.newSlice$1; offset = $f.offset; ok = $f.ok; ok$1 = $f.ok$1; ok1 = $f.ok1; params = $f.params; parsedBool = $f.parsedBool; parsedInt = $f.parsedInt; parsedInt$1 = $f.parsedInt$1; parsedInt$2 = $f.parsedInt$2; parsedInt$3 = $f.parsedInt$3; result = $f.result; result$1 = $f.result$1; sliceType$3 = $f.sliceType$3; structType = $f.structType; t = $f.t; t$1 = $f.t$1; t$2 = $f.t$2; time$1 = $f.time$1; universalTag = $f.universalTag; v = $f.v; v$1 = $f.v$1; val = $f.val; x$10 = $f.x$10; x$11 = $f.x$11; x$12 = $f.x$12; x$3 = $f.x$3; x$4 = $f.x$4; x$5 = $f.x$5; x$6 = $f.x$6; x$7 = $f.x$7; x$8 = $f.x$8; x$9 = $f.x$9; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  46295. offset = 0;
  46296. err = $ifaceNil;
  46297. params = $clone(params, fieldParameters);
  46298. v = v;
  46299. offset = initOffset;
  46300. fieldType = v.Type();
  46301. if (offset === bytes$1.$length) {
  46302. if (!setDefaultValue(v, params)) {
  46303. err = (x$3 = new SyntaxError.ptr("sequence truncated"), new x$3.constructor.elem(x$3));
  46304. }
  46305. return [offset, err];
  46306. }
  46307. /* */ if ($interfaceIsEqual(fieldType, rawValueType)) { $s = 1; continue; }
  46308. /* */ $s = 2; continue;
  46309. /* if ($interfaceIsEqual(fieldType, rawValueType)) { */ case 1:
  46310. t = $clone(new tagAndLength.ptr(), tagAndLength);
  46311. _tuple = parseTagAndLength(bytes$1, offset); $copy(t, _tuple[0], tagAndLength); offset = _tuple[1]; err = _tuple[2];
  46312. if (!($interfaceIsEqual(err, $ifaceNil))) {
  46313. return [offset, err];
  46314. }
  46315. if (invalidLength(offset, t.length, bytes$1.$length)) {
  46316. err = (x$4 = new SyntaxError.ptr("data truncated"), new x$4.constructor.elem(x$4));
  46317. return [offset, err];
  46318. }
  46319. result = new RawValue.ptr(t.class$0, t.tag, t.isCompound, $subslice(bytes$1, offset, (offset + t.length >> 0)), $subslice(bytes$1, initOffset, (offset + t.length >> 0)));
  46320. offset = offset + (t.length) >> 0;
  46321. _r = reflect.ValueOf(new result.constructor.elem(result)); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  46322. $r = v.Set(_r); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  46323. return [offset, err];
  46324. /* } */ case 2:
  46325. ifaceType = fieldType;
  46326. _r$1 = ifaceType.Kind(); /* */ $s = 8; case 8: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  46327. if (!(_r$1 === 20)) { _v = false; $s = 7; continue s; }
  46328. _r$2 = ifaceType.NumMethod(); /* */ $s = 9; case 9: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  46329. _v = _r$2 === 0; case 7:
  46330. /* */ if (_v) { $s = 5; continue; }
  46331. /* */ $s = 6; continue;
  46332. /* if (_v) { */ case 5:
  46333. t$1 = $clone(new tagAndLength.ptr(), tagAndLength);
  46334. _tuple$1 = parseTagAndLength(bytes$1, offset); $copy(t$1, _tuple$1[0], tagAndLength); offset = _tuple$1[1]; err = _tuple$1[2];
  46335. if (!($interfaceIsEqual(err, $ifaceNil))) {
  46336. return [offset, err];
  46337. }
  46338. if (invalidLength(offset, t$1.length, bytes$1.$length)) {
  46339. err = (x$5 = new SyntaxError.ptr("data truncated"), new x$5.constructor.elem(x$5));
  46340. return [offset, err];
  46341. }
  46342. result$1 = $ifaceNil;
  46343. /* */ if (!t$1.isCompound && (t$1.class$0 === 0)) { $s = 10; continue; }
  46344. /* */ $s = 11; continue;
  46345. /* if (!t$1.isCompound && (t$1.class$0 === 0)) { */ case 10:
  46346. innerBytes = $subslice(bytes$1, offset, (offset + t$1.length >> 0));
  46347. _ref = t$1.tag;
  46348. /* */ if (_ref === 19) { $s = 12; continue; }
  46349. /* */ if (_ref === 22) { $s = 13; continue; }
  46350. /* */ if (_ref === 20) { $s = 14; continue; }
  46351. /* */ if (_ref === 12) { $s = 15; continue; }
  46352. /* */ if (_ref === 2) { $s = 16; continue; }
  46353. /* */ if (_ref === 3) { $s = 17; continue; }
  46354. /* */ if (_ref === 6) { $s = 18; continue; }
  46355. /* */ if (_ref === 23) { $s = 19; continue; }
  46356. /* */ if (_ref === 4) { $s = 20; continue; }
  46357. /* */ $s = 21; continue;
  46358. /* if (_ref === 19) { */ case 12:
  46359. _tuple$2 = parsePrintableString(innerBytes); result$1 = new $String(_tuple$2[0]); err = _tuple$2[1];
  46360. $s = 22; continue;
  46361. /* } else if (_ref === 22) { */ case 13:
  46362. _tuple$3 = parseIA5String(innerBytes); result$1 = new $String(_tuple$3[0]); err = _tuple$3[1];
  46363. $s = 22; continue;
  46364. /* } else if (_ref === 20) { */ case 14:
  46365. _tuple$4 = parseT61String(innerBytes); result$1 = new $String(_tuple$4[0]); err = _tuple$4[1];
  46366. $s = 22; continue;
  46367. /* } else if (_ref === 12) { */ case 15:
  46368. _tuple$5 = parseUTF8String(innerBytes); result$1 = new $String(_tuple$5[0]); err = _tuple$5[1];
  46369. $s = 22; continue;
  46370. /* } else if (_ref === 2) { */ case 16:
  46371. _tuple$6 = parseInt64(innerBytes); result$1 = _tuple$6[0]; err = _tuple$6[1];
  46372. $s = 22; continue;
  46373. /* } else if (_ref === 3) { */ case 17:
  46374. _tuple$7 = parseBitString(innerBytes); result$1 = new _tuple$7[0].constructor.elem(_tuple$7[0]); err = _tuple$7[1];
  46375. $s = 22; continue;
  46376. /* } else if (_ref === 6) { */ case 18:
  46377. _tuple$8 = parseObjectIdentifier(innerBytes); result$1 = _tuple$8[0]; err = _tuple$8[1];
  46378. $s = 22; continue;
  46379. /* } else if (_ref === 23) { */ case 19:
  46380. _r$3 = parseUTCTime(innerBytes); /* */ $s = 23; case 23: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  46381. _tuple$9 = _r$3; result$1 = new _tuple$9[0].constructor.elem(_tuple$9[0]); err = _tuple$9[1];
  46382. $s = 22; continue;
  46383. /* } else if (_ref === 4) { */ case 20:
  46384. result$1 = innerBytes;
  46385. $s = 22; continue;
  46386. /* } else { */ case 21:
  46387. /* } */ case 22:
  46388. /* } */ case 11:
  46389. offset = offset + (t$1.length) >> 0;
  46390. if (!($interfaceIsEqual(err, $ifaceNil))) {
  46391. return [offset, err];
  46392. }
  46393. /* */ if (!($interfaceIsEqual(result$1, $ifaceNil))) { $s = 24; continue; }
  46394. /* */ $s = 25; continue;
  46395. /* if (!($interfaceIsEqual(result$1, $ifaceNil))) { */ case 24:
  46396. _r$4 = reflect.ValueOf(result$1); /* */ $s = 26; case 26: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
  46397. $r = v.Set(_r$4); /* */ $s = 27; case 27: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  46398. /* } */ case 25:
  46399. return [offset, err];
  46400. /* } */ case 6:
  46401. _r$5 = getUniversalType(fieldType); /* */ $s = 28; case 28: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
  46402. _tuple$10 = _r$5; universalTag = _tuple$10[0]; compoundType = _tuple$10[1]; ok1 = _tuple$10[2];
  46403. /* */ if (!ok1) { $s = 29; continue; }
  46404. /* */ $s = 30; continue;
  46405. /* if (!ok1) { */ case 29:
  46406. _r$6 = fmt.Sprintf("unknown Go type: %v", new sliceType$2([fieldType])); /* */ $s = 31; case 31: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
  46407. err = (x$6 = new StructuralError.ptr(_r$6), new x$6.constructor.elem(x$6));
  46408. return [offset, err];
  46409. /* } */ case 30:
  46410. _tuple$11 = parseTagAndLength(bytes$1, offset); t$2 = $clone(_tuple$11[0], tagAndLength); offset = _tuple$11[1]; err = _tuple$11[2];
  46411. if (!($interfaceIsEqual(err, $ifaceNil))) {
  46412. return [offset, err];
  46413. }
  46414. if (params.explicit) {
  46415. expectedClass = 2;
  46416. if (params.application) {
  46417. expectedClass = 1;
  46418. }
  46419. if ((t$2.class$0 === expectedClass) && (t$2.tag === params.tag.$get()) && ((t$2.length === 0) || t$2.isCompound)) {
  46420. if (t$2.length > 0) {
  46421. _tuple$12 = parseTagAndLength(bytes$1, offset); $copy(t$2, _tuple$12[0], tagAndLength); offset = _tuple$12[1]; err = _tuple$12[2];
  46422. if (!($interfaceIsEqual(err, $ifaceNil))) {
  46423. return [offset, err];
  46424. }
  46425. } else {
  46426. if (!($interfaceIsEqual(fieldType, flagType))) {
  46427. err = (x$7 = new StructuralError.ptr("zero length explicit tag was not an asn1.Flag"), new x$7.constructor.elem(x$7));
  46428. return [offset, err];
  46429. }
  46430. v.SetBool(true);
  46431. return [offset, err];
  46432. }
  46433. } else {
  46434. ok = setDefaultValue(v, params);
  46435. if (ok) {
  46436. offset = initOffset;
  46437. } else {
  46438. err = (x$8 = new StructuralError.ptr("explicitly tagged member didn't match"), new x$8.constructor.elem(x$8));
  46439. }
  46440. return [offset, err];
  46441. }
  46442. }
  46443. if (universalTag === 19) {
  46444. if (t$2.class$0 === 0) {
  46445. _ref$1 = t$2.tag;
  46446. if (_ref$1 === 22 || _ref$1 === 27 || _ref$1 === 20 || _ref$1 === 12) {
  46447. universalTag = t$2.tag;
  46448. }
  46449. } else if (!((params.stringType === 0))) {
  46450. universalTag = params.stringType;
  46451. }
  46452. }
  46453. if ((universalTag === 23) && (t$2.tag === 24) && (t$2.class$0 === 0)) {
  46454. universalTag = 24;
  46455. }
  46456. if (params.set) {
  46457. universalTag = 17;
  46458. }
  46459. expectedClass$1 = 0;
  46460. expectedTag = universalTag;
  46461. if (!params.explicit && !(params.tag === ptrType$2.nil)) {
  46462. expectedClass$1 = 2;
  46463. expectedTag = params.tag.$get();
  46464. }
  46465. if (!params.explicit && params.application && !(params.tag === ptrType$2.nil)) {
  46466. expectedClass$1 = 1;
  46467. expectedTag = params.tag.$get();
  46468. }
  46469. /* */ if (!((t$2.class$0 === expectedClass$1)) || !((t$2.tag === expectedTag)) || !(t$2.isCompound === compoundType)) { $s = 32; continue; }
  46470. /* */ $s = 33; continue;
  46471. /* if (!((t$2.class$0 === expectedClass$1)) || !((t$2.tag === expectedTag)) || !(t$2.isCompound === compoundType)) { */ case 32:
  46472. ok$1 = setDefaultValue(v, params);
  46473. /* */ if (ok$1) { $s = 34; continue; }
  46474. /* */ $s = 35; continue;
  46475. /* if (ok$1) { */ case 34:
  46476. offset = initOffset;
  46477. $s = 36; continue;
  46478. /* } else { */ case 35:
  46479. _arg = new $Int(expectedTag);
  46480. _arg$1 = new t$2.constructor.elem(t$2);
  46481. _arg$2 = new params.constructor.elem(params);
  46482. _r$7 = fieldType.Name(); /* */ $s = 37; case 37: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
  46483. _arg$3 = new $String(_r$7);
  46484. _arg$4 = new $Int(offset);
  46485. _r$8 = fmt.Sprintf("tags don't match (%d vs %+v) %+v %s @%d", new sliceType$2([_arg, _arg$1, _arg$2, _arg$3, _arg$4])); /* */ $s = 38; case 38: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
  46486. err = (x$9 = new StructuralError.ptr(_r$8), new x$9.constructor.elem(x$9));
  46487. /* } */ case 36:
  46488. return [offset, err];
  46489. /* } */ case 33:
  46490. if (invalidLength(offset, t$2.length, bytes$1.$length)) {
  46491. err = (x$10 = new SyntaxError.ptr("data truncated"), new x$10.constructor.elem(x$10));
  46492. return [offset, err];
  46493. }
  46494. innerBytes$1 = $subslice(bytes$1, offset, (offset + t$2.length >> 0));
  46495. offset = offset + (t$2.length) >> 0;
  46496. _ref$2 = fieldType;
  46497. /* */ if ($interfaceIsEqual(_ref$2, objectIdentifierType)) { $s = 39; continue; }
  46498. /* */ if ($interfaceIsEqual(_ref$2, bitStringType)) { $s = 40; continue; }
  46499. /* */ if ($interfaceIsEqual(_ref$2, timeType)) { $s = 41; continue; }
  46500. /* */ if ($interfaceIsEqual(_ref$2, enumeratedType)) { $s = 42; continue; }
  46501. /* */ if ($interfaceIsEqual(_ref$2, flagType)) { $s = 43; continue; }
  46502. /* */ if ($interfaceIsEqual(_ref$2, bigIntType)) { $s = 44; continue; }
  46503. /* */ $s = 45; continue;
  46504. /* if ($interfaceIsEqual(_ref$2, objectIdentifierType)) { */ case 39:
  46505. _tuple$13 = parseObjectIdentifier(innerBytes$1); newSlice = _tuple$13[0]; err1 = _tuple$13[1];
  46506. _r$9 = reflect.MakeSlice(v.Type(), newSlice.$length, newSlice.$length); /* */ $s = 46; case 46: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
  46507. $r = v.Set(_r$9); /* */ $s = 47; case 47: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  46508. /* */ if ($interfaceIsEqual(err1, $ifaceNil)) { $s = 48; continue; }
  46509. /* */ $s = 49; continue;
  46510. /* if ($interfaceIsEqual(err1, $ifaceNil)) { */ case 48:
  46511. _arg$5 = v;
  46512. _r$10 = reflect.ValueOf(newSlice); /* */ $s = 50; case 50: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
  46513. _arg$6 = _r$10;
  46514. _r$11 = reflect.Copy(_arg$5, _arg$6); /* */ $s = 51; case 51: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
  46515. _r$11;
  46516. /* } */ case 49:
  46517. err = err1;
  46518. return [offset, err];
  46519. $s = 45; continue;
  46520. /* } else if ($interfaceIsEqual(_ref$2, bitStringType)) { */ case 40:
  46521. _tuple$14 = parseBitString(innerBytes$1); bs = $clone(_tuple$14[0], BitString); err1$1 = _tuple$14[1];
  46522. /* */ if ($interfaceIsEqual(err1$1, $ifaceNil)) { $s = 52; continue; }
  46523. /* */ $s = 53; continue;
  46524. /* if ($interfaceIsEqual(err1$1, $ifaceNil)) { */ case 52:
  46525. _r$12 = reflect.ValueOf(new bs.constructor.elem(bs)); /* */ $s = 54; case 54: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; }
  46526. $r = v.Set(_r$12); /* */ $s = 55; case 55: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  46527. /* } */ case 53:
  46528. err = err1$1;
  46529. return [offset, err];
  46530. $s = 45; continue;
  46531. /* } else if ($interfaceIsEqual(_ref$2, timeType)) { */ case 41:
  46532. time$1 = $clone(new time.Time.ptr(), time.Time);
  46533. err1$2 = $ifaceNil;
  46534. /* */ if (universalTag === 23) { $s = 56; continue; }
  46535. /* */ $s = 57; continue;
  46536. /* if (universalTag === 23) { */ case 56:
  46537. _r$13 = parseUTCTime(innerBytes$1); /* */ $s = 59; case 59: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; }
  46538. _tuple$15 = _r$13; $copy(time$1, _tuple$15[0], time.Time); err1$2 = _tuple$15[1];
  46539. $s = 58; continue;
  46540. /* } else { */ case 57:
  46541. _r$14 = parseGeneralizedTime(innerBytes$1); /* */ $s = 60; case 60: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; }
  46542. _tuple$16 = _r$14; $copy(time$1, _tuple$16[0], time.Time); err1$2 = _tuple$16[1];
  46543. /* } */ case 58:
  46544. /* */ if ($interfaceIsEqual(err1$2, $ifaceNil)) { $s = 61; continue; }
  46545. /* */ $s = 62; continue;
  46546. /* if ($interfaceIsEqual(err1$2, $ifaceNil)) { */ case 61:
  46547. _r$15 = reflect.ValueOf(new time$1.constructor.elem(time$1)); /* */ $s = 63; case 63: if($c) { $c = false; _r$15 = _r$15.$blk(); } if (_r$15 && _r$15.$blk !== undefined) { break s; }
  46548. $r = v.Set(_r$15); /* */ $s = 64; case 64: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  46549. /* } */ case 62:
  46550. err = err1$2;
  46551. return [offset, err];
  46552. $s = 45; continue;
  46553. /* } else if ($interfaceIsEqual(_ref$2, enumeratedType)) { */ case 42:
  46554. _tuple$17 = parseInt32(innerBytes$1); parsedInt = _tuple$17[0]; err1$3 = _tuple$17[1];
  46555. if ($interfaceIsEqual(err1$3, $ifaceNil)) {
  46556. v.SetInt(new $Int64(0, parsedInt));
  46557. }
  46558. err = err1$3;
  46559. return [offset, err];
  46560. $s = 45; continue;
  46561. /* } else if ($interfaceIsEqual(_ref$2, flagType)) { */ case 43:
  46562. v.SetBool(true);
  46563. return [offset, err];
  46564. $s = 45; continue;
  46565. /* } else if ($interfaceIsEqual(_ref$2, bigIntType)) { */ case 44:
  46566. parsedInt$1 = parseBigInt(innerBytes$1);
  46567. _r$16 = reflect.ValueOf(parsedInt$1); /* */ $s = 65; case 65: if($c) { $c = false; _r$16 = _r$16.$blk(); } if (_r$16 && _r$16.$blk !== undefined) { break s; }
  46568. $r = v.Set(_r$16); /* */ $s = 66; case 66: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  46569. return [offset, err];
  46570. /* } */ case 45:
  46571. val = v;
  46572. _ref$3 = val.Kind();
  46573. /* */ if (_ref$3 === 1) { $s = 67; continue; }
  46574. /* */ if (_ref$3 === 2 || _ref$3 === 5 || _ref$3 === 6) { $s = 68; continue; }
  46575. /* */ if (_ref$3 === 25) { $s = 69; continue; }
  46576. /* */ if (_ref$3 === 23) { $s = 70; continue; }
  46577. /* */ if (_ref$3 === 24) { $s = 71; continue; }
  46578. /* */ $s = 72; continue;
  46579. /* if (_ref$3 === 1) { */ case 67:
  46580. _tuple$18 = parseBool(innerBytes$1); parsedBool = _tuple$18[0]; err1$4 = _tuple$18[1];
  46581. if ($interfaceIsEqual(err1$4, $ifaceNil)) {
  46582. val.SetBool(parsedBool);
  46583. }
  46584. err = err1$4;
  46585. return [offset, err];
  46586. $s = 72; continue;
  46587. /* } else if (_ref$3 === 2 || _ref$3 === 5 || _ref$3 === 6) { */ case 68:
  46588. _r$17 = val.Type().Size(); /* */ $s = 76; case 76: if($c) { $c = false; _r$17 = _r$17.$blk(); } if (_r$17 && _r$17.$blk !== undefined) { break s; }
  46589. /* */ if (_r$17 === 4) { $s = 73; continue; }
  46590. /* */ $s = 74; continue;
  46591. /* if (_r$17 === 4) { */ case 73:
  46592. _tuple$19 = parseInt32(innerBytes$1); parsedInt$2 = _tuple$19[0]; err1$5 = _tuple$19[1];
  46593. if ($interfaceIsEqual(err1$5, $ifaceNil)) {
  46594. val.SetInt(new $Int64(0, parsedInt$2));
  46595. }
  46596. err = err1$5;
  46597. $s = 75; continue;
  46598. /* } else { */ case 74:
  46599. _tuple$20 = parseInt64(innerBytes$1); parsedInt$3 = _tuple$20[0]; err1$6 = _tuple$20[1];
  46600. if ($interfaceIsEqual(err1$6, $ifaceNil)) {
  46601. val.SetInt(parsedInt$3);
  46602. }
  46603. err = err1$6;
  46604. /* } */ case 75:
  46605. return [offset, err];
  46606. $s = 72; continue;
  46607. /* } else if (_ref$3 === 25) { */ case 69:
  46608. structType = fieldType;
  46609. _r$18 = structType.NumField(); /* */ $s = 80; case 80: if($c) { $c = false; _r$18 = _r$18.$blk(); } if (_r$18 && _r$18.$blk !== undefined) { break s; }
  46610. if (!(_r$18 > 0)) { _v$1 = false; $s = 79; continue s; }
  46611. _r$19 = structType.Field(0); /* */ $s = 81; case 81: if($c) { $c = false; _r$19 = _r$19.$blk(); } if (_r$19 && _r$19.$blk !== undefined) { break s; }
  46612. _v$1 = $interfaceIsEqual(_r$19.Type, rawContentsType); case 79:
  46613. /* */ if (_v$1) { $s = 77; continue; }
  46614. /* */ $s = 78; continue;
  46615. /* if (_v$1) { */ case 77:
  46616. bytes$2 = $subslice(bytes$1, initOffset, offset);
  46617. _r$20 = val.Field(0); /* */ $s = 82; case 82: if($c) { $c = false; _r$20 = _r$20.$blk(); } if (_r$20 && _r$20.$blk !== undefined) { break s; }
  46618. _r$21 = reflect.ValueOf($subslice(new RawContent(bytes$2.$array), bytes$2.$offset, bytes$2.$offset + bytes$2.$length)); /* */ $s = 83; case 83: if($c) { $c = false; _r$21 = _r$21.$blk(); } if (_r$21 && _r$21.$blk !== undefined) { break s; }
  46619. $r = _r$20.Set(_r$21); /* */ $s = 84; case 84: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  46620. /* } */ case 78:
  46621. innerOffset = 0;
  46622. i = 0;
  46623. /* while (true) { */ case 85:
  46624. _r$22 = structType.NumField(); /* */ $s = 87; case 87: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; }
  46625. /* if (!(i < _r$22)) { break; } */ if(!(i < _r$22)) { $s = 86; continue; }
  46626. _r$23 = structType.Field(i); /* */ $s = 88; case 88: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; }
  46627. field = $clone(_r$23, reflect.StructField);
  46628. /* */ if ((i === 0) && $interfaceIsEqual(field.Type, rawContentsType)) { $s = 89; continue; }
  46629. /* */ $s = 90; continue;
  46630. /* if ((i === 0) && $interfaceIsEqual(field.Type, rawContentsType)) { */ case 89:
  46631. i = i + (1) >> 0;
  46632. /* continue; */ $s = 85; continue;
  46633. /* } */ case 90:
  46634. _r$24 = val.Field(i); /* */ $s = 91; case 91: if($c) { $c = false; _r$24 = _r$24.$blk(); } if (_r$24 && _r$24.$blk !== undefined) { break s; }
  46635. _r$25 = parseField(_r$24, innerBytes$1, innerOffset, parseFieldParameters(new reflect.StructTag(field.Tag).Get("asn1"))); /* */ $s = 92; case 92: if($c) { $c = false; _r$25 = _r$25.$blk(); } if (_r$25 && _r$25.$blk !== undefined) { break s; }
  46636. _tuple$21 = _r$25; innerOffset = _tuple$21[0]; err = _tuple$21[1];
  46637. if (!($interfaceIsEqual(err, $ifaceNil))) {
  46638. return [offset, err];
  46639. }
  46640. i = i + (1) >> 0;
  46641. /* } */ $s = 85; continue; case 86:
  46642. return [offset, err];
  46643. $s = 72; continue;
  46644. /* } else if (_ref$3 === 23) { */ case 70:
  46645. sliceType$3 = fieldType;
  46646. _r$26 = sliceType$3.Elem(); /* */ $s = 95; case 95: if($c) { $c = false; _r$26 = _r$26.$blk(); } if (_r$26 && _r$26.$blk !== undefined) { break s; }
  46647. _r$27 = _r$26.Kind(); /* */ $s = 96; case 96: if($c) { $c = false; _r$27 = _r$27.$blk(); } if (_r$27 && _r$27.$blk !== undefined) { break s; }
  46648. /* */ if (_r$27 === 8) { $s = 93; continue; }
  46649. /* */ $s = 94; continue;
  46650. /* if (_r$27 === 8) { */ case 93:
  46651. _r$28 = reflect.MakeSlice(sliceType$3, innerBytes$1.$length, innerBytes$1.$length); /* */ $s = 97; case 97: if($c) { $c = false; _r$28 = _r$28.$blk(); } if (_r$28 && _r$28.$blk !== undefined) { break s; }
  46652. $r = val.Set(_r$28); /* */ $s = 98; case 98: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  46653. _arg$7 = val;
  46654. _r$29 = reflect.ValueOf(innerBytes$1); /* */ $s = 99; case 99: if($c) { $c = false; _r$29 = _r$29.$blk(); } if (_r$29 && _r$29.$blk !== undefined) { break s; }
  46655. _arg$8 = _r$29;
  46656. _r$30 = reflect.Copy(_arg$7, _arg$8); /* */ $s = 100; case 100: if($c) { $c = false; _r$30 = _r$30.$blk(); } if (_r$30 && _r$30.$blk !== undefined) { break s; }
  46657. _r$30;
  46658. return [offset, err];
  46659. /* } */ case 94:
  46660. _arg$9 = innerBytes$1;
  46661. _arg$10 = sliceType$3;
  46662. _r$31 = sliceType$3.Elem(); /* */ $s = 101; case 101: if($c) { $c = false; _r$31 = _r$31.$blk(); } if (_r$31 && _r$31.$blk !== undefined) { break s; }
  46663. _arg$11 = _r$31;
  46664. _r$32 = parseSequenceOf(_arg$9, _arg$10, _arg$11); /* */ $s = 102; case 102: if($c) { $c = false; _r$32 = _r$32.$blk(); } if (_r$32 && _r$32.$blk !== undefined) { break s; }
  46665. _tuple$22 = _r$32; newSlice$1 = _tuple$22[0]; err1$7 = _tuple$22[1];
  46666. /* */ if ($interfaceIsEqual(err1$7, $ifaceNil)) { $s = 103; continue; }
  46667. /* */ $s = 104; continue;
  46668. /* if ($interfaceIsEqual(err1$7, $ifaceNil)) { */ case 103:
  46669. $r = val.Set(newSlice$1); /* */ $s = 105; case 105: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  46670. /* } */ case 104:
  46671. err = err1$7;
  46672. return [offset, err];
  46673. $s = 72; continue;
  46674. /* } else if (_ref$3 === 24) { */ case 71:
  46675. v$1 = "";
  46676. _ref$4 = universalTag;
  46677. /* */ if (_ref$4 === 19) { $s = 106; continue; }
  46678. /* */ if (_ref$4 === 22) { $s = 107; continue; }
  46679. /* */ if (_ref$4 === 20) { $s = 108; continue; }
  46680. /* */ if (_ref$4 === 12) { $s = 109; continue; }
  46681. /* */ if (_ref$4 === 27) { $s = 110; continue; }
  46682. /* */ $s = 111; continue;
  46683. /* if (_ref$4 === 19) { */ case 106:
  46684. _tuple$23 = parsePrintableString(innerBytes$1); v$1 = _tuple$23[0]; err = _tuple$23[1];
  46685. $s = 112; continue;
  46686. /* } else if (_ref$4 === 22) { */ case 107:
  46687. _tuple$24 = parseIA5String(innerBytes$1); v$1 = _tuple$24[0]; err = _tuple$24[1];
  46688. $s = 112; continue;
  46689. /* } else if (_ref$4 === 20) { */ case 108:
  46690. _tuple$25 = parseT61String(innerBytes$1); v$1 = _tuple$25[0]; err = _tuple$25[1];
  46691. $s = 112; continue;
  46692. /* } else if (_ref$4 === 12) { */ case 109:
  46693. _tuple$26 = parseUTF8String(innerBytes$1); v$1 = _tuple$26[0]; err = _tuple$26[1];
  46694. $s = 112; continue;
  46695. /* } else if (_ref$4 === 27) { */ case 110:
  46696. _tuple$27 = parseT61String(innerBytes$1); v$1 = _tuple$27[0]; err = _tuple$27[1];
  46697. $s = 112; continue;
  46698. /* } else { */ case 111:
  46699. _r$33 = fmt.Sprintf("internal error: unknown string type %d", new sliceType$2([new $Int(universalTag)])); /* */ $s = 113; case 113: if($c) { $c = false; _r$33 = _r$33.$blk(); } if (_r$33 && _r$33.$blk !== undefined) { break s; }
  46700. err = (x$11 = new SyntaxError.ptr(_r$33), new x$11.constructor.elem(x$11));
  46701. /* } */ case 112:
  46702. if ($interfaceIsEqual(err, $ifaceNil)) {
  46703. val.SetString(v$1);
  46704. }
  46705. return [offset, err];
  46706. /* } */ case 72:
  46707. _r$34 = v.Type().String(); /* */ $s = 114; case 114: if($c) { $c = false; _r$34 = _r$34.$blk(); } if (_r$34 && _r$34.$blk !== undefined) { break s; }
  46708. err = (x$12 = new StructuralError.ptr("unsupported: " + _r$34), new x$12.constructor.elem(x$12));
  46709. return [offset, err];
  46710. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: parseField }; } $f.$ptr = $ptr; $f._arg = _arg; $f._arg$1 = _arg$1; $f._arg$10 = _arg$10; $f._arg$11 = _arg$11; $f._arg$2 = _arg$2; $f._arg$3 = _arg$3; $f._arg$4 = _arg$4; $f._arg$5 = _arg$5; $f._arg$6 = _arg$6; $f._arg$7 = _arg$7; $f._arg$8 = _arg$8; $f._arg$9 = _arg$9; $f._r = _r; $f._r$1 = _r$1; $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$12 = _r$12; $f._r$13 = _r$13; $f._r$14 = _r$14; $f._r$15 = _r$15; $f._r$16 = _r$16; $f._r$17 = _r$17; $f._r$18 = _r$18; $f._r$19 = _r$19; $f._r$2 = _r$2; $f._r$20 = _r$20; $f._r$21 = _r$21; $f._r$22 = _r$22; $f._r$23 = _r$23; $f._r$24 = _r$24; $f._r$25 = _r$25; $f._r$26 = _r$26; $f._r$27 = _r$27; $f._r$28 = _r$28; $f._r$29 = _r$29; $f._r$3 = _r$3; $f._r$30 = _r$30; $f._r$31 = _r$31; $f._r$32 = _r$32; $f._r$33 = _r$33; $f._r$34 = _r$34; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._r$9 = _r$9; $f._ref = _ref; $f._ref$1 = _ref$1; $f._ref$2 = _ref$2; $f._ref$3 = _ref$3; $f._ref$4 = _ref$4; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$10 = _tuple$10; $f._tuple$11 = _tuple$11; $f._tuple$12 = _tuple$12; $f._tuple$13 = _tuple$13; $f._tuple$14 = _tuple$14; $f._tuple$15 = _tuple$15; $f._tuple$16 = _tuple$16; $f._tuple$17 = _tuple$17; $f._tuple$18 = _tuple$18; $f._tuple$19 = _tuple$19; $f._tuple$2 = _tuple$2; $f._tuple$20 = _tuple$20; $f._tuple$21 = _tuple$21; $f._tuple$22 = _tuple$22; $f._tuple$23 = _tuple$23; $f._tuple$24 = _tuple$24; $f._tuple$25 = _tuple$25; $f._tuple$26 = _tuple$26; $f._tuple$27 = _tuple$27; $f._tuple$3 = _tuple$3; $f._tuple$4 = _tuple$4; $f._tuple$5 = _tuple$5; $f._tuple$6 = _tuple$6; $f._tuple$7 = _tuple$7; $f._tuple$8 = _tuple$8; $f._tuple$9 = _tuple$9; $f._v = _v; $f._v$1 = _v$1; $f.bs = bs; $f.bytes$1 = bytes$1; $f.bytes$2 = bytes$2; $f.compoundType = compoundType; $f.err = err; $f.err1 = err1; $f.err1$1 = err1$1; $f.err1$2 = err1$2; $f.err1$3 = err1$3; $f.err1$4 = err1$4; $f.err1$5 = err1$5; $f.err1$6 = err1$6; $f.err1$7 = err1$7; $f.expectedClass = expectedClass; $f.expectedClass$1 = expectedClass$1; $f.expectedTag = expectedTag; $f.field = field; $f.fieldType = fieldType; $f.i = i; $f.ifaceType = ifaceType; $f.initOffset = initOffset; $f.innerBytes = innerBytes; $f.innerBytes$1 = innerBytes$1; $f.innerOffset = innerOffset; $f.newSlice = newSlice; $f.newSlice$1 = newSlice$1; $f.offset = offset; $f.ok = ok; $f.ok$1 = ok$1; $f.ok1 = ok1; $f.params = params; $f.parsedBool = parsedBool; $f.parsedInt = parsedInt; $f.parsedInt$1 = parsedInt$1; $f.parsedInt$2 = parsedInt$2; $f.parsedInt$3 = parsedInt$3; $f.result = result; $f.result$1 = result$1; $f.sliceType$3 = sliceType$3; $f.structType = structType; $f.t = t; $f.t$1 = t$1; $f.t$2 = t$2; $f.time$1 = time$1; $f.universalTag = universalTag; $f.v = v; $f.v$1 = v$1; $f.val = val; $f.x$10 = x$10; $f.x$11 = x$11; $f.x$12 = x$12; $f.x$3 = x$3; $f.x$4 = x$4; $f.x$5 = x$5; $f.x$6 = x$6; $f.x$7 = x$7; $f.x$8 = x$8; $f.x$9 = x$9; $f.$s = $s; $f.$r = $r; return $f;
  46711. };
  46712. canHaveDefaultValue = function(k) {
  46713. var $ptr, _ref, k;
  46714. _ref = k;
  46715. if (_ref === 2 || _ref === 3 || _ref === 4 || _ref === 5 || _ref === 6) {
  46716. return true;
  46717. }
  46718. return false;
  46719. };
  46720. setDefaultValue = function(v, params) {
  46721. var $ptr, ok, params, v;
  46722. ok = false;
  46723. params = $clone(params, fieldParameters);
  46724. v = v;
  46725. if (!params.optional) {
  46726. return ok;
  46727. }
  46728. ok = true;
  46729. if (params.defaultValue === ptrType$1.nil) {
  46730. return ok;
  46731. }
  46732. if (canHaveDefaultValue(v.Kind())) {
  46733. v.SetInt(params.defaultValue.$get());
  46734. }
  46735. return ok;
  46736. };
  46737. Unmarshal = function(b, val) {
  46738. var $ptr, _r, _tuple, b, err, rest, val, $s, $r;
  46739. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tuple = $f._tuple; b = $f.b; err = $f.err; rest = $f.rest; val = $f.val; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  46740. rest = sliceType.nil;
  46741. err = $ifaceNil;
  46742. _r = UnmarshalWithParams(b, val, ""); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  46743. _tuple = _r; rest = _tuple[0]; err = _tuple[1];
  46744. return [rest, err];
  46745. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Unmarshal }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple = _tuple; $f.b = b; $f.err = err; $f.rest = rest; $f.val = val; $f.$s = $s; $f.$r = $r; return $f;
  46746. };
  46747. $pkg.Unmarshal = Unmarshal;
  46748. UnmarshalWithParams = function(b, val, params) {
  46749. var $ptr, _r, _r$1, _r$2, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, b, err, offset, params, rest, v, val, $s, $r;
  46750. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tuple = $f._tuple; b = $f.b; err = $f.err; offset = $f.offset; params = $f.params; rest = $f.rest; v = $f.v; val = $f.val; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  46751. rest = sliceType.nil;
  46752. err = $ifaceNil;
  46753. _r = reflect.ValueOf(val); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  46754. _r$1 = _r.Elem(); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  46755. v = _r$1;
  46756. _r$2 = parseField(v, b, 0, parseFieldParameters(params)); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  46757. _tuple = _r$2; offset = _tuple[0]; err = _tuple[1];
  46758. if (!($interfaceIsEqual(err, $ifaceNil))) {
  46759. _tmp = sliceType.nil; _tmp$1 = err; rest = _tmp; err = _tmp$1;
  46760. return [rest, err];
  46761. }
  46762. _tmp$2 = $subslice(b, offset); _tmp$3 = $ifaceNil; rest = _tmp$2; err = _tmp$3;
  46763. return [rest, err];
  46764. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: UnmarshalWithParams }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tuple = _tuple; $f.b = b; $f.err = err; $f.offset = offset; $f.params = params; $f.rest = rest; $f.v = v; $f.val = val; $f.$s = $s; $f.$r = $r; return $f;
  46765. };
  46766. $pkg.UnmarshalWithParams = UnmarshalWithParams;
  46767. parseFieldParameters = function(str) {
  46768. var $ptr, _i, _ref, _tuple, _tuple$1, err, err$1, i, i$1, part, ret, str;
  46769. ret = new fieldParameters.ptr();
  46770. _ref = strings.Split(str, ",");
  46771. _i = 0;
  46772. while (true) {
  46773. if (!(_i < _ref.$length)) { break; }
  46774. part = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]);
  46775. if (part === "optional") {
  46776. ret.optional = true;
  46777. } else if (part === "explicit") {
  46778. ret.explicit = true;
  46779. if (ret.tag === ptrType$2.nil) {
  46780. ret.tag = $newDataPointer(0, ptrType$2);
  46781. }
  46782. } else if (part === "ia5") {
  46783. ret.stringType = 22;
  46784. } else if (part === "printable") {
  46785. ret.stringType = 19;
  46786. } else if (part === "utf8") {
  46787. ret.stringType = 12;
  46788. } else if (strings.HasPrefix(part, "default:")) {
  46789. _tuple = strconv.ParseInt(part.substring(8), 10, 64); i = _tuple[0]; err = _tuple[1];
  46790. if ($interfaceIsEqual(err, $ifaceNil)) {
  46791. ret.defaultValue = $newDataPointer(new $Int64(0, 0), ptrType$1);
  46792. ret.defaultValue.$set(i);
  46793. }
  46794. } else if (strings.HasPrefix(part, "tag:")) {
  46795. _tuple$1 = strconv.Atoi(part.substring(4)); i$1 = _tuple$1[0]; err$1 = _tuple$1[1];
  46796. if ($interfaceIsEqual(err$1, $ifaceNil)) {
  46797. ret.tag = $newDataPointer(0, ptrType$2);
  46798. ret.tag.$set(i$1);
  46799. }
  46800. } else if (part === "set") {
  46801. ret.set = true;
  46802. } else if (part === "application") {
  46803. ret.application = true;
  46804. if (ret.tag === ptrType$2.nil) {
  46805. ret.tag = $newDataPointer(0, ptrType$2);
  46806. }
  46807. } else if (part === "omitempty") {
  46808. ret.omitEmpty = true;
  46809. }
  46810. _i++;
  46811. }
  46812. return ret;
  46813. };
  46814. getUniversalType = function(t) {
  46815. var $ptr, _r, _r$1, _r$2, _r$3, _r$4, _ref, _ref$1, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$16, _tmp$17, _tmp$18, _tmp$19, _tmp$2, _tmp$20, _tmp$21, _tmp$22, _tmp$23, _tmp$24, _tmp$25, _tmp$26, _tmp$27, _tmp$28, _tmp$29, _tmp$3, _tmp$30, _tmp$31, _tmp$32, _tmp$33, _tmp$34, _tmp$35, _tmp$36, _tmp$37, _tmp$38, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, isCompound, ok, t, tagNumber, $s, $r;
  46816. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _ref = $f._ref; _ref$1 = $f._ref$1; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$10 = $f._tmp$10; _tmp$11 = $f._tmp$11; _tmp$12 = $f._tmp$12; _tmp$13 = $f._tmp$13; _tmp$14 = $f._tmp$14; _tmp$15 = $f._tmp$15; _tmp$16 = $f._tmp$16; _tmp$17 = $f._tmp$17; _tmp$18 = $f._tmp$18; _tmp$19 = $f._tmp$19; _tmp$2 = $f._tmp$2; _tmp$20 = $f._tmp$20; _tmp$21 = $f._tmp$21; _tmp$22 = $f._tmp$22; _tmp$23 = $f._tmp$23; _tmp$24 = $f._tmp$24; _tmp$25 = $f._tmp$25; _tmp$26 = $f._tmp$26; _tmp$27 = $f._tmp$27; _tmp$28 = $f._tmp$28; _tmp$29 = $f._tmp$29; _tmp$3 = $f._tmp$3; _tmp$30 = $f._tmp$30; _tmp$31 = $f._tmp$31; _tmp$32 = $f._tmp$32; _tmp$33 = $f._tmp$33; _tmp$34 = $f._tmp$34; _tmp$35 = $f._tmp$35; _tmp$36 = $f._tmp$36; _tmp$37 = $f._tmp$37; _tmp$38 = $f._tmp$38; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tmp$6 = $f._tmp$6; _tmp$7 = $f._tmp$7; _tmp$8 = $f._tmp$8; _tmp$9 = $f._tmp$9; isCompound = $f.isCompound; ok = $f.ok; t = $f.t; tagNumber = $f.tagNumber; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  46817. tagNumber = 0;
  46818. isCompound = false;
  46819. ok = false;
  46820. _ref = t;
  46821. if ($interfaceIsEqual(_ref, objectIdentifierType)) {
  46822. _tmp = 6; _tmp$1 = false; _tmp$2 = true; tagNumber = _tmp; isCompound = _tmp$1; ok = _tmp$2;
  46823. return [tagNumber, isCompound, ok];
  46824. } else if ($interfaceIsEqual(_ref, bitStringType)) {
  46825. _tmp$3 = 3; _tmp$4 = false; _tmp$5 = true; tagNumber = _tmp$3; isCompound = _tmp$4; ok = _tmp$5;
  46826. return [tagNumber, isCompound, ok];
  46827. } else if ($interfaceIsEqual(_ref, timeType)) {
  46828. _tmp$6 = 23; _tmp$7 = false; _tmp$8 = true; tagNumber = _tmp$6; isCompound = _tmp$7; ok = _tmp$8;
  46829. return [tagNumber, isCompound, ok];
  46830. } else if ($interfaceIsEqual(_ref, enumeratedType)) {
  46831. _tmp$9 = 10; _tmp$10 = false; _tmp$11 = true; tagNumber = _tmp$9; isCompound = _tmp$10; ok = _tmp$11;
  46832. return [tagNumber, isCompound, ok];
  46833. } else if ($interfaceIsEqual(_ref, bigIntType)) {
  46834. _tmp$12 = 2; _tmp$13 = false; _tmp$14 = true; tagNumber = _tmp$12; isCompound = _tmp$13; ok = _tmp$14;
  46835. return [tagNumber, isCompound, ok];
  46836. }
  46837. _r = t.Kind(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  46838. _ref$1 = _r;
  46839. /* */ if (_ref$1 === 1) { $s = 2; continue; }
  46840. /* */ if (_ref$1 === 2 || _ref$1 === 3 || _ref$1 === 4 || _ref$1 === 5 || _ref$1 === 6) { $s = 3; continue; }
  46841. /* */ if (_ref$1 === 25) { $s = 4; continue; }
  46842. /* */ if (_ref$1 === 23) { $s = 5; continue; }
  46843. /* */ if (_ref$1 === 24) { $s = 6; continue; }
  46844. /* */ $s = 7; continue;
  46845. /* if (_ref$1 === 1) { */ case 2:
  46846. _tmp$15 = 1; _tmp$16 = false; _tmp$17 = true; tagNumber = _tmp$15; isCompound = _tmp$16; ok = _tmp$17;
  46847. return [tagNumber, isCompound, ok];
  46848. $s = 7; continue;
  46849. /* } else if (_ref$1 === 2 || _ref$1 === 3 || _ref$1 === 4 || _ref$1 === 5 || _ref$1 === 6) { */ case 3:
  46850. _tmp$18 = 2; _tmp$19 = false; _tmp$20 = true; tagNumber = _tmp$18; isCompound = _tmp$19; ok = _tmp$20;
  46851. return [tagNumber, isCompound, ok];
  46852. $s = 7; continue;
  46853. /* } else if (_ref$1 === 25) { */ case 4:
  46854. _tmp$21 = 16; _tmp$22 = true; _tmp$23 = true; tagNumber = _tmp$21; isCompound = _tmp$22; ok = _tmp$23;
  46855. return [tagNumber, isCompound, ok];
  46856. $s = 7; continue;
  46857. /* } else if (_ref$1 === 23) { */ case 5:
  46858. _r$1 = t.Elem(); /* */ $s = 10; case 10: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  46859. _r$2 = _r$1.Kind(); /* */ $s = 11; case 11: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  46860. /* */ if (_r$2 === 8) { $s = 8; continue; }
  46861. /* */ $s = 9; continue;
  46862. /* if (_r$2 === 8) { */ case 8:
  46863. _tmp$24 = 4; _tmp$25 = false; _tmp$26 = true; tagNumber = _tmp$24; isCompound = _tmp$25; ok = _tmp$26;
  46864. return [tagNumber, isCompound, ok];
  46865. /* } */ case 9:
  46866. _r$3 = t.Name(); /* */ $s = 14; case 14: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  46867. _r$4 = strings.HasSuffix(_r$3, "SET"); /* */ $s = 15; case 15: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
  46868. /* */ if (_r$4) { $s = 12; continue; }
  46869. /* */ $s = 13; continue;
  46870. /* if (_r$4) { */ case 12:
  46871. _tmp$27 = 17; _tmp$28 = true; _tmp$29 = true; tagNumber = _tmp$27; isCompound = _tmp$28; ok = _tmp$29;
  46872. return [tagNumber, isCompound, ok];
  46873. /* } */ case 13:
  46874. _tmp$30 = 16; _tmp$31 = true; _tmp$32 = true; tagNumber = _tmp$30; isCompound = _tmp$31; ok = _tmp$32;
  46875. return [tagNumber, isCompound, ok];
  46876. $s = 7; continue;
  46877. /* } else if (_ref$1 === 24) { */ case 6:
  46878. _tmp$33 = 19; _tmp$34 = false; _tmp$35 = true; tagNumber = _tmp$33; isCompound = _tmp$34; ok = _tmp$35;
  46879. return [tagNumber, isCompound, ok];
  46880. /* } */ case 7:
  46881. _tmp$36 = 0; _tmp$37 = false; _tmp$38 = false; tagNumber = _tmp$36; isCompound = _tmp$37; ok = _tmp$38;
  46882. return [tagNumber, isCompound, ok];
  46883. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: getUniversalType }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._ref = _ref; $f._ref$1 = _ref$1; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$10 = _tmp$10; $f._tmp$11 = _tmp$11; $f._tmp$12 = _tmp$12; $f._tmp$13 = _tmp$13; $f._tmp$14 = _tmp$14; $f._tmp$15 = _tmp$15; $f._tmp$16 = _tmp$16; $f._tmp$17 = _tmp$17; $f._tmp$18 = _tmp$18; $f._tmp$19 = _tmp$19; $f._tmp$2 = _tmp$2; $f._tmp$20 = _tmp$20; $f._tmp$21 = _tmp$21; $f._tmp$22 = _tmp$22; $f._tmp$23 = _tmp$23; $f._tmp$24 = _tmp$24; $f._tmp$25 = _tmp$25; $f._tmp$26 = _tmp$26; $f._tmp$27 = _tmp$27; $f._tmp$28 = _tmp$28; $f._tmp$29 = _tmp$29; $f._tmp$3 = _tmp$3; $f._tmp$30 = _tmp$30; $f._tmp$31 = _tmp$31; $f._tmp$32 = _tmp$32; $f._tmp$33 = _tmp$33; $f._tmp$34 = _tmp$34; $f._tmp$35 = _tmp$35; $f._tmp$36 = _tmp$36; $f._tmp$37 = _tmp$37; $f._tmp$38 = _tmp$38; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tmp$6 = _tmp$6; $f._tmp$7 = _tmp$7; $f._tmp$8 = _tmp$8; $f._tmp$9 = _tmp$9; $f.isCompound = isCompound; $f.ok = ok; $f.t = t; $f.tagNumber = tagNumber; $f.$s = $s; $f.$r = $r; return $f;
  46884. };
  46885. newForkableWriter = function() {
  46886. var $ptr;
  46887. return new forkableWriter.ptr(new bytes.Buffer.ptr(), ptrType$3.nil, ptrType$3.nil);
  46888. };
  46889. forkableWriter.ptr.prototype.fork = function() {
  46890. var $ptr, _tmp, _tmp$1, f, post, pre;
  46891. pre = ptrType$3.nil;
  46892. post = ptrType$3.nil;
  46893. f = this;
  46894. if (!(f.pre === ptrType$3.nil) || !(f.post === ptrType$3.nil)) {
  46895. $panic(new $String("have already forked"));
  46896. }
  46897. f.pre = newForkableWriter();
  46898. f.post = newForkableWriter();
  46899. _tmp = f.pre; _tmp$1 = f.post; pre = _tmp; post = _tmp$1;
  46900. return [pre, post];
  46901. };
  46902. forkableWriter.prototype.fork = function() { return this.$val.fork(); };
  46903. forkableWriter.ptr.prototype.Len = function() {
  46904. var $ptr, f, l;
  46905. l = 0;
  46906. f = this;
  46907. l = l + (f.Buffer.Len()) >> 0;
  46908. if (!(f.pre === ptrType$3.nil)) {
  46909. l = l + (f.pre.Len()) >> 0;
  46910. }
  46911. if (!(f.post === ptrType$3.nil)) {
  46912. l = l + (f.post.Len()) >> 0;
  46913. }
  46914. return l;
  46915. };
  46916. forkableWriter.prototype.Len = function() { return this.$val.Len(); };
  46917. forkableWriter.ptr.prototype.writeTo = function(out) {
  46918. var $ptr, _r, _r$1, _r$2, _tuple, _tuple$1, _tuple$2, err, f, n, nn, out, $s, $r;
  46919. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; err = $f.err; f = $f.f; n = $f.n; nn = $f.nn; out = $f.out; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  46920. n = 0;
  46921. err = $ifaceNil;
  46922. f = this;
  46923. _r = out.Write(f.Buffer.Bytes()); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  46924. _tuple = _r; n = _tuple[0]; err = _tuple[1];
  46925. if (!($interfaceIsEqual(err, $ifaceNil))) {
  46926. return [n, err];
  46927. }
  46928. nn = 0;
  46929. /* */ if (!(f.pre === ptrType$3.nil)) { $s = 2; continue; }
  46930. /* */ $s = 3; continue;
  46931. /* if (!(f.pre === ptrType$3.nil)) { */ case 2:
  46932. _r$1 = f.pre.writeTo(out); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  46933. _tuple$1 = _r$1; nn = _tuple$1[0]; err = _tuple$1[1];
  46934. n = n + (nn) >> 0;
  46935. if (!($interfaceIsEqual(err, $ifaceNil))) {
  46936. return [n, err];
  46937. }
  46938. /* } */ case 3:
  46939. /* */ if (!(f.post === ptrType$3.nil)) { $s = 5; continue; }
  46940. /* */ $s = 6; continue;
  46941. /* if (!(f.post === ptrType$3.nil)) { */ case 5:
  46942. _r$2 = f.post.writeTo(out); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  46943. _tuple$2 = _r$2; nn = _tuple$2[0]; err = _tuple$2[1];
  46944. n = n + (nn) >> 0;
  46945. /* } */ case 6:
  46946. return [n, err];
  46947. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: forkableWriter.ptr.prototype.writeTo }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f.err = err; $f.f = f; $f.n = n; $f.nn = nn; $f.out = out; $f.$s = $s; $f.$r = $r; return $f;
  46948. };
  46949. forkableWriter.prototype.writeTo = function(out) { return this.$val.writeTo(out); };
  46950. marshalBase128Int = function(out, n) {
  46951. var $ptr, err, i, i$1, l, n, o, out;
  46952. err = $ifaceNil;
  46953. if ((n.$high === 0 && n.$low === 0)) {
  46954. err = out.Buffer.WriteByte(0);
  46955. return err;
  46956. }
  46957. l = 0;
  46958. i = n;
  46959. while (true) {
  46960. if (!((i.$high > 0 || (i.$high === 0 && i.$low > 0)))) { break; }
  46961. l = l + (1) >> 0;
  46962. i = $shiftRightInt64(i, (7));
  46963. }
  46964. i$1 = l - 1 >> 0;
  46965. while (true) {
  46966. if (!(i$1 >= 0)) { break; }
  46967. o = ($shiftRightInt64(n, ((i$1 * 7 >> 0) >>> 0)).$low << 24 >>> 24);
  46968. o = (o & (127)) >>> 0;
  46969. if (!((i$1 === 0))) {
  46970. o = (o | (128)) >>> 0;
  46971. }
  46972. err = out.Buffer.WriteByte(o);
  46973. if (!($interfaceIsEqual(err, $ifaceNil))) {
  46974. return err;
  46975. }
  46976. i$1 = i$1 - (1) >> 0;
  46977. }
  46978. err = $ifaceNil;
  46979. return err;
  46980. };
  46981. marshalInt64 = function(out, i) {
  46982. var $ptr, err, i, n, out;
  46983. err = $ifaceNil;
  46984. n = int64Length(i);
  46985. while (true) {
  46986. if (!(n > 0)) { break; }
  46987. err = out.Buffer.WriteByte(($shiftRightInt64(i, ((((n - 1 >> 0)) * 8 >> 0) >>> 0)).$low << 24 >>> 24));
  46988. if (!($interfaceIsEqual(err, $ifaceNil))) {
  46989. return err;
  46990. }
  46991. n = n - (1) >> 0;
  46992. }
  46993. err = $ifaceNil;
  46994. return err;
  46995. };
  46996. int64Length = function(i) {
  46997. var $ptr, i, numBytes;
  46998. numBytes = 0;
  46999. numBytes = 1;
  47000. while (true) {
  47001. if (!((i.$high > 0 || (i.$high === 0 && i.$low > 127)))) { break; }
  47002. numBytes = numBytes + (1) >> 0;
  47003. i = $shiftRightInt64(i, (8));
  47004. }
  47005. while (true) {
  47006. if (!((i.$high < -1 || (i.$high === -1 && i.$low < 4294967168)))) { break; }
  47007. numBytes = numBytes + (1) >> 0;
  47008. i = $shiftRightInt64(i, (8));
  47009. }
  47010. return numBytes;
  47011. };
  47012. marshalBigInt = function(out, n) {
  47013. var $ptr, _i, _ref, _tuple, _tuple$1, bytes$1, bytes$2, err, i, n, nMinus1, out;
  47014. err = $ifaceNil;
  47015. if (n.Sign() < 0) {
  47016. nMinus1 = new big.Int.ptr().Neg(n);
  47017. nMinus1.Sub(nMinus1, bigOne);
  47018. bytes$1 = nMinus1.Bytes();
  47019. _ref = bytes$1;
  47020. _i = 0;
  47021. while (true) {
  47022. if (!(_i < _ref.$length)) { break; }
  47023. i = _i;
  47024. ((i < 0 || i >= bytes$1.$length) ? $throwRuntimeError("index out of range") : bytes$1.$array[bytes$1.$offset + i] = (((i < 0 || i >= bytes$1.$length) ? $throwRuntimeError("index out of range") : bytes$1.$array[bytes$1.$offset + i]) ^ (255)) << 24 >>> 24);
  47025. _i++;
  47026. }
  47027. if ((bytes$1.$length === 0) || ((((0 >= bytes$1.$length ? $throwRuntimeError("index out of range") : bytes$1.$array[bytes$1.$offset + 0]) & 128) >>> 0) === 0)) {
  47028. err = out.Buffer.WriteByte(255);
  47029. if (!($interfaceIsEqual(err, $ifaceNil))) {
  47030. return err;
  47031. }
  47032. }
  47033. _tuple = out.Buffer.Write(bytes$1); err = _tuple[1];
  47034. } else if (n.Sign() === 0) {
  47035. err = out.Buffer.WriteByte(0);
  47036. } else {
  47037. bytes$2 = n.Bytes();
  47038. if (bytes$2.$length > 0 && !(((((0 >= bytes$2.$length ? $throwRuntimeError("index out of range") : bytes$2.$array[bytes$2.$offset + 0]) & 128) >>> 0) === 0))) {
  47039. err = out.Buffer.WriteByte(0);
  47040. if (!($interfaceIsEqual(err, $ifaceNil))) {
  47041. return err;
  47042. }
  47043. }
  47044. _tuple$1 = out.Buffer.Write(bytes$2); err = _tuple$1[1];
  47045. }
  47046. return err;
  47047. };
  47048. marshalLength = function(out, i) {
  47049. var $ptr, err, i, n, out;
  47050. err = $ifaceNil;
  47051. n = lengthLength(i);
  47052. while (true) {
  47053. if (!(n > 0)) { break; }
  47054. err = out.Buffer.WriteByte((((i >> $min(((((n - 1 >> 0)) * 8 >> 0) >>> 0), 31)) >> 0) << 24 >>> 24));
  47055. if (!($interfaceIsEqual(err, $ifaceNil))) {
  47056. return err;
  47057. }
  47058. n = n - (1) >> 0;
  47059. }
  47060. err = $ifaceNil;
  47061. return err;
  47062. };
  47063. lengthLength = function(i) {
  47064. var $ptr, i, numBytes;
  47065. numBytes = 0;
  47066. numBytes = 1;
  47067. while (true) {
  47068. if (!(i > 255)) { break; }
  47069. numBytes = numBytes + (1) >> 0;
  47070. i = (i >> $min((8), 31)) >> 0;
  47071. }
  47072. return numBytes;
  47073. };
  47074. marshalTagAndLength = function(out, t) {
  47075. var $ptr, b, err, l, out, t;
  47076. err = $ifaceNil;
  47077. t = $clone(t, tagAndLength);
  47078. b = (t.class$0 << 24 >>> 24) << 6 << 24 >>> 24;
  47079. if (t.isCompound) {
  47080. b = (b | (32)) >>> 0;
  47081. }
  47082. if (t.tag >= 31) {
  47083. b = (b | (31)) >>> 0;
  47084. err = out.Buffer.WriteByte(b);
  47085. if (!($interfaceIsEqual(err, $ifaceNil))) {
  47086. return err;
  47087. }
  47088. err = marshalBase128Int(out, new $Int64(0, t.tag));
  47089. if (!($interfaceIsEqual(err, $ifaceNil))) {
  47090. return err;
  47091. }
  47092. } else {
  47093. b = (b | ((t.tag << 24 >>> 24))) >>> 0;
  47094. err = out.Buffer.WriteByte(b);
  47095. if (!($interfaceIsEqual(err, $ifaceNil))) {
  47096. return err;
  47097. }
  47098. }
  47099. if (t.length >= 128) {
  47100. l = lengthLength(t.length);
  47101. err = out.Buffer.WriteByte((128 | (l << 24 >>> 24)) >>> 0);
  47102. if (!($interfaceIsEqual(err, $ifaceNil))) {
  47103. return err;
  47104. }
  47105. err = marshalLength(out, t.length);
  47106. if (!($interfaceIsEqual(err, $ifaceNil))) {
  47107. return err;
  47108. }
  47109. } else {
  47110. err = out.Buffer.WriteByte((t.length << 24 >>> 24));
  47111. if (!($interfaceIsEqual(err, $ifaceNil))) {
  47112. return err;
  47113. }
  47114. }
  47115. err = $ifaceNil;
  47116. return err;
  47117. };
  47118. marshalBitString = function(out, b) {
  47119. var $ptr, _r, _r$1, _tuple, b, err, out, paddingBits;
  47120. err = $ifaceNil;
  47121. b = $clone(b, BitString);
  47122. paddingBits = ((_r = ((8 - (_r$1 = b.BitLength % 8, _r$1 === _r$1 ? _r$1 : $throwRuntimeError("integer divide by zero")) >> 0)) % 8, _r === _r ? _r : $throwRuntimeError("integer divide by zero")) << 24 >>> 24);
  47123. err = out.Buffer.WriteByte(paddingBits);
  47124. if (!($interfaceIsEqual(err, $ifaceNil))) {
  47125. return err;
  47126. }
  47127. _tuple = out.Buffer.Write(b.Bytes); err = _tuple[1];
  47128. return err;
  47129. };
  47130. marshalObjectIdentifier = function(out, oid) {
  47131. var $ptr, err, i, oid, out, x$3;
  47132. err = $ifaceNil;
  47133. if (oid.$length < 2 || (0 >= oid.$length ? $throwRuntimeError("index out of range") : oid.$array[oid.$offset + 0]) > 2 || ((0 >= oid.$length ? $throwRuntimeError("index out of range") : oid.$array[oid.$offset + 0]) < 2 && (1 >= oid.$length ? $throwRuntimeError("index out of range") : oid.$array[oid.$offset + 1]) >= 40)) {
  47134. err = (x$3 = new StructuralError.ptr("invalid object identifier"), new x$3.constructor.elem(x$3));
  47135. return err;
  47136. }
  47137. err = marshalBase128Int(out, new $Int64(0, (((0 >= oid.$length ? $throwRuntimeError("index out of range") : oid.$array[oid.$offset + 0]) * 40 >> 0) + (1 >= oid.$length ? $throwRuntimeError("index out of range") : oid.$array[oid.$offset + 1]) >> 0)));
  47138. if (!($interfaceIsEqual(err, $ifaceNil))) {
  47139. return err;
  47140. }
  47141. i = 2;
  47142. while (true) {
  47143. if (!(i < oid.$length)) { break; }
  47144. err = marshalBase128Int(out, new $Int64(0, ((i < 0 || i >= oid.$length) ? $throwRuntimeError("index out of range") : oid.$array[oid.$offset + i])));
  47145. if (!($interfaceIsEqual(err, $ifaceNil))) {
  47146. return err;
  47147. }
  47148. i = i + (1) >> 0;
  47149. }
  47150. return err;
  47151. };
  47152. marshalPrintableString = function(out, s) {
  47153. var $ptr, _i, _ref, _tuple, b, c, err, out, s, x$3;
  47154. err = $ifaceNil;
  47155. b = new sliceType($stringToBytes(s));
  47156. _ref = b;
  47157. _i = 0;
  47158. while (true) {
  47159. if (!(_i < _ref.$length)) { break; }
  47160. c = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]);
  47161. if (!isPrintable(c)) {
  47162. err = (x$3 = new StructuralError.ptr("PrintableString contains invalid character"), new x$3.constructor.elem(x$3));
  47163. return err;
  47164. }
  47165. _i++;
  47166. }
  47167. _tuple = out.Buffer.Write(b); err = _tuple[1];
  47168. return err;
  47169. };
  47170. marshalIA5String = function(out, s) {
  47171. var $ptr, _i, _ref, _tuple, b, c, err, out, s, x$3;
  47172. err = $ifaceNil;
  47173. b = new sliceType($stringToBytes(s));
  47174. _ref = b;
  47175. _i = 0;
  47176. while (true) {
  47177. if (!(_i < _ref.$length)) { break; }
  47178. c = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]);
  47179. if (c > 127) {
  47180. err = (x$3 = new StructuralError.ptr("IA5String contains invalid character"), new x$3.constructor.elem(x$3));
  47181. return err;
  47182. }
  47183. _i++;
  47184. }
  47185. _tuple = out.Buffer.Write(b); err = _tuple[1];
  47186. return err;
  47187. };
  47188. marshalUTF8String = function(out, s) {
  47189. var $ptr, _tuple, err, out, s;
  47190. err = $ifaceNil;
  47191. _tuple = out.Buffer.Write(new sliceType($stringToBytes(s))); err = _tuple[1];
  47192. return err;
  47193. };
  47194. marshalTwoDigits = function(out, v) {
  47195. var $ptr, _q, _r, _r$1, err, out, v;
  47196. err = $ifaceNil;
  47197. err = out.Buffer.WriteByte(((48 + (_r = ((_q = v / 10, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero"))) % 10, _r === _r ? _r : $throwRuntimeError("integer divide by zero")) >> 0) << 24 >>> 24));
  47198. if (!($interfaceIsEqual(err, $ifaceNil))) {
  47199. return err;
  47200. }
  47201. err = out.Buffer.WriteByte(((48 + (_r$1 = v % 10, _r$1 === _r$1 ? _r$1 : $throwRuntimeError("integer divide by zero")) >> 0) << 24 >>> 24));
  47202. return err;
  47203. };
  47204. marshalFourDigits = function(out, v) {
  47205. var $ptr, _i, _q, _r, _ref, _tuple, bytes$1, err, i, out, v, x$3;
  47206. err = $ifaceNil;
  47207. bytes$1 = $clone(arrayType.zero(), arrayType);
  47208. _ref = bytes$1;
  47209. _i = 0;
  47210. while (true) {
  47211. if (!(_i < 4)) { break; }
  47212. i = _i;
  47213. (x$3 = 3 - i >> 0, ((x$3 < 0 || x$3 >= bytes$1.length) ? $throwRuntimeError("index out of range") : bytes$1[x$3] = 48 + ((_r = v % 10, _r === _r ? _r : $throwRuntimeError("integer divide by zero")) << 24 >>> 24) << 24 >>> 24));
  47214. v = (_q = v / (10), (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero"));
  47215. _i++;
  47216. }
  47217. _tuple = out.Buffer.Write(new sliceType(bytes$1)); err = _tuple[1];
  47218. return err;
  47219. };
  47220. outsideUTCRange = function(t) {
  47221. var $ptr, _r, t, year, $s, $r;
  47222. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; t = $f.t; year = $f.year; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  47223. t = $clone(t, time.Time);
  47224. _r = t.Year(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  47225. year = _r;
  47226. return year < 1950 || year >= 2050;
  47227. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: outsideUTCRange }; } $f.$ptr = $ptr; $f._r = _r; $f.t = t; $f.year = year; $f.$s = $s; $f.$r = $r; return $f;
  47228. };
  47229. marshalUTCTime = function(out, t) {
  47230. var $ptr, _r, _r$1, err, out, t, x$3, year, $s, $r;
  47231. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; err = $f.err; out = $f.out; t = $f.t; x$3 = $f.x$3; year = $f.year; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  47232. err = $ifaceNil;
  47233. t = $clone(t, time.Time);
  47234. _r = t.Year(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  47235. year = _r;
  47236. if (1950 <= year && year < 2000) {
  47237. err = marshalTwoDigits(out, (year - 1900 >> 0));
  47238. } else if (2000 <= year && year < 2050) {
  47239. err = marshalTwoDigits(out, (year - 2000 >> 0));
  47240. } else {
  47241. err = (x$3 = new StructuralError.ptr("cannot represent time as UTCTime"), new x$3.constructor.elem(x$3));
  47242. return err;
  47243. }
  47244. if (!($interfaceIsEqual(err, $ifaceNil))) {
  47245. return err;
  47246. }
  47247. _r$1 = marshalTimeCommon(out, t); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  47248. err = _r$1;
  47249. return err;
  47250. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: marshalUTCTime }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f.err = err; $f.out = out; $f.t = t; $f.x$3 = x$3; $f.year = year; $f.$s = $s; $f.$r = $r; return $f;
  47251. };
  47252. marshalGeneralizedTime = function(out, t) {
  47253. var $ptr, _r, _r$1, err, out, t, x$3, year, $s, $r;
  47254. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; err = $f.err; out = $f.out; t = $f.t; x$3 = $f.x$3; year = $f.year; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  47255. err = $ifaceNil;
  47256. t = $clone(t, time.Time);
  47257. _r = t.Year(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  47258. year = _r;
  47259. if (year < 0 || year > 9999) {
  47260. err = (x$3 = new StructuralError.ptr("cannot represent time as GeneralizedTime"), new x$3.constructor.elem(x$3));
  47261. return err;
  47262. }
  47263. err = marshalFourDigits(out, year);
  47264. if (!($interfaceIsEqual(err, $ifaceNil))) {
  47265. return err;
  47266. }
  47267. _r$1 = marshalTimeCommon(out, t); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  47268. err = _r$1;
  47269. return err;
  47270. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: marshalGeneralizedTime }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f.err = err; $f.out = out; $f.t = t; $f.x$3 = x$3; $f.year = year; $f.$s = $s; $f.$r = $r; return $f;
  47271. };
  47272. marshalTimeCommon = function(out, t) {
  47273. var $ptr, _q, _q$1, _q$2, _r, _r$1, _r$2, _r$3, _tuple, _tuple$1, _tuple$2, day, err, hour, min, month, offset, offsetMinutes, out, sec, t, $s, $r;
  47274. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _q = $f._q; _q$1 = $f._q$1; _q$2 = $f._q$2; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; day = $f.day; err = $f.err; hour = $f.hour; min = $f.min; month = $f.month; offset = $f.offset; offsetMinutes = $f.offsetMinutes; out = $f.out; sec = $f.sec; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  47275. err = $ifaceNil;
  47276. t = $clone(t, time.Time);
  47277. _r = t.Date(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  47278. _tuple = _r; month = _tuple[1]; day = _tuple[2];
  47279. err = marshalTwoDigits(out, (month >> 0));
  47280. if (!($interfaceIsEqual(err, $ifaceNil))) {
  47281. return err;
  47282. }
  47283. err = marshalTwoDigits(out, day);
  47284. if (!($interfaceIsEqual(err, $ifaceNil))) {
  47285. return err;
  47286. }
  47287. _r$1 = t.Clock(); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  47288. _tuple$1 = _r$1; hour = _tuple$1[0]; min = _tuple$1[1]; sec = _tuple$1[2];
  47289. err = marshalTwoDigits(out, hour);
  47290. if (!($interfaceIsEqual(err, $ifaceNil))) {
  47291. return err;
  47292. }
  47293. err = marshalTwoDigits(out, min);
  47294. if (!($interfaceIsEqual(err, $ifaceNil))) {
  47295. return err;
  47296. }
  47297. err = marshalTwoDigits(out, sec);
  47298. if (!($interfaceIsEqual(err, $ifaceNil))) {
  47299. return err;
  47300. }
  47301. _r$2 = t.Zone(); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  47302. _tuple$2 = _r$2; offset = _tuple$2[1];
  47303. if ((_q = offset / 60, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")) === 0) {
  47304. err = out.Buffer.WriteByte(90);
  47305. return err;
  47306. } else if (offset > 0) {
  47307. err = out.Buffer.WriteByte(43);
  47308. } else if (offset < 0) {
  47309. err = out.Buffer.WriteByte(45);
  47310. }
  47311. if (!($interfaceIsEqual(err, $ifaceNil))) {
  47312. return err;
  47313. }
  47314. offsetMinutes = (_q$1 = offset / 60, (_q$1 === _q$1 && _q$1 !== 1/0 && _q$1 !== -1/0) ? _q$1 >> 0 : $throwRuntimeError("integer divide by zero"));
  47315. if (offsetMinutes < 0) {
  47316. offsetMinutes = -offsetMinutes;
  47317. }
  47318. err = marshalTwoDigits(out, (_q$2 = offsetMinutes / 60, (_q$2 === _q$2 && _q$2 !== 1/0 && _q$2 !== -1/0) ? _q$2 >> 0 : $throwRuntimeError("integer divide by zero")));
  47319. if (!($interfaceIsEqual(err, $ifaceNil))) {
  47320. return err;
  47321. }
  47322. err = marshalTwoDigits(out, (_r$3 = offsetMinutes % 60, _r$3 === _r$3 ? _r$3 : $throwRuntimeError("integer divide by zero")));
  47323. return err;
  47324. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: marshalTimeCommon }; } $f.$ptr = $ptr; $f._q = _q; $f._q$1 = _q$1; $f._q$2 = _q$2; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f.day = day; $f.err = err; $f.hour = hour; $f.min = min; $f.month = month; $f.offset = offset; $f.offsetMinutes = offsetMinutes; $f.out = out; $f.sec = sec; $f.t = t; $f.$s = $s; $f.$r = $r; return $f;
  47325. };
  47326. stripTagAndLength = function(in$1) {
  47327. var $ptr, _tuple, err, in$1, offset;
  47328. _tuple = parseTagAndLength(in$1, 0); offset = _tuple[1]; err = _tuple[2];
  47329. if (!($interfaceIsEqual(err, $ifaceNil))) {
  47330. return in$1;
  47331. }
  47332. return $subslice(in$1, offset);
  47333. };
  47334. marshalBody = function(out, value, params) {
  47335. var $ptr, _arg, _arg$1, _arg$10, _arg$11, _arg$12, _arg$13, _arg$14, _arg$15, _arg$16, _arg$17, _arg$2, _arg$3, _arg$4, _arg$5, _arg$6, _arg$7, _arg$8, _arg$9, _r, _r$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$16, _r$17, _r$18, _r$19, _r$2, _r$20, _r$21, _r$22, _r$23, _r$24, _r$25, _r$26, _r$27, _r$28, _r$29, _r$3, _r$30, _r$31, _r$32, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _ref$1, _ref$2, _tuple, _tuple$1, _tuple$2, _tuple$3, _v, bytes$1, bytes$2, err, fp, i, i$1, i$2, i$3, out, params, pre, pre$1, s, sliceType$3, startingField, t, t$1, v, value, x$3, x$4, $s, $r;
  47336. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _arg = $f._arg; _arg$1 = $f._arg$1; _arg$10 = $f._arg$10; _arg$11 = $f._arg$11; _arg$12 = $f._arg$12; _arg$13 = $f._arg$13; _arg$14 = $f._arg$14; _arg$15 = $f._arg$15; _arg$16 = $f._arg$16; _arg$17 = $f._arg$17; _arg$2 = $f._arg$2; _arg$3 = $f._arg$3; _arg$4 = $f._arg$4; _arg$5 = $f._arg$5; _arg$6 = $f._arg$6; _arg$7 = $f._arg$7; _arg$8 = $f._arg$8; _arg$9 = $f._arg$9; _r = $f._r; _r$1 = $f._r$1; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$12 = $f._r$12; _r$13 = $f._r$13; _r$14 = $f._r$14; _r$15 = $f._r$15; _r$16 = $f._r$16; _r$17 = $f._r$17; _r$18 = $f._r$18; _r$19 = $f._r$19; _r$2 = $f._r$2; _r$20 = $f._r$20; _r$21 = $f._r$21; _r$22 = $f._r$22; _r$23 = $f._r$23; _r$24 = $f._r$24; _r$25 = $f._r$25; _r$26 = $f._r$26; _r$27 = $f._r$27; _r$28 = $f._r$28; _r$29 = $f._r$29; _r$3 = $f._r$3; _r$30 = $f._r$30; _r$31 = $f._r$31; _r$32 = $f._r$32; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _r$9 = $f._r$9; _ref = $f._ref; _ref$1 = $f._ref$1; _ref$2 = $f._ref$2; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; _v = $f._v; bytes$1 = $f.bytes$1; bytes$2 = $f.bytes$2; err = $f.err; fp = $f.fp; i = $f.i; i$1 = $f.i$1; i$2 = $f.i$2; i$3 = $f.i$3; out = $f.out; params = $f.params; pre = $f.pre; pre$1 = $f.pre$1; s = $f.s; sliceType$3 = $f.sliceType$3; startingField = $f.startingField; t = $f.t; t$1 = $f.t$1; v = $f.v; value = $f.value; x$3 = $f.x$3; x$4 = $f.x$4; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  47337. err = $ifaceNil;
  47338. params = $clone(params, fieldParameters);
  47339. value = value;
  47340. _ref = value.Type();
  47341. /* */ if ($interfaceIsEqual(_ref, timeType)) { $s = 1; continue; }
  47342. /* */ if ($interfaceIsEqual(_ref, bitStringType)) { $s = 2; continue; }
  47343. /* */ if ($interfaceIsEqual(_ref, objectIdentifierType)) { $s = 3; continue; }
  47344. /* */ if ($interfaceIsEqual(_ref, bigIntType)) { $s = 4; continue; }
  47345. /* */ $s = 5; continue;
  47346. /* if ($interfaceIsEqual(_ref, timeType)) { */ case 1:
  47347. _r = value.Interface(); /* */ $s = 6; case 6: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  47348. t = $clone($assertType(_r, time.Time), time.Time);
  47349. _r$1 = outsideUTCRange(t); /* */ $s = 10; case 10: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  47350. /* */ if (_r$1) { $s = 7; continue; }
  47351. /* */ $s = 8; continue;
  47352. /* if (_r$1) { */ case 7:
  47353. _r$2 = marshalGeneralizedTime(out, t); /* */ $s = 11; case 11: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  47354. err = _r$2;
  47355. return err;
  47356. $s = 9; continue;
  47357. /* } else { */ case 8:
  47358. _r$3 = marshalUTCTime(out, t); /* */ $s = 12; case 12: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  47359. err = _r$3;
  47360. return err;
  47361. /* } */ case 9:
  47362. $s = 5; continue;
  47363. /* } else if ($interfaceIsEqual(_ref, bitStringType)) { */ case 2:
  47364. _arg = out;
  47365. _r$4 = value.Interface(); /* */ $s = 13; case 13: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
  47366. _arg$1 = $assertType(_r$4, BitString);
  47367. _r$5 = marshalBitString(_arg, _arg$1); /* */ $s = 14; case 14: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
  47368. err = _r$5;
  47369. return err;
  47370. $s = 5; continue;
  47371. /* } else if ($interfaceIsEqual(_ref, objectIdentifierType)) { */ case 3:
  47372. _arg$2 = out;
  47373. _r$6 = value.Interface(); /* */ $s = 15; case 15: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
  47374. _arg$3 = (x$3 = $assertType(_r$6, ObjectIdentifier), $subslice(new sliceType$1(x$3.$array), x$3.$offset, x$3.$offset + x$3.$length));
  47375. _r$7 = marshalObjectIdentifier(_arg$2, _arg$3); /* */ $s = 16; case 16: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
  47376. err = _r$7;
  47377. return err;
  47378. $s = 5; continue;
  47379. /* } else if ($interfaceIsEqual(_ref, bigIntType)) { */ case 4:
  47380. _arg$4 = out;
  47381. _r$8 = value.Interface(); /* */ $s = 17; case 17: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
  47382. _arg$5 = $assertType(_r$8, ptrType$4);
  47383. _r$9 = marshalBigInt(_arg$4, _arg$5); /* */ $s = 18; case 18: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
  47384. err = _r$9;
  47385. return err;
  47386. /* } */ case 5:
  47387. v = value;
  47388. _ref$1 = v.Kind();
  47389. /* */ if (_ref$1 === 1) { $s = 19; continue; }
  47390. /* */ if (_ref$1 === 2 || _ref$1 === 3 || _ref$1 === 4 || _ref$1 === 5 || _ref$1 === 6) { $s = 20; continue; }
  47391. /* */ if (_ref$1 === 25) { $s = 21; continue; }
  47392. /* */ if (_ref$1 === 23) { $s = 22; continue; }
  47393. /* */ if (_ref$1 === 24) { $s = 23; continue; }
  47394. /* */ $s = 24; continue;
  47395. /* if (_ref$1 === 1) { */ case 19:
  47396. if (v.Bool()) {
  47397. err = out.Buffer.WriteByte(255);
  47398. return err;
  47399. } else {
  47400. err = out.Buffer.WriteByte(0);
  47401. return err;
  47402. }
  47403. $s = 24; continue;
  47404. /* } else if (_ref$1 === 2 || _ref$1 === 3 || _ref$1 === 4 || _ref$1 === 5 || _ref$1 === 6) { */ case 20:
  47405. err = marshalInt64(out, v.Int());
  47406. return err;
  47407. $s = 24; continue;
  47408. /* } else if (_ref$1 === 25) { */ case 21:
  47409. t$1 = v.Type();
  47410. startingField = 0;
  47411. _r$10 = t$1.NumField(); /* */ $s = 28; case 28: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
  47412. if (!(_r$10 > 0)) { _v = false; $s = 27; continue s; }
  47413. _r$11 = t$1.Field(0); /* */ $s = 29; case 29: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
  47414. _v = $interfaceIsEqual(_r$11.Type, rawContentsType); case 27:
  47415. /* */ if (_v) { $s = 25; continue; }
  47416. /* */ $s = 26; continue;
  47417. /* if (_v) { */ case 25:
  47418. _r$12 = v.Field(0); /* */ $s = 30; case 30: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; }
  47419. s = _r$12;
  47420. /* */ if (s.Len() > 0) { $s = 31; continue; }
  47421. /* */ $s = 32; continue;
  47422. /* if (s.Len() > 0) { */ case 31:
  47423. bytes$1 = $makeSlice(sliceType, s.Len());
  47424. i = 0;
  47425. /* while (true) { */ case 34:
  47426. /* if (!(i < s.Len())) { break; } */ if(!(i < s.Len())) { $s = 35; continue; }
  47427. _r$13 = s.Index(i); /* */ $s = 36; case 36: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; }
  47428. _r$14 = _r$13.Uint(); /* */ $s = 37; case 37: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; }
  47429. ((i < 0 || i >= bytes$1.$length) ? $throwRuntimeError("index out of range") : bytes$1.$array[bytes$1.$offset + i] = (_r$14.$low << 24 >>> 24));
  47430. i = i + (1) >> 0;
  47431. /* } */ $s = 34; continue; case 35:
  47432. _tuple = out.Buffer.Write(stripTagAndLength(bytes$1)); err = _tuple[1];
  47433. return err;
  47434. $s = 33; continue;
  47435. /* } else { */ case 32:
  47436. startingField = 1;
  47437. /* } */ case 33:
  47438. /* } */ case 26:
  47439. i$1 = startingField;
  47440. /* while (true) { */ case 38:
  47441. _r$15 = t$1.NumField(); /* */ $s = 40; case 40: if($c) { $c = false; _r$15 = _r$15.$blk(); } if (_r$15 && _r$15.$blk !== undefined) { break s; }
  47442. /* if (!(i$1 < _r$15)) { break; } */ if(!(i$1 < _r$15)) { $s = 39; continue; }
  47443. pre = ptrType$3.nil;
  47444. _tuple$1 = out.fork(); pre = _tuple$1[0]; out = _tuple$1[1];
  47445. _arg$6 = pre;
  47446. _r$16 = v.Field(i$1); /* */ $s = 41; case 41: if($c) { $c = false; _r$16 = _r$16.$blk(); } if (_r$16 && _r$16.$blk !== undefined) { break s; }
  47447. _arg$7 = _r$16;
  47448. _r$17 = t$1.Field(i$1); /* */ $s = 42; case 42: if($c) { $c = false; _r$17 = _r$17.$blk(); } if (_r$17 && _r$17.$blk !== undefined) { break s; }
  47449. _r$18 = new reflect.StructTag(_r$17.Tag).Get("asn1"); /* */ $s = 43; case 43: if($c) { $c = false; _r$18 = _r$18.$blk(); } if (_r$18 && _r$18.$blk !== undefined) { break s; }
  47450. _r$19 = parseFieldParameters(_r$18); /* */ $s = 44; case 44: if($c) { $c = false; _r$19 = _r$19.$blk(); } if (_r$19 && _r$19.$blk !== undefined) { break s; }
  47451. _arg$8 = _r$19;
  47452. _r$20 = marshalField(_arg$6, _arg$7, _arg$8); /* */ $s = 45; case 45: if($c) { $c = false; _r$20 = _r$20.$blk(); } if (_r$20 && _r$20.$blk !== undefined) { break s; }
  47453. err = _r$20;
  47454. if (!($interfaceIsEqual(err, $ifaceNil))) {
  47455. return err;
  47456. }
  47457. i$1 = i$1 + (1) >> 0;
  47458. /* } */ $s = 38; continue; case 39:
  47459. return err;
  47460. $s = 24; continue;
  47461. /* } else if (_ref$1 === 23) { */ case 22:
  47462. sliceType$3 = v.Type();
  47463. _r$21 = sliceType$3.Elem(); /* */ $s = 48; case 48: if($c) { $c = false; _r$21 = _r$21.$blk(); } if (_r$21 && _r$21.$blk !== undefined) { break s; }
  47464. _r$22 = _r$21.Kind(); /* */ $s = 49; case 49: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; }
  47465. /* */ if (_r$22 === 8) { $s = 46; continue; }
  47466. /* */ $s = 47; continue;
  47467. /* if (_r$22 === 8) { */ case 46:
  47468. bytes$2 = $makeSlice(sliceType, v.Len());
  47469. i$2 = 0;
  47470. /* while (true) { */ case 50:
  47471. /* if (!(i$2 < v.Len())) { break; } */ if(!(i$2 < v.Len())) { $s = 51; continue; }
  47472. _r$23 = v.Index(i$2); /* */ $s = 52; case 52: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; }
  47473. _r$24 = _r$23.Uint(); /* */ $s = 53; case 53: if($c) { $c = false; _r$24 = _r$24.$blk(); } if (_r$24 && _r$24.$blk !== undefined) { break s; }
  47474. ((i$2 < 0 || i$2 >= bytes$2.$length) ? $throwRuntimeError("index out of range") : bytes$2.$array[bytes$2.$offset + i$2] = (_r$24.$low << 24 >>> 24));
  47475. i$2 = i$2 + (1) >> 0;
  47476. /* } */ $s = 50; continue; case 51:
  47477. _tuple$2 = out.Buffer.Write(bytes$2); err = _tuple$2[1];
  47478. return err;
  47479. /* } */ case 47:
  47480. fp = $clone(new fieldParameters.ptr(), fieldParameters);
  47481. i$3 = 0;
  47482. /* while (true) { */ case 54:
  47483. /* if (!(i$3 < v.Len())) { break; } */ if(!(i$3 < v.Len())) { $s = 55; continue; }
  47484. pre$1 = ptrType$3.nil;
  47485. _tuple$3 = out.fork(); pre$1 = _tuple$3[0]; out = _tuple$3[1];
  47486. _arg$9 = pre$1;
  47487. _r$25 = v.Index(i$3); /* */ $s = 56; case 56: if($c) { $c = false; _r$25 = _r$25.$blk(); } if (_r$25 && _r$25.$blk !== undefined) { break s; }
  47488. _arg$10 = _r$25;
  47489. _arg$11 = fp;
  47490. _r$26 = marshalField(_arg$9, _arg$10, _arg$11); /* */ $s = 57; case 57: if($c) { $c = false; _r$26 = _r$26.$blk(); } if (_r$26 && _r$26.$blk !== undefined) { break s; }
  47491. err = _r$26;
  47492. if (!($interfaceIsEqual(err, $ifaceNil))) {
  47493. return err;
  47494. }
  47495. i$3 = i$3 + (1) >> 0;
  47496. /* } */ $s = 54; continue; case 55:
  47497. return err;
  47498. $s = 24; continue;
  47499. /* } else if (_ref$1 === 24) { */ case 23:
  47500. _ref$2 = params.stringType;
  47501. /* */ if (_ref$2 === 22) { $s = 58; continue; }
  47502. /* */ if (_ref$2 === 19) { $s = 59; continue; }
  47503. /* */ $s = 60; continue;
  47504. /* if (_ref$2 === 22) { */ case 58:
  47505. _arg$12 = out;
  47506. _r$27 = v.String(); /* */ $s = 62; case 62: if($c) { $c = false; _r$27 = _r$27.$blk(); } if (_r$27 && _r$27.$blk !== undefined) { break s; }
  47507. _arg$13 = _r$27;
  47508. _r$28 = marshalIA5String(_arg$12, _arg$13); /* */ $s = 63; case 63: if($c) { $c = false; _r$28 = _r$28.$blk(); } if (_r$28 && _r$28.$blk !== undefined) { break s; }
  47509. err = _r$28;
  47510. return err;
  47511. $s = 61; continue;
  47512. /* } else if (_ref$2 === 19) { */ case 59:
  47513. _arg$14 = out;
  47514. _r$29 = v.String(); /* */ $s = 64; case 64: if($c) { $c = false; _r$29 = _r$29.$blk(); } if (_r$29 && _r$29.$blk !== undefined) { break s; }
  47515. _arg$15 = _r$29;
  47516. _r$30 = marshalPrintableString(_arg$14, _arg$15); /* */ $s = 65; case 65: if($c) { $c = false; _r$30 = _r$30.$blk(); } if (_r$30 && _r$30.$blk !== undefined) { break s; }
  47517. err = _r$30;
  47518. return err;
  47519. $s = 61; continue;
  47520. /* } else { */ case 60:
  47521. _arg$16 = out;
  47522. _r$31 = v.String(); /* */ $s = 66; case 66: if($c) { $c = false; _r$31 = _r$31.$blk(); } if (_r$31 && _r$31.$blk !== undefined) { break s; }
  47523. _arg$17 = _r$31;
  47524. _r$32 = marshalUTF8String(_arg$16, _arg$17); /* */ $s = 67; case 67: if($c) { $c = false; _r$32 = _r$32.$blk(); } if (_r$32 && _r$32.$blk !== undefined) { break s; }
  47525. err = _r$32;
  47526. return err;
  47527. /* } */ case 61:
  47528. /* } */ case 24:
  47529. err = (x$4 = new StructuralError.ptr("unknown Go type"), new x$4.constructor.elem(x$4));
  47530. return err;
  47531. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: marshalBody }; } $f.$ptr = $ptr; $f._arg = _arg; $f._arg$1 = _arg$1; $f._arg$10 = _arg$10; $f._arg$11 = _arg$11; $f._arg$12 = _arg$12; $f._arg$13 = _arg$13; $f._arg$14 = _arg$14; $f._arg$15 = _arg$15; $f._arg$16 = _arg$16; $f._arg$17 = _arg$17; $f._arg$2 = _arg$2; $f._arg$3 = _arg$3; $f._arg$4 = _arg$4; $f._arg$5 = _arg$5; $f._arg$6 = _arg$6; $f._arg$7 = _arg$7; $f._arg$8 = _arg$8; $f._arg$9 = _arg$9; $f._r = _r; $f._r$1 = _r$1; $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$12 = _r$12; $f._r$13 = _r$13; $f._r$14 = _r$14; $f._r$15 = _r$15; $f._r$16 = _r$16; $f._r$17 = _r$17; $f._r$18 = _r$18; $f._r$19 = _r$19; $f._r$2 = _r$2; $f._r$20 = _r$20; $f._r$21 = _r$21; $f._r$22 = _r$22; $f._r$23 = _r$23; $f._r$24 = _r$24; $f._r$25 = _r$25; $f._r$26 = _r$26; $f._r$27 = _r$27; $f._r$28 = _r$28; $f._r$29 = _r$29; $f._r$3 = _r$3; $f._r$30 = _r$30; $f._r$31 = _r$31; $f._r$32 = _r$32; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._r$9 = _r$9; $f._ref = _ref; $f._ref$1 = _ref$1; $f._ref$2 = _ref$2; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f._v = _v; $f.bytes$1 = bytes$1; $f.bytes$2 = bytes$2; $f.err = err; $f.fp = fp; $f.i = i; $f.i$1 = i$1; $f.i$2 = i$2; $f.i$3 = i$3; $f.out = out; $f.params = params; $f.pre = pre; $f.pre$1 = pre$1; $f.s = s; $f.sliceType$3 = sliceType$3; $f.startingField = startingField; $f.t = t; $f.t$1 = t$1; $f.v = v; $f.value = value; $f.x$3 = x$3; $f.x$4 = x$4; $f.$s = $s; $f.$r = $r; return $f;
  47532. };
  47533. marshalField = function(out, v, params) {
  47534. var $ptr, _arg, _arg$1, _arg$2, _arg$3, _arg$4, _arg$5, _arg$6, _i, _r, _r$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$16, _r$17, _r$18, _r$19, _r$2, _r$20, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _ref$1, _rune, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _v, body, bodyLen, class$1, defaultValue, err, explicitTag, isCompound, ok, out, params, r, rv, tag, tags, v, x$3, x$4, x$5, $s, $r;
  47535. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _arg = $f._arg; _arg$1 = $f._arg$1; _arg$2 = $f._arg$2; _arg$3 = $f._arg$3; _arg$4 = $f._arg$4; _arg$5 = $f._arg$5; _arg$6 = $f._arg$6; _i = $f._i; _r = $f._r; _r$1 = $f._r$1; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$12 = $f._r$12; _r$13 = $f._r$13; _r$14 = $f._r$14; _r$15 = $f._r$15; _r$16 = $f._r$16; _r$17 = $f._r$17; _r$18 = $f._r$18; _r$19 = $f._r$19; _r$2 = $f._r$2; _r$20 = $f._r$20; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _r$9 = $f._r$9; _ref = $f._ref; _ref$1 = $f._ref$1; _rune = $f._rune; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; _tuple$4 = $f._tuple$4; _v = $f._v; body = $f.body; bodyLen = $f.bodyLen; class$1 = $f.class$1; defaultValue = $f.defaultValue; err = $f.err; explicitTag = $f.explicitTag; isCompound = $f.isCompound; ok = $f.ok; out = $f.out; params = $f.params; r = $f.r; rv = $f.rv; tag = $f.tag; tags = $f.tags; v = $f.v; x$3 = $f.x$3; x$4 = $f.x$4; x$5 = $f.x$5; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  47536. err = $ifaceNil;
  47537. params = $clone(params, fieldParameters);
  47538. v = v;
  47539. if (!(v.Kind() === 20)) { _v = false; $s = 3; continue s; }
  47540. _r = v.Type().NumMethod(); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  47541. _v = _r === 0; case 3:
  47542. /* */ if (_v) { $s = 1; continue; }
  47543. /* */ $s = 2; continue;
  47544. /* if (_v) { */ case 1:
  47545. _arg = out;
  47546. _r$1 = v.Elem(); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  47547. _arg$1 = _r$1;
  47548. _arg$2 = params;
  47549. _r$2 = marshalField(_arg, _arg$1, _arg$2); /* */ $s = 6; case 6: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  47550. err = _r$2;
  47551. return err;
  47552. /* } */ case 2:
  47553. if ((v.Kind() === 23) && (v.Len() === 0) && params.omitEmpty) {
  47554. return err;
  47555. }
  47556. /* */ if (params.optional && !(params.defaultValue === ptrType$1.nil) && canHaveDefaultValue(v.Kind())) { $s = 7; continue; }
  47557. /* */ $s = 8; continue;
  47558. /* if (params.optional && !(params.defaultValue === ptrType$1.nil) && canHaveDefaultValue(v.Kind())) { */ case 7:
  47559. _r$3 = reflect.New(v.Type()); /* */ $s = 9; case 9: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  47560. _r$4 = _r$3.Elem(); /* */ $s = 10; case 10: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
  47561. defaultValue = _r$4;
  47562. defaultValue.SetInt(params.defaultValue.$get());
  47563. _r$5 = v.Interface(); /* */ $s = 13; case 13: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
  47564. _arg$3 = _r$5;
  47565. _r$6 = defaultValue.Interface(); /* */ $s = 14; case 14: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
  47566. _arg$4 = _r$6;
  47567. _r$7 = reflect.DeepEqual(_arg$3, _arg$4); /* */ $s = 15; case 15: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
  47568. /* */ if (_r$7) { $s = 11; continue; }
  47569. /* */ $s = 12; continue;
  47570. /* if (_r$7) { */ case 11:
  47571. return err;
  47572. /* } */ case 12:
  47573. /* } */ case 8:
  47574. /* */ if (params.optional && params.defaultValue === ptrType$1.nil) { $s = 16; continue; }
  47575. /* */ $s = 17; continue;
  47576. /* if (params.optional && params.defaultValue === ptrType$1.nil) { */ case 16:
  47577. _r$8 = v.Interface(); /* */ $s = 20; case 20: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
  47578. _arg$5 = _r$8;
  47579. _r$9 = reflect.Zero(v.Type()); /* */ $s = 21; case 21: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
  47580. _r$10 = _r$9.Interface(); /* */ $s = 22; case 22: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
  47581. _arg$6 = _r$10;
  47582. _r$11 = reflect.DeepEqual(_arg$5, _arg$6); /* */ $s = 23; case 23: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
  47583. /* */ if (_r$11) { $s = 18; continue; }
  47584. /* */ $s = 19; continue;
  47585. /* if (_r$11) { */ case 18:
  47586. return err;
  47587. /* } */ case 19:
  47588. /* } */ case 17:
  47589. /* */ if ($interfaceIsEqual(v.Type(), rawValueType)) { $s = 24; continue; }
  47590. /* */ $s = 25; continue;
  47591. /* if ($interfaceIsEqual(v.Type(), rawValueType)) { */ case 24:
  47592. _r$12 = v.Interface(); /* */ $s = 26; case 26: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; }
  47593. rv = $clone($assertType(_r$12, RawValue), RawValue);
  47594. if (!((rv.FullBytes.$length === 0))) {
  47595. _tuple = out.Buffer.Write(rv.FullBytes); err = _tuple[1];
  47596. } else {
  47597. err = marshalTagAndLength(out, new tagAndLength.ptr(rv.Class, rv.Tag, rv.Bytes.$length, rv.IsCompound));
  47598. if (!($interfaceIsEqual(err, $ifaceNil))) {
  47599. return err;
  47600. }
  47601. _tuple$1 = out.Buffer.Write(rv.Bytes); err = _tuple$1[1];
  47602. }
  47603. return err;
  47604. /* } */ case 25:
  47605. _r$13 = getUniversalType(v.Type()); /* */ $s = 27; case 27: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; }
  47606. _tuple$2 = _r$13; tag = _tuple$2[0]; isCompound = _tuple$2[1]; ok = _tuple$2[2];
  47607. /* */ if (!ok) { $s = 28; continue; }
  47608. /* */ $s = 29; continue;
  47609. /* if (!ok) { */ case 28:
  47610. _r$14 = fmt.Sprintf("unknown Go type: %v", new sliceType$2([v.Type()])); /* */ $s = 30; case 30: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; }
  47611. err = (x$3 = new StructuralError.ptr(_r$14), new x$3.constructor.elem(x$3));
  47612. return err;
  47613. /* } */ case 29:
  47614. class$1 = 0;
  47615. if (!((params.stringType === 0)) && !((tag === 19))) {
  47616. err = (x$4 = new StructuralError.ptr("explicit string type given to non-string member"), new x$4.constructor.elem(x$4));
  47617. return err;
  47618. }
  47619. _ref = tag;
  47620. /* */ if (_ref === 19) { $s = 31; continue; }
  47621. /* */ if (_ref === 23) { $s = 32; continue; }
  47622. /* */ $s = 33; continue;
  47623. /* if (_ref === 19) { */ case 31:
  47624. /* */ if (params.stringType === 0) { $s = 34; continue; }
  47625. /* */ $s = 35; continue;
  47626. /* if (params.stringType === 0) { */ case 34:
  47627. _r$15 = v.String(); /* */ $s = 37; case 37: if($c) { $c = false; _r$15 = _r$15.$blk(); } if (_r$15 && _r$15.$blk !== undefined) { break s; }
  47628. _ref$1 = _r$15;
  47629. _i = 0;
  47630. /* while (true) { */ case 38:
  47631. /* if (!(_i < _ref$1.length)) { break; } */ if(!(_i < _ref$1.length)) { $s = 39; continue; }
  47632. _rune = $decodeRune(_ref$1, _i);
  47633. r = _rune[0];
  47634. /* */ if (r >= 128 || !isPrintable((r << 24 >>> 24))) { $s = 40; continue; }
  47635. /* */ $s = 41; continue;
  47636. /* if (r >= 128 || !isPrintable((r << 24 >>> 24))) { */ case 40:
  47637. _r$16 = v.String(); /* */ $s = 44; case 44: if($c) { $c = false; _r$16 = _r$16.$blk(); } if (_r$16 && _r$16.$blk !== undefined) { break s; }
  47638. _r$17 = utf8.ValidString(_r$16); /* */ $s = 45; case 45: if($c) { $c = false; _r$17 = _r$17.$blk(); } if (_r$17 && _r$17.$blk !== undefined) { break s; }
  47639. /* */ if (!_r$17) { $s = 42; continue; }
  47640. /* */ $s = 43; continue;
  47641. /* if (!_r$17) { */ case 42:
  47642. err = errors.New("asn1: string not valid UTF-8");
  47643. return err;
  47644. /* } */ case 43:
  47645. tag = 12;
  47646. /* break; */ $s = 39; continue;
  47647. /* } */ case 41:
  47648. _i += _rune[1];
  47649. /* } */ $s = 38; continue; case 39:
  47650. $s = 36; continue;
  47651. /* } else { */ case 35:
  47652. tag = params.stringType;
  47653. /* } */ case 36:
  47654. $s = 33; continue;
  47655. /* } else if (_ref === 23) { */ case 32:
  47656. _r$18 = v.Interface(); /* */ $s = 48; case 48: if($c) { $c = false; _r$18 = _r$18.$blk(); } if (_r$18 && _r$18.$blk !== undefined) { break s; }
  47657. _r$19 = outsideUTCRange($assertType(_r$18, time.Time)); /* */ $s = 49; case 49: if($c) { $c = false; _r$19 = _r$19.$blk(); } if (_r$19 && _r$19.$blk !== undefined) { break s; }
  47658. /* */ if (_r$19) { $s = 46; continue; }
  47659. /* */ $s = 47; continue;
  47660. /* if (_r$19) { */ case 46:
  47661. tag = 24;
  47662. /* } */ case 47:
  47663. /* } */ case 33:
  47664. if (params.set) {
  47665. if (!((tag === 16))) {
  47666. err = (x$5 = new StructuralError.ptr("non sequence tagged as set"), new x$5.constructor.elem(x$5));
  47667. return err;
  47668. }
  47669. tag = 17;
  47670. }
  47671. _tuple$3 = out.fork(); tags = _tuple$3[0]; body = _tuple$3[1];
  47672. _r$20 = marshalBody(body, v, params); /* */ $s = 50; case 50: if($c) { $c = false; _r$20 = _r$20.$blk(); } if (_r$20 && _r$20.$blk !== undefined) { break s; }
  47673. err = _r$20;
  47674. if (!($interfaceIsEqual(err, $ifaceNil))) {
  47675. return err;
  47676. }
  47677. bodyLen = body.Len();
  47678. explicitTag = ptrType$3.nil;
  47679. if (params.explicit) {
  47680. _tuple$4 = tags.fork(); explicitTag = _tuple$4[0]; tags = _tuple$4[1];
  47681. }
  47682. if (!params.explicit && !(params.tag === ptrType$2.nil)) {
  47683. tag = params.tag.$get();
  47684. class$1 = 2;
  47685. }
  47686. err = marshalTagAndLength(tags, new tagAndLength.ptr(class$1, tag, bodyLen, isCompound));
  47687. if (!($interfaceIsEqual(err, $ifaceNil))) {
  47688. return err;
  47689. }
  47690. if (params.explicit) {
  47691. err = marshalTagAndLength(explicitTag, new tagAndLength.ptr(2, params.tag.$get(), bodyLen + tags.Len() >> 0, true));
  47692. }
  47693. err = $ifaceNil;
  47694. return err;
  47695. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: marshalField }; } $f.$ptr = $ptr; $f._arg = _arg; $f._arg$1 = _arg$1; $f._arg$2 = _arg$2; $f._arg$3 = _arg$3; $f._arg$4 = _arg$4; $f._arg$5 = _arg$5; $f._arg$6 = _arg$6; $f._i = _i; $f._r = _r; $f._r$1 = _r$1; $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$12 = _r$12; $f._r$13 = _r$13; $f._r$14 = _r$14; $f._r$15 = _r$15; $f._r$16 = _r$16; $f._r$17 = _r$17; $f._r$18 = _r$18; $f._r$19 = _r$19; $f._r$2 = _r$2; $f._r$20 = _r$20; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._r$9 = _r$9; $f._ref = _ref; $f._ref$1 = _ref$1; $f._rune = _rune; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f._tuple$4 = _tuple$4; $f._v = _v; $f.body = body; $f.bodyLen = bodyLen; $f.class$1 = class$1; $f.defaultValue = defaultValue; $f.err = err; $f.explicitTag = explicitTag; $f.isCompound = isCompound; $f.ok = ok; $f.out = out; $f.params = params; $f.r = r; $f.rv = rv; $f.tag = tag; $f.tags = tags; $f.v = v; $f.x$3 = x$3; $f.x$4 = x$4; $f.x$5 = x$5; $f.$s = $s; $f.$r = $r; return $f;
  47696. };
  47697. Marshal = function(val) {
  47698. var $ptr, _r, _r$1, _r$2, _tuple, err, f, out, v, val, $s, $r;
  47699. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _tuple = $f._tuple; err = $f.err; f = $f.f; out = $f.out; v = $f.v; val = $f.val; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  47700. out = [out];
  47701. out[0] = $clone(new bytes.Buffer.ptr(), bytes.Buffer);
  47702. _r = reflect.ValueOf(val); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  47703. v = _r;
  47704. f = newForkableWriter();
  47705. _r$1 = marshalField(f, v, new fieldParameters.ptr(false, false, false, ptrType$1.nil, ptrType$2.nil, 0, false, false)); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  47706. err = _r$1;
  47707. if (!($interfaceIsEqual(err, $ifaceNil))) {
  47708. return [sliceType.nil, err];
  47709. }
  47710. _r$2 = f.writeTo(out[0]); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  47711. _tuple = _r$2; err = _tuple[1];
  47712. return [out[0].Bytes(), $ifaceNil];
  47713. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Marshal }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._tuple = _tuple; $f.err = err; $f.f = f; $f.out = out; $f.v = v; $f.val = val; $f.$s = $s; $f.$r = $r; return $f;
  47714. };
  47715. $pkg.Marshal = Marshal;
  47716. StructuralError.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}];
  47717. SyntaxError.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}];
  47718. BitString.methods = [{prop: "At", name: "At", pkg: "", typ: $funcType([$Int], [$Int], false)}, {prop: "RightAlign", name: "RightAlign", pkg: "", typ: $funcType([], [sliceType], false)}];
  47719. ObjectIdentifier.methods = [{prop: "Equal", name: "Equal", pkg: "", typ: $funcType([ObjectIdentifier], [$Bool], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}];
  47720. ptrType$3.methods = [{prop: "fork", name: "fork", pkg: "encoding/asn1", typ: $funcType([], [ptrType$3, ptrType$3], false)}, {prop: "Len", name: "Len", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "writeTo", name: "writeTo", pkg: "encoding/asn1", typ: $funcType([io.Writer], [$Int, $error], false)}];
  47721. StructuralError.init([{prop: "Msg", name: "Msg", pkg: "", typ: $String, tag: ""}]);
  47722. SyntaxError.init([{prop: "Msg", name: "Msg", pkg: "", typ: $String, tag: ""}]);
  47723. BitString.init([{prop: "Bytes", name: "Bytes", pkg: "", typ: sliceType, tag: ""}, {prop: "BitLength", name: "BitLength", pkg: "", typ: $Int, tag: ""}]);
  47724. ObjectIdentifier.init($Int);
  47725. RawValue.init([{prop: "Class", name: "Class", pkg: "", typ: $Int, tag: ""}, {prop: "Tag", name: "Tag", pkg: "", typ: $Int, tag: ""}, {prop: "IsCompound", name: "IsCompound", pkg: "", typ: $Bool, tag: ""}, {prop: "Bytes", name: "Bytes", pkg: "", typ: sliceType, tag: ""}, {prop: "FullBytes", name: "FullBytes", pkg: "", typ: sliceType, tag: ""}]);
  47726. RawContent.init($Uint8);
  47727. tagAndLength.init([{prop: "class$0", name: "class", pkg: "encoding/asn1", typ: $Int, tag: ""}, {prop: "tag", name: "tag", pkg: "encoding/asn1", typ: $Int, tag: ""}, {prop: "length", name: "length", pkg: "encoding/asn1", typ: $Int, tag: ""}, {prop: "isCompound", name: "isCompound", pkg: "encoding/asn1", typ: $Bool, tag: ""}]);
  47728. fieldParameters.init([{prop: "optional", name: "optional", pkg: "encoding/asn1", typ: $Bool, tag: ""}, {prop: "explicit", name: "explicit", pkg: "encoding/asn1", typ: $Bool, tag: ""}, {prop: "application", name: "application", pkg: "encoding/asn1", typ: $Bool, tag: ""}, {prop: "defaultValue", name: "defaultValue", pkg: "encoding/asn1", typ: ptrType$1, tag: ""}, {prop: "tag", name: "tag", pkg: "encoding/asn1", typ: ptrType$2, tag: ""}, {prop: "stringType", name: "stringType", pkg: "encoding/asn1", typ: $Int, tag: ""}, {prop: "set", name: "set", pkg: "encoding/asn1", typ: $Bool, tag: ""}, {prop: "omitEmpty", name: "omitEmpty", pkg: "encoding/asn1", typ: $Bool, tag: ""}]);
  47729. forkableWriter.init([{prop: "Buffer", name: "", pkg: "", typ: ptrType$5, tag: ""}, {prop: "pre", name: "pre", pkg: "encoding/asn1", typ: ptrType$3, tag: ""}, {prop: "post", name: "post", pkg: "encoding/asn1", typ: ptrType$3, tag: ""}]);
  47730. $init = function() {
  47731. $pkg.$init = function() {};
  47732. /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  47733. $r = bytes.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  47734. $r = errors.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  47735. $r = fmt.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  47736. $r = io.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  47737. $r = big.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  47738. $r = reflect.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  47739. $r = strconv.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  47740. $r = strings.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  47741. $r = time.$init(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  47742. $r = utf8.$init(); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  47743. bigOne = big.NewInt(new $Int64(0, 1));
  47744. bitStringType = reflect.TypeOf((x = new BitString.ptr(sliceType.nil, 0), new x.constructor.elem(x)));
  47745. objectIdentifierType = reflect.TypeOf(new ObjectIdentifier([]));
  47746. enumeratedType = reflect.TypeOf(new Enumerated(0));
  47747. flagType = reflect.TypeOf(new Flag(false));
  47748. timeType = reflect.TypeOf((x$1 = new time.Time.ptr(new $Int64(0, 0), 0, ptrType.nil), new x$1.constructor.elem(x$1)));
  47749. rawValueType = reflect.TypeOf((x$2 = new RawValue.ptr(0, 0, false, sliceType.nil, sliceType.nil), new x$2.constructor.elem(x$2)));
  47750. rawContentsType = reflect.TypeOf(RawContent.nil);
  47751. bigIntType = reflect.TypeOf(new big.Int.ptr());
  47752. /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
  47753. };
  47754. $pkg.$init = $init;
  47755. return $pkg;
  47756. })();
  47757. $packages["crypto/ecdsa"] = (function() {
  47758. var $pkg = {}, $init, crypto, elliptic, asn1, io, big, PublicKey, PrivateKey, ecdsaSignature, sliceType, ptrType, ptrType$1, one, randFieldElement, hashToInt, fermatInverse, Sign, Verify;
  47759. crypto = $packages["crypto"];
  47760. elliptic = $packages["crypto/elliptic"];
  47761. asn1 = $packages["encoding/asn1"];
  47762. io = $packages["io"];
  47763. big = $packages["math/big"];
  47764. PublicKey = $pkg.PublicKey = $newType(0, $kindStruct, "ecdsa.PublicKey", "PublicKey", "crypto/ecdsa", function(Curve_, X_, Y_) {
  47765. this.$val = this;
  47766. if (arguments.length === 0) {
  47767. this.Curve = $ifaceNil;
  47768. this.X = ptrType.nil;
  47769. this.Y = ptrType.nil;
  47770. return;
  47771. }
  47772. this.Curve = Curve_;
  47773. this.X = X_;
  47774. this.Y = Y_;
  47775. });
  47776. PrivateKey = $pkg.PrivateKey = $newType(0, $kindStruct, "ecdsa.PrivateKey", "PrivateKey", "crypto/ecdsa", function(PublicKey_, D_) {
  47777. this.$val = this;
  47778. if (arguments.length === 0) {
  47779. this.PublicKey = new PublicKey.ptr();
  47780. this.D = ptrType.nil;
  47781. return;
  47782. }
  47783. this.PublicKey = PublicKey_;
  47784. this.D = D_;
  47785. });
  47786. ecdsaSignature = $pkg.ecdsaSignature = $newType(0, $kindStruct, "ecdsa.ecdsaSignature", "ecdsaSignature", "crypto/ecdsa", function(R_, S_) {
  47787. this.$val = this;
  47788. if (arguments.length === 0) {
  47789. this.R = ptrType.nil;
  47790. this.S = ptrType.nil;
  47791. return;
  47792. }
  47793. this.R = R_;
  47794. this.S = S_;
  47795. });
  47796. sliceType = $sliceType($Uint8);
  47797. ptrType = $ptrType(big.Int);
  47798. ptrType$1 = $ptrType(PrivateKey);
  47799. PrivateKey.ptr.prototype.Public = function() {
  47800. var $ptr, priv;
  47801. priv = this;
  47802. return priv.PublicKey;
  47803. };
  47804. PrivateKey.prototype.Public = function() { return this.$val.Public(); };
  47805. PrivateKey.ptr.prototype.Sign = function(rand, msg, opts) {
  47806. var $ptr, _r, _r$1, _tuple, err, msg, opts, priv, r, rand, s, x, $s, $r;
  47807. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _tuple = $f._tuple; err = $f.err; msg = $f.msg; opts = $f.opts; priv = $f.priv; r = $f.r; rand = $f.rand; s = $f.s; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  47808. priv = this;
  47809. _r = Sign(rand, priv, msg); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  47810. _tuple = _r; r = _tuple[0]; s = _tuple[1]; err = _tuple[2];
  47811. if (!($interfaceIsEqual(err, $ifaceNil))) {
  47812. return [sliceType.nil, err];
  47813. }
  47814. _r$1 = asn1.Marshal((x = new ecdsaSignature.ptr(r, s), new x.constructor.elem(x))); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  47815. return _r$1;
  47816. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: PrivateKey.ptr.prototype.Sign }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._tuple = _tuple; $f.err = err; $f.msg = msg; $f.opts = opts; $f.priv = priv; $f.r = r; $f.rand = rand; $f.s = s; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
  47817. };
  47818. PrivateKey.prototype.Sign = function(rand, msg, opts) { return this.$val.Sign(rand, msg, opts); };
  47819. randFieldElement = function(c, rand) {
  47820. var $ptr, _q, _r, _r$1, _tuple, b, c, err, k, n, params, rand, $s, $r;
  47821. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _q = $f._q; _r = $f._r; _r$1 = $f._r$1; _tuple = $f._tuple; b = $f.b; c = $f.c; err = $f.err; k = $f.k; n = $f.n; params = $f.params; rand = $f.rand; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  47822. k = ptrType.nil;
  47823. err = $ifaceNil;
  47824. _r = c.Params(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  47825. params = _r;
  47826. b = $makeSlice(sliceType, ((_q = params.BitSize / 8, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")) + 8 >> 0));
  47827. _r$1 = io.ReadFull(rand, b); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  47828. _tuple = _r$1; err = _tuple[1];
  47829. if (!($interfaceIsEqual(err, $ifaceNil))) {
  47830. return [k, err];
  47831. }
  47832. k = new big.Int.ptr().SetBytes(b);
  47833. n = new big.Int.ptr().Sub(params.N, one);
  47834. k.Mod(k, n);
  47835. k.Add(k, one);
  47836. return [k, err];
  47837. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: randFieldElement }; } $f.$ptr = $ptr; $f._q = _q; $f._r = _r; $f._r$1 = _r$1; $f._tuple = _tuple; $f.b = b; $f.c = c; $f.err = err; $f.k = k; $f.n = n; $f.params = params; $f.rand = rand; $f.$s = $s; $f.$r = $r; return $f;
  47838. };
  47839. hashToInt = function(hash, c) {
  47840. var $ptr, _q, _r, _r$1, c, excess, hash, orderBits, orderBytes, ret, $s, $r;
  47841. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _q = $f._q; _r = $f._r; _r$1 = $f._r$1; c = $f.c; excess = $f.excess; hash = $f.hash; orderBits = $f.orderBits; orderBytes = $f.orderBytes; ret = $f.ret; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  47842. _r = c.Params(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  47843. _r$1 = _r.N.BitLen(); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  47844. orderBits = _r$1;
  47845. orderBytes = (_q = ((orderBits + 7 >> 0)) / 8, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero"));
  47846. if (hash.$length > orderBytes) {
  47847. hash = $subslice(hash, 0, orderBytes);
  47848. }
  47849. ret = new big.Int.ptr().SetBytes(hash);
  47850. excess = (hash.$length * 8 >> 0) - orderBits >> 0;
  47851. if (excess > 0) {
  47852. ret.Rsh(ret, (excess >>> 0));
  47853. }
  47854. return ret;
  47855. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: hashToInt }; } $f.$ptr = $ptr; $f._q = _q; $f._r = _r; $f._r$1 = _r$1; $f.c = c; $f.excess = excess; $f.hash = hash; $f.orderBits = orderBits; $f.orderBytes = orderBytes; $f.ret = ret; $f.$s = $s; $f.$r = $r; return $f;
  47856. };
  47857. fermatInverse = function(k, N) {
  47858. var $ptr, N, k, nMinus2, two;
  47859. two = big.NewInt(new $Int64(0, 2));
  47860. nMinus2 = new big.Int.ptr().Sub(N, two);
  47861. return new big.Int.ptr().Exp(k, nMinus2, N);
  47862. };
  47863. Sign = function(rand, priv, hash) {
  47864. var $ptr, N, _r, _r$1, _r$2, _r$3, _tmp, _tmp$1, _tuple, _tuple$1, c, e, err, hash, k, kInv, priv, r, rand, s, $s, $r;
  47865. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; N = $f.N; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; c = $f.c; e = $f.e; err = $f.err; hash = $f.hash; k = $f.k; kInv = $f.kInv; priv = $f.priv; r = $f.r; rand = $f.rand; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  47866. r = ptrType.nil;
  47867. s = ptrType.nil;
  47868. err = $ifaceNil;
  47869. c = priv.PublicKey.Curve;
  47870. _r = c.Params(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  47871. N = _r.N;
  47872. _tmp = ptrType.nil; _tmp$1 = ptrType.nil; k = _tmp; kInv = _tmp$1;
  47873. /* while (true) { */ case 2:
  47874. /* while (true) { */ case 4:
  47875. _r$1 = randFieldElement(c, rand); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  47876. _tuple = _r$1; k = _tuple[0]; err = _tuple[1];
  47877. if (!($interfaceIsEqual(err, $ifaceNil))) {
  47878. r = ptrType.nil;
  47879. return [r, s, err];
  47880. }
  47881. kInv = fermatInverse(k, N);
  47882. _r$2 = priv.PublicKey.Curve.ScalarBaseMult(k.Bytes()); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  47883. _tuple$1 = _r$2; r = _tuple$1[0];
  47884. r.Mod(r, N);
  47885. if (!((r.Sign() === 0))) {
  47886. /* break; */ $s = 5; continue;
  47887. }
  47888. /* } */ $s = 4; continue; case 5:
  47889. _r$3 = hashToInt(hash, c); /* */ $s = 8; case 8: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  47890. e = _r$3;
  47891. s = new big.Int.ptr().Mul(priv.D, r);
  47892. s.Add(s, e);
  47893. s.Mul(s, kInv);
  47894. s.Mod(s, N);
  47895. if (!((s.Sign() === 0))) {
  47896. /* break; */ $s = 3; continue;
  47897. }
  47898. /* } */ $s = 2; continue; case 3:
  47899. return [r, s, err];
  47900. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Sign }; } $f.$ptr = $ptr; $f.N = N; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.c = c; $f.e = e; $f.err = err; $f.hash = hash; $f.k = k; $f.kInv = kInv; $f.priv = priv; $f.r = r; $f.rand = rand; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
  47901. };
  47902. $pkg.Sign = Sign;
  47903. Verify = function(pub, hash, r, s) {
  47904. var $ptr, N, _r, _r$1, _r$2, _r$3, _r$4, _tuple, _tuple$1, _tuple$2, c, e, hash, pub, r, s, u1, u2, w, x, x1, x2, y, y1, y2, $s, $r;
  47905. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; N = $f.N; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; c = $f.c; e = $f.e; hash = $f.hash; pub = $f.pub; r = $f.r; s = $f.s; u1 = $f.u1; u2 = $f.u2; w = $f.w; x = $f.x; x1 = $f.x1; x2 = $f.x2; y = $f.y; y1 = $f.y1; y2 = $f.y2; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  47906. c = pub.Curve;
  47907. _r = c.Params(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  47908. N = _r.N;
  47909. if ((r.Sign() === 0) || (s.Sign() === 0)) {
  47910. return false;
  47911. }
  47912. if (r.Cmp(N) >= 0 || s.Cmp(N) >= 0) {
  47913. return false;
  47914. }
  47915. _r$1 = hashToInt(hash, c); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  47916. e = _r$1;
  47917. w = new big.Int.ptr().ModInverse(s, N);
  47918. u1 = e.Mul(e, w);
  47919. u1.Mod(u1, N);
  47920. u2 = w.Mul(r, w);
  47921. u2.Mod(u2, N);
  47922. _r$2 = c.ScalarBaseMult(u1.Bytes()); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  47923. _tuple = _r$2; x1 = _tuple[0]; y1 = _tuple[1];
  47924. _r$3 = c.ScalarMult(pub.X, pub.Y, u2.Bytes()); /* */ $s = 4; case 4: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  47925. _tuple$1 = _r$3; x2 = _tuple$1[0]; y2 = _tuple$1[1];
  47926. _r$4 = c.Add(x1, y1, x2, y2); /* */ $s = 5; case 5: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
  47927. _tuple$2 = _r$4; x = _tuple$2[0]; y = _tuple$2[1];
  47928. if ((x.Sign() === 0) && (y.Sign() === 0)) {
  47929. return false;
  47930. }
  47931. x.Mod(x, N);
  47932. return x.Cmp(r) === 0;
  47933. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Verify }; } $f.$ptr = $ptr; $f.N = N; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f.c = c; $f.e = e; $f.hash = hash; $f.pub = pub; $f.r = r; $f.s = s; $f.u1 = u1; $f.u2 = u2; $f.w = w; $f.x = x; $f.x1 = x1; $f.x2 = x2; $f.y = y; $f.y1 = y1; $f.y2 = y2; $f.$s = $s; $f.$r = $r; return $f;
  47934. };
  47935. $pkg.Verify = Verify;
  47936. ptrType$1.methods = [{prop: "Public", name: "Public", pkg: "", typ: $funcType([], [crypto.PublicKey], false)}, {prop: "Sign", name: "Sign", pkg: "", typ: $funcType([io.Reader, sliceType, crypto.SignerOpts], [sliceType, $error], false)}];
  47937. PublicKey.init([{prop: "Curve", name: "", pkg: "", typ: elliptic.Curve, tag: ""}, {prop: "X", name: "X", pkg: "", typ: ptrType, tag: ""}, {prop: "Y", name: "Y", pkg: "", typ: ptrType, tag: ""}]);
  47938. PrivateKey.init([{prop: "PublicKey", name: "", pkg: "", typ: PublicKey, tag: ""}, {prop: "D", name: "D", pkg: "", typ: ptrType, tag: ""}]);
  47939. ecdsaSignature.init([{prop: "R", name: "R", pkg: "", typ: ptrType, tag: ""}, {prop: "S", name: "S", pkg: "", typ: ptrType, tag: ""}]);
  47940. $init = function() {
  47941. $pkg.$init = function() {};
  47942. /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  47943. $r = crypto.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  47944. $r = elliptic.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  47945. $r = asn1.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  47946. $r = io.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  47947. $r = big.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  47948. one = new big.Int.ptr().SetInt64(new $Int64(0, 1));
  47949. /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
  47950. };
  47951. $pkg.$init = $init;
  47952. return $pkg;
  47953. })();
  47954. $packages["crypto/hmac"] = (function() {
  47955. var $pkg = {}, $init, subtle, hash, hmac, sliceType, ptrType, New;
  47956. subtle = $packages["crypto/subtle"];
  47957. hash = $packages["hash"];
  47958. hmac = $pkg.hmac = $newType(0, $kindStruct, "hmac.hmac", "hmac", "crypto/hmac", function(size_, blocksize_, key_, tmp_, outer_, inner_) {
  47959. this.$val = this;
  47960. if (arguments.length === 0) {
  47961. this.size = 0;
  47962. this.blocksize = 0;
  47963. this.key = sliceType.nil;
  47964. this.tmp = sliceType.nil;
  47965. this.outer = $ifaceNil;
  47966. this.inner = $ifaceNil;
  47967. return;
  47968. }
  47969. this.size = size_;
  47970. this.blocksize = blocksize_;
  47971. this.key = key_;
  47972. this.tmp = tmp_;
  47973. this.outer = outer_;
  47974. this.inner = inner_;
  47975. });
  47976. sliceType = $sliceType($Uint8);
  47977. ptrType = $ptrType(hmac);
  47978. hmac.ptr.prototype.tmpPad = function(xor) {
  47979. var $ptr, _i, _ref, h, i, i$1, k, x, x$1, xor;
  47980. h = this;
  47981. _ref = h.key;
  47982. _i = 0;
  47983. while (true) {
  47984. if (!(_i < _ref.$length)) { break; }
  47985. i = _i;
  47986. k = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]);
  47987. (x = h.tmp, ((i < 0 || i >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + i] = (xor ^ k) << 24 >>> 24));
  47988. _i++;
  47989. }
  47990. i$1 = h.key.$length;
  47991. while (true) {
  47992. if (!(i$1 < h.blocksize)) { break; }
  47993. (x$1 = h.tmp, ((i$1 < 0 || i$1 >= x$1.$length) ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + i$1] = xor));
  47994. i$1 = i$1 + (1) >> 0;
  47995. }
  47996. };
  47997. hmac.prototype.tmpPad = function(xor) { return this.$val.tmpPad(xor); };
  47998. hmac.ptr.prototype.Sum = function(in$1) {
  47999. var $ptr, _r, _r$1, _r$2, h, in$1, origLen, $s, $r;
  48000. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; h = $f.h; in$1 = $f.in$1; origLen = $f.origLen; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  48001. h = this;
  48002. origLen = in$1.$length;
  48003. _r = h.inner.Sum(in$1); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  48004. in$1 = _r;
  48005. h.tmpPad(92);
  48006. $copySlice($subslice(h.tmp, h.blocksize), $subslice(in$1, origLen));
  48007. $r = h.outer.Reset(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  48008. _r$1 = h.outer.Write(h.tmp); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  48009. _r$1;
  48010. _r$2 = h.outer.Sum($subslice(in$1, 0, origLen)); /* */ $s = 4; case 4: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  48011. return _r$2;
  48012. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: hmac.ptr.prototype.Sum }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f.h = h; $f.in$1 = in$1; $f.origLen = origLen; $f.$s = $s; $f.$r = $r; return $f;
  48013. };
  48014. hmac.prototype.Sum = function(in$1) { return this.$val.Sum(in$1); };
  48015. hmac.ptr.prototype.Write = function(p) {
  48016. var $ptr, _r, _tuple, err, h, n, p, $s, $r;
  48017. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tuple = $f._tuple; err = $f.err; h = $f.h; n = $f.n; p = $f.p; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  48018. n = 0;
  48019. err = $ifaceNil;
  48020. h = this;
  48021. _r = h.inner.Write(p); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  48022. _tuple = _r; n = _tuple[0]; err = _tuple[1];
  48023. return [n, err];
  48024. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: hmac.ptr.prototype.Write }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple = _tuple; $f.err = err; $f.h = h; $f.n = n; $f.p = p; $f.$s = $s; $f.$r = $r; return $f;
  48025. };
  48026. hmac.prototype.Write = function(p) { return this.$val.Write(p); };
  48027. hmac.ptr.prototype.Size = function() {
  48028. var $ptr, h;
  48029. h = this;
  48030. return h.size;
  48031. };
  48032. hmac.prototype.Size = function() { return this.$val.Size(); };
  48033. hmac.ptr.prototype.BlockSize = function() {
  48034. var $ptr, h;
  48035. h = this;
  48036. return h.blocksize;
  48037. };
  48038. hmac.prototype.BlockSize = function() { return this.$val.BlockSize(); };
  48039. hmac.ptr.prototype.Reset = function() {
  48040. var $ptr, _r, h, $s, $r;
  48041. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; h = $f.h; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  48042. h = this;
  48043. $r = h.inner.Reset(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  48044. h.tmpPad(54);
  48045. _r = h.inner.Write($subslice(h.tmp, 0, h.blocksize)); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  48046. _r;
  48047. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: hmac.ptr.prototype.Reset }; } $f.$ptr = $ptr; $f._r = _r; $f.h = h; $f.$s = $s; $f.$r = $r; return $f;
  48048. };
  48049. hmac.prototype.Reset = function() { return this.$val.Reset(); };
  48050. New = function(h, key) {
  48051. var $ptr, _r, _r$1, _r$2, _r$3, _r$4, _r$5, h, hm, key, $s, $r;
  48052. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; h = $f.h; hm = $f.hm; key = $f.key; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  48053. hm = new hmac.ptr();
  48054. _r = h(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  48055. hm.outer = _r;
  48056. _r$1 = h(); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  48057. hm.inner = _r$1;
  48058. _r$2 = hm.inner.Size(); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  48059. hm.size = _r$2;
  48060. _r$3 = hm.inner.BlockSize(); /* */ $s = 4; case 4: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  48061. hm.blocksize = _r$3;
  48062. hm.tmp = $makeSlice(sliceType, (hm.blocksize + hm.size >> 0));
  48063. /* */ if (key.$length > hm.blocksize) { $s = 5; continue; }
  48064. /* */ $s = 6; continue;
  48065. /* if (key.$length > hm.blocksize) { */ case 5:
  48066. _r$4 = hm.outer.Write(key); /* */ $s = 7; case 7: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
  48067. _r$4;
  48068. _r$5 = hm.outer.Sum(sliceType.nil); /* */ $s = 8; case 8: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
  48069. key = _r$5;
  48070. /* } */ case 6:
  48071. hm.key = $makeSlice(sliceType, key.$length);
  48072. $copySlice(hm.key, key);
  48073. $r = hm.Reset(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  48074. return hm;
  48075. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: New }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f.h = h; $f.hm = hm; $f.key = key; $f.$s = $s; $f.$r = $r; return $f;
  48076. };
  48077. $pkg.New = New;
  48078. ptrType.methods = [{prop: "tmpPad", name: "tmpPad", pkg: "crypto/hmac", typ: $funcType([$Uint8], [], false)}, {prop: "Sum", name: "Sum", pkg: "", typ: $funcType([sliceType], [sliceType], false)}, {prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType], [$Int, $error], false)}, {prop: "Size", name: "Size", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "BlockSize", name: "BlockSize", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Reset", name: "Reset", pkg: "", typ: $funcType([], [], false)}];
  48079. hmac.init([{prop: "size", name: "size", pkg: "crypto/hmac", typ: $Int, tag: ""}, {prop: "blocksize", name: "blocksize", pkg: "crypto/hmac", typ: $Int, tag: ""}, {prop: "key", name: "key", pkg: "crypto/hmac", typ: sliceType, tag: ""}, {prop: "tmp", name: "tmp", pkg: "crypto/hmac", typ: sliceType, tag: ""}, {prop: "outer", name: "outer", pkg: "crypto/hmac", typ: hash.Hash, tag: ""}, {prop: "inner", name: "inner", pkg: "crypto/hmac", typ: hash.Hash, tag: ""}]);
  48080. $init = function() {
  48081. $pkg.$init = function() {};
  48082. /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  48083. $r = subtle.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  48084. $r = hash.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  48085. /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
  48086. };
  48087. $pkg.$init = $init;
  48088. return $pkg;
  48089. })();
  48090. $packages["crypto/md5"] = (function() {
  48091. var $pkg = {}, $init, crypto, hash, runtime, digest, sliceType, arrayType, arrayType$1, arrayType$2, arrayType$3, ptrType, arrayType$4, ptrType$1, littleEndian, block, init, New, init$1, blockGeneric;
  48092. crypto = $packages["crypto"];
  48093. hash = $packages["hash"];
  48094. runtime = $packages["runtime"];
  48095. digest = $pkg.digest = $newType(0, $kindStruct, "md5.digest", "digest", "crypto/md5", function(s_, x_, nx_, len_) {
  48096. this.$val = this;
  48097. if (arguments.length === 0) {
  48098. this.s = arrayType$4.zero();
  48099. this.x = arrayType$1.zero();
  48100. this.nx = 0;
  48101. this.len = new $Uint64(0, 0);
  48102. return;
  48103. }
  48104. this.s = s_;
  48105. this.x = x_;
  48106. this.nx = nx_;
  48107. this.len = len_;
  48108. });
  48109. sliceType = $sliceType($Uint8);
  48110. arrayType = $arrayType($Uint8, 16);
  48111. arrayType$1 = $arrayType($Uint8, 64);
  48112. arrayType$2 = $arrayType($Uint8, 4);
  48113. arrayType$3 = $arrayType($Uint32, 16);
  48114. ptrType = $ptrType(arrayType$3);
  48115. arrayType$4 = $arrayType($Uint32, 4);
  48116. ptrType$1 = $ptrType(digest);
  48117. init = function() {
  48118. var $ptr;
  48119. crypto.RegisterHash(2, New);
  48120. };
  48121. digest.ptr.prototype.Reset = function() {
  48122. var $ptr, d;
  48123. d = this;
  48124. d.s[0] = 1732584193;
  48125. d.s[1] = 4023233417;
  48126. d.s[2] = 2562383102;
  48127. d.s[3] = 271733878;
  48128. d.nx = 0;
  48129. d.len = new $Uint64(0, 0);
  48130. };
  48131. digest.prototype.Reset = function() { return this.$val.Reset(); };
  48132. New = function() {
  48133. var $ptr, d;
  48134. d = new digest.ptr();
  48135. d.Reset();
  48136. return d;
  48137. };
  48138. $pkg.New = New;
  48139. digest.ptr.prototype.Size = function() {
  48140. var $ptr, d;
  48141. d = this;
  48142. return 16;
  48143. };
  48144. digest.prototype.Size = function() { return this.$val.Size(); };
  48145. digest.ptr.prototype.BlockSize = function() {
  48146. var $ptr, d;
  48147. d = this;
  48148. return 64;
  48149. };
  48150. digest.prototype.BlockSize = function() { return this.$val.BlockSize(); };
  48151. digest.ptr.prototype.Write = function(p) {
  48152. var $ptr, d, err, i, n, n$1, nn, p, x, x$1, x$2, x$3, $s, $r;
  48153. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; d = $f.d; err = $f.err; i = $f.i; n = $f.n; n$1 = $f.n$1; nn = $f.nn; p = $f.p; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; x$3 = $f.x$3; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  48154. nn = 0;
  48155. err = $ifaceNil;
  48156. d = this;
  48157. nn = p.$length;
  48158. d.len = (x = d.len, x$1 = new $Uint64(0, nn), new $Uint64(x.$high + x$1.$high, x.$low + x$1.$low));
  48159. /* */ if (d.nx > 0) { $s = 1; continue; }
  48160. /* */ $s = 2; continue;
  48161. /* if (d.nx > 0) { */ case 1:
  48162. n = p.$length;
  48163. if (n > (64 - d.nx >> 0)) {
  48164. n = 64 - d.nx >> 0;
  48165. }
  48166. i = 0;
  48167. while (true) {
  48168. if (!(i < n)) { break; }
  48169. (x$2 = d.x, x$3 = d.nx + i >> 0, ((x$3 < 0 || x$3 >= x$2.length) ? $throwRuntimeError("index out of range") : x$2[x$3] = ((i < 0 || i >= p.$length) ? $throwRuntimeError("index out of range") : p.$array[p.$offset + i])));
  48170. i = i + (1) >> 0;
  48171. }
  48172. d.nx = d.nx + (n) >> 0;
  48173. /* */ if (d.nx === 64) { $s = 3; continue; }
  48174. /* */ $s = 4; continue;
  48175. /* if (d.nx === 64) { */ case 3:
  48176. $r = block(d, $subslice(new sliceType(d.x), 0, 64)); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  48177. d.nx = 0;
  48178. /* } */ case 4:
  48179. p = $subslice(p, n);
  48180. /* } */ case 2:
  48181. /* */ if (p.$length >= 64) { $s = 6; continue; }
  48182. /* */ $s = 7; continue;
  48183. /* if (p.$length >= 64) { */ case 6:
  48184. n$1 = (p.$length & ~63) >> 0;
  48185. $r = block(d, $subslice(p, 0, n$1)); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  48186. p = $subslice(p, n$1);
  48187. /* } */ case 7:
  48188. if (p.$length > 0) {
  48189. d.nx = $copySlice(new sliceType(d.x), p);
  48190. }
  48191. return [nn, err];
  48192. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: digest.ptr.prototype.Write }; } $f.$ptr = $ptr; $f.d = d; $f.err = err; $f.i = i; $f.n = n; $f.n$1 = n$1; $f.nn = nn; $f.p = p; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.x$3 = x$3; $f.$s = $s; $f.$r = $r; return $f;
  48193. };
  48194. digest.prototype.Write = function(p) { return this.$val.Write(p); };
  48195. digest.ptr.prototype.Sum = function(in$1) {
  48196. var $ptr, _r, d, d0, hash$1, in$1, $s, $r;
  48197. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; d = $f.d; d0 = $f.d0; hash$1 = $f.hash$1; in$1 = $f.in$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  48198. d0 = this;
  48199. d = $clone(d0, digest);
  48200. _r = d.checkSum(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  48201. hash$1 = $clone(_r, arrayType);
  48202. return $appendSlice(in$1, new sliceType(hash$1));
  48203. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: digest.ptr.prototype.Sum }; } $f.$ptr = $ptr; $f._r = _r; $f.d = d; $f.d0 = d0; $f.hash$1 = hash$1; $f.in$1 = in$1; $f.$s = $s; $f.$r = $r; return $f;
  48204. };
  48205. digest.prototype.Sum = function(in$1) { return this.$val.Sum(in$1); };
  48206. digest.ptr.prototype.checkSum = function() {
  48207. var $ptr, _i, _r, _r$1, _r$2, _ref, d, digest$1, i, i$1, len, s, tmp, x, x$1, x$2, x$3, x$4, x$5, x$6, $s, $r;
  48208. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _i = $f._i; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _ref = $f._ref; d = $f.d; digest$1 = $f.digest$1; i = $f.i; i$1 = $f.i$1; len = $f.len; s = $f.s; tmp = $f.tmp; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; x$3 = $f.x$3; x$4 = $f.x$4; x$5 = $f.x$5; x$6 = $f.x$6; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  48209. d = this;
  48210. len = d.len;
  48211. tmp = $clone(arrayType$1.zero(), arrayType$1);
  48212. tmp[0] = 128;
  48213. /* */ if ((x = $div64(len, new $Uint64(0, 64), true), (x.$high < 0 || (x.$high === 0 && x.$low < 56)))) { $s = 1; continue; }
  48214. /* */ $s = 2; continue;
  48215. /* if ((x = $div64(len, new $Uint64(0, 64), true), (x.$high < 0 || (x.$high === 0 && x.$low < 56)))) { */ case 1:
  48216. _r = d.Write($subslice(new sliceType(tmp), 0, $flatten64((x$1 = $div64(len, new $Uint64(0, 64), true), new $Uint64(0 - x$1.$high, 56 - x$1.$low))))); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  48217. _r;
  48218. $s = 3; continue;
  48219. /* } else { */ case 2:
  48220. _r$1 = d.Write($subslice(new sliceType(tmp), 0, $flatten64((x$2 = $div64(len, new $Uint64(0, 64), true), new $Uint64(0 - x$2.$high, 120 - x$2.$low))))); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  48221. _r$1;
  48222. /* } */ case 3:
  48223. len = $shiftLeft64(len, (3));
  48224. i = 0;
  48225. while (true) {
  48226. if (!(i < 8)) { break; }
  48227. ((i < 0 || i >= tmp.length) ? $throwRuntimeError("index out of range") : tmp[i] = ($shiftRightUint64(len, ((8 * i >>> 0))).$low << 24 >>> 24));
  48228. i = i + (1) >>> 0;
  48229. }
  48230. _r$2 = d.Write($subslice(new sliceType(tmp), 0, 8)); /* */ $s = 6; case 6: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  48231. _r$2;
  48232. if (!((d.nx === 0))) {
  48233. $panic(new $String("d.nx != 0"));
  48234. }
  48235. digest$1 = $clone(arrayType.zero(), arrayType);
  48236. _ref = d.s;
  48237. _i = 0;
  48238. while (true) {
  48239. if (!(_i < 4)) { break; }
  48240. i$1 = _i;
  48241. s = ((_i < 0 || _i >= _ref.length) ? $throwRuntimeError("index out of range") : _ref[_i]);
  48242. (x$3 = i$1 * 4 >> 0, ((x$3 < 0 || x$3 >= digest$1.length) ? $throwRuntimeError("index out of range") : digest$1[x$3] = (s << 24 >>> 24)));
  48243. (x$4 = (i$1 * 4 >> 0) + 1 >> 0, ((x$4 < 0 || x$4 >= digest$1.length) ? $throwRuntimeError("index out of range") : digest$1[x$4] = ((s >>> 8 >>> 0) << 24 >>> 24)));
  48244. (x$5 = (i$1 * 4 >> 0) + 2 >> 0, ((x$5 < 0 || x$5 >= digest$1.length) ? $throwRuntimeError("index out of range") : digest$1[x$5] = ((s >>> 16 >>> 0) << 24 >>> 24)));
  48245. (x$6 = (i$1 * 4 >> 0) + 3 >> 0, ((x$6 < 0 || x$6 >= digest$1.length) ? $throwRuntimeError("index out of range") : digest$1[x$6] = ((s >>> 24 >>> 0) << 24 >>> 24)));
  48246. _i++;
  48247. }
  48248. return digest$1;
  48249. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: digest.ptr.prototype.checkSum }; } $f.$ptr = $ptr; $f._i = _i; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._ref = _ref; $f.d = d; $f.digest$1 = digest$1; $f.i = i; $f.i$1 = i$1; $f.len = len; $f.s = s; $f.tmp = tmp; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.x$3 = x$3; $f.x$4 = x$4; $f.x$5 = x$5; $f.x$6 = x$6; $f.$s = $s; $f.$r = $r; return $f;
  48250. };
  48251. digest.prototype.checkSum = function() { return this.$val.checkSum(); };
  48252. init$1 = function() {
  48253. var $ptr, x, y;
  48254. x = 67305985;
  48255. y = $toNativeArray($kindUint8, [1, 2, 3, 4]);
  48256. littleEndian = $equal(x, y, arrayType$2);
  48257. };
  48258. blockGeneric = function(dig, p) {
  48259. var $ptr, X, _tmp, _tmp$1, _tmp$2, _tmp$3, a, aa, b, bb, c, cc, d, dd, dig, i, j, p, x, x$1, x$2, x$3, xbuf;
  48260. a = dig.s[0];
  48261. b = dig.s[1];
  48262. c = dig.s[2];
  48263. d = dig.s[3];
  48264. X = ptrType.nil;
  48265. xbuf = $clone(arrayType$3.zero(), arrayType$3);
  48266. while (true) {
  48267. if (!(p.$length >= 64)) { break; }
  48268. _tmp = a; _tmp$1 = b; _tmp$2 = c; _tmp$3 = d; aa = _tmp; bb = _tmp$1; cc = _tmp$2; dd = _tmp$3;
  48269. if (littleEndian && ((($sliceToArray(p) & 3) >>> 0) === 0)) {
  48270. X = $sliceToArray(p);
  48271. } else {
  48272. X = xbuf;
  48273. j = 0;
  48274. i = 0;
  48275. while (true) {
  48276. if (!(i < 16)) { break; }
  48277. (x$3 = i & 15, X.nilCheck, ((x$3 < 0 || x$3 >= X.length) ? $throwRuntimeError("index out of range") : X[x$3] = ((((((((j < 0 || j >= p.$length) ? $throwRuntimeError("index out of range") : p.$array[p.$offset + j]) >>> 0) | (((x = j + 1 >> 0, ((x < 0 || x >= p.$length) ? $throwRuntimeError("index out of range") : p.$array[p.$offset + x])) >>> 0) << 8 >>> 0)) >>> 0) | (((x$1 = j + 2 >> 0, ((x$1 < 0 || x$1 >= p.$length) ? $throwRuntimeError("index out of range") : p.$array[p.$offset + x$1])) >>> 0) << 16 >>> 0)) >>> 0) | (((x$2 = j + 3 >> 0, ((x$2 < 0 || x$2 >= p.$length) ? $throwRuntimeError("index out of range") : p.$array[p.$offset + x$2])) >>> 0) << 24 >>> 0)) >>> 0));
  48278. j = j + (4) >> 0;
  48279. i = i + (1) >> 0;
  48280. }
  48281. }
  48282. a = a + ((((((((((((c ^ d) >>> 0)) & b) >>> 0)) ^ d) >>> 0)) + (X.nilCheck, X[0]) >>> 0) + 3614090360 >>> 0)) >>> 0;
  48283. a = (((a << 7 >>> 0) | (a >>> 25 >>> 0)) >>> 0) + b >>> 0;
  48284. d = d + ((((((((((((b ^ c) >>> 0)) & a) >>> 0)) ^ c) >>> 0)) + (X.nilCheck, X[1]) >>> 0) + 3905402710 >>> 0)) >>> 0;
  48285. d = (((d << 12 >>> 0) | (d >>> 20 >>> 0)) >>> 0) + a >>> 0;
  48286. c = c + ((((((((((((a ^ b) >>> 0)) & d) >>> 0)) ^ b) >>> 0)) + (X.nilCheck, X[2]) >>> 0) + 606105819 >>> 0)) >>> 0;
  48287. c = (((c << 17 >>> 0) | (c >>> 15 >>> 0)) >>> 0) + d >>> 0;
  48288. b = b + ((((((((((((d ^ a) >>> 0)) & c) >>> 0)) ^ a) >>> 0)) + (X.nilCheck, X[3]) >>> 0) + 3250441966 >>> 0)) >>> 0;
  48289. b = (((b << 22 >>> 0) | (b >>> 10 >>> 0)) >>> 0) + c >>> 0;
  48290. a = a + ((((((((((((c ^ d) >>> 0)) & b) >>> 0)) ^ d) >>> 0)) + (X.nilCheck, X[4]) >>> 0) + 4118548399 >>> 0)) >>> 0;
  48291. a = (((a << 7 >>> 0) | (a >>> 25 >>> 0)) >>> 0) + b >>> 0;
  48292. d = d + ((((((((((((b ^ c) >>> 0)) & a) >>> 0)) ^ c) >>> 0)) + (X.nilCheck, X[5]) >>> 0) + 1200080426 >>> 0)) >>> 0;
  48293. d = (((d << 12 >>> 0) | (d >>> 20 >>> 0)) >>> 0) + a >>> 0;
  48294. c = c + ((((((((((((a ^ b) >>> 0)) & d) >>> 0)) ^ b) >>> 0)) + (X.nilCheck, X[6]) >>> 0) + 2821735955 >>> 0)) >>> 0;
  48295. c = (((c << 17 >>> 0) | (c >>> 15 >>> 0)) >>> 0) + d >>> 0;
  48296. b = b + ((((((((((((d ^ a) >>> 0)) & c) >>> 0)) ^ a) >>> 0)) + (X.nilCheck, X[7]) >>> 0) + 4249261313 >>> 0)) >>> 0;
  48297. b = (((b << 22 >>> 0) | (b >>> 10 >>> 0)) >>> 0) + c >>> 0;
  48298. a = a + ((((((((((((c ^ d) >>> 0)) & b) >>> 0)) ^ d) >>> 0)) + (X.nilCheck, X[8]) >>> 0) + 1770035416 >>> 0)) >>> 0;
  48299. a = (((a << 7 >>> 0) | (a >>> 25 >>> 0)) >>> 0) + b >>> 0;
  48300. d = d + ((((((((((((b ^ c) >>> 0)) & a) >>> 0)) ^ c) >>> 0)) + (X.nilCheck, X[9]) >>> 0) + 2336552879 >>> 0)) >>> 0;
  48301. d = (((d << 12 >>> 0) | (d >>> 20 >>> 0)) >>> 0) + a >>> 0;
  48302. c = c + ((((((((((((a ^ b) >>> 0)) & d) >>> 0)) ^ b) >>> 0)) + (X.nilCheck, X[10]) >>> 0) + 4294925233 >>> 0)) >>> 0;
  48303. c = (((c << 17 >>> 0) | (c >>> 15 >>> 0)) >>> 0) + d >>> 0;
  48304. b = b + ((((((((((((d ^ a) >>> 0)) & c) >>> 0)) ^ a) >>> 0)) + (X.nilCheck, X[11]) >>> 0) + 2304563134 >>> 0)) >>> 0;
  48305. b = (((b << 22 >>> 0) | (b >>> 10 >>> 0)) >>> 0) + c >>> 0;
  48306. a = a + ((((((((((((c ^ d) >>> 0)) & b) >>> 0)) ^ d) >>> 0)) + (X.nilCheck, X[12]) >>> 0) + 1804603682 >>> 0)) >>> 0;
  48307. a = (((a << 7 >>> 0) | (a >>> 25 >>> 0)) >>> 0) + b >>> 0;
  48308. d = d + ((((((((((((b ^ c) >>> 0)) & a) >>> 0)) ^ c) >>> 0)) + (X.nilCheck, X[13]) >>> 0) + 4254626195 >>> 0)) >>> 0;
  48309. d = (((d << 12 >>> 0) | (d >>> 20 >>> 0)) >>> 0) + a >>> 0;
  48310. c = c + ((((((((((((a ^ b) >>> 0)) & d) >>> 0)) ^ b) >>> 0)) + (X.nilCheck, X[14]) >>> 0) + 2792965006 >>> 0)) >>> 0;
  48311. c = (((c << 17 >>> 0) | (c >>> 15 >>> 0)) >>> 0) + d >>> 0;
  48312. b = b + ((((((((((((d ^ a) >>> 0)) & c) >>> 0)) ^ a) >>> 0)) + (X.nilCheck, X[15]) >>> 0) + 1236535329 >>> 0)) >>> 0;
  48313. b = (((b << 22 >>> 0) | (b >>> 10 >>> 0)) >>> 0) + c >>> 0;
  48314. a = a + ((((((((((((b ^ c) >>> 0)) & d) >>> 0)) ^ c) >>> 0)) + (X.nilCheck, X[1]) >>> 0) + 4129170786 >>> 0)) >>> 0;
  48315. a = (((a << 5 >>> 0) | (a >>> 27 >>> 0)) >>> 0) + b >>> 0;
  48316. d = d + ((((((((((((a ^ b) >>> 0)) & c) >>> 0)) ^ b) >>> 0)) + (X.nilCheck, X[6]) >>> 0) + 3225465664 >>> 0)) >>> 0;
  48317. d = (((d << 9 >>> 0) | (d >>> 23 >>> 0)) >>> 0) + a >>> 0;
  48318. c = c + ((((((((((((d ^ a) >>> 0)) & b) >>> 0)) ^ a) >>> 0)) + (X.nilCheck, X[11]) >>> 0) + 643717713 >>> 0)) >>> 0;
  48319. c = (((c << 14 >>> 0) | (c >>> 18 >>> 0)) >>> 0) + d >>> 0;
  48320. b = b + ((((((((((((c ^ d) >>> 0)) & a) >>> 0)) ^ d) >>> 0)) + (X.nilCheck, X[0]) >>> 0) + 3921069994 >>> 0)) >>> 0;
  48321. b = (((b << 20 >>> 0) | (b >>> 12 >>> 0)) >>> 0) + c >>> 0;
  48322. a = a + ((((((((((((b ^ c) >>> 0)) & d) >>> 0)) ^ c) >>> 0)) + (X.nilCheck, X[5]) >>> 0) + 3593408605 >>> 0)) >>> 0;
  48323. a = (((a << 5 >>> 0) | (a >>> 27 >>> 0)) >>> 0) + b >>> 0;
  48324. d = d + ((((((((((((a ^ b) >>> 0)) & c) >>> 0)) ^ b) >>> 0)) + (X.nilCheck, X[10]) >>> 0) + 38016083 >>> 0)) >>> 0;
  48325. d = (((d << 9 >>> 0) | (d >>> 23 >>> 0)) >>> 0) + a >>> 0;
  48326. c = c + ((((((((((((d ^ a) >>> 0)) & b) >>> 0)) ^ a) >>> 0)) + (X.nilCheck, X[15]) >>> 0) + 3634488961 >>> 0)) >>> 0;
  48327. c = (((c << 14 >>> 0) | (c >>> 18 >>> 0)) >>> 0) + d >>> 0;
  48328. b = b + ((((((((((((c ^ d) >>> 0)) & a) >>> 0)) ^ d) >>> 0)) + (X.nilCheck, X[4]) >>> 0) + 3889429448 >>> 0)) >>> 0;
  48329. b = (((b << 20 >>> 0) | (b >>> 12 >>> 0)) >>> 0) + c >>> 0;
  48330. a = a + ((((((((((((b ^ c) >>> 0)) & d) >>> 0)) ^ c) >>> 0)) + (X.nilCheck, X[9]) >>> 0) + 568446438 >>> 0)) >>> 0;
  48331. a = (((a << 5 >>> 0) | (a >>> 27 >>> 0)) >>> 0) + b >>> 0;
  48332. d = d + ((((((((((((a ^ b) >>> 0)) & c) >>> 0)) ^ b) >>> 0)) + (X.nilCheck, X[14]) >>> 0) + 3275163606 >>> 0)) >>> 0;
  48333. d = (((d << 9 >>> 0) | (d >>> 23 >>> 0)) >>> 0) + a >>> 0;
  48334. c = c + ((((((((((((d ^ a) >>> 0)) & b) >>> 0)) ^ a) >>> 0)) + (X.nilCheck, X[3]) >>> 0) + 4107603335 >>> 0)) >>> 0;
  48335. c = (((c << 14 >>> 0) | (c >>> 18 >>> 0)) >>> 0) + d >>> 0;
  48336. b = b + ((((((((((((c ^ d) >>> 0)) & a) >>> 0)) ^ d) >>> 0)) + (X.nilCheck, X[8]) >>> 0) + 1163531501 >>> 0)) >>> 0;
  48337. b = (((b << 20 >>> 0) | (b >>> 12 >>> 0)) >>> 0) + c >>> 0;
  48338. a = a + ((((((((((((b ^ c) >>> 0)) & d) >>> 0)) ^ c) >>> 0)) + (X.nilCheck, X[13]) >>> 0) + 2850285829 >>> 0)) >>> 0;
  48339. a = (((a << 5 >>> 0) | (a >>> 27 >>> 0)) >>> 0) + b >>> 0;
  48340. d = d + ((((((((((((a ^ b) >>> 0)) & c) >>> 0)) ^ b) >>> 0)) + (X.nilCheck, X[2]) >>> 0) + 4243563512 >>> 0)) >>> 0;
  48341. d = (((d << 9 >>> 0) | (d >>> 23 >>> 0)) >>> 0) + a >>> 0;
  48342. c = c + ((((((((((((d ^ a) >>> 0)) & b) >>> 0)) ^ a) >>> 0)) + (X.nilCheck, X[7]) >>> 0) + 1735328473 >>> 0)) >>> 0;
  48343. c = (((c << 14 >>> 0) | (c >>> 18 >>> 0)) >>> 0) + d >>> 0;
  48344. b = b + ((((((((((((c ^ d) >>> 0)) & a) >>> 0)) ^ d) >>> 0)) + (X.nilCheck, X[12]) >>> 0) + 2368359562 >>> 0)) >>> 0;
  48345. b = (((b << 20 >>> 0) | (b >>> 12 >>> 0)) >>> 0) + c >>> 0;
  48346. a = a + ((((((((b ^ c) >>> 0) ^ d) >>> 0)) + (X.nilCheck, X[5]) >>> 0) + 4294588738 >>> 0)) >>> 0;
  48347. a = (((a << 4 >>> 0) | (a >>> 28 >>> 0)) >>> 0) + b >>> 0;
  48348. d = d + ((((((((a ^ b) >>> 0) ^ c) >>> 0)) + (X.nilCheck, X[8]) >>> 0) + 2272392833 >>> 0)) >>> 0;
  48349. d = (((d << 11 >>> 0) | (d >>> 21 >>> 0)) >>> 0) + a >>> 0;
  48350. c = c + ((((((((d ^ a) >>> 0) ^ b) >>> 0)) + (X.nilCheck, X[11]) >>> 0) + 1839030562 >>> 0)) >>> 0;
  48351. c = (((c << 16 >>> 0) | (c >>> 16 >>> 0)) >>> 0) + d >>> 0;
  48352. b = b + ((((((((c ^ d) >>> 0) ^ a) >>> 0)) + (X.nilCheck, X[14]) >>> 0) + 4259657740 >>> 0)) >>> 0;
  48353. b = (((b << 23 >>> 0) | (b >>> 9 >>> 0)) >>> 0) + c >>> 0;
  48354. a = a + ((((((((b ^ c) >>> 0) ^ d) >>> 0)) + (X.nilCheck, X[1]) >>> 0) + 2763975236 >>> 0)) >>> 0;
  48355. a = (((a << 4 >>> 0) | (a >>> 28 >>> 0)) >>> 0) + b >>> 0;
  48356. d = d + ((((((((a ^ b) >>> 0) ^ c) >>> 0)) + (X.nilCheck, X[4]) >>> 0) + 1272893353 >>> 0)) >>> 0;
  48357. d = (((d << 11 >>> 0) | (d >>> 21 >>> 0)) >>> 0) + a >>> 0;
  48358. c = c + ((((((((d ^ a) >>> 0) ^ b) >>> 0)) + (X.nilCheck, X[7]) >>> 0) + 4139469664 >>> 0)) >>> 0;
  48359. c = (((c << 16 >>> 0) | (c >>> 16 >>> 0)) >>> 0) + d >>> 0;
  48360. b = b + ((((((((c ^ d) >>> 0) ^ a) >>> 0)) + (X.nilCheck, X[10]) >>> 0) + 3200236656 >>> 0)) >>> 0;
  48361. b = (((b << 23 >>> 0) | (b >>> 9 >>> 0)) >>> 0) + c >>> 0;
  48362. a = a + ((((((((b ^ c) >>> 0) ^ d) >>> 0)) + (X.nilCheck, X[13]) >>> 0) + 681279174 >>> 0)) >>> 0;
  48363. a = (((a << 4 >>> 0) | (a >>> 28 >>> 0)) >>> 0) + b >>> 0;
  48364. d = d + ((((((((a ^ b) >>> 0) ^ c) >>> 0)) + (X.nilCheck, X[0]) >>> 0) + 3936430074 >>> 0)) >>> 0;
  48365. d = (((d << 11 >>> 0) | (d >>> 21 >>> 0)) >>> 0) + a >>> 0;
  48366. c = c + ((((((((d ^ a) >>> 0) ^ b) >>> 0)) + (X.nilCheck, X[3]) >>> 0) + 3572445317 >>> 0)) >>> 0;
  48367. c = (((c << 16 >>> 0) | (c >>> 16 >>> 0)) >>> 0) + d >>> 0;
  48368. b = b + ((((((((c ^ d) >>> 0) ^ a) >>> 0)) + (X.nilCheck, X[6]) >>> 0) + 76029189 >>> 0)) >>> 0;
  48369. b = (((b << 23 >>> 0) | (b >>> 9 >>> 0)) >>> 0) + c >>> 0;
  48370. a = a + ((((((((b ^ c) >>> 0) ^ d) >>> 0)) + (X.nilCheck, X[9]) >>> 0) + 3654602809 >>> 0)) >>> 0;
  48371. a = (((a << 4 >>> 0) | (a >>> 28 >>> 0)) >>> 0) + b >>> 0;
  48372. d = d + ((((((((a ^ b) >>> 0) ^ c) >>> 0)) + (X.nilCheck, X[12]) >>> 0) + 3873151461 >>> 0)) >>> 0;
  48373. d = (((d << 11 >>> 0) | (d >>> 21 >>> 0)) >>> 0) + a >>> 0;
  48374. c = c + ((((((((d ^ a) >>> 0) ^ b) >>> 0)) + (X.nilCheck, X[15]) >>> 0) + 530742520 >>> 0)) >>> 0;
  48375. c = (((c << 16 >>> 0) | (c >>> 16 >>> 0)) >>> 0) + d >>> 0;
  48376. b = b + ((((((((c ^ d) >>> 0) ^ a) >>> 0)) + (X.nilCheck, X[2]) >>> 0) + 3299628645 >>> 0)) >>> 0;
  48377. b = (((b << 23 >>> 0) | (b >>> 9 >>> 0)) >>> 0) + c >>> 0;
  48378. a = a + ((((((c ^ (((b | (~d >>> 0)) >>> 0))) >>> 0)) + (X.nilCheck, X[0]) >>> 0) + 4096336452 >>> 0)) >>> 0;
  48379. a = (((a << 6 >>> 0) | (a >>> 26 >>> 0)) >>> 0) + b >>> 0;
  48380. d = d + ((((((b ^ (((a | (~c >>> 0)) >>> 0))) >>> 0)) + (X.nilCheck, X[7]) >>> 0) + 1126891415 >>> 0)) >>> 0;
  48381. d = (((d << 10 >>> 0) | (d >>> 22 >>> 0)) >>> 0) + a >>> 0;
  48382. c = c + ((((((a ^ (((d | (~b >>> 0)) >>> 0))) >>> 0)) + (X.nilCheck, X[14]) >>> 0) + 2878612391 >>> 0)) >>> 0;
  48383. c = (((c << 15 >>> 0) | (c >>> 17 >>> 0)) >>> 0) + d >>> 0;
  48384. b = b + ((((((d ^ (((c | (~a >>> 0)) >>> 0))) >>> 0)) + (X.nilCheck, X[5]) >>> 0) + 4237533241 >>> 0)) >>> 0;
  48385. b = (((b << 21 >>> 0) | (b >>> 11 >>> 0)) >>> 0) + c >>> 0;
  48386. a = a + ((((((c ^ (((b | (~d >>> 0)) >>> 0))) >>> 0)) + (X.nilCheck, X[12]) >>> 0) + 1700485571 >>> 0)) >>> 0;
  48387. a = (((a << 6 >>> 0) | (a >>> 26 >>> 0)) >>> 0) + b >>> 0;
  48388. d = d + ((((((b ^ (((a | (~c >>> 0)) >>> 0))) >>> 0)) + (X.nilCheck, X[3]) >>> 0) + 2399980690 >>> 0)) >>> 0;
  48389. d = (((d << 10 >>> 0) | (d >>> 22 >>> 0)) >>> 0) + a >>> 0;
  48390. c = c + ((((((a ^ (((d | (~b >>> 0)) >>> 0))) >>> 0)) + (X.nilCheck, X[10]) >>> 0) + 4293915773 >>> 0)) >>> 0;
  48391. c = (((c << 15 >>> 0) | (c >>> 17 >>> 0)) >>> 0) + d >>> 0;
  48392. b = b + ((((((d ^ (((c | (~a >>> 0)) >>> 0))) >>> 0)) + (X.nilCheck, X[1]) >>> 0) + 2240044497 >>> 0)) >>> 0;
  48393. b = (((b << 21 >>> 0) | (b >>> 11 >>> 0)) >>> 0) + c >>> 0;
  48394. a = a + ((((((c ^ (((b | (~d >>> 0)) >>> 0))) >>> 0)) + (X.nilCheck, X[8]) >>> 0) + 1873313359 >>> 0)) >>> 0;
  48395. a = (((a << 6 >>> 0) | (a >>> 26 >>> 0)) >>> 0) + b >>> 0;
  48396. d = d + ((((((b ^ (((a | (~c >>> 0)) >>> 0))) >>> 0)) + (X.nilCheck, X[15]) >>> 0) + 4264355552 >>> 0)) >>> 0;
  48397. d = (((d << 10 >>> 0) | (d >>> 22 >>> 0)) >>> 0) + a >>> 0;
  48398. c = c + ((((((a ^ (((d | (~b >>> 0)) >>> 0))) >>> 0)) + (X.nilCheck, X[6]) >>> 0) + 2734768916 >>> 0)) >>> 0;
  48399. c = (((c << 15 >>> 0) | (c >>> 17 >>> 0)) >>> 0) + d >>> 0;
  48400. b = b + ((((((d ^ (((c | (~a >>> 0)) >>> 0))) >>> 0)) + (X.nilCheck, X[13]) >>> 0) + 1309151649 >>> 0)) >>> 0;
  48401. b = (((b << 21 >>> 0) | (b >>> 11 >>> 0)) >>> 0) + c >>> 0;
  48402. a = a + ((((((c ^ (((b | (~d >>> 0)) >>> 0))) >>> 0)) + (X.nilCheck, X[4]) >>> 0) + 4149444226 >>> 0)) >>> 0;
  48403. a = (((a << 6 >>> 0) | (a >>> 26 >>> 0)) >>> 0) + b >>> 0;
  48404. d = d + ((((((b ^ (((a | (~c >>> 0)) >>> 0))) >>> 0)) + (X.nilCheck, X[11]) >>> 0) + 3174756917 >>> 0)) >>> 0;
  48405. d = (((d << 10 >>> 0) | (d >>> 22 >>> 0)) >>> 0) + a >>> 0;
  48406. c = c + ((((((a ^ (((d | (~b >>> 0)) >>> 0))) >>> 0)) + (X.nilCheck, X[2]) >>> 0) + 718787259 >>> 0)) >>> 0;
  48407. c = (((c << 15 >>> 0) | (c >>> 17 >>> 0)) >>> 0) + d >>> 0;
  48408. b = b + ((((((d ^ (((c | (~a >>> 0)) >>> 0))) >>> 0)) + (X.nilCheck, X[9]) >>> 0) + 3951481745 >>> 0)) >>> 0;
  48409. b = (((b << 21 >>> 0) | (b >>> 11 >>> 0)) >>> 0) + c >>> 0;
  48410. a = a + (aa) >>> 0;
  48411. b = b + (bb) >>> 0;
  48412. c = c + (cc) >>> 0;
  48413. d = d + (dd) >>> 0;
  48414. p = $subslice(p, 64);
  48415. }
  48416. dig.s[0] = a;
  48417. dig.s[1] = b;
  48418. dig.s[2] = c;
  48419. dig.s[3] = d;
  48420. };
  48421. ptrType$1.methods = [{prop: "Reset", name: "Reset", pkg: "", typ: $funcType([], [], false)}, {prop: "Size", name: "Size", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "BlockSize", name: "BlockSize", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType], [$Int, $error], false)}, {prop: "Sum", name: "Sum", pkg: "", typ: $funcType([sliceType], [sliceType], false)}, {prop: "checkSum", name: "checkSum", pkg: "crypto/md5", typ: $funcType([], [arrayType], false)}];
  48422. digest.init([{prop: "s", name: "s", pkg: "crypto/md5", typ: arrayType$4, tag: ""}, {prop: "x", name: "x", pkg: "crypto/md5", typ: arrayType$1, tag: ""}, {prop: "nx", name: "nx", pkg: "crypto/md5", typ: $Int, tag: ""}, {prop: "len", name: "len", pkg: "crypto/md5", typ: $Uint64, tag: ""}]);
  48423. $init = function() {
  48424. $pkg.$init = function() {};
  48425. /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  48426. $r = crypto.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  48427. $r = hash.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  48428. $r = runtime.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  48429. littleEndian = false;
  48430. block = blockGeneric;
  48431. init();
  48432. init$1();
  48433. /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
  48434. };
  48435. $pkg.$init = $init;
  48436. return $pkg;
  48437. })();
  48438. $packages["crypto/rand"] = (function() {
  48439. var $pkg = {}, $init, errors, nosync, io, big, os, syscall, rngReader, sliceType, ptrType, ptrType$1, ptrType$2, ptrType$3, ptrType$4, smallPrimesProduct, init, Int;
  48440. errors = $packages["errors"];
  48441. nosync = $packages["github.com/gopherjs/gopherjs/nosync"];
  48442. io = $packages["io"];
  48443. big = $packages["math/big"];
  48444. os = $packages["os"];
  48445. syscall = $packages["syscall"];
  48446. rngReader = $pkg.rngReader = $newType(0, $kindStruct, "rand.rngReader", "rngReader", "crypto/rand", function(prov_, mu_) {
  48447. this.$val = this;
  48448. if (arguments.length === 0) {
  48449. this.prov = 0;
  48450. this.mu = new nosync.Mutex.ptr();
  48451. return;
  48452. }
  48453. this.prov = prov_;
  48454. this.mu = mu_;
  48455. });
  48456. sliceType = $sliceType($Uint8);
  48457. ptrType = $ptrType(syscall.Handle);
  48458. ptrType$1 = $ptrType($Uint16);
  48459. ptrType$2 = $ptrType($Uint8);
  48460. ptrType$3 = $ptrType(big.Int);
  48461. ptrType$4 = $ptrType(rngReader);
  48462. init = function() {
  48463. var $ptr;
  48464. $pkg.Reader = new rngReader.ptr(0, new nosync.Mutex.ptr());
  48465. };
  48466. rngReader.ptr.prototype.Read = function(b) {
  48467. var $ptr, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, b, err, err$1, n, r;
  48468. n = 0;
  48469. err = $ifaceNil;
  48470. r = this;
  48471. r.mu.Lock();
  48472. if (r.prov === 0) {
  48473. err$1 = syscall.CryptAcquireContext((r.$ptr_prov || (r.$ptr_prov = new ptrType(function() { return this.$target.prov; }, function($v) { this.$target.prov = $v; }, r))), ptrType$1.nil, ptrType$1.nil, 1, 4026531904);
  48474. if (!($interfaceIsEqual(err$1, $ifaceNil))) {
  48475. r.mu.Unlock();
  48476. _tmp = 0; _tmp$1 = os.NewSyscallError("CryptAcquireContext", err$1); n = _tmp; err = _tmp$1;
  48477. return [n, err];
  48478. }
  48479. }
  48480. r.mu.Unlock();
  48481. if (b.$length === 0) {
  48482. _tmp$2 = 0; _tmp$3 = $ifaceNil; n = _tmp$2; err = _tmp$3;
  48483. return [n, err];
  48484. }
  48485. err = syscall.CryptGenRandom(r.prov, (b.$length >>> 0), $indexPtr(b.$array, b.$offset + 0, ptrType$2));
  48486. if (!($interfaceIsEqual(err, $ifaceNil))) {
  48487. _tmp$4 = 0; _tmp$5 = os.NewSyscallError("CryptGenRandom", err); n = _tmp$4; err = _tmp$5;
  48488. return [n, err];
  48489. }
  48490. _tmp$6 = b.$length; _tmp$7 = $ifaceNil; n = _tmp$6; err = _tmp$7;
  48491. return [n, err];
  48492. };
  48493. rngReader.prototype.Read = function(b) { return this.$val.Read(b); };
  48494. Int = function(rand, max) {
  48495. var $ptr, _q, _r, _r$1, _tmp, _tmp$1, _tuple, b, bytes, err, k, max, n, rand, y, $s, $r;
  48496. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _q = $f._q; _r = $f._r; _r$1 = $f._r$1; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; b = $f.b; bytes = $f.bytes; err = $f.err; k = $f.k; max = $f.max; n = $f.n; rand = $f.rand; y = $f.y; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  48497. n = ptrType$3.nil;
  48498. err = $ifaceNil;
  48499. if (max.Sign() <= 0) {
  48500. $panic(new $String("crypto/rand: argument to Int is <= 0"));
  48501. }
  48502. k = (_q = ((max.BitLen() + 7 >> 0)) / 8, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero"));
  48503. b = ((_r = max.BitLen() % 8, _r === _r ? _r : $throwRuntimeError("integer divide by zero")) >>> 0);
  48504. if (b === 0) {
  48505. b = 8;
  48506. }
  48507. bytes = $makeSlice(sliceType, k);
  48508. n = new big.Int.ptr();
  48509. /* while (true) { */ case 1:
  48510. _r$1 = io.ReadFull(rand, bytes); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  48511. _tuple = _r$1; err = _tuple[1];
  48512. if (!($interfaceIsEqual(err, $ifaceNil))) {
  48513. _tmp = ptrType$3.nil; _tmp$1 = err; n = _tmp; err = _tmp$1;
  48514. return [n, err];
  48515. }
  48516. (0 >= bytes.$length ? $throwRuntimeError("index out of range") : bytes.$array[bytes.$offset + 0] = ((0 >= bytes.$length ? $throwRuntimeError("index out of range") : bytes.$array[bytes.$offset + 0]) & (((((y = b, y < 32 ? (1 << y) : 0) >> 0) - 1 >> 0) << 24 >>> 24))) >>> 0);
  48517. n.SetBytes(bytes);
  48518. if (n.Cmp(max) < 0) {
  48519. return [n, err];
  48520. }
  48521. /* } */ $s = 1; continue; case 2:
  48522. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Int }; } $f.$ptr = $ptr; $f._q = _q; $f._r = _r; $f._r$1 = _r$1; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f.b = b; $f.bytes = bytes; $f.err = err; $f.k = k; $f.max = max; $f.n = n; $f.rand = rand; $f.y = y; $f.$s = $s; $f.$r = $r; return $f;
  48523. };
  48524. $pkg.Int = Int;
  48525. ptrType$4.methods = [{prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType], [$Int, $error], false)}];
  48526. rngReader.init([{prop: "prov", name: "prov", pkg: "crypto/rand", typ: syscall.Handle, tag: ""}, {prop: "mu", name: "mu", pkg: "crypto/rand", typ: nosync.Mutex, tag: ""}]);
  48527. $init = function() {
  48528. $pkg.$init = function() {};
  48529. /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  48530. $r = errors.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  48531. $r = nosync.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  48532. $r = io.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  48533. $r = big.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  48534. $r = os.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  48535. $r = syscall.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  48536. $pkg.Reader = $ifaceNil;
  48537. smallPrimesProduct = new big.Int.ptr().SetUint64(new $Uint64(3793877372, 820596253));
  48538. init();
  48539. /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
  48540. };
  48541. $pkg.$init = $init;
  48542. return $pkg;
  48543. })();
  48544. $packages["crypto/rc4"] = (function() {
  48545. var $pkg = {}, $init, strconv, Cipher, KeySizeError, ptrType, arrayType, sliceType, NewCipher;
  48546. strconv = $packages["strconv"];
  48547. Cipher = $pkg.Cipher = $newType(0, $kindStruct, "rc4.Cipher", "Cipher", "crypto/rc4", function(s_, i_, j_) {
  48548. this.$val = this;
  48549. if (arguments.length === 0) {
  48550. this.s = arrayType.zero();
  48551. this.i = 0;
  48552. this.j = 0;
  48553. return;
  48554. }
  48555. this.s = s_;
  48556. this.i = i_;
  48557. this.j = j_;
  48558. });
  48559. KeySizeError = $pkg.KeySizeError = $newType(4, $kindInt, "rc4.KeySizeError", "KeySizeError", "crypto/rc4", null);
  48560. ptrType = $ptrType(Cipher);
  48561. arrayType = $arrayType($Uint32, 256);
  48562. sliceType = $sliceType($Uint8);
  48563. KeySizeError.prototype.Error = function() {
  48564. var $ptr, k;
  48565. k = this.$val;
  48566. return "crypto/rc4: invalid key size " + strconv.Itoa((k >> 0));
  48567. };
  48568. $ptrType(KeySizeError).prototype.Error = function() { return new KeySizeError(this.$get()).Error(); };
  48569. NewCipher = function(key) {
  48570. var $ptr, _r, _tmp, _tmp$1, c, i, i$1, j, k, key, x, x$1, x$2, x$3, x$4, x$5, x$6;
  48571. k = key.$length;
  48572. if (k < 1 || k > 256) {
  48573. return [ptrType.nil, new KeySizeError((k >> 0))];
  48574. }
  48575. c = $clone(new Cipher.ptr(), Cipher);
  48576. i = 0;
  48577. while (true) {
  48578. if (!(i < 256)) { break; }
  48579. (x = c.s, ((i < 0 || i >= x.length) ? $throwRuntimeError("index out of range") : x[i] = (i >>> 0)));
  48580. i = i + (1) >> 0;
  48581. }
  48582. j = 0;
  48583. i$1 = 0;
  48584. while (true) {
  48585. if (!(i$1 < 256)) { break; }
  48586. j = j + ((((x$1 = c.s, ((i$1 < 0 || i$1 >= x$1.length) ? $throwRuntimeError("index out of range") : x$1[i$1])) << 24 >>> 24) + (x$2 = (_r = i$1 % k, _r === _r ? _r : $throwRuntimeError("integer divide by zero")), ((x$2 < 0 || x$2 >= key.$length) ? $throwRuntimeError("index out of range") : key.$array[key.$offset + x$2])) << 24 >>> 24)) << 24 >>> 24;
  48587. _tmp = (x$3 = c.s, ((j < 0 || j >= x$3.length) ? $throwRuntimeError("index out of range") : x$3[j])); _tmp$1 = (x$4 = c.s, ((i$1 < 0 || i$1 >= x$4.length) ? $throwRuntimeError("index out of range") : x$4[i$1])); (x$5 = c.s, ((i$1 < 0 || i$1 >= x$5.length) ? $throwRuntimeError("index out of range") : x$5[i$1] = _tmp)); (x$6 = c.s, ((j < 0 || j >= x$6.length) ? $throwRuntimeError("index out of range") : x$6[j] = _tmp$1));
  48588. i$1 = i$1 + (1) >> 0;
  48589. }
  48590. return [c, $ifaceNil];
  48591. };
  48592. $pkg.NewCipher = NewCipher;
  48593. Cipher.ptr.prototype.Reset = function() {
  48594. var $ptr, _i, _ref, _tmp, _tmp$1, c, i, x;
  48595. c = this;
  48596. _ref = c.s;
  48597. _i = 0;
  48598. while (true) {
  48599. if (!(_i < 256)) { break; }
  48600. i = _i;
  48601. (x = c.s, ((i < 0 || i >= x.length) ? $throwRuntimeError("index out of range") : x[i] = 0));
  48602. _i++;
  48603. }
  48604. _tmp = 0; _tmp$1 = 0; c.i = _tmp; c.j = _tmp$1;
  48605. };
  48606. Cipher.prototype.Reset = function() { return this.$val.Reset(); };
  48607. Cipher.ptr.prototype.xorKeyStreamGeneric = function(dst, src) {
  48608. var $ptr, _i, _ref, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, c, dst, i, j, k, src, v, x, x$1, x$2, x$3, x$4, x$5, x$6, x$7, x$8;
  48609. c = this;
  48610. _tmp = c.i; _tmp$1 = c.j; i = _tmp; j = _tmp$1;
  48611. _ref = src;
  48612. _i = 0;
  48613. while (true) {
  48614. if (!(_i < _ref.$length)) { break; }
  48615. k = _i;
  48616. v = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]);
  48617. i = i + (1) << 24 >>> 24;
  48618. j = j + (((x = c.s, ((i < 0 || i >= x.length) ? $throwRuntimeError("index out of range") : x[i])) << 24 >>> 24)) << 24 >>> 24;
  48619. _tmp$2 = (x$1 = c.s, ((j < 0 || j >= x$1.length) ? $throwRuntimeError("index out of range") : x$1[j])); _tmp$3 = (x$2 = c.s, ((i < 0 || i >= x$2.length) ? $throwRuntimeError("index out of range") : x$2[i])); (x$3 = c.s, ((i < 0 || i >= x$3.length) ? $throwRuntimeError("index out of range") : x$3[i] = _tmp$2)); (x$4 = c.s, ((j < 0 || j >= x$4.length) ? $throwRuntimeError("index out of range") : x$4[j] = _tmp$3));
  48620. ((k < 0 || k >= dst.$length) ? $throwRuntimeError("index out of range") : dst.$array[dst.$offset + k] = (v ^ ((x$5 = c.s, x$6 = (((x$7 = c.s, ((i < 0 || i >= x$7.length) ? $throwRuntimeError("index out of range") : x$7[i])) + (x$8 = c.s, ((j < 0 || j >= x$8.length) ? $throwRuntimeError("index out of range") : x$8[j])) >>> 0) << 24 >>> 24), ((x$6 < 0 || x$6 >= x$5.length) ? $throwRuntimeError("index out of range") : x$5[x$6])) << 24 >>> 24)) << 24 >>> 24);
  48621. _i++;
  48622. }
  48623. _tmp$4 = i; _tmp$5 = j; c.i = _tmp$4; c.j = _tmp$5;
  48624. };
  48625. Cipher.prototype.xorKeyStreamGeneric = function(dst, src) { return this.$val.xorKeyStreamGeneric(dst, src); };
  48626. Cipher.ptr.prototype.XORKeyStream = function(dst, src) {
  48627. var $ptr, c, dst, src;
  48628. c = this;
  48629. c.xorKeyStreamGeneric(dst, src);
  48630. };
  48631. Cipher.prototype.XORKeyStream = function(dst, src) { return this.$val.XORKeyStream(dst, src); };
  48632. ptrType.methods = [{prop: "Reset", name: "Reset", pkg: "", typ: $funcType([], [], false)}, {prop: "xorKeyStreamGeneric", name: "xorKeyStreamGeneric", pkg: "crypto/rc4", typ: $funcType([sliceType, sliceType], [], false)}, {prop: "XORKeyStream", name: "XORKeyStream", pkg: "", typ: $funcType([sliceType, sliceType], [], false)}];
  48633. KeySizeError.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}];
  48634. Cipher.init([{prop: "s", name: "s", pkg: "crypto/rc4", typ: arrayType, tag: ""}, {prop: "i", name: "i", pkg: "crypto/rc4", typ: $Uint8, tag: ""}, {prop: "j", name: "j", pkg: "crypto/rc4", typ: $Uint8, tag: ""}]);
  48635. $init = function() {
  48636. $pkg.$init = function() {};
  48637. /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  48638. $r = strconv.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  48639. /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
  48640. };
  48641. $pkg.$init = $init;
  48642. return $pkg;
  48643. })();
  48644. $packages["crypto/rsa"] = (function() {
  48645. var $pkg = {}, $init, bytes, crypto, rand, subtle, errors, hash, io, big, PSSOptions, PublicKey, PrivateKey, PrecomputedValues, CRTValue, sliceType, arrayType, ptrType, ptrType$1, ptrType$2, sliceType$1, arrayType$1, sliceType$2, hashPrefixes, bigZero, bigOne, errPublicModulus, errPublicExponentSmall, errPublicExponentLarge, _map, _key, EncryptPKCS1v15, DecryptPKCS1v15SessionKey, decryptPKCS1v15, nonZeroRandomBytes, SignPKCS1v15, VerifyPKCS1v15, pkcs1v15HashInfo, copyWithLeftPad, emsaPSSEncode, signPSSWithSalt, SignPSS, checkPub, incCounter, mgf1XOR, encrypt, modInverse, decrypt, leftPad;
  48646. bytes = $packages["bytes"];
  48647. crypto = $packages["crypto"];
  48648. rand = $packages["crypto/rand"];
  48649. subtle = $packages["crypto/subtle"];
  48650. errors = $packages["errors"];
  48651. hash = $packages["hash"];
  48652. io = $packages["io"];
  48653. big = $packages["math/big"];
  48654. PSSOptions = $pkg.PSSOptions = $newType(0, $kindStruct, "rsa.PSSOptions", "PSSOptions", "crypto/rsa", function(SaltLength_, Hash_) {
  48655. this.$val = this;
  48656. if (arguments.length === 0) {
  48657. this.SaltLength = 0;
  48658. this.Hash = 0;
  48659. return;
  48660. }
  48661. this.SaltLength = SaltLength_;
  48662. this.Hash = Hash_;
  48663. });
  48664. PublicKey = $pkg.PublicKey = $newType(0, $kindStruct, "rsa.PublicKey", "PublicKey", "crypto/rsa", function(N_, E_) {
  48665. this.$val = this;
  48666. if (arguments.length === 0) {
  48667. this.N = ptrType$1.nil;
  48668. this.E = 0;
  48669. return;
  48670. }
  48671. this.N = N_;
  48672. this.E = E_;
  48673. });
  48674. PrivateKey = $pkg.PrivateKey = $newType(0, $kindStruct, "rsa.PrivateKey", "PrivateKey", "crypto/rsa", function(PublicKey_, D_, Primes_, Precomputed_) {
  48675. this.$val = this;
  48676. if (arguments.length === 0) {
  48677. this.PublicKey = new PublicKey.ptr();
  48678. this.D = ptrType$1.nil;
  48679. this.Primes = sliceType$1.nil;
  48680. this.Precomputed = new PrecomputedValues.ptr();
  48681. return;
  48682. }
  48683. this.PublicKey = PublicKey_;
  48684. this.D = D_;
  48685. this.Primes = Primes_;
  48686. this.Precomputed = Precomputed_;
  48687. });
  48688. PrecomputedValues = $pkg.PrecomputedValues = $newType(0, $kindStruct, "rsa.PrecomputedValues", "PrecomputedValues", "crypto/rsa", function(Dp_, Dq_, Qinv_, CRTValues_) {
  48689. this.$val = this;
  48690. if (arguments.length === 0) {
  48691. this.Dp = ptrType$1.nil;
  48692. this.Dq = ptrType$1.nil;
  48693. this.Qinv = ptrType$1.nil;
  48694. this.CRTValues = sliceType$2.nil;
  48695. return;
  48696. }
  48697. this.Dp = Dp_;
  48698. this.Dq = Dq_;
  48699. this.Qinv = Qinv_;
  48700. this.CRTValues = CRTValues_;
  48701. });
  48702. CRTValue = $pkg.CRTValue = $newType(0, $kindStruct, "rsa.CRTValue", "CRTValue", "crypto/rsa", function(Exp_, Coeff_, R_) {
  48703. this.$val = this;
  48704. if (arguments.length === 0) {
  48705. this.Exp = ptrType$1.nil;
  48706. this.Coeff = ptrType$1.nil;
  48707. this.R = ptrType$1.nil;
  48708. return;
  48709. }
  48710. this.Exp = Exp_;
  48711. this.Coeff = Coeff_;
  48712. this.R = R_;
  48713. });
  48714. sliceType = $sliceType($Uint8);
  48715. arrayType = $arrayType($Uint8, 8);
  48716. ptrType = $ptrType(PSSOptions);
  48717. ptrType$1 = $ptrType(big.Int);
  48718. ptrType$2 = $ptrType(PrivateKey);
  48719. sliceType$1 = $sliceType(ptrType$1);
  48720. arrayType$1 = $arrayType($Uint8, 4);
  48721. sliceType$2 = $sliceType(CRTValue);
  48722. EncryptPKCS1v15 = function(rand$1, pub, msg) {
  48723. var $ptr, _q, _r, _tmp, _tmp$1, _tmp$2, _tmp$3, c, em, err, err$1, k, m, mm, msg, out, ps, pub, rand$1, x, $s, $r;
  48724. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _q = $f._q; _r = $f._r; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; c = $f.c; em = $f.em; err = $f.err; err$1 = $f.err$1; k = $f.k; m = $f.m; mm = $f.mm; msg = $f.msg; out = $f.out; ps = $f.ps; pub = $f.pub; rand$1 = $f.rand$1; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  48725. out = sliceType.nil;
  48726. err = $ifaceNil;
  48727. err$1 = checkPub(pub);
  48728. if (!($interfaceIsEqual(err$1, $ifaceNil))) {
  48729. _tmp = sliceType.nil; _tmp$1 = err$1; out = _tmp; err = _tmp$1;
  48730. return [out, err];
  48731. }
  48732. k = (_q = ((pub.N.BitLen() + 7 >> 0)) / 8, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero"));
  48733. if (msg.$length > (k - 11 >> 0)) {
  48734. err = $pkg.ErrMessageTooLong;
  48735. return [out, err];
  48736. }
  48737. em = $makeSlice(sliceType, k);
  48738. (1 >= em.$length ? $throwRuntimeError("index out of range") : em.$array[em.$offset + 1] = 2);
  48739. _tmp$2 = $subslice(em, 2, ((em.$length - msg.$length >> 0) - 1 >> 0)); _tmp$3 = $subslice(em, (em.$length - msg.$length >> 0)); ps = _tmp$2; mm = _tmp$3;
  48740. _r = nonZeroRandomBytes(ps, rand$1); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  48741. err = _r;
  48742. if (!($interfaceIsEqual(err, $ifaceNil))) {
  48743. return [out, err];
  48744. }
  48745. (x = (em.$length - msg.$length >> 0) - 1 >> 0, ((x < 0 || x >= em.$length) ? $throwRuntimeError("index out of range") : em.$array[em.$offset + x] = 0));
  48746. $copySlice(mm, msg);
  48747. m = new big.Int.ptr().SetBytes(em);
  48748. c = encrypt(new big.Int.ptr(), pub, m);
  48749. copyWithLeftPad(em, c.Bytes());
  48750. out = em;
  48751. return [out, err];
  48752. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: EncryptPKCS1v15 }; } $f.$ptr = $ptr; $f._q = _q; $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f.c = c; $f.em = em; $f.err = err; $f.err$1 = err$1; $f.k = k; $f.m = m; $f.mm = mm; $f.msg = msg; $f.out = out; $f.ps = ps; $f.pub = pub; $f.rand$1 = rand$1; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
  48753. };
  48754. $pkg.EncryptPKCS1v15 = EncryptPKCS1v15;
  48755. DecryptPKCS1v15SessionKey = function(rand$1, priv, ciphertext, key) {
  48756. var $ptr, _q, _r, _tuple, ciphertext, em, err, err$1, index, k, key, priv, rand$1, valid, $s, $r;
  48757. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _q = $f._q; _r = $f._r; _tuple = $f._tuple; ciphertext = $f.ciphertext; em = $f.em; err = $f.err; err$1 = $f.err$1; index = $f.index; k = $f.k; key = $f.key; priv = $f.priv; rand$1 = $f.rand$1; valid = $f.valid; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  48758. err = $ifaceNil;
  48759. err$1 = checkPub(priv.PublicKey);
  48760. if (!($interfaceIsEqual(err$1, $ifaceNil))) {
  48761. err = err$1;
  48762. return err;
  48763. }
  48764. k = (_q = ((priv.PublicKey.N.BitLen() + 7 >> 0)) / 8, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero"));
  48765. if ((k - (((key.$length + 3 >> 0) + 8 >> 0)) >> 0) < 0) {
  48766. err = $pkg.ErrDecryption;
  48767. return err;
  48768. }
  48769. _r = decryptPKCS1v15(rand$1, priv, ciphertext); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  48770. _tuple = _r; valid = _tuple[0]; em = _tuple[1]; index = _tuple[2]; err = _tuple[3];
  48771. if (!($interfaceIsEqual(err, $ifaceNil))) {
  48772. return err;
  48773. }
  48774. if (!((em.$length === k))) {
  48775. err = $pkg.ErrDecryption;
  48776. return err;
  48777. }
  48778. valid = valid & (subtle.ConstantTimeEq(((em.$length - index >> 0) >> 0), (key.$length >> 0)));
  48779. subtle.ConstantTimeCopy(valid, key, $subslice(em, (em.$length - key.$length >> 0)));
  48780. return err;
  48781. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: DecryptPKCS1v15SessionKey }; } $f.$ptr = $ptr; $f._q = _q; $f._r = _r; $f._tuple = _tuple; $f.ciphertext = ciphertext; $f.em = em; $f.err = err; $f.err$1 = err$1; $f.index = index; $f.k = k; $f.key = key; $f.priv = priv; $f.rand$1 = rand$1; $f.valid = valid; $f.$s = $s; $f.$r = $r; return $f;
  48782. };
  48783. $pkg.DecryptPKCS1v15SessionKey = DecryptPKCS1v15SessionKey;
  48784. decryptPKCS1v15 = function(rand$1, priv, ciphertext) {
  48785. var $ptr, _q, _r, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, c, ciphertext, em, equals0, err, firstByteIsZero, i, index, k, lookingForIndex, m, priv, rand$1, secondByteIsTwo, valid, validPS, $s, $r;
  48786. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _q = $f._q; _r = $f._r; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tuple = $f._tuple; c = $f.c; ciphertext = $f.ciphertext; em = $f.em; equals0 = $f.equals0; err = $f.err; firstByteIsZero = $f.firstByteIsZero; i = $f.i; index = $f.index; k = $f.k; lookingForIndex = $f.lookingForIndex; m = $f.m; priv = $f.priv; rand$1 = $f.rand$1; secondByteIsTwo = $f.secondByteIsTwo; valid = $f.valid; validPS = $f.validPS; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  48787. valid = 0;
  48788. em = sliceType.nil;
  48789. index = 0;
  48790. err = $ifaceNil;
  48791. k = (_q = ((priv.PublicKey.N.BitLen() + 7 >> 0)) / 8, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero"));
  48792. if (k < 11) {
  48793. err = $pkg.ErrDecryption;
  48794. return [valid, em, index, err];
  48795. }
  48796. c = new big.Int.ptr().SetBytes(ciphertext);
  48797. _r = decrypt(rand$1, priv, c); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  48798. _tuple = _r; m = _tuple[0]; err = _tuple[1];
  48799. if (!($interfaceIsEqual(err, $ifaceNil))) {
  48800. return [valid, em, index, err];
  48801. }
  48802. em = leftPad(m.Bytes(), k);
  48803. firstByteIsZero = subtle.ConstantTimeByteEq((0 >= em.$length ? $throwRuntimeError("index out of range") : em.$array[em.$offset + 0]), 0);
  48804. secondByteIsTwo = subtle.ConstantTimeByteEq((1 >= em.$length ? $throwRuntimeError("index out of range") : em.$array[em.$offset + 1]), 2);
  48805. lookingForIndex = 1;
  48806. i = 2;
  48807. while (true) {
  48808. if (!(i < em.$length)) { break; }
  48809. equals0 = subtle.ConstantTimeByteEq(((i < 0 || i >= em.$length) ? $throwRuntimeError("index out of range") : em.$array[em.$offset + i]), 0);
  48810. index = subtle.ConstantTimeSelect(lookingForIndex & equals0, i, index);
  48811. lookingForIndex = subtle.ConstantTimeSelect(equals0, 0, lookingForIndex);
  48812. i = i + (1) >> 0;
  48813. }
  48814. validPS = subtle.ConstantTimeLessOrEq(10, index);
  48815. valid = ((firstByteIsZero & secondByteIsTwo) & (((~lookingForIndex >> 0) & 1))) & validPS;
  48816. index = subtle.ConstantTimeSelect(valid, index + 1 >> 0, 0);
  48817. _tmp = valid; _tmp$1 = em; _tmp$2 = index; _tmp$3 = $ifaceNil; valid = _tmp; em = _tmp$1; index = _tmp$2; err = _tmp$3;
  48818. return [valid, em, index, err];
  48819. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: decryptPKCS1v15 }; } $f.$ptr = $ptr; $f._q = _q; $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tuple = _tuple; $f.c = c; $f.ciphertext = ciphertext; $f.em = em; $f.equals0 = equals0; $f.err = err; $f.firstByteIsZero = firstByteIsZero; $f.i = i; $f.index = index; $f.k = k; $f.lookingForIndex = lookingForIndex; $f.m = m; $f.priv = priv; $f.rand$1 = rand$1; $f.secondByteIsTwo = secondByteIsTwo; $f.valid = valid; $f.validPS = validPS; $f.$s = $s; $f.$r = $r; return $f;
  48820. };
  48821. nonZeroRandomBytes = function(s, rand$1) {
  48822. var $ptr, _r, _r$1, _tuple, _tuple$1, err, i, rand$1, s, $s, $r;
  48823. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; err = $f.err; i = $f.i; rand$1 = $f.rand$1; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  48824. err = $ifaceNil;
  48825. _r = io.ReadFull(rand$1, s); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  48826. _tuple = _r; err = _tuple[1];
  48827. if (!($interfaceIsEqual(err, $ifaceNil))) {
  48828. return err;
  48829. }
  48830. i = 0;
  48831. /* while (true) { */ case 2:
  48832. /* if (!(i < s.$length)) { break; } */ if(!(i < s.$length)) { $s = 3; continue; }
  48833. /* while (true) { */ case 4:
  48834. /* if (!(((i < 0 || i >= s.$length) ? $throwRuntimeError("index out of range") : s.$array[s.$offset + i]) === 0)) { break; } */ if(!(((i < 0 || i >= s.$length) ? $throwRuntimeError("index out of range") : s.$array[s.$offset + i]) === 0)) { $s = 5; continue; }
  48835. _r$1 = io.ReadFull(rand$1, $subslice(s, i, (i + 1 >> 0))); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  48836. _tuple$1 = _r$1; err = _tuple$1[1];
  48837. if (!($interfaceIsEqual(err, $ifaceNil))) {
  48838. return err;
  48839. }
  48840. ((i < 0 || i >= s.$length) ? $throwRuntimeError("index out of range") : s.$array[s.$offset + i] = (((i < 0 || i >= s.$length) ? $throwRuntimeError("index out of range") : s.$array[s.$offset + i]) ^ (66)) << 24 >>> 24);
  48841. /* } */ $s = 4; continue; case 5:
  48842. i = i + (1) >> 0;
  48843. /* } */ $s = 2; continue; case 3:
  48844. return err;
  48845. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: nonZeroRandomBytes }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.err = err; $f.i = i; $f.rand$1 = rand$1; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
  48846. };
  48847. SignPKCS1v15 = function(rand$1, priv, hash$1, hashed) {
  48848. var $ptr, _q, _r, _tmp, _tmp$1, _tuple, _tuple$1, c, em, err, hash$1, hashLen, hashed, i, k, m, prefix, priv, rand$1, s, tLen, $s, $r;
  48849. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _q = $f._q; _r = $f._r; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; c = $f.c; em = $f.em; err = $f.err; hash$1 = $f.hash$1; hashLen = $f.hashLen; hashed = $f.hashed; i = $f.i; k = $f.k; m = $f.m; prefix = $f.prefix; priv = $f.priv; rand$1 = $f.rand$1; s = $f.s; tLen = $f.tLen; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  48850. s = sliceType.nil;
  48851. err = $ifaceNil;
  48852. _tuple = pkcs1v15HashInfo(hash$1, hashed.$length); hashLen = _tuple[0]; prefix = _tuple[1]; err = _tuple[2];
  48853. if (!($interfaceIsEqual(err, $ifaceNil))) {
  48854. return [s, err];
  48855. }
  48856. tLen = prefix.$length + hashLen >> 0;
  48857. k = (_q = ((priv.PublicKey.N.BitLen() + 7 >> 0)) / 8, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero"));
  48858. if (k < (tLen + 11 >> 0)) {
  48859. _tmp = sliceType.nil; _tmp$1 = $pkg.ErrMessageTooLong; s = _tmp; err = _tmp$1;
  48860. return [s, err];
  48861. }
  48862. em = $makeSlice(sliceType, k);
  48863. (1 >= em.$length ? $throwRuntimeError("index out of range") : em.$array[em.$offset + 1] = 1);
  48864. i = 2;
  48865. while (true) {
  48866. if (!(i < ((k - tLen >> 0) - 1 >> 0))) { break; }
  48867. ((i < 0 || i >= em.$length) ? $throwRuntimeError("index out of range") : em.$array[em.$offset + i] = 255);
  48868. i = i + (1) >> 0;
  48869. }
  48870. $copySlice($subslice(em, (k - tLen >> 0), (k - hashLen >> 0)), prefix);
  48871. $copySlice($subslice(em, (k - hashLen >> 0), k), hashed);
  48872. m = new big.Int.ptr().SetBytes(em);
  48873. _r = decrypt(rand$1, priv, m); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  48874. _tuple$1 = _r; c = _tuple$1[0]; err = _tuple$1[1];
  48875. if (!($interfaceIsEqual(err, $ifaceNil))) {
  48876. return [s, err];
  48877. }
  48878. copyWithLeftPad(em, c.Bytes());
  48879. s = em;
  48880. return [s, err];
  48881. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: SignPKCS1v15 }; } $f.$ptr = $ptr; $f._q = _q; $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.c = c; $f.em = em; $f.err = err; $f.hash$1 = hash$1; $f.hashLen = hashLen; $f.hashed = hashed; $f.i = i; $f.k = k; $f.m = m; $f.prefix = prefix; $f.priv = priv; $f.rand$1 = rand$1; $f.s = s; $f.tLen = tLen; $f.$s = $s; $f.$r = $r; return $f;
  48882. };
  48883. $pkg.SignPKCS1v15 = SignPKCS1v15;
  48884. VerifyPKCS1v15 = function(pub, hash$1, hashed, sig) {
  48885. var $ptr, _q, _tuple, c, em, err, hash$1, hashLen, hashed, i, k, m, ok, prefix, pub, sig, tLen, x;
  48886. err = $ifaceNil;
  48887. _tuple = pkcs1v15HashInfo(hash$1, hashed.$length); hashLen = _tuple[0]; prefix = _tuple[1]; err = _tuple[2];
  48888. if (!($interfaceIsEqual(err, $ifaceNil))) {
  48889. return err;
  48890. }
  48891. tLen = prefix.$length + hashLen >> 0;
  48892. k = (_q = ((pub.N.BitLen() + 7 >> 0)) / 8, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero"));
  48893. if (k < (tLen + 11 >> 0)) {
  48894. err = $pkg.ErrVerification;
  48895. return err;
  48896. }
  48897. c = new big.Int.ptr().SetBytes(sig);
  48898. m = encrypt(new big.Int.ptr(), pub, c);
  48899. em = leftPad(m.Bytes(), k);
  48900. ok = subtle.ConstantTimeByteEq((0 >= em.$length ? $throwRuntimeError("index out of range") : em.$array[em.$offset + 0]), 0);
  48901. ok = ok & (subtle.ConstantTimeByteEq((1 >= em.$length ? $throwRuntimeError("index out of range") : em.$array[em.$offset + 1]), 1));
  48902. ok = ok & (subtle.ConstantTimeCompare($subslice(em, (k - hashLen >> 0), k), hashed));
  48903. ok = ok & (subtle.ConstantTimeCompare($subslice(em, (k - tLen >> 0), (k - hashLen >> 0)), prefix));
  48904. ok = ok & (subtle.ConstantTimeByteEq((x = (k - tLen >> 0) - 1 >> 0, ((x < 0 || x >= em.$length) ? $throwRuntimeError("index out of range") : em.$array[em.$offset + x])), 0));
  48905. i = 2;
  48906. while (true) {
  48907. if (!(i < ((k - tLen >> 0) - 1 >> 0))) { break; }
  48908. ok = ok & (subtle.ConstantTimeByteEq(((i < 0 || i >= em.$length) ? $throwRuntimeError("index out of range") : em.$array[em.$offset + i]), 255));
  48909. i = i + (1) >> 0;
  48910. }
  48911. if (!((ok === 1))) {
  48912. err = $pkg.ErrVerification;
  48913. return err;
  48914. }
  48915. err = $ifaceNil;
  48916. return err;
  48917. };
  48918. $pkg.VerifyPKCS1v15 = VerifyPKCS1v15;
  48919. pkcs1v15HashInfo = function(hash$1, inLen) {
  48920. var $ptr, _entry, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tuple, err, hash$1, hashLen, inLen, ok, prefix;
  48921. hashLen = 0;
  48922. prefix = sliceType.nil;
  48923. err = $ifaceNil;
  48924. if (hash$1 === 0) {
  48925. _tmp = inLen; _tmp$1 = sliceType.nil; _tmp$2 = $ifaceNil; hashLen = _tmp; prefix = _tmp$1; err = _tmp$2;
  48926. return [hashLen, prefix, err];
  48927. }
  48928. hashLen = new crypto.Hash(hash$1).Size();
  48929. if (!((inLen === hashLen))) {
  48930. _tmp$3 = 0; _tmp$4 = sliceType.nil; _tmp$5 = errors.New("crypto/rsa: input must be hashed message"); hashLen = _tmp$3; prefix = _tmp$4; err = _tmp$5;
  48931. return [hashLen, prefix, err];
  48932. }
  48933. _tuple = (_entry = hashPrefixes[hash$1], _entry !== undefined ? [_entry.v, true] : [sliceType.nil, false]); prefix = _tuple[0]; ok = _tuple[1];
  48934. if (!ok) {
  48935. _tmp$6 = 0; _tmp$7 = sliceType.nil; _tmp$8 = errors.New("crypto/rsa: unsupported hash function"); hashLen = _tmp$6; prefix = _tmp$7; err = _tmp$8;
  48936. return [hashLen, prefix, err];
  48937. }
  48938. return [hashLen, prefix, err];
  48939. };
  48940. copyWithLeftPad = function(dest, src) {
  48941. var $ptr, dest, i, numPaddingBytes, src;
  48942. numPaddingBytes = dest.$length - src.$length >> 0;
  48943. i = 0;
  48944. while (true) {
  48945. if (!(i < numPaddingBytes)) { break; }
  48946. ((i < 0 || i >= dest.$length) ? $throwRuntimeError("index out of range") : dest.$array[dest.$offset + i] = 0);
  48947. i = i + (1) >> 0;
  48948. }
  48949. $copySlice($subslice(dest, numPaddingBytes), src);
  48950. };
  48951. emsaPSSEncode = function(mHash, emBits, salt, hash$1) {
  48952. var $ptr, _q, _r, _r$1, _r$2, _r$3, _r$4, db, em, emBits, emLen, h, hLen, hash$1, mHash, prefix, sLen, salt, x, x$1, y, $s, $r;
  48953. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _q = $f._q; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; db = $f.db; em = $f.em; emBits = $f.emBits; emLen = $f.emLen; h = $f.h; hLen = $f.hLen; hash$1 = $f.hash$1; mHash = $f.mHash; prefix = $f.prefix; sLen = $f.sLen; salt = $f.salt; x = $f.x; x$1 = $f.x$1; y = $f.y; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  48954. _r = hash$1.Size(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  48955. hLen = _r;
  48956. sLen = salt.$length;
  48957. emLen = (_q = ((emBits + 7 >> 0)) / 8, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero"));
  48958. if (!((mHash.$length === hLen))) {
  48959. return [sliceType.nil, errors.New("crypto/rsa: input must be hashed message")];
  48960. }
  48961. if (emLen < ((hLen + sLen >> 0) + 2 >> 0)) {
  48962. return [sliceType.nil, errors.New("crypto/rsa: encoding error")];
  48963. }
  48964. em = $makeSlice(sliceType, emLen);
  48965. db = $subslice(em, 0, (((((emLen - sLen >> 0) - hLen >> 0) - 2 >> 0) + 1 >> 0) + sLen >> 0));
  48966. h = $subslice(em, (((((emLen - sLen >> 0) - hLen >> 0) - 2 >> 0) + 1 >> 0) + sLen >> 0), (emLen - 1 >> 0));
  48967. prefix = $clone(arrayType.zero(), arrayType);
  48968. _r$1 = hash$1.Write(new sliceType(prefix)); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  48969. _r$1;
  48970. _r$2 = hash$1.Write(mHash); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  48971. _r$2;
  48972. _r$3 = hash$1.Write(salt); /* */ $s = 4; case 4: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  48973. _r$3;
  48974. _r$4 = hash$1.Sum($subslice(h, 0, 0)); /* */ $s = 5; case 5: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
  48975. h = _r$4;
  48976. $r = hash$1.Reset(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  48977. (x = ((emLen - sLen >> 0) - hLen >> 0) - 2 >> 0, ((x < 0 || x >= db.$length) ? $throwRuntimeError("index out of range") : db.$array[db.$offset + x] = 1));
  48978. $copySlice($subslice(db, (((emLen - sLen >> 0) - hLen >> 0) - 1 >> 0)), salt);
  48979. $r = mgf1XOR(db, hash$1, h); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  48980. (0 >= db.$length ? $throwRuntimeError("index out of range") : db.$array[db.$offset + 0] = ((0 >= db.$length ? $throwRuntimeError("index out of range") : db.$array[db.$offset + 0]) & ((((y = (((8 * emLen >> 0) - emBits >> 0) >>> 0), y < 32 ? (255 >>> y) : 0) << 24 >>> 24)))) >>> 0);
  48981. (x$1 = emLen - 1 >> 0, ((x$1 < 0 || x$1 >= em.$length) ? $throwRuntimeError("index out of range") : em.$array[em.$offset + x$1] = 188));
  48982. return [em, $ifaceNil];
  48983. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: emsaPSSEncode }; } $f.$ptr = $ptr; $f._q = _q; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f.db = db; $f.em = em; $f.emBits = emBits; $f.emLen = emLen; $f.h = h; $f.hLen = hLen; $f.hash$1 = hash$1; $f.mHash = mHash; $f.prefix = prefix; $f.sLen = sLen; $f.salt = salt; $f.x = x; $f.x$1 = x$1; $f.y = y; $f.$s = $s; $f.$r = $r; return $f;
  48984. };
  48985. signPSSWithSalt = function(rand$1, priv, hash$1, hashed, salt) {
  48986. var $ptr, _arg, _arg$1, _arg$2, _arg$3, _q, _r, _r$1, _r$2, _tuple, _tuple$1, c, em, err, hash$1, hashed, m, nBits, priv, rand$1, s, salt, $s, $r;
  48987. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _arg = $f._arg; _arg$1 = $f._arg$1; _arg$2 = $f._arg$2; _arg$3 = $f._arg$3; _q = $f._q; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; c = $f.c; em = $f.em; err = $f.err; hash$1 = $f.hash$1; hashed = $f.hashed; m = $f.m; nBits = $f.nBits; priv = $f.priv; rand$1 = $f.rand$1; s = $f.s; salt = $f.salt; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  48988. s = sliceType.nil;
  48989. err = $ifaceNil;
  48990. nBits = priv.PublicKey.N.BitLen();
  48991. _arg = hashed;
  48992. _arg$1 = nBits - 1 >> 0;
  48993. _arg$2 = salt;
  48994. _r = new crypto.Hash(hash$1).New(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  48995. _arg$3 = _r;
  48996. _r$1 = emsaPSSEncode(_arg, _arg$1, _arg$2, _arg$3); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  48997. _tuple = _r$1; em = _tuple[0]; err = _tuple[1];
  48998. if (!($interfaceIsEqual(err, $ifaceNil))) {
  48999. return [s, err];
  49000. }
  49001. m = new big.Int.ptr().SetBytes(em);
  49002. _r$2 = decrypt(rand$1, priv, m); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  49003. _tuple$1 = _r$2; c = _tuple$1[0]; err = _tuple$1[1];
  49004. if (!($interfaceIsEqual(err, $ifaceNil))) {
  49005. return [s, err];
  49006. }
  49007. s = $makeSlice(sliceType, (_q = ((nBits + 7 >> 0)) / 8, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")));
  49008. copyWithLeftPad(s, c.Bytes());
  49009. return [s, err];
  49010. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: signPSSWithSalt }; } $f.$ptr = $ptr; $f._arg = _arg; $f._arg$1 = _arg$1; $f._arg$2 = _arg$2; $f._arg$3 = _arg$3; $f._q = _q; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.c = c; $f.em = em; $f.err = err; $f.hash$1 = hash$1; $f.hashed = hashed; $f.m = m; $f.nBits = nBits; $f.priv = priv; $f.rand$1 = rand$1; $f.s = s; $f.salt = salt; $f.$s = $s; $f.$r = $r; return $f;
  49011. };
  49012. PSSOptions.ptr.prototype.HashFunc = function() {
  49013. var $ptr, pssOpts;
  49014. pssOpts = this;
  49015. return pssOpts.Hash;
  49016. };
  49017. PSSOptions.prototype.HashFunc = function() { return this.$val.HashFunc(); };
  49018. PSSOptions.ptr.prototype.saltLength = function() {
  49019. var $ptr, opts;
  49020. opts = this;
  49021. if (opts === ptrType.nil) {
  49022. return 0;
  49023. }
  49024. return opts.SaltLength;
  49025. };
  49026. PSSOptions.prototype.saltLength = function() { return this.$val.saltLength(); };
  49027. SignPSS = function(rand$1, priv, hash$1, hashed, opts) {
  49028. var $ptr, _q, _r, _r$1, _ref, _tuple, _tuple$1, err, hash$1, hashed, opts, priv, rand$1, s, salt, saltLength, $s, $r;
  49029. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _q = $f._q; _r = $f._r; _r$1 = $f._r$1; _ref = $f._ref; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; err = $f.err; hash$1 = $f.hash$1; hashed = $f.hashed; opts = $f.opts; priv = $f.priv; rand$1 = $f.rand$1; s = $f.s; salt = $f.salt; saltLength = $f.saltLength; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  49030. s = sliceType.nil;
  49031. err = $ifaceNil;
  49032. saltLength = opts.saltLength();
  49033. _ref = saltLength;
  49034. if (_ref === 0) {
  49035. saltLength = ((_q = ((priv.PublicKey.N.BitLen() + 7 >> 0)) / 8, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")) - 2 >> 0) - new crypto.Hash(hash$1).Size() >> 0;
  49036. } else if (_ref === -1) {
  49037. saltLength = new crypto.Hash(hash$1).Size();
  49038. }
  49039. if (!((opts.Hash === 0))) {
  49040. hash$1 = opts.Hash;
  49041. }
  49042. salt = $makeSlice(sliceType, saltLength);
  49043. _r = io.ReadFull(rand$1, salt); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  49044. _tuple = _r; err = _tuple[1];
  49045. /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 2; continue; }
  49046. /* */ $s = 3; continue;
  49047. /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 2:
  49048. return [s, err];
  49049. /* } */ case 3:
  49050. _r$1 = signPSSWithSalt(rand$1, priv, hash$1, hashed, salt); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  49051. _tuple$1 = _r$1; s = _tuple$1[0]; err = _tuple$1[1];
  49052. return [s, err];
  49053. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: SignPSS }; } $f.$ptr = $ptr; $f._q = _q; $f._r = _r; $f._r$1 = _r$1; $f._ref = _ref; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.err = err; $f.hash$1 = hash$1; $f.hashed = hashed; $f.opts = opts; $f.priv = priv; $f.rand$1 = rand$1; $f.s = s; $f.salt = salt; $f.saltLength = saltLength; $f.$s = $s; $f.$r = $r; return $f;
  49054. };
  49055. $pkg.SignPSS = SignPSS;
  49056. checkPub = function(pub) {
  49057. var $ptr, pub;
  49058. if (pub.N === ptrType$1.nil) {
  49059. return errPublicModulus;
  49060. }
  49061. if (pub.E < 2) {
  49062. return errPublicExponentSmall;
  49063. }
  49064. if (pub.E > 2147483647) {
  49065. return errPublicExponentLarge;
  49066. }
  49067. return $ifaceNil;
  49068. };
  49069. PrivateKey.ptr.prototype.Public = function() {
  49070. var $ptr, priv;
  49071. priv = this;
  49072. return priv.PublicKey;
  49073. };
  49074. PrivateKey.prototype.Public = function() { return this.$val.Public(); };
  49075. PrivateKey.ptr.prototype.Sign = function(rand$1, msg, opts) {
  49076. var $ptr, _arg, _arg$1, _arg$2, _arg$3, _r, _r$1, _r$2, _tuple, msg, ok, opts, priv, pssOpts, rand$1, $s, $r;
  49077. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _arg = $f._arg; _arg$1 = $f._arg$1; _arg$2 = $f._arg$2; _arg$3 = $f._arg$3; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _tuple = $f._tuple; msg = $f.msg; ok = $f.ok; opts = $f.opts; priv = $f.priv; pssOpts = $f.pssOpts; rand$1 = $f.rand$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  49078. priv = this;
  49079. _tuple = $assertType(opts, ptrType, true); pssOpts = _tuple[0]; ok = _tuple[1];
  49080. /* */ if (ok) { $s = 1; continue; }
  49081. /* */ $s = 2; continue;
  49082. /* if (ok) { */ case 1:
  49083. _r = SignPSS(rand$1, priv, pssOpts.Hash, msg, pssOpts); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  49084. return _r;
  49085. /* } */ case 2:
  49086. _arg = rand$1;
  49087. _arg$1 = priv;
  49088. _r$1 = opts.HashFunc(); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  49089. _arg$2 = _r$1;
  49090. _arg$3 = msg;
  49091. _r$2 = SignPKCS1v15(_arg, _arg$1, _arg$2, _arg$3); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  49092. return _r$2;
  49093. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: PrivateKey.ptr.prototype.Sign }; } $f.$ptr = $ptr; $f._arg = _arg; $f._arg$1 = _arg$1; $f._arg$2 = _arg$2; $f._arg$3 = _arg$3; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._tuple = _tuple; $f.msg = msg; $f.ok = ok; $f.opts = opts; $f.priv = priv; $f.pssOpts = pssOpts; $f.rand$1 = rand$1; $f.$s = $s; $f.$r = $r; return $f;
  49094. };
  49095. PrivateKey.prototype.Sign = function(rand$1, msg, opts) { return this.$val.Sign(rand$1, msg, opts); };
  49096. PrivateKey.ptr.prototype.Validate = function() {
  49097. var $ptr, _i, _i$1, _i$2, _r, _ref, _ref$1, _ref$2, congruence, de, err, modulus, pminus1, prime, prime$1, prime$2, priv, $s, $r;
  49098. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _i = $f._i; _i$1 = $f._i$1; _i$2 = $f._i$2; _r = $f._r; _ref = $f._ref; _ref$1 = $f._ref$1; _ref$2 = $f._ref$2; congruence = $f.congruence; de = $f.de; err = $f.err; modulus = $f.modulus; pminus1 = $f.pminus1; prime = $f.prime; prime$1 = $f.prime$1; prime$2 = $f.prime$2; priv = $f.priv; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  49099. priv = this;
  49100. err = checkPub(priv.PublicKey);
  49101. if (!($interfaceIsEqual(err, $ifaceNil))) {
  49102. return err;
  49103. }
  49104. _ref = priv.Primes;
  49105. _i = 0;
  49106. /* while (true) { */ case 1:
  49107. /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; }
  49108. prime = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]);
  49109. _r = prime.ProbablyPrime(20); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  49110. /* */ if (!_r) { $s = 3; continue; }
  49111. /* */ $s = 4; continue;
  49112. /* if (!_r) { */ case 3:
  49113. return errors.New("crypto/rsa: prime factor is composite");
  49114. /* } */ case 4:
  49115. _i++;
  49116. /* } */ $s = 1; continue; case 2:
  49117. modulus = new big.Int.ptr().Set(bigOne);
  49118. _ref$1 = priv.Primes;
  49119. _i$1 = 0;
  49120. while (true) {
  49121. if (!(_i$1 < _ref$1.$length)) { break; }
  49122. prime$1 = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? $throwRuntimeError("index out of range") : _ref$1.$array[_ref$1.$offset + _i$1]);
  49123. modulus.Mul(modulus, prime$1);
  49124. _i$1++;
  49125. }
  49126. if (!((modulus.Cmp(priv.PublicKey.N) === 0))) {
  49127. return errors.New("crypto/rsa: invalid modulus");
  49128. }
  49129. congruence = new big.Int.ptr();
  49130. de = new big.Int.ptr().SetInt64(new $Int64(0, priv.PublicKey.E));
  49131. de.Mul(de, priv.D);
  49132. _ref$2 = priv.Primes;
  49133. _i$2 = 0;
  49134. while (true) {
  49135. if (!(_i$2 < _ref$2.$length)) { break; }
  49136. prime$2 = ((_i$2 < 0 || _i$2 >= _ref$2.$length) ? $throwRuntimeError("index out of range") : _ref$2.$array[_ref$2.$offset + _i$2]);
  49137. pminus1 = new big.Int.ptr().Sub(prime$2, bigOne);
  49138. congruence.Mod(de, pminus1);
  49139. if (!((congruence.Cmp(bigOne) === 0))) {
  49140. return errors.New("crypto/rsa: invalid exponents");
  49141. }
  49142. _i$2++;
  49143. }
  49144. return $ifaceNil;
  49145. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: PrivateKey.ptr.prototype.Validate }; } $f.$ptr = $ptr; $f._i = _i; $f._i$1 = _i$1; $f._i$2 = _i$2; $f._r = _r; $f._ref = _ref; $f._ref$1 = _ref$1; $f._ref$2 = _ref$2; $f.congruence = congruence; $f.de = de; $f.err = err; $f.modulus = modulus; $f.pminus1 = pminus1; $f.prime = prime; $f.prime$1 = prime$1; $f.prime$2 = prime$2; $f.priv = priv; $f.$s = $s; $f.$r = $r; return $f;
  49146. };
  49147. PrivateKey.prototype.Validate = function() { return this.$val.Validate(); };
  49148. incCounter = function(c) {
  49149. var $ptr, c;
  49150. c.nilCheck, c[3] = (c.nilCheck, c[3]) + (1) << 24 >>> 24;
  49151. if (!(((c.nilCheck, c[3]) === 0))) {
  49152. return;
  49153. }
  49154. c.nilCheck, c[2] = (c.nilCheck, c[2]) + (1) << 24 >>> 24;
  49155. if (!(((c.nilCheck, c[2]) === 0))) {
  49156. return;
  49157. }
  49158. c.nilCheck, c[1] = (c.nilCheck, c[1]) + (1) << 24 >>> 24;
  49159. if (!(((c.nilCheck, c[1]) === 0))) {
  49160. return;
  49161. }
  49162. c.nilCheck, c[0] = (c.nilCheck, c[0]) + (1) << 24 >>> 24;
  49163. };
  49164. mgf1XOR = function(out, hash$1, seed) {
  49165. var $ptr, _r, _r$1, _r$2, counter, digest, done, hash$1, i, out, seed, $s, $r;
  49166. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; counter = $f.counter; digest = $f.digest; done = $f.done; hash$1 = $f.hash$1; i = $f.i; out = $f.out; seed = $f.seed; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  49167. counter = [counter];
  49168. counter[0] = $clone(arrayType$1.zero(), arrayType$1);
  49169. digest = sliceType.nil;
  49170. done = 0;
  49171. /* while (true) { */ case 1:
  49172. /* if (!(done < out.$length)) { break; } */ if(!(done < out.$length)) { $s = 2; continue; }
  49173. _r = hash$1.Write(seed); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  49174. _r;
  49175. _r$1 = hash$1.Write($subslice(new sliceType(counter[0]), 0, 4)); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  49176. _r$1;
  49177. _r$2 = hash$1.Sum($subslice(digest, 0, 0)); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  49178. digest = _r$2;
  49179. $r = hash$1.Reset(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  49180. i = 0;
  49181. while (true) {
  49182. if (!(i < digest.$length && done < out.$length)) { break; }
  49183. ((done < 0 || done >= out.$length) ? $throwRuntimeError("index out of range") : out.$array[out.$offset + done] = (((done < 0 || done >= out.$length) ? $throwRuntimeError("index out of range") : out.$array[out.$offset + done]) ^ (((i < 0 || i >= digest.$length) ? $throwRuntimeError("index out of range") : digest.$array[digest.$offset + i]))) << 24 >>> 24);
  49184. done = done + (1) >> 0;
  49185. i = i + (1) >> 0;
  49186. }
  49187. incCounter(counter[0]);
  49188. /* } */ $s = 1; continue; case 2:
  49189. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: mgf1XOR }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f.counter = counter; $f.digest = digest; $f.done = done; $f.hash$1 = hash$1; $f.i = i; $f.out = out; $f.seed = seed; $f.$s = $s; $f.$r = $r; return $f;
  49190. };
  49191. encrypt = function(c, pub, m) {
  49192. var $ptr, c, e, m, pub;
  49193. e = big.NewInt(new $Int64(0, pub.E));
  49194. c.Exp(m, e, pub.N);
  49195. return c;
  49196. };
  49197. modInverse = function(a, n) {
  49198. var $ptr, _tmp, _tmp$1, a, g, ia, n, ok, x, y;
  49199. ia = ptrType$1.nil;
  49200. ok = false;
  49201. g = new big.Int.ptr();
  49202. x = new big.Int.ptr();
  49203. y = new big.Int.ptr();
  49204. g.GCD(x, y, a, n);
  49205. if (!((g.Cmp(bigOne) === 0))) {
  49206. return [ia, ok];
  49207. }
  49208. if (x.Cmp(bigOne) < 0) {
  49209. x.Add(x, n);
  49210. }
  49211. _tmp = x; _tmp$1 = true; ia = _tmp; ok = _tmp$1;
  49212. return [ia, ok];
  49213. };
  49214. PrivateKey.ptr.prototype.Precompute = function() {
  49215. var $ptr, i, prime, priv, r, values, x, x$1, x$2, x$3, x$4, x$5, x$6, x$7, x$8;
  49216. priv = this;
  49217. if (!(priv.Precomputed.Dp === ptrType$1.nil)) {
  49218. return;
  49219. }
  49220. priv.Precomputed.Dp = new big.Int.ptr().Sub((x = priv.Primes, (0 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 0])), bigOne);
  49221. priv.Precomputed.Dp.Mod(priv.D, priv.Precomputed.Dp);
  49222. priv.Precomputed.Dq = new big.Int.ptr().Sub((x$1 = priv.Primes, (1 >= x$1.$length ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + 1])), bigOne);
  49223. priv.Precomputed.Dq.Mod(priv.D, priv.Precomputed.Dq);
  49224. priv.Precomputed.Qinv = new big.Int.ptr().ModInverse((x$2 = priv.Primes, (1 >= x$2.$length ? $throwRuntimeError("index out of range") : x$2.$array[x$2.$offset + 1])), (x$3 = priv.Primes, (0 >= x$3.$length ? $throwRuntimeError("index out of range") : x$3.$array[x$3.$offset + 0])));
  49225. r = new big.Int.ptr().Mul((x$4 = priv.Primes, (0 >= x$4.$length ? $throwRuntimeError("index out of range") : x$4.$array[x$4.$offset + 0])), (x$5 = priv.Primes, (1 >= x$5.$length ? $throwRuntimeError("index out of range") : x$5.$array[x$5.$offset + 1])));
  49226. priv.Precomputed.CRTValues = $makeSlice(sliceType$2, (priv.Primes.$length - 2 >> 0));
  49227. i = 2;
  49228. while (true) {
  49229. if (!(i < priv.Primes.$length)) { break; }
  49230. prime = (x$6 = priv.Primes, ((i < 0 || i >= x$6.$length) ? $throwRuntimeError("index out of range") : x$6.$array[x$6.$offset + i]));
  49231. values = (x$7 = priv.Precomputed.CRTValues, x$8 = i - 2 >> 0, ((x$8 < 0 || x$8 >= x$7.$length) ? $throwRuntimeError("index out of range") : x$7.$array[x$7.$offset + x$8]));
  49232. values.Exp = new big.Int.ptr().Sub(prime, bigOne);
  49233. values.Exp.Mod(priv.D, values.Exp);
  49234. values.R = new big.Int.ptr().Set(r);
  49235. values.Coeff = new big.Int.ptr().ModInverse(r, prime);
  49236. r.Mul(r, prime);
  49237. i = i + (1) >> 0;
  49238. }
  49239. };
  49240. PrivateKey.prototype.Precompute = function() { return this.$val.Precompute(); };
  49241. decrypt = function(random, priv, c) {
  49242. var $ptr, _i, _r, _ref, _tuple, _tuple$1, bigE, c, cCopy, err, i, ir, m, m2, ok, prime, priv, r, random, rpowe, values, x, x$1, x$2, x$3, x$4, x$5, x$6, $s, $r;
  49243. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _i = $f._i; _r = $f._r; _ref = $f._ref; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; bigE = $f.bigE; c = $f.c; cCopy = $f.cCopy; err = $f.err; i = $f.i; ir = $f.ir; m = $f.m; m2 = $f.m2; ok = $f.ok; prime = $f.prime; priv = $f.priv; r = $f.r; random = $f.random; rpowe = $f.rpowe; values = $f.values; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; x$3 = $f.x$3; x$4 = $f.x$4; x$5 = $f.x$5; x$6 = $f.x$6; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  49244. m = ptrType$1.nil;
  49245. err = $ifaceNil;
  49246. if (c.Cmp(priv.PublicKey.N) > 0) {
  49247. err = $pkg.ErrDecryption;
  49248. return [m, err];
  49249. }
  49250. ir = ptrType$1.nil;
  49251. /* */ if (!($interfaceIsEqual(random, $ifaceNil))) { $s = 1; continue; }
  49252. /* */ $s = 2; continue;
  49253. /* if (!($interfaceIsEqual(random, $ifaceNil))) { */ case 1:
  49254. r = ptrType$1.nil;
  49255. /* while (true) { */ case 3:
  49256. _r = rand.Int(random, priv.PublicKey.N); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  49257. _tuple = _r; r = _tuple[0]; err = _tuple[1];
  49258. if (!($interfaceIsEqual(err, $ifaceNil))) {
  49259. return [m, err];
  49260. }
  49261. if (r.Cmp(bigZero) === 0) {
  49262. r = bigOne;
  49263. }
  49264. ok = false;
  49265. _tuple$1 = modInverse(r, priv.PublicKey.N); ir = _tuple$1[0]; ok = _tuple$1[1];
  49266. if (ok) {
  49267. /* break; */ $s = 4; continue;
  49268. }
  49269. /* } */ $s = 3; continue; case 4:
  49270. bigE = big.NewInt(new $Int64(0, priv.PublicKey.E));
  49271. rpowe = new big.Int.ptr().Exp(r, bigE, priv.PublicKey.N);
  49272. cCopy = new big.Int.ptr().Set(c);
  49273. cCopy.Mul(cCopy, rpowe);
  49274. cCopy.Mod(cCopy, priv.PublicKey.N);
  49275. c = cCopy;
  49276. /* } */ case 2:
  49277. if (priv.Precomputed.Dp === ptrType$1.nil) {
  49278. m = new big.Int.ptr().Exp(c, priv.D, priv.PublicKey.N);
  49279. } else {
  49280. m = new big.Int.ptr().Exp(c, priv.Precomputed.Dp, (x = priv.Primes, (0 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 0])));
  49281. m2 = new big.Int.ptr().Exp(c, priv.Precomputed.Dq, (x$1 = priv.Primes, (1 >= x$1.$length ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + 1])));
  49282. m.Sub(m, m2);
  49283. if (m.Sign() < 0) {
  49284. m.Add(m, (x$2 = priv.Primes, (0 >= x$2.$length ? $throwRuntimeError("index out of range") : x$2.$array[x$2.$offset + 0])));
  49285. }
  49286. m.Mul(m, priv.Precomputed.Qinv);
  49287. m.Mod(m, (x$3 = priv.Primes, (0 >= x$3.$length ? $throwRuntimeError("index out of range") : x$3.$array[x$3.$offset + 0])));
  49288. m.Mul(m, (x$4 = priv.Primes, (1 >= x$4.$length ? $throwRuntimeError("index out of range") : x$4.$array[x$4.$offset + 1])));
  49289. m.Add(m, m2);
  49290. _ref = priv.Precomputed.CRTValues;
  49291. _i = 0;
  49292. while (true) {
  49293. if (!(_i < _ref.$length)) { break; }
  49294. i = _i;
  49295. values = $clone(((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]), CRTValue);
  49296. prime = (x$5 = priv.Primes, x$6 = 2 + i >> 0, ((x$6 < 0 || x$6 >= x$5.$length) ? $throwRuntimeError("index out of range") : x$5.$array[x$5.$offset + x$6]));
  49297. m2.Exp(c, values.Exp, prime);
  49298. m2.Sub(m2, m);
  49299. m2.Mul(m2, values.Coeff);
  49300. m2.Mod(m2, prime);
  49301. if (m2.Sign() < 0) {
  49302. m2.Add(m2, prime);
  49303. }
  49304. m2.Mul(m2, values.R);
  49305. m.Add(m, m2);
  49306. _i++;
  49307. }
  49308. }
  49309. if (!(ir === ptrType$1.nil)) {
  49310. m.Mul(m, ir);
  49311. m.Mod(m, priv.PublicKey.N);
  49312. }
  49313. return [m, err];
  49314. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: decrypt }; } $f.$ptr = $ptr; $f._i = _i; $f._r = _r; $f._ref = _ref; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.bigE = bigE; $f.c = c; $f.cCopy = cCopy; $f.err = err; $f.i = i; $f.ir = ir; $f.m = m; $f.m2 = m2; $f.ok = ok; $f.prime = prime; $f.priv = priv; $f.r = r; $f.random = random; $f.rpowe = rpowe; $f.values = values; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.x$3 = x$3; $f.x$4 = x$4; $f.x$5 = x$5; $f.x$6 = x$6; $f.$s = $s; $f.$r = $r; return $f;
  49315. };
  49316. leftPad = function(input, size) {
  49317. var $ptr, input, n, out, size;
  49318. out = sliceType.nil;
  49319. n = input.$length;
  49320. if (n > size) {
  49321. n = size;
  49322. }
  49323. out = $makeSlice(sliceType, size);
  49324. $copySlice($subslice(out, (out.$length - n >> 0)), input);
  49325. return out;
  49326. };
  49327. ptrType.methods = [{prop: "HashFunc", name: "HashFunc", pkg: "", typ: $funcType([], [crypto.Hash], false)}, {prop: "saltLength", name: "saltLength", pkg: "crypto/rsa", typ: $funcType([], [$Int], false)}];
  49328. ptrType$2.methods = [{prop: "Public", name: "Public", pkg: "", typ: $funcType([], [crypto.PublicKey], false)}, {prop: "Sign", name: "Sign", pkg: "", typ: $funcType([io.Reader, sliceType, crypto.SignerOpts], [sliceType, $error], false)}, {prop: "Validate", name: "Validate", pkg: "", typ: $funcType([], [$error], false)}, {prop: "Precompute", name: "Precompute", pkg: "", typ: $funcType([], [], false)}];
  49329. PSSOptions.init([{prop: "SaltLength", name: "SaltLength", pkg: "", typ: $Int, tag: ""}, {prop: "Hash", name: "Hash", pkg: "", typ: crypto.Hash, tag: ""}]);
  49330. PublicKey.init([{prop: "N", name: "N", pkg: "", typ: ptrType$1, tag: ""}, {prop: "E", name: "E", pkg: "", typ: $Int, tag: ""}]);
  49331. PrivateKey.init([{prop: "PublicKey", name: "", pkg: "", typ: PublicKey, tag: ""}, {prop: "D", name: "D", pkg: "", typ: ptrType$1, tag: ""}, {prop: "Primes", name: "Primes", pkg: "", typ: sliceType$1, tag: ""}, {prop: "Precomputed", name: "Precomputed", pkg: "", typ: PrecomputedValues, tag: ""}]);
  49332. PrecomputedValues.init([{prop: "Dp", name: "Dp", pkg: "", typ: ptrType$1, tag: ""}, {prop: "Dq", name: "Dq", pkg: "", typ: ptrType$1, tag: ""}, {prop: "Qinv", name: "Qinv", pkg: "", typ: ptrType$1, tag: ""}, {prop: "CRTValues", name: "CRTValues", pkg: "", typ: sliceType$2, tag: ""}]);
  49333. CRTValue.init([{prop: "Exp", name: "Exp", pkg: "", typ: ptrType$1, tag: ""}, {prop: "Coeff", name: "Coeff", pkg: "", typ: ptrType$1, tag: ""}, {prop: "R", name: "R", pkg: "", typ: ptrType$1, tag: ""}]);
  49334. $init = function() {
  49335. $pkg.$init = function() {};
  49336. /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  49337. $r = bytes.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  49338. $r = crypto.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  49339. $r = rand.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  49340. $r = subtle.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  49341. $r = errors.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  49342. $r = hash.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  49343. $r = io.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  49344. $r = big.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  49345. hashPrefixes = (_map = new $Map(), _key = 2, _map[_key] = { k: _key, v: new sliceType([48, 32, 48, 12, 6, 8, 42, 134, 72, 134, 247, 13, 2, 5, 5, 0, 4, 16]) }, _key = 3, _map[_key] = { k: _key, v: new sliceType([48, 33, 48, 9, 6, 5, 43, 14, 3, 2, 26, 5, 0, 4, 20]) }, _key = 4, _map[_key] = { k: _key, v: new sliceType([48, 45, 48, 13, 6, 9, 96, 134, 72, 1, 101, 3, 4, 2, 4, 5, 0, 4, 28]) }, _key = 5, _map[_key] = { k: _key, v: new sliceType([48, 49, 48, 13, 6, 9, 96, 134, 72, 1, 101, 3, 4, 2, 1, 5, 0, 4, 32]) }, _key = 6, _map[_key] = { k: _key, v: new sliceType([48, 65, 48, 13, 6, 9, 96, 134, 72, 1, 101, 3, 4, 2, 2, 5, 0, 4, 48]) }, _key = 7, _map[_key] = { k: _key, v: new sliceType([48, 81, 48, 13, 6, 9, 96, 134, 72, 1, 101, 3, 4, 2, 3, 5, 0, 4, 64]) }, _key = 8, _map[_key] = { k: _key, v: new sliceType([]) }, _key = 9, _map[_key] = { k: _key, v: new sliceType([48, 32, 48, 8, 6, 6, 40, 207, 6, 3, 0, 49, 4, 20]) }, _map);
  49346. bigZero = big.NewInt(new $Int64(0, 0));
  49347. bigOne = big.NewInt(new $Int64(0, 1));
  49348. errPublicModulus = errors.New("crypto/rsa: missing public modulus");
  49349. errPublicExponentSmall = errors.New("crypto/rsa: public exponent too small");
  49350. errPublicExponentLarge = errors.New("crypto/rsa: public exponent too large");
  49351. $pkg.ErrMessageTooLong = errors.New("crypto/rsa: message too long for RSA public key size");
  49352. $pkg.ErrDecryption = errors.New("crypto/rsa: decryption error");
  49353. $pkg.ErrVerification = errors.New("crypto/rsa: verification error");
  49354. /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
  49355. };
  49356. $pkg.$init = $init;
  49357. return $pkg;
  49358. })();
  49359. $packages["crypto/sha1"] = (function() {
  49360. var $pkg = {}, $init, crypto, hash, digest, sliceType, arrayType, arrayType$1, arrayType$2, arrayType$3, ptrType, block, init, New, blockGeneric;
  49361. crypto = $packages["crypto"];
  49362. hash = $packages["hash"];
  49363. digest = $pkg.digest = $newType(0, $kindStruct, "sha1.digest", "digest", "crypto/sha1", function(h_, x_, nx_, len_) {
  49364. this.$val = this;
  49365. if (arguments.length === 0) {
  49366. this.h = arrayType$3.zero();
  49367. this.x = arrayType$1.zero();
  49368. this.nx = 0;
  49369. this.len = new $Uint64(0, 0);
  49370. return;
  49371. }
  49372. this.h = h_;
  49373. this.x = x_;
  49374. this.nx = nx_;
  49375. this.len = len_;
  49376. });
  49377. sliceType = $sliceType($Uint8);
  49378. arrayType = $arrayType($Uint8, 20);
  49379. arrayType$1 = $arrayType($Uint8, 64);
  49380. arrayType$2 = $arrayType($Uint32, 16);
  49381. arrayType$3 = $arrayType($Uint32, 5);
  49382. ptrType = $ptrType(digest);
  49383. init = function() {
  49384. var $ptr;
  49385. crypto.RegisterHash(3, New);
  49386. };
  49387. digest.ptr.prototype.Reset = function() {
  49388. var $ptr, d;
  49389. d = this;
  49390. d.h[0] = 1732584193;
  49391. d.h[1] = 4023233417;
  49392. d.h[2] = 2562383102;
  49393. d.h[3] = 271733878;
  49394. d.h[4] = 3285377520;
  49395. d.nx = 0;
  49396. d.len = new $Uint64(0, 0);
  49397. };
  49398. digest.prototype.Reset = function() { return this.$val.Reset(); };
  49399. New = function() {
  49400. var $ptr, d;
  49401. d = new digest.ptr();
  49402. d.Reset();
  49403. return d;
  49404. };
  49405. $pkg.New = New;
  49406. digest.ptr.prototype.Size = function() {
  49407. var $ptr, d;
  49408. d = this;
  49409. return 20;
  49410. };
  49411. digest.prototype.Size = function() { return this.$val.Size(); };
  49412. digest.ptr.prototype.BlockSize = function() {
  49413. var $ptr, d;
  49414. d = this;
  49415. return 64;
  49416. };
  49417. digest.prototype.BlockSize = function() { return this.$val.BlockSize(); };
  49418. digest.ptr.prototype.Write = function(p) {
  49419. var $ptr, d, err, n, n$1, nn, p, x, x$1, $s, $r;
  49420. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; d = $f.d; err = $f.err; n = $f.n; n$1 = $f.n$1; nn = $f.nn; p = $f.p; x = $f.x; x$1 = $f.x$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  49421. nn = 0;
  49422. err = $ifaceNil;
  49423. d = this;
  49424. nn = p.$length;
  49425. d.len = (x = d.len, x$1 = new $Uint64(0, nn), new $Uint64(x.$high + x$1.$high, x.$low + x$1.$low));
  49426. /* */ if (d.nx > 0) { $s = 1; continue; }
  49427. /* */ $s = 2; continue;
  49428. /* if (d.nx > 0) { */ case 1:
  49429. n = $copySlice($subslice(new sliceType(d.x), d.nx), p);
  49430. d.nx = d.nx + (n) >> 0;
  49431. /* */ if (d.nx === 64) { $s = 3; continue; }
  49432. /* */ $s = 4; continue;
  49433. /* if (d.nx === 64) { */ case 3:
  49434. $r = block(d, new sliceType(d.x)); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  49435. d.nx = 0;
  49436. /* } */ case 4:
  49437. p = $subslice(p, n);
  49438. /* } */ case 2:
  49439. /* */ if (p.$length >= 64) { $s = 6; continue; }
  49440. /* */ $s = 7; continue;
  49441. /* if (p.$length >= 64) { */ case 6:
  49442. n$1 = (p.$length & ~63) >> 0;
  49443. $r = block(d, $subslice(p, 0, n$1)); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  49444. p = $subslice(p, n$1);
  49445. /* } */ case 7:
  49446. if (p.$length > 0) {
  49447. d.nx = $copySlice(new sliceType(d.x), p);
  49448. }
  49449. return [nn, err];
  49450. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: digest.ptr.prototype.Write }; } $f.$ptr = $ptr; $f.d = d; $f.err = err; $f.n = n; $f.n$1 = n$1; $f.nn = nn; $f.p = p; $f.x = x; $f.x$1 = x$1; $f.$s = $s; $f.$r = $r; return $f;
  49451. };
  49452. digest.prototype.Write = function(p) { return this.$val.Write(p); };
  49453. digest.ptr.prototype.Sum = function(in$1) {
  49454. var $ptr, _r, d, d0, hash$1, in$1, $s, $r;
  49455. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; d = $f.d; d0 = $f.d0; hash$1 = $f.hash$1; in$1 = $f.in$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  49456. d0 = this;
  49457. d = $clone(d0, digest);
  49458. _r = d.checkSum(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  49459. hash$1 = $clone(_r, arrayType);
  49460. return $appendSlice(in$1, new sliceType(hash$1));
  49461. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: digest.ptr.prototype.Sum }; } $f.$ptr = $ptr; $f._r = _r; $f.d = d; $f.d0 = d0; $f.hash$1 = hash$1; $f.in$1 = in$1; $f.$s = $s; $f.$r = $r; return $f;
  49462. };
  49463. digest.prototype.Sum = function(in$1) { return this.$val.Sum(in$1); };
  49464. digest.ptr.prototype.checkSum = function() {
  49465. var $ptr, _i, _r, _r$1, _r$2, _ref, d, digest$1, i, i$1, len, s, tmp, x, x$1, x$2, x$3, x$4, x$5, x$6, $s, $r;
  49466. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _i = $f._i; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _ref = $f._ref; d = $f.d; digest$1 = $f.digest$1; i = $f.i; i$1 = $f.i$1; len = $f.len; s = $f.s; tmp = $f.tmp; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; x$3 = $f.x$3; x$4 = $f.x$4; x$5 = $f.x$5; x$6 = $f.x$6; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  49467. d = this;
  49468. len = d.len;
  49469. tmp = $clone(arrayType$1.zero(), arrayType$1);
  49470. tmp[0] = 128;
  49471. /* */ if ((x = $div64(len, new $Uint64(0, 64), true), (x.$high < 0 || (x.$high === 0 && x.$low < 56)))) { $s = 1; continue; }
  49472. /* */ $s = 2; continue;
  49473. /* if ((x = $div64(len, new $Uint64(0, 64), true), (x.$high < 0 || (x.$high === 0 && x.$low < 56)))) { */ case 1:
  49474. _r = d.Write($subslice(new sliceType(tmp), 0, $flatten64((x$1 = $div64(len, new $Uint64(0, 64), true), new $Uint64(0 - x$1.$high, 56 - x$1.$low))))); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  49475. _r;
  49476. $s = 3; continue;
  49477. /* } else { */ case 2:
  49478. _r$1 = d.Write($subslice(new sliceType(tmp), 0, $flatten64((x$2 = $div64(len, new $Uint64(0, 64), true), new $Uint64(0 - x$2.$high, 120 - x$2.$low))))); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  49479. _r$1;
  49480. /* } */ case 3:
  49481. len = $shiftLeft64(len, (3));
  49482. i = 0;
  49483. while (true) {
  49484. if (!(i < 8)) { break; }
  49485. ((i < 0 || i >= tmp.length) ? $throwRuntimeError("index out of range") : tmp[i] = ($shiftRightUint64(len, ((56 - (8 * i >>> 0) >>> 0))).$low << 24 >>> 24));
  49486. i = i + (1) >>> 0;
  49487. }
  49488. _r$2 = d.Write($subslice(new sliceType(tmp), 0, 8)); /* */ $s = 6; case 6: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  49489. _r$2;
  49490. if (!((d.nx === 0))) {
  49491. $panic(new $String("d.nx != 0"));
  49492. }
  49493. digest$1 = $clone(arrayType.zero(), arrayType);
  49494. _ref = d.h;
  49495. _i = 0;
  49496. while (true) {
  49497. if (!(_i < 5)) { break; }
  49498. i$1 = _i;
  49499. s = ((_i < 0 || _i >= _ref.length) ? $throwRuntimeError("index out of range") : _ref[_i]);
  49500. (x$3 = i$1 * 4 >> 0, ((x$3 < 0 || x$3 >= digest$1.length) ? $throwRuntimeError("index out of range") : digest$1[x$3] = ((s >>> 24 >>> 0) << 24 >>> 24)));
  49501. (x$4 = (i$1 * 4 >> 0) + 1 >> 0, ((x$4 < 0 || x$4 >= digest$1.length) ? $throwRuntimeError("index out of range") : digest$1[x$4] = ((s >>> 16 >>> 0) << 24 >>> 24)));
  49502. (x$5 = (i$1 * 4 >> 0) + 2 >> 0, ((x$5 < 0 || x$5 >= digest$1.length) ? $throwRuntimeError("index out of range") : digest$1[x$5] = ((s >>> 8 >>> 0) << 24 >>> 24)));
  49503. (x$6 = (i$1 * 4 >> 0) + 3 >> 0, ((x$6 < 0 || x$6 >= digest$1.length) ? $throwRuntimeError("index out of range") : digest$1[x$6] = (s << 24 >>> 24)));
  49504. _i++;
  49505. }
  49506. return digest$1;
  49507. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: digest.ptr.prototype.checkSum }; } $f.$ptr = $ptr; $f._i = _i; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._ref = _ref; $f.d = d; $f.digest$1 = digest$1; $f.i = i; $f.i$1 = i$1; $f.len = len; $f.s = s; $f.tmp = tmp; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.x$3 = x$3; $f.x$4 = x$4; $f.x$5 = x$5; $f.x$6 = x$6; $f.$s = $s; $f.$r = $r; return $f;
  49508. };
  49509. digest.prototype.checkSum = function() { return this.$val.checkSum(); };
  49510. blockGeneric = function(dig, p) {
  49511. var $ptr, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$16, _tmp$17, _tmp$18, _tmp$19, _tmp$2, _tmp$20, _tmp$21, _tmp$22, _tmp$23, _tmp$24, _tmp$25, _tmp$26, _tmp$27, _tmp$28, _tmp$29, _tmp$3, _tmp$30, _tmp$31, _tmp$32, _tmp$33, _tmp$34, _tmp$35, _tmp$36, _tmp$37, _tmp$38, _tmp$39, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, a, a5, a5$1, a5$2, a5$3, a5$4, b, b30, b30$1, b30$2, b30$3, b30$4, c, d, dig, e, f, f$1, f$2, f$3, f$4, h0, h1, h2, h3, h4, i, i$1, j, p, t, t$1, t$2, t$3, t$4, tmp, tmp$1, tmp$2, tmp$3, w, x, x$1, x$10, x$11, x$12, x$13, x$14, x$15, x$16, x$17, x$18, x$19, x$2, x$20, x$21, x$22, x$23, x$24, x$25, x$26, x$27, x$3, x$4, x$5, x$6, x$7, x$8, x$9;
  49512. w = $clone(arrayType$2.zero(), arrayType$2);
  49513. _tmp = dig.h[0]; _tmp$1 = dig.h[1]; _tmp$2 = dig.h[2]; _tmp$3 = dig.h[3]; _tmp$4 = dig.h[4]; h0 = _tmp; h1 = _tmp$1; h2 = _tmp$2; h3 = _tmp$3; h4 = _tmp$4;
  49514. while (true) {
  49515. if (!(p.$length >= 64)) { break; }
  49516. i = 0;
  49517. while (true) {
  49518. if (!(i < 16)) { break; }
  49519. j = i * 4 >> 0;
  49520. ((i < 0 || i >= w.length) ? $throwRuntimeError("index out of range") : w[i] = (((((((((j < 0 || j >= p.$length) ? $throwRuntimeError("index out of range") : p.$array[p.$offset + j]) >>> 0) << 24 >>> 0) | (((x = j + 1 >> 0, ((x < 0 || x >= p.$length) ? $throwRuntimeError("index out of range") : p.$array[p.$offset + x])) >>> 0) << 16 >>> 0)) >>> 0) | (((x$1 = j + 2 >> 0, ((x$1 < 0 || x$1 >= p.$length) ? $throwRuntimeError("index out of range") : p.$array[p.$offset + x$1])) >>> 0) << 8 >>> 0)) >>> 0) | ((x$2 = j + 3 >> 0, ((x$2 < 0 || x$2 >= p.$length) ? $throwRuntimeError("index out of range") : p.$array[p.$offset + x$2])) >>> 0)) >>> 0);
  49521. i = i + (1) >> 0;
  49522. }
  49523. _tmp$5 = h0; _tmp$6 = h1; _tmp$7 = h2; _tmp$8 = h3; _tmp$9 = h4; a = _tmp$5; b = _tmp$6; c = _tmp$7; d = _tmp$8; e = _tmp$9;
  49524. i$1 = 0;
  49525. while (true) {
  49526. if (!(i$1 < 16)) { break; }
  49527. f = (((b & c) >>> 0) | ((((~b >>> 0)) & d) >>> 0)) >>> 0;
  49528. a5 = ((a << 5 >>> 0) | (a >>> 27 >>> 0)) >>> 0;
  49529. b30 = ((b << 30 >>> 0) | (b >>> 2 >>> 0)) >>> 0;
  49530. t = (((a5 + f >>> 0) + e >>> 0) + (x$3 = i$1 & 15, ((x$3 < 0 || x$3 >= w.length) ? $throwRuntimeError("index out of range") : w[x$3])) >>> 0) + 1518500249 >>> 0;
  49531. _tmp$10 = t; _tmp$11 = a; _tmp$12 = b30; _tmp$13 = c; _tmp$14 = d; a = _tmp$10; b = _tmp$11; c = _tmp$12; d = _tmp$13; e = _tmp$14;
  49532. i$1 = i$1 + (1) >> 0;
  49533. }
  49534. while (true) {
  49535. if (!(i$1 < 20)) { break; }
  49536. tmp = ((((((x$4 = ((i$1 - 3 >> 0)) & 15, ((x$4 < 0 || x$4 >= w.length) ? $throwRuntimeError("index out of range") : w[x$4])) ^ (x$5 = ((i$1 - 8 >> 0)) & 15, ((x$5 < 0 || x$5 >= w.length) ? $throwRuntimeError("index out of range") : w[x$5]))) >>> 0) ^ (x$6 = ((i$1 - 14 >> 0)) & 15, ((x$6 < 0 || x$6 >= w.length) ? $throwRuntimeError("index out of range") : w[x$6]))) >>> 0) ^ (x$7 = (i$1) & 15, ((x$7 < 0 || x$7 >= w.length) ? $throwRuntimeError("index out of range") : w[x$7]))) >>> 0;
  49537. (x$8 = i$1 & 15, ((x$8 < 0 || x$8 >= w.length) ? $throwRuntimeError("index out of range") : w[x$8] = ((tmp << 1 >>> 0) | (tmp >>> 31 >>> 0)) >>> 0));
  49538. f$1 = (((b & c) >>> 0) | ((((~b >>> 0)) & d) >>> 0)) >>> 0;
  49539. a5$1 = ((a << 5 >>> 0) | (a >>> 27 >>> 0)) >>> 0;
  49540. b30$1 = ((b << 30 >>> 0) | (b >>> 2 >>> 0)) >>> 0;
  49541. t$1 = (((a5$1 + f$1 >>> 0) + e >>> 0) + (x$9 = i$1 & 15, ((x$9 < 0 || x$9 >= w.length) ? $throwRuntimeError("index out of range") : w[x$9])) >>> 0) + 1518500249 >>> 0;
  49542. _tmp$15 = t$1; _tmp$16 = a; _tmp$17 = b30$1; _tmp$18 = c; _tmp$19 = d; a = _tmp$15; b = _tmp$16; c = _tmp$17; d = _tmp$18; e = _tmp$19;
  49543. i$1 = i$1 + (1) >> 0;
  49544. }
  49545. while (true) {
  49546. if (!(i$1 < 40)) { break; }
  49547. tmp$1 = ((((((x$10 = ((i$1 - 3 >> 0)) & 15, ((x$10 < 0 || x$10 >= w.length) ? $throwRuntimeError("index out of range") : w[x$10])) ^ (x$11 = ((i$1 - 8 >> 0)) & 15, ((x$11 < 0 || x$11 >= w.length) ? $throwRuntimeError("index out of range") : w[x$11]))) >>> 0) ^ (x$12 = ((i$1 - 14 >> 0)) & 15, ((x$12 < 0 || x$12 >= w.length) ? $throwRuntimeError("index out of range") : w[x$12]))) >>> 0) ^ (x$13 = (i$1) & 15, ((x$13 < 0 || x$13 >= w.length) ? $throwRuntimeError("index out of range") : w[x$13]))) >>> 0;
  49548. (x$14 = i$1 & 15, ((x$14 < 0 || x$14 >= w.length) ? $throwRuntimeError("index out of range") : w[x$14] = ((tmp$1 << 1 >>> 0) | (tmp$1 >>> 31 >>> 0)) >>> 0));
  49549. f$2 = (((b ^ c) >>> 0) ^ d) >>> 0;
  49550. a5$2 = ((a << 5 >>> 0) | (a >>> 27 >>> 0)) >>> 0;
  49551. b30$2 = ((b << 30 >>> 0) | (b >>> 2 >>> 0)) >>> 0;
  49552. t$2 = (((a5$2 + f$2 >>> 0) + e >>> 0) + (x$15 = i$1 & 15, ((x$15 < 0 || x$15 >= w.length) ? $throwRuntimeError("index out of range") : w[x$15])) >>> 0) + 1859775393 >>> 0;
  49553. _tmp$20 = t$2; _tmp$21 = a; _tmp$22 = b30$2; _tmp$23 = c; _tmp$24 = d; a = _tmp$20; b = _tmp$21; c = _tmp$22; d = _tmp$23; e = _tmp$24;
  49554. i$1 = i$1 + (1) >> 0;
  49555. }
  49556. while (true) {
  49557. if (!(i$1 < 60)) { break; }
  49558. tmp$2 = ((((((x$16 = ((i$1 - 3 >> 0)) & 15, ((x$16 < 0 || x$16 >= w.length) ? $throwRuntimeError("index out of range") : w[x$16])) ^ (x$17 = ((i$1 - 8 >> 0)) & 15, ((x$17 < 0 || x$17 >= w.length) ? $throwRuntimeError("index out of range") : w[x$17]))) >>> 0) ^ (x$18 = ((i$1 - 14 >> 0)) & 15, ((x$18 < 0 || x$18 >= w.length) ? $throwRuntimeError("index out of range") : w[x$18]))) >>> 0) ^ (x$19 = (i$1) & 15, ((x$19 < 0 || x$19 >= w.length) ? $throwRuntimeError("index out of range") : w[x$19]))) >>> 0;
  49559. (x$20 = i$1 & 15, ((x$20 < 0 || x$20 >= w.length) ? $throwRuntimeError("index out of range") : w[x$20] = ((tmp$2 << 1 >>> 0) | (tmp$2 >>> 31 >>> 0)) >>> 0));
  49560. f$3 = (((((((b | c) >>> 0)) & d) >>> 0)) | (((b & c) >>> 0))) >>> 0;
  49561. a5$3 = ((a << 5 >>> 0) | (a >>> 27 >>> 0)) >>> 0;
  49562. b30$3 = ((b << 30 >>> 0) | (b >>> 2 >>> 0)) >>> 0;
  49563. t$3 = (((a5$3 + f$3 >>> 0) + e >>> 0) + (x$21 = i$1 & 15, ((x$21 < 0 || x$21 >= w.length) ? $throwRuntimeError("index out of range") : w[x$21])) >>> 0) + 2400959708 >>> 0;
  49564. _tmp$25 = t$3; _tmp$26 = a; _tmp$27 = b30$3; _tmp$28 = c; _tmp$29 = d; a = _tmp$25; b = _tmp$26; c = _tmp$27; d = _tmp$28; e = _tmp$29;
  49565. i$1 = i$1 + (1) >> 0;
  49566. }
  49567. while (true) {
  49568. if (!(i$1 < 80)) { break; }
  49569. tmp$3 = ((((((x$22 = ((i$1 - 3 >> 0)) & 15, ((x$22 < 0 || x$22 >= w.length) ? $throwRuntimeError("index out of range") : w[x$22])) ^ (x$23 = ((i$1 - 8 >> 0)) & 15, ((x$23 < 0 || x$23 >= w.length) ? $throwRuntimeError("index out of range") : w[x$23]))) >>> 0) ^ (x$24 = ((i$1 - 14 >> 0)) & 15, ((x$24 < 0 || x$24 >= w.length) ? $throwRuntimeError("index out of range") : w[x$24]))) >>> 0) ^ (x$25 = (i$1) & 15, ((x$25 < 0 || x$25 >= w.length) ? $throwRuntimeError("index out of range") : w[x$25]))) >>> 0;
  49570. (x$26 = i$1 & 15, ((x$26 < 0 || x$26 >= w.length) ? $throwRuntimeError("index out of range") : w[x$26] = ((tmp$3 << 1 >>> 0) | (tmp$3 >>> 31 >>> 0)) >>> 0));
  49571. f$4 = (((b ^ c) >>> 0) ^ d) >>> 0;
  49572. a5$4 = ((a << 5 >>> 0) | (a >>> 27 >>> 0)) >>> 0;
  49573. b30$4 = ((b << 30 >>> 0) | (b >>> 2 >>> 0)) >>> 0;
  49574. t$4 = (((a5$4 + f$4 >>> 0) + e >>> 0) + (x$27 = i$1 & 15, ((x$27 < 0 || x$27 >= w.length) ? $throwRuntimeError("index out of range") : w[x$27])) >>> 0) + 3395469782 >>> 0;
  49575. _tmp$30 = t$4; _tmp$31 = a; _tmp$32 = b30$4; _tmp$33 = c; _tmp$34 = d; a = _tmp$30; b = _tmp$31; c = _tmp$32; d = _tmp$33; e = _tmp$34;
  49576. i$1 = i$1 + (1) >> 0;
  49577. }
  49578. h0 = h0 + (a) >>> 0;
  49579. h1 = h1 + (b) >>> 0;
  49580. h2 = h2 + (c) >>> 0;
  49581. h3 = h3 + (d) >>> 0;
  49582. h4 = h4 + (e) >>> 0;
  49583. p = $subslice(p, 64);
  49584. }
  49585. _tmp$35 = h0; _tmp$36 = h1; _tmp$37 = h2; _tmp$38 = h3; _tmp$39 = h4; dig.h[0] = _tmp$35; dig.h[1] = _tmp$36; dig.h[2] = _tmp$37; dig.h[3] = _tmp$38; dig.h[4] = _tmp$39;
  49586. };
  49587. ptrType.methods = [{prop: "Reset", name: "Reset", pkg: "", typ: $funcType([], [], false)}, {prop: "Size", name: "Size", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "BlockSize", name: "BlockSize", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType], [$Int, $error], false)}, {prop: "Sum", name: "Sum", pkg: "", typ: $funcType([sliceType], [sliceType], false)}, {prop: "checkSum", name: "checkSum", pkg: "crypto/sha1", typ: $funcType([], [arrayType], false)}];
  49588. digest.init([{prop: "h", name: "h", pkg: "crypto/sha1", typ: arrayType$3, tag: ""}, {prop: "x", name: "x", pkg: "crypto/sha1", typ: arrayType$1, tag: ""}, {prop: "nx", name: "nx", pkg: "crypto/sha1", typ: $Int, tag: ""}, {prop: "len", name: "len", pkg: "crypto/sha1", typ: $Uint64, tag: ""}]);
  49589. $init = function() {
  49590. $pkg.$init = function() {};
  49591. /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  49592. $r = crypto.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  49593. $r = hash.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  49594. block = blockGeneric;
  49595. init();
  49596. /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
  49597. };
  49598. $pkg.$init = $init;
  49599. return $pkg;
  49600. })();
  49601. $packages["crypto/sha256"] = (function() {
  49602. var $pkg = {}, $init, crypto, hash, digest, sliceType, sliceType$1, arrayType, arrayType$1, arrayType$3, arrayType$4, ptrType, _K, init, New, New224, block;
  49603. crypto = $packages["crypto"];
  49604. hash = $packages["hash"];
  49605. digest = $pkg.digest = $newType(0, $kindStruct, "sha256.digest", "digest", "crypto/sha256", function(h_, x_, nx_, len_, is224_) {
  49606. this.$val = this;
  49607. if (arguments.length === 0) {
  49608. this.h = arrayType$4.zero();
  49609. this.x = arrayType$1.zero();
  49610. this.nx = 0;
  49611. this.len = new $Uint64(0, 0);
  49612. this.is224 = false;
  49613. return;
  49614. }
  49615. this.h = h_;
  49616. this.x = x_;
  49617. this.nx = nx_;
  49618. this.len = len_;
  49619. this.is224 = is224_;
  49620. });
  49621. sliceType = $sliceType($Uint32);
  49622. sliceType$1 = $sliceType($Uint8);
  49623. arrayType = $arrayType($Uint8, 32);
  49624. arrayType$1 = $arrayType($Uint8, 64);
  49625. arrayType$3 = $arrayType($Uint32, 64);
  49626. arrayType$4 = $arrayType($Uint32, 8);
  49627. ptrType = $ptrType(digest);
  49628. init = function() {
  49629. var $ptr;
  49630. crypto.RegisterHash(4, New224);
  49631. crypto.RegisterHash(5, New);
  49632. };
  49633. digest.ptr.prototype.Reset = function() {
  49634. var $ptr, d;
  49635. d = this;
  49636. if (!d.is224) {
  49637. d.h[0] = 1779033703;
  49638. d.h[1] = 3144134277;
  49639. d.h[2] = 1013904242;
  49640. d.h[3] = 2773480762;
  49641. d.h[4] = 1359893119;
  49642. d.h[5] = 2600822924;
  49643. d.h[6] = 528734635;
  49644. d.h[7] = 1541459225;
  49645. } else {
  49646. d.h[0] = 3238371032;
  49647. d.h[1] = 914150663;
  49648. d.h[2] = 812702999;
  49649. d.h[3] = 4144912697;
  49650. d.h[4] = 4290775857;
  49651. d.h[5] = 1750603025;
  49652. d.h[6] = 1694076839;
  49653. d.h[7] = 3204075428;
  49654. }
  49655. d.nx = 0;
  49656. d.len = new $Uint64(0, 0);
  49657. };
  49658. digest.prototype.Reset = function() { return this.$val.Reset(); };
  49659. New = function() {
  49660. var $ptr, d;
  49661. d = new digest.ptr();
  49662. d.Reset();
  49663. return d;
  49664. };
  49665. $pkg.New = New;
  49666. New224 = function() {
  49667. var $ptr, d;
  49668. d = new digest.ptr();
  49669. d.is224 = true;
  49670. d.Reset();
  49671. return d;
  49672. };
  49673. $pkg.New224 = New224;
  49674. digest.ptr.prototype.Size = function() {
  49675. var $ptr, d;
  49676. d = this;
  49677. if (!d.is224) {
  49678. return 32;
  49679. }
  49680. return 28;
  49681. };
  49682. digest.prototype.Size = function() { return this.$val.Size(); };
  49683. digest.ptr.prototype.BlockSize = function() {
  49684. var $ptr, d;
  49685. d = this;
  49686. return 64;
  49687. };
  49688. digest.prototype.BlockSize = function() { return this.$val.BlockSize(); };
  49689. digest.ptr.prototype.Write = function(p) {
  49690. var $ptr, d, err, n, n$1, nn, p, x, x$1;
  49691. nn = 0;
  49692. err = $ifaceNil;
  49693. d = this;
  49694. nn = p.$length;
  49695. d.len = (x = d.len, x$1 = new $Uint64(0, nn), new $Uint64(x.$high + x$1.$high, x.$low + x$1.$low));
  49696. if (d.nx > 0) {
  49697. n = $copySlice($subslice(new sliceType$1(d.x), d.nx), p);
  49698. d.nx = d.nx + (n) >> 0;
  49699. if (d.nx === 64) {
  49700. block(d, new sliceType$1(d.x));
  49701. d.nx = 0;
  49702. }
  49703. p = $subslice(p, n);
  49704. }
  49705. if (p.$length >= 64) {
  49706. n$1 = (p.$length & ~63) >> 0;
  49707. block(d, $subslice(p, 0, n$1));
  49708. p = $subslice(p, n$1);
  49709. }
  49710. if (p.$length > 0) {
  49711. d.nx = $copySlice(new sliceType$1(d.x), p);
  49712. }
  49713. return [nn, err];
  49714. };
  49715. digest.prototype.Write = function(p) { return this.$val.Write(p); };
  49716. digest.ptr.prototype.Sum = function(in$1) {
  49717. var $ptr, d, d0, hash$1, in$1;
  49718. d0 = this;
  49719. d = $clone(d0, digest);
  49720. hash$1 = $clone(d.checkSum(), arrayType);
  49721. if (d.is224) {
  49722. return $appendSlice(in$1, $subslice(new sliceType$1(hash$1), 0, 28));
  49723. }
  49724. return $appendSlice(in$1, new sliceType$1(hash$1));
  49725. };
  49726. digest.prototype.Sum = function(in$1) { return this.$val.Sum(in$1); };
  49727. digest.ptr.prototype.checkSum = function() {
  49728. var $ptr, _i, _ref, d, digest$1, h, i, i$1, len, s, tmp, x, x$1, x$2, x$3, x$4, x$5, x$6;
  49729. d = this;
  49730. len = d.len;
  49731. tmp = $clone(arrayType$1.zero(), arrayType$1);
  49732. tmp[0] = 128;
  49733. if ((x = $div64(len, new $Uint64(0, 64), true), (x.$high < 0 || (x.$high === 0 && x.$low < 56)))) {
  49734. d.Write($subslice(new sliceType$1(tmp), 0, $flatten64((x$1 = $div64(len, new $Uint64(0, 64), true), new $Uint64(0 - x$1.$high, 56 - x$1.$low)))));
  49735. } else {
  49736. d.Write($subslice(new sliceType$1(tmp), 0, $flatten64((x$2 = $div64(len, new $Uint64(0, 64), true), new $Uint64(0 - x$2.$high, 120 - x$2.$low)))));
  49737. }
  49738. len = $shiftLeft64(len, (3));
  49739. i = 0;
  49740. while (true) {
  49741. if (!(i < 8)) { break; }
  49742. ((i < 0 || i >= tmp.length) ? $throwRuntimeError("index out of range") : tmp[i] = ($shiftRightUint64(len, ((56 - (8 * i >>> 0) >>> 0))).$low << 24 >>> 24));
  49743. i = i + (1) >>> 0;
  49744. }
  49745. d.Write($subslice(new sliceType$1(tmp), 0, 8));
  49746. if (!((d.nx === 0))) {
  49747. $panic(new $String("d.nx != 0"));
  49748. }
  49749. h = new sliceType(d.h);
  49750. if (d.is224) {
  49751. h = $subslice(new sliceType(d.h), 0, 7);
  49752. }
  49753. digest$1 = $clone(arrayType.zero(), arrayType);
  49754. _ref = h;
  49755. _i = 0;
  49756. while (true) {
  49757. if (!(_i < _ref.$length)) { break; }
  49758. i$1 = _i;
  49759. s = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]);
  49760. (x$3 = i$1 * 4 >> 0, ((x$3 < 0 || x$3 >= digest$1.length) ? $throwRuntimeError("index out of range") : digest$1[x$3] = ((s >>> 24 >>> 0) << 24 >>> 24)));
  49761. (x$4 = (i$1 * 4 >> 0) + 1 >> 0, ((x$4 < 0 || x$4 >= digest$1.length) ? $throwRuntimeError("index out of range") : digest$1[x$4] = ((s >>> 16 >>> 0) << 24 >>> 24)));
  49762. (x$5 = (i$1 * 4 >> 0) + 2 >> 0, ((x$5 < 0 || x$5 >= digest$1.length) ? $throwRuntimeError("index out of range") : digest$1[x$5] = ((s >>> 8 >>> 0) << 24 >>> 24)));
  49763. (x$6 = (i$1 * 4 >> 0) + 3 >> 0, ((x$6 < 0 || x$6 >= digest$1.length) ? $throwRuntimeError("index out of range") : digest$1[x$6] = (s << 24 >>> 24)));
  49764. _i++;
  49765. }
  49766. return digest$1;
  49767. };
  49768. digest.prototype.checkSum = function() { return this.$val.checkSum(); };
  49769. block = function(dig, p) {
  49770. var $ptr, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$16, _tmp$17, _tmp$18, _tmp$19, _tmp$2, _tmp$20, _tmp$21, _tmp$22, _tmp$23, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, a, b, c, d, dig, e, f, g, h, h0, h1, h2, h3, h4, h5, h6, h7, i, i$1, i$2, j, p, t1, t1$1, t2, t2$1, v1, v2, w, x, x$1, x$2, x$3, x$4, x$5, x$6;
  49771. w = $clone(arrayType$3.zero(), arrayType$3);
  49772. _tmp = dig.h[0]; _tmp$1 = dig.h[1]; _tmp$2 = dig.h[2]; _tmp$3 = dig.h[3]; _tmp$4 = dig.h[4]; _tmp$5 = dig.h[5]; _tmp$6 = dig.h[6]; _tmp$7 = dig.h[7]; h0 = _tmp; h1 = _tmp$1; h2 = _tmp$2; h3 = _tmp$3; h4 = _tmp$4; h5 = _tmp$5; h6 = _tmp$6; h7 = _tmp$7;
  49773. while (true) {
  49774. if (!(p.$length >= 64)) { break; }
  49775. i = 0;
  49776. while (true) {
  49777. if (!(i < 16)) { break; }
  49778. j = i * 4 >> 0;
  49779. ((i < 0 || i >= w.length) ? $throwRuntimeError("index out of range") : w[i] = (((((((((j < 0 || j >= p.$length) ? $throwRuntimeError("index out of range") : p.$array[p.$offset + j]) >>> 0) << 24 >>> 0) | (((x = j + 1 >> 0, ((x < 0 || x >= p.$length) ? $throwRuntimeError("index out of range") : p.$array[p.$offset + x])) >>> 0) << 16 >>> 0)) >>> 0) | (((x$1 = j + 2 >> 0, ((x$1 < 0 || x$1 >= p.$length) ? $throwRuntimeError("index out of range") : p.$array[p.$offset + x$1])) >>> 0) << 8 >>> 0)) >>> 0) | ((x$2 = j + 3 >> 0, ((x$2 < 0 || x$2 >= p.$length) ? $throwRuntimeError("index out of range") : p.$array[p.$offset + x$2])) >>> 0)) >>> 0);
  49780. i = i + (1) >> 0;
  49781. }
  49782. i$1 = 16;
  49783. while (true) {
  49784. if (!(i$1 < 64)) { break; }
  49785. v1 = (x$3 = i$1 - 2 >> 0, ((x$3 < 0 || x$3 >= w.length) ? $throwRuntimeError("index out of range") : w[x$3]));
  49786. t1 = (((((((v1 >>> 17 >>> 0) | (v1 << 15 >>> 0)) >>> 0)) ^ ((((v1 >>> 19 >>> 0) | (v1 << 13 >>> 0)) >>> 0))) >>> 0) ^ ((v1 >>> 10 >>> 0))) >>> 0;
  49787. v2 = (x$4 = i$1 - 15 >> 0, ((x$4 < 0 || x$4 >= w.length) ? $throwRuntimeError("index out of range") : w[x$4]));
  49788. t2 = (((((((v2 >>> 7 >>> 0) | (v2 << 25 >>> 0)) >>> 0)) ^ ((((v2 >>> 18 >>> 0) | (v2 << 14 >>> 0)) >>> 0))) >>> 0) ^ ((v2 >>> 3 >>> 0))) >>> 0;
  49789. ((i$1 < 0 || i$1 >= w.length) ? $throwRuntimeError("index out of range") : w[i$1] = ((t1 + (x$5 = i$1 - 7 >> 0, ((x$5 < 0 || x$5 >= w.length) ? $throwRuntimeError("index out of range") : w[x$5])) >>> 0) + t2 >>> 0) + (x$6 = i$1 - 16 >> 0, ((x$6 < 0 || x$6 >= w.length) ? $throwRuntimeError("index out of range") : w[x$6])) >>> 0);
  49790. i$1 = i$1 + (1) >> 0;
  49791. }
  49792. _tmp$8 = h0; _tmp$9 = h1; _tmp$10 = h2; _tmp$11 = h3; _tmp$12 = h4; _tmp$13 = h5; _tmp$14 = h6; _tmp$15 = h7; a = _tmp$8; b = _tmp$9; c = _tmp$10; d = _tmp$11; e = _tmp$12; f = _tmp$13; g = _tmp$14; h = _tmp$15;
  49793. i$2 = 0;
  49794. while (true) {
  49795. if (!(i$2 < 64)) { break; }
  49796. t1$1 = (((h + (((((((((e >>> 6 >>> 0) | (e << 26 >>> 0)) >>> 0)) ^ ((((e >>> 11 >>> 0) | (e << 21 >>> 0)) >>> 0))) >>> 0) ^ ((((e >>> 25 >>> 0) | (e << 7 >>> 0)) >>> 0))) >>> 0)) >>> 0) + ((((((e & f) >>> 0)) ^ ((((~e >>> 0) & g) >>> 0))) >>> 0)) >>> 0) + ((i$2 < 0 || i$2 >= _K.$length) ? $throwRuntimeError("index out of range") : _K.$array[_K.$offset + i$2]) >>> 0) + ((i$2 < 0 || i$2 >= w.length) ? $throwRuntimeError("index out of range") : w[i$2]) >>> 0;
  49797. t2$1 = (((((((((a >>> 2 >>> 0) | (a << 30 >>> 0)) >>> 0)) ^ ((((a >>> 13 >>> 0) | (a << 19 >>> 0)) >>> 0))) >>> 0) ^ ((((a >>> 22 >>> 0) | (a << 10 >>> 0)) >>> 0))) >>> 0)) + ((((((((a & b) >>> 0)) ^ (((a & c) >>> 0))) >>> 0) ^ (((b & c) >>> 0))) >>> 0)) >>> 0;
  49798. h = g;
  49799. g = f;
  49800. f = e;
  49801. e = d + t1$1 >>> 0;
  49802. d = c;
  49803. c = b;
  49804. b = a;
  49805. a = t1$1 + t2$1 >>> 0;
  49806. i$2 = i$2 + (1) >> 0;
  49807. }
  49808. h0 = h0 + (a) >>> 0;
  49809. h1 = h1 + (b) >>> 0;
  49810. h2 = h2 + (c) >>> 0;
  49811. h3 = h3 + (d) >>> 0;
  49812. h4 = h4 + (e) >>> 0;
  49813. h5 = h5 + (f) >>> 0;
  49814. h6 = h6 + (g) >>> 0;
  49815. h7 = h7 + (h) >>> 0;
  49816. p = $subslice(p, 64);
  49817. }
  49818. _tmp$16 = h0; _tmp$17 = h1; _tmp$18 = h2; _tmp$19 = h3; _tmp$20 = h4; _tmp$21 = h5; _tmp$22 = h6; _tmp$23 = h7; dig.h[0] = _tmp$16; dig.h[1] = _tmp$17; dig.h[2] = _tmp$18; dig.h[3] = _tmp$19; dig.h[4] = _tmp$20; dig.h[5] = _tmp$21; dig.h[6] = _tmp$22; dig.h[7] = _tmp$23;
  49819. };
  49820. ptrType.methods = [{prop: "Reset", name: "Reset", pkg: "", typ: $funcType([], [], false)}, {prop: "Size", name: "Size", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "BlockSize", name: "BlockSize", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType$1], [$Int, $error], false)}, {prop: "Sum", name: "Sum", pkg: "", typ: $funcType([sliceType$1], [sliceType$1], false)}, {prop: "checkSum", name: "checkSum", pkg: "crypto/sha256", typ: $funcType([], [arrayType], false)}];
  49821. digest.init([{prop: "h", name: "h", pkg: "crypto/sha256", typ: arrayType$4, tag: ""}, {prop: "x", name: "x", pkg: "crypto/sha256", typ: arrayType$1, tag: ""}, {prop: "nx", name: "nx", pkg: "crypto/sha256", typ: $Int, tag: ""}, {prop: "len", name: "len", pkg: "crypto/sha256", typ: $Uint64, tag: ""}, {prop: "is224", name: "is224", pkg: "crypto/sha256", typ: $Bool, tag: ""}]);
  49822. $init = function() {
  49823. $pkg.$init = function() {};
  49824. /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  49825. $r = crypto.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  49826. $r = hash.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  49827. _K = new sliceType([1116352408, 1899447441, 3049323471, 3921009573, 961987163, 1508970993, 2453635748, 2870763221, 3624381080, 310598401, 607225278, 1426881987, 1925078388, 2162078206, 2614888103, 3248222580, 3835390401, 4022224774, 264347078, 604807628, 770255983, 1249150122, 1555081692, 1996064986, 2554220882, 2821834349, 2952996808, 3210313671, 3336571891, 3584528711, 113926993, 338241895, 666307205, 773529912, 1294757372, 1396182291, 1695183700, 1986661051, 2177026350, 2456956037, 2730485921, 2820302411, 3259730800, 3345764771, 3516065817, 3600352804, 4094571909, 275423344, 430227734, 506948616, 659060556, 883997877, 958139571, 1322822218, 1537002063, 1747873779, 1955562222, 2024104815, 2227730452, 2361852424, 2428436474, 2756734187, 3204031479, 3329325298]);
  49828. init();
  49829. /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
  49830. };
  49831. $pkg.$init = $init;
  49832. return $pkg;
  49833. })();
  49834. $packages["crypto/dsa"] = (function() {
  49835. var $pkg = {}, $init, errors, io, big, Parameters, PublicKey, ptrType, Verify;
  49836. errors = $packages["errors"];
  49837. io = $packages["io"];
  49838. big = $packages["math/big"];
  49839. Parameters = $pkg.Parameters = $newType(0, $kindStruct, "dsa.Parameters", "Parameters", "crypto/dsa", function(P_, Q_, G_) {
  49840. this.$val = this;
  49841. if (arguments.length === 0) {
  49842. this.P = ptrType.nil;
  49843. this.Q = ptrType.nil;
  49844. this.G = ptrType.nil;
  49845. return;
  49846. }
  49847. this.P = P_;
  49848. this.Q = Q_;
  49849. this.G = G_;
  49850. });
  49851. PublicKey = $pkg.PublicKey = $newType(0, $kindStruct, "dsa.PublicKey", "PublicKey", "crypto/dsa", function(Parameters_, Y_) {
  49852. this.$val = this;
  49853. if (arguments.length === 0) {
  49854. this.Parameters = new Parameters.ptr();
  49855. this.Y = ptrType.nil;
  49856. return;
  49857. }
  49858. this.Parameters = Parameters_;
  49859. this.Y = Y_;
  49860. });
  49861. ptrType = $ptrType(big.Int);
  49862. Verify = function(pub, hash, r, s) {
  49863. var $ptr, hash, n, pub, r, s, u1, u2, v, w, z;
  49864. if (r.Sign() < 1 || r.Cmp(pub.Parameters.Q) >= 0) {
  49865. return false;
  49866. }
  49867. if (s.Sign() < 1 || s.Cmp(pub.Parameters.Q) >= 0) {
  49868. return false;
  49869. }
  49870. w = new big.Int.ptr().ModInverse(s, pub.Parameters.Q);
  49871. n = pub.Parameters.Q.BitLen();
  49872. if (!(((n & 7) === 0))) {
  49873. return false;
  49874. }
  49875. z = new big.Int.ptr().SetBytes(hash);
  49876. u1 = new big.Int.ptr().Mul(z, w);
  49877. u1.Mod(u1, pub.Parameters.Q);
  49878. u2 = w.Mul(r, w);
  49879. u2.Mod(u2, pub.Parameters.Q);
  49880. v = u1.Exp(pub.Parameters.G, u1, pub.Parameters.P);
  49881. u2.Exp(pub.Y, u2, pub.Parameters.P);
  49882. v.Mul(v, u2);
  49883. v.Mod(v, pub.Parameters.P);
  49884. v.Mod(v, pub.Parameters.Q);
  49885. return v.Cmp(r) === 0;
  49886. };
  49887. $pkg.Verify = Verify;
  49888. Parameters.init([{prop: "P", name: "P", pkg: "", typ: ptrType, tag: ""}, {prop: "Q", name: "Q", pkg: "", typ: ptrType, tag: ""}, {prop: "G", name: "G", pkg: "", typ: ptrType, tag: ""}]);
  49889. PublicKey.init([{prop: "Parameters", name: "", pkg: "", typ: Parameters, tag: ""}, {prop: "Y", name: "Y", pkg: "", typ: ptrType, tag: ""}]);
  49890. $init = function() {
  49891. $pkg.$init = function() {};
  49892. /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  49893. $r = errors.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  49894. $r = io.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  49895. $r = big.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  49896. $pkg.ErrInvalidPublicKey = errors.New("crypto/dsa: invalid public key");
  49897. /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
  49898. };
  49899. $pkg.$init = $init;
  49900. return $pkg;
  49901. })();
  49902. $packages["crypto/sha512"] = (function() {
  49903. var $pkg = {}, $init, crypto, hash, digest, sliceType, sliceType$1, arrayType, arrayType$1, arrayType$3, arrayType$4, ptrType, _K, init, New, New384, block;
  49904. crypto = $packages["crypto"];
  49905. hash = $packages["hash"];
  49906. digest = $pkg.digest = $newType(0, $kindStruct, "sha512.digest", "digest", "crypto/sha512", function(h_, x_, nx_, len_, is384_) {
  49907. this.$val = this;
  49908. if (arguments.length === 0) {
  49909. this.h = arrayType$4.zero();
  49910. this.x = arrayType$1.zero();
  49911. this.nx = 0;
  49912. this.len = new $Uint64(0, 0);
  49913. this.is384 = false;
  49914. return;
  49915. }
  49916. this.h = h_;
  49917. this.x = x_;
  49918. this.nx = nx_;
  49919. this.len = len_;
  49920. this.is384 = is384_;
  49921. });
  49922. sliceType = $sliceType($Uint64);
  49923. sliceType$1 = $sliceType($Uint8);
  49924. arrayType = $arrayType($Uint8, 64);
  49925. arrayType$1 = $arrayType($Uint8, 128);
  49926. arrayType$3 = $arrayType($Uint64, 80);
  49927. arrayType$4 = $arrayType($Uint64, 8);
  49928. ptrType = $ptrType(digest);
  49929. init = function() {
  49930. var $ptr;
  49931. crypto.RegisterHash(6, New384);
  49932. crypto.RegisterHash(7, New);
  49933. };
  49934. digest.ptr.prototype.Reset = function() {
  49935. var $ptr, d;
  49936. d = this;
  49937. if (!d.is384) {
  49938. d.h[0] = new $Uint64(1779033703, 4089235720);
  49939. d.h[1] = new $Uint64(3144134277, 2227873595);
  49940. d.h[2] = new $Uint64(1013904242, 4271175723);
  49941. d.h[3] = new $Uint64(2773480762, 1595750129);
  49942. d.h[4] = new $Uint64(1359893119, 2917565137);
  49943. d.h[5] = new $Uint64(2600822924, 725511199);
  49944. d.h[6] = new $Uint64(528734635, 4215389547);
  49945. d.h[7] = new $Uint64(1541459225, 327033209);
  49946. } else {
  49947. d.h[0] = new $Uint64(3418070365, 3238371032);
  49948. d.h[1] = new $Uint64(1654270250, 914150663);
  49949. d.h[2] = new $Uint64(2438529370, 812702999);
  49950. d.h[3] = new $Uint64(355462360, 4144912697);
  49951. d.h[4] = new $Uint64(1731405415, 4290775857);
  49952. d.h[5] = new $Uint64(2394180231, 1750603025);
  49953. d.h[6] = new $Uint64(3675008525, 1694076839);
  49954. d.h[7] = new $Uint64(1203062813, 3204075428);
  49955. }
  49956. d.nx = 0;
  49957. d.len = new $Uint64(0, 0);
  49958. };
  49959. digest.prototype.Reset = function() { return this.$val.Reset(); };
  49960. New = function() {
  49961. var $ptr, d;
  49962. d = new digest.ptr();
  49963. d.Reset();
  49964. return d;
  49965. };
  49966. $pkg.New = New;
  49967. New384 = function() {
  49968. var $ptr, d;
  49969. d = new digest.ptr();
  49970. d.is384 = true;
  49971. d.Reset();
  49972. return d;
  49973. };
  49974. $pkg.New384 = New384;
  49975. digest.ptr.prototype.Size = function() {
  49976. var $ptr, d;
  49977. d = this;
  49978. if (!d.is384) {
  49979. return 64;
  49980. }
  49981. return 48;
  49982. };
  49983. digest.prototype.Size = function() { return this.$val.Size(); };
  49984. digest.ptr.prototype.BlockSize = function() {
  49985. var $ptr, d;
  49986. d = this;
  49987. return 128;
  49988. };
  49989. digest.prototype.BlockSize = function() { return this.$val.BlockSize(); };
  49990. digest.ptr.prototype.Write = function(p) {
  49991. var $ptr, d, err, n, n$1, nn, p, x, x$1;
  49992. nn = 0;
  49993. err = $ifaceNil;
  49994. d = this;
  49995. nn = p.$length;
  49996. d.len = (x = d.len, x$1 = new $Uint64(0, nn), new $Uint64(x.$high + x$1.$high, x.$low + x$1.$low));
  49997. if (d.nx > 0) {
  49998. n = $copySlice($subslice(new sliceType$1(d.x), d.nx), p);
  49999. d.nx = d.nx + (n) >> 0;
  50000. if (d.nx === 128) {
  50001. block(d, new sliceType$1(d.x));
  50002. d.nx = 0;
  50003. }
  50004. p = $subslice(p, n);
  50005. }
  50006. if (p.$length >= 128) {
  50007. n$1 = (p.$length & ~127) >> 0;
  50008. block(d, $subslice(p, 0, n$1));
  50009. p = $subslice(p, n$1);
  50010. }
  50011. if (p.$length > 0) {
  50012. d.nx = $copySlice(new sliceType$1(d.x), p);
  50013. }
  50014. return [nn, err];
  50015. };
  50016. digest.prototype.Write = function(p) { return this.$val.Write(p); };
  50017. digest.ptr.prototype.Sum = function(in$1) {
  50018. var $ptr, d, d0, hash$1, in$1;
  50019. d0 = this;
  50020. d = new digest.ptr();
  50021. $copy(d, d0, digest);
  50022. hash$1 = $clone(d.checkSum(), arrayType);
  50023. if (d.is384) {
  50024. return $appendSlice(in$1, $subslice(new sliceType$1(hash$1), 0, 48));
  50025. }
  50026. return $appendSlice(in$1, new sliceType$1(hash$1));
  50027. };
  50028. digest.prototype.Sum = function(in$1) { return this.$val.Sum(in$1); };
  50029. digest.ptr.prototype.checkSum = function() {
  50030. var $ptr, _i, _ref, d, digest$1, h, i, i$1, len, s, tmp, x, x$1, x$10, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9;
  50031. d = this;
  50032. len = d.len;
  50033. tmp = $clone(arrayType$1.zero(), arrayType$1);
  50034. tmp[0] = 128;
  50035. if ((x = $div64(len, new $Uint64(0, 128), true), (x.$high < 0 || (x.$high === 0 && x.$low < 112)))) {
  50036. d.Write($subslice(new sliceType$1(tmp), 0, $flatten64((x$1 = $div64(len, new $Uint64(0, 128), true), new $Uint64(0 - x$1.$high, 112 - x$1.$low)))));
  50037. } else {
  50038. d.Write($subslice(new sliceType$1(tmp), 0, $flatten64((x$2 = $div64(len, new $Uint64(0, 128), true), new $Uint64(0 - x$2.$high, 240 - x$2.$low)))));
  50039. }
  50040. len = $shiftLeft64(len, (3));
  50041. i = 0;
  50042. while (true) {
  50043. if (!(i < 16)) { break; }
  50044. ((i < 0 || i >= tmp.length) ? $throwRuntimeError("index out of range") : tmp[i] = ($shiftRightUint64(len, ((120 - (8 * i >>> 0) >>> 0))).$low << 24 >>> 24));
  50045. i = i + (1) >>> 0;
  50046. }
  50047. d.Write($subslice(new sliceType$1(tmp), 0, 16));
  50048. if (!((d.nx === 0))) {
  50049. $panic(new $String("d.nx != 0"));
  50050. }
  50051. h = new sliceType(d.h);
  50052. if (d.is384) {
  50053. h = $subslice(new sliceType(d.h), 0, 6);
  50054. }
  50055. digest$1 = $clone(arrayType.zero(), arrayType);
  50056. _ref = h;
  50057. _i = 0;
  50058. while (true) {
  50059. if (!(_i < _ref.$length)) { break; }
  50060. i$1 = _i;
  50061. s = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]);
  50062. (x$3 = i$1 * 8 >> 0, ((x$3 < 0 || x$3 >= digest$1.length) ? $throwRuntimeError("index out of range") : digest$1[x$3] = ($shiftRightUint64(s, 56).$low << 24 >>> 24)));
  50063. (x$4 = (i$1 * 8 >> 0) + 1 >> 0, ((x$4 < 0 || x$4 >= digest$1.length) ? $throwRuntimeError("index out of range") : digest$1[x$4] = ($shiftRightUint64(s, 48).$low << 24 >>> 24)));
  50064. (x$5 = (i$1 * 8 >> 0) + 2 >> 0, ((x$5 < 0 || x$5 >= digest$1.length) ? $throwRuntimeError("index out of range") : digest$1[x$5] = ($shiftRightUint64(s, 40).$low << 24 >>> 24)));
  50065. (x$6 = (i$1 * 8 >> 0) + 3 >> 0, ((x$6 < 0 || x$6 >= digest$1.length) ? $throwRuntimeError("index out of range") : digest$1[x$6] = ($shiftRightUint64(s, 32).$low << 24 >>> 24)));
  50066. (x$7 = (i$1 * 8 >> 0) + 4 >> 0, ((x$7 < 0 || x$7 >= digest$1.length) ? $throwRuntimeError("index out of range") : digest$1[x$7] = ($shiftRightUint64(s, 24).$low << 24 >>> 24)));
  50067. (x$8 = (i$1 * 8 >> 0) + 5 >> 0, ((x$8 < 0 || x$8 >= digest$1.length) ? $throwRuntimeError("index out of range") : digest$1[x$8] = ($shiftRightUint64(s, 16).$low << 24 >>> 24)));
  50068. (x$9 = (i$1 * 8 >> 0) + 6 >> 0, ((x$9 < 0 || x$9 >= digest$1.length) ? $throwRuntimeError("index out of range") : digest$1[x$9] = ($shiftRightUint64(s, 8).$low << 24 >>> 24)));
  50069. (x$10 = (i$1 * 8 >> 0) + 7 >> 0, ((x$10 < 0 || x$10 >= digest$1.length) ? $throwRuntimeError("index out of range") : digest$1[x$10] = (s.$low << 24 >>> 24)));
  50070. _i++;
  50071. }
  50072. return digest$1;
  50073. };
  50074. digest.prototype.checkSum = function() { return this.$val.checkSum(); };
  50075. block = function(dig, p) {
  50076. var $ptr, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$16, _tmp$17, _tmp$18, _tmp$19, _tmp$2, _tmp$20, _tmp$21, _tmp$22, _tmp$23, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, a, b, c, d, dig, e, f, g, h, h0, h1, h2, h3, h4, h5, h6, h7, i, i$1, i$2, j, p, t1, t1$1, t2, t2$1, v1, v2, w, x, x$1, x$10, x$11, x$12, x$13, x$14, x$15, x$16, x$17, x$18, x$19, x$2, x$20, x$21, x$22, x$23, x$24, x$25, x$26, x$27, x$28, x$29, x$3, x$30, x$31, x$32, x$33, x$34, x$35, x$36, x$37, x$38, x$39, x$4, x$40, x$41, x$42, x$43, x$44, x$45, x$46, x$47, x$48, x$49, x$5, x$50, x$51, x$52, x$53, x$54, x$55, x$56, x$57, x$58, x$59, x$6, x$60, x$61, x$62, x$63, x$64, x$65, x$66, x$67, x$68, x$69, x$7, x$70, x$71, x$72, x$73, x$74, x$75, x$76, x$77, x$78, x$79, x$8, x$80, x$81, x$82, x$83, x$84, x$85, x$86, x$87, x$88, x$9;
  50077. w = $clone(arrayType$3.zero(), arrayType$3);
  50078. _tmp = dig.h[0]; _tmp$1 = dig.h[1]; _tmp$2 = dig.h[2]; _tmp$3 = dig.h[3]; _tmp$4 = dig.h[4]; _tmp$5 = dig.h[5]; _tmp$6 = dig.h[6]; _tmp$7 = dig.h[7]; h0 = _tmp; h1 = _tmp$1; h2 = _tmp$2; h3 = _tmp$3; h4 = _tmp$4; h5 = _tmp$5; h6 = _tmp$6; h7 = _tmp$7;
  50079. while (true) {
  50080. if (!(p.$length >= 128)) { break; }
  50081. i = 0;
  50082. while (true) {
  50083. if (!(i < 16)) { break; }
  50084. j = i * 8 >> 0;
  50085. ((i < 0 || i >= w.length) ? $throwRuntimeError("index out of range") : w[i] = (x = (x$1 = (x$2 = (x$3 = (x$4 = (x$5 = (x$6 = $shiftLeft64(new $Uint64(0, ((j < 0 || j >= p.$length) ? $throwRuntimeError("index out of range") : p.$array[p.$offset + j])), 56), x$7 = $shiftLeft64(new $Uint64(0, (x$8 = j + 1 >> 0, ((x$8 < 0 || x$8 >= p.$length) ? $throwRuntimeError("index out of range") : p.$array[p.$offset + x$8]))), 48), new $Uint64(x$6.$high | x$7.$high, (x$6.$low | x$7.$low) >>> 0)), x$9 = $shiftLeft64(new $Uint64(0, (x$10 = j + 2 >> 0, ((x$10 < 0 || x$10 >= p.$length) ? $throwRuntimeError("index out of range") : p.$array[p.$offset + x$10]))), 40), new $Uint64(x$5.$high | x$9.$high, (x$5.$low | x$9.$low) >>> 0)), x$11 = $shiftLeft64(new $Uint64(0, (x$12 = j + 3 >> 0, ((x$12 < 0 || x$12 >= p.$length) ? $throwRuntimeError("index out of range") : p.$array[p.$offset + x$12]))), 32), new $Uint64(x$4.$high | x$11.$high, (x$4.$low | x$11.$low) >>> 0)), x$13 = $shiftLeft64(new $Uint64(0, (x$14 = j + 4 >> 0, ((x$14 < 0 || x$14 >= p.$length) ? $throwRuntimeError("index out of range") : p.$array[p.$offset + x$14]))), 24), new $Uint64(x$3.$high | x$13.$high, (x$3.$low | x$13.$low) >>> 0)), x$15 = $shiftLeft64(new $Uint64(0, (x$16 = j + 5 >> 0, ((x$16 < 0 || x$16 >= p.$length) ? $throwRuntimeError("index out of range") : p.$array[p.$offset + x$16]))), 16), new $Uint64(x$2.$high | x$15.$high, (x$2.$low | x$15.$low) >>> 0)), x$17 = $shiftLeft64(new $Uint64(0, (x$18 = j + 6 >> 0, ((x$18 < 0 || x$18 >= p.$length) ? $throwRuntimeError("index out of range") : p.$array[p.$offset + x$18]))), 8), new $Uint64(x$1.$high | x$17.$high, (x$1.$low | x$17.$low) >>> 0)), x$19 = new $Uint64(0, (x$20 = j + 7 >> 0, ((x$20 < 0 || x$20 >= p.$length) ? $throwRuntimeError("index out of range") : p.$array[p.$offset + x$20]))), new $Uint64(x.$high | x$19.$high, (x.$low | x$19.$low) >>> 0)));
  50086. i = i + (1) >> 0;
  50087. }
  50088. i$1 = 16;
  50089. while (true) {
  50090. if (!(i$1 < 80)) { break; }
  50091. v1 = (x$21 = i$1 - 2 >> 0, ((x$21 < 0 || x$21 >= w.length) ? $throwRuntimeError("index out of range") : w[x$21]));
  50092. t1 = (x$22 = (x$23 = (x$24 = $shiftRightUint64(v1, 19), x$25 = $shiftLeft64(v1, 45), new $Uint64(x$24.$high | x$25.$high, (x$24.$low | x$25.$low) >>> 0)), x$26 = (x$27 = $shiftRightUint64(v1, 61), x$28 = $shiftLeft64(v1, 3), new $Uint64(x$27.$high | x$28.$high, (x$27.$low | x$28.$low) >>> 0)), new $Uint64(x$23.$high ^ x$26.$high, (x$23.$low ^ x$26.$low) >>> 0)), x$29 = $shiftRightUint64(v1, 6), new $Uint64(x$22.$high ^ x$29.$high, (x$22.$low ^ x$29.$low) >>> 0));
  50093. v2 = (x$30 = i$1 - 15 >> 0, ((x$30 < 0 || x$30 >= w.length) ? $throwRuntimeError("index out of range") : w[x$30]));
  50094. t2 = (x$31 = (x$32 = (x$33 = $shiftRightUint64(v2, 1), x$34 = $shiftLeft64(v2, 63), new $Uint64(x$33.$high | x$34.$high, (x$33.$low | x$34.$low) >>> 0)), x$35 = (x$36 = $shiftRightUint64(v2, 8), x$37 = $shiftLeft64(v2, 56), new $Uint64(x$36.$high | x$37.$high, (x$36.$low | x$37.$low) >>> 0)), new $Uint64(x$32.$high ^ x$35.$high, (x$32.$low ^ x$35.$low) >>> 0)), x$38 = $shiftRightUint64(v2, 7), new $Uint64(x$31.$high ^ x$38.$high, (x$31.$low ^ x$38.$low) >>> 0));
  50095. ((i$1 < 0 || i$1 >= w.length) ? $throwRuntimeError("index out of range") : w[i$1] = (x$39 = (x$40 = (x$41 = (x$42 = i$1 - 7 >> 0, ((x$42 < 0 || x$42 >= w.length) ? $throwRuntimeError("index out of range") : w[x$42])), new $Uint64(t1.$high + x$41.$high, t1.$low + x$41.$low)), new $Uint64(x$40.$high + t2.$high, x$40.$low + t2.$low)), x$43 = (x$44 = i$1 - 16 >> 0, ((x$44 < 0 || x$44 >= w.length) ? $throwRuntimeError("index out of range") : w[x$44])), new $Uint64(x$39.$high + x$43.$high, x$39.$low + x$43.$low)));
  50096. i$1 = i$1 + (1) >> 0;
  50097. }
  50098. _tmp$8 = h0; _tmp$9 = h1; _tmp$10 = h2; _tmp$11 = h3; _tmp$12 = h4; _tmp$13 = h5; _tmp$14 = h6; _tmp$15 = h7; a = _tmp$8; b = _tmp$9; c = _tmp$10; d = _tmp$11; e = _tmp$12; f = _tmp$13; g = _tmp$14; h = _tmp$15;
  50099. i$2 = 0;
  50100. while (true) {
  50101. if (!(i$2 < 80)) { break; }
  50102. t1$1 = (x$45 = (x$46 = (x$47 = (x$48 = (x$49 = (x$50 = (x$51 = $shiftRightUint64(e, 14), x$52 = $shiftLeft64(e, 50), new $Uint64(x$51.$high | x$52.$high, (x$51.$low | x$52.$low) >>> 0)), x$53 = (x$54 = $shiftRightUint64(e, 18), x$55 = $shiftLeft64(e, 46), new $Uint64(x$54.$high | x$55.$high, (x$54.$low | x$55.$low) >>> 0)), new $Uint64(x$50.$high ^ x$53.$high, (x$50.$low ^ x$53.$low) >>> 0)), x$56 = (x$57 = $shiftRightUint64(e, 41), x$58 = $shiftLeft64(e, 23), new $Uint64(x$57.$high | x$58.$high, (x$57.$low | x$58.$low) >>> 0)), new $Uint64(x$49.$high ^ x$56.$high, (x$49.$low ^ x$56.$low) >>> 0)), new $Uint64(h.$high + x$48.$high, h.$low + x$48.$low)), x$59 = (x$60 = new $Uint64(e.$high & f.$high, (e.$low & f.$low) >>> 0), x$61 = (x$62 = new $Uint64(~e.$high, ~e.$low >>> 0), new $Uint64(x$62.$high & g.$high, (x$62.$low & g.$low) >>> 0)), new $Uint64(x$60.$high ^ x$61.$high, (x$60.$low ^ x$61.$low) >>> 0)), new $Uint64(x$47.$high + x$59.$high, x$47.$low + x$59.$low)), x$63 = ((i$2 < 0 || i$2 >= _K.$length) ? $throwRuntimeError("index out of range") : _K.$array[_K.$offset + i$2]), new $Uint64(x$46.$high + x$63.$high, x$46.$low + x$63.$low)), x$64 = ((i$2 < 0 || i$2 >= w.length) ? $throwRuntimeError("index out of range") : w[i$2]), new $Uint64(x$45.$high + x$64.$high, x$45.$low + x$64.$low));
  50103. t2$1 = (x$65 = (x$66 = (x$67 = (x$68 = $shiftRightUint64(a, 28), x$69 = $shiftLeft64(a, 36), new $Uint64(x$68.$high | x$69.$high, (x$68.$low | x$69.$low) >>> 0)), x$70 = (x$71 = $shiftRightUint64(a, 34), x$72 = $shiftLeft64(a, 30), new $Uint64(x$71.$high | x$72.$high, (x$71.$low | x$72.$low) >>> 0)), new $Uint64(x$67.$high ^ x$70.$high, (x$67.$low ^ x$70.$low) >>> 0)), x$73 = (x$74 = $shiftRightUint64(a, 39), x$75 = $shiftLeft64(a, 25), new $Uint64(x$74.$high | x$75.$high, (x$74.$low | x$75.$low) >>> 0)), new $Uint64(x$66.$high ^ x$73.$high, (x$66.$low ^ x$73.$low) >>> 0)), x$76 = (x$77 = (x$78 = new $Uint64(a.$high & b.$high, (a.$low & b.$low) >>> 0), x$79 = new $Uint64(a.$high & c.$high, (a.$low & c.$low) >>> 0), new $Uint64(x$78.$high ^ x$79.$high, (x$78.$low ^ x$79.$low) >>> 0)), x$80 = new $Uint64(b.$high & c.$high, (b.$low & c.$low) >>> 0), new $Uint64(x$77.$high ^ x$80.$high, (x$77.$low ^ x$80.$low) >>> 0)), new $Uint64(x$65.$high + x$76.$high, x$65.$low + x$76.$low));
  50104. h = g;
  50105. g = f;
  50106. f = e;
  50107. e = new $Uint64(d.$high + t1$1.$high, d.$low + t1$1.$low);
  50108. d = c;
  50109. c = b;
  50110. b = a;
  50111. a = new $Uint64(t1$1.$high + t2$1.$high, t1$1.$low + t2$1.$low);
  50112. i$2 = i$2 + (1) >> 0;
  50113. }
  50114. h0 = (x$81 = a, new $Uint64(h0.$high + x$81.$high, h0.$low + x$81.$low));
  50115. h1 = (x$82 = b, new $Uint64(h1.$high + x$82.$high, h1.$low + x$82.$low));
  50116. h2 = (x$83 = c, new $Uint64(h2.$high + x$83.$high, h2.$low + x$83.$low));
  50117. h3 = (x$84 = d, new $Uint64(h3.$high + x$84.$high, h3.$low + x$84.$low));
  50118. h4 = (x$85 = e, new $Uint64(h4.$high + x$85.$high, h4.$low + x$85.$low));
  50119. h5 = (x$86 = f, new $Uint64(h5.$high + x$86.$high, h5.$low + x$86.$low));
  50120. h6 = (x$87 = g, new $Uint64(h6.$high + x$87.$high, h6.$low + x$87.$low));
  50121. h7 = (x$88 = h, new $Uint64(h7.$high + x$88.$high, h7.$low + x$88.$low));
  50122. p = $subslice(p, 128);
  50123. }
  50124. _tmp$16 = h0; _tmp$17 = h1; _tmp$18 = h2; _tmp$19 = h3; _tmp$20 = h4; _tmp$21 = h5; _tmp$22 = h6; _tmp$23 = h7; dig.h[0] = _tmp$16; dig.h[1] = _tmp$17; dig.h[2] = _tmp$18; dig.h[3] = _tmp$19; dig.h[4] = _tmp$20; dig.h[5] = _tmp$21; dig.h[6] = _tmp$22; dig.h[7] = _tmp$23;
  50125. };
  50126. ptrType.methods = [{prop: "Reset", name: "Reset", pkg: "", typ: $funcType([], [], false)}, {prop: "Size", name: "Size", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "BlockSize", name: "BlockSize", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType$1], [$Int, $error], false)}, {prop: "Sum", name: "Sum", pkg: "", typ: $funcType([sliceType$1], [sliceType$1], false)}, {prop: "checkSum", name: "checkSum", pkg: "crypto/sha512", typ: $funcType([], [arrayType], false)}];
  50127. digest.init([{prop: "h", name: "h", pkg: "crypto/sha512", typ: arrayType$4, tag: ""}, {prop: "x", name: "x", pkg: "crypto/sha512", typ: arrayType$1, tag: ""}, {prop: "nx", name: "nx", pkg: "crypto/sha512", typ: $Int, tag: ""}, {prop: "len", name: "len", pkg: "crypto/sha512", typ: $Uint64, tag: ""}, {prop: "is384", name: "is384", pkg: "crypto/sha512", typ: $Bool, tag: ""}]);
  50128. $init = function() {
  50129. $pkg.$init = function() {};
  50130. /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  50131. $r = crypto.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  50132. $r = hash.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  50133. _K = new sliceType([new $Uint64(1116352408, 3609767458), new $Uint64(1899447441, 602891725), new $Uint64(3049323471, 3964484399), new $Uint64(3921009573, 2173295548), new $Uint64(961987163, 4081628472), new $Uint64(1508970993, 3053834265), new $Uint64(2453635748, 2937671579), new $Uint64(2870763221, 3664609560), new $Uint64(3624381080, 2734883394), new $Uint64(310598401, 1164996542), new $Uint64(607225278, 1323610764), new $Uint64(1426881987, 3590304994), new $Uint64(1925078388, 4068182383), new $Uint64(2162078206, 991336113), new $Uint64(2614888103, 633803317), new $Uint64(3248222580, 3479774868), new $Uint64(3835390401, 2666613458), new $Uint64(4022224774, 944711139), new $Uint64(264347078, 2341262773), new $Uint64(604807628, 2007800933), new $Uint64(770255983, 1495990901), new $Uint64(1249150122, 1856431235), new $Uint64(1555081692, 3175218132), new $Uint64(1996064986, 2198950837), new $Uint64(2554220882, 3999719339), new $Uint64(2821834349, 766784016), new $Uint64(2952996808, 2566594879), new $Uint64(3210313671, 3203337956), new $Uint64(3336571891, 1034457026), new $Uint64(3584528711, 2466948901), new $Uint64(113926993, 3758326383), new $Uint64(338241895, 168717936), new $Uint64(666307205, 1188179964), new $Uint64(773529912, 1546045734), new $Uint64(1294757372, 1522805485), new $Uint64(1396182291, 2643833823), new $Uint64(1695183700, 2343527390), new $Uint64(1986661051, 1014477480), new $Uint64(2177026350, 1206759142), new $Uint64(2456956037, 344077627), new $Uint64(2730485921, 1290863460), new $Uint64(2820302411, 3158454273), new $Uint64(3259730800, 3505952657), new $Uint64(3345764771, 106217008), new $Uint64(3516065817, 3606008344), new $Uint64(3600352804, 1432725776), new $Uint64(4094571909, 1467031594), new $Uint64(275423344, 851169720), new $Uint64(430227734, 3100823752), new $Uint64(506948616, 1363258195), new $Uint64(659060556, 3750685593), new $Uint64(883997877, 3785050280), new $Uint64(958139571, 3318307427), new $Uint64(1322822218, 3812723403), new $Uint64(1537002063, 2003034995), new $Uint64(1747873779, 3602036899), new $Uint64(1955562222, 1575990012), new $Uint64(2024104815, 1125592928), new $Uint64(2227730452, 2716904306), new $Uint64(2361852424, 442776044), new $Uint64(2428436474, 593698344), new $Uint64(2756734187, 3733110249), new $Uint64(3204031479, 2999351573), new $Uint64(3329325298, 3815920427), new $Uint64(3391569614, 3928383900), new $Uint64(3515267271, 566280711), new $Uint64(3940187606, 3454069534), new $Uint64(4118630271, 4000239992), new $Uint64(116418474, 1914138554), new $Uint64(174292421, 2731055270), new $Uint64(289380356, 3203993006), new $Uint64(460393269, 320620315), new $Uint64(685471733, 587496836), new $Uint64(852142971, 1086792851), new $Uint64(1017036298, 365543100), new $Uint64(1126000580, 2618297676), new $Uint64(1288033470, 3409855158), new $Uint64(1501505948, 4234509866), new $Uint64(1607167915, 987167468), new $Uint64(1816402316, 1246189591)]);
  50134. init();
  50135. /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
  50136. };
  50137. $pkg.$init = $init;
  50138. return $pkg;
  50139. })();
  50140. $packages["crypto/x509/pkix"] = (function() {
  50141. var $pkg = {}, $init, asn1, big, time, AlgorithmIdentifier, RDNSequence, RelativeDistinguishedNameSET, AttributeTypeAndValue, Extension, Name, CertificateList, TBSCertificateList, RevokedCertificate, sliceType, sliceType$1, sliceType$2, sliceType$4, ptrType, ptrType$1, ptrType$2, sliceType$5, sliceType$6, ptrType$3, oidCountry, oidOrganization, oidOrganizationalUnit, oidCommonName, oidSerialNumber, oidLocality, oidProvince, oidStreetAddress, oidPostalCode, appendRDNs;
  50142. asn1 = $packages["encoding/asn1"];
  50143. big = $packages["math/big"];
  50144. time = $packages["time"];
  50145. AlgorithmIdentifier = $pkg.AlgorithmIdentifier = $newType(0, $kindStruct, "pkix.AlgorithmIdentifier", "AlgorithmIdentifier", "crypto/x509/pkix", function(Algorithm_, Parameters_) {
  50146. this.$val = this;
  50147. if (arguments.length === 0) {
  50148. this.Algorithm = asn1.ObjectIdentifier.nil;
  50149. this.Parameters = new asn1.RawValue.ptr();
  50150. return;
  50151. }
  50152. this.Algorithm = Algorithm_;
  50153. this.Parameters = Parameters_;
  50154. });
  50155. RDNSequence = $pkg.RDNSequence = $newType(12, $kindSlice, "pkix.RDNSequence", "RDNSequence", "crypto/x509/pkix", null);
  50156. RelativeDistinguishedNameSET = $pkg.RelativeDistinguishedNameSET = $newType(12, $kindSlice, "pkix.RelativeDistinguishedNameSET", "RelativeDistinguishedNameSET", "crypto/x509/pkix", null);
  50157. AttributeTypeAndValue = $pkg.AttributeTypeAndValue = $newType(0, $kindStruct, "pkix.AttributeTypeAndValue", "AttributeTypeAndValue", "crypto/x509/pkix", function(Type_, Value_) {
  50158. this.$val = this;
  50159. if (arguments.length === 0) {
  50160. this.Type = asn1.ObjectIdentifier.nil;
  50161. this.Value = $ifaceNil;
  50162. return;
  50163. }
  50164. this.Type = Type_;
  50165. this.Value = Value_;
  50166. });
  50167. Extension = $pkg.Extension = $newType(0, $kindStruct, "pkix.Extension", "Extension", "crypto/x509/pkix", function(Id_, Critical_, Value_) {
  50168. this.$val = this;
  50169. if (arguments.length === 0) {
  50170. this.Id = asn1.ObjectIdentifier.nil;
  50171. this.Critical = false;
  50172. this.Value = sliceType$4.nil;
  50173. return;
  50174. }
  50175. this.Id = Id_;
  50176. this.Critical = Critical_;
  50177. this.Value = Value_;
  50178. });
  50179. Name = $pkg.Name = $newType(0, $kindStruct, "pkix.Name", "Name", "crypto/x509/pkix", function(Country_, Organization_, OrganizationalUnit_, Locality_, Province_, StreetAddress_, PostalCode_, SerialNumber_, CommonName_, Names_) {
  50180. this.$val = this;
  50181. if (arguments.length === 0) {
  50182. this.Country = sliceType$2.nil;
  50183. this.Organization = sliceType$2.nil;
  50184. this.OrganizationalUnit = sliceType$2.nil;
  50185. this.Locality = sliceType$2.nil;
  50186. this.Province = sliceType$2.nil;
  50187. this.StreetAddress = sliceType$2.nil;
  50188. this.PostalCode = sliceType$2.nil;
  50189. this.SerialNumber = "";
  50190. this.CommonName = "";
  50191. this.Names = sliceType$1.nil;
  50192. return;
  50193. }
  50194. this.Country = Country_;
  50195. this.Organization = Organization_;
  50196. this.OrganizationalUnit = OrganizationalUnit_;
  50197. this.Locality = Locality_;
  50198. this.Province = Province_;
  50199. this.StreetAddress = StreetAddress_;
  50200. this.PostalCode = PostalCode_;
  50201. this.SerialNumber = SerialNumber_;
  50202. this.CommonName = CommonName_;
  50203. this.Names = Names_;
  50204. });
  50205. CertificateList = $pkg.CertificateList = $newType(0, $kindStruct, "pkix.CertificateList", "CertificateList", "crypto/x509/pkix", function(TBSCertList_, SignatureAlgorithm_, SignatureValue_) {
  50206. this.$val = this;
  50207. if (arguments.length === 0) {
  50208. this.TBSCertList = new TBSCertificateList.ptr();
  50209. this.SignatureAlgorithm = new AlgorithmIdentifier.ptr();
  50210. this.SignatureValue = new asn1.BitString.ptr();
  50211. return;
  50212. }
  50213. this.TBSCertList = TBSCertList_;
  50214. this.SignatureAlgorithm = SignatureAlgorithm_;
  50215. this.SignatureValue = SignatureValue_;
  50216. });
  50217. TBSCertificateList = $pkg.TBSCertificateList = $newType(0, $kindStruct, "pkix.TBSCertificateList", "TBSCertificateList", "crypto/x509/pkix", function(Raw_, Version_, Signature_, Issuer_, ThisUpdate_, NextUpdate_, RevokedCertificates_, Extensions_) {
  50218. this.$val = this;
  50219. if (arguments.length === 0) {
  50220. this.Raw = asn1.RawContent.nil;
  50221. this.Version = 0;
  50222. this.Signature = new AlgorithmIdentifier.ptr();
  50223. this.Issuer = RDNSequence.nil;
  50224. this.ThisUpdate = new time.Time.ptr();
  50225. this.NextUpdate = new time.Time.ptr();
  50226. this.RevokedCertificates = sliceType$5.nil;
  50227. this.Extensions = sliceType$6.nil;
  50228. return;
  50229. }
  50230. this.Raw = Raw_;
  50231. this.Version = Version_;
  50232. this.Signature = Signature_;
  50233. this.Issuer = Issuer_;
  50234. this.ThisUpdate = ThisUpdate_;
  50235. this.NextUpdate = NextUpdate_;
  50236. this.RevokedCertificates = RevokedCertificates_;
  50237. this.Extensions = Extensions_;
  50238. });
  50239. RevokedCertificate = $pkg.RevokedCertificate = $newType(0, $kindStruct, "pkix.RevokedCertificate", "RevokedCertificate", "crypto/x509/pkix", function(SerialNumber_, RevocationTime_, Extensions_) {
  50240. this.$val = this;
  50241. if (arguments.length === 0) {
  50242. this.SerialNumber = ptrType$3.nil;
  50243. this.RevocationTime = new time.Time.ptr();
  50244. this.Extensions = sliceType$6.nil;
  50245. return;
  50246. }
  50247. this.SerialNumber = SerialNumber_;
  50248. this.RevocationTime = RevocationTime_;
  50249. this.Extensions = Extensions_;
  50250. });
  50251. sliceType = $sliceType($Int);
  50252. sliceType$1 = $sliceType(AttributeTypeAndValue);
  50253. sliceType$2 = $sliceType($String);
  50254. sliceType$4 = $sliceType($Uint8);
  50255. ptrType = $ptrType(RDNSequence);
  50256. ptrType$1 = $ptrType(Name);
  50257. ptrType$2 = $ptrType(CertificateList);
  50258. sliceType$5 = $sliceType(RevokedCertificate);
  50259. sliceType$6 = $sliceType(Extension);
  50260. ptrType$3 = $ptrType(big.Int);
  50261. Name.ptr.prototype.FillFromRDNSequence = function(rdns) {
  50262. var $ptr, _i, _ref, _ref$1, _tuple, atv, n, ok, rdn, rdns, t, value;
  50263. n = this;
  50264. _ref = rdns.$get();
  50265. _i = 0;
  50266. while (true) {
  50267. if (!(_i < _ref.$length)) { break; }
  50268. rdn = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]);
  50269. if (rdn.$length === 0) {
  50270. _i++;
  50271. continue;
  50272. }
  50273. atv = $clone((0 >= rdn.$length ? $throwRuntimeError("index out of range") : rdn.$array[rdn.$offset + 0]), AttributeTypeAndValue);
  50274. n.Names = $append(n.Names, atv);
  50275. _tuple = $assertType(atv.Value, $String, true); value = _tuple[0]; ok = _tuple[1];
  50276. if (!ok) {
  50277. _i++;
  50278. continue;
  50279. }
  50280. t = atv.Type;
  50281. if ((t.$length === 4) && ((0 >= t.$length ? $throwRuntimeError("index out of range") : t.$array[t.$offset + 0]) === 2) && ((1 >= t.$length ? $throwRuntimeError("index out of range") : t.$array[t.$offset + 1]) === 5) && ((2 >= t.$length ? $throwRuntimeError("index out of range") : t.$array[t.$offset + 2]) === 4)) {
  50282. _ref$1 = (3 >= t.$length ? $throwRuntimeError("index out of range") : t.$array[t.$offset + 3]);
  50283. if (_ref$1 === 3) {
  50284. n.CommonName = value;
  50285. } else if (_ref$1 === 5) {
  50286. n.SerialNumber = value;
  50287. } else if (_ref$1 === 6) {
  50288. n.Country = $append(n.Country, value);
  50289. } else if (_ref$1 === 7) {
  50290. n.Locality = $append(n.Locality, value);
  50291. } else if (_ref$1 === 8) {
  50292. n.Province = $append(n.Province, value);
  50293. } else if (_ref$1 === 9) {
  50294. n.StreetAddress = $append(n.StreetAddress, value);
  50295. } else if (_ref$1 === 10) {
  50296. n.Organization = $append(n.Organization, value);
  50297. } else if (_ref$1 === 11) {
  50298. n.OrganizationalUnit = $append(n.OrganizationalUnit, value);
  50299. } else if (_ref$1 === 17) {
  50300. n.PostalCode = $append(n.PostalCode, value);
  50301. }
  50302. }
  50303. _i++;
  50304. }
  50305. };
  50306. Name.prototype.FillFromRDNSequence = function(rdns) { return this.$val.FillFromRDNSequence(rdns); };
  50307. appendRDNs = function(in$1, values, oid) {
  50308. var $ptr, _i, _ref, i, in$1, oid, s, value, values;
  50309. if (values.$length === 0) {
  50310. return in$1;
  50311. }
  50312. s = $makeSlice(sliceType$1, values.$length);
  50313. _ref = values;
  50314. _i = 0;
  50315. while (true) {
  50316. if (!(_i < _ref.$length)) { break; }
  50317. i = _i;
  50318. value = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]);
  50319. ((i < 0 || i >= s.$length) ? $throwRuntimeError("index out of range") : s.$array[s.$offset + i]).Type = oid;
  50320. ((i < 0 || i >= s.$length) ? $throwRuntimeError("index out of range") : s.$array[s.$offset + i]).Value = new $String(value);
  50321. _i++;
  50322. }
  50323. return $append(in$1, $subslice(new RelativeDistinguishedNameSET(s.$array), s.$offset, s.$offset + s.$length));
  50324. };
  50325. Name.ptr.prototype.ToRDNSequence = function() {
  50326. var $ptr, n, ret;
  50327. ret = RDNSequence.nil;
  50328. n = $clone(this, Name);
  50329. ret = appendRDNs(ret, n.Country, $subslice(new asn1.ObjectIdentifier(oidCountry.$array), oidCountry.$offset, oidCountry.$offset + oidCountry.$length));
  50330. ret = appendRDNs(ret, n.Organization, $subslice(new asn1.ObjectIdentifier(oidOrganization.$array), oidOrganization.$offset, oidOrganization.$offset + oidOrganization.$length));
  50331. ret = appendRDNs(ret, n.OrganizationalUnit, $subslice(new asn1.ObjectIdentifier(oidOrganizationalUnit.$array), oidOrganizationalUnit.$offset, oidOrganizationalUnit.$offset + oidOrganizationalUnit.$length));
  50332. ret = appendRDNs(ret, n.Locality, $subslice(new asn1.ObjectIdentifier(oidLocality.$array), oidLocality.$offset, oidLocality.$offset + oidLocality.$length));
  50333. ret = appendRDNs(ret, n.Province, $subslice(new asn1.ObjectIdentifier(oidProvince.$array), oidProvince.$offset, oidProvince.$offset + oidProvince.$length));
  50334. ret = appendRDNs(ret, n.StreetAddress, $subslice(new asn1.ObjectIdentifier(oidStreetAddress.$array), oidStreetAddress.$offset, oidStreetAddress.$offset + oidStreetAddress.$length));
  50335. ret = appendRDNs(ret, n.PostalCode, $subslice(new asn1.ObjectIdentifier(oidPostalCode.$array), oidPostalCode.$offset, oidPostalCode.$offset + oidPostalCode.$length));
  50336. if (n.CommonName.length > 0) {
  50337. ret = appendRDNs(ret, new sliceType$2([n.CommonName]), $subslice(new asn1.ObjectIdentifier(oidCommonName.$array), oidCommonName.$offset, oidCommonName.$offset + oidCommonName.$length));
  50338. }
  50339. if (n.SerialNumber.length > 0) {
  50340. ret = appendRDNs(ret, new sliceType$2([n.SerialNumber]), $subslice(new asn1.ObjectIdentifier(oidSerialNumber.$array), oidSerialNumber.$offset, oidSerialNumber.$offset + oidSerialNumber.$length));
  50341. }
  50342. ret = ret;
  50343. return ret;
  50344. };
  50345. Name.prototype.ToRDNSequence = function() { return this.$val.ToRDNSequence(); };
  50346. CertificateList.ptr.prototype.HasExpired = function(now) {
  50347. var $ptr, certList, now;
  50348. certList = this;
  50349. now = $clone(now, time.Time);
  50350. return now.After(certList.TBSCertList.NextUpdate);
  50351. };
  50352. CertificateList.prototype.HasExpired = function(now) { return this.$val.HasExpired(now); };
  50353. Name.methods = [{prop: "ToRDNSequence", name: "ToRDNSequence", pkg: "", typ: $funcType([], [RDNSequence], false)}];
  50354. ptrType$1.methods = [{prop: "FillFromRDNSequence", name: "FillFromRDNSequence", pkg: "", typ: $funcType([ptrType], [], false)}];
  50355. ptrType$2.methods = [{prop: "HasExpired", name: "HasExpired", pkg: "", typ: $funcType([time.Time], [$Bool], false)}];
  50356. AlgorithmIdentifier.init([{prop: "Algorithm", name: "Algorithm", pkg: "", typ: asn1.ObjectIdentifier, tag: ""}, {prop: "Parameters", name: "Parameters", pkg: "", typ: asn1.RawValue, tag: "asn1:\"optional\""}]);
  50357. RDNSequence.init(RelativeDistinguishedNameSET);
  50358. RelativeDistinguishedNameSET.init(AttributeTypeAndValue);
  50359. AttributeTypeAndValue.init([{prop: "Type", name: "Type", pkg: "", typ: asn1.ObjectIdentifier, tag: ""}, {prop: "Value", name: "Value", pkg: "", typ: $emptyInterface, tag: ""}]);
  50360. Extension.init([{prop: "Id", name: "Id", pkg: "", typ: asn1.ObjectIdentifier, tag: ""}, {prop: "Critical", name: "Critical", pkg: "", typ: $Bool, tag: "asn1:\"optional\""}, {prop: "Value", name: "Value", pkg: "", typ: sliceType$4, tag: ""}]);
  50361. Name.init([{prop: "Country", name: "Country", pkg: "", typ: sliceType$2, tag: ""}, {prop: "Organization", name: "Organization", pkg: "", typ: sliceType$2, tag: ""}, {prop: "OrganizationalUnit", name: "OrganizationalUnit", pkg: "", typ: sliceType$2, tag: ""}, {prop: "Locality", name: "Locality", pkg: "", typ: sliceType$2, tag: ""}, {prop: "Province", name: "Province", pkg: "", typ: sliceType$2, tag: ""}, {prop: "StreetAddress", name: "StreetAddress", pkg: "", typ: sliceType$2, tag: ""}, {prop: "PostalCode", name: "PostalCode", pkg: "", typ: sliceType$2, tag: ""}, {prop: "SerialNumber", name: "SerialNumber", pkg: "", typ: $String, tag: ""}, {prop: "CommonName", name: "CommonName", pkg: "", typ: $String, tag: ""}, {prop: "Names", name: "Names", pkg: "", typ: sliceType$1, tag: ""}]);
  50362. CertificateList.init([{prop: "TBSCertList", name: "TBSCertList", pkg: "", typ: TBSCertificateList, tag: ""}, {prop: "SignatureAlgorithm", name: "SignatureAlgorithm", pkg: "", typ: AlgorithmIdentifier, tag: ""}, {prop: "SignatureValue", name: "SignatureValue", pkg: "", typ: asn1.BitString, tag: ""}]);
  50363. TBSCertificateList.init([{prop: "Raw", name: "Raw", pkg: "", typ: asn1.RawContent, tag: ""}, {prop: "Version", name: "Version", pkg: "", typ: $Int, tag: "asn1:\"optional,default:2\""}, {prop: "Signature", name: "Signature", pkg: "", typ: AlgorithmIdentifier, tag: ""}, {prop: "Issuer", name: "Issuer", pkg: "", typ: RDNSequence, tag: ""}, {prop: "ThisUpdate", name: "ThisUpdate", pkg: "", typ: time.Time, tag: ""}, {prop: "NextUpdate", name: "NextUpdate", pkg: "", typ: time.Time, tag: "asn1:\"optional\""}, {prop: "RevokedCertificates", name: "RevokedCertificates", pkg: "", typ: sliceType$5, tag: "asn1:\"optional\""}, {prop: "Extensions", name: "Extensions", pkg: "", typ: sliceType$6, tag: "asn1:\"tag:0,optional,explicit\""}]);
  50364. RevokedCertificate.init([{prop: "SerialNumber", name: "SerialNumber", pkg: "", typ: ptrType$3, tag: ""}, {prop: "RevocationTime", name: "RevocationTime", pkg: "", typ: time.Time, tag: ""}, {prop: "Extensions", name: "Extensions", pkg: "", typ: sliceType$6, tag: "asn1:\"optional\""}]);
  50365. $init = function() {
  50366. $pkg.$init = function() {};
  50367. /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  50368. $r = asn1.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  50369. $r = big.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  50370. $r = time.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  50371. oidCountry = new sliceType([2, 5, 4, 6]);
  50372. oidOrganization = new sliceType([2, 5, 4, 10]);
  50373. oidOrganizationalUnit = new sliceType([2, 5, 4, 11]);
  50374. oidCommonName = new sliceType([2, 5, 4, 3]);
  50375. oidSerialNumber = new sliceType([2, 5, 4, 5]);
  50376. oidLocality = new sliceType([2, 5, 4, 7]);
  50377. oidProvince = new sliceType([2, 5, 4, 8]);
  50378. oidStreetAddress = new sliceType([2, 5, 4, 9]);
  50379. oidPostalCode = new sliceType([2, 5, 4, 17]);
  50380. /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
  50381. };
  50382. $pkg.$init = $init;
  50383. return $pkg;
  50384. })();
  50385. $packages["encoding/hex"] = (function() {
  50386. var $pkg = {}, $init, bytes, errors, fmt, io;
  50387. bytes = $packages["bytes"];
  50388. errors = $packages["errors"];
  50389. fmt = $packages["fmt"];
  50390. io = $packages["io"];
  50391. $init = function() {
  50392. $pkg.$init = function() {};
  50393. /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  50394. $r = bytes.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  50395. $r = errors.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  50396. $r = fmt.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  50397. $r = io.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  50398. $pkg.ErrLength = errors.New("encoding/hex: odd length hex string");
  50399. /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
  50400. };
  50401. $pkg.$init = $init;
  50402. return $pkg;
  50403. })();
  50404. $packages["encoding/pem"] = (function() {
  50405. var $pkg = {}, $init, bytes, base64, io, sort, Block, sliceType, ptrType, mapType, pemStart, pemEnd, pemEndOfLine, getLine, removeWhitespace, Decode, decodeError;
  50406. bytes = $packages["bytes"];
  50407. base64 = $packages["encoding/base64"];
  50408. io = $packages["io"];
  50409. sort = $packages["sort"];
  50410. Block = $pkg.Block = $newType(0, $kindStruct, "pem.Block", "Block", "encoding/pem", function(Type_, Headers_, Bytes_) {
  50411. this.$val = this;
  50412. if (arguments.length === 0) {
  50413. this.Type = "";
  50414. this.Headers = false;
  50415. this.Bytes = sliceType.nil;
  50416. return;
  50417. }
  50418. this.Type = Type_;
  50419. this.Headers = Headers_;
  50420. this.Bytes = Bytes_;
  50421. });
  50422. sliceType = $sliceType($Uint8);
  50423. ptrType = $ptrType(Block);
  50424. mapType = $mapType($String, $String);
  50425. getLine = function(data) {
  50426. var $ptr, _r, _tmp, _tmp$1, data, i, j, line, rest, x, $s, $r;
  50427. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; data = $f.data; i = $f.i; j = $f.j; line = $f.line; rest = $f.rest; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  50428. line = sliceType.nil;
  50429. rest = sliceType.nil;
  50430. i = bytes.Index(data, new sliceType([10]));
  50431. j = 0;
  50432. if (i < 0) {
  50433. i = data.$length;
  50434. j = i;
  50435. } else {
  50436. j = i + 1 >> 0;
  50437. if (i > 0 && ((x = i - 1 >> 0, ((x < 0 || x >= data.$length) ? $throwRuntimeError("index out of range") : data.$array[data.$offset + x])) === 13)) {
  50438. i = i - (1) >> 0;
  50439. }
  50440. }
  50441. _r = bytes.TrimRight($subslice(data, 0, i), " \t"); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  50442. _tmp = _r; _tmp$1 = $subslice(data, j); line = _tmp; rest = _tmp$1;
  50443. return [line, rest];
  50444. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: getLine }; } $f.$ptr = $ptr; $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f.data = data; $f.i = i; $f.j = j; $f.line = line; $f.rest = rest; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
  50445. };
  50446. removeWhitespace = function(data) {
  50447. var $ptr, _i, _ref, b, data, n, result;
  50448. result = $makeSlice(sliceType, data.$length);
  50449. n = 0;
  50450. _ref = data;
  50451. _i = 0;
  50452. while (true) {
  50453. if (!(_i < _ref.$length)) { break; }
  50454. b = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]);
  50455. if ((b === 32) || (b === 9) || (b === 13) || (b === 10)) {
  50456. _i++;
  50457. continue;
  50458. }
  50459. ((n < 0 || n >= result.$length) ? $throwRuntimeError("index out of range") : result.$array[result.$offset + n] = b);
  50460. n = n + (1) >> 0;
  50461. _i++;
  50462. }
  50463. return $subslice(result, 0, n);
  50464. };
  50465. Decode = function(data) {
  50466. var $ptr, _key, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, _tuple$6, base64Data, data, err, i, i$1, i$2, key, line, n, next, p, rest, typeLine, val, $s, $r;
  50467. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _key = $f._key; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; _tuple$4 = $f._tuple$4; _tuple$5 = $f._tuple$5; _tuple$6 = $f._tuple$6; base64Data = $f.base64Data; data = $f.data; err = $f.err; i = $f.i; i$1 = $f.i$1; i$2 = $f.i$2; key = $f.key; line = $f.line; n = $f.n; next = $f.next; p = $f.p; rest = $f.rest; typeLine = $f.typeLine; val = $f.val; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  50468. p = ptrType.nil;
  50469. rest = sliceType.nil;
  50470. rest = data;
  50471. if (bytes.HasPrefix(data, $subslice(pemStart, 1))) {
  50472. rest = $subslice(rest, (pemStart.$length - 1 >> 0), data.$length);
  50473. } else {
  50474. i = bytes.Index(data, pemStart);
  50475. if (i >= 0) {
  50476. rest = $subslice(rest, (i + pemStart.$length >> 0), data.$length);
  50477. } else {
  50478. _tmp = ptrType.nil; _tmp$1 = data; p = _tmp; rest = _tmp$1;
  50479. return [p, rest];
  50480. }
  50481. }
  50482. _r = getLine(rest); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  50483. _tuple = _r; typeLine = _tuple[0]; rest = _tuple[1];
  50484. /* */ if (!bytes.HasSuffix(typeLine, pemEndOfLine)) { $s = 2; continue; }
  50485. /* */ $s = 3; continue;
  50486. /* if (!bytes.HasSuffix(typeLine, pemEndOfLine)) { */ case 2:
  50487. _r$1 = decodeError(data, rest); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  50488. _tuple$1 = _r$1; p = _tuple$1[0]; rest = _tuple$1[1];
  50489. return [p, rest];
  50490. /* } */ case 3:
  50491. typeLine = $subslice(typeLine, 0, (typeLine.$length - pemEndOfLine.$length >> 0));
  50492. p = new Block.ptr($bytesToString(typeLine), new $Map(), sliceType.nil);
  50493. /* while (true) { */ case 5:
  50494. if (rest.$length === 0) {
  50495. _tmp$2 = ptrType.nil; _tmp$3 = data; p = _tmp$2; rest = _tmp$3;
  50496. return [p, rest];
  50497. }
  50498. _r$2 = getLine(rest); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  50499. _tuple$2 = _r$2; line = _tuple$2[0]; next = _tuple$2[1];
  50500. i$1 = bytes.Index(line, new sliceType([58]));
  50501. if (i$1 === -1) {
  50502. /* break; */ $s = 6; continue;
  50503. }
  50504. _tmp$4 = $subslice(line, 0, i$1); _tmp$5 = $subslice(line, (i$1 + 1 >> 0)); key = _tmp$4; val = _tmp$5;
  50505. _r$3 = bytes.TrimSpace(key); /* */ $s = 8; case 8: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  50506. key = _r$3;
  50507. _r$4 = bytes.TrimSpace(val); /* */ $s = 9; case 9: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
  50508. val = _r$4;
  50509. _key = $bytesToString(key); (p.Headers || $throwRuntimeError("assignment to entry in nil map"))[_key] = { k: _key, v: $bytesToString(val) };
  50510. rest = next;
  50511. /* } */ $s = 5; continue; case 6:
  50512. i$2 = bytes.Index(rest, pemEnd);
  50513. /* */ if (i$2 < 0) { $s = 10; continue; }
  50514. /* */ $s = 11; continue;
  50515. /* if (i$2 < 0) { */ case 10:
  50516. _r$5 = decodeError(data, rest); /* */ $s = 12; case 12: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
  50517. _tuple$3 = _r$5; p = _tuple$3[0]; rest = _tuple$3[1];
  50518. return [p, rest];
  50519. /* } */ case 11:
  50520. base64Data = removeWhitespace($subslice(rest, 0, i$2));
  50521. p.Bytes = $makeSlice(sliceType, base64.StdEncoding.DecodedLen(base64Data.$length));
  50522. _r$6 = base64.StdEncoding.Decode(p.Bytes, base64Data); /* */ $s = 13; case 13: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
  50523. _tuple$4 = _r$6; n = _tuple$4[0]; err = _tuple$4[1];
  50524. /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 14; continue; }
  50525. /* */ $s = 15; continue;
  50526. /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 14:
  50527. _r$7 = decodeError(data, rest); /* */ $s = 16; case 16: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
  50528. _tuple$5 = _r$7; p = _tuple$5[0]; rest = _tuple$5[1];
  50529. return [p, rest];
  50530. /* } */ case 15:
  50531. p.Bytes = $subslice(p.Bytes, 0, n);
  50532. _r$8 = getLine($subslice(rest, (i$2 + pemEnd.$length >> 0))); /* */ $s = 17; case 17: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
  50533. _tuple$6 = _r$8; rest = _tuple$6[1];
  50534. return [p, rest];
  50535. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Decode }; } $f.$ptr = $ptr; $f._key = _key; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f._tuple$4 = _tuple$4; $f._tuple$5 = _tuple$5; $f._tuple$6 = _tuple$6; $f.base64Data = base64Data; $f.data = data; $f.err = err; $f.i = i; $f.i$1 = i$1; $f.i$2 = i$2; $f.key = key; $f.line = line; $f.n = n; $f.next = next; $f.p = p; $f.rest = rest; $f.typeLine = typeLine; $f.val = val; $f.$s = $s; $f.$r = $r; return $f;
  50536. };
  50537. $pkg.Decode = Decode;
  50538. decodeError = function(data, rest) {
  50539. var $ptr, _r, _tuple, data, p, rest, $s, $r;
  50540. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tuple = $f._tuple; data = $f.data; p = $f.p; rest = $f.rest; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  50541. _r = Decode(rest); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  50542. _tuple = _r; p = _tuple[0]; rest = _tuple[1];
  50543. if (p === ptrType.nil) {
  50544. rest = data;
  50545. }
  50546. return [p, rest];
  50547. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: decodeError }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple = _tuple; $f.data = data; $f.p = p; $f.rest = rest; $f.$s = $s; $f.$r = $r; return $f;
  50548. };
  50549. Block.init([{prop: "Type", name: "Type", pkg: "", typ: $String, tag: ""}, {prop: "Headers", name: "Headers", pkg: "", typ: mapType, tag: ""}, {prop: "Bytes", name: "Bytes", pkg: "", typ: sliceType, tag: ""}]);
  50550. $init = function() {
  50551. $pkg.$init = function() {};
  50552. /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  50553. $r = bytes.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  50554. $r = base64.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  50555. $r = io.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  50556. $r = sort.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  50557. pemStart = new sliceType($stringToBytes("\n-----BEGIN "));
  50558. pemEnd = new sliceType($stringToBytes("\n-----END "));
  50559. pemEndOfLine = new sliceType($stringToBytes("-----"));
  50560. /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
  50561. };
  50562. $pkg.$init = $init;
  50563. return $pkg;
  50564. })();
  50565. $packages["net"] = (function() {
  50566. var $pkg = {}, $init, errors, io, rand, os, runtime, sort, sync, atomic, syscall, time, dnsRR_Header, dnsRR_CNAME, dnsRR_HINFO, dnsRR_MB, dnsRR_MG, dnsRR_MINFO, dnsRR_MR, dnsRR_MX, dnsRR_NS, dnsRR_PTR, dnsRR_SOA, dnsRR_TXT, dnsRR_SRV, dnsRR_A, dnsRR_AAAA, fdMutex, pollDesc, operation, ioSrv, ioSrvReq, netFD, Interface, Flags, IP, IPMask, ParseError, IPAddr, HardwareAddr, Addr, Conn, conn, Error, Listener, OpError, temporary, timeout, timeoutError, writerOnly, sockaddr, TCPAddr, TCPConn, TCPListener, UDPAddr, UnixAddr, ptrType, sliceType, sliceType$1, structType$1, chanType, ptrType$2, ptrType$3, ptrType$4, ptrType$5, ptrType$7, ptrType$8, ptrType$9, ptrType$10, ptrType$11, ptrType$15, ptrType$16, chanType$4, ptrType$18, ptrType$19, chanType$5, funcType, ptrType$20, ptrType$21, arrayType, arrayType$1, ptrType$22, ptrType$23, ptrType$24, arrayType$2, sliceType$5, ptrType$25, ptrType$26, ptrType$27, ptrType$29, sliceType$6, ptrType$30, sliceType$7, arrayType$3, sliceType$8, arrayType$4, arrayType$5, arrayType$6, ptrType$31, ptrType$32, ptrType$49, arrayType$7, arrayType$8, ptrType$51, ptrType$52, ptrType$54, ptrType$55, ptrType$57, funcType$1, ptrType$63, ptrType$64, ptrType$65, ptrType$66, ptrType$67, ptrType$68, ptrType$69, ptrType$70, ptrType$71, ptrType$72, ptrType$73, ptrType$74, ptrType$75, ptrType$78, ptrType$79, ptrType$80, funcType$2, funcType$3, ptrType$81, ptrType$82, ptrType$83, rr_mk, serverInit, initErr, canCancelIO, skipSyncNotif, hasLoadSetFileCompletionNotificationModes, rsrv, wsrv, onceStartServer, errNoSupport, errInvalidInterface, errInvalidInterfaceIndex, errInvalidInterfaceName, errNoSuchInterface, errNoSuchMulticastInterface, flagNames, v4InV6Prefix, classAMask, classBMask, classCMask, supportsIPv4, supportsIPv6, supportsIPv4map, errNoSuitableAddress, listenerBacklog, errMissingAddress, errTimeout, errClosing, threadLimit, _map, _key, Listen, sysInit, probeIPv4Stack, probeIPv6Stack, maxListenerBacklog, runtime_Semacquire, runtime_Semrelease, runtimeNano, runtime_pollServerInit, runtime_pollOpen, runtime_pollClose, runtime_pollWait, runtime_pollWaitCanceled, runtime_pollReset, runtime_pollSetDeadline, runtime_pollUnblock, convertErr, setDeadlineImpl, closesocket, startServer, newFD, InterfaceByIndex, interfaceByIndex, bytePtrToString, getAdapterList, getInterfaceList, interfaceTable, interfaceAddrTable, interfaceMulticastAddrTable, IPv4, IPv4Mask, isZeros, allFF, ipEmptyString, bytesEqual, simpleMaskLength, parseIPv4, parseIPv6, ParseIP, sockaddrToIP, init, splitHostZone, JoinHostPort, zoneToString, genericReadFrom, byteIndex, dtoi, xtoi, itoa, itod, appendHex, last, sendFile, sysSocket, boolint, setReadBuffer, setWriteBuffer, setKeepAlive, setLinger, sockaddrToTCP, newTCPConn, setNoDelay, setKeepAlivePeriod, sockaddrToUDP, sockaddrToUnix, sockaddrToUnixgram, sockaddrToUnixpacket;
  50567. errors = $packages["errors"];
  50568. io = $packages["io"];
  50569. rand = $packages["math/rand"];
  50570. os = $packages["os"];
  50571. runtime = $packages["runtime"];
  50572. sort = $packages["sort"];
  50573. sync = $packages["sync"];
  50574. atomic = $packages["sync/atomic"];
  50575. syscall = $packages["syscall"];
  50576. time = $packages["time"];
  50577. dnsRR_Header = $pkg.dnsRR_Header = $newType(0, $kindStruct, "net.dnsRR_Header", "dnsRR_Header", "net", function(Name_, Rrtype_, Class_, Ttl_, Rdlength_) {
  50578. this.$val = this;
  50579. if (arguments.length === 0) {
  50580. this.Name = "";
  50581. this.Rrtype = 0;
  50582. this.Class = 0;
  50583. this.Ttl = 0;
  50584. this.Rdlength = 0;
  50585. return;
  50586. }
  50587. this.Name = Name_;
  50588. this.Rrtype = Rrtype_;
  50589. this.Class = Class_;
  50590. this.Ttl = Ttl_;
  50591. this.Rdlength = Rdlength_;
  50592. });
  50593. dnsRR_CNAME = $pkg.dnsRR_CNAME = $newType(0, $kindStruct, "net.dnsRR_CNAME", "dnsRR_CNAME", "net", function(Hdr_, Cname_) {
  50594. this.$val = this;
  50595. if (arguments.length === 0) {
  50596. this.Hdr = new dnsRR_Header.ptr();
  50597. this.Cname = "";
  50598. return;
  50599. }
  50600. this.Hdr = Hdr_;
  50601. this.Cname = Cname_;
  50602. });
  50603. dnsRR_HINFO = $pkg.dnsRR_HINFO = $newType(0, $kindStruct, "net.dnsRR_HINFO", "dnsRR_HINFO", "net", function(Hdr_, Cpu_, Os_) {
  50604. this.$val = this;
  50605. if (arguments.length === 0) {
  50606. this.Hdr = new dnsRR_Header.ptr();
  50607. this.Cpu = "";
  50608. this.Os = "";
  50609. return;
  50610. }
  50611. this.Hdr = Hdr_;
  50612. this.Cpu = Cpu_;
  50613. this.Os = Os_;
  50614. });
  50615. dnsRR_MB = $pkg.dnsRR_MB = $newType(0, $kindStruct, "net.dnsRR_MB", "dnsRR_MB", "net", function(Hdr_, Mb_) {
  50616. this.$val = this;
  50617. if (arguments.length === 0) {
  50618. this.Hdr = new dnsRR_Header.ptr();
  50619. this.Mb = "";
  50620. return;
  50621. }
  50622. this.Hdr = Hdr_;
  50623. this.Mb = Mb_;
  50624. });
  50625. dnsRR_MG = $pkg.dnsRR_MG = $newType(0, $kindStruct, "net.dnsRR_MG", "dnsRR_MG", "net", function(Hdr_, Mg_) {
  50626. this.$val = this;
  50627. if (arguments.length === 0) {
  50628. this.Hdr = new dnsRR_Header.ptr();
  50629. this.Mg = "";
  50630. return;
  50631. }
  50632. this.Hdr = Hdr_;
  50633. this.Mg = Mg_;
  50634. });
  50635. dnsRR_MINFO = $pkg.dnsRR_MINFO = $newType(0, $kindStruct, "net.dnsRR_MINFO", "dnsRR_MINFO", "net", function(Hdr_, Rmail_, Email_) {
  50636. this.$val = this;
  50637. if (arguments.length === 0) {
  50638. this.Hdr = new dnsRR_Header.ptr();
  50639. this.Rmail = "";
  50640. this.Email = "";
  50641. return;
  50642. }
  50643. this.Hdr = Hdr_;
  50644. this.Rmail = Rmail_;
  50645. this.Email = Email_;
  50646. });
  50647. dnsRR_MR = $pkg.dnsRR_MR = $newType(0, $kindStruct, "net.dnsRR_MR", "dnsRR_MR", "net", function(Hdr_, Mr_) {
  50648. this.$val = this;
  50649. if (arguments.length === 0) {
  50650. this.Hdr = new dnsRR_Header.ptr();
  50651. this.Mr = "";
  50652. return;
  50653. }
  50654. this.Hdr = Hdr_;
  50655. this.Mr = Mr_;
  50656. });
  50657. dnsRR_MX = $pkg.dnsRR_MX = $newType(0, $kindStruct, "net.dnsRR_MX", "dnsRR_MX", "net", function(Hdr_, Pref_, Mx_) {
  50658. this.$val = this;
  50659. if (arguments.length === 0) {
  50660. this.Hdr = new dnsRR_Header.ptr();
  50661. this.Pref = 0;
  50662. this.Mx = "";
  50663. return;
  50664. }
  50665. this.Hdr = Hdr_;
  50666. this.Pref = Pref_;
  50667. this.Mx = Mx_;
  50668. });
  50669. dnsRR_NS = $pkg.dnsRR_NS = $newType(0, $kindStruct, "net.dnsRR_NS", "dnsRR_NS", "net", function(Hdr_, Ns_) {
  50670. this.$val = this;
  50671. if (arguments.length === 0) {
  50672. this.Hdr = new dnsRR_Header.ptr();
  50673. this.Ns = "";
  50674. return;
  50675. }
  50676. this.Hdr = Hdr_;
  50677. this.Ns = Ns_;
  50678. });
  50679. dnsRR_PTR = $pkg.dnsRR_PTR = $newType(0, $kindStruct, "net.dnsRR_PTR", "dnsRR_PTR", "net", function(Hdr_, Ptr_) {
  50680. this.$val = this;
  50681. if (arguments.length === 0) {
  50682. this.Hdr = new dnsRR_Header.ptr();
  50683. this.Ptr = "";
  50684. return;
  50685. }
  50686. this.Hdr = Hdr_;
  50687. this.Ptr = Ptr_;
  50688. });
  50689. dnsRR_SOA = $pkg.dnsRR_SOA = $newType(0, $kindStruct, "net.dnsRR_SOA", "dnsRR_SOA", "net", function(Hdr_, Ns_, Mbox_, Serial_, Refresh_, Retry_, Expire_, Minttl_) {
  50690. this.$val = this;
  50691. if (arguments.length === 0) {
  50692. this.Hdr = new dnsRR_Header.ptr();
  50693. this.Ns = "";
  50694. this.Mbox = "";
  50695. this.Serial = 0;
  50696. this.Refresh = 0;
  50697. this.Retry = 0;
  50698. this.Expire = 0;
  50699. this.Minttl = 0;
  50700. return;
  50701. }
  50702. this.Hdr = Hdr_;
  50703. this.Ns = Ns_;
  50704. this.Mbox = Mbox_;
  50705. this.Serial = Serial_;
  50706. this.Refresh = Refresh_;
  50707. this.Retry = Retry_;
  50708. this.Expire = Expire_;
  50709. this.Minttl = Minttl_;
  50710. });
  50711. dnsRR_TXT = $pkg.dnsRR_TXT = $newType(0, $kindStruct, "net.dnsRR_TXT", "dnsRR_TXT", "net", function(Hdr_, Txt_) {
  50712. this.$val = this;
  50713. if (arguments.length === 0) {
  50714. this.Hdr = new dnsRR_Header.ptr();
  50715. this.Txt = "";
  50716. return;
  50717. }
  50718. this.Hdr = Hdr_;
  50719. this.Txt = Txt_;
  50720. });
  50721. dnsRR_SRV = $pkg.dnsRR_SRV = $newType(0, $kindStruct, "net.dnsRR_SRV", "dnsRR_SRV", "net", function(Hdr_, Priority_, Weight_, Port_, Target_) {
  50722. this.$val = this;
  50723. if (arguments.length === 0) {
  50724. this.Hdr = new dnsRR_Header.ptr();
  50725. this.Priority = 0;
  50726. this.Weight = 0;
  50727. this.Port = 0;
  50728. this.Target = "";
  50729. return;
  50730. }
  50731. this.Hdr = Hdr_;
  50732. this.Priority = Priority_;
  50733. this.Weight = Weight_;
  50734. this.Port = Port_;
  50735. this.Target = Target_;
  50736. });
  50737. dnsRR_A = $pkg.dnsRR_A = $newType(0, $kindStruct, "net.dnsRR_A", "dnsRR_A", "net", function(Hdr_, A_) {
  50738. this.$val = this;
  50739. if (arguments.length === 0) {
  50740. this.Hdr = new dnsRR_Header.ptr();
  50741. this.A = 0;
  50742. return;
  50743. }
  50744. this.Hdr = Hdr_;
  50745. this.A = A_;
  50746. });
  50747. dnsRR_AAAA = $pkg.dnsRR_AAAA = $newType(0, $kindStruct, "net.dnsRR_AAAA", "dnsRR_AAAA", "net", function(Hdr_, AAAA_) {
  50748. this.$val = this;
  50749. if (arguments.length === 0) {
  50750. this.Hdr = new dnsRR_Header.ptr();
  50751. this.AAAA = arrayType$1.zero();
  50752. return;
  50753. }
  50754. this.Hdr = Hdr_;
  50755. this.AAAA = AAAA_;
  50756. });
  50757. fdMutex = $pkg.fdMutex = $newType(0, $kindStruct, "net.fdMutex", "fdMutex", "net", function(state_, rsema_, wsema_) {
  50758. this.$val = this;
  50759. if (arguments.length === 0) {
  50760. this.state = new $Uint64(0, 0);
  50761. this.rsema = 0;
  50762. this.wsema = 0;
  50763. return;
  50764. }
  50765. this.state = state_;
  50766. this.rsema = rsema_;
  50767. this.wsema = wsema_;
  50768. });
  50769. pollDesc = $pkg.pollDesc = $newType(0, $kindStruct, "net.pollDesc", "pollDesc", "net", function(runtimeCtx_) {
  50770. this.$val = this;
  50771. if (arguments.length === 0) {
  50772. this.runtimeCtx = 0;
  50773. return;
  50774. }
  50775. this.runtimeCtx = runtimeCtx_;
  50776. });
  50777. operation = $pkg.operation = $newType(0, $kindStruct, "net.operation", "operation", "net", function(o_, runtimeCtx_, mode_, errno_, qty_, fd_, errc_, buf_, sa_, rsa_, rsan_, handle_, flags_) {
  50778. this.$val = this;
  50779. if (arguments.length === 0) {
  50780. this.o = new syscall.Overlapped.ptr();
  50781. this.runtimeCtx = 0;
  50782. this.mode = 0;
  50783. this.errno = 0;
  50784. this.qty = 0;
  50785. this.fd = ptrType$18.nil;
  50786. this.errc = chanType$5.nil;
  50787. this.buf = new syscall.WSABuf.ptr();
  50788. this.sa = $ifaceNil;
  50789. this.rsa = ptrType$23.nil;
  50790. this.rsan = 0;
  50791. this.handle = 0;
  50792. this.flags = 0;
  50793. return;
  50794. }
  50795. this.o = o_;
  50796. this.runtimeCtx = runtimeCtx_;
  50797. this.mode = mode_;
  50798. this.errno = errno_;
  50799. this.qty = qty_;
  50800. this.fd = fd_;
  50801. this.errc = errc_;
  50802. this.buf = buf_;
  50803. this.sa = sa_;
  50804. this.rsa = rsa_;
  50805. this.rsan = rsan_;
  50806. this.handle = handle_;
  50807. this.flags = flags_;
  50808. });
  50809. ioSrv = $pkg.ioSrv = $newType(0, $kindStruct, "net.ioSrv", "ioSrv", "net", function(req_) {
  50810. this.$val = this;
  50811. if (arguments.length === 0) {
  50812. this.req = chanType$4.nil;
  50813. return;
  50814. }
  50815. this.req = req_;
  50816. });
  50817. ioSrvReq = $pkg.ioSrvReq = $newType(0, $kindStruct, "net.ioSrvReq", "ioSrvReq", "net", function(o_, submit_) {
  50818. this.$val = this;
  50819. if (arguments.length === 0) {
  50820. this.o = ptrType$80.nil;
  50821. this.submit = $throwNilPointerError;
  50822. return;
  50823. }
  50824. this.o = o_;
  50825. this.submit = submit_;
  50826. });
  50827. netFD = $pkg.netFD = $newType(0, $kindStruct, "net.netFD", "netFD", "net", function(fdmu_, sysfd_, family_, sotype_, isConnected_, skipSyncNotif_, net_, laddr_, raddr_, rop_, wop_, pd_) {
  50828. this.$val = this;
  50829. if (arguments.length === 0) {
  50830. this.fdmu = new fdMutex.ptr();
  50831. this.sysfd = 0;
  50832. this.family = 0;
  50833. this.sotype = 0;
  50834. this.isConnected = false;
  50835. this.skipSyncNotif = false;
  50836. this.net = "";
  50837. this.laddr = $ifaceNil;
  50838. this.raddr = $ifaceNil;
  50839. this.rop = new operation.ptr();
  50840. this.wop = new operation.ptr();
  50841. this.pd = new pollDesc.ptr();
  50842. return;
  50843. }
  50844. this.fdmu = fdmu_;
  50845. this.sysfd = sysfd_;
  50846. this.family = family_;
  50847. this.sotype = sotype_;
  50848. this.isConnected = isConnected_;
  50849. this.skipSyncNotif = skipSyncNotif_;
  50850. this.net = net_;
  50851. this.laddr = laddr_;
  50852. this.raddr = raddr_;
  50853. this.rop = rop_;
  50854. this.wop = wop_;
  50855. this.pd = pd_;
  50856. });
  50857. Interface = $pkg.Interface = $newType(0, $kindStruct, "net.Interface", "Interface", "net", function(Index_, MTU_, Name_, HardwareAddr_, Flags_) {
  50858. this.$val = this;
  50859. if (arguments.length === 0) {
  50860. this.Index = 0;
  50861. this.MTU = 0;
  50862. this.Name = "";
  50863. this.HardwareAddr = HardwareAddr.nil;
  50864. this.Flags = 0;
  50865. return;
  50866. }
  50867. this.Index = Index_;
  50868. this.MTU = MTU_;
  50869. this.Name = Name_;
  50870. this.HardwareAddr = HardwareAddr_;
  50871. this.Flags = Flags_;
  50872. });
  50873. Flags = $pkg.Flags = $newType(4, $kindUint, "net.Flags", "Flags", "net", null);
  50874. IP = $pkg.IP = $newType(12, $kindSlice, "net.IP", "IP", "net", null);
  50875. IPMask = $pkg.IPMask = $newType(12, $kindSlice, "net.IPMask", "IPMask", "net", null);
  50876. ParseError = $pkg.ParseError = $newType(0, $kindStruct, "net.ParseError", "ParseError", "net", function(Type_, Text_) {
  50877. this.$val = this;
  50878. if (arguments.length === 0) {
  50879. this.Type = "";
  50880. this.Text = "";
  50881. return;
  50882. }
  50883. this.Type = Type_;
  50884. this.Text = Text_;
  50885. });
  50886. IPAddr = $pkg.IPAddr = $newType(0, $kindStruct, "net.IPAddr", "IPAddr", "net", function(IP_, Zone_) {
  50887. this.$val = this;
  50888. if (arguments.length === 0) {
  50889. this.IP = IP.nil;
  50890. this.Zone = "";
  50891. return;
  50892. }
  50893. this.IP = IP_;
  50894. this.Zone = Zone_;
  50895. });
  50896. HardwareAddr = $pkg.HardwareAddr = $newType(12, $kindSlice, "net.HardwareAddr", "HardwareAddr", "net", null);
  50897. Addr = $pkg.Addr = $newType(8, $kindInterface, "net.Addr", "Addr", "net", null);
  50898. Conn = $pkg.Conn = $newType(8, $kindInterface, "net.Conn", "Conn", "net", null);
  50899. conn = $pkg.conn = $newType(0, $kindStruct, "net.conn", "conn", "net", function(fd_) {
  50900. this.$val = this;
  50901. if (arguments.length === 0) {
  50902. this.fd = ptrType$18.nil;
  50903. return;
  50904. }
  50905. this.fd = fd_;
  50906. });
  50907. Error = $pkg.Error = $newType(8, $kindInterface, "net.Error", "Error", "net", null);
  50908. Listener = $pkg.Listener = $newType(8, $kindInterface, "net.Listener", "Listener", "net", null);
  50909. OpError = $pkg.OpError = $newType(0, $kindStruct, "net.OpError", "OpError", "net", function(Op_, Net_, Addr_, Err_) {
  50910. this.$val = this;
  50911. if (arguments.length === 0) {
  50912. this.Op = "";
  50913. this.Net = "";
  50914. this.Addr = $ifaceNil;
  50915. this.Err = $ifaceNil;
  50916. return;
  50917. }
  50918. this.Op = Op_;
  50919. this.Net = Net_;
  50920. this.Addr = Addr_;
  50921. this.Err = Err_;
  50922. });
  50923. temporary = $pkg.temporary = $newType(8, $kindInterface, "net.temporary", "temporary", "net", null);
  50924. timeout = $pkg.timeout = $newType(8, $kindInterface, "net.timeout", "timeout", "net", null);
  50925. timeoutError = $pkg.timeoutError = $newType(0, $kindStruct, "net.timeoutError", "timeoutError", "net", function() {
  50926. this.$val = this;
  50927. if (arguments.length === 0) {
  50928. return;
  50929. }
  50930. });
  50931. writerOnly = $pkg.writerOnly = $newType(0, $kindStruct, "net.writerOnly", "writerOnly", "net", function(Writer_) {
  50932. this.$val = this;
  50933. if (arguments.length === 0) {
  50934. this.Writer = $ifaceNil;
  50935. return;
  50936. }
  50937. this.Writer = Writer_;
  50938. });
  50939. sockaddr = $pkg.sockaddr = $newType(8, $kindInterface, "net.sockaddr", "sockaddr", "net", null);
  50940. TCPAddr = $pkg.TCPAddr = $newType(0, $kindStruct, "net.TCPAddr", "TCPAddr", "net", function(IP_, Port_, Zone_) {
  50941. this.$val = this;
  50942. if (arguments.length === 0) {
  50943. this.IP = IP.nil;
  50944. this.Port = 0;
  50945. this.Zone = "";
  50946. return;
  50947. }
  50948. this.IP = IP_;
  50949. this.Port = Port_;
  50950. this.Zone = Zone_;
  50951. });
  50952. TCPConn = $pkg.TCPConn = $newType(0, $kindStruct, "net.TCPConn", "TCPConn", "net", function(conn_) {
  50953. this.$val = this;
  50954. if (arguments.length === 0) {
  50955. this.conn = new conn.ptr();
  50956. return;
  50957. }
  50958. this.conn = conn_;
  50959. });
  50960. TCPListener = $pkg.TCPListener = $newType(0, $kindStruct, "net.TCPListener", "TCPListener", "net", function(fd_) {
  50961. this.$val = this;
  50962. if (arguments.length === 0) {
  50963. this.fd = ptrType$18.nil;
  50964. return;
  50965. }
  50966. this.fd = fd_;
  50967. });
  50968. UDPAddr = $pkg.UDPAddr = $newType(0, $kindStruct, "net.UDPAddr", "UDPAddr", "net", function(IP_, Port_, Zone_) {
  50969. this.$val = this;
  50970. if (arguments.length === 0) {
  50971. this.IP = IP.nil;
  50972. this.Port = 0;
  50973. this.Zone = "";
  50974. return;
  50975. }
  50976. this.IP = IP_;
  50977. this.Port = Port_;
  50978. this.Zone = Zone_;
  50979. });
  50980. UnixAddr = $pkg.UnixAddr = $newType(0, $kindStruct, "net.UnixAddr", "UnixAddr", "net", function(Name_, Net_) {
  50981. this.$val = this;
  50982. if (arguments.length === 0) {
  50983. this.Name = "";
  50984. this.Net = "";
  50985. return;
  50986. }
  50987. this.Name = Name_;
  50988. this.Net = Net_;
  50989. });
  50990. ptrType = $ptrType(ioSrv);
  50991. sliceType = $sliceType($String);
  50992. sliceType$1 = $sliceType($Uint8);
  50993. structType$1 = $structType([]);
  50994. chanType = $chanType(structType$1, false, false);
  50995. ptrType$2 = $ptrType(TCPAddr);
  50996. ptrType$3 = $ptrType(UDPAddr);
  50997. ptrType$4 = $ptrType(IPAddr);
  50998. ptrType$5 = $ptrType(UnixAddr);
  50999. ptrType$7 = $ptrType(dnsRR_Header);
  51000. ptrType$8 = $ptrType(dnsRR_CNAME);
  51001. ptrType$9 = $ptrType($Uint16);
  51002. ptrType$10 = $ptrType($String);
  51003. ptrType$11 = $ptrType($Uint32);
  51004. ptrType$15 = $ptrType($Uint8);
  51005. ptrType$16 = $ptrType($Uint64);
  51006. chanType$4 = $chanType(ioSrvReq, false, false);
  51007. ptrType$18 = $ptrType(netFD);
  51008. ptrType$19 = $ptrType(syscall.Overlapped);
  51009. chanType$5 = $chanType($error, false, false);
  51010. funcType = $funcType([ptrType$18], [$error], false);
  51011. ptrType$20 = $ptrType(syscall.SockaddrInet4);
  51012. ptrType$21 = $ptrType(syscall.SockaddrInet6);
  51013. arrayType = $arrayType($Uint8, 4);
  51014. arrayType$1 = $arrayType($Uint8, 16);
  51015. ptrType$22 = $ptrType(syscall.Handle);
  51016. ptrType$23 = $ptrType(syscall.RawSockaddrAny);
  51017. ptrType$24 = $ptrType($Int32);
  51018. arrayType$2 = $arrayType(syscall.RawSockaddrAny, 2);
  51019. sliceType$5 = $sliceType(syscall.RawSockaddrAny);
  51020. ptrType$25 = $ptrType(OpError);
  51021. ptrType$26 = $ptrType(ptrType$23);
  51022. ptrType$27 = $ptrType(os.File);
  51023. ptrType$29 = $ptrType(Interface);
  51024. sliceType$6 = $sliceType(Addr);
  51025. ptrType$30 = $ptrType(syscall.IpAdapterInfo);
  51026. sliceType$7 = $sliceType(syscall.InterfaceInfo);
  51027. arrayType$3 = $arrayType(syscall.InterfaceInfo, 20);
  51028. sliceType$8 = $sliceType(Interface);
  51029. arrayType$4 = $arrayType($Uint16, 256);
  51030. arrayType$5 = $arrayType($Uint8, 8);
  51031. arrayType$6 = $arrayType($Uint8, 256);
  51032. ptrType$31 = $ptrType(syscall.RawSockaddrInet4);
  51033. ptrType$32 = $ptrType(syscall.IpAddrString);
  51034. ptrType$49 = $ptrType(conn);
  51035. arrayType$7 = $arrayType($Uint8, 30);
  51036. arrayType$8 = $arrayType($Uint8, 32);
  51037. ptrType$51 = $ptrType(io.LimitedReader);
  51038. ptrType$52 = $ptrType(syscall.TransmitFileBuffers);
  51039. ptrType$54 = $ptrType(TCPConn);
  51040. ptrType$55 = $ptrType(TCPListener);
  51041. ptrType$57 = $ptrType(syscall.SockaddrUnix);
  51042. funcType$1 = $funcType([$emptyInterface, $String, $String], [$Bool], false);
  51043. ptrType$63 = $ptrType(dnsRR_HINFO);
  51044. ptrType$64 = $ptrType(dnsRR_MB);
  51045. ptrType$65 = $ptrType(dnsRR_MG);
  51046. ptrType$66 = $ptrType(dnsRR_MINFO);
  51047. ptrType$67 = $ptrType(dnsRR_MR);
  51048. ptrType$68 = $ptrType(dnsRR_MX);
  51049. ptrType$69 = $ptrType(dnsRR_NS);
  51050. ptrType$70 = $ptrType(dnsRR_PTR);
  51051. ptrType$71 = $ptrType(dnsRR_SOA);
  51052. ptrType$72 = $ptrType(dnsRR_TXT);
  51053. ptrType$73 = $ptrType(dnsRR_SRV);
  51054. ptrType$74 = $ptrType(dnsRR_A);
  51055. ptrType$75 = $ptrType(dnsRR_AAAA);
  51056. ptrType$78 = $ptrType(fdMutex);
  51057. ptrType$79 = $ptrType(pollDesc);
  51058. ptrType$80 = $ptrType(operation);
  51059. funcType$2 = $funcType([ptrType$80], [$error], false);
  51060. funcType$3 = $funcType([syscall.Sockaddr], [Addr], false);
  51061. ptrType$81 = $ptrType(IP);
  51062. ptrType$82 = $ptrType(ParseError);
  51063. ptrType$83 = $ptrType(timeoutError);
  51064. Listen = function(net, laddr) {
  51065. var $ptr, laddr, net;
  51066. $panic(errors.New("network access is not supported by GopherJS"));
  51067. };
  51068. $pkg.Listen = Listen;
  51069. sysInit = function() {
  51070. var $ptr;
  51071. };
  51072. probeIPv4Stack = function() {
  51073. var $ptr;
  51074. return false;
  51075. };
  51076. probeIPv6Stack = function() {
  51077. var $ptr, _tmp, _tmp$1, supportsIPv4map$1, supportsIPv6$1;
  51078. supportsIPv6$1 = false;
  51079. supportsIPv4map$1 = false;
  51080. _tmp = false; _tmp$1 = false; supportsIPv6$1 = _tmp; supportsIPv4map$1 = _tmp$1;
  51081. return [supportsIPv6$1, supportsIPv4map$1];
  51082. };
  51083. maxListenerBacklog = function() {
  51084. var $ptr;
  51085. return 2147483647;
  51086. };
  51087. dnsRR_Header.ptr.prototype.Header = function() {
  51088. var $ptr, h;
  51089. h = this;
  51090. return h;
  51091. };
  51092. dnsRR_Header.prototype.Header = function() { return this.$val.Header(); };
  51093. dnsRR_Header.ptr.prototype.Walk = function(f) {
  51094. var $ptr, _r, _r$1, _r$2, _r$3, _r$4, _v, _v$1, _v$2, _v$3, f, h, $s, $r;
  51095. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _v = $f._v; _v$1 = $f._v$1; _v$2 = $f._v$2; _v$3 = $f._v$3; f = $f.f; h = $f.h; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  51096. h = this;
  51097. _r = f((h.$ptr_Name || (h.$ptr_Name = new ptrType$10(function() { return this.$target.Name; }, function($v) { this.$target.Name = $v; }, h))), "Name", "domain"); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  51098. if (!(_r)) { _v$3 = false; $s = 4; continue s; }
  51099. _r$1 = f((h.$ptr_Rrtype || (h.$ptr_Rrtype = new ptrType$9(function() { return this.$target.Rrtype; }, function($v) { this.$target.Rrtype = $v; }, h))), "Rrtype", ""); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  51100. _v$3 = _r$1; case 4:
  51101. if (!(_v$3)) { _v$2 = false; $s = 3; continue s; }
  51102. _r$2 = f((h.$ptr_Class || (h.$ptr_Class = new ptrType$9(function() { return this.$target.Class; }, function($v) { this.$target.Class = $v; }, h))), "Class", ""); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  51103. _v$2 = _r$2; case 3:
  51104. if (!(_v$2)) { _v$1 = false; $s = 2; continue s; }
  51105. _r$3 = f((h.$ptr_Ttl || (h.$ptr_Ttl = new ptrType$11(function() { return this.$target.Ttl; }, function($v) { this.$target.Ttl = $v; }, h))), "Ttl", ""); /* */ $s = 8; case 8: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  51106. _v$1 = _r$3; case 2:
  51107. if (!(_v$1)) { _v = false; $s = 1; continue s; }
  51108. _r$4 = f((h.$ptr_Rdlength || (h.$ptr_Rdlength = new ptrType$9(function() { return this.$target.Rdlength; }, function($v) { this.$target.Rdlength = $v; }, h))), "Rdlength", ""); /* */ $s = 9; case 9: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
  51109. _v = _r$4; case 1:
  51110. return _v;
  51111. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: dnsRR_Header.ptr.prototype.Walk }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._v = _v; $f._v$1 = _v$1; $f._v$2 = _v$2; $f._v$3 = _v$3; $f.f = f; $f.h = h; $f.$s = $s; $f.$r = $r; return $f;
  51112. };
  51113. dnsRR_Header.prototype.Walk = function(f) { return this.$val.Walk(f); };
  51114. dnsRR_CNAME.ptr.prototype.Header = function() {
  51115. var $ptr, rr;
  51116. rr = this;
  51117. return rr.Hdr;
  51118. };
  51119. dnsRR_CNAME.prototype.Header = function() { return this.$val.Header(); };
  51120. dnsRR_CNAME.ptr.prototype.Walk = function(f) {
  51121. var $ptr, _r, _r$1, _v, f, rr, $s, $r;
  51122. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _v = $f._v; f = $f.f; rr = $f.rr; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  51123. rr = this;
  51124. _r = rr.Hdr.Walk(f); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  51125. if (!(_r)) { _v = false; $s = 1; continue s; }
  51126. _r$1 = f((rr.$ptr_Cname || (rr.$ptr_Cname = new ptrType$10(function() { return this.$target.Cname; }, function($v) { this.$target.Cname = $v; }, rr))), "Cname", "domain"); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  51127. _v = _r$1; case 1:
  51128. return _v;
  51129. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: dnsRR_CNAME.ptr.prototype.Walk }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._v = _v; $f.f = f; $f.rr = rr; $f.$s = $s; $f.$r = $r; return $f;
  51130. };
  51131. dnsRR_CNAME.prototype.Walk = function(f) { return this.$val.Walk(f); };
  51132. dnsRR_HINFO.ptr.prototype.Header = function() {
  51133. var $ptr, rr;
  51134. rr = this;
  51135. return rr.Hdr;
  51136. };
  51137. dnsRR_HINFO.prototype.Header = function() { return this.$val.Header(); };
  51138. dnsRR_HINFO.ptr.prototype.Walk = function(f) {
  51139. var $ptr, _r, _r$1, _r$2, _v, _v$1, f, rr, $s, $r;
  51140. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _v = $f._v; _v$1 = $f._v$1; f = $f.f; rr = $f.rr; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  51141. rr = this;
  51142. _r = rr.Hdr.Walk(f); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  51143. if (!(_r)) { _v$1 = false; $s = 2; continue s; }
  51144. _r$1 = f((rr.$ptr_Cpu || (rr.$ptr_Cpu = new ptrType$10(function() { return this.$target.Cpu; }, function($v) { this.$target.Cpu = $v; }, rr))), "Cpu", ""); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  51145. _v$1 = _r$1; case 2:
  51146. if (!(_v$1)) { _v = false; $s = 1; continue s; }
  51147. _r$2 = f((rr.$ptr_Os || (rr.$ptr_Os = new ptrType$10(function() { return this.$target.Os; }, function($v) { this.$target.Os = $v; }, rr))), "Os", ""); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  51148. _v = _r$2; case 1:
  51149. return _v;
  51150. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: dnsRR_HINFO.ptr.prototype.Walk }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._v = _v; $f._v$1 = _v$1; $f.f = f; $f.rr = rr; $f.$s = $s; $f.$r = $r; return $f;
  51151. };
  51152. dnsRR_HINFO.prototype.Walk = function(f) { return this.$val.Walk(f); };
  51153. dnsRR_MB.ptr.prototype.Header = function() {
  51154. var $ptr, rr;
  51155. rr = this;
  51156. return rr.Hdr;
  51157. };
  51158. dnsRR_MB.prototype.Header = function() { return this.$val.Header(); };
  51159. dnsRR_MB.ptr.prototype.Walk = function(f) {
  51160. var $ptr, _r, _r$1, _v, f, rr, $s, $r;
  51161. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _v = $f._v; f = $f.f; rr = $f.rr; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  51162. rr = this;
  51163. _r = rr.Hdr.Walk(f); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  51164. if (!(_r)) { _v = false; $s = 1; continue s; }
  51165. _r$1 = f((rr.$ptr_Mb || (rr.$ptr_Mb = new ptrType$10(function() { return this.$target.Mb; }, function($v) { this.$target.Mb = $v; }, rr))), "Mb", "domain"); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  51166. _v = _r$1; case 1:
  51167. return _v;
  51168. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: dnsRR_MB.ptr.prototype.Walk }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._v = _v; $f.f = f; $f.rr = rr; $f.$s = $s; $f.$r = $r; return $f;
  51169. };
  51170. dnsRR_MB.prototype.Walk = function(f) { return this.$val.Walk(f); };
  51171. dnsRR_MG.ptr.prototype.Header = function() {
  51172. var $ptr, rr;
  51173. rr = this;
  51174. return rr.Hdr;
  51175. };
  51176. dnsRR_MG.prototype.Header = function() { return this.$val.Header(); };
  51177. dnsRR_MG.ptr.prototype.Walk = function(f) {
  51178. var $ptr, _r, _r$1, _v, f, rr, $s, $r;
  51179. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _v = $f._v; f = $f.f; rr = $f.rr; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  51180. rr = this;
  51181. _r = rr.Hdr.Walk(f); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  51182. if (!(_r)) { _v = false; $s = 1; continue s; }
  51183. _r$1 = f((rr.$ptr_Mg || (rr.$ptr_Mg = new ptrType$10(function() { return this.$target.Mg; }, function($v) { this.$target.Mg = $v; }, rr))), "Mg", "domain"); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  51184. _v = _r$1; case 1:
  51185. return _v;
  51186. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: dnsRR_MG.ptr.prototype.Walk }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._v = _v; $f.f = f; $f.rr = rr; $f.$s = $s; $f.$r = $r; return $f;
  51187. };
  51188. dnsRR_MG.prototype.Walk = function(f) { return this.$val.Walk(f); };
  51189. dnsRR_MINFO.ptr.prototype.Header = function() {
  51190. var $ptr, rr;
  51191. rr = this;
  51192. return rr.Hdr;
  51193. };
  51194. dnsRR_MINFO.prototype.Header = function() { return this.$val.Header(); };
  51195. dnsRR_MINFO.ptr.prototype.Walk = function(f) {
  51196. var $ptr, _r, _r$1, _r$2, _v, _v$1, f, rr, $s, $r;
  51197. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _v = $f._v; _v$1 = $f._v$1; f = $f.f; rr = $f.rr; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  51198. rr = this;
  51199. _r = rr.Hdr.Walk(f); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  51200. if (!(_r)) { _v$1 = false; $s = 2; continue s; }
  51201. _r$1 = f((rr.$ptr_Rmail || (rr.$ptr_Rmail = new ptrType$10(function() { return this.$target.Rmail; }, function($v) { this.$target.Rmail = $v; }, rr))), "Rmail", "domain"); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  51202. _v$1 = _r$1; case 2:
  51203. if (!(_v$1)) { _v = false; $s = 1; continue s; }
  51204. _r$2 = f((rr.$ptr_Email || (rr.$ptr_Email = new ptrType$10(function() { return this.$target.Email; }, function($v) { this.$target.Email = $v; }, rr))), "Email", "domain"); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  51205. _v = _r$2; case 1:
  51206. return _v;
  51207. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: dnsRR_MINFO.ptr.prototype.Walk }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._v = _v; $f._v$1 = _v$1; $f.f = f; $f.rr = rr; $f.$s = $s; $f.$r = $r; return $f;
  51208. };
  51209. dnsRR_MINFO.prototype.Walk = function(f) { return this.$val.Walk(f); };
  51210. dnsRR_MR.ptr.prototype.Header = function() {
  51211. var $ptr, rr;
  51212. rr = this;
  51213. return rr.Hdr;
  51214. };
  51215. dnsRR_MR.prototype.Header = function() { return this.$val.Header(); };
  51216. dnsRR_MR.ptr.prototype.Walk = function(f) {
  51217. var $ptr, _r, _r$1, _v, f, rr, $s, $r;
  51218. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _v = $f._v; f = $f.f; rr = $f.rr; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  51219. rr = this;
  51220. _r = rr.Hdr.Walk(f); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  51221. if (!(_r)) { _v = false; $s = 1; continue s; }
  51222. _r$1 = f((rr.$ptr_Mr || (rr.$ptr_Mr = new ptrType$10(function() { return this.$target.Mr; }, function($v) { this.$target.Mr = $v; }, rr))), "Mr", "domain"); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  51223. _v = _r$1; case 1:
  51224. return _v;
  51225. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: dnsRR_MR.ptr.prototype.Walk }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._v = _v; $f.f = f; $f.rr = rr; $f.$s = $s; $f.$r = $r; return $f;
  51226. };
  51227. dnsRR_MR.prototype.Walk = function(f) { return this.$val.Walk(f); };
  51228. dnsRR_MX.ptr.prototype.Header = function() {
  51229. var $ptr, rr;
  51230. rr = this;
  51231. return rr.Hdr;
  51232. };
  51233. dnsRR_MX.prototype.Header = function() { return this.$val.Header(); };
  51234. dnsRR_MX.ptr.prototype.Walk = function(f) {
  51235. var $ptr, _r, _r$1, _r$2, _v, _v$1, f, rr, $s, $r;
  51236. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _v = $f._v; _v$1 = $f._v$1; f = $f.f; rr = $f.rr; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  51237. rr = this;
  51238. _r = rr.Hdr.Walk(f); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  51239. if (!(_r)) { _v$1 = false; $s = 2; continue s; }
  51240. _r$1 = f((rr.$ptr_Pref || (rr.$ptr_Pref = new ptrType$9(function() { return this.$target.Pref; }, function($v) { this.$target.Pref = $v; }, rr))), "Pref", ""); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  51241. _v$1 = _r$1; case 2:
  51242. if (!(_v$1)) { _v = false; $s = 1; continue s; }
  51243. _r$2 = f((rr.$ptr_Mx || (rr.$ptr_Mx = new ptrType$10(function() { return this.$target.Mx; }, function($v) { this.$target.Mx = $v; }, rr))), "Mx", "domain"); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  51244. _v = _r$2; case 1:
  51245. return _v;
  51246. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: dnsRR_MX.ptr.prototype.Walk }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._v = _v; $f._v$1 = _v$1; $f.f = f; $f.rr = rr; $f.$s = $s; $f.$r = $r; return $f;
  51247. };
  51248. dnsRR_MX.prototype.Walk = function(f) { return this.$val.Walk(f); };
  51249. dnsRR_NS.ptr.prototype.Header = function() {
  51250. var $ptr, rr;
  51251. rr = this;
  51252. return rr.Hdr;
  51253. };
  51254. dnsRR_NS.prototype.Header = function() { return this.$val.Header(); };
  51255. dnsRR_NS.ptr.prototype.Walk = function(f) {
  51256. var $ptr, _r, _r$1, _v, f, rr, $s, $r;
  51257. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _v = $f._v; f = $f.f; rr = $f.rr; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  51258. rr = this;
  51259. _r = rr.Hdr.Walk(f); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  51260. if (!(_r)) { _v = false; $s = 1; continue s; }
  51261. _r$1 = f((rr.$ptr_Ns || (rr.$ptr_Ns = new ptrType$10(function() { return this.$target.Ns; }, function($v) { this.$target.Ns = $v; }, rr))), "Ns", "domain"); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  51262. _v = _r$1; case 1:
  51263. return _v;
  51264. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: dnsRR_NS.ptr.prototype.Walk }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._v = _v; $f.f = f; $f.rr = rr; $f.$s = $s; $f.$r = $r; return $f;
  51265. };
  51266. dnsRR_NS.prototype.Walk = function(f) { return this.$val.Walk(f); };
  51267. dnsRR_PTR.ptr.prototype.Header = function() {
  51268. var $ptr, rr;
  51269. rr = this;
  51270. return rr.Hdr;
  51271. };
  51272. dnsRR_PTR.prototype.Header = function() { return this.$val.Header(); };
  51273. dnsRR_PTR.ptr.prototype.Walk = function(f) {
  51274. var $ptr, _r, _r$1, _v, f, rr, $s, $r;
  51275. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _v = $f._v; f = $f.f; rr = $f.rr; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  51276. rr = this;
  51277. _r = rr.Hdr.Walk(f); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  51278. if (!(_r)) { _v = false; $s = 1; continue s; }
  51279. _r$1 = f((rr.$ptr_Ptr || (rr.$ptr_Ptr = new ptrType$10(function() { return this.$target.Ptr; }, function($v) { this.$target.Ptr = $v; }, rr))), "Ptr", "domain"); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  51280. _v = _r$1; case 1:
  51281. return _v;
  51282. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: dnsRR_PTR.ptr.prototype.Walk }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._v = _v; $f.f = f; $f.rr = rr; $f.$s = $s; $f.$r = $r; return $f;
  51283. };
  51284. dnsRR_PTR.prototype.Walk = function(f) { return this.$val.Walk(f); };
  51285. dnsRR_SOA.ptr.prototype.Header = function() {
  51286. var $ptr, rr;
  51287. rr = this;
  51288. return rr.Hdr;
  51289. };
  51290. dnsRR_SOA.prototype.Header = function() { return this.$val.Header(); };
  51291. dnsRR_SOA.ptr.prototype.Walk = function(f) {
  51292. var $ptr, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _v, _v$1, _v$2, _v$3, _v$4, _v$5, _v$6, f, rr, $s, $r;
  51293. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _v = $f._v; _v$1 = $f._v$1; _v$2 = $f._v$2; _v$3 = $f._v$3; _v$4 = $f._v$4; _v$5 = $f._v$5; _v$6 = $f._v$6; f = $f.f; rr = $f.rr; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  51294. rr = this;
  51295. _r = rr.Hdr.Walk(f); /* */ $s = 8; case 8: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  51296. if (!(_r)) { _v$6 = false; $s = 7; continue s; }
  51297. _r$1 = f((rr.$ptr_Ns || (rr.$ptr_Ns = new ptrType$10(function() { return this.$target.Ns; }, function($v) { this.$target.Ns = $v; }, rr))), "Ns", "domain"); /* */ $s = 9; case 9: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  51298. _v$6 = _r$1; case 7:
  51299. if (!(_v$6)) { _v$5 = false; $s = 6; continue s; }
  51300. _r$2 = f((rr.$ptr_Mbox || (rr.$ptr_Mbox = new ptrType$10(function() { return this.$target.Mbox; }, function($v) { this.$target.Mbox = $v; }, rr))), "Mbox", "domain"); /* */ $s = 10; case 10: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  51301. _v$5 = _r$2; case 6:
  51302. if (!(_v$5)) { _v$4 = false; $s = 5; continue s; }
  51303. _r$3 = f((rr.$ptr_Serial || (rr.$ptr_Serial = new ptrType$11(function() { return this.$target.Serial; }, function($v) { this.$target.Serial = $v; }, rr))), "Serial", ""); /* */ $s = 11; case 11: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  51304. _v$4 = _r$3; case 5:
  51305. if (!(_v$4)) { _v$3 = false; $s = 4; continue s; }
  51306. _r$4 = f((rr.$ptr_Refresh || (rr.$ptr_Refresh = new ptrType$11(function() { return this.$target.Refresh; }, function($v) { this.$target.Refresh = $v; }, rr))), "Refresh", ""); /* */ $s = 12; case 12: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
  51307. _v$3 = _r$4; case 4:
  51308. if (!(_v$3)) { _v$2 = false; $s = 3; continue s; }
  51309. _r$5 = f((rr.$ptr_Retry || (rr.$ptr_Retry = new ptrType$11(function() { return this.$target.Retry; }, function($v) { this.$target.Retry = $v; }, rr))), "Retry", ""); /* */ $s = 13; case 13: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
  51310. _v$2 = _r$5; case 3:
  51311. if (!(_v$2)) { _v$1 = false; $s = 2; continue s; }
  51312. _r$6 = f((rr.$ptr_Expire || (rr.$ptr_Expire = new ptrType$11(function() { return this.$target.Expire; }, function($v) { this.$target.Expire = $v; }, rr))), "Expire", ""); /* */ $s = 14; case 14: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
  51313. _v$1 = _r$6; case 2:
  51314. if (!(_v$1)) { _v = false; $s = 1; continue s; }
  51315. _r$7 = f((rr.$ptr_Minttl || (rr.$ptr_Minttl = new ptrType$11(function() { return this.$target.Minttl; }, function($v) { this.$target.Minttl = $v; }, rr))), "Minttl", ""); /* */ $s = 15; case 15: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
  51316. _v = _r$7; case 1:
  51317. return _v;
  51318. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: dnsRR_SOA.ptr.prototype.Walk }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._v = _v; $f._v$1 = _v$1; $f._v$2 = _v$2; $f._v$3 = _v$3; $f._v$4 = _v$4; $f._v$5 = _v$5; $f._v$6 = _v$6; $f.f = f; $f.rr = rr; $f.$s = $s; $f.$r = $r; return $f;
  51319. };
  51320. dnsRR_SOA.prototype.Walk = function(f) { return this.$val.Walk(f); };
  51321. dnsRR_TXT.ptr.prototype.Header = function() {
  51322. var $ptr, rr;
  51323. rr = this;
  51324. return rr.Hdr;
  51325. };
  51326. dnsRR_TXT.prototype.Header = function() { return this.$val.Header(); };
  51327. dnsRR_TXT.ptr.prototype.Walk = function(f) {
  51328. var $ptr, _r, _r$1, _v, f, rr, $s, $r;
  51329. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _v = $f._v; f = $f.f; rr = $f.rr; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  51330. rr = this;
  51331. _r = rr.Hdr.Walk(f); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  51332. if (!(_r)) { _v = false; $s = 1; continue s; }
  51333. _r$1 = f((rr.$ptr_Txt || (rr.$ptr_Txt = new ptrType$10(function() { return this.$target.Txt; }, function($v) { this.$target.Txt = $v; }, rr))), "Txt", ""); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  51334. _v = _r$1; case 1:
  51335. return _v;
  51336. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: dnsRR_TXT.ptr.prototype.Walk }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._v = _v; $f.f = f; $f.rr = rr; $f.$s = $s; $f.$r = $r; return $f;
  51337. };
  51338. dnsRR_TXT.prototype.Walk = function(f) { return this.$val.Walk(f); };
  51339. dnsRR_SRV.ptr.prototype.Header = function() {
  51340. var $ptr, rr;
  51341. rr = this;
  51342. return rr.Hdr;
  51343. };
  51344. dnsRR_SRV.prototype.Header = function() { return this.$val.Header(); };
  51345. dnsRR_SRV.ptr.prototype.Walk = function(f) {
  51346. var $ptr, _r, _r$1, _r$2, _r$3, _r$4, _v, _v$1, _v$2, _v$3, f, rr, $s, $r;
  51347. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _v = $f._v; _v$1 = $f._v$1; _v$2 = $f._v$2; _v$3 = $f._v$3; f = $f.f; rr = $f.rr; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  51348. rr = this;
  51349. _r = rr.Hdr.Walk(f); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  51350. if (!(_r)) { _v$3 = false; $s = 4; continue s; }
  51351. _r$1 = f((rr.$ptr_Priority || (rr.$ptr_Priority = new ptrType$9(function() { return this.$target.Priority; }, function($v) { this.$target.Priority = $v; }, rr))), "Priority", ""); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  51352. _v$3 = _r$1; case 4:
  51353. if (!(_v$3)) { _v$2 = false; $s = 3; continue s; }
  51354. _r$2 = f((rr.$ptr_Weight || (rr.$ptr_Weight = new ptrType$9(function() { return this.$target.Weight; }, function($v) { this.$target.Weight = $v; }, rr))), "Weight", ""); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  51355. _v$2 = _r$2; case 3:
  51356. if (!(_v$2)) { _v$1 = false; $s = 2; continue s; }
  51357. _r$3 = f((rr.$ptr_Port || (rr.$ptr_Port = new ptrType$9(function() { return this.$target.Port; }, function($v) { this.$target.Port = $v; }, rr))), "Port", ""); /* */ $s = 8; case 8: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  51358. _v$1 = _r$3; case 2:
  51359. if (!(_v$1)) { _v = false; $s = 1; continue s; }
  51360. _r$4 = f((rr.$ptr_Target || (rr.$ptr_Target = new ptrType$10(function() { return this.$target.Target; }, function($v) { this.$target.Target = $v; }, rr))), "Target", "domain"); /* */ $s = 9; case 9: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
  51361. _v = _r$4; case 1:
  51362. return _v;
  51363. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: dnsRR_SRV.ptr.prototype.Walk }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._v = _v; $f._v$1 = _v$1; $f._v$2 = _v$2; $f._v$3 = _v$3; $f.f = f; $f.rr = rr; $f.$s = $s; $f.$r = $r; return $f;
  51364. };
  51365. dnsRR_SRV.prototype.Walk = function(f) { return this.$val.Walk(f); };
  51366. dnsRR_A.ptr.prototype.Header = function() {
  51367. var $ptr, rr;
  51368. rr = this;
  51369. return rr.Hdr;
  51370. };
  51371. dnsRR_A.prototype.Header = function() { return this.$val.Header(); };
  51372. dnsRR_A.ptr.prototype.Walk = function(f) {
  51373. var $ptr, _r, _r$1, _v, f, rr, $s, $r;
  51374. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _v = $f._v; f = $f.f; rr = $f.rr; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  51375. rr = this;
  51376. _r = rr.Hdr.Walk(f); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  51377. if (!(_r)) { _v = false; $s = 1; continue s; }
  51378. _r$1 = f((rr.$ptr_A || (rr.$ptr_A = new ptrType$11(function() { return this.$target.A; }, function($v) { this.$target.A = $v; }, rr))), "A", "ipv4"); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  51379. _v = _r$1; case 1:
  51380. return _v;
  51381. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: dnsRR_A.ptr.prototype.Walk }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._v = _v; $f.f = f; $f.rr = rr; $f.$s = $s; $f.$r = $r; return $f;
  51382. };
  51383. dnsRR_A.prototype.Walk = function(f) { return this.$val.Walk(f); };
  51384. dnsRR_AAAA.ptr.prototype.Header = function() {
  51385. var $ptr, rr;
  51386. rr = this;
  51387. return rr.Hdr;
  51388. };
  51389. dnsRR_AAAA.prototype.Header = function() { return this.$val.Header(); };
  51390. dnsRR_AAAA.ptr.prototype.Walk = function(f) {
  51391. var $ptr, _r, _r$1, _v, f, rr, $s, $r;
  51392. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _v = $f._v; f = $f.f; rr = $f.rr; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  51393. rr = this;
  51394. _r = rr.Hdr.Walk(f); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  51395. if (!(_r)) { _v = false; $s = 1; continue s; }
  51396. _r$1 = f(new sliceType$1(rr.AAAA), "AAAA", "ipv6"); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  51397. _v = _r$1; case 1:
  51398. return _v;
  51399. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: dnsRR_AAAA.ptr.prototype.Walk }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._v = _v; $f.f = f; $f.rr = rr; $f.$s = $s; $f.$r = $r; return $f;
  51400. };
  51401. dnsRR_AAAA.prototype.Walk = function(f) { return this.$val.Walk(f); };
  51402. fdMutex.ptr.prototype.Incref = function() {
  51403. var $ptr, mu, new$1, old, x, x$1;
  51404. mu = this;
  51405. while (true) {
  51406. old = atomic.LoadUint64((mu.$ptr_state || (mu.$ptr_state = new ptrType$16(function() { return this.$target.state; }, function($v) { this.$target.state = $v; }, mu))));
  51407. if (!((x = new $Uint64(old.$high & 0, (old.$low & 1) >>> 0), (x.$high === 0 && x.$low === 0)))) {
  51408. return false;
  51409. }
  51410. new$1 = new $Uint64(old.$high + 0, old.$low + 8);
  51411. if ((x$1 = new $Uint64(new$1.$high & 0, (new$1.$low & 8388600) >>> 0), (x$1.$high === 0 && x$1.$low === 0))) {
  51412. $panic(new $String("net: inconsistent fdMutex"));
  51413. }
  51414. if (atomic.CompareAndSwapUint64((mu.$ptr_state || (mu.$ptr_state = new ptrType$16(function() { return this.$target.state; }, function($v) { this.$target.state = $v; }, mu))), old, new$1)) {
  51415. return true;
  51416. }
  51417. }
  51418. };
  51419. fdMutex.prototype.Incref = function() { return this.$val.Incref(); };
  51420. fdMutex.ptr.prototype.IncrefAndClose = function() {
  51421. var $ptr, mu, new$1, old, x, x$1, x$2, x$3, x$4, x$5, x$6, x$7;
  51422. mu = this;
  51423. while (true) {
  51424. old = atomic.LoadUint64((mu.$ptr_state || (mu.$ptr_state = new ptrType$16(function() { return this.$target.state; }, function($v) { this.$target.state = $v; }, mu))));
  51425. if (!((x = new $Uint64(old.$high & 0, (old.$low & 1) >>> 0), (x.$high === 0 && x.$low === 0)))) {
  51426. return false;
  51427. }
  51428. new$1 = (x$1 = new $Uint64(old.$high | 0, (old.$low | 1) >>> 0), new $Uint64(x$1.$high + 0, x$1.$low + 8));
  51429. if ((x$2 = new $Uint64(new$1.$high & 0, (new$1.$low & 8388600) >>> 0), (x$2.$high === 0 && x$2.$low === 0))) {
  51430. $panic(new $String("net: inconsistent fdMutex"));
  51431. }
  51432. new$1 = (x$3 = new $Uint64(2147483647, 4286578688), new $Uint64(new$1.$high & ~x$3.$high, (new$1.$low & ~x$3.$low) >>> 0));
  51433. if (atomic.CompareAndSwapUint64((mu.$ptr_state || (mu.$ptr_state = new ptrType$16(function() { return this.$target.state; }, function($v) { this.$target.state = $v; }, mu))), old, new$1)) {
  51434. while (true) {
  51435. if (!(!((x$4 = new $Uint64(old.$high & 2047, (old.$low & 4286578688) >>> 0), (x$4.$high === 0 && x$4.$low === 0))))) { break; }
  51436. old = (x$5 = new $Uint64(0, 8388608), new $Uint64(old.$high - x$5.$high, old.$low - x$5.$low));
  51437. runtime_Semrelease((mu.$ptr_rsema || (mu.$ptr_rsema = new ptrType$11(function() { return this.$target.rsema; }, function($v) { this.$target.rsema = $v; }, mu))));
  51438. }
  51439. while (true) {
  51440. if (!(!((x$6 = new $Uint64(old.$high & 2147481600, (old.$low & 0) >>> 0), (x$6.$high === 0 && x$6.$low === 0))))) { break; }
  51441. old = (x$7 = new $Uint64(2048, 0), new $Uint64(old.$high - x$7.$high, old.$low - x$7.$low));
  51442. runtime_Semrelease((mu.$ptr_wsema || (mu.$ptr_wsema = new ptrType$11(function() { return this.$target.wsema; }, function($v) { this.$target.wsema = $v; }, mu))));
  51443. }
  51444. return true;
  51445. }
  51446. }
  51447. };
  51448. fdMutex.prototype.IncrefAndClose = function() { return this.$val.IncrefAndClose(); };
  51449. fdMutex.ptr.prototype.Decref = function() {
  51450. var $ptr, mu, new$1, old, x, x$1;
  51451. mu = this;
  51452. while (true) {
  51453. old = atomic.LoadUint64((mu.$ptr_state || (mu.$ptr_state = new ptrType$16(function() { return this.$target.state; }, function($v) { this.$target.state = $v; }, mu))));
  51454. if ((x = new $Uint64(old.$high & 0, (old.$low & 8388600) >>> 0), (x.$high === 0 && x.$low === 0))) {
  51455. $panic(new $String("net: inconsistent fdMutex"));
  51456. }
  51457. new$1 = new $Uint64(old.$high - 0, old.$low - 8);
  51458. if (atomic.CompareAndSwapUint64((mu.$ptr_state || (mu.$ptr_state = new ptrType$16(function() { return this.$target.state; }, function($v) { this.$target.state = $v; }, mu))), old, new$1)) {
  51459. return (x$1 = new $Uint64(new$1.$high & 0, (new$1.$low & 8388601) >>> 0), (x$1.$high === 0 && x$1.$low === 1));
  51460. }
  51461. }
  51462. };
  51463. fdMutex.prototype.Decref = function() { return this.$val.Decref(); };
  51464. fdMutex.ptr.prototype.RWLock = function(read) {
  51465. var $ptr, _tmp, _tmp$1, _tmp$2, mu, mutexBit, mutexMask, mutexSema, mutexWait, new$1, old, read, x, x$1, x$2, x$3, x$4, x$5;
  51466. mu = this;
  51467. _tmp = new $Uint64(0, 0); _tmp$1 = new $Uint64(0, 0); _tmp$2 = new $Uint64(0, 0); mutexBit = _tmp; mutexWait = _tmp$1; mutexMask = _tmp$2;
  51468. mutexSema = ptrType$11.nil;
  51469. if (read) {
  51470. mutexBit = new $Uint64(0, 2);
  51471. mutexWait = new $Uint64(0, 8388608);
  51472. mutexMask = new $Uint64(2047, 4286578688);
  51473. mutexSema = (mu.$ptr_rsema || (mu.$ptr_rsema = new ptrType$11(function() { return this.$target.rsema; }, function($v) { this.$target.rsema = $v; }, mu)));
  51474. } else {
  51475. mutexBit = new $Uint64(0, 4);
  51476. mutexWait = new $Uint64(2048, 0);
  51477. mutexMask = new $Uint64(2147481600, 0);
  51478. mutexSema = (mu.$ptr_wsema || (mu.$ptr_wsema = new ptrType$11(function() { return this.$target.wsema; }, function($v) { this.$target.wsema = $v; }, mu)));
  51479. }
  51480. while (true) {
  51481. old = atomic.LoadUint64((mu.$ptr_state || (mu.$ptr_state = new ptrType$16(function() { return this.$target.state; }, function($v) { this.$target.state = $v; }, mu))));
  51482. if (!((x = new $Uint64(old.$high & 0, (old.$low & 1) >>> 0), (x.$high === 0 && x.$low === 0)))) {
  51483. return false;
  51484. }
  51485. new$1 = new $Uint64(0, 0);
  51486. if ((x$1 = new $Uint64(old.$high & mutexBit.$high, (old.$low & mutexBit.$low) >>> 0), (x$1.$high === 0 && x$1.$low === 0))) {
  51487. new$1 = (x$2 = new $Uint64(old.$high | mutexBit.$high, (old.$low | mutexBit.$low) >>> 0), new $Uint64(x$2.$high + 0, x$2.$low + 8));
  51488. if ((x$3 = new $Uint64(new$1.$high & 0, (new$1.$low & 8388600) >>> 0), (x$3.$high === 0 && x$3.$low === 0))) {
  51489. $panic(new $String("net: inconsistent fdMutex"));
  51490. }
  51491. } else {
  51492. new$1 = new $Uint64(old.$high + mutexWait.$high, old.$low + mutexWait.$low);
  51493. if ((x$4 = new $Uint64(new$1.$high & mutexMask.$high, (new$1.$low & mutexMask.$low) >>> 0), (x$4.$high === 0 && x$4.$low === 0))) {
  51494. $panic(new $String("net: inconsistent fdMutex"));
  51495. }
  51496. }
  51497. if (atomic.CompareAndSwapUint64((mu.$ptr_state || (mu.$ptr_state = new ptrType$16(function() { return this.$target.state; }, function($v) { this.$target.state = $v; }, mu))), old, new$1)) {
  51498. if ((x$5 = new $Uint64(old.$high & mutexBit.$high, (old.$low & mutexBit.$low) >>> 0), (x$5.$high === 0 && x$5.$low === 0))) {
  51499. return true;
  51500. }
  51501. runtime_Semacquire(mutexSema);
  51502. }
  51503. }
  51504. };
  51505. fdMutex.prototype.RWLock = function(read) { return this.$val.RWLock(read); };
  51506. fdMutex.ptr.prototype.RWUnlock = function(read) {
  51507. var $ptr, _tmp, _tmp$1, _tmp$2, mu, mutexBit, mutexMask, mutexSema, mutexWait, new$1, old, read, x, x$1, x$2, x$3, x$4, x$5, x$6;
  51508. mu = this;
  51509. _tmp = new $Uint64(0, 0); _tmp$1 = new $Uint64(0, 0); _tmp$2 = new $Uint64(0, 0); mutexBit = _tmp; mutexWait = _tmp$1; mutexMask = _tmp$2;
  51510. mutexSema = ptrType$11.nil;
  51511. if (read) {
  51512. mutexBit = new $Uint64(0, 2);
  51513. mutexWait = new $Uint64(0, 8388608);
  51514. mutexMask = new $Uint64(2047, 4286578688);
  51515. mutexSema = (mu.$ptr_rsema || (mu.$ptr_rsema = new ptrType$11(function() { return this.$target.rsema; }, function($v) { this.$target.rsema = $v; }, mu)));
  51516. } else {
  51517. mutexBit = new $Uint64(0, 4);
  51518. mutexWait = new $Uint64(2048, 0);
  51519. mutexMask = new $Uint64(2147481600, 0);
  51520. mutexSema = (mu.$ptr_wsema || (mu.$ptr_wsema = new ptrType$11(function() { return this.$target.wsema; }, function($v) { this.$target.wsema = $v; }, mu)));
  51521. }
  51522. while (true) {
  51523. old = atomic.LoadUint64((mu.$ptr_state || (mu.$ptr_state = new ptrType$16(function() { return this.$target.state; }, function($v) { this.$target.state = $v; }, mu))));
  51524. if ((x = new $Uint64(old.$high & mutexBit.$high, (old.$low & mutexBit.$low) >>> 0), (x.$high === 0 && x.$low === 0)) || (x$1 = new $Uint64(old.$high & 0, (old.$low & 8388600) >>> 0), (x$1.$high === 0 && x$1.$low === 0))) {
  51525. $panic(new $String("net: inconsistent fdMutex"));
  51526. }
  51527. new$1 = (x$2 = new $Uint64(old.$high & ~mutexBit.$high, (old.$low & ~mutexBit.$low) >>> 0), new $Uint64(x$2.$high - 0, x$2.$low - 8));
  51528. if (!((x$3 = new $Uint64(old.$high & mutexMask.$high, (old.$low & mutexMask.$low) >>> 0), (x$3.$high === 0 && x$3.$low === 0)))) {
  51529. new$1 = (x$4 = mutexWait, new $Uint64(new$1.$high - x$4.$high, new$1.$low - x$4.$low));
  51530. }
  51531. if (atomic.CompareAndSwapUint64((mu.$ptr_state || (mu.$ptr_state = new ptrType$16(function() { return this.$target.state; }, function($v) { this.$target.state = $v; }, mu))), old, new$1)) {
  51532. if (!((x$5 = new $Uint64(old.$high & mutexMask.$high, (old.$low & mutexMask.$low) >>> 0), (x$5.$high === 0 && x$5.$low === 0)))) {
  51533. runtime_Semrelease(mutexSema);
  51534. }
  51535. return (x$6 = new $Uint64(new$1.$high & 0, (new$1.$low & 8388601) >>> 0), (x$6.$high === 0 && x$6.$low === 1));
  51536. }
  51537. }
  51538. };
  51539. fdMutex.prototype.RWUnlock = function(read) { return this.$val.RWUnlock(read); };
  51540. runtime_Semacquire = function() {
  51541. $panic("Native function not implemented: net.runtime_Semacquire");
  51542. };
  51543. runtime_Semrelease = function() {
  51544. $panic("Native function not implemented: net.runtime_Semrelease");
  51545. };
  51546. runtimeNano = function() {
  51547. $panic("Native function not implemented: net.runtimeNano");
  51548. };
  51549. runtime_pollServerInit = function() {
  51550. $panic("Native function not implemented: net.runtime_pollServerInit");
  51551. };
  51552. runtime_pollOpen = function() {
  51553. $panic("Native function not implemented: net.runtime_pollOpen");
  51554. };
  51555. runtime_pollClose = function() {
  51556. $panic("Native function not implemented: net.runtime_pollClose");
  51557. };
  51558. runtime_pollWait = function() {
  51559. $panic("Native function not implemented: net.runtime_pollWait");
  51560. };
  51561. runtime_pollWaitCanceled = function() {
  51562. $panic("Native function not implemented: net.runtime_pollWaitCanceled");
  51563. };
  51564. runtime_pollReset = function() {
  51565. $panic("Native function not implemented: net.runtime_pollReset");
  51566. };
  51567. runtime_pollSetDeadline = function() {
  51568. $panic("Native function not implemented: net.runtime_pollSetDeadline");
  51569. };
  51570. runtime_pollUnblock = function() {
  51571. $panic("Native function not implemented: net.runtime_pollUnblock");
  51572. };
  51573. pollDesc.ptr.prototype.Init = function(fd) {
  51574. var $ptr, _tuple, ctx, errno, fd, pd, $s, $r;
  51575. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _tuple = $f._tuple; ctx = $f.ctx; errno = $f.errno; fd = $f.fd; pd = $f.pd; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  51576. pd = this;
  51577. $r = serverInit.Do(runtime_pollServerInit); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  51578. _tuple = runtime_pollOpen((fd.sysfd >>> 0)); ctx = _tuple[0]; errno = _tuple[1];
  51579. if (!((errno === 0))) {
  51580. return new syscall.Errno((errno >>> 0));
  51581. }
  51582. pd.runtimeCtx = ctx;
  51583. return $ifaceNil;
  51584. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: pollDesc.ptr.prototype.Init }; } $f.$ptr = $ptr; $f._tuple = _tuple; $f.ctx = ctx; $f.errno = errno; $f.fd = fd; $f.pd = pd; $f.$s = $s; $f.$r = $r; return $f;
  51585. };
  51586. pollDesc.prototype.Init = function(fd) { return this.$val.Init(fd); };
  51587. pollDesc.ptr.prototype.Close = function() {
  51588. var $ptr, pd;
  51589. pd = this;
  51590. if (pd.runtimeCtx === 0) {
  51591. return;
  51592. }
  51593. runtime_pollClose(pd.runtimeCtx);
  51594. pd.runtimeCtx = 0;
  51595. };
  51596. pollDesc.prototype.Close = function() { return this.$val.Close(); };
  51597. pollDesc.ptr.prototype.Lock = function() {
  51598. var $ptr, pd;
  51599. pd = this;
  51600. };
  51601. pollDesc.prototype.Lock = function() { return this.$val.Lock(); };
  51602. pollDesc.ptr.prototype.Unlock = function() {
  51603. var $ptr, pd;
  51604. pd = this;
  51605. };
  51606. pollDesc.prototype.Unlock = function() { return this.$val.Unlock(); };
  51607. pollDesc.ptr.prototype.Wakeup = function() {
  51608. var $ptr, pd;
  51609. pd = this;
  51610. };
  51611. pollDesc.prototype.Wakeup = function() { return this.$val.Wakeup(); };
  51612. pollDesc.ptr.prototype.Evict = function() {
  51613. var $ptr, pd;
  51614. pd = this;
  51615. if (pd.runtimeCtx === 0) {
  51616. return false;
  51617. }
  51618. runtime_pollUnblock(pd.runtimeCtx);
  51619. return false;
  51620. };
  51621. pollDesc.prototype.Evict = function() { return this.$val.Evict(); };
  51622. pollDesc.ptr.prototype.Prepare = function(mode) {
  51623. var $ptr, mode, pd, res;
  51624. pd = this;
  51625. res = runtime_pollReset(pd.runtimeCtx, mode);
  51626. return convertErr(res);
  51627. };
  51628. pollDesc.prototype.Prepare = function(mode) { return this.$val.Prepare(mode); };
  51629. pollDesc.ptr.prototype.PrepareRead = function() {
  51630. var $ptr, pd;
  51631. pd = this;
  51632. return pd.Prepare(114);
  51633. };
  51634. pollDesc.prototype.PrepareRead = function() { return this.$val.PrepareRead(); };
  51635. pollDesc.ptr.prototype.PrepareWrite = function() {
  51636. var $ptr, pd;
  51637. pd = this;
  51638. return pd.Prepare(119);
  51639. };
  51640. pollDesc.prototype.PrepareWrite = function() { return this.$val.PrepareWrite(); };
  51641. pollDesc.ptr.prototype.Wait = function(mode) {
  51642. var $ptr, mode, pd, res;
  51643. pd = this;
  51644. res = runtime_pollWait(pd.runtimeCtx, mode);
  51645. return convertErr(res);
  51646. };
  51647. pollDesc.prototype.Wait = function(mode) { return this.$val.Wait(mode); };
  51648. pollDesc.ptr.prototype.WaitRead = function() {
  51649. var $ptr, pd;
  51650. pd = this;
  51651. return pd.Wait(114);
  51652. };
  51653. pollDesc.prototype.WaitRead = function() { return this.$val.WaitRead(); };
  51654. pollDesc.ptr.prototype.WaitWrite = function() {
  51655. var $ptr, pd;
  51656. pd = this;
  51657. return pd.Wait(119);
  51658. };
  51659. pollDesc.prototype.WaitWrite = function() { return this.$val.WaitWrite(); };
  51660. pollDesc.ptr.prototype.WaitCanceled = function(mode) {
  51661. var $ptr, mode, pd;
  51662. pd = this;
  51663. runtime_pollWaitCanceled(pd.runtimeCtx, mode);
  51664. };
  51665. pollDesc.prototype.WaitCanceled = function(mode) { return this.$val.WaitCanceled(mode); };
  51666. pollDesc.ptr.prototype.WaitCanceledRead = function() {
  51667. var $ptr, pd;
  51668. pd = this;
  51669. pd.WaitCanceled(114);
  51670. };
  51671. pollDesc.prototype.WaitCanceledRead = function() { return this.$val.WaitCanceledRead(); };
  51672. pollDesc.ptr.prototype.WaitCanceledWrite = function() {
  51673. var $ptr, pd;
  51674. pd = this;
  51675. pd.WaitCanceled(119);
  51676. };
  51677. pollDesc.prototype.WaitCanceledWrite = function() { return this.$val.WaitCanceledWrite(); };
  51678. convertErr = function(res) {
  51679. var $ptr, _ref, res;
  51680. _ref = res;
  51681. if (_ref === 0) {
  51682. return $ifaceNil;
  51683. } else if (_ref === 1) {
  51684. return errClosing;
  51685. } else if (_ref === 2) {
  51686. return errTimeout;
  51687. }
  51688. console.log("unreachable: ", res);
  51689. $panic(new $String("unreachable"));
  51690. };
  51691. netFD.ptr.prototype.setDeadline = function(t) {
  51692. var $ptr, fd, t;
  51693. fd = this;
  51694. t = $clone(t, time.Time);
  51695. return setDeadlineImpl(fd, t, 233);
  51696. };
  51697. netFD.prototype.setDeadline = function(t) { return this.$val.setDeadline(t); };
  51698. netFD.ptr.prototype.setReadDeadline = function(t) {
  51699. var $ptr, fd, t;
  51700. fd = this;
  51701. t = $clone(t, time.Time);
  51702. return setDeadlineImpl(fd, t, 114);
  51703. };
  51704. netFD.prototype.setReadDeadline = function(t) { return this.$val.setReadDeadline(t); };
  51705. netFD.ptr.prototype.setWriteDeadline = function(t) {
  51706. var $ptr, fd, t;
  51707. fd = this;
  51708. t = $clone(t, time.Time);
  51709. return setDeadlineImpl(fd, t, 119);
  51710. };
  51711. netFD.prototype.setWriteDeadline = function(t) { return this.$val.setWriteDeadline(t); };
  51712. setDeadlineImpl = function(fd, t, mode) {
  51713. var $ptr, d, err, fd, mode, t, x, x$1, x$2;
  51714. t = $clone(t, time.Time);
  51715. d = (x = runtimeNano(), x$1 = (x$2 = t.Sub(time.Now()), new $Int64(x$2.$high, x$2.$low)), new $Int64(x.$high + x$1.$high, x.$low + x$1.$low));
  51716. if (t.IsZero()) {
  51717. d = new $Int64(0, 0);
  51718. }
  51719. err = fd.incref();
  51720. if (!($interfaceIsEqual(err, $ifaceNil))) {
  51721. return err;
  51722. }
  51723. runtime_pollSetDeadline(fd.pd.runtimeCtx, d, mode);
  51724. fd.decref();
  51725. return $ifaceNil;
  51726. };
  51727. closesocket = function(s) {
  51728. var $ptr, s;
  51729. return syscall.Closesocket(s);
  51730. };
  51731. operation.ptr.prototype.InitBuf = function(buf) {
  51732. var $ptr, buf, o;
  51733. o = this;
  51734. o.buf.Len = (buf.$length >>> 0);
  51735. o.buf.Buf = ptrType$15.nil;
  51736. if (!((buf.$length === 0))) {
  51737. o.buf.Buf = $indexPtr(buf.$array, buf.$offset + 0, ptrType$15);
  51738. }
  51739. };
  51740. operation.prototype.InitBuf = function(buf) { return this.$val.InitBuf(buf); };
  51741. ioSrv.ptr.prototype.ProcessRemoteIO = function() {
  51742. var $ptr, _arg, _arg$1, _ok, _r, _r$1, _ref, _tuple, r, s, $s, $deferred, $r;
  51743. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _arg = $f._arg; _arg$1 = $f._arg$1; _ok = $f._ok; _r = $f._r; _r$1 = $f._r$1; _ref = $f._ref; _tuple = $f._tuple; r = $f.r; s = $f.s; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
  51744. s = this;
  51745. runtime.LockOSThread();
  51746. $deferred.push([runtime.UnlockOSThread, []]);
  51747. _ref = s.req;
  51748. /* while (true) { */ case 1:
  51749. _r = $recv(_ref); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  51750. _tuple = _r; r = $clone(_tuple[0], ioSrvReq); _ok = _tuple[1];
  51751. if (!_ok) {
  51752. /* break; */ $s = 2; continue;
  51753. }
  51754. /* */ if (!(r.submit === $throwNilPointerError)) { $s = 4; continue; }
  51755. /* */ $s = 5; continue;
  51756. /* if (!(r.submit === $throwNilPointerError)) { */ case 4:
  51757. _arg = r.o.errc;
  51758. _r$1 = r.submit(r.o); /* */ $s = 7; case 7: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  51759. _arg$1 = _r$1;
  51760. $r = $send(_arg, _arg$1); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  51761. $s = 6; continue;
  51762. /* } else { */ case 5:
  51763. $r = $send(r.o.errc, syscall.CancelIo(r.o.fd.sysfd)); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  51764. /* } */ case 6:
  51765. /* } */ $s = 1; continue; case 2:
  51766. /* */ $s = -1; case -1: } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: ioSrv.ptr.prototype.ProcessRemoteIO }; } $f.$ptr = $ptr; $f._arg = _arg; $f._arg$1 = _arg$1; $f._ok = _ok; $f._r = _r; $f._r$1 = _r$1; $f._ref = _ref; $f._tuple = _tuple; $f.r = r; $f.s = s; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
  51767. };
  51768. ioSrv.prototype.ProcessRemoteIO = function() { return this.$val.ProcessRemoteIO(); };
  51769. ioSrv.ptr.prototype.ExecIO = function(o, name, submit) {
  51770. var $ptr, _r, _r$1, _r$2, _r$3, _ref, _ref$1, err, err$1, fd, name, netpollErr, o, s, submit, $s, $r;
  51771. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _ref = $f._ref; _ref$1 = $f._ref$1; err = $f.err; err$1 = $f.err$1; fd = $f.fd; name = $f.name; netpollErr = $f.netpollErr; o = $f.o; s = $f.s; submit = $f.submit; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  51772. s = this;
  51773. fd = o.fd;
  51774. err = fd.pd.Prepare((o.mode >> 0));
  51775. if (!($interfaceIsEqual(err, $ifaceNil))) {
  51776. return [0, new OpError.ptr(name, fd.net, fd.laddr, err)];
  51777. }
  51778. /* */ if (canCancelIO) { $s = 1; continue; }
  51779. /* */ $s = 2; continue;
  51780. /* if (canCancelIO) { */ case 1:
  51781. _r = submit(o); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  51782. err = _r;
  51783. $s = 3; continue;
  51784. /* } else { */ case 2:
  51785. $r = $send(s.req, new ioSrvReq.ptr(o, submit)); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  51786. _r$1 = $recv(o.errc); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  51787. err = _r$1[0];
  51788. /* } */ case 3:
  51789. _ref = err;
  51790. if ($interfaceIsEqual(_ref, $ifaceNil)) {
  51791. if (o.fd.skipSyncNotif) {
  51792. return [(o.qty >> 0), $ifaceNil];
  51793. }
  51794. } else if ($interfaceIsEqual(_ref, new syscall.Errno(997))) {
  51795. err = $ifaceNil;
  51796. } else {
  51797. return [0, new OpError.ptr(name, fd.net, fd.laddr, err)];
  51798. }
  51799. err = fd.pd.Wait((o.mode >> 0));
  51800. if ($interfaceIsEqual(err, $ifaceNil)) {
  51801. if (!((o.errno === 0))) {
  51802. err = new syscall.Errno((o.errno >>> 0));
  51803. return [0, new OpError.ptr(name, fd.net, fd.laddr, err)];
  51804. }
  51805. return [(o.qty >> 0), $ifaceNil];
  51806. }
  51807. netpollErr = err;
  51808. _ref$1 = netpollErr;
  51809. /* */ if ($interfaceIsEqual(_ref$1, errClosing) || $interfaceIsEqual(_ref$1, errTimeout)) { $s = 7; continue; }
  51810. /* */ $s = 8; continue;
  51811. /* if ($interfaceIsEqual(_ref$1, errClosing) || $interfaceIsEqual(_ref$1, errTimeout)) { */ case 7:
  51812. $s = 9; continue;
  51813. /* } else { */ case 8:
  51814. _r$2 = netpollErr.Error(); /* */ $s = 10; case 10: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  51815. $panic(new $String("net: unexpected runtime.netpoll error: " + _r$2));
  51816. /* } */ case 9:
  51817. /* */ if (canCancelIO) { $s = 11; continue; }
  51818. /* */ $s = 12; continue;
  51819. /* if (canCancelIO) { */ case 11:
  51820. err$1 = syscall.CancelIoEx(fd.sysfd, o.o);
  51821. if (!($interfaceIsEqual(err$1, $ifaceNil)) && !($interfaceIsEqual(err$1, new syscall.Errno(1168)))) {
  51822. $panic(err$1);
  51823. }
  51824. $s = 13; continue;
  51825. /* } else { */ case 12:
  51826. $r = $send(s.req, new ioSrvReq.ptr(o, $throwNilPointerError)); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  51827. _r$3 = $recv(o.errc); /* */ $s = 15; case 15: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  51828. _r$3[0];
  51829. /* } */ case 13:
  51830. fd.pd.WaitCanceled((o.mode >> 0));
  51831. if (!((o.errno === 0))) {
  51832. err = new syscall.Errno((o.errno >>> 0));
  51833. if ($interfaceIsEqual(err, new syscall.Errno(995))) {
  51834. err = netpollErr;
  51835. }
  51836. return [0, new OpError.ptr(name, fd.net, fd.laddr, err)];
  51837. }
  51838. return [(o.qty >> 0), $ifaceNil];
  51839. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: ioSrv.ptr.prototype.ExecIO }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._ref = _ref; $f._ref$1 = _ref$1; $f.err = err; $f.err$1 = err$1; $f.fd = fd; $f.name = name; $f.netpollErr = netpollErr; $f.o = o; $f.s = s; $f.submit = submit; $f.$s = $s; $f.$r = $r; return $f;
  51840. };
  51841. ioSrv.prototype.ExecIO = function(o, name, submit) { return this.$val.ExecIO(o, name, submit); };
  51842. startServer = function() {
  51843. var $ptr;
  51844. rsrv = new ioSrv.ptr();
  51845. wsrv = new ioSrv.ptr();
  51846. if (!canCancelIO) {
  51847. rsrv.req = new chanType$4(0);
  51848. $go($methodVal(rsrv, "ProcessRemoteIO"), []);
  51849. wsrv.req = new chanType$4(0);
  51850. $go($methodVal(wsrv, "ProcessRemoteIO"), []);
  51851. }
  51852. };
  51853. newFD = function(sysfd, family, sotype, net) {
  51854. var $ptr, family, net, sotype, sysfd, $s, $r;
  51855. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; family = $f.family; net = $f.net; sotype = $f.sotype; sysfd = $f.sysfd; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  51856. if (!($interfaceIsEqual(initErr, $ifaceNil))) {
  51857. return [ptrType$18.nil, initErr];
  51858. }
  51859. $r = onceStartServer.Do(startServer); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  51860. return [new netFD.ptr(new fdMutex.ptr(), sysfd, family, sotype, false, false, net, $ifaceNil, $ifaceNil, new operation.ptr(), new operation.ptr(), new pollDesc.ptr()), $ifaceNil];
  51861. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: newFD }; } $f.$ptr = $ptr; $f.family = family; $f.net = net; $f.sotype = sotype; $f.sysfd = sysfd; $f.$s = $s; $f.$r = $r; return $f;
  51862. };
  51863. netFD.ptr.prototype.init = function() {
  51864. var $ptr, _r, _ref, err, err$1, err$2, fd, flag, flags, ret, size, $s, $r;
  51865. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _ref = $f._ref; err = $f.err; err$1 = $f.err$1; err$2 = $f.err$2; fd = $f.fd; flag = $f.flag; flags = $f.flags; ret = $f.ret; size = $f.size; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  51866. flag = [flag];
  51867. ret = [ret];
  51868. fd = this;
  51869. _r = fd.pd.Init(fd); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  51870. err = _r;
  51871. /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 2; continue; }
  51872. /* */ $s = 3; continue;
  51873. /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 2:
  51874. return err;
  51875. /* } */ case 3:
  51876. if (hasLoadSetFileCompletionNotificationModes) {
  51877. flags = 2;
  51878. if (skipSyncNotif && fd.net === "tcp") {
  51879. flags = (flags | (1)) >>> 0;
  51880. }
  51881. err$1 = syscall.SetFileCompletionNotificationModes(fd.sysfd, flags);
  51882. if ($interfaceIsEqual(err$1, $ifaceNil) && !((((flags & 1) >>> 0) === 0))) {
  51883. fd.skipSyncNotif = true;
  51884. }
  51885. }
  51886. _ref = fd.net;
  51887. if (_ref === "udp" || _ref === "udp4" || _ref === "udp6") {
  51888. ret[0] = 0;
  51889. flag[0] = 0;
  51890. size = 4;
  51891. err$2 = syscall.WSAIoctl(fd.sysfd, 2550136844, (flag.$ptr || (flag.$ptr = new ptrType$11(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, flag))), size, ptrType$15.nil, 0, (ret.$ptr || (ret.$ptr = new ptrType$11(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, ret))), ptrType$19.nil, 0);
  51892. if (!($interfaceIsEqual(err$2, $ifaceNil))) {
  51893. return os.NewSyscallError("WSAIoctl", err$2);
  51894. }
  51895. }
  51896. fd.rop.mode = 114;
  51897. fd.wop.mode = 119;
  51898. fd.rop.fd = fd;
  51899. fd.wop.fd = fd;
  51900. fd.rop.runtimeCtx = fd.pd.runtimeCtx;
  51901. fd.wop.runtimeCtx = fd.pd.runtimeCtx;
  51902. if (!canCancelIO) {
  51903. fd.rop.errc = new chanType$5(0);
  51904. fd.wop.errc = new chanType$5(0);
  51905. }
  51906. return $ifaceNil;
  51907. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: netFD.ptr.prototype.init }; } $f.$ptr = $ptr; $f._r = _r; $f._ref = _ref; $f.err = err; $f.err$1 = err$1; $f.err$2 = err$2; $f.fd = fd; $f.flag = flag; $f.flags = flags; $f.ret = ret; $f.size = size; $f.$s = $s; $f.$r = $r; return $f;
  51908. };
  51909. netFD.prototype.init = function() { return this.$val.init(); };
  51910. netFD.ptr.prototype.setAddr = function(laddr, raddr) {
  51911. var $ptr, fd, laddr, raddr;
  51912. fd = this;
  51913. fd.laddr = laddr;
  51914. fd.raddr = raddr;
  51915. runtime.SetFinalizer(fd, new funcType($methodExpr(ptrType$18.prototype.Close)));
  51916. };
  51917. netFD.prototype.setAddr = function(laddr, raddr) { return this.$val.setAddr(laddr, raddr); };
  51918. netFD.ptr.prototype.destroy = function() {
  51919. var $ptr, fd;
  51920. fd = this;
  51921. if (fd.sysfd === 4294967295) {
  51922. return;
  51923. }
  51924. fd.pd.Close();
  51925. closesocket(fd.sysfd);
  51926. fd.sysfd = 4294967295;
  51927. runtime.SetFinalizer(fd, $ifaceNil);
  51928. };
  51929. netFD.prototype.destroy = function() { return this.$val.destroy(); };
  51930. netFD.ptr.prototype.incref = function() {
  51931. var $ptr, fd;
  51932. fd = this;
  51933. if (!fd.fdmu.Incref()) {
  51934. return errClosing;
  51935. }
  51936. return $ifaceNil;
  51937. };
  51938. netFD.prototype.incref = function() { return this.$val.incref(); };
  51939. netFD.ptr.prototype.decref = function() {
  51940. var $ptr, fd;
  51941. fd = this;
  51942. if (fd.fdmu.Decref()) {
  51943. fd.destroy();
  51944. }
  51945. };
  51946. netFD.prototype.decref = function() { return this.$val.decref(); };
  51947. netFD.ptr.prototype.readLock = function() {
  51948. var $ptr, fd;
  51949. fd = this;
  51950. if (!fd.fdmu.RWLock(true)) {
  51951. return errClosing;
  51952. }
  51953. return $ifaceNil;
  51954. };
  51955. netFD.prototype.readLock = function() { return this.$val.readLock(); };
  51956. netFD.ptr.prototype.readUnlock = function() {
  51957. var $ptr, fd;
  51958. fd = this;
  51959. if (fd.fdmu.RWUnlock(true)) {
  51960. fd.destroy();
  51961. }
  51962. };
  51963. netFD.prototype.readUnlock = function() { return this.$val.readUnlock(); };
  51964. netFD.ptr.prototype.writeLock = function() {
  51965. var $ptr, fd;
  51966. fd = this;
  51967. if (!fd.fdmu.RWLock(false)) {
  51968. return errClosing;
  51969. }
  51970. return $ifaceNil;
  51971. };
  51972. netFD.prototype.writeLock = function() { return this.$val.writeLock(); };
  51973. netFD.ptr.prototype.writeUnlock = function() {
  51974. var $ptr, fd;
  51975. fd = this;
  51976. if (fd.fdmu.RWUnlock(false)) {
  51977. fd.destroy();
  51978. }
  51979. };
  51980. netFD.prototype.writeUnlock = function() { return this.$val.writeUnlock(); };
  51981. netFD.ptr.prototype.Close = function() {
  51982. var $ptr, fd;
  51983. fd = this;
  51984. if (!fd.fdmu.IncrefAndClose()) {
  51985. return errClosing;
  51986. }
  51987. fd.pd.Evict();
  51988. fd.decref();
  51989. return $ifaceNil;
  51990. };
  51991. netFD.prototype.Close = function() { return this.$val.Close(); };
  51992. netFD.ptr.prototype.shutdown = function(how) {
  51993. var $ptr, err, err$1, fd, how, $deferred;
  51994. /* */ var $err = null; try { $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
  51995. fd = this;
  51996. err = fd.incref();
  51997. if (!($interfaceIsEqual(err, $ifaceNil))) {
  51998. return err;
  51999. }
  52000. $deferred.push([$methodVal(fd, "decref"), []]);
  52001. err$1 = syscall.Shutdown(fd.sysfd, how);
  52002. if (!($interfaceIsEqual(err$1, $ifaceNil))) {
  52003. return new OpError.ptr("shutdown", fd.net, fd.laddr, err$1);
  52004. }
  52005. return $ifaceNil;
  52006. /* */ } catch(err) { $err = err; return $ifaceNil; } finally { $callDeferred($deferred, $err); }
  52007. };
  52008. netFD.prototype.shutdown = function(how) { return this.$val.shutdown(how); };
  52009. netFD.ptr.prototype.closeRead = function() {
  52010. var $ptr, fd;
  52011. fd = this;
  52012. return fd.shutdown(0);
  52013. };
  52014. netFD.prototype.closeRead = function() { return this.$val.closeRead(); };
  52015. netFD.ptr.prototype.closeWrite = function() {
  52016. var $ptr, fd;
  52017. fd = this;
  52018. return fd.shutdown(1);
  52019. };
  52020. netFD.prototype.closeWrite = function() { return this.$val.closeWrite(); };
  52021. netFD.ptr.prototype.Read = function(buf) {
  52022. var $ptr, _r, _tuple, buf, err, err$1, fd, n, o, $s, $deferred, $r;
  52023. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tuple = $f._tuple; buf = $f.buf; err = $f.err; err$1 = $f.err$1; fd = $f.fd; n = $f.n; o = $f.o; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
  52024. fd = this;
  52025. err = fd.readLock();
  52026. if (!($interfaceIsEqual(err, $ifaceNil))) {
  52027. return [0, err];
  52028. }
  52029. $deferred.push([$methodVal(fd, "readUnlock"), []]);
  52030. o = fd.rop;
  52031. o.InitBuf(buf);
  52032. _r = rsrv.ExecIO(o, "WSARecv", (function(o$1) {
  52033. var $ptr, o$1;
  52034. return syscall.WSARecv(o$1.fd.sysfd, o$1.buf, 1, (o$1.$ptr_qty || (o$1.$ptr_qty = new ptrType$11(function() { return this.$target.qty; }, function($v) { this.$target.qty = $v; }, o$1))), (o$1.$ptr_flags || (o$1.$ptr_flags = new ptrType$11(function() { return this.$target.flags; }, function($v) { this.$target.flags = $v; }, o$1))), o$1.o, ptrType$15.nil);
  52035. })); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  52036. _tuple = _r; n = _tuple[0]; err$1 = _tuple[1];
  52037. if ($interfaceIsEqual(err$1, $ifaceNil) && (n === 0)) {
  52038. err$1 = io.EOF;
  52039. }
  52040. return [n, err$1];
  52041. /* */ $s = -1; case -1: } return; } } catch(err) { $err = err; $s = -1; return [0, $ifaceNil]; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: netFD.ptr.prototype.Read }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple = _tuple; $f.buf = buf; $f.err = err; $f.err$1 = err$1; $f.fd = fd; $f.n = n; $f.o = o; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
  52042. };
  52043. netFD.prototype.Read = function(buf) { return this.$val.Read(buf); };
  52044. netFD.ptr.prototype.Write = function(buf) {
  52045. var $ptr, _r, buf, err, fd, o, $s, $deferred, $r;
  52046. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; buf = $f.buf; err = $f.err; fd = $f.fd; o = $f.o; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
  52047. fd = this;
  52048. err = fd.writeLock();
  52049. if (!($interfaceIsEqual(err, $ifaceNil))) {
  52050. return [0, err];
  52051. }
  52052. $deferred.push([$methodVal(fd, "writeUnlock"), []]);
  52053. o = fd.wop;
  52054. o.InitBuf(buf);
  52055. _r = wsrv.ExecIO(o, "WSASend", (function(o$1) {
  52056. var $ptr, o$1;
  52057. return syscall.WSASend(o$1.fd.sysfd, o$1.buf, 1, (o$1.$ptr_qty || (o$1.$ptr_qty = new ptrType$11(function() { return this.$target.qty; }, function($v) { this.$target.qty = $v; }, o$1))), 0, o$1.o, ptrType$15.nil);
  52058. })); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  52059. return _r;
  52060. /* */ $s = -1; case -1: } return; } } catch(err) { $err = err; $s = -1; return [0, $ifaceNil]; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: netFD.ptr.prototype.Write }; } $f.$ptr = $ptr; $f._r = _r; $f.buf = buf; $f.err = err; $f.fd = fd; $f.o = o; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
  52061. };
  52062. netFD.prototype.Write = function(buf) { return this.$val.Write(buf); };
  52063. netFD.ptr.prototype.acceptOne = function(rawsa, o) {
  52064. var $ptr, _r, _r$1, _r$2, _r$3, _tuple, _tuple$1, _tuple$2, err, err$1, fd, netfd, o, rawsa, s, $s, $r;
  52065. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; err = $f.err; err$1 = $f.err$1; fd = $f.fd; netfd = $f.netfd; o = $f.o; rawsa = $f.rawsa; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  52066. rawsa = [rawsa];
  52067. fd = this;
  52068. _r = sysSocket(fd.family, fd.sotype, 0); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  52069. _tuple = _r; s = _tuple[0]; err = _tuple[1];
  52070. if (!($interfaceIsEqual(err, $ifaceNil))) {
  52071. return [ptrType$18.nil, new OpError.ptr("socket", fd.net, fd.laddr, err)];
  52072. }
  52073. _r$1 = newFD(s, fd.family, fd.sotype, fd.net); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  52074. _tuple$1 = _r$1; netfd = _tuple$1[0]; err = _tuple$1[1];
  52075. if (!($interfaceIsEqual(err, $ifaceNil))) {
  52076. closesocket(s);
  52077. return [ptrType$18.nil, new OpError.ptr("accept", fd.net, fd.laddr, err)];
  52078. }
  52079. _r$2 = netfd.init(); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  52080. err$1 = _r$2;
  52081. /* */ if (!($interfaceIsEqual(err$1, $ifaceNil))) { $s = 4; continue; }
  52082. /* */ $s = 5; continue;
  52083. /* if (!($interfaceIsEqual(err$1, $ifaceNil))) { */ case 4:
  52084. fd.Close();
  52085. return [ptrType$18.nil, err$1];
  52086. /* } */ case 5:
  52087. o.handle = s;
  52088. o.rsan = 112;
  52089. _r$3 = rsrv.ExecIO(o, "AcceptEx", (function(rawsa) { return function(o$1) {
  52090. var $ptr, o$1;
  52091. return syscall.AcceptEx(o$1.fd.sysfd, o$1.handle, $sliceToArray(rawsa[0]), 0, (o$1.rsan >>> 0), (o$1.rsan >>> 0), (o$1.$ptr_qty || (o$1.$ptr_qty = new ptrType$11(function() { return this.$target.qty; }, function($v) { this.$target.qty = $v; }, o$1))), o$1.o);
  52092. }; })(rawsa)); /* */ $s = 6; case 6: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  52093. _tuple$2 = _r$3; err = _tuple$2[1];
  52094. if (!($interfaceIsEqual(err, $ifaceNil))) {
  52095. netfd.Close();
  52096. return [ptrType$18.nil, err];
  52097. }
  52098. err = syscall.Setsockopt(s, 65535, 28683, (fd.$ptr_sysfd || (fd.$ptr_sysfd = new ptrType$22(function() { return this.$target.sysfd; }, function($v) { this.$target.sysfd = $v; }, fd))), 4);
  52099. if (!($interfaceIsEqual(err, $ifaceNil))) {
  52100. netfd.Close();
  52101. return [ptrType$18.nil, new OpError.ptr("Setsockopt", fd.net, fd.laddr, err)];
  52102. }
  52103. return [netfd, $ifaceNil];
  52104. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: netFD.ptr.prototype.acceptOne }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f.err = err; $f.err$1 = err$1; $f.fd = fd; $f.netfd = netfd; $f.o = o; $f.rawsa = rawsa; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
  52105. };
  52106. netFD.prototype.acceptOne = function(rawsa, o) { return this.$val.acceptOne(rawsa, o); };
  52107. netFD.ptr.prototype.accept = function() {
  52108. var $ptr, _arg, _arg$1, _r, _r$1, _r$2, _ref, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, err, err$1, errno, fd, llen, lrsa, lsa, netfd, o, ok, operr, rawsa, rlen, rrsa, rsa, $s, $deferred, $r;
  52109. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _arg = $f._arg; _arg$1 = $f._arg$1; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _ref = $f._ref; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; _tuple$4 = $f._tuple$4; err = $f.err; err$1 = $f.err$1; errno = $f.errno; fd = $f.fd; llen = $f.llen; lrsa = $f.lrsa; lsa = $f.lsa; netfd = $f.netfd; o = $f.o; ok = $f.ok; operr = $f.operr; rawsa = $f.rawsa; rlen = $f.rlen; rrsa = $f.rrsa; rsa = $f.rsa; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
  52110. llen = [llen];
  52111. lrsa = [lrsa];
  52112. rlen = [rlen];
  52113. rrsa = [rrsa];
  52114. fd = this;
  52115. err = fd.readLock();
  52116. if (!($interfaceIsEqual(err, $ifaceNil))) {
  52117. return [ptrType$18.nil, err];
  52118. }
  52119. $deferred.push([$methodVal(fd, "readUnlock"), []]);
  52120. o = fd.rop;
  52121. netfd = ptrType$18.nil;
  52122. err$1 = $ifaceNil;
  52123. rawsa = $clone(arrayType$2.zero(), arrayType$2);
  52124. /* while (true) { */ case 1:
  52125. _r = fd.acceptOne(new sliceType$5(rawsa), o); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  52126. _tuple = _r; netfd = _tuple[0]; err$1 = _tuple[1];
  52127. if ($interfaceIsEqual(err$1, $ifaceNil)) {
  52128. /* break; */ $s = 2; continue;
  52129. }
  52130. _tuple$1 = $assertType(err$1, ptrType$25, true); operr = _tuple$1[0]; ok = _tuple$1[1];
  52131. if (!ok) {
  52132. return [ptrType$18.nil, err$1];
  52133. }
  52134. _tuple$2 = $assertType(operr.Err, syscall.Errno, true); errno = _tuple$2[0]; ok = _tuple$2[1];
  52135. if (!ok) {
  52136. return [ptrType$18.nil, err$1];
  52137. }
  52138. _ref = errno;
  52139. if (_ref === 64 || _ref === 10054) {
  52140. } else {
  52141. return [ptrType$18.nil, err$1];
  52142. }
  52143. /* } */ $s = 1; continue; case 2:
  52144. _tmp = ptrType$23.nil; _tmp$1 = ptrType$23.nil; lrsa[0] = _tmp; rrsa[0] = _tmp$1;
  52145. _tmp$2 = 0; _tmp$3 = 0; llen[0] = _tmp$2; rlen[0] = _tmp$3;
  52146. syscall.GetAcceptExSockaddrs($sliceToArray(new sliceType$1(rawsa)), 0, (o.rsan >>> 0), (o.rsan >>> 0), (lrsa.$ptr || (lrsa.$ptr = new ptrType$26(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, lrsa))), (llen.$ptr || (llen.$ptr = new ptrType$24(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, llen))), (rrsa.$ptr || (rrsa.$ptr = new ptrType$26(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, rrsa))), (rlen.$ptr || (rlen.$ptr = new ptrType$24(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, rlen))));
  52147. _tuple$3 = lrsa[0].Sockaddr(); lsa = _tuple$3[0];
  52148. _tuple$4 = rrsa[0].Sockaddr(); rsa = _tuple$4[0];
  52149. _r$1 = netfd.addrFunc()(lsa); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  52150. _arg = _r$1;
  52151. _r$2 = netfd.addrFunc()(rsa); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  52152. _arg$1 = _r$2;
  52153. $r = netfd.setAddr(_arg, _arg$1); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  52154. return [netfd, $ifaceNil];
  52155. /* */ $s = -1; case -1: } return; } } catch(err) { $err = err; $s = -1; return [ptrType$18.nil, $ifaceNil]; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: netFD.ptr.prototype.accept }; } $f.$ptr = $ptr; $f._arg = _arg; $f._arg$1 = _arg$1; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._ref = _ref; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f._tuple$4 = _tuple$4; $f.err = err; $f.err$1 = err$1; $f.errno = errno; $f.fd = fd; $f.llen = llen; $f.lrsa = lrsa; $f.lsa = lsa; $f.netfd = netfd; $f.o = o; $f.ok = ok; $f.operr = operr; $f.rawsa = rawsa; $f.rlen = rlen; $f.rrsa = rrsa; $f.rsa = rsa; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
  52156. };
  52157. netFD.prototype.accept = function() { return this.$val.accept(); };
  52158. netFD.ptr.prototype.dup = function() {
  52159. var $ptr, fd;
  52160. fd = this;
  52161. return [ptrType$27.nil, os.NewSyscallError("dup", new syscall.Errno(536871042))];
  52162. };
  52163. netFD.prototype.dup = function() { return this.$val.dup(); };
  52164. Flags.prototype.String = function() {
  52165. var $ptr, _i, _ref, f, i, name, s, y;
  52166. f = this.$val;
  52167. s = "";
  52168. _ref = flagNames;
  52169. _i = 0;
  52170. while (true) {
  52171. if (!(_i < _ref.$length)) { break; }
  52172. i = _i;
  52173. name = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]);
  52174. if (!((((f & (((y = (i >>> 0), y < 32 ? (1 << y) : 0) >>> 0))) >>> 0) === 0))) {
  52175. if (!(s === "")) {
  52176. s = s + ("|");
  52177. }
  52178. s = s + (name);
  52179. }
  52180. _i++;
  52181. }
  52182. if (s === "") {
  52183. s = "0";
  52184. }
  52185. return s;
  52186. };
  52187. $ptrType(Flags).prototype.String = function() { return new Flags(this.$get()).String(); };
  52188. Interface.ptr.prototype.Addrs = function() {
  52189. var $ptr, ifi;
  52190. ifi = this;
  52191. if (ifi === ptrType$29.nil) {
  52192. return [sliceType$6.nil, errInvalidInterface];
  52193. }
  52194. return interfaceAddrTable(ifi);
  52195. };
  52196. Interface.prototype.Addrs = function() { return this.$val.Addrs(); };
  52197. Interface.ptr.prototype.MulticastAddrs = function() {
  52198. var $ptr, ifi;
  52199. ifi = this;
  52200. if (ifi === ptrType$29.nil) {
  52201. return [sliceType$6.nil, errInvalidInterface];
  52202. }
  52203. return interfaceMulticastAddrTable(ifi);
  52204. };
  52205. Interface.prototype.MulticastAddrs = function() { return this.$val.MulticastAddrs(); };
  52206. InterfaceByIndex = function(index) {
  52207. var $ptr, _r, _tuple, err, ift, index, $s, $r;
  52208. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tuple = $f._tuple; err = $f.err; ift = $f.ift; index = $f.index; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  52209. if (index <= 0) {
  52210. return [ptrType$29.nil, errInvalidInterfaceIndex];
  52211. }
  52212. _r = interfaceTable(index); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  52213. _tuple = _r; ift = _tuple[0]; err = _tuple[1];
  52214. if (!($interfaceIsEqual(err, $ifaceNil))) {
  52215. return [ptrType$29.nil, err];
  52216. }
  52217. return interfaceByIndex(ift, index);
  52218. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: InterfaceByIndex }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple = _tuple; $f.err = err; $f.ift = ift; $f.index = index; $f.$s = $s; $f.$r = $r; return $f;
  52219. };
  52220. $pkg.InterfaceByIndex = InterfaceByIndex;
  52221. interfaceByIndex = function(ift, index) {
  52222. var $ptr, _i, _ref, ifi, ift, index;
  52223. _ref = ift;
  52224. _i = 0;
  52225. while (true) {
  52226. if (!(_i < _ref.$length)) { break; }
  52227. ifi = $clone(((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]), Interface);
  52228. if (index === ifi.Index) {
  52229. return [ifi, $ifaceNil];
  52230. }
  52231. _i++;
  52232. }
  52233. return [ptrType$29.nil, errNoSuchInterface];
  52234. };
  52235. bytePtrToString = function(p) {
  52236. var $ptr, a, i, p;
  52237. a = p;
  52238. i = 0;
  52239. while (true) {
  52240. if (!(!(((a.nilCheck, ((i < 0 || i >= a.length) ? $throwRuntimeError("index out of range") : a[i])) === 0)))) { break; }
  52241. i = i + (1) >> 0;
  52242. }
  52243. return $bytesToString($subslice(new sliceType$1(a), 0, i));
  52244. };
  52245. getAdapterList = function() {
  52246. var $ptr, a, b, err, l, l_ptr;
  52247. b = $makeSlice(sliceType$1, 1000);
  52248. l = (b.$length >>> 0);
  52249. a = $pointerOfStructConversion($sliceToArray(b), ptrType$30);
  52250. err = syscall.GetAdaptersInfo(a, (l_ptr || (l_ptr = new ptrType$11(function() { return l; }, function($v) { l = $v; }))));
  52251. if ($interfaceIsEqual(err, new syscall.Errno(111))) {
  52252. b = $makeSlice(sliceType$1, l);
  52253. a = $pointerOfStructConversion($sliceToArray(b), ptrType$30);
  52254. err = syscall.GetAdaptersInfo(a, (l_ptr || (l_ptr = new ptrType$11(function() { return l; }, function($v) { l = $v; }))));
  52255. }
  52256. if (!($interfaceIsEqual(err, $ifaceNil))) {
  52257. return [ptrType$30.nil, os.NewSyscallError("GetAdaptersInfo", err)];
  52258. }
  52259. return [a, $ifaceNil];
  52260. };
  52261. getInterfaceList = function() {
  52262. var $ptr, _q, _r, _tuple, c, err, ii, ret, s, size, $s, $deferred, $r;
  52263. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _q = $f._q; _r = $f._r; _tuple = $f._tuple; c = $f.c; err = $f.err; ii = $f.ii; ret = $f.ret; s = $f.s; size = $f.size; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
  52264. ret = [ret];
  52265. _r = sysSocket(2, 2, 17); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  52266. _tuple = _r; s = _tuple[0]; err = _tuple[1];
  52267. if (!($interfaceIsEqual(err, $ifaceNil))) {
  52268. return [sliceType$7.nil, os.NewSyscallError("Socket", err)];
  52269. }
  52270. $deferred.push([syscall.Closesocket, [s]]);
  52271. ii = arrayType$3.zero();
  52272. ret[0] = 0;
  52273. size = 1520;
  52274. err = syscall.WSAIoctl(s, 1074033791, ptrType$15.nil, 0, $sliceToArray(new sliceType$1(ii)), size, (ret.$ptr || (ret.$ptr = new ptrType$11(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, ret))), ptrType$19.nil, 0);
  52275. if (!($interfaceIsEqual(err, $ifaceNil))) {
  52276. return [sliceType$7.nil, os.NewSyscallError("WSAIoctl", err)];
  52277. }
  52278. c = (_q = ret[0] / 76, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >>> 0 : $throwRuntimeError("integer divide by zero"));
  52279. return [$subslice(new sliceType$7(ii), 0, (c - 1 >>> 0)), $ifaceNil];
  52280. /* */ $s = -1; case -1: } return; } } catch(err) { $err = err; $s = -1; return [sliceType$7.nil, $ifaceNil]; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: getInterfaceList }; } $f.$ptr = $ptr; $f._q = _q; $f._r = _r; $f._tuple = _tuple; $f.c = c; $f.err = err; $f.ii = ii; $f.ret = ret; $f.s = s; $f.size = size; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
  52281. };
  52282. interfaceTable = function(ifindex) {
  52283. var $ptr, _i, _r, _ref, _tuple, _tuple$1, ai, e, err, flags, ifi, ifindex, ift, ii, ii$1, index, ip, ipl, ips, ipv4, name, row, x, $s, $r;
  52284. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _i = $f._i; _r = $f._r; _ref = $f._ref; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; ai = $f.ai; e = $f.e; err = $f.err; flags = $f.flags; ifi = $f.ifi; ifindex = $f.ifindex; ift = $f.ift; ii = $f.ii; ii$1 = $f.ii$1; index = $f.index; ip = $f.ip; ipl = $f.ipl; ips = $f.ips; ipv4 = $f.ipv4; name = $f.name; row = $f.row; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  52285. _tuple = getAdapterList(); ai = _tuple[0]; err = _tuple[1];
  52286. if (!($interfaceIsEqual(err, $ifaceNil))) {
  52287. return [sliceType$8.nil, err];
  52288. }
  52289. _r = getInterfaceList(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  52290. _tuple$1 = _r; ii = _tuple$1[0]; err = _tuple$1[1];
  52291. if (!($interfaceIsEqual(err, $ifaceNil))) {
  52292. return [sliceType$8.nil, err];
  52293. }
  52294. ift = sliceType$8.nil;
  52295. while (true) {
  52296. if (!(!(ai === ptrType$30.nil))) { break; }
  52297. row = [row];
  52298. index = ai.Index;
  52299. if ((ifindex === 0) || (ifindex === (index >> 0))) {
  52300. flags = 0;
  52301. row[0] = new syscall.MibIfRow.ptr(arrayType$4.zero(), index, 0, 0, 0, 0, arrayType$5.zero(), 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, arrayType$6.zero());
  52302. e = syscall.GetIfEntry(row[0]);
  52303. if (!($interfaceIsEqual(e, $ifaceNil))) {
  52304. return [sliceType$8.nil, os.NewSyscallError("GetIfEntry", e)];
  52305. }
  52306. _ref = ii;
  52307. _i = 0;
  52308. while (true) {
  52309. if (!(_i < _ref.$length)) { break; }
  52310. ii$1 = $clone(((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]), syscall.InterfaceInfo);
  52311. ip = $clone($pointerOfStructConversion(ii$1.Address, ptrType$31).Addr, arrayType);
  52312. ipv4 = IPv4(ip[0], ip[1], ip[2], ip[3]);
  52313. ipl = ai.IpAddressList;
  52314. while (true) {
  52315. if (!(!(ipl === ptrType$32.nil))) { break; }
  52316. ips = bytePtrToString($indexPtr(ipl.IpAddress.String, 0, ptrType$15));
  52317. if (ipv4.Equal(parseIPv4(ips))) {
  52318. break;
  52319. }
  52320. ipl = ipl.Next;
  52321. }
  52322. if (ipl === ptrType$32.nil) {
  52323. _i++;
  52324. continue;
  52325. }
  52326. if (!((((ii$1.Flags & 1) >>> 0) === 0))) {
  52327. flags = (flags | (1)) >>> 0;
  52328. }
  52329. if (!((((ii$1.Flags & 4) >>> 0) === 0))) {
  52330. flags = (flags | (4)) >>> 0;
  52331. }
  52332. if (!((((ii$1.Flags & 2) >>> 0) === 0))) {
  52333. flags = (flags | (2)) >>> 0;
  52334. }
  52335. if (!((((ii$1.Flags & 8) >>> 0) === 0))) {
  52336. flags = (flags | (8)) >>> 0;
  52337. }
  52338. if (!((((ii$1.Flags & 16) >>> 0) === 0))) {
  52339. flags = (flags | (16)) >>> 0;
  52340. }
  52341. _i++;
  52342. }
  52343. name = bytePtrToString($indexPtr(ai.AdapterName, 0, ptrType$15));
  52344. ifi = new Interface.ptr((index >> 0), (row[0].Mtu >> 0), name, (x = $subslice(new sliceType$1(row[0].PhysAddr), 0, row[0].PhysAddrLen), $subslice(new HardwareAddr(x.$array), x.$offset, x.$offset + x.$length)), flags);
  52345. ift = $append(ift, ifi);
  52346. }
  52347. ai = ai.Next;
  52348. }
  52349. return [ift, $ifaceNil];
  52350. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: interfaceTable }; } $f.$ptr = $ptr; $f._i = _i; $f._r = _r; $f._ref = _ref; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.ai = ai; $f.e = e; $f.err = err; $f.flags = flags; $f.ifi = ifi; $f.ifindex = ifindex; $f.ift = ift; $f.ii = ii; $f.ii$1 = ii$1; $f.index = index; $f.ip = ip; $f.ipl = ipl; $f.ips = ips; $f.ipv4 = ipv4; $f.name = name; $f.row = row; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
  52351. };
  52352. interfaceAddrTable = function(ifi) {
  52353. var $ptr, _tuple, ai, err, ifa, ifat, ifi, index, ipl;
  52354. _tuple = getAdapterList(); ai = _tuple[0]; err = _tuple[1];
  52355. if (!($interfaceIsEqual(err, $ifaceNil))) {
  52356. return [sliceType$6.nil, err];
  52357. }
  52358. ifat = sliceType$6.nil;
  52359. while (true) {
  52360. if (!(!(ai === ptrType$30.nil))) { break; }
  52361. index = ai.Index;
  52362. if (ifi === ptrType$29.nil || (ifi.Index === (index >> 0))) {
  52363. ipl = ai.IpAddressList;
  52364. while (true) {
  52365. if (!(!(ipl === ptrType$32.nil))) { break; }
  52366. ifa = new IPAddr.ptr(parseIPv4(bytePtrToString($indexPtr(ipl.IpAddress.String, 0, ptrType$15))), "");
  52367. ifat = $append(ifat, ifa.toAddr());
  52368. ipl = ipl.Next;
  52369. }
  52370. }
  52371. ai = ai.Next;
  52372. }
  52373. return [ifat, $ifaceNil];
  52374. };
  52375. interfaceMulticastAddrTable = function(ifi) {
  52376. var $ptr, ifi;
  52377. return [sliceType$6.nil, $ifaceNil];
  52378. };
  52379. IPv4 = function(a, b, c, d) {
  52380. var $ptr, a, b, c, d, p;
  52381. p = $makeSlice(IP, 16);
  52382. $copySlice(p, v4InV6Prefix);
  52383. (12 >= p.$length ? $throwRuntimeError("index out of range") : p.$array[p.$offset + 12] = a);
  52384. (13 >= p.$length ? $throwRuntimeError("index out of range") : p.$array[p.$offset + 13] = b);
  52385. (14 >= p.$length ? $throwRuntimeError("index out of range") : p.$array[p.$offset + 14] = c);
  52386. (15 >= p.$length ? $throwRuntimeError("index out of range") : p.$array[p.$offset + 15] = d);
  52387. return p;
  52388. };
  52389. $pkg.IPv4 = IPv4;
  52390. IPv4Mask = function(a, b, c, d) {
  52391. var $ptr, a, b, c, d, p;
  52392. p = $makeSlice(IPMask, 4);
  52393. (0 >= p.$length ? $throwRuntimeError("index out of range") : p.$array[p.$offset + 0] = a);
  52394. (1 >= p.$length ? $throwRuntimeError("index out of range") : p.$array[p.$offset + 1] = b);
  52395. (2 >= p.$length ? $throwRuntimeError("index out of range") : p.$array[p.$offset + 2] = c);
  52396. (3 >= p.$length ? $throwRuntimeError("index out of range") : p.$array[p.$offset + 3] = d);
  52397. return p;
  52398. };
  52399. $pkg.IPv4Mask = IPv4Mask;
  52400. IP.prototype.IsUnspecified = function() {
  52401. var $ptr, ip;
  52402. ip = this;
  52403. if (ip.Equal($pkg.IPv4zero) || ip.Equal($pkg.IPv6unspecified)) {
  52404. return true;
  52405. }
  52406. return false;
  52407. };
  52408. $ptrType(IP).prototype.IsUnspecified = function() { return this.$get().IsUnspecified(); };
  52409. IP.prototype.IsLoopback = function() {
  52410. var $ptr, ip, ip4;
  52411. ip = this;
  52412. ip4 = ip.To4();
  52413. if (!(ip4 === IP.nil) && ((0 >= ip4.$length ? $throwRuntimeError("index out of range") : ip4.$array[ip4.$offset + 0]) === 127)) {
  52414. return true;
  52415. }
  52416. return ip.Equal($pkg.IPv6loopback);
  52417. };
  52418. $ptrType(IP).prototype.IsLoopback = function() { return this.$get().IsLoopback(); };
  52419. IP.prototype.IsMulticast = function() {
  52420. var $ptr, ip, ip4;
  52421. ip = this;
  52422. ip4 = ip.To4();
  52423. if (!(ip4 === IP.nil) && ((((0 >= ip4.$length ? $throwRuntimeError("index out of range") : ip4.$array[ip4.$offset + 0]) & 240) >>> 0) === 224)) {
  52424. return true;
  52425. }
  52426. return (0 >= ip.$length ? $throwRuntimeError("index out of range") : ip.$array[ip.$offset + 0]) === 255;
  52427. };
  52428. $ptrType(IP).prototype.IsMulticast = function() { return this.$get().IsMulticast(); };
  52429. IP.prototype.IsInterfaceLocalMulticast = function() {
  52430. var $ptr, ip;
  52431. ip = this;
  52432. return (ip.$length === 16) && ((0 >= ip.$length ? $throwRuntimeError("index out of range") : ip.$array[ip.$offset + 0]) === 255) && ((((1 >= ip.$length ? $throwRuntimeError("index out of range") : ip.$array[ip.$offset + 1]) & 15) >>> 0) === 1);
  52433. };
  52434. $ptrType(IP).prototype.IsInterfaceLocalMulticast = function() { return this.$get().IsInterfaceLocalMulticast(); };
  52435. IP.prototype.IsLinkLocalMulticast = function() {
  52436. var $ptr, ip, ip4;
  52437. ip = this;
  52438. ip4 = ip.To4();
  52439. if (!(ip4 === IP.nil) && ((0 >= ip4.$length ? $throwRuntimeError("index out of range") : ip4.$array[ip4.$offset + 0]) === 224) && ((1 >= ip4.$length ? $throwRuntimeError("index out of range") : ip4.$array[ip4.$offset + 1]) === 0) && ((2 >= ip4.$length ? $throwRuntimeError("index out of range") : ip4.$array[ip4.$offset + 2]) === 0)) {
  52440. return true;
  52441. }
  52442. return ((0 >= ip.$length ? $throwRuntimeError("index out of range") : ip.$array[ip.$offset + 0]) === 255) && ((((1 >= ip.$length ? $throwRuntimeError("index out of range") : ip.$array[ip.$offset + 1]) & 15) >>> 0) === 2);
  52443. };
  52444. $ptrType(IP).prototype.IsLinkLocalMulticast = function() { return this.$get().IsLinkLocalMulticast(); };
  52445. IP.prototype.IsLinkLocalUnicast = function() {
  52446. var $ptr, ip, ip4;
  52447. ip = this;
  52448. ip4 = ip.To4();
  52449. if (!(ip4 === IP.nil) && ((0 >= ip4.$length ? $throwRuntimeError("index out of range") : ip4.$array[ip4.$offset + 0]) === 169) && ((1 >= ip4.$length ? $throwRuntimeError("index out of range") : ip4.$array[ip4.$offset + 1]) === 254)) {
  52450. return true;
  52451. }
  52452. return ((0 >= ip.$length ? $throwRuntimeError("index out of range") : ip.$array[ip.$offset + 0]) === 254) && ((((1 >= ip.$length ? $throwRuntimeError("index out of range") : ip.$array[ip.$offset + 1]) & 192) >>> 0) === 128);
  52453. };
  52454. $ptrType(IP).prototype.IsLinkLocalUnicast = function() { return this.$get().IsLinkLocalUnicast(); };
  52455. IP.prototype.IsGlobalUnicast = function() {
  52456. var $ptr, ip;
  52457. ip = this;
  52458. return !ip.IsUnspecified() && !ip.IsLoopback() && !ip.IsMulticast() && !ip.IsLinkLocalUnicast();
  52459. };
  52460. $ptrType(IP).prototype.IsGlobalUnicast = function() { return this.$get().IsGlobalUnicast(); };
  52461. isZeros = function(p) {
  52462. var $ptr, i, p;
  52463. i = 0;
  52464. while (true) {
  52465. if (!(i < p.$length)) { break; }
  52466. if (!((((i < 0 || i >= p.$length) ? $throwRuntimeError("index out of range") : p.$array[p.$offset + i]) === 0))) {
  52467. return false;
  52468. }
  52469. i = i + (1) >> 0;
  52470. }
  52471. return true;
  52472. };
  52473. IP.prototype.To4 = function() {
  52474. var $ptr, ip;
  52475. ip = this;
  52476. if (ip.$length === 4) {
  52477. return ip;
  52478. }
  52479. if ((ip.$length === 16) && isZeros($subslice(ip, 0, 10)) && ((10 >= ip.$length ? $throwRuntimeError("index out of range") : ip.$array[ip.$offset + 10]) === 255) && ((11 >= ip.$length ? $throwRuntimeError("index out of range") : ip.$array[ip.$offset + 11]) === 255)) {
  52480. return $subslice(ip, 12, 16);
  52481. }
  52482. return IP.nil;
  52483. };
  52484. $ptrType(IP).prototype.To4 = function() { return this.$get().To4(); };
  52485. IP.prototype.To16 = function() {
  52486. var $ptr, ip;
  52487. ip = this;
  52488. if (ip.$length === 4) {
  52489. return IPv4((0 >= ip.$length ? $throwRuntimeError("index out of range") : ip.$array[ip.$offset + 0]), (1 >= ip.$length ? $throwRuntimeError("index out of range") : ip.$array[ip.$offset + 1]), (2 >= ip.$length ? $throwRuntimeError("index out of range") : ip.$array[ip.$offset + 2]), (3 >= ip.$length ? $throwRuntimeError("index out of range") : ip.$array[ip.$offset + 3]));
  52490. }
  52491. if (ip.$length === 16) {
  52492. return ip;
  52493. }
  52494. return IP.nil;
  52495. };
  52496. $ptrType(IP).prototype.To16 = function() { return this.$get().To16(); };
  52497. IP.prototype.DefaultMask = function() {
  52498. var $ptr, _ref, ip;
  52499. ip = this;
  52500. ip = ip.To4();
  52501. if (ip === IP.nil) {
  52502. return IPMask.nil;
  52503. }
  52504. _ref = true;
  52505. if (_ref === (0 >= ip.$length ? $throwRuntimeError("index out of range") : ip.$array[ip.$offset + 0]) < 128) {
  52506. return classAMask;
  52507. } else if (_ref === (0 >= ip.$length ? $throwRuntimeError("index out of range") : ip.$array[ip.$offset + 0]) < 192) {
  52508. return classBMask;
  52509. } else {
  52510. return classCMask;
  52511. }
  52512. };
  52513. $ptrType(IP).prototype.DefaultMask = function() { return this.$get().DefaultMask(); };
  52514. allFF = function(b) {
  52515. var $ptr, _i, _ref, b, c;
  52516. _ref = b;
  52517. _i = 0;
  52518. while (true) {
  52519. if (!(_i < _ref.$length)) { break; }
  52520. c = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]);
  52521. if (!((c === 255))) {
  52522. return false;
  52523. }
  52524. _i++;
  52525. }
  52526. return true;
  52527. };
  52528. IP.prototype.Mask = function(mask) {
  52529. var $ptr, i, ip, mask, n, out, x, x$1;
  52530. ip = this;
  52531. if ((mask.$length === 16) && (ip.$length === 4) && allFF((x = $subslice(mask, 0, 12), $subslice(new sliceType$1(x.$array), x.$offset, x.$offset + x.$length)))) {
  52532. mask = $subslice(mask, 12);
  52533. }
  52534. if ((mask.$length === 4) && (ip.$length === 16) && bytesEqual((x$1 = $subslice(ip, 0, 12), $subslice(new sliceType$1(x$1.$array), x$1.$offset, x$1.$offset + x$1.$length)), v4InV6Prefix)) {
  52535. ip = $subslice(ip, 12);
  52536. }
  52537. n = ip.$length;
  52538. if (!((n === mask.$length))) {
  52539. return IP.nil;
  52540. }
  52541. out = $makeSlice(IP, n);
  52542. i = 0;
  52543. while (true) {
  52544. if (!(i < n)) { break; }
  52545. ((i < 0 || i >= out.$length) ? $throwRuntimeError("index out of range") : out.$array[out.$offset + i] = (((i < 0 || i >= ip.$length) ? $throwRuntimeError("index out of range") : ip.$array[ip.$offset + i]) & ((i < 0 || i >= mask.$length) ? $throwRuntimeError("index out of range") : mask.$array[mask.$offset + i])) >>> 0);
  52546. i = i + (1) >> 0;
  52547. }
  52548. return out;
  52549. };
  52550. $ptrType(IP).prototype.Mask = function(mask) { return this.$get().Mask(mask); };
  52551. IP.prototype.String = function() {
  52552. var $ptr, b, e0, e1, i, i$1, ip, j, p, p4, x, x$1;
  52553. ip = this;
  52554. p = ip;
  52555. if (ip.$length === 0) {
  52556. return "<nil>";
  52557. }
  52558. p4 = p.To4();
  52559. if (p4.$length === 4) {
  52560. return itod(((0 >= p4.$length ? $throwRuntimeError("index out of range") : p4.$array[p4.$offset + 0]) >>> 0)) + "." + itod(((1 >= p4.$length ? $throwRuntimeError("index out of range") : p4.$array[p4.$offset + 1]) >>> 0)) + "." + itod(((2 >= p4.$length ? $throwRuntimeError("index out of range") : p4.$array[p4.$offset + 2]) >>> 0)) + "." + itod(((3 >= p4.$length ? $throwRuntimeError("index out of range") : p4.$array[p4.$offset + 3]) >>> 0));
  52561. }
  52562. if (!((p.$length === 16))) {
  52563. return "?";
  52564. }
  52565. e0 = -1;
  52566. e1 = -1;
  52567. i = 0;
  52568. while (true) {
  52569. if (!(i < 16)) { break; }
  52570. j = i;
  52571. while (true) {
  52572. if (!(j < 16 && (((j < 0 || j >= p.$length) ? $throwRuntimeError("index out of range") : p.$array[p.$offset + j]) === 0) && ((x = j + 1 >> 0, ((x < 0 || x >= p.$length) ? $throwRuntimeError("index out of range") : p.$array[p.$offset + x])) === 0))) { break; }
  52573. j = j + (2) >> 0;
  52574. }
  52575. if (j > i && (j - i >> 0) > (e1 - e0 >> 0)) {
  52576. e0 = i;
  52577. e1 = j;
  52578. i = j;
  52579. }
  52580. i = i + (2) >> 0;
  52581. }
  52582. if ((e1 - e0 >> 0) <= 2) {
  52583. e0 = -1;
  52584. e1 = -1;
  52585. }
  52586. b = $makeSlice(sliceType$1, 0, 39);
  52587. i$1 = 0;
  52588. while (true) {
  52589. if (!(i$1 < 16)) { break; }
  52590. if (i$1 === e0) {
  52591. b = $append(b, 58, 58);
  52592. i$1 = e1;
  52593. if (i$1 >= 16) {
  52594. break;
  52595. }
  52596. } else if (i$1 > 0) {
  52597. b = $append(b, 58);
  52598. }
  52599. b = appendHex(b, ((((((i$1 < 0 || i$1 >= p.$length) ? $throwRuntimeError("index out of range") : p.$array[p.$offset + i$1]) >>> 0) << 8 >>> 0)) | ((x$1 = i$1 + 1 >> 0, ((x$1 < 0 || x$1 >= p.$length) ? $throwRuntimeError("index out of range") : p.$array[p.$offset + x$1])) >>> 0)) >>> 0);
  52600. i$1 = i$1 + (2) >> 0;
  52601. }
  52602. return $bytesToString(b);
  52603. };
  52604. $ptrType(IP).prototype.String = function() { return this.$get().String(); };
  52605. ipEmptyString = function(ip) {
  52606. var $ptr, ip;
  52607. if (ip.$length === 0) {
  52608. return "";
  52609. }
  52610. return ip.String();
  52611. };
  52612. IP.prototype.MarshalText = function() {
  52613. var $ptr, ip;
  52614. ip = this;
  52615. if (ip.$length === 0) {
  52616. return [new sliceType$1($stringToBytes("")), $ifaceNil];
  52617. }
  52618. if (!((ip.$length === 4)) && !((ip.$length === 16))) {
  52619. return [sliceType$1.nil, errors.New("invalid IP address")];
  52620. }
  52621. return [new sliceType$1($stringToBytes(ip.String())), $ifaceNil];
  52622. };
  52623. $ptrType(IP).prototype.MarshalText = function() { return this.$get().MarshalText(); };
  52624. $ptrType(IP).prototype.UnmarshalText = function(text) {
  52625. var $ptr, ip, s, text, x;
  52626. ip = this;
  52627. if (text.$length === 0) {
  52628. ip.$set(IP.nil);
  52629. return $ifaceNil;
  52630. }
  52631. s = $bytesToString(text);
  52632. x = ParseIP(s);
  52633. if (x === IP.nil) {
  52634. return new ParseError.ptr("IP address", s);
  52635. }
  52636. ip.$set(x);
  52637. return $ifaceNil;
  52638. };
  52639. IP.prototype.Equal = function(x) {
  52640. var $ptr, ip, x, x$1, x$2, x$3, x$4;
  52641. ip = this;
  52642. if (ip.$length === x.$length) {
  52643. return bytesEqual($subslice(new sliceType$1(ip.$array), ip.$offset, ip.$offset + ip.$length), $subslice(new sliceType$1(x.$array), x.$offset, x.$offset + x.$length));
  52644. }
  52645. if ((ip.$length === 4) && (x.$length === 16)) {
  52646. return bytesEqual((x$1 = $subslice(x, 0, 12), $subslice(new sliceType$1(x$1.$array), x$1.$offset, x$1.$offset + x$1.$length)), v4InV6Prefix) && bytesEqual($subslice(new sliceType$1(ip.$array), ip.$offset, ip.$offset + ip.$length), (x$2 = $subslice(x, 12), $subslice(new sliceType$1(x$2.$array), x$2.$offset, x$2.$offset + x$2.$length)));
  52647. }
  52648. if ((ip.$length === 16) && (x.$length === 4)) {
  52649. return bytesEqual((x$3 = $subslice(ip, 0, 12), $subslice(new sliceType$1(x$3.$array), x$3.$offset, x$3.$offset + x$3.$length)), v4InV6Prefix) && bytesEqual((x$4 = $subslice(ip, 12), $subslice(new sliceType$1(x$4.$array), x$4.$offset, x$4.$offset + x$4.$length)), $subslice(new sliceType$1(x.$array), x.$offset, x.$offset + x.$length));
  52650. }
  52651. return false;
  52652. };
  52653. $ptrType(IP).prototype.Equal = function(x) { return this.$get().Equal(x); };
  52654. bytesEqual = function(x, y) {
  52655. var $ptr, _i, _ref, b, i, x, y;
  52656. if (!((x.$length === y.$length))) {
  52657. return false;
  52658. }
  52659. _ref = x;
  52660. _i = 0;
  52661. while (true) {
  52662. if (!(_i < _ref.$length)) { break; }
  52663. i = _i;
  52664. b = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]);
  52665. if (!((((i < 0 || i >= y.$length) ? $throwRuntimeError("index out of range") : y.$array[y.$offset + i]) === b))) {
  52666. return false;
  52667. }
  52668. _i++;
  52669. }
  52670. return true;
  52671. };
  52672. simpleMaskLength = function(mask) {
  52673. var $ptr, _i, _ref, i, mask, n, v, y;
  52674. n = 0;
  52675. _ref = mask;
  52676. _i = 0;
  52677. while (true) {
  52678. if (!(_i < _ref.$length)) { break; }
  52679. i = _i;
  52680. v = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]);
  52681. if (v === 255) {
  52682. n = n + (8) >> 0;
  52683. _i++;
  52684. continue;
  52685. }
  52686. while (true) {
  52687. if (!(!((((v & 128) >>> 0) === 0)))) { break; }
  52688. n = n + (1) >> 0;
  52689. v = (y = (1), y < 32 ? (v << y) : 0) << 24 >>> 24;
  52690. }
  52691. if (!((v === 0))) {
  52692. return -1;
  52693. }
  52694. i = i + (1) >> 0;
  52695. while (true) {
  52696. if (!(i < mask.$length)) { break; }
  52697. if (!((((i < 0 || i >= mask.$length) ? $throwRuntimeError("index out of range") : mask.$array[mask.$offset + i]) === 0))) {
  52698. return -1;
  52699. }
  52700. i = i + (1) >> 0;
  52701. }
  52702. break;
  52703. }
  52704. return n;
  52705. };
  52706. IPMask.prototype.Size = function() {
  52707. var $ptr, _tmp, _tmp$1, _tmp$2, _tmp$3, bits, m, ones;
  52708. ones = 0;
  52709. bits = 0;
  52710. m = this;
  52711. _tmp = simpleMaskLength(m); _tmp$1 = m.$length * 8 >> 0; ones = _tmp; bits = _tmp$1;
  52712. if (ones === -1) {
  52713. _tmp$2 = 0; _tmp$3 = 0; ones = _tmp$2; bits = _tmp$3;
  52714. return [ones, bits];
  52715. }
  52716. return [ones, bits];
  52717. };
  52718. $ptrType(IPMask).prototype.Size = function() { return this.$get().Size(); };
  52719. IPMask.prototype.String = function() {
  52720. var $ptr, _i, _ref, _tmp, _tmp$1, b, buf, i, m, x, x$1;
  52721. m = this;
  52722. if (m.$length === 0) {
  52723. return "<nil>";
  52724. }
  52725. buf = $makeSlice(sliceType$1, (m.$length * 2 >> 0));
  52726. _ref = m;
  52727. _i = 0;
  52728. while (true) {
  52729. if (!(_i < _ref.$length)) { break; }
  52730. i = _i;
  52731. b = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]);
  52732. _tmp = "0123456789abcdef".charCodeAt((b >>> 4 << 24 >>> 24)); _tmp$1 = "0123456789abcdef".charCodeAt(((b & 15) >>> 0)); (x = i * 2 >> 0, ((x < 0 || x >= buf.$length) ? $throwRuntimeError("index out of range") : buf.$array[buf.$offset + x] = _tmp)); (x$1 = (i * 2 >> 0) + 1 >> 0, ((x$1 < 0 || x$1 >= buf.$length) ? $throwRuntimeError("index out of range") : buf.$array[buf.$offset + x$1] = _tmp$1));
  52733. _i++;
  52734. }
  52735. return $bytesToString(buf);
  52736. };
  52737. $ptrType(IPMask).prototype.String = function() { return this.$get().String(); };
  52738. parseIPv4 = function(s) {
  52739. var $ptr, _tuple, i, j, n, ok, p, s;
  52740. p = $clone(arrayType.zero(), arrayType);
  52741. i = 0;
  52742. j = 0;
  52743. while (true) {
  52744. if (!(j < 4)) { break; }
  52745. if (i >= s.length) {
  52746. return IP.nil;
  52747. }
  52748. if (j > 0) {
  52749. if (!((s.charCodeAt(i) === 46))) {
  52750. return IP.nil;
  52751. }
  52752. i = i + (1) >> 0;
  52753. }
  52754. n = 0;
  52755. ok = false;
  52756. _tuple = dtoi(s, i); n = _tuple[0]; i = _tuple[1]; ok = _tuple[2];
  52757. if (!ok || n > 255) {
  52758. return IP.nil;
  52759. }
  52760. ((j < 0 || j >= p.length) ? $throwRuntimeError("index out of range") : p[j] = (n << 24 >>> 24));
  52761. j = j + (1) >> 0;
  52762. }
  52763. if (!((i === s.length))) {
  52764. return IP.nil;
  52765. }
  52766. return IPv4(p[0], p[1], p[2], p[3]);
  52767. };
  52768. parseIPv6 = function(s, zoneAllowed) {
  52769. var $ptr, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$16, _tmp$17, _tmp$18, _tmp$19, _tmp$2, _tmp$20, _tmp$21, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, ellipsis, i, i1, ip, ip4, j, k, k$1, n, n$1, ok, s, x, x$1, x$2, x$3, x$4, zone, zoneAllowed;
  52770. ip = IP.nil;
  52771. zone = "";
  52772. ip = $makeSlice(IP, 16);
  52773. ellipsis = -1;
  52774. i = 0;
  52775. if (zoneAllowed) {
  52776. _tuple = splitHostZone(s); s = _tuple[0]; zone = _tuple[1];
  52777. }
  52778. if (s.length >= 2 && (s.charCodeAt(0) === 58) && (s.charCodeAt(1) === 58)) {
  52779. ellipsis = 0;
  52780. i = 2;
  52781. if (i === s.length) {
  52782. _tmp = ip; _tmp$1 = zone; ip = _tmp; zone = _tmp$1;
  52783. return [ip, zone];
  52784. }
  52785. }
  52786. j = 0;
  52787. while (true) {
  52788. if (!(j < 16)) { break; }
  52789. _tuple$1 = xtoi(s, i); n = _tuple$1[0]; i1 = _tuple$1[1]; ok = _tuple$1[2];
  52790. if (!ok || n > 65535) {
  52791. _tmp$2 = IP.nil; _tmp$3 = zone; ip = _tmp$2; zone = _tmp$3;
  52792. return [ip, zone];
  52793. }
  52794. if (i1 < s.length && (s.charCodeAt(i1) === 46)) {
  52795. if (ellipsis < 0 && !((j === 12))) {
  52796. _tmp$4 = IP.nil; _tmp$5 = zone; ip = _tmp$4; zone = _tmp$5;
  52797. return [ip, zone];
  52798. }
  52799. if ((j + 4 >> 0) > 16) {
  52800. _tmp$6 = IP.nil; _tmp$7 = zone; ip = _tmp$6; zone = _tmp$7;
  52801. return [ip, zone];
  52802. }
  52803. ip4 = parseIPv4(s.substring(i));
  52804. if (ip4 === IP.nil) {
  52805. _tmp$8 = IP.nil; _tmp$9 = zone; ip = _tmp$8; zone = _tmp$9;
  52806. return [ip, zone];
  52807. }
  52808. ((j < 0 || j >= ip.$length) ? $throwRuntimeError("index out of range") : ip.$array[ip.$offset + j] = (12 >= ip4.$length ? $throwRuntimeError("index out of range") : ip4.$array[ip4.$offset + 12]));
  52809. (x = j + 1 >> 0, ((x < 0 || x >= ip.$length) ? $throwRuntimeError("index out of range") : ip.$array[ip.$offset + x] = (13 >= ip4.$length ? $throwRuntimeError("index out of range") : ip4.$array[ip4.$offset + 13])));
  52810. (x$1 = j + 2 >> 0, ((x$1 < 0 || x$1 >= ip.$length) ? $throwRuntimeError("index out of range") : ip.$array[ip.$offset + x$1] = (14 >= ip4.$length ? $throwRuntimeError("index out of range") : ip4.$array[ip4.$offset + 14])));
  52811. (x$2 = j + 3 >> 0, ((x$2 < 0 || x$2 >= ip.$length) ? $throwRuntimeError("index out of range") : ip.$array[ip.$offset + x$2] = (15 >= ip4.$length ? $throwRuntimeError("index out of range") : ip4.$array[ip4.$offset + 15])));
  52812. i = s.length;
  52813. j = j + (4) >> 0;
  52814. break;
  52815. }
  52816. ((j < 0 || j >= ip.$length) ? $throwRuntimeError("index out of range") : ip.$array[ip.$offset + j] = ((n >> 8 >> 0) << 24 >>> 24));
  52817. (x$3 = j + 1 >> 0, ((x$3 < 0 || x$3 >= ip.$length) ? $throwRuntimeError("index out of range") : ip.$array[ip.$offset + x$3] = (n << 24 >>> 24)));
  52818. j = j + (2) >> 0;
  52819. i = i1;
  52820. if (i === s.length) {
  52821. break;
  52822. }
  52823. if (!((s.charCodeAt(i) === 58)) || ((i + 1 >> 0) === s.length)) {
  52824. _tmp$10 = IP.nil; _tmp$11 = zone; ip = _tmp$10; zone = _tmp$11;
  52825. return [ip, zone];
  52826. }
  52827. i = i + (1) >> 0;
  52828. if (s.charCodeAt(i) === 58) {
  52829. if (ellipsis >= 0) {
  52830. _tmp$12 = IP.nil; _tmp$13 = zone; ip = _tmp$12; zone = _tmp$13;
  52831. return [ip, zone];
  52832. }
  52833. ellipsis = j;
  52834. i = i + (1) >> 0;
  52835. if (i === s.length) {
  52836. break;
  52837. }
  52838. }
  52839. }
  52840. if (!((i === s.length))) {
  52841. _tmp$14 = IP.nil; _tmp$15 = zone; ip = _tmp$14; zone = _tmp$15;
  52842. return [ip, zone];
  52843. }
  52844. if (j < 16) {
  52845. if (ellipsis < 0) {
  52846. _tmp$16 = IP.nil; _tmp$17 = zone; ip = _tmp$16; zone = _tmp$17;
  52847. return [ip, zone];
  52848. }
  52849. n$1 = 16 - j >> 0;
  52850. k = j - 1 >> 0;
  52851. while (true) {
  52852. if (!(k >= ellipsis)) { break; }
  52853. (x$4 = k + n$1 >> 0, ((x$4 < 0 || x$4 >= ip.$length) ? $throwRuntimeError("index out of range") : ip.$array[ip.$offset + x$4] = ((k < 0 || k >= ip.$length) ? $throwRuntimeError("index out of range") : ip.$array[ip.$offset + k])));
  52854. k = k - (1) >> 0;
  52855. }
  52856. k$1 = (ellipsis + n$1 >> 0) - 1 >> 0;
  52857. while (true) {
  52858. if (!(k$1 >= ellipsis)) { break; }
  52859. ((k$1 < 0 || k$1 >= ip.$length) ? $throwRuntimeError("index out of range") : ip.$array[ip.$offset + k$1] = 0);
  52860. k$1 = k$1 - (1) >> 0;
  52861. }
  52862. } else if (ellipsis >= 0) {
  52863. _tmp$18 = IP.nil; _tmp$19 = zone; ip = _tmp$18; zone = _tmp$19;
  52864. return [ip, zone];
  52865. }
  52866. _tmp$20 = ip; _tmp$21 = zone; ip = _tmp$20; zone = _tmp$21;
  52867. return [ip, zone];
  52868. };
  52869. ParseError.ptr.prototype.Error = function() {
  52870. var $ptr, e;
  52871. e = this;
  52872. return "invalid " + e.Type + ": " + e.Text;
  52873. };
  52874. ParseError.prototype.Error = function() { return this.$val.Error(); };
  52875. ParseIP = function(s) {
  52876. var $ptr, _ref, _tuple, i, ip, s;
  52877. i = 0;
  52878. while (true) {
  52879. if (!(i < s.length)) { break; }
  52880. _ref = s.charCodeAt(i);
  52881. if (_ref === 46) {
  52882. return parseIPv4(s);
  52883. } else if (_ref === 58) {
  52884. _tuple = parseIPv6(s, false); ip = _tuple[0];
  52885. return ip;
  52886. }
  52887. i = i + (1) >> 0;
  52888. }
  52889. return IP.nil;
  52890. };
  52891. $pkg.ParseIP = ParseIP;
  52892. IPAddr.ptr.prototype.Network = function() {
  52893. var $ptr, a;
  52894. a = this;
  52895. return "ip";
  52896. };
  52897. IPAddr.prototype.Network = function() { return this.$val.Network(); };
  52898. IPAddr.ptr.prototype.String = function() {
  52899. var $ptr, a;
  52900. a = this;
  52901. if (a === ptrType$4.nil) {
  52902. return "<nil>";
  52903. }
  52904. if (!(a.Zone === "")) {
  52905. return a.IP.String() + "%" + a.Zone;
  52906. }
  52907. return a.IP.String();
  52908. };
  52909. IPAddr.prototype.String = function() { return this.$val.String(); };
  52910. IPAddr.ptr.prototype.toAddr = function() {
  52911. var $ptr, a;
  52912. a = this;
  52913. if (a === ptrType$4.nil) {
  52914. return $ifaceNil;
  52915. }
  52916. return a;
  52917. };
  52918. IPAddr.prototype.toAddr = function() { return this.$val.toAddr(); };
  52919. sockaddrToIP = function(sa) {
  52920. var $ptr, _r, _ref, sa, sa$1, sa$2, x, x$1, $s, $r;
  52921. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _ref = $f._ref; sa = $f.sa; sa$1 = $f.sa$1; sa$2 = $f.sa$2; x = $f.x; x$1 = $f.x$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  52922. _ref = sa;
  52923. /* */ if ($assertType(_ref, ptrType$20, true)[1]) { $s = 1; continue; }
  52924. /* */ if ($assertType(_ref, ptrType$21, true)[1]) { $s = 2; continue; }
  52925. /* */ $s = 3; continue;
  52926. /* if ($assertType(_ref, ptrType$20, true)[1]) { */ case 1:
  52927. sa$1 = _ref.$val;
  52928. return new IPAddr.ptr((x = $subslice(new sliceType$1(sa$1.Addr), 0), $subslice(new IP(x.$array), x.$offset, x.$offset + x.$length)), "");
  52929. $s = 3; continue;
  52930. /* } else if ($assertType(_ref, ptrType$21, true)[1]) { */ case 2:
  52931. sa$2 = _ref.$val;
  52932. _r = zoneToString((sa$2.ZoneId >> 0)); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  52933. return new IPAddr.ptr((x$1 = $subslice(new sliceType$1(sa$2.Addr), 0), $subslice(new IP(x$1.$array), x$1.$offset, x$1.$offset + x$1.$length)), _r);
  52934. /* } */ case 3:
  52935. return $ifaceNil;
  52936. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: sockaddrToIP }; } $f.$ptr = $ptr; $f._r = _r; $f._ref = _ref; $f.sa = sa; $f.sa$1 = sa$1; $f.sa$2 = sa$2; $f.x = x; $f.x$1 = x$1; $f.$s = $s; $f.$r = $r; return $f;
  52937. };
  52938. init = function() {
  52939. var $ptr, _tuple;
  52940. sysInit();
  52941. supportsIPv4 = probeIPv4Stack();
  52942. _tuple = probeIPv6Stack(); supportsIPv6 = _tuple[0]; supportsIPv4map = _tuple[1];
  52943. };
  52944. splitHostZone = function(s) {
  52945. var $ptr, _tmp, _tmp$1, host, i, s, zone;
  52946. host = "";
  52947. zone = "";
  52948. i = last(s, 37);
  52949. if (i > 0) {
  52950. _tmp = s.substring(0, i); _tmp$1 = s.substring((i + 1 >> 0)); host = _tmp; zone = _tmp$1;
  52951. } else {
  52952. host = s;
  52953. }
  52954. return [host, zone];
  52955. };
  52956. JoinHostPort = function(host, port) {
  52957. var $ptr, host, port;
  52958. if (byteIndex(host, 58) >= 0 || byteIndex(host, 37) >= 0) {
  52959. return "[" + host + "]:" + port;
  52960. }
  52961. return host + ":" + port;
  52962. };
  52963. $pkg.JoinHostPort = JoinHostPort;
  52964. zoneToString = function(zone) {
  52965. var $ptr, _r, _tuple, err, ifi, zone, $s, $r;
  52966. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tuple = $f._tuple; err = $f.err; ifi = $f.ifi; zone = $f.zone; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  52967. if (zone === 0) {
  52968. return "";
  52969. }
  52970. _r = InterfaceByIndex(zone); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  52971. _tuple = _r; ifi = _tuple[0]; err = _tuple[1];
  52972. /* */ if ($interfaceIsEqual(err, $ifaceNil)) { $s = 2; continue; }
  52973. /* */ $s = 3; continue;
  52974. /* if ($interfaceIsEqual(err, $ifaceNil)) { */ case 2:
  52975. return ifi.Name;
  52976. /* } */ case 3:
  52977. return itod((zone >>> 0));
  52978. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: zoneToString }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple = _tuple; $f.err = err; $f.ifi = ifi; $f.zone = zone; $f.$s = $s; $f.$r = $r; return $f;
  52979. };
  52980. HardwareAddr.prototype.String = function() {
  52981. var $ptr, _i, _ref, a, b, buf, i;
  52982. a = this;
  52983. if (a.$length === 0) {
  52984. return "";
  52985. }
  52986. buf = $makeSlice(sliceType$1, 0, ((a.$length * 3 >> 0) - 1 >> 0));
  52987. _ref = a;
  52988. _i = 0;
  52989. while (true) {
  52990. if (!(_i < _ref.$length)) { break; }
  52991. i = _i;
  52992. b = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]);
  52993. if (i > 0) {
  52994. buf = $append(buf, 58);
  52995. }
  52996. buf = $append(buf, "0123456789abcdef".charCodeAt((b >>> 4 << 24 >>> 24)));
  52997. buf = $append(buf, "0123456789abcdef".charCodeAt(((b & 15) >>> 0)));
  52998. _i++;
  52999. }
  53000. return $bytesToString(buf);
  53001. };
  53002. $ptrType(HardwareAddr).prototype.String = function() { return this.$get().String(); };
  53003. conn.ptr.prototype.ok = function() {
  53004. var $ptr, c;
  53005. c = this;
  53006. return !(c === ptrType$49.nil) && !(c.fd === ptrType$18.nil);
  53007. };
  53008. conn.prototype.ok = function() { return this.$val.ok(); };
  53009. conn.ptr.prototype.Read = function(b) {
  53010. var $ptr, _r, b, c, $s, $r;
  53011. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; b = $f.b; c = $f.c; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  53012. c = this;
  53013. if (!c.ok()) {
  53014. return [0, new syscall.Errno(536870951)];
  53015. }
  53016. _r = c.fd.Read(b); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  53017. return _r;
  53018. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: conn.ptr.prototype.Read }; } $f.$ptr = $ptr; $f._r = _r; $f.b = b; $f.c = c; $f.$s = $s; $f.$r = $r; return $f;
  53019. };
  53020. conn.prototype.Read = function(b) { return this.$val.Read(b); };
  53021. conn.ptr.prototype.Write = function(b) {
  53022. var $ptr, _r, b, c, $s, $r;
  53023. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; b = $f.b; c = $f.c; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  53024. c = this;
  53025. if (!c.ok()) {
  53026. return [0, new syscall.Errno(536870951)];
  53027. }
  53028. _r = c.fd.Write(b); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  53029. return _r;
  53030. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: conn.ptr.prototype.Write }; } $f.$ptr = $ptr; $f._r = _r; $f.b = b; $f.c = c; $f.$s = $s; $f.$r = $r; return $f;
  53031. };
  53032. conn.prototype.Write = function(b) { return this.$val.Write(b); };
  53033. conn.ptr.prototype.Close = function() {
  53034. var $ptr, c;
  53035. c = this;
  53036. if (!c.ok()) {
  53037. return new syscall.Errno(536870951);
  53038. }
  53039. return c.fd.Close();
  53040. };
  53041. conn.prototype.Close = function() { return this.$val.Close(); };
  53042. conn.ptr.prototype.LocalAddr = function() {
  53043. var $ptr, c;
  53044. c = this;
  53045. if (!c.ok()) {
  53046. return $ifaceNil;
  53047. }
  53048. return c.fd.laddr;
  53049. };
  53050. conn.prototype.LocalAddr = function() { return this.$val.LocalAddr(); };
  53051. conn.ptr.prototype.RemoteAddr = function() {
  53052. var $ptr, c;
  53053. c = this;
  53054. if (!c.ok()) {
  53055. return $ifaceNil;
  53056. }
  53057. return c.fd.raddr;
  53058. };
  53059. conn.prototype.RemoteAddr = function() { return this.$val.RemoteAddr(); };
  53060. conn.ptr.prototype.SetDeadline = function(t) {
  53061. var $ptr, c, t;
  53062. c = this;
  53063. t = $clone(t, time.Time);
  53064. if (!c.ok()) {
  53065. return new syscall.Errno(536870951);
  53066. }
  53067. return c.fd.setDeadline(t);
  53068. };
  53069. conn.prototype.SetDeadline = function(t) { return this.$val.SetDeadline(t); };
  53070. conn.ptr.prototype.SetReadDeadline = function(t) {
  53071. var $ptr, c, t;
  53072. c = this;
  53073. t = $clone(t, time.Time);
  53074. if (!c.ok()) {
  53075. return new syscall.Errno(536870951);
  53076. }
  53077. return c.fd.setReadDeadline(t);
  53078. };
  53079. conn.prototype.SetReadDeadline = function(t) { return this.$val.SetReadDeadline(t); };
  53080. conn.ptr.prototype.SetWriteDeadline = function(t) {
  53081. var $ptr, c, t;
  53082. c = this;
  53083. t = $clone(t, time.Time);
  53084. if (!c.ok()) {
  53085. return new syscall.Errno(536870951);
  53086. }
  53087. return c.fd.setWriteDeadline(t);
  53088. };
  53089. conn.prototype.SetWriteDeadline = function(t) { return this.$val.SetWriteDeadline(t); };
  53090. conn.ptr.prototype.SetReadBuffer = function(bytes) {
  53091. var $ptr, bytes, c;
  53092. c = this;
  53093. if (!c.ok()) {
  53094. return new syscall.Errno(536870951);
  53095. }
  53096. return setReadBuffer(c.fd, bytes);
  53097. };
  53098. conn.prototype.SetReadBuffer = function(bytes) { return this.$val.SetReadBuffer(bytes); };
  53099. conn.ptr.prototype.SetWriteBuffer = function(bytes) {
  53100. var $ptr, bytes, c;
  53101. c = this;
  53102. if (!c.ok()) {
  53103. return new syscall.Errno(536870951);
  53104. }
  53105. return setWriteBuffer(c.fd, bytes);
  53106. };
  53107. conn.prototype.SetWriteBuffer = function(bytes) { return this.$val.SetWriteBuffer(bytes); };
  53108. conn.ptr.prototype.File = function() {
  53109. var $ptr, _tuple, c, err, f;
  53110. f = ptrType$27.nil;
  53111. err = $ifaceNil;
  53112. c = this;
  53113. _tuple = c.fd.dup(); f = _tuple[0]; err = _tuple[1];
  53114. return [f, err];
  53115. };
  53116. conn.prototype.File = function() { return this.$val.File(); };
  53117. OpError.ptr.prototype.Error = function() {
  53118. var $ptr, _r, _r$1, e, s, $s, $r;
  53119. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; e = $f.e; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  53120. e = this;
  53121. if (e === ptrType$25.nil) {
  53122. return "<nil>";
  53123. }
  53124. s = e.Op;
  53125. if (!(e.Net === "")) {
  53126. s = s + (" " + e.Net);
  53127. }
  53128. /* */ if (!($interfaceIsEqual(e.Addr, $ifaceNil))) { $s = 1; continue; }
  53129. /* */ $s = 2; continue;
  53130. /* if (!($interfaceIsEqual(e.Addr, $ifaceNil))) { */ case 1:
  53131. _r = e.Addr.String(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  53132. s = s + (" " + _r);
  53133. /* } */ case 2:
  53134. _r$1 = e.Err.Error(); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  53135. s = s + (": " + _r$1);
  53136. return s;
  53137. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: OpError.ptr.prototype.Error }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f.e = e; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
  53138. };
  53139. OpError.prototype.Error = function() { return this.$val.Error(); };
  53140. OpError.ptr.prototype.Temporary = function() {
  53141. var $ptr, _r, _tuple, _v, e, ok, t, $s, $r;
  53142. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tuple = $f._tuple; _v = $f._v; e = $f.e; ok = $f.ok; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  53143. e = this;
  53144. _tuple = $assertType(e.Err, temporary, true); t = _tuple[0]; ok = _tuple[1];
  53145. if (!(ok)) { _v = false; $s = 1; continue s; }
  53146. _r = t.Temporary(); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  53147. _v = _r; case 1:
  53148. return _v;
  53149. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: OpError.ptr.prototype.Temporary }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple = _tuple; $f._v = _v; $f.e = e; $f.ok = ok; $f.t = t; $f.$s = $s; $f.$r = $r; return $f;
  53150. };
  53151. OpError.prototype.Temporary = function() { return this.$val.Temporary(); };
  53152. OpError.ptr.prototype.Timeout = function() {
  53153. var $ptr, _r, _tuple, _v, e, ok, t, $s, $r;
  53154. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tuple = $f._tuple; _v = $f._v; e = $f.e; ok = $f.ok; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  53155. e = this;
  53156. _tuple = $assertType(e.Err, timeout, true); t = _tuple[0]; ok = _tuple[1];
  53157. if (!(ok)) { _v = false; $s = 1; continue s; }
  53158. _r = t.Timeout(); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  53159. _v = _r; case 1:
  53160. return _v;
  53161. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: OpError.ptr.prototype.Timeout }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple = _tuple; $f._v = _v; $f.e = e; $f.ok = ok; $f.t = t; $f.$s = $s; $f.$r = $r; return $f;
  53162. };
  53163. OpError.prototype.Timeout = function() { return this.$val.Timeout(); };
  53164. timeoutError.ptr.prototype.Error = function() {
  53165. var $ptr, e;
  53166. e = this;
  53167. return "i/o timeout";
  53168. };
  53169. timeoutError.prototype.Error = function() { return this.$val.Error(); };
  53170. timeoutError.ptr.prototype.Timeout = function() {
  53171. var $ptr, e;
  53172. e = this;
  53173. return true;
  53174. };
  53175. timeoutError.prototype.Timeout = function() { return this.$val.Timeout(); };
  53176. timeoutError.ptr.prototype.Temporary = function() {
  53177. var $ptr, e;
  53178. e = this;
  53179. return true;
  53180. };
  53181. timeoutError.prototype.Temporary = function() { return this.$val.Temporary(); };
  53182. genericReadFrom = function(w, r) {
  53183. var $ptr, _r, _tuple, err, n, r, w, x, $s, $r;
  53184. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tuple = $f._tuple; err = $f.err; n = $f.n; r = $f.r; w = $f.w; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  53185. n = new $Int64(0, 0);
  53186. err = $ifaceNil;
  53187. _r = io.Copy((x = new writerOnly.ptr(w), new x.constructor.elem(x)), r); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  53188. _tuple = _r; n = _tuple[0]; err = _tuple[1];
  53189. return [n, err];
  53190. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: genericReadFrom }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple = _tuple; $f.err = err; $f.n = n; $f.r = r; $f.w = w; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
  53191. };
  53192. byteIndex = function(s, c) {
  53193. var $ptr, c, i, s;
  53194. i = 0;
  53195. while (true) {
  53196. if (!(i < s.length)) { break; }
  53197. if (s.charCodeAt(i) === c) {
  53198. return i;
  53199. }
  53200. i = i + (1) >> 0;
  53201. }
  53202. return -1;
  53203. };
  53204. dtoi = function(s, i0) {
  53205. var $ptr, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, i, i0, n, ok, s;
  53206. n = 0;
  53207. i = 0;
  53208. ok = false;
  53209. n = 0;
  53210. i = i0;
  53211. while (true) {
  53212. if (!(i < s.length && 48 <= s.charCodeAt(i) && s.charCodeAt(i) <= 57)) { break; }
  53213. n = (n * 10 >> 0) + ((s.charCodeAt(i) - 48 << 24 >>> 24) >> 0) >> 0;
  53214. if (n >= 16777215) {
  53215. _tmp = 0; _tmp$1 = i; _tmp$2 = false; n = _tmp; i = _tmp$1; ok = _tmp$2;
  53216. return [n, i, ok];
  53217. }
  53218. i = i + (1) >> 0;
  53219. }
  53220. if (i === i0) {
  53221. _tmp$3 = 0; _tmp$4 = i; _tmp$5 = false; n = _tmp$3; i = _tmp$4; ok = _tmp$5;
  53222. return [n, i, ok];
  53223. }
  53224. _tmp$6 = n; _tmp$7 = i; _tmp$8 = true; n = _tmp$6; i = _tmp$7; ok = _tmp$8;
  53225. return [n, i, ok];
  53226. };
  53227. xtoi = function(s, i0) {
  53228. var $ptr, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, i, i0, n, ok, s;
  53229. n = 0;
  53230. i = 0;
  53231. ok = false;
  53232. n = 0;
  53233. i = i0;
  53234. while (true) {
  53235. if (!(i < s.length)) { break; }
  53236. if (48 <= s.charCodeAt(i) && s.charCodeAt(i) <= 57) {
  53237. n = n * (16) >> 0;
  53238. n = n + (((s.charCodeAt(i) - 48 << 24 >>> 24) >> 0)) >> 0;
  53239. } else if (97 <= s.charCodeAt(i) && s.charCodeAt(i) <= 102) {
  53240. n = n * (16) >> 0;
  53241. n = n + ((((s.charCodeAt(i) - 97 << 24 >>> 24) >> 0) + 10 >> 0)) >> 0;
  53242. } else if (65 <= s.charCodeAt(i) && s.charCodeAt(i) <= 70) {
  53243. n = n * (16) >> 0;
  53244. n = n + ((((s.charCodeAt(i) - 65 << 24 >>> 24) >> 0) + 10 >> 0)) >> 0;
  53245. } else {
  53246. break;
  53247. }
  53248. if (n >= 16777215) {
  53249. _tmp = 0; _tmp$1 = i; _tmp$2 = false; n = _tmp; i = _tmp$1; ok = _tmp$2;
  53250. return [n, i, ok];
  53251. }
  53252. i = i + (1) >> 0;
  53253. }
  53254. if (i === i0) {
  53255. _tmp$3 = 0; _tmp$4 = i; _tmp$5 = false; n = _tmp$3; i = _tmp$4; ok = _tmp$5;
  53256. return [n, i, ok];
  53257. }
  53258. _tmp$6 = n; _tmp$7 = i; _tmp$8 = true; n = _tmp$6; i = _tmp$7; ok = _tmp$8;
  53259. return [n, i, ok];
  53260. };
  53261. itoa = function(i) {
  53262. var $ptr, _q, _r, buf, i, n, neg, ui;
  53263. buf = $clone(arrayType$7.zero(), arrayType$7);
  53264. n = 30;
  53265. neg = false;
  53266. if (i < 0) {
  53267. i = -i;
  53268. neg = true;
  53269. }
  53270. ui = (i >>> 0);
  53271. while (true) {
  53272. if (!(ui > 0 || (n === 30))) { break; }
  53273. n = n - (1) >> 0;
  53274. ((n < 0 || n >= buf.length) ? $throwRuntimeError("index out of range") : buf[n] = ((48 + (_r = ui % 10, _r === _r ? _r : $throwRuntimeError("integer divide by zero")) >>> 0) << 24 >>> 24));
  53275. ui = (_q = ui / (10), (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >>> 0 : $throwRuntimeError("integer divide by zero"));
  53276. }
  53277. if (neg) {
  53278. n = n - (1) >> 0;
  53279. ((n < 0 || n >= buf.length) ? $throwRuntimeError("index out of range") : buf[n] = 45);
  53280. }
  53281. return $bytesToString($subslice(new sliceType$1(buf), n));
  53282. };
  53283. itod = function(i) {
  53284. var $ptr, _q, _r, b, bp, i;
  53285. if (i === 0) {
  53286. return "0";
  53287. }
  53288. b = $clone(arrayType$8.zero(), arrayType$8);
  53289. bp = 32;
  53290. while (true) {
  53291. if (!(i > 0)) { break; }
  53292. bp = bp - (1) >> 0;
  53293. ((bp < 0 || bp >= b.length) ? $throwRuntimeError("index out of range") : b[bp] = ((_r = i % 10, _r === _r ? _r : $throwRuntimeError("integer divide by zero")) << 24 >>> 24) + 48 << 24 >>> 24);
  53294. i = (_q = i / (10), (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >>> 0 : $throwRuntimeError("integer divide by zero"));
  53295. }
  53296. return $bytesToString($subslice(new sliceType$1(b), bp));
  53297. };
  53298. appendHex = function(dst, i) {
  53299. var $ptr, dst, i, j, v, y;
  53300. if (i === 0) {
  53301. return $append(dst, 48);
  53302. }
  53303. j = 7;
  53304. while (true) {
  53305. if (!(j >= 0)) { break; }
  53306. v = (y = ((j * 4 >> 0) >>> 0), y < 32 ? (i >>> y) : 0) >>> 0;
  53307. if (v > 0) {
  53308. dst = $append(dst, "0123456789abcdef".charCodeAt(((v & 15) >>> 0)));
  53309. }
  53310. j = j - (1) >> 0;
  53311. }
  53312. return dst;
  53313. };
  53314. last = function(s, b) {
  53315. var $ptr, b, i, s;
  53316. i = s.length;
  53317. i = i - (1) >> 0;
  53318. while (true) {
  53319. if (!(i >= 0)) { break; }
  53320. if (s.charCodeAt(i) === b) {
  53321. break;
  53322. }
  53323. i = i - (1) >> 0;
  53324. }
  53325. return i;
  53326. };
  53327. sendFile = function(fd, r) {
  53328. var $ptr, _r, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$16, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, _tuple$2, done, err, err$1, f, fd, handled, lr, n, o, ok, r, written, x, x$1, $s, $deferred, $r;
  53329. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$10 = $f._tmp$10; _tmp$11 = $f._tmp$11; _tmp$12 = $f._tmp$12; _tmp$13 = $f._tmp$13; _tmp$14 = $f._tmp$14; _tmp$15 = $f._tmp$15; _tmp$16 = $f._tmp$16; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tmp$6 = $f._tmp$6; _tmp$7 = $f._tmp$7; _tmp$8 = $f._tmp$8; _tmp$9 = $f._tmp$9; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; done = $f.done; err = $f.err; err$1 = $f.err$1; f = $f.f; fd = $f.fd; handled = $f.handled; lr = $f.lr; n = $f.n; o = $f.o; ok = $f.ok; r = $f.r; written = $f.written; x = $f.x; x$1 = $f.x$1; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
  53330. written = new $Int64(0, 0);
  53331. err = $ifaceNil;
  53332. handled = false;
  53333. n = new $Int64(0, 0);
  53334. _tuple = $assertType(r, ptrType$51, true); lr = _tuple[0]; ok = _tuple[1];
  53335. if (ok) {
  53336. _tmp = lr.N; _tmp$1 = lr.R; n = _tmp; r = _tmp$1;
  53337. if ((n.$high < 0 || (n.$high === 0 && n.$low <= 0))) {
  53338. _tmp$2 = new $Int64(0, 0); _tmp$3 = $ifaceNil; _tmp$4 = true; written = _tmp$2; err = _tmp$3; handled = _tmp$4;
  53339. return [written, err, handled];
  53340. }
  53341. }
  53342. _tuple$1 = $assertType(r, ptrType$27, true); f = _tuple$1[0]; ok = _tuple$1[1];
  53343. if (!ok) {
  53344. _tmp$5 = new $Int64(0, 0); _tmp$6 = $ifaceNil; _tmp$7 = false; written = _tmp$5; err = _tmp$6; handled = _tmp$7;
  53345. return [written, err, handled];
  53346. }
  53347. err$1 = fd.writeLock();
  53348. if (!($interfaceIsEqual(err$1, $ifaceNil))) {
  53349. _tmp$8 = new $Int64(0, 0); _tmp$9 = err$1; _tmp$10 = true; written = _tmp$8; err = _tmp$9; handled = _tmp$10;
  53350. return [written, err, handled];
  53351. }
  53352. $deferred.push([$methodVal(fd, "writeUnlock"), []]);
  53353. o = fd.wop;
  53354. o.qty = (n.$low >>> 0);
  53355. o.handle = (f.Fd() >>> 0);
  53356. _r = wsrv.ExecIO(o, "TransmitFile", (function(o$1) {
  53357. var $ptr, o$1;
  53358. return syscall.TransmitFile(o$1.fd.sysfd, o$1.handle, o$1.qty, 0, o$1.o, ptrType$52.nil, 4);
  53359. })); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  53360. _tuple$2 = _r; done = _tuple$2[0]; err = _tuple$2[1];
  53361. if (!($interfaceIsEqual(err, $ifaceNil))) {
  53362. _tmp$11 = new $Int64(0, 0); _tmp$12 = err; _tmp$13 = false; written = _tmp$11; err = _tmp$12; handled = _tmp$13;
  53363. return [written, err, handled];
  53364. }
  53365. if (!(lr === ptrType$51.nil)) {
  53366. lr.N = (x = lr.N, x$1 = new $Int64(0, done), new $Int64(x.$high - x$1.$high, x.$low - x$1.$low));
  53367. }
  53368. _tmp$14 = new $Int64(0, done); _tmp$15 = $ifaceNil; _tmp$16 = true; written = _tmp$14; err = _tmp$15; handled = _tmp$16;
  53369. return [written, err, handled];
  53370. /* */ $s = -1; case -1: } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if (!$curGoroutine.asleep) { return [written, err, handled]; } if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: sendFile }; } $f.$ptr = $ptr; $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$10 = _tmp$10; $f._tmp$11 = _tmp$11; $f._tmp$12 = _tmp$12; $f._tmp$13 = _tmp$13; $f._tmp$14 = _tmp$14; $f._tmp$15 = _tmp$15; $f._tmp$16 = _tmp$16; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tmp$6 = _tmp$6; $f._tmp$7 = _tmp$7; $f._tmp$8 = _tmp$8; $f._tmp$9 = _tmp$9; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f.done = done; $f.err = err; $f.err$1 = err$1; $f.f = f; $f.fd = fd; $f.handled = handled; $f.lr = lr; $f.n = n; $f.o = o; $f.ok = ok; $f.r = r; $f.written = written; $f.x = x; $f.x$1 = x$1; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
  53371. };
  53372. netFD.ptr.prototype.addrFunc = function() {
  53373. var $ptr, _ref, _ref$1, _ref$2, fd;
  53374. fd = this;
  53375. _ref = fd.family;
  53376. if (_ref === 2 || _ref === 23) {
  53377. _ref$1 = fd.sotype;
  53378. if (_ref$1 === 1) {
  53379. return sockaddrToTCP;
  53380. } else if (_ref$1 === 2) {
  53381. return sockaddrToUDP;
  53382. } else if (_ref$1 === 3) {
  53383. return sockaddrToIP;
  53384. }
  53385. } else if (_ref === 1) {
  53386. _ref$2 = fd.sotype;
  53387. if (_ref$2 === 1) {
  53388. return sockaddrToUnix;
  53389. } else if (_ref$2 === 2) {
  53390. return sockaddrToUnixgram;
  53391. } else if (_ref$2 === 5) {
  53392. return sockaddrToUnixpacket;
  53393. }
  53394. }
  53395. return (function(param) {
  53396. var $ptr, param;
  53397. return $ifaceNil;
  53398. });
  53399. };
  53400. netFD.prototype.addrFunc = function() { return this.$val.addrFunc(); };
  53401. sysSocket = function(f, t, p) {
  53402. var $ptr, _tuple, err, f, p, s, t, $s, $r;
  53403. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _tuple = $f._tuple; err = $f.err; f = $f.f; p = $f.p; s = $f.s; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  53404. $r = syscall.ForkLock.RLock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  53405. _tuple = syscall.Socket(f, t, p); s = _tuple[0]; err = _tuple[1];
  53406. if ($interfaceIsEqual(err, $ifaceNil)) {
  53407. syscall.CloseOnExec(s);
  53408. }
  53409. $r = syscall.ForkLock.RUnlock(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  53410. return [s, err];
  53411. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: sysSocket }; } $f.$ptr = $ptr; $f._tuple = _tuple; $f.err = err; $f.f = f; $f.p = p; $f.s = s; $f.t = t; $f.$s = $s; $f.$r = $r; return $f;
  53412. };
  53413. boolint = function(b) {
  53414. var $ptr, b;
  53415. if (b) {
  53416. return 1;
  53417. }
  53418. return 0;
  53419. };
  53420. setReadBuffer = function(fd, bytes) {
  53421. var $ptr, bytes, err, fd, $deferred;
  53422. /* */ var $err = null; try { $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
  53423. err = fd.incref();
  53424. if (!($interfaceIsEqual(err, $ifaceNil))) {
  53425. return err;
  53426. }
  53427. $deferred.push([$methodVal(fd, "decref"), []]);
  53428. return os.NewSyscallError("setsockopt", syscall.SetsockoptInt(fd.sysfd, 65535, 4098, bytes));
  53429. /* */ } catch(err) { $err = err; return $ifaceNil; } finally { $callDeferred($deferred, $err); }
  53430. };
  53431. setWriteBuffer = function(fd, bytes) {
  53432. var $ptr, bytes, err, fd, $deferred;
  53433. /* */ var $err = null; try { $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
  53434. err = fd.incref();
  53435. if (!($interfaceIsEqual(err, $ifaceNil))) {
  53436. return err;
  53437. }
  53438. $deferred.push([$methodVal(fd, "decref"), []]);
  53439. return os.NewSyscallError("setsockopt", syscall.SetsockoptInt(fd.sysfd, 65535, 4097, bytes));
  53440. /* */ } catch(err) { $err = err; return $ifaceNil; } finally { $callDeferred($deferred, $err); }
  53441. };
  53442. setKeepAlive = function(fd, keepalive) {
  53443. var $ptr, err, fd, keepalive, $deferred;
  53444. /* */ var $err = null; try { $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
  53445. err = fd.incref();
  53446. if (!($interfaceIsEqual(err, $ifaceNil))) {
  53447. return err;
  53448. }
  53449. $deferred.push([$methodVal(fd, "decref"), []]);
  53450. return os.NewSyscallError("setsockopt", syscall.SetsockoptInt(fd.sysfd, 65535, 8, boolint(keepalive)));
  53451. /* */ } catch(err) { $err = err; return $ifaceNil; } finally { $callDeferred($deferred, $err); }
  53452. };
  53453. setLinger = function(fd, sec) {
  53454. var $ptr, err, fd, l, sec, $deferred;
  53455. /* */ var $err = null; try { $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
  53456. l = $clone(new syscall.Linger.ptr(), syscall.Linger);
  53457. if (sec >= 0) {
  53458. l.Onoff = 1;
  53459. l.Linger = (sec >> 0);
  53460. } else {
  53461. l.Onoff = 0;
  53462. l.Linger = 0;
  53463. }
  53464. err = fd.incref();
  53465. if (!($interfaceIsEqual(err, $ifaceNil))) {
  53466. return err;
  53467. }
  53468. $deferred.push([$methodVal(fd, "decref"), []]);
  53469. return os.NewSyscallError("setsockopt", syscall.SetsockoptLinger(fd.sysfd, 65535, 128, l));
  53470. /* */ } catch(err) { $err = err; return $ifaceNil; } finally { $callDeferred($deferred, $err); }
  53471. };
  53472. TCPAddr.ptr.prototype.Network = function() {
  53473. var $ptr, a;
  53474. a = this;
  53475. return "tcp";
  53476. };
  53477. TCPAddr.prototype.Network = function() { return this.$val.Network(); };
  53478. TCPAddr.ptr.prototype.String = function() {
  53479. var $ptr, a, ip;
  53480. a = this;
  53481. if (a === ptrType$2.nil) {
  53482. return "<nil>";
  53483. }
  53484. ip = ipEmptyString(a.IP);
  53485. if (!(a.Zone === "")) {
  53486. return JoinHostPort(ip + "%" + a.Zone, itoa(a.Port));
  53487. }
  53488. return JoinHostPort(ip, itoa(a.Port));
  53489. };
  53490. TCPAddr.prototype.String = function() { return this.$val.String(); };
  53491. TCPAddr.ptr.prototype.toAddr = function() {
  53492. var $ptr, a;
  53493. a = this;
  53494. if (a === ptrType$2.nil) {
  53495. return $ifaceNil;
  53496. }
  53497. return a;
  53498. };
  53499. TCPAddr.prototype.toAddr = function() { return this.$val.toAddr(); };
  53500. sockaddrToTCP = function(sa) {
  53501. var $ptr, _r, _ref, sa, sa$1, sa$2, x, x$1, $s, $r;
  53502. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _ref = $f._ref; sa = $f.sa; sa$1 = $f.sa$1; sa$2 = $f.sa$2; x = $f.x; x$1 = $f.x$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  53503. _ref = sa;
  53504. /* */ if ($assertType(_ref, ptrType$20, true)[1]) { $s = 1; continue; }
  53505. /* */ if ($assertType(_ref, ptrType$21, true)[1]) { $s = 2; continue; }
  53506. /* */ $s = 3; continue;
  53507. /* if ($assertType(_ref, ptrType$20, true)[1]) { */ case 1:
  53508. sa$1 = _ref.$val;
  53509. return new TCPAddr.ptr((x = $subslice(new sliceType$1(sa$1.Addr), 0), $subslice(new IP(x.$array), x.$offset, x.$offset + x.$length)), sa$1.Port, "");
  53510. $s = 3; continue;
  53511. /* } else if ($assertType(_ref, ptrType$21, true)[1]) { */ case 2:
  53512. sa$2 = _ref.$val;
  53513. _r = zoneToString((sa$2.ZoneId >> 0)); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  53514. return new TCPAddr.ptr((x$1 = $subslice(new sliceType$1(sa$2.Addr), 0), $subslice(new IP(x$1.$array), x$1.$offset, x$1.$offset + x$1.$length)), sa$2.Port, _r);
  53515. /* } */ case 3:
  53516. return $ifaceNil;
  53517. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: sockaddrToTCP }; } $f.$ptr = $ptr; $f._r = _r; $f._ref = _ref; $f.sa = sa; $f.sa$1 = sa$1; $f.sa$2 = sa$2; $f.x = x; $f.x$1 = x$1; $f.$s = $s; $f.$r = $r; return $f;
  53518. };
  53519. newTCPConn = function(fd) {
  53520. var $ptr, c, fd;
  53521. c = new TCPConn.ptr(new conn.ptr(fd));
  53522. c.SetNoDelay(true);
  53523. return c;
  53524. };
  53525. TCPConn.ptr.prototype.ReadFrom = function(r) {
  53526. var $ptr, _r, _r$1, _tuple, c, err, handled, n, r, $s, $r;
  53527. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _tuple = $f._tuple; c = $f.c; err = $f.err; handled = $f.handled; n = $f.n; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  53528. c = this;
  53529. _r = sendFile(c.conn.fd, r); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  53530. _tuple = _r; n = _tuple[0]; err = _tuple[1]; handled = _tuple[2];
  53531. /* */ if (handled) { $s = 2; continue; }
  53532. /* */ $s = 3; continue;
  53533. /* if (handled) { */ case 2:
  53534. return [n, err];
  53535. /* } */ case 3:
  53536. _r$1 = genericReadFrom(c, r); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  53537. return _r$1;
  53538. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: TCPConn.ptr.prototype.ReadFrom }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._tuple = _tuple; $f.c = c; $f.err = err; $f.handled = handled; $f.n = n; $f.r = r; $f.$s = $s; $f.$r = $r; return $f;
  53539. };
  53540. TCPConn.prototype.ReadFrom = function(r) { return this.$val.ReadFrom(r); };
  53541. TCPConn.ptr.prototype.CloseRead = function() {
  53542. var $ptr, c;
  53543. c = this;
  53544. if (!c.conn.ok()) {
  53545. return new syscall.Errno(536870951);
  53546. }
  53547. return c.conn.fd.closeRead();
  53548. };
  53549. TCPConn.prototype.CloseRead = function() { return this.$val.CloseRead(); };
  53550. TCPConn.ptr.prototype.CloseWrite = function() {
  53551. var $ptr, c;
  53552. c = this;
  53553. if (!c.conn.ok()) {
  53554. return new syscall.Errno(536870951);
  53555. }
  53556. return c.conn.fd.closeWrite();
  53557. };
  53558. TCPConn.prototype.CloseWrite = function() { return this.$val.CloseWrite(); };
  53559. TCPConn.ptr.prototype.SetLinger = function(sec) {
  53560. var $ptr, c, sec;
  53561. c = this;
  53562. if (!c.conn.ok()) {
  53563. return new syscall.Errno(536870951);
  53564. }
  53565. return setLinger(c.conn.fd, sec);
  53566. };
  53567. TCPConn.prototype.SetLinger = function(sec) { return this.$val.SetLinger(sec); };
  53568. TCPConn.ptr.prototype.SetKeepAlive = function(keepalive) {
  53569. var $ptr, c, keepalive;
  53570. c = this;
  53571. if (!c.conn.ok()) {
  53572. return new syscall.Errno(536870951);
  53573. }
  53574. return setKeepAlive(c.conn.fd, keepalive);
  53575. };
  53576. TCPConn.prototype.SetKeepAlive = function(keepalive) { return this.$val.SetKeepAlive(keepalive); };
  53577. TCPConn.ptr.prototype.SetKeepAlivePeriod = function(d) {
  53578. var $ptr, c, d;
  53579. c = this;
  53580. if (!c.conn.ok()) {
  53581. return new syscall.Errno(536870951);
  53582. }
  53583. return setKeepAlivePeriod(c.conn.fd, d);
  53584. };
  53585. TCPConn.prototype.SetKeepAlivePeriod = function(d) { return this.$val.SetKeepAlivePeriod(d); };
  53586. TCPConn.ptr.prototype.SetNoDelay = function(noDelay) {
  53587. var $ptr, c, noDelay;
  53588. c = this;
  53589. if (!c.conn.ok()) {
  53590. return new syscall.Errno(536870951);
  53591. }
  53592. return setNoDelay(c.conn.fd, noDelay);
  53593. };
  53594. TCPConn.prototype.SetNoDelay = function(noDelay) { return this.$val.SetNoDelay(noDelay); };
  53595. TCPListener.ptr.prototype.AcceptTCP = function() {
  53596. var $ptr, _r, _tuple, err, fd, l, $s, $r;
  53597. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tuple = $f._tuple; err = $f.err; fd = $f.fd; l = $f.l; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  53598. l = this;
  53599. if (l === ptrType$55.nil || l.fd === ptrType$18.nil) {
  53600. return [ptrType$54.nil, new syscall.Errno(536870951)];
  53601. }
  53602. _r = l.fd.accept(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  53603. _tuple = _r; fd = _tuple[0]; err = _tuple[1];
  53604. if (!($interfaceIsEqual(err, $ifaceNil))) {
  53605. return [ptrType$54.nil, err];
  53606. }
  53607. return [newTCPConn(fd), $ifaceNil];
  53608. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: TCPListener.ptr.prototype.AcceptTCP }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple = _tuple; $f.err = err; $f.fd = fd; $f.l = l; $f.$s = $s; $f.$r = $r; return $f;
  53609. };
  53610. TCPListener.prototype.AcceptTCP = function() { return this.$val.AcceptTCP(); };
  53611. TCPListener.ptr.prototype.Accept = function() {
  53612. var $ptr, _r, _tuple, c, err, l, $s, $r;
  53613. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tuple = $f._tuple; c = $f.c; err = $f.err; l = $f.l; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  53614. l = this;
  53615. _r = l.AcceptTCP(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  53616. _tuple = _r; c = _tuple[0]; err = _tuple[1];
  53617. if (!($interfaceIsEqual(err, $ifaceNil))) {
  53618. return [$ifaceNil, err];
  53619. }
  53620. return [c, $ifaceNil];
  53621. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: TCPListener.ptr.prototype.Accept }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple = _tuple; $f.c = c; $f.err = err; $f.l = l; $f.$s = $s; $f.$r = $r; return $f;
  53622. };
  53623. TCPListener.prototype.Accept = function() { return this.$val.Accept(); };
  53624. TCPListener.ptr.prototype.Close = function() {
  53625. var $ptr, l;
  53626. l = this;
  53627. if (l === ptrType$55.nil || l.fd === ptrType$18.nil) {
  53628. return new syscall.Errno(536870951);
  53629. }
  53630. return l.fd.Close();
  53631. };
  53632. TCPListener.prototype.Close = function() { return this.$val.Close(); };
  53633. TCPListener.ptr.prototype.Addr = function() {
  53634. var $ptr, l;
  53635. l = this;
  53636. return l.fd.laddr;
  53637. };
  53638. TCPListener.prototype.Addr = function() { return this.$val.Addr(); };
  53639. TCPListener.ptr.prototype.SetDeadline = function(t) {
  53640. var $ptr, l, t;
  53641. l = this;
  53642. t = $clone(t, time.Time);
  53643. if (l === ptrType$55.nil || l.fd === ptrType$18.nil) {
  53644. return new syscall.Errno(536870951);
  53645. }
  53646. return l.fd.setDeadline(t);
  53647. };
  53648. TCPListener.prototype.SetDeadline = function(t) { return this.$val.SetDeadline(t); };
  53649. TCPListener.ptr.prototype.File = function() {
  53650. var $ptr, _tuple, err, f, l;
  53651. f = ptrType$27.nil;
  53652. err = $ifaceNil;
  53653. l = this;
  53654. _tuple = l.fd.dup(); f = _tuple[0]; err = _tuple[1];
  53655. return [f, err];
  53656. };
  53657. TCPListener.prototype.File = function() { return this.$val.File(); };
  53658. setNoDelay = function(fd, noDelay) {
  53659. var $ptr, err, fd, noDelay, $deferred;
  53660. /* */ var $err = null; try { $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
  53661. err = fd.incref();
  53662. if (!($interfaceIsEqual(err, $ifaceNil))) {
  53663. return err;
  53664. }
  53665. $deferred.push([$methodVal(fd, "decref"), []]);
  53666. return os.NewSyscallError("setsockopt", syscall.SetsockoptInt(fd.sysfd, 6, 1, boolint(noDelay)));
  53667. /* */ } catch(err) { $err = err; return $ifaceNil; } finally { $callDeferred($deferred, $err); }
  53668. };
  53669. setKeepAlivePeriod = function(fd, d) {
  53670. var $ptr, d, err, err$1, fd, ka, msecs, ret, ret_ptr, size, x, $deferred;
  53671. /* */ var $err = null; try { $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
  53672. err = fd.incref();
  53673. if (!($interfaceIsEqual(err, $ifaceNil))) {
  53674. return err;
  53675. }
  53676. $deferred.push([$methodVal(fd, "decref"), []]);
  53677. d = (x = new time.Duration(0, 999999), new time.Duration(d.$high + x.$high, d.$low + x.$low));
  53678. msecs = ($div64(d, new time.Duration(0, 1000000), false).$low >>> 0);
  53679. ka = new syscall.TCPKeepalive.ptr(1, msecs, msecs);
  53680. ret = 0;
  53681. size = 12;
  53682. err$1 = syscall.WSAIoctl(fd.sysfd, 2550136836, ka, size, ptrType$15.nil, 0, (ret_ptr || (ret_ptr = new ptrType$11(function() { return ret; }, function($v) { ret = $v; }))), ptrType$19.nil, 0);
  53683. return os.NewSyscallError("WSAIoctl", err$1);
  53684. /* */ } catch(err) { $err = err; return $ifaceNil; } finally { $callDeferred($deferred, $err); }
  53685. };
  53686. UDPAddr.ptr.prototype.Network = function() {
  53687. var $ptr, a;
  53688. a = this;
  53689. return "udp";
  53690. };
  53691. UDPAddr.prototype.Network = function() { return this.$val.Network(); };
  53692. UDPAddr.ptr.prototype.String = function() {
  53693. var $ptr, a, ip;
  53694. a = this;
  53695. if (a === ptrType$3.nil) {
  53696. return "<nil>";
  53697. }
  53698. ip = ipEmptyString(a.IP);
  53699. if (!(a.Zone === "")) {
  53700. return JoinHostPort(ip + "%" + a.Zone, itoa(a.Port));
  53701. }
  53702. return JoinHostPort(ip, itoa(a.Port));
  53703. };
  53704. UDPAddr.prototype.String = function() { return this.$val.String(); };
  53705. UDPAddr.ptr.prototype.toAddr = function() {
  53706. var $ptr, a;
  53707. a = this;
  53708. if (a === ptrType$3.nil) {
  53709. return $ifaceNil;
  53710. }
  53711. return a;
  53712. };
  53713. UDPAddr.prototype.toAddr = function() { return this.$val.toAddr(); };
  53714. sockaddrToUDP = function(sa) {
  53715. var $ptr, _r, _ref, sa, sa$1, sa$2, x, x$1, $s, $r;
  53716. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _ref = $f._ref; sa = $f.sa; sa$1 = $f.sa$1; sa$2 = $f.sa$2; x = $f.x; x$1 = $f.x$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  53717. _ref = sa;
  53718. /* */ if ($assertType(_ref, ptrType$20, true)[1]) { $s = 1; continue; }
  53719. /* */ if ($assertType(_ref, ptrType$21, true)[1]) { $s = 2; continue; }
  53720. /* */ $s = 3; continue;
  53721. /* if ($assertType(_ref, ptrType$20, true)[1]) { */ case 1:
  53722. sa$1 = _ref.$val;
  53723. return new UDPAddr.ptr((x = $subslice(new sliceType$1(sa$1.Addr), 0), $subslice(new IP(x.$array), x.$offset, x.$offset + x.$length)), sa$1.Port, "");
  53724. $s = 3; continue;
  53725. /* } else if ($assertType(_ref, ptrType$21, true)[1]) { */ case 2:
  53726. sa$2 = _ref.$val;
  53727. _r = zoneToString((sa$2.ZoneId >> 0)); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  53728. return new UDPAddr.ptr((x$1 = $subslice(new sliceType$1(sa$2.Addr), 0), $subslice(new IP(x$1.$array), x$1.$offset, x$1.$offset + x$1.$length)), sa$2.Port, _r);
  53729. /* } */ case 3:
  53730. return $ifaceNil;
  53731. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: sockaddrToUDP }; } $f.$ptr = $ptr; $f._r = _r; $f._ref = _ref; $f.sa = sa; $f.sa$1 = sa$1; $f.sa$2 = sa$2; $f.x = x; $f.x$1 = x$1; $f.$s = $s; $f.$r = $r; return $f;
  53732. };
  53733. UnixAddr.ptr.prototype.Network = function() {
  53734. var $ptr, a;
  53735. a = this;
  53736. return a.Net;
  53737. };
  53738. UnixAddr.prototype.Network = function() { return this.$val.Network(); };
  53739. UnixAddr.ptr.prototype.String = function() {
  53740. var $ptr, a;
  53741. a = this;
  53742. if (a === ptrType$5.nil) {
  53743. return "<nil>";
  53744. }
  53745. return a.Name;
  53746. };
  53747. UnixAddr.prototype.String = function() { return this.$val.String(); };
  53748. UnixAddr.ptr.prototype.toAddr = function() {
  53749. var $ptr, a;
  53750. a = this;
  53751. if (a === ptrType$5.nil) {
  53752. return $ifaceNil;
  53753. }
  53754. return a;
  53755. };
  53756. UnixAddr.prototype.toAddr = function() { return this.$val.toAddr(); };
  53757. sockaddrToUnix = function(sa) {
  53758. var $ptr, _tuple, ok, s, sa;
  53759. _tuple = $assertType(sa, ptrType$57, true); s = _tuple[0]; ok = _tuple[1];
  53760. if (ok) {
  53761. return new UnixAddr.ptr(s.Name, "unix");
  53762. }
  53763. return $ifaceNil;
  53764. };
  53765. sockaddrToUnixgram = function(sa) {
  53766. var $ptr, _tuple, ok, s, sa;
  53767. _tuple = $assertType(sa, ptrType$57, true); s = _tuple[0]; ok = _tuple[1];
  53768. if (ok) {
  53769. return new UnixAddr.ptr(s.Name, "unixgram");
  53770. }
  53771. return $ifaceNil;
  53772. };
  53773. sockaddrToUnixpacket = function(sa) {
  53774. var $ptr, _tuple, ok, s, sa;
  53775. _tuple = $assertType(sa, ptrType$57, true); s = _tuple[0]; ok = _tuple[1];
  53776. if (ok) {
  53777. return new UnixAddr.ptr(s.Name, "unixpacket");
  53778. }
  53779. return $ifaceNil;
  53780. };
  53781. ptrType$7.methods = [{prop: "Header", name: "Header", pkg: "", typ: $funcType([], [ptrType$7], false)}, {prop: "Walk", name: "Walk", pkg: "", typ: $funcType([funcType$1], [$Bool], false)}];
  53782. ptrType$8.methods = [{prop: "Header", name: "Header", pkg: "", typ: $funcType([], [ptrType$7], false)}, {prop: "Walk", name: "Walk", pkg: "", typ: $funcType([funcType$1], [$Bool], false)}];
  53783. ptrType$63.methods = [{prop: "Header", name: "Header", pkg: "", typ: $funcType([], [ptrType$7], false)}, {prop: "Walk", name: "Walk", pkg: "", typ: $funcType([funcType$1], [$Bool], false)}];
  53784. ptrType$64.methods = [{prop: "Header", name: "Header", pkg: "", typ: $funcType([], [ptrType$7], false)}, {prop: "Walk", name: "Walk", pkg: "", typ: $funcType([funcType$1], [$Bool], false)}];
  53785. ptrType$65.methods = [{prop: "Header", name: "Header", pkg: "", typ: $funcType([], [ptrType$7], false)}, {prop: "Walk", name: "Walk", pkg: "", typ: $funcType([funcType$1], [$Bool], false)}];
  53786. ptrType$66.methods = [{prop: "Header", name: "Header", pkg: "", typ: $funcType([], [ptrType$7], false)}, {prop: "Walk", name: "Walk", pkg: "", typ: $funcType([funcType$1], [$Bool], false)}];
  53787. ptrType$67.methods = [{prop: "Header", name: "Header", pkg: "", typ: $funcType([], [ptrType$7], false)}, {prop: "Walk", name: "Walk", pkg: "", typ: $funcType([funcType$1], [$Bool], false)}];
  53788. ptrType$68.methods = [{prop: "Header", name: "Header", pkg: "", typ: $funcType([], [ptrType$7], false)}, {prop: "Walk", name: "Walk", pkg: "", typ: $funcType([funcType$1], [$Bool], false)}];
  53789. ptrType$69.methods = [{prop: "Header", name: "Header", pkg: "", typ: $funcType([], [ptrType$7], false)}, {prop: "Walk", name: "Walk", pkg: "", typ: $funcType([funcType$1], [$Bool], false)}];
  53790. ptrType$70.methods = [{prop: "Header", name: "Header", pkg: "", typ: $funcType([], [ptrType$7], false)}, {prop: "Walk", name: "Walk", pkg: "", typ: $funcType([funcType$1], [$Bool], false)}];
  53791. ptrType$71.methods = [{prop: "Header", name: "Header", pkg: "", typ: $funcType([], [ptrType$7], false)}, {prop: "Walk", name: "Walk", pkg: "", typ: $funcType([funcType$1], [$Bool], false)}];
  53792. ptrType$72.methods = [{prop: "Header", name: "Header", pkg: "", typ: $funcType([], [ptrType$7], false)}, {prop: "Walk", name: "Walk", pkg: "", typ: $funcType([funcType$1], [$Bool], false)}];
  53793. ptrType$73.methods = [{prop: "Header", name: "Header", pkg: "", typ: $funcType([], [ptrType$7], false)}, {prop: "Walk", name: "Walk", pkg: "", typ: $funcType([funcType$1], [$Bool], false)}];
  53794. ptrType$74.methods = [{prop: "Header", name: "Header", pkg: "", typ: $funcType([], [ptrType$7], false)}, {prop: "Walk", name: "Walk", pkg: "", typ: $funcType([funcType$1], [$Bool], false)}];
  53795. ptrType$75.methods = [{prop: "Header", name: "Header", pkg: "", typ: $funcType([], [ptrType$7], false)}, {prop: "Walk", name: "Walk", pkg: "", typ: $funcType([funcType$1], [$Bool], false)}];
  53796. ptrType$78.methods = [{prop: "Incref", name: "Incref", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "IncrefAndClose", name: "IncrefAndClose", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "Decref", name: "Decref", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "RWLock", name: "RWLock", pkg: "", typ: $funcType([$Bool], [$Bool], false)}, {prop: "RWUnlock", name: "RWUnlock", pkg: "", typ: $funcType([$Bool], [$Bool], false)}];
  53797. ptrType$79.methods = [{prop: "Init", name: "Init", pkg: "", typ: $funcType([ptrType$18], [$error], false)}, {prop: "Close", name: "Close", pkg: "", typ: $funcType([], [], false)}, {prop: "Lock", name: "Lock", pkg: "", typ: $funcType([], [], false)}, {prop: "Unlock", name: "Unlock", pkg: "", typ: $funcType([], [], false)}, {prop: "Wakeup", name: "Wakeup", pkg: "", typ: $funcType([], [], false)}, {prop: "Evict", name: "Evict", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "Prepare", name: "Prepare", pkg: "", typ: $funcType([$Int], [$error], false)}, {prop: "PrepareRead", name: "PrepareRead", pkg: "", typ: $funcType([], [$error], false)}, {prop: "PrepareWrite", name: "PrepareWrite", pkg: "", typ: $funcType([], [$error], false)}, {prop: "Wait", name: "Wait", pkg: "", typ: $funcType([$Int], [$error], false)}, {prop: "WaitRead", name: "WaitRead", pkg: "", typ: $funcType([], [$error], false)}, {prop: "WaitWrite", name: "WaitWrite", pkg: "", typ: $funcType([], [$error], false)}, {prop: "WaitCanceled", name: "WaitCanceled", pkg: "", typ: $funcType([$Int], [], false)}, {prop: "WaitCanceledRead", name: "WaitCanceledRead", pkg: "", typ: $funcType([], [], false)}, {prop: "WaitCanceledWrite", name: "WaitCanceledWrite", pkg: "", typ: $funcType([], [], false)}];
  53798. ptrType$80.methods = [{prop: "InitBuf", name: "InitBuf", pkg: "", typ: $funcType([sliceType$1], [], false)}];
  53799. ptrType.methods = [{prop: "ProcessRemoteIO", name: "ProcessRemoteIO", pkg: "", typ: $funcType([], [], false)}, {prop: "ExecIO", name: "ExecIO", pkg: "", typ: $funcType([ptrType$80, $String, funcType$2], [$Int, $error], false)}];
  53800. ptrType$18.methods = [{prop: "setDeadline", name: "setDeadline", pkg: "net", typ: $funcType([time.Time], [$error], false)}, {prop: "setReadDeadline", name: "setReadDeadline", pkg: "net", typ: $funcType([time.Time], [$error], false)}, {prop: "setWriteDeadline", name: "setWriteDeadline", pkg: "net", typ: $funcType([time.Time], [$error], false)}, {prop: "init", name: "init", pkg: "net", typ: $funcType([], [$error], false)}, {prop: "setAddr", name: "setAddr", pkg: "net", typ: $funcType([Addr, Addr], [], false)}, {prop: "connect", name: "connect", pkg: "net", typ: $funcType([syscall.Sockaddr, syscall.Sockaddr, time.Time], [$error], false)}, {prop: "destroy", name: "destroy", pkg: "net", typ: $funcType([], [], false)}, {prop: "incref", name: "incref", pkg: "net", typ: $funcType([], [$error], false)}, {prop: "decref", name: "decref", pkg: "net", typ: $funcType([], [], false)}, {prop: "readLock", name: "readLock", pkg: "net", typ: $funcType([], [$error], false)}, {prop: "readUnlock", name: "readUnlock", pkg: "net", typ: $funcType([], [], false)}, {prop: "writeLock", name: "writeLock", pkg: "net", typ: $funcType([], [$error], false)}, {prop: "writeUnlock", name: "writeUnlock", pkg: "net", typ: $funcType([], [], false)}, {prop: "Close", name: "Close", pkg: "", typ: $funcType([], [$error], false)}, {prop: "shutdown", name: "shutdown", pkg: "net", typ: $funcType([$Int], [$error], false)}, {prop: "closeRead", name: "closeRead", pkg: "net", typ: $funcType([], [$error], false)}, {prop: "closeWrite", name: "closeWrite", pkg: "net", typ: $funcType([], [$error], false)}, {prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType$1], [$Int, $error], false)}, {prop: "readFrom", name: "readFrom", pkg: "net", typ: $funcType([sliceType$1], [$Int, syscall.Sockaddr, $error], false)}, {prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType$1], [$Int, $error], false)}, {prop: "writeTo", name: "writeTo", pkg: "net", typ: $funcType([sliceType$1, syscall.Sockaddr], [$Int, $error], false)}, {prop: "acceptOne", name: "acceptOne", pkg: "net", typ: $funcType([sliceType$5, ptrType$80], [ptrType$18, $error], false)}, {prop: "accept", name: "accept", pkg: "net", typ: $funcType([], [ptrType$18, $error], false)}, {prop: "dup", name: "dup", pkg: "net", typ: $funcType([], [ptrType$27, $error], false)}, {prop: "readMsg", name: "readMsg", pkg: "net", typ: $funcType([sliceType$1, sliceType$1], [$Int, $Int, $Int, syscall.Sockaddr, $error], false)}, {prop: "writeMsg", name: "writeMsg", pkg: "net", typ: $funcType([sliceType$1, sliceType$1, syscall.Sockaddr], [$Int, $Int, $error], false)}, {prop: "addrFunc", name: "addrFunc", pkg: "net", typ: $funcType([], [funcType$3], false)}, {prop: "dial", name: "dial", pkg: "net", typ: $funcType([sockaddr, sockaddr, time.Time], [$error], false)}, {prop: "listenStream", name: "listenStream", pkg: "net", typ: $funcType([sockaddr, $Int], [$error], false)}, {prop: "listenDatagram", name: "listenDatagram", pkg: "net", typ: $funcType([sockaddr], [$error], false)}];
  53801. ptrType$29.methods = [{prop: "Addrs", name: "Addrs", pkg: "", typ: $funcType([], [sliceType$6, $error], false)}, {prop: "MulticastAddrs", name: "MulticastAddrs", pkg: "", typ: $funcType([], [sliceType$6, $error], false)}];
  53802. Flags.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}];
  53803. IP.methods = [{prop: "IsUnspecified", name: "IsUnspecified", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "IsLoopback", name: "IsLoopback", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "IsMulticast", name: "IsMulticast", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "IsInterfaceLocalMulticast", name: "IsInterfaceLocalMulticast", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "IsLinkLocalMulticast", name: "IsLinkLocalMulticast", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "IsLinkLocalUnicast", name: "IsLinkLocalUnicast", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "IsGlobalUnicast", name: "IsGlobalUnicast", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "To4", name: "To4", pkg: "", typ: $funcType([], [IP], false)}, {prop: "To16", name: "To16", pkg: "", typ: $funcType([], [IP], false)}, {prop: "DefaultMask", name: "DefaultMask", pkg: "", typ: $funcType([], [IPMask], false)}, {prop: "Mask", name: "Mask", pkg: "", typ: $funcType([IPMask], [IP], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "MarshalText", name: "MarshalText", pkg: "", typ: $funcType([], [sliceType$1, $error], false)}, {prop: "Equal", name: "Equal", pkg: "", typ: $funcType([IP], [$Bool], false)}];
  53804. ptrType$81.methods = [{prop: "UnmarshalText", name: "UnmarshalText", pkg: "", typ: $funcType([sliceType$1], [$error], false)}];
  53805. IPMask.methods = [{prop: "Size", name: "Size", pkg: "", typ: $funcType([], [$Int, $Int], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}];
  53806. ptrType$82.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}];
  53807. ptrType$4.methods = [{prop: "Network", name: "Network", pkg: "", typ: $funcType([], [$String], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "toAddr", name: "toAddr", pkg: "net", typ: $funcType([], [Addr], false)}, {prop: "family", name: "family", pkg: "net", typ: $funcType([], [$Int], false)}, {prop: "isWildcard", name: "isWildcard", pkg: "net", typ: $funcType([], [$Bool], false)}, {prop: "sockaddr", name: "sockaddr", pkg: "net", typ: $funcType([$Int], [syscall.Sockaddr, $error], false)}];
  53808. HardwareAddr.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}];
  53809. ptrType$49.methods = [{prop: "ok", name: "ok", pkg: "net", typ: $funcType([], [$Bool], false)}, {prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType$1], [$Int, $error], false)}, {prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType$1], [$Int, $error], false)}, {prop: "Close", name: "Close", pkg: "", typ: $funcType([], [$error], false)}, {prop: "LocalAddr", name: "LocalAddr", pkg: "", typ: $funcType([], [Addr], false)}, {prop: "RemoteAddr", name: "RemoteAddr", pkg: "", typ: $funcType([], [Addr], false)}, {prop: "SetDeadline", name: "SetDeadline", pkg: "", typ: $funcType([time.Time], [$error], false)}, {prop: "SetReadDeadline", name: "SetReadDeadline", pkg: "", typ: $funcType([time.Time], [$error], false)}, {prop: "SetWriteDeadline", name: "SetWriteDeadline", pkg: "", typ: $funcType([time.Time], [$error], false)}, {prop: "SetReadBuffer", name: "SetReadBuffer", pkg: "", typ: $funcType([$Int], [$error], false)}, {prop: "SetWriteBuffer", name: "SetWriteBuffer", pkg: "", typ: $funcType([$Int], [$error], false)}, {prop: "File", name: "File", pkg: "", typ: $funcType([], [ptrType$27, $error], false)}];
  53810. ptrType$25.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Temporary", name: "Temporary", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "Timeout", name: "Timeout", pkg: "", typ: $funcType([], [$Bool], false)}];
  53811. ptrType$83.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Timeout", name: "Timeout", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "Temporary", name: "Temporary", pkg: "", typ: $funcType([], [$Bool], false)}];
  53812. ptrType$2.methods = [{prop: "Network", name: "Network", pkg: "", typ: $funcType([], [$String], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "toAddr", name: "toAddr", pkg: "net", typ: $funcType([], [Addr], false)}, {prop: "family", name: "family", pkg: "net", typ: $funcType([], [$Int], false)}, {prop: "isWildcard", name: "isWildcard", pkg: "net", typ: $funcType([], [$Bool], false)}, {prop: "sockaddr", name: "sockaddr", pkg: "net", typ: $funcType([$Int], [syscall.Sockaddr, $error], false)}];
  53813. ptrType$54.methods = [{prop: "ReadFrom", name: "ReadFrom", pkg: "", typ: $funcType([io.Reader], [$Int64, $error], false)}, {prop: "CloseRead", name: "CloseRead", pkg: "", typ: $funcType([], [$error], false)}, {prop: "CloseWrite", name: "CloseWrite", pkg: "", typ: $funcType([], [$error], false)}, {prop: "SetLinger", name: "SetLinger", pkg: "", typ: $funcType([$Int], [$error], false)}, {prop: "SetKeepAlive", name: "SetKeepAlive", pkg: "", typ: $funcType([$Bool], [$error], false)}, {prop: "SetKeepAlivePeriod", name: "SetKeepAlivePeriod", pkg: "", typ: $funcType([time.Duration], [$error], false)}, {prop: "SetNoDelay", name: "SetNoDelay", pkg: "", typ: $funcType([$Bool], [$error], false)}];
  53814. ptrType$55.methods = [{prop: "AcceptTCP", name: "AcceptTCP", pkg: "", typ: $funcType([], [ptrType$54, $error], false)}, {prop: "Accept", name: "Accept", pkg: "", typ: $funcType([], [Conn, $error], false)}, {prop: "Close", name: "Close", pkg: "", typ: $funcType([], [$error], false)}, {prop: "Addr", name: "Addr", pkg: "", typ: $funcType([], [Addr], false)}, {prop: "SetDeadline", name: "SetDeadline", pkg: "", typ: $funcType([time.Time], [$error], false)}, {prop: "File", name: "File", pkg: "", typ: $funcType([], [ptrType$27, $error], false)}];
  53815. ptrType$3.methods = [{prop: "Network", name: "Network", pkg: "", typ: $funcType([], [$String], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "toAddr", name: "toAddr", pkg: "net", typ: $funcType([], [Addr], false)}, {prop: "family", name: "family", pkg: "net", typ: $funcType([], [$Int], false)}, {prop: "isWildcard", name: "isWildcard", pkg: "net", typ: $funcType([], [$Bool], false)}, {prop: "sockaddr", name: "sockaddr", pkg: "net", typ: $funcType([$Int], [syscall.Sockaddr, $error], false)}];
  53816. ptrType$5.methods = [{prop: "Network", name: "Network", pkg: "", typ: $funcType([], [$String], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "toAddr", name: "toAddr", pkg: "net", typ: $funcType([], [Addr], false)}, {prop: "family", name: "family", pkg: "net", typ: $funcType([], [$Int], false)}, {prop: "isWildcard", name: "isWildcard", pkg: "net", typ: $funcType([], [$Bool], false)}, {prop: "sockaddr", name: "sockaddr", pkg: "net", typ: $funcType([$Int], [syscall.Sockaddr, $error], false)}];
  53817. dnsRR_Header.init([{prop: "Name", name: "Name", pkg: "", typ: $String, tag: "net:\"domain-name\""}, {prop: "Rrtype", name: "Rrtype", pkg: "", typ: $Uint16, tag: ""}, {prop: "Class", name: "Class", pkg: "", typ: $Uint16, tag: ""}, {prop: "Ttl", name: "Ttl", pkg: "", typ: $Uint32, tag: ""}, {prop: "Rdlength", name: "Rdlength", pkg: "", typ: $Uint16, tag: ""}]);
  53818. dnsRR_CNAME.init([{prop: "Hdr", name: "Hdr", pkg: "", typ: dnsRR_Header, tag: ""}, {prop: "Cname", name: "Cname", pkg: "", typ: $String, tag: "net:\"domain-name\""}]);
  53819. dnsRR_HINFO.init([{prop: "Hdr", name: "Hdr", pkg: "", typ: dnsRR_Header, tag: ""}, {prop: "Cpu", name: "Cpu", pkg: "", typ: $String, tag: ""}, {prop: "Os", name: "Os", pkg: "", typ: $String, tag: ""}]);
  53820. dnsRR_MB.init([{prop: "Hdr", name: "Hdr", pkg: "", typ: dnsRR_Header, tag: ""}, {prop: "Mb", name: "Mb", pkg: "", typ: $String, tag: "net:\"domain-name\""}]);
  53821. dnsRR_MG.init([{prop: "Hdr", name: "Hdr", pkg: "", typ: dnsRR_Header, tag: ""}, {prop: "Mg", name: "Mg", pkg: "", typ: $String, tag: "net:\"domain-name\""}]);
  53822. dnsRR_MINFO.init([{prop: "Hdr", name: "Hdr", pkg: "", typ: dnsRR_Header, tag: ""}, {prop: "Rmail", name: "Rmail", pkg: "", typ: $String, tag: "net:\"domain-name\""}, {prop: "Email", name: "Email", pkg: "", typ: $String, tag: "net:\"domain-name\""}]);
  53823. dnsRR_MR.init([{prop: "Hdr", name: "Hdr", pkg: "", typ: dnsRR_Header, tag: ""}, {prop: "Mr", name: "Mr", pkg: "", typ: $String, tag: "net:\"domain-name\""}]);
  53824. dnsRR_MX.init([{prop: "Hdr", name: "Hdr", pkg: "", typ: dnsRR_Header, tag: ""}, {prop: "Pref", name: "Pref", pkg: "", typ: $Uint16, tag: ""}, {prop: "Mx", name: "Mx", pkg: "", typ: $String, tag: "net:\"domain-name\""}]);
  53825. dnsRR_NS.init([{prop: "Hdr", name: "Hdr", pkg: "", typ: dnsRR_Header, tag: ""}, {prop: "Ns", name: "Ns", pkg: "", typ: $String, tag: "net:\"domain-name\""}]);
  53826. dnsRR_PTR.init([{prop: "Hdr", name: "Hdr", pkg: "", typ: dnsRR_Header, tag: ""}, {prop: "Ptr", name: "Ptr", pkg: "", typ: $String, tag: "net:\"domain-name\""}]);
  53827. dnsRR_SOA.init([{prop: "Hdr", name: "Hdr", pkg: "", typ: dnsRR_Header, tag: ""}, {prop: "Ns", name: "Ns", pkg: "", typ: $String, tag: "net:\"domain-name\""}, {prop: "Mbox", name: "Mbox", pkg: "", typ: $String, tag: "net:\"domain-name\""}, {prop: "Serial", name: "Serial", pkg: "", typ: $Uint32, tag: ""}, {prop: "Refresh", name: "Refresh", pkg: "", typ: $Uint32, tag: ""}, {prop: "Retry", name: "Retry", pkg: "", typ: $Uint32, tag: ""}, {prop: "Expire", name: "Expire", pkg: "", typ: $Uint32, tag: ""}, {prop: "Minttl", name: "Minttl", pkg: "", typ: $Uint32, tag: ""}]);
  53828. dnsRR_TXT.init([{prop: "Hdr", name: "Hdr", pkg: "", typ: dnsRR_Header, tag: ""}, {prop: "Txt", name: "Txt", pkg: "", typ: $String, tag: ""}]);
  53829. dnsRR_SRV.init([{prop: "Hdr", name: "Hdr", pkg: "", typ: dnsRR_Header, tag: ""}, {prop: "Priority", name: "Priority", pkg: "", typ: $Uint16, tag: ""}, {prop: "Weight", name: "Weight", pkg: "", typ: $Uint16, tag: ""}, {prop: "Port", name: "Port", pkg: "", typ: $Uint16, tag: ""}, {prop: "Target", name: "Target", pkg: "", typ: $String, tag: "net:\"domain-name\""}]);
  53830. dnsRR_A.init([{prop: "Hdr", name: "Hdr", pkg: "", typ: dnsRR_Header, tag: ""}, {prop: "A", name: "A", pkg: "", typ: $Uint32, tag: "net:\"ipv4\""}]);
  53831. dnsRR_AAAA.init([{prop: "Hdr", name: "Hdr", pkg: "", typ: dnsRR_Header, tag: ""}, {prop: "AAAA", name: "AAAA", pkg: "", typ: arrayType$1, tag: "net:\"ipv6\""}]);
  53832. fdMutex.init([{prop: "state", name: "state", pkg: "net", typ: $Uint64, tag: ""}, {prop: "rsema", name: "rsema", pkg: "net", typ: $Uint32, tag: ""}, {prop: "wsema", name: "wsema", pkg: "net", typ: $Uint32, tag: ""}]);
  53833. pollDesc.init([{prop: "runtimeCtx", name: "runtimeCtx", pkg: "net", typ: $Uintptr, tag: ""}]);
  53834. operation.init([{prop: "o", name: "o", pkg: "net", typ: syscall.Overlapped, tag: ""}, {prop: "runtimeCtx", name: "runtimeCtx", pkg: "net", typ: $Uintptr, tag: ""}, {prop: "mode", name: "mode", pkg: "net", typ: $Int32, tag: ""}, {prop: "errno", name: "errno", pkg: "net", typ: $Int32, tag: ""}, {prop: "qty", name: "qty", pkg: "net", typ: $Uint32, tag: ""}, {prop: "fd", name: "fd", pkg: "net", typ: ptrType$18, tag: ""}, {prop: "errc", name: "errc", pkg: "net", typ: chanType$5, tag: ""}, {prop: "buf", name: "buf", pkg: "net", typ: syscall.WSABuf, tag: ""}, {prop: "sa", name: "sa", pkg: "net", typ: syscall.Sockaddr, tag: ""}, {prop: "rsa", name: "rsa", pkg: "net", typ: ptrType$23, tag: ""}, {prop: "rsan", name: "rsan", pkg: "net", typ: $Int32, tag: ""}, {prop: "handle", name: "handle", pkg: "net", typ: syscall.Handle, tag: ""}, {prop: "flags", name: "flags", pkg: "net", typ: $Uint32, tag: ""}]);
  53835. ioSrv.init([{prop: "req", name: "req", pkg: "net", typ: chanType$4, tag: ""}]);
  53836. ioSrvReq.init([{prop: "o", name: "o", pkg: "net", typ: ptrType$80, tag: ""}, {prop: "submit", name: "submit", pkg: "net", typ: funcType$2, tag: ""}]);
  53837. netFD.init([{prop: "fdmu", name: "fdmu", pkg: "net", typ: fdMutex, tag: ""}, {prop: "sysfd", name: "sysfd", pkg: "net", typ: syscall.Handle, tag: ""}, {prop: "family", name: "family", pkg: "net", typ: $Int, tag: ""}, {prop: "sotype", name: "sotype", pkg: "net", typ: $Int, tag: ""}, {prop: "isConnected", name: "isConnected", pkg: "net", typ: $Bool, tag: ""}, {prop: "skipSyncNotif", name: "skipSyncNotif", pkg: "net", typ: $Bool, tag: ""}, {prop: "net", name: "net", pkg: "net", typ: $String, tag: ""}, {prop: "laddr", name: "laddr", pkg: "net", typ: Addr, tag: ""}, {prop: "raddr", name: "raddr", pkg: "net", typ: Addr, tag: ""}, {prop: "rop", name: "rop", pkg: "net", typ: operation, tag: ""}, {prop: "wop", name: "wop", pkg: "net", typ: operation, tag: ""}, {prop: "pd", name: "pd", pkg: "net", typ: pollDesc, tag: ""}]);
  53838. Interface.init([{prop: "Index", name: "Index", pkg: "", typ: $Int, tag: ""}, {prop: "MTU", name: "MTU", pkg: "", typ: $Int, tag: ""}, {prop: "Name", name: "Name", pkg: "", typ: $String, tag: ""}, {prop: "HardwareAddr", name: "HardwareAddr", pkg: "", typ: HardwareAddr, tag: ""}, {prop: "Flags", name: "Flags", pkg: "", typ: Flags, tag: ""}]);
  53839. IP.init($Uint8);
  53840. IPMask.init($Uint8);
  53841. ParseError.init([{prop: "Type", name: "Type", pkg: "", typ: $String, tag: ""}, {prop: "Text", name: "Text", pkg: "", typ: $String, tag: ""}]);
  53842. IPAddr.init([{prop: "IP", name: "IP", pkg: "", typ: IP, tag: ""}, {prop: "Zone", name: "Zone", pkg: "", typ: $String, tag: ""}]);
  53843. HardwareAddr.init($Uint8);
  53844. Addr.init([{prop: "Network", name: "Network", pkg: "", typ: $funcType([], [$String], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}]);
  53845. Conn.init([{prop: "Close", name: "Close", pkg: "", typ: $funcType([], [$error], false)}, {prop: "LocalAddr", name: "LocalAddr", pkg: "", typ: $funcType([], [Addr], false)}, {prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType$1], [$Int, $error], false)}, {prop: "RemoteAddr", name: "RemoteAddr", pkg: "", typ: $funcType([], [Addr], false)}, {prop: "SetDeadline", name: "SetDeadline", pkg: "", typ: $funcType([time.Time], [$error], false)}, {prop: "SetReadDeadline", name: "SetReadDeadline", pkg: "", typ: $funcType([time.Time], [$error], false)}, {prop: "SetWriteDeadline", name: "SetWriteDeadline", pkg: "", typ: $funcType([time.Time], [$error], false)}, {prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType$1], [$Int, $error], false)}]);
  53846. conn.init([{prop: "fd", name: "fd", pkg: "net", typ: ptrType$18, tag: ""}]);
  53847. Error.init([{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Temporary", name: "Temporary", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "Timeout", name: "Timeout", pkg: "", typ: $funcType([], [$Bool], false)}]);
  53848. Listener.init([{prop: "Accept", name: "Accept", pkg: "", typ: $funcType([], [Conn, $error], false)}, {prop: "Addr", name: "Addr", pkg: "", typ: $funcType([], [Addr], false)}, {prop: "Close", name: "Close", pkg: "", typ: $funcType([], [$error], false)}]);
  53849. OpError.init([{prop: "Op", name: "Op", pkg: "", typ: $String, tag: ""}, {prop: "Net", name: "Net", pkg: "", typ: $String, tag: ""}, {prop: "Addr", name: "Addr", pkg: "", typ: Addr, tag: ""}, {prop: "Err", name: "Err", pkg: "", typ: $error, tag: ""}]);
  53850. temporary.init([{prop: "Temporary", name: "Temporary", pkg: "", typ: $funcType([], [$Bool], false)}]);
  53851. timeout.init([{prop: "Timeout", name: "Timeout", pkg: "", typ: $funcType([], [$Bool], false)}]);
  53852. timeoutError.init([]);
  53853. writerOnly.init([{prop: "Writer", name: "", pkg: "", typ: io.Writer, tag: ""}]);
  53854. sockaddr.init([{prop: "Network", name: "Network", pkg: "", typ: $funcType([], [$String], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "family", name: "family", pkg: "net", typ: $funcType([], [$Int], false)}, {prop: "isWildcard", name: "isWildcard", pkg: "net", typ: $funcType([], [$Bool], false)}, {prop: "sockaddr", name: "sockaddr", pkg: "net", typ: $funcType([$Int], [syscall.Sockaddr, $error], false)}, {prop: "toAddr", name: "toAddr", pkg: "net", typ: $funcType([], [Addr], false)}]);
  53855. TCPAddr.init([{prop: "IP", name: "IP", pkg: "", typ: IP, tag: ""}, {prop: "Port", name: "Port", pkg: "", typ: $Int, tag: ""}, {prop: "Zone", name: "Zone", pkg: "", typ: $String, tag: ""}]);
  53856. TCPConn.init([{prop: "conn", name: "", pkg: "net", typ: conn, tag: ""}]);
  53857. TCPListener.init([{prop: "fd", name: "fd", pkg: "net", typ: ptrType$18, tag: ""}]);
  53858. UDPAddr.init([{prop: "IP", name: "IP", pkg: "", typ: IP, tag: ""}, {prop: "Port", name: "Port", pkg: "", typ: $Int, tag: ""}, {prop: "Zone", name: "Zone", pkg: "", typ: $String, tag: ""}]);
  53859. UnixAddr.init([{prop: "Name", name: "Name", pkg: "", typ: $String, tag: ""}, {prop: "Net", name: "Net", pkg: "", typ: $String, tag: ""}]);
  53860. $init = function() {
  53861. $pkg.$init = function() {};
  53862. /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  53863. $r = errors.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  53864. $r = io.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  53865. $r = rand.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  53866. $r = os.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  53867. $r = runtime.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  53868. $r = sort.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  53869. $r = sync.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  53870. $r = atomic.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  53871. $r = syscall.$init(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  53872. $r = time.$init(); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  53873. serverInit = new sync.Once.ptr();
  53874. initErr = $ifaceNil;
  53875. canCancelIO = false;
  53876. skipSyncNotif = false;
  53877. hasLoadSetFileCompletionNotificationModes = false;
  53878. rsrv = ptrType.nil;
  53879. wsrv = ptrType.nil;
  53880. onceStartServer = new sync.Once.ptr();
  53881. supportsIPv4 = false;
  53882. supportsIPv6 = false;
  53883. supportsIPv4map = false;
  53884. rr_mk = (_map = new $Map(), _key = 5, _map[_key] = { k: _key, v: (function() {
  53885. var $ptr;
  53886. return new dnsRR_CNAME.ptr();
  53887. }) }, _key = 13, _map[_key] = { k: _key, v: (function() {
  53888. var $ptr;
  53889. return new dnsRR_HINFO.ptr();
  53890. }) }, _key = 7, _map[_key] = { k: _key, v: (function() {
  53891. var $ptr;
  53892. return new dnsRR_MB.ptr();
  53893. }) }, _key = 8, _map[_key] = { k: _key, v: (function() {
  53894. var $ptr;
  53895. return new dnsRR_MG.ptr();
  53896. }) }, _key = 14, _map[_key] = { k: _key, v: (function() {
  53897. var $ptr;
  53898. return new dnsRR_MINFO.ptr();
  53899. }) }, _key = 9, _map[_key] = { k: _key, v: (function() {
  53900. var $ptr;
  53901. return new dnsRR_MR.ptr();
  53902. }) }, _key = 15, _map[_key] = { k: _key, v: (function() {
  53903. var $ptr;
  53904. return new dnsRR_MX.ptr();
  53905. }) }, _key = 2, _map[_key] = { k: _key, v: (function() {
  53906. var $ptr;
  53907. return new dnsRR_NS.ptr();
  53908. }) }, _key = 12, _map[_key] = { k: _key, v: (function() {
  53909. var $ptr;
  53910. return new dnsRR_PTR.ptr();
  53911. }) }, _key = 6, _map[_key] = { k: _key, v: (function() {
  53912. var $ptr;
  53913. return new dnsRR_SOA.ptr();
  53914. }) }, _key = 16, _map[_key] = { k: _key, v: (function() {
  53915. var $ptr;
  53916. return new dnsRR_TXT.ptr();
  53917. }) }, _key = 33, _map[_key] = { k: _key, v: (function() {
  53918. var $ptr;
  53919. return new dnsRR_SRV.ptr();
  53920. }) }, _key = 1, _map[_key] = { k: _key, v: (function() {
  53921. var $ptr;
  53922. return new dnsRR_A.ptr();
  53923. }) }, _key = 28, _map[_key] = { k: _key, v: (function() {
  53924. var $ptr;
  53925. return new dnsRR_AAAA.ptr();
  53926. }) }, _map);
  53927. errNoSupport = errors.New("address family not supported");
  53928. errInvalidInterface = errors.New("invalid network interface");
  53929. errInvalidInterfaceIndex = errors.New("invalid network interface index");
  53930. errInvalidInterfaceName = errors.New("invalid network interface name");
  53931. errNoSuchInterface = errors.New("no such network interface");
  53932. errNoSuchMulticastInterface = errors.New("no such multicast network interface");
  53933. flagNames = new sliceType(["up", "broadcast", "loopback", "pointtopoint", "multicast"]);
  53934. v4InV6Prefix = new sliceType$1([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255]);
  53935. $pkg.IPv4bcast = IPv4(255, 255, 255, 255);
  53936. $pkg.IPv4allsys = IPv4(224, 0, 0, 1);
  53937. $pkg.IPv4allrouter = IPv4(224, 0, 0, 2);
  53938. $pkg.IPv4zero = IPv4(0, 0, 0, 0);
  53939. $pkg.IPv6unspecified = new IP([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]);
  53940. $pkg.IPv6loopback = new IP([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]);
  53941. classAMask = IPv4Mask(255, 0, 0, 0);
  53942. classBMask = IPv4Mask(255, 255, 0, 0);
  53943. classCMask = IPv4Mask(255, 255, 255, 0);
  53944. errNoSuitableAddress = errors.New("no suitable address found");
  53945. listenerBacklog = maxListenerBacklog();
  53946. errMissingAddress = errors.New("missing address");
  53947. errTimeout = new timeoutError.ptr();
  53948. errClosing = errors.New("use of closed network connection");
  53949. $pkg.ErrWriteToConnected = errors.New("use of WriteTo with pre-connected connection");
  53950. threadLimit = new chanType(500);
  53951. init();
  53952. /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
  53953. };
  53954. $pkg.$init = $init;
  53955. return $pkg;
  53956. })();
  53957. $packages["crypto/x509"] = (function() {
  53958. var $pkg = {}, $init, bytes, crypto, aes, cipher, des, dsa, ecdsa, elliptic, md5, rsa, sha1, sha256, sha512, pkix, asn1, hex, pem, errors, fmt, io, big, net, os, runtime, strconv, strings, sync, syscall, testing, time, utf8, CertPool, pkcs1PrivateKey, pkcs1AdditionalRSAPrime, rsaPublicKey, pkcs8, ecPrivateKey, InvalidReason, CertificateInvalidError, HostnameError, UnknownAuthorityError, SystemRootsError, VerifyOptions, certificate, tbsCertificate, dsaAlgorithmParameters, dsaSignature, ecdsaSignature, validity, publicKeyInfo, authKeyId, SignatureAlgorithm, PublicKeyAlgorithm, KeyUsage, ExtKeyUsage, Certificate, ConstraintViolationError, UnhandledCriticalExtension, basicConstraints, policyInformation, nameConstraints, generalSubtree, authorityInfoAccess, distributionPoint, distributionPointName, ptrType, structType, sliceType$1, structType$1, sliceType$2, sliceType$3, sliceType$4, sliceType$5, ptrType$1, sliceType$6, ptrType$2, sliceType$7, ptrType$4, ptrType$5, sliceType$8, sliceType$9, ptrType$6, ptrType$7, ptrType$8, ptrType$9, ptrType$10, ptrType$11, sliceType$10, ptrType$12, sliceType$11, ptrType$13, sliceType$12, ptrType$14, sliceType$13, ptrType$15, ptrType$16, ptrType$17, ptrType$18, ptrType$19, sliceType$14, ptrType$20, ptrType$21, ptrType$22, ptrType$23, sliceType$15, sliceType$16, ptrType$24, sliceType$17, ptrType$25, sliceType$18, ptrType$26, ptrType$27, sliceType$19, ptrType$28, sliceType$20, ptrType$29, sliceType$23, sliceType$24, ptrType$31, sliceType$25, mapType, mapType$1, once, systemRoots, oidSignatureMD2WithRSA, oidSignatureMD5WithRSA, oidSignatureSHA1WithRSA, oidSignatureSHA256WithRSA, oidSignatureSHA384WithRSA, oidSignatureSHA512WithRSA, oidSignatureDSAWithSHA1, oidSignatureDSAWithSHA256, oidSignatureECDSAWithSHA1, oidSignatureECDSAWithSHA256, oidSignatureECDSAWithSHA384, oidSignatureECDSAWithSHA512, signatureAlgorithmDetails, oidPublicKeyRSA, oidPublicKeyDSA, oidPublicKeyECDSA, oidNamedCurveP224, oidNamedCurveP256, oidNamedCurveP384, oidNamedCurveP521, oidExtKeyUsageAny, oidExtKeyUsageServerAuth, oidExtKeyUsageClientAuth, oidExtKeyUsageCodeSigning, oidExtKeyUsageEmailProtection, oidExtKeyUsageIPSECEndSystem, oidExtKeyUsageIPSECTunnel, oidExtKeyUsageIPSECUser, oidExtKeyUsageTimeStamping, oidExtKeyUsageOCSPSigning, oidExtKeyUsageMicrosoftServerGatedCrypto, oidExtKeyUsageNetscapeServerGatedCrypto, extKeyUsageOIDs, entrustBrokenSPKI, oidExtensionAuthorityInfoAccess, oidAuthorityInfoAccessOcsp, oidAuthorityInfoAccessIssuers, initSystemRoots, NewCertPool, ParsePKCS1PrivateKey, ParsePKCS8PrivateKey, systemRootsPool, createStoreContext, extractSimpleChain, checkChainTrustStatus, checkChainSSLServerPolicy, ParseECPrivateKey, parseECPrivateKey, appendToFreshChain, matchHostnames, toLowerCaseASCII, checkChainForKeyUsage, getSignatureAlgorithmFromOID, getPublicKeyAlgorithmFromOID, namedCurveFromOID, extKeyUsageFromOID, parsePublicKey, parseSANExtension, parseCertificate, ParseCertificate;
  53959. bytes = $packages["bytes"];
  53960. crypto = $packages["crypto"];
  53961. aes = $packages["crypto/aes"];
  53962. cipher = $packages["crypto/cipher"];
  53963. des = $packages["crypto/des"];
  53964. dsa = $packages["crypto/dsa"];
  53965. ecdsa = $packages["crypto/ecdsa"];
  53966. elliptic = $packages["crypto/elliptic"];
  53967. md5 = $packages["crypto/md5"];
  53968. rsa = $packages["crypto/rsa"];
  53969. sha1 = $packages["crypto/sha1"];
  53970. sha256 = $packages["crypto/sha256"];
  53971. sha512 = $packages["crypto/sha512"];
  53972. pkix = $packages["crypto/x509/pkix"];
  53973. asn1 = $packages["encoding/asn1"];
  53974. hex = $packages["encoding/hex"];
  53975. pem = $packages["encoding/pem"];
  53976. errors = $packages["errors"];
  53977. fmt = $packages["fmt"];
  53978. io = $packages["io"];
  53979. big = $packages["math/big"];
  53980. net = $packages["net"];
  53981. os = $packages["os"];
  53982. runtime = $packages["runtime"];
  53983. strconv = $packages["strconv"];
  53984. strings = $packages["strings"];
  53985. sync = $packages["sync"];
  53986. syscall = $packages["syscall"];
  53987. testing = $packages["testing"];
  53988. time = $packages["time"];
  53989. utf8 = $packages["unicode/utf8"];
  53990. CertPool = $pkg.CertPool = $newType(0, $kindStruct, "x509.CertPool", "CertPool", "crypto/x509", function(bySubjectKeyId_, byName_, certs_) {
  53991. this.$val = this;
  53992. if (arguments.length === 0) {
  53993. this.bySubjectKeyId = false;
  53994. this.byName = false;
  53995. this.certs = sliceType$6.nil;
  53996. return;
  53997. }
  53998. this.bySubjectKeyId = bySubjectKeyId_;
  53999. this.byName = byName_;
  54000. this.certs = certs_;
  54001. });
  54002. pkcs1PrivateKey = $pkg.pkcs1PrivateKey = $newType(0, $kindStruct, "x509.pkcs1PrivateKey", "pkcs1PrivateKey", "crypto/x509", function(Version_, N_, E_, D_, P_, Q_, Dp_, Dq_, Qinv_, AdditionalPrimes_) {
  54003. this.$val = this;
  54004. if (arguments.length === 0) {
  54005. this.Version = 0;
  54006. this.N = ptrType$5.nil;
  54007. this.E = 0;
  54008. this.D = ptrType$5.nil;
  54009. this.P = ptrType$5.nil;
  54010. this.Q = ptrType$5.nil;
  54011. this.Dp = ptrType$5.nil;
  54012. this.Dq = ptrType$5.nil;
  54013. this.Qinv = ptrType$5.nil;
  54014. this.AdditionalPrimes = sliceType$9.nil;
  54015. return;
  54016. }
  54017. this.Version = Version_;
  54018. this.N = N_;
  54019. this.E = E_;
  54020. this.D = D_;
  54021. this.P = P_;
  54022. this.Q = Q_;
  54023. this.Dp = Dp_;
  54024. this.Dq = Dq_;
  54025. this.Qinv = Qinv_;
  54026. this.AdditionalPrimes = AdditionalPrimes_;
  54027. });
  54028. pkcs1AdditionalRSAPrime = $pkg.pkcs1AdditionalRSAPrime = $newType(0, $kindStruct, "x509.pkcs1AdditionalRSAPrime", "pkcs1AdditionalRSAPrime", "crypto/x509", function(Prime_, Exp_, Coeff_) {
  54029. this.$val = this;
  54030. if (arguments.length === 0) {
  54031. this.Prime = ptrType$5.nil;
  54032. this.Exp = ptrType$5.nil;
  54033. this.Coeff = ptrType$5.nil;
  54034. return;
  54035. }
  54036. this.Prime = Prime_;
  54037. this.Exp = Exp_;
  54038. this.Coeff = Coeff_;
  54039. });
  54040. rsaPublicKey = $pkg.rsaPublicKey = $newType(0, $kindStruct, "x509.rsaPublicKey", "rsaPublicKey", "crypto/x509", function(N_, E_) {
  54041. this.$val = this;
  54042. if (arguments.length === 0) {
  54043. this.N = ptrType$5.nil;
  54044. this.E = 0;
  54045. return;
  54046. }
  54047. this.N = N_;
  54048. this.E = E_;
  54049. });
  54050. pkcs8 = $pkg.pkcs8 = $newType(0, $kindStruct, "x509.pkcs8", "pkcs8", "crypto/x509", function(Version_, Algo_, PrivateKey_) {
  54051. this.$val = this;
  54052. if (arguments.length === 0) {
  54053. this.Version = 0;
  54054. this.Algo = new pkix.AlgorithmIdentifier.ptr();
  54055. this.PrivateKey = sliceType$3.nil;
  54056. return;
  54057. }
  54058. this.Version = Version_;
  54059. this.Algo = Algo_;
  54060. this.PrivateKey = PrivateKey_;
  54061. });
  54062. ecPrivateKey = $pkg.ecPrivateKey = $newType(0, $kindStruct, "x509.ecPrivateKey", "ecPrivateKey", "crypto/x509", function(Version_, PrivateKey_, NamedCurveOID_, PublicKey_) {
  54063. this.$val = this;
  54064. if (arguments.length === 0) {
  54065. this.Version = 0;
  54066. this.PrivateKey = sliceType$3.nil;
  54067. this.NamedCurveOID = asn1.ObjectIdentifier.nil;
  54068. this.PublicKey = new asn1.BitString.ptr();
  54069. return;
  54070. }
  54071. this.Version = Version_;
  54072. this.PrivateKey = PrivateKey_;
  54073. this.NamedCurveOID = NamedCurveOID_;
  54074. this.PublicKey = PublicKey_;
  54075. });
  54076. InvalidReason = $pkg.InvalidReason = $newType(4, $kindInt, "x509.InvalidReason", "InvalidReason", "crypto/x509", null);
  54077. CertificateInvalidError = $pkg.CertificateInvalidError = $newType(0, $kindStruct, "x509.CertificateInvalidError", "CertificateInvalidError", "crypto/x509", function(Cert_, Reason_) {
  54078. this.$val = this;
  54079. if (arguments.length === 0) {
  54080. this.Cert = ptrType$1.nil;
  54081. this.Reason = 0;
  54082. return;
  54083. }
  54084. this.Cert = Cert_;
  54085. this.Reason = Reason_;
  54086. });
  54087. HostnameError = $pkg.HostnameError = $newType(0, $kindStruct, "x509.HostnameError", "HostnameError", "crypto/x509", function(Certificate_, Host_) {
  54088. this.$val = this;
  54089. if (arguments.length === 0) {
  54090. this.Certificate = ptrType$1.nil;
  54091. this.Host = "";
  54092. return;
  54093. }
  54094. this.Certificate = Certificate_;
  54095. this.Host = Host_;
  54096. });
  54097. UnknownAuthorityError = $pkg.UnknownAuthorityError = $newType(0, $kindStruct, "x509.UnknownAuthorityError", "UnknownAuthorityError", "crypto/x509", function(cert_, hintErr_, hintCert_) {
  54098. this.$val = this;
  54099. if (arguments.length === 0) {
  54100. this.cert = ptrType$1.nil;
  54101. this.hintErr = $ifaceNil;
  54102. this.hintCert = ptrType$1.nil;
  54103. return;
  54104. }
  54105. this.cert = cert_;
  54106. this.hintErr = hintErr_;
  54107. this.hintCert = hintCert_;
  54108. });
  54109. SystemRootsError = $pkg.SystemRootsError = $newType(0, $kindStruct, "x509.SystemRootsError", "SystemRootsError", "crypto/x509", function() {
  54110. this.$val = this;
  54111. if (arguments.length === 0) {
  54112. return;
  54113. }
  54114. });
  54115. VerifyOptions = $pkg.VerifyOptions = $newType(0, $kindStruct, "x509.VerifyOptions", "VerifyOptions", "crypto/x509", function(DNSName_, Intermediates_, Roots_, CurrentTime_, KeyUsages_) {
  54116. this.$val = this;
  54117. if (arguments.length === 0) {
  54118. this.DNSName = "";
  54119. this.Intermediates = ptrType.nil;
  54120. this.Roots = ptrType.nil;
  54121. this.CurrentTime = new time.Time.ptr();
  54122. this.KeyUsages = sliceType$14.nil;
  54123. return;
  54124. }
  54125. this.DNSName = DNSName_;
  54126. this.Intermediates = Intermediates_;
  54127. this.Roots = Roots_;
  54128. this.CurrentTime = CurrentTime_;
  54129. this.KeyUsages = KeyUsages_;
  54130. });
  54131. certificate = $pkg.certificate = $newType(0, $kindStruct, "x509.certificate", "certificate", "crypto/x509", function(Raw_, TBSCertificate_, SignatureAlgorithm_, SignatureValue_) {
  54132. this.$val = this;
  54133. if (arguments.length === 0) {
  54134. this.Raw = asn1.RawContent.nil;
  54135. this.TBSCertificate = new tbsCertificate.ptr();
  54136. this.SignatureAlgorithm = new pkix.AlgorithmIdentifier.ptr();
  54137. this.SignatureValue = new asn1.BitString.ptr();
  54138. return;
  54139. }
  54140. this.Raw = Raw_;
  54141. this.TBSCertificate = TBSCertificate_;
  54142. this.SignatureAlgorithm = SignatureAlgorithm_;
  54143. this.SignatureValue = SignatureValue_;
  54144. });
  54145. tbsCertificate = $pkg.tbsCertificate = $newType(0, $kindStruct, "x509.tbsCertificate", "tbsCertificate", "crypto/x509", function(Raw_, Version_, SerialNumber_, SignatureAlgorithm_, Issuer_, Validity_, Subject_, PublicKey_, UniqueId_, SubjectUniqueId_, Extensions_) {
  54146. this.$val = this;
  54147. if (arguments.length === 0) {
  54148. this.Raw = asn1.RawContent.nil;
  54149. this.Version = 0;
  54150. this.SerialNumber = ptrType$5.nil;
  54151. this.SignatureAlgorithm = new pkix.AlgorithmIdentifier.ptr();
  54152. this.Issuer = new asn1.RawValue.ptr();
  54153. this.Validity = new validity.ptr();
  54154. this.Subject = new asn1.RawValue.ptr();
  54155. this.PublicKey = new publicKeyInfo.ptr();
  54156. this.UniqueId = new asn1.BitString.ptr();
  54157. this.SubjectUniqueId = new asn1.BitString.ptr();
  54158. this.Extensions = sliceType$23.nil;
  54159. return;
  54160. }
  54161. this.Raw = Raw_;
  54162. this.Version = Version_;
  54163. this.SerialNumber = SerialNumber_;
  54164. this.SignatureAlgorithm = SignatureAlgorithm_;
  54165. this.Issuer = Issuer_;
  54166. this.Validity = Validity_;
  54167. this.Subject = Subject_;
  54168. this.PublicKey = PublicKey_;
  54169. this.UniqueId = UniqueId_;
  54170. this.SubjectUniqueId = SubjectUniqueId_;
  54171. this.Extensions = Extensions_;
  54172. });
  54173. dsaAlgorithmParameters = $pkg.dsaAlgorithmParameters = $newType(0, $kindStruct, "x509.dsaAlgorithmParameters", "dsaAlgorithmParameters", "crypto/x509", function(P_, Q_, G_) {
  54174. this.$val = this;
  54175. if (arguments.length === 0) {
  54176. this.P = ptrType$5.nil;
  54177. this.Q = ptrType$5.nil;
  54178. this.G = ptrType$5.nil;
  54179. return;
  54180. }
  54181. this.P = P_;
  54182. this.Q = Q_;
  54183. this.G = G_;
  54184. });
  54185. dsaSignature = $pkg.dsaSignature = $newType(0, $kindStruct, "x509.dsaSignature", "dsaSignature", "crypto/x509", function(R_, S_) {
  54186. this.$val = this;
  54187. if (arguments.length === 0) {
  54188. this.R = ptrType$5.nil;
  54189. this.S = ptrType$5.nil;
  54190. return;
  54191. }
  54192. this.R = R_;
  54193. this.S = S_;
  54194. });
  54195. ecdsaSignature = $pkg.ecdsaSignature = $newType(0, $kindStruct, "x509.ecdsaSignature", "ecdsaSignature", "crypto/x509", function(R_, S_) {
  54196. this.$val = this;
  54197. if (arguments.length === 0) {
  54198. this.R = ptrType$5.nil;
  54199. this.S = ptrType$5.nil;
  54200. return;
  54201. }
  54202. this.R = R_;
  54203. this.S = S_;
  54204. });
  54205. validity = $pkg.validity = $newType(0, $kindStruct, "x509.validity", "validity", "crypto/x509", function(NotBefore_, NotAfter_) {
  54206. this.$val = this;
  54207. if (arguments.length === 0) {
  54208. this.NotBefore = new time.Time.ptr();
  54209. this.NotAfter = new time.Time.ptr();
  54210. return;
  54211. }
  54212. this.NotBefore = NotBefore_;
  54213. this.NotAfter = NotAfter_;
  54214. });
  54215. publicKeyInfo = $pkg.publicKeyInfo = $newType(0, $kindStruct, "x509.publicKeyInfo", "publicKeyInfo", "crypto/x509", function(Raw_, Algorithm_, PublicKey_) {
  54216. this.$val = this;
  54217. if (arguments.length === 0) {
  54218. this.Raw = asn1.RawContent.nil;
  54219. this.Algorithm = new pkix.AlgorithmIdentifier.ptr();
  54220. this.PublicKey = new asn1.BitString.ptr();
  54221. return;
  54222. }
  54223. this.Raw = Raw_;
  54224. this.Algorithm = Algorithm_;
  54225. this.PublicKey = PublicKey_;
  54226. });
  54227. authKeyId = $pkg.authKeyId = $newType(0, $kindStruct, "x509.authKeyId", "authKeyId", "crypto/x509", function(Id_) {
  54228. this.$val = this;
  54229. if (arguments.length === 0) {
  54230. this.Id = sliceType$3.nil;
  54231. return;
  54232. }
  54233. this.Id = Id_;
  54234. });
  54235. SignatureAlgorithm = $pkg.SignatureAlgorithm = $newType(4, $kindInt, "x509.SignatureAlgorithm", "SignatureAlgorithm", "crypto/x509", null);
  54236. PublicKeyAlgorithm = $pkg.PublicKeyAlgorithm = $newType(4, $kindInt, "x509.PublicKeyAlgorithm", "PublicKeyAlgorithm", "crypto/x509", null);
  54237. KeyUsage = $pkg.KeyUsage = $newType(4, $kindInt, "x509.KeyUsage", "KeyUsage", "crypto/x509", null);
  54238. ExtKeyUsage = $pkg.ExtKeyUsage = $newType(4, $kindInt, "x509.ExtKeyUsage", "ExtKeyUsage", "crypto/x509", null);
  54239. Certificate = $pkg.Certificate = $newType(0, $kindStruct, "x509.Certificate", "Certificate", "crypto/x509", function(Raw_, RawTBSCertificate_, RawSubjectPublicKeyInfo_, RawSubject_, RawIssuer_, Signature_, SignatureAlgorithm_, PublicKeyAlgorithm_, PublicKey_, Version_, SerialNumber_, Issuer_, Subject_, NotBefore_, NotAfter_, KeyUsage_, Extensions_, ExtraExtensions_, ExtKeyUsage_, UnknownExtKeyUsage_, BasicConstraintsValid_, IsCA_, MaxPathLen_, MaxPathLenZero_, SubjectKeyId_, AuthorityKeyId_, OCSPServer_, IssuingCertificateURL_, DNSNames_, EmailAddresses_, IPAddresses_, PermittedDNSDomainsCritical_, PermittedDNSDomains_, CRLDistributionPoints_, PolicyIdentifiers_) {
  54240. this.$val = this;
  54241. if (arguments.length === 0) {
  54242. this.Raw = sliceType$3.nil;
  54243. this.RawTBSCertificate = sliceType$3.nil;
  54244. this.RawSubjectPublicKeyInfo = sliceType$3.nil;
  54245. this.RawSubject = sliceType$3.nil;
  54246. this.RawIssuer = sliceType$3.nil;
  54247. this.Signature = sliceType$3.nil;
  54248. this.SignatureAlgorithm = 0;
  54249. this.PublicKeyAlgorithm = 0;
  54250. this.PublicKey = $ifaceNil;
  54251. this.Version = 0;
  54252. this.SerialNumber = ptrType$5.nil;
  54253. this.Issuer = new pkix.Name.ptr();
  54254. this.Subject = new pkix.Name.ptr();
  54255. this.NotBefore = new time.Time.ptr();
  54256. this.NotAfter = new time.Time.ptr();
  54257. this.KeyUsage = 0;
  54258. this.Extensions = sliceType$23.nil;
  54259. this.ExtraExtensions = sliceType$23.nil;
  54260. this.ExtKeyUsage = sliceType$14.nil;
  54261. this.UnknownExtKeyUsage = sliceType$18.nil;
  54262. this.BasicConstraintsValid = false;
  54263. this.IsCA = false;
  54264. this.MaxPathLen = 0;
  54265. this.MaxPathLenZero = false;
  54266. this.SubjectKeyId = sliceType$3.nil;
  54267. this.AuthorityKeyId = sliceType$3.nil;
  54268. this.OCSPServer = sliceType$15.nil;
  54269. this.IssuingCertificateURL = sliceType$15.nil;
  54270. this.DNSNames = sliceType$15.nil;
  54271. this.EmailAddresses = sliceType$15.nil;
  54272. this.IPAddresses = sliceType$16.nil;
  54273. this.PermittedDNSDomainsCritical = false;
  54274. this.PermittedDNSDomains = sliceType$15.nil;
  54275. this.CRLDistributionPoints = sliceType$15.nil;
  54276. this.PolicyIdentifiers = sliceType$18.nil;
  54277. return;
  54278. }
  54279. this.Raw = Raw_;
  54280. this.RawTBSCertificate = RawTBSCertificate_;
  54281. this.RawSubjectPublicKeyInfo = RawSubjectPublicKeyInfo_;
  54282. this.RawSubject = RawSubject_;
  54283. this.RawIssuer = RawIssuer_;
  54284. this.Signature = Signature_;
  54285. this.SignatureAlgorithm = SignatureAlgorithm_;
  54286. this.PublicKeyAlgorithm = PublicKeyAlgorithm_;
  54287. this.PublicKey = PublicKey_;
  54288. this.Version = Version_;
  54289. this.SerialNumber = SerialNumber_;
  54290. this.Issuer = Issuer_;
  54291. this.Subject = Subject_;
  54292. this.NotBefore = NotBefore_;
  54293. this.NotAfter = NotAfter_;
  54294. this.KeyUsage = KeyUsage_;
  54295. this.Extensions = Extensions_;
  54296. this.ExtraExtensions = ExtraExtensions_;
  54297. this.ExtKeyUsage = ExtKeyUsage_;
  54298. this.UnknownExtKeyUsage = UnknownExtKeyUsage_;
  54299. this.BasicConstraintsValid = BasicConstraintsValid_;
  54300. this.IsCA = IsCA_;
  54301. this.MaxPathLen = MaxPathLen_;
  54302. this.MaxPathLenZero = MaxPathLenZero_;
  54303. this.SubjectKeyId = SubjectKeyId_;
  54304. this.AuthorityKeyId = AuthorityKeyId_;
  54305. this.OCSPServer = OCSPServer_;
  54306. this.IssuingCertificateURL = IssuingCertificateURL_;
  54307. this.DNSNames = DNSNames_;
  54308. this.EmailAddresses = EmailAddresses_;
  54309. this.IPAddresses = IPAddresses_;
  54310. this.PermittedDNSDomainsCritical = PermittedDNSDomainsCritical_;
  54311. this.PermittedDNSDomains = PermittedDNSDomains_;
  54312. this.CRLDistributionPoints = CRLDistributionPoints_;
  54313. this.PolicyIdentifiers = PolicyIdentifiers_;
  54314. });
  54315. ConstraintViolationError = $pkg.ConstraintViolationError = $newType(0, $kindStruct, "x509.ConstraintViolationError", "ConstraintViolationError", "crypto/x509", function() {
  54316. this.$val = this;
  54317. if (arguments.length === 0) {
  54318. return;
  54319. }
  54320. });
  54321. UnhandledCriticalExtension = $pkg.UnhandledCriticalExtension = $newType(0, $kindStruct, "x509.UnhandledCriticalExtension", "UnhandledCriticalExtension", "crypto/x509", function() {
  54322. this.$val = this;
  54323. if (arguments.length === 0) {
  54324. return;
  54325. }
  54326. });
  54327. basicConstraints = $pkg.basicConstraints = $newType(0, $kindStruct, "x509.basicConstraints", "basicConstraints", "crypto/x509", function(IsCA_, MaxPathLen_) {
  54328. this.$val = this;
  54329. if (arguments.length === 0) {
  54330. this.IsCA = false;
  54331. this.MaxPathLen = 0;
  54332. return;
  54333. }
  54334. this.IsCA = IsCA_;
  54335. this.MaxPathLen = MaxPathLen_;
  54336. });
  54337. policyInformation = $pkg.policyInformation = $newType(0, $kindStruct, "x509.policyInformation", "policyInformation", "crypto/x509", function(Policy_) {
  54338. this.$val = this;
  54339. if (arguments.length === 0) {
  54340. this.Policy = asn1.ObjectIdentifier.nil;
  54341. return;
  54342. }
  54343. this.Policy = Policy_;
  54344. });
  54345. nameConstraints = $pkg.nameConstraints = $newType(0, $kindStruct, "x509.nameConstraints", "nameConstraints", "crypto/x509", function(Permitted_, Excluded_) {
  54346. this.$val = this;
  54347. if (arguments.length === 0) {
  54348. this.Permitted = sliceType$24.nil;
  54349. this.Excluded = sliceType$24.nil;
  54350. return;
  54351. }
  54352. this.Permitted = Permitted_;
  54353. this.Excluded = Excluded_;
  54354. });
  54355. generalSubtree = $pkg.generalSubtree = $newType(0, $kindStruct, "x509.generalSubtree", "generalSubtree", "crypto/x509", function(Name_) {
  54356. this.$val = this;
  54357. if (arguments.length === 0) {
  54358. this.Name = "";
  54359. return;
  54360. }
  54361. this.Name = Name_;
  54362. });
  54363. authorityInfoAccess = $pkg.authorityInfoAccess = $newType(0, $kindStruct, "x509.authorityInfoAccess", "authorityInfoAccess", "crypto/x509", function(Method_, Location_) {
  54364. this.$val = this;
  54365. if (arguments.length === 0) {
  54366. this.Method = asn1.ObjectIdentifier.nil;
  54367. this.Location = new asn1.RawValue.ptr();
  54368. return;
  54369. }
  54370. this.Method = Method_;
  54371. this.Location = Location_;
  54372. });
  54373. distributionPoint = $pkg.distributionPoint = $newType(0, $kindStruct, "x509.distributionPoint", "distributionPoint", "crypto/x509", function(DistributionPoint_, Reason_, CRLIssuer_) {
  54374. this.$val = this;
  54375. if (arguments.length === 0) {
  54376. this.DistributionPoint = new distributionPointName.ptr();
  54377. this.Reason = new asn1.BitString.ptr();
  54378. this.CRLIssuer = new asn1.RawValue.ptr();
  54379. return;
  54380. }
  54381. this.DistributionPoint = DistributionPoint_;
  54382. this.Reason = Reason_;
  54383. this.CRLIssuer = CRLIssuer_;
  54384. });
  54385. distributionPointName = $pkg.distributionPointName = $newType(0, $kindStruct, "x509.distributionPointName", "distributionPointName", "crypto/x509", function(FullName_, RelativeName_) {
  54386. this.$val = this;
  54387. if (arguments.length === 0) {
  54388. this.FullName = new asn1.RawValue.ptr();
  54389. this.RelativeName = pkix.RDNSequence.nil;
  54390. return;
  54391. }
  54392. this.FullName = FullName_;
  54393. this.RelativeName = RelativeName_;
  54394. });
  54395. ptrType = $ptrType(CertPool);
  54396. structType = $structType([{prop: "algo", name: "algo", pkg: "crypto/x509", typ: SignatureAlgorithm, tag: ""}, {prop: "oid", name: "oid", pkg: "crypto/x509", typ: asn1.ObjectIdentifier, tag: ""}, {prop: "pubKeyAlgo", name: "pubKeyAlgo", pkg: "crypto/x509", typ: PublicKeyAlgorithm, tag: ""}, {prop: "hash", name: "hash", pkg: "crypto/x509", typ: crypto.Hash, tag: ""}]);
  54397. sliceType$1 = $sliceType(structType);
  54398. structType$1 = $structType([{prop: "extKeyUsage", name: "extKeyUsage", pkg: "crypto/x509", typ: ExtKeyUsage, tag: ""}, {prop: "oid", name: "oid", pkg: "crypto/x509", typ: asn1.ObjectIdentifier, tag: ""}]);
  54399. sliceType$2 = $sliceType(structType$1);
  54400. sliceType$3 = $sliceType($Uint8);
  54401. sliceType$4 = $sliceType($Int);
  54402. sliceType$5 = $sliceType($emptyInterface);
  54403. ptrType$1 = $ptrType(Certificate);
  54404. sliceType$6 = $sliceType(ptrType$1);
  54405. ptrType$2 = $ptrType(pem.Block);
  54406. sliceType$7 = $sliceType(sliceType$3);
  54407. ptrType$4 = $ptrType(rsa.PrivateKey);
  54408. ptrType$5 = $ptrType(big.Int);
  54409. sliceType$8 = $sliceType(ptrType$5);
  54410. sliceType$9 = $sliceType(pkcs1AdditionalRSAPrime);
  54411. ptrType$6 = $ptrType(asn1.ObjectIdentifier);
  54412. ptrType$7 = $ptrType(syscall.CertContext);
  54413. ptrType$8 = $ptrType($Uint8);
  54414. ptrType$9 = $ptrType(ptrType$7);
  54415. ptrType$10 = $ptrType(syscall.CertSimpleChain);
  54416. ptrType$11 = $ptrType(ptrType$10);
  54417. sliceType$10 = $sliceType(ptrType$10);
  54418. ptrType$12 = $ptrType(syscall.CertChainElement);
  54419. sliceType$11 = $sliceType(ptrType$12);
  54420. ptrType$13 = $ptrType($Uint16);
  54421. sliceType$12 = $sliceType(sliceType$6);
  54422. ptrType$14 = $ptrType(VerifyOptions);
  54423. sliceType$13 = $sliceType(ptrType$8);
  54424. ptrType$15 = $ptrType(ptrType$8);
  54425. ptrType$16 = $ptrType(syscall.Filetime);
  54426. ptrType$17 = $ptrType(syscall.CertChainContext);
  54427. ptrType$18 = $ptrType(ptrType$17);
  54428. ptrType$19 = $ptrType(ecdsa.PrivateKey);
  54429. sliceType$14 = $sliceType(ExtKeyUsage);
  54430. ptrType$20 = $ptrType(rsa.PublicKey);
  54431. ptrType$21 = $ptrType(ecdsa.PublicKey);
  54432. ptrType$22 = $ptrType(dsa.PublicKey);
  54433. ptrType$23 = $ptrType(ptrType$5);
  54434. sliceType$15 = $sliceType($String);
  54435. sliceType$16 = $sliceType(net.IP);
  54436. ptrType$24 = $ptrType(pkix.RDNSequence);
  54437. sliceType$17 = $sliceType(distributionPoint);
  54438. ptrType$25 = $ptrType(sliceType$17);
  54439. sliceType$18 = $sliceType(asn1.ObjectIdentifier);
  54440. ptrType$26 = $ptrType(sliceType$18);
  54441. ptrType$27 = $ptrType(sliceType$3);
  54442. sliceType$19 = $sliceType(policyInformation);
  54443. ptrType$28 = $ptrType(sliceType$19);
  54444. sliceType$20 = $sliceType(authorityInfoAccess);
  54445. ptrType$29 = $ptrType(sliceType$20);
  54446. sliceType$23 = $sliceType(pkix.Extension);
  54447. sliceType$24 = $sliceType(generalSubtree);
  54448. ptrType$31 = $ptrType(pkix.CertificateList);
  54449. sliceType$25 = $sliceType(pkix.RevokedCertificate);
  54450. mapType = $mapType($String, sliceType$4);
  54451. mapType$1 = $mapType($Int, sliceType$12);
  54452. initSystemRoots = function() {
  54453. var $ptr;
  54454. };
  54455. NewCertPool = function() {
  54456. var $ptr;
  54457. return new CertPool.ptr(new $Map(), new $Map(), sliceType$6.nil);
  54458. };
  54459. $pkg.NewCertPool = NewCertPool;
  54460. CertPool.ptr.prototype.findVerifiedParents = function(cert) {
  54461. var $ptr, _entry, _entry$1, _i, _r, _ref, c, candidates, cert, err, errCert, parents, s, x, x$1, $s, $r;
  54462. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _entry = $f._entry; _entry$1 = $f._entry$1; _i = $f._i; _r = $f._r; _ref = $f._ref; c = $f.c; candidates = $f.candidates; cert = $f.cert; err = $f.err; errCert = $f.errCert; parents = $f.parents; s = $f.s; x = $f.x; x$1 = $f.x$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  54463. parents = sliceType$4.nil;
  54464. errCert = ptrType$1.nil;
  54465. err = $ifaceNil;
  54466. s = this;
  54467. if (s === ptrType.nil) {
  54468. return [parents, errCert, err];
  54469. }
  54470. candidates = sliceType$4.nil;
  54471. if (cert.AuthorityKeyId.$length > 0) {
  54472. candidates = (_entry = s.bySubjectKeyId[$bytesToString(cert.AuthorityKeyId)], _entry !== undefined ? _entry.v : sliceType$4.nil);
  54473. }
  54474. if (candidates.$length === 0) {
  54475. candidates = (_entry$1 = s.byName[$bytesToString(cert.RawIssuer)], _entry$1 !== undefined ? _entry$1.v : sliceType$4.nil);
  54476. }
  54477. _ref = candidates;
  54478. _i = 0;
  54479. /* while (true) { */ case 1:
  54480. /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; }
  54481. c = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]);
  54482. _r = cert.CheckSignatureFrom((x = s.certs, ((c < 0 || c >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + c]))); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  54483. err = _r;
  54484. /* */ if ($interfaceIsEqual(err, $ifaceNil)) { $s = 4; continue; }
  54485. /* */ $s = 5; continue;
  54486. /* if ($interfaceIsEqual(err, $ifaceNil)) { */ case 4:
  54487. parents = $append(parents, c);
  54488. $s = 6; continue;
  54489. /* } else { */ case 5:
  54490. errCert = (x$1 = s.certs, ((c < 0 || c >= x$1.$length) ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + c]));
  54491. /* } */ case 6:
  54492. _i++;
  54493. /* } */ $s = 1; continue; case 2:
  54494. return [parents, errCert, err];
  54495. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: CertPool.ptr.prototype.findVerifiedParents }; } $f.$ptr = $ptr; $f._entry = _entry; $f._entry$1 = _entry$1; $f._i = _i; $f._r = _r; $f._ref = _ref; $f.c = c; $f.candidates = candidates; $f.cert = cert; $f.err = err; $f.errCert = errCert; $f.parents = parents; $f.s = s; $f.x = x; $f.x$1 = x$1; $f.$s = $s; $f.$r = $r; return $f;
  54496. };
  54497. CertPool.prototype.findVerifiedParents = function(cert) { return this.$val.findVerifiedParents(cert); };
  54498. CertPool.ptr.prototype.AddCert = function(cert) {
  54499. var $ptr, _entry, _entry$1, _i, _key, _key$1, _ref, c, cert, keyId, n, name, s;
  54500. s = this;
  54501. if (cert === ptrType$1.nil) {
  54502. $panic(new $String("adding nil Certificate to CertPool"));
  54503. }
  54504. _ref = s.certs;
  54505. _i = 0;
  54506. while (true) {
  54507. if (!(_i < _ref.$length)) { break; }
  54508. c = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]);
  54509. if (c.Equal(cert)) {
  54510. return;
  54511. }
  54512. _i++;
  54513. }
  54514. n = s.certs.$length;
  54515. s.certs = $append(s.certs, cert);
  54516. if (cert.SubjectKeyId.$length > 0) {
  54517. keyId = $bytesToString(cert.SubjectKeyId);
  54518. _key = keyId; (s.bySubjectKeyId || $throwRuntimeError("assignment to entry in nil map"))[_key] = { k: _key, v: $append((_entry = s.bySubjectKeyId[keyId], _entry !== undefined ? _entry.v : sliceType$4.nil), n) };
  54519. }
  54520. name = $bytesToString(cert.RawSubject);
  54521. _key$1 = name; (s.byName || $throwRuntimeError("assignment to entry in nil map"))[_key$1] = { k: _key$1, v: $append((_entry$1 = s.byName[name], _entry$1 !== undefined ? _entry$1.v : sliceType$4.nil), n) };
  54522. };
  54523. CertPool.prototype.AddCert = function(cert) { return this.$val.AddCert(cert); };
  54524. CertPool.ptr.prototype.AppendCertsFromPEM = function(pemCerts) {
  54525. var $ptr, _r, _r$1, _tuple, _tuple$1, block, cert, err, ok, pemCerts, s, $s, $r;
  54526. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; block = $f.block; cert = $f.cert; err = $f.err; ok = $f.ok; pemCerts = $f.pemCerts; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  54527. ok = false;
  54528. s = this;
  54529. /* while (true) { */ case 1:
  54530. /* if (!(pemCerts.$length > 0)) { break; } */ if(!(pemCerts.$length > 0)) { $s = 2; continue; }
  54531. block = ptrType$2.nil;
  54532. _r = pem.Decode(pemCerts); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  54533. _tuple = _r; block = _tuple[0]; pemCerts = _tuple[1];
  54534. if (block === ptrType$2.nil) {
  54535. /* break; */ $s = 2; continue;
  54536. }
  54537. /* */ if (!(block.Type === "CERTIFICATE") || !(($keys(block.Headers).length === 0))) { $s = 4; continue; }
  54538. /* */ $s = 5; continue;
  54539. /* if (!(block.Type === "CERTIFICATE") || !(($keys(block.Headers).length === 0))) { */ case 4:
  54540. /* continue; */ $s = 1; continue;
  54541. /* } */ case 5:
  54542. _r$1 = ParseCertificate(block.Bytes); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  54543. _tuple$1 = _r$1; cert = _tuple$1[0]; err = _tuple$1[1];
  54544. if (!($interfaceIsEqual(err, $ifaceNil))) {
  54545. /* continue; */ $s = 1; continue;
  54546. }
  54547. s.AddCert(cert);
  54548. ok = true;
  54549. /* } */ $s = 1; continue; case 2:
  54550. return ok;
  54551. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: CertPool.ptr.prototype.AppendCertsFromPEM }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.block = block; $f.cert = cert; $f.err = err; $f.ok = ok; $f.pemCerts = pemCerts; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
  54552. };
  54553. CertPool.prototype.AppendCertsFromPEM = function(pemCerts) { return this.$val.AppendCertsFromPEM(pemCerts); };
  54554. CertPool.ptr.prototype.Subjects = function() {
  54555. var $ptr, _i, _ref, c, i, res, s;
  54556. res = sliceType$7.nil;
  54557. s = this;
  54558. res = $makeSlice(sliceType$7, s.certs.$length);
  54559. _ref = s.certs;
  54560. _i = 0;
  54561. while (true) {
  54562. if (!(_i < _ref.$length)) { break; }
  54563. i = _i;
  54564. c = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]);
  54565. ((i < 0 || i >= res.$length) ? $throwRuntimeError("index out of range") : res.$array[res.$offset + i] = c.RawSubject);
  54566. _i++;
  54567. }
  54568. return res;
  54569. };
  54570. CertPool.prototype.Subjects = function() { return this.$val.Subjects(); };
  54571. ParsePKCS1PrivateKey = function(der) {
  54572. var $ptr, _i, _r, _r$1, _ref, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tuple, a, der, err, i, key, priv, rest, x, x$1, x$2, x$3, x$4, $s, $r;
  54573. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _i = $f._i; _r = $f._r; _r$1 = $f._r$1; _ref = $f._ref; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tmp$6 = $f._tmp$6; _tmp$7 = $f._tmp$7; _tuple = $f._tuple; a = $f.a; der = $f.der; err = $f.err; i = $f.i; key = $f.key; priv = $f.priv; rest = $f.rest; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; x$3 = $f.x$3; x$4 = $f.x$4; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  54574. priv = [priv];
  54575. key = ptrType$4.nil;
  54576. err = $ifaceNil;
  54577. priv[0] = $clone(new pkcs1PrivateKey.ptr(), pkcs1PrivateKey);
  54578. _r = asn1.Unmarshal(der, priv[0]); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  54579. _tuple = _r; rest = _tuple[0]; err = _tuple[1];
  54580. if (rest.$length > 0) {
  54581. err = (x = new asn1.SyntaxError.ptr("trailing data"), new x.constructor.elem(x));
  54582. return [key, err];
  54583. }
  54584. if (!($interfaceIsEqual(err, $ifaceNil))) {
  54585. return [key, err];
  54586. }
  54587. if (priv[0].Version > 1) {
  54588. _tmp = ptrType$4.nil; _tmp$1 = errors.New("x509: unsupported private key version"); key = _tmp; err = _tmp$1;
  54589. return [key, err];
  54590. }
  54591. if (priv[0].N.Sign() <= 0 || priv[0].D.Sign() <= 0 || priv[0].P.Sign() <= 0 || priv[0].Q.Sign() <= 0) {
  54592. _tmp$2 = ptrType$4.nil; _tmp$3 = errors.New("x509: private key contains zero or negative value"); key = _tmp$2; err = _tmp$3;
  54593. return [key, err];
  54594. }
  54595. key = new rsa.PrivateKey.ptr();
  54596. $copy(key.PublicKey, new rsa.PublicKey.ptr(priv[0].N, priv[0].E), rsa.PublicKey);
  54597. key.D = priv[0].D;
  54598. key.Primes = $makeSlice(sliceType$8, (2 + priv[0].AdditionalPrimes.$length >> 0));
  54599. (x$1 = key.Primes, (0 >= x$1.$length ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + 0] = priv[0].P));
  54600. (x$2 = key.Primes, (1 >= x$2.$length ? $throwRuntimeError("index out of range") : x$2.$array[x$2.$offset + 1] = priv[0].Q));
  54601. _ref = priv[0].AdditionalPrimes;
  54602. _i = 0;
  54603. while (true) {
  54604. if (!(_i < _ref.$length)) { break; }
  54605. i = _i;
  54606. a = $clone(((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]), pkcs1AdditionalRSAPrime);
  54607. if (a.Prime.Sign() <= 0) {
  54608. _tmp$4 = ptrType$4.nil; _tmp$5 = errors.New("x509: private key contains zero or negative prime"); key = _tmp$4; err = _tmp$5;
  54609. return [key, err];
  54610. }
  54611. (x$3 = key.Primes, x$4 = i + 2 >> 0, ((x$4 < 0 || x$4 >= x$3.$length) ? $throwRuntimeError("index out of range") : x$3.$array[x$3.$offset + x$4] = a.Prime));
  54612. _i++;
  54613. }
  54614. _r$1 = key.Validate(); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  54615. err = _r$1;
  54616. if (!($interfaceIsEqual(err, $ifaceNil))) {
  54617. _tmp$6 = ptrType$4.nil; _tmp$7 = err; key = _tmp$6; err = _tmp$7;
  54618. return [key, err];
  54619. }
  54620. key.Precompute();
  54621. return [key, err];
  54622. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: ParsePKCS1PrivateKey }; } $f.$ptr = $ptr; $f._i = _i; $f._r = _r; $f._r$1 = _r$1; $f._ref = _ref; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tmp$6 = _tmp$6; $f._tmp$7 = _tmp$7; $f._tuple = _tuple; $f.a = a; $f.der = der; $f.err = err; $f.i = i; $f.key = key; $f.priv = priv; $f.rest = rest; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.x$3 = x$3; $f.x$4 = x$4; $f.$s = $s; $f.$r = $r; return $f;
  54623. };
  54624. $pkg.ParsePKCS1PrivateKey = ParsePKCS1PrivateKey;
  54625. ParsePKCS8PrivateKey = function(der) {
  54626. var $ptr, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, _tuple$2, _tuple$3, bytes$1, der, err, err$1, err$2, key, namedCurveOID, privKey, $s, $r;
  54627. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$10 = $f._tmp$10; _tmp$11 = $f._tmp$11; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tmp$6 = $f._tmp$6; _tmp$7 = $f._tmp$7; _tmp$8 = $f._tmp$8; _tmp$9 = $f._tmp$9; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; bytes$1 = $f.bytes$1; der = $f.der; err = $f.err; err$1 = $f.err$1; err$2 = $f.err$2; key = $f.key; namedCurveOID = $f.namedCurveOID; privKey = $f.privKey; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  54628. privKey = [privKey];
  54629. key = $ifaceNil;
  54630. err = $ifaceNil;
  54631. privKey[0] = $clone(new pkcs8.ptr(), pkcs8);
  54632. _r = asn1.Unmarshal(der, privKey[0]); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  54633. _tuple = _r; err$1 = _tuple[1];
  54634. /* */ if (!($interfaceIsEqual(err$1, $ifaceNil))) { $s = 2; continue; }
  54635. /* */ $s = 3; continue;
  54636. /* if (!($interfaceIsEqual(err$1, $ifaceNil))) { */ case 2:
  54637. _tmp = $ifaceNil; _tmp$1 = err$1; key = _tmp; err = _tmp$1;
  54638. return [key, err];
  54639. /* } */ case 3:
  54640. /* */ if (privKey[0].Algo.Algorithm.Equal(oidPublicKeyRSA)) { $s = 4; continue; }
  54641. /* */ if (privKey[0].Algo.Algorithm.Equal(oidPublicKeyECDSA)) { $s = 5; continue; }
  54642. /* */ $s = 6; continue;
  54643. /* if (privKey[0].Algo.Algorithm.Equal(oidPublicKeyRSA)) { */ case 4:
  54644. _r$1 = ParsePKCS1PrivateKey(privKey[0].PrivateKey); /* */ $s = 8; case 8: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  54645. _tuple$1 = _r$1; key = _tuple$1[0]; err = _tuple$1[1];
  54646. /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 9; continue; }
  54647. /* */ $s = 10; continue;
  54648. /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 9:
  54649. _r$2 = err.Error(); /* */ $s = 11; case 11: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  54650. _r$3 = errors.New("x509: failed to parse RSA private key embedded in PKCS#8: " + _r$2); /* */ $s = 12; case 12: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  54651. _tmp$2 = $ifaceNil; _tmp$3 = _r$3; key = _tmp$2; err = _tmp$3;
  54652. return [key, err];
  54653. /* } */ case 10:
  54654. _tmp$4 = key; _tmp$5 = $ifaceNil; key = _tmp$4; err = _tmp$5;
  54655. return [key, err];
  54656. $s = 7; continue;
  54657. /* } else if (privKey[0].Algo.Algorithm.Equal(oidPublicKeyECDSA)) { */ case 5:
  54658. bytes$1 = privKey[0].Algo.Parameters.FullBytes;
  54659. namedCurveOID = $newDataPointer(asn1.ObjectIdentifier.nil, ptrType$6);
  54660. _r$4 = asn1.Unmarshal(bytes$1, namedCurveOID); /* */ $s = 13; case 13: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
  54661. _tuple$2 = _r$4; err$2 = _tuple$2[1];
  54662. /* */ if (!($interfaceIsEqual(err$2, $ifaceNil))) { $s = 14; continue; }
  54663. /* */ $s = 15; continue;
  54664. /* if (!($interfaceIsEqual(err$2, $ifaceNil))) { */ case 14:
  54665. namedCurveOID = ptrType$6.nil;
  54666. /* } */ case 15:
  54667. _r$5 = parseECPrivateKey(namedCurveOID, privKey[0].PrivateKey); /* */ $s = 16; case 16: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
  54668. _tuple$3 = _r$5; key = _tuple$3[0]; err = _tuple$3[1];
  54669. /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 17; continue; }
  54670. /* */ $s = 18; continue;
  54671. /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 17:
  54672. _r$6 = err.Error(); /* */ $s = 19; case 19: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
  54673. _r$7 = errors.New("x509: failed to parse EC private key embedded in PKCS#8: " + _r$6); /* */ $s = 20; case 20: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
  54674. _tmp$6 = $ifaceNil; _tmp$7 = _r$7; key = _tmp$6; err = _tmp$7;
  54675. return [key, err];
  54676. /* } */ case 18:
  54677. _tmp$8 = key; _tmp$9 = $ifaceNil; key = _tmp$8; err = _tmp$9;
  54678. return [key, err];
  54679. $s = 7; continue;
  54680. /* } else { */ case 6:
  54681. _r$8 = fmt.Errorf("x509: PKCS#8 wrapping contained private key with unknown algorithm: %v", new sliceType$5([privKey[0].Algo.Algorithm])); /* */ $s = 21; case 21: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
  54682. _tmp$10 = $ifaceNil; _tmp$11 = _r$8; key = _tmp$10; err = _tmp$11;
  54683. return [key, err];
  54684. /* } */ case 7:
  54685. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: ParsePKCS8PrivateKey }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$10 = _tmp$10; $f._tmp$11 = _tmp$11; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tmp$6 = _tmp$6; $f._tmp$7 = _tmp$7; $f._tmp$8 = _tmp$8; $f._tmp$9 = _tmp$9; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f.bytes$1 = bytes$1; $f.der = der; $f.err = err; $f.err$1 = err$1; $f.err$2 = err$2; $f.key = key; $f.namedCurveOID = namedCurveOID; $f.privKey = privKey; $f.$s = $s; $f.$r = $r; return $f;
  54686. };
  54687. $pkg.ParsePKCS8PrivateKey = ParsePKCS8PrivateKey;
  54688. systemRootsPool = function() {
  54689. var $ptr, $s, $r;
  54690. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  54691. $r = once.Do(initSystemRoots); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  54692. return systemRoots;
  54693. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: systemRootsPool }; } $f.$ptr = $ptr; $f.$s = $s; $f.$r = $r; return $f;
  54694. };
  54695. createStoreContext = function(leaf, opts) {
  54696. var $ptr, _i, _ref, _tuple, _tuple$1, _tuple$2, ctx, err, err$1, handle, intermediate, leaf, leafCtx, opts, storeCtx, storeCtx_ptr, x, x$1, $deferred;
  54697. /* */ var $err = null; try { $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
  54698. storeCtx = ptrType$7.nil;
  54699. _tuple = syscall.CertCreateCertificateContext(65537, (x = leaf.Raw, $indexPtr(x.$array, x.$offset + 0, ptrType$8)), (leaf.Raw.$length >>> 0)); leafCtx = _tuple[0]; err = _tuple[1];
  54700. if (!($interfaceIsEqual(err, $ifaceNil))) {
  54701. return [ptrType$7.nil, err];
  54702. }
  54703. $deferred.push([syscall.CertFreeCertificateContext, [leafCtx]]);
  54704. _tuple$1 = syscall.CertOpenStore(2, 0, 0, 4, 0); handle = _tuple$1[0]; err = _tuple$1[1];
  54705. if (!($interfaceIsEqual(err, $ifaceNil))) {
  54706. return [ptrType$7.nil, err];
  54707. }
  54708. $deferred.push([syscall.CertCloseStore, [handle, 0]]);
  54709. err = syscall.CertAddCertificateContextToStore(handle, leafCtx, 4, (storeCtx_ptr || (storeCtx_ptr = new ptrType$9(function() { return storeCtx; }, function($v) { storeCtx = $v; }))));
  54710. if (!($interfaceIsEqual(err, $ifaceNil))) {
  54711. return [ptrType$7.nil, err];
  54712. }
  54713. if (!(opts.Intermediates === ptrType.nil)) {
  54714. _ref = opts.Intermediates.certs;
  54715. _i = 0;
  54716. while (true) {
  54717. if (!(_i < _ref.$length)) { break; }
  54718. intermediate = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]);
  54719. _tuple$2 = syscall.CertCreateCertificateContext(65537, (x$1 = intermediate.Raw, $indexPtr(x$1.$array, x$1.$offset + 0, ptrType$8)), (intermediate.Raw.$length >>> 0)); ctx = _tuple$2[0]; err$1 = _tuple$2[1];
  54720. if (!($interfaceIsEqual(err$1, $ifaceNil))) {
  54721. return [ptrType$7.nil, err$1];
  54722. }
  54723. err$1 = syscall.CertAddCertificateContextToStore(handle, ctx, 4, ptrType$9.nil);
  54724. syscall.CertFreeCertificateContext(ctx);
  54725. if (!($interfaceIsEqual(err$1, $ifaceNil))) {
  54726. return [ptrType$7.nil, err$1];
  54727. }
  54728. _i++;
  54729. }
  54730. }
  54731. return [storeCtx, $ifaceNil];
  54732. /* */ } catch(err) { $err = err; return [ptrType$7.nil, $ifaceNil]; } finally { $callDeferred($deferred, $err); }
  54733. };
  54734. extractSimpleChain = function(simpleChain, count) {
  54735. var $ptr, _r, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tuple, buf, cert, chain, count, elements, encodedCert, err, err$1, i, lastChain, parsedCert, simpleChain, simpleChains, x, $s, $r;
  54736. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tuple = $f._tuple; buf = $f.buf; cert = $f.cert; chain = $f.chain; count = $f.count; elements = $f.elements; encodedCert = $f.encodedCert; err = $f.err; err$1 = $f.err$1; i = $f.i; lastChain = $f.lastChain; parsedCert = $f.parsedCert; simpleChain = $f.simpleChain; simpleChains = $f.simpleChains; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  54737. chain = sliceType$6.nil;
  54738. err = $ifaceNil;
  54739. if (simpleChain === ptrType$11.nil || (count === 0)) {
  54740. _tmp = sliceType$6.nil; _tmp$1 = errors.New("x509: invalid simple chain"); chain = _tmp; err = _tmp$1;
  54741. return [chain, err];
  54742. }
  54743. simpleChains = new sliceType$10(simpleChain);
  54744. lastChain = (x = count - 1 >> 0, ((x < 0 || x >= simpleChains.$length) ? $throwRuntimeError("index out of range") : simpleChains.$array[simpleChains.$offset + x]));
  54745. elements = new sliceType$11(lastChain.Elements);
  54746. i = 0;
  54747. /* while (true) { */ case 1:
  54748. /* if (!(i < (lastChain.NumElements >> 0))) { break; } */ if(!(i < (lastChain.NumElements >> 0))) { $s = 2; continue; }
  54749. cert = ((i < 0 || i >= elements.$length) ? $throwRuntimeError("index out of range") : elements.$array[elements.$offset + i]).CertContext;
  54750. encodedCert = new sliceType$3(cert.EncodedCert);
  54751. buf = $makeSlice(sliceType$3, cert.Length);
  54752. $copySlice(buf, encodedCert);
  54753. _r = ParseCertificate(buf); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  54754. _tuple = _r; parsedCert = _tuple[0]; err$1 = _tuple[1];
  54755. if (!($interfaceIsEqual(err$1, $ifaceNil))) {
  54756. _tmp$2 = sliceType$6.nil; _tmp$3 = err$1; chain = _tmp$2; err = _tmp$3;
  54757. return [chain, err];
  54758. }
  54759. chain = $append(chain, parsedCert);
  54760. i = i + (1) >> 0;
  54761. /* } */ $s = 1; continue; case 2:
  54762. _tmp$4 = chain; _tmp$5 = $ifaceNil; chain = _tmp$4; err = _tmp$5;
  54763. return [chain, err];
  54764. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: extractSimpleChain }; } $f.$ptr = $ptr; $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tuple = _tuple; $f.buf = buf; $f.cert = cert; $f.chain = chain; $f.count = count; $f.elements = elements; $f.encodedCert = encodedCert; $f.err = err; $f.err$1 = err$1; $f.i = i; $f.lastChain = lastChain; $f.parsedCert = parsedCert; $f.simpleChain = simpleChain; $f.simpleChains = simpleChains; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
  54765. };
  54766. checkChainTrustStatus = function(c, chainCtx) {
  54767. var $ptr, _ref, c, chainCtx, status, x, x$1;
  54768. if (!((chainCtx.TrustStatus.ErrorStatus === 0))) {
  54769. status = chainCtx.TrustStatus.ErrorStatus;
  54770. _ref = status;
  54771. if (_ref === 1) {
  54772. return (x = new CertificateInvalidError.ptr(c, 1), new x.constructor.elem(x));
  54773. } else {
  54774. return (x$1 = new UnknownAuthorityError.ptr(c, $ifaceNil, ptrType$1.nil), new x$1.constructor.elem(x$1));
  54775. }
  54776. }
  54777. return $ifaceNil;
  54778. };
  54779. checkChainSSLServerPolicy = function(c, chainCtx, opts) {
  54780. var $ptr, _ref, _tuple, c, chainCtx, err, opts, para, servernamep, sslPara, status, x, x$1, x$2, x$3;
  54781. _tuple = syscall.UTF16PtrFromString(opts.DNSName); servernamep = _tuple[0]; err = _tuple[1];
  54782. if (!($interfaceIsEqual(err, $ifaceNil))) {
  54783. return err;
  54784. }
  54785. sslPara = new syscall.SSLExtraCertChainPolicyPara.ptr(0, 2, 0, servernamep);
  54786. sslPara.Size = 16;
  54787. para = new syscall.CertChainPolicyPara.ptr(0, 0, sslPara);
  54788. para.Size = 12;
  54789. status = new syscall.CertChainPolicyStatus.ptr(0, 0, 0, 0, 0);
  54790. err = syscall.CertVerifyCertificateChainPolicy(4, chainCtx, para, status);
  54791. if (!($interfaceIsEqual(err, $ifaceNil))) {
  54792. return err;
  54793. }
  54794. if (!((status.Error === 0))) {
  54795. _ref = status.Error;
  54796. if (_ref === 2148204801) {
  54797. return (x = new CertificateInvalidError.ptr(c, 1), new x.constructor.elem(x));
  54798. } else if (_ref === 2148204815) {
  54799. return (x$1 = new HostnameError.ptr(c, opts.DNSName), new x$1.constructor.elem(x$1));
  54800. } else if (_ref === 2148204809) {
  54801. return (x$2 = new UnknownAuthorityError.ptr(c, $ifaceNil, ptrType$1.nil), new x$2.constructor.elem(x$2));
  54802. } else {
  54803. return (x$3 = new UnknownAuthorityError.ptr(c, $ifaceNil, ptrType$1.nil), new x$3.constructor.elem(x$3));
  54804. }
  54805. }
  54806. return $ifaceNil;
  54807. };
  54808. Certificate.ptr.prototype.systemVerify = function(opts) {
  54809. var $ptr, _r, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, c, chain, chainCtx, chains, err, ft, hasDNSName, oids, opts, para, storeCtx, verifyTime, x, x$1, x$2, $s, $deferred, $r;
  54810. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$10 = $f._tmp$10; _tmp$11 = $f._tmp$11; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tmp$6 = $f._tmp$6; _tmp$7 = $f._tmp$7; _tmp$8 = $f._tmp$8; _tmp$9 = $f._tmp$9; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; c = $f.c; chain = $f.chain; chainCtx = $f.chainCtx; chains = $f.chains; err = $f.err; ft = $f.ft; hasDNSName = $f.hasDNSName; oids = $f.oids; opts = $f.opts; para = $f.para; storeCtx = $f.storeCtx; verifyTime = $f.verifyTime; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
  54811. chainCtx = [chainCtx];
  54812. ft = [ft];
  54813. chains = sliceType$12.nil;
  54814. err = $ifaceNil;
  54815. c = this;
  54816. hasDNSName = !(opts === ptrType$14.nil) && opts.DNSName.length > 0;
  54817. _tuple = createStoreContext(c, opts); storeCtx = _tuple[0]; err = _tuple[1];
  54818. if (!($interfaceIsEqual(err, $ifaceNil))) {
  54819. _tmp = sliceType$12.nil; _tmp$1 = err; chains = _tmp; err = _tmp$1;
  54820. return [chains, err];
  54821. }
  54822. $deferred.push([syscall.CertFreeCertificateContext, [storeCtx]]);
  54823. para = new syscall.CertChainPara.ptr();
  54824. para.Size = 44;
  54825. if (hasDNSName) {
  54826. oids = new sliceType$13([(x = syscall.OID_PKIX_KP_SERVER_AUTH, $indexPtr(x.$array, x.$offset + 0, ptrType$8)), (x$1 = syscall.OID_SERVER_GATED_CRYPTO, $indexPtr(x$1.$array, x$1.$offset + 0, ptrType$8)), (x$2 = syscall.OID_SGC_NETSCAPE, $indexPtr(x$2.$array, x$2.$offset + 0, ptrType$8))]);
  54827. para.RequestedUsage.Type = 1;
  54828. para.RequestedUsage.Usage.Length = (oids.$length >>> 0);
  54829. para.RequestedUsage.Usage.UsageIdentifiers = $indexPtr(oids.$array, oids.$offset + 0, ptrType$15);
  54830. } else {
  54831. para.RequestedUsage.Type = 0;
  54832. para.RequestedUsage.Usage.Length = 0;
  54833. para.RequestedUsage.Usage.UsageIdentifiers = ptrType$15.nil;
  54834. }
  54835. verifyTime = ptrType$16.nil;
  54836. if (!(opts === ptrType$14.nil) && !opts.CurrentTime.IsZero()) {
  54837. ft[0] = $clone(syscall.NsecToFiletime(opts.CurrentTime.UnixNano()), syscall.Filetime);
  54838. verifyTime = ft[0];
  54839. }
  54840. chainCtx[0] = ptrType$17.nil;
  54841. err = syscall.CertGetCertificateChain(0, storeCtx, verifyTime, storeCtx.Store, para, 0, 0, (chainCtx.$ptr || (chainCtx.$ptr = new ptrType$18(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, chainCtx))));
  54842. if (!($interfaceIsEqual(err, $ifaceNil))) {
  54843. _tmp$2 = sliceType$12.nil; _tmp$3 = err; chains = _tmp$2; err = _tmp$3;
  54844. return [chains, err];
  54845. }
  54846. $deferred.push([syscall.CertFreeCertificateChain, [chainCtx[0]]]);
  54847. err = checkChainTrustStatus(c, chainCtx[0]);
  54848. if (!($interfaceIsEqual(err, $ifaceNil))) {
  54849. _tmp$4 = sliceType$12.nil; _tmp$5 = err; chains = _tmp$4; err = _tmp$5;
  54850. return [chains, err];
  54851. }
  54852. if (hasDNSName) {
  54853. err = checkChainSSLServerPolicy(c, chainCtx[0], opts);
  54854. if (!($interfaceIsEqual(err, $ifaceNil))) {
  54855. _tmp$6 = sliceType$12.nil; _tmp$7 = err; chains = _tmp$6; err = _tmp$7;
  54856. return [chains, err];
  54857. }
  54858. }
  54859. _r = extractSimpleChain(chainCtx[0].Chains, (chainCtx[0].ChainCount >> 0)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  54860. _tuple$1 = _r; chain = _tuple$1[0]; err = _tuple$1[1];
  54861. if (!($interfaceIsEqual(err, $ifaceNil))) {
  54862. _tmp$8 = sliceType$12.nil; _tmp$9 = err; chains = _tmp$8; err = _tmp$9;
  54863. return [chains, err];
  54864. }
  54865. chains = $append(chains, chain);
  54866. _tmp$10 = chains; _tmp$11 = $ifaceNil; chains = _tmp$10; err = _tmp$11;
  54867. return [chains, err];
  54868. /* */ $s = -1; case -1: } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if (!$curGoroutine.asleep) { return [chains, err]; } if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: Certificate.ptr.prototype.systemVerify }; } $f.$ptr = $ptr; $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$10 = _tmp$10; $f._tmp$11 = _tmp$11; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tmp$6 = _tmp$6; $f._tmp$7 = _tmp$7; $f._tmp$8 = _tmp$8; $f._tmp$9 = _tmp$9; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.c = c; $f.chain = chain; $f.chainCtx = chainCtx; $f.chains = chains; $f.err = err; $f.ft = ft; $f.hasDNSName = hasDNSName; $f.oids = oids; $f.opts = opts; $f.para = para; $f.storeCtx = storeCtx; $f.verifyTime = verifyTime; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
  54869. };
  54870. Certificate.prototype.systemVerify = function(opts) { return this.$val.systemVerify(opts); };
  54871. ParseECPrivateKey = function(der) {
  54872. var $ptr, _r, _tuple, der, err, key, $s, $r;
  54873. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tuple = $f._tuple; der = $f.der; err = $f.err; key = $f.key; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  54874. key = ptrType$19.nil;
  54875. err = $ifaceNil;
  54876. _r = parseECPrivateKey(ptrType$6.nil, der); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  54877. _tuple = _r; key = _tuple[0]; err = _tuple[1];
  54878. return [key, err];
  54879. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: ParseECPrivateKey }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple = _tuple; $f.der = der; $f.err = err; $f.key = key; $f.$s = $s; $f.$r = $r; return $f;
  54880. };
  54881. $pkg.ParseECPrivateKey = ParseECPrivateKey;
  54882. parseECPrivateKey = function(namedCurveOID, der) {
  54883. var $ptr, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, curve, der, err, err$1, k, key, namedCurveOID, priv, privKey, $s, $r;
  54884. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tmp$6 = $f._tmp$6; _tmp$7 = $f._tmp$7; _tmp$8 = $f._tmp$8; _tmp$9 = $f._tmp$9; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; curve = $f.curve; der = $f.der; err = $f.err; err$1 = $f.err$1; k = $f.k; key = $f.key; namedCurveOID = $f.namedCurveOID; priv = $f.priv; privKey = $f.privKey; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  54885. privKey = [privKey];
  54886. key = ptrType$19.nil;
  54887. err = $ifaceNil;
  54888. privKey[0] = $clone(new ecPrivateKey.ptr(), ecPrivateKey);
  54889. _r = asn1.Unmarshal(der, privKey[0]); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  54890. _tuple = _r; err$1 = _tuple[1];
  54891. /* */ if (!($interfaceIsEqual(err$1, $ifaceNil))) { $s = 2; continue; }
  54892. /* */ $s = 3; continue;
  54893. /* if (!($interfaceIsEqual(err$1, $ifaceNil))) { */ case 2:
  54894. _r$1 = err$1.Error(); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  54895. _r$2 = errors.New("x509: failed to parse EC private key: " + _r$1); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  54896. _tmp = ptrType$19.nil; _tmp$1 = _r$2; key = _tmp; err = _tmp$1;
  54897. return [key, err];
  54898. /* } */ case 3:
  54899. /* */ if (!((privKey[0].Version === 1))) { $s = 6; continue; }
  54900. /* */ $s = 7; continue;
  54901. /* if (!((privKey[0].Version === 1))) { */ case 6:
  54902. _r$3 = fmt.Errorf("x509: unknown EC private key version %d", new sliceType$5([new $Int(privKey[0].Version)])); /* */ $s = 8; case 8: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  54903. _tmp$2 = ptrType$19.nil; _tmp$3 = _r$3; key = _tmp$2; err = _tmp$3;
  54904. return [key, err];
  54905. /* } */ case 7:
  54906. curve = $ifaceNil;
  54907. /* */ if (!(namedCurveOID === ptrType$6.nil)) { $s = 9; continue; }
  54908. /* */ $s = 10; continue;
  54909. /* if (!(namedCurveOID === ptrType$6.nil)) { */ case 9:
  54910. _r$4 = namedCurveFromOID(namedCurveOID.$get()); /* */ $s = 12; case 12: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
  54911. curve = _r$4;
  54912. $s = 11; continue;
  54913. /* } else { */ case 10:
  54914. _r$5 = namedCurveFromOID(privKey[0].NamedCurveOID); /* */ $s = 13; case 13: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
  54915. curve = _r$5;
  54916. /* } */ case 11:
  54917. if ($interfaceIsEqual(curve, $ifaceNil)) {
  54918. _tmp$4 = ptrType$19.nil; _tmp$5 = errors.New("x509: unknown elliptic curve"); key = _tmp$4; err = _tmp$5;
  54919. return [key, err];
  54920. }
  54921. k = new big.Int.ptr().SetBytes(privKey[0].PrivateKey);
  54922. _r$6 = curve.Params(); /* */ $s = 16; case 16: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
  54923. _r$7 = k.Cmp(_r$6.N); /* */ $s = 17; case 17: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
  54924. /* */ if (_r$7 >= 0) { $s = 14; continue; }
  54925. /* */ $s = 15; continue;
  54926. /* if (_r$7 >= 0) { */ case 14:
  54927. _tmp$6 = ptrType$19.nil; _tmp$7 = errors.New("x509: invalid elliptic curve private key value"); key = _tmp$6; err = _tmp$7;
  54928. return [key, err];
  54929. /* } */ case 15:
  54930. priv = new ecdsa.PrivateKey.ptr();
  54931. priv.PublicKey.Curve = curve;
  54932. priv.D = k;
  54933. _r$8 = curve.ScalarBaseMult(privKey[0].PrivateKey); /* */ $s = 18; case 18: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
  54934. _tuple$1 = _r$8; priv.PublicKey.X = _tuple$1[0]; priv.PublicKey.Y = _tuple$1[1];
  54935. _tmp$8 = priv; _tmp$9 = $ifaceNil; key = _tmp$8; err = _tmp$9;
  54936. return [key, err];
  54937. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: parseECPrivateKey }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tmp$6 = _tmp$6; $f._tmp$7 = _tmp$7; $f._tmp$8 = _tmp$8; $f._tmp$9 = _tmp$9; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.curve = curve; $f.der = der; $f.err = err; $f.err$1 = err$1; $f.k = k; $f.key = key; $f.namedCurveOID = namedCurveOID; $f.priv = priv; $f.privKey = privKey; $f.$s = $s; $f.$r = $r; return $f;
  54938. };
  54939. CertificateInvalidError.ptr.prototype.Error = function() {
  54940. var $ptr, _ref, e;
  54941. e = $clone(this, CertificateInvalidError);
  54942. _ref = e.Reason;
  54943. if (_ref === 0) {
  54944. return "x509: certificate is not authorized to sign other certificates";
  54945. } else if (_ref === 1) {
  54946. return "x509: certificate has expired or is not yet valid";
  54947. } else if (_ref === 2) {
  54948. return "x509: a root or intermediate certificate is not authorized to sign in this domain";
  54949. } else if (_ref === 3) {
  54950. return "x509: too many intermediates for path length constraint";
  54951. } else if (_ref === 4) {
  54952. return "x509: certificate specifies an incompatible key usage";
  54953. }
  54954. return "x509: unknown error";
  54955. };
  54956. CertificateInvalidError.prototype.Error = function() { return this.$val.Error(); };
  54957. HostnameError.ptr.prototype.Error = function() {
  54958. var $ptr, _i, _ref, c, h, ip, san, valid;
  54959. h = $clone(this, HostnameError);
  54960. c = h.Certificate;
  54961. valid = "";
  54962. ip = net.ParseIP(h.Host);
  54963. if (!(ip === net.IP.nil)) {
  54964. if (c.IPAddresses.$length === 0) {
  54965. return "x509: cannot validate certificate for " + h.Host + " because it doesn't contain any IP SANs";
  54966. }
  54967. _ref = c.IPAddresses;
  54968. _i = 0;
  54969. while (true) {
  54970. if (!(_i < _ref.$length)) { break; }
  54971. san = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]);
  54972. if (valid.length > 0) {
  54973. valid = valid + (", ");
  54974. }
  54975. valid = valid + (san.String());
  54976. _i++;
  54977. }
  54978. } else {
  54979. if (c.DNSNames.$length > 0) {
  54980. valid = strings.Join(c.DNSNames, ", ");
  54981. } else {
  54982. valid = c.Subject.CommonName;
  54983. }
  54984. }
  54985. return "x509: certificate is valid for " + valid + ", not " + h.Host;
  54986. };
  54987. HostnameError.prototype.Error = function() { return this.$val.Error(); };
  54988. UnknownAuthorityError.ptr.prototype.Error = function() {
  54989. var $ptr, _r, certName, e, s, x, $s, $r;
  54990. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; certName = $f.certName; e = $f.e; s = $f.s; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  54991. e = $clone(this, UnknownAuthorityError);
  54992. s = "x509: certificate signed by unknown authority";
  54993. /* */ if (!($interfaceIsEqual(e.hintErr, $ifaceNil))) { $s = 1; continue; }
  54994. /* */ $s = 2; continue;
  54995. /* if (!($interfaceIsEqual(e.hintErr, $ifaceNil))) { */ case 1:
  54996. certName = e.hintCert.Subject.CommonName;
  54997. if (certName.length === 0) {
  54998. if (e.hintCert.Subject.Organization.$length > 0) {
  54999. certName = (x = e.hintCert.Subject.Organization, (0 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 0]));
  55000. }
  55001. certName = "serial:" + e.hintCert.SerialNumber.String();
  55002. }
  55003. _r = fmt.Sprintf(" (possibly because of %q while trying to verify candidate authority certificate %q)", new sliceType$5([e.hintErr, new $String(certName)])); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  55004. s = s + (_r);
  55005. /* } */ case 2:
  55006. return s;
  55007. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: UnknownAuthorityError.ptr.prototype.Error }; } $f.$ptr = $ptr; $f._r = _r; $f.certName = certName; $f.e = e; $f.s = s; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
  55008. };
  55009. UnknownAuthorityError.prototype.Error = function() { return this.$val.Error(); };
  55010. SystemRootsError.ptr.prototype.Error = function() {
  55011. var $ptr;
  55012. return "x509: failed to load system roots and no roots provided";
  55013. };
  55014. SystemRootsError.prototype.Error = function() { return this.$val.Error(); };
  55015. Certificate.ptr.prototype.isValid = function(certType, currentChain, opts) {
  55016. var $ptr, _i, _ref, c, certType, currentChain, domain, now, numIntermediates, ok, opts, x, x$1, x$2, x$3;
  55017. c = this;
  55018. now = $clone(opts.CurrentTime, time.Time);
  55019. if (now.IsZero()) {
  55020. $copy(now, time.Now(), time.Time);
  55021. }
  55022. if (now.Before(c.NotBefore) || now.After(c.NotAfter)) {
  55023. return (x = new CertificateInvalidError.ptr(c, 1), new x.constructor.elem(x));
  55024. }
  55025. if (c.PermittedDNSDomains.$length > 0) {
  55026. ok = false;
  55027. _ref = c.PermittedDNSDomains;
  55028. _i = 0;
  55029. while (true) {
  55030. if (!(_i < _ref.$length)) { break; }
  55031. domain = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]);
  55032. if (opts.DNSName === domain || (strings.HasSuffix(opts.DNSName, domain) && opts.DNSName.length >= (1 + domain.length >> 0) && (opts.DNSName.charCodeAt(((opts.DNSName.length - domain.length >> 0) - 1 >> 0)) === 46))) {
  55033. ok = true;
  55034. break;
  55035. }
  55036. _i++;
  55037. }
  55038. if (!ok) {
  55039. return (x$1 = new CertificateInvalidError.ptr(c, 2), new x$1.constructor.elem(x$1));
  55040. }
  55041. }
  55042. if ((certType === 1) && (!c.BasicConstraintsValid || !c.IsCA)) {
  55043. return (x$2 = new CertificateInvalidError.ptr(c, 0), new x$2.constructor.elem(x$2));
  55044. }
  55045. if (c.BasicConstraintsValid && c.MaxPathLen >= 0) {
  55046. numIntermediates = currentChain.$length - 1 >> 0;
  55047. if (numIntermediates > c.MaxPathLen) {
  55048. return (x$3 = new CertificateInvalidError.ptr(c, 3), new x$3.constructor.elem(x$3));
  55049. }
  55050. }
  55051. return $ifaceNil;
  55052. };
  55053. Certificate.prototype.isValid = function(certType, currentChain, opts) { return this.$val.isValid(certType, currentChain, opts); };
  55054. Certificate.ptr.prototype.Verify = function(opts) {
  55055. var $ptr, _i, _i$1, _r, _r$1, _r$2, _ref, _ref$1, _tmp, _tmp$1, _tuple, _tuple$1, c, candidate, candidateChains, chains, err, keyUsages, opts, usage, x, x$1, $s, $r;
  55056. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _i = $f._i; _i$1 = $f._i$1; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _ref = $f._ref; _ref$1 = $f._ref$1; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; c = $f.c; candidate = $f.candidate; candidateChains = $f.candidateChains; chains = $f.chains; err = $f.err; keyUsages = $f.keyUsages; opts = $f.opts; usage = $f.usage; x = $f.x; x$1 = $f.x$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  55057. opts = [opts];
  55058. chains = sliceType$12.nil;
  55059. err = $ifaceNil;
  55060. c = this;
  55061. opts[0] = $clone(opts[0], VerifyOptions);
  55062. /* */ if (opts[0].Roots === ptrType.nil && true) { $s = 1; continue; }
  55063. /* */ $s = 2; continue;
  55064. /* if (opts[0].Roots === ptrType.nil && true) { */ case 1:
  55065. _r = c.systemVerify(opts[0]); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  55066. _tuple = _r; chains = _tuple[0]; err = _tuple[1];
  55067. return [chains, err];
  55068. /* } */ case 2:
  55069. /* */ if (opts[0].Roots === ptrType.nil) { $s = 4; continue; }
  55070. /* */ $s = 5; continue;
  55071. /* if (opts[0].Roots === ptrType.nil) { */ case 4:
  55072. _r$1 = systemRootsPool(); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  55073. opts[0].Roots = _r$1;
  55074. if (opts[0].Roots === ptrType.nil) {
  55075. _tmp = sliceType$12.nil; _tmp$1 = (x = new SystemRootsError.ptr(), new x.constructor.elem(x)); chains = _tmp; err = _tmp$1;
  55076. return [chains, err];
  55077. }
  55078. /* } */ case 5:
  55079. err = c.isValid(0, sliceType$6.nil, opts[0]);
  55080. if (!($interfaceIsEqual(err, $ifaceNil))) {
  55081. return [chains, err];
  55082. }
  55083. if (opts[0].DNSName.length > 0) {
  55084. err = c.VerifyHostname(opts[0].DNSName);
  55085. if (!($interfaceIsEqual(err, $ifaceNil))) {
  55086. return [chains, err];
  55087. }
  55088. }
  55089. _r$2 = c.buildChains(new $Map(), new sliceType$6([c]), opts[0]); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  55090. _tuple$1 = _r$2; candidateChains = _tuple$1[0]; err = _tuple$1[1];
  55091. if (!($interfaceIsEqual(err, $ifaceNil))) {
  55092. return [chains, err];
  55093. }
  55094. keyUsages = opts[0].KeyUsages;
  55095. if (keyUsages.$length === 0) {
  55096. keyUsages = new sliceType$14([1]);
  55097. }
  55098. _ref = keyUsages;
  55099. _i = 0;
  55100. while (true) {
  55101. if (!(_i < _ref.$length)) { break; }
  55102. usage = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]);
  55103. if (usage === 0) {
  55104. chains = candidateChains;
  55105. return [chains, err];
  55106. }
  55107. _i++;
  55108. }
  55109. _ref$1 = candidateChains;
  55110. _i$1 = 0;
  55111. while (true) {
  55112. if (!(_i$1 < _ref$1.$length)) { break; }
  55113. candidate = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? $throwRuntimeError("index out of range") : _ref$1.$array[_ref$1.$offset + _i$1]);
  55114. if (checkChainForKeyUsage(candidate, keyUsages)) {
  55115. chains = $append(chains, candidate);
  55116. }
  55117. _i$1++;
  55118. }
  55119. if (chains.$length === 0) {
  55120. err = (x$1 = new CertificateInvalidError.ptr(c, 4), new x$1.constructor.elem(x$1));
  55121. }
  55122. return [chains, err];
  55123. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Certificate.ptr.prototype.Verify }; } $f.$ptr = $ptr; $f._i = _i; $f._i$1 = _i$1; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._ref = _ref; $f._ref$1 = _ref$1; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.c = c; $f.candidate = candidate; $f.candidateChains = candidateChains; $f.chains = chains; $f.err = err; $f.keyUsages = keyUsages; $f.opts = opts; $f.usage = usage; $f.x = x; $f.x$1 = x$1; $f.$s = $s; $f.$r = $r; return $f;
  55124. };
  55125. Certificate.prototype.Verify = function(opts) { return this.$val.Verify(opts); };
  55126. appendToFreshChain = function(chain, cert) {
  55127. var $ptr, cert, chain, n, x;
  55128. n = $makeSlice(sliceType$6, (chain.$length + 1 >> 0));
  55129. $copySlice(n, chain);
  55130. (x = chain.$length, ((x < 0 || x >= n.$length) ? $throwRuntimeError("index out of range") : n.$array[n.$offset + x] = cert));
  55131. return n;
  55132. };
  55133. Certificate.ptr.prototype.buildChains = function(cache, currentChain, opts) {
  55134. var $ptr, _entry, _i, _i$1, _i$2, _key, _r, _r$1, _r$2, _ref, _ref$1, _ref$2, _tuple, _tuple$1, _tuple$2, _tuple$3, c, cache, cert, chains, childChains, currentChain, err, failedIntermediate, failedRoot, hintCert, hintErr, intermediate, intermediateErr, intermediateNum, ok, opts, possibleIntermediates, possibleRoots, root, rootErr, rootNum, x, x$1, x$2, $s, $r;
  55135. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _entry = $f._entry; _i = $f._i; _i$1 = $f._i$1; _i$2 = $f._i$2; _key = $f._key; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _ref = $f._ref; _ref$1 = $f._ref$1; _ref$2 = $f._ref$2; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; c = $f.c; cache = $f.cache; cert = $f.cert; chains = $f.chains; childChains = $f.childChains; currentChain = $f.currentChain; err = $f.err; failedIntermediate = $f.failedIntermediate; failedRoot = $f.failedRoot; hintCert = $f.hintCert; hintErr = $f.hintErr; intermediate = $f.intermediate; intermediateErr = $f.intermediateErr; intermediateNum = $f.intermediateNum; ok = $f.ok; opts = $f.opts; possibleIntermediates = $f.possibleIntermediates; possibleRoots = $f.possibleRoots; root = $f.root; rootErr = $f.rootErr; rootNum = $f.rootNum; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  55136. chains = sliceType$12.nil;
  55137. err = $ifaceNil;
  55138. c = this;
  55139. _r = opts.Roots.findVerifiedParents(c); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  55140. _tuple = _r; possibleRoots = _tuple[0]; failedRoot = _tuple[1]; rootErr = _tuple[2];
  55141. _ref = possibleRoots;
  55142. _i = 0;
  55143. /* while (true) { */ case 2:
  55144. /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 3; continue; }
  55145. rootNum = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]);
  55146. root = (x = opts.Roots.certs, ((rootNum < 0 || rootNum >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + rootNum]));
  55147. err = root.isValid(2, currentChain, opts);
  55148. if (!($interfaceIsEqual(err, $ifaceNil))) {
  55149. _i++;
  55150. /* continue; */ $s = 2; continue;
  55151. }
  55152. chains = $append(chains, appendToFreshChain(currentChain, root));
  55153. _i++;
  55154. /* } */ $s = 2; continue; case 3:
  55155. _r$1 = opts.Intermediates.findVerifiedParents(c); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  55156. _tuple$1 = _r$1; possibleIntermediates = _tuple$1[0]; failedIntermediate = _tuple$1[1]; intermediateErr = _tuple$1[2];
  55157. _ref$1 = possibleIntermediates;
  55158. _i$1 = 0;
  55159. /* while (true) { */ case 5:
  55160. /* if (!(_i$1 < _ref$1.$length)) { break; } */ if(!(_i$1 < _ref$1.$length)) { $s = 6; continue; }
  55161. intermediateNum = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? $throwRuntimeError("index out of range") : _ref$1.$array[_ref$1.$offset + _i$1]);
  55162. intermediate = (x$1 = opts.Intermediates.certs, ((intermediateNum < 0 || intermediateNum >= x$1.$length) ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + intermediateNum]));
  55163. _ref$2 = currentChain;
  55164. _i$2 = 0;
  55165. /* while (true) { */ case 7:
  55166. /* if (!(_i$2 < _ref$2.$length)) { break; } */ if(!(_i$2 < _ref$2.$length)) { $s = 8; continue; }
  55167. cert = ((_i$2 < 0 || _i$2 >= _ref$2.$length) ? $throwRuntimeError("index out of range") : _ref$2.$array[_ref$2.$offset + _i$2]);
  55168. if (cert === intermediate) {
  55169. _i$1++;
  55170. /* continue nextIntermediate; */ $s = 5; continue s;
  55171. }
  55172. _i$2++;
  55173. /* } */ $s = 7; continue; case 8:
  55174. err = intermediate.isValid(1, currentChain, opts);
  55175. /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 9; continue; }
  55176. /* */ $s = 10; continue;
  55177. /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 9:
  55178. _i$1++;
  55179. /* continue; */ $s = 5; continue;
  55180. /* } */ case 10:
  55181. childChains = sliceType$12.nil;
  55182. _tuple$2 = (_entry = cache[intermediateNum], _entry !== undefined ? [_entry.v, true] : [sliceType$12.nil, false]); childChains = _tuple$2[0]; ok = _tuple$2[1];
  55183. /* */ if (!ok) { $s = 11; continue; }
  55184. /* */ $s = 12; continue;
  55185. /* if (!ok) { */ case 11:
  55186. _r$2 = intermediate.buildChains(cache, appendToFreshChain(currentChain, intermediate), opts); /* */ $s = 13; case 13: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  55187. _tuple$3 = _r$2; childChains = _tuple$3[0]; err = _tuple$3[1];
  55188. _key = intermediateNum; (cache || $throwRuntimeError("assignment to entry in nil map"))[_key] = { k: _key, v: childChains };
  55189. /* } */ case 12:
  55190. chains = $appendSlice(chains, childChains);
  55191. _i$1++;
  55192. /* } */ $s = 5; continue; case 6:
  55193. if (chains.$length > 0) {
  55194. err = $ifaceNil;
  55195. }
  55196. if ((chains.$length === 0) && $interfaceIsEqual(err, $ifaceNil)) {
  55197. hintErr = rootErr;
  55198. hintCert = failedRoot;
  55199. if ($interfaceIsEqual(hintErr, $ifaceNil)) {
  55200. hintErr = intermediateErr;
  55201. hintCert = failedIntermediate;
  55202. }
  55203. err = (x$2 = new UnknownAuthorityError.ptr(c, hintErr, hintCert), new x$2.constructor.elem(x$2));
  55204. }
  55205. return [chains, err];
  55206. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Certificate.ptr.prototype.buildChains }; } $f.$ptr = $ptr; $f._entry = _entry; $f._i = _i; $f._i$1 = _i$1; $f._i$2 = _i$2; $f._key = _key; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._ref = _ref; $f._ref$1 = _ref$1; $f._ref$2 = _ref$2; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f.c = c; $f.cache = cache; $f.cert = cert; $f.chains = chains; $f.childChains = childChains; $f.currentChain = currentChain; $f.err = err; $f.failedIntermediate = failedIntermediate; $f.failedRoot = failedRoot; $f.hintCert = hintCert; $f.hintErr = hintErr; $f.intermediate = intermediate; $f.intermediateErr = intermediateErr; $f.intermediateNum = intermediateNum; $f.ok = ok; $f.opts = opts; $f.possibleIntermediates = possibleIntermediates; $f.possibleRoots = possibleRoots; $f.root = root; $f.rootErr = rootErr; $f.rootNum = rootNum; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.$s = $s; $f.$r = $r; return $f;
  55207. };
  55208. Certificate.prototype.buildChains = function(cache, currentChain, opts) { return this.$val.buildChains(cache, currentChain, opts); };
  55209. matchHostnames = function(pattern, host) {
  55210. var $ptr, _i, _ref, host, hostParts, i, pattern, patternPart, patternParts;
  55211. if ((pattern.length === 0) || (host.length === 0)) {
  55212. return false;
  55213. }
  55214. patternParts = strings.Split(pattern, ".");
  55215. hostParts = strings.Split(host, ".");
  55216. if (!((patternParts.$length === hostParts.$length))) {
  55217. return false;
  55218. }
  55219. _ref = patternParts;
  55220. _i = 0;
  55221. while (true) {
  55222. if (!(_i < _ref.$length)) { break; }
  55223. i = _i;
  55224. patternPart = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]);
  55225. if (patternPart === "*") {
  55226. _i++;
  55227. continue;
  55228. }
  55229. if (!(patternPart === ((i < 0 || i >= hostParts.$length) ? $throwRuntimeError("index out of range") : hostParts.$array[hostParts.$offset + i]))) {
  55230. return false;
  55231. }
  55232. _i++;
  55233. }
  55234. return true;
  55235. };
  55236. toLowerCaseASCII = function(in$1) {
  55237. var $ptr, _i, _i$1, _ref, _ref$1, _rune, c, c$1, i, in$1, isAlreadyLowerCase, out;
  55238. isAlreadyLowerCase = true;
  55239. _ref = in$1;
  55240. _i = 0;
  55241. while (true) {
  55242. if (!(_i < _ref.length)) { break; }
  55243. _rune = $decodeRune(_ref, _i);
  55244. c = _rune[0];
  55245. if (c === 65533) {
  55246. isAlreadyLowerCase = false;
  55247. break;
  55248. }
  55249. if (65 <= c && c <= 90) {
  55250. isAlreadyLowerCase = false;
  55251. break;
  55252. }
  55253. _i += _rune[1];
  55254. }
  55255. if (isAlreadyLowerCase) {
  55256. return in$1;
  55257. }
  55258. out = new sliceType$3($stringToBytes(in$1));
  55259. _ref$1 = out;
  55260. _i$1 = 0;
  55261. while (true) {
  55262. if (!(_i$1 < _ref$1.$length)) { break; }
  55263. i = _i$1;
  55264. c$1 = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? $throwRuntimeError("index out of range") : _ref$1.$array[_ref$1.$offset + _i$1]);
  55265. if (65 <= c$1 && c$1 <= 90) {
  55266. ((i < 0 || i >= out.$length) ? $throwRuntimeError("index out of range") : out.$array[out.$offset + i] = ((i < 0 || i >= out.$length) ? $throwRuntimeError("index out of range") : out.$array[out.$offset + i]) + (32) << 24 >>> 24);
  55267. }
  55268. _i$1++;
  55269. }
  55270. return $bytesToString(out);
  55271. };
  55272. Certificate.ptr.prototype.VerifyHostname = function(h) {
  55273. var $ptr, _i, _i$1, _ref, _ref$1, c, candidate, candidateIP, h, ip, lowered, match, x, x$1;
  55274. c = this;
  55275. candidateIP = h;
  55276. if (h.length >= 3 && (h.charCodeAt(0) === 91) && (h.charCodeAt((h.length - 1 >> 0)) === 93)) {
  55277. candidateIP = h.substring(1, (h.length - 1 >> 0));
  55278. }
  55279. ip = net.ParseIP(candidateIP);
  55280. if (!(ip === net.IP.nil)) {
  55281. _ref = c.IPAddresses;
  55282. _i = 0;
  55283. while (true) {
  55284. if (!(_i < _ref.$length)) { break; }
  55285. candidate = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]);
  55286. if (ip.Equal(candidate)) {
  55287. return $ifaceNil;
  55288. }
  55289. _i++;
  55290. }
  55291. return (x = new HostnameError.ptr(c, candidateIP), new x.constructor.elem(x));
  55292. }
  55293. lowered = toLowerCaseASCII(h);
  55294. if (c.DNSNames.$length > 0) {
  55295. _ref$1 = c.DNSNames;
  55296. _i$1 = 0;
  55297. while (true) {
  55298. if (!(_i$1 < _ref$1.$length)) { break; }
  55299. match = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? $throwRuntimeError("index out of range") : _ref$1.$array[_ref$1.$offset + _i$1]);
  55300. if (matchHostnames(toLowerCaseASCII(match), lowered)) {
  55301. return $ifaceNil;
  55302. }
  55303. _i$1++;
  55304. }
  55305. } else if (matchHostnames(toLowerCaseASCII(c.Subject.CommonName), lowered)) {
  55306. return $ifaceNil;
  55307. }
  55308. return (x$1 = new HostnameError.ptr(c, h), new x$1.constructor.elem(x$1));
  55309. };
  55310. Certificate.prototype.VerifyHostname = function(h) { return this.$val.VerifyHostname(h); };
  55311. checkChainForKeyUsage = function(chain, keyUsages) {
  55312. var $ptr, _i, _i$1, _i$2, _ref, _ref$1, _ref$2, cert, chain, i, i$1, keyUsages, requestedUsage, usage, usage$1, usages, usagesRemaining;
  55313. usages = $makeSlice(sliceType$14, keyUsages.$length);
  55314. $copySlice(usages, keyUsages);
  55315. if (chain.$length === 0) {
  55316. return false;
  55317. }
  55318. usagesRemaining = usages.$length;
  55319. i = chain.$length - 1 >> 0;
  55320. NextCert:
  55321. while (true) {
  55322. if (!(i >= 0)) { break; }
  55323. cert = ((i < 0 || i >= chain.$length) ? $throwRuntimeError("index out of range") : chain.$array[chain.$offset + i]);
  55324. if ((cert.ExtKeyUsage.$length === 0) && (cert.UnknownExtKeyUsage.$length === 0)) {
  55325. i = i - (1) >> 0;
  55326. continue;
  55327. }
  55328. _ref = cert.ExtKeyUsage;
  55329. _i = 0;
  55330. while (true) {
  55331. if (!(_i < _ref.$length)) { break; }
  55332. usage = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]);
  55333. if (usage === 0) {
  55334. i = i - (1) >> 0;
  55335. continue NextCert;
  55336. }
  55337. _i++;
  55338. }
  55339. _ref$1 = usages;
  55340. _i$1 = 0;
  55341. NextRequestedUsage:
  55342. while (true) {
  55343. if (!(_i$1 < _ref$1.$length)) { break; }
  55344. i$1 = _i$1;
  55345. requestedUsage = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? $throwRuntimeError("index out of range") : _ref$1.$array[_ref$1.$offset + _i$1]);
  55346. if (requestedUsage === -1) {
  55347. _i$1++;
  55348. continue;
  55349. }
  55350. _ref$2 = cert.ExtKeyUsage;
  55351. _i$2 = 0;
  55352. while (true) {
  55353. if (!(_i$2 < _ref$2.$length)) { break; }
  55354. usage$1 = ((_i$2 < 0 || _i$2 >= _ref$2.$length) ? $throwRuntimeError("index out of range") : _ref$2.$array[_ref$2.$offset + _i$2]);
  55355. if (requestedUsage === usage$1) {
  55356. _i$1++;
  55357. continue NextRequestedUsage;
  55358. } else if ((requestedUsage === 1) && ((usage$1 === 11) || (usage$1 === 10))) {
  55359. _i$1++;
  55360. continue NextRequestedUsage;
  55361. }
  55362. _i$2++;
  55363. }
  55364. ((i$1 < 0 || i$1 >= usages.$length) ? $throwRuntimeError("index out of range") : usages.$array[usages.$offset + i$1] = -1);
  55365. usagesRemaining = usagesRemaining - (1) >> 0;
  55366. if (usagesRemaining === 0) {
  55367. return false;
  55368. }
  55369. _i$1++;
  55370. }
  55371. i = i - (1) >> 0;
  55372. }
  55373. return true;
  55374. };
  55375. getSignatureAlgorithmFromOID = function(oid) {
  55376. var $ptr, _i, _ref, details, oid;
  55377. _ref = signatureAlgorithmDetails;
  55378. _i = 0;
  55379. while (true) {
  55380. if (!(_i < _ref.$length)) { break; }
  55381. details = $clone(((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]), structType);
  55382. if (oid.Equal(details.oid)) {
  55383. return details.algo;
  55384. }
  55385. _i++;
  55386. }
  55387. return 0;
  55388. };
  55389. getPublicKeyAlgorithmFromOID = function(oid) {
  55390. var $ptr, oid;
  55391. if (oid.Equal(oidPublicKeyRSA)) {
  55392. return 1;
  55393. } else if (oid.Equal(oidPublicKeyDSA)) {
  55394. return 2;
  55395. } else if (oid.Equal(oidPublicKeyECDSA)) {
  55396. return 3;
  55397. }
  55398. return 0;
  55399. };
  55400. namedCurveFromOID = function(oid) {
  55401. var $ptr, _r, _r$1, _r$2, _r$3, oid, $s, $r;
  55402. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; oid = $f.oid; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  55403. /* */ if (oid.Equal(oidNamedCurveP224)) { $s = 1; continue; }
  55404. /* */ if (oid.Equal(oidNamedCurveP256)) { $s = 2; continue; }
  55405. /* */ if (oid.Equal(oidNamedCurveP384)) { $s = 3; continue; }
  55406. /* */ if (oid.Equal(oidNamedCurveP521)) { $s = 4; continue; }
  55407. /* */ $s = 5; continue;
  55408. /* if (oid.Equal(oidNamedCurveP224)) { */ case 1:
  55409. _r = elliptic.P224(); /* */ $s = 6; case 6: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  55410. return _r;
  55411. $s = 5; continue;
  55412. /* } else if (oid.Equal(oidNamedCurveP256)) { */ case 2:
  55413. _r$1 = elliptic.P256(); /* */ $s = 7; case 7: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  55414. return _r$1;
  55415. $s = 5; continue;
  55416. /* } else if (oid.Equal(oidNamedCurveP384)) { */ case 3:
  55417. _r$2 = elliptic.P384(); /* */ $s = 8; case 8: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  55418. return _r$2;
  55419. $s = 5; continue;
  55420. /* } else if (oid.Equal(oidNamedCurveP521)) { */ case 4:
  55421. _r$3 = elliptic.P521(); /* */ $s = 9; case 9: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  55422. return _r$3;
  55423. /* } */ case 5:
  55424. return $ifaceNil;
  55425. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: namedCurveFromOID }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f.oid = oid; $f.$s = $s; $f.$r = $r; return $f;
  55426. };
  55427. extKeyUsageFromOID = function(oid) {
  55428. var $ptr, _i, _ref, _tmp, _tmp$1, eku, oid, ok, pair;
  55429. eku = 0;
  55430. ok = false;
  55431. _ref = extKeyUsageOIDs;
  55432. _i = 0;
  55433. while (true) {
  55434. if (!(_i < _ref.$length)) { break; }
  55435. pair = $clone(((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]), structType$1);
  55436. if (oid.Equal(pair.oid)) {
  55437. _tmp = pair.extKeyUsage; _tmp$1 = true; eku = _tmp; ok = _tmp$1;
  55438. return [eku, ok];
  55439. }
  55440. _i++;
  55441. }
  55442. return [eku, ok];
  55443. };
  55444. ConstraintViolationError.ptr.prototype.Error = function() {
  55445. var $ptr;
  55446. return "x509: invalid signature: parent certificate cannot sign this kind of certificate";
  55447. };
  55448. ConstraintViolationError.prototype.Error = function() { return this.$val.Error(); };
  55449. Certificate.ptr.prototype.Equal = function(other) {
  55450. var $ptr, c, other;
  55451. c = this;
  55452. return bytes.Equal(c.Raw, other.Raw);
  55453. };
  55454. Certificate.prototype.Equal = function(other) { return this.$val.Equal(other); };
  55455. Certificate.ptr.prototype.CheckSignatureFrom = function(parent) {
  55456. var $ptr, _r, c, err, parent, x, x$1, $s, $r;
  55457. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; c = $f.c; err = $f.err; parent = $f.parent; x = $f.x; x$1 = $f.x$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  55458. err = $ifaceNil;
  55459. c = this;
  55460. if (((parent.Version === 3) && !parent.BasicConstraintsValid || parent.BasicConstraintsValid && !parent.IsCA) && !bytes.Equal(c.RawSubjectPublicKeyInfo, entrustBrokenSPKI)) {
  55461. err = (x = new ConstraintViolationError.ptr(), new x.constructor.elem(x));
  55462. return err;
  55463. }
  55464. if (!((parent.KeyUsage === 0)) && ((parent.KeyUsage & 32) === 0)) {
  55465. err = (x$1 = new ConstraintViolationError.ptr(), new x$1.constructor.elem(x$1));
  55466. return err;
  55467. }
  55468. if (parent.PublicKeyAlgorithm === 0) {
  55469. err = $pkg.ErrUnsupportedAlgorithm;
  55470. return err;
  55471. }
  55472. _r = parent.CheckSignature(c.SignatureAlgorithm, c.RawTBSCertificate, c.Signature); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  55473. err = _r;
  55474. return err;
  55475. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Certificate.ptr.prototype.CheckSignatureFrom }; } $f.$ptr = $ptr; $f._r = _r; $f.c = c; $f.err = err; $f.parent = parent; $f.x = x; $f.x$1 = x$1; $f.$s = $s; $f.$r = $r; return $f;
  55476. };
  55477. Certificate.prototype.CheckSignatureFrom = function(parent) { return this.$val.CheckSignatureFrom(parent); };
  55478. Certificate.ptr.prototype.CheckSignature = function(algo, signed, signature) {
  55479. var $ptr, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _ref, _ref$1, _tuple, _tuple$1, algo, c, digest, dsaSig, ecdsaSig, err, err$1, err$2, h, hashType, pub, pub$1, pub$2, signature, signed, $s, $r;
  55480. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _ref = $f._ref; _ref$1 = $f._ref$1; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; algo = $f.algo; c = $f.c; digest = $f.digest; dsaSig = $f.dsaSig; ecdsaSig = $f.ecdsaSig; err = $f.err; err$1 = $f.err$1; err$2 = $f.err$2; h = $f.h; hashType = $f.hashType; pub = $f.pub; pub$1 = $f.pub$1; pub$2 = $f.pub$2; signature = $f.signature; signed = $f.signed; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  55481. err = $ifaceNil;
  55482. c = this;
  55483. hashType = 0;
  55484. _ref = algo;
  55485. if (_ref === 3 || _ref === 7 || _ref === 9) {
  55486. hashType = 3;
  55487. } else if (_ref === 4 || _ref === 8 || _ref === 10) {
  55488. hashType = 5;
  55489. } else if (_ref === 5 || _ref === 11) {
  55490. hashType = 6;
  55491. } else if (_ref === 6 || _ref === 12) {
  55492. hashType = 7;
  55493. } else {
  55494. err = $pkg.ErrUnsupportedAlgorithm;
  55495. return err;
  55496. }
  55497. if (!new crypto.Hash(hashType).Available()) {
  55498. err = $pkg.ErrUnsupportedAlgorithm;
  55499. return err;
  55500. }
  55501. _r = new crypto.Hash(hashType).New(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  55502. h = _r;
  55503. _r$1 = h.Write(signed); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  55504. _r$1;
  55505. _r$2 = h.Sum(sliceType$3.nil); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  55506. digest = _r$2;
  55507. _ref$1 = c.PublicKey;
  55508. /* */ if ($assertType(_ref$1, ptrType$20, true)[1]) { $s = 4; continue; }
  55509. /* */ if ($assertType(_ref$1, ptrType$22, true)[1]) { $s = 5; continue; }
  55510. /* */ if ($assertType(_ref$1, ptrType$21, true)[1]) { $s = 6; continue; }
  55511. /* */ $s = 7; continue;
  55512. /* if ($assertType(_ref$1, ptrType$20, true)[1]) { */ case 4:
  55513. pub = _ref$1.$val;
  55514. err = rsa.VerifyPKCS1v15(pub, hashType, digest, signature);
  55515. return err;
  55516. $s = 7; continue;
  55517. /* } else if ($assertType(_ref$1, ptrType$22, true)[1]) { */ case 5:
  55518. pub$1 = _ref$1.$val;
  55519. dsaSig = new dsaSignature.ptr();
  55520. _r$3 = asn1.Unmarshal(signature, dsaSig); /* */ $s = 8; case 8: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  55521. _tuple = _r$3; err$1 = _tuple[1];
  55522. /* */ if (!($interfaceIsEqual(err$1, $ifaceNil))) { $s = 9; continue; }
  55523. /* */ $s = 10; continue;
  55524. /* if (!($interfaceIsEqual(err$1, $ifaceNil))) { */ case 9:
  55525. err = err$1;
  55526. return err;
  55527. /* } */ case 10:
  55528. if (dsaSig.R.Sign() <= 0 || dsaSig.S.Sign() <= 0) {
  55529. err = errors.New("x509: DSA signature contained zero or negative values");
  55530. return err;
  55531. }
  55532. if (!dsa.Verify(pub$1, digest, dsaSig.R, dsaSig.S)) {
  55533. err = errors.New("x509: DSA verification failure");
  55534. return err;
  55535. }
  55536. return err;
  55537. $s = 7; continue;
  55538. /* } else if ($assertType(_ref$1, ptrType$21, true)[1]) { */ case 6:
  55539. pub$2 = _ref$1.$val;
  55540. ecdsaSig = new ecdsaSignature.ptr();
  55541. _r$4 = asn1.Unmarshal(signature, ecdsaSig); /* */ $s = 11; case 11: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
  55542. _tuple$1 = _r$4; err$2 = _tuple$1[1];
  55543. /* */ if (!($interfaceIsEqual(err$2, $ifaceNil))) { $s = 12; continue; }
  55544. /* */ $s = 13; continue;
  55545. /* if (!($interfaceIsEqual(err$2, $ifaceNil))) { */ case 12:
  55546. err = err$2;
  55547. return err;
  55548. /* } */ case 13:
  55549. if (ecdsaSig.R.Sign() <= 0 || ecdsaSig.S.Sign() <= 0) {
  55550. err = errors.New("x509: ECDSA signature contained zero or negative values");
  55551. return err;
  55552. }
  55553. _r$5 = ecdsa.Verify(pub$2, digest, ecdsaSig.R, ecdsaSig.S); /* */ $s = 16; case 16: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
  55554. /* */ if (!_r$5) { $s = 14; continue; }
  55555. /* */ $s = 15; continue;
  55556. /* if (!_r$5) { */ case 14:
  55557. err = errors.New("x509: ECDSA verification failure");
  55558. return err;
  55559. /* } */ case 15:
  55560. return err;
  55561. /* } */ case 7:
  55562. err = $pkg.ErrUnsupportedAlgorithm;
  55563. return err;
  55564. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Certificate.ptr.prototype.CheckSignature }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._ref = _ref; $f._ref$1 = _ref$1; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.algo = algo; $f.c = c; $f.digest = digest; $f.dsaSig = dsaSig; $f.ecdsaSig = ecdsaSig; $f.err = err; $f.err$1 = err$1; $f.err$2 = err$2; $f.h = h; $f.hashType = hashType; $f.pub = pub; $f.pub$1 = pub$1; $f.pub$2 = pub$2; $f.signature = signature; $f.signed = signed; $f.$s = $s; $f.$r = $r; return $f;
  55565. };
  55566. Certificate.prototype.CheckSignature = function(algo, signed, signature) { return this.$val.CheckSignature(algo, signed, signature); };
  55567. Certificate.ptr.prototype.CheckCRLSignature = function(crl) {
  55568. var $ptr, _r, algo, c, crl, err, x, $s, $r;
  55569. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; algo = $f.algo; c = $f.c; crl = $f.crl; err = $f.err; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  55570. err = $ifaceNil;
  55571. c = this;
  55572. algo = getSignatureAlgorithmFromOID(crl.SignatureAlgorithm.Algorithm);
  55573. _r = c.CheckSignature(algo, (x = crl.TBSCertList.Raw, $subslice(new sliceType$3(x.$array), x.$offset, x.$offset + x.$length)), crl.SignatureValue.RightAlign()); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  55574. err = _r;
  55575. return err;
  55576. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Certificate.ptr.prototype.CheckCRLSignature }; } $f.$ptr = $ptr; $f._r = _r; $f.algo = algo; $f.c = c; $f.crl = crl; $f.err = err; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
  55577. };
  55578. Certificate.prototype.CheckCRLSignature = function(crl) { return this.$val.CheckCRLSignature(crl); };
  55579. UnhandledCriticalExtension.ptr.prototype.Error = function() {
  55580. var $ptr, h;
  55581. h = $clone(this, UnhandledCriticalExtension);
  55582. return "x509: unhandled critical extension";
  55583. };
  55584. UnhandledCriticalExtension.prototype.Error = function() { return this.$val.Error(); };
  55585. parsePublicKey = function(algo, keyData) {
  55586. var $ptr, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _ref, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, algo, asn1Data, err, err$1, err$2, keyData, namedCurve, namedCurveOID, p, p$1, params, paramsData, paramsData$1, pub, pub$1, pub$2, x, y, $s, $r;
  55587. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _ref = $f._ref; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; _tuple$4 = $f._tuple$4; algo = $f.algo; asn1Data = $f.asn1Data; err = $f.err; err$1 = $f.err$1; err$2 = $f.err$2; keyData = $f.keyData; namedCurve = $f.namedCurve; namedCurveOID = $f.namedCurveOID; p = $f.p; p$1 = $f.p$1; params = $f.params; paramsData = $f.paramsData; paramsData$1 = $f.paramsData$1; pub = $f.pub; pub$1 = $f.pub$1; pub$2 = $f.pub$2; x = $f.x; y = $f.y; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  55588. p = [p];
  55589. asn1Data = keyData.PublicKey.RightAlign();
  55590. _ref = algo;
  55591. /* */ if (_ref === 1) { $s = 1; continue; }
  55592. /* */ if (_ref === 2) { $s = 2; continue; }
  55593. /* */ if (_ref === 3) { $s = 3; continue; }
  55594. /* */ $s = 4; continue;
  55595. /* if (_ref === 1) { */ case 1:
  55596. p$1 = new rsaPublicKey.ptr();
  55597. _r = asn1.Unmarshal(asn1Data, p$1); /* */ $s = 6; case 6: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  55598. _tuple = _r; err = _tuple[1];
  55599. if (!($interfaceIsEqual(err, $ifaceNil))) {
  55600. return [$ifaceNil, err];
  55601. }
  55602. if (p$1.N.Sign() <= 0) {
  55603. return [$ifaceNil, errors.New("x509: RSA modulus is not a positive number")];
  55604. }
  55605. if (p$1.E <= 0) {
  55606. return [$ifaceNil, errors.New("x509: RSA public exponent is not a positive number")];
  55607. }
  55608. pub = new rsa.PublicKey.ptr(p$1.N, p$1.E);
  55609. return [pub, $ifaceNil];
  55610. $s = 5; continue;
  55611. /* } else if (_ref === 2) { */ case 2:
  55612. p[0] = ptrType$5.nil;
  55613. _r$1 = asn1.Unmarshal(asn1Data, (p.$ptr || (p.$ptr = new ptrType$23(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, p)))); /* */ $s = 7; case 7: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  55614. _tuple$1 = _r$1; err$1 = _tuple$1[1];
  55615. if (!($interfaceIsEqual(err$1, $ifaceNil))) {
  55616. return [$ifaceNil, err$1];
  55617. }
  55618. paramsData = keyData.Algorithm.Parameters.FullBytes;
  55619. params = new dsaAlgorithmParameters.ptr();
  55620. _r$2 = asn1.Unmarshal(paramsData, params); /* */ $s = 8; case 8: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  55621. _tuple$2 = _r$2; err$1 = _tuple$2[1];
  55622. if (!($interfaceIsEqual(err$1, $ifaceNil))) {
  55623. return [$ifaceNil, err$1];
  55624. }
  55625. if (p[0].Sign() <= 0 || params.P.Sign() <= 0 || params.Q.Sign() <= 0 || params.G.Sign() <= 0) {
  55626. return [$ifaceNil, errors.New("x509: zero or negative DSA parameter")];
  55627. }
  55628. pub$1 = new dsa.PublicKey.ptr(new dsa.Parameters.ptr(params.P, params.Q, params.G), p[0]);
  55629. return [pub$1, $ifaceNil];
  55630. $s = 5; continue;
  55631. /* } else if (_ref === 3) { */ case 3:
  55632. paramsData$1 = keyData.Algorithm.Parameters.FullBytes;
  55633. namedCurveOID = $newDataPointer(asn1.ObjectIdentifier.nil, ptrType$6);
  55634. _r$3 = asn1.Unmarshal(paramsData$1, namedCurveOID); /* */ $s = 9; case 9: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  55635. _tuple$3 = _r$3; err$2 = _tuple$3[1];
  55636. if (!($interfaceIsEqual(err$2, $ifaceNil))) {
  55637. return [$ifaceNil, err$2];
  55638. }
  55639. _r$4 = namedCurveFromOID(namedCurveOID.$get()); /* */ $s = 10; case 10: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
  55640. namedCurve = _r$4;
  55641. if ($interfaceIsEqual(namedCurve, $ifaceNil)) {
  55642. return [$ifaceNil, errors.New("x509: unsupported elliptic curve")];
  55643. }
  55644. _r$5 = elliptic.Unmarshal(namedCurve, asn1Data); /* */ $s = 11; case 11: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
  55645. _tuple$4 = _r$5; x = _tuple$4[0]; y = _tuple$4[1];
  55646. if (x === ptrType$5.nil) {
  55647. return [$ifaceNil, errors.New("x509: failed to unmarshal elliptic curve point")];
  55648. }
  55649. pub$2 = new ecdsa.PublicKey.ptr(namedCurve, x, y);
  55650. return [pub$2, $ifaceNil];
  55651. $s = 5; continue;
  55652. /* } else { */ case 4:
  55653. return [$ifaceNil, $ifaceNil];
  55654. /* } */ case 5:
  55655. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: parsePublicKey }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._ref = _ref; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f._tuple$4 = _tuple$4; $f.algo = algo; $f.asn1Data = asn1Data; $f.err = err; $f.err$1 = err$1; $f.err$2 = err$2; $f.keyData = keyData; $f.namedCurve = namedCurve; $f.namedCurveOID = namedCurveOID; $f.p = p; $f.p$1 = p$1; $f.params = params; $f.paramsData = paramsData; $f.paramsData$1 = paramsData$1; $f.pub = pub; $f.pub$1 = pub$1; $f.pub$2 = pub$2; $f.x = x; $f.y = y; $f.$s = $s; $f.$r = $r; return $f;
  55656. };
  55657. parseSANExtension = function(value) {
  55658. var $ptr, _r, _r$1, _ref, _ref$1, _tuple, _tuple$1, dnsNames, emailAddresses, err, ipAddresses, rest, seq, v, value, x, x$1, $s, $r;
  55659. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _ref = $f._ref; _ref$1 = $f._ref$1; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; dnsNames = $f.dnsNames; emailAddresses = $f.emailAddresses; err = $f.err; ipAddresses = $f.ipAddresses; rest = $f.rest; seq = $f.seq; v = $f.v; value = $f.value; x = $f.x; x$1 = $f.x$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  55660. seq = [seq];
  55661. dnsNames = sliceType$15.nil;
  55662. emailAddresses = sliceType$15.nil;
  55663. ipAddresses = sliceType$16.nil;
  55664. err = $ifaceNil;
  55665. seq[0] = $clone(new asn1.RawValue.ptr(), asn1.RawValue);
  55666. _r = asn1.Unmarshal(value, seq[0]); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  55667. _tuple = _r; err = _tuple[1];
  55668. /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 2; continue; }
  55669. /* */ $s = 3; continue;
  55670. /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 2:
  55671. return [dnsNames, emailAddresses, ipAddresses, err];
  55672. /* } */ case 3:
  55673. if (!seq[0].IsCompound || !((seq[0].Tag === 16)) || !((seq[0].Class === 0))) {
  55674. err = (x = new asn1.StructuralError.ptr("bad SAN sequence"), new x.constructor.elem(x));
  55675. return [dnsNames, emailAddresses, ipAddresses, err];
  55676. }
  55677. rest = seq[0].Bytes;
  55678. /* while (true) { */ case 4:
  55679. /* if (!(rest.$length > 0)) { break; } */ if(!(rest.$length > 0)) { $s = 5; continue; }
  55680. v = [v];
  55681. v[0] = $clone(new asn1.RawValue.ptr(), asn1.RawValue);
  55682. _r$1 = asn1.Unmarshal(rest, v[0]); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  55683. _tuple$1 = _r$1; rest = _tuple$1[0]; err = _tuple$1[1];
  55684. if (!($interfaceIsEqual(err, $ifaceNil))) {
  55685. return [dnsNames, emailAddresses, ipAddresses, err];
  55686. }
  55687. _ref = v[0].Tag;
  55688. if (_ref === 1) {
  55689. emailAddresses = $append(emailAddresses, $bytesToString(v[0].Bytes));
  55690. } else if (_ref === 2) {
  55691. dnsNames = $append(dnsNames, $bytesToString(v[0].Bytes));
  55692. } else if (_ref === 7) {
  55693. _ref$1 = v[0].Bytes.$length;
  55694. if (_ref$1 === 4 || _ref$1 === 16) {
  55695. ipAddresses = $append(ipAddresses, (x$1 = v[0].Bytes, $subslice(new net.IP(x$1.$array), x$1.$offset, x$1.$offset + x$1.$length)));
  55696. } else {
  55697. err = errors.New("x509: certificate contained IP address of length " + strconv.Itoa(v[0].Bytes.$length));
  55698. return [dnsNames, emailAddresses, ipAddresses, err];
  55699. }
  55700. }
  55701. /* } */ $s = 4; continue; case 5:
  55702. return [dnsNames, emailAddresses, ipAddresses, err];
  55703. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: parseSANExtension }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._ref = _ref; $f._ref$1 = _ref$1; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.dnsNames = dnsNames; $f.emailAddresses = emailAddresses; $f.err = err; $f.ipAddresses = ipAddresses; $f.rest = rest; $f.seq = seq; $f.v = v; $f.value = value; $f.x = x; $f.x$1 = x$1; $f.$s = $s; $f.$r = $r; return $f;
  55704. };
  55705. parseCertificate = function(in$1) {
  55706. var $ptr, _i, _i$1, _i$2, _i$3, _i$4, _i$5, _r, _r$1, _r$10, _r$11, _r$12, _r$13, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _ref$1, _ref$2, _ref$3, _ref$4, _ref$5, _ref$6, _tmp, _tmp$1, _tuple, _tuple$1, _tuple$10, _tuple$11, _tuple$12, _tuple$13, _tuple$14, _tuple$2, _tuple$3, _tuple$4, _tuple$5, _tuple$6, _tuple$7, _tuple$8, _tuple$9, a, aia, cdp, constraints, constraints$1, dp, e, err, err$1, err$2, err$3, err$4, err$5, err$6, extKeyUsage, i, i$1, in$1, issuer, keyUsage, keyid, n, ok, out, policies, policy, subject, subtree, u, usage, usageBits, v, x, x$1, x$10, x$2, x$3, x$4, x$5, x$6, x$7, x$8, x$9, y, $s, $r;
  55707. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _i = $f._i; _i$1 = $f._i$1; _i$2 = $f._i$2; _i$3 = $f._i$3; _i$4 = $f._i$4; _i$5 = $f._i$5; _r = $f._r; _r$1 = $f._r$1; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$12 = $f._r$12; _r$13 = $f._r$13; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _r$9 = $f._r$9; _ref = $f._ref; _ref$1 = $f._ref$1; _ref$2 = $f._ref$2; _ref$3 = $f._ref$3; _ref$4 = $f._ref$4; _ref$5 = $f._ref$5; _ref$6 = $f._ref$6; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$10 = $f._tuple$10; _tuple$11 = $f._tuple$11; _tuple$12 = $f._tuple$12; _tuple$13 = $f._tuple$13; _tuple$14 = $f._tuple$14; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; _tuple$4 = $f._tuple$4; _tuple$5 = $f._tuple$5; _tuple$6 = $f._tuple$6; _tuple$7 = $f._tuple$7; _tuple$8 = $f._tuple$8; _tuple$9 = $f._tuple$9; a = $f.a; aia = $f.aia; cdp = $f.cdp; constraints = $f.constraints; constraints$1 = $f.constraints$1; dp = $f.dp; e = $f.e; err = $f.err; err$1 = $f.err$1; err$2 = $f.err$2; err$3 = $f.err$3; err$4 = $f.err$4; err$5 = $f.err$5; err$6 = $f.err$6; extKeyUsage = $f.extKeyUsage; i = $f.i; i$1 = $f.i$1; in$1 = $f.in$1; issuer = $f.issuer; keyUsage = $f.keyUsage; keyid = $f.keyid; n = $f.n; ok = $f.ok; out = $f.out; policies = $f.policies; policy = $f.policy; subject = $f.subject; subtree = $f.subtree; u = $f.u; usage = $f.usage; usageBits = $f.usageBits; v = $f.v; x = $f.x; x$1 = $f.x$1; x$10 = $f.x$10; x$2 = $f.x$2; x$3 = $f.x$3; x$4 = $f.x$4; x$5 = $f.x$5; x$6 = $f.x$6; x$7 = $f.x$7; x$8 = $f.x$8; x$9 = $f.x$9; y = $f.y; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  55708. issuer = [issuer];
  55709. subject = [subject];
  55710. out = new Certificate.ptr();
  55711. out.Raw = (x = in$1.Raw, $subslice(new sliceType$3(x.$array), x.$offset, x.$offset + x.$length));
  55712. out.RawTBSCertificate = (x$1 = in$1.TBSCertificate.Raw, $subslice(new sliceType$3(x$1.$array), x$1.$offset, x$1.$offset + x$1.$length));
  55713. out.RawSubjectPublicKeyInfo = (x$2 = in$1.TBSCertificate.PublicKey.Raw, $subslice(new sliceType$3(x$2.$array), x$2.$offset, x$2.$offset + x$2.$length));
  55714. out.RawSubject = in$1.TBSCertificate.Subject.FullBytes;
  55715. out.RawIssuer = in$1.TBSCertificate.Issuer.FullBytes;
  55716. out.Signature = in$1.SignatureValue.RightAlign();
  55717. out.SignatureAlgorithm = getSignatureAlgorithmFromOID(in$1.TBSCertificate.SignatureAlgorithm.Algorithm);
  55718. out.PublicKeyAlgorithm = getPublicKeyAlgorithmFromOID(in$1.TBSCertificate.PublicKey.Algorithm.Algorithm);
  55719. err = $ifaceNil;
  55720. _r = parsePublicKey(out.PublicKeyAlgorithm, in$1.TBSCertificate.PublicKey); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  55721. _tuple = _r; out.PublicKey = _tuple[0]; err = _tuple[1];
  55722. if (!($interfaceIsEqual(err, $ifaceNil))) {
  55723. return [ptrType$1.nil, err];
  55724. }
  55725. if (in$1.TBSCertificate.SerialNumber.Sign() < 0) {
  55726. return [ptrType$1.nil, errors.New("x509: negative serial number")];
  55727. }
  55728. out.Version = in$1.TBSCertificate.Version + 1 >> 0;
  55729. out.SerialNumber = in$1.TBSCertificate.SerialNumber;
  55730. _tmp = pkix.RDNSequence.nil; _tmp$1 = pkix.RDNSequence.nil; issuer[0] = _tmp; subject[0] = _tmp$1;
  55731. _r$1 = asn1.Unmarshal(in$1.TBSCertificate.Subject.FullBytes, (subject.$ptr || (subject.$ptr = new ptrType$24(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, subject)))); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  55732. _tuple$1 = _r$1; err$1 = _tuple$1[1];
  55733. /* */ if (!($interfaceIsEqual(err$1, $ifaceNil))) { $s = 3; continue; }
  55734. /* */ $s = 4; continue;
  55735. /* if (!($interfaceIsEqual(err$1, $ifaceNil))) { */ case 3:
  55736. return [ptrType$1.nil, err$1];
  55737. /* } */ case 4:
  55738. _r$2 = asn1.Unmarshal(in$1.TBSCertificate.Issuer.FullBytes, (issuer.$ptr || (issuer.$ptr = new ptrType$24(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, issuer)))); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  55739. _tuple$2 = _r$2; err$2 = _tuple$2[1];
  55740. /* */ if (!($interfaceIsEqual(err$2, $ifaceNil))) { $s = 6; continue; }
  55741. /* */ $s = 7; continue;
  55742. /* if (!($interfaceIsEqual(err$2, $ifaceNil))) { */ case 6:
  55743. return [ptrType$1.nil, err$2];
  55744. /* } */ case 7:
  55745. out.Issuer.FillFromRDNSequence((issuer.$ptr || (issuer.$ptr = new ptrType$24(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, issuer))));
  55746. out.Subject.FillFromRDNSequence((subject.$ptr || (subject.$ptr = new ptrType$24(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, subject))));
  55747. $copy(out.NotBefore, in$1.TBSCertificate.Validity.NotBefore, time.Time);
  55748. $copy(out.NotAfter, in$1.TBSCertificate.Validity.NotAfter, time.Time);
  55749. _ref = in$1.TBSCertificate.Extensions;
  55750. _i = 0;
  55751. /* while (true) { */ case 8:
  55752. /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 9; continue; }
  55753. a = [a];
  55754. aia = [aia];
  55755. cdp = [cdp];
  55756. constraints = [constraints];
  55757. constraints$1 = [constraints$1];
  55758. keyUsage = [keyUsage];
  55759. keyid = [keyid];
  55760. policies = [policies];
  55761. usageBits = [usageBits];
  55762. e = $clone(((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]), pkix.Extension);
  55763. out.Extensions = $append(out.Extensions, e);
  55764. /* */ if ((e.Id.$length === 4) && ((x$3 = e.Id, (0 >= x$3.$length ? $throwRuntimeError("index out of range") : x$3.$array[x$3.$offset + 0])) === 2) && ((x$4 = e.Id, (1 >= x$4.$length ? $throwRuntimeError("index out of range") : x$4.$array[x$4.$offset + 1])) === 5) && ((x$5 = e.Id, (2 >= x$5.$length ? $throwRuntimeError("index out of range") : x$5.$array[x$5.$offset + 2])) === 29)) { $s = 10; continue; }
  55765. /* */ if (e.Id.Equal($subslice(new asn1.ObjectIdentifier(oidExtensionAuthorityInfoAccess.$array), oidExtensionAuthorityInfoAccess.$offset, oidExtensionAuthorityInfoAccess.$offset + oidExtensionAuthorityInfoAccess.$length))) { $s = 11; continue; }
  55766. /* */ $s = 12; continue;
  55767. /* if ((e.Id.$length === 4) && ((x$3 = e.Id, (0 >= x$3.$length ? $throwRuntimeError("index out of range") : x$3.$array[x$3.$offset + 0])) === 2) && ((x$4 = e.Id, (1 >= x$4.$length ? $throwRuntimeError("index out of range") : x$4.$array[x$4.$offset + 1])) === 5) && ((x$5 = e.Id, (2 >= x$5.$length ? $throwRuntimeError("index out of range") : x$5.$array[x$5.$offset + 2])) === 29)) { */ case 10:
  55768. _ref$1 = (x$6 = e.Id, (3 >= x$6.$length ? $throwRuntimeError("index out of range") : x$6.$array[x$6.$offset + 3]));
  55769. /* */ if (_ref$1 === 15) { $s = 13; continue; }
  55770. /* */ if (_ref$1 === 19) { $s = 14; continue; }
  55771. /* */ if (_ref$1 === 17) { $s = 15; continue; }
  55772. /* */ if (_ref$1 === 30) { $s = 16; continue; }
  55773. /* */ if (_ref$1 === 31) { $s = 17; continue; }
  55774. /* */ if (_ref$1 === 35) { $s = 18; continue; }
  55775. /* */ if (_ref$1 === 37) { $s = 19; continue; }
  55776. /* */ if (_ref$1 === 14) { $s = 20; continue; }
  55777. /* */ if (_ref$1 === 32) { $s = 21; continue; }
  55778. /* */ $s = 22; continue;
  55779. /* if (_ref$1 === 15) { */ case 13:
  55780. usageBits[0] = $clone(new asn1.BitString.ptr(), asn1.BitString);
  55781. _r$3 = asn1.Unmarshal(e.Value, usageBits[0]); /* */ $s = 23; case 23: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  55782. _tuple$3 = _r$3; err$3 = _tuple$3[1];
  55783. if ($interfaceIsEqual(err$3, $ifaceNil)) {
  55784. usage = 0;
  55785. i = 0;
  55786. while (true) {
  55787. if (!(i < 9)) { break; }
  55788. if (!((usageBits[0].At(i) === 0))) {
  55789. usage = usage | (((y = (i >>> 0), y < 32 ? (1 << y) : 0) >> 0));
  55790. }
  55791. i = i + (1) >> 0;
  55792. }
  55793. out.KeyUsage = (usage >> 0);
  55794. _i++;
  55795. /* continue; */ $s = 8; continue;
  55796. }
  55797. $s = 22; continue;
  55798. /* } else if (_ref$1 === 19) { */ case 14:
  55799. constraints$1[0] = $clone(new basicConstraints.ptr(), basicConstraints);
  55800. _r$4 = asn1.Unmarshal(e.Value, constraints$1[0]); /* */ $s = 24; case 24: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
  55801. _tuple$4 = _r$4; err$4 = _tuple$4[1];
  55802. if ($interfaceIsEqual(err$4, $ifaceNil)) {
  55803. out.BasicConstraintsValid = true;
  55804. out.IsCA = constraints$1[0].IsCA;
  55805. out.MaxPathLen = constraints$1[0].MaxPathLen;
  55806. out.MaxPathLenZero = out.MaxPathLen === 0;
  55807. _i++;
  55808. /* continue; */ $s = 8; continue;
  55809. }
  55810. $s = 22; continue;
  55811. /* } else if (_ref$1 === 17) { */ case 15:
  55812. _r$5 = parseSANExtension(e.Value); /* */ $s = 25; case 25: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
  55813. _tuple$5 = _r$5; out.DNSNames = _tuple$5[0]; out.EmailAddresses = _tuple$5[1]; out.IPAddresses = _tuple$5[2]; err = _tuple$5[3];
  55814. if (!($interfaceIsEqual(err, $ifaceNil))) {
  55815. return [ptrType$1.nil, err];
  55816. }
  55817. if (out.DNSNames.$length > 0 || out.EmailAddresses.$length > 0 || out.IPAddresses.$length > 0) {
  55818. _i++;
  55819. /* continue; */ $s = 8; continue;
  55820. }
  55821. $s = 22; continue;
  55822. /* } else if (_ref$1 === 30) { */ case 16:
  55823. constraints[0] = $clone(new nameConstraints.ptr(), nameConstraints);
  55824. _r$6 = asn1.Unmarshal(e.Value, constraints[0]); /* */ $s = 26; case 26: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
  55825. _tuple$6 = _r$6; err$5 = _tuple$6[1];
  55826. if (!($interfaceIsEqual(err$5, $ifaceNil))) {
  55827. return [ptrType$1.nil, err$5];
  55828. }
  55829. if (constraints[0].Excluded.$length > 0 && e.Critical) {
  55830. return [out, (x$7 = new UnhandledCriticalExtension.ptr(), new x$7.constructor.elem(x$7))];
  55831. }
  55832. _ref$2 = constraints[0].Permitted;
  55833. _i$1 = 0;
  55834. /* while (true) { */ case 27:
  55835. /* if (!(_i$1 < _ref$2.$length)) { break; } */ if(!(_i$1 < _ref$2.$length)) { $s = 28; continue; }
  55836. subtree = $clone(((_i$1 < 0 || _i$1 >= _ref$2.$length) ? $throwRuntimeError("index out of range") : _ref$2.$array[_ref$2.$offset + _i$1]), generalSubtree);
  55837. if (subtree.Name.length === 0) {
  55838. if (e.Critical) {
  55839. return [out, (x$8 = new UnhandledCriticalExtension.ptr(), new x$8.constructor.elem(x$8))];
  55840. }
  55841. _i$1++;
  55842. /* continue; */ $s = 27; continue;
  55843. }
  55844. out.PermittedDNSDomains = $append(out.PermittedDNSDomains, subtree.Name);
  55845. _i$1++;
  55846. /* } */ $s = 27; continue; case 28:
  55847. _i++;
  55848. /* continue; */ $s = 8; continue;
  55849. $s = 22; continue;
  55850. /* } else if (_ref$1 === 31) { */ case 17:
  55851. cdp[0] = sliceType$17.nil;
  55852. _r$7 = asn1.Unmarshal(e.Value, (cdp.$ptr || (cdp.$ptr = new ptrType$25(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, cdp)))); /* */ $s = 29; case 29: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
  55853. _tuple$7 = _r$7; err$6 = _tuple$7[1];
  55854. if (!($interfaceIsEqual(err$6, $ifaceNil))) {
  55855. return [ptrType$1.nil, err$6];
  55856. }
  55857. _ref$3 = cdp[0];
  55858. _i$2 = 0;
  55859. /* while (true) { */ case 30:
  55860. /* if (!(_i$2 < _ref$3.$length)) { break; } */ if(!(_i$2 < _ref$3.$length)) { $s = 31; continue; }
  55861. n = [n];
  55862. dp = $clone(((_i$2 < 0 || _i$2 >= _ref$3.$length) ? $throwRuntimeError("index out of range") : _ref$3.$array[_ref$3.$offset + _i$2]), distributionPoint);
  55863. n[0] = $clone(new asn1.RawValue.ptr(), asn1.RawValue);
  55864. _r$8 = asn1.Unmarshal(dp.DistributionPoint.FullName.Bytes, n[0]); /* */ $s = 32; case 32: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
  55865. _tuple$8 = _r$8; err$6 = _tuple$8[1];
  55866. if (!($interfaceIsEqual(err$6, $ifaceNil))) {
  55867. return [ptrType$1.nil, err$6];
  55868. }
  55869. if (n[0].Tag === 6) {
  55870. out.CRLDistributionPoints = $append(out.CRLDistributionPoints, $bytesToString(n[0].Bytes));
  55871. }
  55872. _i$2++;
  55873. /* } */ $s = 30; continue; case 31:
  55874. _i++;
  55875. /* continue; */ $s = 8; continue;
  55876. $s = 22; continue;
  55877. /* } else if (_ref$1 === 35) { */ case 18:
  55878. a[0] = $clone(new authKeyId.ptr(), authKeyId);
  55879. _r$9 = asn1.Unmarshal(e.Value, a[0]); /* */ $s = 33; case 33: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
  55880. _tuple$9 = _r$9; err = _tuple$9[1];
  55881. if (!($interfaceIsEqual(err, $ifaceNil))) {
  55882. return [ptrType$1.nil, err];
  55883. }
  55884. out.AuthorityKeyId = a[0].Id;
  55885. _i++;
  55886. /* continue; */ $s = 8; continue;
  55887. $s = 22; continue;
  55888. /* } else if (_ref$1 === 37) { */ case 19:
  55889. keyUsage[0] = sliceType$18.nil;
  55890. _r$10 = asn1.Unmarshal(e.Value, (keyUsage.$ptr || (keyUsage.$ptr = new ptrType$26(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, keyUsage)))); /* */ $s = 34; case 34: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
  55891. _tuple$10 = _r$10; err = _tuple$10[1];
  55892. if (!($interfaceIsEqual(err, $ifaceNil))) {
  55893. return [ptrType$1.nil, err];
  55894. }
  55895. _ref$4 = keyUsage[0];
  55896. _i$3 = 0;
  55897. while (true) {
  55898. if (!(_i$3 < _ref$4.$length)) { break; }
  55899. u = ((_i$3 < 0 || _i$3 >= _ref$4.$length) ? $throwRuntimeError("index out of range") : _ref$4.$array[_ref$4.$offset + _i$3]);
  55900. _tuple$11 = extKeyUsageFromOID(u); extKeyUsage = _tuple$11[0]; ok = _tuple$11[1];
  55901. if (ok) {
  55902. out.ExtKeyUsage = $append(out.ExtKeyUsage, extKeyUsage);
  55903. } else {
  55904. out.UnknownExtKeyUsage = $append(out.UnknownExtKeyUsage, u);
  55905. }
  55906. _i$3++;
  55907. }
  55908. _i++;
  55909. /* continue; */ $s = 8; continue;
  55910. $s = 22; continue;
  55911. /* } else if (_ref$1 === 14) { */ case 20:
  55912. keyid[0] = sliceType$3.nil;
  55913. _r$11 = asn1.Unmarshal(e.Value, (keyid.$ptr || (keyid.$ptr = new ptrType$27(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, keyid)))); /* */ $s = 35; case 35: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
  55914. _tuple$12 = _r$11; err = _tuple$12[1];
  55915. if (!($interfaceIsEqual(err, $ifaceNil))) {
  55916. return [ptrType$1.nil, err];
  55917. }
  55918. out.SubjectKeyId = keyid[0];
  55919. _i++;
  55920. /* continue; */ $s = 8; continue;
  55921. $s = 22; continue;
  55922. /* } else if (_ref$1 === 32) { */ case 21:
  55923. policies[0] = sliceType$19.nil;
  55924. _r$12 = asn1.Unmarshal(e.Value, (policies.$ptr || (policies.$ptr = new ptrType$28(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, policies)))); /* */ $s = 36; case 36: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; }
  55925. _tuple$13 = _r$12; err = _tuple$13[1];
  55926. /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 37; continue; }
  55927. /* */ $s = 38; continue;
  55928. /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 37:
  55929. return [ptrType$1.nil, err];
  55930. /* } */ case 38:
  55931. out.PolicyIdentifiers = $makeSlice(sliceType$18, policies[0].$length);
  55932. _ref$5 = policies[0];
  55933. _i$4 = 0;
  55934. while (true) {
  55935. if (!(_i$4 < _ref$5.$length)) { break; }
  55936. i$1 = _i$4;
  55937. policy = $clone(((_i$4 < 0 || _i$4 >= _ref$5.$length) ? $throwRuntimeError("index out of range") : _ref$5.$array[_ref$5.$offset + _i$4]), policyInformation);
  55938. (x$9 = out.PolicyIdentifiers, ((i$1 < 0 || i$1 >= x$9.$length) ? $throwRuntimeError("index out of range") : x$9.$array[x$9.$offset + i$1] = policy.Policy));
  55939. _i$4++;
  55940. }
  55941. /* } */ case 22:
  55942. $s = 12; continue;
  55943. /* } else if (e.Id.Equal($subslice(new asn1.ObjectIdentifier(oidExtensionAuthorityInfoAccess.$array), oidExtensionAuthorityInfoAccess.$offset, oidExtensionAuthorityInfoAccess.$offset + oidExtensionAuthorityInfoAccess.$length))) { */ case 11:
  55944. aia[0] = sliceType$20.nil;
  55945. _r$13 = asn1.Unmarshal(e.Value, (aia.$ptr || (aia.$ptr = new ptrType$29(function() { return this.$target[0]; }, function($v) { this.$target[0] = $v; }, aia)))); /* */ $s = 39; case 39: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; }
  55946. _tuple$14 = _r$13; err = _tuple$14[1];
  55947. /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 40; continue; }
  55948. /* */ $s = 41; continue;
  55949. /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 40:
  55950. return [ptrType$1.nil, err];
  55951. /* } */ case 41:
  55952. _ref$6 = aia[0];
  55953. _i$5 = 0;
  55954. while (true) {
  55955. if (!(_i$5 < _ref$6.$length)) { break; }
  55956. v = $clone(((_i$5 < 0 || _i$5 >= _ref$6.$length) ? $throwRuntimeError("index out of range") : _ref$6.$array[_ref$6.$offset + _i$5]), authorityInfoAccess);
  55957. if (!((v.Location.Tag === 6))) {
  55958. _i$5++;
  55959. continue;
  55960. }
  55961. if (v.Method.Equal(oidAuthorityInfoAccessOcsp)) {
  55962. out.OCSPServer = $append(out.OCSPServer, $bytesToString(v.Location.Bytes));
  55963. } else if (v.Method.Equal(oidAuthorityInfoAccessIssuers)) {
  55964. out.IssuingCertificateURL = $append(out.IssuingCertificateURL, $bytesToString(v.Location.Bytes));
  55965. }
  55966. _i$5++;
  55967. }
  55968. /* } */ case 12:
  55969. if (e.Critical) {
  55970. return [out, (x$10 = new UnhandledCriticalExtension.ptr(), new x$10.constructor.elem(x$10))];
  55971. }
  55972. _i++;
  55973. /* } */ $s = 8; continue; case 9:
  55974. return [out, $ifaceNil];
  55975. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: parseCertificate }; } $f.$ptr = $ptr; $f._i = _i; $f._i$1 = _i$1; $f._i$2 = _i$2; $f._i$3 = _i$3; $f._i$4 = _i$4; $f._i$5 = _i$5; $f._r = _r; $f._r$1 = _r$1; $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$12 = _r$12; $f._r$13 = _r$13; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._r$9 = _r$9; $f._ref = _ref; $f._ref$1 = _ref$1; $f._ref$2 = _ref$2; $f._ref$3 = _ref$3; $f._ref$4 = _ref$4; $f._ref$5 = _ref$5; $f._ref$6 = _ref$6; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$10 = _tuple$10; $f._tuple$11 = _tuple$11; $f._tuple$12 = _tuple$12; $f._tuple$13 = _tuple$13; $f._tuple$14 = _tuple$14; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f._tuple$4 = _tuple$4; $f._tuple$5 = _tuple$5; $f._tuple$6 = _tuple$6; $f._tuple$7 = _tuple$7; $f._tuple$8 = _tuple$8; $f._tuple$9 = _tuple$9; $f.a = a; $f.aia = aia; $f.cdp = cdp; $f.constraints = constraints; $f.constraints$1 = constraints$1; $f.dp = dp; $f.e = e; $f.err = err; $f.err$1 = err$1; $f.err$2 = err$2; $f.err$3 = err$3; $f.err$4 = err$4; $f.err$5 = err$5; $f.err$6 = err$6; $f.extKeyUsage = extKeyUsage; $f.i = i; $f.i$1 = i$1; $f.in$1 = in$1; $f.issuer = issuer; $f.keyUsage = keyUsage; $f.keyid = keyid; $f.n = n; $f.ok = ok; $f.out = out; $f.policies = policies; $f.policy = policy; $f.subject = subject; $f.subtree = subtree; $f.u = u; $f.usage = usage; $f.usageBits = usageBits; $f.v = v; $f.x = x; $f.x$1 = x$1; $f.x$10 = x$10; $f.x$2 = x$2; $f.x$3 = x$3; $f.x$4 = x$4; $f.x$5 = x$5; $f.x$6 = x$6; $f.x$7 = x$7; $f.x$8 = x$8; $f.x$9 = x$9; $f.y = y; $f.$s = $s; $f.$r = $r; return $f;
  55976. };
  55977. ParseCertificate = function(asn1Data) {
  55978. var $ptr, _r, _r$1, _tuple, asn1Data, cert, err, rest, x, $s, $r;
  55979. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _tuple = $f._tuple; asn1Data = $f.asn1Data; cert = $f.cert; err = $f.err; rest = $f.rest; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  55980. cert = [cert];
  55981. cert[0] = $clone(new certificate.ptr(), certificate);
  55982. _r = asn1.Unmarshal(asn1Data, cert[0]); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  55983. _tuple = _r; rest = _tuple[0]; err = _tuple[1];
  55984. if (!($interfaceIsEqual(err, $ifaceNil))) {
  55985. return [ptrType$1.nil, err];
  55986. }
  55987. if (rest.$length > 0) {
  55988. return [ptrType$1.nil, (x = new asn1.SyntaxError.ptr("trailing data"), new x.constructor.elem(x))];
  55989. }
  55990. _r$1 = parseCertificate(cert[0]); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  55991. return _r$1;
  55992. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: ParseCertificate }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._tuple = _tuple; $f.asn1Data = asn1Data; $f.cert = cert; $f.err = err; $f.rest = rest; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
  55993. };
  55994. $pkg.ParseCertificate = ParseCertificate;
  55995. Certificate.ptr.prototype.CreateCRL = function(rand, priv, revokedCerts, now, expiry) {
  55996. var $ptr, _r, _r$1, _r$2, _r$3, _r$4, _tmp, _tmp$1, _tuple, _tuple$1, _tuple$2, _tuple$3, c, crlBytes, digest, err, expiry, h, now, ok, priv, rand, revokedCerts, rsaPriv, signature, tbsCertList, tbsCertListContents, x, $s, $r;
  55997. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; c = $f.c; crlBytes = $f.crlBytes; digest = $f.digest; err = $f.err; expiry = $f.expiry; h = $f.h; now = $f.now; ok = $f.ok; priv = $f.priv; rand = $f.rand; revokedCerts = $f.revokedCerts; rsaPriv = $f.rsaPriv; signature = $f.signature; tbsCertList = $f.tbsCertList; tbsCertListContents = $f.tbsCertListContents; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  55998. crlBytes = sliceType$3.nil;
  55999. err = $ifaceNil;
  56000. c = this;
  56001. expiry = $clone(expiry, time.Time);
  56002. now = $clone(now, time.Time);
  56003. _tuple = $assertType(priv, ptrType$4, true); rsaPriv = _tuple[0]; ok = _tuple[1];
  56004. if (!ok) {
  56005. _tmp = sliceType$3.nil; _tmp$1 = errors.New("x509: non-RSA private keys not supported"); crlBytes = _tmp; err = _tmp$1;
  56006. return [crlBytes, err];
  56007. }
  56008. tbsCertList = new pkix.TBSCertificateList.ptr(asn1.RawContent.nil, 2, new pkix.AlgorithmIdentifier.ptr(oidSignatureSHA1WithRSA, new asn1.RawValue.ptr()), c.Subject.ToRDNSequence(), $clone(now.UTC(), time.Time), $clone(expiry.UTC(), time.Time), revokedCerts, sliceType$23.nil);
  56009. _r = asn1.Marshal(new tbsCertList.constructor.elem(tbsCertList)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  56010. _tuple$1 = _r; tbsCertListContents = _tuple$1[0]; err = _tuple$1[1];
  56011. if (!($interfaceIsEqual(err, $ifaceNil))) {
  56012. return [crlBytes, err];
  56013. }
  56014. h = sha1.New();
  56015. _r$1 = h.Write(tbsCertListContents); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  56016. _r$1;
  56017. _r$2 = h.Sum(sliceType$3.nil); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  56018. digest = _r$2;
  56019. _r$3 = rsa.SignPKCS1v15(rand, rsaPriv, 3, digest); /* */ $s = 4; case 4: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  56020. _tuple$2 = _r$3; signature = _tuple$2[0]; err = _tuple$2[1];
  56021. if (!($interfaceIsEqual(err, $ifaceNil))) {
  56022. return [crlBytes, err];
  56023. }
  56024. _r$4 = asn1.Marshal((x = new pkix.CertificateList.ptr($clone(tbsCertList, pkix.TBSCertificateList), new pkix.AlgorithmIdentifier.ptr(oidSignatureSHA1WithRSA, new asn1.RawValue.ptr()), new asn1.BitString.ptr(signature, signature.$length * 8 >> 0)), new x.constructor.elem(x))); /* */ $s = 5; case 5: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
  56025. _tuple$3 = _r$4; crlBytes = _tuple$3[0]; err = _tuple$3[1];
  56026. return [crlBytes, err];
  56027. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Certificate.ptr.prototype.CreateCRL }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f.c = c; $f.crlBytes = crlBytes; $f.digest = digest; $f.err = err; $f.expiry = expiry; $f.h = h; $f.now = now; $f.ok = ok; $f.priv = priv; $f.rand = rand; $f.revokedCerts = revokedCerts; $f.rsaPriv = rsaPriv; $f.signature = signature; $f.tbsCertList = tbsCertList; $f.tbsCertListContents = tbsCertListContents; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
  56028. };
  56029. Certificate.prototype.CreateCRL = function(rand, priv, revokedCerts, now, expiry) { return this.$val.CreateCRL(rand, priv, revokedCerts, now, expiry); };
  56030. ptrType.methods = [{prop: "findVerifiedParents", name: "findVerifiedParents", pkg: "crypto/x509", typ: $funcType([ptrType$1], [sliceType$4, ptrType$1, $error], false)}, {prop: "AddCert", name: "AddCert", pkg: "", typ: $funcType([ptrType$1], [], false)}, {prop: "AppendCertsFromPEM", name: "AppendCertsFromPEM", pkg: "", typ: $funcType([sliceType$3], [$Bool], false)}, {prop: "Subjects", name: "Subjects", pkg: "", typ: $funcType([], [sliceType$7], false)}];
  56031. CertificateInvalidError.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}];
  56032. HostnameError.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}];
  56033. UnknownAuthorityError.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}];
  56034. SystemRootsError.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}];
  56035. ptrType$1.methods = [{prop: "systemVerify", name: "systemVerify", pkg: "crypto/x509", typ: $funcType([ptrType$14], [sliceType$12, $error], false)}, {prop: "isValid", name: "isValid", pkg: "crypto/x509", typ: $funcType([$Int, sliceType$6, ptrType$14], [$error], false)}, {prop: "Verify", name: "Verify", pkg: "", typ: $funcType([VerifyOptions], [sliceType$12, $error], false)}, {prop: "buildChains", name: "buildChains", pkg: "crypto/x509", typ: $funcType([mapType$1, sliceType$6, ptrType$14], [sliceType$12, $error], false)}, {prop: "VerifyHostname", name: "VerifyHostname", pkg: "", typ: $funcType([$String], [$error], false)}, {prop: "Equal", name: "Equal", pkg: "", typ: $funcType([ptrType$1], [$Bool], false)}, {prop: "CheckSignatureFrom", name: "CheckSignatureFrom", pkg: "", typ: $funcType([ptrType$1], [$error], false)}, {prop: "CheckSignature", name: "CheckSignature", pkg: "", typ: $funcType([SignatureAlgorithm, sliceType$3, sliceType$3], [$error], false)}, {prop: "CheckCRLSignature", name: "CheckCRLSignature", pkg: "", typ: $funcType([ptrType$31], [$error], false)}, {prop: "CreateCRL", name: "CreateCRL", pkg: "", typ: $funcType([io.Reader, $emptyInterface, sliceType$25, time.Time, time.Time], [sliceType$3, $error], false)}];
  56036. ConstraintViolationError.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}];
  56037. UnhandledCriticalExtension.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}];
  56038. CertPool.init([{prop: "bySubjectKeyId", name: "bySubjectKeyId", pkg: "crypto/x509", typ: mapType, tag: ""}, {prop: "byName", name: "byName", pkg: "crypto/x509", typ: mapType, tag: ""}, {prop: "certs", name: "certs", pkg: "crypto/x509", typ: sliceType$6, tag: ""}]);
  56039. pkcs1PrivateKey.init([{prop: "Version", name: "Version", pkg: "", typ: $Int, tag: ""}, {prop: "N", name: "N", pkg: "", typ: ptrType$5, tag: ""}, {prop: "E", name: "E", pkg: "", typ: $Int, tag: ""}, {prop: "D", name: "D", pkg: "", typ: ptrType$5, tag: ""}, {prop: "P", name: "P", pkg: "", typ: ptrType$5, tag: ""}, {prop: "Q", name: "Q", pkg: "", typ: ptrType$5, tag: ""}, {prop: "Dp", name: "Dp", pkg: "", typ: ptrType$5, tag: "asn1:\"optional\""}, {prop: "Dq", name: "Dq", pkg: "", typ: ptrType$5, tag: "asn1:\"optional\""}, {prop: "Qinv", name: "Qinv", pkg: "", typ: ptrType$5, tag: "asn1:\"optional\""}, {prop: "AdditionalPrimes", name: "AdditionalPrimes", pkg: "", typ: sliceType$9, tag: "asn1:\"optional,omitempty\""}]);
  56040. pkcs1AdditionalRSAPrime.init([{prop: "Prime", name: "Prime", pkg: "", typ: ptrType$5, tag: ""}, {prop: "Exp", name: "Exp", pkg: "", typ: ptrType$5, tag: ""}, {prop: "Coeff", name: "Coeff", pkg: "", typ: ptrType$5, tag: ""}]);
  56041. rsaPublicKey.init([{prop: "N", name: "N", pkg: "", typ: ptrType$5, tag: ""}, {prop: "E", name: "E", pkg: "", typ: $Int, tag: ""}]);
  56042. pkcs8.init([{prop: "Version", name: "Version", pkg: "", typ: $Int, tag: ""}, {prop: "Algo", name: "Algo", pkg: "", typ: pkix.AlgorithmIdentifier, tag: ""}, {prop: "PrivateKey", name: "PrivateKey", pkg: "", typ: sliceType$3, tag: ""}]);
  56043. ecPrivateKey.init([{prop: "Version", name: "Version", pkg: "", typ: $Int, tag: ""}, {prop: "PrivateKey", name: "PrivateKey", pkg: "", typ: sliceType$3, tag: ""}, {prop: "NamedCurveOID", name: "NamedCurveOID", pkg: "", typ: asn1.ObjectIdentifier, tag: "asn1:\"optional,explicit,tag:0\""}, {prop: "PublicKey", name: "PublicKey", pkg: "", typ: asn1.BitString, tag: "asn1:\"optional,explicit,tag:1\""}]);
  56044. CertificateInvalidError.init([{prop: "Cert", name: "Cert", pkg: "", typ: ptrType$1, tag: ""}, {prop: "Reason", name: "Reason", pkg: "", typ: InvalidReason, tag: ""}]);
  56045. HostnameError.init([{prop: "Certificate", name: "Certificate", pkg: "", typ: ptrType$1, tag: ""}, {prop: "Host", name: "Host", pkg: "", typ: $String, tag: ""}]);
  56046. UnknownAuthorityError.init([{prop: "cert", name: "cert", pkg: "crypto/x509", typ: ptrType$1, tag: ""}, {prop: "hintErr", name: "hintErr", pkg: "crypto/x509", typ: $error, tag: ""}, {prop: "hintCert", name: "hintCert", pkg: "crypto/x509", typ: ptrType$1, tag: ""}]);
  56047. SystemRootsError.init([]);
  56048. VerifyOptions.init([{prop: "DNSName", name: "DNSName", pkg: "", typ: $String, tag: ""}, {prop: "Intermediates", name: "Intermediates", pkg: "", typ: ptrType, tag: ""}, {prop: "Roots", name: "Roots", pkg: "", typ: ptrType, tag: ""}, {prop: "CurrentTime", name: "CurrentTime", pkg: "", typ: time.Time, tag: ""}, {prop: "KeyUsages", name: "KeyUsages", pkg: "", typ: sliceType$14, tag: ""}]);
  56049. certificate.init([{prop: "Raw", name: "Raw", pkg: "", typ: asn1.RawContent, tag: ""}, {prop: "TBSCertificate", name: "TBSCertificate", pkg: "", typ: tbsCertificate, tag: ""}, {prop: "SignatureAlgorithm", name: "SignatureAlgorithm", pkg: "", typ: pkix.AlgorithmIdentifier, tag: ""}, {prop: "SignatureValue", name: "SignatureValue", pkg: "", typ: asn1.BitString, tag: ""}]);
  56050. tbsCertificate.init([{prop: "Raw", name: "Raw", pkg: "", typ: asn1.RawContent, tag: ""}, {prop: "Version", name: "Version", pkg: "", typ: $Int, tag: "asn1:\"optional,explicit,default:1,tag:0\""}, {prop: "SerialNumber", name: "SerialNumber", pkg: "", typ: ptrType$5, tag: ""}, {prop: "SignatureAlgorithm", name: "SignatureAlgorithm", pkg: "", typ: pkix.AlgorithmIdentifier, tag: ""}, {prop: "Issuer", name: "Issuer", pkg: "", typ: asn1.RawValue, tag: ""}, {prop: "Validity", name: "Validity", pkg: "", typ: validity, tag: ""}, {prop: "Subject", name: "Subject", pkg: "", typ: asn1.RawValue, tag: ""}, {prop: "PublicKey", name: "PublicKey", pkg: "", typ: publicKeyInfo, tag: ""}, {prop: "UniqueId", name: "UniqueId", pkg: "", typ: asn1.BitString, tag: "asn1:\"optional,tag:1\""}, {prop: "SubjectUniqueId", name: "SubjectUniqueId", pkg: "", typ: asn1.BitString, tag: "asn1:\"optional,tag:2\""}, {prop: "Extensions", name: "Extensions", pkg: "", typ: sliceType$23, tag: "asn1:\"optional,explicit,tag:3\""}]);
  56051. dsaAlgorithmParameters.init([{prop: "P", name: "P", pkg: "", typ: ptrType$5, tag: ""}, {prop: "Q", name: "Q", pkg: "", typ: ptrType$5, tag: ""}, {prop: "G", name: "G", pkg: "", typ: ptrType$5, tag: ""}]);
  56052. dsaSignature.init([{prop: "R", name: "R", pkg: "", typ: ptrType$5, tag: ""}, {prop: "S", name: "S", pkg: "", typ: ptrType$5, tag: ""}]);
  56053. ecdsaSignature.init([{prop: "R", name: "R", pkg: "", typ: ptrType$5, tag: ""}, {prop: "S", name: "S", pkg: "", typ: ptrType$5, tag: ""}]);
  56054. validity.init([{prop: "NotBefore", name: "NotBefore", pkg: "", typ: time.Time, tag: ""}, {prop: "NotAfter", name: "NotAfter", pkg: "", typ: time.Time, tag: ""}]);
  56055. publicKeyInfo.init([{prop: "Raw", name: "Raw", pkg: "", typ: asn1.RawContent, tag: ""}, {prop: "Algorithm", name: "Algorithm", pkg: "", typ: pkix.AlgorithmIdentifier, tag: ""}, {prop: "PublicKey", name: "PublicKey", pkg: "", typ: asn1.BitString, tag: ""}]);
  56056. authKeyId.init([{prop: "Id", name: "Id", pkg: "", typ: sliceType$3, tag: "asn1:\"optional,tag:0\""}]);
  56057. Certificate.init([{prop: "Raw", name: "Raw", pkg: "", typ: sliceType$3, tag: ""}, {prop: "RawTBSCertificate", name: "RawTBSCertificate", pkg: "", typ: sliceType$3, tag: ""}, {prop: "RawSubjectPublicKeyInfo", name: "RawSubjectPublicKeyInfo", pkg: "", typ: sliceType$3, tag: ""}, {prop: "RawSubject", name: "RawSubject", pkg: "", typ: sliceType$3, tag: ""}, {prop: "RawIssuer", name: "RawIssuer", pkg: "", typ: sliceType$3, tag: ""}, {prop: "Signature", name: "Signature", pkg: "", typ: sliceType$3, tag: ""}, {prop: "SignatureAlgorithm", name: "SignatureAlgorithm", pkg: "", typ: SignatureAlgorithm, tag: ""}, {prop: "PublicKeyAlgorithm", name: "PublicKeyAlgorithm", pkg: "", typ: PublicKeyAlgorithm, tag: ""}, {prop: "PublicKey", name: "PublicKey", pkg: "", typ: $emptyInterface, tag: ""}, {prop: "Version", name: "Version", pkg: "", typ: $Int, tag: ""}, {prop: "SerialNumber", name: "SerialNumber", pkg: "", typ: ptrType$5, tag: ""}, {prop: "Issuer", name: "Issuer", pkg: "", typ: pkix.Name, tag: ""}, {prop: "Subject", name: "Subject", pkg: "", typ: pkix.Name, tag: ""}, {prop: "NotBefore", name: "NotBefore", pkg: "", typ: time.Time, tag: ""}, {prop: "NotAfter", name: "NotAfter", pkg: "", typ: time.Time, tag: ""}, {prop: "KeyUsage", name: "KeyUsage", pkg: "", typ: KeyUsage, tag: ""}, {prop: "Extensions", name: "Extensions", pkg: "", typ: sliceType$23, tag: ""}, {prop: "ExtraExtensions", name: "ExtraExtensions", pkg: "", typ: sliceType$23, tag: ""}, {prop: "ExtKeyUsage", name: "ExtKeyUsage", pkg: "", typ: sliceType$14, tag: ""}, {prop: "UnknownExtKeyUsage", name: "UnknownExtKeyUsage", pkg: "", typ: sliceType$18, tag: ""}, {prop: "BasicConstraintsValid", name: "BasicConstraintsValid", pkg: "", typ: $Bool, tag: ""}, {prop: "IsCA", name: "IsCA", pkg: "", typ: $Bool, tag: ""}, {prop: "MaxPathLen", name: "MaxPathLen", pkg: "", typ: $Int, tag: ""}, {prop: "MaxPathLenZero", name: "MaxPathLenZero", pkg: "", typ: $Bool, tag: ""}, {prop: "SubjectKeyId", name: "SubjectKeyId", pkg: "", typ: sliceType$3, tag: ""}, {prop: "AuthorityKeyId", name: "AuthorityKeyId", pkg: "", typ: sliceType$3, tag: ""}, {prop: "OCSPServer", name: "OCSPServer", pkg: "", typ: sliceType$15, tag: ""}, {prop: "IssuingCertificateURL", name: "IssuingCertificateURL", pkg: "", typ: sliceType$15, tag: ""}, {prop: "DNSNames", name: "DNSNames", pkg: "", typ: sliceType$15, tag: ""}, {prop: "EmailAddresses", name: "EmailAddresses", pkg: "", typ: sliceType$15, tag: ""}, {prop: "IPAddresses", name: "IPAddresses", pkg: "", typ: sliceType$16, tag: ""}, {prop: "PermittedDNSDomainsCritical", name: "PermittedDNSDomainsCritical", pkg: "", typ: $Bool, tag: ""}, {prop: "PermittedDNSDomains", name: "PermittedDNSDomains", pkg: "", typ: sliceType$15, tag: ""}, {prop: "CRLDistributionPoints", name: "CRLDistributionPoints", pkg: "", typ: sliceType$15, tag: ""}, {prop: "PolicyIdentifiers", name: "PolicyIdentifiers", pkg: "", typ: sliceType$18, tag: ""}]);
  56058. ConstraintViolationError.init([]);
  56059. UnhandledCriticalExtension.init([]);
  56060. basicConstraints.init([{prop: "IsCA", name: "IsCA", pkg: "", typ: $Bool, tag: "asn1:\"optional\""}, {prop: "MaxPathLen", name: "MaxPathLen", pkg: "", typ: $Int, tag: "asn1:\"optional,default:-1\""}]);
  56061. policyInformation.init([{prop: "Policy", name: "Policy", pkg: "", typ: asn1.ObjectIdentifier, tag: ""}]);
  56062. nameConstraints.init([{prop: "Permitted", name: "Permitted", pkg: "", typ: sliceType$24, tag: "asn1:\"optional,tag:0\""}, {prop: "Excluded", name: "Excluded", pkg: "", typ: sliceType$24, tag: "asn1:\"optional,tag:1\""}]);
  56063. generalSubtree.init([{prop: "Name", name: "Name", pkg: "", typ: $String, tag: "asn1:\"tag:2,optional,ia5\""}]);
  56064. authorityInfoAccess.init([{prop: "Method", name: "Method", pkg: "", typ: asn1.ObjectIdentifier, tag: ""}, {prop: "Location", name: "Location", pkg: "", typ: asn1.RawValue, tag: ""}]);
  56065. distributionPoint.init([{prop: "DistributionPoint", name: "DistributionPoint", pkg: "", typ: distributionPointName, tag: "asn1:\"optional,tag:0\""}, {prop: "Reason", name: "Reason", pkg: "", typ: asn1.BitString, tag: "asn1:\"optional,tag:1\""}, {prop: "CRLIssuer", name: "CRLIssuer", pkg: "", typ: asn1.RawValue, tag: "asn1:\"optional,tag:2\""}]);
  56066. distributionPointName.init([{prop: "FullName", name: "FullName", pkg: "", typ: asn1.RawValue, tag: "asn1:\"optional,tag:0\""}, {prop: "RelativeName", name: "RelativeName", pkg: "", typ: pkix.RDNSequence, tag: "asn1:\"optional,tag:1\""}]);
  56067. $init = function() {
  56068. $pkg.$init = function() {};
  56069. /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  56070. $r = bytes.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  56071. $r = crypto.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  56072. $r = aes.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  56073. $r = cipher.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  56074. $r = des.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  56075. $r = dsa.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  56076. $r = ecdsa.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  56077. $r = elliptic.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  56078. $r = md5.$init(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  56079. $r = rsa.$init(); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  56080. $r = sha1.$init(); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  56081. $r = sha256.$init(); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  56082. $r = sha512.$init(); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  56083. $r = pkix.$init(); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  56084. $r = asn1.$init(); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  56085. $r = hex.$init(); /* */ $s = 16; case 16: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  56086. $r = pem.$init(); /* */ $s = 17; case 17: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  56087. $r = errors.$init(); /* */ $s = 18; case 18: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  56088. $r = fmt.$init(); /* */ $s = 19; case 19: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  56089. $r = io.$init(); /* */ $s = 20; case 20: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  56090. $r = big.$init(); /* */ $s = 21; case 21: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  56091. $r = net.$init(); /* */ $s = 22; case 22: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  56092. $r = os.$init(); /* */ $s = 23; case 23: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  56093. $r = runtime.$init(); /* */ $s = 24; case 24: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  56094. $r = strconv.$init(); /* */ $s = 25; case 25: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  56095. $r = strings.$init(); /* */ $s = 26; case 26: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  56096. $r = sync.$init(); /* */ $s = 27; case 27: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  56097. $r = syscall.$init(); /* */ $s = 28; case 28: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  56098. $r = testing.$init(); /* */ $s = 29; case 29: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  56099. $r = time.$init(); /* */ $s = 30; case 30: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  56100. $r = utf8.$init(); /* */ $s = 31; case 31: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  56101. once = new sync.Once.ptr();
  56102. systemRoots = ptrType.nil;
  56103. $pkg.IncorrectPasswordError = errors.New("x509: decryption password incorrect");
  56104. oidSignatureMD2WithRSA = new asn1.ObjectIdentifier([1, 2, 840, 113549, 1, 1, 2]);
  56105. oidSignatureMD5WithRSA = new asn1.ObjectIdentifier([1, 2, 840, 113549, 1, 1, 4]);
  56106. oidSignatureSHA1WithRSA = new asn1.ObjectIdentifier([1, 2, 840, 113549, 1, 1, 5]);
  56107. oidSignatureSHA256WithRSA = new asn1.ObjectIdentifier([1, 2, 840, 113549, 1, 1, 11]);
  56108. oidSignatureSHA384WithRSA = new asn1.ObjectIdentifier([1, 2, 840, 113549, 1, 1, 12]);
  56109. oidSignatureSHA512WithRSA = new asn1.ObjectIdentifier([1, 2, 840, 113549, 1, 1, 13]);
  56110. oidSignatureDSAWithSHA1 = new asn1.ObjectIdentifier([1, 2, 840, 10040, 4, 3]);
  56111. oidSignatureDSAWithSHA256 = new asn1.ObjectIdentifier([2, 16, 840, 1, 101, 4, 3, 2]);
  56112. oidSignatureECDSAWithSHA1 = new asn1.ObjectIdentifier([1, 2, 840, 10045, 4, 1]);
  56113. oidSignatureECDSAWithSHA256 = new asn1.ObjectIdentifier([1, 2, 840, 10045, 4, 3, 2]);
  56114. oidSignatureECDSAWithSHA384 = new asn1.ObjectIdentifier([1, 2, 840, 10045, 4, 3, 3]);
  56115. oidSignatureECDSAWithSHA512 = new asn1.ObjectIdentifier([1, 2, 840, 10045, 4, 3, 4]);
  56116. signatureAlgorithmDetails = new sliceType$1([new structType.ptr(1, oidSignatureMD2WithRSA, 1, 0), new structType.ptr(2, oidSignatureMD5WithRSA, 1, 2), new structType.ptr(3, oidSignatureSHA1WithRSA, 1, 3), new structType.ptr(4, oidSignatureSHA256WithRSA, 1, 5), new structType.ptr(5, oidSignatureSHA384WithRSA, 1, 6), new structType.ptr(6, oidSignatureSHA512WithRSA, 1, 7), new structType.ptr(7, oidSignatureDSAWithSHA1, 2, 3), new structType.ptr(8, oidSignatureDSAWithSHA256, 2, 5), new structType.ptr(9, oidSignatureECDSAWithSHA1, 3, 3), new structType.ptr(10, oidSignatureECDSAWithSHA256, 3, 5), new structType.ptr(11, oidSignatureECDSAWithSHA384, 3, 6), new structType.ptr(12, oidSignatureECDSAWithSHA512, 3, 7)]);
  56117. oidPublicKeyRSA = new asn1.ObjectIdentifier([1, 2, 840, 113549, 1, 1, 1]);
  56118. oidPublicKeyDSA = new asn1.ObjectIdentifier([1, 2, 840, 10040, 4, 1]);
  56119. oidPublicKeyECDSA = new asn1.ObjectIdentifier([1, 2, 840, 10045, 2, 1]);
  56120. oidNamedCurveP224 = new asn1.ObjectIdentifier([1, 3, 132, 0, 33]);
  56121. oidNamedCurveP256 = new asn1.ObjectIdentifier([1, 2, 840, 10045, 3, 1, 7]);
  56122. oidNamedCurveP384 = new asn1.ObjectIdentifier([1, 3, 132, 0, 34]);
  56123. oidNamedCurveP521 = new asn1.ObjectIdentifier([1, 3, 132, 0, 35]);
  56124. oidExtKeyUsageAny = new asn1.ObjectIdentifier([2, 5, 29, 37, 0]);
  56125. oidExtKeyUsageServerAuth = new asn1.ObjectIdentifier([1, 3, 6, 1, 5, 5, 7, 3, 1]);
  56126. oidExtKeyUsageClientAuth = new asn1.ObjectIdentifier([1, 3, 6, 1, 5, 5, 7, 3, 2]);
  56127. oidExtKeyUsageCodeSigning = new asn1.ObjectIdentifier([1, 3, 6, 1, 5, 5, 7, 3, 3]);
  56128. oidExtKeyUsageEmailProtection = new asn1.ObjectIdentifier([1, 3, 6, 1, 5, 5, 7, 3, 4]);
  56129. oidExtKeyUsageIPSECEndSystem = new asn1.ObjectIdentifier([1, 3, 6, 1, 5, 5, 7, 3, 5]);
  56130. oidExtKeyUsageIPSECTunnel = new asn1.ObjectIdentifier([1, 3, 6, 1, 5, 5, 7, 3, 6]);
  56131. oidExtKeyUsageIPSECUser = new asn1.ObjectIdentifier([1, 3, 6, 1, 5, 5, 7, 3, 7]);
  56132. oidExtKeyUsageTimeStamping = new asn1.ObjectIdentifier([1, 3, 6, 1, 5, 5, 7, 3, 8]);
  56133. oidExtKeyUsageOCSPSigning = new asn1.ObjectIdentifier([1, 3, 6, 1, 5, 5, 7, 3, 9]);
  56134. oidExtKeyUsageMicrosoftServerGatedCrypto = new asn1.ObjectIdentifier([1, 3, 6, 1, 4, 1, 311, 10, 3, 3]);
  56135. oidExtKeyUsageNetscapeServerGatedCrypto = new asn1.ObjectIdentifier([2, 16, 840, 1, 113730, 4, 1]);
  56136. extKeyUsageOIDs = new sliceType$2([new structType$1.ptr(0, oidExtKeyUsageAny), new structType$1.ptr(1, oidExtKeyUsageServerAuth), new structType$1.ptr(2, oidExtKeyUsageClientAuth), new structType$1.ptr(3, oidExtKeyUsageCodeSigning), new structType$1.ptr(4, oidExtKeyUsageEmailProtection), new structType$1.ptr(5, oidExtKeyUsageIPSECEndSystem), new structType$1.ptr(6, oidExtKeyUsageIPSECTunnel), new structType$1.ptr(7, oidExtKeyUsageIPSECUser), new structType$1.ptr(8, oidExtKeyUsageTimeStamping), new structType$1.ptr(9, oidExtKeyUsageOCSPSigning), new structType$1.ptr(10, oidExtKeyUsageMicrosoftServerGatedCrypto), new structType$1.ptr(11, oidExtKeyUsageNetscapeServerGatedCrypto)]);
  56137. $pkg.ErrUnsupportedAlgorithm = errors.New("x509: cannot verify signature: algorithm unimplemented");
  56138. entrustBrokenSPKI = new sliceType$3([48, 130, 1, 34, 48, 13, 6, 9, 42, 134, 72, 134, 247, 13, 1, 1, 1, 5, 0, 3, 130, 1, 15, 0, 48, 130, 1, 10, 2, 130, 1, 1, 0, 151, 163, 45, 60, 158, 222, 5, 218, 19, 194, 17, 141, 157, 142, 227, 127, 199, 75, 126, 90, 159, 179, 255, 98, 171, 115, 200, 40, 107, 186, 16, 100, 130, 135, 19, 205, 87, 24, 255, 40, 206, 192, 230, 14, 6, 145, 80, 41, 131, 209, 242, 195, 42, 219, 216, 219, 78, 4, 204, 0, 235, 139, 182, 150, 220, 188, 170, 250, 82, 119, 4, 193, 219, 25, 228, 174, 156, 253, 60, 139, 3, 239, 77, 188, 26, 3, 101, 249, 193, 177, 63, 114, 134, 242, 56, 170, 25, 174, 16, 136, 120, 40, 218, 117, 195, 61, 2, 130, 2, 156, 185, 193, 101, 119, 118, 36, 76, 152, 247, 109, 49, 56, 251, 219, 254, 219, 55, 2, 118, 161, 24, 151, 166, 204, 222, 32, 9, 73, 54, 36, 105, 66, 246, 228, 55, 98, 241, 89, 109, 169, 60, 237, 52, 156, 163, 142, 219, 220, 58, 215, 247, 10, 111, 239, 46, 216, 213, 147, 90, 122, 237, 8, 73, 104, 226, 65, 227, 90, 144, 193, 134, 85, 252, 81, 67, 157, 224, 178, 196, 103, 180, 203, 50, 49, 37, 240, 84, 159, 75, 209, 111, 219, 212, 221, 252, 175, 94, 108, 120, 144, 149, 222, 202, 58, 72, 185, 121, 60, 155, 25, 214, 117, 5, 160, 249, 136, 215, 193, 232, 165, 9, 228, 26, 21, 220, 135, 35, 170, 178, 117, 140, 99, 37, 135, 216, 248, 61, 166, 194, 204, 102, 255, 165, 102, 104, 85, 2, 3, 1, 0, 1]);
  56139. oidExtensionAuthorityInfoAccess = new sliceType$4([1, 3, 6, 1, 5, 5, 7, 1, 1]);
  56140. oidAuthorityInfoAccessOcsp = new asn1.ObjectIdentifier([1, 3, 6, 1, 5, 5, 7, 48, 1]);
  56141. oidAuthorityInfoAccessIssuers = new asn1.ObjectIdentifier([1, 3, 6, 1, 5, 5, 7, 48, 2]);
  56142. /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
  56143. };
  56144. $pkg.$init = $init;
  56145. return $pkg;
  56146. })();
  56147. $packages["crypto/tls"] = (function() {
  56148. var $pkg = {}, $init, bytes, list, crypto, aes, cipher, des, ecdsa, elliptic, hmac, md5, rand, rc4, rsa, sha1, sha256, subtle, x509, asn1, pem, errors, fmt, hash, io, ioutil, big, net, strconv, strings, sync, time, alert, keyAgreement, cipherSuite, macFunction, fixedNonceAEAD, ssl30MAC, tls10MAC, recordType, CurveID, signatureAndHash, ConnectionState, ClientAuthType, ClientSessionState, ClientSessionCache, ClientHelloInfo, Config, Certificate, ecdsaSignature, Conn, halfConn, cbcMode, block, clientHandshakeState, clientHelloMsg, serverHelloMsg, certificateMsg, serverKeyExchangeMsg, certificateStatusMsg, serverHelloDoneMsg, clientKeyExchangeMsg, finishedMsg, nextProtoMsg, certificateRequestMsg, certificateVerifyMsg, newSessionTicketMsg, serverHandshakeState, rsaKeyAgreement, ecdheKeyAgreement, finishedHash, sessionState, listener, sliceType, ptrType, sliceType$1, sliceType$2, sliceType$3, sliceType$4, ptrType$1, ptrType$2, ptrType$3, ptrType$7, sliceType$5, arrayType, ptrType$8, sliceType$6, sliceType$7, ptrType$9, ptrType$10, ptrType$11, ptrType$12, ptrType$13, sliceType$8, ptrType$14, sliceType$9, ptrType$15, ptrType$16, ptrType$17, ptrType$18, ptrType$19, ptrType$20, ptrType$21, ptrType$22, ptrType$23, ptrType$24, ptrType$25, ptrType$26, ptrType$27, ptrType$28, arrayType$1, arrayType$2, arrayType$3, sliceType$10, arrayType$4, arrayType$5, ptrType$29, funcType, funcType$1, funcType$2, funcType$3, ptrType$30, sliceType$11, arrayType$6, ptrType$31, funcType$4, mapType, funcType$5, arrayType$7, ptrType$33, ptrType$34, ptrType$35, ptrType$36, ptrType$37, alertText, cipherSuites, ssl30Pad1, ssl30Pad2, supportedSKXSignatureAlgorithms, supportedClientCertSignatureAlgorithms, defaultCurvePreferences, emptyConfig, emptyConfig_ptr, once, varDefaultCipherSuites, errClientKeyExchange, errServerKeyExchange, masterSecretLabel, keyExpansionLabel, clientFinishedLabel, serverFinishedLabel, ssl3ClientFinishedMagic, ssl3ServerFinishedMagic, _map, _key, cipherRC4, cipher3DES, cipherAES, macSHA1, aeadAESGCM, rsaKA, ecdheECDSAKA, ecdheRSAKA, mutualCipherSuite, defaultConfig, defaultCipherSuites, initDefaultCipherSuites, unexpectedMessageError, removePadding, removePaddingSSL30, roundUp, padToBlockSize, clientSessionCacheKey, mutualProtocol, sha1Hash, md5SHA1Hash, sha256Hash, hashForServerKeyExchange, pickTLS12HashForSignature, curveForCurveID, splitPreMasterSecret, pHash, prf10, prf12, prf30, prfForVersion, masterFromPreMasterSecret, keysFromMasterSecret, newFinishedHash, finishedSum30, Server, NewListener, LoadX509KeyPair, X509KeyPair, parsePrivateKey;
  56149. bytes = $packages["bytes"];
  56150. list = $packages["container/list"];
  56151. crypto = $packages["crypto"];
  56152. aes = $packages["crypto/aes"];
  56153. cipher = $packages["crypto/cipher"];
  56154. des = $packages["crypto/des"];
  56155. ecdsa = $packages["crypto/ecdsa"];
  56156. elliptic = $packages["crypto/elliptic"];
  56157. hmac = $packages["crypto/hmac"];
  56158. md5 = $packages["crypto/md5"];
  56159. rand = $packages["crypto/rand"];
  56160. rc4 = $packages["crypto/rc4"];
  56161. rsa = $packages["crypto/rsa"];
  56162. sha1 = $packages["crypto/sha1"];
  56163. sha256 = $packages["crypto/sha256"];
  56164. subtle = $packages["crypto/subtle"];
  56165. x509 = $packages["crypto/x509"];
  56166. asn1 = $packages["encoding/asn1"];
  56167. pem = $packages["encoding/pem"];
  56168. errors = $packages["errors"];
  56169. fmt = $packages["fmt"];
  56170. hash = $packages["hash"];
  56171. io = $packages["io"];
  56172. ioutil = $packages["io/ioutil"];
  56173. big = $packages["math/big"];
  56174. net = $packages["net"];
  56175. strconv = $packages["strconv"];
  56176. strings = $packages["strings"];
  56177. sync = $packages["sync"];
  56178. time = $packages["time"];
  56179. alert = $pkg.alert = $newType(1, $kindUint8, "tls.alert", "alert", "crypto/tls", null);
  56180. keyAgreement = $pkg.keyAgreement = $newType(8, $kindInterface, "tls.keyAgreement", "keyAgreement", "crypto/tls", null);
  56181. cipherSuite = $pkg.cipherSuite = $newType(0, $kindStruct, "tls.cipherSuite", "cipherSuite", "crypto/tls", function(id_, keyLen_, macLen_, ivLen_, ka_, flags_, cipher_, mac_, aead_) {
  56182. this.$val = this;
  56183. if (arguments.length === 0) {
  56184. this.id = 0;
  56185. this.keyLen = 0;
  56186. this.macLen = 0;
  56187. this.ivLen = 0;
  56188. this.ka = $throwNilPointerError;
  56189. this.flags = 0;
  56190. this.cipher = $throwNilPointerError;
  56191. this.mac = $throwNilPointerError;
  56192. this.aead = $throwNilPointerError;
  56193. return;
  56194. }
  56195. this.id = id_;
  56196. this.keyLen = keyLen_;
  56197. this.macLen = macLen_;
  56198. this.ivLen = ivLen_;
  56199. this.ka = ka_;
  56200. this.flags = flags_;
  56201. this.cipher = cipher_;
  56202. this.mac = mac_;
  56203. this.aead = aead_;
  56204. });
  56205. macFunction = $pkg.macFunction = $newType(8, $kindInterface, "tls.macFunction", "macFunction", "crypto/tls", null);
  56206. fixedNonceAEAD = $pkg.fixedNonceAEAD = $newType(0, $kindStruct, "tls.fixedNonceAEAD", "fixedNonceAEAD", "crypto/tls", function(sealNonce_, openNonce_, aead_) {
  56207. this.$val = this;
  56208. if (arguments.length === 0) {
  56209. this.sealNonce = sliceType$4.nil;
  56210. this.openNonce = sliceType$4.nil;
  56211. this.aead = $ifaceNil;
  56212. return;
  56213. }
  56214. this.sealNonce = sealNonce_;
  56215. this.openNonce = openNonce_;
  56216. this.aead = aead_;
  56217. });
  56218. ssl30MAC = $pkg.ssl30MAC = $newType(0, $kindStruct, "tls.ssl30MAC", "ssl30MAC", "crypto/tls", function(h_, key_) {
  56219. this.$val = this;
  56220. if (arguments.length === 0) {
  56221. this.h = $ifaceNil;
  56222. this.key = sliceType$4.nil;
  56223. return;
  56224. }
  56225. this.h = h_;
  56226. this.key = key_;
  56227. });
  56228. tls10MAC = $pkg.tls10MAC = $newType(0, $kindStruct, "tls.tls10MAC", "tls10MAC", "crypto/tls", function(h_) {
  56229. this.$val = this;
  56230. if (arguments.length === 0) {
  56231. this.h = $ifaceNil;
  56232. return;
  56233. }
  56234. this.h = h_;
  56235. });
  56236. recordType = $pkg.recordType = $newType(1, $kindUint8, "tls.recordType", "recordType", "crypto/tls", null);
  56237. CurveID = $pkg.CurveID = $newType(2, $kindUint16, "tls.CurveID", "CurveID", "crypto/tls", null);
  56238. signatureAndHash = $pkg.signatureAndHash = $newType(0, $kindStruct, "tls.signatureAndHash", "signatureAndHash", "crypto/tls", function(hash_, signature_) {
  56239. this.$val = this;
  56240. if (arguments.length === 0) {
  56241. this.hash = 0;
  56242. this.signature = 0;
  56243. return;
  56244. }
  56245. this.hash = hash_;
  56246. this.signature = signature_;
  56247. });
  56248. ConnectionState = $pkg.ConnectionState = $newType(0, $kindStruct, "tls.ConnectionState", "ConnectionState", "crypto/tls", function(Version_, HandshakeComplete_, DidResume_, CipherSuite_, NegotiatedProtocol_, NegotiatedProtocolIsMutual_, ServerName_, PeerCertificates_, VerifiedChains_, TLSUnique_) {
  56249. this.$val = this;
  56250. if (arguments.length === 0) {
  56251. this.Version = 0;
  56252. this.HandshakeComplete = false;
  56253. this.DidResume = false;
  56254. this.CipherSuite = 0;
  56255. this.NegotiatedProtocol = "";
  56256. this.NegotiatedProtocolIsMutual = false;
  56257. this.ServerName = "";
  56258. this.PeerCertificates = sliceType$8.nil;
  56259. this.VerifiedChains = sliceType$10.nil;
  56260. this.TLSUnique = sliceType$4.nil;
  56261. return;
  56262. }
  56263. this.Version = Version_;
  56264. this.HandshakeComplete = HandshakeComplete_;
  56265. this.DidResume = DidResume_;
  56266. this.CipherSuite = CipherSuite_;
  56267. this.NegotiatedProtocol = NegotiatedProtocol_;
  56268. this.NegotiatedProtocolIsMutual = NegotiatedProtocolIsMutual_;
  56269. this.ServerName = ServerName_;
  56270. this.PeerCertificates = PeerCertificates_;
  56271. this.VerifiedChains = VerifiedChains_;
  56272. this.TLSUnique = TLSUnique_;
  56273. });
  56274. ClientAuthType = $pkg.ClientAuthType = $newType(4, $kindInt, "tls.ClientAuthType", "ClientAuthType", "crypto/tls", null);
  56275. ClientSessionState = $pkg.ClientSessionState = $newType(0, $kindStruct, "tls.ClientSessionState", "ClientSessionState", "crypto/tls", function(sessionTicket_, vers_, cipherSuite_, masterSecret_, serverCertificates_) {
  56276. this.$val = this;
  56277. if (arguments.length === 0) {
  56278. this.sessionTicket = sliceType$4.nil;
  56279. this.vers = 0;
  56280. this.cipherSuite = 0;
  56281. this.masterSecret = sliceType$4.nil;
  56282. this.serverCertificates = sliceType$8.nil;
  56283. return;
  56284. }
  56285. this.sessionTicket = sessionTicket_;
  56286. this.vers = vers_;
  56287. this.cipherSuite = cipherSuite_;
  56288. this.masterSecret = masterSecret_;
  56289. this.serverCertificates = serverCertificates_;
  56290. });
  56291. ClientSessionCache = $pkg.ClientSessionCache = $newType(8, $kindInterface, "tls.ClientSessionCache", "ClientSessionCache", "crypto/tls", null);
  56292. ClientHelloInfo = $pkg.ClientHelloInfo = $newType(0, $kindStruct, "tls.ClientHelloInfo", "ClientHelloInfo", "crypto/tls", function(CipherSuites_, ServerName_, SupportedCurves_, SupportedPoints_) {
  56293. this.$val = this;
  56294. if (arguments.length === 0) {
  56295. this.CipherSuites = sliceType.nil;
  56296. this.ServerName = "";
  56297. this.SupportedCurves = sliceType$3.nil;
  56298. this.SupportedPoints = sliceType$4.nil;
  56299. return;
  56300. }
  56301. this.CipherSuites = CipherSuites_;
  56302. this.ServerName = ServerName_;
  56303. this.SupportedCurves = SupportedCurves_;
  56304. this.SupportedPoints = SupportedPoints_;
  56305. });
  56306. Config = $pkg.Config = $newType(0, $kindStruct, "tls.Config", "Config", "crypto/tls", function(Rand_, Time_, Certificates_, NameToCertificate_, GetCertificate_, RootCAs_, NextProtos_, ServerName_, ClientAuth_, ClientCAs_, InsecureSkipVerify_, CipherSuites_, PreferServerCipherSuites_, SessionTicketsDisabled_, SessionTicketKey_, ClientSessionCache_, MinVersion_, MaxVersion_, CurvePreferences_, serverInitOnce_) {
  56307. this.$val = this;
  56308. if (arguments.length === 0) {
  56309. this.Rand = $ifaceNil;
  56310. this.Time = $throwNilPointerError;
  56311. this.Certificates = sliceType$11.nil;
  56312. this.NameToCertificate = false;
  56313. this.GetCertificate = $throwNilPointerError;
  56314. this.RootCAs = ptrType$14.nil;
  56315. this.NextProtos = sliceType$7.nil;
  56316. this.ServerName = "";
  56317. this.ClientAuth = 0;
  56318. this.ClientCAs = ptrType$14.nil;
  56319. this.InsecureSkipVerify = false;
  56320. this.CipherSuites = sliceType.nil;
  56321. this.PreferServerCipherSuites = false;
  56322. this.SessionTicketsDisabled = false;
  56323. this.SessionTicketKey = arrayType$6.zero();
  56324. this.ClientSessionCache = $ifaceNil;
  56325. this.MinVersion = 0;
  56326. this.MaxVersion = 0;
  56327. this.CurvePreferences = sliceType$3.nil;
  56328. this.serverInitOnce = new sync.Once.ptr();
  56329. return;
  56330. }
  56331. this.Rand = Rand_;
  56332. this.Time = Time_;
  56333. this.Certificates = Certificates_;
  56334. this.NameToCertificate = NameToCertificate_;
  56335. this.GetCertificate = GetCertificate_;
  56336. this.RootCAs = RootCAs_;
  56337. this.NextProtos = NextProtos_;
  56338. this.ServerName = ServerName_;
  56339. this.ClientAuth = ClientAuth_;
  56340. this.ClientCAs = ClientCAs_;
  56341. this.InsecureSkipVerify = InsecureSkipVerify_;
  56342. this.CipherSuites = CipherSuites_;
  56343. this.PreferServerCipherSuites = PreferServerCipherSuites_;
  56344. this.SessionTicketsDisabled = SessionTicketsDisabled_;
  56345. this.SessionTicketKey = SessionTicketKey_;
  56346. this.ClientSessionCache = ClientSessionCache_;
  56347. this.MinVersion = MinVersion_;
  56348. this.MaxVersion = MaxVersion_;
  56349. this.CurvePreferences = CurvePreferences_;
  56350. this.serverInitOnce = serverInitOnce_;
  56351. });
  56352. Certificate = $pkg.Certificate = $newType(0, $kindStruct, "tls.Certificate", "Certificate", "crypto/tls", function(Certificate_, PrivateKey_, OCSPStaple_, Leaf_) {
  56353. this.$val = this;
  56354. if (arguments.length === 0) {
  56355. this.Certificate = sliceType$6.nil;
  56356. this.PrivateKey = $ifaceNil;
  56357. this.OCSPStaple = sliceType$4.nil;
  56358. this.Leaf = ptrType$13.nil;
  56359. return;
  56360. }
  56361. this.Certificate = Certificate_;
  56362. this.PrivateKey = PrivateKey_;
  56363. this.OCSPStaple = OCSPStaple_;
  56364. this.Leaf = Leaf_;
  56365. });
  56366. ecdsaSignature = $pkg.ecdsaSignature = $newType(0, $kindStruct, "tls.ecdsaSignature", "ecdsaSignature", "crypto/tls", function(R_, S_) {
  56367. this.$val = this;
  56368. if (arguments.length === 0) {
  56369. this.R = ptrType$1.nil;
  56370. this.S = ptrType$1.nil;
  56371. return;
  56372. }
  56373. this.R = R_;
  56374. this.S = S_;
  56375. });
  56376. Conn = $pkg.Conn = $newType(0, $kindStruct, "tls.Conn", "Conn", "crypto/tls", function(conn_, isClient_, handshakeMutex_, handshakeErr_, vers_, haveVers_, config_, handshakeComplete_, didResume_, cipherSuite_, ocspResponse_, peerCertificates_, verifiedChains_, serverName_, firstFinished_, clientProtocol_, clientProtocolFallback_, in$17_, out_, rawInput_, input_, hand_, tmp_) {
  56377. this.$val = this;
  56378. if (arguments.length === 0) {
  56379. this.conn = $ifaceNil;
  56380. this.isClient = false;
  56381. this.handshakeMutex = new sync.Mutex.ptr();
  56382. this.handshakeErr = $ifaceNil;
  56383. this.vers = 0;
  56384. this.haveVers = false;
  56385. this.config = ptrType$2.nil;
  56386. this.handshakeComplete = false;
  56387. this.didResume = false;
  56388. this.cipherSuite = 0;
  56389. this.ocspResponse = sliceType$4.nil;
  56390. this.peerCertificates = sliceType$8.nil;
  56391. this.verifiedChains = sliceType$10.nil;
  56392. this.serverName = "";
  56393. this.firstFinished = arrayType$4.zero();
  56394. this.clientProtocol = "";
  56395. this.clientProtocolFallback = false;
  56396. this.in$17 = new halfConn.ptr();
  56397. this.out = new halfConn.ptr();
  56398. this.rawInput = ptrType$8.nil;
  56399. this.input = ptrType$8.nil;
  56400. this.hand = new bytes.Buffer.ptr();
  56401. this.tmp = arrayType$5.zero();
  56402. return;
  56403. }
  56404. this.conn = conn_;
  56405. this.isClient = isClient_;
  56406. this.handshakeMutex = handshakeMutex_;
  56407. this.handshakeErr = handshakeErr_;
  56408. this.vers = vers_;
  56409. this.haveVers = haveVers_;
  56410. this.config = config_;
  56411. this.handshakeComplete = handshakeComplete_;
  56412. this.didResume = didResume_;
  56413. this.cipherSuite = cipherSuite_;
  56414. this.ocspResponse = ocspResponse_;
  56415. this.peerCertificates = peerCertificates_;
  56416. this.verifiedChains = verifiedChains_;
  56417. this.serverName = serverName_;
  56418. this.firstFinished = firstFinished_;
  56419. this.clientProtocol = clientProtocol_;
  56420. this.clientProtocolFallback = clientProtocolFallback_;
  56421. this.in$17 = in$17_;
  56422. this.out = out_;
  56423. this.rawInput = rawInput_;
  56424. this.input = input_;
  56425. this.hand = hand_;
  56426. this.tmp = tmp_;
  56427. });
  56428. halfConn = $pkg.halfConn = $newType(0, $kindStruct, "tls.halfConn", "halfConn", "crypto/tls", function(Mutex_, err_, version_, cipher_, mac_, seq_, bfree_, nextCipher_, nextMac_, inDigestBuf_, outDigestBuf_) {
  56429. this.$val = this;
  56430. if (arguments.length === 0) {
  56431. this.Mutex = new sync.Mutex.ptr();
  56432. this.err = $ifaceNil;
  56433. this.version = 0;
  56434. this.cipher = $ifaceNil;
  56435. this.mac = $ifaceNil;
  56436. this.seq = arrayType$7.zero();
  56437. this.bfree = ptrType$8.nil;
  56438. this.nextCipher = $ifaceNil;
  56439. this.nextMac = $ifaceNil;
  56440. this.inDigestBuf = sliceType$4.nil;
  56441. this.outDigestBuf = sliceType$4.nil;
  56442. return;
  56443. }
  56444. this.Mutex = Mutex_;
  56445. this.err = err_;
  56446. this.version = version_;
  56447. this.cipher = cipher_;
  56448. this.mac = mac_;
  56449. this.seq = seq_;
  56450. this.bfree = bfree_;
  56451. this.nextCipher = nextCipher_;
  56452. this.nextMac = nextMac_;
  56453. this.inDigestBuf = inDigestBuf_;
  56454. this.outDigestBuf = outDigestBuf_;
  56455. });
  56456. cbcMode = $pkg.cbcMode = $newType(8, $kindInterface, "tls.cbcMode", "cbcMode", "crypto/tls", null);
  56457. block = $pkg.block = $newType(0, $kindStruct, "tls.block", "block", "crypto/tls", function(data_, off_, link_) {
  56458. this.$val = this;
  56459. if (arguments.length === 0) {
  56460. this.data = sliceType$4.nil;
  56461. this.off = 0;
  56462. this.link = ptrType$8.nil;
  56463. return;
  56464. }
  56465. this.data = data_;
  56466. this.off = off_;
  56467. this.link = link_;
  56468. });
  56469. clientHandshakeState = $pkg.clientHandshakeState = $newType(0, $kindStruct, "tls.clientHandshakeState", "clientHandshakeState", "crypto/tls", function(c_, serverHello_, hello_, suite_, finishedHash_, masterSecret_, session_) {
  56470. this.$val = this;
  56471. if (arguments.length === 0) {
  56472. this.c = ptrType$10.nil;
  56473. this.serverHello = ptrType$9.nil;
  56474. this.hello = ptrType$11.nil;
  56475. this.suite = ptrType.nil;
  56476. this.finishedHash = new finishedHash.ptr();
  56477. this.masterSecret = sliceType$4.nil;
  56478. this.session = ptrType$7.nil;
  56479. return;
  56480. }
  56481. this.c = c_;
  56482. this.serverHello = serverHello_;
  56483. this.hello = hello_;
  56484. this.suite = suite_;
  56485. this.finishedHash = finishedHash_;
  56486. this.masterSecret = masterSecret_;
  56487. this.session = session_;
  56488. });
  56489. clientHelloMsg = $pkg.clientHelloMsg = $newType(0, $kindStruct, "tls.clientHelloMsg", "clientHelloMsg", "crypto/tls", function(raw_, vers_, random_, sessionId_, cipherSuites_, compressionMethods_, nextProtoNeg_, serverName_, ocspStapling_, supportedCurves_, supportedPoints_, ticketSupported_, sessionTicket_, signatureAndHashes_, secureRenegotiation_, alpnProtocols_) {
  56490. this.$val = this;
  56491. if (arguments.length === 0) {
  56492. this.raw = sliceType$4.nil;
  56493. this.vers = 0;
  56494. this.random = sliceType$4.nil;
  56495. this.sessionId = sliceType$4.nil;
  56496. this.cipherSuites = sliceType.nil;
  56497. this.compressionMethods = sliceType$4.nil;
  56498. this.nextProtoNeg = false;
  56499. this.serverName = "";
  56500. this.ocspStapling = false;
  56501. this.supportedCurves = sliceType$3.nil;
  56502. this.supportedPoints = sliceType$4.nil;
  56503. this.ticketSupported = false;
  56504. this.sessionTicket = sliceType$4.nil;
  56505. this.signatureAndHashes = sliceType$2.nil;
  56506. this.secureRenegotiation = false;
  56507. this.alpnProtocols = sliceType$7.nil;
  56508. return;
  56509. }
  56510. this.raw = raw_;
  56511. this.vers = vers_;
  56512. this.random = random_;
  56513. this.sessionId = sessionId_;
  56514. this.cipherSuites = cipherSuites_;
  56515. this.compressionMethods = compressionMethods_;
  56516. this.nextProtoNeg = nextProtoNeg_;
  56517. this.serverName = serverName_;
  56518. this.ocspStapling = ocspStapling_;
  56519. this.supportedCurves = supportedCurves_;
  56520. this.supportedPoints = supportedPoints_;
  56521. this.ticketSupported = ticketSupported_;
  56522. this.sessionTicket = sessionTicket_;
  56523. this.signatureAndHashes = signatureAndHashes_;
  56524. this.secureRenegotiation = secureRenegotiation_;
  56525. this.alpnProtocols = alpnProtocols_;
  56526. });
  56527. serverHelloMsg = $pkg.serverHelloMsg = $newType(0, $kindStruct, "tls.serverHelloMsg", "serverHelloMsg", "crypto/tls", function(raw_, vers_, random_, sessionId_, cipherSuite_, compressionMethod_, nextProtoNeg_, nextProtos_, ocspStapling_, ticketSupported_, secureRenegotiation_, alpnProtocol_) {
  56528. this.$val = this;
  56529. if (arguments.length === 0) {
  56530. this.raw = sliceType$4.nil;
  56531. this.vers = 0;
  56532. this.random = sliceType$4.nil;
  56533. this.sessionId = sliceType$4.nil;
  56534. this.cipherSuite = 0;
  56535. this.compressionMethod = 0;
  56536. this.nextProtoNeg = false;
  56537. this.nextProtos = sliceType$7.nil;
  56538. this.ocspStapling = false;
  56539. this.ticketSupported = false;
  56540. this.secureRenegotiation = false;
  56541. this.alpnProtocol = "";
  56542. return;
  56543. }
  56544. this.raw = raw_;
  56545. this.vers = vers_;
  56546. this.random = random_;
  56547. this.sessionId = sessionId_;
  56548. this.cipherSuite = cipherSuite_;
  56549. this.compressionMethod = compressionMethod_;
  56550. this.nextProtoNeg = nextProtoNeg_;
  56551. this.nextProtos = nextProtos_;
  56552. this.ocspStapling = ocspStapling_;
  56553. this.ticketSupported = ticketSupported_;
  56554. this.secureRenegotiation = secureRenegotiation_;
  56555. this.alpnProtocol = alpnProtocol_;
  56556. });
  56557. certificateMsg = $pkg.certificateMsg = $newType(0, $kindStruct, "tls.certificateMsg", "certificateMsg", "crypto/tls", function(raw_, certificates_) {
  56558. this.$val = this;
  56559. if (arguments.length === 0) {
  56560. this.raw = sliceType$4.nil;
  56561. this.certificates = sliceType$6.nil;
  56562. return;
  56563. }
  56564. this.raw = raw_;
  56565. this.certificates = certificates_;
  56566. });
  56567. serverKeyExchangeMsg = $pkg.serverKeyExchangeMsg = $newType(0, $kindStruct, "tls.serverKeyExchangeMsg", "serverKeyExchangeMsg", "crypto/tls", function(raw_, key_) {
  56568. this.$val = this;
  56569. if (arguments.length === 0) {
  56570. this.raw = sliceType$4.nil;
  56571. this.key = sliceType$4.nil;
  56572. return;
  56573. }
  56574. this.raw = raw_;
  56575. this.key = key_;
  56576. });
  56577. certificateStatusMsg = $pkg.certificateStatusMsg = $newType(0, $kindStruct, "tls.certificateStatusMsg", "certificateStatusMsg", "crypto/tls", function(raw_, statusType_, response_) {
  56578. this.$val = this;
  56579. if (arguments.length === 0) {
  56580. this.raw = sliceType$4.nil;
  56581. this.statusType = 0;
  56582. this.response = sliceType$4.nil;
  56583. return;
  56584. }
  56585. this.raw = raw_;
  56586. this.statusType = statusType_;
  56587. this.response = response_;
  56588. });
  56589. serverHelloDoneMsg = $pkg.serverHelloDoneMsg = $newType(0, $kindStruct, "tls.serverHelloDoneMsg", "serverHelloDoneMsg", "crypto/tls", function() {
  56590. this.$val = this;
  56591. if (arguments.length === 0) {
  56592. return;
  56593. }
  56594. });
  56595. clientKeyExchangeMsg = $pkg.clientKeyExchangeMsg = $newType(0, $kindStruct, "tls.clientKeyExchangeMsg", "clientKeyExchangeMsg", "crypto/tls", function(raw_, ciphertext_) {
  56596. this.$val = this;
  56597. if (arguments.length === 0) {
  56598. this.raw = sliceType$4.nil;
  56599. this.ciphertext = sliceType$4.nil;
  56600. return;
  56601. }
  56602. this.raw = raw_;
  56603. this.ciphertext = ciphertext_;
  56604. });
  56605. finishedMsg = $pkg.finishedMsg = $newType(0, $kindStruct, "tls.finishedMsg", "finishedMsg", "crypto/tls", function(raw_, verifyData_) {
  56606. this.$val = this;
  56607. if (arguments.length === 0) {
  56608. this.raw = sliceType$4.nil;
  56609. this.verifyData = sliceType$4.nil;
  56610. return;
  56611. }
  56612. this.raw = raw_;
  56613. this.verifyData = verifyData_;
  56614. });
  56615. nextProtoMsg = $pkg.nextProtoMsg = $newType(0, $kindStruct, "tls.nextProtoMsg", "nextProtoMsg", "crypto/tls", function(raw_, proto_) {
  56616. this.$val = this;
  56617. if (arguments.length === 0) {
  56618. this.raw = sliceType$4.nil;
  56619. this.proto = "";
  56620. return;
  56621. }
  56622. this.raw = raw_;
  56623. this.proto = proto_;
  56624. });
  56625. certificateRequestMsg = $pkg.certificateRequestMsg = $newType(0, $kindStruct, "tls.certificateRequestMsg", "certificateRequestMsg", "crypto/tls", function(raw_, hasSignatureAndHash_, certificateTypes_, signatureAndHashes_, certificateAuthorities_) {
  56626. this.$val = this;
  56627. if (arguments.length === 0) {
  56628. this.raw = sliceType$4.nil;
  56629. this.hasSignatureAndHash = false;
  56630. this.certificateTypes = sliceType$4.nil;
  56631. this.signatureAndHashes = sliceType$2.nil;
  56632. this.certificateAuthorities = sliceType$6.nil;
  56633. return;
  56634. }
  56635. this.raw = raw_;
  56636. this.hasSignatureAndHash = hasSignatureAndHash_;
  56637. this.certificateTypes = certificateTypes_;
  56638. this.signatureAndHashes = signatureAndHashes_;
  56639. this.certificateAuthorities = certificateAuthorities_;
  56640. });
  56641. certificateVerifyMsg = $pkg.certificateVerifyMsg = $newType(0, $kindStruct, "tls.certificateVerifyMsg", "certificateVerifyMsg", "crypto/tls", function(raw_, hasSignatureAndHash_, signatureAndHash_, signature_) {
  56642. this.$val = this;
  56643. if (arguments.length === 0) {
  56644. this.raw = sliceType$4.nil;
  56645. this.hasSignatureAndHash = false;
  56646. this.signatureAndHash = new signatureAndHash.ptr();
  56647. this.signature = sliceType$4.nil;
  56648. return;
  56649. }
  56650. this.raw = raw_;
  56651. this.hasSignatureAndHash = hasSignatureAndHash_;
  56652. this.signatureAndHash = signatureAndHash_;
  56653. this.signature = signature_;
  56654. });
  56655. newSessionTicketMsg = $pkg.newSessionTicketMsg = $newType(0, $kindStruct, "tls.newSessionTicketMsg", "newSessionTicketMsg", "crypto/tls", function(raw_, ticket_) {
  56656. this.$val = this;
  56657. if (arguments.length === 0) {
  56658. this.raw = sliceType$4.nil;
  56659. this.ticket = sliceType$4.nil;
  56660. return;
  56661. }
  56662. this.raw = raw_;
  56663. this.ticket = ticket_;
  56664. });
  56665. serverHandshakeState = $pkg.serverHandshakeState = $newType(0, $kindStruct, "tls.serverHandshakeState", "serverHandshakeState", "crypto/tls", function(c_, clientHello_, hello_, suite_, ellipticOk_, ecdsaOk_, sessionState_, finishedHash_, masterSecret_, certsFromClient_, cert_) {
  56666. this.$val = this;
  56667. if (arguments.length === 0) {
  56668. this.c = ptrType$10.nil;
  56669. this.clientHello = ptrType$11.nil;
  56670. this.hello = ptrType$9.nil;
  56671. this.suite = ptrType.nil;
  56672. this.ellipticOk = false;
  56673. this.ecdsaOk = false;
  56674. this.sessionState = ptrType$26.nil;
  56675. this.finishedHash = new finishedHash.ptr();
  56676. this.masterSecret = sliceType$4.nil;
  56677. this.certsFromClient = sliceType$6.nil;
  56678. this.cert = ptrType$3.nil;
  56679. return;
  56680. }
  56681. this.c = c_;
  56682. this.clientHello = clientHello_;
  56683. this.hello = hello_;
  56684. this.suite = suite_;
  56685. this.ellipticOk = ellipticOk_;
  56686. this.ecdsaOk = ecdsaOk_;
  56687. this.sessionState = sessionState_;
  56688. this.finishedHash = finishedHash_;
  56689. this.masterSecret = masterSecret_;
  56690. this.certsFromClient = certsFromClient_;
  56691. this.cert = cert_;
  56692. });
  56693. rsaKeyAgreement = $pkg.rsaKeyAgreement = $newType(0, $kindStruct, "tls.rsaKeyAgreement", "rsaKeyAgreement", "crypto/tls", function() {
  56694. this.$val = this;
  56695. if (arguments.length === 0) {
  56696. return;
  56697. }
  56698. });
  56699. ecdheKeyAgreement = $pkg.ecdheKeyAgreement = $newType(0, $kindStruct, "tls.ecdheKeyAgreement", "ecdheKeyAgreement", "crypto/tls", function(version_, sigType_, privateKey_, curve_, x_, y_) {
  56700. this.$val = this;
  56701. if (arguments.length === 0) {
  56702. this.version = 0;
  56703. this.sigType = 0;
  56704. this.privateKey = sliceType$4.nil;
  56705. this.curve = $ifaceNil;
  56706. this.x = ptrType$1.nil;
  56707. this.y = ptrType$1.nil;
  56708. return;
  56709. }
  56710. this.version = version_;
  56711. this.sigType = sigType_;
  56712. this.privateKey = privateKey_;
  56713. this.curve = curve_;
  56714. this.x = x_;
  56715. this.y = y_;
  56716. });
  56717. finishedHash = $pkg.finishedHash = $newType(0, $kindStruct, "tls.finishedHash", "finishedHash", "crypto/tls", function(client_, server_, clientMD5_, serverMD5_, version_) {
  56718. this.$val = this;
  56719. if (arguments.length === 0) {
  56720. this.client = $ifaceNil;
  56721. this.server = $ifaceNil;
  56722. this.clientMD5 = $ifaceNil;
  56723. this.serverMD5 = $ifaceNil;
  56724. this.version = 0;
  56725. return;
  56726. }
  56727. this.client = client_;
  56728. this.server = server_;
  56729. this.clientMD5 = clientMD5_;
  56730. this.serverMD5 = serverMD5_;
  56731. this.version = version_;
  56732. });
  56733. sessionState = $pkg.sessionState = $newType(0, $kindStruct, "tls.sessionState", "sessionState", "crypto/tls", function(vers_, cipherSuite_, masterSecret_, certificates_) {
  56734. this.$val = this;
  56735. if (arguments.length === 0) {
  56736. this.vers = 0;
  56737. this.cipherSuite = 0;
  56738. this.masterSecret = sliceType$4.nil;
  56739. this.certificates = sliceType$6.nil;
  56740. return;
  56741. }
  56742. this.vers = vers_;
  56743. this.cipherSuite = cipherSuite_;
  56744. this.masterSecret = masterSecret_;
  56745. this.certificates = certificates_;
  56746. });
  56747. listener = $pkg.listener = $newType(0, $kindStruct, "tls.listener", "listener", "crypto/tls", function(Listener_, config_) {
  56748. this.$val = this;
  56749. if (arguments.length === 0) {
  56750. this.Listener = $ifaceNil;
  56751. this.config = ptrType$2.nil;
  56752. return;
  56753. }
  56754. this.Listener = Listener_;
  56755. this.config = config_;
  56756. });
  56757. sliceType = $sliceType($Uint16);
  56758. ptrType = $ptrType(cipherSuite);
  56759. sliceType$1 = $sliceType(ptrType);
  56760. sliceType$2 = $sliceType(signatureAndHash);
  56761. sliceType$3 = $sliceType(CurveID);
  56762. sliceType$4 = $sliceType($Uint8);
  56763. ptrType$1 = $ptrType(big.Int);
  56764. ptrType$2 = $ptrType(Config);
  56765. ptrType$3 = $ptrType(Certificate);
  56766. ptrType$7 = $ptrType(ClientSessionState);
  56767. sliceType$5 = $sliceType($emptyInterface);
  56768. arrayType = $arrayType($Uint8, 13);
  56769. ptrType$8 = $ptrType(block);
  56770. sliceType$6 = $sliceType(sliceType$4);
  56771. sliceType$7 = $sliceType($String);
  56772. ptrType$9 = $ptrType(serverHelloMsg);
  56773. ptrType$10 = $ptrType(Conn);
  56774. ptrType$11 = $ptrType(clientHelloMsg);
  56775. ptrType$12 = $ptrType(certificateMsg);
  56776. ptrType$13 = $ptrType(x509.Certificate);
  56777. sliceType$8 = $sliceType(ptrType$13);
  56778. ptrType$14 = $ptrType(x509.CertPool);
  56779. sliceType$9 = $sliceType(x509.ExtKeyUsage);
  56780. ptrType$15 = $ptrType(rsa.PublicKey);
  56781. ptrType$16 = $ptrType(ecdsa.PublicKey);
  56782. ptrType$17 = $ptrType(certificateStatusMsg);
  56783. ptrType$18 = $ptrType(serverKeyExchangeMsg);
  56784. ptrType$19 = $ptrType(certificateRequestMsg);
  56785. ptrType$20 = $ptrType(serverHelloDoneMsg);
  56786. ptrType$21 = $ptrType(clientKeyExchangeMsg);
  56787. ptrType$22 = $ptrType(finishedMsg);
  56788. ptrType$23 = $ptrType(newSessionTicketMsg);
  56789. ptrType$24 = $ptrType(nextProtoMsg);
  56790. ptrType$25 = $ptrType(certificateVerifyMsg);
  56791. ptrType$26 = $ptrType(sessionState);
  56792. ptrType$27 = $ptrType(ecdsa.PrivateKey);
  56793. ptrType$28 = $ptrType(rsa.PrivateKey);
  56794. arrayType$1 = $arrayType($Uint8, 11);
  56795. arrayType$2 = $arrayType($Uint8, 64);
  56796. arrayType$3 = $arrayType($Uint8, 4);
  56797. sliceType$10 = $sliceType(sliceType$8);
  56798. arrayType$4 = $arrayType($Uint8, 12);
  56799. arrayType$5 = $arrayType($Uint8, 16);
  56800. ptrType$29 = $ptrType(pem.Block);
  56801. funcType = $funcType([$Uint16], [keyAgreement], false);
  56802. funcType$1 = $funcType([sliceType$4, sliceType$4, $Bool], [$emptyInterface], false);
  56803. funcType$2 = $funcType([$Uint16, sliceType$4], [macFunction], false);
  56804. funcType$3 = $funcType([sliceType$4, sliceType$4], [cipher.AEAD], false);
  56805. ptrType$30 = $ptrType(fixedNonceAEAD);
  56806. sliceType$11 = $sliceType(Certificate);
  56807. arrayType$6 = $arrayType($Uint8, 32);
  56808. ptrType$31 = $ptrType(ClientHelloInfo);
  56809. funcType$4 = $funcType([], [time.Time], false);
  56810. mapType = $mapType($String, ptrType$3);
  56811. funcType$5 = $funcType([ptrType$31], [ptrType$3, $error], false);
  56812. arrayType$7 = $arrayType($Uint8, 8);
  56813. ptrType$33 = $ptrType(halfConn);
  56814. ptrType$34 = $ptrType(clientHandshakeState);
  56815. ptrType$35 = $ptrType(serverHandshakeState);
  56816. ptrType$36 = $ptrType(ecdheKeyAgreement);
  56817. ptrType$37 = $ptrType(listener);
  56818. alert.prototype.String = function() {
  56819. var $ptr, _entry, _tuple, e, ok, s;
  56820. e = this.$val;
  56821. _tuple = (_entry = alertText[e], _entry !== undefined ? [_entry.v, true] : ["", false]); s = _tuple[0]; ok = _tuple[1];
  56822. if (ok) {
  56823. return s;
  56824. }
  56825. return "alert(" + strconv.Itoa((e >> 0)) + ")";
  56826. };
  56827. $ptrType(alert).prototype.String = function() { return new alert(this.$get()).String(); };
  56828. alert.prototype.Error = function() {
  56829. var $ptr, e;
  56830. e = this.$val;
  56831. return new alert(e).String();
  56832. };
  56833. $ptrType(alert).prototype.Error = function() { return new alert(this.$get()).Error(); };
  56834. cipherRC4 = function(key, iv, isRead) {
  56835. var $ptr, _tuple, cipher$1, isRead, iv, key;
  56836. _tuple = rc4.NewCipher(key); cipher$1 = _tuple[0];
  56837. return cipher$1;
  56838. };
  56839. cipher3DES = function(key, iv, isRead) {
  56840. var $ptr, _r, _r$1, _tuple, block$1, isRead, iv, key, $s, $r;
  56841. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _tuple = $f._tuple; block$1 = $f.block$1; isRead = $f.isRead; iv = $f.iv; key = $f.key; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  56842. _tuple = des.NewTripleDESCipher(key); block$1 = _tuple[0];
  56843. /* */ if (isRead) { $s = 1; continue; }
  56844. /* */ $s = 2; continue;
  56845. /* if (isRead) { */ case 1:
  56846. _r = cipher.NewCBCDecrypter(block$1, iv); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  56847. return _r;
  56848. /* } */ case 2:
  56849. _r$1 = cipher.NewCBCEncrypter(block$1, iv); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  56850. return _r$1;
  56851. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: cipher3DES }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._tuple = _tuple; $f.block$1 = block$1; $f.isRead = isRead; $f.iv = iv; $f.key = key; $f.$s = $s; $f.$r = $r; return $f;
  56852. };
  56853. cipherAES = function(key, iv, isRead) {
  56854. var $ptr, _r, _r$1, _tuple, block$1, isRead, iv, key, $s, $r;
  56855. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _tuple = $f._tuple; block$1 = $f.block$1; isRead = $f.isRead; iv = $f.iv; key = $f.key; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  56856. _tuple = aes.NewCipher(key); block$1 = _tuple[0];
  56857. /* */ if (isRead) { $s = 1; continue; }
  56858. /* */ $s = 2; continue;
  56859. /* if (isRead) { */ case 1:
  56860. _r = cipher.NewCBCDecrypter(block$1, iv); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  56861. return _r;
  56862. /* } */ case 2:
  56863. _r$1 = cipher.NewCBCEncrypter(block$1, iv); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  56864. return _r$1;
  56865. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: cipherAES }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._tuple = _tuple; $f.block$1 = block$1; $f.isRead = isRead; $f.iv = iv; $f.key = key; $f.$s = $s; $f.$r = $r; return $f;
  56866. };
  56867. macSHA1 = function(version, key) {
  56868. var $ptr, _r, key, mac, version, x, $s, $r;
  56869. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; key = $f.key; mac = $f.mac; version = $f.version; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  56870. if (version === 768) {
  56871. mac = new ssl30MAC.ptr(sha1.New(), $makeSlice(sliceType$4, key.$length));
  56872. $copySlice(mac.key, key);
  56873. return new mac.constructor.elem(mac);
  56874. }
  56875. _r = hmac.New(sha1.New, key); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  56876. return (x = new tls10MAC.ptr(_r), new x.constructor.elem(x));
  56877. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: macSHA1 }; } $f.$ptr = $ptr; $f._r = _r; $f.key = key; $f.mac = mac; $f.version = version; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
  56878. };
  56879. fixedNonceAEAD.ptr.prototype.NonceSize = function() {
  56880. var $ptr, f;
  56881. f = this;
  56882. return 8;
  56883. };
  56884. fixedNonceAEAD.prototype.NonceSize = function() { return this.$val.NonceSize(); };
  56885. fixedNonceAEAD.ptr.prototype.Overhead = function() {
  56886. var $ptr, _r, f, $s, $r;
  56887. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; f = $f.f; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  56888. f = this;
  56889. _r = f.aead.Overhead(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  56890. return _r;
  56891. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: fixedNonceAEAD.ptr.prototype.Overhead }; } $f.$ptr = $ptr; $f._r = _r; $f.f = f; $f.$s = $s; $f.$r = $r; return $f;
  56892. };
  56893. fixedNonceAEAD.prototype.Overhead = function() { return this.$val.Overhead(); };
  56894. fixedNonceAEAD.ptr.prototype.Seal = function(out, nonce, plaintext, additionalData) {
  56895. var $ptr, _r, additionalData, f, nonce, out, plaintext, $s, $r;
  56896. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; additionalData = $f.additionalData; f = $f.f; nonce = $f.nonce; out = $f.out; plaintext = $f.plaintext; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  56897. f = this;
  56898. $copySlice($subslice(f.sealNonce, (f.sealNonce.$length - 8 >> 0)), nonce);
  56899. _r = f.aead.Seal(out, f.sealNonce, plaintext, additionalData); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  56900. return _r;
  56901. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: fixedNonceAEAD.ptr.prototype.Seal }; } $f.$ptr = $ptr; $f._r = _r; $f.additionalData = additionalData; $f.f = f; $f.nonce = nonce; $f.out = out; $f.plaintext = plaintext; $f.$s = $s; $f.$r = $r; return $f;
  56902. };
  56903. fixedNonceAEAD.prototype.Seal = function(out, nonce, plaintext, additionalData) { return this.$val.Seal(out, nonce, plaintext, additionalData); };
  56904. fixedNonceAEAD.ptr.prototype.Open = function(out, nonce, plaintext, additionalData) {
  56905. var $ptr, _r, additionalData, f, nonce, out, plaintext, $s, $r;
  56906. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; additionalData = $f.additionalData; f = $f.f; nonce = $f.nonce; out = $f.out; plaintext = $f.plaintext; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  56907. f = this;
  56908. $copySlice($subslice(f.openNonce, (f.openNonce.$length - 8 >> 0)), nonce);
  56909. _r = f.aead.Open(out, f.openNonce, plaintext, additionalData); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  56910. return _r;
  56911. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: fixedNonceAEAD.ptr.prototype.Open }; } $f.$ptr = $ptr; $f._r = _r; $f.additionalData = additionalData; $f.f = f; $f.nonce = nonce; $f.out = out; $f.plaintext = plaintext; $f.$s = $s; $f.$r = $r; return $f;
  56912. };
  56913. fixedNonceAEAD.prototype.Open = function(out, nonce, plaintext, additionalData) { return this.$val.Open(out, nonce, plaintext, additionalData); };
  56914. aeadAESGCM = function(key, fixedNonce) {
  56915. var $ptr, _r, _tmp, _tmp$1, _tuple, _tuple$1, aead, aes$1, err, fixedNonce, key, nonce1, nonce2, $s, $r;
  56916. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; aead = $f.aead; aes$1 = $f.aes$1; err = $f.err; fixedNonce = $f.fixedNonce; key = $f.key; nonce1 = $f.nonce1; nonce2 = $f.nonce2; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  56917. _tuple = aes.NewCipher(key); aes$1 = _tuple[0]; err = _tuple[1];
  56918. if (!($interfaceIsEqual(err, $ifaceNil))) {
  56919. $panic(err);
  56920. }
  56921. _r = cipher.NewGCM(aes$1); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  56922. _tuple$1 = _r; aead = _tuple$1[0]; err = _tuple$1[1];
  56923. if (!($interfaceIsEqual(err, $ifaceNil))) {
  56924. $panic(err);
  56925. }
  56926. _tmp = $makeSlice(sliceType$4, 12); _tmp$1 = $makeSlice(sliceType$4, 12); nonce1 = _tmp; nonce2 = _tmp$1;
  56927. $copySlice(nonce1, fixedNonce);
  56928. $copySlice(nonce2, fixedNonce);
  56929. return new fixedNonceAEAD.ptr(nonce1, nonce2, aead);
  56930. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: aeadAESGCM }; } $f.$ptr = $ptr; $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.aead = aead; $f.aes$1 = aes$1; $f.err = err; $f.fixedNonce = fixedNonce; $f.key = key; $f.nonce1 = nonce1; $f.nonce2 = nonce2; $f.$s = $s; $f.$r = $r; return $f;
  56931. };
  56932. ssl30MAC.ptr.prototype.Size = function() {
  56933. var $ptr, _r, s, $s, $r;
  56934. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  56935. s = $clone(this, ssl30MAC);
  56936. _r = s.h.Size(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  56937. return _r;
  56938. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: ssl30MAC.ptr.prototype.Size }; } $f.$ptr = $ptr; $f._r = _r; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
  56939. };
  56940. ssl30MAC.prototype.Size = function() { return this.$val.Size(); };
  56941. ssl30MAC.ptr.prototype.MAC = function(digestBuf, seq, header, data) {
  56942. var $ptr, _r, _r$1, _r$10, _r$11, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, data, digestBuf, header, padLength, s, seq, $s, $r;
  56943. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _r$9 = $f._r$9; data = $f.data; digestBuf = $f.digestBuf; header = $f.header; padLength = $f.padLength; s = $f.s; seq = $f.seq; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  56944. s = $clone(this, ssl30MAC);
  56945. padLength = 48;
  56946. _r = s.h.Size(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  56947. /* */ if (_r === 20) { $s = 1; continue; }
  56948. /* */ $s = 2; continue;
  56949. /* if (_r === 20) { */ case 1:
  56950. padLength = 40;
  56951. /* } */ case 2:
  56952. $r = s.h.Reset(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  56953. _r$1 = s.h.Write(s.key); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  56954. _r$1;
  56955. _r$2 = s.h.Write($subslice(new sliceType$4(ssl30Pad1), 0, padLength)); /* */ $s = 6; case 6: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  56956. _r$2;
  56957. _r$3 = s.h.Write(seq); /* */ $s = 7; case 7: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  56958. _r$3;
  56959. _r$4 = s.h.Write($subslice(header, 0, 1)); /* */ $s = 8; case 8: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
  56960. _r$4;
  56961. _r$5 = s.h.Write($subslice(header, 3, 5)); /* */ $s = 9; case 9: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
  56962. _r$5;
  56963. _r$6 = s.h.Write(data); /* */ $s = 10; case 10: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
  56964. _r$6;
  56965. _r$7 = s.h.Sum($subslice(digestBuf, 0, 0)); /* */ $s = 11; case 11: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
  56966. digestBuf = _r$7;
  56967. $r = s.h.Reset(); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  56968. _r$8 = s.h.Write(s.key); /* */ $s = 13; case 13: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
  56969. _r$8;
  56970. _r$9 = s.h.Write($subslice(new sliceType$4(ssl30Pad2), 0, padLength)); /* */ $s = 14; case 14: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
  56971. _r$9;
  56972. _r$10 = s.h.Write(digestBuf); /* */ $s = 15; case 15: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
  56973. _r$10;
  56974. _r$11 = s.h.Sum($subslice(digestBuf, 0, 0)); /* */ $s = 16; case 16: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
  56975. return _r$11;
  56976. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: ssl30MAC.ptr.prototype.MAC }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._r$9 = _r$9; $f.data = data; $f.digestBuf = digestBuf; $f.header = header; $f.padLength = padLength; $f.s = s; $f.seq = seq; $f.$s = $s; $f.$r = $r; return $f;
  56977. };
  56978. ssl30MAC.prototype.MAC = function(digestBuf, seq, header, data) { return this.$val.MAC(digestBuf, seq, header, data); };
  56979. tls10MAC.ptr.prototype.Size = function() {
  56980. var $ptr, _r, s, $s, $r;
  56981. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  56982. s = $clone(this, tls10MAC);
  56983. _r = s.h.Size(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  56984. return _r;
  56985. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: tls10MAC.ptr.prototype.Size }; } $f.$ptr = $ptr; $f._r = _r; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
  56986. };
  56987. tls10MAC.prototype.Size = function() { return this.$val.Size(); };
  56988. tls10MAC.ptr.prototype.MAC = function(digestBuf, seq, header, data) {
  56989. var $ptr, _r, _r$1, _r$2, _r$3, data, digestBuf, header, s, seq, $s, $r;
  56990. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; data = $f.data; digestBuf = $f.digestBuf; header = $f.header; s = $f.s; seq = $f.seq; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  56991. s = $clone(this, tls10MAC);
  56992. $r = s.h.Reset(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  56993. _r = s.h.Write(seq); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  56994. _r;
  56995. _r$1 = s.h.Write(header); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  56996. _r$1;
  56997. _r$2 = s.h.Write(data); /* */ $s = 4; case 4: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  56998. _r$2;
  56999. _r$3 = s.h.Sum($subslice(digestBuf, 0, 0)); /* */ $s = 5; case 5: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  57000. return _r$3;
  57001. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: tls10MAC.ptr.prototype.MAC }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f.data = data; $f.digestBuf = digestBuf; $f.header = header; $f.s = s; $f.seq = seq; $f.$s = $s; $f.$r = $r; return $f;
  57002. };
  57003. tls10MAC.prototype.MAC = function(digestBuf, seq, header, data) { return this.$val.MAC(digestBuf, seq, header, data); };
  57004. rsaKA = function(version) {
  57005. var $ptr, version, x;
  57006. return (x = new rsaKeyAgreement.ptr(), new x.constructor.elem(x));
  57007. };
  57008. ecdheECDSAKA = function(version) {
  57009. var $ptr, version;
  57010. return new ecdheKeyAgreement.ptr(version, 3, sliceType$4.nil, $ifaceNil, ptrType$1.nil, ptrType$1.nil);
  57011. };
  57012. ecdheRSAKA = function(version) {
  57013. var $ptr, version;
  57014. return new ecdheKeyAgreement.ptr(version, 1, sliceType$4.nil, $ifaceNil, ptrType$1.nil, ptrType$1.nil);
  57015. };
  57016. mutualCipherSuite = function(have, want) {
  57017. var $ptr, _i, _i$1, _ref, _ref$1, have, id, suite, want;
  57018. _ref = have;
  57019. _i = 0;
  57020. while (true) {
  57021. if (!(_i < _ref.$length)) { break; }
  57022. id = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]);
  57023. if (id === want) {
  57024. _ref$1 = cipherSuites;
  57025. _i$1 = 0;
  57026. while (true) {
  57027. if (!(_i$1 < _ref$1.$length)) { break; }
  57028. suite = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? $throwRuntimeError("index out of range") : _ref$1.$array[_ref$1.$offset + _i$1]);
  57029. if (suite.id === want) {
  57030. return suite;
  57031. }
  57032. _i$1++;
  57033. }
  57034. return ptrType.nil;
  57035. }
  57036. _i++;
  57037. }
  57038. return ptrType.nil;
  57039. };
  57040. Config.ptr.prototype.serverInit = function() {
  57041. var $ptr, _i, _r, _ref, _tuple, b, c, err, $s, $r;
  57042. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _i = $f._i; _r = $f._r; _ref = $f._ref; _tuple = $f._tuple; b = $f.b; c = $f.c; err = $f.err; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  57043. c = this;
  57044. if (c.SessionTicketsDisabled) {
  57045. return;
  57046. }
  57047. _ref = c.SessionTicketKey;
  57048. _i = 0;
  57049. while (true) {
  57050. if (!(_i < 32)) { break; }
  57051. b = ((_i < 0 || _i >= _ref.length) ? $throwRuntimeError("index out of range") : _ref[_i]);
  57052. if (!((b === 0))) {
  57053. return;
  57054. }
  57055. _i++;
  57056. }
  57057. _r = io.ReadFull(c.rand(), new sliceType$4(c.SessionTicketKey)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  57058. _tuple = _r; err = _tuple[1];
  57059. /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 2; continue; }
  57060. /* */ $s = 3; continue;
  57061. /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 2:
  57062. c.SessionTicketsDisabled = true;
  57063. /* } */ case 3:
  57064. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Config.ptr.prototype.serverInit }; } $f.$ptr = $ptr; $f._i = _i; $f._r = _r; $f._ref = _ref; $f._tuple = _tuple; $f.b = b; $f.c = c; $f.err = err; $f.$s = $s; $f.$r = $r; return $f;
  57065. };
  57066. Config.prototype.serverInit = function() { return this.$val.serverInit(); };
  57067. Config.ptr.prototype.rand = function() {
  57068. var $ptr, c, r;
  57069. c = this;
  57070. r = c.Rand;
  57071. if ($interfaceIsEqual(r, $ifaceNil)) {
  57072. return rand.Reader;
  57073. }
  57074. return r;
  57075. };
  57076. Config.prototype.rand = function() { return this.$val.rand(); };
  57077. Config.ptr.prototype.time = function() {
  57078. var $ptr, _r, c, t, $s, $r;
  57079. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; c = $f.c; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  57080. c = this;
  57081. t = c.Time;
  57082. if (t === $throwNilPointerError) {
  57083. t = time.Now;
  57084. }
  57085. _r = t(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  57086. return _r;
  57087. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Config.ptr.prototype.time }; } $f.$ptr = $ptr; $f._r = _r; $f.c = c; $f.t = t; $f.$s = $s; $f.$r = $r; return $f;
  57088. };
  57089. Config.prototype.time = function() { return this.$val.time(); };
  57090. Config.ptr.prototype.cipherSuites = function() {
  57091. var $ptr, _r, c, s, $s, $r;
  57092. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; c = $f.c; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  57093. c = this;
  57094. s = c.CipherSuites;
  57095. /* */ if (s === sliceType.nil) { $s = 1; continue; }
  57096. /* */ $s = 2; continue;
  57097. /* if (s === sliceType.nil) { */ case 1:
  57098. _r = defaultCipherSuites(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  57099. s = _r;
  57100. /* } */ case 2:
  57101. return s;
  57102. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Config.ptr.prototype.cipherSuites }; } $f.$ptr = $ptr; $f._r = _r; $f.c = c; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
  57103. };
  57104. Config.prototype.cipherSuites = function() { return this.$val.cipherSuites(); };
  57105. Config.ptr.prototype.minVersion = function() {
  57106. var $ptr, c;
  57107. c = this;
  57108. if (c === ptrType$2.nil || (c.MinVersion === 0)) {
  57109. return 768;
  57110. }
  57111. return c.MinVersion;
  57112. };
  57113. Config.prototype.minVersion = function() { return this.$val.minVersion(); };
  57114. Config.ptr.prototype.maxVersion = function() {
  57115. var $ptr, c;
  57116. c = this;
  57117. if (c === ptrType$2.nil || (c.MaxVersion === 0)) {
  57118. return 771;
  57119. }
  57120. return c.MaxVersion;
  57121. };
  57122. Config.prototype.maxVersion = function() { return this.$val.maxVersion(); };
  57123. Config.ptr.prototype.curvePreferences = function() {
  57124. var $ptr, c;
  57125. c = this;
  57126. if (c === ptrType$2.nil || (c.CurvePreferences.$length === 0)) {
  57127. return defaultCurvePreferences;
  57128. }
  57129. return c.CurvePreferences;
  57130. };
  57131. Config.prototype.curvePreferences = function() { return this.$val.curvePreferences(); };
  57132. Config.ptr.prototype.mutualVersion = function(vers) {
  57133. var $ptr, c, maxVersion, minVersion, vers;
  57134. c = this;
  57135. minVersion = c.minVersion();
  57136. maxVersion = c.maxVersion();
  57137. if (vers < minVersion) {
  57138. return [0, false];
  57139. }
  57140. if (vers > maxVersion) {
  57141. vers = maxVersion;
  57142. }
  57143. return [vers, true];
  57144. };
  57145. Config.prototype.mutualVersion = function(vers) { return this.$val.mutualVersion(vers); };
  57146. Config.ptr.prototype.getCertificate = function(clientHello) {
  57147. var $ptr, _entry, _entry$1, _i, _r, _r$1, _ref, _tuple, _tuple$1, _tuple$2, c, candidate, cert, cert$1, cert$2, clientHello, err, i, labels, name, ok, ok$1, x, x$1, $s, $r;
  57148. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _entry = $f._entry; _entry$1 = $f._entry$1; _i = $f._i; _r = $f._r; _r$1 = $f._r$1; _ref = $f._ref; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; c = $f.c; candidate = $f.candidate; cert = $f.cert; cert$1 = $f.cert$1; cert$2 = $f.cert$2; clientHello = $f.clientHello; err = $f.err; i = $f.i; labels = $f.labels; name = $f.name; ok = $f.ok; ok$1 = $f.ok$1; x = $f.x; x$1 = $f.x$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  57149. c = this;
  57150. /* */ if (!(c.GetCertificate === $throwNilPointerError)) { $s = 1; continue; }
  57151. /* */ $s = 2; continue;
  57152. /* if (!(c.GetCertificate === $throwNilPointerError)) { */ case 1:
  57153. _r = c.GetCertificate(clientHello); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  57154. _tuple = _r; cert = _tuple[0]; err = _tuple[1];
  57155. if (!(cert === ptrType$3.nil) || !($interfaceIsEqual(err, $ifaceNil))) {
  57156. return [cert, err];
  57157. }
  57158. /* } */ case 2:
  57159. if ((c.Certificates.$length === 1) || c.NameToCertificate === false) {
  57160. return [(x = c.Certificates, (0 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 0])), $ifaceNil];
  57161. }
  57162. _r$1 = strings.ToLower(clientHello.ServerName); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  57163. name = _r$1;
  57164. while (true) {
  57165. if (!(name.length > 0 && (name.charCodeAt((name.length - 1 >> 0)) === 46))) { break; }
  57166. name = name.substring(0, (name.length - 1 >> 0));
  57167. }
  57168. _tuple$1 = (_entry = c.NameToCertificate[name], _entry !== undefined ? [_entry.v, true] : [ptrType$3.nil, false]); cert$1 = _tuple$1[0]; ok = _tuple$1[1];
  57169. if (ok) {
  57170. return [cert$1, $ifaceNil];
  57171. }
  57172. labels = strings.Split(name, ".");
  57173. _ref = labels;
  57174. _i = 0;
  57175. while (true) {
  57176. if (!(_i < _ref.$length)) { break; }
  57177. i = _i;
  57178. ((i < 0 || i >= labels.$length) ? $throwRuntimeError("index out of range") : labels.$array[labels.$offset + i] = "*");
  57179. candidate = strings.Join(labels, ".");
  57180. _tuple$2 = (_entry$1 = c.NameToCertificate[candidate], _entry$1 !== undefined ? [_entry$1.v, true] : [ptrType$3.nil, false]); cert$2 = _tuple$2[0]; ok$1 = _tuple$2[1];
  57181. if (ok$1) {
  57182. return [cert$2, $ifaceNil];
  57183. }
  57184. _i++;
  57185. }
  57186. return [(x$1 = c.Certificates, (0 >= x$1.$length ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + 0])), $ifaceNil];
  57187. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Config.ptr.prototype.getCertificate }; } $f.$ptr = $ptr; $f._entry = _entry; $f._entry$1 = _entry$1; $f._i = _i; $f._r = _r; $f._r$1 = _r$1; $f._ref = _ref; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f.c = c; $f.candidate = candidate; $f.cert = cert; $f.cert$1 = cert$1; $f.cert$2 = cert$2; $f.clientHello = clientHello; $f.err = err; $f.i = i; $f.labels = labels; $f.name = name; $f.ok = ok; $f.ok$1 = ok$1; $f.x = x; $f.x$1 = x$1; $f.$s = $s; $f.$r = $r; return $f;
  57188. };
  57189. Config.prototype.getCertificate = function(clientHello) { return this.$val.getCertificate(clientHello); };
  57190. Config.ptr.prototype.BuildNameToCertificate = function() {
  57191. var $ptr, _i, _i$1, _key$1, _key$2, _r, _ref, _ref$1, _tuple, c, cert, err, i, san, x, x$1, x509Cert, $s, $r;
  57192. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _i = $f._i; _i$1 = $f._i$1; _key$1 = $f._key$1; _key$2 = $f._key$2; _r = $f._r; _ref = $f._ref; _ref$1 = $f._ref$1; _tuple = $f._tuple; c = $f.c; cert = $f.cert; err = $f.err; i = $f.i; san = $f.san; x = $f.x; x$1 = $f.x$1; x509Cert = $f.x509Cert; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  57193. c = this;
  57194. c.NameToCertificate = new $Map();
  57195. _ref = c.Certificates;
  57196. _i = 0;
  57197. /* while (true) { */ case 1:
  57198. /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; }
  57199. i = _i;
  57200. cert = (x = c.Certificates, ((i < 0 || i >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + i]));
  57201. _r = x509.ParseCertificate((x$1 = cert.Certificate, (0 >= x$1.$length ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + 0]))); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  57202. _tuple = _r; x509Cert = _tuple[0]; err = _tuple[1];
  57203. if (!($interfaceIsEqual(err, $ifaceNil))) {
  57204. _i++;
  57205. /* continue; */ $s = 1; continue;
  57206. }
  57207. if (x509Cert.Subject.CommonName.length > 0) {
  57208. _key$1 = x509Cert.Subject.CommonName; (c.NameToCertificate || $throwRuntimeError("assignment to entry in nil map"))[_key$1] = { k: _key$1, v: cert };
  57209. }
  57210. _ref$1 = x509Cert.DNSNames;
  57211. _i$1 = 0;
  57212. while (true) {
  57213. if (!(_i$1 < _ref$1.$length)) { break; }
  57214. san = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? $throwRuntimeError("index out of range") : _ref$1.$array[_ref$1.$offset + _i$1]);
  57215. _key$2 = san; (c.NameToCertificate || $throwRuntimeError("assignment to entry in nil map"))[_key$2] = { k: _key$2, v: cert };
  57216. _i$1++;
  57217. }
  57218. _i++;
  57219. /* } */ $s = 1; continue; case 2:
  57220. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Config.ptr.prototype.BuildNameToCertificate }; } $f.$ptr = $ptr; $f._i = _i; $f._i$1 = _i$1; $f._key$1 = _key$1; $f._key$2 = _key$2; $f._r = _r; $f._ref = _ref; $f._ref$1 = _ref$1; $f._tuple = _tuple; $f.c = c; $f.cert = cert; $f.err = err; $f.i = i; $f.san = san; $f.x = x; $f.x$1 = x$1; $f.x509Cert = x509Cert; $f.$s = $s; $f.$r = $r; return $f;
  57221. };
  57222. Config.prototype.BuildNameToCertificate = function() { return this.$val.BuildNameToCertificate(); };
  57223. defaultConfig = function() {
  57224. var $ptr;
  57225. return emptyConfig;
  57226. };
  57227. defaultCipherSuites = function() {
  57228. var $ptr, $s, $r;
  57229. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  57230. $r = once.Do(initDefaultCipherSuites); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  57231. return varDefaultCipherSuites;
  57232. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: defaultCipherSuites }; } $f.$ptr = $ptr; $f.$s = $s; $f.$r = $r; return $f;
  57233. };
  57234. initDefaultCipherSuites = function() {
  57235. var $ptr, _i, _ref, i, suite;
  57236. varDefaultCipherSuites = $makeSlice(sliceType, cipherSuites.$length);
  57237. _ref = cipherSuites;
  57238. _i = 0;
  57239. while (true) {
  57240. if (!(_i < _ref.$length)) { break; }
  57241. i = _i;
  57242. suite = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]);
  57243. ((i < 0 || i >= varDefaultCipherSuites.$length) ? $throwRuntimeError("index out of range") : varDefaultCipherSuites.$array[varDefaultCipherSuites.$offset + i] = suite.id);
  57244. _i++;
  57245. }
  57246. };
  57247. unexpectedMessageError = function(wanted, got) {
  57248. var $ptr, _r, got, wanted, $s, $r;
  57249. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; got = $f.got; wanted = $f.wanted; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  57250. _r = fmt.Errorf("tls: received unexpected handshake message of type %T when waiting for %T", new sliceType$5([got, wanted])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  57251. return _r;
  57252. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: unexpectedMessageError }; } $f.$ptr = $ptr; $f._r = _r; $f.got = got; $f.wanted = wanted; $f.$s = $s; $f.$r = $r; return $f;
  57253. };
  57254. Conn.ptr.prototype.LocalAddr = function() {
  57255. var $ptr, _r, c, $s, $r;
  57256. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; c = $f.c; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  57257. c = this;
  57258. _r = c.conn.LocalAddr(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  57259. return _r;
  57260. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Conn.ptr.prototype.LocalAddr }; } $f.$ptr = $ptr; $f._r = _r; $f.c = c; $f.$s = $s; $f.$r = $r; return $f;
  57261. };
  57262. Conn.prototype.LocalAddr = function() { return this.$val.LocalAddr(); };
  57263. Conn.ptr.prototype.RemoteAddr = function() {
  57264. var $ptr, _r, c, $s, $r;
  57265. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; c = $f.c; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  57266. c = this;
  57267. _r = c.conn.RemoteAddr(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  57268. return _r;
  57269. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Conn.ptr.prototype.RemoteAddr }; } $f.$ptr = $ptr; $f._r = _r; $f.c = c; $f.$s = $s; $f.$r = $r; return $f;
  57270. };
  57271. Conn.prototype.RemoteAddr = function() { return this.$val.RemoteAddr(); };
  57272. Conn.ptr.prototype.SetDeadline = function(t) {
  57273. var $ptr, _r, c, t, $s, $r;
  57274. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; c = $f.c; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  57275. c = this;
  57276. t = $clone(t, time.Time);
  57277. _r = c.conn.SetDeadline(t); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  57278. return _r;
  57279. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Conn.ptr.prototype.SetDeadline }; } $f.$ptr = $ptr; $f._r = _r; $f.c = c; $f.t = t; $f.$s = $s; $f.$r = $r; return $f;
  57280. };
  57281. Conn.prototype.SetDeadline = function(t) { return this.$val.SetDeadline(t); };
  57282. Conn.ptr.prototype.SetReadDeadline = function(t) {
  57283. var $ptr, _r, c, t, $s, $r;
  57284. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; c = $f.c; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  57285. c = this;
  57286. t = $clone(t, time.Time);
  57287. _r = c.conn.SetReadDeadline(t); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  57288. return _r;
  57289. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Conn.ptr.prototype.SetReadDeadline }; } $f.$ptr = $ptr; $f._r = _r; $f.c = c; $f.t = t; $f.$s = $s; $f.$r = $r; return $f;
  57290. };
  57291. Conn.prototype.SetReadDeadline = function(t) { return this.$val.SetReadDeadline(t); };
  57292. Conn.ptr.prototype.SetWriteDeadline = function(t) {
  57293. var $ptr, _r, c, t, $s, $r;
  57294. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; c = $f.c; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  57295. c = this;
  57296. t = $clone(t, time.Time);
  57297. _r = c.conn.SetWriteDeadline(t); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  57298. return _r;
  57299. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Conn.ptr.prototype.SetWriteDeadline }; } $f.$ptr = $ptr; $f._r = _r; $f.c = c; $f.t = t; $f.$s = $s; $f.$r = $r; return $f;
  57300. };
  57301. Conn.prototype.SetWriteDeadline = function(t) { return this.$val.SetWriteDeadline(t); };
  57302. halfConn.ptr.prototype.setErrorLocked = function(err) {
  57303. var $ptr, err, hc;
  57304. hc = this;
  57305. hc.err = err;
  57306. return err;
  57307. };
  57308. halfConn.prototype.setErrorLocked = function(err) { return this.$val.setErrorLocked(err); };
  57309. halfConn.ptr.prototype.error = function() {
  57310. var $ptr, err, hc, $s, $r;
  57311. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; err = $f.err; hc = $f.hc; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  57312. hc = this;
  57313. $r = hc.Mutex.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  57314. err = hc.err;
  57315. $r = hc.Mutex.Unlock(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  57316. return err;
  57317. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: halfConn.ptr.prototype.error }; } $f.$ptr = $ptr; $f.err = err; $f.hc = hc; $f.$s = $s; $f.$r = $r; return $f;
  57318. };
  57319. halfConn.prototype.error = function() { return this.$val.error(); };
  57320. halfConn.ptr.prototype.prepareCipherSpec = function(version, cipher$1, mac) {
  57321. var $ptr, cipher$1, hc, mac, version;
  57322. hc = this;
  57323. hc.version = version;
  57324. hc.nextCipher = cipher$1;
  57325. hc.nextMac = mac;
  57326. };
  57327. halfConn.prototype.prepareCipherSpec = function(version, cipher$1, mac) { return this.$val.prepareCipherSpec(version, cipher$1, mac); };
  57328. halfConn.ptr.prototype.changeCipherSpec = function() {
  57329. var $ptr, _i, _ref, hc, i, x;
  57330. hc = this;
  57331. if ($interfaceIsEqual(hc.nextCipher, $ifaceNil)) {
  57332. return new alert(80);
  57333. }
  57334. hc.cipher = hc.nextCipher;
  57335. hc.mac = hc.nextMac;
  57336. hc.nextCipher = $ifaceNil;
  57337. hc.nextMac = $ifaceNil;
  57338. _ref = hc.seq;
  57339. _i = 0;
  57340. while (true) {
  57341. if (!(_i < 8)) { break; }
  57342. i = _i;
  57343. (x = hc.seq, ((i < 0 || i >= x.length) ? $throwRuntimeError("index out of range") : x[i] = 0));
  57344. _i++;
  57345. }
  57346. return $ifaceNil;
  57347. };
  57348. halfConn.prototype.changeCipherSpec = function() { return this.$val.changeCipherSpec(); };
  57349. halfConn.ptr.prototype.incSeq = function() {
  57350. var $ptr, hc, i, x, x$1, x$2;
  57351. hc = this;
  57352. i = 7;
  57353. while (true) {
  57354. if (!(i >= 0)) { break; }
  57355. (x$1 = hc.seq, ((i < 0 || i >= x$1.length) ? $throwRuntimeError("index out of range") : x$1[i] = (x = hc.seq, ((i < 0 || i >= x.length) ? $throwRuntimeError("index out of range") : x[i])) + (1) << 24 >>> 24));
  57356. if (!(((x$2 = hc.seq, ((i < 0 || i >= x$2.length) ? $throwRuntimeError("index out of range") : x$2[i])) === 0))) {
  57357. return;
  57358. }
  57359. i = i - (1) >> 0;
  57360. }
  57361. $panic(new $String("TLS: sequence number wraparound"));
  57362. };
  57363. halfConn.prototype.incSeq = function() { return this.$val.incSeq(); };
  57364. removePadding = function(payload) {
  57365. var $ptr, b, good, i, mask, paddingLen, payload, t, t$1, toCheck, toRemove, x, x$1;
  57366. if (payload.$length < 1) {
  57367. return [payload, 0];
  57368. }
  57369. paddingLen = (x = payload.$length - 1 >> 0, ((x < 0 || x >= payload.$length) ? $throwRuntimeError("index out of range") : payload.$array[payload.$offset + x]));
  57370. t = ((payload.$length - 1 >> 0) >>> 0) - (paddingLen >>> 0) >>> 0;
  57371. good = ((((~t >>> 0) >> 0) >> 31 >> 0) << 24 >>> 24);
  57372. toCheck = 255;
  57373. if ((toCheck + 1 >> 0) > payload.$length) {
  57374. toCheck = payload.$length - 1 >> 0;
  57375. }
  57376. i = 0;
  57377. while (true) {
  57378. if (!(i < toCheck)) { break; }
  57379. t$1 = (paddingLen >>> 0) - (i >>> 0) >>> 0;
  57380. mask = ((((~t$1 >>> 0) >> 0) >> 31 >> 0) << 24 >>> 24);
  57381. b = (x$1 = (payload.$length - 1 >> 0) - i >> 0, ((x$1 < 0 || x$1 >= payload.$length) ? $throwRuntimeError("index out of range") : payload.$array[payload.$offset + x$1]));
  57382. good = (good & ~(((((mask & paddingLen) >>> 0) ^ ((mask & b) >>> 0)) << 24 >>> 24))) << 24 >>> 24;
  57383. i = i + (1) >> 0;
  57384. }
  57385. good = (good & ((good << 4 << 24 >>> 24))) >>> 0;
  57386. good = (good & ((good << 2 << 24 >>> 24))) >>> 0;
  57387. good = (good & ((good << 1 << 24 >>> 24))) >>> 0;
  57388. good = (((good << 24 >> 24) >> 7 << 24 >> 24) << 24 >>> 24);
  57389. toRemove = ((good & paddingLen) >>> 0) + 1 << 24 >>> 24;
  57390. return [$subslice(payload, 0, (payload.$length - (toRemove >> 0) >> 0)), good];
  57391. };
  57392. removePaddingSSL30 = function(payload) {
  57393. var $ptr, paddingLen, payload, x;
  57394. if (payload.$length < 1) {
  57395. return [payload, 0];
  57396. }
  57397. paddingLen = ((x = payload.$length - 1 >> 0, ((x < 0 || x >= payload.$length) ? $throwRuntimeError("index out of range") : payload.$array[payload.$offset + x])) >> 0) + 1 >> 0;
  57398. if (paddingLen > payload.$length) {
  57399. return [payload, 0];
  57400. }
  57401. return [$subslice(payload, 0, (payload.$length - paddingLen >> 0)), 255];
  57402. };
  57403. roundUp = function(a, b) {
  57404. var $ptr, _r, _r$1, a, b;
  57405. return a + (_r = ((b - (_r$1 = a % b, _r$1 === _r$1 ? _r$1 : $throwRuntimeError("integer divide by zero")) >> 0)) % b, _r === _r ? _r : $throwRuntimeError("integer divide by zero")) >> 0;
  57406. };
  57407. halfConn.ptr.prototype.decrypt = function(b) {
  57408. var $ptr, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _ref, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$16, _tmp$17, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, _tuple$2, additionalData, alertValue, b, blockSize, c, c$1, c$2, c$3, err, explicitIVLen, hc, localMAC, macSize, n, n$1, nonce, ok, paddingGood, payload, prefixLen, remoteMAC, x, x$1, $s, $r;
  57409. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _ref = $f._ref; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$10 = $f._tmp$10; _tmp$11 = $f._tmp$11; _tmp$12 = $f._tmp$12; _tmp$13 = $f._tmp$13; _tmp$14 = $f._tmp$14; _tmp$15 = $f._tmp$15; _tmp$16 = $f._tmp$16; _tmp$17 = $f._tmp$17; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tmp$6 = $f._tmp$6; _tmp$7 = $f._tmp$7; _tmp$8 = $f._tmp$8; _tmp$9 = $f._tmp$9; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; additionalData = $f.additionalData; alertValue = $f.alertValue; b = $f.b; blockSize = $f.blockSize; c = $f.c; c$1 = $f.c$1; c$2 = $f.c$2; c$3 = $f.c$3; err = $f.err; explicitIVLen = $f.explicitIVLen; hc = $f.hc; localMAC = $f.localMAC; macSize = $f.macSize; n = $f.n; n$1 = $f.n$1; nonce = $f.nonce; ok = $f.ok; paddingGood = $f.paddingGood; payload = $f.payload; prefixLen = $f.prefixLen; remoteMAC = $f.remoteMAC; x = $f.x; x$1 = $f.x$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  57410. ok = false;
  57411. prefixLen = 0;
  57412. alertValue = 0;
  57413. hc = this;
  57414. payload = $subslice(b.data, 5);
  57415. macSize = 0;
  57416. /* */ if (!($interfaceIsEqual(hc.mac, $ifaceNil))) { $s = 1; continue; }
  57417. /* */ $s = 2; continue;
  57418. /* if (!($interfaceIsEqual(hc.mac, $ifaceNil))) { */ case 1:
  57419. _r = hc.mac.Size(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  57420. macSize = _r;
  57421. /* } */ case 2:
  57422. paddingGood = 255;
  57423. explicitIVLen = 0;
  57424. /* */ if (!($interfaceIsEqual(hc.cipher, $ifaceNil))) { $s = 4; continue; }
  57425. /* */ $s = 5; continue;
  57426. /* if (!($interfaceIsEqual(hc.cipher, $ifaceNil))) { */ case 4:
  57427. _ref = hc.cipher;
  57428. /* */ if ($assertType(_ref, cipher.Stream, true)[1]) { $s = 6; continue; }
  57429. /* */ if ($assertType(_ref, cipher.AEAD, true)[1]) { $s = 7; continue; }
  57430. /* */ if ($assertType(_ref, cbcMode, true)[1]) { $s = 8; continue; }
  57431. /* */ $s = 9; continue;
  57432. /* if ($assertType(_ref, cipher.Stream, true)[1]) { */ case 6:
  57433. c = _ref;
  57434. $r = c.XORKeyStream(payload, payload); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  57435. $s = 10; continue;
  57436. /* } else if ($assertType(_ref, cipher.AEAD, true)[1]) { */ case 7:
  57437. c$1 = _ref;
  57438. explicitIVLen = 8;
  57439. if (payload.$length < explicitIVLen) {
  57440. _tmp = false; _tmp$1 = 0; _tmp$2 = 20; ok = _tmp; prefixLen = _tmp$1; alertValue = _tmp$2;
  57441. return [ok, prefixLen, alertValue];
  57442. }
  57443. nonce = $subslice(payload, 0, 8);
  57444. payload = $subslice(payload, 8);
  57445. additionalData = $clone(arrayType.zero(), arrayType);
  57446. $copySlice(new sliceType$4(additionalData), new sliceType$4(hc.seq));
  57447. $copySlice($subslice(new sliceType$4(additionalData), 8), $subslice(b.data, 0, 3));
  57448. _r$1 = c$1.Overhead(); /* */ $s = 12; case 12: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  57449. n = payload.$length - _r$1 >> 0;
  57450. additionalData[11] = ((n >> 8 >> 0) << 24 >>> 24);
  57451. additionalData[12] = (n << 24 >>> 24);
  57452. err = $ifaceNil;
  57453. _r$2 = c$1.Open($subslice(payload, 0, 0), nonce, payload, new sliceType$4(additionalData)); /* */ $s = 13; case 13: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  57454. _tuple = _r$2; payload = _tuple[0]; err = _tuple[1];
  57455. if (!($interfaceIsEqual(err, $ifaceNil))) {
  57456. _tmp$3 = false; _tmp$4 = 0; _tmp$5 = 20; ok = _tmp$3; prefixLen = _tmp$4; alertValue = _tmp$5;
  57457. return [ok, prefixLen, alertValue];
  57458. }
  57459. b.resize((5 + explicitIVLen >> 0) + payload.$length >> 0);
  57460. $s = 10; continue;
  57461. /* } else if ($assertType(_ref, cbcMode, true)[1]) { */ case 8:
  57462. c$2 = _ref;
  57463. _r$3 = c$2.BlockSize(); /* */ $s = 14; case 14: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  57464. blockSize = _r$3;
  57465. if (hc.version >= 770) {
  57466. explicitIVLen = blockSize;
  57467. }
  57468. if (!(((_r$4 = payload.$length % blockSize, _r$4 === _r$4 ? _r$4 : $throwRuntimeError("integer divide by zero")) === 0)) || payload.$length < roundUp((explicitIVLen + macSize >> 0) + 1 >> 0, blockSize)) {
  57469. _tmp$6 = false; _tmp$7 = 0; _tmp$8 = 20; ok = _tmp$6; prefixLen = _tmp$7; alertValue = _tmp$8;
  57470. return [ok, prefixLen, alertValue];
  57471. }
  57472. /* */ if (explicitIVLen > 0) { $s = 15; continue; }
  57473. /* */ $s = 16; continue;
  57474. /* if (explicitIVLen > 0) { */ case 15:
  57475. $r = c$2.SetIV($subslice(payload, 0, explicitIVLen)); /* */ $s = 17; case 17: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  57476. payload = $subslice(payload, explicitIVLen);
  57477. /* } */ case 16:
  57478. $r = c$2.CryptBlocks(payload, payload); /* */ $s = 18; case 18: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  57479. if (hc.version === 768) {
  57480. _tuple$1 = removePaddingSSL30(payload); payload = _tuple$1[0]; paddingGood = _tuple$1[1];
  57481. } else {
  57482. _tuple$2 = removePadding(payload); payload = _tuple$2[0]; paddingGood = _tuple$2[1];
  57483. }
  57484. b.resize((5 + explicitIVLen >> 0) + payload.$length >> 0);
  57485. $s = 10; continue;
  57486. /* } else { */ case 9:
  57487. c$3 = _ref;
  57488. $panic(new $String("unknown cipher type"));
  57489. /* } */ case 10:
  57490. /* } */ case 5:
  57491. /* */ if (!($interfaceIsEqual(hc.mac, $ifaceNil))) { $s = 19; continue; }
  57492. /* */ $s = 20; continue;
  57493. /* if (!($interfaceIsEqual(hc.mac, $ifaceNil))) { */ case 19:
  57494. if (payload.$length < macSize) {
  57495. _tmp$9 = false; _tmp$10 = 0; _tmp$11 = 20; ok = _tmp$9; prefixLen = _tmp$10; alertValue = _tmp$11;
  57496. return [ok, prefixLen, alertValue];
  57497. }
  57498. n$1 = payload.$length - macSize >> 0;
  57499. (x = b.data, (3 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 3] = ((n$1 >> 8 >> 0) << 24 >>> 24)));
  57500. (x$1 = b.data, (4 >= x$1.$length ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + 4] = (n$1 << 24 >>> 24)));
  57501. b.resize((5 + explicitIVLen >> 0) + n$1 >> 0);
  57502. remoteMAC = $subslice(payload, n$1);
  57503. _r$5 = hc.mac.MAC(hc.inDigestBuf, $subslice(new sliceType$4(hc.seq), 0), $subslice(b.data, 0, 5), $subslice(payload, 0, n$1)); /* */ $s = 21; case 21: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
  57504. localMAC = _r$5;
  57505. if (!((subtle.ConstantTimeCompare(localMAC, remoteMAC) === 1)) || !((paddingGood === 255))) {
  57506. _tmp$12 = false; _tmp$13 = 0; _tmp$14 = 20; ok = _tmp$12; prefixLen = _tmp$13; alertValue = _tmp$14;
  57507. return [ok, prefixLen, alertValue];
  57508. }
  57509. hc.inDigestBuf = localMAC;
  57510. /* } */ case 20:
  57511. hc.incSeq();
  57512. _tmp$15 = true; _tmp$16 = 5 + explicitIVLen >> 0; _tmp$17 = 0; ok = _tmp$15; prefixLen = _tmp$16; alertValue = _tmp$17;
  57513. return [ok, prefixLen, alertValue];
  57514. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: halfConn.ptr.prototype.decrypt }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._ref = _ref; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$10 = _tmp$10; $f._tmp$11 = _tmp$11; $f._tmp$12 = _tmp$12; $f._tmp$13 = _tmp$13; $f._tmp$14 = _tmp$14; $f._tmp$15 = _tmp$15; $f._tmp$16 = _tmp$16; $f._tmp$17 = _tmp$17; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tmp$6 = _tmp$6; $f._tmp$7 = _tmp$7; $f._tmp$8 = _tmp$8; $f._tmp$9 = _tmp$9; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f.additionalData = additionalData; $f.alertValue = alertValue; $f.b = b; $f.blockSize = blockSize; $f.c = c; $f.c$1 = c$1; $f.c$2 = c$2; $f.c$3 = c$3; $f.err = err; $f.explicitIVLen = explicitIVLen; $f.hc = hc; $f.localMAC = localMAC; $f.macSize = macSize; $f.n = n; $f.n$1 = n$1; $f.nonce = nonce; $f.ok = ok; $f.paddingGood = paddingGood; $f.payload = payload; $f.prefixLen = prefixLen; $f.remoteMAC = remoteMAC; $f.x = x; $f.x$1 = x$1; $f.$s = $s; $f.$r = $r; return $f;
  57515. };
  57516. halfConn.prototype.decrypt = function(b) { return this.$val.decrypt(b); };
  57517. padToBlockSize = function(payload, blockSize) {
  57518. var $ptr, _r, blockSize, finalBlock, i, overrun, paddingLen, payload, prefix;
  57519. prefix = sliceType$4.nil;
  57520. finalBlock = sliceType$4.nil;
  57521. overrun = (_r = payload.$length % blockSize, _r === _r ? _r : $throwRuntimeError("integer divide by zero"));
  57522. paddingLen = blockSize - overrun >> 0;
  57523. prefix = $subslice(payload, 0, (payload.$length - overrun >> 0));
  57524. finalBlock = $makeSlice(sliceType$4, blockSize);
  57525. $copySlice(finalBlock, $subslice(payload, (payload.$length - overrun >> 0)));
  57526. i = overrun;
  57527. while (true) {
  57528. if (!(i < blockSize)) { break; }
  57529. ((i < 0 || i >= finalBlock.$length) ? $throwRuntimeError("index out of range") : finalBlock.$array[finalBlock.$offset + i] = ((paddingLen - 1 >> 0) << 24 >>> 24));
  57530. i = i + (1) >> 0;
  57531. }
  57532. return [prefix, finalBlock];
  57533. };
  57534. halfConn.ptr.prototype.encrypt = function(b, explicitIVLen) {
  57535. var $ptr, _r, _r$1, _r$2, _r$3, _ref, _tuple, additionalData, b, blockSize, c, c$1, c$2, c$3, explicitIVLen, finalBlock, hc, mac, n, n$1, nonce, payload, payload$1, payloadLen, prefix, x, x$1, $s, $r;
  57536. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _ref = $f._ref; _tuple = $f._tuple; additionalData = $f.additionalData; b = $f.b; blockSize = $f.blockSize; c = $f.c; c$1 = $f.c$1; c$2 = $f.c$2; c$3 = $f.c$3; explicitIVLen = $f.explicitIVLen; finalBlock = $f.finalBlock; hc = $f.hc; mac = $f.mac; n = $f.n; n$1 = $f.n$1; nonce = $f.nonce; payload = $f.payload; payload$1 = $f.payload$1; payloadLen = $f.payloadLen; prefix = $f.prefix; x = $f.x; x$1 = $f.x$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  57537. hc = this;
  57538. /* */ if (!($interfaceIsEqual(hc.mac, $ifaceNil))) { $s = 1; continue; }
  57539. /* */ $s = 2; continue;
  57540. /* if (!($interfaceIsEqual(hc.mac, $ifaceNil))) { */ case 1:
  57541. _r = hc.mac.MAC(hc.outDigestBuf, $subslice(new sliceType$4(hc.seq), 0), $subslice(b.data, 0, 5), $subslice(b.data, (5 + explicitIVLen >> 0))); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  57542. mac = _r;
  57543. n = b.data.$length;
  57544. b.resize(n + mac.$length >> 0);
  57545. $copySlice($subslice(b.data, n), mac);
  57546. hc.outDigestBuf = mac;
  57547. /* } */ case 2:
  57548. payload = $subslice(b.data, 5);
  57549. /* */ if (!($interfaceIsEqual(hc.cipher, $ifaceNil))) { $s = 4; continue; }
  57550. /* */ $s = 5; continue;
  57551. /* if (!($interfaceIsEqual(hc.cipher, $ifaceNil))) { */ case 4:
  57552. _ref = hc.cipher;
  57553. /* */ if ($assertType(_ref, cipher.Stream, true)[1]) { $s = 6; continue; }
  57554. /* */ if ($assertType(_ref, cipher.AEAD, true)[1]) { $s = 7; continue; }
  57555. /* */ if ($assertType(_ref, cbcMode, true)[1]) { $s = 8; continue; }
  57556. /* */ $s = 9; continue;
  57557. /* if ($assertType(_ref, cipher.Stream, true)[1]) { */ case 6:
  57558. c = _ref;
  57559. $r = c.XORKeyStream(payload, payload); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  57560. $s = 10; continue;
  57561. /* } else if ($assertType(_ref, cipher.AEAD, true)[1]) { */ case 7:
  57562. c$1 = _ref;
  57563. payloadLen = (b.data.$length - 5 >> 0) - explicitIVLen >> 0;
  57564. _r$1 = c$1.Overhead(); /* */ $s = 12; case 12: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  57565. $r = b.resize(b.data.$length + _r$1 >> 0); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  57566. nonce = $subslice(b.data, 5, (5 + explicitIVLen >> 0));
  57567. payload$1 = $subslice(b.data, (5 + explicitIVLen >> 0));
  57568. payload$1 = $subslice(payload$1, 0, payloadLen);
  57569. additionalData = $clone(arrayType.zero(), arrayType);
  57570. $copySlice(new sliceType$4(additionalData), new sliceType$4(hc.seq));
  57571. $copySlice($subslice(new sliceType$4(additionalData), 8), $subslice(b.data, 0, 3));
  57572. additionalData[11] = ((payloadLen >> 8 >> 0) << 24 >>> 24);
  57573. additionalData[12] = (payloadLen << 24 >>> 24);
  57574. _r$2 = c$1.Seal($subslice(payload$1, 0, 0), nonce, payload$1, new sliceType$4(additionalData)); /* */ $s = 14; case 14: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  57575. _r$2;
  57576. $s = 10; continue;
  57577. /* } else if ($assertType(_ref, cbcMode, true)[1]) { */ case 8:
  57578. c$2 = _ref;
  57579. _r$3 = c$2.BlockSize(); /* */ $s = 15; case 15: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  57580. blockSize = _r$3;
  57581. /* */ if (explicitIVLen > 0) { $s = 16; continue; }
  57582. /* */ $s = 17; continue;
  57583. /* if (explicitIVLen > 0) { */ case 16:
  57584. $r = c$2.SetIV($subslice(payload, 0, explicitIVLen)); /* */ $s = 18; case 18: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  57585. payload = $subslice(payload, explicitIVLen);
  57586. /* } */ case 17:
  57587. _tuple = padToBlockSize(payload, blockSize); prefix = _tuple[0]; finalBlock = _tuple[1];
  57588. b.resize(((5 + explicitIVLen >> 0) + prefix.$length >> 0) + finalBlock.$length >> 0);
  57589. $r = c$2.CryptBlocks($subslice(b.data, (5 + explicitIVLen >> 0)), prefix); /* */ $s = 19; case 19: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  57590. $r = c$2.CryptBlocks($subslice(b.data, ((5 + explicitIVLen >> 0) + prefix.$length >> 0)), finalBlock); /* */ $s = 20; case 20: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  57591. $s = 10; continue;
  57592. /* } else { */ case 9:
  57593. c$3 = _ref;
  57594. $panic(new $String("unknown cipher type"));
  57595. /* } */ case 10:
  57596. /* } */ case 5:
  57597. n$1 = b.data.$length - 5 >> 0;
  57598. (x = b.data, (3 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 3] = ((n$1 >> 8 >> 0) << 24 >>> 24)));
  57599. (x$1 = b.data, (4 >= x$1.$length ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + 4] = (n$1 << 24 >>> 24)));
  57600. hc.incSeq();
  57601. return [true, 0];
  57602. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: halfConn.ptr.prototype.encrypt }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._ref = _ref; $f._tuple = _tuple; $f.additionalData = additionalData; $f.b = b; $f.blockSize = blockSize; $f.c = c; $f.c$1 = c$1; $f.c$2 = c$2; $f.c$3 = c$3; $f.explicitIVLen = explicitIVLen; $f.finalBlock = finalBlock; $f.hc = hc; $f.mac = mac; $f.n = n; $f.n$1 = n$1; $f.nonce = nonce; $f.payload = payload; $f.payload$1 = payload$1; $f.payloadLen = payloadLen; $f.prefix = prefix; $f.x = x; $f.x$1 = x$1; $f.$s = $s; $f.$r = $r; return $f;
  57603. };
  57604. halfConn.prototype.encrypt = function(b, explicitIVLen) { return this.$val.encrypt(b, explicitIVLen); };
  57605. block.ptr.prototype.resize = function(n) {
  57606. var $ptr, b, n;
  57607. b = this;
  57608. if (n > b.data.$capacity) {
  57609. b.reserve(n);
  57610. }
  57611. b.data = $subslice(b.data, 0, n);
  57612. };
  57613. block.prototype.resize = function(n) { return this.$val.resize(n); };
  57614. block.ptr.prototype.reserve = function(n) {
  57615. var $ptr, b, data, m, n;
  57616. b = this;
  57617. if (b.data.$capacity >= n) {
  57618. return;
  57619. }
  57620. m = b.data.$capacity;
  57621. if (m === 0) {
  57622. m = 1024;
  57623. }
  57624. while (true) {
  57625. if (!(m < n)) { break; }
  57626. m = m * (2) >> 0;
  57627. }
  57628. data = $makeSlice(sliceType$4, b.data.$length, m);
  57629. $copySlice(data, b.data);
  57630. b.data = data;
  57631. };
  57632. block.prototype.reserve = function(n) { return this.$val.reserve(n); };
  57633. block.ptr.prototype.readFromUntil = function(r, n) {
  57634. var $ptr, _r, _tuple, b, err, m, n, r, $s, $r;
  57635. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tuple = $f._tuple; b = $f.b; err = $f.err; m = $f.m; n = $f.n; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  57636. b = this;
  57637. if (b.data.$length >= n) {
  57638. return $ifaceNil;
  57639. }
  57640. b.reserve(n);
  57641. /* while (true) { */ case 1:
  57642. _r = r.Read($subslice(b.data, b.data.$length, b.data.$capacity)); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  57643. _tuple = _r; m = _tuple[0]; err = _tuple[1];
  57644. b.data = $subslice(b.data, 0, (b.data.$length + m >> 0));
  57645. if (b.data.$length >= n) {
  57646. /* break; */ $s = 2; continue;
  57647. }
  57648. if (!($interfaceIsEqual(err, $ifaceNil))) {
  57649. return err;
  57650. }
  57651. /* } */ $s = 1; continue; case 2:
  57652. return $ifaceNil;
  57653. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: block.ptr.prototype.readFromUntil }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple = _tuple; $f.b = b; $f.err = err; $f.m = m; $f.n = n; $f.r = r; $f.$s = $s; $f.$r = $r; return $f;
  57654. };
  57655. block.prototype.readFromUntil = function(r, n) { return this.$val.readFromUntil(r, n); };
  57656. block.ptr.prototype.Read = function(p) {
  57657. var $ptr, b, err, n, p;
  57658. n = 0;
  57659. err = $ifaceNil;
  57660. b = this;
  57661. n = $copySlice(p, $subslice(b.data, b.off));
  57662. b.off = b.off + (n) >> 0;
  57663. return [n, err];
  57664. };
  57665. block.prototype.Read = function(p) { return this.$val.Read(p); };
  57666. halfConn.ptr.prototype.newBlock = function() {
  57667. var $ptr, b, hc;
  57668. hc = this;
  57669. b = hc.bfree;
  57670. if (b === ptrType$8.nil) {
  57671. return new block.ptr();
  57672. }
  57673. hc.bfree = b.link;
  57674. b.link = ptrType$8.nil;
  57675. b.resize(0);
  57676. return b;
  57677. };
  57678. halfConn.prototype.newBlock = function() { return this.$val.newBlock(); };
  57679. halfConn.ptr.prototype.freeBlock = function(b) {
  57680. var $ptr, b, hc;
  57681. hc = this;
  57682. b.link = hc.bfree;
  57683. hc.bfree = b;
  57684. };
  57685. halfConn.prototype.freeBlock = function(b) { return this.$val.freeBlock(b); };
  57686. halfConn.ptr.prototype.splitBlock = function(b, n) {
  57687. var $ptr, b, bb, hc, n;
  57688. hc = this;
  57689. if (b.data.$length <= n) {
  57690. return [b, ptrType$8.nil];
  57691. }
  57692. bb = hc.newBlock();
  57693. bb.resize(b.data.$length - n >> 0);
  57694. $copySlice(bb.data, $subslice(b.data, n));
  57695. b.data = $subslice(b.data, 0, n);
  57696. return [b, bb];
  57697. };
  57698. halfConn.prototype.splitBlock = function(b, n) { return this.$val.splitBlock(b, n); };
  57699. Conn.ptr.prototype.readRecord = function(want) {
  57700. var $ptr, _r, _r$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$16, _r$17, _r$18, _r$19, _r$2, _r$20, _r$21, _r$22, _r$23, _r$24, _r$25, _r$26, _r$27, _r$28, _r$29, _r$3, _r$30, _r$31, _r$32, _r$33, _r$34, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _ref$1, _ref$2, _tuple, _tuple$1, _tuple$2, _tuple$3, _v, _v$1, b, c, data, e, e$1, err, err$1, err$2, err$3, err$4, n, off, ok, ok$1, ok$2, typ, vers, want, x, x$1, x$2, x$3, x$4, $s, $r;
  57701. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$12 = $f._r$12; _r$13 = $f._r$13; _r$14 = $f._r$14; _r$15 = $f._r$15; _r$16 = $f._r$16; _r$17 = $f._r$17; _r$18 = $f._r$18; _r$19 = $f._r$19; _r$2 = $f._r$2; _r$20 = $f._r$20; _r$21 = $f._r$21; _r$22 = $f._r$22; _r$23 = $f._r$23; _r$24 = $f._r$24; _r$25 = $f._r$25; _r$26 = $f._r$26; _r$27 = $f._r$27; _r$28 = $f._r$28; _r$29 = $f._r$29; _r$3 = $f._r$3; _r$30 = $f._r$30; _r$31 = $f._r$31; _r$32 = $f._r$32; _r$33 = $f._r$33; _r$34 = $f._r$34; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _r$9 = $f._r$9; _ref = $f._ref; _ref$1 = $f._ref$1; _ref$2 = $f._ref$2; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; _v = $f._v; _v$1 = $f._v$1; b = $f.b; c = $f.c; data = $f.data; e = $f.e; e$1 = $f.e$1; err = $f.err; err$1 = $f.err$1; err$2 = $f.err$2; err$3 = $f.err$3; err$4 = $f.err$4; n = $f.n; off = $f.off; ok = $f.ok; ok$1 = $f.ok$1; ok$2 = $f.ok$2; typ = $f.typ; vers = $f.vers; want = $f.want; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; x$3 = $f.x$3; x$4 = $f.x$4; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  57702. c = this;
  57703. _ref = want;
  57704. /* */ if (_ref === 22 || _ref === 20) { $s = 1; continue; }
  57705. /* */ if (_ref === 23) { $s = 2; continue; }
  57706. /* */ $s = 3; continue;
  57707. /* if (_ref === 22 || _ref === 20) { */ case 1:
  57708. /* */ if (c.handshakeComplete) { $s = 5; continue; }
  57709. /* */ $s = 6; continue;
  57710. /* if (c.handshakeComplete) { */ case 5:
  57711. _r = c.sendAlert(80); /* */ $s = 7; case 7: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  57712. _r;
  57713. return c.in$17.setErrorLocked(errors.New("tls: handshake or ChangeCipherSpec requested after handshake complete"));
  57714. /* } */ case 6:
  57715. $s = 4; continue;
  57716. /* } else if (_ref === 23) { */ case 2:
  57717. /* */ if (!c.handshakeComplete) { $s = 8; continue; }
  57718. /* */ $s = 9; continue;
  57719. /* if (!c.handshakeComplete) { */ case 8:
  57720. _r$1 = c.sendAlert(80); /* */ $s = 10; case 10: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  57721. _r$1;
  57722. return c.in$17.setErrorLocked(errors.New("tls: application data record requested before handshake complete"));
  57723. /* } */ case 9:
  57724. $s = 4; continue;
  57725. /* } else { */ case 3:
  57726. _r$2 = c.sendAlert(80); /* */ $s = 11; case 11: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  57727. _r$2;
  57728. return c.in$17.setErrorLocked(errors.New("tls: unknown record type requested"));
  57729. /* } */ case 4:
  57730. /* Again: */ case 12:
  57731. if (c.rawInput === ptrType$8.nil) {
  57732. c.rawInput = c.in$17.newBlock();
  57733. }
  57734. b = c.rawInput;
  57735. _r$3 = b.readFromUntil(c.conn, 5); /* */ $s = 13; case 13: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  57736. err = _r$3;
  57737. /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 14; continue; }
  57738. /* */ $s = 15; continue;
  57739. /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 14:
  57740. _tuple = $assertType(err, net.Error, true); e = _tuple[0]; ok = _tuple[1];
  57741. if (!ok) { _v = true; $s = 18; continue s; }
  57742. _r$4 = e.Temporary(); /* */ $s = 19; case 19: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
  57743. _v = !_r$4; case 18:
  57744. /* */ if (_v) { $s = 16; continue; }
  57745. /* */ $s = 17; continue;
  57746. /* if (_v) { */ case 16:
  57747. c.in$17.setErrorLocked(err);
  57748. /* } */ case 17:
  57749. return err;
  57750. /* } */ case 15:
  57751. typ = ((x = b.data, (0 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 0])) << 24 >>> 24);
  57752. /* */ if ((want === 22) && (typ === 128)) { $s = 20; continue; }
  57753. /* */ $s = 21; continue;
  57754. /* if ((want === 22) && (typ === 128)) { */ case 20:
  57755. _r$5 = c.sendAlert(70); /* */ $s = 22; case 22: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
  57756. _r$5;
  57757. return c.in$17.setErrorLocked(errors.New("tls: unsupported SSLv2 handshake received"));
  57758. /* } */ case 21:
  57759. vers = ((((x$1 = b.data, (1 >= x$1.$length ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + 1])) << 16 >>> 16) << 8 << 16 >>> 16) | ((x$2 = b.data, (2 >= x$2.$length ? $throwRuntimeError("index out of range") : x$2.$array[x$2.$offset + 2])) << 16 >>> 16)) >>> 0;
  57760. n = (((x$3 = b.data, (3 >= x$3.$length ? $throwRuntimeError("index out of range") : x$3.$array[x$3.$offset + 3])) >> 0) << 8 >> 0) | ((x$4 = b.data, (4 >= x$4.$length ? $throwRuntimeError("index out of range") : x$4.$array[x$4.$offset + 4])) >> 0);
  57761. /* */ if (c.haveVers && !((vers === c.vers))) { $s = 23; continue; }
  57762. /* */ $s = 24; continue;
  57763. /* if (c.haveVers && !((vers === c.vers))) { */ case 23:
  57764. _r$6 = c.sendAlert(70); /* */ $s = 25; case 25: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
  57765. _r$6;
  57766. _r$7 = fmt.Errorf("tls: received record with version %x when expecting version %x", new sliceType$5([new $Uint16(vers), new $Uint16(c.vers)])); /* */ $s = 26; case 26: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
  57767. _r$8 = c.in$17.setErrorLocked(_r$7); /* */ $s = 27; case 27: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
  57768. return _r$8;
  57769. /* } */ case 24:
  57770. /* */ if (n > 18432) { $s = 28; continue; }
  57771. /* */ $s = 29; continue;
  57772. /* if (n > 18432) { */ case 28:
  57773. _r$9 = c.sendAlert(22); /* */ $s = 30; case 30: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
  57774. _r$9;
  57775. _r$10 = fmt.Errorf("tls: oversized record received with length %d", new sliceType$5([new $Int(n)])); /* */ $s = 31; case 31: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
  57776. _r$11 = c.in$17.setErrorLocked(_r$10); /* */ $s = 32; case 32: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
  57777. return _r$11;
  57778. /* } */ case 29:
  57779. /* */ if (!c.haveVers) { $s = 33; continue; }
  57780. /* */ $s = 34; continue;
  57781. /* if (!c.haveVers) { */ case 33:
  57782. /* */ if ((!((typ === 21)) && !((typ === want))) || vers >= 4096 || n >= 12288) { $s = 35; continue; }
  57783. /* */ $s = 36; continue;
  57784. /* if ((!((typ === 21)) && !((typ === want))) || vers >= 4096 || n >= 12288) { */ case 35:
  57785. _r$12 = c.sendAlert(10); /* */ $s = 37; case 37: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; }
  57786. _r$12;
  57787. _r$13 = fmt.Errorf("tls: first record does not look like a TLS handshake", new sliceType$5([])); /* */ $s = 38; case 38: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; }
  57788. _r$14 = c.in$17.setErrorLocked(_r$13); /* */ $s = 39; case 39: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; }
  57789. return _r$14;
  57790. /* } */ case 36:
  57791. /* } */ case 34:
  57792. _r$15 = b.readFromUntil(c.conn, 5 + n >> 0); /* */ $s = 40; case 40: if($c) { $c = false; _r$15 = _r$15.$blk(); } if (_r$15 && _r$15.$blk !== undefined) { break s; }
  57793. err$1 = _r$15;
  57794. /* */ if (!($interfaceIsEqual(err$1, $ifaceNil))) { $s = 41; continue; }
  57795. /* */ $s = 42; continue;
  57796. /* if (!($interfaceIsEqual(err$1, $ifaceNil))) { */ case 41:
  57797. if ($interfaceIsEqual(err$1, io.EOF)) {
  57798. err$1 = io.ErrUnexpectedEOF;
  57799. }
  57800. _tuple$1 = $assertType(err$1, net.Error, true); e$1 = _tuple$1[0]; ok$1 = _tuple$1[1];
  57801. if (!ok$1) { _v$1 = true; $s = 45; continue s; }
  57802. _r$16 = e$1.Temporary(); /* */ $s = 46; case 46: if($c) { $c = false; _r$16 = _r$16.$blk(); } if (_r$16 && _r$16.$blk !== undefined) { break s; }
  57803. _v$1 = !_r$16; case 45:
  57804. /* */ if (_v$1) { $s = 43; continue; }
  57805. /* */ $s = 44; continue;
  57806. /* if (_v$1) { */ case 43:
  57807. c.in$17.setErrorLocked(err$1);
  57808. /* } */ case 44:
  57809. return err$1;
  57810. /* } */ case 42:
  57811. _tuple$2 = c.in$17.splitBlock(b, 5 + n >> 0); b = _tuple$2[0]; c.rawInput = _tuple$2[1];
  57812. _r$17 = c.in$17.decrypt(b); /* */ $s = 47; case 47: if($c) { $c = false; _r$17 = _r$17.$blk(); } if (_r$17 && _r$17.$blk !== undefined) { break s; }
  57813. _tuple$3 = _r$17; ok$2 = _tuple$3[0]; off = _tuple$3[1]; err$2 = _tuple$3[2];
  57814. /* */ if (!ok$2) { $s = 48; continue; }
  57815. /* */ $s = 49; continue;
  57816. /* if (!ok$2) { */ case 48:
  57817. _r$18 = c.sendAlert(err$2); /* */ $s = 50; case 50: if($c) { $c = false; _r$18 = _r$18.$blk(); } if (_r$18 && _r$18.$blk !== undefined) { break s; }
  57818. _r$19 = c.in$17.setErrorLocked(_r$18); /* */ $s = 51; case 51: if($c) { $c = false; _r$19 = _r$19.$blk(); } if (_r$19 && _r$19.$blk !== undefined) { break s; }
  57819. _r$19;
  57820. /* } */ case 49:
  57821. b.off = off;
  57822. data = $subslice(b.data, b.off);
  57823. /* */ if (data.$length > 16384) { $s = 52; continue; }
  57824. /* */ $s = 53; continue;
  57825. /* if (data.$length > 16384) { */ case 52:
  57826. _r$20 = c.sendAlert(22); /* */ $s = 54; case 54: if($c) { $c = false; _r$20 = _r$20.$blk(); } if (_r$20 && _r$20.$blk !== undefined) { break s; }
  57827. err$3 = _r$20;
  57828. c.in$17.freeBlock(b);
  57829. return c.in$17.setErrorLocked(err$3);
  57830. /* } */ case 53:
  57831. _ref$1 = typ;
  57832. /* */ if (_ref$1 === 21) { $s = 55; continue; }
  57833. /* */ if (_ref$1 === 20) { $s = 56; continue; }
  57834. /* */ if (_ref$1 === 23) { $s = 57; continue; }
  57835. /* */ if (_ref$1 === 22) { $s = 58; continue; }
  57836. /* */ $s = 59; continue;
  57837. /* switch (0) { default: if (_ref$1 === 21) { */ case 55:
  57838. /* */ if (!((data.$length === 2))) { $s = 61; continue; }
  57839. /* */ $s = 62; continue;
  57840. /* if (!((data.$length === 2))) { */ case 61:
  57841. _r$21 = c.sendAlert(10); /* */ $s = 63; case 63: if($c) { $c = false; _r$21 = _r$21.$blk(); } if (_r$21 && _r$21.$blk !== undefined) { break s; }
  57842. _r$22 = c.in$17.setErrorLocked(_r$21); /* */ $s = 64; case 64: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; }
  57843. _r$22;
  57844. /* break; */ $s = 60; continue;
  57845. /* } */ case 62:
  57846. if (((1 >= data.$length ? $throwRuntimeError("index out of range") : data.$array[data.$offset + 1]) << 24 >>> 24) === 0) {
  57847. c.in$17.setErrorLocked(io.EOF);
  57848. /* break; */ $s = 60; continue;
  57849. }
  57850. _ref$2 = (0 >= data.$length ? $throwRuntimeError("index out of range") : data.$array[data.$offset + 0]);
  57851. /* */ if (_ref$2 === 1) { $s = 65; continue; }
  57852. /* */ if (_ref$2 === 2) { $s = 66; continue; }
  57853. /* */ $s = 67; continue;
  57854. /* if (_ref$2 === 1) { */ case 65:
  57855. c.in$17.freeBlock(b);
  57856. /* goto Again */ $s = 12; continue;
  57857. $s = 68; continue;
  57858. /* } else if (_ref$2 === 2) { */ case 66:
  57859. c.in$17.setErrorLocked(new net.OpError.ptr("remote error", "", $ifaceNil, new alert(((1 >= data.$length ? $throwRuntimeError("index out of range") : data.$array[data.$offset + 1]) << 24 >>> 24))));
  57860. $s = 68; continue;
  57861. /* } else { */ case 67:
  57862. _r$23 = c.sendAlert(10); /* */ $s = 69; case 69: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; }
  57863. _r$24 = c.in$17.setErrorLocked(_r$23); /* */ $s = 70; case 70: if($c) { $c = false; _r$24 = _r$24.$blk(); } if (_r$24 && _r$24.$blk !== undefined) { break s; }
  57864. _r$24;
  57865. /* } */ case 68:
  57866. $s = 60; continue;
  57867. /* } else if (_ref$1 === 20) { */ case 56:
  57868. /* */ if (!((typ === want)) || !((data.$length === 1)) || !(((0 >= data.$length ? $throwRuntimeError("index out of range") : data.$array[data.$offset + 0]) === 1))) { $s = 71; continue; }
  57869. /* */ $s = 72; continue;
  57870. /* if (!((typ === want)) || !((data.$length === 1)) || !(((0 >= data.$length ? $throwRuntimeError("index out of range") : data.$array[data.$offset + 0]) === 1))) { */ case 71:
  57871. _r$25 = c.sendAlert(10); /* */ $s = 73; case 73: if($c) { $c = false; _r$25 = _r$25.$blk(); } if (_r$25 && _r$25.$blk !== undefined) { break s; }
  57872. _r$26 = c.in$17.setErrorLocked(_r$25); /* */ $s = 74; case 74: if($c) { $c = false; _r$26 = _r$26.$blk(); } if (_r$26 && _r$26.$blk !== undefined) { break s; }
  57873. _r$26;
  57874. /* break; */ $s = 60; continue;
  57875. /* } */ case 72:
  57876. err$4 = c.in$17.changeCipherSpec();
  57877. /* */ if (!($interfaceIsEqual(err$4, $ifaceNil))) { $s = 75; continue; }
  57878. /* */ $s = 76; continue;
  57879. /* if (!($interfaceIsEqual(err$4, $ifaceNil))) { */ case 75:
  57880. _r$27 = c.sendAlert($assertType(err$4, alert)); /* */ $s = 77; case 77: if($c) { $c = false; _r$27 = _r$27.$blk(); } if (_r$27 && _r$27.$blk !== undefined) { break s; }
  57881. _r$28 = c.in$17.setErrorLocked(_r$27); /* */ $s = 78; case 78: if($c) { $c = false; _r$28 = _r$28.$blk(); } if (_r$28 && _r$28.$blk !== undefined) { break s; }
  57882. _r$28;
  57883. /* } */ case 76:
  57884. $s = 60; continue;
  57885. /* } else if (_ref$1 === 23) { */ case 57:
  57886. /* */ if (!((typ === want))) { $s = 79; continue; }
  57887. /* */ $s = 80; continue;
  57888. /* if (!((typ === want))) { */ case 79:
  57889. _r$29 = c.sendAlert(10); /* */ $s = 81; case 81: if($c) { $c = false; _r$29 = _r$29.$blk(); } if (_r$29 && _r$29.$blk !== undefined) { break s; }
  57890. _r$30 = c.in$17.setErrorLocked(_r$29); /* */ $s = 82; case 82: if($c) { $c = false; _r$30 = _r$30.$blk(); } if (_r$30 && _r$30.$blk !== undefined) { break s; }
  57891. _r$30;
  57892. /* break; */ $s = 60; continue;
  57893. /* } */ case 80:
  57894. c.input = b;
  57895. b = ptrType$8.nil;
  57896. $s = 60; continue;
  57897. /* } else if (_ref$1 === 22) { */ case 58:
  57898. /* */ if (!((typ === want))) { $s = 83; continue; }
  57899. /* */ $s = 84; continue;
  57900. /* if (!((typ === want))) { */ case 83:
  57901. _r$31 = c.sendAlert(100); /* */ $s = 85; case 85: if($c) { $c = false; _r$31 = _r$31.$blk(); } if (_r$31 && _r$31.$blk !== undefined) { break s; }
  57902. _r$32 = c.in$17.setErrorLocked(_r$31); /* */ $s = 86; case 86: if($c) { $c = false; _r$32 = _r$32.$blk(); } if (_r$32 && _r$32.$blk !== undefined) { break s; }
  57903. return _r$32;
  57904. /* } */ case 84:
  57905. c.hand.Write(data);
  57906. $s = 60; continue;
  57907. /* } else { */ case 59:
  57908. _r$33 = c.sendAlert(10); /* */ $s = 87; case 87: if($c) { $c = false; _r$33 = _r$33.$blk(); } if (_r$33 && _r$33.$blk !== undefined) { break s; }
  57909. _r$34 = c.in$17.setErrorLocked(_r$33); /* */ $s = 88; case 88: if($c) { $c = false; _r$34 = _r$34.$blk(); } if (_r$34 && _r$34.$blk !== undefined) { break s; }
  57910. _r$34;
  57911. /* } } */ case 60:
  57912. if (!(b === ptrType$8.nil)) {
  57913. c.in$17.freeBlock(b);
  57914. }
  57915. return c.in$17.err;
  57916. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Conn.ptr.prototype.readRecord }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$12 = _r$12; $f._r$13 = _r$13; $f._r$14 = _r$14; $f._r$15 = _r$15; $f._r$16 = _r$16; $f._r$17 = _r$17; $f._r$18 = _r$18; $f._r$19 = _r$19; $f._r$2 = _r$2; $f._r$20 = _r$20; $f._r$21 = _r$21; $f._r$22 = _r$22; $f._r$23 = _r$23; $f._r$24 = _r$24; $f._r$25 = _r$25; $f._r$26 = _r$26; $f._r$27 = _r$27; $f._r$28 = _r$28; $f._r$29 = _r$29; $f._r$3 = _r$3; $f._r$30 = _r$30; $f._r$31 = _r$31; $f._r$32 = _r$32; $f._r$33 = _r$33; $f._r$34 = _r$34; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._r$9 = _r$9; $f._ref = _ref; $f._ref$1 = _ref$1; $f._ref$2 = _ref$2; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f._v = _v; $f._v$1 = _v$1; $f.b = b; $f.c = c; $f.data = data; $f.e = e; $f.e$1 = e$1; $f.err = err; $f.err$1 = err$1; $f.err$2 = err$2; $f.err$3 = err$3; $f.err$4 = err$4; $f.n = n; $f.off = off; $f.ok = ok; $f.ok$1 = ok$1; $f.ok$2 = ok$2; $f.typ = typ; $f.vers = vers; $f.want = want; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.x$3 = x$3; $f.x$4 = x$4; $f.$s = $s; $f.$r = $r; return $f;
  57917. };
  57918. Conn.prototype.readRecord = function(want) { return this.$val.readRecord(want); };
  57919. Conn.ptr.prototype.sendAlertLocked = function(err) {
  57920. var $ptr, _r, _ref, c, err, $s, $r;
  57921. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _ref = $f._ref; c = $f.c; err = $f.err; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  57922. c = this;
  57923. _ref = err;
  57924. if (_ref === 100 || _ref === 0) {
  57925. c.tmp[0] = 1;
  57926. } else {
  57927. c.tmp[0] = 2;
  57928. }
  57929. c.tmp[1] = (err << 24 >>> 24);
  57930. _r = c.writeRecord(21, $subslice(new sliceType$4(c.tmp), 0, 2)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  57931. _r;
  57932. if (!((err === 0))) {
  57933. return c.out.setErrorLocked(new net.OpError.ptr("local error", "", $ifaceNil, new alert(err)));
  57934. }
  57935. return $ifaceNil;
  57936. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Conn.ptr.prototype.sendAlertLocked }; } $f.$ptr = $ptr; $f._r = _r; $f._ref = _ref; $f.c = c; $f.err = err; $f.$s = $s; $f.$r = $r; return $f;
  57937. };
  57938. Conn.prototype.sendAlertLocked = function(err) { return this.$val.sendAlertLocked(err); };
  57939. Conn.ptr.prototype.sendAlert = function(err) {
  57940. var $ptr, _r, c, err, $s, $deferred, $r;
  57941. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; c = $f.c; err = $f.err; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
  57942. c = this;
  57943. $r = c.out.Mutex.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  57944. $deferred.push([$methodVal(c.out.Mutex, "Unlock"), []]);
  57945. _r = c.sendAlertLocked(err); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  57946. return _r;
  57947. /* */ $s = -1; case -1: } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: Conn.ptr.prototype.sendAlert }; } $f.$ptr = $ptr; $f._r = _r; $f.c = c; $f.err = err; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
  57948. };
  57949. Conn.prototype.sendAlert = function(err) { return this.$val.sendAlert(err); };
  57950. Conn.ptr.prototype.writeRecord = function(typ, data) {
  57951. var $ptr, _r, _r$1, _r$2, _r$3, _r$4, _tmp, _tmp$1, _tuple, _tuple$1, _tuple$2, _tuple$3, b, c, cbc, data, err, explicitIV, explicitIVIsSeq, explicitIVLen, m, n, ok, ok$1, typ, vers, x, x$1, x$2, x$3, x$4, $s, $r;
  57952. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; b = $f.b; c = $f.c; cbc = $f.cbc; data = $f.data; err = $f.err; explicitIV = $f.explicitIV; explicitIVIsSeq = $f.explicitIVIsSeq; explicitIVLen = $f.explicitIVLen; m = $f.m; n = $f.n; ok = $f.ok; ok$1 = $f.ok$1; typ = $f.typ; vers = $f.vers; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; x$3 = $f.x$3; x$4 = $f.x$4; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  57953. n = 0;
  57954. err = $ifaceNil;
  57955. c = this;
  57956. b = c.out.newBlock();
  57957. /* while (true) { */ case 1:
  57958. /* if (!(data.$length > 0)) { break; } */ if(!(data.$length > 0)) { $s = 2; continue; }
  57959. m = data.$length;
  57960. if (m > 16384) {
  57961. m = 16384;
  57962. }
  57963. explicitIVLen = 0;
  57964. explicitIVIsSeq = false;
  57965. cbc = $ifaceNil;
  57966. /* */ if (c.out.version >= 770) { $s = 3; continue; }
  57967. /* */ $s = 4; continue;
  57968. /* if (c.out.version >= 770) { */ case 3:
  57969. ok = false;
  57970. _tuple = $assertType(c.out.cipher, cbcMode, true); cbc = _tuple[0]; ok = _tuple[1];
  57971. /* */ if (ok) { $s = 5; continue; }
  57972. /* */ $s = 6; continue;
  57973. /* if (ok) { */ case 5:
  57974. _r = cbc.BlockSize(); /* */ $s = 7; case 7: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  57975. explicitIVLen = _r;
  57976. /* } */ case 6:
  57977. /* } */ case 4:
  57978. if (explicitIVLen === 0) {
  57979. _tuple$1 = $assertType(c.out.cipher, cipher.AEAD, true); ok$1 = _tuple$1[1];
  57980. if (ok$1) {
  57981. explicitIVLen = 8;
  57982. explicitIVIsSeq = true;
  57983. }
  57984. }
  57985. b.resize((5 + explicitIVLen >> 0) + m >> 0);
  57986. (x = b.data, (0 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 0] = (typ << 24 >>> 24)));
  57987. vers = c.vers;
  57988. if (vers === 0) {
  57989. vers = 769;
  57990. }
  57991. (x$1 = b.data, (1 >= x$1.$length ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + 1] = ((vers >>> 8 << 16 >>> 16) << 24 >>> 24)));
  57992. (x$2 = b.data, (2 >= x$2.$length ? $throwRuntimeError("index out of range") : x$2.$array[x$2.$offset + 2] = (vers << 24 >>> 24)));
  57993. (x$3 = b.data, (3 >= x$3.$length ? $throwRuntimeError("index out of range") : x$3.$array[x$3.$offset + 3] = ((m >> 8 >> 0) << 24 >>> 24)));
  57994. (x$4 = b.data, (4 >= x$4.$length ? $throwRuntimeError("index out of range") : x$4.$array[x$4.$offset + 4] = (m << 24 >>> 24)));
  57995. /* */ if (explicitIVLen > 0) { $s = 8; continue; }
  57996. /* */ $s = 9; continue;
  57997. /* if (explicitIVLen > 0) { */ case 8:
  57998. explicitIV = $subslice(b.data, 5, (5 + explicitIVLen >> 0));
  57999. /* */ if (explicitIVIsSeq) { $s = 10; continue; }
  58000. /* */ $s = 11; continue;
  58001. /* if (explicitIVIsSeq) { */ case 10:
  58002. $copySlice(explicitIV, new sliceType$4(c.out.seq));
  58003. $s = 12; continue;
  58004. /* } else { */ case 11:
  58005. _r$1 = io.ReadFull(c.config.rand(), explicitIV); /* */ $s = 13; case 13: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  58006. _tuple$2 = _r$1; err = _tuple$2[1];
  58007. /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 14; continue; }
  58008. /* */ $s = 15; continue;
  58009. /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 14:
  58010. /* break; */ $s = 2; continue;
  58011. /* } */ case 15:
  58012. /* } */ case 12:
  58013. /* } */ case 9:
  58014. $copySlice($subslice(b.data, (5 + explicitIVLen >> 0)), data);
  58015. _r$2 = c.out.encrypt(b, explicitIVLen); /* */ $s = 16; case 16: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  58016. _r$2;
  58017. _r$3 = c.conn.Write(b.data); /* */ $s = 17; case 17: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  58018. _tuple$3 = _r$3; err = _tuple$3[1];
  58019. if (!($interfaceIsEqual(err, $ifaceNil))) {
  58020. /* break; */ $s = 2; continue;
  58021. }
  58022. n = n + (m) >> 0;
  58023. data = $subslice(data, m);
  58024. /* } */ $s = 1; continue; case 2:
  58025. c.out.freeBlock(b);
  58026. /* */ if (typ === 20) { $s = 18; continue; }
  58027. /* */ $s = 19; continue;
  58028. /* if (typ === 20) { */ case 18:
  58029. err = c.out.changeCipherSpec();
  58030. /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 20; continue; }
  58031. /* */ $s = 21; continue;
  58032. /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 20:
  58033. c.tmp[0] = 2;
  58034. c.tmp[1] = ($assertType(err, alert) << 24 >>> 24);
  58035. _r$4 = c.writeRecord(21, $subslice(new sliceType$4(c.tmp), 0, 2)); /* */ $s = 22; case 22: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
  58036. _r$4;
  58037. _tmp = n; _tmp$1 = c.out.setErrorLocked(new net.OpError.ptr("local error", "", $ifaceNil, err)); n = _tmp; err = _tmp$1;
  58038. return [n, err];
  58039. /* } */ case 21:
  58040. /* } */ case 19:
  58041. return [n, err];
  58042. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Conn.ptr.prototype.writeRecord }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f.b = b; $f.c = c; $f.cbc = cbc; $f.data = data; $f.err = err; $f.explicitIV = explicitIV; $f.explicitIVIsSeq = explicitIVIsSeq; $f.explicitIVLen = explicitIVLen; $f.m = m; $f.n = n; $f.ok = ok; $f.ok$1 = ok$1; $f.typ = typ; $f.vers = vers; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.x$3 = x$3; $f.x$4 = x$4; $f.$s = $s; $f.$r = $r; return $f;
  58043. };
  58044. Conn.prototype.writeRecord = function(typ, data) { return this.$val.writeRecord(typ, data); };
  58045. Conn.ptr.prototype.readHandshake = function() {
  58046. var $ptr, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _ref, c, data, err, err$1, err$2, err$3, m, n, $s, $r;
  58047. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _ref = $f._ref; c = $f.c; data = $f.data; err = $f.err; err$1 = $f.err$1; err$2 = $f.err$2; err$3 = $f.err$3; m = $f.m; n = $f.n; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  58048. c = this;
  58049. /* while (true) { */ case 1:
  58050. /* if (!(c.hand.Len() < 4)) { break; } */ if(!(c.hand.Len() < 4)) { $s = 2; continue; }
  58051. err = c.in$17.err;
  58052. if (!($interfaceIsEqual(err, $ifaceNil))) {
  58053. return [$ifaceNil, err];
  58054. }
  58055. _r = c.readRecord(22); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  58056. err$1 = _r;
  58057. /* */ if (!($interfaceIsEqual(err$1, $ifaceNil))) { $s = 4; continue; }
  58058. /* */ $s = 5; continue;
  58059. /* if (!($interfaceIsEqual(err$1, $ifaceNil))) { */ case 4:
  58060. return [$ifaceNil, err$1];
  58061. /* } */ case 5:
  58062. /* } */ $s = 1; continue; case 2:
  58063. data = c.hand.Bytes();
  58064. n = ((((1 >= data.$length ? $throwRuntimeError("index out of range") : data.$array[data.$offset + 1]) >> 0) << 16 >> 0) | (((2 >= data.$length ? $throwRuntimeError("index out of range") : data.$array[data.$offset + 2]) >> 0) << 8 >> 0)) | ((3 >= data.$length ? $throwRuntimeError("index out of range") : data.$array[data.$offset + 3]) >> 0);
  58065. /* */ if (n > 65536) { $s = 6; continue; }
  58066. /* */ $s = 7; continue;
  58067. /* if (n > 65536) { */ case 6:
  58068. _r$1 = c.sendAlert(80); /* */ $s = 8; case 8: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  58069. _r$2 = c.in$17.setErrorLocked(_r$1); /* */ $s = 9; case 9: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  58070. return [$ifaceNil, _r$2];
  58071. /* } */ case 7:
  58072. /* while (true) { */ case 10:
  58073. /* if (!(c.hand.Len() < (4 + n >> 0))) { break; } */ if(!(c.hand.Len() < (4 + n >> 0))) { $s = 11; continue; }
  58074. err$2 = c.in$17.err;
  58075. if (!($interfaceIsEqual(err$2, $ifaceNil))) {
  58076. return [$ifaceNil, err$2];
  58077. }
  58078. _r$3 = c.readRecord(22); /* */ $s = 12; case 12: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  58079. err$3 = _r$3;
  58080. /* */ if (!($interfaceIsEqual(err$3, $ifaceNil))) { $s = 13; continue; }
  58081. /* */ $s = 14; continue;
  58082. /* if (!($interfaceIsEqual(err$3, $ifaceNil))) { */ case 13:
  58083. return [$ifaceNil, err$3];
  58084. /* } */ case 14:
  58085. /* } */ $s = 10; continue; case 11:
  58086. data = c.hand.Next(4 + n >> 0);
  58087. m = $ifaceNil;
  58088. _ref = (0 >= data.$length ? $throwRuntimeError("index out of range") : data.$array[data.$offset + 0]);
  58089. /* */ if (_ref === 1) { $s = 15; continue; }
  58090. /* */ if (_ref === 2) { $s = 16; continue; }
  58091. /* */ if (_ref === 4) { $s = 17; continue; }
  58092. /* */ if (_ref === 11) { $s = 18; continue; }
  58093. /* */ if (_ref === 13) { $s = 19; continue; }
  58094. /* */ if (_ref === 22) { $s = 20; continue; }
  58095. /* */ if (_ref === 12) { $s = 21; continue; }
  58096. /* */ if (_ref === 14) { $s = 22; continue; }
  58097. /* */ if (_ref === 16) { $s = 23; continue; }
  58098. /* */ if (_ref === 15) { $s = 24; continue; }
  58099. /* */ if (_ref === 67) { $s = 25; continue; }
  58100. /* */ if (_ref === 20) { $s = 26; continue; }
  58101. /* */ $s = 27; continue;
  58102. /* if (_ref === 1) { */ case 15:
  58103. m = new clientHelloMsg.ptr();
  58104. $s = 28; continue;
  58105. /* } else if (_ref === 2) { */ case 16:
  58106. m = new serverHelloMsg.ptr();
  58107. $s = 28; continue;
  58108. /* } else if (_ref === 4) { */ case 17:
  58109. m = new newSessionTicketMsg.ptr();
  58110. $s = 28; continue;
  58111. /* } else if (_ref === 11) { */ case 18:
  58112. m = new certificateMsg.ptr();
  58113. $s = 28; continue;
  58114. /* } else if (_ref === 13) { */ case 19:
  58115. m = new certificateRequestMsg.ptr(sliceType$4.nil, c.vers >= 771, sliceType$4.nil, sliceType$2.nil, sliceType$6.nil);
  58116. $s = 28; continue;
  58117. /* } else if (_ref === 22) { */ case 20:
  58118. m = new certificateStatusMsg.ptr();
  58119. $s = 28; continue;
  58120. /* } else if (_ref === 12) { */ case 21:
  58121. m = new serverKeyExchangeMsg.ptr();
  58122. $s = 28; continue;
  58123. /* } else if (_ref === 14) { */ case 22:
  58124. m = new serverHelloDoneMsg.ptr();
  58125. $s = 28; continue;
  58126. /* } else if (_ref === 16) { */ case 23:
  58127. m = new clientKeyExchangeMsg.ptr();
  58128. $s = 28; continue;
  58129. /* } else if (_ref === 15) { */ case 24:
  58130. m = new certificateVerifyMsg.ptr(sliceType$4.nil, c.vers >= 771, new signatureAndHash.ptr(), sliceType$4.nil);
  58131. $s = 28; continue;
  58132. /* } else if (_ref === 67) { */ case 25:
  58133. m = new nextProtoMsg.ptr();
  58134. $s = 28; continue;
  58135. /* } else if (_ref === 20) { */ case 26:
  58136. m = new finishedMsg.ptr();
  58137. $s = 28; continue;
  58138. /* } else { */ case 27:
  58139. _r$4 = c.sendAlert(10); /* */ $s = 29; case 29: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
  58140. _r$5 = c.in$17.setErrorLocked(_r$4); /* */ $s = 30; case 30: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
  58141. return [$ifaceNil, _r$5];
  58142. /* } */ case 28:
  58143. data = $appendSlice(sliceType$4.nil, data);
  58144. _r$6 = m.unmarshal(data); /* */ $s = 33; case 33: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
  58145. /* */ if (!_r$6) { $s = 31; continue; }
  58146. /* */ $s = 32; continue;
  58147. /* if (!_r$6) { */ case 31:
  58148. _r$7 = c.sendAlert(10); /* */ $s = 34; case 34: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
  58149. _r$8 = c.in$17.setErrorLocked(_r$7); /* */ $s = 35; case 35: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
  58150. return [$ifaceNil, _r$8];
  58151. /* } */ case 32:
  58152. return [m, $ifaceNil];
  58153. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Conn.ptr.prototype.readHandshake }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._ref = _ref; $f.c = c; $f.data = data; $f.err = err; $f.err$1 = err$1; $f.err$2 = err$2; $f.err$3 = err$3; $f.m = m; $f.n = n; $f.$s = $s; $f.$r = $r; return $f;
  58154. };
  58155. Conn.prototype.readHandshake = function() { return this.$val.readHandshake(); };
  58156. Conn.ptr.prototype.Write = function(b) {
  58157. var $ptr, _r, _r$1, _r$2, _tmp, _tmp$1, _tuple, _tuple$1, _tuple$2, b, c, err, err$1, err$2, err$3, m, n, n$1, ok, $s, $deferred, $r;
  58158. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; b = $f.b; c = $f.c; err = $f.err; err$1 = $f.err$1; err$2 = $f.err$2; err$3 = $f.err$3; m = $f.m; n = $f.n; n$1 = $f.n$1; ok = $f.ok; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
  58159. c = this;
  58160. _r = c.Handshake(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  58161. err = _r;
  58162. /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 2; continue; }
  58163. /* */ $s = 3; continue;
  58164. /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 2:
  58165. return [0, err];
  58166. /* } */ case 3:
  58167. $r = c.out.Mutex.Lock(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  58168. $deferred.push([$methodVal(c.out.Mutex, "Unlock"), []]);
  58169. err$1 = c.out.err;
  58170. if (!($interfaceIsEqual(err$1, $ifaceNil))) {
  58171. return [0, err$1];
  58172. }
  58173. if (!c.handshakeComplete) {
  58174. return [0, new alert(80)];
  58175. }
  58176. m = 0;
  58177. /* */ if (b.$length > 1 && c.vers <= 769) { $s = 5; continue; }
  58178. /* */ $s = 6; continue;
  58179. /* if (b.$length > 1 && c.vers <= 769) { */ case 5:
  58180. _tuple = $assertType(c.out.cipher, cipher.BlockMode, true); ok = _tuple[1];
  58181. /* */ if (ok) { $s = 7; continue; }
  58182. /* */ $s = 8; continue;
  58183. /* if (ok) { */ case 7:
  58184. _r$1 = c.writeRecord(23, $subslice(b, 0, 1)); /* */ $s = 9; case 9: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  58185. _tuple$1 = _r$1; n = _tuple$1[0]; err$2 = _tuple$1[1];
  58186. if (!($interfaceIsEqual(err$2, $ifaceNil))) {
  58187. return [n, c.out.setErrorLocked(err$2)];
  58188. }
  58189. _tmp = 1; _tmp$1 = $subslice(b, 1); m = _tmp; b = _tmp$1;
  58190. /* } */ case 8:
  58191. /* } */ case 6:
  58192. _r$2 = c.writeRecord(23, b); /* */ $s = 10; case 10: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  58193. _tuple$2 = _r$2; n$1 = _tuple$2[0]; err$3 = _tuple$2[1];
  58194. return [n$1 + m >> 0, c.out.setErrorLocked(err$3)];
  58195. /* */ $s = -1; case -1: } return; } } catch(err) { $err = err; $s = -1; return [0, $ifaceNil]; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: Conn.ptr.prototype.Write }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f.b = b; $f.c = c; $f.err = err; $f.err$1 = err$1; $f.err$2 = err$2; $f.err$3 = err$3; $f.m = m; $f.n = n; $f.n$1 = n$1; $f.ok = ok; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
  58196. };
  58197. Conn.prototype.Write = function(b) { return this.$val.Write(b); };
  58198. Conn.ptr.prototype.Read = function(b) {
  58199. var $ptr, _r, _r$1, _r$2, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tuple, b, c, emptyRecordCount, err, err$1, err$2, n, recErr, ri, x, $s, $deferred, $r;
  58200. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tmp$6 = $f._tmp$6; _tmp$7 = $f._tmp$7; _tuple = $f._tuple; b = $f.b; c = $f.c; emptyRecordCount = $f.emptyRecordCount; err = $f.err; err$1 = $f.err$1; err$2 = $f.err$2; n = $f.n; recErr = $f.recErr; ri = $f.ri; x = $f.x; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
  58201. n = 0;
  58202. err = $ifaceNil;
  58203. c = this;
  58204. _r = c.Handshake(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  58205. err = _r;
  58206. /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 2; continue; }
  58207. /* */ $s = 3; continue;
  58208. /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 2:
  58209. return [n, err];
  58210. /* } */ case 3:
  58211. if (b.$length === 0) {
  58212. return [n, err];
  58213. }
  58214. $r = c.in$17.Mutex.Lock(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  58215. $deferred.push([$methodVal(c.in$17.Mutex, "Unlock"), []]);
  58216. emptyRecordCount = 0;
  58217. /* while (true) { */ case 5:
  58218. /* if (!(emptyRecordCount <= 100)) { break; } */ if(!(emptyRecordCount <= 100)) { $s = 6; continue; }
  58219. /* while (true) { */ case 7:
  58220. /* if (!(c.input === ptrType$8.nil && $interfaceIsEqual(c.in$17.err, $ifaceNil))) { break; } */ if(!(c.input === ptrType$8.nil && $interfaceIsEqual(c.in$17.err, $ifaceNil))) { $s = 8; continue; }
  58221. _r$1 = c.readRecord(23); /* */ $s = 9; case 9: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  58222. err$1 = _r$1;
  58223. /* */ if (!($interfaceIsEqual(err$1, $ifaceNil))) { $s = 10; continue; }
  58224. /* */ $s = 11; continue;
  58225. /* if (!($interfaceIsEqual(err$1, $ifaceNil))) { */ case 10:
  58226. _tmp = 0; _tmp$1 = err$1; n = _tmp; err = _tmp$1;
  58227. return [n, err];
  58228. /* } */ case 11:
  58229. /* } */ $s = 7; continue; case 8:
  58230. err$2 = c.in$17.err;
  58231. if (!($interfaceIsEqual(err$2, $ifaceNil))) {
  58232. _tmp$2 = 0; _tmp$3 = err$2; n = _tmp$2; err = _tmp$3;
  58233. return [n, err];
  58234. }
  58235. _tuple = c.input.Read(b); n = _tuple[0]; err = _tuple[1];
  58236. if (c.input.off >= c.input.data.$length) {
  58237. c.in$17.freeBlock(c.input);
  58238. c.input = ptrType$8.nil;
  58239. }
  58240. ri = c.rawInput;
  58241. /* */ if (!(ri === ptrType$8.nil) && !((n === 0)) && $interfaceIsEqual(err, $ifaceNil) && c.input === ptrType$8.nil && ri.data.$length > 0 && (((x = ri.data, (0 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 0])) << 24 >>> 24) === 21)) { $s = 12; continue; }
  58242. /* */ $s = 13; continue;
  58243. /* if (!(ri === ptrType$8.nil) && !((n === 0)) && $interfaceIsEqual(err, $ifaceNil) && c.input === ptrType$8.nil && ri.data.$length > 0 && (((x = ri.data, (0 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 0])) << 24 >>> 24) === 21)) { */ case 12:
  58244. _r$2 = c.readRecord(23); /* */ $s = 14; case 14: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  58245. recErr = _r$2;
  58246. /* */ if (!($interfaceIsEqual(recErr, $ifaceNil))) { $s = 15; continue; }
  58247. /* */ $s = 16; continue;
  58248. /* if (!($interfaceIsEqual(recErr, $ifaceNil))) { */ case 15:
  58249. err = recErr;
  58250. /* } */ case 16:
  58251. /* } */ case 13:
  58252. if (!((n === 0)) || !($interfaceIsEqual(err, $ifaceNil))) {
  58253. _tmp$4 = n; _tmp$5 = err; n = _tmp$4; err = _tmp$5;
  58254. return [n, err];
  58255. }
  58256. emptyRecordCount = emptyRecordCount + (1) >> 0;
  58257. /* } */ $s = 5; continue; case 6:
  58258. _tmp$6 = 0; _tmp$7 = io.ErrNoProgress; n = _tmp$6; err = _tmp$7;
  58259. return [n, err];
  58260. /* */ $s = -1; case -1: } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if (!$curGoroutine.asleep) { return [n, err]; } if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: Conn.ptr.prototype.Read }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tmp$6 = _tmp$6; $f._tmp$7 = _tmp$7; $f._tuple = _tuple; $f.b = b; $f.c = c; $f.emptyRecordCount = emptyRecordCount; $f.err = err; $f.err$1 = err$1; $f.err$2 = err$2; $f.n = n; $f.recErr = recErr; $f.ri = ri; $f.x = x; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
  58261. };
  58262. Conn.prototype.Read = function(b) { return this.$val.Read(b); };
  58263. Conn.ptr.prototype.Close = function() {
  58264. var $ptr, _r, _r$1, alertErr, c, err, $s, $deferred, $r;
  58265. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; alertErr = $f.alertErr; c = $f.c; err = $f.err; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
  58266. c = this;
  58267. alertErr = $ifaceNil;
  58268. $r = c.handshakeMutex.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  58269. $deferred.push([$methodVal(c.handshakeMutex, "Unlock"), []]);
  58270. /* */ if (c.handshakeComplete) { $s = 2; continue; }
  58271. /* */ $s = 3; continue;
  58272. /* if (c.handshakeComplete) { */ case 2:
  58273. _r = c.sendAlert(0); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  58274. alertErr = _r;
  58275. /* } */ case 3:
  58276. _r$1 = c.conn.Close(); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  58277. err = _r$1;
  58278. /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 6; continue; }
  58279. /* */ $s = 7; continue;
  58280. /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 6:
  58281. return err;
  58282. /* } */ case 7:
  58283. return alertErr;
  58284. /* */ $s = -1; case -1: } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: Conn.ptr.prototype.Close }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f.alertErr = alertErr; $f.c = c; $f.err = err; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
  58285. };
  58286. Conn.prototype.Close = function() { return this.$val.Close(); };
  58287. Conn.ptr.prototype.Handshake = function() {
  58288. var $ptr, _r, _r$1, c, err, $s, $deferred, $r;
  58289. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; c = $f.c; err = $f.err; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
  58290. c = this;
  58291. $r = c.handshakeMutex.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  58292. $deferred.push([$methodVal(c.handshakeMutex, "Unlock"), []]);
  58293. err = c.handshakeErr;
  58294. if (!($interfaceIsEqual(err, $ifaceNil))) {
  58295. return err;
  58296. }
  58297. if (c.handshakeComplete) {
  58298. return $ifaceNil;
  58299. }
  58300. /* */ if (c.isClient) { $s = 2; continue; }
  58301. /* */ $s = 3; continue;
  58302. /* if (c.isClient) { */ case 2:
  58303. _r = c.clientHandshake(); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  58304. c.handshakeErr = _r;
  58305. $s = 4; continue;
  58306. /* } else { */ case 3:
  58307. _r$1 = c.serverHandshake(); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  58308. c.handshakeErr = _r$1;
  58309. /* } */ case 4:
  58310. return c.handshakeErr;
  58311. /* */ $s = -1; case -1: } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: Conn.ptr.prototype.Handshake }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f.c = c; $f.err = err; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
  58312. };
  58313. Conn.prototype.Handshake = function() { return this.$val.Handshake(); };
  58314. Conn.ptr.prototype.ConnectionState = function() {
  58315. var $ptr, c, state, $s, $deferred, $r;
  58316. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; c = $f.c; state = $f.state; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
  58317. c = this;
  58318. $r = c.handshakeMutex.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  58319. $deferred.push([$methodVal(c.handshakeMutex, "Unlock"), []]);
  58320. state = $clone(new ConnectionState.ptr(), ConnectionState);
  58321. state.HandshakeComplete = c.handshakeComplete;
  58322. if (c.handshakeComplete) {
  58323. state.Version = c.vers;
  58324. state.NegotiatedProtocol = c.clientProtocol;
  58325. state.DidResume = c.didResume;
  58326. state.NegotiatedProtocolIsMutual = !c.clientProtocolFallback;
  58327. state.CipherSuite = c.cipherSuite;
  58328. state.PeerCertificates = c.peerCertificates;
  58329. state.VerifiedChains = c.verifiedChains;
  58330. state.ServerName = c.serverName;
  58331. if (!c.didResume) {
  58332. state.TLSUnique = new sliceType$4(c.firstFinished);
  58333. }
  58334. }
  58335. return state;
  58336. /* */ $s = -1; case -1: } return; } } catch(err) { $err = err; $s = -1; return new ConnectionState.ptr(); } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: Conn.ptr.prototype.ConnectionState }; } $f.$ptr = $ptr; $f.c = c; $f.state = state; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
  58337. };
  58338. Conn.prototype.ConnectionState = function() { return this.$val.ConnectionState(); };
  58339. Conn.ptr.prototype.OCSPResponse = function() {
  58340. var $ptr, c, $s, $deferred, $r;
  58341. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; c = $f.c; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
  58342. c = this;
  58343. $r = c.handshakeMutex.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  58344. $deferred.push([$methodVal(c.handshakeMutex, "Unlock"), []]);
  58345. return c.ocspResponse;
  58346. /* */ $s = -1; case -1: } return; } } catch(err) { $err = err; $s = -1; return sliceType$4.nil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: Conn.ptr.prototype.OCSPResponse }; } $f.$ptr = $ptr; $f.c = c; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
  58347. };
  58348. Conn.prototype.OCSPResponse = function() { return this.$val.OCSPResponse(); };
  58349. Conn.ptr.prototype.VerifyHostname = function(host) {
  58350. var $ptr, c, host, x, $s, $deferred, $r;
  58351. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; c = $f.c; host = $f.host; x = $f.x; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
  58352. c = this;
  58353. $r = c.handshakeMutex.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  58354. $deferred.push([$methodVal(c.handshakeMutex, "Unlock"), []]);
  58355. if (!c.isClient) {
  58356. return errors.New("tls: VerifyHostname called on TLS server connection");
  58357. }
  58358. if (!c.handshakeComplete) {
  58359. return errors.New("tls: handshake has not yet been performed");
  58360. }
  58361. return (x = c.peerCertificates, (0 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 0])).VerifyHostname(host);
  58362. /* */ $s = -1; case -1: } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: Conn.ptr.prototype.VerifyHostname }; } $f.$ptr = $ptr; $f.c = c; $f.host = host; $f.x = x; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
  58363. };
  58364. Conn.prototype.VerifyHostname = function(host) { return this.$val.VerifyHostname(host); };
  58365. Conn.ptr.prototype.clientHandshake = function() {
  58366. var $ptr, _i, _i$1, _i$2, _i$3, _r, _r$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$16, _r$17, _r$18, _r$19, _r$2, _r$20, _r$21, _r$22, _r$23, _r$24, _r$25, _r$26, _r$27, _r$28, _r$29, _r$3, _r$30, _r$31, _r$32, _r$33, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _ref$1, _ref$2, _ref$3, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, _tuple$6, c, cacheKey, candidateSession, cipherSuiteOk, err, err$1, err$10, err$2, err$3, err$4, err$5, err$6, err$7, err$8, err$9, hello, hs, id, isResume, l, msg, nextProtosLength, ok, ok$1, possibleCipherSuites, proto, serverHello, session, sessionCache, suite, suite$1, suiteId, vers, versOk, $s, $r;
  58367. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _i = $f._i; _i$1 = $f._i$1; _i$2 = $f._i$2; _i$3 = $f._i$3; _r = $f._r; _r$1 = $f._r$1; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$12 = $f._r$12; _r$13 = $f._r$13; _r$14 = $f._r$14; _r$15 = $f._r$15; _r$16 = $f._r$16; _r$17 = $f._r$17; _r$18 = $f._r$18; _r$19 = $f._r$19; _r$2 = $f._r$2; _r$20 = $f._r$20; _r$21 = $f._r$21; _r$22 = $f._r$22; _r$23 = $f._r$23; _r$24 = $f._r$24; _r$25 = $f._r$25; _r$26 = $f._r$26; _r$27 = $f._r$27; _r$28 = $f._r$28; _r$29 = $f._r$29; _r$3 = $f._r$3; _r$30 = $f._r$30; _r$31 = $f._r$31; _r$32 = $f._r$32; _r$33 = $f._r$33; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _r$9 = $f._r$9; _ref = $f._ref; _ref$1 = $f._ref$1; _ref$2 = $f._ref$2; _ref$3 = $f._ref$3; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; _tuple$4 = $f._tuple$4; _tuple$5 = $f._tuple$5; _tuple$6 = $f._tuple$6; c = $f.c; cacheKey = $f.cacheKey; candidateSession = $f.candidateSession; cipherSuiteOk = $f.cipherSuiteOk; err = $f.err; err$1 = $f.err$1; err$10 = $f.err$10; err$2 = $f.err$2; err$3 = $f.err$3; err$4 = $f.err$4; err$5 = $f.err$5; err$6 = $f.err$6; err$7 = $f.err$7; err$8 = $f.err$8; err$9 = $f.err$9; hello = $f.hello; hs = $f.hs; id = $f.id; isResume = $f.isResume; l = $f.l; msg = $f.msg; nextProtosLength = $f.nextProtosLength; ok = $f.ok; ok$1 = $f.ok$1; possibleCipherSuites = $f.possibleCipherSuites; proto = $f.proto; serverHello = $f.serverHello; session = $f.session; sessionCache = $f.sessionCache; suite = $f.suite; suite$1 = $f.suite$1; suiteId = $f.suiteId; vers = $f.vers; versOk = $f.versOk; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  58368. c = this;
  58369. if (c.config === ptrType$2.nil) {
  58370. c.config = defaultConfig();
  58371. }
  58372. if ((c.config.ServerName.length === 0) && !c.config.InsecureSkipVerify) {
  58373. return errors.New("tls: either ServerName or InsecureSkipVerify must be specified in the tls.Config");
  58374. }
  58375. nextProtosLength = 0;
  58376. _ref = c.config.NextProtos;
  58377. _i = 0;
  58378. while (true) {
  58379. if (!(_i < _ref.$length)) { break; }
  58380. proto = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]);
  58381. l = proto.length;
  58382. if ((l === 0) || l > 255) {
  58383. return errors.New("tls: invalid NextProtos value");
  58384. } else {
  58385. nextProtosLength = nextProtosLength + ((1 + l >> 0)) >> 0;
  58386. }
  58387. _i++;
  58388. }
  58389. if (nextProtosLength > 65535) {
  58390. return errors.New("tls: NextProtos values too large");
  58391. }
  58392. hello = new clientHelloMsg.ptr(sliceType$4.nil, c.config.maxVersion(), $makeSlice(sliceType$4, 32), sliceType$4.nil, sliceType.nil, new sliceType$4([0]), c.config.NextProtos.$length > 0, c.config.ServerName, true, c.config.curvePreferences(), new sliceType$4([0]), false, sliceType$4.nil, sliceType$2.nil, true, c.config.NextProtos);
  58393. _r = c.config.cipherSuites(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  58394. possibleCipherSuites = _r;
  58395. hello.cipherSuites = $makeSlice(sliceType, 0, possibleCipherSuites.$length);
  58396. _ref$1 = possibleCipherSuites;
  58397. _i$1 = 0;
  58398. /* while (true) { */ case 2:
  58399. /* if (!(_i$1 < _ref$1.$length)) { break; } */ if(!(_i$1 < _ref$1.$length)) { $s = 3; continue; }
  58400. suiteId = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? $throwRuntimeError("index out of range") : _ref$1.$array[_ref$1.$offset + _i$1]);
  58401. _ref$2 = cipherSuites;
  58402. _i$2 = 0;
  58403. while (true) {
  58404. if (!(_i$2 < _ref$2.$length)) { break; }
  58405. suite = ((_i$2 < 0 || _i$2 >= _ref$2.$length) ? $throwRuntimeError("index out of range") : _ref$2.$array[_ref$2.$offset + _i$2]);
  58406. if (!((suite.id === suiteId))) {
  58407. _i$2++;
  58408. continue;
  58409. }
  58410. if (hello.vers < 771 && !(((suite.flags & 4) === 0))) {
  58411. _i$2++;
  58412. continue;
  58413. }
  58414. hello.cipherSuites = $append(hello.cipherSuites, suiteId);
  58415. _i$1++;
  58416. /* continue NextCipherSuite; */ $s = 2; continue s;
  58417. }
  58418. _i$1++;
  58419. /* } */ $s = 2; continue; case 3:
  58420. _r$1 = io.ReadFull(c.config.rand(), hello.random); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  58421. _tuple = _r$1; err = _tuple[1];
  58422. /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 5; continue; }
  58423. /* */ $s = 6; continue;
  58424. /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 5:
  58425. _r$2 = c.sendAlert(80); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  58426. _r$2;
  58427. _r$3 = err.Error(); /* */ $s = 8; case 8: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  58428. _r$4 = errors.New("tls: short read from Rand: " + _r$3); /* */ $s = 9; case 9: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
  58429. return _r$4;
  58430. /* } */ case 6:
  58431. if (hello.vers >= 771) {
  58432. hello.signatureAndHashes = supportedSKXSignatureAlgorithms;
  58433. }
  58434. session = ptrType$7.nil;
  58435. cacheKey = "";
  58436. sessionCache = c.config.ClientSessionCache;
  58437. if (c.config.SessionTicketsDisabled) {
  58438. sessionCache = $ifaceNil;
  58439. }
  58440. /* */ if (!($interfaceIsEqual(sessionCache, $ifaceNil))) { $s = 10; continue; }
  58441. /* */ $s = 11; continue;
  58442. /* if (!($interfaceIsEqual(sessionCache, $ifaceNil))) { */ case 10:
  58443. hello.ticketSupported = true;
  58444. _r$5 = c.conn.RemoteAddr(); /* */ $s = 12; case 12: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
  58445. _r$6 = clientSessionCacheKey(_r$5, c.config); /* */ $s = 13; case 13: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
  58446. cacheKey = _r$6;
  58447. _r$7 = sessionCache.Get(cacheKey); /* */ $s = 14; case 14: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
  58448. _tuple$1 = _r$7; candidateSession = _tuple$1[0]; ok = _tuple$1[1];
  58449. if (ok) {
  58450. cipherSuiteOk = false;
  58451. _ref$3 = hello.cipherSuites;
  58452. _i$3 = 0;
  58453. while (true) {
  58454. if (!(_i$3 < _ref$3.$length)) { break; }
  58455. id = ((_i$3 < 0 || _i$3 >= _ref$3.$length) ? $throwRuntimeError("index out of range") : _ref$3.$array[_ref$3.$offset + _i$3]);
  58456. if (id === candidateSession.cipherSuite) {
  58457. cipherSuiteOk = true;
  58458. break;
  58459. }
  58460. _i$3++;
  58461. }
  58462. versOk = candidateSession.vers >= c.config.minVersion() && candidateSession.vers <= c.config.maxVersion();
  58463. if (versOk && cipherSuiteOk) {
  58464. session = candidateSession;
  58465. }
  58466. }
  58467. /* } */ case 11:
  58468. /* */ if (!(session === ptrType$7.nil)) { $s = 15; continue; }
  58469. /* */ $s = 16; continue;
  58470. /* if (!(session === ptrType$7.nil)) { */ case 15:
  58471. hello.sessionTicket = session.sessionTicket;
  58472. hello.sessionId = $makeSlice(sliceType$4, 16);
  58473. _r$8 = io.ReadFull(c.config.rand(), hello.sessionId); /* */ $s = 17; case 17: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
  58474. _tuple$2 = _r$8; err$1 = _tuple$2[1];
  58475. /* */ if (!($interfaceIsEqual(err$1, $ifaceNil))) { $s = 18; continue; }
  58476. /* */ $s = 19; continue;
  58477. /* if (!($interfaceIsEqual(err$1, $ifaceNil))) { */ case 18:
  58478. _r$9 = c.sendAlert(80); /* */ $s = 20; case 20: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
  58479. _r$9;
  58480. _r$10 = err$1.Error(); /* */ $s = 21; case 21: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
  58481. _r$11 = errors.New("tls: short read from Rand: " + _r$10); /* */ $s = 22; case 22: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
  58482. return _r$11;
  58483. /* } */ case 19:
  58484. /* } */ case 16:
  58485. _r$12 = c.writeRecord(22, hello.marshal()); /* */ $s = 23; case 23: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; }
  58486. _r$12;
  58487. _r$13 = c.readHandshake(); /* */ $s = 24; case 24: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; }
  58488. _tuple$3 = _r$13; msg = _tuple$3[0]; err = _tuple$3[1];
  58489. if (!($interfaceIsEqual(err, $ifaceNil))) {
  58490. return err;
  58491. }
  58492. _tuple$4 = $assertType(msg, ptrType$9, true); serverHello = _tuple$4[0]; ok$1 = _tuple$4[1];
  58493. /* */ if (!ok$1) { $s = 25; continue; }
  58494. /* */ $s = 26; continue;
  58495. /* if (!ok$1) { */ case 25:
  58496. _r$14 = c.sendAlert(10); /* */ $s = 27; case 27: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; }
  58497. _r$14;
  58498. _r$15 = unexpectedMessageError(serverHello, msg); /* */ $s = 28; case 28: if($c) { $c = false; _r$15 = _r$15.$blk(); } if (_r$15 && _r$15.$blk !== undefined) { break s; }
  58499. return _r$15;
  58500. /* } */ case 26:
  58501. _tuple$5 = c.config.mutualVersion(serverHello.vers); vers = _tuple$5[0]; ok$1 = _tuple$5[1];
  58502. /* */ if (!ok$1 || vers < 769) { $s = 29; continue; }
  58503. /* */ $s = 30; continue;
  58504. /* if (!ok$1 || vers < 769) { */ case 29:
  58505. _r$16 = c.sendAlert(70); /* */ $s = 31; case 31: if($c) { $c = false; _r$16 = _r$16.$blk(); } if (_r$16 && _r$16.$blk !== undefined) { break s; }
  58506. _r$16;
  58507. _r$17 = fmt.Errorf("tls: server selected unsupported protocol version %x", new sliceType$5([new $Uint16(serverHello.vers)])); /* */ $s = 32; case 32: if($c) { $c = false; _r$17 = _r$17.$blk(); } if (_r$17 && _r$17.$blk !== undefined) { break s; }
  58508. return _r$17;
  58509. /* } */ case 30:
  58510. c.vers = vers;
  58511. c.haveVers = true;
  58512. _r$18 = c.config.cipherSuites(); /* */ $s = 33; case 33: if($c) { $c = false; _r$18 = _r$18.$blk(); } if (_r$18 && _r$18.$blk !== undefined) { break s; }
  58513. _r$19 = mutualCipherSuite(_r$18, serverHello.cipherSuite); /* */ $s = 34; case 34: if($c) { $c = false; _r$19 = _r$19.$blk(); } if (_r$19 && _r$19.$blk !== undefined) { break s; }
  58514. suite$1 = _r$19;
  58515. /* */ if (suite$1 === ptrType.nil) { $s = 35; continue; }
  58516. /* */ $s = 36; continue;
  58517. /* if (suite$1 === ptrType.nil) { */ case 35:
  58518. _r$20 = c.sendAlert(40); /* */ $s = 37; case 37: if($c) { $c = false; _r$20 = _r$20.$blk(); } if (_r$20 && _r$20.$blk !== undefined) { break s; }
  58519. _r$20;
  58520. _r$21 = fmt.Errorf("tls: server selected an unsupported cipher suite", new sliceType$5([])); /* */ $s = 38; case 38: if($c) { $c = false; _r$21 = _r$21.$blk(); } if (_r$21 && _r$21.$blk !== undefined) { break s; }
  58521. return _r$21;
  58522. /* } */ case 36:
  58523. hs = new clientHandshakeState.ptr(c, serverHello, hello, suite$1, $clone(newFinishedHash(c.vers), finishedHash), sliceType$4.nil, session);
  58524. _r$22 = hs.finishedHash.Write(hs.hello.marshal()); /* */ $s = 39; case 39: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; }
  58525. _r$22;
  58526. _r$23 = hs.finishedHash.Write(hs.serverHello.marshal()); /* */ $s = 40; case 40: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; }
  58527. _r$23;
  58528. _r$24 = hs.processServerHello(); /* */ $s = 41; case 41: if($c) { $c = false; _r$24 = _r$24.$blk(); } if (_r$24 && _r$24.$blk !== undefined) { break s; }
  58529. _tuple$6 = _r$24; isResume = _tuple$6[0]; err = _tuple$6[1];
  58530. if (!($interfaceIsEqual(err, $ifaceNil))) {
  58531. return err;
  58532. }
  58533. /* */ if (isResume) { $s = 42; continue; }
  58534. /* */ $s = 43; continue;
  58535. /* if (isResume) { */ case 42:
  58536. _r$25 = hs.establishKeys(); /* */ $s = 45; case 45: if($c) { $c = false; _r$25 = _r$25.$blk(); } if (_r$25 && _r$25.$blk !== undefined) { break s; }
  58537. err$2 = _r$25;
  58538. /* */ if (!($interfaceIsEqual(err$2, $ifaceNil))) { $s = 46; continue; }
  58539. /* */ $s = 47; continue;
  58540. /* if (!($interfaceIsEqual(err$2, $ifaceNil))) { */ case 46:
  58541. return err$2;
  58542. /* } */ case 47:
  58543. _r$26 = hs.readSessionTicket(); /* */ $s = 48; case 48: if($c) { $c = false; _r$26 = _r$26.$blk(); } if (_r$26 && _r$26.$blk !== undefined) { break s; }
  58544. err$3 = _r$26;
  58545. /* */ if (!($interfaceIsEqual(err$3, $ifaceNil))) { $s = 49; continue; }
  58546. /* */ $s = 50; continue;
  58547. /* if (!($interfaceIsEqual(err$3, $ifaceNil))) { */ case 49:
  58548. return err$3;
  58549. /* } */ case 50:
  58550. _r$27 = hs.readFinished(new sliceType$4(c.firstFinished)); /* */ $s = 51; case 51: if($c) { $c = false; _r$27 = _r$27.$blk(); } if (_r$27 && _r$27.$blk !== undefined) { break s; }
  58551. err$4 = _r$27;
  58552. /* */ if (!($interfaceIsEqual(err$4, $ifaceNil))) { $s = 52; continue; }
  58553. /* */ $s = 53; continue;
  58554. /* if (!($interfaceIsEqual(err$4, $ifaceNil))) { */ case 52:
  58555. return err$4;
  58556. /* } */ case 53:
  58557. _r$28 = hs.sendFinished(sliceType$4.nil); /* */ $s = 54; case 54: if($c) { $c = false; _r$28 = _r$28.$blk(); } if (_r$28 && _r$28.$blk !== undefined) { break s; }
  58558. err$5 = _r$28;
  58559. /* */ if (!($interfaceIsEqual(err$5, $ifaceNil))) { $s = 55; continue; }
  58560. /* */ $s = 56; continue;
  58561. /* if (!($interfaceIsEqual(err$5, $ifaceNil))) { */ case 55:
  58562. return err$5;
  58563. /* } */ case 56:
  58564. $s = 44; continue;
  58565. /* } else { */ case 43:
  58566. _r$29 = hs.doFullHandshake(); /* */ $s = 57; case 57: if($c) { $c = false; _r$29 = _r$29.$blk(); } if (_r$29 && _r$29.$blk !== undefined) { break s; }
  58567. err$6 = _r$29;
  58568. /* */ if (!($interfaceIsEqual(err$6, $ifaceNil))) { $s = 58; continue; }
  58569. /* */ $s = 59; continue;
  58570. /* if (!($interfaceIsEqual(err$6, $ifaceNil))) { */ case 58:
  58571. return err$6;
  58572. /* } */ case 59:
  58573. _r$30 = hs.establishKeys(); /* */ $s = 60; case 60: if($c) { $c = false; _r$30 = _r$30.$blk(); } if (_r$30 && _r$30.$blk !== undefined) { break s; }
  58574. err$7 = _r$30;
  58575. /* */ if (!($interfaceIsEqual(err$7, $ifaceNil))) { $s = 61; continue; }
  58576. /* */ $s = 62; continue;
  58577. /* if (!($interfaceIsEqual(err$7, $ifaceNil))) { */ case 61:
  58578. return err$7;
  58579. /* } */ case 62:
  58580. _r$31 = hs.sendFinished(new sliceType$4(c.firstFinished)); /* */ $s = 63; case 63: if($c) { $c = false; _r$31 = _r$31.$blk(); } if (_r$31 && _r$31.$blk !== undefined) { break s; }
  58581. err$8 = _r$31;
  58582. /* */ if (!($interfaceIsEqual(err$8, $ifaceNil))) { $s = 64; continue; }
  58583. /* */ $s = 65; continue;
  58584. /* if (!($interfaceIsEqual(err$8, $ifaceNil))) { */ case 64:
  58585. return err$8;
  58586. /* } */ case 65:
  58587. _r$32 = hs.readSessionTicket(); /* */ $s = 66; case 66: if($c) { $c = false; _r$32 = _r$32.$blk(); } if (_r$32 && _r$32.$blk !== undefined) { break s; }
  58588. err$9 = _r$32;
  58589. /* */ if (!($interfaceIsEqual(err$9, $ifaceNil))) { $s = 67; continue; }
  58590. /* */ $s = 68; continue;
  58591. /* if (!($interfaceIsEqual(err$9, $ifaceNil))) { */ case 67:
  58592. return err$9;
  58593. /* } */ case 68:
  58594. _r$33 = hs.readFinished(sliceType$4.nil); /* */ $s = 69; case 69: if($c) { $c = false; _r$33 = _r$33.$blk(); } if (_r$33 && _r$33.$blk !== undefined) { break s; }
  58595. err$10 = _r$33;
  58596. /* */ if (!($interfaceIsEqual(err$10, $ifaceNil))) { $s = 70; continue; }
  58597. /* */ $s = 71; continue;
  58598. /* if (!($interfaceIsEqual(err$10, $ifaceNil))) { */ case 70:
  58599. return err$10;
  58600. /* } */ case 71:
  58601. /* } */ case 44:
  58602. /* */ if (!($interfaceIsEqual(sessionCache, $ifaceNil)) && !(hs.session === ptrType$7.nil) && !(session === hs.session)) { $s = 72; continue; }
  58603. /* */ $s = 73; continue;
  58604. /* if (!($interfaceIsEqual(sessionCache, $ifaceNil)) && !(hs.session === ptrType$7.nil) && !(session === hs.session)) { */ case 72:
  58605. $r = sessionCache.Put(cacheKey, hs.session); /* */ $s = 74; case 74: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  58606. /* } */ case 73:
  58607. c.didResume = isResume;
  58608. c.handshakeComplete = true;
  58609. c.cipherSuite = suite$1.id;
  58610. return $ifaceNil;
  58611. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Conn.ptr.prototype.clientHandshake }; } $f.$ptr = $ptr; $f._i = _i; $f._i$1 = _i$1; $f._i$2 = _i$2; $f._i$3 = _i$3; $f._r = _r; $f._r$1 = _r$1; $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$12 = _r$12; $f._r$13 = _r$13; $f._r$14 = _r$14; $f._r$15 = _r$15; $f._r$16 = _r$16; $f._r$17 = _r$17; $f._r$18 = _r$18; $f._r$19 = _r$19; $f._r$2 = _r$2; $f._r$20 = _r$20; $f._r$21 = _r$21; $f._r$22 = _r$22; $f._r$23 = _r$23; $f._r$24 = _r$24; $f._r$25 = _r$25; $f._r$26 = _r$26; $f._r$27 = _r$27; $f._r$28 = _r$28; $f._r$29 = _r$29; $f._r$3 = _r$3; $f._r$30 = _r$30; $f._r$31 = _r$31; $f._r$32 = _r$32; $f._r$33 = _r$33; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._r$9 = _r$9; $f._ref = _ref; $f._ref$1 = _ref$1; $f._ref$2 = _ref$2; $f._ref$3 = _ref$3; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f._tuple$4 = _tuple$4; $f._tuple$5 = _tuple$5; $f._tuple$6 = _tuple$6; $f.c = c; $f.cacheKey = cacheKey; $f.candidateSession = candidateSession; $f.cipherSuiteOk = cipherSuiteOk; $f.err = err; $f.err$1 = err$1; $f.err$10 = err$10; $f.err$2 = err$2; $f.err$3 = err$3; $f.err$4 = err$4; $f.err$5 = err$5; $f.err$6 = err$6; $f.err$7 = err$7; $f.err$8 = err$8; $f.err$9 = err$9; $f.hello = hello; $f.hs = hs; $f.id = id; $f.isResume = isResume; $f.l = l; $f.msg = msg; $f.nextProtosLength = nextProtosLength; $f.ok = ok; $f.ok$1 = ok$1; $f.possibleCipherSuites = possibleCipherSuites; $f.proto = proto; $f.serverHello = serverHello; $f.session = session; $f.sessionCache = sessionCache; $f.suite = suite; $f.suite$1 = suite$1; $f.suiteId = suiteId; $f.vers = vers; $f.versOk = versOk; $f.$s = $s; $f.$r = $r; return $f;
  58612. };
  58613. Conn.prototype.clientHandshake = function() { return this.$val.clientHandshake(); };
  58614. clientHandshakeState.ptr.prototype.doFullHandshake = function() {
  58615. var $ptr, _i, _i$1, _i$2, _i$3, _i$4, _i$5, _r, _r$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$16, _r$17, _r$18, _r$19, _r$2, _r$20, _r$21, _r$22, _r$23, _r$24, _r$25, _r$26, _r$27, _r$28, _r$29, _r$3, _r$30, _r$31, _r$32, _r$33, _r$34, _r$35, _r$36, _r$37, _r$38, _r$39, _r$4, _r$40, _r$41, _r$42, _r$43, _r$44, _r$45, _r$46, _r$47, _r$48, _r$49, _r$5, _r$50, _r$51, _r$6, _r$7, _r$8, _r$9, _ref, _ref$1, _ref$2, _ref$3, _ref$4, _ref$5, _ref$6, _ref$7, _ref$8, _tmp, _tmp$1, _tuple, _tuple$1, _tuple$10, _tuple$11, _tuple$12, _tuple$13, _tuple$14, _tuple$15, _tuple$16, _tuple$17, _tuple$18, _tuple$2, _tuple$3, _tuple$4, _tuple$5, _tuple$6, _tuple$7, _tuple$8, _tuple$9, asn1Data, c, ca, cert, cert$1, cert$2, certMsg, certReq, certRequested, certType, certVerify, certs, chain, chainToSend, ckx, cs, digest, digest$1, ecdsaAvail, err, err$1, hashFunc, hashFunc$1, hashId, hashId$1, hs, i, i$1, i$2, j, key, keyAgreement$1, msg, ok, ok$1, ok$2, opts, preMasterSecret, rsaAvail, shd, signed, skx, x509Cert, $s, $r;
  58616. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _i = $f._i; _i$1 = $f._i$1; _i$2 = $f._i$2; _i$3 = $f._i$3; _i$4 = $f._i$4; _i$5 = $f._i$5; _r = $f._r; _r$1 = $f._r$1; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$12 = $f._r$12; _r$13 = $f._r$13; _r$14 = $f._r$14; _r$15 = $f._r$15; _r$16 = $f._r$16; _r$17 = $f._r$17; _r$18 = $f._r$18; _r$19 = $f._r$19; _r$2 = $f._r$2; _r$20 = $f._r$20; _r$21 = $f._r$21; _r$22 = $f._r$22; _r$23 = $f._r$23; _r$24 = $f._r$24; _r$25 = $f._r$25; _r$26 = $f._r$26; _r$27 = $f._r$27; _r$28 = $f._r$28; _r$29 = $f._r$29; _r$3 = $f._r$3; _r$30 = $f._r$30; _r$31 = $f._r$31; _r$32 = $f._r$32; _r$33 = $f._r$33; _r$34 = $f._r$34; _r$35 = $f._r$35; _r$36 = $f._r$36; _r$37 = $f._r$37; _r$38 = $f._r$38; _r$39 = $f._r$39; _r$4 = $f._r$4; _r$40 = $f._r$40; _r$41 = $f._r$41; _r$42 = $f._r$42; _r$43 = $f._r$43; _r$44 = $f._r$44; _r$45 = $f._r$45; _r$46 = $f._r$46; _r$47 = $f._r$47; _r$48 = $f._r$48; _r$49 = $f._r$49; _r$5 = $f._r$5; _r$50 = $f._r$50; _r$51 = $f._r$51; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _r$9 = $f._r$9; _ref = $f._ref; _ref$1 = $f._ref$1; _ref$2 = $f._ref$2; _ref$3 = $f._ref$3; _ref$4 = $f._ref$4; _ref$5 = $f._ref$5; _ref$6 = $f._ref$6; _ref$7 = $f._ref$7; _ref$8 = $f._ref$8; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$10 = $f._tuple$10; _tuple$11 = $f._tuple$11; _tuple$12 = $f._tuple$12; _tuple$13 = $f._tuple$13; _tuple$14 = $f._tuple$14; _tuple$15 = $f._tuple$15; _tuple$16 = $f._tuple$16; _tuple$17 = $f._tuple$17; _tuple$18 = $f._tuple$18; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; _tuple$4 = $f._tuple$4; _tuple$5 = $f._tuple$5; _tuple$6 = $f._tuple$6; _tuple$7 = $f._tuple$7; _tuple$8 = $f._tuple$8; _tuple$9 = $f._tuple$9; asn1Data = $f.asn1Data; c = $f.c; ca = $f.ca; cert = $f.cert; cert$1 = $f.cert$1; cert$2 = $f.cert$2; certMsg = $f.certMsg; certReq = $f.certReq; certRequested = $f.certRequested; certType = $f.certType; certVerify = $f.certVerify; certs = $f.certs; chain = $f.chain; chainToSend = $f.chainToSend; ckx = $f.ckx; cs = $f.cs; digest = $f.digest; digest$1 = $f.digest$1; ecdsaAvail = $f.ecdsaAvail; err = $f.err; err$1 = $f.err$1; hashFunc = $f.hashFunc; hashFunc$1 = $f.hashFunc$1; hashId = $f.hashId; hashId$1 = $f.hashId$1; hs = $f.hs; i = $f.i; i$1 = $f.i$1; i$2 = $f.i$2; j = $f.j; key = $f.key; keyAgreement$1 = $f.keyAgreement$1; msg = $f.msg; ok = $f.ok; ok$1 = $f.ok$1; ok$2 = $f.ok$2; opts = $f.opts; preMasterSecret = $f.preMasterSecret; rsaAvail = $f.rsaAvail; shd = $f.shd; signed = $f.signed; skx = $f.skx; x509Cert = $f.x509Cert; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  58617. hs = this;
  58618. c = hs.c;
  58619. _r = c.readHandshake(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  58620. _tuple = _r; msg = _tuple[0]; err = _tuple[1];
  58621. if (!($interfaceIsEqual(err, $ifaceNil))) {
  58622. return err;
  58623. }
  58624. _tuple$1 = $assertType(msg, ptrType$12, true); certMsg = _tuple$1[0]; ok = _tuple$1[1];
  58625. /* */ if (!ok || (certMsg.certificates.$length === 0)) { $s = 2; continue; }
  58626. /* */ $s = 3; continue;
  58627. /* if (!ok || (certMsg.certificates.$length === 0)) { */ case 2:
  58628. _r$1 = c.sendAlert(10); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  58629. _r$1;
  58630. _r$2 = unexpectedMessageError(certMsg, msg); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  58631. return _r$2;
  58632. /* } */ case 3:
  58633. _r$3 = hs.finishedHash.Write(certMsg.marshal()); /* */ $s = 6; case 6: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  58634. _r$3;
  58635. certs = $makeSlice(sliceType$8, certMsg.certificates.$length);
  58636. _ref = certMsg.certificates;
  58637. _i = 0;
  58638. /* while (true) { */ case 7:
  58639. /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 8; continue; }
  58640. i = _i;
  58641. asn1Data = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]);
  58642. _r$4 = x509.ParseCertificate(asn1Data); /* */ $s = 9; case 9: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
  58643. _tuple$2 = _r$4; cert = _tuple$2[0]; err$1 = _tuple$2[1];
  58644. /* */ if (!($interfaceIsEqual(err$1, $ifaceNil))) { $s = 10; continue; }
  58645. /* */ $s = 11; continue;
  58646. /* if (!($interfaceIsEqual(err$1, $ifaceNil))) { */ case 10:
  58647. _r$5 = c.sendAlert(42); /* */ $s = 12; case 12: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
  58648. _r$5;
  58649. _r$6 = err$1.Error(); /* */ $s = 13; case 13: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
  58650. _r$7 = errors.New("tls: failed to parse certificate from server: " + _r$6); /* */ $s = 14; case 14: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
  58651. return _r$7;
  58652. /* } */ case 11:
  58653. ((i < 0 || i >= certs.$length) ? $throwRuntimeError("index out of range") : certs.$array[certs.$offset + i] = cert);
  58654. _i++;
  58655. /* } */ $s = 7; continue; case 8:
  58656. /* */ if (!c.config.InsecureSkipVerify) { $s = 15; continue; }
  58657. /* */ $s = 16; continue;
  58658. /* if (!c.config.InsecureSkipVerify) { */ case 15:
  58659. _r$8 = c.config.time(); /* */ $s = 17; case 17: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
  58660. opts = new x509.VerifyOptions.ptr(c.config.ServerName, x509.NewCertPool(), c.config.RootCAs, $clone(_r$8, time.Time), sliceType$9.nil);
  58661. _ref$1 = certs;
  58662. _i$1 = 0;
  58663. /* while (true) { */ case 18:
  58664. /* if (!(_i$1 < _ref$1.$length)) { break; } */ if(!(_i$1 < _ref$1.$length)) { $s = 19; continue; }
  58665. i$1 = _i$1;
  58666. cert$1 = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? $throwRuntimeError("index out of range") : _ref$1.$array[_ref$1.$offset + _i$1]);
  58667. if (i$1 === 0) {
  58668. _i$1++;
  58669. /* continue; */ $s = 18; continue;
  58670. }
  58671. opts.Intermediates.AddCert(cert$1);
  58672. _i$1++;
  58673. /* } */ $s = 18; continue; case 19:
  58674. _r$9 = (0 >= certs.$length ? $throwRuntimeError("index out of range") : certs.$array[certs.$offset + 0]).Verify(opts); /* */ $s = 20; case 20: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
  58675. _tuple$3 = _r$9; c.verifiedChains = _tuple$3[0]; err = _tuple$3[1];
  58676. /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 21; continue; }
  58677. /* */ $s = 22; continue;
  58678. /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 21:
  58679. _r$10 = c.sendAlert(42); /* */ $s = 23; case 23: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
  58680. _r$10;
  58681. return err;
  58682. /* } */ case 22:
  58683. /* } */ case 16:
  58684. _ref$2 = (0 >= certs.$length ? $throwRuntimeError("index out of range") : certs.$array[certs.$offset + 0]).PublicKey;
  58685. /* */ if ($assertType(_ref$2, ptrType$15, true)[1] || $assertType(_ref$2, ptrType$16, true)[1]) { $s = 24; continue; }
  58686. /* */ $s = 25; continue;
  58687. /* switch (0) { default: if ($assertType(_ref$2, ptrType$15, true)[1] || $assertType(_ref$2, ptrType$16, true)[1]) { */ case 24:
  58688. /* break; */ $s = 26; continue;
  58689. $s = 26; continue;
  58690. /* } else { */ case 25:
  58691. _r$11 = c.sendAlert(43); /* */ $s = 27; case 27: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
  58692. _r$11;
  58693. _r$12 = fmt.Errorf("tls: server's certificate contains an unsupported type of public key: %T", new sliceType$5([(0 >= certs.$length ? $throwRuntimeError("index out of range") : certs.$array[certs.$offset + 0]).PublicKey])); /* */ $s = 28; case 28: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; }
  58694. return _r$12;
  58695. /* } } */ case 26:
  58696. c.peerCertificates = certs;
  58697. /* */ if (hs.serverHello.ocspStapling) { $s = 29; continue; }
  58698. /* */ $s = 30; continue;
  58699. /* if (hs.serverHello.ocspStapling) { */ case 29:
  58700. _r$13 = c.readHandshake(); /* */ $s = 31; case 31: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; }
  58701. _tuple$4 = _r$13; msg = _tuple$4[0]; err = _tuple$4[1];
  58702. if (!($interfaceIsEqual(err, $ifaceNil))) {
  58703. return err;
  58704. }
  58705. _tuple$5 = $assertType(msg, ptrType$17, true); cs = _tuple$5[0]; ok$1 = _tuple$5[1];
  58706. /* */ if (!ok$1) { $s = 32; continue; }
  58707. /* */ $s = 33; continue;
  58708. /* if (!ok$1) { */ case 32:
  58709. _r$14 = c.sendAlert(10); /* */ $s = 34; case 34: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; }
  58710. _r$14;
  58711. _r$15 = unexpectedMessageError(cs, msg); /* */ $s = 35; case 35: if($c) { $c = false; _r$15 = _r$15.$blk(); } if (_r$15 && _r$15.$blk !== undefined) { break s; }
  58712. return _r$15;
  58713. /* } */ case 33:
  58714. _r$16 = hs.finishedHash.Write(cs.marshal()); /* */ $s = 36; case 36: if($c) { $c = false; _r$16 = _r$16.$blk(); } if (_r$16 && _r$16.$blk !== undefined) { break s; }
  58715. _r$16;
  58716. if (cs.statusType === 1) {
  58717. c.ocspResponse = cs.response;
  58718. }
  58719. /* } */ case 30:
  58720. _r$17 = c.readHandshake(); /* */ $s = 37; case 37: if($c) { $c = false; _r$17 = _r$17.$blk(); } if (_r$17 && _r$17.$blk !== undefined) { break s; }
  58721. _tuple$6 = _r$17; msg = _tuple$6[0]; err = _tuple$6[1];
  58722. if (!($interfaceIsEqual(err, $ifaceNil))) {
  58723. return err;
  58724. }
  58725. _r$18 = hs.suite.ka(c.vers); /* */ $s = 38; case 38: if($c) { $c = false; _r$18 = _r$18.$blk(); } if (_r$18 && _r$18.$blk !== undefined) { break s; }
  58726. keyAgreement$1 = _r$18;
  58727. _tuple$7 = $assertType(msg, ptrType$18, true); skx = _tuple$7[0]; ok = _tuple$7[1];
  58728. /* */ if (ok) { $s = 39; continue; }
  58729. /* */ $s = 40; continue;
  58730. /* if (ok) { */ case 39:
  58731. _r$19 = hs.finishedHash.Write(skx.marshal()); /* */ $s = 41; case 41: if($c) { $c = false; _r$19 = _r$19.$blk(); } if (_r$19 && _r$19.$blk !== undefined) { break s; }
  58732. _r$19;
  58733. _r$20 = keyAgreement$1.processServerKeyExchange(c.config, hs.hello, hs.serverHello, (0 >= certs.$length ? $throwRuntimeError("index out of range") : certs.$array[certs.$offset + 0]), skx); /* */ $s = 42; case 42: if($c) { $c = false; _r$20 = _r$20.$blk(); } if (_r$20 && _r$20.$blk !== undefined) { break s; }
  58734. err = _r$20;
  58735. /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 43; continue; }
  58736. /* */ $s = 44; continue;
  58737. /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 43:
  58738. _r$21 = c.sendAlert(10); /* */ $s = 45; case 45: if($c) { $c = false; _r$21 = _r$21.$blk(); } if (_r$21 && _r$21.$blk !== undefined) { break s; }
  58739. _r$21;
  58740. return err;
  58741. /* } */ case 44:
  58742. _r$22 = c.readHandshake(); /* */ $s = 46; case 46: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; }
  58743. _tuple$8 = _r$22; msg = _tuple$8[0]; err = _tuple$8[1];
  58744. if (!($interfaceIsEqual(err, $ifaceNil))) {
  58745. return err;
  58746. }
  58747. /* } */ case 40:
  58748. chainToSend = ptrType$3.nil;
  58749. certRequested = false;
  58750. _tuple$9 = $assertType(msg, ptrType$19, true); certReq = _tuple$9[0]; ok = _tuple$9[1];
  58751. /* */ if (ok) { $s = 47; continue; }
  58752. /* */ $s = 48; continue;
  58753. /* if (ok) { */ case 47:
  58754. certRequested = true;
  58755. _r$23 = hs.finishedHash.Write(certReq.marshal()); /* */ $s = 49; case 49: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; }
  58756. _r$23;
  58757. _tmp = false; _tmp$1 = false; rsaAvail = _tmp; ecdsaAvail = _tmp$1;
  58758. _ref$3 = certReq.certificateTypes;
  58759. _i$2 = 0;
  58760. while (true) {
  58761. if (!(_i$2 < _ref$3.$length)) { break; }
  58762. certType = ((_i$2 < 0 || _i$2 >= _ref$3.$length) ? $throwRuntimeError("index out of range") : _ref$3.$array[_ref$3.$offset + _i$2]);
  58763. _ref$4 = certType;
  58764. if (_ref$4 === 1) {
  58765. rsaAvail = true;
  58766. } else if (_ref$4 === 64) {
  58767. ecdsaAvail = true;
  58768. }
  58769. _i$2++;
  58770. }
  58771. _ref$5 = c.config.Certificates;
  58772. _i$3 = 0;
  58773. /* while (true) { */ case 50:
  58774. /* if (!(_i$3 < _ref$5.$length)) { break; } */ if(!(_i$3 < _ref$5.$length)) { $s = 51; continue; }
  58775. i$2 = _i$3;
  58776. chain = $clone(((_i$3 < 0 || _i$3 >= _ref$5.$length) ? $throwRuntimeError("index out of range") : _ref$5.$array[_ref$5.$offset + _i$3]), Certificate);
  58777. /* */ if (!rsaAvail && !ecdsaAvail) { $s = 52; continue; }
  58778. /* */ $s = 53; continue;
  58779. /* if (!rsaAvail && !ecdsaAvail) { */ case 52:
  58780. _i$3++;
  58781. /* continue; */ $s = 50; continue;
  58782. /* } */ case 53:
  58783. _ref$6 = chain.Certificate;
  58784. _i$4 = 0;
  58785. /* while (true) { */ case 54:
  58786. /* if (!(_i$4 < _ref$6.$length)) { break; } */ if(!(_i$4 < _ref$6.$length)) { $s = 55; continue; }
  58787. j = _i$4;
  58788. cert$2 = ((_i$4 < 0 || _i$4 >= _ref$6.$length) ? $throwRuntimeError("index out of range") : _ref$6.$array[_ref$6.$offset + _i$4]);
  58789. x509Cert = chain.Leaf;
  58790. /* */ if (!((j === 0)) || x509Cert === ptrType$13.nil) { $s = 56; continue; }
  58791. /* */ $s = 57; continue;
  58792. /* if (!((j === 0)) || x509Cert === ptrType$13.nil) { */ case 56:
  58793. _r$24 = x509.ParseCertificate(cert$2); /* */ $s = 58; case 58: if($c) { $c = false; _r$24 = _r$24.$blk(); } if (_r$24 && _r$24.$blk !== undefined) { break s; }
  58794. _tuple$10 = _r$24; x509Cert = _tuple$10[0]; err = _tuple$10[1];
  58795. /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 59; continue; }
  58796. /* */ $s = 60; continue;
  58797. /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 59:
  58798. _r$25 = c.sendAlert(80); /* */ $s = 61; case 61: if($c) { $c = false; _r$25 = _r$25.$blk(); } if (_r$25 && _r$25.$blk !== undefined) { break s; }
  58799. _r$25;
  58800. _r$26 = err.Error(); /* */ $s = 62; case 62: if($c) { $c = false; _r$26 = _r$26.$blk(); } if (_r$26 && _r$26.$blk !== undefined) { break s; }
  58801. _r$27 = errors.New("tls: failed to parse client certificate #" + strconv.Itoa(i$2) + ": " + _r$26); /* */ $s = 63; case 63: if($c) { $c = false; _r$27 = _r$27.$blk(); } if (_r$27 && _r$27.$blk !== undefined) { break s; }
  58802. return _r$27;
  58803. /* } */ case 60:
  58804. /* } */ case 57:
  58805. if (rsaAvail && (x509Cert.PublicKeyAlgorithm === 1)) {
  58806. } else if (ecdsaAvail && (x509Cert.PublicKeyAlgorithm === 3)) {
  58807. } else {
  58808. _i$3++;
  58809. /* continue findCert; */ $s = 50; continue s;
  58810. }
  58811. if (certReq.certificateAuthorities.$length === 0) {
  58812. chainToSend = chain;
  58813. /* break findCert; */ $s = 51; continue s;
  58814. }
  58815. _ref$7 = certReq.certificateAuthorities;
  58816. _i$5 = 0;
  58817. while (true) {
  58818. if (!(_i$5 < _ref$7.$length)) { break; }
  58819. ca = ((_i$5 < 0 || _i$5 >= _ref$7.$length) ? $throwRuntimeError("index out of range") : _ref$7.$array[_ref$7.$offset + _i$5]);
  58820. if (bytes.Equal(x509Cert.RawIssuer, ca)) {
  58821. chainToSend = chain;
  58822. /* break findCert; */ $s = 51; continue s;
  58823. }
  58824. _i$5++;
  58825. }
  58826. _i$4++;
  58827. /* } */ $s = 54; continue; case 55:
  58828. _i$3++;
  58829. /* } */ $s = 50; continue; case 51:
  58830. _r$28 = c.readHandshake(); /* */ $s = 64; case 64: if($c) { $c = false; _r$28 = _r$28.$blk(); } if (_r$28 && _r$28.$blk !== undefined) { break s; }
  58831. _tuple$11 = _r$28; msg = _tuple$11[0]; err = _tuple$11[1];
  58832. if (!($interfaceIsEqual(err, $ifaceNil))) {
  58833. return err;
  58834. }
  58835. /* } */ case 48:
  58836. _tuple$12 = $assertType(msg, ptrType$20, true); shd = _tuple$12[0]; ok = _tuple$12[1];
  58837. /* */ if (!ok) { $s = 65; continue; }
  58838. /* */ $s = 66; continue;
  58839. /* if (!ok) { */ case 65:
  58840. _r$29 = c.sendAlert(10); /* */ $s = 67; case 67: if($c) { $c = false; _r$29 = _r$29.$blk(); } if (_r$29 && _r$29.$blk !== undefined) { break s; }
  58841. _r$29;
  58842. _r$30 = unexpectedMessageError(shd, msg); /* */ $s = 68; case 68: if($c) { $c = false; _r$30 = _r$30.$blk(); } if (_r$30 && _r$30.$blk !== undefined) { break s; }
  58843. return _r$30;
  58844. /* } */ case 66:
  58845. _r$31 = hs.finishedHash.Write(shd.marshal()); /* */ $s = 69; case 69: if($c) { $c = false; _r$31 = _r$31.$blk(); } if (_r$31 && _r$31.$blk !== undefined) { break s; }
  58846. _r$31;
  58847. /* */ if (certRequested) { $s = 70; continue; }
  58848. /* */ $s = 71; continue;
  58849. /* if (certRequested) { */ case 70:
  58850. certMsg = new certificateMsg.ptr();
  58851. if (!(chainToSend === ptrType$3.nil)) {
  58852. certMsg.certificates = chainToSend.Certificate;
  58853. }
  58854. _r$32 = hs.finishedHash.Write(certMsg.marshal()); /* */ $s = 72; case 72: if($c) { $c = false; _r$32 = _r$32.$blk(); } if (_r$32 && _r$32.$blk !== undefined) { break s; }
  58855. _r$32;
  58856. _r$33 = c.writeRecord(22, certMsg.marshal()); /* */ $s = 73; case 73: if($c) { $c = false; _r$33 = _r$33.$blk(); } if (_r$33 && _r$33.$blk !== undefined) { break s; }
  58857. _r$33;
  58858. /* } */ case 71:
  58859. _r$34 = keyAgreement$1.generateClientKeyExchange(c.config, hs.hello, (0 >= certs.$length ? $throwRuntimeError("index out of range") : certs.$array[certs.$offset + 0])); /* */ $s = 74; case 74: if($c) { $c = false; _r$34 = _r$34.$blk(); } if (_r$34 && _r$34.$blk !== undefined) { break s; }
  58860. _tuple$13 = _r$34; preMasterSecret = _tuple$13[0]; ckx = _tuple$13[1]; err = _tuple$13[2];
  58861. /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 75; continue; }
  58862. /* */ $s = 76; continue;
  58863. /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 75:
  58864. _r$35 = c.sendAlert(80); /* */ $s = 77; case 77: if($c) { $c = false; _r$35 = _r$35.$blk(); } if (_r$35 && _r$35.$blk !== undefined) { break s; }
  58865. _r$35;
  58866. return err;
  58867. /* } */ case 76:
  58868. /* */ if (!(ckx === ptrType$21.nil)) { $s = 78; continue; }
  58869. /* */ $s = 79; continue;
  58870. /* if (!(ckx === ptrType$21.nil)) { */ case 78:
  58871. _r$36 = hs.finishedHash.Write(ckx.marshal()); /* */ $s = 80; case 80: if($c) { $c = false; _r$36 = _r$36.$blk(); } if (_r$36 && _r$36.$blk !== undefined) { break s; }
  58872. _r$36;
  58873. _r$37 = c.writeRecord(22, ckx.marshal()); /* */ $s = 81; case 81: if($c) { $c = false; _r$37 = _r$37.$blk(); } if (_r$37 && _r$37.$blk !== undefined) { break s; }
  58874. _r$37;
  58875. /* } */ case 79:
  58876. /* */ if (!(chainToSend === ptrType$3.nil)) { $s = 82; continue; }
  58877. /* */ $s = 83; continue;
  58878. /* if (!(chainToSend === ptrType$3.nil)) { */ case 82:
  58879. signed = sliceType$4.nil;
  58880. certVerify = new certificateVerifyMsg.ptr(sliceType$4.nil, c.vers >= 771, new signatureAndHash.ptr(), sliceType$4.nil);
  58881. _tuple$14 = $assertType(chainToSend.PrivateKey, crypto.Signer, true); key = _tuple$14[0]; ok$2 = _tuple$14[1];
  58882. /* */ if (!ok$2) { $s = 84; continue; }
  58883. /* */ $s = 85; continue;
  58884. /* if (!ok$2) { */ case 84:
  58885. _r$38 = c.sendAlert(80); /* */ $s = 86; case 86: if($c) { $c = false; _r$38 = _r$38.$blk(); } if (_r$38 && _r$38.$blk !== undefined) { break s; }
  58886. _r$38;
  58887. _r$39 = fmt.Errorf("tls: client certificate private key of type %T does not implement crypto.Signer", new sliceType$5([chainToSend.PrivateKey])); /* */ $s = 87; case 87: if($c) { $c = false; _r$39 = _r$39.$blk(); } if (_r$39 && _r$39.$blk !== undefined) { break s; }
  58888. return _r$39;
  58889. /* } */ case 85:
  58890. _r$40 = key.Public(); /* */ $s = 88; case 88: if($c) { $c = false; _r$40 = _r$40.$blk(); } if (_r$40 && _r$40.$blk !== undefined) { break s; }
  58891. _ref$8 = _r$40;
  58892. /* */ if ($assertType(_ref$8, ptrType$16, true)[1]) { $s = 89; continue; }
  58893. /* */ if ($assertType(_ref$8, ptrType$15, true)[1]) { $s = 90; continue; }
  58894. /* */ $s = 91; continue;
  58895. /* if ($assertType(_ref$8, ptrType$16, true)[1]) { */ case 89:
  58896. _r$41 = hs.finishedHash.hashForClientCertificate(3); /* */ $s = 93; case 93: if($c) { $c = false; _r$41 = _r$41.$blk(); } if (_r$41 && _r$41.$blk !== undefined) { break s; }
  58897. _tuple$15 = _r$41; digest = _tuple$15[0]; hashFunc = _tuple$15[1]; hashId = _tuple$15[2];
  58898. _r$42 = key.Sign(c.config.rand(), digest, new crypto.Hash(hashFunc)); /* */ $s = 94; case 94: if($c) { $c = false; _r$42 = _r$42.$blk(); } if (_r$42 && _r$42.$blk !== undefined) { break s; }
  58899. _tuple$16 = _r$42; signed = _tuple$16[0]; err = _tuple$16[1];
  58900. certVerify.signatureAndHash.signature = 3;
  58901. certVerify.signatureAndHash.hash = hashId;
  58902. $s = 92; continue;
  58903. /* } else if ($assertType(_ref$8, ptrType$15, true)[1]) { */ case 90:
  58904. _r$43 = hs.finishedHash.hashForClientCertificate(1); /* */ $s = 95; case 95: if($c) { $c = false; _r$43 = _r$43.$blk(); } if (_r$43 && _r$43.$blk !== undefined) { break s; }
  58905. _tuple$17 = _r$43; digest$1 = _tuple$17[0]; hashFunc$1 = _tuple$17[1]; hashId$1 = _tuple$17[2];
  58906. _r$44 = key.Sign(c.config.rand(), digest$1, new crypto.Hash(hashFunc$1)); /* */ $s = 96; case 96: if($c) { $c = false; _r$44 = _r$44.$blk(); } if (_r$44 && _r$44.$blk !== undefined) { break s; }
  58907. _tuple$18 = _r$44; signed = _tuple$18[0]; err = _tuple$18[1];
  58908. certVerify.signatureAndHash.signature = 1;
  58909. certVerify.signatureAndHash.hash = hashId$1;
  58910. $s = 92; continue;
  58911. /* } else { */ case 91:
  58912. _r$45 = fmt.Errorf("tls: unknown client certificate key type: %T", new sliceType$5([key])); /* */ $s = 97; case 97: if($c) { $c = false; _r$45 = _r$45.$blk(); } if (_r$45 && _r$45.$blk !== undefined) { break s; }
  58913. err = _r$45;
  58914. /* } */ case 92:
  58915. /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 98; continue; }
  58916. /* */ $s = 99; continue;
  58917. /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 98:
  58918. _r$46 = c.sendAlert(80); /* */ $s = 100; case 100: if($c) { $c = false; _r$46 = _r$46.$blk(); } if (_r$46 && _r$46.$blk !== undefined) { break s; }
  58919. _r$46;
  58920. _r$47 = err.Error(); /* */ $s = 101; case 101: if($c) { $c = false; _r$47 = _r$47.$blk(); } if (_r$47 && _r$47.$blk !== undefined) { break s; }
  58921. _r$48 = errors.New("tls: failed to sign handshake with client certificate: " + _r$47); /* */ $s = 102; case 102: if($c) { $c = false; _r$48 = _r$48.$blk(); } if (_r$48 && _r$48.$blk !== undefined) { break s; }
  58922. return _r$48;
  58923. /* } */ case 99:
  58924. certVerify.signature = signed;
  58925. _r$49 = hs.finishedHash.Write(certVerify.marshal()); /* */ $s = 103; case 103: if($c) { $c = false; _r$49 = _r$49.$blk(); } if (_r$49 && _r$49.$blk !== undefined) { break s; }
  58926. _r$49;
  58927. _r$50 = c.writeRecord(22, certVerify.marshal()); /* */ $s = 104; case 104: if($c) { $c = false; _r$50 = _r$50.$blk(); } if (_r$50 && _r$50.$blk !== undefined) { break s; }
  58928. _r$50;
  58929. /* } */ case 83:
  58930. _r$51 = masterFromPreMasterSecret(c.vers, preMasterSecret, hs.hello.random, hs.serverHello.random); /* */ $s = 105; case 105: if($c) { $c = false; _r$51 = _r$51.$blk(); } if (_r$51 && _r$51.$blk !== undefined) { break s; }
  58931. hs.masterSecret = _r$51;
  58932. return $ifaceNil;
  58933. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: clientHandshakeState.ptr.prototype.doFullHandshake }; } $f.$ptr = $ptr; $f._i = _i; $f._i$1 = _i$1; $f._i$2 = _i$2; $f._i$3 = _i$3; $f._i$4 = _i$4; $f._i$5 = _i$5; $f._r = _r; $f._r$1 = _r$1; $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$12 = _r$12; $f._r$13 = _r$13; $f._r$14 = _r$14; $f._r$15 = _r$15; $f._r$16 = _r$16; $f._r$17 = _r$17; $f._r$18 = _r$18; $f._r$19 = _r$19; $f._r$2 = _r$2; $f._r$20 = _r$20; $f._r$21 = _r$21; $f._r$22 = _r$22; $f._r$23 = _r$23; $f._r$24 = _r$24; $f._r$25 = _r$25; $f._r$26 = _r$26; $f._r$27 = _r$27; $f._r$28 = _r$28; $f._r$29 = _r$29; $f._r$3 = _r$3; $f._r$30 = _r$30; $f._r$31 = _r$31; $f._r$32 = _r$32; $f._r$33 = _r$33; $f._r$34 = _r$34; $f._r$35 = _r$35; $f._r$36 = _r$36; $f._r$37 = _r$37; $f._r$38 = _r$38; $f._r$39 = _r$39; $f._r$4 = _r$4; $f._r$40 = _r$40; $f._r$41 = _r$41; $f._r$42 = _r$42; $f._r$43 = _r$43; $f._r$44 = _r$44; $f._r$45 = _r$45; $f._r$46 = _r$46; $f._r$47 = _r$47; $f._r$48 = _r$48; $f._r$49 = _r$49; $f._r$5 = _r$5; $f._r$50 = _r$50; $f._r$51 = _r$51; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._r$9 = _r$9; $f._ref = _ref; $f._ref$1 = _ref$1; $f._ref$2 = _ref$2; $f._ref$3 = _ref$3; $f._ref$4 = _ref$4; $f._ref$5 = _ref$5; $f._ref$6 = _ref$6; $f._ref$7 = _ref$7; $f._ref$8 = _ref$8; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$10 = _tuple$10; $f._tuple$11 = _tuple$11; $f._tuple$12 = _tuple$12; $f._tuple$13 = _tuple$13; $f._tuple$14 = _tuple$14; $f._tuple$15 = _tuple$15; $f._tuple$16 = _tuple$16; $f._tuple$17 = _tuple$17; $f._tuple$18 = _tuple$18; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f._tuple$4 = _tuple$4; $f._tuple$5 = _tuple$5; $f._tuple$6 = _tuple$6; $f._tuple$7 = _tuple$7; $f._tuple$8 = _tuple$8; $f._tuple$9 = _tuple$9; $f.asn1Data = asn1Data; $f.c = c; $f.ca = ca; $f.cert = cert; $f.cert$1 = cert$1; $f.cert$2 = cert$2; $f.certMsg = certMsg; $f.certReq = certReq; $f.certRequested = certRequested; $f.certType = certType; $f.certVerify = certVerify; $f.certs = certs; $f.chain = chain; $f.chainToSend = chainToSend; $f.ckx = ckx; $f.cs = cs; $f.digest = digest; $f.digest$1 = digest$1; $f.ecdsaAvail = ecdsaAvail; $f.err = err; $f.err$1 = err$1; $f.hashFunc = hashFunc; $f.hashFunc$1 = hashFunc$1; $f.hashId = hashId; $f.hashId$1 = hashId$1; $f.hs = hs; $f.i = i; $f.i$1 = i$1; $f.i$2 = i$2; $f.j = j; $f.key = key; $f.keyAgreement$1 = keyAgreement$1; $f.msg = msg; $f.ok = ok; $f.ok$1 = ok$1; $f.ok$2 = ok$2; $f.opts = opts; $f.preMasterSecret = preMasterSecret; $f.rsaAvail = rsaAvail; $f.shd = shd; $f.signed = signed; $f.skx = skx; $f.x509Cert = x509Cert; $f.$s = $s; $f.$r = $r; return $f;
  58934. };
  58935. clientHandshakeState.prototype.doFullHandshake = function() { return this.$val.doFullHandshake(); };
  58936. clientHandshakeState.ptr.prototype.establishKeys = function() {
  58937. var $ptr, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, c, clientCipher, clientHash, clientIV, clientKey, clientMAC, hs, serverCipher, serverHash, serverIV, serverKey, serverMAC, $s, $r;
  58938. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tuple = $f._tuple; c = $f.c; clientCipher = $f.clientCipher; clientHash = $f.clientHash; clientIV = $f.clientIV; clientKey = $f.clientKey; clientMAC = $f.clientMAC; hs = $f.hs; serverCipher = $f.serverCipher; serverHash = $f.serverHash; serverIV = $f.serverIV; serverKey = $f.serverKey; serverMAC = $f.serverMAC; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  58939. hs = this;
  58940. c = hs.c;
  58941. _r = keysFromMasterSecret(c.vers, hs.masterSecret, hs.hello.random, hs.serverHello.random, hs.suite.macLen, hs.suite.keyLen, hs.suite.ivLen); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  58942. _tuple = _r; clientMAC = _tuple[0]; serverMAC = _tuple[1]; clientKey = _tuple[2]; serverKey = _tuple[3]; clientIV = _tuple[4]; serverIV = _tuple[5];
  58943. _tmp = $ifaceNil; _tmp$1 = $ifaceNil; clientCipher = _tmp; serverCipher = _tmp$1;
  58944. _tmp$2 = $ifaceNil; _tmp$3 = $ifaceNil; clientHash = _tmp$2; serverHash = _tmp$3;
  58945. /* */ if (!(hs.suite.cipher === $throwNilPointerError)) { $s = 2; continue; }
  58946. /* */ $s = 3; continue;
  58947. /* if (!(hs.suite.cipher === $throwNilPointerError)) { */ case 2:
  58948. _r$1 = hs.suite.cipher(clientKey, clientIV, false); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  58949. clientCipher = _r$1;
  58950. _r$2 = hs.suite.mac(c.vers, clientMAC); /* */ $s = 6; case 6: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  58951. clientHash = _r$2;
  58952. _r$3 = hs.suite.cipher(serverKey, serverIV, true); /* */ $s = 7; case 7: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  58953. serverCipher = _r$3;
  58954. _r$4 = hs.suite.mac(c.vers, serverMAC); /* */ $s = 8; case 8: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
  58955. serverHash = _r$4;
  58956. $s = 4; continue;
  58957. /* } else { */ case 3:
  58958. _r$5 = hs.suite.aead(clientKey, clientIV); /* */ $s = 9; case 9: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
  58959. clientCipher = _r$5;
  58960. _r$6 = hs.suite.aead(serverKey, serverIV); /* */ $s = 10; case 10: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
  58961. serverCipher = _r$6;
  58962. /* } */ case 4:
  58963. c.in$17.prepareCipherSpec(c.vers, serverCipher, serverHash);
  58964. c.out.prepareCipherSpec(c.vers, clientCipher, clientHash);
  58965. return $ifaceNil;
  58966. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: clientHandshakeState.ptr.prototype.establishKeys }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tuple = _tuple; $f.c = c; $f.clientCipher = clientCipher; $f.clientHash = clientHash; $f.clientIV = clientIV; $f.clientKey = clientKey; $f.clientMAC = clientMAC; $f.hs = hs; $f.serverCipher = serverCipher; $f.serverHash = serverHash; $f.serverIV = serverIV; $f.serverKey = serverKey; $f.serverMAC = serverMAC; $f.$s = $s; $f.$r = $r; return $f;
  58967. };
  58968. clientHandshakeState.prototype.establishKeys = function() { return this.$val.establishKeys(); };
  58969. clientHandshakeState.ptr.prototype.serverResumedSession = function() {
  58970. var $ptr, hs;
  58971. hs = this;
  58972. return !(hs.session === ptrType$7.nil) && !(hs.hello.sessionId === sliceType$4.nil) && bytes.Equal(hs.serverHello.sessionId, hs.hello.sessionId);
  58973. };
  58974. clientHandshakeState.prototype.serverResumedSession = function() { return this.$val.serverResumedSession(); };
  58975. clientHandshakeState.ptr.prototype.processServerHello = function() {
  58976. var $ptr, _r, _r$1, _r$2, _r$3, c, clientDidALPN, clientDidNPN, hs, serverHasALPN, serverHasNPN, $s, $r;
  58977. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; c = $f.c; clientDidALPN = $f.clientDidALPN; clientDidNPN = $f.clientDidNPN; hs = $f.hs; serverHasALPN = $f.serverHasALPN; serverHasNPN = $f.serverHasNPN; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  58978. hs = this;
  58979. c = hs.c;
  58980. /* */ if (!((hs.serverHello.compressionMethod === 0))) { $s = 1; continue; }
  58981. /* */ $s = 2; continue;
  58982. /* if (!((hs.serverHello.compressionMethod === 0))) { */ case 1:
  58983. _r = c.sendAlert(10); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  58984. _r;
  58985. return [false, errors.New("tls: server selected unsupported compression format")];
  58986. /* } */ case 2:
  58987. clientDidNPN = hs.hello.nextProtoNeg;
  58988. clientDidALPN = hs.hello.alpnProtocols.$length > 0;
  58989. serverHasNPN = hs.serverHello.nextProtoNeg;
  58990. serverHasALPN = hs.serverHello.alpnProtocol.length > 0;
  58991. /* */ if (!clientDidNPN && serverHasNPN) { $s = 4; continue; }
  58992. /* */ $s = 5; continue;
  58993. /* if (!clientDidNPN && serverHasNPN) { */ case 4:
  58994. _r$1 = c.sendAlert(40); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  58995. _r$1;
  58996. return [false, errors.New("server advertised unrequested NPN extension")];
  58997. /* } */ case 5:
  58998. /* */ if (!clientDidALPN && serverHasALPN) { $s = 7; continue; }
  58999. /* */ $s = 8; continue;
  59000. /* if (!clientDidALPN && serverHasALPN) { */ case 7:
  59001. _r$2 = c.sendAlert(40); /* */ $s = 9; case 9: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  59002. _r$2;
  59003. return [false, errors.New("server advertised unrequested ALPN extension")];
  59004. /* } */ case 8:
  59005. /* */ if (serverHasNPN && serverHasALPN) { $s = 10; continue; }
  59006. /* */ $s = 11; continue;
  59007. /* if (serverHasNPN && serverHasALPN) { */ case 10:
  59008. _r$3 = c.sendAlert(40); /* */ $s = 12; case 12: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  59009. _r$3;
  59010. return [false, errors.New("server advertised both NPN and ALPN extensions")];
  59011. /* } */ case 11:
  59012. if (serverHasALPN) {
  59013. c.clientProtocol = hs.serverHello.alpnProtocol;
  59014. c.clientProtocolFallback = false;
  59015. }
  59016. if (hs.serverResumedSession()) {
  59017. hs.masterSecret = hs.session.masterSecret;
  59018. c.peerCertificates = hs.session.serverCertificates;
  59019. return [true, $ifaceNil];
  59020. }
  59021. return [false, $ifaceNil];
  59022. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: clientHandshakeState.ptr.prototype.processServerHello }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f.c = c; $f.clientDidALPN = clientDidALPN; $f.clientDidNPN = clientDidNPN; $f.hs = hs; $f.serverHasALPN = serverHasALPN; $f.serverHasNPN = serverHasNPN; $f.$s = $s; $f.$r = $r; return $f;
  59023. };
  59024. clientHandshakeState.prototype.processServerHello = function() { return this.$val.processServerHello(); };
  59025. clientHandshakeState.ptr.prototype.readFinished = function(out) {
  59026. var $ptr, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _tuple, _tuple$1, c, err, err$1, hs, msg, ok, out, serverFinished, verify, $s, $r;
  59027. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; c = $f.c; err = $f.err; err$1 = $f.err$1; hs = $f.hs; msg = $f.msg; ok = $f.ok; out = $f.out; serverFinished = $f.serverFinished; verify = $f.verify; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  59028. hs = this;
  59029. c = hs.c;
  59030. _r = c.readRecord(20); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  59031. _r;
  59032. _r$1 = c.in$17.error(); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  59033. err = _r$1;
  59034. /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 3; continue; }
  59035. /* */ $s = 4; continue;
  59036. /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 3:
  59037. return err;
  59038. /* } */ case 4:
  59039. _r$2 = c.readHandshake(); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  59040. _tuple = _r$2; msg = _tuple[0]; err$1 = _tuple[1];
  59041. if (!($interfaceIsEqual(err$1, $ifaceNil))) {
  59042. return err$1;
  59043. }
  59044. _tuple$1 = $assertType(msg, ptrType$22, true); serverFinished = _tuple$1[0]; ok = _tuple$1[1];
  59045. /* */ if (!ok) { $s = 6; continue; }
  59046. /* */ $s = 7; continue;
  59047. /* if (!ok) { */ case 6:
  59048. _r$3 = c.sendAlert(10); /* */ $s = 8; case 8: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  59049. _r$3;
  59050. _r$4 = unexpectedMessageError(serverFinished, msg); /* */ $s = 9; case 9: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
  59051. return _r$4;
  59052. /* } */ case 7:
  59053. _r$5 = hs.finishedHash.serverSum(hs.masterSecret); /* */ $s = 10; case 10: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
  59054. verify = _r$5;
  59055. /* */ if (!((verify.$length === serverFinished.verifyData.$length)) || !((subtle.ConstantTimeCompare(verify, serverFinished.verifyData) === 1))) { $s = 11; continue; }
  59056. /* */ $s = 12; continue;
  59057. /* if (!((verify.$length === serverFinished.verifyData.$length)) || !((subtle.ConstantTimeCompare(verify, serverFinished.verifyData) === 1))) { */ case 11:
  59058. _r$6 = c.sendAlert(40); /* */ $s = 13; case 13: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
  59059. _r$6;
  59060. return errors.New("tls: server's Finished message was incorrect");
  59061. /* } */ case 12:
  59062. _r$7 = hs.finishedHash.Write(serverFinished.marshal()); /* */ $s = 14; case 14: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
  59063. _r$7;
  59064. $copySlice(out, verify);
  59065. return $ifaceNil;
  59066. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: clientHandshakeState.ptr.prototype.readFinished }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.c = c; $f.err = err; $f.err$1 = err$1; $f.hs = hs; $f.msg = msg; $f.ok = ok; $f.out = out; $f.serverFinished = serverFinished; $f.verify = verify; $f.$s = $s; $f.$r = $r; return $f;
  59067. };
  59068. clientHandshakeState.prototype.readFinished = function(out) { return this.$val.readFinished(out); };
  59069. clientHandshakeState.ptr.prototype.readSessionTicket = function() {
  59070. var $ptr, _r, _r$1, _r$2, _r$3, _tuple, _tuple$1, c, err, hs, msg, ok, sessionTicketMsg, $s, $r;
  59071. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; c = $f.c; err = $f.err; hs = $f.hs; msg = $f.msg; ok = $f.ok; sessionTicketMsg = $f.sessionTicketMsg; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  59072. hs = this;
  59073. if (!hs.serverHello.ticketSupported) {
  59074. return $ifaceNil;
  59075. }
  59076. c = hs.c;
  59077. _r = c.readHandshake(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  59078. _tuple = _r; msg = _tuple[0]; err = _tuple[1];
  59079. if (!($interfaceIsEqual(err, $ifaceNil))) {
  59080. return err;
  59081. }
  59082. _tuple$1 = $assertType(msg, ptrType$23, true); sessionTicketMsg = _tuple$1[0]; ok = _tuple$1[1];
  59083. /* */ if (!ok) { $s = 2; continue; }
  59084. /* */ $s = 3; continue;
  59085. /* if (!ok) { */ case 2:
  59086. _r$1 = c.sendAlert(10); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  59087. _r$1;
  59088. _r$2 = unexpectedMessageError(sessionTicketMsg, msg); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  59089. return _r$2;
  59090. /* } */ case 3:
  59091. _r$3 = hs.finishedHash.Write(sessionTicketMsg.marshal()); /* */ $s = 6; case 6: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  59092. _r$3;
  59093. hs.session = new ClientSessionState.ptr(sessionTicketMsg.ticket, c.vers, hs.suite.id, hs.masterSecret, c.peerCertificates);
  59094. return $ifaceNil;
  59095. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: clientHandshakeState.ptr.prototype.readSessionTicket }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.c = c; $f.err = err; $f.hs = hs; $f.msg = msg; $f.ok = ok; $f.sessionTicketMsg = sessionTicketMsg; $f.$s = $s; $f.$r = $r; return $f;
  59096. };
  59097. clientHandshakeState.prototype.readSessionTicket = function() { return this.$val.readSessionTicket(); };
  59098. clientHandshakeState.ptr.prototype.sendFinished = function(out) {
  59099. var $ptr, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _tuple, c, fallback, finished, hs, nextProto, out, proto, $s, $r;
  59100. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _tuple = $f._tuple; c = $f.c; fallback = $f.fallback; finished = $f.finished; hs = $f.hs; nextProto = $f.nextProto; out = $f.out; proto = $f.proto; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  59101. hs = this;
  59102. c = hs.c;
  59103. _r = c.writeRecord(20, new sliceType$4([1])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  59104. _r;
  59105. /* */ if (hs.serverHello.nextProtoNeg) { $s = 2; continue; }
  59106. /* */ $s = 3; continue;
  59107. /* if (hs.serverHello.nextProtoNeg) { */ case 2:
  59108. nextProto = new nextProtoMsg.ptr();
  59109. _tuple = mutualProtocol(c.config.NextProtos, hs.serverHello.nextProtos); proto = _tuple[0]; fallback = _tuple[1];
  59110. nextProto.proto = proto;
  59111. c.clientProtocol = proto;
  59112. c.clientProtocolFallback = fallback;
  59113. _r$1 = hs.finishedHash.Write(nextProto.marshal()); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  59114. _r$1;
  59115. _r$2 = c.writeRecord(22, nextProto.marshal()); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  59116. _r$2;
  59117. /* } */ case 3:
  59118. finished = new finishedMsg.ptr();
  59119. _r$3 = hs.finishedHash.clientSum(hs.masterSecret); /* */ $s = 6; case 6: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  59120. finished.verifyData = _r$3;
  59121. _r$4 = hs.finishedHash.Write(finished.marshal()); /* */ $s = 7; case 7: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
  59122. _r$4;
  59123. _r$5 = c.writeRecord(22, finished.marshal()); /* */ $s = 8; case 8: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
  59124. _r$5;
  59125. $copySlice(out, finished.verifyData);
  59126. return $ifaceNil;
  59127. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: clientHandshakeState.ptr.prototype.sendFinished }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._tuple = _tuple; $f.c = c; $f.fallback = fallback; $f.finished = finished; $f.hs = hs; $f.nextProto = nextProto; $f.out = out; $f.proto = proto; $f.$s = $s; $f.$r = $r; return $f;
  59128. };
  59129. clientHandshakeState.prototype.sendFinished = function(out) { return this.$val.sendFinished(out); };
  59130. clientSessionCacheKey = function(serverAddr, config) {
  59131. var $ptr, _r, config, serverAddr, $s, $r;
  59132. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; config = $f.config; serverAddr = $f.serverAddr; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  59133. if (config.ServerName.length > 0) {
  59134. return config.ServerName;
  59135. }
  59136. _r = serverAddr.String(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  59137. return _r;
  59138. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: clientSessionCacheKey }; } $f.$ptr = $ptr; $f._r = _r; $f.config = config; $f.serverAddr = serverAddr; $f.$s = $s; $f.$r = $r; return $f;
  59139. };
  59140. mutualProtocol = function(protos, preferenceProtos) {
  59141. var $ptr, _i, _i$1, _ref, _ref$1, c, preferenceProtos, protos, s;
  59142. _ref = preferenceProtos;
  59143. _i = 0;
  59144. while (true) {
  59145. if (!(_i < _ref.$length)) { break; }
  59146. s = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]);
  59147. _ref$1 = protos;
  59148. _i$1 = 0;
  59149. while (true) {
  59150. if (!(_i$1 < _ref$1.$length)) { break; }
  59151. c = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? $throwRuntimeError("index out of range") : _ref$1.$array[_ref$1.$offset + _i$1]);
  59152. if (s === c) {
  59153. return [s, false];
  59154. }
  59155. _i$1++;
  59156. }
  59157. _i++;
  59158. }
  59159. return [(0 >= protos.$length ? $throwRuntimeError("index out of range") : protos.$array[protos.$offset + 0]), true];
  59160. };
  59161. clientHelloMsg.ptr.prototype.marshal = function() {
  59162. var $ptr, _i, _i$1, _i$2, _i$3, _i$4, _i$5, _ref, _ref$1, _ref$2, _ref$3, _ref$4, _ref$5, curve, extensionsLength, i, l, l$1, l$2, l$3, l$4, l$5, l$6, length, lengths, m, numExtensions, pointFormat, s, s$1, sigAndHash, stringsLength, suite, x, x$1, x$2, y, z;
  59163. m = this;
  59164. if (!(m.raw === sliceType$4.nil)) {
  59165. return m.raw;
  59166. }
  59167. length = ((((35 + m.sessionId.$length >> 0) + 2 >> 0) + (m.cipherSuites.$length * 2 >> 0) >> 0) + 1 >> 0) + m.compressionMethods.$length >> 0;
  59168. numExtensions = 0;
  59169. extensionsLength = 0;
  59170. if (m.nextProtoNeg) {
  59171. numExtensions = numExtensions + (1) >> 0;
  59172. }
  59173. if (m.ocspStapling) {
  59174. extensionsLength = extensionsLength + (5) >> 0;
  59175. numExtensions = numExtensions + (1) >> 0;
  59176. }
  59177. if (m.serverName.length > 0) {
  59178. extensionsLength = extensionsLength + ((5 + m.serverName.length >> 0)) >> 0;
  59179. numExtensions = numExtensions + (1) >> 0;
  59180. }
  59181. if (m.supportedCurves.$length > 0) {
  59182. extensionsLength = extensionsLength + ((2 + (2 * m.supportedCurves.$length >> 0) >> 0)) >> 0;
  59183. numExtensions = numExtensions + (1) >> 0;
  59184. }
  59185. if (m.supportedPoints.$length > 0) {
  59186. extensionsLength = extensionsLength + ((1 + m.supportedPoints.$length >> 0)) >> 0;
  59187. numExtensions = numExtensions + (1) >> 0;
  59188. }
  59189. if (m.ticketSupported) {
  59190. extensionsLength = extensionsLength + (m.sessionTicket.$length) >> 0;
  59191. numExtensions = numExtensions + (1) >> 0;
  59192. }
  59193. if (m.signatureAndHashes.$length > 0) {
  59194. extensionsLength = extensionsLength + ((2 + (2 * m.signatureAndHashes.$length >> 0) >> 0)) >> 0;
  59195. numExtensions = numExtensions + (1) >> 0;
  59196. }
  59197. if (m.secureRenegotiation) {
  59198. extensionsLength = extensionsLength + (1) >> 0;
  59199. numExtensions = numExtensions + (1) >> 0;
  59200. }
  59201. if (m.alpnProtocols.$length > 0) {
  59202. extensionsLength = extensionsLength + (2) >> 0;
  59203. _ref = m.alpnProtocols;
  59204. _i = 0;
  59205. while (true) {
  59206. if (!(_i < _ref.$length)) { break; }
  59207. s = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]);
  59208. l = s.length;
  59209. if ((l === 0) || l > 255) {
  59210. $panic(new $String("invalid ALPN protocol"));
  59211. }
  59212. extensionsLength = extensionsLength + (1) >> 0;
  59213. extensionsLength = extensionsLength + (s.length) >> 0;
  59214. _i++;
  59215. }
  59216. numExtensions = numExtensions + (1) >> 0;
  59217. }
  59218. if (numExtensions > 0) {
  59219. extensionsLength = extensionsLength + ((4 * numExtensions >> 0)) >> 0;
  59220. length = length + ((2 + extensionsLength >> 0)) >> 0;
  59221. }
  59222. x = $makeSlice(sliceType$4, (4 + length >> 0));
  59223. (0 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 0] = 1);
  59224. (1 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 1] = ((length >> 16 >> 0) << 24 >>> 24));
  59225. (2 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 2] = ((length >> 8 >> 0) << 24 >>> 24));
  59226. (3 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 3] = (length << 24 >>> 24));
  59227. (4 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 4] = ((m.vers >>> 8 << 16 >>> 16) << 24 >>> 24));
  59228. (5 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 5] = (m.vers << 24 >>> 24));
  59229. $copySlice($subslice(x, 6, 38), m.random);
  59230. (38 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 38] = (m.sessionId.$length << 24 >>> 24));
  59231. $copySlice($subslice(x, 39, (39 + m.sessionId.$length >> 0)), m.sessionId);
  59232. y = $subslice(x, (39 + m.sessionId.$length >> 0));
  59233. (0 >= y.$length ? $throwRuntimeError("index out of range") : y.$array[y.$offset + 0] = ((m.cipherSuites.$length >> 7 >> 0) << 24 >>> 24));
  59234. (1 >= y.$length ? $throwRuntimeError("index out of range") : y.$array[y.$offset + 1] = ((m.cipherSuites.$length << 1 >> 0) << 24 >>> 24));
  59235. _ref$1 = m.cipherSuites;
  59236. _i$1 = 0;
  59237. while (true) {
  59238. if (!(_i$1 < _ref$1.$length)) { break; }
  59239. i = _i$1;
  59240. suite = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? $throwRuntimeError("index out of range") : _ref$1.$array[_ref$1.$offset + _i$1]);
  59241. (x$1 = 2 + (i * 2 >> 0) >> 0, ((x$1 < 0 || x$1 >= y.$length) ? $throwRuntimeError("index out of range") : y.$array[y.$offset + x$1] = ((suite >>> 8 << 16 >>> 16) << 24 >>> 24)));
  59242. (x$2 = 3 + (i * 2 >> 0) >> 0, ((x$2 < 0 || x$2 >= y.$length) ? $throwRuntimeError("index out of range") : y.$array[y.$offset + x$2] = (suite << 24 >>> 24)));
  59243. _i$1++;
  59244. }
  59245. z = $subslice(y, (2 + (m.cipherSuites.$length * 2 >> 0) >> 0));
  59246. (0 >= z.$length ? $throwRuntimeError("index out of range") : z.$array[z.$offset + 0] = (m.compressionMethods.$length << 24 >>> 24));
  59247. $copySlice($subslice(z, 1), m.compressionMethods);
  59248. z = $subslice(z, (1 + m.compressionMethods.$length >> 0));
  59249. if (numExtensions > 0) {
  59250. (0 >= z.$length ? $throwRuntimeError("index out of range") : z.$array[z.$offset + 0] = ((extensionsLength >> 8 >> 0) << 24 >>> 24));
  59251. (1 >= z.$length ? $throwRuntimeError("index out of range") : z.$array[z.$offset + 1] = (extensionsLength << 24 >>> 24));
  59252. z = $subslice(z, 2);
  59253. }
  59254. if (m.nextProtoNeg) {
  59255. (0 >= z.$length ? $throwRuntimeError("index out of range") : z.$array[z.$offset + 0] = 51);
  59256. (1 >= z.$length ? $throwRuntimeError("index out of range") : z.$array[z.$offset + 1] = 116);
  59257. z = $subslice(z, 4);
  59258. }
  59259. if (m.serverName.length > 0) {
  59260. (0 >= z.$length ? $throwRuntimeError("index out of range") : z.$array[z.$offset + 0] = 0);
  59261. (1 >= z.$length ? $throwRuntimeError("index out of range") : z.$array[z.$offset + 1] = 0);
  59262. l$1 = m.serverName.length + 5 >> 0;
  59263. (2 >= z.$length ? $throwRuntimeError("index out of range") : z.$array[z.$offset + 2] = ((l$1 >> 8 >> 0) << 24 >>> 24));
  59264. (3 >= z.$length ? $throwRuntimeError("index out of range") : z.$array[z.$offset + 3] = (l$1 << 24 >>> 24));
  59265. z = $subslice(z, 4);
  59266. (0 >= z.$length ? $throwRuntimeError("index out of range") : z.$array[z.$offset + 0] = ((((m.serverName.length + 3 >> 0)) >> 8 >> 0) << 24 >>> 24));
  59267. (1 >= z.$length ? $throwRuntimeError("index out of range") : z.$array[z.$offset + 1] = ((m.serverName.length + 3 >> 0) << 24 >>> 24));
  59268. (3 >= z.$length ? $throwRuntimeError("index out of range") : z.$array[z.$offset + 3] = ((m.serverName.length >> 8 >> 0) << 24 >>> 24));
  59269. (4 >= z.$length ? $throwRuntimeError("index out of range") : z.$array[z.$offset + 4] = (m.serverName.length << 24 >>> 24));
  59270. $copySlice($subslice(z, 5), new sliceType$4($stringToBytes(m.serverName)));
  59271. z = $subslice(z, l$1);
  59272. }
  59273. if (m.ocspStapling) {
  59274. (0 >= z.$length ? $throwRuntimeError("index out of range") : z.$array[z.$offset + 0] = 0);
  59275. (1 >= z.$length ? $throwRuntimeError("index out of range") : z.$array[z.$offset + 1] = 5);
  59276. (2 >= z.$length ? $throwRuntimeError("index out of range") : z.$array[z.$offset + 2] = 0);
  59277. (3 >= z.$length ? $throwRuntimeError("index out of range") : z.$array[z.$offset + 3] = 5);
  59278. (4 >= z.$length ? $throwRuntimeError("index out of range") : z.$array[z.$offset + 4] = 1);
  59279. z = $subslice(z, 9);
  59280. }
  59281. if (m.supportedCurves.$length > 0) {
  59282. (0 >= z.$length ? $throwRuntimeError("index out of range") : z.$array[z.$offset + 0] = 0);
  59283. (1 >= z.$length ? $throwRuntimeError("index out of range") : z.$array[z.$offset + 1] = 10);
  59284. l$2 = 2 + (2 * m.supportedCurves.$length >> 0) >> 0;
  59285. (2 >= z.$length ? $throwRuntimeError("index out of range") : z.$array[z.$offset + 2] = ((l$2 >> 8 >> 0) << 24 >>> 24));
  59286. (3 >= z.$length ? $throwRuntimeError("index out of range") : z.$array[z.$offset + 3] = (l$2 << 24 >>> 24));
  59287. l$2 = l$2 - (2) >> 0;
  59288. (4 >= z.$length ? $throwRuntimeError("index out of range") : z.$array[z.$offset + 4] = ((l$2 >> 8 >> 0) << 24 >>> 24));
  59289. (5 >= z.$length ? $throwRuntimeError("index out of range") : z.$array[z.$offset + 5] = (l$2 << 24 >>> 24));
  59290. z = $subslice(z, 6);
  59291. _ref$2 = m.supportedCurves;
  59292. _i$2 = 0;
  59293. while (true) {
  59294. if (!(_i$2 < _ref$2.$length)) { break; }
  59295. curve = ((_i$2 < 0 || _i$2 >= _ref$2.$length) ? $throwRuntimeError("index out of range") : _ref$2.$array[_ref$2.$offset + _i$2]);
  59296. (0 >= z.$length ? $throwRuntimeError("index out of range") : z.$array[z.$offset + 0] = ((curve >>> 8 << 16 >>> 16) << 24 >>> 24));
  59297. (1 >= z.$length ? $throwRuntimeError("index out of range") : z.$array[z.$offset + 1] = (curve << 24 >>> 24));
  59298. z = $subslice(z, 2);
  59299. _i$2++;
  59300. }
  59301. }
  59302. if (m.supportedPoints.$length > 0) {
  59303. (0 >= z.$length ? $throwRuntimeError("index out of range") : z.$array[z.$offset + 0] = 0);
  59304. (1 >= z.$length ? $throwRuntimeError("index out of range") : z.$array[z.$offset + 1] = 11);
  59305. l$3 = 1 + m.supportedPoints.$length >> 0;
  59306. (2 >= z.$length ? $throwRuntimeError("index out of range") : z.$array[z.$offset + 2] = ((l$3 >> 8 >> 0) << 24 >>> 24));
  59307. (3 >= z.$length ? $throwRuntimeError("index out of range") : z.$array[z.$offset + 3] = (l$3 << 24 >>> 24));
  59308. l$3 = l$3 - (1) >> 0;
  59309. (4 >= z.$length ? $throwRuntimeError("index out of range") : z.$array[z.$offset + 4] = (l$3 << 24 >>> 24));
  59310. z = $subslice(z, 5);
  59311. _ref$3 = m.supportedPoints;
  59312. _i$3 = 0;
  59313. while (true) {
  59314. if (!(_i$3 < _ref$3.$length)) { break; }
  59315. pointFormat = ((_i$3 < 0 || _i$3 >= _ref$3.$length) ? $throwRuntimeError("index out of range") : _ref$3.$array[_ref$3.$offset + _i$3]);
  59316. (0 >= z.$length ? $throwRuntimeError("index out of range") : z.$array[z.$offset + 0] = pointFormat);
  59317. z = $subslice(z, 1);
  59318. _i$3++;
  59319. }
  59320. }
  59321. if (m.ticketSupported) {
  59322. (0 >= z.$length ? $throwRuntimeError("index out of range") : z.$array[z.$offset + 0] = 0);
  59323. (1 >= z.$length ? $throwRuntimeError("index out of range") : z.$array[z.$offset + 1] = 35);
  59324. l$4 = m.sessionTicket.$length;
  59325. (2 >= z.$length ? $throwRuntimeError("index out of range") : z.$array[z.$offset + 2] = ((l$4 >> 8 >> 0) << 24 >>> 24));
  59326. (3 >= z.$length ? $throwRuntimeError("index out of range") : z.$array[z.$offset + 3] = (l$4 << 24 >>> 24));
  59327. z = $subslice(z, 4);
  59328. $copySlice(z, m.sessionTicket);
  59329. z = $subslice(z, m.sessionTicket.$length);
  59330. }
  59331. if (m.signatureAndHashes.$length > 0) {
  59332. (0 >= z.$length ? $throwRuntimeError("index out of range") : z.$array[z.$offset + 0] = 0);
  59333. (1 >= z.$length ? $throwRuntimeError("index out of range") : z.$array[z.$offset + 1] = 13);
  59334. l$5 = 2 + (2 * m.signatureAndHashes.$length >> 0) >> 0;
  59335. (2 >= z.$length ? $throwRuntimeError("index out of range") : z.$array[z.$offset + 2] = ((l$5 >> 8 >> 0) << 24 >>> 24));
  59336. (3 >= z.$length ? $throwRuntimeError("index out of range") : z.$array[z.$offset + 3] = (l$5 << 24 >>> 24));
  59337. z = $subslice(z, 4);
  59338. l$5 = l$5 - (2) >> 0;
  59339. (0 >= z.$length ? $throwRuntimeError("index out of range") : z.$array[z.$offset + 0] = ((l$5 >> 8 >> 0) << 24 >>> 24));
  59340. (1 >= z.$length ? $throwRuntimeError("index out of range") : z.$array[z.$offset + 1] = (l$5 << 24 >>> 24));
  59341. z = $subslice(z, 2);
  59342. _ref$4 = m.signatureAndHashes;
  59343. _i$4 = 0;
  59344. while (true) {
  59345. if (!(_i$4 < _ref$4.$length)) { break; }
  59346. sigAndHash = $clone(((_i$4 < 0 || _i$4 >= _ref$4.$length) ? $throwRuntimeError("index out of range") : _ref$4.$array[_ref$4.$offset + _i$4]), signatureAndHash);
  59347. (0 >= z.$length ? $throwRuntimeError("index out of range") : z.$array[z.$offset + 0] = sigAndHash.hash);
  59348. (1 >= z.$length ? $throwRuntimeError("index out of range") : z.$array[z.$offset + 1] = sigAndHash.signature);
  59349. z = $subslice(z, 2);
  59350. _i$4++;
  59351. }
  59352. }
  59353. if (m.secureRenegotiation) {
  59354. (0 >= z.$length ? $throwRuntimeError("index out of range") : z.$array[z.$offset + 0] = 255);
  59355. (1 >= z.$length ? $throwRuntimeError("index out of range") : z.$array[z.$offset + 1] = 1);
  59356. (2 >= z.$length ? $throwRuntimeError("index out of range") : z.$array[z.$offset + 2] = 0);
  59357. (3 >= z.$length ? $throwRuntimeError("index out of range") : z.$array[z.$offset + 3] = 1);
  59358. z = $subslice(z, 5);
  59359. }
  59360. if (m.alpnProtocols.$length > 0) {
  59361. (0 >= z.$length ? $throwRuntimeError("index out of range") : z.$array[z.$offset + 0] = 0);
  59362. (1 >= z.$length ? $throwRuntimeError("index out of range") : z.$array[z.$offset + 1] = 16);
  59363. lengths = $subslice(z, 2);
  59364. z = $subslice(z, 6);
  59365. stringsLength = 0;
  59366. _ref$5 = m.alpnProtocols;
  59367. _i$5 = 0;
  59368. while (true) {
  59369. if (!(_i$5 < _ref$5.$length)) { break; }
  59370. s$1 = ((_i$5 < 0 || _i$5 >= _ref$5.$length) ? $throwRuntimeError("index out of range") : _ref$5.$array[_ref$5.$offset + _i$5]);
  59371. l$6 = s$1.length;
  59372. (0 >= z.$length ? $throwRuntimeError("index out of range") : z.$array[z.$offset + 0] = (l$6 << 24 >>> 24));
  59373. $copyString($subslice(z, 1), s$1);
  59374. z = $subslice(z, (1 + l$6 >> 0));
  59375. stringsLength = stringsLength + ((1 + l$6 >> 0)) >> 0;
  59376. _i$5++;
  59377. }
  59378. (2 >= lengths.$length ? $throwRuntimeError("index out of range") : lengths.$array[lengths.$offset + 2] = ((stringsLength >> 8 >> 0) << 24 >>> 24));
  59379. (3 >= lengths.$length ? $throwRuntimeError("index out of range") : lengths.$array[lengths.$offset + 3] = (stringsLength << 24 >>> 24));
  59380. stringsLength = stringsLength + (2) >> 0;
  59381. (0 >= lengths.$length ? $throwRuntimeError("index out of range") : lengths.$array[lengths.$offset + 0] = ((stringsLength >> 8 >> 0) << 24 >>> 24));
  59382. (1 >= lengths.$length ? $throwRuntimeError("index out of range") : lengths.$array[lengths.$offset + 1] = (stringsLength << 24 >>> 24));
  59383. }
  59384. m.raw = x;
  59385. return x;
  59386. };
  59387. clientHelloMsg.prototype.marshal = function() { return this.$val.marshal(); };
  59388. clientHelloMsg.ptr.prototype.unmarshal = function(data) {
  59389. var $ptr, _i, _q, _q$1, _q$2, _r, _r$1, _ref, _ref$1, cipherSuiteLen, compressionMethodsLen, d, d$1, d$2, d$3, data, extension, extensionsLength, i, i$1, i$2, i$3, l, l$1, l$2, l$3, length, m, n, nameLen, nameType, numCipherSuites, numCurves, numNames, sessionIdLen, stringLen, x, x$1, x$2, x$3, x$4, x$5, x$6;
  59390. m = this;
  59391. if (data.$length < 42) {
  59392. return false;
  59393. }
  59394. m.raw = data;
  59395. m.vers = ((((4 >= data.$length ? $throwRuntimeError("index out of range") : data.$array[data.$offset + 4]) << 16 >>> 16) << 8 << 16 >>> 16) | ((5 >= data.$length ? $throwRuntimeError("index out of range") : data.$array[data.$offset + 5]) << 16 >>> 16)) >>> 0;
  59396. m.random = $subslice(data, 6, 38);
  59397. sessionIdLen = ((38 >= data.$length ? $throwRuntimeError("index out of range") : data.$array[data.$offset + 38]) >> 0);
  59398. if (sessionIdLen > 32 || data.$length < (39 + sessionIdLen >> 0)) {
  59399. return false;
  59400. }
  59401. m.sessionId = $subslice(data, 39, (39 + sessionIdLen >> 0));
  59402. data = $subslice(data, (39 + sessionIdLen >> 0));
  59403. if (data.$length < 2) {
  59404. return false;
  59405. }
  59406. cipherSuiteLen = (((0 >= data.$length ? $throwRuntimeError("index out of range") : data.$array[data.$offset + 0]) >> 0) << 8 >> 0) | ((1 >= data.$length ? $throwRuntimeError("index out of range") : data.$array[data.$offset + 1]) >> 0);
  59407. if (((_r = cipherSuiteLen % 2, _r === _r ? _r : $throwRuntimeError("integer divide by zero")) === 1) || data.$length < (2 + cipherSuiteLen >> 0)) {
  59408. return false;
  59409. }
  59410. numCipherSuites = (_q = cipherSuiteLen / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero"));
  59411. m.cipherSuites = $makeSlice(sliceType, numCipherSuites);
  59412. i = 0;
  59413. while (true) {
  59414. if (!(i < numCipherSuites)) { break; }
  59415. (x$2 = m.cipherSuites, ((i < 0 || i >= x$2.$length) ? $throwRuntimeError("index out of range") : x$2.$array[x$2.$offset + i] = ((((x = 2 + (2 * i >> 0) >> 0, ((x < 0 || x >= data.$length) ? $throwRuntimeError("index out of range") : data.$array[data.$offset + x])) << 16 >>> 16) << 8 << 16 >>> 16) | ((x$1 = 3 + (2 * i >> 0) >> 0, ((x$1 < 0 || x$1 >= data.$length) ? $throwRuntimeError("index out of range") : data.$array[data.$offset + x$1])) << 16 >>> 16)) >>> 0));
  59416. if ((x$3 = m.cipherSuites, ((i < 0 || i >= x$3.$length) ? $throwRuntimeError("index out of range") : x$3.$array[x$3.$offset + i])) === 255) {
  59417. m.secureRenegotiation = true;
  59418. }
  59419. i = i + (1) >> 0;
  59420. }
  59421. data = $subslice(data, (2 + cipherSuiteLen >> 0));
  59422. if (data.$length < 1) {
  59423. return false;
  59424. }
  59425. compressionMethodsLen = ((0 >= data.$length ? $throwRuntimeError("index out of range") : data.$array[data.$offset + 0]) >> 0);
  59426. if (data.$length < (1 + compressionMethodsLen >> 0)) {
  59427. return false;
  59428. }
  59429. m.compressionMethods = $subslice(data, 1, (1 + compressionMethodsLen >> 0));
  59430. data = $subslice(data, (1 + compressionMethodsLen >> 0));
  59431. m.nextProtoNeg = false;
  59432. m.serverName = "";
  59433. m.ocspStapling = false;
  59434. m.ticketSupported = false;
  59435. m.sessionTicket = sliceType$4.nil;
  59436. m.signatureAndHashes = sliceType$2.nil;
  59437. m.alpnProtocols = sliceType$7.nil;
  59438. if (data.$length === 0) {
  59439. return true;
  59440. }
  59441. if (data.$length < 2) {
  59442. return false;
  59443. }
  59444. extensionsLength = (((0 >= data.$length ? $throwRuntimeError("index out of range") : data.$array[data.$offset + 0]) >> 0) << 8 >> 0) | ((1 >= data.$length ? $throwRuntimeError("index out of range") : data.$array[data.$offset + 1]) >> 0);
  59445. data = $subslice(data, 2);
  59446. if (!((extensionsLength === data.$length))) {
  59447. return false;
  59448. }
  59449. while (true) {
  59450. if (!(!((data.$length === 0)))) { break; }
  59451. if (data.$length < 4) {
  59452. return false;
  59453. }
  59454. extension = ((((0 >= data.$length ? $throwRuntimeError("index out of range") : data.$array[data.$offset + 0]) << 16 >>> 16) << 8 << 16 >>> 16) | ((1 >= data.$length ? $throwRuntimeError("index out of range") : data.$array[data.$offset + 1]) << 16 >>> 16)) >>> 0;
  59455. length = (((2 >= data.$length ? $throwRuntimeError("index out of range") : data.$array[data.$offset + 2]) >> 0) << 8 >> 0) | ((3 >= data.$length ? $throwRuntimeError("index out of range") : data.$array[data.$offset + 3]) >> 0);
  59456. data = $subslice(data, 4);
  59457. if (data.$length < length) {
  59458. return false;
  59459. }
  59460. _ref = extension;
  59461. if (_ref === 0) {
  59462. if (length < 2) {
  59463. return false;
  59464. }
  59465. numNames = (((0 >= data.$length ? $throwRuntimeError("index out of range") : data.$array[data.$offset + 0]) >> 0) << 8 >> 0) | ((1 >= data.$length ? $throwRuntimeError("index out of range") : data.$array[data.$offset + 1]) >> 0);
  59466. d = $subslice(data, 2);
  59467. i$1 = 0;
  59468. while (true) {
  59469. if (!(i$1 < numNames)) { break; }
  59470. if (d.$length < 3) {
  59471. return false;
  59472. }
  59473. nameType = (0 >= d.$length ? $throwRuntimeError("index out of range") : d.$array[d.$offset + 0]);
  59474. nameLen = (((1 >= d.$length ? $throwRuntimeError("index out of range") : d.$array[d.$offset + 1]) >> 0) << 8 >> 0) | ((2 >= d.$length ? $throwRuntimeError("index out of range") : d.$array[d.$offset + 2]) >> 0);
  59475. d = $subslice(d, 3);
  59476. if (d.$length < nameLen) {
  59477. return false;
  59478. }
  59479. if (nameType === 0) {
  59480. m.serverName = $bytesToString($subslice(d, 0, nameLen));
  59481. break;
  59482. }
  59483. d = $subslice(d, nameLen);
  59484. i$1 = i$1 + (1) >> 0;
  59485. }
  59486. } else if (_ref === 13172) {
  59487. if (length > 0) {
  59488. return false;
  59489. }
  59490. m.nextProtoNeg = true;
  59491. } else if (_ref === 5) {
  59492. m.ocspStapling = length > 0 && ((0 >= data.$length ? $throwRuntimeError("index out of range") : data.$array[data.$offset + 0]) === 1);
  59493. } else if (_ref === 10) {
  59494. if (length < 2) {
  59495. return false;
  59496. }
  59497. l = (((0 >= data.$length ? $throwRuntimeError("index out of range") : data.$array[data.$offset + 0]) >> 0) << 8 >> 0) | ((1 >= data.$length ? $throwRuntimeError("index out of range") : data.$array[data.$offset + 1]) >> 0);
  59498. if (((_r$1 = l % 2, _r$1 === _r$1 ? _r$1 : $throwRuntimeError("integer divide by zero")) === 1) || !((length === (l + 2 >> 0)))) {
  59499. return false;
  59500. }
  59501. numCurves = (_q$1 = l / 2, (_q$1 === _q$1 && _q$1 !== 1/0 && _q$1 !== -1/0) ? _q$1 >> 0 : $throwRuntimeError("integer divide by zero"));
  59502. m.supportedCurves = $makeSlice(sliceType$3, numCurves);
  59503. d$1 = $subslice(data, 2);
  59504. i$2 = 0;
  59505. while (true) {
  59506. if (!(i$2 < numCurves)) { break; }
  59507. (x$4 = m.supportedCurves, ((i$2 < 0 || i$2 >= x$4.$length) ? $throwRuntimeError("index out of range") : x$4.$array[x$4.$offset + i$2] = ((((0 >= d$1.$length ? $throwRuntimeError("index out of range") : d$1.$array[d$1.$offset + 0]) << 16 >>> 16) << 8 << 16 >>> 16) | ((1 >= d$1.$length ? $throwRuntimeError("index out of range") : d$1.$array[d$1.$offset + 1]) << 16 >>> 16)) >>> 0));
  59508. d$1 = $subslice(d$1, 2);
  59509. i$2 = i$2 + (1) >> 0;
  59510. }
  59511. } else if (_ref === 11) {
  59512. if (length < 1) {
  59513. return false;
  59514. }
  59515. l$1 = ((0 >= data.$length ? $throwRuntimeError("index out of range") : data.$array[data.$offset + 0]) >> 0);
  59516. if (!((length === (l$1 + 1 >> 0)))) {
  59517. return false;
  59518. }
  59519. m.supportedPoints = $makeSlice(sliceType$4, l$1);
  59520. $copySlice(m.supportedPoints, $subslice(data, 1));
  59521. } else if (_ref === 35) {
  59522. m.ticketSupported = true;
  59523. m.sessionTicket = $subslice(data, 0, length);
  59524. } else if (_ref === 13) {
  59525. if (length < 2 || !(((length & 1) === 0))) {
  59526. return false;
  59527. }
  59528. l$2 = (((0 >= data.$length ? $throwRuntimeError("index out of range") : data.$array[data.$offset + 0]) >> 0) << 8 >> 0) | ((1 >= data.$length ? $throwRuntimeError("index out of range") : data.$array[data.$offset + 1]) >> 0);
  59529. if (!((l$2 === (length - 2 >> 0)))) {
  59530. return false;
  59531. }
  59532. n = (_q$2 = l$2 / 2, (_q$2 === _q$2 && _q$2 !== 1/0 && _q$2 !== -1/0) ? _q$2 >> 0 : $throwRuntimeError("integer divide by zero"));
  59533. d$2 = $subslice(data, 2);
  59534. m.signatureAndHashes = $makeSlice(sliceType$2, n);
  59535. _ref$1 = m.signatureAndHashes;
  59536. _i = 0;
  59537. while (true) {
  59538. if (!(_i < _ref$1.$length)) { break; }
  59539. i$3 = _i;
  59540. (x$5 = m.signatureAndHashes, ((i$3 < 0 || i$3 >= x$5.$length) ? $throwRuntimeError("index out of range") : x$5.$array[x$5.$offset + i$3])).hash = (0 >= d$2.$length ? $throwRuntimeError("index out of range") : d$2.$array[d$2.$offset + 0]);
  59541. (x$6 = m.signatureAndHashes, ((i$3 < 0 || i$3 >= x$6.$length) ? $throwRuntimeError("index out of range") : x$6.$array[x$6.$offset + i$3])).signature = (1 >= d$2.$length ? $throwRuntimeError("index out of range") : d$2.$array[d$2.$offset + 1]);
  59542. d$2 = $subslice(d$2, 2);
  59543. _i++;
  59544. }
  59545. } else if (_ref === 65282) {
  59546. if (!((length === 1)) || !(((0 >= data.$length ? $throwRuntimeError("index out of range") : data.$array[data.$offset + 0]) === 0))) {
  59547. return false;
  59548. }
  59549. m.secureRenegotiation = true;
  59550. } else if (_ref === 16) {
  59551. if (length < 2) {
  59552. return false;
  59553. }
  59554. l$3 = (((0 >= data.$length ? $throwRuntimeError("index out of range") : data.$array[data.$offset + 0]) >> 0) << 8 >> 0) | ((1 >= data.$length ? $throwRuntimeError("index out of range") : data.$array[data.$offset + 1]) >> 0);
  59555. if (!((l$3 === (length - 2 >> 0)))) {
  59556. return false;
  59557. }
  59558. d$3 = $subslice(data, 2, length);
  59559. while (true) {
  59560. if (!(!((d$3.$length === 0)))) { break; }
  59561. stringLen = ((0 >= d$3.$length ? $throwRuntimeError("index out of range") : d$3.$array[d$3.$offset + 0]) >> 0);
  59562. d$3 = $subslice(d$3, 1);
  59563. if ((stringLen === 0) || stringLen > d$3.$length) {
  59564. return false;
  59565. }
  59566. m.alpnProtocols = $append(m.alpnProtocols, $bytesToString($subslice(d$3, 0, stringLen)));
  59567. d$3 = $subslice(d$3, stringLen);
  59568. }
  59569. }
  59570. data = $subslice(data, length);
  59571. }
  59572. return true;
  59573. };
  59574. clientHelloMsg.prototype.unmarshal = function(data) { return this.$val.unmarshal(data); };
  59575. serverHelloMsg.ptr.prototype.marshal = function() {
  59576. var $ptr, _i, _i$1, _ref, _ref$1, alpnLen, alpnLen$1, extensionsLength, l, l$1, length, m, nextProtoLen, numExtensions, v, v$1, x, z;
  59577. m = this;
  59578. if (!(m.raw === sliceType$4.nil)) {
  59579. return m.raw;
  59580. }
  59581. length = 38 + m.sessionId.$length >> 0;
  59582. numExtensions = 0;
  59583. extensionsLength = 0;
  59584. nextProtoLen = 0;
  59585. if (m.nextProtoNeg) {
  59586. numExtensions = numExtensions + (1) >> 0;
  59587. _ref = m.nextProtos;
  59588. _i = 0;
  59589. while (true) {
  59590. if (!(_i < _ref.$length)) { break; }
  59591. v = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]);
  59592. nextProtoLen = nextProtoLen + (v.length) >> 0;
  59593. _i++;
  59594. }
  59595. nextProtoLen = nextProtoLen + (m.nextProtos.$length) >> 0;
  59596. extensionsLength = extensionsLength + (nextProtoLen) >> 0;
  59597. }
  59598. if (m.ocspStapling) {
  59599. numExtensions = numExtensions + (1) >> 0;
  59600. }
  59601. if (m.ticketSupported) {
  59602. numExtensions = numExtensions + (1) >> 0;
  59603. }
  59604. if (m.secureRenegotiation) {
  59605. extensionsLength = extensionsLength + (1) >> 0;
  59606. numExtensions = numExtensions + (1) >> 0;
  59607. }
  59608. alpnLen = m.alpnProtocol.length;
  59609. if (alpnLen > 0) {
  59610. if (alpnLen >= 256) {
  59611. $panic(new $String("invalid ALPN protocol"));
  59612. }
  59613. extensionsLength = extensionsLength + ((3 + alpnLen >> 0)) >> 0;
  59614. numExtensions = numExtensions + (1) >> 0;
  59615. }
  59616. if (numExtensions > 0) {
  59617. extensionsLength = extensionsLength + ((4 * numExtensions >> 0)) >> 0;
  59618. length = length + ((2 + extensionsLength >> 0)) >> 0;
  59619. }
  59620. x = $makeSlice(sliceType$4, (4 + length >> 0));
  59621. (0 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 0] = 2);
  59622. (1 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 1] = ((length >> 16 >> 0) << 24 >>> 24));
  59623. (2 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 2] = ((length >> 8 >> 0) << 24 >>> 24));
  59624. (3 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 3] = (length << 24 >>> 24));
  59625. (4 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 4] = ((m.vers >>> 8 << 16 >>> 16) << 24 >>> 24));
  59626. (5 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 5] = (m.vers << 24 >>> 24));
  59627. $copySlice($subslice(x, 6, 38), m.random);
  59628. (38 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 38] = (m.sessionId.$length << 24 >>> 24));
  59629. $copySlice($subslice(x, 39, (39 + m.sessionId.$length >> 0)), m.sessionId);
  59630. z = $subslice(x, (39 + m.sessionId.$length >> 0));
  59631. (0 >= z.$length ? $throwRuntimeError("index out of range") : z.$array[z.$offset + 0] = ((m.cipherSuite >>> 8 << 16 >>> 16) << 24 >>> 24));
  59632. (1 >= z.$length ? $throwRuntimeError("index out of range") : z.$array[z.$offset + 1] = (m.cipherSuite << 24 >>> 24));
  59633. (2 >= z.$length ? $throwRuntimeError("index out of range") : z.$array[z.$offset + 2] = m.compressionMethod);
  59634. z = $subslice(z, 3);
  59635. if (numExtensions > 0) {
  59636. (0 >= z.$length ? $throwRuntimeError("index out of range") : z.$array[z.$offset + 0] = ((extensionsLength >> 8 >> 0) << 24 >>> 24));
  59637. (1 >= z.$length ? $throwRuntimeError("index out of range") : z.$array[z.$offset + 1] = (extensionsLength << 24 >>> 24));
  59638. z = $subslice(z, 2);
  59639. }
  59640. if (m.nextProtoNeg) {
  59641. (0 >= z.$length ? $throwRuntimeError("index out of range") : z.$array[z.$offset + 0] = 51);
  59642. (1 >= z.$length ? $throwRuntimeError("index out of range") : z.$array[z.$offset + 1] = 116);
  59643. (2 >= z.$length ? $throwRuntimeError("index out of range") : z.$array[z.$offset + 2] = ((nextProtoLen >> 8 >> 0) << 24 >>> 24));
  59644. (3 >= z.$length ? $throwRuntimeError("index out of range") : z.$array[z.$offset + 3] = (nextProtoLen << 24 >>> 24));
  59645. z = $subslice(z, 4);
  59646. _ref$1 = m.nextProtos;
  59647. _i$1 = 0;
  59648. while (true) {
  59649. if (!(_i$1 < _ref$1.$length)) { break; }
  59650. v$1 = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? $throwRuntimeError("index out of range") : _ref$1.$array[_ref$1.$offset + _i$1]);
  59651. l = v$1.length;
  59652. if (l > 255) {
  59653. l = 255;
  59654. }
  59655. (0 >= z.$length ? $throwRuntimeError("index out of range") : z.$array[z.$offset + 0] = (l << 24 >>> 24));
  59656. $copySlice($subslice(z, 1), new sliceType$4($stringToBytes(v$1.substring(0, l))));
  59657. z = $subslice(z, (1 + l >> 0));
  59658. _i$1++;
  59659. }
  59660. }
  59661. if (m.ocspStapling) {
  59662. (0 >= z.$length ? $throwRuntimeError("index out of range") : z.$array[z.$offset + 0] = 0);
  59663. (1 >= z.$length ? $throwRuntimeError("index out of range") : z.$array[z.$offset + 1] = 5);
  59664. z = $subslice(z, 4);
  59665. }
  59666. if (m.ticketSupported) {
  59667. (0 >= z.$length ? $throwRuntimeError("index out of range") : z.$array[z.$offset + 0] = 0);
  59668. (1 >= z.$length ? $throwRuntimeError("index out of range") : z.$array[z.$offset + 1] = 35);
  59669. z = $subslice(z, 4);
  59670. }
  59671. if (m.secureRenegotiation) {
  59672. (0 >= z.$length ? $throwRuntimeError("index out of range") : z.$array[z.$offset + 0] = 255);
  59673. (1 >= z.$length ? $throwRuntimeError("index out of range") : z.$array[z.$offset + 1] = 1);
  59674. (2 >= z.$length ? $throwRuntimeError("index out of range") : z.$array[z.$offset + 2] = 0);
  59675. (3 >= z.$length ? $throwRuntimeError("index out of range") : z.$array[z.$offset + 3] = 1);
  59676. z = $subslice(z, 5);
  59677. }
  59678. alpnLen$1 = m.alpnProtocol.length;
  59679. if (alpnLen$1 > 0) {
  59680. (0 >= z.$length ? $throwRuntimeError("index out of range") : z.$array[z.$offset + 0] = 0);
  59681. (1 >= z.$length ? $throwRuntimeError("index out of range") : z.$array[z.$offset + 1] = 16);
  59682. l$1 = 3 + alpnLen$1 >> 0;
  59683. (2 >= z.$length ? $throwRuntimeError("index out of range") : z.$array[z.$offset + 2] = ((l$1 >> 8 >> 0) << 24 >>> 24));
  59684. (3 >= z.$length ? $throwRuntimeError("index out of range") : z.$array[z.$offset + 3] = (l$1 << 24 >>> 24));
  59685. l$1 = l$1 - (2) >> 0;
  59686. (4 >= z.$length ? $throwRuntimeError("index out of range") : z.$array[z.$offset + 4] = ((l$1 >> 8 >> 0) << 24 >>> 24));
  59687. (5 >= z.$length ? $throwRuntimeError("index out of range") : z.$array[z.$offset + 5] = (l$1 << 24 >>> 24));
  59688. l$1 = l$1 - (1) >> 0;
  59689. (6 >= z.$length ? $throwRuntimeError("index out of range") : z.$array[z.$offset + 6] = (l$1 << 24 >>> 24));
  59690. $copySlice($subslice(z, 7), new sliceType$4($stringToBytes(m.alpnProtocol)));
  59691. z = $subslice(z, (7 + alpnLen$1 >> 0));
  59692. }
  59693. m.raw = x;
  59694. return x;
  59695. };
  59696. serverHelloMsg.prototype.marshal = function() { return this.$val.marshal(); };
  59697. serverHelloMsg.ptr.prototype.unmarshal = function(data) {
  59698. var $ptr, _ref, d, d$1, data, extension, extensionsLength, l, l$1, length, m, sessionIdLen;
  59699. m = this;
  59700. if (data.$length < 42) {
  59701. return false;
  59702. }
  59703. m.raw = data;
  59704. m.vers = ((((4 >= data.$length ? $throwRuntimeError("index out of range") : data.$array[data.$offset + 4]) << 16 >>> 16) << 8 << 16 >>> 16) | ((5 >= data.$length ? $throwRuntimeError("index out of range") : data.$array[data.$offset + 5]) << 16 >>> 16)) >>> 0;
  59705. m.random = $subslice(data, 6, 38);
  59706. sessionIdLen = ((38 >= data.$length ? $throwRuntimeError("index out of range") : data.$array[data.$offset + 38]) >> 0);
  59707. if (sessionIdLen > 32 || data.$length < (39 + sessionIdLen >> 0)) {
  59708. return false;
  59709. }
  59710. m.sessionId = $subslice(data, 39, (39 + sessionIdLen >> 0));
  59711. data = $subslice(data, (39 + sessionIdLen >> 0));
  59712. if (data.$length < 3) {
  59713. return false;
  59714. }
  59715. m.cipherSuite = ((((0 >= data.$length ? $throwRuntimeError("index out of range") : data.$array[data.$offset + 0]) << 16 >>> 16) << 8 << 16 >>> 16) | ((1 >= data.$length ? $throwRuntimeError("index out of range") : data.$array[data.$offset + 1]) << 16 >>> 16)) >>> 0;
  59716. m.compressionMethod = (2 >= data.$length ? $throwRuntimeError("index out of range") : data.$array[data.$offset + 2]);
  59717. data = $subslice(data, 3);
  59718. m.nextProtoNeg = false;
  59719. m.nextProtos = sliceType$7.nil;
  59720. m.ocspStapling = false;
  59721. m.ticketSupported = false;
  59722. m.alpnProtocol = "";
  59723. if (data.$length === 0) {
  59724. return true;
  59725. }
  59726. if (data.$length < 2) {
  59727. return false;
  59728. }
  59729. extensionsLength = (((0 >= data.$length ? $throwRuntimeError("index out of range") : data.$array[data.$offset + 0]) >> 0) << 8 >> 0) | ((1 >= data.$length ? $throwRuntimeError("index out of range") : data.$array[data.$offset + 1]) >> 0);
  59730. data = $subslice(data, 2);
  59731. if (!((data.$length === extensionsLength))) {
  59732. return false;
  59733. }
  59734. while (true) {
  59735. if (!(!((data.$length === 0)))) { break; }
  59736. if (data.$length < 4) {
  59737. return false;
  59738. }
  59739. extension = ((((0 >= data.$length ? $throwRuntimeError("index out of range") : data.$array[data.$offset + 0]) << 16 >>> 16) << 8 << 16 >>> 16) | ((1 >= data.$length ? $throwRuntimeError("index out of range") : data.$array[data.$offset + 1]) << 16 >>> 16)) >>> 0;
  59740. length = (((2 >= data.$length ? $throwRuntimeError("index out of range") : data.$array[data.$offset + 2]) >> 0) << 8 >> 0) | ((3 >= data.$length ? $throwRuntimeError("index out of range") : data.$array[data.$offset + 3]) >> 0);
  59741. data = $subslice(data, 4);
  59742. if (data.$length < length) {
  59743. return false;
  59744. }
  59745. _ref = extension;
  59746. if (_ref === 13172) {
  59747. m.nextProtoNeg = true;
  59748. d = $subslice(data, 0, length);
  59749. while (true) {
  59750. if (!(d.$length > 0)) { break; }
  59751. l = ((0 >= d.$length ? $throwRuntimeError("index out of range") : d.$array[d.$offset + 0]) >> 0);
  59752. d = $subslice(d, 1);
  59753. if ((l === 0) || l > d.$length) {
  59754. return false;
  59755. }
  59756. m.nextProtos = $append(m.nextProtos, $bytesToString($subslice(d, 0, l)));
  59757. d = $subslice(d, l);
  59758. }
  59759. } else if (_ref === 5) {
  59760. if (length > 0) {
  59761. return false;
  59762. }
  59763. m.ocspStapling = true;
  59764. } else if (_ref === 35) {
  59765. if (length > 0) {
  59766. return false;
  59767. }
  59768. m.ticketSupported = true;
  59769. } else if (_ref === 65281) {
  59770. if (!((length === 1)) || !(((0 >= data.$length ? $throwRuntimeError("index out of range") : data.$array[data.$offset + 0]) === 0))) {
  59771. return false;
  59772. }
  59773. m.secureRenegotiation = true;
  59774. } else if (_ref === 16) {
  59775. d$1 = $subslice(data, 0, length);
  59776. if (d$1.$length < 3) {
  59777. return false;
  59778. }
  59779. l$1 = (((0 >= d$1.$length ? $throwRuntimeError("index out of range") : d$1.$array[d$1.$offset + 0]) >> 0) << 8 >> 0) | ((1 >= d$1.$length ? $throwRuntimeError("index out of range") : d$1.$array[d$1.$offset + 1]) >> 0);
  59780. if (!((l$1 === (d$1.$length - 2 >> 0)))) {
  59781. return false;
  59782. }
  59783. d$1 = $subslice(d$1, 2);
  59784. l$1 = ((0 >= d$1.$length ? $throwRuntimeError("index out of range") : d$1.$array[d$1.$offset + 0]) >> 0);
  59785. if (!((l$1 === (d$1.$length - 1 >> 0)))) {
  59786. return false;
  59787. }
  59788. d$1 = $subslice(d$1, 1);
  59789. m.alpnProtocol = $bytesToString(d$1);
  59790. }
  59791. data = $subslice(data, length);
  59792. }
  59793. return true;
  59794. };
  59795. serverHelloMsg.prototype.unmarshal = function(data) { return this.$val.unmarshal(data); };
  59796. certificateMsg.ptr.prototype.marshal = function() {
  59797. var $ptr, _i, _i$1, _ref, _ref$1, certificateOctets, i, length, m, slice, slice$1, x, y;
  59798. x = sliceType$4.nil;
  59799. m = this;
  59800. if (!(m.raw === sliceType$4.nil)) {
  59801. x = m.raw;
  59802. return x;
  59803. }
  59804. i = 0;
  59805. _ref = m.certificates;
  59806. _i = 0;
  59807. while (true) {
  59808. if (!(_i < _ref.$length)) { break; }
  59809. slice = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]);
  59810. i = i + (slice.$length) >> 0;
  59811. _i++;
  59812. }
  59813. length = (3 + (3 * m.certificates.$length >> 0) >> 0) + i >> 0;
  59814. x = $makeSlice(sliceType$4, (4 + length >> 0));
  59815. (0 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 0] = 11);
  59816. (1 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 1] = ((length >> 16 >> 0) << 24 >>> 24));
  59817. (2 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 2] = ((length >> 8 >> 0) << 24 >>> 24));
  59818. (3 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 3] = (length << 24 >>> 24));
  59819. certificateOctets = length - 3 >> 0;
  59820. (4 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 4] = ((certificateOctets >> 16 >> 0) << 24 >>> 24));
  59821. (5 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 5] = ((certificateOctets >> 8 >> 0) << 24 >>> 24));
  59822. (6 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 6] = (certificateOctets << 24 >>> 24));
  59823. y = $subslice(x, 7);
  59824. _ref$1 = m.certificates;
  59825. _i$1 = 0;
  59826. while (true) {
  59827. if (!(_i$1 < _ref$1.$length)) { break; }
  59828. slice$1 = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? $throwRuntimeError("index out of range") : _ref$1.$array[_ref$1.$offset + _i$1]);
  59829. (0 >= y.$length ? $throwRuntimeError("index out of range") : y.$array[y.$offset + 0] = ((slice$1.$length >> 16 >> 0) << 24 >>> 24));
  59830. (1 >= y.$length ? $throwRuntimeError("index out of range") : y.$array[y.$offset + 1] = ((slice$1.$length >> 8 >> 0) << 24 >>> 24));
  59831. (2 >= y.$length ? $throwRuntimeError("index out of range") : y.$array[y.$offset + 2] = (slice$1.$length << 24 >>> 24));
  59832. $copySlice($subslice(y, 3), slice$1);
  59833. y = $subslice(y, (3 + slice$1.$length >> 0));
  59834. _i$1++;
  59835. }
  59836. m.raw = x;
  59837. return x;
  59838. };
  59839. certificateMsg.prototype.marshal = function() { return this.$val.marshal(); };
  59840. certificateMsg.ptr.prototype.unmarshal = function(data) {
  59841. var $ptr, certLen, certLen$1, certsLen, d, data, i, m, numCerts, x;
  59842. m = this;
  59843. if (data.$length < 7) {
  59844. return false;
  59845. }
  59846. m.raw = data;
  59847. certsLen = ((((((4 >= data.$length ? $throwRuntimeError("index out of range") : data.$array[data.$offset + 4]) >>> 0) << 16 >>> 0) | (((5 >= data.$length ? $throwRuntimeError("index out of range") : data.$array[data.$offset + 5]) >>> 0) << 8 >>> 0)) >>> 0) | ((6 >= data.$length ? $throwRuntimeError("index out of range") : data.$array[data.$offset + 6]) >>> 0)) >>> 0;
  59848. if (!(((data.$length >>> 0) === (certsLen + 7 >>> 0)))) {
  59849. return false;
  59850. }
  59851. numCerts = 0;
  59852. d = $subslice(data, 7);
  59853. while (true) {
  59854. if (!(certsLen > 0)) { break; }
  59855. if (d.$length < 4) {
  59856. return false;
  59857. }
  59858. certLen = ((((((0 >= d.$length ? $throwRuntimeError("index out of range") : d.$array[d.$offset + 0]) >>> 0) << 16 >>> 0) | (((1 >= d.$length ? $throwRuntimeError("index out of range") : d.$array[d.$offset + 1]) >>> 0) << 8 >>> 0)) >>> 0) | ((2 >= d.$length ? $throwRuntimeError("index out of range") : d.$array[d.$offset + 2]) >>> 0)) >>> 0;
  59859. if ((d.$length >>> 0) < (3 + certLen >>> 0)) {
  59860. return false;
  59861. }
  59862. d = $subslice(d, (3 + certLen >>> 0));
  59863. certsLen = certsLen - ((3 + certLen >>> 0)) >>> 0;
  59864. numCerts = numCerts + (1) >> 0;
  59865. }
  59866. m.certificates = $makeSlice(sliceType$6, numCerts);
  59867. d = $subslice(data, 7);
  59868. i = 0;
  59869. while (true) {
  59870. if (!(i < numCerts)) { break; }
  59871. certLen$1 = ((((((0 >= d.$length ? $throwRuntimeError("index out of range") : d.$array[d.$offset + 0]) >>> 0) << 16 >>> 0) | (((1 >= d.$length ? $throwRuntimeError("index out of range") : d.$array[d.$offset + 1]) >>> 0) << 8 >>> 0)) >>> 0) | ((2 >= d.$length ? $throwRuntimeError("index out of range") : d.$array[d.$offset + 2]) >>> 0)) >>> 0;
  59872. (x = m.certificates, ((i < 0 || i >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + i] = $subslice(d, 3, (3 + certLen$1 >>> 0))));
  59873. d = $subslice(d, (3 + certLen$1 >>> 0));
  59874. i = i + (1) >> 0;
  59875. }
  59876. return true;
  59877. };
  59878. certificateMsg.prototype.unmarshal = function(data) { return this.$val.unmarshal(data); };
  59879. serverKeyExchangeMsg.ptr.prototype.marshal = function() {
  59880. var $ptr, length, m, x;
  59881. m = this;
  59882. if (!(m.raw === sliceType$4.nil)) {
  59883. return m.raw;
  59884. }
  59885. length = m.key.$length;
  59886. x = $makeSlice(sliceType$4, (length + 4 >> 0));
  59887. (0 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 0] = 12);
  59888. (1 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 1] = ((length >> 16 >> 0) << 24 >>> 24));
  59889. (2 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 2] = ((length >> 8 >> 0) << 24 >>> 24));
  59890. (3 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 3] = (length << 24 >>> 24));
  59891. $copySlice($subslice(x, 4), m.key);
  59892. m.raw = x;
  59893. return x;
  59894. };
  59895. serverKeyExchangeMsg.prototype.marshal = function() { return this.$val.marshal(); };
  59896. serverKeyExchangeMsg.ptr.prototype.unmarshal = function(data) {
  59897. var $ptr, data, m;
  59898. m = this;
  59899. m.raw = data;
  59900. if (data.$length < 4) {
  59901. return false;
  59902. }
  59903. m.key = $subslice(data, 4);
  59904. return true;
  59905. };
  59906. serverKeyExchangeMsg.prototype.unmarshal = function(data) { return this.$val.unmarshal(data); };
  59907. certificateStatusMsg.ptr.prototype.marshal = function() {
  59908. var $ptr, l, m, x;
  59909. m = this;
  59910. if (!(m.raw === sliceType$4.nil)) {
  59911. return m.raw;
  59912. }
  59913. x = sliceType$4.nil;
  59914. if (m.statusType === 1) {
  59915. x = $makeSlice(sliceType$4, (8 + m.response.$length >> 0));
  59916. (0 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 0] = 22);
  59917. l = m.response.$length + 4 >> 0;
  59918. (1 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 1] = ((l >> 16 >> 0) << 24 >>> 24));
  59919. (2 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 2] = ((l >> 8 >> 0) << 24 >>> 24));
  59920. (3 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 3] = (l << 24 >>> 24));
  59921. (4 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 4] = 1);
  59922. l = l - (4) >> 0;
  59923. (5 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 5] = ((l >> 16 >> 0) << 24 >>> 24));
  59924. (6 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 6] = ((l >> 8 >> 0) << 24 >>> 24));
  59925. (7 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 7] = (l << 24 >>> 24));
  59926. $copySlice($subslice(x, 8), m.response);
  59927. } else {
  59928. x = new sliceType$4([22, 0, 0, 1, m.statusType]);
  59929. }
  59930. m.raw = x;
  59931. return x;
  59932. };
  59933. certificateStatusMsg.prototype.marshal = function() { return this.$val.marshal(); };
  59934. certificateStatusMsg.ptr.prototype.unmarshal = function(data) {
  59935. var $ptr, data, m, respLen;
  59936. m = this;
  59937. m.raw = data;
  59938. if (data.$length < 5) {
  59939. return false;
  59940. }
  59941. m.statusType = (4 >= data.$length ? $throwRuntimeError("index out of range") : data.$array[data.$offset + 4]);
  59942. m.response = sliceType$4.nil;
  59943. if (m.statusType === 1) {
  59944. if (data.$length < 8) {
  59945. return false;
  59946. }
  59947. respLen = ((((((5 >= data.$length ? $throwRuntimeError("index out of range") : data.$array[data.$offset + 5]) >>> 0) << 16 >>> 0) | (((6 >= data.$length ? $throwRuntimeError("index out of range") : data.$array[data.$offset + 6]) >>> 0) << 8 >>> 0)) >>> 0) | ((7 >= data.$length ? $throwRuntimeError("index out of range") : data.$array[data.$offset + 7]) >>> 0)) >>> 0;
  59948. if (!(((data.$length >>> 0) === (8 + respLen >>> 0)))) {
  59949. return false;
  59950. }
  59951. m.response = $subslice(data, 8);
  59952. }
  59953. return true;
  59954. };
  59955. certificateStatusMsg.prototype.unmarshal = function(data) { return this.$val.unmarshal(data); };
  59956. serverHelloDoneMsg.ptr.prototype.marshal = function() {
  59957. var $ptr, m, x;
  59958. m = this;
  59959. x = $makeSlice(sliceType$4, 4);
  59960. (0 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 0] = 14);
  59961. return x;
  59962. };
  59963. serverHelloDoneMsg.prototype.marshal = function() { return this.$val.marshal(); };
  59964. serverHelloDoneMsg.ptr.prototype.unmarshal = function(data) {
  59965. var $ptr, data, m;
  59966. m = this;
  59967. return data.$length === 4;
  59968. };
  59969. serverHelloDoneMsg.prototype.unmarshal = function(data) { return this.$val.unmarshal(data); };
  59970. clientKeyExchangeMsg.ptr.prototype.marshal = function() {
  59971. var $ptr, length, m, x;
  59972. m = this;
  59973. if (!(m.raw === sliceType$4.nil)) {
  59974. return m.raw;
  59975. }
  59976. length = m.ciphertext.$length;
  59977. x = $makeSlice(sliceType$4, (length + 4 >> 0));
  59978. (0 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 0] = 16);
  59979. (1 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 1] = ((length >> 16 >> 0) << 24 >>> 24));
  59980. (2 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 2] = ((length >> 8 >> 0) << 24 >>> 24));
  59981. (3 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 3] = (length << 24 >>> 24));
  59982. $copySlice($subslice(x, 4), m.ciphertext);
  59983. m.raw = x;
  59984. return x;
  59985. };
  59986. clientKeyExchangeMsg.prototype.marshal = function() { return this.$val.marshal(); };
  59987. clientKeyExchangeMsg.ptr.prototype.unmarshal = function(data) {
  59988. var $ptr, data, l, m;
  59989. m = this;
  59990. m.raw = data;
  59991. if (data.$length < 4) {
  59992. return false;
  59993. }
  59994. l = ((((1 >= data.$length ? $throwRuntimeError("index out of range") : data.$array[data.$offset + 1]) >> 0) << 16 >> 0) | (((2 >= data.$length ? $throwRuntimeError("index out of range") : data.$array[data.$offset + 2]) >> 0) << 8 >> 0)) | ((3 >= data.$length ? $throwRuntimeError("index out of range") : data.$array[data.$offset + 3]) >> 0);
  59995. if (!((l === (data.$length - 4 >> 0)))) {
  59996. return false;
  59997. }
  59998. m.ciphertext = $subslice(data, 4);
  59999. return true;
  60000. };
  60001. clientKeyExchangeMsg.prototype.unmarshal = function(data) { return this.$val.unmarshal(data); };
  60002. finishedMsg.ptr.prototype.marshal = function() {
  60003. var $ptr, m, x;
  60004. x = sliceType$4.nil;
  60005. m = this;
  60006. if (!(m.raw === sliceType$4.nil)) {
  60007. x = m.raw;
  60008. return x;
  60009. }
  60010. x = $makeSlice(sliceType$4, (4 + m.verifyData.$length >> 0));
  60011. (0 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 0] = 20);
  60012. (3 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 3] = (m.verifyData.$length << 24 >>> 24));
  60013. $copySlice($subslice(x, 4), m.verifyData);
  60014. m.raw = x;
  60015. return x;
  60016. };
  60017. finishedMsg.prototype.marshal = function() { return this.$val.marshal(); };
  60018. finishedMsg.ptr.prototype.unmarshal = function(data) {
  60019. var $ptr, data, m;
  60020. m = this;
  60021. m.raw = data;
  60022. if (data.$length < 4) {
  60023. return false;
  60024. }
  60025. m.verifyData = $subslice(data, 4);
  60026. return true;
  60027. };
  60028. finishedMsg.prototype.unmarshal = function(data) { return this.$val.unmarshal(data); };
  60029. nextProtoMsg.ptr.prototype.marshal = function() {
  60030. var $ptr, _r, l, length, m, padding, x, y;
  60031. m = this;
  60032. if (!(m.raw === sliceType$4.nil)) {
  60033. return m.raw;
  60034. }
  60035. l = m.proto.length;
  60036. if (l > 255) {
  60037. l = 255;
  60038. }
  60039. padding = 32 - (_r = ((l + 2 >> 0)) % 32, _r === _r ? _r : $throwRuntimeError("integer divide by zero")) >> 0;
  60040. length = (l + padding >> 0) + 2 >> 0;
  60041. x = $makeSlice(sliceType$4, (length + 4 >> 0));
  60042. (0 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 0] = 67);
  60043. (1 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 1] = ((length >> 16 >> 0) << 24 >>> 24));
  60044. (2 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 2] = ((length >> 8 >> 0) << 24 >>> 24));
  60045. (3 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 3] = (length << 24 >>> 24));
  60046. y = $subslice(x, 4);
  60047. (0 >= y.$length ? $throwRuntimeError("index out of range") : y.$array[y.$offset + 0] = (l << 24 >>> 24));
  60048. $copySlice($subslice(y, 1), new sliceType$4($stringToBytes(m.proto.substring(0, l))));
  60049. y = $subslice(y, (1 + l >> 0));
  60050. (0 >= y.$length ? $throwRuntimeError("index out of range") : y.$array[y.$offset + 0] = (padding << 24 >>> 24));
  60051. m.raw = x;
  60052. return x;
  60053. };
  60054. nextProtoMsg.prototype.marshal = function() { return this.$val.marshal(); };
  60055. nextProtoMsg.ptr.prototype.unmarshal = function(data) {
  60056. var $ptr, data, m, paddingLen, protoLen;
  60057. m = this;
  60058. m.raw = data;
  60059. if (data.$length < 5) {
  60060. return false;
  60061. }
  60062. data = $subslice(data, 4);
  60063. protoLen = ((0 >= data.$length ? $throwRuntimeError("index out of range") : data.$array[data.$offset + 0]) >> 0);
  60064. data = $subslice(data, 1);
  60065. if (data.$length < protoLen) {
  60066. return false;
  60067. }
  60068. m.proto = $bytesToString($subslice(data, 0, protoLen));
  60069. data = $subslice(data, protoLen);
  60070. if (data.$length < 1) {
  60071. return false;
  60072. }
  60073. paddingLen = ((0 >= data.$length ? $throwRuntimeError("index out of range") : data.$array[data.$offset + 0]) >> 0);
  60074. data = $subslice(data, 1);
  60075. if (!((data.$length === paddingLen))) {
  60076. return false;
  60077. }
  60078. return true;
  60079. };
  60080. nextProtoMsg.prototype.unmarshal = function(data) { return this.$val.unmarshal(data); };
  60081. certificateRequestMsg.ptr.prototype.marshal = function() {
  60082. var $ptr, _i, _i$1, _i$2, _ref, _ref$1, _ref$2, ca, ca$1, casLength, length, m, n, sigAndHash, x, y;
  60083. x = sliceType$4.nil;
  60084. m = this;
  60085. if (!(m.raw === sliceType$4.nil)) {
  60086. x = m.raw;
  60087. return x;
  60088. }
  60089. length = (1 + m.certificateTypes.$length >> 0) + 2 >> 0;
  60090. casLength = 0;
  60091. _ref = m.certificateAuthorities;
  60092. _i = 0;
  60093. while (true) {
  60094. if (!(_i < _ref.$length)) { break; }
  60095. ca = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]);
  60096. casLength = casLength + ((2 + ca.$length >> 0)) >> 0;
  60097. _i++;
  60098. }
  60099. length = length + (casLength) >> 0;
  60100. if (m.hasSignatureAndHash) {
  60101. length = length + ((2 + (2 * m.signatureAndHashes.$length >> 0) >> 0)) >> 0;
  60102. }
  60103. x = $makeSlice(sliceType$4, (4 + length >> 0));
  60104. (0 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 0] = 13);
  60105. (1 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 1] = ((length >> 16 >> 0) << 24 >>> 24));
  60106. (2 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 2] = ((length >> 8 >> 0) << 24 >>> 24));
  60107. (3 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 3] = (length << 24 >>> 24));
  60108. (4 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 4] = (m.certificateTypes.$length << 24 >>> 24));
  60109. $copySlice($subslice(x, 5), m.certificateTypes);
  60110. y = $subslice(x, (5 + m.certificateTypes.$length >> 0));
  60111. if (m.hasSignatureAndHash) {
  60112. n = m.signatureAndHashes.$length * 2 >> 0;
  60113. (0 >= y.$length ? $throwRuntimeError("index out of range") : y.$array[y.$offset + 0] = ((n >> 8 >> 0) << 24 >>> 24));
  60114. (1 >= y.$length ? $throwRuntimeError("index out of range") : y.$array[y.$offset + 1] = (n << 24 >>> 24));
  60115. y = $subslice(y, 2);
  60116. _ref$1 = m.signatureAndHashes;
  60117. _i$1 = 0;
  60118. while (true) {
  60119. if (!(_i$1 < _ref$1.$length)) { break; }
  60120. sigAndHash = $clone(((_i$1 < 0 || _i$1 >= _ref$1.$length) ? $throwRuntimeError("index out of range") : _ref$1.$array[_ref$1.$offset + _i$1]), signatureAndHash);
  60121. (0 >= y.$length ? $throwRuntimeError("index out of range") : y.$array[y.$offset + 0] = sigAndHash.hash);
  60122. (1 >= y.$length ? $throwRuntimeError("index out of range") : y.$array[y.$offset + 1] = sigAndHash.signature);
  60123. y = $subslice(y, 2);
  60124. _i$1++;
  60125. }
  60126. }
  60127. (0 >= y.$length ? $throwRuntimeError("index out of range") : y.$array[y.$offset + 0] = ((casLength >> 8 >> 0) << 24 >>> 24));
  60128. (1 >= y.$length ? $throwRuntimeError("index out of range") : y.$array[y.$offset + 1] = (casLength << 24 >>> 24));
  60129. y = $subslice(y, 2);
  60130. _ref$2 = m.certificateAuthorities;
  60131. _i$2 = 0;
  60132. while (true) {
  60133. if (!(_i$2 < _ref$2.$length)) { break; }
  60134. ca$1 = ((_i$2 < 0 || _i$2 >= _ref$2.$length) ? $throwRuntimeError("index out of range") : _ref$2.$array[_ref$2.$offset + _i$2]);
  60135. (0 >= y.$length ? $throwRuntimeError("index out of range") : y.$array[y.$offset + 0] = ((ca$1.$length >> 8 >> 0) << 24 >>> 24));
  60136. (1 >= y.$length ? $throwRuntimeError("index out of range") : y.$array[y.$offset + 1] = (ca$1.$length << 24 >>> 24));
  60137. y = $subslice(y, 2);
  60138. $copySlice(y, ca$1);
  60139. y = $subslice(y, ca$1.$length);
  60140. _i$2++;
  60141. }
  60142. m.raw = x;
  60143. return x;
  60144. };
  60145. certificateRequestMsg.prototype.marshal = function() { return this.$val.marshal(); };
  60146. certificateRequestMsg.ptr.prototype.unmarshal = function(data) {
  60147. var $ptr, _i, _q, _ref, caLen, cas, casLength, data, i, length, m, numCertTypes, numSigAndHash, sigAndHashLen, x, x$1;
  60148. m = this;
  60149. m.raw = data;
  60150. if (data.$length < 5) {
  60151. return false;
  60152. }
  60153. length = ((((((1 >= data.$length ? $throwRuntimeError("index out of range") : data.$array[data.$offset + 1]) >>> 0) << 16 >>> 0) | (((2 >= data.$length ? $throwRuntimeError("index out of range") : data.$array[data.$offset + 2]) >>> 0) << 8 >>> 0)) >>> 0) | ((3 >= data.$length ? $throwRuntimeError("index out of range") : data.$array[data.$offset + 3]) >>> 0)) >>> 0;
  60154. if (!((((data.$length >>> 0) - 4 >>> 0) === length))) {
  60155. return false;
  60156. }
  60157. numCertTypes = ((4 >= data.$length ? $throwRuntimeError("index out of range") : data.$array[data.$offset + 4]) >> 0);
  60158. data = $subslice(data, 5);
  60159. if ((numCertTypes === 0) || data.$length <= numCertTypes) {
  60160. return false;
  60161. }
  60162. m.certificateTypes = $makeSlice(sliceType$4, numCertTypes);
  60163. if (!(($copySlice(m.certificateTypes, data) === numCertTypes))) {
  60164. return false;
  60165. }
  60166. data = $subslice(data, numCertTypes);
  60167. if (m.hasSignatureAndHash) {
  60168. if (data.$length < 2) {
  60169. return false;
  60170. }
  60171. sigAndHashLen = ((((0 >= data.$length ? $throwRuntimeError("index out of range") : data.$array[data.$offset + 0]) << 16 >>> 16) << 8 << 16 >>> 16) | ((1 >= data.$length ? $throwRuntimeError("index out of range") : data.$array[data.$offset + 1]) << 16 >>> 16)) >>> 0;
  60172. data = $subslice(data, 2);
  60173. if (!((((sigAndHashLen & 1) >>> 0) === 0))) {
  60174. return false;
  60175. }
  60176. if (data.$length < (sigAndHashLen >> 0)) {
  60177. return false;
  60178. }
  60179. numSigAndHash = (_q = sigAndHashLen / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >>> 0 : $throwRuntimeError("integer divide by zero"));
  60180. m.signatureAndHashes = $makeSlice(sliceType$2, numSigAndHash);
  60181. _ref = m.signatureAndHashes;
  60182. _i = 0;
  60183. while (true) {
  60184. if (!(_i < _ref.$length)) { break; }
  60185. i = _i;
  60186. (x = m.signatureAndHashes, ((i < 0 || i >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + i])).hash = (0 >= data.$length ? $throwRuntimeError("index out of range") : data.$array[data.$offset + 0]);
  60187. (x$1 = m.signatureAndHashes, ((i < 0 || i >= x$1.$length) ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + i])).signature = (1 >= data.$length ? $throwRuntimeError("index out of range") : data.$array[data.$offset + 1]);
  60188. data = $subslice(data, 2);
  60189. _i++;
  60190. }
  60191. }
  60192. if (data.$length < 2) {
  60193. return false;
  60194. }
  60195. casLength = ((((0 >= data.$length ? $throwRuntimeError("index out of range") : data.$array[data.$offset + 0]) << 16 >>> 16) << 8 << 16 >>> 16) | ((1 >= data.$length ? $throwRuntimeError("index out of range") : data.$array[data.$offset + 1]) << 16 >>> 16)) >>> 0;
  60196. data = $subslice(data, 2);
  60197. if (data.$length < (casLength >> 0)) {
  60198. return false;
  60199. }
  60200. cas = $makeSlice(sliceType$4, casLength);
  60201. $copySlice(cas, data);
  60202. data = $subslice(data, casLength);
  60203. m.certificateAuthorities = sliceType$6.nil;
  60204. while (true) {
  60205. if (!(cas.$length > 0)) { break; }
  60206. if (cas.$length < 2) {
  60207. return false;
  60208. }
  60209. caLen = ((((0 >= cas.$length ? $throwRuntimeError("index out of range") : cas.$array[cas.$offset + 0]) << 16 >>> 16) << 8 << 16 >>> 16) | ((1 >= cas.$length ? $throwRuntimeError("index out of range") : cas.$array[cas.$offset + 1]) << 16 >>> 16)) >>> 0;
  60210. cas = $subslice(cas, 2);
  60211. if (cas.$length < (caLen >> 0)) {
  60212. return false;
  60213. }
  60214. m.certificateAuthorities = $append(m.certificateAuthorities, $subslice(cas, 0, caLen));
  60215. cas = $subslice(cas, caLen);
  60216. }
  60217. if (data.$length > 0) {
  60218. return false;
  60219. }
  60220. return true;
  60221. };
  60222. certificateRequestMsg.prototype.unmarshal = function(data) { return this.$val.unmarshal(data); };
  60223. certificateVerifyMsg.ptr.prototype.marshal = function() {
  60224. var $ptr, length, m, siglength, x, y;
  60225. x = sliceType$4.nil;
  60226. m = this;
  60227. if (!(m.raw === sliceType$4.nil)) {
  60228. x = m.raw;
  60229. return x;
  60230. }
  60231. siglength = m.signature.$length;
  60232. length = 2 + siglength >> 0;
  60233. if (m.hasSignatureAndHash) {
  60234. length = length + (2) >> 0;
  60235. }
  60236. x = $makeSlice(sliceType$4, (4 + length >> 0));
  60237. (0 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 0] = 15);
  60238. (1 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 1] = ((length >> 16 >> 0) << 24 >>> 24));
  60239. (2 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 2] = ((length >> 8 >> 0) << 24 >>> 24));
  60240. (3 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 3] = (length << 24 >>> 24));
  60241. y = $subslice(x, 4);
  60242. if (m.hasSignatureAndHash) {
  60243. (0 >= y.$length ? $throwRuntimeError("index out of range") : y.$array[y.$offset + 0] = m.signatureAndHash.hash);
  60244. (1 >= y.$length ? $throwRuntimeError("index out of range") : y.$array[y.$offset + 1] = m.signatureAndHash.signature);
  60245. y = $subslice(y, 2);
  60246. }
  60247. (0 >= y.$length ? $throwRuntimeError("index out of range") : y.$array[y.$offset + 0] = ((siglength >> 8 >> 0) << 24 >>> 24));
  60248. (1 >= y.$length ? $throwRuntimeError("index out of range") : y.$array[y.$offset + 1] = (siglength << 24 >>> 24));
  60249. $copySlice($subslice(y, 2), m.signature);
  60250. m.raw = x;
  60251. return x;
  60252. };
  60253. certificateVerifyMsg.prototype.marshal = function() { return this.$val.marshal(); };
  60254. certificateVerifyMsg.ptr.prototype.unmarshal = function(data) {
  60255. var $ptr, data, length, m, siglength;
  60256. m = this;
  60257. m.raw = data;
  60258. if (data.$length < 6) {
  60259. return false;
  60260. }
  60261. length = ((((((1 >= data.$length ? $throwRuntimeError("index out of range") : data.$array[data.$offset + 1]) >>> 0) << 16 >>> 0) | (((2 >= data.$length ? $throwRuntimeError("index out of range") : data.$array[data.$offset + 2]) >>> 0) << 8 >>> 0)) >>> 0) | ((3 >= data.$length ? $throwRuntimeError("index out of range") : data.$array[data.$offset + 3]) >>> 0)) >>> 0;
  60262. if (!((((data.$length >>> 0) - 4 >>> 0) === length))) {
  60263. return false;
  60264. }
  60265. data = $subslice(data, 4);
  60266. if (m.hasSignatureAndHash) {
  60267. m.signatureAndHash.hash = (0 >= data.$length ? $throwRuntimeError("index out of range") : data.$array[data.$offset + 0]);
  60268. m.signatureAndHash.signature = (1 >= data.$length ? $throwRuntimeError("index out of range") : data.$array[data.$offset + 1]);
  60269. data = $subslice(data, 2);
  60270. }
  60271. if (data.$length < 2) {
  60272. return false;
  60273. }
  60274. siglength = (((0 >= data.$length ? $throwRuntimeError("index out of range") : data.$array[data.$offset + 0]) >> 0) << 8 >> 0) + ((1 >= data.$length ? $throwRuntimeError("index out of range") : data.$array[data.$offset + 1]) >> 0) >> 0;
  60275. data = $subslice(data, 2);
  60276. if (!((data.$length === siglength))) {
  60277. return false;
  60278. }
  60279. m.signature = data;
  60280. return true;
  60281. };
  60282. certificateVerifyMsg.prototype.unmarshal = function(data) { return this.$val.unmarshal(data); };
  60283. newSessionTicketMsg.ptr.prototype.marshal = function() {
  60284. var $ptr, length, m, ticketLen, x;
  60285. x = sliceType$4.nil;
  60286. m = this;
  60287. if (!(m.raw === sliceType$4.nil)) {
  60288. x = m.raw;
  60289. return x;
  60290. }
  60291. ticketLen = m.ticket.$length;
  60292. length = 6 + ticketLen >> 0;
  60293. x = $makeSlice(sliceType$4, (4 + length >> 0));
  60294. (0 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 0] = 4);
  60295. (1 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 1] = ((length >> 16 >> 0) << 24 >>> 24));
  60296. (2 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 2] = ((length >> 8 >> 0) << 24 >>> 24));
  60297. (3 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 3] = (length << 24 >>> 24));
  60298. (8 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 8] = ((ticketLen >> 8 >> 0) << 24 >>> 24));
  60299. (9 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 9] = (ticketLen << 24 >>> 24));
  60300. $copySlice($subslice(x, 10), m.ticket);
  60301. m.raw = x;
  60302. return x;
  60303. };
  60304. newSessionTicketMsg.prototype.marshal = function() { return this.$val.marshal(); };
  60305. newSessionTicketMsg.ptr.prototype.unmarshal = function(data) {
  60306. var $ptr, data, length, m, ticketLen;
  60307. m = this;
  60308. m.raw = data;
  60309. if (data.$length < 10) {
  60310. return false;
  60311. }
  60312. length = ((((((1 >= data.$length ? $throwRuntimeError("index out of range") : data.$array[data.$offset + 1]) >>> 0) << 16 >>> 0) | (((2 >= data.$length ? $throwRuntimeError("index out of range") : data.$array[data.$offset + 2]) >>> 0) << 8 >>> 0)) >>> 0) | ((3 >= data.$length ? $throwRuntimeError("index out of range") : data.$array[data.$offset + 3]) >>> 0)) >>> 0;
  60313. if (!((((data.$length >>> 0) - 4 >>> 0) === length))) {
  60314. return false;
  60315. }
  60316. ticketLen = (((8 >= data.$length ? $throwRuntimeError("index out of range") : data.$array[data.$offset + 8]) >> 0) << 8 >> 0) + ((9 >= data.$length ? $throwRuntimeError("index out of range") : data.$array[data.$offset + 9]) >> 0) >> 0;
  60317. if (!(((data.$length - 10 >> 0) === ticketLen))) {
  60318. return false;
  60319. }
  60320. m.ticket = $subslice(data, 10);
  60321. return true;
  60322. };
  60323. newSessionTicketMsg.prototype.unmarshal = function(data) { return this.$val.unmarshal(data); };
  60324. Conn.ptr.prototype.serverHandshake = function() {
  60325. var $ptr, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _tuple, c, config, err, err$1, err$2, err$3, err$4, err$5, err$6, err$7, err$8, err$9, hs, isResume, $s, $r;
  60326. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _r$9 = $f._r$9; _tuple = $f._tuple; c = $f.c; config = $f.config; err = $f.err; err$1 = $f.err$1; err$2 = $f.err$2; err$3 = $f.err$3; err$4 = $f.err$4; err$5 = $f.err$5; err$6 = $f.err$6; err$7 = $f.err$7; err$8 = $f.err$8; err$9 = $f.err$9; hs = $f.hs; isResume = $f.isResume; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  60327. c = this;
  60328. config = c.config;
  60329. $r = config.serverInitOnce.Do($methodVal(config, "serverInit")); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  60330. hs = new serverHandshakeState.ptr(c, ptrType$11.nil, ptrType$9.nil, ptrType.nil, false, false, ptrType$26.nil, new finishedHash.ptr(), sliceType$4.nil, sliceType$6.nil, ptrType$3.nil);
  60331. _r = hs.readClientHello(); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  60332. _tuple = _r; isResume = _tuple[0]; err = _tuple[1];
  60333. if (!($interfaceIsEqual(err, $ifaceNil))) {
  60334. return err;
  60335. }
  60336. /* */ if (isResume) { $s = 3; continue; }
  60337. /* */ $s = 4; continue;
  60338. /* if (isResume) { */ case 3:
  60339. _r$1 = hs.doResumeHandshake(); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  60340. err$1 = _r$1;
  60341. /* */ if (!($interfaceIsEqual(err$1, $ifaceNil))) { $s = 7; continue; }
  60342. /* */ $s = 8; continue;
  60343. /* if (!($interfaceIsEqual(err$1, $ifaceNil))) { */ case 7:
  60344. return err$1;
  60345. /* } */ case 8:
  60346. _r$2 = hs.establishKeys(); /* */ $s = 9; case 9: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  60347. err$2 = _r$2;
  60348. /* */ if (!($interfaceIsEqual(err$2, $ifaceNil))) { $s = 10; continue; }
  60349. /* */ $s = 11; continue;
  60350. /* if (!($interfaceIsEqual(err$2, $ifaceNil))) { */ case 10:
  60351. return err$2;
  60352. /* } */ case 11:
  60353. _r$3 = hs.sendFinished(new sliceType$4(c.firstFinished)); /* */ $s = 12; case 12: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  60354. err$3 = _r$3;
  60355. /* */ if (!($interfaceIsEqual(err$3, $ifaceNil))) { $s = 13; continue; }
  60356. /* */ $s = 14; continue;
  60357. /* if (!($interfaceIsEqual(err$3, $ifaceNil))) { */ case 13:
  60358. return err$3;
  60359. /* } */ case 14:
  60360. _r$4 = hs.readFinished(sliceType$4.nil); /* */ $s = 15; case 15: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
  60361. err$4 = _r$4;
  60362. /* */ if (!($interfaceIsEqual(err$4, $ifaceNil))) { $s = 16; continue; }
  60363. /* */ $s = 17; continue;
  60364. /* if (!($interfaceIsEqual(err$4, $ifaceNil))) { */ case 16:
  60365. return err$4;
  60366. /* } */ case 17:
  60367. c.didResume = true;
  60368. $s = 5; continue;
  60369. /* } else { */ case 4:
  60370. _r$5 = hs.doFullHandshake(); /* */ $s = 18; case 18: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
  60371. err$5 = _r$5;
  60372. /* */ if (!($interfaceIsEqual(err$5, $ifaceNil))) { $s = 19; continue; }
  60373. /* */ $s = 20; continue;
  60374. /* if (!($interfaceIsEqual(err$5, $ifaceNil))) { */ case 19:
  60375. return err$5;
  60376. /* } */ case 20:
  60377. _r$6 = hs.establishKeys(); /* */ $s = 21; case 21: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
  60378. err$6 = _r$6;
  60379. /* */ if (!($interfaceIsEqual(err$6, $ifaceNil))) { $s = 22; continue; }
  60380. /* */ $s = 23; continue;
  60381. /* if (!($interfaceIsEqual(err$6, $ifaceNil))) { */ case 22:
  60382. return err$6;
  60383. /* } */ case 23:
  60384. _r$7 = hs.readFinished(new sliceType$4(c.firstFinished)); /* */ $s = 24; case 24: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
  60385. err$7 = _r$7;
  60386. /* */ if (!($interfaceIsEqual(err$7, $ifaceNil))) { $s = 25; continue; }
  60387. /* */ $s = 26; continue;
  60388. /* if (!($interfaceIsEqual(err$7, $ifaceNil))) { */ case 25:
  60389. return err$7;
  60390. /* } */ case 26:
  60391. _r$8 = hs.sendSessionTicket(); /* */ $s = 27; case 27: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
  60392. err$8 = _r$8;
  60393. /* */ if (!($interfaceIsEqual(err$8, $ifaceNil))) { $s = 28; continue; }
  60394. /* */ $s = 29; continue;
  60395. /* if (!($interfaceIsEqual(err$8, $ifaceNil))) { */ case 28:
  60396. return err$8;
  60397. /* } */ case 29:
  60398. _r$9 = hs.sendFinished(sliceType$4.nil); /* */ $s = 30; case 30: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
  60399. err$9 = _r$9;
  60400. /* */ if (!($interfaceIsEqual(err$9, $ifaceNil))) { $s = 31; continue; }
  60401. /* */ $s = 32; continue;
  60402. /* if (!($interfaceIsEqual(err$9, $ifaceNil))) { */ case 31:
  60403. return err$9;
  60404. /* } */ case 32:
  60405. /* } */ case 5:
  60406. c.handshakeComplete = true;
  60407. return $ifaceNil;
  60408. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Conn.ptr.prototype.serverHandshake }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._r$9 = _r$9; $f._tuple = _tuple; $f.c = c; $f.config = config; $f.err = err; $f.err$1 = err$1; $f.err$2 = err$2; $f.err$3 = err$3; $f.err$4 = err$4; $f.err$5 = err$5; $f.err$6 = err$6; $f.err$7 = err$7; $f.err$8 = err$8; $f.err$9 = err$9; $f.hs = hs; $f.isResume = isResume; $f.$s = $s; $f.$r = $r; return $f;
  60409. };
  60410. Conn.prototype.serverHandshake = function() { return this.$val.serverHandshake(); };
  60411. serverHandshakeState.ptr.prototype.readClientHello = function() {
  60412. var $ptr, _i, _i$1, _i$2, _i$3, _i$4, _i$5, _r, _r$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$16, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _ref$1, _ref$2, _ref$3, _ref$4, _ref$5, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$16, _tmp$17, _tmp$18, _tmp$19, _tmp$2, _tmp$20, _tmp$21, _tmp$22, _tmp$23, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, _tuple$6, c, chi, compression, config, curve, err, fallback, foundCompression, hs, id, id$1, isResume, msg, ok, pointFormat, preferenceList, preferredCurves, selectedProto, supported, supportedCurve, supportedList, supportedPointFormat, x, $s, $r;
  60413. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _i = $f._i; _i$1 = $f._i$1; _i$2 = $f._i$2; _i$3 = $f._i$3; _i$4 = $f._i$4; _i$5 = $f._i$5; _r = $f._r; _r$1 = $f._r$1; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$12 = $f._r$12; _r$13 = $f._r$13; _r$14 = $f._r$14; _r$15 = $f._r$15; _r$16 = $f._r$16; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _r$9 = $f._r$9; _ref = $f._ref; _ref$1 = $f._ref$1; _ref$2 = $f._ref$2; _ref$3 = $f._ref$3; _ref$4 = $f._ref$4; _ref$5 = $f._ref$5; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$10 = $f._tmp$10; _tmp$11 = $f._tmp$11; _tmp$12 = $f._tmp$12; _tmp$13 = $f._tmp$13; _tmp$14 = $f._tmp$14; _tmp$15 = $f._tmp$15; _tmp$16 = $f._tmp$16; _tmp$17 = $f._tmp$17; _tmp$18 = $f._tmp$18; _tmp$19 = $f._tmp$19; _tmp$2 = $f._tmp$2; _tmp$20 = $f._tmp$20; _tmp$21 = $f._tmp$21; _tmp$22 = $f._tmp$22; _tmp$23 = $f._tmp$23; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tmp$6 = $f._tmp$6; _tmp$7 = $f._tmp$7; _tmp$8 = $f._tmp$8; _tmp$9 = $f._tmp$9; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; _tuple$4 = $f._tuple$4; _tuple$5 = $f._tuple$5; _tuple$6 = $f._tuple$6; c = $f.c; chi = $f.chi; compression = $f.compression; config = $f.config; curve = $f.curve; err = $f.err; fallback = $f.fallback; foundCompression = $f.foundCompression; hs = $f.hs; id = $f.id; id$1 = $f.id$1; isResume = $f.isResume; msg = $f.msg; ok = $f.ok; pointFormat = $f.pointFormat; preferenceList = $f.preferenceList; preferredCurves = $f.preferredCurves; selectedProto = $f.selectedProto; supported = $f.supported; supportedCurve = $f.supportedCurve; supportedList = $f.supportedList; supportedPointFormat = $f.supportedPointFormat; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  60414. isResume = false;
  60415. err = $ifaceNil;
  60416. hs = this;
  60417. config = hs.c.config;
  60418. c = hs.c;
  60419. _r = c.readHandshake(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  60420. _tuple = _r; msg = _tuple[0]; err = _tuple[1];
  60421. if (!($interfaceIsEqual(err, $ifaceNil))) {
  60422. _tmp = false; _tmp$1 = err; isResume = _tmp; err = _tmp$1;
  60423. return [isResume, err];
  60424. }
  60425. ok = false;
  60426. _tuple$1 = $assertType(msg, ptrType$11, true); hs.clientHello = _tuple$1[0]; ok = _tuple$1[1];
  60427. /* */ if (!ok) { $s = 2; continue; }
  60428. /* */ $s = 3; continue;
  60429. /* if (!ok) { */ case 2:
  60430. _r$1 = c.sendAlert(10); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  60431. _r$1;
  60432. _r$2 = unexpectedMessageError(hs.clientHello, msg); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  60433. _tmp$2 = false; _tmp$3 = _r$2; isResume = _tmp$2; err = _tmp$3;
  60434. return [isResume, err];
  60435. /* } */ case 3:
  60436. _tuple$2 = config.mutualVersion(hs.clientHello.vers); c.vers = _tuple$2[0]; ok = _tuple$2[1];
  60437. /* */ if (!ok) { $s = 6; continue; }
  60438. /* */ $s = 7; continue;
  60439. /* if (!ok) { */ case 6:
  60440. _r$3 = c.sendAlert(70); /* */ $s = 8; case 8: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  60441. _r$3;
  60442. _r$4 = fmt.Errorf("tls: client offered an unsupported, maximum protocol version of %x", new sliceType$5([new $Uint16(hs.clientHello.vers)])); /* */ $s = 9; case 9: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
  60443. _tmp$4 = false; _tmp$5 = _r$4; isResume = _tmp$4; err = _tmp$5;
  60444. return [isResume, err];
  60445. /* } */ case 7:
  60446. c.haveVers = true;
  60447. $copy(hs.finishedHash, newFinishedHash(c.vers), finishedHash);
  60448. _r$5 = hs.finishedHash.Write(hs.clientHello.marshal()); /* */ $s = 10; case 10: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
  60449. _r$5;
  60450. hs.hello = new serverHelloMsg.ptr();
  60451. supportedCurve = false;
  60452. preferredCurves = config.curvePreferences();
  60453. _ref = hs.clientHello.supportedCurves;
  60454. _i = 0;
  60455. Curves:
  60456. while (true) {
  60457. if (!(_i < _ref.$length)) { break; }
  60458. curve = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]);
  60459. _ref$1 = preferredCurves;
  60460. _i$1 = 0;
  60461. while (true) {
  60462. if (!(_i$1 < _ref$1.$length)) { break; }
  60463. supported = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? $throwRuntimeError("index out of range") : _ref$1.$array[_ref$1.$offset + _i$1]);
  60464. if (supported === curve) {
  60465. supportedCurve = true;
  60466. break Curves;
  60467. }
  60468. _i$1++;
  60469. }
  60470. _i++;
  60471. }
  60472. supportedPointFormat = false;
  60473. _ref$2 = hs.clientHello.supportedPoints;
  60474. _i$2 = 0;
  60475. while (true) {
  60476. if (!(_i$2 < _ref$2.$length)) { break; }
  60477. pointFormat = ((_i$2 < 0 || _i$2 >= _ref$2.$length) ? $throwRuntimeError("index out of range") : _ref$2.$array[_ref$2.$offset + _i$2]);
  60478. if (pointFormat === 0) {
  60479. supportedPointFormat = true;
  60480. break;
  60481. }
  60482. _i$2++;
  60483. }
  60484. hs.ellipticOk = supportedCurve && supportedPointFormat;
  60485. foundCompression = false;
  60486. _ref$3 = hs.clientHello.compressionMethods;
  60487. _i$3 = 0;
  60488. while (true) {
  60489. if (!(_i$3 < _ref$3.$length)) { break; }
  60490. compression = ((_i$3 < 0 || _i$3 >= _ref$3.$length) ? $throwRuntimeError("index out of range") : _ref$3.$array[_ref$3.$offset + _i$3]);
  60491. if (compression === 0) {
  60492. foundCompression = true;
  60493. break;
  60494. }
  60495. _i$3++;
  60496. }
  60497. /* */ if (!foundCompression) { $s = 11; continue; }
  60498. /* */ $s = 12; continue;
  60499. /* if (!foundCompression) { */ case 11:
  60500. _r$6 = c.sendAlert(40); /* */ $s = 13; case 13: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
  60501. _r$6;
  60502. _tmp$6 = false; _tmp$7 = errors.New("tls: client does not support uncompressed connections"); isResume = _tmp$6; err = _tmp$7;
  60503. return [isResume, err];
  60504. /* } */ case 12:
  60505. hs.hello.vers = c.vers;
  60506. hs.hello.random = $makeSlice(sliceType$4, 32);
  60507. _r$7 = io.ReadFull(config.rand(), hs.hello.random); /* */ $s = 14; case 14: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
  60508. _tuple$3 = _r$7; err = _tuple$3[1];
  60509. /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 15; continue; }
  60510. /* */ $s = 16; continue;
  60511. /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 15:
  60512. _r$8 = c.sendAlert(80); /* */ $s = 17; case 17: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
  60513. _r$8;
  60514. _tmp$8 = false; _tmp$9 = err; isResume = _tmp$8; err = _tmp$9;
  60515. return [isResume, err];
  60516. /* } */ case 16:
  60517. hs.hello.secureRenegotiation = hs.clientHello.secureRenegotiation;
  60518. hs.hello.compressionMethod = 0;
  60519. if (hs.clientHello.serverName.length > 0) {
  60520. c.serverName = hs.clientHello.serverName;
  60521. }
  60522. if (hs.clientHello.alpnProtocols.$length > 0) {
  60523. _tuple$4 = mutualProtocol(hs.clientHello.alpnProtocols, c.config.NextProtos); selectedProto = _tuple$4[0]; fallback = _tuple$4[1];
  60524. if (!fallback) {
  60525. hs.hello.alpnProtocol = selectedProto;
  60526. c.clientProtocol = selectedProto;
  60527. }
  60528. } else {
  60529. if (hs.clientHello.nextProtoNeg && config.NextProtos.$length > 0) {
  60530. hs.hello.nextProtoNeg = true;
  60531. hs.hello.nextProtos = config.NextProtos;
  60532. }
  60533. }
  60534. /* */ if (config.Certificates.$length === 0) { $s = 18; continue; }
  60535. /* */ $s = 19; continue;
  60536. /* if (config.Certificates.$length === 0) { */ case 18:
  60537. _r$9 = c.sendAlert(80); /* */ $s = 20; case 20: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
  60538. _r$9;
  60539. _tmp$10 = false; _tmp$11 = errors.New("tls: no certificates configured"); isResume = _tmp$10; err = _tmp$11;
  60540. return [isResume, err];
  60541. /* } */ case 19:
  60542. hs.cert = (x = config.Certificates, (0 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 0]));
  60543. /* */ if (hs.clientHello.serverName.length > 0) { $s = 21; continue; }
  60544. /* */ $s = 22; continue;
  60545. /* if (hs.clientHello.serverName.length > 0) { */ case 21:
  60546. chi = new ClientHelloInfo.ptr(hs.clientHello.cipherSuites, hs.clientHello.serverName, hs.clientHello.supportedCurves, hs.clientHello.supportedPoints);
  60547. _r$10 = config.getCertificate(chi); /* */ $s = 23; case 23: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
  60548. _tuple$5 = _r$10; hs.cert = _tuple$5[0]; err = _tuple$5[1];
  60549. /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 24; continue; }
  60550. /* */ $s = 25; continue;
  60551. /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 24:
  60552. _r$11 = c.sendAlert(80); /* */ $s = 26; case 26: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
  60553. _r$11;
  60554. _tmp$12 = false; _tmp$13 = err; isResume = _tmp$12; err = _tmp$13;
  60555. return [isResume, err];
  60556. /* } */ case 25:
  60557. /* } */ case 22:
  60558. _tuple$6 = $assertType(hs.cert.PrivateKey, ptrType$27, true); hs.ecdsaOk = _tuple$6[1];
  60559. _r$12 = hs.checkForResumption(); /* */ $s = 29; case 29: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; }
  60560. /* */ if (_r$12) { $s = 27; continue; }
  60561. /* */ $s = 28; continue;
  60562. /* if (_r$12) { */ case 27:
  60563. _tmp$14 = true; _tmp$15 = $ifaceNil; isResume = _tmp$14; err = _tmp$15;
  60564. return [isResume, err];
  60565. /* } */ case 28:
  60566. _tmp$16 = sliceType.nil; _tmp$17 = sliceType.nil; preferenceList = _tmp$16; supportedList = _tmp$17;
  60567. /* */ if (c.config.PreferServerCipherSuites) { $s = 30; continue; }
  60568. /* */ $s = 31; continue;
  60569. /* if (c.config.PreferServerCipherSuites) { */ case 30:
  60570. _r$13 = c.config.cipherSuites(); /* */ $s = 33; case 33: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; }
  60571. preferenceList = _r$13;
  60572. supportedList = hs.clientHello.cipherSuites;
  60573. $s = 32; continue;
  60574. /* } else { */ case 31:
  60575. preferenceList = hs.clientHello.cipherSuites;
  60576. _r$14 = c.config.cipherSuites(); /* */ $s = 34; case 34: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; }
  60577. supportedList = _r$14;
  60578. /* } */ case 32:
  60579. _ref$4 = preferenceList;
  60580. _i$4 = 0;
  60581. while (true) {
  60582. if (!(_i$4 < _ref$4.$length)) { break; }
  60583. id = ((_i$4 < 0 || _i$4 >= _ref$4.$length) ? $throwRuntimeError("index out of range") : _ref$4.$array[_ref$4.$offset + _i$4]);
  60584. hs.suite = c.tryCipherSuite(id, supportedList, c.vers, hs.ellipticOk, hs.ecdsaOk);
  60585. if (!(hs.suite === ptrType.nil)) {
  60586. break;
  60587. }
  60588. _i$4++;
  60589. }
  60590. /* */ if (hs.suite === ptrType.nil) { $s = 35; continue; }
  60591. /* */ $s = 36; continue;
  60592. /* if (hs.suite === ptrType.nil) { */ case 35:
  60593. _r$15 = c.sendAlert(40); /* */ $s = 37; case 37: if($c) { $c = false; _r$15 = _r$15.$blk(); } if (_r$15 && _r$15.$blk !== undefined) { break s; }
  60594. _r$15;
  60595. _tmp$18 = false; _tmp$19 = errors.New("tls: no cipher suite supported by both client and server"); isResume = _tmp$18; err = _tmp$19;
  60596. return [isResume, err];
  60597. /* } */ case 36:
  60598. _ref$5 = hs.clientHello.cipherSuites;
  60599. _i$5 = 0;
  60600. /* while (true) { */ case 38:
  60601. /* if (!(_i$5 < _ref$5.$length)) { break; } */ if(!(_i$5 < _ref$5.$length)) { $s = 39; continue; }
  60602. id$1 = ((_i$5 < 0 || _i$5 >= _ref$5.$length) ? $throwRuntimeError("index out of range") : _ref$5.$array[_ref$5.$offset + _i$5]);
  60603. /* */ if (id$1 === 22016) { $s = 40; continue; }
  60604. /* */ $s = 41; continue;
  60605. /* if (id$1 === 22016) { */ case 40:
  60606. /* */ if (hs.clientHello.vers < c.config.MaxVersion) { $s = 42; continue; }
  60607. /* */ $s = 43; continue;
  60608. /* if (hs.clientHello.vers < c.config.MaxVersion) { */ case 42:
  60609. _r$16 = c.sendAlert(86); /* */ $s = 44; case 44: if($c) { $c = false; _r$16 = _r$16.$blk(); } if (_r$16 && _r$16.$blk !== undefined) { break s; }
  60610. _r$16;
  60611. _tmp$20 = false; _tmp$21 = errors.New("tls: client using inppropriate protocol fallback"); isResume = _tmp$20; err = _tmp$21;
  60612. return [isResume, err];
  60613. /* } */ case 43:
  60614. /* break; */ $s = 39; continue;
  60615. /* } */ case 41:
  60616. _i$5++;
  60617. /* } */ $s = 38; continue; case 39:
  60618. _tmp$22 = false; _tmp$23 = $ifaceNil; isResume = _tmp$22; err = _tmp$23;
  60619. return [isResume, err];
  60620. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: serverHandshakeState.ptr.prototype.readClientHello }; } $f.$ptr = $ptr; $f._i = _i; $f._i$1 = _i$1; $f._i$2 = _i$2; $f._i$3 = _i$3; $f._i$4 = _i$4; $f._i$5 = _i$5; $f._r = _r; $f._r$1 = _r$1; $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$12 = _r$12; $f._r$13 = _r$13; $f._r$14 = _r$14; $f._r$15 = _r$15; $f._r$16 = _r$16; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._r$9 = _r$9; $f._ref = _ref; $f._ref$1 = _ref$1; $f._ref$2 = _ref$2; $f._ref$3 = _ref$3; $f._ref$4 = _ref$4; $f._ref$5 = _ref$5; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$10 = _tmp$10; $f._tmp$11 = _tmp$11; $f._tmp$12 = _tmp$12; $f._tmp$13 = _tmp$13; $f._tmp$14 = _tmp$14; $f._tmp$15 = _tmp$15; $f._tmp$16 = _tmp$16; $f._tmp$17 = _tmp$17; $f._tmp$18 = _tmp$18; $f._tmp$19 = _tmp$19; $f._tmp$2 = _tmp$2; $f._tmp$20 = _tmp$20; $f._tmp$21 = _tmp$21; $f._tmp$22 = _tmp$22; $f._tmp$23 = _tmp$23; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tmp$6 = _tmp$6; $f._tmp$7 = _tmp$7; $f._tmp$8 = _tmp$8; $f._tmp$9 = _tmp$9; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f._tuple$4 = _tuple$4; $f._tuple$5 = _tuple$5; $f._tuple$6 = _tuple$6; $f.c = c; $f.chi = chi; $f.compression = compression; $f.config = config; $f.curve = curve; $f.err = err; $f.fallback = fallback; $f.foundCompression = foundCompression; $f.hs = hs; $f.id = id; $f.id$1 = id$1; $f.isResume = isResume; $f.msg = msg; $f.ok = ok; $f.pointFormat = pointFormat; $f.preferenceList = preferenceList; $f.preferredCurves = preferredCurves; $f.selectedProto = selectedProto; $f.supported = supported; $f.supportedCurve = supportedCurve; $f.supportedList = supportedList; $f.supportedPointFormat = supportedPointFormat; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
  60621. };
  60622. serverHandshakeState.prototype.readClientHello = function() { return this.$val.readClientHello(); };
  60623. serverHandshakeState.ptr.prototype.checkForResumption = function() {
  60624. var $ptr, _arg, _arg$1, _arg$2, _arg$3, _arg$4, _i, _r, _r$1, _r$2, _ref, _tuple, _tuple$1, c, cipherSuiteOk, hs, id, needClientCerts, ok, ok$1, sessionHasClientCerts, vers, $s, $r;
  60625. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _arg = $f._arg; _arg$1 = $f._arg$1; _arg$2 = $f._arg$2; _arg$3 = $f._arg$3; _arg$4 = $f._arg$4; _i = $f._i; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _ref = $f._ref; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; c = $f.c; cipherSuiteOk = $f.cipherSuiteOk; hs = $f.hs; id = $f.id; needClientCerts = $f.needClientCerts; ok = $f.ok; ok$1 = $f.ok$1; sessionHasClientCerts = $f.sessionHasClientCerts; vers = $f.vers; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  60626. hs = this;
  60627. c = hs.c;
  60628. if (c.config.SessionTicketsDisabled) {
  60629. return false;
  60630. }
  60631. ok = false;
  60632. _r = c.decryptTicket(hs.clientHello.sessionTicket); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  60633. _tuple = _r; hs.sessionState = _tuple[0]; ok = _tuple[1];
  60634. /* */ if (!ok) { $s = 2; continue; }
  60635. /* */ $s = 3; continue;
  60636. /* if (!ok) { */ case 2:
  60637. return false;
  60638. /* } */ case 3:
  60639. if (hs.sessionState.vers > hs.clientHello.vers) {
  60640. return false;
  60641. }
  60642. _tuple$1 = c.config.mutualVersion(hs.sessionState.vers); vers = _tuple$1[0]; ok$1 = _tuple$1[1];
  60643. if (!ok$1 || !((vers === hs.sessionState.vers))) {
  60644. return false;
  60645. }
  60646. cipherSuiteOk = false;
  60647. _ref = hs.clientHello.cipherSuites;
  60648. _i = 0;
  60649. while (true) {
  60650. if (!(_i < _ref.$length)) { break; }
  60651. id = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]);
  60652. if (id === hs.sessionState.cipherSuite) {
  60653. cipherSuiteOk = true;
  60654. break;
  60655. }
  60656. _i++;
  60657. }
  60658. if (!cipherSuiteOk) {
  60659. return false;
  60660. }
  60661. _arg = hs.sessionState.cipherSuite;
  60662. _r$1 = c.config.cipherSuites(); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  60663. _arg$1 = _r$1;
  60664. _arg$2 = hs.sessionState.vers;
  60665. _arg$3 = hs.ellipticOk;
  60666. _arg$4 = hs.ecdsaOk;
  60667. _r$2 = c.tryCipherSuite(_arg, _arg$1, _arg$2, _arg$3, _arg$4); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  60668. hs.suite = _r$2;
  60669. if (hs.suite === ptrType.nil) {
  60670. return false;
  60671. }
  60672. sessionHasClientCerts = !((hs.sessionState.certificates.$length === 0));
  60673. needClientCerts = (c.config.ClientAuth === 2) || (c.config.ClientAuth === 4);
  60674. if (needClientCerts && !sessionHasClientCerts) {
  60675. return false;
  60676. }
  60677. if (sessionHasClientCerts && (c.config.ClientAuth === 0)) {
  60678. return false;
  60679. }
  60680. return true;
  60681. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: serverHandshakeState.ptr.prototype.checkForResumption }; } $f.$ptr = $ptr; $f._arg = _arg; $f._arg$1 = _arg$1; $f._arg$2 = _arg$2; $f._arg$3 = _arg$3; $f._arg$4 = _arg$4; $f._i = _i; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._ref = _ref; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.c = c; $f.cipherSuiteOk = cipherSuiteOk; $f.hs = hs; $f.id = id; $f.needClientCerts = needClientCerts; $f.ok = ok; $f.ok$1 = ok$1; $f.sessionHasClientCerts = sessionHasClientCerts; $f.vers = vers; $f.$s = $s; $f.$r = $r; return $f;
  60682. };
  60683. serverHandshakeState.prototype.checkForResumption = function() { return this.$val.checkForResumption(); };
  60684. serverHandshakeState.ptr.prototype.doResumeHandshake = function() {
  60685. var $ptr, _r, _r$1, _r$2, _tuple, c, err, hs, $s, $r;
  60686. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _tuple = $f._tuple; c = $f.c; err = $f.err; hs = $f.hs; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  60687. hs = this;
  60688. c = hs.c;
  60689. hs.hello.cipherSuite = hs.suite.id;
  60690. hs.hello.sessionId = hs.clientHello.sessionId;
  60691. _r = hs.finishedHash.Write(hs.hello.marshal()); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  60692. _r;
  60693. _r$1 = c.writeRecord(22, hs.hello.marshal()); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  60694. _r$1;
  60695. /* */ if (hs.sessionState.certificates.$length > 0) { $s = 3; continue; }
  60696. /* */ $s = 4; continue;
  60697. /* if (hs.sessionState.certificates.$length > 0) { */ case 3:
  60698. _r$2 = hs.processCertsFromClient(hs.sessionState.certificates); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  60699. _tuple = _r$2; err = _tuple[1];
  60700. /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 6; continue; }
  60701. /* */ $s = 7; continue;
  60702. /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 6:
  60703. return err;
  60704. /* } */ case 7:
  60705. /* } */ case 4:
  60706. hs.masterSecret = hs.sessionState.masterSecret;
  60707. return $ifaceNil;
  60708. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: serverHandshakeState.ptr.prototype.doResumeHandshake }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._tuple = _tuple; $f.c = c; $f.err = err; $f.hs = hs; $f.$s = $s; $f.$r = $r; return $f;
  60709. };
  60710. serverHandshakeState.prototype.doResumeHandshake = function() { return this.$val.doResumeHandshake(); };
  60711. serverHandshakeState.ptr.prototype.doFullHandshake = function() {
  60712. var $ptr, _r, _r$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$16, _r$17, _r$18, _r$19, _r$2, _r$20, _r$21, _r$22, _r$23, _r$24, _r$25, _r$26, _r$27, _r$28, _r$29, _r$3, _r$30, _r$31, _r$32, _r$33, _r$34, _r$35, _r$36, _r$37, _r$38, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _ref$1, _tuple, _tuple$1, _tuple$10, _tuple$11, _tuple$2, _tuple$3, _tuple$4, _tuple$5, _tuple$6, _tuple$7, _tuple$8, _tuple$9, c, certMsg, certReq, certStatus, certVerify, ckx, config, digest, digest$1, ecdsaSig, err, hashFunc, helloDone, hs, key, key$1, keyAgreement$1, msg, ok, ok$1, preMasterSecret, pub, skx, $s, $r;
  60713. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$12 = $f._r$12; _r$13 = $f._r$13; _r$14 = $f._r$14; _r$15 = $f._r$15; _r$16 = $f._r$16; _r$17 = $f._r$17; _r$18 = $f._r$18; _r$19 = $f._r$19; _r$2 = $f._r$2; _r$20 = $f._r$20; _r$21 = $f._r$21; _r$22 = $f._r$22; _r$23 = $f._r$23; _r$24 = $f._r$24; _r$25 = $f._r$25; _r$26 = $f._r$26; _r$27 = $f._r$27; _r$28 = $f._r$28; _r$29 = $f._r$29; _r$3 = $f._r$3; _r$30 = $f._r$30; _r$31 = $f._r$31; _r$32 = $f._r$32; _r$33 = $f._r$33; _r$34 = $f._r$34; _r$35 = $f._r$35; _r$36 = $f._r$36; _r$37 = $f._r$37; _r$38 = $f._r$38; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _r$9 = $f._r$9; _ref = $f._ref; _ref$1 = $f._ref$1; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$10 = $f._tuple$10; _tuple$11 = $f._tuple$11; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; _tuple$4 = $f._tuple$4; _tuple$5 = $f._tuple$5; _tuple$6 = $f._tuple$6; _tuple$7 = $f._tuple$7; _tuple$8 = $f._tuple$8; _tuple$9 = $f._tuple$9; c = $f.c; certMsg = $f.certMsg; certReq = $f.certReq; certStatus = $f.certStatus; certVerify = $f.certVerify; ckx = $f.ckx; config = $f.config; digest = $f.digest; digest$1 = $f.digest$1; ecdsaSig = $f.ecdsaSig; err = $f.err; hashFunc = $f.hashFunc; helloDone = $f.helloDone; hs = $f.hs; key = $f.key; key$1 = $f.key$1; keyAgreement$1 = $f.keyAgreement$1; msg = $f.msg; ok = $f.ok; ok$1 = $f.ok$1; preMasterSecret = $f.preMasterSecret; pub = $f.pub; skx = $f.skx; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  60714. hs = this;
  60715. config = hs.c.config;
  60716. c = hs.c;
  60717. if (hs.clientHello.ocspStapling && hs.cert.OCSPStaple.$length > 0) {
  60718. hs.hello.ocspStapling = true;
  60719. }
  60720. hs.hello.ticketSupported = hs.clientHello.ticketSupported && !config.SessionTicketsDisabled;
  60721. hs.hello.cipherSuite = hs.suite.id;
  60722. _r = hs.finishedHash.Write(hs.hello.marshal()); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  60723. _r;
  60724. _r$1 = c.writeRecord(22, hs.hello.marshal()); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  60725. _r$1;
  60726. certMsg = new certificateMsg.ptr();
  60727. certMsg.certificates = hs.cert.Certificate;
  60728. _r$2 = hs.finishedHash.Write(certMsg.marshal()); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  60729. _r$2;
  60730. _r$3 = c.writeRecord(22, certMsg.marshal()); /* */ $s = 4; case 4: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  60731. _r$3;
  60732. /* */ if (hs.hello.ocspStapling) { $s = 5; continue; }
  60733. /* */ $s = 6; continue;
  60734. /* if (hs.hello.ocspStapling) { */ case 5:
  60735. certStatus = new certificateStatusMsg.ptr();
  60736. certStatus.statusType = 1;
  60737. certStatus.response = hs.cert.OCSPStaple;
  60738. _r$4 = hs.finishedHash.Write(certStatus.marshal()); /* */ $s = 7; case 7: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
  60739. _r$4;
  60740. _r$5 = c.writeRecord(22, certStatus.marshal()); /* */ $s = 8; case 8: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
  60741. _r$5;
  60742. /* } */ case 6:
  60743. _r$6 = hs.suite.ka(c.vers); /* */ $s = 9; case 9: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
  60744. keyAgreement$1 = _r$6;
  60745. _r$7 = keyAgreement$1.generateServerKeyExchange(config, hs.cert, hs.clientHello, hs.hello); /* */ $s = 10; case 10: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
  60746. _tuple = _r$7; skx = _tuple[0]; err = _tuple[1];
  60747. /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 11; continue; }
  60748. /* */ $s = 12; continue;
  60749. /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 11:
  60750. _r$8 = c.sendAlert(40); /* */ $s = 13; case 13: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
  60751. _r$8;
  60752. return err;
  60753. /* } */ case 12:
  60754. /* */ if (!(skx === ptrType$18.nil)) { $s = 14; continue; }
  60755. /* */ $s = 15; continue;
  60756. /* if (!(skx === ptrType$18.nil)) { */ case 14:
  60757. _r$9 = hs.finishedHash.Write(skx.marshal()); /* */ $s = 16; case 16: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
  60758. _r$9;
  60759. _r$10 = c.writeRecord(22, skx.marshal()); /* */ $s = 17; case 17: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
  60760. _r$10;
  60761. /* } */ case 15:
  60762. /* */ if (config.ClientAuth >= 1) { $s = 18; continue; }
  60763. /* */ $s = 19; continue;
  60764. /* if (config.ClientAuth >= 1) { */ case 18:
  60765. certReq = new certificateRequestMsg.ptr();
  60766. certReq.certificateTypes = new sliceType$4([1, 64]);
  60767. if (c.vers >= 771) {
  60768. certReq.hasSignatureAndHash = true;
  60769. certReq.signatureAndHashes = supportedClientCertSignatureAlgorithms;
  60770. }
  60771. if (!(config.ClientCAs === ptrType$14.nil)) {
  60772. certReq.certificateAuthorities = config.ClientCAs.Subjects();
  60773. }
  60774. _r$11 = hs.finishedHash.Write(certReq.marshal()); /* */ $s = 20; case 20: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
  60775. _r$11;
  60776. _r$12 = c.writeRecord(22, certReq.marshal()); /* */ $s = 21; case 21: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; }
  60777. _r$12;
  60778. /* } */ case 19:
  60779. helloDone = new serverHelloDoneMsg.ptr();
  60780. _r$13 = hs.finishedHash.Write(helloDone.marshal()); /* */ $s = 22; case 22: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; }
  60781. _r$13;
  60782. _r$14 = c.writeRecord(22, helloDone.marshal()); /* */ $s = 23; case 23: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; }
  60783. _r$14;
  60784. pub = $ifaceNil;
  60785. _r$15 = c.readHandshake(); /* */ $s = 24; case 24: if($c) { $c = false; _r$15 = _r$15.$blk(); } if (_r$15 && _r$15.$blk !== undefined) { break s; }
  60786. _tuple$1 = _r$15; msg = _tuple$1[0]; err = _tuple$1[1];
  60787. if (!($interfaceIsEqual(err, $ifaceNil))) {
  60788. return err;
  60789. }
  60790. ok = false;
  60791. /* */ if (config.ClientAuth >= 1) { $s = 25; continue; }
  60792. /* */ $s = 26; continue;
  60793. /* if (config.ClientAuth >= 1) { */ case 25:
  60794. _tuple$2 = $assertType(msg, ptrType$12, true); certMsg = _tuple$2[0]; ok = _tuple$2[1];
  60795. /* */ if (!ok) { $s = 27; continue; }
  60796. /* */ $s = 28; continue;
  60797. /* if (!ok) { */ case 27:
  60798. _r$16 = c.sendAlert(10); /* */ $s = 29; case 29: if($c) { $c = false; _r$16 = _r$16.$blk(); } if (_r$16 && _r$16.$blk !== undefined) { break s; }
  60799. _r$16;
  60800. _r$17 = unexpectedMessageError(certMsg, msg); /* */ $s = 30; case 30: if($c) { $c = false; _r$17 = _r$17.$blk(); } if (_r$17 && _r$17.$blk !== undefined) { break s; }
  60801. return _r$17;
  60802. /* } */ case 28:
  60803. _r$18 = hs.finishedHash.Write(certMsg.marshal()); /* */ $s = 31; case 31: if($c) { $c = false; _r$18 = _r$18.$blk(); } if (_r$18 && _r$18.$blk !== undefined) { break s; }
  60804. _r$18;
  60805. /* */ if (certMsg.certificates.$length === 0) { $s = 32; continue; }
  60806. /* */ $s = 33; continue;
  60807. /* if (certMsg.certificates.$length === 0) { */ case 32:
  60808. _ref = config.ClientAuth;
  60809. /* */ if (_ref === 2 || _ref === 4) { $s = 34; continue; }
  60810. /* */ $s = 35; continue;
  60811. /* if (_ref === 2 || _ref === 4) { */ case 34:
  60812. _r$19 = c.sendAlert(42); /* */ $s = 36; case 36: if($c) { $c = false; _r$19 = _r$19.$blk(); } if (_r$19 && _r$19.$blk !== undefined) { break s; }
  60813. _r$19;
  60814. return errors.New("tls: client didn't provide a certificate");
  60815. /* } */ case 35:
  60816. /* } */ case 33:
  60817. _r$20 = hs.processCertsFromClient(certMsg.certificates); /* */ $s = 37; case 37: if($c) { $c = false; _r$20 = _r$20.$blk(); } if (_r$20 && _r$20.$blk !== undefined) { break s; }
  60818. _tuple$3 = _r$20; pub = _tuple$3[0]; err = _tuple$3[1];
  60819. if (!($interfaceIsEqual(err, $ifaceNil))) {
  60820. return err;
  60821. }
  60822. _r$21 = c.readHandshake(); /* */ $s = 38; case 38: if($c) { $c = false; _r$21 = _r$21.$blk(); } if (_r$21 && _r$21.$blk !== undefined) { break s; }
  60823. _tuple$4 = _r$21; msg = _tuple$4[0]; err = _tuple$4[1];
  60824. if (!($interfaceIsEqual(err, $ifaceNil))) {
  60825. return err;
  60826. }
  60827. /* } */ case 26:
  60828. _tuple$5 = $assertType(msg, ptrType$21, true); ckx = _tuple$5[0]; ok = _tuple$5[1];
  60829. /* */ if (!ok) { $s = 39; continue; }
  60830. /* */ $s = 40; continue;
  60831. /* if (!ok) { */ case 39:
  60832. _r$22 = c.sendAlert(10); /* */ $s = 41; case 41: if($c) { $c = false; _r$22 = _r$22.$blk(); } if (_r$22 && _r$22.$blk !== undefined) { break s; }
  60833. _r$22;
  60834. _r$23 = unexpectedMessageError(ckx, msg); /* */ $s = 42; case 42: if($c) { $c = false; _r$23 = _r$23.$blk(); } if (_r$23 && _r$23.$blk !== undefined) { break s; }
  60835. return _r$23;
  60836. /* } */ case 40:
  60837. _r$24 = hs.finishedHash.Write(ckx.marshal()); /* */ $s = 43; case 43: if($c) { $c = false; _r$24 = _r$24.$blk(); } if (_r$24 && _r$24.$blk !== undefined) { break s; }
  60838. _r$24;
  60839. /* */ if (c.peerCertificates.$length > 0) { $s = 44; continue; }
  60840. /* */ $s = 45; continue;
  60841. /* if (c.peerCertificates.$length > 0) { */ case 44:
  60842. _r$25 = c.readHandshake(); /* */ $s = 46; case 46: if($c) { $c = false; _r$25 = _r$25.$blk(); } if (_r$25 && _r$25.$blk !== undefined) { break s; }
  60843. _tuple$6 = _r$25; msg = _tuple$6[0]; err = _tuple$6[1];
  60844. if (!($interfaceIsEqual(err, $ifaceNil))) {
  60845. return err;
  60846. }
  60847. _tuple$7 = $assertType(msg, ptrType$25, true); certVerify = _tuple$7[0]; ok$1 = _tuple$7[1];
  60848. /* */ if (!ok$1) { $s = 47; continue; }
  60849. /* */ $s = 48; continue;
  60850. /* if (!ok$1) { */ case 47:
  60851. _r$26 = c.sendAlert(10); /* */ $s = 49; case 49: if($c) { $c = false; _r$26 = _r$26.$blk(); } if (_r$26 && _r$26.$blk !== undefined) { break s; }
  60852. _r$26;
  60853. _r$27 = unexpectedMessageError(certVerify, msg); /* */ $s = 50; case 50: if($c) { $c = false; _r$27 = _r$27.$blk(); } if (_r$27 && _r$27.$blk !== undefined) { break s; }
  60854. return _r$27;
  60855. /* } */ case 48:
  60856. _ref$1 = pub;
  60857. /* */ if ($assertType(_ref$1, ptrType$16, true)[1]) { $s = 51; continue; }
  60858. /* */ if ($assertType(_ref$1, ptrType$15, true)[1]) { $s = 52; continue; }
  60859. /* */ $s = 53; continue;
  60860. /* switch (0) { default: if ($assertType(_ref$1, ptrType$16, true)[1]) { */ case 51:
  60861. key = _ref$1.$val;
  60862. ecdsaSig = new ecdsaSignature.ptr();
  60863. _r$28 = asn1.Unmarshal(certVerify.signature, ecdsaSig); /* */ $s = 54; case 54: if($c) { $c = false; _r$28 = _r$28.$blk(); } if (_r$28 && _r$28.$blk !== undefined) { break s; }
  60864. _tuple$8 = _r$28; err = _tuple$8[1];
  60865. /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 55; continue; }
  60866. /* */ $s = 56; continue;
  60867. /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 55:
  60868. /* break; */ $s = 53; continue;
  60869. /* } */ case 56:
  60870. if (ecdsaSig.R.Sign() <= 0 || ecdsaSig.S.Sign() <= 0) {
  60871. err = errors.New("ECDSA signature contained zero or negative values");
  60872. /* break; */ $s = 53; continue;
  60873. }
  60874. _r$29 = hs.finishedHash.hashForClientCertificate(3); /* */ $s = 57; case 57: if($c) { $c = false; _r$29 = _r$29.$blk(); } if (_r$29 && _r$29.$blk !== undefined) { break s; }
  60875. _tuple$9 = _r$29; digest = _tuple$9[0];
  60876. _r$30 = ecdsa.Verify(key, digest, ecdsaSig.R, ecdsaSig.S); /* */ $s = 60; case 60: if($c) { $c = false; _r$30 = _r$30.$blk(); } if (_r$30 && _r$30.$blk !== undefined) { break s; }
  60877. /* */ if (!_r$30) { $s = 58; continue; }
  60878. /* */ $s = 59; continue;
  60879. /* if (!_r$30) { */ case 58:
  60880. err = errors.New("ECDSA verification failure");
  60881. /* break; */ $s = 53; continue;
  60882. /* } */ case 59:
  60883. $s = 53; continue;
  60884. /* } else if ($assertType(_ref$1, ptrType$15, true)[1]) { */ case 52:
  60885. key$1 = _ref$1.$val;
  60886. _r$31 = hs.finishedHash.hashForClientCertificate(1); /* */ $s = 61; case 61: if($c) { $c = false; _r$31 = _r$31.$blk(); } if (_r$31 && _r$31.$blk !== undefined) { break s; }
  60887. _tuple$10 = _r$31; digest$1 = _tuple$10[0]; hashFunc = _tuple$10[1];
  60888. err = rsa.VerifyPKCS1v15(key$1, hashFunc, digest$1, certVerify.signature);
  60889. /* } } */ case 53:
  60890. /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 62; continue; }
  60891. /* */ $s = 63; continue;
  60892. /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 62:
  60893. _r$32 = c.sendAlert(42); /* */ $s = 64; case 64: if($c) { $c = false; _r$32 = _r$32.$blk(); } if (_r$32 && _r$32.$blk !== undefined) { break s; }
  60894. _r$32;
  60895. _r$33 = err.Error(); /* */ $s = 65; case 65: if($c) { $c = false; _r$33 = _r$33.$blk(); } if (_r$33 && _r$33.$blk !== undefined) { break s; }
  60896. _r$34 = errors.New("could not validate signature of connection nonces: " + _r$33); /* */ $s = 66; case 66: if($c) { $c = false; _r$34 = _r$34.$blk(); } if (_r$34 && _r$34.$blk !== undefined) { break s; }
  60897. return _r$34;
  60898. /* } */ case 63:
  60899. _r$35 = hs.finishedHash.Write(certVerify.marshal()); /* */ $s = 67; case 67: if($c) { $c = false; _r$35 = _r$35.$blk(); } if (_r$35 && _r$35.$blk !== undefined) { break s; }
  60900. _r$35;
  60901. /* } */ case 45:
  60902. _r$36 = keyAgreement$1.processClientKeyExchange(config, hs.cert, ckx, c.vers); /* */ $s = 68; case 68: if($c) { $c = false; _r$36 = _r$36.$blk(); } if (_r$36 && _r$36.$blk !== undefined) { break s; }
  60903. _tuple$11 = _r$36; preMasterSecret = _tuple$11[0]; err = _tuple$11[1];
  60904. /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 69; continue; }
  60905. /* */ $s = 70; continue;
  60906. /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 69:
  60907. _r$37 = c.sendAlert(40); /* */ $s = 71; case 71: if($c) { $c = false; _r$37 = _r$37.$blk(); } if (_r$37 && _r$37.$blk !== undefined) { break s; }
  60908. _r$37;
  60909. return err;
  60910. /* } */ case 70:
  60911. _r$38 = masterFromPreMasterSecret(c.vers, preMasterSecret, hs.clientHello.random, hs.hello.random); /* */ $s = 72; case 72: if($c) { $c = false; _r$38 = _r$38.$blk(); } if (_r$38 && _r$38.$blk !== undefined) { break s; }
  60912. hs.masterSecret = _r$38;
  60913. return $ifaceNil;
  60914. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: serverHandshakeState.ptr.prototype.doFullHandshake }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$12 = _r$12; $f._r$13 = _r$13; $f._r$14 = _r$14; $f._r$15 = _r$15; $f._r$16 = _r$16; $f._r$17 = _r$17; $f._r$18 = _r$18; $f._r$19 = _r$19; $f._r$2 = _r$2; $f._r$20 = _r$20; $f._r$21 = _r$21; $f._r$22 = _r$22; $f._r$23 = _r$23; $f._r$24 = _r$24; $f._r$25 = _r$25; $f._r$26 = _r$26; $f._r$27 = _r$27; $f._r$28 = _r$28; $f._r$29 = _r$29; $f._r$3 = _r$3; $f._r$30 = _r$30; $f._r$31 = _r$31; $f._r$32 = _r$32; $f._r$33 = _r$33; $f._r$34 = _r$34; $f._r$35 = _r$35; $f._r$36 = _r$36; $f._r$37 = _r$37; $f._r$38 = _r$38; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._r$9 = _r$9; $f._ref = _ref; $f._ref$1 = _ref$1; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$10 = _tuple$10; $f._tuple$11 = _tuple$11; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f._tuple$4 = _tuple$4; $f._tuple$5 = _tuple$5; $f._tuple$6 = _tuple$6; $f._tuple$7 = _tuple$7; $f._tuple$8 = _tuple$8; $f._tuple$9 = _tuple$9; $f.c = c; $f.certMsg = certMsg; $f.certReq = certReq; $f.certStatus = certStatus; $f.certVerify = certVerify; $f.ckx = ckx; $f.config = config; $f.digest = digest; $f.digest$1 = digest$1; $f.ecdsaSig = ecdsaSig; $f.err = err; $f.hashFunc = hashFunc; $f.helloDone = helloDone; $f.hs = hs; $f.key = key; $f.key$1 = key$1; $f.keyAgreement$1 = keyAgreement$1; $f.msg = msg; $f.ok = ok; $f.ok$1 = ok$1; $f.preMasterSecret = preMasterSecret; $f.pub = pub; $f.skx = skx; $f.$s = $s; $f.$r = $r; return $f;
  60915. };
  60916. serverHandshakeState.prototype.doFullHandshake = function() { return this.$val.doFullHandshake(); };
  60917. serverHandshakeState.ptr.prototype.establishKeys = function() {
  60918. var $ptr, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, c, clientCipher, clientHash, clientIV, clientKey, clientMAC, hs, serverCipher, serverHash, serverIV, serverKey, serverMAC, $s, $r;
  60919. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tuple = $f._tuple; c = $f.c; clientCipher = $f.clientCipher; clientHash = $f.clientHash; clientIV = $f.clientIV; clientKey = $f.clientKey; clientMAC = $f.clientMAC; hs = $f.hs; serverCipher = $f.serverCipher; serverHash = $f.serverHash; serverIV = $f.serverIV; serverKey = $f.serverKey; serverMAC = $f.serverMAC; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  60920. hs = this;
  60921. c = hs.c;
  60922. _r = keysFromMasterSecret(c.vers, hs.masterSecret, hs.clientHello.random, hs.hello.random, hs.suite.macLen, hs.suite.keyLen, hs.suite.ivLen); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  60923. _tuple = _r; clientMAC = _tuple[0]; serverMAC = _tuple[1]; clientKey = _tuple[2]; serverKey = _tuple[3]; clientIV = _tuple[4]; serverIV = _tuple[5];
  60924. _tmp = $ifaceNil; _tmp$1 = $ifaceNil; clientCipher = _tmp; serverCipher = _tmp$1;
  60925. _tmp$2 = $ifaceNil; _tmp$3 = $ifaceNil; clientHash = _tmp$2; serverHash = _tmp$3;
  60926. /* */ if (hs.suite.aead === $throwNilPointerError) { $s = 2; continue; }
  60927. /* */ $s = 3; continue;
  60928. /* if (hs.suite.aead === $throwNilPointerError) { */ case 2:
  60929. _r$1 = hs.suite.cipher(clientKey, clientIV, true); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  60930. clientCipher = _r$1;
  60931. _r$2 = hs.suite.mac(c.vers, clientMAC); /* */ $s = 6; case 6: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  60932. clientHash = _r$2;
  60933. _r$3 = hs.suite.cipher(serverKey, serverIV, false); /* */ $s = 7; case 7: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  60934. serverCipher = _r$3;
  60935. _r$4 = hs.suite.mac(c.vers, serverMAC); /* */ $s = 8; case 8: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
  60936. serverHash = _r$4;
  60937. $s = 4; continue;
  60938. /* } else { */ case 3:
  60939. _r$5 = hs.suite.aead(clientKey, clientIV); /* */ $s = 9; case 9: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
  60940. clientCipher = _r$5;
  60941. _r$6 = hs.suite.aead(serverKey, serverIV); /* */ $s = 10; case 10: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
  60942. serverCipher = _r$6;
  60943. /* } */ case 4:
  60944. c.in$17.prepareCipherSpec(c.vers, clientCipher, clientHash);
  60945. c.out.prepareCipherSpec(c.vers, serverCipher, serverHash);
  60946. return $ifaceNil;
  60947. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: serverHandshakeState.ptr.prototype.establishKeys }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tuple = _tuple; $f.c = c; $f.clientCipher = clientCipher; $f.clientHash = clientHash; $f.clientIV = clientIV; $f.clientKey = clientKey; $f.clientMAC = clientMAC; $f.hs = hs; $f.serverCipher = serverCipher; $f.serverHash = serverHash; $f.serverIV = serverIV; $f.serverKey = serverKey; $f.serverMAC = serverMAC; $f.$s = $s; $f.$r = $r; return $f;
  60948. };
  60949. serverHandshakeState.prototype.establishKeys = function() { return this.$val.establishKeys(); };
  60950. serverHandshakeState.ptr.prototype.readFinished = function(out) {
  60951. var $ptr, _r, _r$1, _r$10, _r$11, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _tuple, _tuple$1, _tuple$2, _tuple$3, c, clientFinished, err, err$1, err$2, hs, msg, msg$1, nextProto, ok, ok$1, out, verify, $s, $r;
  60952. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _r$9 = $f._r$9; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; c = $f.c; clientFinished = $f.clientFinished; err = $f.err; err$1 = $f.err$1; err$2 = $f.err$2; hs = $f.hs; msg = $f.msg; msg$1 = $f.msg$1; nextProto = $f.nextProto; ok = $f.ok; ok$1 = $f.ok$1; out = $f.out; verify = $f.verify; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  60953. hs = this;
  60954. c = hs.c;
  60955. _r = c.readRecord(20); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  60956. _r;
  60957. _r$1 = c.in$17.error(); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  60958. err = _r$1;
  60959. /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 3; continue; }
  60960. /* */ $s = 4; continue;
  60961. /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 3:
  60962. return err;
  60963. /* } */ case 4:
  60964. /* */ if (hs.hello.nextProtoNeg) { $s = 5; continue; }
  60965. /* */ $s = 6; continue;
  60966. /* if (hs.hello.nextProtoNeg) { */ case 5:
  60967. _r$2 = c.readHandshake(); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  60968. _tuple = _r$2; msg = _tuple[0]; err$1 = _tuple[1];
  60969. if (!($interfaceIsEqual(err$1, $ifaceNil))) {
  60970. return err$1;
  60971. }
  60972. _tuple$1 = $assertType(msg, ptrType$24, true); nextProto = _tuple$1[0]; ok = _tuple$1[1];
  60973. /* */ if (!ok) { $s = 8; continue; }
  60974. /* */ $s = 9; continue;
  60975. /* if (!ok) { */ case 8:
  60976. _r$3 = c.sendAlert(10); /* */ $s = 10; case 10: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  60977. _r$3;
  60978. _r$4 = unexpectedMessageError(nextProto, msg); /* */ $s = 11; case 11: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
  60979. return _r$4;
  60980. /* } */ case 9:
  60981. _r$5 = hs.finishedHash.Write(nextProto.marshal()); /* */ $s = 12; case 12: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
  60982. _r$5;
  60983. c.clientProtocol = nextProto.proto;
  60984. /* } */ case 6:
  60985. _r$6 = c.readHandshake(); /* */ $s = 13; case 13: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
  60986. _tuple$2 = _r$6; msg$1 = _tuple$2[0]; err$2 = _tuple$2[1];
  60987. if (!($interfaceIsEqual(err$2, $ifaceNil))) {
  60988. return err$2;
  60989. }
  60990. _tuple$3 = $assertType(msg$1, ptrType$22, true); clientFinished = _tuple$3[0]; ok$1 = _tuple$3[1];
  60991. /* */ if (!ok$1) { $s = 14; continue; }
  60992. /* */ $s = 15; continue;
  60993. /* if (!ok$1) { */ case 14:
  60994. _r$7 = c.sendAlert(10); /* */ $s = 16; case 16: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
  60995. _r$7;
  60996. _r$8 = unexpectedMessageError(clientFinished, msg$1); /* */ $s = 17; case 17: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
  60997. return _r$8;
  60998. /* } */ case 15:
  60999. _r$9 = hs.finishedHash.clientSum(hs.masterSecret); /* */ $s = 18; case 18: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
  61000. verify = _r$9;
  61001. /* */ if (!((verify.$length === clientFinished.verifyData.$length)) || !((subtle.ConstantTimeCompare(verify, clientFinished.verifyData) === 1))) { $s = 19; continue; }
  61002. /* */ $s = 20; continue;
  61003. /* if (!((verify.$length === clientFinished.verifyData.$length)) || !((subtle.ConstantTimeCompare(verify, clientFinished.verifyData) === 1))) { */ case 19:
  61004. _r$10 = c.sendAlert(40); /* */ $s = 21; case 21: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
  61005. _r$10;
  61006. return errors.New("tls: client's Finished message is incorrect");
  61007. /* } */ case 20:
  61008. _r$11 = hs.finishedHash.Write(clientFinished.marshal()); /* */ $s = 22; case 22: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
  61009. _r$11;
  61010. $copySlice(out, verify);
  61011. return $ifaceNil;
  61012. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: serverHandshakeState.ptr.prototype.readFinished }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._r$9 = _r$9; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f.c = c; $f.clientFinished = clientFinished; $f.err = err; $f.err$1 = err$1; $f.err$2 = err$2; $f.hs = hs; $f.msg = msg; $f.msg$1 = msg$1; $f.nextProto = nextProto; $f.ok = ok; $f.ok$1 = ok$1; $f.out = out; $f.verify = verify; $f.$s = $s; $f.$r = $r; return $f;
  61013. };
  61014. serverHandshakeState.prototype.readFinished = function(out) { return this.$val.readFinished(out); };
  61015. serverHandshakeState.ptr.prototype.sendSessionTicket = function() {
  61016. var $ptr, _r, _r$1, _r$2, _tuple, c, err, hs, m, state, $s, $r;
  61017. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _tuple = $f._tuple; c = $f.c; err = $f.err; hs = $f.hs; m = $f.m; state = $f.state; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  61018. state = [state];
  61019. hs = this;
  61020. if (!hs.hello.ticketSupported) {
  61021. return $ifaceNil;
  61022. }
  61023. c = hs.c;
  61024. m = new newSessionTicketMsg.ptr();
  61025. err = $ifaceNil;
  61026. state[0] = new sessionState.ptr(c.vers, hs.suite.id, hs.masterSecret, hs.certsFromClient);
  61027. _r = c.encryptTicket(state[0]); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  61028. _tuple = _r; m.ticket = _tuple[0]; err = _tuple[1];
  61029. if (!($interfaceIsEqual(err, $ifaceNil))) {
  61030. return err;
  61031. }
  61032. _r$1 = hs.finishedHash.Write(m.marshal()); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  61033. _r$1;
  61034. _r$2 = c.writeRecord(22, m.marshal()); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  61035. _r$2;
  61036. return $ifaceNil;
  61037. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: serverHandshakeState.ptr.prototype.sendSessionTicket }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._tuple = _tuple; $f.c = c; $f.err = err; $f.hs = hs; $f.m = m; $f.state = state; $f.$s = $s; $f.$r = $r; return $f;
  61038. };
  61039. serverHandshakeState.prototype.sendSessionTicket = function() { return this.$val.sendSessionTicket(); };
  61040. serverHandshakeState.ptr.prototype.sendFinished = function(out) {
  61041. var $ptr, _r, _r$1, _r$2, _r$3, c, finished, hs, out, $s, $r;
  61042. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; c = $f.c; finished = $f.finished; hs = $f.hs; out = $f.out; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  61043. hs = this;
  61044. c = hs.c;
  61045. _r = c.writeRecord(20, new sliceType$4([1])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  61046. _r;
  61047. finished = new finishedMsg.ptr();
  61048. _r$1 = hs.finishedHash.serverSum(hs.masterSecret); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  61049. finished.verifyData = _r$1;
  61050. _r$2 = hs.finishedHash.Write(finished.marshal()); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  61051. _r$2;
  61052. _r$3 = c.writeRecord(22, finished.marshal()); /* */ $s = 4; case 4: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  61053. _r$3;
  61054. c.cipherSuite = hs.suite.id;
  61055. $copySlice(out, finished.verifyData);
  61056. return $ifaceNil;
  61057. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: serverHandshakeState.ptr.prototype.sendFinished }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f.c = c; $f.finished = finished; $f.hs = hs; $f.out = out; $f.$s = $s; $f.$r = $r; return $f;
  61058. };
  61059. serverHandshakeState.prototype.sendFinished = function(out) { return this.$val.sendFinished(out); };
  61060. serverHandshakeState.ptr.prototype.processCertsFromClient = function(certificates) {
  61061. var $ptr, _i, _i$1, _i$2, _r, _r$1, _r$10, _r$11, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _ref$1, _ref$2, _ref$3, _tuple, _tuple$1, asn1Data, c, cert, certificates, certs, chains, err, err$1, hs, i, key, key$1, ku, ok, opts, pub, $s, $r;
  61062. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _i = $f._i; _i$1 = $f._i$1; _i$2 = $f._i$2; _r = $f._r; _r$1 = $f._r$1; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _r$9 = $f._r$9; _ref = $f._ref; _ref$1 = $f._ref$1; _ref$2 = $f._ref$2; _ref$3 = $f._ref$3; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; asn1Data = $f.asn1Data; c = $f.c; cert = $f.cert; certificates = $f.certificates; certs = $f.certs; chains = $f.chains; err = $f.err; err$1 = $f.err$1; hs = $f.hs; i = $f.i; key = $f.key; key$1 = $f.key$1; ku = $f.ku; ok = $f.ok; opts = $f.opts; pub = $f.pub; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  61063. hs = this;
  61064. c = hs.c;
  61065. hs.certsFromClient = certificates;
  61066. certs = $makeSlice(sliceType$8, certificates.$length);
  61067. err = $ifaceNil;
  61068. _ref = certificates;
  61069. _i = 0;
  61070. /* while (true) { */ case 1:
  61071. /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; }
  61072. i = _i;
  61073. asn1Data = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]);
  61074. _r = x509.ParseCertificate(asn1Data); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  61075. _tuple = _r; ((i < 0 || i >= certs.$length) ? $throwRuntimeError("index out of range") : certs.$array[certs.$offset + i] = _tuple[0]); err = _tuple[1];
  61076. /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 4; continue; }
  61077. /* */ $s = 5; continue;
  61078. /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 4:
  61079. _r$1 = c.sendAlert(42); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  61080. _r$1;
  61081. _r$2 = err.Error(); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  61082. _r$3 = errors.New("tls: failed to parse client certificate: " + _r$2); /* */ $s = 8; case 8: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  61083. return [$ifaceNil, _r$3];
  61084. /* } */ case 5:
  61085. _i++;
  61086. /* } */ $s = 1; continue; case 2:
  61087. /* */ if (c.config.ClientAuth >= 3 && certs.$length > 0) { $s = 9; continue; }
  61088. /* */ $s = 10; continue;
  61089. /* if (c.config.ClientAuth >= 3 && certs.$length > 0) { */ case 9:
  61090. _r$4 = c.config.time(); /* */ $s = 11; case 11: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
  61091. opts = new x509.VerifyOptions.ptr("", x509.NewCertPool(), c.config.ClientCAs, $clone(_r$4, time.Time), new sliceType$9([2]));
  61092. _ref$1 = $subslice(certs, 1);
  61093. _i$1 = 0;
  61094. while (true) {
  61095. if (!(_i$1 < _ref$1.$length)) { break; }
  61096. cert = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? $throwRuntimeError("index out of range") : _ref$1.$array[_ref$1.$offset + _i$1]);
  61097. opts.Intermediates.AddCert(cert);
  61098. _i$1++;
  61099. }
  61100. _r$5 = (0 >= certs.$length ? $throwRuntimeError("index out of range") : certs.$array[certs.$offset + 0]).Verify(opts); /* */ $s = 12; case 12: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
  61101. _tuple$1 = _r$5; chains = _tuple$1[0]; err$1 = _tuple$1[1];
  61102. /* */ if (!($interfaceIsEqual(err$1, $ifaceNil))) { $s = 13; continue; }
  61103. /* */ $s = 14; continue;
  61104. /* if (!($interfaceIsEqual(err$1, $ifaceNil))) { */ case 13:
  61105. _r$6 = c.sendAlert(42); /* */ $s = 15; case 15: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
  61106. _r$6;
  61107. _r$7 = err$1.Error(); /* */ $s = 16; case 16: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
  61108. _r$8 = errors.New("tls: failed to verify client's certificate: " + _r$7); /* */ $s = 17; case 17: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
  61109. return [$ifaceNil, _r$8];
  61110. /* } */ case 14:
  61111. ok = false;
  61112. _ref$2 = (0 >= certs.$length ? $throwRuntimeError("index out of range") : certs.$array[certs.$offset + 0]).ExtKeyUsage;
  61113. _i$2 = 0;
  61114. while (true) {
  61115. if (!(_i$2 < _ref$2.$length)) { break; }
  61116. ku = ((_i$2 < 0 || _i$2 >= _ref$2.$length) ? $throwRuntimeError("index out of range") : _ref$2.$array[_ref$2.$offset + _i$2]);
  61117. if (ku === 2) {
  61118. ok = true;
  61119. break;
  61120. }
  61121. _i$2++;
  61122. }
  61123. /* */ if (!ok) { $s = 18; continue; }
  61124. /* */ $s = 19; continue;
  61125. /* if (!ok) { */ case 18:
  61126. _r$9 = c.sendAlert(40); /* */ $s = 20; case 20: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
  61127. _r$9;
  61128. return [$ifaceNil, errors.New("tls: client's certificate's extended key usage doesn't permit it to be used for client authentication")];
  61129. /* } */ case 19:
  61130. c.verifiedChains = chains;
  61131. /* } */ case 10:
  61132. /* */ if (certs.$length > 0) { $s = 21; continue; }
  61133. /* */ $s = 22; continue;
  61134. /* if (certs.$length > 0) { */ case 21:
  61135. pub = $ifaceNil;
  61136. _ref$3 = (0 >= certs.$length ? $throwRuntimeError("index out of range") : certs.$array[certs.$offset + 0]).PublicKey;
  61137. /* */ if ($assertType(_ref$3, ptrType$16, true)[1] || $assertType(_ref$3, ptrType$15, true)[1]) { $s = 23; continue; }
  61138. /* */ $s = 24; continue;
  61139. /* if ($assertType(_ref$3, ptrType$16, true)[1] || $assertType(_ref$3, ptrType$15, true)[1]) { */ case 23:
  61140. key = _ref$3;
  61141. pub = key;
  61142. $s = 25; continue;
  61143. /* } else { */ case 24:
  61144. key$1 = _ref$3;
  61145. _r$10 = c.sendAlert(43); /* */ $s = 26; case 26: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
  61146. _r$10;
  61147. _r$11 = fmt.Errorf("tls: client's certificate contains an unsupported public key of type %T", new sliceType$5([(0 >= certs.$length ? $throwRuntimeError("index out of range") : certs.$array[certs.$offset + 0]).PublicKey])); /* */ $s = 27; case 27: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
  61148. return [$ifaceNil, _r$11];
  61149. /* } */ case 25:
  61150. c.peerCertificates = certs;
  61151. return [pub, $ifaceNil];
  61152. /* } */ case 22:
  61153. return [$ifaceNil, $ifaceNil];
  61154. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: serverHandshakeState.ptr.prototype.processCertsFromClient }; } $f.$ptr = $ptr; $f._i = _i; $f._i$1 = _i$1; $f._i$2 = _i$2; $f._r = _r; $f._r$1 = _r$1; $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._r$9 = _r$9; $f._ref = _ref; $f._ref$1 = _ref$1; $f._ref$2 = _ref$2; $f._ref$3 = _ref$3; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.asn1Data = asn1Data; $f.c = c; $f.cert = cert; $f.certificates = certificates; $f.certs = certs; $f.chains = chains; $f.err = err; $f.err$1 = err$1; $f.hs = hs; $f.i = i; $f.key = key; $f.key$1 = key$1; $f.ku = ku; $f.ok = ok; $f.opts = opts; $f.pub = pub; $f.$s = $s; $f.$r = $r; return $f;
  61155. };
  61156. serverHandshakeState.prototype.processCertsFromClient = function(certificates) { return this.$val.processCertsFromClient(certificates); };
  61157. Conn.ptr.prototype.tryCipherSuite = function(id, supportedCipherSuites, version, ellipticOk, ecdsaOk) {
  61158. var $ptr, _i, _i$1, _ref, _ref$1, c, candidate, ecdsaOk, ellipticOk, id, s, supported, supportedCipherSuites, version;
  61159. c = this;
  61160. _ref = supportedCipherSuites;
  61161. _i = 0;
  61162. while (true) {
  61163. if (!(_i < _ref.$length)) { break; }
  61164. supported = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]);
  61165. if (id === supported) {
  61166. candidate = ptrType.nil;
  61167. _ref$1 = cipherSuites;
  61168. _i$1 = 0;
  61169. while (true) {
  61170. if (!(_i$1 < _ref$1.$length)) { break; }
  61171. s = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? $throwRuntimeError("index out of range") : _ref$1.$array[_ref$1.$offset + _i$1]);
  61172. if (s.id === id) {
  61173. candidate = s;
  61174. break;
  61175. }
  61176. _i$1++;
  61177. }
  61178. if (candidate === ptrType.nil) {
  61179. _i++;
  61180. continue;
  61181. }
  61182. if ((!(((candidate.flags & 1) === 0))) && !ellipticOk) {
  61183. _i++;
  61184. continue;
  61185. }
  61186. if (!((!(((candidate.flags & 2) === 0))) === ecdsaOk)) {
  61187. _i++;
  61188. continue;
  61189. }
  61190. if (version < 771 && !(((candidate.flags & 4) === 0))) {
  61191. _i++;
  61192. continue;
  61193. }
  61194. return candidate;
  61195. }
  61196. _i++;
  61197. }
  61198. return ptrType.nil;
  61199. };
  61200. Conn.prototype.tryCipherSuite = function(id, supportedCipherSuites, version, ellipticOk, ecdsaOk) { return this.$val.tryCipherSuite(id, supportedCipherSuites, version, ellipticOk, ecdsaOk); };
  61201. rsaKeyAgreement.ptr.prototype.generateServerKeyExchange = function(config, cert, clientHello, hello) {
  61202. var $ptr, cert, clientHello, config, hello, ka;
  61203. ka = $clone(this, rsaKeyAgreement);
  61204. return [ptrType$18.nil, $ifaceNil];
  61205. };
  61206. rsaKeyAgreement.prototype.generateServerKeyExchange = function(config, cert, clientHello, hello) { return this.$val.generateServerKeyExchange(config, cert, clientHello, hello); };
  61207. rsaKeyAgreement.ptr.prototype.processClientKeyExchange = function(config, cert, ckx, version) {
  61208. var $ptr, _r, _r$1, _tuple, cert, ciphertext, ciphertextLen, ckx, config, err, ka, preMasterSecret, version, x, x$1, $s, $r;
  61209. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _tuple = $f._tuple; cert = $f.cert; ciphertext = $f.ciphertext; ciphertextLen = $f.ciphertextLen; ckx = $f.ckx; config = $f.config; err = $f.err; ka = $f.ka; preMasterSecret = $f.preMasterSecret; version = $f.version; x = $f.x; x$1 = $f.x$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  61210. ka = $clone(this, rsaKeyAgreement);
  61211. preMasterSecret = $makeSlice(sliceType$4, 48);
  61212. _r = io.ReadFull(config.rand(), $subslice(preMasterSecret, 2)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  61213. _tuple = _r; err = _tuple[1];
  61214. if (!($interfaceIsEqual(err, $ifaceNil))) {
  61215. return [sliceType$4.nil, err];
  61216. }
  61217. if (ckx.ciphertext.$length < 2) {
  61218. return [sliceType$4.nil, errClientKeyExchange];
  61219. }
  61220. ciphertext = ckx.ciphertext;
  61221. if (!((version === 768))) {
  61222. ciphertextLen = (((x = ckx.ciphertext, (0 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 0])) >> 0) << 8 >> 0) | ((x$1 = ckx.ciphertext, (1 >= x$1.$length ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + 1])) >> 0);
  61223. if (!((ciphertextLen === (ckx.ciphertext.$length - 2 >> 0)))) {
  61224. return [sliceType$4.nil, errClientKeyExchange];
  61225. }
  61226. ciphertext = $subslice(ckx.ciphertext, 2);
  61227. }
  61228. _r$1 = rsa.DecryptPKCS1v15SessionKey(config.rand(), $assertType(cert.PrivateKey, ptrType$28), ciphertext, preMasterSecret); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  61229. err = _r$1;
  61230. if (!($interfaceIsEqual(err, $ifaceNil))) {
  61231. return [sliceType$4.nil, err];
  61232. }
  61233. return [preMasterSecret, $ifaceNil];
  61234. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: rsaKeyAgreement.ptr.prototype.processClientKeyExchange }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._tuple = _tuple; $f.cert = cert; $f.ciphertext = ciphertext; $f.ciphertextLen = ciphertextLen; $f.ckx = ckx; $f.config = config; $f.err = err; $f.ka = ka; $f.preMasterSecret = preMasterSecret; $f.version = version; $f.x = x; $f.x$1 = x$1; $f.$s = $s; $f.$r = $r; return $f;
  61235. };
  61236. rsaKeyAgreement.prototype.processClientKeyExchange = function(config, cert, ckx, version) { return this.$val.processClientKeyExchange(config, cert, ckx, version); };
  61237. rsaKeyAgreement.ptr.prototype.processServerKeyExchange = function(config, clientHello, serverHello, cert, skx) {
  61238. var $ptr, cert, clientHello, config, ka, serverHello, skx;
  61239. ka = $clone(this, rsaKeyAgreement);
  61240. return errors.New("tls: unexpected ServerKeyExchange");
  61241. };
  61242. rsaKeyAgreement.prototype.processServerKeyExchange = function(config, clientHello, serverHello, cert, skx) { return this.$val.processServerKeyExchange(config, clientHello, serverHello, cert, skx); };
  61243. rsaKeyAgreement.ptr.prototype.generateClientKeyExchange = function(config, clientHello, cert) {
  61244. var $ptr, _r, _r$1, _tuple, _tuple$1, cert, ckx, clientHello, config, encrypted, err, ka, preMasterSecret, x, x$1, $s, $r;
  61245. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; cert = $f.cert; ckx = $f.ckx; clientHello = $f.clientHello; config = $f.config; encrypted = $f.encrypted; err = $f.err; ka = $f.ka; preMasterSecret = $f.preMasterSecret; x = $f.x; x$1 = $f.x$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  61246. ka = $clone(this, rsaKeyAgreement);
  61247. preMasterSecret = $makeSlice(sliceType$4, 48);
  61248. (0 >= preMasterSecret.$length ? $throwRuntimeError("index out of range") : preMasterSecret.$array[preMasterSecret.$offset + 0] = ((clientHello.vers >>> 8 << 16 >>> 16) << 24 >>> 24));
  61249. (1 >= preMasterSecret.$length ? $throwRuntimeError("index out of range") : preMasterSecret.$array[preMasterSecret.$offset + 1] = (clientHello.vers << 24 >>> 24));
  61250. _r = io.ReadFull(config.rand(), $subslice(preMasterSecret, 2)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  61251. _tuple = _r; err = _tuple[1];
  61252. if (!($interfaceIsEqual(err, $ifaceNil))) {
  61253. return [sliceType$4.nil, ptrType$21.nil, err];
  61254. }
  61255. _r$1 = rsa.EncryptPKCS1v15(config.rand(), $assertType(cert.PublicKey, ptrType$15), preMasterSecret); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  61256. _tuple$1 = _r$1; encrypted = _tuple$1[0]; err = _tuple$1[1];
  61257. if (!($interfaceIsEqual(err, $ifaceNil))) {
  61258. return [sliceType$4.nil, ptrType$21.nil, err];
  61259. }
  61260. ckx = new clientKeyExchangeMsg.ptr();
  61261. ckx.ciphertext = $makeSlice(sliceType$4, (encrypted.$length + 2 >> 0));
  61262. (x = ckx.ciphertext, (0 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 0] = ((encrypted.$length >> 8 >> 0) << 24 >>> 24)));
  61263. (x$1 = ckx.ciphertext, (1 >= x$1.$length ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + 1] = (encrypted.$length << 24 >>> 24)));
  61264. $copySlice($subslice(ckx.ciphertext, 2), encrypted);
  61265. return [preMasterSecret, ckx, $ifaceNil];
  61266. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: rsaKeyAgreement.ptr.prototype.generateClientKeyExchange }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.cert = cert; $f.ckx = ckx; $f.clientHello = clientHello; $f.config = config; $f.encrypted = encrypted; $f.err = err; $f.ka = ka; $f.preMasterSecret = preMasterSecret; $f.x = x; $f.x$1 = x$1; $f.$s = $s; $f.$r = $r; return $f;
  61267. };
  61268. rsaKeyAgreement.prototype.generateClientKeyExchange = function(config, clientHello, cert) { return this.$val.generateClientKeyExchange(config, clientHello, cert); };
  61269. sha1Hash = function(slices) {
  61270. var $ptr, _i, _r, _r$1, _ref, hsha1, slice, slices, $s, $r;
  61271. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _i = $f._i; _r = $f._r; _r$1 = $f._r$1; _ref = $f._ref; hsha1 = $f.hsha1; slice = $f.slice; slices = $f.slices; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  61272. hsha1 = sha1.New();
  61273. _ref = slices;
  61274. _i = 0;
  61275. /* while (true) { */ case 1:
  61276. /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; }
  61277. slice = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]);
  61278. _r = hsha1.Write(slice); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  61279. _r;
  61280. _i++;
  61281. /* } */ $s = 1; continue; case 2:
  61282. _r$1 = hsha1.Sum(sliceType$4.nil); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  61283. return _r$1;
  61284. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: sha1Hash }; } $f.$ptr = $ptr; $f._i = _i; $f._r = _r; $f._r$1 = _r$1; $f._ref = _ref; $f.hsha1 = hsha1; $f.slice = slice; $f.slices = slices; $f.$s = $s; $f.$r = $r; return $f;
  61285. };
  61286. md5SHA1Hash = function(slices) {
  61287. var $ptr, _i, _r, _r$1, _r$2, _ref, hmd5, md5sha1, slice, slices, $s, $r;
  61288. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _i = $f._i; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _ref = $f._ref; hmd5 = $f.hmd5; md5sha1 = $f.md5sha1; slice = $f.slice; slices = $f.slices; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  61289. md5sha1 = $makeSlice(sliceType$4, 36);
  61290. hmd5 = md5.New();
  61291. _ref = slices;
  61292. _i = 0;
  61293. /* while (true) { */ case 1:
  61294. /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; }
  61295. slice = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]);
  61296. _r = hmd5.Write(slice); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  61297. _r;
  61298. _i++;
  61299. /* } */ $s = 1; continue; case 2:
  61300. _r$1 = hmd5.Sum(sliceType$4.nil); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  61301. $copySlice(md5sha1, _r$1);
  61302. _r$2 = sha1Hash(slices); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  61303. $copySlice($subslice(md5sha1, 16), _r$2);
  61304. return md5sha1;
  61305. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: md5SHA1Hash }; } $f.$ptr = $ptr; $f._i = _i; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._ref = _ref; $f.hmd5 = hmd5; $f.md5sha1 = md5sha1; $f.slice = slice; $f.slices = slices; $f.$s = $s; $f.$r = $r; return $f;
  61306. };
  61307. sha256Hash = function(slices) {
  61308. var $ptr, _i, _r, _r$1, _ref, h, slice, slices, $s, $r;
  61309. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _i = $f._i; _r = $f._r; _r$1 = $f._r$1; _ref = $f._ref; h = $f.h; slice = $f.slice; slices = $f.slices; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  61310. h = sha256.New();
  61311. _ref = slices;
  61312. _i = 0;
  61313. /* while (true) { */ case 1:
  61314. /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; }
  61315. slice = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]);
  61316. _r = h.Write(slice); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  61317. _r;
  61318. _i++;
  61319. /* } */ $s = 1; continue; case 2:
  61320. _r$1 = h.Sum(sliceType$4.nil); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  61321. return _r$1;
  61322. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: sha256Hash }; } $f.$ptr = $ptr; $f._i = _i; $f._r = _r; $f._r$1 = _r$1; $f._ref = _ref; $f.h = h; $f.slice = slice; $f.slices = slices; $f.$s = $s; $f.$r = $r; return $f;
  61323. };
  61324. hashForServerKeyExchange = function(sigType, hashFunc, version, slices) {
  61325. var $ptr, _r, _r$1, _r$2, _r$3, _ref, hashFunc, sigType, slices, version, $s, $r;
  61326. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _ref = $f._ref; hashFunc = $f.hashFunc; sigType = $f.sigType; slices = $f.slices; version = $f.version; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  61327. /* */ if (version >= 771) { $s = 1; continue; }
  61328. /* */ $s = 2; continue;
  61329. /* if (version >= 771) { */ case 1:
  61330. _ref = hashFunc;
  61331. /* */ if (_ref === 4) { $s = 3; continue; }
  61332. /* */ if (_ref === 2) { $s = 4; continue; }
  61333. /* */ $s = 5; continue;
  61334. /* if (_ref === 4) { */ case 3:
  61335. _r = sha256Hash(slices); /* */ $s = 7; case 7: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  61336. return [_r, 5, $ifaceNil];
  61337. $s = 6; continue;
  61338. /* } else if (_ref === 2) { */ case 4:
  61339. _r$1 = sha1Hash(slices); /* */ $s = 8; case 8: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  61340. return [_r$1, 3, $ifaceNil];
  61341. $s = 6; continue;
  61342. /* } else { */ case 5:
  61343. return [sliceType$4.nil, 0, errors.New("tls: unknown hash function used by peer")];
  61344. /* } */ case 6:
  61345. /* } */ case 2:
  61346. /* */ if (sigType === 3) { $s = 9; continue; }
  61347. /* */ $s = 10; continue;
  61348. /* if (sigType === 3) { */ case 9:
  61349. _r$2 = sha1Hash(slices); /* */ $s = 11; case 11: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  61350. return [_r$2, 3, $ifaceNil];
  61351. /* } */ case 10:
  61352. _r$3 = md5SHA1Hash(slices); /* */ $s = 12; case 12: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  61353. return [_r$3, 8, $ifaceNil];
  61354. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: hashForServerKeyExchange }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._ref = _ref; $f.hashFunc = hashFunc; $f.sigType = sigType; $f.slices = slices; $f.version = version; $f.$s = $s; $f.$r = $r; return $f;
  61355. };
  61356. pickTLS12HashForSignature = function(sigType, clientSignatureAndHashes) {
  61357. var $ptr, _i, _ref, _ref$1, clientSignatureAndHashes, sigAndHash, sigType;
  61358. if (clientSignatureAndHashes.$length === 0) {
  61359. return [2, $ifaceNil];
  61360. }
  61361. _ref = clientSignatureAndHashes;
  61362. _i = 0;
  61363. while (true) {
  61364. if (!(_i < _ref.$length)) { break; }
  61365. sigAndHash = $clone(((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]), signatureAndHash);
  61366. if (!((sigAndHash.signature === sigType))) {
  61367. _i++;
  61368. continue;
  61369. }
  61370. _ref$1 = sigAndHash.hash;
  61371. if (_ref$1 === 2 || _ref$1 === 4) {
  61372. return [sigAndHash.hash, $ifaceNil];
  61373. }
  61374. _i++;
  61375. }
  61376. return [0, errors.New("tls: client doesn't support any common hash functions")];
  61377. };
  61378. curveForCurveID = function(id) {
  61379. var $ptr, _r, _r$1, _r$2, _ref, id, $s, $r;
  61380. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _ref = $f._ref; id = $f.id; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  61381. _ref = id;
  61382. /* */ if (_ref === 23) { $s = 1; continue; }
  61383. /* */ if (_ref === 24) { $s = 2; continue; }
  61384. /* */ if (_ref === 25) { $s = 3; continue; }
  61385. /* */ $s = 4; continue;
  61386. /* if (_ref === 23) { */ case 1:
  61387. _r = elliptic.P256(); /* */ $s = 6; case 6: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  61388. return [_r, true];
  61389. $s = 5; continue;
  61390. /* } else if (_ref === 24) { */ case 2:
  61391. _r$1 = elliptic.P384(); /* */ $s = 7; case 7: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  61392. return [_r$1, true];
  61393. $s = 5; continue;
  61394. /* } else if (_ref === 25) { */ case 3:
  61395. _r$2 = elliptic.P521(); /* */ $s = 8; case 8: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  61396. return [_r$2, true];
  61397. $s = 5; continue;
  61398. /* } else { */ case 4:
  61399. return [$ifaceNil, false];
  61400. /* } */ case 5:
  61401. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: curveForCurveID }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._ref = _ref; $f.id = id; $f.$s = $s; $f.$r = $r; return $f;
  61402. };
  61403. ecdheKeyAgreement.ptr.prototype.generateServerKeyExchange = function(config, cert, clientHello, hello) {
  61404. var $ptr, _i, _i$1, _r, _r$1, _r$10, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _ref$1, _ref$2, _tmp, _tmp$1, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, _tuple$6, _tuple$7, _tuple$8, c, candidate, cert, clientHello, config, curveid, digest, ecdhePublic, err, err$1, hashFunc, hello, k, ka, ok, ok$1, ok$2, preferredCurves, privKey, privKey$1, r, s, serverECDHParams, sig, sigAndHashLen, skx, tls12HashId, x, x$1, y, $s, $r;
  61405. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _i = $f._i; _i$1 = $f._i$1; _r = $f._r; _r$1 = $f._r$1; _r$10 = $f._r$10; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _r$9 = $f._r$9; _ref = $f._ref; _ref$1 = $f._ref$1; _ref$2 = $f._ref$2; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; _tuple$4 = $f._tuple$4; _tuple$5 = $f._tuple$5; _tuple$6 = $f._tuple$6; _tuple$7 = $f._tuple$7; _tuple$8 = $f._tuple$8; c = $f.c; candidate = $f.candidate; cert = $f.cert; clientHello = $f.clientHello; config = $f.config; curveid = $f.curveid; digest = $f.digest; ecdhePublic = $f.ecdhePublic; err = $f.err; err$1 = $f.err$1; hashFunc = $f.hashFunc; hello = $f.hello; k = $f.k; ka = $f.ka; ok = $f.ok; ok$1 = $f.ok$1; ok$2 = $f.ok$2; preferredCurves = $f.preferredCurves; privKey = $f.privKey; privKey$1 = $f.privKey$1; r = $f.r; s = $f.s; serverECDHParams = $f.serverECDHParams; sig = $f.sig; sigAndHashLen = $f.sigAndHashLen; skx = $f.skx; tls12HashId = $f.tls12HashId; x = $f.x; x$1 = $f.x$1; y = $f.y; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  61406. ka = this;
  61407. curveid = 0;
  61408. preferredCurves = config.curvePreferences();
  61409. _ref = preferredCurves;
  61410. _i = 0;
  61411. NextCandidate:
  61412. while (true) {
  61413. if (!(_i < _ref.$length)) { break; }
  61414. candidate = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]);
  61415. _ref$1 = clientHello.supportedCurves;
  61416. _i$1 = 0;
  61417. while (true) {
  61418. if (!(_i$1 < _ref$1.$length)) { break; }
  61419. c = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? $throwRuntimeError("index out of range") : _ref$1.$array[_ref$1.$offset + _i$1]);
  61420. if (candidate === c) {
  61421. curveid = c;
  61422. break NextCandidate;
  61423. }
  61424. _i$1++;
  61425. }
  61426. _i++;
  61427. }
  61428. if (curveid === 0) {
  61429. return [ptrType$18.nil, errors.New("tls: no supported elliptic curves offered")];
  61430. }
  61431. ok = false;
  61432. _r = curveForCurveID(curveid); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  61433. _tuple = _r; ka.curve = _tuple[0]; ok = _tuple[1];
  61434. /* */ if (!ok) { $s = 2; continue; }
  61435. /* */ $s = 3; continue;
  61436. /* if (!ok) { */ case 2:
  61437. return [ptrType$18.nil, errors.New("tls: preferredCurves includes unsupported curve")];
  61438. /* } */ case 3:
  61439. _tmp = ptrType$1.nil; _tmp$1 = ptrType$1.nil; x = _tmp; y = _tmp$1;
  61440. err = $ifaceNil;
  61441. _r$1 = elliptic.GenerateKey(ka.curve, config.rand()); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  61442. _tuple$1 = _r$1; ka.privateKey = _tuple$1[0]; x = _tuple$1[1]; y = _tuple$1[2]; err = _tuple$1[3];
  61443. if (!($interfaceIsEqual(err, $ifaceNil))) {
  61444. return [ptrType$18.nil, err];
  61445. }
  61446. _r$2 = elliptic.Marshal(ka.curve, x, y); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  61447. ecdhePublic = _r$2;
  61448. serverECDHParams = $makeSlice(sliceType$4, (4 + ecdhePublic.$length >> 0));
  61449. (0 >= serverECDHParams.$length ? $throwRuntimeError("index out of range") : serverECDHParams.$array[serverECDHParams.$offset + 0] = 3);
  61450. (1 >= serverECDHParams.$length ? $throwRuntimeError("index out of range") : serverECDHParams.$array[serverECDHParams.$offset + 1] = ((curveid >>> 8 << 16 >>> 16) << 24 >>> 24));
  61451. (2 >= serverECDHParams.$length ? $throwRuntimeError("index out of range") : serverECDHParams.$array[serverECDHParams.$offset + 2] = (curveid << 24 >>> 24));
  61452. (3 >= serverECDHParams.$length ? $throwRuntimeError("index out of range") : serverECDHParams.$array[serverECDHParams.$offset + 3] = (ecdhePublic.$length << 24 >>> 24));
  61453. $copySlice($subslice(serverECDHParams, 4), ecdhePublic);
  61454. tls12HashId = 0;
  61455. if (ka.version >= 771) {
  61456. _tuple$2 = pickTLS12HashForSignature(ka.sigType, clientHello.signatureAndHashes); tls12HashId = _tuple$2[0]; err = _tuple$2[1];
  61457. if (!($interfaceIsEqual(err, $ifaceNil))) {
  61458. return [ptrType$18.nil, err];
  61459. }
  61460. }
  61461. _r$3 = hashForServerKeyExchange(ka.sigType, tls12HashId, ka.version, new sliceType$6([clientHello.random, hello.random, serverECDHParams])); /* */ $s = 6; case 6: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  61462. _tuple$3 = _r$3; digest = _tuple$3[0]; hashFunc = _tuple$3[1]; err = _tuple$3[2];
  61463. if (!($interfaceIsEqual(err, $ifaceNil))) {
  61464. return [ptrType$18.nil, err];
  61465. }
  61466. sig = sliceType$4.nil;
  61467. _ref$2 = ka.sigType;
  61468. /* */ if (_ref$2 === 3) { $s = 7; continue; }
  61469. /* */ if (_ref$2 === 1) { $s = 8; continue; }
  61470. /* */ $s = 9; continue;
  61471. /* if (_ref$2 === 3) { */ case 7:
  61472. _tuple$4 = $assertType(cert.PrivateKey, ptrType$27, true); privKey = _tuple$4[0]; ok$1 = _tuple$4[1];
  61473. if (!ok$1) {
  61474. return [ptrType$18.nil, errors.New("ECDHE ECDSA requires an ECDSA server private key")];
  61475. }
  61476. _r$4 = ecdsa.Sign(config.rand(), privKey, digest); /* */ $s = 11; case 11: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
  61477. _tuple$5 = _r$4; r = _tuple$5[0]; s = _tuple$5[1]; err$1 = _tuple$5[2];
  61478. /* */ if (!($interfaceIsEqual(err$1, $ifaceNil))) { $s = 12; continue; }
  61479. /* */ $s = 13; continue;
  61480. /* if (!($interfaceIsEqual(err$1, $ifaceNil))) { */ case 12:
  61481. _r$5 = err$1.Error(); /* */ $s = 14; case 14: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
  61482. _r$6 = errors.New("failed to sign ECDHE parameters: " + _r$5); /* */ $s = 15; case 15: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
  61483. return [ptrType$18.nil, _r$6];
  61484. /* } */ case 13:
  61485. _r$7 = asn1.Marshal((x$1 = new ecdsaSignature.ptr(r, s), new x$1.constructor.elem(x$1))); /* */ $s = 16; case 16: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
  61486. _tuple$6 = _r$7; sig = _tuple$6[0]; err$1 = _tuple$6[1];
  61487. $s = 10; continue;
  61488. /* } else if (_ref$2 === 1) { */ case 8:
  61489. _tuple$7 = $assertType(cert.PrivateKey, ptrType$28, true); privKey$1 = _tuple$7[0]; ok$2 = _tuple$7[1];
  61490. if (!ok$2) {
  61491. return [ptrType$18.nil, errors.New("ECDHE RSA requires a RSA server private key")];
  61492. }
  61493. _r$8 = rsa.SignPKCS1v15(config.rand(), privKey$1, hashFunc, digest); /* */ $s = 17; case 17: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
  61494. _tuple$8 = _r$8; sig = _tuple$8[0]; err = _tuple$8[1];
  61495. /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 18; continue; }
  61496. /* */ $s = 19; continue;
  61497. /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 18:
  61498. _r$9 = err.Error(); /* */ $s = 20; case 20: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
  61499. _r$10 = errors.New("failed to sign ECDHE parameters: " + _r$9); /* */ $s = 21; case 21: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
  61500. return [ptrType$18.nil, _r$10];
  61501. /* } */ case 19:
  61502. $s = 10; continue;
  61503. /* } else { */ case 9:
  61504. return [ptrType$18.nil, errors.New("unknown ECDHE signature algorithm")];
  61505. /* } */ case 10:
  61506. skx = new serverKeyExchangeMsg.ptr();
  61507. sigAndHashLen = 0;
  61508. if (ka.version >= 771) {
  61509. sigAndHashLen = 2;
  61510. }
  61511. skx.key = $makeSlice(sliceType$4, (((serverECDHParams.$length + sigAndHashLen >> 0) + 2 >> 0) + sig.$length >> 0));
  61512. $copySlice(skx.key, serverECDHParams);
  61513. k = $subslice(skx.key, serverECDHParams.$length);
  61514. if (ka.version >= 771) {
  61515. (0 >= k.$length ? $throwRuntimeError("index out of range") : k.$array[k.$offset + 0] = tls12HashId);
  61516. (1 >= k.$length ? $throwRuntimeError("index out of range") : k.$array[k.$offset + 1] = ka.sigType);
  61517. k = $subslice(k, 2);
  61518. }
  61519. (0 >= k.$length ? $throwRuntimeError("index out of range") : k.$array[k.$offset + 0] = ((sig.$length >> 8 >> 0) << 24 >>> 24));
  61520. (1 >= k.$length ? $throwRuntimeError("index out of range") : k.$array[k.$offset + 1] = (sig.$length << 24 >>> 24));
  61521. $copySlice($subslice(k, 2), sig);
  61522. return [skx, $ifaceNil];
  61523. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: ecdheKeyAgreement.ptr.prototype.generateServerKeyExchange }; } $f.$ptr = $ptr; $f._i = _i; $f._i$1 = _i$1; $f._r = _r; $f._r$1 = _r$1; $f._r$10 = _r$10; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._r$9 = _r$9; $f._ref = _ref; $f._ref$1 = _ref$1; $f._ref$2 = _ref$2; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f._tuple$4 = _tuple$4; $f._tuple$5 = _tuple$5; $f._tuple$6 = _tuple$6; $f._tuple$7 = _tuple$7; $f._tuple$8 = _tuple$8; $f.c = c; $f.candidate = candidate; $f.cert = cert; $f.clientHello = clientHello; $f.config = config; $f.curveid = curveid; $f.digest = digest; $f.ecdhePublic = ecdhePublic; $f.err = err; $f.err$1 = err$1; $f.hashFunc = hashFunc; $f.hello = hello; $f.k = k; $f.ka = ka; $f.ok = ok; $f.ok$1 = ok$1; $f.ok$2 = ok$2; $f.preferredCurves = preferredCurves; $f.privKey = privKey; $f.privKey$1 = privKey$1; $f.r = r; $f.s = s; $f.serverECDHParams = serverECDHParams; $f.sig = sig; $f.sigAndHashLen = sigAndHashLen; $f.skx = skx; $f.tls12HashId = tls12HashId; $f.x = x; $f.x$1 = x$1; $f.y = y; $f.$s = $s; $f.$r = $r; return $f;
  61524. };
  61525. ecdheKeyAgreement.prototype.generateServerKeyExchange = function(config, cert, clientHello, hello) { return this.$val.generateServerKeyExchange(config, cert, clientHello, hello); };
  61526. ecdheKeyAgreement.ptr.prototype.processClientKeyExchange = function(config, cert, ckx, version) {
  61527. var $ptr, _r, _r$1, _r$2, _r$3, _tuple, _tuple$1, cert, ckx, config, ka, preMasterSecret, version, x, x$1, xBytes, y, $s, $r;
  61528. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; cert = $f.cert; ckx = $f.ckx; config = $f.config; ka = $f.ka; preMasterSecret = $f.preMasterSecret; version = $f.version; x = $f.x; x$1 = $f.x$1; xBytes = $f.xBytes; y = $f.y; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  61529. ka = this;
  61530. if ((ckx.ciphertext.$length === 0) || !((((x = ckx.ciphertext, (0 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 0])) >> 0) === (ckx.ciphertext.$length - 1 >> 0)))) {
  61531. return [sliceType$4.nil, errClientKeyExchange];
  61532. }
  61533. _r = elliptic.Unmarshal(ka.curve, $subslice(ckx.ciphertext, 1)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  61534. _tuple = _r; x$1 = _tuple[0]; y = _tuple[1];
  61535. if (x$1 === ptrType$1.nil) {
  61536. return [sliceType$4.nil, errClientKeyExchange];
  61537. }
  61538. _r$1 = ka.curve.IsOnCurve(x$1, y); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  61539. /* */ if (!_r$1) { $s = 2; continue; }
  61540. /* */ $s = 3; continue;
  61541. /* if (!_r$1) { */ case 2:
  61542. return [sliceType$4.nil, errClientKeyExchange];
  61543. /* } */ case 3:
  61544. _r$2 = ka.curve.ScalarMult(x$1, y, ka.privateKey); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  61545. _tuple$1 = _r$2; x$1 = _tuple$1[0];
  61546. _r$3 = ka.curve.Params(); /* */ $s = 6; case 6: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  61547. preMasterSecret = $makeSlice(sliceType$4, (((_r$3.BitSize + 7 >> 0)) >> 3 >> 0));
  61548. xBytes = x$1.Bytes();
  61549. $copySlice($subslice(preMasterSecret, (preMasterSecret.$length - xBytes.$length >> 0)), xBytes);
  61550. return [preMasterSecret, $ifaceNil];
  61551. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: ecdheKeyAgreement.ptr.prototype.processClientKeyExchange }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.cert = cert; $f.ckx = ckx; $f.config = config; $f.ka = ka; $f.preMasterSecret = preMasterSecret; $f.version = version; $f.x = x; $f.x$1 = x$1; $f.xBytes = xBytes; $f.y = y; $f.$s = $s; $f.$r = $r; return $f;
  61552. };
  61553. ecdheKeyAgreement.prototype.processClientKeyExchange = function(config, cert, ckx, version) { return this.$val.processClientKeyExchange(config, cert, ckx, version); };
  61554. ecdheKeyAgreement.ptr.prototype.processServerKeyExchange = function(config, clientHello, serverHello, cert, skx) {
  61555. var $ptr, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _ref, _tmp, _tmp$1, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, cert, clientHello, config, curveid, digest, ecdsaSig, err, err$1, err$2, hashFunc, ka, ok, ok$1, ok$2, pubKey, pubKey$1, publicLen, serverECDHParams, serverHello, sig, sigAndHash, sigLen, skx, tls12HashId, x, x$1, x$2, x$3, $s, $r;
  61556. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _ref = $f._ref; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; _tuple$4 = $f._tuple$4; _tuple$5 = $f._tuple$5; cert = $f.cert; clientHello = $f.clientHello; config = $f.config; curveid = $f.curveid; digest = $f.digest; ecdsaSig = $f.ecdsaSig; err = $f.err; err$1 = $f.err$1; err$2 = $f.err$2; hashFunc = $f.hashFunc; ka = $f.ka; ok = $f.ok; ok$1 = $f.ok$1; ok$2 = $f.ok$2; pubKey = $f.pubKey; pubKey$1 = $f.pubKey$1; publicLen = $f.publicLen; serverECDHParams = $f.serverECDHParams; serverHello = $f.serverHello; sig = $f.sig; sigAndHash = $f.sigAndHash; sigLen = $f.sigLen; skx = $f.skx; tls12HashId = $f.tls12HashId; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; x$3 = $f.x$3; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  61557. ka = this;
  61558. if (skx.key.$length < 4) {
  61559. return errServerKeyExchange;
  61560. }
  61561. if (!(((x = skx.key, (0 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 0])) === 3))) {
  61562. return errors.New("tls: server selected unsupported curve");
  61563. }
  61564. curveid = ((((x$1 = skx.key, (1 >= x$1.$length ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + 1])) << 16 >>> 16) << 8 << 16 >>> 16) | ((x$2 = skx.key, (2 >= x$2.$length ? $throwRuntimeError("index out of range") : x$2.$array[x$2.$offset + 2])) << 16 >>> 16)) >>> 0;
  61565. ok = false;
  61566. _r = curveForCurveID(curveid); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  61567. _tuple = _r; ka.curve = _tuple[0]; ok = _tuple[1];
  61568. /* */ if (!ok) { $s = 2; continue; }
  61569. /* */ $s = 3; continue;
  61570. /* if (!ok) { */ case 2:
  61571. return errors.New("tls: server selected unsupported curve");
  61572. /* } */ case 3:
  61573. publicLen = ((x$3 = skx.key, (3 >= x$3.$length ? $throwRuntimeError("index out of range") : x$3.$array[x$3.$offset + 3])) >> 0);
  61574. if ((publicLen + 4 >> 0) > skx.key.$length) {
  61575. return errServerKeyExchange;
  61576. }
  61577. _r$1 = elliptic.Unmarshal(ka.curve, $subslice(skx.key, 4, (4 + publicLen >> 0))); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  61578. _tuple$1 = _r$1; ka.x = _tuple$1[0]; ka.y = _tuple$1[1];
  61579. if (ka.x === ptrType$1.nil) {
  61580. return errServerKeyExchange;
  61581. }
  61582. _r$2 = ka.curve.IsOnCurve(ka.x, ka.y); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  61583. /* */ if (!_r$2) { $s = 5; continue; }
  61584. /* */ $s = 6; continue;
  61585. /* if (!_r$2) { */ case 5:
  61586. return errServerKeyExchange;
  61587. /* } */ case 6:
  61588. serverECDHParams = $subslice(skx.key, 0, (4 + publicLen >> 0));
  61589. sig = $subslice(skx.key, (4 + publicLen >> 0));
  61590. if (sig.$length < 2) {
  61591. return errServerKeyExchange;
  61592. }
  61593. tls12HashId = 0;
  61594. if (ka.version >= 771) {
  61595. sigAndHash = sliceType$4.nil;
  61596. _tmp = $subslice(sig, 0, 2); _tmp$1 = $subslice(sig, 2); sigAndHash = _tmp; sig = _tmp$1;
  61597. if (!(((1 >= sigAndHash.$length ? $throwRuntimeError("index out of range") : sigAndHash.$array[sigAndHash.$offset + 1]) === ka.sigType))) {
  61598. return errServerKeyExchange;
  61599. }
  61600. tls12HashId = (0 >= sigAndHash.$length ? $throwRuntimeError("index out of range") : sigAndHash.$array[sigAndHash.$offset + 0]);
  61601. if (sig.$length < 2) {
  61602. return errServerKeyExchange;
  61603. }
  61604. }
  61605. sigLen = (((0 >= sig.$length ? $throwRuntimeError("index out of range") : sig.$array[sig.$offset + 0]) >> 0) << 8 >> 0) | ((1 >= sig.$length ? $throwRuntimeError("index out of range") : sig.$array[sig.$offset + 1]) >> 0);
  61606. if (!(((sigLen + 2 >> 0) === sig.$length))) {
  61607. return errServerKeyExchange;
  61608. }
  61609. sig = $subslice(sig, 2);
  61610. _r$3 = hashForServerKeyExchange(ka.sigType, tls12HashId, ka.version, new sliceType$6([clientHello.random, serverHello.random, serverECDHParams])); /* */ $s = 8; case 8: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  61611. _tuple$2 = _r$3; digest = _tuple$2[0]; hashFunc = _tuple$2[1]; err = _tuple$2[2];
  61612. if (!($interfaceIsEqual(err, $ifaceNil))) {
  61613. return err;
  61614. }
  61615. _ref = ka.sigType;
  61616. /* */ if (_ref === 3) { $s = 9; continue; }
  61617. /* */ if (_ref === 1) { $s = 10; continue; }
  61618. /* */ $s = 11; continue;
  61619. /* if (_ref === 3) { */ case 9:
  61620. _tuple$3 = $assertType(cert.PublicKey, ptrType$16, true); pubKey = _tuple$3[0]; ok$1 = _tuple$3[1];
  61621. if (!ok$1) {
  61622. return errors.New("ECDHE ECDSA requires a ECDSA server public key");
  61623. }
  61624. ecdsaSig = new ecdsaSignature.ptr();
  61625. _r$4 = asn1.Unmarshal(sig, ecdsaSig); /* */ $s = 13; case 13: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
  61626. _tuple$4 = _r$4; err$1 = _tuple$4[1];
  61627. /* */ if (!($interfaceIsEqual(err$1, $ifaceNil))) { $s = 14; continue; }
  61628. /* */ $s = 15; continue;
  61629. /* if (!($interfaceIsEqual(err$1, $ifaceNil))) { */ case 14:
  61630. return err$1;
  61631. /* } */ case 15:
  61632. if (ecdsaSig.R.Sign() <= 0 || ecdsaSig.S.Sign() <= 0) {
  61633. return errors.New("ECDSA signature contained zero or negative values");
  61634. }
  61635. _r$5 = ecdsa.Verify(pubKey, digest, ecdsaSig.R, ecdsaSig.S); /* */ $s = 18; case 18: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
  61636. /* */ if (!_r$5) { $s = 16; continue; }
  61637. /* */ $s = 17; continue;
  61638. /* if (!_r$5) { */ case 16:
  61639. return errors.New("ECDSA verification failure");
  61640. /* } */ case 17:
  61641. $s = 12; continue;
  61642. /* } else if (_ref === 1) { */ case 10:
  61643. _tuple$5 = $assertType(cert.PublicKey, ptrType$15, true); pubKey$1 = _tuple$5[0]; ok$2 = _tuple$5[1];
  61644. if (!ok$2) {
  61645. return errors.New("ECDHE RSA requires a RSA server public key");
  61646. }
  61647. err$2 = rsa.VerifyPKCS1v15(pubKey$1, hashFunc, digest, sig);
  61648. if (!($interfaceIsEqual(err$2, $ifaceNil))) {
  61649. return err$2;
  61650. }
  61651. $s = 12; continue;
  61652. /* } else { */ case 11:
  61653. return errors.New("unknown ECDHE signature algorithm");
  61654. /* } */ case 12:
  61655. return $ifaceNil;
  61656. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: ecdheKeyAgreement.ptr.prototype.processServerKeyExchange }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._ref = _ref; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f._tuple$4 = _tuple$4; $f._tuple$5 = _tuple$5; $f.cert = cert; $f.clientHello = clientHello; $f.config = config; $f.curveid = curveid; $f.digest = digest; $f.ecdsaSig = ecdsaSig; $f.err = err; $f.err$1 = err$1; $f.err$2 = err$2; $f.hashFunc = hashFunc; $f.ka = ka; $f.ok = ok; $f.ok$1 = ok$1; $f.ok$2 = ok$2; $f.pubKey = pubKey; $f.pubKey$1 = pubKey$1; $f.publicLen = publicLen; $f.serverECDHParams = serverECDHParams; $f.serverHello = serverHello; $f.sig = sig; $f.sigAndHash = sigAndHash; $f.sigLen = sigLen; $f.skx = skx; $f.tls12HashId = tls12HashId; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.x$3 = x$3; $f.$s = $s; $f.$r = $r; return $f;
  61657. };
  61658. ecdheKeyAgreement.prototype.processServerKeyExchange = function(config, clientHello, serverHello, cert, skx) { return this.$val.processServerKeyExchange(config, clientHello, serverHello, cert, skx); };
  61659. ecdheKeyAgreement.ptr.prototype.generateClientKeyExchange = function(config, clientHello, cert) {
  61660. var $ptr, _r, _r$1, _r$2, _r$3, _tuple, _tuple$1, cert, ckx, clientHello, config, err, ka, mx, my, preMasterSecret, priv, serialized, x, x$1, xBytes, $s, $r;
  61661. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; cert = $f.cert; ckx = $f.ckx; clientHello = $f.clientHello; config = $f.config; err = $f.err; ka = $f.ka; mx = $f.mx; my = $f.my; preMasterSecret = $f.preMasterSecret; priv = $f.priv; serialized = $f.serialized; x = $f.x; x$1 = $f.x$1; xBytes = $f.xBytes; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  61662. ka = this;
  61663. if ($interfaceIsEqual(ka.curve, $ifaceNil)) {
  61664. return [sliceType$4.nil, ptrType$21.nil, errors.New("missing ServerKeyExchange message")];
  61665. }
  61666. _r = elliptic.GenerateKey(ka.curve, config.rand()); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  61667. _tuple = _r; priv = _tuple[0]; mx = _tuple[1]; my = _tuple[2]; err = _tuple[3];
  61668. if (!($interfaceIsEqual(err, $ifaceNil))) {
  61669. return [sliceType$4.nil, ptrType$21.nil, err];
  61670. }
  61671. _r$1 = ka.curve.ScalarMult(ka.x, ka.y, priv); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  61672. _tuple$1 = _r$1; x = _tuple$1[0];
  61673. _r$2 = ka.curve.Params(); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  61674. preMasterSecret = $makeSlice(sliceType$4, (((_r$2.BitSize + 7 >> 0)) >> 3 >> 0));
  61675. xBytes = x.Bytes();
  61676. $copySlice($subslice(preMasterSecret, (preMasterSecret.$length - xBytes.$length >> 0)), xBytes);
  61677. _r$3 = elliptic.Marshal(ka.curve, mx, my); /* */ $s = 4; case 4: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  61678. serialized = _r$3;
  61679. ckx = new clientKeyExchangeMsg.ptr();
  61680. ckx.ciphertext = $makeSlice(sliceType$4, (1 + serialized.$length >> 0));
  61681. (x$1 = ckx.ciphertext, (0 >= x$1.$length ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + 0] = (serialized.$length << 24 >>> 24)));
  61682. $copySlice($subslice(ckx.ciphertext, 1), serialized);
  61683. return [preMasterSecret, ckx, $ifaceNil];
  61684. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: ecdheKeyAgreement.ptr.prototype.generateClientKeyExchange }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.cert = cert; $f.ckx = ckx; $f.clientHello = clientHello; $f.config = config; $f.err = err; $f.ka = ka; $f.mx = mx; $f.my = my; $f.preMasterSecret = preMasterSecret; $f.priv = priv; $f.serialized = serialized; $f.x = x; $f.x$1 = x$1; $f.xBytes = xBytes; $f.$s = $s; $f.$r = $r; return $f;
  61685. };
  61686. ecdheKeyAgreement.prototype.generateClientKeyExchange = function(config, clientHello, cert) { return this.$val.generateClientKeyExchange(config, clientHello, cert); };
  61687. splitPreMasterSecret = function(secret) {
  61688. var $ptr, _q, _q$1, s1, s2, secret;
  61689. s1 = sliceType$4.nil;
  61690. s2 = sliceType$4.nil;
  61691. s1 = $subslice(secret, 0, (_q = ((secret.$length + 1 >> 0)) / 2, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")));
  61692. s2 = $subslice(secret, (_q$1 = secret.$length / 2, (_q$1 === _q$1 && _q$1 !== 1/0 && _q$1 !== -1/0) ? _q$1 >> 0 : $throwRuntimeError("integer divide by zero")));
  61693. return [s1, s2];
  61694. };
  61695. pHash = function(result, secret, seed, hash$1) {
  61696. var $ptr, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, a, b, h, hash$1, j, result, secret, seed, todo, $s, $r;
  61697. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; a = $f.a; b = $f.b; h = $f.h; hash$1 = $f.hash$1; j = $f.j; result = $f.result; secret = $f.secret; seed = $f.seed; todo = $f.todo; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  61698. _r = hmac.New(hash$1, secret); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  61699. h = _r;
  61700. _r$1 = h.Write(seed); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  61701. _r$1;
  61702. _r$2 = h.Sum(sliceType$4.nil); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  61703. a = _r$2;
  61704. j = 0;
  61705. /* while (true) { */ case 4:
  61706. /* if (!(j < result.$length)) { break; } */ if(!(j < result.$length)) { $s = 5; continue; }
  61707. $r = h.Reset(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  61708. _r$3 = h.Write(a); /* */ $s = 7; case 7: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  61709. _r$3;
  61710. _r$4 = h.Write(seed); /* */ $s = 8; case 8: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
  61711. _r$4;
  61712. _r$5 = h.Sum(sliceType$4.nil); /* */ $s = 9; case 9: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
  61713. b = _r$5;
  61714. todo = b.$length;
  61715. if ((j + todo >> 0) > result.$length) {
  61716. todo = result.$length - j >> 0;
  61717. }
  61718. $copySlice($subslice(result, j, (j + todo >> 0)), b);
  61719. j = j + (todo) >> 0;
  61720. $r = h.Reset(); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  61721. _r$6 = h.Write(a); /* */ $s = 11; case 11: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
  61722. _r$6;
  61723. _r$7 = h.Sum(sliceType$4.nil); /* */ $s = 12; case 12: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
  61724. a = _r$7;
  61725. /* } */ $s = 4; continue; case 5:
  61726. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: pHash }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f.a = a; $f.b = b; $f.h = h; $f.hash$1 = hash$1; $f.j = j; $f.result = result; $f.secret = secret; $f.seed = seed; $f.todo = todo; $f.$s = $s; $f.$r = $r; return $f;
  61727. };
  61728. prf10 = function(result, secret, label, seed) {
  61729. var $ptr, _i, _ref, _tuple, b, hashMD5, hashSHA1, i, label, labelAndSeed, result, result2, s1, s2, secret, seed, $s, $r;
  61730. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _i = $f._i; _ref = $f._ref; _tuple = $f._tuple; b = $f.b; hashMD5 = $f.hashMD5; hashSHA1 = $f.hashSHA1; i = $f.i; label = $f.label; labelAndSeed = $f.labelAndSeed; result = $f.result; result2 = $f.result2; s1 = $f.s1; s2 = $f.s2; secret = $f.secret; seed = $f.seed; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  61731. hashSHA1 = sha1.New;
  61732. hashMD5 = md5.New;
  61733. labelAndSeed = $makeSlice(sliceType$4, (label.$length + seed.$length >> 0));
  61734. $copySlice(labelAndSeed, label);
  61735. $copySlice($subslice(labelAndSeed, label.$length), seed);
  61736. _tuple = splitPreMasterSecret(secret); s1 = _tuple[0]; s2 = _tuple[1];
  61737. $r = pHash(result, s1, labelAndSeed, hashMD5); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  61738. result2 = $makeSlice(sliceType$4, result.$length);
  61739. $r = pHash(result2, s2, labelAndSeed, hashSHA1); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  61740. _ref = result2;
  61741. _i = 0;
  61742. while (true) {
  61743. if (!(_i < _ref.$length)) { break; }
  61744. i = _i;
  61745. b = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]);
  61746. ((i < 0 || i >= result.$length) ? $throwRuntimeError("index out of range") : result.$array[result.$offset + i] = (((i < 0 || i >= result.$length) ? $throwRuntimeError("index out of range") : result.$array[result.$offset + i]) ^ (b)) << 24 >>> 24);
  61747. _i++;
  61748. }
  61749. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: prf10 }; } $f.$ptr = $ptr; $f._i = _i; $f._ref = _ref; $f._tuple = _tuple; $f.b = b; $f.hashMD5 = hashMD5; $f.hashSHA1 = hashSHA1; $f.i = i; $f.label = label; $f.labelAndSeed = labelAndSeed; $f.result = result; $f.result2 = result2; $f.s1 = s1; $f.s2 = s2; $f.secret = secret; $f.seed = seed; $f.$s = $s; $f.$r = $r; return $f;
  61750. };
  61751. prf12 = function(result, secret, label, seed) {
  61752. var $ptr, label, labelAndSeed, result, secret, seed, $s, $r;
  61753. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; label = $f.label; labelAndSeed = $f.labelAndSeed; result = $f.result; secret = $f.secret; seed = $f.seed; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  61754. labelAndSeed = $makeSlice(sliceType$4, (label.$length + seed.$length >> 0));
  61755. $copySlice(labelAndSeed, label);
  61756. $copySlice($subslice(labelAndSeed, label.$length), seed);
  61757. $r = pHash(result, secret, labelAndSeed, sha256.New); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  61758. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: prf12 }; } $f.$ptr = $ptr; $f.label = label; $f.labelAndSeed = labelAndSeed; $f.result = result; $f.secret = secret; $f.seed = seed; $f.$s = $s; $f.$r = $r; return $f;
  61759. };
  61760. prf30 = function(result, secret, label, seed) {
  61761. var $ptr, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, b, digest, done, hashMD5, hashSHA1, i, j, label, result, secret, seed, $s, $r;
  61762. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; b = $f.b; digest = $f.digest; done = $f.done; hashMD5 = $f.hashMD5; hashSHA1 = $f.hashSHA1; i = $f.i; j = $f.j; label = $f.label; result = $f.result; secret = $f.secret; seed = $f.seed; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  61763. hashSHA1 = sha1.New();
  61764. hashMD5 = md5.New();
  61765. done = 0;
  61766. i = 0;
  61767. b = $clone(arrayType$1.zero(), arrayType$1);
  61768. /* while (true) { */ case 1:
  61769. /* if (!(done < result.$length)) { break; } */ if(!(done < result.$length)) { $s = 2; continue; }
  61770. j = 0;
  61771. while (true) {
  61772. if (!(j <= i)) { break; }
  61773. ((j < 0 || j >= b.length) ? $throwRuntimeError("index out of range") : b[j] = 65 + (i << 24 >>> 24) << 24 >>> 24);
  61774. j = j + (1) >> 0;
  61775. }
  61776. $r = hashSHA1.Reset(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  61777. _r = hashSHA1.Write($subslice(new sliceType$4(b), 0, (i + 1 >> 0))); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  61778. _r;
  61779. _r$1 = hashSHA1.Write(secret); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  61780. _r$1;
  61781. _r$2 = hashSHA1.Write(seed); /* */ $s = 6; case 6: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  61782. _r$2;
  61783. _r$3 = hashSHA1.Sum(sliceType$4.nil); /* */ $s = 7; case 7: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  61784. digest = _r$3;
  61785. $r = hashMD5.Reset(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  61786. _r$4 = hashMD5.Write(secret); /* */ $s = 9; case 9: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
  61787. _r$4;
  61788. _r$5 = hashMD5.Write(digest); /* */ $s = 10; case 10: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
  61789. _r$5;
  61790. _r$6 = hashMD5.Sum(sliceType$4.nil); /* */ $s = 11; case 11: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
  61791. done = done + ($copySlice($subslice(result, done), _r$6)) >> 0;
  61792. i = i + (1) >> 0;
  61793. /* } */ $s = 1; continue; case 2:
  61794. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: prf30 }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f.b = b; $f.digest = digest; $f.done = done; $f.hashMD5 = hashMD5; $f.hashSHA1 = hashSHA1; $f.i = i; $f.j = j; $f.label = label; $f.result = result; $f.secret = secret; $f.seed = seed; $f.$s = $s; $f.$r = $r; return $f;
  61795. };
  61796. prfForVersion = function(version) {
  61797. var $ptr, _ref, version;
  61798. _ref = version;
  61799. if (_ref === 768) {
  61800. return prf30;
  61801. } else if (_ref === 769 || _ref === 770) {
  61802. return prf10;
  61803. } else if (_ref === 771) {
  61804. return prf12;
  61805. } else {
  61806. $panic(new $String("unknown version"));
  61807. }
  61808. };
  61809. masterFromPreMasterSecret = function(version, preMasterSecret, clientRandom, serverRandom) {
  61810. var $ptr, clientRandom, masterSecret, preMasterSecret, seed, serverRandom, version, $s, $r;
  61811. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; clientRandom = $f.clientRandom; masterSecret = $f.masterSecret; preMasterSecret = $f.preMasterSecret; seed = $f.seed; serverRandom = $f.serverRandom; version = $f.version; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  61812. seed = $clone(arrayType$2.zero(), arrayType$2);
  61813. $copySlice($subslice(new sliceType$4(seed), 0, clientRandom.$length), clientRandom);
  61814. $copySlice($subslice(new sliceType$4(seed), clientRandom.$length), serverRandom);
  61815. masterSecret = $makeSlice(sliceType$4, 48);
  61816. $r = prfForVersion(version)(masterSecret, preMasterSecret, masterSecretLabel, $subslice(new sliceType$4(seed), 0)); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  61817. return masterSecret;
  61818. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: masterFromPreMasterSecret }; } $f.$ptr = $ptr; $f.clientRandom = clientRandom; $f.masterSecret = masterSecret; $f.preMasterSecret = preMasterSecret; $f.seed = seed; $f.serverRandom = serverRandom; $f.version = version; $f.$s = $s; $f.$r = $r; return $f;
  61819. };
  61820. keysFromMasterSecret = function(version, masterSecret, clientRandom, serverRandom, macLen, keyLen, ivLen) {
  61821. var $ptr, clientIV, clientKey, clientMAC, clientRandom, ivLen, keyLen, keyMaterial, macLen, masterSecret, n, seed, serverIV, serverKey, serverMAC, serverRandom, version, $s, $r;
  61822. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; clientIV = $f.clientIV; clientKey = $f.clientKey; clientMAC = $f.clientMAC; clientRandom = $f.clientRandom; ivLen = $f.ivLen; keyLen = $f.keyLen; keyMaterial = $f.keyMaterial; macLen = $f.macLen; masterSecret = $f.masterSecret; n = $f.n; seed = $f.seed; serverIV = $f.serverIV; serverKey = $f.serverKey; serverMAC = $f.serverMAC; serverRandom = $f.serverRandom; version = $f.version; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  61823. clientMAC = sliceType$4.nil;
  61824. serverMAC = sliceType$4.nil;
  61825. clientKey = sliceType$4.nil;
  61826. serverKey = sliceType$4.nil;
  61827. clientIV = sliceType$4.nil;
  61828. serverIV = sliceType$4.nil;
  61829. seed = $clone(arrayType$2.zero(), arrayType$2);
  61830. $copySlice($subslice(new sliceType$4(seed), 0, clientRandom.$length), serverRandom);
  61831. $copySlice($subslice(new sliceType$4(seed), serverRandom.$length), clientRandom);
  61832. n = ((2 * macLen >> 0) + (2 * keyLen >> 0) >> 0) + (2 * ivLen >> 0) >> 0;
  61833. keyMaterial = $makeSlice(sliceType$4, n);
  61834. $r = prfForVersion(version)(keyMaterial, masterSecret, keyExpansionLabel, $subslice(new sliceType$4(seed), 0)); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  61835. clientMAC = $subslice(keyMaterial, 0, macLen);
  61836. keyMaterial = $subslice(keyMaterial, macLen);
  61837. serverMAC = $subslice(keyMaterial, 0, macLen);
  61838. keyMaterial = $subslice(keyMaterial, macLen);
  61839. clientKey = $subslice(keyMaterial, 0, keyLen);
  61840. keyMaterial = $subslice(keyMaterial, keyLen);
  61841. serverKey = $subslice(keyMaterial, 0, keyLen);
  61842. keyMaterial = $subslice(keyMaterial, keyLen);
  61843. clientIV = $subslice(keyMaterial, 0, ivLen);
  61844. keyMaterial = $subslice(keyMaterial, ivLen);
  61845. serverIV = $subslice(keyMaterial, 0, ivLen);
  61846. return [clientMAC, serverMAC, clientKey, serverKey, clientIV, serverIV];
  61847. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: keysFromMasterSecret }; } $f.$ptr = $ptr; $f.clientIV = clientIV; $f.clientKey = clientKey; $f.clientMAC = clientMAC; $f.clientRandom = clientRandom; $f.ivLen = ivLen; $f.keyLen = keyLen; $f.keyMaterial = keyMaterial; $f.macLen = macLen; $f.masterSecret = masterSecret; $f.n = n; $f.seed = seed; $f.serverIV = serverIV; $f.serverKey = serverKey; $f.serverMAC = serverMAC; $f.serverRandom = serverRandom; $f.version = version; $f.$s = $s; $f.$r = $r; return $f;
  61848. };
  61849. newFinishedHash = function(version) {
  61850. var $ptr, version;
  61851. if (version >= 771) {
  61852. return new finishedHash.ptr(sha256.New(), sha256.New(), $ifaceNil, $ifaceNil, version);
  61853. }
  61854. return new finishedHash.ptr(sha1.New(), sha1.New(), md5.New(), md5.New(), version);
  61855. };
  61856. finishedHash.ptr.prototype.Write = function(msg) {
  61857. var $ptr, _r, _r$1, _r$2, _r$3, _tmp, _tmp$1, err, h, msg, n, $s, $r;
  61858. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; err = $f.err; h = $f.h; msg = $f.msg; n = $f.n; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  61859. n = 0;
  61860. err = $ifaceNil;
  61861. h = $clone(this, finishedHash);
  61862. _r = h.client.Write(msg); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  61863. _r;
  61864. _r$1 = h.server.Write(msg); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  61865. _r$1;
  61866. /* */ if (h.version < 771) { $s = 3; continue; }
  61867. /* */ $s = 4; continue;
  61868. /* if (h.version < 771) { */ case 3:
  61869. _r$2 = h.clientMD5.Write(msg); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  61870. _r$2;
  61871. _r$3 = h.serverMD5.Write(msg); /* */ $s = 6; case 6: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  61872. _r$3;
  61873. /* } */ case 4:
  61874. _tmp = msg.$length; _tmp$1 = $ifaceNil; n = _tmp; err = _tmp$1;
  61875. return [n, err];
  61876. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: finishedHash.ptr.prototype.Write }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f.err = err; $f.h = h; $f.msg = msg; $f.n = n; $f.$s = $s; $f.$r = $r; return $f;
  61877. };
  61878. finishedHash.prototype.Write = function(msg) { return this.$val.Write(msg); };
  61879. finishedSum30 = function(md5$1, sha1$1, masterSecret, magic) {
  61880. var $ptr, _r, _r$1, _r$10, _r$11, _r$12, _r$13, _r$14, _r$15, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, magic, masterSecret, md5$1, md5Digest, ret, sha1$1, sha1Digest, $s, $r;
  61881. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$12 = $f._r$12; _r$13 = $f._r$13; _r$14 = $f._r$14; _r$15 = $f._r$15; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _r$9 = $f._r$9; magic = $f.magic; masterSecret = $f.masterSecret; md5$1 = $f.md5$1; md5Digest = $f.md5Digest; ret = $f.ret; sha1$1 = $f.sha1$1; sha1Digest = $f.sha1Digest; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  61882. magic = $clone(magic, arrayType$3);
  61883. _r = md5$1.Write(new sliceType$4(magic)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  61884. _r;
  61885. _r$1 = md5$1.Write(masterSecret); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  61886. _r$1;
  61887. _r$2 = md5$1.Write(new sliceType$4(ssl30Pad1)); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  61888. _r$2;
  61889. _r$3 = md5$1.Sum(sliceType$4.nil); /* */ $s = 4; case 4: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  61890. md5Digest = _r$3;
  61891. $r = md5$1.Reset(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  61892. _r$4 = md5$1.Write(masterSecret); /* */ $s = 6; case 6: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
  61893. _r$4;
  61894. _r$5 = md5$1.Write(new sliceType$4(ssl30Pad2)); /* */ $s = 7; case 7: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
  61895. _r$5;
  61896. _r$6 = md5$1.Write(md5Digest); /* */ $s = 8; case 8: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
  61897. _r$6;
  61898. _r$7 = md5$1.Sum(sliceType$4.nil); /* */ $s = 9; case 9: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
  61899. md5Digest = _r$7;
  61900. _r$8 = sha1$1.Write(new sliceType$4(magic)); /* */ $s = 10; case 10: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
  61901. _r$8;
  61902. _r$9 = sha1$1.Write(masterSecret); /* */ $s = 11; case 11: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
  61903. _r$9;
  61904. _r$10 = sha1$1.Write($subslice(new sliceType$4(ssl30Pad1), 0, 40)); /* */ $s = 12; case 12: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
  61905. _r$10;
  61906. _r$11 = sha1$1.Sum(sliceType$4.nil); /* */ $s = 13; case 13: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
  61907. sha1Digest = _r$11;
  61908. $r = sha1$1.Reset(); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  61909. _r$12 = sha1$1.Write(masterSecret); /* */ $s = 15; case 15: if($c) { $c = false; _r$12 = _r$12.$blk(); } if (_r$12 && _r$12.$blk !== undefined) { break s; }
  61910. _r$12;
  61911. _r$13 = sha1$1.Write($subslice(new sliceType$4(ssl30Pad2), 0, 40)); /* */ $s = 16; case 16: if($c) { $c = false; _r$13 = _r$13.$blk(); } if (_r$13 && _r$13.$blk !== undefined) { break s; }
  61912. _r$13;
  61913. _r$14 = sha1$1.Write(sha1Digest); /* */ $s = 17; case 17: if($c) { $c = false; _r$14 = _r$14.$blk(); } if (_r$14 && _r$14.$blk !== undefined) { break s; }
  61914. _r$14;
  61915. _r$15 = sha1$1.Sum(sliceType$4.nil); /* */ $s = 18; case 18: if($c) { $c = false; _r$15 = _r$15.$blk(); } if (_r$15 && _r$15.$blk !== undefined) { break s; }
  61916. sha1Digest = _r$15;
  61917. ret = $makeSlice(sliceType$4, (md5Digest.$length + sha1Digest.$length >> 0));
  61918. $copySlice(ret, md5Digest);
  61919. $copySlice($subslice(ret, md5Digest.$length), sha1Digest);
  61920. return ret;
  61921. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: finishedSum30 }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$12 = _r$12; $f._r$13 = _r$13; $f._r$14 = _r$14; $f._r$15 = _r$15; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._r$9 = _r$9; $f.magic = magic; $f.masterSecret = masterSecret; $f.md5$1 = md5$1; $f.md5Digest = md5Digest; $f.ret = ret; $f.sha1$1 = sha1$1; $f.sha1Digest = sha1Digest; $f.$s = $s; $f.$r = $r; return $f;
  61922. };
  61923. finishedHash.ptr.prototype.clientSum = function(masterSecret) {
  61924. var $ptr, _r, _r$1, _r$2, _r$3, h, masterSecret, out, seed, seed$1, $s, $r;
  61925. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; h = $f.h; masterSecret = $f.masterSecret; out = $f.out; seed = $f.seed; seed$1 = $f.seed$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  61926. h = $clone(this, finishedHash);
  61927. /* */ if (h.version === 768) { $s = 1; continue; }
  61928. /* */ $s = 2; continue;
  61929. /* if (h.version === 768) { */ case 1:
  61930. _r = finishedSum30(h.clientMD5, h.client, masterSecret, ssl3ClientFinishedMagic); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  61931. return _r;
  61932. /* } */ case 2:
  61933. out = $makeSlice(sliceType$4, 12);
  61934. /* */ if (h.version >= 771) { $s = 4; continue; }
  61935. /* */ $s = 5; continue;
  61936. /* if (h.version >= 771) { */ case 4:
  61937. _r$1 = h.client.Sum(sliceType$4.nil); /* */ $s = 7; case 7: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  61938. seed = _r$1;
  61939. $r = prf12(out, masterSecret, clientFinishedLabel, seed); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  61940. $s = 6; continue;
  61941. /* } else { */ case 5:
  61942. seed$1 = $makeSlice(sliceType$4, 0, 36);
  61943. _r$2 = h.clientMD5.Sum(seed$1); /* */ $s = 9; case 9: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  61944. seed$1 = _r$2;
  61945. _r$3 = h.client.Sum(seed$1); /* */ $s = 10; case 10: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  61946. seed$1 = _r$3;
  61947. $r = prf10(out, masterSecret, clientFinishedLabel, seed$1); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  61948. /* } */ case 6:
  61949. return out;
  61950. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: finishedHash.ptr.prototype.clientSum }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f.h = h; $f.masterSecret = masterSecret; $f.out = out; $f.seed = seed; $f.seed$1 = seed$1; $f.$s = $s; $f.$r = $r; return $f;
  61951. };
  61952. finishedHash.prototype.clientSum = function(masterSecret) { return this.$val.clientSum(masterSecret); };
  61953. finishedHash.ptr.prototype.serverSum = function(masterSecret) {
  61954. var $ptr, _r, _r$1, _r$2, _r$3, h, masterSecret, out, seed, seed$1, $s, $r;
  61955. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; h = $f.h; masterSecret = $f.masterSecret; out = $f.out; seed = $f.seed; seed$1 = $f.seed$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  61956. h = $clone(this, finishedHash);
  61957. /* */ if (h.version === 768) { $s = 1; continue; }
  61958. /* */ $s = 2; continue;
  61959. /* if (h.version === 768) { */ case 1:
  61960. _r = finishedSum30(h.serverMD5, h.server, masterSecret, ssl3ServerFinishedMagic); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  61961. return _r;
  61962. /* } */ case 2:
  61963. out = $makeSlice(sliceType$4, 12);
  61964. /* */ if (h.version >= 771) { $s = 4; continue; }
  61965. /* */ $s = 5; continue;
  61966. /* if (h.version >= 771) { */ case 4:
  61967. _r$1 = h.server.Sum(sliceType$4.nil); /* */ $s = 7; case 7: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  61968. seed = _r$1;
  61969. $r = prf12(out, masterSecret, serverFinishedLabel, seed); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  61970. $s = 6; continue;
  61971. /* } else { */ case 5:
  61972. seed$1 = $makeSlice(sliceType$4, 0, 36);
  61973. _r$2 = h.serverMD5.Sum(seed$1); /* */ $s = 9; case 9: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  61974. seed$1 = _r$2;
  61975. _r$3 = h.server.Sum(seed$1); /* */ $s = 10; case 10: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  61976. seed$1 = _r$3;
  61977. $r = prf10(out, masterSecret, serverFinishedLabel, seed$1); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  61978. /* } */ case 6:
  61979. return out;
  61980. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: finishedHash.ptr.prototype.serverSum }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f.h = h; $f.masterSecret = masterSecret; $f.out = out; $f.seed = seed; $f.seed$1 = seed$1; $f.$s = $s; $f.$r = $r; return $f;
  61981. };
  61982. finishedHash.prototype.serverSum = function(masterSecret) { return this.$val.serverSum(masterSecret); };
  61983. finishedHash.ptr.prototype.hashForClientCertificate = function(sigType) {
  61984. var $ptr, _r, _r$1, _r$2, _r$3, digest, digest$1, digest$2, h, sigType, $s, $r;
  61985. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; digest = $f.digest; digest$1 = $f.digest$1; digest$2 = $f.digest$2; h = $f.h; sigType = $f.sigType; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  61986. h = $clone(this, finishedHash);
  61987. /* */ if (h.version >= 771) { $s = 1; continue; }
  61988. /* */ $s = 2; continue;
  61989. /* if (h.version >= 771) { */ case 1:
  61990. _r = h.server.Sum(sliceType$4.nil); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  61991. digest = _r;
  61992. return [digest, 5, 4];
  61993. /* } */ case 2:
  61994. /* */ if (sigType === 3) { $s = 4; continue; }
  61995. /* */ $s = 5; continue;
  61996. /* if (sigType === 3) { */ case 4:
  61997. _r$1 = h.server.Sum(sliceType$4.nil); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  61998. digest$1 = _r$1;
  61999. return [digest$1, 3, 2];
  62000. /* } */ case 5:
  62001. digest$2 = $makeSlice(sliceType$4, 0, 36);
  62002. _r$2 = h.serverMD5.Sum(digest$2); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  62003. digest$2 = _r$2;
  62004. _r$3 = h.server.Sum(digest$2); /* */ $s = 8; case 8: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  62005. digest$2 = _r$3;
  62006. return [digest$2, 8, 0];
  62007. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: finishedHash.ptr.prototype.hashForClientCertificate }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f.digest = digest; $f.digest$1 = digest$1; $f.digest$2 = digest$2; $f.h = h; $f.sigType = sigType; $f.$s = $s; $f.$r = $r; return $f;
  62008. };
  62009. finishedHash.prototype.hashForClientCertificate = function(sigType) { return this.$val.hashForClientCertificate(sigType); };
  62010. sessionState.ptr.prototype.marshal = function() {
  62011. var $ptr, _i, _i$1, _ref, _ref$1, cert, cert$1, length, ret, s, x;
  62012. s = this;
  62013. length = (6 + s.masterSecret.$length >> 0) + 2 >> 0;
  62014. _ref = s.certificates;
  62015. _i = 0;
  62016. while (true) {
  62017. if (!(_i < _ref.$length)) { break; }
  62018. cert = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]);
  62019. length = length + ((4 + cert.$length >> 0)) >> 0;
  62020. _i++;
  62021. }
  62022. ret = $makeSlice(sliceType$4, length);
  62023. x = ret;
  62024. (0 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 0] = ((s.vers >>> 8 << 16 >>> 16) << 24 >>> 24));
  62025. (1 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 1] = (s.vers << 24 >>> 24));
  62026. (2 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 2] = ((s.cipherSuite >>> 8 << 16 >>> 16) << 24 >>> 24));
  62027. (3 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 3] = (s.cipherSuite << 24 >>> 24));
  62028. (4 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 4] = ((s.masterSecret.$length >> 8 >> 0) << 24 >>> 24));
  62029. (5 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 5] = (s.masterSecret.$length << 24 >>> 24));
  62030. x = $subslice(x, 6);
  62031. $copySlice(x, s.masterSecret);
  62032. x = $subslice(x, s.masterSecret.$length);
  62033. (0 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 0] = ((s.certificates.$length >> 8 >> 0) << 24 >>> 24));
  62034. (1 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 1] = (s.certificates.$length << 24 >>> 24));
  62035. x = $subslice(x, 2);
  62036. _ref$1 = s.certificates;
  62037. _i$1 = 0;
  62038. while (true) {
  62039. if (!(_i$1 < _ref$1.$length)) { break; }
  62040. cert$1 = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? $throwRuntimeError("index out of range") : _ref$1.$array[_ref$1.$offset + _i$1]);
  62041. (0 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 0] = ((cert$1.$length >> 24 >> 0) << 24 >>> 24));
  62042. (1 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 1] = ((cert$1.$length >> 16 >> 0) << 24 >>> 24));
  62043. (2 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 2] = ((cert$1.$length >> 8 >> 0) << 24 >>> 24));
  62044. (3 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 3] = (cert$1.$length << 24 >>> 24));
  62045. $copySlice($subslice(x, 4), cert$1);
  62046. x = $subslice(x, (4 + cert$1.$length >> 0));
  62047. _i$1++;
  62048. }
  62049. return ret;
  62050. };
  62051. sessionState.prototype.marshal = function() { return this.$val.marshal(); };
  62052. sessionState.ptr.prototype.unmarshal = function(data) {
  62053. var $ptr, _i, _ref, certLen, data, i, masterSecretLen, numCerts, s, x;
  62054. s = this;
  62055. if (data.$length < 8) {
  62056. return false;
  62057. }
  62058. s.vers = ((((0 >= data.$length ? $throwRuntimeError("index out of range") : data.$array[data.$offset + 0]) << 16 >>> 16) << 8 << 16 >>> 16) | ((1 >= data.$length ? $throwRuntimeError("index out of range") : data.$array[data.$offset + 1]) << 16 >>> 16)) >>> 0;
  62059. s.cipherSuite = ((((2 >= data.$length ? $throwRuntimeError("index out of range") : data.$array[data.$offset + 2]) << 16 >>> 16) << 8 << 16 >>> 16) | ((3 >= data.$length ? $throwRuntimeError("index out of range") : data.$array[data.$offset + 3]) << 16 >>> 16)) >>> 0;
  62060. masterSecretLen = (((4 >= data.$length ? $throwRuntimeError("index out of range") : data.$array[data.$offset + 4]) >> 0) << 8 >> 0) | ((5 >= data.$length ? $throwRuntimeError("index out of range") : data.$array[data.$offset + 5]) >> 0);
  62061. data = $subslice(data, 6);
  62062. if (data.$length < masterSecretLen) {
  62063. return false;
  62064. }
  62065. s.masterSecret = $subslice(data, 0, masterSecretLen);
  62066. data = $subslice(data, masterSecretLen);
  62067. if (data.$length < 2) {
  62068. return false;
  62069. }
  62070. numCerts = (((0 >= data.$length ? $throwRuntimeError("index out of range") : data.$array[data.$offset + 0]) >> 0) << 8 >> 0) | ((1 >= data.$length ? $throwRuntimeError("index out of range") : data.$array[data.$offset + 1]) >> 0);
  62071. data = $subslice(data, 2);
  62072. s.certificates = $makeSlice(sliceType$6, numCerts);
  62073. _ref = s.certificates;
  62074. _i = 0;
  62075. while (true) {
  62076. if (!(_i < _ref.$length)) { break; }
  62077. i = _i;
  62078. if (data.$length < 4) {
  62079. return false;
  62080. }
  62081. certLen = (((((0 >= data.$length ? $throwRuntimeError("index out of range") : data.$array[data.$offset + 0]) >> 0) << 24 >> 0) | (((1 >= data.$length ? $throwRuntimeError("index out of range") : data.$array[data.$offset + 1]) >> 0) << 16 >> 0)) | (((2 >= data.$length ? $throwRuntimeError("index out of range") : data.$array[data.$offset + 2]) >> 0) << 8 >> 0)) | ((3 >= data.$length ? $throwRuntimeError("index out of range") : data.$array[data.$offset + 3]) >> 0);
  62082. data = $subslice(data, 4);
  62083. if (certLen < 0) {
  62084. return false;
  62085. }
  62086. if (data.$length < certLen) {
  62087. return false;
  62088. }
  62089. (x = s.certificates, ((i < 0 || i >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + i] = $subslice(data, 0, certLen)));
  62090. data = $subslice(data, certLen);
  62091. _i++;
  62092. }
  62093. if (data.$length > 0) {
  62094. return false;
  62095. }
  62096. return true;
  62097. };
  62098. sessionState.prototype.unmarshal = function(data) { return this.$val.unmarshal(data); };
  62099. Conn.ptr.prototype.encryptTicket = function(state) {
  62100. var $ptr, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _tuple, _tuple$1, block$1, c, encrypted, err, err$1, iv, mac, macBytes, serialized, state, $s, $r;
  62101. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; block$1 = $f.block$1; c = $f.c; encrypted = $f.encrypted; err = $f.err; err$1 = $f.err$1; iv = $f.iv; mac = $f.mac; macBytes = $f.macBytes; serialized = $f.serialized; state = $f.state; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  62102. c = this;
  62103. serialized = state.marshal();
  62104. encrypted = $makeSlice(sliceType$4, ((16 + serialized.$length >> 0) + 32 >> 0));
  62105. iv = $subslice(encrypted, 0, 16);
  62106. macBytes = $subslice(encrypted, (encrypted.$length - 32 >> 0));
  62107. _r = io.ReadFull(c.config.rand(), iv); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  62108. _tuple = _r; err = _tuple[1];
  62109. /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 2; continue; }
  62110. /* */ $s = 3; continue;
  62111. /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 2:
  62112. return [sliceType$4.nil, err];
  62113. /* } */ case 3:
  62114. _tuple$1 = aes.NewCipher($subslice(new sliceType$4(c.config.SessionTicketKey), 0, 16)); block$1 = _tuple$1[0]; err$1 = _tuple$1[1];
  62115. /* */ if (!($interfaceIsEqual(err$1, $ifaceNil))) { $s = 4; continue; }
  62116. /* */ $s = 5; continue;
  62117. /* if (!($interfaceIsEqual(err$1, $ifaceNil))) { */ case 4:
  62118. _r$1 = err$1.Error(); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  62119. _r$2 = errors.New("tls: failed to create cipher while encrypting ticket: " + _r$1); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  62120. return [sliceType$4.nil, _r$2];
  62121. /* } */ case 5:
  62122. _r$3 = cipher.NewCTR(block$1, iv); /* */ $s = 8; case 8: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  62123. $r = _r$3.XORKeyStream($subslice(encrypted, 16), serialized); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  62124. _r$4 = hmac.New(sha256.New, $subslice(new sliceType$4(c.config.SessionTicketKey), 16, 32)); /* */ $s = 10; case 10: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
  62125. mac = _r$4;
  62126. _r$5 = mac.Write($subslice(encrypted, 0, (encrypted.$length - 32 >> 0))); /* */ $s = 11; case 11: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
  62127. _r$5;
  62128. _r$6 = mac.Sum($subslice(macBytes, 0, 0)); /* */ $s = 12; case 12: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
  62129. _r$6;
  62130. return [encrypted, $ifaceNil];
  62131. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Conn.ptr.prototype.encryptTicket }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.block$1 = block$1; $f.c = c; $f.encrypted = encrypted; $f.err = err; $f.err$1 = err$1; $f.iv = iv; $f.mac = mac; $f.macBytes = macBytes; $f.serialized = serialized; $f.state = state; $f.$s = $s; $f.$r = $r; return $f;
  62132. };
  62133. Conn.prototype.encryptTicket = function(state) { return this.$val.encryptTicket(state); };
  62134. Conn.ptr.prototype.decryptTicket = function(encrypted) {
  62135. var $ptr, _r, _r$1, _r$2, _r$3, _tuple, block$1, c, ciphertext, encrypted, err, expected, iv, mac, macBytes, ok, plaintext, state, $s, $r;
  62136. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _tuple = $f._tuple; block$1 = $f.block$1; c = $f.c; ciphertext = $f.ciphertext; encrypted = $f.encrypted; err = $f.err; expected = $f.expected; iv = $f.iv; mac = $f.mac; macBytes = $f.macBytes; ok = $f.ok; plaintext = $f.plaintext; state = $f.state; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  62137. c = this;
  62138. if (c.config.SessionTicketsDisabled || encrypted.$length < 48) {
  62139. return [ptrType$26.nil, false];
  62140. }
  62141. iv = $subslice(encrypted, 0, 16);
  62142. macBytes = $subslice(encrypted, (encrypted.$length - 32 >> 0));
  62143. _r = hmac.New(sha256.New, $subslice(new sliceType$4(c.config.SessionTicketKey), 16, 32)); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  62144. mac = _r;
  62145. _r$1 = mac.Write($subslice(encrypted, 0, (encrypted.$length - 32 >> 0))); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  62146. _r$1;
  62147. _r$2 = mac.Sum(sliceType$4.nil); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  62148. expected = _r$2;
  62149. if (!((subtle.ConstantTimeCompare(macBytes, expected) === 1))) {
  62150. return [ptrType$26.nil, false];
  62151. }
  62152. _tuple = aes.NewCipher($subslice(new sliceType$4(c.config.SessionTicketKey), 0, 16)); block$1 = _tuple[0]; err = _tuple[1];
  62153. if (!($interfaceIsEqual(err, $ifaceNil))) {
  62154. return [ptrType$26.nil, false];
  62155. }
  62156. ciphertext = $subslice(encrypted, 16, (encrypted.$length - 32 >> 0));
  62157. plaintext = ciphertext;
  62158. _r$3 = cipher.NewCTR(block$1, iv); /* */ $s = 4; case 4: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  62159. $r = _r$3.XORKeyStream(plaintext, ciphertext); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  62160. state = new sessionState.ptr();
  62161. ok = state.unmarshal(plaintext);
  62162. return [state, ok];
  62163. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Conn.ptr.prototype.decryptTicket }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._tuple = _tuple; $f.block$1 = block$1; $f.c = c; $f.ciphertext = ciphertext; $f.encrypted = encrypted; $f.err = err; $f.expected = expected; $f.iv = iv; $f.mac = mac; $f.macBytes = macBytes; $f.ok = ok; $f.plaintext = plaintext; $f.state = state; $f.$s = $s; $f.$r = $r; return $f;
  62164. };
  62165. Conn.prototype.decryptTicket = function(encrypted) { return this.$val.decryptTicket(encrypted); };
  62166. Server = function(conn, config) {
  62167. var $ptr, config, conn;
  62168. return new Conn.ptr(conn, false, new sync.Mutex.ptr(), $ifaceNil, 0, false, config, false, false, 0, sliceType$4.nil, sliceType$8.nil, sliceType$10.nil, "", arrayType$4.zero(), "", false, new halfConn.ptr(), new halfConn.ptr(), ptrType$8.nil, ptrType$8.nil, new bytes.Buffer.ptr(), arrayType$5.zero());
  62169. };
  62170. $pkg.Server = Server;
  62171. listener.ptr.prototype.Accept = function() {
  62172. var $ptr, _r, _tuple, c, err, l, $s, $r;
  62173. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tuple = $f._tuple; c = $f.c; err = $f.err; l = $f.l; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  62174. c = $ifaceNil;
  62175. err = $ifaceNil;
  62176. l = this;
  62177. _r = l.Listener.Accept(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  62178. _tuple = _r; c = _tuple[0]; err = _tuple[1];
  62179. if (!($interfaceIsEqual(err, $ifaceNil))) {
  62180. return [c, err];
  62181. }
  62182. c = Server(c, l.config);
  62183. return [c, err];
  62184. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: listener.ptr.prototype.Accept }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple = _tuple; $f.c = c; $f.err = err; $f.l = l; $f.$s = $s; $f.$r = $r; return $f;
  62185. };
  62186. listener.prototype.Accept = function() { return this.$val.Accept(); };
  62187. NewListener = function(inner, config) {
  62188. var $ptr, config, inner, l;
  62189. l = new listener.ptr();
  62190. l.Listener = inner;
  62191. l.config = config;
  62192. return l;
  62193. };
  62194. $pkg.NewListener = NewListener;
  62195. LoadX509KeyPair = function(certFile, keyFile) {
  62196. var $ptr, _r, _r$1, _r$2, _tuple, _tuple$1, _tuple$2, cert, certFile, certPEMBlock, err, keyFile, keyPEMBlock, $s, $r;
  62197. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; cert = $f.cert; certFile = $f.certFile; certPEMBlock = $f.certPEMBlock; err = $f.err; keyFile = $f.keyFile; keyPEMBlock = $f.keyPEMBlock; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  62198. cert = new Certificate.ptr();
  62199. err = $ifaceNil;
  62200. _r = ioutil.ReadFile(certFile); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  62201. _tuple = _r; certPEMBlock = _tuple[0]; err = _tuple[1];
  62202. if (!($interfaceIsEqual(err, $ifaceNil))) {
  62203. return [cert, err];
  62204. }
  62205. _r$1 = ioutil.ReadFile(keyFile); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  62206. _tuple$1 = _r$1; keyPEMBlock = _tuple$1[0]; err = _tuple$1[1];
  62207. if (!($interfaceIsEqual(err, $ifaceNil))) {
  62208. return [cert, err];
  62209. }
  62210. _r$2 = X509KeyPair(certPEMBlock, keyPEMBlock); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  62211. _tuple$2 = _r$2; $copy(cert, _tuple$2[0], Certificate); err = _tuple$2[1];
  62212. return [cert, err];
  62213. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: LoadX509KeyPair }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f.cert = cert; $f.certFile = certFile; $f.certPEMBlock = certPEMBlock; $f.err = err; $f.keyFile = keyFile; $f.keyPEMBlock = keyPEMBlock; $f.$s = $s; $f.$r = $r; return $f;
  62214. };
  62215. $pkg.LoadX509KeyPair = LoadX509KeyPair;
  62216. X509KeyPair = function(certPEMBlock, keyPEMBlock) {
  62217. var $ptr, _r, _r$1, _r$2, _r$3, _ref, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, cert, certDERBlock, certPEMBlock, err, keyDERBlock, keyPEMBlock, ok, ok$1, priv, priv$1, pub, pub$1, pub$2, x, x509Cert, $s, $r;
  62218. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _ref = $f._ref; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; _tuple$4 = $f._tuple$4; _tuple$5 = $f._tuple$5; cert = $f.cert; certDERBlock = $f.certDERBlock; certPEMBlock = $f.certPEMBlock; err = $f.err; keyDERBlock = $f.keyDERBlock; keyPEMBlock = $f.keyPEMBlock; ok = $f.ok; ok$1 = $f.ok$1; priv = $f.priv; priv$1 = $f.priv$1; pub = $f.pub; pub$1 = $f.pub$1; pub$2 = $f.pub$2; x = $f.x; x509Cert = $f.x509Cert; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  62219. cert = new Certificate.ptr();
  62220. err = $ifaceNil;
  62221. certDERBlock = ptrType$29.nil;
  62222. /* while (true) { */ case 1:
  62223. _r = pem.Decode(certPEMBlock); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  62224. _tuple = _r; certDERBlock = _tuple[0]; certPEMBlock = _tuple[1];
  62225. if (certDERBlock === ptrType$29.nil) {
  62226. /* break; */ $s = 2; continue;
  62227. }
  62228. if (certDERBlock.Type === "CERTIFICATE") {
  62229. cert.Certificate = $append(cert.Certificate, certDERBlock.Bytes);
  62230. }
  62231. /* } */ $s = 1; continue; case 2:
  62232. if (cert.Certificate.$length === 0) {
  62233. err = errors.New("crypto/tls: failed to parse certificate PEM data");
  62234. return [cert, err];
  62235. }
  62236. keyDERBlock = ptrType$29.nil;
  62237. /* while (true) { */ case 4:
  62238. _r$1 = pem.Decode(keyPEMBlock); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  62239. _tuple$1 = _r$1; keyDERBlock = _tuple$1[0]; keyPEMBlock = _tuple$1[1];
  62240. if (keyDERBlock === ptrType$29.nil) {
  62241. err = errors.New("crypto/tls: failed to parse key PEM data");
  62242. return [cert, err];
  62243. }
  62244. if (keyDERBlock.Type === "PRIVATE KEY" || strings.HasSuffix(keyDERBlock.Type, " PRIVATE KEY")) {
  62245. /* break; */ $s = 5; continue;
  62246. }
  62247. /* } */ $s = 4; continue; case 5:
  62248. _r$2 = parsePrivateKey(keyDERBlock.Bytes); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  62249. _tuple$2 = _r$2; cert.PrivateKey = _tuple$2[0]; err = _tuple$2[1];
  62250. if (!($interfaceIsEqual(err, $ifaceNil))) {
  62251. return [cert, err];
  62252. }
  62253. _r$3 = x509.ParseCertificate((x = cert.Certificate, (0 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 0]))); /* */ $s = 8; case 8: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  62254. _tuple$3 = _r$3; x509Cert = _tuple$3[0]; err = _tuple$3[1];
  62255. if (!($interfaceIsEqual(err, $ifaceNil))) {
  62256. return [cert, err];
  62257. }
  62258. _ref = x509Cert.PublicKey;
  62259. if ($assertType(_ref, ptrType$15, true)[1]) {
  62260. pub = _ref.$val;
  62261. _tuple$4 = $assertType(cert.PrivateKey, ptrType$28, true); priv = _tuple$4[0]; ok = _tuple$4[1];
  62262. if (!ok) {
  62263. err = errors.New("crypto/tls: private key type does not match public key type");
  62264. return [cert, err];
  62265. }
  62266. if (!((pub.N.Cmp(priv.PublicKey.N) === 0))) {
  62267. err = errors.New("crypto/tls: private key does not match public key");
  62268. return [cert, err];
  62269. }
  62270. } else if ($assertType(_ref, ptrType$16, true)[1]) {
  62271. pub$1 = _ref.$val;
  62272. _tuple$5 = $assertType(cert.PrivateKey, ptrType$27, true); priv$1 = _tuple$5[0]; ok$1 = _tuple$5[1];
  62273. if (!ok$1) {
  62274. err = errors.New("crypto/tls: private key type does not match public key type");
  62275. return [cert, err];
  62276. }
  62277. if (!((pub$1.X.Cmp(priv$1.PublicKey.X) === 0)) || !((pub$1.Y.Cmp(priv$1.PublicKey.Y) === 0))) {
  62278. err = errors.New("crypto/tls: private key does not match public key");
  62279. return [cert, err];
  62280. }
  62281. } else {
  62282. pub$2 = _ref;
  62283. err = errors.New("crypto/tls: unknown public key algorithm");
  62284. return [cert, err];
  62285. }
  62286. return [cert, err];
  62287. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: X509KeyPair }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._ref = _ref; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f._tuple$4 = _tuple$4; $f._tuple$5 = _tuple$5; $f.cert = cert; $f.certDERBlock = certDERBlock; $f.certPEMBlock = certPEMBlock; $f.err = err; $f.keyDERBlock = keyDERBlock; $f.keyPEMBlock = keyPEMBlock; $f.ok = ok; $f.ok$1 = ok$1; $f.priv = priv; $f.priv$1 = priv$1; $f.pub = pub; $f.pub$1 = pub$1; $f.pub$2 = pub$2; $f.x = x; $f.x509Cert = x509Cert; $f.$s = $s; $f.$r = $r; return $f;
  62288. };
  62289. $pkg.X509KeyPair = X509KeyPair;
  62290. parsePrivateKey = function(der) {
  62291. var $ptr, _r, _r$1, _r$2, _ref, _tuple, _tuple$1, _tuple$2, der, err, err$1, err$2, key, key$1, key$2, key$3, key$4, $s, $r;
  62292. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _ref = $f._ref; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; der = $f.der; err = $f.err; err$1 = $f.err$1; err$2 = $f.err$2; key = $f.key; key$1 = $f.key$1; key$2 = $f.key$2; key$3 = $f.key$3; key$4 = $f.key$4; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  62293. _r = x509.ParsePKCS1PrivateKey(der); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  62294. _tuple = _r; key = _tuple[0]; err = _tuple[1];
  62295. /* */ if ($interfaceIsEqual(err, $ifaceNil)) { $s = 2; continue; }
  62296. /* */ $s = 3; continue;
  62297. /* if ($interfaceIsEqual(err, $ifaceNil)) { */ case 2:
  62298. return [key, $ifaceNil];
  62299. /* } */ case 3:
  62300. _r$1 = x509.ParsePKCS8PrivateKey(der); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  62301. _tuple$1 = _r$1; key$1 = _tuple$1[0]; err$1 = _tuple$1[1];
  62302. /* */ if ($interfaceIsEqual(err$1, $ifaceNil)) { $s = 5; continue; }
  62303. /* */ $s = 6; continue;
  62304. /* if ($interfaceIsEqual(err$1, $ifaceNil)) { */ case 5:
  62305. _ref = key$1;
  62306. if ($assertType(_ref, ptrType$28, true)[1] || $assertType(_ref, ptrType$27, true)[1]) {
  62307. key$2 = _ref;
  62308. return [key$2, $ifaceNil];
  62309. } else {
  62310. key$3 = _ref;
  62311. return [$ifaceNil, errors.New("crypto/tls: found unknown private key type in PKCS#8 wrapping")];
  62312. }
  62313. /* } */ case 6:
  62314. _r$2 = x509.ParseECPrivateKey(der); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  62315. _tuple$2 = _r$2; key$4 = _tuple$2[0]; err$2 = _tuple$2[1];
  62316. /* */ if ($interfaceIsEqual(err$2, $ifaceNil)) { $s = 8; continue; }
  62317. /* */ $s = 9; continue;
  62318. /* if ($interfaceIsEqual(err$2, $ifaceNil)) { */ case 8:
  62319. return [key$4, $ifaceNil];
  62320. /* } */ case 9:
  62321. return [$ifaceNil, errors.New("crypto/tls: failed to parse private key")];
  62322. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: parsePrivateKey }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._ref = _ref; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f.der = der; $f.err = err; $f.err$1 = err$1; $f.err$2 = err$2; $f.key = key; $f.key$1 = key$1; $f.key$2 = key$2; $f.key$3 = key$3; $f.key$4 = key$4; $f.$s = $s; $f.$r = $r; return $f;
  62323. };
  62324. alert.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}];
  62325. ptrType$30.methods = [{prop: "NonceSize", name: "NonceSize", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Overhead", name: "Overhead", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Seal", name: "Seal", pkg: "", typ: $funcType([sliceType$4, sliceType$4, sliceType$4, sliceType$4], [sliceType$4], false)}, {prop: "Open", name: "Open", pkg: "", typ: $funcType([sliceType$4, sliceType$4, sliceType$4, sliceType$4], [sliceType$4, $error], false)}];
  62326. ssl30MAC.methods = [{prop: "Size", name: "Size", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "MAC", name: "MAC", pkg: "", typ: $funcType([sliceType$4, sliceType$4, sliceType$4, sliceType$4], [sliceType$4], false)}];
  62327. tls10MAC.methods = [{prop: "Size", name: "Size", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "MAC", name: "MAC", pkg: "", typ: $funcType([sliceType$4, sliceType$4, sliceType$4, sliceType$4], [sliceType$4], false)}];
  62328. ptrType$2.methods = [{prop: "serverInit", name: "serverInit", pkg: "crypto/tls", typ: $funcType([], [], false)}, {prop: "rand", name: "rand", pkg: "crypto/tls", typ: $funcType([], [io.Reader], false)}, {prop: "time", name: "time", pkg: "crypto/tls", typ: $funcType([], [time.Time], false)}, {prop: "cipherSuites", name: "cipherSuites", pkg: "crypto/tls", typ: $funcType([], [sliceType], false)}, {prop: "minVersion", name: "minVersion", pkg: "crypto/tls", typ: $funcType([], [$Uint16], false)}, {prop: "maxVersion", name: "maxVersion", pkg: "crypto/tls", typ: $funcType([], [$Uint16], false)}, {prop: "curvePreferences", name: "curvePreferences", pkg: "crypto/tls", typ: $funcType([], [sliceType$3], false)}, {prop: "mutualVersion", name: "mutualVersion", pkg: "crypto/tls", typ: $funcType([$Uint16], [$Uint16, $Bool], false)}, {prop: "getCertificate", name: "getCertificate", pkg: "crypto/tls", typ: $funcType([ptrType$31], [ptrType$3, $error], false)}, {prop: "BuildNameToCertificate", name: "BuildNameToCertificate", pkg: "", typ: $funcType([], [], false)}];
  62329. ptrType$10.methods = [{prop: "LocalAddr", name: "LocalAddr", pkg: "", typ: $funcType([], [net.Addr], false)}, {prop: "RemoteAddr", name: "RemoteAddr", pkg: "", typ: $funcType([], [net.Addr], false)}, {prop: "SetDeadline", name: "SetDeadline", pkg: "", typ: $funcType([time.Time], [$error], false)}, {prop: "SetReadDeadline", name: "SetReadDeadline", pkg: "", typ: $funcType([time.Time], [$error], false)}, {prop: "SetWriteDeadline", name: "SetWriteDeadline", pkg: "", typ: $funcType([time.Time], [$error], false)}, {prop: "readRecord", name: "readRecord", pkg: "crypto/tls", typ: $funcType([recordType], [$error], false)}, {prop: "sendAlertLocked", name: "sendAlertLocked", pkg: "crypto/tls", typ: $funcType([alert], [$error], false)}, {prop: "sendAlert", name: "sendAlert", pkg: "crypto/tls", typ: $funcType([alert], [$error], false)}, {prop: "writeRecord", name: "writeRecord", pkg: "crypto/tls", typ: $funcType([recordType, sliceType$4], [$Int, $error], false)}, {prop: "readHandshake", name: "readHandshake", pkg: "crypto/tls", typ: $funcType([], [$emptyInterface, $error], false)}, {prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType$4], [$Int, $error], false)}, {prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType$4], [$Int, $error], false)}, {prop: "Close", name: "Close", pkg: "", typ: $funcType([], [$error], false)}, {prop: "Handshake", name: "Handshake", pkg: "", typ: $funcType([], [$error], false)}, {prop: "ConnectionState", name: "ConnectionState", pkg: "", typ: $funcType([], [ConnectionState], false)}, {prop: "OCSPResponse", name: "OCSPResponse", pkg: "", typ: $funcType([], [sliceType$4], false)}, {prop: "VerifyHostname", name: "VerifyHostname", pkg: "", typ: $funcType([$String], [$error], false)}, {prop: "clientHandshake", name: "clientHandshake", pkg: "crypto/tls", typ: $funcType([], [$error], false)}, {prop: "serverHandshake", name: "serverHandshake", pkg: "crypto/tls", typ: $funcType([], [$error], false)}, {prop: "tryCipherSuite", name: "tryCipherSuite", pkg: "crypto/tls", typ: $funcType([$Uint16, sliceType, $Uint16, $Bool, $Bool], [ptrType], false)}, {prop: "encryptTicket", name: "encryptTicket", pkg: "crypto/tls", typ: $funcType([ptrType$26], [sliceType$4, $error], false)}, {prop: "decryptTicket", name: "decryptTicket", pkg: "crypto/tls", typ: $funcType([sliceType$4], [ptrType$26, $Bool], false)}];
  62330. ptrType$33.methods = [{prop: "setErrorLocked", name: "setErrorLocked", pkg: "crypto/tls", typ: $funcType([$error], [$error], false)}, {prop: "error", name: "error", pkg: "crypto/tls", typ: $funcType([], [$error], false)}, {prop: "prepareCipherSpec", name: "prepareCipherSpec", pkg: "crypto/tls", typ: $funcType([$Uint16, $emptyInterface, macFunction], [], false)}, {prop: "changeCipherSpec", name: "changeCipherSpec", pkg: "crypto/tls", typ: $funcType([], [$error], false)}, {prop: "incSeq", name: "incSeq", pkg: "crypto/tls", typ: $funcType([], [], false)}, {prop: "resetSeq", name: "resetSeq", pkg: "crypto/tls", typ: $funcType([], [], false)}, {prop: "decrypt", name: "decrypt", pkg: "crypto/tls", typ: $funcType([ptrType$8], [$Bool, $Int, alert], false)}, {prop: "encrypt", name: "encrypt", pkg: "crypto/tls", typ: $funcType([ptrType$8, $Int], [$Bool, alert], false)}, {prop: "newBlock", name: "newBlock", pkg: "crypto/tls", typ: $funcType([], [ptrType$8], false)}, {prop: "freeBlock", name: "freeBlock", pkg: "crypto/tls", typ: $funcType([ptrType$8], [], false)}, {prop: "splitBlock", name: "splitBlock", pkg: "crypto/tls", typ: $funcType([ptrType$8, $Int], [ptrType$8, ptrType$8], false)}];
  62331. ptrType$8.methods = [{prop: "resize", name: "resize", pkg: "crypto/tls", typ: $funcType([$Int], [], false)}, {prop: "reserve", name: "reserve", pkg: "crypto/tls", typ: $funcType([$Int], [], false)}, {prop: "readFromUntil", name: "readFromUntil", pkg: "crypto/tls", typ: $funcType([io.Reader, $Int], [$error], false)}, {prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType$4], [$Int, $error], false)}];
  62332. ptrType$34.methods = [{prop: "doFullHandshake", name: "doFullHandshake", pkg: "crypto/tls", typ: $funcType([], [$error], false)}, {prop: "establishKeys", name: "establishKeys", pkg: "crypto/tls", typ: $funcType([], [$error], false)}, {prop: "serverResumedSession", name: "serverResumedSession", pkg: "crypto/tls", typ: $funcType([], [$Bool], false)}, {prop: "processServerHello", name: "processServerHello", pkg: "crypto/tls", typ: $funcType([], [$Bool, $error], false)}, {prop: "readFinished", name: "readFinished", pkg: "crypto/tls", typ: $funcType([sliceType$4], [$error], false)}, {prop: "readSessionTicket", name: "readSessionTicket", pkg: "crypto/tls", typ: $funcType([], [$error], false)}, {prop: "sendFinished", name: "sendFinished", pkg: "crypto/tls", typ: $funcType([sliceType$4], [$error], false)}];
  62333. ptrType$11.methods = [{prop: "equal", name: "equal", pkg: "crypto/tls", typ: $funcType([$emptyInterface], [$Bool], false)}, {prop: "marshal", name: "marshal", pkg: "crypto/tls", typ: $funcType([], [sliceType$4], false)}, {prop: "unmarshal", name: "unmarshal", pkg: "crypto/tls", typ: $funcType([sliceType$4], [$Bool], false)}];
  62334. ptrType$9.methods = [{prop: "equal", name: "equal", pkg: "crypto/tls", typ: $funcType([$emptyInterface], [$Bool], false)}, {prop: "marshal", name: "marshal", pkg: "crypto/tls", typ: $funcType([], [sliceType$4], false)}, {prop: "unmarshal", name: "unmarshal", pkg: "crypto/tls", typ: $funcType([sliceType$4], [$Bool], false)}];
  62335. ptrType$12.methods = [{prop: "equal", name: "equal", pkg: "crypto/tls", typ: $funcType([$emptyInterface], [$Bool], false)}, {prop: "marshal", name: "marshal", pkg: "crypto/tls", typ: $funcType([], [sliceType$4], false)}, {prop: "unmarshal", name: "unmarshal", pkg: "crypto/tls", typ: $funcType([sliceType$4], [$Bool], false)}];
  62336. ptrType$18.methods = [{prop: "equal", name: "equal", pkg: "crypto/tls", typ: $funcType([$emptyInterface], [$Bool], false)}, {prop: "marshal", name: "marshal", pkg: "crypto/tls", typ: $funcType([], [sliceType$4], false)}, {prop: "unmarshal", name: "unmarshal", pkg: "crypto/tls", typ: $funcType([sliceType$4], [$Bool], false)}];
  62337. ptrType$17.methods = [{prop: "equal", name: "equal", pkg: "crypto/tls", typ: $funcType([$emptyInterface], [$Bool], false)}, {prop: "marshal", name: "marshal", pkg: "crypto/tls", typ: $funcType([], [sliceType$4], false)}, {prop: "unmarshal", name: "unmarshal", pkg: "crypto/tls", typ: $funcType([sliceType$4], [$Bool], false)}];
  62338. ptrType$20.methods = [{prop: "equal", name: "equal", pkg: "crypto/tls", typ: $funcType([$emptyInterface], [$Bool], false)}, {prop: "marshal", name: "marshal", pkg: "crypto/tls", typ: $funcType([], [sliceType$4], false)}, {prop: "unmarshal", name: "unmarshal", pkg: "crypto/tls", typ: $funcType([sliceType$4], [$Bool], false)}];
  62339. ptrType$21.methods = [{prop: "equal", name: "equal", pkg: "crypto/tls", typ: $funcType([$emptyInterface], [$Bool], false)}, {prop: "marshal", name: "marshal", pkg: "crypto/tls", typ: $funcType([], [sliceType$4], false)}, {prop: "unmarshal", name: "unmarshal", pkg: "crypto/tls", typ: $funcType([sliceType$4], [$Bool], false)}];
  62340. ptrType$22.methods = [{prop: "equal", name: "equal", pkg: "crypto/tls", typ: $funcType([$emptyInterface], [$Bool], false)}, {prop: "marshal", name: "marshal", pkg: "crypto/tls", typ: $funcType([], [sliceType$4], false)}, {prop: "unmarshal", name: "unmarshal", pkg: "crypto/tls", typ: $funcType([sliceType$4], [$Bool], false)}];
  62341. ptrType$24.methods = [{prop: "equal", name: "equal", pkg: "crypto/tls", typ: $funcType([$emptyInterface], [$Bool], false)}, {prop: "marshal", name: "marshal", pkg: "crypto/tls", typ: $funcType([], [sliceType$4], false)}, {prop: "unmarshal", name: "unmarshal", pkg: "crypto/tls", typ: $funcType([sliceType$4], [$Bool], false)}];
  62342. ptrType$19.methods = [{prop: "equal", name: "equal", pkg: "crypto/tls", typ: $funcType([$emptyInterface], [$Bool], false)}, {prop: "marshal", name: "marshal", pkg: "crypto/tls", typ: $funcType([], [sliceType$4], false)}, {prop: "unmarshal", name: "unmarshal", pkg: "crypto/tls", typ: $funcType([sliceType$4], [$Bool], false)}];
  62343. ptrType$25.methods = [{prop: "equal", name: "equal", pkg: "crypto/tls", typ: $funcType([$emptyInterface], [$Bool], false)}, {prop: "marshal", name: "marshal", pkg: "crypto/tls", typ: $funcType([], [sliceType$4], false)}, {prop: "unmarshal", name: "unmarshal", pkg: "crypto/tls", typ: $funcType([sliceType$4], [$Bool], false)}];
  62344. ptrType$23.methods = [{prop: "equal", name: "equal", pkg: "crypto/tls", typ: $funcType([$emptyInterface], [$Bool], false)}, {prop: "marshal", name: "marshal", pkg: "crypto/tls", typ: $funcType([], [sliceType$4], false)}, {prop: "unmarshal", name: "unmarshal", pkg: "crypto/tls", typ: $funcType([sliceType$4], [$Bool], false)}];
  62345. ptrType$35.methods = [{prop: "readClientHello", name: "readClientHello", pkg: "crypto/tls", typ: $funcType([], [$Bool, $error], false)}, {prop: "checkForResumption", name: "checkForResumption", pkg: "crypto/tls", typ: $funcType([], [$Bool], false)}, {prop: "doResumeHandshake", name: "doResumeHandshake", pkg: "crypto/tls", typ: $funcType([], [$error], false)}, {prop: "doFullHandshake", name: "doFullHandshake", pkg: "crypto/tls", typ: $funcType([], [$error], false)}, {prop: "establishKeys", name: "establishKeys", pkg: "crypto/tls", typ: $funcType([], [$error], false)}, {prop: "readFinished", name: "readFinished", pkg: "crypto/tls", typ: $funcType([sliceType$4], [$error], false)}, {prop: "sendSessionTicket", name: "sendSessionTicket", pkg: "crypto/tls", typ: $funcType([], [$error], false)}, {prop: "sendFinished", name: "sendFinished", pkg: "crypto/tls", typ: $funcType([sliceType$4], [$error], false)}, {prop: "processCertsFromClient", name: "processCertsFromClient", pkg: "crypto/tls", typ: $funcType([sliceType$6], [crypto.PublicKey, $error], false)}];
  62346. rsaKeyAgreement.methods = [{prop: "generateServerKeyExchange", name: "generateServerKeyExchange", pkg: "crypto/tls", typ: $funcType([ptrType$2, ptrType$3, ptrType$11, ptrType$9], [ptrType$18, $error], false)}, {prop: "processClientKeyExchange", name: "processClientKeyExchange", pkg: "crypto/tls", typ: $funcType([ptrType$2, ptrType$3, ptrType$21, $Uint16], [sliceType$4, $error], false)}, {prop: "processServerKeyExchange", name: "processServerKeyExchange", pkg: "crypto/tls", typ: $funcType([ptrType$2, ptrType$11, ptrType$9, ptrType$13, ptrType$18], [$error], false)}, {prop: "generateClientKeyExchange", name: "generateClientKeyExchange", pkg: "crypto/tls", typ: $funcType([ptrType$2, ptrType$11, ptrType$13], [sliceType$4, ptrType$21, $error], false)}];
  62347. ptrType$36.methods = [{prop: "generateServerKeyExchange", name: "generateServerKeyExchange", pkg: "crypto/tls", typ: $funcType([ptrType$2, ptrType$3, ptrType$11, ptrType$9], [ptrType$18, $error], false)}, {prop: "processClientKeyExchange", name: "processClientKeyExchange", pkg: "crypto/tls", typ: $funcType([ptrType$2, ptrType$3, ptrType$21, $Uint16], [sliceType$4, $error], false)}, {prop: "processServerKeyExchange", name: "processServerKeyExchange", pkg: "crypto/tls", typ: $funcType([ptrType$2, ptrType$11, ptrType$9, ptrType$13, ptrType$18], [$error], false)}, {prop: "generateClientKeyExchange", name: "generateClientKeyExchange", pkg: "crypto/tls", typ: $funcType([ptrType$2, ptrType$11, ptrType$13], [sliceType$4, ptrType$21, $error], false)}];
  62348. finishedHash.methods = [{prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType$4], [$Int, $error], false)}, {prop: "clientSum", name: "clientSum", pkg: "crypto/tls", typ: $funcType([sliceType$4], [sliceType$4], false)}, {prop: "serverSum", name: "serverSum", pkg: "crypto/tls", typ: $funcType([sliceType$4], [sliceType$4], false)}, {prop: "hashForClientCertificate", name: "hashForClientCertificate", pkg: "crypto/tls", typ: $funcType([$Uint8], [sliceType$4, crypto.Hash, $Uint8], false)}];
  62349. ptrType$26.methods = [{prop: "equal", name: "equal", pkg: "crypto/tls", typ: $funcType([$emptyInterface], [$Bool], false)}, {prop: "marshal", name: "marshal", pkg: "crypto/tls", typ: $funcType([], [sliceType$4], false)}, {prop: "unmarshal", name: "unmarshal", pkg: "crypto/tls", typ: $funcType([sliceType$4], [$Bool], false)}];
  62350. ptrType$37.methods = [{prop: "Accept", name: "Accept", pkg: "", typ: $funcType([], [net.Conn, $error], false)}];
  62351. keyAgreement.init([{prop: "generateClientKeyExchange", name: "generateClientKeyExchange", pkg: "crypto/tls", typ: $funcType([ptrType$2, ptrType$11, ptrType$13], [sliceType$4, ptrType$21, $error], false)}, {prop: "generateServerKeyExchange", name: "generateServerKeyExchange", pkg: "crypto/tls", typ: $funcType([ptrType$2, ptrType$3, ptrType$11, ptrType$9], [ptrType$18, $error], false)}, {prop: "processClientKeyExchange", name: "processClientKeyExchange", pkg: "crypto/tls", typ: $funcType([ptrType$2, ptrType$3, ptrType$21, $Uint16], [sliceType$4, $error], false)}, {prop: "processServerKeyExchange", name: "processServerKeyExchange", pkg: "crypto/tls", typ: $funcType([ptrType$2, ptrType$11, ptrType$9, ptrType$13, ptrType$18], [$error], false)}]);
  62352. cipherSuite.init([{prop: "id", name: "id", pkg: "crypto/tls", typ: $Uint16, tag: ""}, {prop: "keyLen", name: "keyLen", pkg: "crypto/tls", typ: $Int, tag: ""}, {prop: "macLen", name: "macLen", pkg: "crypto/tls", typ: $Int, tag: ""}, {prop: "ivLen", name: "ivLen", pkg: "crypto/tls", typ: $Int, tag: ""}, {prop: "ka", name: "ka", pkg: "crypto/tls", typ: funcType, tag: ""}, {prop: "flags", name: "flags", pkg: "crypto/tls", typ: $Int, tag: ""}, {prop: "cipher", name: "cipher", pkg: "crypto/tls", typ: funcType$1, tag: ""}, {prop: "mac", name: "mac", pkg: "crypto/tls", typ: funcType$2, tag: ""}, {prop: "aead", name: "aead", pkg: "crypto/tls", typ: funcType$3, tag: ""}]);
  62353. macFunction.init([{prop: "MAC", name: "MAC", pkg: "", typ: $funcType([sliceType$4, sliceType$4, sliceType$4, sliceType$4], [sliceType$4], false)}, {prop: "Size", name: "Size", pkg: "", typ: $funcType([], [$Int], false)}]);
  62354. fixedNonceAEAD.init([{prop: "sealNonce", name: "sealNonce", pkg: "crypto/tls", typ: sliceType$4, tag: ""}, {prop: "openNonce", name: "openNonce", pkg: "crypto/tls", typ: sliceType$4, tag: ""}, {prop: "aead", name: "aead", pkg: "crypto/tls", typ: cipher.AEAD, tag: ""}]);
  62355. ssl30MAC.init([{prop: "h", name: "h", pkg: "crypto/tls", typ: hash.Hash, tag: ""}, {prop: "key", name: "key", pkg: "crypto/tls", typ: sliceType$4, tag: ""}]);
  62356. tls10MAC.init([{prop: "h", name: "h", pkg: "crypto/tls", typ: hash.Hash, tag: ""}]);
  62357. signatureAndHash.init([{prop: "hash", name: "hash", pkg: "crypto/tls", typ: $Uint8, tag: ""}, {prop: "signature", name: "signature", pkg: "crypto/tls", typ: $Uint8, tag: ""}]);
  62358. ConnectionState.init([{prop: "Version", name: "Version", pkg: "", typ: $Uint16, tag: ""}, {prop: "HandshakeComplete", name: "HandshakeComplete", pkg: "", typ: $Bool, tag: ""}, {prop: "DidResume", name: "DidResume", pkg: "", typ: $Bool, tag: ""}, {prop: "CipherSuite", name: "CipherSuite", pkg: "", typ: $Uint16, tag: ""}, {prop: "NegotiatedProtocol", name: "NegotiatedProtocol", pkg: "", typ: $String, tag: ""}, {prop: "NegotiatedProtocolIsMutual", name: "NegotiatedProtocolIsMutual", pkg: "", typ: $Bool, tag: ""}, {prop: "ServerName", name: "ServerName", pkg: "", typ: $String, tag: ""}, {prop: "PeerCertificates", name: "PeerCertificates", pkg: "", typ: sliceType$8, tag: ""}, {prop: "VerifiedChains", name: "VerifiedChains", pkg: "", typ: sliceType$10, tag: ""}, {prop: "TLSUnique", name: "TLSUnique", pkg: "", typ: sliceType$4, tag: ""}]);
  62359. ClientSessionState.init([{prop: "sessionTicket", name: "sessionTicket", pkg: "crypto/tls", typ: sliceType$4, tag: ""}, {prop: "vers", name: "vers", pkg: "crypto/tls", typ: $Uint16, tag: ""}, {prop: "cipherSuite", name: "cipherSuite", pkg: "crypto/tls", typ: $Uint16, tag: ""}, {prop: "masterSecret", name: "masterSecret", pkg: "crypto/tls", typ: sliceType$4, tag: ""}, {prop: "serverCertificates", name: "serverCertificates", pkg: "crypto/tls", typ: sliceType$8, tag: ""}]);
  62360. ClientSessionCache.init([{prop: "Get", name: "Get", pkg: "", typ: $funcType([$String], [ptrType$7, $Bool], false)}, {prop: "Put", name: "Put", pkg: "", typ: $funcType([$String, ptrType$7], [], false)}]);
  62361. ClientHelloInfo.init([{prop: "CipherSuites", name: "CipherSuites", pkg: "", typ: sliceType, tag: ""}, {prop: "ServerName", name: "ServerName", pkg: "", typ: $String, tag: ""}, {prop: "SupportedCurves", name: "SupportedCurves", pkg: "", typ: sliceType$3, tag: ""}, {prop: "SupportedPoints", name: "SupportedPoints", pkg: "", typ: sliceType$4, tag: ""}]);
  62362. Config.init([{prop: "Rand", name: "Rand", pkg: "", typ: io.Reader, tag: ""}, {prop: "Time", name: "Time", pkg: "", typ: funcType$4, tag: ""}, {prop: "Certificates", name: "Certificates", pkg: "", typ: sliceType$11, tag: ""}, {prop: "NameToCertificate", name: "NameToCertificate", pkg: "", typ: mapType, tag: ""}, {prop: "GetCertificate", name: "GetCertificate", pkg: "", typ: funcType$5, tag: ""}, {prop: "RootCAs", name: "RootCAs", pkg: "", typ: ptrType$14, tag: ""}, {prop: "NextProtos", name: "NextProtos", pkg: "", typ: sliceType$7, tag: ""}, {prop: "ServerName", name: "ServerName", pkg: "", typ: $String, tag: ""}, {prop: "ClientAuth", name: "ClientAuth", pkg: "", typ: ClientAuthType, tag: ""}, {prop: "ClientCAs", name: "ClientCAs", pkg: "", typ: ptrType$14, tag: ""}, {prop: "InsecureSkipVerify", name: "InsecureSkipVerify", pkg: "", typ: $Bool, tag: ""}, {prop: "CipherSuites", name: "CipherSuites", pkg: "", typ: sliceType, tag: ""}, {prop: "PreferServerCipherSuites", name: "PreferServerCipherSuites", pkg: "", typ: $Bool, tag: ""}, {prop: "SessionTicketsDisabled", name: "SessionTicketsDisabled", pkg: "", typ: $Bool, tag: ""}, {prop: "SessionTicketKey", name: "SessionTicketKey", pkg: "", typ: arrayType$6, tag: ""}, {prop: "ClientSessionCache", name: "ClientSessionCache", pkg: "", typ: ClientSessionCache, tag: ""}, {prop: "MinVersion", name: "MinVersion", pkg: "", typ: $Uint16, tag: ""}, {prop: "MaxVersion", name: "MaxVersion", pkg: "", typ: $Uint16, tag: ""}, {prop: "CurvePreferences", name: "CurvePreferences", pkg: "", typ: sliceType$3, tag: ""}, {prop: "serverInitOnce", name: "serverInitOnce", pkg: "crypto/tls", typ: sync.Once, tag: ""}]);
  62363. Certificate.init([{prop: "Certificate", name: "Certificate", pkg: "", typ: sliceType$6, tag: ""}, {prop: "PrivateKey", name: "PrivateKey", pkg: "", typ: crypto.PrivateKey, tag: ""}, {prop: "OCSPStaple", name: "OCSPStaple", pkg: "", typ: sliceType$4, tag: ""}, {prop: "Leaf", name: "Leaf", pkg: "", typ: ptrType$13, tag: ""}]);
  62364. ecdsaSignature.init([{prop: "R", name: "R", pkg: "", typ: ptrType$1, tag: ""}, {prop: "S", name: "S", pkg: "", typ: ptrType$1, tag: ""}]);
  62365. Conn.init([{prop: "conn", name: "conn", pkg: "crypto/tls", typ: net.Conn, tag: ""}, {prop: "isClient", name: "isClient", pkg: "crypto/tls", typ: $Bool, tag: ""}, {prop: "handshakeMutex", name: "handshakeMutex", pkg: "crypto/tls", typ: sync.Mutex, tag: ""}, {prop: "handshakeErr", name: "handshakeErr", pkg: "crypto/tls", typ: $error, tag: ""}, {prop: "vers", name: "vers", pkg: "crypto/tls", typ: $Uint16, tag: ""}, {prop: "haveVers", name: "haveVers", pkg: "crypto/tls", typ: $Bool, tag: ""}, {prop: "config", name: "config", pkg: "crypto/tls", typ: ptrType$2, tag: ""}, {prop: "handshakeComplete", name: "handshakeComplete", pkg: "crypto/tls", typ: $Bool, tag: ""}, {prop: "didResume", name: "didResume", pkg: "crypto/tls", typ: $Bool, tag: ""}, {prop: "cipherSuite", name: "cipherSuite", pkg: "crypto/tls", typ: $Uint16, tag: ""}, {prop: "ocspResponse", name: "ocspResponse", pkg: "crypto/tls", typ: sliceType$4, tag: ""}, {prop: "peerCertificates", name: "peerCertificates", pkg: "crypto/tls", typ: sliceType$8, tag: ""}, {prop: "verifiedChains", name: "verifiedChains", pkg: "crypto/tls", typ: sliceType$10, tag: ""}, {prop: "serverName", name: "serverName", pkg: "crypto/tls", typ: $String, tag: ""}, {prop: "firstFinished", name: "firstFinished", pkg: "crypto/tls", typ: arrayType$4, tag: ""}, {prop: "clientProtocol", name: "clientProtocol", pkg: "crypto/tls", typ: $String, tag: ""}, {prop: "clientProtocolFallback", name: "clientProtocolFallback", pkg: "crypto/tls", typ: $Bool, tag: ""}, {prop: "in$17", name: "in", pkg: "crypto/tls", typ: halfConn, tag: ""}, {prop: "out", name: "out", pkg: "crypto/tls", typ: halfConn, tag: ""}, {prop: "rawInput", name: "rawInput", pkg: "crypto/tls", typ: ptrType$8, tag: ""}, {prop: "input", name: "input", pkg: "crypto/tls", typ: ptrType$8, tag: ""}, {prop: "hand", name: "hand", pkg: "crypto/tls", typ: bytes.Buffer, tag: ""}, {prop: "tmp", name: "tmp", pkg: "crypto/tls", typ: arrayType$5, tag: ""}]);
  62366. halfConn.init([{prop: "Mutex", name: "", pkg: "", typ: sync.Mutex, tag: ""}, {prop: "err", name: "err", pkg: "crypto/tls", typ: $error, tag: ""}, {prop: "version", name: "version", pkg: "crypto/tls", typ: $Uint16, tag: ""}, {prop: "cipher", name: "cipher", pkg: "crypto/tls", typ: $emptyInterface, tag: ""}, {prop: "mac", name: "mac", pkg: "crypto/tls", typ: macFunction, tag: ""}, {prop: "seq", name: "seq", pkg: "crypto/tls", typ: arrayType$7, tag: ""}, {prop: "bfree", name: "bfree", pkg: "crypto/tls", typ: ptrType$8, tag: ""}, {prop: "nextCipher", name: "nextCipher", pkg: "crypto/tls", typ: $emptyInterface, tag: ""}, {prop: "nextMac", name: "nextMac", pkg: "crypto/tls", typ: macFunction, tag: ""}, {prop: "inDigestBuf", name: "inDigestBuf", pkg: "crypto/tls", typ: sliceType$4, tag: ""}, {prop: "outDigestBuf", name: "outDigestBuf", pkg: "crypto/tls", typ: sliceType$4, tag: ""}]);
  62367. cbcMode.init([{prop: "BlockSize", name: "BlockSize", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "CryptBlocks", name: "CryptBlocks", pkg: "", typ: $funcType([sliceType$4, sliceType$4], [], false)}, {prop: "SetIV", name: "SetIV", pkg: "", typ: $funcType([sliceType$4], [], false)}]);
  62368. block.init([{prop: "data", name: "data", pkg: "crypto/tls", typ: sliceType$4, tag: ""}, {prop: "off", name: "off", pkg: "crypto/tls", typ: $Int, tag: ""}, {prop: "link", name: "link", pkg: "crypto/tls", typ: ptrType$8, tag: ""}]);
  62369. clientHandshakeState.init([{prop: "c", name: "c", pkg: "crypto/tls", typ: ptrType$10, tag: ""}, {prop: "serverHello", name: "serverHello", pkg: "crypto/tls", typ: ptrType$9, tag: ""}, {prop: "hello", name: "hello", pkg: "crypto/tls", typ: ptrType$11, tag: ""}, {prop: "suite", name: "suite", pkg: "crypto/tls", typ: ptrType, tag: ""}, {prop: "finishedHash", name: "finishedHash", pkg: "crypto/tls", typ: finishedHash, tag: ""}, {prop: "masterSecret", name: "masterSecret", pkg: "crypto/tls", typ: sliceType$4, tag: ""}, {prop: "session", name: "session", pkg: "crypto/tls", typ: ptrType$7, tag: ""}]);
  62370. clientHelloMsg.init([{prop: "raw", name: "raw", pkg: "crypto/tls", typ: sliceType$4, tag: ""}, {prop: "vers", name: "vers", pkg: "crypto/tls", typ: $Uint16, tag: ""}, {prop: "random", name: "random", pkg: "crypto/tls", typ: sliceType$4, tag: ""}, {prop: "sessionId", name: "sessionId", pkg: "crypto/tls", typ: sliceType$4, tag: ""}, {prop: "cipherSuites", name: "cipherSuites", pkg: "crypto/tls", typ: sliceType, tag: ""}, {prop: "compressionMethods", name: "compressionMethods", pkg: "crypto/tls", typ: sliceType$4, tag: ""}, {prop: "nextProtoNeg", name: "nextProtoNeg", pkg: "crypto/tls", typ: $Bool, tag: ""}, {prop: "serverName", name: "serverName", pkg: "crypto/tls", typ: $String, tag: ""}, {prop: "ocspStapling", name: "ocspStapling", pkg: "crypto/tls", typ: $Bool, tag: ""}, {prop: "supportedCurves", name: "supportedCurves", pkg: "crypto/tls", typ: sliceType$3, tag: ""}, {prop: "supportedPoints", name: "supportedPoints", pkg: "crypto/tls", typ: sliceType$4, tag: ""}, {prop: "ticketSupported", name: "ticketSupported", pkg: "crypto/tls", typ: $Bool, tag: ""}, {prop: "sessionTicket", name: "sessionTicket", pkg: "crypto/tls", typ: sliceType$4, tag: ""}, {prop: "signatureAndHashes", name: "signatureAndHashes", pkg: "crypto/tls", typ: sliceType$2, tag: ""}, {prop: "secureRenegotiation", name: "secureRenegotiation", pkg: "crypto/tls", typ: $Bool, tag: ""}, {prop: "alpnProtocols", name: "alpnProtocols", pkg: "crypto/tls", typ: sliceType$7, tag: ""}]);
  62371. serverHelloMsg.init([{prop: "raw", name: "raw", pkg: "crypto/tls", typ: sliceType$4, tag: ""}, {prop: "vers", name: "vers", pkg: "crypto/tls", typ: $Uint16, tag: ""}, {prop: "random", name: "random", pkg: "crypto/tls", typ: sliceType$4, tag: ""}, {prop: "sessionId", name: "sessionId", pkg: "crypto/tls", typ: sliceType$4, tag: ""}, {prop: "cipherSuite", name: "cipherSuite", pkg: "crypto/tls", typ: $Uint16, tag: ""}, {prop: "compressionMethod", name: "compressionMethod", pkg: "crypto/tls", typ: $Uint8, tag: ""}, {prop: "nextProtoNeg", name: "nextProtoNeg", pkg: "crypto/tls", typ: $Bool, tag: ""}, {prop: "nextProtos", name: "nextProtos", pkg: "crypto/tls", typ: sliceType$7, tag: ""}, {prop: "ocspStapling", name: "ocspStapling", pkg: "crypto/tls", typ: $Bool, tag: ""}, {prop: "ticketSupported", name: "ticketSupported", pkg: "crypto/tls", typ: $Bool, tag: ""}, {prop: "secureRenegotiation", name: "secureRenegotiation", pkg: "crypto/tls", typ: $Bool, tag: ""}, {prop: "alpnProtocol", name: "alpnProtocol", pkg: "crypto/tls", typ: $String, tag: ""}]);
  62372. certificateMsg.init([{prop: "raw", name: "raw", pkg: "crypto/tls", typ: sliceType$4, tag: ""}, {prop: "certificates", name: "certificates", pkg: "crypto/tls", typ: sliceType$6, tag: ""}]);
  62373. serverKeyExchangeMsg.init([{prop: "raw", name: "raw", pkg: "crypto/tls", typ: sliceType$4, tag: ""}, {prop: "key", name: "key", pkg: "crypto/tls", typ: sliceType$4, tag: ""}]);
  62374. certificateStatusMsg.init([{prop: "raw", name: "raw", pkg: "crypto/tls", typ: sliceType$4, tag: ""}, {prop: "statusType", name: "statusType", pkg: "crypto/tls", typ: $Uint8, tag: ""}, {prop: "response", name: "response", pkg: "crypto/tls", typ: sliceType$4, tag: ""}]);
  62375. serverHelloDoneMsg.init([]);
  62376. clientKeyExchangeMsg.init([{prop: "raw", name: "raw", pkg: "crypto/tls", typ: sliceType$4, tag: ""}, {prop: "ciphertext", name: "ciphertext", pkg: "crypto/tls", typ: sliceType$4, tag: ""}]);
  62377. finishedMsg.init([{prop: "raw", name: "raw", pkg: "crypto/tls", typ: sliceType$4, tag: ""}, {prop: "verifyData", name: "verifyData", pkg: "crypto/tls", typ: sliceType$4, tag: ""}]);
  62378. nextProtoMsg.init([{prop: "raw", name: "raw", pkg: "crypto/tls", typ: sliceType$4, tag: ""}, {prop: "proto", name: "proto", pkg: "crypto/tls", typ: $String, tag: ""}]);
  62379. certificateRequestMsg.init([{prop: "raw", name: "raw", pkg: "crypto/tls", typ: sliceType$4, tag: ""}, {prop: "hasSignatureAndHash", name: "hasSignatureAndHash", pkg: "crypto/tls", typ: $Bool, tag: ""}, {prop: "certificateTypes", name: "certificateTypes", pkg: "crypto/tls", typ: sliceType$4, tag: ""}, {prop: "signatureAndHashes", name: "signatureAndHashes", pkg: "crypto/tls", typ: sliceType$2, tag: ""}, {prop: "certificateAuthorities", name: "certificateAuthorities", pkg: "crypto/tls", typ: sliceType$6, tag: ""}]);
  62380. certificateVerifyMsg.init([{prop: "raw", name: "raw", pkg: "crypto/tls", typ: sliceType$4, tag: ""}, {prop: "hasSignatureAndHash", name: "hasSignatureAndHash", pkg: "crypto/tls", typ: $Bool, tag: ""}, {prop: "signatureAndHash", name: "signatureAndHash", pkg: "crypto/tls", typ: signatureAndHash, tag: ""}, {prop: "signature", name: "signature", pkg: "crypto/tls", typ: sliceType$4, tag: ""}]);
  62381. newSessionTicketMsg.init([{prop: "raw", name: "raw", pkg: "crypto/tls", typ: sliceType$4, tag: ""}, {prop: "ticket", name: "ticket", pkg: "crypto/tls", typ: sliceType$4, tag: ""}]);
  62382. serverHandshakeState.init([{prop: "c", name: "c", pkg: "crypto/tls", typ: ptrType$10, tag: ""}, {prop: "clientHello", name: "clientHello", pkg: "crypto/tls", typ: ptrType$11, tag: ""}, {prop: "hello", name: "hello", pkg: "crypto/tls", typ: ptrType$9, tag: ""}, {prop: "suite", name: "suite", pkg: "crypto/tls", typ: ptrType, tag: ""}, {prop: "ellipticOk", name: "ellipticOk", pkg: "crypto/tls", typ: $Bool, tag: ""}, {prop: "ecdsaOk", name: "ecdsaOk", pkg: "crypto/tls", typ: $Bool, tag: ""}, {prop: "sessionState", name: "sessionState", pkg: "crypto/tls", typ: ptrType$26, tag: ""}, {prop: "finishedHash", name: "finishedHash", pkg: "crypto/tls", typ: finishedHash, tag: ""}, {prop: "masterSecret", name: "masterSecret", pkg: "crypto/tls", typ: sliceType$4, tag: ""}, {prop: "certsFromClient", name: "certsFromClient", pkg: "crypto/tls", typ: sliceType$6, tag: ""}, {prop: "cert", name: "cert", pkg: "crypto/tls", typ: ptrType$3, tag: ""}]);
  62383. rsaKeyAgreement.init([]);
  62384. ecdheKeyAgreement.init([{prop: "version", name: "version", pkg: "crypto/tls", typ: $Uint16, tag: ""}, {prop: "sigType", name: "sigType", pkg: "crypto/tls", typ: $Uint8, tag: ""}, {prop: "privateKey", name: "privateKey", pkg: "crypto/tls", typ: sliceType$4, tag: ""}, {prop: "curve", name: "curve", pkg: "crypto/tls", typ: elliptic.Curve, tag: ""}, {prop: "x", name: "x", pkg: "crypto/tls", typ: ptrType$1, tag: ""}, {prop: "y", name: "y", pkg: "crypto/tls", typ: ptrType$1, tag: ""}]);
  62385. finishedHash.init([{prop: "client", name: "client", pkg: "crypto/tls", typ: hash.Hash, tag: ""}, {prop: "server", name: "server", pkg: "crypto/tls", typ: hash.Hash, tag: ""}, {prop: "clientMD5", name: "clientMD5", pkg: "crypto/tls", typ: hash.Hash, tag: ""}, {prop: "serverMD5", name: "serverMD5", pkg: "crypto/tls", typ: hash.Hash, tag: ""}, {prop: "version", name: "version", pkg: "crypto/tls", typ: $Uint16, tag: ""}]);
  62386. sessionState.init([{prop: "vers", name: "vers", pkg: "crypto/tls", typ: $Uint16, tag: ""}, {prop: "cipherSuite", name: "cipherSuite", pkg: "crypto/tls", typ: $Uint16, tag: ""}, {prop: "masterSecret", name: "masterSecret", pkg: "crypto/tls", typ: sliceType$4, tag: ""}, {prop: "certificates", name: "certificates", pkg: "crypto/tls", typ: sliceType$6, tag: ""}]);
  62387. listener.init([{prop: "Listener", name: "", pkg: "", typ: net.Listener, tag: ""}, {prop: "config", name: "config", pkg: "crypto/tls", typ: ptrType$2, tag: ""}]);
  62388. $init = function() {
  62389. $pkg.$init = function() {};
  62390. /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  62391. $r = bytes.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  62392. $r = list.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  62393. $r = crypto.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  62394. $r = aes.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  62395. $r = cipher.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  62396. $r = des.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  62397. $r = ecdsa.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  62398. $r = elliptic.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  62399. $r = hmac.$init(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  62400. $r = md5.$init(); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  62401. $r = rand.$init(); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  62402. $r = rc4.$init(); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  62403. $r = rsa.$init(); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  62404. $r = sha1.$init(); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  62405. $r = sha256.$init(); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  62406. $r = subtle.$init(); /* */ $s = 16; case 16: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  62407. $r = x509.$init(); /* */ $s = 17; case 17: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  62408. $r = asn1.$init(); /* */ $s = 18; case 18: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  62409. $r = pem.$init(); /* */ $s = 19; case 19: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  62410. $r = errors.$init(); /* */ $s = 20; case 20: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  62411. $r = fmt.$init(); /* */ $s = 21; case 21: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  62412. $r = hash.$init(); /* */ $s = 22; case 22: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  62413. $r = io.$init(); /* */ $s = 23; case 23: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  62414. $r = ioutil.$init(); /* */ $s = 24; case 24: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  62415. $r = big.$init(); /* */ $s = 25; case 25: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  62416. $r = net.$init(); /* */ $s = 26; case 26: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  62417. $r = strconv.$init(); /* */ $s = 27; case 27: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  62418. $r = strings.$init(); /* */ $s = 28; case 28: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  62419. $r = sync.$init(); /* */ $s = 29; case 29: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  62420. $r = time.$init(); /* */ $s = 30; case 30: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  62421. emptyConfig = new Config.ptr();
  62422. once = new sync.Once.ptr();
  62423. varDefaultCipherSuites = sliceType.nil;
  62424. alertText = (_map = new $Map(), _key = 0, _map[_key] = { k: _key, v: "close notify" }, _key = 10, _map[_key] = { k: _key, v: "unexpected message" }, _key = 20, _map[_key] = { k: _key, v: "bad record MAC" }, _key = 21, _map[_key] = { k: _key, v: "decryption failed" }, _key = 22, _map[_key] = { k: _key, v: "record overflow" }, _key = 30, _map[_key] = { k: _key, v: "decompression failure" }, _key = 40, _map[_key] = { k: _key, v: "handshake failure" }, _key = 42, _map[_key] = { k: _key, v: "bad certificate" }, _key = 43, _map[_key] = { k: _key, v: "unsupported certificate" }, _key = 44, _map[_key] = { k: _key, v: "revoked certificate" }, _key = 45, _map[_key] = { k: _key, v: "expired certificate" }, _key = 46, _map[_key] = { k: _key, v: "unknown certificate" }, _key = 47, _map[_key] = { k: _key, v: "illegal parameter" }, _key = 48, _map[_key] = { k: _key, v: "unknown certificate authority" }, _key = 49, _map[_key] = { k: _key, v: "access denied" }, _key = 50, _map[_key] = { k: _key, v: "error decoding message" }, _key = 51, _map[_key] = { k: _key, v: "error decrypting message" }, _key = 70, _map[_key] = { k: _key, v: "protocol version not supported" }, _key = 71, _map[_key] = { k: _key, v: "insufficient security level" }, _key = 80, _map[_key] = { k: _key, v: "internal error" }, _key = 86, _map[_key] = { k: _key, v: "inappropriate fallback" }, _key = 90, _map[_key] = { k: _key, v: "user canceled" }, _key = 100, _map[_key] = { k: _key, v: "no renegotiation" }, _map);
  62425. ssl30Pad1 = $toNativeArray($kindUint8, [54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54]);
  62426. ssl30Pad2 = $toNativeArray($kindUint8, [92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, 92]);
  62427. cipherSuites = new sliceType$1([new cipherSuite.ptr(49199, 16, 0, 4, ecdheRSAKA, 5, $throwNilPointerError, $throwNilPointerError, aeadAESGCM), new cipherSuite.ptr(49195, 16, 0, 4, ecdheECDSAKA, 7, $throwNilPointerError, $throwNilPointerError, aeadAESGCM), new cipherSuite.ptr(49169, 16, 20, 0, ecdheRSAKA, 1, cipherRC4, macSHA1, $throwNilPointerError), new cipherSuite.ptr(49159, 16, 20, 0, ecdheECDSAKA, 3, cipherRC4, macSHA1, $throwNilPointerError), new cipherSuite.ptr(49171, 16, 20, 16, ecdheRSAKA, 1, cipherAES, macSHA1, $throwNilPointerError), new cipherSuite.ptr(49161, 16, 20, 16, ecdheECDSAKA, 3, cipherAES, macSHA1, $throwNilPointerError), new cipherSuite.ptr(49172, 32, 20, 16, ecdheRSAKA, 1, cipherAES, macSHA1, $throwNilPointerError), new cipherSuite.ptr(49162, 32, 20, 16, ecdheECDSAKA, 3, cipherAES, macSHA1, $throwNilPointerError), new cipherSuite.ptr(5, 16, 20, 0, rsaKA, 0, cipherRC4, macSHA1, $throwNilPointerError), new cipherSuite.ptr(47, 16, 20, 16, rsaKA, 0, cipherAES, macSHA1, $throwNilPointerError), new cipherSuite.ptr(53, 32, 20, 16, rsaKA, 0, cipherAES, macSHA1, $throwNilPointerError), new cipherSuite.ptr(49170, 24, 20, 8, ecdheRSAKA, 1, cipher3DES, macSHA1, $throwNilPointerError), new cipherSuite.ptr(10, 24, 20, 8, rsaKA, 0, cipher3DES, macSHA1, $throwNilPointerError)]);
  62428. supportedSKXSignatureAlgorithms = new sliceType$2([new signatureAndHash.ptr(4, 1), new signatureAndHash.ptr(4, 3), new signatureAndHash.ptr(2, 1), new signatureAndHash.ptr(2, 3)]);
  62429. supportedClientCertSignatureAlgorithms = new sliceType$2([new signatureAndHash.ptr(4, 1), new signatureAndHash.ptr(4, 3)]);
  62430. defaultCurvePreferences = new sliceType$3([23, 24, 25]);
  62431. errClientKeyExchange = errors.New("tls: invalid ClientKeyExchange message");
  62432. errServerKeyExchange = errors.New("tls: invalid ServerKeyExchange message");
  62433. masterSecretLabel = new sliceType$4($stringToBytes("master secret"));
  62434. keyExpansionLabel = new sliceType$4($stringToBytes("key expansion"));
  62435. clientFinishedLabel = new sliceType$4($stringToBytes("client finished"));
  62436. serverFinishedLabel = new sliceType$4($stringToBytes("server finished"));
  62437. ssl3ClientFinishedMagic = $toNativeArray($kindUint8, [67, 76, 78, 84]);
  62438. ssl3ServerFinishedMagic = $toNativeArray($kindUint8, [83, 82, 86, 82]);
  62439. /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
  62440. };
  62441. $pkg.$init = $init;
  62442. return $pkg;
  62443. })();
  62444. $packages["mime"] = (function() {
  62445. var $pkg = {}, $init, bytes, errors, fmt, sort, strings, sync, syscall, unicode, sliceType$1, sliceType$2, mimeTypesLower, mimeTypes, _map, _key, _r, isTSpecial, isTokenChar, checkMediaTypeDisposition, ParseMediaType, decode2231Enc, isNotTokenChar, consumeToken, consumeValue, consumeMediaParam, percentHexUnescape, ishex, unhex, clone;
  62446. bytes = $packages["bytes"];
  62447. errors = $packages["errors"];
  62448. fmt = $packages["fmt"];
  62449. sort = $packages["sort"];
  62450. strings = $packages["strings"];
  62451. sync = $packages["sync"];
  62452. syscall = $packages["syscall"];
  62453. unicode = $packages["unicode"];
  62454. sliceType$1 = $sliceType($emptyInterface);
  62455. sliceType$2 = $sliceType($Uint8);
  62456. isTSpecial = function(r) {
  62457. var $ptr, r;
  62458. return !((strings.IndexRune("()<>@,;:\\\"/[]?=", r) === -1));
  62459. };
  62460. isTokenChar = function(r) {
  62461. var $ptr, r;
  62462. return r > 32 && r < 127 && !isTSpecial(r);
  62463. };
  62464. checkMediaTypeDisposition = function(s) {
  62465. var $ptr, _r$1, _r$2, _tuple, _tuple$1, rest, s, subtype, typ, $s, $r;
  62466. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r$1 = $f._r$1; _r$2 = $f._r$2; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; rest = $f.rest; s = $f.s; subtype = $f.subtype; typ = $f.typ; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  62467. _r$1 = consumeToken(s); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  62468. _tuple = _r$1; typ = _tuple[0]; rest = _tuple[1];
  62469. if (typ === "") {
  62470. return errors.New("mime: no media type");
  62471. }
  62472. if (rest === "") {
  62473. return $ifaceNil;
  62474. }
  62475. if (!strings.HasPrefix(rest, "/")) {
  62476. return errors.New("mime: expected slash after first token");
  62477. }
  62478. _r$2 = consumeToken(rest.substring(1)); /* */ $s = 2; case 2: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  62479. _tuple$1 = _r$2; subtype = _tuple$1[0]; rest = _tuple$1[1];
  62480. if (subtype === "") {
  62481. return errors.New("mime: expected token after slash");
  62482. }
  62483. if (!(rest === "")) {
  62484. return errors.New("mime: unexpected content after media subtype");
  62485. }
  62486. return $ifaceNil;
  62487. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: checkMediaTypeDisposition }; } $f.$ptr = $ptr; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.rest = rest; $f.s = s; $f.subtype = subtype; $f.typ = typ; $f.$s = $s; $f.$r = $r; return $f;
  62488. };
  62489. ParseMediaType = function(v) {
  62490. var $ptr, _entry, _entry$1, _entry$2, _entry$3, _entry$4, _entry$5, _entry$6, _i, _key$1, _key$2, _key$3, _key$4, _keys, _r$1, _r$10, _r$11, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, _tuple$6, baseName, buf, continuation, decv, decv$1, encodedPart, err, exists, i, idx, key, key$1, mediatype, n, ok, ok$1, ok$2, ok$3, params, pieceMap, pmap, rest, simplePart, singlePartKey, v, v$1, v$2, v$3, valid, value, $s, $r;
  62491. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _entry = $f._entry; _entry$1 = $f._entry$1; _entry$2 = $f._entry$2; _entry$3 = $f._entry$3; _entry$4 = $f._entry$4; _entry$5 = $f._entry$5; _entry$6 = $f._entry$6; _i = $f._i; _key$1 = $f._key$1; _key$2 = $f._key$2; _key$3 = $f._key$3; _key$4 = $f._key$4; _keys = $f._keys; _r$1 = $f._r$1; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _r$9 = $f._r$9; _ref = $f._ref; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tmp$6 = $f._tmp$6; _tmp$7 = $f._tmp$7; _tmp$8 = $f._tmp$8; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; _tuple$4 = $f._tuple$4; _tuple$5 = $f._tuple$5; _tuple$6 = $f._tuple$6; baseName = $f.baseName; buf = $f.buf; continuation = $f.continuation; decv = $f.decv; decv$1 = $f.decv$1; encodedPart = $f.encodedPart; err = $f.err; exists = $f.exists; i = $f.i; idx = $f.idx; key = $f.key; key$1 = $f.key$1; mediatype = $f.mediatype; n = $f.n; ok = $f.ok; ok$1 = $f.ok$1; ok$2 = $f.ok$2; ok$3 = $f.ok$3; params = $f.params; pieceMap = $f.pieceMap; pmap = $f.pmap; rest = $f.rest; simplePart = $f.simplePart; singlePartKey = $f.singlePartKey; v = $f.v; v$1 = $f.v$1; v$2 = $f.v$2; v$3 = $f.v$3; valid = $f.valid; value = $f.value; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  62492. mediatype = "";
  62493. params = false;
  62494. err = $ifaceNil;
  62495. i = strings.Index(v, ";");
  62496. if (i === -1) {
  62497. i = v.length;
  62498. }
  62499. _r$1 = strings.ToLower(v.substring(0, i)); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  62500. _r$2 = strings.TrimSpace(_r$1); /* */ $s = 2; case 2: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  62501. mediatype = _r$2;
  62502. _r$3 = checkMediaTypeDisposition(mediatype); /* */ $s = 3; case 3: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  62503. err = _r$3;
  62504. if (!($interfaceIsEqual(err, $ifaceNil))) {
  62505. _tmp = ""; _tmp$1 = false; _tmp$2 = err; mediatype = _tmp; params = _tmp$1; err = _tmp$2;
  62506. return [mediatype, params, err];
  62507. }
  62508. params = new $Map();
  62509. continuation = false;
  62510. v = v.substring(i);
  62511. /* while (true) { */ case 4:
  62512. /* if (!(v.length > 0)) { break; } */ if(!(v.length > 0)) { $s = 5; continue; }
  62513. _r$4 = strings.TrimLeftFunc(v, unicode.IsSpace); /* */ $s = 6; case 6: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
  62514. v = _r$4;
  62515. if (v.length === 0) {
  62516. /* break; */ $s = 5; continue;
  62517. }
  62518. _r$5 = consumeMediaParam(v); /* */ $s = 7; case 7: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
  62519. _tuple = _r$5; key = _tuple[0]; value = _tuple[1]; rest = _tuple[2];
  62520. /* */ if (key === "") { $s = 8; continue; }
  62521. /* */ $s = 9; continue;
  62522. /* if (key === "") { */ case 8:
  62523. _r$6 = strings.TrimSpace(rest); /* */ $s = 12; case 12: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
  62524. /* */ if (_r$6 === ";") { $s = 10; continue; }
  62525. /* */ $s = 11; continue;
  62526. /* if (_r$6 === ";") { */ case 10:
  62527. return [mediatype, params, err];
  62528. /* } */ case 11:
  62529. _tmp$3 = ""; _tmp$4 = false; _tmp$5 = errors.New("mime: invalid media parameter"); mediatype = _tmp$3; params = _tmp$4; err = _tmp$5;
  62530. return [mediatype, params, err];
  62531. /* } */ case 9:
  62532. pmap = params;
  62533. idx = strings.Index(key, "*");
  62534. if (!((idx === -1))) {
  62535. baseName = key.substring(0, idx);
  62536. if (continuation === false) {
  62537. continuation = new $Map();
  62538. }
  62539. ok = false;
  62540. _tuple$1 = (_entry = continuation[baseName], _entry !== undefined ? [_entry.v, true] : [false, false]); pmap = _tuple$1[0]; ok = _tuple$1[1];
  62541. if (!ok) {
  62542. _key$1 = baseName; (continuation || $throwRuntimeError("assignment to entry in nil map"))[_key$1] = { k: _key$1, v: new $Map() };
  62543. pmap = (_entry$1 = continuation[baseName], _entry$1 !== undefined ? _entry$1.v : false);
  62544. }
  62545. }
  62546. _tuple$2 = (_entry$2 = pmap[key], _entry$2 !== undefined ? [_entry$2.v, true] : ["", false]); exists = _tuple$2[1];
  62547. if (exists) {
  62548. _tmp$6 = ""; _tmp$7 = false; _tmp$8 = errors.New("mime: duplicate parameter name"); mediatype = _tmp$6; params = _tmp$7; err = _tmp$8;
  62549. return [mediatype, params, err];
  62550. }
  62551. _key$2 = key; (pmap || $throwRuntimeError("assignment to entry in nil map"))[_key$2] = { k: _key$2, v: value };
  62552. v = rest;
  62553. /* } */ $s = 4; continue; case 5:
  62554. buf = $clone(new bytes.Buffer.ptr(), bytes.Buffer);
  62555. _ref = continuation;
  62556. _i = 0;
  62557. _keys = $keys(_ref);
  62558. /* while (true) { */ case 13:
  62559. /* if (!(_i < _keys.length)) { break; } */ if(!(_i < _keys.length)) { $s = 14; continue; }
  62560. _entry$3 = _ref[_keys[_i]];
  62561. if (_entry$3 === undefined) {
  62562. _i++;
  62563. /* continue; */ $s = 13; continue;
  62564. }
  62565. key$1 = _entry$3.k;
  62566. pieceMap = _entry$3.v;
  62567. singlePartKey = key$1 + "*";
  62568. _tuple$3 = (_entry$4 = pieceMap[singlePartKey], _entry$4 !== undefined ? [_entry$4.v, true] : ["", false]); v$1 = _tuple$3[0]; ok$1 = _tuple$3[1];
  62569. /* */ if (ok$1) { $s = 15; continue; }
  62570. /* */ $s = 16; continue;
  62571. /* if (ok$1) { */ case 15:
  62572. _r$7 = decode2231Enc(v$1); /* */ $s = 17; case 17: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
  62573. decv = _r$7;
  62574. _key$3 = key$1; (params || $throwRuntimeError("assignment to entry in nil map"))[_key$3] = { k: _key$3, v: decv };
  62575. _i++;
  62576. /* continue; */ $s = 13; continue;
  62577. /* } */ case 16:
  62578. buf.Reset();
  62579. valid = false;
  62580. n = 0;
  62581. /* while (true) { */ case 18:
  62582. _r$8 = fmt.Sprintf("%s*%d", new sliceType$1([new $String(key$1), new $Int(n)])); /* */ $s = 20; case 20: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
  62583. simplePart = _r$8;
  62584. _tuple$4 = (_entry$5 = pieceMap[simplePart], _entry$5 !== undefined ? [_entry$5.v, true] : ["", false]); v$2 = _tuple$4[0]; ok$2 = _tuple$4[1];
  62585. /* */ if (ok$2) { $s = 21; continue; }
  62586. /* */ $s = 22; continue;
  62587. /* if (ok$2) { */ case 21:
  62588. valid = true;
  62589. buf.WriteString(v$2);
  62590. n = n + (1) >> 0;
  62591. /* continue; */ $s = 18; continue;
  62592. /* } */ case 22:
  62593. encodedPart = simplePart + "*";
  62594. _tuple$5 = (_entry$6 = pieceMap[encodedPart], _entry$6 !== undefined ? [_entry$6.v, true] : ["", false]); v$3 = _tuple$5[0]; ok$3 = _tuple$5[1];
  62595. /* */ if (ok$3) { $s = 23; continue; }
  62596. /* */ $s = 24; continue;
  62597. /* if (ok$3) { */ case 23:
  62598. valid = true;
  62599. /* */ if (n === 0) { $s = 26; continue; }
  62600. /* */ $s = 27; continue;
  62601. /* if (n === 0) { */ case 26:
  62602. _r$9 = decode2231Enc(v$3); /* */ $s = 29; case 29: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
  62603. _r$10 = buf.WriteString(_r$9); /* */ $s = 30; case 30: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
  62604. _r$10;
  62605. $s = 28; continue;
  62606. /* } else { */ case 27:
  62607. _r$11 = percentHexUnescape(v$3); /* */ $s = 31; case 31: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
  62608. _tuple$6 = _r$11; decv$1 = _tuple$6[0];
  62609. buf.WriteString(decv$1);
  62610. /* } */ case 28:
  62611. $s = 25; continue;
  62612. /* } else { */ case 24:
  62613. /* break; */ $s = 19; continue;
  62614. /* } */ case 25:
  62615. n = n + (1) >> 0;
  62616. /* } */ $s = 18; continue; case 19:
  62617. if (valid) {
  62618. _key$4 = key$1; (params || $throwRuntimeError("assignment to entry in nil map"))[_key$4] = { k: _key$4, v: buf.String() };
  62619. }
  62620. _i++;
  62621. /* } */ $s = 13; continue; case 14:
  62622. return [mediatype, params, err];
  62623. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: ParseMediaType }; } $f.$ptr = $ptr; $f._entry = _entry; $f._entry$1 = _entry$1; $f._entry$2 = _entry$2; $f._entry$3 = _entry$3; $f._entry$4 = _entry$4; $f._entry$5 = _entry$5; $f._entry$6 = _entry$6; $f._i = _i; $f._key$1 = _key$1; $f._key$2 = _key$2; $f._key$3 = _key$3; $f._key$4 = _key$4; $f._keys = _keys; $f._r$1 = _r$1; $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._r$9 = _r$9; $f._ref = _ref; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tmp$6 = _tmp$6; $f._tmp$7 = _tmp$7; $f._tmp$8 = _tmp$8; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f._tuple$4 = _tuple$4; $f._tuple$5 = _tuple$5; $f._tuple$6 = _tuple$6; $f.baseName = baseName; $f.buf = buf; $f.continuation = continuation; $f.decv = decv; $f.decv$1 = decv$1; $f.encodedPart = encodedPart; $f.err = err; $f.exists = exists; $f.i = i; $f.idx = idx; $f.key = key; $f.key$1 = key$1; $f.mediatype = mediatype; $f.n = n; $f.ok = ok; $f.ok$1 = ok$1; $f.ok$2 = ok$2; $f.ok$3 = ok$3; $f.params = params; $f.pieceMap = pieceMap; $f.pmap = pmap; $f.rest = rest; $f.simplePart = simplePart; $f.singlePartKey = singlePartKey; $f.v = v; $f.v$1 = v$1; $f.v$2 = v$2; $f.v$3 = v$3; $f.valid = valid; $f.value = value; $f.$s = $s; $f.$r = $r; return $f;
  62624. };
  62625. $pkg.ParseMediaType = ParseMediaType;
  62626. decode2231Enc = function(v) {
  62627. var $ptr, _r$1, _r$2, _tuple, charset, encv, sv, v, $s, $r;
  62628. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r$1 = $f._r$1; _r$2 = $f._r$2; _tuple = $f._tuple; charset = $f.charset; encv = $f.encv; sv = $f.sv; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  62629. sv = strings.SplitN(v, "'", 3);
  62630. if (!((sv.$length === 3))) {
  62631. return "";
  62632. }
  62633. _r$1 = strings.ToLower((0 >= sv.$length ? $throwRuntimeError("index out of range") : sv.$array[sv.$offset + 0])); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  62634. charset = _r$1;
  62635. if (!(charset === "us-ascii") && !(charset === "utf-8")) {
  62636. return "";
  62637. }
  62638. _r$2 = percentHexUnescape((2 >= sv.$length ? $throwRuntimeError("index out of range") : sv.$array[sv.$offset + 2])); /* */ $s = 2; case 2: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  62639. _tuple = _r$2; encv = _tuple[0];
  62640. return encv;
  62641. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: decode2231Enc }; } $f.$ptr = $ptr; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._tuple = _tuple; $f.charset = charset; $f.encv = encv; $f.sv = sv; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
  62642. };
  62643. isNotTokenChar = function(r) {
  62644. var $ptr, r;
  62645. return !isTokenChar(r);
  62646. };
  62647. consumeToken = function(v) {
  62648. var $ptr, _r$1, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, notPos, rest, token, v, $s, $r;
  62649. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r$1 = $f._r$1; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; notPos = $f.notPos; rest = $f.rest; token = $f.token; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  62650. token = "";
  62651. rest = "";
  62652. _r$1 = strings.IndexFunc(v, isNotTokenChar); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  62653. notPos = _r$1;
  62654. if (notPos === -1) {
  62655. _tmp = v; _tmp$1 = ""; token = _tmp; rest = _tmp$1;
  62656. return [token, rest];
  62657. }
  62658. if (notPos === 0) {
  62659. _tmp$2 = ""; _tmp$3 = v; token = _tmp$2; rest = _tmp$3;
  62660. return [token, rest];
  62661. }
  62662. _tmp$4 = v.substring(0, notPos); _tmp$5 = v.substring(notPos); token = _tmp$4; rest = _tmp$5;
  62663. return [token, rest];
  62664. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: consumeToken }; } $f.$ptr = $ptr; $f._r$1 = _r$1; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f.notPos = notPos; $f.rest = rest; $f.token = token; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
  62665. };
  62666. consumeValue = function(v) {
  62667. var $ptr, _i, _r$1, _ref, _rune, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tuple, buffer, idx, leadQuote, nextIsLiteral, r, rest, v, value, $s, $r;
  62668. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _i = $f._i; _r$1 = $f._r$1; _ref = $f._ref; _rune = $f._rune; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tuple = $f._tuple; buffer = $f.buffer; idx = $f.idx; leadQuote = $f.leadQuote; nextIsLiteral = $f.nextIsLiteral; r = $f.r; rest = $f.rest; v = $f.v; value = $f.value; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  62669. value = "";
  62670. rest = "";
  62671. /* */ if (!strings.HasPrefix(v, "\"") && !strings.HasPrefix(v, "'")) { $s = 1; continue; }
  62672. /* */ $s = 2; continue;
  62673. /* if (!strings.HasPrefix(v, "\"") && !strings.HasPrefix(v, "'")) { */ case 1:
  62674. _r$1 = consumeToken(v); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  62675. _tuple = _r$1; value = _tuple[0]; rest = _tuple[1];
  62676. return [value, rest];
  62677. /* } */ case 2:
  62678. leadQuote = (v.charCodeAt(0) >> 0);
  62679. rest = v.substring(1);
  62680. buffer = new bytes.Buffer.ptr();
  62681. idx = 0;
  62682. r = 0;
  62683. nextIsLiteral = false;
  62684. _ref = rest;
  62685. _i = 0;
  62686. while (true) {
  62687. if (!(_i < _ref.length)) { break; }
  62688. _rune = $decodeRune(_ref, _i);
  62689. idx = _i;
  62690. r = _rune[0];
  62691. if (nextIsLiteral) {
  62692. buffer.WriteRune(r);
  62693. nextIsLiteral = false;
  62694. } else if (r === leadQuote) {
  62695. _tmp = buffer.String(); _tmp$1 = rest.substring((idx + 1 >> 0)); value = _tmp; rest = _tmp$1;
  62696. return [value, rest];
  62697. } else if (r === 92) {
  62698. nextIsLiteral = true;
  62699. } else if (!((r === 13)) && !((r === 10))) {
  62700. buffer.WriteRune(r);
  62701. } else {
  62702. _tmp$2 = ""; _tmp$3 = v; value = _tmp$2; rest = _tmp$3;
  62703. return [value, rest];
  62704. }
  62705. _i += _rune[1];
  62706. }
  62707. _tmp$4 = ""; _tmp$5 = v; value = _tmp$4; rest = _tmp$5;
  62708. return [value, rest];
  62709. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: consumeValue }; } $f.$ptr = $ptr; $f._i = _i; $f._r$1 = _r$1; $f._ref = _ref; $f._rune = _rune; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tuple = _tuple; $f.buffer = buffer; $f.idx = idx; $f.leadQuote = leadQuote; $f.nextIsLiteral = nextIsLiteral; $f.r = r; $f.rest = rest; $f.v = v; $f.value = value; $f.$s = $s; $f.$r = $r; return $f;
  62710. };
  62711. consumeMediaParam = function(v) {
  62712. var $ptr, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, param, rest, v, value, $s, $r;
  62713. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$10 = $f._tmp$10; _tmp$11 = $f._tmp$11; _tmp$12 = $f._tmp$12; _tmp$13 = $f._tmp$13; _tmp$14 = $f._tmp$14; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tmp$6 = $f._tmp$6; _tmp$7 = $f._tmp$7; _tmp$8 = $f._tmp$8; _tmp$9 = $f._tmp$9; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; param = $f.param; rest = $f.rest; v = $f.v; value = $f.value; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  62714. param = "";
  62715. value = "";
  62716. rest = "";
  62717. _r$1 = strings.TrimLeftFunc(v, unicode.IsSpace); /* */ $s = 1; case 1: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  62718. rest = _r$1;
  62719. if (!strings.HasPrefix(rest, ";")) {
  62720. _tmp = ""; _tmp$1 = ""; _tmp$2 = v; param = _tmp; value = _tmp$1; rest = _tmp$2;
  62721. return [param, value, rest];
  62722. }
  62723. rest = rest.substring(1);
  62724. _r$2 = strings.TrimLeftFunc(rest, unicode.IsSpace); /* */ $s = 2; case 2: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  62725. rest = _r$2;
  62726. _r$3 = consumeToken(rest); /* */ $s = 3; case 3: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  62727. _tuple = _r$3; param = _tuple[0]; rest = _tuple[1];
  62728. _r$4 = strings.ToLower(param); /* */ $s = 4; case 4: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
  62729. param = _r$4;
  62730. if (param === "") {
  62731. _tmp$3 = ""; _tmp$4 = ""; _tmp$5 = v; param = _tmp$3; value = _tmp$4; rest = _tmp$5;
  62732. return [param, value, rest];
  62733. }
  62734. _r$5 = strings.TrimLeftFunc(rest, unicode.IsSpace); /* */ $s = 5; case 5: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
  62735. rest = _r$5;
  62736. if (!strings.HasPrefix(rest, "=")) {
  62737. _tmp$6 = ""; _tmp$7 = ""; _tmp$8 = v; param = _tmp$6; value = _tmp$7; rest = _tmp$8;
  62738. return [param, value, rest];
  62739. }
  62740. rest = rest.substring(1);
  62741. _r$6 = strings.TrimLeftFunc(rest, unicode.IsSpace); /* */ $s = 6; case 6: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
  62742. rest = _r$6;
  62743. _r$7 = consumeValue(rest); /* */ $s = 7; case 7: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
  62744. _tuple$1 = _r$7; value = _tuple$1[0]; rest = _tuple$1[1];
  62745. if (value === "") {
  62746. _tmp$9 = ""; _tmp$10 = ""; _tmp$11 = v; param = _tmp$9; value = _tmp$10; rest = _tmp$11;
  62747. return [param, value, rest];
  62748. }
  62749. _tmp$12 = param; _tmp$13 = value; _tmp$14 = rest; param = _tmp$12; value = _tmp$13; rest = _tmp$14;
  62750. return [param, value, rest];
  62751. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: consumeMediaParam }; } $f.$ptr = $ptr; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$10 = _tmp$10; $f._tmp$11 = _tmp$11; $f._tmp$12 = _tmp$12; $f._tmp$13 = _tmp$13; $f._tmp$14 = _tmp$14; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tmp$6 = _tmp$6; $f._tmp$7 = _tmp$7; $f._tmp$8 = _tmp$8; $f._tmp$9 = _tmp$9; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.param = param; $f.rest = rest; $f.v = v; $f.value = value; $f.$s = $s; $f.$r = $r; return $f;
  62752. };
  62753. percentHexUnescape = function(s) {
  62754. var $ptr, _r$1, _ref, i, i$1, j, percents, s, t, $s, $r;
  62755. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r$1 = $f._r$1; _ref = $f._ref; i = $f.i; i$1 = $f.i$1; j = $f.j; percents = $f.percents; s = $f.s; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  62756. percents = 0;
  62757. i = 0;
  62758. /* while (true) { */ case 1:
  62759. /* if (!(i < s.length)) { break; } */ if(!(i < s.length)) { $s = 2; continue; }
  62760. /* */ if (!((s.charCodeAt(i) === 37))) { $s = 3; continue; }
  62761. /* */ $s = 4; continue;
  62762. /* if (!((s.charCodeAt(i) === 37))) { */ case 3:
  62763. i = i + (1) >> 0;
  62764. /* continue; */ $s = 1; continue;
  62765. /* } */ case 4:
  62766. percents = percents + (1) >> 0;
  62767. /* */ if ((i + 2 >> 0) >= s.length || !ishex(s.charCodeAt((i + 1 >> 0))) || !ishex(s.charCodeAt((i + 2 >> 0)))) { $s = 5; continue; }
  62768. /* */ $s = 6; continue;
  62769. /* if ((i + 2 >> 0) >= s.length || !ishex(s.charCodeAt((i + 1 >> 0))) || !ishex(s.charCodeAt((i + 2 >> 0)))) { */ case 5:
  62770. s = s.substring(i);
  62771. if (s.length > 3) {
  62772. s = s.substring(0, 3);
  62773. }
  62774. _r$1 = fmt.Errorf("mime: bogus characters after %%: %q", new sliceType$1([new $String(s)])); /* */ $s = 7; case 7: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  62775. return ["", _r$1];
  62776. /* } */ case 6:
  62777. i = i + (3) >> 0;
  62778. /* } */ $s = 1; continue; case 2:
  62779. if (percents === 0) {
  62780. return [s, $ifaceNil];
  62781. }
  62782. t = $makeSlice(sliceType$2, (s.length - (2 * percents >> 0) >> 0));
  62783. j = 0;
  62784. i$1 = 0;
  62785. while (true) {
  62786. if (!(i$1 < s.length)) { break; }
  62787. _ref = s.charCodeAt(i$1);
  62788. if (_ref === 37) {
  62789. ((j < 0 || j >= t.$length) ? $throwRuntimeError("index out of range") : t.$array[t.$offset + j] = ((unhex(s.charCodeAt((i$1 + 1 >> 0))) << 4 << 24 >>> 24) | unhex(s.charCodeAt((i$1 + 2 >> 0)))) >>> 0);
  62790. j = j + (1) >> 0;
  62791. i$1 = i$1 + (3) >> 0;
  62792. } else {
  62793. ((j < 0 || j >= t.$length) ? $throwRuntimeError("index out of range") : t.$array[t.$offset + j] = s.charCodeAt(i$1));
  62794. j = j + (1) >> 0;
  62795. i$1 = i$1 + (1) >> 0;
  62796. }
  62797. }
  62798. return [$bytesToString(t), $ifaceNil];
  62799. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: percentHexUnescape }; } $f.$ptr = $ptr; $f._r$1 = _r$1; $f._ref = _ref; $f.i = i; $f.i$1 = i$1; $f.j = j; $f.percents = percents; $f.s = s; $f.t = t; $f.$s = $s; $f.$r = $r; return $f;
  62800. };
  62801. ishex = function(c) {
  62802. var $ptr, c;
  62803. if (48 <= c && c <= 57) {
  62804. return true;
  62805. } else if (97 <= c && c <= 102) {
  62806. return true;
  62807. } else if (65 <= c && c <= 70) {
  62808. return true;
  62809. }
  62810. return false;
  62811. };
  62812. unhex = function(c) {
  62813. var $ptr, c;
  62814. if (48 <= c && c <= 57) {
  62815. return c - 48 << 24 >>> 24;
  62816. } else if (97 <= c && c <= 102) {
  62817. return (c - 97 << 24 >>> 24) + 10 << 24 >>> 24;
  62818. } else if (65 <= c && c <= 70) {
  62819. return (c - 65 << 24 >>> 24) + 10 << 24 >>> 24;
  62820. }
  62821. return 0;
  62822. };
  62823. clone = function(m) {
  62824. var $ptr, _entry, _i, _key$1, _keys, _r$1, _ref, k, m, m2, v, $s, $r;
  62825. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _entry = $f._entry; _i = $f._i; _key$1 = $f._key$1; _keys = $f._keys; _r$1 = $f._r$1; _ref = $f._ref; k = $f.k; m = $f.m; m2 = $f.m2; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  62826. m2 = new $Map();
  62827. _ref = m;
  62828. _i = 0;
  62829. _keys = $keys(_ref);
  62830. /* while (true) { */ case 1:
  62831. /* if (!(_i < _keys.length)) { break; } */ if(!(_i < _keys.length)) { $s = 2; continue; }
  62832. _entry = _ref[_keys[_i]];
  62833. if (_entry === undefined) {
  62834. _i++;
  62835. /* continue; */ $s = 1; continue;
  62836. }
  62837. k = _entry.k;
  62838. v = _entry.v;
  62839. _key$1 = k; (m2 || $throwRuntimeError("assignment to entry in nil map"))[_key$1] = { k: _key$1, v: v };
  62840. _r$1 = strings.ToLower(k); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  62841. /* */ if (!(_r$1 === k)) { $s = 3; continue; }
  62842. /* */ $s = 4; continue;
  62843. /* if (!(_r$1 === k)) { */ case 3:
  62844. $panic(new $String("keys in mimeTypesLower must be lowercase"));
  62845. /* } */ case 4:
  62846. _i++;
  62847. /* } */ $s = 1; continue; case 2:
  62848. return m2;
  62849. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: clone }; } $f.$ptr = $ptr; $f._entry = _entry; $f._i = _i; $f._key$1 = _key$1; $f._keys = _keys; $f._r$1 = _r$1; $f._ref = _ref; $f.k = k; $f.m = m; $f.m2 = m2; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
  62850. };
  62851. $init = function() {
  62852. $pkg.$init = function() {};
  62853. /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  62854. $r = bytes.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  62855. $r = errors.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  62856. $r = fmt.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  62857. $r = sort.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  62858. $r = strings.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  62859. $r = sync.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  62860. $r = syscall.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  62861. $r = unicode.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  62862. mimeTypesLower = (_map = new $Map(), _key = ".css", _map[_key] = { k: _key, v: "text/css; charset=utf-8" }, _key = ".gif", _map[_key] = { k: _key, v: "image/gif" }, _key = ".htm", _map[_key] = { k: _key, v: "text/html; charset=utf-8" }, _key = ".html", _map[_key] = { k: _key, v: "text/html; charset=utf-8" }, _key = ".jpg", _map[_key] = { k: _key, v: "image/jpeg" }, _key = ".js", _map[_key] = { k: _key, v: "application/x-javascript" }, _key = ".pdf", _map[_key] = { k: _key, v: "application/pdf" }, _key = ".png", _map[_key] = { k: _key, v: "image/png" }, _key = ".xml", _map[_key] = { k: _key, v: "text/xml; charset=utf-8" }, _map);
  62863. _r = clone(mimeTypesLower); /* */ $s = 9; case 9: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  62864. mimeTypes = _r;
  62865. /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
  62866. };
  62867. $pkg.$init = $init;
  62868. return $pkg;
  62869. })();
  62870. $packages["net/textproto"] = (function() {
  62871. var $pkg = {}, $init, bufio, bytes, fmt, io, ioutil, net, strconv, strings, sync, MIMEHeader, Reader, dotReader, Error, ProtocolError, sliceType, sliceType$1, ptrType, ptrType$1, ptrType$2, sliceType$2, ptrType$9, commonHeader, NewReader, trim, parseCodeLine, CanonicalMIMEHeaderKey, canonicalMIMEHeaderKey, init, TrimString, isASCIISpace, isASCIILetter;
  62872. bufio = $packages["bufio"];
  62873. bytes = $packages["bytes"];
  62874. fmt = $packages["fmt"];
  62875. io = $packages["io"];
  62876. ioutil = $packages["io/ioutil"];
  62877. net = $packages["net"];
  62878. strconv = $packages["strconv"];
  62879. strings = $packages["strings"];
  62880. sync = $packages["sync"];
  62881. MIMEHeader = $pkg.MIMEHeader = $newType(4, $kindMap, "textproto.MIMEHeader", "MIMEHeader", "net/textproto", null);
  62882. Reader = $pkg.Reader = $newType(0, $kindStruct, "textproto.Reader", "Reader", "net/textproto", function(R_, dot_, buf_) {
  62883. this.$val = this;
  62884. if (arguments.length === 0) {
  62885. this.R = ptrType.nil;
  62886. this.dot = ptrType$1.nil;
  62887. this.buf = sliceType.nil;
  62888. return;
  62889. }
  62890. this.R = R_;
  62891. this.dot = dot_;
  62892. this.buf = buf_;
  62893. });
  62894. dotReader = $pkg.dotReader = $newType(0, $kindStruct, "textproto.dotReader", "dotReader", "net/textproto", function(r_, state_) {
  62895. this.$val = this;
  62896. if (arguments.length === 0) {
  62897. this.r = ptrType$2.nil;
  62898. this.state = 0;
  62899. return;
  62900. }
  62901. this.r = r_;
  62902. this.state = state_;
  62903. });
  62904. Error = $pkg.Error = $newType(0, $kindStruct, "textproto.Error", "Error", "net/textproto", function(Code_, Msg_) {
  62905. this.$val = this;
  62906. if (arguments.length === 0) {
  62907. this.Code = 0;
  62908. this.Msg = "";
  62909. return;
  62910. }
  62911. this.Code = Code_;
  62912. this.Msg = Msg_;
  62913. });
  62914. ProtocolError = $pkg.ProtocolError = $newType(8, $kindString, "textproto.ProtocolError", "ProtocolError", "net/textproto", null);
  62915. sliceType = $sliceType($Uint8);
  62916. sliceType$1 = $sliceType($String);
  62917. ptrType = $ptrType(bufio.Reader);
  62918. ptrType$1 = $ptrType(dotReader);
  62919. ptrType$2 = $ptrType(Reader);
  62920. sliceType$2 = $sliceType($emptyInterface);
  62921. ptrType$9 = $ptrType(Error);
  62922. MIMEHeader.prototype.Add = function(key, value) {
  62923. var $ptr, _entry, _key, h, key, value;
  62924. h = this.$val;
  62925. key = CanonicalMIMEHeaderKey(key);
  62926. _key = key; (h || $throwRuntimeError("assignment to entry in nil map"))[_key] = { k: _key, v: $append((_entry = h[key], _entry !== undefined ? _entry.v : sliceType$1.nil), value) };
  62927. };
  62928. $ptrType(MIMEHeader).prototype.Add = function(key, value) { return new MIMEHeader(this.$get()).Add(key, value); };
  62929. MIMEHeader.prototype.Set = function(key, value) {
  62930. var $ptr, _key, h, key, value;
  62931. h = this.$val;
  62932. _key = CanonicalMIMEHeaderKey(key); (h || $throwRuntimeError("assignment to entry in nil map"))[_key] = { k: _key, v: new sliceType$1([value]) };
  62933. };
  62934. $ptrType(MIMEHeader).prototype.Set = function(key, value) { return new MIMEHeader(this.$get()).Set(key, value); };
  62935. MIMEHeader.prototype.Get = function(key) {
  62936. var $ptr, _entry, h, key, v;
  62937. h = this.$val;
  62938. if (h === false) {
  62939. return "";
  62940. }
  62941. v = (_entry = h[CanonicalMIMEHeaderKey(key)], _entry !== undefined ? _entry.v : sliceType$1.nil);
  62942. if (v.$length === 0) {
  62943. return "";
  62944. }
  62945. return (0 >= v.$length ? $throwRuntimeError("index out of range") : v.$array[v.$offset + 0]);
  62946. };
  62947. $ptrType(MIMEHeader).prototype.Get = function(key) { return new MIMEHeader(this.$get()).Get(key); };
  62948. MIMEHeader.prototype.Del = function(key) {
  62949. var $ptr, h, key;
  62950. h = this.$val;
  62951. delete h[CanonicalMIMEHeaderKey(key)];
  62952. };
  62953. $ptrType(MIMEHeader).prototype.Del = function(key) { return new MIMEHeader(this.$get()).Del(key); };
  62954. NewReader = function(r) {
  62955. var $ptr, r;
  62956. return new Reader.ptr(r, ptrType$1.nil, sliceType.nil);
  62957. };
  62958. $pkg.NewReader = NewReader;
  62959. Reader.ptr.prototype.ReadLine = function() {
  62960. var $ptr, _r, _tuple, err, line, r, $s, $r;
  62961. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tuple = $f._tuple; err = $f.err; line = $f.line; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  62962. r = this;
  62963. _r = r.readLineSlice(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  62964. _tuple = _r; line = _tuple[0]; err = _tuple[1];
  62965. return [$bytesToString(line), err];
  62966. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Reader.ptr.prototype.ReadLine }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple = _tuple; $f.err = err; $f.line = line; $f.r = r; $f.$s = $s; $f.$r = $r; return $f;
  62967. };
  62968. Reader.prototype.ReadLine = function() { return this.$val.ReadLine(); };
  62969. Reader.ptr.prototype.ReadLineBytes = function() {
  62970. var $ptr, _r, _tuple, buf, err, line, r, $s, $r;
  62971. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tuple = $f._tuple; buf = $f.buf; err = $f.err; line = $f.line; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  62972. r = this;
  62973. _r = r.readLineSlice(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  62974. _tuple = _r; line = _tuple[0]; err = _tuple[1];
  62975. if (!(line === sliceType.nil)) {
  62976. buf = $makeSlice(sliceType, line.$length);
  62977. $copySlice(buf, line);
  62978. line = buf;
  62979. }
  62980. return [line, err];
  62981. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Reader.ptr.prototype.ReadLineBytes }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple = _tuple; $f.buf = buf; $f.err = err; $f.line = line; $f.r = r; $f.$s = $s; $f.$r = $r; return $f;
  62982. };
  62983. Reader.prototype.ReadLineBytes = function() { return this.$val.ReadLineBytes(); };
  62984. Reader.ptr.prototype.readLineSlice = function() {
  62985. var $ptr, _r, _tuple, err, l, line, more, r, $s, $r;
  62986. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tuple = $f._tuple; err = $f.err; l = $f.l; line = $f.line; more = $f.more; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  62987. r = this;
  62988. $r = r.closeDot(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  62989. line = sliceType.nil;
  62990. /* while (true) { */ case 2:
  62991. _r = r.R.ReadLine(); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  62992. _tuple = _r; l = _tuple[0]; more = _tuple[1]; err = _tuple[2];
  62993. if (!($interfaceIsEqual(err, $ifaceNil))) {
  62994. return [sliceType.nil, err];
  62995. }
  62996. if (line === sliceType.nil && !more) {
  62997. return [l, $ifaceNil];
  62998. }
  62999. line = $appendSlice(line, l);
  63000. if (!more) {
  63001. /* break; */ $s = 3; continue;
  63002. }
  63003. /* } */ $s = 2; continue; case 3:
  63004. return [line, $ifaceNil];
  63005. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Reader.ptr.prototype.readLineSlice }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple = _tuple; $f.err = err; $f.l = l; $f.line = line; $f.more = more; $f.r = r; $f.$s = $s; $f.$r = $r; return $f;
  63006. };
  63007. Reader.prototype.readLineSlice = function() { return this.$val.readLineSlice(); };
  63008. Reader.ptr.prototype.ReadContinuedLine = function() {
  63009. var $ptr, _r, _tuple, err, line, r, $s, $r;
  63010. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tuple = $f._tuple; err = $f.err; line = $f.line; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  63011. r = this;
  63012. _r = r.readContinuedLineSlice(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  63013. _tuple = _r; line = _tuple[0]; err = _tuple[1];
  63014. return [$bytesToString(line), err];
  63015. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Reader.ptr.prototype.ReadContinuedLine }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple = _tuple; $f.err = err; $f.line = line; $f.r = r; $f.$s = $s; $f.$r = $r; return $f;
  63016. };
  63017. Reader.prototype.ReadContinuedLine = function() { return this.$val.ReadContinuedLine(); };
  63018. trim = function(s) {
  63019. var $ptr, i, n, s, x, x$1;
  63020. i = 0;
  63021. while (true) {
  63022. if (!(i < s.$length && ((((i < 0 || i >= s.$length) ? $throwRuntimeError("index out of range") : s.$array[s.$offset + i]) === 32) || (((i < 0 || i >= s.$length) ? $throwRuntimeError("index out of range") : s.$array[s.$offset + i]) === 9)))) { break; }
  63023. i = i + (1) >> 0;
  63024. }
  63025. n = s.$length;
  63026. while (true) {
  63027. if (!(n > i && (((x = n - 1 >> 0, ((x < 0 || x >= s.$length) ? $throwRuntimeError("index out of range") : s.$array[s.$offset + x])) === 32) || ((x$1 = n - 1 >> 0, ((x$1 < 0 || x$1 >= s.$length) ? $throwRuntimeError("index out of range") : s.$array[s.$offset + x$1])) === 9)))) { break; }
  63028. n = n - (1) >> 0;
  63029. }
  63030. return $subslice(s, i, n);
  63031. };
  63032. Reader.ptr.prototype.ReadContinuedLineBytes = function() {
  63033. var $ptr, _r, _tuple, buf, err, line, r, $s, $r;
  63034. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tuple = $f._tuple; buf = $f.buf; err = $f.err; line = $f.line; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  63035. r = this;
  63036. _r = r.readContinuedLineSlice(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  63037. _tuple = _r; line = _tuple[0]; err = _tuple[1];
  63038. if (!(line === sliceType.nil)) {
  63039. buf = $makeSlice(sliceType, line.$length);
  63040. $copySlice(buf, line);
  63041. line = buf;
  63042. }
  63043. return [line, err];
  63044. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Reader.ptr.prototype.ReadContinuedLineBytes }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple = _tuple; $f.buf = buf; $f.err = err; $f.line = line; $f.r = r; $f.$s = $s; $f.$r = $r; return $f;
  63045. };
  63046. Reader.prototype.ReadContinuedLineBytes = function() { return this.$val.ReadContinuedLineBytes(); };
  63047. Reader.ptr.prototype.readContinuedLineSlice = function() {
  63048. var $ptr, _r, _r$1, _r$2, _r$3, _tuple, _tuple$1, _tuple$2, err, err$1, err$2, line, line$1, peek, r, $s, $r;
  63049. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; err = $f.err; err$1 = $f.err$1; err$2 = $f.err$2; line = $f.line; line$1 = $f.line$1; peek = $f.peek; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  63050. r = this;
  63051. _r = r.readLineSlice(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  63052. _tuple = _r; line = _tuple[0]; err = _tuple[1];
  63053. if (!($interfaceIsEqual(err, $ifaceNil))) {
  63054. return [sliceType.nil, err];
  63055. }
  63056. if (line.$length === 0) {
  63057. return [line, $ifaceNil];
  63058. }
  63059. /* */ if (r.R.Buffered() > 1) { $s = 2; continue; }
  63060. /* */ $s = 3; continue;
  63061. /* if (r.R.Buffered() > 1) { */ case 2:
  63062. _r$1 = r.R.Peek(1); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  63063. _tuple$1 = _r$1; peek = _tuple$1[0]; err$1 = _tuple$1[1];
  63064. if ($interfaceIsEqual(err$1, $ifaceNil) && isASCIILetter((0 >= peek.$length ? $throwRuntimeError("index out of range") : peek.$array[peek.$offset + 0]))) {
  63065. return [trim(line), $ifaceNil];
  63066. }
  63067. /* } */ case 3:
  63068. r.buf = $appendSlice($subslice(r.buf, 0, 0), trim(line));
  63069. /* while (true) { */ case 5:
  63070. _r$2 = r.skipSpace(); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  63071. /* if (!(_r$2 > 0)) { break; } */ if(!(_r$2 > 0)) { $s = 6; continue; }
  63072. _r$3 = r.readLineSlice(); /* */ $s = 8; case 8: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  63073. _tuple$2 = _r$3; line$1 = _tuple$2[0]; err$2 = _tuple$2[1];
  63074. if (!($interfaceIsEqual(err$2, $ifaceNil))) {
  63075. /* break; */ $s = 6; continue;
  63076. }
  63077. r.buf = $append(r.buf, 32);
  63078. r.buf = $appendSlice(r.buf, line$1);
  63079. /* } */ $s = 5; continue; case 6:
  63080. return [r.buf, $ifaceNil];
  63081. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Reader.ptr.prototype.readContinuedLineSlice }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f.err = err; $f.err$1 = err$1; $f.err$2 = err$2; $f.line = line; $f.line$1 = line$1; $f.peek = peek; $f.r = r; $f.$s = $s; $f.$r = $r; return $f;
  63082. };
  63083. Reader.prototype.readContinuedLineSlice = function() { return this.$val.readContinuedLineSlice(); };
  63084. Reader.ptr.prototype.skipSpace = function() {
  63085. var $ptr, _r, _tuple, c, err, n, r, $s, $r;
  63086. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tuple = $f._tuple; c = $f.c; err = $f.err; n = $f.n; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  63087. r = this;
  63088. n = 0;
  63089. /* while (true) { */ case 1:
  63090. _r = r.R.ReadByte(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  63091. _tuple = _r; c = _tuple[0]; err = _tuple[1];
  63092. if (!($interfaceIsEqual(err, $ifaceNil))) {
  63093. /* break; */ $s = 2; continue;
  63094. }
  63095. if (!((c === 32)) && !((c === 9))) {
  63096. r.R.UnreadByte();
  63097. /* break; */ $s = 2; continue;
  63098. }
  63099. n = n + (1) >> 0;
  63100. /* } */ $s = 1; continue; case 2:
  63101. return n;
  63102. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Reader.ptr.prototype.skipSpace }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple = _tuple; $f.c = c; $f.err = err; $f.n = n; $f.r = r; $f.$s = $s; $f.$r = $r; return $f;
  63103. };
  63104. Reader.prototype.skipSpace = function() { return this.$val.skipSpace(); };
  63105. Reader.ptr.prototype.readCodeLine = function(expectCode) {
  63106. var $ptr, _r, _tuple, _tuple$1, code, continued, err, expectCode, line, message, r, $s, $r;
  63107. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; code = $f.code; continued = $f.continued; err = $f.err; expectCode = $f.expectCode; line = $f.line; message = $f.message; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  63108. code = 0;
  63109. continued = false;
  63110. message = "";
  63111. err = $ifaceNil;
  63112. r = this;
  63113. _r = r.ReadLine(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  63114. _tuple = _r; line = _tuple[0]; err = _tuple[1];
  63115. if (!($interfaceIsEqual(err, $ifaceNil))) {
  63116. return [code, continued, message, err];
  63117. }
  63118. _tuple$1 = parseCodeLine(line, expectCode); code = _tuple$1[0]; continued = _tuple$1[1]; message = _tuple$1[2]; err = _tuple$1[3];
  63119. return [code, continued, message, err];
  63120. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Reader.ptr.prototype.readCodeLine }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.code = code; $f.continued = continued; $f.err = err; $f.expectCode = expectCode; $f.line = line; $f.message = message; $f.r = r; $f.$s = $s; $f.$r = $r; return $f;
  63121. };
  63122. Reader.prototype.readCodeLine = function(expectCode) { return this.$val.readCodeLine(expectCode); };
  63123. parseCodeLine = function(line, expectCode) {
  63124. var $ptr, _q, _q$1, _tuple, code, continued, err, expectCode, line, message;
  63125. code = 0;
  63126. continued = false;
  63127. message = "";
  63128. err = $ifaceNil;
  63129. if (line.length < 4 || !((line.charCodeAt(3) === 32)) && !((line.charCodeAt(3) === 45))) {
  63130. err = new ProtocolError("short response: " + line);
  63131. return [code, continued, message, err];
  63132. }
  63133. continued = line.charCodeAt(3) === 45;
  63134. _tuple = strconv.Atoi(line.substring(0, 3)); code = _tuple[0]; err = _tuple[1];
  63135. if (!($interfaceIsEqual(err, $ifaceNil)) || code < 100) {
  63136. err = new ProtocolError("invalid response code: " + line);
  63137. return [code, continued, message, err];
  63138. }
  63139. message = line.substring(4);
  63140. if (1 <= expectCode && expectCode < 10 && !(((_q = code / 100, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")) === expectCode)) || 10 <= expectCode && expectCode < 100 && !(((_q$1 = code / 10, (_q$1 === _q$1 && _q$1 !== 1/0 && _q$1 !== -1/0) ? _q$1 >> 0 : $throwRuntimeError("integer divide by zero")) === expectCode)) || 100 <= expectCode && expectCode < 1000 && !((code === expectCode))) {
  63141. err = new Error.ptr(code, message);
  63142. }
  63143. return [code, continued, message, err];
  63144. };
  63145. Reader.ptr.prototype.ReadCodeLine = function(expectCode) {
  63146. var $ptr, _r, _tuple, code, continued, err, expectCode, message, r, $s, $r;
  63147. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tuple = $f._tuple; code = $f.code; continued = $f.continued; err = $f.err; expectCode = $f.expectCode; message = $f.message; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  63148. code = 0;
  63149. message = "";
  63150. err = $ifaceNil;
  63151. r = this;
  63152. _r = r.readCodeLine(expectCode); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  63153. _tuple = _r; code = _tuple[0]; continued = _tuple[1]; message = _tuple[2]; err = _tuple[3];
  63154. if ($interfaceIsEqual(err, $ifaceNil) && continued) {
  63155. err = new ProtocolError("unexpected multi-line response: " + message);
  63156. }
  63157. return [code, message, err];
  63158. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Reader.ptr.prototype.ReadCodeLine }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple = _tuple; $f.code = code; $f.continued = continued; $f.err = err; $f.expectCode = expectCode; $f.message = message; $f.r = r; $f.$s = $s; $f.$r = $r; return $f;
  63159. };
  63160. Reader.prototype.ReadCodeLine = function(expectCode) { return this.$val.ReadCodeLine(expectCode); };
  63161. Reader.ptr.prototype.ReadResponse = function(expectCode) {
  63162. var $ptr, _r, _r$1, _r$2, _tmp, _tmp$1, _tmp$2, _tuple, _tuple$1, _tuple$2, code, code2, continued, err, err$1, expectCode, line, message, moreMessage, r, $s, $r;
  63163. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; code = $f.code; code2 = $f.code2; continued = $f.continued; err = $f.err; err$1 = $f.err$1; expectCode = $f.expectCode; line = $f.line; message = $f.message; moreMessage = $f.moreMessage; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  63164. code = 0;
  63165. message = "";
  63166. err = $ifaceNil;
  63167. r = this;
  63168. _r = r.readCodeLine(expectCode); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  63169. _tuple = _r; code = _tuple[0]; continued = _tuple[1]; message = _tuple[2]; err = _tuple[3];
  63170. /* while (true) { */ case 2:
  63171. /* if (!($interfaceIsEqual(err, $ifaceNil) && continued)) { break; } */ if(!($interfaceIsEqual(err, $ifaceNil) && continued)) { $s = 3; continue; }
  63172. _r$1 = r.ReadLine(); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  63173. _tuple$1 = _r$1; line = _tuple$1[0]; err$1 = _tuple$1[1];
  63174. if (!($interfaceIsEqual(err$1, $ifaceNil))) {
  63175. _tmp = 0; _tmp$1 = ""; _tmp$2 = err$1; code = _tmp; message = _tmp$1; err = _tmp$2;
  63176. return [code, message, err];
  63177. }
  63178. code2 = 0;
  63179. moreMessage = "";
  63180. _tuple$2 = parseCodeLine(line, expectCode); code2 = _tuple$2[0]; continued = _tuple$2[1]; moreMessage = _tuple$2[2]; err$1 = _tuple$2[3];
  63181. /* */ if (!($interfaceIsEqual(err$1, $ifaceNil)) || !((code2 === code))) { $s = 5; continue; }
  63182. /* */ $s = 6; continue;
  63183. /* if (!($interfaceIsEqual(err$1, $ifaceNil)) || !((code2 === code))) { */ case 5:
  63184. _r$2 = strings.TrimRight(line, "\r\n"); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  63185. message = message + ("\n" + _r$2);
  63186. continued = true;
  63187. /* continue; */ $s = 2; continue;
  63188. /* } */ case 6:
  63189. message = message + ("\n" + moreMessage);
  63190. /* } */ $s = 2; continue; case 3:
  63191. return [code, message, err];
  63192. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Reader.ptr.prototype.ReadResponse }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f.code = code; $f.code2 = code2; $f.continued = continued; $f.err = err; $f.err$1 = err$1; $f.expectCode = expectCode; $f.line = line; $f.message = message; $f.moreMessage = moreMessage; $f.r = r; $f.$s = $s; $f.$r = $r; return $f;
  63193. };
  63194. Reader.prototype.ReadResponse = function(expectCode) { return this.$val.ReadResponse(expectCode); };
  63195. Reader.ptr.prototype.DotReader = function() {
  63196. var $ptr, r, $s, $r;
  63197. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  63198. r = this;
  63199. $r = r.closeDot(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  63200. r.dot = new dotReader.ptr(r, 0);
  63201. return r.dot;
  63202. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Reader.ptr.prototype.DotReader }; } $f.$ptr = $ptr; $f.r = r; $f.$s = $s; $f.$r = $r; return $f;
  63203. };
  63204. Reader.prototype.DotReader = function() { return this.$val.DotReader(); };
  63205. dotReader.ptr.prototype.Read = function(b) {
  63206. var $ptr, _r, _ref, _tuple, b, br, c, d, err, n, $s, $r;
  63207. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _ref = $f._ref; _tuple = $f._tuple; b = $f.b; br = $f.br; c = $f.c; d = $f.d; err = $f.err; n = $f.n; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  63208. n = 0;
  63209. err = $ifaceNil;
  63210. d = this;
  63211. br = d.r.R;
  63212. /* while (true) { */ case 1:
  63213. /* if (!(n < b.$length && !((d.state === 5)))) { break; } */ if(!(n < b.$length && !((d.state === 5)))) { $s = 2; continue; }
  63214. c = 0;
  63215. _r = br.ReadByte(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  63216. _tuple = _r; c = _tuple[0]; err = _tuple[1];
  63217. if (!($interfaceIsEqual(err, $ifaceNil))) {
  63218. if ($interfaceIsEqual(err, io.EOF)) {
  63219. err = io.ErrUnexpectedEOF;
  63220. }
  63221. /* break; */ $s = 2; continue;
  63222. }
  63223. _ref = d.state;
  63224. switch (0) { default: if (_ref === 0) {
  63225. if (c === 46) {
  63226. d.state = 1;
  63227. /* continue; */ $s = 1; continue;
  63228. }
  63229. if (c === 13) {
  63230. d.state = 3;
  63231. /* continue; */ $s = 1; continue;
  63232. }
  63233. d.state = 4;
  63234. } else if (_ref === 1) {
  63235. if (c === 13) {
  63236. d.state = 2;
  63237. /* continue; */ $s = 1; continue;
  63238. }
  63239. if (c === 10) {
  63240. d.state = 5;
  63241. /* continue; */ $s = 1; continue;
  63242. }
  63243. d.state = 4;
  63244. } else if (_ref === 2) {
  63245. if (c === 10) {
  63246. d.state = 5;
  63247. /* continue; */ $s = 1; continue;
  63248. }
  63249. br.UnreadByte();
  63250. c = 13;
  63251. d.state = 4;
  63252. } else if (_ref === 3) {
  63253. if (c === 10) {
  63254. d.state = 0;
  63255. break;
  63256. }
  63257. br.UnreadByte();
  63258. c = 13;
  63259. d.state = 4;
  63260. } else if (_ref === 4) {
  63261. if (c === 13) {
  63262. d.state = 3;
  63263. /* continue; */ $s = 1; continue;
  63264. }
  63265. if (c === 10) {
  63266. d.state = 0;
  63267. }
  63268. } }
  63269. ((n < 0 || n >= b.$length) ? $throwRuntimeError("index out of range") : b.$array[b.$offset + n] = c);
  63270. n = n + (1) >> 0;
  63271. /* } */ $s = 1; continue; case 2:
  63272. if ($interfaceIsEqual(err, $ifaceNil) && (d.state === 5)) {
  63273. err = io.EOF;
  63274. }
  63275. if (!($interfaceIsEqual(err, $ifaceNil)) && d.r.dot === d) {
  63276. d.r.dot = ptrType$1.nil;
  63277. }
  63278. return [n, err];
  63279. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: dotReader.ptr.prototype.Read }; } $f.$ptr = $ptr; $f._r = _r; $f._ref = _ref; $f._tuple = _tuple; $f.b = b; $f.br = br; $f.c = c; $f.d = d; $f.err = err; $f.n = n; $f.$s = $s; $f.$r = $r; return $f;
  63280. };
  63281. dotReader.prototype.Read = function(b) { return this.$val.Read(b); };
  63282. Reader.ptr.prototype.closeDot = function() {
  63283. var $ptr, _r, buf, r, $s, $r;
  63284. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; buf = $f.buf; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  63285. r = this;
  63286. if (r.dot === ptrType$1.nil) {
  63287. return;
  63288. }
  63289. buf = $makeSlice(sliceType, 128);
  63290. /* while (true) { */ case 1:
  63291. /* if (!(!(r.dot === ptrType$1.nil))) { break; } */ if(!(!(r.dot === ptrType$1.nil))) { $s = 2; continue; }
  63292. _r = r.dot.Read(buf); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  63293. _r;
  63294. /* } */ $s = 1; continue; case 2:
  63295. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Reader.ptr.prototype.closeDot }; } $f.$ptr = $ptr; $f._r = _r; $f.buf = buf; $f.r = r; $f.$s = $s; $f.$r = $r; return $f;
  63296. };
  63297. Reader.prototype.closeDot = function() { return this.$val.closeDot(); };
  63298. Reader.ptr.prototype.ReadDotBytes = function() {
  63299. var $ptr, _r, _r$1, r, $s, $r;
  63300. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  63301. r = this;
  63302. _r = r.DotReader(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  63303. _r$1 = ioutil.ReadAll(_r); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  63304. return _r$1;
  63305. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Reader.ptr.prototype.ReadDotBytes }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f.r = r; $f.$s = $s; $f.$r = $r; return $f;
  63306. };
  63307. Reader.prototype.ReadDotBytes = function() { return this.$val.ReadDotBytes(); };
  63308. Reader.ptr.prototype.ReadDotLines = function() {
  63309. var $ptr, _r, _tuple, err, line, r, v, $s, $r;
  63310. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tuple = $f._tuple; err = $f.err; line = $f.line; r = $f.r; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  63311. r = this;
  63312. v = sliceType$1.nil;
  63313. err = $ifaceNil;
  63314. /* while (true) { */ case 1:
  63315. line = "";
  63316. _r = r.ReadLine(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  63317. _tuple = _r; line = _tuple[0]; err = _tuple[1];
  63318. if (!($interfaceIsEqual(err, $ifaceNil))) {
  63319. if ($interfaceIsEqual(err, io.EOF)) {
  63320. err = io.ErrUnexpectedEOF;
  63321. }
  63322. /* break; */ $s = 2; continue;
  63323. }
  63324. if (line.length > 0 && (line.charCodeAt(0) === 46)) {
  63325. if (line.length === 1) {
  63326. /* break; */ $s = 2; continue;
  63327. }
  63328. line = line.substring(1);
  63329. }
  63330. v = $append(v, line);
  63331. /* } */ $s = 1; continue; case 2:
  63332. return [v, err];
  63333. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Reader.ptr.prototype.ReadDotLines }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple = _tuple; $f.err = err; $f.line = line; $f.r = r; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
  63334. };
  63335. Reader.prototype.ReadDotLines = function() { return this.$val.ReadDotLines(); };
  63336. Reader.ptr.prototype.ReadMIMEHeader = function() {
  63337. var $ptr, _entry, _key, _key$1, _r, _r$1, _tmp, _tmp$1, _tuple, endKey, err, hint, i, key, kv, m, r, strs, value, vv, x, $s, $r;
  63338. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _entry = $f._entry; _key = $f._key; _key$1 = $f._key$1; _r = $f._r; _r$1 = $f._r$1; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; endKey = $f.endKey; err = $f.err; hint = $f.hint; i = $f.i; key = $f.key; kv = $f.kv; m = $f.m; r = $f.r; strs = $f.strs; value = $f.value; vv = $f.vv; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  63339. r = this;
  63340. strs = sliceType$1.nil;
  63341. _r = r.upcomingHeaderNewlines(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  63342. hint = _r;
  63343. if (hint > 0) {
  63344. strs = $makeSlice(sliceType$1, hint);
  63345. }
  63346. m = new $Map();
  63347. /* while (true) { */ case 2:
  63348. _r$1 = r.readContinuedLineSlice(); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  63349. _tuple = _r$1; kv = _tuple[0]; err = _tuple[1];
  63350. if (kv.$length === 0) {
  63351. return [m, err];
  63352. }
  63353. i = bytes.IndexByte(kv, 58);
  63354. if (i < 0) {
  63355. return [m, new ProtocolError("malformed MIME header line: " + $bytesToString(kv))];
  63356. }
  63357. endKey = i;
  63358. while (true) {
  63359. if (!(endKey > 0 && ((x = endKey - 1 >> 0, ((x < 0 || x >= kv.$length) ? $throwRuntimeError("index out of range") : kv.$array[kv.$offset + x])) === 32))) { break; }
  63360. endKey = endKey - (1) >> 0;
  63361. }
  63362. key = canonicalMIMEHeaderKey($subslice(kv, 0, endKey));
  63363. i = i + (1) >> 0;
  63364. while (true) {
  63365. if (!(i < kv.$length && ((((i < 0 || i >= kv.$length) ? $throwRuntimeError("index out of range") : kv.$array[kv.$offset + i]) === 32) || (((i < 0 || i >= kv.$length) ? $throwRuntimeError("index out of range") : kv.$array[kv.$offset + i]) === 9)))) { break; }
  63366. i = i + (1) >> 0;
  63367. }
  63368. value = $bytesToString($subslice(kv, i));
  63369. vv = (_entry = m[key], _entry !== undefined ? _entry.v : sliceType$1.nil);
  63370. if (vv === sliceType$1.nil && strs.$length > 0) {
  63371. _tmp = $subslice(strs, 0, 1, 1); _tmp$1 = $subslice(strs, 1); vv = _tmp; strs = _tmp$1;
  63372. (0 >= vv.$length ? $throwRuntimeError("index out of range") : vv.$array[vv.$offset + 0] = value);
  63373. _key = key; (m || $throwRuntimeError("assignment to entry in nil map"))[_key] = { k: _key, v: vv };
  63374. } else {
  63375. _key$1 = key; (m || $throwRuntimeError("assignment to entry in nil map"))[_key$1] = { k: _key$1, v: $append(vv, value) };
  63376. }
  63377. if (!($interfaceIsEqual(err, $ifaceNil))) {
  63378. return [m, err];
  63379. }
  63380. /* } */ $s = 2; continue; case 3:
  63381. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Reader.ptr.prototype.ReadMIMEHeader }; } $f.$ptr = $ptr; $f._entry = _entry; $f._key = _key; $f._key$1 = _key$1; $f._r = _r; $f._r$1 = _r$1; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f.endKey = endKey; $f.err = err; $f.hint = hint; $f.i = i; $f.key = key; $f.kv = kv; $f.m = m; $f.r = r; $f.strs = strs; $f.value = value; $f.vv = vv; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
  63382. };
  63383. Reader.prototype.ReadMIMEHeader = function() { return this.$val.ReadMIMEHeader(); };
  63384. Reader.ptr.prototype.upcomingHeaderNewlines = function() {
  63385. var $ptr, _r, _r$1, _tuple, i, n, peek, r, s, $s, $r;
  63386. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _tuple = $f._tuple; i = $f.i; n = $f.n; peek = $f.peek; r = $f.r; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  63387. n = 0;
  63388. r = this;
  63389. _r = r.R.Peek(1); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  63390. _r;
  63391. s = r.R.Buffered();
  63392. if (s === 0) {
  63393. return n;
  63394. }
  63395. _r$1 = r.R.Peek(s); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  63396. _tuple = _r$1; peek = _tuple[0];
  63397. while (true) {
  63398. if (!(peek.$length > 0)) { break; }
  63399. i = bytes.IndexByte(peek, 10);
  63400. if (i < 3) {
  63401. return n;
  63402. }
  63403. n = n + (1) >> 0;
  63404. peek = $subslice(peek, (i + 1 >> 0));
  63405. }
  63406. return n;
  63407. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Reader.ptr.prototype.upcomingHeaderNewlines }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._tuple = _tuple; $f.i = i; $f.n = n; $f.peek = peek; $f.r = r; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
  63408. };
  63409. Reader.prototype.upcomingHeaderNewlines = function() { return this.$val.upcomingHeaderNewlines(); };
  63410. CanonicalMIMEHeaderKey = function(s) {
  63411. var $ptr, c, i, s, upper;
  63412. upper = true;
  63413. i = 0;
  63414. while (true) {
  63415. if (!(i < s.length)) { break; }
  63416. c = s.charCodeAt(i);
  63417. if (upper && 97 <= c && c <= 122) {
  63418. return canonicalMIMEHeaderKey(new sliceType($stringToBytes(s)));
  63419. }
  63420. if (!upper && 65 <= c && c <= 90) {
  63421. return canonicalMIMEHeaderKey(new sliceType($stringToBytes(s)));
  63422. }
  63423. upper = c === 45;
  63424. i = i + (1) >> 0;
  63425. }
  63426. return s;
  63427. };
  63428. $pkg.CanonicalMIMEHeaderKey = CanonicalMIMEHeaderKey;
  63429. canonicalMIMEHeaderKey = function(a) {
  63430. var $ptr, _entry, _i, _ref, a, c, i, upper, v;
  63431. upper = true;
  63432. _ref = a;
  63433. _i = 0;
  63434. while (true) {
  63435. if (!(_i < _ref.$length)) { break; }
  63436. i = _i;
  63437. c = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]);
  63438. if (c === 32) {
  63439. c = 45;
  63440. } else if (upper && 97 <= c && c <= 122) {
  63441. c = c - (32) << 24 >>> 24;
  63442. } else if (!upper && 65 <= c && c <= 90) {
  63443. c = c + (32) << 24 >>> 24;
  63444. }
  63445. ((i < 0 || i >= a.$length) ? $throwRuntimeError("index out of range") : a.$array[a.$offset + i] = c);
  63446. upper = c === 45;
  63447. _i++;
  63448. }
  63449. v = (_entry = commonHeader[$bytesToString(a)], _entry !== undefined ? _entry.v : "");
  63450. if (!(v === "")) {
  63451. return v;
  63452. }
  63453. return $bytesToString(a);
  63454. };
  63455. init = function() {
  63456. var $ptr, _i, _key, _ref, v;
  63457. _ref = new sliceType$1(["Accept", "Accept-Charset", "Accept-Encoding", "Accept-Language", "Accept-Ranges", "Cache-Control", "Cc", "Connection", "Content-Id", "Content-Language", "Content-Length", "Content-Transfer-Encoding", "Content-Type", "Cookie", "Date", "Dkim-Signature", "Etag", "Expires", "From", "Host", "If-Modified-Since", "If-None-Match", "In-Reply-To", "Last-Modified", "Location", "Message-Id", "Mime-Version", "Pragma", "Received", "Return-Path", "Server", "Set-Cookie", "Subject", "To", "User-Agent", "Via", "X-Forwarded-For", "X-Imforwards", "X-Powered-By"]);
  63458. _i = 0;
  63459. while (true) {
  63460. if (!(_i < _ref.$length)) { break; }
  63461. v = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]);
  63462. _key = v; (commonHeader || $throwRuntimeError("assignment to entry in nil map"))[_key] = { k: _key, v: v };
  63463. _i++;
  63464. }
  63465. };
  63466. Error.ptr.prototype.Error = function() {
  63467. var $ptr, _r, e, $s, $r;
  63468. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; e = $f.e; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  63469. e = this;
  63470. _r = fmt.Sprintf("%03d %s", new sliceType$2([new $Int(e.Code), new $String(e.Msg)])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  63471. return _r;
  63472. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Error.ptr.prototype.Error }; } $f.$ptr = $ptr; $f._r = _r; $f.e = e; $f.$s = $s; $f.$r = $r; return $f;
  63473. };
  63474. Error.prototype.Error = function() { return this.$val.Error(); };
  63475. ProtocolError.prototype.Error = function() {
  63476. var $ptr, p;
  63477. p = this.$val;
  63478. return p;
  63479. };
  63480. $ptrType(ProtocolError).prototype.Error = function() { return new ProtocolError(this.$get()).Error(); };
  63481. TrimString = function(s) {
  63482. var $ptr, s;
  63483. while (true) {
  63484. if (!(s.length > 0 && isASCIISpace(s.charCodeAt(0)))) { break; }
  63485. s = s.substring(1);
  63486. }
  63487. while (true) {
  63488. if (!(s.length > 0 && isASCIISpace(s.charCodeAt((s.length - 1 >> 0))))) { break; }
  63489. s = s.substring(0, (s.length - 1 >> 0));
  63490. }
  63491. return s;
  63492. };
  63493. $pkg.TrimString = TrimString;
  63494. isASCIISpace = function(b) {
  63495. var $ptr, b;
  63496. return (b === 32) || (b === 9) || (b === 10) || (b === 13);
  63497. };
  63498. isASCIILetter = function(b) {
  63499. var $ptr, b;
  63500. b = (b | (32)) >>> 0;
  63501. return 97 <= b && b <= 122;
  63502. };
  63503. MIMEHeader.methods = [{prop: "Add", name: "Add", pkg: "", typ: $funcType([$String, $String], [], false)}, {prop: "Set", name: "Set", pkg: "", typ: $funcType([$String, $String], [], false)}, {prop: "Get", name: "Get", pkg: "", typ: $funcType([$String], [$String], false)}, {prop: "Del", name: "Del", pkg: "", typ: $funcType([$String], [], false)}];
  63504. ptrType$2.methods = [{prop: "ReadLine", name: "ReadLine", pkg: "", typ: $funcType([], [$String, $error], false)}, {prop: "ReadLineBytes", name: "ReadLineBytes", pkg: "", typ: $funcType([], [sliceType, $error], false)}, {prop: "readLineSlice", name: "readLineSlice", pkg: "net/textproto", typ: $funcType([], [sliceType, $error], false)}, {prop: "ReadContinuedLine", name: "ReadContinuedLine", pkg: "", typ: $funcType([], [$String, $error], false)}, {prop: "ReadContinuedLineBytes", name: "ReadContinuedLineBytes", pkg: "", typ: $funcType([], [sliceType, $error], false)}, {prop: "readContinuedLineSlice", name: "readContinuedLineSlice", pkg: "net/textproto", typ: $funcType([], [sliceType, $error], false)}, {prop: "skipSpace", name: "skipSpace", pkg: "net/textproto", typ: $funcType([], [$Int], false)}, {prop: "readCodeLine", name: "readCodeLine", pkg: "net/textproto", typ: $funcType([$Int], [$Int, $Bool, $String, $error], false)}, {prop: "ReadCodeLine", name: "ReadCodeLine", pkg: "", typ: $funcType([$Int], [$Int, $String, $error], false)}, {prop: "ReadResponse", name: "ReadResponse", pkg: "", typ: $funcType([$Int], [$Int, $String, $error], false)}, {prop: "DotReader", name: "DotReader", pkg: "", typ: $funcType([], [io.Reader], false)}, {prop: "closeDot", name: "closeDot", pkg: "net/textproto", typ: $funcType([], [], false)}, {prop: "ReadDotBytes", name: "ReadDotBytes", pkg: "", typ: $funcType([], [sliceType, $error], false)}, {prop: "ReadDotLines", name: "ReadDotLines", pkg: "", typ: $funcType([], [sliceType$1, $error], false)}, {prop: "ReadMIMEHeader", name: "ReadMIMEHeader", pkg: "", typ: $funcType([], [MIMEHeader, $error], false)}, {prop: "upcomingHeaderNewlines", name: "upcomingHeaderNewlines", pkg: "net/textproto", typ: $funcType([], [$Int], false)}];
  63505. ptrType$1.methods = [{prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType], [$Int, $error], false)}];
  63506. ptrType$9.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}];
  63507. ProtocolError.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}];
  63508. MIMEHeader.init($String, sliceType$1);
  63509. Reader.init([{prop: "R", name: "R", pkg: "", typ: ptrType, tag: ""}, {prop: "dot", name: "dot", pkg: "net/textproto", typ: ptrType$1, tag: ""}, {prop: "buf", name: "buf", pkg: "net/textproto", typ: sliceType, tag: ""}]);
  63510. dotReader.init([{prop: "r", name: "r", pkg: "net/textproto", typ: ptrType$2, tag: ""}, {prop: "state", name: "state", pkg: "net/textproto", typ: $Int, tag: ""}]);
  63511. Error.init([{prop: "Code", name: "Code", pkg: "", typ: $Int, tag: ""}, {prop: "Msg", name: "Msg", pkg: "", typ: $String, tag: ""}]);
  63512. $init = function() {
  63513. $pkg.$init = function() {};
  63514. /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  63515. $r = bufio.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  63516. $r = bytes.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  63517. $r = fmt.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  63518. $r = io.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  63519. $r = ioutil.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  63520. $r = net.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  63521. $r = strconv.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  63522. $r = strings.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  63523. $r = sync.$init(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  63524. commonHeader = new $Map();
  63525. init();
  63526. /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
  63527. };
  63528. $pkg.$init = $init;
  63529. return $pkg;
  63530. })();
  63531. $packages["mime/multipart"] = (function() {
  63532. var $pkg = {}, $init, bufio, bytes, rand, errors, fmt, io, ioutil, mime, textproto, os, strings, Form, FileHeader, File, sectionReadCloser, Part, partReader, Reader, qpReader, sliceType, sliceType$1, ptrType, sliceType$2, ptrType$1, sliceType$3, ptrType$2, ptrType$3, ptrType$4, ptrType$5, sliceType$4, mapType, mapType$1, ptrType$8, mapType$2, ptrType$9, emptyParams, crlf, lf, softSuffix, quoteEscaper, NewReader, newPart, skipLWSPChar, newQuotedPrintableReader, fromHex, isQPDiscardWhitespace;
  63533. bufio = $packages["bufio"];
  63534. bytes = $packages["bytes"];
  63535. rand = $packages["crypto/rand"];
  63536. errors = $packages["errors"];
  63537. fmt = $packages["fmt"];
  63538. io = $packages["io"];
  63539. ioutil = $packages["io/ioutil"];
  63540. mime = $packages["mime"];
  63541. textproto = $packages["net/textproto"];
  63542. os = $packages["os"];
  63543. strings = $packages["strings"];
  63544. Form = $pkg.Form = $newType(0, $kindStruct, "multipart.Form", "Form", "mime/multipart", function(Value_, File_) {
  63545. this.$val = this;
  63546. if (arguments.length === 0) {
  63547. this.Value = false;
  63548. this.File = false;
  63549. return;
  63550. }
  63551. this.Value = Value_;
  63552. this.File = File_;
  63553. });
  63554. FileHeader = $pkg.FileHeader = $newType(0, $kindStruct, "multipart.FileHeader", "FileHeader", "mime/multipart", function(Filename_, Header_, content_, tmpfile_) {
  63555. this.$val = this;
  63556. if (arguments.length === 0) {
  63557. this.Filename = "";
  63558. this.Header = false;
  63559. this.content = sliceType.nil;
  63560. this.tmpfile = "";
  63561. return;
  63562. }
  63563. this.Filename = Filename_;
  63564. this.Header = Header_;
  63565. this.content = content_;
  63566. this.tmpfile = tmpfile_;
  63567. });
  63568. File = $pkg.File = $newType(8, $kindInterface, "multipart.File", "File", "mime/multipart", null);
  63569. sectionReadCloser = $pkg.sectionReadCloser = $newType(0, $kindStruct, "multipart.sectionReadCloser", "sectionReadCloser", "mime/multipart", function(SectionReader_) {
  63570. this.$val = this;
  63571. if (arguments.length === 0) {
  63572. this.SectionReader = ptrType$8.nil;
  63573. return;
  63574. }
  63575. this.SectionReader = SectionReader_;
  63576. });
  63577. Part = $pkg.Part = $newType(0, $kindStruct, "multipart.Part", "Part", "mime/multipart", function(Header_, buffer_, mr_, bytesRead_, disposition_, dispositionParams_, r_) {
  63578. this.$val = this;
  63579. if (arguments.length === 0) {
  63580. this.Header = false;
  63581. this.buffer = ptrType$4.nil;
  63582. this.mr = ptrType$5.nil;
  63583. this.bytesRead = 0;
  63584. this.disposition = "";
  63585. this.dispositionParams = false;
  63586. this.r = $ifaceNil;
  63587. return;
  63588. }
  63589. this.Header = Header_;
  63590. this.buffer = buffer_;
  63591. this.mr = mr_;
  63592. this.bytesRead = bytesRead_;
  63593. this.disposition = disposition_;
  63594. this.dispositionParams = dispositionParams_;
  63595. this.r = r_;
  63596. });
  63597. partReader = $pkg.partReader = $newType(0, $kindStruct, "multipart.partReader", "partReader", "mime/multipart", function(p_) {
  63598. this.$val = this;
  63599. if (arguments.length === 0) {
  63600. this.p = ptrType$3.nil;
  63601. return;
  63602. }
  63603. this.p = p_;
  63604. });
  63605. Reader = $pkg.Reader = $newType(0, $kindStruct, "multipart.Reader", "Reader", "mime/multipart", function(bufReader_, currentPart_, partsRead_, nl_, nlDashBoundary_, dashBoundaryDash_, dashBoundary_) {
  63606. this.$val = this;
  63607. if (arguments.length === 0) {
  63608. this.bufReader = ptrType$2.nil;
  63609. this.currentPart = ptrType$3.nil;
  63610. this.partsRead = 0;
  63611. this.nl = sliceType.nil;
  63612. this.nlDashBoundary = sliceType.nil;
  63613. this.dashBoundaryDash = sliceType.nil;
  63614. this.dashBoundary = sliceType.nil;
  63615. return;
  63616. }
  63617. this.bufReader = bufReader_;
  63618. this.currentPart = currentPart_;
  63619. this.partsRead = partsRead_;
  63620. this.nl = nl_;
  63621. this.nlDashBoundary = nlDashBoundary_;
  63622. this.dashBoundaryDash = dashBoundaryDash_;
  63623. this.dashBoundary = dashBoundary_;
  63624. });
  63625. qpReader = $pkg.qpReader = $newType(0, $kindStruct, "multipart.qpReader", "qpReader", "mime/multipart", function(br_, rerr_, line_) {
  63626. this.$val = this;
  63627. if (arguments.length === 0) {
  63628. this.br = ptrType$2.nil;
  63629. this.rerr = $ifaceNil;
  63630. this.line = sliceType.nil;
  63631. return;
  63632. }
  63633. this.br = br_;
  63634. this.rerr = rerr_;
  63635. this.line = line_;
  63636. });
  63637. sliceType = $sliceType($Uint8);
  63638. sliceType$1 = $sliceType($String);
  63639. ptrType = $ptrType(Form);
  63640. sliceType$2 = $sliceType(io.Reader);
  63641. ptrType$1 = $ptrType(FileHeader);
  63642. sliceType$3 = $sliceType(ptrType$1);
  63643. ptrType$2 = $ptrType(bufio.Reader);
  63644. ptrType$3 = $ptrType(Part);
  63645. ptrType$4 = $ptrType(bytes.Buffer);
  63646. ptrType$5 = $ptrType(Reader);
  63647. sliceType$4 = $sliceType($emptyInterface);
  63648. mapType = $mapType($String, sliceType$1);
  63649. mapType$1 = $mapType($String, sliceType$3);
  63650. ptrType$8 = $ptrType(io.SectionReader);
  63651. mapType$2 = $mapType($String, $String);
  63652. ptrType$9 = $ptrType(qpReader);
  63653. Reader.ptr.prototype.ReadForm = function(maxMemory) {
  63654. var $ptr, _entry, _entry$1, _key, _key$1, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, b, err, err$1, err$2, err$3, f, fh, file, filename, form, maxMemory, maxValueBytes, n, n$1, name, p, r, x, x$1, $s, $deferred, $r;
  63655. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _entry = $f._entry; _entry$1 = $f._entry$1; _key = $f._key; _key$1 = $f._key$1; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$10 = $f._tmp$10; _tmp$11 = $f._tmp$11; _tmp$12 = $f._tmp$12; _tmp$13 = $f._tmp$13; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tmp$6 = $f._tmp$6; _tmp$7 = $f._tmp$7; _tmp$8 = $f._tmp$8; _tmp$9 = $f._tmp$9; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; _tuple$4 = $f._tuple$4; b = $f.b; err = $f.err; err$1 = $f.err$1; err$2 = $f.err$2; err$3 = $f.err$3; f = $f.f; fh = $f.fh; file = $f.file; filename = $f.filename; form = $f.form; maxMemory = $f.maxMemory; maxValueBytes = $f.maxValueBytes; n = $f.n; n$1 = $f.n$1; name = $f.name; p = $f.p; r = $f.r; x = $f.x; x$1 = $f.x$1; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
  63656. err = [err];
  63657. form = [form];
  63658. f = ptrType.nil;
  63659. err[0] = $ifaceNil;
  63660. r = this;
  63661. form[0] = new Form.ptr(new $Map(), new $Map());
  63662. $deferred.push([(function(err, form) { return function() {
  63663. var $ptr;
  63664. if (!($interfaceIsEqual(err[0], $ifaceNil))) {
  63665. form[0].RemoveAll();
  63666. }
  63667. }; })(err, form), []]);
  63668. maxValueBytes = new $Int64(0, 10485760);
  63669. /* while (true) { */ case 1:
  63670. b = [b];
  63671. _r = r.NextPart(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  63672. _tuple = _r; p = _tuple[0]; err$1 = _tuple[1];
  63673. if ($interfaceIsEqual(err$1, io.EOF)) {
  63674. /* break; */ $s = 2; continue;
  63675. }
  63676. if (!($interfaceIsEqual(err$1, $ifaceNil))) {
  63677. _tmp = ptrType.nil; _tmp$1 = err$1; f = _tmp; err[0] = _tmp$1;
  63678. return [f, err[0]];
  63679. }
  63680. _r$1 = p.FormName(); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  63681. name = _r$1;
  63682. /* */ if (name === "") { $s = 5; continue; }
  63683. /* */ $s = 6; continue;
  63684. /* if (name === "") { */ case 5:
  63685. /* continue; */ $s = 1; continue;
  63686. /* } */ case 6:
  63687. _r$2 = p.FileName(); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  63688. filename = _r$2;
  63689. b[0] = $clone(new bytes.Buffer.ptr(), bytes.Buffer);
  63690. /* */ if (filename === "") { $s = 8; continue; }
  63691. /* */ $s = 9; continue;
  63692. /* if (filename === "") { */ case 8:
  63693. _r$3 = io.CopyN(b[0], p, maxValueBytes); /* */ $s = 10; case 10: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  63694. _tuple$1 = _r$3; n = _tuple$1[0]; err$2 = _tuple$1[1];
  63695. if (!($interfaceIsEqual(err$2, $ifaceNil)) && !($interfaceIsEqual(err$2, io.EOF))) {
  63696. _tmp$2 = ptrType.nil; _tmp$3 = err$2; f = _tmp$2; err[0] = _tmp$3;
  63697. return [f, err[0]];
  63698. }
  63699. maxValueBytes = (x = n, new $Int64(maxValueBytes.$high - x.$high, maxValueBytes.$low - x.$low));
  63700. if ((maxValueBytes.$high === 0 && maxValueBytes.$low === 0)) {
  63701. _tmp$4 = ptrType.nil; _tmp$5 = errors.New("multipart: message too large"); f = _tmp$4; err[0] = _tmp$5;
  63702. return [f, err[0]];
  63703. }
  63704. _key = name; (form[0].Value || $throwRuntimeError("assignment to entry in nil map"))[_key] = { k: _key, v: $append((_entry = form[0].Value[name], _entry !== undefined ? _entry.v : sliceType$1.nil), b[0].String()) };
  63705. /* continue; */ $s = 1; continue;
  63706. /* } */ case 9:
  63707. fh = new FileHeader.ptr(filename, p.Header, sliceType.nil, "");
  63708. _r$4 = io.CopyN(b[0], p, new $Int64(maxMemory.$high + 0, maxMemory.$low + 1)); /* */ $s = 11; case 11: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
  63709. _tuple$2 = _r$4; n$1 = _tuple$2[0]; err$1 = _tuple$2[1];
  63710. if (!($interfaceIsEqual(err$1, $ifaceNil)) && !($interfaceIsEqual(err$1, io.EOF))) {
  63711. _tmp$6 = ptrType.nil; _tmp$7 = err$1; f = _tmp$6; err[0] = _tmp$7;
  63712. return [f, err[0]];
  63713. }
  63714. /* */ if ((n$1.$high > maxMemory.$high || (n$1.$high === maxMemory.$high && n$1.$low > maxMemory.$low))) { $s = 12; continue; }
  63715. /* */ $s = 13; continue;
  63716. /* if ((n$1.$high > maxMemory.$high || (n$1.$high === maxMemory.$high && n$1.$low > maxMemory.$low))) { */ case 12:
  63717. _r$5 = ioutil.TempFile("", "multipart-"); /* */ $s = 15; case 15: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
  63718. _tuple$3 = _r$5; file = _tuple$3[0]; err$3 = _tuple$3[1];
  63719. if (!($interfaceIsEqual(err$3, $ifaceNil))) {
  63720. _tmp$8 = ptrType.nil; _tmp$9 = err$3; f = _tmp$8; err[0] = _tmp$9;
  63721. return [f, err[0]];
  63722. }
  63723. $deferred.push([$methodVal(file, "Close"), []]);
  63724. _r$6 = io.Copy(file, io.MultiReader(new sliceType$2([b[0], p]))); /* */ $s = 16; case 16: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
  63725. _tuple$4 = _r$6; err$3 = _tuple$4[1];
  63726. if (!($interfaceIsEqual(err$3, $ifaceNil))) {
  63727. os.Remove(file.Name());
  63728. _tmp$10 = ptrType.nil; _tmp$11 = err$3; f = _tmp$10; err[0] = _tmp$11;
  63729. return [f, err[0]];
  63730. }
  63731. fh.tmpfile = file.Name();
  63732. $s = 14; continue;
  63733. /* } else { */ case 13:
  63734. fh.content = b[0].Bytes();
  63735. maxMemory = (x$1 = n$1, new $Int64(maxMemory.$high - x$1.$high, maxMemory.$low - x$1.$low));
  63736. /* } */ case 14:
  63737. _key$1 = name; (form[0].File || $throwRuntimeError("assignment to entry in nil map"))[_key$1] = { k: _key$1, v: $append((_entry$1 = form[0].File[name], _entry$1 !== undefined ? _entry$1.v : sliceType$3.nil), fh) };
  63738. /* } */ $s = 1; continue; case 2:
  63739. _tmp$12 = form[0]; _tmp$13 = $ifaceNil; f = _tmp$12; err[0] = _tmp$13;
  63740. return [f, err[0]];
  63741. /* */ $s = -1; case -1: } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if (!$curGoroutine.asleep) { return [f, err[0]]; } if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: Reader.ptr.prototype.ReadForm }; } $f.$ptr = $ptr; $f._entry = _entry; $f._entry$1 = _entry$1; $f._key = _key; $f._key$1 = _key$1; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$10 = _tmp$10; $f._tmp$11 = _tmp$11; $f._tmp$12 = _tmp$12; $f._tmp$13 = _tmp$13; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tmp$6 = _tmp$6; $f._tmp$7 = _tmp$7; $f._tmp$8 = _tmp$8; $f._tmp$9 = _tmp$9; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f._tuple$4 = _tuple$4; $f.b = b; $f.err = err; $f.err$1 = err$1; $f.err$2 = err$2; $f.err$3 = err$3; $f.f = f; $f.fh = fh; $f.file = file; $f.filename = filename; $f.form = form; $f.maxMemory = maxMemory; $f.maxValueBytes = maxValueBytes; $f.n = n; $f.n$1 = n$1; $f.name = name; $f.p = p; $f.r = r; $f.x = x; $f.x$1 = x$1; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
  63742. };
  63743. Reader.prototype.ReadForm = function(maxMemory) { return this.$val.ReadForm(maxMemory); };
  63744. Form.ptr.prototype.RemoveAll = function() {
  63745. var $ptr, _entry, _i, _i$1, _keys, _ref, _ref$1, e, err, f, fh, fhs;
  63746. f = this;
  63747. err = $ifaceNil;
  63748. _ref = f.File;
  63749. _i = 0;
  63750. _keys = $keys(_ref);
  63751. while (true) {
  63752. if (!(_i < _keys.length)) { break; }
  63753. _entry = _ref[_keys[_i]];
  63754. if (_entry === undefined) {
  63755. _i++;
  63756. continue;
  63757. }
  63758. fhs = _entry.v;
  63759. _ref$1 = fhs;
  63760. _i$1 = 0;
  63761. while (true) {
  63762. if (!(_i$1 < _ref$1.$length)) { break; }
  63763. fh = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? $throwRuntimeError("index out of range") : _ref$1.$array[_ref$1.$offset + _i$1]);
  63764. if (!(fh.tmpfile === "")) {
  63765. e = os.Remove(fh.tmpfile);
  63766. if (!($interfaceIsEqual(e, $ifaceNil)) && $interfaceIsEqual(err, $ifaceNil)) {
  63767. err = e;
  63768. }
  63769. }
  63770. _i$1++;
  63771. }
  63772. _i++;
  63773. }
  63774. return err;
  63775. };
  63776. Form.prototype.RemoveAll = function() { return this.$val.RemoveAll(); };
  63777. FileHeader.ptr.prototype.Open = function() {
  63778. var $ptr, b, fh, r, x;
  63779. fh = this;
  63780. b = fh.content;
  63781. if (!(b === sliceType.nil)) {
  63782. r = io.NewSectionReader(bytes.NewReader(b), new $Int64(0, 0), new $Int64(0, b.$length));
  63783. return [(x = new sectionReadCloser.ptr(r), new x.constructor.elem(x)), $ifaceNil];
  63784. }
  63785. return os.Open(fh.tmpfile);
  63786. };
  63787. FileHeader.prototype.Open = function() { return this.$val.Open(); };
  63788. sectionReadCloser.ptr.prototype.Close = function() {
  63789. var $ptr, rc;
  63790. rc = $clone(this, sectionReadCloser);
  63791. return $ifaceNil;
  63792. };
  63793. sectionReadCloser.prototype.Close = function() { return this.$val.Close(); };
  63794. Part.ptr.prototype.FormName = function() {
  63795. var $ptr, _entry, p, $s, $r;
  63796. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _entry = $f._entry; p = $f.p; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  63797. p = this;
  63798. /* */ if (p.dispositionParams === false) { $s = 1; continue; }
  63799. /* */ $s = 2; continue;
  63800. /* if (p.dispositionParams === false) { */ case 1:
  63801. $r = p.parseContentDisposition(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  63802. /* } */ case 2:
  63803. if (!(p.disposition === "form-data")) {
  63804. return "";
  63805. }
  63806. return (_entry = p.dispositionParams["name"], _entry !== undefined ? _entry.v : "");
  63807. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Part.ptr.prototype.FormName }; } $f.$ptr = $ptr; $f._entry = _entry; $f.p = p; $f.$s = $s; $f.$r = $r; return $f;
  63808. };
  63809. Part.prototype.FormName = function() { return this.$val.FormName(); };
  63810. Part.ptr.prototype.FileName = function() {
  63811. var $ptr, _entry, p, $s, $r;
  63812. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _entry = $f._entry; p = $f.p; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  63813. p = this;
  63814. /* */ if (p.dispositionParams === false) { $s = 1; continue; }
  63815. /* */ $s = 2; continue;
  63816. /* if (p.dispositionParams === false) { */ case 1:
  63817. $r = p.parseContentDisposition(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  63818. /* } */ case 2:
  63819. return (_entry = p.dispositionParams["filename"], _entry !== undefined ? _entry.v : "");
  63820. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Part.ptr.prototype.FileName }; } $f.$ptr = $ptr; $f._entry = _entry; $f.p = p; $f.$s = $s; $f.$r = $r; return $f;
  63821. };
  63822. Part.prototype.FileName = function() { return this.$val.FileName(); };
  63823. Part.ptr.prototype.parseContentDisposition = function() {
  63824. var $ptr, _r, _tuple, err, p, v, $s, $r;
  63825. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tuple = $f._tuple; err = $f.err; p = $f.p; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  63826. p = this;
  63827. v = new textproto.MIMEHeader(p.Header).Get("Content-Disposition");
  63828. err = $ifaceNil;
  63829. _r = mime.ParseMediaType(v); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  63830. _tuple = _r; p.disposition = _tuple[0]; p.dispositionParams = _tuple[1]; err = _tuple[2];
  63831. if (!($interfaceIsEqual(err, $ifaceNil))) {
  63832. p.dispositionParams = emptyParams;
  63833. }
  63834. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Part.ptr.prototype.parseContentDisposition }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple = _tuple; $f.err = err; $f.p = p; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
  63835. };
  63836. Part.prototype.parseContentDisposition = function() { return this.$val.parseContentDisposition(); };
  63837. NewReader = function(r, boundary) {
  63838. var $ptr, b, boundary, r;
  63839. b = new sliceType($stringToBytes("\r\n--" + boundary + "--"));
  63840. return new Reader.ptr(bufio.NewReader(r), ptrType$3.nil, 0, $subslice(b, 0, 2), $subslice(b, 0, (b.$length - 2 >> 0)), $subslice(b, 2), $subslice(b, 2, (b.$length - 2 >> 0)));
  63841. };
  63842. $pkg.NewReader = NewReader;
  63843. newPart = function(mr) {
  63844. var $ptr, _r, bp, err, mr, x, $s, $r;
  63845. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; bp = $f.bp; err = $f.err; mr = $f.mr; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  63846. bp = new Part.ptr(new $Map(), new bytes.Buffer.ptr(), mr, 0, "", false, $ifaceNil);
  63847. _r = bp.populateHeaders(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  63848. err = _r;
  63849. /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 2; continue; }
  63850. /* */ $s = 3; continue;
  63851. /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 2:
  63852. return [ptrType$3.nil, err];
  63853. /* } */ case 3:
  63854. bp.r = (x = new partReader.ptr(bp), new x.constructor.elem(x));
  63855. if (new textproto.MIMEHeader(bp.Header).Get("Content-Transfer-Encoding") === "quoted-printable") {
  63856. new textproto.MIMEHeader(bp.Header).Del("Content-Transfer-Encoding");
  63857. bp.r = newQuotedPrintableReader(bp.r);
  63858. }
  63859. return [bp, $ifaceNil];
  63860. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: newPart }; } $f.$ptr = $ptr; $f._r = _r; $f.bp = bp; $f.err = err; $f.mr = mr; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
  63861. };
  63862. Part.ptr.prototype.populateHeaders = function() {
  63863. var $ptr, _r, _tuple, bp, err, header, r, $s, $r;
  63864. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tuple = $f._tuple; bp = $f.bp; err = $f.err; header = $f.header; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  63865. bp = this;
  63866. r = textproto.NewReader(bp.mr.bufReader);
  63867. _r = r.ReadMIMEHeader(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  63868. _tuple = _r; header = _tuple[0]; err = _tuple[1];
  63869. if ($interfaceIsEqual(err, $ifaceNil)) {
  63870. bp.Header = header;
  63871. }
  63872. return err;
  63873. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Part.ptr.prototype.populateHeaders }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple = _tuple; $f.bp = bp; $f.err = err; $f.header = header; $f.r = r; $f.$s = $s; $f.$r = $r; return $f;
  63874. };
  63875. Part.prototype.populateHeaders = function() { return this.$val.populateHeaders(); };
  63876. Part.ptr.prototype.Read = function(d) {
  63877. var $ptr, _r, _tuple, d, err, n, p, $s, $r;
  63878. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tuple = $f._tuple; d = $f.d; err = $f.err; n = $f.n; p = $f.p; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  63879. n = 0;
  63880. err = $ifaceNil;
  63881. p = this;
  63882. _r = p.r.Read(d); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  63883. _tuple = _r; n = _tuple[0]; err = _tuple[1];
  63884. return [n, err];
  63885. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Part.ptr.prototype.Read }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple = _tuple; $f.d = d; $f.err = err; $f.n = n; $f.p = p; $f.$s = $s; $f.$r = $r; return $f;
  63886. };
  63887. Part.prototype.Read = function(d) { return this.$val.Read(d); };
  63888. partReader.ptr.prototype.Read = function(d) {
  63889. var $ptr, _r, _r$1, _r$2, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tuple, _tuple$1, _tuple$2, _tuple$3, d, err, err$1, foundBoundary, idx, n, nCopy, p, peek, pr, safeCount, unexpectedEOF, $s, $deferred, $r;
  63890. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tmp$6 = $f._tmp$6; _tmp$7 = $f._tmp$7; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; d = $f.d; err = $f.err; err$1 = $f.err$1; foundBoundary = $f.foundBoundary; idx = $f.idx; n = $f.n; nCopy = $f.nCopy; p = $f.p; peek = $f.peek; pr = $f.pr; safeCount = $f.safeCount; unexpectedEOF = $f.unexpectedEOF; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
  63891. n = [n];
  63892. p = [p];
  63893. n[0] = 0;
  63894. err = $ifaceNil;
  63895. pr = $clone(this, partReader);
  63896. p[0] = pr.p;
  63897. $deferred.push([(function(n, p) { return function() {
  63898. var $ptr;
  63899. p[0].bytesRead = p[0].bytesRead + (n[0]) >> 0;
  63900. }; })(n, p), []]);
  63901. if (p[0].buffer.Len() >= d.$length) {
  63902. _tuple = p[0].buffer.Read(d); n[0] = _tuple[0]; err = _tuple[1];
  63903. return [n[0], err];
  63904. }
  63905. _r = p[0].mr.bufReader.Peek(4096); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  63906. _tuple$1 = _r; peek = _tuple$1[0]; err = _tuple$1[1];
  63907. if ((p[0].bytesRead === 0) && p[0].mr.peekBufferIsEmptyPart(peek)) {
  63908. _tmp = 0; _tmp$1 = io.EOF; n[0] = _tmp; err = _tmp$1;
  63909. return [n[0], err];
  63910. }
  63911. unexpectedEOF = $interfaceIsEqual(err, io.EOF);
  63912. /* */ if (!($interfaceIsEqual(err, $ifaceNil)) && !unexpectedEOF) { $s = 2; continue; }
  63913. /* */ $s = 3; continue;
  63914. /* if (!($interfaceIsEqual(err, $ifaceNil)) && !unexpectedEOF) { */ case 2:
  63915. _r$1 = fmt.Errorf("multipart: Part Read: %v", new sliceType$4([err])); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  63916. _tmp$2 = 0; _tmp$3 = _r$1; n[0] = _tmp$2; err = _tmp$3;
  63917. return [n[0], err];
  63918. /* } */ case 3:
  63919. if (peek === sliceType.nil) {
  63920. $panic(new $String("nil peek buf"));
  63921. }
  63922. nCopy = 0;
  63923. foundBoundary = false;
  63924. idx = bytes.Index(peek, p[0].mr.nlDashBoundary);
  63925. if (!((idx === -1))) {
  63926. nCopy = idx;
  63927. foundBoundary = true;
  63928. } else {
  63929. safeCount = peek.$length - p[0].mr.nlDashBoundary.$length >> 0;
  63930. if (safeCount > 0) {
  63931. nCopy = safeCount;
  63932. } else if (unexpectedEOF) {
  63933. _tmp$4 = 0; _tmp$5 = io.ErrUnexpectedEOF; n[0] = _tmp$4; err = _tmp$5;
  63934. return [n[0], err];
  63935. }
  63936. }
  63937. /* */ if (nCopy > 0) { $s = 5; continue; }
  63938. /* */ $s = 6; continue;
  63939. /* if (nCopy > 0) { */ case 5:
  63940. _r$2 = io.CopyN(p[0].buffer, p[0].mr.bufReader, new $Int64(0, nCopy)); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  63941. _tuple$2 = _r$2; err$1 = _tuple$2[1];
  63942. /* */ if (!($interfaceIsEqual(err$1, $ifaceNil))) { $s = 8; continue; }
  63943. /* */ $s = 9; continue;
  63944. /* if (!($interfaceIsEqual(err$1, $ifaceNil))) { */ case 8:
  63945. _tmp$6 = 0; _tmp$7 = err$1; n[0] = _tmp$6; err = _tmp$7;
  63946. return [n[0], err];
  63947. /* } */ case 9:
  63948. /* } */ case 6:
  63949. _tuple$3 = p[0].buffer.Read(d); n[0] = _tuple$3[0]; err = _tuple$3[1];
  63950. if ($interfaceIsEqual(err, io.EOF) && !foundBoundary) {
  63951. err = $ifaceNil;
  63952. }
  63953. return [n[0], err];
  63954. /* */ $s = -1; case -1: } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if (!$curGoroutine.asleep) { return [n[0], err]; } if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: partReader.ptr.prototype.Read }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tmp$6 = _tmp$6; $f._tmp$7 = _tmp$7; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f.d = d; $f.err = err; $f.err$1 = err$1; $f.foundBoundary = foundBoundary; $f.idx = idx; $f.n = n; $f.nCopy = nCopy; $f.p = p; $f.peek = peek; $f.pr = pr; $f.safeCount = safeCount; $f.unexpectedEOF = unexpectedEOF; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
  63955. };
  63956. partReader.prototype.Read = function(d) { return this.$val.Read(d); };
  63957. Part.ptr.prototype.Close = function() {
  63958. var $ptr, _r, p, $s, $r;
  63959. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; p = $f.p; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  63960. p = this;
  63961. _r = io.Copy(ioutil.Discard, p); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  63962. _r;
  63963. return $ifaceNil;
  63964. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Part.ptr.prototype.Close }; } $f.$ptr = $ptr; $f._r = _r; $f.p = p; $f.$s = $s; $f.$r = $r; return $f;
  63965. };
  63966. Part.prototype.Close = function() { return this.$val.Close(); };
  63967. Reader.ptr.prototype.NextPart = function() {
  63968. var $ptr, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _tuple, _tuple$1, bp, err, err$1, expectNewPart, line, r, $s, $r;
  63969. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; bp = $f.bp; err = $f.err; err$1 = $f.err$1; expectNewPart = $f.expectNewPart; line = $f.line; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  63970. r = this;
  63971. /* */ if (!(r.currentPart === ptrType$3.nil)) { $s = 1; continue; }
  63972. /* */ $s = 2; continue;
  63973. /* if (!(r.currentPart === ptrType$3.nil)) { */ case 1:
  63974. _r = r.currentPart.Close(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  63975. _r;
  63976. /* } */ case 2:
  63977. expectNewPart = false;
  63978. /* while (true) { */ case 4:
  63979. _r$1 = r.bufReader.ReadSlice(10); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  63980. _tuple = _r$1; line = _tuple[0]; err = _tuple[1];
  63981. if ($interfaceIsEqual(err, io.EOF) && r.isFinalBoundary(line)) {
  63982. return [ptrType$3.nil, io.EOF];
  63983. }
  63984. /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 7; continue; }
  63985. /* */ $s = 8; continue;
  63986. /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 7:
  63987. _r$2 = fmt.Errorf("multipart: NextPart: %v", new sliceType$4([err])); /* */ $s = 9; case 9: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  63988. return [ptrType$3.nil, _r$2];
  63989. /* } */ case 8:
  63990. /* */ if (r.isBoundaryDelimiterLine(line)) { $s = 10; continue; }
  63991. /* */ $s = 11; continue;
  63992. /* if (r.isBoundaryDelimiterLine(line)) { */ case 10:
  63993. r.partsRead = r.partsRead + (1) >> 0;
  63994. _r$3 = newPart(r); /* */ $s = 12; case 12: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  63995. _tuple$1 = _r$3; bp = _tuple$1[0]; err$1 = _tuple$1[1];
  63996. if (!($interfaceIsEqual(err$1, $ifaceNil))) {
  63997. return [ptrType$3.nil, err$1];
  63998. }
  63999. r.currentPart = bp;
  64000. return [bp, $ifaceNil];
  64001. /* } */ case 11:
  64002. if (r.isFinalBoundary(line)) {
  64003. return [ptrType$3.nil, io.EOF];
  64004. }
  64005. /* */ if (expectNewPart) { $s = 13; continue; }
  64006. /* */ $s = 14; continue;
  64007. /* if (expectNewPart) { */ case 13:
  64008. _r$4 = fmt.Errorf("multipart: expecting a new Part; got line %q", new sliceType$4([new $String($bytesToString(line))])); /* */ $s = 15; case 15: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
  64009. return [ptrType$3.nil, _r$4];
  64010. /* } */ case 14:
  64011. /* */ if (r.partsRead === 0) { $s = 16; continue; }
  64012. /* */ $s = 17; continue;
  64013. /* if (r.partsRead === 0) { */ case 16:
  64014. /* continue; */ $s = 4; continue;
  64015. /* } */ case 17:
  64016. /* */ if (bytes.Equal(line, r.nl)) { $s = 18; continue; }
  64017. /* */ $s = 19; continue;
  64018. /* if (bytes.Equal(line, r.nl)) { */ case 18:
  64019. expectNewPart = true;
  64020. /* continue; */ $s = 4; continue;
  64021. /* } */ case 19:
  64022. _r$5 = fmt.Errorf("multipart: unexpected line in Next(): %q", new sliceType$4([line])); /* */ $s = 20; case 20: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
  64023. return [ptrType$3.nil, _r$5];
  64024. /* } */ $s = 4; continue; case 5:
  64025. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Reader.ptr.prototype.NextPart }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.bp = bp; $f.err = err; $f.err$1 = err$1; $f.expectNewPart = expectNewPart; $f.line = line; $f.r = r; $f.$s = $s; $f.$r = $r; return $f;
  64026. };
  64027. Reader.prototype.NextPart = function() { return this.$val.NextPart(); };
  64028. Reader.ptr.prototype.isFinalBoundary = function(line) {
  64029. var $ptr, line, mr, rest;
  64030. mr = this;
  64031. if (!bytes.HasPrefix(line, mr.dashBoundaryDash)) {
  64032. return false;
  64033. }
  64034. rest = $subslice(line, mr.dashBoundaryDash.$length);
  64035. rest = skipLWSPChar(rest);
  64036. return (rest.$length === 0) || bytes.Equal(rest, mr.nl);
  64037. };
  64038. Reader.prototype.isFinalBoundary = function(line) { return this.$val.isFinalBoundary(line); };
  64039. Reader.ptr.prototype.isBoundaryDelimiterLine = function(line) {
  64040. var $ptr, line, mr, rest, ret;
  64041. ret = false;
  64042. mr = this;
  64043. if (!bytes.HasPrefix(line, mr.dashBoundary)) {
  64044. ret = false;
  64045. return ret;
  64046. }
  64047. rest = $subslice(line, mr.dashBoundary.$length);
  64048. rest = skipLWSPChar(rest);
  64049. if ((mr.partsRead === 0) && (rest.$length === 1) && ((0 >= rest.$length ? $throwRuntimeError("index out of range") : rest.$array[rest.$offset + 0]) === 10)) {
  64050. mr.nl = $subslice(mr.nl, 1);
  64051. mr.nlDashBoundary = $subslice(mr.nlDashBoundary, 1);
  64052. }
  64053. ret = bytes.Equal(rest, mr.nl);
  64054. return ret;
  64055. };
  64056. Reader.prototype.isBoundaryDelimiterLine = function(line) { return this.$val.isBoundaryDelimiterLine(line); };
  64057. Reader.ptr.prototype.peekBufferIsEmptyPart = function(peek) {
  64058. var $ptr, mr, peek, rest, rest$1;
  64059. mr = this;
  64060. if (bytes.HasPrefix(peek, mr.dashBoundaryDash)) {
  64061. rest = $subslice(peek, mr.dashBoundaryDash.$length);
  64062. rest = skipLWSPChar(rest);
  64063. return bytes.HasPrefix(rest, mr.nl) || (rest.$length === 0);
  64064. }
  64065. if (!bytes.HasPrefix(peek, mr.dashBoundary)) {
  64066. return false;
  64067. }
  64068. rest$1 = $subslice(peek, mr.dashBoundary.$length);
  64069. rest$1 = skipLWSPChar(rest$1);
  64070. return bytes.HasPrefix(rest$1, mr.nl);
  64071. };
  64072. Reader.prototype.peekBufferIsEmptyPart = function(peek) { return this.$val.peekBufferIsEmptyPart(peek); };
  64073. skipLWSPChar = function(b) {
  64074. var $ptr, b;
  64075. while (true) {
  64076. if (!(b.$length > 0 && (((0 >= b.$length ? $throwRuntimeError("index out of range") : b.$array[b.$offset + 0]) === 32) || ((0 >= b.$length ? $throwRuntimeError("index out of range") : b.$array[b.$offset + 0]) === 9)))) { break; }
  64077. b = $subslice(b, 1);
  64078. }
  64079. return b;
  64080. };
  64081. newQuotedPrintableReader = function(r) {
  64082. var $ptr, r;
  64083. return new qpReader.ptr(bufio.NewReader(r), $ifaceNil, sliceType.nil);
  64084. };
  64085. fromHex = function(b) {
  64086. var $ptr, _r, b, $s, $r;
  64087. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; b = $f.b; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  64088. if (b >= 48 && b <= 57) {
  64089. return [b - 48 << 24 >>> 24, $ifaceNil];
  64090. } else if (b >= 65 && b <= 70) {
  64091. return [(b - 65 << 24 >>> 24) + 10 << 24 >>> 24, $ifaceNil];
  64092. }
  64093. _r = fmt.Errorf("multipart: invalid quoted-printable hex byte 0x%02x", new sliceType$4([new $Uint8(b)])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  64094. return [0, _r];
  64095. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: fromHex }; } $f.$ptr = $ptr; $f._r = _r; $f.b = b; $f.$s = $s; $f.$r = $r; return $f;
  64096. };
  64097. qpReader.ptr.prototype.readHexByte = function(v) {
  64098. var $ptr, _r, _r$1, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, b, err, hb, lb, q, v, $s, $r;
  64099. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tmp$6 = $f._tmp$6; _tmp$7 = $f._tmp$7; _tmp$8 = $f._tmp$8; _tmp$9 = $f._tmp$9; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; b = $f.b; err = $f.err; hb = $f.hb; lb = $f.lb; q = $f.q; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  64100. b = 0;
  64101. err = $ifaceNil;
  64102. q = this;
  64103. if (v.$length < 2) {
  64104. _tmp = 0; _tmp$1 = io.ErrUnexpectedEOF; b = _tmp; err = _tmp$1;
  64105. return [b, err];
  64106. }
  64107. _tmp$2 = 0; _tmp$3 = 0; hb = _tmp$2; lb = _tmp$3;
  64108. _r = fromHex((0 >= v.$length ? $throwRuntimeError("index out of range") : v.$array[v.$offset + 0])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  64109. _tuple = _r; hb = _tuple[0]; err = _tuple[1];
  64110. /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 2; continue; }
  64111. /* */ $s = 3; continue;
  64112. /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 2:
  64113. _tmp$4 = 0; _tmp$5 = err; b = _tmp$4; err = _tmp$5;
  64114. return [b, err];
  64115. /* } */ case 3:
  64116. _r$1 = fromHex((1 >= v.$length ? $throwRuntimeError("index out of range") : v.$array[v.$offset + 1])); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  64117. _tuple$1 = _r$1; lb = _tuple$1[0]; err = _tuple$1[1];
  64118. /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 5; continue; }
  64119. /* */ $s = 6; continue;
  64120. /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 5:
  64121. _tmp$6 = 0; _tmp$7 = err; b = _tmp$6; err = _tmp$7;
  64122. return [b, err];
  64123. /* } */ case 6:
  64124. _tmp$8 = ((hb << 4 << 24 >>> 24) | lb) >>> 0; _tmp$9 = $ifaceNil; b = _tmp$8; err = _tmp$9;
  64125. return [b, err];
  64126. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: qpReader.ptr.prototype.readHexByte }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tmp$6 = _tmp$6; $f._tmp$7 = _tmp$7; $f._tmp$8 = _tmp$8; $f._tmp$9 = _tmp$9; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.b = b; $f.err = err; $f.hb = hb; $f.lb = lb; $f.q = q; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
  64127. };
  64128. qpReader.prototype.readHexByte = function(v) { return this.$val.readHexByte(v); };
  64129. isQPDiscardWhitespace = function(r) {
  64130. var $ptr, _ref, r;
  64131. _ref = r;
  64132. if (_ref === 10 || _ref === 13 || _ref === 32 || _ref === 9) {
  64133. return true;
  64134. }
  64135. return false;
  64136. };
  64137. qpReader.ptr.prototype.Read = function(p) {
  64138. var $ptr, _r, _r$1, _r$2, _r$3, _r$4, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tuple, _tuple$1, b, err, hasCR, hasLF, n, p, q, rightStripped, wholeLine, x, $s, $r;
  64139. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tmp$6 = $f._tmp$6; _tmp$7 = $f._tmp$7; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; b = $f.b; err = $f.err; hasCR = $f.hasCR; hasLF = $f.hasLF; n = $f.n; p = $f.p; q = $f.q; rightStripped = $f.rightStripped; wholeLine = $f.wholeLine; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  64140. n = 0;
  64141. err = $ifaceNil;
  64142. q = this;
  64143. /* while (true) { */ case 1:
  64144. /* if (!(p.$length > 0)) { break; } */ if(!(p.$length > 0)) { $s = 2; continue; }
  64145. /* */ if (q.line.$length === 0) { $s = 3; continue; }
  64146. /* */ $s = 4; continue;
  64147. /* if (q.line.$length === 0) { */ case 3:
  64148. if (!($interfaceIsEqual(q.rerr, $ifaceNil))) {
  64149. _tmp = n; _tmp$1 = q.rerr; n = _tmp; err = _tmp$1;
  64150. return [n, err];
  64151. }
  64152. _r = q.br.ReadSlice(10); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  64153. _tuple = _r; q.line = _tuple[0]; q.rerr = _tuple[1];
  64154. hasLF = bytes.HasSuffix(q.line, lf);
  64155. hasCR = bytes.HasSuffix(q.line, crlf);
  64156. wholeLine = q.line;
  64157. _r$1 = bytes.TrimRightFunc(wholeLine, isQPDiscardWhitespace); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  64158. q.line = _r$1;
  64159. /* */ if (bytes.HasSuffix(q.line, softSuffix)) { $s = 7; continue; }
  64160. /* */ if (hasLF) { $s = 8; continue; }
  64161. /* */ $s = 9; continue;
  64162. /* if (bytes.HasSuffix(q.line, softSuffix)) { */ case 7:
  64163. rightStripped = $subslice(wholeLine, q.line.$length);
  64164. q.line = $subslice(q.line, 0, (q.line.$length - 1 >> 0));
  64165. /* */ if (!bytes.HasPrefix(rightStripped, lf) && !bytes.HasPrefix(rightStripped, crlf)) { $s = 10; continue; }
  64166. /* */ $s = 11; continue;
  64167. /* if (!bytes.HasPrefix(rightStripped, lf) && !bytes.HasPrefix(rightStripped, crlf)) { */ case 10:
  64168. _r$2 = fmt.Errorf("multipart: invalid bytes after =: %q", new sliceType$4([rightStripped])); /* */ $s = 12; case 12: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  64169. q.rerr = _r$2;
  64170. /* } */ case 11:
  64171. $s = 9; continue;
  64172. /* } else if (hasLF) { */ case 8:
  64173. if (hasCR) {
  64174. q.line = $append(q.line, 13, 10);
  64175. } else {
  64176. q.line = $append(q.line, 10);
  64177. }
  64178. /* } */ case 9:
  64179. /* continue; */ $s = 1; continue;
  64180. /* } */ case 4:
  64181. b = (x = q.line, (0 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 0]));
  64182. /* */ if (b === 61) { $s = 13; continue; }
  64183. /* */ if ((b === 9) || (b === 13) || (b === 10)) { $s = 14; continue; }
  64184. /* */ if (b < 32 || b > 126) { $s = 15; continue; }
  64185. /* */ $s = 16; continue;
  64186. /* switch (0) { default: if (b === 61) { */ case 13:
  64187. _r$3 = q.readHexByte($subslice(q.line, 1)); /* */ $s = 17; case 17: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  64188. _tuple$1 = _r$3; b = _tuple$1[0]; err = _tuple$1[1];
  64189. if (!($interfaceIsEqual(err, $ifaceNil))) {
  64190. _tmp$2 = n; _tmp$3 = err; n = _tmp$2; err = _tmp$3;
  64191. return [n, err];
  64192. }
  64193. q.line = $subslice(q.line, 2);
  64194. $s = 16; continue;
  64195. /* } else if ((b === 9) || (b === 13) || (b === 10)) { */ case 14:
  64196. /* break; */ $s = 16; continue;
  64197. $s = 16; continue;
  64198. /* } else if (b < 32 || b > 126) { */ case 15:
  64199. _r$4 = fmt.Errorf("multipart: invalid unescaped byte 0x%02x in quoted-printable body", new sliceType$4([new $Uint8(b)])); /* */ $s = 18; case 18: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
  64200. _tmp$4 = n; _tmp$5 = _r$4; n = _tmp$4; err = _tmp$5;
  64201. return [n, err];
  64202. /* } } */ case 16:
  64203. (0 >= p.$length ? $throwRuntimeError("index out of range") : p.$array[p.$offset + 0] = b);
  64204. p = $subslice(p, 1);
  64205. q.line = $subslice(q.line, 1);
  64206. n = n + (1) >> 0;
  64207. /* } */ $s = 1; continue; case 2:
  64208. _tmp$6 = n; _tmp$7 = $ifaceNil; n = _tmp$6; err = _tmp$7;
  64209. return [n, err];
  64210. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: qpReader.ptr.prototype.Read }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tmp$6 = _tmp$6; $f._tmp$7 = _tmp$7; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.b = b; $f.err = err; $f.hasCR = hasCR; $f.hasLF = hasLF; $f.n = n; $f.p = p; $f.q = q; $f.rightStripped = rightStripped; $f.wholeLine = wholeLine; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
  64211. };
  64212. qpReader.prototype.Read = function(p) { return this.$val.Read(p); };
  64213. ptrType.methods = [{prop: "RemoveAll", name: "RemoveAll", pkg: "", typ: $funcType([], [$error], false)}];
  64214. ptrType$1.methods = [{prop: "Open", name: "Open", pkg: "", typ: $funcType([], [File, $error], false)}];
  64215. sectionReadCloser.methods = [{prop: "Close", name: "Close", pkg: "", typ: $funcType([], [$error], false)}];
  64216. ptrType$3.methods = [{prop: "FormName", name: "FormName", pkg: "", typ: $funcType([], [$String], false)}, {prop: "FileName", name: "FileName", pkg: "", typ: $funcType([], [$String], false)}, {prop: "parseContentDisposition", name: "parseContentDisposition", pkg: "mime/multipart", typ: $funcType([], [], false)}, {prop: "populateHeaders", name: "populateHeaders", pkg: "mime/multipart", typ: $funcType([], [$error], false)}, {prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType], [$Int, $error], false)}, {prop: "Close", name: "Close", pkg: "", typ: $funcType([], [$error], false)}];
  64217. partReader.methods = [{prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType], [$Int, $error], false)}];
  64218. ptrType$5.methods = [{prop: "ReadForm", name: "ReadForm", pkg: "", typ: $funcType([$Int64], [ptrType, $error], false)}, {prop: "NextPart", name: "NextPart", pkg: "", typ: $funcType([], [ptrType$3, $error], false)}, {prop: "isFinalBoundary", name: "isFinalBoundary", pkg: "mime/multipart", typ: $funcType([sliceType], [$Bool], false)}, {prop: "isBoundaryDelimiterLine", name: "isBoundaryDelimiterLine", pkg: "mime/multipart", typ: $funcType([sliceType], [$Bool], false)}, {prop: "peekBufferIsEmptyPart", name: "peekBufferIsEmptyPart", pkg: "mime/multipart", typ: $funcType([sliceType], [$Bool], false)}];
  64219. ptrType$9.methods = [{prop: "readHexByte", name: "readHexByte", pkg: "mime/multipart", typ: $funcType([sliceType], [$Uint8, $error], false)}, {prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType], [$Int, $error], false)}];
  64220. Form.init([{prop: "Value", name: "Value", pkg: "", typ: mapType, tag: ""}, {prop: "File", name: "File", pkg: "", typ: mapType$1, tag: ""}]);
  64221. FileHeader.init([{prop: "Filename", name: "Filename", pkg: "", typ: $String, tag: ""}, {prop: "Header", name: "Header", pkg: "", typ: textproto.MIMEHeader, tag: ""}, {prop: "content", name: "content", pkg: "mime/multipart", typ: sliceType, tag: ""}, {prop: "tmpfile", name: "tmpfile", pkg: "mime/multipart", typ: $String, tag: ""}]);
  64222. File.init([{prop: "Close", name: "Close", pkg: "", typ: $funcType([], [$error], false)}, {prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType], [$Int, $error], false)}, {prop: "ReadAt", name: "ReadAt", pkg: "", typ: $funcType([sliceType, $Int64], [$Int, $error], false)}, {prop: "Seek", name: "Seek", pkg: "", typ: $funcType([$Int64, $Int], [$Int64, $error], false)}]);
  64223. sectionReadCloser.init([{prop: "SectionReader", name: "", pkg: "", typ: ptrType$8, tag: ""}]);
  64224. Part.init([{prop: "Header", name: "Header", pkg: "", typ: textproto.MIMEHeader, tag: ""}, {prop: "buffer", name: "buffer", pkg: "mime/multipart", typ: ptrType$4, tag: ""}, {prop: "mr", name: "mr", pkg: "mime/multipart", typ: ptrType$5, tag: ""}, {prop: "bytesRead", name: "bytesRead", pkg: "mime/multipart", typ: $Int, tag: ""}, {prop: "disposition", name: "disposition", pkg: "mime/multipart", typ: $String, tag: ""}, {prop: "dispositionParams", name: "dispositionParams", pkg: "mime/multipart", typ: mapType$2, tag: ""}, {prop: "r", name: "r", pkg: "mime/multipart", typ: io.Reader, tag: ""}]);
  64225. partReader.init([{prop: "p", name: "p", pkg: "mime/multipart", typ: ptrType$3, tag: ""}]);
  64226. Reader.init([{prop: "bufReader", name: "bufReader", pkg: "mime/multipart", typ: ptrType$2, tag: ""}, {prop: "currentPart", name: "currentPart", pkg: "mime/multipart", typ: ptrType$3, tag: ""}, {prop: "partsRead", name: "partsRead", pkg: "mime/multipart", typ: $Int, tag: ""}, {prop: "nl", name: "nl", pkg: "mime/multipart", typ: sliceType, tag: ""}, {prop: "nlDashBoundary", name: "nlDashBoundary", pkg: "mime/multipart", typ: sliceType, tag: ""}, {prop: "dashBoundaryDash", name: "dashBoundaryDash", pkg: "mime/multipart", typ: sliceType, tag: ""}, {prop: "dashBoundary", name: "dashBoundary", pkg: "mime/multipart", typ: sliceType, tag: ""}]);
  64227. qpReader.init([{prop: "br", name: "br", pkg: "mime/multipart", typ: ptrType$2, tag: ""}, {prop: "rerr", name: "rerr", pkg: "mime/multipart", typ: $error, tag: ""}, {prop: "line", name: "line", pkg: "mime/multipart", typ: sliceType, tag: ""}]);
  64228. $init = function() {
  64229. $pkg.$init = function() {};
  64230. /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  64231. $r = bufio.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  64232. $r = bytes.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  64233. $r = rand.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  64234. $r = errors.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  64235. $r = fmt.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  64236. $r = io.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  64237. $r = ioutil.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  64238. $r = mime.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  64239. $r = textproto.$init(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  64240. $r = os.$init(); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  64241. $r = strings.$init(); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  64242. emptyParams = new $Map();
  64243. crlf = new sliceType($stringToBytes("\r\n"));
  64244. lf = new sliceType($stringToBytes("\n"));
  64245. softSuffix = new sliceType($stringToBytes("="));
  64246. quoteEscaper = strings.NewReplacer(new sliceType$1(["\\", "\\\\", "\"", "\\\""]));
  64247. /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
  64248. };
  64249. $pkg.$init = $init;
  64250. return $pkg;
  64251. })();
  64252. $packages["net/http/internal"] = (function() {
  64253. var $pkg = {}, $init, bufio, bytes, errors, fmt, io, chunkedReader, chunkedWriter, ptrType, arrayType, sliceType, sliceType$1, ptrType$1, ptrType$2, NewChunkedReader, readLine, trimTrailingWhitespace, isASCIISpace, NewChunkedWriter, parseHexUint;
  64254. bufio = $packages["bufio"];
  64255. bytes = $packages["bytes"];
  64256. errors = $packages["errors"];
  64257. fmt = $packages["fmt"];
  64258. io = $packages["io"];
  64259. chunkedReader = $pkg.chunkedReader = $newType(0, $kindStruct, "internal.chunkedReader", "chunkedReader", "net/http/internal", function(r_, n_, err_, buf_) {
  64260. this.$val = this;
  64261. if (arguments.length === 0) {
  64262. this.r = ptrType.nil;
  64263. this.n = new $Uint64(0, 0);
  64264. this.err = $ifaceNil;
  64265. this.buf = arrayType.zero();
  64266. return;
  64267. }
  64268. this.r = r_;
  64269. this.n = n_;
  64270. this.err = err_;
  64271. this.buf = buf_;
  64272. });
  64273. chunkedWriter = $pkg.chunkedWriter = $newType(0, $kindStruct, "internal.chunkedWriter", "chunkedWriter", "net/http/internal", function(Wire_) {
  64274. this.$val = this;
  64275. if (arguments.length === 0) {
  64276. this.Wire = $ifaceNil;
  64277. return;
  64278. }
  64279. this.Wire = Wire_;
  64280. });
  64281. ptrType = $ptrType(bufio.Reader);
  64282. arrayType = $arrayType($Uint8, 2);
  64283. sliceType = $sliceType($Uint8);
  64284. sliceType$1 = $sliceType($emptyInterface);
  64285. ptrType$1 = $ptrType(chunkedReader);
  64286. ptrType$2 = $ptrType(chunkedWriter);
  64287. NewChunkedReader = function(r) {
  64288. var $ptr, _tuple, br, ok, r;
  64289. _tuple = $assertType(r, ptrType, true); br = _tuple[0]; ok = _tuple[1];
  64290. if (!ok) {
  64291. br = bufio.NewReader(r);
  64292. }
  64293. return new chunkedReader.ptr(br, new $Uint64(0, 0), $ifaceNil, arrayType.zero());
  64294. };
  64295. $pkg.NewChunkedReader = NewChunkedReader;
  64296. chunkedReader.ptr.prototype.beginChunk = function() {
  64297. var $ptr, _r, _tuple, _tuple$1, cr, line, x, $s, $r;
  64298. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; cr = $f.cr; line = $f.line; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  64299. cr = this;
  64300. line = sliceType.nil;
  64301. _r = readLine(cr.r); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  64302. _tuple = _r; line = _tuple[0]; cr.err = _tuple[1];
  64303. if (!($interfaceIsEqual(cr.err, $ifaceNil))) {
  64304. return;
  64305. }
  64306. _tuple$1 = parseHexUint(line); cr.n = _tuple$1[0]; cr.err = _tuple$1[1];
  64307. if (!($interfaceIsEqual(cr.err, $ifaceNil))) {
  64308. return;
  64309. }
  64310. if ((x = cr.n, (x.$high === 0 && x.$low === 0))) {
  64311. cr.err = io.EOF;
  64312. }
  64313. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: chunkedReader.ptr.prototype.beginChunk }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.cr = cr; $f.line = line; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
  64314. };
  64315. chunkedReader.prototype.beginChunk = function() { return this.$val.beginChunk(); };
  64316. chunkedReader.ptr.prototype.chunkHeaderAvailable = function() {
  64317. var $ptr, _r, _tuple, cr, n, peek, $s, $r;
  64318. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tuple = $f._tuple; cr = $f.cr; n = $f.n; peek = $f.peek; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  64319. cr = this;
  64320. n = cr.r.Buffered();
  64321. /* */ if (n > 0) { $s = 1; continue; }
  64322. /* */ $s = 2; continue;
  64323. /* if (n > 0) { */ case 1:
  64324. _r = cr.r.Peek(n); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  64325. _tuple = _r; peek = _tuple[0];
  64326. return bytes.IndexByte(peek, 10) >= 0;
  64327. /* } */ case 2:
  64328. return false;
  64329. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: chunkedReader.ptr.prototype.chunkHeaderAvailable }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple = _tuple; $f.cr = cr; $f.n = n; $f.peek = peek; $f.$s = $s; $f.$r = $r; return $f;
  64330. };
  64331. chunkedReader.prototype.chunkHeaderAvailable = function() { return this.$val.chunkHeaderAvailable(); };
  64332. chunkedReader.ptr.prototype.Read = function(b) {
  64333. var $ptr, _r, _r$1, _r$2, _tmp, _tmp$1, _tuple, _tuple$1, _v, b, cr, err, n, n0, rbuf, x, x$1, x$2, x$3, x$4, x$5, $s, $r;
  64334. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _v = $f._v; b = $f.b; cr = $f.cr; err = $f.err; n = $f.n; n0 = $f.n0; rbuf = $f.rbuf; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; x$3 = $f.x$3; x$4 = $f.x$4; x$5 = $f.x$5; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  64335. n = 0;
  64336. err = $ifaceNil;
  64337. cr = this;
  64338. /* while (true) { */ case 1:
  64339. /* if (!($interfaceIsEqual(cr.err, $ifaceNil))) { break; } */ if(!($interfaceIsEqual(cr.err, $ifaceNil))) { $s = 2; continue; }
  64340. /* */ if ((x = cr.n, (x.$high === 0 && x.$low === 0))) { $s = 3; continue; }
  64341. /* */ $s = 4; continue;
  64342. /* if ((x = cr.n, (x.$high === 0 && x.$low === 0))) { */ case 3:
  64343. if (!(n > 0)) { _v = false; $s = 7; continue s; }
  64344. _r = cr.chunkHeaderAvailable(); /* */ $s = 8; case 8: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  64345. _v = !_r; case 7:
  64346. /* */ if (_v) { $s = 5; continue; }
  64347. /* */ $s = 6; continue;
  64348. /* if (_v) { */ case 5:
  64349. /* break; */ $s = 2; continue;
  64350. /* } */ case 6:
  64351. $r = cr.beginChunk(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  64352. /* continue; */ $s = 1; continue;
  64353. /* } */ case 4:
  64354. if (b.$length === 0) {
  64355. /* break; */ $s = 2; continue;
  64356. }
  64357. rbuf = b;
  64358. if ((x$1 = new $Uint64(0, rbuf.$length), x$2 = cr.n, (x$1.$high > x$2.$high || (x$1.$high === x$2.$high && x$1.$low > x$2.$low)))) {
  64359. rbuf = $subslice(rbuf, 0, $flatten64(cr.n));
  64360. }
  64361. n0 = 0;
  64362. _r$1 = cr.r.Read(rbuf); /* */ $s = 10; case 10: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  64363. _tuple = _r$1; n0 = _tuple[0]; cr.err = _tuple[1];
  64364. n = n + (n0) >> 0;
  64365. b = $subslice(b, n0);
  64366. cr.n = (x$3 = cr.n, x$4 = new $Uint64(0, n0), new $Uint64(x$3.$high - x$4.$high, x$3.$low - x$4.$low));
  64367. /* */ if ((x$5 = cr.n, (x$5.$high === 0 && x$5.$low === 0)) && $interfaceIsEqual(cr.err, $ifaceNil)) { $s = 11; continue; }
  64368. /* */ $s = 12; continue;
  64369. /* if ((x$5 = cr.n, (x$5.$high === 0 && x$5.$low === 0)) && $interfaceIsEqual(cr.err, $ifaceNil)) { */ case 11:
  64370. _r$2 = io.ReadFull(cr.r, $subslice(new sliceType(cr.buf), 0, 2)); /* */ $s = 13; case 13: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  64371. _tuple$1 = _r$2; cr.err = _tuple$1[1];
  64372. /* */ if ($interfaceIsEqual(cr.err, $ifaceNil)) { $s = 14; continue; }
  64373. /* */ $s = 15; continue;
  64374. /* if ($interfaceIsEqual(cr.err, $ifaceNil)) { */ case 14:
  64375. if (!((cr.buf[0] === 13)) || !((cr.buf[1] === 10))) {
  64376. cr.err = errors.New("malformed chunked encoding");
  64377. }
  64378. /* } */ case 15:
  64379. /* } */ case 12:
  64380. /* } */ $s = 1; continue; case 2:
  64381. _tmp = n; _tmp$1 = cr.err; n = _tmp; err = _tmp$1;
  64382. return [n, err];
  64383. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: chunkedReader.ptr.prototype.Read }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._v = _v; $f.b = b; $f.cr = cr; $f.err = err; $f.n = n; $f.n0 = n0; $f.rbuf = rbuf; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.x$3 = x$3; $f.x$4 = x$4; $f.x$5 = x$5; $f.$s = $s; $f.$r = $r; return $f;
  64384. };
  64385. chunkedReader.prototype.Read = function(b) { return this.$val.Read(b); };
  64386. readLine = function(b) {
  64387. var $ptr, _r, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tuple, b, err, p, $s, $r;
  64388. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tuple = $f._tuple; b = $f.b; err = $f.err; p = $f.p; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  64389. p = sliceType.nil;
  64390. err = $ifaceNil;
  64391. _r = b.ReadSlice(10); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  64392. _tuple = _r; p = _tuple[0]; err = _tuple[1];
  64393. /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 2; continue; }
  64394. /* */ $s = 3; continue;
  64395. /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 2:
  64396. if ($interfaceIsEqual(err, io.EOF)) {
  64397. err = io.ErrUnexpectedEOF;
  64398. } else if ($interfaceIsEqual(err, bufio.ErrBufferFull)) {
  64399. err = $pkg.ErrLineTooLong;
  64400. }
  64401. _tmp = sliceType.nil; _tmp$1 = err; p = _tmp; err = _tmp$1;
  64402. return [p, err];
  64403. /* } */ case 3:
  64404. if (p.$length >= 4096) {
  64405. _tmp$2 = sliceType.nil; _tmp$3 = $pkg.ErrLineTooLong; p = _tmp$2; err = _tmp$3;
  64406. return [p, err];
  64407. }
  64408. _tmp$4 = trimTrailingWhitespace(p); _tmp$5 = $ifaceNil; p = _tmp$4; err = _tmp$5;
  64409. return [p, err];
  64410. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: readLine }; } $f.$ptr = $ptr; $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tuple = _tuple; $f.b = b; $f.err = err; $f.p = p; $f.$s = $s; $f.$r = $r; return $f;
  64411. };
  64412. trimTrailingWhitespace = function(b) {
  64413. var $ptr, b, x;
  64414. while (true) {
  64415. if (!(b.$length > 0 && isASCIISpace((x = b.$length - 1 >> 0, ((x < 0 || x >= b.$length) ? $throwRuntimeError("index out of range") : b.$array[b.$offset + x]))))) { break; }
  64416. b = $subslice(b, 0, (b.$length - 1 >> 0));
  64417. }
  64418. return b;
  64419. };
  64420. isASCIISpace = function(b) {
  64421. var $ptr, b;
  64422. return (b === 32) || (b === 9) || (b === 10) || (b === 13);
  64423. };
  64424. NewChunkedWriter = function(w) {
  64425. var $ptr, w;
  64426. return new chunkedWriter.ptr(w);
  64427. };
  64428. $pkg.NewChunkedWriter = NewChunkedWriter;
  64429. chunkedWriter.ptr.prototype.Write = function(data) {
  64430. var $ptr, _r, _r$1, _r$2, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, _tuple$1, _tuple$2, cw, data, err, n, $s, $r;
  64431. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; cw = $f.cw; data = $f.data; err = $f.err; n = $f.n; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  64432. n = 0;
  64433. err = $ifaceNil;
  64434. cw = this;
  64435. if (data.$length === 0) {
  64436. _tmp = 0; _tmp$1 = $ifaceNil; n = _tmp; err = _tmp$1;
  64437. return [n, err];
  64438. }
  64439. _r = fmt.Fprintf(cw.Wire, "%x\r\n", new sliceType$1([new $Int(data.$length)])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  64440. _tuple = _r; err = _tuple[1];
  64441. /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 2; continue; }
  64442. /* */ $s = 3; continue;
  64443. /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 2:
  64444. _tmp$2 = 0; _tmp$3 = err; n = _tmp$2; err = _tmp$3;
  64445. return [n, err];
  64446. /* } */ case 3:
  64447. _r$1 = cw.Wire.Write(data); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  64448. _tuple$1 = _r$1; n = _tuple$1[0]; err = _tuple$1[1];
  64449. /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 5; continue; }
  64450. /* */ $s = 6; continue;
  64451. /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 5:
  64452. return [n, err];
  64453. /* } */ case 6:
  64454. if (!((n === data.$length))) {
  64455. err = io.ErrShortWrite;
  64456. return [n, err];
  64457. }
  64458. _r$2 = io.WriteString(cw.Wire, "\r\n"); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  64459. _tuple$2 = _r$2; err = _tuple$2[1];
  64460. return [n, err];
  64461. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: chunkedWriter.ptr.prototype.Write }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f.cw = cw; $f.data = data; $f.err = err; $f.n = n; $f.$s = $s; $f.$r = $r; return $f;
  64462. };
  64463. chunkedWriter.prototype.Write = function(data) { return this.$val.Write(data); };
  64464. chunkedWriter.ptr.prototype.Close = function() {
  64465. var $ptr, _r, _tuple, cw, err, $s, $r;
  64466. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tuple = $f._tuple; cw = $f.cw; err = $f.err; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  64467. cw = this;
  64468. _r = io.WriteString(cw.Wire, "0\r\n"); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  64469. _tuple = _r; err = _tuple[1];
  64470. return err;
  64471. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: chunkedWriter.ptr.prototype.Close }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple = _tuple; $f.cw = cw; $f.err = err; $f.$s = $s; $f.$r = $r; return $f;
  64472. };
  64473. chunkedWriter.prototype.Close = function() { return this.$val.Close(); };
  64474. parseHexUint = function(v) {
  64475. var $ptr, _i, _ref, _tmp, _tmp$1, b, err, n, v, x;
  64476. n = new $Uint64(0, 0);
  64477. err = $ifaceNil;
  64478. _ref = v;
  64479. _i = 0;
  64480. while (true) {
  64481. if (!(_i < _ref.$length)) { break; }
  64482. b = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]);
  64483. n = $shiftLeft64(n, (4));
  64484. if (48 <= b && b <= 57) {
  64485. b = b - 48 << 24 >>> 24;
  64486. } else if (97 <= b && b <= 102) {
  64487. b = (b - 97 << 24 >>> 24) + 10 << 24 >>> 24;
  64488. } else if (65 <= b && b <= 70) {
  64489. b = (b - 65 << 24 >>> 24) + 10 << 24 >>> 24;
  64490. } else {
  64491. _tmp = new $Uint64(0, 0); _tmp$1 = errors.New("invalid byte in chunk length"); n = _tmp; err = _tmp$1;
  64492. return [n, err];
  64493. }
  64494. n = (x = new $Uint64(0, b), new $Uint64(n.$high | x.$high, (n.$low | x.$low) >>> 0));
  64495. _i++;
  64496. }
  64497. return [n, err];
  64498. };
  64499. ptrType$1.methods = [{prop: "beginChunk", name: "beginChunk", pkg: "net/http/internal", typ: $funcType([], [], false)}, {prop: "chunkHeaderAvailable", name: "chunkHeaderAvailable", pkg: "net/http/internal", typ: $funcType([], [$Bool], false)}, {prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType], [$Int, $error], false)}];
  64500. ptrType$2.methods = [{prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType], [$Int, $error], false)}, {prop: "Close", name: "Close", pkg: "", typ: $funcType([], [$error], false)}];
  64501. chunkedReader.init([{prop: "r", name: "r", pkg: "net/http/internal", typ: ptrType, tag: ""}, {prop: "n", name: "n", pkg: "net/http/internal", typ: $Uint64, tag: ""}, {prop: "err", name: "err", pkg: "net/http/internal", typ: $error, tag: ""}, {prop: "buf", name: "buf", pkg: "net/http/internal", typ: arrayType, tag: ""}]);
  64502. chunkedWriter.init([{prop: "Wire", name: "Wire", pkg: "", typ: io.Writer, tag: ""}]);
  64503. $init = function() {
  64504. $pkg.$init = function() {};
  64505. /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  64506. $r = bufio.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  64507. $r = bytes.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  64508. $r = errors.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  64509. $r = fmt.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  64510. $r = io.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  64511. $pkg.ErrLineTooLong = errors.New("header line too long");
  64512. /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
  64513. };
  64514. $pkg.$init = $init;
  64515. return $pkg;
  64516. })();
  64517. $packages["net/url"] = (function() {
  64518. var $pkg = {}, $init, bytes, errors, sort, strconv, strings, Error, EscapeError, URL, Userinfo, Values, sliceType, ptrType, ptrType$1, sliceType$1, ptrType$2, ishex, unhex, shouldEscape, QueryUnescape, unescape, QueryEscape, escape, User, UserPassword, getscheme, split, Parse, ParseRequestURI, parse, parseAuthority, ParseQuery, parseQuery, resolvePath;
  64519. bytes = $packages["bytes"];
  64520. errors = $packages["errors"];
  64521. sort = $packages["sort"];
  64522. strconv = $packages["strconv"];
  64523. strings = $packages["strings"];
  64524. Error = $pkg.Error = $newType(0, $kindStruct, "url.Error", "Error", "net/url", function(Op_, URL_, Err_) {
  64525. this.$val = this;
  64526. if (arguments.length === 0) {
  64527. this.Op = "";
  64528. this.URL = "";
  64529. this.Err = $ifaceNil;
  64530. return;
  64531. }
  64532. this.Op = Op_;
  64533. this.URL = URL_;
  64534. this.Err = Err_;
  64535. });
  64536. EscapeError = $pkg.EscapeError = $newType(8, $kindString, "url.EscapeError", "EscapeError", "net/url", null);
  64537. URL = $pkg.URL = $newType(0, $kindStruct, "url.URL", "URL", "net/url", function(Scheme_, Opaque_, User_, Host_, Path_, RawQuery_, Fragment_) {
  64538. this.$val = this;
  64539. if (arguments.length === 0) {
  64540. this.Scheme = "";
  64541. this.Opaque = "";
  64542. this.User = ptrType$1.nil;
  64543. this.Host = "";
  64544. this.Path = "";
  64545. this.RawQuery = "";
  64546. this.Fragment = "";
  64547. return;
  64548. }
  64549. this.Scheme = Scheme_;
  64550. this.Opaque = Opaque_;
  64551. this.User = User_;
  64552. this.Host = Host_;
  64553. this.Path = Path_;
  64554. this.RawQuery = RawQuery_;
  64555. this.Fragment = Fragment_;
  64556. });
  64557. Userinfo = $pkg.Userinfo = $newType(0, $kindStruct, "url.Userinfo", "Userinfo", "net/url", function(username_, password_, passwordSet_) {
  64558. this.$val = this;
  64559. if (arguments.length === 0) {
  64560. this.username = "";
  64561. this.password = "";
  64562. this.passwordSet = false;
  64563. return;
  64564. }
  64565. this.username = username_;
  64566. this.password = password_;
  64567. this.passwordSet = passwordSet_;
  64568. });
  64569. Values = $pkg.Values = $newType(4, $kindMap, "url.Values", "Values", "net/url", null);
  64570. sliceType = $sliceType($Uint8);
  64571. ptrType = $ptrType(URL);
  64572. ptrType$1 = $ptrType(Userinfo);
  64573. sliceType$1 = $sliceType($String);
  64574. ptrType$2 = $ptrType(Error);
  64575. Error.ptr.prototype.Error = function() {
  64576. var $ptr, _r, e, $s, $r;
  64577. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; e = $f.e; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  64578. e = this;
  64579. _r = e.Err.Error(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  64580. return e.Op + " " + e.URL + ": " + _r;
  64581. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Error.ptr.prototype.Error }; } $f.$ptr = $ptr; $f._r = _r; $f.e = e; $f.$s = $s; $f.$r = $r; return $f;
  64582. };
  64583. Error.prototype.Error = function() { return this.$val.Error(); };
  64584. ishex = function(c) {
  64585. var $ptr, c;
  64586. if (48 <= c && c <= 57) {
  64587. return true;
  64588. } else if (97 <= c && c <= 102) {
  64589. return true;
  64590. } else if (65 <= c && c <= 70) {
  64591. return true;
  64592. }
  64593. return false;
  64594. };
  64595. unhex = function(c) {
  64596. var $ptr, c;
  64597. if (48 <= c && c <= 57) {
  64598. return c - 48 << 24 >>> 24;
  64599. } else if (97 <= c && c <= 102) {
  64600. return (c - 97 << 24 >>> 24) + 10 << 24 >>> 24;
  64601. } else if (65 <= c && c <= 70) {
  64602. return (c - 65 << 24 >>> 24) + 10 << 24 >>> 24;
  64603. }
  64604. return 0;
  64605. };
  64606. EscapeError.prototype.Error = function() {
  64607. var $ptr, e;
  64608. e = this.$val;
  64609. return "invalid URL escape " + strconv.Quote(e);
  64610. };
  64611. $ptrType(EscapeError).prototype.Error = function() { return new EscapeError(this.$get()).Error(); };
  64612. shouldEscape = function(c, mode) {
  64613. var $ptr, _ref, _ref$1, c, mode;
  64614. if (65 <= c && c <= 90 || 97 <= c && c <= 122 || 48 <= c && c <= 57) {
  64615. return false;
  64616. }
  64617. _ref = c;
  64618. if (_ref === 45 || _ref === 95 || _ref === 46 || _ref === 126) {
  64619. return false;
  64620. } else if (_ref === 36 || _ref === 38 || _ref === 43 || _ref === 44 || _ref === 47 || _ref === 58 || _ref === 59 || _ref === 61 || _ref === 63 || _ref === 64) {
  64621. _ref$1 = mode;
  64622. if (_ref$1 === 1) {
  64623. return c === 63;
  64624. } else if (_ref$1 === 2) {
  64625. return (c === 64) || (c === 47) || (c === 63) || (c === 58);
  64626. } else if (_ref$1 === 3) {
  64627. return true;
  64628. } else if (_ref$1 === 4) {
  64629. return false;
  64630. }
  64631. }
  64632. return true;
  64633. };
  64634. QueryUnescape = function(s) {
  64635. var $ptr, s;
  64636. return unescape(s, 3);
  64637. };
  64638. $pkg.QueryUnescape = QueryUnescape;
  64639. unescape = function(s, mode) {
  64640. var $ptr, _ref, _ref$1, hasPlus, i, i$1, j, mode, n, s, t;
  64641. n = 0;
  64642. hasPlus = false;
  64643. i = 0;
  64644. while (true) {
  64645. if (!(i < s.length)) { break; }
  64646. _ref = s.charCodeAt(i);
  64647. if (_ref === 37) {
  64648. n = n + (1) >> 0;
  64649. if ((i + 2 >> 0) >= s.length || !ishex(s.charCodeAt((i + 1 >> 0))) || !ishex(s.charCodeAt((i + 2 >> 0)))) {
  64650. s = s.substring(i);
  64651. if (s.length > 3) {
  64652. s = s.substring(0, 3);
  64653. }
  64654. return ["", new EscapeError(s)];
  64655. }
  64656. i = i + (3) >> 0;
  64657. } else if (_ref === 43) {
  64658. hasPlus = mode === 3;
  64659. i = i + (1) >> 0;
  64660. } else {
  64661. i = i + (1) >> 0;
  64662. }
  64663. }
  64664. if ((n === 0) && !hasPlus) {
  64665. return [s, $ifaceNil];
  64666. }
  64667. t = $makeSlice(sliceType, (s.length - (2 * n >> 0) >> 0));
  64668. j = 0;
  64669. i$1 = 0;
  64670. while (true) {
  64671. if (!(i$1 < s.length)) { break; }
  64672. _ref$1 = s.charCodeAt(i$1);
  64673. if (_ref$1 === 37) {
  64674. ((j < 0 || j >= t.$length) ? $throwRuntimeError("index out of range") : t.$array[t.$offset + j] = ((unhex(s.charCodeAt((i$1 + 1 >> 0))) << 4 << 24 >>> 24) | unhex(s.charCodeAt((i$1 + 2 >> 0)))) >>> 0);
  64675. j = j + (1) >> 0;
  64676. i$1 = i$1 + (3) >> 0;
  64677. } else if (_ref$1 === 43) {
  64678. if (mode === 3) {
  64679. ((j < 0 || j >= t.$length) ? $throwRuntimeError("index out of range") : t.$array[t.$offset + j] = 32);
  64680. } else {
  64681. ((j < 0 || j >= t.$length) ? $throwRuntimeError("index out of range") : t.$array[t.$offset + j] = 43);
  64682. }
  64683. j = j + (1) >> 0;
  64684. i$1 = i$1 + (1) >> 0;
  64685. } else {
  64686. ((j < 0 || j >= t.$length) ? $throwRuntimeError("index out of range") : t.$array[t.$offset + j] = s.charCodeAt(i$1));
  64687. j = j + (1) >> 0;
  64688. i$1 = i$1 + (1) >> 0;
  64689. }
  64690. }
  64691. return [$bytesToString(t), $ifaceNil];
  64692. };
  64693. QueryEscape = function(s) {
  64694. var $ptr, s;
  64695. return escape(s, 3);
  64696. };
  64697. $pkg.QueryEscape = QueryEscape;
  64698. escape = function(s, mode) {
  64699. var $ptr, _tmp, _tmp$1, c, c$1, hexCount, i, i$1, j, mode, s, spaceCount, t, x, x$1;
  64700. _tmp = 0; _tmp$1 = 0; spaceCount = _tmp; hexCount = _tmp$1;
  64701. i = 0;
  64702. while (true) {
  64703. if (!(i < s.length)) { break; }
  64704. c = s.charCodeAt(i);
  64705. if (shouldEscape(c, mode)) {
  64706. if ((c === 32) && (mode === 3)) {
  64707. spaceCount = spaceCount + (1) >> 0;
  64708. } else {
  64709. hexCount = hexCount + (1) >> 0;
  64710. }
  64711. }
  64712. i = i + (1) >> 0;
  64713. }
  64714. if ((spaceCount === 0) && (hexCount === 0)) {
  64715. return s;
  64716. }
  64717. t = $makeSlice(sliceType, (s.length + (2 * hexCount >> 0) >> 0));
  64718. j = 0;
  64719. i$1 = 0;
  64720. while (true) {
  64721. if (!(i$1 < s.length)) { break; }
  64722. c$1 = s.charCodeAt(i$1);
  64723. if ((c$1 === 32) && (mode === 3)) {
  64724. ((j < 0 || j >= t.$length) ? $throwRuntimeError("index out of range") : t.$array[t.$offset + j] = 43);
  64725. j = j + (1) >> 0;
  64726. } else if (shouldEscape(c$1, mode)) {
  64727. ((j < 0 || j >= t.$length) ? $throwRuntimeError("index out of range") : t.$array[t.$offset + j] = 37);
  64728. (x = j + 1 >> 0, ((x < 0 || x >= t.$length) ? $throwRuntimeError("index out of range") : t.$array[t.$offset + x] = "0123456789ABCDEF".charCodeAt((c$1 >>> 4 << 24 >>> 24))));
  64729. (x$1 = j + 2 >> 0, ((x$1 < 0 || x$1 >= t.$length) ? $throwRuntimeError("index out of range") : t.$array[t.$offset + x$1] = "0123456789ABCDEF".charCodeAt(((c$1 & 15) >>> 0))));
  64730. j = j + (3) >> 0;
  64731. } else {
  64732. ((j < 0 || j >= t.$length) ? $throwRuntimeError("index out of range") : t.$array[t.$offset + j] = s.charCodeAt(i$1));
  64733. j = j + (1) >> 0;
  64734. }
  64735. i$1 = i$1 + (1) >> 0;
  64736. }
  64737. return $bytesToString(t);
  64738. };
  64739. User = function(username) {
  64740. var $ptr, username;
  64741. return new Userinfo.ptr(username, "", false);
  64742. };
  64743. $pkg.User = User;
  64744. UserPassword = function(username, password) {
  64745. var $ptr, password, username;
  64746. return new Userinfo.ptr(username, password, true);
  64747. };
  64748. $pkg.UserPassword = UserPassword;
  64749. Userinfo.ptr.prototype.Username = function() {
  64750. var $ptr, u;
  64751. u = this;
  64752. return u.username;
  64753. };
  64754. Userinfo.prototype.Username = function() { return this.$val.Username(); };
  64755. Userinfo.ptr.prototype.Password = function() {
  64756. var $ptr, u;
  64757. u = this;
  64758. if (u.passwordSet) {
  64759. return [u.password, true];
  64760. }
  64761. return ["", false];
  64762. };
  64763. Userinfo.prototype.Password = function() { return this.$val.Password(); };
  64764. Userinfo.ptr.prototype.String = function() {
  64765. var $ptr, s, u;
  64766. u = this;
  64767. s = escape(u.username, 2);
  64768. if (u.passwordSet) {
  64769. s = s + (":" + escape(u.password, 2));
  64770. }
  64771. return s;
  64772. };
  64773. Userinfo.prototype.String = function() { return this.$val.String(); };
  64774. getscheme = function(rawurl) {
  64775. var $ptr, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, c, err, i, path, rawurl, scheme;
  64776. scheme = "";
  64777. path = "";
  64778. err = $ifaceNil;
  64779. i = 0;
  64780. while (true) {
  64781. if (!(i < rawurl.length)) { break; }
  64782. c = rawurl.charCodeAt(i);
  64783. if (97 <= c && c <= 122 || 65 <= c && c <= 90) {
  64784. } else if (48 <= c && c <= 57 || (c === 43) || (c === 45) || (c === 46)) {
  64785. if (i === 0) {
  64786. _tmp = ""; _tmp$1 = rawurl; _tmp$2 = $ifaceNil; scheme = _tmp; path = _tmp$1; err = _tmp$2;
  64787. return [scheme, path, err];
  64788. }
  64789. } else if (c === 58) {
  64790. if (i === 0) {
  64791. _tmp$3 = ""; _tmp$4 = ""; _tmp$5 = errors.New("missing protocol scheme"); scheme = _tmp$3; path = _tmp$4; err = _tmp$5;
  64792. return [scheme, path, err];
  64793. }
  64794. _tmp$6 = rawurl.substring(0, i); _tmp$7 = rawurl.substring((i + 1 >> 0)); _tmp$8 = $ifaceNil; scheme = _tmp$6; path = _tmp$7; err = _tmp$8;
  64795. return [scheme, path, err];
  64796. } else {
  64797. _tmp$9 = ""; _tmp$10 = rawurl; _tmp$11 = $ifaceNil; scheme = _tmp$9; path = _tmp$10; err = _tmp$11;
  64798. return [scheme, path, err];
  64799. }
  64800. i = i + (1) >> 0;
  64801. }
  64802. _tmp$12 = ""; _tmp$13 = rawurl; _tmp$14 = $ifaceNil; scheme = _tmp$12; path = _tmp$13; err = _tmp$14;
  64803. return [scheme, path, err];
  64804. };
  64805. split = function(s, c, cutc) {
  64806. var $ptr, c, cutc, i, s;
  64807. i = strings.Index(s, c);
  64808. if (i < 0) {
  64809. return [s, ""];
  64810. }
  64811. if (cutc) {
  64812. return [s.substring(0, i), s.substring((i + c.length >> 0))];
  64813. }
  64814. return [s.substring(0, i), s.substring(i)];
  64815. };
  64816. Parse = function(rawurl) {
  64817. var $ptr, _r, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tuple, _tuple$1, _tuple$2, err, frag, rawurl, u, url, $s, $r;
  64818. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tmp$6 = $f._tmp$6; _tmp$7 = $f._tmp$7; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; err = $f.err; frag = $f.frag; rawurl = $f.rawurl; u = $f.u; url = $f.url; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  64819. url = ptrType.nil;
  64820. err = $ifaceNil;
  64821. _tuple = split(rawurl, "#", true); u = _tuple[0]; frag = _tuple[1];
  64822. _r = parse(u, false); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  64823. _tuple$1 = _r; url = _tuple$1[0]; err = _tuple$1[1];
  64824. /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 2; continue; }
  64825. /* */ $s = 3; continue;
  64826. /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 2:
  64827. _tmp = ptrType.nil; _tmp$1 = err; url = _tmp; err = _tmp$1;
  64828. return [url, err];
  64829. /* } */ case 3:
  64830. if (frag === "") {
  64831. _tmp$2 = url; _tmp$3 = $ifaceNil; url = _tmp$2; err = _tmp$3;
  64832. return [url, err];
  64833. }
  64834. _tuple$2 = unescape(frag, 4); url.Fragment = _tuple$2[0]; err = _tuple$2[1];
  64835. if (!($interfaceIsEqual(err, $ifaceNil))) {
  64836. _tmp$4 = ptrType.nil; _tmp$5 = new Error.ptr("parse", rawurl, err); url = _tmp$4; err = _tmp$5;
  64837. return [url, err];
  64838. }
  64839. _tmp$6 = url; _tmp$7 = $ifaceNil; url = _tmp$6; err = _tmp$7;
  64840. return [url, err];
  64841. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Parse }; } $f.$ptr = $ptr; $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tmp$6 = _tmp$6; $f._tmp$7 = _tmp$7; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f.err = err; $f.frag = frag; $f.rawurl = rawurl; $f.u = u; $f.url = url; $f.$s = $s; $f.$r = $r; return $f;
  64842. };
  64843. $pkg.Parse = Parse;
  64844. ParseRequestURI = function(rawurl) {
  64845. var $ptr, _r, _tuple, err, rawurl, url, $s, $r;
  64846. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tuple = $f._tuple; err = $f.err; rawurl = $f.rawurl; url = $f.url; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  64847. url = ptrType.nil;
  64848. err = $ifaceNil;
  64849. _r = parse(rawurl, true); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  64850. _tuple = _r; url = _tuple[0]; err = _tuple[1];
  64851. return [url, err];
  64852. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: ParseRequestURI }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple = _tuple; $f.err = err; $f.rawurl = rawurl; $f.url = url; $f.$s = $s; $f.$r = $r; return $f;
  64853. };
  64854. $pkg.ParseRequestURI = ParseRequestURI;
  64855. parse = function(rawurl, viaRequest) {
  64856. var $ptr, _r, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, authority, err, rawurl, rest, url, viaRequest, $s, $r;
  64857. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; _tuple$4 = $f._tuple$4; authority = $f.authority; err = $f.err; rawurl = $f.rawurl; rest = $f.rest; url = $f.url; viaRequest = $f.viaRequest; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  64858. url = ptrType.nil;
  64859. err = $ifaceNil;
  64860. rest = "";
  64861. /* */ if (rawurl === "" && viaRequest) { $s = 1; continue; }
  64862. /* */ $s = 2; continue;
  64863. /* if (rawurl === "" && viaRequest) { */ case 1:
  64864. err = errors.New("empty url");
  64865. /* goto Error */ $s = 3; continue;
  64866. /* } */ case 2:
  64867. url = new URL.ptr();
  64868. if (rawurl === "*") {
  64869. url.Path = "*";
  64870. return [url, err];
  64871. }
  64872. _tuple = getscheme(rawurl); url.Scheme = _tuple[0]; rest = _tuple[1]; err = _tuple[2];
  64873. /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 4; continue; }
  64874. /* */ $s = 5; continue;
  64875. /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 4:
  64876. /* goto Error */ $s = 3; continue;
  64877. /* } */ case 5:
  64878. _r = strings.ToLower(url.Scheme); /* */ $s = 6; case 6: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  64879. url.Scheme = _r;
  64880. _tuple$1 = split(rest, "?", true); rest = _tuple$1[0]; url.RawQuery = _tuple$1[1];
  64881. /* */ if (!strings.HasPrefix(rest, "/")) { $s = 7; continue; }
  64882. /* */ $s = 8; continue;
  64883. /* if (!strings.HasPrefix(rest, "/")) { */ case 7:
  64884. if (!(url.Scheme === "")) {
  64885. url.Opaque = rest;
  64886. _tmp = url; _tmp$1 = $ifaceNil; url = _tmp; err = _tmp$1;
  64887. return [url, err];
  64888. }
  64889. /* */ if (viaRequest) { $s = 9; continue; }
  64890. /* */ $s = 10; continue;
  64891. /* if (viaRequest) { */ case 9:
  64892. err = errors.New("invalid URI for request");
  64893. /* goto Error */ $s = 3; continue;
  64894. /* } */ case 10:
  64895. /* } */ case 8:
  64896. /* */ if ((!(url.Scheme === "") || !viaRequest && !strings.HasPrefix(rest, "///")) && strings.HasPrefix(rest, "//")) { $s = 11; continue; }
  64897. /* */ $s = 12; continue;
  64898. /* if ((!(url.Scheme === "") || !viaRequest && !strings.HasPrefix(rest, "///")) && strings.HasPrefix(rest, "//")) { */ case 11:
  64899. authority = "";
  64900. _tuple$2 = split(rest.substring(2), "/", false); authority = _tuple$2[0]; rest = _tuple$2[1];
  64901. _tuple$3 = parseAuthority(authority); url.User = _tuple$3[0]; url.Host = _tuple$3[1]; err = _tuple$3[2];
  64902. /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 13; continue; }
  64903. /* */ $s = 14; continue;
  64904. /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 13:
  64905. /* goto Error */ $s = 3; continue;
  64906. /* } */ case 14:
  64907. /* */ if (strings.Contains(url.Host, "%")) { $s = 15; continue; }
  64908. /* */ $s = 16; continue;
  64909. /* if (strings.Contains(url.Host, "%")) { */ case 15:
  64910. err = errors.New("hexadecimal escape in host");
  64911. /* goto Error */ $s = 3; continue;
  64912. /* } */ case 16:
  64913. /* } */ case 12:
  64914. _tuple$4 = unescape(rest, 1); url.Path = _tuple$4[0]; err = _tuple$4[1];
  64915. /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 17; continue; }
  64916. /* */ $s = 18; continue;
  64917. /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 17:
  64918. /* goto Error */ $s = 3; continue;
  64919. /* } */ case 18:
  64920. _tmp$2 = url; _tmp$3 = $ifaceNil; url = _tmp$2; err = _tmp$3;
  64921. return [url, err];
  64922. /* Error: */ case 3:
  64923. _tmp$4 = ptrType.nil; _tmp$5 = new Error.ptr("parse", rawurl, err); url = _tmp$4; err = _tmp$5;
  64924. return [url, err];
  64925. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: parse }; } $f.$ptr = $ptr; $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f._tuple$4 = _tuple$4; $f.authority = authority; $f.err = err; $f.rawurl = rawurl; $f.rest = rest; $f.url = url; $f.viaRequest = viaRequest; $f.$s = $s; $f.$r = $r; return $f;
  64926. };
  64927. parseAuthority = function(authority) {
  64928. var $ptr, _tmp, _tmp$1, _tuple, _tuple$1, _tuple$2, _tuple$3, authority, err, host, i, password, user, userinfo, username;
  64929. user = ptrType$1.nil;
  64930. host = "";
  64931. err = $ifaceNil;
  64932. i = strings.LastIndex(authority, "@");
  64933. if (i < 0) {
  64934. host = authority;
  64935. return [user, host, err];
  64936. }
  64937. _tmp = authority.substring(0, i); _tmp$1 = authority.substring((i + 1 >> 0)); userinfo = _tmp; host = _tmp$1;
  64938. if (strings.Index(userinfo, ":") < 0) {
  64939. _tuple = unescape(userinfo, 2); userinfo = _tuple[0]; err = _tuple[1];
  64940. if (!($interfaceIsEqual(err, $ifaceNil))) {
  64941. return [user, host, err];
  64942. }
  64943. user = User(userinfo);
  64944. } else {
  64945. _tuple$1 = split(userinfo, ":", true); username = _tuple$1[0]; password = _tuple$1[1];
  64946. _tuple$2 = unescape(username, 2); username = _tuple$2[0]; err = _tuple$2[1];
  64947. if (!($interfaceIsEqual(err, $ifaceNil))) {
  64948. return [user, host, err];
  64949. }
  64950. _tuple$3 = unescape(password, 2); password = _tuple$3[0]; err = _tuple$3[1];
  64951. if (!($interfaceIsEqual(err, $ifaceNil))) {
  64952. return [user, host, err];
  64953. }
  64954. user = UserPassword(username, password);
  64955. }
  64956. return [user, host, err];
  64957. };
  64958. URL.ptr.prototype.String = function() {
  64959. var $ptr, buf, h, u, ui;
  64960. u = this;
  64961. buf = $clone(new bytes.Buffer.ptr(), bytes.Buffer);
  64962. if (!(u.Scheme === "")) {
  64963. buf.WriteString(u.Scheme);
  64964. buf.WriteByte(58);
  64965. }
  64966. if (!(u.Opaque === "")) {
  64967. buf.WriteString(u.Opaque);
  64968. } else {
  64969. if (!(u.Scheme === "") || !(u.Host === "") || !(u.User === ptrType$1.nil)) {
  64970. buf.WriteString("//");
  64971. ui = u.User;
  64972. if (!(ui === ptrType$1.nil)) {
  64973. buf.WriteString(ui.String());
  64974. buf.WriteByte(64);
  64975. }
  64976. h = u.Host;
  64977. if (!(h === "")) {
  64978. buf.WriteString(h);
  64979. }
  64980. }
  64981. if (!(u.Path === "") && !((u.Path.charCodeAt(0) === 47)) && !(u.Host === "")) {
  64982. buf.WriteByte(47);
  64983. }
  64984. buf.WriteString(escape(u.Path, 1));
  64985. }
  64986. if (!(u.RawQuery === "")) {
  64987. buf.WriteByte(63);
  64988. buf.WriteString(u.RawQuery);
  64989. }
  64990. if (!(u.Fragment === "")) {
  64991. buf.WriteByte(35);
  64992. buf.WriteString(escape(u.Fragment, 4));
  64993. }
  64994. return buf.String();
  64995. };
  64996. URL.prototype.String = function() { return this.$val.String(); };
  64997. Values.prototype.Get = function(key) {
  64998. var $ptr, _entry, _tuple, key, ok, v, vs;
  64999. v = this.$val;
  65000. if (v === false) {
  65001. return "";
  65002. }
  65003. _tuple = (_entry = v[key], _entry !== undefined ? [_entry.v, true] : [sliceType$1.nil, false]); vs = _tuple[0]; ok = _tuple[1];
  65004. if (!ok || (vs.$length === 0)) {
  65005. return "";
  65006. }
  65007. return (0 >= vs.$length ? $throwRuntimeError("index out of range") : vs.$array[vs.$offset + 0]);
  65008. };
  65009. $ptrType(Values).prototype.Get = function(key) { return new Values(this.$get()).Get(key); };
  65010. Values.prototype.Set = function(key, value) {
  65011. var $ptr, _key, key, v, value;
  65012. v = this.$val;
  65013. _key = key; (v || $throwRuntimeError("assignment to entry in nil map"))[_key] = { k: _key, v: new sliceType$1([value]) };
  65014. };
  65015. $ptrType(Values).prototype.Set = function(key, value) { return new Values(this.$get()).Set(key, value); };
  65016. Values.prototype.Add = function(key, value) {
  65017. var $ptr, _entry, _key, key, v, value;
  65018. v = this.$val;
  65019. _key = key; (v || $throwRuntimeError("assignment to entry in nil map"))[_key] = { k: _key, v: $append((_entry = v[key], _entry !== undefined ? _entry.v : sliceType$1.nil), value) };
  65020. };
  65021. $ptrType(Values).prototype.Add = function(key, value) { return new Values(this.$get()).Add(key, value); };
  65022. Values.prototype.Del = function(key) {
  65023. var $ptr, key, v;
  65024. v = this.$val;
  65025. delete v[key];
  65026. };
  65027. $ptrType(Values).prototype.Del = function(key) { return new Values(this.$get()).Del(key); };
  65028. ParseQuery = function(query) {
  65029. var $ptr, err, m, query;
  65030. m = false;
  65031. err = $ifaceNil;
  65032. m = new $Map();
  65033. err = parseQuery(m, query);
  65034. return [m, err];
  65035. };
  65036. $pkg.ParseQuery = ParseQuery;
  65037. parseQuery = function(m, query) {
  65038. var $ptr, _entry, _key, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, _tuple$1, err, err1, i, i$1, key, m, query, value;
  65039. err = $ifaceNil;
  65040. while (true) {
  65041. if (!(!(query === ""))) { break; }
  65042. key = query;
  65043. i = strings.IndexAny(key, "&;");
  65044. if (i >= 0) {
  65045. _tmp = key.substring(0, i); _tmp$1 = key.substring((i + 1 >> 0)); key = _tmp; query = _tmp$1;
  65046. } else {
  65047. query = "";
  65048. }
  65049. if (key === "") {
  65050. continue;
  65051. }
  65052. value = "";
  65053. i$1 = strings.Index(key, "=");
  65054. if (i$1 >= 0) {
  65055. _tmp$2 = key.substring(0, i$1); _tmp$3 = key.substring((i$1 + 1 >> 0)); key = _tmp$2; value = _tmp$3;
  65056. }
  65057. _tuple = QueryUnescape(key); key = _tuple[0]; err1 = _tuple[1];
  65058. if (!($interfaceIsEqual(err1, $ifaceNil))) {
  65059. if ($interfaceIsEqual(err, $ifaceNil)) {
  65060. err = err1;
  65061. }
  65062. continue;
  65063. }
  65064. _tuple$1 = QueryUnescape(value); value = _tuple$1[0]; err1 = _tuple$1[1];
  65065. if (!($interfaceIsEqual(err1, $ifaceNil))) {
  65066. if ($interfaceIsEqual(err, $ifaceNil)) {
  65067. err = err1;
  65068. }
  65069. continue;
  65070. }
  65071. _key = key; (m || $throwRuntimeError("assignment to entry in nil map"))[_key] = { k: _key, v: $append((_entry = m[key], _entry !== undefined ? _entry.v : sliceType$1.nil), value) };
  65072. }
  65073. err = err;
  65074. return err;
  65075. };
  65076. Values.prototype.Encode = function() {
  65077. var $ptr, _entry, _entry$1, _i, _i$1, _i$2, _keys, _ref, _ref$1, _ref$2, buf, k, k$1, keys, prefix, v, v$1, vs, $s, $r;
  65078. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _entry = $f._entry; _entry$1 = $f._entry$1; _i = $f._i; _i$1 = $f._i$1; _i$2 = $f._i$2; _keys = $f._keys; _ref = $f._ref; _ref$1 = $f._ref$1; _ref$2 = $f._ref$2; buf = $f.buf; k = $f.k; k$1 = $f.k$1; keys = $f.keys; prefix = $f.prefix; v = $f.v; v$1 = $f.v$1; vs = $f.vs; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  65079. v = this.$val;
  65080. if (v === false) {
  65081. return "";
  65082. }
  65083. buf = $clone(new bytes.Buffer.ptr(), bytes.Buffer);
  65084. keys = $makeSlice(sliceType$1, 0, $keys(v).length);
  65085. _ref = v;
  65086. _i = 0;
  65087. _keys = $keys(_ref);
  65088. while (true) {
  65089. if (!(_i < _keys.length)) { break; }
  65090. _entry = _ref[_keys[_i]];
  65091. if (_entry === undefined) {
  65092. _i++;
  65093. continue;
  65094. }
  65095. k = _entry.k;
  65096. keys = $append(keys, k);
  65097. _i++;
  65098. }
  65099. $r = sort.Strings(keys); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  65100. _ref$1 = keys;
  65101. _i$1 = 0;
  65102. while (true) {
  65103. if (!(_i$1 < _ref$1.$length)) { break; }
  65104. k$1 = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? $throwRuntimeError("index out of range") : _ref$1.$array[_ref$1.$offset + _i$1]);
  65105. vs = (_entry$1 = v[k$1], _entry$1 !== undefined ? _entry$1.v : sliceType$1.nil);
  65106. prefix = QueryEscape(k$1) + "=";
  65107. _ref$2 = vs;
  65108. _i$2 = 0;
  65109. while (true) {
  65110. if (!(_i$2 < _ref$2.$length)) { break; }
  65111. v$1 = ((_i$2 < 0 || _i$2 >= _ref$2.$length) ? $throwRuntimeError("index out of range") : _ref$2.$array[_ref$2.$offset + _i$2]);
  65112. if (buf.Len() > 0) {
  65113. buf.WriteByte(38);
  65114. }
  65115. buf.WriteString(prefix);
  65116. buf.WriteString(QueryEscape(v$1));
  65117. _i$2++;
  65118. }
  65119. _i$1++;
  65120. }
  65121. return buf.String();
  65122. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Values.prototype.Encode }; } $f.$ptr = $ptr; $f._entry = _entry; $f._entry$1 = _entry$1; $f._i = _i; $f._i$1 = _i$1; $f._i$2 = _i$2; $f._keys = _keys; $f._ref = _ref; $f._ref$1 = _ref$1; $f._ref$2 = _ref$2; $f.buf = buf; $f.k = k; $f.k$1 = k$1; $f.keys = keys; $f.prefix = prefix; $f.v = v; $f.v$1 = v$1; $f.vs = vs; $f.$s = $s; $f.$r = $r; return $f;
  65123. };
  65124. $ptrType(Values).prototype.Encode = function() { return new Values(this.$get()).Encode(); };
  65125. resolvePath = function(base, ref) {
  65126. var $ptr, _i, _r, _ref, _ref$1, base, dst, elem, full, i, last, ref, src, x, $s, $r;
  65127. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _i = $f._i; _r = $f._r; _ref = $f._ref; _ref$1 = $f._ref$1; base = $f.base; dst = $f.dst; elem = $f.elem; full = $f.full; i = $f.i; last = $f.last; ref = $f.ref; src = $f.src; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  65128. full = "";
  65129. if (ref === "") {
  65130. full = base;
  65131. } else if (!((ref.charCodeAt(0) === 47))) {
  65132. i = strings.LastIndex(base, "/");
  65133. full = base.substring(0, (i + 1 >> 0)) + ref;
  65134. } else {
  65135. full = ref;
  65136. }
  65137. if (full === "") {
  65138. return "";
  65139. }
  65140. dst = sliceType$1.nil;
  65141. src = strings.Split(full, "/");
  65142. _ref = src;
  65143. _i = 0;
  65144. while (true) {
  65145. if (!(_i < _ref.$length)) { break; }
  65146. elem = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]);
  65147. _ref$1 = elem;
  65148. if (_ref$1 === ".") {
  65149. } else if (_ref$1 === "..") {
  65150. if (dst.$length > 0) {
  65151. dst = $subslice(dst, 0, (dst.$length - 1 >> 0));
  65152. }
  65153. } else {
  65154. dst = $append(dst, elem);
  65155. }
  65156. _i++;
  65157. }
  65158. last = (x = src.$length - 1 >> 0, ((x < 0 || x >= src.$length) ? $throwRuntimeError("index out of range") : src.$array[src.$offset + x]));
  65159. if (last === "." || last === "..") {
  65160. dst = $append(dst, "");
  65161. }
  65162. _r = strings.TrimLeft(strings.Join(dst, "/"), "/"); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  65163. return "/" + _r;
  65164. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: resolvePath }; } $f.$ptr = $ptr; $f._i = _i; $f._r = _r; $f._ref = _ref; $f._ref$1 = _ref$1; $f.base = base; $f.dst = dst; $f.elem = elem; $f.full = full; $f.i = i; $f.last = last; $f.ref = ref; $f.src = src; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
  65165. };
  65166. URL.ptr.prototype.IsAbs = function() {
  65167. var $ptr, u;
  65168. u = this;
  65169. return !(u.Scheme === "");
  65170. };
  65171. URL.prototype.IsAbs = function() { return this.$val.IsAbs(); };
  65172. URL.ptr.prototype.Parse = function(ref) {
  65173. var $ptr, _r, _r$1, _tuple, err, ref, refurl, u, $s, $r;
  65174. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _tuple = $f._tuple; err = $f.err; ref = $f.ref; refurl = $f.refurl; u = $f.u; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  65175. u = this;
  65176. _r = Parse(ref); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  65177. _tuple = _r; refurl = _tuple[0]; err = _tuple[1];
  65178. if (!($interfaceIsEqual(err, $ifaceNil))) {
  65179. return [ptrType.nil, err];
  65180. }
  65181. _r$1 = u.ResolveReference(refurl); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  65182. return [_r$1, $ifaceNil];
  65183. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: URL.ptr.prototype.Parse }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._tuple = _tuple; $f.err = err; $f.ref = ref; $f.refurl = refurl; $f.u = u; $f.$s = $s; $f.$r = $r; return $f;
  65184. };
  65185. URL.prototype.Parse = function(ref) { return this.$val.Parse(ref); };
  65186. URL.ptr.prototype.ResolveReference = function(ref) {
  65187. var $ptr, _r, _r$1, ref, u, url, $s, $r;
  65188. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; ref = $f.ref; u = $f.u; url = $f.url; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  65189. url = [url];
  65190. u = this;
  65191. url[0] = $clone(ref, URL);
  65192. if (ref.Scheme === "") {
  65193. url[0].Scheme = u.Scheme;
  65194. }
  65195. /* */ if (!(ref.Scheme === "") || !(ref.Host === "") || !(ref.User === ptrType$1.nil)) { $s = 1; continue; }
  65196. /* */ $s = 2; continue;
  65197. /* if (!(ref.Scheme === "") || !(ref.Host === "") || !(ref.User === ptrType$1.nil)) { */ case 1:
  65198. _r = resolvePath(ref.Path, ""); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  65199. url[0].Path = _r;
  65200. return url[0];
  65201. /* } */ case 2:
  65202. if (!(ref.Opaque === "")) {
  65203. url[0].User = ptrType$1.nil;
  65204. url[0].Host = "";
  65205. url[0].Path = "";
  65206. return url[0];
  65207. }
  65208. if (ref.Path === "") {
  65209. if (ref.RawQuery === "") {
  65210. url[0].RawQuery = u.RawQuery;
  65211. if (ref.Fragment === "") {
  65212. url[0].Fragment = u.Fragment;
  65213. }
  65214. }
  65215. }
  65216. url[0].Host = u.Host;
  65217. url[0].User = u.User;
  65218. _r$1 = resolvePath(u.Path, ref.Path); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  65219. url[0].Path = _r$1;
  65220. return url[0];
  65221. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: URL.ptr.prototype.ResolveReference }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f.ref = ref; $f.u = u; $f.url = url; $f.$s = $s; $f.$r = $r; return $f;
  65222. };
  65223. URL.prototype.ResolveReference = function(ref) { return this.$val.ResolveReference(ref); };
  65224. URL.ptr.prototype.Query = function() {
  65225. var $ptr, _tuple, u, v;
  65226. u = this;
  65227. _tuple = ParseQuery(u.RawQuery); v = _tuple[0];
  65228. return v;
  65229. };
  65230. URL.prototype.Query = function() { return this.$val.Query(); };
  65231. URL.ptr.prototype.RequestURI = function() {
  65232. var $ptr, result, u;
  65233. u = this;
  65234. result = u.Opaque;
  65235. if (result === "") {
  65236. result = escape(u.Path, 1);
  65237. if (result === "") {
  65238. result = "/";
  65239. }
  65240. } else {
  65241. if (strings.HasPrefix(result, "//")) {
  65242. result = u.Scheme + ":" + result;
  65243. }
  65244. }
  65245. if (!(u.RawQuery === "")) {
  65246. result = result + ("?" + u.RawQuery);
  65247. }
  65248. return result;
  65249. };
  65250. URL.prototype.RequestURI = function() { return this.$val.RequestURI(); };
  65251. ptrType$2.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}];
  65252. EscapeError.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}];
  65253. ptrType.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}, {prop: "IsAbs", name: "IsAbs", pkg: "", typ: $funcType([], [$Bool], false)}, {prop: "Parse", name: "Parse", pkg: "", typ: $funcType([$String], [ptrType, $error], false)}, {prop: "ResolveReference", name: "ResolveReference", pkg: "", typ: $funcType([ptrType], [ptrType], false)}, {prop: "Query", name: "Query", pkg: "", typ: $funcType([], [Values], false)}, {prop: "RequestURI", name: "RequestURI", pkg: "", typ: $funcType([], [$String], false)}];
  65254. ptrType$1.methods = [{prop: "Username", name: "Username", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Password", name: "Password", pkg: "", typ: $funcType([], [$String, $Bool], false)}, {prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}];
  65255. Values.methods = [{prop: "Get", name: "Get", pkg: "", typ: $funcType([$String], [$String], false)}, {prop: "Set", name: "Set", pkg: "", typ: $funcType([$String, $String], [], false)}, {prop: "Add", name: "Add", pkg: "", typ: $funcType([$String, $String], [], false)}, {prop: "Del", name: "Del", pkg: "", typ: $funcType([$String], [], false)}, {prop: "Encode", name: "Encode", pkg: "", typ: $funcType([], [$String], false)}];
  65256. Error.init([{prop: "Op", name: "Op", pkg: "", typ: $String, tag: ""}, {prop: "URL", name: "URL", pkg: "", typ: $String, tag: ""}, {prop: "Err", name: "Err", pkg: "", typ: $error, tag: ""}]);
  65257. URL.init([{prop: "Scheme", name: "Scheme", pkg: "", typ: $String, tag: ""}, {prop: "Opaque", name: "Opaque", pkg: "", typ: $String, tag: ""}, {prop: "User", name: "User", pkg: "", typ: ptrType$1, tag: ""}, {prop: "Host", name: "Host", pkg: "", typ: $String, tag: ""}, {prop: "Path", name: "Path", pkg: "", typ: $String, tag: ""}, {prop: "RawQuery", name: "RawQuery", pkg: "", typ: $String, tag: ""}, {prop: "Fragment", name: "Fragment", pkg: "", typ: $String, tag: ""}]);
  65258. Userinfo.init([{prop: "username", name: "username", pkg: "net/url", typ: $String, tag: ""}, {prop: "password", name: "password", pkg: "net/url", typ: $String, tag: ""}, {prop: "passwordSet", name: "passwordSet", pkg: "net/url", typ: $Bool, tag: ""}]);
  65259. Values.init($String, sliceType$1);
  65260. $init = function() {
  65261. $pkg.$init = function() {};
  65262. /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  65263. $r = bytes.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  65264. $r = errors.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  65265. $r = sort.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  65266. $r = strconv.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  65267. $r = strings.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  65268. /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
  65269. };
  65270. $pkg.$init = $init;
  65271. return $pkg;
  65272. })();
  65273. $packages["path"] = (function() {
  65274. var $pkg = {}, $init, errors, strings, utf8, lazybuf, sliceType, ptrType, Clean, Split;
  65275. errors = $packages["errors"];
  65276. strings = $packages["strings"];
  65277. utf8 = $packages["unicode/utf8"];
  65278. lazybuf = $pkg.lazybuf = $newType(0, $kindStruct, "path.lazybuf", "lazybuf", "path", function(s_, buf_, w_) {
  65279. this.$val = this;
  65280. if (arguments.length === 0) {
  65281. this.s = "";
  65282. this.buf = sliceType.nil;
  65283. this.w = 0;
  65284. return;
  65285. }
  65286. this.s = s_;
  65287. this.buf = buf_;
  65288. this.w = w_;
  65289. });
  65290. sliceType = $sliceType($Uint8);
  65291. ptrType = $ptrType(lazybuf);
  65292. lazybuf.ptr.prototype.index = function(i) {
  65293. var $ptr, b, i, x;
  65294. b = this;
  65295. if (!(b.buf === sliceType.nil)) {
  65296. return (x = b.buf, ((i < 0 || i >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + i]));
  65297. }
  65298. return b.s.charCodeAt(i);
  65299. };
  65300. lazybuf.prototype.index = function(i) { return this.$val.index(i); };
  65301. lazybuf.ptr.prototype.append = function(c) {
  65302. var $ptr, b, c, x, x$1;
  65303. b = this;
  65304. if (b.buf === sliceType.nil) {
  65305. if (b.w < b.s.length && (b.s.charCodeAt(b.w) === c)) {
  65306. b.w = b.w + (1) >> 0;
  65307. return;
  65308. }
  65309. b.buf = $makeSlice(sliceType, b.s.length);
  65310. $copyString(b.buf, b.s.substring(0, b.w));
  65311. }
  65312. (x = b.buf, x$1 = b.w, ((x$1 < 0 || x$1 >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + x$1] = c));
  65313. b.w = b.w + (1) >> 0;
  65314. };
  65315. lazybuf.prototype.append = function(c) { return this.$val.append(c); };
  65316. lazybuf.ptr.prototype.string = function() {
  65317. var $ptr, b;
  65318. b = this;
  65319. if (b.buf === sliceType.nil) {
  65320. return b.s.substring(0, b.w);
  65321. }
  65322. return $bytesToString($subslice(b.buf, 0, b.w));
  65323. };
  65324. lazybuf.prototype.string = function() { return this.$val.string(); };
  65325. Clean = function(path) {
  65326. var $ptr, _tmp, _tmp$1, _tmp$2, _tmp$3, dotdot, n, out, path, r, rooted;
  65327. if (path === "") {
  65328. return ".";
  65329. }
  65330. rooted = path.charCodeAt(0) === 47;
  65331. n = path.length;
  65332. out = new lazybuf.ptr(path, sliceType.nil, 0);
  65333. _tmp = 0; _tmp$1 = 0; r = _tmp; dotdot = _tmp$1;
  65334. if (rooted) {
  65335. out.append(47);
  65336. _tmp$2 = 1; _tmp$3 = 1; r = _tmp$2; dotdot = _tmp$3;
  65337. }
  65338. while (true) {
  65339. if (!(r < n)) { break; }
  65340. if (path.charCodeAt(r) === 47) {
  65341. r = r + (1) >> 0;
  65342. } else if ((path.charCodeAt(r) === 46) && (((r + 1 >> 0) === n) || (path.charCodeAt((r + 1 >> 0)) === 47))) {
  65343. r = r + (1) >> 0;
  65344. } else if ((path.charCodeAt(r) === 46) && (path.charCodeAt((r + 1 >> 0)) === 46) && (((r + 2 >> 0) === n) || (path.charCodeAt((r + 2 >> 0)) === 47))) {
  65345. r = r + (2) >> 0;
  65346. if (out.w > dotdot) {
  65347. out.w = out.w - (1) >> 0;
  65348. while (true) {
  65349. if (!(out.w > dotdot && !((out.index(out.w) === 47)))) { break; }
  65350. out.w = out.w - (1) >> 0;
  65351. }
  65352. } else if (!rooted) {
  65353. if (out.w > 0) {
  65354. out.append(47);
  65355. }
  65356. out.append(46);
  65357. out.append(46);
  65358. dotdot = out.w;
  65359. }
  65360. } else {
  65361. if (rooted && !((out.w === 1)) || !rooted && !((out.w === 0))) {
  65362. out.append(47);
  65363. }
  65364. while (true) {
  65365. if (!(r < n && !((path.charCodeAt(r) === 47)))) { break; }
  65366. out.append(path.charCodeAt(r));
  65367. r = r + (1) >> 0;
  65368. }
  65369. }
  65370. }
  65371. if (out.w === 0) {
  65372. return ".";
  65373. }
  65374. return out.string();
  65375. };
  65376. $pkg.Clean = Clean;
  65377. Split = function(path) {
  65378. var $ptr, _tmp, _tmp$1, dir, file, i, path;
  65379. dir = "";
  65380. file = "";
  65381. i = strings.LastIndex(path, "/");
  65382. _tmp = path.substring(0, (i + 1 >> 0)); _tmp$1 = path.substring((i + 1 >> 0)); dir = _tmp; file = _tmp$1;
  65383. return [dir, file];
  65384. };
  65385. $pkg.Split = Split;
  65386. ptrType.methods = [{prop: "index", name: "index", pkg: "path", typ: $funcType([$Int], [$Uint8], false)}, {prop: "append", name: "append", pkg: "path", typ: $funcType([$Uint8], [], false)}, {prop: "string", name: "string", pkg: "path", typ: $funcType([], [$String], false)}];
  65387. lazybuf.init([{prop: "s", name: "s", pkg: "path", typ: $String, tag: ""}, {prop: "buf", name: "buf", pkg: "path", typ: sliceType, tag: ""}, {prop: "w", name: "w", pkg: "path", typ: $Int, tag: ""}]);
  65388. $init = function() {
  65389. $pkg.$init = function() {};
  65390. /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  65391. $r = errors.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  65392. $r = strings.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  65393. $r = utf8.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  65394. $pkg.ErrBadPattern = errors.New("syntax error in pattern");
  65395. /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
  65396. };
  65397. $pkg.$init = $init;
  65398. return $pkg;
  65399. })();
  65400. $packages["net/http"] = (function() {
  65401. var $pkg = {}, $init, bufio, bytes, gzip, tls, base64, binary, errors, fmt, js, io, ioutil, log, mime, multipart, net, internal, textproto, url, os, path, filepath, runtime, sort, strconv, strings, sync, atomic, time, XHRTransport, Client, RoundTripper, cancelTimerBody, Cookie, Header, writeStringer, stringWriter, keyValues, headerSorter, CookieJar, ProtocolError, badStringError, Request, maxBytesReader, Response, Handler, ResponseWriter, conn, switchWriter, liveSwitchReader, chunkWriter, response, writerOnly, expectContinueReader, extraHeader, closeWriter, HandlerFunc, redirectHandler, ServeMux, muxEntry, Server, ConnState, serverHandler, tcpKeepAliveListener, globalOptionsHandler, eofReaderWithWriteTo, initNPNRequest, checkConnErrorWriter, sniffSig, exactSig, maskedSig, htmlSig, textSig, errorReader, transferWriter, transferReader, body, bodyLocked, canceler, sliceType, sliceType$1, sliceType$2, sliceType$3, structType, sliceType$4, ptrType, chanType, chanType$1, ptrType$1, ptrType$2, funcType, ptrType$3, funcType$1, ptrType$4, ptrType$5, sliceType$5, ptrType$6, ptrType$7, sliceType$6, ptrType$8, sliceType$8, ptrType$11, ptrType$12, ptrType$13, ptrType$14, ptrType$15, ptrType$16, ptrType$17, ptrType$18, ptrType$19, ptrType$20, ptrType$21, ptrType$22, sliceType$9, arrayType$1, sliceType$10, structType$1, ptrType$23, chanType$2, chanType$3, ptrType$24, ptrType$25, ptrType$26, ptrType$27, ptrType$28, arrayType$2, arrayType$3, ptrType$29, ptrType$30, ptrType$31, ptrType$32, ptrType$33, ptrType$34, sliceType$11, ptrType$35, sliceType$12, arrayType$4, sliceType$13, ptrType$36, sliceType$14, sliceType$15, ptrType$37, ptrType$38, ptrType$43, mapType, funcType$2, ptrType$44, funcType$3, ptrType$45, mapType$1, ptrType$48, ptrType$49, ptrType$50, ptrType$51, ptrType$52, ptrType$53, funcType$4, ptrType$54, mapType$2, funcType$5, mapType$3, funcType$6, ptrType$58, ptrType$59, ptrType$60, ptrType$61, cookieNameSanitizer, errSeeker, headerNewlineToSpace, headerSorterPool, isTokenTable, reqWriteExcludeHeader, multipartByReader, textprotoReaderPool, respExcludeHeader, crlf, colonSpace, bufioReaderPool, bufioWriter2kPool, bufioWriter2kPool_ptr, bufioWriter4kPool, bufioWriter4kPool_ptr, errTooLarge, extraHeaderKeys, headerContentLength, headerDate, statusMu, statusLines, htmlReplacer, stateName, eofReader, uniqNameNext, sniffSignatures, statusText, suppressedHeaders304, suppressedHeadersNoBody, singleCRLF, doubleCRLF, errTrailerEOF, _map, _key, _map$1, _key$1, _map$2, _key$2, _map$3, _key$3, refererForURL, send, basicAuth, shouldRedirectGet, shouldRedirectPost, Get, defaultCheckRedirect, readSetCookies, readCookies, validCookieDomain, isCookieDomainName, sanitizeCookieName, sanitizeCookieValue, validCookieValueByte, sanitizeCookiePath, validCookiePathByte, sanitizeOrWarn, parseCookieValue, isCookieNameValid, CanonicalHeaderKey, hasToken, isTokenBoundary, isToken, isNotToken, valueOrDefault, ParseHTTPVersion, NewRequest, parseBasicAuth, parseRequestLine, newTextprotoReader, putTextprotoReader, ReadRequest, MaxBytesReader, copyValues, parsePostForm, fixPragmaCacheControl, srcIsRegularFile, bufioWriterPool, newBufioReader, putBufioReader, newBufioWriterSize, putBufioWriter, appendTime, statusLine, validNPN, Error, NotFound, NotFoundHandler, Redirect, htmlEscape, RedirectHandler, NewServeMux, pathMatch, cleanPath, DetectContentType, isWS, newTransferWriter, noBodyExpected, bodyAllowedForStatus, suppressedHeaders, readTransfer, chunked, isIdentity, fixTransferEncoding, fixLength, shouldClose, fixTrailer, seeUpcomingDoubleCRLF, mergeSetHeader, parseContentLength;
  65402. bufio = $packages["bufio"];
  65403. bytes = $packages["bytes"];
  65404. gzip = $packages["compress/gzip"];
  65405. tls = $packages["crypto/tls"];
  65406. base64 = $packages["encoding/base64"];
  65407. binary = $packages["encoding/binary"];
  65408. errors = $packages["errors"];
  65409. fmt = $packages["fmt"];
  65410. js = $packages["github.com/gopherjs/gopherjs/js"];
  65411. io = $packages["io"];
  65412. ioutil = $packages["io/ioutil"];
  65413. log = $packages["log"];
  65414. mime = $packages["mime"];
  65415. multipart = $packages["mime/multipart"];
  65416. net = $packages["net"];
  65417. internal = $packages["net/http/internal"];
  65418. textproto = $packages["net/textproto"];
  65419. url = $packages["net/url"];
  65420. os = $packages["os"];
  65421. path = $packages["path"];
  65422. filepath = $packages["path/filepath"];
  65423. runtime = $packages["runtime"];
  65424. sort = $packages["sort"];
  65425. strconv = $packages["strconv"];
  65426. strings = $packages["strings"];
  65427. sync = $packages["sync"];
  65428. atomic = $packages["sync/atomic"];
  65429. time = $packages["time"];
  65430. XHRTransport = $pkg.XHRTransport = $newType(0, $kindStruct, "http.XHRTransport", "XHRTransport", "net/http", function(inflight_) {
  65431. this.$val = this;
  65432. if (arguments.length === 0) {
  65433. this.inflight = false;
  65434. return;
  65435. }
  65436. this.inflight = inflight_;
  65437. });
  65438. Client = $pkg.Client = $newType(0, $kindStruct, "http.Client", "Client", "net/http", function(Transport_, CheckRedirect_, Jar_, Timeout_) {
  65439. this.$val = this;
  65440. if (arguments.length === 0) {
  65441. this.Transport = $ifaceNil;
  65442. this.CheckRedirect = $throwNilPointerError;
  65443. this.Jar = $ifaceNil;
  65444. this.Timeout = new time.Duration(0, 0);
  65445. return;
  65446. }
  65447. this.Transport = Transport_;
  65448. this.CheckRedirect = CheckRedirect_;
  65449. this.Jar = Jar_;
  65450. this.Timeout = Timeout_;
  65451. });
  65452. RoundTripper = $pkg.RoundTripper = $newType(8, $kindInterface, "http.RoundTripper", "RoundTripper", "net/http", null);
  65453. cancelTimerBody = $pkg.cancelTimerBody = $newType(0, $kindStruct, "http.cancelTimerBody", "cancelTimerBody", "net/http", function(t_, rc_) {
  65454. this.$val = this;
  65455. if (arguments.length === 0) {
  65456. this.t = ptrType$6.nil;
  65457. this.rc = $ifaceNil;
  65458. return;
  65459. }
  65460. this.t = t_;
  65461. this.rc = rc_;
  65462. });
  65463. Cookie = $pkg.Cookie = $newType(0, $kindStruct, "http.Cookie", "Cookie", "net/http", function(Name_, Value_, Path_, Domain_, Expires_, RawExpires_, MaxAge_, Secure_, HttpOnly_, Raw_, Unparsed_) {
  65464. this.$val = this;
  65465. if (arguments.length === 0) {
  65466. this.Name = "";
  65467. this.Value = "";
  65468. this.Path = "";
  65469. this.Domain = "";
  65470. this.Expires = new time.Time.ptr();
  65471. this.RawExpires = "";
  65472. this.MaxAge = 0;
  65473. this.Secure = false;
  65474. this.HttpOnly = false;
  65475. this.Raw = "";
  65476. this.Unparsed = sliceType.nil;
  65477. return;
  65478. }
  65479. this.Name = Name_;
  65480. this.Value = Value_;
  65481. this.Path = Path_;
  65482. this.Domain = Domain_;
  65483. this.Expires = Expires_;
  65484. this.RawExpires = RawExpires_;
  65485. this.MaxAge = MaxAge_;
  65486. this.Secure = Secure_;
  65487. this.HttpOnly = HttpOnly_;
  65488. this.Raw = Raw_;
  65489. this.Unparsed = Unparsed_;
  65490. });
  65491. Header = $pkg.Header = $newType(4, $kindMap, "http.Header", "Header", "net/http", null);
  65492. writeStringer = $pkg.writeStringer = $newType(8, $kindInterface, "http.writeStringer", "writeStringer", "net/http", null);
  65493. stringWriter = $pkg.stringWriter = $newType(0, $kindStruct, "http.stringWriter", "stringWriter", "net/http", function(w_) {
  65494. this.$val = this;
  65495. if (arguments.length === 0) {
  65496. this.w = $ifaceNil;
  65497. return;
  65498. }
  65499. this.w = w_;
  65500. });
  65501. keyValues = $pkg.keyValues = $newType(0, $kindStruct, "http.keyValues", "keyValues", "net/http", function(key_, values_) {
  65502. this.$val = this;
  65503. if (arguments.length === 0) {
  65504. this.key = "";
  65505. this.values = sliceType.nil;
  65506. return;
  65507. }
  65508. this.key = key_;
  65509. this.values = values_;
  65510. });
  65511. headerSorter = $pkg.headerSorter = $newType(0, $kindStruct, "http.headerSorter", "headerSorter", "net/http", function(kvs_) {
  65512. this.$val = this;
  65513. if (arguments.length === 0) {
  65514. this.kvs = sliceType$8.nil;
  65515. return;
  65516. }
  65517. this.kvs = kvs_;
  65518. });
  65519. CookieJar = $pkg.CookieJar = $newType(8, $kindInterface, "http.CookieJar", "CookieJar", "net/http", null);
  65520. ProtocolError = $pkg.ProtocolError = $newType(0, $kindStruct, "http.ProtocolError", "ProtocolError", "net/http", function(ErrorString_) {
  65521. this.$val = this;
  65522. if (arguments.length === 0) {
  65523. this.ErrorString = "";
  65524. return;
  65525. }
  65526. this.ErrorString = ErrorString_;
  65527. });
  65528. badStringError = $pkg.badStringError = $newType(0, $kindStruct, "http.badStringError", "badStringError", "net/http", function(what_, str_) {
  65529. this.$val = this;
  65530. if (arguments.length === 0) {
  65531. this.what = "";
  65532. this.str = "";
  65533. return;
  65534. }
  65535. this.what = what_;
  65536. this.str = str_;
  65537. });
  65538. Request = $pkg.Request = $newType(0, $kindStruct, "http.Request", "Request", "net/http", function(Method_, URL_, Proto_, ProtoMajor_, ProtoMinor_, Header_, Body_, ContentLength_, TransferEncoding_, Close_, Host_, Form_, PostForm_, MultipartForm_, Trailer_, RemoteAddr_, RequestURI_, TLS_) {
  65539. this.$val = this;
  65540. if (arguments.length === 0) {
  65541. this.Method = "";
  65542. this.URL = ptrType$5.nil;
  65543. this.Proto = "";
  65544. this.ProtoMajor = 0;
  65545. this.ProtoMinor = 0;
  65546. this.Header = false;
  65547. this.Body = $ifaceNil;
  65548. this.ContentLength = new $Int64(0, 0);
  65549. this.TransferEncoding = sliceType.nil;
  65550. this.Close = false;
  65551. this.Host = "";
  65552. this.Form = false;
  65553. this.PostForm = false;
  65554. this.MultipartForm = ptrType$13.nil;
  65555. this.Trailer = false;
  65556. this.RemoteAddr = "";
  65557. this.RequestURI = "";
  65558. this.TLS = ptrType$2.nil;
  65559. return;
  65560. }
  65561. this.Method = Method_;
  65562. this.URL = URL_;
  65563. this.Proto = Proto_;
  65564. this.ProtoMajor = ProtoMajor_;
  65565. this.ProtoMinor = ProtoMinor_;
  65566. this.Header = Header_;
  65567. this.Body = Body_;
  65568. this.ContentLength = ContentLength_;
  65569. this.TransferEncoding = TransferEncoding_;
  65570. this.Close = Close_;
  65571. this.Host = Host_;
  65572. this.Form = Form_;
  65573. this.PostForm = PostForm_;
  65574. this.MultipartForm = MultipartForm_;
  65575. this.Trailer = Trailer_;
  65576. this.RemoteAddr = RemoteAddr_;
  65577. this.RequestURI = RequestURI_;
  65578. this.TLS = TLS_;
  65579. });
  65580. maxBytesReader = $pkg.maxBytesReader = $newType(0, $kindStruct, "http.maxBytesReader", "maxBytesReader", "net/http", function(w_, r_, n_, stopped_) {
  65581. this.$val = this;
  65582. if (arguments.length === 0) {
  65583. this.w = $ifaceNil;
  65584. this.r = $ifaceNil;
  65585. this.n = new $Int64(0, 0);
  65586. this.stopped = false;
  65587. return;
  65588. }
  65589. this.w = w_;
  65590. this.r = r_;
  65591. this.n = n_;
  65592. this.stopped = stopped_;
  65593. });
  65594. Response = $pkg.Response = $newType(0, $kindStruct, "http.Response", "Response", "net/http", function(Status_, StatusCode_, Proto_, ProtoMajor_, ProtoMinor_, Header_, Body_, ContentLength_, TransferEncoding_, Close_, Trailer_, Request_, TLS_) {
  65595. this.$val = this;
  65596. if (arguments.length === 0) {
  65597. this.Status = "";
  65598. this.StatusCode = 0;
  65599. this.Proto = "";
  65600. this.ProtoMajor = 0;
  65601. this.ProtoMinor = 0;
  65602. this.Header = false;
  65603. this.Body = $ifaceNil;
  65604. this.ContentLength = new $Int64(0, 0);
  65605. this.TransferEncoding = sliceType.nil;
  65606. this.Close = false;
  65607. this.Trailer = false;
  65608. this.Request = ptrType$1.nil;
  65609. this.TLS = ptrType$2.nil;
  65610. return;
  65611. }
  65612. this.Status = Status_;
  65613. this.StatusCode = StatusCode_;
  65614. this.Proto = Proto_;
  65615. this.ProtoMajor = ProtoMajor_;
  65616. this.ProtoMinor = ProtoMinor_;
  65617. this.Header = Header_;
  65618. this.Body = Body_;
  65619. this.ContentLength = ContentLength_;
  65620. this.TransferEncoding = TransferEncoding_;
  65621. this.Close = Close_;
  65622. this.Trailer = Trailer_;
  65623. this.Request = Request_;
  65624. this.TLS = TLS_;
  65625. });
  65626. Handler = $pkg.Handler = $newType(8, $kindInterface, "http.Handler", "Handler", "net/http", null);
  65627. ResponseWriter = $pkg.ResponseWriter = $newType(8, $kindInterface, "http.ResponseWriter", "ResponseWriter", "net/http", null);
  65628. conn = $pkg.conn = $newType(0, $kindStruct, "http.conn", "conn", "net/http", function(remoteAddr_, server_, rwc_, w_, werr_, sr_, lr_, buf_, tlsState_, mu_, clientGone_, closeNotifyc_, hijackedv_) {
  65629. this.$val = this;
  65630. if (arguments.length === 0) {
  65631. this.remoteAddr = "";
  65632. this.server = ptrType$50.nil;
  65633. this.rwc = $ifaceNil;
  65634. this.w = $ifaceNil;
  65635. this.werr = $ifaceNil;
  65636. this.sr = new liveSwitchReader.ptr();
  65637. this.lr = ptrType$25.nil;
  65638. this.buf = ptrType$23.nil;
  65639. this.tlsState = ptrType$2.nil;
  65640. this.mu = new sync.Mutex.ptr();
  65641. this.clientGone = false;
  65642. this.closeNotifyc = chanType$2.nil;
  65643. this.hijackedv = false;
  65644. return;
  65645. }
  65646. this.remoteAddr = remoteAddr_;
  65647. this.server = server_;
  65648. this.rwc = rwc_;
  65649. this.w = w_;
  65650. this.werr = werr_;
  65651. this.sr = sr_;
  65652. this.lr = lr_;
  65653. this.buf = buf_;
  65654. this.tlsState = tlsState_;
  65655. this.mu = mu_;
  65656. this.clientGone = clientGone_;
  65657. this.closeNotifyc = closeNotifyc_;
  65658. this.hijackedv = hijackedv_;
  65659. });
  65660. switchWriter = $pkg.switchWriter = $newType(0, $kindStruct, "http.switchWriter", "switchWriter", "net/http", function(Writer_) {
  65661. this.$val = this;
  65662. if (arguments.length === 0) {
  65663. this.Writer = $ifaceNil;
  65664. return;
  65665. }
  65666. this.Writer = Writer_;
  65667. });
  65668. liveSwitchReader = $pkg.liveSwitchReader = $newType(0, $kindStruct, "http.liveSwitchReader", "liveSwitchReader", "net/http", function(Mutex_, r_) {
  65669. this.$val = this;
  65670. if (arguments.length === 0) {
  65671. this.Mutex = new sync.Mutex.ptr();
  65672. this.r = $ifaceNil;
  65673. return;
  65674. }
  65675. this.Mutex = Mutex_;
  65676. this.r = r_;
  65677. });
  65678. chunkWriter = $pkg.chunkWriter = $newType(0, $kindStruct, "http.chunkWriter", "chunkWriter", "net/http", function(res_, header_, wroteHeader_, chunking_) {
  65679. this.$val = this;
  65680. if (arguments.length === 0) {
  65681. this.res = ptrType$20.nil;
  65682. this.header = false;
  65683. this.wroteHeader = false;
  65684. this.chunking = false;
  65685. return;
  65686. }
  65687. this.res = res_;
  65688. this.header = header_;
  65689. this.wroteHeader = wroteHeader_;
  65690. this.chunking = chunking_;
  65691. });
  65692. response = $pkg.response = $newType(0, $kindStruct, "http.response", "response", "net/http", function(conn_, req_, wroteHeader_, wroteContinue_, w_, cw_, sw_, handlerHeader_, calledHeader_, written_, contentLength_, status_, closeAfterReply_, requestBodyLimitHit_, handlerDone_, dateBuf_, clenBuf_) {
  65693. this.$val = this;
  65694. if (arguments.length === 0) {
  65695. this.conn = ptrType$26.nil;
  65696. this.req = ptrType$1.nil;
  65697. this.wroteHeader = false;
  65698. this.wroteContinue = false;
  65699. this.w = ptrType$14.nil;
  65700. this.cw = new chunkWriter.ptr();
  65701. this.sw = ptrType$28.nil;
  65702. this.handlerHeader = false;
  65703. this.calledHeader = false;
  65704. this.written = new $Int64(0, 0);
  65705. this.contentLength = new $Int64(0, 0);
  65706. this.status = 0;
  65707. this.closeAfterReply = false;
  65708. this.requestBodyLimitHit = false;
  65709. this.handlerDone = false;
  65710. this.dateBuf = arrayType$2.zero();
  65711. this.clenBuf = arrayType$3.zero();
  65712. return;
  65713. }
  65714. this.conn = conn_;
  65715. this.req = req_;
  65716. this.wroteHeader = wroteHeader_;
  65717. this.wroteContinue = wroteContinue_;
  65718. this.w = w_;
  65719. this.cw = cw_;
  65720. this.sw = sw_;
  65721. this.handlerHeader = handlerHeader_;
  65722. this.calledHeader = calledHeader_;
  65723. this.written = written_;
  65724. this.contentLength = contentLength_;
  65725. this.status = status_;
  65726. this.closeAfterReply = closeAfterReply_;
  65727. this.requestBodyLimitHit = requestBodyLimitHit_;
  65728. this.handlerDone = handlerDone_;
  65729. this.dateBuf = dateBuf_;
  65730. this.clenBuf = clenBuf_;
  65731. });
  65732. writerOnly = $pkg.writerOnly = $newType(0, $kindStruct, "http.writerOnly", "writerOnly", "net/http", function(Writer_) {
  65733. this.$val = this;
  65734. if (arguments.length === 0) {
  65735. this.Writer = $ifaceNil;
  65736. return;
  65737. }
  65738. this.Writer = Writer_;
  65739. });
  65740. expectContinueReader = $pkg.expectContinueReader = $newType(0, $kindStruct, "http.expectContinueReader", "expectContinueReader", "net/http", function(resp_, readCloser_, closed_) {
  65741. this.$val = this;
  65742. if (arguments.length === 0) {
  65743. this.resp = ptrType$20.nil;
  65744. this.readCloser = $ifaceNil;
  65745. this.closed = false;
  65746. return;
  65747. }
  65748. this.resp = resp_;
  65749. this.readCloser = readCloser_;
  65750. this.closed = closed_;
  65751. });
  65752. extraHeader = $pkg.extraHeader = $newType(0, $kindStruct, "http.extraHeader", "extraHeader", "net/http", function(contentType_, connection_, transferEncoding_, date_, contentLength_) {
  65753. this.$val = this;
  65754. if (arguments.length === 0) {
  65755. this.contentType = "";
  65756. this.connection = "";
  65757. this.transferEncoding = "";
  65758. this.date = sliceType$2.nil;
  65759. this.contentLength = sliceType$2.nil;
  65760. return;
  65761. }
  65762. this.contentType = contentType_;
  65763. this.connection = connection_;
  65764. this.transferEncoding = transferEncoding_;
  65765. this.date = date_;
  65766. this.contentLength = contentLength_;
  65767. });
  65768. closeWriter = $pkg.closeWriter = $newType(8, $kindInterface, "http.closeWriter", "closeWriter", "net/http", null);
  65769. HandlerFunc = $pkg.HandlerFunc = $newType(4, $kindFunc, "http.HandlerFunc", "HandlerFunc", "net/http", null);
  65770. redirectHandler = $pkg.redirectHandler = $newType(0, $kindStruct, "http.redirectHandler", "redirectHandler", "net/http", function(url_, code_) {
  65771. this.$val = this;
  65772. if (arguments.length === 0) {
  65773. this.url = "";
  65774. this.code = 0;
  65775. return;
  65776. }
  65777. this.url = url_;
  65778. this.code = code_;
  65779. });
  65780. ServeMux = $pkg.ServeMux = $newType(0, $kindStruct, "http.ServeMux", "ServeMux", "net/http", function(mu_, m_, hosts_) {
  65781. this.$val = this;
  65782. if (arguments.length === 0) {
  65783. this.mu = new sync.RWMutex.ptr();
  65784. this.m = false;
  65785. this.hosts = false;
  65786. return;
  65787. }
  65788. this.mu = mu_;
  65789. this.m = m_;
  65790. this.hosts = hosts_;
  65791. });
  65792. muxEntry = $pkg.muxEntry = $newType(0, $kindStruct, "http.muxEntry", "muxEntry", "net/http", function(explicit_, h_, pattern_) {
  65793. this.$val = this;
  65794. if (arguments.length === 0) {
  65795. this.explicit = false;
  65796. this.h = $ifaceNil;
  65797. this.pattern = "";
  65798. return;
  65799. }
  65800. this.explicit = explicit_;
  65801. this.h = h_;
  65802. this.pattern = pattern_;
  65803. });
  65804. Server = $pkg.Server = $newType(0, $kindStruct, "http.Server", "Server", "net/http", function(Addr_, Handler_, ReadTimeout_, WriteTimeout_, MaxHeaderBytes_, TLSConfig_, TLSNextProto_, ConnState_, ErrorLog_, disableKeepAlives_) {
  65805. this.$val = this;
  65806. if (arguments.length === 0) {
  65807. this.Addr = "";
  65808. this.Handler = $ifaceNil;
  65809. this.ReadTimeout = new time.Duration(0, 0);
  65810. this.WriteTimeout = new time.Duration(0, 0);
  65811. this.MaxHeaderBytes = 0;
  65812. this.TLSConfig = ptrType$31.nil;
  65813. this.TLSNextProto = false;
  65814. this.ConnState = $throwNilPointerError;
  65815. this.ErrorLog = ptrType$32.nil;
  65816. this.disableKeepAlives = 0;
  65817. return;
  65818. }
  65819. this.Addr = Addr_;
  65820. this.Handler = Handler_;
  65821. this.ReadTimeout = ReadTimeout_;
  65822. this.WriteTimeout = WriteTimeout_;
  65823. this.MaxHeaderBytes = MaxHeaderBytes_;
  65824. this.TLSConfig = TLSConfig_;
  65825. this.TLSNextProto = TLSNextProto_;
  65826. this.ConnState = ConnState_;
  65827. this.ErrorLog = ErrorLog_;
  65828. this.disableKeepAlives = disableKeepAlives_;
  65829. });
  65830. ConnState = $pkg.ConnState = $newType(4, $kindInt, "http.ConnState", "ConnState", "net/http", null);
  65831. serverHandler = $pkg.serverHandler = $newType(0, $kindStruct, "http.serverHandler", "serverHandler", "net/http", function(srv_) {
  65832. this.$val = this;
  65833. if (arguments.length === 0) {
  65834. this.srv = ptrType$50.nil;
  65835. return;
  65836. }
  65837. this.srv = srv_;
  65838. });
  65839. tcpKeepAliveListener = $pkg.tcpKeepAliveListener = $newType(0, $kindStruct, "http.tcpKeepAliveListener", "tcpKeepAliveListener", "net/http", function(TCPListener_) {
  65840. this.$val = this;
  65841. if (arguments.length === 0) {
  65842. this.TCPListener = ptrType$33.nil;
  65843. return;
  65844. }
  65845. this.TCPListener = TCPListener_;
  65846. });
  65847. globalOptionsHandler = $pkg.globalOptionsHandler = $newType(0, $kindStruct, "http.globalOptionsHandler", "globalOptionsHandler", "net/http", function() {
  65848. this.$val = this;
  65849. if (arguments.length === 0) {
  65850. return;
  65851. }
  65852. });
  65853. eofReaderWithWriteTo = $pkg.eofReaderWithWriteTo = $newType(0, $kindStruct, "http.eofReaderWithWriteTo", "eofReaderWithWriteTo", "net/http", function() {
  65854. this.$val = this;
  65855. if (arguments.length === 0) {
  65856. return;
  65857. }
  65858. });
  65859. initNPNRequest = $pkg.initNPNRequest = $newType(0, $kindStruct, "http.initNPNRequest", "initNPNRequest", "net/http", function(c_, h_) {
  65860. this.$val = this;
  65861. if (arguments.length === 0) {
  65862. this.c = ptrType$30.nil;
  65863. this.h = new serverHandler.ptr();
  65864. return;
  65865. }
  65866. this.c = c_;
  65867. this.h = h_;
  65868. });
  65869. checkConnErrorWriter = $pkg.checkConnErrorWriter = $newType(0, $kindStruct, "http.checkConnErrorWriter", "checkConnErrorWriter", "net/http", function(c_) {
  65870. this.$val = this;
  65871. if (arguments.length === 0) {
  65872. this.c = ptrType$26.nil;
  65873. return;
  65874. }
  65875. this.c = c_;
  65876. });
  65877. sniffSig = $pkg.sniffSig = $newType(8, $kindInterface, "http.sniffSig", "sniffSig", "net/http", null);
  65878. exactSig = $pkg.exactSig = $newType(0, $kindStruct, "http.exactSig", "exactSig", "net/http", function(sig_, ct_) {
  65879. this.$val = this;
  65880. if (arguments.length === 0) {
  65881. this.sig = sliceType$2.nil;
  65882. this.ct = "";
  65883. return;
  65884. }
  65885. this.sig = sig_;
  65886. this.ct = ct_;
  65887. });
  65888. maskedSig = $pkg.maskedSig = $newType(0, $kindStruct, "http.maskedSig", "maskedSig", "net/http", function(mask_, pat_, skipWS_, ct_) {
  65889. this.$val = this;
  65890. if (arguments.length === 0) {
  65891. this.mask = sliceType$2.nil;
  65892. this.pat = sliceType$2.nil;
  65893. this.skipWS = false;
  65894. this.ct = "";
  65895. return;
  65896. }
  65897. this.mask = mask_;
  65898. this.pat = pat_;
  65899. this.skipWS = skipWS_;
  65900. this.ct = ct_;
  65901. });
  65902. htmlSig = $pkg.htmlSig = $newType(12, $kindSlice, "http.htmlSig", "htmlSig", "net/http", null);
  65903. textSig = $pkg.textSig = $newType(4, $kindInt, "http.textSig", "textSig", "net/http", null);
  65904. errorReader = $pkg.errorReader = $newType(0, $kindStruct, "http.errorReader", "errorReader", "net/http", function(err_) {
  65905. this.$val = this;
  65906. if (arguments.length === 0) {
  65907. this.err = $ifaceNil;
  65908. return;
  65909. }
  65910. this.err = err_;
  65911. });
  65912. transferWriter = $pkg.transferWriter = $newType(0, $kindStruct, "http.transferWriter", "transferWriter", "net/http", function(Method_, Body_, BodyCloser_, ResponseToHEAD_, ContentLength_, Close_, TransferEncoding_, Trailer_) {
  65913. this.$val = this;
  65914. if (arguments.length === 0) {
  65915. this.Method = "";
  65916. this.Body = $ifaceNil;
  65917. this.BodyCloser = $ifaceNil;
  65918. this.ResponseToHEAD = false;
  65919. this.ContentLength = new $Int64(0, 0);
  65920. this.Close = false;
  65921. this.TransferEncoding = sliceType.nil;
  65922. this.Trailer = false;
  65923. return;
  65924. }
  65925. this.Method = Method_;
  65926. this.Body = Body_;
  65927. this.BodyCloser = BodyCloser_;
  65928. this.ResponseToHEAD = ResponseToHEAD_;
  65929. this.ContentLength = ContentLength_;
  65930. this.Close = Close_;
  65931. this.TransferEncoding = TransferEncoding_;
  65932. this.Trailer = Trailer_;
  65933. });
  65934. transferReader = $pkg.transferReader = $newType(0, $kindStruct, "http.transferReader", "transferReader", "net/http", function(Header_, StatusCode_, RequestMethod_, ProtoMajor_, ProtoMinor_, Body_, ContentLength_, TransferEncoding_, Close_, Trailer_) {
  65935. this.$val = this;
  65936. if (arguments.length === 0) {
  65937. this.Header = false;
  65938. this.StatusCode = 0;
  65939. this.RequestMethod = "";
  65940. this.ProtoMajor = 0;
  65941. this.ProtoMinor = 0;
  65942. this.Body = $ifaceNil;
  65943. this.ContentLength = new $Int64(0, 0);
  65944. this.TransferEncoding = sliceType.nil;
  65945. this.Close = false;
  65946. this.Trailer = false;
  65947. return;
  65948. }
  65949. this.Header = Header_;
  65950. this.StatusCode = StatusCode_;
  65951. this.RequestMethod = RequestMethod_;
  65952. this.ProtoMajor = ProtoMajor_;
  65953. this.ProtoMinor = ProtoMinor_;
  65954. this.Body = Body_;
  65955. this.ContentLength = ContentLength_;
  65956. this.TransferEncoding = TransferEncoding_;
  65957. this.Close = Close_;
  65958. this.Trailer = Trailer_;
  65959. });
  65960. body = $pkg.body = $newType(0, $kindStruct, "http.body", "body", "net/http", function(src_, hdr_, r_, closing_, mu_, closed_) {
  65961. this.$val = this;
  65962. if (arguments.length === 0) {
  65963. this.src = $ifaceNil;
  65964. this.hdr = $ifaceNil;
  65965. this.r = ptrType$19.nil;
  65966. this.closing = false;
  65967. this.mu = new sync.Mutex.ptr();
  65968. this.closed = false;
  65969. return;
  65970. }
  65971. this.src = src_;
  65972. this.hdr = hdr_;
  65973. this.r = r_;
  65974. this.closing = closing_;
  65975. this.mu = mu_;
  65976. this.closed = closed_;
  65977. });
  65978. bodyLocked = $pkg.bodyLocked = $newType(0, $kindStruct, "http.bodyLocked", "bodyLocked", "net/http", function(b_) {
  65979. this.$val = this;
  65980. if (arguments.length === 0) {
  65981. this.b = ptrType$61.nil;
  65982. return;
  65983. }
  65984. this.b = b_;
  65985. });
  65986. canceler = $newType(8, $kindInterface, "http.canceler", "canceler", "net/http", null);
  65987. sliceType = $sliceType($String);
  65988. sliceType$1 = $sliceType($emptyInterface);
  65989. sliceType$2 = $sliceType($Uint8);
  65990. sliceType$3 = $sliceType(sliceType$2);
  65991. structType = $structType([{prop: "eofReaderWithWriteTo", name: "", pkg: "net/http", typ: eofReaderWithWriteTo, tag: ""}, {prop: "Closer", name: "", pkg: "", typ: io.Closer, tag: ""}]);
  65992. sliceType$4 = $sliceType(sniffSig);
  65993. ptrType = $ptrType(Response);
  65994. chanType = $chanType(ptrType, false, false);
  65995. chanType$1 = $chanType($error, false, false);
  65996. ptrType$1 = $ptrType(Request);
  65997. ptrType$2 = $ptrType(tls.ConnectionState);
  65998. funcType = $funcType([], [], false);
  65999. ptrType$3 = $ptrType(js.Object);
  66000. funcType$1 = $funcType([ptrType$3], [], false);
  66001. ptrType$4 = $ptrType(url.Userinfo);
  66002. ptrType$5 = $ptrType(url.URL);
  66003. sliceType$5 = $sliceType(ptrType$1);
  66004. ptrType$6 = $ptrType(time.Timer);
  66005. ptrType$7 = $ptrType(Cookie);
  66006. sliceType$6 = $sliceType(ptrType$7);
  66007. ptrType$8 = $ptrType(time.Location);
  66008. sliceType$8 = $sliceType(keyValues);
  66009. ptrType$11 = $ptrType(headerSorter);
  66010. ptrType$12 = $ptrType(multipart.Reader);
  66011. ptrType$13 = $ptrType(multipart.Form);
  66012. ptrType$14 = $ptrType(bufio.Writer);
  66013. ptrType$15 = $ptrType(bytes.Buffer);
  66014. ptrType$16 = $ptrType(bytes.Reader);
  66015. ptrType$17 = $ptrType(strings.Reader);
  66016. ptrType$18 = $ptrType(textproto.Reader);
  66017. ptrType$19 = $ptrType(bufio.Reader);
  66018. ptrType$20 = $ptrType(response);
  66019. ptrType$21 = $ptrType(maxBytesReader);
  66020. ptrType$22 = $ptrType(multipart.FileHeader);
  66021. sliceType$9 = $sliceType(ptrType$22);
  66022. arrayType$1 = $arrayType($Uint8, 1);
  66023. sliceType$10 = $sliceType(io.Reader);
  66024. structType$1 = $structType([{prop: "Reader", name: "", pkg: "", typ: io.Reader, tag: ""}, {prop: "Closer", name: "", pkg: "", typ: io.Closer, tag: ""}]);
  66025. ptrType$23 = $ptrType(bufio.ReadWriter);
  66026. chanType$2 = $chanType($Bool, false, false);
  66027. chanType$3 = $chanType($Bool, false, true);
  66028. ptrType$24 = $ptrType(os.File);
  66029. ptrType$25 = $ptrType(io.LimitedReader);
  66030. ptrType$26 = $ptrType(conn);
  66031. ptrType$27 = $ptrType(sync.Pool);
  66032. ptrType$28 = $ptrType(switchWriter);
  66033. arrayType$2 = $arrayType($Uint8, 29);
  66034. arrayType$3 = $arrayType($Uint8, 10);
  66035. ptrType$29 = $ptrType(expectContinueReader);
  66036. ptrType$30 = $ptrType(tls.Conn);
  66037. ptrType$31 = $ptrType(tls.Config);
  66038. ptrType$32 = $ptrType(log.Logger);
  66039. ptrType$33 = $ptrType(net.TCPListener);
  66040. ptrType$34 = $ptrType($Int32);
  66041. sliceType$11 = $sliceType(tls.Certificate);
  66042. ptrType$35 = $ptrType($packages["crypto/x509"].CertPool);
  66043. sliceType$12 = $sliceType($Uint16);
  66044. arrayType$4 = $arrayType($Uint8, 32);
  66045. sliceType$13 = $sliceType(tls.CurveID);
  66046. ptrType$36 = $ptrType($packages["crypto/x509"].Certificate);
  66047. sliceType$14 = $sliceType(ptrType$36);
  66048. sliceType$15 = $sliceType(sliceType$14);
  66049. ptrType$37 = $ptrType(transferWriter);
  66050. ptrType$38 = $ptrType(Header);
  66051. ptrType$43 = $ptrType(XHRTransport);
  66052. mapType = $mapType(ptrType$1, ptrType$3);
  66053. funcType$2 = $funcType([$Int], [$Bool], false);
  66054. ptrType$44 = $ptrType(Client);
  66055. funcType$3 = $funcType([ptrType$1, sliceType$5], [$error], false);
  66056. ptrType$45 = $ptrType(cancelTimerBody);
  66057. mapType$1 = $mapType($String, $Bool);
  66058. ptrType$48 = $ptrType(ProtocolError);
  66059. ptrType$49 = $ptrType(badStringError);
  66060. ptrType$50 = $ptrType(Server);
  66061. ptrType$51 = $ptrType(liveSwitchReader);
  66062. ptrType$52 = $ptrType(chunkWriter);
  66063. ptrType$53 = $ptrType(redirectHandler);
  66064. funcType$4 = $funcType([ResponseWriter, ptrType$1], [], false);
  66065. ptrType$54 = $ptrType(ServeMux);
  66066. mapType$2 = $mapType($String, muxEntry);
  66067. funcType$5 = $funcType([ptrType$50, ptrType$30, Handler], [], false);
  66068. mapType$3 = $mapType($String, funcType$5);
  66069. funcType$6 = $funcType([net.Conn, ConnState], [], false);
  66070. ptrType$58 = $ptrType(exactSig);
  66071. ptrType$59 = $ptrType(maskedSig);
  66072. ptrType$60 = $ptrType(errorReader);
  66073. ptrType$61 = $ptrType(body);
  66074. XHRTransport.ptr.prototype.RoundTrip = function(req) {
  66075. var $ptr, _arg, _arg$1, _entry, _i, _i$1, _key$5, _key$6, _keys, _map$5, _r, _r$1, _ref, _ref$1, _selection, _tuple, body$1, err, err$1, errCh, key, req, resp, respCh, t, value, values, xhr, xhrConstructor, $s, $deferred, $r;
  66076. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _arg = $f._arg; _arg$1 = $f._arg$1; _entry = $f._entry; _i = $f._i; _i$1 = $f._i$1; _key$5 = $f._key$5; _key$6 = $f._key$6; _keys = $f._keys; _map$5 = $f._map$5; _r = $f._r; _r$1 = $f._r$1; _ref = $f._ref; _ref$1 = $f._ref$1; _selection = $f._selection; _tuple = $f._tuple; body$1 = $f.body$1; err = $f.err; err$1 = $f.err$1; errCh = $f.errCh; key = $f.key; req = $f.req; resp = $f.resp; respCh = $f.respCh; t = $f.t; value = $f.value; values = $f.values; xhr = $f.xhr; xhrConstructor = $f.xhrConstructor; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
  66077. errCh = [errCh];
  66078. req = [req];
  66079. respCh = [respCh];
  66080. xhr = [xhr];
  66081. t = this;
  66082. xhrConstructor = $global.XMLHttpRequest;
  66083. if (xhrConstructor === undefined) {
  66084. return [ptrType.nil, errors.New("net/http: XMLHttpRequest not available")];
  66085. }
  66086. xhr[0] = new (xhrConstructor)();
  66087. xhr[0].responseType = $externalize("arraybuffer", $String);
  66088. if (t.inflight === false) {
  66089. t.inflight = (_map$5 = new $Map(), _map$5);
  66090. }
  66091. _key$6 = req[0]; (t.inflight || $throwRuntimeError("assignment to entry in nil map"))[_key$6.$key()] = { k: _key$6, v: xhr[0] };
  66092. $deferred.push([function(_arg, _arg$1) { delete _arg[_arg$1.$key()]; }, [t.inflight, req[0]]]);
  66093. respCh[0] = new chanType(0);
  66094. errCh[0] = new chanType$1(0);
  66095. xhr[0].onload = $externalize((function(errCh, req, respCh, xhr) { return function $b() {
  66096. var $ptr, _r, _ref, _tuple, _tuple$1, body$1, contentLength, err, header, l, $s, $r;
  66097. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _ref = $f._ref; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; body$1 = $f.body$1; contentLength = $f.contentLength; err = $f.err; header = $f.header; l = $f.l; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  66098. _r = textproto.NewReader(bufio.NewReader(bytes.NewReader(new sliceType$2($stringToBytes($internalize(xhr[0].getAllResponseHeaders(), $String) + "\n"))))).ReadMIMEHeader(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  66099. _tuple = _r; header = _tuple[0];
  66100. body$1 = $assertType($internalize(new ($global.Uint8Array)(xhr[0].response), $emptyInterface), sliceType$2);
  66101. contentLength = new $Int64(-1, 4294967295);
  66102. _ref = req[0].Method;
  66103. if (_ref === "HEAD") {
  66104. _tuple$1 = strconv.ParseInt(new textproto.MIMEHeader(header).Get("Content-Length"), 10, 64); l = _tuple$1[0]; err = _tuple$1[1];
  66105. if ($interfaceIsEqual(err, $ifaceNil)) {
  66106. contentLength = l;
  66107. }
  66108. } else {
  66109. contentLength = new $Int64(0, body$1.$length);
  66110. }
  66111. $r = $send(respCh[0], new Response.ptr($internalize(xhr[0].status, $String) + " " + $internalize(xhr[0].statusText, $String), $parseInt(xhr[0].status) >> 0, "", 0, 0, header, ioutil.NopCloser(bytes.NewReader(body$1)), contentLength, sliceType.nil, false, false, req[0], ptrType$2.nil)); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  66112. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: $b }; } $f.$ptr = $ptr; $f._r = _r; $f._ref = _ref; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.body$1 = body$1; $f.contentLength = contentLength; $f.err = err; $f.header = header; $f.l = l; $f.$s = $s; $f.$r = $r; return $f;
  66113. }; })(errCh, req, respCh, xhr), funcType);
  66114. xhr[0].onerror = $externalize((function(errCh, req, respCh, xhr) { return function $b(e) {
  66115. var $ptr, e, $s, $r;
  66116. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; e = $f.e; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  66117. $r = $send(errCh[0], errors.New("net/http: XMLHttpRequest failed")); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  66118. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: $b }; } $f.$ptr = $ptr; $f.e = e; $f.$s = $s; $f.$r = $r; return $f;
  66119. }; })(errCh, req, respCh, xhr), funcType$1);
  66120. xhr[0].onabort = $externalize((function(errCh, req, respCh, xhr) { return function $b(e) {
  66121. var $ptr, e, $s, $r;
  66122. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; e = $f.e; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  66123. $r = $send(errCh[0], errors.New("net/http: request canceled")); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  66124. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: $b }; } $f.$ptr = $ptr; $f.e = e; $f.$s = $s; $f.$r = $r; return $f;
  66125. }; })(errCh, req, respCh, xhr), funcType$1);
  66126. xhr[0].open($externalize(req[0].Method, $String), $externalize(req[0].URL.String(), $String));
  66127. _ref = req[0].Header;
  66128. _i = 0;
  66129. _keys = $keys(_ref);
  66130. while (true) {
  66131. if (!(_i < _keys.length)) { break; }
  66132. _entry = _ref[_keys[_i]];
  66133. if (_entry === undefined) {
  66134. _i++;
  66135. continue;
  66136. }
  66137. key = _entry.k;
  66138. values = _entry.v;
  66139. _ref$1 = values;
  66140. _i$1 = 0;
  66141. while (true) {
  66142. if (!(_i$1 < _ref$1.$length)) { break; }
  66143. value = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? $throwRuntimeError("index out of range") : _ref$1.$array[_ref$1.$offset + _i$1]);
  66144. xhr[0].setRequestHeader($externalize(key, $String), $externalize(value, $String));
  66145. _i$1++;
  66146. }
  66147. _i++;
  66148. }
  66149. body$1 = sliceType$2.nil;
  66150. /* */ if (!($interfaceIsEqual(req[0].Body, $ifaceNil))) { $s = 1; continue; }
  66151. /* */ $s = 2; continue;
  66152. /* if (!($interfaceIsEqual(req[0].Body, $ifaceNil))) { */ case 1:
  66153. err = $ifaceNil;
  66154. _r = ioutil.ReadAll(req[0].Body); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  66155. _tuple = _r; body$1 = _tuple[0]; err = _tuple[1];
  66156. if (!($interfaceIsEqual(err, $ifaceNil))) {
  66157. return [ptrType.nil, err];
  66158. }
  66159. /* } */ case 2:
  66160. xhr[0].send($externalize(body$1, sliceType$2));
  66161. _r$1 = $select([[respCh[0]], [errCh[0]]]); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  66162. _selection = _r$1;
  66163. if (_selection[0] === 0) {
  66164. resp = _selection[1][0];
  66165. return [resp, $ifaceNil];
  66166. } else if (_selection[0] === 1) {
  66167. err$1 = _selection[1][0];
  66168. return [ptrType.nil, err$1];
  66169. }
  66170. /* */ $s = -1; case -1: } return; } } catch(err) { $err = err; $s = -1; return [ptrType.nil, $ifaceNil]; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: XHRTransport.ptr.prototype.RoundTrip }; } $f.$ptr = $ptr; $f._arg = _arg; $f._arg$1 = _arg$1; $f._entry = _entry; $f._i = _i; $f._i$1 = _i$1; $f._key$5 = _key$5; $f._key$6 = _key$6; $f._keys = _keys; $f._map$5 = _map$5; $f._r = _r; $f._r$1 = _r$1; $f._ref = _ref; $f._ref$1 = _ref$1; $f._selection = _selection; $f._tuple = _tuple; $f.body$1 = body$1; $f.err = err; $f.err$1 = err$1; $f.errCh = errCh; $f.key = key; $f.req = req; $f.resp = resp; $f.respCh = respCh; $f.t = t; $f.value = value; $f.values = values; $f.xhr = xhr; $f.xhrConstructor = xhrConstructor; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
  66171. };
  66172. XHRTransport.prototype.RoundTrip = function(req) { return this.$val.RoundTrip(req); };
  66173. XHRTransport.ptr.prototype.CancelRequest = function(req) {
  66174. var $ptr, _entry, _tuple, ok, req, t, xhr;
  66175. t = this;
  66176. _tuple = (_entry = t.inflight[req.$key()], _entry !== undefined ? [_entry.v, true] : [null, false]); xhr = _tuple[0]; ok = _tuple[1];
  66177. if (ok) {
  66178. xhr.abort();
  66179. }
  66180. };
  66181. XHRTransport.prototype.CancelRequest = function(req) { return this.$val.CancelRequest(req); };
  66182. refererForURL = function(lastReq, newReq) {
  66183. var $ptr, auth, lastReq, newReq, referer;
  66184. if (lastReq.Scheme === "https" && newReq.Scheme === "http") {
  66185. return "";
  66186. }
  66187. referer = lastReq.String();
  66188. if (!(lastReq.User === ptrType$4.nil)) {
  66189. auth = lastReq.User.String() + "@";
  66190. referer = strings.Replace(referer, auth, "", 1);
  66191. }
  66192. return referer;
  66193. };
  66194. Client.ptr.prototype.send = function(req) {
  66195. var $ptr, _i, _r, _r$1, _r$2, _ref, _tuple, c, cookie, err, rc, req, resp, $s, $r;
  66196. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _i = $f._i; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _ref = $f._ref; _tuple = $f._tuple; c = $f.c; cookie = $f.cookie; err = $f.err; rc = $f.rc; req = $f.req; resp = $f.resp; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  66197. c = this;
  66198. /* */ if (!($interfaceIsEqual(c.Jar, $ifaceNil))) { $s = 1; continue; }
  66199. /* */ $s = 2; continue;
  66200. /* if (!($interfaceIsEqual(c.Jar, $ifaceNil))) { */ case 1:
  66201. _r = c.Jar.Cookies(req.URL); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  66202. _ref = _r;
  66203. _i = 0;
  66204. /* while (true) { */ case 4:
  66205. /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 5; continue; }
  66206. cookie = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]);
  66207. $r = req.AddCookie(cookie); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  66208. _i++;
  66209. /* } */ $s = 4; continue; case 5:
  66210. /* } */ case 2:
  66211. _r$1 = send(req, c.transport()); /* */ $s = 7; case 7: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  66212. _tuple = _r$1; resp = _tuple[0]; err = _tuple[1];
  66213. if (!($interfaceIsEqual(err, $ifaceNil))) {
  66214. return [ptrType.nil, err];
  66215. }
  66216. /* */ if (!($interfaceIsEqual(c.Jar, $ifaceNil))) { $s = 8; continue; }
  66217. /* */ $s = 9; continue;
  66218. /* if (!($interfaceIsEqual(c.Jar, $ifaceNil))) { */ case 8:
  66219. _r$2 = resp.Cookies(); /* */ $s = 10; case 10: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  66220. rc = _r$2;
  66221. /* */ if (rc.$length > 0) { $s = 11; continue; }
  66222. /* */ $s = 12; continue;
  66223. /* if (rc.$length > 0) { */ case 11:
  66224. $r = c.Jar.SetCookies(req.URL, rc); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  66225. /* } */ case 12:
  66226. /* } */ case 9:
  66227. return [resp, err];
  66228. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Client.ptr.prototype.send }; } $f.$ptr = $ptr; $f._i = _i; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._ref = _ref; $f._tuple = _tuple; $f.c = c; $f.cookie = cookie; $f.err = err; $f.rc = rc; $f.req = req; $f.resp = resp; $f.$s = $s; $f.$r = $r; return $f;
  66229. };
  66230. Client.prototype.send = function(req) { return this.$val.send(req); };
  66231. Client.ptr.prototype.Do = function(req) {
  66232. var $ptr, _r, _r$1, _r$2, _tuple, _tuple$1, _tuple$2, c, err, req, resp, $s, $r;
  66233. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; c = $f.c; err = $f.err; req = $f.req; resp = $f.resp; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  66234. resp = ptrType.nil;
  66235. err = $ifaceNil;
  66236. c = this;
  66237. /* */ if (req.Method === "GET" || req.Method === "HEAD") { $s = 1; continue; }
  66238. /* */ $s = 2; continue;
  66239. /* if (req.Method === "GET" || req.Method === "HEAD") { */ case 1:
  66240. _r = c.doFollowingRedirects(req, shouldRedirectGet); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  66241. _tuple = _r; resp = _tuple[0]; err = _tuple[1];
  66242. return [resp, err];
  66243. /* } */ case 2:
  66244. /* */ if (req.Method === "POST" || req.Method === "PUT") { $s = 4; continue; }
  66245. /* */ $s = 5; continue;
  66246. /* if (req.Method === "POST" || req.Method === "PUT") { */ case 4:
  66247. _r$1 = c.doFollowingRedirects(req, shouldRedirectPost); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  66248. _tuple$1 = _r$1; resp = _tuple$1[0]; err = _tuple$1[1];
  66249. return [resp, err];
  66250. /* } */ case 5:
  66251. _r$2 = c.send(req); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  66252. _tuple$2 = _r$2; resp = _tuple$2[0]; err = _tuple$2[1];
  66253. return [resp, err];
  66254. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Client.ptr.prototype.Do }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f.c = c; $f.err = err; $f.req = req; $f.resp = resp; $f.$s = $s; $f.$r = $r; return $f;
  66255. };
  66256. Client.prototype.Do = function(req) { return this.$val.Do(req); };
  66257. Client.ptr.prototype.transport = function() {
  66258. var $ptr, c;
  66259. c = this;
  66260. if (!($interfaceIsEqual(c.Transport, $ifaceNil))) {
  66261. return c.Transport;
  66262. }
  66263. return $pkg.DefaultTransport;
  66264. };
  66265. Client.prototype.transport = function() { return this.$val.transport(); };
  66266. send = function(req, t) {
  66267. var $ptr, _r, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, err, password, req, resp, t, u, username, $s, $r;
  66268. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tmp$6 = $f._tmp$6; _tmp$7 = $f._tmp$7; _tmp$8 = $f._tmp$8; _tmp$9 = $f._tmp$9; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; err = $f.err; password = $f.password; req = $f.req; resp = $f.resp; t = $f.t; u = $f.u; username = $f.username; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  66269. resp = ptrType.nil;
  66270. err = $ifaceNil;
  66271. /* */ if ($interfaceIsEqual(t, $ifaceNil)) { $s = 1; continue; }
  66272. /* */ $s = 2; continue;
  66273. /* if ($interfaceIsEqual(t, $ifaceNil)) { */ case 1:
  66274. $r = req.closeBody(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  66275. _tmp = ptrType.nil; _tmp$1 = errors.New("http: no Client.Transport or DefaultTransport"); resp = _tmp; err = _tmp$1;
  66276. return [resp, err];
  66277. /* } */ case 2:
  66278. /* */ if (req.URL === ptrType$5.nil) { $s = 4; continue; }
  66279. /* */ $s = 5; continue;
  66280. /* if (req.URL === ptrType$5.nil) { */ case 4:
  66281. $r = req.closeBody(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  66282. _tmp$2 = ptrType.nil; _tmp$3 = errors.New("http: nil Request.URL"); resp = _tmp$2; err = _tmp$3;
  66283. return [resp, err];
  66284. /* } */ case 5:
  66285. /* */ if (!(req.RequestURI === "")) { $s = 7; continue; }
  66286. /* */ $s = 8; continue;
  66287. /* if (!(req.RequestURI === "")) { */ case 7:
  66288. $r = req.closeBody(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  66289. _tmp$4 = ptrType.nil; _tmp$5 = errors.New("http: Request.RequestURI can't be set in client requests."); resp = _tmp$4; err = _tmp$5;
  66290. return [resp, err];
  66291. /* } */ case 8:
  66292. if (req.Header === false) {
  66293. req.Header = new $Map();
  66294. }
  66295. u = req.URL.User;
  66296. if (!(u === ptrType$4.nil)) {
  66297. username = u.Username();
  66298. _tuple = u.Password(); password = _tuple[0];
  66299. new Header(req.Header).Set("Authorization", "Basic " + basicAuth(username, password));
  66300. }
  66301. _r = t.RoundTrip(req); /* */ $s = 10; case 10: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  66302. _tuple$1 = _r; resp = _tuple$1[0]; err = _tuple$1[1];
  66303. /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 11; continue; }
  66304. /* */ $s = 12; continue;
  66305. /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 11:
  66306. /* */ if (!(resp === ptrType.nil)) { $s = 13; continue; }
  66307. /* */ $s = 14; continue;
  66308. /* if (!(resp === ptrType.nil)) { */ case 13:
  66309. $r = log.Printf("RoundTripper returned a response & error; ignoring response", new sliceType$1([])); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  66310. /* } */ case 14:
  66311. _tmp$6 = ptrType.nil; _tmp$7 = err; resp = _tmp$6; err = _tmp$7;
  66312. return [resp, err];
  66313. /* } */ case 12:
  66314. _tmp$8 = resp; _tmp$9 = $ifaceNil; resp = _tmp$8; err = _tmp$9;
  66315. return [resp, err];
  66316. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: send }; } $f.$ptr = $ptr; $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tmp$6 = _tmp$6; $f._tmp$7 = _tmp$7; $f._tmp$8 = _tmp$8; $f._tmp$9 = _tmp$9; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.err = err; $f.password = password; $f.req = req; $f.resp = resp; $f.t = t; $f.u = u; $f.username = username; $f.$s = $s; $f.$r = $r; return $f;
  66317. };
  66318. basicAuth = function(username, password) {
  66319. var $ptr, auth, password, username;
  66320. auth = username + ":" + password;
  66321. return base64.StdEncoding.EncodeToString(new sliceType$2($stringToBytes(auth)));
  66322. };
  66323. shouldRedirectGet = function(statusCode) {
  66324. var $ptr, _ref, statusCode;
  66325. _ref = statusCode;
  66326. if (_ref === 301 || _ref === 302 || _ref === 303 || _ref === 307) {
  66327. return true;
  66328. }
  66329. return false;
  66330. };
  66331. shouldRedirectPost = function(statusCode) {
  66332. var $ptr, _ref, statusCode;
  66333. _ref = statusCode;
  66334. if (_ref === 302 || _ref === 303) {
  66335. return true;
  66336. }
  66337. return false;
  66338. };
  66339. Get = function(url$1) {
  66340. var $ptr, _r, _tuple, err, resp, url$1, $s, $r;
  66341. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tuple = $f._tuple; err = $f.err; resp = $f.resp; url$1 = $f.url$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  66342. resp = ptrType.nil;
  66343. err = $ifaceNil;
  66344. _r = $pkg.DefaultClient.Get(url$1); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  66345. _tuple = _r; resp = _tuple[0]; err = _tuple[1];
  66346. return [resp, err];
  66347. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Get }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple = _tuple; $f.err = err; $f.resp = resp; $f.url$1 = url$1; $f.$s = $s; $f.$r = $r; return $f;
  66348. };
  66349. $pkg.Get = Get;
  66350. Client.ptr.prototype.Get = function(url$1) {
  66351. var $ptr, _r, _r$1, _tmp, _tmp$1, _tuple, _tuple$1, c, err, req, resp, url$1, $s, $r;
  66352. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; c = $f.c; err = $f.err; req = $f.req; resp = $f.resp; url$1 = $f.url$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  66353. resp = ptrType.nil;
  66354. err = $ifaceNil;
  66355. c = this;
  66356. _r = NewRequest("GET", url$1, $ifaceNil); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  66357. _tuple = _r; req = _tuple[0]; err = _tuple[1];
  66358. if (!($interfaceIsEqual(err, $ifaceNil))) {
  66359. _tmp = ptrType.nil; _tmp$1 = err; resp = _tmp; err = _tmp$1;
  66360. return [resp, err];
  66361. }
  66362. _r$1 = c.doFollowingRedirects(req, shouldRedirectGet); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  66363. _tuple$1 = _r$1; resp = _tuple$1[0]; err = _tuple$1[1];
  66364. return [resp, err];
  66365. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Client.ptr.prototype.Get }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.c = c; $f.err = err; $f.req = req; $f.resp = resp; $f.url$1 = url$1; $f.$s = $s; $f.$r = $r; return $f;
  66366. };
  66367. Client.prototype.Get = function(url$1) { return this.$val.Get(url$1); };
  66368. Client.ptr.prototype.doFollowingRedirects = function(ireq, shouldRedirect) {
  66369. var $ptr, _r, _r$1, _r$10, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, _tuple$2, base, c, err, ireq, lastReq, method, nreq, ok, redirect, redirectChecker, redirectFailed, ref, req, reqmu, resp, shouldRedirect, timer, tr, urlErr, urlStr, via, x, x$1, x$2, x$3, $s, $r;
  66370. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$10 = $f._r$10; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _r$9 = $f._r$9; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tmp$6 = $f._tmp$6; _tmp$7 = $f._tmp$7; _tmp$8 = $f._tmp$8; _tmp$9 = $f._tmp$9; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; base = $f.base; c = $f.c; err = $f.err; ireq = $f.ireq; lastReq = $f.lastReq; method = $f.method; nreq = $f.nreq; ok = $f.ok; redirect = $f.redirect; redirectChecker = $f.redirectChecker; redirectFailed = $f.redirectFailed; ref = $f.ref; req = $f.req; reqmu = $f.reqmu; resp = $f.resp; shouldRedirect = $f.shouldRedirect; timer = $f.timer; tr = $f.tr; urlErr = $f.urlErr; urlStr = $f.urlStr; via = $f.via; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; x$3 = $f.x$3; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  66371. req = [req];
  66372. reqmu = [reqmu];
  66373. tr = [tr];
  66374. resp = ptrType.nil;
  66375. err = $ifaceNil;
  66376. c = this;
  66377. base = ptrType$5.nil;
  66378. redirectChecker = c.CheckRedirect;
  66379. if (redirectChecker === $throwNilPointerError) {
  66380. redirectChecker = defaultCheckRedirect;
  66381. }
  66382. via = sliceType$5.nil;
  66383. /* */ if (ireq.URL === ptrType$5.nil) { $s = 1; continue; }
  66384. /* */ $s = 2; continue;
  66385. /* if (ireq.URL === ptrType$5.nil) { */ case 1:
  66386. $r = ireq.closeBody(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  66387. _tmp = ptrType.nil; _tmp$1 = errors.New("http: nil Request.URL"); resp = _tmp; err = _tmp$1;
  66388. return [resp, err];
  66389. /* } */ case 2:
  66390. reqmu[0] = $clone(new sync.Mutex.ptr(), sync.Mutex);
  66391. req[0] = ireq;
  66392. timer = ptrType$6.nil;
  66393. /* */ if ((x = c.Timeout, (x.$high > 0 || (x.$high === 0 && x.$low > 0)))) { $s = 4; continue; }
  66394. /* */ $s = 5; continue;
  66395. /* if ((x = c.Timeout, (x.$high > 0 || (x.$high === 0 && x.$low > 0)))) { */ case 4:
  66396. _tuple = $assertType(c.transport(), canceler, true); tr[0] = _tuple[0]; ok = _tuple[1];
  66397. /* */ if (!ok) { $s = 6; continue; }
  66398. /* */ $s = 7; continue;
  66399. /* if (!ok) { */ case 6:
  66400. _r = fmt.Errorf("net/http: Client Transport of type %T doesn't support CancelRequest; Timeout not supported", new sliceType$1([c.transport()])); /* */ $s = 8; case 8: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  66401. _tmp$2 = ptrType.nil; _tmp$3 = _r; resp = _tmp$2; err = _tmp$3;
  66402. return [resp, err];
  66403. /* } */ case 7:
  66404. timer = time.AfterFunc(c.Timeout, (function(req, reqmu, tr) { return function $b() {
  66405. var $ptr, $s, $deferred, $r;
  66406. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
  66407. $r = reqmu[0].Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  66408. $deferred.push([$methodVal(reqmu[0], "Unlock"), []]);
  66409. $r = tr[0].CancelRequest(req[0]); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  66410. /* */ $s = -1; case -1: } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: $b }; } $f.$ptr = $ptr; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
  66411. }; })(req, reqmu, tr));
  66412. /* } */ case 5:
  66413. urlStr = "";
  66414. redirectFailed = false;
  66415. redirect = 0;
  66416. /* while (true) { */ case 9:
  66417. /* */ if (!((redirect === 0))) { $s = 11; continue; }
  66418. /* */ $s = 12; continue;
  66419. /* if (!((redirect === 0))) { */ case 11:
  66420. nreq = new Request.ptr();
  66421. nreq.Method = ireq.Method;
  66422. if (ireq.Method === "POST" || ireq.Method === "PUT") {
  66423. nreq.Method = "GET";
  66424. }
  66425. nreq.Header = new $Map();
  66426. _r$1 = base.Parse(urlStr); /* */ $s = 13; case 13: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  66427. _tuple$1 = _r$1; nreq.URL = _tuple$1[0]; err = _tuple$1[1];
  66428. if (!($interfaceIsEqual(err, $ifaceNil))) {
  66429. /* break; */ $s = 10; continue;
  66430. }
  66431. /* */ if (via.$length > 0) { $s = 14; continue; }
  66432. /* */ $s = 15; continue;
  66433. /* if (via.$length > 0) { */ case 14:
  66434. lastReq = (x$1 = via.$length - 1 >> 0, ((x$1 < 0 || x$1 >= via.$length) ? $throwRuntimeError("index out of range") : via.$array[via.$offset + x$1]));
  66435. ref = refererForURL(lastReq.URL, nreq.URL);
  66436. if (!(ref === "")) {
  66437. new Header(nreq.Header).Set("Referer", ref);
  66438. }
  66439. _r$2 = redirectChecker(nreq, via); /* */ $s = 16; case 16: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  66440. err = _r$2;
  66441. if (!($interfaceIsEqual(err, $ifaceNil))) {
  66442. redirectFailed = true;
  66443. /* break; */ $s = 10; continue;
  66444. }
  66445. /* } */ case 15:
  66446. $r = reqmu[0].Lock(); /* */ $s = 17; case 17: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  66447. req[0] = nreq;
  66448. $r = reqmu[0].Unlock(); /* */ $s = 18; case 18: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  66449. /* } */ case 12:
  66450. urlStr = req[0].URL.String();
  66451. _r$3 = c.send(req[0]); /* */ $s = 19; case 19: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  66452. _tuple$2 = _r$3; resp = _tuple$2[0]; err = _tuple$2[1];
  66453. /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 20; continue; }
  66454. /* */ $s = 21; continue;
  66455. /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 20:
  66456. /* break; */ $s = 10; continue;
  66457. /* } */ case 21:
  66458. _r$4 = shouldRedirect(resp.StatusCode); /* */ $s = 24; case 24: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
  66459. /* */ if (_r$4) { $s = 22; continue; }
  66460. /* */ $s = 23; continue;
  66461. /* if (_r$4) { */ case 22:
  66462. /* */ if ((x$2 = resp.ContentLength, (x$2.$high === -1 && x$2.$low === 4294967295)) || (x$3 = resp.ContentLength, (x$3.$high < 0 || (x$3.$high === 0 && x$3.$low <= 2048)))) { $s = 25; continue; }
  66463. /* */ $s = 26; continue;
  66464. /* if ((x$2 = resp.ContentLength, (x$2.$high === -1 && x$2.$low === 4294967295)) || (x$3 = resp.ContentLength, (x$3.$high < 0 || (x$3.$high === 0 && x$3.$low <= 2048)))) { */ case 25:
  66465. _r$5 = io.CopyN(ioutil.Discard, resp.Body, new $Int64(0, 2048)); /* */ $s = 27; case 27: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
  66466. _r$5;
  66467. /* } */ case 26:
  66468. _r$6 = resp.Body.Close(); /* */ $s = 28; case 28: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
  66469. _r$6;
  66470. urlStr = new Header(resp.Header).Get("Location");
  66471. /* */ if (urlStr === "") { $s = 29; continue; }
  66472. /* */ $s = 30; continue;
  66473. /* if (urlStr === "") { */ case 29:
  66474. _r$7 = fmt.Sprintf("%d response missing Location header", new sliceType$1([new $Int(resp.StatusCode)])); /* */ $s = 31; case 31: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
  66475. _r$8 = errors.New(_r$7); /* */ $s = 32; case 32: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
  66476. err = _r$8;
  66477. /* break; */ $s = 10; continue;
  66478. /* } */ case 30:
  66479. base = req[0].URL;
  66480. via = $append(via, req[0]);
  66481. redirect = redirect + (1) >> 0;
  66482. /* continue; */ $s = 9; continue;
  66483. /* } */ case 23:
  66484. if (!(timer === ptrType$6.nil)) {
  66485. resp.Body = new cancelTimerBody.ptr(timer, resp.Body);
  66486. }
  66487. _tmp$4 = resp; _tmp$5 = $ifaceNil; resp = _tmp$4; err = _tmp$5;
  66488. return [resp, err];
  66489. /* } */ $s = 9; continue; case 10:
  66490. method = ireq.Method;
  66491. _r$9 = strings.ToLower(method.substring(1)); /* */ $s = 33; case 33: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
  66492. urlErr = new url.Error.ptr(method.substring(0, 1) + _r$9, urlStr, err);
  66493. if (redirectFailed) {
  66494. _tmp$6 = resp; _tmp$7 = urlErr; resp = _tmp$6; err = _tmp$7;
  66495. return [resp, err];
  66496. }
  66497. /* */ if (!(resp === ptrType.nil)) { $s = 34; continue; }
  66498. /* */ $s = 35; continue;
  66499. /* if (!(resp === ptrType.nil)) { */ case 34:
  66500. _r$10 = resp.Body.Close(); /* */ $s = 36; case 36: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
  66501. _r$10;
  66502. /* } */ case 35:
  66503. _tmp$8 = ptrType.nil; _tmp$9 = urlErr; resp = _tmp$8; err = _tmp$9;
  66504. return [resp, err];
  66505. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Client.ptr.prototype.doFollowingRedirects }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$10 = _r$10; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._r$9 = _r$9; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tmp$6 = _tmp$6; $f._tmp$7 = _tmp$7; $f._tmp$8 = _tmp$8; $f._tmp$9 = _tmp$9; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f.base = base; $f.c = c; $f.err = err; $f.ireq = ireq; $f.lastReq = lastReq; $f.method = method; $f.nreq = nreq; $f.ok = ok; $f.redirect = redirect; $f.redirectChecker = redirectChecker; $f.redirectFailed = redirectFailed; $f.ref = ref; $f.req = req; $f.reqmu = reqmu; $f.resp = resp; $f.shouldRedirect = shouldRedirect; $f.timer = timer; $f.tr = tr; $f.urlErr = urlErr; $f.urlStr = urlStr; $f.via = via; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.x$3 = x$3; $f.$s = $s; $f.$r = $r; return $f;
  66506. };
  66507. Client.prototype.doFollowingRedirects = function(ireq, shouldRedirect) { return this.$val.doFollowingRedirects(ireq, shouldRedirect); };
  66508. defaultCheckRedirect = function(req, via) {
  66509. var $ptr, req, via;
  66510. if (via.$length >= 10) {
  66511. return errors.New("stopped after 10 redirects");
  66512. }
  66513. return $ifaceNil;
  66514. };
  66515. Client.ptr.prototype.Post = function(url$1, bodyType, body$1) {
  66516. var $ptr, _r, _r$1, _tmp, _tmp$1, _tuple, _tuple$1, body$1, bodyType, c, err, req, resp, url$1, $s, $r;
  66517. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; body$1 = $f.body$1; bodyType = $f.bodyType; c = $f.c; err = $f.err; req = $f.req; resp = $f.resp; url$1 = $f.url$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  66518. resp = ptrType.nil;
  66519. err = $ifaceNil;
  66520. c = this;
  66521. _r = NewRequest("POST", url$1, body$1); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  66522. _tuple = _r; req = _tuple[0]; err = _tuple[1];
  66523. if (!($interfaceIsEqual(err, $ifaceNil))) {
  66524. _tmp = ptrType.nil; _tmp$1 = err; resp = _tmp; err = _tmp$1;
  66525. return [resp, err];
  66526. }
  66527. new Header(req.Header).Set("Content-Type", bodyType);
  66528. _r$1 = c.doFollowingRedirects(req, shouldRedirectPost); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  66529. _tuple$1 = _r$1; resp = _tuple$1[0]; err = _tuple$1[1];
  66530. return [resp, err];
  66531. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Client.ptr.prototype.Post }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.body$1 = body$1; $f.bodyType = bodyType; $f.c = c; $f.err = err; $f.req = req; $f.resp = resp; $f.url$1 = url$1; $f.$s = $s; $f.$r = $r; return $f;
  66532. };
  66533. Client.prototype.Post = function(url$1, bodyType, body$1) { return this.$val.Post(url$1, bodyType, body$1); };
  66534. Client.ptr.prototype.PostForm = function(url$1, data) {
  66535. var $ptr, _arg, _arg$1, _r, _r$1, _r$2, _tuple, c, data, err, resp, url$1, $s, $r;
  66536. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _arg = $f._arg; _arg$1 = $f._arg$1; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _tuple = $f._tuple; c = $f.c; data = $f.data; err = $f.err; resp = $f.resp; url$1 = $f.url$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  66537. resp = ptrType.nil;
  66538. err = $ifaceNil;
  66539. c = this;
  66540. _arg = url$1;
  66541. _r = new url.Values(data).Encode(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  66542. _r$1 = strings.NewReader(_r); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  66543. _arg$1 = _r$1;
  66544. _r$2 = c.Post(_arg, "application/x-www-form-urlencoded", _arg$1); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  66545. _tuple = _r$2; resp = _tuple[0]; err = _tuple[1];
  66546. return [resp, err];
  66547. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Client.ptr.prototype.PostForm }; } $f.$ptr = $ptr; $f._arg = _arg; $f._arg$1 = _arg$1; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._tuple = _tuple; $f.c = c; $f.data = data; $f.err = err; $f.resp = resp; $f.url$1 = url$1; $f.$s = $s; $f.$r = $r; return $f;
  66548. };
  66549. Client.prototype.PostForm = function(url$1, data) { return this.$val.PostForm(url$1, data); };
  66550. Client.ptr.prototype.Head = function(url$1) {
  66551. var $ptr, _r, _r$1, _tmp, _tmp$1, _tuple, _tuple$1, c, err, req, resp, url$1, $s, $r;
  66552. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; c = $f.c; err = $f.err; req = $f.req; resp = $f.resp; url$1 = $f.url$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  66553. resp = ptrType.nil;
  66554. err = $ifaceNil;
  66555. c = this;
  66556. _r = NewRequest("HEAD", url$1, $ifaceNil); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  66557. _tuple = _r; req = _tuple[0]; err = _tuple[1];
  66558. if (!($interfaceIsEqual(err, $ifaceNil))) {
  66559. _tmp = ptrType.nil; _tmp$1 = err; resp = _tmp; err = _tmp$1;
  66560. return [resp, err];
  66561. }
  66562. _r$1 = c.doFollowingRedirects(req, shouldRedirectGet); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  66563. _tuple$1 = _r$1; resp = _tuple$1[0]; err = _tuple$1[1];
  66564. return [resp, err];
  66565. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Client.ptr.prototype.Head }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.c = c; $f.err = err; $f.req = req; $f.resp = resp; $f.url$1 = url$1; $f.$s = $s; $f.$r = $r; return $f;
  66566. };
  66567. Client.prototype.Head = function(url$1) { return this.$val.Head(url$1); };
  66568. cancelTimerBody.ptr.prototype.Read = function(p) {
  66569. var $ptr, _r, _tuple, b, err, n, p, $s, $r;
  66570. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tuple = $f._tuple; b = $f.b; err = $f.err; n = $f.n; p = $f.p; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  66571. n = 0;
  66572. err = $ifaceNil;
  66573. b = this;
  66574. _r = b.rc.Read(p); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  66575. _tuple = _r; n = _tuple[0]; err = _tuple[1];
  66576. if ($interfaceIsEqual(err, io.EOF)) {
  66577. b.t.Stop();
  66578. }
  66579. return [n, err];
  66580. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: cancelTimerBody.ptr.prototype.Read }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple = _tuple; $f.b = b; $f.err = err; $f.n = n; $f.p = p; $f.$s = $s; $f.$r = $r; return $f;
  66581. };
  66582. cancelTimerBody.prototype.Read = function(p) { return this.$val.Read(p); };
  66583. cancelTimerBody.ptr.prototype.Close = function() {
  66584. var $ptr, _r, b, err, $s, $r;
  66585. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; b = $f.b; err = $f.err; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  66586. b = this;
  66587. _r = b.rc.Close(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  66588. err = _r;
  66589. b.t.Stop();
  66590. return err;
  66591. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: cancelTimerBody.ptr.prototype.Close }; } $f.$ptr = $ptr; $f._r = _r; $f.b = b; $f.err = err; $f.$s = $s; $f.$r = $r; return $f;
  66592. };
  66593. cancelTimerBody.prototype.Close = function() { return this.$val.Close(); };
  66594. readSetCookies = function(h) {
  66595. var $ptr, _entry, _i, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _ref, _ref$1, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, attr, c, cookies, err, err$1, exptime, h, i, j, j$1, line, lowerAttr, name, parts, secs, success, val, value, $s, $r;
  66596. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _entry = $f._entry; _i = $f._i; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _ref = $f._ref; _ref$1 = $f._ref$1; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; _tuple$4 = $f._tuple$4; attr = $f.attr; c = $f.c; cookies = $f.cookies; err = $f.err; err$1 = $f.err$1; exptime = $f.exptime; h = $f.h; i = $f.i; j = $f.j; j$1 = $f.j$1; line = $f.line; lowerAttr = $f.lowerAttr; name = $f.name; parts = $f.parts; secs = $f.secs; success = $f.success; val = $f.val; value = $f.value; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  66597. cookies = new sliceType$6([]);
  66598. _ref = (_entry = h["Set-Cookie"], _entry !== undefined ? _entry.v : sliceType.nil);
  66599. _i = 0;
  66600. /* while (true) { */ case 1:
  66601. /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; }
  66602. line = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]);
  66603. _r = strings.TrimSpace(line); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  66604. _r$1 = strings.Split(_r, ";"); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  66605. parts = _r$1;
  66606. /* */ if ((parts.$length === 1) && (0 >= parts.$length ? $throwRuntimeError("index out of range") : parts.$array[parts.$offset + 0]) === "") { $s = 5; continue; }
  66607. /* */ $s = 6; continue;
  66608. /* if ((parts.$length === 1) && (0 >= parts.$length ? $throwRuntimeError("index out of range") : parts.$array[parts.$offset + 0]) === "") { */ case 5:
  66609. _i++;
  66610. /* continue; */ $s = 1; continue;
  66611. /* } */ case 6:
  66612. _r$2 = strings.TrimSpace((0 >= parts.$length ? $throwRuntimeError("index out of range") : parts.$array[parts.$offset + 0])); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  66613. (0 >= parts.$length ? $throwRuntimeError("index out of range") : parts.$array[parts.$offset + 0] = _r$2);
  66614. j = strings.Index((0 >= parts.$length ? $throwRuntimeError("index out of range") : parts.$array[parts.$offset + 0]), "=");
  66615. /* */ if (j < 0) { $s = 8; continue; }
  66616. /* */ $s = 9; continue;
  66617. /* if (j < 0) { */ case 8:
  66618. _i++;
  66619. /* continue; */ $s = 1; continue;
  66620. /* } */ case 9:
  66621. _tmp = (0 >= parts.$length ? $throwRuntimeError("index out of range") : parts.$array[parts.$offset + 0]).substring(0, j); _tmp$1 = (0 >= parts.$length ? $throwRuntimeError("index out of range") : parts.$array[parts.$offset + 0]).substring((j + 1 >> 0)); name = _tmp; value = _tmp$1;
  66622. _r$3 = isCookieNameValid(name); /* */ $s = 12; case 12: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  66623. /* */ if (!_r$3) { $s = 10; continue; }
  66624. /* */ $s = 11; continue;
  66625. /* if (!_r$3) { */ case 10:
  66626. _i++;
  66627. /* continue; */ $s = 1; continue;
  66628. /* } */ case 11:
  66629. _tuple = parseCookieValue(value, true); value = _tuple[0]; success = _tuple[1];
  66630. /* */ if (!success) { $s = 13; continue; }
  66631. /* */ $s = 14; continue;
  66632. /* if (!success) { */ case 13:
  66633. _i++;
  66634. /* continue; */ $s = 1; continue;
  66635. /* } */ case 14:
  66636. c = new Cookie.ptr(name, value, "", "", new time.Time.ptr(), "", 0, false, false, line, sliceType.nil);
  66637. i = 1;
  66638. /* while (true) { */ case 15:
  66639. /* if (!(i < parts.$length)) { break; } */ if(!(i < parts.$length)) { $s = 16; continue; }
  66640. _r$4 = strings.TrimSpace(((i < 0 || i >= parts.$length) ? $throwRuntimeError("index out of range") : parts.$array[parts.$offset + i])); /* */ $s = 17; case 17: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
  66641. ((i < 0 || i >= parts.$length) ? $throwRuntimeError("index out of range") : parts.$array[parts.$offset + i] = _r$4);
  66642. /* */ if (((i < 0 || i >= parts.$length) ? $throwRuntimeError("index out of range") : parts.$array[parts.$offset + i]).length === 0) { $s = 18; continue; }
  66643. /* */ $s = 19; continue;
  66644. /* if (((i < 0 || i >= parts.$length) ? $throwRuntimeError("index out of range") : parts.$array[parts.$offset + i]).length === 0) { */ case 18:
  66645. i = i + (1) >> 0;
  66646. /* continue; */ $s = 15; continue;
  66647. /* } */ case 19:
  66648. _tmp$2 = ((i < 0 || i >= parts.$length) ? $throwRuntimeError("index out of range") : parts.$array[parts.$offset + i]); _tmp$3 = ""; attr = _tmp$2; val = _tmp$3;
  66649. j$1 = strings.Index(attr, "=");
  66650. if (j$1 >= 0) {
  66651. _tmp$4 = attr.substring(0, j$1); _tmp$5 = attr.substring((j$1 + 1 >> 0)); attr = _tmp$4; val = _tmp$5;
  66652. }
  66653. _r$5 = strings.ToLower(attr); /* */ $s = 20; case 20: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
  66654. lowerAttr = _r$5;
  66655. _tuple$1 = parseCookieValue(val, false); val = _tuple$1[0]; success = _tuple$1[1];
  66656. /* */ if (!success) { $s = 21; continue; }
  66657. /* */ $s = 22; continue;
  66658. /* if (!success) { */ case 21:
  66659. c.Unparsed = $append(c.Unparsed, ((i < 0 || i >= parts.$length) ? $throwRuntimeError("index out of range") : parts.$array[parts.$offset + i]));
  66660. i = i + (1) >> 0;
  66661. /* continue; */ $s = 15; continue;
  66662. /* } */ case 22:
  66663. _ref$1 = lowerAttr;
  66664. /* */ if (_ref$1 === "secure") { $s = 23; continue; }
  66665. /* */ if (_ref$1 === "httponly") { $s = 24; continue; }
  66666. /* */ if (_ref$1 === "domain") { $s = 25; continue; }
  66667. /* */ if (_ref$1 === "max-age") { $s = 26; continue; }
  66668. /* */ if (_ref$1 === "expires") { $s = 27; continue; }
  66669. /* */ if (_ref$1 === "path") { $s = 28; continue; }
  66670. /* */ $s = 29; continue;
  66671. /* switch (0) { default: if (_ref$1 === "secure") { */ case 23:
  66672. c.Secure = true;
  66673. i = i + (1) >> 0;
  66674. /* continue; */ $s = 15; continue;
  66675. $s = 29; continue;
  66676. /* } else if (_ref$1 === "httponly") { */ case 24:
  66677. c.HttpOnly = true;
  66678. i = i + (1) >> 0;
  66679. /* continue; */ $s = 15; continue;
  66680. $s = 29; continue;
  66681. /* } else if (_ref$1 === "domain") { */ case 25:
  66682. c.Domain = val;
  66683. i = i + (1) >> 0;
  66684. /* continue; */ $s = 15; continue;
  66685. $s = 29; continue;
  66686. /* } else if (_ref$1 === "max-age") { */ case 26:
  66687. _tuple$2 = strconv.Atoi(val); secs = _tuple$2[0]; err = _tuple$2[1];
  66688. if (!($interfaceIsEqual(err, $ifaceNil)) || !((secs === 0)) && (val.charCodeAt(0) === 48)) {
  66689. /* break; */ $s = 29; continue;
  66690. }
  66691. if (secs <= 0) {
  66692. c.MaxAge = -1;
  66693. } else {
  66694. c.MaxAge = secs;
  66695. }
  66696. i = i + (1) >> 0;
  66697. /* continue; */ $s = 15; continue;
  66698. $s = 29; continue;
  66699. /* } else if (_ref$1 === "expires") { */ case 27:
  66700. c.RawExpires = val;
  66701. _r$6 = time.Parse("Mon, 02 Jan 2006 15:04:05 MST", val); /* */ $s = 30; case 30: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
  66702. _tuple$3 = _r$6; exptime = $clone(_tuple$3[0], time.Time); err$1 = _tuple$3[1];
  66703. /* */ if (!($interfaceIsEqual(err$1, $ifaceNil))) { $s = 31; continue; }
  66704. /* */ $s = 32; continue;
  66705. /* if (!($interfaceIsEqual(err$1, $ifaceNil))) { */ case 31:
  66706. _r$7 = time.Parse("Mon, 02-Jan-2006 15:04:05 MST", val); /* */ $s = 33; case 33: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
  66707. _tuple$4 = _r$7; $copy(exptime, _tuple$4[0], time.Time); err$1 = _tuple$4[1];
  66708. if (!($interfaceIsEqual(err$1, $ifaceNil))) {
  66709. $copy(c.Expires, new time.Time.ptr(new $Int64(0, 0), 0, ptrType$8.nil), time.Time);
  66710. /* break; */ $s = 29; continue;
  66711. }
  66712. /* } */ case 32:
  66713. $copy(c.Expires, exptime.UTC(), time.Time);
  66714. i = i + (1) >> 0;
  66715. /* continue; */ $s = 15; continue;
  66716. $s = 29; continue;
  66717. /* } else if (_ref$1 === "path") { */ case 28:
  66718. c.Path = val;
  66719. i = i + (1) >> 0;
  66720. /* continue; */ $s = 15; continue;
  66721. /* } } */ case 29:
  66722. c.Unparsed = $append(c.Unparsed, ((i < 0 || i >= parts.$length) ? $throwRuntimeError("index out of range") : parts.$array[parts.$offset + i]));
  66723. i = i + (1) >> 0;
  66724. /* } */ $s = 15; continue; case 16:
  66725. cookies = $append(cookies, c);
  66726. _i++;
  66727. /* } */ $s = 1; continue; case 2:
  66728. return cookies;
  66729. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: readSetCookies }; } $f.$ptr = $ptr; $f._entry = _entry; $f._i = _i; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._ref = _ref; $f._ref$1 = _ref$1; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f._tuple$4 = _tuple$4; $f.attr = attr; $f.c = c; $f.cookies = cookies; $f.err = err; $f.err$1 = err$1; $f.exptime = exptime; $f.h = h; $f.i = i; $f.j = j; $f.j$1 = j$1; $f.line = line; $f.lowerAttr = lowerAttr; $f.name = name; $f.parts = parts; $f.secs = secs; $f.success = success; $f.val = val; $f.value = value; $f.$s = $s; $f.$r = $r; return $f;
  66730. };
  66731. Cookie.ptr.prototype.String = function() {
  66732. var $ptr, _arg, _arg$1, _arg$2, _arg$3, _arg$4, _arg$5, _arg$6, _r, _r$1, _r$10, _r$11, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, b, c, d, x, $s, $r;
  66733. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _arg = $f._arg; _arg$1 = $f._arg$1; _arg$2 = $f._arg$2; _arg$3 = $f._arg$3; _arg$4 = $f._arg$4; _arg$5 = $f._arg$5; _arg$6 = $f._arg$6; _r = $f._r; _r$1 = $f._r$1; _r$10 = $f._r$10; _r$11 = $f._r$11; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _r$9 = $f._r$9; b = $f.b; c = $f.c; d = $f.d; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  66734. b = [b];
  66735. c = this;
  66736. b[0] = $clone(new bytes.Buffer.ptr(), bytes.Buffer);
  66737. _arg = b[0];
  66738. _r = sanitizeCookieName(c.Name); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  66739. _arg$1 = new $String(_r);
  66740. _r$1 = sanitizeCookieValue(c.Value); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  66741. _arg$2 = new $String(_r$1);
  66742. _r$2 = fmt.Fprintf(_arg, "%s=%s", new sliceType$1([_arg$1, _arg$2])); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  66743. _r$2;
  66744. /* */ if (c.Path.length > 0) { $s = 4; continue; }
  66745. /* */ $s = 5; continue;
  66746. /* if (c.Path.length > 0) { */ case 4:
  66747. _arg$3 = b[0];
  66748. _r$3 = sanitizeCookiePath(c.Path); /* */ $s = 6; case 6: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  66749. _arg$4 = new $String(_r$3);
  66750. _r$4 = fmt.Fprintf(_arg$3, "; Path=%s", new sliceType$1([_arg$4])); /* */ $s = 7; case 7: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
  66751. _r$4;
  66752. /* } */ case 5:
  66753. /* */ if (c.Domain.length > 0) { $s = 8; continue; }
  66754. /* */ $s = 9; continue;
  66755. /* if (c.Domain.length > 0) { */ case 8:
  66756. /* */ if (validCookieDomain(c.Domain)) { $s = 10; continue; }
  66757. /* */ $s = 11; continue;
  66758. /* if (validCookieDomain(c.Domain)) { */ case 10:
  66759. d = c.Domain;
  66760. if (d.charCodeAt(0) === 46) {
  66761. d = d.substring(1);
  66762. }
  66763. _r$5 = fmt.Fprintf(b[0], "; Domain=%s", new sliceType$1([new $String(d)])); /* */ $s = 13; case 13: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
  66764. _r$5;
  66765. $s = 12; continue;
  66766. /* } else { */ case 11:
  66767. $r = log.Printf("net/http: invalid Cookie.Domain %q; dropping domain attribute", new sliceType$1([new $String(c.Domain)])); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  66768. /* } */ case 12:
  66769. /* } */ case 9:
  66770. /* */ if ((x = c.Expires.Unix(), (x.$high > 0 || (x.$high === 0 && x.$low > 0)))) { $s = 15; continue; }
  66771. /* */ $s = 16; continue;
  66772. /* if ((x = c.Expires.Unix(), (x.$high > 0 || (x.$high === 0 && x.$low > 0)))) { */ case 15:
  66773. _arg$5 = b[0];
  66774. _r$6 = c.Expires.UTC().Format("Mon, 02 Jan 2006 15:04:05 MST"); /* */ $s = 17; case 17: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
  66775. _arg$6 = new $String(_r$6);
  66776. _r$7 = fmt.Fprintf(_arg$5, "; Expires=%s", new sliceType$1([_arg$6])); /* */ $s = 18; case 18: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
  66777. _r$7;
  66778. /* } */ case 16:
  66779. /* */ if (c.MaxAge > 0) { $s = 19; continue; }
  66780. /* */ if (c.MaxAge < 0) { $s = 20; continue; }
  66781. /* */ $s = 21; continue;
  66782. /* if (c.MaxAge > 0) { */ case 19:
  66783. _r$8 = fmt.Fprintf(b[0], "; Max-Age=%d", new sliceType$1([new $Int(c.MaxAge)])); /* */ $s = 22; case 22: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
  66784. _r$8;
  66785. $s = 21; continue;
  66786. /* } else if (c.MaxAge < 0) { */ case 20:
  66787. _r$9 = fmt.Fprintf(b[0], "; Max-Age=0", new sliceType$1([])); /* */ $s = 23; case 23: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
  66788. _r$9;
  66789. /* } */ case 21:
  66790. /* */ if (c.HttpOnly) { $s = 24; continue; }
  66791. /* */ $s = 25; continue;
  66792. /* if (c.HttpOnly) { */ case 24:
  66793. _r$10 = fmt.Fprintf(b[0], "; HttpOnly", new sliceType$1([])); /* */ $s = 26; case 26: if($c) { $c = false; _r$10 = _r$10.$blk(); } if (_r$10 && _r$10.$blk !== undefined) { break s; }
  66794. _r$10;
  66795. /* } */ case 25:
  66796. /* */ if (c.Secure) { $s = 27; continue; }
  66797. /* */ $s = 28; continue;
  66798. /* if (c.Secure) { */ case 27:
  66799. _r$11 = fmt.Fprintf(b[0], "; Secure", new sliceType$1([])); /* */ $s = 29; case 29: if($c) { $c = false; _r$11 = _r$11.$blk(); } if (_r$11 && _r$11.$blk !== undefined) { break s; }
  66800. _r$11;
  66801. /* } */ case 28:
  66802. return b[0].String();
  66803. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Cookie.ptr.prototype.String }; } $f.$ptr = $ptr; $f._arg = _arg; $f._arg$1 = _arg$1; $f._arg$2 = _arg$2; $f._arg$3 = _arg$3; $f._arg$4 = _arg$4; $f._arg$5 = _arg$5; $f._arg$6 = _arg$6; $f._r = _r; $f._r$1 = _r$1; $f._r$10 = _r$10; $f._r$11 = _r$11; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._r$9 = _r$9; $f.b = b; $f.c = c; $f.d = d; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
  66804. };
  66805. Cookie.prototype.String = function() { return this.$val.String(); };
  66806. readCookies = function(h, filter) {
  66807. var $ptr, _entry, _i, _r, _r$1, _r$2, _r$3, _ref, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, _tuple$1, cookies, filter, h, i, j, line, lines, name, ok, parsedPairs, parts, success, val, $s, $r;
  66808. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _entry = $f._entry; _i = $f._i; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _ref = $f._ref; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; cookies = $f.cookies; filter = $f.filter; h = $f.h; i = $f.i; j = $f.j; line = $f.line; lines = $f.lines; name = $f.name; ok = $f.ok; parsedPairs = $f.parsedPairs; parts = $f.parts; success = $f.success; val = $f.val; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  66809. cookies = new sliceType$6([]);
  66810. _tuple = (_entry = h["Cookie"], _entry !== undefined ? [_entry.v, true] : [sliceType.nil, false]); lines = _tuple[0]; ok = _tuple[1];
  66811. if (!ok) {
  66812. return cookies;
  66813. }
  66814. _ref = lines;
  66815. _i = 0;
  66816. /* while (true) { */ case 1:
  66817. /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; }
  66818. line = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]);
  66819. _r = strings.TrimSpace(line); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  66820. _r$1 = strings.Split(_r, ";"); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  66821. parts = _r$1;
  66822. /* */ if ((parts.$length === 1) && (0 >= parts.$length ? $throwRuntimeError("index out of range") : parts.$array[parts.$offset + 0]) === "") { $s = 5; continue; }
  66823. /* */ $s = 6; continue;
  66824. /* if ((parts.$length === 1) && (0 >= parts.$length ? $throwRuntimeError("index out of range") : parts.$array[parts.$offset + 0]) === "") { */ case 5:
  66825. _i++;
  66826. /* continue; */ $s = 1; continue;
  66827. /* } */ case 6:
  66828. parsedPairs = 0;
  66829. i = 0;
  66830. /* while (true) { */ case 7:
  66831. /* if (!(i < parts.$length)) { break; } */ if(!(i < parts.$length)) { $s = 8; continue; }
  66832. _r$2 = strings.TrimSpace(((i < 0 || i >= parts.$length) ? $throwRuntimeError("index out of range") : parts.$array[parts.$offset + i])); /* */ $s = 9; case 9: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  66833. ((i < 0 || i >= parts.$length) ? $throwRuntimeError("index out of range") : parts.$array[parts.$offset + i] = _r$2);
  66834. /* */ if (((i < 0 || i >= parts.$length) ? $throwRuntimeError("index out of range") : parts.$array[parts.$offset + i]).length === 0) { $s = 10; continue; }
  66835. /* */ $s = 11; continue;
  66836. /* if (((i < 0 || i >= parts.$length) ? $throwRuntimeError("index out of range") : parts.$array[parts.$offset + i]).length === 0) { */ case 10:
  66837. i = i + (1) >> 0;
  66838. /* continue; */ $s = 7; continue;
  66839. /* } */ case 11:
  66840. _tmp = ((i < 0 || i >= parts.$length) ? $throwRuntimeError("index out of range") : parts.$array[parts.$offset + i]); _tmp$1 = ""; name = _tmp; val = _tmp$1;
  66841. j = strings.Index(name, "=");
  66842. if (j >= 0) {
  66843. _tmp$2 = name.substring(0, j); _tmp$3 = name.substring((j + 1 >> 0)); name = _tmp$2; val = _tmp$3;
  66844. }
  66845. _r$3 = isCookieNameValid(name); /* */ $s = 14; case 14: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  66846. /* */ if (!_r$3) { $s = 12; continue; }
  66847. /* */ $s = 13; continue;
  66848. /* if (!_r$3) { */ case 12:
  66849. i = i + (1) >> 0;
  66850. /* continue; */ $s = 7; continue;
  66851. /* } */ case 13:
  66852. if (!(filter === "") && !(filter === name)) {
  66853. i = i + (1) >> 0;
  66854. /* continue; */ $s = 7; continue;
  66855. }
  66856. _tuple$1 = parseCookieValue(val, true); val = _tuple$1[0]; success = _tuple$1[1];
  66857. if (!success) {
  66858. i = i + (1) >> 0;
  66859. /* continue; */ $s = 7; continue;
  66860. }
  66861. cookies = $append(cookies, new Cookie.ptr(name, val, "", "", new time.Time.ptr(), "", 0, false, false, "", sliceType.nil));
  66862. parsedPairs = parsedPairs + (1) >> 0;
  66863. i = i + (1) >> 0;
  66864. /* } */ $s = 7; continue; case 8:
  66865. _i++;
  66866. /* } */ $s = 1; continue; case 2:
  66867. return cookies;
  66868. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: readCookies }; } $f.$ptr = $ptr; $f._entry = _entry; $f._i = _i; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._ref = _ref; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.cookies = cookies; $f.filter = filter; $f.h = h; $f.i = i; $f.j = j; $f.line = line; $f.lines = lines; $f.name = name; $f.ok = ok; $f.parsedPairs = parsedPairs; $f.parts = parts; $f.success = success; $f.val = val; $f.$s = $s; $f.$r = $r; return $f;
  66869. };
  66870. validCookieDomain = function(v) {
  66871. var $ptr, v;
  66872. if (isCookieDomainName(v)) {
  66873. return true;
  66874. }
  66875. if (!(net.ParseIP(v) === net.IP.nil) && !strings.Contains(v, ":")) {
  66876. return true;
  66877. }
  66878. return false;
  66879. };
  66880. isCookieDomainName = function(s) {
  66881. var $ptr, c, i, last, ok, partlen, s;
  66882. if (s.length === 0) {
  66883. return false;
  66884. }
  66885. if (s.length > 255) {
  66886. return false;
  66887. }
  66888. if (s.charCodeAt(0) === 46) {
  66889. s = s.substring(1);
  66890. }
  66891. last = 46;
  66892. ok = false;
  66893. partlen = 0;
  66894. i = 0;
  66895. while (true) {
  66896. if (!(i < s.length)) { break; }
  66897. c = s.charCodeAt(i);
  66898. if (97 <= c && c <= 122 || 65 <= c && c <= 90) {
  66899. ok = true;
  66900. partlen = partlen + (1) >> 0;
  66901. } else if (48 <= c && c <= 57) {
  66902. partlen = partlen + (1) >> 0;
  66903. } else if (c === 45) {
  66904. if (last === 46) {
  66905. return false;
  66906. }
  66907. partlen = partlen + (1) >> 0;
  66908. } else if (c === 46) {
  66909. if ((last === 46) || (last === 45)) {
  66910. return false;
  66911. }
  66912. if (partlen > 63 || (partlen === 0)) {
  66913. return false;
  66914. }
  66915. partlen = 0;
  66916. } else {
  66917. return false;
  66918. }
  66919. last = c;
  66920. i = i + (1) >> 0;
  66921. }
  66922. if ((last === 45) || partlen > 63) {
  66923. return false;
  66924. }
  66925. return ok;
  66926. };
  66927. sanitizeCookieName = function(n) {
  66928. var $ptr, _r, n, $s, $r;
  66929. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; n = $f.n; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  66930. _r = cookieNameSanitizer.Replace(n); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  66931. return _r;
  66932. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: sanitizeCookieName }; } $f.$ptr = $ptr; $f._r = _r; $f.n = n; $f.$s = $s; $f.$r = $r; return $f;
  66933. };
  66934. sanitizeCookieValue = function(v) {
  66935. var $ptr, _r, v, $s, $r;
  66936. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  66937. _r = sanitizeOrWarn("Cookie.Value", validCookieValueByte, v); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  66938. v = _r;
  66939. if (v.length === 0) {
  66940. return v;
  66941. }
  66942. if ((v.charCodeAt(0) === 32) || (v.charCodeAt(0) === 44) || (v.charCodeAt((v.length - 1 >> 0)) === 32) || (v.charCodeAt((v.length - 1 >> 0)) === 44)) {
  66943. return "\"" + v + "\"";
  66944. }
  66945. return v;
  66946. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: sanitizeCookieValue }; } $f.$ptr = $ptr; $f._r = _r; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
  66947. };
  66948. validCookieValueByte = function(b) {
  66949. var $ptr, b;
  66950. return 32 <= b && b < 127 && !((b === 34)) && !((b === 59)) && !((b === 92));
  66951. };
  66952. sanitizeCookiePath = function(v) {
  66953. var $ptr, _r, v, $s, $r;
  66954. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  66955. _r = sanitizeOrWarn("Cookie.Path", validCookiePathByte, v); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  66956. return _r;
  66957. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: sanitizeCookiePath }; } $f.$ptr = $ptr; $f._r = _r; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
  66958. };
  66959. validCookiePathByte = function(b) {
  66960. var $ptr, b;
  66961. return 32 <= b && b < 127 && !((b === 59));
  66962. };
  66963. sanitizeOrWarn = function(fieldName, valid, v) {
  66964. var $ptr, _r, _r$1, b, buf, fieldName, i, i$1, ok, v, valid, $s, $r;
  66965. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; b = $f.b; buf = $f.buf; fieldName = $f.fieldName; i = $f.i; i$1 = $f.i$1; ok = $f.ok; v = $f.v; valid = $f.valid; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  66966. ok = true;
  66967. i = 0;
  66968. /* while (true) { */ case 1:
  66969. /* if (!(i < v.length)) { break; } */ if(!(i < v.length)) { $s = 2; continue; }
  66970. _r = valid(v.charCodeAt(i)); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  66971. /* */ if (_r) { $s = 3; continue; }
  66972. /* */ $s = 4; continue;
  66973. /* if (_r) { */ case 3:
  66974. i = i + (1) >> 0;
  66975. /* continue; */ $s = 1; continue;
  66976. /* } */ case 4:
  66977. $r = log.Printf("net/http: invalid byte %q in %s; dropping invalid bytes", new sliceType$1([new $Uint8(v.charCodeAt(i)), new $String(fieldName)])); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  66978. ok = false;
  66979. /* break; */ $s = 2; continue;
  66980. /* } */ $s = 1; continue; case 2:
  66981. if (ok) {
  66982. return v;
  66983. }
  66984. buf = $makeSlice(sliceType$2, 0, v.length);
  66985. i$1 = 0;
  66986. /* while (true) { */ case 7:
  66987. /* if (!(i$1 < v.length)) { break; } */ if(!(i$1 < v.length)) { $s = 8; continue; }
  66988. b = v.charCodeAt(i$1);
  66989. _r$1 = valid(b); /* */ $s = 11; case 11: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  66990. /* */ if (_r$1) { $s = 9; continue; }
  66991. /* */ $s = 10; continue;
  66992. /* if (_r$1) { */ case 9:
  66993. buf = $append(buf, b);
  66994. /* } */ case 10:
  66995. i$1 = i$1 + (1) >> 0;
  66996. /* } */ $s = 7; continue; case 8:
  66997. return $bytesToString(buf);
  66998. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: sanitizeOrWarn }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f.b = b; $f.buf = buf; $f.fieldName = fieldName; $f.i = i; $f.i$1 = i$1; $f.ok = ok; $f.v = v; $f.valid = valid; $f.$s = $s; $f.$r = $r; return $f;
  66999. };
  67000. parseCookieValue = function(raw, allowDoubleQuote) {
  67001. var $ptr, allowDoubleQuote, i, raw;
  67002. if (allowDoubleQuote && raw.length > 1 && (raw.charCodeAt(0) === 34) && (raw.charCodeAt((raw.length - 1 >> 0)) === 34)) {
  67003. raw = raw.substring(1, (raw.length - 1 >> 0));
  67004. }
  67005. i = 0;
  67006. while (true) {
  67007. if (!(i < raw.length)) { break; }
  67008. if (!validCookieValueByte(raw.charCodeAt(i))) {
  67009. return ["", false];
  67010. }
  67011. i = i + (1) >> 0;
  67012. }
  67013. return [raw, true];
  67014. };
  67015. isCookieNameValid = function(raw) {
  67016. var $ptr, _r, raw, $s, $r;
  67017. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; raw = $f.raw; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  67018. _r = strings.IndexFunc(raw, isNotToken); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  67019. return _r < 0;
  67020. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: isCookieNameValid }; } $f.$ptr = $ptr; $f._r = _r; $f.raw = raw; $f.$s = $s; $f.$r = $r; return $f;
  67021. };
  67022. Header.prototype.Add = function(key, value) {
  67023. var $ptr, h, key, value;
  67024. h = this.$val;
  67025. new textproto.MIMEHeader(h).Add(key, value);
  67026. };
  67027. $ptrType(Header).prototype.Add = function(key, value) { return new Header(this.$get()).Add(key, value); };
  67028. Header.prototype.Set = function(key, value) {
  67029. var $ptr, h, key, value;
  67030. h = this.$val;
  67031. new textproto.MIMEHeader(h).Set(key, value);
  67032. };
  67033. $ptrType(Header).prototype.Set = function(key, value) { return new Header(this.$get()).Set(key, value); };
  67034. Header.prototype.Get = function(key) {
  67035. var $ptr, h, key;
  67036. h = this.$val;
  67037. return new textproto.MIMEHeader(h).Get(key);
  67038. };
  67039. $ptrType(Header).prototype.Get = function(key) { return new Header(this.$get()).Get(key); };
  67040. Header.prototype.get = function(key) {
  67041. var $ptr, _entry, h, key, v;
  67042. h = this.$val;
  67043. v = (_entry = h[key], _entry !== undefined ? _entry.v : sliceType.nil);
  67044. if (v.$length > 0) {
  67045. return (0 >= v.$length ? $throwRuntimeError("index out of range") : v.$array[v.$offset + 0]);
  67046. }
  67047. return "";
  67048. };
  67049. $ptrType(Header).prototype.get = function(key) { return new Header(this.$get()).get(key); };
  67050. Header.prototype.Del = function(key) {
  67051. var $ptr, h, key;
  67052. h = this.$val;
  67053. new textproto.MIMEHeader(h).Del(key);
  67054. };
  67055. $ptrType(Header).prototype.Del = function(key) { return new Header(this.$get()).Del(key); };
  67056. Header.prototype.Write = function(w) {
  67057. var $ptr, _r, h, w, $s, $r;
  67058. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; h = $f.h; w = $f.w; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  67059. h = this.$val;
  67060. _r = new Header(h).WriteSubset(w, false); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  67061. return _r;
  67062. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Header.prototype.Write }; } $f.$ptr = $ptr; $f._r = _r; $f.h = h; $f.w = w; $f.$s = $s; $f.$r = $r; return $f;
  67063. };
  67064. $ptrType(Header).prototype.Write = function(w) { return new Header(this.$get()).Write(w); };
  67065. Header.prototype.clone = function() {
  67066. var $ptr, _entry, _i, _key$5, _keys, _ref, h, h2, k, vv, vv2;
  67067. h = this.$val;
  67068. h2 = new $Map();
  67069. _ref = h;
  67070. _i = 0;
  67071. _keys = $keys(_ref);
  67072. while (true) {
  67073. if (!(_i < _keys.length)) { break; }
  67074. _entry = _ref[_keys[_i]];
  67075. if (_entry === undefined) {
  67076. _i++;
  67077. continue;
  67078. }
  67079. k = _entry.k;
  67080. vv = _entry.v;
  67081. vv2 = $makeSlice(sliceType, vv.$length);
  67082. $copySlice(vv2, vv);
  67083. _key$5 = k; (h2 || $throwRuntimeError("assignment to entry in nil map"))[_key$5] = { k: _key$5, v: vv2 };
  67084. _i++;
  67085. }
  67086. return h2;
  67087. };
  67088. $ptrType(Header).prototype.clone = function() { return new Header(this.$get()).clone(); };
  67089. stringWriter.ptr.prototype.WriteString = function(s) {
  67090. var $ptr, _r, _tuple, err, n, s, w, $s, $r;
  67091. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tuple = $f._tuple; err = $f.err; n = $f.n; s = $f.s; w = $f.w; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  67092. n = 0;
  67093. err = $ifaceNil;
  67094. w = $clone(this, stringWriter);
  67095. _r = w.w.Write(new sliceType$2($stringToBytes(s))); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  67096. _tuple = _r; n = _tuple[0]; err = _tuple[1];
  67097. return [n, err];
  67098. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: stringWriter.ptr.prototype.WriteString }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple = _tuple; $f.err = err; $f.n = n; $f.s = s; $f.w = w; $f.$s = $s; $f.$r = $r; return $f;
  67099. };
  67100. stringWriter.prototype.WriteString = function(s) { return this.$val.WriteString(s); };
  67101. headerSorter.ptr.prototype.Len = function() {
  67102. var $ptr, s;
  67103. s = this;
  67104. return s.kvs.$length;
  67105. };
  67106. headerSorter.prototype.Len = function() { return this.$val.Len(); };
  67107. headerSorter.ptr.prototype.Swap = function(i, j) {
  67108. var $ptr, _tmp, _tmp$1, i, j, s, x, x$1, x$2, x$3;
  67109. s = this;
  67110. _tmp = $clone((x = s.kvs, ((j < 0 || j >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + j])), keyValues); _tmp$1 = $clone((x$1 = s.kvs, ((i < 0 || i >= x$1.$length) ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + i])), keyValues); $copy((x$2 = s.kvs, ((i < 0 || i >= x$2.$length) ? $throwRuntimeError("index out of range") : x$2.$array[x$2.$offset + i])), _tmp, keyValues); $copy((x$3 = s.kvs, ((j < 0 || j >= x$3.$length) ? $throwRuntimeError("index out of range") : x$3.$array[x$3.$offset + j])), _tmp$1, keyValues);
  67111. };
  67112. headerSorter.prototype.Swap = function(i, j) { return this.$val.Swap(i, j); };
  67113. headerSorter.ptr.prototype.Less = function(i, j) {
  67114. var $ptr, i, j, s, x, x$1;
  67115. s = this;
  67116. return (x = s.kvs, ((i < 0 || i >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + i])).key < (x$1 = s.kvs, ((j < 0 || j >= x$1.$length) ? $throwRuntimeError("index out of range") : x$1.$array[x$1.$offset + j])).key;
  67117. };
  67118. headerSorter.prototype.Less = function(i, j) { return this.$val.Less(i, j); };
  67119. Header.prototype.sortedKeyValues = function(exclude) {
  67120. var $ptr, _entry, _entry$1, _i, _keys, _r, _ref, _tmp, _tmp$1, exclude, h, hs, k, kvs, vv, $s, $r;
  67121. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _entry = $f._entry; _entry$1 = $f._entry$1; _i = $f._i; _keys = $f._keys; _r = $f._r; _ref = $f._ref; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; exclude = $f.exclude; h = $f.h; hs = $f.hs; k = $f.k; kvs = $f.kvs; vv = $f.vv; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  67122. kvs = sliceType$8.nil;
  67123. hs = ptrType$11.nil;
  67124. h = this.$val;
  67125. _r = headerSorterPool.Get(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  67126. hs = $assertType(_r, ptrType$11);
  67127. if (hs.kvs.$capacity < $keys(h).length) {
  67128. hs.kvs = $makeSlice(sliceType$8, 0, $keys(h).length);
  67129. }
  67130. kvs = $subslice(hs.kvs, 0, 0);
  67131. _ref = h;
  67132. _i = 0;
  67133. _keys = $keys(_ref);
  67134. while (true) {
  67135. if (!(_i < _keys.length)) { break; }
  67136. _entry = _ref[_keys[_i]];
  67137. if (_entry === undefined) {
  67138. _i++;
  67139. continue;
  67140. }
  67141. k = _entry.k;
  67142. vv = _entry.v;
  67143. if (!(_entry$1 = exclude[k], _entry$1 !== undefined ? _entry$1.v : false)) {
  67144. kvs = $append(kvs, new keyValues.ptr(k, vv));
  67145. }
  67146. _i++;
  67147. }
  67148. hs.kvs = kvs;
  67149. $r = sort.Sort(hs); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  67150. _tmp = kvs; _tmp$1 = hs; kvs = _tmp; hs = _tmp$1;
  67151. return [kvs, hs];
  67152. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Header.prototype.sortedKeyValues }; } $f.$ptr = $ptr; $f._entry = _entry; $f._entry$1 = _entry$1; $f._i = _i; $f._keys = _keys; $f._r = _r; $f._ref = _ref; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f.exclude = exclude; $f.h = h; $f.hs = hs; $f.k = k; $f.kvs = kvs; $f.vv = vv; $f.$s = $s; $f.$r = $r; return $f;
  67153. };
  67154. $ptrType(Header).prototype.sortedKeyValues = function(exclude) { return new Header(this.$get()).sortedKeyValues(exclude); };
  67155. Header.prototype.WriteSubset = function(w, exclude) {
  67156. var $ptr, _i, _i$1, _i$2, _r, _r$1, _r$2, _ref, _ref$1, _ref$2, _tuple, _tuple$1, _tuple$2, err, exclude, h, kv, kvs, ok, s, sorter, v, w, ws, x, $s, $r;
  67157. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _i = $f._i; _i$1 = $f._i$1; _i$2 = $f._i$2; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _ref = $f._ref; _ref$1 = $f._ref$1; _ref$2 = $f._ref$2; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; err = $f.err; exclude = $f.exclude; h = $f.h; kv = $f.kv; kvs = $f.kvs; ok = $f.ok; s = $f.s; sorter = $f.sorter; v = $f.v; w = $f.w; ws = $f.ws; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  67158. h = this.$val;
  67159. _tuple = $assertType(w, writeStringer, true); ws = _tuple[0]; ok = _tuple[1];
  67160. if (!ok) {
  67161. ws = (x = new stringWriter.ptr(w), new x.constructor.elem(x));
  67162. }
  67163. _r = new Header(h).sortedKeyValues(exclude); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  67164. _tuple$1 = _r; kvs = _tuple$1[0]; sorter = _tuple$1[1];
  67165. _ref = kvs;
  67166. _i = 0;
  67167. /* while (true) { */ case 2:
  67168. /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 3; continue; }
  67169. kv = $clone(((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]), keyValues);
  67170. _ref$1 = kv.values;
  67171. _i$1 = 0;
  67172. /* while (true) { */ case 4:
  67173. /* if (!(_i$1 < _ref$1.$length)) { break; } */ if(!(_i$1 < _ref$1.$length)) { $s = 5; continue; }
  67174. v = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? $throwRuntimeError("index out of range") : _ref$1.$array[_ref$1.$offset + _i$1]);
  67175. _r$1 = headerNewlineToSpace.Replace(v); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  67176. v = _r$1;
  67177. v = textproto.TrimString(v);
  67178. _ref$2 = new sliceType([kv.key, ": ", v, "\r\n"]);
  67179. _i$2 = 0;
  67180. /* while (true) { */ case 7:
  67181. /* if (!(_i$2 < _ref$2.$length)) { break; } */ if(!(_i$2 < _ref$2.$length)) { $s = 8; continue; }
  67182. s = ((_i$2 < 0 || _i$2 >= _ref$2.$length) ? $throwRuntimeError("index out of range") : _ref$2.$array[_ref$2.$offset + _i$2]);
  67183. _r$2 = ws.WriteString(s); /* */ $s = 9; case 9: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  67184. _tuple$2 = _r$2; err = _tuple$2[1];
  67185. /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 10; continue; }
  67186. /* */ $s = 11; continue;
  67187. /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 10:
  67188. return err;
  67189. /* } */ case 11:
  67190. _i$2++;
  67191. /* } */ $s = 7; continue; case 8:
  67192. _i$1++;
  67193. /* } */ $s = 4; continue; case 5:
  67194. _i++;
  67195. /* } */ $s = 2; continue; case 3:
  67196. headerSorterPool.Put(sorter);
  67197. return $ifaceNil;
  67198. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Header.prototype.WriteSubset }; } $f.$ptr = $ptr; $f._i = _i; $f._i$1 = _i$1; $f._i$2 = _i$2; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._ref = _ref; $f._ref$1 = _ref$1; $f._ref$2 = _ref$2; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f.err = err; $f.exclude = exclude; $f.h = h; $f.kv = kv; $f.kvs = kvs; $f.ok = ok; $f.s = s; $f.sorter = sorter; $f.v = v; $f.w = w; $f.ws = ws; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
  67199. };
  67200. $ptrType(Header).prototype.WriteSubset = function(w, exclude) { return new Header(this.$get()).WriteSubset(w, exclude); };
  67201. CanonicalHeaderKey = function(s) {
  67202. var $ptr, s;
  67203. return textproto.CanonicalMIMEHeaderKey(s);
  67204. };
  67205. $pkg.CanonicalHeaderKey = CanonicalHeaderKey;
  67206. hasToken = function(v, token) {
  67207. var $ptr, b, endPos, sp, token, v;
  67208. if (token.length > v.length || token === "") {
  67209. return false;
  67210. }
  67211. if (v === token) {
  67212. return true;
  67213. }
  67214. sp = 0;
  67215. while (true) {
  67216. if (!(sp <= (v.length - token.length >> 0))) { break; }
  67217. b = v.charCodeAt(sp);
  67218. if (!((b === token.charCodeAt(0))) && !((((b | 32) >>> 0) === token.charCodeAt(0)))) {
  67219. sp = sp + (1) >> 0;
  67220. continue;
  67221. }
  67222. if (sp > 0 && !isTokenBoundary(v.charCodeAt((sp - 1 >> 0)))) {
  67223. sp = sp + (1) >> 0;
  67224. continue;
  67225. }
  67226. endPos = sp + token.length >> 0;
  67227. if (!((endPos === v.length)) && !isTokenBoundary(v.charCodeAt(endPos))) {
  67228. sp = sp + (1) >> 0;
  67229. continue;
  67230. }
  67231. if (strings.EqualFold(v.substring(sp, (sp + token.length >> 0)), token)) {
  67232. return true;
  67233. }
  67234. sp = sp + (1) >> 0;
  67235. }
  67236. return false;
  67237. };
  67238. isTokenBoundary = function(b) {
  67239. var $ptr, b;
  67240. return (b === 32) || (b === 44) || (b === 9);
  67241. };
  67242. isToken = function(r) {
  67243. var $ptr, i, r;
  67244. i = (r >> 0);
  67245. return i < 127 && ((i < 0 || i >= isTokenTable.length) ? $throwRuntimeError("index out of range") : isTokenTable[i]);
  67246. };
  67247. isNotToken = function(r) {
  67248. var $ptr, r;
  67249. return !isToken(r);
  67250. };
  67251. ProtocolError.ptr.prototype.Error = function() {
  67252. var $ptr, err;
  67253. err = this;
  67254. return err.ErrorString;
  67255. };
  67256. ProtocolError.prototype.Error = function() { return this.$val.Error(); };
  67257. badStringError.ptr.prototype.Error = function() {
  67258. var $ptr, _r, e, $s, $r;
  67259. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; e = $f.e; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  67260. e = this;
  67261. _r = fmt.Sprintf("%s %q", new sliceType$1([new $String(e.what), new $String(e.str)])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  67262. return _r;
  67263. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: badStringError.ptr.prototype.Error }; } $f.$ptr = $ptr; $f._r = _r; $f.e = e; $f.$s = $s; $f.$r = $r; return $f;
  67264. };
  67265. badStringError.prototype.Error = function() { return this.$val.Error(); };
  67266. Request.ptr.prototype.ProtoAtLeast = function(major, minor) {
  67267. var $ptr, major, minor, r;
  67268. r = this;
  67269. return r.ProtoMajor > major || (r.ProtoMajor === major) && r.ProtoMinor >= minor;
  67270. };
  67271. Request.prototype.ProtoAtLeast = function(major, minor) { return this.$val.ProtoAtLeast(major, minor); };
  67272. Request.ptr.prototype.UserAgent = function() {
  67273. var $ptr, r;
  67274. r = this;
  67275. return new Header(r.Header).Get("User-Agent");
  67276. };
  67277. Request.prototype.UserAgent = function() { return this.$val.UserAgent(); };
  67278. Request.ptr.prototype.Cookies = function() {
  67279. var $ptr, _r, r, $s, $r;
  67280. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  67281. r = this;
  67282. _r = readCookies(r.Header, ""); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  67283. return _r;
  67284. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Request.ptr.prototype.Cookies }; } $f.$ptr = $ptr; $f._r = _r; $f.r = r; $f.$s = $s; $f.$r = $r; return $f;
  67285. };
  67286. Request.prototype.Cookies = function() { return this.$val.Cookies(); };
  67287. Request.ptr.prototype.Cookie = function(name) {
  67288. var $ptr, _i, _r, _ref, c, name, r, $s, $r;
  67289. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _i = $f._i; _r = $f._r; _ref = $f._ref; c = $f.c; name = $f.name; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  67290. r = this;
  67291. _r = readCookies(r.Header, name); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  67292. _ref = _r;
  67293. _i = 0;
  67294. /* while (true) { */ case 2:
  67295. /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 3; continue; }
  67296. c = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]);
  67297. return [c, $ifaceNil];
  67298. /* } */ $s = 2; continue; case 3:
  67299. return [ptrType$7.nil, $pkg.ErrNoCookie];
  67300. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Request.ptr.prototype.Cookie }; } $f.$ptr = $ptr; $f._i = _i; $f._r = _r; $f._ref = _ref; $f.c = c; $f.name = name; $f.r = r; $f.$s = $s; $f.$r = $r; return $f;
  67301. };
  67302. Request.prototype.Cookie = function(name) { return this.$val.Cookie(name); };
  67303. Request.ptr.prototype.AddCookie = function(c) {
  67304. var $ptr, _arg, _arg$1, _r, _r$1, _r$2, c, c$1, r, s, $s, $r;
  67305. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _arg = $f._arg; _arg$1 = $f._arg$1; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; c = $f.c; c$1 = $f.c$1; r = $f.r; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  67306. r = this;
  67307. _r = sanitizeCookieName(c.Name); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  67308. _arg = new $String(_r);
  67309. _r$1 = sanitizeCookieValue(c.Value); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  67310. _arg$1 = new $String(_r$1);
  67311. _r$2 = fmt.Sprintf("%s=%s", new sliceType$1([_arg, _arg$1])); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  67312. s = _r$2;
  67313. c$1 = new Header(r.Header).Get("Cookie");
  67314. if (!(c$1 === "")) {
  67315. new Header(r.Header).Set("Cookie", c$1 + "; " + s);
  67316. } else {
  67317. new Header(r.Header).Set("Cookie", s);
  67318. }
  67319. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Request.ptr.prototype.AddCookie }; } $f.$ptr = $ptr; $f._arg = _arg; $f._arg$1 = _arg$1; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f.c = c; $f.c$1 = c$1; $f.r = r; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
  67320. };
  67321. Request.prototype.AddCookie = function(c) { return this.$val.AddCookie(c); };
  67322. Request.ptr.prototype.Referer = function() {
  67323. var $ptr, r;
  67324. r = this;
  67325. return new Header(r.Header).Get("Referer");
  67326. };
  67327. Request.prototype.Referer = function() { return this.$val.Referer(); };
  67328. Request.ptr.prototype.MultipartReader = function() {
  67329. var $ptr, _r, r, $s, $r;
  67330. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  67331. r = this;
  67332. if (r.MultipartForm === multipartByReader) {
  67333. return [ptrType$12.nil, errors.New("http: MultipartReader called twice")];
  67334. }
  67335. if (!(r.MultipartForm === ptrType$13.nil)) {
  67336. return [ptrType$12.nil, errors.New("http: multipart handled by ParseMultipartForm")];
  67337. }
  67338. r.MultipartForm = multipartByReader;
  67339. _r = r.multipartReader(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  67340. return _r;
  67341. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Request.ptr.prototype.MultipartReader }; } $f.$ptr = $ptr; $f._r = _r; $f.r = r; $f.$s = $s; $f.$r = $r; return $f;
  67342. };
  67343. Request.prototype.MultipartReader = function() { return this.$val.MultipartReader(); };
  67344. Request.ptr.prototype.multipartReader = function() {
  67345. var $ptr, _entry, _r, _tuple, _tuple$1, boundary, d, err, ok, params, r, v, $s, $r;
  67346. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _entry = $f._entry; _r = $f._r; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; boundary = $f.boundary; d = $f.d; err = $f.err; ok = $f.ok; params = $f.params; r = $f.r; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  67347. r = this;
  67348. v = new Header(r.Header).Get("Content-Type");
  67349. if (v === "") {
  67350. return [ptrType$12.nil, $pkg.ErrNotMultipart];
  67351. }
  67352. _r = mime.ParseMediaType(v); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  67353. _tuple = _r; d = _tuple[0]; params = _tuple[1]; err = _tuple[2];
  67354. if (!($interfaceIsEqual(err, $ifaceNil)) || !(d === "multipart/form-data")) {
  67355. return [ptrType$12.nil, $pkg.ErrNotMultipart];
  67356. }
  67357. _tuple$1 = (_entry = params["boundary"], _entry !== undefined ? [_entry.v, true] : ["", false]); boundary = _tuple$1[0]; ok = _tuple$1[1];
  67358. if (!ok) {
  67359. return [ptrType$12.nil, $pkg.ErrMissingBoundary];
  67360. }
  67361. return [multipart.NewReader(r.Body, boundary), $ifaceNil];
  67362. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Request.ptr.prototype.multipartReader }; } $f.$ptr = $ptr; $f._entry = _entry; $f._r = _r; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.boundary = boundary; $f.d = d; $f.err = err; $f.ok = ok; $f.params = params; $f.r = r; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
  67363. };
  67364. Request.prototype.multipartReader = function() { return this.$val.multipartReader(); };
  67365. valueOrDefault = function(value, def) {
  67366. var $ptr, def, value;
  67367. if (!(value === "")) {
  67368. return value;
  67369. }
  67370. return def;
  67371. };
  67372. Request.ptr.prototype.Write = function(w) {
  67373. var $ptr, _r, r, w, $s, $r;
  67374. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; r = $f.r; w = $f.w; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  67375. r = this;
  67376. _r = r.write(w, false, false); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  67377. return _r;
  67378. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Request.ptr.prototype.Write }; } $f.$ptr = $ptr; $f._r = _r; $f.r = r; $f.w = w; $f.$s = $s; $f.$r = $r; return $f;
  67379. };
  67380. Request.prototype.Write = function(w) { return this.$val.Write(w); };
  67381. Request.ptr.prototype.WriteProxy = function(w) {
  67382. var $ptr, _r, r, w, $s, $r;
  67383. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; r = $f.r; w = $f.w; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  67384. r = this;
  67385. _r = r.write(w, true, false); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  67386. return _r;
  67387. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Request.ptr.prototype.WriteProxy }; } $f.$ptr = $ptr; $f._r = _r; $f.r = r; $f.w = w; $f.$s = $s; $f.$r = $r; return $f;
  67388. };
  67389. Request.prototype.WriteProxy = function(w) { return this.$val.WriteProxy(w); };
  67390. Request.ptr.prototype.write = function(w, usingProxy, extraHeaders) {
  67391. var $ptr, _entry, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, bw, err, extraHeaders, host, ok, req, ruri, tw, ua, userAgent, usingProxy, w, $s, $r;
  67392. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _entry = $f._entry; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _r$9 = $f._r$9; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; _tuple$4 = $f._tuple$4; _tuple$5 = $f._tuple$5; bw = $f.bw; err = $f.err; extraHeaders = $f.extraHeaders; host = $f.host; ok = $f.ok; req = $f.req; ruri = $f.ruri; tw = $f.tw; ua = $f.ua; userAgent = $f.userAgent; usingProxy = $f.usingProxy; w = $f.w; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  67393. req = this;
  67394. host = req.Host;
  67395. if (host === "") {
  67396. if (req.URL === ptrType$5.nil) {
  67397. return errors.New("http: Request.Write on Request with no Host or URL set");
  67398. }
  67399. host = req.URL.Host;
  67400. }
  67401. ruri = req.URL.RequestURI();
  67402. if (usingProxy && !(req.URL.Scheme === "") && req.URL.Opaque === "") {
  67403. ruri = req.URL.Scheme + "://" + host + ruri;
  67404. } else if (req.Method === "CONNECT" && req.URL.Path === "") {
  67405. ruri = host;
  67406. }
  67407. bw = ptrType$14.nil;
  67408. _tuple = $assertType(w, io.ByteWriter, true); ok = _tuple[1];
  67409. if (!ok) {
  67410. bw = bufio.NewWriter(w);
  67411. w = bw;
  67412. }
  67413. _r = fmt.Fprintf(w, "%s %s HTTP/1.1\r\n", new sliceType$1([new $String(valueOrDefault(req.Method, "GET")), new $String(ruri)])); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  67414. _tuple$1 = _r; err = _tuple$1[1];
  67415. if (!($interfaceIsEqual(err, $ifaceNil))) {
  67416. return err;
  67417. }
  67418. _r$1 = fmt.Fprintf(w, "Host: %s\r\n", new sliceType$1([new $String(host)])); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  67419. _tuple$2 = _r$1; err = _tuple$2[1];
  67420. if (!($interfaceIsEqual(err, $ifaceNil))) {
  67421. return err;
  67422. }
  67423. userAgent = "Go 1.1 package http";
  67424. if (!(req.Header === false)) {
  67425. ua = (_entry = req.Header["User-Agent"], _entry !== undefined ? _entry.v : sliceType.nil);
  67426. if (ua.$length > 0) {
  67427. userAgent = (0 >= ua.$length ? $throwRuntimeError("index out of range") : ua.$array[ua.$offset + 0]);
  67428. }
  67429. }
  67430. /* */ if (!(userAgent === "")) { $s = 3; continue; }
  67431. /* */ $s = 4; continue;
  67432. /* if (!(userAgent === "")) { */ case 3:
  67433. _r$2 = fmt.Fprintf(w, "User-Agent: %s\r\n", new sliceType$1([new $String(userAgent)])); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  67434. _tuple$3 = _r$2; err = _tuple$3[1];
  67435. if (!($interfaceIsEqual(err, $ifaceNil))) {
  67436. return err;
  67437. }
  67438. /* } */ case 4:
  67439. _r$3 = newTransferWriter(req); /* */ $s = 6; case 6: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  67440. _tuple$4 = _r$3; tw = _tuple$4[0]; err = _tuple$4[1];
  67441. if (!($interfaceIsEqual(err, $ifaceNil))) {
  67442. return err;
  67443. }
  67444. _r$4 = tw.WriteHeader(w); /* */ $s = 7; case 7: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
  67445. err = _r$4;
  67446. if (!($interfaceIsEqual(err, $ifaceNil))) {
  67447. return err;
  67448. }
  67449. _r$5 = new Header(req.Header).WriteSubset(w, reqWriteExcludeHeader); /* */ $s = 8; case 8: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
  67450. err = _r$5;
  67451. if (!($interfaceIsEqual(err, $ifaceNil))) {
  67452. return err;
  67453. }
  67454. /* */ if (!(extraHeaders === false)) { $s = 9; continue; }
  67455. /* */ $s = 10; continue;
  67456. /* if (!(extraHeaders === false)) { */ case 9:
  67457. _r$6 = new Header(extraHeaders).Write(w); /* */ $s = 11; case 11: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
  67458. err = _r$6;
  67459. if (!($interfaceIsEqual(err, $ifaceNil))) {
  67460. return err;
  67461. }
  67462. /* } */ case 10:
  67463. _r$7 = io.WriteString(w, "\r\n"); /* */ $s = 12; case 12: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
  67464. _tuple$5 = _r$7; err = _tuple$5[1];
  67465. if (!($interfaceIsEqual(err, $ifaceNil))) {
  67466. return err;
  67467. }
  67468. _r$8 = tw.WriteBody(w); /* */ $s = 13; case 13: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
  67469. err = _r$8;
  67470. if (!($interfaceIsEqual(err, $ifaceNil))) {
  67471. return err;
  67472. }
  67473. /* */ if (!(bw === ptrType$14.nil)) { $s = 14; continue; }
  67474. /* */ $s = 15; continue;
  67475. /* if (!(bw === ptrType$14.nil)) { */ case 14:
  67476. _r$9 = bw.Flush(); /* */ $s = 16; case 16: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
  67477. return _r$9;
  67478. /* } */ case 15:
  67479. return $ifaceNil;
  67480. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Request.ptr.prototype.write }; } $f.$ptr = $ptr; $f._entry = _entry; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._r$9 = _r$9; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f._tuple$4 = _tuple$4; $f._tuple$5 = _tuple$5; $f.bw = bw; $f.err = err; $f.extraHeaders = extraHeaders; $f.host = host; $f.ok = ok; $f.req = req; $f.ruri = ruri; $f.tw = tw; $f.ua = ua; $f.userAgent = userAgent; $f.usingProxy = usingProxy; $f.w = w; $f.$s = $s; $f.$r = $r; return $f;
  67481. };
  67482. Request.prototype.write = function(w, usingProxy, extraHeaders) { return this.$val.write(w, usingProxy, extraHeaders); };
  67483. ParseHTTPVersion = function(vers) {
  67484. var $ptr, _ref, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$14, _tmp$15, _tmp$16, _tmp$17, _tmp$18, _tmp$19, _tmp$2, _tmp$20, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, dot, err, major, minor, ok, vers;
  67485. major = 0;
  67486. minor = 0;
  67487. ok = false;
  67488. _ref = vers;
  67489. if (_ref === "HTTP/1.1") {
  67490. _tmp = 1; _tmp$1 = 1; _tmp$2 = true; major = _tmp; minor = _tmp$1; ok = _tmp$2;
  67491. return [major, minor, ok];
  67492. } else if (_ref === "HTTP/1.0") {
  67493. _tmp$3 = 1; _tmp$4 = 0; _tmp$5 = true; major = _tmp$3; minor = _tmp$4; ok = _tmp$5;
  67494. return [major, minor, ok];
  67495. }
  67496. if (!strings.HasPrefix(vers, "HTTP/")) {
  67497. _tmp$6 = 0; _tmp$7 = 0; _tmp$8 = false; major = _tmp$6; minor = _tmp$7; ok = _tmp$8;
  67498. return [major, minor, ok];
  67499. }
  67500. dot = strings.Index(vers, ".");
  67501. if (dot < 0) {
  67502. _tmp$9 = 0; _tmp$10 = 0; _tmp$11 = false; major = _tmp$9; minor = _tmp$10; ok = _tmp$11;
  67503. return [major, minor, ok];
  67504. }
  67505. _tuple = strconv.Atoi(vers.substring(5, dot)); major = _tuple[0]; err = _tuple[1];
  67506. if (!($interfaceIsEqual(err, $ifaceNil)) || major < 0 || major > 1000000) {
  67507. _tmp$12 = 0; _tmp$13 = 0; _tmp$14 = false; major = _tmp$12; minor = _tmp$13; ok = _tmp$14;
  67508. return [major, minor, ok];
  67509. }
  67510. _tuple$1 = strconv.Atoi(vers.substring((dot + 1 >> 0))); minor = _tuple$1[0]; err = _tuple$1[1];
  67511. if (!($interfaceIsEqual(err, $ifaceNil)) || minor < 0 || minor > 1000000) {
  67512. _tmp$15 = 0; _tmp$16 = 0; _tmp$17 = false; major = _tmp$15; minor = _tmp$16; ok = _tmp$17;
  67513. return [major, minor, ok];
  67514. }
  67515. _tmp$18 = major; _tmp$19 = minor; _tmp$20 = true; major = _tmp$18; minor = _tmp$19; ok = _tmp$20;
  67516. return [major, minor, ok];
  67517. };
  67518. $pkg.ParseHTTPVersion = ParseHTTPVersion;
  67519. NewRequest = function(method, urlStr, body$1) {
  67520. var $ptr, _r, _ref, _tuple, _tuple$1, body$1, err, method, ok, rc, req, u, urlStr, v, v$1, v$2, $s, $r;
  67521. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _ref = $f._ref; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; body$1 = $f.body$1; err = $f.err; method = $f.method; ok = $f.ok; rc = $f.rc; req = $f.req; u = $f.u; urlStr = $f.urlStr; v = $f.v; v$1 = $f.v$1; v$2 = $f.v$2; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  67522. _r = url.Parse(urlStr); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  67523. _tuple = _r; u = _tuple[0]; err = _tuple[1];
  67524. if (!($interfaceIsEqual(err, $ifaceNil))) {
  67525. return [ptrType$1.nil, err];
  67526. }
  67527. _tuple$1 = $assertType(body$1, io.ReadCloser, true); rc = _tuple$1[0]; ok = _tuple$1[1];
  67528. if (!ok && !($interfaceIsEqual(body$1, $ifaceNil))) {
  67529. rc = ioutil.NopCloser(body$1);
  67530. }
  67531. req = new Request.ptr(method, u, "HTTP/1.1", 1, 1, new $Map(), rc, new $Int64(0, 0), sliceType.nil, false, u.Host, false, false, ptrType$13.nil, false, "", "", ptrType$2.nil);
  67532. if (!($interfaceIsEqual(body$1, $ifaceNil))) {
  67533. _ref = body$1;
  67534. if ($assertType(_ref, ptrType$15, true)[1]) {
  67535. v = _ref.$val;
  67536. req.ContentLength = new $Int64(0, v.Len());
  67537. } else if ($assertType(_ref, ptrType$16, true)[1]) {
  67538. v$1 = _ref.$val;
  67539. req.ContentLength = new $Int64(0, v$1.Len());
  67540. } else if ($assertType(_ref, ptrType$17, true)[1]) {
  67541. v$2 = _ref.$val;
  67542. req.ContentLength = new $Int64(0, v$2.Len());
  67543. }
  67544. }
  67545. return [req, $ifaceNil];
  67546. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: NewRequest }; } $f.$ptr = $ptr; $f._r = _r; $f._ref = _ref; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.body$1 = body$1; $f.err = err; $f.method = method; $f.ok = ok; $f.rc = rc; $f.req = req; $f.u = u; $f.urlStr = urlStr; $f.v = v; $f.v$1 = v$1; $f.v$2 = v$2; $f.$s = $s; $f.$r = $r; return $f;
  67547. };
  67548. $pkg.NewRequest = NewRequest;
  67549. Request.ptr.prototype.BasicAuth = function() {
  67550. var $ptr, _r, _tuple, auth, ok, password, r, username, $s, $r;
  67551. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tuple = $f._tuple; auth = $f.auth; ok = $f.ok; password = $f.password; r = $f.r; username = $f.username; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  67552. username = "";
  67553. password = "";
  67554. ok = false;
  67555. r = this;
  67556. auth = new Header(r.Header).Get("Authorization");
  67557. if (auth === "") {
  67558. return [username, password, ok];
  67559. }
  67560. _r = parseBasicAuth(auth); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  67561. _tuple = _r; username = _tuple[0]; password = _tuple[1]; ok = _tuple[2];
  67562. return [username, password, ok];
  67563. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Request.ptr.prototype.BasicAuth }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple = _tuple; $f.auth = auth; $f.ok = ok; $f.password = password; $f.r = r; $f.username = username; $f.$s = $s; $f.$r = $r; return $f;
  67564. };
  67565. Request.prototype.BasicAuth = function() { return this.$val.BasicAuth(); };
  67566. parseBasicAuth = function(auth) {
  67567. var $ptr, _r, _tmp, _tmp$1, _tmp$2, _tuple, auth, c, cs, err, ok, password, s, username, $s, $r;
  67568. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tuple = $f._tuple; auth = $f.auth; c = $f.c; cs = $f.cs; err = $f.err; ok = $f.ok; password = $f.password; s = $f.s; username = $f.username; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  67569. username = "";
  67570. password = "";
  67571. ok = false;
  67572. if (!strings.HasPrefix(auth, "Basic ")) {
  67573. return [username, password, ok];
  67574. }
  67575. _r = base64.StdEncoding.DecodeString(strings.TrimPrefix(auth, "Basic ")); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  67576. _tuple = _r; c = _tuple[0]; err = _tuple[1];
  67577. if (!($interfaceIsEqual(err, $ifaceNil))) {
  67578. return [username, password, ok];
  67579. }
  67580. cs = $bytesToString(c);
  67581. s = strings.IndexByte(cs, 58);
  67582. if (s < 0) {
  67583. return [username, password, ok];
  67584. }
  67585. _tmp = cs.substring(0, s); _tmp$1 = cs.substring((s + 1 >> 0)); _tmp$2 = true; username = _tmp; password = _tmp$1; ok = _tmp$2;
  67586. return [username, password, ok];
  67587. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: parseBasicAuth }; } $f.$ptr = $ptr; $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tuple = _tuple; $f.auth = auth; $f.c = c; $f.cs = cs; $f.err = err; $f.ok = ok; $f.password = password; $f.s = s; $f.username = username; $f.$s = $s; $f.$r = $r; return $f;
  67588. };
  67589. Request.ptr.prototype.SetBasicAuth = function(username, password) {
  67590. var $ptr, password, r, username;
  67591. r = this;
  67592. new Header(r.Header).Set("Authorization", "Basic " + basicAuth(username, password));
  67593. };
  67594. Request.prototype.SetBasicAuth = function(username, password) { return this.$val.SetBasicAuth(username, password); };
  67595. parseRequestLine = function(line) {
  67596. var $ptr, _tmp, _tmp$1, _tmp$2, _tmp$3, line, method, ok, proto, requestURI, s1, s2;
  67597. method = "";
  67598. requestURI = "";
  67599. proto = "";
  67600. ok = false;
  67601. s1 = strings.Index(line, " ");
  67602. s2 = strings.Index(line.substring((s1 + 1 >> 0)), " ");
  67603. if (s1 < 0 || s2 < 0) {
  67604. return [method, requestURI, proto, ok];
  67605. }
  67606. s2 = s2 + ((s1 + 1 >> 0)) >> 0;
  67607. _tmp = line.substring(0, s1); _tmp$1 = line.substring((s1 + 1 >> 0), s2); _tmp$2 = line.substring((s2 + 1 >> 0)); _tmp$3 = true; method = _tmp; requestURI = _tmp$1; proto = _tmp$2; ok = _tmp$3;
  67608. return [method, requestURI, proto, ok];
  67609. };
  67610. newTextprotoReader = function(br) {
  67611. var $ptr, _r, br, tr, v, $s, $r;
  67612. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; br = $f.br; tr = $f.tr; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  67613. _r = textprotoReaderPool.Get(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  67614. v = _r;
  67615. /* */ if (!($interfaceIsEqual(v, $ifaceNil))) { $s = 2; continue; }
  67616. /* */ $s = 3; continue;
  67617. /* if (!($interfaceIsEqual(v, $ifaceNil))) { */ case 2:
  67618. tr = $assertType(v, ptrType$18);
  67619. tr.R = br;
  67620. return tr;
  67621. /* } */ case 3:
  67622. return textproto.NewReader(br);
  67623. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: newTextprotoReader }; } $f.$ptr = $ptr; $f._r = _r; $f.br = br; $f.tr = tr; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
  67624. };
  67625. putTextprotoReader = function(r) {
  67626. var $ptr, r;
  67627. r.R = ptrType$19.nil;
  67628. textprotoReaderPool.Put(r);
  67629. };
  67630. ReadRequest = function(b) {
  67631. var $ptr, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _tmp, _tmp$1, _tmp$10, _tmp$11, _tmp$12, _tmp$13, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tmp$8, _tmp$9, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, b, err, justAuthority, mimeHeader, ok, rawurl, req, s, tp, $s, $deferred, $r;
  67632. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$10 = $f._tmp$10; _tmp$11 = $f._tmp$11; _tmp$12 = $f._tmp$12; _tmp$13 = $f._tmp$13; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tmp$6 = $f._tmp$6; _tmp$7 = $f._tmp$7; _tmp$8 = $f._tmp$8; _tmp$9 = $f._tmp$9; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; _tuple$4 = $f._tuple$4; b = $f.b; err = $f.err; justAuthority = $f.justAuthority; mimeHeader = $f.mimeHeader; ok = $f.ok; rawurl = $f.rawurl; req = $f.req; s = $f.s; tp = $f.tp; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
  67633. err = [err];
  67634. tp = [tp];
  67635. req = ptrType$1.nil;
  67636. err[0] = $ifaceNil;
  67637. _r = newTextprotoReader(b); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  67638. tp[0] = _r;
  67639. req = new Request.ptr();
  67640. s = "";
  67641. _r$1 = tp[0].ReadLine(); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  67642. _tuple = _r$1; s = _tuple[0]; err[0] = _tuple[1];
  67643. /* */ if (!($interfaceIsEqual(err[0], $ifaceNil))) { $s = 3; continue; }
  67644. /* */ $s = 4; continue;
  67645. /* if (!($interfaceIsEqual(err[0], $ifaceNil))) { */ case 3:
  67646. _tmp = ptrType$1.nil; _tmp$1 = err[0]; req = _tmp; err[0] = _tmp$1;
  67647. return [req, err[0]];
  67648. /* } */ case 4:
  67649. $deferred.push([(function(err, tp) { return function() {
  67650. var $ptr;
  67651. putTextprotoReader(tp[0]);
  67652. if ($interfaceIsEqual(err[0], io.EOF)) {
  67653. err[0] = io.ErrUnexpectedEOF;
  67654. }
  67655. }; })(err, tp), []]);
  67656. ok = false;
  67657. _tuple$1 = parseRequestLine(s); req.Method = _tuple$1[0]; req.RequestURI = _tuple$1[1]; req.Proto = _tuple$1[2]; ok = _tuple$1[3];
  67658. if (!ok) {
  67659. _tmp$2 = ptrType$1.nil; _tmp$3 = new badStringError.ptr("malformed HTTP request", s); req = _tmp$2; err[0] = _tmp$3;
  67660. return [req, err[0]];
  67661. }
  67662. rawurl = req.RequestURI;
  67663. _tuple$2 = ParseHTTPVersion(req.Proto); req.ProtoMajor = _tuple$2[0]; req.ProtoMinor = _tuple$2[1]; ok = _tuple$2[2];
  67664. if (!ok) {
  67665. _tmp$4 = ptrType$1.nil; _tmp$5 = new badStringError.ptr("malformed HTTP version", req.Proto); req = _tmp$4; err[0] = _tmp$5;
  67666. return [req, err[0]];
  67667. }
  67668. justAuthority = req.Method === "CONNECT" && !strings.HasPrefix(rawurl, "/");
  67669. if (justAuthority) {
  67670. rawurl = "http://" + rawurl;
  67671. }
  67672. _r$2 = url.ParseRequestURI(rawurl); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  67673. _tuple$3 = _r$2; req.URL = _tuple$3[0]; err[0] = _tuple$3[1];
  67674. /* */ if (!($interfaceIsEqual(err[0], $ifaceNil))) { $s = 6; continue; }
  67675. /* */ $s = 7; continue;
  67676. /* if (!($interfaceIsEqual(err[0], $ifaceNil))) { */ case 6:
  67677. _tmp$6 = ptrType$1.nil; _tmp$7 = err[0]; req = _tmp$6; err[0] = _tmp$7;
  67678. return [req, err[0]];
  67679. /* } */ case 7:
  67680. if (justAuthority) {
  67681. req.URL.Scheme = "";
  67682. }
  67683. _r$3 = tp[0].ReadMIMEHeader(); /* */ $s = 8; case 8: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  67684. _tuple$4 = _r$3; mimeHeader = _tuple$4[0]; err[0] = _tuple$4[1];
  67685. if (!($interfaceIsEqual(err[0], $ifaceNil))) {
  67686. _tmp$8 = ptrType$1.nil; _tmp$9 = err[0]; req = _tmp$8; err[0] = _tmp$9;
  67687. return [req, err[0]];
  67688. }
  67689. req.Header = mimeHeader;
  67690. req.Host = req.URL.Host;
  67691. if (req.Host === "") {
  67692. req.Host = new Header(req.Header).get("Host");
  67693. }
  67694. delete req.Header["Host"];
  67695. fixPragmaCacheControl(req.Header);
  67696. _r$4 = readTransfer(req, b); /* */ $s = 9; case 9: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
  67697. err[0] = _r$4;
  67698. if (!($interfaceIsEqual(err[0], $ifaceNil))) {
  67699. _tmp$10 = ptrType$1.nil; _tmp$11 = err[0]; req = _tmp$10; err[0] = _tmp$11;
  67700. return [req, err[0]];
  67701. }
  67702. _r$5 = shouldClose(req.ProtoMajor, req.ProtoMinor, req.Header, false); /* */ $s = 10; case 10: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
  67703. req.Close = _r$5;
  67704. _tmp$12 = req; _tmp$13 = $ifaceNil; req = _tmp$12; err[0] = _tmp$13;
  67705. return [req, err[0]];
  67706. /* */ $s = -1; case -1: } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if (!$curGoroutine.asleep) { return [req, err[0]]; } if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: ReadRequest }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$10 = _tmp$10; $f._tmp$11 = _tmp$11; $f._tmp$12 = _tmp$12; $f._tmp$13 = _tmp$13; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tmp$6 = _tmp$6; $f._tmp$7 = _tmp$7; $f._tmp$8 = _tmp$8; $f._tmp$9 = _tmp$9; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f._tuple$4 = _tuple$4; $f.b = b; $f.err = err; $f.justAuthority = justAuthority; $f.mimeHeader = mimeHeader; $f.ok = ok; $f.rawurl = rawurl; $f.req = req; $f.s = s; $f.tp = tp; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
  67707. };
  67708. $pkg.ReadRequest = ReadRequest;
  67709. MaxBytesReader = function(w, r, n) {
  67710. var $ptr, n, r, w;
  67711. return new maxBytesReader.ptr(w, r, n, false);
  67712. };
  67713. $pkg.MaxBytesReader = MaxBytesReader;
  67714. maxBytesReader.ptr.prototype.Read = function(p) {
  67715. var $ptr, _r, _tmp, _tmp$1, _tuple, _tuple$1, err, l, n, ok, p, res, x, x$1, x$2, x$3, x$4, $s, $r;
  67716. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; err = $f.err; l = $f.l; n = $f.n; ok = $f.ok; p = $f.p; res = $f.res; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; x$3 = $f.x$3; x$4 = $f.x$4; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  67717. n = 0;
  67718. err = $ifaceNil;
  67719. l = this;
  67720. if ((x = l.n, (x.$high < 0 || (x.$high === 0 && x.$low <= 0)))) {
  67721. if (!l.stopped) {
  67722. l.stopped = true;
  67723. _tuple = $assertType(l.w, ptrType$20, true); res = _tuple[0]; ok = _tuple[1];
  67724. if (ok) {
  67725. res.requestTooLarge();
  67726. }
  67727. }
  67728. _tmp = 0; _tmp$1 = errors.New("http: request body too large"); n = _tmp; err = _tmp$1;
  67729. return [n, err];
  67730. }
  67731. if ((x$1 = new $Int64(0, p.$length), x$2 = l.n, (x$1.$high > x$2.$high || (x$1.$high === x$2.$high && x$1.$low > x$2.$low)))) {
  67732. p = $subslice(p, 0, $flatten64(l.n));
  67733. }
  67734. _r = l.r.Read(p); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  67735. _tuple$1 = _r; n = _tuple$1[0]; err = _tuple$1[1];
  67736. l.n = (x$3 = l.n, x$4 = new $Int64(0, n), new $Int64(x$3.$high - x$4.$high, x$3.$low - x$4.$low));
  67737. return [n, err];
  67738. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: maxBytesReader.ptr.prototype.Read }; } $f.$ptr = $ptr; $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.err = err; $f.l = l; $f.n = n; $f.ok = ok; $f.p = p; $f.res = res; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.x$3 = x$3; $f.x$4 = x$4; $f.$s = $s; $f.$r = $r; return $f;
  67739. };
  67740. maxBytesReader.prototype.Read = function(p) { return this.$val.Read(p); };
  67741. maxBytesReader.ptr.prototype.Close = function() {
  67742. var $ptr, _r, l, $s, $r;
  67743. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; l = $f.l; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  67744. l = this;
  67745. _r = l.r.Close(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  67746. return _r;
  67747. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: maxBytesReader.ptr.prototype.Close }; } $f.$ptr = $ptr; $f._r = _r; $f.l = l; $f.$s = $s; $f.$r = $r; return $f;
  67748. };
  67749. maxBytesReader.prototype.Close = function() { return this.$val.Close(); };
  67750. copyValues = function(dst, src) {
  67751. var $ptr, _entry, _i, _i$1, _keys, _ref, _ref$1, dst, k, src, value, vs;
  67752. _ref = src;
  67753. _i = 0;
  67754. _keys = $keys(_ref);
  67755. while (true) {
  67756. if (!(_i < _keys.length)) { break; }
  67757. _entry = _ref[_keys[_i]];
  67758. if (_entry === undefined) {
  67759. _i++;
  67760. continue;
  67761. }
  67762. k = _entry.k;
  67763. vs = _entry.v;
  67764. _ref$1 = vs;
  67765. _i$1 = 0;
  67766. while (true) {
  67767. if (!(_i$1 < _ref$1.$length)) { break; }
  67768. value = ((_i$1 < 0 || _i$1 >= _ref$1.$length) ? $throwRuntimeError("index out of range") : _ref$1.$array[_ref$1.$offset + _i$1]);
  67769. new url.Values(dst).Add(k, value);
  67770. _i$1++;
  67771. }
  67772. _i++;
  67773. }
  67774. };
  67775. parsePostForm = function(r) {
  67776. var $ptr, _r, _r$1, _tuple, _tuple$1, _tuple$2, _tuple$3, b, ct, e, err, maxFormSize, ok, r, reader, vs, x, $s, $r;
  67777. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; b = $f.b; ct = $f.ct; e = $f.e; err = $f.err; maxFormSize = $f.maxFormSize; ok = $f.ok; r = $f.r; reader = $f.reader; vs = $f.vs; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  67778. vs = false;
  67779. err = $ifaceNil;
  67780. if ($interfaceIsEqual(r.Body, $ifaceNil)) {
  67781. err = errors.New("missing form body");
  67782. return [vs, err];
  67783. }
  67784. ct = new Header(r.Header).Get("Content-Type");
  67785. if (ct === "") {
  67786. ct = "application/octet-stream";
  67787. }
  67788. _r = mime.ParseMediaType(ct); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  67789. _tuple = _r; ct = _tuple[0]; err = _tuple[2];
  67790. /* */ if (ct === "application/x-www-form-urlencoded") { $s = 2; continue; }
  67791. /* */ $s = 3; continue;
  67792. /* switch (0) { default: if (ct === "application/x-www-form-urlencoded") { */ case 2:
  67793. reader = r.Body;
  67794. maxFormSize = new $Int64(2147483647, 4294967295);
  67795. _tuple$1 = $assertType(r.Body, ptrType$21, true); ok = _tuple$1[1];
  67796. if (!ok) {
  67797. maxFormSize = new $Int64(0, 10485760);
  67798. reader = io.LimitReader(r.Body, new $Int64(maxFormSize.$high + 0, maxFormSize.$low + 1));
  67799. }
  67800. _r$1 = ioutil.ReadAll(reader); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  67801. _tuple$2 = _r$1; b = _tuple$2[0]; e = _tuple$2[1];
  67802. if (!($interfaceIsEqual(e, $ifaceNil))) {
  67803. if ($interfaceIsEqual(err, $ifaceNil)) {
  67804. err = e;
  67805. }
  67806. /* break; */ $s = 3; continue;
  67807. }
  67808. if ((x = new $Int64(0, b.$length), (x.$high > maxFormSize.$high || (x.$high === maxFormSize.$high && x.$low > maxFormSize.$low)))) {
  67809. err = errors.New("http: POST too large");
  67810. return [vs, err];
  67811. }
  67812. _tuple$3 = url.ParseQuery($bytesToString(b)); vs = _tuple$3[0]; e = _tuple$3[1];
  67813. if ($interfaceIsEqual(err, $ifaceNil)) {
  67814. err = e;
  67815. }
  67816. /* } } */ case 3:
  67817. return [vs, err];
  67818. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: parsePostForm }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f.b = b; $f.ct = ct; $f.e = e; $f.err = err; $f.maxFormSize = maxFormSize; $f.ok = ok; $f.r = r; $f.reader = reader; $f.vs = vs; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
  67819. };
  67820. Request.ptr.prototype.ParseForm = function() {
  67821. var $ptr, _r, _tuple, _tuple$1, e, err, newValues, r, $s, $r;
  67822. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; e = $f.e; err = $f.err; newValues = $f.newValues; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  67823. r = this;
  67824. err = $ifaceNil;
  67825. /* */ if (r.PostForm === false) { $s = 1; continue; }
  67826. /* */ $s = 2; continue;
  67827. /* if (r.PostForm === false) { */ case 1:
  67828. /* */ if (r.Method === "POST" || r.Method === "PUT" || r.Method === "PATCH") { $s = 3; continue; }
  67829. /* */ $s = 4; continue;
  67830. /* if (r.Method === "POST" || r.Method === "PUT" || r.Method === "PATCH") { */ case 3:
  67831. _r = parsePostForm(r); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  67832. _tuple = _r; r.PostForm = _tuple[0]; err = _tuple[1];
  67833. /* } */ case 4:
  67834. if (r.PostForm === false) {
  67835. r.PostForm = new $Map();
  67836. }
  67837. /* } */ case 2:
  67838. if (r.Form === false) {
  67839. if ($keys(r.PostForm).length > 0) {
  67840. r.Form = new $Map();
  67841. copyValues(r.Form, r.PostForm);
  67842. }
  67843. newValues = false;
  67844. if (!(r.URL === ptrType$5.nil)) {
  67845. e = $ifaceNil;
  67846. _tuple$1 = url.ParseQuery(r.URL.RawQuery); newValues = _tuple$1[0]; e = _tuple$1[1];
  67847. if ($interfaceIsEqual(err, $ifaceNil)) {
  67848. err = e;
  67849. }
  67850. }
  67851. if (newValues === false) {
  67852. newValues = new $Map();
  67853. }
  67854. if (r.Form === false) {
  67855. r.Form = newValues;
  67856. } else {
  67857. copyValues(r.Form, newValues);
  67858. }
  67859. }
  67860. return err;
  67861. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Request.ptr.prototype.ParseForm }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.e = e; $f.err = err; $f.newValues = newValues; $f.r = r; $f.$s = $s; $f.$r = $r; return $f;
  67862. };
  67863. Request.prototype.ParseForm = function() { return this.$val.ParseForm(); };
  67864. Request.ptr.prototype.ParseMultipartForm = function(maxMemory) {
  67865. var $ptr, _entry, _entry$1, _i, _key$5, _keys, _r, _r$1, _r$2, _ref, _tuple, _tuple$1, err, err$1, f, k, maxMemory, mr, r, v, $s, $r;
  67866. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _entry = $f._entry; _entry$1 = $f._entry$1; _i = $f._i; _key$5 = $f._key$5; _keys = $f._keys; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _ref = $f._ref; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; err = $f.err; err$1 = $f.err$1; f = $f.f; k = $f.k; maxMemory = $f.maxMemory; mr = $f.mr; r = $f.r; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  67867. r = this;
  67868. if (r.MultipartForm === multipartByReader) {
  67869. return errors.New("http: multipart handled by MultipartReader");
  67870. }
  67871. /* */ if (r.Form === false) { $s = 1; continue; }
  67872. /* */ $s = 2; continue;
  67873. /* if (r.Form === false) { */ case 1:
  67874. _r = r.ParseForm(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  67875. err = _r;
  67876. if (!($interfaceIsEqual(err, $ifaceNil))) {
  67877. return err;
  67878. }
  67879. /* } */ case 2:
  67880. if (!(r.MultipartForm === ptrType$13.nil)) {
  67881. return $ifaceNil;
  67882. }
  67883. _r$1 = r.multipartReader(); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  67884. _tuple = _r$1; mr = _tuple[0]; err$1 = _tuple[1];
  67885. if (!($interfaceIsEqual(err$1, $ifaceNil))) {
  67886. return err$1;
  67887. }
  67888. _r$2 = mr.ReadForm(maxMemory); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  67889. _tuple$1 = _r$2; f = _tuple$1[0]; err$1 = _tuple$1[1];
  67890. if (!($interfaceIsEqual(err$1, $ifaceNil))) {
  67891. return err$1;
  67892. }
  67893. _ref = f.Value;
  67894. _i = 0;
  67895. _keys = $keys(_ref);
  67896. while (true) {
  67897. if (!(_i < _keys.length)) { break; }
  67898. _entry = _ref[_keys[_i]];
  67899. if (_entry === undefined) {
  67900. _i++;
  67901. continue;
  67902. }
  67903. k = _entry.k;
  67904. v = _entry.v;
  67905. _key$5 = k; (r.Form || $throwRuntimeError("assignment to entry in nil map"))[_key$5] = { k: _key$5, v: $appendSlice((_entry$1 = r.Form[k], _entry$1 !== undefined ? _entry$1.v : sliceType.nil), v) };
  67906. _i++;
  67907. }
  67908. r.MultipartForm = f;
  67909. return $ifaceNil;
  67910. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Request.ptr.prototype.ParseMultipartForm }; } $f.$ptr = $ptr; $f._entry = _entry; $f._entry$1 = _entry$1; $f._i = _i; $f._key$5 = _key$5; $f._keys = _keys; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._ref = _ref; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.err = err; $f.err$1 = err$1; $f.f = f; $f.k = k; $f.maxMemory = maxMemory; $f.mr = mr; $f.r = r; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
  67911. };
  67912. Request.prototype.ParseMultipartForm = function(maxMemory) { return this.$val.ParseMultipartForm(maxMemory); };
  67913. Request.ptr.prototype.FormValue = function(key) {
  67914. var $ptr, _entry, _r, key, r, vs, $s, $r;
  67915. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _entry = $f._entry; _r = $f._r; key = $f.key; r = $f.r; vs = $f.vs; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  67916. r = this;
  67917. /* */ if (r.Form === false) { $s = 1; continue; }
  67918. /* */ $s = 2; continue;
  67919. /* if (r.Form === false) { */ case 1:
  67920. _r = r.ParseMultipartForm(new $Int64(0, 33554432)); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  67921. _r;
  67922. /* } */ case 2:
  67923. vs = (_entry = r.Form[key], _entry !== undefined ? _entry.v : sliceType.nil);
  67924. if (vs.$length > 0) {
  67925. return (0 >= vs.$length ? $throwRuntimeError("index out of range") : vs.$array[vs.$offset + 0]);
  67926. }
  67927. return "";
  67928. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Request.ptr.prototype.FormValue }; } $f.$ptr = $ptr; $f._entry = _entry; $f._r = _r; $f.key = key; $f.r = r; $f.vs = vs; $f.$s = $s; $f.$r = $r; return $f;
  67929. };
  67930. Request.prototype.FormValue = function(key) { return this.$val.FormValue(key); };
  67931. Request.ptr.prototype.PostFormValue = function(key) {
  67932. var $ptr, _entry, _r, key, r, vs, $s, $r;
  67933. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _entry = $f._entry; _r = $f._r; key = $f.key; r = $f.r; vs = $f.vs; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  67934. r = this;
  67935. /* */ if (r.PostForm === false) { $s = 1; continue; }
  67936. /* */ $s = 2; continue;
  67937. /* if (r.PostForm === false) { */ case 1:
  67938. _r = r.ParseMultipartForm(new $Int64(0, 33554432)); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  67939. _r;
  67940. /* } */ case 2:
  67941. vs = (_entry = r.PostForm[key], _entry !== undefined ? _entry.v : sliceType.nil);
  67942. if (vs.$length > 0) {
  67943. return (0 >= vs.$length ? $throwRuntimeError("index out of range") : vs.$array[vs.$offset + 0]);
  67944. }
  67945. return "";
  67946. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Request.ptr.prototype.PostFormValue }; } $f.$ptr = $ptr; $f._entry = _entry; $f._r = _r; $f.key = key; $f.r = r; $f.vs = vs; $f.$s = $s; $f.$r = $r; return $f;
  67947. };
  67948. Request.prototype.PostFormValue = function(key) { return this.$val.PostFormValue(key); };
  67949. Request.ptr.prototype.FormFile = function(key) {
  67950. var $ptr, _entry, _r, _tuple, err, err$1, f, fhs, key, r, $s, $r;
  67951. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _entry = $f._entry; _r = $f._r; _tuple = $f._tuple; err = $f.err; err$1 = $f.err$1; f = $f.f; fhs = $f.fhs; key = $f.key; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  67952. r = this;
  67953. if (r.MultipartForm === multipartByReader) {
  67954. return [$ifaceNil, ptrType$22.nil, errors.New("http: multipart handled by MultipartReader")];
  67955. }
  67956. /* */ if (r.MultipartForm === ptrType$13.nil) { $s = 1; continue; }
  67957. /* */ $s = 2; continue;
  67958. /* if (r.MultipartForm === ptrType$13.nil) { */ case 1:
  67959. _r = r.ParseMultipartForm(new $Int64(0, 33554432)); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  67960. err = _r;
  67961. if (!($interfaceIsEqual(err, $ifaceNil))) {
  67962. return [$ifaceNil, ptrType$22.nil, err];
  67963. }
  67964. /* } */ case 2:
  67965. if (!(r.MultipartForm === ptrType$13.nil) && !(r.MultipartForm.File === false)) {
  67966. fhs = (_entry = r.MultipartForm.File[key], _entry !== undefined ? _entry.v : sliceType$9.nil);
  67967. if (fhs.$length > 0) {
  67968. _tuple = (0 >= fhs.$length ? $throwRuntimeError("index out of range") : fhs.$array[fhs.$offset + 0]).Open(); f = _tuple[0]; err$1 = _tuple[1];
  67969. return [f, (0 >= fhs.$length ? $throwRuntimeError("index out of range") : fhs.$array[fhs.$offset + 0]), err$1];
  67970. }
  67971. }
  67972. return [$ifaceNil, ptrType$22.nil, $pkg.ErrMissingFile];
  67973. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Request.ptr.prototype.FormFile }; } $f.$ptr = $ptr; $f._entry = _entry; $f._r = _r; $f._tuple = _tuple; $f.err = err; $f.err$1 = err$1; $f.f = f; $f.fhs = fhs; $f.key = key; $f.r = r; $f.$s = $s; $f.$r = $r; return $f;
  67974. };
  67975. Request.prototype.FormFile = function(key) { return this.$val.FormFile(key); };
  67976. Request.ptr.prototype.expectsContinue = function() {
  67977. var $ptr, r;
  67978. r = this;
  67979. return hasToken(new Header(r.Header).get("Expect"), "100-continue");
  67980. };
  67981. Request.prototype.expectsContinue = function() { return this.$val.expectsContinue(); };
  67982. Request.ptr.prototype.wantsHttp10KeepAlive = function() {
  67983. var $ptr, r;
  67984. r = this;
  67985. if (!((r.ProtoMajor === 1)) || !((r.ProtoMinor === 0))) {
  67986. return false;
  67987. }
  67988. return hasToken(new Header(r.Header).get("Connection"), "keep-alive");
  67989. };
  67990. Request.prototype.wantsHttp10KeepAlive = function() { return this.$val.wantsHttp10KeepAlive(); };
  67991. Request.ptr.prototype.wantsClose = function() {
  67992. var $ptr, r;
  67993. r = this;
  67994. return hasToken(new Header(r.Header).get("Connection"), "close");
  67995. };
  67996. Request.prototype.wantsClose = function() { return this.$val.wantsClose(); };
  67997. Request.ptr.prototype.closeBody = function() {
  67998. var $ptr, _r, r, $s, $r;
  67999. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  68000. r = this;
  68001. /* */ if (!($interfaceIsEqual(r.Body, $ifaceNil))) { $s = 1; continue; }
  68002. /* */ $s = 2; continue;
  68003. /* if (!($interfaceIsEqual(r.Body, $ifaceNil))) { */ case 1:
  68004. _r = r.Body.Close(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  68005. _r;
  68006. /* } */ case 2:
  68007. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Request.ptr.prototype.closeBody }; } $f.$ptr = $ptr; $f._r = _r; $f.r = r; $f.$s = $s; $f.$r = $r; return $f;
  68008. };
  68009. Request.prototype.closeBody = function() { return this.$val.closeBody(); };
  68010. Response.ptr.prototype.Cookies = function() {
  68011. var $ptr, _r, r, $s, $r;
  68012. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  68013. r = this;
  68014. _r = readSetCookies(r.Header); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  68015. return _r;
  68016. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Response.ptr.prototype.Cookies }; } $f.$ptr = $ptr; $f._r = _r; $f.r = r; $f.$s = $s; $f.$r = $r; return $f;
  68017. };
  68018. Response.prototype.Cookies = function() { return this.$val.Cookies(); };
  68019. Response.ptr.prototype.Location = function() {
  68020. var $ptr, _r, _r$1, lv, r, $s, $r;
  68021. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; lv = $f.lv; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  68022. r = this;
  68023. lv = new Header(r.Header).Get("Location");
  68024. if (lv === "") {
  68025. return [ptrType$5.nil, $pkg.ErrNoLocation];
  68026. }
  68027. /* */ if (!(r.Request === ptrType$1.nil) && !(r.Request.URL === ptrType$5.nil)) { $s = 1; continue; }
  68028. /* */ $s = 2; continue;
  68029. /* if (!(r.Request === ptrType$1.nil) && !(r.Request.URL === ptrType$5.nil)) { */ case 1:
  68030. _r = r.Request.URL.Parse(lv); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  68031. return _r;
  68032. /* } */ case 2:
  68033. _r$1 = url.Parse(lv); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  68034. return _r$1;
  68035. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Response.ptr.prototype.Location }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f.lv = lv; $f.r = r; $f.$s = $s; $f.$r = $r; return $f;
  68036. };
  68037. Response.prototype.Location = function() { return this.$val.Location(); };
  68038. fixPragmaCacheControl = function(header) {
  68039. var $ptr, _entry, _entry$1, _key$5, _tuple, _tuple$1, header, hp, ok, presentcc;
  68040. _tuple = (_entry = header["Pragma"], _entry !== undefined ? [_entry.v, true] : [sliceType.nil, false]); hp = _tuple[0]; ok = _tuple[1];
  68041. if (ok && hp.$length > 0 && (0 >= hp.$length ? $throwRuntimeError("index out of range") : hp.$array[hp.$offset + 0]) === "no-cache") {
  68042. _tuple$1 = (_entry$1 = header["Cache-Control"], _entry$1 !== undefined ? [_entry$1.v, true] : [sliceType.nil, false]); presentcc = _tuple$1[1];
  68043. if (!presentcc) {
  68044. _key$5 = "Cache-Control"; (header || $throwRuntimeError("assignment to entry in nil map"))[_key$5] = { k: _key$5, v: new sliceType(["no-cache"]) };
  68045. }
  68046. }
  68047. };
  68048. Response.ptr.prototype.ProtoAtLeast = function(major, minor) {
  68049. var $ptr, major, minor, r;
  68050. r = this;
  68051. return r.ProtoMajor > major || (r.ProtoMajor === major) && r.ProtoMinor >= minor;
  68052. };
  68053. Response.prototype.ProtoAtLeast = function(major, minor) { return this.$val.ProtoAtLeast(major, minor); };
  68054. Response.ptr.prototype.Write = function(w) {
  68055. var $ptr, _entry, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _tmp, _tmp$1, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, buf, contentLengthAlreadySent, err, err$1, err$2, err$3, err$4, n, ok, protoMajor, protoMinor, r, r1, statusCode, text, tw, w, x, x$1, x$2, x$3, $s, $r;
  68056. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _entry = $f._entry; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; _tuple$4 = $f._tuple$4; _tuple$5 = $f._tuple$5; buf = $f.buf; contentLengthAlreadySent = $f.contentLengthAlreadySent; err = $f.err; err$1 = $f.err$1; err$2 = $f.err$2; err$3 = $f.err$3; err$4 = $f.err$4; n = $f.n; ok = $f.ok; protoMajor = $f.protoMajor; protoMinor = $f.protoMinor; r = $f.r; r1 = $f.r1; statusCode = $f.statusCode; text = $f.text; tw = $f.tw; w = $f.w; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; x$3 = $f.x$3; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  68057. r = this;
  68058. text = r.Status;
  68059. if (text === "") {
  68060. ok = false;
  68061. _tuple = (_entry = statusText[r.StatusCode], _entry !== undefined ? [_entry.v, true] : ["", false]); text = _tuple[0]; ok = _tuple[1];
  68062. if (!ok) {
  68063. text = "status code " + strconv.Itoa(r.StatusCode);
  68064. }
  68065. }
  68066. _tmp = strconv.Itoa(r.ProtoMajor); _tmp$1 = strconv.Itoa(r.ProtoMinor); protoMajor = _tmp; protoMinor = _tmp$1;
  68067. statusCode = strconv.Itoa(r.StatusCode) + " ";
  68068. text = strings.TrimPrefix(text, statusCode);
  68069. _r = io.WriteString(w, "HTTP/" + protoMajor + "." + protoMinor + " " + statusCode + text + "\r\n"); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  68070. _tuple$1 = _r; err = _tuple$1[1];
  68071. /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 2; continue; }
  68072. /* */ $s = 3; continue;
  68073. /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 2:
  68074. return err;
  68075. /* } */ case 3:
  68076. r1 = new Response.ptr();
  68077. $copy(r1, r, Response);
  68078. /* */ if ((x = r1.ContentLength, (x.$high === 0 && x.$low === 0)) && !($interfaceIsEqual(r1.Body, $ifaceNil))) { $s = 4; continue; }
  68079. /* */ $s = 5; continue;
  68080. /* if ((x = r1.ContentLength, (x.$high === 0 && x.$low === 0)) && !($interfaceIsEqual(r1.Body, $ifaceNil))) { */ case 4:
  68081. buf = $clone(arrayType$1.zero(), arrayType$1);
  68082. _r$1 = r1.Body.Read(new sliceType$2(buf)); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  68083. _tuple$2 = _r$1; n = _tuple$2[0]; err$1 = _tuple$2[1];
  68084. if (!($interfaceIsEqual(err$1, $ifaceNil)) && !($interfaceIsEqual(err$1, io.EOF))) {
  68085. return err$1;
  68086. }
  68087. if (n === 0) {
  68088. r1.Body = eofReader;
  68089. } else {
  68090. r1.ContentLength = new $Int64(-1, 4294967295);
  68091. r1.Body = (x$1 = new structType$1.ptr(io.MultiReader(new sliceType$10([bytes.NewReader($subslice(new sliceType$2(buf), 0, 1)), r.Body])), r.Body), new x$1.constructor.elem(x$1));
  68092. }
  68093. /* } */ case 5:
  68094. if ((x$2 = r1.ContentLength, (x$2.$high === -1 && x$2.$low === 4294967295)) && !r1.Close && r1.ProtoAtLeast(1, 1) && !chunked(r1.TransferEncoding)) {
  68095. r1.Close = true;
  68096. }
  68097. _r$2 = newTransferWriter(r1); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  68098. _tuple$3 = _r$2; tw = _tuple$3[0]; err$2 = _tuple$3[1];
  68099. if (!($interfaceIsEqual(err$2, $ifaceNil))) {
  68100. return err$2;
  68101. }
  68102. _r$3 = tw.WriteHeader(w); /* */ $s = 8; case 8: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  68103. err$2 = _r$3;
  68104. if (!($interfaceIsEqual(err$2, $ifaceNil))) {
  68105. return err$2;
  68106. }
  68107. _r$4 = new Header(r.Header).WriteSubset(w, respExcludeHeader); /* */ $s = 9; case 9: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
  68108. err$2 = _r$4;
  68109. if (!($interfaceIsEqual(err$2, $ifaceNil))) {
  68110. return err$2;
  68111. }
  68112. contentLengthAlreadySent = tw.shouldSendContentLength();
  68113. /* */ if ((x$3 = r1.ContentLength, (x$3.$high === 0 && x$3.$low === 0)) && !chunked(r1.TransferEncoding) && !contentLengthAlreadySent) { $s = 10; continue; }
  68114. /* */ $s = 11; continue;
  68115. /* if ((x$3 = r1.ContentLength, (x$3.$high === 0 && x$3.$low === 0)) && !chunked(r1.TransferEncoding) && !contentLengthAlreadySent) { */ case 10:
  68116. _r$5 = io.WriteString(w, "Content-Length: 0\r\n"); /* */ $s = 12; case 12: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
  68117. _tuple$4 = _r$5; err$3 = _tuple$4[1];
  68118. /* */ if (!($interfaceIsEqual(err$3, $ifaceNil))) { $s = 13; continue; }
  68119. /* */ $s = 14; continue;
  68120. /* if (!($interfaceIsEqual(err$3, $ifaceNil))) { */ case 13:
  68121. return err$3;
  68122. /* } */ case 14:
  68123. /* } */ case 11:
  68124. _r$6 = io.WriteString(w, "\r\n"); /* */ $s = 15; case 15: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
  68125. _tuple$5 = _r$6; err$4 = _tuple$5[1];
  68126. /* */ if (!($interfaceIsEqual(err$4, $ifaceNil))) { $s = 16; continue; }
  68127. /* */ $s = 17; continue;
  68128. /* if (!($interfaceIsEqual(err$4, $ifaceNil))) { */ case 16:
  68129. return err$4;
  68130. /* } */ case 17:
  68131. _r$7 = tw.WriteBody(w); /* */ $s = 18; case 18: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
  68132. err$2 = _r$7;
  68133. if (!($interfaceIsEqual(err$2, $ifaceNil))) {
  68134. return err$2;
  68135. }
  68136. return $ifaceNil;
  68137. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Response.ptr.prototype.Write }; } $f.$ptr = $ptr; $f._entry = _entry; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f._tuple$4 = _tuple$4; $f._tuple$5 = _tuple$5; $f.buf = buf; $f.contentLengthAlreadySent = contentLengthAlreadySent; $f.err = err; $f.err$1 = err$1; $f.err$2 = err$2; $f.err$3 = err$3; $f.err$4 = err$4; $f.n = n; $f.ok = ok; $f.protoMajor = protoMajor; $f.protoMinor = protoMinor; $f.r = r; $f.r1 = r1; $f.statusCode = statusCode; $f.text = text; $f.tw = tw; $f.w = w; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.x$3 = x$3; $f.$s = $s; $f.$r = $r; return $f;
  68138. };
  68139. Response.prototype.Write = function(w) { return this.$val.Write(w); };
  68140. conn.ptr.prototype.hijacked = function() {
  68141. var $ptr, c, $s, $deferred, $r;
  68142. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; c = $f.c; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
  68143. c = this;
  68144. $r = c.mu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  68145. $deferred.push([$methodVal(c.mu, "Unlock"), []]);
  68146. return c.hijackedv;
  68147. /* */ $s = -1; case -1: } return; } } catch(err) { $err = err; $s = -1; return false; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: conn.ptr.prototype.hijacked }; } $f.$ptr = $ptr; $f.c = c; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
  68148. };
  68149. conn.prototype.hijacked = function() { return this.$val.hijacked(); };
  68150. conn.ptr.prototype.hijack = function() {
  68151. var $ptr, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, buf, c, err, rwc, $s, $deferred, $r;
  68152. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; buf = $f.buf; c = $f.c; err = $f.err; rwc = $f.rwc; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
  68153. rwc = $ifaceNil;
  68154. buf = ptrType$23.nil;
  68155. err = $ifaceNil;
  68156. c = this;
  68157. $r = c.mu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  68158. $deferred.push([$methodVal(c.mu, "Unlock"), []]);
  68159. if (c.hijackedv) {
  68160. _tmp = $ifaceNil; _tmp$1 = ptrType$23.nil; _tmp$2 = $pkg.ErrHijacked; rwc = _tmp; buf = _tmp$1; err = _tmp$2;
  68161. return [rwc, buf, err];
  68162. }
  68163. if (!(c.closeNotifyc === chanType$2.nil)) {
  68164. _tmp$3 = $ifaceNil; _tmp$4 = ptrType$23.nil; _tmp$5 = errors.New("http: Hijack is incompatible with use of CloseNotifier"); rwc = _tmp$3; buf = _tmp$4; err = _tmp$5;
  68165. return [rwc, buf, err];
  68166. }
  68167. c.hijackedv = true;
  68168. rwc = c.rwc;
  68169. buf = c.buf;
  68170. c.rwc = $ifaceNil;
  68171. c.buf = ptrType$23.nil;
  68172. $r = c.setState(rwc, 3); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  68173. return [rwc, buf, err];
  68174. /* */ $s = -1; case -1: } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if (!$curGoroutine.asleep) { return [rwc, buf, err]; } if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: conn.ptr.prototype.hijack }; } $f.$ptr = $ptr; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f.buf = buf; $f.c = c; $f.err = err; $f.rwc = rwc; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
  68175. };
  68176. conn.prototype.hijack = function() { return this.$val.hijack(); };
  68177. conn.ptr.prototype.closeNotify = function() {
  68178. var $ptr, _tuple, c, pr, pw, readSource, $s, $deferred, $r;
  68179. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _tuple = $f._tuple; c = $f.c; pr = $f.pr; pw = $f.pw; readSource = $f.readSource; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
  68180. c = [c];
  68181. pw = [pw];
  68182. readSource = [readSource];
  68183. c[0] = this;
  68184. $r = c[0].mu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  68185. $deferred.push([$methodVal(c[0].mu, "Unlock"), []]);
  68186. /* */ if (c[0].closeNotifyc === chanType$2.nil) { $s = 2; continue; }
  68187. /* */ $s = 3; continue;
  68188. /* if (c[0].closeNotifyc === chanType$2.nil) { */ case 2:
  68189. c[0].closeNotifyc = new chanType$2(1);
  68190. if (c[0].hijackedv) {
  68191. return c[0].closeNotifyc;
  68192. }
  68193. _tuple = io.Pipe(); pr = _tuple[0]; pw[0] = _tuple[1];
  68194. readSource[0] = c[0].sr.r;
  68195. $r = c[0].sr.Mutex.Lock(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  68196. c[0].sr.r = pr;
  68197. $r = c[0].sr.Mutex.Unlock(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  68198. $go((function(c, pw, readSource) { return function $b() {
  68199. var $ptr, _r, _r$1, _tuple$1, err, $s, $r;
  68200. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _tuple$1 = $f._tuple$1; err = $f.err; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  68201. _r = io.Copy(pw[0], readSource[0]); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  68202. _tuple$1 = _r; err = _tuple$1[1];
  68203. if ($interfaceIsEqual(err, $ifaceNil)) {
  68204. err = io.EOF;
  68205. }
  68206. _r$1 = pw[0].CloseWithError(err); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  68207. _r$1;
  68208. $r = c[0].noteClientGone(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  68209. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: $b }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._tuple$1 = _tuple$1; $f.err = err; $f.$s = $s; $f.$r = $r; return $f;
  68210. }; })(c, pw, readSource), []);
  68211. /* } */ case 3:
  68212. return c[0].closeNotifyc;
  68213. /* */ $s = -1; case -1: } return; } } catch(err) { $err = err; $s = -1; return chanType$3.nil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: conn.ptr.prototype.closeNotify }; } $f.$ptr = $ptr; $f._tuple = _tuple; $f.c = c; $f.pr = pr; $f.pw = pw; $f.readSource = readSource; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
  68214. };
  68215. conn.prototype.closeNotify = function() { return this.$val.closeNotify(); };
  68216. conn.ptr.prototype.noteClientGone = function() {
  68217. var $ptr, c, $s, $deferred, $r;
  68218. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; c = $f.c; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
  68219. c = this;
  68220. $r = c.mu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  68221. $deferred.push([$methodVal(c.mu, "Unlock"), []]);
  68222. /* */ if (!(c.closeNotifyc === chanType$2.nil) && !c.clientGone) { $s = 2; continue; }
  68223. /* */ $s = 3; continue;
  68224. /* if (!(c.closeNotifyc === chanType$2.nil) && !c.clientGone) { */ case 2:
  68225. $r = $send(c.closeNotifyc, true); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  68226. /* } */ case 3:
  68227. c.clientGone = true;
  68228. /* */ $s = -1; case -1: } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: conn.ptr.prototype.noteClientGone }; } $f.$ptr = $ptr; $f.c = c; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
  68229. };
  68230. conn.prototype.noteClientGone = function() { return this.$val.noteClientGone(); };
  68231. liveSwitchReader.ptr.prototype.Read = function(p) {
  68232. var $ptr, _r, _tuple, err, n, p, r, sr, $s, $r;
  68233. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tuple = $f._tuple; err = $f.err; n = $f.n; p = $f.p; r = $f.r; sr = $f.sr; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  68234. n = 0;
  68235. err = $ifaceNil;
  68236. sr = this;
  68237. $r = sr.Mutex.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  68238. r = sr.r;
  68239. $r = sr.Mutex.Unlock(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  68240. _r = r.Read(p); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  68241. _tuple = _r; n = _tuple[0]; err = _tuple[1];
  68242. return [n, err];
  68243. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: liveSwitchReader.ptr.prototype.Read }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple = _tuple; $f.err = err; $f.n = n; $f.p = p; $f.r = r; $f.sr = sr; $f.$s = $s; $f.$r = $r; return $f;
  68244. };
  68245. liveSwitchReader.prototype.Read = function(p) { return this.$val.Read(p); };
  68246. chunkWriter.ptr.prototype.Write = function(p) {
  68247. var $ptr, _r, _r$1, _r$2, _r$3, _r$4, _tmp, _tmp$1, _tuple, _tuple$1, _tuple$2, cw, err, n, p, $s, $r;
  68248. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; cw = $f.cw; err = $f.err; n = $f.n; p = $f.p; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  68249. n = 0;
  68250. err = $ifaceNil;
  68251. cw = this;
  68252. /* */ if (!cw.wroteHeader) { $s = 1; continue; }
  68253. /* */ $s = 2; continue;
  68254. /* if (!cw.wroteHeader) { */ case 1:
  68255. $r = cw.writeHeader(p); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  68256. /* } */ case 2:
  68257. if (cw.res.req.Method === "HEAD") {
  68258. _tmp = p.$length; _tmp$1 = $ifaceNil; n = _tmp; err = _tmp$1;
  68259. return [n, err];
  68260. }
  68261. /* */ if (cw.chunking) { $s = 4; continue; }
  68262. /* */ $s = 5; continue;
  68263. /* if (cw.chunking) { */ case 4:
  68264. _r = fmt.Fprintf(cw.res.conn.buf, "%x\r\n", new sliceType$1([new $Int(p.$length)])); /* */ $s = 6; case 6: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  68265. _tuple = _r; err = _tuple[1];
  68266. /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 7; continue; }
  68267. /* */ $s = 8; continue;
  68268. /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 7:
  68269. _r$1 = cw.res.conn.rwc.Close(); /* */ $s = 9; case 9: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  68270. _r$1;
  68271. return [n, err];
  68272. /* } */ case 8:
  68273. /* } */ case 5:
  68274. _r$2 = cw.res.conn.buf.Writer.Write(p); /* */ $s = 10; case 10: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  68275. _tuple$1 = _r$2; n = _tuple$1[0]; err = _tuple$1[1];
  68276. /* */ if (cw.chunking && $interfaceIsEqual(err, $ifaceNil)) { $s = 11; continue; }
  68277. /* */ $s = 12; continue;
  68278. /* if (cw.chunking && $interfaceIsEqual(err, $ifaceNil)) { */ case 11:
  68279. _r$3 = cw.res.conn.buf.Writer.Write(crlf); /* */ $s = 13; case 13: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  68280. _tuple$2 = _r$3; err = _tuple$2[1];
  68281. /* } */ case 12:
  68282. /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 14; continue; }
  68283. /* */ $s = 15; continue;
  68284. /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 14:
  68285. _r$4 = cw.res.conn.rwc.Close(); /* */ $s = 16; case 16: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
  68286. _r$4;
  68287. /* } */ case 15:
  68288. return [n, err];
  68289. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: chunkWriter.ptr.prototype.Write }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f.cw = cw; $f.err = err; $f.n = n; $f.p = p; $f.$s = $s; $f.$r = $r; return $f;
  68290. };
  68291. chunkWriter.prototype.Write = function(p) { return this.$val.Write(p); };
  68292. chunkWriter.ptr.prototype.flush = function() {
  68293. var $ptr, _r, cw, $s, $r;
  68294. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; cw = $f.cw; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  68295. cw = this;
  68296. /* */ if (!cw.wroteHeader) { $s = 1; continue; }
  68297. /* */ $s = 2; continue;
  68298. /* if (!cw.wroteHeader) { */ case 1:
  68299. $r = cw.writeHeader(sliceType$2.nil); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  68300. /* } */ case 2:
  68301. _r = cw.res.conn.buf.Writer.Flush(); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  68302. _r;
  68303. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: chunkWriter.ptr.prototype.flush }; } $f.$ptr = $ptr; $f._r = _r; $f.cw = cw; $f.$s = $s; $f.$r = $r; return $f;
  68304. };
  68305. chunkWriter.prototype.flush = function() { return this.$val.flush(); };
  68306. chunkWriter.ptr.prototype.close = function() {
  68307. var $ptr, _r, cw, $s, $r;
  68308. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; cw = $f.cw; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  68309. cw = this;
  68310. /* */ if (!cw.wroteHeader) { $s = 1; continue; }
  68311. /* */ $s = 2; continue;
  68312. /* if (!cw.wroteHeader) { */ case 1:
  68313. $r = cw.writeHeader(sliceType$2.nil); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  68314. /* } */ case 2:
  68315. /* */ if (cw.chunking) { $s = 4; continue; }
  68316. /* */ $s = 5; continue;
  68317. /* if (cw.chunking) { */ case 4:
  68318. _r = cw.res.conn.buf.Writer.WriteString("0\r\n\r\n"); /* */ $s = 6; case 6: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  68319. _r;
  68320. /* } */ case 5:
  68321. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: chunkWriter.ptr.prototype.close }; } $f.$ptr = $ptr; $f._r = _r; $f.cw = cw; $f.$s = $s; $f.$r = $r; return $f;
  68322. };
  68323. chunkWriter.prototype.close = function() { return this.$val.close(); };
  68324. response.ptr.prototype.requestTooLarge = function() {
  68325. var $ptr, w;
  68326. w = this;
  68327. w.closeAfterReply = true;
  68328. w.requestBodyLimitHit = true;
  68329. if (!w.wroteHeader) {
  68330. new Header(w.Header()).Set("Connection", "close");
  68331. }
  68332. };
  68333. response.prototype.requestTooLarge = function() { return this.$val.requestTooLarge(); };
  68334. response.ptr.prototype.needsSniff = function() {
  68335. var $ptr, _entry, _tuple, haveType, w, x;
  68336. w = this;
  68337. _tuple = (_entry = w.handlerHeader["Content-Type"], _entry !== undefined ? [_entry.v, true] : [sliceType.nil, false]); haveType = _tuple[1];
  68338. return !w.cw.wroteHeader && !haveType && (x = w.written, (x.$high < 0 || (x.$high === 0 && x.$low < 512)));
  68339. };
  68340. response.prototype.needsSniff = function() { return this.$val.needsSniff(); };
  68341. srcIsRegularFile = function(src) {
  68342. var $ptr, _r, _r$1, _r$2, _r$3, _ref, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, _tuple$1, err, err$1, fi, isRegular, src, v, v$1, v$2, $s, $r;
  68343. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _ref = $f._ref; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; err = $f.err; err$1 = $f.err$1; fi = $f.fi; isRegular = $f.isRegular; src = $f.src; v = $f.v; v$1 = $f.v$1; v$2 = $f.v$2; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  68344. isRegular = false;
  68345. err = $ifaceNil;
  68346. _ref = src;
  68347. /* */ if ($assertType(_ref, ptrType$24, true)[1]) { $s = 1; continue; }
  68348. /* */ if ($assertType(_ref, ptrType$25, true)[1]) { $s = 2; continue; }
  68349. /* */ $s = 3; continue;
  68350. /* if ($assertType(_ref, ptrType$24, true)[1]) { */ case 1:
  68351. v = _ref.$val;
  68352. _r = v.Stat(); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  68353. _tuple = _r; fi = _tuple[0]; err$1 = _tuple[1];
  68354. if (!($interfaceIsEqual(err$1, $ifaceNil))) {
  68355. _tmp = false; _tmp$1 = err$1; isRegular = _tmp; err = _tmp$1;
  68356. return [isRegular, err];
  68357. }
  68358. _r$1 = fi.Mode(); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  68359. _r$2 = new os.FileMode(_r$1).IsRegular(); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  68360. _tmp$2 = _r$2; _tmp$3 = $ifaceNil; isRegular = _tmp$2; err = _tmp$3;
  68361. return [isRegular, err];
  68362. $s = 4; continue;
  68363. /* } else if ($assertType(_ref, ptrType$25, true)[1]) { */ case 2:
  68364. v$1 = _ref.$val;
  68365. _r$3 = srcIsRegularFile(v$1.R); /* */ $s = 8; case 8: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  68366. _tuple$1 = _r$3; isRegular = _tuple$1[0]; err = _tuple$1[1];
  68367. return [isRegular, err];
  68368. $s = 4; continue;
  68369. /* } else { */ case 3:
  68370. v$2 = _ref;
  68371. return [isRegular, err];
  68372. /* } */ case 4:
  68373. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: srcIsRegularFile }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._ref = _ref; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.err = err; $f.err$1 = err$1; $f.fi = fi; $f.isRegular = isRegular; $f.src = src; $f.v = v; $f.v$1 = v$1; $f.v$2 = v$2; $f.$s = $s; $f.$r = $r; return $f;
  68374. };
  68375. response.ptr.prototype.ReadFrom = function(src) {
  68376. var $ptr, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, _tuple$5, err, err$1, err$2, n, n0, n0$1, n0$2, ok, regFile, rf, src, w, x, x$1, x$2, x$3, x$4, x$5, x$6, x$7, $s, $r;
  68377. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tmp$6 = $f._tmp$6; _tmp$7 = $f._tmp$7; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; _tuple$4 = $f._tuple$4; _tuple$5 = $f._tuple$5; err = $f.err; err$1 = $f.err$1; err$2 = $f.err$2; n = $f.n; n0 = $f.n0; n0$1 = $f.n0$1; n0$2 = $f.n0$2; ok = $f.ok; regFile = $f.regFile; rf = $f.rf; src = $f.src; w = $f.w; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; x$3 = $f.x$3; x$4 = $f.x$4; x$5 = $f.x$5; x$6 = $f.x$6; x$7 = $f.x$7; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  68378. n = new $Int64(0, 0);
  68379. err = $ifaceNil;
  68380. w = this;
  68381. _tuple = $assertType(w.conn.rwc, io.ReaderFrom, true); rf = _tuple[0]; ok = _tuple[1];
  68382. _r = srcIsRegularFile(src); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  68383. _tuple$1 = _r; regFile = _tuple$1[0]; err = _tuple$1[1];
  68384. if (!($interfaceIsEqual(err, $ifaceNil))) {
  68385. _tmp = new $Int64(0, 0); _tmp$1 = err; n = _tmp; err = _tmp$1;
  68386. return [n, err];
  68387. }
  68388. /* */ if (!ok || !regFile) { $s = 2; continue; }
  68389. /* */ $s = 3; continue;
  68390. /* if (!ok || !regFile) { */ case 2:
  68391. _r$1 = io.Copy((x = new writerOnly.ptr(w), new x.constructor.elem(x)), src); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  68392. _tuple$2 = _r$1; n = _tuple$2[0]; err = _tuple$2[1];
  68393. return [n, err];
  68394. /* } */ case 3:
  68395. /* */ if (!w.wroteHeader) { $s = 5; continue; }
  68396. /* */ $s = 6; continue;
  68397. /* if (!w.wroteHeader) { */ case 5:
  68398. $r = w.WriteHeader(200); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  68399. /* } */ case 6:
  68400. /* */ if (w.needsSniff()) { $s = 8; continue; }
  68401. /* */ $s = 9; continue;
  68402. /* if (w.needsSniff()) { */ case 8:
  68403. _r$2 = io.Copy((x$1 = new writerOnly.ptr(w), new x$1.constructor.elem(x$1)), io.LimitReader(src, new $Int64(0, 512))); /* */ $s = 10; case 10: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  68404. _tuple$3 = _r$2; n0 = _tuple$3[0]; err$1 = _tuple$3[1];
  68405. n = (x$2 = n0, new $Int64(n.$high + x$2.$high, n.$low + x$2.$low));
  68406. if (!($interfaceIsEqual(err$1, $ifaceNil))) {
  68407. _tmp$2 = n; _tmp$3 = err$1; n = _tmp$2; err = _tmp$3;
  68408. return [n, err];
  68409. }
  68410. /* } */ case 9:
  68411. _r$3 = w.w.Flush(); /* */ $s = 11; case 11: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  68412. _r$3;
  68413. $r = w.cw.flush(); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  68414. /* */ if (!w.cw.chunking && w.bodyAllowed()) { $s = 13; continue; }
  68415. /* */ $s = 14; continue;
  68416. /* if (!w.cw.chunking && w.bodyAllowed()) { */ case 13:
  68417. _r$4 = rf.ReadFrom(src); /* */ $s = 15; case 15: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
  68418. _tuple$4 = _r$4; n0$1 = _tuple$4[0]; err$2 = _tuple$4[1];
  68419. n = (x$3 = n0$1, new $Int64(n.$high + x$3.$high, n.$low + x$3.$low));
  68420. w.written = (x$4 = w.written, x$5 = n0$1, new $Int64(x$4.$high + x$5.$high, x$4.$low + x$5.$low));
  68421. _tmp$4 = n; _tmp$5 = err$2; n = _tmp$4; err = _tmp$5;
  68422. return [n, err];
  68423. /* } */ case 14:
  68424. _r$5 = io.Copy((x$6 = new writerOnly.ptr(w), new x$6.constructor.elem(x$6)), src); /* */ $s = 16; case 16: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
  68425. _tuple$5 = _r$5; n0$2 = _tuple$5[0]; err = _tuple$5[1];
  68426. n = (x$7 = n0$2, new $Int64(n.$high + x$7.$high, n.$low + x$7.$low));
  68427. _tmp$6 = n; _tmp$7 = err; n = _tmp$6; err = _tmp$7;
  68428. return [n, err];
  68429. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: response.ptr.prototype.ReadFrom }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tmp$6 = _tmp$6; $f._tmp$7 = _tmp$7; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f._tuple$4 = _tuple$4; $f._tuple$5 = _tuple$5; $f.err = err; $f.err$1 = err$1; $f.err$2 = err$2; $f.n = n; $f.n0 = n0; $f.n0$1 = n0$1; $f.n0$2 = n0$2; $f.ok = ok; $f.regFile = regFile; $f.rf = rf; $f.src = src; $f.w = w; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.x$3 = x$3; $f.x$4 = x$4; $f.x$5 = x$5; $f.x$6 = x$6; $f.x$7 = x$7; $f.$s = $s; $f.$r = $r; return $f;
  68430. };
  68431. response.prototype.ReadFrom = function(src) { return this.$val.ReadFrom(src); };
  68432. Server.ptr.prototype.newConn = function(rwc) {
  68433. var $ptr, _r, _r$1, _r$2, _r$3, _tmp, _tmp$1, br, bw, c, err, rwc, srv, x, $s, $r;
  68434. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; br = $f.br; bw = $f.bw; c = $f.c; err = $f.err; rwc = $f.rwc; srv = $f.srv; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  68435. c = ptrType$26.nil;
  68436. err = $ifaceNil;
  68437. srv = this;
  68438. c = new conn.ptr();
  68439. _r = rwc.RemoteAddr(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  68440. _r$1 = _r.String(); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  68441. c.remoteAddr = _r$1;
  68442. c.server = srv;
  68443. c.rwc = rwc;
  68444. c.w = rwc;
  68445. $copy(c.sr, new liveSwitchReader.ptr(new sync.Mutex.ptr(), c.rwc), liveSwitchReader);
  68446. c.lr = $assertType(io.LimitReader(c.sr, new $Int64(2147483647, 4294967295)), ptrType$25);
  68447. _r$2 = newBufioReader(c.lr); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  68448. br = _r$2;
  68449. _r$3 = newBufioWriterSize((x = new checkConnErrorWriter.ptr(c), new x.constructor.elem(x)), 4096); /* */ $s = 4; case 4: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  68450. bw = _r$3;
  68451. c.buf = bufio.NewReadWriter(br, bw);
  68452. _tmp = c; _tmp$1 = $ifaceNil; c = _tmp; err = _tmp$1;
  68453. return [c, err];
  68454. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Server.ptr.prototype.newConn }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f.br = br; $f.bw = bw; $f.c = c; $f.err = err; $f.rwc = rwc; $f.srv = srv; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
  68455. };
  68456. Server.prototype.newConn = function(rwc) { return this.$val.newConn(rwc); };
  68457. bufioWriterPool = function(size) {
  68458. var $ptr, _ref, size;
  68459. _ref = size;
  68460. if (_ref === 2048) {
  68461. return bufioWriter2kPool;
  68462. } else if (_ref === 4096) {
  68463. return bufioWriter4kPool;
  68464. }
  68465. return ptrType$27.nil;
  68466. };
  68467. newBufioReader = function(r) {
  68468. var $ptr, _r, br, r, v, $s, $r;
  68469. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; br = $f.br; r = $f.r; v = $f.v; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  68470. _r = bufioReaderPool.Get(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  68471. v = _r;
  68472. /* */ if (!($interfaceIsEqual(v, $ifaceNil))) { $s = 2; continue; }
  68473. /* */ $s = 3; continue;
  68474. /* if (!($interfaceIsEqual(v, $ifaceNil))) { */ case 2:
  68475. br = $assertType(v, ptrType$19);
  68476. br.Reset(r);
  68477. return br;
  68478. /* } */ case 3:
  68479. return bufio.NewReader(r);
  68480. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: newBufioReader }; } $f.$ptr = $ptr; $f._r = _r; $f.br = br; $f.r = r; $f.v = v; $f.$s = $s; $f.$r = $r; return $f;
  68481. };
  68482. putBufioReader = function(br) {
  68483. var $ptr, br;
  68484. br.Reset($ifaceNil);
  68485. bufioReaderPool.Put(br);
  68486. };
  68487. newBufioWriterSize = function(w, size) {
  68488. var $ptr, _r, bw, pool, size, v, w, $s, $r;
  68489. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; bw = $f.bw; pool = $f.pool; size = $f.size; v = $f.v; w = $f.w; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  68490. pool = bufioWriterPool(size);
  68491. /* */ if (!(pool === ptrType$27.nil)) { $s = 1; continue; }
  68492. /* */ $s = 2; continue;
  68493. /* if (!(pool === ptrType$27.nil)) { */ case 1:
  68494. _r = pool.Get(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  68495. v = _r;
  68496. /* */ if (!($interfaceIsEqual(v, $ifaceNil))) { $s = 4; continue; }
  68497. /* */ $s = 5; continue;
  68498. /* if (!($interfaceIsEqual(v, $ifaceNil))) { */ case 4:
  68499. bw = $assertType(v, ptrType$14);
  68500. bw.Reset(w);
  68501. return bw;
  68502. /* } */ case 5:
  68503. /* } */ case 2:
  68504. return bufio.NewWriterSize(w, size);
  68505. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: newBufioWriterSize }; } $f.$ptr = $ptr; $f._r = _r; $f.bw = bw; $f.pool = pool; $f.size = size; $f.v = v; $f.w = w; $f.$s = $s; $f.$r = $r; return $f;
  68506. };
  68507. putBufioWriter = function(bw) {
  68508. var $ptr, bw, pool;
  68509. bw.Reset($ifaceNil);
  68510. pool = bufioWriterPool(bw.Available());
  68511. if (!(pool === ptrType$27.nil)) {
  68512. pool.Put(bw);
  68513. }
  68514. };
  68515. Server.ptr.prototype.maxHeaderBytes = function() {
  68516. var $ptr, srv;
  68517. srv = this;
  68518. if (srv.MaxHeaderBytes > 0) {
  68519. return srv.MaxHeaderBytes;
  68520. }
  68521. return 1048576;
  68522. };
  68523. Server.prototype.maxHeaderBytes = function() { return this.$val.maxHeaderBytes(); };
  68524. Server.ptr.prototype.initialLimitedReaderSize = function() {
  68525. var $ptr, srv, x;
  68526. srv = this;
  68527. return (x = new $Int64(0, srv.maxHeaderBytes()), new $Int64(x.$high + 0, x.$low + 4096));
  68528. };
  68529. Server.prototype.initialLimitedReaderSize = function() { return this.$val.initialLimitedReaderSize(); };
  68530. expectContinueReader.ptr.prototype.Read = function(p) {
  68531. var $ptr, _r, _r$1, _r$2, _r$3, _tmp, _tmp$1, _tuple, _v, ecr, err, n, p, $s, $r;
  68532. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; _v = $f._v; ecr = $f.ecr; err = $f.err; n = $f.n; p = $f.p; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  68533. n = 0;
  68534. err = $ifaceNil;
  68535. ecr = this;
  68536. if (ecr.closed) {
  68537. _tmp = 0; _tmp$1 = $pkg.ErrBodyReadAfterClose; n = _tmp; err = _tmp$1;
  68538. return [n, err];
  68539. }
  68540. if (!(!ecr.resp.wroteContinue)) { _v = false; $s = 3; continue s; }
  68541. _r = ecr.resp.conn.hijacked(); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  68542. _v = !_r; case 3:
  68543. /* */ if (_v) { $s = 1; continue; }
  68544. /* */ $s = 2; continue;
  68545. /* if (_v) { */ case 1:
  68546. ecr.resp.wroteContinue = true;
  68547. _r$1 = ecr.resp.conn.buf.Writer.WriteString("HTTP/1.1 100 Continue\r\n\r\n"); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  68548. _r$1;
  68549. _r$2 = ecr.resp.conn.buf.Writer.Flush(); /* */ $s = 6; case 6: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  68550. _r$2;
  68551. /* } */ case 2:
  68552. _r$3 = ecr.readCloser.Read(p); /* */ $s = 7; case 7: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  68553. _tuple = _r$3; n = _tuple[0]; err = _tuple[1];
  68554. return [n, err];
  68555. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: expectContinueReader.ptr.prototype.Read }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f._v = _v; $f.ecr = ecr; $f.err = err; $f.n = n; $f.p = p; $f.$s = $s; $f.$r = $r; return $f;
  68556. };
  68557. expectContinueReader.prototype.Read = function(p) { return this.$val.Read(p); };
  68558. expectContinueReader.ptr.prototype.Close = function() {
  68559. var $ptr, _r, ecr, $s, $r;
  68560. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; ecr = $f.ecr; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  68561. ecr = this;
  68562. ecr.closed = true;
  68563. _r = ecr.readCloser.Close(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  68564. return _r;
  68565. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: expectContinueReader.ptr.prototype.Close }; } $f.$ptr = $ptr; $f._r = _r; $f.ecr = ecr; $f.$s = $s; $f.$r = $r; return $f;
  68566. };
  68567. expectContinueReader.prototype.Close = function() { return this.$val.Close(); };
  68568. appendTime = function(b, t) {
  68569. var $ptr, _q, _q$1, _q$2, _q$3, _q$4, _q$5, _q$6, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _tuple, _tuple$1, b, day, dd, hh, mm, mn, mon, ss, t, yy, $s, $r;
  68570. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _q = $f._q; _q$1 = $f._q$1; _q$2 = $f._q$2; _q$3 = $f._q$3; _q$4 = $f._q$4; _q$5 = $f._q$5; _q$6 = $f._q$6; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _r$9 = $f._r$9; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; b = $f.b; day = $f.day; dd = $f.dd; hh = $f.hh; mm = $f.mm; mn = $f.mn; mon = $f.mon; ss = $f.ss; t = $f.t; yy = $f.yy; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  68571. t = $clone(t, time.Time);
  68572. $copy(t, t.UTC(), time.Time);
  68573. _r = t.Date(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  68574. _tuple = _r; yy = _tuple[0]; mm = _tuple[1]; dd = _tuple[2];
  68575. _r$1 = t.Clock(); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  68576. _tuple$1 = _r$1; hh = _tuple$1[0]; mn = _tuple$1[1]; ss = _tuple$1[2];
  68577. _r$2 = t.Weekday(); /* */ $s = 3; case 3: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  68578. day = "SunMonTueWedThuFriSat".substring((3 * _r$2 >> 0));
  68579. mon = "JanFebMarAprMayJunJulAugSepOctNovDec".substring((3 * ((mm - 1 >> 0)) >> 0));
  68580. return $append(b, day.charCodeAt(0), day.charCodeAt(1), day.charCodeAt(2), 44, 32, ((48 + (_q = dd / 10, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")) >> 0) << 24 >>> 24), ((48 + (_r$3 = dd % 10, _r$3 === _r$3 ? _r$3 : $throwRuntimeError("integer divide by zero")) >> 0) << 24 >>> 24), 32, mon.charCodeAt(0), mon.charCodeAt(1), mon.charCodeAt(2), 32, ((48 + (_q$1 = yy / 1000, (_q$1 === _q$1 && _q$1 !== 1/0 && _q$1 !== -1/0) ? _q$1 >> 0 : $throwRuntimeError("integer divide by zero")) >> 0) << 24 >>> 24), ((48 + (_r$4 = ((_q$2 = yy / 100, (_q$2 === _q$2 && _q$2 !== 1/0 && _q$2 !== -1/0) ? _q$2 >> 0 : $throwRuntimeError("integer divide by zero"))) % 10, _r$4 === _r$4 ? _r$4 : $throwRuntimeError("integer divide by zero")) >> 0) << 24 >>> 24), ((48 + (_r$5 = ((_q$3 = yy / 10, (_q$3 === _q$3 && _q$3 !== 1/0 && _q$3 !== -1/0) ? _q$3 >> 0 : $throwRuntimeError("integer divide by zero"))) % 10, _r$5 === _r$5 ? _r$5 : $throwRuntimeError("integer divide by zero")) >> 0) << 24 >>> 24), ((48 + (_r$6 = yy % 10, _r$6 === _r$6 ? _r$6 : $throwRuntimeError("integer divide by zero")) >> 0) << 24 >>> 24), 32, ((48 + (_q$4 = hh / 10, (_q$4 === _q$4 && _q$4 !== 1/0 && _q$4 !== -1/0) ? _q$4 >> 0 : $throwRuntimeError("integer divide by zero")) >> 0) << 24 >>> 24), ((48 + (_r$7 = hh % 10, _r$7 === _r$7 ? _r$7 : $throwRuntimeError("integer divide by zero")) >> 0) << 24 >>> 24), 58, ((48 + (_q$5 = mn / 10, (_q$5 === _q$5 && _q$5 !== 1/0 && _q$5 !== -1/0) ? _q$5 >> 0 : $throwRuntimeError("integer divide by zero")) >> 0) << 24 >>> 24), ((48 + (_r$8 = mn % 10, _r$8 === _r$8 ? _r$8 : $throwRuntimeError("integer divide by zero")) >> 0) << 24 >>> 24), 58, ((48 + (_q$6 = ss / 10, (_q$6 === _q$6 && _q$6 !== 1/0 && _q$6 !== -1/0) ? _q$6 >> 0 : $throwRuntimeError("integer divide by zero")) >> 0) << 24 >>> 24), ((48 + (_r$9 = ss % 10, _r$9 === _r$9 ? _r$9 : $throwRuntimeError("integer divide by zero")) >> 0) << 24 >>> 24), 32, 71, 77, 84);
  68581. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: appendTime }; } $f.$ptr = $ptr; $f._q = _q; $f._q$1 = _q$1; $f._q$2 = _q$2; $f._q$3 = _q$3; $f._q$4 = _q$4; $f._q$5 = _q$5; $f._q$6 = _q$6; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._r$9 = _r$9; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.b = b; $f.day = day; $f.dd = dd; $f.hh = hh; $f.mm = mm; $f.mn = mn; $f.mon = mon; $f.ss = ss; $f.t = t; $f.yy = yy; $f.$s = $s; $f.$r = $r; return $f;
  68582. };
  68583. conn.ptr.prototype.readRequest = function() {
  68584. var $ptr, _r, _r$1, _r$2, _r$3, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tuple, c, d, d$1, err, req, w, x, $s, $deferred, $r;
  68585. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tmp$6 = $f._tmp$6; _tmp$7 = $f._tmp$7; _tuple = $f._tuple; c = $f.c; d = $f.d; d$1 = $f.d$1; err = $f.err; req = $f.req; w = $f.w; x = $f.x; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
  68586. c = [c];
  68587. d = [d];
  68588. w = ptrType$20.nil;
  68589. err = $ifaceNil;
  68590. c[0] = this;
  68591. _r = c[0].hijacked(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  68592. /* */ if (_r) { $s = 1; continue; }
  68593. /* */ $s = 2; continue;
  68594. /* if (_r) { */ case 1:
  68595. _tmp = ptrType$20.nil; _tmp$1 = $pkg.ErrHijacked; w = _tmp; err = _tmp$1;
  68596. return [w, err];
  68597. /* } */ case 2:
  68598. d$1 = c[0].server.ReadTimeout;
  68599. /* */ if (!((d$1.$high === 0 && d$1.$low === 0))) { $s = 4; continue; }
  68600. /* */ $s = 5; continue;
  68601. /* if (!((d$1.$high === 0 && d$1.$low === 0))) { */ case 4:
  68602. _r$1 = c[0].rwc.SetReadDeadline(time.Now().Add(d$1)); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  68603. _r$1;
  68604. /* } */ case 5:
  68605. d[0] = c[0].server.WriteTimeout;
  68606. /* */ if (!((d[0].$high === 0 && d[0].$low === 0))) { $s = 7; continue; }
  68607. /* */ $s = 8; continue;
  68608. /* if (!((d[0].$high === 0 && d[0].$low === 0))) { */ case 7:
  68609. $deferred.push([(function(c, d) { return function $b() {
  68610. var $ptr, _r$2, $s, $r;
  68611. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r$2 = $f._r$2; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  68612. _r$2 = c[0].rwc.SetWriteDeadline(time.Now().Add(d[0])); /* */ $s = 1; case 1: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  68613. _r$2;
  68614. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: $b }; } $f.$ptr = $ptr; $f._r$2 = _r$2; $f.$s = $s; $f.$r = $r; return $f;
  68615. }; })(c, d), []]);
  68616. /* } */ case 8:
  68617. c[0].lr.N = c[0].server.initialLimitedReaderSize();
  68618. req = ptrType$1.nil;
  68619. _r$2 = ReadRequest(c[0].buf.Reader); /* */ $s = 9; case 9: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  68620. _tuple = _r$2; req = _tuple[0]; err = _tuple[1];
  68621. /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 10; continue; }
  68622. /* */ $s = 11; continue;
  68623. /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 10:
  68624. if ((x = c[0].lr.N, (x.$high === 0 && x.$low === 0))) {
  68625. _tmp$2 = ptrType$20.nil; _tmp$3 = errTooLarge; w = _tmp$2; err = _tmp$3;
  68626. return [w, err];
  68627. }
  68628. _tmp$4 = ptrType$20.nil; _tmp$5 = err; w = _tmp$4; err = _tmp$5;
  68629. return [w, err];
  68630. /* } */ case 11:
  68631. c[0].lr.N = new $Int64(2147483647, 4294967295);
  68632. req.RemoteAddr = c[0].remoteAddr;
  68633. req.TLS = c[0].tlsState;
  68634. w = new response.ptr(c[0], req, false, false, ptrType$14.nil, new chunkWriter.ptr(), ptrType$28.nil, new $Map(), false, new $Int64(0, 0), new $Int64(-1, 4294967295), 0, false, false, false, arrayType$2.zero(), arrayType$3.zero());
  68635. w.cw.res = w;
  68636. _r$3 = newBufioWriterSize(w.cw, 2048); /* */ $s = 12; case 12: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  68637. w.w = _r$3;
  68638. _tmp$6 = w; _tmp$7 = $ifaceNil; w = _tmp$6; err = _tmp$7;
  68639. return [w, err];
  68640. /* */ $s = -1; case -1: } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if (!$curGoroutine.asleep) { return [w, err]; } if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: conn.ptr.prototype.readRequest }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tmp$6 = _tmp$6; $f._tmp$7 = _tmp$7; $f._tuple = _tuple; $f.c = c; $f.d = d; $f.d$1 = d$1; $f.err = err; $f.req = req; $f.w = w; $f.x = x; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
  68641. };
  68642. conn.prototype.readRequest = function() { return this.$val.readRequest(); };
  68643. response.ptr.prototype.Header = function() {
  68644. var $ptr, w;
  68645. w = this;
  68646. if (w.cw.header === false && w.wroteHeader && !w.cw.wroteHeader) {
  68647. w.cw.header = new Header(w.handlerHeader).clone();
  68648. }
  68649. w.calledHeader = true;
  68650. return w.handlerHeader;
  68651. };
  68652. response.prototype.Header = function() { return this.$val.Header(); };
  68653. response.ptr.prototype.WriteHeader = function(code) {
  68654. var $ptr, _r, _tuple, cl, code, err, v, w, $s, $r;
  68655. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tuple = $f._tuple; cl = $f.cl; code = $f.code; err = $f.err; v = $f.v; w = $f.w; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  68656. w = this;
  68657. _r = w.conn.hijacked(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  68658. /* */ if (_r) { $s = 1; continue; }
  68659. /* */ $s = 2; continue;
  68660. /* if (_r) { */ case 1:
  68661. $r = w.conn.server.logf("http: response.WriteHeader on hijacked connection", new sliceType$1([])); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  68662. return;
  68663. /* } */ case 2:
  68664. /* */ if (w.wroteHeader) { $s = 5; continue; }
  68665. /* */ $s = 6; continue;
  68666. /* if (w.wroteHeader) { */ case 5:
  68667. $r = w.conn.server.logf("http: multiple response.WriteHeader calls", new sliceType$1([])); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  68668. return;
  68669. /* } */ case 6:
  68670. w.wroteHeader = true;
  68671. w.status = code;
  68672. if (w.calledHeader && w.cw.header === false) {
  68673. w.cw.header = new Header(w.handlerHeader).clone();
  68674. }
  68675. cl = new Header(w.handlerHeader).get("Content-Length");
  68676. /* */ if (!(cl === "")) { $s = 8; continue; }
  68677. /* */ $s = 9; continue;
  68678. /* if (!(cl === "")) { */ case 8:
  68679. _tuple = strconv.ParseInt(cl, 10, 64); v = _tuple[0]; err = _tuple[1];
  68680. /* */ if ($interfaceIsEqual(err, $ifaceNil) && (v.$high > 0 || (v.$high === 0 && v.$low >= 0))) { $s = 10; continue; }
  68681. /* */ $s = 11; continue;
  68682. /* if ($interfaceIsEqual(err, $ifaceNil) && (v.$high > 0 || (v.$high === 0 && v.$low >= 0))) { */ case 10:
  68683. w.contentLength = v;
  68684. $s = 12; continue;
  68685. /* } else { */ case 11:
  68686. $r = w.conn.server.logf("http: invalid Content-Length of %q", new sliceType$1([new $String(cl)])); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  68687. new Header(w.handlerHeader).Del("Content-Length");
  68688. /* } */ case 12:
  68689. /* } */ case 9:
  68690. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: response.ptr.prototype.WriteHeader }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple = _tuple; $f.cl = cl; $f.code = code; $f.err = err; $f.v = v; $f.w = w; $f.$s = $s; $f.$r = $r; return $f;
  68691. };
  68692. response.prototype.WriteHeader = function(code) { return this.$val.WriteHeader(code); };
  68693. extraHeader.ptr.prototype.Write = function(w) {
  68694. var $ptr, _i, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _ref, h, i, v, w, $s, $r;
  68695. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _i = $f._i; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _r$9 = $f._r$9; _ref = $f._ref; h = $f.h; i = $f.i; v = $f.v; w = $f.w; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  68696. h = $clone(this, extraHeader);
  68697. /* */ if (!(h.date === sliceType$2.nil)) { $s = 1; continue; }
  68698. /* */ $s = 2; continue;
  68699. /* if (!(h.date === sliceType$2.nil)) { */ case 1:
  68700. _r = w.Write(headerDate); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  68701. _r;
  68702. _r$1 = w.Write(h.date); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  68703. _r$1;
  68704. _r$2 = w.Write(crlf); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  68705. _r$2;
  68706. /* } */ case 2:
  68707. /* */ if (!(h.contentLength === sliceType$2.nil)) { $s = 6; continue; }
  68708. /* */ $s = 7; continue;
  68709. /* if (!(h.contentLength === sliceType$2.nil)) { */ case 6:
  68710. _r$3 = w.Write(headerContentLength); /* */ $s = 8; case 8: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  68711. _r$3;
  68712. _r$4 = w.Write(h.contentLength); /* */ $s = 9; case 9: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
  68713. _r$4;
  68714. _r$5 = w.Write(crlf); /* */ $s = 10; case 10: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
  68715. _r$5;
  68716. /* } */ case 7:
  68717. _ref = new sliceType([h.contentType, h.connection, h.transferEncoding]);
  68718. _i = 0;
  68719. /* while (true) { */ case 11:
  68720. /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 12; continue; }
  68721. i = _i;
  68722. v = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]);
  68723. /* */ if (!(v === "")) { $s = 13; continue; }
  68724. /* */ $s = 14; continue;
  68725. /* if (!(v === "")) { */ case 13:
  68726. _r$6 = w.Write(((i < 0 || i >= extraHeaderKeys.$length) ? $throwRuntimeError("index out of range") : extraHeaderKeys.$array[extraHeaderKeys.$offset + i])); /* */ $s = 15; case 15: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
  68727. _r$6;
  68728. _r$7 = w.Write(colonSpace); /* */ $s = 16; case 16: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
  68729. _r$7;
  68730. _r$8 = w.WriteString(v); /* */ $s = 17; case 17: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
  68731. _r$8;
  68732. _r$9 = w.Write(crlf); /* */ $s = 18; case 18: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
  68733. _r$9;
  68734. /* } */ case 14:
  68735. _i++;
  68736. /* } */ $s = 11; continue; case 12:
  68737. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: extraHeader.ptr.prototype.Write }; } $f.$ptr = $ptr; $f._i = _i; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._r$9 = _r$9; $f._ref = _ref; $f.h = h; $f.i = i; $f.v = v; $f.w = w; $f.$s = $s; $f.$r = $r; return $f;
  68738. };
  68739. extraHeader.prototype.Write = function(w) { return this.$val.Write(w); };
  68740. chunkWriter.ptr.prototype.writeHeader = function(p) {
  68741. var $ptr, _entry, _entry$1, _entry$2, _i, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _ref, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, code, connectionHeaderSet, cw, delHeader, ecr, excludeHeader, hasCL, hasTE, haveType, header, isExpecter, isHEAD, k, keepAlivesEnabled, n, ok, owned, p, sentLength, setHeader, te, w, x, x$1, $s, $r;
  68742. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _entry = $f._entry; _entry$1 = $f._entry$1; _entry$2 = $f._entry$2; _i = $f._i; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _ref = $f._ref; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; _tuple$4 = $f._tuple$4; code = $f.code; connectionHeaderSet = $f.connectionHeaderSet; cw = $f.cw; delHeader = $f.delHeader; ecr = $f.ecr; excludeHeader = $f.excludeHeader; hasCL = $f.hasCL; hasTE = $f.hasTE; haveType = $f.haveType; header = $f.header; isExpecter = $f.isExpecter; isHEAD = $f.isHEAD; k = $f.k; keepAlivesEnabled = $f.keepAlivesEnabled; n = $f.n; ok = $f.ok; owned = $f.owned; p = $f.p; sentLength = $f.sentLength; setHeader = $f.setHeader; te = $f.te; w = $f.w; x = $f.x; x$1 = $f.x$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  68743. excludeHeader = [excludeHeader];
  68744. header = [header];
  68745. owned = [owned];
  68746. cw = this;
  68747. if (cw.wroteHeader) {
  68748. return;
  68749. }
  68750. cw.wroteHeader = true;
  68751. w = cw.res;
  68752. keepAlivesEnabled = w.conn.server.doKeepAlives();
  68753. isHEAD = w.req.Method === "HEAD";
  68754. header[0] = cw.header;
  68755. owned[0] = !(header[0] === false);
  68756. if (!owned[0]) {
  68757. header[0] = w.handlerHeader;
  68758. }
  68759. excludeHeader[0] = false;
  68760. delHeader = (function(excludeHeader, header, owned) { return function(key) {
  68761. var $ptr, _entry, _key$5, _tuple, key, ok;
  68762. if (owned[0]) {
  68763. new Header(header[0]).Del(key);
  68764. return;
  68765. }
  68766. _tuple = (_entry = header[0][key], _entry !== undefined ? [_entry.v, true] : [sliceType.nil, false]); ok = _tuple[1];
  68767. if (!ok) {
  68768. return;
  68769. }
  68770. if (excludeHeader[0] === false) {
  68771. excludeHeader[0] = new $Map();
  68772. }
  68773. _key$5 = key; (excludeHeader[0] || $throwRuntimeError("assignment to entry in nil map"))[_key$5] = { k: _key$5, v: true };
  68774. }; })(excludeHeader, header, owned);
  68775. setHeader = $clone(new extraHeader.ptr(), extraHeader);
  68776. if (w.handlerDone && bodyAllowedForStatus(w.status) && new Header(header[0]).get("Content-Length") === "" && (!isHEAD || p.$length > 0)) {
  68777. w.contentLength = new $Int64(0, p.$length);
  68778. setHeader.contentLength = strconv.AppendInt($subslice(new sliceType$2(cw.res.clenBuf), 0, 0), new $Int64(0, p.$length), 10);
  68779. }
  68780. if (w.req.wantsHttp10KeepAlive() && keepAlivesEnabled) {
  68781. sentLength = !(new Header(header[0]).get("Content-Length") === "");
  68782. if (sentLength && new Header(header[0]).get("Connection") === "keep-alive") {
  68783. w.closeAfterReply = false;
  68784. }
  68785. }
  68786. hasCL = !((x = w.contentLength, (x.$high === -1 && x.$low === 4294967295)));
  68787. if (w.req.wantsHttp10KeepAlive() && (isHEAD || hasCL)) {
  68788. _tuple = (_entry = header[0]["Connection"], _entry !== undefined ? [_entry.v, true] : [sliceType.nil, false]); connectionHeaderSet = _tuple[1];
  68789. if (!connectionHeaderSet) {
  68790. setHeader.connection = "keep-alive";
  68791. }
  68792. } else if (!w.req.ProtoAtLeast(1, 1) || w.req.wantsClose()) {
  68793. w.closeAfterReply = true;
  68794. }
  68795. if (new Header(header[0]).get("Connection") === "close" || !keepAlivesEnabled) {
  68796. w.closeAfterReply = true;
  68797. }
  68798. /* */ if (!((x$1 = w.req.ContentLength, (x$1.$high === 0 && x$1.$low === 0))) && !w.closeAfterReply) { $s = 1; continue; }
  68799. /* */ $s = 2; continue;
  68800. /* if (!((x$1 = w.req.ContentLength, (x$1.$high === 0 && x$1.$low === 0))) && !w.closeAfterReply) { */ case 1:
  68801. _tuple$1 = $assertType(w.req.Body, ptrType$29, true); ecr = _tuple$1[0]; isExpecter = _tuple$1[1];
  68802. /* */ if (!isExpecter || ecr.resp.wroteContinue) { $s = 3; continue; }
  68803. /* */ $s = 4; continue;
  68804. /* if (!isExpecter || ecr.resp.wroteContinue) { */ case 3:
  68805. _r = io.CopyN(ioutil.Discard, w.req.Body, new $Int64(0, 262145)); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  68806. _tuple$2 = _r; n = _tuple$2[0];
  68807. /* */ if ((n.$high > 0 || (n.$high === 0 && n.$low >= 262144))) { $s = 6; continue; }
  68808. /* */ $s = 7; continue;
  68809. /* if ((n.$high > 0 || (n.$high === 0 && n.$low >= 262144))) { */ case 6:
  68810. w.requestTooLarge();
  68811. $r = delHeader("Connection"); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  68812. setHeader.connection = "close";
  68813. $s = 8; continue;
  68814. /* } else { */ case 7:
  68815. _r$1 = w.req.Body.Close(); /* */ $s = 10; case 10: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  68816. _r$1;
  68817. /* } */ case 8:
  68818. /* } */ case 4:
  68819. /* } */ case 2:
  68820. code = w.status;
  68821. /* */ if (bodyAllowedForStatus(code)) { $s = 11; continue; }
  68822. /* */ $s = 12; continue;
  68823. /* if (bodyAllowedForStatus(code)) { */ case 11:
  68824. _tuple$3 = (_entry$1 = header[0]["Content-Type"], _entry$1 !== undefined ? [_entry$1.v, true] : [sliceType.nil, false]); haveType = _tuple$3[1];
  68825. /* */ if (!haveType) { $s = 14; continue; }
  68826. /* */ $s = 15; continue;
  68827. /* if (!haveType) { */ case 14:
  68828. _r$2 = DetectContentType(p); /* */ $s = 16; case 16: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  68829. setHeader.contentType = _r$2;
  68830. /* } */ case 15:
  68831. $s = 13; continue;
  68832. /* } else { */ case 12:
  68833. _ref = suppressedHeaders(code);
  68834. _i = 0;
  68835. /* while (true) { */ case 17:
  68836. /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 18; continue; }
  68837. k = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]);
  68838. $r = delHeader(k); /* */ $s = 19; case 19: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  68839. _i++;
  68840. /* } */ $s = 17; continue; case 18:
  68841. /* } */ case 13:
  68842. _tuple$4 = (_entry$2 = header[0]["Date"], _entry$2 !== undefined ? [_entry$2.v, true] : [sliceType.nil, false]); ok = _tuple$4[1];
  68843. /* */ if (!ok) { $s = 20; continue; }
  68844. /* */ $s = 21; continue;
  68845. /* if (!ok) { */ case 20:
  68846. _r$3 = appendTime($subslice(new sliceType$2(cw.res.dateBuf), 0, 0), time.Now()); /* */ $s = 22; case 22: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  68847. setHeader.date = _r$3;
  68848. /* } */ case 21:
  68849. te = new Header(header[0]).get("Transfer-Encoding");
  68850. hasTE = !(te === "");
  68851. /* */ if (hasCL && hasTE && !(te === "identity")) { $s = 23; continue; }
  68852. /* */ $s = 24; continue;
  68853. /* if (hasCL && hasTE && !(te === "identity")) { */ case 23:
  68854. $r = w.conn.server.logf("http: WriteHeader called with both Transfer-Encoding of %q and a Content-Length of %d", new sliceType$1([new $String(te), w.contentLength])); /* */ $s = 25; case 25: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  68855. $r = delHeader("Content-Length"); /* */ $s = 26; case 26: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  68856. hasCL = false;
  68857. /* } */ case 24:
  68858. /* */ if (w.req.Method === "HEAD" || !bodyAllowedForStatus(code)) { $s = 27; continue; }
  68859. /* */ if (code === 204) { $s = 28; continue; }
  68860. /* */ if (hasCL) { $s = 29; continue; }
  68861. /* */ if (w.req.ProtoAtLeast(1, 1)) { $s = 30; continue; }
  68862. /* */ $s = 31; continue;
  68863. /* if (w.req.Method === "HEAD" || !bodyAllowedForStatus(code)) { */ case 27:
  68864. $s = 32; continue;
  68865. /* } else if (code === 204) { */ case 28:
  68866. $r = delHeader("Transfer-Encoding"); /* */ $s = 33; case 33: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  68867. $s = 32; continue;
  68868. /* } else if (hasCL) { */ case 29:
  68869. $r = delHeader("Transfer-Encoding"); /* */ $s = 34; case 34: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  68870. $s = 32; continue;
  68871. /* } else if (w.req.ProtoAtLeast(1, 1)) { */ case 30:
  68872. if (hasTE && te === "identity") {
  68873. cw.chunking = false;
  68874. w.closeAfterReply = true;
  68875. } else {
  68876. cw.chunking = true;
  68877. setHeader.transferEncoding = "chunked";
  68878. }
  68879. $s = 32; continue;
  68880. /* } else { */ case 31:
  68881. w.closeAfterReply = true;
  68882. $r = delHeader("Transfer-Encoding"); /* */ $s = 35; case 35: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  68883. /* } */ case 32:
  68884. /* */ if (cw.chunking) { $s = 36; continue; }
  68885. /* */ $s = 37; continue;
  68886. /* if (cw.chunking) { */ case 36:
  68887. $r = delHeader("Content-Length"); /* */ $s = 38; case 38: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  68888. /* } */ case 37:
  68889. if (!w.req.ProtoAtLeast(1, 0)) {
  68890. return;
  68891. }
  68892. /* */ if (w.closeAfterReply && (!keepAlivesEnabled || !hasToken(new Header(cw.header).get("Connection"), "close"))) { $s = 39; continue; }
  68893. /* */ $s = 40; continue;
  68894. /* if (w.closeAfterReply && (!keepAlivesEnabled || !hasToken(new Header(cw.header).get("Connection"), "close"))) { */ case 39:
  68895. $r = delHeader("Connection"); /* */ $s = 41; case 41: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  68896. if (w.req.ProtoAtLeast(1, 1)) {
  68897. setHeader.connection = "close";
  68898. }
  68899. /* } */ case 40:
  68900. _r$4 = statusLine(w.req, code); /* */ $s = 42; case 42: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
  68901. _r$5 = w.conn.buf.Writer.WriteString(_r$4); /* */ $s = 43; case 43: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
  68902. _r$5;
  68903. _r$6 = new Header(cw.header).WriteSubset(w.conn.buf, excludeHeader[0]); /* */ $s = 44; case 44: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
  68904. _r$6;
  68905. $r = setHeader.Write(w.conn.buf.Writer); /* */ $s = 45; case 45: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  68906. _r$7 = w.conn.buf.Writer.Write(crlf); /* */ $s = 46; case 46: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
  68907. _r$7;
  68908. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: chunkWriter.ptr.prototype.writeHeader }; } $f.$ptr = $ptr; $f._entry = _entry; $f._entry$1 = _entry$1; $f._entry$2 = _entry$2; $f._i = _i; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._ref = _ref; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f._tuple$4 = _tuple$4; $f.code = code; $f.connectionHeaderSet = connectionHeaderSet; $f.cw = cw; $f.delHeader = delHeader; $f.ecr = ecr; $f.excludeHeader = excludeHeader; $f.hasCL = hasCL; $f.hasTE = hasTE; $f.haveType = haveType; $f.header = header; $f.isExpecter = isExpecter; $f.isHEAD = isHEAD; $f.k = k; $f.keepAlivesEnabled = keepAlivesEnabled; $f.n = n; $f.ok = ok; $f.owned = owned; $f.p = p; $f.sentLength = sentLength; $f.setHeader = setHeader; $f.te = te; $f.w = w; $f.x = x; $f.x$1 = x$1; $f.$s = $s; $f.$r = $r; return $f;
  68909. };
  68910. chunkWriter.prototype.writeHeader = function(p) { return this.$val.writeHeader(p); };
  68911. statusLine = function(req, code) {
  68912. var $ptr, _entry, _entry$1, _key$5, _tuple, _tuple$1, code, codestring, key, line, ok, proto, proto11, req, text, $s, $deferred, $r;
  68913. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _entry = $f._entry; _entry$1 = $f._entry$1; _key$5 = $f._key$5; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; code = $f.code; codestring = $f.codestring; key = $f.key; line = $f.line; ok = $f.ok; proto = $f.proto; proto11 = $f.proto11; req = $f.req; text = $f.text; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
  68914. key = code;
  68915. proto11 = req.ProtoAtLeast(1, 1);
  68916. if (!proto11) {
  68917. key = -key;
  68918. }
  68919. $r = statusMu.RLock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  68920. _tuple = (_entry = statusLines[key], _entry !== undefined ? [_entry.v, true] : ["", false]); line = _tuple[0]; ok = _tuple[1];
  68921. $r = statusMu.RUnlock(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  68922. if (ok) {
  68923. return line;
  68924. }
  68925. proto = "HTTP/1.0";
  68926. if (proto11) {
  68927. proto = "HTTP/1.1";
  68928. }
  68929. codestring = strconv.Itoa(code);
  68930. _tuple$1 = (_entry$1 = statusText[code], _entry$1 !== undefined ? [_entry$1.v, true] : ["", false]); text = _tuple$1[0]; ok = _tuple$1[1];
  68931. if (!ok) {
  68932. text = "status code " + codestring;
  68933. }
  68934. line = proto + " " + codestring + " " + text + "\r\n";
  68935. /* */ if (ok) { $s = 3; continue; }
  68936. /* */ $s = 4; continue;
  68937. /* if (ok) { */ case 3:
  68938. $r = statusMu.Lock(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  68939. $deferred.push([$methodVal(statusMu, "Unlock"), []]);
  68940. _key$5 = key; (statusLines || $throwRuntimeError("assignment to entry in nil map"))[_key$5] = { k: _key$5, v: line };
  68941. /* } */ case 4:
  68942. return line;
  68943. /* */ $s = -1; case -1: } return; } } catch(err) { $err = err; $s = -1; return ""; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: statusLine }; } $f.$ptr = $ptr; $f._entry = _entry; $f._entry$1 = _entry$1; $f._key$5 = _key$5; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.code = code; $f.codestring = codestring; $f.key = key; $f.line = line; $f.ok = ok; $f.proto = proto; $f.proto11 = proto11; $f.req = req; $f.text = text; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
  68944. };
  68945. response.ptr.prototype.bodyAllowed = function() {
  68946. var $ptr, w;
  68947. w = this;
  68948. if (!w.wroteHeader) {
  68949. $panic(new $String(""));
  68950. }
  68951. return bodyAllowedForStatus(w.status);
  68952. };
  68953. response.prototype.bodyAllowed = function() { return this.$val.bodyAllowed(); };
  68954. response.ptr.prototype.Write = function(data) {
  68955. var $ptr, _r, _tuple, data, err, n, w, $s, $r;
  68956. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tuple = $f._tuple; data = $f.data; err = $f.err; n = $f.n; w = $f.w; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  68957. n = 0;
  68958. err = $ifaceNil;
  68959. w = this;
  68960. _r = w.write(data.$length, data, ""); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  68961. _tuple = _r; n = _tuple[0]; err = _tuple[1];
  68962. return [n, err];
  68963. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: response.ptr.prototype.Write }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple = _tuple; $f.data = data; $f.err = err; $f.n = n; $f.w = w; $f.$s = $s; $f.$r = $r; return $f;
  68964. };
  68965. response.prototype.Write = function(data) { return this.$val.Write(data); };
  68966. response.ptr.prototype.WriteString = function(data) {
  68967. var $ptr, _r, _tuple, data, err, n, w, $s, $r;
  68968. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tuple = $f._tuple; data = $f.data; err = $f.err; n = $f.n; w = $f.w; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  68969. n = 0;
  68970. err = $ifaceNil;
  68971. w = this;
  68972. _r = w.write(data.length, sliceType$2.nil, data); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  68973. _tuple = _r; n = _tuple[0]; err = _tuple[1];
  68974. return [n, err];
  68975. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: response.ptr.prototype.WriteString }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple = _tuple; $f.data = data; $f.err = err; $f.n = n; $f.w = w; $f.$s = $s; $f.$r = $r; return $f;
  68976. };
  68977. response.prototype.WriteString = function(data) { return this.$val.WriteString(data); };
  68978. response.ptr.prototype.write = function(lenData, dataB, dataS) {
  68979. var $ptr, _r, _r$1, _r$2, _tmp, _tmp$1, _tmp$2, _tmp$3, _tmp$4, _tmp$5, _tmp$6, _tmp$7, _tuple, _tuple$1, dataB, dataS, err, lenData, n, w, x, x$1, x$2, x$3, x$4, $s, $r;
  68980. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tmp$4 = $f._tmp$4; _tmp$5 = $f._tmp$5; _tmp$6 = $f._tmp$6; _tmp$7 = $f._tmp$7; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; dataB = $f.dataB; dataS = $f.dataS; err = $f.err; lenData = $f.lenData; n = $f.n; w = $f.w; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; x$3 = $f.x$3; x$4 = $f.x$4; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  68981. n = 0;
  68982. err = $ifaceNil;
  68983. w = this;
  68984. _r = w.conn.hijacked(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  68985. /* */ if (_r) { $s = 1; continue; }
  68986. /* */ $s = 2; continue;
  68987. /* if (_r) { */ case 1:
  68988. $r = w.conn.server.logf("http: response.Write on hijacked connection", new sliceType$1([])); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  68989. _tmp = 0; _tmp$1 = $pkg.ErrHijacked; n = _tmp; err = _tmp$1;
  68990. return [n, err];
  68991. /* } */ case 2:
  68992. /* */ if (!w.wroteHeader) { $s = 5; continue; }
  68993. /* */ $s = 6; continue;
  68994. /* if (!w.wroteHeader) { */ case 5:
  68995. $r = w.WriteHeader(200); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  68996. /* } */ case 6:
  68997. if (lenData === 0) {
  68998. _tmp$2 = 0; _tmp$3 = $ifaceNil; n = _tmp$2; err = _tmp$3;
  68999. return [n, err];
  69000. }
  69001. if (!w.bodyAllowed()) {
  69002. _tmp$4 = 0; _tmp$5 = $pkg.ErrBodyNotAllowed; n = _tmp$4; err = _tmp$5;
  69003. return [n, err];
  69004. }
  69005. w.written = (x = w.written, x$1 = new $Int64(0, lenData), new $Int64(x.$high + x$1.$high, x.$low + x$1.$low));
  69006. if (!((x$2 = w.contentLength, (x$2.$high === -1 && x$2.$low === 4294967295))) && (x$3 = w.written, x$4 = w.contentLength, (x$3.$high > x$4.$high || (x$3.$high === x$4.$high && x$3.$low > x$4.$low)))) {
  69007. _tmp$6 = 0; _tmp$7 = $pkg.ErrContentLength; n = _tmp$6; err = _tmp$7;
  69008. return [n, err];
  69009. }
  69010. /* */ if (!(dataB === sliceType$2.nil)) { $s = 8; continue; }
  69011. /* */ $s = 9; continue;
  69012. /* if (!(dataB === sliceType$2.nil)) { */ case 8:
  69013. _r$1 = w.w.Write(dataB); /* */ $s = 11; case 11: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  69014. _tuple = _r$1; n = _tuple[0]; err = _tuple[1];
  69015. return [n, err];
  69016. $s = 10; continue;
  69017. /* } else { */ case 9:
  69018. _r$2 = w.w.WriteString(dataS); /* */ $s = 12; case 12: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  69019. _tuple$1 = _r$2; n = _tuple$1[0]; err = _tuple$1[1];
  69020. return [n, err];
  69021. /* } */ case 10:
  69022. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: response.ptr.prototype.write }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tmp$4 = _tmp$4; $f._tmp$5 = _tmp$5; $f._tmp$6 = _tmp$6; $f._tmp$7 = _tmp$7; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.dataB = dataB; $f.dataS = dataS; $f.err = err; $f.lenData = lenData; $f.n = n; $f.w = w; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.x$3 = x$3; $f.x$4 = x$4; $f.$s = $s; $f.$r = $r; return $f;
  69023. };
  69024. response.prototype.write = function(lenData, dataB, dataS) { return this.$val.write(lenData, dataB, dataS); };
  69025. response.ptr.prototype.finishRequest = function() {
  69026. var $ptr, _r, _r$1, _r$2, w, x, x$1, x$2, $s, $r;
  69027. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; w = $f.w; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  69028. w = this;
  69029. w.handlerDone = true;
  69030. /* */ if (!w.wroteHeader) { $s = 1; continue; }
  69031. /* */ $s = 2; continue;
  69032. /* if (!w.wroteHeader) { */ case 1:
  69033. $r = w.WriteHeader(200); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  69034. /* } */ case 2:
  69035. _r = w.w.Flush(); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  69036. _r;
  69037. putBufioWriter(w.w);
  69038. $r = w.cw.close(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  69039. _r$1 = w.conn.buf.Writer.Flush(); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  69040. _r$1;
  69041. _r$2 = w.req.Body.Close(); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  69042. _r$2;
  69043. if (!(w.req.MultipartForm === ptrType$13.nil)) {
  69044. w.req.MultipartForm.RemoveAll();
  69045. }
  69046. if (!(w.req.Method === "HEAD") && !((x = w.contentLength, (x.$high === -1 && x.$low === 4294967295))) && w.bodyAllowed() && !((x$1 = w.contentLength, x$2 = w.written, (x$1.$high === x$2.$high && x$1.$low === x$2.$low)))) {
  69047. w.closeAfterReply = true;
  69048. }
  69049. if (!($interfaceIsEqual(w.conn.werr, $ifaceNil))) {
  69050. w.closeAfterReply = true;
  69051. }
  69052. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: response.ptr.prototype.finishRequest }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f.w = w; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.$s = $s; $f.$r = $r; return $f;
  69053. };
  69054. response.prototype.finishRequest = function() { return this.$val.finishRequest(); };
  69055. response.ptr.prototype.Flush = function() {
  69056. var $ptr, _r, w, $s, $r;
  69057. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; w = $f.w; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  69058. w = this;
  69059. /* */ if (!w.wroteHeader) { $s = 1; continue; }
  69060. /* */ $s = 2; continue;
  69061. /* if (!w.wroteHeader) { */ case 1:
  69062. $r = w.WriteHeader(200); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  69063. /* } */ case 2:
  69064. _r = w.w.Flush(); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  69065. _r;
  69066. $r = w.cw.flush(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  69067. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: response.ptr.prototype.Flush }; } $f.$ptr = $ptr; $f._r = _r; $f.w = w; $f.$s = $s; $f.$r = $r; return $f;
  69068. };
  69069. response.prototype.Flush = function() { return this.$val.Flush(); };
  69070. conn.ptr.prototype.finalFlush = function() {
  69071. var $ptr, _r, c, $s, $r;
  69072. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; c = $f.c; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  69073. c = this;
  69074. /* */ if (!(c.buf === ptrType$23.nil)) { $s = 1; continue; }
  69075. /* */ $s = 2; continue;
  69076. /* if (!(c.buf === ptrType$23.nil)) { */ case 1:
  69077. _r = c.buf.Writer.Flush(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  69078. _r;
  69079. putBufioReader(c.buf.Reader);
  69080. putBufioWriter(c.buf.Writer);
  69081. c.buf = ptrType$23.nil;
  69082. /* } */ case 2:
  69083. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: conn.ptr.prototype.finalFlush }; } $f.$ptr = $ptr; $f._r = _r; $f.c = c; $f.$s = $s; $f.$r = $r; return $f;
  69084. };
  69085. conn.prototype.finalFlush = function() { return this.$val.finalFlush(); };
  69086. conn.ptr.prototype.close = function() {
  69087. var $ptr, _r, c, $s, $r;
  69088. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; c = $f.c; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  69089. c = this;
  69090. $r = c.finalFlush(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  69091. /* */ if (!($interfaceIsEqual(c.rwc, $ifaceNil))) { $s = 2; continue; }
  69092. /* */ $s = 3; continue;
  69093. /* if (!($interfaceIsEqual(c.rwc, $ifaceNil))) { */ case 2:
  69094. _r = c.rwc.Close(); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  69095. _r;
  69096. c.rwc = $ifaceNil;
  69097. /* } */ case 3:
  69098. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: conn.ptr.prototype.close }; } $f.$ptr = $ptr; $f._r = _r; $f.c = c; $f.$s = $s; $f.$r = $r; return $f;
  69099. };
  69100. conn.prototype.close = function() { return this.$val.close(); };
  69101. conn.ptr.prototype.closeWriteAndWait = function() {
  69102. var $ptr, _r, _tuple, c, ok, tcp, $s, $r;
  69103. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tuple = $f._tuple; c = $f.c; ok = $f.ok; tcp = $f.tcp; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  69104. c = this;
  69105. $r = c.finalFlush(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  69106. _tuple = $assertType(c.rwc, closeWriter, true); tcp = _tuple[0]; ok = _tuple[1];
  69107. /* */ if (ok) { $s = 2; continue; }
  69108. /* */ $s = 3; continue;
  69109. /* if (ok) { */ case 2:
  69110. _r = tcp.CloseWrite(); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  69111. _r;
  69112. /* } */ case 3:
  69113. $r = time.Sleep(new time.Duration(0, 500000000)); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  69114. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: conn.ptr.prototype.closeWriteAndWait }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple = _tuple; $f.c = c; $f.ok = ok; $f.tcp = tcp; $f.$s = $s; $f.$r = $r; return $f;
  69115. };
  69116. conn.prototype.closeWriteAndWait = function() { return this.$val.closeWriteAndWait(); };
  69117. validNPN = function(proto) {
  69118. var $ptr, _ref, proto;
  69119. _ref = proto;
  69120. if (_ref === "" || _ref === "http/1.1" || _ref === "http/1.0") {
  69121. return false;
  69122. }
  69123. return true;
  69124. };
  69125. conn.ptr.prototype.setState = function(nc, state) {
  69126. var $ptr, c, hook, nc, state, $s, $r;
  69127. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; c = $f.c; hook = $f.hook; nc = $f.nc; state = $f.state; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  69128. c = this;
  69129. hook = c.server.ConnState;
  69130. /* */ if (!(hook === $throwNilPointerError)) { $s = 1; continue; }
  69131. /* */ $s = 2; continue;
  69132. /* if (!(hook === $throwNilPointerError)) { */ case 1:
  69133. $r = hook(nc, state); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  69134. /* } */ case 2:
  69135. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: conn.ptr.prototype.setState }; } $f.$ptr = $ptr; $f.c = c; $f.hook = hook; $f.nc = nc; $f.state = state; $f.$s = $s; $f.$r = $r; return $f;
  69136. };
  69137. conn.prototype.setState = function(nc, state) { return this.$val.setState(nc, state); };
  69138. conn.ptr.prototype.serve = function() {
  69139. var $ptr, _arg, _arg$1, _entry, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _r$9, _tuple, _tuple$1, _tuple$2, _v, c, d, d$1, err, err$1, fn, h, neterr, ok, ok$1, origConn, proto, req, tlsConn, w, x, x$1, x$2, $s, $deferred, $r;
  69140. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _arg = $f._arg; _arg$1 = $f._arg$1; _entry = $f._entry; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _r$9 = $f._r$9; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _v = $f._v; c = $f.c; d = $f.d; d$1 = $f.d$1; err = $f.err; err$1 = $f.err$1; fn = $f.fn; h = $f.h; neterr = $f.neterr; ok = $f.ok; ok$1 = $f.ok$1; origConn = $f.origConn; proto = $f.proto; req = $f.req; tlsConn = $f.tlsConn; w = $f.w; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
  69141. c = [c];
  69142. origConn = [origConn];
  69143. c[0] = this;
  69144. origConn[0] = c[0].rwc;
  69145. $deferred.push([(function(c, origConn) { return function $b() {
  69146. var $ptr, _r, buf, err, $s, $r;
  69147. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; buf = $f.buf; err = $f.err; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  69148. err = $recover();
  69149. /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 1; continue; }
  69150. /* */ $s = 2; continue;
  69151. /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 1:
  69152. buf = $makeSlice(sliceType$2, 65536);
  69153. buf = $subslice(buf, 0, runtime.Stack(buf, false));
  69154. $r = c[0].server.logf("http: panic serving %v: %v\n%s", new sliceType$1([new $String(c[0].remoteAddr), err, buf])); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  69155. /* } */ case 2:
  69156. _r = c[0].hijacked(); /* */ $s = 6; case 6: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  69157. /* */ if (!_r) { $s = 4; continue; }
  69158. /* */ $s = 5; continue;
  69159. /* if (!_r) { */ case 4:
  69160. $r = c[0].close(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  69161. $r = c[0].setState(origConn[0], 4); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  69162. /* } */ case 5:
  69163. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: $b }; } $f.$ptr = $ptr; $f._r = _r; $f.buf = buf; $f.err = err; $f.$s = $s; $f.$r = $r; return $f;
  69164. }; })(c, origConn), []]);
  69165. _tuple = $assertType(c[0].rwc, ptrType$30, true); tlsConn = _tuple[0]; ok = _tuple[1];
  69166. /* */ if (ok) { $s = 1; continue; }
  69167. /* */ $s = 2; continue;
  69168. /* if (ok) { */ case 1:
  69169. d = c[0].server.ReadTimeout;
  69170. /* */ if (!((d.$high === 0 && d.$low === 0))) { $s = 3; continue; }
  69171. /* */ $s = 4; continue;
  69172. /* if (!((d.$high === 0 && d.$low === 0))) { */ case 3:
  69173. _r = c[0].rwc.SetReadDeadline(time.Now().Add(d)); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  69174. _r;
  69175. /* } */ case 4:
  69176. d$1 = c[0].server.WriteTimeout;
  69177. /* */ if (!((d$1.$high === 0 && d$1.$low === 0))) { $s = 6; continue; }
  69178. /* */ $s = 7; continue;
  69179. /* if (!((d$1.$high === 0 && d$1.$low === 0))) { */ case 6:
  69180. _r$1 = c[0].rwc.SetWriteDeadline(time.Now().Add(d$1)); /* */ $s = 8; case 8: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  69181. _r$1;
  69182. /* } */ case 7:
  69183. _r$2 = tlsConn.Handshake(); /* */ $s = 9; case 9: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  69184. err = _r$2;
  69185. /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 10; continue; }
  69186. /* */ $s = 11; continue;
  69187. /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 10:
  69188. _r$3 = c[0].rwc.RemoteAddr(); /* */ $s = 12; case 12: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  69189. _arg = _r$3;
  69190. _arg$1 = err;
  69191. $r = c[0].server.logf("http: TLS handshake error from %s: %v", new sliceType$1([_arg, _arg$1])); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  69192. return;
  69193. /* } */ case 11:
  69194. c[0].tlsState = new tls.ConnectionState.ptr();
  69195. _r$4 = tlsConn.ConnectionState(); /* */ $s = 14; case 14: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
  69196. $copy(c[0].tlsState, _r$4, tls.ConnectionState);
  69197. proto = c[0].tlsState.NegotiatedProtocol;
  69198. /* */ if (validNPN(proto)) { $s = 15; continue; }
  69199. /* */ $s = 16; continue;
  69200. /* if (validNPN(proto)) { */ case 15:
  69201. fn = (_entry = c[0].server.TLSNextProto[proto], _entry !== undefined ? _entry.v : $throwNilPointerError);
  69202. /* */ if (!(fn === $throwNilPointerError)) { $s = 17; continue; }
  69203. /* */ $s = 18; continue;
  69204. /* if (!(fn === $throwNilPointerError)) { */ case 17:
  69205. h = new initNPNRequest.ptr(tlsConn, new serverHandler.ptr(c[0].server));
  69206. $r = fn(c[0].server, tlsConn, new h.constructor.elem(h)); /* */ $s = 19; case 19: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  69207. /* } */ case 18:
  69208. return;
  69209. /* } */ case 16:
  69210. /* } */ case 2:
  69211. /* while (true) { */ case 20:
  69212. _r$5 = c[0].readRequest(); /* */ $s = 22; case 22: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
  69213. _tuple$1 = _r$5; w = _tuple$1[0]; err$1 = _tuple$1[1];
  69214. /* */ if (!((x = c[0].lr.N, x$1 = c[0].server.initialLimitedReaderSize(), (x.$high === x$1.$high && x.$low === x$1.$low)))) { $s = 23; continue; }
  69215. /* */ $s = 24; continue;
  69216. /* if (!((x = c[0].lr.N, x$1 = c[0].server.initialLimitedReaderSize(), (x.$high === x$1.$high && x.$low === x$1.$low)))) { */ case 23:
  69217. $r = c[0].setState(c[0].rwc, 1); /* */ $s = 25; case 25: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  69218. /* } */ case 24:
  69219. /* */ if (!($interfaceIsEqual(err$1, $ifaceNil))) { $s = 26; continue; }
  69220. /* */ $s = 27; continue;
  69221. /* if (!($interfaceIsEqual(err$1, $ifaceNil))) { */ case 26:
  69222. /* */ if ($interfaceIsEqual(err$1, errTooLarge)) { $s = 28; continue; }
  69223. /* */ if ($interfaceIsEqual(err$1, io.EOF)) { $s = 29; continue; }
  69224. /* */ $s = 30; continue;
  69225. /* if ($interfaceIsEqual(err$1, errTooLarge)) { */ case 28:
  69226. _r$6 = io.WriteString(c[0].rwc, "HTTP/1.1 413 Request Entity Too Large\r\n\r\n"); /* */ $s = 32; case 32: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
  69227. _r$6;
  69228. $r = c[0].closeWriteAndWait(); /* */ $s = 33; case 33: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  69229. /* break; */ $s = 21; continue;
  69230. $s = 31; continue;
  69231. /* } else if ($interfaceIsEqual(err$1, io.EOF)) { */ case 29:
  69232. /* break; */ $s = 21; continue;
  69233. $s = 31; continue;
  69234. /* } else { */ case 30:
  69235. _tuple$2 = $assertType(err$1, net.Error, true); neterr = _tuple$2[0]; ok$1 = _tuple$2[1];
  69236. if (!(ok$1)) { _v = false; $s = 36; continue s; }
  69237. _r$7 = neterr.Timeout(); /* */ $s = 37; case 37: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
  69238. _v = _r$7; case 36:
  69239. /* */ if (_v) { $s = 34; continue; }
  69240. /* */ $s = 35; continue;
  69241. /* if (_v) { */ case 34:
  69242. /* break; */ $s = 21; continue;
  69243. /* } */ case 35:
  69244. /* } */ case 31:
  69245. _r$8 = io.WriteString(c[0].rwc, "HTTP/1.1 400 Bad Request\r\n\r\n"); /* */ $s = 38; case 38: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
  69246. _r$8;
  69247. /* break; */ $s = 21; continue;
  69248. /* } */ case 27:
  69249. req = w.req;
  69250. /* */ if (req.expectsContinue()) { $s = 39; continue; }
  69251. /* */ if (!(new Header(req.Header).get("Expect") === "")) { $s = 40; continue; }
  69252. /* */ $s = 41; continue;
  69253. /* if (req.expectsContinue()) { */ case 39:
  69254. if (req.ProtoAtLeast(1, 1) && !((x$2 = req.ContentLength, (x$2.$high === 0 && x$2.$low === 0)))) {
  69255. req.Body = new expectContinueReader.ptr(w, req.Body, false);
  69256. }
  69257. new Header(req.Header).Del("Expect");
  69258. $s = 41; continue;
  69259. /* } else if (!(new Header(req.Header).get("Expect") === "")) { */ case 40:
  69260. $r = w.sendExpectationFailed(); /* */ $s = 42; case 42: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  69261. /* break; */ $s = 21; continue;
  69262. /* } */ case 41:
  69263. $r = new serverHandler.ptr(c[0].server).ServeHTTP(w, w.req); /* */ $s = 43; case 43: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  69264. _r$9 = c[0].hijacked(); /* */ $s = 46; case 46: if($c) { $c = false; _r$9 = _r$9.$blk(); } if (_r$9 && _r$9.$blk !== undefined) { break s; }
  69265. /* */ if (_r$9) { $s = 44; continue; }
  69266. /* */ $s = 45; continue;
  69267. /* if (_r$9) { */ case 44:
  69268. return;
  69269. /* } */ case 45:
  69270. $r = w.finishRequest(); /* */ $s = 47; case 47: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  69271. /* */ if (w.closeAfterReply) { $s = 48; continue; }
  69272. /* */ $s = 49; continue;
  69273. /* if (w.closeAfterReply) { */ case 48:
  69274. /* */ if (w.requestBodyLimitHit) { $s = 50; continue; }
  69275. /* */ $s = 51; continue;
  69276. /* if (w.requestBodyLimitHit) { */ case 50:
  69277. $r = c[0].closeWriteAndWait(); /* */ $s = 52; case 52: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  69278. /* } */ case 51:
  69279. /* break; */ $s = 21; continue;
  69280. /* } */ case 49:
  69281. $r = c[0].setState(c[0].rwc, 2); /* */ $s = 53; case 53: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  69282. /* } */ $s = 20; continue; case 21:
  69283. /* */ $s = -1; case -1: } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: conn.ptr.prototype.serve }; } $f.$ptr = $ptr; $f._arg = _arg; $f._arg$1 = _arg$1; $f._entry = _entry; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._r$9 = _r$9; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._v = _v; $f.c = c; $f.d = d; $f.d$1 = d$1; $f.err = err; $f.err$1 = err$1; $f.fn = fn; $f.h = h; $f.neterr = neterr; $f.ok = ok; $f.ok$1 = ok$1; $f.origConn = origConn; $f.proto = proto; $f.req = req; $f.tlsConn = tlsConn; $f.w = w; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
  69284. };
  69285. conn.prototype.serve = function() { return this.$val.serve(); };
  69286. response.ptr.prototype.sendExpectationFailed = function() {
  69287. var $ptr, w, $s, $r;
  69288. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; w = $f.w; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  69289. w = this;
  69290. new Header(w.Header()).Set("Connection", "close");
  69291. $r = w.WriteHeader(417); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  69292. $r = w.finishRequest(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  69293. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: response.ptr.prototype.sendExpectationFailed }; } $f.$ptr = $ptr; $f.w = w; $f.$s = $s; $f.$r = $r; return $f;
  69294. };
  69295. response.prototype.sendExpectationFailed = function() { return this.$val.sendExpectationFailed(); };
  69296. response.ptr.prototype.Hijack = function() {
  69297. var $ptr, _r, _tmp, _tmp$1, _tmp$2, _tuple, buf, err, rwc, w, $s, $r;
  69298. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tuple = $f._tuple; buf = $f.buf; err = $f.err; rwc = $f.rwc; w = $f.w; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  69299. rwc = $ifaceNil;
  69300. buf = ptrType$23.nil;
  69301. err = $ifaceNil;
  69302. w = this;
  69303. /* */ if (w.wroteHeader) { $s = 1; continue; }
  69304. /* */ $s = 2; continue;
  69305. /* if (w.wroteHeader) { */ case 1:
  69306. $r = w.cw.flush(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  69307. /* } */ case 2:
  69308. _r = w.conn.hijack(); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  69309. _tuple = _r; rwc = _tuple[0]; buf = _tuple[1]; err = _tuple[2];
  69310. if ($interfaceIsEqual(err, $ifaceNil)) {
  69311. putBufioWriter(w.w);
  69312. w.w = ptrType$14.nil;
  69313. }
  69314. _tmp = rwc; _tmp$1 = buf; _tmp$2 = err; rwc = _tmp; buf = _tmp$1; err = _tmp$2;
  69315. return [rwc, buf, err];
  69316. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: response.ptr.prototype.Hijack }; } $f.$ptr = $ptr; $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tuple = _tuple; $f.buf = buf; $f.err = err; $f.rwc = rwc; $f.w = w; $f.$s = $s; $f.$r = $r; return $f;
  69317. };
  69318. response.prototype.Hijack = function() { return this.$val.Hijack(); };
  69319. response.ptr.prototype.CloseNotify = function() {
  69320. var $ptr, _r, w, $s, $r;
  69321. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; w = $f.w; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  69322. w = this;
  69323. _r = w.conn.closeNotify(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  69324. return _r;
  69325. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: response.ptr.prototype.CloseNotify }; } $f.$ptr = $ptr; $f._r = _r; $f.w = w; $f.$s = $s; $f.$r = $r; return $f;
  69326. };
  69327. response.prototype.CloseNotify = function() { return this.$val.CloseNotify(); };
  69328. HandlerFunc.prototype.ServeHTTP = function(w, r) {
  69329. var $ptr, f, r, w, $s, $r;
  69330. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; f = $f.f; r = $f.r; w = $f.w; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  69331. f = this.$val;
  69332. $r = f(w, r); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  69333. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: HandlerFunc.prototype.ServeHTTP }; } $f.$ptr = $ptr; $f.f = f; $f.r = r; $f.w = w; $f.$s = $s; $f.$r = $r; return $f;
  69334. };
  69335. $ptrType(HandlerFunc).prototype.ServeHTTP = function(w, r) { return new HandlerFunc(this.$get()).ServeHTTP(w, r); };
  69336. Error = function(w, error, code) {
  69337. var $ptr, _r, _r$1, code, error, w, $s, $r;
  69338. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; code = $f.code; error = $f.error; w = $f.w; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  69339. _r = w.Header(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  69340. $r = new Header(_r).Set("Content-Type", "text/plain; charset=utf-8"); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  69341. $r = w.WriteHeader(code); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  69342. _r$1 = fmt.Fprintln(w, new sliceType$1([new $String(error)])); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  69343. _r$1;
  69344. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Error }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f.code = code; $f.error = error; $f.w = w; $f.$s = $s; $f.$r = $r; return $f;
  69345. };
  69346. $pkg.Error = Error;
  69347. NotFound = function(w, r) {
  69348. var $ptr, r, w, $s, $r;
  69349. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; r = $f.r; w = $f.w; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  69350. $r = Error(w, "404 page not found", 404); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  69351. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: NotFound }; } $f.$ptr = $ptr; $f.r = r; $f.w = w; $f.$s = $s; $f.$r = $r; return $f;
  69352. };
  69353. $pkg.NotFound = NotFound;
  69354. NotFoundHandler = function() {
  69355. var $ptr;
  69356. return new HandlerFunc(NotFound);
  69357. };
  69358. $pkg.NotFoundHandler = NotFoundHandler;
  69359. Redirect = function(w, r, urlStr, code) {
  69360. var $ptr, _entry, _r, _r$1, _r$2, _r$3, _tmp, _tmp$1, _tuple, _tuple$1, code, err, i, note, olddir, oldpath, query, r, trailing, u, urlStr, w, $s, $r;
  69361. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _entry = $f._entry; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; code = $f.code; err = $f.err; i = $f.i; note = $f.note; olddir = $f.olddir; oldpath = $f.oldpath; query = $f.query; r = $f.r; trailing = $f.trailing; u = $f.u; urlStr = $f.urlStr; w = $f.w; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  69362. _r = url.Parse(urlStr); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  69363. _tuple = _r; u = _tuple[0]; err = _tuple[1];
  69364. /* */ if ($interfaceIsEqual(err, $ifaceNil)) { $s = 2; continue; }
  69365. /* */ $s = 3; continue;
  69366. /* if ($interfaceIsEqual(err, $ifaceNil)) { */ case 2:
  69367. oldpath = r.URL.Path;
  69368. if (oldpath === "") {
  69369. oldpath = "/";
  69370. }
  69371. if (u.Scheme === "") {
  69372. if (urlStr === "" || !((urlStr.charCodeAt(0) === 47))) {
  69373. _tuple$1 = path.Split(oldpath); olddir = _tuple$1[0];
  69374. urlStr = olddir + urlStr;
  69375. }
  69376. query = "";
  69377. i = strings.Index(urlStr, "?");
  69378. if (!((i === -1))) {
  69379. _tmp = urlStr.substring(0, i); _tmp$1 = urlStr.substring(i); urlStr = _tmp; query = _tmp$1;
  69380. }
  69381. trailing = strings.HasSuffix(urlStr, "/");
  69382. urlStr = path.Clean(urlStr);
  69383. if (trailing && !strings.HasSuffix(urlStr, "/")) {
  69384. urlStr = urlStr + ("/");
  69385. }
  69386. urlStr = urlStr + (query);
  69387. }
  69388. /* } */ case 3:
  69389. _r$1 = w.Header(); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  69390. $r = new Header(_r$1).Set("Location", urlStr); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  69391. $r = w.WriteHeader(code); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  69392. /* */ if (r.Method === "GET") { $s = 7; continue; }
  69393. /* */ $s = 8; continue;
  69394. /* if (r.Method === "GET") { */ case 7:
  69395. _r$2 = htmlEscape(urlStr); /* */ $s = 9; case 9: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  69396. note = "<a href=\"" + _r$2 + "\">" + (_entry = statusText[code], _entry !== undefined ? _entry.v : "") + "</a>.\n";
  69397. _r$3 = fmt.Fprintln(w, new sliceType$1([new $String(note)])); /* */ $s = 10; case 10: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  69398. _r$3;
  69399. /* } */ case 8:
  69400. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Redirect }; } $f.$ptr = $ptr; $f._entry = _entry; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.code = code; $f.err = err; $f.i = i; $f.note = note; $f.olddir = olddir; $f.oldpath = oldpath; $f.query = query; $f.r = r; $f.trailing = trailing; $f.u = u; $f.urlStr = urlStr; $f.w = w; $f.$s = $s; $f.$r = $r; return $f;
  69401. };
  69402. $pkg.Redirect = Redirect;
  69403. htmlEscape = function(s) {
  69404. var $ptr, _r, s, $s, $r;
  69405. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  69406. _r = htmlReplacer.Replace(s); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  69407. return _r;
  69408. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: htmlEscape }; } $f.$ptr = $ptr; $f._r = _r; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
  69409. };
  69410. redirectHandler.ptr.prototype.ServeHTTP = function(w, r) {
  69411. var $ptr, r, rh, w, $s, $r;
  69412. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; r = $f.r; rh = $f.rh; w = $f.w; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  69413. rh = this;
  69414. $r = Redirect(w, r, rh.url, rh.code); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  69415. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: redirectHandler.ptr.prototype.ServeHTTP }; } $f.$ptr = $ptr; $f.r = r; $f.rh = rh; $f.w = w; $f.$s = $s; $f.$r = $r; return $f;
  69416. };
  69417. redirectHandler.prototype.ServeHTTP = function(w, r) { return this.$val.ServeHTTP(w, r); };
  69418. RedirectHandler = function(url$1, code) {
  69419. var $ptr, code, url$1;
  69420. return new redirectHandler.ptr(url$1, code);
  69421. };
  69422. $pkg.RedirectHandler = RedirectHandler;
  69423. NewServeMux = function() {
  69424. var $ptr;
  69425. return new ServeMux.ptr(new sync.RWMutex.ptr(), new $Map(), false);
  69426. };
  69427. $pkg.NewServeMux = NewServeMux;
  69428. pathMatch = function(pattern, path$1) {
  69429. var $ptr, n, path$1, pattern;
  69430. if (pattern.length === 0) {
  69431. return false;
  69432. }
  69433. n = pattern.length;
  69434. if (!((pattern.charCodeAt((n - 1 >> 0)) === 47))) {
  69435. return pattern === path$1;
  69436. }
  69437. return path$1.length >= n && path$1.substring(0, n) === pattern;
  69438. };
  69439. cleanPath = function(p) {
  69440. var $ptr, np, p;
  69441. if (p === "") {
  69442. return "/";
  69443. }
  69444. if (!((p.charCodeAt(0) === 47))) {
  69445. p = "/" + p;
  69446. }
  69447. np = path.Clean(p);
  69448. if ((p.charCodeAt((p.length - 1 >> 0)) === 47) && !(np === "/")) {
  69449. np = np + ("/");
  69450. }
  69451. return np;
  69452. };
  69453. ServeMux.ptr.prototype.match = function(path$1) {
  69454. var $ptr, _entry, _i, _keys, _ref, h, k, mux, n, path$1, pattern, v;
  69455. h = $ifaceNil;
  69456. pattern = "";
  69457. mux = this;
  69458. n = 0;
  69459. _ref = mux.m;
  69460. _i = 0;
  69461. _keys = $keys(_ref);
  69462. while (true) {
  69463. if (!(_i < _keys.length)) { break; }
  69464. _entry = _ref[_keys[_i]];
  69465. if (_entry === undefined) {
  69466. _i++;
  69467. continue;
  69468. }
  69469. k = _entry.k;
  69470. v = $clone(_entry.v, muxEntry);
  69471. if (!pathMatch(k, path$1)) {
  69472. _i++;
  69473. continue;
  69474. }
  69475. if ($interfaceIsEqual(h, $ifaceNil) || k.length > n) {
  69476. n = k.length;
  69477. h = v.h;
  69478. pattern = v.pattern;
  69479. }
  69480. _i++;
  69481. }
  69482. return [h, pattern];
  69483. };
  69484. ServeMux.prototype.match = function(path$1) { return this.$val.match(path$1); };
  69485. ServeMux.ptr.prototype.Handler = function(r) {
  69486. var $ptr, _r, _r$1, _tmp, _tmp$1, _tuple, _tuple$1, h, mux, p, pattern, r, url$1, $s, $r;
  69487. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; h = $f.h; mux = $f.mux; p = $f.p; pattern = $f.pattern; r = $f.r; url$1 = $f.url$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  69488. h = $ifaceNil;
  69489. pattern = "";
  69490. mux = this;
  69491. /* */ if (!(r.Method === "CONNECT")) { $s = 1; continue; }
  69492. /* */ $s = 2; continue;
  69493. /* if (!(r.Method === "CONNECT")) { */ case 1:
  69494. p = cleanPath(r.URL.Path);
  69495. /* */ if (!(p === r.URL.Path)) { $s = 3; continue; }
  69496. /* */ $s = 4; continue;
  69497. /* if (!(p === r.URL.Path)) { */ case 3:
  69498. _r = mux.handler(r.Host, p); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  69499. _tuple = _r; pattern = _tuple[1];
  69500. url$1 = $clone(r.URL, url.URL);
  69501. url$1.Path = p;
  69502. _tmp = RedirectHandler(url$1.String(), 301); _tmp$1 = pattern; h = _tmp; pattern = _tmp$1;
  69503. return [h, pattern];
  69504. /* } */ case 4:
  69505. /* } */ case 2:
  69506. _r$1 = mux.handler(r.Host, r.URL.Path); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  69507. _tuple$1 = _r$1; h = _tuple$1[0]; pattern = _tuple$1[1];
  69508. return [h, pattern];
  69509. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: ServeMux.ptr.prototype.Handler }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.h = h; $f.mux = mux; $f.p = p; $f.pattern = pattern; $f.r = r; $f.url$1 = url$1; $f.$s = $s; $f.$r = $r; return $f;
  69510. };
  69511. ServeMux.prototype.Handler = function(r) { return this.$val.Handler(r); };
  69512. ServeMux.ptr.prototype.handler = function(host, path$1) {
  69513. var $ptr, _tmp, _tmp$1, _tuple, _tuple$1, h, host, mux, path$1, pattern, $s, $deferred, $r;
  69514. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; h = $f.h; host = $f.host; mux = $f.mux; path$1 = $f.path$1; pattern = $f.pattern; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
  69515. h = $ifaceNil;
  69516. pattern = "";
  69517. mux = this;
  69518. $r = mux.mu.RLock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  69519. $deferred.push([$methodVal(mux.mu, "RUnlock"), []]);
  69520. if (mux.hosts) {
  69521. _tuple = mux.match(host + path$1); h = _tuple[0]; pattern = _tuple[1];
  69522. }
  69523. if ($interfaceIsEqual(h, $ifaceNil)) {
  69524. _tuple$1 = mux.match(path$1); h = _tuple$1[0]; pattern = _tuple$1[1];
  69525. }
  69526. if ($interfaceIsEqual(h, $ifaceNil)) {
  69527. _tmp = NotFoundHandler(); _tmp$1 = ""; h = _tmp; pattern = _tmp$1;
  69528. }
  69529. return [h, pattern];
  69530. /* */ $s = -1; case -1: } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if (!$curGoroutine.asleep) { return [h, pattern]; } if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: ServeMux.ptr.prototype.handler }; } $f.$ptr = $ptr; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.h = h; $f.host = host; $f.mux = mux; $f.path$1 = path$1; $f.pattern = pattern; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
  69531. };
  69532. ServeMux.prototype.handler = function(host, path$1) { return this.$val.handler(host, path$1); };
  69533. ServeMux.ptr.prototype.ServeHTTP = function(w, r) {
  69534. var $ptr, _r, _r$1, _tuple, h, mux, r, w, $s, $r;
  69535. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _tuple = $f._tuple; h = $f.h; mux = $f.mux; r = $f.r; w = $f.w; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  69536. mux = this;
  69537. /* */ if (r.RequestURI === "*") { $s = 1; continue; }
  69538. /* */ $s = 2; continue;
  69539. /* if (r.RequestURI === "*") { */ case 1:
  69540. /* */ if (r.ProtoAtLeast(1, 1)) { $s = 3; continue; }
  69541. /* */ $s = 4; continue;
  69542. /* if (r.ProtoAtLeast(1, 1)) { */ case 3:
  69543. _r = w.Header(); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  69544. $r = new Header(_r).Set("Connection", "close"); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  69545. /* } */ case 4:
  69546. $r = w.WriteHeader(400); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  69547. return;
  69548. /* } */ case 2:
  69549. _r$1 = mux.Handler(r); /* */ $s = 8; case 8: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  69550. _tuple = _r$1; h = _tuple[0];
  69551. $r = h.ServeHTTP(w, r); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  69552. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: ServeMux.ptr.prototype.ServeHTTP }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._tuple = _tuple; $f.h = h; $f.mux = mux; $f.r = r; $f.w = w; $f.$s = $s; $f.$r = $r; return $f;
  69553. };
  69554. ServeMux.prototype.ServeHTTP = function(w, r) { return this.$val.ServeHTTP(w, r); };
  69555. ServeMux.ptr.prototype.Handle = function(pattern, handler) {
  69556. var $ptr, _entry, _entry$1, _key$5, _key$6, handler, mux, n, path$1, pattern, $s, $deferred, $r;
  69557. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _entry = $f._entry; _entry$1 = $f._entry$1; _key$5 = $f._key$5; _key$6 = $f._key$6; handler = $f.handler; mux = $f.mux; n = $f.n; path$1 = $f.path$1; pattern = $f.pattern; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
  69558. mux = this;
  69559. $r = mux.mu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  69560. $deferred.push([$methodVal(mux.mu, "Unlock"), []]);
  69561. if (pattern === "") {
  69562. $panic(new $String("http: invalid pattern " + pattern));
  69563. }
  69564. if ($interfaceIsEqual(handler, $ifaceNil)) {
  69565. $panic(new $String("http: nil handler"));
  69566. }
  69567. if ((_entry = mux.m[pattern], _entry !== undefined ? _entry.v : new muxEntry.ptr()).explicit) {
  69568. $panic(new $String("http: multiple registrations for " + pattern));
  69569. }
  69570. _key$5 = pattern; (mux.m || $throwRuntimeError("assignment to entry in nil map"))[_key$5] = { k: _key$5, v: new muxEntry.ptr(true, handler, pattern) };
  69571. if (!((pattern.charCodeAt(0) === 47))) {
  69572. mux.hosts = true;
  69573. }
  69574. n = pattern.length;
  69575. if (n > 0 && (pattern.charCodeAt((n - 1 >> 0)) === 47) && !(_entry$1 = mux.m[pattern.substring(0, (n - 1 >> 0))], _entry$1 !== undefined ? _entry$1.v : new muxEntry.ptr()).explicit) {
  69576. path$1 = pattern;
  69577. if (!((pattern.charCodeAt(0) === 47))) {
  69578. path$1 = pattern.substring(strings.Index(pattern, "/"));
  69579. }
  69580. _key$6 = pattern.substring(0, (n - 1 >> 0)); (mux.m || $throwRuntimeError("assignment to entry in nil map"))[_key$6] = { k: _key$6, v: new muxEntry.ptr(false, RedirectHandler(path$1, 301), pattern) };
  69581. }
  69582. /* */ $s = -1; case -1: } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: ServeMux.ptr.prototype.Handle }; } $f.$ptr = $ptr; $f._entry = _entry; $f._entry$1 = _entry$1; $f._key$5 = _key$5; $f._key$6 = _key$6; $f.handler = handler; $f.mux = mux; $f.n = n; $f.path$1 = path$1; $f.pattern = pattern; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
  69583. };
  69584. ServeMux.prototype.Handle = function(pattern, handler) { return this.$val.Handle(pattern, handler); };
  69585. ServeMux.ptr.prototype.HandleFunc = function(pattern, handler) {
  69586. var $ptr, handler, mux, pattern, $s, $r;
  69587. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; handler = $f.handler; mux = $f.mux; pattern = $f.pattern; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  69588. mux = this;
  69589. $r = mux.Handle(pattern, new HandlerFunc(handler)); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  69590. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: ServeMux.ptr.prototype.HandleFunc }; } $f.$ptr = $ptr; $f.handler = handler; $f.mux = mux; $f.pattern = pattern; $f.$s = $s; $f.$r = $r; return $f;
  69591. };
  69592. ServeMux.prototype.HandleFunc = function(pattern, handler) { return this.$val.HandleFunc(pattern, handler); };
  69593. ConnState.prototype.String = function() {
  69594. var $ptr, _entry, c;
  69595. c = this.$val;
  69596. return (_entry = stateName[c], _entry !== undefined ? _entry.v : "");
  69597. };
  69598. $ptrType(ConnState).prototype.String = function() { return new ConnState(this.$get()).String(); };
  69599. serverHandler.ptr.prototype.ServeHTTP = function(rw, req) {
  69600. var $ptr, handler, req, rw, sh, x, $s, $r;
  69601. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; handler = $f.handler; req = $f.req; rw = $f.rw; sh = $f.sh; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  69602. sh = $clone(this, serverHandler);
  69603. handler = sh.srv.Handler;
  69604. if ($interfaceIsEqual(handler, $ifaceNil)) {
  69605. handler = $pkg.DefaultServeMux;
  69606. }
  69607. if (req.RequestURI === "*" && req.Method === "OPTIONS") {
  69608. handler = (x = new globalOptionsHandler.ptr(), new x.constructor.elem(x));
  69609. }
  69610. $r = handler.ServeHTTP(rw, req); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  69611. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: serverHandler.ptr.prototype.ServeHTTP }; } $f.$ptr = $ptr; $f.handler = handler; $f.req = req; $f.rw = rw; $f.sh = sh; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
  69612. };
  69613. serverHandler.prototype.ServeHTTP = function(rw, req) { return this.$val.ServeHTTP(rw, req); };
  69614. Server.ptr.prototype.ListenAndServe = function() {
  69615. var $ptr, _r, _tuple, addr, err, ln, srv, x, $s, $r;
  69616. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tuple = $f._tuple; addr = $f.addr; err = $f.err; ln = $f.ln; srv = $f.srv; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  69617. srv = this;
  69618. addr = srv.Addr;
  69619. if (addr === "") {
  69620. addr = ":http";
  69621. }
  69622. _tuple = net.Listen("tcp", addr); ln = _tuple[0]; err = _tuple[1];
  69623. if (!($interfaceIsEqual(err, $ifaceNil))) {
  69624. return err;
  69625. }
  69626. _r = srv.Serve((x = new tcpKeepAliveListener.ptr($assertType(ln, ptrType$33)), new x.constructor.elem(x))); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  69627. return _r;
  69628. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Server.ptr.prototype.ListenAndServe }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple = _tuple; $f.addr = addr; $f.err = err; $f.ln = ln; $f.srv = srv; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
  69629. };
  69630. Server.prototype.ListenAndServe = function() { return this.$val.ListenAndServe(); };
  69631. Server.ptr.prototype.Serve = function(l) {
  69632. var $ptr, _r, _r$1, _r$2, _tuple, _tuple$1, _tuple$2, _v, c, e, err, l, max, ne, ok, rw, srv, tempDelay, $s, $deferred, $r;
  69633. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _v = $f._v; c = $f.c; e = $f.e; err = $f.err; l = $f.l; max = $f.max; ne = $f.ne; ok = $f.ok; rw = $f.rw; srv = $f.srv; tempDelay = $f.tempDelay; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
  69634. srv = this;
  69635. $deferred.push([$methodVal(l, "Close"), []]);
  69636. tempDelay = new time.Duration(0, 0);
  69637. /* while (true) { */ case 1:
  69638. _r = l.Accept(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  69639. _tuple = _r; rw = _tuple[0]; e = _tuple[1];
  69640. /* */ if (!($interfaceIsEqual(e, $ifaceNil))) { $s = 4; continue; }
  69641. /* */ $s = 5; continue;
  69642. /* if (!($interfaceIsEqual(e, $ifaceNil))) { */ case 4:
  69643. _tuple$1 = $assertType(e, net.Error, true); ne = _tuple$1[0]; ok = _tuple$1[1];
  69644. if (!(ok)) { _v = false; $s = 8; continue s; }
  69645. _r$1 = ne.Temporary(); /* */ $s = 9; case 9: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  69646. _v = _r$1; case 8:
  69647. /* */ if (_v) { $s = 6; continue; }
  69648. /* */ $s = 7; continue;
  69649. /* if (_v) { */ case 6:
  69650. if ((tempDelay.$high === 0 && tempDelay.$low === 0)) {
  69651. tempDelay = new time.Duration(0, 5000000);
  69652. } else {
  69653. tempDelay = $mul64(tempDelay, (new time.Duration(0, 2)));
  69654. }
  69655. max = new time.Duration(0, 1000000000);
  69656. if ((tempDelay.$high > max.$high || (tempDelay.$high === max.$high && tempDelay.$low > max.$low))) {
  69657. tempDelay = max;
  69658. }
  69659. $r = srv.logf("http: Accept error: %v; retrying in %v", new sliceType$1([e, tempDelay])); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  69660. $r = time.Sleep(tempDelay); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  69661. /* continue; */ $s = 1; continue;
  69662. /* } */ case 7:
  69663. return e;
  69664. /* } */ case 5:
  69665. tempDelay = new time.Duration(0, 0);
  69666. _r$2 = srv.newConn(rw); /* */ $s = 12; case 12: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  69667. _tuple$2 = _r$2; c = _tuple$2[0]; err = _tuple$2[1];
  69668. /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 13; continue; }
  69669. /* */ $s = 14; continue;
  69670. /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 13:
  69671. /* continue; */ $s = 1; continue;
  69672. /* } */ case 14:
  69673. $r = c.setState(c.rwc, 0); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  69674. $go($methodVal(c, "serve"), []);
  69675. /* } */ $s = 1; continue; case 2:
  69676. /* */ $s = -1; case -1: } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: Server.ptr.prototype.Serve }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._v = _v; $f.c = c; $f.e = e; $f.err = err; $f.l = l; $f.max = max; $f.ne = ne; $f.ok = ok; $f.rw = rw; $f.srv = srv; $f.tempDelay = tempDelay; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
  69677. };
  69678. Server.prototype.Serve = function(l) { return this.$val.Serve(l); };
  69679. Server.ptr.prototype.doKeepAlives = function() {
  69680. var $ptr, s;
  69681. s = this;
  69682. return atomic.LoadInt32((s.$ptr_disableKeepAlives || (s.$ptr_disableKeepAlives = new ptrType$34(function() { return this.$target.disableKeepAlives; }, function($v) { this.$target.disableKeepAlives = $v; }, s)))) === 0;
  69683. };
  69684. Server.prototype.doKeepAlives = function() { return this.$val.doKeepAlives(); };
  69685. Server.ptr.prototype.SetKeepAlivesEnabled = function(v) {
  69686. var $ptr, s, v;
  69687. s = this;
  69688. if (v) {
  69689. atomic.StoreInt32((s.$ptr_disableKeepAlives || (s.$ptr_disableKeepAlives = new ptrType$34(function() { return this.$target.disableKeepAlives; }, function($v) { this.$target.disableKeepAlives = $v; }, s))), 0);
  69690. } else {
  69691. atomic.StoreInt32((s.$ptr_disableKeepAlives || (s.$ptr_disableKeepAlives = new ptrType$34(function() { return this.$target.disableKeepAlives; }, function($v) { this.$target.disableKeepAlives = $v; }, s))), 1);
  69692. }
  69693. };
  69694. Server.prototype.SetKeepAlivesEnabled = function(v) { return this.$val.SetKeepAlivesEnabled(v); };
  69695. Server.ptr.prototype.logf = function(format, args) {
  69696. var $ptr, args, format, s, $s, $r;
  69697. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; args = $f.args; format = $f.format; s = $f.s; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  69698. s = this;
  69699. /* */ if (!(s.ErrorLog === ptrType$32.nil)) { $s = 1; continue; }
  69700. /* */ $s = 2; continue;
  69701. /* if (!(s.ErrorLog === ptrType$32.nil)) { */ case 1:
  69702. $r = s.ErrorLog.Printf(format, args); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  69703. $s = 3; continue;
  69704. /* } else { */ case 2:
  69705. $r = log.Printf(format, args); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  69706. /* } */ case 3:
  69707. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Server.ptr.prototype.logf }; } $f.$ptr = $ptr; $f.args = args; $f.format = format; $f.s = s; $f.$s = $s; $f.$r = $r; return $f;
  69708. };
  69709. Server.prototype.logf = function(format, args) { return this.$val.logf(format, args); };
  69710. Server.ptr.prototype.ListenAndServeTLS = function(certFile, keyFile) {
  69711. var $ptr, _r, _r$1, _tuple, _tuple$1, addr, certFile, config, err, keyFile, ln, srv, tlsListener, x, x$1, $s, $r;
  69712. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; addr = $f.addr; certFile = $f.certFile; config = $f.config; err = $f.err; keyFile = $f.keyFile; ln = $f.ln; srv = $f.srv; tlsListener = $f.tlsListener; x = $f.x; x$1 = $f.x$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  69713. srv = this;
  69714. addr = srv.Addr;
  69715. if (addr === "") {
  69716. addr = ":https";
  69717. }
  69718. config = new tls.Config.ptr($ifaceNil, $throwNilPointerError, sliceType$11.nil, false, $throwNilPointerError, ptrType$35.nil, sliceType.nil, "", 0, ptrType$35.nil, false, sliceType$12.nil, false, false, arrayType$4.zero(), $ifaceNil, 0, 0, sliceType$13.nil, new sync.Once.ptr());
  69719. if (!(srv.TLSConfig === ptrType$31.nil)) {
  69720. $copy(config, srv.TLSConfig, tls.Config);
  69721. }
  69722. if (config.NextProtos === sliceType.nil) {
  69723. config.NextProtos = new sliceType(["http/1.1"]);
  69724. }
  69725. err = $ifaceNil;
  69726. config.Certificates = $makeSlice(sliceType$11, 1);
  69727. _r = tls.LoadX509KeyPair(certFile, keyFile); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  69728. _tuple = _r; $copy((x = config.Certificates, (0 >= x.$length ? $throwRuntimeError("index out of range") : x.$array[x.$offset + 0])), _tuple[0], tls.Certificate); err = _tuple[1];
  69729. if (!($interfaceIsEqual(err, $ifaceNil))) {
  69730. return err;
  69731. }
  69732. _tuple$1 = net.Listen("tcp", addr); ln = _tuple$1[0]; err = _tuple$1[1];
  69733. if (!($interfaceIsEqual(err, $ifaceNil))) {
  69734. return err;
  69735. }
  69736. tlsListener = tls.NewListener((x$1 = new tcpKeepAliveListener.ptr($assertType(ln, ptrType$33)), new x$1.constructor.elem(x$1)), config);
  69737. _r$1 = srv.Serve(tlsListener); /* */ $s = 2; case 2: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  69738. return _r$1;
  69739. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: Server.ptr.prototype.ListenAndServeTLS }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.addr = addr; $f.certFile = certFile; $f.config = config; $f.err = err; $f.keyFile = keyFile; $f.ln = ln; $f.srv = srv; $f.tlsListener = tlsListener; $f.x = x; $f.x$1 = x$1; $f.$s = $s; $f.$r = $r; return $f;
  69740. };
  69741. Server.prototype.ListenAndServeTLS = function(certFile, keyFile) { return this.$val.ListenAndServeTLS(certFile, keyFile); };
  69742. tcpKeepAliveListener.ptr.prototype.Accept = function() {
  69743. var $ptr, _r, _tmp, _tmp$1, _tuple, c, err, ln, tc, $s, $r;
  69744. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; c = $f.c; err = $f.err; ln = $f.ln; tc = $f.tc; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  69745. c = $ifaceNil;
  69746. err = $ifaceNil;
  69747. ln = $clone(this, tcpKeepAliveListener);
  69748. _r = ln.TCPListener.AcceptTCP(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  69749. _tuple = _r; tc = _tuple[0]; err = _tuple[1];
  69750. if (!($interfaceIsEqual(err, $ifaceNil))) {
  69751. return [c, err];
  69752. }
  69753. tc.SetKeepAlive(true);
  69754. tc.SetKeepAlivePeriod(new time.Duration(41, 3906340864));
  69755. _tmp = tc; _tmp$1 = $ifaceNil; c = _tmp; err = _tmp$1;
  69756. return [c, err];
  69757. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: tcpKeepAliveListener.ptr.prototype.Accept }; } $f.$ptr = $ptr; $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f.c = c; $f.err = err; $f.ln = ln; $f.tc = tc; $f.$s = $s; $f.$r = $r; return $f;
  69758. };
  69759. tcpKeepAliveListener.prototype.Accept = function() { return this.$val.Accept(); };
  69760. globalOptionsHandler.ptr.prototype.ServeHTTP = function(w, r) {
  69761. var $ptr, _r, _r$1, mb, r, w, x, $s, $r;
  69762. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; mb = $f.mb; r = $f.r; w = $f.w; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  69763. _r = w.Header(); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  69764. $r = new Header(_r).Set("Content-Length", "0"); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  69765. /* */ if (!((x = r.ContentLength, (x.$high === 0 && x.$low === 0)))) { $s = 3; continue; }
  69766. /* */ $s = 4; continue;
  69767. /* if (!((x = r.ContentLength, (x.$high === 0 && x.$low === 0)))) { */ case 3:
  69768. mb = MaxBytesReader(w, r.Body, new $Int64(0, 4096));
  69769. _r$1 = io.Copy(ioutil.Discard, mb); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  69770. _r$1;
  69771. /* } */ case 4:
  69772. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: globalOptionsHandler.ptr.prototype.ServeHTTP }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f.mb = mb; $f.r = r; $f.w = w; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
  69773. };
  69774. globalOptionsHandler.prototype.ServeHTTP = function(w, r) { return this.$val.ServeHTTP(w, r); };
  69775. eofReaderWithWriteTo.ptr.prototype.WriteTo = function(param) {
  69776. var $ptr, param;
  69777. return [new $Int64(0, 0), $ifaceNil];
  69778. };
  69779. eofReaderWithWriteTo.prototype.WriteTo = function(param) { return this.$val.WriteTo(param); };
  69780. eofReaderWithWriteTo.ptr.prototype.Read = function(param) {
  69781. var $ptr, param;
  69782. return [0, io.EOF];
  69783. };
  69784. eofReaderWithWriteTo.prototype.Read = function(param) { return this.$val.Read(param); };
  69785. initNPNRequest.ptr.prototype.ServeHTTP = function(rw, req) {
  69786. var $ptr, _r, _r$1, _r$2, h, req, rw, $s, $r;
  69787. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; h = $f.h; req = $f.req; rw = $f.rw; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  69788. h = $clone(this, initNPNRequest);
  69789. /* */ if (req.TLS === ptrType$2.nil) { $s = 1; continue; }
  69790. /* */ $s = 2; continue;
  69791. /* if (req.TLS === ptrType$2.nil) { */ case 1:
  69792. req.TLS = new tls.ConnectionState.ptr(0, false, false, 0, "", false, "", sliceType$14.nil, sliceType$15.nil, sliceType$2.nil);
  69793. _r = h.c.ConnectionState(); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  69794. $copy(req.TLS, _r, tls.ConnectionState);
  69795. /* } */ case 2:
  69796. if ($interfaceIsEqual(req.Body, $ifaceNil)) {
  69797. req.Body = eofReader;
  69798. }
  69799. /* */ if (req.RemoteAddr === "") { $s = 4; continue; }
  69800. /* */ $s = 5; continue;
  69801. /* if (req.RemoteAddr === "") { */ case 4:
  69802. _r$1 = h.c.RemoteAddr(); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  69803. _r$2 = _r$1.String(); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  69804. req.RemoteAddr = _r$2;
  69805. /* } */ case 5:
  69806. $r = h.h.ServeHTTP(rw, req); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  69807. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: initNPNRequest.ptr.prototype.ServeHTTP }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f.h = h; $f.req = req; $f.rw = rw; $f.$s = $s; $f.$r = $r; return $f;
  69808. };
  69809. initNPNRequest.prototype.ServeHTTP = function(rw, req) { return this.$val.ServeHTTP(rw, req); };
  69810. checkConnErrorWriter.ptr.prototype.Write = function(p) {
  69811. var $ptr, _r, _tuple, err, n, p, w, $s, $r;
  69812. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tuple = $f._tuple; err = $f.err; n = $f.n; p = $f.p; w = $f.w; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  69813. n = 0;
  69814. err = $ifaceNil;
  69815. w = $clone(this, checkConnErrorWriter);
  69816. _r = w.c.w.Write(p); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  69817. _tuple = _r; n = _tuple[0]; err = _tuple[1];
  69818. if (!($interfaceIsEqual(err, $ifaceNil)) && $interfaceIsEqual(w.c.werr, $ifaceNil)) {
  69819. w.c.werr = err;
  69820. }
  69821. return [n, err];
  69822. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: checkConnErrorWriter.ptr.prototype.Write }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple = _tuple; $f.err = err; $f.n = n; $f.p = p; $f.w = w; $f.$s = $s; $f.$r = $r; return $f;
  69823. };
  69824. checkConnErrorWriter.prototype.Write = function(p) { return this.$val.Write(p); };
  69825. DetectContentType = function(data) {
  69826. var $ptr, _i, _r, _ref, ct, data, firstNonWS, sig, $s, $r;
  69827. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _i = $f._i; _r = $f._r; _ref = $f._ref; ct = $f.ct; data = $f.data; firstNonWS = $f.firstNonWS; sig = $f.sig; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  69828. if (data.$length > 512) {
  69829. data = $subslice(data, 0, 512);
  69830. }
  69831. firstNonWS = 0;
  69832. while (true) {
  69833. if (!(firstNonWS < data.$length && isWS(((firstNonWS < 0 || firstNonWS >= data.$length) ? $throwRuntimeError("index out of range") : data.$array[data.$offset + firstNonWS])))) { break; }
  69834. firstNonWS = firstNonWS + (1) >> 0;
  69835. }
  69836. _ref = sniffSignatures;
  69837. _i = 0;
  69838. /* while (true) { */ case 1:
  69839. /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; }
  69840. sig = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]);
  69841. _r = sig.match(data, firstNonWS); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  69842. ct = _r;
  69843. /* */ if (!(ct === "")) { $s = 4; continue; }
  69844. /* */ $s = 5; continue;
  69845. /* if (!(ct === "")) { */ case 4:
  69846. return ct;
  69847. /* } */ case 5:
  69848. _i++;
  69849. /* } */ $s = 1; continue; case 2:
  69850. return "application/octet-stream";
  69851. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: DetectContentType }; } $f.$ptr = $ptr; $f._i = _i; $f._r = _r; $f._ref = _ref; $f.ct = ct; $f.data = data; $f.firstNonWS = firstNonWS; $f.sig = sig; $f.$s = $s; $f.$r = $r; return $f;
  69852. };
  69853. $pkg.DetectContentType = DetectContentType;
  69854. isWS = function(b) {
  69855. var $ptr, b;
  69856. return !((bytes.IndexByte(new sliceType$2($stringToBytes("\t\n\f\r ")), b) === -1));
  69857. };
  69858. exactSig.ptr.prototype.match = function(data, firstNonWS) {
  69859. var $ptr, data, e, firstNonWS;
  69860. e = this;
  69861. if (bytes.HasPrefix(data, e.sig)) {
  69862. return e.ct;
  69863. }
  69864. return "";
  69865. };
  69866. exactSig.prototype.match = function(data, firstNonWS) { return this.$val.match(data, firstNonWS); };
  69867. maskedSig.ptr.prototype.match = function(data, firstNonWS) {
  69868. var $ptr, _i, _ref, data, db, firstNonWS, i, m, mask, x;
  69869. m = this;
  69870. if (m.skipWS) {
  69871. data = $subslice(data, firstNonWS);
  69872. }
  69873. if (data.$length < m.mask.$length) {
  69874. return "";
  69875. }
  69876. _ref = m.mask;
  69877. _i = 0;
  69878. while (true) {
  69879. if (!(_i < _ref.$length)) { break; }
  69880. i = _i;
  69881. mask = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]);
  69882. db = (((i < 0 || i >= data.$length) ? $throwRuntimeError("index out of range") : data.$array[data.$offset + i]) & mask) >>> 0;
  69883. if (!((db === (x = m.pat, ((i < 0 || i >= x.$length) ? $throwRuntimeError("index out of range") : x.$array[x.$offset + i]))))) {
  69884. return "";
  69885. }
  69886. _i++;
  69887. }
  69888. return m.ct;
  69889. };
  69890. maskedSig.prototype.match = function(data, firstNonWS) { return this.$val.match(data, firstNonWS); };
  69891. htmlSig.prototype.match = function(data, firstNonWS) {
  69892. var $ptr, _i, _ref, b, data, db, db$1, firstNonWS, h, i, x;
  69893. h = this;
  69894. data = $subslice(data, firstNonWS);
  69895. if (data.$length < (h.$length + 1 >> 0)) {
  69896. return "";
  69897. }
  69898. _ref = h;
  69899. _i = 0;
  69900. while (true) {
  69901. if (!(_i < _ref.$length)) { break; }
  69902. i = _i;
  69903. b = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]);
  69904. db = ((i < 0 || i >= data.$length) ? $throwRuntimeError("index out of range") : data.$array[data.$offset + i]);
  69905. if (65 <= b && b <= 90) {
  69906. db = (db & (223)) >>> 0;
  69907. }
  69908. if (!((b === db))) {
  69909. return "";
  69910. }
  69911. _i++;
  69912. }
  69913. db$1 = (x = h.$length, ((x < 0 || x >= data.$length) ? $throwRuntimeError("index out of range") : data.$array[data.$offset + x]));
  69914. if (!((db$1 === 32)) && !((db$1 === 62))) {
  69915. return "";
  69916. }
  69917. return "text/html; charset=utf-8";
  69918. };
  69919. $ptrType(htmlSig).prototype.match = function(data, firstNonWS) { return this.$get().match(data, firstNonWS); };
  69920. textSig.prototype.match = function(data, firstNonWS) {
  69921. var $ptr, _i, _ref, b, data, firstNonWS;
  69922. _ref = $subslice(data, firstNonWS);
  69923. _i = 0;
  69924. while (true) {
  69925. if (!(_i < _ref.$length)) { break; }
  69926. b = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]);
  69927. if (0 <= b && b <= 8 || b === 11 || 14 <= b && b <= 26 || 28 <= b && b <= 31) {
  69928. return "";
  69929. }
  69930. _i++;
  69931. }
  69932. return "text/plain; charset=utf-8";
  69933. };
  69934. $ptrType(textSig).prototype.match = function(data, firstNonWS) { return new textSig(this.$get()).match(data, firstNonWS); };
  69935. errorReader.ptr.prototype.Read = function(p) {
  69936. var $ptr, _tmp, _tmp$1, err, n, p, r;
  69937. n = 0;
  69938. err = $ifaceNil;
  69939. r = this;
  69940. _tmp = 0; _tmp$1 = r.err; n = _tmp; err = _tmp$1;
  69941. return [n, err];
  69942. };
  69943. errorReader.prototype.Read = function(p) { return this.$val.Read(p); };
  69944. newTransferWriter = function(r) {
  69945. var $ptr, _r, _r$1, _ref, _tmp, _tmp$1, _tmp$2, _tmp$3, _tuple, atLeastHTTP11, buf, err, n, r, rerr, rr, rr$1, t, x, x$1, x$2, $s, $r;
  69946. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _ref = $f._ref; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tmp$2 = $f._tmp$2; _tmp$3 = $f._tmp$3; _tuple = $f._tuple; atLeastHTTP11 = $f.atLeastHTTP11; buf = $f.buf; err = $f.err; n = $f.n; r = $f.r; rerr = $f.rerr; rr = $f.rr; rr$1 = $f.rr$1; t = $f.t; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  69947. t = ptrType$37.nil;
  69948. err = $ifaceNil;
  69949. t = new transferWriter.ptr("", $ifaceNil, $ifaceNil, false, new $Int64(0, 0), false, sliceType.nil, false);
  69950. atLeastHTTP11 = false;
  69951. _ref = r;
  69952. /* */ if ($assertType(_ref, ptrType$1, true)[1]) { $s = 1; continue; }
  69953. /* */ if ($assertType(_ref, ptrType, true)[1]) { $s = 2; continue; }
  69954. /* */ $s = 3; continue;
  69955. /* if ($assertType(_ref, ptrType$1, true)[1]) { */ case 1:
  69956. rr = _ref.$val;
  69957. /* */ if (!((x = rr.ContentLength, (x.$high === 0 && x.$low === 0))) && $interfaceIsEqual(rr.Body, $ifaceNil)) { $s = 4; continue; }
  69958. /* */ $s = 5; continue;
  69959. /* if (!((x = rr.ContentLength, (x.$high === 0 && x.$low === 0))) && $interfaceIsEqual(rr.Body, $ifaceNil)) { */ case 4:
  69960. _r = fmt.Errorf("http: Request.ContentLength=%d with nil Body", new sliceType$1([rr.ContentLength])); /* */ $s = 6; case 6: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  69961. _tmp = ptrType$37.nil; _tmp$1 = _r; t = _tmp; err = _tmp$1;
  69962. return [t, err];
  69963. /* } */ case 5:
  69964. t.Method = rr.Method;
  69965. t.Body = rr.Body;
  69966. t.BodyCloser = rr.Body;
  69967. t.ContentLength = rr.ContentLength;
  69968. t.Close = rr.Close;
  69969. t.TransferEncoding = rr.TransferEncoding;
  69970. t.Trailer = rr.Trailer;
  69971. atLeastHTTP11 = rr.ProtoAtLeast(1, 1);
  69972. /* */ if (!($interfaceIsEqual(t.Body, $ifaceNil)) && (t.TransferEncoding.$length === 0) && atLeastHTTP11) { $s = 7; continue; }
  69973. /* */ $s = 8; continue;
  69974. /* if (!($interfaceIsEqual(t.Body, $ifaceNil)) && (t.TransferEncoding.$length === 0) && atLeastHTTP11) { */ case 7:
  69975. /* */ if ((x$1 = t.ContentLength, (x$1.$high === 0 && x$1.$low === 0))) { $s = 9; continue; }
  69976. /* */ $s = 10; continue;
  69977. /* if ((x$1 = t.ContentLength, (x$1.$high === 0 && x$1.$low === 0))) { */ case 9:
  69978. buf = $clone(arrayType$1.zero(), arrayType$1);
  69979. _r$1 = io.ReadFull(t.Body, new sliceType$2(buf)); /* */ $s = 11; case 11: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  69980. _tuple = _r$1; n = _tuple[0]; rerr = _tuple[1];
  69981. if (!($interfaceIsEqual(rerr, $ifaceNil)) && !($interfaceIsEqual(rerr, io.EOF))) {
  69982. t.ContentLength = new $Int64(-1, 4294967295);
  69983. t.Body = new errorReader.ptr(rerr);
  69984. } else if (n === 1) {
  69985. t.ContentLength = new $Int64(-1, 4294967295);
  69986. t.Body = io.MultiReader(new sliceType$10([bytes.NewReader(new sliceType$2(buf)), t.Body]));
  69987. } else {
  69988. t.Body = $ifaceNil;
  69989. t.BodyCloser = $ifaceNil;
  69990. }
  69991. /* } */ case 10:
  69992. if ((x$2 = t.ContentLength, (x$2.$high < 0 || (x$2.$high === 0 && x$2.$low < 0)))) {
  69993. t.TransferEncoding = new sliceType(["chunked"]);
  69994. }
  69995. /* } */ case 8:
  69996. $s = 3; continue;
  69997. /* } else if ($assertType(_ref, ptrType, true)[1]) { */ case 2:
  69998. rr$1 = _ref.$val;
  69999. if (!(rr$1.Request === ptrType$1.nil)) {
  70000. t.Method = rr$1.Request.Method;
  70001. }
  70002. t.Body = rr$1.Body;
  70003. t.BodyCloser = rr$1.Body;
  70004. t.ContentLength = rr$1.ContentLength;
  70005. t.Close = rr$1.Close;
  70006. t.TransferEncoding = rr$1.TransferEncoding;
  70007. t.Trailer = rr$1.Trailer;
  70008. atLeastHTTP11 = rr$1.ProtoAtLeast(1, 1);
  70009. t.ResponseToHEAD = noBodyExpected(t.Method);
  70010. /* } */ case 3:
  70011. if (t.ResponseToHEAD) {
  70012. t.Body = $ifaceNil;
  70013. if (chunked(t.TransferEncoding)) {
  70014. t.ContentLength = new $Int64(-1, 4294967295);
  70015. }
  70016. } else {
  70017. if (!atLeastHTTP11 || $interfaceIsEqual(t.Body, $ifaceNil)) {
  70018. t.TransferEncoding = sliceType.nil;
  70019. }
  70020. if (chunked(t.TransferEncoding)) {
  70021. t.ContentLength = new $Int64(-1, 4294967295);
  70022. } else if ($interfaceIsEqual(t.Body, $ifaceNil)) {
  70023. t.ContentLength = new $Int64(0, 0);
  70024. }
  70025. }
  70026. if (!chunked(t.TransferEncoding)) {
  70027. t.Trailer = false;
  70028. }
  70029. _tmp$2 = t; _tmp$3 = $ifaceNil; t = _tmp$2; err = _tmp$3;
  70030. return [t, err];
  70031. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: newTransferWriter }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._ref = _ref; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tmp$2 = _tmp$2; $f._tmp$3 = _tmp$3; $f._tuple = _tuple; $f.atLeastHTTP11 = atLeastHTTP11; $f.buf = buf; $f.err = err; $f.n = n; $f.r = r; $f.rerr = rerr; $f.rr = rr; $f.rr$1 = rr$1; $f.t = t; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.$s = $s; $f.$r = $r; return $f;
  70032. };
  70033. noBodyExpected = function(requestMethod) {
  70034. var $ptr, requestMethod;
  70035. return requestMethod === "HEAD";
  70036. };
  70037. transferWriter.ptr.prototype.shouldSendContentLength = function() {
  70038. var $ptr, t, x, x$1;
  70039. t = this;
  70040. if (chunked(t.TransferEncoding)) {
  70041. return false;
  70042. }
  70043. if ((x = t.ContentLength, (x.$high > 0 || (x.$high === 0 && x.$low > 0)))) {
  70044. return true;
  70045. }
  70046. if (t.Method === "POST" || t.Method === "PUT") {
  70047. return true;
  70048. }
  70049. if ((x$1 = t.ContentLength, (x$1.$high === 0 && x$1.$low === 0)) && isIdentity(t.TransferEncoding)) {
  70050. return true;
  70051. }
  70052. return false;
  70053. };
  70054. transferWriter.prototype.shouldSendContentLength = function() { return this.$val.shouldSendContentLength(); };
  70055. transferWriter.ptr.prototype.WriteHeader = function(w) {
  70056. var $ptr, _entry, _i, _keys, _r, _r$1, _r$2, _r$3, _r$4, _ref, _ref$1, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, err, err$1, err$2, err$3, err$4, k, keys, t, w, $s, $r;
  70057. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _entry = $f._entry; _i = $f._i; _keys = $f._keys; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _ref = $f._ref; _ref$1 = $f._ref$1; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; _tuple$4 = $f._tuple$4; err = $f.err; err$1 = $f.err$1; err$2 = $f.err$2; err$3 = $f.err$3; err$4 = $f.err$4; k = $f.k; keys = $f.keys; t = $f.t; w = $f.w; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  70058. t = this;
  70059. /* */ if (t.Close) { $s = 1; continue; }
  70060. /* */ $s = 2; continue;
  70061. /* if (t.Close) { */ case 1:
  70062. _r = io.WriteString(w, "Connection: close\r\n"); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  70063. _tuple = _r; err = _tuple[1];
  70064. /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 4; continue; }
  70065. /* */ $s = 5; continue;
  70066. /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 4:
  70067. return err;
  70068. /* } */ case 5:
  70069. /* } */ case 2:
  70070. /* */ if (t.shouldSendContentLength()) { $s = 6; continue; }
  70071. /* */ if (chunked(t.TransferEncoding)) { $s = 7; continue; }
  70072. /* */ $s = 8; continue;
  70073. /* if (t.shouldSendContentLength()) { */ case 6:
  70074. _r$1 = io.WriteString(w, "Content-Length: "); /* */ $s = 9; case 9: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  70075. _tuple$1 = _r$1; err$1 = _tuple$1[1];
  70076. /* */ if (!($interfaceIsEqual(err$1, $ifaceNil))) { $s = 10; continue; }
  70077. /* */ $s = 11; continue;
  70078. /* if (!($interfaceIsEqual(err$1, $ifaceNil))) { */ case 10:
  70079. return err$1;
  70080. /* } */ case 11:
  70081. _r$2 = io.WriteString(w, strconv.FormatInt(t.ContentLength, 10) + "\r\n"); /* */ $s = 12; case 12: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  70082. _tuple$2 = _r$2; err$2 = _tuple$2[1];
  70083. /* */ if (!($interfaceIsEqual(err$2, $ifaceNil))) { $s = 13; continue; }
  70084. /* */ $s = 14; continue;
  70085. /* if (!($interfaceIsEqual(err$2, $ifaceNil))) { */ case 13:
  70086. return err$2;
  70087. /* } */ case 14:
  70088. $s = 8; continue;
  70089. /* } else if (chunked(t.TransferEncoding)) { */ case 7:
  70090. _r$3 = io.WriteString(w, "Transfer-Encoding: chunked\r\n"); /* */ $s = 15; case 15: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  70091. _tuple$3 = _r$3; err$3 = _tuple$3[1];
  70092. /* */ if (!($interfaceIsEqual(err$3, $ifaceNil))) { $s = 16; continue; }
  70093. /* */ $s = 17; continue;
  70094. /* if (!($interfaceIsEqual(err$3, $ifaceNil))) { */ case 16:
  70095. return err$3;
  70096. /* } */ case 17:
  70097. /* } */ case 8:
  70098. /* */ if (!(t.Trailer === false)) { $s = 18; continue; }
  70099. /* */ $s = 19; continue;
  70100. /* if (!(t.Trailer === false)) { */ case 18:
  70101. keys = $makeSlice(sliceType, 0, $keys(t.Trailer).length);
  70102. _ref = t.Trailer;
  70103. _i = 0;
  70104. _keys = $keys(_ref);
  70105. while (true) {
  70106. if (!(_i < _keys.length)) { break; }
  70107. _entry = _ref[_keys[_i]];
  70108. if (_entry === undefined) {
  70109. _i++;
  70110. continue;
  70111. }
  70112. k = _entry.k;
  70113. k = CanonicalHeaderKey(k);
  70114. _ref$1 = k;
  70115. if (_ref$1 === "Transfer-Encoding" || _ref$1 === "Trailer" || _ref$1 === "Content-Length") {
  70116. return new badStringError.ptr("invalid Trailer key", k);
  70117. }
  70118. keys = $append(keys, k);
  70119. _i++;
  70120. }
  70121. /* */ if (keys.$length > 0) { $s = 20; continue; }
  70122. /* */ $s = 21; continue;
  70123. /* if (keys.$length > 0) { */ case 20:
  70124. $r = sort.Strings(keys); /* */ $s = 22; case 22: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  70125. _r$4 = io.WriteString(w, "Trailer: " + strings.Join(keys, ",") + "\r\n"); /* */ $s = 23; case 23: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
  70126. _tuple$4 = _r$4; err$4 = _tuple$4[1];
  70127. /* */ if (!($interfaceIsEqual(err$4, $ifaceNil))) { $s = 24; continue; }
  70128. /* */ $s = 25; continue;
  70129. /* if (!($interfaceIsEqual(err$4, $ifaceNil))) { */ case 24:
  70130. return err$4;
  70131. /* } */ case 25:
  70132. /* } */ case 21:
  70133. /* } */ case 19:
  70134. return $ifaceNil;
  70135. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: transferWriter.ptr.prototype.WriteHeader }; } $f.$ptr = $ptr; $f._entry = _entry; $f._i = _i; $f._keys = _keys; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._ref = _ref; $f._ref$1 = _ref$1; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f._tuple$4 = _tuple$4; $f.err = err; $f.err$1 = err$1; $f.err$2 = err$2; $f.err$3 = err$3; $f.err$4 = err$4; $f.k = k; $f.keys = keys; $f.t = t; $f.w = w; $f.$s = $s; $f.$r = $r; return $f;
  70136. };
  70137. transferWriter.prototype.WriteHeader = function(w) { return this.$val.WriteHeader(w); };
  70138. transferWriter.ptr.prototype.WriteBody = function(w) {
  70139. var $ptr, _r, _r$1, _r$2, _r$3, _r$4, _r$5, _r$6, _r$7, _r$8, _tuple, _tuple$1, _tuple$2, _tuple$3, _tuple$4, cw, err, err$1, ncopy, nextra, t, w, x, x$1, x$2, x$3, $s, $r;
  70140. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _r$5 = $f._r$5; _r$6 = $f._r$6; _r$7 = $f._r$7; _r$8 = $f._r$8; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; _tuple$4 = $f._tuple$4; cw = $f.cw; err = $f.err; err$1 = $f.err$1; ncopy = $f.ncopy; nextra = $f.nextra; t = $f.t; w = $f.w; x = $f.x; x$1 = $f.x$1; x$2 = $f.x$2; x$3 = $f.x$3; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  70141. t = this;
  70142. err = $ifaceNil;
  70143. ncopy = new $Int64(0, 0);
  70144. /* */ if (!($interfaceIsEqual(t.Body, $ifaceNil))) { $s = 1; continue; }
  70145. /* */ $s = 2; continue;
  70146. /* if (!($interfaceIsEqual(t.Body, $ifaceNil))) { */ case 1:
  70147. /* */ if (chunked(t.TransferEncoding)) { $s = 3; continue; }
  70148. /* */ if ((x = t.ContentLength, (x.$high === -1 && x.$low === 4294967295))) { $s = 4; continue; }
  70149. /* */ $s = 5; continue;
  70150. /* if (chunked(t.TransferEncoding)) { */ case 3:
  70151. cw = internal.NewChunkedWriter(w);
  70152. _r = io.Copy(cw, t.Body); /* */ $s = 7; case 7: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  70153. _tuple = _r; err = _tuple[1];
  70154. /* */ if ($interfaceIsEqual(err, $ifaceNil)) { $s = 8; continue; }
  70155. /* */ $s = 9; continue;
  70156. /* if ($interfaceIsEqual(err, $ifaceNil)) { */ case 8:
  70157. _r$1 = cw.Close(); /* */ $s = 10; case 10: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  70158. err = _r$1;
  70159. /* } */ case 9:
  70160. $s = 6; continue;
  70161. /* } else if ((x = t.ContentLength, (x.$high === -1 && x.$low === 4294967295))) { */ case 4:
  70162. _r$2 = io.Copy(w, t.Body); /* */ $s = 11; case 11: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  70163. _tuple$1 = _r$2; ncopy = _tuple$1[0]; err = _tuple$1[1];
  70164. $s = 6; continue;
  70165. /* } else { */ case 5:
  70166. _r$3 = io.Copy(w, io.LimitReader(t.Body, t.ContentLength)); /* */ $s = 12; case 12: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  70167. _tuple$2 = _r$3; ncopy = _tuple$2[0]; err = _tuple$2[1];
  70168. if (!($interfaceIsEqual(err, $ifaceNil))) {
  70169. return err;
  70170. }
  70171. nextra = new $Int64(0, 0);
  70172. _r$4 = io.Copy(ioutil.Discard, t.Body); /* */ $s = 13; case 13: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
  70173. _tuple$3 = _r$4; nextra = _tuple$3[0]; err = _tuple$3[1];
  70174. ncopy = (x$1 = nextra, new $Int64(ncopy.$high + x$1.$high, ncopy.$low + x$1.$low));
  70175. /* } */ case 6:
  70176. if (!($interfaceIsEqual(err, $ifaceNil))) {
  70177. return err;
  70178. }
  70179. _r$5 = t.BodyCloser.Close(); /* */ $s = 14; case 14: if($c) { $c = false; _r$5 = _r$5.$blk(); } if (_r$5 && _r$5.$blk !== undefined) { break s; }
  70180. err = _r$5;
  70181. /* */ if (!($interfaceIsEqual(err, $ifaceNil))) { $s = 15; continue; }
  70182. /* */ $s = 16; continue;
  70183. /* if (!($interfaceIsEqual(err, $ifaceNil))) { */ case 15:
  70184. return err;
  70185. /* } */ case 16:
  70186. /* } */ case 2:
  70187. /* */ if (!t.ResponseToHEAD && !((x$2 = t.ContentLength, (x$2.$high === -1 && x$2.$low === 4294967295))) && !((x$3 = t.ContentLength, (x$3.$high === ncopy.$high && x$3.$low === ncopy.$low)))) { $s = 17; continue; }
  70188. /* */ $s = 18; continue;
  70189. /* if (!t.ResponseToHEAD && !((x$2 = t.ContentLength, (x$2.$high === -1 && x$2.$low === 4294967295))) && !((x$3 = t.ContentLength, (x$3.$high === ncopy.$high && x$3.$low === ncopy.$low)))) { */ case 17:
  70190. _r$6 = fmt.Errorf("http: ContentLength=%d with Body length %d", new sliceType$1([t.ContentLength, ncopy])); /* */ $s = 19; case 19: if($c) { $c = false; _r$6 = _r$6.$blk(); } if (_r$6 && _r$6.$blk !== undefined) { break s; }
  70191. return _r$6;
  70192. /* } */ case 18:
  70193. /* */ if (chunked(t.TransferEncoding)) { $s = 20; continue; }
  70194. /* */ $s = 21; continue;
  70195. /* if (chunked(t.TransferEncoding)) { */ case 20:
  70196. /* */ if (!(t.Trailer === false)) { $s = 22; continue; }
  70197. /* */ $s = 23; continue;
  70198. /* if (!(t.Trailer === false)) { */ case 22:
  70199. _r$7 = new Header(t.Trailer).Write(w); /* */ $s = 24; case 24: if($c) { $c = false; _r$7 = _r$7.$blk(); } if (_r$7 && _r$7.$blk !== undefined) { break s; }
  70200. err$1 = _r$7;
  70201. /* */ if (!($interfaceIsEqual(err$1, $ifaceNil))) { $s = 25; continue; }
  70202. /* */ $s = 26; continue;
  70203. /* if (!($interfaceIsEqual(err$1, $ifaceNil))) { */ case 25:
  70204. return err$1;
  70205. /* } */ case 26:
  70206. /* } */ case 23:
  70207. _r$8 = io.WriteString(w, "\r\n"); /* */ $s = 27; case 27: if($c) { $c = false; _r$8 = _r$8.$blk(); } if (_r$8 && _r$8.$blk !== undefined) { break s; }
  70208. _tuple$4 = _r$8; err = _tuple$4[1];
  70209. /* } */ case 21:
  70210. return err;
  70211. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: transferWriter.ptr.prototype.WriteBody }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._r$5 = _r$5; $f._r$6 = _r$6; $f._r$7 = _r$7; $f._r$8 = _r$8; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f._tuple$4 = _tuple$4; $f.cw = cw; $f.err = err; $f.err$1 = err$1; $f.ncopy = ncopy; $f.nextra = nextra; $f.t = t; $f.w = w; $f.x = x; $f.x$1 = x$1; $f.x$2 = x$2; $f.x$3 = x$3; $f.$s = $s; $f.$r = $r; return $f;
  70212. };
  70213. transferWriter.prototype.WriteBody = function(w) { return this.$val.WriteBody(w); };
  70214. bodyAllowedForStatus = function(status) {
  70215. var $ptr, status;
  70216. if (status >= 100 && status <= 199) {
  70217. return false;
  70218. } else if (status === 204) {
  70219. return false;
  70220. } else if (status === 304) {
  70221. return false;
  70222. }
  70223. return true;
  70224. };
  70225. suppressedHeaders = function(status) {
  70226. var $ptr, status;
  70227. if (status === 304) {
  70228. return suppressedHeaders304;
  70229. } else if (!bodyAllowedForStatus(status)) {
  70230. return suppressedHeadersNoBody;
  70231. }
  70232. return sliceType.nil;
  70233. };
  70234. readTransfer = function(msg, r) {
  70235. var $ptr, _r, _r$1, _r$2, _r$3, _r$4, _ref, _ref$1, _ref$2, _tmp, _tmp$1, _tuple, _tuple$1, _tuple$2, _tuple$3, err, err$1, isResponse, msg, n, r, realLength, rr, rr$1, rr$2, rr$3, rr$4, t, $s, $r;
  70236. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _ref = $f._ref; _ref$1 = $f._ref$1; _ref$2 = $f._ref$2; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; _tuple$3 = $f._tuple$3; err = $f.err; err$1 = $f.err$1; isResponse = $f.isResponse; msg = $f.msg; n = $f.n; r = $f.r; realLength = $f.realLength; rr = $f.rr; rr$1 = $f.rr$1; rr$2 = $f.rr$2; rr$3 = $f.rr$3; rr$4 = $f.rr$4; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  70237. err = $ifaceNil;
  70238. t = new transferReader.ptr(false, 0, "GET", 0, 0, $ifaceNil, new $Int64(0, 0), sliceType.nil, false, false);
  70239. isResponse = false;
  70240. _ref = msg;
  70241. /* */ if ($assertType(_ref, ptrType, true)[1]) { $s = 1; continue; }
  70242. /* */ if ($assertType(_ref, ptrType$1, true)[1]) { $s = 2; continue; }
  70243. /* */ $s = 3; continue;
  70244. /* if ($assertType(_ref, ptrType, true)[1]) { */ case 1:
  70245. rr = _ref.$val;
  70246. t.Header = rr.Header;
  70247. t.StatusCode = rr.StatusCode;
  70248. t.ProtoMajor = rr.ProtoMajor;
  70249. t.ProtoMinor = rr.ProtoMinor;
  70250. _r = shouldClose(t.ProtoMajor, t.ProtoMinor, t.Header, true); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  70251. t.Close = _r;
  70252. isResponse = true;
  70253. if (!(rr.Request === ptrType$1.nil)) {
  70254. t.RequestMethod = rr.Request.Method;
  70255. }
  70256. $s = 4; continue;
  70257. /* } else if ($assertType(_ref, ptrType$1, true)[1]) { */ case 2:
  70258. rr$1 = _ref.$val;
  70259. t.Header = rr$1.Header;
  70260. t.ProtoMajor = rr$1.ProtoMajor;
  70261. t.ProtoMinor = rr$1.ProtoMinor;
  70262. t.StatusCode = 200;
  70263. $s = 4; continue;
  70264. /* } else { */ case 3:
  70265. rr$2 = _ref;
  70266. $panic(new $String("unexpected type"));
  70267. /* } */ case 4:
  70268. if ((t.ProtoMajor === 0) && (t.ProtoMinor === 0)) {
  70269. _tmp = 1; _tmp$1 = 1; t.ProtoMajor = _tmp; t.ProtoMinor = _tmp$1;
  70270. }
  70271. _r$1 = fixTransferEncoding(t.RequestMethod, t.Header); /* */ $s = 6; case 6: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  70272. _tuple = _r$1; t.TransferEncoding = _tuple[0]; err = _tuple[1];
  70273. if (!($interfaceIsEqual(err, $ifaceNil))) {
  70274. err = err;
  70275. return err;
  70276. }
  70277. _r$2 = fixLength(isResponse, t.StatusCode, t.RequestMethod, t.Header, t.TransferEncoding); /* */ $s = 7; case 7: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  70278. _tuple$1 = _r$2; realLength = _tuple$1[0]; err = _tuple$1[1];
  70279. if (!($interfaceIsEqual(err, $ifaceNil))) {
  70280. err = err;
  70281. return err;
  70282. }
  70283. /* */ if (isResponse && t.RequestMethod === "HEAD") { $s = 8; continue; }
  70284. /* */ $s = 9; continue;
  70285. /* if (isResponse && t.RequestMethod === "HEAD") { */ case 8:
  70286. _r$3 = parseContentLength(new Header(t.Header).get("Content-Length")); /* */ $s = 11; case 11: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  70287. _tuple$2 = _r$3; n = _tuple$2[0]; err$1 = _tuple$2[1];
  70288. /* */ if (!($interfaceIsEqual(err$1, $ifaceNil))) { $s = 12; continue; }
  70289. /* */ $s = 13; continue;
  70290. /* if (!($interfaceIsEqual(err$1, $ifaceNil))) { */ case 12:
  70291. err = err$1;
  70292. return err;
  70293. $s = 14; continue;
  70294. /* } else { */ case 13:
  70295. t.ContentLength = n;
  70296. /* } */ case 14:
  70297. $s = 10; continue;
  70298. /* } else { */ case 9:
  70299. t.ContentLength = realLength;
  70300. /* } */ case 10:
  70301. _r$4 = fixTrailer(t.Header, t.TransferEncoding); /* */ $s = 15; case 15: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
  70302. _tuple$3 = _r$4; t.Trailer = _tuple$3[0]; err = _tuple$3[1];
  70303. if (!($interfaceIsEqual(err, $ifaceNil))) {
  70304. err = err;
  70305. return err;
  70306. }
  70307. _ref$1 = msg;
  70308. if ($assertType(_ref$1, ptrType, true)[1]) {
  70309. if ((realLength.$high === -1 && realLength.$low === 4294967295) && !chunked(t.TransferEncoding) && bodyAllowedForStatus(t.StatusCode)) {
  70310. t.Close = true;
  70311. }
  70312. }
  70313. if (chunked(t.TransferEncoding)) {
  70314. if (noBodyExpected(t.RequestMethod)) {
  70315. t.Body = eofReader;
  70316. } else {
  70317. t.Body = new body.ptr(internal.NewChunkedReader(r), msg, r, t.Close, new sync.Mutex.ptr(), false);
  70318. }
  70319. } else if ((realLength.$high === 0 && realLength.$low === 0)) {
  70320. t.Body = eofReader;
  70321. } else if ((realLength.$high > 0 || (realLength.$high === 0 && realLength.$low > 0))) {
  70322. t.Body = new body.ptr(io.LimitReader(r, realLength), $ifaceNil, ptrType$19.nil, t.Close, new sync.Mutex.ptr(), false);
  70323. } else {
  70324. if (t.Close) {
  70325. t.Body = new body.ptr(r, $ifaceNil, ptrType$19.nil, t.Close, new sync.Mutex.ptr(), false);
  70326. } else {
  70327. t.Body = eofReader;
  70328. }
  70329. }
  70330. _ref$2 = msg;
  70331. if ($assertType(_ref$2, ptrType$1, true)[1]) {
  70332. rr$3 = _ref$2.$val;
  70333. rr$3.Body = t.Body;
  70334. rr$3.ContentLength = t.ContentLength;
  70335. rr$3.TransferEncoding = t.TransferEncoding;
  70336. rr$3.Close = t.Close;
  70337. rr$3.Trailer = t.Trailer;
  70338. } else if ($assertType(_ref$2, ptrType, true)[1]) {
  70339. rr$4 = _ref$2.$val;
  70340. rr$4.Body = t.Body;
  70341. rr$4.ContentLength = t.ContentLength;
  70342. rr$4.TransferEncoding = t.TransferEncoding;
  70343. rr$4.Close = t.Close;
  70344. rr$4.Trailer = t.Trailer;
  70345. }
  70346. err = $ifaceNil;
  70347. return err;
  70348. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: readTransfer }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._ref = _ref; $f._ref$1 = _ref$1; $f._ref$2 = _ref$2; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f._tuple$3 = _tuple$3; $f.err = err; $f.err$1 = err$1; $f.isResponse = isResponse; $f.msg = msg; $f.n = n; $f.r = r; $f.realLength = realLength; $f.rr = rr; $f.rr$1 = rr$1; $f.rr$2 = rr$2; $f.rr$3 = rr$3; $f.rr$4 = rr$4; $f.t = t; $f.$s = $s; $f.$r = $r; return $f;
  70349. };
  70350. chunked = function(te) {
  70351. var $ptr, te;
  70352. return te.$length > 0 && (0 >= te.$length ? $throwRuntimeError("index out of range") : te.$array[te.$offset + 0]) === "chunked";
  70353. };
  70354. isIdentity = function(te) {
  70355. var $ptr, te;
  70356. return (te.$length === 1) && (0 >= te.$length ? $throwRuntimeError("index out of range") : te.$array[te.$offset + 0]) === "identity";
  70357. };
  70358. fixTransferEncoding = function(requestMethod, header) {
  70359. var $ptr, _entry, _i, _r, _r$1, _ref, _tuple, encoding, encodings, header, present, raw, requestMethod, te, x, $s, $r;
  70360. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _entry = $f._entry; _i = $f._i; _r = $f._r; _r$1 = $f._r$1; _ref = $f._ref; _tuple = $f._tuple; encoding = $f.encoding; encodings = $f.encodings; header = $f.header; present = $f.present; raw = $f.raw; requestMethod = $f.requestMethod; te = $f.te; x = $f.x; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  70361. _tuple = (_entry = header["Transfer-Encoding"], _entry !== undefined ? [_entry.v, true] : [sliceType.nil, false]); raw = _tuple[0]; present = _tuple[1];
  70362. if (!present) {
  70363. return [sliceType.nil, $ifaceNil];
  70364. }
  70365. delete header["Transfer-Encoding"];
  70366. encodings = strings.Split((0 >= raw.$length ? $throwRuntimeError("index out of range") : raw.$array[raw.$offset + 0]), ",");
  70367. te = $makeSlice(sliceType, 0, encodings.$length);
  70368. _ref = encodings;
  70369. _i = 0;
  70370. /* while (true) { */ case 1:
  70371. /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; }
  70372. encoding = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]);
  70373. _r = strings.TrimSpace(encoding); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  70374. _r$1 = strings.ToLower(_r); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  70375. encoding = _r$1;
  70376. if (encoding === "identity") {
  70377. /* break; */ $s = 2; continue;
  70378. }
  70379. if (!(encoding === "chunked")) {
  70380. return [sliceType.nil, new badStringError.ptr("unsupported transfer encoding", encoding)];
  70381. }
  70382. te = $subslice(te, 0, (te.$length + 1 >> 0));
  70383. (x = te.$length - 1 >> 0, ((x < 0 || x >= te.$length) ? $throwRuntimeError("index out of range") : te.$array[te.$offset + x] = encoding));
  70384. _i++;
  70385. /* } */ $s = 1; continue; case 2:
  70386. if (te.$length > 1) {
  70387. return [sliceType.nil, new badStringError.ptr("too many transfer encodings", strings.Join(te, ","))];
  70388. }
  70389. if (te.$length > 0) {
  70390. delete header["Content-Length"];
  70391. return [te, $ifaceNil];
  70392. }
  70393. return [sliceType.nil, $ifaceNil];
  70394. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: fixTransferEncoding }; } $f.$ptr = $ptr; $f._entry = _entry; $f._i = _i; $f._r = _r; $f._r$1 = _r$1; $f._ref = _ref; $f._tuple = _tuple; $f.encoding = encoding; $f.encodings = encodings; $f.header = header; $f.present = present; $f.raw = raw; $f.requestMethod = requestMethod; $f.te = te; $f.x = x; $f.$s = $s; $f.$r = $r; return $f;
  70395. };
  70396. fixLength = function(isResponse, status, requestMethod, header, te) {
  70397. var $ptr, _q, _r, _r$1, _ref, _tuple, cl, err, header, isResponse, n, requestMethod, status, te, $s, $r;
  70398. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _q = $f._q; _r = $f._r; _r$1 = $f._r$1; _ref = $f._ref; _tuple = $f._tuple; cl = $f.cl; err = $f.err; header = $f.header; isResponse = $f.isResponse; n = $f.n; requestMethod = $f.requestMethod; status = $f.status; te = $f.te; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  70399. if (noBodyExpected(requestMethod)) {
  70400. return [new $Int64(0, 0), $ifaceNil];
  70401. }
  70402. if ((_q = status / 100, (_q === _q && _q !== 1/0 && _q !== -1/0) ? _q >> 0 : $throwRuntimeError("integer divide by zero")) === 1) {
  70403. return [new $Int64(0, 0), $ifaceNil];
  70404. }
  70405. _ref = status;
  70406. if (_ref === 204 || _ref === 304) {
  70407. return [new $Int64(0, 0), $ifaceNil];
  70408. }
  70409. if (chunked(te)) {
  70410. return [new $Int64(-1, 4294967295), $ifaceNil];
  70411. }
  70412. _r = strings.TrimSpace(new Header(header).get("Content-Length")); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  70413. cl = _r;
  70414. /* */ if (!(cl === "")) { $s = 2; continue; }
  70415. /* */ $s = 3; continue;
  70416. /* if (!(cl === "")) { */ case 2:
  70417. _r$1 = parseContentLength(cl); /* */ $s = 5; case 5: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  70418. _tuple = _r$1; n = _tuple[0]; err = _tuple[1];
  70419. if (!($interfaceIsEqual(err, $ifaceNil))) {
  70420. return [new $Int64(-1, 4294967295), err];
  70421. }
  70422. return [n, $ifaceNil];
  70423. $s = 4; continue;
  70424. /* } else { */ case 3:
  70425. new Header(header).Del("Content-Length");
  70426. /* } */ case 4:
  70427. if (!isResponse && requestMethod === "GET") {
  70428. return [new $Int64(0, 0), $ifaceNil];
  70429. }
  70430. return [new $Int64(-1, 4294967295), $ifaceNil];
  70431. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: fixLength }; } $f.$ptr = $ptr; $f._q = _q; $f._r = _r; $f._r$1 = _r$1; $f._ref = _ref; $f._tuple = _tuple; $f.cl = cl; $f.err = err; $f.header = header; $f.isResponse = isResponse; $f.n = n; $f.requestMethod = requestMethod; $f.status = status; $f.te = te; $f.$s = $s; $f.$r = $r; return $f;
  70432. };
  70433. shouldClose = function(major, minor, header, removeCloseHeader) {
  70434. var $ptr, _r, _r$1, _r$2, header, major, minor, removeCloseHeader, $s, $r;
  70435. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; header = $f.header; major = $f.major; minor = $f.minor; removeCloseHeader = $f.removeCloseHeader; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  70436. /* */ if (major < 1) { $s = 1; continue; }
  70437. /* */ if ((major === 1) && (minor === 0)) { $s = 2; continue; }
  70438. /* */ $s = 3; continue;
  70439. /* if (major < 1) { */ case 1:
  70440. return true;
  70441. $s = 4; continue;
  70442. /* } else if ((major === 1) && (minor === 0)) { */ case 2:
  70443. _r = strings.ToLower(new Header(header).get("Connection")); /* */ $s = 7; case 7: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  70444. _r$1 = strings.Contains(_r, "keep-alive"); /* */ $s = 8; case 8: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  70445. /* */ if (!_r$1) { $s = 5; continue; }
  70446. /* */ $s = 6; continue;
  70447. /* if (!_r$1) { */ case 5:
  70448. return true;
  70449. /* } */ case 6:
  70450. return false;
  70451. $s = 4; continue;
  70452. /* } else { */ case 3:
  70453. _r$2 = strings.ToLower(new Header(header).get("Connection")); /* */ $s = 11; case 11: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  70454. /* */ if (_r$2 === "close") { $s = 9; continue; }
  70455. /* */ $s = 10; continue;
  70456. /* if (_r$2 === "close") { */ case 9:
  70457. if (removeCloseHeader) {
  70458. new Header(header).Del("Connection");
  70459. }
  70460. return true;
  70461. /* } */ case 10:
  70462. /* } */ case 4:
  70463. return false;
  70464. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: shouldClose }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f.header = header; $f.major = major; $f.minor = minor; $f.removeCloseHeader = removeCloseHeader; $f.$s = $s; $f.$r = $r; return $f;
  70465. };
  70466. fixTrailer = function(header, te) {
  70467. var $ptr, _i, _key$5, _r, _r$1, _ref, _ref$1, header, key, keys, raw, te, trailer, $s, $r;
  70468. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _i = $f._i; _key$5 = $f._key$5; _r = $f._r; _r$1 = $f._r$1; _ref = $f._ref; _ref$1 = $f._ref$1; header = $f.header; key = $f.key; keys = $f.keys; raw = $f.raw; te = $f.te; trailer = $f.trailer; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  70469. raw = new Header(header).get("Trailer");
  70470. if (raw === "") {
  70471. return [false, $ifaceNil];
  70472. }
  70473. new Header(header).Del("Trailer");
  70474. trailer = new $Map();
  70475. keys = strings.Split(raw, ",");
  70476. _ref = keys;
  70477. _i = 0;
  70478. /* while (true) { */ case 1:
  70479. /* if (!(_i < _ref.$length)) { break; } */ if(!(_i < _ref.$length)) { $s = 2; continue; }
  70480. key = ((_i < 0 || _i >= _ref.$length) ? $throwRuntimeError("index out of range") : _ref.$array[_ref.$offset + _i]);
  70481. _r = strings.TrimSpace(key); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  70482. _r$1 = CanonicalHeaderKey(_r); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  70483. key = _r$1;
  70484. _ref$1 = key;
  70485. if (_ref$1 === "Transfer-Encoding" || _ref$1 === "Trailer" || _ref$1 === "Content-Length") {
  70486. return [false, new badStringError.ptr("bad trailer key", key)];
  70487. }
  70488. _key$5 = key; (trailer || $throwRuntimeError("assignment to entry in nil map"))[_key$5] = { k: _key$5, v: sliceType.nil };
  70489. _i++;
  70490. /* } */ $s = 1; continue; case 2:
  70491. if ($keys(trailer).length === 0) {
  70492. return [false, $ifaceNil];
  70493. }
  70494. if (!chunked(te)) {
  70495. return [false, $pkg.ErrUnexpectedTrailer];
  70496. }
  70497. return [trailer, $ifaceNil];
  70498. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: fixTrailer }; } $f.$ptr = $ptr; $f._i = _i; $f._key$5 = _key$5; $f._r = _r; $f._r$1 = _r$1; $f._ref = _ref; $f._ref$1 = _ref$1; $f.header = header; $f.key = key; $f.keys = keys; $f.raw = raw; $f.te = te; $f.trailer = trailer; $f.$s = $s; $f.$r = $r; return $f;
  70499. };
  70500. body.ptr.prototype.Read = function(p) {
  70501. var $ptr, _r, _tmp, _tmp$1, _tuple, b, err, n, p, $s, $deferred, $r;
  70502. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; b = $f.b; err = $f.err; n = $f.n; p = $f.p; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
  70503. n = 0;
  70504. err = $ifaceNil;
  70505. b = this;
  70506. $r = b.mu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  70507. $deferred.push([$methodVal(b.mu, "Unlock"), []]);
  70508. if (b.closed) {
  70509. _tmp = 0; _tmp$1 = $pkg.ErrBodyReadAfterClose; n = _tmp; err = _tmp$1;
  70510. return [n, err];
  70511. }
  70512. _r = b.readLocked(p); /* */ $s = 2; case 2: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  70513. _tuple = _r; n = _tuple[0]; err = _tuple[1];
  70514. return [n, err];
  70515. /* */ $s = -1; case -1: } return; } } catch(err) { $err = err; $s = -1; } finally { $callDeferred($deferred, $err); if (!$curGoroutine.asleep) { return [n, err]; } if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: body.ptr.prototype.Read }; } $f.$ptr = $ptr; $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f.b = b; $f.err = err; $f.n = n; $f.p = p; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
  70516. };
  70517. body.prototype.Read = function(p) { return this.$val.Read(p); };
  70518. body.ptr.prototype.readLocked = function(p) {
  70519. var $ptr, _r, _r$1, _tmp, _tmp$1, _tuple, _tuple$1, _tuple$2, b, e, err, lr, lr$1, n, ok, ok$1, p, x, x$1, $s, $r;
  70520. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; _tuple$2 = $f._tuple$2; b = $f.b; e = $f.e; err = $f.err; lr = $f.lr; lr$1 = $f.lr$1; n = $f.n; ok = $f.ok; ok$1 = $f.ok$1; p = $f.p; x = $f.x; x$1 = $f.x$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  70521. n = 0;
  70522. err = $ifaceNil;
  70523. b = this;
  70524. _r = b.src.Read(p); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  70525. _tuple = _r; n = _tuple[0]; err = _tuple[1];
  70526. /* */ if ($interfaceIsEqual(err, io.EOF)) { $s = 2; continue; }
  70527. /* */ $s = 3; continue;
  70528. /* if ($interfaceIsEqual(err, io.EOF)) { */ case 2:
  70529. /* */ if (!($interfaceIsEqual(b.hdr, $ifaceNil))) { $s = 4; continue; }
  70530. /* */ $s = 5; continue;
  70531. /* if (!($interfaceIsEqual(b.hdr, $ifaceNil))) { */ case 4:
  70532. _r$1 = b.readTrailer(); /* */ $s = 7; case 7: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  70533. e = _r$1;
  70534. /* */ if (!($interfaceIsEqual(e, $ifaceNil))) { $s = 8; continue; }
  70535. /* */ $s = 9; continue;
  70536. /* if (!($interfaceIsEqual(e, $ifaceNil))) { */ case 8:
  70537. err = e;
  70538. /* } */ case 9:
  70539. b.hdr = $ifaceNil;
  70540. $s = 6; continue;
  70541. /* } else { */ case 5:
  70542. _tuple$1 = $assertType(b.src, ptrType$25, true); lr = _tuple$1[0]; ok = _tuple$1[1];
  70543. if (ok && (x = lr.N, (x.$high > 0 || (x.$high === 0 && x.$low > 0)))) {
  70544. err = io.ErrUnexpectedEOF;
  70545. }
  70546. /* } */ case 6:
  70547. /* } */ case 3:
  70548. if ($interfaceIsEqual(err, $ifaceNil) && n > 0) {
  70549. _tuple$2 = $assertType(b.src, ptrType$25, true); lr$1 = _tuple$2[0]; ok$1 = _tuple$2[1];
  70550. if (ok$1 && (x$1 = lr$1.N, (x$1.$high === 0 && x$1.$low === 0))) {
  70551. err = io.EOF;
  70552. }
  70553. }
  70554. _tmp = n; _tmp$1 = err; n = _tmp; err = _tmp$1;
  70555. return [n, err];
  70556. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: body.ptr.prototype.readLocked }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f._tuple$2 = _tuple$2; $f.b = b; $f.e = e; $f.err = err; $f.lr = lr; $f.lr$1 = lr$1; $f.n = n; $f.ok = ok; $f.ok$1 = ok$1; $f.p = p; $f.x = x; $f.x$1 = x$1; $f.$s = $s; $f.$r = $r; return $f;
  70557. };
  70558. body.prototype.readLocked = function(p) { return this.$val.readLocked(p); };
  70559. seeUpcomingDoubleCRLF = function(r) {
  70560. var $ptr, _r, _tuple, buf, err, peekSize, r, $s, $r;
  70561. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tuple = $f._tuple; buf = $f.buf; err = $f.err; peekSize = $f.peekSize; r = $f.r; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  70562. peekSize = 4;
  70563. /* while (true) { */ case 1:
  70564. _r = r.Peek(peekSize); /* */ $s = 3; case 3: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  70565. _tuple = _r; buf = _tuple[0]; err = _tuple[1];
  70566. if (bytes.HasSuffix(buf, doubleCRLF)) {
  70567. return true;
  70568. }
  70569. if (!($interfaceIsEqual(err, $ifaceNil))) {
  70570. /* break; */ $s = 2; continue;
  70571. }
  70572. peekSize = peekSize + (1) >> 0;
  70573. /* } */ $s = 1; continue; case 2:
  70574. return false;
  70575. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: seeUpcomingDoubleCRLF }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple = _tuple; $f.buf = buf; $f.err = err; $f.peekSize = peekSize; $f.r = r; $f.$s = $s; $f.$r = $r; return $f;
  70576. };
  70577. body.ptr.prototype.readTrailer = function() {
  70578. var $ptr, _r, _r$1, _r$2, _r$3, _r$4, _ref, _tuple, _tuple$1, b, buf, err, hdr, rr, rr$1, $s, $r;
  70579. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _r$2 = $f._r$2; _r$3 = $f._r$3; _r$4 = $f._r$4; _ref = $f._ref; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; b = $f.b; buf = $f.buf; err = $f.err; hdr = $f.hdr; rr = $f.rr; rr$1 = $f.rr$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  70580. b = this;
  70581. _r = b.r.Peek(2); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  70582. _tuple = _r; buf = _tuple[0]; err = _tuple[1];
  70583. /* */ if (bytes.Equal(buf, singleCRLF)) { $s = 2; continue; }
  70584. /* */ $s = 3; continue;
  70585. /* if (bytes.Equal(buf, singleCRLF)) { */ case 2:
  70586. _r$1 = b.r.ReadByte(); /* */ $s = 4; case 4: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  70587. _r$1;
  70588. _r$2 = b.r.ReadByte(); /* */ $s = 5; case 5: if($c) { $c = false; _r$2 = _r$2.$blk(); } if (_r$2 && _r$2.$blk !== undefined) { break s; }
  70589. _r$2;
  70590. return $ifaceNil;
  70591. /* } */ case 3:
  70592. if (buf.$length < 2) {
  70593. return errTrailerEOF;
  70594. }
  70595. if (!($interfaceIsEqual(err, $ifaceNil))) {
  70596. return err;
  70597. }
  70598. _r$3 = seeUpcomingDoubleCRLF(b.r); /* */ $s = 8; case 8: if($c) { $c = false; _r$3 = _r$3.$blk(); } if (_r$3 && _r$3.$blk !== undefined) { break s; }
  70599. /* */ if (!_r$3) { $s = 6; continue; }
  70600. /* */ $s = 7; continue;
  70601. /* if (!_r$3) { */ case 6:
  70602. return errors.New("http: suspiciously long trailer after chunked body");
  70603. /* } */ case 7:
  70604. _r$4 = textproto.NewReader(b.r).ReadMIMEHeader(); /* */ $s = 9; case 9: if($c) { $c = false; _r$4 = _r$4.$blk(); } if (_r$4 && _r$4.$blk !== undefined) { break s; }
  70605. _tuple$1 = _r$4; hdr = _tuple$1[0]; err = _tuple$1[1];
  70606. if (!($interfaceIsEqual(err, $ifaceNil))) {
  70607. if ($interfaceIsEqual(err, io.EOF)) {
  70608. return errTrailerEOF;
  70609. }
  70610. return err;
  70611. }
  70612. _ref = b.hdr;
  70613. if ($assertType(_ref, ptrType$1, true)[1]) {
  70614. rr = _ref.$val;
  70615. mergeSetHeader((rr.$ptr_Trailer || (rr.$ptr_Trailer = new ptrType$38(function() { return this.$target.Trailer; }, function($v) { this.$target.Trailer = $v; }, rr))), hdr);
  70616. } else if ($assertType(_ref, ptrType, true)[1]) {
  70617. rr$1 = _ref.$val;
  70618. mergeSetHeader((rr$1.$ptr_Trailer || (rr$1.$ptr_Trailer = new ptrType$38(function() { return this.$target.Trailer; }, function($v) { this.$target.Trailer = $v; }, rr$1))), hdr);
  70619. }
  70620. return $ifaceNil;
  70621. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: body.ptr.prototype.readTrailer }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._r$2 = _r$2; $f._r$3 = _r$3; $f._r$4 = _r$4; $f._ref = _ref; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.b = b; $f.buf = buf; $f.err = err; $f.hdr = hdr; $f.rr = rr; $f.rr$1 = rr$1; $f.$s = $s; $f.$r = $r; return $f;
  70622. };
  70623. body.prototype.readTrailer = function() { return this.$val.readTrailer(); };
  70624. mergeSetHeader = function(dst, src) {
  70625. var $ptr, _entry, _i, _key$5, _keys, _ref, dst, k, src, vv;
  70626. if (dst.$get() === false) {
  70627. dst.$set(src);
  70628. return;
  70629. }
  70630. _ref = src;
  70631. _i = 0;
  70632. _keys = $keys(_ref);
  70633. while (true) {
  70634. if (!(_i < _keys.length)) { break; }
  70635. _entry = _ref[_keys[_i]];
  70636. if (_entry === undefined) {
  70637. _i++;
  70638. continue;
  70639. }
  70640. k = _entry.k;
  70641. vv = _entry.v;
  70642. _key$5 = k; (dst.$get() || $throwRuntimeError("assignment to entry in nil map"))[_key$5] = { k: _key$5, v: vv };
  70643. _i++;
  70644. }
  70645. };
  70646. body.ptr.prototype.Close = function() {
  70647. var $ptr, _r, _tuple, b, err, x, $s, $deferred, $r;
  70648. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tuple = $f._tuple; b = $f.b; err = $f.err; x = $f.x; $s = $f.$s; $deferred = $f.$deferred; $r = $f.$r; } var $err = null; try { s: while (true) { switch ($s) { case 0: $deferred = []; $deferred.index = $curGoroutine.deferStack.length; $curGoroutine.deferStack.push($deferred);
  70649. b = this;
  70650. $r = b.mu.Lock(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  70651. $deferred.push([$methodVal(b.mu, "Unlock"), []]);
  70652. if (b.closed) {
  70653. return $ifaceNil;
  70654. }
  70655. err = $ifaceNil;
  70656. /* */ if ($interfaceIsEqual(b.hdr, $ifaceNil) && b.closing) { $s = 2; continue; }
  70657. /* */ $s = 3; continue;
  70658. /* if ($interfaceIsEqual(b.hdr, $ifaceNil) && b.closing) { */ case 2:
  70659. $s = 4; continue;
  70660. /* } else { */ case 3:
  70661. _r = io.Copy(ioutil.Discard, (x = new bodyLocked.ptr(b), new x.constructor.elem(x))); /* */ $s = 5; case 5: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  70662. _tuple = _r; err = _tuple[1];
  70663. /* } */ case 4:
  70664. b.closed = true;
  70665. return err;
  70666. /* */ $s = -1; case -1: } return; } } catch(err) { $err = err; $s = -1; return $ifaceNil; } finally { $callDeferred($deferred, $err); if($curGoroutine.asleep) { if ($f === undefined) { $f = { $blk: body.ptr.prototype.Close }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple = _tuple; $f.b = b; $f.err = err; $f.x = x; $f.$s = $s; $f.$deferred = $deferred; $f.$r = $r; return $f; } }
  70667. };
  70668. body.prototype.Close = function() { return this.$val.Close(); };
  70669. bodyLocked.ptr.prototype.Read = function(p) {
  70670. var $ptr, _r, _tmp, _tmp$1, _tuple, bl, err, n, p, $s, $r;
  70671. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tmp = $f._tmp; _tmp$1 = $f._tmp$1; _tuple = $f._tuple; bl = $f.bl; err = $f.err; n = $f.n; p = $f.p; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  70672. n = 0;
  70673. err = $ifaceNil;
  70674. bl = $clone(this, bodyLocked);
  70675. if (bl.b.closed) {
  70676. _tmp = 0; _tmp$1 = $pkg.ErrBodyReadAfterClose; n = _tmp; err = _tmp$1;
  70677. return [n, err];
  70678. }
  70679. _r = bl.b.readLocked(p); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  70680. _tuple = _r; n = _tuple[0]; err = _tuple[1];
  70681. return [n, err];
  70682. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: bodyLocked.ptr.prototype.Read }; } $f.$ptr = $ptr; $f._r = _r; $f._tmp = _tmp; $f._tmp$1 = _tmp$1; $f._tuple = _tuple; $f.bl = bl; $f.err = err; $f.n = n; $f.p = p; $f.$s = $s; $f.$r = $r; return $f;
  70683. };
  70684. bodyLocked.prototype.Read = function(p) { return this.$val.Read(p); };
  70685. parseContentLength = function(cl) {
  70686. var $ptr, _r, _tuple, cl, err, n, $s, $r;
  70687. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _tuple = $f._tuple; cl = $f.cl; err = $f.err; n = $f.n; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  70688. _r = strings.TrimSpace(cl); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  70689. cl = _r;
  70690. if (cl === "") {
  70691. return [new $Int64(-1, 4294967295), $ifaceNil];
  70692. }
  70693. _tuple = strconv.ParseInt(cl, 10, 64); n = _tuple[0]; err = _tuple[1];
  70694. if (!($interfaceIsEqual(err, $ifaceNil)) || (n.$high < 0 || (n.$high === 0 && n.$low < 0))) {
  70695. return [new $Int64(0, 0), new badStringError.ptr("bad Content-Length", cl)];
  70696. }
  70697. return [n, $ifaceNil];
  70698. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: parseContentLength }; } $f.$ptr = $ptr; $f._r = _r; $f._tuple = _tuple; $f.cl = cl; $f.err = err; $f.n = n; $f.$s = $s; $f.$r = $r; return $f;
  70699. };
  70700. ptrType$43.methods = [{prop: "RoundTrip", name: "RoundTrip", pkg: "", typ: $funcType([ptrType$1], [ptrType, $error], false)}, {prop: "CancelRequest", name: "CancelRequest", pkg: "", typ: $funcType([ptrType$1], [], false)}];
  70701. ptrType$44.methods = [{prop: "send", name: "send", pkg: "net/http", typ: $funcType([ptrType$1], [ptrType, $error], false)}, {prop: "Do", name: "Do", pkg: "", typ: $funcType([ptrType$1], [ptrType, $error], false)}, {prop: "transport", name: "transport", pkg: "net/http", typ: $funcType([], [RoundTripper], false)}, {prop: "Get", name: "Get", pkg: "", typ: $funcType([$String], [ptrType, $error], false)}, {prop: "doFollowingRedirects", name: "doFollowingRedirects", pkg: "net/http", typ: $funcType([ptrType$1, funcType$2], [ptrType, $error], false)}, {prop: "Post", name: "Post", pkg: "", typ: $funcType([$String, $String, io.Reader], [ptrType, $error], false)}, {prop: "PostForm", name: "PostForm", pkg: "", typ: $funcType([$String, url.Values], [ptrType, $error], false)}, {prop: "Head", name: "Head", pkg: "", typ: $funcType([$String], [ptrType, $error], false)}];
  70702. ptrType$45.methods = [{prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType$2], [$Int, $error], false)}, {prop: "Close", name: "Close", pkg: "", typ: $funcType([], [$error], false)}];
  70703. ptrType$7.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}];
  70704. Header.methods = [{prop: "Add", name: "Add", pkg: "", typ: $funcType([$String, $String], [], false)}, {prop: "Set", name: "Set", pkg: "", typ: $funcType([$String, $String], [], false)}, {prop: "Get", name: "Get", pkg: "", typ: $funcType([$String], [$String], false)}, {prop: "get", name: "get", pkg: "net/http", typ: $funcType([$String], [$String], false)}, {prop: "Del", name: "Del", pkg: "", typ: $funcType([$String], [], false)}, {prop: "Write", name: "Write", pkg: "", typ: $funcType([io.Writer], [$error], false)}, {prop: "clone", name: "clone", pkg: "net/http", typ: $funcType([], [Header], false)}, {prop: "sortedKeyValues", name: "sortedKeyValues", pkg: "net/http", typ: $funcType([mapType$1], [sliceType$8, ptrType$11], false)}, {prop: "WriteSubset", name: "WriteSubset", pkg: "", typ: $funcType([io.Writer, mapType$1], [$error], false)}];
  70705. stringWriter.methods = [{prop: "WriteString", name: "WriteString", pkg: "", typ: $funcType([$String], [$Int, $error], false)}];
  70706. ptrType$11.methods = [{prop: "Len", name: "Len", pkg: "", typ: $funcType([], [$Int], false)}, {prop: "Swap", name: "Swap", pkg: "", typ: $funcType([$Int, $Int], [], false)}, {prop: "Less", name: "Less", pkg: "", typ: $funcType([$Int, $Int], [$Bool], false)}];
  70707. ptrType$48.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}];
  70708. ptrType$49.methods = [{prop: "Error", name: "Error", pkg: "", typ: $funcType([], [$String], false)}];
  70709. ptrType$1.methods = [{prop: "ProtoAtLeast", name: "ProtoAtLeast", pkg: "", typ: $funcType([$Int, $Int], [$Bool], false)}, {prop: "UserAgent", name: "UserAgent", pkg: "", typ: $funcType([], [$String], false)}, {prop: "Cookies", name: "Cookies", pkg: "", typ: $funcType([], [sliceType$6], false)}, {prop: "Cookie", name: "Cookie", pkg: "", typ: $funcType([$String], [ptrType$7, $error], false)}, {prop: "AddCookie", name: "AddCookie", pkg: "", typ: $funcType([ptrType$7], [], false)}, {prop: "Referer", name: "Referer", pkg: "", typ: $funcType([], [$String], false)}, {prop: "MultipartReader", name: "MultipartReader", pkg: "", typ: $funcType([], [ptrType$12, $error], false)}, {prop: "multipartReader", name: "multipartReader", pkg: "net/http", typ: $funcType([], [ptrType$12, $error], false)}, {prop: "Write", name: "Write", pkg: "", typ: $funcType([io.Writer], [$error], false)}, {prop: "WriteProxy", name: "WriteProxy", pkg: "", typ: $funcType([io.Writer], [$error], false)}, {prop: "write", name: "write", pkg: "net/http", typ: $funcType([io.Writer, $Bool, Header], [$error], false)}, {prop: "BasicAuth", name: "BasicAuth", pkg: "", typ: $funcType([], [$String, $String, $Bool], false)}, {prop: "SetBasicAuth", name: "SetBasicAuth", pkg: "", typ: $funcType([$String, $String], [], false)}, {prop: "ParseForm", name: "ParseForm", pkg: "", typ: $funcType([], [$error], false)}, {prop: "ParseMultipartForm", name: "ParseMultipartForm", pkg: "", typ: $funcType([$Int64], [$error], false)}, {prop: "FormValue", name: "FormValue", pkg: "", typ: $funcType([$String], [$String], false)}, {prop: "PostFormValue", name: "PostFormValue", pkg: "", typ: $funcType([$String], [$String], false)}, {prop: "FormFile", name: "FormFile", pkg: "", typ: $funcType([$String], [multipart.File, ptrType$22, $error], false)}, {prop: "expectsContinue", name: "expectsContinue", pkg: "net/http", typ: $funcType([], [$Bool], false)}, {prop: "wantsHttp10KeepAlive", name: "wantsHttp10KeepAlive", pkg: "net/http", typ: $funcType([], [$Bool], false)}, {prop: "wantsClose", name: "wantsClose", pkg: "net/http", typ: $funcType([], [$Bool], false)}, {prop: "closeBody", name: "closeBody", pkg: "net/http", typ: $funcType([], [], false)}];
  70710. ptrType$21.methods = [{prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType$2], [$Int, $error], false)}, {prop: "Close", name: "Close", pkg: "", typ: $funcType([], [$error], false)}];
  70711. ptrType.methods = [{prop: "Cookies", name: "Cookies", pkg: "", typ: $funcType([], [sliceType$6], false)}, {prop: "Location", name: "Location", pkg: "", typ: $funcType([], [ptrType$5, $error], false)}, {prop: "ProtoAtLeast", name: "ProtoAtLeast", pkg: "", typ: $funcType([$Int, $Int], [$Bool], false)}, {prop: "Write", name: "Write", pkg: "", typ: $funcType([io.Writer], [$error], false)}];
  70712. ptrType$26.methods = [{prop: "hijacked", name: "hijacked", pkg: "net/http", typ: $funcType([], [$Bool], false)}, {prop: "hijack", name: "hijack", pkg: "net/http", typ: $funcType([], [net.Conn, ptrType$23, $error], false)}, {prop: "closeNotify", name: "closeNotify", pkg: "net/http", typ: $funcType([], [chanType$3], false)}, {prop: "noteClientGone", name: "noteClientGone", pkg: "net/http", typ: $funcType([], [], false)}, {prop: "readRequest", name: "readRequest", pkg: "net/http", typ: $funcType([], [ptrType$20, $error], false)}, {prop: "finalFlush", name: "finalFlush", pkg: "net/http", typ: $funcType([], [], false)}, {prop: "close", name: "close", pkg: "net/http", typ: $funcType([], [], false)}, {prop: "closeWriteAndWait", name: "closeWriteAndWait", pkg: "net/http", typ: $funcType([], [], false)}, {prop: "setState", name: "setState", pkg: "net/http", typ: $funcType([net.Conn, ConnState], [], false)}, {prop: "serve", name: "serve", pkg: "net/http", typ: $funcType([], [], false)}];
  70713. ptrType$51.methods = [{prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType$2], [$Int, $error], false)}];
  70714. ptrType$52.methods = [{prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType$2], [$Int, $error], false)}, {prop: "flush", name: "flush", pkg: "net/http", typ: $funcType([], [], false)}, {prop: "close", name: "close", pkg: "net/http", typ: $funcType([], [], false)}, {prop: "writeHeader", name: "writeHeader", pkg: "net/http", typ: $funcType([sliceType$2], [], false)}];
  70715. ptrType$20.methods = [{prop: "requestTooLarge", name: "requestTooLarge", pkg: "net/http", typ: $funcType([], [], false)}, {prop: "needsSniff", name: "needsSniff", pkg: "net/http", typ: $funcType([], [$Bool], false)}, {prop: "ReadFrom", name: "ReadFrom", pkg: "", typ: $funcType([io.Reader], [$Int64, $error], false)}, {prop: "Header", name: "Header", pkg: "", typ: $funcType([], [Header], false)}, {prop: "WriteHeader", name: "WriteHeader", pkg: "", typ: $funcType([$Int], [], false)}, {prop: "bodyAllowed", name: "bodyAllowed", pkg: "net/http", typ: $funcType([], [$Bool], false)}, {prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType$2], [$Int, $error], false)}, {prop: "WriteString", name: "WriteString", pkg: "", typ: $funcType([$String], [$Int, $error], false)}, {prop: "write", name: "write", pkg: "net/http", typ: $funcType([$Int, sliceType$2, $String], [$Int, $error], false)}, {prop: "finishRequest", name: "finishRequest", pkg: "net/http", typ: $funcType([], [], false)}, {prop: "Flush", name: "Flush", pkg: "", typ: $funcType([], [], false)}, {prop: "sendExpectationFailed", name: "sendExpectationFailed", pkg: "net/http", typ: $funcType([], [], false)}, {prop: "Hijack", name: "Hijack", pkg: "", typ: $funcType([], [net.Conn, ptrType$23, $error], false)}, {prop: "CloseNotify", name: "CloseNotify", pkg: "", typ: $funcType([], [chanType$3], false)}];
  70716. ptrType$29.methods = [{prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType$2], [$Int, $error], false)}, {prop: "Close", name: "Close", pkg: "", typ: $funcType([], [$error], false)}];
  70717. extraHeader.methods = [{prop: "Write", name: "Write", pkg: "", typ: $funcType([ptrType$14], [], false)}];
  70718. HandlerFunc.methods = [{prop: "ServeHTTP", name: "ServeHTTP", pkg: "", typ: $funcType([ResponseWriter, ptrType$1], [], false)}];
  70719. ptrType$53.methods = [{prop: "ServeHTTP", name: "ServeHTTP", pkg: "", typ: $funcType([ResponseWriter, ptrType$1], [], false)}];
  70720. ptrType$54.methods = [{prop: "match", name: "match", pkg: "net/http", typ: $funcType([$String], [Handler, $String], false)}, {prop: "Handler", name: "Handler", pkg: "", typ: $funcType([ptrType$1], [Handler, $String], false)}, {prop: "handler", name: "handler", pkg: "net/http", typ: $funcType([$String, $String], [Handler, $String], false)}, {prop: "ServeHTTP", name: "ServeHTTP", pkg: "", typ: $funcType([ResponseWriter, ptrType$1], [], false)}, {prop: "Handle", name: "Handle", pkg: "", typ: $funcType([$String, Handler], [], false)}, {prop: "HandleFunc", name: "HandleFunc", pkg: "", typ: $funcType([$String, funcType$4], [], false)}];
  70721. ptrType$50.methods = [{prop: "newConn", name: "newConn", pkg: "net/http", typ: $funcType([net.Conn], [ptrType$26, $error], false)}, {prop: "maxHeaderBytes", name: "maxHeaderBytes", pkg: "net/http", typ: $funcType([], [$Int], false)}, {prop: "initialLimitedReaderSize", name: "initialLimitedReaderSize", pkg: "net/http", typ: $funcType([], [$Int64], false)}, {prop: "ListenAndServe", name: "ListenAndServe", pkg: "", typ: $funcType([], [$error], false)}, {prop: "Serve", name: "Serve", pkg: "", typ: $funcType([net.Listener], [$error], false)}, {prop: "doKeepAlives", name: "doKeepAlives", pkg: "net/http", typ: $funcType([], [$Bool], false)}, {prop: "SetKeepAlivesEnabled", name: "SetKeepAlivesEnabled", pkg: "", typ: $funcType([$Bool], [], false)}, {prop: "logf", name: "logf", pkg: "net/http", typ: $funcType([$String, sliceType$1], [], true)}, {prop: "ListenAndServeTLS", name: "ListenAndServeTLS", pkg: "", typ: $funcType([$String, $String], [$error], false)}];
  70722. ConnState.methods = [{prop: "String", name: "String", pkg: "", typ: $funcType([], [$String], false)}];
  70723. serverHandler.methods = [{prop: "ServeHTTP", name: "ServeHTTP", pkg: "", typ: $funcType([ResponseWriter, ptrType$1], [], false)}];
  70724. tcpKeepAliveListener.methods = [{prop: "Accept", name: "Accept", pkg: "", typ: $funcType([], [net.Conn, $error], false)}];
  70725. globalOptionsHandler.methods = [{prop: "ServeHTTP", name: "ServeHTTP", pkg: "", typ: $funcType([ResponseWriter, ptrType$1], [], false)}];
  70726. eofReaderWithWriteTo.methods = [{prop: "WriteTo", name: "WriteTo", pkg: "", typ: $funcType([io.Writer], [$Int64, $error], false)}, {prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType$2], [$Int, $error], false)}];
  70727. initNPNRequest.methods = [{prop: "ServeHTTP", name: "ServeHTTP", pkg: "", typ: $funcType([ResponseWriter, ptrType$1], [], false)}];
  70728. checkConnErrorWriter.methods = [{prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType$2], [$Int, $error], false)}];
  70729. ptrType$58.methods = [{prop: "match", name: "match", pkg: "net/http", typ: $funcType([sliceType$2, $Int], [$String], false)}];
  70730. ptrType$59.methods = [{prop: "match", name: "match", pkg: "net/http", typ: $funcType([sliceType$2, $Int], [$String], false)}];
  70731. htmlSig.methods = [{prop: "match", name: "match", pkg: "net/http", typ: $funcType([sliceType$2, $Int], [$String], false)}];
  70732. textSig.methods = [{prop: "match", name: "match", pkg: "net/http", typ: $funcType([sliceType$2, $Int], [$String], false)}];
  70733. ptrType$60.methods = [{prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType$2], [$Int, $error], false)}];
  70734. ptrType$37.methods = [{prop: "shouldSendContentLength", name: "shouldSendContentLength", pkg: "net/http", typ: $funcType([], [$Bool], false)}, {prop: "WriteHeader", name: "WriteHeader", pkg: "", typ: $funcType([io.Writer], [$error], false)}, {prop: "WriteBody", name: "WriteBody", pkg: "", typ: $funcType([io.Writer], [$error], false)}];
  70735. ptrType$61.methods = [{prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType$2], [$Int, $error], false)}, {prop: "readLocked", name: "readLocked", pkg: "net/http", typ: $funcType([sliceType$2], [$Int, $error], false)}, {prop: "readTrailer", name: "readTrailer", pkg: "net/http", typ: $funcType([], [$error], false)}, {prop: "Close", name: "Close", pkg: "", typ: $funcType([], [$error], false)}];
  70736. bodyLocked.methods = [{prop: "Read", name: "Read", pkg: "", typ: $funcType([sliceType$2], [$Int, $error], false)}];
  70737. XHRTransport.init([{prop: "inflight", name: "inflight", pkg: "net/http", typ: mapType, tag: ""}]);
  70738. Client.init([{prop: "Transport", name: "Transport", pkg: "", typ: RoundTripper, tag: ""}, {prop: "CheckRedirect", name: "CheckRedirect", pkg: "", typ: funcType$3, tag: ""}, {prop: "Jar", name: "Jar", pkg: "", typ: CookieJar, tag: ""}, {prop: "Timeout", name: "Timeout", pkg: "", typ: time.Duration, tag: ""}]);
  70739. RoundTripper.init([{prop: "RoundTrip", name: "RoundTrip", pkg: "", typ: $funcType([ptrType$1], [ptrType, $error], false)}]);
  70740. cancelTimerBody.init([{prop: "t", name: "t", pkg: "net/http", typ: ptrType$6, tag: ""}, {prop: "rc", name: "rc", pkg: "net/http", typ: io.ReadCloser, tag: ""}]);
  70741. Cookie.init([{prop: "Name", name: "Name", pkg: "", typ: $String, tag: ""}, {prop: "Value", name: "Value", pkg: "", typ: $String, tag: ""}, {prop: "Path", name: "Path", pkg: "", typ: $String, tag: ""}, {prop: "Domain", name: "Domain", pkg: "", typ: $String, tag: ""}, {prop: "Expires", name: "Expires", pkg: "", typ: time.Time, tag: ""}, {prop: "RawExpires", name: "RawExpires", pkg: "", typ: $String, tag: ""}, {prop: "MaxAge", name: "MaxAge", pkg: "", typ: $Int, tag: ""}, {prop: "Secure", name: "Secure", pkg: "", typ: $Bool, tag: ""}, {prop: "HttpOnly", name: "HttpOnly", pkg: "", typ: $Bool, tag: ""}, {prop: "Raw", name: "Raw", pkg: "", typ: $String, tag: ""}, {prop: "Unparsed", name: "Unparsed", pkg: "", typ: sliceType, tag: ""}]);
  70742. Header.init($String, sliceType);
  70743. writeStringer.init([{prop: "WriteString", name: "WriteString", pkg: "", typ: $funcType([$String], [$Int, $error], false)}]);
  70744. stringWriter.init([{prop: "w", name: "w", pkg: "net/http", typ: io.Writer, tag: ""}]);
  70745. keyValues.init([{prop: "key", name: "key", pkg: "net/http", typ: $String, tag: ""}, {prop: "values", name: "values", pkg: "net/http", typ: sliceType, tag: ""}]);
  70746. headerSorter.init([{prop: "kvs", name: "kvs", pkg: "net/http", typ: sliceType$8, tag: ""}]);
  70747. CookieJar.init([{prop: "Cookies", name: "Cookies", pkg: "", typ: $funcType([ptrType$5], [sliceType$6], false)}, {prop: "SetCookies", name: "SetCookies", pkg: "", typ: $funcType([ptrType$5, sliceType$6], [], false)}]);
  70748. ProtocolError.init([{prop: "ErrorString", name: "ErrorString", pkg: "", typ: $String, tag: ""}]);
  70749. badStringError.init([{prop: "what", name: "what", pkg: "net/http", typ: $String, tag: ""}, {prop: "str", name: "str", pkg: "net/http", typ: $String, tag: ""}]);
  70750. Request.init([{prop: "Method", name: "Method", pkg: "", typ: $String, tag: ""}, {prop: "URL", name: "URL", pkg: "", typ: ptrType$5, tag: ""}, {prop: "Proto", name: "Proto", pkg: "", typ: $String, tag: ""}, {prop: "ProtoMajor", name: "ProtoMajor", pkg: "", typ: $Int, tag: ""}, {prop: "ProtoMinor", name: "ProtoMinor", pkg: "", typ: $Int, tag: ""}, {prop: "Header", name: "Header", pkg: "", typ: Header, tag: ""}, {prop: "Body", name: "Body", pkg: "", typ: io.ReadCloser, tag: ""}, {prop: "ContentLength", name: "ContentLength", pkg: "", typ: $Int64, tag: ""}, {prop: "TransferEncoding", name: "TransferEncoding", pkg: "", typ: sliceType, tag: ""}, {prop: "Close", name: "Close", pkg: "", typ: $Bool, tag: ""}, {prop: "Host", name: "Host", pkg: "", typ: $String, tag: ""}, {prop: "Form", name: "Form", pkg: "", typ: url.Values, tag: ""}, {prop: "PostForm", name: "PostForm", pkg: "", typ: url.Values, tag: ""}, {prop: "MultipartForm", name: "MultipartForm", pkg: "", typ: ptrType$13, tag: ""}, {prop: "Trailer", name: "Trailer", pkg: "", typ: Header, tag: ""}, {prop: "RemoteAddr", name: "RemoteAddr", pkg: "", typ: $String, tag: ""}, {prop: "RequestURI", name: "RequestURI", pkg: "", typ: $String, tag: ""}, {prop: "TLS", name: "TLS", pkg: "", typ: ptrType$2, tag: ""}]);
  70751. maxBytesReader.init([{prop: "w", name: "w", pkg: "net/http", typ: ResponseWriter, tag: ""}, {prop: "r", name: "r", pkg: "net/http", typ: io.ReadCloser, tag: ""}, {prop: "n", name: "n", pkg: "net/http", typ: $Int64, tag: ""}, {prop: "stopped", name: "stopped", pkg: "net/http", typ: $Bool, tag: ""}]);
  70752. Response.init([{prop: "Status", name: "Status", pkg: "", typ: $String, tag: ""}, {prop: "StatusCode", name: "StatusCode", pkg: "", typ: $Int, tag: ""}, {prop: "Proto", name: "Proto", pkg: "", typ: $String, tag: ""}, {prop: "ProtoMajor", name: "ProtoMajor", pkg: "", typ: $Int, tag: ""}, {prop: "ProtoMinor", name: "ProtoMinor", pkg: "", typ: $Int, tag: ""}, {prop: "Header", name: "Header", pkg: "", typ: Header, tag: ""}, {prop: "Body", name: "Body", pkg: "", typ: io.ReadCloser, tag: ""}, {prop: "ContentLength", name: "ContentLength", pkg: "", typ: $Int64, tag: ""}, {prop: "TransferEncoding", name: "TransferEncoding", pkg: "", typ: sliceType, tag: ""}, {prop: "Close", name: "Close", pkg: "", typ: $Bool, tag: ""}, {prop: "Trailer", name: "Trailer", pkg: "", typ: Header, tag: ""}, {prop: "Request", name: "Request", pkg: "", typ: ptrType$1, tag: ""}, {prop: "TLS", name: "TLS", pkg: "", typ: ptrType$2, tag: ""}]);
  70753. Handler.init([{prop: "ServeHTTP", name: "ServeHTTP", pkg: "", typ: $funcType([ResponseWriter, ptrType$1], [], false)}]);
  70754. ResponseWriter.init([{prop: "Header", name: "Header", pkg: "", typ: $funcType([], [Header], false)}, {prop: "Write", name: "Write", pkg: "", typ: $funcType([sliceType$2], [$Int, $error], false)}, {prop: "WriteHeader", name: "WriteHeader", pkg: "", typ: $funcType([$Int], [], false)}]);
  70755. conn.init([{prop: "remoteAddr", name: "remoteAddr", pkg: "net/http", typ: $String, tag: ""}, {prop: "server", name: "server", pkg: "net/http", typ: ptrType$50, tag: ""}, {prop: "rwc", name: "rwc", pkg: "net/http", typ: net.Conn, tag: ""}, {prop: "w", name: "w", pkg: "net/http", typ: io.Writer, tag: ""}, {prop: "werr", name: "werr", pkg: "net/http", typ: $error, tag: ""}, {prop: "sr", name: "sr", pkg: "net/http", typ: liveSwitchReader, tag: ""}, {prop: "lr", name: "lr", pkg: "net/http", typ: ptrType$25, tag: ""}, {prop: "buf", name: "buf", pkg: "net/http", typ: ptrType$23, tag: ""}, {prop: "tlsState", name: "tlsState", pkg: "net/http", typ: ptrType$2, tag: ""}, {prop: "mu", name: "mu", pkg: "net/http", typ: sync.Mutex, tag: ""}, {prop: "clientGone", name: "clientGone", pkg: "net/http", typ: $Bool, tag: ""}, {prop: "closeNotifyc", name: "closeNotifyc", pkg: "net/http", typ: chanType$2, tag: ""}, {prop: "hijackedv", name: "hijackedv", pkg: "net/http", typ: $Bool, tag: ""}]);
  70756. switchWriter.init([{prop: "Writer", name: "", pkg: "", typ: io.Writer, tag: ""}]);
  70757. liveSwitchReader.init([{prop: "Mutex", name: "", pkg: "", typ: sync.Mutex, tag: ""}, {prop: "r", name: "r", pkg: "net/http", typ: io.Reader, tag: ""}]);
  70758. chunkWriter.init([{prop: "res", name: "res", pkg: "net/http", typ: ptrType$20, tag: ""}, {prop: "header", name: "header", pkg: "net/http", typ: Header, tag: ""}, {prop: "wroteHeader", name: "wroteHeader", pkg: "net/http", typ: $Bool, tag: ""}, {prop: "chunking", name: "chunking", pkg: "net/http", typ: $Bool, tag: ""}]);
  70759. response.init([{prop: "conn", name: "conn", pkg: "net/http", typ: ptrType$26, tag: ""}, {prop: "req", name: "req", pkg: "net/http", typ: ptrType$1, tag: ""}, {prop: "wroteHeader", name: "wroteHeader", pkg: "net/http", typ: $Bool, tag: ""}, {prop: "wroteContinue", name: "wroteContinue", pkg: "net/http", typ: $Bool, tag: ""}, {prop: "w", name: "w", pkg: "net/http", typ: ptrType$14, tag: ""}, {prop: "cw", name: "cw", pkg: "net/http", typ: chunkWriter, tag: ""}, {prop: "sw", name: "sw", pkg: "net/http", typ: ptrType$28, tag: ""}, {prop: "handlerHeader", name: "handlerHeader", pkg: "net/http", typ: Header, tag: ""}, {prop: "calledHeader", name: "calledHeader", pkg: "net/http", typ: $Bool, tag: ""}, {prop: "written", name: "written", pkg: "net/http", typ: $Int64, tag: ""}, {prop: "contentLength", name: "contentLength", pkg: "net/http", typ: $Int64, tag: ""}, {prop: "status", name: "status", pkg: "net/http", typ: $Int, tag: ""}, {prop: "closeAfterReply", name: "closeAfterReply", pkg: "net/http", typ: $Bool, tag: ""}, {prop: "requestBodyLimitHit", name: "requestBodyLimitHit", pkg: "net/http", typ: $Bool, tag: ""}, {prop: "handlerDone", name: "handlerDone", pkg: "net/http", typ: $Bool, tag: ""}, {prop: "dateBuf", name: "dateBuf", pkg: "net/http", typ: arrayType$2, tag: ""}, {prop: "clenBuf", name: "clenBuf", pkg: "net/http", typ: arrayType$3, tag: ""}]);
  70760. writerOnly.init([{prop: "Writer", name: "", pkg: "", typ: io.Writer, tag: ""}]);
  70761. expectContinueReader.init([{prop: "resp", name: "resp", pkg: "net/http", typ: ptrType$20, tag: ""}, {prop: "readCloser", name: "readCloser", pkg: "net/http", typ: io.ReadCloser, tag: ""}, {prop: "closed", name: "closed", pkg: "net/http", typ: $Bool, tag: ""}]);
  70762. extraHeader.init([{prop: "contentType", name: "contentType", pkg: "net/http", typ: $String, tag: ""}, {prop: "connection", name: "connection", pkg: "net/http", typ: $String, tag: ""}, {prop: "transferEncoding", name: "transferEncoding", pkg: "net/http", typ: $String, tag: ""}, {prop: "date", name: "date", pkg: "net/http", typ: sliceType$2, tag: ""}, {prop: "contentLength", name: "contentLength", pkg: "net/http", typ: sliceType$2, tag: ""}]);
  70763. closeWriter.init([{prop: "CloseWrite", name: "CloseWrite", pkg: "", typ: $funcType([], [$error], false)}]);
  70764. HandlerFunc.init([ResponseWriter, ptrType$1], [], false);
  70765. redirectHandler.init([{prop: "url", name: "url", pkg: "net/http", typ: $String, tag: ""}, {prop: "code", name: "code", pkg: "net/http", typ: $Int, tag: ""}]);
  70766. ServeMux.init([{prop: "mu", name: "mu", pkg: "net/http", typ: sync.RWMutex, tag: ""}, {prop: "m", name: "m", pkg: "net/http", typ: mapType$2, tag: ""}, {prop: "hosts", name: "hosts", pkg: "net/http", typ: $Bool, tag: ""}]);
  70767. muxEntry.init([{prop: "explicit", name: "explicit", pkg: "net/http", typ: $Bool, tag: ""}, {prop: "h", name: "h", pkg: "net/http", typ: Handler, tag: ""}, {prop: "pattern", name: "pattern", pkg: "net/http", typ: $String, tag: ""}]);
  70768. Server.init([{prop: "Addr", name: "Addr", pkg: "", typ: $String, tag: ""}, {prop: "Handler", name: "Handler", pkg: "", typ: Handler, tag: ""}, {prop: "ReadTimeout", name: "ReadTimeout", pkg: "", typ: time.Duration, tag: ""}, {prop: "WriteTimeout", name: "WriteTimeout", pkg: "", typ: time.Duration, tag: ""}, {prop: "MaxHeaderBytes", name: "MaxHeaderBytes", pkg: "", typ: $Int, tag: ""}, {prop: "TLSConfig", name: "TLSConfig", pkg: "", typ: ptrType$31, tag: ""}, {prop: "TLSNextProto", name: "TLSNextProto", pkg: "", typ: mapType$3, tag: ""}, {prop: "ConnState", name: "ConnState", pkg: "", typ: funcType$6, tag: ""}, {prop: "ErrorLog", name: "ErrorLog", pkg: "", typ: ptrType$32, tag: ""}, {prop: "disableKeepAlives", name: "disableKeepAlives", pkg: "net/http", typ: $Int32, tag: ""}]);
  70769. serverHandler.init([{prop: "srv", name: "srv", pkg: "net/http", typ: ptrType$50, tag: ""}]);
  70770. tcpKeepAliveListener.init([{prop: "TCPListener", name: "", pkg: "", typ: ptrType$33, tag: ""}]);
  70771. globalOptionsHandler.init([]);
  70772. eofReaderWithWriteTo.init([]);
  70773. initNPNRequest.init([{prop: "c", name: "c", pkg: "net/http", typ: ptrType$30, tag: ""}, {prop: "h", name: "h", pkg: "net/http", typ: serverHandler, tag: ""}]);
  70774. checkConnErrorWriter.init([{prop: "c", name: "c", pkg: "net/http", typ: ptrType$26, tag: ""}]);
  70775. sniffSig.init([{prop: "match", name: "match", pkg: "net/http", typ: $funcType([sliceType$2, $Int], [$String], false)}]);
  70776. exactSig.init([{prop: "sig", name: "sig", pkg: "net/http", typ: sliceType$2, tag: ""}, {prop: "ct", name: "ct", pkg: "net/http", typ: $String, tag: ""}]);
  70777. maskedSig.init([{prop: "mask", name: "mask", pkg: "net/http", typ: sliceType$2, tag: ""}, {prop: "pat", name: "pat", pkg: "net/http", typ: sliceType$2, tag: ""}, {prop: "skipWS", name: "skipWS", pkg: "net/http", typ: $Bool, tag: ""}, {prop: "ct", name: "ct", pkg: "net/http", typ: $String, tag: ""}]);
  70778. htmlSig.init($Uint8);
  70779. errorReader.init([{prop: "err", name: "err", pkg: "net/http", typ: $error, tag: ""}]);
  70780. transferWriter.init([{prop: "Method", name: "Method", pkg: "", typ: $String, tag: ""}, {prop: "Body", name: "Body", pkg: "", typ: io.Reader, tag: ""}, {prop: "BodyCloser", name: "BodyCloser", pkg: "", typ: io.Closer, tag: ""}, {prop: "ResponseToHEAD", name: "ResponseToHEAD", pkg: "", typ: $Bool, tag: ""}, {prop: "ContentLength", name: "ContentLength", pkg: "", typ: $Int64, tag: ""}, {prop: "Close", name: "Close", pkg: "", typ: $Bool, tag: ""}, {prop: "TransferEncoding", name: "TransferEncoding", pkg: "", typ: sliceType, tag: ""}, {prop: "Trailer", name: "Trailer", pkg: "", typ: Header, tag: ""}]);
  70781. transferReader.init([{prop: "Header", name: "Header", pkg: "", typ: Header, tag: ""}, {prop: "StatusCode", name: "StatusCode", pkg: "", typ: $Int, tag: ""}, {prop: "RequestMethod", name: "RequestMethod", pkg: "", typ: $String, tag: ""}, {prop: "ProtoMajor", name: "ProtoMajor", pkg: "", typ: $Int, tag: ""}, {prop: "ProtoMinor", name: "ProtoMinor", pkg: "", typ: $Int, tag: ""}, {prop: "Body", name: "Body", pkg: "", typ: io.ReadCloser, tag: ""}, {prop: "ContentLength", name: "ContentLength", pkg: "", typ: $Int64, tag: ""}, {prop: "TransferEncoding", name: "TransferEncoding", pkg: "", typ: sliceType, tag: ""}, {prop: "Close", name: "Close", pkg: "", typ: $Bool, tag: ""}, {prop: "Trailer", name: "Trailer", pkg: "", typ: Header, tag: ""}]);
  70782. body.init([{prop: "src", name: "src", pkg: "net/http", typ: io.Reader, tag: ""}, {prop: "hdr", name: "hdr", pkg: "net/http", typ: $emptyInterface, tag: ""}, {prop: "r", name: "r", pkg: "net/http", typ: ptrType$19, tag: ""}, {prop: "closing", name: "closing", pkg: "net/http", typ: $Bool, tag: ""}, {prop: "mu", name: "mu", pkg: "net/http", typ: sync.Mutex, tag: ""}, {prop: "closed", name: "closed", pkg: "net/http", typ: $Bool, tag: ""}]);
  70783. bodyLocked.init([{prop: "b", name: "b", pkg: "net/http", typ: ptrType$61, tag: ""}]);
  70784. canceler.init([{prop: "CancelRequest", name: "CancelRequest", pkg: "", typ: $funcType([ptrType$1], [], false)}]);
  70785. $init = function() {
  70786. $pkg.$init = function() {};
  70787. /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  70788. $r = bufio.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  70789. $r = bytes.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  70790. $r = gzip.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  70791. $r = tls.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  70792. $r = base64.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  70793. $r = binary.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  70794. $r = errors.$init(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  70795. $r = fmt.$init(); /* */ $s = 8; case 8: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  70796. $r = js.$init(); /* */ $s = 9; case 9: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  70797. $r = io.$init(); /* */ $s = 10; case 10: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  70798. $r = ioutil.$init(); /* */ $s = 11; case 11: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  70799. $r = log.$init(); /* */ $s = 12; case 12: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  70800. $r = mime.$init(); /* */ $s = 13; case 13: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  70801. $r = multipart.$init(); /* */ $s = 14; case 14: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  70802. $r = net.$init(); /* */ $s = 15; case 15: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  70803. $r = internal.$init(); /* */ $s = 16; case 16: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  70804. $r = textproto.$init(); /* */ $s = 17; case 17: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  70805. $r = url.$init(); /* */ $s = 18; case 18: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  70806. $r = os.$init(); /* */ $s = 19; case 19: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  70807. $r = path.$init(); /* */ $s = 20; case 20: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  70808. $r = filepath.$init(); /* */ $s = 21; case 21: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  70809. $r = runtime.$init(); /* */ $s = 22; case 22: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  70810. $r = sort.$init(); /* */ $s = 23; case 23: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  70811. $r = strconv.$init(); /* */ $s = 24; case 24: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  70812. $r = strings.$init(); /* */ $s = 25; case 25: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  70813. $r = sync.$init(); /* */ $s = 26; case 26: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  70814. $r = atomic.$init(); /* */ $s = 27; case 27: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  70815. $r = time.$init(); /* */ $s = 28; case 28: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  70816. textprotoReaderPool = new sync.Pool.ptr();
  70817. bufioReaderPool = new sync.Pool.ptr();
  70818. bufioWriter2kPool = new sync.Pool.ptr();
  70819. bufioWriter4kPool = new sync.Pool.ptr();
  70820. statusMu = new sync.RWMutex.ptr();
  70821. $pkg.DefaultTransport = new XHRTransport.ptr(false);
  70822. $pkg.DefaultClient = new Client.ptr($ifaceNil, $throwNilPointerError, $ifaceNil, new time.Duration(0, 0));
  70823. cookieNameSanitizer = strings.NewReplacer(new sliceType(["\n", "-", "\r", "-"]));
  70824. errSeeker = errors.New("seeker can't seek");
  70825. headerNewlineToSpace = strings.NewReplacer(new sliceType(["\n", " ", "\r", " "]));
  70826. headerSorterPool = new sync.Pool.ptr(0, 0, sliceType$1.nil, (function() {
  70827. var $ptr;
  70828. return new headerSorter.ptr();
  70829. }));
  70830. isTokenTable = $toNativeArray($kindBool, [false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true, false, true, true, true, true, true, false, false, true, true, false, true, true, false, true, true, true, true, true, true, true, true, true, true, false, false, false, false, false, false, false, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, false, false, false, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, false, true, false, true]);
  70831. $pkg.ErrMissingFile = errors.New("http: no such file");
  70832. $pkg.ErrUnexpectedTrailer = new ProtocolError.ptr("trailer header without chunked transfer encoding");
  70833. $pkg.ErrNotMultipart = new ProtocolError.ptr("request Content-Type isn't multipart/form-data");
  70834. $pkg.ErrMissingBoundary = new ProtocolError.ptr("no multipart boundary param in Content-Type");
  70835. reqWriteExcludeHeader = (_map = new $Map(), _key = "Host", _map[_key] = { k: _key, v: true }, _key = "User-Agent", _map[_key] = { k: _key, v: true }, _key = "Content-Length", _map[_key] = { k: _key, v: true }, _key = "Transfer-Encoding", _map[_key] = { k: _key, v: true }, _key = "Trailer", _map[_key] = { k: _key, v: true }, _map);
  70836. $pkg.ErrNoCookie = errors.New("http: named cookie not present");
  70837. multipartByReader = new multipart.Form.ptr(new $Map(), new $Map());
  70838. respExcludeHeader = (_map$1 = new $Map(), _key$1 = "Content-Length", _map$1[_key$1] = { k: _key$1, v: true }, _key$1 = "Transfer-Encoding", _map$1[_key$1] = { k: _key$1, v: true }, _key$1 = "Trailer", _map$1[_key$1] = { k: _key$1, v: true }, _map$1);
  70839. $pkg.ErrNoLocation = errors.New("http: no Location header in response");
  70840. $pkg.ErrWriteAfterFlush = errors.New("Conn.Write called after Flush");
  70841. $pkg.ErrBodyNotAllowed = errors.New("http: request method or response status code does not allow body");
  70842. $pkg.ErrHijacked = errors.New("Conn has been hijacked");
  70843. $pkg.ErrContentLength = errors.New("Conn.Write wrote more than the declared Content-Length");
  70844. crlf = new sliceType$2($stringToBytes("\r\n"));
  70845. colonSpace = new sliceType$2($stringToBytes(": "));
  70846. errTooLarge = errors.New("http: request too large");
  70847. extraHeaderKeys = new sliceType$3([new sliceType$2($stringToBytes("Content-Type")), new sliceType$2($stringToBytes("Connection")), new sliceType$2($stringToBytes("Transfer-Encoding"))]);
  70848. headerContentLength = new sliceType$2($stringToBytes("Content-Length: "));
  70849. headerDate = new sliceType$2($stringToBytes("Date: "));
  70850. statusLines = new $Map();
  70851. htmlReplacer = strings.NewReplacer(new sliceType(["&", "&amp;", "<", "&lt;", ">", "&gt;", "\"", "&#34;", "'", "&#39;"]));
  70852. $pkg.DefaultServeMux = NewServeMux();
  70853. stateName = (_map$2 = new $Map(), _key$2 = 0, _map$2[_key$2] = { k: _key$2, v: "new" }, _key$2 = 1, _map$2[_key$2] = { k: _key$2, v: "active" }, _key$2 = 2, _map$2[_key$2] = { k: _key$2, v: "idle" }, _key$2 = 3, _map$2[_key$2] = { k: _key$2, v: "hijacked" }, _key$2 = 4, _map$2[_key$2] = { k: _key$2, v: "closed" }, _map$2);
  70854. $pkg.ErrHandlerTimeout = errors.New("http: Handler timeout");
  70855. eofReader = new structType.ptr(new eofReaderWithWriteTo.ptr(), ioutil.NopCloser($ifaceNil));
  70856. uniqNameNext = new $Map();
  70857. sniffSignatures = new sliceType$4([new htmlSig($stringToBytes("<!DOCTYPE HTML")), new htmlSig($stringToBytes("<HTML")), new htmlSig($stringToBytes("<HEAD")), new htmlSig($stringToBytes("<SCRIPT")), new htmlSig($stringToBytes("<IFRAME")), new htmlSig($stringToBytes("<H1")), new htmlSig($stringToBytes("<DIV")), new htmlSig($stringToBytes("<FONT")), new htmlSig($stringToBytes("<TABLE")), new htmlSig($stringToBytes("<A")), new htmlSig($stringToBytes("<STYLE")), new htmlSig($stringToBytes("<TITLE")), new htmlSig($stringToBytes("<B")), new htmlSig($stringToBytes("<BODY")), new htmlSig($stringToBytes("<BR")), new htmlSig($stringToBytes("<P")), new htmlSig($stringToBytes("<!--")), new maskedSig.ptr(new sliceType$2($stringToBytes("\xFF\xFF\xFF\xFF\xFF")), new sliceType$2($stringToBytes("<?xml")), true, "text/xml; charset=utf-8"), new exactSig.ptr(new sliceType$2($stringToBytes("%PDF-")), "application/pdf"), new exactSig.ptr(new sliceType$2($stringToBytes("%!PS-Adobe-")), "application/postscript"), new maskedSig.ptr(new sliceType$2($stringToBytes("\xFF\xFF\x00\x00")), new sliceType$2($stringToBytes("\xFE\xFF\x00\x00")), false, "text/plain; charset=utf-16be"), new maskedSig.ptr(new sliceType$2($stringToBytes("\xFF\xFF\x00\x00")), new sliceType$2($stringToBytes("\xFF\xFE\x00\x00")), false, "text/plain; charset=utf-16le"), new maskedSig.ptr(new sliceType$2($stringToBytes("\xFF\xFF\xFF\x00")), new sliceType$2($stringToBytes("\xEF\xBB\xBF\x00")), false, "text/plain; charset=utf-8"), new exactSig.ptr(new sliceType$2($stringToBytes("GIF87a")), "image/gif"), new exactSig.ptr(new sliceType$2($stringToBytes("GIF89a")), "image/gif"), new exactSig.ptr(new sliceType$2($stringToBytes("\x89PNG\r\n\x1A\n")), "image/png"), new exactSig.ptr(new sliceType$2($stringToBytes("\xFF\xD8\xFF")), "image/jpeg"), new exactSig.ptr(new sliceType$2($stringToBytes("BM")), "image/bmp"), new maskedSig.ptr(new sliceType$2($stringToBytes("\xFF\xFF\xFF\xFF\x00\x00\x00\x00\xFF\xFF\xFF\xFF\xFF\xFF")), new sliceType$2($stringToBytes("RIFF\x00\x00\x00\x00WEBPVP")), false, "image/webp"), new exactSig.ptr(new sliceType$2($stringToBytes("\x00\x00\x01\x00")), "image/vnd.microsoft.icon"), new exactSig.ptr(new sliceType$2($stringToBytes("OggS\x00")), "application/ogg"), new maskedSig.ptr(new sliceType$2($stringToBytes("\xFF\xFF\xFF\xFF\x00\x00\x00\x00\xFF\xFF\xFF\xFF")), new sliceType$2($stringToBytes("RIFF\x00\x00\x00\x00WAVE")), false, "audio/wave"), new exactSig.ptr(new sliceType$2($stringToBytes("\x1AE\xDF\xA3")), "video/webm"), new exactSig.ptr(new sliceType$2($stringToBytes("Rar \x1A\x07\x00")), "application/x-rar-compressed"), new exactSig.ptr(new sliceType$2($stringToBytes("PK\x03\x04")), "application/zip"), new exactSig.ptr(new sliceType$2($stringToBytes("\x1F\x8B\b")), "application/x-gzip"), new textSig(0)]);
  70858. statusText = (_map$3 = new $Map(), _key$3 = 100, _map$3[_key$3] = { k: _key$3, v: "Continue" }, _key$3 = 101, _map$3[_key$3] = { k: _key$3, v: "Switching Protocols" }, _key$3 = 200, _map$3[_key$3] = { k: _key$3, v: "OK" }, _key$3 = 201, _map$3[_key$3] = { k: _key$3, v: "Created" }, _key$3 = 202, _map$3[_key$3] = { k: _key$3, v: "Accepted" }, _key$3 = 203, _map$3[_key$3] = { k: _key$3, v: "Non-Authoritative Information" }, _key$3 = 204, _map$3[_key$3] = { k: _key$3, v: "No Content" }, _key$3 = 205, _map$3[_key$3] = { k: _key$3, v: "Reset Content" }, _key$3 = 206, _map$3[_key$3] = { k: _key$3, v: "Partial Content" }, _key$3 = 300, _map$3[_key$3] = { k: _key$3, v: "Multiple Choices" }, _key$3 = 301, _map$3[_key$3] = { k: _key$3, v: "Moved Permanently" }, _key$3 = 302, _map$3[_key$3] = { k: _key$3, v: "Found" }, _key$3 = 303, _map$3[_key$3] = { k: _key$3, v: "See Other" }, _key$3 = 304, _map$3[_key$3] = { k: _key$3, v: "Not Modified" }, _key$3 = 305, _map$3[_key$3] = { k: _key$3, v: "Use Proxy" }, _key$3 = 307, _map$3[_key$3] = { k: _key$3, v: "Temporary Redirect" }, _key$3 = 400, _map$3[_key$3] = { k: _key$3, v: "Bad Request" }, _key$3 = 401, _map$3[_key$3] = { k: _key$3, v: "Unauthorized" }, _key$3 = 402, _map$3[_key$3] = { k: _key$3, v: "Payment Required" }, _key$3 = 403, _map$3[_key$3] = { k: _key$3, v: "Forbidden" }, _key$3 = 404, _map$3[_key$3] = { k: _key$3, v: "Not Found" }, _key$3 = 405, _map$3[_key$3] = { k: _key$3, v: "Method Not Allowed" }, _key$3 = 406, _map$3[_key$3] = { k: _key$3, v: "Not Acceptable" }, _key$3 = 407, _map$3[_key$3] = { k: _key$3, v: "Proxy Authentication Required" }, _key$3 = 408, _map$3[_key$3] = { k: _key$3, v: "Request Timeout" }, _key$3 = 409, _map$3[_key$3] = { k: _key$3, v: "Conflict" }, _key$3 = 410, _map$3[_key$3] = { k: _key$3, v: "Gone" }, _key$3 = 411, _map$3[_key$3] = { k: _key$3, v: "Length Required" }, _key$3 = 412, _map$3[_key$3] = { k: _key$3, v: "Precondition Failed" }, _key$3 = 413, _map$3[_key$3] = { k: _key$3, v: "Request Entity Too Large" }, _key$3 = 414, _map$3[_key$3] = { k: _key$3, v: "Request URI Too Long" }, _key$3 = 415, _map$3[_key$3] = { k: _key$3, v: "Unsupported Media Type" }, _key$3 = 416, _map$3[_key$3] = { k: _key$3, v: "Requested Range Not Satisfiable" }, _key$3 = 417, _map$3[_key$3] = { k: _key$3, v: "Expectation Failed" }, _key$3 = 418, _map$3[_key$3] = { k: _key$3, v: "I'm a teapot" }, _key$3 = 500, _map$3[_key$3] = { k: _key$3, v: "Internal Server Error" }, _key$3 = 501, _map$3[_key$3] = { k: _key$3, v: "Not Implemented" }, _key$3 = 502, _map$3[_key$3] = { k: _key$3, v: "Bad Gateway" }, _key$3 = 503, _map$3[_key$3] = { k: _key$3, v: "Service Unavailable" }, _key$3 = 504, _map$3[_key$3] = { k: _key$3, v: "Gateway Timeout" }, _key$3 = 505, _map$3[_key$3] = { k: _key$3, v: "HTTP Version Not Supported" }, _key$3 = 428, _map$3[_key$3] = { k: _key$3, v: "Precondition Required" }, _key$3 = 429, _map$3[_key$3] = { k: _key$3, v: "Too Many Requests" }, _key$3 = 431, _map$3[_key$3] = { k: _key$3, v: "Request Header Fields Too Large" }, _key$3 = 511, _map$3[_key$3] = { k: _key$3, v: "Network Authentication Required" }, _map$3);
  70859. suppressedHeaders304 = new sliceType(["Content-Type", "Content-Length", "Transfer-Encoding"]);
  70860. suppressedHeadersNoBody = new sliceType(["Content-Length", "Transfer-Encoding"]);
  70861. $pkg.ErrBodyReadAfterClose = errors.New("http: invalid Read on closed Body");
  70862. singleCRLF = new sliceType$2($stringToBytes("\r\n"));
  70863. doubleCRLF = new sliceType$2($stringToBytes("\r\n\r\n"));
  70864. errTrailerEOF = errors.New("http: unexpected EOF reading trailer");
  70865. /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
  70866. };
  70867. $pkg.$init = $init;
  70868. return $pkg;
  70869. })();
  70870. $packages["sim3/portable"] = (function() {
  70871. var $pkg = {}, $init, ioutil, http, os, filepath, assert, httpData, sliceType, sliceType$1, ptrType, init;
  70872. ioutil = $packages["io/ioutil"];
  70873. http = $packages["net/http"];
  70874. os = $packages["os"];
  70875. filepath = $packages["path/filepath"];
  70876. assert = $packages["ypk/assert"];
  70877. httpData = $pkg.httpData = $newType(0, $kindStruct, "portable.httpData", "httpData", "sim3/portable", function() {
  70878. this.$val = this;
  70879. if (arguments.length === 0) {
  70880. return;
  70881. }
  70882. });
  70883. sliceType = $sliceType($Uint8);
  70884. sliceType$1 = $sliceType($emptyInterface);
  70885. ptrType = $ptrType(httpData);
  70886. httpData.ptr.prototype.Get = function(n) {
  70887. var $ptr, _r, _r$1, _tuple, _tuple$1, d, data, err, n, resp, $s, $r;
  70888. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _r$1 = $f._r$1; _tuple = $f._tuple; _tuple$1 = $f._tuple$1; d = $f.d; data = $f.data; err = $f.err; n = $f.n; resp = $f.resp; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  70889. data = sliceType.nil;
  70890. err = $ifaceNil;
  70891. d = this;
  70892. _r = http.Get("../netlist/" + n); /* */ $s = 1; case 1: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  70893. _tuple = _r; resp = _tuple[0]; err = _tuple[1];
  70894. $r = assert.For($interfaceIsEqual(err, $ifaceNil) && (resp.StatusCode === 200), 40, new sliceType$1([])); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  70895. _r$1 = ioutil.ReadAll(resp.Body); /* */ $s = 3; case 3: if($c) { $c = false; _r$1 = _r$1.$blk(); } if (_r$1 && _r$1.$blk !== undefined) { break s; }
  70896. _tuple$1 = _r$1; data = _tuple$1[0]; err = _tuple$1[1];
  70897. return [data, err];
  70898. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: httpData.ptr.prototype.Get }; } $f.$ptr = $ptr; $f._r = _r; $f._r$1 = _r$1; $f._tuple = _tuple; $f._tuple$1 = _tuple$1; $f.d = d; $f.data = data; $f.err = err; $f.n = n; $f.resp = resp; $f.$s = $s; $f.$r = $r; return $f;
  70899. };
  70900. httpData.prototype.Get = function(n) { return this.$val.Get(n); };
  70901. init = function() {
  70902. var $ptr;
  70903. $pkg.DataSource = new httpData.ptr();
  70904. };
  70905. ptrType.methods = [{prop: "Get", name: "Get", pkg: "", typ: $funcType([$String], [sliceType, $error], false)}];
  70906. httpData.init([]);
  70907. $init = function() {
  70908. $pkg.$init = function() {};
  70909. /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  70910. $r = ioutil.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  70911. $r = http.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  70912. $r = os.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  70913. $r = filepath.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  70914. $r = assert.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  70915. $pkg.DataSource = $ifaceNil;
  70916. init();
  70917. /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
  70918. };
  70919. $pkg.$init = $init;
  70920. return $pkg;
  70921. })();
  70922. $packages["main"] = (function() {
  70923. var $pkg = {}, $init, log, bus, extra, tool, portable, sync, ptrType, chanType, ptrType$1, sliceType, wg, busChan, init, busHandler, load, handle, main;
  70924. log = $packages["log"];
  70925. bus = $packages["sim3/bus"];
  70926. extra = $packages["sim3/ncl/extra"];
  70927. tool = $packages["sim3/ncl/tool"];
  70928. portable = $packages["sim3/portable"];
  70929. sync = $packages["sync"];
  70930. ptrType = $ptrType(bus.Msg);
  70931. chanType = $chanType(ptrType, false, false);
  70932. ptrType$1 = $ptrType($Uint32);
  70933. sliceType = $sliceType($emptyInterface);
  70934. init = function() {
  70935. var $ptr;
  70936. tool.Src = portable.DataSource;
  70937. };
  70938. busHandler = function(m) {
  70939. var $ptr, m, $s, $r;
  70940. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; m = $f.m; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  70941. $r = $send(busChan, m); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  70942. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: busHandler }; } $f.$ptr = $ptr; $f.m = m; $f.$s = $s; $f.$r = $r; return $f;
  70943. };
  70944. load = function() {
  70945. var $ptr, t, $s, $r;
  70946. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; t = $f.t; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  70947. t = new tool.Solder.ptr(false, false, $ifaceNil, false, $ifaceNil);
  70948. $r = t.F("counter.yml"); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  70949. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: load }; } $f.$ptr = $ptr; $f.t = t; $f.$s = $s; $f.$r = $r; return $f;
  70950. };
  70951. handle = function(m) {
  70952. var $ptr, _ref, m, $s, $r;
  70953. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _ref = $f._ref; m = $f.m; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  70954. _ref = m.Typ;
  70955. /* */ if (_ref === "init") { $s = 1; continue; }
  70956. /* */ $s = 2; continue;
  70957. /* if (_ref === "init") { */ case 1:
  70958. $r = load(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  70959. /* } */ case 2:
  70960. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: handle }; } $f.$ptr = $ptr; $f._ref = _ref; $f.m = m; $f.$s = $s; $f.$r = $r; return $f;
  70961. };
  70962. main = function() {
  70963. var $ptr, $s, $r;
  70964. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  70965. $r = log.Println(new sliceType([new $String("sim3 started")])); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  70966. bus.Init(busHandler);
  70967. busChan = new chanType(0);
  70968. $r = wg.Add(1); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  70969. $go((function $b(wg$1, c) {
  70970. var $ptr, _r, _selection, c, m, wg$1, $s, $r;
  70971. /* */ $s = 0; var $f, $c = false; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $ptr = $f.$ptr; _r = $f._r; _selection = $f._selection; c = $f.c; m = $f.m; wg$1 = $f.wg$1; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  70972. $r = bus.Process(new bus.Msg.ptr("init")); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  70973. /* while (true) { */ case 2:
  70974. _r = $select([[c]]); /* */ $s = 4; case 4: if($c) { $c = false; _r = _r.$blk(); } if (_r && _r.$blk !== undefined) { break s; }
  70975. _selection = _r;
  70976. /* */ if (_selection[0] === 0) { $s = 5; continue; }
  70977. /* */ $s = 6; continue;
  70978. /* if (_selection[0] === 0) { */ case 5:
  70979. m = _selection[1][0];
  70980. $r = handle(m); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  70981. /* } */ case 6:
  70982. /* } */ $s = 2; continue; case 3:
  70983. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: $b }; } $f.$ptr = $ptr; $f._r = _r; $f._selection = _selection; $f.c = c; $f.m = m; $f.wg$1 = wg$1; $f.$s = $s; $f.$r = $r; return $f;
  70984. }), [wg, busChan]);
  70985. $r = wg.Wait(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  70986. $r = log.Println(new sliceType([new $String("sim3 closed")])); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  70987. /* */ $s = -1; case -1: } return; } if ($f === undefined) { $f = { $blk: main }; } $f.$ptr = $ptr; $f.$s = $s; $f.$r = $r; return $f;
  70988. };
  70989. $init = function() {
  70990. $pkg.$init = function() {};
  70991. /* */ var $f, $c = false, $s = 0, $r; if (this !== undefined && this.$blk !== undefined) { $f = this; $c = true; $s = $f.$s; $r = $f.$r; } s: while (true) { switch ($s) { case 0:
  70992. $r = log.$init(); /* */ $s = 1; case 1: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  70993. $r = bus.$init(); /* */ $s = 2; case 2: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  70994. $r = extra.$init(); /* */ $s = 3; case 3: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  70995. $r = tool.$init(); /* */ $s = 4; case 4: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  70996. $r = portable.$init(); /* */ $s = 5; case 5: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  70997. $r = sync.$init(); /* */ $s = 6; case 6: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  70998. busChan = chanType.nil;
  70999. wg = new sync.WaitGroup.ptr(new sync.Mutex.ptr(), 0, 0, ptrType$1.nil);
  71000. init();
  71001. $r = main(); /* */ $s = 7; case 7: if($c) { $c = false; $r = $r.$blk(); } if ($r && $r.$blk !== undefined) { break s; }
  71002. /* */ } return; } if ($f === undefined) { $f = { $blk: $init }; } $f.$s = $s; $f.$r = $r; return $f;
  71003. };
  71004. $pkg.$init = $init;
  71005. return $pkg;
  71006. })();
  71007. $synthesizeMethods();
  71008. $packages["runtime"].$init();
  71009. $go($packages["main"].$init, [], true);
  71010. $flushConsole();
  71011. }).call(this);
  71012. //# sourceMappingURL=sim3.js.map