.pnp.cjs 754 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970397139723973397439753976397739783979398039813982398339843985398639873988398939903991399239933994399539963997399839994000400140024003400440054006400740084009401040114012401340144015401640174018401940204021402240234024402540264027402840294030403140324033403440354036403740384039404040414042404340444045404640474048404940504051405240534054405540564057405840594060406140624063406440654066406740684069407040714072407340744075407640774078407940804081408240834084408540864087408840894090409140924093409440954096409740984099410041014102410341044105410641074108410941104111411241134114411541164117411841194120412141224123412441254126412741284129413041314132413341344135413641374138413941404141414241434144414541464147414841494150415141524153415441554156415741584159416041614162416341644165416641674168416941704171417241734174417541764177417841794180418141824183418441854186418741884189419041914192419341944195419641974198419942004201420242034204420542064207420842094210421142124213421442154216421742184219422042214222422342244225422642274228422942304231423242334234423542364237423842394240424142424243424442454246424742484249425042514252425342544255425642574258425942604261426242634264426542664267426842694270427142724273427442754276427742784279428042814282428342844285428642874288428942904291429242934294429542964297429842994300430143024303430443054306430743084309431043114312431343144315431643174318431943204321432243234324432543264327432843294330433143324333433443354336433743384339434043414342434343444345434643474348434943504351435243534354435543564357435843594360436143624363436443654366436743684369437043714372437343744375437643774378437943804381438243834384438543864387438843894390439143924393439443954396439743984399440044014402440344044405440644074408440944104411441244134414441544164417441844194420442144224423442444254426442744284429443044314432443344344435443644374438443944404441444244434444444544464447444844494450445144524453445444554456445744584459446044614462446344644465446644674468446944704471447244734474447544764477447844794480448144824483448444854486448744884489449044914492449344944495449644974498449945004501450245034504450545064507450845094510451145124513451445154516451745184519452045214522452345244525452645274528452945304531453245334534453545364537453845394540454145424543454445454546454745484549455045514552455345544555455645574558455945604561456245634564456545664567456845694570457145724573457445754576457745784579458045814582458345844585458645874588458945904591459245934594459545964597459845994600460146024603460446054606460746084609461046114612461346144615461646174618461946204621462246234624462546264627462846294630463146324633463446354636463746384639464046414642464346444645464646474648464946504651465246534654465546564657465846594660466146624663466446654666466746684669467046714672467346744675467646774678467946804681468246834684468546864687468846894690469146924693469446954696469746984699470047014702470347044705470647074708470947104711471247134714471547164717471847194720472147224723472447254726472747284729473047314732473347344735473647374738473947404741474247434744474547464747474847494750475147524753475447554756475747584759476047614762476347644765476647674768476947704771477247734774477547764777477847794780478147824783478447854786478747884789479047914792479347944795479647974798479948004801480248034804480548064807480848094810481148124813481448154816481748184819482048214822482348244825482648274828482948304831483248334834483548364837483848394840484148424843484448454846484748484849485048514852485348544855485648574858485948604861486248634864486548664867486848694870487148724873487448754876487748784879488048814882488348844885488648874888488948904891489248934894489548964897489848994900490149024903490449054906490749084909491049114912491349144915491649174918491949204921492249234924492549264927492849294930493149324933493449354936493749384939494049414942494349444945494649474948494949504951495249534954495549564957495849594960496149624963496449654966496749684969497049714972497349744975497649774978497949804981498249834984498549864987498849894990499149924993499449954996499749984999500050015002500350045005500650075008500950105011501250135014501550165017501850195020502150225023502450255026502750285029503050315032503350345035503650375038503950405041504250435044504550465047504850495050505150525053505450555056505750585059506050615062506350645065506650675068506950705071507250735074507550765077507850795080508150825083508450855086508750885089509050915092509350945095509650975098509951005101510251035104510551065107510851095110511151125113511451155116511751185119512051215122512351245125512651275128512951305131513251335134513551365137513851395140514151425143514451455146514751485149515051515152515351545155515651575158515951605161516251635164516551665167516851695170517151725173517451755176517751785179518051815182518351845185518651875188518951905191519251935194519551965197519851995200520152025203520452055206520752085209521052115212521352145215521652175218521952205221522252235224522552265227522852295230523152325233523452355236523752385239524052415242524352445245524652475248524952505251525252535254525552565257525852595260526152625263526452655266526752685269527052715272527352745275527652775278527952805281528252835284528552865287528852895290529152925293529452955296529752985299530053015302530353045305530653075308530953105311531253135314531553165317531853195320532153225323532453255326532753285329533053315332533353345335533653375338533953405341534253435344534553465347534853495350535153525353535453555356535753585359536053615362536353645365536653675368536953705371537253735374537553765377537853795380538153825383538453855386538753885389539053915392539353945395539653975398539954005401540254035404540554065407540854095410541154125413541454155416541754185419542054215422542354245425542654275428542954305431543254335434543554365437543854395440544154425443544454455446544754485449545054515452545354545455545654575458545954605461546254635464546554665467546854695470547154725473547454755476547754785479548054815482548354845485548654875488548954905491549254935494549554965497549854995500550155025503550455055506550755085509551055115512551355145515551655175518551955205521552255235524552555265527552855295530553155325533553455355536553755385539554055415542554355445545554655475548554955505551555255535554555555565557555855595560556155625563556455655566556755685569557055715572557355745575557655775578557955805581558255835584558555865587558855895590559155925593559455955596559755985599560056015602560356045605560656075608560956105611561256135614561556165617561856195620562156225623562456255626562756285629563056315632563356345635563656375638563956405641564256435644564556465647564856495650565156525653565456555656565756585659566056615662566356645665566656675668566956705671567256735674567556765677567856795680568156825683568456855686568756885689569056915692569356945695569656975698569957005701570257035704570557065707570857095710571157125713571457155716571757185719572057215722572357245725572657275728572957305731573257335734573557365737573857395740574157425743574457455746574757485749575057515752575357545755575657575758575957605761576257635764576557665767576857695770577157725773577457755776577757785779578057815782578357845785578657875788578957905791579257935794579557965797579857995800580158025803580458055806580758085809581058115812581358145815581658175818581958205821582258235824582558265827582858295830583158325833583458355836583758385839584058415842584358445845584658475848584958505851585258535854585558565857585858595860586158625863586458655866586758685869587058715872587358745875587658775878587958805881588258835884588558865887588858895890589158925893589458955896589758985899590059015902590359045905590659075908590959105911591259135914591559165917591859195920592159225923592459255926592759285929593059315932593359345935593659375938593959405941594259435944594559465947594859495950595159525953595459555956595759585959596059615962596359645965596659675968596959705971597259735974597559765977597859795980598159825983598459855986598759885989599059915992599359945995599659975998599960006001600260036004600560066007600860096010601160126013601460156016601760186019602060216022602360246025602660276028602960306031603260336034603560366037603860396040604160426043604460456046604760486049605060516052605360546055605660576058605960606061606260636064606560666067606860696070607160726073607460756076607760786079608060816082608360846085608660876088608960906091609260936094609560966097609860996100610161026103610461056106610761086109611061116112611361146115611661176118611961206121612261236124612561266127612861296130613161326133613461356136613761386139614061416142614361446145614661476148614961506151615261536154615561566157615861596160616161626163616461656166616761686169617061716172617361746175617661776178617961806181618261836184618561866187618861896190619161926193619461956196619761986199620062016202620362046205620662076208620962106211621262136214621562166217621862196220622162226223622462256226622762286229623062316232623362346235623662376238623962406241624262436244624562466247624862496250625162526253625462556256625762586259626062616262626362646265626662676268626962706271627262736274627562766277627862796280628162826283628462856286628762886289629062916292629362946295629662976298629963006301630263036304630563066307630863096310631163126313631463156316631763186319632063216322632363246325632663276328632963306331633263336334633563366337633863396340634163426343634463456346634763486349635063516352635363546355635663576358635963606361636263636364636563666367636863696370637163726373637463756376637763786379638063816382638363846385638663876388638963906391639263936394639563966397639863996400640164026403640464056406640764086409641064116412641364146415641664176418641964206421642264236424642564266427642864296430643164326433643464356436643764386439644064416442644364446445644664476448644964506451645264536454645564566457645864596460646164626463646464656466646764686469647064716472647364746475647664776478647964806481648264836484648564866487648864896490649164926493649464956496649764986499650065016502650365046505650665076508650965106511651265136514651565166517651865196520652165226523652465256526652765286529653065316532653365346535653665376538653965406541654265436544654565466547654865496550655165526553655465556556655765586559656065616562656365646565656665676568656965706571657265736574657565766577657865796580658165826583658465856586658765886589659065916592659365946595659665976598659966006601660266036604660566066607660866096610661166126613661466156616661766186619662066216622662366246625662666276628662966306631663266336634663566366637663866396640664166426643664466456646664766486649665066516652665366546655665666576658665966606661666266636664666566666667666866696670667166726673667466756676667766786679668066816682668366846685668666876688668966906691669266936694669566966697669866996700670167026703670467056706670767086709671067116712671367146715671667176718671967206721672267236724672567266727672867296730673167326733673467356736673767386739674067416742674367446745674667476748674967506751675267536754675567566757675867596760676167626763676467656766676767686769677067716772677367746775677667776778677967806781678267836784678567866787678867896790679167926793679467956796679767986799680068016802680368046805680668076808680968106811681268136814681568166817681868196820682168226823682468256826682768286829683068316832683368346835683668376838683968406841684268436844684568466847684868496850685168526853685468556856685768586859686068616862686368646865686668676868686968706871687268736874687568766877687868796880688168826883688468856886688768886889689068916892689368946895689668976898689969006901690269036904690569066907690869096910691169126913691469156916691769186919692069216922692369246925692669276928692969306931693269336934693569366937693869396940694169426943694469456946694769486949695069516952695369546955695669576958695969606961696269636964696569666967696869696970697169726973697469756976697769786979698069816982698369846985698669876988698969906991699269936994699569966997699869997000700170027003700470057006700770087009701070117012701370147015701670177018701970207021702270237024702570267027702870297030703170327033703470357036703770387039704070417042704370447045704670477048704970507051705270537054705570567057705870597060706170627063706470657066706770687069707070717072707370747075707670777078707970807081708270837084708570867087708870897090709170927093709470957096709770987099710071017102710371047105710671077108710971107111711271137114711571167117711871197120712171227123712471257126712771287129713071317132713371347135713671377138713971407141714271437144714571467147714871497150715171527153715471557156715771587159716071617162716371647165716671677168716971707171717271737174717571767177717871797180718171827183718471857186718771887189719071917192719371947195719671977198719972007201720272037204720572067207720872097210721172127213721472157216721772187219722072217222722372247225722672277228722972307231723272337234723572367237723872397240724172427243724472457246724772487249725072517252725372547255725672577258725972607261726272637264726572667267726872697270727172727273727472757276727772787279728072817282728372847285728672877288728972907291729272937294729572967297729872997300730173027303730473057306730773087309731073117312731373147315731673177318731973207321732273237324732573267327732873297330733173327333733473357336733773387339734073417342734373447345734673477348734973507351735273537354735573567357735873597360736173627363736473657366736773687369737073717372737373747375737673777378737973807381738273837384738573867387738873897390739173927393739473957396739773987399740074017402740374047405740674077408740974107411741274137414741574167417741874197420742174227423742474257426742774287429743074317432743374347435743674377438743974407441744274437444744574467447744874497450745174527453745474557456745774587459746074617462746374647465746674677468746974707471747274737474747574767477747874797480748174827483748474857486748774887489749074917492749374947495749674977498749975007501750275037504750575067507750875097510751175127513751475157516751775187519752075217522752375247525752675277528752975307531753275337534753575367537753875397540754175427543754475457546754775487549755075517552755375547555755675577558755975607561756275637564756575667567756875697570757175727573757475757576757775787579758075817582758375847585758675877588758975907591759275937594759575967597759875997600760176027603760476057606760776087609761076117612761376147615761676177618761976207621762276237624762576267627762876297630763176327633763476357636763776387639764076417642764376447645764676477648764976507651765276537654765576567657765876597660766176627663766476657666766776687669767076717672767376747675767676777678767976807681768276837684768576867687768876897690769176927693769476957696769776987699770077017702770377047705770677077708770977107711771277137714771577167717771877197720772177227723772477257726772777287729773077317732773377347735773677377738773977407741774277437744774577467747774877497750775177527753775477557756775777587759776077617762776377647765776677677768776977707771777277737774777577767777777877797780778177827783778477857786778777887789779077917792779377947795779677977798779978007801780278037804780578067807780878097810781178127813781478157816781778187819782078217822782378247825782678277828782978307831783278337834783578367837783878397840784178427843784478457846784778487849785078517852785378547855785678577858785978607861786278637864786578667867786878697870787178727873787478757876787778787879788078817882788378847885788678877888788978907891789278937894789578967897789878997900790179027903790479057906790779087909791079117912791379147915791679177918791979207921792279237924792579267927792879297930793179327933793479357936793779387939794079417942794379447945794679477948794979507951795279537954795579567957795879597960796179627963796479657966796779687969797079717972797379747975797679777978797979807981798279837984798579867987798879897990799179927993799479957996799779987999800080018002800380048005800680078008800980108011801280138014801580168017801880198020802180228023802480258026802780288029803080318032803380348035803680378038803980408041804280438044804580468047804880498050805180528053805480558056805780588059806080618062806380648065806680678068806980708071807280738074807580768077807880798080808180828083808480858086808780888089809080918092809380948095809680978098809981008101810281038104810581068107810881098110811181128113811481158116811781188119812081218122812381248125812681278128812981308131813281338134813581368137813881398140814181428143814481458146814781488149815081518152815381548155815681578158815981608161816281638164816581668167816881698170817181728173817481758176817781788179818081818182818381848185818681878188818981908191819281938194819581968197819881998200820182028203820482058206820782088209821082118212821382148215821682178218821982208221822282238224822582268227822882298230823182328233823482358236823782388239824082418242824382448245824682478248824982508251825282538254825582568257825882598260826182628263826482658266826782688269827082718272827382748275827682778278827982808281828282838284828582868287828882898290829182928293829482958296829782988299830083018302830383048305830683078308830983108311831283138314831583168317831883198320832183228323832483258326832783288329833083318332833383348335833683378338833983408341834283438344834583468347834883498350835183528353835483558356835783588359836083618362836383648365836683678368836983708371837283738374837583768377837883798380838183828383838483858386838783888389839083918392839383948395839683978398839984008401840284038404840584068407840884098410841184128413841484158416841784188419842084218422842384248425842684278428842984308431843284338434843584368437843884398440844184428443844484458446844784488449845084518452845384548455845684578458845984608461846284638464846584668467846884698470847184728473847484758476847784788479848084818482848384848485848684878488848984908491849284938494849584968497849884998500850185028503850485058506850785088509851085118512851385148515851685178518851985208521852285238524852585268527852885298530853185328533853485358536853785388539854085418542854385448545854685478548854985508551855285538554855585568557855885598560856185628563856485658566856785688569857085718572857385748575857685778578857985808581858285838584858585868587858885898590859185928593859485958596859785988599860086018602860386048605860686078608860986108611861286138614861586168617861886198620862186228623862486258626862786288629863086318632863386348635863686378638863986408641864286438644864586468647864886498650865186528653865486558656865786588659866086618662866386648665866686678668866986708671867286738674867586768677867886798680868186828683868486858686868786888689869086918692869386948695869686978698869987008701870287038704870587068707870887098710871187128713871487158716871787188719872087218722872387248725872687278728872987308731873287338734873587368737873887398740874187428743874487458746874787488749875087518752875387548755875687578758875987608761876287638764876587668767876887698770877187728773877487758776877787788779878087818782878387848785878687878788878987908791879287938794879587968797879887998800880188028803880488058806880788088809881088118812881388148815881688178818881988208821882288238824882588268827882888298830883188328833883488358836883788388839884088418842884388448845884688478848884988508851885288538854885588568857885888598860886188628863886488658866886788688869887088718872887388748875887688778878887988808881888288838884888588868887888888898890889188928893889488958896889788988899890089018902890389048905890689078908890989108911891289138914891589168917891889198920892189228923892489258926892789288929893089318932893389348935893689378938893989408941894289438944894589468947894889498950895189528953895489558956895789588959896089618962896389648965896689678968896989708971897289738974897589768977897889798980898189828983898489858986898789888989899089918992899389948995899689978998899990009001900290039004900590069007900890099010901190129013901490159016901790189019902090219022902390249025902690279028902990309031903290339034903590369037903890399040904190429043904490459046904790489049905090519052905390549055905690579058905990609061906290639064906590669067906890699070907190729073907490759076907790789079908090819082908390849085908690879088908990909091909290939094909590969097909890999100910191029103910491059106910791089109911091119112911391149115911691179118911991209121912291239124912591269127912891299130913191329133913491359136913791389139914091419142914391449145914691479148914991509151915291539154915591569157915891599160916191629163916491659166916791689169917091719172917391749175917691779178917991809181918291839184918591869187918891899190919191929193919491959196919791989199920092019202920392049205920692079208920992109211921292139214921592169217921892199220922192229223922492259226922792289229923092319232923392349235923692379238923992409241924292439244924592469247924892499250925192529253925492559256925792589259926092619262926392649265926692679268926992709271927292739274927592769277927892799280928192829283928492859286928792889289929092919292929392949295929692979298929993009301930293039304930593069307930893099310931193129313931493159316931793189319932093219322932393249325932693279328932993309331933293339334933593369337933893399340934193429343934493459346934793489349935093519352935393549355935693579358935993609361936293639364936593669367936893699370937193729373937493759376937793789379938093819382938393849385938693879388938993909391939293939394939593969397939893999400940194029403940494059406940794089409941094119412941394149415941694179418941994209421942294239424942594269427942894299430943194329433943494359436943794389439944094419442944394449445944694479448944994509451945294539454945594569457945894599460946194629463946494659466946794689469947094719472947394749475947694779478947994809481948294839484948594869487948894899490949194929493949494959496949794989499950095019502950395049505950695079508950995109511951295139514951595169517951895199520952195229523952495259526952795289529953095319532953395349535953695379538953995409541954295439544954595469547954895499550955195529553955495559556955795589559956095619562956395649565956695679568956995709571957295739574957595769577957895799580958195829583958495859586958795889589959095919592959395949595959695979598959996009601960296039604960596069607960896099610961196129613961496159616961796189619962096219622962396249625962696279628962996309631963296339634963596369637963896399640964196429643964496459646964796489649965096519652965396549655965696579658965996609661966296639664966596669667966896699670967196729673967496759676967796789679968096819682968396849685968696879688968996909691969296939694969596969697969896999700970197029703970497059706970797089709971097119712971397149715971697179718971997209721972297239724972597269727972897299730973197329733973497359736973797389739974097419742974397449745974697479748974997509751975297539754975597569757975897599760976197629763976497659766976797689769977097719772977397749775977697779778977997809781978297839784978597869787978897899790979197929793979497959796979797989799980098019802980398049805980698079808980998109811981298139814981598169817981898199820982198229823982498259826982798289829983098319832983398349835983698379838983998409841984298439844984598469847984898499850985198529853985498559856985798589859986098619862986398649865986698679868986998709871987298739874987598769877987898799880988198829883988498859886988798889889989098919892989398949895989698979898989999009901990299039904990599069907990899099910991199129913991499159916991799189919992099219922992399249925992699279928992999309931993299339934993599369937993899399940994199429943994499459946994799489949995099519952995399549955995699579958995999609961996299639964996599669967996899699970997199729973997499759976997799789979998099819982998399849985998699879988998999909991999299939994999599969997999899991000010001100021000310004100051000610007100081000910010100111001210013100141001510016100171001810019100201002110022100231002410025100261002710028100291003010031100321003310034100351003610037100381003910040100411004210043100441004510046100471004810049100501005110052100531005410055100561005710058100591006010061100621006310064100651006610067100681006910070100711007210073100741007510076100771007810079100801008110082100831008410085100861008710088100891009010091100921009310094100951009610097100981009910100101011010210103101041010510106101071010810109101101011110112101131011410115101161011710118101191012010121101221012310124101251012610127101281012910130101311013210133101341013510136101371013810139101401014110142101431014410145101461014710148101491015010151101521015310154101551015610157101581015910160101611016210163101641016510166101671016810169101701017110172101731017410175101761017710178101791018010181101821018310184101851018610187101881018910190101911019210193101941019510196101971019810199102001020110202102031020410205102061020710208102091021010211102121021310214102151021610217102181021910220102211022210223102241022510226102271022810229102301023110232102331023410235102361023710238102391024010241102421024310244102451024610247102481024910250102511025210253102541025510256102571025810259102601026110262102631026410265102661026710268102691027010271102721027310274102751027610277102781027910280102811028210283102841028510286102871028810289102901029110292102931029410295102961029710298102991030010301103021030310304103051030610307103081030910310103111031210313103141031510316103171031810319103201032110322103231032410325103261032710328103291033010331103321033310334103351033610337103381033910340103411034210343103441034510346103471034810349103501035110352103531035410355103561035710358103591036010361103621036310364103651036610367103681036910370103711037210373103741037510376103771037810379103801038110382103831038410385103861038710388103891039010391103921039310394103951039610397103981039910400104011040210403104041040510406104071040810409104101041110412104131041410415104161041710418104191042010421104221042310424104251042610427104281042910430104311043210433104341043510436104371043810439104401044110442104431044410445104461044710448104491045010451104521045310454104551045610457104581045910460104611046210463104641046510466104671046810469104701047110472104731047410475104761047710478104791048010481104821048310484104851048610487104881048910490104911049210493104941049510496104971049810499105001050110502105031050410505105061050710508105091051010511105121051310514105151051610517105181051910520105211052210523105241052510526105271052810529105301053110532105331053410535105361053710538105391054010541105421054310544105451054610547105481054910550105511055210553105541055510556105571055810559105601056110562105631056410565105661056710568105691057010571105721057310574105751057610577105781057910580105811058210583105841058510586105871058810589105901059110592105931059410595105961059710598105991060010601106021060310604106051060610607106081060910610106111061210613106141061510616106171061810619106201062110622106231062410625106261062710628106291063010631106321063310634106351063610637106381063910640106411064210643106441064510646106471064810649106501065110652106531065410655106561065710658106591066010661106621066310664106651066610667106681066910670106711067210673106741067510676106771067810679106801068110682106831068410685106861068710688106891069010691106921069310694106951069610697106981069910700107011070210703107041070510706107071070810709107101071110712107131071410715107161071710718107191072010721107221072310724107251072610727107281072910730107311073210733107341073510736107371073810739107401074110742107431074410745107461074710748107491075010751107521075310754107551075610757107581075910760107611076210763107641076510766107671076810769107701077110772107731077410775107761077710778107791078010781107821078310784107851078610787107881078910790107911079210793107941079510796107971079810799108001080110802108031080410805108061080710808108091081010811108121081310814108151081610817108181081910820108211082210823108241082510826108271082810829108301083110832108331083410835108361083710838108391084010841108421084310844108451084610847108481084910850108511085210853108541085510856108571085810859108601086110862108631086410865108661086710868108691087010871108721087310874108751087610877108781087910880108811088210883108841088510886108871088810889108901089110892108931089410895108961089710898108991090010901109021090310904109051090610907109081090910910109111091210913109141091510916109171091810919109201092110922109231092410925109261092710928109291093010931109321093310934109351093610937109381093910940109411094210943109441094510946109471094810949109501095110952109531095410955109561095710958109591096010961109621096310964109651096610967109681096910970109711097210973109741097510976109771097810979109801098110982109831098410985109861098710988109891099010991109921099310994109951099610997109981099911000110011100211003110041100511006110071100811009110101101111012110131101411015110161101711018110191102011021110221102311024110251102611027110281102911030110311103211033110341103511036110371103811039110401104111042110431104411045110461104711048110491105011051110521105311054110551105611057110581105911060110611106211063110641106511066110671106811069110701107111072110731107411075110761107711078110791108011081110821108311084110851108611087110881108911090110911109211093110941109511096110971109811099111001110111102111031110411105111061110711108111091111011111111121111311114111151111611117111181111911120111211112211123111241112511126111271112811129111301113111132111331113411135111361113711138111391114011141111421114311144111451114611147111481114911150111511115211153111541115511156111571115811159111601116111162111631116411165111661116711168111691117011171111721117311174111751117611177111781117911180111811118211183111841118511186111871118811189111901119111192111931119411195111961119711198111991120011201112021120311204112051120611207112081120911210112111121211213112141121511216112171121811219112201122111222112231122411225112261122711228112291123011231112321123311234112351123611237112381123911240112411124211243112441124511246112471124811249112501125111252112531125411255112561125711258112591126011261112621126311264112651126611267112681126911270112711127211273112741127511276112771127811279112801128111282112831128411285112861128711288112891129011291112921129311294112951129611297112981129911300113011130211303113041130511306113071130811309113101131111312113131131411315113161131711318113191132011321113221132311324113251132611327113281132911330113311133211333113341133511336113371133811339113401134111342113431134411345113461134711348113491135011351113521135311354113551135611357113581135911360113611136211363113641136511366113671136811369113701137111372113731137411375113761137711378113791138011381113821138311384113851138611387113881138911390113911139211393113941139511396113971139811399114001140111402114031140411405114061140711408114091141011411114121141311414114151141611417114181141911420114211142211423114241142511426114271142811429114301143111432114331143411435114361143711438114391144011441114421144311444114451144611447114481144911450114511145211453114541145511456114571145811459114601146111462114631146411465114661146711468114691147011471114721147311474114751147611477114781147911480114811148211483114841148511486114871148811489114901149111492114931149411495114961149711498114991150011501115021150311504115051150611507115081150911510115111151211513115141151511516115171151811519115201152111522115231152411525115261152711528115291153011531115321153311534115351153611537115381153911540115411154211543115441154511546115471154811549115501155111552115531155411555115561155711558115591156011561115621156311564115651156611567115681156911570115711157211573115741157511576115771157811579115801158111582115831158411585115861158711588115891159011591115921159311594115951159611597115981159911600116011160211603116041160511606116071160811609116101161111612116131161411615116161161711618116191162011621116221162311624116251162611627116281162911630116311163211633116341163511636116371163811639116401164111642116431164411645116461164711648116491165011651116521165311654116551165611657116581165911660116611166211663116641166511666116671166811669116701167111672116731167411675116761167711678116791168011681116821168311684116851168611687116881168911690116911169211693116941169511696116971169811699117001170111702117031170411705117061170711708117091171011711117121171311714117151171611717117181171911720117211172211723117241172511726117271172811729117301173111732117331173411735117361173711738117391174011741117421174311744117451174611747117481174911750117511175211753117541175511756117571175811759117601176111762117631176411765117661176711768117691177011771117721177311774117751177611777117781177911780117811178211783117841178511786117871178811789117901179111792117931179411795117961179711798117991180011801118021180311804118051180611807118081180911810118111181211813118141181511816118171181811819118201182111822118231182411825118261182711828118291183011831118321183311834118351183611837118381183911840118411184211843118441184511846118471184811849118501185111852118531185411855118561185711858118591186011861118621186311864118651186611867118681186911870118711187211873118741187511876118771187811879118801188111882118831188411885118861188711888118891189011891118921189311894118951189611897118981189911900119011190211903119041190511906119071190811909119101191111912119131191411915119161191711918119191192011921119221192311924119251192611927119281192911930119311193211933119341193511936119371193811939119401194111942119431194411945119461194711948119491195011951119521195311954119551195611957119581195911960119611196211963119641196511966119671196811969119701197111972119731197411975119761197711978119791198011981119821198311984119851198611987119881198911990119911199211993119941199511996119971199811999120001200112002120031200412005120061200712008120091201012011120121201312014120151201612017120181201912020120211202212023120241202512026120271202812029120301203112032120331203412035120361203712038120391204012041120421204312044120451204612047120481204912050120511205212053120541205512056120571205812059120601206112062120631206412065120661206712068120691207012071120721207312074120751207612077120781207912080120811208212083120841208512086120871208812089120901209112092120931209412095120961209712098120991210012101121021210312104121051210612107121081210912110121111211212113121141211512116121171211812119121201212112122121231212412125121261212712128121291213012131121321213312134121351213612137121381213912140121411214212143121441214512146121471214812149121501215112152121531215412155121561215712158121591216012161121621216312164121651216612167121681216912170121711217212173121741217512176121771217812179121801218112182121831218412185121861218712188121891219012191121921219312194121951219612197121981219912200122011220212203122041220512206122071220812209122101221112212122131221412215122161221712218122191222012221122221222312224122251222612227122281222912230122311223212233122341223512236122371223812239122401224112242122431224412245122461224712248122491225012251122521225312254122551225612257122581225912260122611226212263122641226512266122671226812269122701227112272122731227412275122761227712278122791228012281122821228312284122851228612287122881228912290122911229212293122941229512296122971229812299123001230112302123031230412305123061230712308123091231012311123121231312314123151231612317123181231912320123211232212323123241232512326123271232812329123301233112332123331233412335123361233712338123391234012341123421234312344123451234612347123481234912350123511235212353123541235512356123571235812359123601236112362123631236412365123661236712368123691237012371123721237312374123751237612377123781237912380123811238212383123841238512386123871238812389123901239112392123931239412395123961239712398123991240012401124021240312404124051240612407124081240912410124111241212413124141241512416124171241812419124201242112422124231242412425124261242712428124291243012431124321243312434124351243612437124381243912440124411244212443124441244512446124471244812449124501245112452124531245412455124561245712458124591246012461124621246312464124651246612467124681246912470124711247212473124741247512476124771247812479124801248112482124831248412485124861248712488124891249012491124921249312494124951249612497124981249912500125011250212503125041250512506125071250812509125101251112512125131251412515125161251712518125191252012521125221252312524125251252612527125281252912530125311253212533125341253512536125371253812539125401254112542125431254412545125461254712548125491255012551125521255312554125551255612557125581255912560125611256212563125641256512566125671256812569125701257112572125731257412575125761257712578125791258012581125821258312584125851258612587125881258912590125911259212593125941259512596125971259812599126001260112602126031260412605126061260712608126091261012611126121261312614126151261612617126181261912620126211262212623126241262512626126271262812629126301263112632126331263412635126361263712638126391264012641126421264312644126451264612647126481264912650126511265212653126541265512656126571265812659126601266112662126631266412665126661266712668126691267012671126721267312674126751267612677126781267912680126811268212683126841268512686126871268812689126901269112692126931269412695126961269712698126991270012701127021270312704127051270612707127081270912710127111271212713127141271512716127171271812719127201272112722127231272412725127261272712728127291273012731127321273312734127351273612737127381273912740127411274212743127441274512746127471274812749127501275112752127531275412755127561275712758127591276012761127621276312764127651276612767127681276912770127711277212773127741277512776127771277812779127801278112782127831278412785127861278712788127891279012791127921279312794127951279612797127981279912800128011280212803128041280512806128071280812809128101281112812128131281412815128161281712818128191282012821128221282312824128251282612827128281282912830128311283212833128341283512836128371283812839128401284112842128431284412845128461284712848128491285012851128521285312854128551285612857128581285912860128611286212863128641286512866128671286812869128701287112872128731287412875128761287712878128791288012881128821288312884128851288612887128881288912890128911289212893128941289512896128971289812899129001290112902129031290412905129061290712908129091291012911129121291312914129151291612917129181291912920129211292212923129241292512926129271292812929129301293112932129331293412935129361293712938129391294012941129421294312944129451294612947129481294912950129511295212953129541295512956129571295812959129601296112962129631296412965129661296712968129691297012971129721297312974129751297612977129781297912980129811298212983129841298512986129871298812989129901299112992129931299412995129961299712998129991300013001130021300313004130051300613007130081300913010130111301213013130141301513016130171301813019130201302113022130231302413025130261302713028130291303013031130321303313034130351303613037130381303913040130411304213043130441304513046130471304813049130501305113052130531305413055130561305713058130591306013061130621306313064130651306613067130681306913070130711307213073130741307513076130771307813079130801308113082130831308413085130861308713088130891309013091130921309313094130951309613097130981309913100131011310213103131041310513106131071310813109131101311113112131131311413115131161311713118131191312013121131221312313124131251312613127131281312913130131311313213133131341313513136131371313813139131401314113142131431314413145131461314713148131491315013151131521315313154131551315613157131581315913160131611316213163131641316513166131671316813169131701317113172131731317413175131761317713178131791318013181131821318313184131851318613187131881318913190131911319213193131941319513196131971319813199132001320113202132031320413205132061320713208132091321013211132121321313214132151321613217132181321913220132211322213223132241322513226132271322813229132301323113232132331323413235132361323713238132391324013241132421324313244132451324613247132481324913250132511325213253132541325513256132571325813259132601326113262132631326413265132661326713268132691327013271132721327313274132751327613277132781327913280132811328213283132841328513286132871328813289132901329113292132931329413295132961329713298132991330013301133021330313304133051330613307133081330913310133111331213313133141331513316133171331813319133201332113322133231332413325133261332713328133291333013331133321333313334133351333613337133381333913340133411334213343133441334513346133471334813349133501335113352133531335413355133561335713358133591336013361133621336313364133651336613367133681336913370133711337213373133741337513376133771337813379133801338113382133831338413385133861338713388133891339013391133921339313394133951339613397133981339913400134011340213403134041340513406134071340813409134101341113412134131341413415134161341713418134191342013421134221342313424134251342613427134281342913430134311343213433134341343513436134371343813439134401344113442134431344413445134461344713448134491345013451134521345313454134551345613457134581345913460134611346213463134641346513466134671346813469134701347113472134731347413475134761347713478134791348013481134821348313484134851348613487134881348913490134911349213493134941349513496134971349813499135001350113502135031350413505135061350713508135091351013511135121351313514135151351613517135181351913520135211352213523135241352513526135271352813529135301353113532135331353413535135361353713538135391354013541135421354313544135451354613547135481354913550135511355213553135541355513556135571355813559135601356113562135631356413565135661356713568135691357013571135721357313574135751357613577135781357913580135811358213583135841358513586135871358813589135901359113592135931359413595135961359713598135991360013601136021360313604136051360613607136081360913610136111361213613136141361513616136171361813619136201362113622136231362413625136261362713628136291363013631136321363313634136351363613637136381363913640136411364213643136441364513646136471364813649136501365113652136531365413655136561365713658136591366013661136621366313664136651366613667136681366913670136711367213673136741367513676136771367813679136801368113682136831368413685136861368713688136891369013691136921369313694136951369613697136981369913700137011370213703137041370513706137071370813709137101371113712137131371413715137161371713718137191372013721137221372313724137251372613727137281372913730137311373213733137341373513736137371373813739137401374113742137431374413745137461374713748137491375013751137521375313754137551375613757137581375913760137611376213763137641376513766137671376813769137701377113772137731377413775137761377713778137791378013781137821378313784137851378613787137881378913790137911379213793137941379513796137971379813799138001380113802138031380413805138061380713808138091381013811138121381313814138151381613817138181381913820138211382213823138241382513826138271382813829138301383113832138331383413835138361383713838138391384013841138421384313844138451384613847138481384913850138511385213853138541385513856138571385813859138601386113862138631386413865138661386713868138691387013871138721387313874138751387613877138781387913880138811388213883138841388513886138871388813889138901389113892138931389413895138961389713898138991390013901139021390313904139051390613907139081390913910139111391213913139141391513916139171391813919139201392113922139231392413925139261392713928139291393013931139321393313934139351393613937139381393913940139411394213943139441394513946139471394813949139501395113952139531395413955139561395713958139591396013961139621396313964139651396613967139681396913970139711397213973139741397513976139771397813979139801398113982139831398413985139861398713988139891399013991139921399313994139951399613997139981399914000140011400214003140041400514006140071400814009140101401114012140131401414015140161401714018140191402014021140221402314024140251402614027140281402914030140311403214033140341403514036140371403814039140401404114042140431404414045140461404714048140491405014051140521405314054140551405614057140581405914060140611406214063140641406514066140671406814069140701407114072140731407414075140761407714078140791408014081140821408314084140851408614087140881408914090140911409214093140941409514096140971409814099141001410114102141031410414105141061410714108141091411014111141121411314114141151411614117141181411914120141211412214123141241412514126141271412814129141301413114132141331413414135141361413714138141391414014141141421414314144141451414614147141481414914150141511415214153141541415514156141571415814159141601416114162141631416414165141661416714168141691417014171141721417314174141751417614177141781417914180141811418214183141841418514186141871418814189141901419114192141931419414195141961419714198141991420014201142021420314204142051420614207142081420914210142111421214213142141421514216142171421814219142201422114222142231422414225142261422714228142291423014231142321423314234142351423614237142381423914240142411424214243142441424514246142471424814249142501425114252142531425414255142561425714258142591426014261142621426314264142651426614267142681426914270142711427214273142741427514276142771427814279142801428114282142831428414285142861428714288142891429014291142921429314294142951429614297142981429914300143011430214303143041430514306143071430814309143101431114312143131431414315143161431714318143191432014321143221432314324143251432614327143281432914330143311433214333143341433514336143371433814339143401434114342143431434414345143461434714348143491435014351143521435314354143551435614357143581435914360143611436214363143641436514366143671436814369143701437114372143731437414375143761437714378143791438014381143821438314384143851438614387143881438914390143911439214393143941439514396143971439814399144001440114402144031440414405144061440714408144091441014411144121441314414144151441614417144181441914420144211442214423144241442514426144271442814429144301443114432144331443414435144361443714438144391444014441144421444314444144451444614447144481444914450144511445214453144541445514456144571445814459144601446114462144631446414465144661446714468144691447014471144721447314474144751447614477144781447914480144811448214483144841448514486144871448814489144901449114492144931449414495144961449714498144991450014501145021450314504145051450614507145081450914510145111451214513145141451514516145171451814519145201452114522145231452414525145261452714528145291453014531145321453314534145351453614537145381453914540145411454214543145441454514546145471454814549145501455114552145531455414555145561455714558145591456014561145621456314564145651456614567145681456914570145711457214573145741457514576145771457814579145801458114582145831458414585145861458714588145891459014591145921459314594145951459614597145981459914600146011460214603146041460514606146071460814609146101461114612146131461414615146161461714618146191462014621146221462314624146251462614627146281462914630146311463214633146341463514636146371463814639146401464114642146431464414645146461464714648146491465014651146521465314654146551465614657146581465914660146611466214663146641466514666146671466814669146701467114672146731467414675146761467714678146791468014681146821468314684146851468614687146881468914690146911469214693146941469514696146971469814699147001470114702147031470414705147061470714708147091471014711147121471314714147151471614717147181471914720147211472214723147241472514726147271472814729147301473114732147331473414735147361473714738147391474014741147421474314744147451474614747147481474914750147511475214753147541475514756147571475814759147601476114762147631476414765147661476714768147691477014771147721477314774147751477614777147781477914780147811478214783147841478514786147871478814789147901479114792147931479414795147961479714798147991480014801148021480314804148051480614807148081480914810148111481214813148141481514816148171481814819148201482114822148231482414825148261482714828148291483014831148321483314834148351483614837148381483914840148411484214843148441484514846148471484814849148501485114852148531485414855148561485714858148591486014861148621486314864148651486614867148681486914870148711487214873148741487514876148771487814879148801488114882148831488414885148861488714888148891489014891148921489314894148951489614897148981489914900149011490214903149041490514906149071490814909149101491114912149131491414915149161491714918149191492014921149221492314924149251492614927149281492914930149311493214933149341493514936149371493814939149401494114942149431494414945149461494714948149491495014951149521495314954149551495614957149581495914960149611496214963149641496514966149671496814969149701497114972149731497414975149761497714978149791498014981149821498314984149851498614987149881498914990149911499214993149941499514996149971499814999150001500115002150031500415005150061500715008150091501015011150121501315014150151501615017150181501915020150211502215023150241502515026150271502815029150301503115032150331503415035150361503715038150391504015041150421504315044150451504615047150481504915050150511505215053150541505515056150571505815059150601506115062150631506415065150661506715068150691507015071150721507315074150751507615077150781507915080150811508215083150841508515086150871508815089150901509115092150931509415095150961509715098150991510015101151021510315104151051510615107151081510915110151111511215113151141511515116151171511815119151201512115122151231512415125151261512715128151291513015131151321513315134151351513615137151381513915140151411514215143151441514515146151471514815149151501515115152151531515415155151561515715158151591516015161151621516315164151651516615167151681516915170151711517215173151741517515176151771517815179151801518115182151831518415185151861518715188151891519015191151921519315194151951519615197151981519915200152011520215203152041520515206152071520815209152101521115212152131521415215152161521715218152191522015221152221522315224152251522615227152281522915230152311523215233152341523515236152371523815239152401524115242152431524415245152461524715248152491525015251152521525315254152551525615257152581525915260152611526215263152641526515266152671526815269152701527115272152731527415275152761527715278152791528015281152821528315284152851528615287152881528915290152911529215293152941529515296152971529815299153001530115302153031530415305153061530715308153091531015311153121531315314153151531615317153181531915320153211532215323153241532515326153271532815329153301533115332153331533415335153361533715338153391534015341153421534315344153451534615347153481534915350153511535215353153541535515356153571535815359153601536115362153631536415365153661536715368153691537015371
  1. #!/usr/bin/env node
  2. /* eslint-disable */
  3. "use strict";
  4. function $$SETUP_STATE(hydrateRuntimeState, basePath) {
  5. return hydrateRuntimeState(JSON.parse('{\
  6. "__info": [\
  7. "This file is automatically generated. Do not touch it, or risk",\
  8. "your modifications being lost. We also recommend you not to read",\
  9. "it either without using the @yarnpkg/pnp package, as the data layout",\
  10. "is entirely unspecified and WILL change from a version to another."\
  11. ],\
  12. "dependencyTreeRoots": [\
  13. {\
  14. "name": "lihongdong_proto",\
  15. "reference": "workspace:."\
  16. }\
  17. ],\
  18. "enableTopLevelFallback": true,\
  19. "ignorePatternData": "(^(?:\\\\.yarn\\\\/sdks(?:\\\\/(?!\\\\.{1,2}(?:\\\\/|$))(?:(?:(?!(?:^|\\\\/)\\\\.{1,2}(?:\\\\/|$)).)*?)|$))$)",\
  20. "fallbackExclusionList": [\
  21. ["lihongdong_proto", ["workspace:."]]\
  22. ],\
  23. "fallbackPool": [\
  24. ],\
  25. "packageRegistryData": [\
  26. [null, [\
  27. [null, {\
  28. "packageLocation": "./",\
  29. "packageDependencies": [\
  30. ["@types/react", "npm:18.2.42"],\
  31. ["@types/react-dom", "npm:18.2.17"],\
  32. ["@vitejs/plugin-react", "virtual:886e61fa7e6c7b2ced7980b68a5ec81e7559ed62a5e4bd0d20a3077c159398b6fcf9f9fce97484d3befe2143009a06709cd8e96ea637527ac9f0813dcc5f7523#npm:4.2.1"],\
  33. ["eslint", "npm:8.55.0"],\
  34. ["eslint-plugin-react", "virtual:886e61fa7e6c7b2ced7980b68a5ec81e7559ed62a5e4bd0d20a3077c159398b6fcf9f9fce97484d3befe2143009a06709cd8e96ea637527ac9f0813dcc5f7523#npm:7.33.2"],\
  35. ["eslint-plugin-react-hooks", "virtual:886e61fa7e6c7b2ced7980b68a5ec81e7559ed62a5e4bd0d20a3077c159398b6fcf9f9fce97484d3befe2143009a06709cd8e96ea637527ac9f0813dcc5f7523#npm:4.6.0"],\
  36. ["eslint-plugin-react-refresh", "virtual:886e61fa7e6c7b2ced7980b68a5ec81e7559ed62a5e4bd0d20a3077c159398b6fcf9f9fce97484d3befe2143009a06709cd8e96ea637527ac9f0813dcc5f7523#npm:0.4.5"],\
  37. ["react", "npm:18.2.0"],\
  38. ["react-dom", "virtual:886e61fa7e6c7b2ced7980b68a5ec81e7559ed62a5e4bd0d20a3077c159398b6fcf9f9fce97484d3befe2143009a06709cd8e96ea637527ac9f0813dcc5f7523#npm:18.2.0"],\
  39. ["react-router-dom", "virtual:886e61fa7e6c7b2ced7980b68a5ec81e7559ed62a5e4bd0d20a3077c159398b6fcf9f9fce97484d3befe2143009a06709cd8e96ea637527ac9f0813dcc5f7523#npm:6.20.1"],\
  40. ["tdesign-react", "virtual:886e61fa7e6c7b2ced7980b68a5ec81e7559ed62a5e4bd0d20a3077c159398b6fcf9f9fce97484d3befe2143009a06709cd8e96ea637527ac9f0813dcc5f7523#npm:1.4.0"],\
  41. ["vite", "virtual:886e61fa7e6c7b2ced7980b68a5ec81e7559ed62a5e4bd0d20a3077c159398b6fcf9f9fce97484d3befe2143009a06709cd8e96ea637527ac9f0813dcc5f7523#npm:5.0.5"]\
  42. ],\
  43. "linkType": "SOFT"\
  44. }]\
  45. ]],\
  46. ["@aashutoshrathi/word-wrap", [\
  47. ["npm:1.2.6", {\
  48. "packageLocation": "./.yarn/cache/@aashutoshrathi-word-wrap-npm-1.2.6-5b1d95e487-ada901b9e7.zip/node_modules/@aashutoshrathi/word-wrap/",\
  49. "packageDependencies": [\
  50. ["@aashutoshrathi/word-wrap", "npm:1.2.6"]\
  51. ],\
  52. "linkType": "HARD"\
  53. }]\
  54. ]],\
  55. ["@ampproject/remapping", [\
  56. ["npm:2.2.1", {\
  57. "packageLocation": "./.yarn/cache/@ampproject-remapping-npm-2.2.1-3da3d624be-03c04fd526.zip/node_modules/@ampproject/remapping/",\
  58. "packageDependencies": [\
  59. ["@ampproject/remapping", "npm:2.2.1"],\
  60. ["@jridgewell/gen-mapping", "npm:0.3.3"],\
  61. ["@jridgewell/trace-mapping", "npm:0.3.20"]\
  62. ],\
  63. "linkType": "HARD"\
  64. }]\
  65. ]],\
  66. ["@babel/code-frame", [\
  67. ["npm:7.23.5", {\
  68. "packageLocation": "./.yarn/cache/@babel-code-frame-npm-7.23.5-cb10d08de6-d90981fdf5.zip/node_modules/@babel/code-frame/",\
  69. "packageDependencies": [\
  70. ["@babel/code-frame", "npm:7.23.5"],\
  71. ["@babel/highlight", "npm:7.23.4"],\
  72. ["chalk", "npm:2.4.2"]\
  73. ],\
  74. "linkType": "HARD"\
  75. }]\
  76. ]],\
  77. ["@babel/compat-data", [\
  78. ["npm:7.23.5", {\
  79. "packageLocation": "./.yarn/cache/@babel-compat-data-npm-7.23.5-d79bbb1184-06ce244cda.zip/node_modules/@babel/compat-data/",\
  80. "packageDependencies": [\
  81. ["@babel/compat-data", "npm:7.23.5"]\
  82. ],\
  83. "linkType": "HARD"\
  84. }]\
  85. ]],\
  86. ["@babel/core", [\
  87. ["npm:7.23.5", {\
  88. "packageLocation": "./.yarn/cache/@babel-core-npm-7.23.5-67291ea9b8-5e5dfb1e61.zip/node_modules/@babel/core/",\
  89. "packageDependencies": [\
  90. ["@babel/core", "npm:7.23.5"],\
  91. ["@ampproject/remapping", "npm:2.2.1"],\
  92. ["@babel/code-frame", "npm:7.23.5"],\
  93. ["@babel/generator", "npm:7.23.5"],\
  94. ["@babel/helper-compilation-targets", "npm:7.22.15"],\
  95. ["@babel/helper-module-transforms", "virtual:67291ea9b8b5fe6fdb5e5618ff75ba27d2b6524459d164d4bd9b3a173aecd5e459c3062effd92695ae5ad2a2fa9e8a4529f589d0797f8c463d380673442d6a84#npm:7.23.3"],\
  96. ["@babel/helpers", "npm:7.23.5"],\
  97. ["@babel/parser", "npm:7.23.5"],\
  98. ["@babel/template", "npm:7.22.15"],\
  99. ["@babel/traverse", "npm:7.23.5"],\
  100. ["@babel/types", "npm:7.23.5"],\
  101. ["convert-source-map", "npm:2.0.0"],\
  102. ["debug", "virtual:1ff4b5f90832ba0a9c93ba1223af226e44ba70c1126a3740d93562b97bc36544e896a5e95908196f7458713e6a6089a34bfc67362fc6df7fa093bd06c878be47#npm:4.3.4"],\
  103. ["gensync", "npm:1.0.0-beta.2"],\
  104. ["json5", "npm:2.2.3"],\
  105. ["semver", "npm:6.3.1"]\
  106. ],\
  107. "linkType": "HARD"\
  108. }]\
  109. ]],\
  110. ["@babel/generator", [\
  111. ["npm:7.23.5", {\
  112. "packageLocation": "./.yarn/cache/@babel-generator-npm-7.23.5-6cb0af9aef-845ddda7cf.zip/node_modules/@babel/generator/",\
  113. "packageDependencies": [\
  114. ["@babel/generator", "npm:7.23.5"],\
  115. ["@babel/types", "npm:7.23.5"],\
  116. ["@jridgewell/gen-mapping", "npm:0.3.3"],\
  117. ["@jridgewell/trace-mapping", "npm:0.3.20"],\
  118. ["jsesc", "npm:2.5.2"]\
  119. ],\
  120. "linkType": "HARD"\
  121. }]\
  122. ]],\
  123. ["@babel/helper-compilation-targets", [\
  124. ["npm:7.22.15", {\
  125. "packageLocation": "./.yarn/cache/@babel-helper-compilation-targets-npm-7.22.15-7aac9e71ad-ce85196769.zip/node_modules/@babel/helper-compilation-targets/",\
  126. "packageDependencies": [\
  127. ["@babel/helper-compilation-targets", "npm:7.22.15"],\
  128. ["@babel/compat-data", "npm:7.23.5"],\
  129. ["@babel/helper-validator-option", "npm:7.23.5"],\
  130. ["browserslist", "npm:4.22.2"],\
  131. ["lru-cache", "npm:5.1.1"],\
  132. ["semver", "npm:6.3.1"]\
  133. ],\
  134. "linkType": "HARD"\
  135. }]\
  136. ]],\
  137. ["@babel/helper-environment-visitor", [\
  138. ["npm:7.22.20", {\
  139. "packageLocation": "./.yarn/cache/@babel-helper-environment-visitor-npm-7.22.20-260909e014-d80ee98ff6.zip/node_modules/@babel/helper-environment-visitor/",\
  140. "packageDependencies": [\
  141. ["@babel/helper-environment-visitor", "npm:7.22.20"]\
  142. ],\
  143. "linkType": "HARD"\
  144. }]\
  145. ]],\
  146. ["@babel/helper-function-name", [\
  147. ["npm:7.23.0", {\
  148. "packageLocation": "./.yarn/cache/@babel-helper-function-name-npm-7.23.0-ce38271242-e44542257b.zip/node_modules/@babel/helper-function-name/",\
  149. "packageDependencies": [\
  150. ["@babel/helper-function-name", "npm:7.23.0"],\
  151. ["@babel/template", "npm:7.22.15"],\
  152. ["@babel/types", "npm:7.23.5"]\
  153. ],\
  154. "linkType": "HARD"\
  155. }]\
  156. ]],\
  157. ["@babel/helper-hoist-variables", [\
  158. ["npm:7.22.5", {\
  159. "packageLocation": "./.yarn/cache/@babel-helper-hoist-variables-npm-7.22.5-6db3192347-394ca191b4.zip/node_modules/@babel/helper-hoist-variables/",\
  160. "packageDependencies": [\
  161. ["@babel/helper-hoist-variables", "npm:7.22.5"],\
  162. ["@babel/types", "npm:7.23.5"]\
  163. ],\
  164. "linkType": "HARD"\
  165. }]\
  166. ]],\
  167. ["@babel/helper-module-imports", [\
  168. ["npm:7.22.15", {\
  169. "packageLocation": "./.yarn/cache/@babel-helper-module-imports-npm-7.22.15-687e77ee50-ecd7e457df.zip/node_modules/@babel/helper-module-imports/",\
  170. "packageDependencies": [\
  171. ["@babel/helper-module-imports", "npm:7.22.15"],\
  172. ["@babel/types", "npm:7.23.5"]\
  173. ],\
  174. "linkType": "HARD"\
  175. }]\
  176. ]],\
  177. ["@babel/helper-module-transforms", [\
  178. ["npm:7.23.3", {\
  179. "packageLocation": "./.yarn/cache/@babel-helper-module-transforms-npm-7.23.3-69078a931c-5d0895cfba.zip/node_modules/@babel/helper-module-transforms/",\
  180. "packageDependencies": [\
  181. ["@babel/helper-module-transforms", "npm:7.23.3"]\
  182. ],\
  183. "linkType": "SOFT"\
  184. }],\
  185. ["virtual:67291ea9b8b5fe6fdb5e5618ff75ba27d2b6524459d164d4bd9b3a173aecd5e459c3062effd92695ae5ad2a2fa9e8a4529f589d0797f8c463d380673442d6a84#npm:7.23.3", {\
  186. "packageLocation": "./.yarn/__virtual__/@babel-helper-module-transforms-virtual-c1ea6599e6/0/cache/@babel-helper-module-transforms-npm-7.23.3-69078a931c-5d0895cfba.zip/node_modules/@babel/helper-module-transforms/",\
  187. "packageDependencies": [\
  188. ["@babel/helper-module-transforms", "virtual:67291ea9b8b5fe6fdb5e5618ff75ba27d2b6524459d164d4bd9b3a173aecd5e459c3062effd92695ae5ad2a2fa9e8a4529f589d0797f8c463d380673442d6a84#npm:7.23.3"],\
  189. ["@babel/core", "npm:7.23.5"],\
  190. ["@babel/helper-environment-visitor", "npm:7.22.20"],\
  191. ["@babel/helper-module-imports", "npm:7.22.15"],\
  192. ["@babel/helper-simple-access", "npm:7.22.5"],\
  193. ["@babel/helper-split-export-declaration", "npm:7.22.6"],\
  194. ["@babel/helper-validator-identifier", "npm:7.22.20"],\
  195. ["@types/babel__core", null]\
  196. ],\
  197. "packagePeers": [\
  198. "@babel/core",\
  199. "@types/babel__core"\
  200. ],\
  201. "linkType": "HARD"\
  202. }]\
  203. ]],\
  204. ["@babel/helper-plugin-utils", [\
  205. ["npm:7.22.5", {\
  206. "packageLocation": "./.yarn/cache/@babel-helper-plugin-utils-npm-7.22.5-192e38e1de-c0fc722707.zip/node_modules/@babel/helper-plugin-utils/",\
  207. "packageDependencies": [\
  208. ["@babel/helper-plugin-utils", "npm:7.22.5"]\
  209. ],\
  210. "linkType": "HARD"\
  211. }]\
  212. ]],\
  213. ["@babel/helper-simple-access", [\
  214. ["npm:7.22.5", {\
  215. "packageLocation": "./.yarn/cache/@babel-helper-simple-access-npm-7.22.5-0a3f578780-fe9686714c.zip/node_modules/@babel/helper-simple-access/",\
  216. "packageDependencies": [\
  217. ["@babel/helper-simple-access", "npm:7.22.5"],\
  218. ["@babel/types", "npm:7.23.5"]\
  219. ],\
  220. "linkType": "HARD"\
  221. }]\
  222. ]],\
  223. ["@babel/helper-split-export-declaration", [\
  224. ["npm:7.22.6", {\
  225. "packageLocation": "./.yarn/cache/@babel-helper-split-export-declaration-npm-7.22.6-e723505aef-e141cace58.zip/node_modules/@babel/helper-split-export-declaration/",\
  226. "packageDependencies": [\
  227. ["@babel/helper-split-export-declaration", "npm:7.22.6"],\
  228. ["@babel/types", "npm:7.23.5"]\
  229. ],\
  230. "linkType": "HARD"\
  231. }]\
  232. ]],\
  233. ["@babel/helper-string-parser", [\
  234. ["npm:7.23.4", {\
  235. "packageLocation": "./.yarn/cache/@babel-helper-string-parser-npm-7.23.4-b1f0d030c3-c0641144cf.zip/node_modules/@babel/helper-string-parser/",\
  236. "packageDependencies": [\
  237. ["@babel/helper-string-parser", "npm:7.23.4"]\
  238. ],\
  239. "linkType": "HARD"\
  240. }]\
  241. ]],\
  242. ["@babel/helper-validator-identifier", [\
  243. ["npm:7.22.20", {\
  244. "packageLocation": "./.yarn/cache/@babel-helper-validator-identifier-npm-7.22.20-18305bb306-136412784d.zip/node_modules/@babel/helper-validator-identifier/",\
  245. "packageDependencies": [\
  246. ["@babel/helper-validator-identifier", "npm:7.22.20"]\
  247. ],\
  248. "linkType": "HARD"\
  249. }]\
  250. ]],\
  251. ["@babel/helper-validator-option", [\
  252. ["npm:7.23.5", {\
  253. "packageLocation": "./.yarn/cache/@babel-helper-validator-option-npm-7.23.5-d83bbfe738-537cde2330.zip/node_modules/@babel/helper-validator-option/",\
  254. "packageDependencies": [\
  255. ["@babel/helper-validator-option", "npm:7.23.5"]\
  256. ],\
  257. "linkType": "HARD"\
  258. }]\
  259. ]],\
  260. ["@babel/helpers", [\
  261. ["npm:7.23.5", {\
  262. "packageLocation": "./.yarn/cache/@babel-helpers-npm-7.23.5-3d1b3cb6c2-c16dc8a3bb.zip/node_modules/@babel/helpers/",\
  263. "packageDependencies": [\
  264. ["@babel/helpers", "npm:7.23.5"],\
  265. ["@babel/template", "npm:7.22.15"],\
  266. ["@babel/traverse", "npm:7.23.5"],\
  267. ["@babel/types", "npm:7.23.5"]\
  268. ],\
  269. "linkType": "HARD"\
  270. }]\
  271. ]],\
  272. ["@babel/highlight", [\
  273. ["npm:7.23.4", {\
  274. "packageLocation": "./.yarn/cache/@babel-highlight-npm-7.23.4-2a9f2d2538-643acecdc2.zip/node_modules/@babel/highlight/",\
  275. "packageDependencies": [\
  276. ["@babel/highlight", "npm:7.23.4"],\
  277. ["@babel/helper-validator-identifier", "npm:7.22.20"],\
  278. ["chalk", "npm:2.4.2"],\
  279. ["js-tokens", "npm:4.0.0"]\
  280. ],\
  281. "linkType": "HARD"\
  282. }]\
  283. ]],\
  284. ["@babel/parser", [\
  285. ["npm:7.23.5", {\
  286. "packageLocation": "./.yarn/cache/@babel-parser-npm-7.23.5-6bd8ea402a-ea76362931.zip/node_modules/@babel/parser/",\
  287. "packageDependencies": [\
  288. ["@babel/parser", "npm:7.23.5"],\
  289. ["@babel/types", "npm:7.23.5"]\
  290. ],\
  291. "linkType": "HARD"\
  292. }]\
  293. ]],\
  294. ["@babel/plugin-transform-react-jsx-self", [\
  295. ["npm:7.23.3", {\
  296. "packageLocation": "./.yarn/cache/@babel-plugin-transform-react-jsx-self-npm-7.23.3-2352452d70-882bf56bc9.zip/node_modules/@babel/plugin-transform-react-jsx-self/",\
  297. "packageDependencies": [\
  298. ["@babel/plugin-transform-react-jsx-self", "npm:7.23.3"]\
  299. ],\
  300. "linkType": "SOFT"\
  301. }],\
  302. ["virtual:8d3027dd4f5aa4b8255cbb871523e1e99e82e04cf1807d5bbd15ed7cf25e15ed653fb1bc480c6a66feab5ebbbbd8a45e90700109959f48eb06a56449f178b365#npm:7.23.3", {\
  303. "packageLocation": "./.yarn/__virtual__/@babel-plugin-transform-react-jsx-self-virtual-9151b6dac7/0/cache/@babel-plugin-transform-react-jsx-self-npm-7.23.3-2352452d70-882bf56bc9.zip/node_modules/@babel/plugin-transform-react-jsx-self/",\
  304. "packageDependencies": [\
  305. ["@babel/plugin-transform-react-jsx-self", "virtual:8d3027dd4f5aa4b8255cbb871523e1e99e82e04cf1807d5bbd15ed7cf25e15ed653fb1bc480c6a66feab5ebbbbd8a45e90700109959f48eb06a56449f178b365#npm:7.23.3"],\
  306. ["@babel/core", "npm:7.23.5"],\
  307. ["@babel/helper-plugin-utils", "npm:7.22.5"],\
  308. ["@types/babel__core", "npm:7.20.5"]\
  309. ],\
  310. "packagePeers": [\
  311. "@babel/core",\
  312. "@types/babel__core"\
  313. ],\
  314. "linkType": "HARD"\
  315. }]\
  316. ]],\
  317. ["@babel/plugin-transform-react-jsx-source", [\
  318. ["npm:7.23.3", {\
  319. "packageLocation": "./.yarn/cache/@babel-plugin-transform-react-jsx-source-npm-7.23.3-6d660a728e-92287fb797.zip/node_modules/@babel/plugin-transform-react-jsx-source/",\
  320. "packageDependencies": [\
  321. ["@babel/plugin-transform-react-jsx-source", "npm:7.23.3"]\
  322. ],\
  323. "linkType": "SOFT"\
  324. }],\
  325. ["virtual:8d3027dd4f5aa4b8255cbb871523e1e99e82e04cf1807d5bbd15ed7cf25e15ed653fb1bc480c6a66feab5ebbbbd8a45e90700109959f48eb06a56449f178b365#npm:7.23.3", {\
  326. "packageLocation": "./.yarn/__virtual__/@babel-plugin-transform-react-jsx-source-virtual-0cbcaa0734/0/cache/@babel-plugin-transform-react-jsx-source-npm-7.23.3-6d660a728e-92287fb797.zip/node_modules/@babel/plugin-transform-react-jsx-source/",\
  327. "packageDependencies": [\
  328. ["@babel/plugin-transform-react-jsx-source", "virtual:8d3027dd4f5aa4b8255cbb871523e1e99e82e04cf1807d5bbd15ed7cf25e15ed653fb1bc480c6a66feab5ebbbbd8a45e90700109959f48eb06a56449f178b365#npm:7.23.3"],\
  329. ["@babel/core", "npm:7.23.5"],\
  330. ["@babel/helper-plugin-utils", "npm:7.22.5"],\
  331. ["@types/babel__core", "npm:7.20.5"]\
  332. ],\
  333. "packagePeers": [\
  334. "@babel/core",\
  335. "@types/babel__core"\
  336. ],\
  337. "linkType": "HARD"\
  338. }]\
  339. ]],\
  340. ["@babel/runtime", [\
  341. ["npm:7.17.9", {\
  342. "packageLocation": "./.yarn/cache/@babel-runtime-npm-7.17.9-c52a5e9d27-4d56bdb828.zip/node_modules/@babel/runtime/",\
  343. "packageDependencies": [\
  344. ["@babel/runtime", "npm:7.17.9"],\
  345. ["regenerator-runtime", "npm:0.13.11"]\
  346. ],\
  347. "linkType": "HARD"\
  348. }],\
  349. ["npm:7.23.5", {\
  350. "packageLocation": "./.yarn/cache/@babel-runtime-npm-7.23.5-6e68b78aa3-164d980242.zip/node_modules/@babel/runtime/",\
  351. "packageDependencies": [\
  352. ["@babel/runtime", "npm:7.23.5"],\
  353. ["regenerator-runtime", "npm:0.14.0"]\
  354. ],\
  355. "linkType": "HARD"\
  356. }]\
  357. ]],\
  358. ["@babel/template", [\
  359. ["npm:7.22.15", {\
  360. "packageLocation": "./.yarn/cache/@babel-template-npm-7.22.15-0b464facb4-1f3e7dcd6c.zip/node_modules/@babel/template/",\
  361. "packageDependencies": [\
  362. ["@babel/template", "npm:7.22.15"],\
  363. ["@babel/code-frame", "npm:7.23.5"],\
  364. ["@babel/parser", "npm:7.23.5"],\
  365. ["@babel/types", "npm:7.23.5"]\
  366. ],\
  367. "linkType": "HARD"\
  368. }]\
  369. ]],\
  370. ["@babel/traverse", [\
  371. ["npm:7.23.5", {\
  372. "packageLocation": "./.yarn/cache/@babel-traverse-npm-7.23.5-a4d284491e-0558b05360.zip/node_modules/@babel/traverse/",\
  373. "packageDependencies": [\
  374. ["@babel/traverse", "npm:7.23.5"],\
  375. ["@babel/code-frame", "npm:7.23.5"],\
  376. ["@babel/generator", "npm:7.23.5"],\
  377. ["@babel/helper-environment-visitor", "npm:7.22.20"],\
  378. ["@babel/helper-function-name", "npm:7.23.0"],\
  379. ["@babel/helper-hoist-variables", "npm:7.22.5"],\
  380. ["@babel/helper-split-export-declaration", "npm:7.22.6"],\
  381. ["@babel/parser", "npm:7.23.5"],\
  382. ["@babel/types", "npm:7.23.5"],\
  383. ["debug", "virtual:1ff4b5f90832ba0a9c93ba1223af226e44ba70c1126a3740d93562b97bc36544e896a5e95908196f7458713e6a6089a34bfc67362fc6df7fa093bd06c878be47#npm:4.3.4"],\
  384. ["globals", "npm:11.12.0"]\
  385. ],\
  386. "linkType": "HARD"\
  387. }]\
  388. ]],\
  389. ["@babel/types", [\
  390. ["npm:7.23.5", {\
  391. "packageLocation": "./.yarn/cache/@babel-types-npm-7.23.5-17488c6408-3d21774480.zip/node_modules/@babel/types/",\
  392. "packageDependencies": [\
  393. ["@babel/types", "npm:7.23.5"],\
  394. ["@babel/helper-string-parser", "npm:7.23.4"],\
  395. ["@babel/helper-validator-identifier", "npm:7.22.20"],\
  396. ["to-fast-properties", "npm:2.0.0"]\
  397. ],\
  398. "linkType": "HARD"\
  399. }]\
  400. ]],\
  401. ["@esbuild/android-arm", [\
  402. ["npm:0.19.8", {\
  403. "packageLocation": "./.yarn/unplugged/@esbuild-android-arm-npm-0.19.8-0f6bf856b4/node_modules/@esbuild/android-arm/",\
  404. "packageDependencies": [\
  405. ["@esbuild/android-arm", "npm:0.19.8"]\
  406. ],\
  407. "linkType": "HARD"\
  408. }]\
  409. ]],\
  410. ["@esbuild/android-arm64", [\
  411. ["npm:0.19.8", {\
  412. "packageLocation": "./.yarn/unplugged/@esbuild-android-arm64-npm-0.19.8-30dcd72187/node_modules/@esbuild/android-arm64/",\
  413. "packageDependencies": [\
  414. ["@esbuild/android-arm64", "npm:0.19.8"]\
  415. ],\
  416. "linkType": "HARD"\
  417. }]\
  418. ]],\
  419. ["@esbuild/android-x64", [\
  420. ["npm:0.19.8", {\
  421. "packageLocation": "./.yarn/unplugged/@esbuild-android-x64-npm-0.19.8-d9dba94411/node_modules/@esbuild/android-x64/",\
  422. "packageDependencies": [\
  423. ["@esbuild/android-x64", "npm:0.19.8"]\
  424. ],\
  425. "linkType": "HARD"\
  426. }]\
  427. ]],\
  428. ["@esbuild/darwin-arm64", [\
  429. ["npm:0.19.8", {\
  430. "packageLocation": "./.yarn/unplugged/@esbuild-darwin-arm64-npm-0.19.8-b1920f84ba/node_modules/@esbuild/darwin-arm64/",\
  431. "packageDependencies": [\
  432. ["@esbuild/darwin-arm64", "npm:0.19.8"]\
  433. ],\
  434. "linkType": "HARD"\
  435. }]\
  436. ]],\
  437. ["@esbuild/darwin-x64", [\
  438. ["npm:0.19.8", {\
  439. "packageLocation": "./.yarn/unplugged/@esbuild-darwin-x64-npm-0.19.8-36f500fc51/node_modules/@esbuild/darwin-x64/",\
  440. "packageDependencies": [\
  441. ["@esbuild/darwin-x64", "npm:0.19.8"]\
  442. ],\
  443. "linkType": "HARD"\
  444. }]\
  445. ]],\
  446. ["@esbuild/freebsd-arm64", [\
  447. ["npm:0.19.8", {\
  448. "packageLocation": "./.yarn/unplugged/@esbuild-freebsd-arm64-npm-0.19.8-cb340a06d6/node_modules/@esbuild/freebsd-arm64/",\
  449. "packageDependencies": [\
  450. ["@esbuild/freebsd-arm64", "npm:0.19.8"]\
  451. ],\
  452. "linkType": "HARD"\
  453. }]\
  454. ]],\
  455. ["@esbuild/freebsd-x64", [\
  456. ["npm:0.19.8", {\
  457. "packageLocation": "./.yarn/unplugged/@esbuild-freebsd-x64-npm-0.19.8-7e90399f78/node_modules/@esbuild/freebsd-x64/",\
  458. "packageDependencies": [\
  459. ["@esbuild/freebsd-x64", "npm:0.19.8"]\
  460. ],\
  461. "linkType": "HARD"\
  462. }]\
  463. ]],\
  464. ["@esbuild/linux-arm", [\
  465. ["npm:0.19.8", {\
  466. "packageLocation": "./.yarn/unplugged/@esbuild-linux-arm-npm-0.19.8-6f4c357b4e/node_modules/@esbuild/linux-arm/",\
  467. "packageDependencies": [\
  468. ["@esbuild/linux-arm", "npm:0.19.8"]\
  469. ],\
  470. "linkType": "HARD"\
  471. }]\
  472. ]],\
  473. ["@esbuild/linux-arm64", [\
  474. ["npm:0.19.8", {\
  475. "packageLocation": "./.yarn/unplugged/@esbuild-linux-arm64-npm-0.19.8-2687227d41/node_modules/@esbuild/linux-arm64/",\
  476. "packageDependencies": [\
  477. ["@esbuild/linux-arm64", "npm:0.19.8"]\
  478. ],\
  479. "linkType": "HARD"\
  480. }]\
  481. ]],\
  482. ["@esbuild/linux-ia32", [\
  483. ["npm:0.19.8", {\
  484. "packageLocation": "./.yarn/unplugged/@esbuild-linux-ia32-npm-0.19.8-dcaf95d96a/node_modules/@esbuild/linux-ia32/",\
  485. "packageDependencies": [\
  486. ["@esbuild/linux-ia32", "npm:0.19.8"]\
  487. ],\
  488. "linkType": "HARD"\
  489. }]\
  490. ]],\
  491. ["@esbuild/linux-loong64", [\
  492. ["npm:0.19.8", {\
  493. "packageLocation": "./.yarn/unplugged/@esbuild-linux-loong64-npm-0.19.8-9299fc5889/node_modules/@esbuild/linux-loong64/",\
  494. "packageDependencies": [\
  495. ["@esbuild/linux-loong64", "npm:0.19.8"]\
  496. ],\
  497. "linkType": "HARD"\
  498. }]\
  499. ]],\
  500. ["@esbuild/linux-mips64el", [\
  501. ["npm:0.19.8", {\
  502. "packageLocation": "./.yarn/unplugged/@esbuild-linux-mips64el-npm-0.19.8-c7a9999c11/node_modules/@esbuild/linux-mips64el/",\
  503. "packageDependencies": [\
  504. ["@esbuild/linux-mips64el", "npm:0.19.8"]\
  505. ],\
  506. "linkType": "HARD"\
  507. }]\
  508. ]],\
  509. ["@esbuild/linux-ppc64", [\
  510. ["npm:0.19.8", {\
  511. "packageLocation": "./.yarn/unplugged/@esbuild-linux-ppc64-npm-0.19.8-c6069ca15a/node_modules/@esbuild/linux-ppc64/",\
  512. "packageDependencies": [\
  513. ["@esbuild/linux-ppc64", "npm:0.19.8"]\
  514. ],\
  515. "linkType": "HARD"\
  516. }]\
  517. ]],\
  518. ["@esbuild/linux-riscv64", [\
  519. ["npm:0.19.8", {\
  520. "packageLocation": "./.yarn/unplugged/@esbuild-linux-riscv64-npm-0.19.8-c4bc076f39/node_modules/@esbuild/linux-riscv64/",\
  521. "packageDependencies": [\
  522. ["@esbuild/linux-riscv64", "npm:0.19.8"]\
  523. ],\
  524. "linkType": "HARD"\
  525. }]\
  526. ]],\
  527. ["@esbuild/linux-s390x", [\
  528. ["npm:0.19.8", {\
  529. "packageLocation": "./.yarn/unplugged/@esbuild-linux-s390x-npm-0.19.8-9dd9364d5e/node_modules/@esbuild/linux-s390x/",\
  530. "packageDependencies": [\
  531. ["@esbuild/linux-s390x", "npm:0.19.8"]\
  532. ],\
  533. "linkType": "HARD"\
  534. }]\
  535. ]],\
  536. ["@esbuild/linux-x64", [\
  537. ["npm:0.19.8", {\
  538. "packageLocation": "./.yarn/unplugged/@esbuild-linux-x64-npm-0.19.8-231d24e5e4/node_modules/@esbuild/linux-x64/",\
  539. "packageDependencies": [\
  540. ["@esbuild/linux-x64", "npm:0.19.8"]\
  541. ],\
  542. "linkType": "HARD"\
  543. }]\
  544. ]],\
  545. ["@esbuild/netbsd-x64", [\
  546. ["npm:0.19.8", {\
  547. "packageLocation": "./.yarn/unplugged/@esbuild-netbsd-x64-npm-0.19.8-11565a66d4/node_modules/@esbuild/netbsd-x64/",\
  548. "packageDependencies": [\
  549. ["@esbuild/netbsd-x64", "npm:0.19.8"]\
  550. ],\
  551. "linkType": "HARD"\
  552. }]\
  553. ]],\
  554. ["@esbuild/openbsd-x64", [\
  555. ["npm:0.19.8", {\
  556. "packageLocation": "./.yarn/unplugged/@esbuild-openbsd-x64-npm-0.19.8-590ec8cced/node_modules/@esbuild/openbsd-x64/",\
  557. "packageDependencies": [\
  558. ["@esbuild/openbsd-x64", "npm:0.19.8"]\
  559. ],\
  560. "linkType": "HARD"\
  561. }]\
  562. ]],\
  563. ["@esbuild/sunos-x64", [\
  564. ["npm:0.19.8", {\
  565. "packageLocation": "./.yarn/unplugged/@esbuild-sunos-x64-npm-0.19.8-c23b4c9353/node_modules/@esbuild/sunos-x64/",\
  566. "packageDependencies": [\
  567. ["@esbuild/sunos-x64", "npm:0.19.8"]\
  568. ],\
  569. "linkType": "HARD"\
  570. }]\
  571. ]],\
  572. ["@esbuild/win32-arm64", [\
  573. ["npm:0.19.8", {\
  574. "packageLocation": "./.yarn/unplugged/@esbuild-win32-arm64-npm-0.19.8-b89744d857/node_modules/@esbuild/win32-arm64/",\
  575. "packageDependencies": [\
  576. ["@esbuild/win32-arm64", "npm:0.19.8"]\
  577. ],\
  578. "linkType": "HARD"\
  579. }]\
  580. ]],\
  581. ["@esbuild/win32-ia32", [\
  582. ["npm:0.19.8", {\
  583. "packageLocation": "./.yarn/unplugged/@esbuild-win32-ia32-npm-0.19.8-a38c60f916/node_modules/@esbuild/win32-ia32/",\
  584. "packageDependencies": [\
  585. ["@esbuild/win32-ia32", "npm:0.19.8"]\
  586. ],\
  587. "linkType": "HARD"\
  588. }]\
  589. ]],\
  590. ["@esbuild/win32-x64", [\
  591. ["npm:0.19.8", {\
  592. "packageLocation": "./.yarn/unplugged/@esbuild-win32-x64-npm-0.19.8-e04c7b26a4/node_modules/@esbuild/win32-x64/",\
  593. "packageDependencies": [\
  594. ["@esbuild/win32-x64", "npm:0.19.8"]\
  595. ],\
  596. "linkType": "HARD"\
  597. }]\
  598. ]],\
  599. ["@eslint-community/eslint-utils", [\
  600. ["npm:4.4.0", {\
  601. "packageLocation": "./.yarn/cache/@eslint-community-eslint-utils-npm-4.4.0-d1791bd5a3-cdfe3ae42b.zip/node_modules/@eslint-community/eslint-utils/",\
  602. "packageDependencies": [\
  603. ["@eslint-community/eslint-utils", "npm:4.4.0"]\
  604. ],\
  605. "linkType": "SOFT"\
  606. }],\
  607. ["virtual:7e84babe85e6b058f29b2789822aea4bf3e34b48391f8eba05629d50500f4f2dfbe6628418745cffc770a77f74f121288626b69dd676f57de93d3ca5c7553ce6#npm:4.4.0", {\
  608. "packageLocation": "./.yarn/__virtual__/@eslint-community-eslint-utils-virtual-f7c44dfe79/0/cache/@eslint-community-eslint-utils-npm-4.4.0-d1791bd5a3-cdfe3ae42b.zip/node_modules/@eslint-community/eslint-utils/",\
  609. "packageDependencies": [\
  610. ["@eslint-community/eslint-utils", "virtual:7e84babe85e6b058f29b2789822aea4bf3e34b48391f8eba05629d50500f4f2dfbe6628418745cffc770a77f74f121288626b69dd676f57de93d3ca5c7553ce6#npm:4.4.0"],\
  611. ["@types/eslint", null],\
  612. ["eslint", "npm:8.55.0"],\
  613. ["eslint-visitor-keys", "npm:3.4.3"]\
  614. ],\
  615. "packagePeers": [\
  616. "@types/eslint",\
  617. "eslint"\
  618. ],\
  619. "linkType": "HARD"\
  620. }]\
  621. ]],\
  622. ["@eslint-community/regexpp", [\
  623. ["npm:4.10.0", {\
  624. "packageLocation": "./.yarn/cache/@eslint-community-regexpp-npm-4.10.0-6bfb984c81-2a6e345429.zip/node_modules/@eslint-community/regexpp/",\
  625. "packageDependencies": [\
  626. ["@eslint-community/regexpp", "npm:4.10.0"]\
  627. ],\
  628. "linkType": "HARD"\
  629. }]\
  630. ]],\
  631. ["@eslint/eslintrc", [\
  632. ["npm:2.1.4", {\
  633. "packageLocation": "./.yarn/cache/@eslint-eslintrc-npm-2.1.4-1ff4b5f908-10957c7592.zip/node_modules/@eslint/eslintrc/",\
  634. "packageDependencies": [\
  635. ["@eslint/eslintrc", "npm:2.1.4"],\
  636. ["ajv", "npm:6.12.6"],\
  637. ["debug", "virtual:1ff4b5f90832ba0a9c93ba1223af226e44ba70c1126a3740d93562b97bc36544e896a5e95908196f7458713e6a6089a34bfc67362fc6df7fa093bd06c878be47#npm:4.3.4"],\
  638. ["espree", "npm:9.6.1"],\
  639. ["globals", "npm:13.23.0"],\
  640. ["ignore", "npm:5.3.0"],\
  641. ["import-fresh", "npm:3.3.0"],\
  642. ["js-yaml", "npm:4.1.0"],\
  643. ["minimatch", "npm:3.1.2"],\
  644. ["strip-json-comments", "npm:3.1.1"]\
  645. ],\
  646. "linkType": "HARD"\
  647. }]\
  648. ]],\
  649. ["@eslint/js", [\
  650. ["npm:8.55.0", {\
  651. "packageLocation": "./.yarn/cache/@eslint-js-npm-8.55.0-ec5eb0638e-fa33ef619f.zip/node_modules/@eslint/js/",\
  652. "packageDependencies": [\
  653. ["@eslint/js", "npm:8.55.0"]\
  654. ],\
  655. "linkType": "HARD"\
  656. }]\
  657. ]],\
  658. ["@humanwhocodes/config-array", [\
  659. ["npm:0.11.13", {\
  660. "packageLocation": "./.yarn/cache/@humanwhocodes-config-array-npm-0.11.13-12314014f2-f8ea57b0d7.zip/node_modules/@humanwhocodes/config-array/",\
  661. "packageDependencies": [\
  662. ["@humanwhocodes/config-array", "npm:0.11.13"],\
  663. ["@humanwhocodes/object-schema", "npm:2.0.1"],\
  664. ["debug", "virtual:1ff4b5f90832ba0a9c93ba1223af226e44ba70c1126a3740d93562b97bc36544e896a5e95908196f7458713e6a6089a34bfc67362fc6df7fa093bd06c878be47#npm:4.3.4"],\
  665. ["minimatch", "npm:3.1.2"]\
  666. ],\
  667. "linkType": "HARD"\
  668. }]\
  669. ]],\
  670. ["@humanwhocodes/module-importer", [\
  671. ["npm:1.0.1", {\
  672. "packageLocation": "./.yarn/cache/@humanwhocodes-module-importer-npm-1.0.1-9d07ed2e4a-0fd22007db.zip/node_modules/@humanwhocodes/module-importer/",\
  673. "packageDependencies": [\
  674. ["@humanwhocodes/module-importer", "npm:1.0.1"]\
  675. ],\
  676. "linkType": "HARD"\
  677. }]\
  678. ]],\
  679. ["@humanwhocodes/object-schema", [\
  680. ["npm:2.0.1", {\
  681. "packageLocation": "./.yarn/cache/@humanwhocodes-object-schema-npm-2.0.1-c23364bbfc-24929487b1.zip/node_modules/@humanwhocodes/object-schema/",\
  682. "packageDependencies": [\
  683. ["@humanwhocodes/object-schema", "npm:2.0.1"]\
  684. ],\
  685. "linkType": "HARD"\
  686. }]\
  687. ]],\
  688. ["@isaacs/cliui", [\
  689. ["npm:8.0.2", {\
  690. "packageLocation": "./.yarn/cache/@isaacs-cliui-npm-8.0.2-f4364666d5-4a473b9b32.zip/node_modules/@isaacs/cliui/",\
  691. "packageDependencies": [\
  692. ["@isaacs/cliui", "npm:8.0.2"],\
  693. ["string-width", "npm:5.1.2"],\
  694. ["string-width-cjs", [\
  695. "string-width",\
  696. "npm:4.2.3"\
  697. ]],\
  698. ["strip-ansi", "npm:7.1.0"],\
  699. ["strip-ansi-cjs", [\
  700. "strip-ansi",\
  701. "npm:6.0.1"\
  702. ]],\
  703. ["wrap-ansi", "npm:8.1.0"],\
  704. ["wrap-ansi-cjs", [\
  705. "wrap-ansi",\
  706. "npm:7.0.0"\
  707. ]]\
  708. ],\
  709. "linkType": "HARD"\
  710. }]\
  711. ]],\
  712. ["@jridgewell/gen-mapping", [\
  713. ["npm:0.3.3", {\
  714. "packageLocation": "./.yarn/cache/@jridgewell-gen-mapping-npm-0.3.3-1815eba94c-4a74944bd3.zip/node_modules/@jridgewell/gen-mapping/",\
  715. "packageDependencies": [\
  716. ["@jridgewell/gen-mapping", "npm:0.3.3"],\
  717. ["@jridgewell/set-array", "npm:1.1.2"],\
  718. ["@jridgewell/sourcemap-codec", "npm:1.4.15"],\
  719. ["@jridgewell/trace-mapping", "npm:0.3.20"]\
  720. ],\
  721. "linkType": "HARD"\
  722. }]\
  723. ]],\
  724. ["@jridgewell/resolve-uri", [\
  725. ["npm:3.1.1", {\
  726. "packageLocation": "./.yarn/cache/@jridgewell-resolve-uri-npm-3.1.1-aa2de3f210-f5b441fe79.zip/node_modules/@jridgewell/resolve-uri/",\
  727. "packageDependencies": [\
  728. ["@jridgewell/resolve-uri", "npm:3.1.1"]\
  729. ],\
  730. "linkType": "HARD"\
  731. }]\
  732. ]],\
  733. ["@jridgewell/set-array", [\
  734. ["npm:1.1.2", {\
  735. "packageLocation": "./.yarn/cache/@jridgewell-set-array-npm-1.1.2-45b82d7fb6-69a84d5980.zip/node_modules/@jridgewell/set-array/",\
  736. "packageDependencies": [\
  737. ["@jridgewell/set-array", "npm:1.1.2"]\
  738. ],\
  739. "linkType": "HARD"\
  740. }]\
  741. ]],\
  742. ["@jridgewell/sourcemap-codec", [\
  743. ["npm:1.4.15", {\
  744. "packageLocation": "./.yarn/cache/@jridgewell-sourcemap-codec-npm-1.4.15-a055fb62cf-b881c7e503.zip/node_modules/@jridgewell/sourcemap-codec/",\
  745. "packageDependencies": [\
  746. ["@jridgewell/sourcemap-codec", "npm:1.4.15"]\
  747. ],\
  748. "linkType": "HARD"\
  749. }]\
  750. ]],\
  751. ["@jridgewell/trace-mapping", [\
  752. ["npm:0.3.20", {\
  753. "packageLocation": "./.yarn/cache/@jridgewell-trace-mapping-npm-0.3.20-d90f282910-cd1a735313.zip/node_modules/@jridgewell/trace-mapping/",\
  754. "packageDependencies": [\
  755. ["@jridgewell/trace-mapping", "npm:0.3.20"],\
  756. ["@jridgewell/resolve-uri", "npm:3.1.1"],\
  757. ["@jridgewell/sourcemap-codec", "npm:1.4.15"]\
  758. ],\
  759. "linkType": "HARD"\
  760. }]\
  761. ]],\
  762. ["@nodelib/fs.scandir", [\
  763. ["npm:2.1.5", {\
  764. "packageLocation": "./.yarn/cache/@nodelib-fs.scandir-npm-2.1.5-89c67370dd-a970d595bd.zip/node_modules/@nodelib/fs.scandir/",\
  765. "packageDependencies": [\
  766. ["@nodelib/fs.scandir", "npm:2.1.5"],\
  767. ["@nodelib/fs.stat", "npm:2.0.5"],\
  768. ["run-parallel", "npm:1.2.0"]\
  769. ],\
  770. "linkType": "HARD"\
  771. }]\
  772. ]],\
  773. ["@nodelib/fs.stat", [\
  774. ["npm:2.0.5", {\
  775. "packageLocation": "./.yarn/cache/@nodelib-fs.stat-npm-2.0.5-01f4dd3030-012480b5ca.zip/node_modules/@nodelib/fs.stat/",\
  776. "packageDependencies": [\
  777. ["@nodelib/fs.stat", "npm:2.0.5"]\
  778. ],\
  779. "linkType": "HARD"\
  780. }]\
  781. ]],\
  782. ["@nodelib/fs.walk", [\
  783. ["npm:1.2.8", {\
  784. "packageLocation": "./.yarn/cache/@nodelib-fs.walk-npm-1.2.8-b4a89da548-190c643f15.zip/node_modules/@nodelib/fs.walk/",\
  785. "packageDependencies": [\
  786. ["@nodelib/fs.walk", "npm:1.2.8"],\
  787. ["@nodelib/fs.scandir", "npm:2.1.5"],\
  788. ["fastq", "npm:1.15.0"]\
  789. ],\
  790. "linkType": "HARD"\
  791. }]\
  792. ]],\
  793. ["@npmcli/agent", [\
  794. ["npm:2.2.0", {\
  795. "packageLocation": "./.yarn/cache/@npmcli-agent-npm-2.2.0-cf04e8a830-3b25312edb.zip/node_modules/@npmcli/agent/",\
  796. "packageDependencies": [\
  797. ["@npmcli/agent", "npm:2.2.0"],\
  798. ["agent-base", "npm:7.1.0"],\
  799. ["http-proxy-agent", "npm:7.0.0"],\
  800. ["https-proxy-agent", "npm:7.0.2"],\
  801. ["lru-cache", "npm:10.1.0"],\
  802. ["socks-proxy-agent", "npm:8.0.2"]\
  803. ],\
  804. "linkType": "HARD"\
  805. }]\
  806. ]],\
  807. ["@npmcli/fs", [\
  808. ["npm:3.1.0", {\
  809. "packageLocation": "./.yarn/cache/@npmcli-fs-npm-3.1.0-0844a57978-a50a6818de.zip/node_modules/@npmcli/fs/",\
  810. "packageDependencies": [\
  811. ["@npmcli/fs", "npm:3.1.0"],\
  812. ["semver", "npm:7.5.4"]\
  813. ],\
  814. "linkType": "HARD"\
  815. }]\
  816. ]],\
  817. ["@pkgjs/parseargs", [\
  818. ["npm:0.11.0", {\
  819. "packageLocation": "./.yarn/cache/@pkgjs-parseargs-npm-0.11.0-cd2a3fe948-6ad6a00fc4.zip/node_modules/@pkgjs/parseargs/",\
  820. "packageDependencies": [\
  821. ["@pkgjs/parseargs", "npm:0.11.0"]\
  822. ],\
  823. "linkType": "HARD"\
  824. }]\
  825. ]],\
  826. ["@popperjs/core", [\
  827. ["npm:2.11.8", {\
  828. "packageLocation": "./.yarn/cache/@popperjs-core-npm-2.11.8-f1692e11a0-e5c69fdebf.zip/node_modules/@popperjs/core/",\
  829. "packageDependencies": [\
  830. ["@popperjs/core", "npm:2.11.8"]\
  831. ],\
  832. "linkType": "HARD"\
  833. }]\
  834. ]],\
  835. ["@remix-run/router", [\
  836. ["npm:1.13.1", {\
  837. "packageLocation": "./.yarn/cache/@remix-run-router-npm-1.13.1-e6dea27d03-cebbf0a8cf.zip/node_modules/@remix-run/router/",\
  838. "packageDependencies": [\
  839. ["@remix-run/router", "npm:1.13.1"]\
  840. ],\
  841. "linkType": "HARD"\
  842. }]\
  843. ]],\
  844. ["@rollup/rollup-android-arm-eabi", [\
  845. ["npm:4.6.1", {\
  846. "packageLocation": "./.yarn/unplugged/@rollup-rollup-android-arm-eabi-npm-4.6.1-fbe3158bf3/node_modules/@rollup/rollup-android-arm-eabi/",\
  847. "packageDependencies": [\
  848. ["@rollup/rollup-android-arm-eabi", "npm:4.6.1"]\
  849. ],\
  850. "linkType": "HARD"\
  851. }]\
  852. ]],\
  853. ["@rollup/rollup-android-arm64", [\
  854. ["npm:4.6.1", {\
  855. "packageLocation": "./.yarn/unplugged/@rollup-rollup-android-arm64-npm-4.6.1-7f2314e6a5/node_modules/@rollup/rollup-android-arm64/",\
  856. "packageDependencies": [\
  857. ["@rollup/rollup-android-arm64", "npm:4.6.1"]\
  858. ],\
  859. "linkType": "HARD"\
  860. }]\
  861. ]],\
  862. ["@rollup/rollup-darwin-arm64", [\
  863. ["npm:4.6.1", {\
  864. "packageLocation": "./.yarn/unplugged/@rollup-rollup-darwin-arm64-npm-4.6.1-4e41987212/node_modules/@rollup/rollup-darwin-arm64/",\
  865. "packageDependencies": [\
  866. ["@rollup/rollup-darwin-arm64", "npm:4.6.1"]\
  867. ],\
  868. "linkType": "HARD"\
  869. }]\
  870. ]],\
  871. ["@rollup/rollup-darwin-x64", [\
  872. ["npm:4.6.1", {\
  873. "packageLocation": "./.yarn/unplugged/@rollup-rollup-darwin-x64-npm-4.6.1-73992302c1/node_modules/@rollup/rollup-darwin-x64/",\
  874. "packageDependencies": [\
  875. ["@rollup/rollup-darwin-x64", "npm:4.6.1"]\
  876. ],\
  877. "linkType": "HARD"\
  878. }]\
  879. ]],\
  880. ["@rollup/rollup-linux-arm-gnueabihf", [\
  881. ["npm:4.6.1", {\
  882. "packageLocation": "./.yarn/unplugged/@rollup-rollup-linux-arm-gnueabihf-npm-4.6.1-538b8bc0ad/node_modules/@rollup/rollup-linux-arm-gnueabihf/",\
  883. "packageDependencies": [\
  884. ["@rollup/rollup-linux-arm-gnueabihf", "npm:4.6.1"]\
  885. ],\
  886. "linkType": "HARD"\
  887. }]\
  888. ]],\
  889. ["@rollup/rollup-linux-arm64-gnu", [\
  890. ["npm:4.6.1", {\
  891. "packageLocation": "./.yarn/unplugged/@rollup-rollup-linux-arm64-gnu-npm-4.6.1-1f6c675d43/node_modules/@rollup/rollup-linux-arm64-gnu/",\
  892. "packageDependencies": [\
  893. ["@rollup/rollup-linux-arm64-gnu", "npm:4.6.1"]\
  894. ],\
  895. "linkType": "HARD"\
  896. }]\
  897. ]],\
  898. ["@rollup/rollup-linux-arm64-musl", [\
  899. ["npm:4.6.1", {\
  900. "packageLocation": "./.yarn/unplugged/@rollup-rollup-linux-arm64-musl-npm-4.6.1-6dfb17274d/node_modules/@rollup/rollup-linux-arm64-musl/",\
  901. "packageDependencies": [\
  902. ["@rollup/rollup-linux-arm64-musl", "npm:4.6.1"]\
  903. ],\
  904. "linkType": "HARD"\
  905. }]\
  906. ]],\
  907. ["@rollup/rollup-linux-x64-gnu", [\
  908. ["npm:4.6.1", {\
  909. "packageLocation": "./.yarn/unplugged/@rollup-rollup-linux-x64-gnu-npm-4.6.1-dd3309cd92/node_modules/@rollup/rollup-linux-x64-gnu/",\
  910. "packageDependencies": [\
  911. ["@rollup/rollup-linux-x64-gnu", "npm:4.6.1"]\
  912. ],\
  913. "linkType": "HARD"\
  914. }]\
  915. ]],\
  916. ["@rollup/rollup-linux-x64-musl", [\
  917. ["npm:4.6.1", {\
  918. "packageLocation": "./.yarn/unplugged/@rollup-rollup-linux-x64-musl-npm-4.6.1-cfcfeca557/node_modules/@rollup/rollup-linux-x64-musl/",\
  919. "packageDependencies": [\
  920. ["@rollup/rollup-linux-x64-musl", "npm:4.6.1"]\
  921. ],\
  922. "linkType": "HARD"\
  923. }]\
  924. ]],\
  925. ["@rollup/rollup-win32-arm64-msvc", [\
  926. ["npm:4.6.1", {\
  927. "packageLocation": "./.yarn/unplugged/@rollup-rollup-win32-arm64-msvc-npm-4.6.1-a591cfd356/node_modules/@rollup/rollup-win32-arm64-msvc/",\
  928. "packageDependencies": [\
  929. ["@rollup/rollup-win32-arm64-msvc", "npm:4.6.1"]\
  930. ],\
  931. "linkType": "HARD"\
  932. }]\
  933. ]],\
  934. ["@rollup/rollup-win32-ia32-msvc", [\
  935. ["npm:4.6.1", {\
  936. "packageLocation": "./.yarn/unplugged/@rollup-rollup-win32-ia32-msvc-npm-4.6.1-4d8055975f/node_modules/@rollup/rollup-win32-ia32-msvc/",\
  937. "packageDependencies": [\
  938. ["@rollup/rollup-win32-ia32-msvc", "npm:4.6.1"]\
  939. ],\
  940. "linkType": "HARD"\
  941. }]\
  942. ]],\
  943. ["@rollup/rollup-win32-x64-msvc", [\
  944. ["npm:4.6.1", {\
  945. "packageLocation": "./.yarn/unplugged/@rollup-rollup-win32-x64-msvc-npm-4.6.1-a6bd23ed7e/node_modules/@rollup/rollup-win32-x64-msvc/",\
  946. "packageDependencies": [\
  947. ["@rollup/rollup-win32-x64-msvc", "npm:4.6.1"]\
  948. ],\
  949. "linkType": "HARD"\
  950. }]\
  951. ]],\
  952. ["@types/babel__core", [\
  953. ["npm:7.20.5", {\
  954. "packageLocation": "./.yarn/cache/@types-babel__core-npm-7.20.5-4d95f75eab-a3226f7930.zip/node_modules/@types/babel__core/",\
  955. "packageDependencies": [\
  956. ["@types/babel__core", "npm:7.20.5"],\
  957. ["@babel/parser", "npm:7.23.5"],\
  958. ["@babel/types", "npm:7.23.5"],\
  959. ["@types/babel__generator", "npm:7.6.7"],\
  960. ["@types/babel__template", "npm:7.4.4"],\
  961. ["@types/babel__traverse", "npm:7.20.4"]\
  962. ],\
  963. "linkType": "HARD"\
  964. }]\
  965. ]],\
  966. ["@types/babel__generator", [\
  967. ["npm:7.6.7", {\
  968. "packageLocation": "./.yarn/cache/@types-babel__generator-npm-7.6.7-6cfe0afe44-03e96ea327.zip/node_modules/@types/babel__generator/",\
  969. "packageDependencies": [\
  970. ["@types/babel__generator", "npm:7.6.7"],\
  971. ["@babel/types", "npm:7.23.5"]\
  972. ],\
  973. "linkType": "HARD"\
  974. }]\
  975. ]],\
  976. ["@types/babel__template", [\
  977. ["npm:7.4.4", {\
  978. "packageLocation": "./.yarn/cache/@types-babel__template-npm-7.4.4-f34eba762c-d7a02d2a9b.zip/node_modules/@types/babel__template/",\
  979. "packageDependencies": [\
  980. ["@types/babel__template", "npm:7.4.4"],\
  981. ["@babel/parser", "npm:7.23.5"],\
  982. ["@babel/types", "npm:7.23.5"]\
  983. ],\
  984. "linkType": "HARD"\
  985. }]\
  986. ]],\
  987. ["@types/babel__traverse", [\
  988. ["npm:7.20.4", {\
  989. "packageLocation": "./.yarn/cache/@types-babel__traverse-npm-7.20.4-49941d89c4-f044ba80e0.zip/node_modules/@types/babel__traverse/",\
  990. "packageDependencies": [\
  991. ["@types/babel__traverse", "npm:7.20.4"],\
  992. ["@babel/types", "npm:7.23.5"]\
  993. ],\
  994. "linkType": "HARD"\
  995. }]\
  996. ]],\
  997. ["@types/prop-types", [\
  998. ["npm:15.7.11", {\
  999. "packageLocation": "./.yarn/cache/@types-prop-types-npm-15.7.11-a0a5a0025c-7519ff11d0.zip/node_modules/@types/prop-types/",\
  1000. "packageDependencies": [\
  1001. ["@types/prop-types", "npm:15.7.11"]\
  1002. ],\
  1003. "linkType": "HARD"\
  1004. }]\
  1005. ]],\
  1006. ["@types/react", [\
  1007. ["npm:18.2.42", {\
  1008. "packageLocation": "./.yarn/cache/@types-react-npm-18.2.42-88ab7806ab-d2019afdf4.zip/node_modules/@types/react/",\
  1009. "packageDependencies": [\
  1010. ["@types/react", "npm:18.2.42"],\
  1011. ["@types/prop-types", "npm:15.7.11"],\
  1012. ["@types/scheduler", "npm:0.16.8"],\
  1013. ["csstype", "npm:3.1.2"]\
  1014. ],\
  1015. "linkType": "HARD"\
  1016. }]\
  1017. ]],\
  1018. ["@types/react-dom", [\
  1019. ["npm:18.2.17", {\
  1020. "packageLocation": "./.yarn/cache/@types-react-dom-npm-18.2.17-d5475408ae-7a4e704ed4.zip/node_modules/@types/react-dom/",\
  1021. "packageDependencies": [\
  1022. ["@types/react-dom", "npm:18.2.17"],\
  1023. ["@types/react", "npm:18.2.42"]\
  1024. ],\
  1025. "linkType": "HARD"\
  1026. }]\
  1027. ]],\
  1028. ["@types/scheduler", [\
  1029. ["npm:0.16.8", {\
  1030. "packageLocation": "./.yarn/cache/@types-scheduler-npm-0.16.8-303819b439-6c091b096d.zip/node_modules/@types/scheduler/",\
  1031. "packageDependencies": [\
  1032. ["@types/scheduler", "npm:0.16.8"]\
  1033. ],\
  1034. "linkType": "HARD"\
  1035. }]\
  1036. ]],\
  1037. ["@types/sortablejs", [\
  1038. ["npm:1.15.7", {\
  1039. "packageLocation": "./.yarn/cache/@types-sortablejs-npm-1.15.7-edb3d3235c-a62805c789.zip/node_modules/@types/sortablejs/",\
  1040. "packageDependencies": [\
  1041. ["@types/sortablejs", "npm:1.15.7"]\
  1042. ],\
  1043. "linkType": "HARD"\
  1044. }]\
  1045. ]],\
  1046. ["@types/tinycolor2", [\
  1047. ["npm:1.4.6", {\
  1048. "packageLocation": "./.yarn/cache/@types-tinycolor2-npm-1.4.6-62a2039a99-50179851b3.zip/node_modules/@types/tinycolor2/",\
  1049. "packageDependencies": [\
  1050. ["@types/tinycolor2", "npm:1.4.6"]\
  1051. ],\
  1052. "linkType": "HARD"\
  1053. }]\
  1054. ]],\
  1055. ["@types/validator", [\
  1056. ["npm:13.11.7", {\
  1057. "packageLocation": "./.yarn/cache/@types-validator-npm-13.11.7-1eda8f8948-975ad31728.zip/node_modules/@types/validator/",\
  1058. "packageDependencies": [\
  1059. ["@types/validator", "npm:13.11.7"]\
  1060. ],\
  1061. "linkType": "HARD"\
  1062. }]\
  1063. ]],\
  1064. ["@ungap/structured-clone", [\
  1065. ["npm:1.2.0", {\
  1066. "packageLocation": "./.yarn/cache/@ungap-structured-clone-npm-1.2.0-648f0b82e0-4f656b7b46.zip/node_modules/@ungap/structured-clone/",\
  1067. "packageDependencies": [\
  1068. ["@ungap/structured-clone", "npm:1.2.0"]\
  1069. ],\
  1070. "linkType": "HARD"\
  1071. }]\
  1072. ]],\
  1073. ["@vitejs/plugin-react", [\
  1074. ["npm:4.2.1", {\
  1075. "packageLocation": "./.yarn/cache/@vitejs-plugin-react-npm-4.2.1-8b9705c544-08d227d27f.zip/node_modules/@vitejs/plugin-react/",\
  1076. "packageDependencies": [\
  1077. ["@vitejs/plugin-react", "npm:4.2.1"]\
  1078. ],\
  1079. "linkType": "SOFT"\
  1080. }],\
  1081. ["virtual:886e61fa7e6c7b2ced7980b68a5ec81e7559ed62a5e4bd0d20a3077c159398b6fcf9f9fce97484d3befe2143009a06709cd8e96ea637527ac9f0813dcc5f7523#npm:4.2.1", {\
  1082. "packageLocation": "./.yarn/__virtual__/@vitejs-plugin-react-virtual-8d3027dd4f/0/cache/@vitejs-plugin-react-npm-4.2.1-8b9705c544-08d227d27f.zip/node_modules/@vitejs/plugin-react/",\
  1083. "packageDependencies": [\
  1084. ["@vitejs/plugin-react", "virtual:886e61fa7e6c7b2ced7980b68a5ec81e7559ed62a5e4bd0d20a3077c159398b6fcf9f9fce97484d3befe2143009a06709cd8e96ea637527ac9f0813dcc5f7523#npm:4.2.1"],\
  1085. ["@babel/core", "npm:7.23.5"],\
  1086. ["@babel/plugin-transform-react-jsx-self", "virtual:8d3027dd4f5aa4b8255cbb871523e1e99e82e04cf1807d5bbd15ed7cf25e15ed653fb1bc480c6a66feab5ebbbbd8a45e90700109959f48eb06a56449f178b365#npm:7.23.3"],\
  1087. ["@babel/plugin-transform-react-jsx-source", "virtual:8d3027dd4f5aa4b8255cbb871523e1e99e82e04cf1807d5bbd15ed7cf25e15ed653fb1bc480c6a66feab5ebbbbd8a45e90700109959f48eb06a56449f178b365#npm:7.23.3"],\
  1088. ["@types/babel__core", "npm:7.20.5"],\
  1089. ["@types/vite", null],\
  1090. ["react-refresh", "npm:0.14.0"],\
  1091. ["vite", "virtual:886e61fa7e6c7b2ced7980b68a5ec81e7559ed62a5e4bd0d20a3077c159398b6fcf9f9fce97484d3befe2143009a06709cd8e96ea637527ac9f0813dcc5f7523#npm:5.0.5"]\
  1092. ],\
  1093. "packagePeers": [\
  1094. "@types/vite",\
  1095. "vite"\
  1096. ],\
  1097. "linkType": "HARD"\
  1098. }]\
  1099. ]],\
  1100. ["abbrev", [\
  1101. ["npm:2.0.0", {\
  1102. "packageLocation": "./.yarn/cache/abbrev-npm-2.0.0-0eb38a17e5-0e994ad2aa.zip/node_modules/abbrev/",\
  1103. "packageDependencies": [\
  1104. ["abbrev", "npm:2.0.0"]\
  1105. ],\
  1106. "linkType": "HARD"\
  1107. }]\
  1108. ]],\
  1109. ["acorn", [\
  1110. ["npm:8.11.2", {\
  1111. "packageLocation": "./.yarn/cache/acorn-npm-8.11.2-a470f49bb6-8184504086.zip/node_modules/acorn/",\
  1112. "packageDependencies": [\
  1113. ["acorn", "npm:8.11.2"]\
  1114. ],\
  1115. "linkType": "HARD"\
  1116. }]\
  1117. ]],\
  1118. ["acorn-jsx", [\
  1119. ["npm:5.3.2", {\
  1120. "packageLocation": "./.yarn/cache/acorn-jsx-npm-5.3.2-d7594599ea-c3d3b2a89c.zip/node_modules/acorn-jsx/",\
  1121. "packageDependencies": [\
  1122. ["acorn-jsx", "npm:5.3.2"]\
  1123. ],\
  1124. "linkType": "SOFT"\
  1125. }],\
  1126. ["virtual:a50722a5a9326b6a5f12350c494c4db3aa0f4caeac45e3e9e5fe071da20014ecfe738fe2ebe2c9c98abae81a4ea86b42f56d776b3bd5ec37f9ad3670c242b242#npm:5.3.2", {\
  1127. "packageLocation": "./.yarn/__virtual__/acorn-jsx-virtual-834321b202/0/cache/acorn-jsx-npm-5.3.2-d7594599ea-c3d3b2a89c.zip/node_modules/acorn-jsx/",\
  1128. "packageDependencies": [\
  1129. ["acorn-jsx", "virtual:a50722a5a9326b6a5f12350c494c4db3aa0f4caeac45e3e9e5fe071da20014ecfe738fe2ebe2c9c98abae81a4ea86b42f56d776b3bd5ec37f9ad3670c242b242#npm:5.3.2"],\
  1130. ["@types/acorn", null],\
  1131. ["acorn", "npm:8.11.2"]\
  1132. ],\
  1133. "packagePeers": [\
  1134. "@types/acorn",\
  1135. "acorn"\
  1136. ],\
  1137. "linkType": "HARD"\
  1138. }]\
  1139. ]],\
  1140. ["agent-base", [\
  1141. ["npm:7.1.0", {\
  1142. "packageLocation": "./.yarn/cache/agent-base-npm-7.1.0-4b12ba5111-f7828f9914.zip/node_modules/agent-base/",\
  1143. "packageDependencies": [\
  1144. ["agent-base", "npm:7.1.0"],\
  1145. ["debug", "virtual:1ff4b5f90832ba0a9c93ba1223af226e44ba70c1126a3740d93562b97bc36544e896a5e95908196f7458713e6a6089a34bfc67362fc6df7fa093bd06c878be47#npm:4.3.4"]\
  1146. ],\
  1147. "linkType": "HARD"\
  1148. }]\
  1149. ]],\
  1150. ["aggregate-error", [\
  1151. ["npm:3.1.0", {\
  1152. "packageLocation": "./.yarn/cache/aggregate-error-npm-3.1.0-415a406f4e-1101a33f21.zip/node_modules/aggregate-error/",\
  1153. "packageDependencies": [\
  1154. ["aggregate-error", "npm:3.1.0"],\
  1155. ["clean-stack", "npm:2.2.0"],\
  1156. ["indent-string", "npm:4.0.0"]\
  1157. ],\
  1158. "linkType": "HARD"\
  1159. }]\
  1160. ]],\
  1161. ["ajv", [\
  1162. ["npm:6.12.6", {\
  1163. "packageLocation": "./.yarn/cache/ajv-npm-6.12.6-4b5105e2b2-874972efe5.zip/node_modules/ajv/",\
  1164. "packageDependencies": [\
  1165. ["ajv", "npm:6.12.6"],\
  1166. ["fast-deep-equal", "npm:3.1.3"],\
  1167. ["fast-json-stable-stringify", "npm:2.1.0"],\
  1168. ["json-schema-traverse", "npm:0.4.1"],\
  1169. ["uri-js", "npm:4.4.1"]\
  1170. ],\
  1171. "linkType": "HARD"\
  1172. }]\
  1173. ]],\
  1174. ["ansi-regex", [\
  1175. ["npm:5.0.1", {\
  1176. "packageLocation": "./.yarn/cache/ansi-regex-npm-5.0.1-c963a48615-2aa4bb54ca.zip/node_modules/ansi-regex/",\
  1177. "packageDependencies": [\
  1178. ["ansi-regex", "npm:5.0.1"]\
  1179. ],\
  1180. "linkType": "HARD"\
  1181. }],\
  1182. ["npm:6.0.1", {\
  1183. "packageLocation": "./.yarn/cache/ansi-regex-npm-6.0.1-8d663a607d-1ff8b7667c.zip/node_modules/ansi-regex/",\
  1184. "packageDependencies": [\
  1185. ["ansi-regex", "npm:6.0.1"]\
  1186. ],\
  1187. "linkType": "HARD"\
  1188. }]\
  1189. ]],\
  1190. ["ansi-styles", [\
  1191. ["npm:3.2.1", {\
  1192. "packageLocation": "./.yarn/cache/ansi-styles-npm-3.2.1-8cb8107983-d85ade01c1.zip/node_modules/ansi-styles/",\
  1193. "packageDependencies": [\
  1194. ["ansi-styles", "npm:3.2.1"],\
  1195. ["color-convert", "npm:1.9.3"]\
  1196. ],\
  1197. "linkType": "HARD"\
  1198. }],\
  1199. ["npm:4.3.0", {\
  1200. "packageLocation": "./.yarn/cache/ansi-styles-npm-4.3.0-245c7d42c7-513b44c3b2.zip/node_modules/ansi-styles/",\
  1201. "packageDependencies": [\
  1202. ["ansi-styles", "npm:4.3.0"],\
  1203. ["color-convert", "npm:2.0.1"]\
  1204. ],\
  1205. "linkType": "HARD"\
  1206. }],\
  1207. ["npm:6.2.1", {\
  1208. "packageLocation": "./.yarn/cache/ansi-styles-npm-6.2.1-d43647018c-ef940f2f0c.zip/node_modules/ansi-styles/",\
  1209. "packageDependencies": [\
  1210. ["ansi-styles", "npm:6.2.1"]\
  1211. ],\
  1212. "linkType": "HARD"\
  1213. }]\
  1214. ]],\
  1215. ["argparse", [\
  1216. ["npm:2.0.1", {\
  1217. "packageLocation": "./.yarn/cache/argparse-npm-2.0.1-faff7999e6-83644b5649.zip/node_modules/argparse/",\
  1218. "packageDependencies": [\
  1219. ["argparse", "npm:2.0.1"]\
  1220. ],\
  1221. "linkType": "HARD"\
  1222. }]\
  1223. ]],\
  1224. ["array-buffer-byte-length", [\
  1225. ["npm:1.0.0", {\
  1226. "packageLocation": "./.yarn/cache/array-buffer-byte-length-npm-1.0.0-331671f28a-044e101ce1.zip/node_modules/array-buffer-byte-length/",\
  1227. "packageDependencies": [\
  1228. ["array-buffer-byte-length", "npm:1.0.0"],\
  1229. ["call-bind", "npm:1.0.5"],\
  1230. ["is-array-buffer", "npm:3.0.2"]\
  1231. ],\
  1232. "linkType": "HARD"\
  1233. }]\
  1234. ]],\
  1235. ["array-includes", [\
  1236. ["npm:3.1.7", {\
  1237. "packageLocation": "./.yarn/cache/array-includes-npm-3.1.7-d32a5ee179-06f9e4598f.zip/node_modules/array-includes/",\
  1238. "packageDependencies": [\
  1239. ["array-includes", "npm:3.1.7"],\
  1240. ["call-bind", "npm:1.0.5"],\
  1241. ["define-properties", "npm:1.2.1"],\
  1242. ["es-abstract", "npm:1.22.3"],\
  1243. ["get-intrinsic", "npm:1.2.2"],\
  1244. ["is-string", "npm:1.0.7"]\
  1245. ],\
  1246. "linkType": "HARD"\
  1247. }]\
  1248. ]],\
  1249. ["array.prototype.flat", [\
  1250. ["npm:1.3.2", {\
  1251. "packageLocation": "./.yarn/cache/array.prototype.flat-npm-1.3.2-350729f7f4-5d6b4bf102.zip/node_modules/array.prototype.flat/",\
  1252. "packageDependencies": [\
  1253. ["array.prototype.flat", "npm:1.3.2"],\
  1254. ["call-bind", "npm:1.0.5"],\
  1255. ["define-properties", "npm:1.2.1"],\
  1256. ["es-abstract", "npm:1.22.3"],\
  1257. ["es-shim-unscopables", "npm:1.0.2"]\
  1258. ],\
  1259. "linkType": "HARD"\
  1260. }]\
  1261. ]],\
  1262. ["array.prototype.flatmap", [\
  1263. ["npm:1.3.2", {\
  1264. "packageLocation": "./.yarn/cache/array.prototype.flatmap-npm-1.3.2-5c6a4af226-ce09fe21dc.zip/node_modules/array.prototype.flatmap/",\
  1265. "packageDependencies": [\
  1266. ["array.prototype.flatmap", "npm:1.3.2"],\
  1267. ["call-bind", "npm:1.0.5"],\
  1268. ["define-properties", "npm:1.2.1"],\
  1269. ["es-abstract", "npm:1.22.3"],\
  1270. ["es-shim-unscopables", "npm:1.0.2"]\
  1271. ],\
  1272. "linkType": "HARD"\
  1273. }]\
  1274. ]],\
  1275. ["array.prototype.tosorted", [\
  1276. ["npm:1.1.2", {\
  1277. "packageLocation": "./.yarn/cache/array.prototype.tosorted-npm-1.1.2-9002e62ed8-3607a7d6b1.zip/node_modules/array.prototype.tosorted/",\
  1278. "packageDependencies": [\
  1279. ["array.prototype.tosorted", "npm:1.1.2"],\
  1280. ["call-bind", "npm:1.0.5"],\
  1281. ["define-properties", "npm:1.2.1"],\
  1282. ["es-abstract", "npm:1.22.3"],\
  1283. ["es-shim-unscopables", "npm:1.0.2"],\
  1284. ["get-intrinsic", "npm:1.2.2"]\
  1285. ],\
  1286. "linkType": "HARD"\
  1287. }]\
  1288. ]],\
  1289. ["arraybuffer.prototype.slice", [\
  1290. ["npm:1.0.2", {\
  1291. "packageLocation": "./.yarn/cache/arraybuffer.prototype.slice-npm-1.0.2-4eda52ad8c-c200faf437.zip/node_modules/arraybuffer.prototype.slice/",\
  1292. "packageDependencies": [\
  1293. ["arraybuffer.prototype.slice", "npm:1.0.2"],\
  1294. ["array-buffer-byte-length", "npm:1.0.0"],\
  1295. ["call-bind", "npm:1.0.5"],\
  1296. ["define-properties", "npm:1.2.1"],\
  1297. ["es-abstract", "npm:1.22.3"],\
  1298. ["get-intrinsic", "npm:1.2.2"],\
  1299. ["is-array-buffer", "npm:3.0.2"],\
  1300. ["is-shared-array-buffer", "npm:1.0.2"]\
  1301. ],\
  1302. "linkType": "HARD"\
  1303. }]\
  1304. ]],\
  1305. ["asynciterator.prototype", [\
  1306. ["npm:1.0.0", {\
  1307. "packageLocation": "./.yarn/cache/asynciterator.prototype-npm-1.0.0-72b8ba3fa4-e8ebfd9493.zip/node_modules/asynciterator.prototype/",\
  1308. "packageDependencies": [\
  1309. ["asynciterator.prototype", "npm:1.0.0"],\
  1310. ["has-symbols", "npm:1.0.3"]\
  1311. ],\
  1312. "linkType": "HARD"\
  1313. }]\
  1314. ]],\
  1315. ["available-typed-arrays", [\
  1316. ["npm:1.0.5", {\
  1317. "packageLocation": "./.yarn/cache/available-typed-arrays-npm-1.0.5-88f321e4d3-20eb47b3ce.zip/node_modules/available-typed-arrays/",\
  1318. "packageDependencies": [\
  1319. ["available-typed-arrays", "npm:1.0.5"]\
  1320. ],\
  1321. "linkType": "HARD"\
  1322. }]\
  1323. ]],\
  1324. ["balanced-match", [\
  1325. ["npm:1.0.2", {\
  1326. "packageLocation": "./.yarn/cache/balanced-match-npm-1.0.2-a53c126459-9706c088a2.zip/node_modules/balanced-match/",\
  1327. "packageDependencies": [\
  1328. ["balanced-match", "npm:1.0.2"]\
  1329. ],\
  1330. "linkType": "HARD"\
  1331. }]\
  1332. ]],\
  1333. ["brace-expansion", [\
  1334. ["npm:1.1.11", {\
  1335. "packageLocation": "./.yarn/cache/brace-expansion-npm-1.1.11-fb95eb05ad-faf34a7bb0.zip/node_modules/brace-expansion/",\
  1336. "packageDependencies": [\
  1337. ["brace-expansion", "npm:1.1.11"],\
  1338. ["balanced-match", "npm:1.0.2"],\
  1339. ["concat-map", "npm:0.0.1"]\
  1340. ],\
  1341. "linkType": "HARD"\
  1342. }],\
  1343. ["npm:2.0.1", {\
  1344. "packageLocation": "./.yarn/cache/brace-expansion-npm-2.0.1-17aa2616f9-a61e7cd2e8.zip/node_modules/brace-expansion/",\
  1345. "packageDependencies": [\
  1346. ["brace-expansion", "npm:2.0.1"],\
  1347. ["balanced-match", "npm:1.0.2"]\
  1348. ],\
  1349. "linkType": "HARD"\
  1350. }]\
  1351. ]],\
  1352. ["browserslist", [\
  1353. ["npm:4.22.2", {\
  1354. "packageLocation": "./.yarn/cache/browserslist-npm-4.22.2-87e70d8021-33ddfcd914.zip/node_modules/browserslist/",\
  1355. "packageDependencies": [\
  1356. ["browserslist", "npm:4.22.2"],\
  1357. ["caniuse-lite", "npm:1.0.30001566"],\
  1358. ["electron-to-chromium", "npm:1.4.603"],\
  1359. ["node-releases", "npm:2.0.14"],\
  1360. ["update-browserslist-db", "virtual:87e70d802146e5a0e8f2a12b5ab64004040c6640441dba54229a7db766cb1b88edabd3d3c814ce33d6ba839c4e517b12e9b0a7febfca22ac2a64177042bf3ee6#npm:1.0.13"]\
  1361. ],\
  1362. "linkType": "HARD"\
  1363. }]\
  1364. ]],\
  1365. ["cacache", [\
  1366. ["npm:18.0.1", {\
  1367. "packageLocation": "./.yarn/cache/cacache-npm-18.0.1-11c6564db0-5a0b3b2ea4.zip/node_modules/cacache/",\
  1368. "packageDependencies": [\
  1369. ["cacache", "npm:18.0.1"],\
  1370. ["@npmcli/fs", "npm:3.1.0"],\
  1371. ["fs-minipass", "npm:3.0.3"],\
  1372. ["glob", "npm:10.3.10"],\
  1373. ["lru-cache", "npm:10.1.0"],\
  1374. ["minipass", "npm:7.0.4"],\
  1375. ["minipass-collect", "npm:2.0.1"],\
  1376. ["minipass-flush", "npm:1.0.5"],\
  1377. ["minipass-pipeline", "npm:1.2.4"],\
  1378. ["p-map", "npm:4.0.0"],\
  1379. ["ssri", "npm:10.0.5"],\
  1380. ["tar", "npm:6.2.0"],\
  1381. ["unique-filename", "npm:3.0.0"]\
  1382. ],\
  1383. "linkType": "HARD"\
  1384. }]\
  1385. ]],\
  1386. ["call-bind", [\
  1387. ["npm:1.0.5", {\
  1388. "packageLocation": "./.yarn/cache/call-bind-npm-1.0.5-65600fae47-449e83ecbd.zip/node_modules/call-bind/",\
  1389. "packageDependencies": [\
  1390. ["call-bind", "npm:1.0.5"],\
  1391. ["function-bind", "npm:1.1.2"],\
  1392. ["get-intrinsic", "npm:1.2.2"],\
  1393. ["set-function-length", "npm:1.1.1"]\
  1394. ],\
  1395. "linkType": "HARD"\
  1396. }]\
  1397. ]],\
  1398. ["callsites", [\
  1399. ["npm:3.1.0", {\
  1400. "packageLocation": "./.yarn/cache/callsites-npm-3.1.0-268f989910-072d17b6ab.zip/node_modules/callsites/",\
  1401. "packageDependencies": [\
  1402. ["callsites", "npm:3.1.0"]\
  1403. ],\
  1404. "linkType": "HARD"\
  1405. }]\
  1406. ]],\
  1407. ["caniuse-lite", [\
  1408. ["npm:1.0.30001566", {\
  1409. "packageLocation": "./.yarn/cache/caniuse-lite-npm-1.0.30001566-4f87887103-0f9084bf9f.zip/node_modules/caniuse-lite/",\
  1410. "packageDependencies": [\
  1411. ["caniuse-lite", "npm:1.0.30001566"]\
  1412. ],\
  1413. "linkType": "HARD"\
  1414. }]\
  1415. ]],\
  1416. ["chalk", [\
  1417. ["npm:2.4.2", {\
  1418. "packageLocation": "./.yarn/cache/chalk-npm-2.4.2-3ea16dd91e-ec3661d38f.zip/node_modules/chalk/",\
  1419. "packageDependencies": [\
  1420. ["chalk", "npm:2.4.2"],\
  1421. ["ansi-styles", "npm:3.2.1"],\
  1422. ["escape-string-regexp", "npm:1.0.5"],\
  1423. ["supports-color", "npm:5.5.0"]\
  1424. ],\
  1425. "linkType": "HARD"\
  1426. }],\
  1427. ["npm:4.1.2", {\
  1428. "packageLocation": "./.yarn/cache/chalk-npm-4.1.2-ba8b67ab80-fe75c9d5c7.zip/node_modules/chalk/",\
  1429. "packageDependencies": [\
  1430. ["chalk", "npm:4.1.2"],\
  1431. ["ansi-styles", "npm:4.3.0"],\
  1432. ["supports-color", "npm:7.2.0"]\
  1433. ],\
  1434. "linkType": "HARD"\
  1435. }]\
  1436. ]],\
  1437. ["chownr", [\
  1438. ["npm:2.0.0", {\
  1439. "packageLocation": "./.yarn/cache/chownr-npm-2.0.0-638f1c9c61-c57cf9dd07.zip/node_modules/chownr/",\
  1440. "packageDependencies": [\
  1441. ["chownr", "npm:2.0.0"]\
  1442. ],\
  1443. "linkType": "HARD"\
  1444. }]\
  1445. ]],\
  1446. ["classnames", [\
  1447. ["npm:2.3.2", {\
  1448. "packageLocation": "./.yarn/cache/classnames-npm-2.3.2-d2fdae468d-2c62199789.zip/node_modules/classnames/",\
  1449. "packageDependencies": [\
  1450. ["classnames", "npm:2.3.2"]\
  1451. ],\
  1452. "linkType": "HARD"\
  1453. }]\
  1454. ]],\
  1455. ["clean-stack", [\
  1456. ["npm:2.2.0", {\
  1457. "packageLocation": "./.yarn/cache/clean-stack-npm-2.2.0-a8ce435a5c-2ac8cd2b2f.zip/node_modules/clean-stack/",\
  1458. "packageDependencies": [\
  1459. ["clean-stack", "npm:2.2.0"]\
  1460. ],\
  1461. "linkType": "HARD"\
  1462. }]\
  1463. ]],\
  1464. ["color-convert", [\
  1465. ["npm:1.9.3", {\
  1466. "packageLocation": "./.yarn/cache/color-convert-npm-1.9.3-1fe690075e-fd7a64a17c.zip/node_modules/color-convert/",\
  1467. "packageDependencies": [\
  1468. ["color-convert", "npm:1.9.3"],\
  1469. ["color-name", "npm:1.1.3"]\
  1470. ],\
  1471. "linkType": "HARD"\
  1472. }],\
  1473. ["npm:2.0.1", {\
  1474. "packageLocation": "./.yarn/cache/color-convert-npm-2.0.1-79730e935b-79e6bdb9fd.zip/node_modules/color-convert/",\
  1475. "packageDependencies": [\
  1476. ["color-convert", "npm:2.0.1"],\
  1477. ["color-name", "npm:1.1.4"]\
  1478. ],\
  1479. "linkType": "HARD"\
  1480. }]\
  1481. ]],\
  1482. ["color-name", [\
  1483. ["npm:1.1.3", {\
  1484. "packageLocation": "./.yarn/cache/color-name-npm-1.1.3-728b7b5d39-09c5d3e33d.zip/node_modules/color-name/",\
  1485. "packageDependencies": [\
  1486. ["color-name", "npm:1.1.3"]\
  1487. ],\
  1488. "linkType": "HARD"\
  1489. }],\
  1490. ["npm:1.1.4", {\
  1491. "packageLocation": "./.yarn/cache/color-name-npm-1.1.4-025792b0ea-b044585952.zip/node_modules/color-name/",\
  1492. "packageDependencies": [\
  1493. ["color-name", "npm:1.1.4"]\
  1494. ],\
  1495. "linkType": "HARD"\
  1496. }]\
  1497. ]],\
  1498. ["concat-map", [\
  1499. ["npm:0.0.1", {\
  1500. "packageLocation": "./.yarn/cache/concat-map-npm-0.0.1-85a921b7ee-902a9f5d89.zip/node_modules/concat-map/",\
  1501. "packageDependencies": [\
  1502. ["concat-map", "npm:0.0.1"]\
  1503. ],\
  1504. "linkType": "HARD"\
  1505. }]\
  1506. ]],\
  1507. ["convert-source-map", [\
  1508. ["npm:2.0.0", {\
  1509. "packageLocation": "./.yarn/cache/convert-source-map-npm-2.0.0-7ab664dc4e-63ae9933be.zip/node_modules/convert-source-map/",\
  1510. "packageDependencies": [\
  1511. ["convert-source-map", "npm:2.0.0"]\
  1512. ],\
  1513. "linkType": "HARD"\
  1514. }]\
  1515. ]],\
  1516. ["cross-spawn", [\
  1517. ["npm:7.0.3", {\
  1518. "packageLocation": "./.yarn/cache/cross-spawn-npm-7.0.3-e4ff3e65b3-671cc7c728.zip/node_modules/cross-spawn/",\
  1519. "packageDependencies": [\
  1520. ["cross-spawn", "npm:7.0.3"],\
  1521. ["path-key", "npm:3.1.1"],\
  1522. ["shebang-command", "npm:2.0.0"],\
  1523. ["which", "npm:2.0.2"]\
  1524. ],\
  1525. "linkType": "HARD"\
  1526. }]\
  1527. ]],\
  1528. ["csstype", [\
  1529. ["npm:3.1.2", {\
  1530. "packageLocation": "./.yarn/cache/csstype-npm-3.1.2-cead7d99b2-e1a52e6c25.zip/node_modules/csstype/",\
  1531. "packageDependencies": [\
  1532. ["csstype", "npm:3.1.2"]\
  1533. ],\
  1534. "linkType": "HARD"\
  1535. }]\
  1536. ]],\
  1537. ["dayjs", [\
  1538. ["npm:1.11.10", {\
  1539. "packageLocation": "./.yarn/cache/dayjs-npm-1.11.10-2b4382efc1-a6b5a3813b.zip/node_modules/dayjs/",\
  1540. "packageDependencies": [\
  1541. ["dayjs", "npm:1.11.10"]\
  1542. ],\
  1543. "linkType": "HARD"\
  1544. }]\
  1545. ]],\
  1546. ["debug", [\
  1547. ["npm:4.3.4", {\
  1548. "packageLocation": "./.yarn/cache/debug-npm-4.3.4-4513954577-3dbad3f94e.zip/node_modules/debug/",\
  1549. "packageDependencies": [\
  1550. ["debug", "npm:4.3.4"]\
  1551. ],\
  1552. "linkType": "SOFT"\
  1553. }],\
  1554. ["virtual:1ff4b5f90832ba0a9c93ba1223af226e44ba70c1126a3740d93562b97bc36544e896a5e95908196f7458713e6a6089a34bfc67362fc6df7fa093bd06c878be47#npm:4.3.4", {\
  1555. "packageLocation": "./.yarn/__virtual__/debug-virtual-1040418e3c/0/cache/debug-npm-4.3.4-4513954577-3dbad3f94e.zip/node_modules/debug/",\
  1556. "packageDependencies": [\
  1557. ["debug", "virtual:1ff4b5f90832ba0a9c93ba1223af226e44ba70c1126a3740d93562b97bc36544e896a5e95908196f7458713e6a6089a34bfc67362fc6df7fa093bd06c878be47#npm:4.3.4"],\
  1558. ["@types/supports-color", null],\
  1559. ["ms", "npm:2.1.2"],\
  1560. ["supports-color", null]\
  1561. ],\
  1562. "packagePeers": [\
  1563. "@types/supports-color",\
  1564. "supports-color"\
  1565. ],\
  1566. "linkType": "HARD"\
  1567. }]\
  1568. ]],\
  1569. ["deep-is", [\
  1570. ["npm:0.1.4", {\
  1571. "packageLocation": "./.yarn/cache/deep-is-npm-0.1.4-88938b5a67-edb65dd0d7.zip/node_modules/deep-is/",\
  1572. "packageDependencies": [\
  1573. ["deep-is", "npm:0.1.4"]\
  1574. ],\
  1575. "linkType": "HARD"\
  1576. }]\
  1577. ]],\
  1578. ["define-data-property", [\
  1579. ["npm:1.1.1", {\
  1580. "packageLocation": "./.yarn/cache/define-data-property-npm-1.1.1-2b5156d112-a29855ad3f.zip/node_modules/define-data-property/",\
  1581. "packageDependencies": [\
  1582. ["define-data-property", "npm:1.1.1"],\
  1583. ["get-intrinsic", "npm:1.2.2"],\
  1584. ["gopd", "npm:1.0.1"],\
  1585. ["has-property-descriptors", "npm:1.0.1"]\
  1586. ],\
  1587. "linkType": "HARD"\
  1588. }]\
  1589. ]],\
  1590. ["define-properties", [\
  1591. ["npm:1.2.1", {\
  1592. "packageLocation": "./.yarn/cache/define-properties-npm-1.2.1-8a4d42413b-b4ccd00597.zip/node_modules/define-properties/",\
  1593. "packageDependencies": [\
  1594. ["define-properties", "npm:1.2.1"],\
  1595. ["define-data-property", "npm:1.1.1"],\
  1596. ["has-property-descriptors", "npm:1.0.1"],\
  1597. ["object-keys", "npm:1.1.1"]\
  1598. ],\
  1599. "linkType": "HARD"\
  1600. }]\
  1601. ]],\
  1602. ["doctrine", [\
  1603. ["npm:2.1.0", {\
  1604. "packageLocation": "./.yarn/cache/doctrine-npm-2.1.0-ac15d049b7-a45e277f7f.zip/node_modules/doctrine/",\
  1605. "packageDependencies": [\
  1606. ["doctrine", "npm:2.1.0"],\
  1607. ["esutils", "npm:2.0.3"]\
  1608. ],\
  1609. "linkType": "HARD"\
  1610. }],\
  1611. ["npm:3.0.0", {\
  1612. "packageLocation": "./.yarn/cache/doctrine-npm-3.0.0-c6f1615f04-fd7673ca77.zip/node_modules/doctrine/",\
  1613. "packageDependencies": [\
  1614. ["doctrine", "npm:3.0.0"],\
  1615. ["esutils", "npm:2.0.3"]\
  1616. ],\
  1617. "linkType": "HARD"\
  1618. }]\
  1619. ]],\
  1620. ["dom-helpers", [\
  1621. ["npm:5.2.1", {\
  1622. "packageLocation": "./.yarn/cache/dom-helpers-npm-5.2.1-b38bb4470b-863ba9e086.zip/node_modules/dom-helpers/",\
  1623. "packageDependencies": [\
  1624. ["dom-helpers", "npm:5.2.1"],\
  1625. ["@babel/runtime", "npm:7.23.5"],\
  1626. ["csstype", "npm:3.1.2"]\
  1627. ],\
  1628. "linkType": "HARD"\
  1629. }]\
  1630. ]],\
  1631. ["eastasianwidth", [\
  1632. ["npm:0.2.0", {\
  1633. "packageLocation": "./.yarn/cache/eastasianwidth-npm-0.2.0-c37eb16bd1-7d00d7cd8e.zip/node_modules/eastasianwidth/",\
  1634. "packageDependencies": [\
  1635. ["eastasianwidth", "npm:0.2.0"]\
  1636. ],\
  1637. "linkType": "HARD"\
  1638. }]\
  1639. ]],\
  1640. ["electron-to-chromium", [\
  1641. ["npm:1.4.603", {\
  1642. "packageLocation": "./.yarn/cache/electron-to-chromium-npm-1.4.603-2f61f02545-4d81f73c0f.zip/node_modules/electron-to-chromium/",\
  1643. "packageDependencies": [\
  1644. ["electron-to-chromium", "npm:1.4.603"]\
  1645. ],\
  1646. "linkType": "HARD"\
  1647. }]\
  1648. ]],\
  1649. ["emoji-regex", [\
  1650. ["npm:8.0.0", {\
  1651. "packageLocation": "./.yarn/cache/emoji-regex-npm-8.0.0-213764015c-d4c5c39d5a.zip/node_modules/emoji-regex/",\
  1652. "packageDependencies": [\
  1653. ["emoji-regex", "npm:8.0.0"]\
  1654. ],\
  1655. "linkType": "HARD"\
  1656. }],\
  1657. ["npm:9.2.2", {\
  1658. "packageLocation": "./.yarn/cache/emoji-regex-npm-9.2.2-e6fac8d058-8487182da7.zip/node_modules/emoji-regex/",\
  1659. "packageDependencies": [\
  1660. ["emoji-regex", "npm:9.2.2"]\
  1661. ],\
  1662. "linkType": "HARD"\
  1663. }]\
  1664. ]],\
  1665. ["encoding", [\
  1666. ["npm:0.1.13", {\
  1667. "packageLocation": "./.yarn/cache/encoding-npm-0.1.13-82a1837d30-bb98632f8f.zip/node_modules/encoding/",\
  1668. "packageDependencies": [\
  1669. ["encoding", "npm:0.1.13"],\
  1670. ["iconv-lite", "npm:0.6.3"]\
  1671. ],\
  1672. "linkType": "HARD"\
  1673. }]\
  1674. ]],\
  1675. ["env-paths", [\
  1676. ["npm:2.2.1", {\
  1677. "packageLocation": "./.yarn/cache/env-paths-npm-2.2.1-7c7577428c-65b5df55a8.zip/node_modules/env-paths/",\
  1678. "packageDependencies": [\
  1679. ["env-paths", "npm:2.2.1"]\
  1680. ],\
  1681. "linkType": "HARD"\
  1682. }]\
  1683. ]],\
  1684. ["err-code", [\
  1685. ["npm:2.0.3", {\
  1686. "packageLocation": "./.yarn/cache/err-code-npm-2.0.3-082e0ff9a7-8b7b1be20d.zip/node_modules/err-code/",\
  1687. "packageDependencies": [\
  1688. ["err-code", "npm:2.0.3"]\
  1689. ],\
  1690. "linkType": "HARD"\
  1691. }]\
  1692. ]],\
  1693. ["es-abstract", [\
  1694. ["npm:1.22.3", {\
  1695. "packageLocation": "./.yarn/cache/es-abstract-npm-1.22.3-15a58832e5-b1bdc96285.zip/node_modules/es-abstract/",\
  1696. "packageDependencies": [\
  1697. ["es-abstract", "npm:1.22.3"],\
  1698. ["array-buffer-byte-length", "npm:1.0.0"],\
  1699. ["arraybuffer.prototype.slice", "npm:1.0.2"],\
  1700. ["available-typed-arrays", "npm:1.0.5"],\
  1701. ["call-bind", "npm:1.0.5"],\
  1702. ["es-set-tostringtag", "npm:2.0.2"],\
  1703. ["es-to-primitive", "npm:1.2.1"],\
  1704. ["function.prototype.name", "npm:1.1.6"],\
  1705. ["get-intrinsic", "npm:1.2.2"],\
  1706. ["get-symbol-description", "npm:1.0.0"],\
  1707. ["globalthis", "npm:1.0.3"],\
  1708. ["gopd", "npm:1.0.1"],\
  1709. ["has-property-descriptors", "npm:1.0.1"],\
  1710. ["has-proto", "npm:1.0.1"],\
  1711. ["has-symbols", "npm:1.0.3"],\
  1712. ["hasown", "npm:2.0.0"],\
  1713. ["internal-slot", "npm:1.0.6"],\
  1714. ["is-array-buffer", "npm:3.0.2"],\
  1715. ["is-callable", "npm:1.2.7"],\
  1716. ["is-negative-zero", "npm:2.0.2"],\
  1717. ["is-regex", "npm:1.1.4"],\
  1718. ["is-shared-array-buffer", "npm:1.0.2"],\
  1719. ["is-string", "npm:1.0.7"],\
  1720. ["is-typed-array", "npm:1.1.12"],\
  1721. ["is-weakref", "npm:1.0.2"],\
  1722. ["object-inspect", "npm:1.13.1"],\
  1723. ["object-keys", "npm:1.1.1"],\
  1724. ["object.assign", "npm:4.1.5"],\
  1725. ["regexp.prototype.flags", "npm:1.5.1"],\
  1726. ["safe-array-concat", "npm:1.0.1"],\
  1727. ["safe-regex-test", "npm:1.0.0"],\
  1728. ["string.prototype.trim", "npm:1.2.8"],\
  1729. ["string.prototype.trimend", "npm:1.0.7"],\
  1730. ["string.prototype.trimstart", "npm:1.0.7"],\
  1731. ["typed-array-buffer", "npm:1.0.0"],\
  1732. ["typed-array-byte-length", "npm:1.0.0"],\
  1733. ["typed-array-byte-offset", "npm:1.0.0"],\
  1734. ["typed-array-length", "npm:1.0.4"],\
  1735. ["unbox-primitive", "npm:1.0.2"],\
  1736. ["which-typed-array", "npm:1.1.13"]\
  1737. ],\
  1738. "linkType": "HARD"\
  1739. }]\
  1740. ]],\
  1741. ["es-iterator-helpers", [\
  1742. ["npm:1.0.15", {\
  1743. "packageLocation": "./.yarn/cache/es-iterator-helpers-npm-1.0.15-d23bd911af-50081ae5c5.zip/node_modules/es-iterator-helpers/",\
  1744. "packageDependencies": [\
  1745. ["es-iterator-helpers", "npm:1.0.15"],\
  1746. ["asynciterator.prototype", "npm:1.0.0"],\
  1747. ["call-bind", "npm:1.0.5"],\
  1748. ["define-properties", "npm:1.2.1"],\
  1749. ["es-abstract", "npm:1.22.3"],\
  1750. ["es-set-tostringtag", "npm:2.0.2"],\
  1751. ["function-bind", "npm:1.1.2"],\
  1752. ["get-intrinsic", "npm:1.2.2"],\
  1753. ["globalthis", "npm:1.0.3"],\
  1754. ["has-property-descriptors", "npm:1.0.1"],\
  1755. ["has-proto", "npm:1.0.1"],\
  1756. ["has-symbols", "npm:1.0.3"],\
  1757. ["internal-slot", "npm:1.0.6"],\
  1758. ["iterator.prototype", "npm:1.1.2"],\
  1759. ["safe-array-concat", "npm:1.0.1"]\
  1760. ],\
  1761. "linkType": "HARD"\
  1762. }]\
  1763. ]],\
  1764. ["es-set-tostringtag", [\
  1765. ["npm:2.0.2", {\
  1766. "packageLocation": "./.yarn/cache/es-set-tostringtag-npm-2.0.2-dae5ec6c58-afcec3a4c9.zip/node_modules/es-set-tostringtag/",\
  1767. "packageDependencies": [\
  1768. ["es-set-tostringtag", "npm:2.0.2"],\
  1769. ["get-intrinsic", "npm:1.2.2"],\
  1770. ["has-tostringtag", "npm:1.0.0"],\
  1771. ["hasown", "npm:2.0.0"]\
  1772. ],\
  1773. "linkType": "HARD"\
  1774. }]\
  1775. ]],\
  1776. ["es-shim-unscopables", [\
  1777. ["npm:1.0.2", {\
  1778. "packageLocation": "./.yarn/cache/es-shim-unscopables-npm-1.0.2-a3056a4c0d-432bd527c6.zip/node_modules/es-shim-unscopables/",\
  1779. "packageDependencies": [\
  1780. ["es-shim-unscopables", "npm:1.0.2"],\
  1781. ["hasown", "npm:2.0.0"]\
  1782. ],\
  1783. "linkType": "HARD"\
  1784. }]\
  1785. ]],\
  1786. ["es-to-primitive", [\
  1787. ["npm:1.2.1", {\
  1788. "packageLocation": "./.yarn/cache/es-to-primitive-npm-1.2.1-b7a7eac6c5-4ead6671a2.zip/node_modules/es-to-primitive/",\
  1789. "packageDependencies": [\
  1790. ["es-to-primitive", "npm:1.2.1"],\
  1791. ["is-callable", "npm:1.2.7"],\
  1792. ["is-date-object", "npm:1.0.5"],\
  1793. ["is-symbol", "npm:1.0.4"]\
  1794. ],\
  1795. "linkType": "HARD"\
  1796. }]\
  1797. ]],\
  1798. ["esbuild", [\
  1799. ["npm:0.19.8", {\
  1800. "packageLocation": "./.yarn/unplugged/esbuild-npm-0.19.8-209f9c6f87/node_modules/esbuild/",\
  1801. "packageDependencies": [\
  1802. ["esbuild", "npm:0.19.8"],\
  1803. ["@esbuild/android-arm", "npm:0.19.8"],\
  1804. ["@esbuild/android-arm64", "npm:0.19.8"],\
  1805. ["@esbuild/android-x64", "npm:0.19.8"],\
  1806. ["@esbuild/darwin-arm64", "npm:0.19.8"],\
  1807. ["@esbuild/darwin-x64", "npm:0.19.8"],\
  1808. ["@esbuild/freebsd-arm64", "npm:0.19.8"],\
  1809. ["@esbuild/freebsd-x64", "npm:0.19.8"],\
  1810. ["@esbuild/linux-arm", "npm:0.19.8"],\
  1811. ["@esbuild/linux-arm64", "npm:0.19.8"],\
  1812. ["@esbuild/linux-ia32", "npm:0.19.8"],\
  1813. ["@esbuild/linux-loong64", "npm:0.19.8"],\
  1814. ["@esbuild/linux-mips64el", "npm:0.19.8"],\
  1815. ["@esbuild/linux-ppc64", "npm:0.19.8"],\
  1816. ["@esbuild/linux-riscv64", "npm:0.19.8"],\
  1817. ["@esbuild/linux-s390x", "npm:0.19.8"],\
  1818. ["@esbuild/linux-x64", "npm:0.19.8"],\
  1819. ["@esbuild/netbsd-x64", "npm:0.19.8"],\
  1820. ["@esbuild/openbsd-x64", "npm:0.19.8"],\
  1821. ["@esbuild/sunos-x64", "npm:0.19.8"],\
  1822. ["@esbuild/win32-arm64", "npm:0.19.8"],\
  1823. ["@esbuild/win32-ia32", "npm:0.19.8"],\
  1824. ["@esbuild/win32-x64", "npm:0.19.8"]\
  1825. ],\
  1826. "linkType": "HARD"\
  1827. }]\
  1828. ]],\
  1829. ["escalade", [\
  1830. ["npm:3.1.1", {\
  1831. "packageLocation": "./.yarn/cache/escalade-npm-3.1.1-e02da076aa-a3e2a99f07.zip/node_modules/escalade/",\
  1832. "packageDependencies": [\
  1833. ["escalade", "npm:3.1.1"]\
  1834. ],\
  1835. "linkType": "HARD"\
  1836. }]\
  1837. ]],\
  1838. ["escape-string-regexp", [\
  1839. ["npm:1.0.5", {\
  1840. "packageLocation": "./.yarn/cache/escape-string-regexp-npm-1.0.5-3284de402f-6092fda75c.zip/node_modules/escape-string-regexp/",\
  1841. "packageDependencies": [\
  1842. ["escape-string-regexp", "npm:1.0.5"]\
  1843. ],\
  1844. "linkType": "HARD"\
  1845. }],\
  1846. ["npm:4.0.0", {\
  1847. "packageLocation": "./.yarn/cache/escape-string-regexp-npm-4.0.0-4b531d8d59-98b48897d9.zip/node_modules/escape-string-regexp/",\
  1848. "packageDependencies": [\
  1849. ["escape-string-regexp", "npm:4.0.0"]\
  1850. ],\
  1851. "linkType": "HARD"\
  1852. }]\
  1853. ]],\
  1854. ["eslint", [\
  1855. ["npm:8.55.0", {\
  1856. "packageLocation": "./.yarn/cache/eslint-npm-8.55.0-7e84babe85-83f82a6045.zip/node_modules/eslint/",\
  1857. "packageDependencies": [\
  1858. ["eslint", "npm:8.55.0"],\
  1859. ["@eslint-community/eslint-utils", "virtual:7e84babe85e6b058f29b2789822aea4bf3e34b48391f8eba05629d50500f4f2dfbe6628418745cffc770a77f74f121288626b69dd676f57de93d3ca5c7553ce6#npm:4.4.0"],\
  1860. ["@eslint-community/regexpp", "npm:4.10.0"],\
  1861. ["@eslint/eslintrc", "npm:2.1.4"],\
  1862. ["@eslint/js", "npm:8.55.0"],\
  1863. ["@humanwhocodes/config-array", "npm:0.11.13"],\
  1864. ["@humanwhocodes/module-importer", "npm:1.0.1"],\
  1865. ["@nodelib/fs.walk", "npm:1.2.8"],\
  1866. ["@ungap/structured-clone", "npm:1.2.0"],\
  1867. ["ajv", "npm:6.12.6"],\
  1868. ["chalk", "npm:4.1.2"],\
  1869. ["cross-spawn", "npm:7.0.3"],\
  1870. ["debug", "virtual:1ff4b5f90832ba0a9c93ba1223af226e44ba70c1126a3740d93562b97bc36544e896a5e95908196f7458713e6a6089a34bfc67362fc6df7fa093bd06c878be47#npm:4.3.4"],\
  1871. ["doctrine", "npm:3.0.0"],\
  1872. ["escape-string-regexp", "npm:4.0.0"],\
  1873. ["eslint-scope", "npm:7.2.2"],\
  1874. ["eslint-visitor-keys", "npm:3.4.3"],\
  1875. ["espree", "npm:9.6.1"],\
  1876. ["esquery", "npm:1.5.0"],\
  1877. ["esutils", "npm:2.0.3"],\
  1878. ["fast-deep-equal", "npm:3.1.3"],\
  1879. ["file-entry-cache", "npm:6.0.1"],\
  1880. ["find-up", "npm:5.0.0"],\
  1881. ["glob-parent", "npm:6.0.2"],\
  1882. ["globals", "npm:13.23.0"],\
  1883. ["graphemer", "npm:1.4.0"],\
  1884. ["ignore", "npm:5.3.0"],\
  1885. ["imurmurhash", "npm:0.1.4"],\
  1886. ["is-glob", "npm:4.0.3"],\
  1887. ["is-path-inside", "npm:3.0.3"],\
  1888. ["js-yaml", "npm:4.1.0"],\
  1889. ["json-stable-stringify-without-jsonify", "npm:1.0.1"],\
  1890. ["levn", "npm:0.4.1"],\
  1891. ["lodash.merge", "npm:4.6.2"],\
  1892. ["minimatch", "npm:3.1.2"],\
  1893. ["natural-compare", "npm:1.4.0"],\
  1894. ["optionator", "npm:0.9.3"],\
  1895. ["strip-ansi", "npm:6.0.1"],\
  1896. ["text-table", "npm:0.2.0"]\
  1897. ],\
  1898. "linkType": "HARD"\
  1899. }]\
  1900. ]],\
  1901. ["eslint-plugin-react", [\
  1902. ["npm:7.33.2", {\
  1903. "packageLocation": "./.yarn/cache/eslint-plugin-react-npm-7.33.2-08f77ebc15-b4c3d76390.zip/node_modules/eslint-plugin-react/",\
  1904. "packageDependencies": [\
  1905. ["eslint-plugin-react", "npm:7.33.2"]\
  1906. ],\
  1907. "linkType": "SOFT"\
  1908. }],\
  1909. ["virtual:886e61fa7e6c7b2ced7980b68a5ec81e7559ed62a5e4bd0d20a3077c159398b6fcf9f9fce97484d3befe2143009a06709cd8e96ea637527ac9f0813dcc5f7523#npm:7.33.2", {\
  1910. "packageLocation": "./.yarn/__virtual__/eslint-plugin-react-virtual-d200fbb192/0/cache/eslint-plugin-react-npm-7.33.2-08f77ebc15-b4c3d76390.zip/node_modules/eslint-plugin-react/",\
  1911. "packageDependencies": [\
  1912. ["eslint-plugin-react", "virtual:886e61fa7e6c7b2ced7980b68a5ec81e7559ed62a5e4bd0d20a3077c159398b6fcf9f9fce97484d3befe2143009a06709cd8e96ea637527ac9f0813dcc5f7523#npm:7.33.2"],\
  1913. ["@types/eslint", null],\
  1914. ["array-includes", "npm:3.1.7"],\
  1915. ["array.prototype.flatmap", "npm:1.3.2"],\
  1916. ["array.prototype.tosorted", "npm:1.1.2"],\
  1917. ["doctrine", "npm:2.1.0"],\
  1918. ["es-iterator-helpers", "npm:1.0.15"],\
  1919. ["eslint", "npm:8.55.0"],\
  1920. ["estraverse", "npm:5.3.0"],\
  1921. ["jsx-ast-utils", "npm:3.3.5"],\
  1922. ["minimatch", "npm:3.1.2"],\
  1923. ["object.entries", "npm:1.1.7"],\
  1924. ["object.fromentries", "npm:2.0.7"],\
  1925. ["object.hasown", "npm:1.1.3"],\
  1926. ["object.values", "npm:1.1.7"],\
  1927. ["prop-types", "npm:15.8.1"],\
  1928. ["resolve", "patch:resolve@npm%3A2.0.0-next.5#~builtin<compat/resolve>::version=2.0.0-next.5&hash=c3c19d"],\
  1929. ["semver", "npm:6.3.1"],\
  1930. ["string.prototype.matchall", "npm:4.0.10"]\
  1931. ],\
  1932. "packagePeers": [\
  1933. "@types/eslint",\
  1934. "eslint"\
  1935. ],\
  1936. "linkType": "HARD"\
  1937. }]\
  1938. ]],\
  1939. ["eslint-plugin-react-hooks", [\
  1940. ["npm:4.6.0", {\
  1941. "packageLocation": "./.yarn/cache/eslint-plugin-react-hooks-npm-4.6.0-b429fac07f-23001801f1.zip/node_modules/eslint-plugin-react-hooks/",\
  1942. "packageDependencies": [\
  1943. ["eslint-plugin-react-hooks", "npm:4.6.0"]\
  1944. ],\
  1945. "linkType": "SOFT"\
  1946. }],\
  1947. ["virtual:886e61fa7e6c7b2ced7980b68a5ec81e7559ed62a5e4bd0d20a3077c159398b6fcf9f9fce97484d3befe2143009a06709cd8e96ea637527ac9f0813dcc5f7523#npm:4.6.0", {\
  1948. "packageLocation": "./.yarn/__virtual__/eslint-plugin-react-hooks-virtual-995e70cfb5/0/cache/eslint-plugin-react-hooks-npm-4.6.0-b429fac07f-23001801f1.zip/node_modules/eslint-plugin-react-hooks/",\
  1949. "packageDependencies": [\
  1950. ["eslint-plugin-react-hooks", "virtual:886e61fa7e6c7b2ced7980b68a5ec81e7559ed62a5e4bd0d20a3077c159398b6fcf9f9fce97484d3befe2143009a06709cd8e96ea637527ac9f0813dcc5f7523#npm:4.6.0"],\
  1951. ["@types/eslint", null],\
  1952. ["eslint", "npm:8.55.0"]\
  1953. ],\
  1954. "packagePeers": [\
  1955. "@types/eslint",\
  1956. "eslint"\
  1957. ],\
  1958. "linkType": "HARD"\
  1959. }]\
  1960. ]],\
  1961. ["eslint-plugin-react-refresh", [\
  1962. ["npm:0.4.5", {\
  1963. "packageLocation": "./.yarn/cache/eslint-plugin-react-refresh-npm-0.4.5-3f2488eb7c-953e665f6a.zip/node_modules/eslint-plugin-react-refresh/",\
  1964. "packageDependencies": [\
  1965. ["eslint-plugin-react-refresh", "npm:0.4.5"]\
  1966. ],\
  1967. "linkType": "SOFT"\
  1968. }],\
  1969. ["virtual:886e61fa7e6c7b2ced7980b68a5ec81e7559ed62a5e4bd0d20a3077c159398b6fcf9f9fce97484d3befe2143009a06709cd8e96ea637527ac9f0813dcc5f7523#npm:0.4.5", {\
  1970. "packageLocation": "./.yarn/__virtual__/eslint-plugin-react-refresh-virtual-ce7fa8fee1/0/cache/eslint-plugin-react-refresh-npm-0.4.5-3f2488eb7c-953e665f6a.zip/node_modules/eslint-plugin-react-refresh/",\
  1971. "packageDependencies": [\
  1972. ["eslint-plugin-react-refresh", "virtual:886e61fa7e6c7b2ced7980b68a5ec81e7559ed62a5e4bd0d20a3077c159398b6fcf9f9fce97484d3befe2143009a06709cd8e96ea637527ac9f0813dcc5f7523#npm:0.4.5"],\
  1973. ["@types/eslint", null],\
  1974. ["eslint", "npm:8.55.0"]\
  1975. ],\
  1976. "packagePeers": [\
  1977. "@types/eslint",\
  1978. "eslint"\
  1979. ],\
  1980. "linkType": "HARD"\
  1981. }]\
  1982. ]],\
  1983. ["eslint-scope", [\
  1984. ["npm:7.2.2", {\
  1985. "packageLocation": "./.yarn/cache/eslint-scope-npm-7.2.2-53cb0df8e8-ec97dbf5fb.zip/node_modules/eslint-scope/",\
  1986. "packageDependencies": [\
  1987. ["eslint-scope", "npm:7.2.2"],\
  1988. ["esrecurse", "npm:4.3.0"],\
  1989. ["estraverse", "npm:5.3.0"]\
  1990. ],\
  1991. "linkType": "HARD"\
  1992. }]\
  1993. ]],\
  1994. ["eslint-visitor-keys", [\
  1995. ["npm:3.4.3", {\
  1996. "packageLocation": "./.yarn/cache/eslint-visitor-keys-npm-3.4.3-a356ac7e46-36e9ef87fc.zip/node_modules/eslint-visitor-keys/",\
  1997. "packageDependencies": [\
  1998. ["eslint-visitor-keys", "npm:3.4.3"]\
  1999. ],\
  2000. "linkType": "HARD"\
  2001. }]\
  2002. ]],\
  2003. ["espree", [\
  2004. ["npm:9.6.1", {\
  2005. "packageLocation": "./.yarn/cache/espree-npm-9.6.1-a50722a5a9-eb8c149c7a.zip/node_modules/espree/",\
  2006. "packageDependencies": [\
  2007. ["espree", "npm:9.6.1"],\
  2008. ["acorn", "npm:8.11.2"],\
  2009. ["acorn-jsx", "virtual:a50722a5a9326b6a5f12350c494c4db3aa0f4caeac45e3e9e5fe071da20014ecfe738fe2ebe2c9c98abae81a4ea86b42f56d776b3bd5ec37f9ad3670c242b242#npm:5.3.2"],\
  2010. ["eslint-visitor-keys", "npm:3.4.3"]\
  2011. ],\
  2012. "linkType": "HARD"\
  2013. }]\
  2014. ]],\
  2015. ["esquery", [\
  2016. ["npm:1.5.0", {\
  2017. "packageLocation": "./.yarn/cache/esquery-npm-1.5.0-d8f8a06879-aefb0d2596.zip/node_modules/esquery/",\
  2018. "packageDependencies": [\
  2019. ["esquery", "npm:1.5.0"],\
  2020. ["estraverse", "npm:5.3.0"]\
  2021. ],\
  2022. "linkType": "HARD"\
  2023. }]\
  2024. ]],\
  2025. ["esrecurse", [\
  2026. ["npm:4.3.0", {\
  2027. "packageLocation": "./.yarn/cache/esrecurse-npm-4.3.0-10b86a887a-ebc17b1a33.zip/node_modules/esrecurse/",\
  2028. "packageDependencies": [\
  2029. ["esrecurse", "npm:4.3.0"],\
  2030. ["estraverse", "npm:5.3.0"]\
  2031. ],\
  2032. "linkType": "HARD"\
  2033. }]\
  2034. ]],\
  2035. ["estraverse", [\
  2036. ["npm:5.3.0", {\
  2037. "packageLocation": "./.yarn/cache/estraverse-npm-5.3.0-03284f8f63-072780882d.zip/node_modules/estraverse/",\
  2038. "packageDependencies": [\
  2039. ["estraverse", "npm:5.3.0"]\
  2040. ],\
  2041. "linkType": "HARD"\
  2042. }]\
  2043. ]],\
  2044. ["esutils", [\
  2045. ["npm:2.0.3", {\
  2046. "packageLocation": "./.yarn/cache/esutils-npm-2.0.3-f865beafd5-22b5b08f74.zip/node_modules/esutils/",\
  2047. "packageDependencies": [\
  2048. ["esutils", "npm:2.0.3"]\
  2049. ],\
  2050. "linkType": "HARD"\
  2051. }]\
  2052. ]],\
  2053. ["exponential-backoff", [\
  2054. ["npm:3.1.1", {\
  2055. "packageLocation": "./.yarn/cache/exponential-backoff-npm-3.1.1-04df458b30-3d21519a4f.zip/node_modules/exponential-backoff/",\
  2056. "packageDependencies": [\
  2057. ["exponential-backoff", "npm:3.1.1"]\
  2058. ],\
  2059. "linkType": "HARD"\
  2060. }]\
  2061. ]],\
  2062. ["fast-deep-equal", [\
  2063. ["npm:3.1.3", {\
  2064. "packageLocation": "./.yarn/cache/fast-deep-equal-npm-3.1.3-790edcfcf5-e21a9d8d84.zip/node_modules/fast-deep-equal/",\
  2065. "packageDependencies": [\
  2066. ["fast-deep-equal", "npm:3.1.3"]\
  2067. ],\
  2068. "linkType": "HARD"\
  2069. }]\
  2070. ]],\
  2071. ["fast-json-stable-stringify", [\
  2072. ["npm:2.1.0", {\
  2073. "packageLocation": "./.yarn/cache/fast-json-stable-stringify-npm-2.1.0-02e8905fda-b191531e36.zip/node_modules/fast-json-stable-stringify/",\
  2074. "packageDependencies": [\
  2075. ["fast-json-stable-stringify", "npm:2.1.0"]\
  2076. ],\
  2077. "linkType": "HARD"\
  2078. }]\
  2079. ]],\
  2080. ["fast-levenshtein", [\
  2081. ["npm:2.0.6", {\
  2082. "packageLocation": "./.yarn/cache/fast-levenshtein-npm-2.0.6-fcd74b8df5-92cfec0a8d.zip/node_modules/fast-levenshtein/",\
  2083. "packageDependencies": [\
  2084. ["fast-levenshtein", "npm:2.0.6"]\
  2085. ],\
  2086. "linkType": "HARD"\
  2087. }]\
  2088. ]],\
  2089. ["fastq", [\
  2090. ["npm:1.15.0", {\
  2091. "packageLocation": "./.yarn/cache/fastq-npm-1.15.0-1013f6514e-0170e6bfcd.zip/node_modules/fastq/",\
  2092. "packageDependencies": [\
  2093. ["fastq", "npm:1.15.0"],\
  2094. ["reusify", "npm:1.0.4"]\
  2095. ],\
  2096. "linkType": "HARD"\
  2097. }]\
  2098. ]],\
  2099. ["file-entry-cache", [\
  2100. ["npm:6.0.1", {\
  2101. "packageLocation": "./.yarn/cache/file-entry-cache-npm-6.0.1-31965cf0af-f49701feaa.zip/node_modules/file-entry-cache/",\
  2102. "packageDependencies": [\
  2103. ["file-entry-cache", "npm:6.0.1"],\
  2104. ["flat-cache", "npm:3.2.0"]\
  2105. ],\
  2106. "linkType": "HARD"\
  2107. }]\
  2108. ]],\
  2109. ["find-up", [\
  2110. ["npm:5.0.0", {\
  2111. "packageLocation": "./.yarn/cache/find-up-npm-5.0.0-e03e9b796d-07955e3573.zip/node_modules/find-up/",\
  2112. "packageDependencies": [\
  2113. ["find-up", "npm:5.0.0"],\
  2114. ["locate-path", "npm:6.0.0"],\
  2115. ["path-exists", "npm:4.0.0"]\
  2116. ],\
  2117. "linkType": "HARD"\
  2118. }]\
  2119. ]],\
  2120. ["flat-cache", [\
  2121. ["npm:3.2.0", {\
  2122. "packageLocation": "./.yarn/cache/flat-cache-npm-3.2.0-9a887f084e-e7e0f59801.zip/node_modules/flat-cache/",\
  2123. "packageDependencies": [\
  2124. ["flat-cache", "npm:3.2.0"],\
  2125. ["flatted", "npm:3.2.9"],\
  2126. ["keyv", "npm:4.5.4"],\
  2127. ["rimraf", "npm:3.0.2"]\
  2128. ],\
  2129. "linkType": "HARD"\
  2130. }]\
  2131. ]],\
  2132. ["flatted", [\
  2133. ["npm:3.2.9", {\
  2134. "packageLocation": "./.yarn/cache/flatted-npm-3.2.9-0462256d3c-f14167fbe2.zip/node_modules/flatted/",\
  2135. "packageDependencies": [\
  2136. ["flatted", "npm:3.2.9"]\
  2137. ],\
  2138. "linkType": "HARD"\
  2139. }]\
  2140. ]],\
  2141. ["for-each", [\
  2142. ["npm:0.3.3", {\
  2143. "packageLocation": "./.yarn/cache/for-each-npm-0.3.3-0010ca8cdd-6c48ff2bc6.zip/node_modules/for-each/",\
  2144. "packageDependencies": [\
  2145. ["for-each", "npm:0.3.3"],\
  2146. ["is-callable", "npm:1.2.7"]\
  2147. ],\
  2148. "linkType": "HARD"\
  2149. }]\
  2150. ]],\
  2151. ["foreground-child", [\
  2152. ["npm:3.1.1", {\
  2153. "packageLocation": "./.yarn/cache/foreground-child-npm-3.1.1-77e78ed774-139d270bc8.zip/node_modules/foreground-child/",\
  2154. "packageDependencies": [\
  2155. ["foreground-child", "npm:3.1.1"],\
  2156. ["cross-spawn", "npm:7.0.3"],\
  2157. ["signal-exit", "npm:4.1.0"]\
  2158. ],\
  2159. "linkType": "HARD"\
  2160. }]\
  2161. ]],\
  2162. ["fs-minipass", [\
  2163. ["npm:2.1.0", {\
  2164. "packageLocation": "./.yarn/cache/fs-minipass-npm-2.1.0-501ef87306-1b8d128dae.zip/node_modules/fs-minipass/",\
  2165. "packageDependencies": [\
  2166. ["fs-minipass", "npm:2.1.0"],\
  2167. ["minipass", "npm:3.3.6"]\
  2168. ],\
  2169. "linkType": "HARD"\
  2170. }],\
  2171. ["npm:3.0.3", {\
  2172. "packageLocation": "./.yarn/cache/fs-minipass-npm-3.0.3-d148d6ac19-8722a41109.zip/node_modules/fs-minipass/",\
  2173. "packageDependencies": [\
  2174. ["fs-minipass", "npm:3.0.3"],\
  2175. ["minipass", "npm:7.0.4"]\
  2176. ],\
  2177. "linkType": "HARD"\
  2178. }]\
  2179. ]],\
  2180. ["fs.realpath", [\
  2181. ["npm:1.0.0", {\
  2182. "packageLocation": "./.yarn/cache/fs.realpath-npm-1.0.0-c8f05d8126-99ddea01a7.zip/node_modules/fs.realpath/",\
  2183. "packageDependencies": [\
  2184. ["fs.realpath", "npm:1.0.0"]\
  2185. ],\
  2186. "linkType": "HARD"\
  2187. }]\
  2188. ]],\
  2189. ["fsevents", [\
  2190. ["patch:fsevents@npm%3A2.3.3#~builtin<compat/fsevents>::version=2.3.3&hash=df0bf1", {\
  2191. "packageLocation": "./.yarn/unplugged/fsevents-patch-21ad2b1333/node_modules/fsevents/",\
  2192. "packageDependencies": [\
  2193. ["fsevents", "patch:fsevents@npm%3A2.3.3#~builtin<compat/fsevents>::version=2.3.3&hash=df0bf1"],\
  2194. ["node-gyp", "npm:10.0.1"]\
  2195. ],\
  2196. "linkType": "HARD"\
  2197. }]\
  2198. ]],\
  2199. ["function-bind", [\
  2200. ["npm:1.1.2", {\
  2201. "packageLocation": "./.yarn/cache/function-bind-npm-1.1.2-7a55be9b03-2b0ff4ce70.zip/node_modules/function-bind/",\
  2202. "packageDependencies": [\
  2203. ["function-bind", "npm:1.1.2"]\
  2204. ],\
  2205. "linkType": "HARD"\
  2206. }]\
  2207. ]],\
  2208. ["function.prototype.name", [\
  2209. ["npm:1.1.6", {\
  2210. "packageLocation": "./.yarn/cache/function.prototype.name-npm-1.1.6-fd3a6a5cdd-7a3f9bd98a.zip/node_modules/function.prototype.name/",\
  2211. "packageDependencies": [\
  2212. ["function.prototype.name", "npm:1.1.6"],\
  2213. ["call-bind", "npm:1.0.5"],\
  2214. ["define-properties", "npm:1.2.1"],\
  2215. ["es-abstract", "npm:1.22.3"],\
  2216. ["functions-have-names", "npm:1.2.3"]\
  2217. ],\
  2218. "linkType": "HARD"\
  2219. }]\
  2220. ]],\
  2221. ["functions-have-names", [\
  2222. ["npm:1.2.3", {\
  2223. "packageLocation": "./.yarn/cache/functions-have-names-npm-1.2.3-e5cf1e2208-c3f1f5ba20.zip/node_modules/functions-have-names/",\
  2224. "packageDependencies": [\
  2225. ["functions-have-names", "npm:1.2.3"]\
  2226. ],\
  2227. "linkType": "HARD"\
  2228. }]\
  2229. ]],\
  2230. ["gensync", [\
  2231. ["npm:1.0.0-beta.2", {\
  2232. "packageLocation": "./.yarn/cache/gensync-npm-1.0.0-beta.2-224666d72f-a7437e58c6.zip/node_modules/gensync/",\
  2233. "packageDependencies": [\
  2234. ["gensync", "npm:1.0.0-beta.2"]\
  2235. ],\
  2236. "linkType": "HARD"\
  2237. }]\
  2238. ]],\
  2239. ["get-intrinsic", [\
  2240. ["npm:1.2.2", {\
  2241. "packageLocation": "./.yarn/cache/get-intrinsic-npm-1.2.2-3f446d8847-447ff0724d.zip/node_modules/get-intrinsic/",\
  2242. "packageDependencies": [\
  2243. ["get-intrinsic", "npm:1.2.2"],\
  2244. ["function-bind", "npm:1.1.2"],\
  2245. ["has-proto", "npm:1.0.1"],\
  2246. ["has-symbols", "npm:1.0.3"],\
  2247. ["hasown", "npm:2.0.0"]\
  2248. ],\
  2249. "linkType": "HARD"\
  2250. }]\
  2251. ]],\
  2252. ["get-symbol-description", [\
  2253. ["npm:1.0.0", {\
  2254. "packageLocation": "./.yarn/cache/get-symbol-description-npm-1.0.0-9c95a4bc1f-9ceff8fe96.zip/node_modules/get-symbol-description/",\
  2255. "packageDependencies": [\
  2256. ["get-symbol-description", "npm:1.0.0"],\
  2257. ["call-bind", "npm:1.0.5"],\
  2258. ["get-intrinsic", "npm:1.2.2"]\
  2259. ],\
  2260. "linkType": "HARD"\
  2261. }]\
  2262. ]],\
  2263. ["glob", [\
  2264. ["npm:10.3.10", {\
  2265. "packageLocation": "./.yarn/cache/glob-npm-10.3.10-da1ef8b112-4f2fe2511e.zip/node_modules/glob/",\
  2266. "packageDependencies": [\
  2267. ["glob", "npm:10.3.10"],\
  2268. ["foreground-child", "npm:3.1.1"],\
  2269. ["jackspeak", "npm:2.3.6"],\
  2270. ["minimatch", "npm:9.0.3"],\
  2271. ["minipass", "npm:7.0.4"],\
  2272. ["path-scurry", "npm:1.10.1"]\
  2273. ],\
  2274. "linkType": "HARD"\
  2275. }],\
  2276. ["npm:7.2.3", {\
  2277. "packageLocation": "./.yarn/cache/glob-npm-7.2.3-2d866d17a5-29452e97b3.zip/node_modules/glob/",\
  2278. "packageDependencies": [\
  2279. ["glob", "npm:7.2.3"],\
  2280. ["fs.realpath", "npm:1.0.0"],\
  2281. ["inflight", "npm:1.0.6"],\
  2282. ["inherits", "npm:2.0.4"],\
  2283. ["minimatch", "npm:3.1.2"],\
  2284. ["once", "npm:1.4.0"],\
  2285. ["path-is-absolute", "npm:1.0.1"]\
  2286. ],\
  2287. "linkType": "HARD"\
  2288. }]\
  2289. ]],\
  2290. ["glob-parent", [\
  2291. ["npm:6.0.2", {\
  2292. "packageLocation": "./.yarn/cache/glob-parent-npm-6.0.2-2cbef12738-c13ee97978.zip/node_modules/glob-parent/",\
  2293. "packageDependencies": [\
  2294. ["glob-parent", "npm:6.0.2"],\
  2295. ["is-glob", "npm:4.0.3"]\
  2296. ],\
  2297. "linkType": "HARD"\
  2298. }]\
  2299. ]],\
  2300. ["globals", [\
  2301. ["npm:11.12.0", {\
  2302. "packageLocation": "./.yarn/cache/globals-npm-11.12.0-1fa7f41a6c-67051a45ec.zip/node_modules/globals/",\
  2303. "packageDependencies": [\
  2304. ["globals", "npm:11.12.0"]\
  2305. ],\
  2306. "linkType": "HARD"\
  2307. }],\
  2308. ["npm:13.23.0", {\
  2309. "packageLocation": "./.yarn/cache/globals-npm-13.23.0-7f02426fd5-194c97cf8d.zip/node_modules/globals/",\
  2310. "packageDependencies": [\
  2311. ["globals", "npm:13.23.0"],\
  2312. ["type-fest", "npm:0.20.2"]\
  2313. ],\
  2314. "linkType": "HARD"\
  2315. }]\
  2316. ]],\
  2317. ["globalthis", [\
  2318. ["npm:1.0.3", {\
  2319. "packageLocation": "./.yarn/cache/globalthis-npm-1.0.3-96cd56020d-fbd7d760dc.zip/node_modules/globalthis/",\
  2320. "packageDependencies": [\
  2321. ["globalthis", "npm:1.0.3"],\
  2322. ["define-properties", "npm:1.2.1"]\
  2323. ],\
  2324. "linkType": "HARD"\
  2325. }]\
  2326. ]],\
  2327. ["gopd", [\
  2328. ["npm:1.0.1", {\
  2329. "packageLocation": "./.yarn/cache/gopd-npm-1.0.1-10c1d0b534-a5ccfb8806.zip/node_modules/gopd/",\
  2330. "packageDependencies": [\
  2331. ["gopd", "npm:1.0.1"],\
  2332. ["get-intrinsic", "npm:1.2.2"]\
  2333. ],\
  2334. "linkType": "HARD"\
  2335. }]\
  2336. ]],\
  2337. ["graceful-fs", [\
  2338. ["npm:4.2.11", {\
  2339. "packageLocation": "./.yarn/cache/graceful-fs-npm-4.2.11-24bb648a68-ac85f94da9.zip/node_modules/graceful-fs/",\
  2340. "packageDependencies": [\
  2341. ["graceful-fs", "npm:4.2.11"]\
  2342. ],\
  2343. "linkType": "HARD"\
  2344. }]\
  2345. ]],\
  2346. ["graphemer", [\
  2347. ["npm:1.4.0", {\
  2348. "packageLocation": "./.yarn/cache/graphemer-npm-1.4.0-0627732d35-bab8f0be9b.zip/node_modules/graphemer/",\
  2349. "packageDependencies": [\
  2350. ["graphemer", "npm:1.4.0"]\
  2351. ],\
  2352. "linkType": "HARD"\
  2353. }]\
  2354. ]],\
  2355. ["has-bigints", [\
  2356. ["npm:1.0.2", {\
  2357. "packageLocation": "./.yarn/cache/has-bigints-npm-1.0.2-52732e614d-390e31e7be.zip/node_modules/has-bigints/",\
  2358. "packageDependencies": [\
  2359. ["has-bigints", "npm:1.0.2"]\
  2360. ],\
  2361. "linkType": "HARD"\
  2362. }]\
  2363. ]],\
  2364. ["has-flag", [\
  2365. ["npm:3.0.0", {\
  2366. "packageLocation": "./.yarn/cache/has-flag-npm-3.0.0-16ac11fe05-4a15638b45.zip/node_modules/has-flag/",\
  2367. "packageDependencies": [\
  2368. ["has-flag", "npm:3.0.0"]\
  2369. ],\
  2370. "linkType": "HARD"\
  2371. }],\
  2372. ["npm:4.0.0", {\
  2373. "packageLocation": "./.yarn/cache/has-flag-npm-4.0.0-32af9f0536-261a135703.zip/node_modules/has-flag/",\
  2374. "packageDependencies": [\
  2375. ["has-flag", "npm:4.0.0"]\
  2376. ],\
  2377. "linkType": "HARD"\
  2378. }]\
  2379. ]],\
  2380. ["has-property-descriptors", [\
  2381. ["npm:1.0.1", {\
  2382. "packageLocation": "./.yarn/cache/has-property-descriptors-npm-1.0.1-61cd62fce3-2bcc6bf6ec.zip/node_modules/has-property-descriptors/",\
  2383. "packageDependencies": [\
  2384. ["has-property-descriptors", "npm:1.0.1"],\
  2385. ["get-intrinsic", "npm:1.2.2"]\
  2386. ],\
  2387. "linkType": "HARD"\
  2388. }]\
  2389. ]],\
  2390. ["has-proto", [\
  2391. ["npm:1.0.1", {\
  2392. "packageLocation": "./.yarn/cache/has-proto-npm-1.0.1-631ea9d820-febc5b5b53.zip/node_modules/has-proto/",\
  2393. "packageDependencies": [\
  2394. ["has-proto", "npm:1.0.1"]\
  2395. ],\
  2396. "linkType": "HARD"\
  2397. }]\
  2398. ]],\
  2399. ["has-symbols", [\
  2400. ["npm:1.0.3", {\
  2401. "packageLocation": "./.yarn/cache/has-symbols-npm-1.0.3-1986bff2c4-a054c40c63.zip/node_modules/has-symbols/",\
  2402. "packageDependencies": [\
  2403. ["has-symbols", "npm:1.0.3"]\
  2404. ],\
  2405. "linkType": "HARD"\
  2406. }]\
  2407. ]],\
  2408. ["has-tostringtag", [\
  2409. ["npm:1.0.0", {\
  2410. "packageLocation": "./.yarn/cache/has-tostringtag-npm-1.0.0-b1fcf3ab55-cc12eb28cb.zip/node_modules/has-tostringtag/",\
  2411. "packageDependencies": [\
  2412. ["has-tostringtag", "npm:1.0.0"],\
  2413. ["has-symbols", "npm:1.0.3"]\
  2414. ],\
  2415. "linkType": "HARD"\
  2416. }]\
  2417. ]],\
  2418. ["hasown", [\
  2419. ["npm:2.0.0", {\
  2420. "packageLocation": "./.yarn/cache/hasown-npm-2.0.0-78b794ceef-6151c75ca1.zip/node_modules/hasown/",\
  2421. "packageDependencies": [\
  2422. ["hasown", "npm:2.0.0"],\
  2423. ["function-bind", "npm:1.1.2"]\
  2424. ],\
  2425. "linkType": "HARD"\
  2426. }]\
  2427. ]],\
  2428. ["hoist-non-react-statics", [\
  2429. ["npm:3.3.2", {\
  2430. "packageLocation": "./.yarn/cache/hoist-non-react-statics-npm-3.3.2-e7b709e6c1-b153827042.zip/node_modules/hoist-non-react-statics/",\
  2431. "packageDependencies": [\
  2432. ["hoist-non-react-statics", "npm:3.3.2"],\
  2433. ["react-is", "npm:16.13.1"]\
  2434. ],\
  2435. "linkType": "HARD"\
  2436. }]\
  2437. ]],\
  2438. ["http-cache-semantics", [\
  2439. ["npm:4.1.1", {\
  2440. "packageLocation": "./.yarn/cache/http-cache-semantics-npm-4.1.1-1120131375-83ac0bc60b.zip/node_modules/http-cache-semantics/",\
  2441. "packageDependencies": [\
  2442. ["http-cache-semantics", "npm:4.1.1"]\
  2443. ],\
  2444. "linkType": "HARD"\
  2445. }]\
  2446. ]],\
  2447. ["http-proxy-agent", [\
  2448. ["npm:7.0.0", {\
  2449. "packageLocation": "./.yarn/cache/http-proxy-agent-npm-7.0.0-106a57cc8c-48d4fac997.zip/node_modules/http-proxy-agent/",\
  2450. "packageDependencies": [\
  2451. ["http-proxy-agent", "npm:7.0.0"],\
  2452. ["agent-base", "npm:7.1.0"],\
  2453. ["debug", "virtual:1ff4b5f90832ba0a9c93ba1223af226e44ba70c1126a3740d93562b97bc36544e896a5e95908196f7458713e6a6089a34bfc67362fc6df7fa093bd06c878be47#npm:4.3.4"]\
  2454. ],\
  2455. "linkType": "HARD"\
  2456. }]\
  2457. ]],\
  2458. ["https-proxy-agent", [\
  2459. ["npm:7.0.2", {\
  2460. "packageLocation": "./.yarn/cache/https-proxy-agent-npm-7.0.2-83ea6a5d42-088969a0dd.zip/node_modules/https-proxy-agent/",\
  2461. "packageDependencies": [\
  2462. ["https-proxy-agent", "npm:7.0.2"],\
  2463. ["agent-base", "npm:7.1.0"],\
  2464. ["debug", "virtual:1ff4b5f90832ba0a9c93ba1223af226e44ba70c1126a3740d93562b97bc36544e896a5e95908196f7458713e6a6089a34bfc67362fc6df7fa093bd06c878be47#npm:4.3.4"]\
  2465. ],\
  2466. "linkType": "HARD"\
  2467. }]\
  2468. ]],\
  2469. ["iconv-lite", [\
  2470. ["npm:0.6.3", {\
  2471. "packageLocation": "./.yarn/cache/iconv-lite-npm-0.6.3-24b8aae27e-3f60d47a5c.zip/node_modules/iconv-lite/",\
  2472. "packageDependencies": [\
  2473. ["iconv-lite", "npm:0.6.3"],\
  2474. ["safer-buffer", "npm:2.1.2"]\
  2475. ],\
  2476. "linkType": "HARD"\
  2477. }]\
  2478. ]],\
  2479. ["ignore", [\
  2480. ["npm:5.3.0", {\
  2481. "packageLocation": "./.yarn/cache/ignore-npm-5.3.0-fb0f5fa062-2736da6621.zip/node_modules/ignore/",\
  2482. "packageDependencies": [\
  2483. ["ignore", "npm:5.3.0"]\
  2484. ],\
  2485. "linkType": "HARD"\
  2486. }]\
  2487. ]],\
  2488. ["import-fresh", [\
  2489. ["npm:3.3.0", {\
  2490. "packageLocation": "./.yarn/cache/import-fresh-npm-3.3.0-3e34265ca9-2cacfad06e.zip/node_modules/import-fresh/",\
  2491. "packageDependencies": [\
  2492. ["import-fresh", "npm:3.3.0"],\
  2493. ["parent-module", "npm:1.0.1"],\
  2494. ["resolve-from", "npm:4.0.0"]\
  2495. ],\
  2496. "linkType": "HARD"\
  2497. }]\
  2498. ]],\
  2499. ["imurmurhash", [\
  2500. ["npm:0.1.4", {\
  2501. "packageLocation": "./.yarn/cache/imurmurhash-npm-0.1.4-610c5068a0-7cae75c8cd.zip/node_modules/imurmurhash/",\
  2502. "packageDependencies": [\
  2503. ["imurmurhash", "npm:0.1.4"]\
  2504. ],\
  2505. "linkType": "HARD"\
  2506. }]\
  2507. ]],\
  2508. ["indent-string", [\
  2509. ["npm:4.0.0", {\
  2510. "packageLocation": "./.yarn/cache/indent-string-npm-4.0.0-7b717435b2-824cfb9929.zip/node_modules/indent-string/",\
  2511. "packageDependencies": [\
  2512. ["indent-string", "npm:4.0.0"]\
  2513. ],\
  2514. "linkType": "HARD"\
  2515. }]\
  2516. ]],\
  2517. ["inflight", [\
  2518. ["npm:1.0.6", {\
  2519. "packageLocation": "./.yarn/cache/inflight-npm-1.0.6-ccedb4b908-f4f76aa072.zip/node_modules/inflight/",\
  2520. "packageDependencies": [\
  2521. ["inflight", "npm:1.0.6"],\
  2522. ["once", "npm:1.4.0"],\
  2523. ["wrappy", "npm:1.0.2"]\
  2524. ],\
  2525. "linkType": "HARD"\
  2526. }]\
  2527. ]],\
  2528. ["inherits", [\
  2529. ["npm:2.0.4", {\
  2530. "packageLocation": "./.yarn/cache/inherits-npm-2.0.4-c66b3957a0-4a48a73384.zip/node_modules/inherits/",\
  2531. "packageDependencies": [\
  2532. ["inherits", "npm:2.0.4"]\
  2533. ],\
  2534. "linkType": "HARD"\
  2535. }]\
  2536. ]],\
  2537. ["internal-slot", [\
  2538. ["npm:1.0.6", {\
  2539. "packageLocation": "./.yarn/cache/internal-slot-npm-1.0.6-1ed833e09a-7872454888.zip/node_modules/internal-slot/",\
  2540. "packageDependencies": [\
  2541. ["internal-slot", "npm:1.0.6"],\
  2542. ["get-intrinsic", "npm:1.2.2"],\
  2543. ["hasown", "npm:2.0.0"],\
  2544. ["side-channel", "npm:1.0.4"]\
  2545. ],\
  2546. "linkType": "HARD"\
  2547. }]\
  2548. ]],\
  2549. ["ip", [\
  2550. ["npm:2.0.0", {\
  2551. "packageLocation": "./.yarn/cache/ip-npm-2.0.0-204facb3cc-cfcfac6b87.zip/node_modules/ip/",\
  2552. "packageDependencies": [\
  2553. ["ip", "npm:2.0.0"]\
  2554. ],\
  2555. "linkType": "HARD"\
  2556. }]\
  2557. ]],\
  2558. ["is-array-buffer", [\
  2559. ["npm:3.0.2", {\
  2560. "packageLocation": "./.yarn/cache/is-array-buffer-npm-3.0.2-0dec897785-dcac9dda66.zip/node_modules/is-array-buffer/",\
  2561. "packageDependencies": [\
  2562. ["is-array-buffer", "npm:3.0.2"],\
  2563. ["call-bind", "npm:1.0.5"],\
  2564. ["get-intrinsic", "npm:1.2.2"],\
  2565. ["is-typed-array", "npm:1.1.12"]\
  2566. ],\
  2567. "linkType": "HARD"\
  2568. }]\
  2569. ]],\
  2570. ["is-async-function", [\
  2571. ["npm:2.0.0", {\
  2572. "packageLocation": "./.yarn/cache/is-async-function-npm-2.0.0-ebf8596ab1-e3471d95e6.zip/node_modules/is-async-function/",\
  2573. "packageDependencies": [\
  2574. ["is-async-function", "npm:2.0.0"],\
  2575. ["has-tostringtag", "npm:1.0.0"]\
  2576. ],\
  2577. "linkType": "HARD"\
  2578. }]\
  2579. ]],\
  2580. ["is-bigint", [\
  2581. ["npm:1.0.4", {\
  2582. "packageLocation": "./.yarn/cache/is-bigint-npm-1.0.4-31c2eecbc9-c56edfe09b.zip/node_modules/is-bigint/",\
  2583. "packageDependencies": [\
  2584. ["is-bigint", "npm:1.0.4"],\
  2585. ["has-bigints", "npm:1.0.2"]\
  2586. ],\
  2587. "linkType": "HARD"\
  2588. }]\
  2589. ]],\
  2590. ["is-boolean-object", [\
  2591. ["npm:1.1.2", {\
  2592. "packageLocation": "./.yarn/cache/is-boolean-object-npm-1.1.2-ecbd575e6a-c03b23dbaa.zip/node_modules/is-boolean-object/",\
  2593. "packageDependencies": [\
  2594. ["is-boolean-object", "npm:1.1.2"],\
  2595. ["call-bind", "npm:1.0.5"],\
  2596. ["has-tostringtag", "npm:1.0.0"]\
  2597. ],\
  2598. "linkType": "HARD"\
  2599. }]\
  2600. ]],\
  2601. ["is-callable", [\
  2602. ["npm:1.2.7", {\
  2603. "packageLocation": "./.yarn/cache/is-callable-npm-1.2.7-808a303e61-61fd57d03b.zip/node_modules/is-callable/",\
  2604. "packageDependencies": [\
  2605. ["is-callable", "npm:1.2.7"]\
  2606. ],\
  2607. "linkType": "HARD"\
  2608. }]\
  2609. ]],\
  2610. ["is-core-module", [\
  2611. ["npm:2.13.1", {\
  2612. "packageLocation": "./.yarn/cache/is-core-module-npm-2.13.1-36e17434f9-256559ee8a.zip/node_modules/is-core-module/",\
  2613. "packageDependencies": [\
  2614. ["is-core-module", "npm:2.13.1"],\
  2615. ["hasown", "npm:2.0.0"]\
  2616. ],\
  2617. "linkType": "HARD"\
  2618. }]\
  2619. ]],\
  2620. ["is-date-object", [\
  2621. ["npm:1.0.5", {\
  2622. "packageLocation": "./.yarn/cache/is-date-object-npm-1.0.5-88f3d08b5e-baa9077cdf.zip/node_modules/is-date-object/",\
  2623. "packageDependencies": [\
  2624. ["is-date-object", "npm:1.0.5"],\
  2625. ["has-tostringtag", "npm:1.0.0"]\
  2626. ],\
  2627. "linkType": "HARD"\
  2628. }]\
  2629. ]],\
  2630. ["is-extglob", [\
  2631. ["npm:2.1.1", {\
  2632. "packageLocation": "./.yarn/cache/is-extglob-npm-2.1.1-0870ea68b5-df033653d0.zip/node_modules/is-extglob/",\
  2633. "packageDependencies": [\
  2634. ["is-extglob", "npm:2.1.1"]\
  2635. ],\
  2636. "linkType": "HARD"\
  2637. }]\
  2638. ]],\
  2639. ["is-finalizationregistry", [\
  2640. ["npm:1.0.2", {\
  2641. "packageLocation": "./.yarn/cache/is-finalizationregistry-npm-1.0.2-15bf1bd7ce-4f243a8e06.zip/node_modules/is-finalizationregistry/",\
  2642. "packageDependencies": [\
  2643. ["is-finalizationregistry", "npm:1.0.2"],\
  2644. ["call-bind", "npm:1.0.5"]\
  2645. ],\
  2646. "linkType": "HARD"\
  2647. }]\
  2648. ]],\
  2649. ["is-fullwidth-code-point", [\
  2650. ["npm:3.0.0", {\
  2651. "packageLocation": "./.yarn/cache/is-fullwidth-code-point-npm-3.0.0-1ecf4ebee5-44a30c2945.zip/node_modules/is-fullwidth-code-point/",\
  2652. "packageDependencies": [\
  2653. ["is-fullwidth-code-point", "npm:3.0.0"]\
  2654. ],\
  2655. "linkType": "HARD"\
  2656. }]\
  2657. ]],\
  2658. ["is-generator-function", [\
  2659. ["npm:1.0.10", {\
  2660. "packageLocation": "./.yarn/cache/is-generator-function-npm-1.0.10-1d0f3809ef-d54644e7db.zip/node_modules/is-generator-function/",\
  2661. "packageDependencies": [\
  2662. ["is-generator-function", "npm:1.0.10"],\
  2663. ["has-tostringtag", "npm:1.0.0"]\
  2664. ],\
  2665. "linkType": "HARD"\
  2666. }]\
  2667. ]],\
  2668. ["is-glob", [\
  2669. ["npm:4.0.3", {\
  2670. "packageLocation": "./.yarn/cache/is-glob-npm-4.0.3-cb87bf1bdb-d381c1319f.zip/node_modules/is-glob/",\
  2671. "packageDependencies": [\
  2672. ["is-glob", "npm:4.0.3"],\
  2673. ["is-extglob", "npm:2.1.1"]\
  2674. ],\
  2675. "linkType": "HARD"\
  2676. }]\
  2677. ]],\
  2678. ["is-lambda", [\
  2679. ["npm:1.0.1", {\
  2680. "packageLocation": "./.yarn/cache/is-lambda-npm-1.0.1-7ab55bc8a8-93a32f0194.zip/node_modules/is-lambda/",\
  2681. "packageDependencies": [\
  2682. ["is-lambda", "npm:1.0.1"]\
  2683. ],\
  2684. "linkType": "HARD"\
  2685. }]\
  2686. ]],\
  2687. ["is-map", [\
  2688. ["npm:2.0.2", {\
  2689. "packageLocation": "./.yarn/cache/is-map-npm-2.0.2-486724dabc-ace3d0ecd6.zip/node_modules/is-map/",\
  2690. "packageDependencies": [\
  2691. ["is-map", "npm:2.0.2"]\
  2692. ],\
  2693. "linkType": "HARD"\
  2694. }]\
  2695. ]],\
  2696. ["is-negative-zero", [\
  2697. ["npm:2.0.2", {\
  2698. "packageLocation": "./.yarn/cache/is-negative-zero-npm-2.0.2-0adac91f15-f3232194c4.zip/node_modules/is-negative-zero/",\
  2699. "packageDependencies": [\
  2700. ["is-negative-zero", "npm:2.0.2"]\
  2701. ],\
  2702. "linkType": "HARD"\
  2703. }]\
  2704. ]],\
  2705. ["is-number-object", [\
  2706. ["npm:1.0.7", {\
  2707. "packageLocation": "./.yarn/cache/is-number-object-npm-1.0.7-539d0e274d-d1e8d01bb0.zip/node_modules/is-number-object/",\
  2708. "packageDependencies": [\
  2709. ["is-number-object", "npm:1.0.7"],\
  2710. ["has-tostringtag", "npm:1.0.0"]\
  2711. ],\
  2712. "linkType": "HARD"\
  2713. }]\
  2714. ]],\
  2715. ["is-path-inside", [\
  2716. ["npm:3.0.3", {\
  2717. "packageLocation": "./.yarn/cache/is-path-inside-npm-3.0.3-2ea0ef44fd-abd50f0618.zip/node_modules/is-path-inside/",\
  2718. "packageDependencies": [\
  2719. ["is-path-inside", "npm:3.0.3"]\
  2720. ],\
  2721. "linkType": "HARD"\
  2722. }]\
  2723. ]],\
  2724. ["is-regex", [\
  2725. ["npm:1.1.4", {\
  2726. "packageLocation": "./.yarn/cache/is-regex-npm-1.1.4-cca193ef11-362399b335.zip/node_modules/is-regex/",\
  2727. "packageDependencies": [\
  2728. ["is-regex", "npm:1.1.4"],\
  2729. ["call-bind", "npm:1.0.5"],\
  2730. ["has-tostringtag", "npm:1.0.0"]\
  2731. ],\
  2732. "linkType": "HARD"\
  2733. }]\
  2734. ]],\
  2735. ["is-set", [\
  2736. ["npm:2.0.2", {\
  2737. "packageLocation": "./.yarn/cache/is-set-npm-2.0.2-7e9ba84a8c-b64343faf4.zip/node_modules/is-set/",\
  2738. "packageDependencies": [\
  2739. ["is-set", "npm:2.0.2"]\
  2740. ],\
  2741. "linkType": "HARD"\
  2742. }]\
  2743. ]],\
  2744. ["is-shared-array-buffer", [\
  2745. ["npm:1.0.2", {\
  2746. "packageLocation": "./.yarn/cache/is-shared-array-buffer-npm-1.0.2-32e4181fcd-9508929cf1.zip/node_modules/is-shared-array-buffer/",\
  2747. "packageDependencies": [\
  2748. ["is-shared-array-buffer", "npm:1.0.2"],\
  2749. ["call-bind", "npm:1.0.5"]\
  2750. ],\
  2751. "linkType": "HARD"\
  2752. }]\
  2753. ]],\
  2754. ["is-string", [\
  2755. ["npm:1.0.7", {\
  2756. "packageLocation": "./.yarn/cache/is-string-npm-1.0.7-9f7066daed-323b3d0462.zip/node_modules/is-string/",\
  2757. "packageDependencies": [\
  2758. ["is-string", "npm:1.0.7"],\
  2759. ["has-tostringtag", "npm:1.0.0"]\
  2760. ],\
  2761. "linkType": "HARD"\
  2762. }]\
  2763. ]],\
  2764. ["is-symbol", [\
  2765. ["npm:1.0.4", {\
  2766. "packageLocation": "./.yarn/cache/is-symbol-npm-1.0.4-eb9baac703-92805812ef.zip/node_modules/is-symbol/",\
  2767. "packageDependencies": [\
  2768. ["is-symbol", "npm:1.0.4"],\
  2769. ["has-symbols", "npm:1.0.3"]\
  2770. ],\
  2771. "linkType": "HARD"\
  2772. }]\
  2773. ]],\
  2774. ["is-typed-array", [\
  2775. ["npm:1.1.12", {\
  2776. "packageLocation": "./.yarn/cache/is-typed-array-npm-1.1.12-6135c91b1a-4c89c4a3be.zip/node_modules/is-typed-array/",\
  2777. "packageDependencies": [\
  2778. ["is-typed-array", "npm:1.1.12"],\
  2779. ["which-typed-array", "npm:1.1.13"]\
  2780. ],\
  2781. "linkType": "HARD"\
  2782. }]\
  2783. ]],\
  2784. ["is-weakmap", [\
  2785. ["npm:2.0.1", {\
  2786. "packageLocation": "./.yarn/cache/is-weakmap-npm-2.0.1-88ca3d1dc4-1222bb7e90.zip/node_modules/is-weakmap/",\
  2787. "packageDependencies": [\
  2788. ["is-weakmap", "npm:2.0.1"]\
  2789. ],\
  2790. "linkType": "HARD"\
  2791. }]\
  2792. ]],\
  2793. ["is-weakref", [\
  2794. ["npm:1.0.2", {\
  2795. "packageLocation": "./.yarn/cache/is-weakref-npm-1.0.2-ff80e8c314-95bd9a57cd.zip/node_modules/is-weakref/",\
  2796. "packageDependencies": [\
  2797. ["is-weakref", "npm:1.0.2"],\
  2798. ["call-bind", "npm:1.0.5"]\
  2799. ],\
  2800. "linkType": "HARD"\
  2801. }]\
  2802. ]],\
  2803. ["is-weakset", [\
  2804. ["npm:2.0.2", {\
  2805. "packageLocation": "./.yarn/cache/is-weakset-npm-2.0.2-b3cbc6c9cd-5d8698d1fa.zip/node_modules/is-weakset/",\
  2806. "packageDependencies": [\
  2807. ["is-weakset", "npm:2.0.2"],\
  2808. ["call-bind", "npm:1.0.5"],\
  2809. ["get-intrinsic", "npm:1.2.2"]\
  2810. ],\
  2811. "linkType": "HARD"\
  2812. }]\
  2813. ]],\
  2814. ["isarray", [\
  2815. ["npm:2.0.5", {\
  2816. "packageLocation": "./.yarn/cache/isarray-npm-2.0.5-4ba522212d-bd5bbe4104.zip/node_modules/isarray/",\
  2817. "packageDependencies": [\
  2818. ["isarray", "npm:2.0.5"]\
  2819. ],\
  2820. "linkType": "HARD"\
  2821. }]\
  2822. ]],\
  2823. ["isexe", [\
  2824. ["npm:2.0.0", {\
  2825. "packageLocation": "./.yarn/cache/isexe-npm-2.0.0-b58870bd2e-26bf6c5480.zip/node_modules/isexe/",\
  2826. "packageDependencies": [\
  2827. ["isexe", "npm:2.0.0"]\
  2828. ],\
  2829. "linkType": "HARD"\
  2830. }],\
  2831. ["npm:3.1.1", {\
  2832. "packageLocation": "./.yarn/cache/isexe-npm-3.1.1-9c0061eead-7fe1931ee4.zip/node_modules/isexe/",\
  2833. "packageDependencies": [\
  2834. ["isexe", "npm:3.1.1"]\
  2835. ],\
  2836. "linkType": "HARD"\
  2837. }]\
  2838. ]],\
  2839. ["iterator.prototype", [\
  2840. ["npm:1.1.2", {\
  2841. "packageLocation": "./.yarn/cache/iterator.prototype-npm-1.1.2-009f234a21-d8a507e2cc.zip/node_modules/iterator.prototype/",\
  2842. "packageDependencies": [\
  2843. ["iterator.prototype", "npm:1.1.2"],\
  2844. ["define-properties", "npm:1.2.1"],\
  2845. ["get-intrinsic", "npm:1.2.2"],\
  2846. ["has-symbols", "npm:1.0.3"],\
  2847. ["reflect.getprototypeof", "npm:1.0.4"],\
  2848. ["set-function-name", "npm:2.0.1"]\
  2849. ],\
  2850. "linkType": "HARD"\
  2851. }]\
  2852. ]],\
  2853. ["jackspeak", [\
  2854. ["npm:2.3.6", {\
  2855. "packageLocation": "./.yarn/cache/jackspeak-npm-2.3.6-42e1233172-57d43ad11e.zip/node_modules/jackspeak/",\
  2856. "packageDependencies": [\
  2857. ["jackspeak", "npm:2.3.6"],\
  2858. ["@isaacs/cliui", "npm:8.0.2"],\
  2859. ["@pkgjs/parseargs", "npm:0.11.0"]\
  2860. ],\
  2861. "linkType": "HARD"\
  2862. }]\
  2863. ]],\
  2864. ["js-tokens", [\
  2865. ["npm:4.0.0", {\
  2866. "packageLocation": "./.yarn/cache/js-tokens-npm-4.0.0-0ac852e9e2-8a95213a5a.zip/node_modules/js-tokens/",\
  2867. "packageDependencies": [\
  2868. ["js-tokens", "npm:4.0.0"]\
  2869. ],\
  2870. "linkType": "HARD"\
  2871. }]\
  2872. ]],\
  2873. ["js-yaml", [\
  2874. ["npm:4.1.0", {\
  2875. "packageLocation": "./.yarn/cache/js-yaml-npm-4.1.0-3606f32312-c7830dfd45.zip/node_modules/js-yaml/",\
  2876. "packageDependencies": [\
  2877. ["js-yaml", "npm:4.1.0"],\
  2878. ["argparse", "npm:2.0.1"]\
  2879. ],\
  2880. "linkType": "HARD"\
  2881. }]\
  2882. ]],\
  2883. ["jsesc", [\
  2884. ["npm:2.5.2", {\
  2885. "packageLocation": "./.yarn/cache/jsesc-npm-2.5.2-c5acb78804-4dc1907711.zip/node_modules/jsesc/",\
  2886. "packageDependencies": [\
  2887. ["jsesc", "npm:2.5.2"]\
  2888. ],\
  2889. "linkType": "HARD"\
  2890. }]\
  2891. ]],\
  2892. ["json-buffer", [\
  2893. ["npm:3.0.1", {\
  2894. "packageLocation": "./.yarn/cache/json-buffer-npm-3.0.1-f8f6d20603-9026b03edc.zip/node_modules/json-buffer/",\
  2895. "packageDependencies": [\
  2896. ["json-buffer", "npm:3.0.1"]\
  2897. ],\
  2898. "linkType": "HARD"\
  2899. }]\
  2900. ]],\
  2901. ["json-schema-traverse", [\
  2902. ["npm:0.4.1", {\
  2903. "packageLocation": "./.yarn/cache/json-schema-traverse-npm-0.4.1-4759091693-7486074d3b.zip/node_modules/json-schema-traverse/",\
  2904. "packageDependencies": [\
  2905. ["json-schema-traverse", "npm:0.4.1"]\
  2906. ],\
  2907. "linkType": "HARD"\
  2908. }]\
  2909. ]],\
  2910. ["json-stable-stringify-without-jsonify", [\
  2911. ["npm:1.0.1", {\
  2912. "packageLocation": "./.yarn/cache/json-stable-stringify-without-jsonify-npm-1.0.1-b65772b28b-cff44156dd.zip/node_modules/json-stable-stringify-without-jsonify/",\
  2913. "packageDependencies": [\
  2914. ["json-stable-stringify-without-jsonify", "npm:1.0.1"]\
  2915. ],\
  2916. "linkType": "HARD"\
  2917. }]\
  2918. ]],\
  2919. ["json5", [\
  2920. ["npm:2.2.3", {\
  2921. "packageLocation": "./.yarn/cache/json5-npm-2.2.3-9962c55073-2a7436a933.zip/node_modules/json5/",\
  2922. "packageDependencies": [\
  2923. ["json5", "npm:2.2.3"]\
  2924. ],\
  2925. "linkType": "HARD"\
  2926. }]\
  2927. ]],\
  2928. ["jsx-ast-utils", [\
  2929. ["npm:3.3.5", {\
  2930. "packageLocation": "./.yarn/cache/jsx-ast-utils-npm-3.3.5-114c80f97a-f4b05fa4d7.zip/node_modules/jsx-ast-utils/",\
  2931. "packageDependencies": [\
  2932. ["jsx-ast-utils", "npm:3.3.5"],\
  2933. ["array-includes", "npm:3.1.7"],\
  2934. ["array.prototype.flat", "npm:1.3.2"],\
  2935. ["object.assign", "npm:4.1.5"],\
  2936. ["object.values", "npm:1.1.7"]\
  2937. ],\
  2938. "linkType": "HARD"\
  2939. }]\
  2940. ]],\
  2941. ["keyv", [\
  2942. ["npm:4.5.4", {\
  2943. "packageLocation": "./.yarn/cache/keyv-npm-4.5.4-4c8e2cf7f7-74a24395b1.zip/node_modules/keyv/",\
  2944. "packageDependencies": [\
  2945. ["keyv", "npm:4.5.4"],\
  2946. ["json-buffer", "npm:3.0.1"]\
  2947. ],\
  2948. "linkType": "HARD"\
  2949. }]\
  2950. ]],\
  2951. ["levn", [\
  2952. ["npm:0.4.1", {\
  2953. "packageLocation": "./.yarn/cache/levn-npm-0.4.1-d183b2d7bb-12c5021c85.zip/node_modules/levn/",\
  2954. "packageDependencies": [\
  2955. ["levn", "npm:0.4.1"],\
  2956. ["prelude-ls", "npm:1.2.1"],\
  2957. ["type-check", "npm:0.4.0"]\
  2958. ],\
  2959. "linkType": "HARD"\
  2960. }]\
  2961. ]],\
  2962. ["lihongdong_proto", [\
  2963. ["workspace:.", {\
  2964. "packageLocation": "./",\
  2965. "packageDependencies": [\
  2966. ["lihongdong_proto", "workspace:."],\
  2967. ["@types/react", "npm:18.2.42"],\
  2968. ["@types/react-dom", "npm:18.2.17"],\
  2969. ["@vitejs/plugin-react", "virtual:886e61fa7e6c7b2ced7980b68a5ec81e7559ed62a5e4bd0d20a3077c159398b6fcf9f9fce97484d3befe2143009a06709cd8e96ea637527ac9f0813dcc5f7523#npm:4.2.1"],\
  2970. ["eslint", "npm:8.55.0"],\
  2971. ["eslint-plugin-react", "virtual:886e61fa7e6c7b2ced7980b68a5ec81e7559ed62a5e4bd0d20a3077c159398b6fcf9f9fce97484d3befe2143009a06709cd8e96ea637527ac9f0813dcc5f7523#npm:7.33.2"],\
  2972. ["eslint-plugin-react-hooks", "virtual:886e61fa7e6c7b2ced7980b68a5ec81e7559ed62a5e4bd0d20a3077c159398b6fcf9f9fce97484d3befe2143009a06709cd8e96ea637527ac9f0813dcc5f7523#npm:4.6.0"],\
  2973. ["eslint-plugin-react-refresh", "virtual:886e61fa7e6c7b2ced7980b68a5ec81e7559ed62a5e4bd0d20a3077c159398b6fcf9f9fce97484d3befe2143009a06709cd8e96ea637527ac9f0813dcc5f7523#npm:0.4.5"],\
  2974. ["react", "npm:18.2.0"],\
  2975. ["react-dom", "virtual:886e61fa7e6c7b2ced7980b68a5ec81e7559ed62a5e4bd0d20a3077c159398b6fcf9f9fce97484d3befe2143009a06709cd8e96ea637527ac9f0813dcc5f7523#npm:18.2.0"],\
  2976. ["react-router-dom", "virtual:886e61fa7e6c7b2ced7980b68a5ec81e7559ed62a5e4bd0d20a3077c159398b6fcf9f9fce97484d3befe2143009a06709cd8e96ea637527ac9f0813dcc5f7523#npm:6.20.1"],\
  2977. ["tdesign-react", "virtual:886e61fa7e6c7b2ced7980b68a5ec81e7559ed62a5e4bd0d20a3077c159398b6fcf9f9fce97484d3befe2143009a06709cd8e96ea637527ac9f0813dcc5f7523#npm:1.4.0"],\
  2978. ["vite", "virtual:886e61fa7e6c7b2ced7980b68a5ec81e7559ed62a5e4bd0d20a3077c159398b6fcf9f9fce97484d3befe2143009a06709cd8e96ea637527ac9f0813dcc5f7523#npm:5.0.5"]\
  2979. ],\
  2980. "linkType": "SOFT"\
  2981. }]\
  2982. ]],\
  2983. ["locate-path", [\
  2984. ["npm:6.0.0", {\
  2985. "packageLocation": "./.yarn/cache/locate-path-npm-6.0.0-06a1e4c528-72eb661788.zip/node_modules/locate-path/",\
  2986. "packageDependencies": [\
  2987. ["locate-path", "npm:6.0.0"],\
  2988. ["p-locate", "npm:5.0.0"]\
  2989. ],\
  2990. "linkType": "HARD"\
  2991. }]\
  2992. ]],\
  2993. ["lodash", [\
  2994. ["npm:4.17.21", {\
  2995. "packageLocation": "./.yarn/cache/lodash-npm-4.17.21-6382451519-eb835a2e51.zip/node_modules/lodash/",\
  2996. "packageDependencies": [\
  2997. ["lodash", "npm:4.17.21"]\
  2998. ],\
  2999. "linkType": "HARD"\
  3000. }]\
  3001. ]],\
  3002. ["lodash.merge", [\
  3003. ["npm:4.6.2", {\
  3004. "packageLocation": "./.yarn/cache/lodash.merge-npm-4.6.2-77cb4416bf-ad580b4bdb.zip/node_modules/lodash.merge/",\
  3005. "packageDependencies": [\
  3006. ["lodash.merge", "npm:4.6.2"]\
  3007. ],\
  3008. "linkType": "HARD"\
  3009. }]\
  3010. ]],\
  3011. ["loose-envify", [\
  3012. ["npm:1.4.0", {\
  3013. "packageLocation": "./.yarn/cache/loose-envify-npm-1.4.0-6307b72ccf-6517e24e0c.zip/node_modules/loose-envify/",\
  3014. "packageDependencies": [\
  3015. ["loose-envify", "npm:1.4.0"],\
  3016. ["js-tokens", "npm:4.0.0"]\
  3017. ],\
  3018. "linkType": "HARD"\
  3019. }]\
  3020. ]],\
  3021. ["lru-cache", [\
  3022. ["npm:10.1.0", {\
  3023. "packageLocation": "./.yarn/cache/lru-cache-npm-10.1.0-f3d3a0f0ab-58056d33e2.zip/node_modules/lru-cache/",\
  3024. "packageDependencies": [\
  3025. ["lru-cache", "npm:10.1.0"]\
  3026. ],\
  3027. "linkType": "HARD"\
  3028. }],\
  3029. ["npm:5.1.1", {\
  3030. "packageLocation": "./.yarn/cache/lru-cache-npm-5.1.1-f475882a51-c154ae1cbb.zip/node_modules/lru-cache/",\
  3031. "packageDependencies": [\
  3032. ["lru-cache", "npm:5.1.1"],\
  3033. ["yallist", "npm:3.1.1"]\
  3034. ],\
  3035. "linkType": "HARD"\
  3036. }],\
  3037. ["npm:6.0.0", {\
  3038. "packageLocation": "./.yarn/cache/lru-cache-npm-6.0.0-b4c8668fe1-f97f499f89.zip/node_modules/lru-cache/",\
  3039. "packageDependencies": [\
  3040. ["lru-cache", "npm:6.0.0"],\
  3041. ["yallist", "npm:4.0.0"]\
  3042. ],\
  3043. "linkType": "HARD"\
  3044. }]\
  3045. ]],\
  3046. ["make-fetch-happen", [\
  3047. ["npm:13.0.0", {\
  3048. "packageLocation": "./.yarn/cache/make-fetch-happen-npm-13.0.0-f87a92bb87-7c7a6d381c.zip/node_modules/make-fetch-happen/",\
  3049. "packageDependencies": [\
  3050. ["make-fetch-happen", "npm:13.0.0"],\
  3051. ["@npmcli/agent", "npm:2.2.0"],\
  3052. ["cacache", "npm:18.0.1"],\
  3053. ["http-cache-semantics", "npm:4.1.1"],\
  3054. ["is-lambda", "npm:1.0.1"],\
  3055. ["minipass", "npm:7.0.4"],\
  3056. ["minipass-fetch", "npm:3.0.4"],\
  3057. ["minipass-flush", "npm:1.0.5"],\
  3058. ["minipass-pipeline", "npm:1.2.4"],\
  3059. ["negotiator", "npm:0.6.3"],\
  3060. ["promise-retry", "npm:2.0.1"],\
  3061. ["ssri", "npm:10.0.5"]\
  3062. ],\
  3063. "linkType": "HARD"\
  3064. }]\
  3065. ]],\
  3066. ["minimatch", [\
  3067. ["npm:3.1.2", {\
  3068. "packageLocation": "./.yarn/cache/minimatch-npm-3.1.2-9405269906-c154e56640.zip/node_modules/minimatch/",\
  3069. "packageDependencies": [\
  3070. ["minimatch", "npm:3.1.2"],\
  3071. ["brace-expansion", "npm:1.1.11"]\
  3072. ],\
  3073. "linkType": "HARD"\
  3074. }],\
  3075. ["npm:9.0.3", {\
  3076. "packageLocation": "./.yarn/cache/minimatch-npm-9.0.3-69d7d6fad5-253487976b.zip/node_modules/minimatch/",\
  3077. "packageDependencies": [\
  3078. ["minimatch", "npm:9.0.3"],\
  3079. ["brace-expansion", "npm:2.0.1"]\
  3080. ],\
  3081. "linkType": "HARD"\
  3082. }]\
  3083. ]],\
  3084. ["minipass", [\
  3085. ["npm:3.3.6", {\
  3086. "packageLocation": "./.yarn/cache/minipass-npm-3.3.6-b8d93a945b-a30d083c80.zip/node_modules/minipass/",\
  3087. "packageDependencies": [\
  3088. ["minipass", "npm:3.3.6"],\
  3089. ["yallist", "npm:4.0.0"]\
  3090. ],\
  3091. "linkType": "HARD"\
  3092. }],\
  3093. ["npm:5.0.0", {\
  3094. "packageLocation": "./.yarn/cache/minipass-npm-5.0.0-c64fb63c92-425dab2887.zip/node_modules/minipass/",\
  3095. "packageDependencies": [\
  3096. ["minipass", "npm:5.0.0"]\
  3097. ],\
  3098. "linkType": "HARD"\
  3099. }],\
  3100. ["npm:7.0.4", {\
  3101. "packageLocation": "./.yarn/cache/minipass-npm-7.0.4-eacb4e042e-87585e258b.zip/node_modules/minipass/",\
  3102. "packageDependencies": [\
  3103. ["minipass", "npm:7.0.4"]\
  3104. ],\
  3105. "linkType": "HARD"\
  3106. }]\
  3107. ]],\
  3108. ["minipass-collect", [\
  3109. ["npm:2.0.1", {\
  3110. "packageLocation": "./.yarn/cache/minipass-collect-npm-2.0.1-73d3907e40-b251bceea6.zip/node_modules/minipass-collect/",\
  3111. "packageDependencies": [\
  3112. ["minipass-collect", "npm:2.0.1"],\
  3113. ["minipass", "npm:7.0.4"]\
  3114. ],\
  3115. "linkType": "HARD"\
  3116. }]\
  3117. ]],\
  3118. ["minipass-fetch", [\
  3119. ["npm:3.0.4", {\
  3120. "packageLocation": "./.yarn/cache/minipass-fetch-npm-3.0.4-200ac7c66d-af7aad15d5.zip/node_modules/minipass-fetch/",\
  3121. "packageDependencies": [\
  3122. ["minipass-fetch", "npm:3.0.4"],\
  3123. ["encoding", "npm:0.1.13"],\
  3124. ["minipass", "npm:7.0.4"],\
  3125. ["minipass-sized", "npm:1.0.3"],\
  3126. ["minizlib", "npm:2.1.2"]\
  3127. ],\
  3128. "linkType": "HARD"\
  3129. }]\
  3130. ]],\
  3131. ["minipass-flush", [\
  3132. ["npm:1.0.5", {\
  3133. "packageLocation": "./.yarn/cache/minipass-flush-npm-1.0.5-efe79d9826-56269a0b22.zip/node_modules/minipass-flush/",\
  3134. "packageDependencies": [\
  3135. ["minipass-flush", "npm:1.0.5"],\
  3136. ["minipass", "npm:3.3.6"]\
  3137. ],\
  3138. "linkType": "HARD"\
  3139. }]\
  3140. ]],\
  3141. ["minipass-pipeline", [\
  3142. ["npm:1.2.4", {\
  3143. "packageLocation": "./.yarn/cache/minipass-pipeline-npm-1.2.4-5924cb077f-b14240dac0.zip/node_modules/minipass-pipeline/",\
  3144. "packageDependencies": [\
  3145. ["minipass-pipeline", "npm:1.2.4"],\
  3146. ["minipass", "npm:3.3.6"]\
  3147. ],\
  3148. "linkType": "HARD"\
  3149. }]\
  3150. ]],\
  3151. ["minipass-sized", [\
  3152. ["npm:1.0.3", {\
  3153. "packageLocation": "./.yarn/cache/minipass-sized-npm-1.0.3-306d86f432-79076749fc.zip/node_modules/minipass-sized/",\
  3154. "packageDependencies": [\
  3155. ["minipass-sized", "npm:1.0.3"],\
  3156. ["minipass", "npm:3.3.6"]\
  3157. ],\
  3158. "linkType": "HARD"\
  3159. }]\
  3160. ]],\
  3161. ["minizlib", [\
  3162. ["npm:2.1.2", {\
  3163. "packageLocation": "./.yarn/cache/minizlib-npm-2.1.2-ea89cd0cfb-f1fdeac0b0.zip/node_modules/minizlib/",\
  3164. "packageDependencies": [\
  3165. ["minizlib", "npm:2.1.2"],\
  3166. ["minipass", "npm:3.3.6"],\
  3167. ["yallist", "npm:4.0.0"]\
  3168. ],\
  3169. "linkType": "HARD"\
  3170. }]\
  3171. ]],\
  3172. ["mitt", [\
  3173. ["npm:3.0.1", {\
  3174. "packageLocation": "./.yarn/cache/mitt-npm-3.0.1-ce290ffa77-b55a489ac9.zip/node_modules/mitt/",\
  3175. "packageDependencies": [\
  3176. ["mitt", "npm:3.0.1"]\
  3177. ],\
  3178. "linkType": "HARD"\
  3179. }]\
  3180. ]],\
  3181. ["mkdirp", [\
  3182. ["npm:1.0.4", {\
  3183. "packageLocation": "./.yarn/cache/mkdirp-npm-1.0.4-37f6ef56b9-a96865108c.zip/node_modules/mkdirp/",\
  3184. "packageDependencies": [\
  3185. ["mkdirp", "npm:1.0.4"]\
  3186. ],\
  3187. "linkType": "HARD"\
  3188. }]\
  3189. ]],\
  3190. ["ms", [\
  3191. ["npm:2.1.2", {\
  3192. "packageLocation": "./.yarn/cache/ms-npm-2.1.2-ec0c1512ff-673cdb2c31.zip/node_modules/ms/",\
  3193. "packageDependencies": [\
  3194. ["ms", "npm:2.1.2"]\
  3195. ],\
  3196. "linkType": "HARD"\
  3197. }]\
  3198. ]],\
  3199. ["nanoid", [\
  3200. ["npm:3.3.7", {\
  3201. "packageLocation": "./.yarn/cache/nanoid-npm-3.3.7-98824ba130-d36c427e53.zip/node_modules/nanoid/",\
  3202. "packageDependencies": [\
  3203. ["nanoid", "npm:3.3.7"]\
  3204. ],\
  3205. "linkType": "HARD"\
  3206. }]\
  3207. ]],\
  3208. ["natural-compare", [\
  3209. ["npm:1.4.0", {\
  3210. "packageLocation": "./.yarn/cache/natural-compare-npm-1.4.0-97b75b362d-23ad088b08.zip/node_modules/natural-compare/",\
  3211. "packageDependencies": [\
  3212. ["natural-compare", "npm:1.4.0"]\
  3213. ],\
  3214. "linkType": "HARD"\
  3215. }]\
  3216. ]],\
  3217. ["negotiator", [\
  3218. ["npm:0.6.3", {\
  3219. "packageLocation": "./.yarn/cache/negotiator-npm-0.6.3-9d50e36171-b8ffeb1e26.zip/node_modules/negotiator/",\
  3220. "packageDependencies": [\
  3221. ["negotiator", "npm:0.6.3"]\
  3222. ],\
  3223. "linkType": "HARD"\
  3224. }]\
  3225. ]],\
  3226. ["node-gyp", [\
  3227. ["npm:10.0.1", {\
  3228. "packageLocation": "./.yarn/unplugged/node-gyp-npm-10.0.1-48708ce70b/node_modules/node-gyp/",\
  3229. "packageDependencies": [\
  3230. ["node-gyp", "npm:10.0.1"],\
  3231. ["env-paths", "npm:2.2.1"],\
  3232. ["exponential-backoff", "npm:3.1.1"],\
  3233. ["glob", "npm:10.3.10"],\
  3234. ["graceful-fs", "npm:4.2.11"],\
  3235. ["make-fetch-happen", "npm:13.0.0"],\
  3236. ["nopt", "npm:7.2.0"],\
  3237. ["proc-log", "npm:3.0.0"],\
  3238. ["semver", "npm:7.5.4"],\
  3239. ["tar", "npm:6.2.0"],\
  3240. ["which", "npm:4.0.0"]\
  3241. ],\
  3242. "linkType": "HARD"\
  3243. }]\
  3244. ]],\
  3245. ["node-releases", [\
  3246. ["npm:2.0.14", {\
  3247. "packageLocation": "./.yarn/cache/node-releases-npm-2.0.14-d39047cad8-59443a2f77.zip/node_modules/node-releases/",\
  3248. "packageDependencies": [\
  3249. ["node-releases", "npm:2.0.14"]\
  3250. ],\
  3251. "linkType": "HARD"\
  3252. }]\
  3253. ]],\
  3254. ["nopt", [\
  3255. ["npm:7.2.0", {\
  3256. "packageLocation": "./.yarn/cache/nopt-npm-7.2.0-dd734b678d-a9c0f57fb8.zip/node_modules/nopt/",\
  3257. "packageDependencies": [\
  3258. ["nopt", "npm:7.2.0"],\
  3259. ["abbrev", "npm:2.0.0"]\
  3260. ],\
  3261. "linkType": "HARD"\
  3262. }]\
  3263. ]],\
  3264. ["object-assign", [\
  3265. ["npm:4.1.1", {\
  3266. "packageLocation": "./.yarn/cache/object-assign-npm-4.1.1-1004ad6dec-fcc6e4ea8c.zip/node_modules/object-assign/",\
  3267. "packageDependencies": [\
  3268. ["object-assign", "npm:4.1.1"]\
  3269. ],\
  3270. "linkType": "HARD"\
  3271. }]\
  3272. ]],\
  3273. ["object-inspect", [\
  3274. ["npm:1.13.1", {\
  3275. "packageLocation": "./.yarn/cache/object-inspect-npm-1.13.1-fd038a2f0a-7d9fa9221d.zip/node_modules/object-inspect/",\
  3276. "packageDependencies": [\
  3277. ["object-inspect", "npm:1.13.1"]\
  3278. ],\
  3279. "linkType": "HARD"\
  3280. }]\
  3281. ]],\
  3282. ["object-keys", [\
  3283. ["npm:1.1.1", {\
  3284. "packageLocation": "./.yarn/cache/object-keys-npm-1.1.1-1bf2f1be93-b363c5e764.zip/node_modules/object-keys/",\
  3285. "packageDependencies": [\
  3286. ["object-keys", "npm:1.1.1"]\
  3287. ],\
  3288. "linkType": "HARD"\
  3289. }]\
  3290. ]],\
  3291. ["object.assign", [\
  3292. ["npm:4.1.5", {\
  3293. "packageLocation": "./.yarn/cache/object.assign-npm-4.1.5-aa3b2260ba-f9aeac0541.zip/node_modules/object.assign/",\
  3294. "packageDependencies": [\
  3295. ["object.assign", "npm:4.1.5"],\
  3296. ["call-bind", "npm:1.0.5"],\
  3297. ["define-properties", "npm:1.2.1"],\
  3298. ["has-symbols", "npm:1.0.3"],\
  3299. ["object-keys", "npm:1.1.1"]\
  3300. ],\
  3301. "linkType": "HARD"\
  3302. }]\
  3303. ]],\
  3304. ["object.entries", [\
  3305. ["npm:1.1.7", {\
  3306. "packageLocation": "./.yarn/cache/object.entries-npm-1.1.7-f2a7fea503-da287d434e.zip/node_modules/object.entries/",\
  3307. "packageDependencies": [\
  3308. ["object.entries", "npm:1.1.7"],\
  3309. ["call-bind", "npm:1.0.5"],\
  3310. ["define-properties", "npm:1.2.1"],\
  3311. ["es-abstract", "npm:1.22.3"]\
  3312. ],\
  3313. "linkType": "HARD"\
  3314. }]\
  3315. ]],\
  3316. ["object.fromentries", [\
  3317. ["npm:2.0.7", {\
  3318. "packageLocation": "./.yarn/cache/object.fromentries-npm-2.0.7-2e38392540-7341ce246e.zip/node_modules/object.fromentries/",\
  3319. "packageDependencies": [\
  3320. ["object.fromentries", "npm:2.0.7"],\
  3321. ["call-bind", "npm:1.0.5"],\
  3322. ["define-properties", "npm:1.2.1"],\
  3323. ["es-abstract", "npm:1.22.3"]\
  3324. ],\
  3325. "linkType": "HARD"\
  3326. }]\
  3327. ]],\
  3328. ["object.hasown", [\
  3329. ["npm:1.1.3", {\
  3330. "packageLocation": "./.yarn/cache/object.hasown-npm-1.1.3-84e62d27f5-76bc17356f.zip/node_modules/object.hasown/",\
  3331. "packageDependencies": [\
  3332. ["object.hasown", "npm:1.1.3"],\
  3333. ["define-properties", "npm:1.2.1"],\
  3334. ["es-abstract", "npm:1.22.3"]\
  3335. ],\
  3336. "linkType": "HARD"\
  3337. }]\
  3338. ]],\
  3339. ["object.values", [\
  3340. ["npm:1.1.7", {\
  3341. "packageLocation": "./.yarn/cache/object.values-npm-1.1.7-deae619f88-f3e4ae4f21.zip/node_modules/object.values/",\
  3342. "packageDependencies": [\
  3343. ["object.values", "npm:1.1.7"],\
  3344. ["call-bind", "npm:1.0.5"],\
  3345. ["define-properties", "npm:1.2.1"],\
  3346. ["es-abstract", "npm:1.22.3"]\
  3347. ],\
  3348. "linkType": "HARD"\
  3349. }]\
  3350. ]],\
  3351. ["once", [\
  3352. ["npm:1.4.0", {\
  3353. "packageLocation": "./.yarn/cache/once-npm-1.4.0-ccf03ef07a-cd0a885013.zip/node_modules/once/",\
  3354. "packageDependencies": [\
  3355. ["once", "npm:1.4.0"],\
  3356. ["wrappy", "npm:1.0.2"]\
  3357. ],\
  3358. "linkType": "HARD"\
  3359. }]\
  3360. ]],\
  3361. ["optionator", [\
  3362. ["npm:0.9.3", {\
  3363. "packageLocation": "./.yarn/cache/optionator-npm-0.9.3-56c3a4bf80-0928199944.zip/node_modules/optionator/",\
  3364. "packageDependencies": [\
  3365. ["optionator", "npm:0.9.3"],\
  3366. ["@aashutoshrathi/word-wrap", "npm:1.2.6"],\
  3367. ["deep-is", "npm:0.1.4"],\
  3368. ["fast-levenshtein", "npm:2.0.6"],\
  3369. ["levn", "npm:0.4.1"],\
  3370. ["prelude-ls", "npm:1.2.1"],\
  3371. ["type-check", "npm:0.4.0"]\
  3372. ],\
  3373. "linkType": "HARD"\
  3374. }]\
  3375. ]],\
  3376. ["p-limit", [\
  3377. ["npm:3.1.0", {\
  3378. "packageLocation": "./.yarn/cache/p-limit-npm-3.1.0-05d2ede37f-7c3690c4db.zip/node_modules/p-limit/",\
  3379. "packageDependencies": [\
  3380. ["p-limit", "npm:3.1.0"],\
  3381. ["yocto-queue", "npm:0.1.0"]\
  3382. ],\
  3383. "linkType": "HARD"\
  3384. }]\
  3385. ]],\
  3386. ["p-locate", [\
  3387. ["npm:5.0.0", {\
  3388. "packageLocation": "./.yarn/cache/p-locate-npm-5.0.0-92cc7c7a3e-1623088f36.zip/node_modules/p-locate/",\
  3389. "packageDependencies": [\
  3390. ["p-locate", "npm:5.0.0"],\
  3391. ["p-limit", "npm:3.1.0"]\
  3392. ],\
  3393. "linkType": "HARD"\
  3394. }]\
  3395. ]],\
  3396. ["p-map", [\
  3397. ["npm:4.0.0", {\
  3398. "packageLocation": "./.yarn/cache/p-map-npm-4.0.0-4677ae07c7-cb0ab21ec0.zip/node_modules/p-map/",\
  3399. "packageDependencies": [\
  3400. ["p-map", "npm:4.0.0"],\
  3401. ["aggregate-error", "npm:3.1.0"]\
  3402. ],\
  3403. "linkType": "HARD"\
  3404. }]\
  3405. ]],\
  3406. ["parent-module", [\
  3407. ["npm:1.0.1", {\
  3408. "packageLocation": "./.yarn/cache/parent-module-npm-1.0.1-1fae11b095-6ba8b25514.zip/node_modules/parent-module/",\
  3409. "packageDependencies": [\
  3410. ["parent-module", "npm:1.0.1"],\
  3411. ["callsites", "npm:3.1.0"]\
  3412. ],\
  3413. "linkType": "HARD"\
  3414. }]\
  3415. ]],\
  3416. ["path-exists", [\
  3417. ["npm:4.0.0", {\
  3418. "packageLocation": "./.yarn/cache/path-exists-npm-4.0.0-e9e4f63eb0-505807199d.zip/node_modules/path-exists/",\
  3419. "packageDependencies": [\
  3420. ["path-exists", "npm:4.0.0"]\
  3421. ],\
  3422. "linkType": "HARD"\
  3423. }]\
  3424. ]],\
  3425. ["path-is-absolute", [\
  3426. ["npm:1.0.1", {\
  3427. "packageLocation": "./.yarn/cache/path-is-absolute-npm-1.0.1-31bc695ffd-060840f92c.zip/node_modules/path-is-absolute/",\
  3428. "packageDependencies": [\
  3429. ["path-is-absolute", "npm:1.0.1"]\
  3430. ],\
  3431. "linkType": "HARD"\
  3432. }]\
  3433. ]],\
  3434. ["path-key", [\
  3435. ["npm:3.1.1", {\
  3436. "packageLocation": "./.yarn/cache/path-key-npm-3.1.1-0e66ea8321-55cd7a9dd4.zip/node_modules/path-key/",\
  3437. "packageDependencies": [\
  3438. ["path-key", "npm:3.1.1"]\
  3439. ],\
  3440. "linkType": "HARD"\
  3441. }]\
  3442. ]],\
  3443. ["path-parse", [\
  3444. ["npm:1.0.7", {\
  3445. "packageLocation": "./.yarn/cache/path-parse-npm-1.0.7-09564527b7-49abf3d811.zip/node_modules/path-parse/",\
  3446. "packageDependencies": [\
  3447. ["path-parse", "npm:1.0.7"]\
  3448. ],\
  3449. "linkType": "HARD"\
  3450. }]\
  3451. ]],\
  3452. ["path-scurry", [\
  3453. ["npm:1.10.1", {\
  3454. "packageLocation": "./.yarn/cache/path-scurry-npm-1.10.1-52bd946f2e-e2557cff3a.zip/node_modules/path-scurry/",\
  3455. "packageDependencies": [\
  3456. ["path-scurry", "npm:1.10.1"],\
  3457. ["lru-cache", "npm:10.1.0"],\
  3458. ["minipass", "npm:7.0.4"]\
  3459. ],\
  3460. "linkType": "HARD"\
  3461. }]\
  3462. ]],\
  3463. ["performance-now", [\
  3464. ["npm:2.1.0", {\
  3465. "packageLocation": "./.yarn/cache/performance-now-npm-2.1.0-45e3ce7e49-534e641aa8.zip/node_modules/performance-now/",\
  3466. "packageDependencies": [\
  3467. ["performance-now", "npm:2.1.0"]\
  3468. ],\
  3469. "linkType": "HARD"\
  3470. }]\
  3471. ]],\
  3472. ["picocolors", [\
  3473. ["npm:1.0.0", {\
  3474. "packageLocation": "./.yarn/cache/picocolors-npm-1.0.0-d81e0b1927-a2e8092dd8.zip/node_modules/picocolors/",\
  3475. "packageDependencies": [\
  3476. ["picocolors", "npm:1.0.0"]\
  3477. ],\
  3478. "linkType": "HARD"\
  3479. }]\
  3480. ]],\
  3481. ["postcss", [\
  3482. ["npm:8.4.32", {\
  3483. "packageLocation": "./.yarn/cache/postcss-npm-8.4.32-2004ba88b8-220d9d0bf5.zip/node_modules/postcss/",\
  3484. "packageDependencies": [\
  3485. ["postcss", "npm:8.4.32"],\
  3486. ["nanoid", "npm:3.3.7"],\
  3487. ["picocolors", "npm:1.0.0"],\
  3488. ["source-map-js", "npm:1.0.2"]\
  3489. ],\
  3490. "linkType": "HARD"\
  3491. }]\
  3492. ]],\
  3493. ["prelude-ls", [\
  3494. ["npm:1.2.1", {\
  3495. "packageLocation": "./.yarn/cache/prelude-ls-npm-1.2.1-3e4d272a55-cd192ec0d0.zip/node_modules/prelude-ls/",\
  3496. "packageDependencies": [\
  3497. ["prelude-ls", "npm:1.2.1"]\
  3498. ],\
  3499. "linkType": "HARD"\
  3500. }]\
  3501. ]],\
  3502. ["proc-log", [\
  3503. ["npm:3.0.0", {\
  3504. "packageLocation": "./.yarn/cache/proc-log-npm-3.0.0-a8c21c2f0f-02b64e1b39.zip/node_modules/proc-log/",\
  3505. "packageDependencies": [\
  3506. ["proc-log", "npm:3.0.0"]\
  3507. ],\
  3508. "linkType": "HARD"\
  3509. }]\
  3510. ]],\
  3511. ["promise-retry", [\
  3512. ["npm:2.0.1", {\
  3513. "packageLocation": "./.yarn/cache/promise-retry-npm-2.0.1-871f0b01b7-f96a3f6d90.zip/node_modules/promise-retry/",\
  3514. "packageDependencies": [\
  3515. ["promise-retry", "npm:2.0.1"],\
  3516. ["err-code", "npm:2.0.3"],\
  3517. ["retry", "npm:0.12.0"]\
  3518. ],\
  3519. "linkType": "HARD"\
  3520. }]\
  3521. ]],\
  3522. ["prop-types", [\
  3523. ["npm:15.8.1", {\
  3524. "packageLocation": "./.yarn/cache/prop-types-npm-15.8.1-17c71ee7ee-c056d3f1c0.zip/node_modules/prop-types/",\
  3525. "packageDependencies": [\
  3526. ["prop-types", "npm:15.8.1"],\
  3527. ["loose-envify", "npm:1.4.0"],\
  3528. ["object-assign", "npm:4.1.1"],\
  3529. ["react-is", "npm:16.13.1"]\
  3530. ],\
  3531. "linkType": "HARD"\
  3532. }]\
  3533. ]],\
  3534. ["punycode", [\
  3535. ["npm:2.3.1", {\
  3536. "packageLocation": "./.yarn/cache/punycode-npm-2.3.1-97543c420d-bb0a0ceedc.zip/node_modules/punycode/",\
  3537. "packageDependencies": [\
  3538. ["punycode", "npm:2.3.1"]\
  3539. ],\
  3540. "linkType": "HARD"\
  3541. }]\
  3542. ]],\
  3543. ["queue-microtask", [\
  3544. ["npm:1.2.3", {\
  3545. "packageLocation": "./.yarn/cache/queue-microtask-npm-1.2.3-fcc98e4e2d-b676f8c040.zip/node_modules/queue-microtask/",\
  3546. "packageDependencies": [\
  3547. ["queue-microtask", "npm:1.2.3"]\
  3548. ],\
  3549. "linkType": "HARD"\
  3550. }]\
  3551. ]],\
  3552. ["raf", [\
  3553. ["npm:3.4.1", {\
  3554. "packageLocation": "./.yarn/cache/raf-npm-3.4.1-c25d48d76e-50ba284e48.zip/node_modules/raf/",\
  3555. "packageDependencies": [\
  3556. ["raf", "npm:3.4.1"],\
  3557. ["performance-now", "npm:2.1.0"]\
  3558. ],\
  3559. "linkType": "HARD"\
  3560. }]\
  3561. ]],\
  3562. ["react", [\
  3563. ["npm:18.2.0", {\
  3564. "packageLocation": "./.yarn/cache/react-npm-18.2.0-1eae08fee2-88e38092da.zip/node_modules/react/",\
  3565. "packageDependencies": [\
  3566. ["react", "npm:18.2.0"],\
  3567. ["loose-envify", "npm:1.4.0"]\
  3568. ],\
  3569. "linkType": "HARD"\
  3570. }]\
  3571. ]],\
  3572. ["react-dom", [\
  3573. ["npm:18.2.0", {\
  3574. "packageLocation": "./.yarn/cache/react-dom-npm-18.2.0-dd675bca1c-7d323310be.zip/node_modules/react-dom/",\
  3575. "packageDependencies": [\
  3576. ["react-dom", "npm:18.2.0"]\
  3577. ],\
  3578. "linkType": "SOFT"\
  3579. }],\
  3580. ["virtual:886e61fa7e6c7b2ced7980b68a5ec81e7559ed62a5e4bd0d20a3077c159398b6fcf9f9fce97484d3befe2143009a06709cd8e96ea637527ac9f0813dcc5f7523#npm:18.2.0", {\
  3581. "packageLocation": "./.yarn/__virtual__/react-dom-virtual-590bd1a69f/0/cache/react-dom-npm-18.2.0-dd675bca1c-7d323310be.zip/node_modules/react-dom/",\
  3582. "packageDependencies": [\
  3583. ["react-dom", "virtual:886e61fa7e6c7b2ced7980b68a5ec81e7559ed62a5e4bd0d20a3077c159398b6fcf9f9fce97484d3befe2143009a06709cd8e96ea637527ac9f0813dcc5f7523#npm:18.2.0"],\
  3584. ["@types/react", "npm:18.2.42"],\
  3585. ["loose-envify", "npm:1.4.0"],\
  3586. ["react", "npm:18.2.0"],\
  3587. ["scheduler", "npm:0.23.0"]\
  3588. ],\
  3589. "packagePeers": [\
  3590. "@types/react",\
  3591. "react"\
  3592. ],\
  3593. "linkType": "HARD"\
  3594. }]\
  3595. ]],\
  3596. ["react-fast-compare", [\
  3597. ["npm:3.2.2", {\
  3598. "packageLocation": "./.yarn/cache/react-fast-compare-npm-3.2.2-45b585a872-2071415b4f.zip/node_modules/react-fast-compare/",\
  3599. "packageDependencies": [\
  3600. ["react-fast-compare", "npm:3.2.2"]\
  3601. ],\
  3602. "linkType": "HARD"\
  3603. }]\
  3604. ]],\
  3605. ["react-is", [\
  3606. ["npm:16.13.1", {\
  3607. "packageLocation": "./.yarn/cache/react-is-npm-16.13.1-a9b9382b4f-f7a19ac349.zip/node_modules/react-is/",\
  3608. "packageDependencies": [\
  3609. ["react-is", "npm:16.13.1"]\
  3610. ],\
  3611. "linkType": "HARD"\
  3612. }],\
  3613. ["npm:18.2.0", {\
  3614. "packageLocation": "./.yarn/cache/react-is-npm-18.2.0-0cc5edb910-e72d0ba81b.zip/node_modules/react-is/",\
  3615. "packageDependencies": [\
  3616. ["react-is", "npm:18.2.0"]\
  3617. ],\
  3618. "linkType": "HARD"\
  3619. }]\
  3620. ]],\
  3621. ["react-popper", [\
  3622. ["npm:2.3.0", {\
  3623. "packageLocation": "./.yarn/cache/react-popper-npm-2.3.0-1045578379-837111c987.zip/node_modules/react-popper/",\
  3624. "packageDependencies": [\
  3625. ["react-popper", "npm:2.3.0"]\
  3626. ],\
  3627. "linkType": "SOFT"\
  3628. }],\
  3629. ["virtual:d31f3e6ebc3248fe6ea2d3ebfcba42a24a4b0fa4593881bfcbce992eb508747fdb82b1a5377227622ca7fcc21b0f9c82d8fd651f891077da2c04ddd73d06d8e2#npm:2.3.0", {\
  3630. "packageLocation": "./.yarn/__virtual__/react-popper-virtual-b2d531b8b9/0/cache/react-popper-npm-2.3.0-1045578379-837111c987.zip/node_modules/react-popper/",\
  3631. "packageDependencies": [\
  3632. ["react-popper", "virtual:d31f3e6ebc3248fe6ea2d3ebfcba42a24a4b0fa4593881bfcbce992eb508747fdb82b1a5377227622ca7fcc21b0f9c82d8fd651f891077da2c04ddd73d06d8e2#npm:2.3.0"],\
  3633. ["@popperjs/core", "npm:2.11.8"],\
  3634. ["@types/popperjs__core", null],\
  3635. ["@types/react", "npm:18.2.42"],\
  3636. ["@types/react-dom", "npm:18.2.17"],\
  3637. ["react", "npm:18.2.0"],\
  3638. ["react-dom", "virtual:886e61fa7e6c7b2ced7980b68a5ec81e7559ed62a5e4bd0d20a3077c159398b6fcf9f9fce97484d3befe2143009a06709cd8e96ea637527ac9f0813dcc5f7523#npm:18.2.0"],\
  3639. ["react-fast-compare", "npm:3.2.2"],\
  3640. ["warning", "npm:4.0.3"]\
  3641. ],\
  3642. "packagePeers": [\
  3643. "@popperjs/core",\
  3644. "@types/popperjs__core",\
  3645. "@types/react-dom",\
  3646. "@types/react",\
  3647. "react-dom",\
  3648. "react"\
  3649. ],\
  3650. "linkType": "HARD"\
  3651. }]\
  3652. ]],\
  3653. ["react-refresh", [\
  3654. ["npm:0.14.0", {\
  3655. "packageLocation": "./.yarn/cache/react-refresh-npm-0.14.0-78ef5eeb73-dc69fa8c99.zip/node_modules/react-refresh/",\
  3656. "packageDependencies": [\
  3657. ["react-refresh", "npm:0.14.0"]\
  3658. ],\
  3659. "linkType": "HARD"\
  3660. }]\
  3661. ]],\
  3662. ["react-router", [\
  3663. ["npm:6.20.1", {\
  3664. "packageLocation": "./.yarn/cache/react-router-npm-6.20.1-f40a442d33-046efa4b10.zip/node_modules/react-router/",\
  3665. "packageDependencies": [\
  3666. ["react-router", "npm:6.20.1"]\
  3667. ],\
  3668. "linkType": "SOFT"\
  3669. }],\
  3670. ["virtual:fda4de854d478e3c8e29f6d1f6a59e658ab69ec75ac3b679d1edc35f8afcd2d990f5f8d57b617f1578f8101b6c1e9b07dfd9574ad9982f3cb3ddeecdfcadda0b#npm:6.20.1", {\
  3671. "packageLocation": "./.yarn/__virtual__/react-router-virtual-c392bb7ba0/0/cache/react-router-npm-6.20.1-f40a442d33-046efa4b10.zip/node_modules/react-router/",\
  3672. "packageDependencies": [\
  3673. ["react-router", "virtual:fda4de854d478e3c8e29f6d1f6a59e658ab69ec75ac3b679d1edc35f8afcd2d990f5f8d57b617f1578f8101b6c1e9b07dfd9574ad9982f3cb3ddeecdfcadda0b#npm:6.20.1"],\
  3674. ["@remix-run/router", "npm:1.13.1"],\
  3675. ["@types/react", "npm:18.2.42"],\
  3676. ["react", "npm:18.2.0"]\
  3677. ],\
  3678. "packagePeers": [\
  3679. "@types/react",\
  3680. "react"\
  3681. ],\
  3682. "linkType": "HARD"\
  3683. }]\
  3684. ]],\
  3685. ["react-router-dom", [\
  3686. ["npm:6.20.1", {\
  3687. "packageLocation": "./.yarn/cache/react-router-dom-npm-6.20.1-026cd8d543-137b12fd3c.zip/node_modules/react-router-dom/",\
  3688. "packageDependencies": [\
  3689. ["react-router-dom", "npm:6.20.1"]\
  3690. ],\
  3691. "linkType": "SOFT"\
  3692. }],\
  3693. ["virtual:886e61fa7e6c7b2ced7980b68a5ec81e7559ed62a5e4bd0d20a3077c159398b6fcf9f9fce97484d3befe2143009a06709cd8e96ea637527ac9f0813dcc5f7523#npm:6.20.1", {\
  3694. "packageLocation": "./.yarn/__virtual__/react-router-dom-virtual-fda4de854d/0/cache/react-router-dom-npm-6.20.1-026cd8d543-137b12fd3c.zip/node_modules/react-router-dom/",\
  3695. "packageDependencies": [\
  3696. ["react-router-dom", "virtual:886e61fa7e6c7b2ced7980b68a5ec81e7559ed62a5e4bd0d20a3077c159398b6fcf9f9fce97484d3befe2143009a06709cd8e96ea637527ac9f0813dcc5f7523#npm:6.20.1"],\
  3697. ["@remix-run/router", "npm:1.13.1"],\
  3698. ["@types/react", "npm:18.2.42"],\
  3699. ["@types/react-dom", "npm:18.2.17"],\
  3700. ["react", "npm:18.2.0"],\
  3701. ["react-dom", "virtual:886e61fa7e6c7b2ced7980b68a5ec81e7559ed62a5e4bd0d20a3077c159398b6fcf9f9fce97484d3befe2143009a06709cd8e96ea637527ac9f0813dcc5f7523#npm:18.2.0"],\
  3702. ["react-router", "virtual:fda4de854d478e3c8e29f6d1f6a59e658ab69ec75ac3b679d1edc35f8afcd2d990f5f8d57b617f1578f8101b6c1e9b07dfd9574ad9982f3cb3ddeecdfcadda0b#npm:6.20.1"]\
  3703. ],\
  3704. "packagePeers": [\
  3705. "@types/react-dom",\
  3706. "@types/react",\
  3707. "react-dom",\
  3708. "react"\
  3709. ],\
  3710. "linkType": "HARD"\
  3711. }]\
  3712. ]],\
  3713. ["react-transition-group", [\
  3714. ["npm:4.4.5", {\
  3715. "packageLocation": "./.yarn/cache/react-transition-group-npm-4.4.5-98ea4ef96e-7560284010.zip/node_modules/react-transition-group/",\
  3716. "packageDependencies": [\
  3717. ["react-transition-group", "npm:4.4.5"]\
  3718. ],\
  3719. "linkType": "SOFT"\
  3720. }],\
  3721. ["virtual:d31f3e6ebc3248fe6ea2d3ebfcba42a24a4b0fa4593881bfcbce992eb508747fdb82b1a5377227622ca7fcc21b0f9c82d8fd651f891077da2c04ddd73d06d8e2#npm:4.4.5", {\
  3722. "packageLocation": "./.yarn/__virtual__/react-transition-group-virtual-9f6c8b344f/0/cache/react-transition-group-npm-4.4.5-98ea4ef96e-7560284010.zip/node_modules/react-transition-group/",\
  3723. "packageDependencies": [\
  3724. ["react-transition-group", "virtual:d31f3e6ebc3248fe6ea2d3ebfcba42a24a4b0fa4593881bfcbce992eb508747fdb82b1a5377227622ca7fcc21b0f9c82d8fd651f891077da2c04ddd73d06d8e2#npm:4.4.5"],\
  3725. ["@babel/runtime", "npm:7.23.5"],\
  3726. ["@types/react", "npm:18.2.42"],\
  3727. ["@types/react-dom", "npm:18.2.17"],\
  3728. ["dom-helpers", "npm:5.2.1"],\
  3729. ["loose-envify", "npm:1.4.0"],\
  3730. ["prop-types", "npm:15.8.1"],\
  3731. ["react", "npm:18.2.0"],\
  3732. ["react-dom", "virtual:886e61fa7e6c7b2ced7980b68a5ec81e7559ed62a5e4bd0d20a3077c159398b6fcf9f9fce97484d3befe2143009a06709cd8e96ea637527ac9f0813dcc5f7523#npm:18.2.0"]\
  3733. ],\
  3734. "packagePeers": [\
  3735. "@types/react-dom",\
  3736. "@types/react",\
  3737. "react-dom",\
  3738. "react"\
  3739. ],\
  3740. "linkType": "HARD"\
  3741. }]\
  3742. ]],\
  3743. ["reflect.getprototypeof", [\
  3744. ["npm:1.0.4", {\
  3745. "packageLocation": "./.yarn/cache/reflect.getprototypeof-npm-1.0.4-fa901640c3-16e2361988.zip/node_modules/reflect.getprototypeof/",\
  3746. "packageDependencies": [\
  3747. ["reflect.getprototypeof", "npm:1.0.4"],\
  3748. ["call-bind", "npm:1.0.5"],\
  3749. ["define-properties", "npm:1.2.1"],\
  3750. ["es-abstract", "npm:1.22.3"],\
  3751. ["get-intrinsic", "npm:1.2.2"],\
  3752. ["globalthis", "npm:1.0.3"],\
  3753. ["which-builtin-type", "npm:1.1.3"]\
  3754. ],\
  3755. "linkType": "HARD"\
  3756. }]\
  3757. ]],\
  3758. ["regenerator-runtime", [\
  3759. ["npm:0.13.11", {\
  3760. "packageLocation": "./.yarn/cache/regenerator-runtime-npm-0.13.11-90bf536060-27481628d2.zip/node_modules/regenerator-runtime/",\
  3761. "packageDependencies": [\
  3762. ["regenerator-runtime", "npm:0.13.11"]\
  3763. ],\
  3764. "linkType": "HARD"\
  3765. }],\
  3766. ["npm:0.14.0", {\
  3767. "packageLocation": "./.yarn/cache/regenerator-runtime-npm-0.14.0-e060897cf7-1c977ad82a.zip/node_modules/regenerator-runtime/",\
  3768. "packageDependencies": [\
  3769. ["regenerator-runtime", "npm:0.14.0"]\
  3770. ],\
  3771. "linkType": "HARD"\
  3772. }]\
  3773. ]],\
  3774. ["regexp.prototype.flags", [\
  3775. ["npm:1.5.1", {\
  3776. "packageLocation": "./.yarn/cache/regexp.prototype.flags-npm-1.5.1-b8faeee306-869edff002.zip/node_modules/regexp.prototype.flags/",\
  3777. "packageDependencies": [\
  3778. ["regexp.prototype.flags", "npm:1.5.1"],\
  3779. ["call-bind", "npm:1.0.5"],\
  3780. ["define-properties", "npm:1.2.1"],\
  3781. ["set-function-name", "npm:2.0.1"]\
  3782. ],\
  3783. "linkType": "HARD"\
  3784. }]\
  3785. ]],\
  3786. ["resolve", [\
  3787. ["patch:resolve@npm%3A2.0.0-next.5#~builtin<compat/resolve>::version=2.0.0-next.5&hash=c3c19d", {\
  3788. "packageLocation": "./.yarn/cache/resolve-patch-99efc4a639-064d09c180.zip/node_modules/resolve/",\
  3789. "packageDependencies": [\
  3790. ["resolve", "patch:resolve@npm%3A2.0.0-next.5#~builtin<compat/resolve>::version=2.0.0-next.5&hash=c3c19d"],\
  3791. ["is-core-module", "npm:2.13.1"],\
  3792. ["path-parse", "npm:1.0.7"],\
  3793. ["supports-preserve-symlinks-flag", "npm:1.0.0"]\
  3794. ],\
  3795. "linkType": "HARD"\
  3796. }]\
  3797. ]],\
  3798. ["resolve-from", [\
  3799. ["npm:4.0.0", {\
  3800. "packageLocation": "./.yarn/cache/resolve-from-npm-4.0.0-f758ec21bf-f4ba0b8494.zip/node_modules/resolve-from/",\
  3801. "packageDependencies": [\
  3802. ["resolve-from", "npm:4.0.0"]\
  3803. ],\
  3804. "linkType": "HARD"\
  3805. }]\
  3806. ]],\
  3807. ["retry", [\
  3808. ["npm:0.12.0", {\
  3809. "packageLocation": "./.yarn/cache/retry-npm-0.12.0-72ac7fb4cc-623bd7d2e5.zip/node_modules/retry/",\
  3810. "packageDependencies": [\
  3811. ["retry", "npm:0.12.0"]\
  3812. ],\
  3813. "linkType": "HARD"\
  3814. }]\
  3815. ]],\
  3816. ["reusify", [\
  3817. ["npm:1.0.4", {\
  3818. "packageLocation": "./.yarn/cache/reusify-npm-1.0.4-95ac4aec11-c3076ebcc2.zip/node_modules/reusify/",\
  3819. "packageDependencies": [\
  3820. ["reusify", "npm:1.0.4"]\
  3821. ],\
  3822. "linkType": "HARD"\
  3823. }]\
  3824. ]],\
  3825. ["rimraf", [\
  3826. ["npm:3.0.2", {\
  3827. "packageLocation": "./.yarn/cache/rimraf-npm-3.0.2-2cb7dac69a-87f4164e39.zip/node_modules/rimraf/",\
  3828. "packageDependencies": [\
  3829. ["rimraf", "npm:3.0.2"],\
  3830. ["glob", "npm:7.2.3"]\
  3831. ],\
  3832. "linkType": "HARD"\
  3833. }]\
  3834. ]],\
  3835. ["rollup", [\
  3836. ["npm:4.6.1", {\
  3837. "packageLocation": "./.yarn/cache/rollup-npm-4.6.1-1f7714a5d3-1d66f7f61b.zip/node_modules/rollup/",\
  3838. "packageDependencies": [\
  3839. ["rollup", "npm:4.6.1"],\
  3840. ["@rollup/rollup-android-arm-eabi", "npm:4.6.1"],\
  3841. ["@rollup/rollup-android-arm64", "npm:4.6.1"],\
  3842. ["@rollup/rollup-darwin-arm64", "npm:4.6.1"],\
  3843. ["@rollup/rollup-darwin-x64", "npm:4.6.1"],\
  3844. ["@rollup/rollup-linux-arm-gnueabihf", "npm:4.6.1"],\
  3845. ["@rollup/rollup-linux-arm64-gnu", "npm:4.6.1"],\
  3846. ["@rollup/rollup-linux-arm64-musl", "npm:4.6.1"],\
  3847. ["@rollup/rollup-linux-x64-gnu", "npm:4.6.1"],\
  3848. ["@rollup/rollup-linux-x64-musl", "npm:4.6.1"],\
  3849. ["@rollup/rollup-win32-arm64-msvc", "npm:4.6.1"],\
  3850. ["@rollup/rollup-win32-ia32-msvc", "npm:4.6.1"],\
  3851. ["@rollup/rollup-win32-x64-msvc", "npm:4.6.1"],\
  3852. ["fsevents", "patch:fsevents@npm%3A2.3.3#~builtin<compat/fsevents>::version=2.3.3&hash=df0bf1"]\
  3853. ],\
  3854. "linkType": "HARD"\
  3855. }]\
  3856. ]],\
  3857. ["run-parallel", [\
  3858. ["npm:1.2.0", {\
  3859. "packageLocation": "./.yarn/cache/run-parallel-npm-1.2.0-3f47ff2034-cb4f97ad25.zip/node_modules/run-parallel/",\
  3860. "packageDependencies": [\
  3861. ["run-parallel", "npm:1.2.0"],\
  3862. ["queue-microtask", "npm:1.2.3"]\
  3863. ],\
  3864. "linkType": "HARD"\
  3865. }]\
  3866. ]],\
  3867. ["safe-array-concat", [\
  3868. ["npm:1.0.1", {\
  3869. "packageLocation": "./.yarn/cache/safe-array-concat-npm-1.0.1-8a42907bbf-001ecf1d8a.zip/node_modules/safe-array-concat/",\
  3870. "packageDependencies": [\
  3871. ["safe-array-concat", "npm:1.0.1"],\
  3872. ["call-bind", "npm:1.0.5"],\
  3873. ["get-intrinsic", "npm:1.2.2"],\
  3874. ["has-symbols", "npm:1.0.3"],\
  3875. ["isarray", "npm:2.0.5"]\
  3876. ],\
  3877. "linkType": "HARD"\
  3878. }]\
  3879. ]],\
  3880. ["safe-regex-test", [\
  3881. ["npm:1.0.0", {\
  3882. "packageLocation": "./.yarn/cache/safe-regex-test-npm-1.0.0-e94a09b84e-bc566d8beb.zip/node_modules/safe-regex-test/",\
  3883. "packageDependencies": [\
  3884. ["safe-regex-test", "npm:1.0.0"],\
  3885. ["call-bind", "npm:1.0.5"],\
  3886. ["get-intrinsic", "npm:1.2.2"],\
  3887. ["is-regex", "npm:1.1.4"]\
  3888. ],\
  3889. "linkType": "HARD"\
  3890. }]\
  3891. ]],\
  3892. ["safer-buffer", [\
  3893. ["npm:2.1.2", {\
  3894. "packageLocation": "./.yarn/cache/safer-buffer-npm-2.1.2-8d5c0b705e-cab8f25ae6.zip/node_modules/safer-buffer/",\
  3895. "packageDependencies": [\
  3896. ["safer-buffer", "npm:2.1.2"]\
  3897. ],\
  3898. "linkType": "HARD"\
  3899. }]\
  3900. ]],\
  3901. ["scheduler", [\
  3902. ["npm:0.23.0", {\
  3903. "packageLocation": "./.yarn/cache/scheduler-npm-0.23.0-a379a6bc3b-d79192eeaa.zip/node_modules/scheduler/",\
  3904. "packageDependencies": [\
  3905. ["scheduler", "npm:0.23.0"],\
  3906. ["loose-envify", "npm:1.4.0"]\
  3907. ],\
  3908. "linkType": "HARD"\
  3909. }]\
  3910. ]],\
  3911. ["semver", [\
  3912. ["npm:6.3.1", {\
  3913. "packageLocation": "./.yarn/cache/semver-npm-6.3.1-bcba31fdbe-ae47d06de2.zip/node_modules/semver/",\
  3914. "packageDependencies": [\
  3915. ["semver", "npm:6.3.1"]\
  3916. ],\
  3917. "linkType": "HARD"\
  3918. }],\
  3919. ["npm:7.5.4", {\
  3920. "packageLocation": "./.yarn/cache/semver-npm-7.5.4-c4ad957fcd-12d8ad952f.zip/node_modules/semver/",\
  3921. "packageDependencies": [\
  3922. ["semver", "npm:7.5.4"],\
  3923. ["lru-cache", "npm:6.0.0"]\
  3924. ],\
  3925. "linkType": "HARD"\
  3926. }]\
  3927. ]],\
  3928. ["set-function-length", [\
  3929. ["npm:1.1.1", {\
  3930. "packageLocation": "./.yarn/cache/set-function-length-npm-1.1.1-d362bf8221-c131d7569c.zip/node_modules/set-function-length/",\
  3931. "packageDependencies": [\
  3932. ["set-function-length", "npm:1.1.1"],\
  3933. ["define-data-property", "npm:1.1.1"],\
  3934. ["get-intrinsic", "npm:1.2.2"],\
  3935. ["gopd", "npm:1.0.1"],\
  3936. ["has-property-descriptors", "npm:1.0.1"]\
  3937. ],\
  3938. "linkType": "HARD"\
  3939. }]\
  3940. ]],\
  3941. ["set-function-name", [\
  3942. ["npm:2.0.1", {\
  3943. "packageLocation": "./.yarn/cache/set-function-name-npm-2.0.1-a9f970eea0-4975d17d90.zip/node_modules/set-function-name/",\
  3944. "packageDependencies": [\
  3945. ["set-function-name", "npm:2.0.1"],\
  3946. ["define-data-property", "npm:1.1.1"],\
  3947. ["functions-have-names", "npm:1.2.3"],\
  3948. ["has-property-descriptors", "npm:1.0.1"]\
  3949. ],\
  3950. "linkType": "HARD"\
  3951. }]\
  3952. ]],\
  3953. ["shebang-command", [\
  3954. ["npm:2.0.0", {\
  3955. "packageLocation": "./.yarn/cache/shebang-command-npm-2.0.0-eb2b01921d-6b52fe8727.zip/node_modules/shebang-command/",\
  3956. "packageDependencies": [\
  3957. ["shebang-command", "npm:2.0.0"],\
  3958. ["shebang-regex", "npm:3.0.0"]\
  3959. ],\
  3960. "linkType": "HARD"\
  3961. }]\
  3962. ]],\
  3963. ["shebang-regex", [\
  3964. ["npm:3.0.0", {\
  3965. "packageLocation": "./.yarn/cache/shebang-regex-npm-3.0.0-899a0cd65e-1a2bcae50d.zip/node_modules/shebang-regex/",\
  3966. "packageDependencies": [\
  3967. ["shebang-regex", "npm:3.0.0"]\
  3968. ],\
  3969. "linkType": "HARD"\
  3970. }]\
  3971. ]],\
  3972. ["side-channel", [\
  3973. ["npm:1.0.4", {\
  3974. "packageLocation": "./.yarn/cache/side-channel-npm-1.0.4-e1f38b9e06-351e41b947.zip/node_modules/side-channel/",\
  3975. "packageDependencies": [\
  3976. ["side-channel", "npm:1.0.4"],\
  3977. ["call-bind", "npm:1.0.5"],\
  3978. ["get-intrinsic", "npm:1.2.2"],\
  3979. ["object-inspect", "npm:1.13.1"]\
  3980. ],\
  3981. "linkType": "HARD"\
  3982. }]\
  3983. ]],\
  3984. ["signal-exit", [\
  3985. ["npm:4.1.0", {\
  3986. "packageLocation": "./.yarn/cache/signal-exit-npm-4.1.0-61fb957687-64c757b498.zip/node_modules/signal-exit/",\
  3987. "packageDependencies": [\
  3988. ["signal-exit", "npm:4.1.0"]\
  3989. ],\
  3990. "linkType": "HARD"\
  3991. }]\
  3992. ]],\
  3993. ["smart-buffer", [\
  3994. ["npm:4.2.0", {\
  3995. "packageLocation": "./.yarn/cache/smart-buffer-npm-4.2.0-5ac3f668bb-b5167a7142.zip/node_modules/smart-buffer/",\
  3996. "packageDependencies": [\
  3997. ["smart-buffer", "npm:4.2.0"]\
  3998. ],\
  3999. "linkType": "HARD"\
  4000. }]\
  4001. ]],\
  4002. ["socks", [\
  4003. ["npm:2.7.1", {\
  4004. "packageLocation": "./.yarn/cache/socks-npm-2.7.1-17f2b53052-259d9e3e8e.zip/node_modules/socks/",\
  4005. "packageDependencies": [\
  4006. ["socks", "npm:2.7.1"],\
  4007. ["ip", "npm:2.0.0"],\
  4008. ["smart-buffer", "npm:4.2.0"]\
  4009. ],\
  4010. "linkType": "HARD"\
  4011. }]\
  4012. ]],\
  4013. ["socks-proxy-agent", [\
  4014. ["npm:8.0.2", {\
  4015. "packageLocation": "./.yarn/cache/socks-proxy-agent-npm-8.0.2-df165543cf-4fb165df08.zip/node_modules/socks-proxy-agent/",\
  4016. "packageDependencies": [\
  4017. ["socks-proxy-agent", "npm:8.0.2"],\
  4018. ["agent-base", "npm:7.1.0"],\
  4019. ["debug", "virtual:1ff4b5f90832ba0a9c93ba1223af226e44ba70c1126a3740d93562b97bc36544e896a5e95908196f7458713e6a6089a34bfc67362fc6df7fa093bd06c878be47#npm:4.3.4"],\
  4020. ["socks", "npm:2.7.1"]\
  4021. ],\
  4022. "linkType": "HARD"\
  4023. }]\
  4024. ]],\
  4025. ["sortablejs", [\
  4026. ["npm:1.15.1", {\
  4027. "packageLocation": "./.yarn/cache/sortablejs-npm-1.15.1-72a1ec0e06-56c9abdea2.zip/node_modules/sortablejs/",\
  4028. "packageDependencies": [\
  4029. ["sortablejs", "npm:1.15.1"]\
  4030. ],\
  4031. "linkType": "HARD"\
  4032. }]\
  4033. ]],\
  4034. ["source-map-js", [\
  4035. ["npm:1.0.2", {\
  4036. "packageLocation": "./.yarn/cache/source-map-js-npm-1.0.2-ee4f9f9b30-c049a7fc4d.zip/node_modules/source-map-js/",\
  4037. "packageDependencies": [\
  4038. ["source-map-js", "npm:1.0.2"]\
  4039. ],\
  4040. "linkType": "HARD"\
  4041. }]\
  4042. ]],\
  4043. ["ssri", [\
  4044. ["npm:10.0.5", {\
  4045. "packageLocation": "./.yarn/cache/ssri-npm-10.0.5-1a7557d04d-0a31b65f21.zip/node_modules/ssri/",\
  4046. "packageDependencies": [\
  4047. ["ssri", "npm:10.0.5"],\
  4048. ["minipass", "npm:7.0.4"]\
  4049. ],\
  4050. "linkType": "HARD"\
  4051. }]\
  4052. ]],\
  4053. ["string-width", [\
  4054. ["npm:4.2.3", {\
  4055. "packageLocation": "./.yarn/cache/string-width-npm-4.2.3-2c27177bae-e52c10dc3f.zip/node_modules/string-width/",\
  4056. "packageDependencies": [\
  4057. ["string-width", "npm:4.2.3"],\
  4058. ["emoji-regex", "npm:8.0.0"],\
  4059. ["is-fullwidth-code-point", "npm:3.0.0"],\
  4060. ["strip-ansi", "npm:6.0.1"]\
  4061. ],\
  4062. "linkType": "HARD"\
  4063. }],\
  4064. ["npm:5.1.2", {\
  4065. "packageLocation": "./.yarn/cache/string-width-npm-5.1.2-bf60531341-7369deaa29.zip/node_modules/string-width/",\
  4066. "packageDependencies": [\
  4067. ["string-width", "npm:5.1.2"],\
  4068. ["eastasianwidth", "npm:0.2.0"],\
  4069. ["emoji-regex", "npm:9.2.2"],\
  4070. ["strip-ansi", "npm:7.1.0"]\
  4071. ],\
  4072. "linkType": "HARD"\
  4073. }]\
  4074. ]],\
  4075. ["string.prototype.matchall", [\
  4076. ["npm:4.0.10", {\
  4077. "packageLocation": "./.yarn/cache/string.prototype.matchall-npm-4.0.10-197e4b9dad-3c78bdeff3.zip/node_modules/string.prototype.matchall/",\
  4078. "packageDependencies": [\
  4079. ["string.prototype.matchall", "npm:4.0.10"],\
  4080. ["call-bind", "npm:1.0.5"],\
  4081. ["define-properties", "npm:1.2.1"],\
  4082. ["es-abstract", "npm:1.22.3"],\
  4083. ["get-intrinsic", "npm:1.2.2"],\
  4084. ["has-symbols", "npm:1.0.3"],\
  4085. ["internal-slot", "npm:1.0.6"],\
  4086. ["regexp.prototype.flags", "npm:1.5.1"],\
  4087. ["set-function-name", "npm:2.0.1"],\
  4088. ["side-channel", "npm:1.0.4"]\
  4089. ],\
  4090. "linkType": "HARD"\
  4091. }]\
  4092. ]],\
  4093. ["string.prototype.trim", [\
  4094. ["npm:1.2.8", {\
  4095. "packageLocation": "./.yarn/cache/string.prototype.trim-npm-1.2.8-7ed4517ce8-49eb1a862a.zip/node_modules/string.prototype.trim/",\
  4096. "packageDependencies": [\
  4097. ["string.prototype.trim", "npm:1.2.8"],\
  4098. ["call-bind", "npm:1.0.5"],\
  4099. ["define-properties", "npm:1.2.1"],\
  4100. ["es-abstract", "npm:1.22.3"]\
  4101. ],\
  4102. "linkType": "HARD"\
  4103. }]\
  4104. ]],\
  4105. ["string.prototype.trimend", [\
  4106. ["npm:1.0.7", {\
  4107. "packageLocation": "./.yarn/cache/string.prototype.trimend-npm-1.0.7-159b9dcfbc-2375516272.zip/node_modules/string.prototype.trimend/",\
  4108. "packageDependencies": [\
  4109. ["string.prototype.trimend", "npm:1.0.7"],\
  4110. ["call-bind", "npm:1.0.5"],\
  4111. ["define-properties", "npm:1.2.1"],\
  4112. ["es-abstract", "npm:1.22.3"]\
  4113. ],\
  4114. "linkType": "HARD"\
  4115. }]\
  4116. ]],\
  4117. ["string.prototype.trimstart", [\
  4118. ["npm:1.0.7", {\
  4119. "packageLocation": "./.yarn/cache/string.prototype.trimstart-npm-1.0.7-ae2f803b78-13d0c2cb0d.zip/node_modules/string.prototype.trimstart/",\
  4120. "packageDependencies": [\
  4121. ["string.prototype.trimstart", "npm:1.0.7"],\
  4122. ["call-bind", "npm:1.0.5"],\
  4123. ["define-properties", "npm:1.2.1"],\
  4124. ["es-abstract", "npm:1.22.3"]\
  4125. ],\
  4126. "linkType": "HARD"\
  4127. }]\
  4128. ]],\
  4129. ["strip-ansi", [\
  4130. ["npm:6.0.1", {\
  4131. "packageLocation": "./.yarn/cache/strip-ansi-npm-6.0.1-caddc7cb40-f3cd25890a.zip/node_modules/strip-ansi/",\
  4132. "packageDependencies": [\
  4133. ["strip-ansi", "npm:6.0.1"],\
  4134. ["ansi-regex", "npm:5.0.1"]\
  4135. ],\
  4136. "linkType": "HARD"\
  4137. }],\
  4138. ["npm:7.1.0", {\
  4139. "packageLocation": "./.yarn/cache/strip-ansi-npm-7.1.0-7453b80b79-859c73fcf2.zip/node_modules/strip-ansi/",\
  4140. "packageDependencies": [\
  4141. ["strip-ansi", "npm:7.1.0"],\
  4142. ["ansi-regex", "npm:6.0.1"]\
  4143. ],\
  4144. "linkType": "HARD"\
  4145. }]\
  4146. ]],\
  4147. ["strip-json-comments", [\
  4148. ["npm:3.1.1", {\
  4149. "packageLocation": "./.yarn/cache/strip-json-comments-npm-3.1.1-dcb2324823-492f73e272.zip/node_modules/strip-json-comments/",\
  4150. "packageDependencies": [\
  4151. ["strip-json-comments", "npm:3.1.1"]\
  4152. ],\
  4153. "linkType": "HARD"\
  4154. }]\
  4155. ]],\
  4156. ["supports-color", [\
  4157. ["npm:5.5.0", {\
  4158. "packageLocation": "./.yarn/cache/supports-color-npm-5.5.0-183ac537bc-95f6f4ba5a.zip/node_modules/supports-color/",\
  4159. "packageDependencies": [\
  4160. ["supports-color", "npm:5.5.0"],\
  4161. ["has-flag", "npm:3.0.0"]\
  4162. ],\
  4163. "linkType": "HARD"\
  4164. }],\
  4165. ["npm:7.2.0", {\
  4166. "packageLocation": "./.yarn/cache/supports-color-npm-7.2.0-606bfcf7da-3dda818de0.zip/node_modules/supports-color/",\
  4167. "packageDependencies": [\
  4168. ["supports-color", "npm:7.2.0"],\
  4169. ["has-flag", "npm:4.0.0"]\
  4170. ],\
  4171. "linkType": "HARD"\
  4172. }]\
  4173. ]],\
  4174. ["supports-preserve-symlinks-flag", [\
  4175. ["npm:1.0.0", {\
  4176. "packageLocation": "./.yarn/cache/supports-preserve-symlinks-flag-npm-1.0.0-f17c4d0028-53b1e247e6.zip/node_modules/supports-preserve-symlinks-flag/",\
  4177. "packageDependencies": [\
  4178. ["supports-preserve-symlinks-flag", "npm:1.0.0"]\
  4179. ],\
  4180. "linkType": "HARD"\
  4181. }]\
  4182. ]],\
  4183. ["tar", [\
  4184. ["npm:6.2.0", {\
  4185. "packageLocation": "./.yarn/cache/tar-npm-6.2.0-3eb25205a7-db4d9fe74a.zip/node_modules/tar/",\
  4186. "packageDependencies": [\
  4187. ["tar", "npm:6.2.0"],\
  4188. ["chownr", "npm:2.0.0"],\
  4189. ["fs-minipass", "npm:2.1.0"],\
  4190. ["minipass", "npm:5.0.0"],\
  4191. ["minizlib", "npm:2.1.2"],\
  4192. ["mkdirp", "npm:1.0.4"],\
  4193. ["yallist", "npm:4.0.0"]\
  4194. ],\
  4195. "linkType": "HARD"\
  4196. }]\
  4197. ]],\
  4198. ["tdesign-icons-react", [\
  4199. ["npm:0.3.2", {\
  4200. "packageLocation": "./.yarn/cache/tdesign-icons-react-npm-0.3.2-4f3b0c0bc1-2076b6c5dd.zip/node_modules/tdesign-icons-react/",\
  4201. "packageDependencies": [\
  4202. ["tdesign-icons-react", "npm:0.3.2"]\
  4203. ],\
  4204. "linkType": "SOFT"\
  4205. }],\
  4206. ["virtual:d31f3e6ebc3248fe6ea2d3ebfcba42a24a4b0fa4593881bfcbce992eb508747fdb82b1a5377227622ca7fcc21b0f9c82d8fd651f891077da2c04ddd73d06d8e2#npm:0.3.2", {\
  4207. "packageLocation": "./.yarn/__virtual__/tdesign-icons-react-virtual-27fb16d2b8/0/cache/tdesign-icons-react-npm-0.3.2-4f3b0c0bc1-2076b6c5dd.zip/node_modules/tdesign-icons-react/",\
  4208. "packageDependencies": [\
  4209. ["tdesign-icons-react", "virtual:d31f3e6ebc3248fe6ea2d3ebfcba42a24a4b0fa4593881bfcbce992eb508747fdb82b1a5377227622ca7fcc21b0f9c82d8fd651f891077da2c04ddd73d06d8e2#npm:0.3.2"],\
  4210. ["@babel/runtime", "npm:7.23.5"],\
  4211. ["@types/react", "npm:18.2.42"],\
  4212. ["@types/react-dom", "npm:18.2.17"],\
  4213. ["classnames", "npm:2.3.2"],\
  4214. ["react", "npm:18.2.0"],\
  4215. ["react-dom", "virtual:886e61fa7e6c7b2ced7980b68a5ec81e7559ed62a5e4bd0d20a3077c159398b6fcf9f9fce97484d3befe2143009a06709cd8e96ea637527ac9f0813dcc5f7523#npm:18.2.0"]\
  4216. ],\
  4217. "packagePeers": [\
  4218. "@types/react-dom",\
  4219. "@types/react",\
  4220. "react-dom",\
  4221. "react"\
  4222. ],\
  4223. "linkType": "HARD"\
  4224. }]\
  4225. ]],\
  4226. ["tdesign-react", [\
  4227. ["npm:1.4.0", {\
  4228. "packageLocation": "./.yarn/cache/tdesign-react-npm-1.4.0-13245637ae-425eb8b4f3.zip/node_modules/tdesign-react/",\
  4229. "packageDependencies": [\
  4230. ["tdesign-react", "npm:1.4.0"]\
  4231. ],\
  4232. "linkType": "SOFT"\
  4233. }],\
  4234. ["virtual:886e61fa7e6c7b2ced7980b68a5ec81e7559ed62a5e4bd0d20a3077c159398b6fcf9f9fce97484d3befe2143009a06709cd8e96ea637527ac9f0813dcc5f7523#npm:1.4.0", {\
  4235. "packageLocation": "./.yarn/__virtual__/tdesign-react-virtual-d31f3e6ebc/0/cache/tdesign-react-npm-1.4.0-13245637ae-425eb8b4f3.zip/node_modules/tdesign-react/",\
  4236. "packageDependencies": [\
  4237. ["tdesign-react", "virtual:886e61fa7e6c7b2ced7980b68a5ec81e7559ed62a5e4bd0d20a3077c159398b6fcf9f9fce97484d3befe2143009a06709cd8e96ea637527ac9f0813dcc5f7523#npm:1.4.0"],\
  4238. ["@babel/runtime", "npm:7.17.9"],\
  4239. ["@popperjs/core", "npm:2.11.8"],\
  4240. ["@types/react", "npm:18.2.42"],\
  4241. ["@types/react-dom", "npm:18.2.17"],\
  4242. ["@types/sortablejs", "npm:1.15.7"],\
  4243. ["@types/tinycolor2", "npm:1.4.6"],\
  4244. ["@types/validator", "npm:13.11.7"],\
  4245. ["classnames", "npm:2.3.2"],\
  4246. ["dayjs", "npm:1.11.10"],\
  4247. ["hoist-non-react-statics", "npm:3.3.2"],\
  4248. ["lodash", "npm:4.17.21"],\
  4249. ["mitt", "npm:3.0.1"],\
  4250. ["raf", "npm:3.4.1"],\
  4251. ["react", "npm:18.2.0"],\
  4252. ["react-dom", "virtual:886e61fa7e6c7b2ced7980b68a5ec81e7559ed62a5e4bd0d20a3077c159398b6fcf9f9fce97484d3befe2143009a06709cd8e96ea637527ac9f0813dcc5f7523#npm:18.2.0"],\
  4253. ["react-is", "npm:18.2.0"],\
  4254. ["react-popper", "virtual:d31f3e6ebc3248fe6ea2d3ebfcba42a24a4b0fa4593881bfcbce992eb508747fdb82b1a5377227622ca7fcc21b0f9c82d8fd651f891077da2c04ddd73d06d8e2#npm:2.3.0"],\
  4255. ["react-transition-group", "virtual:d31f3e6ebc3248fe6ea2d3ebfcba42a24a4b0fa4593881bfcbce992eb508747fdb82b1a5377227622ca7fcc21b0f9c82d8fd651f891077da2c04ddd73d06d8e2#npm:4.4.5"],\
  4256. ["sortablejs", "npm:1.15.1"],\
  4257. ["tdesign-icons-react", "virtual:d31f3e6ebc3248fe6ea2d3ebfcba42a24a4b0fa4593881bfcbce992eb508747fdb82b1a5377227622ca7fcc21b0f9c82d8fd651f891077da2c04ddd73d06d8e2#npm:0.3.2"],\
  4258. ["tinycolor2", "npm:1.6.0"],\
  4259. ["tslib", "npm:2.3.1"],\
  4260. ["validator", "npm:13.7.0"]\
  4261. ],\
  4262. "packagePeers": [\
  4263. "@types/react-dom",\
  4264. "@types/react",\
  4265. "react-dom",\
  4266. "react"\
  4267. ],\
  4268. "linkType": "HARD"\
  4269. }]\
  4270. ]],\
  4271. ["text-table", [\
  4272. ["npm:0.2.0", {\
  4273. "packageLocation": "./.yarn/cache/text-table-npm-0.2.0-d92a778b59-b6937a38c8.zip/node_modules/text-table/",\
  4274. "packageDependencies": [\
  4275. ["text-table", "npm:0.2.0"]\
  4276. ],\
  4277. "linkType": "HARD"\
  4278. }]\
  4279. ]],\
  4280. ["tinycolor2", [\
  4281. ["npm:1.6.0", {\
  4282. "packageLocation": "./.yarn/cache/tinycolor2-npm-1.6.0-8df41252c6-6df4d07fce.zip/node_modules/tinycolor2/",\
  4283. "packageDependencies": [\
  4284. ["tinycolor2", "npm:1.6.0"]\
  4285. ],\
  4286. "linkType": "HARD"\
  4287. }]\
  4288. ]],\
  4289. ["to-fast-properties", [\
  4290. ["npm:2.0.0", {\
  4291. "packageLocation": "./.yarn/cache/to-fast-properties-npm-2.0.0-0dc60cc481-be2de62fe5.zip/node_modules/to-fast-properties/",\
  4292. "packageDependencies": [\
  4293. ["to-fast-properties", "npm:2.0.0"]\
  4294. ],\
  4295. "linkType": "HARD"\
  4296. }]\
  4297. ]],\
  4298. ["tslib", [\
  4299. ["npm:2.3.1", {\
  4300. "packageLocation": "./.yarn/cache/tslib-npm-2.3.1-0e21e18015-de17a98d46.zip/node_modules/tslib/",\
  4301. "packageDependencies": [\
  4302. ["tslib", "npm:2.3.1"]\
  4303. ],\
  4304. "linkType": "HARD"\
  4305. }]\
  4306. ]],\
  4307. ["type-check", [\
  4308. ["npm:0.4.0", {\
  4309. "packageLocation": "./.yarn/cache/type-check-npm-0.4.0-60565800ce-ec688ebfc9.zip/node_modules/type-check/",\
  4310. "packageDependencies": [\
  4311. ["type-check", "npm:0.4.0"],\
  4312. ["prelude-ls", "npm:1.2.1"]\
  4313. ],\
  4314. "linkType": "HARD"\
  4315. }]\
  4316. ]],\
  4317. ["type-fest", [\
  4318. ["npm:0.20.2", {\
  4319. "packageLocation": "./.yarn/cache/type-fest-npm-0.20.2-b36432617f-4fb3272df2.zip/node_modules/type-fest/",\
  4320. "packageDependencies": [\
  4321. ["type-fest", "npm:0.20.2"]\
  4322. ],\
  4323. "linkType": "HARD"\
  4324. }]\
  4325. ]],\
  4326. ["typed-array-buffer", [\
  4327. ["npm:1.0.0", {\
  4328. "packageLocation": "./.yarn/cache/typed-array-buffer-npm-1.0.0-95cb610310-3e0281c79b.zip/node_modules/typed-array-buffer/",\
  4329. "packageDependencies": [\
  4330. ["typed-array-buffer", "npm:1.0.0"],\
  4331. ["call-bind", "npm:1.0.5"],\
  4332. ["get-intrinsic", "npm:1.2.2"],\
  4333. ["is-typed-array", "npm:1.1.12"]\
  4334. ],\
  4335. "linkType": "HARD"\
  4336. }]\
  4337. ]],\
  4338. ["typed-array-byte-length", [\
  4339. ["npm:1.0.0", {\
  4340. "packageLocation": "./.yarn/cache/typed-array-byte-length-npm-1.0.0-94d79975ca-b03db16458.zip/node_modules/typed-array-byte-length/",\
  4341. "packageDependencies": [\
  4342. ["typed-array-byte-length", "npm:1.0.0"],\
  4343. ["call-bind", "npm:1.0.5"],\
  4344. ["for-each", "npm:0.3.3"],\
  4345. ["has-proto", "npm:1.0.1"],\
  4346. ["is-typed-array", "npm:1.1.12"]\
  4347. ],\
  4348. "linkType": "HARD"\
  4349. }]\
  4350. ]],\
  4351. ["typed-array-byte-offset", [\
  4352. ["npm:1.0.0", {\
  4353. "packageLocation": "./.yarn/cache/typed-array-byte-offset-npm-1.0.0-8cbb911cf5-04f6f02d0e.zip/node_modules/typed-array-byte-offset/",\
  4354. "packageDependencies": [\
  4355. ["typed-array-byte-offset", "npm:1.0.0"],\
  4356. ["available-typed-arrays", "npm:1.0.5"],\
  4357. ["call-bind", "npm:1.0.5"],\
  4358. ["for-each", "npm:0.3.3"],\
  4359. ["has-proto", "npm:1.0.1"],\
  4360. ["is-typed-array", "npm:1.1.12"]\
  4361. ],\
  4362. "linkType": "HARD"\
  4363. }]\
  4364. ]],\
  4365. ["typed-array-length", [\
  4366. ["npm:1.0.4", {\
  4367. "packageLocation": "./.yarn/cache/typed-array-length-npm-1.0.4-92771b81fc-2228febc93.zip/node_modules/typed-array-length/",\
  4368. "packageDependencies": [\
  4369. ["typed-array-length", "npm:1.0.4"],\
  4370. ["call-bind", "npm:1.0.5"],\
  4371. ["for-each", "npm:0.3.3"],\
  4372. ["is-typed-array", "npm:1.1.12"]\
  4373. ],\
  4374. "linkType": "HARD"\
  4375. }]\
  4376. ]],\
  4377. ["unbox-primitive", [\
  4378. ["npm:1.0.2", {\
  4379. "packageLocation": "./.yarn/cache/unbox-primitive-npm-1.0.2-cb56a05066-b7a1cf5862.zip/node_modules/unbox-primitive/",\
  4380. "packageDependencies": [\
  4381. ["unbox-primitive", "npm:1.0.2"],\
  4382. ["call-bind", "npm:1.0.5"],\
  4383. ["has-bigints", "npm:1.0.2"],\
  4384. ["has-symbols", "npm:1.0.3"],\
  4385. ["which-boxed-primitive", "npm:1.0.2"]\
  4386. ],\
  4387. "linkType": "HARD"\
  4388. }]\
  4389. ]],\
  4390. ["unique-filename", [\
  4391. ["npm:3.0.0", {\
  4392. "packageLocation": "./.yarn/cache/unique-filename-npm-3.0.0-77d68e0a45-8e2f59b356.zip/node_modules/unique-filename/",\
  4393. "packageDependencies": [\
  4394. ["unique-filename", "npm:3.0.0"],\
  4395. ["unique-slug", "npm:4.0.0"]\
  4396. ],\
  4397. "linkType": "HARD"\
  4398. }]\
  4399. ]],\
  4400. ["unique-slug", [\
  4401. ["npm:4.0.0", {\
  4402. "packageLocation": "./.yarn/cache/unique-slug-npm-4.0.0-e6b08f28aa-0884b58365.zip/node_modules/unique-slug/",\
  4403. "packageDependencies": [\
  4404. ["unique-slug", "npm:4.0.0"],\
  4405. ["imurmurhash", "npm:0.1.4"]\
  4406. ],\
  4407. "linkType": "HARD"\
  4408. }]\
  4409. ]],\
  4410. ["update-browserslist-db", [\
  4411. ["npm:1.0.13", {\
  4412. "packageLocation": "./.yarn/cache/update-browserslist-db-npm-1.0.13-ea7b8ee24d-1e47d80182.zip/node_modules/update-browserslist-db/",\
  4413. "packageDependencies": [\
  4414. ["update-browserslist-db", "npm:1.0.13"]\
  4415. ],\
  4416. "linkType": "SOFT"\
  4417. }],\
  4418. ["virtual:87e70d802146e5a0e8f2a12b5ab64004040c6640441dba54229a7db766cb1b88edabd3d3c814ce33d6ba839c4e517b12e9b0a7febfca22ac2a64177042bf3ee6#npm:1.0.13", {\
  4419. "packageLocation": "./.yarn/__virtual__/update-browserslist-db-virtual-1f2a8df3c3/0/cache/update-browserslist-db-npm-1.0.13-ea7b8ee24d-1e47d80182.zip/node_modules/update-browserslist-db/",\
  4420. "packageDependencies": [\
  4421. ["update-browserslist-db", "virtual:87e70d802146e5a0e8f2a12b5ab64004040c6640441dba54229a7db766cb1b88edabd3d3c814ce33d6ba839c4e517b12e9b0a7febfca22ac2a64177042bf3ee6#npm:1.0.13"],\
  4422. ["@types/browserslist", null],\
  4423. ["browserslist", "npm:4.22.2"],\
  4424. ["escalade", "npm:3.1.1"],\
  4425. ["picocolors", "npm:1.0.0"]\
  4426. ],\
  4427. "packagePeers": [\
  4428. "@types/browserslist",\
  4429. "browserslist"\
  4430. ],\
  4431. "linkType": "HARD"\
  4432. }]\
  4433. ]],\
  4434. ["uri-js", [\
  4435. ["npm:4.4.1", {\
  4436. "packageLocation": "./.yarn/cache/uri-js-npm-4.4.1-66d11cbcaf-7167432de6.zip/node_modules/uri-js/",\
  4437. "packageDependencies": [\
  4438. ["uri-js", "npm:4.4.1"],\
  4439. ["punycode", "npm:2.3.1"]\
  4440. ],\
  4441. "linkType": "HARD"\
  4442. }]\
  4443. ]],\
  4444. ["validator", [\
  4445. ["npm:13.7.0", {\
  4446. "packageLocation": "./.yarn/cache/validator-npm-13.7.0-624277e841-2b83283de1.zip/node_modules/validator/",\
  4447. "packageDependencies": [\
  4448. ["validator", "npm:13.7.0"]\
  4449. ],\
  4450. "linkType": "HARD"\
  4451. }]\
  4452. ]],\
  4453. ["vite", [\
  4454. ["npm:5.0.5", {\
  4455. "packageLocation": "./.yarn/cache/vite-npm-5.0.5-b688d59475-8df7030293.zip/node_modules/vite/",\
  4456. "packageDependencies": [\
  4457. ["vite", "npm:5.0.5"]\
  4458. ],\
  4459. "linkType": "SOFT"\
  4460. }],\
  4461. ["virtual:886e61fa7e6c7b2ced7980b68a5ec81e7559ed62a5e4bd0d20a3077c159398b6fcf9f9fce97484d3befe2143009a06709cd8e96ea637527ac9f0813dcc5f7523#npm:5.0.5", {\
  4462. "packageLocation": "./.yarn/__virtual__/vite-virtual-3ee8528dde/0/cache/vite-npm-5.0.5-b688d59475-8df7030293.zip/node_modules/vite/",\
  4463. "packageDependencies": [\
  4464. ["vite", "virtual:886e61fa7e6c7b2ced7980b68a5ec81e7559ed62a5e4bd0d20a3077c159398b6fcf9f9fce97484d3befe2143009a06709cd8e96ea637527ac9f0813dcc5f7523#npm:5.0.5"],\
  4465. ["@types/less", null],\
  4466. ["@types/lightningcss", null],\
  4467. ["@types/node", null],\
  4468. ["@types/sass", null],\
  4469. ["@types/stylus", null],\
  4470. ["@types/sugarss", null],\
  4471. ["@types/terser", null],\
  4472. ["esbuild", "npm:0.19.8"],\
  4473. ["fsevents", "patch:fsevents@npm%3A2.3.3#~builtin<compat/fsevents>::version=2.3.3&hash=df0bf1"],\
  4474. ["less", null],\
  4475. ["lightningcss", null],\
  4476. ["postcss", "npm:8.4.32"],\
  4477. ["rollup", "npm:4.6.1"],\
  4478. ["sass", null],\
  4479. ["stylus", null],\
  4480. ["sugarss", null],\
  4481. ["terser", null]\
  4482. ],\
  4483. "packagePeers": [\
  4484. "@types/less",\
  4485. "@types/lightningcss",\
  4486. "@types/node",\
  4487. "@types/sass",\
  4488. "@types/stylus",\
  4489. "@types/sugarss",\
  4490. "@types/terser",\
  4491. "less",\
  4492. "lightningcss",\
  4493. "sass",\
  4494. "stylus",\
  4495. "sugarss",\
  4496. "terser"\
  4497. ],\
  4498. "linkType": "HARD"\
  4499. }]\
  4500. ]],\
  4501. ["warning", [\
  4502. ["npm:4.0.3", {\
  4503. "packageLocation": "./.yarn/cache/warning-npm-4.0.3-291e921d6d-4f2cb6a957.zip/node_modules/warning/",\
  4504. "packageDependencies": [\
  4505. ["warning", "npm:4.0.3"],\
  4506. ["loose-envify", "npm:1.4.0"]\
  4507. ],\
  4508. "linkType": "HARD"\
  4509. }]\
  4510. ]],\
  4511. ["which", [\
  4512. ["npm:2.0.2", {\
  4513. "packageLocation": "./.yarn/cache/which-npm-2.0.2-320ddf72f7-1a5c563d3c.zip/node_modules/which/",\
  4514. "packageDependencies": [\
  4515. ["which", "npm:2.0.2"],\
  4516. ["isexe", "npm:2.0.0"]\
  4517. ],\
  4518. "linkType": "HARD"\
  4519. }],\
  4520. ["npm:4.0.0", {\
  4521. "packageLocation": "./.yarn/cache/which-npm-4.0.0-dd31cd4928-f17e84c042.zip/node_modules/which/",\
  4522. "packageDependencies": [\
  4523. ["which", "npm:4.0.0"],\
  4524. ["isexe", "npm:3.1.1"]\
  4525. ],\
  4526. "linkType": "HARD"\
  4527. }]\
  4528. ]],\
  4529. ["which-boxed-primitive", [\
  4530. ["npm:1.0.2", {\
  4531. "packageLocation": "./.yarn/cache/which-boxed-primitive-npm-1.0.2-e214f9ae5a-53ce774c73.zip/node_modules/which-boxed-primitive/",\
  4532. "packageDependencies": [\
  4533. ["which-boxed-primitive", "npm:1.0.2"],\
  4534. ["is-bigint", "npm:1.0.4"],\
  4535. ["is-boolean-object", "npm:1.1.2"],\
  4536. ["is-number-object", "npm:1.0.7"],\
  4537. ["is-string", "npm:1.0.7"],\
  4538. ["is-symbol", "npm:1.0.4"]\
  4539. ],\
  4540. "linkType": "HARD"\
  4541. }]\
  4542. ]],\
  4543. ["which-builtin-type", [\
  4544. ["npm:1.1.3", {\
  4545. "packageLocation": "./.yarn/cache/which-builtin-type-npm-1.1.3-c0bb111ab6-43730f7d86.zip/node_modules/which-builtin-type/",\
  4546. "packageDependencies": [\
  4547. ["which-builtin-type", "npm:1.1.3"],\
  4548. ["function.prototype.name", "npm:1.1.6"],\
  4549. ["has-tostringtag", "npm:1.0.0"],\
  4550. ["is-async-function", "npm:2.0.0"],\
  4551. ["is-date-object", "npm:1.0.5"],\
  4552. ["is-finalizationregistry", "npm:1.0.2"],\
  4553. ["is-generator-function", "npm:1.0.10"],\
  4554. ["is-regex", "npm:1.1.4"],\
  4555. ["is-weakref", "npm:1.0.2"],\
  4556. ["isarray", "npm:2.0.5"],\
  4557. ["which-boxed-primitive", "npm:1.0.2"],\
  4558. ["which-collection", "npm:1.0.1"],\
  4559. ["which-typed-array", "npm:1.1.13"]\
  4560. ],\
  4561. "linkType": "HARD"\
  4562. }]\
  4563. ]],\
  4564. ["which-collection", [\
  4565. ["npm:1.0.1", {\
  4566. "packageLocation": "./.yarn/cache/which-collection-npm-1.0.1-cd2c054585-c815bbd163.zip/node_modules/which-collection/",\
  4567. "packageDependencies": [\
  4568. ["which-collection", "npm:1.0.1"],\
  4569. ["is-map", "npm:2.0.2"],\
  4570. ["is-set", "npm:2.0.2"],\
  4571. ["is-weakmap", "npm:2.0.1"],\
  4572. ["is-weakset", "npm:2.0.2"]\
  4573. ],\
  4574. "linkType": "HARD"\
  4575. }]\
  4576. ]],\
  4577. ["which-typed-array", [\
  4578. ["npm:1.1.13", {\
  4579. "packageLocation": "./.yarn/cache/which-typed-array-npm-1.1.13-92c18b4878-3828a0d5d7.zip/node_modules/which-typed-array/",\
  4580. "packageDependencies": [\
  4581. ["which-typed-array", "npm:1.1.13"],\
  4582. ["available-typed-arrays", "npm:1.0.5"],\
  4583. ["call-bind", "npm:1.0.5"],\
  4584. ["for-each", "npm:0.3.3"],\
  4585. ["gopd", "npm:1.0.1"],\
  4586. ["has-tostringtag", "npm:1.0.0"]\
  4587. ],\
  4588. "linkType": "HARD"\
  4589. }]\
  4590. ]],\
  4591. ["wrap-ansi", [\
  4592. ["npm:7.0.0", {\
  4593. "packageLocation": "./.yarn/cache/wrap-ansi-npm-7.0.0-ad6e1a0554-a790b846fd.zip/node_modules/wrap-ansi/",\
  4594. "packageDependencies": [\
  4595. ["wrap-ansi", "npm:7.0.0"],\
  4596. ["ansi-styles", "npm:4.3.0"],\
  4597. ["string-width", "npm:4.2.3"],\
  4598. ["strip-ansi", "npm:6.0.1"]\
  4599. ],\
  4600. "linkType": "HARD"\
  4601. }],\
  4602. ["npm:8.1.0", {\
  4603. "packageLocation": "./.yarn/cache/wrap-ansi-npm-8.1.0-26a4e6ae28-371733296d.zip/node_modules/wrap-ansi/",\
  4604. "packageDependencies": [\
  4605. ["wrap-ansi", "npm:8.1.0"],\
  4606. ["ansi-styles", "npm:6.2.1"],\
  4607. ["string-width", "npm:5.1.2"],\
  4608. ["strip-ansi", "npm:7.1.0"]\
  4609. ],\
  4610. "linkType": "HARD"\
  4611. }]\
  4612. ]],\
  4613. ["wrappy", [\
  4614. ["npm:1.0.2", {\
  4615. "packageLocation": "./.yarn/cache/wrappy-npm-1.0.2-916de4d4b3-159da4805f.zip/node_modules/wrappy/",\
  4616. "packageDependencies": [\
  4617. ["wrappy", "npm:1.0.2"]\
  4618. ],\
  4619. "linkType": "HARD"\
  4620. }]\
  4621. ]],\
  4622. ["yallist", [\
  4623. ["npm:3.1.1", {\
  4624. "packageLocation": "./.yarn/cache/yallist-npm-3.1.1-a568a556b4-48f7bb00dc.zip/node_modules/yallist/",\
  4625. "packageDependencies": [\
  4626. ["yallist", "npm:3.1.1"]\
  4627. ],\
  4628. "linkType": "HARD"\
  4629. }],\
  4630. ["npm:4.0.0", {\
  4631. "packageLocation": "./.yarn/cache/yallist-npm-4.0.0-b493d9e907-343617202a.zip/node_modules/yallist/",\
  4632. "packageDependencies": [\
  4633. ["yallist", "npm:4.0.0"]\
  4634. ],\
  4635. "linkType": "HARD"\
  4636. }]\
  4637. ]],\
  4638. ["yocto-queue", [\
  4639. ["npm:0.1.0", {\
  4640. "packageLocation": "./.yarn/cache/yocto-queue-npm-0.1.0-c6c9a7db29-f77b3d8d00.zip/node_modules/yocto-queue/",\
  4641. "packageDependencies": [\
  4642. ["yocto-queue", "npm:0.1.0"]\
  4643. ],\
  4644. "linkType": "HARD"\
  4645. }]\
  4646. ]]\
  4647. ]\
  4648. }'), {basePath: basePath || __dirname});
  4649. }
  4650. const fs = require('fs');
  4651. const path = require('path');
  4652. const require$$0 = require('module');
  4653. const StringDecoder = require('string_decoder');
  4654. const url = require('url');
  4655. const os = require('os');
  4656. const nodeUtils = require('util');
  4657. const readline = require('readline');
  4658. const assert = require('assert');
  4659. const stream = require('stream');
  4660. const zlib = require('zlib');
  4661. const events = require('events');
  4662. const _interopDefaultLegacy = e => e && typeof e === 'object' && 'default' in e ? e : { default: e };
  4663. function _interopNamespace(e) {
  4664. if (e && e.__esModule) return e;
  4665. const n = Object.create(null);
  4666. if (e) {
  4667. for (const k in e) {
  4668. if (k !== 'default') {
  4669. const d = Object.getOwnPropertyDescriptor(e, k);
  4670. Object.defineProperty(n, k, d.get ? d : {
  4671. enumerable: true,
  4672. get: () => e[k]
  4673. });
  4674. }
  4675. }
  4676. }
  4677. n.default = e;
  4678. return Object.freeze(n);
  4679. }
  4680. const fs__default = /*#__PURE__*/_interopDefaultLegacy(fs);
  4681. const path__default = /*#__PURE__*/_interopDefaultLegacy(path);
  4682. const require$$0__default = /*#__PURE__*/_interopDefaultLegacy(require$$0);
  4683. const StringDecoder__default = /*#__PURE__*/_interopDefaultLegacy(StringDecoder);
  4684. const nodeUtils__namespace = /*#__PURE__*/_interopNamespace(nodeUtils);
  4685. const assert__default = /*#__PURE__*/_interopDefaultLegacy(assert);
  4686. const zlib__default = /*#__PURE__*/_interopDefaultLegacy(zlib);
  4687. const S_IFMT = 61440;
  4688. const S_IFDIR = 16384;
  4689. const S_IFREG = 32768;
  4690. const S_IFLNK = 40960;
  4691. const SAFE_TIME = 456789e3;
  4692. const DEFAULT_MODE = S_IFREG | 420;
  4693. class StatEntry {
  4694. constructor() {
  4695. this.uid = 0;
  4696. this.gid = 0;
  4697. this.size = 0;
  4698. this.blksize = 0;
  4699. this.atimeMs = 0;
  4700. this.mtimeMs = 0;
  4701. this.ctimeMs = 0;
  4702. this.birthtimeMs = 0;
  4703. this.atime = new Date(0);
  4704. this.mtime = new Date(0);
  4705. this.ctime = new Date(0);
  4706. this.birthtime = new Date(0);
  4707. this.dev = 0;
  4708. this.ino = 0;
  4709. this.mode = DEFAULT_MODE;
  4710. this.nlink = 1;
  4711. this.rdev = 0;
  4712. this.blocks = 1;
  4713. }
  4714. isBlockDevice() {
  4715. return false;
  4716. }
  4717. isCharacterDevice() {
  4718. return false;
  4719. }
  4720. isDirectory() {
  4721. return (this.mode & S_IFMT) === S_IFDIR;
  4722. }
  4723. isFIFO() {
  4724. return false;
  4725. }
  4726. isFile() {
  4727. return (this.mode & S_IFMT) === S_IFREG;
  4728. }
  4729. isSocket() {
  4730. return false;
  4731. }
  4732. isSymbolicLink() {
  4733. return (this.mode & S_IFMT) === S_IFLNK;
  4734. }
  4735. }
  4736. class BigIntStatsEntry {
  4737. constructor() {
  4738. this.uid = BigInt(0);
  4739. this.gid = BigInt(0);
  4740. this.size = BigInt(0);
  4741. this.blksize = BigInt(0);
  4742. this.atimeMs = BigInt(0);
  4743. this.mtimeMs = BigInt(0);
  4744. this.ctimeMs = BigInt(0);
  4745. this.birthtimeMs = BigInt(0);
  4746. this.atimeNs = BigInt(0);
  4747. this.mtimeNs = BigInt(0);
  4748. this.ctimeNs = BigInt(0);
  4749. this.birthtimeNs = BigInt(0);
  4750. this.atime = new Date(0);
  4751. this.mtime = new Date(0);
  4752. this.ctime = new Date(0);
  4753. this.birthtime = new Date(0);
  4754. this.dev = BigInt(0);
  4755. this.ino = BigInt(0);
  4756. this.mode = BigInt(DEFAULT_MODE);
  4757. this.nlink = BigInt(1);
  4758. this.rdev = BigInt(0);
  4759. this.blocks = BigInt(1);
  4760. }
  4761. isBlockDevice() {
  4762. return false;
  4763. }
  4764. isCharacterDevice() {
  4765. return false;
  4766. }
  4767. isDirectory() {
  4768. return (this.mode & BigInt(S_IFMT)) === BigInt(S_IFDIR);
  4769. }
  4770. isFIFO() {
  4771. return false;
  4772. }
  4773. isFile() {
  4774. return (this.mode & BigInt(S_IFMT)) === BigInt(S_IFREG);
  4775. }
  4776. isSocket() {
  4777. return false;
  4778. }
  4779. isSymbolicLink() {
  4780. return (this.mode & BigInt(S_IFMT)) === BigInt(S_IFLNK);
  4781. }
  4782. }
  4783. function makeDefaultStats() {
  4784. return new StatEntry();
  4785. }
  4786. function clearStats(stats) {
  4787. for (const key in stats) {
  4788. if (Object.prototype.hasOwnProperty.call(stats, key)) {
  4789. const element = stats[key];
  4790. if (typeof element === `number`) {
  4791. stats[key] = 0;
  4792. } else if (typeof element === `bigint`) {
  4793. stats[key] = BigInt(0);
  4794. } else if (nodeUtils__namespace.types.isDate(element)) {
  4795. stats[key] = new Date(0);
  4796. }
  4797. }
  4798. }
  4799. return stats;
  4800. }
  4801. function convertToBigIntStats(stats) {
  4802. const bigintStats = new BigIntStatsEntry();
  4803. for (const key in stats) {
  4804. if (Object.prototype.hasOwnProperty.call(stats, key)) {
  4805. const element = stats[key];
  4806. if (typeof element === `number`) {
  4807. bigintStats[key] = BigInt(element);
  4808. } else if (nodeUtils__namespace.types.isDate(element)) {
  4809. bigintStats[key] = new Date(element);
  4810. }
  4811. }
  4812. }
  4813. bigintStats.atimeNs = bigintStats.atimeMs * BigInt(1e6);
  4814. bigintStats.mtimeNs = bigintStats.mtimeMs * BigInt(1e6);
  4815. bigintStats.ctimeNs = bigintStats.ctimeMs * BigInt(1e6);
  4816. bigintStats.birthtimeNs = bigintStats.birthtimeMs * BigInt(1e6);
  4817. return bigintStats;
  4818. }
  4819. function areStatsEqual(a, b) {
  4820. if (a.atimeMs !== b.atimeMs)
  4821. return false;
  4822. if (a.birthtimeMs !== b.birthtimeMs)
  4823. return false;
  4824. if (a.blksize !== b.blksize)
  4825. return false;
  4826. if (a.blocks !== b.blocks)
  4827. return false;
  4828. if (a.ctimeMs !== b.ctimeMs)
  4829. return false;
  4830. if (a.dev !== b.dev)
  4831. return false;
  4832. if (a.gid !== b.gid)
  4833. return false;
  4834. if (a.ino !== b.ino)
  4835. return false;
  4836. if (a.isBlockDevice() !== b.isBlockDevice())
  4837. return false;
  4838. if (a.isCharacterDevice() !== b.isCharacterDevice())
  4839. return false;
  4840. if (a.isDirectory() !== b.isDirectory())
  4841. return false;
  4842. if (a.isFIFO() !== b.isFIFO())
  4843. return false;
  4844. if (a.isFile() !== b.isFile())
  4845. return false;
  4846. if (a.isSocket() !== b.isSocket())
  4847. return false;
  4848. if (a.isSymbolicLink() !== b.isSymbolicLink())
  4849. return false;
  4850. if (a.mode !== b.mode)
  4851. return false;
  4852. if (a.mtimeMs !== b.mtimeMs)
  4853. return false;
  4854. if (a.nlink !== b.nlink)
  4855. return false;
  4856. if (a.rdev !== b.rdev)
  4857. return false;
  4858. if (a.size !== b.size)
  4859. return false;
  4860. if (a.uid !== b.uid)
  4861. return false;
  4862. const aN = a;
  4863. const bN = b;
  4864. if (aN.atimeNs !== bN.atimeNs)
  4865. return false;
  4866. if (aN.mtimeNs !== bN.mtimeNs)
  4867. return false;
  4868. if (aN.ctimeNs !== bN.ctimeNs)
  4869. return false;
  4870. if (aN.birthtimeNs !== bN.birthtimeNs)
  4871. return false;
  4872. return true;
  4873. }
  4874. const PortablePath = {
  4875. root: `/`,
  4876. dot: `.`,
  4877. parent: `..`
  4878. };
  4879. const Filename = {
  4880. nodeModules: `node_modules`,
  4881. manifest: `package.json`,
  4882. lockfile: `yarn.lock`,
  4883. virtual: `__virtual__`,
  4884. pnpJs: `.pnp.js`,
  4885. pnpCjs: `.pnp.cjs`,
  4886. rc: `.yarnrc.yml`
  4887. };
  4888. const npath = Object.create(path__default.default);
  4889. const ppath = Object.create(path__default.default.posix);
  4890. npath.cwd = () => process.cwd();
  4891. ppath.cwd = () => toPortablePath(process.cwd());
  4892. ppath.resolve = (...segments) => {
  4893. if (segments.length > 0 && ppath.isAbsolute(segments[0])) {
  4894. return path__default.default.posix.resolve(...segments);
  4895. } else {
  4896. return path__default.default.posix.resolve(ppath.cwd(), ...segments);
  4897. }
  4898. };
  4899. const contains = function(pathUtils, from, to) {
  4900. from = pathUtils.normalize(from);
  4901. to = pathUtils.normalize(to);
  4902. if (from === to)
  4903. return `.`;
  4904. if (!from.endsWith(pathUtils.sep))
  4905. from = from + pathUtils.sep;
  4906. if (to.startsWith(from)) {
  4907. return to.slice(from.length);
  4908. } else {
  4909. return null;
  4910. }
  4911. };
  4912. npath.fromPortablePath = fromPortablePath;
  4913. npath.toPortablePath = toPortablePath;
  4914. npath.contains = (from, to) => contains(npath, from, to);
  4915. ppath.contains = (from, to) => contains(ppath, from, to);
  4916. const WINDOWS_PATH_REGEXP = /^([a-zA-Z]:.*)$/;
  4917. const UNC_WINDOWS_PATH_REGEXP = /^\/\/(\.\/)?(.*)$/;
  4918. const PORTABLE_PATH_REGEXP = /^\/([a-zA-Z]:.*)$/;
  4919. const UNC_PORTABLE_PATH_REGEXP = /^\/unc\/(\.dot\/)?(.*)$/;
  4920. function fromPortablePath(p) {
  4921. if (process.platform !== `win32`)
  4922. return p;
  4923. let portablePathMatch, uncPortablePathMatch;
  4924. if (portablePathMatch = p.match(PORTABLE_PATH_REGEXP))
  4925. p = portablePathMatch[1];
  4926. else if (uncPortablePathMatch = p.match(UNC_PORTABLE_PATH_REGEXP))
  4927. p = `\\\\${uncPortablePathMatch[1] ? `.\\` : ``}${uncPortablePathMatch[2]}`;
  4928. else
  4929. return p;
  4930. return p.replace(/\//g, `\\`);
  4931. }
  4932. function toPortablePath(p) {
  4933. if (process.platform !== `win32`)
  4934. return p;
  4935. p = p.replace(/\\/g, `/`);
  4936. let windowsPathMatch, uncWindowsPathMatch;
  4937. if (windowsPathMatch = p.match(WINDOWS_PATH_REGEXP))
  4938. p = `/${windowsPathMatch[1]}`;
  4939. else if (uncWindowsPathMatch = p.match(UNC_WINDOWS_PATH_REGEXP))
  4940. p = `/unc/${uncWindowsPathMatch[1] ? `.dot/` : ``}${uncWindowsPathMatch[2]}`;
  4941. return p;
  4942. }
  4943. function convertPath(targetPathUtils, sourcePath) {
  4944. return targetPathUtils === npath ? fromPortablePath(sourcePath) : toPortablePath(sourcePath);
  4945. }
  4946. const defaultTime = new Date(SAFE_TIME * 1e3);
  4947. async function copyPromise(destinationFs, destination, sourceFs, source, opts) {
  4948. const normalizedDestination = destinationFs.pathUtils.normalize(destination);
  4949. const normalizedSource = sourceFs.pathUtils.normalize(source);
  4950. const prelayout = [];
  4951. const postlayout = [];
  4952. const { atime, mtime } = opts.stableTime ? { atime: defaultTime, mtime: defaultTime } : await sourceFs.lstatPromise(normalizedSource);
  4953. await destinationFs.mkdirpPromise(destinationFs.pathUtils.dirname(destination), { utimes: [atime, mtime] });
  4954. const updateTime = typeof destinationFs.lutimesPromise === `function` ? destinationFs.lutimesPromise.bind(destinationFs) : destinationFs.utimesPromise.bind(destinationFs);
  4955. await copyImpl(prelayout, postlayout, updateTime, destinationFs, normalizedDestination, sourceFs, normalizedSource, { ...opts, didParentExist: true });
  4956. for (const operation of prelayout)
  4957. await operation();
  4958. await Promise.all(postlayout.map((operation) => {
  4959. return operation();
  4960. }));
  4961. }
  4962. async function copyImpl(prelayout, postlayout, updateTime, destinationFs, destination, sourceFs, source, opts) {
  4963. var _a, _b;
  4964. const destinationStat = opts.didParentExist ? await maybeLStat(destinationFs, destination) : null;
  4965. const sourceStat = await sourceFs.lstatPromise(source);
  4966. const { atime, mtime } = opts.stableTime ? { atime: defaultTime, mtime: defaultTime } : sourceStat;
  4967. let updated;
  4968. switch (true) {
  4969. case sourceStat.isDirectory():
  4970. {
  4971. updated = await copyFolder(prelayout, postlayout, updateTime, destinationFs, destination, destinationStat, sourceFs, source, sourceStat, opts);
  4972. }
  4973. break;
  4974. case sourceStat.isFile():
  4975. {
  4976. updated = await copyFile(prelayout, postlayout, updateTime, destinationFs, destination, destinationStat, sourceFs, source, sourceStat, opts);
  4977. }
  4978. break;
  4979. case sourceStat.isSymbolicLink():
  4980. {
  4981. updated = await copySymlink(prelayout, postlayout, updateTime, destinationFs, destination, destinationStat, sourceFs, source, sourceStat, opts);
  4982. }
  4983. break;
  4984. default:
  4985. {
  4986. throw new Error(`Unsupported file type (${sourceStat.mode})`);
  4987. }
  4988. }
  4989. if (updated || ((_a = destinationStat == null ? void 0 : destinationStat.mtime) == null ? void 0 : _a.getTime()) !== mtime.getTime() || ((_b = destinationStat == null ? void 0 : destinationStat.atime) == null ? void 0 : _b.getTime()) !== atime.getTime()) {
  4990. postlayout.push(() => updateTime(destination, atime, mtime));
  4991. updated = true;
  4992. }
  4993. if (destinationStat === null || (destinationStat.mode & 511) !== (sourceStat.mode & 511)) {
  4994. postlayout.push(() => destinationFs.chmodPromise(destination, sourceStat.mode & 511));
  4995. updated = true;
  4996. }
  4997. return updated;
  4998. }
  4999. async function maybeLStat(baseFs, p) {
  5000. try {
  5001. return await baseFs.lstatPromise(p);
  5002. } catch (e) {
  5003. return null;
  5004. }
  5005. }
  5006. async function copyFolder(prelayout, postlayout, updateTime, destinationFs, destination, destinationStat, sourceFs, source, sourceStat, opts) {
  5007. if (destinationStat !== null && !destinationStat.isDirectory()) {
  5008. if (opts.overwrite) {
  5009. prelayout.push(async () => destinationFs.removePromise(destination));
  5010. destinationStat = null;
  5011. } else {
  5012. return false;
  5013. }
  5014. }
  5015. let updated = false;
  5016. if (destinationStat === null) {
  5017. prelayout.push(async () => {
  5018. try {
  5019. await destinationFs.mkdirPromise(destination, { mode: sourceStat.mode });
  5020. } catch (err) {
  5021. if (err.code !== `EEXIST`) {
  5022. throw err;
  5023. }
  5024. }
  5025. });
  5026. updated = true;
  5027. }
  5028. const entries = await sourceFs.readdirPromise(source);
  5029. const nextOpts = opts.didParentExist && !destinationStat ? { ...opts, didParentExist: false } : opts;
  5030. if (opts.stableSort) {
  5031. for (const entry of entries.sort()) {
  5032. if (await copyImpl(prelayout, postlayout, updateTime, destinationFs, destinationFs.pathUtils.join(destination, entry), sourceFs, sourceFs.pathUtils.join(source, entry), nextOpts)) {
  5033. updated = true;
  5034. }
  5035. }
  5036. } else {
  5037. const entriesUpdateStatus = await Promise.all(entries.map(async (entry) => {
  5038. await copyImpl(prelayout, postlayout, updateTime, destinationFs, destinationFs.pathUtils.join(destination, entry), sourceFs, sourceFs.pathUtils.join(source, entry), nextOpts);
  5039. }));
  5040. if (entriesUpdateStatus.some((status) => status)) {
  5041. updated = true;
  5042. }
  5043. }
  5044. return updated;
  5045. }
  5046. const isCloneSupportedCache = /* @__PURE__ */ new WeakMap();
  5047. function makeLinkOperation(opFs, destination, source, sourceStat, linkStrategy) {
  5048. return async () => {
  5049. await opFs.linkPromise(source, destination);
  5050. if (linkStrategy === "readOnly" /* ReadOnly */) {
  5051. sourceStat.mode &= ~146;
  5052. await opFs.chmodPromise(destination, sourceStat.mode);
  5053. }
  5054. };
  5055. }
  5056. function makeCloneLinkOperation(opFs, destination, source, sourceStat, linkStrategy) {
  5057. const isCloneSupported = isCloneSupportedCache.get(opFs);
  5058. if (typeof isCloneSupported === `undefined`) {
  5059. return async () => {
  5060. try {
  5061. await opFs.copyFilePromise(source, destination, fs__default.default.constants.COPYFILE_FICLONE_FORCE);
  5062. isCloneSupportedCache.set(opFs, true);
  5063. } catch (err) {
  5064. if (err.code === `ENOSYS` || err.code === `ENOTSUP`) {
  5065. isCloneSupportedCache.set(opFs, false);
  5066. await makeLinkOperation(opFs, destination, source, sourceStat, linkStrategy)();
  5067. } else {
  5068. throw err;
  5069. }
  5070. }
  5071. };
  5072. } else {
  5073. if (isCloneSupported) {
  5074. return async () => opFs.copyFilePromise(source, destination, fs__default.default.constants.COPYFILE_FICLONE_FORCE);
  5075. } else {
  5076. return makeLinkOperation(opFs, destination, source, sourceStat, linkStrategy);
  5077. }
  5078. }
  5079. }
  5080. async function copyFile(prelayout, postlayout, updateTime, destinationFs, destination, destinationStat, sourceFs, source, sourceStat, opts) {
  5081. var _a;
  5082. if (destinationStat !== null) {
  5083. if (opts.overwrite) {
  5084. prelayout.push(async () => destinationFs.removePromise(destination));
  5085. destinationStat = null;
  5086. } else {
  5087. return false;
  5088. }
  5089. }
  5090. const linkStrategy = (_a = opts.linkStrategy) != null ? _a : null;
  5091. const op = destinationFs === sourceFs ? linkStrategy !== null ? makeCloneLinkOperation(destinationFs, destination, source, sourceStat, linkStrategy) : async () => destinationFs.copyFilePromise(source, destination, fs__default.default.constants.COPYFILE_FICLONE) : linkStrategy !== null ? makeLinkOperation(destinationFs, destination, source, sourceStat, linkStrategy) : async () => destinationFs.writeFilePromise(destination, await sourceFs.readFilePromise(source));
  5092. prelayout.push(async () => op());
  5093. return true;
  5094. }
  5095. async function copySymlink(prelayout, postlayout, updateTime, destinationFs, destination, destinationStat, sourceFs, source, sourceStat, opts) {
  5096. if (destinationStat !== null) {
  5097. if (opts.overwrite) {
  5098. prelayout.push(async () => destinationFs.removePromise(destination));
  5099. destinationStat = null;
  5100. } else {
  5101. return false;
  5102. }
  5103. }
  5104. prelayout.push(async () => {
  5105. await destinationFs.symlinkPromise(convertPath(destinationFs.pathUtils, await sourceFs.readlinkPromise(source)), destination);
  5106. });
  5107. return true;
  5108. }
  5109. function makeError$1(code, message) {
  5110. return Object.assign(new Error(`${code}: ${message}`), { code });
  5111. }
  5112. function EBUSY(message) {
  5113. return makeError$1(`EBUSY`, message);
  5114. }
  5115. function ENOSYS(message, reason) {
  5116. return makeError$1(`ENOSYS`, `${message}, ${reason}`);
  5117. }
  5118. function EINVAL(reason) {
  5119. return makeError$1(`EINVAL`, `invalid argument, ${reason}`);
  5120. }
  5121. function EBADF(reason) {
  5122. return makeError$1(`EBADF`, `bad file descriptor, ${reason}`);
  5123. }
  5124. function ENOENT(reason) {
  5125. return makeError$1(`ENOENT`, `no such file or directory, ${reason}`);
  5126. }
  5127. function ENOTDIR(reason) {
  5128. return makeError$1(`ENOTDIR`, `not a directory, ${reason}`);
  5129. }
  5130. function EISDIR(reason) {
  5131. return makeError$1(`EISDIR`, `illegal operation on a directory, ${reason}`);
  5132. }
  5133. function EEXIST(reason) {
  5134. return makeError$1(`EEXIST`, `file already exists, ${reason}`);
  5135. }
  5136. function EROFS(reason) {
  5137. return makeError$1(`EROFS`, `read-only filesystem, ${reason}`);
  5138. }
  5139. function ENOTEMPTY(reason) {
  5140. return makeError$1(`ENOTEMPTY`, `directory not empty, ${reason}`);
  5141. }
  5142. function EOPNOTSUPP(reason) {
  5143. return makeError$1(`EOPNOTSUPP`, `operation not supported, ${reason}`);
  5144. }
  5145. function ERR_DIR_CLOSED() {
  5146. return makeError$1(`ERR_DIR_CLOSED`, `Directory handle was closed`);
  5147. }
  5148. class LibzipError extends Error {
  5149. constructor(message, code) {
  5150. super(message);
  5151. this.name = `Libzip Error`;
  5152. this.code = code;
  5153. }
  5154. }
  5155. class CustomDir {
  5156. constructor(path, nextDirent, opts = {}) {
  5157. this.path = path;
  5158. this.nextDirent = nextDirent;
  5159. this.opts = opts;
  5160. this.closed = false;
  5161. }
  5162. throwIfClosed() {
  5163. if (this.closed) {
  5164. throw ERR_DIR_CLOSED();
  5165. }
  5166. }
  5167. async *[Symbol.asyncIterator]() {
  5168. try {
  5169. let dirent;
  5170. while ((dirent = await this.read()) !== null) {
  5171. yield dirent;
  5172. }
  5173. } finally {
  5174. await this.close();
  5175. }
  5176. }
  5177. read(cb) {
  5178. const dirent = this.readSync();
  5179. if (typeof cb !== `undefined`)
  5180. return cb(null, dirent);
  5181. return Promise.resolve(dirent);
  5182. }
  5183. readSync() {
  5184. this.throwIfClosed();
  5185. return this.nextDirent();
  5186. }
  5187. close(cb) {
  5188. this.closeSync();
  5189. if (typeof cb !== `undefined`)
  5190. return cb(null);
  5191. return Promise.resolve();
  5192. }
  5193. closeSync() {
  5194. var _a, _b;
  5195. this.throwIfClosed();
  5196. (_b = (_a = this.opts).onClose) == null ? void 0 : _b.call(_a);
  5197. this.closed = true;
  5198. }
  5199. }
  5200. function opendir(fakeFs, path, entries, opts) {
  5201. const nextDirent = () => {
  5202. const filename = entries.shift();
  5203. if (typeof filename === `undefined`)
  5204. return null;
  5205. return Object.assign(fakeFs.statSync(fakeFs.pathUtils.join(path, filename)), {
  5206. name: filename
  5207. });
  5208. };
  5209. return new CustomDir(path, nextDirent, opts);
  5210. }
  5211. class FakeFS {
  5212. constructor(pathUtils) {
  5213. this.pathUtils = pathUtils;
  5214. }
  5215. async *genTraversePromise(init, { stableSort = false } = {}) {
  5216. const stack = [init];
  5217. while (stack.length > 0) {
  5218. const p = stack.shift();
  5219. const entry = await this.lstatPromise(p);
  5220. if (entry.isDirectory()) {
  5221. const entries = await this.readdirPromise(p);
  5222. if (stableSort) {
  5223. for (const entry2 of entries.sort()) {
  5224. stack.push(this.pathUtils.join(p, entry2));
  5225. }
  5226. } else {
  5227. throw new Error(`Not supported`);
  5228. }
  5229. } else {
  5230. yield p;
  5231. }
  5232. }
  5233. }
  5234. async removePromise(p, { recursive = true, maxRetries = 5 } = {}) {
  5235. let stat;
  5236. try {
  5237. stat = await this.lstatPromise(p);
  5238. } catch (error) {
  5239. if (error.code === `ENOENT`) {
  5240. return;
  5241. } else {
  5242. throw error;
  5243. }
  5244. }
  5245. if (stat.isDirectory()) {
  5246. if (recursive) {
  5247. const entries = await this.readdirPromise(p);
  5248. await Promise.all(entries.map((entry) => {
  5249. return this.removePromise(this.pathUtils.resolve(p, entry));
  5250. }));
  5251. }
  5252. for (let t = 0; t <= maxRetries; t++) {
  5253. try {
  5254. await this.rmdirPromise(p);
  5255. break;
  5256. } catch (error) {
  5257. if (error.code !== `EBUSY` && error.code !== `ENOTEMPTY`) {
  5258. throw error;
  5259. } else if (t < maxRetries) {
  5260. await new Promise((resolve) => setTimeout(resolve, t * 100));
  5261. }
  5262. }
  5263. }
  5264. } else {
  5265. await this.unlinkPromise(p);
  5266. }
  5267. }
  5268. removeSync(p, { recursive = true } = {}) {
  5269. let stat;
  5270. try {
  5271. stat = this.lstatSync(p);
  5272. } catch (error) {
  5273. if (error.code === `ENOENT`) {
  5274. return;
  5275. } else {
  5276. throw error;
  5277. }
  5278. }
  5279. if (stat.isDirectory()) {
  5280. if (recursive)
  5281. for (const entry of this.readdirSync(p))
  5282. this.removeSync(this.pathUtils.resolve(p, entry));
  5283. this.rmdirSync(p);
  5284. } else {
  5285. this.unlinkSync(p);
  5286. }
  5287. }
  5288. async mkdirpPromise(p, { chmod, utimes } = {}) {
  5289. p = this.resolve(p);
  5290. if (p === this.pathUtils.dirname(p))
  5291. return void 0;
  5292. const parts = p.split(this.pathUtils.sep);
  5293. let createdDirectory;
  5294. for (let u = 2; u <= parts.length; ++u) {
  5295. const subPath = parts.slice(0, u).join(this.pathUtils.sep);
  5296. if (!this.existsSync(subPath)) {
  5297. try {
  5298. await this.mkdirPromise(subPath);
  5299. } catch (error) {
  5300. if (error.code === `EEXIST`) {
  5301. continue;
  5302. } else {
  5303. throw error;
  5304. }
  5305. }
  5306. createdDirectory != null ? createdDirectory : createdDirectory = subPath;
  5307. if (chmod != null)
  5308. await this.chmodPromise(subPath, chmod);
  5309. if (utimes != null) {
  5310. await this.utimesPromise(subPath, utimes[0], utimes[1]);
  5311. } else {
  5312. const parentStat = await this.statPromise(this.pathUtils.dirname(subPath));
  5313. await this.utimesPromise(subPath, parentStat.atime, parentStat.mtime);
  5314. }
  5315. }
  5316. }
  5317. return createdDirectory;
  5318. }
  5319. mkdirpSync(p, { chmod, utimes } = {}) {
  5320. p = this.resolve(p);
  5321. if (p === this.pathUtils.dirname(p))
  5322. return void 0;
  5323. const parts = p.split(this.pathUtils.sep);
  5324. let createdDirectory;
  5325. for (let u = 2; u <= parts.length; ++u) {
  5326. const subPath = parts.slice(0, u).join(this.pathUtils.sep);
  5327. if (!this.existsSync(subPath)) {
  5328. try {
  5329. this.mkdirSync(subPath);
  5330. } catch (error) {
  5331. if (error.code === `EEXIST`) {
  5332. continue;
  5333. } else {
  5334. throw error;
  5335. }
  5336. }
  5337. createdDirectory != null ? createdDirectory : createdDirectory = subPath;
  5338. if (chmod != null)
  5339. this.chmodSync(subPath, chmod);
  5340. if (utimes != null) {
  5341. this.utimesSync(subPath, utimes[0], utimes[1]);
  5342. } else {
  5343. const parentStat = this.statSync(this.pathUtils.dirname(subPath));
  5344. this.utimesSync(subPath, parentStat.atime, parentStat.mtime);
  5345. }
  5346. }
  5347. }
  5348. return createdDirectory;
  5349. }
  5350. async copyPromise(destination, source, { baseFs = this, overwrite = true, stableSort = false, stableTime = false, linkStrategy = null } = {}) {
  5351. return await copyPromise(this, destination, baseFs, source, { overwrite, stableSort, stableTime, linkStrategy });
  5352. }
  5353. copySync(destination, source, { baseFs = this, overwrite = true } = {}) {
  5354. const stat = baseFs.lstatSync(source);
  5355. const exists = this.existsSync(destination);
  5356. if (stat.isDirectory()) {
  5357. this.mkdirpSync(destination);
  5358. const directoryListing = baseFs.readdirSync(source);
  5359. for (const entry of directoryListing) {
  5360. this.copySync(this.pathUtils.join(destination, entry), baseFs.pathUtils.join(source, entry), { baseFs, overwrite });
  5361. }
  5362. } else if (stat.isFile()) {
  5363. if (!exists || overwrite) {
  5364. if (exists)
  5365. this.removeSync(destination);
  5366. const content = baseFs.readFileSync(source);
  5367. this.writeFileSync(destination, content);
  5368. }
  5369. } else if (stat.isSymbolicLink()) {
  5370. if (!exists || overwrite) {
  5371. if (exists)
  5372. this.removeSync(destination);
  5373. const target = baseFs.readlinkSync(source);
  5374. this.symlinkSync(convertPath(this.pathUtils, target), destination);
  5375. }
  5376. } else {
  5377. throw new Error(`Unsupported file type (file: ${source}, mode: 0o${stat.mode.toString(8).padStart(6, `0`)})`);
  5378. }
  5379. const mode = stat.mode & 511;
  5380. this.chmodSync(destination, mode);
  5381. }
  5382. async changeFilePromise(p, content, opts = {}) {
  5383. if (Buffer.isBuffer(content)) {
  5384. return this.changeFileBufferPromise(p, content, opts);
  5385. } else {
  5386. return this.changeFileTextPromise(p, content, opts);
  5387. }
  5388. }
  5389. async changeFileBufferPromise(p, content, { mode } = {}) {
  5390. let current = Buffer.alloc(0);
  5391. try {
  5392. current = await this.readFilePromise(p);
  5393. } catch (error) {
  5394. }
  5395. if (Buffer.compare(current, content) === 0)
  5396. return;
  5397. await this.writeFilePromise(p, content, { mode });
  5398. }
  5399. async changeFileTextPromise(p, content, { automaticNewlines, mode } = {}) {
  5400. let current = ``;
  5401. try {
  5402. current = await this.readFilePromise(p, `utf8`);
  5403. } catch (error) {
  5404. }
  5405. const normalizedContent = automaticNewlines ? normalizeLineEndings(current, content) : content;
  5406. if (current === normalizedContent)
  5407. return;
  5408. await this.writeFilePromise(p, normalizedContent, { mode });
  5409. }
  5410. changeFileSync(p, content, opts = {}) {
  5411. if (Buffer.isBuffer(content)) {
  5412. return this.changeFileBufferSync(p, content, opts);
  5413. } else {
  5414. return this.changeFileTextSync(p, content, opts);
  5415. }
  5416. }
  5417. changeFileBufferSync(p, content, { mode } = {}) {
  5418. let current = Buffer.alloc(0);
  5419. try {
  5420. current = this.readFileSync(p);
  5421. } catch (error) {
  5422. }
  5423. if (Buffer.compare(current, content) === 0)
  5424. return;
  5425. this.writeFileSync(p, content, { mode });
  5426. }
  5427. changeFileTextSync(p, content, { automaticNewlines = false, mode } = {}) {
  5428. let current = ``;
  5429. try {
  5430. current = this.readFileSync(p, `utf8`);
  5431. } catch (error) {
  5432. }
  5433. const normalizedContent = automaticNewlines ? normalizeLineEndings(current, content) : content;
  5434. if (current === normalizedContent)
  5435. return;
  5436. this.writeFileSync(p, normalizedContent, { mode });
  5437. }
  5438. async movePromise(fromP, toP) {
  5439. try {
  5440. await this.renamePromise(fromP, toP);
  5441. } catch (error) {
  5442. if (error.code === `EXDEV`) {
  5443. await this.copyPromise(toP, fromP);
  5444. await this.removePromise(fromP);
  5445. } else {
  5446. throw error;
  5447. }
  5448. }
  5449. }
  5450. moveSync(fromP, toP) {
  5451. try {
  5452. this.renameSync(fromP, toP);
  5453. } catch (error) {
  5454. if (error.code === `EXDEV`) {
  5455. this.copySync(toP, fromP);
  5456. this.removeSync(fromP);
  5457. } else {
  5458. throw error;
  5459. }
  5460. }
  5461. }
  5462. async lockPromise(affectedPath, callback) {
  5463. const lockPath = `${affectedPath}.flock`;
  5464. const interval = 1e3 / 60;
  5465. const startTime = Date.now();
  5466. let fd = null;
  5467. const isAlive = async () => {
  5468. let pid;
  5469. try {
  5470. [pid] = await this.readJsonPromise(lockPath);
  5471. } catch (error) {
  5472. return Date.now() - startTime < 500;
  5473. }
  5474. try {
  5475. process.kill(pid, 0);
  5476. return true;
  5477. } catch (error) {
  5478. return false;
  5479. }
  5480. };
  5481. while (fd === null) {
  5482. try {
  5483. fd = await this.openPromise(lockPath, `wx`);
  5484. } catch (error) {
  5485. if (error.code === `EEXIST`) {
  5486. if (!await isAlive()) {
  5487. try {
  5488. await this.unlinkPromise(lockPath);
  5489. continue;
  5490. } catch (error2) {
  5491. }
  5492. }
  5493. if (Date.now() - startTime < 60 * 1e3) {
  5494. await new Promise((resolve) => setTimeout(resolve, interval));
  5495. } else {
  5496. throw new Error(`Couldn't acquire a lock in a reasonable time (via ${lockPath})`);
  5497. }
  5498. } else {
  5499. throw error;
  5500. }
  5501. }
  5502. }
  5503. await this.writePromise(fd, JSON.stringify([process.pid]));
  5504. try {
  5505. return await callback();
  5506. } finally {
  5507. try {
  5508. await this.closePromise(fd);
  5509. await this.unlinkPromise(lockPath);
  5510. } catch (error) {
  5511. }
  5512. }
  5513. }
  5514. async readJsonPromise(p) {
  5515. const content = await this.readFilePromise(p, `utf8`);
  5516. try {
  5517. return JSON.parse(content);
  5518. } catch (error) {
  5519. error.message += ` (in ${p})`;
  5520. throw error;
  5521. }
  5522. }
  5523. readJsonSync(p) {
  5524. const content = this.readFileSync(p, `utf8`);
  5525. try {
  5526. return JSON.parse(content);
  5527. } catch (error) {
  5528. error.message += ` (in ${p})`;
  5529. throw error;
  5530. }
  5531. }
  5532. async writeJsonPromise(p, data) {
  5533. return await this.writeFilePromise(p, `${JSON.stringify(data, null, 2)}
  5534. `);
  5535. }
  5536. writeJsonSync(p, data) {
  5537. return this.writeFileSync(p, `${JSON.stringify(data, null, 2)}
  5538. `);
  5539. }
  5540. async preserveTimePromise(p, cb) {
  5541. const stat = await this.lstatPromise(p);
  5542. const result = await cb();
  5543. if (typeof result !== `undefined`)
  5544. p = result;
  5545. if (this.lutimesPromise) {
  5546. await this.lutimesPromise(p, stat.atime, stat.mtime);
  5547. } else if (!stat.isSymbolicLink()) {
  5548. await this.utimesPromise(p, stat.atime, stat.mtime);
  5549. }
  5550. }
  5551. async preserveTimeSync(p, cb) {
  5552. const stat = this.lstatSync(p);
  5553. const result = cb();
  5554. if (typeof result !== `undefined`)
  5555. p = result;
  5556. if (this.lutimesSync) {
  5557. this.lutimesSync(p, stat.atime, stat.mtime);
  5558. } else if (!stat.isSymbolicLink()) {
  5559. this.utimesSync(p, stat.atime, stat.mtime);
  5560. }
  5561. }
  5562. }
  5563. class BasePortableFakeFS extends FakeFS {
  5564. constructor() {
  5565. super(ppath);
  5566. }
  5567. }
  5568. function getEndOfLine(content) {
  5569. const matches = content.match(/\r?\n/g);
  5570. if (matches === null)
  5571. return os.EOL;
  5572. const crlf = matches.filter((nl) => nl === `\r
  5573. `).length;
  5574. const lf = matches.length - crlf;
  5575. return crlf > lf ? `\r
  5576. ` : `
  5577. `;
  5578. }
  5579. function normalizeLineEndings(originalContent, newContent) {
  5580. return newContent.replace(/\r?\n/g, getEndOfLine(originalContent));
  5581. }
  5582. class NodeFS extends BasePortableFakeFS {
  5583. constructor(realFs = fs__default.default) {
  5584. super();
  5585. this.realFs = realFs;
  5586. if (typeof this.realFs.lutimes !== `undefined`) {
  5587. this.lutimesPromise = this.lutimesPromiseImpl;
  5588. this.lutimesSync = this.lutimesSyncImpl;
  5589. }
  5590. }
  5591. getExtractHint() {
  5592. return false;
  5593. }
  5594. getRealPath() {
  5595. return PortablePath.root;
  5596. }
  5597. resolve(p) {
  5598. return ppath.resolve(p);
  5599. }
  5600. async openPromise(p, flags, mode) {
  5601. return await new Promise((resolve, reject) => {
  5602. this.realFs.open(npath.fromPortablePath(p), flags, mode, this.makeCallback(resolve, reject));
  5603. });
  5604. }
  5605. openSync(p, flags, mode) {
  5606. return this.realFs.openSync(npath.fromPortablePath(p), flags, mode);
  5607. }
  5608. async opendirPromise(p, opts) {
  5609. return await new Promise((resolve, reject) => {
  5610. if (typeof opts !== `undefined`) {
  5611. this.realFs.opendir(npath.fromPortablePath(p), opts, this.makeCallback(resolve, reject));
  5612. } else {
  5613. this.realFs.opendir(npath.fromPortablePath(p), this.makeCallback(resolve, reject));
  5614. }
  5615. }).then((dir) => {
  5616. return Object.defineProperty(dir, `path`, { value: p, configurable: true, writable: true });
  5617. });
  5618. }
  5619. opendirSync(p, opts) {
  5620. const dir = typeof opts !== `undefined` ? this.realFs.opendirSync(npath.fromPortablePath(p), opts) : this.realFs.opendirSync(npath.fromPortablePath(p));
  5621. return Object.defineProperty(dir, `path`, { value: p, configurable: true, writable: true });
  5622. }
  5623. async readPromise(fd, buffer, offset = 0, length = 0, position = -1) {
  5624. return await new Promise((resolve, reject) => {
  5625. this.realFs.read(fd, buffer, offset, length, position, (error, bytesRead) => {
  5626. if (error) {
  5627. reject(error);
  5628. } else {
  5629. resolve(bytesRead);
  5630. }
  5631. });
  5632. });
  5633. }
  5634. readSync(fd, buffer, offset, length, position) {
  5635. return this.realFs.readSync(fd, buffer, offset, length, position);
  5636. }
  5637. async writePromise(fd, buffer, offset, length, position) {
  5638. return await new Promise((resolve, reject) => {
  5639. if (typeof buffer === `string`) {
  5640. return this.realFs.write(fd, buffer, offset, this.makeCallback(resolve, reject));
  5641. } else {
  5642. return this.realFs.write(fd, buffer, offset, length, position, this.makeCallback(resolve, reject));
  5643. }
  5644. });
  5645. }
  5646. writeSync(fd, buffer, offset, length, position) {
  5647. if (typeof buffer === `string`) {
  5648. return this.realFs.writeSync(fd, buffer, offset);
  5649. } else {
  5650. return this.realFs.writeSync(fd, buffer, offset, length, position);
  5651. }
  5652. }
  5653. async closePromise(fd) {
  5654. await new Promise((resolve, reject) => {
  5655. this.realFs.close(fd, this.makeCallback(resolve, reject));
  5656. });
  5657. }
  5658. closeSync(fd) {
  5659. this.realFs.closeSync(fd);
  5660. }
  5661. createReadStream(p, opts) {
  5662. const realPath = p !== null ? npath.fromPortablePath(p) : p;
  5663. return this.realFs.createReadStream(realPath, opts);
  5664. }
  5665. createWriteStream(p, opts) {
  5666. const realPath = p !== null ? npath.fromPortablePath(p) : p;
  5667. return this.realFs.createWriteStream(realPath, opts);
  5668. }
  5669. async realpathPromise(p) {
  5670. return await new Promise((resolve, reject) => {
  5671. this.realFs.realpath(npath.fromPortablePath(p), {}, this.makeCallback(resolve, reject));
  5672. }).then((path) => {
  5673. return npath.toPortablePath(path);
  5674. });
  5675. }
  5676. realpathSync(p) {
  5677. return npath.toPortablePath(this.realFs.realpathSync(npath.fromPortablePath(p), {}));
  5678. }
  5679. async existsPromise(p) {
  5680. return await new Promise((resolve) => {
  5681. this.realFs.exists(npath.fromPortablePath(p), resolve);
  5682. });
  5683. }
  5684. accessSync(p, mode) {
  5685. return this.realFs.accessSync(npath.fromPortablePath(p), mode);
  5686. }
  5687. async accessPromise(p, mode) {
  5688. return await new Promise((resolve, reject) => {
  5689. this.realFs.access(npath.fromPortablePath(p), mode, this.makeCallback(resolve, reject));
  5690. });
  5691. }
  5692. existsSync(p) {
  5693. return this.realFs.existsSync(npath.fromPortablePath(p));
  5694. }
  5695. async statPromise(p, opts) {
  5696. return await new Promise((resolve, reject) => {
  5697. if (opts) {
  5698. this.realFs.stat(npath.fromPortablePath(p), opts, this.makeCallback(resolve, reject));
  5699. } else {
  5700. this.realFs.stat(npath.fromPortablePath(p), this.makeCallback(resolve, reject));
  5701. }
  5702. });
  5703. }
  5704. statSync(p, opts) {
  5705. if (opts) {
  5706. return this.realFs.statSync(npath.fromPortablePath(p), opts);
  5707. } else {
  5708. return this.realFs.statSync(npath.fromPortablePath(p));
  5709. }
  5710. }
  5711. async fstatPromise(fd, opts) {
  5712. return await new Promise((resolve, reject) => {
  5713. if (opts) {
  5714. this.realFs.fstat(fd, opts, this.makeCallback(resolve, reject));
  5715. } else {
  5716. this.realFs.fstat(fd, this.makeCallback(resolve, reject));
  5717. }
  5718. });
  5719. }
  5720. fstatSync(fd, opts) {
  5721. if (opts) {
  5722. return this.realFs.fstatSync(fd, opts);
  5723. } else {
  5724. return this.realFs.fstatSync(fd);
  5725. }
  5726. }
  5727. async lstatPromise(p, opts) {
  5728. return await new Promise((resolve, reject) => {
  5729. if (opts) {
  5730. this.realFs.lstat(npath.fromPortablePath(p), opts, this.makeCallback(resolve, reject));
  5731. } else {
  5732. this.realFs.lstat(npath.fromPortablePath(p), this.makeCallback(resolve, reject));
  5733. }
  5734. });
  5735. }
  5736. lstatSync(p, opts) {
  5737. if (opts) {
  5738. return this.realFs.lstatSync(npath.fromPortablePath(p), opts);
  5739. } else {
  5740. return this.realFs.lstatSync(npath.fromPortablePath(p));
  5741. }
  5742. }
  5743. async fchmodPromise(fd, mask) {
  5744. return await new Promise((resolve, reject) => {
  5745. this.realFs.fchmod(fd, mask, this.makeCallback(resolve, reject));
  5746. });
  5747. }
  5748. fchmodSync(fd, mask) {
  5749. return this.realFs.fchmodSync(fd, mask);
  5750. }
  5751. async chmodPromise(p, mask) {
  5752. return await new Promise((resolve, reject) => {
  5753. this.realFs.chmod(npath.fromPortablePath(p), mask, this.makeCallback(resolve, reject));
  5754. });
  5755. }
  5756. chmodSync(p, mask) {
  5757. return this.realFs.chmodSync(npath.fromPortablePath(p), mask);
  5758. }
  5759. async fchownPromise(fd, uid, gid) {
  5760. return await new Promise((resolve, reject) => {
  5761. this.realFs.fchown(fd, uid, gid, this.makeCallback(resolve, reject));
  5762. });
  5763. }
  5764. fchownSync(fd, uid, gid) {
  5765. return this.realFs.fchownSync(fd, uid, gid);
  5766. }
  5767. async chownPromise(p, uid, gid) {
  5768. return await new Promise((resolve, reject) => {
  5769. this.realFs.chown(npath.fromPortablePath(p), uid, gid, this.makeCallback(resolve, reject));
  5770. });
  5771. }
  5772. chownSync(p, uid, gid) {
  5773. return this.realFs.chownSync(npath.fromPortablePath(p), uid, gid);
  5774. }
  5775. async renamePromise(oldP, newP) {
  5776. return await new Promise((resolve, reject) => {
  5777. this.realFs.rename(npath.fromPortablePath(oldP), npath.fromPortablePath(newP), this.makeCallback(resolve, reject));
  5778. });
  5779. }
  5780. renameSync(oldP, newP) {
  5781. return this.realFs.renameSync(npath.fromPortablePath(oldP), npath.fromPortablePath(newP));
  5782. }
  5783. async copyFilePromise(sourceP, destP, flags = 0) {
  5784. return await new Promise((resolve, reject) => {
  5785. this.realFs.copyFile(npath.fromPortablePath(sourceP), npath.fromPortablePath(destP), flags, this.makeCallback(resolve, reject));
  5786. });
  5787. }
  5788. copyFileSync(sourceP, destP, flags = 0) {
  5789. return this.realFs.copyFileSync(npath.fromPortablePath(sourceP), npath.fromPortablePath(destP), flags);
  5790. }
  5791. async appendFilePromise(p, content, opts) {
  5792. return await new Promise((resolve, reject) => {
  5793. const fsNativePath = typeof p === `string` ? npath.fromPortablePath(p) : p;
  5794. if (opts) {
  5795. this.realFs.appendFile(fsNativePath, content, opts, this.makeCallback(resolve, reject));
  5796. } else {
  5797. this.realFs.appendFile(fsNativePath, content, this.makeCallback(resolve, reject));
  5798. }
  5799. });
  5800. }
  5801. appendFileSync(p, content, opts) {
  5802. const fsNativePath = typeof p === `string` ? npath.fromPortablePath(p) : p;
  5803. if (opts) {
  5804. this.realFs.appendFileSync(fsNativePath, content, opts);
  5805. } else {
  5806. this.realFs.appendFileSync(fsNativePath, content);
  5807. }
  5808. }
  5809. async writeFilePromise(p, content, opts) {
  5810. return await new Promise((resolve, reject) => {
  5811. const fsNativePath = typeof p === `string` ? npath.fromPortablePath(p) : p;
  5812. if (opts) {
  5813. this.realFs.writeFile(fsNativePath, content, opts, this.makeCallback(resolve, reject));
  5814. } else {
  5815. this.realFs.writeFile(fsNativePath, content, this.makeCallback(resolve, reject));
  5816. }
  5817. });
  5818. }
  5819. writeFileSync(p, content, opts) {
  5820. const fsNativePath = typeof p === `string` ? npath.fromPortablePath(p) : p;
  5821. if (opts) {
  5822. this.realFs.writeFileSync(fsNativePath, content, opts);
  5823. } else {
  5824. this.realFs.writeFileSync(fsNativePath, content);
  5825. }
  5826. }
  5827. async unlinkPromise(p) {
  5828. return await new Promise((resolve, reject) => {
  5829. this.realFs.unlink(npath.fromPortablePath(p), this.makeCallback(resolve, reject));
  5830. });
  5831. }
  5832. unlinkSync(p) {
  5833. return this.realFs.unlinkSync(npath.fromPortablePath(p));
  5834. }
  5835. async utimesPromise(p, atime, mtime) {
  5836. return await new Promise((resolve, reject) => {
  5837. this.realFs.utimes(npath.fromPortablePath(p), atime, mtime, this.makeCallback(resolve, reject));
  5838. });
  5839. }
  5840. utimesSync(p, atime, mtime) {
  5841. this.realFs.utimesSync(npath.fromPortablePath(p), atime, mtime);
  5842. }
  5843. async lutimesPromiseImpl(p, atime, mtime) {
  5844. const lutimes = this.realFs.lutimes;
  5845. if (typeof lutimes === `undefined`)
  5846. throw ENOSYS(`unavailable Node binding`, `lutimes '${p}'`);
  5847. return await new Promise((resolve, reject) => {
  5848. lutimes.call(this.realFs, npath.fromPortablePath(p), atime, mtime, this.makeCallback(resolve, reject));
  5849. });
  5850. }
  5851. lutimesSyncImpl(p, atime, mtime) {
  5852. const lutimesSync = this.realFs.lutimesSync;
  5853. if (typeof lutimesSync === `undefined`)
  5854. throw ENOSYS(`unavailable Node binding`, `lutimes '${p}'`);
  5855. lutimesSync.call(this.realFs, npath.fromPortablePath(p), atime, mtime);
  5856. }
  5857. async mkdirPromise(p, opts) {
  5858. return await new Promise((resolve, reject) => {
  5859. this.realFs.mkdir(npath.fromPortablePath(p), opts, this.makeCallback(resolve, reject));
  5860. });
  5861. }
  5862. mkdirSync(p, opts) {
  5863. return this.realFs.mkdirSync(npath.fromPortablePath(p), opts);
  5864. }
  5865. async rmdirPromise(p, opts) {
  5866. return await new Promise((resolve, reject) => {
  5867. if (opts) {
  5868. this.realFs.rmdir(npath.fromPortablePath(p), opts, this.makeCallback(resolve, reject));
  5869. } else {
  5870. this.realFs.rmdir(npath.fromPortablePath(p), this.makeCallback(resolve, reject));
  5871. }
  5872. });
  5873. }
  5874. rmdirSync(p, opts) {
  5875. return this.realFs.rmdirSync(npath.fromPortablePath(p), opts);
  5876. }
  5877. async linkPromise(existingP, newP) {
  5878. return await new Promise((resolve, reject) => {
  5879. this.realFs.link(npath.fromPortablePath(existingP), npath.fromPortablePath(newP), this.makeCallback(resolve, reject));
  5880. });
  5881. }
  5882. linkSync(existingP, newP) {
  5883. return this.realFs.linkSync(npath.fromPortablePath(existingP), npath.fromPortablePath(newP));
  5884. }
  5885. async symlinkPromise(target, p, type) {
  5886. return await new Promise((resolve, reject) => {
  5887. this.realFs.symlink(npath.fromPortablePath(target.replace(/\/+$/, ``)), npath.fromPortablePath(p), type, this.makeCallback(resolve, reject));
  5888. });
  5889. }
  5890. symlinkSync(target, p, type) {
  5891. return this.realFs.symlinkSync(npath.fromPortablePath(target.replace(/\/+$/, ``)), npath.fromPortablePath(p), type);
  5892. }
  5893. async readFilePromise(p, encoding) {
  5894. return await new Promise((resolve, reject) => {
  5895. const fsNativePath = typeof p === `string` ? npath.fromPortablePath(p) : p;
  5896. this.realFs.readFile(fsNativePath, encoding, this.makeCallback(resolve, reject));
  5897. });
  5898. }
  5899. readFileSync(p, encoding) {
  5900. const fsNativePath = typeof p === `string` ? npath.fromPortablePath(p) : p;
  5901. return this.realFs.readFileSync(fsNativePath, encoding);
  5902. }
  5903. async readdirPromise(p, opts) {
  5904. return await new Promise((resolve, reject) => {
  5905. if (opts == null ? void 0 : opts.withFileTypes) {
  5906. this.realFs.readdir(npath.fromPortablePath(p), { withFileTypes: true }, this.makeCallback(resolve, reject));
  5907. } else {
  5908. this.realFs.readdir(npath.fromPortablePath(p), this.makeCallback((value) => resolve(value), reject));
  5909. }
  5910. });
  5911. }
  5912. readdirSync(p, opts) {
  5913. if (opts == null ? void 0 : opts.withFileTypes) {
  5914. return this.realFs.readdirSync(npath.fromPortablePath(p), { withFileTypes: true });
  5915. } else {
  5916. return this.realFs.readdirSync(npath.fromPortablePath(p));
  5917. }
  5918. }
  5919. async readlinkPromise(p) {
  5920. return await new Promise((resolve, reject) => {
  5921. this.realFs.readlink(npath.fromPortablePath(p), this.makeCallback(resolve, reject));
  5922. }).then((path) => {
  5923. return npath.toPortablePath(path);
  5924. });
  5925. }
  5926. readlinkSync(p) {
  5927. return npath.toPortablePath(this.realFs.readlinkSync(npath.fromPortablePath(p)));
  5928. }
  5929. async truncatePromise(p, len) {
  5930. return await new Promise((resolve, reject) => {
  5931. this.realFs.truncate(npath.fromPortablePath(p), len, this.makeCallback(resolve, reject));
  5932. });
  5933. }
  5934. truncateSync(p, len) {
  5935. return this.realFs.truncateSync(npath.fromPortablePath(p), len);
  5936. }
  5937. async ftruncatePromise(fd, len) {
  5938. return await new Promise((resolve, reject) => {
  5939. this.realFs.ftruncate(fd, len, this.makeCallback(resolve, reject));
  5940. });
  5941. }
  5942. ftruncateSync(fd, len) {
  5943. return this.realFs.ftruncateSync(fd, len);
  5944. }
  5945. watch(p, a, b) {
  5946. return this.realFs.watch(
  5947. npath.fromPortablePath(p),
  5948. a,
  5949. b
  5950. );
  5951. }
  5952. watchFile(p, a, b) {
  5953. return this.realFs.watchFile(
  5954. npath.fromPortablePath(p),
  5955. a,
  5956. b
  5957. );
  5958. }
  5959. unwatchFile(p, cb) {
  5960. return this.realFs.unwatchFile(npath.fromPortablePath(p), cb);
  5961. }
  5962. makeCallback(resolve, reject) {
  5963. return (err, result) => {
  5964. if (err) {
  5965. reject(err);
  5966. } else {
  5967. resolve(result);
  5968. }
  5969. };
  5970. }
  5971. }
  5972. function assertStatus(current, expected) {
  5973. if (current !== expected) {
  5974. throw new Error(`Invalid StatWatcher status: expected '${expected}', got '${current}'`);
  5975. }
  5976. }
  5977. class CustomStatWatcher extends events.EventEmitter {
  5978. constructor(fakeFs, path, { bigint = false } = {}) {
  5979. super();
  5980. this.status = "ready" /* Ready */;
  5981. this.changeListeners = /* @__PURE__ */ new Map();
  5982. this.startTimeout = null;
  5983. this.fakeFs = fakeFs;
  5984. this.path = path;
  5985. this.bigint = bigint;
  5986. this.lastStats = this.stat();
  5987. }
  5988. static create(fakeFs, path, opts) {
  5989. const statWatcher = new CustomStatWatcher(fakeFs, path, opts);
  5990. statWatcher.start();
  5991. return statWatcher;
  5992. }
  5993. start() {
  5994. assertStatus(this.status, "ready" /* Ready */);
  5995. this.status = "running" /* Running */;
  5996. this.startTimeout = setTimeout(() => {
  5997. this.startTimeout = null;
  5998. if (!this.fakeFs.existsSync(this.path)) {
  5999. this.emit("change" /* Change */, this.lastStats, this.lastStats);
  6000. }
  6001. }, 3);
  6002. }
  6003. stop() {
  6004. assertStatus(this.status, "running" /* Running */);
  6005. this.status = "stopped" /* Stopped */;
  6006. if (this.startTimeout !== null) {
  6007. clearTimeout(this.startTimeout);
  6008. this.startTimeout = null;
  6009. }
  6010. this.emit("stop" /* Stop */);
  6011. }
  6012. stat() {
  6013. try {
  6014. return this.fakeFs.statSync(this.path, { bigint: this.bigint });
  6015. } catch (error) {
  6016. const statInstance = this.bigint ? new BigIntStatsEntry() : new StatEntry();
  6017. return clearStats(statInstance);
  6018. }
  6019. }
  6020. makeInterval(opts) {
  6021. const interval = setInterval(() => {
  6022. const currentStats = this.stat();
  6023. const previousStats = this.lastStats;
  6024. if (areStatsEqual(currentStats, previousStats))
  6025. return;
  6026. this.lastStats = currentStats;
  6027. this.emit("change" /* Change */, currentStats, previousStats);
  6028. }, opts.interval);
  6029. return opts.persistent ? interval : interval.unref();
  6030. }
  6031. registerChangeListener(listener, opts) {
  6032. this.addListener("change" /* Change */, listener);
  6033. this.changeListeners.set(listener, this.makeInterval(opts));
  6034. }
  6035. unregisterChangeListener(listener) {
  6036. this.removeListener("change" /* Change */, listener);
  6037. const interval = this.changeListeners.get(listener);
  6038. if (typeof interval !== `undefined`)
  6039. clearInterval(interval);
  6040. this.changeListeners.delete(listener);
  6041. }
  6042. unregisterAllChangeListeners() {
  6043. for (const listener of this.changeListeners.keys()) {
  6044. this.unregisterChangeListener(listener);
  6045. }
  6046. }
  6047. hasChangeListeners() {
  6048. return this.changeListeners.size > 0;
  6049. }
  6050. ref() {
  6051. for (const interval of this.changeListeners.values())
  6052. interval.ref();
  6053. return this;
  6054. }
  6055. unref() {
  6056. for (const interval of this.changeListeners.values())
  6057. interval.unref();
  6058. return this;
  6059. }
  6060. }
  6061. const statWatchersByFakeFS = /* @__PURE__ */ new WeakMap();
  6062. function watchFile(fakeFs, path, a, b) {
  6063. let bigint;
  6064. let persistent;
  6065. let interval;
  6066. let listener;
  6067. switch (typeof a) {
  6068. case `function`:
  6069. {
  6070. bigint = false;
  6071. persistent = true;
  6072. interval = 5007;
  6073. listener = a;
  6074. }
  6075. break;
  6076. default:
  6077. {
  6078. ({
  6079. bigint = false,
  6080. persistent = true,
  6081. interval = 5007
  6082. } = a);
  6083. listener = b;
  6084. }
  6085. break;
  6086. }
  6087. let statWatchers = statWatchersByFakeFS.get(fakeFs);
  6088. if (typeof statWatchers === `undefined`)
  6089. statWatchersByFakeFS.set(fakeFs, statWatchers = /* @__PURE__ */ new Map());
  6090. let statWatcher = statWatchers.get(path);
  6091. if (typeof statWatcher === `undefined`) {
  6092. statWatcher = CustomStatWatcher.create(fakeFs, path, { bigint });
  6093. statWatchers.set(path, statWatcher);
  6094. }
  6095. statWatcher.registerChangeListener(listener, { persistent, interval });
  6096. return statWatcher;
  6097. }
  6098. function unwatchFile(fakeFs, path, cb) {
  6099. const statWatchers = statWatchersByFakeFS.get(fakeFs);
  6100. if (typeof statWatchers === `undefined`)
  6101. return;
  6102. const statWatcher = statWatchers.get(path);
  6103. if (typeof statWatcher === `undefined`)
  6104. return;
  6105. if (typeof cb === `undefined`)
  6106. statWatcher.unregisterAllChangeListeners();
  6107. else
  6108. statWatcher.unregisterChangeListener(cb);
  6109. if (!statWatcher.hasChangeListeners()) {
  6110. statWatcher.stop();
  6111. statWatchers.delete(path);
  6112. }
  6113. }
  6114. function unwatchAllFiles(fakeFs) {
  6115. const statWatchers = statWatchersByFakeFS.get(fakeFs);
  6116. if (typeof statWatchers === `undefined`)
  6117. return;
  6118. for (const path of statWatchers.keys()) {
  6119. unwatchFile(fakeFs, path);
  6120. }
  6121. }
  6122. const DEFAULT_COMPRESSION_LEVEL = `mixed`;
  6123. function toUnixTimestamp(time) {
  6124. if (typeof time === `string` && String(+time) === time)
  6125. return +time;
  6126. if (typeof time === `number` && Number.isFinite(time)) {
  6127. if (time < 0) {
  6128. return Date.now() / 1e3;
  6129. } else {
  6130. return time;
  6131. }
  6132. }
  6133. if (nodeUtils.types.isDate(time))
  6134. return time.getTime() / 1e3;
  6135. throw new Error(`Invalid time`);
  6136. }
  6137. function makeEmptyArchive() {
  6138. return Buffer.from([
  6139. 80,
  6140. 75,
  6141. 5,
  6142. 6,
  6143. 0,
  6144. 0,
  6145. 0,
  6146. 0,
  6147. 0,
  6148. 0,
  6149. 0,
  6150. 0,
  6151. 0,
  6152. 0,
  6153. 0,
  6154. 0,
  6155. 0,
  6156. 0,
  6157. 0,
  6158. 0,
  6159. 0,
  6160. 0
  6161. ]);
  6162. }
  6163. class ZipFS extends BasePortableFakeFS {
  6164. constructor(source, opts) {
  6165. super();
  6166. this.lzSource = null;
  6167. this.listings = /* @__PURE__ */ new Map();
  6168. this.entries = /* @__PURE__ */ new Map();
  6169. this.fileSources = /* @__PURE__ */ new Map();
  6170. this.fds = /* @__PURE__ */ new Map();
  6171. this.nextFd = 0;
  6172. this.ready = false;
  6173. this.readOnly = false;
  6174. this.libzip = opts.libzip;
  6175. const pathOptions = opts;
  6176. this.level = typeof pathOptions.level !== `undefined` ? pathOptions.level : DEFAULT_COMPRESSION_LEVEL;
  6177. source != null ? source : source = makeEmptyArchive();
  6178. if (typeof source === `string`) {
  6179. const { baseFs = new NodeFS() } = pathOptions;
  6180. this.baseFs = baseFs;
  6181. this.path = source;
  6182. } else {
  6183. this.path = null;
  6184. this.baseFs = null;
  6185. }
  6186. if (opts.stats) {
  6187. this.stats = opts.stats;
  6188. } else {
  6189. if (typeof source === `string`) {
  6190. try {
  6191. this.stats = this.baseFs.statSync(source);
  6192. } catch (error) {
  6193. if (error.code === `ENOENT` && pathOptions.create) {
  6194. this.stats = makeDefaultStats();
  6195. } else {
  6196. throw error;
  6197. }
  6198. }
  6199. } else {
  6200. this.stats = makeDefaultStats();
  6201. }
  6202. }
  6203. const errPtr = this.libzip.malloc(4);
  6204. try {
  6205. let flags = 0;
  6206. if (typeof source === `string` && pathOptions.create)
  6207. flags |= this.libzip.ZIP_CREATE | this.libzip.ZIP_TRUNCATE;
  6208. if (opts.readOnly) {
  6209. flags |= this.libzip.ZIP_RDONLY;
  6210. this.readOnly = true;
  6211. }
  6212. if (typeof source === `string`) {
  6213. this.zip = this.libzip.open(npath.fromPortablePath(source), flags, errPtr);
  6214. } else {
  6215. const lzSource = this.allocateUnattachedSource(source);
  6216. try {
  6217. this.zip = this.libzip.openFromSource(lzSource, flags, errPtr);
  6218. this.lzSource = lzSource;
  6219. } catch (error) {
  6220. this.libzip.source.free(lzSource);
  6221. throw error;
  6222. }
  6223. }
  6224. if (this.zip === 0) {
  6225. const error = this.libzip.struct.errorS();
  6226. this.libzip.error.initWithCode(error, this.libzip.getValue(errPtr, `i32`));
  6227. throw this.makeLibzipError(error);
  6228. }
  6229. } finally {
  6230. this.libzip.free(errPtr);
  6231. }
  6232. this.listings.set(PortablePath.root, /* @__PURE__ */ new Set());
  6233. const entryCount = this.libzip.getNumEntries(this.zip, 0);
  6234. for (let t = 0; t < entryCount; ++t) {
  6235. const raw = this.libzip.getName(this.zip, t, 0);
  6236. if (ppath.isAbsolute(raw))
  6237. continue;
  6238. const p = ppath.resolve(PortablePath.root, raw);
  6239. this.registerEntry(p, t);
  6240. if (raw.endsWith(`/`)) {
  6241. this.registerListing(p);
  6242. }
  6243. }
  6244. this.symlinkCount = this.libzip.ext.countSymlinks(this.zip);
  6245. if (this.symlinkCount === -1)
  6246. throw this.makeLibzipError(this.libzip.getError(this.zip));
  6247. this.ready = true;
  6248. }
  6249. makeLibzipError(error) {
  6250. const errorCode = this.libzip.struct.errorCodeZip(error);
  6251. const strerror = this.libzip.error.strerror(error);
  6252. const libzipError = new LibzipError(strerror, this.libzip.errors[errorCode]);
  6253. if (errorCode === this.libzip.errors.ZIP_ER_CHANGED)
  6254. throw new Error(`Assertion failed: Unexpected libzip error: ${libzipError.message}`);
  6255. return libzipError;
  6256. }
  6257. getExtractHint(hints) {
  6258. for (const fileName of this.entries.keys()) {
  6259. const ext = this.pathUtils.extname(fileName);
  6260. if (hints.relevantExtensions.has(ext)) {
  6261. return true;
  6262. }
  6263. }
  6264. return false;
  6265. }
  6266. getAllFiles() {
  6267. return Array.from(this.entries.keys());
  6268. }
  6269. getRealPath() {
  6270. if (!this.path)
  6271. throw new Error(`ZipFS don't have real paths when loaded from a buffer`);
  6272. return this.path;
  6273. }
  6274. getBufferAndClose() {
  6275. this.prepareClose();
  6276. if (!this.lzSource)
  6277. throw new Error(`ZipFS was not created from a Buffer`);
  6278. if (this.entries.size === 0) {
  6279. this.discardAndClose();
  6280. return makeEmptyArchive();
  6281. }
  6282. try {
  6283. this.libzip.source.keep(this.lzSource);
  6284. if (this.libzip.close(this.zip) === -1)
  6285. throw this.makeLibzipError(this.libzip.getError(this.zip));
  6286. if (this.libzip.source.open(this.lzSource) === -1)
  6287. throw this.makeLibzipError(this.libzip.source.error(this.lzSource));
  6288. if (this.libzip.source.seek(this.lzSource, 0, 0, this.libzip.SEEK_END) === -1)
  6289. throw this.makeLibzipError(this.libzip.source.error(this.lzSource));
  6290. const size = this.libzip.source.tell(this.lzSource);
  6291. if (size === -1)
  6292. throw this.makeLibzipError(this.libzip.source.error(this.lzSource));
  6293. if (this.libzip.source.seek(this.lzSource, 0, 0, this.libzip.SEEK_SET) === -1)
  6294. throw this.makeLibzipError(this.libzip.source.error(this.lzSource));
  6295. const buffer = this.libzip.malloc(size);
  6296. if (!buffer)
  6297. throw new Error(`Couldn't allocate enough memory`);
  6298. try {
  6299. const rc = this.libzip.source.read(this.lzSource, buffer, size);
  6300. if (rc === -1)
  6301. throw this.makeLibzipError(this.libzip.source.error(this.lzSource));
  6302. else if (rc < size)
  6303. throw new Error(`Incomplete read`);
  6304. else if (rc > size)
  6305. throw new Error(`Overread`);
  6306. const memory = this.libzip.HEAPU8.subarray(buffer, buffer + size);
  6307. return Buffer.from(memory);
  6308. } finally {
  6309. this.libzip.free(buffer);
  6310. }
  6311. } finally {
  6312. this.libzip.source.close(this.lzSource);
  6313. this.libzip.source.free(this.lzSource);
  6314. this.ready = false;
  6315. }
  6316. }
  6317. prepareClose() {
  6318. if (!this.ready)
  6319. throw EBUSY(`archive closed, close`);
  6320. unwatchAllFiles(this);
  6321. }
  6322. saveAndClose() {
  6323. if (!this.path || !this.baseFs)
  6324. throw new Error(`ZipFS cannot be saved and must be discarded when loaded from a buffer`);
  6325. this.prepareClose();
  6326. if (this.readOnly) {
  6327. this.discardAndClose();
  6328. return;
  6329. }
  6330. const newMode = this.baseFs.existsSync(this.path) || this.stats.mode === DEFAULT_MODE ? void 0 : this.stats.mode;
  6331. if (this.entries.size === 0) {
  6332. this.discardAndClose();
  6333. this.baseFs.writeFileSync(this.path, makeEmptyArchive(), { mode: newMode });
  6334. } else {
  6335. const rc = this.libzip.close(this.zip);
  6336. if (rc === -1)
  6337. throw this.makeLibzipError(this.libzip.getError(this.zip));
  6338. if (typeof newMode !== `undefined`) {
  6339. this.baseFs.chmodSync(this.path, newMode);
  6340. }
  6341. }
  6342. this.ready = false;
  6343. }
  6344. discardAndClose() {
  6345. this.prepareClose();
  6346. this.libzip.discard(this.zip);
  6347. this.ready = false;
  6348. }
  6349. resolve(p) {
  6350. return ppath.resolve(PortablePath.root, p);
  6351. }
  6352. async openPromise(p, flags, mode) {
  6353. return this.openSync(p, flags, mode);
  6354. }
  6355. openSync(p, flags, mode) {
  6356. const fd = this.nextFd++;
  6357. this.fds.set(fd, { cursor: 0, p });
  6358. return fd;
  6359. }
  6360. hasOpenFileHandles() {
  6361. return !!this.fds.size;
  6362. }
  6363. async opendirPromise(p, opts) {
  6364. return this.opendirSync(p, opts);
  6365. }
  6366. opendirSync(p, opts = {}) {
  6367. const resolvedP = this.resolveFilename(`opendir '${p}'`, p);
  6368. if (!this.entries.has(resolvedP) && !this.listings.has(resolvedP))
  6369. throw ENOENT(`opendir '${p}'`);
  6370. const directoryListing = this.listings.get(resolvedP);
  6371. if (!directoryListing)
  6372. throw ENOTDIR(`opendir '${p}'`);
  6373. const entries = [...directoryListing];
  6374. const fd = this.openSync(resolvedP, `r`);
  6375. const onClose = () => {
  6376. this.closeSync(fd);
  6377. };
  6378. return opendir(this, resolvedP, entries, { onClose });
  6379. }
  6380. async readPromise(fd, buffer, offset, length, position) {
  6381. return this.readSync(fd, buffer, offset, length, position);
  6382. }
  6383. readSync(fd, buffer, offset = 0, length = buffer.byteLength, position = -1) {
  6384. const entry = this.fds.get(fd);
  6385. if (typeof entry === `undefined`)
  6386. throw EBADF(`read`);
  6387. const realPosition = position === -1 || position === null ? entry.cursor : position;
  6388. const source = this.readFileSync(entry.p);
  6389. source.copy(buffer, offset, realPosition, realPosition + length);
  6390. const bytesRead = Math.max(0, Math.min(source.length - realPosition, length));
  6391. if (position === -1 || position === null)
  6392. entry.cursor += bytesRead;
  6393. return bytesRead;
  6394. }
  6395. async writePromise(fd, buffer, offset, length, position) {
  6396. if (typeof buffer === `string`) {
  6397. return this.writeSync(fd, buffer, position);
  6398. } else {
  6399. return this.writeSync(fd, buffer, offset, length, position);
  6400. }
  6401. }
  6402. writeSync(fd, buffer, offset, length, position) {
  6403. const entry = this.fds.get(fd);
  6404. if (typeof entry === `undefined`)
  6405. throw EBADF(`read`);
  6406. throw new Error(`Unimplemented`);
  6407. }
  6408. async closePromise(fd) {
  6409. return this.closeSync(fd);
  6410. }
  6411. closeSync(fd) {
  6412. const entry = this.fds.get(fd);
  6413. if (typeof entry === `undefined`)
  6414. throw EBADF(`read`);
  6415. this.fds.delete(fd);
  6416. }
  6417. createReadStream(p, { encoding } = {}) {
  6418. if (p === null)
  6419. throw new Error(`Unimplemented`);
  6420. const fd = this.openSync(p, `r`);
  6421. const stream$1 = Object.assign(
  6422. new stream.PassThrough({
  6423. emitClose: true,
  6424. autoDestroy: true,
  6425. destroy: (error, callback) => {
  6426. clearImmediate(immediate);
  6427. this.closeSync(fd);
  6428. callback(error);
  6429. }
  6430. }),
  6431. {
  6432. close() {
  6433. stream$1.destroy();
  6434. },
  6435. bytesRead: 0,
  6436. path: p
  6437. }
  6438. );
  6439. const immediate = setImmediate(async () => {
  6440. try {
  6441. const data = await this.readFilePromise(p, encoding);
  6442. stream$1.bytesRead = data.length;
  6443. stream$1.end(data);
  6444. } catch (error) {
  6445. stream$1.destroy(error);
  6446. }
  6447. });
  6448. return stream$1;
  6449. }
  6450. createWriteStream(p, { encoding } = {}) {
  6451. if (this.readOnly)
  6452. throw EROFS(`open '${p}'`);
  6453. if (p === null)
  6454. throw new Error(`Unimplemented`);
  6455. const chunks = [];
  6456. const fd = this.openSync(p, `w`);
  6457. const stream$1 = Object.assign(
  6458. new stream.PassThrough({
  6459. autoDestroy: true,
  6460. emitClose: true,
  6461. destroy: (error, callback) => {
  6462. try {
  6463. if (error) {
  6464. callback(error);
  6465. } else {
  6466. this.writeFileSync(p, Buffer.concat(chunks), encoding);
  6467. callback(null);
  6468. }
  6469. } catch (err) {
  6470. callback(err);
  6471. } finally {
  6472. this.closeSync(fd);
  6473. }
  6474. }
  6475. }),
  6476. {
  6477. bytesWritten: 0,
  6478. path: p,
  6479. close() {
  6480. stream$1.destroy();
  6481. }
  6482. }
  6483. );
  6484. stream$1.on(`data`, (chunk) => {
  6485. const chunkBuffer = Buffer.from(chunk);
  6486. stream$1.bytesWritten += chunkBuffer.length;
  6487. chunks.push(chunkBuffer);
  6488. });
  6489. return stream$1;
  6490. }
  6491. async realpathPromise(p) {
  6492. return this.realpathSync(p);
  6493. }
  6494. realpathSync(p) {
  6495. const resolvedP = this.resolveFilename(`lstat '${p}'`, p);
  6496. if (!this.entries.has(resolvedP) && !this.listings.has(resolvedP))
  6497. throw ENOENT(`lstat '${p}'`);
  6498. return resolvedP;
  6499. }
  6500. async existsPromise(p) {
  6501. return this.existsSync(p);
  6502. }
  6503. existsSync(p) {
  6504. if (!this.ready)
  6505. throw EBUSY(`archive closed, existsSync '${p}'`);
  6506. if (this.symlinkCount === 0) {
  6507. const resolvedP2 = ppath.resolve(PortablePath.root, p);
  6508. return this.entries.has(resolvedP2) || this.listings.has(resolvedP2);
  6509. }
  6510. let resolvedP;
  6511. try {
  6512. resolvedP = this.resolveFilename(`stat '${p}'`, p, void 0, false);
  6513. } catch (error) {
  6514. return false;
  6515. }
  6516. if (resolvedP === void 0)
  6517. return false;
  6518. return this.entries.has(resolvedP) || this.listings.has(resolvedP);
  6519. }
  6520. async accessPromise(p, mode) {
  6521. return this.accessSync(p, mode);
  6522. }
  6523. accessSync(p, mode = fs.constants.F_OK) {
  6524. const resolvedP = this.resolveFilename(`access '${p}'`, p);
  6525. if (!this.entries.has(resolvedP) && !this.listings.has(resolvedP))
  6526. throw ENOENT(`access '${p}'`);
  6527. if (this.readOnly && mode & fs.constants.W_OK) {
  6528. throw EROFS(`access '${p}'`);
  6529. }
  6530. }
  6531. async statPromise(p, opts = { bigint: false }) {
  6532. if (opts.bigint)
  6533. return this.statSync(p, { bigint: true });
  6534. return this.statSync(p);
  6535. }
  6536. statSync(p, opts = { bigint: false, throwIfNoEntry: true }) {
  6537. const resolvedP = this.resolveFilename(`stat '${p}'`, p, void 0, opts.throwIfNoEntry);
  6538. if (resolvedP === void 0)
  6539. return void 0;
  6540. if (!this.entries.has(resolvedP) && !this.listings.has(resolvedP)) {
  6541. if (opts.throwIfNoEntry === false)
  6542. return void 0;
  6543. throw ENOENT(`stat '${p}'`);
  6544. }
  6545. if (p[p.length - 1] === `/` && !this.listings.has(resolvedP))
  6546. throw ENOTDIR(`stat '${p}'`);
  6547. return this.statImpl(`stat '${p}'`, resolvedP, opts);
  6548. }
  6549. async fstatPromise(fd, opts) {
  6550. return this.fstatSync(fd, opts);
  6551. }
  6552. fstatSync(fd, opts) {
  6553. const entry = this.fds.get(fd);
  6554. if (typeof entry === `undefined`)
  6555. throw EBADF(`fstatSync`);
  6556. const { p } = entry;
  6557. const resolvedP = this.resolveFilename(`stat '${p}'`, p);
  6558. if (!this.entries.has(resolvedP) && !this.listings.has(resolvedP))
  6559. throw ENOENT(`stat '${p}'`);
  6560. if (p[p.length - 1] === `/` && !this.listings.has(resolvedP))
  6561. throw ENOTDIR(`stat '${p}'`);
  6562. return this.statImpl(`fstat '${p}'`, resolvedP, opts);
  6563. }
  6564. async lstatPromise(p, opts = { bigint: false }) {
  6565. if (opts.bigint)
  6566. return this.lstatSync(p, { bigint: true });
  6567. return this.lstatSync(p);
  6568. }
  6569. lstatSync(p, opts = { bigint: false, throwIfNoEntry: true }) {
  6570. const resolvedP = this.resolveFilename(`lstat '${p}'`, p, false, opts.throwIfNoEntry);
  6571. if (resolvedP === void 0)
  6572. return void 0;
  6573. if (!this.entries.has(resolvedP) && !this.listings.has(resolvedP)) {
  6574. if (opts.throwIfNoEntry === false)
  6575. return void 0;
  6576. throw ENOENT(`lstat '${p}'`);
  6577. }
  6578. if (p[p.length - 1] === `/` && !this.listings.has(resolvedP))
  6579. throw ENOTDIR(`lstat '${p}'`);
  6580. return this.statImpl(`lstat '${p}'`, resolvedP, opts);
  6581. }
  6582. statImpl(reason, p, opts = {}) {
  6583. const entry = this.entries.get(p);
  6584. if (typeof entry !== `undefined`) {
  6585. const stat = this.libzip.struct.statS();
  6586. const rc = this.libzip.statIndex(this.zip, entry, 0, 0, stat);
  6587. if (rc === -1)
  6588. throw this.makeLibzipError(this.libzip.getError(this.zip));
  6589. const uid = this.stats.uid;
  6590. const gid = this.stats.gid;
  6591. const size = this.libzip.struct.statSize(stat) >>> 0;
  6592. const blksize = 512;
  6593. const blocks = Math.ceil(size / blksize);
  6594. const mtimeMs = (this.libzip.struct.statMtime(stat) >>> 0) * 1e3;
  6595. const atimeMs = mtimeMs;
  6596. const birthtimeMs = mtimeMs;
  6597. const ctimeMs = mtimeMs;
  6598. const atime = new Date(atimeMs);
  6599. const birthtime = new Date(birthtimeMs);
  6600. const ctime = new Date(ctimeMs);
  6601. const mtime = new Date(mtimeMs);
  6602. const type = this.listings.has(p) ? S_IFDIR : this.isSymbolicLink(entry) ? S_IFLNK : S_IFREG;
  6603. const defaultMode = type === S_IFDIR ? 493 : 420;
  6604. const mode = type | this.getUnixMode(entry, defaultMode) & 511;
  6605. const crc = this.libzip.struct.statCrc(stat);
  6606. const statInstance = Object.assign(new StatEntry(), { uid, gid, size, blksize, blocks, atime, birthtime, ctime, mtime, atimeMs, birthtimeMs, ctimeMs, mtimeMs, mode, crc });
  6607. return opts.bigint === true ? convertToBigIntStats(statInstance) : statInstance;
  6608. }
  6609. if (this.listings.has(p)) {
  6610. const uid = this.stats.uid;
  6611. const gid = this.stats.gid;
  6612. const size = 0;
  6613. const blksize = 512;
  6614. const blocks = 0;
  6615. const atimeMs = this.stats.mtimeMs;
  6616. const birthtimeMs = this.stats.mtimeMs;
  6617. const ctimeMs = this.stats.mtimeMs;
  6618. const mtimeMs = this.stats.mtimeMs;
  6619. const atime = new Date(atimeMs);
  6620. const birthtime = new Date(birthtimeMs);
  6621. const ctime = new Date(ctimeMs);
  6622. const mtime = new Date(mtimeMs);
  6623. const mode = S_IFDIR | 493;
  6624. const crc = 0;
  6625. const statInstance = Object.assign(new StatEntry(), { uid, gid, size, blksize, blocks, atime, birthtime, ctime, mtime, atimeMs, birthtimeMs, ctimeMs, mtimeMs, mode, crc });
  6626. return opts.bigint === true ? convertToBigIntStats(statInstance) : statInstance;
  6627. }
  6628. throw new Error(`Unreachable`);
  6629. }
  6630. getUnixMode(index, defaultMode) {
  6631. const rc = this.libzip.file.getExternalAttributes(this.zip, index, 0, 0, this.libzip.uint08S, this.libzip.uint32S);
  6632. if (rc === -1)
  6633. throw this.makeLibzipError(this.libzip.getError(this.zip));
  6634. const opsys = this.libzip.getValue(this.libzip.uint08S, `i8`) >>> 0;
  6635. if (opsys !== this.libzip.ZIP_OPSYS_UNIX)
  6636. return defaultMode;
  6637. return this.libzip.getValue(this.libzip.uint32S, `i32`) >>> 16;
  6638. }
  6639. registerListing(p) {
  6640. const existingListing = this.listings.get(p);
  6641. if (existingListing)
  6642. return existingListing;
  6643. const parentListing = this.registerListing(ppath.dirname(p));
  6644. parentListing.add(ppath.basename(p));
  6645. const newListing = /* @__PURE__ */ new Set();
  6646. this.listings.set(p, newListing);
  6647. return newListing;
  6648. }
  6649. registerEntry(p, index) {
  6650. const parentListing = this.registerListing(ppath.dirname(p));
  6651. parentListing.add(ppath.basename(p));
  6652. this.entries.set(p, index);
  6653. }
  6654. unregisterListing(p) {
  6655. this.listings.delete(p);
  6656. const parentListing = this.listings.get(ppath.dirname(p));
  6657. parentListing == null ? void 0 : parentListing.delete(ppath.basename(p));
  6658. }
  6659. unregisterEntry(p) {
  6660. this.unregisterListing(p);
  6661. const entry = this.entries.get(p);
  6662. this.entries.delete(p);
  6663. if (typeof entry === `undefined`)
  6664. return;
  6665. this.fileSources.delete(entry);
  6666. if (this.isSymbolicLink(entry)) {
  6667. this.symlinkCount--;
  6668. }
  6669. }
  6670. deleteEntry(p, index) {
  6671. this.unregisterEntry(p);
  6672. const rc = this.libzip.delete(this.zip, index);
  6673. if (rc === -1) {
  6674. throw this.makeLibzipError(this.libzip.getError(this.zip));
  6675. }
  6676. }
  6677. resolveFilename(reason, p, resolveLastComponent = true, throwIfNoEntry = true) {
  6678. if (!this.ready)
  6679. throw EBUSY(`archive closed, ${reason}`);
  6680. let resolvedP = ppath.resolve(PortablePath.root, p);
  6681. if (resolvedP === `/`)
  6682. return PortablePath.root;
  6683. const fileIndex = this.entries.get(resolvedP);
  6684. if (resolveLastComponent && fileIndex !== void 0) {
  6685. if (this.symlinkCount !== 0 && this.isSymbolicLink(fileIndex)) {
  6686. const target = this.getFileSource(fileIndex).toString();
  6687. return this.resolveFilename(reason, ppath.resolve(ppath.dirname(resolvedP), target), true, throwIfNoEntry);
  6688. } else {
  6689. return resolvedP;
  6690. }
  6691. }
  6692. while (true) {
  6693. const parentP = this.resolveFilename(reason, ppath.dirname(resolvedP), true, throwIfNoEntry);
  6694. if (parentP === void 0)
  6695. return parentP;
  6696. const isDir = this.listings.has(parentP);
  6697. const doesExist = this.entries.has(parentP);
  6698. if (!isDir && !doesExist) {
  6699. if (throwIfNoEntry === false)
  6700. return void 0;
  6701. throw ENOENT(reason);
  6702. }
  6703. if (!isDir)
  6704. throw ENOTDIR(reason);
  6705. resolvedP = ppath.resolve(parentP, ppath.basename(resolvedP));
  6706. if (!resolveLastComponent || this.symlinkCount === 0)
  6707. break;
  6708. const index = this.libzip.name.locate(this.zip, resolvedP.slice(1), 0);
  6709. if (index === -1)
  6710. break;
  6711. if (this.isSymbolicLink(index)) {
  6712. const target = this.getFileSource(index).toString();
  6713. resolvedP = ppath.resolve(ppath.dirname(resolvedP), target);
  6714. } else {
  6715. break;
  6716. }
  6717. }
  6718. return resolvedP;
  6719. }
  6720. allocateBuffer(content) {
  6721. if (!Buffer.isBuffer(content))
  6722. content = Buffer.from(content);
  6723. const buffer = this.libzip.malloc(content.byteLength);
  6724. if (!buffer)
  6725. throw new Error(`Couldn't allocate enough memory`);
  6726. const heap = new Uint8Array(this.libzip.HEAPU8.buffer, buffer, content.byteLength);
  6727. heap.set(content);
  6728. return { buffer, byteLength: content.byteLength };
  6729. }
  6730. allocateUnattachedSource(content) {
  6731. const error = this.libzip.struct.errorS();
  6732. const { buffer, byteLength } = this.allocateBuffer(content);
  6733. const source = this.libzip.source.fromUnattachedBuffer(buffer, byteLength, 0, 1, error);
  6734. if (source === 0) {
  6735. this.libzip.free(error);
  6736. throw this.makeLibzipError(error);
  6737. }
  6738. return source;
  6739. }
  6740. allocateSource(content) {
  6741. const { buffer, byteLength } = this.allocateBuffer(content);
  6742. const source = this.libzip.source.fromBuffer(this.zip, buffer, byteLength, 0, 1);
  6743. if (source === 0) {
  6744. this.libzip.free(buffer);
  6745. throw this.makeLibzipError(this.libzip.getError(this.zip));
  6746. }
  6747. return source;
  6748. }
  6749. setFileSource(p, content) {
  6750. const buffer = Buffer.isBuffer(content) ? content : Buffer.from(content);
  6751. const target = ppath.relative(PortablePath.root, p);
  6752. const lzSource = this.allocateSource(content);
  6753. try {
  6754. const newIndex = this.libzip.file.add(this.zip, target, lzSource, this.libzip.ZIP_FL_OVERWRITE);
  6755. if (newIndex === -1)
  6756. throw this.makeLibzipError(this.libzip.getError(this.zip));
  6757. if (this.level !== `mixed`) {
  6758. const method = this.level === 0 ? this.libzip.ZIP_CM_STORE : this.libzip.ZIP_CM_DEFLATE;
  6759. const rc = this.libzip.file.setCompression(this.zip, newIndex, 0, method, this.level);
  6760. if (rc === -1) {
  6761. throw this.makeLibzipError(this.libzip.getError(this.zip));
  6762. }
  6763. }
  6764. this.fileSources.set(newIndex, buffer);
  6765. return newIndex;
  6766. } catch (error) {
  6767. this.libzip.source.free(lzSource);
  6768. throw error;
  6769. }
  6770. }
  6771. isSymbolicLink(index) {
  6772. if (this.symlinkCount === 0)
  6773. return false;
  6774. const attrs = this.libzip.file.getExternalAttributes(this.zip, index, 0, 0, this.libzip.uint08S, this.libzip.uint32S);
  6775. if (attrs === -1)
  6776. throw this.makeLibzipError(this.libzip.getError(this.zip));
  6777. const opsys = this.libzip.getValue(this.libzip.uint08S, `i8`) >>> 0;
  6778. if (opsys !== this.libzip.ZIP_OPSYS_UNIX)
  6779. return false;
  6780. const attributes = this.libzip.getValue(this.libzip.uint32S, `i32`) >>> 16;
  6781. return (attributes & S_IFMT) === S_IFLNK;
  6782. }
  6783. getFileSource(index, opts = { asyncDecompress: false }) {
  6784. const cachedFileSource = this.fileSources.get(index);
  6785. if (typeof cachedFileSource !== `undefined`)
  6786. return cachedFileSource;
  6787. const stat = this.libzip.struct.statS();
  6788. const rc = this.libzip.statIndex(this.zip, index, 0, 0, stat);
  6789. if (rc === -1)
  6790. throw this.makeLibzipError(this.libzip.getError(this.zip));
  6791. const size = this.libzip.struct.statCompSize(stat);
  6792. const compressionMethod = this.libzip.struct.statCompMethod(stat);
  6793. const buffer = this.libzip.malloc(size);
  6794. try {
  6795. const file = this.libzip.fopenIndex(this.zip, index, 0, this.libzip.ZIP_FL_COMPRESSED);
  6796. if (file === 0)
  6797. throw this.makeLibzipError(this.libzip.getError(this.zip));
  6798. try {
  6799. const rc2 = this.libzip.fread(file, buffer, size, 0);
  6800. if (rc2 === -1)
  6801. throw this.makeLibzipError(this.libzip.file.getError(file));
  6802. else if (rc2 < size)
  6803. throw new Error(`Incomplete read`);
  6804. else if (rc2 > size)
  6805. throw new Error(`Overread`);
  6806. const memory = this.libzip.HEAPU8.subarray(buffer, buffer + size);
  6807. const data = Buffer.from(memory);
  6808. if (compressionMethod === 0) {
  6809. this.fileSources.set(index, data);
  6810. return data;
  6811. } else if (opts.asyncDecompress) {
  6812. return new Promise((resolve, reject) => {
  6813. zlib__default.default.inflateRaw(data, (error, result) => {
  6814. if (error) {
  6815. reject(error);
  6816. } else {
  6817. this.fileSources.set(index, result);
  6818. resolve(result);
  6819. }
  6820. });
  6821. });
  6822. } else {
  6823. const decompressedData = zlib__default.default.inflateRawSync(data);
  6824. this.fileSources.set(index, decompressedData);
  6825. return decompressedData;
  6826. }
  6827. } finally {
  6828. this.libzip.fclose(file);
  6829. }
  6830. } finally {
  6831. this.libzip.free(buffer);
  6832. }
  6833. }
  6834. async fchmodPromise(fd, mask) {
  6835. return this.chmodPromise(this.fdToPath(fd, `fchmod`), mask);
  6836. }
  6837. fchmodSync(fd, mask) {
  6838. return this.chmodSync(this.fdToPath(fd, `fchmodSync`), mask);
  6839. }
  6840. async chmodPromise(p, mask) {
  6841. return this.chmodSync(p, mask);
  6842. }
  6843. chmodSync(p, mask) {
  6844. if (this.readOnly)
  6845. throw EROFS(`chmod '${p}'`);
  6846. mask &= 493;
  6847. const resolvedP = this.resolveFilename(`chmod '${p}'`, p, false);
  6848. const entry = this.entries.get(resolvedP);
  6849. if (typeof entry === `undefined`)
  6850. throw new Error(`Assertion failed: The entry should have been registered (${resolvedP})`);
  6851. const oldMod = this.getUnixMode(entry, S_IFREG | 0);
  6852. const newMod = oldMod & ~511 | mask;
  6853. const rc = this.libzip.file.setExternalAttributes(this.zip, entry, 0, 0, this.libzip.ZIP_OPSYS_UNIX, newMod << 16);
  6854. if (rc === -1) {
  6855. throw this.makeLibzipError(this.libzip.getError(this.zip));
  6856. }
  6857. }
  6858. async fchownPromise(fd, uid, gid) {
  6859. return this.chownPromise(this.fdToPath(fd, `fchown`), uid, gid);
  6860. }
  6861. fchownSync(fd, uid, gid) {
  6862. return this.chownSync(this.fdToPath(fd, `fchownSync`), uid, gid);
  6863. }
  6864. async chownPromise(p, uid, gid) {
  6865. return this.chownSync(p, uid, gid);
  6866. }
  6867. chownSync(p, uid, gid) {
  6868. throw new Error(`Unimplemented`);
  6869. }
  6870. async renamePromise(oldP, newP) {
  6871. return this.renameSync(oldP, newP);
  6872. }
  6873. renameSync(oldP, newP) {
  6874. throw new Error(`Unimplemented`);
  6875. }
  6876. async copyFilePromise(sourceP, destP, flags) {
  6877. const { indexSource, indexDest, resolvedDestP } = this.prepareCopyFile(sourceP, destP, flags);
  6878. const source = await this.getFileSource(indexSource, { asyncDecompress: true });
  6879. const newIndex = this.setFileSource(resolvedDestP, source);
  6880. if (newIndex !== indexDest) {
  6881. this.registerEntry(resolvedDestP, newIndex);
  6882. }
  6883. }
  6884. copyFileSync(sourceP, destP, flags = 0) {
  6885. const { indexSource, indexDest, resolvedDestP } = this.prepareCopyFile(sourceP, destP, flags);
  6886. const source = this.getFileSource(indexSource);
  6887. const newIndex = this.setFileSource(resolvedDestP, source);
  6888. if (newIndex !== indexDest) {
  6889. this.registerEntry(resolvedDestP, newIndex);
  6890. }
  6891. }
  6892. prepareCopyFile(sourceP, destP, flags = 0) {
  6893. if (this.readOnly)
  6894. throw EROFS(`copyfile '${sourceP} -> '${destP}'`);
  6895. if ((flags & fs.constants.COPYFILE_FICLONE_FORCE) !== 0)
  6896. throw ENOSYS(`unsupported clone operation`, `copyfile '${sourceP}' -> ${destP}'`);
  6897. const resolvedSourceP = this.resolveFilename(`copyfile '${sourceP} -> ${destP}'`, sourceP);
  6898. const indexSource = this.entries.get(resolvedSourceP);
  6899. if (typeof indexSource === `undefined`)
  6900. throw EINVAL(`copyfile '${sourceP}' -> '${destP}'`);
  6901. const resolvedDestP = this.resolveFilename(`copyfile '${sourceP}' -> ${destP}'`, destP);
  6902. const indexDest = this.entries.get(resolvedDestP);
  6903. if ((flags & (fs.constants.COPYFILE_EXCL | fs.constants.COPYFILE_FICLONE_FORCE)) !== 0 && typeof indexDest !== `undefined`)
  6904. throw EEXIST(`copyfile '${sourceP}' -> '${destP}'`);
  6905. return {
  6906. indexSource,
  6907. resolvedDestP,
  6908. indexDest
  6909. };
  6910. }
  6911. async appendFilePromise(p, content, opts) {
  6912. if (this.readOnly)
  6913. throw EROFS(`open '${p}'`);
  6914. if (typeof opts === `undefined`)
  6915. opts = { flag: `a` };
  6916. else if (typeof opts === `string`)
  6917. opts = { flag: `a`, encoding: opts };
  6918. else if (typeof opts.flag === `undefined`)
  6919. opts = { flag: `a`, ...opts };
  6920. return this.writeFilePromise(p, content, opts);
  6921. }
  6922. appendFileSync(p, content, opts = {}) {
  6923. if (this.readOnly)
  6924. throw EROFS(`open '${p}'`);
  6925. if (typeof opts === `undefined`)
  6926. opts = { flag: `a` };
  6927. else if (typeof opts === `string`)
  6928. opts = { flag: `a`, encoding: opts };
  6929. else if (typeof opts.flag === `undefined`)
  6930. opts = { flag: `a`, ...opts };
  6931. return this.writeFileSync(p, content, opts);
  6932. }
  6933. fdToPath(fd, reason) {
  6934. var _a;
  6935. const path = (_a = this.fds.get(fd)) == null ? void 0 : _a.p;
  6936. if (typeof path === `undefined`)
  6937. throw EBADF(reason);
  6938. return path;
  6939. }
  6940. async writeFilePromise(p, content, opts) {
  6941. const { encoding, mode, index, resolvedP } = this.prepareWriteFile(p, opts);
  6942. if (index !== void 0 && typeof opts === `object` && opts.flag && opts.flag.includes(`a`))
  6943. content = Buffer.concat([await this.getFileSource(index, { asyncDecompress: true }), Buffer.from(content)]);
  6944. if (encoding !== null)
  6945. content = content.toString(encoding);
  6946. const newIndex = this.setFileSource(resolvedP, content);
  6947. if (newIndex !== index)
  6948. this.registerEntry(resolvedP, newIndex);
  6949. if (mode !== null) {
  6950. await this.chmodPromise(resolvedP, mode);
  6951. }
  6952. }
  6953. writeFileSync(p, content, opts) {
  6954. const { encoding, mode, index, resolvedP } = this.prepareWriteFile(p, opts);
  6955. if (index !== void 0 && typeof opts === `object` && opts.flag && opts.flag.includes(`a`))
  6956. content = Buffer.concat([this.getFileSource(index), Buffer.from(content)]);
  6957. if (encoding !== null)
  6958. content = content.toString(encoding);
  6959. const newIndex = this.setFileSource(resolvedP, content);
  6960. if (newIndex !== index)
  6961. this.registerEntry(resolvedP, newIndex);
  6962. if (mode !== null) {
  6963. this.chmodSync(resolvedP, mode);
  6964. }
  6965. }
  6966. prepareWriteFile(p, opts) {
  6967. if (typeof p === `number`)
  6968. p = this.fdToPath(p, `read`);
  6969. if (this.readOnly)
  6970. throw EROFS(`open '${p}'`);
  6971. const resolvedP = this.resolveFilename(`open '${p}'`, p);
  6972. if (this.listings.has(resolvedP))
  6973. throw EISDIR(`open '${p}'`);
  6974. let encoding = null, mode = null;
  6975. if (typeof opts === `string`) {
  6976. encoding = opts;
  6977. } else if (typeof opts === `object`) {
  6978. ({
  6979. encoding = null,
  6980. mode = null
  6981. } = opts);
  6982. }
  6983. const index = this.entries.get(resolvedP);
  6984. return {
  6985. encoding,
  6986. mode,
  6987. resolvedP,
  6988. index
  6989. };
  6990. }
  6991. async unlinkPromise(p) {
  6992. return this.unlinkSync(p);
  6993. }
  6994. unlinkSync(p) {
  6995. if (this.readOnly)
  6996. throw EROFS(`unlink '${p}'`);
  6997. const resolvedP = this.resolveFilename(`unlink '${p}'`, p);
  6998. if (this.listings.has(resolvedP))
  6999. throw EISDIR(`unlink '${p}'`);
  7000. const index = this.entries.get(resolvedP);
  7001. if (typeof index === `undefined`)
  7002. throw EINVAL(`unlink '${p}'`);
  7003. this.deleteEntry(resolvedP, index);
  7004. }
  7005. async utimesPromise(p, atime, mtime) {
  7006. return this.utimesSync(p, atime, mtime);
  7007. }
  7008. utimesSync(p, atime, mtime) {
  7009. if (this.readOnly)
  7010. throw EROFS(`utimes '${p}'`);
  7011. const resolvedP = this.resolveFilename(`utimes '${p}'`, p);
  7012. this.utimesImpl(resolvedP, mtime);
  7013. }
  7014. async lutimesPromise(p, atime, mtime) {
  7015. return this.lutimesSync(p, atime, mtime);
  7016. }
  7017. lutimesSync(p, atime, mtime) {
  7018. if (this.readOnly)
  7019. throw EROFS(`lutimes '${p}'`);
  7020. const resolvedP = this.resolveFilename(`utimes '${p}'`, p, false);
  7021. this.utimesImpl(resolvedP, mtime);
  7022. }
  7023. utimesImpl(resolvedP, mtime) {
  7024. if (this.listings.has(resolvedP)) {
  7025. if (!this.entries.has(resolvedP))
  7026. this.hydrateDirectory(resolvedP);
  7027. }
  7028. const entry = this.entries.get(resolvedP);
  7029. if (entry === void 0)
  7030. throw new Error(`Unreachable`);
  7031. const rc = this.libzip.file.setMtime(this.zip, entry, 0, toUnixTimestamp(mtime), 0);
  7032. if (rc === -1) {
  7033. throw this.makeLibzipError(this.libzip.getError(this.zip));
  7034. }
  7035. }
  7036. async mkdirPromise(p, opts) {
  7037. return this.mkdirSync(p, opts);
  7038. }
  7039. mkdirSync(p, { mode = 493, recursive = false } = {}) {
  7040. if (recursive)
  7041. return this.mkdirpSync(p, { chmod: mode });
  7042. if (this.readOnly)
  7043. throw EROFS(`mkdir '${p}'`);
  7044. const resolvedP = this.resolveFilename(`mkdir '${p}'`, p);
  7045. if (this.entries.has(resolvedP) || this.listings.has(resolvedP))
  7046. throw EEXIST(`mkdir '${p}'`);
  7047. this.hydrateDirectory(resolvedP);
  7048. this.chmodSync(resolvedP, mode);
  7049. return void 0;
  7050. }
  7051. async rmdirPromise(p, opts) {
  7052. return this.rmdirSync(p, opts);
  7053. }
  7054. rmdirSync(p, { recursive = false } = {}) {
  7055. if (this.readOnly)
  7056. throw EROFS(`rmdir '${p}'`);
  7057. if (recursive) {
  7058. this.removeSync(p);
  7059. return;
  7060. }
  7061. const resolvedP = this.resolveFilename(`rmdir '${p}'`, p);
  7062. const directoryListing = this.listings.get(resolvedP);
  7063. if (!directoryListing)
  7064. throw ENOTDIR(`rmdir '${p}'`);
  7065. if (directoryListing.size > 0)
  7066. throw ENOTEMPTY(`rmdir '${p}'`);
  7067. const index = this.entries.get(resolvedP);
  7068. if (typeof index === `undefined`)
  7069. throw EINVAL(`rmdir '${p}'`);
  7070. this.deleteEntry(p, index);
  7071. }
  7072. hydrateDirectory(resolvedP) {
  7073. const index = this.libzip.dir.add(this.zip, ppath.relative(PortablePath.root, resolvedP));
  7074. if (index === -1)
  7075. throw this.makeLibzipError(this.libzip.getError(this.zip));
  7076. this.registerListing(resolvedP);
  7077. this.registerEntry(resolvedP, index);
  7078. return index;
  7079. }
  7080. async linkPromise(existingP, newP) {
  7081. return this.linkSync(existingP, newP);
  7082. }
  7083. linkSync(existingP, newP) {
  7084. throw EOPNOTSUPP(`link '${existingP}' -> '${newP}'`);
  7085. }
  7086. async symlinkPromise(target, p) {
  7087. return this.symlinkSync(target, p);
  7088. }
  7089. symlinkSync(target, p) {
  7090. if (this.readOnly)
  7091. throw EROFS(`symlink '${target}' -> '${p}'`);
  7092. const resolvedP = this.resolveFilename(`symlink '${target}' -> '${p}'`, p);
  7093. if (this.listings.has(resolvedP))
  7094. throw EISDIR(`symlink '${target}' -> '${p}'`);
  7095. if (this.entries.has(resolvedP))
  7096. throw EEXIST(`symlink '${target}' -> '${p}'`);
  7097. const index = this.setFileSource(resolvedP, target);
  7098. this.registerEntry(resolvedP, index);
  7099. const rc = this.libzip.file.setExternalAttributes(this.zip, index, 0, 0, this.libzip.ZIP_OPSYS_UNIX, (S_IFLNK | 511) << 16);
  7100. if (rc === -1)
  7101. throw this.makeLibzipError(this.libzip.getError(this.zip));
  7102. this.symlinkCount += 1;
  7103. }
  7104. async readFilePromise(p, encoding) {
  7105. if (typeof encoding === `object`)
  7106. encoding = encoding ? encoding.encoding : void 0;
  7107. const data = await this.readFileBuffer(p, { asyncDecompress: true });
  7108. return encoding ? data.toString(encoding) : data;
  7109. }
  7110. readFileSync(p, encoding) {
  7111. if (typeof encoding === `object`)
  7112. encoding = encoding ? encoding.encoding : void 0;
  7113. const data = this.readFileBuffer(p);
  7114. return encoding ? data.toString(encoding) : data;
  7115. }
  7116. readFileBuffer(p, opts = { asyncDecompress: false }) {
  7117. if (typeof p === `number`)
  7118. p = this.fdToPath(p, `read`);
  7119. const resolvedP = this.resolveFilename(`open '${p}'`, p);
  7120. if (!this.entries.has(resolvedP) && !this.listings.has(resolvedP))
  7121. throw ENOENT(`open '${p}'`);
  7122. if (p[p.length - 1] === `/` && !this.listings.has(resolvedP))
  7123. throw ENOTDIR(`open '${p}'`);
  7124. if (this.listings.has(resolvedP))
  7125. throw EISDIR(`read`);
  7126. const entry = this.entries.get(resolvedP);
  7127. if (entry === void 0)
  7128. throw new Error(`Unreachable`);
  7129. return this.getFileSource(entry, opts);
  7130. }
  7131. async readdirPromise(p, opts) {
  7132. return this.readdirSync(p, opts);
  7133. }
  7134. readdirSync(p, opts) {
  7135. const resolvedP = this.resolveFilename(`scandir '${p}'`, p);
  7136. if (!this.entries.has(resolvedP) && !this.listings.has(resolvedP))
  7137. throw ENOENT(`scandir '${p}'`);
  7138. const directoryListing = this.listings.get(resolvedP);
  7139. if (!directoryListing)
  7140. throw ENOTDIR(`scandir '${p}'`);
  7141. const entries = [...directoryListing];
  7142. if (!(opts == null ? void 0 : opts.withFileTypes))
  7143. return entries;
  7144. return entries.map((name) => {
  7145. return Object.assign(this.statImpl(`lstat`, ppath.join(p, name)), {
  7146. name
  7147. });
  7148. });
  7149. }
  7150. async readlinkPromise(p) {
  7151. const entry = this.prepareReadlink(p);
  7152. return (await this.getFileSource(entry, { asyncDecompress: true })).toString();
  7153. }
  7154. readlinkSync(p) {
  7155. const entry = this.prepareReadlink(p);
  7156. return this.getFileSource(entry).toString();
  7157. }
  7158. prepareReadlink(p) {
  7159. const resolvedP = this.resolveFilename(`readlink '${p}'`, p, false);
  7160. if (!this.entries.has(resolvedP) && !this.listings.has(resolvedP))
  7161. throw ENOENT(`readlink '${p}'`);
  7162. if (p[p.length - 1] === `/` && !this.listings.has(resolvedP))
  7163. throw ENOTDIR(`open '${p}'`);
  7164. if (this.listings.has(resolvedP))
  7165. throw EINVAL(`readlink '${p}'`);
  7166. const entry = this.entries.get(resolvedP);
  7167. if (entry === void 0)
  7168. throw new Error(`Unreachable`);
  7169. if (!this.isSymbolicLink(entry))
  7170. throw EINVAL(`readlink '${p}'`);
  7171. return entry;
  7172. }
  7173. async truncatePromise(p, len = 0) {
  7174. const resolvedP = this.resolveFilename(`open '${p}'`, p);
  7175. const index = this.entries.get(resolvedP);
  7176. if (typeof index === `undefined`)
  7177. throw EINVAL(`open '${p}'`);
  7178. const source = await this.getFileSource(index, { asyncDecompress: true });
  7179. const truncated = Buffer.alloc(len, 0);
  7180. source.copy(truncated);
  7181. return await this.writeFilePromise(p, truncated);
  7182. }
  7183. truncateSync(p, len = 0) {
  7184. const resolvedP = this.resolveFilename(`open '${p}'`, p);
  7185. const index = this.entries.get(resolvedP);
  7186. if (typeof index === `undefined`)
  7187. throw EINVAL(`open '${p}'`);
  7188. const source = this.getFileSource(index);
  7189. const truncated = Buffer.alloc(len, 0);
  7190. source.copy(truncated);
  7191. return this.writeFileSync(p, truncated);
  7192. }
  7193. async ftruncatePromise(fd, len) {
  7194. return this.truncatePromise(this.fdToPath(fd, `ftruncate`), len);
  7195. }
  7196. ftruncateSync(fd, len) {
  7197. return this.truncateSync(this.fdToPath(fd, `ftruncateSync`), len);
  7198. }
  7199. watch(p, a, b) {
  7200. let persistent;
  7201. switch (typeof a) {
  7202. case `function`:
  7203. case `string`:
  7204. case `undefined`:
  7205. {
  7206. persistent = true;
  7207. }
  7208. break;
  7209. default:
  7210. {
  7211. ({ persistent = true } = a);
  7212. }
  7213. break;
  7214. }
  7215. if (!persistent)
  7216. return { on: () => {
  7217. }, close: () => {
  7218. } };
  7219. const interval = setInterval(() => {
  7220. }, 24 * 60 * 60 * 1e3);
  7221. return { on: () => {
  7222. }, close: () => {
  7223. clearInterval(interval);
  7224. } };
  7225. }
  7226. watchFile(p, a, b) {
  7227. const resolvedP = ppath.resolve(PortablePath.root, p);
  7228. return watchFile(this, resolvedP, a, b);
  7229. }
  7230. unwatchFile(p, cb) {
  7231. const resolvedP = ppath.resolve(PortablePath.root, p);
  7232. return unwatchFile(this, resolvedP, cb);
  7233. }
  7234. }
  7235. class ProxiedFS extends FakeFS {
  7236. getExtractHint(hints) {
  7237. return this.baseFs.getExtractHint(hints);
  7238. }
  7239. resolve(path) {
  7240. return this.mapFromBase(this.baseFs.resolve(this.mapToBase(path)));
  7241. }
  7242. getRealPath() {
  7243. return this.mapFromBase(this.baseFs.getRealPath());
  7244. }
  7245. async openPromise(p, flags, mode) {
  7246. return this.baseFs.openPromise(this.mapToBase(p), flags, mode);
  7247. }
  7248. openSync(p, flags, mode) {
  7249. return this.baseFs.openSync(this.mapToBase(p), flags, mode);
  7250. }
  7251. async opendirPromise(p, opts) {
  7252. return Object.assign(await this.baseFs.opendirPromise(this.mapToBase(p), opts), { path: p });
  7253. }
  7254. opendirSync(p, opts) {
  7255. return Object.assign(this.baseFs.opendirSync(this.mapToBase(p), opts), { path: p });
  7256. }
  7257. async readPromise(fd, buffer, offset, length, position) {
  7258. return await this.baseFs.readPromise(fd, buffer, offset, length, position);
  7259. }
  7260. readSync(fd, buffer, offset, length, position) {
  7261. return this.baseFs.readSync(fd, buffer, offset, length, position);
  7262. }
  7263. async writePromise(fd, buffer, offset, length, position) {
  7264. if (typeof buffer === `string`) {
  7265. return await this.baseFs.writePromise(fd, buffer, offset);
  7266. } else {
  7267. return await this.baseFs.writePromise(fd, buffer, offset, length, position);
  7268. }
  7269. }
  7270. writeSync(fd, buffer, offset, length, position) {
  7271. if (typeof buffer === `string`) {
  7272. return this.baseFs.writeSync(fd, buffer, offset);
  7273. } else {
  7274. return this.baseFs.writeSync(fd, buffer, offset, length, position);
  7275. }
  7276. }
  7277. async closePromise(fd) {
  7278. return this.baseFs.closePromise(fd);
  7279. }
  7280. closeSync(fd) {
  7281. this.baseFs.closeSync(fd);
  7282. }
  7283. createReadStream(p, opts) {
  7284. return this.baseFs.createReadStream(p !== null ? this.mapToBase(p) : p, opts);
  7285. }
  7286. createWriteStream(p, opts) {
  7287. return this.baseFs.createWriteStream(p !== null ? this.mapToBase(p) : p, opts);
  7288. }
  7289. async realpathPromise(p) {
  7290. return this.mapFromBase(await this.baseFs.realpathPromise(this.mapToBase(p)));
  7291. }
  7292. realpathSync(p) {
  7293. return this.mapFromBase(this.baseFs.realpathSync(this.mapToBase(p)));
  7294. }
  7295. async existsPromise(p) {
  7296. return this.baseFs.existsPromise(this.mapToBase(p));
  7297. }
  7298. existsSync(p) {
  7299. return this.baseFs.existsSync(this.mapToBase(p));
  7300. }
  7301. accessSync(p, mode) {
  7302. return this.baseFs.accessSync(this.mapToBase(p), mode);
  7303. }
  7304. async accessPromise(p, mode) {
  7305. return this.baseFs.accessPromise(this.mapToBase(p), mode);
  7306. }
  7307. async statPromise(p, opts) {
  7308. return this.baseFs.statPromise(this.mapToBase(p), opts);
  7309. }
  7310. statSync(p, opts) {
  7311. return this.baseFs.statSync(this.mapToBase(p), opts);
  7312. }
  7313. async fstatPromise(fd, opts) {
  7314. return this.baseFs.fstatPromise(fd, opts);
  7315. }
  7316. fstatSync(fd, opts) {
  7317. return this.baseFs.fstatSync(fd, opts);
  7318. }
  7319. lstatPromise(p, opts) {
  7320. return this.baseFs.lstatPromise(this.mapToBase(p), opts);
  7321. }
  7322. lstatSync(p, opts) {
  7323. return this.baseFs.lstatSync(this.mapToBase(p), opts);
  7324. }
  7325. async fchmodPromise(fd, mask) {
  7326. return this.baseFs.fchmodPromise(fd, mask);
  7327. }
  7328. fchmodSync(fd, mask) {
  7329. return this.baseFs.fchmodSync(fd, mask);
  7330. }
  7331. async chmodPromise(p, mask) {
  7332. return this.baseFs.chmodPromise(this.mapToBase(p), mask);
  7333. }
  7334. chmodSync(p, mask) {
  7335. return this.baseFs.chmodSync(this.mapToBase(p), mask);
  7336. }
  7337. async fchownPromise(fd, uid, gid) {
  7338. return this.baseFs.fchownPromise(fd, uid, gid);
  7339. }
  7340. fchownSync(fd, uid, gid) {
  7341. return this.baseFs.fchownSync(fd, uid, gid);
  7342. }
  7343. async chownPromise(p, uid, gid) {
  7344. return this.baseFs.chownPromise(this.mapToBase(p), uid, gid);
  7345. }
  7346. chownSync(p, uid, gid) {
  7347. return this.baseFs.chownSync(this.mapToBase(p), uid, gid);
  7348. }
  7349. async renamePromise(oldP, newP) {
  7350. return this.baseFs.renamePromise(this.mapToBase(oldP), this.mapToBase(newP));
  7351. }
  7352. renameSync(oldP, newP) {
  7353. return this.baseFs.renameSync(this.mapToBase(oldP), this.mapToBase(newP));
  7354. }
  7355. async copyFilePromise(sourceP, destP, flags = 0) {
  7356. return this.baseFs.copyFilePromise(this.mapToBase(sourceP), this.mapToBase(destP), flags);
  7357. }
  7358. copyFileSync(sourceP, destP, flags = 0) {
  7359. return this.baseFs.copyFileSync(this.mapToBase(sourceP), this.mapToBase(destP), flags);
  7360. }
  7361. async appendFilePromise(p, content, opts) {
  7362. return this.baseFs.appendFilePromise(this.fsMapToBase(p), content, opts);
  7363. }
  7364. appendFileSync(p, content, opts) {
  7365. return this.baseFs.appendFileSync(this.fsMapToBase(p), content, opts);
  7366. }
  7367. async writeFilePromise(p, content, opts) {
  7368. return this.baseFs.writeFilePromise(this.fsMapToBase(p), content, opts);
  7369. }
  7370. writeFileSync(p, content, opts) {
  7371. return this.baseFs.writeFileSync(this.fsMapToBase(p), content, opts);
  7372. }
  7373. async unlinkPromise(p) {
  7374. return this.baseFs.unlinkPromise(this.mapToBase(p));
  7375. }
  7376. unlinkSync(p) {
  7377. return this.baseFs.unlinkSync(this.mapToBase(p));
  7378. }
  7379. async utimesPromise(p, atime, mtime) {
  7380. return this.baseFs.utimesPromise(this.mapToBase(p), atime, mtime);
  7381. }
  7382. utimesSync(p, atime, mtime) {
  7383. return this.baseFs.utimesSync(this.mapToBase(p), atime, mtime);
  7384. }
  7385. async mkdirPromise(p, opts) {
  7386. return this.baseFs.mkdirPromise(this.mapToBase(p), opts);
  7387. }
  7388. mkdirSync(p, opts) {
  7389. return this.baseFs.mkdirSync(this.mapToBase(p), opts);
  7390. }
  7391. async rmdirPromise(p, opts) {
  7392. return this.baseFs.rmdirPromise(this.mapToBase(p), opts);
  7393. }
  7394. rmdirSync(p, opts) {
  7395. return this.baseFs.rmdirSync(this.mapToBase(p), opts);
  7396. }
  7397. async linkPromise(existingP, newP) {
  7398. return this.baseFs.linkPromise(this.mapToBase(existingP), this.mapToBase(newP));
  7399. }
  7400. linkSync(existingP, newP) {
  7401. return this.baseFs.linkSync(this.mapToBase(existingP), this.mapToBase(newP));
  7402. }
  7403. async symlinkPromise(target, p, type) {
  7404. const mappedP = this.mapToBase(p);
  7405. if (this.pathUtils.isAbsolute(target))
  7406. return this.baseFs.symlinkPromise(this.mapToBase(target), mappedP, type);
  7407. const mappedAbsoluteTarget = this.mapToBase(this.pathUtils.join(this.pathUtils.dirname(p), target));
  7408. const mappedTarget = this.baseFs.pathUtils.relative(this.baseFs.pathUtils.dirname(mappedP), mappedAbsoluteTarget);
  7409. return this.baseFs.symlinkPromise(mappedTarget, mappedP, type);
  7410. }
  7411. symlinkSync(target, p, type) {
  7412. const mappedP = this.mapToBase(p);
  7413. if (this.pathUtils.isAbsolute(target))
  7414. return this.baseFs.symlinkSync(this.mapToBase(target), mappedP, type);
  7415. const mappedAbsoluteTarget = this.mapToBase(this.pathUtils.join(this.pathUtils.dirname(p), target));
  7416. const mappedTarget = this.baseFs.pathUtils.relative(this.baseFs.pathUtils.dirname(mappedP), mappedAbsoluteTarget);
  7417. return this.baseFs.symlinkSync(mappedTarget, mappedP, type);
  7418. }
  7419. async readFilePromise(p, encoding) {
  7420. if (encoding === `utf8`) {
  7421. return this.baseFs.readFilePromise(this.fsMapToBase(p), encoding);
  7422. } else {
  7423. return this.baseFs.readFilePromise(this.fsMapToBase(p), encoding);
  7424. }
  7425. }
  7426. readFileSync(p, encoding) {
  7427. if (encoding === `utf8`) {
  7428. return this.baseFs.readFileSync(this.fsMapToBase(p), encoding);
  7429. } else {
  7430. return this.baseFs.readFileSync(this.fsMapToBase(p), encoding);
  7431. }
  7432. }
  7433. async readdirPromise(p, opts) {
  7434. return this.baseFs.readdirPromise(this.mapToBase(p), opts);
  7435. }
  7436. readdirSync(p, opts) {
  7437. return this.baseFs.readdirSync(this.mapToBase(p), opts);
  7438. }
  7439. async readlinkPromise(p) {
  7440. return this.mapFromBase(await this.baseFs.readlinkPromise(this.mapToBase(p)));
  7441. }
  7442. readlinkSync(p) {
  7443. return this.mapFromBase(this.baseFs.readlinkSync(this.mapToBase(p)));
  7444. }
  7445. async truncatePromise(p, len) {
  7446. return this.baseFs.truncatePromise(this.mapToBase(p), len);
  7447. }
  7448. truncateSync(p, len) {
  7449. return this.baseFs.truncateSync(this.mapToBase(p), len);
  7450. }
  7451. async ftruncatePromise(fd, len) {
  7452. return this.baseFs.ftruncatePromise(fd, len);
  7453. }
  7454. ftruncateSync(fd, len) {
  7455. return this.baseFs.ftruncateSync(fd, len);
  7456. }
  7457. watch(p, a, b) {
  7458. return this.baseFs.watch(
  7459. this.mapToBase(p),
  7460. a,
  7461. b
  7462. );
  7463. }
  7464. watchFile(p, a, b) {
  7465. return this.baseFs.watchFile(
  7466. this.mapToBase(p),
  7467. a,
  7468. b
  7469. );
  7470. }
  7471. unwatchFile(p, cb) {
  7472. return this.baseFs.unwatchFile(this.mapToBase(p), cb);
  7473. }
  7474. fsMapToBase(p) {
  7475. if (typeof p === `number`) {
  7476. return p;
  7477. } else {
  7478. return this.mapToBase(p);
  7479. }
  7480. }
  7481. }
  7482. class PosixFS extends ProxiedFS {
  7483. constructor(baseFs) {
  7484. super(npath);
  7485. this.baseFs = baseFs;
  7486. }
  7487. mapFromBase(path) {
  7488. return npath.fromPortablePath(path);
  7489. }
  7490. mapToBase(path) {
  7491. return npath.toPortablePath(path);
  7492. }
  7493. }
  7494. const NUMBER_REGEXP = /^[0-9]+$/;
  7495. const VIRTUAL_REGEXP = /^(\/(?:[^/]+\/)*?(?:\$\$virtual|__virtual__))((?:\/((?:[^/]+-)?[a-f0-9]+)(?:\/([^/]+))?)?((?:\/.*)?))$/;
  7496. const VALID_COMPONENT = /^([^/]+-)?[a-f0-9]+$/;
  7497. class VirtualFS extends ProxiedFS {
  7498. constructor({ baseFs = new NodeFS() } = {}) {
  7499. super(ppath);
  7500. this.baseFs = baseFs;
  7501. }
  7502. static makeVirtualPath(base, component, to) {
  7503. if (ppath.basename(base) !== `__virtual__`)
  7504. throw new Error(`Assertion failed: Virtual folders must be named "__virtual__"`);
  7505. if (!ppath.basename(component).match(VALID_COMPONENT))
  7506. throw new Error(`Assertion failed: Virtual components must be ended by an hexadecimal hash`);
  7507. const target = ppath.relative(ppath.dirname(base), to);
  7508. const segments = target.split(`/`);
  7509. let depth = 0;
  7510. while (depth < segments.length && segments[depth] === `..`)
  7511. depth += 1;
  7512. const finalSegments = segments.slice(depth);
  7513. const fullVirtualPath = ppath.join(base, component, String(depth), ...finalSegments);
  7514. return fullVirtualPath;
  7515. }
  7516. static resolveVirtual(p) {
  7517. const match = p.match(VIRTUAL_REGEXP);
  7518. if (!match || !match[3] && match[5])
  7519. return p;
  7520. const target = ppath.dirname(match[1]);
  7521. if (!match[3] || !match[4])
  7522. return target;
  7523. const isnum = NUMBER_REGEXP.test(match[4]);
  7524. if (!isnum)
  7525. return p;
  7526. const depth = Number(match[4]);
  7527. const backstep = `../`.repeat(depth);
  7528. const subpath = match[5] || `.`;
  7529. return VirtualFS.resolveVirtual(ppath.join(target, backstep, subpath));
  7530. }
  7531. getExtractHint(hints) {
  7532. return this.baseFs.getExtractHint(hints);
  7533. }
  7534. getRealPath() {
  7535. return this.baseFs.getRealPath();
  7536. }
  7537. realpathSync(p) {
  7538. const match = p.match(VIRTUAL_REGEXP);
  7539. if (!match)
  7540. return this.baseFs.realpathSync(p);
  7541. if (!match[5])
  7542. return p;
  7543. const realpath = this.baseFs.realpathSync(this.mapToBase(p));
  7544. return VirtualFS.makeVirtualPath(match[1], match[3], realpath);
  7545. }
  7546. async realpathPromise(p) {
  7547. const match = p.match(VIRTUAL_REGEXP);
  7548. if (!match)
  7549. return await this.baseFs.realpathPromise(p);
  7550. if (!match[5])
  7551. return p;
  7552. const realpath = await this.baseFs.realpathPromise(this.mapToBase(p));
  7553. return VirtualFS.makeVirtualPath(match[1], match[3], realpath);
  7554. }
  7555. mapToBase(p) {
  7556. if (p === ``)
  7557. return p;
  7558. if (this.pathUtils.isAbsolute(p))
  7559. return VirtualFS.resolveVirtual(p);
  7560. const resolvedRoot = VirtualFS.resolveVirtual(this.baseFs.resolve(PortablePath.dot));
  7561. const resolvedP = VirtualFS.resolveVirtual(this.baseFs.resolve(p));
  7562. return ppath.relative(resolvedRoot, resolvedP) || PortablePath.dot;
  7563. }
  7564. mapFromBase(p) {
  7565. return p;
  7566. }
  7567. }
  7568. const ZIP_MASK = 4278190080;
  7569. const ZIP_MAGIC = 704643072;
  7570. const getArchivePart = (path, extension) => {
  7571. let idx = path.indexOf(extension);
  7572. if (idx <= 0)
  7573. return null;
  7574. let nextCharIdx = idx;
  7575. while (idx >= 0) {
  7576. nextCharIdx = idx + extension.length;
  7577. if (path[nextCharIdx] === ppath.sep)
  7578. break;
  7579. if (path[idx - 1] === ppath.sep)
  7580. return null;
  7581. idx = path.indexOf(extension, nextCharIdx);
  7582. }
  7583. if (path.length > nextCharIdx && path[nextCharIdx] !== ppath.sep)
  7584. return null;
  7585. return path.slice(0, nextCharIdx);
  7586. };
  7587. class ZipOpenFS extends BasePortableFakeFS {
  7588. constructor({ libzip, baseFs = new NodeFS(), filter = null, maxOpenFiles = Infinity, readOnlyArchives = false, useCache = true, maxAge = 5e3, fileExtensions = null }) {
  7589. super();
  7590. this.fdMap = /* @__PURE__ */ new Map();
  7591. this.nextFd = 3;
  7592. this.isZip = /* @__PURE__ */ new Set();
  7593. this.notZip = /* @__PURE__ */ new Set();
  7594. this.realPaths = /* @__PURE__ */ new Map();
  7595. this.limitOpenFilesTimeout = null;
  7596. this.libzipFactory = typeof libzip !== `function` ? () => libzip : libzip;
  7597. this.baseFs = baseFs;
  7598. this.zipInstances = useCache ? /* @__PURE__ */ new Map() : null;
  7599. this.filter = filter;
  7600. this.maxOpenFiles = maxOpenFiles;
  7601. this.readOnlyArchives = readOnlyArchives;
  7602. this.maxAge = maxAge;
  7603. this.fileExtensions = fileExtensions;
  7604. }
  7605. static async openPromise(fn, opts) {
  7606. const zipOpenFs = new ZipOpenFS(opts);
  7607. try {
  7608. return await fn(zipOpenFs);
  7609. } finally {
  7610. zipOpenFs.saveAndClose();
  7611. }
  7612. }
  7613. get libzip() {
  7614. if (typeof this.libzipInstance === `undefined`)
  7615. this.libzipInstance = this.libzipFactory();
  7616. return this.libzipInstance;
  7617. }
  7618. getExtractHint(hints) {
  7619. return this.baseFs.getExtractHint(hints);
  7620. }
  7621. getRealPath() {
  7622. return this.baseFs.getRealPath();
  7623. }
  7624. saveAndClose() {
  7625. unwatchAllFiles(this);
  7626. if (this.zipInstances) {
  7627. for (const [path, { zipFs }] of this.zipInstances.entries()) {
  7628. zipFs.saveAndClose();
  7629. this.zipInstances.delete(path);
  7630. }
  7631. }
  7632. }
  7633. discardAndClose() {
  7634. unwatchAllFiles(this);
  7635. if (this.zipInstances) {
  7636. for (const [path, { zipFs }] of this.zipInstances.entries()) {
  7637. zipFs.discardAndClose();
  7638. this.zipInstances.delete(path);
  7639. }
  7640. }
  7641. }
  7642. resolve(p) {
  7643. return this.baseFs.resolve(p);
  7644. }
  7645. remapFd(zipFs, fd) {
  7646. const remappedFd = this.nextFd++ | ZIP_MAGIC;
  7647. this.fdMap.set(remappedFd, [zipFs, fd]);
  7648. return remappedFd;
  7649. }
  7650. async openPromise(p, flags, mode) {
  7651. return await this.makeCallPromise(p, async () => {
  7652. return await this.baseFs.openPromise(p, flags, mode);
  7653. }, async (zipFs, { subPath }) => {
  7654. return this.remapFd(zipFs, await zipFs.openPromise(subPath, flags, mode));
  7655. });
  7656. }
  7657. openSync(p, flags, mode) {
  7658. return this.makeCallSync(p, () => {
  7659. return this.baseFs.openSync(p, flags, mode);
  7660. }, (zipFs, { subPath }) => {
  7661. return this.remapFd(zipFs, zipFs.openSync(subPath, flags, mode));
  7662. });
  7663. }
  7664. async opendirPromise(p, opts) {
  7665. return await this.makeCallPromise(p, async () => {
  7666. return await this.baseFs.opendirPromise(p, opts);
  7667. }, async (zipFs, { subPath }) => {
  7668. return await zipFs.opendirPromise(subPath, opts);
  7669. }, {
  7670. requireSubpath: false
  7671. });
  7672. }
  7673. opendirSync(p, opts) {
  7674. return this.makeCallSync(p, () => {
  7675. return this.baseFs.opendirSync(p, opts);
  7676. }, (zipFs, { subPath }) => {
  7677. return zipFs.opendirSync(subPath, opts);
  7678. }, {
  7679. requireSubpath: false
  7680. });
  7681. }
  7682. async readPromise(fd, buffer, offset, length, position) {
  7683. if ((fd & ZIP_MASK) !== ZIP_MAGIC)
  7684. return await this.baseFs.readPromise(fd, buffer, offset, length, position);
  7685. const entry = this.fdMap.get(fd);
  7686. if (typeof entry === `undefined`)
  7687. throw EBADF(`read`);
  7688. const [zipFs, realFd] = entry;
  7689. return await zipFs.readPromise(realFd, buffer, offset, length, position);
  7690. }
  7691. readSync(fd, buffer, offset, length, position) {
  7692. if ((fd & ZIP_MASK) !== ZIP_MAGIC)
  7693. return this.baseFs.readSync(fd, buffer, offset, length, position);
  7694. const entry = this.fdMap.get(fd);
  7695. if (typeof entry === `undefined`)
  7696. throw EBADF(`readSync`);
  7697. const [zipFs, realFd] = entry;
  7698. return zipFs.readSync(realFd, buffer, offset, length, position);
  7699. }
  7700. async writePromise(fd, buffer, offset, length, position) {
  7701. if ((fd & ZIP_MASK) !== ZIP_MAGIC) {
  7702. if (typeof buffer === `string`) {
  7703. return await this.baseFs.writePromise(fd, buffer, offset);
  7704. } else {
  7705. return await this.baseFs.writePromise(fd, buffer, offset, length, position);
  7706. }
  7707. }
  7708. const entry = this.fdMap.get(fd);
  7709. if (typeof entry === `undefined`)
  7710. throw EBADF(`write`);
  7711. const [zipFs, realFd] = entry;
  7712. if (typeof buffer === `string`) {
  7713. return await zipFs.writePromise(realFd, buffer, offset);
  7714. } else {
  7715. return await zipFs.writePromise(realFd, buffer, offset, length, position);
  7716. }
  7717. }
  7718. writeSync(fd, buffer, offset, length, position) {
  7719. if ((fd & ZIP_MASK) !== ZIP_MAGIC) {
  7720. if (typeof buffer === `string`) {
  7721. return this.baseFs.writeSync(fd, buffer, offset);
  7722. } else {
  7723. return this.baseFs.writeSync(fd, buffer, offset, length, position);
  7724. }
  7725. }
  7726. const entry = this.fdMap.get(fd);
  7727. if (typeof entry === `undefined`)
  7728. throw EBADF(`writeSync`);
  7729. const [zipFs, realFd] = entry;
  7730. if (typeof buffer === `string`) {
  7731. return zipFs.writeSync(realFd, buffer, offset);
  7732. } else {
  7733. return zipFs.writeSync(realFd, buffer, offset, length, position);
  7734. }
  7735. }
  7736. async closePromise(fd) {
  7737. if ((fd & ZIP_MASK) !== ZIP_MAGIC)
  7738. return await this.baseFs.closePromise(fd);
  7739. const entry = this.fdMap.get(fd);
  7740. if (typeof entry === `undefined`)
  7741. throw EBADF(`close`);
  7742. this.fdMap.delete(fd);
  7743. const [zipFs, realFd] = entry;
  7744. return await zipFs.closePromise(realFd);
  7745. }
  7746. closeSync(fd) {
  7747. if ((fd & ZIP_MASK) !== ZIP_MAGIC)
  7748. return this.baseFs.closeSync(fd);
  7749. const entry = this.fdMap.get(fd);
  7750. if (typeof entry === `undefined`)
  7751. throw EBADF(`closeSync`);
  7752. this.fdMap.delete(fd);
  7753. const [zipFs, realFd] = entry;
  7754. return zipFs.closeSync(realFd);
  7755. }
  7756. createReadStream(p, opts) {
  7757. if (p === null)
  7758. return this.baseFs.createReadStream(p, opts);
  7759. return this.makeCallSync(p, () => {
  7760. return this.baseFs.createReadStream(p, opts);
  7761. }, (zipFs, { archivePath, subPath }) => {
  7762. const stream = zipFs.createReadStream(subPath, opts);
  7763. stream.path = npath.fromPortablePath(this.pathUtils.join(archivePath, subPath));
  7764. return stream;
  7765. });
  7766. }
  7767. createWriteStream(p, opts) {
  7768. if (p === null)
  7769. return this.baseFs.createWriteStream(p, opts);
  7770. return this.makeCallSync(p, () => {
  7771. return this.baseFs.createWriteStream(p, opts);
  7772. }, (zipFs, { subPath }) => {
  7773. return zipFs.createWriteStream(subPath, opts);
  7774. });
  7775. }
  7776. async realpathPromise(p) {
  7777. return await this.makeCallPromise(p, async () => {
  7778. return await this.baseFs.realpathPromise(p);
  7779. }, async (zipFs, { archivePath, subPath }) => {
  7780. let realArchivePath = this.realPaths.get(archivePath);
  7781. if (typeof realArchivePath === `undefined`) {
  7782. realArchivePath = await this.baseFs.realpathPromise(archivePath);
  7783. this.realPaths.set(archivePath, realArchivePath);
  7784. }
  7785. return this.pathUtils.join(realArchivePath, this.pathUtils.relative(PortablePath.root, await zipFs.realpathPromise(subPath)));
  7786. });
  7787. }
  7788. realpathSync(p) {
  7789. return this.makeCallSync(p, () => {
  7790. return this.baseFs.realpathSync(p);
  7791. }, (zipFs, { archivePath, subPath }) => {
  7792. let realArchivePath = this.realPaths.get(archivePath);
  7793. if (typeof realArchivePath === `undefined`) {
  7794. realArchivePath = this.baseFs.realpathSync(archivePath);
  7795. this.realPaths.set(archivePath, realArchivePath);
  7796. }
  7797. return this.pathUtils.join(realArchivePath, this.pathUtils.relative(PortablePath.root, zipFs.realpathSync(subPath)));
  7798. });
  7799. }
  7800. async existsPromise(p) {
  7801. return await this.makeCallPromise(p, async () => {
  7802. return await this.baseFs.existsPromise(p);
  7803. }, async (zipFs, { subPath }) => {
  7804. return await zipFs.existsPromise(subPath);
  7805. });
  7806. }
  7807. existsSync(p) {
  7808. return this.makeCallSync(p, () => {
  7809. return this.baseFs.existsSync(p);
  7810. }, (zipFs, { subPath }) => {
  7811. return zipFs.existsSync(subPath);
  7812. });
  7813. }
  7814. async accessPromise(p, mode) {
  7815. return await this.makeCallPromise(p, async () => {
  7816. return await this.baseFs.accessPromise(p, mode);
  7817. }, async (zipFs, { subPath }) => {
  7818. return await zipFs.accessPromise(subPath, mode);
  7819. });
  7820. }
  7821. accessSync(p, mode) {
  7822. return this.makeCallSync(p, () => {
  7823. return this.baseFs.accessSync(p, mode);
  7824. }, (zipFs, { subPath }) => {
  7825. return zipFs.accessSync(subPath, mode);
  7826. });
  7827. }
  7828. async statPromise(p, opts) {
  7829. return await this.makeCallPromise(p, async () => {
  7830. return await this.baseFs.statPromise(p, opts);
  7831. }, async (zipFs, { subPath }) => {
  7832. return await zipFs.statPromise(subPath, opts);
  7833. });
  7834. }
  7835. statSync(p, opts) {
  7836. return this.makeCallSync(p, () => {
  7837. return this.baseFs.statSync(p, opts);
  7838. }, (zipFs, { subPath }) => {
  7839. return zipFs.statSync(subPath, opts);
  7840. });
  7841. }
  7842. async fstatPromise(fd, opts) {
  7843. if ((fd & ZIP_MASK) !== ZIP_MAGIC)
  7844. return this.baseFs.fstatPromise(fd, opts);
  7845. const entry = this.fdMap.get(fd);
  7846. if (typeof entry === `undefined`)
  7847. throw EBADF(`fstat`);
  7848. const [zipFs, realFd] = entry;
  7849. return zipFs.fstatPromise(realFd, opts);
  7850. }
  7851. fstatSync(fd, opts) {
  7852. if ((fd & ZIP_MASK) !== ZIP_MAGIC)
  7853. return this.baseFs.fstatSync(fd, opts);
  7854. const entry = this.fdMap.get(fd);
  7855. if (typeof entry === `undefined`)
  7856. throw EBADF(`fstatSync`);
  7857. const [zipFs, realFd] = entry;
  7858. return zipFs.fstatSync(realFd, opts);
  7859. }
  7860. async lstatPromise(p, opts) {
  7861. return await this.makeCallPromise(p, async () => {
  7862. return await this.baseFs.lstatPromise(p, opts);
  7863. }, async (zipFs, { subPath }) => {
  7864. return await zipFs.lstatPromise(subPath, opts);
  7865. });
  7866. }
  7867. lstatSync(p, opts) {
  7868. return this.makeCallSync(p, () => {
  7869. return this.baseFs.lstatSync(p, opts);
  7870. }, (zipFs, { subPath }) => {
  7871. return zipFs.lstatSync(subPath, opts);
  7872. });
  7873. }
  7874. async fchmodPromise(fd, mask) {
  7875. if ((fd & ZIP_MASK) !== ZIP_MAGIC)
  7876. return this.baseFs.fchmodPromise(fd, mask);
  7877. const entry = this.fdMap.get(fd);
  7878. if (typeof entry === `undefined`)
  7879. throw EBADF(`fchmod`);
  7880. const [zipFs, realFd] = entry;
  7881. return zipFs.fchmodPromise(realFd, mask);
  7882. }
  7883. fchmodSync(fd, mask) {
  7884. if ((fd & ZIP_MASK) !== ZIP_MAGIC)
  7885. return this.baseFs.fchmodSync(fd, mask);
  7886. const entry = this.fdMap.get(fd);
  7887. if (typeof entry === `undefined`)
  7888. throw EBADF(`fchmodSync`);
  7889. const [zipFs, realFd] = entry;
  7890. return zipFs.fchmodSync(realFd, mask);
  7891. }
  7892. async chmodPromise(p, mask) {
  7893. return await this.makeCallPromise(p, async () => {
  7894. return await this.baseFs.chmodPromise(p, mask);
  7895. }, async (zipFs, { subPath }) => {
  7896. return await zipFs.chmodPromise(subPath, mask);
  7897. });
  7898. }
  7899. chmodSync(p, mask) {
  7900. return this.makeCallSync(p, () => {
  7901. return this.baseFs.chmodSync(p, mask);
  7902. }, (zipFs, { subPath }) => {
  7903. return zipFs.chmodSync(subPath, mask);
  7904. });
  7905. }
  7906. async fchownPromise(fd, uid, gid) {
  7907. if ((fd & ZIP_MASK) !== ZIP_MAGIC)
  7908. return this.baseFs.fchownPromise(fd, uid, gid);
  7909. const entry = this.fdMap.get(fd);
  7910. if (typeof entry === `undefined`)
  7911. throw EBADF(`fchown`);
  7912. const [zipFs, realFd] = entry;
  7913. return zipFs.fchownPromise(realFd, uid, gid);
  7914. }
  7915. fchownSync(fd, uid, gid) {
  7916. if ((fd & ZIP_MASK) !== ZIP_MAGIC)
  7917. return this.baseFs.fchownSync(fd, uid, gid);
  7918. const entry = this.fdMap.get(fd);
  7919. if (typeof entry === `undefined`)
  7920. throw EBADF(`fchownSync`);
  7921. const [zipFs, realFd] = entry;
  7922. return zipFs.fchownSync(realFd, uid, gid);
  7923. }
  7924. async chownPromise(p, uid, gid) {
  7925. return await this.makeCallPromise(p, async () => {
  7926. return await this.baseFs.chownPromise(p, uid, gid);
  7927. }, async (zipFs, { subPath }) => {
  7928. return await zipFs.chownPromise(subPath, uid, gid);
  7929. });
  7930. }
  7931. chownSync(p, uid, gid) {
  7932. return this.makeCallSync(p, () => {
  7933. return this.baseFs.chownSync(p, uid, gid);
  7934. }, (zipFs, { subPath }) => {
  7935. return zipFs.chownSync(subPath, uid, gid);
  7936. });
  7937. }
  7938. async renamePromise(oldP, newP) {
  7939. return await this.makeCallPromise(oldP, async () => {
  7940. return await this.makeCallPromise(newP, async () => {
  7941. return await this.baseFs.renamePromise(oldP, newP);
  7942. }, async () => {
  7943. throw Object.assign(new Error(`EEXDEV: cross-device link not permitted`), { code: `EEXDEV` });
  7944. });
  7945. }, async (zipFsO, { subPath: subPathO }) => {
  7946. return await this.makeCallPromise(newP, async () => {
  7947. throw Object.assign(new Error(`EEXDEV: cross-device link not permitted`), { code: `EEXDEV` });
  7948. }, async (zipFsN, { subPath: subPathN }) => {
  7949. if (zipFsO !== zipFsN) {
  7950. throw Object.assign(new Error(`EEXDEV: cross-device link not permitted`), { code: `EEXDEV` });
  7951. } else {
  7952. return await zipFsO.renamePromise(subPathO, subPathN);
  7953. }
  7954. });
  7955. });
  7956. }
  7957. renameSync(oldP, newP) {
  7958. return this.makeCallSync(oldP, () => {
  7959. return this.makeCallSync(newP, () => {
  7960. return this.baseFs.renameSync(oldP, newP);
  7961. }, () => {
  7962. throw Object.assign(new Error(`EEXDEV: cross-device link not permitted`), { code: `EEXDEV` });
  7963. });
  7964. }, (zipFsO, { subPath: subPathO }) => {
  7965. return this.makeCallSync(newP, () => {
  7966. throw Object.assign(new Error(`EEXDEV: cross-device link not permitted`), { code: `EEXDEV` });
  7967. }, (zipFsN, { subPath: subPathN }) => {
  7968. if (zipFsO !== zipFsN) {
  7969. throw Object.assign(new Error(`EEXDEV: cross-device link not permitted`), { code: `EEXDEV` });
  7970. } else {
  7971. return zipFsO.renameSync(subPathO, subPathN);
  7972. }
  7973. });
  7974. });
  7975. }
  7976. async copyFilePromise(sourceP, destP, flags = 0) {
  7977. const fallback = async (sourceFs, sourceP2, destFs, destP2) => {
  7978. if ((flags & fs.constants.COPYFILE_FICLONE_FORCE) !== 0)
  7979. throw Object.assign(new Error(`EXDEV: cross-device clone not permitted, copyfile '${sourceP2}' -> ${destP2}'`), { code: `EXDEV` });
  7980. if (flags & fs.constants.COPYFILE_EXCL && await this.existsPromise(sourceP2))
  7981. throw Object.assign(new Error(`EEXIST: file already exists, copyfile '${sourceP2}' -> '${destP2}'`), { code: `EEXIST` });
  7982. let content;
  7983. try {
  7984. content = await sourceFs.readFilePromise(sourceP2);
  7985. } catch (error) {
  7986. throw Object.assign(new Error(`EINVAL: invalid argument, copyfile '${sourceP2}' -> '${destP2}'`), { code: `EINVAL` });
  7987. }
  7988. await destFs.writeFilePromise(destP2, content);
  7989. };
  7990. return await this.makeCallPromise(sourceP, async () => {
  7991. return await this.makeCallPromise(destP, async () => {
  7992. return await this.baseFs.copyFilePromise(sourceP, destP, flags);
  7993. }, async (zipFsD, { subPath: subPathD }) => {
  7994. return await fallback(this.baseFs, sourceP, zipFsD, subPathD);
  7995. });
  7996. }, async (zipFsS, { subPath: subPathS }) => {
  7997. return await this.makeCallPromise(destP, async () => {
  7998. return await fallback(zipFsS, subPathS, this.baseFs, destP);
  7999. }, async (zipFsD, { subPath: subPathD }) => {
  8000. if (zipFsS !== zipFsD) {
  8001. return await fallback(zipFsS, subPathS, zipFsD, subPathD);
  8002. } else {
  8003. return await zipFsS.copyFilePromise(subPathS, subPathD, flags);
  8004. }
  8005. });
  8006. });
  8007. }
  8008. copyFileSync(sourceP, destP, flags = 0) {
  8009. const fallback = (sourceFs, sourceP2, destFs, destP2) => {
  8010. if ((flags & fs.constants.COPYFILE_FICLONE_FORCE) !== 0)
  8011. throw Object.assign(new Error(`EXDEV: cross-device clone not permitted, copyfile '${sourceP2}' -> ${destP2}'`), { code: `EXDEV` });
  8012. if (flags & fs.constants.COPYFILE_EXCL && this.existsSync(sourceP2))
  8013. throw Object.assign(new Error(`EEXIST: file already exists, copyfile '${sourceP2}' -> '${destP2}'`), { code: `EEXIST` });
  8014. let content;
  8015. try {
  8016. content = sourceFs.readFileSync(sourceP2);
  8017. } catch (error) {
  8018. throw Object.assign(new Error(`EINVAL: invalid argument, copyfile '${sourceP2}' -> '${destP2}'`), { code: `EINVAL` });
  8019. }
  8020. destFs.writeFileSync(destP2, content);
  8021. };
  8022. return this.makeCallSync(sourceP, () => {
  8023. return this.makeCallSync(destP, () => {
  8024. return this.baseFs.copyFileSync(sourceP, destP, flags);
  8025. }, (zipFsD, { subPath: subPathD }) => {
  8026. return fallback(this.baseFs, sourceP, zipFsD, subPathD);
  8027. });
  8028. }, (zipFsS, { subPath: subPathS }) => {
  8029. return this.makeCallSync(destP, () => {
  8030. return fallback(zipFsS, subPathS, this.baseFs, destP);
  8031. }, (zipFsD, { subPath: subPathD }) => {
  8032. if (zipFsS !== zipFsD) {
  8033. return fallback(zipFsS, subPathS, zipFsD, subPathD);
  8034. } else {
  8035. return zipFsS.copyFileSync(subPathS, subPathD, flags);
  8036. }
  8037. });
  8038. });
  8039. }
  8040. async appendFilePromise(p, content, opts) {
  8041. return await this.makeCallPromise(p, async () => {
  8042. return await this.baseFs.appendFilePromise(p, content, opts);
  8043. }, async (zipFs, { subPath }) => {
  8044. return await zipFs.appendFilePromise(subPath, content, opts);
  8045. });
  8046. }
  8047. appendFileSync(p, content, opts) {
  8048. return this.makeCallSync(p, () => {
  8049. return this.baseFs.appendFileSync(p, content, opts);
  8050. }, (zipFs, { subPath }) => {
  8051. return zipFs.appendFileSync(subPath, content, opts);
  8052. });
  8053. }
  8054. async writeFilePromise(p, content, opts) {
  8055. return await this.makeCallPromise(p, async () => {
  8056. return await this.baseFs.writeFilePromise(p, content, opts);
  8057. }, async (zipFs, { subPath }) => {
  8058. return await zipFs.writeFilePromise(subPath, content, opts);
  8059. });
  8060. }
  8061. writeFileSync(p, content, opts) {
  8062. return this.makeCallSync(p, () => {
  8063. return this.baseFs.writeFileSync(p, content, opts);
  8064. }, (zipFs, { subPath }) => {
  8065. return zipFs.writeFileSync(subPath, content, opts);
  8066. });
  8067. }
  8068. async unlinkPromise(p) {
  8069. return await this.makeCallPromise(p, async () => {
  8070. return await this.baseFs.unlinkPromise(p);
  8071. }, async (zipFs, { subPath }) => {
  8072. return await zipFs.unlinkPromise(subPath);
  8073. });
  8074. }
  8075. unlinkSync(p) {
  8076. return this.makeCallSync(p, () => {
  8077. return this.baseFs.unlinkSync(p);
  8078. }, (zipFs, { subPath }) => {
  8079. return zipFs.unlinkSync(subPath);
  8080. });
  8081. }
  8082. async utimesPromise(p, atime, mtime) {
  8083. return await this.makeCallPromise(p, async () => {
  8084. return await this.baseFs.utimesPromise(p, atime, mtime);
  8085. }, async (zipFs, { subPath }) => {
  8086. return await zipFs.utimesPromise(subPath, atime, mtime);
  8087. });
  8088. }
  8089. utimesSync(p, atime, mtime) {
  8090. return this.makeCallSync(p, () => {
  8091. return this.baseFs.utimesSync(p, atime, mtime);
  8092. }, (zipFs, { subPath }) => {
  8093. return zipFs.utimesSync(subPath, atime, mtime);
  8094. });
  8095. }
  8096. async mkdirPromise(p, opts) {
  8097. return await this.makeCallPromise(p, async () => {
  8098. return await this.baseFs.mkdirPromise(p, opts);
  8099. }, async (zipFs, { subPath }) => {
  8100. return await zipFs.mkdirPromise(subPath, opts);
  8101. });
  8102. }
  8103. mkdirSync(p, opts) {
  8104. return this.makeCallSync(p, () => {
  8105. return this.baseFs.mkdirSync(p, opts);
  8106. }, (zipFs, { subPath }) => {
  8107. return zipFs.mkdirSync(subPath, opts);
  8108. });
  8109. }
  8110. async rmdirPromise(p, opts) {
  8111. return await this.makeCallPromise(p, async () => {
  8112. return await this.baseFs.rmdirPromise(p, opts);
  8113. }, async (zipFs, { subPath }) => {
  8114. return await zipFs.rmdirPromise(subPath, opts);
  8115. });
  8116. }
  8117. rmdirSync(p, opts) {
  8118. return this.makeCallSync(p, () => {
  8119. return this.baseFs.rmdirSync(p, opts);
  8120. }, (zipFs, { subPath }) => {
  8121. return zipFs.rmdirSync(subPath, opts);
  8122. });
  8123. }
  8124. async linkPromise(existingP, newP) {
  8125. return await this.makeCallPromise(newP, async () => {
  8126. return await this.baseFs.linkPromise(existingP, newP);
  8127. }, async (zipFs, { subPath }) => {
  8128. return await zipFs.linkPromise(existingP, subPath);
  8129. });
  8130. }
  8131. linkSync(existingP, newP) {
  8132. return this.makeCallSync(newP, () => {
  8133. return this.baseFs.linkSync(existingP, newP);
  8134. }, (zipFs, { subPath }) => {
  8135. return zipFs.linkSync(existingP, subPath);
  8136. });
  8137. }
  8138. async symlinkPromise(target, p, type) {
  8139. return await this.makeCallPromise(p, async () => {
  8140. return await this.baseFs.symlinkPromise(target, p, type);
  8141. }, async (zipFs, { subPath }) => {
  8142. return await zipFs.symlinkPromise(target, subPath);
  8143. });
  8144. }
  8145. symlinkSync(target, p, type) {
  8146. return this.makeCallSync(p, () => {
  8147. return this.baseFs.symlinkSync(target, p, type);
  8148. }, (zipFs, { subPath }) => {
  8149. return zipFs.symlinkSync(target, subPath);
  8150. });
  8151. }
  8152. async readFilePromise(p, encoding) {
  8153. return this.makeCallPromise(p, async () => {
  8154. switch (encoding) {
  8155. case `utf8`:
  8156. return await this.baseFs.readFilePromise(p, encoding);
  8157. default:
  8158. return await this.baseFs.readFilePromise(p, encoding);
  8159. }
  8160. }, async (zipFs, { subPath }) => {
  8161. return await zipFs.readFilePromise(subPath, encoding);
  8162. });
  8163. }
  8164. readFileSync(p, encoding) {
  8165. return this.makeCallSync(p, () => {
  8166. switch (encoding) {
  8167. case `utf8`:
  8168. return this.baseFs.readFileSync(p, encoding);
  8169. default:
  8170. return this.baseFs.readFileSync(p, encoding);
  8171. }
  8172. }, (zipFs, { subPath }) => {
  8173. return zipFs.readFileSync(subPath, encoding);
  8174. });
  8175. }
  8176. async readdirPromise(p, opts) {
  8177. return await this.makeCallPromise(p, async () => {
  8178. return await this.baseFs.readdirPromise(p, opts);
  8179. }, async (zipFs, { subPath }) => {
  8180. return await zipFs.readdirPromise(subPath, opts);
  8181. }, {
  8182. requireSubpath: false
  8183. });
  8184. }
  8185. readdirSync(p, opts) {
  8186. return this.makeCallSync(p, () => {
  8187. return this.baseFs.readdirSync(p, opts);
  8188. }, (zipFs, { subPath }) => {
  8189. return zipFs.readdirSync(subPath, opts);
  8190. }, {
  8191. requireSubpath: false
  8192. });
  8193. }
  8194. async readlinkPromise(p) {
  8195. return await this.makeCallPromise(p, async () => {
  8196. return await this.baseFs.readlinkPromise(p);
  8197. }, async (zipFs, { subPath }) => {
  8198. return await zipFs.readlinkPromise(subPath);
  8199. });
  8200. }
  8201. readlinkSync(p) {
  8202. return this.makeCallSync(p, () => {
  8203. return this.baseFs.readlinkSync(p);
  8204. }, (zipFs, { subPath }) => {
  8205. return zipFs.readlinkSync(subPath);
  8206. });
  8207. }
  8208. async truncatePromise(p, len) {
  8209. return await this.makeCallPromise(p, async () => {
  8210. return await this.baseFs.truncatePromise(p, len);
  8211. }, async (zipFs, { subPath }) => {
  8212. return await zipFs.truncatePromise(subPath, len);
  8213. });
  8214. }
  8215. truncateSync(p, len) {
  8216. return this.makeCallSync(p, () => {
  8217. return this.baseFs.truncateSync(p, len);
  8218. }, (zipFs, { subPath }) => {
  8219. return zipFs.truncateSync(subPath, len);
  8220. });
  8221. }
  8222. async ftruncatePromise(fd, len) {
  8223. if ((fd & ZIP_MASK) !== ZIP_MAGIC)
  8224. return this.baseFs.ftruncatePromise(fd, len);
  8225. const entry = this.fdMap.get(fd);
  8226. if (typeof entry === `undefined`)
  8227. throw EBADF(`ftruncate`);
  8228. const [zipFs, realFd] = entry;
  8229. return zipFs.ftruncatePromise(realFd, len);
  8230. }
  8231. ftruncateSync(fd, len) {
  8232. if ((fd & ZIP_MASK) !== ZIP_MAGIC)
  8233. return this.baseFs.ftruncateSync(fd, len);
  8234. const entry = this.fdMap.get(fd);
  8235. if (typeof entry === `undefined`)
  8236. throw EBADF(`ftruncateSync`);
  8237. const [zipFs, realFd] = entry;
  8238. return zipFs.ftruncateSync(realFd, len);
  8239. }
  8240. watch(p, a, b) {
  8241. return this.makeCallSync(p, () => {
  8242. return this.baseFs.watch(
  8243. p,
  8244. a,
  8245. b
  8246. );
  8247. }, (zipFs, { subPath }) => {
  8248. return zipFs.watch(
  8249. subPath,
  8250. a,
  8251. b
  8252. );
  8253. });
  8254. }
  8255. watchFile(p, a, b) {
  8256. return this.makeCallSync(p, () => {
  8257. return this.baseFs.watchFile(
  8258. p,
  8259. a,
  8260. b
  8261. );
  8262. }, () => {
  8263. return watchFile(this, p, a, b);
  8264. });
  8265. }
  8266. unwatchFile(p, cb) {
  8267. return this.makeCallSync(p, () => {
  8268. return this.baseFs.unwatchFile(p, cb);
  8269. }, () => {
  8270. return unwatchFile(this, p, cb);
  8271. });
  8272. }
  8273. async makeCallPromise(p, discard, accept, { requireSubpath = true } = {}) {
  8274. if (typeof p !== `string`)
  8275. return await discard();
  8276. const normalizedP = this.resolve(p);
  8277. const zipInfo = this.findZip(normalizedP);
  8278. if (!zipInfo)
  8279. return await discard();
  8280. if (requireSubpath && zipInfo.subPath === `/`)
  8281. return await discard();
  8282. return await this.getZipPromise(zipInfo.archivePath, async (zipFs) => await accept(zipFs, zipInfo));
  8283. }
  8284. makeCallSync(p, discard, accept, { requireSubpath = true } = {}) {
  8285. if (typeof p !== `string`)
  8286. return discard();
  8287. const normalizedP = this.resolve(p);
  8288. const zipInfo = this.findZip(normalizedP);
  8289. if (!zipInfo)
  8290. return discard();
  8291. if (requireSubpath && zipInfo.subPath === `/`)
  8292. return discard();
  8293. return this.getZipSync(zipInfo.archivePath, (zipFs) => accept(zipFs, zipInfo));
  8294. }
  8295. findZip(p) {
  8296. if (this.filter && !this.filter.test(p))
  8297. return null;
  8298. let filePath = ``;
  8299. while (true) {
  8300. const pathPartWithArchive = p.substring(filePath.length);
  8301. let archivePart;
  8302. if (!this.fileExtensions) {
  8303. archivePart = getArchivePart(pathPartWithArchive, `.zip`);
  8304. } else {
  8305. for (const ext of this.fileExtensions) {
  8306. archivePart = getArchivePart(pathPartWithArchive, ext);
  8307. if (archivePart) {
  8308. break;
  8309. }
  8310. }
  8311. }
  8312. if (!archivePart)
  8313. return null;
  8314. filePath = this.pathUtils.join(filePath, archivePart);
  8315. if (this.isZip.has(filePath) === false) {
  8316. if (this.notZip.has(filePath))
  8317. continue;
  8318. try {
  8319. if (!this.baseFs.lstatSync(filePath).isFile()) {
  8320. this.notZip.add(filePath);
  8321. continue;
  8322. }
  8323. } catch {
  8324. return null;
  8325. }
  8326. this.isZip.add(filePath);
  8327. }
  8328. return {
  8329. archivePath: filePath,
  8330. subPath: this.pathUtils.join(PortablePath.root, p.substring(filePath.length))
  8331. };
  8332. }
  8333. }
  8334. limitOpenFiles(max) {
  8335. if (this.zipInstances === null)
  8336. return;
  8337. const now = Date.now();
  8338. let nextExpiresAt = now + this.maxAge;
  8339. let closeCount = max === null ? 0 : this.zipInstances.size - max;
  8340. for (const [path, { zipFs, expiresAt, refCount }] of this.zipInstances.entries()) {
  8341. if (refCount !== 0 || zipFs.hasOpenFileHandles()) {
  8342. continue;
  8343. } else if (now >= expiresAt) {
  8344. zipFs.saveAndClose();
  8345. this.zipInstances.delete(path);
  8346. closeCount -= 1;
  8347. continue;
  8348. } else if (max === null || closeCount <= 0) {
  8349. nextExpiresAt = expiresAt;
  8350. break;
  8351. }
  8352. zipFs.saveAndClose();
  8353. this.zipInstances.delete(path);
  8354. closeCount -= 1;
  8355. }
  8356. if (this.limitOpenFilesTimeout === null && (max === null && this.zipInstances.size > 0 || max !== null)) {
  8357. this.limitOpenFilesTimeout = setTimeout(() => {
  8358. this.limitOpenFilesTimeout = null;
  8359. this.limitOpenFiles(null);
  8360. }, nextExpiresAt - now).unref();
  8361. }
  8362. }
  8363. async getZipPromise(p, accept) {
  8364. const getZipOptions = async () => ({
  8365. baseFs: this.baseFs,
  8366. libzip: this.libzip,
  8367. readOnly: this.readOnlyArchives,
  8368. stats: await this.baseFs.statPromise(p)
  8369. });
  8370. if (this.zipInstances) {
  8371. let cachedZipFs = this.zipInstances.get(p);
  8372. if (!cachedZipFs) {
  8373. const zipOptions = await getZipOptions();
  8374. cachedZipFs = this.zipInstances.get(p);
  8375. if (!cachedZipFs) {
  8376. cachedZipFs = {
  8377. zipFs: new ZipFS(p, zipOptions),
  8378. expiresAt: 0,
  8379. refCount: 0
  8380. };
  8381. }
  8382. }
  8383. this.zipInstances.delete(p);
  8384. this.limitOpenFiles(this.maxOpenFiles - 1);
  8385. this.zipInstances.set(p, cachedZipFs);
  8386. cachedZipFs.expiresAt = Date.now() + this.maxAge;
  8387. cachedZipFs.refCount += 1;
  8388. try {
  8389. return await accept(cachedZipFs.zipFs);
  8390. } finally {
  8391. cachedZipFs.refCount -= 1;
  8392. }
  8393. } else {
  8394. const zipFs = new ZipFS(p, await getZipOptions());
  8395. try {
  8396. return await accept(zipFs);
  8397. } finally {
  8398. zipFs.saveAndClose();
  8399. }
  8400. }
  8401. }
  8402. getZipSync(p, accept) {
  8403. const getZipOptions = () => ({
  8404. baseFs: this.baseFs,
  8405. libzip: this.libzip,
  8406. readOnly: this.readOnlyArchives,
  8407. stats: this.baseFs.statSync(p)
  8408. });
  8409. if (this.zipInstances) {
  8410. let cachedZipFs = this.zipInstances.get(p);
  8411. if (!cachedZipFs) {
  8412. cachedZipFs = {
  8413. zipFs: new ZipFS(p, getZipOptions()),
  8414. expiresAt: 0,
  8415. refCount: 0
  8416. };
  8417. }
  8418. this.zipInstances.delete(p);
  8419. this.limitOpenFiles(this.maxOpenFiles - 1);
  8420. this.zipInstances.set(p, cachedZipFs);
  8421. cachedZipFs.expiresAt = Date.now() + this.maxAge;
  8422. return accept(cachedZipFs.zipFs);
  8423. } else {
  8424. const zipFs = new ZipFS(p, getZipOptions());
  8425. try {
  8426. return accept(zipFs);
  8427. } finally {
  8428. zipFs.saveAndClose();
  8429. }
  8430. }
  8431. }
  8432. }
  8433. class NodePathFS extends ProxiedFS {
  8434. constructor(baseFs) {
  8435. super(npath);
  8436. this.baseFs = baseFs;
  8437. }
  8438. mapFromBase(path) {
  8439. return path;
  8440. }
  8441. mapToBase(path) {
  8442. if (typeof path === `string`)
  8443. return path;
  8444. if (path instanceof url.URL)
  8445. return url.fileURLToPath(path);
  8446. if (Buffer.isBuffer(path)) {
  8447. const str = path.toString();
  8448. if (Buffer.byteLength(str) !== path.byteLength)
  8449. throw new Error(`Non-utf8 buffers are not supported at the moment. Please upvote the following issue if you encounter this error: https://github.com/yarnpkg/berry/issues/4942`);
  8450. return str;
  8451. }
  8452. throw new Error(`Unsupported path type: ${nodeUtils.inspect(path)}`);
  8453. }
  8454. }
  8455. var _a, _b, _c, _d;
  8456. const kBaseFs = Symbol(`kBaseFs`);
  8457. const kFd = Symbol(`kFd`);
  8458. const kClosePromise = Symbol(`kClosePromise`);
  8459. const kCloseResolve = Symbol(`kCloseResolve`);
  8460. const kCloseReject = Symbol(`kCloseReject`);
  8461. const kRefs = Symbol(`kRefs`);
  8462. const kRef = Symbol(`kRef`);
  8463. const kUnref = Symbol(`kUnref`);
  8464. class FileHandle {
  8465. constructor(fd, baseFs) {
  8466. this[_a] = 1;
  8467. this[_b] = void 0;
  8468. this[_c] = void 0;
  8469. this[_d] = void 0;
  8470. this[kBaseFs] = baseFs;
  8471. this[kFd] = fd;
  8472. }
  8473. get fd() {
  8474. return this[kFd];
  8475. }
  8476. async appendFile(data, options) {
  8477. var _a2;
  8478. try {
  8479. this[kRef](this.appendFile);
  8480. const encoding = (_a2 = typeof options === `string` ? options : options == null ? void 0 : options.encoding) != null ? _a2 : void 0;
  8481. return await this[kBaseFs].appendFilePromise(this.fd, data, encoding ? { encoding } : void 0);
  8482. } finally {
  8483. this[kUnref]();
  8484. }
  8485. }
  8486. async chown(uid, gid) {
  8487. try {
  8488. this[kRef](this.chown);
  8489. return await this[kBaseFs].fchownPromise(this.fd, uid, gid);
  8490. } finally {
  8491. this[kUnref]();
  8492. }
  8493. }
  8494. async chmod(mode) {
  8495. try {
  8496. this[kRef](this.chmod);
  8497. return await this[kBaseFs].fchmodPromise(this.fd, mode);
  8498. } finally {
  8499. this[kUnref]();
  8500. }
  8501. }
  8502. createReadStream(options) {
  8503. return this[kBaseFs].createReadStream(null, { ...options, fd: this.fd });
  8504. }
  8505. createWriteStream(options) {
  8506. return this[kBaseFs].createWriteStream(null, { ...options, fd: this.fd });
  8507. }
  8508. datasync() {
  8509. throw new Error(`Method not implemented.`);
  8510. }
  8511. sync() {
  8512. throw new Error(`Method not implemented.`);
  8513. }
  8514. async read(bufferOrOptions, offset, length, position) {
  8515. var _a2, _b2, _c2;
  8516. try {
  8517. this[kRef](this.read);
  8518. let buffer;
  8519. if (!Buffer.isBuffer(bufferOrOptions)) {
  8520. bufferOrOptions != null ? bufferOrOptions : bufferOrOptions = {};
  8521. buffer = (_a2 = bufferOrOptions.buffer) != null ? _a2 : Buffer.alloc(16384);
  8522. offset = bufferOrOptions.offset || 0;
  8523. length = (_b2 = bufferOrOptions.length) != null ? _b2 : buffer.byteLength;
  8524. position = (_c2 = bufferOrOptions.position) != null ? _c2 : null;
  8525. } else {
  8526. buffer = bufferOrOptions;
  8527. }
  8528. offset != null ? offset : offset = 0;
  8529. length != null ? length : length = 0;
  8530. if (length === 0) {
  8531. return {
  8532. bytesRead: length,
  8533. buffer
  8534. };
  8535. }
  8536. const bytesRead = await this[kBaseFs].readPromise(this.fd, buffer, offset, length, position);
  8537. return {
  8538. bytesRead,
  8539. buffer
  8540. };
  8541. } finally {
  8542. this[kUnref]();
  8543. }
  8544. }
  8545. async readFile(options) {
  8546. var _a2;
  8547. try {
  8548. this[kRef](this.readFile);
  8549. const encoding = (_a2 = typeof options === `string` ? options : options == null ? void 0 : options.encoding) != null ? _a2 : void 0;
  8550. return await this[kBaseFs].readFilePromise(this.fd, encoding);
  8551. } finally {
  8552. this[kUnref]();
  8553. }
  8554. }
  8555. readLines(options) {
  8556. return readline.createInterface({
  8557. input: this.createReadStream(options),
  8558. crlfDelay: Infinity
  8559. });
  8560. }
  8561. async stat(opts) {
  8562. try {
  8563. this[kRef](this.stat);
  8564. return await this[kBaseFs].fstatPromise(this.fd, opts);
  8565. } finally {
  8566. this[kUnref]();
  8567. }
  8568. }
  8569. async truncate(len) {
  8570. try {
  8571. this[kRef](this.truncate);
  8572. return await this[kBaseFs].ftruncatePromise(this.fd, len);
  8573. } finally {
  8574. this[kUnref]();
  8575. }
  8576. }
  8577. utimes(atime, mtime) {
  8578. throw new Error(`Method not implemented.`);
  8579. }
  8580. async writeFile(data, options) {
  8581. var _a2;
  8582. try {
  8583. this[kRef](this.writeFile);
  8584. const encoding = (_a2 = typeof options === `string` ? options : options == null ? void 0 : options.encoding) != null ? _a2 : void 0;
  8585. await this[kBaseFs].writeFilePromise(this.fd, data, encoding);
  8586. } finally {
  8587. this[kUnref]();
  8588. }
  8589. }
  8590. async write(...args) {
  8591. try {
  8592. this[kRef](this.write);
  8593. if (ArrayBuffer.isView(args[0])) {
  8594. const [buffer, offset, length, position] = args;
  8595. const bytesWritten = await this[kBaseFs].writePromise(this.fd, buffer, offset != null ? offset : void 0, length != null ? length : void 0, position != null ? position : void 0);
  8596. return { bytesWritten, buffer };
  8597. } else {
  8598. const [data, position, encoding] = args;
  8599. const bytesWritten = await this[kBaseFs].writePromise(this.fd, data, position, encoding);
  8600. return { bytesWritten, buffer: data };
  8601. }
  8602. } finally {
  8603. this[kUnref]();
  8604. }
  8605. }
  8606. async writev(buffers, position) {
  8607. try {
  8608. this[kRef](this.writev);
  8609. let bytesWritten = 0;
  8610. if (typeof position !== `undefined`) {
  8611. for (const buffer of buffers) {
  8612. const writeResult = await this.write(buffer, void 0, void 0, position);
  8613. bytesWritten += writeResult.bytesWritten;
  8614. position += writeResult.bytesWritten;
  8615. }
  8616. } else {
  8617. for (const buffer of buffers) {
  8618. const writeResult = await this.write(buffer);
  8619. bytesWritten += writeResult.bytesWritten;
  8620. }
  8621. }
  8622. return {
  8623. buffers,
  8624. bytesWritten
  8625. };
  8626. } finally {
  8627. this[kUnref]();
  8628. }
  8629. }
  8630. readv(buffers, position) {
  8631. throw new Error(`Method not implemented.`);
  8632. }
  8633. close() {
  8634. if (this[kFd] === -1)
  8635. return Promise.resolve();
  8636. if (this[kClosePromise])
  8637. return this[kClosePromise];
  8638. this[kRefs]--;
  8639. if (this[kRefs] === 0) {
  8640. const fd = this[kFd];
  8641. this[kFd] = -1;
  8642. this[kClosePromise] = this[kBaseFs].closePromise(fd).finally(() => {
  8643. this[kClosePromise] = void 0;
  8644. });
  8645. } else {
  8646. this[kClosePromise] = new Promise((resolve, reject) => {
  8647. this[kCloseResolve] = resolve;
  8648. this[kCloseReject] = reject;
  8649. }).finally(() => {
  8650. this[kClosePromise] = void 0;
  8651. this[kCloseReject] = void 0;
  8652. this[kCloseResolve] = void 0;
  8653. });
  8654. }
  8655. return this[kClosePromise];
  8656. }
  8657. [(_a = kRefs, _b = kClosePromise, _c = kCloseResolve, _d = kCloseReject, kRef)](caller) {
  8658. if (this[kFd] === -1) {
  8659. const err = new Error(`file closed`);
  8660. err.code = `EBADF`;
  8661. err.syscall = caller.name;
  8662. throw err;
  8663. }
  8664. this[kRefs]++;
  8665. }
  8666. [kUnref]() {
  8667. this[kRefs]--;
  8668. if (this[kRefs] === 0) {
  8669. const fd = this[kFd];
  8670. this[kFd] = -1;
  8671. this[kBaseFs].closePromise(fd).then(this[kCloseResolve], this[kCloseReject]);
  8672. }
  8673. }
  8674. }
  8675. const SYNC_IMPLEMENTATIONS = /* @__PURE__ */ new Set([
  8676. `accessSync`,
  8677. `appendFileSync`,
  8678. `createReadStream`,
  8679. `createWriteStream`,
  8680. `chmodSync`,
  8681. `fchmodSync`,
  8682. `chownSync`,
  8683. `fchownSync`,
  8684. `closeSync`,
  8685. `copyFileSync`,
  8686. `linkSync`,
  8687. `lstatSync`,
  8688. `fstatSync`,
  8689. `lutimesSync`,
  8690. `mkdirSync`,
  8691. `openSync`,
  8692. `opendirSync`,
  8693. `readlinkSync`,
  8694. `readFileSync`,
  8695. `readdirSync`,
  8696. `readlinkSync`,
  8697. `realpathSync`,
  8698. `renameSync`,
  8699. `rmdirSync`,
  8700. `statSync`,
  8701. `symlinkSync`,
  8702. `truncateSync`,
  8703. `ftruncateSync`,
  8704. `unlinkSync`,
  8705. `unwatchFile`,
  8706. `utimesSync`,
  8707. `watch`,
  8708. `watchFile`,
  8709. `writeFileSync`,
  8710. `writeSync`
  8711. ]);
  8712. const ASYNC_IMPLEMENTATIONS = /* @__PURE__ */ new Set([
  8713. `accessPromise`,
  8714. `appendFilePromise`,
  8715. `fchmodPromise`,
  8716. `chmodPromise`,
  8717. `fchownPromise`,
  8718. `chownPromise`,
  8719. `closePromise`,
  8720. `copyFilePromise`,
  8721. `linkPromise`,
  8722. `fstatPromise`,
  8723. `lstatPromise`,
  8724. `lutimesPromise`,
  8725. `mkdirPromise`,
  8726. `openPromise`,
  8727. `opendirPromise`,
  8728. `readdirPromise`,
  8729. `realpathPromise`,
  8730. `readFilePromise`,
  8731. `readdirPromise`,
  8732. `readlinkPromise`,
  8733. `renamePromise`,
  8734. `rmdirPromise`,
  8735. `statPromise`,
  8736. `symlinkPromise`,
  8737. `truncatePromise`,
  8738. `ftruncatePromise`,
  8739. `unlinkPromise`,
  8740. `utimesPromise`,
  8741. `writeFilePromise`,
  8742. `writeSync`
  8743. ]);
  8744. function patchFs(patchedFs, fakeFs) {
  8745. fakeFs = new NodePathFS(fakeFs);
  8746. const setupFn = (target, name, replacement) => {
  8747. const orig = target[name];
  8748. target[name] = replacement;
  8749. if (typeof (orig == null ? void 0 : orig[nodeUtils.promisify.custom]) !== `undefined`) {
  8750. replacement[nodeUtils.promisify.custom] = orig[nodeUtils.promisify.custom];
  8751. }
  8752. };
  8753. {
  8754. setupFn(patchedFs, `exists`, (p, ...args) => {
  8755. const hasCallback = typeof args[args.length - 1] === `function`;
  8756. const callback = hasCallback ? args.pop() : () => {
  8757. };
  8758. process.nextTick(() => {
  8759. fakeFs.existsPromise(p).then((exists) => {
  8760. callback(exists);
  8761. }, () => {
  8762. callback(false);
  8763. });
  8764. });
  8765. });
  8766. setupFn(patchedFs, `read`, (...args) => {
  8767. let [fd, buffer, offset, length, position, callback] = args;
  8768. if (args.length <= 3) {
  8769. let options = {};
  8770. if (args.length < 3) {
  8771. callback = args[1];
  8772. } else {
  8773. options = args[1];
  8774. callback = args[2];
  8775. }
  8776. ({
  8777. buffer = Buffer.alloc(16384),
  8778. offset = 0,
  8779. length = buffer.byteLength,
  8780. position
  8781. } = options);
  8782. }
  8783. if (offset == null)
  8784. offset = 0;
  8785. length |= 0;
  8786. if (length === 0) {
  8787. process.nextTick(() => {
  8788. callback(null, 0, buffer);
  8789. });
  8790. return;
  8791. }
  8792. if (position == null)
  8793. position = -1;
  8794. process.nextTick(() => {
  8795. fakeFs.readPromise(fd, buffer, offset, length, position).then((bytesRead) => {
  8796. callback(null, bytesRead, buffer);
  8797. }, (error) => {
  8798. callback(error, 0, buffer);
  8799. });
  8800. });
  8801. });
  8802. for (const fnName of ASYNC_IMPLEMENTATIONS) {
  8803. const origName = fnName.replace(/Promise$/, ``);
  8804. if (typeof patchedFs[origName] === `undefined`)
  8805. continue;
  8806. const fakeImpl = fakeFs[fnName];
  8807. if (typeof fakeImpl === `undefined`)
  8808. continue;
  8809. const wrapper = (...args) => {
  8810. const hasCallback = typeof args[args.length - 1] === `function`;
  8811. const callback = hasCallback ? args.pop() : () => {
  8812. };
  8813. process.nextTick(() => {
  8814. fakeImpl.apply(fakeFs, args).then((result) => {
  8815. callback(null, result);
  8816. }, (error) => {
  8817. callback(error);
  8818. });
  8819. });
  8820. };
  8821. setupFn(patchedFs, origName, wrapper);
  8822. }
  8823. patchedFs.realpath.native = patchedFs.realpath;
  8824. }
  8825. {
  8826. setupFn(patchedFs, `existsSync`, (p) => {
  8827. try {
  8828. return fakeFs.existsSync(p);
  8829. } catch (error) {
  8830. return false;
  8831. }
  8832. });
  8833. setupFn(patchedFs, `readSync`, (...args) => {
  8834. let [fd, buffer, offset, length, position] = args;
  8835. if (args.length <= 3) {
  8836. const options = args[2] || {};
  8837. ({ offset = 0, length = buffer.byteLength, position } = options);
  8838. }
  8839. if (offset == null)
  8840. offset = 0;
  8841. length |= 0;
  8842. if (length === 0)
  8843. return 0;
  8844. if (position == null)
  8845. position = -1;
  8846. return fakeFs.readSync(fd, buffer, offset, length, position);
  8847. });
  8848. for (const fnName of SYNC_IMPLEMENTATIONS) {
  8849. const origName = fnName;
  8850. if (typeof patchedFs[origName] === `undefined`)
  8851. continue;
  8852. const fakeImpl = fakeFs[fnName];
  8853. if (typeof fakeImpl === `undefined`)
  8854. continue;
  8855. setupFn(patchedFs, origName, fakeImpl.bind(fakeFs));
  8856. }
  8857. patchedFs.realpathSync.native = patchedFs.realpathSync;
  8858. }
  8859. {
  8860. const origEmitWarning = process.emitWarning;
  8861. process.emitWarning = () => {
  8862. };
  8863. let patchedFsPromises;
  8864. try {
  8865. patchedFsPromises = patchedFs.promises;
  8866. } finally {
  8867. process.emitWarning = origEmitWarning;
  8868. }
  8869. if (typeof patchedFsPromises !== `undefined`) {
  8870. for (const fnName of ASYNC_IMPLEMENTATIONS) {
  8871. const origName = fnName.replace(/Promise$/, ``);
  8872. if (typeof patchedFsPromises[origName] === `undefined`)
  8873. continue;
  8874. const fakeImpl = fakeFs[fnName];
  8875. if (typeof fakeImpl === `undefined`)
  8876. continue;
  8877. if (fnName === `open`)
  8878. continue;
  8879. setupFn(patchedFsPromises, origName, (pathLike, ...args) => {
  8880. if (pathLike instanceof FileHandle) {
  8881. return pathLike[origName].apply(pathLike, args);
  8882. } else {
  8883. return fakeImpl.call(fakeFs, pathLike, ...args);
  8884. }
  8885. });
  8886. }
  8887. setupFn(patchedFsPromises, `open`, async (...args) => {
  8888. const fd = await fakeFs.openPromise(...args);
  8889. return new FileHandle(fd, fakeFs);
  8890. });
  8891. }
  8892. }
  8893. {
  8894. patchedFs.read[nodeUtils.promisify.custom] = async (fd, buffer, ...args) => {
  8895. const res = fakeFs.readPromise(fd, buffer, ...args);
  8896. return { bytesRead: await res, buffer };
  8897. };
  8898. patchedFs.write[nodeUtils.promisify.custom] = async (fd, buffer, ...args) => {
  8899. const res = fakeFs.writePromise(fd, buffer, ...args);
  8900. return { bytesWritten: await res, buffer };
  8901. };
  8902. }
  8903. }
  8904. var libzipSync = {exports: {}};
  8905. (function (module, exports) {
  8906. var frozenFs = Object.assign({}, fs__default.default);
  8907. var createModule = function() {
  8908. var _scriptDir = void 0;
  8909. if (typeof __filename !== "undefined")
  8910. _scriptDir = _scriptDir || __filename;
  8911. return function(createModule2) {
  8912. createModule2 = createModule2 || {};
  8913. var Module = typeof createModule2 !== "undefined" ? createModule2 : {};
  8914. var readyPromiseResolve, readyPromiseReject;
  8915. Module["ready"] = new Promise(function(resolve, reject) {
  8916. readyPromiseResolve = resolve;
  8917. readyPromiseReject = reject;
  8918. });
  8919. var moduleOverrides = {};
  8920. var key;
  8921. for (key in Module) {
  8922. if (Module.hasOwnProperty(key)) {
  8923. moduleOverrides[key] = Module[key];
  8924. }
  8925. }
  8926. var scriptDirectory = "";
  8927. function locateFile(path) {
  8928. if (Module["locateFile"]) {
  8929. return Module["locateFile"](path, scriptDirectory);
  8930. }
  8931. return scriptDirectory + path;
  8932. }
  8933. var read_, readBinary;
  8934. var nodeFS;
  8935. var nodePath;
  8936. {
  8937. {
  8938. scriptDirectory = __dirname + "/";
  8939. }
  8940. read_ = function shell_read(filename, binary) {
  8941. var ret = tryParseAsDataURI(filename);
  8942. if (ret) {
  8943. return binary ? ret : ret.toString();
  8944. }
  8945. if (!nodeFS)
  8946. nodeFS = frozenFs;
  8947. if (!nodePath)
  8948. nodePath = path__default.default;
  8949. filename = nodePath["normalize"](filename);
  8950. return nodeFS["readFileSync"](filename, binary ? null : "utf8");
  8951. };
  8952. readBinary = function readBinary2(filename) {
  8953. var ret = read_(filename, true);
  8954. if (!ret.buffer) {
  8955. ret = new Uint8Array(ret);
  8956. }
  8957. assert(ret.buffer);
  8958. return ret;
  8959. };
  8960. if (process["argv"].length > 1) {
  8961. process["argv"][1].replace(/\\/g, "/");
  8962. }
  8963. process["argv"].slice(2);
  8964. Module["inspect"] = function() {
  8965. return "[Emscripten Module object]";
  8966. };
  8967. }
  8968. var out = Module["print"] || console.log.bind(console);
  8969. var err = Module["printErr"] || console.warn.bind(console);
  8970. for (key in moduleOverrides) {
  8971. if (moduleOverrides.hasOwnProperty(key)) {
  8972. Module[key] = moduleOverrides[key];
  8973. }
  8974. }
  8975. moduleOverrides = null;
  8976. if (Module["arguments"])
  8977. ;
  8978. if (Module["thisProgram"])
  8979. ;
  8980. if (Module["quit"])
  8981. ;
  8982. var STACK_ALIGN = 16;
  8983. function alignMemory(size, factor) {
  8984. if (!factor)
  8985. factor = STACK_ALIGN;
  8986. return Math.ceil(size / factor) * factor;
  8987. }
  8988. var wasmBinary;
  8989. if (Module["wasmBinary"])
  8990. wasmBinary = Module["wasmBinary"];
  8991. Module["noExitRuntime"] || true;
  8992. if (typeof WebAssembly !== "object") {
  8993. abort("no native wasm support detected");
  8994. }
  8995. function getValue(ptr, type, noSafe) {
  8996. type = type || "i8";
  8997. if (type.charAt(type.length - 1) === "*")
  8998. type = "i32";
  8999. switch (type) {
  9000. case "i1":
  9001. return HEAP8[ptr >> 0];
  9002. case "i8":
  9003. return HEAP8[ptr >> 0];
  9004. case "i16":
  9005. return HEAP16[ptr >> 1];
  9006. case "i32":
  9007. return HEAP32[ptr >> 2];
  9008. case "i64":
  9009. return HEAP32[ptr >> 2];
  9010. case "float":
  9011. return HEAPF32[ptr >> 2];
  9012. case "double":
  9013. return HEAPF64[ptr >> 3];
  9014. default:
  9015. abort("invalid type for getValue: " + type);
  9016. }
  9017. return null;
  9018. }
  9019. var wasmMemory;
  9020. var ABORT = false;
  9021. function assert(condition, text) {
  9022. if (!condition) {
  9023. abort("Assertion failed: " + text);
  9024. }
  9025. }
  9026. function getCFunc(ident) {
  9027. var func = Module["_" + ident];
  9028. assert(
  9029. func,
  9030. "Cannot call unknown function " + ident + ", make sure it is exported"
  9031. );
  9032. return func;
  9033. }
  9034. function ccall(ident, returnType, argTypes, args, opts) {
  9035. var toC = {
  9036. string: function(str) {
  9037. var ret2 = 0;
  9038. if (str !== null && str !== void 0 && str !== 0) {
  9039. var len = (str.length << 2) + 1;
  9040. ret2 = stackAlloc(len);
  9041. stringToUTF8(str, ret2, len);
  9042. }
  9043. return ret2;
  9044. },
  9045. array: function(arr) {
  9046. var ret2 = stackAlloc(arr.length);
  9047. writeArrayToMemory(arr, ret2);
  9048. return ret2;
  9049. }
  9050. };
  9051. function convertReturnValue(ret2) {
  9052. if (returnType === "string")
  9053. return UTF8ToString(ret2);
  9054. if (returnType === "boolean")
  9055. return Boolean(ret2);
  9056. return ret2;
  9057. }
  9058. var func = getCFunc(ident);
  9059. var cArgs = [];
  9060. var stack = 0;
  9061. if (args) {
  9062. for (var i = 0; i < args.length; i++) {
  9063. var converter = toC[argTypes[i]];
  9064. if (converter) {
  9065. if (stack === 0)
  9066. stack = stackSave();
  9067. cArgs[i] = converter(args[i]);
  9068. } else {
  9069. cArgs[i] = args[i];
  9070. }
  9071. }
  9072. }
  9073. var ret = func.apply(null, cArgs);
  9074. ret = convertReturnValue(ret);
  9075. if (stack !== 0)
  9076. stackRestore(stack);
  9077. return ret;
  9078. }
  9079. function cwrap(ident, returnType, argTypes, opts) {
  9080. argTypes = argTypes || [];
  9081. var numericArgs = argTypes.every(function(type) {
  9082. return type === "number";
  9083. });
  9084. var numericRet = returnType !== "string";
  9085. if (numericRet && numericArgs && !opts) {
  9086. return getCFunc(ident);
  9087. }
  9088. return function() {
  9089. return ccall(ident, returnType, argTypes, arguments);
  9090. };
  9091. }
  9092. var UTF8Decoder = typeof TextDecoder !== "undefined" ? new TextDecoder("utf8") : void 0;
  9093. function UTF8ArrayToString(heap, idx, maxBytesToRead) {
  9094. var endIdx = idx + maxBytesToRead;
  9095. var endPtr = idx;
  9096. while (heap[endPtr] && !(endPtr >= endIdx))
  9097. ++endPtr;
  9098. if (endPtr - idx > 16 && heap.subarray && UTF8Decoder) {
  9099. return UTF8Decoder.decode(heap.subarray(idx, endPtr));
  9100. } else {
  9101. var str = "";
  9102. while (idx < endPtr) {
  9103. var u0 = heap[idx++];
  9104. if (!(u0 & 128)) {
  9105. str += String.fromCharCode(u0);
  9106. continue;
  9107. }
  9108. var u1 = heap[idx++] & 63;
  9109. if ((u0 & 224) == 192) {
  9110. str += String.fromCharCode((u0 & 31) << 6 | u1);
  9111. continue;
  9112. }
  9113. var u2 = heap[idx++] & 63;
  9114. if ((u0 & 240) == 224) {
  9115. u0 = (u0 & 15) << 12 | u1 << 6 | u2;
  9116. } else {
  9117. u0 = (u0 & 7) << 18 | u1 << 12 | u2 << 6 | heap[idx++] & 63;
  9118. }
  9119. if (u0 < 65536) {
  9120. str += String.fromCharCode(u0);
  9121. } else {
  9122. var ch = u0 - 65536;
  9123. str += String.fromCharCode(55296 | ch >> 10, 56320 | ch & 1023);
  9124. }
  9125. }
  9126. }
  9127. return str;
  9128. }
  9129. function UTF8ToString(ptr, maxBytesToRead) {
  9130. return ptr ? UTF8ArrayToString(HEAPU8, ptr, maxBytesToRead) : "";
  9131. }
  9132. function stringToUTF8Array(str, heap, outIdx, maxBytesToWrite) {
  9133. if (!(maxBytesToWrite > 0))
  9134. return 0;
  9135. var startIdx = outIdx;
  9136. var endIdx = outIdx + maxBytesToWrite - 1;
  9137. for (var i = 0; i < str.length; ++i) {
  9138. var u = str.charCodeAt(i);
  9139. if (u >= 55296 && u <= 57343) {
  9140. var u1 = str.charCodeAt(++i);
  9141. u = 65536 + ((u & 1023) << 10) | u1 & 1023;
  9142. }
  9143. if (u <= 127) {
  9144. if (outIdx >= endIdx)
  9145. break;
  9146. heap[outIdx++] = u;
  9147. } else if (u <= 2047) {
  9148. if (outIdx + 1 >= endIdx)
  9149. break;
  9150. heap[outIdx++] = 192 | u >> 6;
  9151. heap[outIdx++] = 128 | u & 63;
  9152. } else if (u <= 65535) {
  9153. if (outIdx + 2 >= endIdx)
  9154. break;
  9155. heap[outIdx++] = 224 | u >> 12;
  9156. heap[outIdx++] = 128 | u >> 6 & 63;
  9157. heap[outIdx++] = 128 | u & 63;
  9158. } else {
  9159. if (outIdx + 3 >= endIdx)
  9160. break;
  9161. heap[outIdx++] = 240 | u >> 18;
  9162. heap[outIdx++] = 128 | u >> 12 & 63;
  9163. heap[outIdx++] = 128 | u >> 6 & 63;
  9164. heap[outIdx++] = 128 | u & 63;
  9165. }
  9166. }
  9167. heap[outIdx] = 0;
  9168. return outIdx - startIdx;
  9169. }
  9170. function stringToUTF8(str, outPtr, maxBytesToWrite) {
  9171. return stringToUTF8Array(str, HEAPU8, outPtr, maxBytesToWrite);
  9172. }
  9173. function lengthBytesUTF8(str) {
  9174. var len = 0;
  9175. for (var i = 0; i < str.length; ++i) {
  9176. var u = str.charCodeAt(i);
  9177. if (u >= 55296 && u <= 57343)
  9178. u = 65536 + ((u & 1023) << 10) | str.charCodeAt(++i) & 1023;
  9179. if (u <= 127)
  9180. ++len;
  9181. else if (u <= 2047)
  9182. len += 2;
  9183. else if (u <= 65535)
  9184. len += 3;
  9185. else
  9186. len += 4;
  9187. }
  9188. return len;
  9189. }
  9190. function allocateUTF8(str) {
  9191. var size = lengthBytesUTF8(str) + 1;
  9192. var ret = _malloc(size);
  9193. if (ret)
  9194. stringToUTF8Array(str, HEAP8, ret, size);
  9195. return ret;
  9196. }
  9197. function writeArrayToMemory(array, buffer2) {
  9198. HEAP8.set(array, buffer2);
  9199. }
  9200. function alignUp(x, multiple) {
  9201. if (x % multiple > 0) {
  9202. x += multiple - x % multiple;
  9203. }
  9204. return x;
  9205. }
  9206. var buffer, HEAP8, HEAPU8, HEAP16, HEAP32, HEAPF32, HEAPF64;
  9207. function updateGlobalBufferAndViews(buf) {
  9208. buffer = buf;
  9209. Module["HEAP8"] = HEAP8 = new Int8Array(buf);
  9210. Module["HEAP16"] = HEAP16 = new Int16Array(buf);
  9211. Module["HEAP32"] = HEAP32 = new Int32Array(buf);
  9212. Module["HEAPU8"] = HEAPU8 = new Uint8Array(buf);
  9213. Module["HEAPU16"] = new Uint16Array(buf);
  9214. Module["HEAPU32"] = new Uint32Array(buf);
  9215. Module["HEAPF32"] = HEAPF32 = new Float32Array(buf);
  9216. Module["HEAPF64"] = HEAPF64 = new Float64Array(buf);
  9217. }
  9218. Module["INITIAL_MEMORY"] || 16777216;
  9219. var wasmTable;
  9220. var __ATPRERUN__ = [];
  9221. var __ATINIT__ = [];
  9222. var __ATPOSTRUN__ = [];
  9223. function preRun() {
  9224. if (Module["preRun"]) {
  9225. if (typeof Module["preRun"] == "function")
  9226. Module["preRun"] = [Module["preRun"]];
  9227. while (Module["preRun"].length) {
  9228. addOnPreRun(Module["preRun"].shift());
  9229. }
  9230. }
  9231. callRuntimeCallbacks(__ATPRERUN__);
  9232. }
  9233. function initRuntime() {
  9234. if (!Module["noFSInit"] && !FS.init.initialized)
  9235. FS.init();
  9236. callRuntimeCallbacks(__ATINIT__);
  9237. }
  9238. function postRun() {
  9239. if (Module["postRun"]) {
  9240. if (typeof Module["postRun"] == "function")
  9241. Module["postRun"] = [Module["postRun"]];
  9242. while (Module["postRun"].length) {
  9243. addOnPostRun(Module["postRun"].shift());
  9244. }
  9245. }
  9246. callRuntimeCallbacks(__ATPOSTRUN__);
  9247. }
  9248. function addOnPreRun(cb) {
  9249. __ATPRERUN__.unshift(cb);
  9250. }
  9251. function addOnInit(cb) {
  9252. __ATINIT__.unshift(cb);
  9253. }
  9254. function addOnPostRun(cb) {
  9255. __ATPOSTRUN__.unshift(cb);
  9256. }
  9257. var runDependencies = 0;
  9258. var dependenciesFulfilled = null;
  9259. function addRunDependency(id) {
  9260. runDependencies++;
  9261. if (Module["monitorRunDependencies"]) {
  9262. Module["monitorRunDependencies"](runDependencies);
  9263. }
  9264. }
  9265. function removeRunDependency(id) {
  9266. runDependencies--;
  9267. if (Module["monitorRunDependencies"]) {
  9268. Module["monitorRunDependencies"](runDependencies);
  9269. }
  9270. if (runDependencies == 0) {
  9271. if (dependenciesFulfilled) {
  9272. var callback = dependenciesFulfilled;
  9273. dependenciesFulfilled = null;
  9274. callback();
  9275. }
  9276. }
  9277. }
  9278. Module["preloadedImages"] = {};
  9279. Module["preloadedAudios"] = {};
  9280. function abort(what) {
  9281. if (Module["onAbort"]) {
  9282. Module["onAbort"](what);
  9283. }
  9284. what += "";
  9285. err(what);
  9286. ABORT = true;
  9287. what = "abort(" + what + "). Build with -s ASSERTIONS=1 for more info.";
  9288. var e = new WebAssembly.RuntimeError(what);
  9289. readyPromiseReject(e);
  9290. throw e;
  9291. }
  9292. var dataURIPrefix = "data:application/octet-stream;base64,";
  9293. function isDataURI(filename) {
  9294. return filename.startsWith(dataURIPrefix);
  9295. }
  9296. var wasmBinaryFile = "data:application/octet-stream;base64,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ACgCFC0AAiAAKAIYajYCGCAAIAAoAhggACgCDGo2AgwgACAAKAIULQADIAAoAhhqNgIYIAAgACgCGCAAKAIMajYCDCAAIAAoAhQtAAQgACgCGGo2AhggACAAKAIYIAAoAgxqNgIMIAAgACgCFC0ABSAAKAIYajYCGCAAIAAoAhggACgCDGo2AgwgACAAKAIULQAGIAAoAhhqNgIYIAAgACgCGCAAKAIMajYCDCAAIAAoAhQtAAcgACgCGGo2AhggACAAKAIYIAAoAgxqNgIMIAAgACgCFC0ACCAAKAIYajYCGCAAIAAoAhggACgCDGo2AgwgACAAKAIULQAJIAAoAhhqNgIYIAAgACgCGCAAKAIMajYCDCAAIAAoAhQtAAogACgCGGo2AhggACAAKAIYIAAoAgxqNgIMIAAgACgCFC0ACyAAKAIYajYCGCAAIAAoAhggACgCDGo2AgwgACAAKAIULQAMIAAoAhhqNgIYIAAgACgCGCAAKAIMajYCDCAAIAAoAhQtAA0gACgCGGo2AhggACAAKAIYIAAoAgxqNgIMIAAgACgCFC0ADiAAKAIYajYCGCAAIAAoAhggACgCDGo2AgwgACAAKAIULQAPIAAoAhhqNgIYIAAgACgCGCAAKAIMajYCDCAAIAAoAhRBEGo2AhQgACAAKAIIQQFrIgE2AgggAQ0ACyAAIAAoAhhB8f8DcDYCGCAAIAAoAgxB8f8DcDYCDAwBCwsgACgCEARAA0AgACgCEEEQTwRAIAAgACgCEEEQazYCECAAIAAoAhQtAAAgACgCGGo2AhggACAAKAIYIAAoAgxqNgIMIAAgACgCFC0AASAAKAIYajYCGCAAIAAoAhggACgCDGo2AgwgACAAKAIULQACIAAoAhhqNgIYIAAgACgCGCAAKAIMajYCDCAAIAAoAhQtAAMgACgCGGo2AhggACAAKAIYIAAoAgxqNgIMIAAgACgCFC0ABCAAKAIYajYCGCAAIAAoAhggACgCDGo2AgwgACAAKAIULQAFIAAoAhhqNgIYIAAgACgCGCAAKAIMajYCDCAAIAAoAhQtAAYgACgCGGo2AhggACAAKAIYIAAoAgxqNgIMIAAgACgCFC0AByAAKAIYajYCGCAAIAAoAhggACgCDGo2AgwgACAAKAIULQAIIAAoAhhqNgIYIAAgACgCGCAAKAIMajYC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NgIYIAEoAgxCADcDICABKAIMQgA3AyggASgCDEEANgIwIAEoAgxBADYCNCABKAIMQQA2AjggASgCDEEANgI8IAEoAgxBADsBQCABKAIMQYCA2I14NgJEIAEoAgxCADcDSCABKAIMQQA7AVAgASgCDEEAOwFSIAEoAgxBADYCVAvSEwEBfyMAQbABayIDJAAgAyAANgKoASADIAE2AqQBIAMgAjYCoAEgA0EANgKQASADIAMoAqQBKAIwQQAQOjYClAEgAyADKAKkASgCOEEAEDo2ApgBAkACQAJAAkAgAygClAFBAkYEQCADKAKYAUEBRg0BCyADKAKUAUEBRgRAIAMoApgBQQJGDQELIAMoApQBQQJHDQEgAygCmAFBAkcNAQsgAygCpAEiACAALwEMQYAQcjsBDAwBCyADKAKkASIAIAAvAQxB/+8DcTsBDCADKAKUAUECRgRAIANB9eABIAMoAqQBKAIwIAMoAqgBQQhqEI4BNgKQASADKAKQAUUEQCADQX82AqwBDAMLCwJAIAMoAqABQYACcQ0AIAMoApgBQQJHDQAgA0H1xgEgAygCpAEoAjggAygCqAFBCGoQjgE2AkggAygCSEUEQCADKAKQARAjIANBfzYCrAEMAwsgAygCSCADKAKQATYCACADIAMoAkg2ApABCwsCQCADKAKkAS8BUkUEQCADKAKkASIAIAAvAQxB/v8DcTsBDAwBCyADKAKkASIAIAAvAQxBAXI7AQwLIAMgAygCpAEgAygCoAEQZUEBcToAhgEgAyADKAKgAUGACnFBgApHBH8gAy0AhgEFQQELQQFxOgCHASADAn9BASADKAKkAS8BUkGBAkYNABpBASADKAKkAS8BUkGCAkYNABogAygCpAEvAVJBgwJGC0EBcToAhQEgAy0AhwFBAXEEQCADIANBIGpCHBApNgIcIAMoAhxFBEAgAygCqAFBCGpBDkEAEBQgAygCkAEQIyADQX82AqwBDAILAkAgAygCoAFBgAJxBEACQCADKAKgAUGACHENACADKAKkASkDIEL/////D1YNACADKAKkASkDKEL/////D1gNAgsgAygCHCADKAKkASkDKBAtIAMoAhwgAygCpAEpAyAQLQwBCwJAAkAgAygCoAFBgAhxDQAgAygCpAEpAyBC/////w9WDQAgAygCpAEpAyhC/////w9WDQAgAygCpAEpA0hC/////w9YDQELIAMoAqQBKQMoQv////8PWgRAIAMoAhwgAygCpAEpAygQLQsgAygCpAEpAyBC/////w9aBEAgAygCHCADKAKkASkDIBAtCyADKAKkASkDSEL/////D1oEQCADKAIcIAMoAqQBKQNIEC0LCwsCfyMAQRBrIgAgAygCHDYCDCAAKAIMLQAAQQFxRQsEQCADKAKoAUEIakEUQQAQFCADKAIcEBYgAygCkAEQIyADQX82AqwBDAILIANBAQJ/IwBBEGsiACADKAIcNgIMAn4gACgCDC0AAEEBcQRAIAAoAgwpAxAMAQtCAAunQf//A3ELIANBIGpBgAYQVTYCjAEgAygCHBAWIAMoAowBIAMoApABNgIAIAMgAygCjAE2ApABCyADLQCFAUEBcQRAIAMgA0EVakIHECk2AhAgAygCEEUEQCADKAKoAUEIakEOQQAQFCADKAKQARAjIANBfzYCrAEMAgsgAygCEEECEB8gAygCEEG9EkECEEEgAygCECADKAKkAS8BUkH/AXEQlgEgAygCECADKAKkASgCEEH//wNxEB8CfyMAQRBrIgAgAygCEDYCDCAAKAIMLQAAQQFxRQsEQCADKAKoAUEIakEUQQAQFCADKAIQEBYgAygCkAEQIyADQX82AqwBDAILIANBgbICQQcgA0EVakGABhBVNgIMIAMoAhAQFiADKAIMIAMoApABNgIAIAMgAygCDDYCkAELIAMgA0HQAGpCLhApIgA2AkwgAEUEQCADKAKoAUEIakEOQQAQFCADKAKQARAjIANBfzYCrAEMAQsgAygCTEHxEkH2EiADKAKgAUGAAnEbQQQQQSADKAKgAUGAAnFFBEAgAygCTCADLQCGAUEBcQR/QS0FIAMoAqQBLwEIC0H//wNxEB8LIAMoAkwgAy0AhgFBAXEEf0EtBSADKAKkAS8BCgtB//8DcRAfIAMoAkwgAygCpAEvAQwQHwJAIAMtAIUBQQFxBEAgAygCTEHjABAfDAELIAMoAkwgAygCpAEoAhBB//8DcRAfCyADKAKkASgCFCADQZ4BaiADQZwBahCNASADKAJMIAMvAZ4BEB8gAygCTCADLwGcARAfAkACQCADLQCFAUEBcUUNACADKAKkASkDKEIUWg0AIAMoAkxBABAhDAELIAMoAkwgAygCpAEoAhgQIQsCQAJAIAMoAqABQYACcUGAAkcNACADKAKkASkDIEL/////D1QEQCADKAKkASkDKEL/////D1QNAQsgAygCTEF/ECEgAygCTEF/ECEMAQsCQCADKAKkASkDIEL/////D1QEQCADKAJMIAMoAqQBKQMgpxAhDAELIAMoAkxBfxAhCwJAIAMoAqQBKQMoQv////8PVARAIAMoAkwgAygCpAEpAyinECEMAQsgAygCTEF/ECELCyADKAJMIAMoAqQBKAIwEFFB//8DcRAfIAMgAygCpAEoAjQgAygCoAEQkgFB//8DcSADKAKQAUGABhCSAUH//wNxajYCiAEgAygCTCADKAKIAUH//wNxEB8gAygCoAFBgAJxRQRAIAMoAkwgAygCpAEoAjgQUUH//wNxEB8gAygCTCADKAKkASgCPEH//wNxEB8gAygCTCADKAKkAS8BQBAfIAMoAkwgAygCpAEoAkQQIQJAIAMoAqQBKQNIQv////8PVARAIAMoAkwgAygCpAEpA0inECEMAQsgAygCTEF/ECELCwJ/IwBBEGsiACADKAJMNgIMIAAoAgwtAABBAXFFCwRAIAMoAqgBQQhqQRRBABAUIAMoAkwQFiADKAKQARAjIANBfzYCrAEMAQsgAygCqAEgA0HQAGoCfiMAQRBrIgAgAygCTDYCDAJ+IAAoAgwtAABBAXEEQCAAKAIMKQMQDAELQgALCxA2QQBIBEAgAygCTBAWIAMoApABECMgA0F/NgKsAQwBCyADKAJMEBYgAygCpAEoAjAEQCADKAKoASADKAKkASgCMBCFAUEASARAIAMoApABECMgA0F/NgKsAQwCCwsgAygCkAEEQCADKAKoASADKAKQAUGABhCRAUEASARAIAMoApABECMgA0F/NgKsAQwCCwsgAygCkAEQIyADKAKkASgCNARAIAMoAqgBIAMoAqQBKAI0IAMoAqABEJEBQQBIBEAgA0F/NgKsAQwCCwsgAygCoAFBgAJxRQRAIAMoAqQBKAI4BEAgAygCqAEgAygCpAEoAjgQhQFBAEgEQCADQX82AqwBDAMLCwsgAyADLQCHAUEBcTYCrAELIAMoAqwBIQAgA0GwAWokACAAC+ACAQF/IwBBIGsiBCQAIAQgADsBGiAEIAE7ARggBCACNgIUIAQgAzYCECAEQRAQGCIANgIMAkAg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AAAgAygCHEHcFmogAygCDEECdGooAgAgAygCHEHYKGpqLQAASg0ADAELIAMoAhxB3BZqIAMoAhRBAnRqIAMoAhxB3BZqIAMoAgxBAnRqKAIANgIAIAMgAygCDDYCFCADIAMoAgxBAXQ2AgwMAQsLIAMoAhxB3BZqIAMoAhRBAnRqIAMoAhA2AgAL1xMBA38jAEEwayICJAAgAiAANgIsIAIgATYCKCACIAIoAigoAgA2AiQgAiACKAIoKAIIKAIANgIgIAIgAigCKCgCCCgCDDYCHCACQX82AhAgAigCLEEANgLQKCACKAIsQb0ENgLUKCACQQA2AhgDQCACKAIYIAIoAhxIBEACQCACKAIkIAIoAhhBAnRqLwEABEAgAiACKAIYIgE2AhAgAigCLEHcFmohAyACKAIsIgQoAtAoQQFqIQAgBCAANgLQKCAAQQJ0IANqIAE2AgAgAigCGCACKAIsQdgoampBADoAAAwBCyACKAIkIAIoAhhBAnRqQQA7AQILIAIgAigCGEEBajYCGAwBCwsDQCACKAIsKALQKEECSARAAkAgAigCEEECSARAIAIgAigCEEEBaiIANgIQDAELQQAhAAsgAigCLEHcFmohAyACKAIsIgQoAtAoQQFqIQEgBCABNgLQKCABQQJ0IANqIAA2AgAgAiAANgIMIAIoAiQgAigCDEECdGpBATsBACACKAIMIAIoAixB2ChqakEAOgAAIAIoAiwiACAAKAKoLUEBazYCqC0gAigCIARAIAIoAiwiACAAKAKsLSACKAIgIAIoAgxBAnRqLwECazYCrC0LDAELCyACKAIoIAIoAhA2AgQgAiACKAIsKALQKEECbTYCGANAIAIoAhhBAU4EQCACKAIsIAIoAiQgAigCGBB5IAIgAigCGEEBazYCGAwBCwsgAiACKAIcNgIMA0AgAiACKAIsKALgFjYCGCACKAIsQdwWaiEBIAIoAiwiAygC0CghACADIABBAWs2AtAoIAIoAiwgAEECdCABaigCADYC4BYgAigCLCACKAIkQQEQeSACIAIoAiwoAuAWNgIUIAIoAhghASACKAIsQdwWaiEDIAIoAiwiBCgC1ChBAWshACAEIAA2AtQoIABBAnQgA2ogATYCACACKAIUIQEgAigCLEHcFmohAyACKAIsIgQoAtQoQQFrIQAgBCAANgLUKCAA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AQsgAigCCEEANgIAIAIoAghCADcDECACKAIIQgA3AwggAigCCEIANwMgIAIoAghCADcDGCACKAIIQQA2AiggAigCCEEAOgAsIAIoAgggAikDECACKAIMEI8BQQFxRQRAIAIoAggQJSACQQA2AhwMAQsgAiACKAIINgIcCyACKAIcIQEgAkEgaiQAIAEL1gIBAX8jAEEgayIDJAAgAyAANgIYIAMgATYCFCADIAI2AhAgAyADQQxqQgQQKTYCCAJAIAMoAghFBEAgA0F/NgIcDAELA0AgAygCFARAIAMoAhQoAgQgAygCEHFBgAZxBEAgAygCCEIAECwaIAMoAgggAygCFC8BCBAfIAMoAgggAygCFC8BChAfAn8jAEEQayIAIAMoAgg2AgwgACgCDC0AAEEBcUULBEAgAygCGEEIakEUQQAQFCADKAIIEBYgA0F/NgIcDAQLIAMoAhggA0EMakIEEDZBAEgEQCADKAIIEBYgA0F/NgIcDAQLIAMoAhQvAQoEQCADKAIYIAMoAhQoAgwgAygCFC8BCq0QNkEASARAIAMoAggQFiADQX82AhwMBQsLCyADIAMoAhQoAgA2AhQMAQsLIAMoAggQFiADQQA2AhwLIAMoAhwhACADQSBqJAAgAAtoAQF/IwBBEGsiAiAANgIMIAIgATYCCCACQQA7AQYDQCACKAIMBEAgAigCDCgCBCACKAIIcUGABnEEQCACIAIoAgwvAQogAi8BBkEEamo7AQYLIAIgAigCDCgCADYCDAwBCwsgAi8BBgvwAQEBfyMAQRBrIgEkACABIAA2AgwgASABKAIMNgIIIAFBADYCBANAIAEoAgwEQAJAAkAgASgCDC8BCEH1xgFGDQAgASgCDC8BCEH14AFGDQAgASgCDC8BCEGBsgJGDQAgASgCDC8BCEEBRw0BCyABIAEoAgwoAgA2AgAgASgCCCABKAIMRgRAIAEgASgCADYCCAsgASgCDEEANgIAIAEoAgwQIyABKAIEBEAgASgCBCABKAIANgIACyABIAEoAgA2AgwMAgsgASABKAIMNgIEIAEgASgCDCgCADYCDAwBCwsgASgCCCEAIAFBEGokACAAC7IEAQF/IwBBQGoiBSQAIAUgADYCOCAFIAE7ATYgBSACNgIwIAUgAzYCLCAFIAQ2AiggBSAFKAI4IAUvATatECkiADYC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IAEoAhBB//8DRgRAIAEgASgCDDYCEAsgASgCCEH//wNGBEAgASABKAIENgIICwJAIAEoApQBQQRxRQ0AIAEoAgggASgCBEYEQCABKAIQIAEoAgxGDQELIAEoApABQRVBABAUIAEtABdBAXEEQCABKAKkARAWCyABQQA2AqwBDAELAkAgASgCEEUEQCABKAIIRQ0BCyABKAKQAUEBQQAQFCABLQAXQQFxBEAgASgCpAEQFgsgAUEANgKsAQwBCyABIAEoAqQBEDE3AyggASABKAKkARAxNwMgIAEpAyggASkDIFIEQCABKAKQAUEBQQAQFCABLQAXQQFxBEAgASgCpAEQFgsgAUEANgKsAQwBCyABIAEoAqQBEDE3AzAgASABKAKkARAxNwOAAQJ/IwBBEGsiBSABKAKkATYCDCAFKAIMLQAAQQFxRQsEQCABKAKQAUEUQQAQFCABLQAXQQFxBEAgASgCpAEQFgsgAUEANgKsAQwBCyABLQAXQQFxBEAgASgCpAEQFgsCQCABKQOAAUL///////////8AWARAIAEpA4ABIAEpA4ABIAEpAzB8WA0BCyABKAKQAUEEQRYQFCABQQA2AqwBDAELIAEpA4ABIAEpAzB8IAEpA5gBIAEpAzh8VgRAIAEoApABQRVBABAUIAFBADYCrAEMAQsCQCABKAKUAUEEcUUNACABKQOAASABKQMwfCABKQOYASABKQM4fFENACABKAKQAUEVQQAQFCABQQA2AqwBDAELIAEpAyggASkDMEIugFYEQCABKAKQAUEVQQAQFCABQQA2AqwBDAELIAEgASkDKCABKAKQARCQASIFNgKMASAFRQRAIAFBADYCrAEMAQsgASgCjAFBAToALCABKAKMASABKQMwNwMYIAEoAowBIAEpA4ABNwMgIAEgASgCjAE2AqwBCyABKAKsASEFIAFBsAFqJAAgACAFNgJQDAELIAAoAmQgACkDMBAsGiAAKAJkIQUgACkDWCEJIAAoAmgoAhQhBiAAKAJUIQcjAEHQAGsiASQAIAEgBTYCSCABIAk3A0AgASAGNgI8IAEgBzYCOAJAIAEoAkgQMEIWVARAIAEoAjhBFUEAEBQgAUEANgJMDAELIwBBEGsiBSABKAJINgIMIAECfiAFKAIMLQAAQQFxBEAgBSgCDCkDEAwBC0IACzcDCCABKAJI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ECADQcgAEBgiADYCDAJAIABFBEAgAygCEEEBQbSbASgCABAUIANBADYCHAwBCyADKAIMIAMoAhA2AgAgAygCDCADLQAbQQFxOgAEIAMoAgwgAygCFDYCCAJAIAMoAgwoAghBAU4EQCADKAIMKAIIQQlMDQELIAMoAgxBCTYCCAsgAygCDEEAOgAMIAMoAgxBADYCMCADKAIMQQA2AjQgAygCDEEANgI4IAMgAygCDDYCHAsgAygCHCEAIANBIGokACAACzgBAX8jAEEQayIBIAA2AgwgASgCDEEANgIAIAEoAgxBADYCBCABKAIMQQA2AgggASgCDEEAOgAMC+MIAQF/IwBBQGoiAiAANgI4IAIgATYCNCACIAIoAjgoAnw2AjAgAiACKAI4KAI4IAIoAjgoAmxqNgIsIAIgAigCOCgCeDYCICACIAIoAjgoApABNgIcIAICfyACKAI4KAJsIAIoAjgoAixBhgJrSwRAIAIoAjgoAmwgAigCOCgCLEGGAmtrDAELQQALNgIYIAIgAigCOCgCQDYCFCACIAIoAjgoAjQ2AhAgAiACKAI4KAI4IAIoAjgoAmxqQYICajYCDCACIAIoAiwgAigCIEEBa2otAAA6AAsgAiACKAIsIAIoAiBqLQAAOgAKIAIoAjgoAnggAigCOCgCjAFPBEAgAiACKAIwQQJ2NgIwCyACKAIcIAIoAjgoAnRLBEAgAiACKAI4KAJ0NgIcCwNAAkAgAiACKAI4KAI4IAIoAjRqNgIoAkAgAigCKCACKAIgai0AACACLQAKRw0AIAIoAiggAigCIEEBa2otAAAgAi0AC0cNACACKAIoLQAAIAIoAiwtAABHDQAgAiACKAIoIgBBAWo2AiggAC0AASACKAIsLQABRwRADAELIAIgAigCLEECajYCLCACIAIoAihBAWo2AigDQCACIAIoAiwiAEEBajYCLCAALQABIQEgAiACKAIoIgBBAWo2AigCf0EAIAAtAAEgAUcNABogAiACKAIsIgBBAWo2AiwgAC0AASEBIAIgAigCKCIAQQFqNgIoQQAgAC0AASABRw0AGiACIAIoAiwiAEEBajYCLCAALQABIQEgAiACKAIoIgBBAWo2AihBACAALQABIAFHDQAaIAIgAigCLCIAQQFqNgIsIAAtAAEhASACIAIoAigiAEEBajYCKEEAIAAtAAEgAUcNABogAiACKAIsIgBBAWo2AiwgAC0AASEBIAIgAigCKCIAQQFqNgIoQQAgAC0AASABRw0AGiACIAIoAiwiAEEBajYCLCAALQABIQEgAiACKAIoIgBBAWo2AihBACAALQABIAFHDQAaIAIgAigCLCIAQQFqNgIsIAAtAAEhASACIAIoAigiAEEBajYCKEEAIAAtAAEgAUcNABogAiACKAIsIgBBAWo2AiwgAC0AASEBIAIgAigCKCIAQQFqNgIoQQAgAC0AASABRw0AGiACKAIsIAIoAgxJC0EBcQ0ACyACQYICIAIoAgwgAigCLGtrNgIkIAIgAigCDEGCAms2AiwgAigCJCACKAIgSgRAIAIoAjggAigCNDYCcCACIAIoAiQ2AiAgAigCJCACKAIcTg0CIAIgAigCLCACKAIgQQFrai0AADoACyACIAIoAiwgAigCIGotAAA6AAoLCyACIAIoAhQgAigCNCACKAIQcUEBdGovAQAiATYCNEEAIQAgASACKAIYSwR/IAIgAigCMEEBayIANgIwIABBAEcFQQALQQFxDQELCwJAIAIoAiAgAigCOCgCdE0EQCACIAIoAiA2AjwMAQsgAiACKAI4KAJ0NgI8CyACKAI8C5IQAQF/IwBBMGsiAiQAIAIgADYCKCACIAE2AiQgAgJ/IAIoAigoAiwgAigCKCgCDEEFa0kEQCACKAIoKAIsDAELIAIoAigoAgxBBWsLNgIgIAJBADYCECACIAIoAigoAgAoAgQ2AgwDQAJAIAJB//8DNgIcIAIgAigCKCgCvC1BKmpBA3U2AhQgAigCKCgCACgCECACKAIUSQ0AIAIgAigCKCgCACgCECACKAIUazYCFCACIAIoAigoAmwgAigCKCgCXGs2AhggAigCHCACKAIYIAIoAigoAgAoAgRqSwRAIAIgAigCGCACKAIoKAIAKAIEajYCHAsgAigCHCACKAIUSwRAIAIgAigCFDYCHAsCQCACKAIcIAIoAiBPDQACQCACKAIcRQRAIAIoAiRBBEcNAQsgAigCJEUNACACKAIcIAIoAhggAigCKCgCACgCBGpGDQELDAELQQAhACACIAIoAiRBBEYEfyACKAIcIAIoAhggAigCKCgCACgCBGpGBUEAC0EBcTYCECACKAIoQQBBACACKAIQEF0gAigCKCgCCCACKAIoKAIUQQRraiACKAIcOgAAIAIoAigoAgggAigCKCgCFEEDa2ogAigCHEEIdjoAACACKAIoKAIIIAIoAigoAhRBAmtqIAIoAhxBf3M6AAAgAigCKCgCCCACKAIoKAIUQQFraiACKAIcQX9zQQh2OgAAIAIoAigoAgAQHCACKAIYBEAgAigCGCACKAIcSwRAIAIgAigCHDYCGAsgAigCKCgCACgCDCACKAIoKAI4IAIoAigoAlxqIAIoAhgQGRogAigCKCgCACIAIAIoAhggACgCDGo2AgwgAigCKCgCACIAIAAoAhAgAigCGGs2AhAgAigCKCgCACIAIAIoAhggACgCFGo2AhQgAigCKCIAIAIoAhggACgCXGo2AlwgAiACKAIcIAIoAhhrNgIcCyACKAIcBEAgAigCKCgCACACKAIoKAIAKAIMIAIoAhwQdhogAigCKCgCACIAIAIoAhwgACgCDGo2AgwgAigCKCgCACIAIAAoAhAgAigCHGs2AhAgAigCKCgCACIAIAIoAhwgACgCFGo2AhQLIAIoAhBFDQELCyACIAIoAgwgAigCKCgCACgCBGs2AgwgAigCDARAAkAgAigCDCACKAIoKAIsTwRAIAIoAihBAjYCsC0gAigCKCgCOCACKAIoKAIAKAIAIAIoAigoAixrIAIoAigoAiwQGRogAigCKCACKAIoKAIsNgJsDAELIAIoAgwgAigCKCgCPCACKAIoKAJsa08EQCACKAIoIgAgACgCbCACKAIoKAIsazYCbCACKAIoKAI4IAIoAigoAjggAigCKCgCLGogAigCKCgCbBAZGiACKAIoKAKwLUECSQRAIAIoAigiACAAKAKwLUEBajYCsC0LCyACKAIoKAI4IAIoAigoAmxqIAIoAigoAgAoAgAgAigCDGsgAigCDBAZGiACKAIoIgAgAigCDCAAKAJsajYCbAsgAigCKCACKAIoKAJsNgJcIAIoAigiAQJ/IAIoAgwgAigCKCgCLCACKAIoKAK0LWtLBEAgAigCKCgCLCACKAIoKAK0LWsMAQsgAigCDAsgASgCtC1qNgK0LQsgAigCKCgCwC0gAigCKCgCbEkEQCACKAIoIAIoAigoAmw2AsAtCwJAIAIoAhAEQCACQQM2AiwMAQsCQCACKAIkRQ0AIAIoAiRBBEYNACACKAIoKAIAKAIEDQAgAigCKCgCbCACKAIoKAJcRw0AIAJBATYCLAwBCyACIAIoAigoAjwgAigCKCgCbGtBAWs2AhQCQCACKAIoKAIAKAIEIAIoAhRNDQAgAigCKCgCXCACKAIoKAIsSA0AIAIoAigiACAAKAJcIAIoAigoAixrNgJcIAIoAigiACAAKAJsIAIoAigoAixrNgJsIAIoAigoAjggAigCKCgCOCACKAIoKAIsaiACKAIoKAJsEBkaIAIoAigoArAtQQJJBEAgAigCKCIAIAAoArAtQQFqNgKwLQsgAiACKAIoKAIsIAIoAhRqNgIUCyACKAIUIAIoAigoAgAoAgRLBEAgAiACKAIoKAIAKAIENgIUCyACKAIUBEAgAigCKCgCACACKAIoKAI4IAIoAigoAmxqIAIoAhQQdhogAigCKCIAIAIoAhQgACgCbGo2AmwLIAIoAigoAsAtIAIoAigoAmxJBEAgAigCKCACKAIoKAJsNgLALQsgAiACKAIoKAK8LUEqakEDdTYCFCACIAIoAigoAgwgAigCFGtB//8DSwR/Qf//AwUgAigCKCgCDCACKAIUaws2AhQgAgJ/IAIoAhQgAigCKCgCLEsEQCACKAIoKAIsDAELIAIoAhQLNgIgIAIgAigCKCgCbCACKAIoKAJcazYCGAJAIAIoAhggAigCIEkEQCACKAIYRQRAIAIoAiRBBEcNAgsgAigCJEUNASACKAIoKAIAKAIEDQEgAigCGCACKAIUSw0BCyACAn8gAigCGCACKAIUSwRAIAIoAhQMAQsgAigCGAs2AhwgAgJ/QQAgAigCJEEERw0AGkEAIAIoAigoAgAoAgQNABogAigCHCACKAIYRgtBAXE2AhAgAigCKCACKAIoKAI4IAIoAigoAlxqIAIoAhwgAigCEBBdIAIoAigiACACKAIcIAAoAlxqNgJcIAIoAigoAgAQHAsgAkECQQAgAigCEBs2AiwLIAIoAiwhACACQTBqJAAgAAuyAgEBfyMAQRBrIgEkACABIAA2AggCQCABKAIIEHgEQCABQX42AgwMAQsgASABKAIIKAIcKAIENgIEIAEoAggoAhwoAggEQCABKAIIKAIoIAEoAggoAhwoAgggASgCCCgCJBEEAAsgASgCCCgCHCgCRARAIAEoAggoAiggASgCCCgCHCgCRCABKAIIKAIkEQQACyABKAIIKAIc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DQAgAiEAIANBAWsiAw0ACwsgBCgCFBogASACNgKgAQwCCyMAQRBrIgAgASgCqAEoAgQ2AgwgAUEAIAAoAgxrQQJ0QajZAGooAgA2AqABDAELIAFBADYCoAELCwJAIAEoAqABRQRAIAEgASgCpAE2AqwBDAELIAEgASgCoAEQLgJ/IAEoAqQBBEAgASgCpAEQLkECagwBC0EAC2pBAWoQGCIANgIcIABFBEAgAUG4EygCADYCrAEMAQsgASgCHCEAAn8gASgCpAEEQCABKAKkAQwBC0H6EgshA0HfEkH6EiABKAKkARshAiABIAEoAqABNgIIIAEgAjYCBCABIAM2AgAgAEG+CiABEG8gASgCqAEgASgCHDYCCCABIAEoAhw2AqwBCyABKAKsASEAIAFBsAFqJAAgAAsIAEEBQTgQfwszAQF/IAAoAhQiAyABIAIgACgCECADayIBIAEgAksbIgEQGRogACAAKAIUIAFqNgIUIAILjwUCBn4BfyABIAEoAgBBD2pBcHEiAUEQajYCACAAAnwgASkDACEDIAEpAwghBiMAQSBrIggkAAJAIAZC////////////AIMiBEKAgICAgIDAgDx9IARCgICAgICAwP/DAH1UBEAgBkIEhiADQjyIhCEEIANC//////////8PgyIDQoGAgICAgICACFoEQCAEQoGAgICAgICAwAB8IQIMAgsgBEKAgICAgICAgEB9IQIgA0KAgICAgICAgAiFQgBSDQEgAiAEQgGDfCECDAELIANQIARCgICAgICAwP//AFQgBEKAgICAgIDA//8AURtFBEAgBkIEhiADQjyIhEL/////////A4NCgICAgICAgPz/AIQhAgwBC0KAgICAgICA+P8AIQIgBEL///////+//8MAVg0AQgAhAiAEQjCIpyIAQZH3AEkNACADIQIgBkL///////8/g0KAgICAgIDAAIQiBSEHAkAgAEGB9wBrIgFBwABxBEAgAiABQUBqrYYhB0IAIQIMAQsgAUUNACAHIAGtIgSGIAJBwAAgAWutiIQhByACIASGIQILIAggAjcDECAIIAc3AxgCQEGB+AAgAGsiAEHAAHEEQCAFIABBQGqtiCEDQgAhBQwBCyAARQ0AIAVBwAAgAGuthiADIACtIgKIhCEDIAUgAoghBQsgCCADNwMAIAggBTcDCCAIKQMI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ADYCtC0gASgCFEEERgRAIAEoAhgCfyABKAIYKAJcQQBOBEAgASgCGCgCOCABKAIYKAJcagwBC0EACyABKAIYKAJsIAEoAhgoAlxrQQEQKCABKAIYIAEoAhgoAmw2AlwgASgCGCgCABAcIAEoAhgoAgAoAhBFBEAgAUECNgIcDAILIAFBAzYCHAwBCyABKAIYKAKgLQRAIAEoAhgCfyABKAIYKAJcQQBOBEAgASgCGCgCOCABKAIYKAJcagwBC0EACyABKAIYKAJsIAEoAhgoAlxrQQAQKCABKAIYIAEoAhgoAmw2AlwgASgCGCgCABAcIAEoAhgoAgAoAhBFBEAgAUEANgIcDAILCyABQQE2AhwLIAEoAhwhAiABQSBqJAAgAgwBCwJ/IAAoAiwoAogBQQNGBEAgACgCLCECIAAoAjQhAyMAQTBrIgEkACABIAI2AiggASADNgIkAkADQAJAIAEoAigoAnRBggJNBEAgASgCKBBcAkAgASgCKCgCdEGCAksNACABKAIkDQAgAUEANgIsDAQLIAEoAigoAnRFDQELIAEoAihBADYCYAJAIAEoAigoAnRBA0kNACABKAIoKAJsRQ0AIAEgASgCKCgCOCABKAIoKAJsakEBazYCGCABIAEoAhgtAAA2AhwgASgCHCECIAEgASgCGCIDQQFqNgIYAkAgAy0AASACRw0AIAEoAhwhAiABIAEoAhgiA0EBajYCGCADLQABIAJHDQAgASgCHCECIAEgASgCGCIDQQFqNgIYIAMtAAEgAkcNACABIAEoAigoAjggASgCKCgCbGpBggJqNgIUA0AgASgCHCECIAEgASgCGCIDQQFqNgIYAn9BACADLQABIAJHDQAaIAEoAhwhAiABIAEoAhgiA0EBajYCGEEAIAMtAAEgAkcNABogASgCHCECIAEgASgCGCIDQQFqNgIYQQAgAy0AASACRw0AGiABKAIcIQIgASABKAIYIgNBAWo2AhhBACADLQABIAJHDQAaIAEoAhwhAiABIAEoAhgiA0EBajYCGEEAIAMtAAEgAkcNABogASgCHCECIAEgASgCGCIDQQFqNgIYQQAgAy0AASACRw0AGiABKAIcIQIgASABKAIYIgNBAWo2AhhBACADLQABIAJHDQAaIAEoAhwhAiABIAEoAhgiA0EBajYCGEEAIAMtAAEgAkcNABog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AS8BEiECIAEgASgCSCIDQQFqNgJIIAMgAjoAAAwCCyABKAIMQRBxBEAgASABLwESNgIIIAEgASgCDEEPcTYCDCABKAIMBEAgASgCKCABKAIMSQRAIAEgASgCUCICQQFqNgJQIAEgASgCLCACLQAAIAEoAih0ajYCLCABIAEoAihBCGo2AigLIAEgASgCCCABKAIsQQEgASgCDHRBAWtxajYCCCABIAEoAiwgASgCDHY2AiwgASABKAIoIAEoAgxrNgIoCyABKAIoQQ9JBEAgASABKAJQIgJBAWo2AlAgASABKAIsIAItAAAgASgCKHRqNgIsIAEgASgCKEEIajYCKCABIAEoAlAiAkEBajYCUCABIAEoAiwgAi0AACABKAIodGo2AiwgASABKAIoQQhqNgIoCyABIAEoAiAgASgCLCABKAIYcUECdGooAQA2ARACQANAIAEgAS0AETYCDCABIAEoAiwgASgCDHY2AiwgASABKAIoIAEoAgxrNgIoIAEgAS0AEDYCDCABKAIMQRBxBEAgASABLwESNgIEIAEgASgCDEEPcTYCDCABKAIoIAEoAgxJBEAgASABKAJQIgJBAWo2AlAgASABKAIsIAItAAAgASgCKHRqNgIsIAEgASgCKEEIajYCKCABKAIoIAEoAgxJBEAgASABKAJQIgJBAWo2AlAgASABKAIsIAItAAAgASgCKHRqNgIsIAEgASgCKEEIajYCKAsLIAEgASgCBCABKAIsQQEgASgCDHRBAWtxajYCBCABIAEoAiwgASgCDHY2AiwgASABKAIoIAEoAgxrNgIoIAEgASgCSCABKAJEazYCDAJAIAEoAgQgASgCDEsEQCABIAEoAgQgASgCDGs2AgwgASgCDCABKAI4SwRAIAEoAlQoAsQ3BEAgASgCXEHdDDYCGCABKAJUQdH+ADYCBAwKCwsgASABKAIwNgIAAkAgASgCNEUEQCABIAEoAgAgASgCPCABKAIMa2o2AgAgASgCDCABKAIISQRAIAEgASgCCCABKAIMazYCCANAIAEgASgCACICQQFqNgIAIAItAAAhAiABIAEoAkgiA0EBajYCSCADIAI6AAAgASABKAIMQQFrIgI2AgwgAg0ACyABIAEoAkggASgCBGs2AgALDAELAkAgASgCNCABKAIMSQRAIAEgASgCACABKAI8IAEoAjRqIAEoAgxrajYCACABIAEoAgwgASgCNGs2AgwgASgCDCABKAIISQRAIAEgASgCCCABKAIMazYCCANAIAEgASgCACICQQFqNgIAIAItAAAhAiABIAEoAkgiA0EBajYCSCADIAI6AAAgASABKAIMQQFrIgI2AgwgAg0ACyABIAEoAjA2AgAgASgCNCABKAIISQRAIAEgASgCNDYCDCABIAEoAgggASgCDGs2AggDQCABIAEoAgAiAkEBajYCACACLQAAIQIgASABKAJIIgNBAWo2AkggAyACOgAAIAEgASgCDEEBayICNgIMIAINAAsgASABKAJIIAEoAgRrNgIACwsMAQsgASABKAIAIAEoAjQgASgCDGtqNgIAIAEoAgwgASgCCEkEQCABIAEoAgggASgCDGs2AggDQCABIAEoAgAiAkEBajYCACACLQAAIQIgASABKAJIIgNBAWo2AkggAyACOgAAIAEgASgCDEEBayICNgIMIAINAAsgASABKAJIIAEoAgRrNgIACwsLA0AgASgCCEECSwRAIAEgASgCACICQQFqNgIAIAItAAAhAiABIAEoAkgiA0EBajYCSCADIAI6AAAgASABKAIAIgJBAWo2AgAgAi0AACECIAEgASgCSCIDQQFqNgJIIAMgAjoAACABIAEoAgAiAkEBajYCACACLQAAIQIgASABKAJIIgNBAWo2AkggAyACOgAAIAEgASgCCEEDazYCCAwBCwsMAQsgASABKAJIIAEoAgRrNgIAA0AgASABKAIAIgJBAWo2AgAgAi0AACECIAEgASgCSCIDQQFqNgJIIAMgAjoAACABIAEoAgAiAkEBajYCACACLQAAIQIgASABKAJIIgNBAWo2AkggAyACOgAAIAEgASgCACICQQFqNgIAIAItAAAhAiABIAEoAkgiA0EBajYCSCADIAI6AAAgASABKAIIQQNrNgIIIAEoAghBAksNAAsLIAEoAggEQCABIAEoAgAiAkEBajYCACACLQAAIQIgASABKAJIIgNBAWo2AkggAyACOgAAIAEoAghBAUsEQCABIAEoAgAiAkEBajYCACACLQAAIQIgASABKAJIIgNBAWo2AkggAyACOgAACwsMAgsgASgCDEHAAHFFBEAgASABKAIgIAEvARIgASgCLEEBIAEoAgx0QQFrcWpBAnRqKAEANgEQDAELCyAB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AG5hbgAvZGV2L3VyYW5kb20AaW52YWxpZCBjb2RlIC0tIG1pc3NpbmcgZW5kLW9mLWJsb2NrAGluY29ycmVjdCBoZWFkZXIgY2hlY2sAaW5jb3JyZWN0IGxlbmd0aCBjaGVjawBpbmNvcnJlY3QgZGF0YSBjaGVjawBpbnZhbGlkIGRpc3RhbmNlIHRvbyBmYXIgYmFjawBoZWFkZXIgY3JjIG1pc21hdGNoAGluZgBpbnZhbGlkIHdpbmRvdyBzaXplAFJlYWQtb25seSBhcmNoaXZlAE5vdCBhIHppcCBhcmNoaXZlAFJlc291cmNlIHN0aWxsIGluIHVzZQBNYWxsb2MgZmFpbHVyZQBpbnZhbGlkIGJsb2NrIHR5cGUARmFpbHVyZSB0byBjcmVhdGUgdGVtcG9yYXJ5IGZpbGUAQ2FuJ3Qgb3BlbiBmaWxlAE5vIHN1Y2ggZmlsZQBQcmVtYXR1cmUgZW5kIG9mIGZpbGUAQ2FuJ3QgcmVtb3ZlIGZpbGUAaW52YWxpZCBsaXRlcmFsL2xlbmd0aCBjb2RlAGludmFsaWQgZGlzdGFuY2UgY29kZQB1bmtub3duIGNvbXByZXNzaW9uIG1ldGhvZABzdHJlYW0gZW5kAENvbXByZXNzZWQgZGF0YSBpbnZhbGlkAE11bHRpLWRpc2sgemlwIGFyY2hpdmVzIG5vdCBzdXBwb3J0ZWQAT3BlcmF0aW9uIG5vdCBzdXBwb3J0ZWQARW5jcnlwdGlvbiBtZXRob2Qgbm90IHN1cHBvcnRlZABDb21wcmVzc2lvbiBtZXRob2Qgbm90IHN1cHBvcnRlZABFbnRyeSBoYXMgYmVlbiBkZWxldGVkAENvbnRhaW5pbmcgemlwIGFyY2hpdmUgd2FzIGNsb3NlZABDbG9zaW5nIHppcCBhcmNoaXZlIGZhaWxlZABSZW5hbWluZyB0ZW1wb3JhcnkgZmlsZSBmYWlsZWQARW50cnkgaGFzIGJlZW4gY2hhbmdlZABObyBwYXNzd29yZCBwcm92aWRlZABXcm9uZyBwYXNzd29yZCBwcm92aWRlZABVbmtub3duIGVycm9yICVkAHJiAHIrYgByd2EAJXMuWFhYWFhYAE5BTgBJTkYAQUUAMS4yLjExAC9wcm9jL3NlbGYvZmQvAC4AKG51bGwpADogAFBLBgcA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0gAIADIACACyAAgAcgAIAPIACAAKAAgAigAIAEoACADKAAgAKgAIAKoACABqAAgA6gAIABoACACaAAgAWgAIANoACAA6AAgAugAIAHoACAD6AAgABgAIAIYACABGAAgAxgAIACYACACmAAgAZgAIAOYACAAWAAgAlgAIAFYACADWAAgANgAIALYACAB2AAgA9gAIAA4ACACOAAgATgAIAM4ACAAuAAgArgAIAG4ACADuAAgAHgAIAJ4ACABeAAgA3gAIAD4ACAC+AAgAfgAIAP4ACAABAAgAgQAIAEEACADBAAgAIQAIAKEACABhAAgA4QAIABEACACRAAgAUQAIANEACAAxAAgAsQAIAHEACADxAAgACQAIAIkACABJAAgAyQAIACkACACpAAgAaQAIAOkACAAZAAgAmQAIAFkACADZAAgAOQAIALkACAB5AAgA+QAIAAUACACFAAgARQAIAMUACAAlAAgApQAIAGUACADlAAgAFQAIAJUACABVAAgA1QAIADUACAC1AAgAdQAIAPUACAANAAgAjQAIAE0ACADNAAgALQAIAK0ACABtAAgA7QAIAB0ACACdAAgAXQAIAN0ACAA9AAgAvQAIAH0ACAD9AAgAEwAJABMBCQCTAAkAkwEJAFMACQBTAQkA0wAJANMBCQAzAAkAMwEJALMACQCzAQkAcwAJAHMBCQDzAAkA8wEJAAsACQALAQkAiwAJAIsBCQBLAAkASwEJAMsACQDLAQkAKwAJACsBCQCrAAkAqwEJAGsACQBrAQkA6wAJAOsBCQAbAAkAGwEJAJsACQCbAQkAWwAJAFsBCQDbAAkA2wEJADsACQA7AQkAuwAJALsBCQB7AAkAewEJAPsACQD7AQkABwAJAAcBCQCHAAkAhwEJAEcACQBHAQkAxwAJAMcBCQAnAAkAJwEJAKcACQCnAQkAZwAJAGcBCQDnAAkA5wEJABcACQAXAQkAlwAJAJcBCQBXAAkAVwEJANcACQDXAQkANwAJADcBCQC3AAkAtwEJAHcACQB3AQkA9wAJAPcBCQAPAAkADwEJAI8ACQCPAQkATwAJAE8BCQDPAAkAzwEJAC8ACQAvAQkArwAJAK8BCQBvAAkAbwEJAO8ACQDvAQkAHwAJAB8BCQCfAAkAnwEJAF8ACQBfAQkA3wAJAN8BCQA/AAkAPwEJAL8ACQC/AQkAfwAJAH8BCQD/AAkA/wEJAAAABwBAAAcAIAAHAGAABwAQAAcAUAAHADAABwBwAAcACAAHAEgABwAoAAcAaAAHABgABwBYAAcAOAAHAHgABwAEAAcARAAHACQABwBkAAcAFAAHAFQABwA0AAcAdAAHAAMACACDAAgAQwAIAMMACAAjAAgAowAIAGMACADjAAgAAAAFABAABQAIAAUAGAAFAAQABQAUAAUADAAFABwABQACAAUAEgAFAAoABQAaAAUABgAFABYABQAOAAUAHgAFAAEABQARAAUACQAFABkABQAFAAUAFQAFAA0ABQAdAAUAAwAFABMABQALAAUAGwAFAAcABQAXAAUAQbDqAAtNAQAAAAEAAAABAAAAAQAAAAIAAAACAAAAAgAAAAIAAAADAAAAAwAAAAMAAAADAAAABAAAAAQAAAAEAAAABAAAAAUAAAAFAAAABQAAAAUAQaDrAAtlAQAAAAEAAAACAAAAAgAAAAMAAAADAAAABAAAAAQAAAAFAAAABQAAAAYAAAAGAAAABwAAAAcAAAAIAAAACAAAAAkAAAAJAAAACgAAAAoAAAALAAAACwAAAAwAAAAMAAAADQAAAA0AQdDsAAsjAgAAAAMAAAAHAAAAAAAAABAREgAIBwkGCgULBAwDDQIOAQ8AQYTtAAtpAQAAAAIAAAADAAAABAAAAAUAAAAGAAAABwAAAAgAAAAKAAAADAAAAA4AAAAQAAAAFAAAABgAAAAcAAAAIAAAACgAAAAwAAAAOAAAAEAAAABQAAAAYAAAAHAAAACAAAAAoAAAAMAAAADgAEGE7gALegEAAAACAAAAAwAAAAQAAAAGAAAACAAAAAwAAAAQAAAAGAAAACAAAAAwAAAAQAAAAGAAAACAAAAAwAAAAAABAACAAQAAAAIAAAADAAAABAAAAAYAAAAIAAAADAAAABAAAAAYAAAAIAAAADAAAABAAAAAYAAAMS4yLjExAEGI7wALbQcAAAAEAAQACAAEAAgAAAAEAAUAEAAIAAgAAAAEAAYAIAAgAAgAAAAEAAQAEAAQAAkAAAAIABAAIAAgAAkAAAAIABAAgACAAAkAAAAIACAAgAAAAQkAAAAgAIAAAgEABAkAAAAgAAIBAgEAEAkAQYDwAAulAgMABAAFAAYABwAIAAkACgALAA0ADwARABMAFwAbAB8AIwArADMAOwBDAFMAYwBzAIMAowDDAOMAAgEAAAAAAAAQABAAEAAQABAAEAAQABAAEQARABEAEQASABIAEgASABMAEwATABMAFAAUABQAFAAVABUAFQAVABAATQDKAAAAAQACAAMABAAFAAcACQANABEAGQAhADEAQQBhAIEAwQABAYEBAQIBAwEEAQYBCAEMARABGAEgATABQAFgAAAAABAAEAAQABAAEQARABIAEgATABMAFAAUABUAFQAWABYAFwAXABgAGAAZABkAGgAaABsAGwAcABwAHQAdAEAAQAAQABEAEgAAAAgABwAJAAYACgAFAAsABAAMAAMADQACAA4AAQAPAEGw8gALwRFgBwAAAAhQAAAIEAAUCHMAEgcfAAAIcAAACDAAAAnAABAHCgAACGAAAAggAAAJoAAACAAAAAiAAAAIQAAACeAAEAcGAAAIWAAACBgAAAmQABMHOwAACHgAAAg4AAAJ0AARBxEAAAhoAAAIKAAACbAAAAgIAAAIiAAACEgAAAnwABAHBAAACFQAAAgUABUI4wATBysAAAh0AAAINAAACcgAEQcNAAAIZAAACCQAAAmoAAAIBAAACIQAAAhEAAAJ6AAQBwgAAAhcAAAIHAAACZgAFAdTAAAIfAAACDwAAAnYABIHFwAACGwAAAgsAAAJuAAACAwAAAiMAAAITAAACfgAEAcDAAAIUgAACBIAFQijABMHIwAACHIAAAgyAAAJxAARBwsAAAhiAAAIIgAACaQAAAgCAAAIggAACEIAAAnkABAHBwAACFoAAAgaAAAJlAAUB0MAAAh6AAAIOgAACdQAEgcTAAAIagAACCoAAAm0AAAICgAACIoAAAhKAAAJ9AAQBwUAAAhWAAAIFgBACAAAEwczAAAIdgAACDYAAAnMABEHDwAACGYAAAgmAAAJrAAACAYAAAiGAAAIRgAACewAEAcJAAAIXgAACB4AAAmcABQHYwAACH4AAAg+AAAJ3AASBxsAAAhuAAAILgAACbwAAAgOAAAIjgAACE4AAAn8AGAHAAAACFEAAAgRABUIgwASBx8AAAhxAAAIMQAACcIAEAcKAAAIYQAACCEAAAmiAAAIAQAACIEAAAhBAAAJ4gAQBwYAAAhZAAAIGQAACZIAEwc7AAAIeQAACDkAAAnSABEHEQAACGkAAAgpAAAJsgAACAkAAAiJAAAISQAACfIAEAcEAAAIVQAACBUAEAgCARMHKwAACHUAAAg1AAAJygARBw0AAAhlAAAIJQAACaoAAAgFAAAIhQAACEUAAAnqABAHCAAACF0AAAgdAAAJmgAUB1MAAAh9AAAIPQAACdoAEgcXAAAIbQAACC0AAAm6AAAIDQAACI0AAAhNAAAJ+gAQBwMAAAhTAAAIEwAVCMMAEwcjAAAIcwAACDMAAAnGABEHCwAACGMAAAgjAAAJpgAACAMAAAiDAAAIQwAACeYAEAcHAAAIWwAACBsAAAmWABQHQwAACHsAAAg7AAAJ1gASBxMAAAhrAAAIKwAACbYAAAgLAAAIiwAACEsAAAn2ABAHBQAACFcAAAgXAEAIAAATBzMAAAh3AAAINwAACc4AEQcPAAAIZwAACCcAAAmuAAAIBwAACIcAAAhHAAAJ7gAQBwkAAAhfAAAIHwAACZ4AFAdjAAAIfwAACD8AAAneABIHGwAACG8AAAgvAAAJvgAACA8AAAiPAAAITwAACf4AYAcAAAAIUAAACBAAFAhzABIHHwAACHAAAAgwAAAJwQAQBwoAAAhgAAAIIAAACaEAAAgAAAAIgAAACEAAAAnhABAHBgAACFgAAAgYAAAJkQATBzsAAAh4AAAIOAAACdEAEQcRAAAIaAAACCgAAAmxAAAICAAACIgAAAhIAAAJ8QAQBwQAAAhUAAAIFAAVCOMAEwcrAAAIdAAACDQAAAnJABEHDQAACGQAAAgkAAAJqQAACAQAAAiEAAAIRAAACekAEAcIAAAIXAAACBwAAAmZABQHUwAACHwAAAg8AAAJ2QASBxcAAAhsAAAILAAACbkAAAgMAAAIjAAACEwAAAn5ABAHAwAACFIAAAgSABUIowATByMAAAhyAAAIMgAACcUAEQcLAAAIYgAACCIAAAmlAAAIAgAACIIAAAhCAAAJ5QAQBwcAAAhaAAAIGgAACZUAFAdDAAAIegAACDoAAAnVABIHEwAACGoAAAgqAAAJtQAACAoAAAiKAAAISgAACfUAEAcFAAAIVgAACBYAQAgAABMHMwAACHYAAAg2AAAJzQARBw8AAAhmAAAIJgAACa0AAAgGAAAIhgAACEYAAAntABAHCQAACF4AAAgeAAAJnQAUB2MAAAh+AAAIPgAACd0AEgcbAAAIbgAACC4AAAm9AAAIDgAACI4AAAhOAAAJ/QBgBwAAAAhRAAAIEQAVCIMAEgcfAAAIcQAACDEAAAnDABAHCgAACGEAAAghAAAJowAACAEAAAiBAAAIQQAACeMAEAcGAAAIWQAACBkAAAmTABMHOwAACHkAAAg5AAAJ0wARBxEAAAhpAAAIKQAACbMAAAgJAAAIiQAACEkAAAnzABAHBAAACFUAAAgVABAIAgETBysAAAh1AAAINQAACcsAEQcNAAAIZQAACCUAAAmrAAAIBQAACIUAAAhFAAAJ6wAQBwgAAAhdAAAIHQAACZsAFAdTAAAIfQAACD0AAAnbABIHFwAACG0AAAgtAAAJuwAACA0AAAiNAAAITQAACfsAEAcDAAAIUwAACBMAFQjDABMHIwAACHMAAAgzAAAJxwARBwsAAAhjAAAIIwAACacAAAgDAAAIgwAACEMAAAnnABAHBwAACFsAAAgbAAAJlwAUB0MAAAh7AAAIOwAACdcAEgcTAAAIawAACCsAAAm3AAAICwAACIsAAAhLAAAJ9wAQBwUAAAhXAAAIFwBACAAAEwczAAAIdwAACDcAAAnPABEHDwAACGcAAAgnAAAJrwAACAcAAAiHAAAIRwAACe8AEAcJAAAIXwAACB8AAAmfABQHYwAACH8AAAg/AAAJ3wASBxsAAAhvAAAILwAACb8AAAgPAAAIjwAACE8AAAn/ABAFAQAXBQEBEwURABsFARARBQUAGQUBBBUFQQAdBQFAEAUDABgFAQIUBSEAHAUBIBIFCQAaBQEIFgWBAEAFAAAQBQIAFwWBARMFGQAbBQEYEQUHABkFAQYVBWEAHQUBYBAFBAAYBQEDFAUxABwFATASBQ0AGgUBDBYFwQBABQAAEQAKABEREQAAAAAFAAAAAAAACQAAAAALAAAAAAAAAAARAA8KERERAwoHAAEACQsLAAAJBgsAAAsABhEAAAAREREAQYGEAQshCwAAAAAAAAAAEQAKChEREQAKAAACAAkLAAAACQALAAALAEG7hAELAQwAQceEAQsVDAAAAAAMAAAAAAkMAAAAAAAMAAAMAEH1hAELAQ4AQYGFAQsVDQAAAAQNAAAAAAkOAAAAAAAOAAAOAEGvhQELARAAQbuFAQseDwAAAAAPAAAAAAkQAAAAAAAQAAAQAAASAAAAEhISAEHyhQELDhIAAAASEhIAAAAAAAAJAEGjhgELAQsAQa+GAQsVCgAAAAAKAAAAAAkLAAAAAAALAAALAEHdhgELAQwAQemGAQsnDAAAAAAMAAAAAAkMAAAAAAAMAAAMAAAwMTIzNDU2Nzg5QUJDREVGAEG0hwELARkAQduHAQsF//////8AQaCIAQtXGRJEOwI/LEcUPTMwChsGRktFNw9JDo4XA0AdPGkrNh9KLRwBICUpIQgMFRYiLhA4Pgs0MRhkdHV2L0EJfzkRI0MyQomKiwUEJignDSoeNYwHGkiTE5SVAEGAiQELig5JbGxlZ2FsIGJ5dGUgc2VxdWVuY2UARG9tYWluIGVycm9yAFJlc3VsdCBub3QgcmVwcmVzZW50YWJsZQBOb3QgYSB0dHkAUGVybWlzc2lvbiBkZW5pZWQAT3BlcmF0aW9uIG5vdCBwZXJtaXR0ZWQATm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeQBObyBzdWNoIHByb2Nlc3MARmlsZSBleGlzdHMAVmFsdWUgdG9vIGxhcmdlIGZvciBkYXRhIHR5cGUATm8gc3BhY2UgbGVmdCBvbiBkZXZpY2UAT3V0IG9mIG1lbW9yeQBSZXNvdXJjZSBidXN5AEludGVycnVwdGVkIHN5c3RlbSBjYWxsAFJlc291cmNlIHRlbXBvcmFyaWx5IHVuYXZhaWxhYmxlAEludmFsaWQgc2VlawBDcm9zcy1kZXZpY2UgbGluawBSZWFkLW9ubHkgZmlsZSBzeXN0ZW0ARGlyZWN0b3J5IG5vdCBlbXB0eQBDb25uZWN0aW9uIHJlc2V0IGJ5IHBlZXIAT3BlcmF0aW9uIHRpbWVkIG91dABDb25uZWN0aW9uIHJlZnVzZWQASG9zdCBpcyBkb3duAEhvc3QgaXMgdW5yZWFjaGFibGUAQWRkcmVzcyBpbiB1c2UAQnJva2VuIHBpcGUASS9PIGVycm9yAE5vIHN1Y2ggZGV2aWNlIG9yIGFkZHJlc3MAQmxvY2sgZGV2aWNlIHJlcXVpcmVkAE5vIHN1Y2ggZGV2aWNlAE5vdCBhIGRpcmVjdG9yeQBJcyBhIGRpcmVjdG9yeQBUZXh0IGZpbGUgYnVzeQBFeGVjIGZvcm1hdCBlcnJvcgBJbnZhbGlkIGFyZ3VtZW50AEFyZ3VtZW50IGxpc3QgdG9vIGxvbmcAU3ltYm9saWMgbGluayBsb29wAEZpbGVuYW1lIHRvbyBsb25nAFRvbyBtYW55IG9wZW4gZmlsZXMgaW4gc3lzdGVtAE5vIGZpbGUgZGVzY3JpcHRvcnMgYXZhaWxhYmxlAEJhZCBmaWxlIGRlc2NyaXB0b3IATm8gY2hpbGQgcHJvY2VzcwBCYWQgYWRkcmVzcwBGaWxlIHRvbyBsYXJnZQBUb28gbWFueSBsaW5rcwBObyBsb2NrcyBhdmFpbGFibGUAUmVzb3VyY2UgZGVhZGxvY2sgd291bGQgb2NjdXIAU3RhdGUgbm90IHJlY292ZXJhYmxlAFByZXZpb3VzIG93bmVyIGRpZWQAT3BlcmF0aW9uIGNhbmNlbGVkAEZ1bmN0aW9uIG5vdCBpbXBsZW1lbnRlZABObyBtZXNzYWdlIG9mIGRlc2lyZWQgdHlwZQBJZGVudGlmaWVyIHJlbW92ZWQARGV2aWNlIG5vdCBhIHN0cmVhbQBObyBkYXRhIGF2YWlsYWJsZQBEZXZpY2UgdGltZW91dABPdXQgb2Ygc3RyZWFtcyByZXNvdXJjZXMATGluayBoYXMgYmVlbiBzZXZlcmVkAFByb3RvY29sIGVycm9yAEJhZCBtZXNzYWdlAEZpbGUgZGVzY3JpcHRvciBpbiBiYWQgc3RhdGUATm90IGEgc29ja2V0AERlc3RpbmF0aW9uIGFkZHJlc3MgcmVxdWlyZWQATWVzc2FnZSB0b28gbGFyZ2UAUHJvdG9jb2wgd3JvbmcgdHlwZSBmb3Igc29ja2V0AFByb3RvY29sIG5vdCBhdmFpbGFibGUAUHJvdG9jb2wgbm90IHN1cHBvcnRlZABTb2NrZXQgdHlwZSBub3Qgc3VwcG9ydGVkAE5vdCBzdXBwb3J0ZWQAUHJvdG9jb2wgZmFtaWx5IG5vdCBzdXBwb3J0ZWQAQWRkcmVzcyBmYW1pbHkgbm90IHN1cHBvcnRlZCBieSBwcm90b2NvbABBZGRyZXNzIG5vdCBhdmFpbGFibGUATmV0d29yayBpcyBkb3duAE5ldHdvcmsgdW5yZWFjaGFibGUAQ29ubmVjdGlvbiByZXNldCBieSBuZXR3b3JrAENvbm5lY3Rpb24gYWJvcnRlZABObyBidWZmZXIgc3BhY2UgYXZhaWxhYmxlAFNvY2tldCBpcyBjb25uZWN0ZWQAU29ja2V0IG5vdCBjb25uZWN0ZWQAQ2Fubm90IHNlbmQgYWZ0ZXIgc29ja2V0IHNodXRkb3duAE9wZXJhdGlvbiBhbHJlYWR5IGluIHByb2dyZXNzAE9wZXJhdGlvbiBpbiBwcm9ncmVzcwBTdGFsZSBmaWxlIGhhbmRsZQBSZW1vdGUgSS9PIGVycm9yAFF1b3RhIGV4Y2VlZGVkAE5vIG1lZGl1bSBmb3VuZABXcm9uZyBtZWRpdW0gdHlwZQBObyBlcnJvciBpbmZvcm1hdGlvbgBBkJcBC1JQUFAACgAAAAsAAAAMAAAADQAAAA4AAAAPAAAAEAAAABEAAAASAAAACwAAAAwAAAANAAAADgAAAA8AAAAQAAAAEQAAAAEAAAAIAAAAlEsAALRLAEGQmQELAgxQAEHImQELCR8AAADkTAAAAwBB5JkBC4wBLfRRWM+MscBG9rXLKTEDxwRbcDC0Xf0geH+LmthZKVBoSImrp1YDbP+3zYg/1He0K6WjcPG65Kj8QYP92W/hinovLXSWBx8NCV4Ddixw90ClLKdvV0GoqnTfoFhkA0rHxDxTrq9fGAQVseNtKIarDKS/Q/DpUIE5VxZSN/////////////////////8=";
  9297. if (!isDataURI(wasmBinaryFile)) {
  9298. wasmBinaryFile = locateFile(wasmBinaryFile);
  9299. }
  9300. function getBinary(file) {
  9301. try {
  9302. if (file == wasmBinaryFile && wasmBinary) {
  9303. return new Uint8Array(wasmBinary);
  9304. }
  9305. var binary = tryParseAsDataURI(file);
  9306. if (binary) {
  9307. return binary;
  9308. }
  9309. if (readBinary) {
  9310. return readBinary(file);
  9311. } else {
  9312. throw "sync fetching of the wasm failed: you can preload it to Module['wasmBinary'] manually, or emcc.py will do that for you when generating HTML (but not JS)";
  9313. }
  9314. } catch (err2) {
  9315. abort(err2);
  9316. }
  9317. }
  9318. function instantiateSync(file, info) {
  9319. var instance;
  9320. var module2;
  9321. var binary;
  9322. try {
  9323. binary = getBinary(file);
  9324. module2 = new WebAssembly.Module(binary);
  9325. instance = new WebAssembly.Instance(module2, info);
  9326. } catch (e) {
  9327. var str = e.toString();
  9328. err("failed to compile wasm module: " + str);
  9329. if (str.includes("imported Memory") || str.includes("memory import")) {
  9330. err(
  9331. "Memory size incompatibility issues may be due to changing INITIAL_MEMORY at runtime to something too large. Use ALLOW_MEMORY_GROWTH to allow any size memory (and also make sure not to set INITIAL_MEMORY at runtime to something smaller than it was at compile time)."
  9332. );
  9333. }
  9334. throw e;
  9335. }
  9336. return [instance, module2];
  9337. }
  9338. function createWasm() {
  9339. var info = { a: asmLibraryArg };
  9340. function receiveInstance(instance, module2) {
  9341. var exports3 = instance.exports;
  9342. Module["asm"] = exports3;
  9343. wasmMemory = Module["asm"]["u"];
  9344. updateGlobalBufferAndViews(wasmMemory.buffer);
  9345. wasmTable = Module["asm"]["pa"];
  9346. addOnInit(Module["asm"]["v"]);
  9347. removeRunDependency();
  9348. }
  9349. addRunDependency();
  9350. if (Module["instantiateWasm"]) {
  9351. try {
  9352. var exports2 = Module["instantiateWasm"](info, receiveInstance);
  9353. return exports2;
  9354. } catch (e) {
  9355. err("Module.instantiateWasm callback failed with error: " + e);
  9356. return false;
  9357. }
  9358. }
  9359. var result = instantiateSync(wasmBinaryFile, info);
  9360. receiveInstance(result[0]);
  9361. return Module["asm"];
  9362. }
  9363. var tempDouble;
  9364. var tempI64;
  9365. function callRuntimeCallbacks(callbacks) {
  9366. while (callbacks.length > 0) {
  9367. var callback = callbacks.shift();
  9368. if (typeof callback == "function") {
  9369. callback(Module);
  9370. continue;
  9371. }
  9372. var func = callback.func;
  9373. if (typeof func === "number") {
  9374. if (callback.arg === void 0) {
  9375. wasmTable.get(func)();
  9376. } else {
  9377. wasmTable.get(func)(callback.arg);
  9378. }
  9379. } else {
  9380. func(callback.arg === void 0 ? null : callback.arg);
  9381. }
  9382. }
  9383. }
  9384. function _gmtime_r(time, tmPtr) {
  9385. var date = new Date(HEAP32[time >> 2] * 1e3);
  9386. HEAP32[tmPtr >> 2] = date.getUTCSeconds();
  9387. HEAP32[tmPtr + 4 >> 2] = date.getUTCMinutes();
  9388. HEAP32[tmPtr + 8 >> 2] = date.getUTCHours();
  9389. HEAP32[tmPtr + 12 >> 2] = date.getUTCDate();
  9390. HEAP32[tmPtr + 16 >> 2] = date.getUTCMonth();
  9391. HEAP32[tmPtr + 20 >> 2] = date.getUTCFullYear() - 1900;
  9392. HEAP32[tmPtr + 24 >> 2] = date.getUTCDay();
  9393. HEAP32[tmPtr + 36 >> 2] = 0;
  9394. HEAP32[tmPtr + 32 >> 2] = 0;
  9395. var start = Date.UTC(date.getUTCFullYear(), 0, 1, 0, 0, 0, 0);
  9396. var yday = (date.getTime() - start) / (1e3 * 60 * 60 * 24) | 0;
  9397. HEAP32[tmPtr + 28 >> 2] = yday;
  9398. if (!_gmtime_r.GMTString)
  9399. _gmtime_r.GMTString = allocateUTF8("GMT");
  9400. HEAP32[tmPtr + 40 >> 2] = _gmtime_r.GMTString;
  9401. return tmPtr;
  9402. }
  9403. function ___gmtime_r(a0, a1) {
  9404. return _gmtime_r(a0, a1);
  9405. }
  9406. var PATH = {
  9407. splitPath: function(filename) {
  9408. var splitPathRe = /^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;
  9409. return splitPathRe.exec(filename).slice(1);
  9410. },
  9411. normalizeArray: function(parts, allowAboveRoot) {
  9412. var up = 0;
  9413. for (var i = parts.length - 1; i >= 0; i--) {
  9414. var last = parts[i];
  9415. if (last === ".") {
  9416. parts.splice(i, 1);
  9417. } else if (last === "..") {
  9418. parts.splice(i, 1);
  9419. up++;
  9420. } else if (up) {
  9421. parts.splice(i, 1);
  9422. up--;
  9423. }
  9424. }
  9425. if (allowAboveRoot) {
  9426. for (; up; up--) {
  9427. parts.unshift("..");
  9428. }
  9429. }
  9430. return parts;
  9431. },
  9432. normalize: function(path) {
  9433. var isAbsolute = path.charAt(0) === "/", trailingSlash = path.substr(-1) === "/";
  9434. path = PATH.normalizeArray(
  9435. path.split("/").filter(function(p) {
  9436. return !!p;
  9437. }),
  9438. !isAbsolute
  9439. ).join("/");
  9440. if (!path && !isAbsolute) {
  9441. path = ".";
  9442. }
  9443. if (path && trailingSlash) {
  9444. path += "/";
  9445. }
  9446. return (isAbsolute ? "/" : "") + path;
  9447. },
  9448. dirname: function(path) {
  9449. var result = PATH.splitPath(path), root = result[0], dir = result[1];
  9450. if (!root && !dir) {
  9451. return ".";
  9452. }
  9453. if (dir) {
  9454. dir = dir.substr(0, dir.length - 1);
  9455. }
  9456. return root + dir;
  9457. },
  9458. basename: function(path) {
  9459. if (path === "/")
  9460. return "/";
  9461. path = PATH.normalize(path);
  9462. path = path.replace(/\/$/, "");
  9463. var lastSlash = path.lastIndexOf("/");
  9464. if (lastSlash === -1)
  9465. return path;
  9466. return path.substr(lastSlash + 1);
  9467. },
  9468. extname: function(path) {
  9469. return PATH.splitPath(path)[3];
  9470. },
  9471. join: function() {
  9472. var paths = Array.prototype.slice.call(arguments, 0);
  9473. return PATH.normalize(paths.join("/"));
  9474. },
  9475. join2: function(l, r) {
  9476. return PATH.normalize(l + "/" + r);
  9477. }
  9478. };
  9479. function getRandomDevice() {
  9480. {
  9481. try {
  9482. var crypto_module = require("crypto");
  9483. return function() {
  9484. return crypto_module["randomBytes"](1)[0];
  9485. };
  9486. } catch (e) {
  9487. }
  9488. }
  9489. return function() {
  9490. abort("randomDevice");
  9491. };
  9492. }
  9493. var PATH_FS = {
  9494. resolve: function() {
  9495. var resolvedPath = "", resolvedAbsolute = false;
  9496. for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {
  9497. var path = i >= 0 ? arguments[i] : FS.cwd();
  9498. if (typeof path !== "string") {
  9499. throw new TypeError("Arguments to path.resolve must be strings");
  9500. } else if (!path) {
  9501. return "";
  9502. }
  9503. resolvedPath = path + "/" + resolvedPath;
  9504. resolvedAbsolute = path.charAt(0) === "/";
  9505. }
  9506. resolvedPath = PATH.normalizeArray(
  9507. resolvedPath.split("/").filter(function(p) {
  9508. return !!p;
  9509. }),
  9510. !resolvedAbsolute
  9511. ).join("/");
  9512. return (resolvedAbsolute ? "/" : "") + resolvedPath || ".";
  9513. },
  9514. relative: function(from, to) {
  9515. from = PATH_FS.resolve(from).substr(1);
  9516. to = PATH_FS.resolve(to).substr(1);
  9517. function trim(arr) {
  9518. var start = 0;
  9519. for (; start < arr.length; start++) {
  9520. if (arr[start] !== "")
  9521. break;
  9522. }
  9523. var end = arr.length - 1;
  9524. for (; end >= 0; end--) {
  9525. if (arr[end] !== "")
  9526. break;
  9527. }
  9528. if (start > end)
  9529. return [];
  9530. return arr.slice(start, end - start + 1);
  9531. }
  9532. var fromParts = trim(from.split("/"));
  9533. var toParts = trim(to.split("/"));
  9534. var length = Math.min(fromParts.length, toParts.length);
  9535. var samePartsLength = length;
  9536. for (var i = 0; i < length; i++) {
  9537. if (fromParts[i] !== toParts[i]) {
  9538. samePartsLength = i;
  9539. break;
  9540. }
  9541. }
  9542. var outputParts = [];
  9543. for (var i = samePartsLength; i < fromParts.length; i++) {
  9544. outputParts.push("..");
  9545. }
  9546. outputParts = outputParts.concat(toParts.slice(samePartsLength));
  9547. return outputParts.join("/");
  9548. }
  9549. };
  9550. var TTY = {
  9551. ttys: [],
  9552. init: function() {
  9553. },
  9554. shutdown: function() {
  9555. },
  9556. register: function(dev, ops) {
  9557. TTY.ttys[dev] = { input: [], output: [], ops };
  9558. FS.registerDevice(dev, TTY.stream_ops);
  9559. },
  9560. stream_ops: {
  9561. open: function(stream) {
  9562. var tty = TTY.ttys[stream.node.rdev];
  9563. if (!tty) {
  9564. throw new FS.ErrnoError(43);
  9565. }
  9566. stream.tty = tty;
  9567. stream.seekable = false;
  9568. },
  9569. close: function(stream) {
  9570. stream.tty.ops.flush(stream.tty);
  9571. },
  9572. flush: function(stream) {
  9573. stream.tty.ops.flush(stream.tty);
  9574. },
  9575. read: function(stream, buffer2, offset, length, pos) {
  9576. if (!stream.tty || !stream.tty.ops.get_char) {
  9577. throw new FS.ErrnoError(60);
  9578. }
  9579. var bytesRead = 0;
  9580. for (var i = 0; i < length; i++) {
  9581. var result;
  9582. try {
  9583. result = stream.tty.ops.get_char(stream.tty);
  9584. } catch (e) {
  9585. throw new FS.ErrnoError(29);
  9586. }
  9587. if (result === void 0 && bytesRead === 0) {
  9588. throw new FS.ErrnoError(6);
  9589. }
  9590. if (result === null || result === void 0)
  9591. break;
  9592. bytesRead++;
  9593. buffer2[offset + i] = result;
  9594. }
  9595. if (bytesRead) {
  9596. stream.node.timestamp = Date.now();
  9597. }
  9598. return bytesRead;
  9599. },
  9600. write: function(stream, buffer2, offset, length, pos) {
  9601. if (!stream.tty || !stream.tty.ops.put_char) {
  9602. throw new FS.ErrnoError(60);
  9603. }
  9604. try {
  9605. for (var i = 0; i < length; i++) {
  9606. stream.tty.ops.put_char(stream.tty, buffer2[offset + i]);
  9607. }
  9608. } catch (e) {
  9609. throw new FS.ErrnoError(29);
  9610. }
  9611. if (length) {
  9612. stream.node.timestamp = Date.now();
  9613. }
  9614. return i;
  9615. }
  9616. },
  9617. default_tty_ops: {
  9618. get_char: function(tty) {
  9619. if (!tty.input.length) {
  9620. var result = null;
  9621. {
  9622. var BUFSIZE = 256;
  9623. var buf = Buffer.alloc ? Buffer.alloc(BUFSIZE) : new Buffer(BUFSIZE);
  9624. var bytesRead = 0;
  9625. try {
  9626. bytesRead = nodeFS.readSync(
  9627. process.stdin.fd,
  9628. buf,
  9629. 0,
  9630. BUFSIZE,
  9631. null
  9632. );
  9633. } catch (e) {
  9634. if (e.toString().includes("EOF"))
  9635. bytesRead = 0;
  9636. else
  9637. throw e;
  9638. }
  9639. if (bytesRead > 0) {
  9640. result = buf.slice(0, bytesRead).toString("utf-8");
  9641. } else {
  9642. result = null;
  9643. }
  9644. }
  9645. if (!result) {
  9646. return null;
  9647. }
  9648. tty.input = intArrayFromString(result, true);
  9649. }
  9650. return tty.input.shift();
  9651. },
  9652. put_char: function(tty, val) {
  9653. if (val === null || val === 10) {
  9654. out(UTF8ArrayToString(tty.output, 0));
  9655. tty.output = [];
  9656. } else {
  9657. if (val != 0)
  9658. tty.output.push(val);
  9659. }
  9660. },
  9661. flush: function(tty) {
  9662. if (tty.output && tty.output.length > 0) {
  9663. out(UTF8ArrayToString(tty.output, 0));
  9664. tty.output = [];
  9665. }
  9666. }
  9667. },
  9668. default_tty1_ops: {
  9669. put_char: function(tty, val) {
  9670. if (val === null || val === 10) {
  9671. err(UTF8ArrayToString(tty.output, 0));
  9672. tty.output = [];
  9673. } else {
  9674. if (val != 0)
  9675. tty.output.push(val);
  9676. }
  9677. },
  9678. flush: function(tty) {
  9679. if (tty.output && tty.output.length > 0) {
  9680. err(UTF8ArrayToString(tty.output, 0));
  9681. tty.output = [];
  9682. }
  9683. }
  9684. }
  9685. };
  9686. function mmapAlloc(size) {
  9687. var alignedSize = alignMemory(size, 65536);
  9688. var ptr = _malloc(alignedSize);
  9689. while (size < alignedSize)
  9690. HEAP8[ptr + size++] = 0;
  9691. return ptr;
  9692. }
  9693. var MEMFS = {
  9694. ops_table: null,
  9695. mount: function(mount) {
  9696. return MEMFS.createNode(null, "/", 16384 | 511, 0);
  9697. },
  9698. createNode: function(parent, name, mode, dev) {
  9699. if (FS.isBlkdev(mode) || FS.isFIFO(mode)) {
  9700. throw new FS.ErrnoError(63);
  9701. }
  9702. if (!MEMFS.ops_table) {
  9703. MEMFS.ops_table = {
  9704. dir: {
  9705. node: {
  9706. getattr: MEMFS.node_ops.getattr,
  9707. setattr: MEMFS.node_ops.setattr,
  9708. lookup: MEMFS.node_ops.lookup,
  9709. mknod: MEMFS.node_ops.mknod,
  9710. rename: MEMFS.node_ops.rename,
  9711. unlink: MEMFS.node_ops.unlink,
  9712. rmdir: MEMFS.node_ops.rmdir,
  9713. readdir: MEMFS.node_ops.readdir,
  9714. symlink: MEMFS.node_ops.symlink
  9715. },
  9716. stream: { llseek: MEMFS.stream_ops.llseek }
  9717. },
  9718. file: {
  9719. node: {
  9720. getattr: MEMFS.node_ops.getattr,
  9721. setattr: MEMFS.node_ops.setattr
  9722. },
  9723. stream: {
  9724. llseek: MEMFS.stream_ops.llseek,
  9725. read: MEMFS.stream_ops.read,
  9726. write: MEMFS.stream_ops.write,
  9727. allocate: MEMFS.stream_ops.allocate,
  9728. mmap: MEMFS.stream_ops.mmap,
  9729. msync: MEMFS.stream_ops.msync
  9730. }
  9731. },
  9732. link: {
  9733. node: {
  9734. getattr: MEMFS.node_ops.getattr,
  9735. setattr: MEMFS.node_ops.setattr,
  9736. readlink: MEMFS.node_ops.readlink
  9737. },
  9738. stream: {}
  9739. },
  9740. chrdev: {
  9741. node: {
  9742. getattr: MEMFS.node_ops.getattr,
  9743. setattr: MEMFS.node_ops.setattr
  9744. },
  9745. stream: FS.chrdev_stream_ops
  9746. }
  9747. };
  9748. }
  9749. var node = FS.createNode(parent, name, mode, dev);
  9750. if (FS.isDir(node.mode)) {
  9751. node.node_ops = MEMFS.ops_table.dir.node;
  9752. node.stream_ops = MEMFS.ops_table.dir.stream;
  9753. node.contents = {};
  9754. } else if (FS.isFile(node.mode)) {
  9755. node.node_ops = MEMFS.ops_table.file.node;
  9756. node.stream_ops = MEMFS.ops_table.file.stream;
  9757. node.usedBytes = 0;
  9758. node.contents = null;
  9759. } else if (FS.isLink(node.mode)) {
  9760. node.node_ops = MEMFS.ops_table.link.node;
  9761. node.stream_ops = MEMFS.ops_table.link.stream;
  9762. } else if (FS.isChrdev(node.mode)) {
  9763. node.node_ops = MEMFS.ops_table.chrdev.node;
  9764. node.stream_ops = MEMFS.ops_table.chrdev.stream;
  9765. }
  9766. node.timestamp = Date.now();
  9767. if (parent) {
  9768. parent.contents[name] = node;
  9769. parent.timestamp = node.timestamp;
  9770. }
  9771. return node;
  9772. },
  9773. getFileDataAsTypedArray: function(node) {
  9774. if (!node.contents)
  9775. return new Uint8Array(0);
  9776. if (node.contents.subarray)
  9777. return node.contents.subarray(0, node.usedBytes);
  9778. return new Uint8Array(node.contents);
  9779. },
  9780. expandFileStorage: function(node, newCapacity) {
  9781. var prevCapacity = node.contents ? node.contents.length : 0;
  9782. if (prevCapacity >= newCapacity)
  9783. return;
  9784. var CAPACITY_DOUBLING_MAX = 1024 * 1024;
  9785. newCapacity = Math.max(
  9786. newCapacity,
  9787. prevCapacity * (prevCapacity < CAPACITY_DOUBLING_MAX ? 2 : 1.125) >>> 0
  9788. );
  9789. if (prevCapacity != 0)
  9790. newCapacity = Math.max(newCapacity, 256);
  9791. var oldContents = node.contents;
  9792. node.contents = new Uint8Array(newCapacity);
  9793. if (node.usedBytes > 0)
  9794. node.contents.set(oldContents.subarray(0, node.usedBytes), 0);
  9795. },
  9796. resizeFileStorage: function(node, newSize) {
  9797. if (node.usedBytes == newSize)
  9798. return;
  9799. if (newSize == 0) {
  9800. node.contents = null;
  9801. node.usedBytes = 0;
  9802. } else {
  9803. var oldContents = node.contents;
  9804. node.contents = new Uint8Array(newSize);
  9805. if (oldContents) {
  9806. node.contents.set(
  9807. oldContents.subarray(0, Math.min(newSize, node.usedBytes))
  9808. );
  9809. }
  9810. node.usedBytes = newSize;
  9811. }
  9812. },
  9813. node_ops: {
  9814. getattr: function(node) {
  9815. var attr = {};
  9816. attr.dev = FS.isChrdev(node.mode) ? node.id : 1;
  9817. attr.ino = node.id;
  9818. attr.mode = node.mode;
  9819. attr.nlink = 1;
  9820. attr.uid = 0;
  9821. attr.gid = 0;
  9822. attr.rdev = node.rdev;
  9823. if (FS.isDir(node.mode)) {
  9824. attr.size = 4096;
  9825. } else if (FS.isFile(node.mode)) {
  9826. attr.size = node.usedBytes;
  9827. } else if (FS.isLink(node.mode)) {
  9828. attr.size = node.link.length;
  9829. } else {
  9830. attr.size = 0;
  9831. }
  9832. attr.atime = new Date(node.timestamp);
  9833. attr.mtime = new Date(node.timestamp);
  9834. attr.ctime = new Date(node.timestamp);
  9835. attr.blksize = 4096;
  9836. attr.blocks = Math.ceil(attr.size / attr.blksize);
  9837. return attr;
  9838. },
  9839. setattr: function(node, attr) {
  9840. if (attr.mode !== void 0) {
  9841. node.mode = attr.mode;
  9842. }
  9843. if (attr.timestamp !== void 0) {
  9844. node.timestamp = attr.timestamp;
  9845. }
  9846. if (attr.size !== void 0) {
  9847. MEMFS.resizeFileStorage(node, attr.size);
  9848. }
  9849. },
  9850. lookup: function(parent, name) {
  9851. throw FS.genericErrors[44];
  9852. },
  9853. mknod: function(parent, name, mode, dev) {
  9854. return MEMFS.createNode(parent, name, mode, dev);
  9855. },
  9856. rename: function(old_node, new_dir, new_name) {
  9857. if (FS.isDir(old_node.mode)) {
  9858. var new_node;
  9859. try {
  9860. new_node = FS.lookupNode(new_dir, new_name);
  9861. } catch (e) {
  9862. }
  9863. if (new_node) {
  9864. for (var i in new_node.contents) {
  9865. throw new FS.ErrnoError(55);
  9866. }
  9867. }
  9868. }
  9869. delete old_node.parent.contents[old_node.name];
  9870. old_node.parent.timestamp = Date.now();
  9871. old_node.name = new_name;
  9872. new_dir.contents[new_name] = old_node;
  9873. new_dir.timestamp = old_node.parent.timestamp;
  9874. old_node.parent = new_dir;
  9875. },
  9876. unlink: function(parent, name) {
  9877. delete parent.contents[name];
  9878. parent.timestamp = Date.now();
  9879. },
  9880. rmdir: function(parent, name) {
  9881. var node = FS.lookupNode(parent, name);
  9882. for (var i in node.contents) {
  9883. throw new FS.ErrnoError(55);
  9884. }
  9885. delete parent.contents[name];
  9886. parent.timestamp = Date.now();
  9887. },
  9888. readdir: function(node) {
  9889. var entries = [".", ".."];
  9890. for (var key2 in node.contents) {
  9891. if (!node.contents.hasOwnProperty(key2)) {
  9892. continue;
  9893. }
  9894. entries.push(key2);
  9895. }
  9896. return entries;
  9897. },
  9898. symlink: function(parent, newname, oldpath) {
  9899. var node = MEMFS.createNode(parent, newname, 511 | 40960, 0);
  9900. node.link = oldpath;
  9901. return node;
  9902. },
  9903. readlink: function(node) {
  9904. if (!FS.isLink(node.mode)) {
  9905. throw new FS.ErrnoError(28);
  9906. }
  9907. return node.link;
  9908. }
  9909. },
  9910. stream_ops: {
  9911. read: function(stream, buffer2, offset, length, position) {
  9912. var contents = stream.node.contents;
  9913. if (position >= stream.node.usedBytes)
  9914. return 0;
  9915. var size = Math.min(stream.node.usedBytes - position, length);
  9916. if (size > 8 && contents.subarray) {
  9917. buffer2.set(contents.subarray(position, position + size), offset);
  9918. } else {
  9919. for (var i = 0; i < size; i++)
  9920. buffer2[offset + i] = contents[position + i];
  9921. }
  9922. return size;
  9923. },
  9924. write: function(stream, buffer2, offset, length, position, canOwn) {
  9925. if (buffer2.buffer === HEAP8.buffer) {
  9926. canOwn = false;
  9927. }
  9928. if (!length)
  9929. return 0;
  9930. var node = stream.node;
  9931. node.timestamp = Date.now();
  9932. if (buffer2.subarray && (!node.contents || node.contents.subarray)) {
  9933. if (canOwn) {
  9934. node.contents = buffer2.subarray(offset, offset + length);
  9935. node.usedBytes = length;
  9936. return length;
  9937. } else if (node.usedBytes === 0 && position === 0) {
  9938. node.contents = buffer2.slice(offset, offset + length);
  9939. node.usedBytes = length;
  9940. return length;
  9941. } else if (position + length <= node.usedBytes) {
  9942. node.contents.set(
  9943. buffer2.subarray(offset, offset + length),
  9944. position
  9945. );
  9946. return length;
  9947. }
  9948. }
  9949. MEMFS.expandFileStorage(node, position + length);
  9950. if (node.contents.subarray && buffer2.subarray) {
  9951. node.contents.set(
  9952. buffer2.subarray(offset, offset + length),
  9953. position
  9954. );
  9955. } else {
  9956. for (var i = 0; i < length; i++) {
  9957. node.contents[position + i] = buffer2[offset + i];
  9958. }
  9959. }
  9960. node.usedBytes = Math.max(node.usedBytes, position + length);
  9961. return length;
  9962. },
  9963. llseek: function(stream, offset, whence) {
  9964. var position = offset;
  9965. if (whence === 1) {
  9966. position += stream.position;
  9967. } else if (whence === 2) {
  9968. if (FS.isFile(stream.node.mode)) {
  9969. position += stream.node.usedBytes;
  9970. }
  9971. }
  9972. if (position < 0) {
  9973. throw new FS.ErrnoError(28);
  9974. }
  9975. return position;
  9976. },
  9977. allocate: function(stream, offset, length) {
  9978. MEMFS.expandFileStorage(stream.node, offset + length);
  9979. stream.node.usedBytes = Math.max(
  9980. stream.node.usedBytes,
  9981. offset + length
  9982. );
  9983. },
  9984. mmap: function(stream, address, length, position, prot, flags) {
  9985. if (address !== 0) {
  9986. throw new FS.ErrnoError(28);
  9987. }
  9988. if (!FS.isFile(stream.node.mode)) {
  9989. throw new FS.ErrnoError(43);
  9990. }
  9991. var ptr;
  9992. var allocated;
  9993. var contents = stream.node.contents;
  9994. if (!(flags & 2) && contents.buffer === buffer) {
  9995. allocated = false;
  9996. ptr = contents.byteOffset;
  9997. } else {
  9998. if (position > 0 || position + length < contents.length) {
  9999. if (contents.subarray) {
  10000. contents = contents.subarray(position, position + length);
  10001. } else {
  10002. contents = Array.prototype.slice.call(
  10003. contents,
  10004. position,
  10005. position + length
  10006. );
  10007. }
  10008. }
  10009. allocated = true;
  10010. ptr = mmapAlloc(length);
  10011. if (!ptr) {
  10012. throw new FS.ErrnoError(48);
  10013. }
  10014. HEAP8.set(contents, ptr);
  10015. }
  10016. return { ptr, allocated };
  10017. },
  10018. msync: function(stream, buffer2, offset, length, mmapFlags) {
  10019. if (!FS.isFile(stream.node.mode)) {
  10020. throw new FS.ErrnoError(43);
  10021. }
  10022. if (mmapFlags & 2) {
  10023. return 0;
  10024. }
  10025. MEMFS.stream_ops.write(
  10026. stream,
  10027. buffer2,
  10028. 0,
  10029. length,
  10030. offset,
  10031. false
  10032. );
  10033. return 0;
  10034. }
  10035. }
  10036. };
  10037. var ERRNO_CODES = {
  10038. EPERM: 63,
  10039. ENOENT: 44,
  10040. ESRCH: 71,
  10041. EINTR: 27,
  10042. EIO: 29,
  10043. ENXIO: 60,
  10044. E2BIG: 1,
  10045. ENOEXEC: 45,
  10046. EBADF: 8,
  10047. ECHILD: 12,
  10048. EAGAIN: 6,
  10049. EWOULDBLOCK: 6,
  10050. ENOMEM: 48,
  10051. EACCES: 2,
  10052. EFAULT: 21,
  10053. ENOTBLK: 105,
  10054. EBUSY: 10,
  10055. EEXIST: 20,
  10056. EXDEV: 75,
  10057. ENODEV: 43,
  10058. ENOTDIR: 54,
  10059. EISDIR: 31,
  10060. EINVAL: 28,
  10061. ENFILE: 41,
  10062. EMFILE: 33,
  10063. ENOTTY: 59,
  10064. ETXTBSY: 74,
  10065. EFBIG: 22,
  10066. ENOSPC: 51,
  10067. ESPIPE: 70,
  10068. EROFS: 69,
  10069. EMLINK: 34,
  10070. EPIPE: 64,
  10071. EDOM: 18,
  10072. ERANGE: 68,
  10073. ENOMSG: 49,
  10074. EIDRM: 24,
  10075. ECHRNG: 106,
  10076. EL2NSYNC: 156,
  10077. EL3HLT: 107,
  10078. EL3RST: 108,
  10079. ELNRNG: 109,
  10080. EUNATCH: 110,
  10081. ENOCSI: 111,
  10082. EL2HLT: 112,
  10083. EDEADLK: 16,
  10084. ENOLCK: 46,
  10085. EBADE: 113,
  10086. EBADR: 114,
  10087. EXFULL: 115,
  10088. ENOANO: 104,
  10089. EBADRQC: 103,
  10090. EBADSLT: 102,
  10091. EDEADLOCK: 16,
  10092. EBFONT: 101,
  10093. ENOSTR: 100,
  10094. ENODATA: 116,
  10095. ETIME: 117,
  10096. ENOSR: 118,
  10097. ENONET: 119,
  10098. ENOPKG: 120,
  10099. EREMOTE: 121,
  10100. ENOLINK: 47,
  10101. EADV: 122,
  10102. ESRMNT: 123,
  10103. ECOMM: 124,
  10104. EPROTO: 65,
  10105. EMULTIHOP: 36,
  10106. EDOTDOT: 125,
  10107. EBADMSG: 9,
  10108. ENOTUNIQ: 126,
  10109. EBADFD: 127,
  10110. EREMCHG: 128,
  10111. ELIBACC: 129,
  10112. ELIBBAD: 130,
  10113. ELIBSCN: 131,
  10114. ELIBMAX: 132,
  10115. ELIBEXEC: 133,
  10116. ENOSYS: 52,
  10117. ENOTEMPTY: 55,
  10118. ENAMETOOLONG: 37,
  10119. ELOOP: 32,
  10120. EOPNOTSUPP: 138,
  10121. EPFNOSUPPORT: 139,
  10122. ECONNRESET: 15,
  10123. ENOBUFS: 42,
  10124. EAFNOSUPPORT: 5,
  10125. EPROTOTYPE: 67,
  10126. ENOTSOCK: 57,
  10127. ENOPROTOOPT: 50,
  10128. ESHUTDOWN: 140,
  10129. ECONNREFUSED: 14,
  10130. EADDRINUSE: 3,
  10131. ECONNABORTED: 13,
  10132. ENETUNREACH: 40,
  10133. ENETDOWN: 38,
  10134. ETIMEDOUT: 73,
  10135. EHOSTDOWN: 142,
  10136. EHOSTUNREACH: 23,
  10137. EINPROGRESS: 26,
  10138. EALREADY: 7,
  10139. EDESTADDRREQ: 17,
  10140. EMSGSIZE: 35,
  10141. EPROTONOSUPPORT: 66,
  10142. ESOCKTNOSUPPORT: 137,
  10143. EADDRNOTAVAIL: 4,
  10144. ENETRESET: 39,
  10145. EISCONN: 30,
  10146. ENOTCONN: 53,
  10147. ETOOMANYREFS: 141,
  10148. EUSERS: 136,
  10149. EDQUOT: 19,
  10150. ESTALE: 72,
  10151. ENOTSUP: 138,
  10152. ENOMEDIUM: 148,
  10153. EILSEQ: 25,
  10154. EOVERFLOW: 61,
  10155. ECANCELED: 11,
  10156. ENOTRECOVERABLE: 56,
  10157. EOWNERDEAD: 62,
  10158. ESTRPIPE: 135
  10159. };
  10160. var NODEFS = {
  10161. isWindows: false,
  10162. staticInit: function() {
  10163. NODEFS.isWindows = !!process.platform.match(/^win/);
  10164. var flags = { fs: fs.constants };
  10165. if (flags["fs"]) {
  10166. flags = flags["fs"];
  10167. }
  10168. NODEFS.flagsForNodeMap = {
  10169. 1024: flags["O_APPEND"],
  10170. 64: flags["O_CREAT"],
  10171. 128: flags["O_EXCL"],
  10172. 256: flags["O_NOCTTY"],
  10173. 0: flags["O_RDONLY"],
  10174. 2: flags["O_RDWR"],
  10175. 4096: flags["O_SYNC"],
  10176. 512: flags["O_TRUNC"],
  10177. 1: flags["O_WRONLY"]
  10178. };
  10179. },
  10180. bufferFrom: function(arrayBuffer) {
  10181. return Buffer["alloc"] ? Buffer.from(arrayBuffer) : new Buffer(arrayBuffer);
  10182. },
  10183. convertNodeCode: function(e) {
  10184. var code = e.code;
  10185. return ERRNO_CODES[code];
  10186. },
  10187. mount: function(mount) {
  10188. return NODEFS.createNode(null, "/", NODEFS.getMode(mount.opts.root), 0);
  10189. },
  10190. createNode: function(parent, name, mode, dev) {
  10191. if (!FS.isDir(mode) && !FS.isFile(mode) && !FS.isLink(mode)) {
  10192. throw new FS.ErrnoError(28);
  10193. }
  10194. var node = FS.createNode(parent, name, mode);
  10195. node.node_ops = NODEFS.node_ops;
  10196. node.stream_ops = NODEFS.stream_ops;
  10197. return node;
  10198. },
  10199. getMode: function(path) {
  10200. var stat;
  10201. try {
  10202. stat = fs.lstatSync(path);
  10203. if (NODEFS.isWindows) {
  10204. stat.mode = stat.mode | (stat.mode & 292) >> 2;
  10205. }
  10206. } catch (e) {
  10207. if (!e.code)
  10208. throw e;
  10209. throw new FS.ErrnoError(NODEFS.convertNodeCode(e));
  10210. }
  10211. return stat.mode;
  10212. },
  10213. realPath: function(node) {
  10214. var parts = [];
  10215. while (node.parent !== node) {
  10216. parts.push(node.name);
  10217. node = node.parent;
  10218. }
  10219. parts.push(node.mount.opts.root);
  10220. parts.reverse();
  10221. return PATH.join.apply(null, parts);
  10222. },
  10223. flagsForNode: function(flags) {
  10224. flags &= ~2097152;
  10225. flags &= ~2048;
  10226. flags &= ~32768;
  10227. flags &= ~524288;
  10228. var newFlags = 0;
  10229. for (var k in NODEFS.flagsForNodeMap) {
  10230. if (flags & k) {
  10231. newFlags |= NODEFS.flagsForNodeMap[k];
  10232. flags ^= k;
  10233. }
  10234. }
  10235. if (!flags) {
  10236. return newFlags;
  10237. } else {
  10238. throw new FS.ErrnoError(28);
  10239. }
  10240. },
  10241. node_ops: {
  10242. getattr: function(node) {
  10243. var path = NODEFS.realPath(node);
  10244. var stat;
  10245. try {
  10246. stat = fs.lstatSync(path);
  10247. } catch (e) {
  10248. if (!e.code)
  10249. throw e;
  10250. throw new FS.ErrnoError(NODEFS.convertNodeCode(e));
  10251. }
  10252. if (NODEFS.isWindows && !stat.blksize) {
  10253. stat.blksize = 4096;
  10254. }
  10255. if (NODEFS.isWindows && !stat.blocks) {
  10256. stat.blocks = (stat.size + stat.blksize - 1) / stat.blksize | 0;
  10257. }
  10258. return {
  10259. dev: stat.dev,
  10260. ino: stat.ino,
  10261. mode: stat.mode,
  10262. nlink: stat.nlink,
  10263. uid: stat.uid,
  10264. gid: stat.gid,
  10265. rdev: stat.rdev,
  10266. size: stat.size,
  10267. atime: stat.atime,
  10268. mtime: stat.mtime,
  10269. ctime: stat.ctime,
  10270. blksize: stat.blksize,
  10271. blocks: stat.blocks
  10272. };
  10273. },
  10274. setattr: function(node, attr) {
  10275. var path = NODEFS.realPath(node);
  10276. try {
  10277. if (attr.mode !== void 0) {
  10278. fs.chmodSync(path, attr.mode);
  10279. node.mode = attr.mode;
  10280. }
  10281. if (attr.timestamp !== void 0) {
  10282. var date = new Date(attr.timestamp);
  10283. fs.utimesSync(path, date, date);
  10284. }
  10285. if (attr.size !== void 0) {
  10286. fs.truncateSync(path, attr.size);
  10287. }
  10288. } catch (e) {
  10289. if (!e.code)
  10290. throw e;
  10291. throw new FS.ErrnoError(NODEFS.convertNodeCode(e));
  10292. }
  10293. },
  10294. lookup: function(parent, name) {
  10295. var path = PATH.join2(NODEFS.realPath(parent), name);
  10296. var mode = NODEFS.getMode(path);
  10297. return NODEFS.createNode(parent, name, mode);
  10298. },
  10299. mknod: function(parent, name, mode, dev) {
  10300. var node = NODEFS.createNode(parent, name, mode, dev);
  10301. var path = NODEFS.realPath(node);
  10302. try {
  10303. if (FS.isDir(node.mode)) {
  10304. fs.mkdirSync(path, node.mode);
  10305. } else {
  10306. fs.writeFileSync(path, "", { mode: node.mode });
  10307. }
  10308. } catch (e) {
  10309. if (!e.code)
  10310. throw e;
  10311. throw new FS.ErrnoError(NODEFS.convertNodeCode(e));
  10312. }
  10313. return node;
  10314. },
  10315. rename: function(oldNode, newDir, newName) {
  10316. var oldPath = NODEFS.realPath(oldNode);
  10317. var newPath = PATH.join2(NODEFS.realPath(newDir), newName);
  10318. try {
  10319. fs.renameSync(oldPath, newPath);
  10320. } catch (e) {
  10321. if (!e.code)
  10322. throw e;
  10323. throw new FS.ErrnoError(NODEFS.convertNodeCode(e));
  10324. }
  10325. oldNode.name = newName;
  10326. },
  10327. unlink: function(parent, name) {
  10328. var path = PATH.join2(NODEFS.realPath(parent), name);
  10329. try {
  10330. fs.unlinkSync(path);
  10331. } catch (e) {
  10332. if (!e.code)
  10333. throw e;
  10334. throw new FS.ErrnoError(NODEFS.convertNodeCode(e));
  10335. }
  10336. },
  10337. rmdir: function(parent, name) {
  10338. var path = PATH.join2(NODEFS.realPath(parent), name);
  10339. try {
  10340. fs.rmdirSync(path);
  10341. } catch (e) {
  10342. if (!e.code)
  10343. throw e;
  10344. throw new FS.ErrnoError(NODEFS.convertNodeCode(e));
  10345. }
  10346. },
  10347. readdir: function(node) {
  10348. var path = NODEFS.realPath(node);
  10349. try {
  10350. return fs.readdirSync(path);
  10351. } catch (e) {
  10352. if (!e.code)
  10353. throw e;
  10354. throw new FS.ErrnoError(NODEFS.convertNodeCode(e));
  10355. }
  10356. },
  10357. symlink: function(parent, newName, oldPath) {
  10358. var newPath = PATH.join2(NODEFS.realPath(parent), newName);
  10359. try {
  10360. fs.symlinkSync(oldPath, newPath);
  10361. } catch (e) {
  10362. if (!e.code)
  10363. throw e;
  10364. throw new FS.ErrnoError(NODEFS.convertNodeCode(e));
  10365. }
  10366. },
  10367. readlink: function(node) {
  10368. var path = NODEFS.realPath(node);
  10369. try {
  10370. path = fs.readlinkSync(path);
  10371. path = NODEJS_PATH.relative(
  10372. NODEJS_PATH.resolve(node.mount.opts.root),
  10373. path
  10374. );
  10375. return path;
  10376. } catch (e) {
  10377. if (!e.code)
  10378. throw e;
  10379. throw new FS.ErrnoError(NODEFS.convertNodeCode(e));
  10380. }
  10381. }
  10382. },
  10383. stream_ops: {
  10384. open: function(stream) {
  10385. var path = NODEFS.realPath(stream.node);
  10386. try {
  10387. if (FS.isFile(stream.node.mode)) {
  10388. stream.nfd = fs.openSync(path, NODEFS.flagsForNode(stream.flags));
  10389. }
  10390. } catch (e) {
  10391. if (!e.code)
  10392. throw e;
  10393. throw new FS.ErrnoError(NODEFS.convertNodeCode(e));
  10394. }
  10395. },
  10396. close: function(stream) {
  10397. try {
  10398. if (FS.isFile(stream.node.mode) && stream.nfd) {
  10399. fs.closeSync(stream.nfd);
  10400. }
  10401. } catch (e) {
  10402. if (!e.code)
  10403. throw e;
  10404. throw new FS.ErrnoError(NODEFS.convertNodeCode(e));
  10405. }
  10406. },
  10407. read: function(stream, buffer2, offset, length, position) {
  10408. if (length === 0)
  10409. return 0;
  10410. try {
  10411. return fs.readSync(
  10412. stream.nfd,
  10413. NODEFS.bufferFrom(buffer2.buffer),
  10414. offset,
  10415. length,
  10416. position
  10417. );
  10418. } catch (e) {
  10419. throw new FS.ErrnoError(NODEFS.convertNodeCode(e));
  10420. }
  10421. },
  10422. write: function(stream, buffer2, offset, length, position) {
  10423. try {
  10424. return fs.writeSync(
  10425. stream.nfd,
  10426. NODEFS.bufferFrom(buffer2.buffer),
  10427. offset,
  10428. length,
  10429. position
  10430. );
  10431. } catch (e) {
  10432. throw new FS.ErrnoError(NODEFS.convertNodeCode(e));
  10433. }
  10434. },
  10435. llseek: function(stream, offset, whence) {
  10436. var position = offset;
  10437. if (whence === 1) {
  10438. position += stream.position;
  10439. } else if (whence === 2) {
  10440. if (FS.isFile(stream.node.mode)) {
  10441. try {
  10442. var stat = fs.fstatSync(stream.nfd);
  10443. position += stat.size;
  10444. } catch (e) {
  10445. throw new FS.ErrnoError(NODEFS.convertNodeCode(e));
  10446. }
  10447. }
  10448. }
  10449. if (position < 0) {
  10450. throw new FS.ErrnoError(28);
  10451. }
  10452. return position;
  10453. },
  10454. mmap: function(stream, address, length, position, prot, flags) {
  10455. if (address !== 0) {
  10456. throw new FS.ErrnoError(28);
  10457. }
  10458. if (!FS.isFile(stream.node.mode)) {
  10459. throw new FS.ErrnoError(43);
  10460. }
  10461. var ptr = mmapAlloc(length);
  10462. NODEFS.stream_ops.read(stream, HEAP8, ptr, length, position);
  10463. return { ptr, allocated: true };
  10464. },
  10465. msync: function(stream, buffer2, offset, length, mmapFlags) {
  10466. if (!FS.isFile(stream.node.mode)) {
  10467. throw new FS.ErrnoError(43);
  10468. }
  10469. if (mmapFlags & 2) {
  10470. return 0;
  10471. }
  10472. NODEFS.stream_ops.write(
  10473. stream,
  10474. buffer2,
  10475. 0,
  10476. length,
  10477. offset,
  10478. false
  10479. );
  10480. return 0;
  10481. }
  10482. }
  10483. };
  10484. var NODERAWFS = {
  10485. lookupPath: function(path) {
  10486. return { path, node: { mode: NODEFS.getMode(path) } };
  10487. },
  10488. createStandardStreams: function() {
  10489. FS.streams[0] = {
  10490. fd: 0,
  10491. nfd: 0,
  10492. position: 0,
  10493. path: "",
  10494. flags: 0,
  10495. tty: true,
  10496. seekable: false
  10497. };
  10498. for (var i = 1; i < 3; i++) {
  10499. FS.streams[i] = {
  10500. fd: i,
  10501. nfd: i,
  10502. position: 0,
  10503. path: "",
  10504. flags: 577,
  10505. tty: true,
  10506. seekable: false
  10507. };
  10508. }
  10509. },
  10510. cwd: function() {
  10511. return process.cwd();
  10512. },
  10513. chdir: function() {
  10514. process.chdir.apply(void 0, arguments);
  10515. },
  10516. mknod: function(path, mode) {
  10517. if (FS.isDir(path)) {
  10518. fs.mkdirSync(path, mode);
  10519. } else {
  10520. fs.writeFileSync(path, "", { mode });
  10521. }
  10522. },
  10523. mkdir: function() {
  10524. fs.mkdirSync.apply(void 0, arguments);
  10525. },
  10526. symlink: function() {
  10527. fs.symlinkSync.apply(void 0, arguments);
  10528. },
  10529. rename: function() {
  10530. fs.renameSync.apply(void 0, arguments);
  10531. },
  10532. rmdir: function() {
  10533. fs.rmdirSync.apply(void 0, arguments);
  10534. },
  10535. readdir: function() {
  10536. fs.readdirSync.apply(void 0, arguments);
  10537. },
  10538. unlink: function() {
  10539. fs.unlinkSync.apply(void 0, arguments);
  10540. },
  10541. readlink: function() {
  10542. return fs.readlinkSync.apply(void 0, arguments);
  10543. },
  10544. stat: function() {
  10545. return fs.statSync.apply(void 0, arguments);
  10546. },
  10547. lstat: function() {
  10548. return fs.lstatSync.apply(void 0, arguments);
  10549. },
  10550. chmod: function() {
  10551. fs.chmodSync.apply(void 0, arguments);
  10552. },
  10553. fchmod: function() {
  10554. fs.fchmodSync.apply(void 0, arguments);
  10555. },
  10556. chown: function() {
  10557. fs.chownSync.apply(void 0, arguments);
  10558. },
  10559. fchown: function() {
  10560. fs.fchownSync.apply(void 0, arguments);
  10561. },
  10562. truncate: function() {
  10563. fs.truncateSync.apply(void 0, arguments);
  10564. },
  10565. ftruncate: function(fd, len) {
  10566. if (len < 0) {
  10567. throw new FS.ErrnoError(28);
  10568. }
  10569. fs.ftruncateSync.apply(void 0, arguments);
  10570. },
  10571. utime: function() {
  10572. fs.utimesSync.apply(void 0, arguments);
  10573. },
  10574. open: function(path, flags, mode, suggestFD) {
  10575. if (typeof flags === "string") {
  10576. flags = VFS.modeStringToFlags(flags);
  10577. }
  10578. var nfd = fs.openSync(path, NODEFS.flagsForNode(flags), mode);
  10579. var fd = suggestFD != null ? suggestFD : FS.nextfd(nfd);
  10580. var stream = {
  10581. fd,
  10582. nfd,
  10583. position: 0,
  10584. path,
  10585. flags,
  10586. seekable: true
  10587. };
  10588. FS.streams[fd] = stream;
  10589. return stream;
  10590. },
  10591. close: function(stream) {
  10592. if (!stream.stream_ops) {
  10593. fs.closeSync(stream.nfd);
  10594. }
  10595. FS.closeStream(stream.fd);
  10596. },
  10597. llseek: function(stream, offset, whence) {
  10598. if (stream.stream_ops) {
  10599. return VFS.llseek(stream, offset, whence);
  10600. }
  10601. var position = offset;
  10602. if (whence === 1) {
  10603. position += stream.position;
  10604. } else if (whence === 2) {
  10605. position += fs.fstatSync(stream.nfd).size;
  10606. } else if (whence !== 0) {
  10607. throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
  10608. }
  10609. if (position < 0) {
  10610. throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
  10611. }
  10612. stream.position = position;
  10613. return position;
  10614. },
  10615. read: function(stream, buffer2, offset, length, position) {
  10616. if (stream.stream_ops) {
  10617. return VFS.read(stream, buffer2, offset, length, position);
  10618. }
  10619. var seeking = typeof position !== "undefined";
  10620. if (!seeking && stream.seekable)
  10621. position = stream.position;
  10622. var bytesRead = fs.readSync(
  10623. stream.nfd,
  10624. NODEFS.bufferFrom(buffer2.buffer),
  10625. offset,
  10626. length,
  10627. position
  10628. );
  10629. if (!seeking)
  10630. stream.position += bytesRead;
  10631. return bytesRead;
  10632. },
  10633. write: function(stream, buffer2, offset, length, position) {
  10634. if (stream.stream_ops) {
  10635. return VFS.write(stream, buffer2, offset, length, position);
  10636. }
  10637. if (stream.flags & +"1024") {
  10638. FS.llseek(stream, 0, +"2");
  10639. }
  10640. var seeking = typeof position !== "undefined";
  10641. if (!seeking && stream.seekable)
  10642. position = stream.position;
  10643. var bytesWritten = fs.writeSync(
  10644. stream.nfd,
  10645. NODEFS.bufferFrom(buffer2.buffer),
  10646. offset,
  10647. length,
  10648. position
  10649. );
  10650. if (!seeking)
  10651. stream.position += bytesWritten;
  10652. return bytesWritten;
  10653. },
  10654. allocate: function() {
  10655. throw new FS.ErrnoError(ERRNO_CODES.EOPNOTSUPP);
  10656. },
  10657. mmap: function(stream, address, length, position, prot, flags) {
  10658. if (stream.stream_ops) {
  10659. return VFS.mmap(stream, address, length, position, prot, flags);
  10660. }
  10661. if (address !== 0) {
  10662. throw new FS.ErrnoError(28);
  10663. }
  10664. var ptr = mmapAlloc(length);
  10665. FS.read(stream, HEAP8, ptr, length, position);
  10666. return { ptr, allocated: true };
  10667. },
  10668. msync: function(stream, buffer2, offset, length, mmapFlags) {
  10669. if (stream.stream_ops) {
  10670. return VFS.msync(stream, buffer2, offset, length, mmapFlags);
  10671. }
  10672. if (mmapFlags & 2) {
  10673. return 0;
  10674. }
  10675. FS.write(stream, buffer2, 0, length, offset);
  10676. return 0;
  10677. },
  10678. munmap: function() {
  10679. return 0;
  10680. },
  10681. ioctl: function() {
  10682. throw new FS.ErrnoError(ERRNO_CODES.ENOTTY);
  10683. }
  10684. };
  10685. var FS = {
  10686. root: null,
  10687. mounts: [],
  10688. devices: {},
  10689. streams: [],
  10690. nextInode: 1,
  10691. nameTable: null,
  10692. currentPath: "/",
  10693. initialized: false,
  10694. ignorePermissions: true,
  10695. trackingDelegate: {},
  10696. tracking: { openFlags: { READ: 1, WRITE: 2 } },
  10697. ErrnoError: null,
  10698. genericErrors: {},
  10699. filesystems: null,
  10700. syncFSRequests: 0,
  10701. lookupPath: function(path, opts) {
  10702. path = PATH_FS.resolve(FS.cwd(), path);
  10703. opts = opts || {};
  10704. if (!path)
  10705. return { path: "", node: null };
  10706. var defaults = { follow_mount: true, recurse_count: 0 };
  10707. for (var key2 in defaults) {
  10708. if (opts[key2] === void 0) {
  10709. opts[key2] = defaults[key2];
  10710. }
  10711. }
  10712. if (opts.recurse_count > 8) {
  10713. throw new FS.ErrnoError(32);
  10714. }
  10715. var parts = PATH.normalizeArray(
  10716. path.split("/").filter(function(p) {
  10717. return !!p;
  10718. }),
  10719. false
  10720. );
  10721. var current = FS.root;
  10722. var current_path = "/";
  10723. for (var i = 0; i < parts.length; i++) {
  10724. var islast = i === parts.length - 1;
  10725. if (islast && opts.parent) {
  10726. break;
  10727. }
  10728. current = FS.lookupNode(current, parts[i]);
  10729. current_path = PATH.join2(current_path, parts[i]);
  10730. if (FS.isMountpoint(current)) {
  10731. if (!islast || islast && opts.follow_mount) {
  10732. current = current.mounted.root;
  10733. }
  10734. }
  10735. if (!islast || opts.follow) {
  10736. var count = 0;
  10737. while (FS.isLink(current.mode)) {
  10738. var link = FS.readlink(current_path);
  10739. current_path = PATH_FS.resolve(PATH.dirname(current_path), link);
  10740. var lookup = FS.lookupPath(current_path, {
  10741. recurse_count: opts.recurse_count
  10742. });
  10743. current = lookup.node;
  10744. if (count++ > 40) {
  10745. throw new FS.ErrnoError(32);
  10746. }
  10747. }
  10748. }
  10749. }
  10750. return { path: current_path, node: current };
  10751. },
  10752. getPath: function(node) {
  10753. var path;
  10754. while (true) {
  10755. if (FS.isRoot(node)) {
  10756. var mount = node.mount.mountpoint;
  10757. if (!path)
  10758. return mount;
  10759. return mount[mount.length - 1] !== "/" ? mount + "/" + path : mount + path;
  10760. }
  10761. path = path ? node.name + "/" + path : node.name;
  10762. node = node.parent;
  10763. }
  10764. },
  10765. hashName: function(parentid, name) {
  10766. var hash = 0;
  10767. for (var i = 0; i < name.length; i++) {
  10768. hash = (hash << 5) - hash + name.charCodeAt(i) | 0;
  10769. }
  10770. return (parentid + hash >>> 0) % FS.nameTable.length;
  10771. },
  10772. hashAddNode: function(node) {
  10773. var hash = FS.hashName(node.parent.id, node.name);
  10774. node.name_next = FS.nameTable[hash];
  10775. FS.nameTable[hash] = node;
  10776. },
  10777. hashRemoveNode: function(node) {
  10778. var hash = FS.hashName(node.parent.id, node.name);
  10779. if (FS.nameTable[hash] === node) {
  10780. FS.nameTable[hash] = node.name_next;
  10781. } else {
  10782. var current = FS.nameTable[hash];
  10783. while (current) {
  10784. if (current.name_next === node) {
  10785. current.name_next = node.name_next;
  10786. break;
  10787. }
  10788. current = current.name_next;
  10789. }
  10790. }
  10791. },
  10792. lookupNode: function(parent, name) {
  10793. var errCode = FS.mayLookup(parent);
  10794. if (errCode) {
  10795. throw new FS.ErrnoError(errCode, parent);
  10796. }
  10797. var hash = FS.hashName(parent.id, name);
  10798. for (var node = FS.nameTable[hash]; node; node = node.name_next) {
  10799. var nodeName = node.name;
  10800. if (node.parent.id === parent.id && nodeName === name) {
  10801. return node;
  10802. }
  10803. }
  10804. return FS.lookup(parent, name);
  10805. },
  10806. createNode: function(parent, name, mode, rdev) {
  10807. var node = new FS.FSNode(parent, name, mode, rdev);
  10808. FS.hashAddNode(node);
  10809. return node;
  10810. },
  10811. destroyNode: function(node) {
  10812. FS.hashRemoveNode(node);
  10813. },
  10814. isRoot: function(node) {
  10815. return node === node.parent;
  10816. },
  10817. isMountpoint: function(node) {
  10818. return !!node.mounted;
  10819. },
  10820. isFile: function(mode) {
  10821. return (mode & 61440) === 32768;
  10822. },
  10823. isDir: function(mode) {
  10824. return (mode & 61440) === 16384;
  10825. },
  10826. isLink: function(mode) {
  10827. return (mode & 61440) === 40960;
  10828. },
  10829. isChrdev: function(mode) {
  10830. return (mode & 61440) === 8192;
  10831. },
  10832. isBlkdev: function(mode) {
  10833. return (mode & 61440) === 24576;
  10834. },
  10835. isFIFO: function(mode) {
  10836. return (mode & 61440) === 4096;
  10837. },
  10838. isSocket: function(mode) {
  10839. return (mode & 49152) === 49152;
  10840. },
  10841. flagModes: { r: 0, "r+": 2, w: 577, "w+": 578, a: 1089, "a+": 1090 },
  10842. modeStringToFlags: function(str) {
  10843. var flags = FS.flagModes[str];
  10844. if (typeof flags === "undefined") {
  10845. throw new Error("Unknown file open mode: " + str);
  10846. }
  10847. return flags;
  10848. },
  10849. flagsToPermissionString: function(flag) {
  10850. var perms = ["r", "w", "rw"][flag & 3];
  10851. if (flag & 512) {
  10852. perms += "w";
  10853. }
  10854. return perms;
  10855. },
  10856. nodePermissions: function(node, perms) {
  10857. if (FS.ignorePermissions) {
  10858. return 0;
  10859. }
  10860. if (perms.includes("r") && !(node.mode & 292)) {
  10861. return 2;
  10862. } else if (perms.includes("w") && !(node.mode & 146)) {
  10863. return 2;
  10864. } else if (perms.includes("x") && !(node.mode & 73)) {
  10865. return 2;
  10866. }
  10867. return 0;
  10868. },
  10869. mayLookup: function(dir) {
  10870. var errCode = FS.nodePermissions(dir, "x");
  10871. if (errCode)
  10872. return errCode;
  10873. if (!dir.node_ops.lookup)
  10874. return 2;
  10875. return 0;
  10876. },
  10877. mayCreate: function(dir, name) {
  10878. try {
  10879. var node = FS.lookupNode(dir, name);
  10880. return 20;
  10881. } catch (e) {
  10882. }
  10883. return FS.nodePermissions(dir, "wx");
  10884. },
  10885. mayDelete: function(dir, name, isdir) {
  10886. var node;
  10887. try {
  10888. node = FS.lookupNode(dir, name);
  10889. } catch (e) {
  10890. return e.errno;
  10891. }
  10892. var errCode = FS.nodePermissions(dir, "wx");
  10893. if (errCode) {
  10894. return errCode;
  10895. }
  10896. if (isdir) {
  10897. if (!FS.isDir(node.mode)) {
  10898. return 54;
  10899. }
  10900. if (FS.isRoot(node) || FS.getPath(node) === FS.cwd()) {
  10901. return 10;
  10902. }
  10903. } else {
  10904. if (FS.isDir(node.mode)) {
  10905. return 31;
  10906. }
  10907. }
  10908. return 0;
  10909. },
  10910. mayOpen: function(node, flags) {
  10911. if (!node) {
  10912. return 44;
  10913. }
  10914. if (FS.isLink(node.mode)) {
  10915. return 32;
  10916. } else if (FS.isDir(node.mode)) {
  10917. if (FS.flagsToPermissionString(flags) !== "r" || flags & 512) {
  10918. return 31;
  10919. }
  10920. }
  10921. return FS.nodePermissions(node, FS.flagsToPermissionString(flags));
  10922. },
  10923. MAX_OPEN_FDS: 4096,
  10924. nextfd: function(fd_start, fd_end) {
  10925. fd_start = fd_start || 0;
  10926. fd_end = fd_end || FS.MAX_OPEN_FDS;
  10927. for (var fd = fd_start; fd <= fd_end; fd++) {
  10928. if (!FS.streams[fd]) {
  10929. return fd;
  10930. }
  10931. }
  10932. throw new FS.ErrnoError(33);
  10933. },
  10934. getStream: function(fd) {
  10935. return FS.streams[fd];
  10936. },
  10937. createStream: function(stream, fd_start, fd_end) {
  10938. if (!FS.FSStream) {
  10939. FS.FSStream = function() {
  10940. };
  10941. FS.FSStream.prototype = {
  10942. object: {
  10943. get: function() {
  10944. return this.node;
  10945. },
  10946. set: function(val) {
  10947. this.node = val;
  10948. }
  10949. },
  10950. isRead: {
  10951. get: function() {
  10952. return (this.flags & 2097155) !== 1;
  10953. }
  10954. },
  10955. isWrite: {
  10956. get: function() {
  10957. return (this.flags & 2097155) !== 0;
  10958. }
  10959. },
  10960. isAppend: {
  10961. get: function() {
  10962. return this.flags & 1024;
  10963. }
  10964. }
  10965. };
  10966. }
  10967. var newStream = new FS.FSStream();
  10968. for (var p in stream) {
  10969. newStream[p] = stream[p];
  10970. }
  10971. stream = newStream;
  10972. var fd = FS.nextfd(fd_start, fd_end);
  10973. stream.fd = fd;
  10974. FS.streams[fd] = stream;
  10975. return stream;
  10976. },
  10977. closeStream: function(fd) {
  10978. FS.streams[fd] = null;
  10979. },
  10980. chrdev_stream_ops: {
  10981. open: function(stream) {
  10982. var device = FS.getDevice(stream.node.rdev);
  10983. stream.stream_ops = device.stream_ops;
  10984. if (stream.stream_ops.open) {
  10985. stream.stream_ops.open(stream);
  10986. }
  10987. },
  10988. llseek: function() {
  10989. throw new FS.ErrnoError(70);
  10990. }
  10991. },
  10992. major: function(dev) {
  10993. return dev >> 8;
  10994. },
  10995. minor: function(dev) {
  10996. return dev & 255;
  10997. },
  10998. makedev: function(ma, mi) {
  10999. return ma << 8 | mi;
  11000. },
  11001. registerDevice: function(dev, ops) {
  11002. FS.devices[dev] = { stream_ops: ops };
  11003. },
  11004. getDevice: function(dev) {
  11005. return FS.devices[dev];
  11006. },
  11007. getMounts: function(mount) {
  11008. var mounts = [];
  11009. var check = [mount];
  11010. while (check.length) {
  11011. var m = check.pop();
  11012. mounts.push(m);
  11013. check.push.apply(check, m.mounts);
  11014. }
  11015. return mounts;
  11016. },
  11017. syncfs: function(populate, callback) {
  11018. if (typeof populate === "function") {
  11019. callback = populate;
  11020. populate = false;
  11021. }
  11022. FS.syncFSRequests++;
  11023. if (FS.syncFSRequests > 1) {
  11024. err(
  11025. "warning: " + FS.syncFSRequests + " FS.syncfs operations in flight at once, probably just doing extra work"
  11026. );
  11027. }
  11028. var mounts = FS.getMounts(FS.root.mount);
  11029. var completed = 0;
  11030. function doCallback(errCode) {
  11031. FS.syncFSRequests--;
  11032. return callback(errCode);
  11033. }
  11034. function done(errCode) {
  11035. if (errCode) {
  11036. if (!done.errored) {
  11037. done.errored = true;
  11038. return doCallback(errCode);
  11039. }
  11040. return;
  11041. }
  11042. if (++completed >= mounts.length) {
  11043. doCallback(null);
  11044. }
  11045. }
  11046. mounts.forEach(function(mount) {
  11047. if (!mount.type.syncfs) {
  11048. return done(null);
  11049. }
  11050. mount.type.syncfs(mount, populate, done);
  11051. });
  11052. },
  11053. mount: function(type, opts, mountpoint) {
  11054. var root = mountpoint === "/";
  11055. var pseudo = !mountpoint;
  11056. var node;
  11057. if (root && FS.root) {
  11058. throw new FS.ErrnoError(10);
  11059. } else if (!root && !pseudo) {
  11060. var lookup = FS.lookupPath(mountpoint, { follow_mount: false });
  11061. mountpoint = lookup.path;
  11062. node = lookup.node;
  11063. if (FS.isMountpoint(node)) {
  11064. throw new FS.ErrnoError(10);
  11065. }
  11066. if (!FS.isDir(node.mode)) {
  11067. throw new FS.ErrnoError(54);
  11068. }
  11069. }
  11070. var mount = {
  11071. type,
  11072. opts,
  11073. mountpoint,
  11074. mounts: []
  11075. };
  11076. var mountRoot = type.mount(mount);
  11077. mountRoot.mount = mount;
  11078. mount.root = mountRoot;
  11079. if (root) {
  11080. FS.root = mountRoot;
  11081. } else if (node) {
  11082. node.mounted = mount;
  11083. if (node.mount) {
  11084. node.mount.mounts.push(mount);
  11085. }
  11086. }
  11087. return mountRoot;
  11088. },
  11089. unmount: function(mountpoint) {
  11090. var lookup = FS.lookupPath(mountpoint, { follow_mount: false });
  11091. if (!FS.isMountpoint(lookup.node)) {
  11092. throw new FS.ErrnoError(28);
  11093. }
  11094. var node = lookup.node;
  11095. var mount = node.mounted;
  11096. var mounts = FS.getMounts(mount);
  11097. Object.keys(FS.nameTable).forEach(function(hash) {
  11098. var current = FS.nameTable[hash];
  11099. while (current) {
  11100. var next = current.name_next;
  11101. if (mounts.includes(current.mount)) {
  11102. FS.destroyNode(current);
  11103. }
  11104. current = next;
  11105. }
  11106. });
  11107. node.mounted = null;
  11108. var idx = node.mount.mounts.indexOf(mount);
  11109. node.mount.mounts.splice(idx, 1);
  11110. },
  11111. lookup: function(parent, name) {
  11112. return parent.node_ops.lookup(parent, name);
  11113. },
  11114. mknod: function(path, mode, dev) {
  11115. var lookup = FS.lookupPath(path, { parent: true });
  11116. var parent = lookup.node;
  11117. var name = PATH.basename(path);
  11118. if (!name || name === "." || name === "..") {
  11119. throw new FS.ErrnoError(28);
  11120. }
  11121. var errCode = FS.mayCreate(parent, name);
  11122. if (errCode) {
  11123. throw new FS.ErrnoError(errCode);
  11124. }
  11125. if (!parent.node_ops.mknod) {
  11126. throw new FS.ErrnoError(63);
  11127. }
  11128. return parent.node_ops.mknod(parent, name, mode, dev);
  11129. },
  11130. create: function(path, mode) {
  11131. mode = mode !== void 0 ? mode : 438;
  11132. mode &= 4095;
  11133. mode |= 32768;
  11134. return FS.mknod(path, mode, 0);
  11135. },
  11136. mkdir: function(path, mode) {
  11137. mode = mode !== void 0 ? mode : 511;
  11138. mode &= 511 | 512;
  11139. mode |= 16384;
  11140. return FS.mknod(path, mode, 0);
  11141. },
  11142. mkdirTree: function(path, mode) {
  11143. var dirs = path.split("/");
  11144. var d = "";
  11145. for (var i = 0; i < dirs.length; ++i) {
  11146. if (!dirs[i])
  11147. continue;
  11148. d += "/" + dirs[i];
  11149. try {
  11150. FS.mkdir(d, mode);
  11151. } catch (e) {
  11152. if (e.errno != 20)
  11153. throw e;
  11154. }
  11155. }
  11156. },
  11157. mkdev: function(path, mode, dev) {
  11158. if (typeof dev === "undefined") {
  11159. dev = mode;
  11160. mode = 438;
  11161. }
  11162. mode |= 8192;
  11163. return FS.mknod(path, mode, dev);
  11164. },
  11165. symlink: function(oldpath, newpath) {
  11166. if (!PATH_FS.resolve(oldpath)) {
  11167. throw new FS.ErrnoError(44);
  11168. }
  11169. var lookup = FS.lookupPath(newpath, { parent: true });
  11170. var parent = lookup.node;
  11171. if (!parent) {
  11172. throw new FS.ErrnoError(44);
  11173. }
  11174. var newname = PATH.basename(newpath);
  11175. var errCode = FS.mayCreate(parent, newname);
  11176. if (errCode) {
  11177. throw new FS.ErrnoError(errCode);
  11178. }
  11179. if (!parent.node_ops.symlink) {
  11180. throw new FS.ErrnoError(63);
  11181. }
  11182. return parent.node_ops.symlink(parent, newname, oldpath);
  11183. },
  11184. rename: function(old_path, new_path) {
  11185. var old_dirname = PATH.dirname(old_path);
  11186. var new_dirname = PATH.dirname(new_path);
  11187. var old_name = PATH.basename(old_path);
  11188. var new_name = PATH.basename(new_path);
  11189. var lookup, old_dir, new_dir;
  11190. lookup = FS.lookupPath(old_path, { parent: true });
  11191. old_dir = lookup.node;
  11192. lookup = FS.lookupPath(new_path, { parent: true });
  11193. new_dir = lookup.node;
  11194. if (!old_dir || !new_dir)
  11195. throw new FS.ErrnoError(44);
  11196. if (old_dir.mount !== new_dir.mount) {
  11197. throw new FS.ErrnoError(75);
  11198. }
  11199. var old_node = FS.lookupNode(old_dir, old_name);
  11200. var relative = PATH_FS.relative(old_path, new_dirname);
  11201. if (relative.charAt(0) !== ".") {
  11202. throw new FS.ErrnoError(28);
  11203. }
  11204. relative = PATH_FS.relative(new_path, old_dirname);
  11205. if (relative.charAt(0) !== ".") {
  11206. throw new FS.ErrnoError(55);
  11207. }
  11208. var new_node;
  11209. try {
  11210. new_node = FS.lookupNode(new_dir, new_name);
  11211. } catch (e) {
  11212. }
  11213. if (old_node === new_node) {
  11214. return;
  11215. }
  11216. var isdir = FS.isDir(old_node.mode);
  11217. var errCode = FS.mayDelete(old_dir, old_name, isdir);
  11218. if (errCode) {
  11219. throw new FS.ErrnoError(errCode);
  11220. }
  11221. errCode = new_node ? FS.mayDelete(new_dir, new_name, isdir) : FS.mayCreate(new_dir, new_name);
  11222. if (errCode) {
  11223. throw new FS.ErrnoError(errCode);
  11224. }
  11225. if (!old_dir.node_ops.rename) {
  11226. throw new FS.ErrnoError(63);
  11227. }
  11228. if (FS.isMountpoint(old_node) || new_node && FS.isMountpoint(new_node)) {
  11229. throw new FS.ErrnoError(10);
  11230. }
  11231. if (new_dir !== old_dir) {
  11232. errCode = FS.nodePermissions(old_dir, "w");
  11233. if (errCode) {
  11234. throw new FS.ErrnoError(errCode);
  11235. }
  11236. }
  11237. try {
  11238. if (FS.trackingDelegate["willMovePath"]) {
  11239. FS.trackingDelegate["willMovePath"](old_path, new_path);
  11240. }
  11241. } catch (e) {
  11242. err(
  11243. "FS.trackingDelegate['willMovePath']('" + old_path + "', '" + new_path + "') threw an exception: " + e.message
  11244. );
  11245. }
  11246. FS.hashRemoveNode(old_node);
  11247. try {
  11248. old_dir.node_ops.rename(old_node, new_dir, new_name);
  11249. } catch (e) {
  11250. throw e;
  11251. } finally {
  11252. FS.hashAddNode(old_node);
  11253. }
  11254. try {
  11255. if (FS.trackingDelegate["onMovePath"])
  11256. FS.trackingDelegate["onMovePath"](old_path, new_path);
  11257. } catch (e) {
  11258. err(
  11259. "FS.trackingDelegate['onMovePath']('" + old_path + "', '" + new_path + "') threw an exception: " + e.message
  11260. );
  11261. }
  11262. },
  11263. rmdir: function(path) {
  11264. var lookup = FS.lookupPath(path, { parent: true });
  11265. var parent = lookup.node;
  11266. var name = PATH.basename(path);
  11267. var node = FS.lookupNode(parent, name);
  11268. var errCode = FS.mayDelete(parent, name, true);
  11269. if (errCode) {
  11270. throw new FS.ErrnoError(errCode);
  11271. }
  11272. if (!parent.node_ops.rmdir) {
  11273. throw new FS.ErrnoError(63);
  11274. }
  11275. if (FS.isMountpoint(node)) {
  11276. throw new FS.ErrnoError(10);
  11277. }
  11278. try {
  11279. if (FS.trackingDelegate["willDeletePath"]) {
  11280. FS.trackingDelegate["willDeletePath"](path);
  11281. }
  11282. } catch (e) {
  11283. err(
  11284. "FS.trackingDelegate['willDeletePath']('" + path + "') threw an exception: " + e.message
  11285. );
  11286. }
  11287. parent.node_ops.rmdir(parent, name);
  11288. FS.destroyNode(node);
  11289. try {
  11290. if (FS.trackingDelegate["onDeletePath"])
  11291. FS.trackingDelegate["onDeletePath"](path);
  11292. } catch (e) {
  11293. err(
  11294. "FS.trackingDelegate['onDeletePath']('" + path + "') threw an exception: " + e.message
  11295. );
  11296. }
  11297. },
  11298. readdir: function(path) {
  11299. var lookup = FS.lookupPath(path, { follow: true });
  11300. var node = lookup.node;
  11301. if (!node.node_ops.readdir) {
  11302. throw new FS.ErrnoError(54);
  11303. }
  11304. return node.node_ops.readdir(node);
  11305. },
  11306. unlink: function(path) {
  11307. var lookup = FS.lookupPath(path, { parent: true });
  11308. var parent = lookup.node;
  11309. var name = PATH.basename(path);
  11310. var node = FS.lookupNode(parent, name);
  11311. var errCode = FS.mayDelete(parent, name, false);
  11312. if (errCode) {
  11313. throw new FS.ErrnoError(errCode);
  11314. }
  11315. if (!parent.node_ops.unlink) {
  11316. throw new FS.ErrnoError(63);
  11317. }
  11318. if (FS.isMountpoint(node)) {
  11319. throw new FS.ErrnoError(10);
  11320. }
  11321. try {
  11322. if (FS.trackingDelegate["willDeletePath"]) {
  11323. FS.trackingDelegate["willDeletePath"](path);
  11324. }
  11325. } catch (e) {
  11326. err(
  11327. "FS.trackingDelegate['willDeletePath']('" + path + "') threw an exception: " + e.message
  11328. );
  11329. }
  11330. parent.node_ops.unlink(parent, name);
  11331. FS.destroyNode(node);
  11332. try {
  11333. if (FS.trackingDelegate["onDeletePath"])
  11334. FS.trackingDelegate["onDeletePath"](path);
  11335. } catch (e) {
  11336. err(
  11337. "FS.trackingDelegate['onDeletePath']('" + path + "') threw an exception: " + e.message
  11338. );
  11339. }
  11340. },
  11341. readlink: function(path) {
  11342. var lookup = FS.lookupPath(path);
  11343. var link = lookup.node;
  11344. if (!link) {
  11345. throw new FS.ErrnoError(44);
  11346. }
  11347. if (!link.node_ops.readlink) {
  11348. throw new FS.ErrnoError(28);
  11349. }
  11350. return PATH_FS.resolve(
  11351. FS.getPath(link.parent),
  11352. link.node_ops.readlink(link)
  11353. );
  11354. },
  11355. stat: function(path, dontFollow) {
  11356. var lookup = FS.lookupPath(path, { follow: !dontFollow });
  11357. var node = lookup.node;
  11358. if (!node) {
  11359. throw new FS.ErrnoError(44);
  11360. }
  11361. if (!node.node_ops.getattr) {
  11362. throw new FS.ErrnoError(63);
  11363. }
  11364. return node.node_ops.getattr(node);
  11365. },
  11366. lstat: function(path) {
  11367. return FS.stat(path, true);
  11368. },
  11369. chmod: function(path, mode, dontFollow) {
  11370. var node;
  11371. if (typeof path === "string") {
  11372. var lookup = FS.lookupPath(path, { follow: !dontFollow });
  11373. node = lookup.node;
  11374. } else {
  11375. node = path;
  11376. }
  11377. if (!node.node_ops.setattr) {
  11378. throw new FS.ErrnoError(63);
  11379. }
  11380. node.node_ops.setattr(node, {
  11381. mode: mode & 4095 | node.mode & ~4095,
  11382. timestamp: Date.now()
  11383. });
  11384. },
  11385. lchmod: function(path, mode) {
  11386. FS.chmod(path, mode, true);
  11387. },
  11388. fchmod: function(fd, mode) {
  11389. var stream = FS.getStream(fd);
  11390. if (!stream) {
  11391. throw new FS.ErrnoError(8);
  11392. }
  11393. FS.chmod(stream.node, mode);
  11394. },
  11395. chown: function(path, uid, gid, dontFollow) {
  11396. var node;
  11397. if (typeof path === "string") {
  11398. var lookup = FS.lookupPath(path, { follow: !dontFollow });
  11399. node = lookup.node;
  11400. } else {
  11401. node = path;
  11402. }
  11403. if (!node.node_ops.setattr) {
  11404. throw new FS.ErrnoError(63);
  11405. }
  11406. node.node_ops.setattr(node, { timestamp: Date.now() });
  11407. },
  11408. lchown: function(path, uid, gid) {
  11409. FS.chown(path, uid, gid, true);
  11410. },
  11411. fchown: function(fd, uid, gid) {
  11412. var stream = FS.getStream(fd);
  11413. if (!stream) {
  11414. throw new FS.ErrnoError(8);
  11415. }
  11416. FS.chown(stream.node, uid, gid);
  11417. },
  11418. truncate: function(path, len) {
  11419. if (len < 0) {
  11420. throw new FS.ErrnoError(28);
  11421. }
  11422. var node;
  11423. if (typeof path === "string") {
  11424. var lookup = FS.lookupPath(path, { follow: true });
  11425. node = lookup.node;
  11426. } else {
  11427. node = path;
  11428. }
  11429. if (!node.node_ops.setattr) {
  11430. throw new FS.ErrnoError(63);
  11431. }
  11432. if (FS.isDir(node.mode)) {
  11433. throw new FS.ErrnoError(31);
  11434. }
  11435. if (!FS.isFile(node.mode)) {
  11436. throw new FS.ErrnoError(28);
  11437. }
  11438. var errCode = FS.nodePermissions(node, "w");
  11439. if (errCode) {
  11440. throw new FS.ErrnoError(errCode);
  11441. }
  11442. node.node_ops.setattr(node, { size: len, timestamp: Date.now() });
  11443. },
  11444. ftruncate: function(fd, len) {
  11445. var stream = FS.getStream(fd);
  11446. if (!stream) {
  11447. throw new FS.ErrnoError(8);
  11448. }
  11449. if ((stream.flags & 2097155) === 0) {
  11450. throw new FS.ErrnoError(28);
  11451. }
  11452. FS.truncate(stream.node, len);
  11453. },
  11454. utime: function(path, atime, mtime) {
  11455. var lookup = FS.lookupPath(path, { follow: true });
  11456. var node = lookup.node;
  11457. node.node_ops.setattr(node, { timestamp: Math.max(atime, mtime) });
  11458. },
  11459. open: function(path, flags, mode, fd_start, fd_end) {
  11460. if (path === "") {
  11461. throw new FS.ErrnoError(44);
  11462. }
  11463. flags = typeof flags === "string" ? FS.modeStringToFlags(flags) : flags;
  11464. mode = typeof mode === "undefined" ? 438 : mode;
  11465. if (flags & 64) {
  11466. mode = mode & 4095 | 32768;
  11467. } else {
  11468. mode = 0;
  11469. }
  11470. var node;
  11471. if (typeof path === "object") {
  11472. node = path;
  11473. } else {
  11474. path = PATH.normalize(path);
  11475. try {
  11476. var lookup = FS.lookupPath(path, { follow: !(flags & 131072) });
  11477. node = lookup.node;
  11478. } catch (e) {
  11479. }
  11480. }
  11481. var created = false;
  11482. if (flags & 64) {
  11483. if (node) {
  11484. if (flags & 128) {
  11485. throw new FS.ErrnoError(20);
  11486. }
  11487. } else {
  11488. node = FS.mknod(path, mode, 0);
  11489. created = true;
  11490. }
  11491. }
  11492. if (!node) {
  11493. throw new FS.ErrnoError(44);
  11494. }
  11495. if (FS.isChrdev(node.mode)) {
  11496. flags &= ~512;
  11497. }
  11498. if (flags & 65536 && !FS.isDir(node.mode)) {
  11499. throw new FS.ErrnoError(54);
  11500. }
  11501. if (!created) {
  11502. var errCode = FS.mayOpen(node, flags);
  11503. if (errCode) {
  11504. throw new FS.ErrnoError(errCode);
  11505. }
  11506. }
  11507. if (flags & 512) {
  11508. FS.truncate(node, 0);
  11509. }
  11510. flags &= ~(128 | 512 | 131072);
  11511. var stream = FS.createStream(
  11512. {
  11513. node,
  11514. path: FS.getPath(node),
  11515. flags,
  11516. seekable: true,
  11517. position: 0,
  11518. stream_ops: node.stream_ops,
  11519. ungotten: [],
  11520. error: false
  11521. },
  11522. fd_start,
  11523. fd_end
  11524. );
  11525. if (stream.stream_ops.open) {
  11526. stream.stream_ops.open(stream);
  11527. }
  11528. if (Module["logReadFiles"] && !(flags & 1)) {
  11529. if (!FS.readFiles)
  11530. FS.readFiles = {};
  11531. if (!(path in FS.readFiles)) {
  11532. FS.readFiles[path] = 1;
  11533. err("FS.trackingDelegate error on read file: " + path);
  11534. }
  11535. }
  11536. try {
  11537. if (FS.trackingDelegate["onOpenFile"]) {
  11538. var trackingFlags = 0;
  11539. if ((flags & 2097155) !== 1) {
  11540. trackingFlags |= FS.tracking.openFlags.READ;
  11541. }
  11542. if ((flags & 2097155) !== 0) {
  11543. trackingFlags |= FS.tracking.openFlags.WRITE;
  11544. }
  11545. FS.trackingDelegate["onOpenFile"](path, trackingFlags);
  11546. }
  11547. } catch (e) {
  11548. err(
  11549. "FS.trackingDelegate['onOpenFile']('" + path + "', flags) threw an exception: " + e.message
  11550. );
  11551. }
  11552. return stream;
  11553. },
  11554. close: function(stream) {
  11555. if (FS.isClosed(stream)) {
  11556. throw new FS.ErrnoError(8);
  11557. }
  11558. if (stream.getdents)
  11559. stream.getdents = null;
  11560. try {
  11561. if (stream.stream_ops.close) {
  11562. stream.stream_ops.close(stream);
  11563. }
  11564. } catch (e) {
  11565. throw e;
  11566. } finally {
  11567. FS.closeStream(stream.fd);
  11568. }
  11569. stream.fd = null;
  11570. },
  11571. isClosed: function(stream) {
  11572. return stream.fd === null;
  11573. },
  11574. llseek: function(stream, offset, whence) {
  11575. if (FS.isClosed(stream)) {
  11576. throw new FS.ErrnoError(8);
  11577. }
  11578. if (!stream.seekable || !stream.stream_ops.llseek) {
  11579. throw new FS.ErrnoError(70);
  11580. }
  11581. if (whence != 0 && whence != 1 && whence != 2) {
  11582. throw new FS.ErrnoError(28);
  11583. }
  11584. stream.position = stream.stream_ops.llseek(stream, offset, whence);
  11585. stream.ungotten = [];
  11586. return stream.position;
  11587. },
  11588. read: function(stream, buffer2, offset, length, position) {
  11589. if (length < 0 || position < 0) {
  11590. throw new FS.ErrnoError(28);
  11591. }
  11592. if (FS.isClosed(stream)) {
  11593. throw new FS.ErrnoError(8);
  11594. }
  11595. if ((stream.flags & 2097155) === 1) {
  11596. throw new FS.ErrnoError(8);
  11597. }
  11598. if (FS.isDir(stream.node.mode)) {
  11599. throw new FS.ErrnoError(31);
  11600. }
  11601. if (!stream.stream_ops.read) {
  11602. throw new FS.ErrnoError(28);
  11603. }
  11604. var seeking = typeof position !== "undefined";
  11605. if (!seeking) {
  11606. position = stream.position;
  11607. } else if (!stream.seekable) {
  11608. throw new FS.ErrnoError(70);
  11609. }
  11610. var bytesRead = stream.stream_ops.read(
  11611. stream,
  11612. buffer2,
  11613. offset,
  11614. length,
  11615. position
  11616. );
  11617. if (!seeking)
  11618. stream.position += bytesRead;
  11619. return bytesRead;
  11620. },
  11621. write: function(stream, buffer2, offset, length, position, canOwn) {
  11622. if (length < 0 || position < 0) {
  11623. throw new FS.ErrnoError(28);
  11624. }
  11625. if (FS.isClosed(stream)) {
  11626. throw new FS.ErrnoError(8);
  11627. }
  11628. if ((stream.flags & 2097155) === 0) {
  11629. throw new FS.ErrnoError(8);
  11630. }
  11631. if (FS.isDir(stream.node.mode)) {
  11632. throw new FS.ErrnoError(31);
  11633. }
  11634. if (!stream.stream_ops.write) {
  11635. throw new FS.ErrnoError(28);
  11636. }
  11637. if (stream.seekable && stream.flags & 1024) {
  11638. FS.llseek(stream, 0, 2);
  11639. }
  11640. var seeking = typeof position !== "undefined";
  11641. if (!seeking) {
  11642. position = stream.position;
  11643. } else if (!stream.seekable) {
  11644. throw new FS.ErrnoError(70);
  11645. }
  11646. var bytesWritten = stream.stream_ops.write(
  11647. stream,
  11648. buffer2,
  11649. offset,
  11650. length,
  11651. position,
  11652. canOwn
  11653. );
  11654. if (!seeking)
  11655. stream.position += bytesWritten;
  11656. try {
  11657. if (stream.path && FS.trackingDelegate["onWriteToFile"])
  11658. FS.trackingDelegate["onWriteToFile"](stream.path);
  11659. } catch (e) {
  11660. err(
  11661. "FS.trackingDelegate['onWriteToFile']('" + stream.path + "') threw an exception: " + e.message
  11662. );
  11663. }
  11664. return bytesWritten;
  11665. },
  11666. allocate: function(stream, offset, length) {
  11667. if (FS.isClosed(stream)) {
  11668. throw new FS.ErrnoError(8);
  11669. }
  11670. if (offset < 0 || length <= 0) {
  11671. throw new FS.ErrnoError(28);
  11672. }
  11673. if ((stream.flags & 2097155) === 0) {
  11674. throw new FS.ErrnoError(8);
  11675. }
  11676. if (!FS.isFile(stream.node.mode) && !FS.isDir(stream.node.mode)) {
  11677. throw new FS.ErrnoError(43);
  11678. }
  11679. if (!stream.stream_ops.allocate) {
  11680. throw new FS.ErrnoError(138);
  11681. }
  11682. stream.stream_ops.allocate(stream, offset, length);
  11683. },
  11684. mmap: function(stream, address, length, position, prot, flags) {
  11685. if ((prot & 2) !== 0 && (flags & 2) === 0 && (stream.flags & 2097155) !== 2) {
  11686. throw new FS.ErrnoError(2);
  11687. }
  11688. if ((stream.flags & 2097155) === 1) {
  11689. throw new FS.ErrnoError(2);
  11690. }
  11691. if (!stream.stream_ops.mmap) {
  11692. throw new FS.ErrnoError(43);
  11693. }
  11694. return stream.stream_ops.mmap(
  11695. stream,
  11696. address,
  11697. length,
  11698. position,
  11699. prot,
  11700. flags
  11701. );
  11702. },
  11703. msync: function(stream, buffer2, offset, length, mmapFlags) {
  11704. if (!stream || !stream.stream_ops.msync) {
  11705. return 0;
  11706. }
  11707. return stream.stream_ops.msync(
  11708. stream,
  11709. buffer2,
  11710. offset,
  11711. length,
  11712. mmapFlags
  11713. );
  11714. },
  11715. munmap: function(stream) {
  11716. return 0;
  11717. },
  11718. ioctl: function(stream, cmd, arg) {
  11719. if (!stream.stream_ops.ioctl) {
  11720. throw new FS.ErrnoError(59);
  11721. }
  11722. return stream.stream_ops.ioctl(stream, cmd, arg);
  11723. },
  11724. readFile: function(path, opts) {
  11725. opts = opts || {};
  11726. opts.flags = opts.flags || 0;
  11727. opts.encoding = opts.encoding || "binary";
  11728. if (opts.encoding !== "utf8" && opts.encoding !== "binary") {
  11729. throw new Error('Invalid encoding type "' + opts.encoding + '"');
  11730. }
  11731. var ret;
  11732. var stream = FS.open(path, opts.flags);
  11733. var stat = FS.stat(path);
  11734. var length = stat.size;
  11735. var buf = new Uint8Array(length);
  11736. FS.read(stream, buf, 0, length, 0);
  11737. if (opts.encoding === "utf8") {
  11738. ret = UTF8ArrayToString(buf, 0);
  11739. } else if (opts.encoding === "binary") {
  11740. ret = buf;
  11741. }
  11742. FS.close(stream);
  11743. return ret;
  11744. },
  11745. writeFile: function(path, data, opts) {
  11746. opts = opts || {};
  11747. opts.flags = opts.flags || 577;
  11748. var stream = FS.open(path, opts.flags, opts.mode);
  11749. if (typeof data === "string") {
  11750. var buf = new Uint8Array(lengthBytesUTF8(data) + 1);
  11751. var actualNumBytes = stringToUTF8Array(data, buf, 0, buf.length);
  11752. FS.write(stream, buf, 0, actualNumBytes, void 0, opts.canOwn);
  11753. } else if (ArrayBuffer.isView(data)) {
  11754. FS.write(stream, data, 0, data.byteLength, void 0, opts.canOwn);
  11755. } else {
  11756. throw new Error("Unsupported data type");
  11757. }
  11758. FS.close(stream);
  11759. },
  11760. cwd: function() {
  11761. return FS.currentPath;
  11762. },
  11763. chdir: function(path) {
  11764. var lookup = FS.lookupPath(path, { follow: true });
  11765. if (lookup.node === null) {
  11766. throw new FS.ErrnoError(44);
  11767. }
  11768. if (!FS.isDir(lookup.node.mode)) {
  11769. throw new FS.ErrnoError(54);
  11770. }
  11771. var errCode = FS.nodePermissions(lookup.node, "x");
  11772. if (errCode) {
  11773. throw new FS.ErrnoError(errCode);
  11774. }
  11775. FS.currentPath = lookup.path;
  11776. },
  11777. createDefaultDirectories: function() {
  11778. FS.mkdir("/tmp");
  11779. FS.mkdir("/home");
  11780. FS.mkdir("/home/web_user");
  11781. },
  11782. createDefaultDevices: function() {
  11783. FS.mkdir("/dev");
  11784. FS.registerDevice(FS.makedev(1, 3), {
  11785. read: function() {
  11786. return 0;
  11787. },
  11788. write: function(stream, buffer2, offset, length, pos) {
  11789. return length;
  11790. }
  11791. });
  11792. FS.mkdev("/dev/null", FS.makedev(1, 3));
  11793. TTY.register(FS.makedev(5, 0), TTY.default_tty_ops);
  11794. TTY.register(FS.makedev(6, 0), TTY.default_tty1_ops);
  11795. FS.mkdev("/dev/tty", FS.makedev(5, 0));
  11796. FS.mkdev("/dev/tty1", FS.makedev(6, 0));
  11797. var random_device = getRandomDevice();
  11798. FS.createDevice("/dev", "random", random_device);
  11799. FS.createDevice("/dev", "urandom", random_device);
  11800. FS.mkdir("/dev/shm");
  11801. FS.mkdir("/dev/shm/tmp");
  11802. },
  11803. createSpecialDirectories: function() {
  11804. FS.mkdir("/proc");
  11805. var proc_self = FS.mkdir("/proc/self");
  11806. FS.mkdir("/proc/self/fd");
  11807. FS.mount(
  11808. {
  11809. mount: function() {
  11810. var node = FS.createNode(proc_self, "fd", 16384 | 511, 73);
  11811. node.node_ops = {
  11812. lookup: function(parent, name) {
  11813. var fd = +name;
  11814. var stream = FS.getStream(fd);
  11815. if (!stream)
  11816. throw new FS.ErrnoError(8);
  11817. var ret = {
  11818. parent: null,
  11819. mount: { mountpoint: "fake" },
  11820. node_ops: {
  11821. readlink: function() {
  11822. return stream.path;
  11823. }
  11824. }
  11825. };
  11826. ret.parent = ret;
  11827. return ret;
  11828. }
  11829. };
  11830. return node;
  11831. }
  11832. },
  11833. {},
  11834. "/proc/self/fd"
  11835. );
  11836. },
  11837. createStandardStreams: function() {
  11838. if (Module["stdin"]) {
  11839. FS.createDevice("/dev", "stdin", Module["stdin"]);
  11840. } else {
  11841. FS.symlink("/dev/tty", "/dev/stdin");
  11842. }
  11843. if (Module["stdout"]) {
  11844. FS.createDevice("/dev", "stdout", null, Module["stdout"]);
  11845. } else {
  11846. FS.symlink("/dev/tty", "/dev/stdout");
  11847. }
  11848. if (Module["stderr"]) {
  11849. FS.createDevice("/dev", "stderr", null, Module["stderr"]);
  11850. } else {
  11851. FS.symlink("/dev/tty1", "/dev/stderr");
  11852. }
  11853. FS.open("/dev/stdin", 0);
  11854. FS.open("/dev/stdout", 1);
  11855. FS.open("/dev/stderr", 1);
  11856. },
  11857. ensureErrnoError: function() {
  11858. if (FS.ErrnoError)
  11859. return;
  11860. FS.ErrnoError = function ErrnoError(errno, node) {
  11861. this.node = node;
  11862. this.setErrno = function(errno2) {
  11863. this.errno = errno2;
  11864. };
  11865. this.setErrno(errno);
  11866. this.message = "FS error";
  11867. };
  11868. FS.ErrnoError.prototype = new Error();
  11869. FS.ErrnoError.prototype.constructor = FS.ErrnoError;
  11870. [44].forEach(function(code) {
  11871. FS.genericErrors[code] = new FS.ErrnoError(code);
  11872. FS.genericErrors[code].stack = "<generic error, no stack>";
  11873. });
  11874. },
  11875. staticInit: function() {
  11876. FS.ensureErrnoError();
  11877. FS.nameTable = new Array(4096);
  11878. FS.mount(MEMFS, {}, "/");
  11879. FS.createDefaultDirectories();
  11880. FS.createDefaultDevices();
  11881. FS.createSpecialDirectories();
  11882. FS.filesystems = { MEMFS, NODEFS };
  11883. },
  11884. init: function(input, output, error) {
  11885. FS.init.initialized = true;
  11886. FS.ensureErrnoError();
  11887. Module["stdin"] = input || Module["stdin"];
  11888. Module["stdout"] = output || Module["stdout"];
  11889. Module["stderr"] = error || Module["stderr"];
  11890. FS.createStandardStreams();
  11891. },
  11892. quit: function() {
  11893. FS.init.initialized = false;
  11894. var fflush = Module["_fflush"];
  11895. if (fflush)
  11896. fflush(0);
  11897. for (var i = 0; i < FS.streams.length; i++) {
  11898. var stream = FS.streams[i];
  11899. if (!stream) {
  11900. continue;
  11901. }
  11902. FS.close(stream);
  11903. }
  11904. },
  11905. getMode: function(canRead, canWrite) {
  11906. var mode = 0;
  11907. if (canRead)
  11908. mode |= 292 | 73;
  11909. if (canWrite)
  11910. mode |= 146;
  11911. return mode;
  11912. },
  11913. findObject: function(path, dontResolveLastLink) {
  11914. var ret = FS.analyzePath(path, dontResolveLastLink);
  11915. if (ret.exists) {
  11916. return ret.object;
  11917. } else {
  11918. return null;
  11919. }
  11920. },
  11921. analyzePath: function(path, dontResolveLastLink) {
  11922. try {
  11923. var lookup = FS.lookupPath(path, { follow: !dontResolveLastLink });
  11924. path = lookup.path;
  11925. } catch (e) {
  11926. }
  11927. var ret = {
  11928. isRoot: false,
  11929. exists: false,
  11930. error: 0,
  11931. name: null,
  11932. path: null,
  11933. object: null,
  11934. parentExists: false,
  11935. parentPath: null,
  11936. parentObject: null
  11937. };
  11938. try {
  11939. var lookup = FS.lookupPath(path, { parent: true });
  11940. ret.parentExists = true;
  11941. ret.parentPath = lookup.path;
  11942. ret.parentObject = lookup.node;
  11943. ret.name = PATH.basename(path);
  11944. lookup = FS.lookupPath(path, { follow: !dontResolveLastLink });
  11945. ret.exists = true;
  11946. ret.path = lookup.path;
  11947. ret.object = lookup.node;
  11948. ret.name = lookup.node.name;
  11949. ret.isRoot = lookup.path === "/";
  11950. } catch (e) {
  11951. ret.error = e.errno;
  11952. }
  11953. return ret;
  11954. },
  11955. createPath: function(parent, path, canRead, canWrite) {
  11956. parent = typeof parent === "string" ? parent : FS.getPath(parent);
  11957. var parts = path.split("/").reverse();
  11958. while (parts.length) {
  11959. var part = parts.pop();
  11960. if (!part)
  11961. continue;
  11962. var current = PATH.join2(parent, part);
  11963. try {
  11964. FS.mkdir(current);
  11965. } catch (e) {
  11966. }
  11967. parent = current;
  11968. }
  11969. return current;
  11970. },
  11971. createFile: function(parent, name, properties, canRead, canWrite) {
  11972. var path = PATH.join2(
  11973. typeof parent === "string" ? parent : FS.getPath(parent),
  11974. name
  11975. );
  11976. var mode = FS.getMode(canRead, canWrite);
  11977. return FS.create(path, mode);
  11978. },
  11979. createDataFile: function(parent, name, data, canRead, canWrite, canOwn) {
  11980. var path = name ? PATH.join2(
  11981. typeof parent === "string" ? parent : FS.getPath(parent),
  11982. name
  11983. ) : parent;
  11984. var mode = FS.getMode(canRead, canWrite);
  11985. var node = FS.create(path, mode);
  11986. if (data) {
  11987. if (typeof data === "string") {
  11988. var arr = new Array(data.length);
  11989. for (var i = 0, len = data.length; i < len; ++i)
  11990. arr[i] = data.charCodeAt(i);
  11991. data = arr;
  11992. }
  11993. FS.chmod(node, mode | 146);
  11994. var stream = FS.open(node, 577);
  11995. FS.write(stream, data, 0, data.length, 0, canOwn);
  11996. FS.close(stream);
  11997. FS.chmod(node, mode);
  11998. }
  11999. return node;
  12000. },
  12001. createDevice: function(parent, name, input, output) {
  12002. var path = PATH.join2(
  12003. typeof parent === "string" ? parent : FS.getPath(parent),
  12004. name
  12005. );
  12006. var mode = FS.getMode(!!input, !!output);
  12007. if (!FS.createDevice.major)
  12008. FS.createDevice.major = 64;
  12009. var dev = FS.makedev(FS.createDevice.major++, 0);
  12010. FS.registerDevice(dev, {
  12011. open: function(stream) {
  12012. stream.seekable = false;
  12013. },
  12014. close: function(stream) {
  12015. if (output && output.buffer && output.buffer.length) {
  12016. output(10);
  12017. }
  12018. },
  12019. read: function(stream, buffer2, offset, length, pos) {
  12020. var bytesRead = 0;
  12021. for (var i = 0; i < length; i++) {
  12022. var result;
  12023. try {
  12024. result = input();
  12025. } catch (e) {
  12026. throw new FS.ErrnoError(29);
  12027. }
  12028. if (result === void 0 && bytesRead === 0) {
  12029. throw new FS.ErrnoError(6);
  12030. }
  12031. if (result === null || result === void 0)
  12032. break;
  12033. bytesRead++;
  12034. buffer2[offset + i] = result;
  12035. }
  12036. if (bytesRead) {
  12037. stream.node.timestamp = Date.now();
  12038. }
  12039. return bytesRead;
  12040. },
  12041. write: function(stream, buffer2, offset, length, pos) {
  12042. for (var i = 0; i < length; i++) {
  12043. try {
  12044. output(buffer2[offset + i]);
  12045. } catch (e) {
  12046. throw new FS.ErrnoError(29);
  12047. }
  12048. }
  12049. if (length) {
  12050. stream.node.timestamp = Date.now();
  12051. }
  12052. return i;
  12053. }
  12054. });
  12055. return FS.mkdev(path, mode, dev);
  12056. },
  12057. forceLoadFile: function(obj) {
  12058. if (obj.isDevice || obj.isFolder || obj.link || obj.contents)
  12059. return true;
  12060. if (read_) {
  12061. try {
  12062. obj.contents = intArrayFromString(read_(obj.url), true);
  12063. obj.usedBytes = obj.contents.length;
  12064. } catch (e) {
  12065. throw new FS.ErrnoError(29);
  12066. }
  12067. } else {
  12068. throw new Error("Cannot load without read() or XMLHttpRequest.");
  12069. }
  12070. },
  12071. createLazyFile: function(parent, name, url, canRead, canWrite) {
  12072. var properties; {
  12073. var properties = { isDevice: false, url };
  12074. }
  12075. var node = FS.createFile(parent, name, properties, canRead, canWrite);
  12076. if (properties.contents) {
  12077. node.contents = properties.contents;
  12078. } else if (properties.url) {
  12079. node.contents = null;
  12080. node.url = properties.url;
  12081. }
  12082. Object.defineProperties(node, {
  12083. usedBytes: {
  12084. get: function() {
  12085. return this.contents.length;
  12086. }
  12087. }
  12088. });
  12089. var stream_ops = {};
  12090. var keys = Object.keys(node.stream_ops);
  12091. keys.forEach(function(key2) {
  12092. var fn = node.stream_ops[key2];
  12093. stream_ops[key2] = function forceLoadLazyFile() {
  12094. FS.forceLoadFile(node);
  12095. return fn.apply(null, arguments);
  12096. };
  12097. });
  12098. stream_ops.read = function stream_ops_read(stream, buffer2, offset, length, position) {
  12099. FS.forceLoadFile(node);
  12100. var contents = stream.node.contents;
  12101. if (position >= contents.length)
  12102. return 0;
  12103. var size = Math.min(contents.length - position, length);
  12104. if (contents.slice) {
  12105. for (var i = 0; i < size; i++) {
  12106. buffer2[offset + i] = contents[position + i];
  12107. }
  12108. } else {
  12109. for (var i = 0; i < size; i++) {
  12110. buffer2[offset + i] = contents.get(position + i);
  12111. }
  12112. }
  12113. return size;
  12114. };
  12115. node.stream_ops = stream_ops;
  12116. return node;
  12117. },
  12118. createPreloadedFile: function(parent, name, url, canRead, canWrite, onload, onerror, dontCreateFile, canOwn, preFinish) {
  12119. Browser.init();
  12120. var fullname = name ? PATH_FS.resolve(PATH.join2(parent, name)) : parent;
  12121. function processData(byteArray) {
  12122. function finish(byteArray2) {
  12123. if (preFinish)
  12124. preFinish();
  12125. if (!dontCreateFile) {
  12126. FS.createDataFile(
  12127. parent,
  12128. name,
  12129. byteArray2,
  12130. canRead,
  12131. canWrite,
  12132. canOwn
  12133. );
  12134. }
  12135. if (onload)
  12136. onload();
  12137. removeRunDependency();
  12138. }
  12139. var handled = false;
  12140. Module["preloadPlugins"].forEach(function(plugin) {
  12141. if (handled)
  12142. return;
  12143. if (plugin["canHandle"](fullname)) {
  12144. plugin["handle"](byteArray, fullname, finish, function() {
  12145. if (onerror)
  12146. onerror();
  12147. removeRunDependency();
  12148. });
  12149. handled = true;
  12150. }
  12151. });
  12152. if (!handled)
  12153. finish(byteArray);
  12154. }
  12155. addRunDependency();
  12156. if (typeof url == "string") {
  12157. Browser.asyncLoad(
  12158. url,
  12159. function(byteArray) {
  12160. processData(byteArray);
  12161. },
  12162. onerror
  12163. );
  12164. } else {
  12165. processData(url);
  12166. }
  12167. },
  12168. indexedDB: function() {
  12169. return window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB;
  12170. },
  12171. DB_NAME: function() {
  12172. return "EM_FS_" + window.location.pathname;
  12173. },
  12174. DB_VERSION: 20,
  12175. DB_STORE_NAME: "FILE_DATA",
  12176. saveFilesToDB: function(paths, onload, onerror) {
  12177. onload = onload || function() {
  12178. };
  12179. onerror = onerror || function() {
  12180. };
  12181. var indexedDB = FS.indexedDB();
  12182. try {
  12183. var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION);
  12184. } catch (e) {
  12185. return onerror(e);
  12186. }
  12187. openRequest.onupgradeneeded = function openRequest_onupgradeneeded() {
  12188. out("creating db");
  12189. var db = openRequest.result;
  12190. db.createObjectStore(FS.DB_STORE_NAME);
  12191. };
  12192. openRequest.onsuccess = function openRequest_onsuccess() {
  12193. var db = openRequest.result;
  12194. var transaction = db.transaction([FS.DB_STORE_NAME], "readwrite");
  12195. var files = transaction.objectStore(FS.DB_STORE_NAME);
  12196. var ok = 0, fail = 0, total = paths.length;
  12197. function finish() {
  12198. if (fail == 0)
  12199. onload();
  12200. else
  12201. onerror();
  12202. }
  12203. paths.forEach(function(path) {
  12204. var putRequest = files.put(
  12205. FS.analyzePath(path).object.contents,
  12206. path
  12207. );
  12208. putRequest.onsuccess = function putRequest_onsuccess() {
  12209. ok++;
  12210. if (ok + fail == total)
  12211. finish();
  12212. };
  12213. putRequest.onerror = function putRequest_onerror() {
  12214. fail++;
  12215. if (ok + fail == total)
  12216. finish();
  12217. };
  12218. });
  12219. transaction.onerror = onerror;
  12220. };
  12221. openRequest.onerror = onerror;
  12222. },
  12223. loadFilesFromDB: function(paths, onload, onerror) {
  12224. onload = onload || function() {
  12225. };
  12226. onerror = onerror || function() {
  12227. };
  12228. var indexedDB = FS.indexedDB();
  12229. try {
  12230. var openRequest = indexedDB.open(FS.DB_NAME(), FS.DB_VERSION);
  12231. } catch (e) {
  12232. return onerror(e);
  12233. }
  12234. openRequest.onupgradeneeded = onerror;
  12235. openRequest.onsuccess = function openRequest_onsuccess() {
  12236. var db = openRequest.result;
  12237. try {
  12238. var transaction = db.transaction([FS.DB_STORE_NAME], "readonly");
  12239. } catch (e) {
  12240. onerror(e);
  12241. return;
  12242. }
  12243. var files = transaction.objectStore(FS.DB_STORE_NAME);
  12244. var ok = 0, fail = 0, total = paths.length;
  12245. function finish() {
  12246. if (fail == 0)
  12247. onload();
  12248. else
  12249. onerror();
  12250. }
  12251. paths.forEach(function(path) {
  12252. var getRequest = files.get(path);
  12253. getRequest.onsuccess = function getRequest_onsuccess() {
  12254. if (FS.analyzePath(path).exists) {
  12255. FS.unlink(path);
  12256. }
  12257. FS.createDataFile(
  12258. PATH.dirname(path),
  12259. PATH.basename(path),
  12260. getRequest.result,
  12261. true,
  12262. true,
  12263. true
  12264. );
  12265. ok++;
  12266. if (ok + fail == total)
  12267. finish();
  12268. };
  12269. getRequest.onerror = function getRequest_onerror() {
  12270. fail++;
  12271. if (ok + fail == total)
  12272. finish();
  12273. };
  12274. });
  12275. transaction.onerror = onerror;
  12276. };
  12277. openRequest.onerror = onerror;
  12278. }
  12279. };
  12280. var SYSCALLS = {
  12281. mappings: {},
  12282. DEFAULT_POLLMASK: 5,
  12283. umask: 511,
  12284. calculateAt: function(dirfd, path, allowEmpty) {
  12285. if (path[0] === "/") {
  12286. return path;
  12287. }
  12288. var dir;
  12289. if (dirfd === -100) {
  12290. dir = FS.cwd();
  12291. } else {
  12292. var dirstream = FS.getStream(dirfd);
  12293. if (!dirstream)
  12294. throw new FS.ErrnoError(8);
  12295. dir = dirstream.path;
  12296. }
  12297. if (path.length == 0) {
  12298. if (!allowEmpty) {
  12299. throw new FS.ErrnoError(44);
  12300. }
  12301. return dir;
  12302. }
  12303. return PATH.join2(dir, path);
  12304. },
  12305. doStat: function(func, path, buf) {
  12306. try {
  12307. var stat = func(path);
  12308. } catch (e) {
  12309. if (e && e.node && PATH.normalize(path) !== PATH.normalize(FS.getPath(e.node))) {
  12310. return -54;
  12311. }
  12312. throw e;
  12313. }
  12314. HEAP32[buf >> 2] = stat.dev;
  12315. HEAP32[buf + 4 >> 2] = 0;
  12316. HEAP32[buf + 8 >> 2] = stat.ino;
  12317. HEAP32[buf + 12 >> 2] = stat.mode;
  12318. HEAP32[buf + 16 >> 2] = stat.nlink;
  12319. HEAP32[buf + 20 >> 2] = stat.uid;
  12320. HEAP32[buf + 24 >> 2] = stat.gid;
  12321. HEAP32[buf + 28 >> 2] = stat.rdev;
  12322. HEAP32[buf + 32 >> 2] = 0;
  12323. tempI64 = [
  12324. stat.size >>> 0,
  12325. (tempDouble = stat.size, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil(
  12326. (tempDouble - +(~~tempDouble >>> 0)) / 4294967296
  12327. ) >>> 0 : 0)
  12328. ], HEAP32[buf + 40 >> 2] = tempI64[0], HEAP32[buf + 44 >> 2] = tempI64[1];
  12329. HEAP32[buf + 48 >> 2] = 4096;
  12330. HEAP32[buf + 52 >> 2] = stat.blocks;
  12331. HEAP32[buf + 56 >> 2] = stat.atime.getTime() / 1e3 | 0;
  12332. HEAP32[buf + 60 >> 2] = 0;
  12333. HEAP32[buf + 64 >> 2] = stat.mtime.getTime() / 1e3 | 0;
  12334. HEAP32[buf + 68 >> 2] = 0;
  12335. HEAP32[buf + 72 >> 2] = stat.ctime.getTime() / 1e3 | 0;
  12336. HEAP32[buf + 76 >> 2] = 0;
  12337. tempI64 = [
  12338. stat.ino >>> 0,
  12339. (tempDouble = stat.ino, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil(
  12340. (tempDouble - +(~~tempDouble >>> 0)) / 4294967296
  12341. ) >>> 0 : 0)
  12342. ], HEAP32[buf + 80 >> 2] = tempI64[0], HEAP32[buf + 84 >> 2] = tempI64[1];
  12343. return 0;
  12344. },
  12345. doMsync: function(addr, stream, len, flags, offset) {
  12346. var buffer2 = HEAPU8.slice(addr, addr + len);
  12347. FS.msync(stream, buffer2, offset, len, flags);
  12348. },
  12349. doMkdir: function(path, mode) {
  12350. path = PATH.normalize(path);
  12351. if (path[path.length - 1] === "/")
  12352. path = path.substr(0, path.length - 1);
  12353. FS.mkdir(path, mode, 0);
  12354. return 0;
  12355. },
  12356. doMknod: function(path, mode, dev) {
  12357. switch (mode & 61440) {
  12358. case 32768:
  12359. case 8192:
  12360. case 24576:
  12361. case 4096:
  12362. case 49152:
  12363. break;
  12364. default:
  12365. return -28;
  12366. }
  12367. FS.mknod(path, mode, dev);
  12368. return 0;
  12369. },
  12370. doReadlink: function(path, buf, bufsize) {
  12371. if (bufsize <= 0)
  12372. return -28;
  12373. var ret = FS.readlink(path);
  12374. var len = Math.min(bufsize, lengthBytesUTF8(ret));
  12375. var endChar = HEAP8[buf + len];
  12376. stringToUTF8(ret, buf, bufsize + 1);
  12377. HEAP8[buf + len] = endChar;
  12378. return len;
  12379. },
  12380. doAccess: function(path, amode) {
  12381. if (amode & ~7) {
  12382. return -28;
  12383. }
  12384. var node;
  12385. var lookup = FS.lookupPath(path, { follow: true });
  12386. node = lookup.node;
  12387. if (!node) {
  12388. return -44;
  12389. }
  12390. var perms = "";
  12391. if (amode & 4)
  12392. perms += "r";
  12393. if (amode & 2)
  12394. perms += "w";
  12395. if (amode & 1)
  12396. perms += "x";
  12397. if (perms && FS.nodePermissions(node, perms)) {
  12398. return -2;
  12399. }
  12400. return 0;
  12401. },
  12402. doDup: function(path, flags, suggestFD) {
  12403. var suggest = FS.getStream(suggestFD);
  12404. if (suggest)
  12405. FS.close(suggest);
  12406. return FS.open(path, flags, 0, suggestFD, suggestFD).fd;
  12407. },
  12408. doReadv: function(stream, iov, iovcnt, offset) {
  12409. var ret = 0;
  12410. for (var i = 0; i < iovcnt; i++) {
  12411. var ptr = HEAP32[iov + i * 8 >> 2];
  12412. var len = HEAP32[iov + (i * 8 + 4) >> 2];
  12413. var curr = FS.read(stream, HEAP8, ptr, len, offset);
  12414. if (curr < 0)
  12415. return -1;
  12416. ret += curr;
  12417. if (curr < len)
  12418. break;
  12419. }
  12420. return ret;
  12421. },
  12422. doWritev: function(stream, iov, iovcnt, offset) {
  12423. var ret = 0;
  12424. for (var i = 0; i < iovcnt; i++) {
  12425. var ptr = HEAP32[iov + i * 8 >> 2];
  12426. var len = HEAP32[iov + (i * 8 + 4) >> 2];
  12427. var curr = FS.write(stream, HEAP8, ptr, len, offset);
  12428. if (curr < 0)
  12429. return -1;
  12430. ret += curr;
  12431. }
  12432. return ret;
  12433. },
  12434. varargs: void 0,
  12435. get: function() {
  12436. SYSCALLS.varargs += 4;
  12437. var ret = HEAP32[SYSCALLS.varargs - 4 >> 2];
  12438. return ret;
  12439. },
  12440. getStr: function(ptr) {
  12441. var ret = UTF8ToString(ptr);
  12442. return ret;
  12443. },
  12444. getStreamFromFD: function(fd) {
  12445. var stream = FS.getStream(fd);
  12446. if (!stream)
  12447. throw new FS.ErrnoError(8);
  12448. return stream;
  12449. },
  12450. get64: function(low, high) {
  12451. return low;
  12452. }
  12453. };
  12454. function ___sys_chmod(path, mode) {
  12455. try {
  12456. path = SYSCALLS.getStr(path);
  12457. FS.chmod(path, mode);
  12458. return 0;
  12459. } catch (e) {
  12460. if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError))
  12461. abort(e);
  12462. return -e.errno;
  12463. }
  12464. }
  12465. function setErrNo(value) {
  12466. HEAP32[___errno_location() >> 2] = value;
  12467. return value;
  12468. }
  12469. function ___sys_fcntl64(fd, cmd, varargs) {
  12470. SYSCALLS.varargs = varargs;
  12471. try {
  12472. var stream = SYSCALLS.getStreamFromFD(fd);
  12473. switch (cmd) {
  12474. case 0: {
  12475. var arg = SYSCALLS.get();
  12476. if (arg < 0) {
  12477. return -28;
  12478. }
  12479. var newStream;
  12480. newStream = FS.open(stream.path, stream.flags, 0, arg);
  12481. return newStream.fd;
  12482. }
  12483. case 1:
  12484. case 2:
  12485. return 0;
  12486. case 3:
  12487. return stream.flags;
  12488. case 4: {
  12489. var arg = SYSCALLS.get();
  12490. stream.flags |= arg;
  12491. return 0;
  12492. }
  12493. case 12: {
  12494. var arg = SYSCALLS.get();
  12495. var offset = 0;
  12496. HEAP16[arg + offset >> 1] = 2;
  12497. return 0;
  12498. }
  12499. case 13:
  12500. case 14:
  12501. return 0;
  12502. case 16:
  12503. case 8:
  12504. return -28;
  12505. case 9:
  12506. setErrNo(28);
  12507. return -1;
  12508. default: {
  12509. return -28;
  12510. }
  12511. }
  12512. } catch (e) {
  12513. if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError))
  12514. abort(e);
  12515. return -e.errno;
  12516. }
  12517. }
  12518. function ___sys_fstat64(fd, buf) {
  12519. try {
  12520. var stream = SYSCALLS.getStreamFromFD(fd);
  12521. return SYSCALLS.doStat(FS.stat, stream.path, buf);
  12522. } catch (e) {
  12523. if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError))
  12524. abort(e);
  12525. return -e.errno;
  12526. }
  12527. }
  12528. function ___sys_ioctl(fd, op, varargs) {
  12529. SYSCALLS.varargs = varargs;
  12530. try {
  12531. var stream = SYSCALLS.getStreamFromFD(fd);
  12532. switch (op) {
  12533. case 21509:
  12534. case 21505: {
  12535. if (!stream.tty)
  12536. return -59;
  12537. return 0;
  12538. }
  12539. case 21510:
  12540. case 21511:
  12541. case 21512:
  12542. case 21506:
  12543. case 21507:
  12544. case 21508: {
  12545. if (!stream.tty)
  12546. return -59;
  12547. return 0;
  12548. }
  12549. case 21519: {
  12550. if (!stream.tty)
  12551. return -59;
  12552. var argp = SYSCALLS.get();
  12553. HEAP32[argp >> 2] = 0;
  12554. return 0;
  12555. }
  12556. case 21520: {
  12557. if (!stream.tty)
  12558. return -59;
  12559. return -28;
  12560. }
  12561. case 21531: {
  12562. var argp = SYSCALLS.get();
  12563. return FS.ioctl(stream, op, argp);
  12564. }
  12565. case 21523: {
  12566. if (!stream.tty)
  12567. return -59;
  12568. return 0;
  12569. }
  12570. case 21524: {
  12571. if (!stream.tty)
  12572. return -59;
  12573. return 0;
  12574. }
  12575. default:
  12576. abort("bad ioctl syscall " + op);
  12577. }
  12578. } catch (e) {
  12579. if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError))
  12580. abort(e);
  12581. return -e.errno;
  12582. }
  12583. }
  12584. function ___sys_open(path, flags, varargs) {
  12585. SYSCALLS.varargs = varargs;
  12586. try {
  12587. var pathname = SYSCALLS.getStr(path);
  12588. var mode = varargs ? SYSCALLS.get() : 0;
  12589. var stream = FS.open(pathname, flags, mode);
  12590. return stream.fd;
  12591. } catch (e) {
  12592. if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError))
  12593. abort(e);
  12594. return -e.errno;
  12595. }
  12596. }
  12597. function ___sys_rename(old_path, new_path) {
  12598. try {
  12599. old_path = SYSCALLS.getStr(old_path);
  12600. new_path = SYSCALLS.getStr(new_path);
  12601. FS.rename(old_path, new_path);
  12602. return 0;
  12603. } catch (e) {
  12604. if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError))
  12605. abort(e);
  12606. return -e.errno;
  12607. }
  12608. }
  12609. function ___sys_rmdir(path) {
  12610. try {
  12611. path = SYSCALLS.getStr(path);
  12612. FS.rmdir(path);
  12613. return 0;
  12614. } catch (e) {
  12615. if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError))
  12616. abort(e);
  12617. return -e.errno;
  12618. }
  12619. }
  12620. function ___sys_stat64(path, buf) {
  12621. try {
  12622. path = SYSCALLS.getStr(path);
  12623. return SYSCALLS.doStat(FS.stat, path, buf);
  12624. } catch (e) {
  12625. if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError))
  12626. abort(e);
  12627. return -e.errno;
  12628. }
  12629. }
  12630. function ___sys_unlink(path) {
  12631. try {
  12632. path = SYSCALLS.getStr(path);
  12633. FS.unlink(path);
  12634. return 0;
  12635. } catch (e) {
  12636. if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError))
  12637. abort(e);
  12638. return -e.errno;
  12639. }
  12640. }
  12641. function _emscripten_memcpy_big(dest, src, num) {
  12642. HEAPU8.copyWithin(dest, src, src + num);
  12643. }
  12644. function emscripten_realloc_buffer(size) {
  12645. try {
  12646. wasmMemory.grow(size - buffer.byteLength + 65535 >>> 16);
  12647. updateGlobalBufferAndViews(wasmMemory.buffer);
  12648. return 1;
  12649. } catch (e) {
  12650. }
  12651. }
  12652. function _emscripten_resize_heap(requestedSize) {
  12653. var oldSize = HEAPU8.length;
  12654. requestedSize = requestedSize >>> 0;
  12655. var maxHeapSize = 2147483648;
  12656. if (requestedSize > maxHeapSize) {
  12657. return false;
  12658. }
  12659. for (var cutDown = 1; cutDown <= 4; cutDown *= 2) {
  12660. var overGrownHeapSize = oldSize * (1 + 0.2 / cutDown);
  12661. overGrownHeapSize = Math.min(
  12662. overGrownHeapSize,
  12663. requestedSize + 100663296
  12664. );
  12665. var newSize = Math.min(
  12666. maxHeapSize,
  12667. alignUp(Math.max(requestedSize, overGrownHeapSize), 65536)
  12668. );
  12669. var replacement = emscripten_realloc_buffer(newSize);
  12670. if (replacement) {
  12671. return true;
  12672. }
  12673. }
  12674. return false;
  12675. }
  12676. function _fd_close(fd) {
  12677. try {
  12678. var stream = SYSCALLS.getStreamFromFD(fd);
  12679. FS.close(stream);
  12680. return 0;
  12681. } catch (e) {
  12682. if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError))
  12683. abort(e);
  12684. return e.errno;
  12685. }
  12686. }
  12687. function _fd_fdstat_get(fd, pbuf) {
  12688. try {
  12689. var stream = SYSCALLS.getStreamFromFD(fd);
  12690. var type = stream.tty ? 2 : FS.isDir(stream.mode) ? 3 : FS.isLink(stream.mode) ? 7 : 4;
  12691. HEAP8[pbuf >> 0] = type;
  12692. return 0;
  12693. } catch (e) {
  12694. if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError))
  12695. abort(e);
  12696. return e.errno;
  12697. }
  12698. }
  12699. function _fd_read(fd, iov, iovcnt, pnum) {
  12700. try {
  12701. var stream = SYSCALLS.getStreamFromFD(fd);
  12702. var num = SYSCALLS.doReadv(stream, iov, iovcnt);
  12703. HEAP32[pnum >> 2] = num;
  12704. return 0;
  12705. } catch (e) {
  12706. if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError))
  12707. abort(e);
  12708. return e.errno;
  12709. }
  12710. }
  12711. function _fd_seek(fd, offset_low, offset_high, whence, newOffset) {
  12712. try {
  12713. var stream = SYSCALLS.getStreamFromFD(fd);
  12714. var HIGH_OFFSET = 4294967296;
  12715. var offset = offset_high * HIGH_OFFSET + (offset_low >>> 0);
  12716. var DOUBLE_LIMIT = 9007199254740992;
  12717. if (offset <= -DOUBLE_LIMIT || offset >= DOUBLE_LIMIT) {
  12718. return -61;
  12719. }
  12720. FS.llseek(stream, offset, whence);
  12721. tempI64 = [
  12722. stream.position >>> 0,
  12723. (tempDouble = stream.position, +Math.abs(tempDouble) >= 1 ? tempDouble > 0 ? (Math.min(+Math.floor(tempDouble / 4294967296), 4294967295) | 0) >>> 0 : ~~+Math.ceil(
  12724. (tempDouble - +(~~tempDouble >>> 0)) / 4294967296
  12725. ) >>> 0 : 0)
  12726. ], HEAP32[newOffset >> 2] = tempI64[0], HEAP32[newOffset + 4 >> 2] = tempI64[1];
  12727. if (stream.getdents && offset === 0 && whence === 0)
  12728. stream.getdents = null;
  12729. return 0;
  12730. } catch (e) {
  12731. if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError))
  12732. abort(e);
  12733. return e.errno;
  12734. }
  12735. }
  12736. function _fd_write(fd, iov, iovcnt, pnum) {
  12737. try {
  12738. var stream = SYSCALLS.getStreamFromFD(fd);
  12739. var num = SYSCALLS.doWritev(stream, iov, iovcnt);
  12740. HEAP32[pnum >> 2] = num;
  12741. return 0;
  12742. } catch (e) {
  12743. if (typeof FS === "undefined" || !(e instanceof FS.ErrnoError))
  12744. abort(e);
  12745. return e.errno;
  12746. }
  12747. }
  12748. function _setTempRet0(val) {
  12749. }
  12750. function _time(ptr) {
  12751. var ret = Date.now() / 1e3 | 0;
  12752. if (ptr) {
  12753. HEAP32[ptr >> 2] = ret;
  12754. }
  12755. return ret;
  12756. }
  12757. function _tzset() {
  12758. if (_tzset.called)
  12759. return;
  12760. _tzset.called = true;
  12761. var currentYear = new Date().getFullYear();
  12762. var winter = new Date(currentYear, 0, 1);
  12763. var summer = new Date(currentYear, 6, 1);
  12764. var winterOffset = winter.getTimezoneOffset();
  12765. var summerOffset = summer.getTimezoneOffset();
  12766. var stdTimezoneOffset = Math.max(winterOffset, summerOffset);
  12767. HEAP32[__get_timezone() >> 2] = stdTimezoneOffset * 60;
  12768. HEAP32[__get_daylight() >> 2] = Number(winterOffset != summerOffset);
  12769. function extractZone(date) {
  12770. var match = date.toTimeString().match(/\(([A-Za-z ]+)\)$/);
  12771. return match ? match[1] : "GMT";
  12772. }
  12773. var winterName = extractZone(winter);
  12774. var summerName = extractZone(summer);
  12775. var winterNamePtr = allocateUTF8(winterName);
  12776. var summerNamePtr = allocateUTF8(summerName);
  12777. if (summerOffset < winterOffset) {
  12778. HEAP32[__get_tzname() >> 2] = winterNamePtr;
  12779. HEAP32[__get_tzname() + 4 >> 2] = summerNamePtr;
  12780. } else {
  12781. HEAP32[__get_tzname() >> 2] = summerNamePtr;
  12782. HEAP32[__get_tzname() + 4 >> 2] = winterNamePtr;
  12783. }
  12784. }
  12785. function _timegm(tmPtr) {
  12786. _tzset();
  12787. var time = Date.UTC(
  12788. HEAP32[tmPtr + 20 >> 2] + 1900,
  12789. HEAP32[tmPtr + 16 >> 2],
  12790. HEAP32[tmPtr + 12 >> 2],
  12791. HEAP32[tmPtr + 8 >> 2],
  12792. HEAP32[tmPtr + 4 >> 2],
  12793. HEAP32[tmPtr >> 2],
  12794. 0
  12795. );
  12796. var date = new Date(time);
  12797. HEAP32[tmPtr + 24 >> 2] = date.getUTCDay();
  12798. var start = Date.UTC(date.getUTCFullYear(), 0, 1, 0, 0, 0, 0);
  12799. var yday = (date.getTime() - start) / (1e3 * 60 * 60 * 24) | 0;
  12800. HEAP32[tmPtr + 28 >> 2] = yday;
  12801. return date.getTime() / 1e3 | 0;
  12802. }
  12803. var FSNode = function(parent, name, mode, rdev) {
  12804. if (!parent) {
  12805. parent = this;
  12806. }
  12807. this.parent = parent;
  12808. this.mount = parent.mount;
  12809. this.mounted = null;
  12810. this.id = FS.nextInode++;
  12811. this.name = name;
  12812. this.mode = mode;
  12813. this.node_ops = {};
  12814. this.stream_ops = {};
  12815. this.rdev = rdev;
  12816. };
  12817. var readMode = 292 | 73;
  12818. var writeMode = 146;
  12819. Object.defineProperties(FSNode.prototype, {
  12820. read: {
  12821. get: function() {
  12822. return (this.mode & readMode) === readMode;
  12823. },
  12824. set: function(val) {
  12825. val ? this.mode |= readMode : this.mode &= ~readMode;
  12826. }
  12827. },
  12828. write: {
  12829. get: function() {
  12830. return (this.mode & writeMode) === writeMode;
  12831. },
  12832. set: function(val) {
  12833. val ? this.mode |= writeMode : this.mode &= ~writeMode;
  12834. }
  12835. },
  12836. isFolder: {
  12837. get: function() {
  12838. return FS.isDir(this.mode);
  12839. }
  12840. },
  12841. isDevice: {
  12842. get: function() {
  12843. return FS.isChrdev(this.mode);
  12844. }
  12845. }
  12846. });
  12847. FS.FSNode = FSNode;
  12848. FS.staticInit();
  12849. {
  12850. var fs = frozenFs;
  12851. var NODEJS_PATH = path__default.default;
  12852. NODEFS.staticInit();
  12853. }
  12854. {
  12855. var _wrapNodeError = function(func) {
  12856. return function() {
  12857. try {
  12858. return func.apply(this, arguments);
  12859. } catch (e) {
  12860. if (!e.code)
  12861. throw e;
  12862. throw new FS.ErrnoError(ERRNO_CODES[e.code]);
  12863. }
  12864. };
  12865. };
  12866. var VFS = Object.assign({}, FS);
  12867. for (var _key in NODERAWFS)
  12868. FS[_key] = _wrapNodeError(NODERAWFS[_key]);
  12869. }
  12870. function intArrayFromString(stringy, dontAddNull, length) {
  12871. var len = length > 0 ? length : lengthBytesUTF8(stringy) + 1;
  12872. var u8array = new Array(len);
  12873. var numBytesWritten = stringToUTF8Array(
  12874. stringy,
  12875. u8array,
  12876. 0,
  12877. u8array.length
  12878. );
  12879. if (dontAddNull)
  12880. u8array.length = numBytesWritten;
  12881. return u8array;
  12882. }
  12883. function intArrayFromBase64(s) {
  12884. {
  12885. var buf;
  12886. try {
  12887. buf = Buffer.from(s, "base64");
  12888. } catch (_) {
  12889. buf = new Buffer(s, "base64");
  12890. }
  12891. return new Uint8Array(
  12892. buf["buffer"],
  12893. buf["byteOffset"],
  12894. buf["byteLength"]
  12895. );
  12896. }
  12897. }
  12898. function tryParseAsDataURI(filename) {
  12899. if (!isDataURI(filename)) {
  12900. return;
  12901. }
  12902. return intArrayFromBase64(filename.slice(dataURIPrefix.length));
  12903. }
  12904. var asmLibraryArg = {
  12905. s: ___gmtime_r,
  12906. p: ___sys_chmod,
  12907. e: ___sys_fcntl64,
  12908. k: ___sys_fstat64,
  12909. o: ___sys_ioctl,
  12910. q: ___sys_open,
  12911. i: ___sys_rename,
  12912. r: ___sys_rmdir,
  12913. c: ___sys_stat64,
  12914. h: ___sys_unlink,
  12915. l: _emscripten_memcpy_big,
  12916. m: _emscripten_resize_heap,
  12917. f: _fd_close,
  12918. j: _fd_fdstat_get,
  12919. g: _fd_read,
  12920. n: _fd_seek,
  12921. d: _fd_write,
  12922. a: _setTempRet0,
  12923. b: _time,
  12924. t: _timegm
  12925. };
  12926. var asm = createWasm();
  12927. Module["___wasm_call_ctors"] = asm["v"];
  12928. Module["_zip_ext_count_symlinks"] = asm["w"];
  12929. Module["_zip_file_get_external_attributes"] = asm["x"];
  12930. Module["_zipstruct_stat"] = asm["y"];
  12931. Module["_zipstruct_statS"] = asm["z"];
  12932. Module["_zipstruct_stat_name"] = asm["A"];
  12933. Module["_zipstruct_stat_index"] = asm["B"];
  12934. Module["_zipstruct_stat_size"] = asm["C"];
  12935. Module["_zipstruct_stat_mtime"] = asm["D"];
  12936. Module["_zipstruct_stat_crc"] = asm["E"];
  12937. Module["_zipstruct_error"] = asm["F"];
  12938. Module["_zipstruct_errorS"] = asm["G"];
  12939. Module["_zipstruct_error_code_zip"] = asm["H"];
  12940. Module["_zipstruct_stat_comp_size"] = asm["I"];
  12941. Module["_zipstruct_stat_comp_method"] = asm["J"];
  12942. Module["_zip_close"] = asm["K"];
  12943. Module["_zip_delete"] = asm["L"];
  12944. Module["_zip_dir_add"] = asm["M"];
  12945. Module["_zip_discard"] = asm["N"];
  12946. Module["_zip_error_init_with_code"] = asm["O"];
  12947. Module["_zip_get_error"] = asm["P"];
  12948. Module["_zip_file_get_error"] = asm["Q"];
  12949. Module["_zip_error_strerror"] = asm["R"];
  12950. Module["_zip_fclose"] = asm["S"];
  12951. Module["_zip_file_add"] = asm["T"];
  12952. Module["_free"] = asm["U"];
  12953. var _malloc = Module["_malloc"] = asm["V"];
  12954. var ___errno_location = Module["___errno_location"] = asm["W"];
  12955. Module["_zip_source_error"] = asm["X"];
  12956. Module["_zip_source_seek"] = asm["Y"];
  12957. Module["_zip_file_set_external_attributes"] = asm["Z"];
  12958. Module["_zip_file_set_mtime"] = asm["_"];
  12959. Module["_zip_fopen"] = asm["$"];
  12960. Module["_zip_fopen_index"] = asm["aa"];
  12961. Module["_zip_fread"] = asm["ba"];
  12962. Module["_zip_get_name"] = asm["ca"];
  12963. Module["_zip_get_num_entries"] = asm["da"];
  12964. Module["_zip_source_read"] = asm["ea"];
  12965. Module["_zip_name_locate"] = asm["fa"];
  12966. Module["_zip_open"] = asm["ga"];
  12967. Module["_zip_open_from_source"] = asm["ha"];
  12968. Module["_zip_set_file_compression"] = asm["ia"];
  12969. Module["_zip_source_buffer"] = asm["ja"];
  12970. Module["_zip_source_buffer_create"] = asm["ka"];
  12971. Module["_zip_source_close"] = asm["la"];
  12972. Module["_zip_source_free"] = asm["ma"];
  12973. Module["_zip_source_keep"] = asm["na"];
  12974. Module["_zip_source_open"] = asm["oa"];
  12975. Module["_zip_source_set_mtime"] = asm["qa"];
  12976. Module["_zip_source_tell"] = asm["ra"];
  12977. Module["_zip_stat"] = asm["sa"];
  12978. Module["_zip_stat_index"] = asm["ta"];
  12979. var __get_tzname = Module["__get_tzname"] = asm["ua"];
  12980. var __get_daylight = Module["__get_daylight"] = asm["va"];
  12981. var __get_timezone = Module["__get_timezone"] = asm["wa"];
  12982. var stackSave = Module["stackSave"] = asm["xa"];
  12983. var stackRestore = Module["stackRestore"] = asm["ya"];
  12984. var stackAlloc = Module["stackAlloc"] = asm["za"];
  12985. Module["cwrap"] = cwrap;
  12986. Module["getValue"] = getValue;
  12987. var calledRun;
  12988. dependenciesFulfilled = function runCaller() {
  12989. if (!calledRun)
  12990. run();
  12991. if (!calledRun)
  12992. dependenciesFulfilled = runCaller;
  12993. };
  12994. function run(args) {
  12995. if (runDependencies > 0) {
  12996. return;
  12997. }
  12998. preRun();
  12999. if (runDependencies > 0) {
  13000. return;
  13001. }
  13002. function doRun() {
  13003. if (calledRun)
  13004. return;
  13005. calledRun = true;
  13006. Module["calledRun"] = true;
  13007. if (ABORT)
  13008. return;
  13009. initRuntime();
  13010. readyPromiseResolve(Module);
  13011. if (Module["onRuntimeInitialized"])
  13012. Module["onRuntimeInitialized"]();
  13013. postRun();
  13014. }
  13015. if (Module["setStatus"]) {
  13016. Module["setStatus"]("Running...");
  13017. setTimeout(function() {
  13018. setTimeout(function() {
  13019. Module["setStatus"]("");
  13020. }, 1);
  13021. doRun();
  13022. }, 1);
  13023. } else {
  13024. doRun();
  13025. }
  13026. }
  13027. Module["run"] = run;
  13028. if (Module["preInit"]) {
  13029. if (typeof Module["preInit"] == "function")
  13030. Module["preInit"] = [Module["preInit"]];
  13031. while (Module["preInit"].length > 0) {
  13032. Module["preInit"].pop()();
  13033. }
  13034. }
  13035. run();
  13036. return createModule2;
  13037. };
  13038. }();
  13039. module.exports = createModule;
  13040. }(libzipSync));
  13041. const createModule = libzipSync.exports;
  13042. const number64 = [
  13043. `number`,
  13044. `number`
  13045. ];
  13046. var Errors = /* @__PURE__ */ ((Errors2) => {
  13047. Errors2[Errors2["ZIP_ER_OK"] = 0] = "ZIP_ER_OK";
  13048. Errors2[Errors2["ZIP_ER_MULTIDISK"] = 1] = "ZIP_ER_MULTIDISK";
  13049. Errors2[Errors2["ZIP_ER_RENAME"] = 2] = "ZIP_ER_RENAME";
  13050. Errors2[Errors2["ZIP_ER_CLOSE"] = 3] = "ZIP_ER_CLOSE";
  13051. Errors2[Errors2["ZIP_ER_SEEK"] = 4] = "ZIP_ER_SEEK";
  13052. Errors2[Errors2["ZIP_ER_READ"] = 5] = "ZIP_ER_READ";
  13053. Errors2[Errors2["ZIP_ER_WRITE"] = 6] = "ZIP_ER_WRITE";
  13054. Errors2[Errors2["ZIP_ER_CRC"] = 7] = "ZIP_ER_CRC";
  13055. Errors2[Errors2["ZIP_ER_ZIPCLOSED"] = 8] = "ZIP_ER_ZIPCLOSED";
  13056. Errors2[Errors2["ZIP_ER_NOENT"] = 9] = "ZIP_ER_NOENT";
  13057. Errors2[Errors2["ZIP_ER_EXISTS"] = 10] = "ZIP_ER_EXISTS";
  13058. Errors2[Errors2["ZIP_ER_OPEN"] = 11] = "ZIP_ER_OPEN";
  13059. Errors2[Errors2["ZIP_ER_TMPOPEN"] = 12] = "ZIP_ER_TMPOPEN";
  13060. Errors2[Errors2["ZIP_ER_ZLIB"] = 13] = "ZIP_ER_ZLIB";
  13061. Errors2[Errors2["ZIP_ER_MEMORY"] = 14] = "ZIP_ER_MEMORY";
  13062. Errors2[Errors2["ZIP_ER_CHANGED"] = 15] = "ZIP_ER_CHANGED";
  13063. Errors2[Errors2["ZIP_ER_COMPNOTSUPP"] = 16] = "ZIP_ER_COMPNOTSUPP";
  13064. Errors2[Errors2["ZIP_ER_EOF"] = 17] = "ZIP_ER_EOF";
  13065. Errors2[Errors2["ZIP_ER_INVAL"] = 18] = "ZIP_ER_INVAL";
  13066. Errors2[Errors2["ZIP_ER_NOZIP"] = 19] = "ZIP_ER_NOZIP";
  13067. Errors2[Errors2["ZIP_ER_INTERNAL"] = 20] = "ZIP_ER_INTERNAL";
  13068. Errors2[Errors2["ZIP_ER_INCONS"] = 21] = "ZIP_ER_INCONS";
  13069. Errors2[Errors2["ZIP_ER_REMOVE"] = 22] = "ZIP_ER_REMOVE";
  13070. Errors2[Errors2["ZIP_ER_DELETED"] = 23] = "ZIP_ER_DELETED";
  13071. Errors2[Errors2["ZIP_ER_ENCRNOTSUPP"] = 24] = "ZIP_ER_ENCRNOTSUPP";
  13072. Errors2[Errors2["ZIP_ER_RDONLY"] = 25] = "ZIP_ER_RDONLY";
  13073. Errors2[Errors2["ZIP_ER_NOPASSWD"] = 26] = "ZIP_ER_NOPASSWD";
  13074. Errors2[Errors2["ZIP_ER_WRONGPASSWD"] = 27] = "ZIP_ER_WRONGPASSWD";
  13075. Errors2[Errors2["ZIP_ER_OPNOTSUPP"] = 28] = "ZIP_ER_OPNOTSUPP";
  13076. Errors2[Errors2["ZIP_ER_INUSE"] = 29] = "ZIP_ER_INUSE";
  13077. Errors2[Errors2["ZIP_ER_TELL"] = 30] = "ZIP_ER_TELL";
  13078. Errors2[Errors2["ZIP_ER_COMPRESSED_DATA"] = 31] = "ZIP_ER_COMPRESSED_DATA";
  13079. return Errors2;
  13080. })(Errors || {});
  13081. const makeInterface = (libzip) => ({
  13082. get HEAP8() {
  13083. return libzip.HEAP8;
  13084. },
  13085. get HEAPU8() {
  13086. return libzip.HEAPU8;
  13087. },
  13088. errors: Errors,
  13089. SEEK_SET: 0,
  13090. SEEK_CUR: 1,
  13091. SEEK_END: 2,
  13092. ZIP_CHECKCONS: 4,
  13093. ZIP_CREATE: 1,
  13094. ZIP_EXCL: 2,
  13095. ZIP_TRUNCATE: 8,
  13096. ZIP_RDONLY: 16,
  13097. ZIP_FL_OVERWRITE: 8192,
  13098. ZIP_FL_COMPRESSED: 4,
  13099. ZIP_OPSYS_DOS: 0,
  13100. ZIP_OPSYS_AMIGA: 1,
  13101. ZIP_OPSYS_OPENVMS: 2,
  13102. ZIP_OPSYS_UNIX: 3,
  13103. ZIP_OPSYS_VM_CMS: 4,
  13104. ZIP_OPSYS_ATARI_ST: 5,
  13105. ZIP_OPSYS_OS_2: 6,
  13106. ZIP_OPSYS_MACINTOSH: 7,
  13107. ZIP_OPSYS_Z_SYSTEM: 8,
  13108. ZIP_OPSYS_CPM: 9,
  13109. ZIP_OPSYS_WINDOWS_NTFS: 10,
  13110. ZIP_OPSYS_MVS: 11,
  13111. ZIP_OPSYS_VSE: 12,
  13112. ZIP_OPSYS_ACORN_RISC: 13,
  13113. ZIP_OPSYS_VFAT: 14,
  13114. ZIP_OPSYS_ALTERNATE_MVS: 15,
  13115. ZIP_OPSYS_BEOS: 16,
  13116. ZIP_OPSYS_TANDEM: 17,
  13117. ZIP_OPSYS_OS_400: 18,
  13118. ZIP_OPSYS_OS_X: 19,
  13119. ZIP_CM_DEFAULT: -1,
  13120. ZIP_CM_STORE: 0,
  13121. ZIP_CM_DEFLATE: 8,
  13122. uint08S: libzip._malloc(1),
  13123. uint16S: libzip._malloc(2),
  13124. uint32S: libzip._malloc(4),
  13125. uint64S: libzip._malloc(8),
  13126. malloc: libzip._malloc,
  13127. free: libzip._free,
  13128. getValue: libzip.getValue,
  13129. open: libzip.cwrap(`zip_open`, `number`, [`string`, `number`, `number`]),
  13130. openFromSource: libzip.cwrap(`zip_open_from_source`, `number`, [`number`, `number`, `number`]),
  13131. close: libzip.cwrap(`zip_close`, `number`, [`number`]),
  13132. discard: libzip.cwrap(`zip_discard`, null, [`number`]),
  13133. getError: libzip.cwrap(`zip_get_error`, `number`, [`number`]),
  13134. getName: libzip.cwrap(`zip_get_name`, `string`, [`number`, `number`, `number`]),
  13135. getNumEntries: libzip.cwrap(`zip_get_num_entries`, `number`, [`number`, `number`]),
  13136. delete: libzip.cwrap(`zip_delete`, `number`, [`number`, `number`]),
  13137. stat: libzip.cwrap(`zip_stat`, `number`, [`number`, `string`, `number`, `number`]),
  13138. statIndex: libzip.cwrap(`zip_stat_index`, `number`, [`number`, ...number64, `number`, `number`]),
  13139. fopen: libzip.cwrap(`zip_fopen`, `number`, [`number`, `string`, `number`]),
  13140. fopenIndex: libzip.cwrap(`zip_fopen_index`, `number`, [`number`, ...number64, `number`]),
  13141. fread: libzip.cwrap(`zip_fread`, `number`, [`number`, `number`, `number`, `number`]),
  13142. fclose: libzip.cwrap(`zip_fclose`, `number`, [`number`]),
  13143. dir: {
  13144. add: libzip.cwrap(`zip_dir_add`, `number`, [`number`, `string`])
  13145. },
  13146. file: {
  13147. add: libzip.cwrap(`zip_file_add`, `number`, [`number`, `string`, `number`, `number`]),
  13148. getError: libzip.cwrap(`zip_file_get_error`, `number`, [`number`]),
  13149. getExternalAttributes: libzip.cwrap(`zip_file_get_external_attributes`, `number`, [`number`, ...number64, `number`, `number`, `number`]),
  13150. setExternalAttributes: libzip.cwrap(`zip_file_set_external_attributes`, `number`, [`number`, ...number64, `number`, `number`, `number`]),
  13151. setMtime: libzip.cwrap(`zip_file_set_mtime`, `number`, [`number`, ...number64, `number`, `number`]),
  13152. setCompression: libzip.cwrap(`zip_set_file_compression`, `number`, [`number`, ...number64, `number`, `number`])
  13153. },
  13154. ext: {
  13155. countSymlinks: libzip.cwrap(`zip_ext_count_symlinks`, `number`, [`number`])
  13156. },
  13157. error: {
  13158. initWithCode: libzip.cwrap(`zip_error_init_with_code`, null, [`number`, `number`]),
  13159. strerror: libzip.cwrap(`zip_error_strerror`, `string`, [`number`])
  13160. },
  13161. name: {
  13162. locate: libzip.cwrap(`zip_name_locate`, `number`, [`number`, `string`, `number`])
  13163. },
  13164. source: {
  13165. fromUnattachedBuffer: libzip.cwrap(`zip_source_buffer_create`, `number`, [`number`, ...number64, `number`, `number`]),
  13166. fromBuffer: libzip.cwrap(`zip_source_buffer`, `number`, [`number`, `number`, ...number64, `number`]),
  13167. free: libzip.cwrap(`zip_source_free`, null, [`number`]),
  13168. keep: libzip.cwrap(`zip_source_keep`, null, [`number`]),
  13169. open: libzip.cwrap(`zip_source_open`, `number`, [`number`]),
  13170. close: libzip.cwrap(`zip_source_close`, `number`, [`number`]),
  13171. seek: libzip.cwrap(`zip_source_seek`, `number`, [`number`, ...number64, `number`]),
  13172. tell: libzip.cwrap(`zip_source_tell`, `number`, [`number`]),
  13173. read: libzip.cwrap(`zip_source_read`, `number`, [`number`, `number`, `number`]),
  13174. error: libzip.cwrap(`zip_source_error`, `number`, [`number`]),
  13175. setMtime: libzip.cwrap(`zip_source_set_mtime`, `number`, [`number`, `number`])
  13176. },
  13177. struct: {
  13178. stat: libzip.cwrap(`zipstruct_stat`, `number`, []),
  13179. statS: libzip.cwrap(`zipstruct_statS`, `number`, []),
  13180. statName: libzip.cwrap(`zipstruct_stat_name`, `string`, [`number`]),
  13181. statIndex: libzip.cwrap(`zipstruct_stat_index`, `number`, [`number`]),
  13182. statSize: libzip.cwrap(`zipstruct_stat_size`, `number`, [`number`]),
  13183. statCompSize: libzip.cwrap(`zipstruct_stat_comp_size`, `number`, [`number`]),
  13184. statCompMethod: libzip.cwrap(`zipstruct_stat_comp_method`, `number`, [`number`]),
  13185. statMtime: libzip.cwrap(`zipstruct_stat_mtime`, `number`, [`number`]),
  13186. statCrc: libzip.cwrap(`zipstruct_stat_crc`, `number`, [`number`]),
  13187. error: libzip.cwrap(`zipstruct_error`, `number`, []),
  13188. errorS: libzip.cwrap(`zipstruct_errorS`, `number`, []),
  13189. errorCodeZip: libzip.cwrap(`zipstruct_error_code_zip`, `number`, [`number`])
  13190. }
  13191. });
  13192. let mod = null;
  13193. function getLibzipSync() {
  13194. if (mod === null)
  13195. mod = makeInterface(createModule());
  13196. return mod;
  13197. }
  13198. var ErrorCode = /* @__PURE__ */ ((ErrorCode2) => {
  13199. ErrorCode2["API_ERROR"] = `API_ERROR`;
  13200. ErrorCode2["BUILTIN_NODE_RESOLUTION_FAILED"] = `BUILTIN_NODE_RESOLUTION_FAILED`;
  13201. ErrorCode2["EXPORTS_RESOLUTION_FAILED"] = `EXPORTS_RESOLUTION_FAILED`;
  13202. ErrorCode2["MISSING_DEPENDENCY"] = `MISSING_DEPENDENCY`;
  13203. ErrorCode2["MISSING_PEER_DEPENDENCY"] = `MISSING_PEER_DEPENDENCY`;
  13204. ErrorCode2["QUALIFIED_PATH_RESOLUTION_FAILED"] = `QUALIFIED_PATH_RESOLUTION_FAILED`;
  13205. ErrorCode2["INTERNAL"] = `INTERNAL`;
  13206. ErrorCode2["UNDECLARED_DEPENDENCY"] = `UNDECLARED_DEPENDENCY`;
  13207. ErrorCode2["UNSUPPORTED"] = `UNSUPPORTED`;
  13208. return ErrorCode2;
  13209. })(ErrorCode || {});
  13210. const MODULE_NOT_FOUND_ERRORS = /* @__PURE__ */ new Set([
  13211. "BUILTIN_NODE_RESOLUTION_FAILED" /* BUILTIN_NODE_RESOLUTION_FAILED */,
  13212. "MISSING_DEPENDENCY" /* MISSING_DEPENDENCY */,
  13213. "MISSING_PEER_DEPENDENCY" /* MISSING_PEER_DEPENDENCY */,
  13214. "QUALIFIED_PATH_RESOLUTION_FAILED" /* QUALIFIED_PATH_RESOLUTION_FAILED */,
  13215. "UNDECLARED_DEPENDENCY" /* UNDECLARED_DEPENDENCY */
  13216. ]);
  13217. function makeError(pnpCode, message, data = {}, code) {
  13218. code != null ? code : code = MODULE_NOT_FOUND_ERRORS.has(pnpCode) ? `MODULE_NOT_FOUND` : pnpCode;
  13219. const propertySpec = {
  13220. configurable: true,
  13221. writable: true,
  13222. enumerable: false
  13223. };
  13224. return Object.defineProperties(new Error(message), {
  13225. code: {
  13226. ...propertySpec,
  13227. value: code
  13228. },
  13229. pnpCode: {
  13230. ...propertySpec,
  13231. value: pnpCode
  13232. },
  13233. data: {
  13234. ...propertySpec,
  13235. value: data
  13236. }
  13237. });
  13238. }
  13239. function getIssuerModule(parent) {
  13240. let issuer = parent;
  13241. while (issuer && (issuer.id === `[eval]` || issuer.id === `<repl>` || !issuer.filename))
  13242. issuer = issuer.parent;
  13243. return issuer || null;
  13244. }
  13245. function getPathForDisplay(p) {
  13246. return npath.normalize(npath.fromPortablePath(p));
  13247. }
  13248. const [major, minor] = process.versions.node.split(`.`).map((value) => parseInt(value, 10));
  13249. const WATCH_MODE_MESSAGE_USES_ARRAYS = major > 19 || major === 19 && minor >= 2 || major === 18 && minor >= 13;
  13250. const builtinModules = new Set(require$$0.Module.builtinModules || Object.keys(process.binding(`natives`)));
  13251. const isBuiltinModule = (request) => request.startsWith(`node:`) || builtinModules.has(request);
  13252. function readPackageScope(checkPath) {
  13253. const rootSeparatorIndex = checkPath.indexOf(npath.sep);
  13254. let separatorIndex;
  13255. do {
  13256. separatorIndex = checkPath.lastIndexOf(npath.sep);
  13257. checkPath = checkPath.slice(0, separatorIndex);
  13258. if (checkPath.endsWith(`${npath.sep}node_modules`))
  13259. return false;
  13260. const pjson = readPackage(checkPath + npath.sep);
  13261. if (pjson) {
  13262. return {
  13263. data: pjson,
  13264. path: checkPath
  13265. };
  13266. }
  13267. } while (separatorIndex > rootSeparatorIndex);
  13268. return false;
  13269. }
  13270. function readPackage(requestPath) {
  13271. const jsonPath = npath.resolve(requestPath, `package.json`);
  13272. if (!fs__default.default.existsSync(jsonPath))
  13273. return null;
  13274. return JSON.parse(fs__default.default.readFileSync(jsonPath, `utf8`));
  13275. }
  13276. function ERR_REQUIRE_ESM(filename, parentPath = null) {
  13277. const basename = parentPath && path__default.default.basename(filename) === path__default.default.basename(parentPath) ? filename : path__default.default.basename(filename);
  13278. const msg = `require() of ES Module ${filename}${parentPath ? ` from ${parentPath}` : ``} not supported.
  13279. Instead change the require of ${basename} in ${parentPath} to a dynamic import() which is available in all CommonJS modules.`;
  13280. const err = new Error(msg);
  13281. err.code = `ERR_REQUIRE_ESM`;
  13282. return err;
  13283. }
  13284. function reportRequiredFilesToWatchMode(files) {
  13285. if (process.env.WATCH_REPORT_DEPENDENCIES && process.send) {
  13286. files = files.map((filename) => npath.fromPortablePath(VirtualFS.resolveVirtual(npath.toPortablePath(filename))));
  13287. if (WATCH_MODE_MESSAGE_USES_ARRAYS) {
  13288. process.send({ "watch:require": files });
  13289. } else {
  13290. for (const filename of files) {
  13291. process.send({ "watch:require": filename });
  13292. }
  13293. }
  13294. }
  13295. }
  13296. function applyPatch(pnpapi, opts) {
  13297. let enableNativeHooks = true;
  13298. process.versions.pnp = String(pnpapi.VERSIONS.std);
  13299. const moduleExports = require$$0__default.default;
  13300. moduleExports.findPnpApi = (lookupSource) => {
  13301. const lookupPath = lookupSource instanceof url.URL ? url.fileURLToPath(lookupSource) : lookupSource;
  13302. const apiPath = opts.manager.findApiPathFor(lookupPath);
  13303. if (apiPath === null)
  13304. return null;
  13305. const apiEntry = opts.manager.getApiEntry(apiPath, true);
  13306. return apiEntry.instance.findPackageLocator(lookupPath) ? apiEntry.instance : null;
  13307. };
  13308. function getRequireStack(parent) {
  13309. const requireStack = [];
  13310. for (let cursor = parent; cursor; cursor = cursor.parent)
  13311. requireStack.push(cursor.filename || cursor.id);
  13312. return requireStack;
  13313. }
  13314. const originalModuleLoad = require$$0.Module._load;
  13315. require$$0.Module._load = function(request, parent, isMain) {
  13316. if (request === `pnpapi`) {
  13317. const parentApiPath = opts.manager.getApiPathFromParent(parent);
  13318. if (parentApiPath) {
  13319. return opts.manager.getApiEntry(parentApiPath, true).instance;
  13320. }
  13321. }
  13322. return originalModuleLoad.call(require$$0.Module, request, parent, isMain);
  13323. };
  13324. function getIssuerSpecsFromPaths(paths) {
  13325. return paths.map((path) => ({
  13326. apiPath: opts.manager.findApiPathFor(path),
  13327. path,
  13328. module: null
  13329. }));
  13330. }
  13331. function getIssuerSpecsFromModule(module) {
  13332. var _a;
  13333. if (module && module.id !== `<repl>` && module.id !== `internal/preload` && !module.parent && !module.filename && module.paths.length > 0) {
  13334. return [{
  13335. apiPath: opts.manager.findApiPathFor(module.paths[0]),
  13336. path: module.paths[0],
  13337. module
  13338. }];
  13339. }
  13340. const issuer = getIssuerModule(module);
  13341. if (issuer !== null) {
  13342. const path = npath.dirname(issuer.filename);
  13343. const apiPath = opts.manager.getApiPathFromParent(issuer);
  13344. return [{ apiPath, path, module }];
  13345. } else {
  13346. const path = process.cwd();
  13347. const apiPath = (_a = opts.manager.findApiPathFor(npath.join(path, `[file]`))) != null ? _a : opts.manager.getApiPathFromParent(null);
  13348. return [{ apiPath, path, module }];
  13349. }
  13350. }
  13351. function makeFakeParent(path) {
  13352. const fakeParent = new require$$0.Module(``);
  13353. const fakeFilePath = npath.join(path, `[file]`);
  13354. fakeParent.paths = require$$0.Module._nodeModulePaths(fakeFilePath);
  13355. return fakeParent;
  13356. }
  13357. const pathRegExp = /^(?![a-zA-Z]:[\\/]|\\\\|\.{0,2}(?:\/|$))((?:@[^/]+\/)?[^/]+)\/*(.*|)$/;
  13358. const originalModuleResolveFilename = require$$0.Module._resolveFilename;
  13359. require$$0.Module._resolveFilename = function(request, parent, isMain, options) {
  13360. if (isBuiltinModule(request))
  13361. return request;
  13362. if (!enableNativeHooks)
  13363. return originalModuleResolveFilename.call(require$$0.Module, request, parent, isMain, options);
  13364. if (options && options.plugnplay === false) {
  13365. const { plugnplay, ...rest } = options;
  13366. const forwardedOptions = Object.keys(rest).length > 0 ? rest : void 0;
  13367. try {
  13368. enableNativeHooks = false;
  13369. return originalModuleResolveFilename.call(require$$0.Module, request, parent, isMain, forwardedOptions);
  13370. } finally {
  13371. enableNativeHooks = true;
  13372. }
  13373. }
  13374. if (options) {
  13375. const optionNames = new Set(Object.keys(options));
  13376. optionNames.delete(`paths`);
  13377. optionNames.delete(`plugnplay`);
  13378. if (optionNames.size > 0) {
  13379. throw makeError(
  13380. ErrorCode.UNSUPPORTED,
  13381. `Some options passed to require() aren't supported by PnP yet (${Array.from(optionNames).join(`, `)})`
  13382. );
  13383. }
  13384. }
  13385. const issuerSpecs = options && options.paths ? getIssuerSpecsFromPaths(options.paths) : getIssuerSpecsFromModule(parent);
  13386. if (request.match(pathRegExp) === null) {
  13387. const parentDirectory = (parent == null ? void 0 : parent.filename) != null ? npath.dirname(parent.filename) : null;
  13388. const absoluteRequest = npath.isAbsolute(request) ? request : parentDirectory !== null ? npath.resolve(parentDirectory, request) : null;
  13389. if (absoluteRequest !== null) {
  13390. const apiPath = parent && parentDirectory === npath.dirname(absoluteRequest) ? opts.manager.getApiPathFromParent(parent) : opts.manager.findApiPathFor(absoluteRequest);
  13391. if (apiPath !== null) {
  13392. issuerSpecs.unshift({
  13393. apiPath,
  13394. path: parentDirectory,
  13395. module: null
  13396. });
  13397. }
  13398. }
  13399. }
  13400. let firstError;
  13401. for (const { apiPath, path, module } of issuerSpecs) {
  13402. let resolution;
  13403. const issuerApi = apiPath !== null ? opts.manager.getApiEntry(apiPath, true).instance : null;
  13404. try {
  13405. if (issuerApi !== null) {
  13406. resolution = issuerApi.resolveRequest(request, path !== null ? `${path}/` : null);
  13407. } else {
  13408. if (path === null)
  13409. throw new Error(`Assertion failed: Expected the path to be set`);
  13410. resolution = originalModuleResolveFilename.call(require$$0.Module, request, module || makeFakeParent(path), isMain);
  13411. }
  13412. } catch (error) {
  13413. firstError = firstError || error;
  13414. continue;
  13415. }
  13416. if (resolution !== null) {
  13417. return resolution;
  13418. }
  13419. }
  13420. const requireStack = getRequireStack(parent);
  13421. Object.defineProperty(firstError, `requireStack`, {
  13422. configurable: true,
  13423. writable: true,
  13424. enumerable: false,
  13425. value: requireStack
  13426. });
  13427. if (requireStack.length > 0)
  13428. firstError.message += `
  13429. Require stack:
  13430. - ${requireStack.join(`
  13431. - `)}`;
  13432. if (typeof firstError.pnpCode === `string`)
  13433. Error.captureStackTrace(firstError);
  13434. throw firstError;
  13435. };
  13436. const originalFindPath = require$$0.Module._findPath;
  13437. require$$0.Module._findPath = function(request, paths, isMain) {
  13438. if (request === `pnpapi`)
  13439. return false;
  13440. if (!enableNativeHooks)
  13441. return originalFindPath.call(require$$0.Module, request, paths, isMain);
  13442. const isAbsolute = npath.isAbsolute(request);
  13443. if (isAbsolute)
  13444. paths = [``];
  13445. else if (!paths || paths.length === 0)
  13446. return false;
  13447. for (const path of paths) {
  13448. let resolution;
  13449. try {
  13450. const pnpApiPath = opts.manager.findApiPathFor(isAbsolute ? request : path);
  13451. if (pnpApiPath !== null) {
  13452. const api = opts.manager.getApiEntry(pnpApiPath, true).instance;
  13453. resolution = api.resolveRequest(request, path) || false;
  13454. } else {
  13455. resolution = originalFindPath.call(require$$0.Module, request, [path], isMain);
  13456. }
  13457. } catch (error) {
  13458. continue;
  13459. }
  13460. if (resolution) {
  13461. return resolution;
  13462. }
  13463. }
  13464. return false;
  13465. };
  13466. const originalExtensionJSFunction = require$$0.Module._extensions[`.js`];
  13467. require$$0.Module._extensions[`.js`] = function(module, filename) {
  13468. var _a, _b;
  13469. if (filename.endsWith(`.js`)) {
  13470. const pkg = readPackageScope(filename);
  13471. if (pkg && ((_a = pkg.data) == null ? void 0 : _a.type) === `module`) {
  13472. const err = ERR_REQUIRE_ESM(filename, (_b = module.parent) == null ? void 0 : _b.filename);
  13473. Error.captureStackTrace(err);
  13474. throw err;
  13475. }
  13476. }
  13477. originalExtensionJSFunction.call(this, module, filename);
  13478. };
  13479. const originalDlopen = process.dlopen;
  13480. process.dlopen = function(...args) {
  13481. const [module, filename, ...rest] = args;
  13482. return originalDlopen.call(
  13483. this,
  13484. module,
  13485. npath.fromPortablePath(VirtualFS.resolveVirtual(npath.toPortablePath(filename))),
  13486. ...rest
  13487. );
  13488. };
  13489. const originalEmit = process.emit;
  13490. process.emit = function(name, data, ...args) {
  13491. if (name === `warning` && typeof data === `object` && data.name === `ExperimentalWarning` && (data.message.includes(`--experimental-loader`) || data.message.includes(`Custom ESM Loaders is an experimental feature`)))
  13492. return false;
  13493. return originalEmit.apply(process, arguments);
  13494. };
  13495. patchFs(fs__default.default, new PosixFS(opts.fakeFs));
  13496. }
  13497. function hydrateRuntimeState(data, { basePath }) {
  13498. const portablePath = npath.toPortablePath(basePath);
  13499. const absolutePortablePath = ppath.resolve(portablePath);
  13500. const ignorePattern = data.ignorePatternData !== null ? new RegExp(data.ignorePatternData) : null;
  13501. const packageLocatorsByLocations = /* @__PURE__ */ new Map();
  13502. const packageRegistry = new Map(data.packageRegistryData.map(([packageName, packageStoreData]) => {
  13503. return [packageName, new Map(packageStoreData.map(([packageReference, packageInformationData]) => {
  13504. var _a;
  13505. if (packageName === null !== (packageReference === null))
  13506. throw new Error(`Assertion failed: The name and reference should be null, or neither should`);
  13507. const discardFromLookup = (_a = packageInformationData.discardFromLookup) != null ? _a : false;
  13508. const packageLocator = { name: packageName, reference: packageReference };
  13509. const entry = packageLocatorsByLocations.get(packageInformationData.packageLocation);
  13510. if (!entry) {
  13511. packageLocatorsByLocations.set(packageInformationData.packageLocation, { locator: packageLocator, discardFromLookup });
  13512. } else {
  13513. entry.discardFromLookup = entry.discardFromLookup && discardFromLookup;
  13514. if (!discardFromLookup) {
  13515. entry.locator = packageLocator;
  13516. }
  13517. }
  13518. let resolvedPackageLocation = null;
  13519. return [packageReference, {
  13520. packageDependencies: new Map(packageInformationData.packageDependencies),
  13521. packagePeers: new Set(packageInformationData.packagePeers),
  13522. linkType: packageInformationData.linkType,
  13523. discardFromLookup,
  13524. get packageLocation() {
  13525. return resolvedPackageLocation || (resolvedPackageLocation = ppath.join(absolutePortablePath, packageInformationData.packageLocation));
  13526. }
  13527. }];
  13528. }))];
  13529. }));
  13530. const fallbackExclusionList = new Map(data.fallbackExclusionList.map(([packageName, packageReferences]) => {
  13531. return [packageName, new Set(packageReferences)];
  13532. }));
  13533. const fallbackPool = new Map(data.fallbackPool);
  13534. const dependencyTreeRoots = data.dependencyTreeRoots;
  13535. const enableTopLevelFallback = data.enableTopLevelFallback;
  13536. return {
  13537. basePath: portablePath,
  13538. dependencyTreeRoots,
  13539. enableTopLevelFallback,
  13540. fallbackExclusionList,
  13541. fallbackPool,
  13542. ignorePattern,
  13543. packageLocatorsByLocations,
  13544. packageRegistry
  13545. };
  13546. }
  13547. const ArrayIsArray = Array.isArray;
  13548. const JSONStringify = JSON.stringify;
  13549. const ObjectGetOwnPropertyNames = Object.getOwnPropertyNames;
  13550. const ObjectPrototypeHasOwnProperty = (obj, prop) => Object.prototype.hasOwnProperty.call(obj, prop);
  13551. const RegExpPrototypeExec = (obj, string) => RegExp.prototype.exec.call(obj, string);
  13552. const RegExpPrototypeSymbolReplace = (obj, ...rest) => RegExp.prototype[Symbol.replace].apply(obj, rest);
  13553. const StringPrototypeEndsWith = (str, ...rest) => String.prototype.endsWith.apply(str, rest);
  13554. const StringPrototypeIncludes = (str, ...rest) => String.prototype.includes.apply(str, rest);
  13555. const StringPrototypeLastIndexOf = (str, ...rest) => String.prototype.lastIndexOf.apply(str, rest);
  13556. const StringPrototypeIndexOf = (str, ...rest) => String.prototype.indexOf.apply(str, rest);
  13557. const StringPrototypeReplace = (str, ...rest) => String.prototype.replace.apply(str, rest);
  13558. const StringPrototypeSlice = (str, ...rest) => String.prototype.slice.apply(str, rest);
  13559. const StringPrototypeStartsWith = (str, ...rest) => String.prototype.startsWith.apply(str, rest);
  13560. const SafeMap = Map;
  13561. const JSONParse = JSON.parse;
  13562. function createErrorType(code, messageCreator, errorType) {
  13563. return class extends errorType {
  13564. constructor(...args) {
  13565. super(messageCreator(...args));
  13566. this.code = code;
  13567. this.name = `${errorType.name} [${code}]`;
  13568. }
  13569. };
  13570. }
  13571. const ERR_PACKAGE_IMPORT_NOT_DEFINED = createErrorType(
  13572. `ERR_PACKAGE_IMPORT_NOT_DEFINED`,
  13573. (specifier, packagePath, base) => {
  13574. return `Package import specifier "${specifier}" is not defined${packagePath ? ` in package ${packagePath}package.json` : ``} imported from ${base}`;
  13575. },
  13576. TypeError
  13577. );
  13578. const ERR_INVALID_MODULE_SPECIFIER = createErrorType(
  13579. `ERR_INVALID_MODULE_SPECIFIER`,
  13580. (request, reason, base = void 0) => {
  13581. return `Invalid module "${request}" ${reason}${base ? ` imported from ${base}` : ``}`;
  13582. },
  13583. TypeError
  13584. );
  13585. const ERR_INVALID_PACKAGE_TARGET = createErrorType(
  13586. `ERR_INVALID_PACKAGE_TARGET`,
  13587. (pkgPath, key, target, isImport = false, base = void 0) => {
  13588. const relError = typeof target === `string` && !isImport && target.length && !StringPrototypeStartsWith(target, `./`);
  13589. if (key === `.`) {
  13590. assert__default.default(isImport === false);
  13591. return `Invalid "exports" main target ${JSONStringify(target)} defined in the package config ${pkgPath}package.json${base ? ` imported from ${base}` : ``}${relError ? `; targets must start with "./"` : ``}`;
  13592. }
  13593. return `Invalid "${isImport ? `imports` : `exports`}" target ${JSONStringify(
  13594. target
  13595. )} defined for '${key}' in the package config ${pkgPath}package.json${base ? ` imported from ${base}` : ``}${relError ? `; targets must start with "./"` : ``}`;
  13596. },
  13597. Error
  13598. );
  13599. const ERR_INVALID_PACKAGE_CONFIG = createErrorType(
  13600. `ERR_INVALID_PACKAGE_CONFIG`,
  13601. (path, base, message) => {
  13602. return `Invalid package config ${path}${base ? ` while importing ${base}` : ``}${message ? `. ${message}` : ``}`;
  13603. },
  13604. Error
  13605. );
  13606. const ERR_PACKAGE_PATH_NOT_EXPORTED = createErrorType(
  13607. "ERR_PACKAGE_PATH_NOT_EXPORTED",
  13608. (pkgPath, subpath, base = void 0) => {
  13609. if (subpath === ".")
  13610. return `No "exports" main defined in ${pkgPath}package.json${base ? ` imported from ${base}` : ""}`;
  13611. return `Package subpath '${subpath}' is not defined by "exports" in ${pkgPath}package.json${base ? ` imported from ${base}` : ""}`;
  13612. },
  13613. Error
  13614. );
  13615. function filterOwnProperties(source, keys) {
  13616. const filtered = /* @__PURE__ */ Object.create(null);
  13617. for (let i = 0; i < keys.length; i++) {
  13618. const key = keys[i];
  13619. if (ObjectPrototypeHasOwnProperty(source, key)) {
  13620. filtered[key] = source[key];
  13621. }
  13622. }
  13623. return filtered;
  13624. }
  13625. const packageJSONCache = new SafeMap();
  13626. function getPackageConfig(path, specifier, base, readFileSyncFn) {
  13627. const existing = packageJSONCache.get(path);
  13628. if (existing !== void 0) {
  13629. return existing;
  13630. }
  13631. const source = readFileSyncFn(path);
  13632. if (source === void 0) {
  13633. const packageConfig2 = {
  13634. pjsonPath: path,
  13635. exists: false,
  13636. main: void 0,
  13637. name: void 0,
  13638. type: "none",
  13639. exports: void 0,
  13640. imports: void 0
  13641. };
  13642. packageJSONCache.set(path, packageConfig2);
  13643. return packageConfig2;
  13644. }
  13645. let packageJSON;
  13646. try {
  13647. packageJSON = JSONParse(source);
  13648. } catch (error) {
  13649. throw new ERR_INVALID_PACKAGE_CONFIG(
  13650. path,
  13651. (base ? `"${specifier}" from ` : "") + url.fileURLToPath(base || specifier),
  13652. error.message
  13653. );
  13654. }
  13655. let { imports, main, name, type } = filterOwnProperties(packageJSON, [
  13656. "imports",
  13657. "main",
  13658. "name",
  13659. "type"
  13660. ]);
  13661. const exports = ObjectPrototypeHasOwnProperty(packageJSON, "exports") ? packageJSON.exports : void 0;
  13662. if (typeof imports !== "object" || imports === null) {
  13663. imports = void 0;
  13664. }
  13665. if (typeof main !== "string") {
  13666. main = void 0;
  13667. }
  13668. if (typeof name !== "string") {
  13669. name = void 0;
  13670. }
  13671. if (type !== "module" && type !== "commonjs") {
  13672. type = "none";
  13673. }
  13674. const packageConfig = {
  13675. pjsonPath: path,
  13676. exists: true,
  13677. main,
  13678. name,
  13679. type,
  13680. exports,
  13681. imports
  13682. };
  13683. packageJSONCache.set(path, packageConfig);
  13684. return packageConfig;
  13685. }
  13686. function getPackageScopeConfig(resolved, readFileSyncFn) {
  13687. let packageJSONUrl = new URL("./package.json", resolved);
  13688. while (true) {
  13689. const packageJSONPath2 = packageJSONUrl.pathname;
  13690. if (StringPrototypeEndsWith(packageJSONPath2, "node_modules/package.json")) {
  13691. break;
  13692. }
  13693. const packageConfig2 = getPackageConfig(
  13694. url.fileURLToPath(packageJSONUrl),
  13695. resolved,
  13696. void 0,
  13697. readFileSyncFn
  13698. );
  13699. if (packageConfig2.exists) {
  13700. return packageConfig2;
  13701. }
  13702. const lastPackageJSONUrl = packageJSONUrl;
  13703. packageJSONUrl = new URL("../package.json", packageJSONUrl);
  13704. if (packageJSONUrl.pathname === lastPackageJSONUrl.pathname) {
  13705. break;
  13706. }
  13707. }
  13708. const packageJSONPath = url.fileURLToPath(packageJSONUrl);
  13709. const packageConfig = {
  13710. pjsonPath: packageJSONPath,
  13711. exists: false,
  13712. main: void 0,
  13713. name: void 0,
  13714. type: "none",
  13715. exports: void 0,
  13716. imports: void 0
  13717. };
  13718. packageJSONCache.set(packageJSONPath, packageConfig);
  13719. return packageConfig;
  13720. }
  13721. /**
  13722. @license
  13723. Copyright Node.js contributors. All rights reserved.
  13724. Permission is hereby granted, free of charge, to any person obtaining a copy
  13725. of this software and associated documentation files (the "Software"), to
  13726. deal in the Software without restriction, including without limitation the
  13727. rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
  13728. sell copies of the Software, and to permit persons to whom the Software is
  13729. furnished to do so, subject to the following conditions:
  13730. The above copyright notice and this permission notice shall be included in
  13731. all copies or substantial portions of the Software.
  13732. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  13733. IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  13734. FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
  13735. AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
  13736. LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
  13737. FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
  13738. IN THE SOFTWARE.
  13739. */
  13740. function throwImportNotDefined(specifier, packageJSONUrl, base) {
  13741. throw new ERR_PACKAGE_IMPORT_NOT_DEFINED(
  13742. specifier,
  13743. packageJSONUrl && url.fileURLToPath(new URL(".", packageJSONUrl)),
  13744. url.fileURLToPath(base)
  13745. );
  13746. }
  13747. function throwInvalidSubpath(subpath, packageJSONUrl, internal, base) {
  13748. const reason = `request is not a valid subpath for the "${internal ? "imports" : "exports"}" resolution of ${url.fileURLToPath(packageJSONUrl)}`;
  13749. throw new ERR_INVALID_MODULE_SPECIFIER(
  13750. subpath,
  13751. reason,
  13752. base && url.fileURLToPath(base)
  13753. );
  13754. }
  13755. function throwInvalidPackageTarget(subpath, target, packageJSONUrl, internal, base) {
  13756. if (typeof target === "object" && target !== null) {
  13757. target = JSONStringify(target, null, "");
  13758. } else {
  13759. target = `${target}`;
  13760. }
  13761. throw new ERR_INVALID_PACKAGE_TARGET(
  13762. url.fileURLToPath(new URL(".", packageJSONUrl)),
  13763. subpath,
  13764. target,
  13765. internal,
  13766. base && url.fileURLToPath(base)
  13767. );
  13768. }
  13769. const invalidSegmentRegEx = /(^|\\|\/)((\.|%2e)(\.|%2e)?|(n|%6e|%4e)(o|%6f|%4f)(d|%64|%44)(e|%65|%45)(_|%5f)(m|%6d|%4d)(o|%6f|%4f)(d|%64|%44)(u|%75|%55)(l|%6c|%4c)(e|%65|%45)(s|%73|%53))(\\|\/|$)/i;
  13770. const patternRegEx = /\*/g;
  13771. function resolvePackageTargetString(target, subpath, match, packageJSONUrl, base, pattern, internal, conditions) {
  13772. if (subpath !== "" && !pattern && target[target.length - 1] !== "/")
  13773. throwInvalidPackageTarget(match, target, packageJSONUrl, internal, base);
  13774. if (!StringPrototypeStartsWith(target, "./")) {
  13775. if (internal && !StringPrototypeStartsWith(target, "../") && !StringPrototypeStartsWith(target, "/")) {
  13776. let isURL = false;
  13777. try {
  13778. new URL(target);
  13779. isURL = true;
  13780. } catch {
  13781. }
  13782. if (!isURL) {
  13783. const exportTarget = pattern ? RegExpPrototypeSymbolReplace(patternRegEx, target, () => subpath) : target + subpath;
  13784. return exportTarget;
  13785. }
  13786. }
  13787. throwInvalidPackageTarget(match, target, packageJSONUrl, internal, base);
  13788. }
  13789. if (RegExpPrototypeExec(
  13790. invalidSegmentRegEx,
  13791. StringPrototypeSlice(target, 2)
  13792. ) !== null)
  13793. throwInvalidPackageTarget(match, target, packageJSONUrl, internal, base);
  13794. const resolved = new URL(target, packageJSONUrl);
  13795. const resolvedPath = resolved.pathname;
  13796. const packagePath = new URL(".", packageJSONUrl).pathname;
  13797. if (!StringPrototypeStartsWith(resolvedPath, packagePath))
  13798. throwInvalidPackageTarget(match, target, packageJSONUrl, internal, base);
  13799. if (subpath === "")
  13800. return resolved;
  13801. if (RegExpPrototypeExec(invalidSegmentRegEx, subpath) !== null) {
  13802. const request = pattern ? StringPrototypeReplace(match, "*", () => subpath) : match + subpath;
  13803. throwInvalidSubpath(request, packageJSONUrl, internal, base);
  13804. }
  13805. if (pattern) {
  13806. return new URL(
  13807. RegExpPrototypeSymbolReplace(patternRegEx, resolved.href, () => subpath)
  13808. );
  13809. }
  13810. return new URL(subpath, resolved);
  13811. }
  13812. function isArrayIndex(key) {
  13813. const keyNum = +key;
  13814. if (`${keyNum}` !== key)
  13815. return false;
  13816. return keyNum >= 0 && keyNum < 4294967295;
  13817. }
  13818. function resolvePackageTarget(packageJSONUrl, target, subpath, packageSubpath, base, pattern, internal, conditions) {
  13819. if (typeof target === "string") {
  13820. return resolvePackageTargetString(
  13821. target,
  13822. subpath,
  13823. packageSubpath,
  13824. packageJSONUrl,
  13825. base,
  13826. pattern,
  13827. internal);
  13828. } else if (ArrayIsArray(target)) {
  13829. if (target.length === 0) {
  13830. return null;
  13831. }
  13832. let lastException;
  13833. for (let i = 0; i < target.length; i++) {
  13834. const targetItem = target[i];
  13835. let resolveResult;
  13836. try {
  13837. resolveResult = resolvePackageTarget(
  13838. packageJSONUrl,
  13839. targetItem,
  13840. subpath,
  13841. packageSubpath,
  13842. base,
  13843. pattern,
  13844. internal,
  13845. conditions
  13846. );
  13847. } catch (e) {
  13848. lastException = e;
  13849. if (e.code === "ERR_INVALID_PACKAGE_TARGET") {
  13850. continue;
  13851. }
  13852. throw e;
  13853. }
  13854. if (resolveResult === void 0) {
  13855. continue;
  13856. }
  13857. if (resolveResult === null) {
  13858. lastException = null;
  13859. continue;
  13860. }
  13861. return resolveResult;
  13862. }
  13863. if (lastException === void 0 || lastException === null)
  13864. return lastException;
  13865. throw lastException;
  13866. } else if (typeof target === "object" && target !== null) {
  13867. const keys = ObjectGetOwnPropertyNames(target);
  13868. for (let i = 0; i < keys.length; i++) {
  13869. const key = keys[i];
  13870. if (isArrayIndex(key)) {
  13871. throw new ERR_INVALID_PACKAGE_CONFIG(
  13872. url.fileURLToPath(packageJSONUrl),
  13873. base,
  13874. '"exports" cannot contain numeric property keys.'
  13875. );
  13876. }
  13877. }
  13878. for (let i = 0; i < keys.length; i++) {
  13879. const key = keys[i];
  13880. if (key === "default" || conditions.has(key)) {
  13881. const conditionalTarget = target[key];
  13882. const resolveResult = resolvePackageTarget(
  13883. packageJSONUrl,
  13884. conditionalTarget,
  13885. subpath,
  13886. packageSubpath,
  13887. base,
  13888. pattern,
  13889. internal,
  13890. conditions
  13891. );
  13892. if (resolveResult === void 0)
  13893. continue;
  13894. return resolveResult;
  13895. }
  13896. }
  13897. return void 0;
  13898. } else if (target === null) {
  13899. return null;
  13900. }
  13901. throwInvalidPackageTarget(
  13902. packageSubpath,
  13903. target,
  13904. packageJSONUrl,
  13905. internal,
  13906. base
  13907. );
  13908. }
  13909. function patternKeyCompare(a, b) {
  13910. const aPatternIndex = StringPrototypeIndexOf(a, "*");
  13911. const bPatternIndex = StringPrototypeIndexOf(b, "*");
  13912. const baseLenA = aPatternIndex === -1 ? a.length : aPatternIndex + 1;
  13913. const baseLenB = bPatternIndex === -1 ? b.length : bPatternIndex + 1;
  13914. if (baseLenA > baseLenB)
  13915. return -1;
  13916. if (baseLenB > baseLenA)
  13917. return 1;
  13918. if (aPatternIndex === -1)
  13919. return 1;
  13920. if (bPatternIndex === -1)
  13921. return -1;
  13922. if (a.length > b.length)
  13923. return -1;
  13924. if (b.length > a.length)
  13925. return 1;
  13926. return 0;
  13927. }
  13928. function isConditionalExportsMainSugar(exports, packageJSONUrl, base) {
  13929. if (typeof exports === "string" || ArrayIsArray(exports))
  13930. return true;
  13931. if (typeof exports !== "object" || exports === null)
  13932. return false;
  13933. const keys = ObjectGetOwnPropertyNames(exports);
  13934. let isConditionalSugar = false;
  13935. let i = 0;
  13936. for (let j = 0; j < keys.length; j++) {
  13937. const key = keys[j];
  13938. const curIsConditionalSugar = key === "" || key[0] !== ".";
  13939. if (i++ === 0) {
  13940. isConditionalSugar = curIsConditionalSugar;
  13941. } else if (isConditionalSugar !== curIsConditionalSugar) {
  13942. throw new ERR_INVALID_PACKAGE_CONFIG(
  13943. url.fileURLToPath(packageJSONUrl),
  13944. base,
  13945. `"exports" cannot contain some keys starting with '.' and some not. The exports object must either be an object of package subpath keys or an object of main entry condition name keys only.`
  13946. );
  13947. }
  13948. }
  13949. return isConditionalSugar;
  13950. }
  13951. function throwExportsNotFound(subpath, packageJSONUrl, base) {
  13952. throw new ERR_PACKAGE_PATH_NOT_EXPORTED(
  13953. url.fileURLToPath(new URL(".", packageJSONUrl)),
  13954. subpath,
  13955. base && url.fileURLToPath(base)
  13956. );
  13957. }
  13958. const emittedPackageWarnings = /* @__PURE__ */ new Set();
  13959. function emitTrailingSlashPatternDeprecation(match, pjsonUrl, base) {
  13960. const pjsonPath = url.fileURLToPath(pjsonUrl);
  13961. if (emittedPackageWarnings.has(pjsonPath + "|" + match))
  13962. return;
  13963. emittedPackageWarnings.add(pjsonPath + "|" + match);
  13964. process.emitWarning(
  13965. `Use of deprecated trailing slash pattern mapping "${match}" in the "exports" field module resolution of the package at ${pjsonPath}${base ? ` imported from ${url.fileURLToPath(base)}` : ""}. Mapping specifiers ending in "/" is no longer supported.`,
  13966. "DeprecationWarning",
  13967. "DEP0155"
  13968. );
  13969. }
  13970. function packageExportsResolve({
  13971. packageJSONUrl,
  13972. packageSubpath,
  13973. exports,
  13974. base,
  13975. conditions
  13976. }) {
  13977. if (isConditionalExportsMainSugar(exports, packageJSONUrl, base))
  13978. exports = { ".": exports };
  13979. if (ObjectPrototypeHasOwnProperty(exports, packageSubpath) && !StringPrototypeIncludes(packageSubpath, "*") && !StringPrototypeEndsWith(packageSubpath, "/")) {
  13980. const target = exports[packageSubpath];
  13981. const resolveResult = resolvePackageTarget(
  13982. packageJSONUrl,
  13983. target,
  13984. "",
  13985. packageSubpath,
  13986. base,
  13987. false,
  13988. false,
  13989. conditions
  13990. );
  13991. if (resolveResult == null) {
  13992. throwExportsNotFound(packageSubpath, packageJSONUrl, base);
  13993. }
  13994. return resolveResult;
  13995. }
  13996. let bestMatch = "";
  13997. let bestMatchSubpath;
  13998. const keys = ObjectGetOwnPropertyNames(exports);
  13999. for (let i = 0; i < keys.length; i++) {
  14000. const key = keys[i];
  14001. const patternIndex = StringPrototypeIndexOf(key, "*");
  14002. if (patternIndex !== -1 && StringPrototypeStartsWith(
  14003. packageSubpath,
  14004. StringPrototypeSlice(key, 0, patternIndex)
  14005. )) {
  14006. if (StringPrototypeEndsWith(packageSubpath, "/"))
  14007. emitTrailingSlashPatternDeprecation(
  14008. packageSubpath,
  14009. packageJSONUrl,
  14010. base
  14011. );
  14012. const patternTrailer = StringPrototypeSlice(key, patternIndex + 1);
  14013. if (packageSubpath.length >= key.length && StringPrototypeEndsWith(packageSubpath, patternTrailer) && patternKeyCompare(bestMatch, key) === 1 && StringPrototypeLastIndexOf(key, "*") === patternIndex) {
  14014. bestMatch = key;
  14015. bestMatchSubpath = StringPrototypeSlice(
  14016. packageSubpath,
  14017. patternIndex,
  14018. packageSubpath.length - patternTrailer.length
  14019. );
  14020. }
  14021. }
  14022. }
  14023. if (bestMatch) {
  14024. const target = exports[bestMatch];
  14025. const resolveResult = resolvePackageTarget(
  14026. packageJSONUrl,
  14027. target,
  14028. bestMatchSubpath,
  14029. bestMatch,
  14030. base,
  14031. true,
  14032. false,
  14033. conditions
  14034. );
  14035. if (resolveResult == null) {
  14036. throwExportsNotFound(packageSubpath, packageJSONUrl, base);
  14037. }
  14038. return resolveResult;
  14039. }
  14040. throwExportsNotFound(packageSubpath, packageJSONUrl, base);
  14041. }
  14042. function packageImportsResolve({ name, base, conditions, readFileSyncFn }) {
  14043. if (name === "#" || StringPrototypeStartsWith(name, "#/") || StringPrototypeEndsWith(name, "/")) {
  14044. const reason = "is not a valid internal imports specifier name";
  14045. throw new ERR_INVALID_MODULE_SPECIFIER(name, reason, url.fileURLToPath(base));
  14046. }
  14047. let packageJSONUrl;
  14048. const packageConfig = getPackageScopeConfig(base, readFileSyncFn);
  14049. if (packageConfig.exists) {
  14050. packageJSONUrl = url.pathToFileURL(packageConfig.pjsonPath);
  14051. const imports = packageConfig.imports;
  14052. if (imports) {
  14053. if (ObjectPrototypeHasOwnProperty(imports, name) && !StringPrototypeIncludes(name, "*")) {
  14054. const resolveResult = resolvePackageTarget(
  14055. packageJSONUrl,
  14056. imports[name],
  14057. "",
  14058. name,
  14059. base,
  14060. false,
  14061. true,
  14062. conditions
  14063. );
  14064. if (resolveResult != null) {
  14065. return resolveResult;
  14066. }
  14067. } else {
  14068. let bestMatch = "";
  14069. let bestMatchSubpath;
  14070. const keys = ObjectGetOwnPropertyNames(imports);
  14071. for (let i = 0; i < keys.length; i++) {
  14072. const key = keys[i];
  14073. const patternIndex = StringPrototypeIndexOf(key, "*");
  14074. if (patternIndex !== -1 && StringPrototypeStartsWith(
  14075. name,
  14076. StringPrototypeSlice(key, 0, patternIndex)
  14077. )) {
  14078. const patternTrailer = StringPrototypeSlice(key, patternIndex + 1);
  14079. if (name.length >= key.length && StringPrototypeEndsWith(name, patternTrailer) && patternKeyCompare(bestMatch, key) === 1 && StringPrototypeLastIndexOf(key, "*") === patternIndex) {
  14080. bestMatch = key;
  14081. bestMatchSubpath = StringPrototypeSlice(
  14082. name,
  14083. patternIndex,
  14084. name.length - patternTrailer.length
  14085. );
  14086. }
  14087. }
  14088. }
  14089. if (bestMatch) {
  14090. const target = imports[bestMatch];
  14091. const resolveResult = resolvePackageTarget(
  14092. packageJSONUrl,
  14093. target,
  14094. bestMatchSubpath,
  14095. bestMatch,
  14096. base,
  14097. true,
  14098. true,
  14099. conditions
  14100. );
  14101. if (resolveResult != null) {
  14102. return resolveResult;
  14103. }
  14104. }
  14105. }
  14106. }
  14107. }
  14108. throwImportNotDefined(name, packageJSONUrl, base);
  14109. }
  14110. const flagSymbol = Symbol('arg flag');
  14111. class ArgError extends Error {
  14112. constructor(msg, code) {
  14113. super(msg);
  14114. this.name = 'ArgError';
  14115. this.code = code;
  14116. Object.setPrototypeOf(this, ArgError.prototype);
  14117. }
  14118. }
  14119. function arg(
  14120. opts,
  14121. {
  14122. argv = process.argv.slice(2),
  14123. permissive = false,
  14124. stopAtPositional = false
  14125. } = {}
  14126. ) {
  14127. if (!opts) {
  14128. throw new ArgError(
  14129. 'argument specification object is required',
  14130. 'ARG_CONFIG_NO_SPEC'
  14131. );
  14132. }
  14133. const result = { _: [] };
  14134. const aliases = {};
  14135. const handlers = {};
  14136. for (const key of Object.keys(opts)) {
  14137. if (!key) {
  14138. throw new ArgError(
  14139. 'argument key cannot be an empty string',
  14140. 'ARG_CONFIG_EMPTY_KEY'
  14141. );
  14142. }
  14143. if (key[0] !== '-') {
  14144. throw new ArgError(
  14145. `argument key must start with '-' but found: '${key}'`,
  14146. 'ARG_CONFIG_NONOPT_KEY'
  14147. );
  14148. }
  14149. if (key.length === 1) {
  14150. throw new ArgError(
  14151. `argument key must have a name; singular '-' keys are not allowed: ${key}`,
  14152. 'ARG_CONFIG_NONAME_KEY'
  14153. );
  14154. }
  14155. if (typeof opts[key] === 'string') {
  14156. aliases[key] = opts[key];
  14157. continue;
  14158. }
  14159. let type = opts[key];
  14160. let isFlag = false;
  14161. if (
  14162. Array.isArray(type) &&
  14163. type.length === 1 &&
  14164. typeof type[0] === 'function'
  14165. ) {
  14166. const [fn] = type;
  14167. type = (value, name, prev = []) => {
  14168. prev.push(fn(value, name, prev[prev.length - 1]));
  14169. return prev;
  14170. };
  14171. isFlag = fn === Boolean || fn[flagSymbol] === true;
  14172. } else if (typeof type === 'function') {
  14173. isFlag = type === Boolean || type[flagSymbol] === true;
  14174. } else {
  14175. throw new ArgError(
  14176. `type missing or not a function or valid array type: ${key}`,
  14177. 'ARG_CONFIG_VAD_TYPE'
  14178. );
  14179. }
  14180. if (key[1] !== '-' && key.length > 2) {
  14181. throw new ArgError(
  14182. `short argument keys (with a single hyphen) must have only one character: ${key}`,
  14183. 'ARG_CONFIG_SHORTOPT_TOOLONG'
  14184. );
  14185. }
  14186. handlers[key] = [type, isFlag];
  14187. }
  14188. for (let i = 0, len = argv.length; i < len; i++) {
  14189. const wholeArg = argv[i];
  14190. if (stopAtPositional && result._.length > 0) {
  14191. result._ = result._.concat(argv.slice(i));
  14192. break;
  14193. }
  14194. if (wholeArg === '--') {
  14195. result._ = result._.concat(argv.slice(i + 1));
  14196. break;
  14197. }
  14198. if (wholeArg.length > 1 && wholeArg[0] === '-') {
  14199. /* eslint-disable operator-linebreak */
  14200. const separatedArguments =
  14201. wholeArg[1] === '-' || wholeArg.length === 2
  14202. ? [wholeArg]
  14203. : wholeArg
  14204. .slice(1)
  14205. .split('')
  14206. .map((a) => `-${a}`);
  14207. /* eslint-enable operator-linebreak */
  14208. for (let j = 0; j < separatedArguments.length; j++) {
  14209. const arg = separatedArguments[j];
  14210. const [originalArgName, argStr] =
  14211. arg[1] === '-' ? arg.split(/=(.*)/, 2) : [arg, undefined];
  14212. let argName = originalArgName;
  14213. while (argName in aliases) {
  14214. argName = aliases[argName];
  14215. }
  14216. if (!(argName in handlers)) {
  14217. if (permissive) {
  14218. result._.push(arg);
  14219. continue;
  14220. } else {
  14221. throw new ArgError(
  14222. `unknown or unexpected option: ${originalArgName}`,
  14223. 'ARG_UNKNOWN_OPTION'
  14224. );
  14225. }
  14226. }
  14227. const [type, isFlag] = handlers[argName];
  14228. if (!isFlag && j + 1 < separatedArguments.length) {
  14229. throw new ArgError(
  14230. `option requires argument (but was followed by another short argument): ${originalArgName}`,
  14231. 'ARG_MISSING_REQUIRED_SHORTARG'
  14232. );
  14233. }
  14234. if (isFlag) {
  14235. result[argName] = type(true, argName, result[argName]);
  14236. } else if (argStr === undefined) {
  14237. if (
  14238. argv.length < i + 2 ||
  14239. (argv[i + 1].length > 1 &&
  14240. argv[i + 1][0] === '-' &&
  14241. !(
  14242. argv[i + 1].match(/^-?\d*(\.(?=\d))?\d*$/) &&
  14243. (type === Number ||
  14244. // eslint-disable-next-line no-undef
  14245. (typeof BigInt !== 'undefined' && type === BigInt))
  14246. ))
  14247. ) {
  14248. const extended =
  14249. originalArgName === argName ? '' : ` (alias for ${argName})`;
  14250. throw new ArgError(
  14251. `option requires argument: ${originalArgName}${extended}`,
  14252. 'ARG_MISSING_REQUIRED_LONGARG'
  14253. );
  14254. }
  14255. result[argName] = type(argv[i + 1], argName, result[argName]);
  14256. ++i;
  14257. } else {
  14258. result[argName] = type(argStr, argName, result[argName]);
  14259. }
  14260. }
  14261. } else {
  14262. result._.push(wholeArg);
  14263. }
  14264. }
  14265. return result;
  14266. }
  14267. arg.flag = (fn) => {
  14268. fn[flagSymbol] = true;
  14269. return fn;
  14270. };
  14271. // Utility types
  14272. arg.COUNT = arg.flag((v, name, existingCount) => (existingCount || 0) + 1);
  14273. // Expose error class
  14274. arg.ArgError = ArgError;
  14275. var arg_1 = arg;
  14276. /**
  14277. @license
  14278. The MIT License (MIT)
  14279. Copyright (c) 2014 Blake Embrey (hello@blakeembrey.com)
  14280. Permission is hereby granted, free of charge, to any person obtaining a copy
  14281. of this software and associated documentation files (the "Software"), to deal
  14282. in the Software without restriction, including without limitation the rights
  14283. to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
  14284. copies of the Software, and to permit persons to whom the Software is
  14285. furnished to do so, subject to the following conditions:
  14286. The above copyright notice and this permission notice shall be included in
  14287. all copies or substantial portions of the Software.
  14288. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  14289. IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  14290. FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
  14291. AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
  14292. LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
  14293. OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
  14294. THE SOFTWARE.
  14295. */
  14296. function getOptionValue(opt) {
  14297. parseOptions();
  14298. return options[opt];
  14299. }
  14300. let options;
  14301. function parseOptions() {
  14302. if (!options) {
  14303. options = {
  14304. "--conditions": [],
  14305. ...parseArgv(getNodeOptionsEnvArgv()),
  14306. ...parseArgv(process.execArgv)
  14307. };
  14308. }
  14309. }
  14310. function parseArgv(argv) {
  14311. return arg_1(
  14312. {
  14313. "--conditions": [String],
  14314. "-C": "--conditions"
  14315. },
  14316. {
  14317. argv,
  14318. permissive: true
  14319. }
  14320. );
  14321. }
  14322. function getNodeOptionsEnvArgv() {
  14323. const errors = [];
  14324. const envArgv = ParseNodeOptionsEnvVar(process.env.NODE_OPTIONS || "", errors);
  14325. if (errors.length !== 0) ;
  14326. return envArgv;
  14327. }
  14328. function ParseNodeOptionsEnvVar(node_options, errors) {
  14329. const env_argv = [];
  14330. let is_in_string = false;
  14331. let will_start_new_arg = true;
  14332. for (let index = 0; index < node_options.length; ++index) {
  14333. let c = node_options[index];
  14334. if (c === "\\" && is_in_string) {
  14335. if (index + 1 === node_options.length) {
  14336. errors.push("invalid value for NODE_OPTIONS (invalid escape)\n");
  14337. return env_argv;
  14338. } else {
  14339. c = node_options[++index];
  14340. }
  14341. } else if (c === " " && !is_in_string) {
  14342. will_start_new_arg = true;
  14343. continue;
  14344. } else if (c === '"') {
  14345. is_in_string = !is_in_string;
  14346. continue;
  14347. }
  14348. if (will_start_new_arg) {
  14349. env_argv.push(c);
  14350. will_start_new_arg = false;
  14351. } else {
  14352. env_argv[env_argv.length - 1] += c;
  14353. }
  14354. }
  14355. if (is_in_string) {
  14356. errors.push("invalid value for NODE_OPTIONS (unterminated string)\n");
  14357. }
  14358. return env_argv;
  14359. }
  14360. function makeApi(runtimeState, opts) {
  14361. const alwaysWarnOnFallback = Number(process.env.PNP_ALWAYS_WARN_ON_FALLBACK) > 0;
  14362. const debugLevel = Number(process.env.PNP_DEBUG_LEVEL);
  14363. const pathRegExp = /^(?![a-zA-Z]:[\\/]|\\\\|\.{0,2}(?:\/|$))((?:node:)?(?:@[^/]+\/)?[^/]+)\/*(.*|)$/;
  14364. const isStrictRegExp = /^(\/|\.{1,2}(\/|$))/;
  14365. const isDirRegExp = /\/$/;
  14366. const isRelativeRegexp = /^\.{0,2}\//;
  14367. const topLevelLocator = { name: null, reference: null };
  14368. const fallbackLocators = [];
  14369. const emittedWarnings = /* @__PURE__ */ new Set();
  14370. if (runtimeState.enableTopLevelFallback === true)
  14371. fallbackLocators.push(topLevelLocator);
  14372. if (opts.compatibilityMode !== false) {
  14373. for (const name of [`react-scripts`, `gatsby`]) {
  14374. const packageStore = runtimeState.packageRegistry.get(name);
  14375. if (packageStore) {
  14376. for (const reference of packageStore.keys()) {
  14377. if (reference === null) {
  14378. throw new Error(`Assertion failed: This reference shouldn't be null`);
  14379. } else {
  14380. fallbackLocators.push({ name, reference });
  14381. }
  14382. }
  14383. }
  14384. }
  14385. }
  14386. const {
  14387. ignorePattern,
  14388. packageRegistry,
  14389. packageLocatorsByLocations
  14390. } = runtimeState;
  14391. function makeLogEntry(name, args) {
  14392. return {
  14393. fn: name,
  14394. args,
  14395. error: null,
  14396. result: null
  14397. };
  14398. }
  14399. function trace(entry) {
  14400. var _a, _b, _c, _d, _e, _f;
  14401. const colors = (_c = (_b = (_a = process.stderr) == null ? void 0 : _a.hasColors) == null ? void 0 : _b.call(_a)) != null ? _c : process.stdout.isTTY;
  14402. const c = (n, str) => `\x1B[${n}m${str}\x1B[0m`;
  14403. const error = entry.error;
  14404. if (error)
  14405. console.error(c(`31;1`, `\u2716 ${(_d = entry.error) == null ? void 0 : _d.message.replace(/\n.*/s, ``)}`));
  14406. else
  14407. console.error(c(`33;1`, `\u203C Resolution`));
  14408. if (entry.args.length > 0)
  14409. console.error();
  14410. for (const arg of entry.args)
  14411. console.error(` ${c(`37;1`, `In \u2190`)} ${nodeUtils.inspect(arg, { colors, compact: true })}`);
  14412. if (entry.result) {
  14413. console.error();
  14414. console.error(` ${c(`37;1`, `Out \u2192`)} ${nodeUtils.inspect(entry.result, { colors, compact: true })}`);
  14415. }
  14416. const stack = (_f = (_e = new Error().stack.match(/(?<=^ +)at.*/gm)) == null ? void 0 : _e.slice(2)) != null ? _f : [];
  14417. if (stack.length > 0) {
  14418. console.error();
  14419. for (const line of stack) {
  14420. console.error(` ${c(`38;5;244`, line)}`);
  14421. }
  14422. }
  14423. console.error();
  14424. }
  14425. function maybeLog(name, fn) {
  14426. if (opts.allowDebug === false)
  14427. return fn;
  14428. if (Number.isFinite(debugLevel)) {
  14429. if (debugLevel >= 2) {
  14430. return (...args) => {
  14431. const logEntry = makeLogEntry(name, args);
  14432. try {
  14433. return logEntry.result = fn(...args);
  14434. } catch (error) {
  14435. throw logEntry.error = error;
  14436. } finally {
  14437. trace(logEntry);
  14438. }
  14439. };
  14440. } else if (debugLevel >= 1) {
  14441. return (...args) => {
  14442. try {
  14443. return fn(...args);
  14444. } catch (error) {
  14445. const logEntry = makeLogEntry(name, args);
  14446. logEntry.error = error;
  14447. trace(logEntry);
  14448. throw error;
  14449. }
  14450. };
  14451. }
  14452. }
  14453. return fn;
  14454. }
  14455. function getPackageInformationSafe(packageLocator) {
  14456. const packageInformation = getPackageInformation(packageLocator);
  14457. if (!packageInformation) {
  14458. throw makeError(
  14459. ErrorCode.INTERNAL,
  14460. `Couldn't find a matching entry in the dependency tree for the specified parent (this is probably an internal error)`
  14461. );
  14462. }
  14463. return packageInformation;
  14464. }
  14465. function isDependencyTreeRoot(packageLocator) {
  14466. if (packageLocator.name === null)
  14467. return true;
  14468. for (const dependencyTreeRoot of runtimeState.dependencyTreeRoots)
  14469. if (dependencyTreeRoot.name === packageLocator.name && dependencyTreeRoot.reference === packageLocator.reference)
  14470. return true;
  14471. return false;
  14472. }
  14473. const defaultExportsConditions = /* @__PURE__ */ new Set([
  14474. `node`,
  14475. `require`,
  14476. ...getOptionValue(`--conditions`)
  14477. ]);
  14478. function applyNodeExportsResolution(unqualifiedPath, conditions = defaultExportsConditions, issuer) {
  14479. const locator = findPackageLocator(ppath.join(unqualifiedPath, `internal.js`), {
  14480. resolveIgnored: true,
  14481. includeDiscardFromLookup: true
  14482. });
  14483. if (locator === null) {
  14484. throw makeError(
  14485. ErrorCode.INTERNAL,
  14486. `The locator that owns the "${unqualifiedPath}" path can't be found inside the dependency tree (this is probably an internal error)`
  14487. );
  14488. }
  14489. const { packageLocation } = getPackageInformationSafe(locator);
  14490. const manifestPath = ppath.join(packageLocation, Filename.manifest);
  14491. if (!opts.fakeFs.existsSync(manifestPath))
  14492. return null;
  14493. const pkgJson = JSON.parse(opts.fakeFs.readFileSync(manifestPath, `utf8`));
  14494. if (pkgJson.exports == null)
  14495. return null;
  14496. let subpath = ppath.contains(packageLocation, unqualifiedPath);
  14497. if (subpath === null) {
  14498. throw makeError(
  14499. ErrorCode.INTERNAL,
  14500. `unqualifiedPath doesn't contain the packageLocation (this is probably an internal error)`
  14501. );
  14502. }
  14503. if (subpath !== `.` && !isRelativeRegexp.test(subpath))
  14504. subpath = `./${subpath}`;
  14505. try {
  14506. const resolvedExport = packageExportsResolve({
  14507. packageJSONUrl: url.pathToFileURL(npath.fromPortablePath(manifestPath)),
  14508. packageSubpath: subpath,
  14509. exports: pkgJson.exports,
  14510. base: issuer ? url.pathToFileURL(npath.fromPortablePath(issuer)) : null,
  14511. conditions
  14512. });
  14513. return npath.toPortablePath(url.fileURLToPath(resolvedExport));
  14514. } catch (error) {
  14515. throw makeError(
  14516. ErrorCode.EXPORTS_RESOLUTION_FAILED,
  14517. error.message,
  14518. { unqualifiedPath: getPathForDisplay(unqualifiedPath), locator, pkgJson, subpath: getPathForDisplay(subpath), conditions },
  14519. error.code
  14520. );
  14521. }
  14522. }
  14523. function applyNodeExtensionResolution(unqualifiedPath, candidates, { extensions }) {
  14524. let stat;
  14525. try {
  14526. candidates.push(unqualifiedPath);
  14527. stat = opts.fakeFs.statSync(unqualifiedPath);
  14528. } catch (error) {
  14529. }
  14530. if (stat && !stat.isDirectory())
  14531. return opts.fakeFs.realpathSync(unqualifiedPath);
  14532. if (stat && stat.isDirectory()) {
  14533. let pkgJson;
  14534. try {
  14535. pkgJson = JSON.parse(opts.fakeFs.readFileSync(ppath.join(unqualifiedPath, Filename.manifest), `utf8`));
  14536. } catch (error) {
  14537. }
  14538. let nextUnqualifiedPath;
  14539. if (pkgJson && pkgJson.main)
  14540. nextUnqualifiedPath = ppath.resolve(unqualifiedPath, pkgJson.main);
  14541. if (nextUnqualifiedPath && nextUnqualifiedPath !== unqualifiedPath) {
  14542. const resolution = applyNodeExtensionResolution(nextUnqualifiedPath, candidates, { extensions });
  14543. if (resolution !== null) {
  14544. return resolution;
  14545. }
  14546. }
  14547. }
  14548. for (let i = 0, length = extensions.length; i < length; i++) {
  14549. const candidateFile = `${unqualifiedPath}${extensions[i]}`;
  14550. candidates.push(candidateFile);
  14551. if (opts.fakeFs.existsSync(candidateFile)) {
  14552. return candidateFile;
  14553. }
  14554. }
  14555. if (stat && stat.isDirectory()) {
  14556. for (let i = 0, length = extensions.length; i < length; i++) {
  14557. const candidateFile = ppath.format({ dir: unqualifiedPath, name: `index`, ext: extensions[i] });
  14558. candidates.push(candidateFile);
  14559. if (opts.fakeFs.existsSync(candidateFile)) {
  14560. return candidateFile;
  14561. }
  14562. }
  14563. }
  14564. return null;
  14565. }
  14566. function makeFakeModule(path) {
  14567. const fakeModule = new require$$0.Module(path, null);
  14568. fakeModule.filename = path;
  14569. fakeModule.paths = require$$0.Module._nodeModulePaths(path);
  14570. return fakeModule;
  14571. }
  14572. function callNativeResolution(request, issuer) {
  14573. if (issuer.endsWith(`/`))
  14574. issuer = ppath.join(issuer, `internal.js`);
  14575. return require$$0.Module._resolveFilename(npath.fromPortablePath(request), makeFakeModule(npath.fromPortablePath(issuer)), false, { plugnplay: false });
  14576. }
  14577. function isPathIgnored(path) {
  14578. if (ignorePattern === null)
  14579. return false;
  14580. const subPath = ppath.contains(runtimeState.basePath, path);
  14581. if (subPath === null)
  14582. return false;
  14583. if (ignorePattern.test(subPath.replace(/\/$/, ``))) {
  14584. return true;
  14585. } else {
  14586. return false;
  14587. }
  14588. }
  14589. const VERSIONS = { std: 3, resolveVirtual: 1, getAllLocators: 1 };
  14590. const topLevel = topLevelLocator;
  14591. function getPackageInformation({ name, reference }) {
  14592. const packageInformationStore = packageRegistry.get(name);
  14593. if (!packageInformationStore)
  14594. return null;
  14595. const packageInformation = packageInformationStore.get(reference);
  14596. if (!packageInformation)
  14597. return null;
  14598. return packageInformation;
  14599. }
  14600. function findPackageDependents({ name, reference }) {
  14601. const dependents = [];
  14602. for (const [dependentName, packageInformationStore] of packageRegistry) {
  14603. if (dependentName === null)
  14604. continue;
  14605. for (const [dependentReference, packageInformation] of packageInformationStore) {
  14606. if (dependentReference === null)
  14607. continue;
  14608. const dependencyReference = packageInformation.packageDependencies.get(name);
  14609. if (dependencyReference !== reference)
  14610. continue;
  14611. if (dependentName === name && dependentReference === reference)
  14612. continue;
  14613. dependents.push({
  14614. name: dependentName,
  14615. reference: dependentReference
  14616. });
  14617. }
  14618. }
  14619. return dependents;
  14620. }
  14621. function findBrokenPeerDependencies(dependency, initialPackage) {
  14622. const brokenPackages = /* @__PURE__ */ new Map();
  14623. const alreadyVisited = /* @__PURE__ */ new Set();
  14624. const traversal = (currentPackage) => {
  14625. const identifier = JSON.stringify(currentPackage.name);
  14626. if (alreadyVisited.has(identifier))
  14627. return;
  14628. alreadyVisited.add(identifier);
  14629. const dependents = findPackageDependents(currentPackage);
  14630. for (const dependent of dependents) {
  14631. const dependentInformation = getPackageInformationSafe(dependent);
  14632. if (dependentInformation.packagePeers.has(dependency)) {
  14633. traversal(dependent);
  14634. } else {
  14635. let brokenSet = brokenPackages.get(dependent.name);
  14636. if (typeof brokenSet === `undefined`)
  14637. brokenPackages.set(dependent.name, brokenSet = /* @__PURE__ */ new Set());
  14638. brokenSet.add(dependent.reference);
  14639. }
  14640. }
  14641. };
  14642. traversal(initialPackage);
  14643. const brokenList = [];
  14644. for (const name of [...brokenPackages.keys()].sort())
  14645. for (const reference of [...brokenPackages.get(name)].sort())
  14646. brokenList.push({ name, reference });
  14647. return brokenList;
  14648. }
  14649. function findPackageLocator(location, { resolveIgnored = false, includeDiscardFromLookup = false } = {}) {
  14650. if (isPathIgnored(location) && !resolveIgnored)
  14651. return null;
  14652. let relativeLocation = ppath.relative(runtimeState.basePath, location);
  14653. if (!relativeLocation.match(isStrictRegExp))
  14654. relativeLocation = `./${relativeLocation}`;
  14655. if (!relativeLocation.endsWith(`/`))
  14656. relativeLocation = `${relativeLocation}/`;
  14657. do {
  14658. const entry = packageLocatorsByLocations.get(relativeLocation);
  14659. if (typeof entry === `undefined` || entry.discardFromLookup && !includeDiscardFromLookup) {
  14660. relativeLocation = relativeLocation.substring(0, relativeLocation.lastIndexOf(`/`, relativeLocation.length - 2) + 1);
  14661. continue;
  14662. }
  14663. return entry.locator;
  14664. } while (relativeLocation !== ``);
  14665. return null;
  14666. }
  14667. function tryReadFile(filePath) {
  14668. try {
  14669. return opts.fakeFs.readFileSync(npath.toPortablePath(filePath), `utf8`);
  14670. } catch (err) {
  14671. if (err.code === `ENOENT`)
  14672. return void 0;
  14673. throw err;
  14674. }
  14675. }
  14676. function resolveToUnqualified(request, issuer, { considerBuiltins = true } = {}) {
  14677. if (request.startsWith(`#`))
  14678. throw new Error(`resolveToUnqualified can not handle private import mappings`);
  14679. if (request === `pnpapi`)
  14680. return npath.toPortablePath(opts.pnpapiResolution);
  14681. if (considerBuiltins && isBuiltinModule(request))
  14682. return null;
  14683. const requestForDisplay = getPathForDisplay(request);
  14684. const issuerForDisplay = issuer && getPathForDisplay(issuer);
  14685. if (issuer && isPathIgnored(issuer)) {
  14686. if (!ppath.isAbsolute(request) || findPackageLocator(request) === null) {
  14687. const result = callNativeResolution(request, issuer);
  14688. if (result === false) {
  14689. throw makeError(
  14690. ErrorCode.BUILTIN_NODE_RESOLUTION_FAILED,
  14691. `The builtin node resolution algorithm was unable to resolve the requested module (it didn't go through the pnp resolver because the issuer was explicitely ignored by the regexp)
  14692. Require request: "${requestForDisplay}"
  14693. Required by: ${issuerForDisplay}
  14694. `,
  14695. { request: requestForDisplay, issuer: issuerForDisplay }
  14696. );
  14697. }
  14698. return npath.toPortablePath(result);
  14699. }
  14700. }
  14701. let unqualifiedPath;
  14702. const dependencyNameMatch = request.match(pathRegExp);
  14703. if (!dependencyNameMatch) {
  14704. if (ppath.isAbsolute(request)) {
  14705. unqualifiedPath = ppath.normalize(request);
  14706. } else {
  14707. if (!issuer) {
  14708. throw makeError(
  14709. ErrorCode.API_ERROR,
  14710. `The resolveToUnqualified function must be called with a valid issuer when the path isn't a builtin nor absolute`,
  14711. { request: requestForDisplay, issuer: issuerForDisplay }
  14712. );
  14713. }
  14714. const absoluteIssuer = ppath.resolve(issuer);
  14715. if (issuer.match(isDirRegExp)) {
  14716. unqualifiedPath = ppath.normalize(ppath.join(absoluteIssuer, request));
  14717. } else {
  14718. unqualifiedPath = ppath.normalize(ppath.join(ppath.dirname(absoluteIssuer), request));
  14719. }
  14720. }
  14721. } else {
  14722. if (!issuer) {
  14723. throw makeError(
  14724. ErrorCode.API_ERROR,
  14725. `The resolveToUnqualified function must be called with a valid issuer when the path isn't a builtin nor absolute`,
  14726. { request: requestForDisplay, issuer: issuerForDisplay }
  14727. );
  14728. }
  14729. const [, dependencyName, subPath] = dependencyNameMatch;
  14730. const issuerLocator = findPackageLocator(issuer);
  14731. if (!issuerLocator) {
  14732. const result = callNativeResolution(request, issuer);
  14733. if (result === false) {
  14734. throw makeError(
  14735. ErrorCode.BUILTIN_NODE_RESOLUTION_FAILED,
  14736. `The builtin node resolution algorithm was unable to resolve the requested module (it didn't go through the pnp resolver because the issuer doesn't seem to be part of the Yarn-managed dependency tree).
  14737. Require path: "${requestForDisplay}"
  14738. Required by: ${issuerForDisplay}
  14739. `,
  14740. { request: requestForDisplay, issuer: issuerForDisplay }
  14741. );
  14742. }
  14743. return npath.toPortablePath(result);
  14744. }
  14745. const issuerInformation = getPackageInformationSafe(issuerLocator);
  14746. let dependencyReference = issuerInformation.packageDependencies.get(dependencyName);
  14747. let fallbackReference = null;
  14748. if (dependencyReference == null) {
  14749. if (issuerLocator.name !== null) {
  14750. const exclusionEntry = runtimeState.fallbackExclusionList.get(issuerLocator.name);
  14751. const canUseFallbacks = !exclusionEntry || !exclusionEntry.has(issuerLocator.reference);
  14752. if (canUseFallbacks) {
  14753. for (let t = 0, T = fallbackLocators.length; t < T; ++t) {
  14754. const fallbackInformation = getPackageInformationSafe(fallbackLocators[t]);
  14755. const reference = fallbackInformation.packageDependencies.get(dependencyName);
  14756. if (reference == null)
  14757. continue;
  14758. if (alwaysWarnOnFallback)
  14759. fallbackReference = reference;
  14760. else
  14761. dependencyReference = reference;
  14762. break;
  14763. }
  14764. if (runtimeState.enableTopLevelFallback) {
  14765. if (dependencyReference == null && fallbackReference === null) {
  14766. const reference = runtimeState.fallbackPool.get(dependencyName);
  14767. if (reference != null) {
  14768. fallbackReference = reference;
  14769. }
  14770. }
  14771. }
  14772. }
  14773. }
  14774. }
  14775. let error = null;
  14776. if (dependencyReference === null) {
  14777. if (isDependencyTreeRoot(issuerLocator)) {
  14778. error = makeError(
  14779. ErrorCode.MISSING_PEER_DEPENDENCY,
  14780. `Your application tried to access ${dependencyName} (a peer dependency); this isn't allowed as there is no ancestor to satisfy the requirement. Use a devDependency if needed.
  14781. Required package: ${dependencyName}${dependencyName !== requestForDisplay ? ` (via "${requestForDisplay}")` : ``}
  14782. Required by: ${issuerForDisplay}
  14783. `,
  14784. { request: requestForDisplay, issuer: issuerForDisplay, dependencyName }
  14785. );
  14786. } else {
  14787. const brokenAncestors = findBrokenPeerDependencies(dependencyName, issuerLocator);
  14788. if (brokenAncestors.every((ancestor) => isDependencyTreeRoot(ancestor))) {
  14789. error = makeError(
  14790. ErrorCode.MISSING_PEER_DEPENDENCY,
  14791. `${issuerLocator.name} tried to access ${dependencyName} (a peer dependency) but it isn't provided by your application; this makes the require call ambiguous and unsound.
  14792. Required package: ${dependencyName}${dependencyName !== requestForDisplay ? ` (via "${requestForDisplay}")` : ``}
  14793. Required by: ${issuerLocator.name}@${issuerLocator.reference} (via ${issuerForDisplay})
  14794. ${brokenAncestors.map((ancestorLocator) => `Ancestor breaking the chain: ${ancestorLocator.name}@${ancestorLocator.reference}
  14795. `).join(``)}
  14796. `,
  14797. { request: requestForDisplay, issuer: issuerForDisplay, issuerLocator: Object.assign({}, issuerLocator), dependencyName, brokenAncestors }
  14798. );
  14799. } else {
  14800. error = makeError(
  14801. ErrorCode.MISSING_PEER_DEPENDENCY,
  14802. `${issuerLocator.name} tried to access ${dependencyName} (a peer dependency) but it isn't provided by its ancestors; this makes the require call ambiguous and unsound.
  14803. Required package: ${dependencyName}${dependencyName !== requestForDisplay ? ` (via "${requestForDisplay}")` : ``}
  14804. Required by: ${issuerLocator.name}@${issuerLocator.reference} (via ${issuerForDisplay})
  14805. ${brokenAncestors.map((ancestorLocator) => `Ancestor breaking the chain: ${ancestorLocator.name}@${ancestorLocator.reference}
  14806. `).join(``)}
  14807. `,
  14808. { request: requestForDisplay, issuer: issuerForDisplay, issuerLocator: Object.assign({}, issuerLocator), dependencyName, brokenAncestors }
  14809. );
  14810. }
  14811. }
  14812. } else if (dependencyReference === void 0) {
  14813. if (!considerBuiltins && isBuiltinModule(request)) {
  14814. if (isDependencyTreeRoot(issuerLocator)) {
  14815. error = makeError(
  14816. ErrorCode.UNDECLARED_DEPENDENCY,
  14817. `Your application tried to access ${dependencyName}. While this module is usually interpreted as a Node builtin, your resolver is running inside a non-Node resolution context where such builtins are ignored. Since ${dependencyName} isn't otherwise declared in your dependencies, this makes the require call ambiguous and unsound.
  14818. Required package: ${dependencyName}${dependencyName !== requestForDisplay ? ` (via "${requestForDisplay}")` : ``}
  14819. Required by: ${issuerForDisplay}
  14820. `,
  14821. { request: requestForDisplay, issuer: issuerForDisplay, dependencyName }
  14822. );
  14823. } else {
  14824. error = makeError(
  14825. ErrorCode.UNDECLARED_DEPENDENCY,
  14826. `${issuerLocator.name} tried to access ${dependencyName}. While this module is usually interpreted as a Node builtin, your resolver is running inside a non-Node resolution context where such builtins are ignored. Since ${dependencyName} isn't otherwise declared in ${issuerLocator.name}'s dependencies, this makes the require call ambiguous and unsound.
  14827. Required package: ${dependencyName}${dependencyName !== requestForDisplay ? ` (via "${requestForDisplay}")` : ``}
  14828. Required by: ${issuerForDisplay}
  14829. `,
  14830. { request: requestForDisplay, issuer: issuerForDisplay, issuerLocator: Object.assign({}, issuerLocator), dependencyName }
  14831. );
  14832. }
  14833. } else {
  14834. if (isDependencyTreeRoot(issuerLocator)) {
  14835. error = makeError(
  14836. ErrorCode.UNDECLARED_DEPENDENCY,
  14837. `Your application tried to access ${dependencyName}, but it isn't declared in your dependencies; this makes the require call ambiguous and unsound.
  14838. Required package: ${dependencyName}${dependencyName !== requestForDisplay ? ` (via "${requestForDisplay}")` : ``}
  14839. Required by: ${issuerForDisplay}
  14840. `,
  14841. { request: requestForDisplay, issuer: issuerForDisplay, dependencyName }
  14842. );
  14843. } else {
  14844. error = makeError(
  14845. ErrorCode.UNDECLARED_DEPENDENCY,
  14846. `${issuerLocator.name} tried to access ${dependencyName}, but it isn't declared in its dependencies; this makes the require call ambiguous and unsound.
  14847. Required package: ${dependencyName}${dependencyName !== requestForDisplay ? ` (via "${requestForDisplay}")` : ``}
  14848. Required by: ${issuerLocator.name}@${issuerLocator.reference} (via ${issuerForDisplay})
  14849. `,
  14850. { request: requestForDisplay, issuer: issuerForDisplay, issuerLocator: Object.assign({}, issuerLocator), dependencyName }
  14851. );
  14852. }
  14853. }
  14854. }
  14855. if (dependencyReference == null) {
  14856. if (fallbackReference === null || error === null)
  14857. throw error || new Error(`Assertion failed: Expected an error to have been set`);
  14858. dependencyReference = fallbackReference;
  14859. const message = error.message.replace(/\n.*/g, ``);
  14860. error.message = message;
  14861. if (!emittedWarnings.has(message) && debugLevel !== 0) {
  14862. emittedWarnings.add(message);
  14863. process.emitWarning(error);
  14864. }
  14865. }
  14866. const dependencyLocator = Array.isArray(dependencyReference) ? { name: dependencyReference[0], reference: dependencyReference[1] } : { name: dependencyName, reference: dependencyReference };
  14867. const dependencyInformation = getPackageInformationSafe(dependencyLocator);
  14868. if (!dependencyInformation.packageLocation) {
  14869. throw makeError(
  14870. ErrorCode.MISSING_DEPENDENCY,
  14871. `A dependency seems valid but didn't get installed for some reason. This might be caused by a partial install, such as dev vs prod.
  14872. Required package: ${dependencyLocator.name}@${dependencyLocator.reference}${dependencyLocator.name !== requestForDisplay ? ` (via "${requestForDisplay}")` : ``}
  14873. Required by: ${issuerLocator.name}@${issuerLocator.reference} (via ${issuerForDisplay})
  14874. `,
  14875. { request: requestForDisplay, issuer: issuerForDisplay, dependencyLocator: Object.assign({}, dependencyLocator) }
  14876. );
  14877. }
  14878. const dependencyLocation = dependencyInformation.packageLocation;
  14879. if (subPath) {
  14880. unqualifiedPath = ppath.join(dependencyLocation, subPath);
  14881. } else {
  14882. unqualifiedPath = dependencyLocation;
  14883. }
  14884. }
  14885. return ppath.normalize(unqualifiedPath);
  14886. }
  14887. function resolveUnqualifiedExport(request, unqualifiedPath, conditions = defaultExportsConditions, issuer) {
  14888. if (isStrictRegExp.test(request))
  14889. return unqualifiedPath;
  14890. const unqualifiedExportPath = applyNodeExportsResolution(unqualifiedPath, conditions, issuer);
  14891. if (unqualifiedExportPath) {
  14892. return ppath.normalize(unqualifiedExportPath);
  14893. } else {
  14894. return unqualifiedPath;
  14895. }
  14896. }
  14897. function resolveUnqualified(unqualifiedPath, { extensions = Object.keys(require$$0.Module._extensions) } = {}) {
  14898. var _a, _b;
  14899. const candidates = [];
  14900. const qualifiedPath = applyNodeExtensionResolution(unqualifiedPath, candidates, { extensions });
  14901. if (qualifiedPath) {
  14902. return ppath.normalize(qualifiedPath);
  14903. } else {
  14904. reportRequiredFilesToWatchMode(candidates.map((candidate) => npath.fromPortablePath(candidate)));
  14905. const unqualifiedPathForDisplay = getPathForDisplay(unqualifiedPath);
  14906. const containingPackage = findPackageLocator(unqualifiedPath);
  14907. if (containingPackage) {
  14908. const { packageLocation } = getPackageInformationSafe(containingPackage);
  14909. let exists = true;
  14910. try {
  14911. opts.fakeFs.accessSync(packageLocation);
  14912. } catch (err) {
  14913. if ((err == null ? void 0 : err.code) === `ENOENT`) {
  14914. exists = false;
  14915. } else {
  14916. const readableError = ((_b = (_a = err == null ? void 0 : err.message) != null ? _a : err) != null ? _b : `empty exception thrown`).replace(/^[A-Z]/, ($0) => $0.toLowerCase());
  14917. throw makeError(ErrorCode.QUALIFIED_PATH_RESOLUTION_FAILED, `Required package exists but could not be accessed (${readableError}).
  14918. Missing package: ${containingPackage.name}@${containingPackage.reference}
  14919. Expected package location: ${getPathForDisplay(packageLocation)}
  14920. `, { unqualifiedPath: unqualifiedPathForDisplay, extensions });
  14921. }
  14922. }
  14923. if (!exists) {
  14924. const errorMessage = packageLocation.includes(`/unplugged/`) ? `Required unplugged package missing from disk. This may happen when switching branches without running installs (unplugged packages must be fully materialized on disk to work).` : `Required package missing from disk. If you keep your packages inside your repository then restarting the Node process may be enough. Otherwise, try to run an install first.`;
  14925. throw makeError(
  14926. ErrorCode.QUALIFIED_PATH_RESOLUTION_FAILED,
  14927. `${errorMessage}
  14928. Missing package: ${containingPackage.name}@${containingPackage.reference}
  14929. Expected package location: ${getPathForDisplay(packageLocation)}
  14930. `,
  14931. { unqualifiedPath: unqualifiedPathForDisplay, extensions }
  14932. );
  14933. }
  14934. }
  14935. throw makeError(
  14936. ErrorCode.QUALIFIED_PATH_RESOLUTION_FAILED,
  14937. `Qualified path resolution failed: we looked for the following paths, but none could be accessed.
  14938. Source path: ${unqualifiedPathForDisplay}
  14939. ${candidates.map((candidate) => `Not found: ${getPathForDisplay(candidate)}
  14940. `).join(``)}`,
  14941. { unqualifiedPath: unqualifiedPathForDisplay, extensions }
  14942. );
  14943. }
  14944. }
  14945. function resolvePrivateRequest(request, issuer, opts2) {
  14946. var _a;
  14947. if (!issuer)
  14948. throw new Error(`Assertion failed: An issuer is required to resolve private import mappings`);
  14949. const resolved = packageImportsResolve({
  14950. name: request,
  14951. base: url.pathToFileURL(npath.fromPortablePath(issuer)),
  14952. conditions: (_a = opts2.conditions) != null ? _a : defaultExportsConditions,
  14953. readFileSyncFn: tryReadFile
  14954. });
  14955. if (resolved instanceof url.URL) {
  14956. return resolveUnqualified(npath.toPortablePath(url.fileURLToPath(resolved)), { extensions: opts2.extensions });
  14957. } else {
  14958. if (resolved.startsWith(`#`))
  14959. throw new Error(`Mapping from one private import to another isn't allowed`);
  14960. return resolveRequest(resolved, issuer, opts2);
  14961. }
  14962. }
  14963. function resolveRequest(request, issuer, opts2 = {}) {
  14964. try {
  14965. if (request.startsWith(`#`))
  14966. return resolvePrivateRequest(request, issuer, opts2);
  14967. const { considerBuiltins, extensions, conditions } = opts2;
  14968. const unqualifiedPath = resolveToUnqualified(request, issuer, { considerBuiltins });
  14969. if (request === `pnpapi`)
  14970. return unqualifiedPath;
  14971. if (unqualifiedPath === null)
  14972. return null;
  14973. const isIssuerIgnored = () => issuer !== null ? isPathIgnored(issuer) : false;
  14974. const remappedPath = (!considerBuiltins || !isBuiltinModule(request)) && !isIssuerIgnored() ? resolveUnqualifiedExport(request, unqualifiedPath, conditions, issuer) : unqualifiedPath;
  14975. return resolveUnqualified(remappedPath, { extensions });
  14976. } catch (error) {
  14977. if (Object.prototype.hasOwnProperty.call(error, `pnpCode`))
  14978. Object.assign(error.data, { request: getPathForDisplay(request), issuer: issuer && getPathForDisplay(issuer) });
  14979. throw error;
  14980. }
  14981. }
  14982. function resolveVirtual(request) {
  14983. const normalized = ppath.normalize(request);
  14984. const resolved = VirtualFS.resolveVirtual(normalized);
  14985. return resolved !== normalized ? resolved : null;
  14986. }
  14987. return {
  14988. VERSIONS,
  14989. topLevel,
  14990. getLocator: (name, referencish) => {
  14991. if (Array.isArray(referencish)) {
  14992. return { name: referencish[0], reference: referencish[1] };
  14993. } else {
  14994. return { name, reference: referencish };
  14995. }
  14996. },
  14997. getDependencyTreeRoots: () => {
  14998. return [...runtimeState.dependencyTreeRoots];
  14999. },
  15000. getAllLocators() {
  15001. const locators = [];
  15002. for (const [name, entry] of packageRegistry)
  15003. for (const reference of entry.keys())
  15004. if (name !== null && reference !== null)
  15005. locators.push({ name, reference });
  15006. return locators;
  15007. },
  15008. getPackageInformation: (locator) => {
  15009. const info = getPackageInformation(locator);
  15010. if (info === null)
  15011. return null;
  15012. const packageLocation = npath.fromPortablePath(info.packageLocation);
  15013. const nativeInfo = { ...info, packageLocation };
  15014. return nativeInfo;
  15015. },
  15016. findPackageLocator: (path) => {
  15017. return findPackageLocator(npath.toPortablePath(path));
  15018. },
  15019. resolveToUnqualified: maybeLog(`resolveToUnqualified`, (request, issuer, opts2) => {
  15020. const portableIssuer = issuer !== null ? npath.toPortablePath(issuer) : null;
  15021. const resolution = resolveToUnqualified(npath.toPortablePath(request), portableIssuer, opts2);
  15022. if (resolution === null)
  15023. return null;
  15024. return npath.fromPortablePath(resolution);
  15025. }),
  15026. resolveUnqualified: maybeLog(`resolveUnqualified`, (unqualifiedPath, opts2) => {
  15027. return npath.fromPortablePath(resolveUnqualified(npath.toPortablePath(unqualifiedPath), opts2));
  15028. }),
  15029. resolveRequest: maybeLog(`resolveRequest`, (request, issuer, opts2) => {
  15030. const portableIssuer = issuer !== null ? npath.toPortablePath(issuer) : null;
  15031. const resolution = resolveRequest(npath.toPortablePath(request), portableIssuer, opts2);
  15032. if (resolution === null)
  15033. return null;
  15034. return npath.fromPortablePath(resolution);
  15035. }),
  15036. resolveVirtual: maybeLog(`resolveVirtual`, (path) => {
  15037. const result = resolveVirtual(npath.toPortablePath(path));
  15038. if (result !== null) {
  15039. return npath.fromPortablePath(result);
  15040. } else {
  15041. return null;
  15042. }
  15043. })
  15044. };
  15045. }
  15046. function makeManager(pnpapi, opts) {
  15047. const initialApiPath = npath.toPortablePath(pnpapi.resolveToUnqualified(`pnpapi`, null));
  15048. const initialApiStats = opts.fakeFs.statSync(npath.toPortablePath(initialApiPath));
  15049. const apiMetadata = /* @__PURE__ */ new Map([
  15050. [initialApiPath, {
  15051. instance: pnpapi,
  15052. stats: initialApiStats,
  15053. lastRefreshCheck: Date.now()
  15054. }]
  15055. ]);
  15056. function loadApiInstance(pnpApiPath) {
  15057. const nativePath = npath.fromPortablePath(pnpApiPath);
  15058. const module = new require$$0.Module(nativePath, null);
  15059. module.load(nativePath);
  15060. return module.exports;
  15061. }
  15062. function refreshApiEntry(pnpApiPath, apiEntry) {
  15063. const timeNow = Date.now();
  15064. if (timeNow - apiEntry.lastRefreshCheck < 500)
  15065. return;
  15066. apiEntry.lastRefreshCheck = timeNow;
  15067. const stats = opts.fakeFs.statSync(pnpApiPath);
  15068. if (stats.mtime > apiEntry.stats.mtime) {
  15069. process.emitWarning(`[Warning] The runtime detected new informations in a PnP file; reloading the API instance (${npath.fromPortablePath(pnpApiPath)})`);
  15070. apiEntry.stats = stats;
  15071. apiEntry.instance = loadApiInstance(pnpApiPath);
  15072. }
  15073. }
  15074. function getApiEntry(pnpApiPath, refresh = false) {
  15075. let apiEntry = apiMetadata.get(pnpApiPath);
  15076. if (typeof apiEntry !== `undefined`) {
  15077. if (refresh) {
  15078. refreshApiEntry(pnpApiPath, apiEntry);
  15079. }
  15080. } else {
  15081. apiMetadata.set(pnpApiPath, apiEntry = {
  15082. instance: loadApiInstance(pnpApiPath),
  15083. stats: opts.fakeFs.statSync(pnpApiPath),
  15084. lastRefreshCheck: Date.now()
  15085. });
  15086. }
  15087. return apiEntry;
  15088. }
  15089. const findApiPathCache = /* @__PURE__ */ new Map();
  15090. function addToCacheAndReturn(start, end, target) {
  15091. if (target !== null)
  15092. target = VirtualFS.resolveVirtual(target);
  15093. let curr;
  15094. let next = start;
  15095. do {
  15096. curr = next;
  15097. findApiPathCache.set(curr, target);
  15098. next = ppath.dirname(curr);
  15099. } while (curr !== end);
  15100. return target;
  15101. }
  15102. function findApiPathFor(modulePath) {
  15103. let bestCandidate = null;
  15104. for (const [apiPath, apiEntry] of apiMetadata) {
  15105. const locator = apiEntry.instance.findPackageLocator(modulePath);
  15106. if (!locator)
  15107. continue;
  15108. if (apiMetadata.size === 1)
  15109. return apiPath;
  15110. const packageInformation = apiEntry.instance.getPackageInformation(locator);
  15111. if (!packageInformation)
  15112. throw new Error(`Assertion failed: Couldn't get package information for '${modulePath}'`);
  15113. if (!bestCandidate)
  15114. bestCandidate = { packageLocation: packageInformation.packageLocation, apiPaths: [] };
  15115. if (packageInformation.packageLocation === bestCandidate.packageLocation) {
  15116. bestCandidate.apiPaths.push(apiPath);
  15117. } else if (packageInformation.packageLocation.length > bestCandidate.packageLocation.length) {
  15118. bestCandidate = { packageLocation: packageInformation.packageLocation, apiPaths: [apiPath] };
  15119. }
  15120. }
  15121. if (bestCandidate) {
  15122. if (bestCandidate.apiPaths.length === 1)
  15123. return bestCandidate.apiPaths[0];
  15124. const controlSegment = bestCandidate.apiPaths.map((apiPath) => ` ${npath.fromPortablePath(apiPath)}`).join(`
  15125. `);
  15126. throw new Error(`Unable to locate pnpapi, the module '${modulePath}' is controlled by multiple pnpapi instances.
  15127. This is usually caused by using the global cache (enableGlobalCache: true)
  15128. Controlled by:
  15129. ${controlSegment}
  15130. `);
  15131. }
  15132. const start = ppath.resolve(npath.toPortablePath(modulePath));
  15133. let curr;
  15134. let next = start;
  15135. do {
  15136. curr = next;
  15137. const cached = findApiPathCache.get(curr);
  15138. if (cached !== void 0)
  15139. return addToCacheAndReturn(start, curr, cached);
  15140. const cjsCandidate = ppath.join(curr, Filename.pnpCjs);
  15141. if (opts.fakeFs.existsSync(cjsCandidate) && opts.fakeFs.statSync(cjsCandidate).isFile())
  15142. return addToCacheAndReturn(start, curr, cjsCandidate);
  15143. const legacyCjsCandidate = ppath.join(curr, Filename.pnpJs);
  15144. if (opts.fakeFs.existsSync(legacyCjsCandidate) && opts.fakeFs.statSync(legacyCjsCandidate).isFile())
  15145. return addToCacheAndReturn(start, curr, legacyCjsCandidate);
  15146. next = ppath.dirname(curr);
  15147. } while (curr !== PortablePath.root);
  15148. return addToCacheAndReturn(start, curr, null);
  15149. }
  15150. const moduleToApiPathCache = /* @__PURE__ */ new WeakMap();
  15151. function getApiPathFromParent(parent) {
  15152. if (parent == null)
  15153. return initialApiPath;
  15154. let apiPath = moduleToApiPathCache.get(parent);
  15155. if (typeof apiPath !== `undefined`)
  15156. return apiPath;
  15157. apiPath = parent.filename ? findApiPathFor(parent.filename) : null;
  15158. moduleToApiPathCache.set(parent, apiPath);
  15159. return apiPath;
  15160. }
  15161. return {
  15162. getApiPathFromParent,
  15163. findApiPathFor,
  15164. getApiEntry
  15165. };
  15166. }
  15167. const localFs = { ...fs__default.default };
  15168. const nodeFs = new NodeFS(localFs);
  15169. const defaultRuntimeState = $$SETUP_STATE(hydrateRuntimeState);
  15170. const defaultPnpapiResolution = __filename;
  15171. const defaultFsLayer = new VirtualFS({
  15172. baseFs: new ZipOpenFS({
  15173. baseFs: nodeFs,
  15174. libzip: () => getLibzipSync(),
  15175. maxOpenFiles: 80,
  15176. readOnlyArchives: true
  15177. })
  15178. });
  15179. class DynamicFS extends ProxiedFS {
  15180. constructor() {
  15181. super(ppath);
  15182. this.baseFs = defaultFsLayer;
  15183. }
  15184. mapToBase(p) {
  15185. return p;
  15186. }
  15187. mapFromBase(p) {
  15188. return p;
  15189. }
  15190. }
  15191. const dynamicFsLayer = new DynamicFS();
  15192. let manager;
  15193. const defaultApi = Object.assign(makeApi(defaultRuntimeState, {
  15194. fakeFs: dynamicFsLayer,
  15195. pnpapiResolution: defaultPnpapiResolution
  15196. }), {
  15197. makeApi: ({
  15198. basePath = void 0,
  15199. fakeFs = dynamicFsLayer,
  15200. pnpapiResolution = defaultPnpapiResolution,
  15201. ...rest
  15202. }) => {
  15203. const apiRuntimeState = typeof basePath !== `undefined` ? $$SETUP_STATE(hydrateRuntimeState, basePath) : defaultRuntimeState;
  15204. return makeApi(apiRuntimeState, {
  15205. fakeFs,
  15206. pnpapiResolution,
  15207. ...rest
  15208. });
  15209. },
  15210. setup: (api) => {
  15211. applyPatch(api || defaultApi, {
  15212. fakeFs: defaultFsLayer,
  15213. manager
  15214. });
  15215. dynamicFsLayer.baseFs = new NodeFS(fs__default.default);
  15216. }
  15217. });
  15218. manager = makeManager(defaultApi, {
  15219. fakeFs: dynamicFsLayer
  15220. });
  15221. if (module.parent && module.parent.id === `internal/preload`) {
  15222. defaultApi.setup();
  15223. if (module.filename) {
  15224. delete require$$0__default.default._cache[module.filename];
  15225. }
  15226. }
  15227. if (process.mainModule === module) {
  15228. const reportError = (code, message, data) => {
  15229. process.stdout.write(`${JSON.stringify([{ code, message, data }, null])}
  15230. `);
  15231. };
  15232. const reportSuccess = (resolution) => {
  15233. process.stdout.write(`${JSON.stringify([null, resolution])}
  15234. `);
  15235. };
  15236. const processResolution = (request, issuer) => {
  15237. try {
  15238. reportSuccess(defaultApi.resolveRequest(request, issuer));
  15239. } catch (error) {
  15240. reportError(error.code, error.message, error.data);
  15241. }
  15242. };
  15243. const processRequest = (data) => {
  15244. try {
  15245. const [request, issuer] = JSON.parse(data);
  15246. processResolution(request, issuer);
  15247. } catch (error) {
  15248. reportError(`INVALID_JSON`, error.message, error.data);
  15249. }
  15250. };
  15251. if (process.argv.length > 2) {
  15252. if (process.argv.length !== 4) {
  15253. process.stderr.write(`Usage: ${process.argv[0]} ${process.argv[1]} <request> <issuer>
  15254. `);
  15255. process.exitCode = 64;
  15256. } else {
  15257. processResolution(process.argv[2], process.argv[3]);
  15258. }
  15259. } else {
  15260. let buffer = ``;
  15261. const decoder = new StringDecoder__default.default.StringDecoder();
  15262. process.stdin.on(`data`, (chunk) => {
  15263. buffer += decoder.write(chunk);
  15264. do {
  15265. const index = buffer.indexOf(`
  15266. `);
  15267. if (index === -1)
  15268. break;
  15269. const line = buffer.slice(0, index);
  15270. buffer = buffer.slice(index + 1);
  15271. processRequest(line);
  15272. } while (true);
  15273. });
  15274. }
  15275. }
  15276. module.exports = defaultApi;