index.js 434 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170317131723173317431753176317731783179318031813182318331843185318631873188318931903191319231933194319531963197319831993200320132023203320432053206320732083209321032113212321332143215321632173218321932203221322232233224322532263227322832293230323132323233323432353236323732383239324032413242324332443245324632473248324932503251325232533254325532563257325832593260326132623263326432653266326732683269327032713272327332743275327632773278327932803281328232833284328532863287328832893290329132923293329432953296329732983299330033013302330333043305330633073308330933103311331233133314331533163317331833193320332133223323332433253326332733283329333033313332333333343335333633373338333933403341334233433344334533463347334833493350335133523353335433553356335733583359336033613362336333643365336633673368336933703371337233733374337533763377337833793380338133823383338433853386338733883389339033913392339333943395339633973398339934003401340234033404340534063407340834093410341134123413341434153416341734183419342034213422342334243425342634273428342934303431343234333434343534363437343834393440344134423443344434453446344734483449345034513452345334543455345634573458345934603461346234633464346534663467346834693470347134723473347434753476347734783479348034813482348334843485348634873488348934903491349234933494349534963497349834993500350135023503350435053506350735083509351035113512351335143515351635173518351935203521352235233524352535263527352835293530353135323533353435353536353735383539354035413542354335443545354635473548354935503551355235533554355535563557355835593560356135623563356435653566356735683569357035713572357335743575357635773578357935803581358235833584358535863587358835893590359135923593359435953596359735983599360036013602360336043605360636073608360936103611361236133614361536163617361836193620362136223623362436253626362736283629363036313632363336343635363636373638363936403641364236433644364536463647364836493650365136523653365436553656365736583659366036613662366336643665366636673668366936703671367236733674367536763677367836793680368136823683368436853686368736883689369036913692369336943695369636973698369937003701370237033704370537063707370837093710371137123713371437153716371737183719372037213722372337243725372637273728372937303731373237333734373537363737373837393740374137423743374437453746374737483749375037513752375337543755375637573758375937603761376237633764376537663767376837693770377137723773377437753776377737783779378037813782378337843785378637873788378937903791379237933794379537963797379837993800380138023803380438053806380738083809381038113812381338143815381638173818381938203821382238233824382538263827382838293830383138323833383438353836383738383839384038413842384338443845384638473848384938503851385238533854385538563857385838593860386138623863386438653866386738683869387038713872387338743875387638773878387938803881388238833884388538863887388838893890389138923893389438953896389738983899390039013902390339043905390639073908390939103911391239133914391539163917391839193920392139223923392439253926392739283929393039313932393339343935393639373938393939403941394239433944394539463947394839493950395139523953395439553956395739583959396039613962396339643965396639673968396939703971397239733974397539763977397839793980398139823983398439853986398739883989399039913992399339943995399639973998399940004001400240034004400540064007400840094010401140124013401440154016401740184019402040214022402340244025402640274028402940304031403240334034403540364037403840394040404140424043404440454046404740484049405040514052405340544055405640574058405940604061406240634064406540664067406840694070407140724073407440754076407740784079408040814082408340844085408640874088408940904091409240934094409540964097409840994100410141024103410441054106410741084109411041114112411341144115411641174118411941204121412241234124412541264127412841294130413141324133413441354136413741384139414041414142414341444145414641474148414941504151415241534154415541564157415841594160416141624163416441654166416741684169417041714172417341744175417641774178417941804181418241834184418541864187418841894190419141924193419441954196419741984199420042014202420342044205420642074208420942104211421242134214421542164217421842194220422142224223422442254226422742284229423042314232423342344235423642374238423942404241424242434244424542464247424842494250425142524253425442554256425742584259426042614262426342644265426642674268426942704271427242734274427542764277427842794280428142824283428442854286428742884289429042914292429342944295429642974298429943004301430243034304430543064307430843094310431143124313431443154316431743184319432043214322432343244325432643274328432943304331433243334334433543364337433843394340434143424343434443454346434743484349435043514352435343544355435643574358435943604361436243634364436543664367436843694370437143724373437443754376437743784379438043814382438343844385438643874388438943904391439243934394439543964397439843994400440144024403440444054406440744084409441044114412441344144415441644174418441944204421442244234424442544264427442844294430443144324433443444354436443744384439444044414442444344444445444644474448444944504451445244534454445544564457445844594460446144624463446444654466446744684469447044714472447344744475447644774478447944804481448244834484448544864487448844894490449144924493449444954496449744984499450045014502450345044505450645074508450945104511451245134514451545164517451845194520452145224523452445254526452745284529453045314532453345344535453645374538453945404541454245434544454545464547454845494550455145524553455445554556455745584559456045614562456345644565456645674568456945704571457245734574457545764577457845794580458145824583458445854586458745884589459045914592459345944595459645974598459946004601460246034604460546064607460846094610461146124613461446154616461746184619462046214622462346244625462646274628462946304631463246334634463546364637463846394640464146424643464446454646464746484649465046514652465346544655465646574658465946604661466246634664466546664667466846694670467146724673467446754676467746784679468046814682468346844685468646874688468946904691469246934694469546964697469846994700470147024703470447054706470747084709471047114712471347144715471647174718471947204721472247234724472547264727472847294730473147324733473447354736473747384739474047414742474347444745474647474748474947504751475247534754475547564757475847594760476147624763476447654766476747684769477047714772477347744775477647774778477947804781478247834784478547864787478847894790479147924793479447954796479747984799480048014802480348044805480648074808480948104811481248134814481548164817481848194820482148224823482448254826482748284829483048314832483348344835483648374838483948404841484248434844484548464847484848494850485148524853485448554856485748584859486048614862486348644865486648674868486948704871487248734874487548764877487848794880488148824883488448854886488748884889489048914892489348944895489648974898489949004901490249034904490549064907490849094910491149124913491449154916491749184919492049214922492349244925492649274928492949304931493249334934493549364937493849394940494149424943494449454946494749484949495049514952495349544955495649574958495949604961496249634964496549664967496849694970497149724973497449754976497749784979498049814982498349844985498649874988498949904991499249934994499549964997499849995000500150025003500450055006500750085009501050115012501350145015501650175018501950205021502250235024502550265027502850295030503150325033503450355036503750385039504050415042504350445045504650475048504950505051505250535054505550565057505850595060506150625063506450655066506750685069507050715072507350745075507650775078507950805081508250835084508550865087508850895090509150925093509450955096509750985099510051015102510351045105510651075108510951105111511251135114511551165117511851195120512151225123512451255126512751285129513051315132513351345135513651375138513951405141514251435144514551465147514851495150515151525153515451555156515751585159516051615162516351645165516651675168516951705171517251735174517551765177517851795180518151825183518451855186518751885189519051915192519351945195519651975198519952005201520252035204520552065207520852095210521152125213521452155216521752185219522052215222522352245225522652275228522952305231523252335234523552365237523852395240524152425243524452455246524752485249525052515252525352545255525652575258525952605261526252635264526552665267526852695270527152725273527452755276527752785279528052815282528352845285528652875288528952905291529252935294529552965297529852995300530153025303530453055306530753085309531053115312531353145315531653175318531953205321532253235324532553265327532853295330533153325333533453355336533753385339534053415342534353445345534653475348534953505351535253535354535553565357535853595360536153625363536453655366536753685369537053715372537353745375537653775378537953805381538253835384538553865387538853895390539153925393539453955396539753985399540054015402540354045405540654075408540954105411541254135414541554165417541854195420542154225423542454255426542754285429543054315432543354345435543654375438543954405441544254435444544554465447544854495450545154525453545454555456545754585459546054615462546354645465546654675468546954705471547254735474547554765477547854795480548154825483548454855486548754885489549054915492549354945495549654975498549955005501550255035504550555065507550855095510551155125513551455155516551755185519552055215522552355245525552655275528552955305531553255335534553555365537553855395540554155425543554455455546554755485549555055515552555355545555555655575558555955605561556255635564556555665567556855695570557155725573557455755576557755785579558055815582558355845585558655875588558955905591559255935594559555965597559855995600560156025603560456055606560756085609561056115612561356145615561656175618561956205621562256235624562556265627562856295630563156325633563456355636563756385639564056415642564356445645564656475648564956505651565256535654565556565657565856595660566156625663566456655666566756685669567056715672567356745675567656775678567956805681568256835684568556865687568856895690569156925693569456955696569756985699570057015702570357045705570657075708570957105711571257135714571557165717571857195720572157225723572457255726572757285729573057315732573357345735573657375738573957405741574257435744574557465747574857495750575157525753575457555756575757585759576057615762576357645765576657675768576957705771577257735774577557765777577857795780578157825783578457855786578757885789579057915792579357945795579657975798579958005801580258035804580558065807580858095810581158125813581458155816581758185819582058215822582358245825582658275828582958305831583258335834583558365837583858395840584158425843584458455846584758485849585058515852585358545855585658575858585958605861586258635864586558665867586858695870587158725873587458755876587758785879588058815882588358845885588658875888588958905891589258935894589558965897589858995900590159025903590459055906590759085909591059115912591359145915591659175918591959205921592259235924592559265927592859295930593159325933593459355936593759385939594059415942594359445945594659475948594959505951595259535954595559565957595859595960596159625963596459655966596759685969597059715972597359745975597659775978597959805981598259835984598559865987598859895990599159925993599459955996599759985999600060016002600360046005600660076008600960106011601260136014601560166017601860196020602160226023602460256026602760286029603060316032603360346035603660376038603960406041604260436044604560466047604860496050605160526053605460556056605760586059606060616062606360646065606660676068606960706071607260736074607560766077607860796080608160826083608460856086608760886089609060916092609360946095609660976098609961006101610261036104610561066107610861096110611161126113611461156116611761186119612061216122612361246125612661276128612961306131613261336134613561366137613861396140614161426143614461456146614761486149615061516152615361546155615661576158615961606161616261636164616561666167616861696170617161726173617461756176617761786179618061816182618361846185618661876188618961906191619261936194619561966197619861996200620162026203620462056206620762086209621062116212621362146215621662176218621962206221622262236224622562266227622862296230623162326233623462356236623762386239624062416242624362446245624662476248624962506251625262536254625562566257625862596260626162626263626462656266626762686269627062716272627362746275627662776278627962806281628262836284628562866287628862896290629162926293629462956296629762986299630063016302630363046305630663076308630963106311631263136314631563166317631863196320632163226323632463256326632763286329633063316332633363346335633663376338633963406341634263436344634563466347634863496350635163526353635463556356635763586359636063616362636363646365636663676368636963706371637263736374637563766377637863796380638163826383638463856386638763886389639063916392639363946395639663976398639964006401640264036404640564066407640864096410641164126413641464156416641764186419642064216422642364246425642664276428642964306431643264336434643564366437643864396440644164426443644464456446644764486449645064516452645364546455645664576458645964606461646264636464646564666467646864696470647164726473647464756476647764786479648064816482648364846485648664876488648964906491649264936494649564966497649864996500650165026503650465056506650765086509651065116512651365146515651665176518651965206521652265236524652565266527652865296530653165326533653465356536653765386539654065416542654365446545654665476548654965506551655265536554655565566557655865596560656165626563656465656566656765686569657065716572657365746575657665776578657965806581658265836584658565866587658865896590659165926593659465956596659765986599660066016602660366046605660666076608660966106611661266136614661566166617661866196620662166226623662466256626662766286629663066316632663366346635663666376638663966406641664266436644664566466647664866496650665166526653665466556656665766586659666066616662666366646665666666676668666966706671667266736674667566766677667866796680668166826683668466856686668766886689669066916692669366946695669666976698669967006701670267036704670567066707670867096710671167126713671467156716671767186719672067216722672367246725672667276728672967306731673267336734673567366737673867396740674167426743674467456746674767486749675067516752675367546755675667576758675967606761676267636764676567666767676867696770677167726773677467756776677767786779678067816782678367846785678667876788678967906791679267936794679567966797679867996800680168026803680468056806680768086809681068116812681368146815681668176818681968206821682268236824682568266827682868296830683168326833683468356836683768386839684068416842684368446845684668476848684968506851685268536854685568566857685868596860686168626863686468656866686768686869687068716872687368746875687668776878687968806881688268836884688568866887688868896890689168926893689468956896689768986899690069016902690369046905690669076908690969106911691269136914691569166917691869196920692169226923692469256926692769286929693069316932693369346935693669376938693969406941694269436944694569466947694869496950695169526953695469556956695769586959696069616962696369646965696669676968696969706971697269736974697569766977697869796980698169826983698469856986698769886989699069916992699369946995699669976998699970007001700270037004700570067007700870097010701170127013701470157016701770187019702070217022702370247025702670277028702970307031703270337034703570367037703870397040704170427043704470457046704770487049705070517052705370547055705670577058705970607061706270637064706570667067706870697070707170727073707470757076707770787079708070817082708370847085708670877088708970907091709270937094709570967097709870997100710171027103710471057106710771087109711071117112711371147115711671177118711971207121712271237124712571267127712871297130713171327133713471357136713771387139714071417142714371447145714671477148714971507151715271537154715571567157715871597160716171627163716471657166716771687169717071717172717371747175717671777178717971807181718271837184718571867187718871897190719171927193719471957196719771987199720072017202720372047205720672077208720972107211721272137214721572167217721872197220722172227223722472257226722772287229723072317232723372347235723672377238723972407241724272437244724572467247724872497250725172527253725472557256725772587259726072617262726372647265726672677268726972707271727272737274727572767277727872797280728172827283728472857286728772887289729072917292729372947295729672977298729973007301730273037304730573067307730873097310731173127313731473157316731773187319732073217322732373247325732673277328732973307331733273337334733573367337733873397340734173427343734473457346734773487349735073517352735373547355735673577358735973607361736273637364736573667367736873697370737173727373737473757376737773787379738073817382738373847385738673877388738973907391739273937394739573967397739873997400740174027403740474057406740774087409741074117412741374147415741674177418741974207421742274237424742574267427742874297430743174327433743474357436743774387439744074417442744374447445744674477448744974507451745274537454745574567457745874597460746174627463746474657466746774687469747074717472747374747475747674777478747974807481748274837484748574867487748874897490749174927493749474957496749774987499750075017502750375047505750675077508750975107511751275137514751575167517751875197520752175227523752475257526752775287529753075317532753375347535753675377538753975407541754275437544754575467547754875497550755175527553755475557556755775587559756075617562756375647565756675677568756975707571757275737574757575767577757875797580758175827583758475857586758775887589759075917592759375947595759675977598759976007601760276037604760576067607760876097610761176127613761476157616761776187619762076217622762376247625762676277628762976307631763276337634763576367637763876397640764176427643764476457646764776487649765076517652765376547655765676577658765976607661766276637664766576667667766876697670767176727673767476757676767776787679768076817682768376847685768676877688768976907691769276937694769576967697769876997700770177027703770477057706770777087709771077117712771377147715771677177718771977207721772277237724772577267727772877297730773177327733773477357736773777387739774077417742774377447745774677477748774977507751775277537754775577567757775877597760776177627763776477657766776777687769777077717772777377747775777677777778777977807781778277837784778577867787778877897790779177927793779477957796779777987799780078017802780378047805780678077808780978107811781278137814781578167817781878197820782178227823782478257826782778287829
  1. /*
  2. Copyright (C) 2017 Timofey Kachalov <[email protected]>
  3. Redistribution and use in source and binary forms, with or without
  4. modification, are permitted provided that the following conditions are met:
  5. * Redistributions of source code must retain the above copyright
  6. notice, this list of conditions and the following disclaimer.
  7. * Redistributions in binary form must reproduce the above copyright
  8. notice, this list of conditions and the following disclaimer in the
  9. documentation and/or other materials provided with the distribution.
  10. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
  11. AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  12. IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  13. ARE DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
  14. DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
  15. (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
  16. LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
  17. ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
  18. (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
  19. THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  20. */
  21. require("source-map-support").install();
  22. module.exports =
  23. /******/ (function(modules) { // webpackBootstrap
  24. /******/ // The module cache
  25. /******/ var installedModules = {};
  26. /******/
  27. /******/ // The require function
  28. /******/ function __webpack_require__(moduleId) {
  29. /******/
  30. /******/ // Check if module is in cache
  31. /******/ if(installedModules[moduleId]) {
  32. /******/ return installedModules[moduleId].exports;
  33. /******/ }
  34. /******/ // Create a new module (and put it into the cache)
  35. /******/ var module = installedModules[moduleId] = {
  36. /******/ i: moduleId,
  37. /******/ l: false,
  38. /******/ exports: {}
  39. /******/ };
  40. /******/
  41. /******/ // Execute the module function
  42. /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
  43. /******/
  44. /******/ // Flag the module as loaded
  45. /******/ module.l = true;
  46. /******/
  47. /******/ // Return the exports of the module
  48. /******/ return module.exports;
  49. /******/ }
  50. /******/
  51. /******/
  52. /******/ // expose the modules object (__webpack_modules__)
  53. /******/ __webpack_require__.m = modules;
  54. /******/
  55. /******/ // expose the module cache
  56. /******/ __webpack_require__.c = installedModules;
  57. /******/
  58. /******/ // identity function for calling harmony imports with the correct context
  59. /******/ __webpack_require__.i = function(value) { return value; };
  60. /******/
  61. /******/ // define getter function for harmony exports
  62. /******/ __webpack_require__.d = function(exports, name, getter) {
  63. /******/ if(!__webpack_require__.o(exports, name)) {
  64. /******/ Object.defineProperty(exports, name, {
  65. /******/ configurable: false,
  66. /******/ enumerable: true,
  67. /******/ get: getter
  68. /******/ });
  69. /******/ }
  70. /******/ };
  71. /******/
  72. /******/ // getDefaultExport function for compatibility with non-harmony modules
  73. /******/ __webpack_require__.n = function(module) {
  74. /******/ var getter = module && module.__esModule ?
  75. /******/ function getDefault() { return module['default']; } :
  76. /******/ function getModuleExports() { return module; };
  77. /******/ __webpack_require__.d(getter, 'a', getter);
  78. /******/ return getter;
  79. /******/ };
  80. /******/
  81. /******/ // Object.prototype.hasOwnProperty.call
  82. /******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
  83. /******/
  84. /******/ // __webpack_public_path__
  85. /******/ __webpack_require__.p = "";
  86. /******/
  87. /******/ // Load entry module and return exports
  88. /******/ return __webpack_require__(__webpack_require__.s = 37);
  89. /******/ })
  90. /************************************************************************/
  91. /******/ ([
  92. /* 0 */
  93. /***/ (function(module, exports) {
  94. module.exports = require("inversify");
  95. /***/ }),
  96. /* 1 */
  97. /***/ (function(module, exports) {
  98. module.exports = require("tslib");
  99. /***/ }),
  100. /* 2 */
  101. /***/ (function(module, exports, __webpack_require__) {
  102. "use strict";
  103. Object.defineProperty(exports, "__esModule", { value: true });
  104. exports.ServiceIdentifiers = {
  105. Factory__ICalleeDataExtractor: Symbol('Factory<ICalleeDataExtractor>'),
  106. Factory__IControlFlowReplacer: Symbol('Factory<IControlFlowReplacer>'),
  107. Factory__ICustomNode: Symbol('Factory<ICustomNode>'),
  108. Factory__ICustomNodeGroup: Symbol('Factory<ICustomNodeGroup>'),
  109. Factory__INodeTransformer: Symbol('Factory<INodeTransformer[]>'),
  110. Factory__IObfuscationResult: Symbol('Factory<IObfuscationResult>'),
  111. Factory__IObfuscatingReplacer: Symbol('Factory<IObfuscatingReplacer>'),
  112. Factory__TControlFlowStorage: Symbol('Factory<TControlFlowStorage>'),
  113. ICalleeDataExtractor: Symbol('ICalleeDataExtractor'),
  114. ICustomNodeGroup: Symbol('ICustomNodeGroup'),
  115. IControlFlowReplacer: Symbol('IControlFlowReplacer'),
  116. IDeadCodeInjectionReplacer: Symbol('IDeadCodeInjectionReplacer'),
  117. IJavaScriptObfuscator: Symbol('IJavaScriptObfuscator'),
  118. INodeTransformer: Symbol('INodeTransformer'),
  119. IObfuscationEventEmitter: Symbol('IObfuscationEventEmitter'),
  120. IObfuscationResult: Symbol('IObfuscationResult'),
  121. IObfuscator: Symbol('IObfuscator'),
  122. IOptions: Symbol('IOptions'),
  123. IObfuscatingReplacer: Symbol('IObfuscatingReplacer'),
  124. ISourceMapCorrector: Symbol('ISourceMapCorrector'),
  125. IStackTraceAnalyzer: Symbol('IStackTraceAnalyzer'),
  126. Newable__ICustomNode: Symbol('Newable<ICustomNode>'),
  127. Newable__TControlFlowStorage: Symbol('Newable<TControlFlowStorage>'),
  128. TCustomNodeGroupStorage: Symbol('TCustomNodeGroupStorage'),
  129. TStringArrayStorage: Symbol('TStringArrayStorage')
  130. };
  131. /***/ }),
  132. /* 3 */
  133. /***/ (function(module, exports, __webpack_require__) {
  134. "use strict";
  135. var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
  136. var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
  137. function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
  138. Object.defineProperty(exports, "__esModule", { value: true });
  139. var escodegen = __webpack_require__(28);
  140. var esprima = __webpack_require__(35);
  141. var estraverse = __webpack_require__(12);
  142. var NodeType_1 = __webpack_require__(14);
  143. var Node_1 = __webpack_require__(6);
  144. var Nodes_1 = __webpack_require__(8);
  145. var NodeUtils = function () {
  146. function NodeUtils() {
  147. _classCallCheck(this, NodeUtils);
  148. }
  149. _createClass(NodeUtils, null, [{
  150. key: "addXVerbatimPropertyToLiterals",
  151. value: function addXVerbatimPropertyToLiterals(astTree) {
  152. NodeUtils.typedReplace(astTree, NodeType_1.NodeType.Literal, {
  153. leave: function leave(literalNode) {
  154. literalNode['x-verbatim-property'] = {
  155. content: literalNode.raw,
  156. precedence: escodegen.Precedence.Primary
  157. };
  158. }
  159. });
  160. return astTree;
  161. }
  162. }, {
  163. key: "clone",
  164. value: function clone(astTree) {
  165. var cloneRecursive = function cloneRecursive(node) {
  166. var copy = {};
  167. Object.keys(node).filter(function (property) {
  168. return property !== 'parentNode';
  169. }).forEach(function (property) {
  170. var value = node[property];
  171. var clonedValue = void 0;
  172. if (value === null || value instanceof RegExp) {
  173. clonedValue = value;
  174. } else if (Array.isArray(value)) {
  175. clonedValue = value.map(cloneRecursive);
  176. } else if ((typeof value === "undefined" ? "undefined" : _typeof(value)) === 'object') {
  177. clonedValue = cloneRecursive(value);
  178. } else {
  179. clonedValue = value;
  180. }
  181. copy[property] = clonedValue;
  182. });
  183. return copy;
  184. };
  185. return NodeUtils.parentize(cloneRecursive(astTree));
  186. }
  187. }, {
  188. key: "convertCodeToStructure",
  189. value: function convertCodeToStructure(code) {
  190. var structure = esprima.parse(code);
  191. structure = NodeUtils.addXVerbatimPropertyToLiterals(structure);
  192. structure = NodeUtils.parentize(structure);
  193. return structure.body;
  194. }
  195. }, {
  196. key: "convertStructureToCode",
  197. value: function convertStructureToCode(structure) {
  198. var code = '';
  199. structure.forEach(function (node) {
  200. code += escodegen.generate(node, {
  201. sourceMapWithCode: true
  202. }).code;
  203. });
  204. return code;
  205. }
  206. }, {
  207. key: "getBlockStatementNodeByIndex",
  208. value: function getBlockStatementNodeByIndex(node) {
  209. var index = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
  210. if (Node_1.Node.isNodeHasBlockStatement(node)) {
  211. if (node.body[index] === undefined) {
  212. throw new ReferenceError("Wrong index `" + index + "`. Block-statement body length is `" + node.body.length + "`");
  213. }
  214. return node.body[index];
  215. }
  216. throw new TypeError('The specified node have no a block-statement');
  217. }
  218. }, {
  219. key: "getBlockScopesOfNode",
  220. value: function getBlockScopesOfNode(node) {
  221. var blockScopes = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
  222. var parentNode = node.parentNode;
  223. if (!parentNode) {
  224. throw new ReferenceError('`parentNode` property of given node is `undefined`');
  225. }
  226. if (Node_1.Node.isBlockStatementNode(parentNode)) {
  227. if (!parentNode.parentNode) {
  228. throw new ReferenceError('`parentNode` property of `parentNode` of given node is `undefined`');
  229. }
  230. if (NodeUtils.nodesWithBlockScope.indexOf(parentNode.parentNode.type) !== -1) {
  231. blockScopes.push(parentNode);
  232. }
  233. }
  234. if (!Node_1.Node.isProgramNode(parentNode)) {
  235. return NodeUtils.getBlockScopesOfNode(parentNode, blockScopes);
  236. }
  237. blockScopes.push(parentNode);
  238. return blockScopes;
  239. }
  240. }, {
  241. key: "getNodeBlockScopeDepth",
  242. value: function getNodeBlockScopeDepth(node) {
  243. var depth = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
  244. var parentNode = node.parentNode;
  245. if (!parentNode) {
  246. throw new ReferenceError('`parentNode` property of given node is `undefined`');
  247. }
  248. if (Node_1.Node.isProgramNode(parentNode)) {
  249. return depth;
  250. }
  251. if (Node_1.Node.isBlockStatementNode(node) && NodeUtils.nodesWithBlockScope.indexOf(parentNode.type) !== -1) {
  252. return NodeUtils.getNodeBlockScopeDepth(parentNode, ++depth);
  253. }
  254. return NodeUtils.getNodeBlockScopeDepth(parentNode, depth);
  255. }
  256. }, {
  257. key: "getUnaryExpressionArgumentNode",
  258. value: function getUnaryExpressionArgumentNode(unaryExpressionNode) {
  259. if (Node_1.Node.isUnaryExpressionNode(unaryExpressionNode.argument)) {
  260. return NodeUtils.getUnaryExpressionArgumentNode(unaryExpressionNode.argument);
  261. }
  262. return unaryExpressionNode.argument;
  263. }
  264. }, {
  265. key: "parentize",
  266. value: function parentize(astTree) {
  267. var isRootNode = true;
  268. estraverse.traverse(astTree, {
  269. enter: function enter(node, parentNode) {
  270. var value = void 0;
  271. if (isRootNode) {
  272. if (node.type === NodeType_1.NodeType.Program) {
  273. value = node;
  274. } else {
  275. value = Nodes_1.Nodes.getProgramNode([node]);
  276. value.parentNode = value;
  277. }
  278. isRootNode = false;
  279. } else {
  280. value = parentNode || node;
  281. }
  282. node.parentNode = value;
  283. node.obfuscatedNode = false;
  284. }
  285. });
  286. return astTree;
  287. }
  288. }, {
  289. key: "typedReplace",
  290. value: function typedReplace(astTree, nodeType, visitor) {
  291. NodeUtils.typedTraverse(astTree, nodeType, visitor, 'replace');
  292. }
  293. }, {
  294. key: "typedTraverse",
  295. value: function typedTraverse(astTree, nodeType, visitor) {
  296. var traverseType = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 'traverse';
  297. estraverse[traverseType](astTree, {
  298. enter: function enter(node, parentNode) {
  299. if (node.type === nodeType && visitor.enter) {
  300. return visitor.enter(node, parentNode);
  301. }
  302. },
  303. leave: function leave(node, parentNode) {
  304. if (node.type === nodeType && visitor.leave) {
  305. return visitor.leave(node, parentNode);
  306. }
  307. }
  308. });
  309. }
  310. }]);
  311. return NodeUtils;
  312. }();
  313. NodeUtils.nodesWithBlockScope = [NodeType_1.NodeType.ArrowFunctionExpression, NodeType_1.NodeType.FunctionDeclaration, NodeType_1.NodeType.FunctionExpression, NodeType_1.NodeType.MethodDefinition, NodeType_1.NodeType.Program];
  314. exports.NodeUtils = NodeUtils;
  315. /***/ }),
  316. /* 4 */
  317. /***/ (function(module, exports, __webpack_require__) {
  318. "use strict";
  319. var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
  320. function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
  321. Object.defineProperty(exports, "__esModule", { value: true });
  322. var chance_1 = __webpack_require__(139);
  323. var Utils_1 = __webpack_require__(9);
  324. var RandomGeneratorUtils = function () {
  325. function RandomGeneratorUtils() {
  326. _classCallCheck(this, RandomGeneratorUtils);
  327. }
  328. _createClass(RandomGeneratorUtils, null, [{
  329. key: "initializeRandomGenerator",
  330. value: function initializeRandomGenerator(seed) {
  331. if (seed !== 0) {
  332. RandomGeneratorUtils.randomGenerator = new chance_1.Chance(seed);
  333. } else {
  334. RandomGeneratorUtils.randomGenerator = new chance_1.Chance();
  335. }
  336. }
  337. }, {
  338. key: "clearRandomGenerator",
  339. value: function clearRandomGenerator() {
  340. RandomGeneratorUtils.randomVariableNameSet.clear();
  341. }
  342. }, {
  343. key: "getMathRandom",
  344. value: function getMathRandom() {
  345. return RandomGeneratorUtils.getRandomInteger(0, 99999) / 100000;
  346. }
  347. }, {
  348. key: "getRandomFloat",
  349. value: function getRandomFloat(min, max) {
  350. return RandomGeneratorUtils.getRandomGenerator().floating({
  351. min: min,
  352. max: max,
  353. fixed: 7
  354. });
  355. }
  356. }, {
  357. key: "getRandomGenerator",
  358. value: function getRandomGenerator() {
  359. var randomGenerator = RandomGeneratorUtils.randomGenerator;
  360. if (!randomGenerator) {
  361. RandomGeneratorUtils.initializeRandomGenerator(0);
  362. }
  363. return RandomGeneratorUtils.randomGenerator;
  364. }
  365. }, {
  366. key: "getRandomInteger",
  367. value: function getRandomInteger(min, max) {
  368. return RandomGeneratorUtils.getRandomGenerator().integer({
  369. min: min,
  370. max: max
  371. });
  372. }
  373. }, {
  374. key: "getRandomString",
  375. value: function getRandomString(length) {
  376. var pool = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : RandomGeneratorUtils.randomGeneratorPool;
  377. return RandomGeneratorUtils.getRandomGenerator().string({ length: length, pool: pool });
  378. }
  379. }, {
  380. key: "getRandomVariableName",
  381. value: function getRandomVariableName(length) {
  382. var prefix = "_" + Utils_1.Utils.hexadecimalPrefix;
  383. var rangeMinInteger = 10000;
  384. var rangeMaxInteger = 99999999;
  385. var randomVariableName = "" + prefix + Utils_1.Utils.decToHex(RandomGeneratorUtils.getRandomInteger(rangeMinInteger, rangeMaxInteger)).substr(0, length);
  386. if (RandomGeneratorUtils.randomVariableNameSet.has(randomVariableName)) {
  387. return RandomGeneratorUtils.getRandomVariableName(length);
  388. }
  389. RandomGeneratorUtils.randomVariableNameSet.add(randomVariableName);
  390. return randomVariableName;
  391. }
  392. }]);
  393. return RandomGeneratorUtils;
  394. }();
  395. RandomGeneratorUtils.randomGeneratorPool = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
  396. RandomGeneratorUtils.randomGeneratorPoolNumbers = '0123456789';
  397. RandomGeneratorUtils.randomGeneratorPoolHexadecimal = "abcdef" + RandomGeneratorUtils.randomGeneratorPoolNumbers;
  398. RandomGeneratorUtils.randomGeneratorPoolWithNumbers = "" + RandomGeneratorUtils.randomGeneratorPool + RandomGeneratorUtils.randomGeneratorPoolNumbers;
  399. RandomGeneratorUtils.randomVariableNameSet = new Set();
  400. exports.RandomGeneratorUtils = RandomGeneratorUtils;
  401. /***/ }),
  402. /* 5 */
  403. /***/ (function(module, exports, __webpack_require__) {
  404. "use strict";
  405. Object.defineProperty(exports, "__esModule", { value: true });
  406. function initializable() {
  407. var initializeMethodKey = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'initialize';
  408. var decoratorName = Object.keys(this)[0];
  409. return function (target, propertyKey) {
  410. var descriptor = {
  411. configurable: true,
  412. enumerable: true
  413. };
  414. var initializeMethod = target[initializeMethodKey];
  415. if (!initializeMethod || typeof initializeMethod !== 'function') {
  416. throw new Error("`" + initializeMethodKey + "` method with initialization logic not found. `@" + decoratorName + "` decorator requires `" + initializeMethodKey + "` method");
  417. }
  418. var metadataPropertyKey = "_" + propertyKey;
  419. var propertyDescriptor = Object.getOwnPropertyDescriptor(target, metadataPropertyKey) || descriptor;
  420. var methodDescriptor = Object.getOwnPropertyDescriptor(target, initializeMethodKey) || descriptor;
  421. var originalMethod = methodDescriptor.value;
  422. Object.defineProperty(target, propertyKey, Object.assign({}, propertyDescriptor, { get: function get() {
  423. if (this[metadataPropertyKey] === undefined) {
  424. throw new Error("Property `" + propertyKey + "` is not initialized! Initialize it first!");
  425. }
  426. return this[metadataPropertyKey];
  427. }, set: function set(newVal) {
  428. this[metadataPropertyKey] = newVal;
  429. } }));
  430. Object.defineProperty(target, initializeMethodKey, Object.assign({}, methodDescriptor, { value: function value() {
  431. originalMethod.apply(this, arguments);
  432. if (this[propertyKey]) {}
  433. } }));
  434. return propertyDescriptor;
  435. };
  436. }
  437. exports.initializable = initializable;
  438. /***/ }),
  439. /* 6 */
  440. /***/ (function(module, exports, __webpack_require__) {
  441. "use strict";
  442. var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
  443. function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
  444. Object.defineProperty(exports, "__esModule", { value: true });
  445. var NodeType_1 = __webpack_require__(14);
  446. var Node = function () {
  447. function Node() {
  448. _classCallCheck(this, Node);
  449. }
  450. _createClass(Node, null, [{
  451. key: "isArrowFunctionExpressionNode",
  452. value: function isArrowFunctionExpressionNode(node) {
  453. return node.type === NodeType_1.NodeType.ArrowFunctionExpression;
  454. }
  455. }, {
  456. key: "isAssignmentPatternNode",
  457. value: function isAssignmentPatternNode(node) {
  458. return node.type === NodeType_1.NodeType.AssignmentPattern;
  459. }
  460. }, {
  461. key: "isBlockStatementNode",
  462. value: function isBlockStatementNode(node) {
  463. return node.type === NodeType_1.NodeType.BlockStatement;
  464. }
  465. }, {
  466. key: "isBreakStatementNode",
  467. value: function isBreakStatementNode(node) {
  468. return node.type === NodeType_1.NodeType.BreakStatement;
  469. }
  470. }, {
  471. key: "isCallExpressionNode",
  472. value: function isCallExpressionNode(node) {
  473. return node.type === NodeType_1.NodeType.CallExpression;
  474. }
  475. }, {
  476. key: "isCatchClauseNode",
  477. value: function isCatchClauseNode(node) {
  478. return node.type === NodeType_1.NodeType.CatchClause;
  479. }
  480. }, {
  481. key: "isContinueStatementNode",
  482. value: function isContinueStatementNode(node) {
  483. return node.type === NodeType_1.NodeType.ContinueStatement;
  484. }
  485. }, {
  486. key: "isExpressionStatementNode",
  487. value: function isExpressionStatementNode(node) {
  488. return node.type === NodeType_1.NodeType.ExpressionStatement;
  489. }
  490. }, {
  491. key: "isFunctionDeclarationNode",
  492. value: function isFunctionDeclarationNode(node) {
  493. return node.type === NodeType_1.NodeType.FunctionDeclaration;
  494. }
  495. }, {
  496. key: "isFunctionExpressionNode",
  497. value: function isFunctionExpressionNode(node) {
  498. return node.type === NodeType_1.NodeType.FunctionExpression;
  499. }
  500. }, {
  501. key: "isIdentifierNode",
  502. value: function isIdentifierNode(node) {
  503. return node.type === NodeType_1.NodeType.Identifier;
  504. }
  505. }, {
  506. key: "isIfStatementNode",
  507. value: function isIfStatementNode(node) {
  508. return node.type === NodeType_1.NodeType.IfStatement;
  509. }
  510. }, {
  511. key: "isLabelIdentifierNode",
  512. value: function isLabelIdentifierNode(node, parentNode) {
  513. var parentNodeIsLabeledStatementNode = Node.isLabeledStatementNode(parentNode) && parentNode.label === node;
  514. var parentNodeIsContinueStatementNode = Node.isContinueStatementNode(parentNode) && parentNode.label === node;
  515. var parentNodeIsBreakStatementNode = Node.isBreakStatementNode(parentNode) && parentNode.label === node;
  516. return parentNodeIsLabeledStatementNode || parentNodeIsContinueStatementNode || parentNodeIsBreakStatementNode;
  517. }
  518. }, {
  519. key: "isLabeledStatementNode",
  520. value: function isLabeledStatementNode(node) {
  521. return node.type === NodeType_1.NodeType.LabeledStatement;
  522. }
  523. }, {
  524. key: "isLiteralNode",
  525. value: function isLiteralNode(node) {
  526. return node.type === NodeType_1.NodeType.Literal;
  527. }
  528. }, {
  529. key: "isMemberExpressionNode",
  530. value: function isMemberExpressionNode(node) {
  531. return node.type === NodeType_1.NodeType.MemberExpression;
  532. }
  533. }, {
  534. key: "isMethodDefinitionNode",
  535. value: function isMethodDefinitionNode(node) {
  536. return node.type === NodeType_1.NodeType.MethodDefinition;
  537. }
  538. }, {
  539. key: "isObjectPatternNode",
  540. value: function isObjectPatternNode(node) {
  541. return node.type === NodeType_1.NodeType.ObjectPattern;
  542. }
  543. }, {
  544. key: "isObjectExpressionNode",
  545. value: function isObjectExpressionNode(node) {
  546. return node.type === NodeType_1.NodeType.ObjectExpression;
  547. }
  548. }, {
  549. key: "isProgramNode",
  550. value: function isProgramNode(node) {
  551. return node.type === NodeType_1.NodeType.Program;
  552. }
  553. }, {
  554. key: "isPropertyNode",
  555. value: function isPropertyNode(node) {
  556. return node.type === NodeType_1.NodeType.Property;
  557. }
  558. }, {
  559. key: "isReplaceableIdentifierNode",
  560. value: function isReplaceableIdentifierNode(node, parentNode) {
  561. if (!Node.isIdentifierNode(node)) {
  562. return false;
  563. }
  564. var parentNodeIsPropertyNode = Node.isPropertyNode(parentNode) && parentNode.key === node;
  565. var parentNodeIsMemberExpressionNode = Node.isMemberExpressionNode(parentNode) && parentNode.computed === false && parentNode.property === node;
  566. return !parentNodeIsPropertyNode && !parentNodeIsMemberExpressionNode && !Node.isLabelIdentifierNode(node, parentNode);
  567. }
  568. }, {
  569. key: "isTemplateLiteralNode",
  570. value: function isTemplateLiteralNode(node) {
  571. return node.type === NodeType_1.NodeType.TemplateLiteral;
  572. }
  573. }, {
  574. key: "isUnaryExpressionNode",
  575. value: function isUnaryExpressionNode(node) {
  576. return node.type === NodeType_1.NodeType.UnaryExpression;
  577. }
  578. }, {
  579. key: "isVariableDeclarationNode",
  580. value: function isVariableDeclarationNode(node) {
  581. return node.type === NodeType_1.NodeType.VariableDeclaration;
  582. }
  583. }, {
  584. key: "isVariableDeclaratorNode",
  585. value: function isVariableDeclaratorNode(node) {
  586. return node.type === NodeType_1.NodeType.VariableDeclarator;
  587. }
  588. }, {
  589. key: "isNodeHasBlockStatement",
  590. value: function isNodeHasBlockStatement(node) {
  591. return node.hasOwnProperty('body') && Array.isArray(node.body);
  592. }
  593. }]);
  594. return Node;
  595. }();
  596. exports.Node = Node;
  597. /***/ }),
  598. /* 7 */
  599. /***/ (function(module, exports, __webpack_require__) {
  600. "use strict";
  601. var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
  602. function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
  603. Object.defineProperty(exports, "__esModule", { value: true });
  604. var tslib_1 = __webpack_require__(1);
  605. var inversify_1 = __webpack_require__(0);
  606. var ServiceIdentifiers_1 = __webpack_require__(2);
  607. var NodeUtils_1 = __webpack_require__(3);
  608. var AbstractCustomNode = function () {
  609. function AbstractCustomNode(options) {
  610. _classCallCheck(this, AbstractCustomNode);
  611. this.options = options;
  612. }
  613. _createClass(AbstractCustomNode, [{
  614. key: "getCode",
  615. value: function getCode() {
  616. if (!this.cachedCode) {
  617. this.cachedCode = NodeUtils_1.NodeUtils.convertStructureToCode(this.getNode());
  618. }
  619. return this.cachedCode;
  620. }
  621. }, {
  622. key: "getNode",
  623. value: function getNode() {
  624. if (!this.cachedNode) {
  625. this.cachedNode = this.getNodeStructure();
  626. }
  627. return this.cachedNode;
  628. }
  629. }]);
  630. return AbstractCustomNode;
  631. }();
  632. AbstractCustomNode = tslib_1.__decorate([inversify_1.injectable(), tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)), tslib_1.__metadata("design:paramtypes", [Object])], AbstractCustomNode);
  633. exports.AbstractCustomNode = AbstractCustomNode;
  634. /***/ }),
  635. /* 8 */
  636. /***/ (function(module, exports, __webpack_require__) {
  637. "use strict";
  638. var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
  639. function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
  640. Object.defineProperty(exports, "__esModule", { value: true });
  641. var escodegen = __webpack_require__(28);
  642. var NodeType_1 = __webpack_require__(14);
  643. var Nodes = function () {
  644. function Nodes() {
  645. _classCallCheck(this, Nodes);
  646. }
  647. _createClass(Nodes, null, [{
  648. key: "getProgramNode",
  649. value: function getProgramNode() {
  650. var body = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
  651. return {
  652. type: NodeType_1.NodeType.Program,
  653. body: body,
  654. sourceType: 'script',
  655. obfuscatedNode: false
  656. };
  657. }
  658. }, {
  659. key: "getArrayExpressionNode",
  660. value: function getArrayExpressionNode() {
  661. var elements = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
  662. return {
  663. type: NodeType_1.NodeType.ArrayExpression,
  664. elements: elements
  665. };
  666. }
  667. }, {
  668. key: "getAssignmentExpressionNode",
  669. value: function getAssignmentExpressionNode(operator, left, right) {
  670. return {
  671. type: NodeType_1.NodeType.AssignmentExpression,
  672. operator: operator,
  673. left: left,
  674. right: right,
  675. obfuscatedNode: false
  676. };
  677. }
  678. }, {
  679. key: "getBinaryExpressionNode",
  680. value: function getBinaryExpressionNode(operator, left, right) {
  681. return {
  682. type: NodeType_1.NodeType.BinaryExpression,
  683. operator: operator,
  684. left: left,
  685. right: right,
  686. obfuscatedNode: false
  687. };
  688. }
  689. }, {
  690. key: "getBlockStatementNode",
  691. value: function getBlockStatementNode() {
  692. var body = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
  693. return {
  694. type: NodeType_1.NodeType.BlockStatement,
  695. body: body,
  696. obfuscatedNode: false
  697. };
  698. }
  699. }, {
  700. key: "getBreakStatement",
  701. value: function getBreakStatement(label) {
  702. var breakStatementNode = {
  703. type: NodeType_1.NodeType.BreakStatement,
  704. obfuscatedNode: false
  705. };
  706. if (label) {
  707. breakStatementNode.label = label;
  708. }
  709. return breakStatementNode;
  710. }
  711. }, {
  712. key: "getCatchClauseNode",
  713. value: function getCatchClauseNode() {
  714. var body = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
  715. return {
  716. type: NodeType_1.NodeType.CatchClause,
  717. param: Nodes.getIdentifierNode('err'),
  718. body: Nodes.getBlockStatementNode(body),
  719. obfuscatedNode: false
  720. };
  721. }
  722. }, {
  723. key: "getCallExpressionNode",
  724. value: function getCallExpressionNode(callee) {
  725. var args = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
  726. return {
  727. type: NodeType_1.NodeType.CallExpression,
  728. callee: callee,
  729. arguments: args,
  730. obfuscatedNode: false
  731. };
  732. }
  733. }, {
  734. key: "getContinueStatement",
  735. value: function getContinueStatement(label) {
  736. var continueStatementNode = {
  737. type: NodeType_1.NodeType.ContinueStatement,
  738. obfuscatedNode: false
  739. };
  740. if (label) {
  741. continueStatementNode.label = label;
  742. }
  743. return continueStatementNode;
  744. }
  745. }, {
  746. key: "getExpressionStatementNode",
  747. value: function getExpressionStatementNode(expression) {
  748. return {
  749. type: NodeType_1.NodeType.ExpressionStatement,
  750. expression: expression,
  751. obfuscatedNode: false
  752. };
  753. }
  754. }, {
  755. key: "getFunctionDeclarationNode",
  756. value: function getFunctionDeclarationNode(functionName, params, body) {
  757. return {
  758. type: NodeType_1.NodeType.FunctionDeclaration,
  759. id: Nodes.getIdentifierNode(functionName),
  760. params: params,
  761. body: body,
  762. generator: false,
  763. obfuscatedNode: false
  764. };
  765. }
  766. }, {
  767. key: "getFunctionExpressionNode",
  768. value: function getFunctionExpressionNode(params, body) {
  769. return {
  770. type: NodeType_1.NodeType.FunctionExpression,
  771. params: params,
  772. body: body,
  773. generator: false,
  774. obfuscatedNode: false
  775. };
  776. }
  777. }, {
  778. key: "getIfStatementNode",
  779. value: function getIfStatementNode(test, consequent, alternate) {
  780. return Object.assign({ type: NodeType_1.NodeType.IfStatement, test: test,
  781. consequent: consequent }, alternate && { alternate: alternate }, { obfuscatedNode: false });
  782. }
  783. }, {
  784. key: "getIdentifierNode",
  785. value: function getIdentifierNode(name) {
  786. return {
  787. type: NodeType_1.NodeType.Identifier,
  788. name: name,
  789. obfuscatedNode: false
  790. };
  791. }
  792. }, {
  793. key: "getLabeledStatement",
  794. value: function getLabeledStatement(label, body) {
  795. return {
  796. type: NodeType_1.NodeType.LabeledStatement,
  797. label: label,
  798. body: body,
  799. obfuscatedNode: false
  800. };
  801. }
  802. }, {
  803. key: "getLiteralNode",
  804. value: function getLiteralNode(value, raw) {
  805. raw = raw !== undefined ? raw : "'" + value + "'";
  806. return {
  807. type: NodeType_1.NodeType.Literal,
  808. value: value,
  809. raw: raw,
  810. 'x-verbatim-property': {
  811. content: raw,
  812. precedence: escodegen.Precedence.Primary
  813. },
  814. obfuscatedNode: false
  815. };
  816. }
  817. }, {
  818. key: "getLogicalExpressionNode",
  819. value: function getLogicalExpressionNode(operator, left, right) {
  820. return {
  821. type: NodeType_1.NodeType.LogicalExpression,
  822. operator: operator,
  823. left: left,
  824. right: right,
  825. obfuscatedNode: false
  826. };
  827. }
  828. }, {
  829. key: "getMemberExpressionNode",
  830. value: function getMemberExpressionNode(object, property) {
  831. var computed = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
  832. return {
  833. type: NodeType_1.NodeType.MemberExpression,
  834. computed: computed,
  835. object: object,
  836. property: property,
  837. obfuscatedNode: false
  838. };
  839. }
  840. }, {
  841. key: "getObjectExpressionNode",
  842. value: function getObjectExpressionNode(properties) {
  843. return {
  844. type: NodeType_1.NodeType.ObjectExpression,
  845. properties: properties,
  846. obfuscatedNode: false
  847. };
  848. }
  849. }, {
  850. key: "getPropertyNode",
  851. value: function getPropertyNode(key, value) {
  852. var computed = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
  853. return {
  854. type: NodeType_1.NodeType.Property,
  855. key: key,
  856. value: value,
  857. kind: 'init',
  858. method: false,
  859. shorthand: false,
  860. computed: computed,
  861. obfuscatedNode: false
  862. };
  863. }
  864. }, {
  865. key: "getUnaryExpressionNode",
  866. value: function getUnaryExpressionNode(operator, argument) {
  867. var prefix = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
  868. return {
  869. type: NodeType_1.NodeType.UnaryExpression,
  870. operator: operator,
  871. argument: argument,
  872. prefix: prefix,
  873. obfuscatedNode: false
  874. };
  875. }
  876. }, {
  877. key: "getReturnStatementNode",
  878. value: function getReturnStatementNode(argument) {
  879. return {
  880. type: NodeType_1.NodeType.ReturnStatement,
  881. argument: argument,
  882. obfuscatedNode: false
  883. };
  884. }
  885. }, {
  886. key: "getSwitchStatementNode",
  887. value: function getSwitchStatementNode(discriminant, cases) {
  888. return {
  889. type: NodeType_1.NodeType.SwitchStatement,
  890. discriminant: discriminant,
  891. cases: cases,
  892. obfuscatedNode: false
  893. };
  894. }
  895. }, {
  896. key: "getSwitchCaseNode",
  897. value: function getSwitchCaseNode(test, consequent) {
  898. return {
  899. type: NodeType_1.NodeType.SwitchCase,
  900. test: test,
  901. consequent: consequent,
  902. obfuscatedNode: false
  903. };
  904. }
  905. }, {
  906. key: "getUpdateExpressionNode",
  907. value: function getUpdateExpressionNode(operator, argumentExpr) {
  908. return {
  909. type: NodeType_1.NodeType.UpdateExpression,
  910. operator: operator,
  911. argument: argumentExpr,
  912. prefix: false,
  913. obfuscatedNode: false
  914. };
  915. }
  916. }, {
  917. key: "getVariableDeclarationNode",
  918. value: function getVariableDeclarationNode() {
  919. var declarations = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
  920. var kind = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'var';
  921. return {
  922. type: NodeType_1.NodeType.VariableDeclaration,
  923. declarations: declarations,
  924. kind: kind,
  925. obfuscatedNode: false
  926. };
  927. }
  928. }, {
  929. key: "getVariableDeclaratorNode",
  930. value: function getVariableDeclaratorNode(id, init) {
  931. return {
  932. type: NodeType_1.NodeType.VariableDeclarator,
  933. id: id,
  934. init: init,
  935. obfuscatedNode: false
  936. };
  937. }
  938. }, {
  939. key: "getWhileStatementNode",
  940. value: function getWhileStatementNode(test, body) {
  941. return {
  942. type: NodeType_1.NodeType.WhileStatement,
  943. test: test,
  944. body: body,
  945. obfuscatedNode: false
  946. };
  947. }
  948. }]);
  949. return Nodes;
  950. }();
  951. exports.Nodes = Nodes;
  952. /***/ }),
  953. /* 9 */
  954. /***/ (function(module, exports, __webpack_require__) {
  955. "use strict";
  956. var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
  957. function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }
  958. function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
  959. Object.defineProperty(exports, "__esModule", { value: true });
  960. var JSFuck_1 = __webpack_require__(78);
  961. var RandomGeneratorUtils_1 = __webpack_require__(4);
  962. var Utils = function () {
  963. function Utils() {
  964. _classCallCheck(this, Utils);
  965. }
  966. _createClass(Utils, null, [{
  967. key: "arrayRange",
  968. value: function arrayRange(length) {
  969. var range = [];
  970. for (var i = 0; i < length; i++) {
  971. range.push(i);
  972. }
  973. return range;
  974. }
  975. }, {
  976. key: "arrayRotate",
  977. value: function arrayRotate(array, times) {
  978. if (!array.length) {
  979. throw new ReferenceError("Cannot rotate empty array.");
  980. }
  981. if (times <= 0) {
  982. return array;
  983. }
  984. var newArray = array;
  985. var temp = void 0;
  986. while (times--) {
  987. temp = newArray.pop();
  988. newArray.unshift(temp);
  989. }
  990. return newArray;
  991. }
  992. }, {
  993. key: "arrayShuffle",
  994. value: function arrayShuffle(array) {
  995. var shuffledArray = [].concat(_toConsumableArray(array));
  996. for (var i = shuffledArray.length; i; i--) {
  997. var j = Math.floor(RandomGeneratorUtils_1.RandomGeneratorUtils.getMathRandom() * i);
  998. var _ref = [shuffledArray[j], shuffledArray[i - 1]];
  999. shuffledArray[i - 1] = _ref[0];
  1000. shuffledArray[j] = _ref[1];
  1001. }
  1002. return shuffledArray;
  1003. }
  1004. }, {
  1005. key: "decToHex",
  1006. value: function decToHex(dec) {
  1007. var radix = 16;
  1008. return dec.toString(radix);
  1009. }
  1010. }, {
  1011. key: "extractDomainFromUrl",
  1012. value: function extractDomainFromUrl(url) {
  1013. var domain = void 0;
  1014. if (url.indexOf('://') > -1 || url.indexOf('//') === 0) {
  1015. domain = url.split('/')[2];
  1016. } else {
  1017. domain = url.split('/')[0];
  1018. }
  1019. domain = domain.split(':')[0];
  1020. return domain;
  1021. }
  1022. }, {
  1023. key: "isCeilNumber",
  1024. value: function isCeilNumber(number) {
  1025. return number % 1 === 0;
  1026. }
  1027. }, {
  1028. key: "strEnumify",
  1029. value: function strEnumify(obj) {
  1030. return obj;
  1031. }
  1032. }, {
  1033. key: "stringRotate",
  1034. value: function stringRotate(string, times) {
  1035. if (!string) {
  1036. throw new ReferenceError("Cannot rotate empty string.");
  1037. }
  1038. for (var i = 0; i < times; i++) {
  1039. string = string[string.length - 1] + string.substring(0, string.length - 1);
  1040. }
  1041. return string;
  1042. }
  1043. }, {
  1044. key: "stringToJSFuck",
  1045. value: function stringToJSFuck(string) {
  1046. return Array.from(string).map(function (character) {
  1047. return JSFuck_1.JSFuck[character] || character;
  1048. }).join(' + ');
  1049. }
  1050. }, {
  1051. key: "stringToUnicodeEscapeSequence",
  1052. value: function stringToUnicodeEscapeSequence(string) {
  1053. var nonLatinAndNonDigitsOnly = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
  1054. var cacheKey = string + "-" + String(nonLatinAndNonDigitsOnly);
  1055. if (Utils.stringToUnicodeEscapeSequenceCache.has(cacheKey)) {
  1056. return Utils.stringToUnicodeEscapeSequenceCache.get(cacheKey);
  1057. }
  1058. var radix = 16;
  1059. var replaceRegExp = new RegExp('[\\s\\S]', 'g');
  1060. var escapeRegExp = new RegExp('[^a-zA-Z0-9]');
  1061. var regexp = new RegExp('[\\x00-\\x7F]');
  1062. var prefix = void 0,
  1063. template = void 0;
  1064. var result = string.replace(replaceRegExp, function (escape) {
  1065. if (nonLatinAndNonDigitsOnly && !escapeRegExp.exec(escape)) {
  1066. return escape;
  1067. }
  1068. if (regexp.exec(escape)) {
  1069. prefix = '\\x';
  1070. template = '00';
  1071. } else {
  1072. prefix = "\\u";
  1073. template = '0000';
  1074. }
  1075. return "" + prefix + (template + escape.charCodeAt(0).toString(radix)).slice(-template.length);
  1076. });
  1077. Utils.stringToUnicodeEscapeSequenceCache.set(cacheKey, result);
  1078. return result;
  1079. }
  1080. }]);
  1081. return Utils;
  1082. }();
  1083. Utils.hexadecimalPrefix = '0x';
  1084. Utils.stringToUnicodeEscapeSequenceCache = new Map();
  1085. exports.Utils = Utils;
  1086. /***/ }),
  1087. /* 10 */
  1088. /***/ (function(module, exports, __webpack_require__) {
  1089. "use strict";
  1090. Object.defineProperty(exports, "__esModule", { value: true });
  1091. var CustomNodes;
  1092. (function (CustomNodes) {
  1093. CustomNodes[CustomNodes["BinaryExpressionFunctionNode"] = 0] = "BinaryExpressionFunctionNode";
  1094. CustomNodes[CustomNodes["BlockStatementControlFlowFlatteningNode"] = 1] = "BlockStatementControlFlowFlatteningNode";
  1095. CustomNodes[CustomNodes["CallExpressionControlFlowStorageCallNode"] = 2] = "CallExpressionControlFlowStorageCallNode";
  1096. CustomNodes[CustomNodes["CallExpressionFunctionNode"] = 3] = "CallExpressionFunctionNode";
  1097. CustomNodes[CustomNodes["ControlFlowStorageNode"] = 4] = "ControlFlowStorageNode";
  1098. CustomNodes[CustomNodes["ConsoleOutputDisableExpressionNode"] = 5] = "ConsoleOutputDisableExpressionNode";
  1099. CustomNodes[CustomNodes["DebugProtectionFunctionCallNode"] = 6] = "DebugProtectionFunctionCallNode";
  1100. CustomNodes[CustomNodes["DebugProtectionFunctionIntervalNode"] = 7] = "DebugProtectionFunctionIntervalNode";
  1101. CustomNodes[CustomNodes["DebugProtectionFunctionNode"] = 8] = "DebugProtectionFunctionNode";
  1102. CustomNodes[CustomNodes["DomainLockNode"] = 9] = "DomainLockNode";
  1103. CustomNodes[CustomNodes["ExpressionWithOperatorControlFlowStorageCallNode"] = 10] = "ExpressionWithOperatorControlFlowStorageCallNode";
  1104. CustomNodes[CustomNodes["LogicalExpressionFunctionNode"] = 11] = "LogicalExpressionFunctionNode";
  1105. CustomNodes[CustomNodes["NodeCallsControllerFunctionNode"] = 12] = "NodeCallsControllerFunctionNode";
  1106. CustomNodes[CustomNodes["SelfDefendingUnicodeNode"] = 13] = "SelfDefendingUnicodeNode";
  1107. CustomNodes[CustomNodes["StringArrayCallsWrapper"] = 14] = "StringArrayCallsWrapper";
  1108. CustomNodes[CustomNodes["StringArrayNode"] = 15] = "StringArrayNode";
  1109. CustomNodes[CustomNodes["StringArrayRotateFunctionNode"] = 16] = "StringArrayRotateFunctionNode";
  1110. CustomNodes[CustomNodes["StringLiteralControlFlowStorageCallNode"] = 17] = "StringLiteralControlFlowStorageCallNode";
  1111. CustomNodes[CustomNodes["StringLiteralNode"] = 18] = "StringLiteralNode";
  1112. })(CustomNodes = exports.CustomNodes || (exports.CustomNodes = {}));
  1113. /***/ }),
  1114. /* 11 */
  1115. /***/ (function(module, exports, __webpack_require__) {
  1116. "use strict";
  1117. function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
  1118. Object.defineProperty(exports, "__esModule", { value: true });
  1119. var tslib_1 = __webpack_require__(1);
  1120. var inversify_1 = __webpack_require__(0);
  1121. var ServiceIdentifiers_1 = __webpack_require__(2);
  1122. var RandomGeneratorUtils_1 = __webpack_require__(4);
  1123. var AbstractNodeTransformer = function AbstractNodeTransformer(options) {
  1124. _classCallCheck(this, AbstractNodeTransformer);
  1125. this.nodeIdentifier = RandomGeneratorUtils_1.RandomGeneratorUtils.getRandomInteger(0, 10000);
  1126. this.options = options;
  1127. };
  1128. AbstractNodeTransformer = tslib_1.__decorate([inversify_1.injectable(), tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)), tslib_1.__metadata("design:paramtypes", [Object])], AbstractNodeTransformer);
  1129. exports.AbstractNodeTransformer = AbstractNodeTransformer;
  1130. /***/ }),
  1131. /* 12 */
  1132. /***/ (function(module, exports) {
  1133. module.exports = require("estraverse");
  1134. /***/ }),
  1135. /* 13 */
  1136. /***/ (function(module, exports) {
  1137. module.exports = require("string-template");
  1138. /***/ }),
  1139. /* 14 */
  1140. /***/ (function(module, exports, __webpack_require__) {
  1141. "use strict";
  1142. Object.defineProperty(exports, "__esModule", { value: true });
  1143. var Utils_1 = __webpack_require__(9);
  1144. exports.NodeType = Utils_1.Utils.strEnumify({
  1145. ArrayExpression: 'ArrayExpression',
  1146. ArrowFunctionExpression: 'ArrowFunctionExpression',
  1147. AssignmentExpression: 'AssignmentExpression',
  1148. AssignmentPattern: 'AssignmentPattern',
  1149. BinaryExpression: 'BinaryExpression',
  1150. BlockStatement: 'BlockStatement',
  1151. BreakStatement: 'BreakStatement',
  1152. CallExpression: 'CallExpression',
  1153. CatchClause: 'CatchClause',
  1154. ClassDeclaration: 'ClassDeclaration',
  1155. ContinueStatement: 'ContinueStatement',
  1156. ExpressionStatement: 'ExpressionStatement',
  1157. FunctionDeclaration: 'FunctionDeclaration',
  1158. FunctionExpression: 'FunctionExpression',
  1159. Identifier: 'Identifier',
  1160. IfStatement: 'IfStatement',
  1161. LabeledStatement: 'LabeledStatement',
  1162. Literal: 'Literal',
  1163. LogicalExpression: 'LogicalExpression',
  1164. MemberExpression: 'MemberExpression',
  1165. MethodDefinition: 'MethodDefinition',
  1166. ObjectExpression: 'ObjectExpression',
  1167. ObjectPattern: 'ObjectPattern',
  1168. Program: 'Program',
  1169. Property: 'Property',
  1170. ReturnStatement: 'ReturnStatement',
  1171. SwitchCase: 'SwitchCase',
  1172. SwitchStatement: 'SwitchStatement',
  1173. TemplateLiteral: 'TemplateLiteral',
  1174. TryStatement: 'TryStatement',
  1175. UnaryExpression: 'UnaryExpression',
  1176. UpdateExpression: 'UpdateExpression',
  1177. VariableDeclaration: 'VariableDeclaration',
  1178. VariableDeclarator: 'VariableDeclarator',
  1179. WhileStatement: 'WhileStatement'
  1180. });
  1181. /***/ }),
  1182. /* 15 */
  1183. /***/ (function(module, exports, __webpack_require__) {
  1184. "use strict";
  1185. Object.defineProperty(exports, "__esModule", { value: true });
  1186. exports.ObfuscationEvents = {
  1187. AfterObfuscation: 'afterObfuscation',
  1188. BeforeObfuscation: 'beforeObfuscation'
  1189. };
  1190. /***/ }),
  1191. /* 16 */
  1192. /***/ (function(module, exports, __webpack_require__) {
  1193. "use strict";
  1194. Object.defineProperty(exports, "__esModule", { value: true });
  1195. var ObfuscatingReplacers;
  1196. (function (ObfuscatingReplacers) {
  1197. ObfuscatingReplacers[ObfuscatingReplacers["BooleanReplacer"] = 0] = "BooleanReplacer";
  1198. ObfuscatingReplacers[ObfuscatingReplacers["IdentifierReplacer"] = 1] = "IdentifierReplacer";
  1199. ObfuscatingReplacers[ObfuscatingReplacers["NumberLiteralReplacer"] = 2] = "NumberLiteralReplacer";
  1200. ObfuscatingReplacers[ObfuscatingReplacers["StringLiteralReplacer"] = 3] = "StringLiteralReplacer";
  1201. })(ObfuscatingReplacers = exports.ObfuscatingReplacers || (exports.ObfuscatingReplacers = {}));
  1202. /***/ }),
  1203. /* 17 */
  1204. /***/ (function(module, exports, __webpack_require__) {
  1205. "use strict";
  1206. var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
  1207. function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
  1208. Object.defineProperty(exports, "__esModule", { value: true });
  1209. __webpack_require__(146);
  1210. var ServiceIdentifiers_1 = __webpack_require__(2);
  1211. var InversifyContainerFacade_1 = __webpack_require__(47);
  1212. var JavaScriptObfuscatorCLI_1 = __webpack_require__(43);
  1213. var RandomGeneratorUtils_1 = __webpack_require__(4);
  1214. var JavaScriptObfuscator = function () {
  1215. function JavaScriptObfuscator() {
  1216. _classCallCheck(this, JavaScriptObfuscator);
  1217. }
  1218. _createClass(JavaScriptObfuscator, null, [{
  1219. key: "obfuscate",
  1220. value: function obfuscate(sourceCode) {
  1221. var inputOptions = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
  1222. var inversifyContainerFacade = new InversifyContainerFacade_1.InversifyContainerFacade(inputOptions);
  1223. var options = inversifyContainerFacade.get(ServiceIdentifiers_1.ServiceIdentifiers.IOptions);
  1224. RandomGeneratorUtils_1.RandomGeneratorUtils.initializeRandomGenerator(options.seed);
  1225. var javaScriptObfuscator = inversifyContainerFacade.get(ServiceIdentifiers_1.ServiceIdentifiers.IJavaScriptObfuscator);
  1226. var obfuscationResult = javaScriptObfuscator.obfuscate(sourceCode);
  1227. RandomGeneratorUtils_1.RandomGeneratorUtils.clearRandomGenerator();
  1228. return obfuscationResult;
  1229. }
  1230. }, {
  1231. key: "runCLI",
  1232. value: function runCLI(argv) {
  1233. new JavaScriptObfuscatorCLI_1.JavaScriptObfuscatorCLI(argv).run();
  1234. }
  1235. }]);
  1236. return JavaScriptObfuscator;
  1237. }();
  1238. exports.JavaScriptObfuscator = JavaScriptObfuscator;
  1239. /***/ }),
  1240. /* 18 */
  1241. /***/ (function(module, exports, __webpack_require__) {
  1242. "use strict";
  1243. var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
  1244. function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }
  1245. function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
  1246. Object.defineProperty(exports, "__esModule", { value: true });
  1247. var RandomGeneratorUtils_1 = __webpack_require__(4);
  1248. var NodeAppender = function () {
  1249. function NodeAppender() {
  1250. _classCallCheck(this, NodeAppender);
  1251. }
  1252. _createClass(NodeAppender, null, [{
  1253. key: "appendNode",
  1254. value: function appendNode(blockScopeNode, nodeBodyStatements) {
  1255. if (!NodeAppender.validateBodyStatements(nodeBodyStatements)) {
  1256. nodeBodyStatements = [];
  1257. }
  1258. nodeBodyStatements = NodeAppender.parentizeBodyStatementsBeforeAppend(blockScopeNode, nodeBodyStatements);
  1259. blockScopeNode.body = [].concat(_toConsumableArray(blockScopeNode.body), _toConsumableArray(nodeBodyStatements));
  1260. }
  1261. }, {
  1262. key: "appendNodeToOptimalBlockScope",
  1263. value: function appendNodeToOptimalBlockScope(blockScopeStackTraceData, blockScopeNode, nodeBodyStatements) {
  1264. var index = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;
  1265. var targetBlockScope = void 0;
  1266. if (!blockScopeStackTraceData.length) {
  1267. targetBlockScope = blockScopeNode;
  1268. } else {
  1269. targetBlockScope = NodeAppender.getOptimalBlockScope(blockScopeStackTraceData, index);
  1270. }
  1271. NodeAppender.prependNode(targetBlockScope, nodeBodyStatements);
  1272. }
  1273. }, {
  1274. key: "getOptimalBlockScope",
  1275. value: function getOptimalBlockScope(blockScopeTraceData, index) {
  1276. var deep = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : Infinity;
  1277. var firstCall = blockScopeTraceData[index];
  1278. if (deep <= 0) {
  1279. throw new Error("Invalid `deep` argument value. Value should be bigger then 0.");
  1280. }
  1281. if (deep > 1 && firstCall.stackTrace.length) {
  1282. return NodeAppender.getOptimalBlockScope(firstCall.stackTrace, 0, --deep);
  1283. } else {
  1284. return firstCall.callee;
  1285. }
  1286. }
  1287. }, {
  1288. key: "getRandomStackTraceIndex",
  1289. value: function getRandomStackTraceIndex(stackTraceRootLength) {
  1290. return RandomGeneratorUtils_1.RandomGeneratorUtils.getRandomInteger(0, Math.max(0, Math.round(stackTraceRootLength - 1)));
  1291. }
  1292. }, {
  1293. key: "insertNodeAtIndex",
  1294. value: function insertNodeAtIndex(blockScopeNode, nodeBodyStatements, index) {
  1295. if (!NodeAppender.validateBodyStatements(nodeBodyStatements)) {
  1296. nodeBodyStatements = [];
  1297. }
  1298. nodeBodyStatements = NodeAppender.parentizeBodyStatementsBeforeAppend(blockScopeNode, nodeBodyStatements);
  1299. blockScopeNode.body = [].concat(_toConsumableArray(blockScopeNode.body.slice(0, index)), _toConsumableArray(nodeBodyStatements), _toConsumableArray(blockScopeNode.body.slice(index)));
  1300. }
  1301. }, {
  1302. key: "prependNode",
  1303. value: function prependNode(blockScopeNode, nodeBodyStatements) {
  1304. if (!NodeAppender.validateBodyStatements(nodeBodyStatements)) {
  1305. nodeBodyStatements = [];
  1306. }
  1307. nodeBodyStatements = NodeAppender.parentizeBodyStatementsBeforeAppend(blockScopeNode, nodeBodyStatements);
  1308. blockScopeNode.body = [].concat(_toConsumableArray(nodeBodyStatements), _toConsumableArray(blockScopeNode.body));
  1309. }
  1310. }, {
  1311. key: "parentizeBodyStatementsBeforeAppend",
  1312. value: function parentizeBodyStatementsBeforeAppend(blockScopeNode, nodeBodyStatements) {
  1313. nodeBodyStatements.forEach(function (statement) {
  1314. statement.parentNode = blockScopeNode;
  1315. });
  1316. return nodeBodyStatements;
  1317. }
  1318. }, {
  1319. key: "validateBodyStatements",
  1320. value: function validateBodyStatements(nodeBodyStatements) {
  1321. return nodeBodyStatements.every(function (statementNode) {
  1322. return !!statementNode && statementNode.hasOwnProperty('type');
  1323. });
  1324. }
  1325. }]);
  1326. return NodeAppender;
  1327. }();
  1328. exports.NodeAppender = NodeAppender;
  1329. /***/ }),
  1330. /* 19 */
  1331. /***/ (function(module, exports, __webpack_require__) {
  1332. "use strict";
  1333. var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
  1334. function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
  1335. Object.defineProperty(exports, "__esModule", { value: true });
  1336. var tslib_1 = __webpack_require__(1);
  1337. var inversify_1 = __webpack_require__(0);
  1338. var ServiceIdentifiers_1 = __webpack_require__(2);
  1339. var AbstractCustomNodeGroup = function () {
  1340. function AbstractCustomNodeGroup(options) {
  1341. _classCallCheck(this, AbstractCustomNodeGroup);
  1342. this.options = options;
  1343. }
  1344. _createClass(AbstractCustomNodeGroup, [{
  1345. key: "getAppendEvent",
  1346. value: function getAppendEvent() {
  1347. return this.appendEvent;
  1348. }
  1349. }, {
  1350. key: "getCustomNodes",
  1351. value: function getCustomNodes() {
  1352. return this.customNodes;
  1353. }
  1354. }, {
  1355. key: "appendCustomNodeIfExist",
  1356. value: function appendCustomNodeIfExist(customNodeName, callback) {
  1357. var customNode = this.customNodes.get(customNodeName);
  1358. if (!customNode) {
  1359. return;
  1360. }
  1361. callback(customNode);
  1362. }
  1363. }]);
  1364. return AbstractCustomNodeGroup;
  1365. }();
  1366. AbstractCustomNodeGroup = tslib_1.__decorate([inversify_1.injectable(), tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)), tslib_1.__metadata("design:paramtypes", [Object])], AbstractCustomNodeGroup);
  1367. exports.AbstractCustomNodeGroup = AbstractCustomNodeGroup;
  1368. /***/ }),
  1369. /* 20 */
  1370. /***/ (function(module, exports, __webpack_require__) {
  1371. "use strict";
  1372. Object.defineProperty(exports, "__esModule", { value: true });
  1373. exports.SourceMapMode = {
  1374. Inline: 'inline',
  1375. Separate: 'separate'
  1376. };
  1377. /***/ }),
  1378. /* 21 */
  1379. /***/ (function(module, exports, __webpack_require__) {
  1380. "use strict";
  1381. function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
  1382. Object.defineProperty(exports, "__esModule", { value: true });
  1383. var tslib_1 = __webpack_require__(1);
  1384. var inversify_1 = __webpack_require__(0);
  1385. var ServiceIdentifiers_1 = __webpack_require__(2);
  1386. var AbstractObfuscatingReplacer = function AbstractObfuscatingReplacer(options) {
  1387. _classCallCheck(this, AbstractObfuscatingReplacer);
  1388. this.options = options;
  1389. };
  1390. AbstractObfuscatingReplacer = tslib_1.__decorate([inversify_1.injectable(), tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)), tslib_1.__metadata("design:paramtypes", [Object])], AbstractObfuscatingReplacer);
  1391. exports.AbstractObfuscatingReplacer = AbstractObfuscatingReplacer;
  1392. /***/ }),
  1393. /* 22 */
  1394. /***/ (function(module, exports, __webpack_require__) {
  1395. "use strict";
  1396. Object.defineProperty(exports, "__esModule", { value: true });
  1397. var SourceMapMode_1 = __webpack_require__(20);
  1398. exports.NO_CUSTOM_NODES_PRESET = Object.freeze({
  1399. compact: true,
  1400. controlFlowFlattening: false,
  1401. controlFlowFlatteningThreshold: 0,
  1402. deadCodeInjection: false,
  1403. deadCodeInjectionThreshold: 0,
  1404. debugProtection: false,
  1405. debugProtectionInterval: false,
  1406. disableConsoleOutput: false,
  1407. domainLock: [],
  1408. mangle: false,
  1409. reservedNames: [],
  1410. rotateStringArray: false,
  1411. seed: 0,
  1412. selfDefending: false,
  1413. sourceMap: false,
  1414. sourceMapBaseUrl: '',
  1415. sourceMapFileName: '',
  1416. sourceMapMode: SourceMapMode_1.SourceMapMode.Separate,
  1417. stringArray: false,
  1418. stringArrayEncoding: false,
  1419. stringArrayThreshold: 0,
  1420. unicodeEscapeSequence: false
  1421. });
  1422. /***/ }),
  1423. /* 23 */
  1424. /***/ (function(module, exports, __webpack_require__) {
  1425. "use strict";
  1426. Object.defineProperty(exports, "__esModule", { value: true });
  1427. exports.StringArrayEncoding = {
  1428. base64: 'base64',
  1429. rc4: 'rc4'
  1430. };
  1431. /***/ }),
  1432. /* 24 */
  1433. /***/ (function(module, exports, __webpack_require__) {
  1434. "use strict";
  1435. var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
  1436. function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
  1437. Object.defineProperty(exports, "__esModule", { value: true });
  1438. var tslib_1 = __webpack_require__(1);
  1439. var inversify_1 = __webpack_require__(0);
  1440. var ServiceIdentifiers_1 = __webpack_require__(2);
  1441. var RandomGeneratorUtils_1 = __webpack_require__(4);
  1442. var AbstractControlFlowReplacer = AbstractControlFlowReplacer_1 = function () {
  1443. function AbstractControlFlowReplacer(customNodeFactory, options) {
  1444. _classCallCheck(this, AbstractControlFlowReplacer);
  1445. this.replacerDataByControlFlowStorageId = new Map();
  1446. this.customNodeFactory = customNodeFactory;
  1447. this.options = options;
  1448. }
  1449. _createClass(AbstractControlFlowReplacer, [{
  1450. key: "insertCustomNodeToControlFlowStorage",
  1451. value: function insertCustomNodeToControlFlowStorage(customNode, controlFlowStorage, replacerId, usingExistingIdentifierChance) {
  1452. var controlFlowStorageId = controlFlowStorage.getStorageId();
  1453. var storageKeysById = AbstractControlFlowReplacer_1.getStorageKeysByIdForCurrentStorage(this.replacerDataByControlFlowStorageId, controlFlowStorageId);
  1454. var storageKeysForCurrentId = storageKeysById.get(replacerId);
  1455. if (RandomGeneratorUtils_1.RandomGeneratorUtils.getMathRandom() < usingExistingIdentifierChance && storageKeysForCurrentId && storageKeysForCurrentId.length) {
  1456. return RandomGeneratorUtils_1.RandomGeneratorUtils.getRandomGenerator().pickone(storageKeysForCurrentId);
  1457. }
  1458. var generateStorageKey = function generateStorageKey(length) {
  1459. var storageKey = RandomGeneratorUtils_1.RandomGeneratorUtils.getRandomString(length);
  1460. if (controlFlowStorage.getStorage().has(storageKey)) {
  1461. return generateStorageKey(length);
  1462. }
  1463. return storageKey;
  1464. };
  1465. var storageKey = generateStorageKey(3);
  1466. storageKeysById.set(replacerId, [storageKey]);
  1467. this.replacerDataByControlFlowStorageId.set(controlFlowStorageId, storageKeysById);
  1468. controlFlowStorage.set(storageKey, customNode);
  1469. return storageKey;
  1470. }
  1471. }], [{
  1472. key: "getStorageKeysByIdForCurrentStorage",
  1473. value: function getStorageKeysByIdForCurrentStorage(identifierDataByControlFlowStorageId, controlFlowStorageId) {
  1474. var storageKeysById = void 0;
  1475. if (identifierDataByControlFlowStorageId.has(controlFlowStorageId)) {
  1476. storageKeysById = identifierDataByControlFlowStorageId.get(controlFlowStorageId);
  1477. } else {
  1478. storageKeysById = new Map();
  1479. }
  1480. return storageKeysById;
  1481. }
  1482. }]);
  1483. return AbstractControlFlowReplacer;
  1484. }();
  1485. AbstractControlFlowReplacer = AbstractControlFlowReplacer_1 = tslib_1.__decorate([inversify_1.injectable(), tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__ICustomNode)), tslib_1.__param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)), tslib_1.__metadata("design:paramtypes", [Function, Object])], AbstractControlFlowReplacer);
  1486. exports.AbstractControlFlowReplacer = AbstractControlFlowReplacer;
  1487. var AbstractControlFlowReplacer_1;
  1488. /***/ }),
  1489. /* 25 */
  1490. /***/ (function(module, exports, __webpack_require__) {
  1491. "use strict";
  1492. Object.defineProperty(exports, "__esModule", { value: true });
  1493. var SourceMapMode_1 = __webpack_require__(20);
  1494. exports.DEFAULT_PRESET = Object.freeze({
  1495. compact: true,
  1496. controlFlowFlattening: false,
  1497. controlFlowFlatteningThreshold: 0.75,
  1498. deadCodeInjection: false,
  1499. deadCodeInjectionThreshold: 0.4,
  1500. debugProtection: false,
  1501. debugProtectionInterval: false,
  1502. disableConsoleOutput: true,
  1503. domainLock: [],
  1504. mangle: false,
  1505. reservedNames: [],
  1506. rotateStringArray: true,
  1507. seed: 0,
  1508. selfDefending: false,
  1509. sourceMap: false,
  1510. sourceMapBaseUrl: '',
  1511. sourceMapFileName: '',
  1512. sourceMapMode: SourceMapMode_1.SourceMapMode.Separate,
  1513. stringArray: true,
  1514. stringArrayEncoding: false,
  1515. stringArrayThreshold: 0.75,
  1516. unicodeEscapeSequence: false
  1517. });
  1518. /***/ }),
  1519. /* 26 */
  1520. /***/ (function(module, exports, __webpack_require__) {
  1521. "use strict";
  1522. function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
  1523. Object.defineProperty(exports, "__esModule", { value: true });
  1524. var tslib_1 = __webpack_require__(1);
  1525. var inversify_1 = __webpack_require__(0);
  1526. var AbstractCalleeDataExtractor = function AbstractCalleeDataExtractor() {
  1527. _classCallCheck(this, AbstractCalleeDataExtractor);
  1528. };
  1529. AbstractCalleeDataExtractor = tslib_1.__decorate([inversify_1.injectable()], AbstractCalleeDataExtractor);
  1530. exports.AbstractCalleeDataExtractor = AbstractCalleeDataExtractor;
  1531. /***/ }),
  1532. /* 27 */
  1533. /***/ (function(module, exports, __webpack_require__) {
  1534. "use strict";
  1535. var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
  1536. function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
  1537. Object.defineProperty(exports, "__esModule", { value: true });
  1538. var RandomGeneratorUtils_1 = __webpack_require__(4);
  1539. var Utils_1 = __webpack_require__(9);
  1540. var CryptUtils = function () {
  1541. function CryptUtils() {
  1542. _classCallCheck(this, CryptUtils);
  1543. }
  1544. _createClass(CryptUtils, null, [{
  1545. key: "btoa",
  1546. value: function btoa(string) {
  1547. var chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
  1548. var output = '';
  1549. string = encodeURIComponent(string).replace(/%([0-9A-F]{2})/g, function (match, p1) {
  1550. return String.fromCharCode(parseInt("" + Utils_1.Utils.hexadecimalPrefix + p1));
  1551. });
  1552. for (var block, charCode, idx = 0, map = chars; string.charAt(idx | 0) || (map = '=', idx % 1); output += map.charAt(63 & block >> 8 - idx % 1 * 8)) {
  1553. charCode = string.charCodeAt(idx += 3 / 4);
  1554. if (charCode > 0xFF) {
  1555. throw new Error("'btoa' failed: The string to be encoded contains characters outside of the Latin1 range.");
  1556. }
  1557. block = block << 8 | charCode;
  1558. }
  1559. return output;
  1560. }
  1561. }, {
  1562. key: "hideString",
  1563. value: function hideString(str, length) {
  1564. var escapeRegExp = function escapeRegExp(s) {
  1565. return s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&');
  1566. };
  1567. var randomMerge = function randomMerge(s1, s2) {
  1568. var i1 = -1,
  1569. i2 = -1,
  1570. result = '';
  1571. while (i1 < s1.length || i2 < s2.length) {
  1572. if (RandomGeneratorUtils_1.RandomGeneratorUtils.getMathRandom() < 0.5 && i2 < s2.length) {
  1573. result += s2.charAt(++i2);
  1574. } else {
  1575. result += s1.charAt(++i1);
  1576. }
  1577. }
  1578. return result;
  1579. };
  1580. var randomString = RandomGeneratorUtils_1.RandomGeneratorUtils.getRandomGenerator().string({
  1581. length: length,
  1582. pool: RandomGeneratorUtils_1.RandomGeneratorUtils.randomGeneratorPool
  1583. });
  1584. var randomStringDiff = randomString.replace(new RegExp("[" + escapeRegExp(str) + "]", 'g'), '');
  1585. var randomStringDiffArray = randomStringDiff.split('');
  1586. RandomGeneratorUtils_1.RandomGeneratorUtils.getRandomGenerator().shuffle(randomStringDiffArray);
  1587. randomStringDiff = randomStringDiffArray.join('');
  1588. return [randomMerge(str, randomStringDiff), randomStringDiff];
  1589. }
  1590. }, {
  1591. key: "rc4",
  1592. value: function rc4(string, key) {
  1593. var s = [],
  1594. j = 0,
  1595. x = void 0,
  1596. result = '';
  1597. for (var i = 0; i < 256; i++) {
  1598. s[i] = i;
  1599. }
  1600. for (i = 0; i < 256; i++) {
  1601. j = (j + s[i] + key.charCodeAt(i % key.length)) % 256;
  1602. x = s[i];
  1603. s[i] = s[j];
  1604. s[j] = x;
  1605. }
  1606. i = 0;
  1607. j = 0;
  1608. for (var y = 0; y < string.length; y++) {
  1609. i = (i + 1) % 256;
  1610. j = (j + s[i]) % 256;
  1611. x = s[i];
  1612. s[i] = s[j];
  1613. s[j] = x;
  1614. result += String.fromCharCode(string.charCodeAt(y) ^ s[(s[i] + s[j]) % 256]);
  1615. }
  1616. return result;
  1617. }
  1618. }]);
  1619. return CryptUtils;
  1620. }();
  1621. exports.CryptUtils = CryptUtils;
  1622. /***/ }),
  1623. /* 28 */
  1624. /***/ (function(module, exports) {
  1625. module.exports = require("escodegen-wallaby");
  1626. /***/ }),
  1627. /* 29 */
  1628. /***/ (function(module, exports, __webpack_require__) {
  1629. "use strict";
  1630. Object.defineProperty(exports, "__esModule", { value: true });
  1631. var CalleeDataExtractors;
  1632. (function (CalleeDataExtractors) {
  1633. CalleeDataExtractors[CalleeDataExtractors["FunctionDeclarationCalleeDataExtractor"] = 0] = "FunctionDeclarationCalleeDataExtractor";
  1634. CalleeDataExtractors[CalleeDataExtractors["FunctionExpressionCalleeDataExtractor"] = 1] = "FunctionExpressionCalleeDataExtractor";
  1635. CalleeDataExtractors[CalleeDataExtractors["ObjectExpressionCalleeDataExtractor"] = 2] = "ObjectExpressionCalleeDataExtractor";
  1636. })(CalleeDataExtractors = exports.CalleeDataExtractors || (exports.CalleeDataExtractors = {}));
  1637. /***/ }),
  1638. /* 30 */
  1639. /***/ (function(module, exports, __webpack_require__) {
  1640. "use strict";
  1641. Object.defineProperty(exports, "__esModule", { value: true });
  1642. var ControlFlowReplacers;
  1643. (function (ControlFlowReplacers) {
  1644. ControlFlowReplacers[ControlFlowReplacers["BinaryExpressionControlFlowReplacer"] = 0] = "BinaryExpressionControlFlowReplacer";
  1645. ControlFlowReplacers[ControlFlowReplacers["CallExpressionControlFlowReplacer"] = 1] = "CallExpressionControlFlowReplacer";
  1646. ControlFlowReplacers[ControlFlowReplacers["LogicalExpressionControlFlowReplacer"] = 2] = "LogicalExpressionControlFlowReplacer";
  1647. ControlFlowReplacers[ControlFlowReplacers["StringLiteralControlFlowReplacer"] = 3] = "StringLiteralControlFlowReplacer";
  1648. })(ControlFlowReplacers = exports.ControlFlowReplacers || (exports.ControlFlowReplacers = {}));
  1649. /***/ }),
  1650. /* 31 */
  1651. /***/ (function(module, exports, __webpack_require__) {
  1652. "use strict";
  1653. Object.defineProperty(exports, "__esModule", { value: true });
  1654. var CustomNodeGroups;
  1655. (function (CustomNodeGroups) {
  1656. CustomNodeGroups[CustomNodeGroups["ConsoleOutputCustomNodeGroup"] = 0] = "ConsoleOutputCustomNodeGroup";
  1657. CustomNodeGroups[CustomNodeGroups["DebugProtectionCustomNodeGroup"] = 1] = "DebugProtectionCustomNodeGroup";
  1658. CustomNodeGroups[CustomNodeGroups["DomainLockCustomNodeGroup"] = 2] = "DomainLockCustomNodeGroup";
  1659. CustomNodeGroups[CustomNodeGroups["SelfDefendingCustomNodeGroup"] = 3] = "SelfDefendingCustomNodeGroup";
  1660. CustomNodeGroups[CustomNodeGroups["StringArrayCustomNodeGroup"] = 4] = "StringArrayCustomNodeGroup";
  1661. })(CustomNodeGroups = exports.CustomNodeGroups || (exports.CustomNodeGroups = {}));
  1662. /***/ }),
  1663. /* 32 */
  1664. /***/ (function(module, exports, __webpack_require__) {
  1665. "use strict";
  1666. Object.defineProperty(exports, "__esModule", { value: true });
  1667. var NodeTransformers;
  1668. (function (NodeTransformers) {
  1669. NodeTransformers[NodeTransformers["BlockStatementControlFlowTransformer"] = 0] = "BlockStatementControlFlowTransformer";
  1670. NodeTransformers[NodeTransformers["DeadCodeInjectionTransformer"] = 1] = "DeadCodeInjectionTransformer";
  1671. NodeTransformers[NodeTransformers["FunctionControlFlowTransformer"] = 2] = "FunctionControlFlowTransformer";
  1672. NodeTransformers[NodeTransformers["CatchClauseTransformer"] = 3] = "CatchClauseTransformer";
  1673. NodeTransformers[NodeTransformers["FunctionDeclarationTransformer"] = 4] = "FunctionDeclarationTransformer";
  1674. NodeTransformers[NodeTransformers["FunctionTransformer"] = 5] = "FunctionTransformer";
  1675. NodeTransformers[NodeTransformers["LabeledStatementTransformer"] = 6] = "LabeledStatementTransformer";
  1676. NodeTransformers[NodeTransformers["LiteralTransformer"] = 7] = "LiteralTransformer";
  1677. NodeTransformers[NodeTransformers["MemberExpressionTransformer"] = 8] = "MemberExpressionTransformer";
  1678. NodeTransformers[NodeTransformers["MethodDefinitionTransformer"] = 9] = "MethodDefinitionTransformer";
  1679. NodeTransformers[NodeTransformers["ObjectExpressionTransformer"] = 10] = "ObjectExpressionTransformer";
  1680. NodeTransformers[NodeTransformers["TemplateLiteralTransformer"] = 11] = "TemplateLiteralTransformer";
  1681. NodeTransformers[NodeTransformers["VariableDeclarationTransformer"] = 12] = "VariableDeclarationTransformer";
  1682. })(NodeTransformers = exports.NodeTransformers || (exports.NodeTransformers = {}));
  1683. /***/ }),
  1684. /* 33 */
  1685. /***/ (function(module, exports, __webpack_require__) {
  1686. "use strict";
  1687. var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
  1688. function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
  1689. function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
  1690. function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
  1691. Object.defineProperty(exports, "__esModule", { value: true });
  1692. var tslib_1 = __webpack_require__(1);
  1693. var inversify_1 = __webpack_require__(0);
  1694. var ServiceIdentifiers_1 = __webpack_require__(2);
  1695. var AbstractControlFlowReplacer_1 = __webpack_require__(24);
  1696. var CustomNodes_1 = __webpack_require__(10);
  1697. var Node_1 = __webpack_require__(6);
  1698. var ExpressionWithOperatorControlFlowReplacer = function (_AbstractControlFlowR) {
  1699. _inherits(ExpressionWithOperatorControlFlowReplacer, _AbstractControlFlowR);
  1700. function ExpressionWithOperatorControlFlowReplacer(customNodeFactory, options) {
  1701. _classCallCheck(this, ExpressionWithOperatorControlFlowReplacer);
  1702. var _this = _possibleConstructorReturn(this, (ExpressionWithOperatorControlFlowReplacer.__proto__ || Object.getPrototypeOf(ExpressionWithOperatorControlFlowReplacer)).call(this, customNodeFactory, options));
  1703. _this.replacerDataByControlFlowStorageId = new Map();
  1704. return _this;
  1705. }
  1706. _createClass(ExpressionWithOperatorControlFlowReplacer, [{
  1707. key: "getControlFlowStorageCallNode",
  1708. value: function getControlFlowStorageCallNode(controlFlowStorageId, storageKey, leftExpression, rightExpression) {
  1709. var controlFlowStorageCallCustomNode = this.customNodeFactory(CustomNodes_1.CustomNodes.ExpressionWithOperatorControlFlowStorageCallNode);
  1710. controlFlowStorageCallCustomNode.initialize(controlFlowStorageId, storageKey, leftExpression, rightExpression);
  1711. var statementNode = controlFlowStorageCallCustomNode.getNode()[0];
  1712. if (!statementNode || !Node_1.Node.isExpressionStatementNode(statementNode)) {
  1713. throw new Error("`controlFlowStorageCallCustomNode.getNode()[0]` should returns array with `ExpressionStatement` node");
  1714. }
  1715. return statementNode.expression;
  1716. }
  1717. }]);
  1718. return ExpressionWithOperatorControlFlowReplacer;
  1719. }(AbstractControlFlowReplacer_1.AbstractControlFlowReplacer);
  1720. ExpressionWithOperatorControlFlowReplacer = tslib_1.__decorate([inversify_1.injectable(), tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__ICustomNode)), tslib_1.__param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)), tslib_1.__metadata("design:paramtypes", [Function, Object])], ExpressionWithOperatorControlFlowReplacer);
  1721. exports.ExpressionWithOperatorControlFlowReplacer = ExpressionWithOperatorControlFlowReplacer;
  1722. /***/ }),
  1723. /* 34 */
  1724. /***/ (function(module, exports, __webpack_require__) {
  1725. "use strict";
  1726. var _slicedToArray = (function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; })();
  1727. var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
  1728. function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }
  1729. function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
  1730. Object.defineProperty(exports, "__esModule", { value: true });
  1731. var tslib_1 = __webpack_require__(1);
  1732. var inversify_1 = __webpack_require__(0);
  1733. var Initializable_1 = __webpack_require__(5);
  1734. var RandomGeneratorUtils_1 = __webpack_require__(4);
  1735. var MapStorage = function () {
  1736. function MapStorage() {
  1737. _classCallCheck(this, MapStorage);
  1738. }
  1739. _createClass(MapStorage, [{
  1740. key: "get",
  1741. value: function get(key) {
  1742. var value = this.storage.get(key);
  1743. if (!value) {
  1744. throw new Error("No value found in map storage with key `" + key + "`");
  1745. }
  1746. return value;
  1747. }
  1748. }, {
  1749. key: "getKeyOf",
  1750. value: function getKeyOf(value) {
  1751. var _iteratorNormalCompletion = true;
  1752. var _didIteratorError = false;
  1753. var _iteratorError = undefined;
  1754. try {
  1755. for (var _iterator = this.storage[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
  1756. var _step$value = _slicedToArray(_step.value, 2),
  1757. key = _step$value[0],
  1758. storageValue = _step$value[1];
  1759. if (value === storageValue) {
  1760. return key;
  1761. }
  1762. }
  1763. } catch (err) {
  1764. _didIteratorError = true;
  1765. _iteratorError = err;
  1766. } finally {
  1767. try {
  1768. if (!_iteratorNormalCompletion && _iterator.return) {
  1769. _iterator.return();
  1770. }
  1771. } finally {
  1772. if (_didIteratorError) {
  1773. throw _iteratorError;
  1774. }
  1775. }
  1776. }
  1777. return null;
  1778. }
  1779. }, {
  1780. key: "getLength",
  1781. value: function getLength() {
  1782. return this.storage.size;
  1783. }
  1784. }, {
  1785. key: "getStorage",
  1786. value: function getStorage() {
  1787. return this.storage;
  1788. }
  1789. }, {
  1790. key: "getStorageId",
  1791. value: function getStorageId() {
  1792. return this.storageId;
  1793. }
  1794. }, {
  1795. key: "initialize",
  1796. value: function initialize() {
  1797. this.storage = new Map();
  1798. this.storageId = RandomGeneratorUtils_1.RandomGeneratorUtils.getRandomString(6);
  1799. }
  1800. }, {
  1801. key: "mergeWith",
  1802. value: function mergeWith(storage) {
  1803. var mergeId = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
  1804. this.storage = new Map([].concat(_toConsumableArray(this.storage), _toConsumableArray(storage.getStorage())));
  1805. if (mergeId) {
  1806. this.storageId = storage.getStorageId();
  1807. }
  1808. }
  1809. }, {
  1810. key: "set",
  1811. value: function set(key, value) {
  1812. this.storage.set(key, value);
  1813. }
  1814. }]);
  1815. return MapStorage;
  1816. }();
  1817. tslib_1.__decorate([Initializable_1.initializable(), tslib_1.__metadata("design:type", String)], MapStorage.prototype, "storageId", void 0);
  1818. tslib_1.__decorate([Initializable_1.initializable(), tslib_1.__metadata("design:type", Map)], MapStorage.prototype, "storage", void 0);
  1819. MapStorage = tslib_1.__decorate([inversify_1.injectable()], MapStorage);
  1820. exports.MapStorage = MapStorage;
  1821. /***/ }),
  1822. /* 35 */
  1823. /***/ (function(module, exports) {
  1824. module.exports = require("esprima");
  1825. /***/ }),
  1826. /* 36 */
  1827. /***/ (function(module, exports) {
  1828. module.exports = require("path");
  1829. /***/ }),
  1830. /* 37 */
  1831. /***/ (function(module, exports, __webpack_require__) {
  1832. "use strict";
  1833. Object.defineProperty(exports, "__esModule", { value: true });
  1834. var JavaScriptObfuscator_1 = __webpack_require__(17);
  1835. module.exports = JavaScriptObfuscator_1.JavaScriptObfuscator;
  1836. /***/ }),
  1837. /* 38 */
  1838. /***/ (function(module, exports, __webpack_require__) {
  1839. "use strict";
  1840. var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
  1841. function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
  1842. Object.defineProperty(exports, "__esModule", { value: true });
  1843. var tslib_1 = __webpack_require__(1);
  1844. var inversify_1 = __webpack_require__(0);
  1845. var ServiceIdentifiers_1 = __webpack_require__(2);
  1846. var esprima = __webpack_require__(35);
  1847. var escodegen = __webpack_require__(28);
  1848. var esmangle = __webpack_require__(142);
  1849. var JavaScriptObfuscatorInternal = JavaScriptObfuscatorInternal_1 = function () {
  1850. function JavaScriptObfuscatorInternal(obfuscator, sourceMapCorrector, options) {
  1851. _classCallCheck(this, JavaScriptObfuscatorInternal);
  1852. this.obfuscator = obfuscator;
  1853. this.sourceMapCorrector = sourceMapCorrector;
  1854. this.options = options;
  1855. }
  1856. _createClass(JavaScriptObfuscatorInternal, [{
  1857. key: "obfuscate",
  1858. value: function obfuscate(sourceCode) {
  1859. var astTree = esprima.parse(sourceCode, { loc: this.options.sourceMap });
  1860. var obfuscatedAstTree = this.obfuscator.obfuscateAstTree(astTree);
  1861. var generatorOutput = this.generateCode(sourceCode, obfuscatedAstTree);
  1862. return this.getObfuscationResult(generatorOutput);
  1863. }
  1864. }, {
  1865. key: "generateCode",
  1866. value: function generateCode(sourceCode, astTree) {
  1867. var escodegenParams = Object.assign({}, JavaScriptObfuscatorInternal_1.escodegenParams);
  1868. if (this.options.sourceMap) {
  1869. escodegenParams.sourceMap = 'sourceMap';
  1870. escodegenParams.sourceContent = sourceCode;
  1871. }
  1872. if (this.options.mangle) {
  1873. astTree = esmangle.mangle(astTree);
  1874. }
  1875. var generatorOutput = escodegen.generate(astTree, Object.assign({}, escodegenParams, { format: {
  1876. compact: this.options.compact
  1877. } }));
  1878. generatorOutput.map = generatorOutput.map ? generatorOutput.map.toString() : '';
  1879. return generatorOutput;
  1880. }
  1881. }, {
  1882. key: "getObfuscationResult",
  1883. value: function getObfuscationResult(generatorOutput) {
  1884. return this.sourceMapCorrector.correct(generatorOutput.code, generatorOutput.map);
  1885. }
  1886. }]);
  1887. return JavaScriptObfuscatorInternal;
  1888. }();
  1889. JavaScriptObfuscatorInternal.escodegenParams = {
  1890. verbatim: 'x-verbatim-property',
  1891. sourceMapWithCode: true
  1892. };
  1893. JavaScriptObfuscatorInternal = JavaScriptObfuscatorInternal_1 = tslib_1.__decorate([inversify_1.injectable(), tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IObfuscator)), tslib_1.__param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.ISourceMapCorrector)), tslib_1.__param(2, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)), tslib_1.__metadata("design:paramtypes", [Object, Object, Object])], JavaScriptObfuscatorInternal);
  1894. exports.JavaScriptObfuscatorInternal = JavaScriptObfuscatorInternal;
  1895. var JavaScriptObfuscatorInternal_1;
  1896. /***/ }),
  1897. /* 39 */
  1898. /***/ (function(module, exports, __webpack_require__) {
  1899. "use strict";
  1900. var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
  1901. function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
  1902. Object.defineProperty(exports, "__esModule", { value: true });
  1903. var tslib_1 = __webpack_require__(1);
  1904. var inversify_1 = __webpack_require__(0);
  1905. var Initializable_1 = __webpack_require__(5);
  1906. var ObfuscationResult = function () {
  1907. function ObfuscationResult() {
  1908. _classCallCheck(this, ObfuscationResult);
  1909. }
  1910. _createClass(ObfuscationResult, [{
  1911. key: "initialize",
  1912. value: function initialize(obfuscatedCode, sourceMap) {
  1913. this.obfuscatedCode = obfuscatedCode;
  1914. this.sourceMap = sourceMap;
  1915. }
  1916. }, {
  1917. key: "getObfuscatedCode",
  1918. value: function getObfuscatedCode() {
  1919. return this.obfuscatedCode;
  1920. }
  1921. }, {
  1922. key: "getSourceMap",
  1923. value: function getSourceMap() {
  1924. return this.sourceMap;
  1925. }
  1926. }, {
  1927. key: "toString",
  1928. value: function toString() {
  1929. return this.obfuscatedCode;
  1930. }
  1931. }]);
  1932. return ObfuscationResult;
  1933. }();
  1934. tslib_1.__decorate([Initializable_1.initializable(), tslib_1.__metadata("design:type", String)], ObfuscationResult.prototype, "obfuscatedCode", void 0);
  1935. tslib_1.__decorate([Initializable_1.initializable(), tslib_1.__metadata("design:type", String)], ObfuscationResult.prototype, "sourceMap", void 0);
  1936. ObfuscationResult = tslib_1.__decorate([inversify_1.injectable()], ObfuscationResult);
  1937. exports.ObfuscationResult = ObfuscationResult;
  1938. /***/ }),
  1939. /* 40 */
  1940. /***/ (function(module, exports, __webpack_require__) {
  1941. "use strict";
  1942. var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
  1943. function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }
  1944. function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
  1945. Object.defineProperty(exports, "__esModule", { value: true });
  1946. var tslib_1 = __webpack_require__(1);
  1947. var inversify_1 = __webpack_require__(0);
  1948. var ServiceIdentifiers_1 = __webpack_require__(2);
  1949. var estraverse = __webpack_require__(12);
  1950. var NodeTransformers_1 = __webpack_require__(32);
  1951. var ObfuscationEvents_1 = __webpack_require__(15);
  1952. var VisitorDirection_1 = __webpack_require__(79);
  1953. var Node_1 = __webpack_require__(6);
  1954. var NodeUtils_1 = __webpack_require__(3);
  1955. var Obfuscator = Obfuscator_1 = function () {
  1956. function Obfuscator(stackTraceAnalyzer, obfuscationEventEmitter, customNodeGroupStorage, nodeTransformerFactory, options) {
  1957. _classCallCheck(this, Obfuscator);
  1958. this.stackTraceAnalyzer = stackTraceAnalyzer;
  1959. this.obfuscationEventEmitter = obfuscationEventEmitter;
  1960. this.customNodeGroupStorage = customNodeGroupStorage;
  1961. this.nodeTransformerFactory = nodeTransformerFactory;
  1962. this.options = options;
  1963. }
  1964. _createClass(Obfuscator, [{
  1965. key: "obfuscateAstTree",
  1966. value: function obfuscateAstTree(astTree) {
  1967. var _this = this;
  1968. if (Node_1.Node.isProgramNode(astTree) && !astTree.body.length) {
  1969. return astTree;
  1970. }
  1971. astTree = NodeUtils_1.NodeUtils.parentize(astTree);
  1972. var stackTraceData = this.stackTraceAnalyzer.analyze(astTree.body);
  1973. this.customNodeGroupStorage.getStorage().forEach(function (customNodeGroup) {
  1974. customNodeGroup.initialize();
  1975. _this.obfuscationEventEmitter.once(customNodeGroup.getAppendEvent(), customNodeGroup.appendCustomNodes.bind(customNodeGroup));
  1976. });
  1977. this.obfuscationEventEmitter.emit(ObfuscationEvents_1.ObfuscationEvents.BeforeObfuscation, astTree, stackTraceData);
  1978. astTree = this.transformAstTree(astTree, [].concat(_toConsumableArray(this.options.deadCodeInjection ? Obfuscator_1.deadCodeInjectionTransformersList : [])));
  1979. astTree = this.transformAstTree(astTree, [].concat(_toConsumableArray(this.options.controlFlowFlattening ? Obfuscator_1.controlFlowTransformersList : [])));
  1980. astTree = this.transformAstTree(astTree, [].concat(_toConsumableArray(Obfuscator_1.convertingTransformersList), _toConsumableArray(Obfuscator_1.obfuscatingTransformersList)));
  1981. this.obfuscationEventEmitter.emit(ObfuscationEvents_1.ObfuscationEvents.AfterObfuscation, astTree, stackTraceData);
  1982. return astTree;
  1983. }
  1984. }, {
  1985. key: "transformAstTree",
  1986. value: function transformAstTree(astTree, nodeTransformers) {
  1987. if (!nodeTransformers.length) {
  1988. return astTree;
  1989. }
  1990. var enterVisitors = [];
  1991. var leaveVisitors = [];
  1992. var nodeTransformersLength = nodeTransformers.length;
  1993. var visitor = void 0;
  1994. for (var i = 0; i < nodeTransformersLength; i++) {
  1995. visitor = this.nodeTransformerFactory(nodeTransformers[i]).getVisitor();
  1996. if (visitor.enter) {
  1997. enterVisitors.push(visitor);
  1998. }
  1999. if (visitor.leave) {
  2000. leaveVisitors.push(visitor);
  2001. }
  2002. }
  2003. estraverse.replace(astTree, {
  2004. enter: this.mergeVisitorsForDirection(enterVisitors, VisitorDirection_1.VisitorDirection.enter),
  2005. leave: this.mergeVisitorsForDirection(leaveVisitors, VisitorDirection_1.VisitorDirection.leave)
  2006. });
  2007. return astTree;
  2008. }
  2009. }, {
  2010. key: "mergeVisitorsForDirection",
  2011. value: function mergeVisitorsForDirection(visitors, direction) {
  2012. if (!visitors.length) {
  2013. return function (node, parentNode) {
  2014. return node;
  2015. };
  2016. }
  2017. var visitorsLength = visitors.length;
  2018. var visitor = void 0;
  2019. return function (node, parentNode) {
  2020. for (var i = 0; i < visitorsLength; i++) {
  2021. visitor = visitors[i];
  2022. var visitorFunction = visitor[direction];
  2023. if (!visitorFunction) {
  2024. continue;
  2025. }
  2026. var visitorResult = visitorFunction(node, parentNode);
  2027. if (!visitorResult) {
  2028. continue;
  2029. }
  2030. node = visitorResult;
  2031. }
  2032. return node;
  2033. };
  2034. }
  2035. }]);
  2036. return Obfuscator;
  2037. }();
  2038. Obfuscator.controlFlowTransformersList = [NodeTransformers_1.NodeTransformers.BlockStatementControlFlowTransformer, NodeTransformers_1.NodeTransformers.FunctionControlFlowTransformer];
  2039. Obfuscator.convertingTransformersList = [NodeTransformers_1.NodeTransformers.MemberExpressionTransformer, NodeTransformers_1.NodeTransformers.MethodDefinitionTransformer, NodeTransformers_1.NodeTransformers.TemplateLiteralTransformer];
  2040. Obfuscator.deadCodeInjectionTransformersList = [NodeTransformers_1.NodeTransformers.DeadCodeInjectionTransformer];
  2041. Obfuscator.obfuscatingTransformersList = [NodeTransformers_1.NodeTransformers.CatchClauseTransformer, NodeTransformers_1.NodeTransformers.FunctionDeclarationTransformer, NodeTransformers_1.NodeTransformers.FunctionTransformer, NodeTransformers_1.NodeTransformers.LabeledStatementTransformer, NodeTransformers_1.NodeTransformers.LiteralTransformer, NodeTransformers_1.NodeTransformers.ObjectExpressionTransformer, NodeTransformers_1.NodeTransformers.VariableDeclarationTransformer];
  2042. Obfuscator = Obfuscator_1 = tslib_1.__decorate([inversify_1.injectable(), tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IStackTraceAnalyzer)), tslib_1.__param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IObfuscationEventEmitter)), tslib_1.__param(2, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.TCustomNodeGroupStorage)), tslib_1.__param(3, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__INodeTransformer)), tslib_1.__param(4, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)), tslib_1.__metadata("design:paramtypes", [Object, Object, Object, Function, Object])], Obfuscator);
  2043. exports.Obfuscator = Obfuscator;
  2044. var Obfuscator_1;
  2045. /***/ }),
  2046. /* 41 */
  2047. /***/ (function(module, exports, __webpack_require__) {
  2048. "use strict";
  2049. var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
  2050. function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
  2051. Object.defineProperty(exports, "__esModule", { value: true });
  2052. var tslib_1 = __webpack_require__(1);
  2053. var inversify_1 = __webpack_require__(0);
  2054. var ServiceIdentifiers_1 = __webpack_require__(2);
  2055. var SourceMapMode_1 = __webpack_require__(20);
  2056. var CryptUtils_1 = __webpack_require__(27);
  2057. var SourceMapCorrector = function () {
  2058. function SourceMapCorrector(obfuscationResultFactory, options) {
  2059. _classCallCheck(this, SourceMapCorrector);
  2060. this.obfuscationResultFactory = obfuscationResultFactory;
  2061. this.options = options;
  2062. }
  2063. _createClass(SourceMapCorrector, [{
  2064. key: "correct",
  2065. value: function correct(obfuscatedCode, sourceMap) {
  2066. return this.obfuscationResultFactory(this.correctObfuscatedCode(obfuscatedCode, sourceMap), sourceMap);
  2067. }
  2068. }, {
  2069. key: "correctObfuscatedCode",
  2070. value: function correctObfuscatedCode(obfuscatedCode, sourceMap) {
  2071. if (!sourceMap) {
  2072. return obfuscatedCode;
  2073. }
  2074. var sourceMapUrl = this.options.sourceMapBaseUrl + this.options.sourceMapFileName;
  2075. var sourceMappingUrl = '//# sourceMappingURL=';
  2076. switch (this.options.sourceMapMode) {
  2077. case SourceMapMode_1.SourceMapMode.Inline:
  2078. sourceMappingUrl += "data:application/json;base64," + CryptUtils_1.CryptUtils.btoa(sourceMap);
  2079. break;
  2080. case SourceMapMode_1.SourceMapMode.Separate:
  2081. default:
  2082. if (!sourceMapUrl) {
  2083. return obfuscatedCode;
  2084. }
  2085. sourceMappingUrl += sourceMapUrl;
  2086. break;
  2087. }
  2088. return obfuscatedCode + "\n" + sourceMappingUrl;
  2089. }
  2090. }]);
  2091. return SourceMapCorrector;
  2092. }();
  2093. SourceMapCorrector = tslib_1.__decorate([inversify_1.injectable(), tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__IObfuscationResult)), tslib_1.__param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)), tslib_1.__metadata("design:paramtypes", [Function, Object])], SourceMapCorrector);
  2094. exports.SourceMapCorrector = SourceMapCorrector;
  2095. /***/ }),
  2096. /* 42 */
  2097. /***/ (function(module, exports, __webpack_require__) {
  2098. "use strict";
  2099. var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
  2100. function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
  2101. Object.defineProperty(exports, "__esModule", { value: true });
  2102. var fs = __webpack_require__(144);
  2103. var mkdirp = __webpack_require__(145);
  2104. var path = __webpack_require__(36);
  2105. var CLIUtils = function () {
  2106. function CLIUtils() {
  2107. _classCallCheck(this, CLIUtils);
  2108. }
  2109. _createClass(CLIUtils, null, [{
  2110. key: "getOutputCodePath",
  2111. value: function getOutputCodePath(outputPath, inputPath) {
  2112. if (outputPath) {
  2113. return outputPath;
  2114. }
  2115. return inputPath.split('.').map(function (value, index) {
  2116. return index === 0 ? value + "-obfuscated" : value;
  2117. }).join('.');
  2118. }
  2119. }, {
  2120. key: "getOutputSourceMapPath",
  2121. value: function getOutputSourceMapPath(outputCodePath) {
  2122. var sourceMapFileName = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
  2123. if (sourceMapFileName) {
  2124. outputCodePath = outputCodePath.substring(0, outputCodePath.lastIndexOf('/')) + "/" + sourceMapFileName;
  2125. }
  2126. if (!/\.js\.map$/.test(outputCodePath)) {
  2127. outputCodePath = outputCodePath.split('.')[0] + ".js.map";
  2128. } else if (/\.js$/.test(outputCodePath)) {
  2129. outputCodePath += '.map';
  2130. }
  2131. return outputCodePath;
  2132. }
  2133. }, {
  2134. key: "getPackageConfig",
  2135. value: function getPackageConfig() {
  2136. return JSON.parse(fs.readFileSync(path.join(path.dirname(fs.realpathSync(process.argv[1])), '../package.json'), CLIUtils.encoding));
  2137. }
  2138. }, {
  2139. key: "isFilePath",
  2140. value: function isFilePath(filePath) {
  2141. try {
  2142. return fs.statSync(filePath).isFile();
  2143. } catch (e) {
  2144. return false;
  2145. }
  2146. }
  2147. }, {
  2148. key: "readFile",
  2149. value: function readFile(inputPath) {
  2150. return fs.readFileSync(inputPath, CLIUtils.encoding);
  2151. }
  2152. }, {
  2153. key: "validateInputPath",
  2154. value: function validateInputPath(inputPath) {
  2155. if (!CLIUtils.isFilePath(inputPath)) {
  2156. throw new ReferenceError("Given input path must be a valid file path");
  2157. }
  2158. if (!(CLIUtils.availableInputExtensions.indexOf(path.extname(inputPath)) !== -1)) {
  2159. throw new ReferenceError("Input file must have .js extension");
  2160. }
  2161. }
  2162. }, {
  2163. key: "writeFile",
  2164. value: function writeFile(outputPath, data) {
  2165. mkdirp.sync(path.dirname(outputPath));
  2166. fs.writeFileSync(outputPath, data, {
  2167. encoding: CLIUtils.encoding
  2168. });
  2169. }
  2170. }]);
  2171. return CLIUtils;
  2172. }();
  2173. CLIUtils.availableInputExtensions = ['.js'];
  2174. CLIUtils.encoding = 'utf8';
  2175. exports.CLIUtils = CLIUtils;
  2176. /***/ }),
  2177. /* 43 */
  2178. /***/ (function(module, exports, __webpack_require__) {
  2179. "use strict";
  2180. var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
  2181. function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
  2182. Object.defineProperty(exports, "__esModule", { value: true });
  2183. var commander = __webpack_require__(141);
  2184. var path = __webpack_require__(36);
  2185. var Default_1 = __webpack_require__(25);
  2186. var BooleanSanitizer_1 = __webpack_require__(44);
  2187. var SourceMapModeSanitizer_1 = __webpack_require__(45);
  2188. var StringArrayEncodingSanitizer_1 = __webpack_require__(46);
  2189. var CLIUtils_1 = __webpack_require__(42);
  2190. var JavaScriptObfuscator_1 = __webpack_require__(17);
  2191. var JavaScriptObfuscatorCLI = function () {
  2192. function JavaScriptObfuscatorCLI(argv) {
  2193. _classCallCheck(this, JavaScriptObfuscatorCLI);
  2194. this.data = '';
  2195. this.rawArguments = argv;
  2196. this.arguments = this.rawArguments.slice(2);
  2197. }
  2198. _createClass(JavaScriptObfuscatorCLI, [{
  2199. key: "run",
  2200. value: function run() {
  2201. this.configureCommands();
  2202. if (!this.arguments.length || this.arguments.indexOf('--help') !== -1) {
  2203. this.commands.outputHelp();
  2204. return;
  2205. }
  2206. this.inputPath = this.arguments[0];
  2207. CLIUtils_1.CLIUtils.validateInputPath(this.inputPath);
  2208. this.getData();
  2209. this.processData();
  2210. }
  2211. }, {
  2212. key: "buildOptions",
  2213. value: function buildOptions() {
  2214. var inputOptions = {};
  2215. var availableOptions = Object.keys(Default_1.DEFAULT_PRESET);
  2216. for (var option in this.commands) {
  2217. if (!this.commands.hasOwnProperty(option)) {
  2218. continue;
  2219. }
  2220. if (!(availableOptions.indexOf(option) !== -1)) {
  2221. continue;
  2222. }
  2223. inputOptions[option] = this.commands[option];
  2224. }
  2225. return Object.assign({}, Default_1.DEFAULT_PRESET, inputOptions);
  2226. }
  2227. }, {
  2228. key: "configureCommands",
  2229. value: function configureCommands() {
  2230. this.commands = new commander.Command().version(JavaScriptObfuscatorCLI.getBuildVersion(), '-v, --version').usage('<inputPath> [options]').option('-o, --output <path>', 'Output path for obfuscated code').option('--compact <boolean>', 'Disable one line output code compacting', BooleanSanitizer_1.BooleanSanitizer).option('--controlFlowFlattening <boolean>', 'Enables control flow flattening', BooleanSanitizer_1.BooleanSanitizer).option('--controlFlowFlatteningThreshold <number>', 'The probability that the control flow flattening transformation will be applied to the node', parseFloat).option('--deadCodeInjection <boolean>', 'Enables dead code injection', BooleanSanitizer_1.BooleanSanitizer).option('--deadCodeInjectionThreshold <number>', 'The probability that the dead code injection transformation will be applied to the node', parseFloat).option('--debugProtection <boolean>', 'Disable browser Debug panel (can cause DevTools enabled browser freeze)', BooleanSanitizer_1.BooleanSanitizer).option('--debugProtectionInterval <boolean>', 'Disable browser Debug panel even after page was loaded (can cause DevTools enabled browser freeze)', BooleanSanitizer_1.BooleanSanitizer).option('--disableConsoleOutput <boolean>', 'Allow console.log, console.info, console.error and console.warn messages output into browser console', BooleanSanitizer_1.BooleanSanitizer).option('--domainLock <list>', 'Blocks the execution of the code in domains that do not match the passed RegExp patterns (comma separated)', function (value) {
  2231. return value.split(',');
  2232. }).option('--mangle <boolean>', 'Enables mangling of variable names', BooleanSanitizer_1.BooleanSanitizer).option('--reservedNames <list>', 'Disable obfuscation of variable names, function names and names of function parameters that match the passed RegExp patterns (comma separated)', function (value) {
  2233. return value.split(',');
  2234. }).option('--rotateStringArray <boolean>', 'Disable rotation of unicode array values during obfuscation', BooleanSanitizer_1.BooleanSanitizer).option('--seed <number>', 'Sets seed for random generator. This is useful for creating repeatable results.', parseFloat).option('--selfDefending <boolean>', 'Disables self-defending for obfuscated code', BooleanSanitizer_1.BooleanSanitizer).option('--sourceMap <boolean>', 'Enables source map generation', BooleanSanitizer_1.BooleanSanitizer).option('--sourceMapBaseUrl <string>', 'Sets base url to the source map import url when `--sourceMapMode=separate`').option('--sourceMapFileName <string>', 'Sets file name for output source map when `--sourceMapMode=separate`').option('--sourceMapMode <string> [inline, separate]', 'Specify source map output mode', SourceMapModeSanitizer_1.SourceMapModeSanitizer).option('--stringArray <boolean>', 'Disables gathering of all literal strings into an array and replacing every literal string with an array call', BooleanSanitizer_1.BooleanSanitizer).option('--stringArrayEncoding <boolean|string> [true, false, base64, rc4]', 'Encodes all strings in strings array using base64 or rc4 (this option can slow down your code speed', StringArrayEncodingSanitizer_1.StringArrayEncodingSanitizer).option('--stringArrayThreshold <number>', 'The probability that the literal string will be inserted into stringArray (Default: 0.8, Min: 0, Max: 1)', parseFloat).option('--unicodeEscapeSequence <boolean>', 'Allows to enable/disable string conversion to unicode escape sequence', BooleanSanitizer_1.BooleanSanitizer).parse(this.rawArguments);
  2235. this.commands.on('--help', function () {
  2236. console.log(' Examples:\n');
  2237. console.log(' %> javascript-obfuscator in.js --compact true --selfDefending false');
  2238. console.log(' %> javascript-obfuscator in.js --output out.js --compact true --selfDefending false');
  2239. console.log('');
  2240. });
  2241. }
  2242. }, {
  2243. key: "getData",
  2244. value: function getData() {
  2245. this.data = CLIUtils_1.CLIUtils.readFile(this.inputPath);
  2246. }
  2247. }, {
  2248. key: "processData",
  2249. value: function processData() {
  2250. var options = this.buildOptions();
  2251. var outputCodePath = CLIUtils_1.CLIUtils.getOutputCodePath(this.commands.output, this.inputPath);
  2252. if (options.sourceMap) {
  2253. this.processDataWithSourceMap(outputCodePath, options);
  2254. } else {
  2255. this.processDataWithoutSourceMap(outputCodePath, options);
  2256. }
  2257. }
  2258. }, {
  2259. key: "processDataWithoutSourceMap",
  2260. value: function processDataWithoutSourceMap(outputCodePath, options) {
  2261. var obfuscatedCode = JavaScriptObfuscator_1.JavaScriptObfuscator.obfuscate(this.data, options).getObfuscatedCode();
  2262. CLIUtils_1.CLIUtils.writeFile(outputCodePath, obfuscatedCode);
  2263. }
  2264. }, {
  2265. key: "processDataWithSourceMap",
  2266. value: function processDataWithSourceMap(outputCodePath, options) {
  2267. var outputSourceMapPath = CLIUtils_1.CLIUtils.getOutputSourceMapPath(outputCodePath, options.sourceMapFileName || '');
  2268. options = Object.assign({}, options, { sourceMapFileName: path.basename(outputSourceMapPath) });
  2269. var obfuscationResult = JavaScriptObfuscator_1.JavaScriptObfuscator.obfuscate(this.data, options);
  2270. CLIUtils_1.CLIUtils.writeFile(outputCodePath, obfuscationResult.getObfuscatedCode());
  2271. if (options.sourceMapMode === 'separate' && obfuscationResult.getSourceMap()) {
  2272. CLIUtils_1.CLIUtils.writeFile(outputSourceMapPath, obfuscationResult.getSourceMap());
  2273. }
  2274. }
  2275. }], [{
  2276. key: "getBuildVersion",
  2277. value: function getBuildVersion() {
  2278. return CLIUtils_1.CLIUtils.getPackageConfig().version;
  2279. }
  2280. }]);
  2281. return JavaScriptObfuscatorCLI;
  2282. }();
  2283. exports.JavaScriptObfuscatorCLI = JavaScriptObfuscatorCLI;
  2284. /***/ }),
  2285. /* 44 */
  2286. /***/ (function(module, exports, __webpack_require__) {
  2287. "use strict";
  2288. Object.defineProperty(exports, "__esModule", { value: true });
  2289. exports.BooleanSanitizer = function (value) {
  2290. return value === 'true' || value === '1';
  2291. };
  2292. /***/ }),
  2293. /* 45 */
  2294. /***/ (function(module, exports, __webpack_require__) {
  2295. "use strict";
  2296. Object.defineProperty(exports, "__esModule", { value: true });
  2297. var SourceMapMode_1 = __webpack_require__(20);
  2298. exports.SourceMapModeSanitizer = function (value) {
  2299. var availableMode = Object.keys(SourceMapMode_1.SourceMapMode).some(function (key) {
  2300. return SourceMapMode_1.SourceMapMode[key] === value;
  2301. });
  2302. if (!availableMode) {
  2303. throw new ReferenceError('Invalid value of `--sourceMapMode` option');
  2304. }
  2305. return value;
  2306. };
  2307. /***/ }),
  2308. /* 46 */
  2309. /***/ (function(module, exports, __webpack_require__) {
  2310. "use strict";
  2311. Object.defineProperty(exports, "__esModule", { value: true });
  2312. var StringArrayEncoding_1 = __webpack_require__(23);
  2313. exports.StringArrayEncodingSanitizer = function (value) {
  2314. switch (value) {
  2315. case 'true':
  2316. case '1':
  2317. case StringArrayEncoding_1.StringArrayEncoding.base64:
  2318. return true;
  2319. case StringArrayEncoding_1.StringArrayEncoding.rc4:
  2320. return StringArrayEncoding_1.StringArrayEncoding.rc4;
  2321. default:
  2322. return false;
  2323. }
  2324. };
  2325. /***/ }),
  2326. /* 47 */
  2327. /***/ (function(module, exports, __webpack_require__) {
  2328. "use strict";
  2329. var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
  2330. function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
  2331. Object.defineProperty(exports, "__esModule", { value: true });
  2332. var inversify_1 = __webpack_require__(0);
  2333. var ServiceIdentifiers_1 = __webpack_require__(2);
  2334. var ControlFlowTransformersModule_1 = __webpack_require__(49);
  2335. var CustomNodesModule_1 = __webpack_require__(48);
  2336. var ObfuscatingTransformersModule_1 = __webpack_require__(51);
  2337. var NodeTransformersModule_1 = __webpack_require__(50);
  2338. var StackTraceAnalyzerModule_1 = __webpack_require__(52);
  2339. var StoragesModule_1 = __webpack_require__(53);
  2340. var JavaScriptObfuscatorInternal_1 = __webpack_require__(38);
  2341. var ObfuscationEventEmitter_1 = __webpack_require__(80);
  2342. var ObfuscationResult_1 = __webpack_require__(39);
  2343. var Obfuscator_1 = __webpack_require__(40);
  2344. var Options_1 = __webpack_require__(102);
  2345. var SourceMapCorrector_1 = __webpack_require__(41);
  2346. var InversifyContainerFacade = function () {
  2347. function InversifyContainerFacade(options) {
  2348. _classCallCheck(this, InversifyContainerFacade);
  2349. this.container = new inversify_1.Container();
  2350. this.container.bind(ServiceIdentifiers_1.ServiceIdentifiers.IOptions).toDynamicValue(function () {
  2351. return new Options_1.Options(options);
  2352. }).inSingletonScope();
  2353. this.container.bind(ServiceIdentifiers_1.ServiceIdentifiers.IJavaScriptObfuscator).to(JavaScriptObfuscatorInternal_1.JavaScriptObfuscatorInternal).inSingletonScope();
  2354. this.container.bind(ServiceIdentifiers_1.ServiceIdentifiers.IObfuscator).to(Obfuscator_1.Obfuscator).inSingletonScope();
  2355. this.container.bind(ServiceIdentifiers_1.ServiceIdentifiers.IObfuscationResult).to(ObfuscationResult_1.ObfuscationResult).inSingletonScope();
  2356. this.container.bind(ServiceIdentifiers_1.ServiceIdentifiers.Factory__IObfuscationResult).toFactory(function (context) {
  2357. return function (obfuscatedCode, sourceMap) {
  2358. var obfuscationResult = context.container.get(ServiceIdentifiers_1.ServiceIdentifiers.IObfuscationResult);
  2359. obfuscationResult.initialize(obfuscatedCode, sourceMap);
  2360. return obfuscationResult;
  2361. };
  2362. });
  2363. this.container.bind(ServiceIdentifiers_1.ServiceIdentifiers.ISourceMapCorrector).to(SourceMapCorrector_1.SourceMapCorrector).inSingletonScope();
  2364. this.container.bind(ServiceIdentifiers_1.ServiceIdentifiers.IObfuscationEventEmitter).to(ObfuscationEventEmitter_1.ObfuscationEventEmitter).inSingletonScope();
  2365. this.container.load(StoragesModule_1.storagesModule);
  2366. this.container.load(StackTraceAnalyzerModule_1.stackTraceAnalyzerModule);
  2367. this.container.load(CustomNodesModule_1.customNodesModule);
  2368. this.container.load(NodeTransformersModule_1.nodeTransformersModule);
  2369. this.container.load(ControlFlowTransformersModule_1.controlFlowTransformersModule);
  2370. this.container.load(ObfuscatingTransformersModule_1.obfuscatingTransformersModule);
  2371. }
  2372. _createClass(InversifyContainerFacade, [{
  2373. key: "get",
  2374. value: function get(serviceIdentifier) {
  2375. return this.container.get(serviceIdentifier);
  2376. }
  2377. }, {
  2378. key: "getNamed",
  2379. value: function getNamed(serviceIdentifier, named) {
  2380. return this.container.getNamed(serviceIdentifier, named);
  2381. }
  2382. }]);
  2383. return InversifyContainerFacade;
  2384. }();
  2385. exports.InversifyContainerFacade = InversifyContainerFacade;
  2386. /***/ }),
  2387. /* 48 */
  2388. /***/ (function(module, exports, __webpack_require__) {
  2389. "use strict";
  2390. Object.defineProperty(exports, "__esModule", { value: true });
  2391. var inversify_1 = __webpack_require__(0);
  2392. var ServiceIdentifiers_1 = __webpack_require__(2);
  2393. var CustomNodes_1 = __webpack_require__(10);
  2394. var CustomNodeGroups_1 = __webpack_require__(31);
  2395. var ConsoleOutputCustomNodeGroup_1 = __webpack_require__(55);
  2396. var DebugProtectionCustomNodeGroup_1 = __webpack_require__(68);
  2397. var DomainLockCustomNodeGroup_1 = __webpack_require__(70);
  2398. var SelfDefendingCustomNodeGroup_1 = __webpack_require__(73);
  2399. var StringArrayCustomNodeGroup_1 = __webpack_require__(77);
  2400. var BinaryExpressionFunctionNode_1 = __webpack_require__(56);
  2401. var BlockStatementControlFlowFlatteningNode_1 = __webpack_require__(57);
  2402. var CallExpressionControlFlowStorageCallNode_1 = __webpack_require__(61);
  2403. var CallExpressionFunctionNode_1 = __webpack_require__(58);
  2404. var ControlFlowStorageNode_1 = __webpack_require__(62);
  2405. var ConsoleOutputDisableExpressionNode_1 = __webpack_require__(54);
  2406. var DebugProtectionFunctionCallNode_1 = __webpack_require__(65);
  2407. var DebugProtectionFunctionIntervalNode_1 = __webpack_require__(66);
  2408. var DebugProtectionFunctionNode_1 = __webpack_require__(67);
  2409. var DomainLockNode_1 = __webpack_require__(69);
  2410. var ExpressionWithOperatorControlFlowStorageCallNode_1 = __webpack_require__(63);
  2411. var LogicalExpressionFunctionNode_1 = __webpack_require__(59);
  2412. var NodeCallsControllerFunctionNode_1 = __webpack_require__(71);
  2413. var SelfDefendingUnicodeNode_1 = __webpack_require__(72);
  2414. var StringArrayCallsWrapper_1 = __webpack_require__(74);
  2415. var StringArrayNode_1 = __webpack_require__(75);
  2416. var StringArrayRotateFunctionNode_1 = __webpack_require__(76);
  2417. var StringLiteralControlFlowStorageCallNode_1 = __webpack_require__(64);
  2418. var StringLiteralNode_1 = __webpack_require__(60);
  2419. exports.customNodesModule = new inversify_1.ContainerModule(function (bind) {
  2420. bind(ServiceIdentifiers_1.ServiceIdentifiers.Newable__ICustomNode).toConstructor(BinaryExpressionFunctionNode_1.BinaryExpressionFunctionNode).whenTargetNamed(CustomNodes_1.CustomNodes.BinaryExpressionFunctionNode);
  2421. bind(ServiceIdentifiers_1.ServiceIdentifiers.Newable__ICustomNode).toConstructor(BlockStatementControlFlowFlatteningNode_1.BlockStatementControlFlowFlatteningNode).whenTargetNamed(CustomNodes_1.CustomNodes.BlockStatementControlFlowFlatteningNode);
  2422. bind(ServiceIdentifiers_1.ServiceIdentifiers.Newable__ICustomNode).toConstructor(CallExpressionControlFlowStorageCallNode_1.CallExpressionControlFlowStorageCallNode).whenTargetNamed(CustomNodes_1.CustomNodes.CallExpressionControlFlowStorageCallNode);
  2423. bind(ServiceIdentifiers_1.ServiceIdentifiers.Newable__ICustomNode).toConstructor(CallExpressionFunctionNode_1.CallExpressionFunctionNode).whenTargetNamed(CustomNodes_1.CustomNodes.CallExpressionFunctionNode);
  2424. bind(ServiceIdentifiers_1.ServiceIdentifiers.Newable__ICustomNode).toConstructor(ControlFlowStorageNode_1.ControlFlowStorageNode).whenTargetNamed(CustomNodes_1.CustomNodes.ControlFlowStorageNode);
  2425. bind(ServiceIdentifiers_1.ServiceIdentifiers.Newable__ICustomNode).toConstructor(ConsoleOutputDisableExpressionNode_1.ConsoleOutputDisableExpressionNode).whenTargetNamed(CustomNodes_1.CustomNodes.ConsoleOutputDisableExpressionNode);
  2426. bind(ServiceIdentifiers_1.ServiceIdentifiers.Newable__ICustomNode).toConstructor(DebugProtectionFunctionCallNode_1.DebugProtectionFunctionCallNode).whenTargetNamed(CustomNodes_1.CustomNodes.DebugProtectionFunctionCallNode);
  2427. bind(ServiceIdentifiers_1.ServiceIdentifiers.Newable__ICustomNode).toConstructor(DebugProtectionFunctionIntervalNode_1.DebugProtectionFunctionIntervalNode).whenTargetNamed(CustomNodes_1.CustomNodes.DebugProtectionFunctionIntervalNode);
  2428. bind(ServiceIdentifiers_1.ServiceIdentifiers.Newable__ICustomNode).toConstructor(DebugProtectionFunctionNode_1.DebugProtectionFunctionNode).whenTargetNamed(CustomNodes_1.CustomNodes.DebugProtectionFunctionNode);
  2429. bind(ServiceIdentifiers_1.ServiceIdentifiers.Newable__ICustomNode).toConstructor(DomainLockNode_1.DomainLockNode).whenTargetNamed(CustomNodes_1.CustomNodes.DomainLockNode);
  2430. bind(ServiceIdentifiers_1.ServiceIdentifiers.Newable__ICustomNode).toConstructor(ExpressionWithOperatorControlFlowStorageCallNode_1.ExpressionWithOperatorControlFlowStorageCallNode).whenTargetNamed(CustomNodes_1.CustomNodes.ExpressionWithOperatorControlFlowStorageCallNode);
  2431. bind(ServiceIdentifiers_1.ServiceIdentifiers.Newable__ICustomNode).toConstructor(LogicalExpressionFunctionNode_1.LogicalExpressionFunctionNode).whenTargetNamed(CustomNodes_1.CustomNodes.LogicalExpressionFunctionNode);
  2432. bind(ServiceIdentifiers_1.ServiceIdentifiers.Newable__ICustomNode).toConstructor(NodeCallsControllerFunctionNode_1.NodeCallsControllerFunctionNode).whenTargetNamed(CustomNodes_1.CustomNodes.NodeCallsControllerFunctionNode);
  2433. bind(ServiceIdentifiers_1.ServiceIdentifiers.Newable__ICustomNode).toConstructor(SelfDefendingUnicodeNode_1.SelfDefendingUnicodeNode).whenTargetNamed(CustomNodes_1.CustomNodes.SelfDefendingUnicodeNode);
  2434. bind(ServiceIdentifiers_1.ServiceIdentifiers.Newable__ICustomNode).toConstructor(StringArrayCallsWrapper_1.StringArrayCallsWrapper).whenTargetNamed(CustomNodes_1.CustomNodes.StringArrayCallsWrapper);
  2435. bind(ServiceIdentifiers_1.ServiceIdentifiers.Newable__ICustomNode).toConstructor(StringArrayNode_1.StringArrayNode).whenTargetNamed(CustomNodes_1.CustomNodes.StringArrayNode);
  2436. bind(ServiceIdentifiers_1.ServiceIdentifiers.Newable__ICustomNode).toConstructor(StringArrayRotateFunctionNode_1.StringArrayRotateFunctionNode).whenTargetNamed(CustomNodes_1.CustomNodes.StringArrayRotateFunctionNode);
  2437. bind(ServiceIdentifiers_1.ServiceIdentifiers.Newable__ICustomNode).toConstructor(StringLiteralControlFlowStorageCallNode_1.StringLiteralControlFlowStorageCallNode).whenTargetNamed(CustomNodes_1.CustomNodes.StringLiteralControlFlowStorageCallNode);
  2438. bind(ServiceIdentifiers_1.ServiceIdentifiers.Newable__ICustomNode).toConstructor(StringLiteralNode_1.StringLiteralNode).whenTargetNamed(CustomNodes_1.CustomNodes.StringLiteralNode);
  2439. bind(ServiceIdentifiers_1.ServiceIdentifiers.ICustomNodeGroup).to(ConsoleOutputCustomNodeGroup_1.ConsoleOutputCustomNodeGroup).whenTargetNamed(CustomNodeGroups_1.CustomNodeGroups.ConsoleOutputCustomNodeGroup);
  2440. bind(ServiceIdentifiers_1.ServiceIdentifiers.ICustomNodeGroup).to(DebugProtectionCustomNodeGroup_1.DebugProtectionCustomNodeGroup).whenTargetNamed(CustomNodeGroups_1.CustomNodeGroups.DebugProtectionCustomNodeGroup);
  2441. bind(ServiceIdentifiers_1.ServiceIdentifiers.ICustomNodeGroup).to(DomainLockCustomNodeGroup_1.DomainLockCustomNodeGroup).whenTargetNamed(CustomNodeGroups_1.CustomNodeGroups.DomainLockCustomNodeGroup);
  2442. bind(ServiceIdentifiers_1.ServiceIdentifiers.ICustomNodeGroup).to(SelfDefendingCustomNodeGroup_1.SelfDefendingCustomNodeGroup).whenTargetNamed(CustomNodeGroups_1.CustomNodeGroups.SelfDefendingCustomNodeGroup);
  2443. bind(ServiceIdentifiers_1.ServiceIdentifiers.ICustomNodeGroup).to(StringArrayCustomNodeGroup_1.StringArrayCustomNodeGroup).whenTargetNamed(CustomNodeGroups_1.CustomNodeGroups.StringArrayCustomNodeGroup);
  2444. bind(ServiceIdentifiers_1.ServiceIdentifiers.Factory__ICustomNode).toFactory(function (context) {
  2445. var cache = new Map();
  2446. var cachedOptions = void 0;
  2447. return function (customNodeName) {
  2448. if (!cachedOptions) {
  2449. cachedOptions = context.container.get(ServiceIdentifiers_1.ServiceIdentifiers.IOptions);
  2450. }
  2451. if (cache.has(customNodeName)) {
  2452. return new (cache.get(customNodeName))();
  2453. }
  2454. var constructor = context.container.getNamed(ServiceIdentifiers_1.ServiceIdentifiers.Newable__ICustomNode, customNodeName);
  2455. cache.set(customNodeName, constructor);
  2456. return new constructor(cachedOptions);
  2457. };
  2458. });
  2459. bind(ServiceIdentifiers_1.ServiceIdentifiers.Factory__ICustomNodeGroup).toFactory(function (context) {
  2460. return function (customNodeGroupName) {
  2461. return context.container.getNamed(ServiceIdentifiers_1.ServiceIdentifiers.ICustomNodeGroup, customNodeGroupName);
  2462. };
  2463. });
  2464. });
  2465. /***/ }),
  2466. /* 49 */
  2467. /***/ (function(module, exports, __webpack_require__) {
  2468. "use strict";
  2469. Object.defineProperty(exports, "__esModule", { value: true });
  2470. var inversify_1 = __webpack_require__(0);
  2471. var ServiceIdentifiers_1 = __webpack_require__(2);
  2472. var ControlFlowReplacers_1 = __webpack_require__(30);
  2473. var BinaryExpressionControlFlowReplacer_1 = __webpack_require__(83);
  2474. var CallExpressionControlFlowReplacer_1 = __webpack_require__(84);
  2475. var LogicalExpressionControlFlowReplacer_1 = __webpack_require__(85);
  2476. var StringLiteralControlFlowReplacer_1 = __webpack_require__(86);
  2477. exports.controlFlowTransformersModule = new inversify_1.ContainerModule(function (bind) {
  2478. bind(ServiceIdentifiers_1.ServiceIdentifiers.IControlFlowReplacer).to(BinaryExpressionControlFlowReplacer_1.BinaryExpressionControlFlowReplacer).whenTargetNamed(ControlFlowReplacers_1.ControlFlowReplacers.BinaryExpressionControlFlowReplacer);
  2479. bind(ServiceIdentifiers_1.ServiceIdentifiers.IControlFlowReplacer).to(CallExpressionControlFlowReplacer_1.CallExpressionControlFlowReplacer).whenTargetNamed(ControlFlowReplacers_1.ControlFlowReplacers.CallExpressionControlFlowReplacer);
  2480. bind(ServiceIdentifiers_1.ServiceIdentifiers.IControlFlowReplacer).to(LogicalExpressionControlFlowReplacer_1.LogicalExpressionControlFlowReplacer).whenTargetNamed(ControlFlowReplacers_1.ControlFlowReplacers.LogicalExpressionControlFlowReplacer);
  2481. bind(ServiceIdentifiers_1.ServiceIdentifiers.IControlFlowReplacer).to(StringLiteralControlFlowReplacer_1.StringLiteralControlFlowReplacer).whenTargetNamed(ControlFlowReplacers_1.ControlFlowReplacers.StringLiteralControlFlowReplacer);
  2482. bind(ServiceIdentifiers_1.ServiceIdentifiers.Factory__IControlFlowReplacer).toFactory(function (context) {
  2483. var cache = new Map();
  2484. return function (replacerName) {
  2485. if (cache.has(replacerName)) {
  2486. return cache.get(replacerName);
  2487. }
  2488. var controlFlowReplacer = context.container.getNamed(ServiceIdentifiers_1.ServiceIdentifiers.IControlFlowReplacer, replacerName);
  2489. cache.set(replacerName, controlFlowReplacer);
  2490. return controlFlowReplacer;
  2491. };
  2492. });
  2493. });
  2494. /***/ }),
  2495. /* 50 */
  2496. /***/ (function(module, exports, __webpack_require__) {
  2497. "use strict";
  2498. Object.defineProperty(exports, "__esModule", { value: true });
  2499. var inversify_1 = __webpack_require__(0);
  2500. var ServiceIdentifiers_1 = __webpack_require__(2);
  2501. var NodeTransformers_1 = __webpack_require__(32);
  2502. var FunctionControlFlowTransformer_1 = __webpack_require__(82);
  2503. var BlockStatementControlFlowTransformer_1 = __webpack_require__(81);
  2504. var DeadCodeInjectionTransformer_1 = __webpack_require__(90);
  2505. var CatchClauseTransformer_1 = __webpack_require__(91);
  2506. var FunctionDeclarationTransformer_1 = __webpack_require__(92);
  2507. var FunctionTransformer_1 = __webpack_require__(93);
  2508. var LabeledStatementTransformer_1 = __webpack_require__(94);
  2509. var LiteralTransformer_1 = __webpack_require__(95);
  2510. var MemberExpressionTransformer_1 = __webpack_require__(87);
  2511. var MethodDefinitionTransformer_1 = __webpack_require__(88);
  2512. var ObjectExpressionTransformer_1 = __webpack_require__(96);
  2513. var TemplateLiteralTransformer_1 = __webpack_require__(89);
  2514. var VariableDeclarationTransformer_1 = __webpack_require__(97);
  2515. exports.nodeTransformersModule = new inversify_1.ContainerModule(function (bind) {
  2516. bind(ServiceIdentifiers_1.ServiceIdentifiers.INodeTransformer).to(BlockStatementControlFlowTransformer_1.BlockStatementControlFlowTransformer).whenTargetNamed(NodeTransformers_1.NodeTransformers.BlockStatementControlFlowTransformer);
  2517. bind(ServiceIdentifiers_1.ServiceIdentifiers.INodeTransformer).to(DeadCodeInjectionTransformer_1.DeadCodeInjectionTransformer).whenTargetNamed(NodeTransformers_1.NodeTransformers.DeadCodeInjectionTransformer);
  2518. bind(ServiceIdentifiers_1.ServiceIdentifiers.INodeTransformer).to(FunctionControlFlowTransformer_1.FunctionControlFlowTransformer).whenTargetNamed(NodeTransformers_1.NodeTransformers.FunctionControlFlowTransformer);
  2519. bind(ServiceIdentifiers_1.ServiceIdentifiers.INodeTransformer).to(MemberExpressionTransformer_1.MemberExpressionTransformer).whenTargetNamed(NodeTransformers_1.NodeTransformers.MemberExpressionTransformer);
  2520. bind(ServiceIdentifiers_1.ServiceIdentifiers.INodeTransformer).to(MethodDefinitionTransformer_1.MethodDefinitionTransformer).whenTargetNamed(NodeTransformers_1.NodeTransformers.MethodDefinitionTransformer);
  2521. bind(ServiceIdentifiers_1.ServiceIdentifiers.INodeTransformer).to(TemplateLiteralTransformer_1.TemplateLiteralTransformer).whenTargetNamed(NodeTransformers_1.NodeTransformers.TemplateLiteralTransformer);
  2522. bind(ServiceIdentifiers_1.ServiceIdentifiers.INodeTransformer).to(CatchClauseTransformer_1.CatchClauseTransformer).whenTargetNamed(NodeTransformers_1.NodeTransformers.CatchClauseTransformer);
  2523. bind(ServiceIdentifiers_1.ServiceIdentifiers.INodeTransformer).to(FunctionDeclarationTransformer_1.FunctionDeclarationTransformer).whenTargetNamed(NodeTransformers_1.NodeTransformers.FunctionDeclarationTransformer);
  2524. bind(ServiceIdentifiers_1.ServiceIdentifiers.INodeTransformer).to(FunctionTransformer_1.FunctionTransformer).whenTargetNamed(NodeTransformers_1.NodeTransformers.FunctionTransformer);
  2525. bind(ServiceIdentifiers_1.ServiceIdentifiers.INodeTransformer).to(LabeledStatementTransformer_1.LabeledStatementTransformer).whenTargetNamed(NodeTransformers_1.NodeTransformers.LabeledStatementTransformer);
  2526. bind(ServiceIdentifiers_1.ServiceIdentifiers.INodeTransformer).to(LiteralTransformer_1.LiteralTransformer).whenTargetNamed(NodeTransformers_1.NodeTransformers.LiteralTransformer);
  2527. bind(ServiceIdentifiers_1.ServiceIdentifiers.INodeTransformer).to(ObjectExpressionTransformer_1.ObjectExpressionTransformer).whenTargetNamed(NodeTransformers_1.NodeTransformers.ObjectExpressionTransformer);
  2528. bind(ServiceIdentifiers_1.ServiceIdentifiers.INodeTransformer).to(VariableDeclarationTransformer_1.VariableDeclarationTransformer).whenTargetNamed(NodeTransformers_1.NodeTransformers.VariableDeclarationTransformer);
  2529. bind(ServiceIdentifiers_1.ServiceIdentifiers.Factory__INodeTransformer).toFactory(function (context) {
  2530. var cache = new Map();
  2531. return function (nodeTransformerName) {
  2532. if (cache.has(nodeTransformerName)) {
  2533. return cache.get(nodeTransformerName);
  2534. }
  2535. var nodeTransformer = context.container.getNamed(ServiceIdentifiers_1.ServiceIdentifiers.INodeTransformer, nodeTransformerName);
  2536. cache.set(nodeTransformerName, nodeTransformer);
  2537. return nodeTransformer;
  2538. };
  2539. });
  2540. });
  2541. /***/ }),
  2542. /* 51 */
  2543. /***/ (function(module, exports, __webpack_require__) {
  2544. "use strict";
  2545. Object.defineProperty(exports, "__esModule", { value: true });
  2546. var inversify_1 = __webpack_require__(0);
  2547. var ServiceIdentifiers_1 = __webpack_require__(2);
  2548. var ObfuscatingReplacers_1 = __webpack_require__(16);
  2549. var BooleanLiteralReplacer_1 = __webpack_require__(98);
  2550. var IdentifierReplacer_1 = __webpack_require__(99);
  2551. var NumberLiteralReplacer_1 = __webpack_require__(100);
  2552. var StringLiteralReplacer_1 = __webpack_require__(101);
  2553. exports.obfuscatingTransformersModule = new inversify_1.ContainerModule(function (bind) {
  2554. bind(ServiceIdentifiers_1.ServiceIdentifiers.IObfuscatingReplacer).to(BooleanLiteralReplacer_1.BooleanLiteralReplacer).whenTargetNamed(ObfuscatingReplacers_1.ObfuscatingReplacers.BooleanReplacer);
  2555. bind(ServiceIdentifiers_1.ServiceIdentifiers.IObfuscatingReplacer).to(IdentifierReplacer_1.IdentifierReplacer).whenTargetNamed(ObfuscatingReplacers_1.ObfuscatingReplacers.IdentifierReplacer);
  2556. bind(ServiceIdentifiers_1.ServiceIdentifiers.IObfuscatingReplacer).to(NumberLiteralReplacer_1.NumberLiteralReplacer).whenTargetNamed(ObfuscatingReplacers_1.ObfuscatingReplacers.NumberLiteralReplacer);
  2557. bind(ServiceIdentifiers_1.ServiceIdentifiers.IObfuscatingReplacer).to(StringLiteralReplacer_1.StringLiteralReplacer).whenTargetNamed(ObfuscatingReplacers_1.ObfuscatingReplacers.StringLiteralReplacer);
  2558. bind(ServiceIdentifiers_1.ServiceIdentifiers.Factory__IObfuscatingReplacer).toFactory(function (context) {
  2559. var cache = new Map();
  2560. return function (replacerName) {
  2561. if (cache.has(replacerName)) {
  2562. return cache.get(replacerName);
  2563. }
  2564. var obfuscationReplacer = context.container.getNamed(ServiceIdentifiers_1.ServiceIdentifiers.IObfuscatingReplacer, replacerName);
  2565. cache.set(replacerName, obfuscationReplacer);
  2566. return obfuscationReplacer;
  2567. };
  2568. });
  2569. });
  2570. /***/ }),
  2571. /* 52 */
  2572. /***/ (function(module, exports, __webpack_require__) {
  2573. "use strict";
  2574. Object.defineProperty(exports, "__esModule", { value: true });
  2575. var inversify_1 = __webpack_require__(0);
  2576. var ServiceIdentifiers_1 = __webpack_require__(2);
  2577. var CalleeDataExtractors_1 = __webpack_require__(29);
  2578. var FunctionDeclarationCalleeDataExtractor_1 = __webpack_require__(116);
  2579. var FunctionExpressionCalleeDataExtractor_1 = __webpack_require__(117);
  2580. var ObjectExpressionCalleeDataExtractor_1 = __webpack_require__(118);
  2581. var StackTraceAnalyzer_1 = __webpack_require__(115);
  2582. exports.stackTraceAnalyzerModule = new inversify_1.ContainerModule(function (bind) {
  2583. bind(ServiceIdentifiers_1.ServiceIdentifiers.IStackTraceAnalyzer).to(StackTraceAnalyzer_1.StackTraceAnalyzer).inSingletonScope();
  2584. bind(ServiceIdentifiers_1.ServiceIdentifiers.ICalleeDataExtractor).to(FunctionDeclarationCalleeDataExtractor_1.FunctionDeclarationCalleeDataExtractor).whenTargetNamed(CalleeDataExtractors_1.CalleeDataExtractors.FunctionDeclarationCalleeDataExtractor);
  2585. bind(ServiceIdentifiers_1.ServiceIdentifiers.ICalleeDataExtractor).to(FunctionExpressionCalleeDataExtractor_1.FunctionExpressionCalleeDataExtractor).whenTargetNamed(CalleeDataExtractors_1.CalleeDataExtractors.FunctionExpressionCalleeDataExtractor);
  2586. bind(ServiceIdentifiers_1.ServiceIdentifiers.ICalleeDataExtractor).to(ObjectExpressionCalleeDataExtractor_1.ObjectExpressionCalleeDataExtractor).whenTargetNamed(CalleeDataExtractors_1.CalleeDataExtractors.ObjectExpressionCalleeDataExtractor);
  2587. bind(ServiceIdentifiers_1.ServiceIdentifiers.Factory__ICalleeDataExtractor).toFactory(function (context) {
  2588. var cache = new Map();
  2589. return function (calleeDataExtractorName) {
  2590. if (cache.has(calleeDataExtractorName)) {
  2591. return cache.get(calleeDataExtractorName);
  2592. }
  2593. var calleeDataExtractor = context.container.getNamed(ServiceIdentifiers_1.ServiceIdentifiers.ICalleeDataExtractor, calleeDataExtractorName);
  2594. cache.set(calleeDataExtractorName, calleeDataExtractor);
  2595. return calleeDataExtractor;
  2596. };
  2597. });
  2598. });
  2599. /***/ }),
  2600. /* 53 */
  2601. /***/ (function(module, exports, __webpack_require__) {
  2602. "use strict";
  2603. Object.defineProperty(exports, "__esModule", { value: true });
  2604. var inversify_1 = __webpack_require__(0);
  2605. var ServiceIdentifiers_1 = __webpack_require__(2);
  2606. var ControlFlowStorage_1 = __webpack_require__(120);
  2607. var CustomNodeGroupStorage_1 = __webpack_require__(121);
  2608. var StringArrayStorage_1 = __webpack_require__(122);
  2609. exports.storagesModule = new inversify_1.ContainerModule(function (bind) {
  2610. bind(ServiceIdentifiers_1.ServiceIdentifiers.TCustomNodeGroupStorage).to(CustomNodeGroupStorage_1.CustomNodeGroupStorage).inSingletonScope();
  2611. bind(ServiceIdentifiers_1.ServiceIdentifiers.TStringArrayStorage).to(StringArrayStorage_1.StringArrayStorage).inSingletonScope();
  2612. bind(ServiceIdentifiers_1.ServiceIdentifiers.Newable__TControlFlowStorage).toConstructor(ControlFlowStorage_1.ControlFlowStorage);
  2613. bind(ServiceIdentifiers_1.ServiceIdentifiers.Factory__TControlFlowStorage).toFactory(function (context) {
  2614. return function () {
  2615. var constructor = context.container.get(ServiceIdentifiers_1.ServiceIdentifiers.Newable__TControlFlowStorage);
  2616. return new constructor();
  2617. };
  2618. });
  2619. });
  2620. /***/ }),
  2621. /* 54 */
  2622. /***/ (function(module, exports, __webpack_require__) {
  2623. "use strict";
  2624. var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
  2625. function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
  2626. function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
  2627. function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
  2628. Object.defineProperty(exports, "__esModule", { value: true });
  2629. var tslib_1 = __webpack_require__(1);
  2630. var inversify_1 = __webpack_require__(0);
  2631. var ServiceIdentifiers_1 = __webpack_require__(2);
  2632. var format = __webpack_require__(13);
  2633. var ConsoleOutputDisableExpressionTemplate_1 = __webpack_require__(126);
  2634. var Initializable_1 = __webpack_require__(5);
  2635. var AbstractCustomNode_1 = __webpack_require__(7);
  2636. var NodeUtils_1 = __webpack_require__(3);
  2637. var RandomGeneratorUtils_1 = __webpack_require__(4);
  2638. var ConsoleOutputDisableExpressionNode = function (_AbstractCustomNode_) {
  2639. _inherits(ConsoleOutputDisableExpressionNode, _AbstractCustomNode_);
  2640. function ConsoleOutputDisableExpressionNode(options) {
  2641. _classCallCheck(this, ConsoleOutputDisableExpressionNode);
  2642. return _possibleConstructorReturn(this, (ConsoleOutputDisableExpressionNode.__proto__ || Object.getPrototypeOf(ConsoleOutputDisableExpressionNode)).call(this, options));
  2643. }
  2644. _createClass(ConsoleOutputDisableExpressionNode, [{
  2645. key: "initialize",
  2646. value: function initialize(callsControllerFunctionName) {
  2647. this.callsControllerFunctionName = callsControllerFunctionName;
  2648. }
  2649. }, {
  2650. key: "getNodeStructure",
  2651. value: function getNodeStructure() {
  2652. return NodeUtils_1.NodeUtils.convertCodeToStructure(this.getTemplate());
  2653. }
  2654. }, {
  2655. key: "getTemplate",
  2656. value: function getTemplate() {
  2657. return format(ConsoleOutputDisableExpressionTemplate_1.ConsoleOutputDisableExpressionTemplate(), {
  2658. consoleLogDisableFunctionName: RandomGeneratorUtils_1.RandomGeneratorUtils.getRandomVariableName(6),
  2659. singleNodeCallControllerFunctionName: this.callsControllerFunctionName
  2660. });
  2661. }
  2662. }]);
  2663. return ConsoleOutputDisableExpressionNode;
  2664. }(AbstractCustomNode_1.AbstractCustomNode);
  2665. tslib_1.__decorate([Initializable_1.initializable(), tslib_1.__metadata("design:type", String)], ConsoleOutputDisableExpressionNode.prototype, "callsControllerFunctionName", void 0);
  2666. ConsoleOutputDisableExpressionNode = tslib_1.__decorate([inversify_1.injectable(), tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)), tslib_1.__metadata("design:paramtypes", [Object])], ConsoleOutputDisableExpressionNode);
  2667. exports.ConsoleOutputDisableExpressionNode = ConsoleOutputDisableExpressionNode;
  2668. /***/ }),
  2669. /* 55 */
  2670. /***/ (function(module, exports, __webpack_require__) {
  2671. "use strict";
  2672. var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
  2673. function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
  2674. function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
  2675. function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
  2676. Object.defineProperty(exports, "__esModule", { value: true });
  2677. var tslib_1 = __webpack_require__(1);
  2678. var inversify_1 = __webpack_require__(0);
  2679. var ServiceIdentifiers_1 = __webpack_require__(2);
  2680. var Initializable_1 = __webpack_require__(5);
  2681. var CustomNodes_1 = __webpack_require__(10);
  2682. var ObfuscationEvents_1 = __webpack_require__(15);
  2683. var AbstractCustomNodeGroup_1 = __webpack_require__(19);
  2684. var NodeAppender_1 = __webpack_require__(18);
  2685. var RandomGeneratorUtils_1 = __webpack_require__(4);
  2686. var ConsoleOutputCustomNodeGroup = function (_AbstractCustomNodeGr) {
  2687. _inherits(ConsoleOutputCustomNodeGroup, _AbstractCustomNodeGr);
  2688. function ConsoleOutputCustomNodeGroup(customNodeFactory, obfuscationEventEmitter, options) {
  2689. _classCallCheck(this, ConsoleOutputCustomNodeGroup);
  2690. var _this = _possibleConstructorReturn(this, (ConsoleOutputCustomNodeGroup.__proto__ || Object.getPrototypeOf(ConsoleOutputCustomNodeGroup)).call(this, options));
  2691. _this.appendEvent = ObfuscationEvents_1.ObfuscationEvents.BeforeObfuscation;
  2692. _this.customNodeFactory = customNodeFactory;
  2693. _this.obfuscationEventEmitter = obfuscationEventEmitter;
  2694. return _this;
  2695. }
  2696. _createClass(ConsoleOutputCustomNodeGroup, [{
  2697. key: "appendCustomNodes",
  2698. value: function appendCustomNodes(blockScopeNode, stackTraceData) {
  2699. var randomStackTraceIndex = NodeAppender_1.NodeAppender.getRandomStackTraceIndex(stackTraceData.length);
  2700. this.appendCustomNodeIfExist(CustomNodes_1.CustomNodes.ConsoleOutputDisableExpressionNode, function (customNode) {
  2701. NodeAppender_1.NodeAppender.appendNodeToOptimalBlockScope(stackTraceData, blockScopeNode, customNode.getNode(), randomStackTraceIndex);
  2702. });
  2703. this.appendCustomNodeIfExist(CustomNodes_1.CustomNodes.NodeCallsControllerFunctionNode, function (customNode) {
  2704. var targetBlockScope = void 0;
  2705. if (stackTraceData.length) {
  2706. targetBlockScope = NodeAppender_1.NodeAppender.getOptimalBlockScope(stackTraceData, randomStackTraceIndex, 1);
  2707. } else {
  2708. targetBlockScope = blockScopeNode;
  2709. }
  2710. NodeAppender_1.NodeAppender.prependNode(targetBlockScope, customNode.getNode());
  2711. });
  2712. }
  2713. }, {
  2714. key: "initialize",
  2715. value: function initialize() {
  2716. this.customNodes = new Map();
  2717. if (!this.options.disableConsoleOutput) {
  2718. return;
  2719. }
  2720. var callsControllerFunctionName = RandomGeneratorUtils_1.RandomGeneratorUtils.getRandomVariableName(6);
  2721. var consoleOutputDisableExpressionNode = this.customNodeFactory(CustomNodes_1.CustomNodes.ConsoleOutputDisableExpressionNode);
  2722. var nodeCallsControllerFunctionNode = this.customNodeFactory(CustomNodes_1.CustomNodes.NodeCallsControllerFunctionNode);
  2723. consoleOutputDisableExpressionNode.initialize(callsControllerFunctionName);
  2724. nodeCallsControllerFunctionNode.initialize(this.appendEvent, callsControllerFunctionName);
  2725. this.customNodes.set(CustomNodes_1.CustomNodes.ConsoleOutputDisableExpressionNode, consoleOutputDisableExpressionNode);
  2726. this.customNodes.set(CustomNodes_1.CustomNodes.NodeCallsControllerFunctionNode, nodeCallsControllerFunctionNode);
  2727. }
  2728. }]);
  2729. return ConsoleOutputCustomNodeGroup;
  2730. }(AbstractCustomNodeGroup_1.AbstractCustomNodeGroup);
  2731. tslib_1.__decorate([Initializable_1.initializable(), tslib_1.__metadata("design:type", Map)], ConsoleOutputCustomNodeGroup.prototype, "customNodes", void 0);
  2732. ConsoleOutputCustomNodeGroup = tslib_1.__decorate([inversify_1.injectable(), tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__ICustomNode)), tslib_1.__param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IObfuscationEventEmitter)), tslib_1.__param(2, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)), tslib_1.__metadata("design:paramtypes", [Function, Object, Object])], ConsoleOutputCustomNodeGroup);
  2733. exports.ConsoleOutputCustomNodeGroup = ConsoleOutputCustomNodeGroup;
  2734. /***/ }),
  2735. /* 56 */
  2736. /***/ (function(module, exports, __webpack_require__) {
  2737. "use strict";
  2738. var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
  2739. function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
  2740. function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
  2741. function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
  2742. Object.defineProperty(exports, "__esModule", { value: true });
  2743. var tslib_1 = __webpack_require__(1);
  2744. var inversify_1 = __webpack_require__(0);
  2745. var ServiceIdentifiers_1 = __webpack_require__(2);
  2746. var Initializable_1 = __webpack_require__(5);
  2747. var AbstractCustomNode_1 = __webpack_require__(7);
  2748. var Nodes_1 = __webpack_require__(8);
  2749. var NodeUtils_1 = __webpack_require__(3);
  2750. var RandomGeneratorUtils_1 = __webpack_require__(4);
  2751. var BinaryExpressionFunctionNode = function (_AbstractCustomNode_) {
  2752. _inherits(BinaryExpressionFunctionNode, _AbstractCustomNode_);
  2753. function BinaryExpressionFunctionNode(options) {
  2754. _classCallCheck(this, BinaryExpressionFunctionNode);
  2755. return _possibleConstructorReturn(this, (BinaryExpressionFunctionNode.__proto__ || Object.getPrototypeOf(BinaryExpressionFunctionNode)).call(this, options));
  2756. }
  2757. _createClass(BinaryExpressionFunctionNode, [{
  2758. key: "initialize",
  2759. value: function initialize(operator) {
  2760. this.operator = operator;
  2761. }
  2762. }, {
  2763. key: "getNodeStructure",
  2764. value: function getNodeStructure() {
  2765. var structure = Nodes_1.Nodes.getFunctionDeclarationNode(RandomGeneratorUtils_1.RandomGeneratorUtils.getRandomString(3), [Nodes_1.Nodes.getIdentifierNode('x'), Nodes_1.Nodes.getIdentifierNode('y')], Nodes_1.Nodes.getBlockStatementNode([Nodes_1.Nodes.getReturnStatementNode(Nodes_1.Nodes.getBinaryExpressionNode(this.operator, Nodes_1.Nodes.getIdentifierNode('x'), Nodes_1.Nodes.getIdentifierNode('y')))]));
  2766. NodeUtils_1.NodeUtils.parentize(structure);
  2767. return [structure];
  2768. }
  2769. }]);
  2770. return BinaryExpressionFunctionNode;
  2771. }(AbstractCustomNode_1.AbstractCustomNode);
  2772. tslib_1.__decorate([Initializable_1.initializable(), tslib_1.__metadata("design:type", String)], BinaryExpressionFunctionNode.prototype, "operator", void 0);
  2773. BinaryExpressionFunctionNode = tslib_1.__decorate([inversify_1.injectable(), tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)), tslib_1.__metadata("design:paramtypes", [Object])], BinaryExpressionFunctionNode);
  2774. exports.BinaryExpressionFunctionNode = BinaryExpressionFunctionNode;
  2775. /***/ }),
  2776. /* 57 */
  2777. /***/ (function(module, exports, __webpack_require__) {
  2778. "use strict";
  2779. var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
  2780. function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
  2781. function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
  2782. function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
  2783. Object.defineProperty(exports, "__esModule", { value: true });
  2784. var tslib_1 = __webpack_require__(1);
  2785. var inversify_1 = __webpack_require__(0);
  2786. var ServiceIdentifiers_1 = __webpack_require__(2);
  2787. var Initializable_1 = __webpack_require__(5);
  2788. var AbstractCustomNode_1 = __webpack_require__(7);
  2789. var Nodes_1 = __webpack_require__(8);
  2790. var NodeUtils_1 = __webpack_require__(3);
  2791. var RandomGeneratorUtils_1 = __webpack_require__(4);
  2792. var BlockStatementControlFlowFlatteningNode = function (_AbstractCustomNode_) {
  2793. _inherits(BlockStatementControlFlowFlatteningNode, _AbstractCustomNode_);
  2794. function BlockStatementControlFlowFlatteningNode(options) {
  2795. _classCallCheck(this, BlockStatementControlFlowFlatteningNode);
  2796. return _possibleConstructorReturn(this, (BlockStatementControlFlowFlatteningNode.__proto__ || Object.getPrototypeOf(BlockStatementControlFlowFlatteningNode)).call(this, options));
  2797. }
  2798. _createClass(BlockStatementControlFlowFlatteningNode, [{
  2799. key: "initialize",
  2800. value: function initialize(blockStatementBody, shuffledKeys, originalKeysIndexesInShuffledArray) {
  2801. this.blockStatementBody = blockStatementBody;
  2802. this.shuffledKeys = shuffledKeys;
  2803. this.originalKeysIndexesInShuffledArray = originalKeysIndexesInShuffledArray;
  2804. }
  2805. }, {
  2806. key: "getNodeStructure",
  2807. value: function getNodeStructure() {
  2808. var _this2 = this;
  2809. var controllerIdentifierName = RandomGeneratorUtils_1.RandomGeneratorUtils.getRandomString(3);
  2810. var indexIdentifierName = RandomGeneratorUtils_1.RandomGeneratorUtils.getRandomString(3);
  2811. var structure = Nodes_1.Nodes.getBlockStatementNode([Nodes_1.Nodes.getVariableDeclarationNode([Nodes_1.Nodes.getVariableDeclaratorNode(Nodes_1.Nodes.getIdentifierNode(controllerIdentifierName), Nodes_1.Nodes.getCallExpressionNode(Nodes_1.Nodes.getMemberExpressionNode(Nodes_1.Nodes.getLiteralNode(this.originalKeysIndexesInShuffledArray.join('|')), Nodes_1.Nodes.getIdentifierNode('split')), [Nodes_1.Nodes.getLiteralNode('|')])), Nodes_1.Nodes.getVariableDeclaratorNode(Nodes_1.Nodes.getIdentifierNode(indexIdentifierName), Nodes_1.Nodes.getLiteralNode(0))]), Nodes_1.Nodes.getWhileStatementNode(Nodes_1.Nodes.getLiteralNode(true), Nodes_1.Nodes.getBlockStatementNode([Nodes_1.Nodes.getSwitchStatementNode(Nodes_1.Nodes.getMemberExpressionNode(Nodes_1.Nodes.getIdentifierNode(controllerIdentifierName), Nodes_1.Nodes.getUpdateExpressionNode('++', Nodes_1.Nodes.getIdentifierNode(indexIdentifierName)), true), this.shuffledKeys.map(function (key, index) {
  2812. return Nodes_1.Nodes.getSwitchCaseNode(Nodes_1.Nodes.getLiteralNode(String(index)), [_this2.blockStatementBody[key], Nodes_1.Nodes.getContinueStatement()]);
  2813. })), Nodes_1.Nodes.getBreakStatement()]))]);
  2814. NodeUtils_1.NodeUtils.parentize(structure);
  2815. return [structure];
  2816. }
  2817. }]);
  2818. return BlockStatementControlFlowFlatteningNode;
  2819. }(AbstractCustomNode_1.AbstractCustomNode);
  2820. tslib_1.__decorate([Initializable_1.initializable(), tslib_1.__metadata("design:type", Array)], BlockStatementControlFlowFlatteningNode.prototype, "blockStatementBody", void 0);
  2821. tslib_1.__decorate([Initializable_1.initializable(), tslib_1.__metadata("design:type", Array)], BlockStatementControlFlowFlatteningNode.prototype, "originalKeysIndexesInShuffledArray", void 0);
  2822. tslib_1.__decorate([Initializable_1.initializable(), tslib_1.__metadata("design:type", Array)], BlockStatementControlFlowFlatteningNode.prototype, "shuffledKeys", void 0);
  2823. BlockStatementControlFlowFlatteningNode = tslib_1.__decorate([inversify_1.injectable(), tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)), tslib_1.__metadata("design:paramtypes", [Object])], BlockStatementControlFlowFlatteningNode);
  2824. exports.BlockStatementControlFlowFlatteningNode = BlockStatementControlFlowFlatteningNode;
  2825. /***/ }),
  2826. /* 58 */
  2827. /***/ (function(module, exports, __webpack_require__) {
  2828. "use strict";
  2829. var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
  2830. function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
  2831. function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
  2832. function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
  2833. Object.defineProperty(exports, "__esModule", { value: true });
  2834. var tslib_1 = __webpack_require__(1);
  2835. var inversify_1 = __webpack_require__(0);
  2836. var ServiceIdentifiers_1 = __webpack_require__(2);
  2837. var Initializable_1 = __webpack_require__(5);
  2838. var AbstractCustomNode_1 = __webpack_require__(7);
  2839. var Nodes_1 = __webpack_require__(8);
  2840. var NodeUtils_1 = __webpack_require__(3);
  2841. var RandomGeneratorUtils_1 = __webpack_require__(4);
  2842. var CallExpressionFunctionNode = function (_AbstractCustomNode_) {
  2843. _inherits(CallExpressionFunctionNode, _AbstractCustomNode_);
  2844. function CallExpressionFunctionNode(options) {
  2845. _classCallCheck(this, CallExpressionFunctionNode);
  2846. return _possibleConstructorReturn(this, (CallExpressionFunctionNode.__proto__ || Object.getPrototypeOf(CallExpressionFunctionNode)).call(this, options));
  2847. }
  2848. _createClass(CallExpressionFunctionNode, [{
  2849. key: "initialize",
  2850. value: function initialize(expressionArguments) {
  2851. this.expressionArguments = expressionArguments;
  2852. }
  2853. }, {
  2854. key: "getNodeStructure",
  2855. value: function getNodeStructure() {
  2856. var calleeIdentifier = Nodes_1.Nodes.getIdentifierNode('callee');
  2857. var params = [];
  2858. var argumentsLength = this.expressionArguments.length;
  2859. for (var i = 0; i < argumentsLength; i++) {
  2860. params.push(Nodes_1.Nodes.getIdentifierNode("param" + (i + 1)));
  2861. }
  2862. var structure = Nodes_1.Nodes.getFunctionDeclarationNode(RandomGeneratorUtils_1.RandomGeneratorUtils.getRandomString(3), [calleeIdentifier].concat(params), Nodes_1.Nodes.getBlockStatementNode([Nodes_1.Nodes.getReturnStatementNode(Nodes_1.Nodes.getCallExpressionNode(calleeIdentifier, params))]));
  2863. NodeUtils_1.NodeUtils.parentize(structure);
  2864. return [structure];
  2865. }
  2866. }]);
  2867. return CallExpressionFunctionNode;
  2868. }(AbstractCustomNode_1.AbstractCustomNode);
  2869. tslib_1.__decorate([Initializable_1.initializable(), tslib_1.__metadata("design:type", Array)], CallExpressionFunctionNode.prototype, "expressionArguments", void 0);
  2870. CallExpressionFunctionNode = tslib_1.__decorate([inversify_1.injectable(), tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)), tslib_1.__metadata("design:paramtypes", [Object])], CallExpressionFunctionNode);
  2871. exports.CallExpressionFunctionNode = CallExpressionFunctionNode;
  2872. /***/ }),
  2873. /* 59 */
  2874. /***/ (function(module, exports, __webpack_require__) {
  2875. "use strict";
  2876. var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
  2877. function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
  2878. function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
  2879. function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
  2880. Object.defineProperty(exports, "__esModule", { value: true });
  2881. var tslib_1 = __webpack_require__(1);
  2882. var inversify_1 = __webpack_require__(0);
  2883. var ServiceIdentifiers_1 = __webpack_require__(2);
  2884. var Initializable_1 = __webpack_require__(5);
  2885. var AbstractCustomNode_1 = __webpack_require__(7);
  2886. var Nodes_1 = __webpack_require__(8);
  2887. var RandomGeneratorUtils_1 = __webpack_require__(4);
  2888. var NodeUtils_1 = __webpack_require__(3);
  2889. var LogicalExpressionFunctionNode = function (_AbstractCustomNode_) {
  2890. _inherits(LogicalExpressionFunctionNode, _AbstractCustomNode_);
  2891. function LogicalExpressionFunctionNode(options) {
  2892. _classCallCheck(this, LogicalExpressionFunctionNode);
  2893. return _possibleConstructorReturn(this, (LogicalExpressionFunctionNode.__proto__ || Object.getPrototypeOf(LogicalExpressionFunctionNode)).call(this, options));
  2894. }
  2895. _createClass(LogicalExpressionFunctionNode, [{
  2896. key: "initialize",
  2897. value: function initialize(operator) {
  2898. this.operator = operator;
  2899. }
  2900. }, {
  2901. key: "getNodeStructure",
  2902. value: function getNodeStructure() {
  2903. var structure = Nodes_1.Nodes.getFunctionDeclarationNode(RandomGeneratorUtils_1.RandomGeneratorUtils.getRandomString(3), [Nodes_1.Nodes.getIdentifierNode('x'), Nodes_1.Nodes.getIdentifierNode('y')], Nodes_1.Nodes.getBlockStatementNode([Nodes_1.Nodes.getReturnStatementNode(Nodes_1.Nodes.getLogicalExpressionNode(this.operator, Nodes_1.Nodes.getIdentifierNode('x'), Nodes_1.Nodes.getIdentifierNode('y')))]));
  2904. NodeUtils_1.NodeUtils.parentize(structure);
  2905. return [structure];
  2906. }
  2907. }]);
  2908. return LogicalExpressionFunctionNode;
  2909. }(AbstractCustomNode_1.AbstractCustomNode);
  2910. tslib_1.__decorate([Initializable_1.initializable(), tslib_1.__metadata("design:type", String)], LogicalExpressionFunctionNode.prototype, "operator", void 0);
  2911. LogicalExpressionFunctionNode = tslib_1.__decorate([inversify_1.injectable(), tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)), tslib_1.__metadata("design:paramtypes", [Object])], LogicalExpressionFunctionNode);
  2912. exports.LogicalExpressionFunctionNode = LogicalExpressionFunctionNode;
  2913. /***/ }),
  2914. /* 60 */
  2915. /***/ (function(module, exports, __webpack_require__) {
  2916. "use strict";
  2917. var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
  2918. function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
  2919. function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
  2920. function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
  2921. Object.defineProperty(exports, "__esModule", { value: true });
  2922. var tslib_1 = __webpack_require__(1);
  2923. var inversify_1 = __webpack_require__(0);
  2924. var ServiceIdentifiers_1 = __webpack_require__(2);
  2925. var Initializable_1 = __webpack_require__(5);
  2926. var AbstractCustomNode_1 = __webpack_require__(7);
  2927. var Nodes_1 = __webpack_require__(8);
  2928. var StringLiteralNode = function (_AbstractCustomNode_) {
  2929. _inherits(StringLiteralNode, _AbstractCustomNode_);
  2930. function StringLiteralNode(options) {
  2931. _classCallCheck(this, StringLiteralNode);
  2932. return _possibleConstructorReturn(this, (StringLiteralNode.__proto__ || Object.getPrototypeOf(StringLiteralNode)).call(this, options));
  2933. }
  2934. _createClass(StringLiteralNode, [{
  2935. key: "initialize",
  2936. value: function initialize(literalValue) {
  2937. this.literalValue = literalValue;
  2938. }
  2939. }, {
  2940. key: "getNodeStructure",
  2941. value: function getNodeStructure() {
  2942. var structure = Nodes_1.Nodes.getLiteralNode(this.literalValue);
  2943. return [structure];
  2944. }
  2945. }]);
  2946. return StringLiteralNode;
  2947. }(AbstractCustomNode_1.AbstractCustomNode);
  2948. tslib_1.__decorate([Initializable_1.initializable(), tslib_1.__metadata("design:type", String)], StringLiteralNode.prototype, "literalValue", void 0);
  2949. StringLiteralNode = tslib_1.__decorate([inversify_1.injectable(), tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)), tslib_1.__metadata("design:paramtypes", [Object])], StringLiteralNode);
  2950. exports.StringLiteralNode = StringLiteralNode;
  2951. /***/ }),
  2952. /* 61 */
  2953. /***/ (function(module, exports, __webpack_require__) {
  2954. "use strict";
  2955. var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
  2956. function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }
  2957. function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
  2958. function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
  2959. function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
  2960. Object.defineProperty(exports, "__esModule", { value: true });
  2961. var tslib_1 = __webpack_require__(1);
  2962. var inversify_1 = __webpack_require__(0);
  2963. var ServiceIdentifiers_1 = __webpack_require__(2);
  2964. var Initializable_1 = __webpack_require__(5);
  2965. var AbstractCustomNode_1 = __webpack_require__(7);
  2966. var Nodes_1 = __webpack_require__(8);
  2967. var NodeUtils_1 = __webpack_require__(3);
  2968. var CallExpressionControlFlowStorageCallNode = function (_AbstractCustomNode_) {
  2969. _inherits(CallExpressionControlFlowStorageCallNode, _AbstractCustomNode_);
  2970. function CallExpressionControlFlowStorageCallNode(options) {
  2971. _classCallCheck(this, CallExpressionControlFlowStorageCallNode);
  2972. return _possibleConstructorReturn(this, (CallExpressionControlFlowStorageCallNode.__proto__ || Object.getPrototypeOf(CallExpressionControlFlowStorageCallNode)).call(this, options));
  2973. }
  2974. _createClass(CallExpressionControlFlowStorageCallNode, [{
  2975. key: "initialize",
  2976. value: function initialize(controlFlowStorageName, controlFlowStorageKey, callee, expressionArguments) {
  2977. this.controlFlowStorageName = controlFlowStorageName;
  2978. this.controlFlowStorageKey = controlFlowStorageKey;
  2979. this.callee = callee;
  2980. this.expressionArguments = expressionArguments;
  2981. }
  2982. }, {
  2983. key: "getNodeStructure",
  2984. value: function getNodeStructure() {
  2985. var structure = Nodes_1.Nodes.getExpressionStatementNode(Nodes_1.Nodes.getCallExpressionNode(Nodes_1.Nodes.getMemberExpressionNode(Nodes_1.Nodes.getIdentifierNode(this.controlFlowStorageName), Nodes_1.Nodes.getIdentifierNode(this.controlFlowStorageKey)), [this.callee].concat(_toConsumableArray(this.expressionArguments))));
  2986. NodeUtils_1.NodeUtils.parentize(structure);
  2987. return [structure];
  2988. }
  2989. }]);
  2990. return CallExpressionControlFlowStorageCallNode;
  2991. }(AbstractCustomNode_1.AbstractCustomNode);
  2992. tslib_1.__decorate([Initializable_1.initializable(), tslib_1.__metadata("design:type", Object)], CallExpressionControlFlowStorageCallNode.prototype, "callee", void 0);
  2993. tslib_1.__decorate([Initializable_1.initializable(), tslib_1.__metadata("design:type", String)], CallExpressionControlFlowStorageCallNode.prototype, "controlFlowStorageKey", void 0);
  2994. tslib_1.__decorate([Initializable_1.initializable(), tslib_1.__metadata("design:type", String)], CallExpressionControlFlowStorageCallNode.prototype, "controlFlowStorageName", void 0);
  2995. tslib_1.__decorate([Initializable_1.initializable(), tslib_1.__metadata("design:type", Array)], CallExpressionControlFlowStorageCallNode.prototype, "expressionArguments", void 0);
  2996. CallExpressionControlFlowStorageCallNode = tslib_1.__decorate([inversify_1.injectable(), tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)), tslib_1.__metadata("design:paramtypes", [Object])], CallExpressionControlFlowStorageCallNode);
  2997. exports.CallExpressionControlFlowStorageCallNode = CallExpressionControlFlowStorageCallNode;
  2998. /***/ }),
  2999. /* 62 */
  3000. /***/ (function(module, exports, __webpack_require__) {
  3001. "use strict";
  3002. var _slicedToArray = (function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; })();
  3003. var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
  3004. function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
  3005. function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
  3006. function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
  3007. Object.defineProperty(exports, "__esModule", { value: true });
  3008. var tslib_1 = __webpack_require__(1);
  3009. var inversify_1 = __webpack_require__(0);
  3010. var ServiceIdentifiers_1 = __webpack_require__(2);
  3011. var Initializable_1 = __webpack_require__(5);
  3012. var AbstractCustomNode_1 = __webpack_require__(7);
  3013. var Nodes_1 = __webpack_require__(8);
  3014. var NodeUtils_1 = __webpack_require__(3);
  3015. var ControlFlowStorageNode = function (_AbstractCustomNode_) {
  3016. _inherits(ControlFlowStorageNode, _AbstractCustomNode_);
  3017. function ControlFlowStorageNode(options) {
  3018. _classCallCheck(this, ControlFlowStorageNode);
  3019. return _possibleConstructorReturn(this, (ControlFlowStorageNode.__proto__ || Object.getPrototypeOf(ControlFlowStorageNode)).call(this, options));
  3020. }
  3021. _createClass(ControlFlowStorageNode, [{
  3022. key: "initialize",
  3023. value: function initialize(controlFlowStorage) {
  3024. this.controlFlowStorage = controlFlowStorage;
  3025. }
  3026. }, {
  3027. key: "getNodeStructure",
  3028. value: function getNodeStructure() {
  3029. var structure = Nodes_1.Nodes.getVariableDeclarationNode([Nodes_1.Nodes.getVariableDeclaratorNode(Nodes_1.Nodes.getIdentifierNode(this.controlFlowStorage.getStorageId()), Nodes_1.Nodes.getObjectExpressionNode(Array.from(this.controlFlowStorage.getStorage()).map(function (_ref) {
  3030. var _ref2 = _slicedToArray(_ref, 2),
  3031. key = _ref2[0],
  3032. value = _ref2[1];
  3033. return Nodes_1.Nodes.getPropertyNode(Nodes_1.Nodes.getIdentifierNode(key), value.getNode()[0]);
  3034. })))]);
  3035. structure = NodeUtils_1.NodeUtils.parentize(structure);
  3036. return [structure];
  3037. }
  3038. }]);
  3039. return ControlFlowStorageNode;
  3040. }(AbstractCustomNode_1.AbstractCustomNode);
  3041. tslib_1.__decorate([Initializable_1.initializable(), tslib_1.__metadata("design:type", Object)], ControlFlowStorageNode.prototype, "controlFlowStorage", void 0);
  3042. ControlFlowStorageNode = tslib_1.__decorate([inversify_1.injectable(), tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)), tslib_1.__metadata("design:paramtypes", [Object])], ControlFlowStorageNode);
  3043. exports.ControlFlowStorageNode = ControlFlowStorageNode;
  3044. /***/ }),
  3045. /* 63 */
  3046. /***/ (function(module, exports, __webpack_require__) {
  3047. "use strict";
  3048. var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
  3049. function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
  3050. function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
  3051. function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
  3052. Object.defineProperty(exports, "__esModule", { value: true });
  3053. var tslib_1 = __webpack_require__(1);
  3054. var inversify_1 = __webpack_require__(0);
  3055. var ServiceIdentifiers_1 = __webpack_require__(2);
  3056. var Initializable_1 = __webpack_require__(5);
  3057. var AbstractCustomNode_1 = __webpack_require__(7);
  3058. var Nodes_1 = __webpack_require__(8);
  3059. var NodeUtils_1 = __webpack_require__(3);
  3060. var ExpressionWithOperatorControlFlowStorageCallNode = function (_AbstractCustomNode_) {
  3061. _inherits(ExpressionWithOperatorControlFlowStorageCallNode, _AbstractCustomNode_);
  3062. function ExpressionWithOperatorControlFlowStorageCallNode(options) {
  3063. _classCallCheck(this, ExpressionWithOperatorControlFlowStorageCallNode);
  3064. return _possibleConstructorReturn(this, (ExpressionWithOperatorControlFlowStorageCallNode.__proto__ || Object.getPrototypeOf(ExpressionWithOperatorControlFlowStorageCallNode)).call(this, options));
  3065. }
  3066. _createClass(ExpressionWithOperatorControlFlowStorageCallNode, [{
  3067. key: "initialize",
  3068. value: function initialize(controlFlowStorageName, controlFlowStorageKey, leftValue, rightValue) {
  3069. this.controlFlowStorageName = controlFlowStorageName;
  3070. this.controlFlowStorageKey = controlFlowStorageKey;
  3071. this.leftValue = leftValue;
  3072. this.rightValue = rightValue;
  3073. }
  3074. }, {
  3075. key: "getNodeStructure",
  3076. value: function getNodeStructure() {
  3077. var structure = Nodes_1.Nodes.getExpressionStatementNode(Nodes_1.Nodes.getCallExpressionNode(Nodes_1.Nodes.getMemberExpressionNode(Nodes_1.Nodes.getIdentifierNode(this.controlFlowStorageName), Nodes_1.Nodes.getIdentifierNode(this.controlFlowStorageKey)), [this.leftValue, this.rightValue]));
  3078. NodeUtils_1.NodeUtils.parentize(structure);
  3079. return [structure];
  3080. }
  3081. }]);
  3082. return ExpressionWithOperatorControlFlowStorageCallNode;
  3083. }(AbstractCustomNode_1.AbstractCustomNode);
  3084. tslib_1.__decorate([Initializable_1.initializable(), tslib_1.__metadata("design:type", String)], ExpressionWithOperatorControlFlowStorageCallNode.prototype, "controlFlowStorageKey", void 0);
  3085. tslib_1.__decorate([Initializable_1.initializable(), tslib_1.__metadata("design:type", String)], ExpressionWithOperatorControlFlowStorageCallNode.prototype, "controlFlowStorageName", void 0);
  3086. tslib_1.__decorate([Initializable_1.initializable(), tslib_1.__metadata("design:type", Object)], ExpressionWithOperatorControlFlowStorageCallNode.prototype, "leftValue", void 0);
  3087. tslib_1.__decorate([Initializable_1.initializable(), tslib_1.__metadata("design:type", Object)], ExpressionWithOperatorControlFlowStorageCallNode.prototype, "rightValue", void 0);
  3088. ExpressionWithOperatorControlFlowStorageCallNode = tslib_1.__decorate([inversify_1.injectable(), tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)), tslib_1.__metadata("design:paramtypes", [Object])], ExpressionWithOperatorControlFlowStorageCallNode);
  3089. exports.ExpressionWithOperatorControlFlowStorageCallNode = ExpressionWithOperatorControlFlowStorageCallNode;
  3090. /***/ }),
  3091. /* 64 */
  3092. /***/ (function(module, exports, __webpack_require__) {
  3093. "use strict";
  3094. var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
  3095. function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
  3096. function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
  3097. function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
  3098. Object.defineProperty(exports, "__esModule", { value: true });
  3099. var tslib_1 = __webpack_require__(1);
  3100. var inversify_1 = __webpack_require__(0);
  3101. var ServiceIdentifiers_1 = __webpack_require__(2);
  3102. var Initializable_1 = __webpack_require__(5);
  3103. var AbstractCustomNode_1 = __webpack_require__(7);
  3104. var Nodes_1 = __webpack_require__(8);
  3105. var NodeUtils_1 = __webpack_require__(3);
  3106. var StringLiteralControlFlowStorageCallNode = function (_AbstractCustomNode_) {
  3107. _inherits(StringLiteralControlFlowStorageCallNode, _AbstractCustomNode_);
  3108. function StringLiteralControlFlowStorageCallNode(options) {
  3109. _classCallCheck(this, StringLiteralControlFlowStorageCallNode);
  3110. return _possibleConstructorReturn(this, (StringLiteralControlFlowStorageCallNode.__proto__ || Object.getPrototypeOf(StringLiteralControlFlowStorageCallNode)).call(this, options));
  3111. }
  3112. _createClass(StringLiteralControlFlowStorageCallNode, [{
  3113. key: "initialize",
  3114. value: function initialize(controlFlowStorageName, controlFlowStorageKey) {
  3115. this.controlFlowStorageName = controlFlowStorageName;
  3116. this.controlFlowStorageKey = controlFlowStorageKey;
  3117. }
  3118. }, {
  3119. key: "getNodeStructure",
  3120. value: function getNodeStructure() {
  3121. var structure = Nodes_1.Nodes.getExpressionStatementNode(Nodes_1.Nodes.getMemberExpressionNode(Nodes_1.Nodes.getIdentifierNode(this.controlFlowStorageName), Nodes_1.Nodes.getIdentifierNode(this.controlFlowStorageKey)));
  3122. NodeUtils_1.NodeUtils.parentize(structure);
  3123. return [structure];
  3124. }
  3125. }]);
  3126. return StringLiteralControlFlowStorageCallNode;
  3127. }(AbstractCustomNode_1.AbstractCustomNode);
  3128. tslib_1.__decorate([Initializable_1.initializable(), tslib_1.__metadata("design:type", String)], StringLiteralControlFlowStorageCallNode.prototype, "controlFlowStorageKey", void 0);
  3129. tslib_1.__decorate([Initializable_1.initializable(), tslib_1.__metadata("design:type", String)], StringLiteralControlFlowStorageCallNode.prototype, "controlFlowStorageName", void 0);
  3130. StringLiteralControlFlowStorageCallNode = tslib_1.__decorate([inversify_1.injectable(), tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)), tslib_1.__metadata("design:paramtypes", [Object])], StringLiteralControlFlowStorageCallNode);
  3131. exports.StringLiteralControlFlowStorageCallNode = StringLiteralControlFlowStorageCallNode;
  3132. /***/ }),
  3133. /* 65 */
  3134. /***/ (function(module, exports, __webpack_require__) {
  3135. "use strict";
  3136. var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
  3137. function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
  3138. function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
  3139. function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
  3140. Object.defineProperty(exports, "__esModule", { value: true });
  3141. var tslib_1 = __webpack_require__(1);
  3142. var inversify_1 = __webpack_require__(0);
  3143. var ServiceIdentifiers_1 = __webpack_require__(2);
  3144. var format = __webpack_require__(13);
  3145. var Initializable_1 = __webpack_require__(5);
  3146. var DebufProtectionFunctionCallTemplate_1 = __webpack_require__(127);
  3147. var AbstractCustomNode_1 = __webpack_require__(7);
  3148. var NodeUtils_1 = __webpack_require__(3);
  3149. var DebugProtectionFunctionCallNode = function (_AbstractCustomNode_) {
  3150. _inherits(DebugProtectionFunctionCallNode, _AbstractCustomNode_);
  3151. function DebugProtectionFunctionCallNode(options) {
  3152. _classCallCheck(this, DebugProtectionFunctionCallNode);
  3153. return _possibleConstructorReturn(this, (DebugProtectionFunctionCallNode.__proto__ || Object.getPrototypeOf(DebugProtectionFunctionCallNode)).call(this, options));
  3154. }
  3155. _createClass(DebugProtectionFunctionCallNode, [{
  3156. key: "initialize",
  3157. value: function initialize(debugProtectionFunctionName) {
  3158. this.debugProtectionFunctionName = debugProtectionFunctionName;
  3159. }
  3160. }, {
  3161. key: "getNodeStructure",
  3162. value: function getNodeStructure() {
  3163. return NodeUtils_1.NodeUtils.convertCodeToStructure(this.getTemplate());
  3164. }
  3165. }, {
  3166. key: "getTemplate",
  3167. value: function getTemplate() {
  3168. return format(DebufProtectionFunctionCallTemplate_1.DebugProtectionFunctionCallTemplate(), {
  3169. debugProtectionFunctionName: this.debugProtectionFunctionName
  3170. });
  3171. }
  3172. }]);
  3173. return DebugProtectionFunctionCallNode;
  3174. }(AbstractCustomNode_1.AbstractCustomNode);
  3175. tslib_1.__decorate([Initializable_1.initializable(), tslib_1.__metadata("design:type", String)], DebugProtectionFunctionCallNode.prototype, "debugProtectionFunctionName", void 0);
  3176. DebugProtectionFunctionCallNode = tslib_1.__decorate([inversify_1.injectable(), tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)), tslib_1.__metadata("design:paramtypes", [Object])], DebugProtectionFunctionCallNode);
  3177. exports.DebugProtectionFunctionCallNode = DebugProtectionFunctionCallNode;
  3178. /***/ }),
  3179. /* 66 */
  3180. /***/ (function(module, exports, __webpack_require__) {
  3181. "use strict";
  3182. var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
  3183. function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
  3184. function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
  3185. function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
  3186. Object.defineProperty(exports, "__esModule", { value: true });
  3187. var tslib_1 = __webpack_require__(1);
  3188. var inversify_1 = __webpack_require__(0);
  3189. var ServiceIdentifiers_1 = __webpack_require__(2);
  3190. var format = __webpack_require__(13);
  3191. var Initializable_1 = __webpack_require__(5);
  3192. var DebugProtectionFunctionIntervalTemplate_1 = __webpack_require__(128);
  3193. var AbstractCustomNode_1 = __webpack_require__(7);
  3194. var NodeUtils_1 = __webpack_require__(3);
  3195. var DebugProtectionFunctionIntervalNode = function (_AbstractCustomNode_) {
  3196. _inherits(DebugProtectionFunctionIntervalNode, _AbstractCustomNode_);
  3197. function DebugProtectionFunctionIntervalNode(options) {
  3198. _classCallCheck(this, DebugProtectionFunctionIntervalNode);
  3199. return _possibleConstructorReturn(this, (DebugProtectionFunctionIntervalNode.__proto__ || Object.getPrototypeOf(DebugProtectionFunctionIntervalNode)).call(this, options));
  3200. }
  3201. _createClass(DebugProtectionFunctionIntervalNode, [{
  3202. key: "initialize",
  3203. value: function initialize(debugProtectionFunctionName) {
  3204. this.debugProtectionFunctionName = debugProtectionFunctionName;
  3205. }
  3206. }, {
  3207. key: "getNodeStructure",
  3208. value: function getNodeStructure() {
  3209. return NodeUtils_1.NodeUtils.convertCodeToStructure(this.getTemplate());
  3210. }
  3211. }, {
  3212. key: "getTemplate",
  3213. value: function getTemplate() {
  3214. return format(DebugProtectionFunctionIntervalTemplate_1.DebugProtectionFunctionIntervalTemplate(), {
  3215. debugProtectionFunctionName: this.debugProtectionFunctionName
  3216. });
  3217. }
  3218. }]);
  3219. return DebugProtectionFunctionIntervalNode;
  3220. }(AbstractCustomNode_1.AbstractCustomNode);
  3221. tslib_1.__decorate([Initializable_1.initializable(), tslib_1.__metadata("design:type", String)], DebugProtectionFunctionIntervalNode.prototype, "debugProtectionFunctionName", void 0);
  3222. DebugProtectionFunctionIntervalNode = tslib_1.__decorate([inversify_1.injectable(), tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)), tslib_1.__metadata("design:paramtypes", [Object])], DebugProtectionFunctionIntervalNode);
  3223. exports.DebugProtectionFunctionIntervalNode = DebugProtectionFunctionIntervalNode;
  3224. /***/ }),
  3225. /* 67 */
  3226. /***/ (function(module, exports, __webpack_require__) {
  3227. "use strict";
  3228. var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
  3229. function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
  3230. function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
  3231. function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
  3232. Object.defineProperty(exports, "__esModule", { value: true });
  3233. var tslib_1 = __webpack_require__(1);
  3234. var inversify_1 = __webpack_require__(0);
  3235. var ServiceIdentifiers_1 = __webpack_require__(2);
  3236. var format = __webpack_require__(13);
  3237. var Initializable_1 = __webpack_require__(5);
  3238. var DebugProtectionFunctionTemplate_1 = __webpack_require__(129);
  3239. var AbstractCustomNode_1 = __webpack_require__(7);
  3240. var NodeUtils_1 = __webpack_require__(3);
  3241. var DebugProtectionFunctionNode = function (_AbstractCustomNode_) {
  3242. _inherits(DebugProtectionFunctionNode, _AbstractCustomNode_);
  3243. function DebugProtectionFunctionNode(options) {
  3244. _classCallCheck(this, DebugProtectionFunctionNode);
  3245. return _possibleConstructorReturn(this, (DebugProtectionFunctionNode.__proto__ || Object.getPrototypeOf(DebugProtectionFunctionNode)).call(this, options));
  3246. }
  3247. _createClass(DebugProtectionFunctionNode, [{
  3248. key: "initialize",
  3249. value: function initialize(debugProtectionFunctionName) {
  3250. this.debugProtectionFunctionName = debugProtectionFunctionName;
  3251. }
  3252. }, {
  3253. key: "getNodeStructure",
  3254. value: function getNodeStructure() {
  3255. return NodeUtils_1.NodeUtils.convertCodeToStructure(this.getTemplate());
  3256. }
  3257. }, {
  3258. key: "getTemplate",
  3259. value: function getTemplate() {
  3260. return format(DebugProtectionFunctionTemplate_1.DebugProtectionFunctionTemplate(), {
  3261. debugProtectionFunctionName: this.debugProtectionFunctionName
  3262. });
  3263. }
  3264. }]);
  3265. return DebugProtectionFunctionNode;
  3266. }(AbstractCustomNode_1.AbstractCustomNode);
  3267. tslib_1.__decorate([Initializable_1.initializable(), tslib_1.__metadata("design:type", String)], DebugProtectionFunctionNode.prototype, "debugProtectionFunctionName", void 0);
  3268. DebugProtectionFunctionNode = tslib_1.__decorate([inversify_1.injectable(), tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)), tslib_1.__metadata("design:paramtypes", [Object])], DebugProtectionFunctionNode);
  3269. exports.DebugProtectionFunctionNode = DebugProtectionFunctionNode;
  3270. /***/ }),
  3271. /* 68 */
  3272. /***/ (function(module, exports, __webpack_require__) {
  3273. "use strict";
  3274. var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
  3275. function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
  3276. function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
  3277. function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
  3278. Object.defineProperty(exports, "__esModule", { value: true });
  3279. var tslib_1 = __webpack_require__(1);
  3280. var inversify_1 = __webpack_require__(0);
  3281. var ServiceIdentifiers_1 = __webpack_require__(2);
  3282. var Initializable_1 = __webpack_require__(5);
  3283. var CustomNodes_1 = __webpack_require__(10);
  3284. var ObfuscationEvents_1 = __webpack_require__(15);
  3285. var AbstractCustomNodeGroup_1 = __webpack_require__(19);
  3286. var NodeAppender_1 = __webpack_require__(18);
  3287. var RandomGeneratorUtils_1 = __webpack_require__(4);
  3288. var DebugProtectionCustomNodeGroup = function (_AbstractCustomNodeGr) {
  3289. _inherits(DebugProtectionCustomNodeGroup, _AbstractCustomNodeGr);
  3290. function DebugProtectionCustomNodeGroup(customNodeFactory, obfuscationEventEmitter, options) {
  3291. _classCallCheck(this, DebugProtectionCustomNodeGroup);
  3292. var _this = _possibleConstructorReturn(this, (DebugProtectionCustomNodeGroup.__proto__ || Object.getPrototypeOf(DebugProtectionCustomNodeGroup)).call(this, options));
  3293. _this.appendEvent = ObfuscationEvents_1.ObfuscationEvents.BeforeObfuscation;
  3294. _this.customNodeFactory = customNodeFactory;
  3295. _this.obfuscationEventEmitter = obfuscationEventEmitter;
  3296. return _this;
  3297. }
  3298. _createClass(DebugProtectionCustomNodeGroup, [{
  3299. key: "appendCustomNodes",
  3300. value: function appendCustomNodes(blockScopeNode, stackTraceData) {
  3301. this.appendCustomNodeIfExist(CustomNodes_1.CustomNodes.DebugProtectionFunctionNode, function (customNode) {
  3302. NodeAppender_1.NodeAppender.appendNode(blockScopeNode, customNode.getNode());
  3303. });
  3304. this.appendCustomNodeIfExist(CustomNodes_1.CustomNodes.DebugProtectionFunctionCallNode, function (customNode) {
  3305. NodeAppender_1.NodeAppender.appendNode(blockScopeNode, customNode.getNode());
  3306. });
  3307. this.appendCustomNodeIfExist(CustomNodes_1.CustomNodes.DebugProtectionFunctionIntervalNode, function (customNode) {
  3308. var programBodyLength = blockScopeNode.body.length;
  3309. var randomIndex = RandomGeneratorUtils_1.RandomGeneratorUtils.getRandomInteger(0, programBodyLength);
  3310. NodeAppender_1.NodeAppender.insertNodeAtIndex(blockScopeNode, customNode.getNode(), randomIndex);
  3311. });
  3312. }
  3313. }, {
  3314. key: "initialize",
  3315. value: function initialize() {
  3316. this.customNodes = new Map();
  3317. if (!this.options.debugProtection) {
  3318. return;
  3319. }
  3320. var debugProtectionFunctionName = RandomGeneratorUtils_1.RandomGeneratorUtils.getRandomVariableName(6);
  3321. var debugProtectionFunctionNode = this.customNodeFactory(CustomNodes_1.CustomNodes.DebugProtectionFunctionNode);
  3322. var debugProtectionFunctionCallNode = this.customNodeFactory(CustomNodes_1.CustomNodes.DebugProtectionFunctionCallNode);
  3323. var debugProtectionFunctionIntervalNode = this.customNodeFactory(CustomNodes_1.CustomNodes.DebugProtectionFunctionIntervalNode);
  3324. debugProtectionFunctionNode.initialize(debugProtectionFunctionName);
  3325. debugProtectionFunctionCallNode.initialize(debugProtectionFunctionName);
  3326. debugProtectionFunctionIntervalNode.initialize(debugProtectionFunctionName);
  3327. this.customNodes.set(CustomNodes_1.CustomNodes.DebugProtectionFunctionNode, debugProtectionFunctionNode);
  3328. this.customNodes.set(CustomNodes_1.CustomNodes.DebugProtectionFunctionCallNode, debugProtectionFunctionCallNode);
  3329. if (this.options.debugProtectionInterval) {
  3330. this.customNodes.set(CustomNodes_1.CustomNodes.DebugProtectionFunctionIntervalNode, debugProtectionFunctionIntervalNode);
  3331. }
  3332. }
  3333. }]);
  3334. return DebugProtectionCustomNodeGroup;
  3335. }(AbstractCustomNodeGroup_1.AbstractCustomNodeGroup);
  3336. tslib_1.__decorate([Initializable_1.initializable(), tslib_1.__metadata("design:type", Map)], DebugProtectionCustomNodeGroup.prototype, "customNodes", void 0);
  3337. DebugProtectionCustomNodeGroup = tslib_1.__decorate([inversify_1.injectable(), tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__ICustomNode)), tslib_1.__param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IObfuscationEventEmitter)), tslib_1.__param(2, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)), tslib_1.__metadata("design:paramtypes", [Function, Object, Object])], DebugProtectionCustomNodeGroup);
  3338. exports.DebugProtectionCustomNodeGroup = DebugProtectionCustomNodeGroup;
  3339. /***/ }),
  3340. /* 69 */
  3341. /***/ (function(module, exports, __webpack_require__) {
  3342. "use strict";
  3343. var _slicedToArray = (function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; })();
  3344. var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
  3345. function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
  3346. function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
  3347. function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
  3348. Object.defineProperty(exports, "__esModule", { value: true });
  3349. var tslib_1 = __webpack_require__(1);
  3350. var inversify_1 = __webpack_require__(0);
  3351. var ServiceIdentifiers_1 = __webpack_require__(2);
  3352. var format = __webpack_require__(13);
  3353. var Initializable_1 = __webpack_require__(5);
  3354. var DomainLockNodeTemplate_1 = __webpack_require__(130);
  3355. var AbstractCustomNode_1 = __webpack_require__(7);
  3356. var CryptUtils_1 = __webpack_require__(27);
  3357. var NodeUtils_1 = __webpack_require__(3);
  3358. var RandomGeneratorUtils_1 = __webpack_require__(4);
  3359. var DomainLockNode = function (_AbstractCustomNode_) {
  3360. _inherits(DomainLockNode, _AbstractCustomNode_);
  3361. function DomainLockNode(options) {
  3362. _classCallCheck(this, DomainLockNode);
  3363. return _possibleConstructorReturn(this, (DomainLockNode.__proto__ || Object.getPrototypeOf(DomainLockNode)).call(this, options));
  3364. }
  3365. _createClass(DomainLockNode, [{
  3366. key: "initialize",
  3367. value: function initialize(callsControllerFunctionName) {
  3368. this.callsControllerFunctionName = callsControllerFunctionName;
  3369. }
  3370. }, {
  3371. key: "getNodeStructure",
  3372. value: function getNodeStructure() {
  3373. return NodeUtils_1.NodeUtils.convertCodeToStructure(this.getTemplate());
  3374. }
  3375. }, {
  3376. key: "getTemplate",
  3377. value: function getTemplate() {
  3378. var domainsString = this.options.domainLock.join(';');
  3379. var _CryptUtils_1$CryptUt = CryptUtils_1.CryptUtils.hideString(domainsString, domainsString.length * 3),
  3380. _CryptUtils_1$CryptUt2 = _slicedToArray(_CryptUtils_1$CryptUt, 2),
  3381. hiddenDomainsString = _CryptUtils_1$CryptUt2[0],
  3382. diff = _CryptUtils_1$CryptUt2[1];
  3383. return format(DomainLockNodeTemplate_1.DomainLockNodeTemplate(), {
  3384. domainLockFunctionName: RandomGeneratorUtils_1.RandomGeneratorUtils.getRandomVariableName(6),
  3385. diff: diff,
  3386. domains: hiddenDomainsString,
  3387. singleNodeCallControllerFunctionName: this.callsControllerFunctionName
  3388. });
  3389. }
  3390. }]);
  3391. return DomainLockNode;
  3392. }(AbstractCustomNode_1.AbstractCustomNode);
  3393. tslib_1.__decorate([Initializable_1.initializable(), tslib_1.__metadata("design:type", String)], DomainLockNode.prototype, "callsControllerFunctionName", void 0);
  3394. DomainLockNode = tslib_1.__decorate([inversify_1.injectable(), tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)), tslib_1.__metadata("design:paramtypes", [Object])], DomainLockNode);
  3395. exports.DomainLockNode = DomainLockNode;
  3396. /***/ }),
  3397. /* 70 */
  3398. /***/ (function(module, exports, __webpack_require__) {
  3399. "use strict";
  3400. var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
  3401. function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
  3402. function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
  3403. function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
  3404. Object.defineProperty(exports, "__esModule", { value: true });
  3405. var tslib_1 = __webpack_require__(1);
  3406. var inversify_1 = __webpack_require__(0);
  3407. var ServiceIdentifiers_1 = __webpack_require__(2);
  3408. var Initializable_1 = __webpack_require__(5);
  3409. var CustomNodes_1 = __webpack_require__(10);
  3410. var ObfuscationEvents_1 = __webpack_require__(15);
  3411. var AbstractCustomNodeGroup_1 = __webpack_require__(19);
  3412. var NodeAppender_1 = __webpack_require__(18);
  3413. var RandomGeneratorUtils_1 = __webpack_require__(4);
  3414. var DomainLockCustomNodeGroup = function (_AbstractCustomNodeGr) {
  3415. _inherits(DomainLockCustomNodeGroup, _AbstractCustomNodeGr);
  3416. function DomainLockCustomNodeGroup(customNodeFactory, obfuscationEventEmitter, options) {
  3417. _classCallCheck(this, DomainLockCustomNodeGroup);
  3418. var _this = _possibleConstructorReturn(this, (DomainLockCustomNodeGroup.__proto__ || Object.getPrototypeOf(DomainLockCustomNodeGroup)).call(this, options));
  3419. _this.appendEvent = ObfuscationEvents_1.ObfuscationEvents.BeforeObfuscation;
  3420. _this.customNodeFactory = customNodeFactory;
  3421. _this.obfuscationEventEmitter = obfuscationEventEmitter;
  3422. return _this;
  3423. }
  3424. _createClass(DomainLockCustomNodeGroup, [{
  3425. key: "appendCustomNodes",
  3426. value: function appendCustomNodes(blockScopeNode, stackTraceData) {
  3427. var randomStackTraceIndex = NodeAppender_1.NodeAppender.getRandomStackTraceIndex(stackTraceData.length);
  3428. this.appendCustomNodeIfExist(CustomNodes_1.CustomNodes.DomainLockNode, function (customNode) {
  3429. NodeAppender_1.NodeAppender.appendNodeToOptimalBlockScope(stackTraceData, blockScopeNode, customNode.getNode(), randomStackTraceIndex);
  3430. });
  3431. this.appendCustomNodeIfExist(CustomNodes_1.CustomNodes.NodeCallsControllerFunctionNode, function (customNode) {
  3432. var targetBlockScope = void 0;
  3433. if (stackTraceData.length) {
  3434. targetBlockScope = NodeAppender_1.NodeAppender.getOptimalBlockScope(stackTraceData, randomStackTraceIndex, 1);
  3435. } else {
  3436. targetBlockScope = blockScopeNode;
  3437. }
  3438. NodeAppender_1.NodeAppender.prependNode(targetBlockScope, customNode.getNode());
  3439. });
  3440. }
  3441. }, {
  3442. key: "initialize",
  3443. value: function initialize() {
  3444. this.customNodes = new Map();
  3445. if (!this.options.domainLock.length) {
  3446. return;
  3447. }
  3448. var callsControllerFunctionName = RandomGeneratorUtils_1.RandomGeneratorUtils.getRandomVariableName(6);
  3449. var domainLockNode = this.customNodeFactory(CustomNodes_1.CustomNodes.DomainLockNode);
  3450. var nodeCallsControllerFunctionNode = this.customNodeFactory(CustomNodes_1.CustomNodes.NodeCallsControllerFunctionNode);
  3451. domainLockNode.initialize(callsControllerFunctionName);
  3452. nodeCallsControllerFunctionNode.initialize(this.appendEvent, callsControllerFunctionName);
  3453. this.customNodes.set(CustomNodes_1.CustomNodes.DomainLockNode, domainLockNode);
  3454. this.customNodes.set(CustomNodes_1.CustomNodes.NodeCallsControllerFunctionNode, nodeCallsControllerFunctionNode);
  3455. }
  3456. }]);
  3457. return DomainLockCustomNodeGroup;
  3458. }(AbstractCustomNodeGroup_1.AbstractCustomNodeGroup);
  3459. tslib_1.__decorate([Initializable_1.initializable(), tslib_1.__metadata("design:type", Map)], DomainLockCustomNodeGroup.prototype, "customNodes", void 0);
  3460. DomainLockCustomNodeGroup = tslib_1.__decorate([inversify_1.injectable(), tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__ICustomNode)), tslib_1.__param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IObfuscationEventEmitter)), tslib_1.__param(2, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)), tslib_1.__metadata("design:paramtypes", [Function, Object, Object])], DomainLockCustomNodeGroup);
  3461. exports.DomainLockCustomNodeGroup = DomainLockCustomNodeGroup;
  3462. /***/ }),
  3463. /* 71 */
  3464. /***/ (function(module, exports, __webpack_require__) {
  3465. "use strict";
  3466. var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
  3467. function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
  3468. function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
  3469. function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
  3470. Object.defineProperty(exports, "__esModule", { value: true });
  3471. var tslib_1 = __webpack_require__(1);
  3472. var inversify_1 = __webpack_require__(0);
  3473. var ServiceIdentifiers_1 = __webpack_require__(2);
  3474. var format = __webpack_require__(13);
  3475. var ObfuscationEvents_1 = __webpack_require__(15);
  3476. var Initializable_1 = __webpack_require__(5);
  3477. var SingleNodeCallControllerTemplate_1 = __webpack_require__(125);
  3478. var NoCustomNodes_1 = __webpack_require__(22);
  3479. var AbstractCustomNode_1 = __webpack_require__(7);
  3480. var JavaScriptObfuscator_1 = __webpack_require__(17);
  3481. var NodeUtils_1 = __webpack_require__(3);
  3482. var NodeCallsControllerFunctionNode = function (_AbstractCustomNode_) {
  3483. _inherits(NodeCallsControllerFunctionNode, _AbstractCustomNode_);
  3484. function NodeCallsControllerFunctionNode(options) {
  3485. _classCallCheck(this, NodeCallsControllerFunctionNode);
  3486. return _possibleConstructorReturn(this, (NodeCallsControllerFunctionNode.__proto__ || Object.getPrototypeOf(NodeCallsControllerFunctionNode)).call(this, options));
  3487. }
  3488. _createClass(NodeCallsControllerFunctionNode, [{
  3489. key: "initialize",
  3490. value: function initialize(appendEvent, callsControllerFunctionName) {
  3491. this.appendEvent = appendEvent;
  3492. this.callsControllerFunctionName = callsControllerFunctionName;
  3493. }
  3494. }, {
  3495. key: "getNodeStructure",
  3496. value: function getNodeStructure() {
  3497. return NodeUtils_1.NodeUtils.convertCodeToStructure(this.getTemplate());
  3498. }
  3499. }, {
  3500. key: "getTemplate",
  3501. value: function getTemplate() {
  3502. if (this.appendEvent === ObfuscationEvents_1.ObfuscationEvents.AfterObfuscation) {
  3503. return JavaScriptObfuscator_1.JavaScriptObfuscator.obfuscate(format(SingleNodeCallControllerTemplate_1.SingleNodeCallControllerTemplate(), {
  3504. singleNodeCallControllerFunctionName: this.callsControllerFunctionName
  3505. }), Object.assign({}, NoCustomNodes_1.NO_CUSTOM_NODES_PRESET, { seed: this.options.seed })).getObfuscatedCode();
  3506. }
  3507. return format(SingleNodeCallControllerTemplate_1.SingleNodeCallControllerTemplate(), {
  3508. singleNodeCallControllerFunctionName: this.callsControllerFunctionName
  3509. });
  3510. }
  3511. }]);
  3512. return NodeCallsControllerFunctionNode;
  3513. }(AbstractCustomNode_1.AbstractCustomNode);
  3514. tslib_1.__decorate([Initializable_1.initializable(), tslib_1.__metadata("design:type", String)], NodeCallsControllerFunctionNode.prototype, "callsControllerFunctionName", void 0);
  3515. tslib_1.__decorate([Initializable_1.initializable(), tslib_1.__metadata("design:type", String)], NodeCallsControllerFunctionNode.prototype, "appendEvent", void 0);
  3516. NodeCallsControllerFunctionNode = tslib_1.__decorate([inversify_1.injectable(), tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)), tslib_1.__metadata("design:paramtypes", [Object])], NodeCallsControllerFunctionNode);
  3517. exports.NodeCallsControllerFunctionNode = NodeCallsControllerFunctionNode;
  3518. /***/ }),
  3519. /* 72 */
  3520. /***/ (function(module, exports, __webpack_require__) {
  3521. "use strict";
  3522. var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
  3523. function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
  3524. function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
  3525. function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
  3526. Object.defineProperty(exports, "__esModule", { value: true });
  3527. var tslib_1 = __webpack_require__(1);
  3528. var inversify_1 = __webpack_require__(0);
  3529. var ServiceIdentifiers_1 = __webpack_require__(2);
  3530. var format = __webpack_require__(13);
  3531. var Initializable_1 = __webpack_require__(5);
  3532. var NoCustomNodes_1 = __webpack_require__(22);
  3533. var SelfDefendingTemplate_1 = __webpack_require__(131);
  3534. var AbstractCustomNode_1 = __webpack_require__(7);
  3535. var JavaScriptObfuscator_1 = __webpack_require__(17);
  3536. var NodeUtils_1 = __webpack_require__(3);
  3537. var RandomGeneratorUtils_1 = __webpack_require__(4);
  3538. var SelfDefendingUnicodeNode = function (_AbstractCustomNode_) {
  3539. _inherits(SelfDefendingUnicodeNode, _AbstractCustomNode_);
  3540. function SelfDefendingUnicodeNode(options) {
  3541. _classCallCheck(this, SelfDefendingUnicodeNode);
  3542. return _possibleConstructorReturn(this, (SelfDefendingUnicodeNode.__proto__ || Object.getPrototypeOf(SelfDefendingUnicodeNode)).call(this, options));
  3543. }
  3544. _createClass(SelfDefendingUnicodeNode, [{
  3545. key: "initialize",
  3546. value: function initialize(callsControllerFunctionName) {
  3547. this.callsControllerFunctionName = callsControllerFunctionName;
  3548. }
  3549. }, {
  3550. key: "getNodeStructure",
  3551. value: function getNodeStructure() {
  3552. return NodeUtils_1.NodeUtils.convertCodeToStructure(this.getTemplate());
  3553. }
  3554. }, {
  3555. key: "getTemplate",
  3556. value: function getTemplate() {
  3557. return JavaScriptObfuscator_1.JavaScriptObfuscator.obfuscate(format(SelfDefendingTemplate_1.SelfDefendingTemplate(), {
  3558. selfDefendingFunctionName: RandomGeneratorUtils_1.RandomGeneratorUtils.getRandomVariableName(6),
  3559. singleNodeCallControllerFunctionName: this.callsControllerFunctionName
  3560. }), Object.assign({}, NoCustomNodes_1.NO_CUSTOM_NODES_PRESET, { seed: this.options.seed, unicodeEscapeSequence: true })).getObfuscatedCode();
  3561. }
  3562. }]);
  3563. return SelfDefendingUnicodeNode;
  3564. }(AbstractCustomNode_1.AbstractCustomNode);
  3565. tslib_1.__decorate([Initializable_1.initializable(), tslib_1.__metadata("design:type", String)], SelfDefendingUnicodeNode.prototype, "callsControllerFunctionName", void 0);
  3566. SelfDefendingUnicodeNode = tslib_1.__decorate([inversify_1.injectable(), tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)), tslib_1.__metadata("design:paramtypes", [Object])], SelfDefendingUnicodeNode);
  3567. exports.SelfDefendingUnicodeNode = SelfDefendingUnicodeNode;
  3568. /***/ }),
  3569. /* 73 */
  3570. /***/ (function(module, exports, __webpack_require__) {
  3571. "use strict";
  3572. var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
  3573. function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
  3574. function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
  3575. function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
  3576. Object.defineProperty(exports, "__esModule", { value: true });
  3577. var tslib_1 = __webpack_require__(1);
  3578. var inversify_1 = __webpack_require__(0);
  3579. var ServiceIdentifiers_1 = __webpack_require__(2);
  3580. var Initializable_1 = __webpack_require__(5);
  3581. var CustomNodes_1 = __webpack_require__(10);
  3582. var ObfuscationEvents_1 = __webpack_require__(15);
  3583. var AbstractCustomNodeGroup_1 = __webpack_require__(19);
  3584. var NodeAppender_1 = __webpack_require__(18);
  3585. var RandomGeneratorUtils_1 = __webpack_require__(4);
  3586. var SelfDefendingCustomNodeGroup = function (_AbstractCustomNodeGr) {
  3587. _inherits(SelfDefendingCustomNodeGroup, _AbstractCustomNodeGr);
  3588. function SelfDefendingCustomNodeGroup(customNodeFactory, obfuscationEventEmitter, options) {
  3589. _classCallCheck(this, SelfDefendingCustomNodeGroup);
  3590. var _this = _possibleConstructorReturn(this, (SelfDefendingCustomNodeGroup.__proto__ || Object.getPrototypeOf(SelfDefendingCustomNodeGroup)).call(this, options));
  3591. _this.appendEvent = ObfuscationEvents_1.ObfuscationEvents.AfterObfuscation;
  3592. _this.customNodeFactory = customNodeFactory;
  3593. _this.obfuscationEventEmitter = obfuscationEventEmitter;
  3594. return _this;
  3595. }
  3596. _createClass(SelfDefendingCustomNodeGroup, [{
  3597. key: "appendCustomNodes",
  3598. value: function appendCustomNodes(blockScopeNode, stackTraceData) {
  3599. var randomStackTraceIndex = NodeAppender_1.NodeAppender.getRandomStackTraceIndex(stackTraceData.length);
  3600. this.appendCustomNodeIfExist(CustomNodes_1.CustomNodes.SelfDefendingUnicodeNode, function (customNode) {
  3601. NodeAppender_1.NodeAppender.appendNodeToOptimalBlockScope(stackTraceData, blockScopeNode, customNode.getNode(), randomStackTraceIndex);
  3602. });
  3603. this.appendCustomNodeIfExist(CustomNodes_1.CustomNodes.NodeCallsControllerFunctionNode, function (customNode) {
  3604. var targetBlockScope = void 0;
  3605. if (stackTraceData.length) {
  3606. targetBlockScope = NodeAppender_1.NodeAppender.getOptimalBlockScope(stackTraceData, randomStackTraceIndex, 1);
  3607. } else {
  3608. targetBlockScope = blockScopeNode;
  3609. }
  3610. NodeAppender_1.NodeAppender.prependNode(targetBlockScope, customNode.getNode());
  3611. });
  3612. }
  3613. }, {
  3614. key: "initialize",
  3615. value: function initialize() {
  3616. this.customNodes = new Map();
  3617. if (!this.options.selfDefending) {
  3618. return;
  3619. }
  3620. var callsControllerFunctionName = RandomGeneratorUtils_1.RandomGeneratorUtils.getRandomVariableName(6);
  3621. var selfDefendingUnicodeNode = this.customNodeFactory(CustomNodes_1.CustomNodes.SelfDefendingUnicodeNode);
  3622. var nodeCallsControllerFunctionNode = this.customNodeFactory(CustomNodes_1.CustomNodes.NodeCallsControllerFunctionNode);
  3623. selfDefendingUnicodeNode.initialize(callsControllerFunctionName);
  3624. nodeCallsControllerFunctionNode.initialize(this.appendEvent, callsControllerFunctionName);
  3625. this.customNodes.set(CustomNodes_1.CustomNodes.SelfDefendingUnicodeNode, selfDefendingUnicodeNode);
  3626. this.customNodes.set(CustomNodes_1.CustomNodes.NodeCallsControllerFunctionNode, nodeCallsControllerFunctionNode);
  3627. }
  3628. }]);
  3629. return SelfDefendingCustomNodeGroup;
  3630. }(AbstractCustomNodeGroup_1.AbstractCustomNodeGroup);
  3631. tslib_1.__decorate([Initializable_1.initializable(), tslib_1.__metadata("design:type", Map)], SelfDefendingCustomNodeGroup.prototype, "customNodes", void 0);
  3632. SelfDefendingCustomNodeGroup = tslib_1.__decorate([inversify_1.injectable(), tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__ICustomNode)), tslib_1.__param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IObfuscationEventEmitter)), tslib_1.__param(2, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)), tslib_1.__metadata("design:paramtypes", [Function, Object, Object])], SelfDefendingCustomNodeGroup);
  3633. exports.SelfDefendingCustomNodeGroup = SelfDefendingCustomNodeGroup;
  3634. /***/ }),
  3635. /* 74 */
  3636. /***/ (function(module, exports, __webpack_require__) {
  3637. "use strict";
  3638. var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
  3639. function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
  3640. function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
  3641. function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
  3642. Object.defineProperty(exports, "__esModule", { value: true });
  3643. var tslib_1 = __webpack_require__(1);
  3644. var inversify_1 = __webpack_require__(0);
  3645. var ServiceIdentifiers_1 = __webpack_require__(2);
  3646. var format = __webpack_require__(13);
  3647. var StringArrayEncoding_1 = __webpack_require__(23);
  3648. var Initializable_1 = __webpack_require__(5);
  3649. var NoCustomNodes_1 = __webpack_require__(22);
  3650. var AtobTemplate_1 = __webpack_require__(123);
  3651. var Rc4Template_1 = __webpack_require__(124);
  3652. var SelfDefendingTemplate_1 = __webpack_require__(132);
  3653. var StringArrayBase64DecodeNodeTemplate_1 = __webpack_require__(133);
  3654. var StringArrayCallsWrapperTemplate_1 = __webpack_require__(134);
  3655. var StringArrayRC4DecodeNodeTemplate_1 = __webpack_require__(135);
  3656. var AbstractCustomNode_1 = __webpack_require__(7);
  3657. var JavaScriptObfuscator_1 = __webpack_require__(17);
  3658. var NodeUtils_1 = __webpack_require__(3);
  3659. var StringArrayCallsWrapper = function (_AbstractCustomNode_) {
  3660. _inherits(StringArrayCallsWrapper, _AbstractCustomNode_);
  3661. function StringArrayCallsWrapper(options) {
  3662. _classCallCheck(this, StringArrayCallsWrapper);
  3663. return _possibleConstructorReturn(this, (StringArrayCallsWrapper.__proto__ || Object.getPrototypeOf(StringArrayCallsWrapper)).call(this, options));
  3664. }
  3665. _createClass(StringArrayCallsWrapper, [{
  3666. key: "initialize",
  3667. value: function initialize(stringArrayStorage, stringArrayName, stringArrayCallsWrapperName) {
  3668. this.stringArrayStorage = stringArrayStorage;
  3669. this.stringArrayName = stringArrayName;
  3670. this.stringArrayCallsWrapperName = stringArrayCallsWrapperName;
  3671. }
  3672. }, {
  3673. key: "getNodeStructure",
  3674. value: function getNodeStructure() {
  3675. return NodeUtils_1.NodeUtils.convertCodeToStructure(this.getTemplate());
  3676. }
  3677. }, {
  3678. key: "getTemplate",
  3679. value: function getTemplate() {
  3680. var decodeNodeTemplate = this.getDecodeStringArrayTemplate();
  3681. return JavaScriptObfuscator_1.JavaScriptObfuscator.obfuscate(format(StringArrayCallsWrapperTemplate_1.StringArrayCallsWrapperTemplate(), {
  3682. decodeNodeTemplate: decodeNodeTemplate,
  3683. stringArrayCallsWrapperName: this.stringArrayCallsWrapperName,
  3684. stringArrayName: this.stringArrayName
  3685. }), Object.assign({}, NoCustomNodes_1.NO_CUSTOM_NODES_PRESET, { seed: this.options.seed })).getObfuscatedCode();
  3686. }
  3687. }, {
  3688. key: "getDecodeStringArrayTemplate",
  3689. value: function getDecodeStringArrayTemplate() {
  3690. var decodeStringArrayTemplate = '',
  3691. selfDefendingCode = '';
  3692. if (this.options.selfDefending) {
  3693. selfDefendingCode = format(SelfDefendingTemplate_1.SelfDefendingTemplate(), {
  3694. stringArrayCallsWrapperName: this.stringArrayCallsWrapperName,
  3695. stringArrayName: this.stringArrayName
  3696. });
  3697. }
  3698. switch (this.options.stringArrayEncoding) {
  3699. case StringArrayEncoding_1.StringArrayEncoding.rc4:
  3700. decodeStringArrayTemplate = format(StringArrayRC4DecodeNodeTemplate_1.StringArrayRc4DecodeNodeTemplate(), {
  3701. atobPolyfill: AtobTemplate_1.AtobTemplate(),
  3702. rc4Polyfill: Rc4Template_1.Rc4Template(),
  3703. selfDefendingCode: selfDefendingCode,
  3704. stringArrayCallsWrapperName: this.stringArrayCallsWrapperName
  3705. });
  3706. break;
  3707. case StringArrayEncoding_1.StringArrayEncoding.base64:
  3708. decodeStringArrayTemplate = format(StringArrayBase64DecodeNodeTemplate_1.StringArrayBase64DecodeNodeTemplate(), {
  3709. atobPolyfill: AtobTemplate_1.AtobTemplate(),
  3710. selfDefendingCode: selfDefendingCode,
  3711. stringArrayCallsWrapperName: this.stringArrayCallsWrapperName
  3712. });
  3713. break;
  3714. }
  3715. return decodeStringArrayTemplate;
  3716. }
  3717. }]);
  3718. return StringArrayCallsWrapper;
  3719. }(AbstractCustomNode_1.AbstractCustomNode);
  3720. tslib_1.__decorate([Initializable_1.initializable(), tslib_1.__metadata("design:type", Object)], StringArrayCallsWrapper.prototype, "stringArrayStorage", void 0);
  3721. tslib_1.__decorate([Initializable_1.initializable(), tslib_1.__metadata("design:type", String)], StringArrayCallsWrapper.prototype, "stringArrayName", void 0);
  3722. tslib_1.__decorate([Initializable_1.initializable(), tslib_1.__metadata("design:type", String)], StringArrayCallsWrapper.prototype, "stringArrayCallsWrapperName", void 0);
  3723. StringArrayCallsWrapper = tslib_1.__decorate([inversify_1.injectable(), tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)), tslib_1.__metadata("design:paramtypes", [Object])], StringArrayCallsWrapper);
  3724. exports.StringArrayCallsWrapper = StringArrayCallsWrapper;
  3725. /***/ }),
  3726. /* 75 */
  3727. /***/ (function(module, exports, __webpack_require__) {
  3728. "use strict";
  3729. var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
  3730. var _get = (function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } });
  3731. function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
  3732. function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
  3733. function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
  3734. Object.defineProperty(exports, "__esModule", { value: true });
  3735. var tslib_1 = __webpack_require__(1);
  3736. var inversify_1 = __webpack_require__(0);
  3737. var ServiceIdentifiers_1 = __webpack_require__(2);
  3738. var format = __webpack_require__(13);
  3739. var Initializable_1 = __webpack_require__(5);
  3740. var StringArrayTemplate_1 = __webpack_require__(136);
  3741. var AbstractCustomNode_1 = __webpack_require__(7);
  3742. var NodeUtils_1 = __webpack_require__(3);
  3743. var StringArrayNode = function (_AbstractCustomNode_) {
  3744. _inherits(StringArrayNode, _AbstractCustomNode_);
  3745. function StringArrayNode(options) {
  3746. _classCallCheck(this, StringArrayNode);
  3747. return _possibleConstructorReturn(this, (StringArrayNode.__proto__ || Object.getPrototypeOf(StringArrayNode)).call(this, options));
  3748. }
  3749. _createClass(StringArrayNode, [{
  3750. key: "initialize",
  3751. value: function initialize(stringArrayStorage, stringArrayName, stringArrayRotateValue) {
  3752. this.stringArrayStorage = stringArrayStorage;
  3753. this.stringArrayName = stringArrayName;
  3754. this.stringArrayRotateValue = stringArrayRotateValue;
  3755. }
  3756. }, {
  3757. key: "getNode",
  3758. value: function getNode() {
  3759. this.stringArrayStorage.rotateArray(this.stringArrayRotateValue);
  3760. return _get(StringArrayNode.prototype.__proto__ || Object.getPrototypeOf(StringArrayNode.prototype), "getNode", this).call(this);
  3761. }
  3762. }, {
  3763. key: "getNodeStructure",
  3764. value: function getNodeStructure() {
  3765. return NodeUtils_1.NodeUtils.convertCodeToStructure(this.getTemplate());
  3766. }
  3767. }, {
  3768. key: "getTemplate",
  3769. value: function getTemplate() {
  3770. return format(StringArrayTemplate_1.StringArrayTemplate(), {
  3771. stringArrayName: this.stringArrayName,
  3772. stringArray: this.stringArrayStorage.toString()
  3773. });
  3774. }
  3775. }]);
  3776. return StringArrayNode;
  3777. }(AbstractCustomNode_1.AbstractCustomNode);
  3778. tslib_1.__decorate([Initializable_1.initializable(), tslib_1.__metadata("design:type", Object)], StringArrayNode.prototype, "stringArrayStorage", void 0);
  3779. tslib_1.__decorate([Initializable_1.initializable(), tslib_1.__metadata("design:type", String)], StringArrayNode.prototype, "stringArrayName", void 0);
  3780. tslib_1.__decorate([Initializable_1.initializable(), tslib_1.__metadata("design:type", Number)], StringArrayNode.prototype, "stringArrayRotateValue", void 0);
  3781. StringArrayNode = tslib_1.__decorate([inversify_1.injectable(), tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)), tslib_1.__metadata("design:paramtypes", [Object])], StringArrayNode);
  3782. exports.StringArrayNode = StringArrayNode;
  3783. /***/ }),
  3784. /* 76 */
  3785. /***/ (function(module, exports, __webpack_require__) {
  3786. "use strict";
  3787. var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
  3788. function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
  3789. function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
  3790. function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
  3791. Object.defineProperty(exports, "__esModule", { value: true });
  3792. var tslib_1 = __webpack_require__(1);
  3793. var inversify_1 = __webpack_require__(0);
  3794. var ServiceIdentifiers_1 = __webpack_require__(2);
  3795. var format = __webpack_require__(13);
  3796. var Initializable_1 = __webpack_require__(5);
  3797. var NoCustomNodes_1 = __webpack_require__(22);
  3798. var SelfDefendingTemplate_1 = __webpack_require__(137);
  3799. var StringArrayRotateFunctionTemplate_1 = __webpack_require__(138);
  3800. var AbstractCustomNode_1 = __webpack_require__(7);
  3801. var JavaScriptObfuscator_1 = __webpack_require__(17);
  3802. var NodeUtils_1 = __webpack_require__(3);
  3803. var RandomGeneratorUtils_1 = __webpack_require__(4);
  3804. var Utils_1 = __webpack_require__(9);
  3805. var StringArrayRotateFunctionNode = function (_AbstractCustomNode_) {
  3806. _inherits(StringArrayRotateFunctionNode, _AbstractCustomNode_);
  3807. function StringArrayRotateFunctionNode(options) {
  3808. _classCallCheck(this, StringArrayRotateFunctionNode);
  3809. return _possibleConstructorReturn(this, (StringArrayRotateFunctionNode.__proto__ || Object.getPrototypeOf(StringArrayRotateFunctionNode)).call(this, options));
  3810. }
  3811. _createClass(StringArrayRotateFunctionNode, [{
  3812. key: "initialize",
  3813. value: function initialize(stringArrayStorage, stringArrayName, stringArrayRotateValue) {
  3814. this.stringArrayStorage = stringArrayStorage;
  3815. this.stringArrayName = stringArrayName;
  3816. this.stringArrayRotateValue = stringArrayRotateValue;
  3817. }
  3818. }, {
  3819. key: "getNodeStructure",
  3820. value: function getNodeStructure() {
  3821. return NodeUtils_1.NodeUtils.convertCodeToStructure(this.getTemplate());
  3822. }
  3823. }, {
  3824. key: "getTemplate",
  3825. value: function getTemplate() {
  3826. var timesName = RandomGeneratorUtils_1.RandomGeneratorUtils.getRandomVariableName(6);
  3827. var whileFunctionName = RandomGeneratorUtils_1.RandomGeneratorUtils.getRandomVariableName(6);
  3828. var code = '';
  3829. if (this.options.selfDefending) {
  3830. code = format(SelfDefendingTemplate_1.SelfDefendingTemplate(), {
  3831. timesName: timesName,
  3832. whileFunctionName: whileFunctionName
  3833. });
  3834. } else {
  3835. code = whileFunctionName + "(++" + timesName + ")";
  3836. }
  3837. return JavaScriptObfuscator_1.JavaScriptObfuscator.obfuscate(format(StringArrayRotateFunctionTemplate_1.StringArrayRotateFunctionTemplate(), {
  3838. code: code,
  3839. timesName: timesName,
  3840. stringArrayName: this.stringArrayName,
  3841. stringArrayRotateValue: Utils_1.Utils.decToHex(this.stringArrayRotateValue),
  3842. whileFunctionName: whileFunctionName
  3843. }), Object.assign({}, NoCustomNodes_1.NO_CUSTOM_NODES_PRESET, { seed: this.options.seed })).getObfuscatedCode();
  3844. }
  3845. }]);
  3846. return StringArrayRotateFunctionNode;
  3847. }(AbstractCustomNode_1.AbstractCustomNode);
  3848. tslib_1.__decorate([Initializable_1.initializable(), tslib_1.__metadata("design:type", Object)], StringArrayRotateFunctionNode.prototype, "stringArrayStorage", void 0);
  3849. tslib_1.__decorate([Initializable_1.initializable(), tslib_1.__metadata("design:type", String)], StringArrayRotateFunctionNode.prototype, "stringArrayName", void 0);
  3850. tslib_1.__decorate([Initializable_1.initializable(), tslib_1.__metadata("design:type", Number)], StringArrayRotateFunctionNode.prototype, "stringArrayRotateValue", void 0);
  3851. StringArrayRotateFunctionNode = tslib_1.__decorate([inversify_1.injectable(), tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)), tslib_1.__metadata("design:paramtypes", [Object])], StringArrayRotateFunctionNode);
  3852. exports.StringArrayRotateFunctionNode = StringArrayRotateFunctionNode;
  3853. /***/ }),
  3854. /* 77 */
  3855. /***/ (function(module, exports, __webpack_require__) {
  3856. "use strict";
  3857. var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
  3858. function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
  3859. function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
  3860. function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
  3861. Object.defineProperty(exports, "__esModule", { value: true });
  3862. var tslib_1 = __webpack_require__(1);
  3863. var inversify_1 = __webpack_require__(0);
  3864. var ServiceIdentifiers_1 = __webpack_require__(2);
  3865. var Initializable_1 = __webpack_require__(5);
  3866. var CustomNodes_1 = __webpack_require__(10);
  3867. var ObfuscationEvents_1 = __webpack_require__(15);
  3868. var AbstractCustomNodeGroup_1 = __webpack_require__(19);
  3869. var NodeAppender_1 = __webpack_require__(18);
  3870. var RandomGeneratorUtils_1 = __webpack_require__(4);
  3871. var Utils_1 = __webpack_require__(9);
  3872. var StringArrayCustomNodeGroup = function (_AbstractCustomNodeGr) {
  3873. _inherits(StringArrayCustomNodeGroup, _AbstractCustomNodeGr);
  3874. function StringArrayCustomNodeGroup(customNodeFactory, obfuscationEventEmitter, stringArrayStorage, options) {
  3875. _classCallCheck(this, StringArrayCustomNodeGroup);
  3876. var _this = _possibleConstructorReturn(this, (StringArrayCustomNodeGroup.__proto__ || Object.getPrototypeOf(StringArrayCustomNodeGroup)).call(this, options));
  3877. _this.appendEvent = ObfuscationEvents_1.ObfuscationEvents.AfterObfuscation;
  3878. _this.customNodeFactory = customNodeFactory;
  3879. _this.obfuscationEventEmitter = obfuscationEventEmitter;
  3880. _this.stringArrayStorage = stringArrayStorage;
  3881. return _this;
  3882. }
  3883. _createClass(StringArrayCustomNodeGroup, [{
  3884. key: "appendCustomNodes",
  3885. value: function appendCustomNodes(blockScopeNode, stackTraceData) {
  3886. if (!this.stringArrayStorage.getLength()) {
  3887. return;
  3888. }
  3889. this.appendCustomNodeIfExist(CustomNodes_1.CustomNodes.StringArrayNode, function (customNode) {
  3890. NodeAppender_1.NodeAppender.prependNode(blockScopeNode, customNode.getNode());
  3891. });
  3892. this.appendCustomNodeIfExist(CustomNodes_1.CustomNodes.StringArrayCallsWrapper, function (customNode) {
  3893. NodeAppender_1.NodeAppender.insertNodeAtIndex(blockScopeNode, customNode.getNode(), 1);
  3894. });
  3895. this.appendCustomNodeIfExist(CustomNodes_1.CustomNodes.StringArrayRotateFunctionNode, function (customNode) {
  3896. NodeAppender_1.NodeAppender.insertNodeAtIndex(blockScopeNode, customNode.getNode(), 1);
  3897. });
  3898. }
  3899. }, {
  3900. key: "initialize",
  3901. value: function initialize() {
  3902. this.customNodes = new Map();
  3903. if (!this.options.stringArray) {
  3904. return;
  3905. }
  3906. var stringArrayNode = this.customNodeFactory(CustomNodes_1.CustomNodes.StringArrayNode);
  3907. var stringArrayCallsWrapper = this.customNodeFactory(CustomNodes_1.CustomNodes.StringArrayCallsWrapper);
  3908. var stringArrayRotateFunctionNode = this.customNodeFactory(CustomNodes_1.CustomNodes.StringArrayRotateFunctionNode);
  3909. var stringArrayStorageId = this.stringArrayStorage.getStorageId();
  3910. var stringArrayName = "_" + Utils_1.Utils.hexadecimalPrefix + stringArrayStorageId;
  3911. var stringArrayCallsWrapperName = "_" + Utils_1.Utils.hexadecimalPrefix + Utils_1.Utils.stringRotate(stringArrayStorageId, 1);
  3912. var stringArrayRotateValue = void 0;
  3913. if (this.options.rotateStringArray) {
  3914. stringArrayRotateValue = RandomGeneratorUtils_1.RandomGeneratorUtils.getRandomInteger(100, 500);
  3915. } else {
  3916. stringArrayRotateValue = 0;
  3917. }
  3918. stringArrayNode.initialize(this.stringArrayStorage, stringArrayName, stringArrayRotateValue);
  3919. stringArrayCallsWrapper.initialize(this.stringArrayStorage, stringArrayName, stringArrayCallsWrapperName);
  3920. stringArrayRotateFunctionNode.initialize(this.stringArrayStorage, stringArrayName, stringArrayRotateValue);
  3921. this.customNodes.set(CustomNodes_1.CustomNodes.StringArrayNode, stringArrayNode);
  3922. this.customNodes.set(CustomNodes_1.CustomNodes.StringArrayCallsWrapper, stringArrayCallsWrapper);
  3923. if (this.options.rotateStringArray) {
  3924. this.customNodes.set(CustomNodes_1.CustomNodes.StringArrayRotateFunctionNode, stringArrayRotateFunctionNode);
  3925. }
  3926. }
  3927. }]);
  3928. return StringArrayCustomNodeGroup;
  3929. }(AbstractCustomNodeGroup_1.AbstractCustomNodeGroup);
  3930. tslib_1.__decorate([Initializable_1.initializable(), tslib_1.__metadata("design:type", Map)], StringArrayCustomNodeGroup.prototype, "customNodes", void 0);
  3931. tslib_1.__decorate([Initializable_1.initializable(), tslib_1.__metadata("design:type", Object)], StringArrayCustomNodeGroup.prototype, "stringArrayStorage", void 0);
  3932. StringArrayCustomNodeGroup = tslib_1.__decorate([inversify_1.injectable(), tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__ICustomNode)), tslib_1.__param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IObfuscationEventEmitter)), tslib_1.__param(2, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.TStringArrayStorage)), tslib_1.__param(3, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)), tslib_1.__metadata("design:paramtypes", [Function, Object, Object, Object])], StringArrayCustomNodeGroup);
  3933. exports.StringArrayCustomNodeGroup = StringArrayCustomNodeGroup;
  3934. /***/ }),
  3935. /* 78 */
  3936. /***/ (function(module, exports, __webpack_require__) {
  3937. "use strict";
  3938. Object.defineProperty(exports, "__esModule", { value: true });
  3939. exports.JSFuck = {
  3940. False: '![]',
  3941. True: '!![]',
  3942. a: '(false+"")[1]',
  3943. b: '([]["entries"]()+"")[2]',
  3944. c: '([]["fill"]+"")[3]',
  3945. d: '(undefined+"")[2]',
  3946. e: '(true+"")[3]',
  3947. f: '(false+"")[0]',
  3948. g: '(false+[0]+String)[20]',
  3949. h: '(+(101))["toString"](21)[1]',
  3950. i: '([false]+undefined)[10]',
  3951. j: '([]["entries"]()+"")[3]',
  3952. k: '(+(20))["toString"](21)',
  3953. l: '(false+"")[2]',
  3954. m: '(Number+"")[11]',
  3955. n: '(undefined+"")[1]',
  3956. o: '(true+[]["fill"])[10]',
  3957. p: '(+(211))["toString"](31)[1]',
  3958. q: '(+(212))["toString"](31)[1]',
  3959. r: '(true+"")[1]',
  3960. s: '(false+"")[3]',
  3961. t: '(true+"")[0]',
  3962. u: '(undefined+"")[0]',
  3963. v: '(+(31))["toString"](32)',
  3964. w: '(+(32))["toString"](33)',
  3965. x: '(+(101))["toString"](34)[1]',
  3966. y: '(NaN+[Infinity])[10]',
  3967. z: '(+(35))["toString"](36)',
  3968. A: '(+[]+Array)[10]',
  3969. B: '(+[]+Boolean)[10]',
  3970. C: 'Function("return escape")()(("")["italics"]())[2]',
  3971. D: 'Function("return escape")()([]["fill"])["slice"]("-1")',
  3972. E: '(RegExp+"")[12]',
  3973. F: '(+[]+Function)[10]',
  3974. G: '(false+Function("return Date")()())[30]',
  3975. H: "'H'",
  3976. I: '(Infinity+"")[0]',
  3977. J: "'J'",
  3978. K: "'K'",
  3979. L: "'L'",
  3980. M: '(true+Function("return Date")()())[30]',
  3981. N: '(NaN+"")[0]',
  3982. O: '(NaN+Function("return{}")())[11]',
  3983. P: "'P'",
  3984. Q: "'Q'",
  3985. R: '(+[]+RegExp)[10]',
  3986. S: '(+[]+String)[10]',
  3987. T: '(NaN+Function("return Date")()())[30]',
  3988. U: '(NaN+Function("return{}")()["toString"]["call"]())[11]',
  3989. V: "'V'",
  3990. W: "'W'",
  3991. X: "'X'",
  3992. Y: "'Y'",
  3993. Z: "'Z'"
  3994. };
  3995. /***/ }),
  3996. /* 79 */
  3997. /***/ (function(module, exports, __webpack_require__) {
  3998. "use strict";
  3999. Object.defineProperty(exports, "__esModule", { value: true });
  4000. var Utils_1 = __webpack_require__(9);
  4001. exports.VisitorDirection = Utils_1.Utils.strEnumify({
  4002. enter: 'enter',
  4003. leave: 'leave'
  4004. });
  4005. /***/ }),
  4006. /* 80 */
  4007. /***/ (function(module, exports, __webpack_require__) {
  4008. "use strict";
  4009. function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
  4010. function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
  4011. function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
  4012. Object.defineProperty(exports, "__esModule", { value: true });
  4013. var tslib_1 = __webpack_require__(1);
  4014. var inversify_1 = __webpack_require__(0);
  4015. var events_1 = __webpack_require__(143);
  4016. inversify_1.decorate(inversify_1.injectable(), events_1.EventEmitter);
  4017. var ObfuscationEventEmitter = function (_events_1$EventEmitte) {
  4018. _inherits(ObfuscationEventEmitter, _events_1$EventEmitte);
  4019. function ObfuscationEventEmitter() {
  4020. _classCallCheck(this, ObfuscationEventEmitter);
  4021. return _possibleConstructorReturn(this, (ObfuscationEventEmitter.__proto__ || Object.getPrototypeOf(ObfuscationEventEmitter)).apply(this, arguments));
  4022. }
  4023. return ObfuscationEventEmitter;
  4024. }(events_1.EventEmitter);
  4025. ObfuscationEventEmitter = tslib_1.__decorate([inversify_1.injectable()], ObfuscationEventEmitter);
  4026. exports.ObfuscationEventEmitter = ObfuscationEventEmitter;
  4027. /***/ }),
  4028. /* 81 */
  4029. /***/ (function(module, exports, __webpack_require__) {
  4030. "use strict";
  4031. var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
  4032. function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
  4033. function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
  4034. function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
  4035. Object.defineProperty(exports, "__esModule", { value: true });
  4036. var tslib_1 = __webpack_require__(1);
  4037. var inversify_1 = __webpack_require__(0);
  4038. var ServiceIdentifiers_1 = __webpack_require__(2);
  4039. var CustomNodes_1 = __webpack_require__(10);
  4040. var AbstractNodeTransformer_1 = __webpack_require__(11);
  4041. var Node_1 = __webpack_require__(6);
  4042. var RandomGeneratorUtils_1 = __webpack_require__(4);
  4043. var Utils_1 = __webpack_require__(9);
  4044. var BlockStatementControlFlowTransformer = BlockStatementControlFlowTransformer_1 = function (_AbstractNodeTransfor) {
  4045. _inherits(BlockStatementControlFlowTransformer, _AbstractNodeTransfor);
  4046. function BlockStatementControlFlowTransformer(customNodeFactory, options) {
  4047. _classCallCheck(this, BlockStatementControlFlowTransformer);
  4048. var _this = _possibleConstructorReturn(this, (BlockStatementControlFlowTransformer.__proto__ || Object.getPrototypeOf(BlockStatementControlFlowTransformer)).call(this, options));
  4049. _this.customNodeFactory = customNodeFactory;
  4050. return _this;
  4051. }
  4052. _createClass(BlockStatementControlFlowTransformer, [{
  4053. key: "getVisitor",
  4054. value: function getVisitor() {
  4055. var _this2 = this;
  4056. return {
  4057. leave: function leave(node, parentNode) {
  4058. if (Node_1.Node.isBlockStatementNode(node)) {
  4059. return _this2.transformNode(node, parentNode);
  4060. }
  4061. }
  4062. };
  4063. }
  4064. }, {
  4065. key: "transformNode",
  4066. value: function transformNode(blockStatementNode, parentNode) {
  4067. if (RandomGeneratorUtils_1.RandomGeneratorUtils.getMathRandom() > this.options.controlFlowFlatteningThreshold || BlockStatementControlFlowTransformer_1.blockStatementHasProhibitedStatements(blockStatementNode)) {
  4068. return blockStatementNode;
  4069. }
  4070. var blockStatementBody = blockStatementNode.body;
  4071. if (blockStatementBody.length <= 4) {
  4072. return blockStatementNode;
  4073. }
  4074. var originalKeys = Utils_1.Utils.arrayRange(blockStatementBody.length);
  4075. var shuffledKeys = Utils_1.Utils.arrayShuffle(originalKeys);
  4076. var originalKeysIndexesInShuffledArray = originalKeys.map(function (key) {
  4077. return shuffledKeys.indexOf(key);
  4078. });
  4079. var blockStatementControlFlowFlatteningCustomNode = this.customNodeFactory(CustomNodes_1.CustomNodes.BlockStatementControlFlowFlatteningNode);
  4080. blockStatementControlFlowFlatteningCustomNode.initialize(blockStatementBody, shuffledKeys, originalKeysIndexesInShuffledArray);
  4081. return blockStatementControlFlowFlatteningCustomNode.getNode()[0];
  4082. }
  4083. }], [{
  4084. key: "blockStatementHasProhibitedStatements",
  4085. value: function blockStatementHasProhibitedStatements(blockStatementNode) {
  4086. return blockStatementNode.body.some(function (statement) {
  4087. var isBreakOrContinueStatement = Node_1.Node.isBreakStatementNode(statement) || Node_1.Node.isContinueStatementNode(statement);
  4088. var isVariableDeclarationWithLetOrConstKind = Node_1.Node.isVariableDeclarationNode(statement) && (statement.kind === 'const' || statement.kind === 'let');
  4089. return Node_1.Node.isFunctionDeclarationNode(statement) || isBreakOrContinueStatement || isVariableDeclarationWithLetOrConstKind;
  4090. });
  4091. }
  4092. }]);
  4093. return BlockStatementControlFlowTransformer;
  4094. }(AbstractNodeTransformer_1.AbstractNodeTransformer);
  4095. BlockStatementControlFlowTransformer = BlockStatementControlFlowTransformer_1 = tslib_1.__decorate([inversify_1.injectable(), tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__ICustomNode)), tslib_1.__param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)), tslib_1.__metadata("design:paramtypes", [Function, Object])], BlockStatementControlFlowTransformer);
  4096. exports.BlockStatementControlFlowTransformer = BlockStatementControlFlowTransformer;
  4097. var BlockStatementControlFlowTransformer_1;
  4098. /***/ }),
  4099. /* 82 */
  4100. /***/ (function(module, exports, __webpack_require__) {
  4101. "use strict";
  4102. var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
  4103. function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
  4104. function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
  4105. function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
  4106. Object.defineProperty(exports, "__esModule", { value: true });
  4107. var tslib_1 = __webpack_require__(1);
  4108. var inversify_1 = __webpack_require__(0);
  4109. var ServiceIdentifiers_1 = __webpack_require__(2);
  4110. var estraverse = __webpack_require__(12);
  4111. var CustomNodes_1 = __webpack_require__(10);
  4112. var NodeType_1 = __webpack_require__(14);
  4113. var AbstractNodeTransformer_1 = __webpack_require__(11);
  4114. var Node_1 = __webpack_require__(6);
  4115. var NodeAppender_1 = __webpack_require__(18);
  4116. var ControlFlowReplacers_1 = __webpack_require__(30);
  4117. var NodeUtils_1 = __webpack_require__(3);
  4118. var RandomGeneratorUtils_1 = __webpack_require__(4);
  4119. var FunctionControlFlowTransformer = FunctionControlFlowTransformer_1 = function (_AbstractNodeTransfor) {
  4120. _inherits(FunctionControlFlowTransformer, _AbstractNodeTransfor);
  4121. function FunctionControlFlowTransformer(controlFlowStorageFactory, controlFlowReplacerFactory, customNodeFactory, options) {
  4122. _classCallCheck(this, FunctionControlFlowTransformer);
  4123. var _this = _possibleConstructorReturn(this, (FunctionControlFlowTransformer.__proto__ || Object.getPrototypeOf(FunctionControlFlowTransformer)).call(this, options));
  4124. _this.controlFlowData = new Map();
  4125. _this.visitedFunctionNodes = new Set();
  4126. _this.hostNodesWithControlFlowNode = new Set();
  4127. _this.controlFlowStorageFactory = controlFlowStorageFactory;
  4128. _this.controlFlowReplacerFactory = controlFlowReplacerFactory;
  4129. _this.customNodeFactory = customNodeFactory;
  4130. return _this;
  4131. }
  4132. _createClass(FunctionControlFlowTransformer, [{
  4133. key: "getVisitor",
  4134. value: function getVisitor() {
  4135. var _this2 = this;
  4136. return {
  4137. leave: function leave(node, parentNode) {
  4138. if (Node_1.Node.isFunctionDeclarationNode(node) || Node_1.Node.isFunctionExpressionNode(node) || Node_1.Node.isArrowFunctionExpressionNode(node)) {
  4139. return _this2.transformNode(node, parentNode);
  4140. }
  4141. }
  4142. };
  4143. }
  4144. }, {
  4145. key: "transformNode",
  4146. value: function transformNode(functionNode, parentNode) {
  4147. this.visitedFunctionNodes.add(functionNode);
  4148. if (!Node_1.Node.isBlockStatementNode(functionNode.body)) {
  4149. return functionNode;
  4150. }
  4151. var hostNode = FunctionControlFlowTransformer_1.getHostNode(functionNode.body);
  4152. var controlFlowStorage = this.getControlFlowStorage(hostNode);
  4153. this.controlFlowData.set(hostNode, controlFlowStorage);
  4154. this.transformFunctionBody(functionNode.body, controlFlowStorage);
  4155. if (!controlFlowStorage.getLength()) {
  4156. return functionNode;
  4157. }
  4158. var controlFlowStorageCustomNode = this.customNodeFactory(CustomNodes_1.CustomNodes.ControlFlowStorageNode);
  4159. controlFlowStorageCustomNode.initialize(controlFlowStorage);
  4160. NodeAppender_1.NodeAppender.prependNode(hostNode, controlFlowStorageCustomNode.getNode());
  4161. this.hostNodesWithControlFlowNode.add(hostNode);
  4162. return functionNode;
  4163. }
  4164. }, {
  4165. key: "getControlFlowStorage",
  4166. value: function getControlFlowStorage(hostNode) {
  4167. var controlFlowStorage = this.controlFlowStorageFactory();
  4168. if (this.controlFlowData.has(hostNode)) {
  4169. if (this.hostNodesWithControlFlowNode.has(hostNode)) {
  4170. hostNode.body.shift();
  4171. }
  4172. var hostControlFlowStorage = this.controlFlowData.get(hostNode);
  4173. controlFlowStorage.mergeWith(hostControlFlowStorage, true);
  4174. }
  4175. return controlFlowStorage;
  4176. }
  4177. }, {
  4178. key: "isVisitedFunctionNode",
  4179. value: function isVisitedFunctionNode(node) {
  4180. return (Node_1.Node.isFunctionDeclarationNode(node) || Node_1.Node.isFunctionExpressionNode(node) || Node_1.Node.isArrowFunctionExpressionNode(node)) && this.visitedFunctionNodes.has(node);
  4181. }
  4182. }, {
  4183. key: "transformFunctionBody",
  4184. value: function transformFunctionBody(functionNodeBody, controlFlowStorage) {
  4185. var _this3 = this;
  4186. estraverse.replace(functionNodeBody, {
  4187. enter: function enter(node, parentNode) {
  4188. if (_this3.isVisitedFunctionNode(node)) {
  4189. return estraverse.VisitorOption.Skip;
  4190. }
  4191. if (!FunctionControlFlowTransformer_1.controlFlowReplacersMap.has(node.type)) {
  4192. return node;
  4193. }
  4194. if (RandomGeneratorUtils_1.RandomGeneratorUtils.getMathRandom() > _this3.options.controlFlowFlatteningThreshold) {
  4195. return node;
  4196. }
  4197. var controlFlowReplacerName = FunctionControlFlowTransformer_1.controlFlowReplacersMap.get(node.type);
  4198. if (controlFlowReplacerName === undefined) {
  4199. return node;
  4200. }
  4201. return Object.assign({}, _this3.controlFlowReplacerFactory(controlFlowReplacerName).replace(node, parentNode, controlFlowStorage), { parentNode: parentNode });
  4202. }
  4203. });
  4204. }
  4205. }], [{
  4206. key: "getHostNode",
  4207. value: function getHostNode(functionNodeBody) {
  4208. var blockScopesOfNode = NodeUtils_1.NodeUtils.getBlockScopesOfNode(functionNodeBody);
  4209. if (blockScopesOfNode.length === 1) {
  4210. return functionNodeBody;
  4211. } else {
  4212. blockScopesOfNode.pop();
  4213. }
  4214. if (blockScopesOfNode.length > FunctionControlFlowTransformer_1.hostNodeSearchMinDepth) {
  4215. blockScopesOfNode.splice(0, FunctionControlFlowTransformer_1.hostNodeSearchMinDepth);
  4216. }
  4217. if (blockScopesOfNode.length > FunctionControlFlowTransformer_1.hostNodeSearchMaxDepth) {
  4218. blockScopesOfNode.length = FunctionControlFlowTransformer_1.hostNodeSearchMaxDepth;
  4219. }
  4220. return RandomGeneratorUtils_1.RandomGeneratorUtils.getRandomGenerator().pickone(blockScopesOfNode);
  4221. }
  4222. }]);
  4223. return FunctionControlFlowTransformer;
  4224. }(AbstractNodeTransformer_1.AbstractNodeTransformer);
  4225. FunctionControlFlowTransformer.controlFlowReplacersMap = new Map([[NodeType_1.NodeType.BinaryExpression, ControlFlowReplacers_1.ControlFlowReplacers.BinaryExpressionControlFlowReplacer], [NodeType_1.NodeType.CallExpression, ControlFlowReplacers_1.ControlFlowReplacers.CallExpressionControlFlowReplacer], [NodeType_1.NodeType.LogicalExpression, ControlFlowReplacers_1.ControlFlowReplacers.LogicalExpressionControlFlowReplacer], [NodeType_1.NodeType.Literal, ControlFlowReplacers_1.ControlFlowReplacers.StringLiteralControlFlowReplacer]]);
  4226. FunctionControlFlowTransformer.hostNodeSearchMinDepth = 0;
  4227. FunctionControlFlowTransformer.hostNodeSearchMaxDepth = 2;
  4228. FunctionControlFlowTransformer = FunctionControlFlowTransformer_1 = tslib_1.__decorate([inversify_1.injectable(), tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__TControlFlowStorage)), tslib_1.__param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__IControlFlowReplacer)), tslib_1.__param(2, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__ICustomNode)), tslib_1.__param(3, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)), tslib_1.__metadata("design:paramtypes", [Function, Function, Function, Object])], FunctionControlFlowTransformer);
  4229. exports.FunctionControlFlowTransformer = FunctionControlFlowTransformer;
  4230. var FunctionControlFlowTransformer_1;
  4231. /***/ }),
  4232. /* 83 */
  4233. /***/ (function(module, exports, __webpack_require__) {
  4234. "use strict";
  4235. var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
  4236. function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
  4237. function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
  4238. function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
  4239. Object.defineProperty(exports, "__esModule", { value: true });
  4240. var tslib_1 = __webpack_require__(1);
  4241. var inversify_1 = __webpack_require__(0);
  4242. var ServiceIdentifiers_1 = __webpack_require__(2);
  4243. var CustomNodes_1 = __webpack_require__(10);
  4244. var ExpressionWithOperatorControlFlowReplacer_1 = __webpack_require__(33);
  4245. var BinaryExpressionControlFlowReplacer = BinaryExpressionControlFlowReplacer_1 = function (_ExpressionWithOperat) {
  4246. _inherits(BinaryExpressionControlFlowReplacer, _ExpressionWithOperat);
  4247. function BinaryExpressionControlFlowReplacer(customNodeFactory, options) {
  4248. _classCallCheck(this, BinaryExpressionControlFlowReplacer);
  4249. return _possibleConstructorReturn(this, (BinaryExpressionControlFlowReplacer.__proto__ || Object.getPrototypeOf(BinaryExpressionControlFlowReplacer)).call(this, customNodeFactory, options));
  4250. }
  4251. _createClass(BinaryExpressionControlFlowReplacer, [{
  4252. key: "replace",
  4253. value: function replace(binaryExpressionNode, parentNode, controlFlowStorage) {
  4254. var replacerId = binaryExpressionNode.operator;
  4255. var binaryExpressionFunctionCustomNode = this.customNodeFactory(CustomNodes_1.CustomNodes.BinaryExpressionFunctionNode);
  4256. binaryExpressionFunctionCustomNode.initialize(replacerId);
  4257. var storageKey = this.insertCustomNodeToControlFlowStorage(binaryExpressionFunctionCustomNode, controlFlowStorage, replacerId, BinaryExpressionControlFlowReplacer_1.usingExistingIdentifierChance);
  4258. return this.getControlFlowStorageCallNode(controlFlowStorage.getStorageId(), storageKey, binaryExpressionNode.left, binaryExpressionNode.right);
  4259. }
  4260. }]);
  4261. return BinaryExpressionControlFlowReplacer;
  4262. }(ExpressionWithOperatorControlFlowReplacer_1.ExpressionWithOperatorControlFlowReplacer);
  4263. BinaryExpressionControlFlowReplacer.usingExistingIdentifierChance = 0.5;
  4264. BinaryExpressionControlFlowReplacer = BinaryExpressionControlFlowReplacer_1 = tslib_1.__decorate([inversify_1.injectable(), tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__ICustomNode)), tslib_1.__param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)), tslib_1.__metadata("design:paramtypes", [Function, Object])], BinaryExpressionControlFlowReplacer);
  4265. exports.BinaryExpressionControlFlowReplacer = BinaryExpressionControlFlowReplacer;
  4266. var BinaryExpressionControlFlowReplacer_1;
  4267. /***/ }),
  4268. /* 84 */
  4269. /***/ (function(module, exports, __webpack_require__) {
  4270. "use strict";
  4271. var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
  4272. function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
  4273. function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
  4274. function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
  4275. Object.defineProperty(exports, "__esModule", { value: true });
  4276. var tslib_1 = __webpack_require__(1);
  4277. var inversify_1 = __webpack_require__(0);
  4278. var ServiceIdentifiers_1 = __webpack_require__(2);
  4279. var CustomNodes_1 = __webpack_require__(10);
  4280. var AbstractControlFlowReplacer_1 = __webpack_require__(24);
  4281. var Node_1 = __webpack_require__(6);
  4282. var CallExpressionControlFlowReplacer = CallExpressionControlFlowReplacer_1 = function (_AbstractControlFlowR) {
  4283. _inherits(CallExpressionControlFlowReplacer, _AbstractControlFlowR);
  4284. function CallExpressionControlFlowReplacer(customNodeFactory, options) {
  4285. _classCallCheck(this, CallExpressionControlFlowReplacer);
  4286. return _possibleConstructorReturn(this, (CallExpressionControlFlowReplacer.__proto__ || Object.getPrototypeOf(CallExpressionControlFlowReplacer)).call(this, customNodeFactory, options));
  4287. }
  4288. _createClass(CallExpressionControlFlowReplacer, [{
  4289. key: "replace",
  4290. value: function replace(callExpressionNode, parentNode, controlFlowStorage) {
  4291. var callee = callExpressionNode.callee;
  4292. if (!Node_1.Node.isIdentifierNode(callee)) {
  4293. return callExpressionNode;
  4294. }
  4295. var replacerId = String(callExpressionNode.arguments.length);
  4296. var callExpressionFunctionCustomNode = this.customNodeFactory(CustomNodes_1.CustomNodes.CallExpressionFunctionNode);
  4297. var expressionArguments = callExpressionNode.arguments;
  4298. callExpressionFunctionCustomNode.initialize(expressionArguments);
  4299. var storageKey = this.insertCustomNodeToControlFlowStorage(callExpressionFunctionCustomNode, controlFlowStorage, replacerId, CallExpressionControlFlowReplacer_1.usingExistingIdentifierChance);
  4300. return this.getControlFlowStorageCallNode(controlFlowStorage.getStorageId(), storageKey, callee, expressionArguments);
  4301. }
  4302. }, {
  4303. key: "getControlFlowStorageCallNode",
  4304. value: function getControlFlowStorageCallNode(controlFlowStorageId, storageKey, callee, expressionArguments) {
  4305. var controlFlowStorageCallCustomNode = this.customNodeFactory(CustomNodes_1.CustomNodes.CallExpressionControlFlowStorageCallNode);
  4306. controlFlowStorageCallCustomNode.initialize(controlFlowStorageId, storageKey, callee, expressionArguments);
  4307. var statementNode = controlFlowStorageCallCustomNode.getNode()[0];
  4308. if (!statementNode || !Node_1.Node.isExpressionStatementNode(statementNode)) {
  4309. throw new Error("`controlFlowStorageCallCustomNode.getNode()[0]` should returns array with `ExpressionStatement` node");
  4310. }
  4311. return statementNode.expression;
  4312. }
  4313. }]);
  4314. return CallExpressionControlFlowReplacer;
  4315. }(AbstractControlFlowReplacer_1.AbstractControlFlowReplacer);
  4316. CallExpressionControlFlowReplacer.usingExistingIdentifierChance = 0.5;
  4317. CallExpressionControlFlowReplacer = CallExpressionControlFlowReplacer_1 = tslib_1.__decorate([inversify_1.injectable(), tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__ICustomNode)), tslib_1.__param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)), tslib_1.__metadata("design:paramtypes", [Function, Object])], CallExpressionControlFlowReplacer);
  4318. exports.CallExpressionControlFlowReplacer = CallExpressionControlFlowReplacer;
  4319. var CallExpressionControlFlowReplacer_1;
  4320. /***/ }),
  4321. /* 85 */
  4322. /***/ (function(module, exports, __webpack_require__) {
  4323. "use strict";
  4324. var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
  4325. function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
  4326. function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
  4327. function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
  4328. Object.defineProperty(exports, "__esModule", { value: true });
  4329. var tslib_1 = __webpack_require__(1);
  4330. var inversify_1 = __webpack_require__(0);
  4331. var ServiceIdentifiers_1 = __webpack_require__(2);
  4332. var CustomNodes_1 = __webpack_require__(10);
  4333. var ExpressionWithOperatorControlFlowReplacer_1 = __webpack_require__(33);
  4334. var Node_1 = __webpack_require__(6);
  4335. var NodeUtils_1 = __webpack_require__(3);
  4336. var LogicalExpressionControlFlowReplacer = LogicalExpressionControlFlowReplacer_1 = function (_ExpressionWithOperat) {
  4337. _inherits(LogicalExpressionControlFlowReplacer, _ExpressionWithOperat);
  4338. function LogicalExpressionControlFlowReplacer(customNodeFactory, options) {
  4339. _classCallCheck(this, LogicalExpressionControlFlowReplacer);
  4340. return _possibleConstructorReturn(this, (LogicalExpressionControlFlowReplacer.__proto__ || Object.getPrototypeOf(LogicalExpressionControlFlowReplacer)).call(this, customNodeFactory, options));
  4341. }
  4342. _createClass(LogicalExpressionControlFlowReplacer, [{
  4343. key: "replace",
  4344. value: function replace(logicalExpressionNode, parentNode, controlFlowStorage) {
  4345. if (this.checkForProhibitedExpressions(logicalExpressionNode.left, logicalExpressionNode.right)) {
  4346. return logicalExpressionNode;
  4347. }
  4348. var replacerId = logicalExpressionNode.operator;
  4349. var logicalExpressionFunctionCustomNode = this.customNodeFactory(CustomNodes_1.CustomNodes.LogicalExpressionFunctionNode);
  4350. logicalExpressionFunctionCustomNode.initialize(replacerId);
  4351. var storageKey = this.insertCustomNodeToControlFlowStorage(logicalExpressionFunctionCustomNode, controlFlowStorage, replacerId, LogicalExpressionControlFlowReplacer_1.usingExistingIdentifierChance);
  4352. return this.getControlFlowStorageCallNode(controlFlowStorage.getStorageId(), storageKey, logicalExpressionNode.left, logicalExpressionNode.right);
  4353. }
  4354. }, {
  4355. key: "checkForProhibitedExpressions",
  4356. value: function checkForProhibitedExpressions(leftExpression, rightExpression) {
  4357. return [leftExpression, rightExpression].some(function (expressionNode) {
  4358. var nodeForCheck = void 0;
  4359. if (!Node_1.Node.isUnaryExpressionNode(expressionNode)) {
  4360. nodeForCheck = expressionNode;
  4361. } else {
  4362. nodeForCheck = NodeUtils_1.NodeUtils.getUnaryExpressionArgumentNode(expressionNode);
  4363. }
  4364. return !Node_1.Node.isLiteralNode(nodeForCheck) && !Node_1.Node.isIdentifierNode(nodeForCheck) && !Node_1.Node.isObjectExpressionNode(nodeForCheck) && !Node_1.Node.isExpressionStatementNode(nodeForCheck);
  4365. });
  4366. }
  4367. }]);
  4368. return LogicalExpressionControlFlowReplacer;
  4369. }(ExpressionWithOperatorControlFlowReplacer_1.ExpressionWithOperatorControlFlowReplacer);
  4370. LogicalExpressionControlFlowReplacer.usingExistingIdentifierChance = 0.5;
  4371. LogicalExpressionControlFlowReplacer = LogicalExpressionControlFlowReplacer_1 = tslib_1.__decorate([inversify_1.injectable(), tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__ICustomNode)), tslib_1.__param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)), tslib_1.__metadata("design:paramtypes", [Function, Object])], LogicalExpressionControlFlowReplacer);
  4372. exports.LogicalExpressionControlFlowReplacer = LogicalExpressionControlFlowReplacer;
  4373. var LogicalExpressionControlFlowReplacer_1;
  4374. /***/ }),
  4375. /* 86 */
  4376. /***/ (function(module, exports, __webpack_require__) {
  4377. "use strict";
  4378. var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
  4379. function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
  4380. function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
  4381. function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
  4382. Object.defineProperty(exports, "__esModule", { value: true });
  4383. var tslib_1 = __webpack_require__(1);
  4384. var inversify_1 = __webpack_require__(0);
  4385. var ServiceIdentifiers_1 = __webpack_require__(2);
  4386. var CustomNodes_1 = __webpack_require__(10);
  4387. var AbstractControlFlowReplacer_1 = __webpack_require__(24);
  4388. var Node_1 = __webpack_require__(6);
  4389. var StringLiteralControlFlowReplacer = StringLiteralControlFlowReplacer_1 = function (_AbstractControlFlowR) {
  4390. _inherits(StringLiteralControlFlowReplacer, _AbstractControlFlowR);
  4391. function StringLiteralControlFlowReplacer(customNodeFactory, options) {
  4392. _classCallCheck(this, StringLiteralControlFlowReplacer);
  4393. return _possibleConstructorReturn(this, (StringLiteralControlFlowReplacer.__proto__ || Object.getPrototypeOf(StringLiteralControlFlowReplacer)).call(this, customNodeFactory, options));
  4394. }
  4395. _createClass(StringLiteralControlFlowReplacer, [{
  4396. key: "replace",
  4397. value: function replace(literalNode, parentNode, controlFlowStorage) {
  4398. if (Node_1.Node.isPropertyNode(parentNode) && parentNode.key === literalNode) {
  4399. return literalNode;
  4400. }
  4401. if (typeof literalNode.value !== 'string' || literalNode.value.length < 3) {
  4402. return literalNode;
  4403. }
  4404. var replacerId = String(literalNode.value);
  4405. var literalFunctionCustomNode = this.customNodeFactory(CustomNodes_1.CustomNodes.StringLiteralNode);
  4406. literalFunctionCustomNode.initialize(literalNode.value);
  4407. var storageKey = this.insertCustomNodeToControlFlowStorage(literalFunctionCustomNode, controlFlowStorage, replacerId, StringLiteralControlFlowReplacer_1.usingExistingIdentifierChance);
  4408. return this.getControlFlowStorageCallNode(controlFlowStorage.getStorageId(), storageKey);
  4409. }
  4410. }, {
  4411. key: "getControlFlowStorageCallNode",
  4412. value: function getControlFlowStorageCallNode(controlFlowStorageId, storageKey) {
  4413. var controlFlowStorageCallCustomNode = this.customNodeFactory(CustomNodes_1.CustomNodes.StringLiteralControlFlowStorageCallNode);
  4414. controlFlowStorageCallCustomNode.initialize(controlFlowStorageId, storageKey);
  4415. var statementNode = controlFlowStorageCallCustomNode.getNode()[0];
  4416. if (!statementNode || !Node_1.Node.isExpressionStatementNode(statementNode)) {
  4417. throw new Error("`controlFlowStorageCallCustomNode.getNode()[0]` should returns array with `ExpressionStatement` node");
  4418. }
  4419. return statementNode.expression;
  4420. }
  4421. }]);
  4422. return StringLiteralControlFlowReplacer;
  4423. }(AbstractControlFlowReplacer_1.AbstractControlFlowReplacer);
  4424. StringLiteralControlFlowReplacer.usingExistingIdentifierChance = 1;
  4425. StringLiteralControlFlowReplacer = StringLiteralControlFlowReplacer_1 = tslib_1.__decorate([inversify_1.injectable(), tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__ICustomNode)), tslib_1.__param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)), tslib_1.__metadata("design:paramtypes", [Function, Object])], StringLiteralControlFlowReplacer);
  4426. exports.StringLiteralControlFlowReplacer = StringLiteralControlFlowReplacer;
  4427. var StringLiteralControlFlowReplacer_1;
  4428. /***/ }),
  4429. /* 87 */
  4430. /***/ (function(module, exports, __webpack_require__) {
  4431. "use strict";
  4432. var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
  4433. function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
  4434. function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
  4435. function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
  4436. Object.defineProperty(exports, "__esModule", { value: true });
  4437. var tslib_1 = __webpack_require__(1);
  4438. var inversify_1 = __webpack_require__(0);
  4439. var ServiceIdentifiers_1 = __webpack_require__(2);
  4440. var NodeType_1 = __webpack_require__(14);
  4441. var AbstractNodeTransformer_1 = __webpack_require__(11);
  4442. var Node_1 = __webpack_require__(6);
  4443. var MemberExpressionTransformer = function (_AbstractNodeTransfor) {
  4444. _inherits(MemberExpressionTransformer, _AbstractNodeTransfor);
  4445. function MemberExpressionTransformer(options) {
  4446. _classCallCheck(this, MemberExpressionTransformer);
  4447. return _possibleConstructorReturn(this, (MemberExpressionTransformer.__proto__ || Object.getPrototypeOf(MemberExpressionTransformer)).call(this, options));
  4448. }
  4449. _createClass(MemberExpressionTransformer, [{
  4450. key: "getVisitor",
  4451. value: function getVisitor() {
  4452. var _this2 = this;
  4453. return {
  4454. enter: function enter(node, parentNode) {
  4455. if (Node_1.Node.isMemberExpressionNode(node)) {
  4456. return _this2.transformNode(node, parentNode);
  4457. }
  4458. }
  4459. };
  4460. }
  4461. }, {
  4462. key: "transformNode",
  4463. value: function transformNode(memberExpressionNode, parentNode) {
  4464. if (Node_1.Node.isIdentifierNode(memberExpressionNode.property)) {
  4465. if (memberExpressionNode.computed) {
  4466. return memberExpressionNode;
  4467. }
  4468. memberExpressionNode.computed = true;
  4469. memberExpressionNode.property = {
  4470. type: NodeType_1.NodeType.Literal,
  4471. value: memberExpressionNode.property.name,
  4472. raw: "'" + memberExpressionNode.property.name + "'"
  4473. };
  4474. }
  4475. return memberExpressionNode;
  4476. }
  4477. }]);
  4478. return MemberExpressionTransformer;
  4479. }(AbstractNodeTransformer_1.AbstractNodeTransformer);
  4480. MemberExpressionTransformer = tslib_1.__decorate([inversify_1.injectable(), tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)), tslib_1.__metadata("design:paramtypes", [Object])], MemberExpressionTransformer);
  4481. exports.MemberExpressionTransformer = MemberExpressionTransformer;
  4482. /***/ }),
  4483. /* 88 */
  4484. /***/ (function(module, exports, __webpack_require__) {
  4485. "use strict";
  4486. var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
  4487. function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
  4488. function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
  4489. function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
  4490. Object.defineProperty(exports, "__esModule", { value: true });
  4491. var tslib_1 = __webpack_require__(1);
  4492. var inversify_1 = __webpack_require__(0);
  4493. var ServiceIdentifiers_1 = __webpack_require__(2);
  4494. var NodeType_1 = __webpack_require__(14);
  4495. var AbstractNodeTransformer_1 = __webpack_require__(11);
  4496. var Node_1 = __webpack_require__(6);
  4497. var MethodDefinitionTransformer = MethodDefinitionTransformer_1 = function (_AbstractNodeTransfor) {
  4498. _inherits(MethodDefinitionTransformer, _AbstractNodeTransfor);
  4499. function MethodDefinitionTransformer(options) {
  4500. _classCallCheck(this, MethodDefinitionTransformer);
  4501. return _possibleConstructorReturn(this, (MethodDefinitionTransformer.__proto__ || Object.getPrototypeOf(MethodDefinitionTransformer)).call(this, options));
  4502. }
  4503. _createClass(MethodDefinitionTransformer, [{
  4504. key: "getVisitor",
  4505. value: function getVisitor() {
  4506. var _this2 = this;
  4507. return {
  4508. enter: function enter(node, parentNode) {
  4509. if (Node_1.Node.isMethodDefinitionNode(node)) {
  4510. return _this2.transformNode(node, parentNode);
  4511. }
  4512. }
  4513. };
  4514. }
  4515. }, {
  4516. key: "transformNode",
  4517. value: function transformNode(methodDefinitionNode, parentNode) {
  4518. if (Node_1.Node.isIdentifierNode(methodDefinitionNode.key) && !(MethodDefinitionTransformer_1.ignoredNames.indexOf(methodDefinitionNode.key.name) !== -1) && methodDefinitionNode.computed === false) {
  4519. methodDefinitionNode.computed = true;
  4520. methodDefinitionNode.key = {
  4521. type: NodeType_1.NodeType.Literal,
  4522. value: methodDefinitionNode.key.name,
  4523. raw: "'" + methodDefinitionNode.key.name + "'"
  4524. };
  4525. }
  4526. return methodDefinitionNode;
  4527. }
  4528. }]);
  4529. return MethodDefinitionTransformer;
  4530. }(AbstractNodeTransformer_1.AbstractNodeTransformer);
  4531. MethodDefinitionTransformer.ignoredNames = ['constructor'];
  4532. MethodDefinitionTransformer = MethodDefinitionTransformer_1 = tslib_1.__decorate([inversify_1.injectable(), tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)), tslib_1.__metadata("design:paramtypes", [Object])], MethodDefinitionTransformer);
  4533. exports.MethodDefinitionTransformer = MethodDefinitionTransformer;
  4534. var MethodDefinitionTransformer_1;
  4535. /***/ }),
  4536. /* 89 */
  4537. /***/ (function(module, exports, __webpack_require__) {
  4538. "use strict";
  4539. var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
  4540. function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
  4541. function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
  4542. function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
  4543. Object.defineProperty(exports, "__esModule", { value: true });
  4544. var tslib_1 = __webpack_require__(1);
  4545. var inversify_1 = __webpack_require__(0);
  4546. var ServiceIdentifiers_1 = __webpack_require__(2);
  4547. var AbstractNodeTransformer_1 = __webpack_require__(11);
  4548. var Node_1 = __webpack_require__(6);
  4549. var Nodes_1 = __webpack_require__(8);
  4550. var TemplateLiteralTransformer = TemplateLiteralTransformer_1 = function (_AbstractNodeTransfor) {
  4551. _inherits(TemplateLiteralTransformer, _AbstractNodeTransfor);
  4552. function TemplateLiteralTransformer(options) {
  4553. _classCallCheck(this, TemplateLiteralTransformer);
  4554. return _possibleConstructorReturn(this, (TemplateLiteralTransformer.__proto__ || Object.getPrototypeOf(TemplateLiteralTransformer)).call(this, options));
  4555. }
  4556. _createClass(TemplateLiteralTransformer, [{
  4557. key: "getVisitor",
  4558. value: function getVisitor() {
  4559. var _this2 = this;
  4560. return {
  4561. enter: function enter(node, parentNode) {
  4562. if (Node_1.Node.isTemplateLiteralNode(node)) {
  4563. return _this2.transformNode(node, parentNode);
  4564. }
  4565. }
  4566. };
  4567. }
  4568. }, {
  4569. key: "transformNode",
  4570. value: function transformNode(templateLiteralNode, parentNode) {
  4571. var templateLiteralExpressions = templateLiteralNode.expressions;
  4572. var nodes = [];
  4573. templateLiteralNode.quasis.forEach(function (templateElement) {
  4574. nodes.push(Nodes_1.Nodes.getLiteralNode(templateElement.value.cooked));
  4575. var expression = templateLiteralExpressions.shift();
  4576. if (!expression) {
  4577. return;
  4578. }
  4579. nodes.push(expression);
  4580. });
  4581. nodes = nodes.filter(function (node) {
  4582. return !(Node_1.Node.isLiteralNode(node) && node.value === '');
  4583. });
  4584. if (!TemplateLiteralTransformer_1.isLiteralNodeWithStringValue(nodes[0]) && !TemplateLiteralTransformer_1.isLiteralNodeWithStringValue(nodes[1])) {
  4585. nodes.unshift(Nodes_1.Nodes.getLiteralNode(''));
  4586. }
  4587. if (nodes.length > 1) {
  4588. var root = Nodes_1.Nodes.getBinaryExpressionNode('+', nodes.shift(), nodes.shift());
  4589. nodes.forEach(function (node) {
  4590. root = Nodes_1.Nodes.getBinaryExpressionNode('+', root, node);
  4591. });
  4592. return root;
  4593. }
  4594. return nodes[0];
  4595. }
  4596. }], [{
  4597. key: "isLiteralNodeWithStringValue",
  4598. value: function isLiteralNodeWithStringValue(node) {
  4599. return node && Node_1.Node.isLiteralNode(node) && typeof node.value === 'string';
  4600. }
  4601. }]);
  4602. return TemplateLiteralTransformer;
  4603. }(AbstractNodeTransformer_1.AbstractNodeTransformer);
  4604. TemplateLiteralTransformer = TemplateLiteralTransformer_1 = tslib_1.__decorate([inversify_1.injectable(), tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)), tslib_1.__metadata("design:paramtypes", [Object])], TemplateLiteralTransformer);
  4605. exports.TemplateLiteralTransformer = TemplateLiteralTransformer;
  4606. var TemplateLiteralTransformer_1;
  4607. /***/ }),
  4608. /* 90 */
  4609. /***/ (function(module, exports, __webpack_require__) {
  4610. "use strict";
  4611. var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
  4612. function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
  4613. function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
  4614. function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
  4615. Object.defineProperty(exports, "__esModule", { value: true });
  4616. var tslib_1 = __webpack_require__(1);
  4617. var inversify_1 = __webpack_require__(0);
  4618. var ServiceIdentifiers_1 = __webpack_require__(2);
  4619. var estraverse = __webpack_require__(12);
  4620. var AbstractNodeTransformer_1 = __webpack_require__(11);
  4621. var Node_1 = __webpack_require__(6);
  4622. var Nodes_1 = __webpack_require__(8);
  4623. var NodeUtils_1 = __webpack_require__(3);
  4624. var RandomGeneratorUtils_1 = __webpack_require__(4);
  4625. var DeadCodeInjectionTransformer = DeadCodeInjectionTransformer_1 = function (_AbstractNodeTransfor) {
  4626. _inherits(DeadCodeInjectionTransformer, _AbstractNodeTransfor);
  4627. function DeadCodeInjectionTransformer(options) {
  4628. _classCallCheck(this, DeadCodeInjectionTransformer);
  4629. var _this = _possibleConstructorReturn(this, (DeadCodeInjectionTransformer.__proto__ || Object.getPrototypeOf(DeadCodeInjectionTransformer)).call(this, options));
  4630. _this.collectedBlockStatements = [];
  4631. return _this;
  4632. }
  4633. _createClass(DeadCodeInjectionTransformer, [{
  4634. key: "getVisitor",
  4635. value: function getVisitor() {
  4636. var _this2 = this;
  4637. return {
  4638. leave: function leave(node, parentNode) {
  4639. if (Node_1.Node.isProgramNode(node)) {
  4640. return _this2.transformNode(node, parentNode);
  4641. }
  4642. }
  4643. };
  4644. }
  4645. }, {
  4646. key: "transformNode",
  4647. value: function transformNode(programNode, parentNode) {
  4648. this.transformProgramNode(programNode);
  4649. return programNode;
  4650. }
  4651. }, {
  4652. key: "transformProgramNode",
  4653. value: function transformProgramNode(programNode) {
  4654. var _this3 = this;
  4655. estraverse.traverse(programNode, {
  4656. enter: function enter(node, parentNode) {
  4657. if (!Node_1.Node.isBlockStatementNode(node)) {
  4658. return;
  4659. }
  4660. DeadCodeInjectionTransformer_1.collectBlockStatementNodes(node, _this3.collectedBlockStatements);
  4661. }
  4662. });
  4663. if (this.collectedBlockStatements.length < DeadCodeInjectionTransformer_1.minCollectedBlockStatementsCount) {
  4664. return;
  4665. }
  4666. estraverse.replace(programNode, {
  4667. leave: function leave(node, parentNode) {
  4668. if (!_this3.collectedBlockStatements.length) {
  4669. return estraverse.VisitorOption.Break;
  4670. }
  4671. if (!Node_1.Node.isBlockStatementNode(node) || RandomGeneratorUtils_1.RandomGeneratorUtils.getMathRandom() > _this3.options.deadCodeInjectionThreshold) {
  4672. return node;
  4673. }
  4674. var randomIndex = RandomGeneratorUtils_1.RandomGeneratorUtils.getRandomInteger(0, _this3.collectedBlockStatements.length - 1);
  4675. var randomBlockStatementNode = _this3.collectedBlockStatements.splice(randomIndex, 1)[0];
  4676. if (randomBlockStatementNode === node) {
  4677. return node;
  4678. }
  4679. return DeadCodeInjectionTransformer_1.replaceBlockStatementNode(node, randomBlockStatementNode);
  4680. }
  4681. });
  4682. }
  4683. }], [{
  4684. key: "collectBlockStatementNodes",
  4685. value: function collectBlockStatementNodes(blockStatementNode, collectedBlockStatements) {
  4686. var clonedBlockStatementNode = NodeUtils_1.NodeUtils.clone(blockStatementNode);
  4687. var nestedBlockStatementsCount = 0,
  4688. isValidBlockStatementNode = true;
  4689. estraverse.replace(clonedBlockStatementNode, {
  4690. enter: function enter(node, parentNode) {
  4691. if (Node_1.Node.isBlockStatementNode(node)) {
  4692. nestedBlockStatementsCount++;
  4693. }
  4694. if (nestedBlockStatementsCount > DeadCodeInjectionTransformer_1.maxNestedBlockStatementsCount || Node_1.Node.isBreakStatementNode(node) || Node_1.Node.isContinueStatementNode(node)) {
  4695. isValidBlockStatementNode = false;
  4696. return estraverse.VisitorOption.Break;
  4697. }
  4698. if (Node_1.Node.isIdentifierNode(node) && !Node_1.Node.isMemberExpressionNode(parentNode)) {
  4699. node.name = RandomGeneratorUtils_1.RandomGeneratorUtils.getRandomVariableName(6);
  4700. }
  4701. return node;
  4702. }
  4703. });
  4704. if (!isValidBlockStatementNode) {
  4705. return;
  4706. }
  4707. collectedBlockStatements.push(clonedBlockStatementNode);
  4708. }
  4709. }, {
  4710. key: "replaceBlockStatementNode",
  4711. value: function replaceBlockStatementNode(blockStatementNode, randomBlockStatementNode) {
  4712. var random1 = RandomGeneratorUtils_1.RandomGeneratorUtils.getMathRandom() > 0.5;
  4713. var random2 = RandomGeneratorUtils_1.RandomGeneratorUtils.getMathRandom() > 0.5;
  4714. var operator = random1 ? '===' : '!==';
  4715. var leftString = RandomGeneratorUtils_1.RandomGeneratorUtils.getRandomString(3);
  4716. var rightString = random2 ? leftString : RandomGeneratorUtils_1.RandomGeneratorUtils.getRandomString(3);
  4717. var consequent = void 0,
  4718. alternate = void 0;
  4719. if (random1 && random2 || !random1 && !random2) {
  4720. consequent = blockStatementNode;
  4721. alternate = randomBlockStatementNode;
  4722. } else {
  4723. consequent = randomBlockStatementNode;
  4724. alternate = blockStatementNode;
  4725. }
  4726. var newBlockStatementNode = Nodes_1.Nodes.getBlockStatementNode([Nodes_1.Nodes.getIfStatementNode(Nodes_1.Nodes.getBinaryExpressionNode(operator, Nodes_1.Nodes.getLiteralNode(leftString), Nodes_1.Nodes.getLiteralNode(rightString)), consequent, alternate)]);
  4727. newBlockStatementNode = NodeUtils_1.NodeUtils.parentize(newBlockStatementNode);
  4728. return newBlockStatementNode;
  4729. }
  4730. }]);
  4731. return DeadCodeInjectionTransformer;
  4732. }(AbstractNodeTransformer_1.AbstractNodeTransformer);
  4733. DeadCodeInjectionTransformer.maxNestedBlockStatementsCount = 4;
  4734. DeadCodeInjectionTransformer.minCollectedBlockStatementsCount = 5;
  4735. DeadCodeInjectionTransformer = DeadCodeInjectionTransformer_1 = tslib_1.__decorate([inversify_1.injectable(), tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)), tslib_1.__metadata("design:paramtypes", [Object])], DeadCodeInjectionTransformer);
  4736. exports.DeadCodeInjectionTransformer = DeadCodeInjectionTransformer;
  4737. var DeadCodeInjectionTransformer_1;
  4738. /***/ }),
  4739. /* 91 */
  4740. /***/ (function(module, exports, __webpack_require__) {
  4741. "use strict";
  4742. var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
  4743. function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
  4744. function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
  4745. function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
  4746. Object.defineProperty(exports, "__esModule", { value: true });
  4747. var tslib_1 = __webpack_require__(1);
  4748. var inversify_1 = __webpack_require__(0);
  4749. var ServiceIdentifiers_1 = __webpack_require__(2);
  4750. var estraverse = __webpack_require__(12);
  4751. var ObfuscatingReplacers_1 = __webpack_require__(16);
  4752. var AbstractNodeTransformer_1 = __webpack_require__(11);
  4753. var Node_1 = __webpack_require__(6);
  4754. var CatchClauseTransformer = function (_AbstractNodeTransfor) {
  4755. _inherits(CatchClauseTransformer, _AbstractNodeTransfor);
  4756. function CatchClauseTransformer(obfuscatingReplacerFactory, options) {
  4757. _classCallCheck(this, CatchClauseTransformer);
  4758. var _this = _possibleConstructorReturn(this, (CatchClauseTransformer.__proto__ || Object.getPrototypeOf(CatchClauseTransformer)).call(this, options));
  4759. _this.identifierReplacer = obfuscatingReplacerFactory(ObfuscatingReplacers_1.ObfuscatingReplacers.IdentifierReplacer);
  4760. return _this;
  4761. }
  4762. _createClass(CatchClauseTransformer, [{
  4763. key: "getVisitor",
  4764. value: function getVisitor() {
  4765. var _this2 = this;
  4766. return {
  4767. enter: function enter(node, parentNode) {
  4768. if (Node_1.Node.isCatchClauseNode(node)) {
  4769. return _this2.transformNode(node, parentNode);
  4770. }
  4771. }
  4772. };
  4773. }
  4774. }, {
  4775. key: "transformNode",
  4776. value: function transformNode(catchClauseNode, parentNode) {
  4777. var nodeIdentifier = this.nodeIdentifier++;
  4778. this.storeCatchClauseParam(catchClauseNode, nodeIdentifier);
  4779. this.replaceCatchClauseParam(catchClauseNode, nodeIdentifier);
  4780. return catchClauseNode;
  4781. }
  4782. }, {
  4783. key: "storeCatchClauseParam",
  4784. value: function storeCatchClauseParam(catchClauseNode, nodeIdentifier) {
  4785. if (Node_1.Node.isIdentifierNode(catchClauseNode.param)) {
  4786. this.identifierReplacer.storeNames(catchClauseNode.param.name, nodeIdentifier);
  4787. }
  4788. }
  4789. }, {
  4790. key: "replaceCatchClauseParam",
  4791. value: function replaceCatchClauseParam(catchClauseNode, nodeIdentifier) {
  4792. var _this3 = this;
  4793. estraverse.replace(catchClauseNode, {
  4794. enter: function enter(node, parentNode) {
  4795. if (Node_1.Node.isReplaceableIdentifierNode(node, parentNode)) {
  4796. var newIdentifier = _this3.identifierReplacer.replace(node.name, nodeIdentifier);
  4797. var newIdentifierName = newIdentifier.name;
  4798. if (node.name !== newIdentifierName) {
  4799. node.name = newIdentifierName;
  4800. node.obfuscatedNode = true;
  4801. }
  4802. }
  4803. }
  4804. });
  4805. }
  4806. }]);
  4807. return CatchClauseTransformer;
  4808. }(AbstractNodeTransformer_1.AbstractNodeTransformer);
  4809. CatchClauseTransformer = tslib_1.__decorate([inversify_1.injectable(), tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__IObfuscatingReplacer)), tslib_1.__param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)), tslib_1.__metadata("design:paramtypes", [Function, Object])], CatchClauseTransformer);
  4810. exports.CatchClauseTransformer = CatchClauseTransformer;
  4811. /***/ }),
  4812. /* 92 */
  4813. /***/ (function(module, exports, __webpack_require__) {
  4814. "use strict";
  4815. var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
  4816. function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
  4817. function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
  4818. function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
  4819. Object.defineProperty(exports, "__esModule", { value: true });
  4820. var tslib_1 = __webpack_require__(1);
  4821. var inversify_1 = __webpack_require__(0);
  4822. var ServiceIdentifiers_1 = __webpack_require__(2);
  4823. var estraverse = __webpack_require__(12);
  4824. var ObfuscatingReplacers_1 = __webpack_require__(16);
  4825. var NodeType_1 = __webpack_require__(14);
  4826. var AbstractNodeTransformer_1 = __webpack_require__(11);
  4827. var Node_1 = __webpack_require__(6);
  4828. var NodeUtils_1 = __webpack_require__(3);
  4829. var FunctionDeclarationTransformer = function (_AbstractNodeTransfor) {
  4830. _inherits(FunctionDeclarationTransformer, _AbstractNodeTransfor);
  4831. function FunctionDeclarationTransformer(obfuscatingReplacerFactory, options) {
  4832. _classCallCheck(this, FunctionDeclarationTransformer);
  4833. var _this = _possibleConstructorReturn(this, (FunctionDeclarationTransformer.__proto__ || Object.getPrototypeOf(FunctionDeclarationTransformer)).call(this, options));
  4834. _this.replaceableIdentifiers = new Map();
  4835. _this.identifierReplacer = obfuscatingReplacerFactory(ObfuscatingReplacers_1.ObfuscatingReplacers.IdentifierReplacer);
  4836. return _this;
  4837. }
  4838. _createClass(FunctionDeclarationTransformer, [{
  4839. key: "getVisitor",
  4840. value: function getVisitor() {
  4841. var _this2 = this;
  4842. return {
  4843. enter: function enter(node, parentNode) {
  4844. if (Node_1.Node.isFunctionDeclarationNode(node)) {
  4845. return _this2.transformNode(node, parentNode);
  4846. }
  4847. }
  4848. };
  4849. }
  4850. }, {
  4851. key: "transformNode",
  4852. value: function transformNode(functionDeclarationNode, parentNode) {
  4853. var nodeIdentifier = this.nodeIdentifier++;
  4854. var blockScopeOfFunctionDeclarationNode = NodeUtils_1.NodeUtils.getBlockScopesOfNode(functionDeclarationNode)[0];
  4855. if (blockScopeOfFunctionDeclarationNode.type === NodeType_1.NodeType.Program) {
  4856. return functionDeclarationNode;
  4857. }
  4858. this.storeFunctionName(functionDeclarationNode, nodeIdentifier);
  4859. if (this.replaceableIdentifiers.has(blockScopeOfFunctionDeclarationNode)) {
  4860. this.replaceScopeCachedIdentifiers(blockScopeOfFunctionDeclarationNode, nodeIdentifier);
  4861. } else {
  4862. this.replaceScopeIdentifiers(blockScopeOfFunctionDeclarationNode, nodeIdentifier);
  4863. }
  4864. return functionDeclarationNode;
  4865. }
  4866. }, {
  4867. key: "storeFunctionName",
  4868. value: function storeFunctionName(functionDeclarationNode, nodeIdentifier) {
  4869. this.identifierReplacer.storeNames(functionDeclarationNode.id.name, nodeIdentifier);
  4870. }
  4871. }, {
  4872. key: "replaceScopeCachedIdentifiers",
  4873. value: function replaceScopeCachedIdentifiers(scopeNode, nodeIdentifier) {
  4874. var _this3 = this;
  4875. var cachedReplaceableIdentifiers = this.replaceableIdentifiers.get(scopeNode);
  4876. cachedReplaceableIdentifiers.forEach(function (replaceableIdentifier) {
  4877. var newReplaceableIdentifier = _this3.identifierReplacer.replace(replaceableIdentifier.name, nodeIdentifier);
  4878. replaceableIdentifier.name = newReplaceableIdentifier.name;
  4879. });
  4880. }
  4881. }, {
  4882. key: "replaceScopeIdentifiers",
  4883. value: function replaceScopeIdentifiers(scopeNode, nodeIdentifier) {
  4884. var _this4 = this;
  4885. var storedReplaceableIdentifiers = [];
  4886. estraverse.replace(scopeNode, {
  4887. enter: function enter(node, parentNode) {
  4888. if (Node_1.Node.isReplaceableIdentifierNode(node, parentNode)) {
  4889. var newIdentifier = _this4.identifierReplacer.replace(node.name, nodeIdentifier);
  4890. var newIdentifierName = newIdentifier.name;
  4891. if (node.name !== newIdentifierName) {
  4892. node.name = newIdentifierName;
  4893. } else {
  4894. storedReplaceableIdentifiers.push(node);
  4895. }
  4896. }
  4897. }
  4898. });
  4899. this.replaceableIdentifiers.set(scopeNode, storedReplaceableIdentifiers);
  4900. }
  4901. }]);
  4902. return FunctionDeclarationTransformer;
  4903. }(AbstractNodeTransformer_1.AbstractNodeTransformer);
  4904. FunctionDeclarationTransformer = tslib_1.__decorate([inversify_1.injectable(), tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__IObfuscatingReplacer)), tslib_1.__param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)), tslib_1.__metadata("design:paramtypes", [Function, Object])], FunctionDeclarationTransformer);
  4905. exports.FunctionDeclarationTransformer = FunctionDeclarationTransformer;
  4906. /***/ }),
  4907. /* 93 */
  4908. /***/ (function(module, exports, __webpack_require__) {
  4909. "use strict";
  4910. var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
  4911. function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
  4912. function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
  4913. function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
  4914. Object.defineProperty(exports, "__esModule", { value: true });
  4915. var tslib_1 = __webpack_require__(1);
  4916. var inversify_1 = __webpack_require__(0);
  4917. var ServiceIdentifiers_1 = __webpack_require__(2);
  4918. var estraverse = __webpack_require__(12);
  4919. var ObfuscatingReplacers_1 = __webpack_require__(16);
  4920. var AbstractNodeTransformer_1 = __webpack_require__(11);
  4921. var Node_1 = __webpack_require__(6);
  4922. var FunctionTransformer = function (_AbstractNodeTransfor) {
  4923. _inherits(FunctionTransformer, _AbstractNodeTransfor);
  4924. function FunctionTransformer(obfuscatingReplacerFactory, options) {
  4925. _classCallCheck(this, FunctionTransformer);
  4926. var _this = _possibleConstructorReturn(this, (FunctionTransformer.__proto__ || Object.getPrototypeOf(FunctionTransformer)).call(this, options));
  4927. _this.identifierReplacer = obfuscatingReplacerFactory(ObfuscatingReplacers_1.ObfuscatingReplacers.IdentifierReplacer);
  4928. return _this;
  4929. }
  4930. _createClass(FunctionTransformer, [{
  4931. key: "getVisitor",
  4932. value: function getVisitor() {
  4933. var _this2 = this;
  4934. return {
  4935. enter: function enter(node, parentNode) {
  4936. if (Node_1.Node.isFunctionDeclarationNode(node) || Node_1.Node.isFunctionExpressionNode(node) || Node_1.Node.isArrowFunctionExpressionNode(node)) {
  4937. return _this2.transformNode(node, parentNode);
  4938. }
  4939. }
  4940. };
  4941. }
  4942. }, {
  4943. key: "transformNode",
  4944. value: function transformNode(functionNode, parentNode) {
  4945. var nodeIdentifier = this.nodeIdentifier++;
  4946. this.storeFunctionParams(functionNode, nodeIdentifier);
  4947. this.replaceFunctionParams(functionNode, nodeIdentifier);
  4948. return functionNode;
  4949. }
  4950. }, {
  4951. key: "storeFunctionParams",
  4952. value: function storeFunctionParams(functionNode, nodeIdentifier) {
  4953. var _this3 = this;
  4954. functionNode.params.forEach(function (paramsNode) {
  4955. if (Node_1.Node.isObjectPatternNode(paramsNode)) {
  4956. return estraverse.VisitorOption.Skip;
  4957. }
  4958. estraverse.traverse(paramsNode, {
  4959. enter: function enter(node) {
  4960. if (Node_1.Node.isAssignmentPatternNode(node) && Node_1.Node.isIdentifierNode(node.left)) {
  4961. _this3.identifierReplacer.storeNames(node.left.name, nodeIdentifier);
  4962. return estraverse.VisitorOption.Skip;
  4963. }
  4964. if (Node_1.Node.isIdentifierNode(node)) {
  4965. _this3.identifierReplacer.storeNames(node.name, nodeIdentifier);
  4966. }
  4967. }
  4968. });
  4969. });
  4970. }
  4971. }, {
  4972. key: "replaceFunctionParams",
  4973. value: function replaceFunctionParams(functionNode, nodeIdentifier) {
  4974. var _this4 = this;
  4975. var replaceVisitor = {
  4976. enter: function enter(node, parentNode) {
  4977. if (Node_1.Node.isReplaceableIdentifierNode(node, parentNode)) {
  4978. var newIdentifier = _this4.identifierReplacer.replace(node.name, nodeIdentifier);
  4979. var newIdentifierName = newIdentifier.name;
  4980. if (node.name !== newIdentifierName) {
  4981. node.name = newIdentifierName;
  4982. node.obfuscatedNode = true;
  4983. }
  4984. }
  4985. }
  4986. };
  4987. functionNode.params.forEach(function (paramsNode) {
  4988. return estraverse.replace(paramsNode, replaceVisitor);
  4989. });
  4990. estraverse.replace(functionNode.body, replaceVisitor);
  4991. }
  4992. }]);
  4993. return FunctionTransformer;
  4994. }(AbstractNodeTransformer_1.AbstractNodeTransformer);
  4995. FunctionTransformer = tslib_1.__decorate([inversify_1.injectable(), tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__IObfuscatingReplacer)), tslib_1.__param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)), tslib_1.__metadata("design:paramtypes", [Function, Object])], FunctionTransformer);
  4996. exports.FunctionTransformer = FunctionTransformer;
  4997. /***/ }),
  4998. /* 94 */
  4999. /***/ (function(module, exports, __webpack_require__) {
  5000. "use strict";
  5001. var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
  5002. function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
  5003. function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
  5004. function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
  5005. Object.defineProperty(exports, "__esModule", { value: true });
  5006. var tslib_1 = __webpack_require__(1);
  5007. var inversify_1 = __webpack_require__(0);
  5008. var ServiceIdentifiers_1 = __webpack_require__(2);
  5009. var estraverse = __webpack_require__(12);
  5010. var ObfuscatingReplacers_1 = __webpack_require__(16);
  5011. var AbstractNodeTransformer_1 = __webpack_require__(11);
  5012. var Node_1 = __webpack_require__(6);
  5013. var LabeledStatementTransformer = function (_AbstractNodeTransfor) {
  5014. _inherits(LabeledStatementTransformer, _AbstractNodeTransfor);
  5015. function LabeledStatementTransformer(obfuscatingReplacerFactory, options) {
  5016. _classCallCheck(this, LabeledStatementTransformer);
  5017. var _this = _possibleConstructorReturn(this, (LabeledStatementTransformer.__proto__ || Object.getPrototypeOf(LabeledStatementTransformer)).call(this, options));
  5018. _this.identifierReplacer = obfuscatingReplacerFactory(ObfuscatingReplacers_1.ObfuscatingReplacers.IdentifierReplacer);
  5019. return _this;
  5020. }
  5021. _createClass(LabeledStatementTransformer, [{
  5022. key: "getVisitor",
  5023. value: function getVisitor() {
  5024. var _this2 = this;
  5025. return {
  5026. enter: function enter(node, parentNode) {
  5027. if (Node_1.Node.isLabeledStatementNode(node)) {
  5028. return _this2.transformNode(node, parentNode);
  5029. }
  5030. }
  5031. };
  5032. }
  5033. }, {
  5034. key: "transformNode",
  5035. value: function transformNode(labeledStatementNode, parentNode) {
  5036. var nodeIdentifier = this.nodeIdentifier++;
  5037. this.storeLabeledStatementName(labeledStatementNode, nodeIdentifier);
  5038. this.replaceLabeledStatementName(labeledStatementNode, nodeIdentifier);
  5039. return labeledStatementNode;
  5040. }
  5041. }, {
  5042. key: "storeLabeledStatementName",
  5043. value: function storeLabeledStatementName(labeledStatementNode, nodeIdentifier) {
  5044. this.identifierReplacer.storeNames(labeledStatementNode.label.name, nodeIdentifier);
  5045. }
  5046. }, {
  5047. key: "replaceLabeledStatementName",
  5048. value: function replaceLabeledStatementName(labeledStatementNode, nodeIdentifier) {
  5049. var _this3 = this;
  5050. estraverse.replace(labeledStatementNode, {
  5051. enter: function enter(node, parentNode) {
  5052. if (Node_1.Node.isLabelIdentifierNode(node, parentNode)) {
  5053. var newIdentifier = _this3.identifierReplacer.replace(node.name, nodeIdentifier);
  5054. node.name = newIdentifier.name;
  5055. }
  5056. }
  5057. });
  5058. }
  5059. }]);
  5060. return LabeledStatementTransformer;
  5061. }(AbstractNodeTransformer_1.AbstractNodeTransformer);
  5062. LabeledStatementTransformer = tslib_1.__decorate([inversify_1.injectable(), tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__IObfuscatingReplacer)), tslib_1.__param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)), tslib_1.__metadata("design:paramtypes", [Function, Object])], LabeledStatementTransformer);
  5063. exports.LabeledStatementTransformer = LabeledStatementTransformer;
  5064. /***/ }),
  5065. /* 95 */
  5066. /***/ (function(module, exports, __webpack_require__) {
  5067. "use strict";
  5068. var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
  5069. var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
  5070. function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
  5071. function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
  5072. function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
  5073. Object.defineProperty(exports, "__esModule", { value: true });
  5074. var tslib_1 = __webpack_require__(1);
  5075. var inversify_1 = __webpack_require__(0);
  5076. var ServiceIdentifiers_1 = __webpack_require__(2);
  5077. var ObfuscatingReplacers_1 = __webpack_require__(16);
  5078. var AbstractNodeTransformer_1 = __webpack_require__(11);
  5079. var Node_1 = __webpack_require__(6);
  5080. var LiteralTransformer = function (_AbstractNodeTransfor) {
  5081. _inherits(LiteralTransformer, _AbstractNodeTransfor);
  5082. function LiteralTransformer(obfuscatingReplacerFactory, options) {
  5083. _classCallCheck(this, LiteralTransformer);
  5084. var _this = _possibleConstructorReturn(this, (LiteralTransformer.__proto__ || Object.getPrototypeOf(LiteralTransformer)).call(this, options));
  5085. _this.obfuscatingReplacerFactory = obfuscatingReplacerFactory;
  5086. return _this;
  5087. }
  5088. _createClass(LiteralTransformer, [{
  5089. key: "getVisitor",
  5090. value: function getVisitor() {
  5091. var _this2 = this;
  5092. return {
  5093. enter: function enter(node, parentNode) {
  5094. if (Node_1.Node.isLiteralNode(node) && !node.obfuscatedNode) {
  5095. return _this2.transformNode(node, parentNode);
  5096. }
  5097. }
  5098. };
  5099. }
  5100. }, {
  5101. key: "transformNode",
  5102. value: function transformNode(literalNode, parentNode) {
  5103. if (Node_1.Node.isPropertyNode(parentNode) && parentNode.key === literalNode) {
  5104. return literalNode;
  5105. }
  5106. switch (_typeof(literalNode.value)) {
  5107. case 'boolean':
  5108. return this.obfuscatingReplacerFactory(ObfuscatingReplacers_1.ObfuscatingReplacers.BooleanReplacer).replace(literalNode.value);
  5109. case 'number':
  5110. return this.obfuscatingReplacerFactory(ObfuscatingReplacers_1.ObfuscatingReplacers.NumberLiteralReplacer).replace(literalNode.value);
  5111. case 'string':
  5112. return this.obfuscatingReplacerFactory(ObfuscatingReplacers_1.ObfuscatingReplacers.StringLiteralReplacer).replace(literalNode.value);
  5113. default:
  5114. return literalNode;
  5115. }
  5116. }
  5117. }]);
  5118. return LiteralTransformer;
  5119. }(AbstractNodeTransformer_1.AbstractNodeTransformer);
  5120. LiteralTransformer = tslib_1.__decorate([inversify_1.injectable(), tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__IObfuscatingReplacer)), tslib_1.__param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)), tslib_1.__metadata("design:paramtypes", [Function, Object])], LiteralTransformer);
  5121. exports.LiteralTransformer = LiteralTransformer;
  5122. /***/ }),
  5123. /* 96 */
  5124. /***/ (function(module, exports, __webpack_require__) {
  5125. "use strict";
  5126. var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
  5127. function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
  5128. function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
  5129. function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
  5130. Object.defineProperty(exports, "__esModule", { value: true });
  5131. var tslib_1 = __webpack_require__(1);
  5132. var inversify_1 = __webpack_require__(0);
  5133. var ServiceIdentifiers_1 = __webpack_require__(2);
  5134. var NodeType_1 = __webpack_require__(14);
  5135. var AbstractNodeTransformer_1 = __webpack_require__(11);
  5136. var Node_1 = __webpack_require__(6);
  5137. var ObjectExpressionTransformer = ObjectExpressionTransformer_1 = function (_AbstractNodeTransfor) {
  5138. _inherits(ObjectExpressionTransformer, _AbstractNodeTransfor);
  5139. function ObjectExpressionTransformer(options) {
  5140. _classCallCheck(this, ObjectExpressionTransformer);
  5141. return _possibleConstructorReturn(this, (ObjectExpressionTransformer.__proto__ || Object.getPrototypeOf(ObjectExpressionTransformer)).call(this, options));
  5142. }
  5143. _createClass(ObjectExpressionTransformer, [{
  5144. key: "getVisitor",
  5145. value: function getVisitor() {
  5146. var _this2 = this;
  5147. return {
  5148. enter: function enter(node, parentNode) {
  5149. if (Node_1.Node.isObjectExpressionNode(node)) {
  5150. return _this2.transformNode(node, parentNode);
  5151. }
  5152. }
  5153. };
  5154. }
  5155. }, {
  5156. key: "transformNode",
  5157. value: function transformNode(objectExpressionNode, parentNode) {
  5158. objectExpressionNode.properties.forEach(function (property) {
  5159. if (property.shorthand) {
  5160. property.shorthand = false;
  5161. }
  5162. if (Node_1.Node.isIdentifierNode(property.key)) {
  5163. property.key = ObjectExpressionTransformer_1.transformIdentifierPropertyKey(property.key);
  5164. }
  5165. });
  5166. return objectExpressionNode;
  5167. }
  5168. }], [{
  5169. key: "transformIdentifierPropertyKey",
  5170. value: function transformIdentifierPropertyKey(node) {
  5171. return {
  5172. type: NodeType_1.NodeType.Literal,
  5173. value: node.name,
  5174. raw: "'" + node.name + "'"
  5175. };
  5176. }
  5177. }]);
  5178. return ObjectExpressionTransformer;
  5179. }(AbstractNodeTransformer_1.AbstractNodeTransformer);
  5180. ObjectExpressionTransformer = ObjectExpressionTransformer_1 = tslib_1.__decorate([inversify_1.injectable(), tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)), tslib_1.__metadata("design:paramtypes", [Object])], ObjectExpressionTransformer);
  5181. exports.ObjectExpressionTransformer = ObjectExpressionTransformer;
  5182. var ObjectExpressionTransformer_1;
  5183. /***/ }),
  5184. /* 97 */
  5185. /***/ (function(module, exports, __webpack_require__) {
  5186. "use strict";
  5187. var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
  5188. function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
  5189. function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
  5190. function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
  5191. Object.defineProperty(exports, "__esModule", { value: true });
  5192. var tslib_1 = __webpack_require__(1);
  5193. var inversify_1 = __webpack_require__(0);
  5194. var ServiceIdentifiers_1 = __webpack_require__(2);
  5195. var estraverse = __webpack_require__(12);
  5196. var ObfuscatingReplacers_1 = __webpack_require__(16);
  5197. var NodeType_1 = __webpack_require__(14);
  5198. var AbstractNodeTransformer_1 = __webpack_require__(11);
  5199. var Node_1 = __webpack_require__(6);
  5200. var NodeUtils_1 = __webpack_require__(3);
  5201. var VariableDeclarationTransformer = function (_AbstractNodeTransfor) {
  5202. _inherits(VariableDeclarationTransformer, _AbstractNodeTransfor);
  5203. function VariableDeclarationTransformer(obfuscatingReplacerFactory, options) {
  5204. _classCallCheck(this, VariableDeclarationTransformer);
  5205. var _this = _possibleConstructorReturn(this, (VariableDeclarationTransformer.__proto__ || Object.getPrototypeOf(VariableDeclarationTransformer)).call(this, options));
  5206. _this.replaceableIdentifiers = new Map();
  5207. _this.identifierReplacer = obfuscatingReplacerFactory(ObfuscatingReplacers_1.ObfuscatingReplacers.IdentifierReplacer);
  5208. return _this;
  5209. }
  5210. _createClass(VariableDeclarationTransformer, [{
  5211. key: "getVisitor",
  5212. value: function getVisitor() {
  5213. var _this2 = this;
  5214. return {
  5215. enter: function enter(node, parentNode) {
  5216. if (Node_1.Node.isVariableDeclarationNode(node)) {
  5217. return _this2.transformNode(node, parentNode);
  5218. }
  5219. }
  5220. };
  5221. }
  5222. }, {
  5223. key: "transformNode",
  5224. value: function transformNode(variableDeclarationNode, parentNode) {
  5225. var blockScopeOfVariableDeclarationNode = NodeUtils_1.NodeUtils.getBlockScopesOfNode(variableDeclarationNode)[0];
  5226. if (blockScopeOfVariableDeclarationNode.type === NodeType_1.NodeType.Program) {
  5227. return variableDeclarationNode;
  5228. }
  5229. var nodeIdentifier = this.nodeIdentifier++;
  5230. var scopeNode = variableDeclarationNode.kind === 'var' ? blockScopeOfVariableDeclarationNode : parentNode;
  5231. this.storeVariableNames(variableDeclarationNode, nodeIdentifier);
  5232. if (this.replaceableIdentifiers.has(scopeNode)) {
  5233. this.replaceScopeCachedIdentifiers(scopeNode, nodeIdentifier);
  5234. } else {
  5235. this.replaceScopeIdentifiers(scopeNode, nodeIdentifier);
  5236. }
  5237. return variableDeclarationNode;
  5238. }
  5239. }, {
  5240. key: "storeVariableNames",
  5241. value: function storeVariableNames(variableDeclarationNode, nodeIdentifier) {
  5242. var _this3 = this;
  5243. variableDeclarationNode.declarations.forEach(function (declarationNode) {
  5244. if (Node_1.Node.isObjectPatternNode(declarationNode.id)) {
  5245. return estraverse.VisitorOption.Skip;
  5246. }
  5247. NodeUtils_1.NodeUtils.typedTraverse(declarationNode.id, NodeType_1.NodeType.Identifier, {
  5248. enter: function enter(node) {
  5249. return _this3.identifierReplacer.storeNames(node.name, nodeIdentifier);
  5250. }
  5251. });
  5252. });
  5253. }
  5254. }, {
  5255. key: "replaceScopeCachedIdentifiers",
  5256. value: function replaceScopeCachedIdentifiers(scopeNode, nodeIdentifier) {
  5257. var _this4 = this;
  5258. var cachedReplaceableIdentifiers = this.replaceableIdentifiers.get(scopeNode);
  5259. cachedReplaceableIdentifiers.forEach(function (replaceableIdentifier) {
  5260. var newReplaceableIdentifier = _this4.identifierReplacer.replace(replaceableIdentifier.name, nodeIdentifier);
  5261. replaceableIdentifier.name = newReplaceableIdentifier.name;
  5262. });
  5263. }
  5264. }, {
  5265. key: "replaceScopeIdentifiers",
  5266. value: function replaceScopeIdentifiers(scopeNode, nodeIdentifier) {
  5267. var _this5 = this;
  5268. var storedReplaceableIdentifiers = [];
  5269. estraverse.replace(scopeNode, {
  5270. enter: function enter(node, parentNode) {
  5271. if (!node.obfuscatedNode && Node_1.Node.isReplaceableIdentifierNode(node, parentNode)) {
  5272. var newIdentifier = _this5.identifierReplacer.replace(node.name, nodeIdentifier);
  5273. var newIdentifierName = newIdentifier.name;
  5274. if (node.name !== newIdentifierName) {
  5275. node.name = newIdentifierName;
  5276. } else {
  5277. storedReplaceableIdentifiers.push(node);
  5278. }
  5279. }
  5280. }
  5281. });
  5282. this.replaceableIdentifiers.set(scopeNode, storedReplaceableIdentifiers);
  5283. }
  5284. }]);
  5285. return VariableDeclarationTransformer;
  5286. }(AbstractNodeTransformer_1.AbstractNodeTransformer);
  5287. VariableDeclarationTransformer = tslib_1.__decorate([inversify_1.injectable(), tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__IObfuscatingReplacer)), tslib_1.__param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)), tslib_1.__metadata("design:paramtypes", [Function, Object])], VariableDeclarationTransformer);
  5288. exports.VariableDeclarationTransformer = VariableDeclarationTransformer;
  5289. /***/ }),
  5290. /* 98 */
  5291. /***/ (function(module, exports, __webpack_require__) {
  5292. "use strict";
  5293. var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
  5294. function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
  5295. function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
  5296. function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
  5297. Object.defineProperty(exports, "__esModule", { value: true });
  5298. var tslib_1 = __webpack_require__(1);
  5299. var inversify_1 = __webpack_require__(0);
  5300. var ServiceIdentifiers_1 = __webpack_require__(2);
  5301. var AbstractObfuscatingReplacer_1 = __webpack_require__(21);
  5302. var Nodes_1 = __webpack_require__(8);
  5303. var BooleanLiteralReplacer = BooleanLiteralReplacer_1 = function (_AbstractObfuscatingR) {
  5304. _inherits(BooleanLiteralReplacer, _AbstractObfuscatingR);
  5305. function BooleanLiteralReplacer(options) {
  5306. _classCallCheck(this, BooleanLiteralReplacer);
  5307. return _possibleConstructorReturn(this, (BooleanLiteralReplacer.__proto__ || Object.getPrototypeOf(BooleanLiteralReplacer)).call(this, options));
  5308. }
  5309. _createClass(BooleanLiteralReplacer, [{
  5310. key: "replace",
  5311. value: function replace(nodeValue) {
  5312. return nodeValue ? BooleanLiteralReplacer_1.getTrueUnaryExpressionNode() : BooleanLiteralReplacer_1.getFalseUnaryExpressionNode();
  5313. }
  5314. }], [{
  5315. key: "getTrueUnaryExpressionNode",
  5316. value: function getTrueUnaryExpressionNode() {
  5317. return Nodes_1.Nodes.getUnaryExpressionNode('!', BooleanLiteralReplacer_1.getFalseUnaryExpressionNode());
  5318. }
  5319. }, {
  5320. key: "getFalseUnaryExpressionNode",
  5321. value: function getFalseUnaryExpressionNode() {
  5322. return Nodes_1.Nodes.getUnaryExpressionNode('!', Nodes_1.Nodes.getArrayExpressionNode());
  5323. }
  5324. }]);
  5325. return BooleanLiteralReplacer;
  5326. }(AbstractObfuscatingReplacer_1.AbstractObfuscatingReplacer);
  5327. BooleanLiteralReplacer = BooleanLiteralReplacer_1 = tslib_1.__decorate([inversify_1.injectable(), tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)), tslib_1.__metadata("design:paramtypes", [Object])], BooleanLiteralReplacer);
  5328. exports.BooleanLiteralReplacer = BooleanLiteralReplacer;
  5329. var BooleanLiteralReplacer_1;
  5330. /***/ }),
  5331. /* 99 */
  5332. /***/ (function(module, exports, __webpack_require__) {
  5333. "use strict";
  5334. var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
  5335. function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
  5336. function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
  5337. function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
  5338. Object.defineProperty(exports, "__esModule", { value: true });
  5339. var tslib_1 = __webpack_require__(1);
  5340. var inversify_1 = __webpack_require__(0);
  5341. var ServiceIdentifiers_1 = __webpack_require__(2);
  5342. var AbstractObfuscatingReplacer_1 = __webpack_require__(21);
  5343. var Nodes_1 = __webpack_require__(8);
  5344. var RandomGeneratorUtils_1 = __webpack_require__(4);
  5345. var IdentifierReplacer = function (_AbstractObfuscatingR) {
  5346. _inherits(IdentifierReplacer, _AbstractObfuscatingR);
  5347. function IdentifierReplacer(options) {
  5348. _classCallCheck(this, IdentifierReplacer);
  5349. var _this = _possibleConstructorReturn(this, (IdentifierReplacer.__proto__ || Object.getPrototypeOf(IdentifierReplacer)).call(this, options));
  5350. _this.namesMap = new Map();
  5351. return _this;
  5352. }
  5353. _createClass(IdentifierReplacer, [{
  5354. key: "replace",
  5355. value: function replace(nodeValue, nodeIdentifier) {
  5356. var mapKey = nodeValue + "-" + String(nodeIdentifier);
  5357. if (this.namesMap.has(mapKey)) {
  5358. nodeValue = this.namesMap.get(mapKey);
  5359. }
  5360. return Nodes_1.Nodes.getIdentifierNode(nodeValue);
  5361. }
  5362. }, {
  5363. key: "storeNames",
  5364. value: function storeNames(nodeName, nodeIdentifier) {
  5365. if (!this.isReservedName(nodeName)) {
  5366. this.namesMap.set(nodeName + "-" + String(nodeIdentifier), RandomGeneratorUtils_1.RandomGeneratorUtils.getRandomVariableName(6));
  5367. }
  5368. }
  5369. }, {
  5370. key: "isReservedName",
  5371. value: function isReservedName(name) {
  5372. return this.options.reservedNames.some(function (reservedName) {
  5373. return new RegExp(reservedName, 'g').exec(name) !== null;
  5374. });
  5375. }
  5376. }]);
  5377. return IdentifierReplacer;
  5378. }(AbstractObfuscatingReplacer_1.AbstractObfuscatingReplacer);
  5379. IdentifierReplacer = tslib_1.__decorate([inversify_1.injectable(), tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)), tslib_1.__metadata("design:paramtypes", [Object])], IdentifierReplacer);
  5380. exports.IdentifierReplacer = IdentifierReplacer;
  5381. /***/ }),
  5382. /* 100 */
  5383. /***/ (function(module, exports, __webpack_require__) {
  5384. "use strict";
  5385. var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
  5386. function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
  5387. function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
  5388. function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
  5389. Object.defineProperty(exports, "__esModule", { value: true });
  5390. var tslib_1 = __webpack_require__(1);
  5391. var inversify_1 = __webpack_require__(0);
  5392. var ServiceIdentifiers_1 = __webpack_require__(2);
  5393. var AbstractObfuscatingReplacer_1 = __webpack_require__(21);
  5394. var Nodes_1 = __webpack_require__(8);
  5395. var Utils_1 = __webpack_require__(9);
  5396. var NumberLiteralReplacer = function (_AbstractObfuscatingR) {
  5397. _inherits(NumberLiteralReplacer, _AbstractObfuscatingR);
  5398. function NumberLiteralReplacer(options) {
  5399. _classCallCheck(this, NumberLiteralReplacer);
  5400. var _this = _possibleConstructorReturn(this, (NumberLiteralReplacer.__proto__ || Object.getPrototypeOf(NumberLiteralReplacer)).call(this, options));
  5401. _this.numberLiteralCache = new Map();
  5402. return _this;
  5403. }
  5404. _createClass(NumberLiteralReplacer, [{
  5405. key: "replace",
  5406. value: function replace(nodeValue) {
  5407. var rawValue = void 0;
  5408. if (this.numberLiteralCache.has(nodeValue)) {
  5409. rawValue = this.numberLiteralCache.get(nodeValue);
  5410. } else {
  5411. if (!Utils_1.Utils.isCeilNumber(nodeValue)) {
  5412. rawValue = String(nodeValue);
  5413. } else {
  5414. rawValue = "" + Utils_1.Utils.hexadecimalPrefix + Utils_1.Utils.decToHex(nodeValue);
  5415. }
  5416. this.numberLiteralCache.set(nodeValue, rawValue);
  5417. }
  5418. return Nodes_1.Nodes.getLiteralNode(nodeValue, rawValue);
  5419. }
  5420. }]);
  5421. return NumberLiteralReplacer;
  5422. }(AbstractObfuscatingReplacer_1.AbstractObfuscatingReplacer);
  5423. NumberLiteralReplacer = tslib_1.__decorate([inversify_1.injectable(), tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)), tslib_1.__metadata("design:paramtypes", [Object])], NumberLiteralReplacer);
  5424. exports.NumberLiteralReplacer = NumberLiteralReplacer;
  5425. /***/ }),
  5426. /* 101 */
  5427. /***/ (function(module, exports, __webpack_require__) {
  5428. "use strict";
  5429. var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
  5430. function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
  5431. function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
  5432. function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
  5433. Object.defineProperty(exports, "__esModule", { value: true });
  5434. var tslib_1 = __webpack_require__(1);
  5435. var inversify_1 = __webpack_require__(0);
  5436. var ServiceIdentifiers_1 = __webpack_require__(2);
  5437. var StringArrayEncoding_1 = __webpack_require__(23);
  5438. var AbstractObfuscatingReplacer_1 = __webpack_require__(21);
  5439. var CryptUtils_1 = __webpack_require__(27);
  5440. var Nodes_1 = __webpack_require__(8);
  5441. var RandomGeneratorUtils_1 = __webpack_require__(4);
  5442. var Utils_1 = __webpack_require__(9);
  5443. var StringLiteralReplacer = StringLiteralReplacer_1 = function (_AbstractObfuscatingR) {
  5444. _inherits(StringLiteralReplacer, _AbstractObfuscatingR);
  5445. function StringLiteralReplacer(customNodeGroupStorage, stringArrayStorage, options) {
  5446. _classCallCheck(this, StringLiteralReplacer);
  5447. var _this = _possibleConstructorReturn(this, (StringLiteralReplacer.__proto__ || Object.getPrototypeOf(StringLiteralReplacer)).call(this, options));
  5448. _this.nodesCache = new Map();
  5449. _this.stringLiteralHexadecimalIndexCache = new Map();
  5450. _this.customNodeGroupStorage = customNodeGroupStorage;
  5451. _this.stringArrayStorage = stringArrayStorage;
  5452. _this.rc4Keys = RandomGeneratorUtils_1.RandomGeneratorUtils.getRandomGenerator().n(function () {
  5453. return RandomGeneratorUtils_1.RandomGeneratorUtils.getRandomGenerator().string({ length: 4 });
  5454. }, 50);
  5455. return _this;
  5456. }
  5457. _createClass(StringLiteralReplacer, [{
  5458. key: "replace",
  5459. value: function replace(nodeValue) {
  5460. var usingStringArray = this.canUseStringArray(nodeValue);
  5461. var cacheKey = nodeValue + "-" + String(usingStringArray);
  5462. if (this.nodesCache.has(cacheKey) && this.options.stringArrayEncoding !== StringArrayEncoding_1.StringArrayEncoding.rc4) {
  5463. return this.nodesCache.get(cacheKey);
  5464. }
  5465. var resultNode = void 0;
  5466. if (usingStringArray) {
  5467. resultNode = this.replaceWithStringArrayCallNode(nodeValue);
  5468. } else {
  5469. resultNode = Nodes_1.Nodes.getLiteralNode("" + Utils_1.Utils.stringToUnicodeEscapeSequence(nodeValue, !this.options.unicodeEscapeSequence));
  5470. }
  5471. this.nodesCache.set(cacheKey, resultNode);
  5472. return resultNode;
  5473. }
  5474. }, {
  5475. key: "canUseStringArray",
  5476. value: function canUseStringArray(nodeValue) {
  5477. return this.options.stringArray && nodeValue.length >= StringLiteralReplacer_1.minimumLengthForStringArray && RandomGeneratorUtils_1.RandomGeneratorUtils.getMathRandom() <= this.options.stringArrayThreshold;
  5478. }
  5479. }, {
  5480. key: "getArrayHexadecimalIndex",
  5481. value: function getArrayHexadecimalIndex(value) {
  5482. if (this.stringLiteralHexadecimalIndexCache.has(value)) {
  5483. return this.stringLiteralHexadecimalIndexCache.get(value);
  5484. }
  5485. var stringArrayStorageLength = this.stringArrayStorage.getLength();
  5486. var hexadecimalIndex = "" + Utils_1.Utils.hexadecimalPrefix + Utils_1.Utils.decToHex(stringArrayStorageLength);
  5487. this.stringArrayStorage.set(stringArrayStorageLength, value);
  5488. this.stringLiteralHexadecimalIndexCache.set(value, hexadecimalIndex);
  5489. return hexadecimalIndex;
  5490. }
  5491. }, {
  5492. key: "getEncodedValue",
  5493. value: function getEncodedValue(value) {
  5494. var encodedValue = void 0,
  5495. key = void 0;
  5496. switch (this.options.stringArrayEncoding) {
  5497. case StringArrayEncoding_1.StringArrayEncoding.rc4:
  5498. key = RandomGeneratorUtils_1.RandomGeneratorUtils.getRandomGenerator().pickone(this.rc4Keys);
  5499. encodedValue = CryptUtils_1.CryptUtils.btoa(CryptUtils_1.CryptUtils.rc4(value, key));
  5500. break;
  5501. case StringArrayEncoding_1.StringArrayEncoding.base64:
  5502. encodedValue = CryptUtils_1.CryptUtils.btoa(value);
  5503. break;
  5504. default:
  5505. encodedValue = value;
  5506. }
  5507. encodedValue = Utils_1.Utils.stringToUnicodeEscapeSequence(encodedValue, !this.options.unicodeEscapeSequence);
  5508. return { encodedValue: encodedValue, key: key };
  5509. }
  5510. }, {
  5511. key: "replaceWithStringArrayCallNode",
  5512. value: function replaceWithStringArrayCallNode(value) {
  5513. var _getEncodedValue = this.getEncodedValue(value),
  5514. encodedValue = _getEncodedValue.encodedValue,
  5515. key = _getEncodedValue.key;
  5516. var rotatedStringArrayStorageId = Utils_1.Utils.stringRotate(this.stringArrayStorage.getStorageId(), 1);
  5517. var stringArrayStorageCallsWrapperName = "_" + Utils_1.Utils.hexadecimalPrefix + rotatedStringArrayStorageId;
  5518. var callExpressionArgs = [StringLiteralReplacer_1.getHexadecimalLiteralNode(this.getArrayHexadecimalIndex(encodedValue))];
  5519. if (key) {
  5520. callExpressionArgs.push(StringLiteralReplacer_1.getRc4KeyLiteralNode(Utils_1.Utils.stringToUnicodeEscapeSequence(key, !this.options.unicodeEscapeSequence)));
  5521. }
  5522. return Nodes_1.Nodes.getCallExpressionNode(Nodes_1.Nodes.getIdentifierNode(stringArrayStorageCallsWrapperName), callExpressionArgs);
  5523. }
  5524. }], [{
  5525. key: "getHexadecimalLiteralNode",
  5526. value: function getHexadecimalLiteralNode(hexadecimalIndex) {
  5527. var hexadecimalLiteralNode = Nodes_1.Nodes.getLiteralNode(hexadecimalIndex);
  5528. hexadecimalLiteralNode.obfuscatedNode = true;
  5529. return hexadecimalLiteralNode;
  5530. }
  5531. }, {
  5532. key: "getRc4KeyLiteralNode",
  5533. value: function getRc4KeyLiteralNode(literalValue) {
  5534. var rc4KeyLiteralNode = Nodes_1.Nodes.getLiteralNode(literalValue);
  5535. rc4KeyLiteralNode.obfuscatedNode = true;
  5536. return rc4KeyLiteralNode;
  5537. }
  5538. }]);
  5539. return StringLiteralReplacer;
  5540. }(AbstractObfuscatingReplacer_1.AbstractObfuscatingReplacer);
  5541. StringLiteralReplacer.minimumLengthForStringArray = 3;
  5542. StringLiteralReplacer = StringLiteralReplacer_1 = tslib_1.__decorate([inversify_1.injectable(), tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.TCustomNodeGroupStorage)), tslib_1.__param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.TStringArrayStorage)), tslib_1.__param(2, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)), tslib_1.__metadata("design:paramtypes", [Object, Object, Object])], StringLiteralReplacer);
  5543. exports.StringLiteralReplacer = StringLiteralReplacer;
  5544. var StringLiteralReplacer_1;
  5545. /***/ }),
  5546. /* 102 */
  5547. /***/ (function(module, exports, __webpack_require__) {
  5548. "use strict";
  5549. function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
  5550. Object.defineProperty(exports, "__esModule", { value: true });
  5551. var tslib_1 = __webpack_require__(1);
  5552. var inversify_1 = __webpack_require__(0);
  5553. var class_validator_1 = __webpack_require__(140);
  5554. var Default_1 = __webpack_require__(25);
  5555. var OptionsNormalizer_1 = __webpack_require__(103);
  5556. var ValidationErrorsFormatter_1 = __webpack_require__(104);
  5557. var Options = Options_1 = function Options(inputOptions) {
  5558. _classCallCheck(this, Options);
  5559. Object.assign(this, Default_1.DEFAULT_PRESET, inputOptions);
  5560. var errors = class_validator_1.validateSync(this, Options_1.validatorOptions);
  5561. if (errors.length) {
  5562. throw new ReferenceError("Validation failed. errors:\n" + ValidationErrorsFormatter_1.ValidationErrorsFormatter.format(errors));
  5563. }
  5564. Object.assign(this, OptionsNormalizer_1.OptionsNormalizer.normalizeOptions(this));
  5565. };
  5566. Options.validatorOptions = {
  5567. validationError: {
  5568. target: false
  5569. }
  5570. };
  5571. tslib_1.__decorate([class_validator_1.IsBoolean(), tslib_1.__metadata("design:type", Boolean)], Options.prototype, "compact", void 0);
  5572. tslib_1.__decorate([class_validator_1.IsBoolean(), tslib_1.__metadata("design:type", Boolean)], Options.prototype, "controlFlowFlattening", void 0);
  5573. tslib_1.__decorate([class_validator_1.IsNumber(), class_validator_1.Min(0), class_validator_1.Max(1), tslib_1.__metadata("design:type", Number)], Options.prototype, "controlFlowFlatteningThreshold", void 0);
  5574. tslib_1.__decorate([class_validator_1.IsBoolean(), tslib_1.__metadata("design:type", Boolean)], Options.prototype, "deadCodeInjection", void 0);
  5575. tslib_1.__decorate([class_validator_1.IsNumber(), tslib_1.__metadata("design:type", Number)], Options.prototype, "deadCodeInjectionThreshold", void 0);
  5576. tslib_1.__decorate([class_validator_1.IsBoolean(), tslib_1.__metadata("design:type", Boolean)], Options.prototype, "debugProtection", void 0);
  5577. tslib_1.__decorate([class_validator_1.IsBoolean(), tslib_1.__metadata("design:type", Boolean)], Options.prototype, "debugProtectionInterval", void 0);
  5578. tslib_1.__decorate([class_validator_1.IsBoolean(), tslib_1.__metadata("design:type", Boolean)], Options.prototype, "disableConsoleOutput", void 0);
  5579. tslib_1.__decorate([class_validator_1.IsArray(), class_validator_1.ArrayUnique(), class_validator_1.IsString({
  5580. each: true
  5581. }), tslib_1.__metadata("design:type", Array)], Options.prototype, "domainLock", void 0);
  5582. tslib_1.__decorate([class_validator_1.IsBoolean(), tslib_1.__metadata("design:type", Boolean)], Options.prototype, "mangle", void 0);
  5583. tslib_1.__decorate([class_validator_1.IsArray(), class_validator_1.ArrayUnique(), class_validator_1.IsString({
  5584. each: true
  5585. }), tslib_1.__metadata("design:type", Array)], Options.prototype, "reservedNames", void 0);
  5586. tslib_1.__decorate([class_validator_1.IsBoolean(), tslib_1.__metadata("design:type", Boolean)], Options.prototype, "rotateStringArray", void 0);
  5587. tslib_1.__decorate([class_validator_1.IsNumber(), tslib_1.__metadata("design:type", Number)], Options.prototype, "seed", void 0);
  5588. tslib_1.__decorate([class_validator_1.IsBoolean(), tslib_1.__metadata("design:type", Boolean)], Options.prototype, "selfDefending", void 0);
  5589. tslib_1.__decorate([class_validator_1.IsBoolean(), tslib_1.__metadata("design:type", Boolean)], Options.prototype, "sourceMap", void 0);
  5590. tslib_1.__decorate([class_validator_1.IsString(), class_validator_1.ValidateIf(function (options) {
  5591. return Boolean(options.sourceMapBaseUrl);
  5592. }), class_validator_1.IsUrl({
  5593. require_protocol: true,
  5594. require_valid_protocol: true
  5595. }), tslib_1.__metadata("design:type", String)], Options.prototype, "sourceMapBaseUrl", void 0);
  5596. tslib_1.__decorate([class_validator_1.IsString(), tslib_1.__metadata("design:type", String)], Options.prototype, "sourceMapFileName", void 0);
  5597. tslib_1.__decorate([class_validator_1.IsIn(['inline', 'separate']), tslib_1.__metadata("design:type", String)], Options.prototype, "sourceMapMode", void 0);
  5598. tslib_1.__decorate([class_validator_1.IsBoolean(), tslib_1.__metadata("design:type", Boolean)], Options.prototype, "stringArray", void 0);
  5599. tslib_1.__decorate([class_validator_1.IsIn([true, false, 'base64', 'rc4']), tslib_1.__metadata("design:type", Object)], Options.prototype, "stringArrayEncoding", void 0);
  5600. tslib_1.__decorate([class_validator_1.IsNumber(), class_validator_1.Min(0), class_validator_1.Max(1), tslib_1.__metadata("design:type", Number)], Options.prototype, "stringArrayThreshold", void 0);
  5601. tslib_1.__decorate([class_validator_1.IsBoolean(), tslib_1.__metadata("design:type", Boolean)], Options.prototype, "unicodeEscapeSequence", void 0);
  5602. Options = Options_1 = tslib_1.__decorate([inversify_1.injectable(), tslib_1.__metadata("design:paramtypes", [Object])], Options);
  5603. exports.Options = Options;
  5604. var Options_1;
  5605. /***/ }),
  5606. /* 103 */
  5607. /***/ (function(module, exports, __webpack_require__) {
  5608. "use strict";
  5609. var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
  5610. function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
  5611. Object.defineProperty(exports, "__esModule", { value: true });
  5612. var ControlFlowFlatteningThresholdRule_1 = __webpack_require__(105);
  5613. var DeadCodeInjectionRule_1 = __webpack_require__(106);
  5614. var DeadCodeInjectionThresholdRule_1 = __webpack_require__(107);
  5615. var DomainLockRule_1 = __webpack_require__(108);
  5616. var SelfDefendingRule_1 = __webpack_require__(109);
  5617. var SourceMapBaseUrlRule_1 = __webpack_require__(110);
  5618. var SourceMapFileNameRule_1 = __webpack_require__(111);
  5619. var StringArrayRule_1 = __webpack_require__(113);
  5620. var StringArrayEncodingRule_1 = __webpack_require__(112);
  5621. var StringArrayThresholdRule_1 = __webpack_require__(114);
  5622. var OptionsNormalizer = function () {
  5623. function OptionsNormalizer() {
  5624. _classCallCheck(this, OptionsNormalizer);
  5625. }
  5626. _createClass(OptionsNormalizer, null, [{
  5627. key: "normalizeOptions",
  5628. value: function normalizeOptions(options) {
  5629. var normalizedOptions = Object.assign({}, options);
  5630. var _iteratorNormalCompletion = true;
  5631. var _didIteratorError = false;
  5632. var _iteratorError = undefined;
  5633. try {
  5634. for (var _iterator = OptionsNormalizer.normalizerRules[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
  5635. var normalizerRule = _step.value;
  5636. normalizedOptions = normalizerRule(normalizedOptions);
  5637. }
  5638. } catch (err) {
  5639. _didIteratorError = true;
  5640. _iteratorError = err;
  5641. } finally {
  5642. try {
  5643. if (!_iteratorNormalCompletion && _iterator.return) {
  5644. _iterator.return();
  5645. }
  5646. } finally {
  5647. if (_didIteratorError) {
  5648. throw _iteratorError;
  5649. }
  5650. }
  5651. }
  5652. return normalizedOptions;
  5653. }
  5654. }]);
  5655. return OptionsNormalizer;
  5656. }();
  5657. OptionsNormalizer.normalizerRules = [ControlFlowFlatteningThresholdRule_1.ControlFlowFlatteningThresholdRule, DeadCodeInjectionRule_1.DeadCodeInjectionRule, DeadCodeInjectionThresholdRule_1.DeadCodeInjectionThresholdRule, DomainLockRule_1.DomainLockRule, SelfDefendingRule_1.SelfDefendingRule, SourceMapBaseUrlRule_1.SourceMapBaseUrlRule, SourceMapFileNameRule_1.SourceMapFileNameRule, StringArrayRule_1.StringArrayRule, StringArrayEncodingRule_1.StringArrayEncodingRule, StringArrayThresholdRule_1.StringArrayThresholdRule];
  5658. exports.OptionsNormalizer = OptionsNormalizer;
  5659. /***/ }),
  5660. /* 104 */
  5661. /***/ (function(module, exports, __webpack_require__) {
  5662. "use strict";
  5663. var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
  5664. function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
  5665. Object.defineProperty(exports, "__esModule", { value: true });
  5666. var ValidationErrorsFormatter = function () {
  5667. function ValidationErrorsFormatter() {
  5668. _classCallCheck(this, ValidationErrorsFormatter);
  5669. }
  5670. _createClass(ValidationErrorsFormatter, null, [{
  5671. key: "format",
  5672. value: function format(validationErrors) {
  5673. var errorsArray = [];
  5674. var _iteratorNormalCompletion = true;
  5675. var _didIteratorError = false;
  5676. var _iteratorError = undefined;
  5677. try {
  5678. for (var _iterator = validationErrors[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
  5679. var error = _step.value;
  5680. errorsArray.push(ValidationErrorsFormatter.formatError(error));
  5681. }
  5682. } catch (err) {
  5683. _didIteratorError = true;
  5684. _iteratorError = err;
  5685. } finally {
  5686. try {
  5687. if (!_iteratorNormalCompletion && _iterator.return) {
  5688. _iterator.return();
  5689. }
  5690. } finally {
  5691. if (_didIteratorError) {
  5692. throw _iteratorError;
  5693. }
  5694. }
  5695. }
  5696. return errorsArray.join('\n');
  5697. }
  5698. }, {
  5699. key: "formatError",
  5700. value: function formatError(validationError) {
  5701. var constraints = validationError.constraints;
  5702. var errorString = "`" + validationError.property + "` errors:\n";
  5703. for (var constraint in constraints) {
  5704. if (!constraints.hasOwnProperty(constraint)) {
  5705. continue;
  5706. }
  5707. errorString += " - " + constraints[constraint] + "\n";
  5708. }
  5709. return errorString;
  5710. }
  5711. }]);
  5712. return ValidationErrorsFormatter;
  5713. }();
  5714. exports.ValidationErrorsFormatter = ValidationErrorsFormatter;
  5715. /***/ }),
  5716. /* 105 */
  5717. /***/ (function(module, exports, __webpack_require__) {
  5718. "use strict";
  5719. Object.defineProperty(exports, "__esModule", { value: true });
  5720. var DISABLED_CONTROL_FLOW_FLATTENING_OPTIONS = {
  5721. controlFlowFlattening: false,
  5722. controlFlowFlatteningThreshold: 0
  5723. };
  5724. exports.ControlFlowFlatteningThresholdRule = function (options) {
  5725. if (options.controlFlowFlatteningThreshold === 0) {
  5726. options = Object.assign({}, options, DISABLED_CONTROL_FLOW_FLATTENING_OPTIONS);
  5727. }
  5728. return options;
  5729. };
  5730. /***/ }),
  5731. /* 106 */
  5732. /***/ (function(module, exports, __webpack_require__) {
  5733. "use strict";
  5734. Object.defineProperty(exports, "__esModule", { value: true });
  5735. var Default_1 = __webpack_require__(25);
  5736. var ENABLED_DEAD_CODE_INJECTION_OPTIONS = {
  5737. deadCodeInjection: true,
  5738. stringArray: true
  5739. };
  5740. var ENABLED_STRING_ARRAY_THRESHOLD_OPTIONS = {
  5741. stringArray: true,
  5742. stringArrayThreshold: Default_1.DEFAULT_PRESET.stringArrayThreshold
  5743. };
  5744. exports.DeadCodeInjectionRule = function (options) {
  5745. if (options.deadCodeInjection) {
  5746. options = Object.assign({}, options, ENABLED_DEAD_CODE_INJECTION_OPTIONS);
  5747. if (!options.stringArrayThreshold) {
  5748. options = Object.assign({}, options, ENABLED_STRING_ARRAY_THRESHOLD_OPTIONS);
  5749. }
  5750. }
  5751. return options;
  5752. };
  5753. /***/ }),
  5754. /* 107 */
  5755. /***/ (function(module, exports, __webpack_require__) {
  5756. "use strict";
  5757. Object.defineProperty(exports, "__esModule", { value: true });
  5758. var DISABLED_DEAD_CODE_INJECTION_OPTIONS = {
  5759. deadCodeInjection: false,
  5760. deadCodeInjectionThreshold: 0
  5761. };
  5762. exports.DeadCodeInjectionThresholdRule = function (options) {
  5763. if (options.deadCodeInjectionThreshold === 0) {
  5764. options = Object.assign({}, options, DISABLED_DEAD_CODE_INJECTION_OPTIONS);
  5765. }
  5766. return options;
  5767. };
  5768. /***/ }),
  5769. /* 108 */
  5770. /***/ (function(module, exports, __webpack_require__) {
  5771. "use strict";
  5772. Object.defineProperty(exports, "__esModule", { value: true });
  5773. var Utils_1 = __webpack_require__(9);
  5774. exports.DomainLockRule = function (options) {
  5775. if (options.domainLock.length) {
  5776. var normalizedDomains = [];
  5777. var _iteratorNormalCompletion = true;
  5778. var _didIteratorError = false;
  5779. var _iteratorError = undefined;
  5780. try {
  5781. for (var _iterator = options.domainLock[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
  5782. var domain = _step.value;
  5783. normalizedDomains.push(Utils_1.Utils.extractDomainFromUrl(domain));
  5784. }
  5785. } catch (err) {
  5786. _didIteratorError = true;
  5787. _iteratorError = err;
  5788. } finally {
  5789. try {
  5790. if (!_iteratorNormalCompletion && _iterator.return) {
  5791. _iterator.return();
  5792. }
  5793. } finally {
  5794. if (_didIteratorError) {
  5795. throw _iteratorError;
  5796. }
  5797. }
  5798. }
  5799. options = Object.assign({}, options, { domainLock: normalizedDomains });
  5800. }
  5801. return options;
  5802. };
  5803. /***/ }),
  5804. /* 109 */
  5805. /***/ (function(module, exports, __webpack_require__) {
  5806. "use strict";
  5807. Object.defineProperty(exports, "__esModule", { value: true });
  5808. var SELF_DEFENDING_OPTIONS = {
  5809. compact: true,
  5810. selfDefending: true
  5811. };
  5812. exports.SelfDefendingRule = function (options) {
  5813. if (options.selfDefending) {
  5814. options = Object.assign({}, options, SELF_DEFENDING_OPTIONS);
  5815. }
  5816. return options;
  5817. };
  5818. /***/ }),
  5819. /* 110 */
  5820. /***/ (function(module, exports, __webpack_require__) {
  5821. "use strict";
  5822. Object.defineProperty(exports, "__esModule", { value: true });
  5823. exports.SourceMapBaseUrlRule = function (options) {
  5824. var _options = options,
  5825. sourceMapBaseUrl = _options.sourceMapBaseUrl;
  5826. if (!options.sourceMapFileName) {
  5827. options = Object.assign({}, options, { sourceMapBaseUrl: '' });
  5828. return options;
  5829. }
  5830. if (sourceMapBaseUrl && !sourceMapBaseUrl.endsWith('/')) {
  5831. options = Object.assign({}, options, { sourceMapBaseUrl: sourceMapBaseUrl + "/" });
  5832. }
  5833. return options;
  5834. };
  5835. /***/ }),
  5836. /* 111 */
  5837. /***/ (function(module, exports, __webpack_require__) {
  5838. "use strict";
  5839. Object.defineProperty(exports, "__esModule", { value: true });
  5840. exports.SourceMapFileNameRule = function (options) {
  5841. var _options = options,
  5842. sourceMapFileName = _options.sourceMapFileName;
  5843. if (sourceMapFileName) {
  5844. sourceMapFileName = sourceMapFileName.replace(/^\/+/, '').split('.')[0];
  5845. options = Object.assign({}, options, { sourceMapFileName: sourceMapFileName + ".js.map" });
  5846. }
  5847. return options;
  5848. };
  5849. /***/ }),
  5850. /* 112 */
  5851. /***/ (function(module, exports, __webpack_require__) {
  5852. "use strict";
  5853. Object.defineProperty(exports, "__esModule", { value: true });
  5854. var STRING_ARRAY_ENCODING_OPTIONS = {
  5855. stringArrayEncoding: 'base64'
  5856. };
  5857. exports.StringArrayEncodingRule = function (options) {
  5858. if (options.stringArrayEncoding === true) {
  5859. options = Object.assign({}, options, STRING_ARRAY_ENCODING_OPTIONS);
  5860. }
  5861. return options;
  5862. };
  5863. /***/ }),
  5864. /* 113 */
  5865. /***/ (function(module, exports, __webpack_require__) {
  5866. "use strict";
  5867. Object.defineProperty(exports, "__esModule", { value: true });
  5868. var DISABLED_STRING_ARRAY_OPTIONS = {
  5869. rotateStringArray: false,
  5870. stringArray: false,
  5871. stringArrayEncoding: false,
  5872. stringArrayThreshold: 0
  5873. };
  5874. exports.StringArrayRule = function (options) {
  5875. if (!options.stringArray) {
  5876. options = Object.assign({}, options, DISABLED_STRING_ARRAY_OPTIONS);
  5877. }
  5878. return options;
  5879. };
  5880. /***/ }),
  5881. /* 114 */
  5882. /***/ (function(module, exports, __webpack_require__) {
  5883. "use strict";
  5884. Object.defineProperty(exports, "__esModule", { value: true });
  5885. var DISABLED_STRING_ARRAY_OPTIONS = {
  5886. rotateStringArray: false,
  5887. stringArray: false,
  5888. stringArrayEncoding: false,
  5889. stringArrayThreshold: 0
  5890. };
  5891. exports.StringArrayThresholdRule = function (options) {
  5892. if (options.stringArrayThreshold === 0) {
  5893. options = Object.assign({}, options, DISABLED_STRING_ARRAY_OPTIONS);
  5894. }
  5895. return options;
  5896. };
  5897. /***/ }),
  5898. /* 115 */
  5899. /***/ (function(module, exports, __webpack_require__) {
  5900. "use strict";
  5901. var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
  5902. function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
  5903. Object.defineProperty(exports, "__esModule", { value: true });
  5904. var tslib_1 = __webpack_require__(1);
  5905. var inversify_1 = __webpack_require__(0);
  5906. var ServiceIdentifiers_1 = __webpack_require__(2);
  5907. var estraverse = __webpack_require__(12);
  5908. var CalleeDataExtractors_1 = __webpack_require__(29);
  5909. var Node_1 = __webpack_require__(6);
  5910. var NodeUtils_1 = __webpack_require__(3);
  5911. var StackTraceAnalyzer = StackTraceAnalyzer_1 = function () {
  5912. function StackTraceAnalyzer(calleeDataExtractorFactory) {
  5913. _classCallCheck(this, StackTraceAnalyzer);
  5914. this.calleeDataExtractorFactory = calleeDataExtractorFactory;
  5915. }
  5916. _createClass(StackTraceAnalyzer, [{
  5917. key: "analyze",
  5918. value: function analyze(blockScopeBody) {
  5919. return this.analyzeRecursive(blockScopeBody);
  5920. }
  5921. }, {
  5922. key: "analyzeRecursive",
  5923. value: function analyzeRecursive(blockScopeBody) {
  5924. var _this = this;
  5925. var limitIndex = StackTraceAnalyzer_1.getLimitIndex(blockScopeBody.length);
  5926. var stackTraceData = [];
  5927. var blockScopeBodyLength = blockScopeBody.length;
  5928. var _loop = function _loop(index) {
  5929. if (index > limitIndex) {
  5930. return "break";
  5931. }
  5932. var blockScopeBodyNode = blockScopeBody[index];
  5933. estraverse.traverse(blockScopeBodyNode, {
  5934. enter: function enter(node) {
  5935. if (!Node_1.Node.isCallExpressionNode(node)) {
  5936. return;
  5937. }
  5938. if (blockScopeBodyNode.parentNode !== NodeUtils_1.NodeUtils.getBlockScopesOfNode(node)[0]) {
  5939. return estraverse.VisitorOption.Skip;
  5940. }
  5941. _this.analyzeCallExpressionNode(stackTraceData, blockScopeBody, node);
  5942. }
  5943. });
  5944. };
  5945. for (var index = 0; index < blockScopeBodyLength; index++) {
  5946. var _ret = _loop(index);
  5947. if (_ret === "break") break;
  5948. }
  5949. return stackTraceData;
  5950. }
  5951. }, {
  5952. key: "analyzeCallExpressionNode",
  5953. value: function analyzeCallExpressionNode(stackTraceData, blockScopeBody, callExpressionNode) {
  5954. var _this2 = this;
  5955. StackTraceAnalyzer_1.calleeDataExtractorsList.forEach(function (calleeDataExtractorName) {
  5956. var calleeData = _this2.calleeDataExtractorFactory(calleeDataExtractorName).extract(blockScopeBody, callExpressionNode.callee);
  5957. if (!calleeData) {
  5958. return;
  5959. }
  5960. stackTraceData.push(Object.assign({}, calleeData, { stackTrace: _this2.analyzeRecursive(calleeData.callee.body) }));
  5961. });
  5962. }
  5963. }], [{
  5964. key: "getLimitIndex",
  5965. value: function getLimitIndex(blockScopeBodyLength) {
  5966. var lastIndex = blockScopeBodyLength - 1;
  5967. var limitThresholdActivationIndex = StackTraceAnalyzer_1.limitThresholdActivationLength - 1;
  5968. var limitIndex = lastIndex;
  5969. if (lastIndex > limitThresholdActivationIndex) {
  5970. limitIndex = Math.round(limitThresholdActivationIndex + lastIndex * StackTraceAnalyzer_1.limitThreshold);
  5971. if (limitIndex > lastIndex) {
  5972. limitIndex = lastIndex;
  5973. }
  5974. }
  5975. return limitIndex;
  5976. }
  5977. }]);
  5978. return StackTraceAnalyzer;
  5979. }();
  5980. StackTraceAnalyzer.calleeDataExtractorsList = [CalleeDataExtractors_1.CalleeDataExtractors.FunctionDeclarationCalleeDataExtractor, CalleeDataExtractors_1.CalleeDataExtractors.FunctionExpressionCalleeDataExtractor, CalleeDataExtractors_1.CalleeDataExtractors.ObjectExpressionCalleeDataExtractor];
  5981. StackTraceAnalyzer.limitThresholdActivationLength = 25;
  5982. StackTraceAnalyzer.limitThreshold = 0.002;
  5983. StackTraceAnalyzer = StackTraceAnalyzer_1 = tslib_1.__decorate([inversify_1.injectable(), tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__ICalleeDataExtractor)), tslib_1.__metadata("design:paramtypes", [Function])], StackTraceAnalyzer);
  5984. exports.StackTraceAnalyzer = StackTraceAnalyzer;
  5985. var StackTraceAnalyzer_1;
  5986. /***/ }),
  5987. /* 116 */
  5988. /***/ (function(module, exports, __webpack_require__) {
  5989. "use strict";
  5990. var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
  5991. function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
  5992. function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
  5993. function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
  5994. Object.defineProperty(exports, "__esModule", { value: true });
  5995. var tslib_1 = __webpack_require__(1);
  5996. var inversify_1 = __webpack_require__(0);
  5997. var estraverse = __webpack_require__(12);
  5998. var AbstractCalleeDataExtractor_1 = __webpack_require__(26);
  5999. var Node_1 = __webpack_require__(6);
  6000. var NodeUtils_1 = __webpack_require__(3);
  6001. var FunctionDeclarationCalleeDataExtractor = function (_AbstractCalleeDataEx) {
  6002. _inherits(FunctionDeclarationCalleeDataExtractor, _AbstractCalleeDataEx);
  6003. function FunctionDeclarationCalleeDataExtractor() {
  6004. _classCallCheck(this, FunctionDeclarationCalleeDataExtractor);
  6005. return _possibleConstructorReturn(this, (FunctionDeclarationCalleeDataExtractor.__proto__ || Object.getPrototypeOf(FunctionDeclarationCalleeDataExtractor)).apply(this, arguments));
  6006. }
  6007. _createClass(FunctionDeclarationCalleeDataExtractor, [{
  6008. key: "extract",
  6009. value: function extract(blockScopeBody, callee) {
  6010. var calleeBlockStatement = null;
  6011. if (Node_1.Node.isIdentifierNode(callee)) {
  6012. calleeBlockStatement = this.getCalleeBlockStatement(NodeUtils_1.NodeUtils.getBlockScopesOfNode(blockScopeBody[0])[0], callee.name);
  6013. }
  6014. if (!calleeBlockStatement) {
  6015. return null;
  6016. }
  6017. return {
  6018. callee: calleeBlockStatement,
  6019. name: callee.name
  6020. };
  6021. }
  6022. }, {
  6023. key: "getCalleeBlockStatement",
  6024. value: function getCalleeBlockStatement(targetNode, name) {
  6025. var calleeBlockStatement = null;
  6026. estraverse.traverse(targetNode, {
  6027. enter: function enter(node) {
  6028. if (Node_1.Node.isFunctionDeclarationNode(node) && node.id.name === name) {
  6029. calleeBlockStatement = node.body;
  6030. return estraverse.VisitorOption.Break;
  6031. }
  6032. }
  6033. });
  6034. return calleeBlockStatement;
  6035. }
  6036. }]);
  6037. return FunctionDeclarationCalleeDataExtractor;
  6038. }(AbstractCalleeDataExtractor_1.AbstractCalleeDataExtractor);
  6039. FunctionDeclarationCalleeDataExtractor = tslib_1.__decorate([inversify_1.injectable()], FunctionDeclarationCalleeDataExtractor);
  6040. exports.FunctionDeclarationCalleeDataExtractor = FunctionDeclarationCalleeDataExtractor;
  6041. /***/ }),
  6042. /* 117 */
  6043. /***/ (function(module, exports, __webpack_require__) {
  6044. "use strict";
  6045. var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
  6046. function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
  6047. function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
  6048. function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
  6049. Object.defineProperty(exports, "__esModule", { value: true });
  6050. var tslib_1 = __webpack_require__(1);
  6051. var inversify_1 = __webpack_require__(0);
  6052. var estraverse = __webpack_require__(12);
  6053. var AbstractCalleeDataExtractor_1 = __webpack_require__(26);
  6054. var Node_1 = __webpack_require__(6);
  6055. var NodeUtils_1 = __webpack_require__(3);
  6056. var FunctionExpressionCalleeDataExtractor = function (_AbstractCalleeDataEx) {
  6057. _inherits(FunctionExpressionCalleeDataExtractor, _AbstractCalleeDataEx);
  6058. function FunctionExpressionCalleeDataExtractor() {
  6059. _classCallCheck(this, FunctionExpressionCalleeDataExtractor);
  6060. return _possibleConstructorReturn(this, (FunctionExpressionCalleeDataExtractor.__proto__ || Object.getPrototypeOf(FunctionExpressionCalleeDataExtractor)).apply(this, arguments));
  6061. }
  6062. _createClass(FunctionExpressionCalleeDataExtractor, [{
  6063. key: "extract",
  6064. value: function extract(blockScopeBody, callee) {
  6065. var calleeBlockStatement = null;
  6066. if (Node_1.Node.isIdentifierNode(callee)) {
  6067. calleeBlockStatement = this.getCalleeBlockStatement(NodeUtils_1.NodeUtils.getBlockScopesOfNode(blockScopeBody[0])[0], callee.name);
  6068. }
  6069. if (Node_1.Node.isFunctionExpressionNode(callee)) {
  6070. calleeBlockStatement = callee.body;
  6071. }
  6072. if (!calleeBlockStatement) {
  6073. return null;
  6074. }
  6075. return {
  6076. callee: calleeBlockStatement,
  6077. name: callee.name || null
  6078. };
  6079. }
  6080. }, {
  6081. key: "getCalleeBlockStatement",
  6082. value: function getCalleeBlockStatement(targetNode, name) {
  6083. var calleeBlockStatement = null;
  6084. estraverse.traverse(targetNode, {
  6085. enter: function enter(node, parentNode) {
  6086. if (Node_1.Node.isFunctionExpressionNode(node) && Node_1.Node.isVariableDeclaratorNode(parentNode) && Node_1.Node.isIdentifierNode(parentNode.id) && parentNode.id.name === name) {
  6087. calleeBlockStatement = node.body;
  6088. return estraverse.VisitorOption.Break;
  6089. }
  6090. }
  6091. });
  6092. return calleeBlockStatement;
  6093. }
  6094. }]);
  6095. return FunctionExpressionCalleeDataExtractor;
  6096. }(AbstractCalleeDataExtractor_1.AbstractCalleeDataExtractor);
  6097. FunctionExpressionCalleeDataExtractor = tslib_1.__decorate([inversify_1.injectable()], FunctionExpressionCalleeDataExtractor);
  6098. exports.FunctionExpressionCalleeDataExtractor = FunctionExpressionCalleeDataExtractor;
  6099. /***/ }),
  6100. /* 118 */
  6101. /***/ (function(module, exports, __webpack_require__) {
  6102. "use strict";
  6103. var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
  6104. function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
  6105. function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
  6106. function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
  6107. Object.defineProperty(exports, "__esModule", { value: true });
  6108. var tslib_1 = __webpack_require__(1);
  6109. var inversify_1 = __webpack_require__(0);
  6110. var estraverse = __webpack_require__(12);
  6111. var Node_1 = __webpack_require__(6);
  6112. var NodeUtils_1 = __webpack_require__(3);
  6113. var AbstractCalleeDataExtractor_1 = __webpack_require__(26);
  6114. var ObjectExpressionCalleeDataExtractor = function (_AbstractCalleeDataEx) {
  6115. _inherits(ObjectExpressionCalleeDataExtractor, _AbstractCalleeDataEx);
  6116. function ObjectExpressionCalleeDataExtractor() {
  6117. _classCallCheck(this, ObjectExpressionCalleeDataExtractor);
  6118. return _possibleConstructorReturn(this, (ObjectExpressionCalleeDataExtractor.__proto__ || Object.getPrototypeOf(ObjectExpressionCalleeDataExtractor)).apply(this, arguments));
  6119. }
  6120. _createClass(ObjectExpressionCalleeDataExtractor, [{
  6121. key: "extract",
  6122. value: function extract(blockScopeBody, callee) {
  6123. var calleeBlockStatement = null,
  6124. functionExpressionName = null;
  6125. if (Node_1.Node.isMemberExpressionNode(callee)) {
  6126. var objectMembersCallsChain = this.createObjectMembersCallsChain([], callee);
  6127. if (!objectMembersCallsChain.length) {
  6128. return null;
  6129. }
  6130. functionExpressionName = objectMembersCallsChain[objectMembersCallsChain.length - 1];
  6131. calleeBlockStatement = this.getCalleeBlockStatement(NodeUtils_1.NodeUtils.getBlockScopesOfNode(blockScopeBody[0])[0], objectMembersCallsChain);
  6132. }
  6133. if (!calleeBlockStatement) {
  6134. return null;
  6135. }
  6136. return {
  6137. callee: calleeBlockStatement,
  6138. name: functionExpressionName
  6139. };
  6140. }
  6141. }, {
  6142. key: "createObjectMembersCallsChain",
  6143. value: function createObjectMembersCallsChain(currentChain, memberExpression) {
  6144. if (Node_1.Node.isIdentifierNode(memberExpression.property) && memberExpression.computed === false) {
  6145. currentChain.unshift(memberExpression.property.name);
  6146. } else if (Node_1.Node.isLiteralNode(memberExpression.property) && (typeof memberExpression.property.value === 'string' || typeof memberExpression.property.value === 'number')) {
  6147. currentChain.unshift(memberExpression.property.value);
  6148. } else {
  6149. return currentChain;
  6150. }
  6151. if (Node_1.Node.isMemberExpressionNode(memberExpression.object)) {
  6152. return this.createObjectMembersCallsChain(currentChain, memberExpression.object);
  6153. } else if (Node_1.Node.isIdentifierNode(memberExpression.object)) {
  6154. currentChain.unshift(memberExpression.object.name);
  6155. }
  6156. return currentChain;
  6157. }
  6158. }, {
  6159. key: "getCalleeBlockStatement",
  6160. value: function getCalleeBlockStatement(targetNode, objectMembersCallsChain) {
  6161. var _this2 = this;
  6162. var objectName = objectMembersCallsChain.shift();
  6163. if (!objectName) {
  6164. return null;
  6165. }
  6166. var calleeBlockStatement = null;
  6167. estraverse.traverse(targetNode, {
  6168. enter: function enter(node, parentNode) {
  6169. if (Node_1.Node.isVariableDeclaratorNode(node) && Node_1.Node.isIdentifierNode(node.id) && node.init && Node_1.Node.isObjectExpressionNode(node.init) && node.id.name === objectName) {
  6170. calleeBlockStatement = _this2.findCalleeBlockStatement(node.init.properties, objectMembersCallsChain);
  6171. return estraverse.VisitorOption.Break;
  6172. }
  6173. }
  6174. });
  6175. return calleeBlockStatement;
  6176. }
  6177. }, {
  6178. key: "findCalleeBlockStatement",
  6179. value: function findCalleeBlockStatement(objectExpressionProperties, objectMembersCallsChain) {
  6180. var nextItemInCallsChain = objectMembersCallsChain.shift();
  6181. if (!nextItemInCallsChain) {
  6182. return null;
  6183. }
  6184. var _iteratorNormalCompletion = true;
  6185. var _didIteratorError = false;
  6186. var _iteratorError = undefined;
  6187. try {
  6188. for (var _iterator = objectExpressionProperties[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
  6189. var propertyNode = _step.value;
  6190. var isTargetPropertyNodeWithIdentifierKey = Node_1.Node.isIdentifierNode(propertyNode.key) && propertyNode.key.name === nextItemInCallsChain;
  6191. var isTargetPropertyNodeWithLiteralKey = Node_1.Node.isLiteralNode(propertyNode.key) && Boolean(propertyNode.key.value) && propertyNode.key.value === nextItemInCallsChain;
  6192. if (!isTargetPropertyNodeWithIdentifierKey && !isTargetPropertyNodeWithLiteralKey) {
  6193. continue;
  6194. }
  6195. if (Node_1.Node.isObjectExpressionNode(propertyNode.value)) {
  6196. return this.findCalleeBlockStatement(propertyNode.value.properties, objectMembersCallsChain);
  6197. }
  6198. if (Node_1.Node.isFunctionExpressionNode(propertyNode.value)) {
  6199. return propertyNode.value.body;
  6200. }
  6201. }
  6202. } catch (err) {
  6203. _didIteratorError = true;
  6204. _iteratorError = err;
  6205. } finally {
  6206. try {
  6207. if (!_iteratorNormalCompletion && _iterator.return) {
  6208. _iterator.return();
  6209. }
  6210. } finally {
  6211. if (_didIteratorError) {
  6212. throw _iteratorError;
  6213. }
  6214. }
  6215. }
  6216. return null;
  6217. }
  6218. }]);
  6219. return ObjectExpressionCalleeDataExtractor;
  6220. }(AbstractCalleeDataExtractor_1.AbstractCalleeDataExtractor);
  6221. ObjectExpressionCalleeDataExtractor = tslib_1.__decorate([inversify_1.injectable()], ObjectExpressionCalleeDataExtractor);
  6222. exports.ObjectExpressionCalleeDataExtractor = ObjectExpressionCalleeDataExtractor;
  6223. /***/ }),
  6224. /* 119 */
  6225. /***/ (function(module, exports, __webpack_require__) {
  6226. "use strict";
  6227. var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
  6228. function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }
  6229. function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
  6230. Object.defineProperty(exports, "__esModule", { value: true });
  6231. var tslib_1 = __webpack_require__(1);
  6232. var inversify_1 = __webpack_require__(0);
  6233. var Initializable_1 = __webpack_require__(5);
  6234. var RandomGeneratorUtils_1 = __webpack_require__(4);
  6235. var ArrayStorage = function () {
  6236. function ArrayStorage() {
  6237. _classCallCheck(this, ArrayStorage);
  6238. this.storageLength = 0;
  6239. }
  6240. _createClass(ArrayStorage, [{
  6241. key: "get",
  6242. value: function get(key) {
  6243. var value = this.storage[key];
  6244. if (!value) {
  6245. throw new Error("No value found in array storage with key `" + key + "`");
  6246. }
  6247. return value;
  6248. }
  6249. }, {
  6250. key: "getKeyOf",
  6251. value: function getKeyOf(value) {
  6252. var key = this.storage.indexOf(value);
  6253. return key >= 0 ? key : null;
  6254. }
  6255. }, {
  6256. key: "getLength",
  6257. value: function getLength() {
  6258. return this.storageLength;
  6259. }
  6260. }, {
  6261. key: "getStorage",
  6262. value: function getStorage() {
  6263. return this.storage;
  6264. }
  6265. }, {
  6266. key: "getStorageId",
  6267. value: function getStorageId() {
  6268. return this.storageId;
  6269. }
  6270. }, {
  6271. key: "initialize",
  6272. value: function initialize() {
  6273. this.storage = [];
  6274. this.storageId = RandomGeneratorUtils_1.RandomGeneratorUtils.getRandomString(6);
  6275. }
  6276. }, {
  6277. key: "mergeWith",
  6278. value: function mergeWith(storage) {
  6279. var mergeId = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
  6280. this.storage = [].concat(_toConsumableArray(this.storage), _toConsumableArray(storage.getStorage()));
  6281. if (mergeId) {
  6282. this.storageId = storage.getStorageId();
  6283. }
  6284. }
  6285. }, {
  6286. key: "set",
  6287. value: function set(key, value) {
  6288. if (key === this.storageLength) {
  6289. this.storage.push(value);
  6290. } else {
  6291. this.storage.splice(key, 0, value);
  6292. }
  6293. this.storageLength++;
  6294. }
  6295. }]);
  6296. return ArrayStorage;
  6297. }();
  6298. tslib_1.__decorate([Initializable_1.initializable(), tslib_1.__metadata("design:type", Array)], ArrayStorage.prototype, "storage", void 0);
  6299. tslib_1.__decorate([Initializable_1.initializable(), tslib_1.__metadata("design:type", String)], ArrayStorage.prototype, "storageId", void 0);
  6300. ArrayStorage = tslib_1.__decorate([inversify_1.injectable()], ArrayStorage);
  6301. exports.ArrayStorage = ArrayStorage;
  6302. /***/ }),
  6303. /* 120 */
  6304. /***/ (function(module, exports, __webpack_require__) {
  6305. "use strict";
  6306. function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
  6307. function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
  6308. function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
  6309. Object.defineProperty(exports, "__esModule", { value: true });
  6310. var MapStorage_1 = __webpack_require__(34);
  6311. var ControlFlowStorage = function (_MapStorage_1$MapStor) {
  6312. _inherits(ControlFlowStorage, _MapStorage_1$MapStor);
  6313. function ControlFlowStorage() {
  6314. _classCallCheck(this, ControlFlowStorage);
  6315. var _this = _possibleConstructorReturn(this, (ControlFlowStorage.__proto__ || Object.getPrototypeOf(ControlFlowStorage)).call(this));
  6316. _this.initialize();
  6317. return _this;
  6318. }
  6319. return ControlFlowStorage;
  6320. }(MapStorage_1.MapStorage);
  6321. exports.ControlFlowStorage = ControlFlowStorage;
  6322. /***/ }),
  6323. /* 121 */
  6324. /***/ (function(module, exports, __webpack_require__) {
  6325. "use strict";
  6326. var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
  6327. function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
  6328. function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
  6329. function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
  6330. Object.defineProperty(exports, "__esModule", { value: true });
  6331. var tslib_1 = __webpack_require__(1);
  6332. var inversify_1 = __webpack_require__(0);
  6333. var ServiceIdentifiers_1 = __webpack_require__(2);
  6334. var CustomNodeGroups_1 = __webpack_require__(31);
  6335. var MapStorage_1 = __webpack_require__(34);
  6336. var RandomGeneratorUtils_1 = __webpack_require__(4);
  6337. var CustomNodeGroupStorage = CustomNodeGroupStorage_1 = function (_MapStorage_1$MapStor) {
  6338. _inherits(CustomNodeGroupStorage, _MapStorage_1$MapStor);
  6339. function CustomNodeGroupStorage(customNodeGroupFactory, options) {
  6340. _classCallCheck(this, CustomNodeGroupStorage);
  6341. var _this = _possibleConstructorReturn(this, (CustomNodeGroupStorage.__proto__ || Object.getPrototypeOf(CustomNodeGroupStorage)).call(this));
  6342. _this.customNodeGroupFactory = customNodeGroupFactory;
  6343. _this.options = options;
  6344. _this.initialize();
  6345. return _this;
  6346. }
  6347. _createClass(CustomNodeGroupStorage, [{
  6348. key: "initialize",
  6349. value: function initialize() {
  6350. var _this2 = this;
  6351. this.storage = new Map();
  6352. this.storageId = RandomGeneratorUtils_1.RandomGeneratorUtils.getRandomString(6);
  6353. CustomNodeGroupStorage_1.customNodeGroupsList.forEach(function (customNodeGroupName) {
  6354. var customNodeGroup = _this2.customNodeGroupFactory(customNodeGroupName);
  6355. if (!customNodeGroup) {
  6356. return;
  6357. }
  6358. _this2.storage.set(customNodeGroupName, customNodeGroup);
  6359. });
  6360. }
  6361. }]);
  6362. return CustomNodeGroupStorage;
  6363. }(MapStorage_1.MapStorage);
  6364. CustomNodeGroupStorage.customNodeGroupsList = [CustomNodeGroups_1.CustomNodeGroups.ConsoleOutputCustomNodeGroup, CustomNodeGroups_1.CustomNodeGroups.DebugProtectionCustomNodeGroup, CustomNodeGroups_1.CustomNodeGroups.DomainLockCustomNodeGroup, CustomNodeGroups_1.CustomNodeGroups.SelfDefendingCustomNodeGroup, CustomNodeGroups_1.CustomNodeGroups.StringArrayCustomNodeGroup];
  6365. CustomNodeGroupStorage = CustomNodeGroupStorage_1 = tslib_1.__decorate([inversify_1.injectable(), tslib_1.__param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__ICustomNodeGroup)), tslib_1.__param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)), tslib_1.__metadata("design:paramtypes", [Function, Object])], CustomNodeGroupStorage);
  6366. exports.CustomNodeGroupStorage = CustomNodeGroupStorage;
  6367. var CustomNodeGroupStorage_1;
  6368. /***/ }),
  6369. /* 122 */
  6370. /***/ (function(module, exports, __webpack_require__) {
  6371. "use strict";
  6372. var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
  6373. var _get = (function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if ("value" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } });
  6374. function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
  6375. function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
  6376. function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
  6377. Object.defineProperty(exports, "__esModule", { value: true });
  6378. var tslib_1 = __webpack_require__(1);
  6379. var inversify_1 = __webpack_require__(0);
  6380. var ArrayStorage_1 = __webpack_require__(119);
  6381. var RandomGeneratorUtils_1 = __webpack_require__(4);
  6382. var Utils_1 = __webpack_require__(9);
  6383. var StringArrayStorage = function (_ArrayStorage_1$Array) {
  6384. _inherits(StringArrayStorage, _ArrayStorage_1$Array);
  6385. function StringArrayStorage() {
  6386. _classCallCheck(this, StringArrayStorage);
  6387. var _this = _possibleConstructorReturn(this, (StringArrayStorage.__proto__ || Object.getPrototypeOf(StringArrayStorage)).call(this));
  6388. _this.initialize();
  6389. return _this;
  6390. }
  6391. _createClass(StringArrayStorage, [{
  6392. key: "initialize",
  6393. value: function initialize() {
  6394. for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
  6395. args[_key] = arguments[_key];
  6396. }
  6397. _get(StringArrayStorage.prototype.__proto__ || Object.getPrototypeOf(StringArrayStorage.prototype), "initialize", this).call(this, args);
  6398. this.storageId = RandomGeneratorUtils_1.RandomGeneratorUtils.getRandomString(4, RandomGeneratorUtils_1.RandomGeneratorUtils.randomGeneratorPoolHexadecimal);
  6399. }
  6400. }, {
  6401. key: "rotateArray",
  6402. value: function rotateArray(rotationValue) {
  6403. this.storage = Utils_1.Utils.arrayRotate(this.storage, rotationValue);
  6404. }
  6405. }, {
  6406. key: "toString",
  6407. value: function toString() {
  6408. return this.storage.map(function (value) {
  6409. return "'" + value + "'";
  6410. }).toString();
  6411. }
  6412. }]);
  6413. return StringArrayStorage;
  6414. }(ArrayStorage_1.ArrayStorage);
  6415. StringArrayStorage = tslib_1.__decorate([inversify_1.injectable(), tslib_1.__metadata("design:paramtypes", [])], StringArrayStorage);
  6416. exports.StringArrayStorage = StringArrayStorage;
  6417. /***/ }),
  6418. /* 123 */
  6419. /***/ (function(module, exports, __webpack_require__) {
  6420. "use strict";
  6421. Object.defineProperty(exports, "__esModule", { value: true });
  6422. function AtobTemplate() {
  6423. return "\n (function () {\n var getGlobal = Function('return (function () ' + '{}.constructor(\"return this\")()' + ');');\n\n var object = getGlobal();\n var chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\n\n object.atob || (\n object.atob = function(input) {\n var str = String(input).replace(/=+$/, '');\n for (\n var bc = 0, bs, buffer, idx = 0, output = '';\n buffer = str.charAt(idx++);\n ~buffer && (bs = bc % 4 ? bs * 64 + buffer : buffer,\n bc++ % 4) ? output += String.fromCharCode(255 & bs >> (-2 * bc & 6)) : 0\n ) {\n buffer = chars.indexOf(buffer);\n }\n return output;\n });\n })();\n ";
  6424. }
  6425. exports.AtobTemplate = AtobTemplate;
  6426. /***/ }),
  6427. /* 124 */
  6428. /***/ (function(module, exports, __webpack_require__) {
  6429. "use strict";
  6430. Object.defineProperty(exports, "__esModule", { value: true });
  6431. function Rc4Template() {
  6432. return "\n var rc4 = function (str, key) {\n var s = [], j = 0, x, res = '', newStr = '';\n \n str = atob(str);\n \n for (var k = 0, length = str.length; k < length; k++) {\n newStr += '%' + ('00' + str.charCodeAt(k).toString(16)).slice(-2);\n }\n \n str = decodeURIComponent(newStr);\n \t \n\t for (var i = 0; i < 256; i++) {\n s[i] = i;\n }\n \n for (i = 0; i < 256; i++) {\n j = (j + s[i] + key.charCodeAt(i % key.length)) % 256;\n x = s[i];\n s[i] = s[j];\n s[j] = x;\n }\n \n i = 0;\n j = 0;\n \n for (var y = 0; y < str.length; y++) {\n i = (i + 1) % 256;\n j = (j + s[i]) % 256;\n x = s[i];\n s[i] = s[j];\n s[j] = x;\n res += String.fromCharCode(str.charCodeAt(y) ^ s[(s[i] + s[j]) % 256]);\n }\n \n return res;\n }\n ";
  6433. }
  6434. exports.Rc4Template = Rc4Template;
  6435. /***/ }),
  6436. /* 125 */
  6437. /***/ (function(module, exports, __webpack_require__) {
  6438. "use strict";
  6439. Object.defineProperty(exports, "__esModule", { value: true });
  6440. function SingleNodeCallControllerTemplate() {
  6441. return "\n var {singleNodeCallControllerFunctionName} = (function(){\n var firstCall = true;\n \n return function (context, fn){\t\n var rfn = firstCall ? function(){\n if(fn){\n var res = fn.apply(context, arguments);\n fn = null;\n return res;\n }\n } : function(){}\n \n firstCall = false;\n \n return rfn;\n }\n })();\n ";
  6442. }
  6443. exports.SingleNodeCallControllerTemplate = SingleNodeCallControllerTemplate;
  6444. /***/ }),
  6445. /* 126 */
  6446. /***/ (function(module, exports, __webpack_require__) {
  6447. "use strict";
  6448. Object.defineProperty(exports, "__esModule", { value: true });
  6449. function ConsoleOutputDisableExpressionTemplate() {
  6450. return "\n var {consoleLogDisableFunctionName} = {singleNodeCallControllerFunctionName}(this, function () {\n var getGlobal = Function('return (function() ' + '{}.constructor(\"return this\")( )' + ');');\n \n var func = function () {};\n var that = getGlobal();\n \n if (!that.console) {\n that.console = (function (func){ \n var c = {}; \n \n c.log = func;\n c.warn = func; \n c.debug = func;\n c.info = func;\n c.error = func;\n c.exception = func;\n c.trace = func;\n \n return c; \n })(func);\n } else {\n that.console.log = func;\n that.console.warn = func; \n that.console.debug = func;\n that.console.info = func;\n that.console.error = func;\n that.console.exception = func;\n that.console.trace = func;\n }\n });\n \n {consoleLogDisableFunctionName}();\n ";
  6451. }
  6452. exports.ConsoleOutputDisableExpressionTemplate = ConsoleOutputDisableExpressionTemplate;
  6453. /***/ }),
  6454. /* 127 */
  6455. /***/ (function(module, exports, __webpack_require__) {
  6456. "use strict";
  6457. Object.defineProperty(exports, "__esModule", { value: true });
  6458. function DebugProtectionFunctionCallTemplate() {
  6459. return "{debugProtectionFunctionName}();";
  6460. }
  6461. exports.DebugProtectionFunctionCallTemplate = DebugProtectionFunctionCallTemplate;
  6462. /***/ }),
  6463. /* 128 */
  6464. /***/ (function(module, exports, __webpack_require__) {
  6465. "use strict";
  6466. Object.defineProperty(exports, "__esModule", { value: true });
  6467. function DebugProtectionFunctionIntervalTemplate() {
  6468. return "\n setInterval(function () {\n {debugProtectionFunctionName}();\n }, 4000);\n ";
  6469. }
  6470. exports.DebugProtectionFunctionIntervalTemplate = DebugProtectionFunctionIntervalTemplate;
  6471. /***/ }),
  6472. /* 129 */
  6473. /***/ (function(module, exports, __webpack_require__) {
  6474. "use strict";
  6475. Object.defineProperty(exports, "__esModule", { value: true });
  6476. function DebugProtectionFunctionTemplate() {
  6477. return "\n var {debugProtectionFunctionName} = function () {\n function debuggerProtection (counter) {\n if (('' + counter / counter)['length'] !== 1 || counter % 20 === 0) {\n (function () {}.constructor('debugger')());\n } else {\n (function () {}.constructor('debugger')());\n }\n \n debuggerProtection(++counter);\n }\n \n try {\n debuggerProtection(0);\n } catch (y) {}\n };\n ";
  6478. }
  6479. exports.DebugProtectionFunctionTemplate = DebugProtectionFunctionTemplate;
  6480. /***/ }),
  6481. /* 130 */
  6482. /***/ (function(module, exports, __webpack_require__) {
  6483. "use strict";
  6484. Object.defineProperty(exports, "__esModule", { value: true });
  6485. function DomainLockNodeTemplate() {
  6486. return "\n var {domainLockFunctionName} = {singleNodeCallControllerFunctionName}(this, function () {\n var getGlobal = Function('return (function () ' + '{}.constructor(\"return this\")()' + ');');\n\n var func = function () { \n return {\n key: 'item',\n value: 'attribute',\n getAttribute: function () {\n getGlobal()['eval']('while(true){}')();\n }()\n };\n };\n \n var regExp = new RegExp(\"[{diff}]\", \"g\");\n var domains = \"{domains}\".replace(regExp, \"\").split(\";\");\n var eval = [][\"forEach\"][\"constructor\"];\n var windowObject = eval(\"return this\")();\n var document;\n var domain;\n \n for (var d in windowObject) {\n if (d.length == 8 && d.charCodeAt(7) == 116 && d.charCodeAt(5) == 101 && d.charCodeAt(3) == 117 && d.charCodeAt(0) == 100) {\n document = d;\n \n break;\n }\n }\n\n for (var d1 in windowObject[document]) {\n if (d1.length == 6 && d1.charCodeAt(5) == 110 && d1.charCodeAt(0) == 100) {\n domain = d1;\n \n break;\n }\n }\n \n if ((!document && !domain) || (!windowObject[document] && !windowObject[document][domain])) {\n return;\n }\n \n var currentDomain = windowObject[document][domain];\n\n var ok = false;\n \n for (var i = 0; i < domains.length; i++) {\n var domain = domains[i];\n var position = currentDomain.length - domain.length;\n var lastIndex = currentDomain.indexOf(domain, position);\n var endsWith = lastIndex !== -1 && lastIndex === position;\n \n if (endsWith) {\n if (currentDomain.length == domain.length || domain.indexOf(\".\") === 0) {\n ok = true;\n }\n \n break;\n }\n }\n \n if (!ok) {\n data;\n } else {\n return;\n }\n \n func();\n });\n\n {domainLockFunctionName}();\n ";
  6487. }
  6488. exports.DomainLockNodeTemplate = DomainLockNodeTemplate;
  6489. /***/ }),
  6490. /* 131 */
  6491. /***/ (function(module, exports, __webpack_require__) {
  6492. "use strict";
  6493. Object.defineProperty(exports, "__esModule", { value: true });
  6494. var Utils_1 = __webpack_require__(9);
  6495. function SelfDefendingTemplate() {
  6496. return "\n var {selfDefendingFunctionName} = {singleNodeCallControllerFunctionName}(this, function () {\n var func1 = function(){return 'dev';},\n func2 = function () {\n return 'window';\n };\n \n var test1 = function () {\n var regExp = new RegExp('" + Utils_1.Utils.stringToUnicodeEscapeSequence("\\w+ *\\(\\) *{\\w+ *['|\"].+['|\"];? *}") + "');\n \n return !regExp.test(func1.toString());\n };\n \n var test2 = function () {\n var regExp = new RegExp('" + Utils_1.Utils.stringToUnicodeEscapeSequence("(\\\\[x|u](\\w){2,4})+") + "');\n \n return regExp.test(func2.toString());\n };\n \n var recursiveFunc1 = function (string) {\n var i = ~-1 >> 1 + 255 % 0;\n \n if (string.indexOf('i' === i)) {\n recursiveFunc2(string)\n }\n };\n \n var recursiveFunc2 = function (string) {\n var i = ~-4 >> 1 + 255 % 0;\n \n if (string.indexOf((true+\"\")[3]) !== i) {\n recursiveFunc1(string)\n }\n };\n \n if (!test1()) {\n if (!test2()) {\n recursiveFunc1('ind\u0435xOf');\n } else {\n recursiveFunc1('indexOf');\n }\n } else {\n recursiveFunc1('ind\u0435xOf');\n }\n })\n \n {selfDefendingFunctionName}();\n ";
  6497. }
  6498. exports.SelfDefendingTemplate = SelfDefendingTemplate;
  6499. /***/ }),
  6500. /* 132 */
  6501. /***/ (function(module, exports, __webpack_require__) {
  6502. "use strict";
  6503. Object.defineProperty(exports, "__esModule", { value: true });
  6504. var Utils_1 = __webpack_require__(9);
  6505. function SelfDefendingTemplate() {
  6506. return "\n var StatesClass = function (rc4Bytes) {\n this.rc4Bytes = rc4Bytes;\n this.states = [1, 0, 0];\n this.newState = function(){return 'newState';};\n this.firstState = '" + Utils_1.Utils.stringToUnicodeEscapeSequence("\\w+ *\\(\\) *{\\w+ *") + "';\n this.secondState = '" + Utils_1.Utils.stringToUnicodeEscapeSequence("['|\"].+['|\"];? *}") + "';\n };\n \n StatesClass.prototype.checkState = function () {\n var regExp = new RegExp(this.firstState + this.secondState);\n\n return this.runState(regExp.test(this.newState.toString()) ? --this.states[1] : --this.states[0]);\n };\n \n StatesClass.prototype.runState = function (stateResult) {\n if (!Boolean(~stateResult)) {\n return stateResult;\n }\n \n return this.getState(this.rc4Bytes);\n };\n\n StatesClass.prototype.getState = function (rc4Bytes) {\n for (var i = 0, len = this.states.length; i < len; i++) {\n this.states.push(Math.round(Math.random()));\n len = this.states.length;\n }\n \n return rc4Bytes(this.states[0]);\n };\n\n new StatesClass({stringArrayCallsWrapperName}).checkState();\n ";
  6507. }
  6508. exports.SelfDefendingTemplate = SelfDefendingTemplate;
  6509. /***/ }),
  6510. /* 133 */
  6511. /***/ (function(module, exports, __webpack_require__) {
  6512. "use strict";
  6513. Object.defineProperty(exports, "__esModule", { value: true });
  6514. function StringArrayBase64DecodeNodeTemplate() {
  6515. return " \n if ({stringArrayCallsWrapperName}.initialized === undefined) {\n {atobPolyfill}\n \n {stringArrayCallsWrapperName}.base64DecodeUnicode = function (str) {\n var string = atob(str);\n var newStringChars = [];\n \n for (var i = 0, length = string.length; i < length; i++) {\n newStringChars += '%' + ('00' + string.charCodeAt(i).toString(16)).slice(-2);\n }\n \n return decodeURIComponent(newStringChars);\n };\n \n {stringArrayCallsWrapperName}.data = {};\n \n {stringArrayCallsWrapperName}.initialized = true;\n }\n \n var cachedValue = {stringArrayCallsWrapperName}.data[index];\n \n if (cachedValue === undefined) {\n {selfDefendingCode}\n \n value = {stringArrayCallsWrapperName}.base64DecodeUnicode(value);\n {stringArrayCallsWrapperName}.data[index] = value;\n } else {\n value = cachedValue;\n } \n ";
  6516. }
  6517. exports.StringArrayBase64DecodeNodeTemplate = StringArrayBase64DecodeNodeTemplate;
  6518. /***/ }),
  6519. /* 134 */
  6520. /***/ (function(module, exports, __webpack_require__) {
  6521. "use strict";
  6522. Object.defineProperty(exports, "__esModule", { value: true });
  6523. function StringArrayCallsWrapperTemplate() {
  6524. return "\n var {stringArrayCallsWrapperName} = function (index, key) {\n index = index - 0;\n \n var value = {stringArrayName}[index];\n \n {decodeNodeTemplate}\n \n return value;\n };\n ";
  6525. }
  6526. exports.StringArrayCallsWrapperTemplate = StringArrayCallsWrapperTemplate;
  6527. /***/ }),
  6528. /* 135 */
  6529. /***/ (function(module, exports, __webpack_require__) {
  6530. "use strict";
  6531. Object.defineProperty(exports, "__esModule", { value: true });
  6532. function StringArrayRc4DecodeNodeTemplate() {
  6533. return "\n if ({stringArrayCallsWrapperName}.initialized === undefined) {\n {atobPolyfill}\n \n {rc4Polyfill}\n {stringArrayCallsWrapperName}.rc4 = rc4;\n \n {stringArrayCallsWrapperName}.data = {};\n \n {stringArrayCallsWrapperName}.initialized = true;\n }\n \n var cachedValue = {stringArrayCallsWrapperName}.data[index];\n\n if (cachedValue === undefined) {\n if ({stringArrayCallsWrapperName}.once === undefined) {\n {selfDefendingCode}\n \n {stringArrayCallsWrapperName}.once = true;\n }\n \n value = {stringArrayCallsWrapperName}.rc4(value, key);\n {stringArrayCallsWrapperName}.data[index] = value;\n } else {\n value = cachedValue;\n }\n ";
  6534. }
  6535. exports.StringArrayRc4DecodeNodeTemplate = StringArrayRc4DecodeNodeTemplate;
  6536. /***/ }),
  6537. /* 136 */
  6538. /***/ (function(module, exports, __webpack_require__) {
  6539. "use strict";
  6540. Object.defineProperty(exports, "__esModule", { value: true });
  6541. function StringArrayTemplate() {
  6542. return "\n var {stringArrayName} = [{stringArray}];\n ";
  6543. }
  6544. exports.StringArrayTemplate = StringArrayTemplate;
  6545. /***/ }),
  6546. /* 137 */
  6547. /***/ (function(module, exports, __webpack_require__) {
  6548. "use strict";
  6549. Object.defineProperty(exports, "__esModule", { value: true });
  6550. var Utils_1 = __webpack_require__(9);
  6551. function SelfDefendingTemplate() {
  6552. return "\n var selfDefendingFunc = function () { \n var object = {\n data: {\n key: 'cookie',\n value: 'timeout'\n },\n setCookie: function (options, name, value, document) {\n document = document || {};\n \n var updatedCookie = name + \"=\" + value;\n\n var i = 0;\n \n for (var i = 0, len = options.length; i < len; i++) { \n var propName = options[i];\n \n updatedCookie += \"; \" + propName;\n \n var propValue = options[propName];\n \n options.push(propValue);\n len = options.length;\n \n if (propValue !== true) {\n updatedCookie += \"=\" + propValue;\n }\n }\n\n document['cookie'] = updatedCookie;\n },\n removeCookie: function(){return 'dev';},\n getCookie: function (document, name) { \n document = document || function (value) { return value };\n var matches = document(new RegExp(\n \"(?:^|; )\" + name.replace(/([.$?*|{}()[]\\/+^])/g, '\\$1') + \"=([^;]*)\"\n ));\n \n var func = function (param1, param2) {\n param1(++param2);\n };\n \n func({whileFunctionName}, {timesName});\n \n return matches ? decodeURIComponent(matches[1]) : undefined;\n }\n };\n \n var test1 = function () {\n var regExp = new RegExp('" + Utils_1.Utils.stringToUnicodeEscapeSequence("\\w+ *\\(\\) *{\\w+ *['|\"].+['|\"];? *}") + "');\n \n return regExp.test(object.removeCookie.toString());\n };\n \n object['updateCookie'] = test1;\n \n var cookie = '';\n var result = object['updateCookie']();\n \n if (!result) {\n object['setCookie'](['*'], 'counter', 1);\n } else if (result) {\n cookie = object['getCookie'](null, 'counter'); \n } else {\n object['removeCookie']();\n }\n };\n \n selfDefendingFunc();\n ";
  6553. }
  6554. exports.SelfDefendingTemplate = SelfDefendingTemplate;
  6555. /***/ }),
  6556. /* 138 */
  6557. /***/ (function(module, exports, __webpack_require__) {
  6558. "use strict";
  6559. Object.defineProperty(exports, "__esModule", { value: true });
  6560. function StringArrayRotateFunctionTemplate() {
  6561. return "\n (function (array, {timesName}) {\n var {whileFunctionName} = function (times) {\n while (--times) {\n array['push'](array['shift']());\n }\n };\n \n {code}\n })({stringArrayName}, 0x{stringArrayRotateValue});\n ";
  6562. }
  6563. exports.StringArrayRotateFunctionTemplate = StringArrayRotateFunctionTemplate;
  6564. /***/ }),
  6565. /* 139 */
  6566. /***/ (function(module, exports) {
  6567. module.exports = require("chance");
  6568. /***/ }),
  6569. /* 140 */
  6570. /***/ (function(module, exports) {
  6571. module.exports = require("class-validator");
  6572. /***/ }),
  6573. /* 141 */
  6574. /***/ (function(module, exports) {
  6575. module.exports = require("commander");
  6576. /***/ }),
  6577. /* 142 */
  6578. /***/ (function(module, exports) {
  6579. module.exports = require("esmangle");
  6580. /***/ }),
  6581. /* 143 */
  6582. /***/ (function(module, exports) {
  6583. module.exports = require("events");
  6584. /***/ }),
  6585. /* 144 */
  6586. /***/ (function(module, exports) {
  6587. module.exports = require("fs");
  6588. /***/ }),
  6589. /* 145 */
  6590. /***/ (function(module, exports) {
  6591. module.exports = require("mkdirp");
  6592. /***/ }),
  6593. /* 146 */
  6594. /***/ (function(module, exports) {
  6595. module.exports = require("reflect-metadata");
  6596. /***/ })
  6597. /******/ ]);
  6598. //# sourceMappingURL=index.js.map