pax_global_header00006660000000000000000000000064143165432240014516gustar00rootroot0000000000000052 comment=ea38135ac5914db765abeb56df2fed7e5610b5a5 no-context-moo-ea38135/000077500000000000000000000000001431654322400147375ustar00rootroot00000000000000no-context-moo-ea38135/.github/000077500000000000000000000000001431654322400162775ustar00rootroot00000000000000no-context-moo-ea38135/.github/CONTRIBUTING.md000066400000000000000000000040351431654322400205320ustar00rootroot00000000000000 Remember... Philosophy ---------- > _Some thoughts on what moo is/isn't, for dev types._ Moo is a very fast lexer. The input to Moo is a character stream. The output is a list of tokens. You define _rules_ for matching patterns in a stream. A rule defines both a pattern to match, and the `type` to label it with. A Token object tells the contents of the match (its `value`), its `type`, and the position in the stream. Keywords are a natural extension to this model: they let you further specialise a pattern. When a keyword matches it relabels the token to instead have the `type` of the keyword. The rules get compiled down to a single regular expression. At its core, moo is a fancy helper for combining rules into a RegExp, and working out which rule matched. Moo provides primitives for manipulating the stream--`reset` and `save`--so that you can implement your own streaming strategy on top. Under this view of moo, it seems hard to justify including `states` in moo itself--states could just as well be a library on top of moo, that performed a `save` and `reset` call every time it wanted to switch lexers! However, I think we can justify including states due to a) efficiency--the scheme above sounds expensive--and b) convenience. Stateful lexers are common enough that it's worth including them in the core of moo. ...as opposed to things like skipping whitespace tokens, or a scheme to generate INDENT and DEDENT tokens from Python-style indentation, which can very easily be a library. Providing support for that sort of thing inside moo itself would probably involve transformer functions, which would entail a polymorphic function call on the matched rule--which would reduce performance for everybody. Similarly, error handling has to be in moo core, because it couldn't be added as a library. But it's simple enough, and returns enough information, for you to decide what to do about errors yourself--specific to your own application. (Usually, though, all you want to do is raise the error moo gives you!). no-context-moo-ea38135/.github/feelings.png000066400000000000000000002216251431654322400206110ustar00rootroot00000000000000PNG  IHDR|3lPLTE0tRNS*~YG:/,)(+.8@CHScsX'EZgpzn< Row|y#d_4rk ^}\B;[{ּDAʳQijfK`WL9h-N5207Peu3 6axvV lO?M 1bǯF IT"J!tȾ$U]%>mο=q&2:oEIDATxXuf^[@sIs`\ŚRdd3i5ai׺{{^q<|m=9=J C08Di >bcƎ7~ILFcXܴ_d/fюD`P|<@s7.3\XogA9\2w欙3'g _PW_#vQj>cBtLl\Lv|wb\œ7a߂,BU)qQ*<"v'/^d鲥g&I[I"0XҴ/Jc؂Ѷ<PXWK`ĐL8ѫk֒ByoY.!낍E6nڼ%uA[mǡJ+;v9taϺ{ψm^{ Vg2 _b:zeGpbQnX/:ymہ`2OcuH" 8UMUT%rd4вcg6׳5$iǥ-QYPa`z^Z\l q@K/Tr4e hp ]\( /㺙n{?3H$ΝXݻٚFQbo⁵io<1d6 dtu/ӱ '|/˘/SQİvE5L^cɅG'.mpDRޤ޹D#"ClJr1ĸ_+ǒcet\|$WGZݣpV79KkpU{RмqXw 53k/Wc+~,뱱5Y_2jy0GGSA"-HiҺVܻ&$~JF?z=9RNFp9ai-gG~xI _PqpNmȣ>4A-|%tH^y1GH;B*<gVҕd?v 5Z]DR>pJM0b~mF sq`H=5}'1KG/\PvZжVY^* LԶ;,`ti~#AOmjKAA67  BD L]} իJ kpRl(\@<8>[p>mnwt~Z9b p|dfBJ>: Ɏ`cW6^)[)Q`1}]FW|cm 0X16r!0̟t7ߺ}緻fosDx@Iq8uƚq',YtƒCߓ@2['CV% Vh}x ];rÆW$ў.7ZCoÃeo- . )=>kS>ٌ!0K߽Û=qɭ w4 ^l <ٯ[*O,- lnWP Ο:sƸz s5c\jk[/͈Jy U+g5T:@b3r A˶D6zT]\TT߁sA>*!!Ph:~<ɓ;ipMkvPPիWO.6^~S}T!*`qBia=R+% #v/\gԄx43)F rf\;>}B(]L aksu*2F/\01k9ݱ4$hԃ*`.录?]oo)TTge\,`~H]MrCK m̡(e ^A 6_t/"Kgݻ^ 66>8;{Okس9z ǚ{zK Eh,8Zg`a^{bXD͋8wSfJt-3,_ ? -ڤ!~t!!LSDe/"|uST^>W(Mk,0wC}9-ۆ.,,,̇p8֯וǚ۫ EDZ=݁Μi r +.^^9} W_= dziSUv~Jd:LD1OϞ06+~esu |zmG%f:\rW'mݾ[OG8c{Ѧbqlv8>H*ٺqj4S i";dϸ!]vj[sOcÙ^m@U6GlCClSs}&J*eP:dml o,li~|s~0>N#u~s:}'S[{$ѩ*)Nf0Dž⊈4OIkd<?3=zó7ojn;>9~޽7o={gl,ilԘXA 0pJbC+_0ې::|lw\nn 5f&}N>e]ݽc֏?,2.EDu?◁D:Uǖ}Z-ƻNvp.{U dwX, %[Dʕ#= {L \PSb1_SѥrCflںuCh\dnjJduFdQ]՗+m r\/̞܃e`rC<,jp§=$&&> 2&s'w7}K\?/w!$aH*Z kd O&65UoFAfH)mlllT)9#H&NqaU+mU ת2+h V6g$%5\oL -!y[ŭoq33}]11ߠ5z[s^c/l9tfgYcz/ߒHaO_WO_"'HD,ZL05Jh0ӛXLI$ M`C-aԣd#[SoCAJ_(pwJEb'?e4cX#slX3p5dy&o:}}YL! F{y%!(4揟AǚΟ_:Gkx\:B$af]]Dcn^5QQyQv;>(0vn ܢ^B{/v{˜D\k;5KÓ{" JsO{ObCINp/]LtRTi2!kXK$a=^\F.±kȩu 'WGDZm y7>ڴb?\&ץ&!q,ky J9tSɟ~FwyGhdqz8+T'xJŀ74Ev[5nL}]۶:4ܐ :GU|l BZ&^ #l;qHTt38L˵AeY :Oր̗))jZ.FMDv*8 \]#TӜ diJ{c3ܾmm?0-p7  A6_1 URDPM2kN koa)`ndCS l3rvu| w|ٽÓ{}' *z lW/ix&OӨ/nkm46U Eͬg"$ٽgZOBpuҶ58h0o. &d|d;^|R13.~u\#Sȸsk} 2V= וqTܬ( kȾR^޲ <\TBR:Bb0Dw3/Q\(LιiL*JKkZ%3 9xXP>aMB xrU\3hʣS&p$&-Kj5O&i@1**RB @3ڗejYh۔E2<ί|˨58[(Z ]MJm5b{D/*T`IKTD)#~Y`_Vgudo!xQh5ETԔZWn6}i5{^VeM3 [=l eCT~~a>#8C#00ipXXؙ ,n^6)nhj ~(s%<% Dz3FCZNHxtkbLὙ^oھdFC狋7&HD"0d21"5IJJ0g_/s`I!DЖ"$Ҭp4gN.8ʗ;VȔh623ݭ/4>R[g O|~ȕ`v 1}NO~s3Yg¸"'p\SSF_bM罢 l^.;`^W_.I)hYgypopɋ.Ba,:<(yzVK\ dkG#,WD&|]Kx"\t-x%R_] cQ#:iL1כǾi ?qe ȨEgD%X~VW& s;nlH[sDw3O×+ Vy\,JH5 H|Ux(4z@%W[^Ǚ)Vnf۰EeWJ4T PLQ>/%h_ǤZMRwoly\? 0\mE[̈́yDCV4= _oJ"WɌĚb<܂3׺N |SoϑK+g]4ZSh$?~{HXIބ]^{AJB(YQh4jGI8k H +&zUCcTR,H`fU7-㪃}[gTZm8t;pUOh[ӋsY$ ͯrLFǽ5->r\}F@"X,jBLjGXUf77MsJ;>*HĉU қĊ  4XETKT* =J|A-64#zn/NBMOO{垵xZQ( Bng_¶W7 1:fiovlH6\aD{gnn~_~|u>^nmFgt=((t*:h;iQ?v>a/ݍêR@"$ۀPk;akoZg|ʹ<讬0|id__r2t\Ҟ2Ubv,YU֌5a@:\2>p`;?>-V Ǐ/:IISΧJ7A h ͑(x&F+)4 )a8〚kג,,"? ?Chֆ4*yh+]hlHZqoƏ~^#X@8)[H+B|*o7/;[rEF$##J<%McP& \3(UCe\ϱVossn _뿌Iu;#d$L*,:xM:rBKRj,0G) j:12?ڋP;[̃r:sү?ØK"F\:3zk/0qpEk7ښV +rAW}e^L()`hfQ69 ΁ 5'J V1/I4Eع`D/HM--x~HaYIL ,{V20 ^B(u mo fjcLqrR&b%^V'͗&Lì~?{b6 g aVG.s/y3ؑUpOƷnlb;޽^lNb+W4D竢z Qj y)PDi6m71o.H@Vn$0O;|FP;|,<[ZIW,Q\^Vjڌ2~Z /ӵb5W0BH|,+߼"ƧFuy}žϳѓpPrDo)+ ~B.S V Q!N[263PYS; <+QdNBL&u O$V9BDjBi"/c 7oXfF$slkr>)l+Ϻ|*ȣmoxS't^qH3=5(ȅ4C`,B0L+.Vyn3VN2YJr \7|UϗT }V\rWk 9F01nLnl C 㜞"p <<)X*3XDuJQm+$GVӎQY,&@R>qH9'FL폿4%u%kOD|:#_ OԑÁ? I5+͜>_ۃt?*Ri"yF@KϰSuihJ096SxM V=|LHfVcnĵo?ϳHRnv~띷(c?$L|~ͣNjzsoJ= cSbC@UVBaqМ s ;fKaFsjDZ)f*>1]HT|Hg?T+ Po7- 9 N]WtwϞ9Y%͕aIQQGwZ^EӦUIsu lAֹ*ҥ0K1;07s㊞^u#R%Gx1D[hln^"UJJ:%(Kg*2c`'NK|ĄD/G]uB܃~~)qq^c_L-tLYkZzܶĻ;>\bePc쿟a.^X*>t5ARxkRDओA \ܼ+% 3.U*$e=ABgz_Zj\in Q2AmT M ҵ㻜#JL^(?3Yb&0&z_AY5APFo^ *6639hSCK}ps]E>d;(eȂ3KP!Qid9uIx;P;,U{5KȂtM6}'k(rB\FJ!MX,k(Za_!i%(-C4DƔ -)JǼrF]2mor85 n#~f,}}|)6FPrɤ\;גݟr(&?q4DUi}ϾϯLyPeGݙ[o$)i++7&0gb ##ϝEGb򔽐uCID0|ǐJ9td}&EDӼev4EkIT"g&_^B е,*ϼ\iLXZ%7Uj#%j8BF-*.JE[u@Oen]Ƣj *%ʻ(x"Mȴ[~h߈jo|e t aW;u1ӣ yF=+UO7կocU|pݨ̧gZE ̗5q}z*er.kd ¡p8ѦQvCwjnf!c}?͡w.9 qI)[4&.eaȃi|%fmRA_SB-sP~"-]b3X&.rS:_!tlqhҚdrN jHNk: !6$*]Z~Sd/YtNAQQІx 6uIydROKWvz4F4_8`Ꮙer;۷:,Uxtlti;xw*DԦ, /ck^| 1O]Zm$J#ﵺuD6>*&ˌ{ޙ##kFFVE}~sGy6m|NUNW a\%?1vuN䗸bKv| ,A W/ޛ%}⎚e,9-&e`V`bSbf Nc˨0sgT35%,"Ө۾wJw4o[ɟ\ەܮ$SdžM"i5 PDxӮ/Sf]ybyp^Ƌk;y_+h~[+.G^/Q׈LP +k6镈cHAQݑyT,dIN{-pL&HxyziJc`)CHU9D">͎`| DTo{||`IxxMUwtt-+mL=땨.n&W:/rLx~R)f5&VuMUW02 ykx#0Sn@eEFYNG>vӋ 'Š`Nsĭ#2jח ]K 0p"^eVIbsZ `7RWfPVWC܏ӐЈ[ {(!]R?X0v8@lْ2nxgƈn`-u.T``)gɗ̳ZPA۲ H0XbAA |V:͛gDﲣ$p)ЯÁEޱ!.8Sԛu6ƨ(qY&[X,d`CBz>'\`b[!ȍyч~ϋ ۡxԺ.q˺ݪ/P圎Odplm>c2NgNE:W`4eh3f\[)&hi%'^ ti<|h>o6ye^N^mUy*DZ|78fb<{vF*ݭ$~|9vggE)bxCIeR,X%l%#9hX4aOjK_.Ѻ>=zHh}K ԻDYVLl E͞)O0Ba*`SȋC]$~?eqBVLYmbKw,fS<3`o||6;hѐJ1f[v8uIEWwoCt'Ao֜GNV͎h3͡MRj a}VߏlW"nmhd&'f5sT–ƺQq_r}_ :56_Ls{ɇմODHSzv_w ګp_4INyJ.PAB,.D!?8cd[Ӌwv#^5t64#y9K}Q)owʂF ,]d~љ M 3h "DzEZ/DYhi޷}{NJE6;IW}R6|0б49&+[<}߻GqglP2n]> =1$Oi /9zҺ$'hczsǐ$9M #ZQ4kQd5bbǰ΅;o߼œy_v ̨րMOݨ>aV<EV) +*l"9#ⱘqGn3πmUtzе4ʺ_.ՙfZ2dS WZ'g:o_V}~|Wϐ^yrw:$YhHsݗMr+bxziERs;/ek}CA b]F͗kNwn]>8&B(A.x#lu_Wk'*4ÑD*=sC3gBkťܝHC).wMNo+*bMV~uC7+aG}g~O zbXw/U!yrŹʰ_llv6_PsS.G>yY'Q^8z˜y#~:;O( ;vꚮ+qIGL />ʈ3mDBcwsgbZd<@Hb^Rar~nLe{~bU8-ÓL"X-Q|QO~'ELSֈpRF68BTJ) a15,x֮Wa͝#?OW{7LѷILUqobY蜰 7+3Mp"ܼBT V(9ZCCw˦*d Ej"ڨB <샎LR} (ǭ s$ cBnRHy3' /l4AEh;Zy(p'Y:e"z<2i=c漉R-sR7垹 p{F,_@^]g9ps뚙ÊmN<Go2m"t+CF|Xho!$ʹh:B@{ª󮷙wr̓=$),ʭ2aHm$LTr#)-) j⪊="`ҫ Nu~)H+-fdU_!'7^ }[pZǣwOHZmcM4?Z8 쐷KWL76,D;+#>LࡖU Ê`v^JAk)ў:B-A^Ւ֝&mNZu9މbQ]?oXղzѸ>jJsi=Q)>vWׅ=#8J^L2UG?2eh*)5kʧ}] 從[sf9/}߁,n<|1|4aPrIީ7Ob:i%xןO~j`.JǽeZz3Ϛ#4JHK[AENN'Ni; tƒam1V&fYRjmG@x+~3n+u_A{ Bͬ 2H⦌e}\t{n3ȤOCܐRjvah8{s909"e7Eiy̸zeJӪCMF˒= ʒ6Ab M,!g~4!>S[̖ю)21JMPJF|vئ6y \tViSmCU[⳦OzC(BY*5Z;ih9"er01r$ sʯb{! ' \+|ǗN Wg4b@ͧzZ;VD̋ޝun6P6=(ia#pTX6 %˟76'XREzwqTn!An[Bylq%}]pIۋJ Եj.*Ԡq;9?|!SڀƓ+_Wj_?qWj41xY$F_+eŏ{b2GD1y6];6GI$T̑m l[|06>T u{>_1Ɍ1Fu$ C0*ڦ :$h ^KpЧ㟣6_%)OveS{OFOg) X=G.b s,M6t-c{y-Mֻ[!{Qޮ=øoN f2y#P?`N&r9b CQsKO6V$ ]݉vI|~G7jI돃{ 'g&|Rj$!Cܼ:W5OH25 ×efW_v= y&!靐f`x|>T eϏY6'q[$96_|DϾhnDGL҆RrwdK[{I =9lנ/v ]QFa#՚"wՍZ"Tw/yc2<9I(.qmA:x2G6 VLg׻q1q;'Y0\̒Z].loOryYzT''RH,8h yq:m:N+ S'^ʨGԤY YhC]eV?xEbyO3l2FQY(!#k B'5~Xr?ժջON5J7#(vZ>8 ޙ !2_vLol,۩v@RɊT!*@7B\vٲTK;HN>VF!E> i3rےׁ&ĞgL9J1}FQ\ȁߕb0Jr.䇧k5]xnoU @3Sh5o@ ~6uճZM 7;9?}@=ħC[>XaX`niI6wCo`-_G1M`t2g.hsDϖaVGC٭( `bw Ik mG2:kSRjqEJ\5hkRyG[oD%iR^ (jρcbWP:nŀcWL{ˬR4VgF*ltYKϴ7Ѭ;5f 95w"HqxoRc7Rk՝P* I(4ַ>uSdcnAڠȺ4$-J!q"tsq=!|{J?ksl¯c1Tw4h]1d!5Sӱan~!Mzi|a@# Kv2}ppy`y!35Qii rZvJh9{FH9_}?N0ZPp_ y P42h\=vY<hA0ob:I~ [} EZV+0(|LK);a:M69,v [TsoE{?hMI|brJTYej.f8ˉ<CWh0l⍘A$Vdn1U[S~ɸ ͺGU5e T)pgFj\V9q#ɭ{^xTkѿS8b,_A@s>cf"MAZc8#O>H?[ᒸg{6?D1puBSj1/LtNk9S]TMMn~a䏂XJ-t7%¢m4!EN'V:)K t ^~ Et.Ec^@UݛiioĘ1YB}@XZ/^;i*+ o kk EYZpAlG/Sģô"PVpXdY[ʩSCQe^zNj@֬tZf]ŽB\rW';Qa5_|hLj & nGxQƙQUqXыmGF§k~5&DK O=rP!F+S}|rbԐqv Y @_4 ;#1c4w 0l/|eg)x VŅϡ6/s 9;pF@<eŎC?l~Q-^E5o1řpYACpSdڏ_j.6[b[&5omo$m<sr0jw{:dgkx Uj۬C￿, 2ƴ p aWe\UƉnVpr8!R'v TWo0ֆ6x =d|pGu1K[s)y_p&8 : LTˠf3gFAP2x,CkeɔZ |_/~!E#p8)..֏fj ||%s@X,o |@x ?U]\E]ˮtǝܵ[?rdE:4 ΢bU4r3o.&*;vv={̈DM)/k29jzxśmQ2xGȃC`A~f5 xXA[~ƺ2@(|Pxyk[OnFh3>çTS'#Pw<ᘁB`jN&0(=E}(UlkFvGP+⚏_aKì<VrrUb}&Wa[(e)vpp1 ӪvB X?*Jl {'% hklYMmy;>%9|,4(&AkG/dfֳEQT@x7 .^曕XC./K Q ]˜l==\l1ʼnާ!DQ + _w/zUEUʚMyi m te'Çz:>+2OU%|sbpg3򇆱<"9*sUM ?K;tNjkD:H)s,\`c"!bznjtu~hD9CaN[SHp3vϺ`W^bmaD P"*3Y_uF5t^QaΧO*-bf'[NvO+t<g޲'@)6y|'ܦH]anD~FO[_yoڴY2*2ҭ.w;l?_|4A;$.&t)g^>67/eX6Yb9Y&lRלs/A'۷owW}+ J"9ktK{}֕"UU` v&nOB8bH*r;*LXy%w~t';~,߬r22+RD#+W a`b> Z7N&A*fA ~r'_zgCJs;W>{_O_ \@\5OO^jOE¦c:E繃tBE,geh]Y]Gi|DΥz5O?-rx[Y0.?{gĝ>~詶JNp v+Vi95V:AzBF0 idL2[}VPy ^1a23v?}ZQt!]wT|H=$H9'}Hcd+ ĤVĩ|Q;w`ajx0:1~hyĜݽ{Ν;۸{ 0V޽Qօ Yz VĴH1:>E+uGcrҺ|W.Oj3ǦjZ2{=d;嗛7oPH6J.{`\A~37zz9[0Q0Q-U/_-?J2h ߷5!m ߳hzVF+*O7~:2ynE;<%35%`~_⽳; QB 祒oqZZNRS3mFbd>b_\0LGd4ޝn1^!lr^)- l iP]+ -Xm5M*Lev] j?P8#zz2EiyuܔoƼqOl^]W[7lݳfډrWj[&Z6pS/]sD0c,G$Xa,0!ޱepOo6|,3?I|fsOl:lzƽL֭۷˃wyt#cI?mӑ~qbͨU֎Lwr{jo&-EK/ iҒy!(((= zޣLF򊌵74wn]&c{*&yٖC*"c&lo:wbIYfÇJ'|*3@m)Z+Ņb]E,V>Jyfh&_ݎ{OȖMWl7QvBն2UGDkiC[=gCɉ9\HpܨE`&db1ܓ s9QS`uU[pꄁLQ{]MM;HAOjvϹҖ#fR932/\_wWD{wgIτ Ӽr%8755| kh"xjI&v}8go<s [/ikR+\/ W_QKf2 &1& 1bTb4\ VF> :s&H5t [&9zw[uN- ;`_Lo 'jԀ&س?/AH'&)-6t @GY~g s4&5S/WiTh|沢_~"os:p;=t}]L:'VUOI>y߻0krF hoT6~@>? *db i&'ih,-- ̸TT ˵kzx(bnǝ=;ί8P; f$$'F5{T!+nt{'L KDq0bլ3bMӉ3܂F io<1Mwȧ9lePPX) [Q9G[^o(ͪvdlKh}+C4516%p 96XEe@[91YO#Q^E֎y7x꽯&;CUHlH|s57=xD옐~+ܑ XĠWh'"p0?ZkW35gU^훞eeVUu^V? ~Ɗ*sx|7!QGsmgUӥ&%i"D"DLS"Ϭƚ 4xLP<+$ĺ'7!d/}U|ԗ[T awi`[WG͊zQ/}byo~WǤf\(P$0R-o)T7LϣH i'TWM62BìX["΃{ -=ȕ+(?I> )+,@#\1O+?y?Xe$͞ay͝gxA U8_6 2Qy>gV(+* jn] E>l E<8ᮨY5UM5Sf>g75Uޚ5\֎g*Mo&P`WȈବ-i`6Gv6? kJԄ C7 r%?_g ;i;2@)pΘHU`[. h"罋\d ϸb;FQ*ƵfA%FZlG2\F8[z5\ *ռ[iNExL>|"@ $rށxrA!>I:V8GXXzO &bdM[nMQl}跚zN 练ĉvbkx$>H \w?[bY~"ǔA>Bfz :'v|qG`+wW001e =Fa|t Va)o}+v"L&EDV52x<8)x$ ufBaCahTO+VHdj8FR5a qƦ/k,ʸr-bZZLcIB}z`":*ؾpߕO3xRB3zhԶDs %M>;,(¡FW:q1}Ҥ$脱C.k JEnșו{݄⦦;}O'͊ RYWCvs(`9&%ƔTs&*G}+_i (C)'3'hI9ҿ|)H>I&jI):(vIߍ R&S)HB†BD0%ڴEE%pТ܀l5b~HMADx~5݇4A |z#:[X#KMbVSYX]@0)Ԥ43..-)RSKC! ߬랡KV<8jClvgż/ D]zaR=5UBd((2 q%Çsg&1A3lð>Ogaq`9{~-JZnGcF k:4C/r/IC ɍW;=y mJ'oh++_?fͨc>{z)jw"bH~^EU%W&jI^1u bMFiԃ|3)) O q,IM5]II*+,>_{b`׿%3Pn~!m~vkR'1ɉ>#z<:"wnhGEKجj`m\I2$CE>; ;Y9f.%ĸ,Ҫi Brq|<bK+_ \2غA :Օf?^xiꪎarku^fJMB!1utԎlz?Ec4-ʙ˥$ghug<_GǼ`R)瞚Ÿ\3knmXb I;wO0#\>Ef΍4EjA,\a,i-'6O䳹Hj6| _P t,RO/OURRleͯE ={lN6ۍ'ѣ ">_W{]R̤hšUIVK"Or:>#MNKx'L5jBK~t# "o"kހ % 0x _I![G렁wMF sҌ`@I҇dԯڿo~};BAljSyyyGh(&# FHr#:8MやcxVhBZ %6ʧpϡǺDwSh}@k|aRIBU ~Q{o^`ɏr=&qZkFADkEq^LU?Q|H+ q܈ cj=kK;q[i1sXXXC?u:a-Bȵ|9IuI)a)}C8#]i?IY^C@ǰʪD:@-=o|D`::o8>V>dg̳EŸ\wd9mG8f#p١N\#K.f7y}ᡒ;As/BJuCU4DGwi@Z+|S ]~J{.jj |Lo],wʭS\eCvT8Yc,.q6bkĺMZdh@_ny͊ _;zԛG* MD`g4|"=.3EnA^ na\@m'ʗĺ7|m(666.'_=g'@> Sh8ZzPS?kмG@滏4Dݢ_o1gKM[rGPߓO'WĄR:96Y8%׷8:&7>2ZhKo>89D>Z r OM8 }~W\m|3Q1!AtEq߾W^xJ&¿^Je#,=V"|3`"jDQu)@ %S}/&٤UZf&8~r߰? "Nz-܈D;1ny藖&X5l$2R?Wfk旵/)yt+ Y>^voc\$W.Ne6Q Zϥ$BQ'Wjie؂OlLc9P- TpYLBaƶP]Ƙ_ 뷀Z?T$*13Sk)ނUa^ DW>"|} m]&;`~̻jT,943L$Ea.{G?lC Ҋr~{e˛FX o/߶KRx6Mg-(3Ε:EAif.PR' x /=֔/ 5{pUaD{<5lfk+\[cv}ᴚCٵl$쪏okh{,M=X|6|Y)Bݤq"  J23٥F X+BE|}p~Y WjRg=M:#>Ԅeyz[?CK\Եm.2,LQl\>BC L}z|/dJOU^5Ԕ;iD JO஬϶Y<`Ol S~|ăfd}8W8Cᜃ? ['Er ά` pq8:C%ғuY,bC"ٲ/OܔP;i!mdG{r3JZC9Ygy;~Vߺ;;vɹ-a\G{mJ,ll$|b| bIj$Dɼ"|X\>*V/5It驏xmōc2u>EBq);(mx_/x×nھe?,?3oANkYIgb˧&B-8#!D I7XLMbDkiget/9 [6.?7Je)O.f%Ƒ3#a_\>_(FqD@}-,j{7??lH|$ NS'B*ll(_\>"|`-&Ɇ7sRMZN|?rxw6 ߛ<@gI0|ŵʇ<8#$\@Z"՘3XXT>yt͉p<980;=$'ٲqw)Iy[J˫*v7CN='q X%UЮ-M5gPQ]]I%$$NiTaUا#ɦySO#ڒO@<{3?I<uee,x O@uY1)aj$|,I&O -ma*'VLdH&d'rI>sҒlpOL}F"͹xW^yf8;8pcVlGQi7|R(X6D36:^470Fb-g,Sp1ͻZ>K-_SqR^rูbG\P i_# 0P{ty'Ӣq(# ;#0ȧG52{=}ā=]3k|PG?o!I{a{H>xa ͥ>,q" 5a#/LuA/{r8 Y;8Ti_[S>_$-'-MRQw¡%Ӛzĕx8ofDP-='r4y*/`(ɂ߯ȶ}ĠG0ُWMb 6Hddn>Bx!{oaCܘFH2Y* Hvաѝ3n_mXq͔O|6`Ǚ\-_FvU;ralA1FU^!&a徸lɟyu;}hgAQ, [\+?BQ8&I}?t^XZTIo0O""Ɉ|9^5 z'Lңme!dVnR!Z;ϲ4 pf%{}Ѣ{ˣ:j:C;[vx2 5YҌ6'Q>,Q&2_ZA%(va~"a݋[W[B{[+&V6.xq-|~Z>S~tBmq$P 8YbΫ-<]3|v\X_1}Q'm"ٺ':|y26|qn硇y r5Za}0}33kNTb0+w'I@楅s=!snX6P"Vcð!czӼPT(=/6ΜpwŸ{&exʚnj̕"qBVu\>H- ؇ ^@0t$I )BrK[վlڂ!Ta×뷝{j;H 5cڒtk7| ^` $mrab-s XT|-!K} Z&W~;8߿%9aɂ|>\pwƙDY^j@Gjkf\fgXM .__0fy$;#89TQI1#[ʡ)[dFApfZZy돼[gN$K8ED7+f:Iqχ NXG6ݬ{ֈ|Pi$_mPԱp|0oY0|&"!G.>PcVWyj8^y:8k:iO}Q~T43}Z׍|6-uji6|:`Y}`J>fˇRF7#< pYr11h҅heB <{^3C Za{Ӌn9%E|܊%hݓ[V4"5? -Rg,~޴t!$"'6'ŸdINqڞG:ZrȴXswpX̦WeS~vߍZX}l3H>W|fNF~9gt~pƐn1AK+Wzcȷ\9L%d2(yS>3%"17o+OcfQ;U^-}M={,23_D.0͖y$3*x((2:[ޭº4'zBD!n 1~Ag Y=>D Cgꁟ۴Ϟ޼9~vݭ^vKIlǃzU:>TTSE5TYlj '.|!Iۧ0~=s7f{.WW>{'|AQ~B&'~y@-N)b6cx( fY~-_9;l2ÐTq0ZGQk0Pb+({'U6b;8dǟ%-^zf/uQ(@xG<:bO> J>1 4BI] hE;V gZf.W]ak Swdή]N!g`j2/.+1bUB#Z>h&bȭ`)Ð/HҰ*qeG) 8% `ٟw- NU?ͫYy⪃eQ3Ay r]-I.pJefr J;I1׻_Lw|:ug⎽]Gv>{C[Gʚ䃥gI2N-+qFt@  >?-l͕7IFzt3ɞx*RZ3龦#=^~ E/y:FN븈@ $V0闂ca7|Ã&k.p*:nD}: 1+[p}u]v~_{w5o'Rc4-IB a )ˇY]" _T2kvto`̯شN9ǎ[˱U5|Mo3ΟV֯j VaA ˽_kƪ2FƣAڛƜId}Yu/L+*>sayK8Jj~Eyݻ# ;ۺz&bY0|^|AI]1Y@#9\O>gݔ )&)e뚏6í99p#r>*7nϗ-lX6(җduGӴ-Q8a;sw>{CE]VVhUIhL>O2wbV +G6|Cd)q;8ڣqcy}Ge3 A0 \g}CIuPt7 M Cp)%3A>K0$im:*ẞ;r9?^lb:v##K\UɒY߹3ˇ7 y֠c~tZ̬! q-0#;Wˇ>|bЊ s'S~27xg/~;$ACd;2aMg^tHƯ, _Abw,9%=1| v}pC)2'Nd^2$x q{j D|jaG]u䋟Vo] 8n8;ο٪-@2,N/q^-R+}C>\\u|yxu]:ez7kgj3w*Pʶ[br3SW0K>U f81[~>:;&Bq!_9kJ m uDs>YQ/~$TUK>G&-ķ~\4$բmU}|N.'#|5Ȼ0Ap76٣/*&͖aI"5eaWb@Y! 3To榎&zUY‚"Ż v||ն|q!wrRxmy\ҒO#f/W9Q6峇4(2A{6Wk{S6y\hɓ׊Nu c9th;>Kw3 MR*/H<XD0 jc3>)U$ǂjiU,Frgw-M2jc5o/** Prϒ"(|ɧW4=RI*wZ$g2Hx`Uvy;~ | -%k.RJj1G(O'jjʗhTZ1Wtq7Gh]t|͙LQy_  +ěI\ăyՕH/|6HDqsŭwwp8tPl> I0h#ib%,ȋce #-$m0eѶS7Gb_^=bS>>nǵ>=1ajAESȍ7SɇŹ"SbqQCNcH>O㑛$+;Ҭk ,.gщxn%;fK> -D9V$mi{?K&_Ts| Lo;8Lzَ3CfʇS{O]'Es+j\\edI7| u||AEɽke`@m/wp<~psi5h8.{e&@k"1@?nWx_Ա"3YKvzD2cp3.Zs 7n;8_>갠oC3.3x$@OO蘬[嶶nK>Sl/+o 4;cr8$[aDé.W Lݻ"b&>)V}1nBvqz&2TA*`bE7GrG-:[U& /ã뺴hi,:`˧z g٧ywS(eH&GDMRS{;:t7q@?{<h:`#K"8,pכܺqK;b ?h]8sA'qMDdT̕b1w|f3D{Qbi=wMyuۙu*pc=wFqA4ŏPUX"S?5-|B,3w։ k]M"fDÑ҂v~iӦEFfZK8Jx4S^&&m_/\Q<]/bL;qP[{֪OcuV}臯Ϟu&yk!A>Xψ}rvKd9A泱?\Ae>ȯc;;_^1s[mE3駟5?=9n1_X:[\յI3lPP$i/77`8|X9u9^|>)}jyVәg˱K}a/_#$Aጥ_},!iJxP/0Q4ڝ[}WVx챿oE̘Q_U^ZtY};W ~BO\s(q~_Os:pPhƒlhc|o=$pT5xCn/YOŵ[>[AIG]AB o=^<,IQ>s2^ltGL%=E :ػӸ&Mj{e]l]H]`}$[l%veqmF4H 0e3 4,1쯇34P7<~0Ý[K[O_Oڛ%~~Nn[BZ w=רӨeZ;GIeyF] .h/wӆ6JAȑsBW/HqH%jD$~R|x\'-k4\|%\PGVWAI Io $'ծڍB=qQ E3jsV42^Ј=NX7/nF3Ez$)>7c~3BQ!9Ź͏*C5>kF5#uu{pO1S؃Ձ3tinHXK}։D78lP(蘃U_9ȑ gkB#)>Qd0THYS0=!qF%ɍU0b78#&+V_H6˿gذoJ X ՐTy6,Qtz ;=N)>RV'OWGvuW]qkgxjU* )< #pzxtL|ƶeITbR0b1~cfcGiF;7[%)C,3 $\xcmQ{|%dr艖ĤҾڌR0^SxNRMB`";'QRc!RM4`pIkL+)>TXX`c"v~!9h;lk>%X]Vc{rƇ0D4|'?%>3ÑPHXRSߟךȪoh/Xt-?$%:911a_h`nަh]\_Oh; AUdí RF(lis36Ϗ)?aĘ3o"?E9K$CJC(ž̊l&-ʶt9>]Z2x́o/zg1O ~Q%%p$-xe$9D@mň5BrGÆy(80OV :NIR(qKH'SsdzL[pc| L2k2>´*-ʗ˜UB 822>|?iުjB`C>yӎ." QzripϺI_C|xʠImM+9}Y3a y.Ds [yP(:8 W3jFQ* cp)?gļ, _(0#9(A*.p9Ջ׃ߠ/8  ^/o+t_ k`ݼi pg2Z Ry%")1mS#O)DopO IldJOVsVܧy|SE1g֧Ҧ s4jD2NJ03nHoi|9~cHS[iwA X@3Wu嬕*aHLl63?|X)6Eg ZV)JROVaJ]2{Ga<Eg qALg=| A+0ߋl~Y:}~ˊݘX/mԃwkzAbi˹ig[/UpDÉ>`8>:#,?ٔHa#>gȌid>!{4@ }o: }9ax.hԄ2Cs٧ao'OVcccP{}B?N*+XZOQ38. QS{ƃG߂zG %Ȩ3NjaՖ#Gc ߋ5g?_ss)\0, }U}I~*[^Ë^t`=6ON],4JDeI$z%[ڰׇ+Y|jgdv!P>V|\a\1G>}Ĉ%gQྩ7^9C[;|'ZȞi<fզsϻtZ֧5|3L0)>;QQ(Jnjk!_̕*`㹪PuNIhjx#'7{KR5fXZ[R}:V$2,zp ؅ RSpE>f|$N)bgGXɰ;R˜l6V%8vy@߉'[[§tKZ.9s=8o{LfH Fng|6>E|4t,EQ<` pÂQ0>KP|۫+ 0I_.諼-nrOi[rOUHrp`dWZVcj@GΑ"ǎ~Z{\ˑFqmcuai[+D@BܛE |]ܓff37|0NOxl6:[:_`k} 9P*&vkw{bR WO#> L5uD-;U$AFM\"G2ŤܛԋP\ `#c7¶^y Uw杁+hszcrG[s΍:6>)>;Yk 冡<3"-C/o//oXLt?"OYi{FrYctB߰ 3pM2S-VdnYz9{L)>) 9#wӚhd:>etu v.Vr41qAE(K^wT4A#pe}xgGjHFTyv~r?_黙M aW}^_ D:Ȏ6>Oɰ#G)v[Ƈ}dahƓKe J#Pe}ԐҦr0*[n J{l7zl _y*QWU z6>n_Pf7Ѥ,k~bE|\r32LWIQv^+_+aHy{%~x:PjՀ1͐πQ+4 왪VdXӞ}DsS -1z|8bpUYƇ*g:I-RuuNv.)3=yZЩP!w-*x2mǩa3\ĺ8v-tɬ,ЋLa[>(ɉׁ^Uq<"ꃒU=>l+>!04F˝)"  [a'Q1c̥nsv<,~[#_/3QL%XPr{+#Q|^{vugk";-z'H`cMAm)p0gpnC49oD=QSroOr*0)Ju /njl.vc>M줌܋#{OoEmgA74壏E F ?޸BX27=,E1>^/ç{ 2 X=?Uύ)XG"UE?-%4Ňw$%Vj 1!|XJhYKcLҀqNaHsp\ZC{P;!{B>R |S_4zLb a8_$/BwQw{n|e\." f<؅"Igs]R{V$j.ֿw;?)()5v]// gfGJO_j#s!J1>'[ NHJӸ/>'i!s*J-G͸XH>!ƈ{_SRɨi80>|X]ŅmyKpSSSeHBW=bxRL-Vm[MQ0>ӳՃ(41;Oרi2?;fVBEBQxf@p`{CS_+'|{4.WU']q#l~ {{Զ߸q;/$=//?&~gDHeji`0Q,g#Ԅ!pߴ?36R3*_#yjR(*LeL鍒gq%jëdM%}5D0{On&}SږꚜM ] o h˻q; Ɂ <2vvv |ׇ)퐏P9eBmb+[7lc Eɍ7qڰGakP_bbppseWxLf#V}l;X߼7ߑQzgvhIj`{0;Oao,ŇQJ x4~';[gPqCOss|4%rB3JZKK r.O ~l`)S~ JosN^>>0t ِYS}諯q@$p{Q9 +#]ͅ_.0|ۖ;epqu\M(:7=/=BJK[/{$ 6.|]'Z[K:J[[ Xݕ'.? E99xe bϸ^'D(˴?LА #=ڈHK9Y|۫;JӗͶCh /D?>CW3ډJ;O ꛃ *{;;;7y}١̌({B81ýp# P!,co(>t8Uy1['^tJ V:x?UUS/Id2o: Uᗏ 7$'׳_w}'7dԧ+Rj" ‚!-ijP4 gD-^ 2ěsĢj0(/<6'C<>)F|kh(:-^zs" [zz]=wfV"S|) d0cT$wp 4bj`,8/5"c7G𓗛 e[ꞚF\u盙0/L?Z^՝\]__\^cb*FS(/o9IpZt `yp">XW)>9XXlϗz$P0LQ+1uUe| JxyQDALrJCG`NROl ط jVD6]M˹'[*1Z-Vj#|3 M-lihhav7O~hw E1M"|ʸv0469cBFFvլqɐ6y6#//*\H=N1zZNvza0,m6^.46Z z*[*{jnw<#5.qs/KMUBؑC ^`8ȇh,(z&/!!/`%/z+'pb0>V`Uyѓ`:OυN)bA #˞#U(MLh'"qx<a+~'0^ oJ]X ?/3 Zl ‡(0>B{YĶ7(HR9iWQgH7 ]'dGj8"ͮU Rw4)4M-\pف?$D π K>KҚkZvǛ&,}"۶R%܀՗9',V[Ր kf* ݐjX>GV>u3휊#(Pn4])Spq TFyw7AӧT2o.|DѪ:SJLuٱڋL^YdgtvV(vag3M\/>mk?p궥柲mi8F-xq pѐM,p4PQ[w {]<=U7*/E}iSV$Q`򢧖;Ong1X^s5b^ym^`H6A_y"*sUogYmYYWgoZgWmuzNNzuխ+7W쵫+iP)Uj$%J2{WuYSng ZNǿWUT@@5UKJ;)HdɰjUXKTuvmiU9NVuqϧm.}{2wX,^{?<fV^ũs~1%+$F f[[>:<%S6̘IײcD<:'4&@s(ft{zTz65k=PN!f6QzRB,tL}nYaЩ PB /t;h:(=4y㠠:jG>I^6ult5nݫ! Y#M.z t%RN82AWDp dl0А*ƻXŮt(̐6v7PRR(,[[ vH222ĴY=p`Tc3\4 <LCP7C6I3a!ǜt 3}#J:q3n.x  ns{a%dXq49vQ #gnuŐp8HܣPEԲe4vqau ] ޕfVAL>edv R)X&`\:©$̱%eh4A `Ixui!㝌 GvH3;`ϧ.(?t?xܣs*D/iupLP6ǒ^ɇͫl_HĜ9qC60es?iStr|FUfF *UL] 6s'%2)]^i 8;̗:1ļf\c:a^lDkIu'R[`˘s'@Y9:k=S}p(igZu֦ñ 5)QUH$4[Xp!yp,V>lӸ qFG\{Ǣ_BK|zb#ɏ?7n4Z&oJ>"Y%xv[GZ'w8':$;hmDsyhnR3\~W57rq<$3ք>=|g g 5'rKڟwThoWۈt|l1 1?-  :츰jՅ Ox,\-woAGK<;yK- XyR m Y1M4B|{x\~ea[V" *$^H\9&_45cqcb"xg>^#̍͝`{3ݓD W It` L&Hx9^ f^Äg ;~ ''Xg#{0:Q&eհH2d5u1Ьք;FMhmar1M 6"Q'ZLRG~]?{gB/˝ZnW4xv-|#OokƜXDfmKfj"5>tMyϬg&3Aj=mczٚ[Wc@4w0cLU3I3,?.iEŵ X܎t/G~}؉GeFhO#%R+c_}}r`q_,5WI\ی5-Q0_*$Ƙ6OJݶV3؋_ٺOdr_XD}FF;\M6rw~j5/H?L DffG>h}e7?F+_-731Pyș?wMzld07粉} &_N }L,\,m:<۰uS.G rRcdzagOSfw::㘚num+ly InVѽ:j-rv93FZ|s^;D ߏ|8}T/C*vп,Pz)șQ^x O("$v_zm(sbhì:,sպ7Lk=c?n?4"NGϣZk9; ALU75q:oA'JPSύ"v.S[P0zY$<jf&C|552gWg)Kg|A*.fpAH{Y,NM(e}O]?7g# TłyTY\Ez)IGp>yS'[aLM02(.QȇM|z7m. 8leܧ4TnΠ=>~PZŘ֣)`d3ʑx6 ΢&d-Yfۣ޷~ '*>}P=0 FF[ː>|ǿ@̷<sJ):B/T6(ؓD_=h*loe#pf:Ԙa$ @ >WԳ{ۣ0(Ma ήO߱'ImϿlnesW\K\"A1x$Lݸw|Nyqmv?* XwlOצvP$:@F?[H27ɇIPC=p)Hي`a)uWQMϭ~w|]f׳Ghs87|a>M^_]Ƌ^<čS,hp[psQ0^>csz K<zU%MZ=/"fLxbw :"/. S3Lئ Hlv?tKx4սѰا7/|nWN;I)i(HmI蓻\&Zw(ԟ|dJ#_g"F 7lW##JN~m<nDW| wcyU/J/LfϘ`os|,6:k`5U]u9Bew}]󰓿*6vOw<*^J^|m 0T!z,$නiq] |xʋ;B*lx33'emڞ>lL*^׿6L/mEG 22Ɵ>@uqx3B{˥ڟյm"ȌN9%xԻgl;{R*z55Ӵ.FemiT)1$iGRBiP= p3ͷ=.0hrO~ILi[x'<|Z(|W7?d$쓗%2 fnҏ^ }0gԋ $M P/Ә2@R{oCZī-߫OwVVO^VM}`Z%(}+}wr+TJ(Nu(iT2F`$ ԝ\-AE{J)kRa-g}8gs2sV^ȟbyI~mr|Pȳߧ,*O}@ݓChG[]QFNH#Cȧw Pù3Hxna>ɯu^1UޔE=zey[iԸHy./6_g<0 UYp>n7G`СU,nvzԃ&ȚPI2: :.3V/=@ o()I~]eKŽsʛRVSQ;6xIXV*B6jK" V"` >A;ڱ α1Cx͜zM ?1U]ɫ2L`gxOrum-qt5x\I@f;jӛi#*NbI_(l[XX&EelwʨI,/'~=|J4"ش8ή CI'S.#ACweר \7Y~B]g8,+䩞 +zBU^۽v@ )/>҆,mVIO.g$6iĠlUSu8;hQNǣG/I.?Ωwd!`sĒ%l0?NaK~^&-8;<[NkĨy3Gן=DB- -P>V![Sf3(m;0xs-OMbJ&$LOO5  I6*LWnVu4b`qƙ[*lҜ MO 2F|f22L]si LdKJ KjMGaV/`G(^|T4qgN۾nѦh(!Ht0F;=m\?_0h}"wH%ܸ qRi[{o뚯5ɑX0qOopW >| XgaSRR@3Jeggg6_ .^>xEZGw"1IGܸd]˗/qAn(~nnL1w3]F:qw >燭ec|5n&̰>kL6γ<~RK򙭕<Yf[JhOu*x/aw\*kX{C*TRjkk`H----rc1D40o(Qv)$~^=i5/6*bٰL!%qw߉ KNdnt sצ:{˄r϶V͞.Y{/?"/TQ 钝4^" 撥D &) }TȍFc22_,w: ?ȱrvr Q!o ]c V`:@!,]:e١LDqJtO58BD)YG[ u,J2^W[j/?,-PVy!)R?)-4j6qn%ߋcfӴ)wO游CV-5s5&:#w-ɩѩ|FTh-׉9a}cݣTTq' u~m0K̙Uc~x#-mM%]AÞBH/h]?JI\Ra̒Z&_Ku0#Yg3rA) ߽NͳyDP_y$q'\c>,YM=yH [v|tc3\!+-]Oh?: DlHM8\Z/\KU"( 1H>G&vL˫w?:?EfD!.ޟ3߸cÍYK9x2ChnLU?:pj K*UJĵJF1c*az3狙n| I^ N+n*m}Age~gS挝* =g͗oܨyq7SC,C­q{%<Nf뜰;b3K}F>Qaxs34빖߂p8DbX0fLqcTHt=Ͽy*W;[3_g[b7O[sX9CDӷ_5-(KDkIMڔJpJHq. ʶĢZ}QV71充d[YE\W';/z2]Bk*O̤66 9eia~dm.[Yŵ͒@kk Ɉ2 4C2'Nd h$$"b[#cs.h9­ow\Yh\-C# "3jq]~5J)OWVEn7I,a6}硋w-+⠻seİz$*f[?ؓ //G؍Ō>)=_3a]ζ"'m2sr_?k㇣wB|:<$S"ck|{_]B)TbUR$e6Qp?__bvF*\95trqBlP45uߵ.e ȡfz~CBt9_Z^[7/nӖ|fYF ePA6ű1Th*[3lτ Ng؉QE: d@$+,M LmwWF*Fdr4)|/P Z>җr6L32.Ǩ1_/} WuE.&'h>:7Q*TsڛEkKQr+#/!|yNx3㞛ڨbr#\r`Y8j`  R,2 F: ,:|>w}l(/ !i,05ZS{^QC[[M  >upӼsϼz+%!dc_WGP)rL̇5,rv9ܒv9uQ`H|@_=:wb@7+75`0h5GP,U<؁i'trC WAze K= }k@ -=㡬 #C׏9cWJ" 1,\No6UvP>`XogwvBK8Fŝm &}c.+6:Q[);ȹbCo߰ϟ=)];_֘8*\}o J'@dzD|> 5*4V^O&1oXxLQQcCG_41U܀iVw0K)mK׾v+]Ny0qg_GWgz'?3I#j{=jn+o ; 2LɵmWTnzGV2ӠL#&@^~=%N S@BI$=Ŗ؄FWg|ru|7&zG9:̌[ޯ*izIAeyܟN:oftqn߻=e'6aA7|F%.ƨ>j{KfA]Y"YPo:A9(hZ+qx G^-uPKNff |#BPɨGUA5P/gV>@^ol닊F6 Y5y/v]uGn 'V%q1 r3RIàhBumjegٽ شl+d˼ MwN#9w7AbZ|HT&G|^7n5@BOD NR WG #N$^ũ%QQ'̟7fj⢸c#fhN+s&2u`$Iwޚ c⯫!q rpdi "]Porأƍ;:CuY;/dI 1p vBѵuE9^eʗB7V7먭J9!ٖq^/VvWz4P J@\Gz"|W>Ⱥ,KP72(EE?h d" n`. Ӊ9 H]q0Q9켰<泣JgzPR|ﲁ-:_I6J9!ٱY۸ն|QޠxU}* U"*&;c'W| 2l''CHЂzGQSFE:r{Ŀ-JtzO~/E4IuQIrClH]ʗiOf2K.Cc#'._GSk>:Y>\oZ^OTBs?UOɩIPG&]fI1^[׃}ܑ<33$t[/??.oɾXW(8J3/Pej[ǝ~'rGPժy{PavAy^9uөkw=4&h.AdrcwGސa^՜&OŐs9Ϋ/t=?Oj&e {HyI^zv "OnfPyY*J>]:T#"dL*>O#7ʧ!5zt HPL9)ʕ'¦yh\ͤ%!OQJ BO={'媵[ ia8p2ACQ" *B &OqޝgdTT^蘛@~]>|}}|JWۋzKO%:@}^>Cȼpy8r= ҵhzӈCVGMEh(ZۏT[i_YSK=+[;2ic+CZ|Iouխʭ7ɧ(}zBW5Fdi@\'䐡E&+bէ泤'ϻn~ԥ ]L55d0/ڪyOA .L" M{׵Ʀ</N`HP0I`x)C}C4+ʧ}9le/ZzICS >sBէCH BDVN St-;xawnԮbb [(^p10ٱ՗gIuÝls>gd}6SժEe 4>P_>}S僄.c%ff|ٓINS!` s_eS~Rȫfd>&h !Ncn;u(FxۻA}UסQJ?cX=Zt ^ɧ|דT5pjxz"^쏿 YnMv_#خ'^l/q;Kn2_bpYcaooGyct@&I`@ZZ z_S%H pUd5|N_9t"mf-N[B`Lt;*[WK1/ڛjV..C#.wvq/IC^8B$Cl͆#H>~iҩZ}xjZ=uM>((ǤWʫFEBOnG#p㠬|ѳ?ygyMeՉteYE04θyjo@~qp!Go=#Ʀhh_A(xx%#,2щtǵȈtHn8|9}#[ȧȧ^ןAX3|1F;4V<R<~|?穥L7 Ž#8~07;P\Ơy[o>nYxFbvPH ^glUS[4M;UB.ԪE%W_0+]P> -7Z'GFhzFg??o ŏ~Ͽ߳MRezޙ9 &蒖27ʇ;L$@ FX82GkڽI> _/{G>H|Ъ 7Tcu0XjΨ^aQ830|˗/ rxٿ~ޮfR:ܨU Ebr~qz#j<-#OPlФc6*䃤Áy&~6؃.H\cUKx({ڦbYY%]<0/}w~|VZx N)*isz&uuQ {RqԱIdЍvf62 DYjzE?M䋿 ]Ƶ\fzpقȌ1O^|+1`<ڹ wJ$%Egy[|x_S|Qfh YyO)( ͝ .ǫLT%vVz3g^mr%qGON[TdHG8T j%_ 9뗡ʝF>hzT>AKː'-ZjҤ'̵S;Oҙ@G% o5u&8[_jm `^LIGŸZm}76HD۵_nqr( E|.Í{pO@A <_pT(xD EDD%_߶-W]Id/BaM#TXDrYnuf<ߺkzf#N-HB]g_OEK j_4lY!/3{>LoWIA&_59]\&f_iME^!#SQp+.. 8b g8 L%P.FU]iAJ30}EX_n)o97H-DB㡔|.*Yh!N&tltK j"o˳D *hZׯ|ƌM1E\SLc.Z@@1:~ȴMۆYm3hLQ31,H"HM@ׂ㯫#7OX0(#P^հSհ6sEeWյ̥N:C+C7ǢjgEYv!)0$vyu")b|')naFISgMeEϻ&;d3UIeG߈M I< RH$;YE-;cxVΡ]J,XOLL}z=IFɔwש ;#|uЬU: /ho7&sK;JjsGφ+ D CW T=;%xaJHVaJUvUj{wn⿀YؒK"dQDxP~c}fH:- H)UUj.o9"` hżֹ5YĞM6 OHBgZpNЭeL͵b lRhwcU JXC8~AN-K^{$PQQco^ǔv-Iζ64γ ~ aEtж- z2vgЁf<O(1Rpo)m𭳩 g%'O~ظ)@ Hx< TdP2] X ‚Cnjʐ˂nL<#[W):hb/~YBNOgJi{],\5$nrAYX)o!I :V0SՕ\یƳ1NƛT#IykέiS%-.oN7PaaiQS5vw( l 70;/zT6]|_Ͽ&t%B Ih4=ϙ9E2Д@h^`H XFT9rj习a^pEV_~7ytޚqWs/v8(o`_&R??+ഫ#8d^gH?`O鞭6C}~ۢ"{.VYPhhgtb Ϳw.*մz|n\k`;c}}(U2hL`i+31 h=tKp¨}C6lݲVݺB7jbMoäk2~a.c ģ9+>s~kW4tf'=&+)͊Y5ȇr *T nz;SC=&tBv)2Kk;ʖ/B% 5>I ИKsu ]OČ EY~{ͻ挋W\3􅅋N=HLyh]}n; o%]y3+Y;YD=R!nuhUskrEMW % e\}䒬}shXDȊ.wevyGWܘl_%|N(d6rcF.reYQF #ЍNM'[AkKh M,(I 5̊^[)Ch#6Ir 55\Q ܃m24$ʽq],X=1Md]p+<7L &4|;6EneD{eBh8t(O;"b!G-lHJwYWWX,-,\>*]@% 8Yʟx#0Yw~[W"N=8IpSi5#XtV*"Kauă=d"Lr[Y`Y^3?bL6 . x ,9KsxsDeAl_G<].TYhӓQ4q bv!< -^=Ef!cx g$׼X$W${kp6u56݉8:~M5z鰹cCǁ:d uH]w$d̲f}?P[vf@օTw:F[`4PnP]$m |8)=@8Is9DNlpYOAhUǭe5k,T jP]X>Aܠͳ Wg]/w&L廙W, eAGNhYuQ>|xQ꯬-M\e9%>!(+iQYF>ɐ}>>|g+\tXWF.8Gex4 lD9t_`}.|$vu&&{|]exߟ[€ 6 AGwhXQ Sv0-knϷ2r11 2"a*[%^m>$Du,0+r"Zˈx]pK~ *6JLZX~UJЕEq OTA.d|'pe/U{<q26 _}a^EI= nUpwW 4ȧG>KPx@͝T~΂VCuZgPc܈ Ȃ+g-齺73do"iŒmIY>=ҩOM G{VvJ"Vul߉#&צ@Y9}n+}vtRgYdk$*UQ,Ud[ f[317j1F[ moC|p&j=J++A:-|^e?l'P0$$.W,imotwOWsNwCb04iwGQ AqXd&gQ&تVU<#?3!`SLu{HQG>h&ٻ󸦮oG LIbHqߵnu&ưTcTE"vHBZXZB$ML dTIb6MC6ܸta9o\>s﹉\i?*P%'eݻފ }7|h$q[5i]ڂ? h}:@>YDǾ7ò(⡩q8INmdFmlV )gތWs8Do  o񬴁>mj|0蚄c M.zlT8}W2Bt N mP%nSIPcס׵/ߥ.{Pyo> Gʘ |e*=z*)^6kOd&Vv1QNbL b^Id`U. ?AWzڕwwD1x<Jv*76 /l2gd XLvow'{D˵=RxhALc3e$6CnGN_>uʎ{;WM;SQ >\]bb]|snWBOθ oI(lқJ3e*A% E^;5NۭSX aĻM3U*)|yF@ 0RZ[wt?7Ai/1~;:YhȨgTh/̍ojl %nmY)=QJ >Vڑr G%Z[* bYc^at*vfO[d2Os^:P6e`eu67YX3%@8]Z9=3I釟ߍ5m jK0L)m%iʞ}~}2@Si>3,WAgd+Ӝc^.nt*a{`0%iɏ;@W=UN'yWA_<0!-ѸA.UlByu0U3Ka9jo,b}Z]@5+jz;} ȍHx8BEPŤrZKExQ%BuTSQ_Wk05b/x%Ǔ5ZH(@P=UM-dt5I|JMn w_z6 vr_{5.VzGkRSG[Vx=$@<~Vxl6G%Tզf-@ӆR_o )6ycGx wo䊋 [M{A z^q^Q~=b??i Kn>@]23du(40bE1q>}n9 >accQll~Dlz]9m;K o*#HtW¢49 v @w9RQԭɛǗ^=ޠ0-"uzب%=n_@$ǎ)3*QWPo-鍚{#pv~lu67xC/\% c¶MtUӾ>e=cd:*áwU: VMdGMljzcA?xwR>b(hS_ >?#cs꩒ٓ3i"{*93gC+B?7A?:Ѣ\([=ČuUٳ86:/$[wiǾ<[GGfq !A?xBSl z@Y.m啄&ql`~ASj$ϭߢVxy)A_1w ,r۾+%rPxq8+0x 8Yb w`ps[ ;eUkHѬ=VW~tٞ=~gW-ydz>sr:̫dS@teP]M.I?XM *69[xC]M'7,n޼WG}r)0aIof]juluëgΜ|YETb)~>/j,IxsBMj K6"0肤肼삼 KWhNLRvFㅞ1{sk %#5nb6:%%%UlZ[; }횳Y>3ըTuor䫣]5%d!b3~{Ļ4 if͗qҊ k>ܐ|3gVnS{J쟠/ .mz,))NJbɰ̙-B ՜UX JuYUVhLVOS('Hǫhܐnz_jƥ 䶶Fr2Y`a;qĉys$Й=.VtF U),ŰI+_I8{Iy1Б[pBOZ/Y-"ѕp5n b7my @ d;$T.UA :f2FHټs5W)8SDww=;2\8z|ٽ!F+_R#ď Qlmn4qvlPs4~F+iJqiF6iSVVW]$BD"%a=a5rVTڒjɹ_xS{nRO{@"Nr1VpP%%1$]9q4u`2\3b HTƟ_iyCuVKz y\* ̈f_q֭VQMQ$K:;XqGУ+scGd]*\eU%Iy띨@&Te5&GOʥdx:)/?) ;;; lL"XҜx,D,{YC[7$M 1,ƑBIPLk$<;_pG 0#bX6UظB^J5#}-2 #+AȊlFKktb^_Zܞ³cі37M^]܊,gk>!籈8wMNCz 9&;9҉>X\O#/{ TLLm*h wz CbPvIz4[5<-Ҏv96D_Š 4L?=0SIY<}zFFFss G#NRW'(|<˕Ȟ/6EnW+u!Pr&F`R^Md$d9 z=GGe|u:&hģZ}*v+b;}:'+,3s,9͗ܔyT<`ywn e Yuq}ZxVn{ Km}?t{=))pO4!: #+HD7L47[! v"MTEJbۨ>y#Yx|=7Narh;rHsٳcǞ={:.==..}Sk @c]✞5}*Wn2ehRvLAL .Rt4|FGѾ3?,;7& c)vnofDq)3sGZugL.p*{E+-+O>''.eOZT:zuw :ܰgLpt+VsRAC1lM* b d'dDFx3X_WUYIS#OP&īf? 2(;#=`a 9uӧ-|yNv߷qAݾi|<5sWaL4{: Ȭ8]yjrg+Y:AƘ=7!YV̒WW5vkɍZao)3n kӺJGݴuJJxz-@jyJVV>Ϥ301%18U :CcHhK`Rc?P'h&)6ԣo'Z&G`m[+ щ=-*V)|R>^o0g{*yE-tGAK&6r[# kI}]bG2vժm쮑 *@WB@M6DgC㫵7X4{oNW0~%#/0EQ 4W 9bv뷄~_ R4wo\O*z.ٳC)bj~vaOS"+{8*;&$cdˈ#S6M{K ̕J+~*d8ȕUқ<'QTVybDdCfm6Ar:'qK4*~.2* W*Eo5 ]:K\hBhm62zj,TbJJ !f24|#Zd59}>.SZ;LLDn!0(΢uI0#"Pu&>UȚwĢ; +mtj `POTO-ЯpT֭#\9H5KdQwdӇ~HC.@'Φ*ͧ)`D)ǵv+q=c/>1uuxUDlR!1Z< yc VG 4&=]Prtea3SǮkШuʦM-_~37zܸѓXM⊣;gY)Qk>Q:W߱~d4xiɅ<6 l|bio_=s֜NAM9ߡt쮷OA)FzZ\3PZUA|.R}A2b)$>MU;Q[_fG4|*3e3C+(Ns֐*!!ai18sTc Y'zn~Nub0eNlȯO@'f[rG+zy^pRƺʠ9.Cz,6 Unٔ:??UQ& zV4F&229jBRJ_lw) ~ ū:__ޘ>]nHOף"IӨgz缲]blOX ~O$ <q7ҌI; i)} gG3B C8*4eYc[1Sإmߘ1>êͩY^_UYUݪ{W`])hh^pg ~P&{-~Ek _a&l3$q8> C~9Baʬ(ʜՙ&F, VВ '@C>jho_ܥ!έY-Z\|t:lRXxIr6*e~JJRYrYM5<`Ђ*Fd0f$U|VA#7#~4Dd~ݫWF0p T.͕-i-+j@Y&S*YB5XYW 6l`ܰv]"RȢQT#VǮP ^]M>D׼}'u8,17YX%WA#Ni^$0@or8ݛk!J=!`\! z29A\6 -^jS񣊪njq7\L #1yNS8Bߜ/(d:6-2:9qT&/`<3Q'r|< [MolsPx<9!7yZ#|OP"LXX_^ K@-tZP,3Dw'\2JjQSG26 ¥Lp6Pض"+7u+hfDnTԆ/NKDTyTj5E}MUt#_u^XJVf}wΈ% *X;@aC6-vzGo*f 'ͧC>Ym]&~4ڣi6bbq7 VVR9Ԡ+^;jKO'yV+rNM$֙/bKh܅aXEr{Bz-?ozgs6,}tmUQB pw_ذm)ܠ/]S㎏ 4%qAȫk/#T1hT#ή'2";:&j-'[%Osl鞖ƪ浈 H:9hȥWH(90u[&h"AO ԁ [G1lJ̇x~?dg_^ĉ;T : NWG~%xjJ{c7:ƮdNVD#||Lݑrol~sex3^=g&;)zw|KW_$o?som[sK5TbX]={sZҏLY)#D3ώn =҄m-@5u^\wڠ5q`~z֑R,P옊}יTx[?vh 6f}XNۋG+-:k5=3)꿅6*v E@d$laMĴj^ _AKgk|bq7RmCo^ 6N&ĨTLd2_e CT)bQK :3W'Æ}`5kUu֡7DN4|G2Yb֞g|3wESrr|CPSE\|˦VGS kN;Kk8{TFhN=\vJ'5Z2eV=5&*h$MXHIp{\L8ugŇD'wE٫@/w\|#_Q{i>FjN8栯᧼^/s뫜(K M"K")Qh_$)Z  ^gQħ{. 9;o\)3>_Hd|!ukɒ55 鉷7$jղ+}MyY!/ֵ?OWx$(%ttyp(@Np*՛je# ܮ[;~v=l-ౣ>,=t@/G%%˴\{Fb 8O %eq'V9z-r+K%5*ArE#/bYRӬ}nSM^ ԔY^4 Hx Hc)eBR v|cI'L#c KӘ>]gNs\ 55Y^;2uĬZ%Ϯ]y)ݖ){iCzF;C}~VšL#%AS.ZE\Ԑc-^kOoNt6xLOfn24ݎ~ٺ֦mAzoSGtj4fȗ*Q9곝yTبn[LYn}dj*}Fԡ+iM;~9 /'| *Ƹ/uޣm2>ﻷ3Rx6]y>9[o=9*Av\<##W:2mAAz,ׯ_4^e73 'HLh]LIֈ}rءvpHo:y`fzѡ1JL鱣ۗ1%$qѲΌ!" #Hq8T}ղV_ SXVR^_!;tv%  n33)5)ksZɗ-L:H"R67$۴Q\U% 1p.)C4,C;ܥh\S7Zs"YkkM9ޤmW|s?$ Wz\)kX8Ag`Rk?G%G/9cOX~3b6cR~_Ζr\S>Wda?۝FE* ɏ[/jzDT$$spwG!1/yA0SbC"Ah0[<|%dߴ{?+Qp\/q<4V/Q_D}{Ahv *h4YiffsM0Rv4ĉOs!q)@XYuhM#ILrG`2PmԊ r_y Vż S1l+?W{`OnH_a“A~z\^8mX~ەۊd 53l?1M~" Hێׯw9yz{[D/|b}qD Hni6;;ʩyFWY%w"e1va"` tag; moo is completely standalone. Then you can start roasting your very own lexer/tokenizer: ```js const moo = require('moo') let lexer = moo.compile({ WS: /[ \t]+/, comment: /\/\/.*?$/, number: /0|[1-9][0-9]*/, string: /"(?:\\["\\]|[^\n"\\])*"/, lparen: '(', rparen: ')', keyword: ['while', 'if', 'else', 'moo', 'cows'], NL: { match: /\n/, lineBreaks: true }, }) ``` And now throw some text at it: ```js lexer.reset('while (10) cows\nmoo') lexer.next() // -> { type: 'keyword', value: 'while' } lexer.next() // -> { type: 'WS', value: ' ' } lexer.next() // -> { type: 'lparen', value: '(' } lexer.next() // -> { type: 'number', value: '10' } // ... ``` When you reach the end of Moo's internal buffer, next() will return `undefined`. You can always `reset()` it and feed it more data when that happens. On Regular Expressions ---------------------- RegExps are nifty for making tokenizers, but they can be a bit of a pain. Here are some things to be aware of: * You often want to use **non-greedy quantifiers**: e.g. `*?` instead of `*`. Otherwise your tokens will be longer than you expect: ```js let lexer = moo.compile({ string: /".*"/, // greedy quantifier * // ... }) lexer.reset('"foo" "bar"') lexer.next() // -> { type: 'string', value: 'foo" "bar' } ``` Better: ```js let lexer = moo.compile({ string: /".*?"/, // non-greedy quantifier *? // ... }) lexer.reset('"foo" "bar"') lexer.next() // -> { type: 'string', value: 'foo' } lexer.next() // -> { type: 'space', value: ' ' } lexer.next() // -> { type: 'string', value: 'bar' } ``` * The **order of your rules** matters. Earlier ones will take precedence. ```js moo.compile({ identifier: /[a-z0-9]+/, number: /[0-9]+/, }).reset('42').next() // -> { type: 'identifier', value: '42' } moo.compile({ number: /[0-9]+/, identifier: /[a-z0-9]+/, }).reset('42').next() // -> { type: 'number', value: '42' } ``` * Moo uses **multiline RegExps**. This has a few quirks: for example, the **dot `/./` doesn't include newlines**. Use `[^]` instead if you want to match newlines too. * Since an excluding character ranges like `/[^ ]/` (which matches anything but a space) _will_ include newlines, you have to be careful not to include them by accident! In particular, the whitespace metacharacter `\s` includes newlines. Line Numbers ------------ Moo tracks detailed information about the input for you. It will track line numbers, as long as you **apply the `lineBreaks: true` option to any rules which might contain newlines**. Moo will try to warn you if you forget to do this. Note that this is `false` by default, for performance reasons: counting the number of lines in a matched token has a small cost. For optimal performance, only match newlines inside a dedicated token: ```js newline: {match: '\n', lineBreaks: true}, ``` ### Token Info ### Token objects (returned from `next()`) have the following attributes: * **`type`**: the name of the group, as passed to compile. * **`text`**: the string that was matched. * **`value`**: the string that was matched, transformed by your `value` function (if any). * **`offset`**: the number of bytes from the start of the buffer where the match starts. * **`lineBreaks`**: the number of line breaks found in the match. (Always zero if this rule has `lineBreaks: false`.) * **`line`**: the line number of the beginning of the match, starting from 1. * **`col`**: the column where the match begins, starting from 1. ### Value vs. Text ### The `value` is the same as the `text`, unless you provide a [value transform](#transform). ```js const moo = require('moo') const lexer = moo.compile({ ws: /[ \t]+/, string: {match: /"(?:\\["\\]|[^\n"\\])*"/, value: s => s.slice(1, -1)}, }) lexer.reset('"test"') lexer.next() /* { value: 'test', text: '"test"', ... } */ ``` ### Reset ### Calling `reset()` on your lexer will empty its internal buffer, and set the line, column, and offset counts back to their initial value. If you don't want this, you can `save()` the state, and later pass it as the second argument to `reset()` to explicitly control the internal state of the lexer. ```js    lexer.reset('some line\n') let info = lexer.save() // -> { line: 10 } lexer.next() // -> { line: 10 } lexer.next() // -> { line: 11 } // ... lexer.reset('a different line\n', info) lexer.next() // -> { line: 10 } ``` Keywords -------- Moo makes it convenient to define literals. ```js moo.compile({ lparen: '(', rparen: ')', keyword: ['while', 'if', 'else', 'moo', 'cows'], }) ``` It'll automatically compile them into regular expressions, escaping them where necessary. **Keywords** should be written using the `keywords` transform. ```js moo.compile({ IDEN: {match: /[a-zA-Z]+/, type: moo.keywords({ KW: ['while', 'if', 'else', 'moo', 'cows'], })}, SPACE: {match: /\s+/, lineBreaks: true}, }) ``` ### Why? ### You need to do this to ensure the **longest match** principle applies, even in edge cases. Imagine trying to parse the input `className` with the following rules: ```js keyword: ['class'], identifier: /[a-zA-Z]+/, ``` You'll get _two_ tokens — `['class', 'Name']` -- which is _not_ what you want! If you swap the order of the rules, you'll fix this example; but now you'll lex `class` wrong (as an `identifier`). The keywords helper checks matches against the list of keywords; if any of them match, it uses the type `'keyword'` instead of `'identifier'` (for this example). ### Keyword Types ### Keywords can also have **individual types**. ```js let lexer = moo.compile({ name: {match: /[a-zA-Z]+/, type: moo.keywords({ 'kw-class': 'class', 'kw-def': 'def', 'kw-if': 'if', })}, // ... }) lexer.reset('def foo') lexer.next() // -> { type: 'kw-def', value: 'def' } lexer.next() // space lexer.next() // -> { type: 'name', value: 'foo' } ``` You can use `Object.fromEntries` to easily construct keyword objects: ```js Object.fromEntries(['class', 'def', 'if'].map(k => ['kw-' + k, k])) ``` States ------ Moo allows you to define multiple lexer **states**. Each state defines its own separate set of token rules. Your lexer will start off in the first state given to `moo.states({})`. Rules can be annotated with `next`, `push`, and `pop`, to change the current state after that token is matched. A "stack" of past states is kept, which is used by `push` and `pop`. * **`next: 'bar'`** moves to the state named `bar`. (The stack is not changed.) * **`push: 'bar'`** moves to the state named `bar`, and pushes the old state onto the stack. * **`pop: 1`** removes one state from the top of the stack, and moves to that state. (Only `1` is supported.) Only rules from the current state can be matched. You need to copy your rule into all the states you want it to be matched in. For example, to tokenize JS-style string interpolation such as `a${{c: d}}e`, you might use: ```js let lexer = moo.states({ main: { strstart: {match: '`', push: 'lit'}, ident: /\w+/, lbrace: {match: '{', push: 'main'}, rbrace: {match: '}', pop: 1}, colon: ':', space: {match: /\s+/, lineBreaks: true}, }, lit: { interp: {match: '${', push: 'main'}, escape: /\\./, strend: {match: '`', pop: 1}, const: {match: /(?:[^$`]|\$(?!\{))+/, lineBreaks: true}, }, }) // <= `a${{c: d}}e` // => strstart const interp lbrace ident colon space ident rbrace rbrace const strend ``` The `rbrace` rule is annotated with `pop`, so it moves from the `main` state into either `lit` or `main`, depending on the stack. Errors ------ If none of your rules match, Moo will throw an Error; since it doesn't know what else to do. If you prefer, you can have moo return an error token instead of throwing an exception. The error token will contain the whole of the rest of the buffer. ```js moo.compile({ // ... myError: moo.error, }) moo.reset('invalid') moo.next() // -> { type: 'myError', value: 'invalid', text: 'invalid', offset: 0, lineBreaks: 0, line: 1, col: 1 } moo.next() // -> undefined ``` You can have a token type that both matches tokens _and_ contains error values. ```js moo.compile({ // ... myError: {match: /[\$?`]/, error: true}, }) ``` ### Formatting errors ### If you want to throw an error from your parser, you might find `formatError` helpful. Call it with the offending token: ```js throw new Error(lexer.formatError(token, "invalid syntax")) ``` It returns a string with a pretty error message. ``` Error: invalid syntax at line 2 col 15: totally valid `syntax` ^ ``` Iteration --------- Iterators: we got 'em. ```js for (let here of lexer) { // here = { type: 'number', value: '123', ... } } ``` Create an array of tokens. ```js let tokens = Array.from(lexer); ``` Use [itt](https://www.npmjs.com/package/itt)'s iteration tools with Moo. ```js for (let [here, next] of itt(lexer).lookahead()) { // pass a number if you need more tokens // enjoy! } ``` Transform --------- Moo doesn't allow capturing groups, but you can supply a transform function, `value()`, which will be called on the value before storing it in the Token object. ```js moo.compile({ STRING: [ {match: /"""[^]*?"""/, lineBreaks: true, value: x => x.slice(3, -3)}, {match: /"(?:\\["\\rn]|[^"\\])*?"/, lineBreaks: true, value: x => x.slice(1, -1)}, {match: /'(?:\\['\\rn]|[^'\\])*?'/, lineBreaks: true, value: x => x.slice(1, -1)}, ], // ... }) ``` Contributing ------------ Do check the [FAQ](https://github.com/tjvr/moo/issues?q=label%3Aquestion). Before submitting an issue, [remember...](https://github.com/tjvr/moo/blob/master/.github/CONTRIBUTING.md) no-context-moo-ea38135/cow.png000066400000000000000000000401371431654322400162420ustar00rootroot00000000000000PNG  IHDRzgQ@&IDATxu`ɒUC,Vla;2s`)Nkn4)0ߨ̟I8=)@SP@] WPP)(8+((+sOv?> ~e=y}!'g%5:;}g{Q>ρ]Uz^Ge( .{7^}[ ϭow{9"EEѽY~%VtƫD b.8>8 8(۹sSo=`v FdЍ}_}{ЗNG0rU4;~-{sd~ [L|sO\HW:1.ȞcaZ Qg5-cb' :ʦF1=}ϙ#wl5qP zt?@EΨI12+"x jVK caTV |86iGDGDRV("! DP 0  3SJZBglhZXXhۏ *4^<ŏM`v̶%~(lH}b"v:.PR!" JkSA.-0Jrh*VY> OYW k-"!QD84" b"1&|ivP_Uwjʕ FGG111)Fm|l/TsH\zPcϞ=փMh"KD3AD`yK⹮ fUl( /ƺql7~wf/-*̕W^y[{ѵȷ-E d@@ȥlDahbq,6HSc N?ƺ (?>9rU>|㌕^(I۫Z$(Fǰ (,ɖEQ>c~w5[qf3q>v7sWML:^}K{ރq͕P n]3 VLI`  @D+\LE?$ DrY>r tZ-g#cW꯯Wss4eRp:g) |" Dɫ=R`fPXib~E?NA$1jBiZf4x}/(=+Y{^,)*]}nlF] {0MCȂ1$ 7΃ Ȳ` `fhGCg c}qcǎኁta=***ݩ9xlHM_u/7'f,W8&oLCp.ݒ2jۊxacEQz)lĢZ-[tUcԊ$A8-.>4!㢋.=x 8yQhi4kc$Q'jXeqϦvĻ5 ^KL%f&"^kX|T{/4V$FVM \KBkab^>%kZ `:{l&l65ƞR҉}p׏]'rjQZ1` x=II9u:IRIEms7֭341mn/]vY? >+KD! -> Vo-VS̉5PH%۠T4MRI-*MohNJRq6^v3E(;V*D 81b1" FQP\" |h@ ;9MJR/p? h$bulڴ HLNi}Dań6[Je1p@ L&;{g:H>NFrޭSy;$;Ih o"Er:JX+qC) 0@?K/С# @ CDYF"`cDJbŘXA*",GYJI5Q*qɒ"T@ 1f +V$MMMRsE ݁[Eͥ[k˪}oun"Ky1*2m؀ټ?VdJv vN'˭ cRV@,B?iK&WCkϹϞBFƃ]xy\?{o&DZ| ̬!,4|;.?{ߗeffd]I%gF̈ xՏғʚS'"NDd7qnh )fȻ25 b9AS+@\9Fkp!w38w s\zZ}dR\`.D AY/^I=;D* K5T{F!R(I`XZ}툟HMqs#߸58z\#QPkp j W-P›s dU(Y \Av]RQt+ \cڎ#7grOa,ټ<֭[Gs933@Ec -#G-dV[jn dSNmM ҃c<|ߕqzY|jUxt=tйifq|#iKf19GT/g9v8\)z|} osNxkP1MP[8C0>:5*Wt bEn-y\/7G{?qh{Ə%PM6٘YM3D@r1^Uo۾n'5$QAL֯~Л6mo~+[Pt,$"Q#$ hI 7Q$cGwΒv!p"$Dۖ-HFME[ѩ)+-ڈON7n&s}9&`=: h6o12mK^+Qp^\}ǯ^bUj*Iĸf\_~`~~`kI taI͐ v)xӢ3gNEr.r }X#ض 'bfnZːV7qmĐlPp2f51"3aoZLSIV'ouΏwwr& ( z߭ؾ׭/#gh\r]jZ-BJ,``[ώEJ烆#%,g+D@p$=0^y7jCi8mp8@A-Z~JMf/]"C$."åۧN'%K`3_q}xYNWD R=ESN -qq:ϣS"TP*uxѝk翡؏5ѵB >2 L0\#Rx6)wށ\-Hy'PίoܲX<4:c82bJ;6"<g'-/Ɗ<.wGI$h.ٵ^Pƍz~lŃ…;w(xv* D4D@B.QPYʵ>jݾgx40wi4M"`BFB=Jg|7ж*oZ}h?v4b`Q*R"]nI t뚩fe.aȗ_z78f5A@Njb} 1:׮]cSzlUx"8v?_{ov% *LTlag >v yg&Ȩmܴ.yo&8:^kt:5䦮u`t6D@$a9RRJ |tE D+@꿉 K(L[L6?6~RY./m{ =?m//rB zN\tUt5kp3wlۻw/z)_?硩@&rcĵ=/++_Yt/jKfsK|:~波<.E}aL @Yʄ<#ed(df{^B#qX /a-[ ǷeRa 1˩>AsRW*d>0^$QYYu-o2k0k5, g\q1ҁ%wxK8qϫ }{ysu=S$U8k.$,'֐trπNUC)eZLA멀437KyĺZ酕DS` LL\"VR> ]01 +WX|꩞=ݼVV%_&:go)Y?(dF"sK̶e|ә9K7'&eXsV7GY;5kݏMkZlhJh@s@ 5}Z.S1% ȞLs<;/8R#rգ:o&3$ATpgR2.l=1^\Xb&| >cNkK]`$&| ܊X%(_N6#'?MoRl E TmB-"x)zjh92nB@l1}րgxLbY⦆+\:*}Քz#P0wȈ1r `~\uk sŃ& {qOξ[6]LwLxp-?Kudτ",q<= & o8CB$UqT(MV2Jd(nJPgEvd> &O_]^M 4HTK^ M~jĀObom pv3U|3lpzRr-Tm'B&vM'Oiеc]FVMR  j 2?&dM} Q,ϕɂ; 7 i Ci;+ hnRV ۶=`}7_ͬ[+* dtϷ@.#"5yޟ.0률Jwaa2^M9kyKxSͰ%R2B WgϮ`iiWM5SjS悕VDʖRoК-&tf2M,"H"2JnmQh yo^P(:\ex,',19}EJZUdZr.JCRDbW$U̎Ghmt,bGWH34،Vu-FPqW뛮ݬjʋ |I2ѣ>l<>,nlH xoT妦'I,\+*!MQ/){TA VTrJT<^Fz2vynf=w4 }.!{ˣ{VAȣ zwk(5v jloqZܵ&ƍF']ճ~fno>lH=q  д,7ERc6jHUBktlԶ1^4]GSTD,"H&Yg1/zW[Y Us肁&%v~8,6=Xn4T)./wKzl'lw\5_׹&mfLJlkChb(+@JJ2v^f΅2!T\*sSFaZts >Y[ Ir|%xruF]dChF(ea[  ,mc᪘.suFpQ{Rۗ ߂oA7Y BGMLGvYӹC 69LxiT_p|knp@)_/9g\12/U#֞0MԩPA$b D51<}Y;f.}Σrh_s[eXҿ-t{o!9D2Z3k.jlLBTM& ЪdF5j]XXDZĈlq'рMet0:U Af"+WS8os#kVcb"k{ 3UqM˥Lg=EF }^K9m w(r͏BL2 x)Xw܋ʀٍHSR}"b﫢#9{2n[faf_'y_^wyArŽwSYy^vKιAWq?(*l0~ 5+ęm-6KnuY|;őI=ȣF9"MY#!!b=ػ16(>TWW:a,gi*HF>>R!F:Zթ--WDB9t +rBȬ)Ƽ.ZlbF*! '8zv o;O a#op4.RVĜ@5LDMNDlMH{A* â %ʢk Lj)J2JދZl#2QT Qީ^ ՏMS=xƚ6QH|]$G5~wW=%:)~ӭݵU{=ub炚vM,e Mp:Jzm)ْ[0=R*&?HʜT@T DA6UU%vZpWHķ כ~[]X7 pN~jj8f8NMWmXUeeU·_YsC$u.Lk".Ƥp/J-ݓF76cfLF@SPDyW2`U"T)#xW<;цqoɎ[Y٭W8`]VMZQ0;b"$Lk^Twt :YOY"7:Ku;Z UѯMe74:珙d΁gIVtN){5EDA_wSY^_+8kK)uMT ku~WU;SAQ +jWmM{(X*zS tu/pᘏ;lYfgyha(5qWV[:r8Iqζ6tDqMNiPͣB@77կf5M1VEZ5i(AXPD{o:UE8ɉ Y/s6=ZsC(=%.d$p3z%&hkf1qk_{gH{~]Rեt2vE:+k{oD: :9 lSI[XmʆMw>+.2`yށ>N~[Y{z-;w7Fɳ^JDhњ$6A.UG*ߵWhͲ|[TƆ3?Sƭ6ީ{W#vnXc~ӝ&ʲ\ʽ}KMG{^sFl0W!W%(G#c1P6n p;kV]!ȶIUzpobc:f]f"9yiףC&*I'Yጁs8m7{14OȚ;5aDi 9Uck1dΊٰc//4hKM?}AOceJg'$4O!Y'4ʧ mr2LATx"_>uřeY6 r4|SQkyf@Iq3 Ԛ_NaȂgaNt#c5p8Lwl&{ʪlsvq&-0]&xP*`bo$jhH c,BنKvhHζ._b~n 0Gιk2-VFQ)D' cӝqӒ%ƙ H+,EP>y]"$ Q#h&KUD؀]eY.!b;PX# 3ZY!Dt;{N@5fcz!p M"Ī8G~t<,t% UPEVF"aʏێ1|pw8n?MƝ[XUk ֈJYyרT;(r& "Ȍ{w z0zW C̴ bFwUTe}/@c5Pެ%qo"=y7LӛcGB y5qQJUVޱUR}[h(YJ], _ 'Wcܱc~e}eg@y;`6䨽i7UG2cQ }<"u +A vDPRŨ1fկy[< M,SPceU}btbtyzp-f (|Nv1Xp9._!/cbc2|>qPT/s^A^~^YZajhՙ٨냎ܕ?/82*uh;'LpOύԐN^ ciSo?]&Or!j*mlf窐|VW̱ `XcK1 c(Z2i~j;Wͭ#ns<6c̰  _i}nQ|~F#]jnY3*tm?^O5Ss@~BT?u[fΈ=$BbCFYRTo̕Ƙ';D XsVᜥ 4GKyK~i-D' 77;ۺ"c 60IT7^\"G.T5@ѧ!!3}(qo`TI*2̑#Ԙ%aNnIctg1B]x=ϼ{ɲsečƼ++eћ^7]XVXk!k- ۴w%4T~gy1Ѣ幒 c, *.7i"]]h b(h; ~_+Y Pl[0z5s=ʺ6y՘?={Dt1k?S7s=Lt]J̠c>{2q hpXQMlQ%gkDYOb6NU{ݝsWc2_GXk]8C]gkm8 l*:G5A,>J'"<ԟˆ/vop֮kL;{7}]kσ*~DƘt:oK‹U{cr%>CVl>t :Vtխ zNwbj3ŗ%ft6a'e`,c =~AkYG\fLLQN{EQX ;Eٱwr.]av!O+vG|򓟴Mw'[LmxC^_s&ts=w/X5L܏_"c/Z9UfY;k1'9y˟wxoJEYH UY"Vu2u1.>蓯zUtQA;W5q\Q9g8lcBcƈa?w @4YՎn5y} m3188Bgkۻ13JUlx֤/ `\YkM`|.Nـg/zuc9h4 ƺojivD0VR>z큷$)!;Τj BB22f(,&N僴VK333cavX_:DZ](J\^zCƜ`F_:t5=Vi~Uo6~Q*zJ@k-/O< Pb37F7lN}ddrrv} i[c k LۆԜ2Hx 7]-ϗo/-/>b_)VB-p/ҽH*ps[Ei!jZݠ)cz+$y_J<}Ugig>'N\!w Y0k^njC5M1G&lZ?5aj?2 o0*JͺUZu;#Y_ZX=m7v;} avk~yx+voɸً'mz/ٖIQn6|>̦Fm7,B j%E8I~Pi>| qicHq"8C/c49uuV8_Baf+j*Q,}c˕o')㐤*:`nn:LaWh TBE)*Ija-JO)uxJ,N?0!U32Gp@WsΟuH+ ]q\+\p.] = y'䉾`KH0=ecGR"!Oߧx/dXI{Lˈs<u.R֨^,u:p -/k )GV*O !G1Z8Eރ!H6҈ $}'=BK'۵~"k ڱc>-똔BL*Z8}HM_xqP t=i:Zk1n}v*gmD @ !Tܰa2 ؃4M;PJ(BZoAPEO퉿:^im'Pxh):.1 d7=p 2QkPh}sfΝ ,@"YXki`;®]obQw‰-[wsג,߷Gx}aͯAIENDB`no-context-moo-ea38135/moo.js000066400000000000000000000442401431654322400160730ustar00rootroot00000000000000(function(root, factory) { if (typeof define === 'function' && define.amd) { define([], factory) /* global define */ } else if (typeof module === 'object' && module.exports) { module.exports = factory() } else { root.moo = factory() } }(this, function() { 'use strict'; var hasOwnProperty = Object.prototype.hasOwnProperty var toString = Object.prototype.toString var hasSticky = typeof new RegExp().sticky === 'boolean' /***************************************************************************/ function isRegExp(o) { return o && toString.call(o) === '[object RegExp]' } function isObject(o) { return o && typeof o === 'object' && !isRegExp(o) && !Array.isArray(o) } function reEscape(s) { return s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&') } function reGroups(s) { var re = new RegExp('|' + s) return re.exec('').length - 1 } function reCapture(s) { return '(' + s + ')' } function reUnion(regexps) { if (!regexps.length) return '(?!)' var source = regexps.map(function(s) { return "(?:" + s + ")" }).join('|') return "(?:" + source + ")" } function regexpOrLiteral(obj) { if (typeof obj === 'string') { return '(?:' + reEscape(obj) + ')' } else if (isRegExp(obj)) { // TODO: consider /u support if (obj.ignoreCase) throw new Error('RegExp /i flag not allowed') if (obj.global) throw new Error('RegExp /g flag is implied') if (obj.sticky) throw new Error('RegExp /y flag is implied') if (obj.multiline) throw new Error('RegExp /m flag is implied') return obj.source } else { throw new Error('Not a pattern: ' + obj) } } function pad(s, length) { if (s.length > length) { return s } return Array(length - s.length + 1).join(" ") + s } function lastNLines(string, numLines) { var position = string.length var lineBreaks = 0; while (true) { var idx = string.lastIndexOf("\n", position - 1) if (idx === -1) { break; } else { lineBreaks++ } position = idx if (lineBreaks === numLines) { break; } if (position === 0) { break; } } var startPosition = lineBreaks < numLines ? 0 : position + 1 return string.substring(startPosition).split("\n") } function objectToRules(object) { var keys = Object.getOwnPropertyNames(object) var result = [] for (var i = 0; i < keys.length; i++) { var key = keys[i] var thing = object[key] var rules = [].concat(thing) if (key === 'include') { for (var j = 0; j < rules.length; j++) { result.push({include: rules[j]}) } continue } var match = [] rules.forEach(function(rule) { if (isObject(rule)) { if (match.length) result.push(ruleOptions(key, match)) result.push(ruleOptions(key, rule)) match = [] } else { match.push(rule) } }) if (match.length) result.push(ruleOptions(key, match)) } return result } function arrayToRules(array) { var result = [] for (var i = 0; i < array.length; i++) { var obj = array[i] if (obj.include) { var include = [].concat(obj.include) for (var j = 0; j < include.length; j++) { result.push({include: include[j]}) } continue } if (!obj.type) { throw new Error('Rule has no type: ' + JSON.stringify(obj)) } result.push(ruleOptions(obj.type, obj)) } return result } function ruleOptions(type, obj) { if (!isObject(obj)) { obj = { match: obj } } if (obj.include) { throw new Error('Matching rules cannot also include states') } // nb. error and fallback imply lineBreaks var options = { defaultType: type, lineBreaks: !!obj.error || !!obj.fallback, pop: false, next: null, push: null, error: false, fallback: false, value: null, type: null, shouldThrow: false, } // Avoid Object.assign(), so we support IE9+ for (var key in obj) { if (hasOwnProperty.call(obj, key)) { options[key] = obj[key] } } // type transform cannot be a string if (typeof options.type === 'string' && type !== options.type) { throw new Error("Type transform cannot be a string (type '" + options.type + "' for token '" + type + "')") } // convert to array var match = options.match options.match = Array.isArray(match) ? match : match ? [match] : [] options.match.sort(function(a, b) { return isRegExp(a) && isRegExp(b) ? 0 : isRegExp(b) ? -1 : isRegExp(a) ? +1 : b.length - a.length }) return options } function toRules(spec) { return Array.isArray(spec) ? arrayToRules(spec) : objectToRules(spec) } var defaultErrorRule = ruleOptions('error', {lineBreaks: true, shouldThrow: true}) function compileRules(rules, hasStates) { var errorRule = null var fast = Object.create(null) var fastAllowed = true var unicodeFlag = null var groups = [] var parts = [] // If there is a fallback rule, then disable fast matching for (var i = 0; i < rules.length; i++) { if (rules[i].fallback) { fastAllowed = false } } for (var i = 0; i < rules.length; i++) { var options = rules[i] if (options.include) { // all valid inclusions are removed by states() preprocessor throw new Error('Inheritance is not allowed in stateless lexers') } if (options.error || options.fallback) { // errorRule can only be set once if (errorRule) { if (!options.fallback === !errorRule.fallback) { throw new Error("Multiple " + (options.fallback ? "fallback" : "error") + " rules not allowed (for token '" + options.defaultType + "')") } else { throw new Error("fallback and error are mutually exclusive (for token '" + options.defaultType + "')") } } errorRule = options } var match = options.match.slice() if (fastAllowed) { while (match.length && typeof match[0] === 'string' && match[0].length === 1) { var word = match.shift() fast[word.charCodeAt(0)] = options } } // Warn about inappropriate state-switching options if (options.pop || options.push || options.next) { if (!hasStates) { throw new Error("State-switching options are not allowed in stateless lexers (for token '" + options.defaultType + "')") } if (options.fallback) { throw new Error("State-switching options are not allowed on fallback tokens (for token '" + options.defaultType + "')") } } // Only rules with a .match are included in the RegExp if (match.length === 0) { continue } fastAllowed = false groups.push(options) // Check unicode flag is used everywhere or nowhere for (var j = 0; j < match.length; j++) { var obj = match[j] if (!isRegExp(obj)) { continue } if (unicodeFlag === null) { unicodeFlag = obj.unicode } else if (unicodeFlag !== obj.unicode && options.fallback === false) { throw new Error('If one rule is /u then all must be') } } // convert to RegExp var pat = reUnion(match.map(regexpOrLiteral)) // validate var regexp = new RegExp(pat) if (regexp.test("")) { throw new Error("RegExp matches empty string: " + regexp) } var groupCount = reGroups(pat) if (groupCount > 0) { throw new Error("RegExp has capture groups: " + regexp + "\nUse (?: … ) instead") } // try and detect rules matching newlines if (!options.lineBreaks && regexp.test('\n')) { throw new Error('Rule should declare lineBreaks: ' + regexp) } // store regex parts.push(reCapture(pat)) } // If there's no fallback rule, use the sticky flag so we only look for // matches at the current index. // // If we don't support the sticky flag, then fake it using an irrefutable // match (i.e. an empty pattern). var fallbackRule = errorRule && errorRule.fallback var flags = hasSticky && !fallbackRule ? 'ym' : 'gm' var suffix = hasSticky || fallbackRule ? '' : '|' if (unicodeFlag === true) flags += "u" var combined = new RegExp(reUnion(parts) + suffix, flags) return {regexp: combined, groups: groups, fast: fast, error: errorRule || defaultErrorRule} } function compile(rules) { var result = compileRules(toRules(rules)) return new Lexer({start: result}, 'start') } function checkStateGroup(g, name, map) { var state = g && (g.push || g.next) if (state && !map[state]) { throw new Error("Missing state '" + state + "' (in token '" + g.defaultType + "' of state '" + name + "')") } if (g && g.pop && +g.pop !== 1) { throw new Error("pop must be 1 (in token '" + g.defaultType + "' of state '" + name + "')") } } function compileStates(states, start) { var all = states.$all ? toRules(states.$all) : [] delete states.$all var keys = Object.getOwnPropertyNames(states) if (!start) start = keys[0] var ruleMap = Object.create(null) for (var i = 0; i < keys.length; i++) { var key = keys[i] ruleMap[key] = toRules(states[key]).concat(all) } for (var i = 0; i < keys.length; i++) { var key = keys[i] var rules = ruleMap[key] var included = Object.create(null) for (var j = 0; j < rules.length; j++) { var rule = rules[j] if (!rule.include) continue var splice = [j, 1] if (rule.include !== key && !included[rule.include]) { included[rule.include] = true var newRules = ruleMap[rule.include] if (!newRules) { throw new Error("Cannot include nonexistent state '" + rule.include + "' (in state '" + key + "')") } for (var k = 0; k < newRules.length; k++) { var newRule = newRules[k] if (rules.indexOf(newRule) !== -1) continue splice.push(newRule) } } rules.splice.apply(rules, splice) j-- } } var map = Object.create(null) for (var i = 0; i < keys.length; i++) { var key = keys[i] map[key] = compileRules(ruleMap[key], true) } for (var i = 0; i < keys.length; i++) { var name = keys[i] var state = map[name] var groups = state.groups for (var j = 0; j < groups.length; j++) { checkStateGroup(groups[j], name, map) } var fastKeys = Object.getOwnPropertyNames(state.fast) for (var j = 0; j < fastKeys.length; j++) { checkStateGroup(state.fast[fastKeys[j]], name, map) } } return new Lexer(map, start) } function keywordTransform(map) { // Use a JavaScript Map to map keywords to their corresponding token type // unless Map is unsupported, then fall back to using an Object: var isMap = typeof Map !== 'undefined' var reverseMap = isMap ? new Map : Object.create(null) var types = Object.getOwnPropertyNames(map) for (var i = 0; i < types.length; i++) { var tokenType = types[i] var item = map[tokenType] var keywordList = Array.isArray(item) ? item : [item] keywordList.forEach(function(keyword) { if (typeof keyword !== 'string') { throw new Error("keyword must be string (in keyword '" + tokenType + "')") } if (isMap) { reverseMap.set(keyword, tokenType) } else { reverseMap[keyword] = tokenType } }) } return function(k) { return isMap ? reverseMap.get(k) : reverseMap[k] } } /***************************************************************************/ var Lexer = function(states, state) { this.startState = state this.states = states this.buffer = '' this.stack = [] this.reset() } Lexer.prototype.reset = function(data, info) { this.buffer = data || '' this.index = 0 this.line = info ? info.line : 1 this.col = info ? info.col : 1 this.queuedToken = info ? info.queuedToken : null this.queuedText = info ? info.queuedText: ""; this.queuedThrow = info ? info.queuedThrow : null this.setState(info ? info.state : this.startState) this.stack = info && info.stack ? info.stack.slice() : [] return this } Lexer.prototype.save = function() { return { line: this.line, col: this.col, state: this.state, stack: this.stack.slice(), queuedToken: this.queuedToken, queuedText: this.queuedText, queuedThrow: this.queuedThrow, } } Lexer.prototype.setState = function(state) { if (!state || this.state === state) return this.state = state var info = this.states[state] this.groups = info.groups this.error = info.error this.re = info.regexp this.fast = info.fast } Lexer.prototype.popState = function() { this.setState(this.stack.pop()) } Lexer.prototype.pushState = function(state) { this.stack.push(this.state) this.setState(state) } var eat = hasSticky ? function(re, buffer) { // assume re is /y return re.exec(buffer) } : function(re, buffer) { // assume re is /g var match = re.exec(buffer) // will always match, since we used the |(?:) trick if (match[0].length === 0) { return null } return match } Lexer.prototype._getGroup = function(match) { var groupCount = this.groups.length for (var i = 0; i < groupCount; i++) { if (match[i + 1] !== undefined) { return this.groups[i] } } throw new Error('Cannot find token type for matched text') } function tokenToString() { return this.value } Lexer.prototype.next = function() { var index = this.index // If a fallback token matched, we don't need to re-run the RegExp if (this.queuedGroup) { var token = this._token(this.queuedGroup, this.queuedText, index) this.queuedGroup = null this.queuedText = "" return token } var buffer = this.buffer if (index === buffer.length) { return // EOF } // Fast matching for single characters var group = this.fast[buffer.charCodeAt(index)] if (group) { return this._token(group, buffer.charAt(index), index) } // Execute RegExp var re = this.re re.lastIndex = index var match = eat(re, buffer) // Error tokens match the remaining buffer var error = this.error if (match == null) { return this._token(error, buffer.slice(index, buffer.length), index) } var group = this._getGroup(match) var text = match[0] if (error.fallback && match.index !== index) { this.queuedGroup = group this.queuedText = text // Fallback tokens contain the unmatched portion of the buffer return this._token(error, buffer.slice(index, match.index), index) } return this._token(group, text, index) } Lexer.prototype._token = function(group, text, offset) { // count line breaks var lineBreaks = 0 if (group.lineBreaks) { var matchNL = /\n/g var nl = 1 if (text === '\n') { lineBreaks = 1 } else { while (matchNL.exec(text)) { lineBreaks++; nl = matchNL.lastIndex } } } var token = { type: (typeof group.type === 'function' && group.type(text)) || group.defaultType, value: typeof group.value === 'function' ? group.value(text) : text, text: text, toString: tokenToString, offset: offset, lineBreaks: lineBreaks, line: this.line, col: this.col, } // nb. adding more props to token object will make V8 sad! var size = text.length this.index += size this.line += lineBreaks if (lineBreaks !== 0) { this.col = size - nl + 1 } else { this.col += size } // throw, if no rule with {error: true} if (group.shouldThrow) { var err = new Error(this.formatError(token, "invalid syntax")) throw err; } if (group.pop) this.popState() else if (group.push) this.pushState(group.push) else if (group.next) this.setState(group.next) return token } if (typeof Symbol !== 'undefined' && Symbol.iterator) { var LexerIterator = function(lexer) { this.lexer = lexer } LexerIterator.prototype.next = function() { var token = this.lexer.next() return {value: token, done: !token} } LexerIterator.prototype[Symbol.iterator] = function() { return this } Lexer.prototype[Symbol.iterator] = function() { return new LexerIterator(this) } } Lexer.prototype.formatError = function(token, message) { if (token == null) { // An undefined token indicates EOF var text = this.buffer.slice(this.index) var token = { text: text, offset: this.index, lineBreaks: text.indexOf('\n') === -1 ? 0 : 1, line: this.line, col: this.col, } } var numLinesAround = 2 var firstDisplayedLine = Math.max(token.line - numLinesAround, 1) var lastDisplayedLine = token.line + numLinesAround var lastLineDigits = String(lastDisplayedLine).length var displayedLines = lastNLines( this.buffer, (this.line - token.line) + numLinesAround + 1 ) .slice(0, 5) var errorLines = [] errorLines.push(message + " at line " + token.line + " col " + token.col + ":") errorLines.push("") for (var i = 0; i < displayedLines.length; i++) { var line = displayedLines[i] var lineNo = firstDisplayedLine + i errorLines.push(pad(String(lineNo), lastLineDigits) + " " + line); if (lineNo === token.line) { errorLines.push(pad("", lastLineDigits + token.col + 1) + "^") } } return errorLines.join("\n") } Lexer.prototype.clone = function() { return new Lexer(this.states, this.state) } Lexer.prototype.has = function(tokenType) { return true } return { compile: compile, states: compileStates, error: Object.freeze({error: true}), fallback: Object.freeze({fallback: true}), keywords: keywordTransform, } })); no-context-moo-ea38135/package-lock.json000066400000000000000000006343621431654322400201710ustar00rootroot00000000000000{ "name": "moo", "version": "0.5.1", "lockfileVersion": 1, "requires": true, "dependencies": { "@babel/code-frame": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0.tgz", "integrity": "sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA==", "dev": true, "requires": { "@babel/highlight": "^7.0.0" } }, "@babel/core": { "version": "7.4.3", "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.4.3.tgz", "integrity": "sha512-oDpASqKFlbspQfzAE7yaeTmdljSH2ADIvBlb0RwbStltTuWa0+7CCI1fYVINNv9saHPa1W7oaKeuNuKj+RQCvA==", "dev": true, "requires": { "@babel/code-frame": "^7.0.0", "@babel/generator": "^7.4.0", "@babel/helpers": "^7.4.3", "@babel/parser": "^7.4.3", "@babel/template": "^7.4.0", "@babel/traverse": "^7.4.3", "@babel/types": "^7.4.0", "convert-source-map": "^1.1.0", "debug": "^4.1.0", "json5": "^2.1.0", "lodash": "^4.17.11", "resolve": "^1.3.2", "semver": "^5.4.1", "source-map": "^0.5.0" }, "dependencies": { "debug": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", "dev": true, "requires": { "ms": "^2.1.1" } }, "lodash": { "version": "4.17.11", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", "dev": true }, "ms": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", "dev": true }, "source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", "dev": true } } }, "@babel/generator": { "version": "7.4.0", "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.4.0.tgz", "integrity": "sha512-/v5I+a1jhGSKLgZDcmAUZ4K/VePi43eRkUs3yePW1HB1iANOD5tqJXwGSG4BZhSksP8J9ejSlwGeTiiOFZOrXQ==", "dev": true, "requires": { "@babel/types": "^7.4.0", "jsesc": "^2.5.1", "lodash": "^4.17.11", "source-map": "^0.5.0", "trim-right": "^1.0.1" }, "dependencies": { "lodash": { "version": "4.17.11", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", "dev": true }, "source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", "dev": true } } }, "@babel/helper-function-name": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz", "integrity": "sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw==", "dev": true, "requires": { "@babel/helper-get-function-arity": "^7.0.0", "@babel/template": "^7.1.0", "@babel/types": "^7.0.0" } }, "@babel/helper-get-function-arity": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz", "integrity": "sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ==", "dev": true, "requires": { "@babel/types": "^7.0.0" } }, "@babel/helper-plugin-utils": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0.tgz", "integrity": "sha512-CYAOUCARwExnEixLdB6sDm2dIJ/YgEAKDM1MOeMeZu9Ld/bDgVo8aiWrXwcY7OBh+1Ea2uUcVRcxKk0GJvW7QA==", "dev": true }, "@babel/helper-split-export-declaration": { "version": "7.4.0", "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.0.tgz", "integrity": "sha512-7Cuc6JZiYShaZnybDmfwhY4UYHzI6rlqhWjaIqbsJGsIqPimEYy5uh3akSRLMg65LSdSEnJ8a8/bWQN6u2oMGw==", "dev": true, "requires": { "@babel/types": "^7.4.0" } }, "@babel/helpers": { "version": "7.4.3", "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.4.3.tgz", "integrity": "sha512-BMh7X0oZqb36CfyhvtbSmcWc3GXocfxv3yNsAEuM0l+fAqSO22rQrUpijr3oE/10jCTrB6/0b9kzmG4VetCj8Q==", "dev": true, "requires": { "@babel/template": "^7.4.0", "@babel/traverse": "^7.4.3", "@babel/types": "^7.4.0" } }, "@babel/highlight": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0.tgz", "integrity": "sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw==", "dev": true, "requires": { "chalk": "^2.0.0", "esutils": "^2.0.2", "js-tokens": "^4.0.0" }, "dependencies": { "ansi-styles": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "requires": { "color-convert": "^1.9.0" } }, "chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, "requires": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", "supports-color": "^5.3.0" } }, "supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, "requires": { "has-flag": "^3.0.0" } } } }, "@babel/parser": { "version": "7.4.3", "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.4.3.tgz", "integrity": "sha512-gxpEUhTS1sGA63EGQGuA+WESPR/6tz6ng7tSHFCmaTJK/cGK8y37cBTspX+U2xCAue2IQVvF6Z0oigmjwD8YGQ==", "dev": true }, "@babel/plugin-syntax-object-rest-spread": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.2.0.tgz", "integrity": "sha512-t0JKGgqk2We+9may3t0xDdmneaXmyxq0xieYcKHxIsrJO64n1OiMWNUtc5gQK1PA0NpdCRrtZp4z+IUaKugrSA==", "dev": true, "requires": { "@babel/helper-plugin-utils": "^7.0.0" } }, "@babel/template": { "version": "7.4.0", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.4.0.tgz", "integrity": "sha512-SOWwxxClTTh5NdbbYZ0BmaBVzxzTh2tO/TeLTbF6MO6EzVhHTnff8CdBXx3mEtazFBoysmEM6GU/wF+SuSx4Fw==", "dev": true, "requires": { "@babel/code-frame": "^7.0.0", "@babel/parser": "^7.4.0", "@babel/types": "^7.4.0" } }, "@babel/traverse": { "version": "7.4.3", "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.4.3.tgz", "integrity": "sha512-HmA01qrtaCwwJWpSKpA948cBvU5BrmviAief/b3AVw936DtcdsTexlbyzNuDnthwhOQ37xshn7hvQaEQk7ISYQ==", "dev": true, "requires": { "@babel/code-frame": "^7.0.0", "@babel/generator": "^7.4.0", "@babel/helper-function-name": "^7.1.0", "@babel/helper-split-export-declaration": "^7.4.0", "@babel/parser": "^7.4.3", "@babel/types": "^7.4.0", "debug": "^4.1.0", "globals": "^11.1.0", "lodash": "^4.17.11" }, "dependencies": { "debug": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", "dev": true, "requires": { "ms": "^2.1.1" } }, "lodash": { "version": "4.17.11", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", "dev": true }, "ms": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", "dev": true } } }, "@babel/types": { "version": "7.4.0", "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.4.0.tgz", "integrity": "sha512-aPvkXyU2SPOnztlgo8n9cEiXW755mgyvueUPcpStqdzoSPm0fjO0vQBjLkt3JKJW7ufikfcnMTTPsN1xaTsBPA==", "dev": true, "requires": { "esutils": "^2.0.2", "lodash": "^4.17.11", "to-fast-properties": "^2.0.0" }, "dependencies": { "lodash": { "version": "4.17.11", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", "dev": true } } }, "@cnakazawa/watch": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/@cnakazawa/watch/-/watch-1.0.3.tgz", "integrity": "sha512-r5160ogAvGyHsal38Kux7YYtodEKOj89RGb28ht1jh3SJb08VwRwAKKJL0bGb04Zd/3r9FL3BFIc3bBidYffCA==", "dev": true, "requires": { "exec-sh": "^0.3.2", "minimist": "^1.2.0" } }, "@jest/console": { "version": "24.7.1", "resolved": "https://registry.npmjs.org/@jest/console/-/console-24.7.1.tgz", "integrity": "sha512-iNhtIy2M8bXlAOULWVTUxmnelTLFneTNEkHCgPmgd+zNwy9zVddJ6oS5rZ9iwoscNdT5mMwUd0C51v/fSlzItg==", "dev": true, "requires": { "@jest/source-map": "^24.3.0", "chalk": "^2.0.1", "slash": "^2.0.0" }, "dependencies": { "ansi-styles": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "requires": { "color-convert": "^1.9.0" } }, "chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, "requires": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", "supports-color": "^5.3.0" } }, "supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, "requires": { "has-flag": "^3.0.0" } } } }, "@jest/core": { "version": "24.7.1", "resolved": "https://registry.npmjs.org/@jest/core/-/core-24.7.1.tgz", "integrity": "sha512-ivlZ8HX/FOASfHcb5DJpSPFps8ydfUYzLZfgFFqjkLijYysnIEOieg72YRhO4ZUB32xu40hsSMmaw+IGYeKONA==", "dev": true, "requires": { "@jest/console": "^24.7.1", "@jest/reporters": "^24.7.1", "@jest/test-result": "^24.7.1", "@jest/transform": "^24.7.1", "@jest/types": "^24.7.0", "ansi-escapes": "^3.0.0", "chalk": "^2.0.1", "exit": "^0.1.2", "graceful-fs": "^4.1.15", "jest-changed-files": "^24.7.0", "jest-config": "^24.7.1", "jest-haste-map": "^24.7.1", "jest-message-util": "^24.7.1", "jest-regex-util": "^24.3.0", "jest-resolve-dependencies": "^24.7.1", "jest-runner": "^24.7.1", "jest-runtime": "^24.7.1", "jest-snapshot": "^24.7.1", "jest-util": "^24.7.1", "jest-validate": "^24.7.0", "jest-watcher": "^24.7.1", "micromatch": "^3.1.10", "p-each-series": "^1.0.0", "pirates": "^4.0.1", "realpath-native": "^1.1.0", "rimraf": "^2.5.4", "strip-ansi": "^5.0.0" }, "dependencies": { "ansi-regex": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", "dev": true }, "ansi-styles": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "requires": { "color-convert": "^1.9.0" } }, "chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, "requires": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", "supports-color": "^5.3.0" } }, "strip-ansi": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", "dev": true, "requires": { "ansi-regex": "^4.1.0" } }, "supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, "requires": { "has-flag": "^3.0.0" } } } }, "@jest/environment": { "version": "24.7.1", "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-24.7.1.tgz", "integrity": "sha512-wmcTTYc4/KqA+U5h1zQd5FXXynfa7VGP2NfF+c6QeGJ7c+2nStgh65RQWNX62SC716dTtqheTRrZl0j+54oGHw==", "dev": true, "requires": { "@jest/fake-timers": "^24.7.1", "@jest/transform": "^24.7.1", "@jest/types": "^24.7.0", "jest-mock": "^24.7.0" } }, "@jest/fake-timers": { "version": "24.7.1", "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-24.7.1.tgz", "integrity": "sha512-4vSQJDKfR2jScOe12L9282uiwuwQv9Lk7mgrCSZHA9evB9efB/qx8i0KJxsAKtp8fgJYBJdYY7ZU6u3F4/pyjA==", "dev": true, "requires": { "@jest/types": "^24.7.0", "jest-message-util": "^24.7.1", "jest-mock": "^24.7.0" } }, "@jest/reporters": { "version": "24.7.1", "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-24.7.1.tgz", "integrity": "sha512-bO+WYNwHLNhrjB9EbPL4kX/mCCG4ZhhfWmO3m4FSpbgr7N83MFejayz30kKjgqr7smLyeaRFCBQMbXpUgnhAJw==", "dev": true, "requires": { "@jest/environment": "^24.7.1", "@jest/test-result": "^24.7.1", "@jest/transform": "^24.7.1", "@jest/types": "^24.7.0", "chalk": "^2.0.1", "exit": "^0.1.2", "glob": "^7.1.2", "istanbul-api": "^2.1.1", "istanbul-lib-coverage": "^2.0.2", "istanbul-lib-instrument": "^3.0.1", "istanbul-lib-source-maps": "^3.0.1", "jest-haste-map": "^24.7.1", "jest-resolve": "^24.7.1", "jest-runtime": "^24.7.1", "jest-util": "^24.7.1", "jest-worker": "^24.6.0", "node-notifier": "^5.2.1", "slash": "^2.0.0", "source-map": "^0.6.0", "string-length": "^2.0.0" }, "dependencies": { "ansi-styles": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "requires": { "color-convert": "^1.9.0" } }, "chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, "requires": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", "supports-color": "^5.3.0" } }, "supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, "requires": { "has-flag": "^3.0.0" } } } }, "@jest/source-map": { "version": "24.3.0", "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-24.3.0.tgz", "integrity": "sha512-zALZt1t2ou8le/crCeeiRYzvdnTzaIlpOWaet45lNSqNJUnXbppUUFR4ZUAlzgDmKee4Q5P/tKXypI1RiHwgag==", "dev": true, "requires": { "callsites": "^3.0.0", "graceful-fs": "^4.1.15", "source-map": "^0.6.0" } }, "@jest/test-result": { "version": "24.7.1", "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-24.7.1.tgz", "integrity": "sha512-3U7wITxstdEc2HMfBX7Yx3JZgiNBubwDqQMh+BXmZXHa3G13YWF3p6cK+5g0hGkN3iufg/vGPl3hLxQXD74Npg==", "dev": true, "requires": { "@jest/console": "^24.7.1", "@jest/types": "^24.7.0", "@types/istanbul-lib-coverage": "^2.0.0" } }, "@jest/test-sequencer": { "version": "24.7.1", "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-24.7.1.tgz", "integrity": "sha512-84HQkCpVZI/G1zq53gHJvSmhUer4aMYp9tTaffW28Ih5OxfCg8hGr3nTSbL1OhVDRrFZwvF+/R9gY6JRkDUpUA==", "dev": true, "requires": { "@jest/test-result": "^24.7.1", "jest-haste-map": "^24.7.1", "jest-runner": "^24.7.1", "jest-runtime": "^24.7.1" } }, "@jest/transform": { "version": "24.7.1", "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-24.7.1.tgz", "integrity": "sha512-EsOUqP9ULuJ66IkZQhI5LufCHlTbi7hrcllRMUEV/tOgqBVQi93+9qEvkX0n8mYpVXQ8VjwmICeRgg58mrtIEw==", "dev": true, "requires": { "@babel/core": "^7.1.0", "@jest/types": "^24.7.0", "babel-plugin-istanbul": "^5.1.0", "chalk": "^2.0.1", "convert-source-map": "^1.4.0", "fast-json-stable-stringify": "^2.0.0", "graceful-fs": "^4.1.15", "jest-haste-map": "^24.7.1", "jest-regex-util": "^24.3.0", "jest-util": "^24.7.1", "micromatch": "^3.1.10", "realpath-native": "^1.1.0", "slash": "^2.0.0", "source-map": "^0.6.1", "write-file-atomic": "2.4.1" }, "dependencies": { "ansi-styles": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "requires": { "color-convert": "^1.9.0" } }, "chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, "requires": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", "supports-color": "^5.3.0" } }, "supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, "requires": { "has-flag": "^3.0.0" } } } }, "@jest/types": { "version": "24.7.0", "resolved": "https://registry.npmjs.org/@jest/types/-/types-24.7.0.tgz", "integrity": "sha512-ipJUa2rFWiKoBqMKP63Myb6h9+iT3FHRTF2M8OR6irxWzItisa8i4dcSg14IbvmXUnBlHBlUQPYUHWyX3UPpYA==", "dev": true, "requires": { "@types/istanbul-lib-coverage": "^2.0.0", "@types/yargs": "^12.0.9" } }, "@types/babel__core": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.1.tgz", "integrity": "sha512-+hjBtgcFPYyCTo0A15+nxrCVJL7aC6Acg87TXd5OW3QhHswdrOLoles+ldL2Uk8q++7yIfl4tURtztccdeeyOw==", "dev": true, "requires": { "@babel/parser": "^7.1.0", "@babel/types": "^7.0.0", "@types/babel__generator": "*", "@types/babel__template": "*", "@types/babel__traverse": "*" } }, "@types/babel__generator": { "version": "7.0.2", "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.0.2.tgz", "integrity": "sha512-NHcOfab3Zw4q5sEE2COkpfXjoE7o+PmqD9DQW4koUT3roNxwziUdXGnRndMat/LJNUtePwn1TlP4do3uoe3KZQ==", "dev": true, "requires": { "@babel/types": "^7.0.0" } }, "@types/babel__template": { "version": "7.0.2", "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.0.2.tgz", "integrity": "sha512-/K6zCpeW7Imzgab2bLkLEbz0+1JlFSrUMdw7KoIIu+IUdu51GWaBZpd3y1VXGVXzynvGa4DaIaxNZHiON3GXUg==", "dev": true, "requires": { "@babel/parser": "^7.1.0", "@babel/types": "^7.0.0" } }, "@types/babel__traverse": { "version": "7.0.6", "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.0.6.tgz", "integrity": "sha512-XYVgHF2sQ0YblLRMLNPB3CkFMewzFmlDsH/TneZFHUXDlABQgh88uOxuez7ZcXxayLFrqLwtDH1t+FmlFwNZxw==", "dev": true, "requires": { "@babel/types": "^7.3.0" } }, "@types/istanbul-lib-coverage": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.0.tgz", "integrity": "sha512-eAtOAFZefEnfJiRFQBGw1eYqa5GTLCZ1y86N0XSI/D6EB+E8z6VPV/UL7Gi5UEclFqoQk+6NRqEDsfmDLXn8sg==", "dev": true }, "@types/stack-utils": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-1.0.1.tgz", "integrity": "sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw==", "dev": true }, "@types/yargs": { "version": "12.0.12", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-12.0.12.tgz", "integrity": "sha512-SOhuU4wNBxhhTHxYaiG5NY4HBhDIDnJF60GU+2LqHAdKKer86//e4yg69aENCtQ04n0ovz+tq2YPME5t5yp4pw==", "dev": true }, "abab": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.0.tgz", "integrity": "sha512-sY5AXXVZv4Y1VACTtR11UJCPHHudgY5i26Qj5TypE6DKlIApbwb5uqhXcJ5UUGbvZNRh7EeIoW+LrJumBsKp7w==", "dev": true }, "acorn": { "version": "5.7.3", "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.3.tgz", "integrity": "sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==", "dev": true }, "acorn-globals": { "version": "4.3.2", "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.3.2.tgz", "integrity": "sha512-BbzvZhVtZP+Bs1J1HcwrQe8ycfO0wStkSGxuul3He3GkHOIZ6eTqOkPuw9IP1X3+IkOo4wiJmwkobzXYz4wewQ==", "dev": true, "requires": { "acorn": "^6.0.1", "acorn-walk": "^6.0.1" }, "dependencies": { "acorn": { "version": "6.1.1", "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.1.1.tgz", "integrity": "sha512-jPTiwtOxaHNaAPg/dmrJ/beuzLRnXtB0kQPQ8JpotKJgTB6rX6c8mlf315941pyjBSaPg8NHXS9fhP4u17DpGA==", "dev": true } } }, "acorn-walk": { "version": "6.1.1", "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.1.1.tgz", "integrity": "sha512-OtUw6JUTgxA2QoqqmrmQ7F2NYqiBPi/L2jqHyFtllhOUvXYQXf0Z1CYUinIfyT4bTCGmrA7gX9FvHA81uzCoVw==", "dev": true }, "ajv": { "version": "6.10.0", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.0.tgz", "integrity": "sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg==", "dev": true, "requires": { "fast-deep-equal": "^2.0.1", "fast-json-stable-stringify": "^2.0.0", "json-schema-traverse": "^0.4.1", "uri-js": "^4.2.2" } }, "ansi-escapes": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", "dev": true }, "ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", "dev": true }, "ansi-styles": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", "dev": true }, "anymatch": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", "dev": true, "requires": { "micromatch": "^3.1.4", "normalize-path": "^2.1.1" } }, "append-transform": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-1.0.0.tgz", "integrity": "sha512-P009oYkeHyU742iSZJzZZywj4QRJdnTWffaKuJQLablCZ1uz6/cW4yaRgcDaoQ+uwOxxnt0gRUcwfsNP2ri0gw==", "dev": true, "requires": { "default-require-extensions": "^2.0.0" } }, "argparse": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "dev": true, "requires": { "sprintf-js": "~1.0.2" } }, "arr-diff": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", "dev": true }, "arr-flatten": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", "dev": true }, "arr-union": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", "dev": true }, "array-equal": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=", "dev": true }, "array-unique": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", "dev": true }, "asn1": { "version": "0.2.4", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", "dev": true, "requires": { "safer-buffer": "~2.1.0" } }, "assert-plus": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", "dev": true }, "assign-symbols": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", "dev": true }, "astral-regex": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", "dev": true }, "async": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/async/-/async-2.6.2.tgz", "integrity": "sha512-H1qVYh1MYhEEFLsP97cVKqCGo7KfCyTt6uEWqsTBr9SO84oK9Uwbyd/yCW+6rKJLHksBNUVWZDAjfS+Ccx0Bbg==", "dev": true, "requires": { "lodash": "^4.17.11" }, "dependencies": { "lodash": { "version": "4.17.11", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", "dev": true } } }, "async-limiter": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz", "integrity": "sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg==", "dev": true }, "asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", "dev": true }, "atob": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", "dev": true }, "aws-sign2": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", "dev": true }, "aws4": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==", "dev": true }, "babel-jest": { "version": "24.7.1", "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-24.7.1.tgz", "integrity": "sha512-GPnLqfk8Mtt0i4OemjWkChi73A3ALs4w2/QbG64uAj8b5mmwzxc7jbJVRZt8NJkxi6FopVHog9S3xX6UJKb2qg==", "dev": true, "requires": { "@jest/transform": "^24.7.1", "@jest/types": "^24.7.0", "@types/babel__core": "^7.1.0", "babel-plugin-istanbul": "^5.1.0", "babel-preset-jest": "^24.6.0", "chalk": "^2.4.2", "slash": "^2.0.0" }, "dependencies": { "ansi-styles": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "requires": { "color-convert": "^1.9.0" } }, "chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, "requires": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", "supports-color": "^5.3.0" } }, "supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, "requires": { "has-flag": "^3.0.0" } } } }, "babel-plugin-istanbul": { "version": "5.1.3", "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-5.1.3.tgz", "integrity": "sha512-IFyehbvRRwdBlI1lDp+FaMsWNnEndEk7065IB8NhzBX+ZKLPwPodgk4I5Gobw/8SNUUzso2Dv3hbqRh88eiSCQ==", "dev": true, "requires": { "find-up": "^3.0.0", "istanbul-lib-instrument": "^3.2.0", "test-exclude": "^5.2.2" } }, "babel-plugin-jest-hoist": { "version": "24.6.0", "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-24.6.0.tgz", "integrity": "sha512-3pKNH6hMt9SbOv0F3WVmy5CWQ4uogS3k0GY5XLyQHJ9EGpAT9XWkFd2ZiXXtkwFHdAHa5j7w7kfxSP5lAIwu7w==", "dev": true, "requires": { "@types/babel__traverse": "^7.0.6" } }, "babel-preset-jest": { "version": "24.6.0", "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-24.6.0.tgz", "integrity": "sha512-pdZqLEdmy1ZK5kyRUfvBb2IfTPb2BUvIJczlPspS8fWmBQslNNDBqVfh7BW5leOVJMDZKzjD8XEyABTk6gQ5yw==", "dev": true, "requires": { "@babel/plugin-syntax-object-rest-spread": "^7.0.0", "babel-plugin-jest-hoist": "^24.6.0" } }, "balanced-match": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", "dev": true }, "base": { "version": "0.11.2", "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", "dev": true, "requires": { "cache-base": "^1.0.1", "class-utils": "^0.3.5", "component-emitter": "^1.2.1", "define-property": "^1.0.0", "isobject": "^3.0.1", "mixin-deep": "^1.2.0", "pascalcase": "^0.1.1" }, "dependencies": { "define-property": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", "dev": true, "requires": { "is-descriptor": "^1.0.0" } }, "is-accessor-descriptor": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", "dev": true, "requires": { "kind-of": "^6.0.0" } }, "is-data-descriptor": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", "dev": true, "requires": { "kind-of": "^6.0.0" } }, "is-descriptor": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", "dev": true, "requires": { "is-accessor-descriptor": "^1.0.0", "is-data-descriptor": "^1.0.0", "kind-of": "^6.0.2" } } } }, "bcrypt-pbkdf": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", "dev": true, "requires": { "tweetnacl": "^0.14.3" } }, "benchmark": { "version": "2.1.4", "resolved": "https://registry.npmjs.org/benchmark/-/benchmark-2.1.4.tgz", "integrity": "sha1-CfPeMckWQl1JjMLuVloOvzwqVik=", "dev": true, "requires": { "lodash": "^4.17.4", "platform": "^1.3.3" } }, "benchr": { "version": "3.4.0", "resolved": "https://registry.npmjs.org/benchr/-/benchr-3.4.0.tgz", "integrity": "sha1-O97q/ucgqdfAa+vlIdD3JIJKmTM=", "dev": true, "requires": { "benchmark": "^2.1.0", "chalk": "^1.1.3", "docopt": "^0.6.2", "easy-table": "^1.0.0" } }, "brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, "braces": { "version": "2.3.2", "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", "dev": true, "requires": { "arr-flatten": "^1.1.0", "array-unique": "^0.3.2", "extend-shallow": "^2.0.1", "fill-range": "^4.0.0", "isobject": "^3.0.1", "repeat-element": "^1.1.2", "snapdragon": "^0.8.1", "snapdragon-node": "^2.0.1", "split-string": "^3.0.2", "to-regex": "^3.0.1" }, "dependencies": { "extend-shallow": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { "is-extendable": "^0.1.0" } } } }, "browser-process-hrtime": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-0.1.3.tgz", "integrity": "sha512-bRFnI4NnjO6cnyLmOV/7PVoDEMJChlcfN0z4s1YMBY989/SvlfMI1lgCnkFUs53e9gQF+w7qu7XdllSTiSl8Aw==", "dev": true }, "browser-resolve": { "version": "1.11.3", "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.3.tgz", "integrity": "sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ==", "dev": true, "requires": { "resolve": "1.1.7" }, "dependencies": { "resolve": { "version": "1.1.7", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", "dev": true } } }, "bser": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/bser/-/bser-2.0.0.tgz", "integrity": "sha1-mseNPtXZFYBP2HrLFYvHlxR6Fxk=", "dev": true, "requires": { "node-int64": "^0.4.0" } }, "buffer-from": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", "dev": true }, "cache-base": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", "dev": true, "requires": { "collection-visit": "^1.0.0", "component-emitter": "^1.2.1", "get-value": "^2.0.6", "has-value": "^1.0.0", "isobject": "^3.0.1", "set-value": "^2.0.0", "to-object-path": "^0.3.0", "union-value": "^1.0.0", "unset-value": "^1.0.0" } }, "callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true }, "camelcase": { "version": "5.3.1", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", "dev": true }, "capture-exit": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/capture-exit/-/capture-exit-2.0.0.tgz", "integrity": "sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g==", "dev": true, "requires": { "rsvp": "^4.8.4" } }, "caseless": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", "dev": true }, "chalk": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", "dev": true, "requires": { "ansi-styles": "^2.2.1", "escape-string-regexp": "^1.0.2", "has-ansi": "^2.0.0", "strip-ansi": "^3.0.0", "supports-color": "^2.0.0" } }, "chevrotain": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/chevrotain/-/chevrotain-4.2.0.tgz", "integrity": "sha512-uiwhNpkudwrk3rHxKKfrvsWNe4SBDjnswbF2FDqDfrqsfYr4gY0Yl1k2m9yPKR0fqfbiIP67EbgOv4e+JP+GGg==", "dev": true, "requires": { "regexp-to-ast": "0.3.5" } }, "ci-info": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", "dev": true }, "class-utils": { "version": "0.3.6", "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", "dev": true, "requires": { "arr-union": "^3.1.0", "define-property": "^0.2.5", "isobject": "^3.0.0", "static-extend": "^0.1.1" }, "dependencies": { "define-property": { "version": "0.2.5", "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "dev": true, "requires": { "is-descriptor": "^0.1.0" } } } }, "cliui": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", "dev": true, "requires": { "string-width": "^2.1.1", "strip-ansi": "^4.0.0", "wrap-ansi": "^2.0.0" }, "dependencies": { "ansi-regex": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", "dev": true }, "strip-ansi": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", "dev": true, "requires": { "ansi-regex": "^3.0.0" } } } }, "clone": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.2.tgz", "integrity": "sha1-Jgt6meux7f4kdTgXX3gyQ8sZ0Uk=", "dev": true, "optional": true }, "co": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", "dev": true }, "code-point-at": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", "dev": true }, "collection-visit": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", "dev": true, "requires": { "map-visit": "^1.0.0", "object-visit": "^1.0.0" } }, "color-convert": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "dev": true, "requires": { "color-name": "1.1.3" } }, "color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", "dev": true }, "combined-stream": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.7.tgz", "integrity": "sha512-brWl9y6vOB1xYPZcpZde3N9zDByXTosAeMDo4p1wzo6UMOX4vumB+TP1RZ76sfE6Md68Q0NJSrE/gbezd4Ul+w==", "dev": true, "requires": { "delayed-stream": "~1.0.0" } }, "commander": { "version": "2.20.0", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.0.tgz", "integrity": "sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==", "dev": true, "optional": true }, "compare-versions": { "version": "3.4.0", "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-3.4.0.tgz", "integrity": "sha512-tK69D7oNXXqUW3ZNo/z7NXTEz22TCF0pTE+YF9cxvaAM9XnkLo1fV621xCLrRR6aevJlKxExkss0vWqUCUpqdg==", "dev": true }, "component-emitter": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", "dev": true }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", "dev": true }, "convert-source-map": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.6.0.tgz", "integrity": "sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A==", "dev": true, "requires": { "safe-buffer": "~5.1.1" }, "dependencies": { "safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", "dev": true } } }, "copy-descriptor": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", "dev": true }, "core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", "dev": true }, "cross-spawn": { "version": "6.0.5", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", "dev": true, "requires": { "nice-try": "^1.0.4", "path-key": "^2.0.1", "semver": "^5.5.0", "shebang-command": "^1.2.0", "which": "^1.2.9" } }, "cssom": { "version": "0.3.6", "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.6.tgz", "integrity": "sha512-DtUeseGk9/GBW0hl0vVPpU22iHL6YB5BUX7ml1hB+GMpo0NX5G4voX3kdWiMSEguFtcW3Vh3djqNF4aIe6ne0A==", "dev": true }, "cssstyle": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-1.2.2.tgz", "integrity": "sha512-43wY3kl1CVQSvL7wUY1qXkxVGkStjpkDmVjiIKX8R97uhajy8Bybay78uOtqvh7Q5GK75dNPfW0geWjE6qQQow==", "dev": true, "requires": { "cssom": "0.3.x" } }, "dashdash": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", "dev": true, "requires": { "assert-plus": "^1.0.0" } }, "data-urls": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-1.1.0.tgz", "integrity": "sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==", "dev": true, "requires": { "abab": "^2.0.0", "whatwg-mimetype": "^2.2.0", "whatwg-url": "^7.0.0" }, "dependencies": { "whatwg-url": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.0.0.tgz", "integrity": "sha512-37GeVSIJ3kn1JgKyjiYNmSLP1yzbpb29jdmwBSgkD9h40/hyrR/OifpVUndji3tmwGgD8qpw7iQu3RSbCrBpsQ==", "dev": true, "requires": { "lodash.sortby": "^4.7.0", "tr46": "^1.0.1", "webidl-conversions": "^4.0.2" } } } }, "debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, "requires": { "ms": "2.0.0" } }, "decamelize": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", "dev": true }, "decode-uri-component": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", "dev": true }, "deep-is": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", "dev": true }, "default-require-extensions": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-2.0.0.tgz", "integrity": "sha1-9fj7sYp9bVCyH2QfZJ67Uiz+JPc=", "dev": true, "requires": { "strip-bom": "^3.0.0" } }, "defaults": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", "dev": true, "optional": true, "requires": { "clone": "^1.0.2" } }, "define-properties": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", "dev": true, "requires": { "object-keys": "^1.0.12" } }, "define-property": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", "dev": true, "requires": { "is-descriptor": "^1.0.2", "isobject": "^3.0.1" }, "dependencies": { "is-accessor-descriptor": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", "dev": true, "requires": { "kind-of": "^6.0.0" } }, "is-data-descriptor": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", "dev": true, "requires": { "kind-of": "^6.0.0" } }, "is-descriptor": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", "dev": true, "requires": { "is-accessor-descriptor": "^1.0.0", "is-data-descriptor": "^1.0.0", "kind-of": "^6.0.2" } } } }, "delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", "dev": true }, "detect-newline": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-2.1.0.tgz", "integrity": "sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I=", "dev": true }, "diff-sequences": { "version": "24.3.0", "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-24.3.0.tgz", "integrity": "sha512-xLqpez+Zj9GKSnPWS0WZw1igGocZ+uua8+y+5dDNTT934N3QuY1sp2LkHzwiaYQGz60hMq0pjAshdeXm5VUOEw==", "dev": true }, "docopt": { "version": "0.6.2", "resolved": "https://registry.npmjs.org/docopt/-/docopt-0.6.2.tgz", "integrity": "sha1-so6eIiDaXsSffqW7JKR3h0Be6xE=", "dev": true }, "domexception": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz", "integrity": "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==", "dev": true, "requires": { "webidl-conversions": "^4.0.2" } }, "easy-table": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/easy-table/-/easy-table-1.1.0.tgz", "integrity": "sha1-hvmrTBAvA3G3KXuSplHVgkvIy3M=", "dev": true, "requires": { "wcwidth": ">=1.0.1" } }, "ecc-jsbn": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", "dev": true, "requires": { "jsbn": "~0.1.0", "safer-buffer": "^2.1.0" } }, "end-of-stream": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", "dev": true, "requires": { "once": "^1.4.0" } }, "error-ex": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", "dev": true, "requires": { "is-arrayish": "^0.2.1" } }, "es-abstract": { "version": "1.13.0", "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.13.0.tgz", "integrity": "sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg==", "dev": true, "requires": { "es-to-primitive": "^1.2.0", "function-bind": "^1.1.1", "has": "^1.0.3", "is-callable": "^1.1.4", "is-regex": "^1.0.4", "object-keys": "^1.0.12" } }, "es-to-primitive": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.0.tgz", "integrity": "sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==", "dev": true, "requires": { "is-callable": "^1.1.4", "is-date-object": "^1.0.1", "is-symbol": "^1.0.2" } }, "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", "dev": true }, "escodegen": { "version": "1.11.1", "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.11.1.tgz", "integrity": "sha512-JwiqFD9KdGVVpeuRa68yU3zZnBEOcPs0nKW7wZzXky8Z7tffdYUHbe11bPCV5jYlK6DVdKLWLm0f5I/QlL0Kmw==", "dev": true, "requires": { "esprima": "^3.1.3", "estraverse": "^4.2.0", "esutils": "^2.0.2", "optionator": "^0.8.1", "source-map": "~0.6.1" }, "dependencies": { "esprima": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz", "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=", "dev": true } } }, "esprima": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", "dev": true }, "estraverse": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz", "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=", "dev": true }, "esutils": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", "dev": true }, "exec-sh": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.3.2.tgz", "integrity": "sha512-9sLAvzhI5nc8TpuQUh4ahMdCrWT00wPWz7j47/emR5+2qEfoZP5zzUXvx+vdx+H6ohhnsYC31iX04QLYJK8zTg==", "dev": true }, "execa": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", "dev": true, "requires": { "cross-spawn": "^6.0.0", "get-stream": "^4.0.0", "is-stream": "^1.1.0", "npm-run-path": "^2.0.0", "p-finally": "^1.0.0", "signal-exit": "^3.0.0", "strip-eof": "^1.0.0" } }, "exit": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", "dev": true }, "expand-brackets": { "version": "2.1.4", "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", "dev": true, "requires": { "debug": "^2.3.3", "define-property": "^0.2.5", "extend-shallow": "^2.0.1", "posix-character-classes": "^0.1.0", "regex-not": "^1.0.0", "snapdragon": "^0.8.1", "to-regex": "^3.0.1" }, "dependencies": { "define-property": { "version": "0.2.5", "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "dev": true, "requires": { "is-descriptor": "^0.1.0" } }, "extend-shallow": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { "is-extendable": "^0.1.0" } } } }, "expect": { "version": "24.7.1", "resolved": "https://registry.npmjs.org/expect/-/expect-24.7.1.tgz", "integrity": "sha512-mGfvMTPduksV3xoI0xur56pQsg2vJjNf5+a+bXOjqCkiCBbmCayrBbHS/75y9K430cfqyocPr2ZjiNiRx4SRKw==", "dev": true, "requires": { "@jest/types": "^24.7.0", "ansi-styles": "^3.2.0", "jest-get-type": "^24.3.0", "jest-matcher-utils": "^24.7.0", "jest-message-util": "^24.7.1", "jest-regex-util": "^24.3.0" }, "dependencies": { "ansi-styles": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "requires": { "color-convert": "^1.9.0" } } } }, "extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", "dev": true }, "extend-shallow": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", "dev": true, "requires": { "assign-symbols": "^1.0.0", "is-extendable": "^1.0.1" }, "dependencies": { "is-extendable": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", "dev": true, "requires": { "is-plain-object": "^2.0.4" } } } }, "extglob": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", "dev": true, "requires": { "array-unique": "^0.3.2", "define-property": "^1.0.0", "expand-brackets": "^2.1.4", "extend-shallow": "^2.0.1", "fragment-cache": "^0.2.1", "regex-not": "^1.0.0", "snapdragon": "^0.8.1", "to-regex": "^3.0.1" }, "dependencies": { "define-property": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", "dev": true, "requires": { "is-descriptor": "^1.0.0" } }, "extend-shallow": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { "is-extendable": "^0.1.0" } }, "is-accessor-descriptor": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", "dev": true, "requires": { "kind-of": "^6.0.0" } }, "is-data-descriptor": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", "dev": true, "requires": { "kind-of": "^6.0.0" } }, "is-descriptor": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", "dev": true, "requires": { "is-accessor-descriptor": "^1.0.0", "is-data-descriptor": "^1.0.0", "kind-of": "^6.0.2" } } } }, "extsprintf": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", "dev": true }, "fast-deep-equal": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=", "dev": true }, "fast-json-stable-stringify": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", "dev": true }, "fast-levenshtein": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", "dev": true }, "fb-watchman": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.0.tgz", "integrity": "sha1-VOmr99+i8mzZsWNsWIwa/AXeXVg=", "dev": true, "requires": { "bser": "^2.0.0" } }, "fileset": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/fileset/-/fileset-2.0.3.tgz", "integrity": "sha1-jnVIqW08wjJ+5eZ0FocjozO7oqA=", "dev": true, "requires": { "glob": "^7.0.3", "minimatch": "^3.0.3" } }, "fill-range": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", "dev": true, "requires": { "extend-shallow": "^2.0.1", "is-number": "^3.0.0", "repeat-string": "^1.6.1", "to-regex-range": "^2.1.0" }, "dependencies": { "extend-shallow": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { "is-extendable": "^0.1.0" } } } }, "find-up": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", "dev": true, "requires": { "locate-path": "^3.0.0" } }, "for-in": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", "dev": true }, "forever-agent": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", "dev": true }, "form-data": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", "dev": true, "requires": { "asynckit": "^0.4.0", "combined-stream": "^1.0.6", "mime-types": "^2.1.12" } }, "fragment-cache": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", "dev": true, "requires": { "map-cache": "^0.2.2" } }, "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", "dev": true }, "fsevents": { "version": "1.2.8", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.8.tgz", "integrity": "sha512-tPvHgPGB7m40CZ68xqFGkKuzN+RnpGmSV+hgeKxhRpbxdqKXUFJGC3yonBOLzQBcJyGpdZFDfCsdOC2KFsXzeA==", "dev": true, "optional": true, "requires": { "nan": "^2.12.1", "node-pre-gyp": "^0.12.0" }, "dependencies": { "abbrev": { "version": "1.1.1", "bundled": true, "dev": true, "optional": true }, "ansi-regex": { "version": "2.1.1", "bundled": true, "dev": true, "optional": true }, "aproba": { "version": "1.2.0", "bundled": true, "dev": true, "optional": true }, "are-we-there-yet": { "version": "1.1.5", "bundled": true, "dev": true, "optional": true, "requires": { "delegates": "^1.0.0", "readable-stream": "^2.0.6" } }, "balanced-match": { "version": "1.0.0", "bundled": true, "dev": true, "optional": true }, "brace-expansion": { "version": "1.1.11", "bundled": true, "dev": true, "optional": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, "chownr": { "version": "1.1.1", "bundled": true, "dev": true, "optional": true }, "code-point-at": { "version": "1.1.0", "bundled": true, "dev": true, "optional": true }, "concat-map": { "version": "0.0.1", "bundled": true, "dev": true, "optional": true }, "console-control-strings": { "version": "1.1.0", "bundled": true, "dev": true, "optional": true }, "core-util-is": { "version": "1.0.2", "bundled": true, "dev": true, "optional": true }, "debug": { "version": "4.1.1", "bundled": true, "dev": true, "optional": true, "requires": { "ms": "^2.1.1" } }, "deep-extend": { "version": "0.6.0", "bundled": true, "dev": true, "optional": true }, "delegates": { "version": "1.0.0", "bundled": true, "dev": true, "optional": true }, "detect-libc": { "version": "1.0.3", "bundled": true, "dev": true, "optional": true }, "fs-minipass": { "version": "1.2.5", "bundled": true, "dev": true, "optional": true, "requires": { "minipass": "^2.2.1" } }, "fs.realpath": { "version": "1.0.0", "bundled": true, "dev": true, "optional": true }, "gauge": { "version": "2.7.4", "bundled": true, "dev": true, "optional": true, "requires": { "aproba": "^1.0.3", "console-control-strings": "^1.0.0", "has-unicode": "^2.0.0", "object-assign": "^4.1.0", "signal-exit": "^3.0.0", "string-width": "^1.0.1", "strip-ansi": "^3.0.1", "wide-align": "^1.1.0" } }, "glob": { "version": "7.1.3", "bundled": true, "dev": true, "optional": true, "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", "minimatch": "^3.0.4", "once": "^1.3.0", "path-is-absolute": "^1.0.0" } }, "has-unicode": { "version": "2.0.1", "bundled": true, "dev": true, "optional": true }, "iconv-lite": { "version": "0.4.24", "bundled": true, "dev": true, "optional": true, "requires": { "safer-buffer": ">= 2.1.2 < 3" } }, "ignore-walk": { "version": "3.0.1", "bundled": true, "dev": true, "optional": true, "requires": { "minimatch": "^3.0.4" } }, "inflight": { "version": "1.0.6", "bundled": true, "dev": true, "optional": true, "requires": { "once": "^1.3.0", "wrappy": "1" } }, "inherits": { "version": "2.0.3", "bundled": true, "dev": true, "optional": true }, "ini": { "version": "1.3.5", "bundled": true, "dev": true, "optional": true }, "is-fullwidth-code-point": { "version": "1.0.0", "bundled": true, "dev": true, "optional": true, "requires": { "number-is-nan": "^1.0.0" } }, "isarray": { "version": "1.0.0", "bundled": true, "dev": true, "optional": true }, "minimatch": { "version": "3.0.4", "bundled": true, "dev": true, "optional": true, "requires": { "brace-expansion": "^1.1.7" } }, "minimist": { "version": "0.0.8", "bundled": true, "dev": true, "optional": true }, "minipass": { "version": "2.3.5", "bundled": true, "dev": true, "optional": true, "requires": { "safe-buffer": "^5.1.2", "yallist": "^3.0.0" } }, "minizlib": { "version": "1.2.1", "bundled": true, "dev": true, "optional": true, "requires": { "minipass": "^2.2.1" } }, "mkdirp": { "version": "0.5.1", "bundled": true, "dev": true, "optional": true, "requires": { "minimist": "0.0.8" } }, "ms": { "version": "2.1.1", "bundled": true, "dev": true, "optional": true }, "needle": { "version": "2.3.0", "bundled": true, "dev": true, "optional": true, "requires": { "debug": "^4.1.0", "iconv-lite": "^0.4.4", "sax": "^1.2.4" } }, "node-pre-gyp": { "version": "0.12.0", "bundled": true, "dev": true, "optional": true, "requires": { "detect-libc": "^1.0.2", "mkdirp": "^0.5.1", "needle": "^2.2.1", "nopt": "^4.0.1", "npm-packlist": "^1.1.6", "npmlog": "^4.0.2", "rc": "^1.2.7", "rimraf": "^2.6.1", "semver": "^5.3.0", "tar": "^4" } }, "nopt": { "version": "4.0.1", "bundled": true, "dev": true, "optional": true, "requires": { "abbrev": "1", "osenv": "^0.1.4" } }, "npm-bundled": { "version": "1.0.6", "bundled": true, "dev": true, "optional": true }, "npm-packlist": { "version": "1.4.1", "bundled": true, "dev": true, "optional": true, "requires": { "ignore-walk": "^3.0.1", "npm-bundled": "^1.0.1" } }, "npmlog": { "version": "4.1.2", "bundled": true, "dev": true, "optional": true, "requires": { "are-we-there-yet": "~1.1.2", "console-control-strings": "~1.1.0", "gauge": "~2.7.3", "set-blocking": "~2.0.0" } }, "number-is-nan": { "version": "1.0.1", "bundled": true, "dev": true, "optional": true }, "object-assign": { "version": "4.1.1", "bundled": true, "dev": true, "optional": true }, "once": { "version": "1.4.0", "bundled": true, "dev": true, "optional": true, "requires": { "wrappy": "1" } }, "os-homedir": { "version": "1.0.2", "bundled": true, "dev": true, "optional": true }, "os-tmpdir": { "version": "1.0.2", "bundled": true, "dev": true, "optional": true }, "osenv": { "version": "0.1.5", "bundled": true, "dev": true, "optional": true, "requires": { "os-homedir": "^1.0.0", "os-tmpdir": "^1.0.0" } }, "path-is-absolute": { "version": "1.0.1", "bundled": true, "dev": true, "optional": true }, "process-nextick-args": { "version": "2.0.0", "bundled": true, "dev": true, "optional": true }, "rc": { "version": "1.2.8", "bundled": true, "dev": true, "optional": true, "requires": { "deep-extend": "^0.6.0", "ini": "~1.3.0", "minimist": "^1.2.0", "strip-json-comments": "~2.0.1" }, "dependencies": { "minimist": { "version": "1.2.0", "bundled": true, "dev": true, "optional": true } } }, "readable-stream": { "version": "2.3.6", "bundled": true, "dev": true, "optional": true, "requires": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", "isarray": "~1.0.0", "process-nextick-args": "~2.0.0", "safe-buffer": "~5.1.1", "string_decoder": "~1.1.1", "util-deprecate": "~1.0.1" } }, "rimraf": { "version": "2.6.3", "bundled": true, "dev": true, "optional": true, "requires": { "glob": "^7.1.3" } }, "safe-buffer": { "version": "5.1.2", "bundled": true, "dev": true, "optional": true }, "safer-buffer": { "version": "2.1.2", "bundled": true, "dev": true, "optional": true }, "sax": { "version": "1.2.4", "bundled": true, "dev": true, "optional": true }, "semver": { "version": "5.7.0", "bundled": true, "dev": true, "optional": true }, "set-blocking": { "version": "2.0.0", "bundled": true, "dev": true, "optional": true }, "signal-exit": { "version": "3.0.2", "bundled": true, "dev": true, "optional": true }, "string-width": { "version": "1.0.2", "bundled": true, "dev": true, "optional": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", "strip-ansi": "^3.0.0" } }, "string_decoder": { "version": "1.1.1", "bundled": true, "dev": true, "optional": true, "requires": { "safe-buffer": "~5.1.0" } }, "strip-ansi": { "version": "3.0.1", "bundled": true, "dev": true, "optional": true, "requires": { "ansi-regex": "^2.0.0" } }, "strip-json-comments": { "version": "2.0.1", "bundled": true, "dev": true, "optional": true }, "tar": { "version": "4.4.8", "bundled": true, "dev": true, "optional": true, "requires": { "chownr": "^1.1.1", "fs-minipass": "^1.2.5", "minipass": "^2.3.4", "minizlib": "^1.1.1", "mkdirp": "^0.5.0", "safe-buffer": "^5.1.2", "yallist": "^3.0.2" } }, "util-deprecate": { "version": "1.0.2", "bundled": true, "dev": true, "optional": true }, "wide-align": { "version": "1.1.3", "bundled": true, "dev": true, "optional": true, "requires": { "string-width": "^1.0.2 || 2" } }, "wrappy": { "version": "1.0.2", "bundled": true, "dev": true, "optional": true }, "yallist": { "version": "3.0.3", "bundled": true, "dev": true, "optional": true } } }, "function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", "dev": true }, "get-caller-file": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", "dev": true }, "get-stream": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", "dev": true, "requires": { "pump": "^3.0.0" } }, "get-value": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", "dev": true }, "getpass": { "version": "0.1.7", "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", "dev": true, "requires": { "assert-plus": "^1.0.0" } }, "glob": { "version": "7.1.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", "dev": true, "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", "minimatch": "^3.0.4", "once": "^1.3.0", "path-is-absolute": "^1.0.0" } }, "globals": { "version": "11.11.0", "resolved": "https://registry.npmjs.org/globals/-/globals-11.11.0.tgz", "integrity": "sha512-WHq43gS+6ufNOEqlrDBxVEbb8ntfXrfAUU2ZOpCxrBdGKW3gyv8mCxAfIBD0DroPKGrJ2eSsXsLtY9MPntsyTw==", "dev": true }, "graceful-fs": { "version": "4.1.15", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz", "integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA==", "dev": true }, "growly": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=", "dev": true }, "handlebars": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.1.2.tgz", "integrity": "sha512-nvfrjqvt9xQ8Z/w0ijewdD/vvWDTOweBUm96NTr66Wfvo1mJenBLwcYmPs3TIBP5ruzYGD7Hx/DaM9RmhroGPw==", "dev": true, "requires": { "neo-async": "^2.6.0", "optimist": "^0.6.1", "source-map": "^0.6.1", "uglify-js": "^3.1.4" } }, "har-schema": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", "dev": true }, "har-validator": { "version": "5.1.3", "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", "dev": true, "requires": { "ajv": "^6.5.5", "har-schema": "^2.0.0" } }, "has": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", "dev": true, "requires": { "function-bind": "^1.1.1" } }, "has-ansi": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", "dev": true, "requires": { "ansi-regex": "^2.0.0" } }, "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", "dev": true }, "has-symbols": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=", "dev": true }, "has-value": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", "dev": true, "requires": { "get-value": "^2.0.6", "has-values": "^1.0.0", "isobject": "^3.0.0" } }, "has-values": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", "dev": true, "requires": { "is-number": "^3.0.0", "kind-of": "^4.0.0" }, "dependencies": { "kind-of": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", "dev": true, "requires": { "is-buffer": "^1.1.5" } } } }, "hosted-git-info": { "version": "2.7.1", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz", "integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==", "dev": true }, "html-encoding-sniffer": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz", "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==", "dev": true, "requires": { "whatwg-encoding": "^1.0.1" } }, "http-signature": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", "dev": true, "requires": { "assert-plus": "^1.0.0", "jsprim": "^1.2.2", "sshpk": "^1.7.0" } }, "iconv-lite": { "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", "dev": true, "requires": { "safer-buffer": ">= 2.1.2 < 3" } }, "import-local": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz", "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==", "dev": true, "requires": { "pkg-dir": "^3.0.0", "resolve-cwd": "^2.0.0" } }, "imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", "dev": true }, "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "dev": true, "requires": { "once": "^1.3.0", "wrappy": "1" } }, "inherits": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", "dev": true }, "invariant": { "version": "2.2.4", "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", "dev": true, "requires": { "loose-envify": "^1.0.0" } }, "invert-kv": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", "dev": true }, "is-accessor-descriptor": { "version": "0.1.6", "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", "dev": true, "requires": { "kind-of": "^3.0.2" }, "dependencies": { "kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { "is-buffer": "^1.1.5" } } } }, "is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", "dev": true }, "is-buffer": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", "dev": true }, "is-callable": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz", "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==", "dev": true }, "is-ci": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", "dev": true, "requires": { "ci-info": "^2.0.0" } }, "is-data-descriptor": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", "dev": true, "requires": { "kind-of": "^3.0.2" }, "dependencies": { "kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { "is-buffer": "^1.1.5" } } } }, "is-date-object": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=", "dev": true }, "is-descriptor": { "version": "0.1.6", "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", "dev": true, "requires": { "is-accessor-descriptor": "^0.1.6", "is-data-descriptor": "^0.1.4", "kind-of": "^5.0.0" }, "dependencies": { "kind-of": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", "dev": true } } }, "is-extendable": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", "dev": true }, "is-fullwidth-code-point": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", "dev": true }, "is-generator-fn": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", "dev": true }, "is-number": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", "dev": true, "requires": { "kind-of": "^3.0.2" }, "dependencies": { "kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { "is-buffer": "^1.1.5" } } } }, "is-plain-object": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", "dev": true, "requires": { "isobject": "^3.0.1" } }, "is-regex": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", "dev": true, "requires": { "has": "^1.0.1" } }, "is-stream": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", "dev": true }, "is-symbol": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz", "integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==", "dev": true, "requires": { "has-symbols": "^1.0.0" } }, "is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", "dev": true }, "is-windows": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", "dev": true }, "is-wsl": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", "dev": true }, "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", "dev": true }, "isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", "dev": true }, "isobject": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true }, "isstream": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", "dev": true }, "istanbul-api": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/istanbul-api/-/istanbul-api-2.1.5.tgz", "integrity": "sha512-meYk1BwDp59Pfse1TvPrkKYgVqAufbdBLEVoqvu/hLLKSaQ054ZTksbNepyc223tMnWdm6AdK2URIJJRqdP87g==", "dev": true, "requires": { "async": "^2.6.1", "compare-versions": "^3.2.1", "fileset": "^2.0.3", "istanbul-lib-coverage": "^2.0.4", "istanbul-lib-hook": "^2.0.6", "istanbul-lib-instrument": "^3.2.0", "istanbul-lib-report": "^2.0.7", "istanbul-lib-source-maps": "^3.0.5", "istanbul-reports": "^2.2.3", "js-yaml": "^3.13.0", "make-dir": "^2.1.0", "minimatch": "^3.0.4", "once": "^1.4.0" } }, "istanbul-lib-coverage": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", "integrity": "sha512-LXTBICkMARVgo579kWDm8SqfB6nvSDKNqIOBEjmJRnL04JvoMHCYGWaMddQnseJYtkEuEvO/sIcOxPLk9gERug==", "dev": true }, "istanbul-lib-hook": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-2.0.6.tgz", "integrity": "sha512-829DKONApZ7UCiPXcOYWSgkFXa4+vNYoNOt3F+4uDJLKL1OotAoVwvThoEj1i8jmOj7odbYcR3rnaHu+QroaXg==", "dev": true, "requires": { "append-transform": "^1.0.0" } }, "istanbul-lib-instrument": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-3.2.0.tgz", "integrity": "sha512-06IM3xShbNW4NgZv5AP4QH0oHqf1/ivFo8eFys0ZjPXHGldHJQWb3riYOKXqmOqfxXBfxu4B+g/iuhOPZH0RJg==", "dev": true, "requires": { "@babel/generator": "^7.0.0", "@babel/parser": "^7.0.0", "@babel/template": "^7.0.0", "@babel/traverse": "^7.0.0", "@babel/types": "^7.0.0", "istanbul-lib-coverage": "^2.0.4", "semver": "^6.0.0" }, "dependencies": { "semver": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.0.0.tgz", "integrity": "sha512-0UewU+9rFapKFnlbirLi3byoOuhrSsli/z/ihNnvM24vgF+8sNBiI1LZPBSH9wJKUwaUbw+s3hToDLCXkrghrQ==", "dev": true } } }, "istanbul-lib-report": { "version": "2.0.7", "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-2.0.7.tgz", "integrity": "sha512-wLH6beJBFbRBLiTlMOBxmb85cnVM1Vyl36N48e4e/aTKSM3WbOx7zbVIH1SQ537fhhsPbX0/C5JB4qsmyRXXyA==", "dev": true, "requires": { "istanbul-lib-coverage": "^2.0.4", "make-dir": "^2.1.0", "supports-color": "^6.0.0" }, "dependencies": { "supports-color": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", "dev": true, "requires": { "has-flag": "^3.0.0" } } } }, "istanbul-lib-source-maps": { "version": "3.0.5", "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.5.tgz", "integrity": "sha512-eDhZ7r6r1d1zQPVZehLc3D0K14vRba/eBYkz3rw16DLOrrTzve9RmnkcwrrkWVgO1FL3EK5knujVe5S8QHE9xw==", "dev": true, "requires": { "debug": "^4.1.1", "istanbul-lib-coverage": "^2.0.4", "make-dir": "^2.1.0", "rimraf": "^2.6.2", "source-map": "^0.6.1" }, "dependencies": { "debug": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", "dev": true, "requires": { "ms": "^2.1.1" } }, "ms": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", "dev": true } } }, "istanbul-reports": { "version": "2.2.3", "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-2.2.3.tgz", "integrity": "sha512-T6EbPuc8Cb620LWAYyZ4D8SSn06dY9i1+IgUX2lTH8gbwflMc9Obd33zHTyNX653ybjpamAHS9toKS3E6cGhTw==", "dev": true, "requires": { "handlebars": "^4.1.0" } }, "jest": { "version": "24.7.1", "resolved": "https://registry.npmjs.org/jest/-/jest-24.7.1.tgz", "integrity": "sha512-AbvRar5r++izmqo5gdbAjTeA6uNRGoNRuj5vHB0OnDXo2DXWZJVuaObiGgtlvhKb+cWy2oYbQSfxv7Q7GjnAtA==", "dev": true, "requires": { "import-local": "^2.0.0", "jest-cli": "^24.7.1" }, "dependencies": { "ansi-styles": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "requires": { "color-convert": "^1.9.0" } }, "chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, "requires": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", "supports-color": "^5.3.0" } }, "jest-cli": { "version": "24.7.1", "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-24.7.1.tgz", "integrity": "sha512-32OBoSCVPzcTslGFl6yVCMzB2SqX3IrWwZCY5mZYkb0D2WsogmU3eV2o8z7+gRQa4o4sZPX/k7GU+II7CxM6WQ==", "dev": true, "requires": { "@jest/core": "^24.7.1", "@jest/test-result": "^24.7.1", "@jest/types": "^24.7.0", "chalk": "^2.0.1", "exit": "^0.1.2", "import-local": "^2.0.0", "is-ci": "^2.0.0", "jest-config": "^24.7.1", "jest-util": "^24.7.1", "jest-validate": "^24.7.0", "prompts": "^2.0.1", "realpath-native": "^1.1.0", "yargs": "^12.0.2" } }, "supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, "requires": { "has-flag": "^3.0.0" } } } }, "jest-changed-files": { "version": "24.7.0", "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-24.7.0.tgz", "integrity": "sha512-33BgewurnwSfJrW7T5/ZAXGE44o7swLslwh8aUckzq2e17/2Os1V0QU506ZNik3hjs8MgnEMKNkcud442NCDTw==", "dev": true, "requires": { "@jest/types": "^24.7.0", "execa": "^1.0.0", "throat": "^4.0.0" } }, "jest-config": { "version": "24.7.1", "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-24.7.1.tgz", "integrity": "sha512-8FlJNLI+X+MU37j7j8RE4DnJkvAghXmBWdArVzypW6WxfGuxiL/CCkzBg0gHtXhD2rxla3IMOSUAHylSKYJ83g==", "dev": true, "requires": { "@babel/core": "^7.1.0", "@jest/test-sequencer": "^24.7.1", "@jest/types": "^24.7.0", "babel-jest": "^24.7.1", "chalk": "^2.0.1", "glob": "^7.1.1", "jest-environment-jsdom": "^24.7.1", "jest-environment-node": "^24.7.1", "jest-get-type": "^24.3.0", "jest-jasmine2": "^24.7.1", "jest-regex-util": "^24.3.0", "jest-resolve": "^24.7.1", "jest-util": "^24.7.1", "jest-validate": "^24.7.0", "micromatch": "^3.1.10", "pretty-format": "^24.7.0", "realpath-native": "^1.1.0" }, "dependencies": { "ansi-styles": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "requires": { "color-convert": "^1.9.0" } }, "chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, "requires": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", "supports-color": "^5.3.0" } }, "supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, "requires": { "has-flag": "^3.0.0" } } } }, "jest-diff": { "version": "24.7.0", "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-24.7.0.tgz", "integrity": "sha512-ULQZ5B1lWpH70O4xsANC4tf4Ko6RrpwhE3PtG6ERjMg1TiYTC2Wp4IntJVGro6a8HG9luYHhhmF4grF0Pltckg==", "dev": true, "requires": { "chalk": "^2.0.1", "diff-sequences": "^24.3.0", "jest-get-type": "^24.3.0", "pretty-format": "^24.7.0" }, "dependencies": { "ansi-styles": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "requires": { "color-convert": "^1.9.0" } }, "chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, "requires": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", "supports-color": "^5.3.0" } }, "supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, "requires": { "has-flag": "^3.0.0" } } } }, "jest-docblock": { "version": "24.3.0", "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-24.3.0.tgz", "integrity": "sha512-nlANmF9Yq1dufhFlKG9rasfQlrY7wINJbo3q01tu56Jv5eBU5jirylhF2O5ZBnLxzOVBGRDz/9NAwNyBtG4Nyg==", "dev": true, "requires": { "detect-newline": "^2.1.0" } }, "jest-each": { "version": "24.7.1", "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-24.7.1.tgz", "integrity": "sha512-4fsS8fEfLa3lfnI1Jw6NxjhyRTgfpuOVTeUZZFyVYqeTa4hPhr2YkToUhouuLTrL2eMGOfpbdMyRx0GQ/VooKA==", "dev": true, "requires": { "@jest/types": "^24.7.0", "chalk": "^2.0.1", "jest-get-type": "^24.3.0", "jest-util": "^24.7.1", "pretty-format": "^24.7.0" }, "dependencies": { "ansi-styles": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "requires": { "color-convert": "^1.9.0" } }, "chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, "requires": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", "supports-color": "^5.3.0" } }, "supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, "requires": { "has-flag": "^3.0.0" } } } }, "jest-environment-jsdom": { "version": "24.7.1", "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-24.7.1.tgz", "integrity": "sha512-Gnhb+RqE2JuQGb3kJsLF8vfqjt3PHKSstq4Xc8ic+ax7QKo4Z0RWGucU3YV+DwKR3T9SYc+3YCUQEJs8r7+Jxg==", "dev": true, "requires": { "@jest/environment": "^24.7.1", "@jest/fake-timers": "^24.7.1", "@jest/types": "^24.7.0", "jest-mock": "^24.7.0", "jest-util": "^24.7.1", "jsdom": "^11.5.1" } }, "jest-environment-node": { "version": "24.7.1", "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-24.7.1.tgz", "integrity": "sha512-GJJQt1p9/C6aj6yNZMvovZuxTUd+BEJprETdvTKSb4kHcw4mFj8777USQV0FJoJ4V3djpOwA5eWyPwfq//PFBA==", "dev": true, "requires": { "@jest/environment": "^24.7.1", "@jest/fake-timers": "^24.7.1", "@jest/types": "^24.7.0", "jest-mock": "^24.7.0", "jest-util": "^24.7.1" } }, "jest-get-type": { "version": "24.3.0", "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-24.3.0.tgz", "integrity": "sha512-HYF6pry72YUlVcvUx3sEpMRwXEWGEPlJ0bSPVnB3b3n++j4phUEoSPcS6GC0pPJ9rpyPSe4cb5muFo6D39cXow==", "dev": true }, "jest-haste-map": { "version": "24.7.1", "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-24.7.1.tgz", "integrity": "sha512-g0tWkzjpHD2qa03mTKhlydbmmYiA2KdcJe762SbfFo/7NIMgBWAA0XqQlApPwkWOF7Cxoi/gUqL0i6DIoLpMBw==", "dev": true, "requires": { "@jest/types": "^24.7.0", "anymatch": "^2.0.0", "fb-watchman": "^2.0.0", "fsevents": "^1.2.7", "graceful-fs": "^4.1.15", "invariant": "^2.2.4", "jest-serializer": "^24.4.0", "jest-util": "^24.7.1", "jest-worker": "^24.6.0", "micromatch": "^3.1.10", "sane": "^4.0.3", "walker": "^1.0.7" } }, "jest-jasmine2": { "version": "24.7.1", "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-24.7.1.tgz", "integrity": "sha512-Y/9AOJDV1XS44wNwCaThq4Pw3gBPiOv/s6NcbOAkVRRUEPu+36L2xoPsqQXsDrxoBerqeyslpn2TpCI8Zr6J2w==", "dev": true, "requires": { "@babel/traverse": "^7.1.0", "@jest/environment": "^24.7.1", "@jest/test-result": "^24.7.1", "@jest/types": "^24.7.0", "chalk": "^2.0.1", "co": "^4.6.0", "expect": "^24.7.1", "is-generator-fn": "^2.0.0", "jest-each": "^24.7.1", "jest-matcher-utils": "^24.7.0", "jest-message-util": "^24.7.1", "jest-runtime": "^24.7.1", "jest-snapshot": "^24.7.1", "jest-util": "^24.7.1", "pretty-format": "^24.7.0", "throat": "^4.0.0" }, "dependencies": { "ansi-styles": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "requires": { "color-convert": "^1.9.0" } }, "chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, "requires": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", "supports-color": "^5.3.0" } }, "supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, "requires": { "has-flag": "^3.0.0" } } } }, "jest-leak-detector": { "version": "24.7.0", "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-24.7.0.tgz", "integrity": "sha512-zV0qHKZGXtmPVVzT99CVEcHE9XDf+8LwiE0Ob7jjezERiGVljmqKFWpV2IkG+rkFIEUHFEkMiICu7wnoPM/RoQ==", "dev": true, "requires": { "pretty-format": "^24.7.0" } }, "jest-matcher-utils": { "version": "24.7.0", "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-24.7.0.tgz", "integrity": "sha512-158ieSgk3LNXeUhbVJYRXyTPSCqNgVXOp/GT7O94mYd3pk/8+odKTyR1JLtNOQSPzNi8NFYVONtvSWA/e1RDXg==", "dev": true, "requires": { "chalk": "^2.0.1", "jest-diff": "^24.7.0", "jest-get-type": "^24.3.0", "pretty-format": "^24.7.0" }, "dependencies": { "ansi-styles": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "requires": { "color-convert": "^1.9.0" } }, "chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, "requires": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", "supports-color": "^5.3.0" } }, "supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, "requires": { "has-flag": "^3.0.0" } } } }, "jest-message-util": { "version": "24.7.1", "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-24.7.1.tgz", "integrity": "sha512-dk0gqVtyqezCHbcbk60CdIf+8UHgD+lmRHifeH3JRcnAqh4nEyPytSc9/L1+cQyxC+ceaeP696N4ATe7L+omcg==", "dev": true, "requires": { "@babel/code-frame": "^7.0.0", "@jest/test-result": "^24.7.1", "@jest/types": "^24.7.0", "@types/stack-utils": "^1.0.1", "chalk": "^2.0.1", "micromatch": "^3.1.10", "slash": "^2.0.0", "stack-utils": "^1.0.1" }, "dependencies": { "ansi-styles": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "requires": { "color-convert": "^1.9.0" } }, "chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, "requires": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", "supports-color": "^5.3.0" } }, "supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, "requires": { "has-flag": "^3.0.0" } } } }, "jest-mock": { "version": "24.7.0", "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-24.7.0.tgz", "integrity": "sha512-6taW4B4WUcEiT2V9BbOmwyGuwuAFT2G8yghF7nyNW1/2gq5+6aTqSPcS9lS6ArvEkX55vbPAS/Jarx5LSm4Fng==", "dev": true, "requires": { "@jest/types": "^24.7.0" } }, "jest-pnp-resolver": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.1.tgz", "integrity": "sha512-pgFw2tm54fzgYvc/OHrnysABEObZCUNFnhjoRjaVOCN8NYc032/gVjPaHD4Aq6ApkSieWtfKAFQtmDKAmhupnQ==", "dev": true }, "jest-regex-util": { "version": "24.3.0", "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-24.3.0.tgz", "integrity": "sha512-tXQR1NEOyGlfylyEjg1ImtScwMq8Oh3iJbGTjN7p0J23EuVX1MA8rwU69K4sLbCmwzgCUbVkm0FkSF9TdzOhtg==", "dev": true }, "jest-resolve": { "version": "24.7.1", "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-24.7.1.tgz", "integrity": "sha512-Bgrc+/UUZpGJ4323sQyj85hV9d+ANyPNu6XfRDUcyFNX1QrZpSoM0kE4Mb2vZMAYTJZsBFzYe8X1UaOkOELSbw==", "dev": true, "requires": { "@jest/types": "^24.7.0", "browser-resolve": "^1.11.3", "chalk": "^2.0.1", "jest-pnp-resolver": "^1.2.1", "realpath-native": "^1.1.0" }, "dependencies": { "ansi-styles": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "requires": { "color-convert": "^1.9.0" } }, "chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, "requires": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", "supports-color": "^5.3.0" } }, "supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, "requires": { "has-flag": "^3.0.0" } } } }, "jest-resolve-dependencies": { "version": "24.7.1", "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-24.7.1.tgz", "integrity": "sha512-2Eyh5LJB2liNzfk4eo7bD1ZyBbqEJIyyrFtZG555cSWW9xVHxII2NuOkSl1yUYTAYCAmM2f2aIT5A7HzNmubyg==", "dev": true, "requires": { "@jest/types": "^24.7.0", "jest-regex-util": "^24.3.0", "jest-snapshot": "^24.7.1" } }, "jest-runner": { "version": "24.7.1", "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-24.7.1.tgz", "integrity": "sha512-aNFc9liWU/xt+G9pobdKZ4qTeG/wnJrJna3VqunziDNsWT3EBpmxXZRBMKCsNMyfy+A/XHiV+tsMLufdsNdgCw==", "dev": true, "requires": { "@jest/console": "^24.7.1", "@jest/environment": "^24.7.1", "@jest/test-result": "^24.7.1", "@jest/types": "^24.7.0", "chalk": "^2.4.2", "exit": "^0.1.2", "graceful-fs": "^4.1.15", "jest-config": "^24.7.1", "jest-docblock": "^24.3.0", "jest-haste-map": "^24.7.1", "jest-jasmine2": "^24.7.1", "jest-leak-detector": "^24.7.0", "jest-message-util": "^24.7.1", "jest-resolve": "^24.7.1", "jest-runtime": "^24.7.1", "jest-util": "^24.7.1", "jest-worker": "^24.6.0", "source-map-support": "^0.5.6", "throat": "^4.0.0" }, "dependencies": { "ansi-styles": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "requires": { "color-convert": "^1.9.0" } }, "chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, "requires": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", "supports-color": "^5.3.0" } }, "supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, "requires": { "has-flag": "^3.0.0" } } } }, "jest-runtime": { "version": "24.7.1", "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-24.7.1.tgz", "integrity": "sha512-0VAbyBy7tll3R+82IPJpf6QZkokzXPIS71aDeqh+WzPRXRCNz6StQ45otFariPdJ4FmXpDiArdhZrzNAC3sj6A==", "dev": true, "requires": { "@jest/console": "^24.7.1", "@jest/environment": "^24.7.1", "@jest/source-map": "^24.3.0", "@jest/transform": "^24.7.1", "@jest/types": "^24.7.0", "@types/yargs": "^12.0.2", "chalk": "^2.0.1", "exit": "^0.1.2", "glob": "^7.1.3", "graceful-fs": "^4.1.15", "jest-config": "^24.7.1", "jest-haste-map": "^24.7.1", "jest-message-util": "^24.7.1", "jest-mock": "^24.7.0", "jest-regex-util": "^24.3.0", "jest-resolve": "^24.7.1", "jest-snapshot": "^24.7.1", "jest-util": "^24.7.1", "jest-validate": "^24.7.0", "realpath-native": "^1.1.0", "slash": "^2.0.0", "strip-bom": "^3.0.0", "yargs": "^12.0.2" }, "dependencies": { "ansi-styles": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "requires": { "color-convert": "^1.9.0" } }, "chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, "requires": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", "supports-color": "^5.3.0" } }, "supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, "requires": { "has-flag": "^3.0.0" } } } }, "jest-serializer": { "version": "24.4.0", "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-24.4.0.tgz", "integrity": "sha512-k//0DtglVstc1fv+GY/VHDIjrtNjdYvYjMlbLUed4kxrE92sIUewOi5Hj3vrpB8CXfkJntRPDRjCrCvUhBdL8Q==", "dev": true }, "jest-snapshot": { "version": "24.7.1", "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-24.7.1.tgz", "integrity": "sha512-8Xk5O4p+JsZZn4RCNUS3pxA+ORKpEKepE+a5ejIKrId9CwrVN0NY+vkqEkXqlstA5NMBkNahXkR/4qEBy0t5yA==", "dev": true, "requires": { "@babel/types": "^7.0.0", "@jest/types": "^24.7.0", "chalk": "^2.0.1", "expect": "^24.7.1", "jest-diff": "^24.7.0", "jest-matcher-utils": "^24.7.0", "jest-message-util": "^24.7.1", "jest-resolve": "^24.7.1", "mkdirp": "^0.5.1", "natural-compare": "^1.4.0", "pretty-format": "^24.7.0", "semver": "^5.5.0" }, "dependencies": { "ansi-styles": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "requires": { "color-convert": "^1.9.0" } }, "chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, "requires": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", "supports-color": "^5.3.0" } }, "supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, "requires": { "has-flag": "^3.0.0" } } } }, "jest-util": { "version": "24.7.1", "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-24.7.1.tgz", "integrity": "sha512-/KilOue2n2rZ5AnEBYoxOXkeTu6vi7cjgQ8MXEkih0oeAXT6JkS3fr7/j8+engCjciOU1Nq5loMSKe0A1oeX0A==", "dev": true, "requires": { "@jest/console": "^24.7.1", "@jest/fake-timers": "^24.7.1", "@jest/source-map": "^24.3.0", "@jest/test-result": "^24.7.1", "@jest/types": "^24.7.0", "callsites": "^3.0.0", "chalk": "^2.0.1", "graceful-fs": "^4.1.15", "is-ci": "^2.0.0", "mkdirp": "^0.5.1", "slash": "^2.0.0", "source-map": "^0.6.0" }, "dependencies": { "ansi-styles": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "requires": { "color-convert": "^1.9.0" } }, "chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, "requires": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", "supports-color": "^5.3.0" } }, "supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, "requires": { "has-flag": "^3.0.0" } } } }, "jest-validate": { "version": "24.7.0", "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-24.7.0.tgz", "integrity": "sha512-cgai/gts9B2chz1rqVdmLhzYxQbgQurh1PEQSvSgPZ8KGa1AqXsqC45W5wKEwzxKrWqypuQrQxnF4+G9VejJJA==", "dev": true, "requires": { "@jest/types": "^24.7.0", "camelcase": "^5.0.0", "chalk": "^2.0.1", "jest-get-type": "^24.3.0", "leven": "^2.1.0", "pretty-format": "^24.7.0" }, "dependencies": { "ansi-styles": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "requires": { "color-convert": "^1.9.0" } }, "chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, "requires": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", "supports-color": "^5.3.0" } }, "supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, "requires": { "has-flag": "^3.0.0" } } } }, "jest-watcher": { "version": "24.7.1", "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-24.7.1.tgz", "integrity": "sha512-Wd6TepHLRHVKLNPacEsBwlp9raeBIO+01xrN24Dek4ggTS8HHnOzYSFnvp+6MtkkJ3KfMzy220KTi95e2rRkrw==", "dev": true, "requires": { "@jest/test-result": "^24.7.1", "@jest/types": "^24.7.0", "@types/yargs": "^12.0.9", "ansi-escapes": "^3.0.0", "chalk": "^2.0.1", "jest-util": "^24.7.1", "string-length": "^2.0.0" }, "dependencies": { "ansi-styles": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "requires": { "color-convert": "^1.9.0" } }, "chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, "requires": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", "supports-color": "^5.3.0" } }, "supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, "requires": { "has-flag": "^3.0.0" } } } }, "jest-worker": { "version": "24.6.0", "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-24.6.0.tgz", "integrity": "sha512-jDwgW5W9qGNvpI1tNnvajh0a5IE/PuGLFmHk6aR/BZFz8tSgGw17GsDPXAJ6p91IvYDjOw8GpFbvvZGAK+DPQQ==", "dev": true, "requires": { "merge-stream": "^1.0.1", "supports-color": "^6.1.0" }, "dependencies": { "supports-color": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", "dev": true, "requires": { "has-flag": "^3.0.0" } } } }, "js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", "dev": true }, "js-yaml": { "version": "3.13.1", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", "dev": true, "requires": { "argparse": "^1.0.7", "esprima": "^4.0.0" } }, "jsbn": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", "dev": true }, "jsdom": { "version": "11.12.0", "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-11.12.0.tgz", "integrity": "sha512-y8Px43oyiBM13Zc1z780FrfNLJCXTL40EWlty/LXUtcjykRBNgLlCjWXpfSPBl2iv+N7koQN+dvqszHZgT/Fjw==", "dev": true, "requires": { "abab": "^2.0.0", "acorn": "^5.5.3", "acorn-globals": "^4.1.0", "array-equal": "^1.0.0", "cssom": ">= 0.3.2 < 0.4.0", "cssstyle": "^1.0.0", "data-urls": "^1.0.0", "domexception": "^1.0.1", "escodegen": "^1.9.1", "html-encoding-sniffer": "^1.0.2", "left-pad": "^1.3.0", "nwsapi": "^2.0.7", "parse5": "4.0.0", "pn": "^1.1.0", "request": "^2.87.0", "request-promise-native": "^1.0.5", "sax": "^1.2.4", "symbol-tree": "^3.2.2", "tough-cookie": "^2.3.4", "w3c-hr-time": "^1.0.1", "webidl-conversions": "^4.0.2", "whatwg-encoding": "^1.0.3", "whatwg-mimetype": "^2.1.0", "whatwg-url": "^6.4.1", "ws": "^5.2.0", "xml-name-validator": "^3.0.0" } }, "jsesc": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", "dev": true }, "json-parse-better-errors": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", "dev": true }, "json-schema": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", "dev": true }, "json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true }, "json-stringify-safe": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", "dev": true }, "json5": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.0.tgz", "integrity": "sha512-8Mh9h6xViijj36g7Dxi+Y4S6hNGV96vcJZr/SrlHh1LR/pEn/8j/+qIBbs44YKl69Lrfctp4QD+AdWLTMqEZAQ==", "dev": true, "requires": { "minimist": "^1.2.0" } }, "jsprim": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", "dev": true, "requires": { "assert-plus": "1.0.0", "extsprintf": "1.3.0", "json-schema": "0.2.3", "verror": "1.10.0" } }, "kind-of": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", "dev": true }, "kleur": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", "dev": true }, "lcid": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", "dev": true, "requires": { "invert-kv": "^2.0.0" } }, "left-pad": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/left-pad/-/left-pad-1.3.0.tgz", "integrity": "sha512-XI5MPzVNApjAyhQzphX8BkmKsKUxD4LdyK24iZeQGinBN9yTQT3bFlCBy/aVx2HrNcqQGsdot8ghrjyrvMCoEA==", "dev": true }, "leven": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/leven/-/leven-2.1.0.tgz", "integrity": "sha1-wuep93IJTe6dNCAq6KzORoeHVYA=", "dev": true }, "levn": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", "dev": true, "requires": { "prelude-ls": "~1.1.2", "type-check": "~0.3.2" } }, "lex": { "version": "1.7.9", "resolved": "https://registry.npmjs.org/lex/-/lex-1.7.9.tgz", "integrity": "sha1-XVY2zO9XQ0g2KTi3mkfw7tjtDUM=", "dev": true }, "lexing": { "version": "0.8.0", "resolved": "https://registry.npmjs.org/lexing/-/lexing-0.8.0.tgz", "integrity": "sha1-I66tycML755656+gbLZNO0DYCWo=", "dev": true }, "load-json-file": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", "dev": true, "requires": { "graceful-fs": "^4.1.2", "parse-json": "^4.0.0", "pify": "^3.0.0", "strip-bom": "^3.0.0" } }, "locate-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", "dev": true, "requires": { "p-locate": "^3.0.0", "path-exists": "^3.0.0" } }, "lodash": { "version": "4.17.11", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", "dev": true }, "lodash.sortby": { "version": "4.7.0", "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=", "dev": true }, "loose-envify": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", "dev": true, "requires": { "js-tokens": "^3.0.0 || ^4.0.0" } }, "make-dir": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", "dev": true, "requires": { "pify": "^4.0.1", "semver": "^5.6.0" }, "dependencies": { "pify": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", "dev": true } } }, "makeerror": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.11.tgz", "integrity": "sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw=", "dev": true, "requires": { "tmpl": "1.0.x" } }, "map-age-cleaner": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", "dev": true, "requires": { "p-defer": "^1.0.0" } }, "map-cache": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", "dev": true }, "map-visit": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", "dev": true, "requires": { "object-visit": "^1.0.0" } }, "mem": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz", "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==", "dev": true, "requires": { "map-age-cleaner": "^0.1.1", "mimic-fn": "^2.0.0", "p-is-promise": "^2.0.0" } }, "merge-stream": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-1.0.1.tgz", "integrity": "sha1-QEEgLVCKNCugAXQAjfDCUbjBNeE=", "dev": true, "requires": { "readable-stream": "^2.0.1" } }, "micromatch": { "version": "3.1.10", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", "dev": true, "requires": { "arr-diff": "^4.0.0", "array-unique": "^0.3.2", "braces": "^2.3.1", "define-property": "^2.0.2", "extend-shallow": "^3.0.2", "extglob": "^2.0.4", "fragment-cache": "^0.2.1", "kind-of": "^6.0.2", "nanomatch": "^1.2.9", "object.pick": "^1.3.0", "regex-not": "^1.0.0", "snapdragon": "^0.8.1", "to-regex": "^3.0.2" } }, "mime-db": { "version": "1.40.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.40.0.tgz", "integrity": "sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==", "dev": true }, "mime-types": { "version": "2.1.24", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.24.tgz", "integrity": "sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==", "dev": true, "requires": { "mime-db": "1.40.0" } }, "mimic-fn": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", "dev": true }, "minimatch": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "dev": true, "requires": { "brace-expansion": "^1.1.7" } }, "minimist": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", "dev": true }, "mixin-deep": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", "dev": true, "requires": { "for-in": "^1.0.2", "is-extendable": "^1.0.1" }, "dependencies": { "is-extendable": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", "dev": true, "requires": { "is-plain-object": "^2.0.4" } } } }, "mkdirp": { "version": "0.5.1", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", "dev": true, "requires": { "minimist": "0.0.8" }, "dependencies": { "minimist": { "version": "0.0.8", "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", "dev": true } } }, "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true }, "nan": { "version": "2.13.2", "resolved": "https://registry.npmjs.org/nan/-/nan-2.13.2.tgz", "integrity": "sha512-TghvYc72wlMGMVMluVo9WRJc0mB8KxxF/gZ4YYFy7V2ZQX9l7rgbPg7vjS9mt6U5HXODVFVI2bOduCzwOMv/lw==", "dev": true, "optional": true }, "nanomatch": { "version": "1.2.13", "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", "dev": true, "requires": { "arr-diff": "^4.0.0", "array-unique": "^0.3.2", "define-property": "^2.0.2", "extend-shallow": "^3.0.2", "fragment-cache": "^0.2.1", "is-windows": "^1.0.2", "kind-of": "^6.0.2", "object.pick": "^1.3.0", "regex-not": "^1.0.0", "snapdragon": "^0.8.1", "to-regex": "^3.0.1" } }, "natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", "dev": true }, "neo-async": { "version": "2.6.0", "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.0.tgz", "integrity": "sha512-MFh0d/Wa7vkKO3Y3LlacqAEeHK0mckVqzDieUKTT+KGxi+zIpeVsFxymkIiRpbpDziHc290Xr9A1O4Om7otoRA==", "dev": true }, "nice-try": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", "dev": true }, "node-int64": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=", "dev": true }, "node-modules-regexp": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz", "integrity": "sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA=", "dev": true }, "node-notifier": { "version": "5.4.0", "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-5.4.0.tgz", "integrity": "sha512-SUDEb+o71XR5lXSTyivXd9J7fCloE3SyP4lSgt3lU2oSANiox+SxlNRGPjDKrwU1YN3ix2KN/VGGCg0t01rttQ==", "dev": true, "requires": { "growly": "^1.3.0", "is-wsl": "^1.1.0", "semver": "^5.5.0", "shellwords": "^0.1.1", "which": "^1.3.0" } }, "normalize-package-data": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", "dev": true, "requires": { "hosted-git-info": "^2.1.4", "resolve": "^1.10.0", "semver": "2 || 3 || 4 || 5", "validate-npm-package-license": "^3.0.1" } }, "normalize-path": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", "dev": true, "requires": { "remove-trailing-separator": "^1.0.1" } }, "npm-run-path": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", "dev": true, "requires": { "path-key": "^2.0.0" } }, "number-is-nan": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", "dev": true }, "nwsapi": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.1.3.tgz", "integrity": "sha512-RowAaJGEgYXEZfQ7tvvdtAQUKPyTR6T6wNu0fwlNsGQYr/h3yQc6oI8WnVZh3Y/Sylwc+dtAlvPqfFZjhTyk3A==", "dev": true }, "oauth-sign": { "version": "0.9.0", "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", "dev": true }, "object-copy": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", "dev": true, "requires": { "copy-descriptor": "^0.1.0", "define-property": "^0.2.5", "kind-of": "^3.0.3" }, "dependencies": { "define-property": { "version": "0.2.5", "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "dev": true, "requires": { "is-descriptor": "^0.1.0" } }, "kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { "is-buffer": "^1.1.5" } } } }, "object-keys": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", "dev": true }, "object-visit": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", "dev": true, "requires": { "isobject": "^3.0.0" } }, "object.getownpropertydescriptors": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz", "integrity": "sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY=", "dev": true, "requires": { "define-properties": "^1.1.2", "es-abstract": "^1.5.1" } }, "object.pick": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", "dev": true, "requires": { "isobject": "^3.0.1" } }, "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "dev": true, "requires": { "wrappy": "1" } }, "optimist": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", "dev": true, "requires": { "minimist": "~0.0.1", "wordwrap": "~0.0.2" }, "dependencies": { "minimist": { "version": "0.0.10", "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.10.tgz", "integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=", "dev": true } } }, "optionator": { "version": "0.8.2", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", "dev": true, "requires": { "deep-is": "~0.1.3", "fast-levenshtein": "~2.0.4", "levn": "~0.3.0", "prelude-ls": "~1.1.2", "type-check": "~0.3.2", "wordwrap": "~1.0.0" }, "dependencies": { "wordwrap": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", "dev": true } } }, "os-locale": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", "dev": true, "requires": { "execa": "^1.0.0", "lcid": "^2.0.0", "mem": "^4.0.0" } }, "p-defer": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=", "dev": true }, "p-each-series": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-1.0.0.tgz", "integrity": "sha1-kw89Et0fUOdDRFeiLNbwSsatf3E=", "dev": true, "requires": { "p-reduce": "^1.0.0" } }, "p-finally": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", "dev": true }, "p-is-promise": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz", "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==", "dev": true }, "p-limit": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz", "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==", "dev": true, "requires": { "p-try": "^2.0.0" } }, "p-locate": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", "dev": true, "requires": { "p-limit": "^2.0.0" } }, "p-reduce": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-1.0.0.tgz", "integrity": "sha1-GMKw3ZNqRpClKfgjH1ig/bakffo=", "dev": true }, "p-try": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "dev": true }, "parse-json": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", "dev": true, "requires": { "error-ex": "^1.3.1", "json-parse-better-errors": "^1.0.1" } }, "parse5": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/parse5/-/parse5-4.0.0.tgz", "integrity": "sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA==", "dev": true }, "pascalcase": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", "dev": true }, "path-exists": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", "dev": true }, "path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", "dev": true }, "path-key": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", "dev": true }, "path-parse": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", "dev": true }, "path-type": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", "dev": true, "requires": { "pify": "^3.0.0" } }, "performance-now": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", "dev": true }, "pify": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", "dev": true }, "pirates": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.1.tgz", "integrity": "sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA==", "dev": true, "requires": { "node-modules-regexp": "^1.0.0" } }, "pkg-dir": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", "dev": true, "requires": { "find-up": "^3.0.0" } }, "platform": { "version": "1.3.4", "resolved": "https://registry.npmjs.org/platform/-/platform-1.3.4.tgz", "integrity": "sha1-bw+xftqqSPIUQrOpdcBjEw8cPr0=", "dev": true }, "pn": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz", "integrity": "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==", "dev": true }, "posix-character-classes": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", "dev": true }, "prelude-ls": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", "dev": true }, "pretty-format": { "version": "24.7.0", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-24.7.0.tgz", "integrity": "sha512-apen5cjf/U4dj7tHetpC7UEFCvtAgnNZnBDkfPv3fokzIqyOJckAG9OlAPC1BlFALnqT/lGB2tl9EJjlK6eCsA==", "dev": true, "requires": { "@jest/types": "^24.7.0", "ansi-regex": "^4.0.0", "ansi-styles": "^3.2.0", "react-is": "^16.8.4" }, "dependencies": { "ansi-regex": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", "dev": true }, "ansi-styles": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "requires": { "color-convert": "^1.9.0" } } } }, "process-nextick-args": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz", "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=", "dev": true }, "prompts": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.0.4.tgz", "integrity": "sha512-HTzM3UWp/99A0gk51gAegwo1QRYA7xjcZufMNe33rCclFszUYAuHe1fIN/3ZmiHeGPkUsNaRyQm1hHOfM0PKxA==", "dev": true, "requires": { "kleur": "^3.0.2", "sisteransi": "^1.0.0" } }, "psl": { "version": "1.1.31", "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.31.tgz", "integrity": "sha512-/6pt4+C+T+wZUieKR620OpzN/LlnNKuWjy1iFLQ/UG35JqHlR/89MP1d96dUfkf6Dne3TuLQzOYEYshJ+Hx8mw==", "dev": true }, "pump": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", "dev": true, "requires": { "end-of-stream": "^1.1.0", "once": "^1.3.1" } }, "punycode": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", "dev": true }, "qs": { "version": "6.5.2", "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", "dev": true }, "react-is": { "version": "16.8.6", "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.8.6.tgz", "integrity": "sha512-aUk3bHfZ2bRSVFFbbeVS4i+lNPZr3/WM5jT2J5omUVV1zzcs1nAaf3l51ctA5FFvCRbhrH0bdAsRRQddFJZPtA==", "dev": true }, "read-pkg": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", "dev": true, "requires": { "load-json-file": "^4.0.0", "normalize-package-data": "^2.3.2", "path-type": "^3.0.0" } }, "read-pkg-up": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-4.0.0.tgz", "integrity": "sha512-6etQSH7nJGsK0RbG/2TeDzZFa8shjQ1um+SwQQ5cwKy0dhSXdOncEhb1CPpvQG4h7FyOV6EB6YlV0yJvZQNAkA==", "dev": true, "requires": { "find-up": "^3.0.0", "read-pkg": "^3.0.0" } }, "readable-stream": { "version": "2.2.11", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.11.tgz", "integrity": "sha512-h+8+r3MKEhkiVrwdKL8aWs1oc1VvBu33ueshOvS26RsZQ3Amhx/oO3TKe4lApSV9ueY6as8EAh7mtuFjdlhg9Q==", "dev": true, "requires": { "core-util-is": "~1.0.0", "inherits": "~2.0.1", "isarray": "~1.0.0", "process-nextick-args": "~1.0.6", "safe-buffer": "~5.0.1", "string_decoder": "~1.0.0", "util-deprecate": "~1.0.1" } }, "realpath-native": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/realpath-native/-/realpath-native-1.1.0.tgz", "integrity": "sha512-wlgPA6cCIIg9gKz0fgAPjnzh4yR/LnXovwuo9hvyGvx3h8nX4+/iLZplfUWasXpqD8BdnGnP5njOFjkUwPzvjA==", "dev": true, "requires": { "util.promisify": "^1.0.0" } }, "regex-not": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", "dev": true, "requires": { "extend-shallow": "^3.0.2", "safe-regex": "^1.1.0" } }, "regexp-to-ast": { "version": "0.3.5", "resolved": "https://registry.npmjs.org/regexp-to-ast/-/regexp-to-ast-0.3.5.tgz", "integrity": "sha512-1CJygtdvsfNFwiyjaMLBWtg2tfEqx/jSZ8S6TV+GlNL8kiH8rb4cm5Pb7A/C2BpyM/fA8ZJEudlCwi/jvAY+Ow==", "dev": true }, "remix": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/remix/-/remix-0.1.4.tgz", "integrity": "sha1-eNr97rLLo5BvwvJ9DZG52EEDJf8=", "dev": true, "requires": { "lodash": "^2.4.1" }, "dependencies": { "lodash": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz", "integrity": "sha1-+t2DS5aDBz2hebPq5tnA0VBT9z4=", "dev": true } } }, "remove-trailing-separator": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", "dev": true }, "repeat-element": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", "dev": true }, "repeat-string": { "version": "1.6.1", "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", "dev": true }, "request": { "version": "2.88.0", "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", "dev": true, "requires": { "aws-sign2": "~0.7.0", "aws4": "^1.8.0", "caseless": "~0.12.0", "combined-stream": "~1.0.6", "extend": "~3.0.2", "forever-agent": "~0.6.1", "form-data": "~2.3.2", "har-validator": "~5.1.0", "http-signature": "~1.2.0", "is-typedarray": "~1.0.0", "isstream": "~0.1.2", "json-stringify-safe": "~5.0.1", "mime-types": "~2.1.19", "oauth-sign": "~0.9.0", "performance-now": "^2.1.0", "qs": "~6.5.2", "safe-buffer": "^5.1.2", "tough-cookie": "~2.4.3", "tunnel-agent": "^0.6.0", "uuid": "^3.3.2" }, "dependencies": { "punycode": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", "dev": true }, "safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", "dev": true }, "tough-cookie": { "version": "2.4.3", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", "dev": true, "requires": { "psl": "^1.1.24", "punycode": "^1.4.1" } } } }, "request-promise-core": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.2.tgz", "integrity": "sha512-UHYyq1MO8GsefGEt7EprS8UrXsm1TxEvFUX1IMTuSLU2Rh7fTIdFtl8xD7JiEYiWU2dl+NYAjCTksTehQUxPag==", "dev": true, "requires": { "lodash": "^4.17.11" }, "dependencies": { "lodash": { "version": "4.17.11", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", "dev": true } } }, "request-promise-native": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.7.tgz", "integrity": "sha512-rIMnbBdgNViL37nZ1b3L/VfPOpSi0TqVDQPAvO6U14lMzOLrt5nilxCQqtDKhZeDiW0/hkCXGoQjhgJd/tCh6w==", "dev": true, "requires": { "request-promise-core": "1.1.2", "stealthy-require": "^1.1.1", "tough-cookie": "^2.3.3" } }, "require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", "dev": true }, "require-main-filename": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", "dev": true }, "resolve": { "version": "1.10.1", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.10.1.tgz", "integrity": "sha512-KuIe4mf++td/eFb6wkaPbMDnP6kObCaEtIDuHOUED6MNUo4K670KZUHuuvYPZDxNF0WVLw49n06M2m2dXphEzA==", "dev": true, "requires": { "path-parse": "^1.0.6" } }, "resolve-cwd": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", "dev": true, "requires": { "resolve-from": "^3.0.0" } }, "resolve-from": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", "dev": true }, "resolve-url": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", "dev": true }, "ret": { "version": "0.1.15", "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", "dev": true }, "rimraf": { "version": "2.6.3", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", "dev": true, "requires": { "glob": "^7.1.3" } }, "rsvp": { "version": "4.8.4", "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-4.8.4.tgz", "integrity": "sha512-6FomvYPfs+Jy9TfXmBpBuMWNH94SgCsZmJKcanySzgNNP6LjWxBvyLTa9KaMfDDM5oxRfrKDB0r/qeRsLwnBfA==", "dev": true }, "safe-buffer": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.0.1.tgz", "integrity": "sha1-0mPKVGls2KMGtcplUekt5XkY++c=", "dev": true }, "safe-regex": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", "dev": true, "requires": { "ret": "~0.1.10" } }, "safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", "dev": true }, "sane": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/sane/-/sane-4.1.0.tgz", "integrity": "sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA==", "dev": true, "requires": { "@cnakazawa/watch": "^1.0.3", "anymatch": "^2.0.0", "capture-exit": "^2.0.0", "exec-sh": "^0.3.2", "execa": "^1.0.0", "fb-watchman": "^2.0.0", "micromatch": "^3.1.4", "minimist": "^1.1.1", "walker": "~1.0.5" } }, "sax": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", "dev": true }, "semver": { "version": "5.7.0", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==", "dev": true }, "set-blocking": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", "dev": true }, "set-value": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.0.tgz", "integrity": "sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg==", "dev": true, "requires": { "extend-shallow": "^2.0.1", "is-extendable": "^0.1.1", "is-plain-object": "^2.0.3", "split-string": "^3.0.1" }, "dependencies": { "extend-shallow": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { "is-extendable": "^0.1.0" } } } }, "shebang-command": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", "dev": true, "requires": { "shebang-regex": "^1.0.0" } }, "shebang-regex": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", "dev": true }, "shellwords": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz", "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==", "dev": true }, "signal-exit": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", "dev": true }, "sisteransi": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.0.tgz", "integrity": "sha512-N+z4pHB4AmUv0SjveWRd6q1Nj5w62m5jodv+GD8lvmbY/83T/rpbJGZOnK5T149OldDj4Db07BSv9xY4K6NTPQ==", "dev": true }, "slash": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", "dev": true }, "snapdragon": { "version": "0.8.2", "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", "dev": true, "requires": { "base": "^0.11.1", "debug": "^2.2.0", "define-property": "^0.2.5", "extend-shallow": "^2.0.1", "map-cache": "^0.2.2", "source-map": "^0.5.6", "source-map-resolve": "^0.5.0", "use": "^3.1.0" }, "dependencies": { "define-property": { "version": "0.2.5", "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "dev": true, "requires": { "is-descriptor": "^0.1.0" } }, "extend-shallow": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { "is-extendable": "^0.1.0" } }, "source-map": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", "dev": true } } }, "snapdragon-node": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", "dev": true, "requires": { "define-property": "^1.0.0", "isobject": "^3.0.0", "snapdragon-util": "^3.0.1" }, "dependencies": { "define-property": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", "dev": true, "requires": { "is-descriptor": "^1.0.0" } }, "is-accessor-descriptor": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", "dev": true, "requires": { "kind-of": "^6.0.0" } }, "is-data-descriptor": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", "dev": true, "requires": { "kind-of": "^6.0.0" } }, "is-descriptor": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", "dev": true, "requires": { "is-accessor-descriptor": "^1.0.0", "is-data-descriptor": "^1.0.0", "kind-of": "^6.0.2" } } } }, "snapdragon-util": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", "dev": true, "requires": { "kind-of": "^3.2.0" }, "dependencies": { "kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { "is-buffer": "^1.1.5" } } } }, "source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true }, "source-map-resolve": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==", "dev": true, "requires": { "atob": "^2.1.1", "decode-uri-component": "^0.2.0", "resolve-url": "^0.2.1", "source-map-url": "^0.4.0", "urix": "^0.1.0" } }, "source-map-support": { "version": "0.5.12", "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.12.tgz", "integrity": "sha512-4h2Pbvyy15EE02G+JOZpUCmqWJuqrs+sEkzewTm++BPi7Hvn/HwcqLAcNxYAyI0x13CpPPn+kMjl+hplXMHITQ==", "dev": true, "requires": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" } }, "source-map-url": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", "dev": true }, "spdx-correct": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz", "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==", "dev": true, "requires": { "spdx-expression-parse": "^3.0.0", "spdx-license-ids": "^3.0.0" } }, "spdx-exceptions": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz", "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==", "dev": true }, "spdx-expression-parse": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", "dev": true, "requires": { "spdx-exceptions": "^2.1.0", "spdx-license-ids": "^3.0.0" } }, "spdx-license-ids": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.4.tgz", "integrity": "sha512-7j8LYJLeY/Yb6ACbQ7F76qy5jHkp0U6jgBfJsk97bwWlVUnUWsAgpyaCvo17h0/RQGnQ036tVDomiwoI4pDkQA==", "dev": true }, "split-string": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", "dev": true, "requires": { "extend-shallow": "^3.0.0" } }, "sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", "dev": true }, "sshpk": { "version": "1.16.1", "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", "dev": true, "requires": { "asn1": "~0.2.3", "assert-plus": "^1.0.0", "bcrypt-pbkdf": "^1.0.0", "dashdash": "^1.12.0", "ecc-jsbn": "~0.1.1", "getpass": "^0.1.1", "jsbn": "~0.1.0", "safer-buffer": "^2.0.2", "tweetnacl": "~0.14.0" } }, "stack-utils": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.2.tgz", "integrity": "sha512-MTX+MeG5U994cazkjd/9KNAapsHnibjMLnfXodlkXw76JEea0UiNzrqidzo1emMwk7w5Qhc9jd4Bn9TBb1MFwA==", "dev": true }, "static-extend": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", "dev": true, "requires": { "define-property": "^0.2.5", "object-copy": "^0.1.0" }, "dependencies": { "define-property": { "version": "0.2.5", "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", "dev": true, "requires": { "is-descriptor": "^0.1.0" } } } }, "stealthy-require": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=", "dev": true }, "string-length": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/string-length/-/string-length-2.0.0.tgz", "integrity": "sha1-1A27aGo6zpYMHP/KVivyxF+DY+0=", "dev": true, "requires": { "astral-regex": "^1.0.0", "strip-ansi": "^4.0.0" }, "dependencies": { "ansi-regex": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", "dev": true }, "strip-ansi": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", "dev": true, "requires": { "ansi-regex": "^3.0.0" } } } }, "string-width": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", "dev": true, "requires": { "is-fullwidth-code-point": "^2.0.0", "strip-ansi": "^4.0.0" }, "dependencies": { "ansi-regex": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", "dev": true }, "strip-ansi": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", "dev": true, "requires": { "ansi-regex": "^3.0.0" } } } }, "string_decoder": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.2.tgz", "integrity": "sha1-sp4fThEl+pehA4K4pTNze3SR4Xk=", "dev": true, "requires": { "safe-buffer": "~5.0.1" } }, "strip-ansi": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "requires": { "ansi-regex": "^2.0.0" } }, "strip-bom": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", "dev": true }, "strip-eof": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", "dev": true }, "supports-color": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", "dev": true }, "symbol-tree": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.2.tgz", "integrity": "sha1-rifbOPZgp64uHDt9G8KQgZuFGeY=", "dev": true }, "test-exclude": { "version": "5.2.2", "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-5.2.2.tgz", "integrity": "sha512-N2pvaLpT8guUpb5Fe1GJlmvmzH3x+DAKmmyEQmFP792QcLYoGE1syxztSvPD1V8yPe6VrcCt6YGQVjSRjCASsA==", "dev": true, "requires": { "glob": "^7.1.3", "minimatch": "^3.0.4", "read-pkg-up": "^4.0.0", "require-main-filename": "^2.0.0" } }, "throat": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/throat/-/throat-4.1.0.tgz", "integrity": "sha1-iQN8vJLFarGJJua6TLsgDhVnKmo=", "dev": true }, "through2": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz", "integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=", "dev": true, "requires": { "readable-stream": "^2.1.5", "xtend": "~4.0.1" } }, "tmpl": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.4.tgz", "integrity": "sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE=", "dev": true }, "to-fast-properties": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", "dev": true }, "to-object-path": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", "dev": true, "requires": { "kind-of": "^3.0.2" }, "dependencies": { "kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", "dev": true, "requires": { "is-buffer": "^1.1.5" } } } }, "to-regex": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", "dev": true, "requires": { "define-property": "^2.0.2", "extend-shallow": "^3.0.2", "regex-not": "^1.0.2", "safe-regex": "^1.1.0" } }, "to-regex-range": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", "dev": true, "requires": { "is-number": "^3.0.0", "repeat-string": "^1.6.1" } }, "tokenizer2": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/tokenizer2/-/tokenizer2-2.0.0.tgz", "integrity": "sha1-jpP2FCu8nR6baOKSk1Fxh7mDO18=", "dev": true, "requires": { "through2": "^2.0.0" } }, "tough-cookie": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", "dev": true, "requires": { "psl": "^1.1.28", "punycode": "^2.1.1" } }, "tr46": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", "dev": true, "requires": { "punycode": "^2.1.0" } }, "trim-right": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", "dev": true }, "tunnel-agent": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", "dev": true, "requires": { "safe-buffer": "^5.0.1" } }, "tweetnacl": { "version": "0.14.5", "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", "dev": true }, "type-check": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", "dev": true, "requires": { "prelude-ls": "~1.1.2" } }, "uglify-js": { "version": "3.5.7", "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.5.7.tgz", "integrity": "sha512-GCgJx3BBuaf/QMvBBkhoHDh4SVsHCC3ILEzriPw4FgJJKCuxVBSYLRkDlmT3uhXyGWKs3VN5r0mCkBIZaHWu3w==", "dev": true, "optional": true, "requires": { "commander": "~2.20.0", "source-map": "~0.6.1" } }, "union-value": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.0.tgz", "integrity": "sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ=", "dev": true, "requires": { "arr-union": "^3.1.0", "get-value": "^2.0.6", "is-extendable": "^0.1.1", "set-value": "^0.4.3" }, "dependencies": { "extend-shallow": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", "dev": true, "requires": { "is-extendable": "^0.1.0" } }, "set-value": { "version": "0.4.3", "resolved": "https://registry.npmjs.org/set-value/-/set-value-0.4.3.tgz", "integrity": "sha1-fbCPnT0i3H945Trzw79GZuzfzPE=", "dev": true, "requires": { "extend-shallow": "^2.0.1", "is-extendable": "^0.1.1", "is-plain-object": "^2.0.1", "to-object-path": "^0.3.0" } } } }, "unset-value": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", "dev": true, "requires": { "has-value": "^0.3.1", "isobject": "^3.0.0" }, "dependencies": { "has-value": { "version": "0.3.1", "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", "dev": true, "requires": { "get-value": "^2.0.3", "has-values": "^0.1.4", "isobject": "^2.0.0" }, "dependencies": { "isobject": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", "dev": true, "requires": { "isarray": "1.0.0" } } } }, "has-values": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", "dev": true } } }, "uri-js": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", "dev": true, "requires": { "punycode": "^2.1.0" } }, "urix": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", "dev": true }, "use": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", "dev": true }, "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", "dev": true }, "util.promisify": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.0.tgz", "integrity": "sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==", "dev": true, "requires": { "define-properties": "^1.1.2", "object.getownpropertydescriptors": "^2.0.3" } }, "uuid": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==", "dev": true }, "validate-npm-package-license": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", "dev": true, "requires": { "spdx-correct": "^3.0.0", "spdx-expression-parse": "^3.0.0" } }, "verror": { "version": "1.10.0", "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", "dev": true, "requires": { "assert-plus": "^1.0.0", "core-util-is": "1.0.2", "extsprintf": "^1.2.0" } }, "w3c-hr-time": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.1.tgz", "integrity": "sha1-gqwr/2PZUOqeMYmlimViX+3xkEU=", "dev": true, "requires": { "browser-process-hrtime": "^0.1.2" } }, "walker": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.7.tgz", "integrity": "sha1-L3+bj9ENZ3JisYqITijRlhjgKPs=", "dev": true, "requires": { "makeerror": "1.0.x" } }, "wcwidth": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=", "dev": true, "optional": true, "requires": { "defaults": "^1.0.3" } }, "webidl-conversions": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", "dev": true }, "whatwg-encoding": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", "dev": true, "requires": { "iconv-lite": "0.4.24" } }, "whatwg-mimetype": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", "dev": true }, "whatwg-url": { "version": "6.5.0", "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-6.5.0.tgz", "integrity": "sha512-rhRZRqx/TLJQWUpQ6bmrt2UV4f0HCQ463yQuONJqC6fO2VoEb1pTYddbe59SkYq87aoM5A3bdhMZiUiVws+fzQ==", "dev": true, "requires": { "lodash.sortby": "^4.7.0", "tr46": "^1.0.1", "webidl-conversions": "^4.0.2" } }, "which": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", "dev": true, "requires": { "isexe": "^2.0.0" } }, "which-module": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", "dev": true }, "wordwrap": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", "dev": true }, "wrap-ansi": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", "dev": true, "requires": { "string-width": "^1.0.1", "strip-ansi": "^3.0.1" }, "dependencies": { "is-fullwidth-code-point": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", "dev": true, "requires": { "number-is-nan": "^1.0.0" } }, "string-width": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", "dev": true, "requires": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", "strip-ansi": "^3.0.0" } } } }, "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", "dev": true }, "write-file-atomic": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.1.tgz", "integrity": "sha512-TGHFeZEZMnv+gBFRfjAcxL5bPHrsGKtnb4qsFAws7/vlh+QfwAaySIw4AXP9ZskTTh5GWu3FLuJhsWVdiJPGvg==", "dev": true, "requires": { "graceful-fs": "^4.1.11", "imurmurhash": "^0.1.4", "signal-exit": "^3.0.2" } }, "ws": { "version": "5.2.2", "resolved": "https://registry.npmjs.org/ws/-/ws-5.2.2.tgz", "integrity": "sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA==", "dev": true, "requires": { "async-limiter": "~1.0.0" } }, "xml-name-validator": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", "dev": true }, "xtend": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=", "dev": true }, "y18n": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", "dev": true }, "yargs": { "version": "12.0.5", "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz", "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==", "dev": true, "requires": { "cliui": "^4.0.0", "decamelize": "^1.2.0", "find-up": "^3.0.0", "get-caller-file": "^1.0.1", "os-locale": "^3.0.0", "require-directory": "^2.1.1", "require-main-filename": "^1.0.1", "set-blocking": "^2.0.0", "string-width": "^2.0.0", "which-module": "^2.0.0", "y18n": "^3.2.1 || ^4.0.0", "yargs-parser": "^11.1.1" }, "dependencies": { "require-main-filename": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", "dev": true } } }, "yargs-parser": { "version": "11.1.1", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz", "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==", "dev": true, "requires": { "camelcase": "^5.0.0", "decamelize": "^1.2.0" } } } } no-context-moo-ea38135/package.json000066400000000000000000000012101431654322400172170ustar00rootroot00000000000000{ "name": "moo", "version": "0.5.2", "description": "Optimised tokenizer/lexer generator! 🐄 Much performance. Moo!", "main": "moo.js", "files": [ "moo.js" ], "repository": "https://github.com/tjvr/moo.git", "author": "Tim Radvan ", "contributors": [ "Nathan" ], "license": "BSD-3-Clause", "scripts": { "test": "jest .", "benchmark": "benchr test/benchmark.js", "moo": "echo 'Mooooo!'" }, "devDependencies": { "benchr": "^3.2.0", "chevrotain": "4.2.0", "jest": "24.7.1", "lex": "^1.7.9", "lexing": "^0.8.0", "remix": "^0.1.4", "tokenizer2": "^2.0.0" } } no-context-moo-ea38135/test/000077500000000000000000000000001431654322400157165ustar00rootroot00000000000000no-context-moo-ea38135/test/__snapshots__/000077500000000000000000000000001431654322400205345ustar00rootroot00000000000000no-context-moo-ea38135/test/__snapshots__/test.js.snap000066400000000000000000010045171431654322400230210ustar00rootroot00000000000000// Jest Snapshot v1, https://goo.gl/fbAQLP exports[`example: python kurt python 1`] = ` Array [ "COMMENT \\"# Copyright (C) 2012 Tim Radvan\\"", "NL \\"\\\\n\\"", "COMMENT \\"#\\"", "NL \\"\\\\n\\"", "COMMENT \\"# This file is part of Kurt.\\"", "NL \\"\\\\n\\"", "COMMENT \\"#\\"", "NL \\"\\\\n\\"", "COMMENT \\"# Kurt is free software: you can redistribute it and/or modify it under the\\"", "NL \\"\\\\n\\"", "COMMENT \\"# terms of the GNU Lesser General Public License as published by the Free\\"", "NL \\"\\\\n\\"", "COMMENT \\"# Software Foundation, either version 3 of the License, or (at your option) any\\"", "NL \\"\\\\n\\"", "COMMENT \\"# later version.\\"", "NL \\"\\\\n\\"", "COMMENT \\"#\\"", "NL \\"\\\\n\\"", "COMMENT \\"# Kurt is distributed in the hope that it will be useful, but WITHOUT ANY\\"", "NL \\"\\\\n\\"", "COMMENT \\"# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR\\"", "NL \\"\\\\n\\"", "COMMENT \\"# A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more\\"", "NL \\"\\\\n\\"", "COMMENT \\"# details.\\"", "NL \\"\\\\n\\"", "COMMENT \\"#\\"", "NL \\"\\\\n\\"", "COMMENT \\"# You should have received a copy of the GNU Lesser General Public License\\"", "NL \\"\\\\n\\"", "COMMENT \\"# along with Kurt. If not, see .\\"", "NL \\"\\\\n\\"", "NL \\"\\\\n\\"", "STRING \\"\\\\nA Python module for reading and writing Scratch project files.\\\\n\\\\nScratch is created by the Lifelong Kindergarten Group at the MIT Media Lab.\\\\nSee their website: http://scratch.mit.edu/\\\\n\\\\n\\\\nClasses\\\\n-------\\\\n\\\\nThe main interface:\\\\n\\\\n* :class:\`Project\`\\\\n\\\\nThe following :class:\`Actors \` may be found on the project stage:\\\\n\\\\n* :class:\`Stage\`\\\\n* :class:\`Sprite\`\\\\n* :class:\`Watcher\`\\\\n\\\\nThe two :class:\`Scriptables \` (:class:\`Stage\` and :class:\`Sprite\`)\\\\nhave instances of the following contained in their attributes:\\\\n\\\\n* :class:\`Variable\`\\\\n* :class:\`List\`\\\\n\\\\nScripts use the following classes:\\\\n\\\\n* :class:\`Block\`\\\\n* :class:\`Script\`\\\\n* :class:\`Comment\`\\\\n* :class:\`BlockType\`\\\\n\\\\nMedia files use the following classes:\\\\n\\\\n* :class:\`Costume\`\\\\n* :class:\`Image\`\\\\n* :class:\`Sound\`\\\\n* :class:\`Waveform\`\\\\n\\\\nFile Formats\\\\n------------\\\\n\\\\nSupported file formats:\\\\n\\\\n =============== =========== =========\\\\n Format Name Description Extension\\\\n =============== =========== =========\\\\n \`\`\\\\\\"scratch14\\\\\\"\`\` Scratch 1.4 \`\`.sb\`\`\\\\n \`\`\\\\\\"scratch20\\\\\\"\`\` Scratch 2.0 \`\`.sb2\`\`\\\\n =============== =========== =========\\\\n\\\\nPass \\\\\\"Format name\\\\\\" as the argument to :attr:\`Project.convert\`.\\\\n\\\\nKurt provides a superset of the information in each individual format, but will\\\\nonly convert features between a subset of formats.\\\\n\\\\n----\\\\n\\\\n\\"", "NEWLINE \\"\\\\n\\"", "NL \\"\\\\n\\"", "NAME \\"__version__\\"", "OP \\"=\\"", "STRING \\"2.0.7\\"", "NEWLINE \\"\\\\n\\"", "NL \\"\\\\n\\"", "NAME \\"from\\"", "NAME \\"collections\\"", "NAME \\"import\\"", "NAME \\"OrderedDict\\"", "NEWLINE \\"\\\\n\\"", "NAME \\"import\\"", "NAME \\"re\\"", "NEWLINE \\"\\\\n\\"", "NAME \\"import\\"", "NAME \\"os\\"", "NEWLINE \\"\\\\n\\"", "NAME \\"import\\"", "NAME \\"random\\"", "NEWLINE \\"\\\\n\\"", "NAME \\"try\\"", "OP \\":\\"", "NEWLINE \\"\\\\n\\"", "INDENT \\" \\"", "NAME \\"from\\"", "NAME \\"cStringIO\\"", "NAME \\"import\\"", "NAME \\"StringIO\\"", "NEWLINE \\"\\\\n\\"", "DEDENT \\"\\"", "NAME \\"except\\"", "NAME \\"ImportError\\"", "OP \\":\\"", "NEWLINE \\"\\\\n\\"", "INDENT \\" \\"", "NAME \\"from\\"", "NAME \\"StringIO\\"", "NAME \\"import\\"", "NAME \\"StringIO\\"", "NEWLINE \\"\\\\n\\"", "NL \\"\\\\n\\"", "DEDENT \\"\\"", "NAME \\"import\\"", "NAME \\"PIL\\"", "OP \\".\\"", "NAME \\"Image\\"", "NEWLINE \\"\\\\n\\"", "NAME \\"import\\"", "NAME \\"wave\\"", "NEWLINE \\"\\\\n\\"", "NL \\"\\\\n\\"", "NL \\"\\\\n\\"", "NL \\"\\\\n\\"", "COMMENT \\"#-- Utils --#\\"", "NL \\"\\\\n\\"", "NL \\"\\\\n\\"", "NAME \\"def\\"", "NAME \\"_clean_filename\\"", "OP \\"(\\"", "NAME \\"name\\"", "OP \\")\\"", "OP \\":\\"", "NEWLINE \\"\\\\n\\"", "INDENT \\" \\"", "STRING \\"Strip non-alphanumeric characters to makes name safe to be used as\\\\n filename.\\"", "NEWLINE \\"\\\\n\\"", "NAME \\"return\\"", "NAME \\"re\\"", "OP \\".\\"", "NAME \\"sub\\"", "OP \\"(\\"", "STRING \\"[^\\\\\\\\\\\\\\\\w .]\\"", "OP \\",\\"", "STRING \\"\\"", "OP \\",\\"", "NAME \\"name\\"", "OP \\")\\"", "NEWLINE \\"\\\\n\\"", "NL \\"\\\\n\\"", "NL \\"\\\\n\\"", "NL \\"\\\\n\\"", "COMMENT \\"#-- Project: main class --#\\"", "NL \\"\\\\n\\"", "NL \\"\\\\n\\"", "DEDENT \\"\\"", "NAME \\"class\\"", "NAME \\"Project\\"", "OP \\"(\\"", "NAME \\"object\\"", "OP \\")\\"", "OP \\":\\"", "NEWLINE \\"\\\\n\\"", "INDENT \\" \\"", "STRING \\"The main kurt class. Stores the contents of a project file.\\\\n\\\\n Contents include global variables and lists, the :attr:\`stage\` and\\\\n :attr:\`sprites\`, each with their own :attr:\`scripts\`, :attr:\`costumes\`,\\\\n :attr:\`sounds\`, :attr:\`variables\` and :attr:\`lists\`.\\\\n\\\\n A Project can be loaded from or saved to disk in a format which can be read\\\\n by a Scratch program or one of its derivatives.\\\\n\\\\n Loading a project::\\\\n\\\\n p = kurt.Project.load(\\\\\\"tests/game.sb\\\\\\")\\\\n\\\\n Getting all the scripts::\\\\n\\\\n for scriptable in p.sprites + [p.stage]:\\\\n for script in scriptable.scripts:\\\\n print script\\\\n\\\\n Creating a new project::\\\\n\\\\n p = kurt.Project()\\\\n\\\\n Converting between formats::\\\\n\\\\n p = kurt.Project.load(\\\\\\"tests/game.sb\\\\\\")\\\\n p.convert(\\\\\\"scratch20\\\\\\")\\\\n # []\\\\n p.save()\\\\n # 'tests/game.sb2'\\\\n\\\\n \\"", "NEWLINE \\"\\\\n\\"", "NL \\"\\\\n\\"", "NAME \\"def\\"", "NAME \\"__init__\\"", "OP \\"(\\"", "NAME \\"self\\"", "OP \\")\\"", "OP \\":\\"", "NEWLINE \\"\\\\n\\"", "INDENT \\" \\"", "NAME \\"self\\"", "OP \\".\\"", "NAME \\"name\\"", "OP \\"=\\"", "NAME \\"u\\"", "STRING \\"\\"", "NEWLINE \\"\\\\n\\"", "STRING \\"The name of the project.\\\\n\\\\n May be displayed to the user. Doesn't have to match the filename in\\\\n :attr:\`path\`. May not be saved for some formats.\\\\n\\\\n \\"", "NEWLINE \\"\\\\n\\"", "NL \\"\\\\n\\"", "NAME \\"self\\"", "OP \\".\\"", "NAME \\"path\\"", "OP \\"=\\"", "NAME \\"None\\"", "NEWLINE \\"\\\\n\\"", "STRING \\"The path to the project file.\\"", "NEWLINE \\"\\\\n\\"", "NL \\"\\\\n\\"", "NAME \\"self\\"", "OP \\".\\"", "NAME \\"_plugin\\"", "OP \\"=\\"", "NAME \\"None\\"", "NEWLINE \\"\\\\n\\"", "STRING \\"The file format plugin used to load this project.\\\\n\\\\n Get the current format using the :attr:\`format\` property. Use\\\\n :attr:\`convert()\` to change between formats.\\\\n\\\\n \\"", "NEWLINE \\"\\\\n\\"", "NL \\"\\\\n\\"", "NAME \\"self\\"", "OP \\".\\"", "NAME \\"stage\\"", "OP \\"=\\"", "NAME \\"Stage\\"", "OP \\"(\\"", "NAME \\"self\\"", "OP \\")\\"", "NEWLINE \\"\\\\n\\"", "STRING \\"The :class:\`Stage\`.\\"", "NEWLINE \\"\\\\n\\"", "NL \\"\\\\n\\"", "NAME \\"self\\"", "OP \\".\\"", "NAME \\"sprites\\"", "OP \\"=\\"", "OP \\"[\\"", "OP \\"]\\"", "NEWLINE \\"\\\\n\\"", "STRING \\"List of :class:\`Sprites \`.\\\\n\\\\n Use :attr:\`get_sprite\` to get a sprite by name.\\\\n\\\\n \\"", "NEWLINE \\"\\\\n\\"", "NL \\"\\\\n\\"", "NAME \\"self\\"", "OP \\".\\"", "NAME \\"actors\\"", "OP \\"=\\"", "OP \\"[\\"", "OP \\"]\\"", "NEWLINE \\"\\\\n\\"", "STRING \\"List of each :class:\`Actor\` on the stage.\\\\n\\\\n Includes :class:\`Watchers \` as well as :class:\`Sprites\\\\n \`.\\\\n\\\\n Sprites in :attr:\`sprites\` but not in actors will be added to actors on\\\\n save.\\\\n\\\\n \\"", "NEWLINE \\"\\\\n\\"", "NL \\"\\\\n\\"", "NAME \\"self\\"", "OP \\".\\"", "NAME \\"variables\\"", "OP \\"=\\"", "OP \\"{\\"", "OP \\"}\\"", "NEWLINE \\"\\\\n\\"", "STRING \\":class:\`dict\` of global :class:\`Variables \` by name.\\"", "NEWLINE \\"\\\\n\\"", "NL \\"\\\\n\\"", "NAME \\"self\\"", "OP \\".\\"", "NAME \\"lists\\"", "OP \\"=\\"", "OP \\"{\\"", "OP \\"}\\"", "NEWLINE \\"\\\\n\\"", "STRING \\":class:\`dict\` of global :class:\`Lists \` by name.\\"", "NEWLINE \\"\\\\n\\"", "NL \\"\\\\n\\"", "NAME \\"self\\"", "OP \\".\\"", "NAME \\"thumbnail\\"", "OP \\"=\\"", "NAME \\"None\\"", "NEWLINE \\"\\\\n\\"", "STRING \\"An :class:\`Image\` with a screenshot of the project.\\"", "NEWLINE \\"\\\\n\\"", "NL \\"\\\\n\\"", "NAME \\"self\\"", "OP \\".\\"", "NAME \\"tempo\\"", "OP \\"=\\"", "NUMBER \\"60\\"", "NEWLINE \\"\\\\n\\"", "STRING \\"The tempo in BPM used for note blocks.\\"", "NEWLINE \\"\\\\n\\"", "NL \\"\\\\n\\"", "NAME \\"self\\"", "OP \\".\\"", "NAME \\"notes\\"", "OP \\"=\\"", "NAME \\"u\\"", "STRING \\"Made with Kurt\\\\\\\\nhttp://github.com/blob8108/kurt\\"", "NEWLINE \\"\\\\n\\"", "STRING \\"Notes about the project, aka project comments.\\\\n\\\\n Displayed on the website next to the project.\\\\n\\\\n Line endings will be converted to \`\`\\\\\\\\\\\\\\\\n\`\`.\\\\n\\\\n \\"", "NEWLINE \\"\\\\n\\"", "NL \\"\\\\n\\"", "NAME \\"self\\"", "OP \\".\\"", "NAME \\"author\\"", "OP \\"=\\"", "NAME \\"u\\"", "STRING \\"\\"", "NEWLINE \\"\\\\n\\"", "STRING \\"The username of the project's author, eg. \`\`'blob8108'\`\`.\\"", "NEWLINE \\"\\\\n\\"", "NL \\"\\\\n\\"", "DEDENT \\"\\"", "NAME \\"def\\"", "NAME \\"__repr__\\"", "OP \\"(\\"", "NAME \\"self\\"", "OP \\")\\"", "OP \\":\\"", "NEWLINE \\"\\\\n\\"", "INDENT \\" \\"", "NAME \\"return\\"", "STRING \\"<%s.%s()>\\"", "OP \\"%\\"", "OP \\"(\\"", "NAME \\"self\\"", "OP \\".\\"", "NAME \\"__class__\\"", "OP \\".\\"", "NAME \\"__module__\\"", "OP \\",\\"", "NL \\"\\\\n\\"", "NAME \\"self\\"", "OP \\".\\"", "NAME \\"__class__\\"", "OP \\".\\"", "NAME \\"__name__\\"", "OP \\")\\"", "NEWLINE \\"\\\\n\\"", "NL \\"\\\\n\\"", "DEDENT \\"\\"", "NAME \\"def\\"", "NAME \\"get_sprite\\"", "OP \\"(\\"", "NAME \\"self\\"", "OP \\",\\"", "NAME \\"name\\"", "OP \\")\\"", "OP \\":\\"", "NEWLINE \\"\\\\n\\"", "INDENT \\" \\"", "STRING \\"Get a sprite from :attr:\`sprites\` by name.\\\\n\\\\n Returns None if the sprite isn't found.\\\\n\\\\n \\"", "NEWLINE \\"\\\\n\\"", "NAME \\"for\\"", "NAME \\"sprite\\"", "NAME \\"in\\"", "NAME \\"self\\"", "OP \\".\\"", "NAME \\"sprites\\"", "OP \\":\\"", "NEWLINE \\"\\\\n\\"", "INDENT \\" \\"", "NAME \\"if\\"", "NAME \\"sprite\\"", "OP \\".\\"", "NAME \\"name\\"", "OP \\"==\\"", "NAME \\"name\\"", "OP \\":\\"", "NEWLINE \\"\\\\n\\"", "INDENT \\" \\"", "NAME \\"return\\"", "NAME \\"sprite\\"", "NEWLINE \\"\\\\n\\"", "NL \\"\\\\n\\"", "DEDENT \\"\\"", "DEDENT \\"\\"", "DEDENT \\"\\"", "OP \\"@\\"", "NAME \\"property\\"", "NEWLINE \\"\\\\n\\"", "NAME \\"def\\"", "NAME \\"format\\"", "OP \\"(\\"", "NAME \\"self\\"", "OP \\")\\"", "OP \\":\\"", "NEWLINE \\"\\\\n\\"", "INDENT \\" \\"", "STRING \\"The file format of the project.\\\\n\\\\n :class:\`Project\` is mainly a universal representation, and so a project\\\\n has no specfic format. This is the format the project was loaded with.\\\\n To convert to a different format, use :attr:\`save()\`.\\\\n\\\\n \\"", "NEWLINE \\"\\\\n\\"", "NAME \\"if\\"", "NAME \\"self\\"", "OP \\".\\"", "NAME \\"_plugin\\"", "OP \\":\\"", "NEWLINE \\"\\\\n\\"", "INDENT \\" \\"", "NAME \\"return\\"", "NAME \\"self\\"", "OP \\".\\"", "NAME \\"_plugin\\"", "OP \\".\\"", "NAME \\"name\\"", "NEWLINE \\"\\\\n\\"", "NL \\"\\\\n\\"", "DEDENT \\"\\"", "DEDENT \\"\\"", "OP \\"@\\"", "NAME \\"classmethod\\"", "NEWLINE \\"\\\\n\\"", "NAME \\"def\\"", "NAME \\"load\\"", "OP \\"(\\"", "NAME \\"cls\\"", "OP \\",\\"", "NAME \\"path\\"", "OP \\",\\"", "NAME \\"format\\"", "OP \\"=\\"", "NAME \\"None\\"", "OP \\")\\"", "OP \\":\\"", "NEWLINE \\"\\\\n\\"", "INDENT \\" \\"", "STRING \\"Load project from file.\\\\n\\\\n Use \`\`format\`\` to specify the file format to use.\\\\n\\\\n Path can be a file-like object, in which case format is required.\\\\n Otherwise, can guess the appropriate format from the extension.\\\\n\\\\n If you pass a file-like object, you're responsible for closing the\\\\n file.\\\\n\\\\n :param path: Path or file pointer.\\\\n :param format: :attr:\`KurtFileFormat.name\` eg. \`\`\\\\\\"scratch14\\\\\\"\`\`.\\\\n Overrides the extension.\\\\n\\\\n :raises: :class:\`UnknownFormat\` if the extension is unrecognised.\\\\n :raises: :py:class:\`ValueError\` if the format doesn't exist.\\\\n\\\\n \\"", "NEWLINE \\"\\\\n\\"", "NAME \\"path_was_string\\"", "OP \\"=\\"", "NAME \\"isinstance\\"", "OP \\"(\\"", "NAME \\"path\\"", "OP \\",\\"", "NAME \\"basestring\\"", "OP \\")\\"", "NEWLINE \\"\\\\n\\"", "NAME \\"if\\"", "NAME \\"path_was_string\\"", "OP \\":\\"", "NEWLINE \\"\\\\n\\"", "INDENT \\" \\"", "OP \\"(\\"", "NAME \\"folder\\"", "OP \\",\\"", "NAME \\"filename\\"", "OP \\")\\"", "OP \\"=\\"", "NAME \\"os\\"", "OP \\".\\"", "NAME \\"path\\"", "OP \\".\\"", "NAME \\"split\\"", "OP \\"(\\"", "NAME \\"path\\"", "OP \\")\\"", "NEWLINE \\"\\\\n\\"", "OP \\"(\\"", "NAME \\"name\\"", "OP \\",\\"", "NAME \\"extension\\"", "OP \\")\\"", "OP \\"=\\"", "NAME \\"os\\"", "OP \\".\\"", "NAME \\"path\\"", "OP \\".\\"", "NAME \\"splitext\\"", "OP \\"(\\"", "NAME \\"filename\\"", "OP \\")\\"", "NEWLINE \\"\\\\n\\"", "NAME \\"if\\"", "NAME \\"format\\"", "NAME \\"is\\"", "NAME \\"None\\"", "OP \\":\\"", "NEWLINE \\"\\\\n\\"", "INDENT \\" \\"", "NAME \\"plugin\\"", "OP \\"=\\"", "NAME \\"kurt\\"", "OP \\".\\"", "NAME \\"plugin\\"", "OP \\".\\"", "NAME \\"Kurt\\"", "OP \\".\\"", "NAME \\"get_plugin\\"", "OP \\"(\\"", "NAME \\"extension\\"", "OP \\"=\\"", "NAME \\"extension\\"", "OP \\")\\"", "NEWLINE \\"\\\\n\\"", "NAME \\"if\\"", "NAME \\"not\\"", "NAME \\"plugin\\"", "OP \\":\\"", "NEWLINE \\"\\\\n\\"", "INDENT \\" \\"", "NAME \\"raise\\"", "NAME \\"UnknownFormat\\"", "OP \\"(\\"", "NAME \\"extension\\"", "OP \\")\\"", "NEWLINE \\"\\\\n\\"", "DEDENT \\"\\"", "DEDENT \\"\\"", "NAME \\"fp\\"", "OP \\"=\\"", "NAME \\"open\\"", "OP \\"(\\"", "NAME \\"path\\"", "OP \\",\\"", "STRING \\"rb\\"", "OP \\")\\"", "NEWLINE \\"\\\\n\\"", "DEDENT \\"\\"", "NAME \\"else\\"", "OP \\":\\"", "NEWLINE \\"\\\\n\\"", "INDENT \\" \\"", "NAME \\"fp\\"", "OP \\"=\\"", "NAME \\"path\\"", "NEWLINE \\"\\\\n\\"", "NAME \\"assert\\"", "NAME \\"format\\"", "OP \\",\\"", "STRING \\"Format is required\\"", "NEWLINE \\"\\\\n\\"", "NAME \\"plugin\\"", "OP \\"=\\"", "NAME \\"kurt\\"", "OP \\".\\"", "NAME \\"plugin\\"", "OP \\".\\"", "NAME \\"Kurt\\"", "OP \\".\\"", "NAME \\"get_plugin\\"", "OP \\"(\\"", "NAME \\"format\\"", "OP \\")\\"", "NEWLINE \\"\\\\n\\"", "NL \\"\\\\n\\"", "DEDENT \\"\\"", "NAME \\"if\\"", "NAME \\"not\\"", "NAME \\"plugin\\"", "OP \\":\\"", "NEWLINE \\"\\\\n\\"", "INDENT \\" \\"", "NAME \\"raise\\"", "NAME \\"ValueError\\"", "OP \\",\\"", "STRING \\"Unknown format %r\\"", "OP \\"%\\"", "NAME \\"format\\"", "NEWLINE \\"\\\\n\\"", "NL \\"\\\\n\\"", "DEDENT \\"\\"", "NAME \\"project\\"", "OP \\"=\\"", "NAME \\"plugin\\"", "OP \\".\\"", "NAME \\"load\\"", "OP \\"(\\"", "NAME \\"fp\\"", "OP \\")\\"", "NEWLINE \\"\\\\n\\"", "NAME \\"if\\"", "NAME \\"path_was_string\\"", "OP \\":\\"", "NEWLINE \\"\\\\n\\"", "INDENT \\" \\"", "NAME \\"fp\\"", "OP \\".\\"", "NAME \\"close\\"", "OP \\"(\\"", "OP \\")\\"", "NEWLINE \\"\\\\n\\"", "DEDENT \\"\\"", "NAME \\"project\\"", "OP \\".\\"", "NAME \\"convert\\"", "OP \\"(\\"", "NAME \\"plugin\\"", "OP \\")\\"", "NEWLINE \\"\\\\n\\"", "NAME \\"if\\"", "NAME \\"isinstance\\"", "OP \\"(\\"", "NAME \\"path\\"", "OP \\",\\"", "NAME \\"basestring\\"", "OP \\")\\"", "OP \\":\\"", "NEWLINE \\"\\\\n\\"", "INDENT \\" \\"", "NAME \\"project\\"", "OP \\".\\"", "NAME \\"path\\"", "OP \\"=\\"", "NAME \\"path\\"", "NEWLINE \\"\\\\n\\"", "NAME \\"if\\"", "NAME \\"not\\"", "NAME \\"project\\"", "OP \\".\\"", "NAME \\"name\\"", "OP \\":\\"", "NEWLINE \\"\\\\n\\"", "INDENT \\" \\"", "NAME \\"project\\"", "OP \\".\\"", "NAME \\"name\\"", "OP \\"=\\"", "NAME \\"name\\"", "NEWLINE \\"\\\\n\\"", "DEDENT \\"\\"", "DEDENT \\"\\"", "NAME \\"return\\"", "NAME \\"project\\"", "NEWLINE \\"\\\\n\\"", "NL \\"\\\\n\\"", "DEDENT \\"\\"", "NAME \\"def\\"", "NAME \\"copy\\"", "OP \\"(\\"", "NAME \\"self\\"", "OP \\")\\"", "OP \\":\\"", "NEWLINE \\"\\\\n\\"", "INDENT \\" \\"", "STRING \\"Return a new Project instance, deep-copying all the attributes.\\"", "NEWLINE \\"\\\\n\\"", "NAME \\"p\\"", "OP \\"=\\"", "NAME \\"Project\\"", "OP \\"(\\"", "OP \\")\\"", "NEWLINE \\"\\\\n\\"", "NAME \\"p\\"", "OP \\".\\"", "NAME \\"name\\"", "OP \\"=\\"", "NAME \\"self\\"", "OP \\".\\"", "NAME \\"name\\"", "NEWLINE \\"\\\\n\\"", "NAME \\"p\\"", "OP \\".\\"", "NAME \\"path\\"", "OP \\"=\\"", "NAME \\"self\\"", "OP \\".\\"", "NAME \\"path\\"", "NEWLINE \\"\\\\n\\"", "NAME \\"p\\"", "OP \\".\\"", "NAME \\"_plugin\\"", "OP \\"=\\"", "NAME \\"self\\"", "OP \\".\\"", "NAME \\"_plugin\\"", "NEWLINE \\"\\\\n\\"", "NAME \\"p\\"", "OP \\".\\"", "NAME \\"stage\\"", "OP \\"=\\"", "NAME \\"self\\"", "OP \\".\\"", "NAME \\"stage\\"", "OP \\".\\"", "NAME \\"copy\\"", "OP \\"(\\"", "OP \\")\\"", "NEWLINE \\"\\\\n\\"", "NAME \\"p\\"", "OP \\".\\"", "NAME \\"stage\\"", "OP \\".\\"", "NAME \\"project\\"", "OP \\"=\\"", "NAME \\"p\\"", "NEWLINE \\"\\\\n\\"", "NL \\"\\\\n\\"", "NAME \\"for\\"", "NAME \\"sprite\\"", "NAME \\"in\\"", "NAME \\"self\\"", "OP \\".\\"", "NAME \\"sprites\\"", "OP \\":\\"", "NEWLINE \\"\\\\n\\"", "INDENT \\" \\"", "NAME \\"s\\"", "OP \\"=\\"", "NAME \\"sprite\\"", "OP \\".\\"", "NAME \\"copy\\"", "OP \\"(\\"", "OP \\")\\"", "NEWLINE \\"\\\\n\\"", "NAME \\"s\\"", "OP \\".\\"", "NAME \\"project\\"", "OP \\"=\\"", "NAME \\"p\\"", "NEWLINE \\"\\\\n\\"", "NAME \\"p\\"", "OP \\".\\"", "NAME \\"sprites\\"", "OP \\".\\"", "NAME \\"append\\"", "OP \\"(\\"", "NAME \\"s\\"", "OP \\")\\"", "NEWLINE \\"\\\\n\\"", "NL \\"\\\\n\\"", "DEDENT \\"\\"", "NAME \\"for\\"", "NAME \\"actor\\"", "NAME \\"in\\"", "NAME \\"self\\"", "OP \\".\\"", "NAME \\"actors\\"", "OP \\":\\"", "NEWLINE \\"\\\\n\\"", "INDENT \\" \\"", "NAME \\"if\\"", "NAME \\"isinstance\\"", "OP \\"(\\"", "NAME \\"actor\\"", "OP \\",\\"", "NAME \\"Sprite\\"", "OP \\")\\"", "OP \\":\\"", "NEWLINE \\"\\\\n\\"", "INDENT \\" \\"", "NAME \\"p\\"", "OP \\".\\"", "NAME \\"actors\\"", "OP \\".\\"", "NAME \\"append\\"", "OP \\"(\\"", "NAME \\"p\\"", "OP \\".\\"", "NAME \\"get_sprite\\"", "OP \\"(\\"", "NAME \\"actor\\"", "OP \\".\\"", "NAME \\"name\\"", "OP \\")\\"", "OP \\")\\"", "NEWLINE \\"\\\\n\\"", "DEDENT \\"\\"", "NAME \\"else\\"", "OP \\":\\"", "NEWLINE \\"\\\\n\\"", "INDENT \\" \\"", "NAME \\"a\\"", "OP \\"=\\"", "NAME \\"actor\\"", "OP \\".\\"", "NAME \\"copy\\"", "OP \\"(\\"", "OP \\")\\"", "NEWLINE \\"\\\\n\\"", "NAME \\"if\\"", "NAME \\"isinstance\\"", "OP \\"(\\"", "NAME \\"a\\"", "OP \\",\\"", "NAME \\"Watcher\\"", "OP \\")\\"", "OP \\":\\"", "NEWLINE \\"\\\\n\\"", "INDENT \\" \\"", "NAME \\"if\\"", "NAME \\"isinstance\\"", "OP \\"(\\"", "NAME \\"a\\"", "OP \\".\\"", "NAME \\"target\\"", "OP \\",\\"", "NAME \\"Project\\"", "OP \\")\\"", "OP \\":\\"", "NEWLINE \\"\\\\n\\"", "INDENT \\" \\"", "NAME \\"a\\"", "OP \\".\\"", "NAME \\"target\\"", "OP \\"=\\"", "NAME \\"p\\"", "NEWLINE \\"\\\\n\\"", "DEDENT \\"\\"", "NAME \\"elif\\"", "NAME \\"isinstance\\"", "OP \\"(\\"", "NAME \\"a\\"", "OP \\".\\"", "NAME \\"target\\"", "OP \\",\\"", "NAME \\"Stage\\"", "OP \\")\\"", "OP \\":\\"", "NEWLINE \\"\\\\n\\"", "INDENT \\" \\"", "NAME \\"a\\"", "OP \\".\\"", "NAME \\"target\\"", "OP \\"=\\"", "NAME \\"p\\"", "OP \\".\\"", "NAME \\"stage\\"", "NEWLINE \\"\\\\n\\"", "DEDENT \\"\\"", "NAME \\"else\\"", "OP \\":\\"", "NEWLINE \\"\\\\n\\"", "INDENT \\" \\"", "NAME \\"a\\"", "OP \\".\\"", "NAME \\"target\\"", "OP \\"=\\"", "NAME \\"p\\"", "OP \\".\\"", "NAME \\"get_sprite\\"", "OP \\"(\\"", "NAME \\"a\\"", "OP \\".\\"", "NAME \\"target\\"", "OP \\".\\"", "NAME \\"name\\"", "OP \\")\\"", "NEWLINE \\"\\\\n\\"", "DEDENT \\"\\"", "DEDENT \\"\\"", "NAME \\"p\\"", "OP \\".\\"", "NAME \\"actors\\"", "OP \\".\\"", "NAME \\"append\\"", "OP \\"(\\"", "NAME \\"a\\"", "OP \\")\\"", "NEWLINE \\"\\\\n\\"", "NL \\"\\\\n\\"", "DEDENT \\"\\"", "DEDENT \\"\\"", "NAME \\"p\\"", "OP \\".\\"", "NAME \\"variables\\"", "OP \\"=\\"", "NAME \\"dict\\"", "OP \\"(\\"", "OP \\"(\\"", "NAME \\"n\\"", "OP \\",\\"", "NAME \\"v\\"", "OP \\".\\"", "NAME \\"copy\\"", "OP \\"(\\"", "OP \\")\\"", "OP \\")\\"", "NAME \\"for\\"", "OP \\"(\\"", "NAME \\"n\\"", "OP \\",\\"", "NAME \\"v\\"", "OP \\")\\"", "NAME \\"in\\"", "NAME \\"self\\"", "OP \\".\\"", "NAME \\"variables\\"", "OP \\".\\"", "NAME \\"items\\"", "OP \\"(\\"", "OP \\")\\"", "OP \\")\\"", "NEWLINE \\"\\\\n\\"", "NAME \\"p\\"", "OP \\".\\"", "NAME \\"lists\\"", "OP \\"=\\"", "NAME \\"dict\\"", "OP \\"(\\"", "OP \\"(\\"", "NAME \\"n\\"", "OP \\",\\"", "NAME \\"l\\"", "OP \\".\\"", "NAME \\"copy\\"", "OP \\"(\\"", "OP \\")\\"", "OP \\")\\"", "NAME \\"for\\"", "OP \\"(\\"", "NAME \\"n\\"", "OP \\",\\"", "NAME \\"l\\"", "OP \\")\\"", "NAME \\"in\\"", "NAME \\"self\\"", "OP \\".\\"", "NAME \\"lists\\"", "OP \\".\\"", "NAME \\"items\\"", "OP \\"(\\"", "OP \\")\\"", "OP \\")\\"", "NEWLINE \\"\\\\n\\"", "NAME \\"p\\"", "OP \\".\\"", "NAME \\"thumbnail\\"", "OP \\"=\\"", "NAME \\"self\\"", "OP \\".\\"", "NAME \\"thumbnail\\"", "NEWLINE \\"\\\\n\\"", "NAME \\"p\\"", "OP \\".\\"", "NAME \\"tempo\\"", "OP \\"=\\"", "NAME \\"self\\"", "OP \\".\\"", "NAME \\"tempo\\"", "NEWLINE \\"\\\\n\\"", "NAME \\"p\\"", "OP \\".\\"", "NAME \\"notes\\"", "OP \\"=\\"", "NAME \\"self\\"", "OP \\".\\"", "NAME \\"notes\\"", "NEWLINE \\"\\\\n\\"", "NAME \\"p\\"", "OP \\".\\"", "NAME \\"author\\"", "OP \\"=\\"", "NAME \\"self\\"", "OP \\".\\"", "NAME \\"author\\"", "NEWLINE \\"\\\\n\\"", "NAME \\"return\\"", "NAME \\"p\\"", "NEWLINE \\"\\\\n\\"", "NL \\"\\\\n\\"", "DEDENT \\"\\"", "NAME \\"def\\"", "NAME \\"convert\\"", "OP \\"(\\"", "NAME \\"self\\"", "OP \\",\\"", "NAME \\"format\\"", "OP \\")\\"", "OP \\":\\"", "NEWLINE \\"\\\\n\\"", "INDENT \\" \\"", "STRING \\"Convert the project in-place to a different file format.\\\\n\\\\n Returns a list of :class:\`UnsupportedFeature\` objects, which may give\\\\n warnings about the conversion.\\\\n\\\\n :param format: :attr:\`KurtFileFormat.name\` eg. \`\`\\\\\\"scratch14\\\\\\"\`\`.\\\\n\\\\n :raises: :class:\`ValueError\` if the format doesn't exist.\\\\n\\\\n \\"", "NEWLINE \\"\\\\n\\"", "NAME \\"self\\"", "OP \\".\\"", "NAME \\"_plugin\\"", "OP \\"=\\"", "NAME \\"kurt\\"", "OP \\".\\"", "NAME \\"plugin\\"", "OP \\".\\"", "NAME \\"Kurt\\"", "OP \\".\\"", "NAME \\"get_plugin\\"", "OP \\"(\\"", "NAME \\"format\\"", "OP \\")\\"", "NEWLINE \\"\\\\n\\"", "NAME \\"return\\"", "NAME \\"list\\"", "OP \\"(\\"", "NAME \\"self\\"", "OP \\".\\"", "NAME \\"_normalize\\"", "OP \\"(\\"", "OP \\")\\"", "OP \\")\\"", "NEWLINE \\"\\\\n\\"", "NL \\"\\\\n\\"", "DEDENT \\"\\"", "NAME \\"def\\"", "NAME \\"save\\"", "OP \\"(\\"", "NAME \\"self\\"", "OP \\",\\"", "NAME \\"path\\"", "OP \\"=\\"", "NAME \\"None\\"", "OP \\",\\"", "NAME \\"debug\\"", "OP \\"=\\"", "NAME \\"False\\"", "OP \\")\\"", "OP \\":\\"", "NEWLINE \\"\\\\n\\"", "INDENT \\" \\"", "STRING \\"Save project to file.\\\\n\\\\n :param path: Path or file pointer.\\\\n\\\\n If you pass a file pointer, you're responsible for closing\\\\n it.\\\\n\\\\n If path is not given, the :attr:\`path\` attribute is used,\\\\n usually the original path given to :attr:\`load()\`.\\\\n\\\\n If \`path\` has the extension of an existing plugin, the\\\\n project will be converted using :attr:\`convert\`.\\\\n Otherwise, the extension will be replaced with the\\\\n extension of the current plugin.\\\\n\\\\n (Note that log output for the conversion will be printed\\\\n to stdout. If you want to deal with the output, call\\\\n :attr:\`convert\` directly.)\\\\n\\\\n If the path ends in a folder instead of a file, the\\\\n filename is based on the project's :attr:\`name\`.\\\\n\\\\n :param debug: If true, return debugging information from the format\\\\n plugin instead of the path.\\\\n\\\\n :raises: :py:class:\`ValueError\` if there's no path or name.\\\\n\\\\n :returns: path to the saved file.\\\\n\\\\n \\"", "NEWLINE \\"\\\\n\\"", "NL \\"\\\\n\\"", "NAME \\"p\\"", "OP \\"=\\"", "NAME \\"self\\"", "OP \\".\\"", "NAME \\"copy\\"", "OP \\"(\\"", "OP \\")\\"", "NEWLINE \\"\\\\n\\"", "NAME \\"plugin\\"", "OP \\"=\\"", "NAME \\"p\\"", "OP \\".\\"", "NAME \\"_plugin\\"", "NEWLINE \\"\\\\n\\"", "NL \\"\\\\n\\"", "COMMENT \\"# require path\\"", "NL \\"\\\\n\\"", "NAME \\"p\\"", "OP \\".\\"", "NAME \\"path\\"", "OP \\"=\\"", "NAME \\"path\\"", "NAME \\"or\\"", "NAME \\"self\\"", "OP \\".\\"", "NAME \\"path\\"", "NEWLINE \\"\\\\n\\"", "NAME \\"if\\"", "NAME \\"not\\"", "NAME \\"p\\"", "OP \\".\\"", "NAME \\"path\\"", "OP \\":\\"", "NEWLINE \\"\\\\n\\"", "INDENT \\" \\"", "NAME \\"raise\\"", "NAME \\"ValueError\\"", "OP \\",\\"", "STRING \\"path is required\\"", "NEWLINE \\"\\\\n\\"", "NL \\"\\\\n\\"", "DEDENT \\"\\"", "NAME \\"if\\"", "NAME \\"isinstance\\"", "OP \\"(\\"", "NAME \\"p\\"", "OP \\".\\"", "NAME \\"path\\"", "OP \\",\\"", "NAME \\"basestring\\"", "OP \\")\\"", "OP \\":\\"", "NEWLINE \\"\\\\n\\"", "COMMENT \\"# split path\\"", "NL \\"\\\\n\\"", "INDENT \\" \\"", "OP \\"(\\"", "NAME \\"folder\\"", "OP \\",\\"", "NAME \\"filename\\"", "OP \\")\\"", "OP \\"=\\"", "NAME \\"os\\"", "OP \\".\\"", "NAME \\"path\\"", "OP \\".\\"", "NAME \\"split\\"", "OP \\"(\\"", "NAME \\"p\\"", "OP \\".\\"", "NAME \\"path\\"", "OP \\")\\"", "NEWLINE \\"\\\\n\\"", "OP \\"(\\"", "NAME \\"name\\"", "OP \\",\\"", "NAME \\"extension\\"", "OP \\")\\"", "OP \\"=\\"", "NAME \\"os\\"", "OP \\".\\"", "NAME \\"path\\"", "OP \\".\\"", "NAME \\"splitext\\"", "OP \\"(\\"", "NAME \\"filename\\"", "OP \\")\\"", "NEWLINE \\"\\\\n\\"", "NL \\"\\\\n\\"", "COMMENT \\"# get plugin from extension\\"", "NL \\"\\\\n\\"", "NAME \\"if\\"", "NAME \\"path\\"", "OP \\":\\"", "COMMENT \\"# only if not using self.path\\"", "NEWLINE \\"\\\\n\\"", "INDENT \\" \\"", "NAME \\"try\\"", "OP \\":\\"", "NEWLINE \\"\\\\n\\"", "INDENT \\" \\"", "NAME \\"plugin\\"", "OP \\"=\\"", "NAME \\"kurt\\"", "OP \\".\\"", "NAME \\"plugin\\"", "OP \\".\\"", "NAME \\"Kurt\\"", "OP \\".\\"", "NAME \\"get_plugin\\"", "OP \\"(\\"", "NAME \\"extension\\"", "OP \\"=\\"", "NAME \\"extension\\"", "OP \\")\\"", "NEWLINE \\"\\\\n\\"", "DEDENT \\"\\"", "NAME \\"except\\"", "NAME \\"ValueError\\"", "OP \\":\\"", "NEWLINE \\"\\\\n\\"", "INDENT \\" \\"", "NAME \\"pass\\"", "NEWLINE \\"\\\\n\\"", "NL \\"\\\\n\\"", "COMMENT \\"# build output path\\"", "NL \\"\\\\n\\"", "DEDENT \\"\\"", "DEDENT \\"\\"", "NAME \\"if\\"", "NAME \\"not\\"", "NAME \\"name\\"", "OP \\":\\"", "NEWLINE \\"\\\\n\\"", "INDENT \\" \\"", "NAME \\"name\\"", "OP \\"=\\"", "NAME \\"_clean_filename\\"", "OP \\"(\\"", "NAME \\"self\\"", "OP \\".\\"", "NAME \\"name\\"", "OP \\")\\"", "NEWLINE \\"\\\\n\\"", "NAME \\"if\\"", "NAME \\"not\\"", "NAME \\"name\\"", "OP \\":\\"", "NEWLINE \\"\\\\n\\"", "INDENT \\" \\"", "NAME \\"raise\\"", "NAME \\"ValueError\\"", "OP \\",\\"", "STRING \\"name is required\\"", "NEWLINE \\"\\\\n\\"", "DEDENT \\"\\"", "DEDENT \\"\\"", "NAME \\"filename\\"", "OP \\"=\\"", "NAME \\"name\\"", "OP \\"+\\"", "NAME \\"plugin\\"", "OP \\".\\"", "NAME \\"extension\\"", "NEWLINE \\"\\\\n\\"", "NAME \\"p\\"", "OP \\".\\"", "NAME \\"path\\"", "OP \\"=\\"", "NAME \\"os\\"", "OP \\".\\"", "NAME \\"path\\"", "OP \\".\\"", "NAME \\"join\\"", "OP \\"(\\"", "NAME \\"folder\\"", "OP \\",\\"", "NAME \\"filename\\"", "OP \\")\\"", "NEWLINE \\"\\\\n\\"", "NL \\"\\\\n\\"", "COMMENT \\"# open\\"", "NL \\"\\\\n\\"", "NAME \\"fp\\"", "OP \\"=\\"", "NAME \\"open\\"", "OP \\"(\\"", "NAME \\"p\\"", "OP \\".\\"", "NAME \\"path\\"", "OP \\",\\"", "STRING \\"wb\\"", "OP \\")\\"", "NEWLINE \\"\\\\n\\"", "DEDENT \\"\\"", "NAME \\"else\\"", "OP \\":\\"", "NEWLINE \\"\\\\n\\"", "INDENT \\" \\"", "NAME \\"fp\\"", "OP \\"=\\"", "NAME \\"p\\"", "OP \\".\\"", "NAME \\"path\\"", "NEWLINE \\"\\\\n\\"", "NAME \\"path\\"", "OP \\"=\\"", "NAME \\"None\\"", "NEWLINE \\"\\\\n\\"", "NL \\"\\\\n\\"", "DEDENT \\"\\"", "NAME \\"if\\"", "NAME \\"not\\"", "NAME \\"plugin\\"", "OP \\":\\"", "NEWLINE \\"\\\\n\\"", "INDENT \\" \\"", "NAME \\"raise\\"", "NAME \\"ValueError\\"", "OP \\",\\"", "STRING \\"must convert project to a format before saving\\"", "NEWLINE \\"\\\\n\\"", "NL \\"\\\\n\\"", "DEDENT \\"\\"", "NAME \\"for\\"", "NAME \\"m\\"", "NAME \\"in\\"", "NAME \\"p\\"", "OP \\".\\"", "NAME \\"convert\\"", "OP \\"(\\"", "NAME \\"plugin\\"", "OP \\")\\"", "OP \\":\\"", "NEWLINE \\"\\\\n\\"", "INDENT \\" \\"", "NAME \\"print\\"", "NAME \\"m\\"", "NEWLINE \\"\\\\n\\"", "DEDENT \\"\\"", "NAME \\"result\\"", "OP \\"=\\"", "NAME \\"p\\"", "OP \\".\\"", "NAME \\"_save\\"", "OP \\"(\\"", "NAME \\"fp\\"", "OP \\")\\"", "NEWLINE \\"\\\\n\\"", "NAME \\"if\\"", "NAME \\"path\\"", "OP \\":\\"", "NEWLINE \\"\\\\n\\"", "INDENT \\" \\"", "NAME \\"fp\\"", "OP \\".\\"", "NAME \\"close\\"", "OP \\"(\\"", "OP \\")\\"", "NEWLINE \\"\\\\n\\"", "DEDENT \\"\\"", "NAME \\"return\\"", "NAME \\"result\\"", "NAME \\"if\\"", "NAME \\"debug\\"", "NAME \\"else\\"", "NAME \\"p\\"", "OP \\".\\"", "NAME \\"path\\"", "NEWLINE \\"\\\\n\\"", "NL \\"\\\\n\\"", "DEDENT \\"\\"", "NAME \\"def\\"", "NAME \\"_save\\"", "OP \\"(\\"", "NAME \\"self\\"", "OP \\",\\"", "NAME \\"fp\\"", "OP \\")\\"", "OP \\":\\"", "NEWLINE \\"\\\\n\\"", "INDENT \\" \\"", "NAME \\"return\\"", "NAME \\"self\\"", "OP \\".\\"", "NAME \\"_plugin\\"", "OP \\".\\"", "NAME \\"save\\"", "OP \\"(\\"", "NAME \\"fp\\"", "OP \\",\\"", "NAME \\"self\\"", "OP \\")\\"", "NEWLINE \\"\\\\n\\"", "NL \\"\\\\n\\"", "DEDENT \\"\\"", "NAME \\"def\\"", "NAME \\"_normalize\\"", "OP \\"(\\"", "NAME \\"self\\"", "OP \\")\\"", "OP \\":\\"", "NEWLINE \\"\\\\n\\"", "INDENT \\" \\"", "STRING \\"Convert the project to a standardised form for the current plugin.\\\\n\\\\n Called after loading, before saving, and when converting to a new\\\\n format.\\\\n\\\\n Yields UnsupportedFeature instances.\\\\n\\\\n \\"", "NEWLINE \\"\\\\n\\"", "NL \\"\\\\n\\"", "NAME \\"unique_sprite_names\\"", "OP \\"=\\"", "NAME \\"set\\"", "OP \\"(\\"", "NAME \\"sprite\\"", "OP \\".\\"", "NAME \\"name\\"", "NAME \\"for\\"", "NAME \\"sprite\\"", "NAME \\"in\\"", "NAME \\"self\\"", "OP \\".\\"", "NAME \\"sprites\\"", "OP \\")\\"", "NEWLINE \\"\\\\n\\"", "NAME \\"if\\"", "NAME \\"len\\"", "OP \\"(\\"", "NAME \\"unique_sprite_names\\"", "OP \\")\\"", "OP \\"<\\"", "NAME \\"len\\"", "OP \\"(\\"", "NAME \\"self\\"", "OP \\".\\"", "NAME \\"sprites\\"", "OP \\")\\"", "OP \\":\\"", "NEWLINE \\"\\\\n\\"", "INDENT \\" \\"", "NAME \\"raise\\"", "NAME \\"ValueError\\"", "OP \\",\\"", "STRING \\"Sprite names must be unique\\"", "NEWLINE \\"\\\\n\\"", "NL \\"\\\\n\\"", "COMMENT \\"# sync self.sprites and self.actors\\"", "NL \\"\\\\n\\"", "DEDENT \\"\\"", "NAME \\"for\\"", "NAME \\"sprite\\"", "NAME \\"in\\"", "NAME \\"self\\"", "OP \\".\\"", "NAME \\"sprites\\"", "OP \\":\\"", "NEWLINE \\"\\\\n\\"", "INDENT \\" \\"", "NAME \\"if\\"", "NAME \\"sprite\\"", "NAME \\"not\\"", "NAME \\"in\\"", "NAME \\"self\\"", "OP \\".\\"", "NAME \\"actors\\"", "OP \\":\\"", "NEWLINE \\"\\\\n\\"", "INDENT \\" \\"", "NAME \\"self\\"", "OP \\".\\"", "NAME \\"actors\\"", "OP \\".\\"", "NAME \\"append\\"", "OP \\"(\\"", "NAME \\"sprite\\"", "OP \\")\\"", "NEWLINE \\"\\\\n\\"", "DEDENT \\"\\"", "DEDENT \\"\\"", "NAME \\"for\\"", "NAME \\"actor\\"", "NAME \\"in\\"", "NAME \\"self\\"", "OP \\".\\"", "NAME \\"actors\\"", "OP \\":\\"", "NEWLINE \\"\\\\n\\"", "INDENT \\" \\"", "NAME \\"if\\"", "NAME \\"isinstance\\"", "OP \\"(\\"", "NAME \\"actor\\"", "OP \\",\\"", "NAME \\"Sprite\\"", "OP \\")\\"", "OP \\":\\"", "NEWLINE \\"\\\\n\\"", "INDENT \\" \\"", "NAME \\"if\\"", "NAME \\"actor\\"", "NAME \\"not\\"", "NAME \\"in\\"", "NAME \\"self\\"", "OP \\".\\"", "NAME \\"sprites\\"", "OP \\":\\"", "NEWLINE \\"\\\\n\\"", "INDENT \\" \\"", "NAME \\"raise\\"", "NAME \\"ValueError\\"", "OP \\",\\"", "STRING \\"Can't have sprite on stage that isn't in sprites\\"", "NEWLINE \\"\\\\n\\"", "NL \\"\\\\n\\"", "COMMENT \\"# normalize Scriptables\\"", "NL \\"\\\\n\\"", "DEDENT \\"\\"", "DEDENT \\"\\"", "DEDENT \\"\\"", "NAME \\"self\\"", "OP \\".\\"", "NAME \\"stage\\"", "OP \\".\\"", "NAME \\"_normalize\\"", "OP \\"(\\"", "OP \\")\\"", "NEWLINE \\"\\\\n\\"", "NAME \\"for\\"", "NAME \\"sprite\\"", "NAME \\"in\\"", "NAME \\"self\\"", "OP \\".\\"", "NAME \\"sprites\\"", "OP \\":\\"", "NEWLINE \\"\\\\n\\"", "INDENT \\" \\"", "NAME \\"sprite\\"", "OP \\".\\"", "NAME \\"_normalize\\"", "OP \\"(\\"", "OP \\")\\"", "NEWLINE \\"\\\\n\\"", "NL \\"\\\\n\\"", "COMMENT \\"# normalize actors\\"", "NL \\"\\\\n\\"", "DEDENT \\"\\"", "NAME \\"for\\"", "NAME \\"actor\\"", "NAME \\"in\\"", "NAME \\"self\\"", "OP \\".\\"", "NAME \\"actors\\"", "OP \\":\\"", "NEWLINE \\"\\\\n\\"", "INDENT \\" \\"", "NAME \\"if\\"", "NAME \\"not\\"", "NAME \\"isinstance\\"", "OP \\"(\\"", "NAME \\"actor\\"", "OP \\",\\"", "NAME \\"Scriptable\\"", "OP \\")\\"", "OP \\":\\"", "NEWLINE \\"\\\\n\\"", "INDENT \\" \\"", "NAME \\"actor\\"", "OP \\".\\"", "NAME \\"_normalize\\"", "OP \\"(\\"", "OP \\")\\"", "NEWLINE \\"\\\\n\\"", "NL \\"\\\\n\\"", "COMMENT \\"# make Watchers if needed\\"", "NL \\"\\\\n\\"", "DEDENT \\"\\"", "DEDENT \\"\\"", "NAME \\"for\\"", "NAME \\"thing\\"", "NAME \\"in\\"", "OP \\"[\\"", "NAME \\"self\\"", "OP \\",\\"", "NAME \\"self\\"", "OP \\".\\"", "NAME \\"stage\\"", "OP \\"]\\"", "OP \\"+\\"", "NAME \\"self\\"", "OP \\".\\"", "NAME \\"sprites\\"", "OP \\":\\"", "NEWLINE \\"\\\\n\\"", "INDENT \\" \\"", "NAME \\"for\\"", "OP \\"(\\"", "NAME \\"name\\"", "OP \\",\\"", "NAME \\"var\\"", "OP \\")\\"", "NAME \\"in\\"", "NAME \\"thing\\"", "OP \\".\\"", "NAME \\"variables\\"", "OP \\".\\"", "NAME \\"items\\"", "OP \\"(\\"", "OP \\")\\"", "OP \\":\\"", "NEWLINE \\"\\\\n\\"", "INDENT \\" \\"", "NAME \\"if\\"", "NAME \\"not\\"", "NAME \\"var\\"", "OP \\".\\"", "NAME \\"watcher\\"", "OP \\":\\"", "NEWLINE \\"\\\\n\\"", "INDENT \\" \\"", "NAME \\"var\\"", "OP \\".\\"", "NAME \\"watcher\\"", "OP \\"=\\"", "NAME \\"kurt\\"", "OP \\".\\"", "NAME \\"Watcher\\"", "OP \\"(\\"", "NAME \\"thing\\"", "OP \\",\\"", "NL \\"\\\\n\\"", "NAME \\"kurt\\"", "OP \\".\\"", "NAME \\"Block\\"", "OP \\"(\\"", "STRING \\"var\\"", "OP \\",\\"", "NAME \\"name\\"", "OP \\")\\"", "OP \\",\\"", "NAME \\"is_visible\\"", "OP \\"=\\"", "NAME \\"False\\"", "OP \\")\\"", "NEWLINE \\"\\\\n\\"", "NAME \\"self\\"", "OP \\".\\"", "NAME \\"actors\\"", "OP \\".\\"", "NAME \\"append\\"", "OP \\"(\\"", "NAME \\"var\\"", "OP \\".\\"", "NAME \\"watcher\\"", "OP \\")\\"", "NEWLINE \\"\\\\n\\"", "DEDENT \\"\\"", "DEDENT \\"\\"", "NAME \\"for\\"", "OP \\"(\\"", "NAME \\"name\\"", "OP \\",\\"", "NAME \\"list_\\"", "OP \\")\\"", "NAME \\"in\\"", "NAME \\"thing\\"", "OP \\".\\"", "NAME \\"lists\\"", "OP \\".\\"", "NAME \\"items\\"", "OP \\"(\\"", "OP \\")\\"", "OP \\":\\"", "NEWLINE \\"\\\\n\\"", "INDENT \\" \\"", "NAME \\"if\\"", "NAME \\"not\\"", "NAME \\"list_\\"", "OP \\".\\"", "NAME \\"watcher\\"", "OP \\":\\"", "NEWLINE \\"\\\\n\\"", "INDENT \\" \\"", "NAME \\"list_\\"", "OP \\".\\"", "NAME \\"watcher\\"", "OP \\"=\\"", "NAME \\"kurt\\"", "OP \\".\\"", "NAME \\"Watcher\\"", "OP \\"(\\"", "NAME \\"thing\\"", "OP \\",\\"", "NL \\"\\\\n\\"", "NAME \\"kurt\\"", "OP \\".\\"", "NAME \\"Block\\"", "OP \\"(\\"", "STRING \\"list\\"", "OP \\",\\"", "NAME \\"name\\"", "OP \\")\\"", "OP \\",\\"", "NAME \\"is_visible\\"", "OP \\"=\\"", "NAME \\"False\\"", "OP \\")\\"", "NEWLINE \\"\\\\n\\"", "NAME \\"self\\"", "OP \\".\\"", "NAME \\"actors\\"", "OP \\".\\"", "NAME \\"append\\"", "OP \\"(\\"", "NAME \\"list_\\"", "OP \\".\\"", "NAME \\"watcher\\"", "OP \\")\\"", "NEWLINE \\"\\\\n\\"", "NL \\"\\\\n\\"", "COMMENT \\"# notes - line endings\\"", "NL \\"\\\\n\\"", "DEDENT \\"\\"", "DEDENT \\"\\"", "DEDENT \\"\\"", "NAME \\"self\\"", "OP \\".\\"", "NAME \\"notes\\"", "OP \\"=\\"", "NAME \\"self\\"", "OP \\".\\"", "NAME \\"notes\\"", "OP \\".\\"", "NAME \\"replace\\"", "OP \\"(\\"", "STRING \\"\\\\\\\\r\\\\\\\\n\\"", "OP \\",\\"", "STRING \\"\\\\\\\\n\\"", "OP \\")\\"", "OP \\".\\"", "NAME \\"replace\\"", "OP \\"(\\"", "STRING \\"\\\\\\\\r\\"", "OP \\",\\"", "STRING \\"\\\\\\\\n\\"", "OP \\")\\"", "NEWLINE \\"\\\\n\\"", "NL \\"\\\\n\\"", "COMMENT \\"# convert scripts\\"", "NL \\"\\\\n\\"", "NAME \\"def\\"", "NAME \\"convert_block\\"", "OP \\"(\\"", "NAME \\"block\\"", "OP \\")\\"", "OP \\":\\"", "NEWLINE \\"\\\\n\\"", "COMMENT \\"# convert block\\"", "NL \\"\\\\n\\"", "INDENT \\" \\"", "NAME \\"try\\"", "OP \\":\\"", "NEWLINE \\"\\\\n\\"", "INDENT \\" \\"", "NAME \\"if\\"", "NAME \\"isinstance\\"", "OP \\"(\\"", "NAME \\"block\\"", "OP \\".\\"", "NAME \\"type\\"", "OP \\",\\"", "NAME \\"CustomBlockType\\"", "OP \\")\\"", "OP \\":\\"", "NEWLINE \\"\\\\n\\"", "INDENT \\" \\"", "NAME \\"if\\"", "STRING \\"Custom Blocks\\"", "NAME \\"not\\"", "NAME \\"in\\"", "NAME \\"self\\"", "OP \\".\\"", "NAME \\"_plugin\\"", "OP \\".\\"", "NAME \\"features\\"", "OP \\":\\"", "NEWLINE \\"\\\\n\\"", "INDENT \\" \\"", "NAME \\"raise\\"", "NAME \\"BlockNotSupported\\"", "OP \\"(\\"", "NL \\"\\\\n\\"", "STRING \\"%s doesn't support custom blocks\\"", "NL \\"\\\\n\\"", "OP \\"%\\"", "NAME \\"self\\"", "OP \\".\\"", "NAME \\"_plugin\\"", "OP \\".\\"", "NAME \\"display_name\\"", "OP \\")\\"", "NEWLINE \\"\\\\n\\"", "NL \\"\\\\n\\"", "DEDENT \\"\\"", "DEDENT \\"\\"", "NAME \\"else\\"", "OP \\":\\"", "COMMENT \\"# BlockType\\"", "NEWLINE \\"\\\\n\\"", "INDENT \\" \\"", "NAME \\"pbt\\"", "OP \\"=\\"", "NAME \\"block\\"", "OP \\".\\"", "NAME \\"type\\"", "OP \\".\\"", "NAME \\"convert\\"", "OP \\"(\\"", "NAME \\"self\\"", "OP \\".\\"", "NAME \\"_plugin\\"", "OP \\")\\"", "NEWLINE \\"\\\\n\\"", "DEDENT \\"\\"", "DEDENT \\"\\"", "NAME \\"except\\"", "NAME \\"BlockNotSupported\\"", "OP \\",\\"", "NAME \\"err\\"", "OP \\":\\"", "NEWLINE \\"\\\\n\\"", "INDENT \\" \\"", "NAME \\"err\\"", "OP \\".\\"", "NAME \\"message\\"", "OP \\"+=\\"", "STRING \\". Caused by: %r\\"", "OP \\"%\\"", "NAME \\"block\\"", "NEWLINE \\"\\\\n\\"", "NAME \\"err\\"", "OP \\".\\"", "NAME \\"block\\"", "OP \\"=\\"", "NAME \\"block\\"", "NEWLINE \\"\\\\n\\"", "NAME \\"err\\"", "OP \\".\\"", "NAME \\"scriptable\\"", "OP \\"=\\"", "NAME \\"scriptable\\"", "NEWLINE \\"\\\\n\\"", "NAME \\"err\\"", "OP \\".\\"", "NAME \\"args\\"", "OP \\"=\\"", "OP \\"(\\"", "NAME \\"err\\"", "OP \\".\\"", "NAME \\"message\\"", "OP \\",\\"", "OP \\")\\"", "NEWLINE \\"\\\\n\\"", "NAME \\"if\\"", "NAME \\"getattr\\"", "OP \\"(\\"", "NAME \\"block\\"", "OP \\".\\"", "NAME \\"type\\"", "OP \\",\\"", "STRING \\"_workaround\\"", "OP \\",\\"", "NAME \\"None\\"", "OP \\")\\"", "OP \\":\\"", "NEWLINE \\"\\\\n\\"", "INDENT \\" \\"", "NAME \\"block\\"", "OP \\"=\\"", "NAME \\"block\\"", "OP \\".\\"", "NAME \\"type\\"", "OP \\".\\"", "NAME \\"_workaround\\"", "OP \\"(\\"", "NAME \\"block\\"", "OP \\")\\"", "NEWLINE \\"\\\\n\\"", "NAME \\"if\\"", "NAME \\"not\\"", "NAME \\"block\\"", "OP \\":\\"", "NEWLINE \\"\\\\n\\"", "INDENT \\" \\"", "NAME \\"raise\\"", "NEWLINE \\"\\\\n\\"", "DEDENT \\"\\"", "DEDENT \\"\\"", "NAME \\"else\\"", "OP \\":\\"", "NEWLINE \\"\\\\n\\"", "INDENT \\" \\"", "NAME \\"raise\\"", "NEWLINE \\"\\\\n\\"", "NL \\"\\\\n\\"", "COMMENT \\"# convert args\\"", "NL \\"\\\\n\\"", "DEDENT \\"\\"", "DEDENT \\"\\"", "NAME \\"args\\"", "OP \\"=\\"", "OP \\"[\\"", "OP \\"]\\"", "NEWLINE \\"\\\\n\\"", "NAME \\"for\\"", "NAME \\"arg\\"", "NAME \\"in\\"", "NAME \\"block\\"", "OP \\".\\"", "NAME \\"args\\"", "OP \\":\\"", "NEWLINE \\"\\\\n\\"", "INDENT \\" \\"", "NAME \\"if\\"", "NAME \\"isinstance\\"", "OP \\"(\\"", "NAME \\"arg\\"", "OP \\",\\"", "NAME \\"Block\\"", "OP \\")\\"", "OP \\":\\"", "NEWLINE \\"\\\\n\\"", "INDENT \\" \\"", "NAME \\"arg\\"", "OP \\"=\\"", "NAME \\"convert_block\\"", "OP \\"(\\"", "NAME \\"arg\\"", "OP \\")\\"", "NEWLINE \\"\\\\n\\"", "DEDENT \\"\\"", "NAME \\"elif\\"", "NAME \\"isinstance\\"", "OP \\"(\\"", "NAME \\"arg\\"", "OP \\",\\"", "NAME \\"list\\"", "OP \\")\\"", "OP \\":\\"", "NEWLINE \\"\\\\n\\"", "INDENT \\" \\"", "NAME \\"arg\\"", "OP \\"=\\"", "NAME \\"map\\"", "OP \\"(\\"", "NAME \\"convert_block\\"", "OP \\",\\"", "NAME \\"arg\\"", "OP \\")\\"", "NEWLINE \\"\\\\n\\"", "DEDENT \\"\\"", "NAME \\"args\\"", "OP \\".\\"", "NAME \\"append\\"", "OP \\"(\\"", "NAME \\"arg\\"", "OP \\")\\"", "NEWLINE \\"\\\\n\\"", "DEDENT \\"\\"", "NAME \\"block\\"", "OP \\".\\"", "NAME \\"args\\"", "OP \\"=\\"", "NAME \\"args\\"", "NEWLINE \\"\\\\n\\"", "NL \\"\\\\n\\"", "NAME \\"return\\"", "NAME \\"block\\"", "NEWLINE \\"\\\\n\\"", "NL \\"\\\\n\\"", "DEDENT \\"\\"", "NAME \\"for\\"", "NAME \\"scriptable\\"", "NAME \\"in\\"", "OP \\"[\\"", "NAME \\"self\\"", "OP \\".\\"", "NAME \\"stage\\"", "OP \\"]\\"", "OP \\"+\\"", "NAME \\"self\\"", "OP \\".\\"", "NAME \\"sprites\\"", "OP \\":\\"", "NEWLINE \\"\\\\n\\"", "INDENT \\" \\"", "NAME \\"for\\"", "NAME \\"script\\"", "NAME \\"in\\"", "NAME \\"scriptable\\"", "OP \\".\\"", "NAME \\"scripts\\"", "OP \\":\\"", "NEWLINE \\"\\\\n\\"", "INDENT \\" \\"", "NAME \\"if\\"", "NAME \\"isinstance\\"", "OP \\"(\\"", "NAME \\"script\\"", "OP \\",\\"", "NAME \\"Script\\"", "OP \\")\\"", "OP \\":\\"", "NEWLINE \\"\\\\n\\"", "INDENT \\" \\"", "NAME \\"script\\"", "OP \\".\\"", "NAME \\"blocks\\"", "OP \\"=\\"", "NAME \\"map\\"", "OP \\"(\\"", "NAME \\"convert_block\\"", "OP \\",\\"", "NAME \\"script\\"", "OP \\".\\"", "NAME \\"blocks\\"", "OP \\")\\"", "NEWLINE \\"\\\\n\\"", "NL \\"\\\\n\\"", "COMMENT \\"# workaround unsupported features\\"", "NL \\"\\\\n\\"", "DEDENT \\"\\"", "DEDENT \\"\\"", "DEDENT \\"\\"", "NAME \\"for\\"", "NAME \\"feature\\"", "NAME \\"in\\"", "NAME \\"kurt\\"", "OP \\".\\"", "NAME \\"plugin\\"", "OP \\".\\"", "NAME \\"Feature\\"", "OP \\".\\"", "NAME \\"FEATURES\\"", "OP \\".\\"", "NAME \\"values\\"", "OP \\"(\\"", "OP \\")\\"", "OP \\":\\"", "NEWLINE \\"\\\\n\\"", "INDENT \\" \\"", "NAME \\"if\\"", "NAME \\"feature\\"", "NAME \\"not\\"", "NAME \\"in\\"", "NAME \\"self\\"", "OP \\".\\"", "NAME \\"_plugin\\"", "OP \\".\\"", "NAME \\"features\\"", "OP \\":\\"", "NEWLINE \\"\\\\n\\"", "INDENT \\" \\"", "NAME \\"for\\"", "NAME \\"x\\"", "NAME \\"in\\"", "NAME \\"feature\\"", "OP \\".\\"", "NAME \\"workaround\\"", "OP \\"(\\"", "NAME \\"self\\"", "OP \\")\\"", "OP \\":\\"", "NEWLINE \\"\\\\n\\"", "INDENT \\" \\"", "NAME \\"yield\\"", "NAME \\"UnsupportedFeature\\"", "OP \\"(\\"", "NAME \\"feature\\"", "OP \\",\\"", "NAME \\"x\\"", "OP \\")\\"", "NEWLINE \\"\\\\n\\"", "NL \\"\\\\n\\"", "COMMENT \\"# normalize supported features\\"", "NL \\"\\\\n\\"", "DEDENT \\"\\"", "DEDENT \\"\\"", "DEDENT \\"\\"", "NAME \\"for\\"", "NAME \\"feature\\"", "NAME \\"in\\"", "NAME \\"self\\"", "OP \\".\\"", "NAME \\"_plugin\\"", "OP \\".\\"", "NAME \\"features\\"", "OP \\":\\"", "NEWLINE \\"\\\\n\\"", "INDENT \\" \\"", "NAME \\"feature\\"", "OP \\".\\"", "NAME \\"normalize\\"", "OP \\"(\\"", "NAME \\"self\\"", "OP \\")\\"", "NEWLINE \\"\\\\n\\"", "NL \\"\\\\n\\"", "DEDENT \\"\\"", "DEDENT \\"\\"", "NAME \\"def\\"", "NAME \\"get_broadcasts\\"", "OP \\"(\\"", "NAME \\"self\\"", "OP \\")\\"", "OP \\":\\"", "NEWLINE \\"\\\\n\\"", "INDENT \\" \\"", "NAME \\"def\\"", "NAME \\"get_broadcasts\\"", "OP \\"(\\"", "NAME \\"block\\"", "OP \\")\\"", "OP \\":\\"", "NEWLINE \\"\\\\n\\"", "INDENT \\" \\"", "NAME \\"for\\"", "OP \\"(\\"", "NAME \\"arg\\"", "OP \\",\\"", "NAME \\"insert\\"", "OP \\")\\"", "NAME \\"in\\"", "NAME \\"zip\\"", "OP \\"(\\"", "NAME \\"block\\"", "OP \\".\\"", "NAME \\"args\\"", "OP \\",\\"", "NAME \\"block\\"", "OP \\".\\"", "NAME \\"type\\"", "OP \\".\\"", "NAME \\"inserts\\"", "OP \\")\\"", "OP \\":\\"", "NEWLINE \\"\\\\n\\"", "INDENT \\" \\"", "NAME \\"if\\"", "NAME \\"isinstance\\"", "OP \\"(\\"", "NAME \\"arg\\"", "OP \\",\\"", "NAME \\"Block\\"", "OP \\")\\"", "OP \\":\\"", "NEWLINE \\"\\\\n\\"", "INDENT \\" \\"", "NAME \\"for\\"", "NAME \\"b\\"", "NAME \\"in\\"", "NAME \\"get_broadcasts\\"", "OP \\"(\\"", "NAME \\"arg\\"", "OP \\")\\"", "OP \\":\\"", "NEWLINE \\"\\\\n\\"", "INDENT \\" \\"", "NAME \\"yield\\"", "NAME \\"b\\"", "NEWLINE \\"\\\\n\\"", "DEDENT \\"\\"", "DEDENT \\"\\"", "NAME \\"elif\\"", "NAME \\"isinstance\\"", "OP \\"(\\"", "NAME \\"arg\\"", "OP \\",\\"", "NAME \\"list\\"", "OP \\")\\"", "OP \\":\\"", "NEWLINE \\"\\\\n\\"", "INDENT \\" \\"", "NAME \\"for\\"", "NAME \\"arg_block\\"", "NAME \\"in\\"", "NAME \\"arg\\"", "OP \\":\\"", "NEWLINE \\"\\\\n\\"", "INDENT \\" \\"", "NAME \\"for\\"", "NAME \\"b\\"", "NAME \\"in\\"", "NAME \\"get_broadcasts\\"", "OP \\"(\\"", "NAME \\"arg_block\\"", "OP \\")\\"", "OP \\":\\"", "NEWLINE \\"\\\\n\\"", "INDENT \\" \\"", "NAME \\"yield\\"", "NAME \\"b\\"", "NEWLINE \\"\\\\n\\"", "DEDENT \\"\\"", "DEDENT \\"\\"", "DEDENT \\"\\"", "NAME \\"elif\\"", "NAME \\"insert\\"", "OP \\".\\"", "NAME \\"kind\\"", "OP \\"==\\"", "STRING \\"broadcast\\"", "OP \\":\\"", "NEWLINE \\"\\\\n\\"", "INDENT \\" \\"", "NAME \\"yield\\"", "NAME \\"arg\\"", "NEWLINE \\"\\\\n\\"", "NL \\"\\\\n\\"", "DEDENT \\"\\"", "DEDENT \\"\\"", "DEDENT \\"\\"", "NAME \\"for\\"", "NAME \\"scriptable\\"", "NAME \\"in\\"", "OP \\"[\\"", "NAME \\"self\\"", "OP \\".\\"", "NAME \\"stage\\"", "OP \\"]\\"", "OP \\"+\\"", "NAME \\"self\\"", "OP \\".\\"", "NAME \\"sprites\\"", "OP \\":\\"", "NEWLINE \\"\\\\n\\"", "INDENT \\" \\"", "NAME \\"for\\"", "NAME \\"script\\"", "NAME \\"in\\"", "NAME \\"scriptable\\"", "OP \\".\\"", "NAME \\"scripts\\"", "OP \\":\\"", "NEWLINE \\"\\\\n\\"", "INDENT \\" \\"", "NAME \\"for\\"", "NAME \\"block\\"", "NAME \\"in\\"", "NAME \\"script\\"", "OP \\".\\"", "NAME \\"blocks\\"", "OP \\":\\"", "NEWLINE \\"\\\\n\\"", "INDENT \\" \\"", "NAME \\"for\\"", "NAME \\"b\\"", "NAME \\"in\\"", "NAME \\"get_broadcasts\\"", "OP \\"(\\"", "NAME \\"block\\"", "OP \\")\\"", "OP \\":\\"", "NEWLINE \\"\\\\n\\"", "INDENT \\" \\"", "NAME \\"yield\\"", "NAME \\"b\\"", "NEWLINE \\"\\\\n\\"", "NL \\"\\\\n\\"", "NL \\"\\\\n\\"", "DEDENT \\"\\"", "DEDENT \\"\\"", "DEDENT \\"\\"", "DEDENT \\"\\"", "DEDENT \\"\\"", "DEDENT \\"\\"", "NAME \\"class\\"", "NAME \\"UnsupportedFeature\\"", "OP \\"(\\"", "NAME \\"object\\"", "OP \\")\\"", "OP \\":\\"", "NEWLINE \\"\\\\n\\"", "INDENT \\" \\"", "STRING \\"The plugin doesn't support this Feature.\\\\n\\\\n Output once by Project.convert for each occurence of the feature.\\\\n\\\\n \\"", "NEWLINE \\"\\\\n\\"", "NAME \\"def\\"", "NAME \\"__init__\\"", "OP \\"(\\"", "NAME \\"self\\"", "OP \\",\\"", "NAME \\"feature\\"", "OP \\",\\"", "NAME \\"obj\\"", "OP \\")\\"", "OP \\":\\"", "NEWLINE \\"\\\\n\\"", "INDENT \\" \\"", "NAME \\"self\\"", "OP \\".\\"", "NAME \\"feature\\"", "OP \\"=\\"", "NAME \\"kurt\\"", "OP \\".\\"", "NAME \\"plugin\\"", "OP \\".\\"", "NAME \\"Feature\\"", "OP \\".\\"", "NAME \\"get\\"", "OP \\"(\\"", "NAME \\"feature\\"", "OP \\")\\"", "NEWLINE \\"\\\\n\\"", "NAME \\"self\\"", "OP \\".\\"", "NAME \\"obj\\"", "OP \\"=\\"", "NAME \\"obj\\"", "NEWLINE \\"\\\\n\\"", "NL \\"\\\\n\\"", "DEDENT \\"\\"", "NAME \\"def\\"", "NAME \\"__repr__\\"", "OP \\"(\\"", "NAME \\"self\\"", "OP \\")\\"", "OP \\":\\"", "NEWLINE \\"\\\\n\\"", "INDENT \\" \\"", "NAME \\"return\\"", "STRING \\"<%s.%s(%s)>\\"", "OP \\"%\\"", "OP \\"(\\"", "NAME \\"self\\"", "OP \\".\\"", "NAME \\"__class__\\"", "OP \\".\\"", "NAME \\"__module__\\"", "OP \\",\\"", "NL \\"\\\\n\\"", "NAME \\"self\\"", "OP \\".\\"", "NAME \\"__class__\\"", "OP \\".\\"", "NAME \\"__name__\\"", "OP \\",\\"", "NAME \\"unicode\\"", "OP \\"(\\"", "NAME \\"self\\"", "OP \\")\\"", "OP \\")\\"", "NEWLINE \\"\\\\n\\"", "NL \\"\\\\n\\"", "DEDENT \\"\\"", "NAME \\"def\\"", "NAME \\"__str__\\"", "OP \\"(\\"", "NAME \\"self\\"", "OP \\")\\"", "OP \\":\\"", "NEWLINE \\"\\\\n\\"", "INDENT \\" \\"", "NAME \\"return\\"", "STRING \\"UnsupportedFeature: %s\\"", "OP \\"%\\"", "NAME \\"unicode\\"", "OP \\"(\\"", "NAME \\"self\\"", "OP \\")\\"", "NEWLINE \\"\\\\n\\"", "NL \\"\\\\n\\"", "DEDENT \\"\\"", "NAME \\"def\\"", "NAME \\"__unicode__\\"", "OP \\"(\\"", "NAME \\"self\\"", "OP \\")\\"", "OP \\":\\"", "NEWLINE \\"\\\\n\\"", "INDENT \\" \\"", "NAME \\"return\\"", "NAME \\"u\\"", "STRING \\"%r: %r\\"", "OP \\"%\\"", "OP \\"(\\"", "NAME \\"self\\"", "OP \\".\\"", "NAME \\"feature\\"", "OP \\".\\"", "NAME \\"name\\"", "OP \\",\\"", "NAME \\"self\\"", "OP \\".\\"", "NAME \\"obj\\"", "OP \\")\\"", "NEWLINE \\"\\\\n\\"", "NL \\"\\\\n\\"", "NL \\"\\\\n\\"", "NL \\"\\\\n\\"", "COMMENT \\"#-- Errors --#\\"", "NL \\"\\\\n\\"", "NL \\"\\\\n\\"", "DEDENT \\"\\"", "DEDENT \\"\\"", "NAME \\"class\\"", "NAME \\"UnknownFormat\\"", "OP \\"(\\"", "NAME \\"Exception\\"", "OP \\")\\"", "OP \\":\\"", "NEWLINE \\"\\\\n\\"", "INDENT \\" \\"", "STRING \\"The file extension is not recognised.\\\\n\\\\n Raised when :class:\`Project\` can't find a valid format plugin to handle the\\\\n file extension.\\\\n\\\\n \\"", "NEWLINE \\"\\\\n\\"", "NAME \\"pass\\"", "NEWLINE \\"\\\\n\\"", "NL \\"\\\\n\\"", "NL \\"\\\\n\\"", "DEDENT \\"\\"", "NAME \\"class\\"", "NAME \\"UnknownBlock\\"", "OP \\"(\\"", "NAME \\"Exception\\"", "OP \\")\\"", "OP \\":\\"", "NEWLINE \\"\\\\n\\"", "INDENT \\" \\"", "STRING \\"A :class:\`Block\` with the given command or type cannot be found.\\\\n\\\\n Raised by :attr:\`BlockType.get\`.\\\\n\\\\n \\"", "NEWLINE \\"\\\\n\\"", "NL \\"\\\\n\\"", "NL \\"\\\\n\\"", "DEDENT \\"\\"", "NAME \\"class\\"", "NAME \\"BlockNotSupported\\"", "OP \\"(\\"", "NAME \\"Exception\\"", "OP \\")\\"", "OP \\":\\"", "NEWLINE \\"\\\\n\\"", "INDENT \\" \\"", "STRING \\"The plugin doesn't support this Block.\\\\n\\\\n Raised by :attr:\`Block.convert\` when it can't find a\\\\n :class:\`PluginBlockType\` for the given plugin.\\\\n\\\\n \\"", "NEWLINE \\"\\\\n\\"", "NAME \\"pass\\"", "NEWLINE \\"\\\\n\\"", "NL \\"\\\\n\\"", "NL \\"\\\\n\\"", "DEDENT \\"\\"", "NAME \\"class\\"", "NAME \\"VectorImageError\\"", "OP \\"(\\"", "NAME \\"Exception\\"", "OP \\")\\"", "OP \\":\\"", "NEWLINE \\"\\\\n\\"", "INDENT \\" \\"", "STRING \\"Tried to construct a raster image from a vector format image file.\\\\n\\\\n You shouldn't usally get this error, because Feature(\\\\\\"Vector Images\\\\\\") will\\\\n give a warning instead when the Project is converted.\\\\n\\\\n \\"", "NEWLINE \\"\\\\n\\"", "NAME \\"pass\\"", "NEWLINE \\"\\\\n\\"", "NL \\"\\\\n\\"", "NL \\"\\\\n\\"", "NL \\"\\\\n\\"", "COMMENT \\"#-- Actors & Scriptables --#\\"", "NL \\"\\\\n\\"", "NL \\"\\\\n\\"", "DEDENT \\"\\"", "NAME \\"class\\"", "NAME \\"Actor\\"", "OP \\"(\\"", "NAME \\"object\\"", "OP \\")\\"", "OP \\":\\"", "NEWLINE \\"\\\\n\\"", "INDENT \\" \\"", "STRING \\"An object that goes on the project stage.\\\\n\\\\n Subclasses include :class:\`Watcher\` or :class:\`Sprite\`.\\\\n\\\\n \\"", "NEWLINE \\"\\\\n\\"", "NL \\"\\\\n\\"", "NL \\"\\\\n\\"", "DEDENT \\"\\"", "NAME \\"class\\"", "NAME \\"Scriptable\\"", "OP \\"(\\"", "NAME \\"object\\"", "OP \\")\\"", "OP \\":\\"", "NEWLINE \\"\\\\n\\"", "INDENT \\" \\"", "STRING \\"Superclass for all scriptable objects.\\\\n\\\\n Subclasses are :class:\`Stage\` and :class:\`Sprite\`.\\\\n\\\\n \\"", "NEWLINE \\"\\\\n\\"", "NL \\"\\\\n\\"", "NAME \\"def\\"", "NAME \\"__init__\\"", "OP \\"(\\"", "NAME \\"self\\"", "OP \\",\\"", "NAME \\"project\\"", "OP \\")\\"", "OP \\":\\"", "NEWLINE \\"\\\\n\\"", "INDENT \\" \\"", "NAME \\"self\\"", "OP \\".\\"", "NAME \\"project\\"", "OP \\"=\\"", "NAME \\"project\\"", "NEWLINE \\"\\\\n\\"", "STRING \\"The :class:\`Project\` this belongs to.\\"", "NEWLINE \\"\\\\n\\"", "NL \\"\\\\n\\"", "NAME \\"self\\"", "OP \\".\\"", "NAME \\"scripts\\"", "OP \\"=\\"", "OP \\"[\\"", "OP \\"]\\"", "NEWLINE \\"\\\\n\\"", "STRING \\"The contents of the scripting area.\\\\n\\\\n List containing :class:\`Scripts