From b1ddc451e30be835aec94fb26ecf323da51bec51 Mon Sep 17 00:00:00 2001 From: Zoltan Olah Date: Sat, 29 Jul 2017 16:57:22 -0600 Subject: [PATCH] Adds Node.js support with tests --- README.md | 22 +- compareImages.js | 13 + compareImages.test.js | 33 + demoassets/PeopleComparedToPeople2.png | Bin 0 -> 91876 bytes package-lock.json | 2956 ++++++++++++++++++++++++ package.json | 12 +- resemble.js | 33 +- resemble.test.js | 89 + 8 files changed, 3151 insertions(+), 7 deletions(-) create mode 100644 compareImages.js create mode 100644 compareImages.test.js create mode 100644 demoassets/PeopleComparedToPeople2.png create mode 100644 package-lock.json create mode 100644 resemble.test.js diff --git a/README.md b/README.md index f26025b..5479726 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ Resemble.js ========== -Analyse and compare images with Javascript and HTML5. [More info & Resemble.js Demo](http://huddle.github.com/Resemble.js/). If you need NodeJS support, take a look at [node-resemble](https://github.com/ddo/node-resemble) or [node-resemble-v2](https://github.com/peter-mouland/node-resemble-v2). +Analyse and compare images with Javascript and HTML5. [More info & Resemble.js Demo](http://huddle.github.com/Resemble.js/). Now compatible with Node.js. ![Two image diff examples side-by-side, one pink, one yellow.](https://raw.github.com/Huddle/Resemble.js/master/demoassets/readmeimage.jpg "Visual image comparison") @@ -83,6 +83,26 @@ You can modify this behaviour by setting the `largeImageThreshold` option to a d `useCrossOrigin` is true by default, you might need to set it to false if you're using [Data URIs](https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URIs). +### Node.js + +Ensure you also have the `canvas` peer dependency installed alongside resemblejs. See [here](https://www.npmjs.com/package/canvas) for instructions on how to install `canvas` on your platform. + +The API under Node is the same as the browser API with an additional Promise based convenience method called `compareImages` that also allows you to read/write from Node Buffers. + +#### Node Example + +``` js +const compareImage = require('resemblejs/compareImage'); + +// The parameters can be Node Buffers +// data is the same as usual with an additional getBuffer() function +const data = await compareImages( + fs.readFileSync('./demoassets/People.jpg'), + fs.readFileSync('./demoassets/People2.jpg') +); + +fs.writeFileSync('./output.png', data.getBuffer()); +``` -------------------------------------- diff --git a/compareImages.js b/compareImages.js new file mode 100644 index 0000000..42e5772 --- /dev/null +++ b/compareImages.js @@ -0,0 +1,13 @@ +const resemble = require('./resemble'); + +module.exports = async function(image1, image2) { + return new Promise(function(resolve, reject) { + resemble(image1).compareTo(image2).onComplete(function(data) { + if (data.error) { + reject(data.error); + } else { + resolve(data); + } + }); + }); +}; diff --git a/compareImages.test.js b/compareImages.test.js new file mode 100644 index 0000000..bf3790b --- /dev/null +++ b/compareImages.test.js @@ -0,0 +1,33 @@ +const compareImages = require('./compareImages'); +const fs = require('fs'); + +describe('compareImages', () => { + test('works with buffers', async () => { + const data = await compareImages( + fs.readFileSync('./demoassets/People.jpg'), + fs.readFileSync('./demoassets/People2.jpg') + ); + + expect(data.isSameDimensions).toBe(true); + expect(data.misMatchPercentage).toEqual('8.66'); + + const buffer = data.getBuffer(); + + expect(buffer).toBeInstanceOf(Buffer); + expect(buffer.length).toBe(91876); + + const comparison = fs.readFileSync( + './demoassets/PeopleComparedToPeople2.png' + ); + + expect(buffer.equals(comparison)).toBe(true); + }); + + test('throws when failed', async () => { + const promise = compareImages( + fs.readFileSync('./demoassets/People.jpg'), + 'bogus data' + ); + await expect(promise).rejects.toMatch('Image load error.'); + }); +}); diff --git a/demoassets/PeopleComparedToPeople2.png b/demoassets/PeopleComparedToPeople2.png new file mode 100644 index 0000000000000000000000000000000000000000..6664c3717332dbc2bfe2b7e60d4fe57cb3991520 GIT binary patch literal 91876 zcmeFZg;!MH8#g+13)0dJ(p@6mlG5EJ-QA^hNH+*5NOwqgNC|^9(jbj=yqoWDz4!hP zcU@!2lHtrbJD%rLdp@Zs$zY%op+X=K3^`fJ_Yero#q(ceMDRbObE{F{A4Jo4GLn#| z=im81N|PZF3W%Jfn7UW?-yfdo23p?7Ps{#!oKk8umHQk?43iT0ZMXq4AC( zUio{+n%nA2#?%-|MSSjgjMA!aUc+453MXp6OqeJEGI(V^JQl3M^J_w|MgRX7{eNi)emzfr{%4bz@w@gNZxvjGB${9j z#MP^A!cZEy1R9je1MwMd*`&TaHCzP9+MTe_L@4vy8P> z3;y*xVH&wiwXZ(8g9uCyTN7LZd6CUj&blyF-~ZZfa?X*xTE?ySFFi z>B%Q8Bg4VTjSh8BRG{M!5cniX1v6S}tba;B!lZcM54K=Y@?ihtC1W05K9DB6nCgQ2R~<6$v{c_`Pc8?`*MHy;`=>z z(8ITiIyFA;Xl>~zMK)A!ri<7}@4e!*lXYndf9 zG*~C!PK4%g`6gE*b~QLpoEsA&>O;eEE^{Jz3CTuRX__n1AnfRHt(9#0zB}~Ufd>CQ z%L`CTLM+TFXGYJ3AZwXkoEegVfg%x+k*BeaesB^J5`;uVAr?B|2Qy2?rJL{Sx*cgq zY(Q~DMySU_9B%=mh8Bp3;=6iPV9lrxm0GP44rs4nsnBn>%|x6ySJBgpPV@ZX=K~$E zN-(!kQu`rF!SDaSQ4F`Kjh(PIsfdY!dtox5*-}xvUBgMiDi&*Zt|>X%YDY^2FOK61zodDJiL`5#{<< z{A#G?AKC7FoRy{EH~a7IgL-UmFJHb( zf?sTGq01V#q?E%(?}ZSaj1H3ZVg{VR2|eAP%hDw;?Ht|-|DuBREJkQ8wDC(WEMp`Y z47OjK z_?}^`eo?)QPfP+=|wj5pIIx5BE4YID}b*M%PxK zQe-K#amDk|;LoeE$oVOmIEA32zQW1F6hyIS(2-ga_z;-u(A6in``cloA{#a83CvP; z&gr!jD%CY6mdWL8a^b&$rSBUm4}QK<=c6~p!$!uBwf;$k#SE*H5r`T-GYRHgON-#~ zu`V$FaItY?D3RKF;a7T^E$b+!!i*#h_IiAUWly*bx1t32n${RkN=(aB>+}~lA6GCUW)s`h~tYx8>^_J0>NYp5cC?T!)`ST1eFLp>L_=gt~O6t;M4 z{oZBu;mX9?>mxygNlbU`_jXYM4UKhgGUic1+a2$c^pXs%v4KYW+y!YVYbA@hCYC!p zvNBPXGvw#$V%kI0c+kpDO((eU1_H?}S?}tGlP#T5(ZFjhJ8gG?w13E=k^3k~)kWpM zIjYFdn0LQZ|9grX1MGu@@AryIbUDE#Hj_LC*1NFX*i<2Z;6q@yM`)G76>t$EY{oSC z-ymoTqV;mOJRD3%vvv;+Artt08E1@oe@0j9#v5HQwf-CFKA)}4LdVH~;PkBacbQuY zEU#qqAA^D|iO(^3$Vw%@pg6&6^$fV%9mi%aE=e+FrD}Tu;Wv#eJLgZtC7<55d2Vcw zKM>n3x(FNkY*`%9mlkqHm@o^9`?Fw0_p5Xkyht;2L+Q9)?F^!h#5`{-JB{Kr4A7k6 zW*xI%lorgv7uTcUR}70_#R_A{ezE69RHGdO6&)nuEGcln5t`V@+&xM&>JCrShlhOC z>wMW-*~_iC@-mjF&?^^-MeE%Ub!Y#)taZ{sF)J(jT(5m71hRcA>fkC#cc;!6uFZ@n zmz1DDcOxwihDgl$d55`-X&jC_lkmrdT66onhb-ObO~~-(hV3Q079R`l&^@NaH@ zRP--{;ouFTs1=SvTyxux%n`2K4R*v^6883NzLrJB&3QmX^<0@C`E?c4UuRfH^%G|N z4WQmQcu}xy7Bq6=j49$^sY*#9)c$7X%s^*d@_?yqJ)8BqUXM(arOCG;Vjc}CD+7z8 zk%ejvA!J6%dN;&1Q*G9mp22vO{oM6iljCCC)RbzvPl9F1)`!gUvM2?*&t&ZPyF-JIDa@TBBZCMcbyi%xYajO zXN^-~e>!R1HdM-2WhBB%PjNTE94St1PR(twXCG)zp-z$S=2lEE0j)UL4DJCEwD|bQ z>vs}LE@@yu3Lf6gU;=01xwiDbgf(zdQnUWRM)Q}?(at)|LWhBgNkYq$fOpn0BxSg; ztSl;P4^OK5*Du_Wkr6M^oE`5Wb53^jP(H&cchcM)yu*^l?co;Eug5;uf-pf2MClnB zVmdmnDmx#2Sby#Ly!?OPMIy7V?3--qG}vxSe~FcpZ5^z|X|RKj@0RM1S{+oAZ(0&E zdCB`TJFE2>jTlpU)`qZz&%b4zepB{Got>QxqN2=@r6P;(1tq{(KuXn;3lkm|2BP{} z$tkYLMmHg90FsJ2Qk_}y3CsyH)xCR$0$mk*3>M8hID{UlBGr0s-lD%d79aafukQkz zF-~9vsC%7BDl2>qC&%N;PHZw8lOox$zB9@%tO7DSM2=OeUA)HASkS!676RgGA;9X$su3P0!5)3v8>{S?*)xy8~4C5S_4L zFuW2(g@uexc2=5Z6E!ww{wl5pP#Ab3Dw|KW%mn{}^A18f(}$Olno*YB4ZxITWV}L; zeX$W3aFusr6&L`A-Wz1UD3qSS3+Xs!Yt3sDRgp(dZd=QakdNccqf8z;skDYTt!$s? ze+lVfh}(c)o)w1$WmfcWBtiJ`-H>G+*kM!mx;eL(c)FdF?EhoQG2`4aSH%JlwgHHA!`CV;#~Sfgl1seydRwgok7iUy1#Z7 zI_ZL&Z?Gk(`Yv;P>Yt}44^U%}b_)ECka`P?-3LcodkH;TV&$gy8a!3qs2P3;(V;$F zGdzb!2f;hu0J&*sXn3uM6P&DtV*Xj{4uy18(Cmn(ybWG+`)@@`z!nx3hKS7lnuiBa zk`NJe)2mgVT%^UubE*o2Xe+QkrmS&gd|M|~no#@)<4^G!C9q}Q-hq^gkn@o@N)1i`KS8<-&v)Np5R2NnGTcp z^^Qg`WYr~VWzSZpun-1mh}uMKyXO2_HVn2%e-LJ?_oP~UU8I-@4h zurO>@rF&r=%ah%m*+XI}1VrS#@f1%2 z&{6M<1HFG+7y$`(?Fji+#2^pURt*hrwS2J7%FaDn7BA_8UDClz3kN1E^V|)LWfGnuC+A^vVdz71!d*5Y|+wlp=IxP z8=0_tuj%@@6?36%Oq{DjnwpwD+=`$W&C06?A_sS%rdN?S8K24~eb&N?z~`G@Ve43< z`kaz-D(kU&)&I|kHi4&~9euYo4&3;k(?Rk`n@rjrrA*r~7D{#C0?@I(DZT-c*@!scVE==m@3Ds(x-a{`T#)p-lUZHe1p#jcE-b z-wc{2{w?W3madm%Zb78He16{Ec6(_X5;3ns*U1Sxja(0?+hEO=l>yM>?LeoY zF}1iD%@%kwdcCjJ86`sf;t2!T^p72ktaXSurCb{eR8Yn(wR&&0RjS(XVf2WBMVFJHx zvMR%j9c=Y`{``!U&~oy9%C;JB7DAAQm3+xZ7m5?3Na|^u+~L}>q6u0#almyTq9I{! zoOoliOYMrZNeS8~OAlA8@uX>oUE_SKF$6|_FL`))y6-;+S#wAAU7*v*PU7Nq2Hd0g z?N$kY47_<1+0crAz|OnBroX-dd_XSsx`Z!7!6n?-&yVDrI%<+o8)XR(9K?v;1xbk5 ziIM-{V-IKam-($xbIy;_MWD)jl7t0d>dNEAUAy&J0{$QV7XVdU9xq3(uba5JyBAbd zVbUvQ2km$R(g5m8h614c>RMVwEiJDU6&0=R>?GCHaCjY-hQc{g*o#rVGoa#XNHOO8 z`8V=2Ru22}=y#|{=P4TibBRi&&VaQ3QOmoVLKV zgWQXpXrC7}h&9=$g!vr^*+D-3{=?8TW;oU~F(OjL_AR>vca{KrqtN zp%_3sd7R;8O`VvBEcQ#^r8B>l*nkU4T3FCN!wh|wVcPjx3$%-mFcTgHn_+H(0OpZN z@MdkjW-Tjou@9MU3Tj}Q4Av=7>I7RAkdz$KoD=)fYb0b%^xI{Ip8zTe(~XXdoSY9n z;(*4)j!u2dSAx;?fk8BR+|neI4(zz&V?c`tc5&^GT3OM1yPg-Co=k9KDdOo}K2f^)t+{TNn3!5v2Z*Nb%NEVwM2jMUu znIK&aB)JPoBVSr5=#9AiG0kE+9V$>Ss)<9#GT`9gyawN_1OqTU)Is=I{z^lmMU=)Q zM+wPnu9o?JL#s1H~W zkM8es8v)pGu~|e;5C5PWz2uMVpu&x1pZHxDL^>_nH<^HbA7PST-b74n%V+Fm2k+>8 zPX1^4IDqf*PYLlUH1HqgJt$~Bo0~MxBtwTNNy$V{|3C7q{k z4A5$X$dG8(@;a`RpBt5v^=iP;Vr)MwOrBDy$yR2FstcKRQqN5MatxQ2MA|g6e8W z_=y(_PBklfiu(fAw4qSXfw^ zpC0dOY-Z>lbLz>8XKbF=;)KYP5a`sgd@DoH*WJG*kT0Zav66j3#bzG;I8aFcwzI*E z3v|}RDp1X0r_Y7VnbD#OPm+q)kA+fHXib<$Ij?MB>R<#vn;r7MxJ8OTzw)jmKyF_$ z6&K@l^@r-d-2GCJtZBN)i#{VN<13RtjEv#0A(2{Coe%h7`}8Yygr;Q=Vu$uq>Bl!S zzS@=O`|`>1#aPjUPODF?m`3-12%M*+2-ct50c*##DOs51B5wz%&VOv10x@DSV(+gj z6jBFky>cTX~st^4mHw72UI(?5u;xJzf3bl76F?m6dsAkEeB9(B7YtKXEWJGB*2eJj=X#JJ#eZ3o3)83+?88h^A+j_* z;k-9)dO_s;yd--=gWkdE2 zX4^MS>=8SdAmXPpY33T$?w;YuB)DI*}lx!I0UdUF)?Lw zwJr5?fk7;6twjaMir?*m{l%fk$IDBPuRy(IMBpM?k497Un)aysZD$yE@PSreU0M~_ z?sqN1H+9B&2E11f{gs_5uF60IHGn3LTLKXeF#>67X%ha`nx!!+HlqTHK00$#BAT92 zPsn%nlyY{mUKhJuQn5;6M%oeWN=umSqghhcUlQVvuN**hiZ=Vqrm7-{ZGMwLLK? zko{9f4$nVrtxT|>x8Qa8)3f88wEfb(3U1WCLtPPW)IBhIaN~axm$5*Bh*mY*TUKp; zrp|DKjRd&`c61DraQW%fO*Ag z)~dch-Tx-NWO&e2+iTi2Q8tVKN*TP*|Dq~dbnxqek0HKvK~|(8(im!bwZ%t;x-L5+ zS_}PzS2{D?xq=PafHYX>@Pl$E*SYh1PGg&~m1c+6_31jCt)Sr>@UjX(e~sa=+Y`d{ zT=nPURvSDHxO(&W>dUN}CZa0C#m|W9WEvE(8u9S(fY~(|N7}2V{5ISw*BjB_-(SeT zqPQkQkD%^1^X1_p5)&W3x?<=~>$6s|bAR+Xg+f~wpcvFI#xG<0P4#8}*w7{z;5C6k(jR7E1jV)WFsv~wz|B$_P?iphuKAYGFra!m~l!U&iF!X|Mr zKVaP-b({)ez8&iv6=GVs|0z5kbb7!Lalz%C z>r12Wa)A|fx|ytO`jqPrHgXp4TrWF%pJ`nKrDkhAm%aL4I#A)p#?S#41+Ci6U?-Kd z_JsxKtM>b|Q9p?^xzd77UiUcrqS8{N2%A*((45&2WHEi3Mtg~W>Ry-MZ-7g5adENs zuk*>Lz4TNX_zh=gF3pwEKT~-nvDQn*Q}Cm{e0vqqt>_;w^2op9x}kV&bz@}AnT+&z z>W{r1uiLJ-KxcW1IM)iGlmxr$*xAv57aWz2nR9-vs*>^beFHR_O9h3oj8Ss@qv!_* z&Z|f>Mp>>>3`F;3B9d1lzE1|8D+r1+)xC?s+uN4lX7Zbw2>$0&iTAO$L?|x!@Qbqe z39ox0P&BWAg|oD&1RDk4_a2w5VB+BLuzyR-uzQr2EBgVv-_<|QUT3~DP$bvegI-W~ zG1PVkVWX;~1d;8>1-3)SjV1bv7loL+@+$u~3((psST&PpLg*x+*`9)|P<-(2Hy|kJ zaT{Ik2EZ?*|9s}NyK7S4R3FR{v9e+)d;}T-XJS{~gm5%ay_Oi5;CR1oArqlX$tdhRSc-Ct!uDg)&VuWxV&`Xdee`??4c%QFNTDOXvv40pedO@ z5q{8meHtGabMT>3qWJwVk4~9SQ^14IGZ|xGW7|n3W;}t1d>Be1SYZf1W}{D{IbG!> z`S>p7ddQzv?!5~9D5gF$Xq)_AClr~PnOH2*>s2dPFwc9oUGf-cMhk+AFpgV+MeoG{ z#t}~*X*|q-p9JssgtI!B(~JWQ!KNw#@Tk^~AA-MS>N6EBU8KbI9li-bXNes*X14C+ z=imq~m@?7#nWDX(>U|-mQAVKp zbIMPC!DMiJ4KUaVm$1T2Uq|TORQ)%OkA42d#02)8SVy5`bN;rZ4(Tm0Q`Vo++|Mei z5Q3F@MTs1jvQj`f+j5lc%-ERUH`X|hSlU2BH^KC>m@ zjI6P~5|n04D6%0cV=7m1NHe2L5iNznK-yn~z1lCuav&$}=**tfhe;^SfD`aE`?~2c zkGl0g$@t>x3UDeQGMIh0B2i3~9;%Ho8;tu@TRj>C7)%&`36PJTD>eC3-=M02Mr!kclFGjM70;!;DOC`44qA0jPb_HmCjf@+Jt^f=U;M%&#@;xNfvJPX$!`Li*FE# z;Oo2@_tqWKO;2bi(qa{j^lQZxZJehy($D}hYEfAkYEDkh*NTd*o}cGJ?ajUfY-G5? zB`pdkRv{%e-TZaT;I>9a5q7<6N2Q~d zJ2D71AtZi_kFCHJtyFEK3>JE|rYm5to0|Wsj#wZ*e8A}lmoS6_0g)jSb@eL2oz!k# zJ^p8f9y>QL>S%5L2O|A9osK~kI{Leb5hCP`_Rp3|VIl0WId+LnkB8l^ZvOAv=+6ZG zo3x|$KYPYCzYd6kDa!Rb8(!Lh=U@alMy2?7?KmeyM5_n_Q7}MqaaD1lVV4V0$SPU# zj5r=GunRtsMo(`b8xIUP&!c!t{&S2n`3;02>GNHM&ZNNXdB~t2x#|pjGEHtJ!4#FB zM6)fF6$BGL@97$jTGnPKT8Ms*d;7NU(i$eLybflFi>W0QP7zvDS%UiT@F2AHMSY)8 zE$pnEbvgK%r$D;&G+I|i5HDc-SOm6W@wqv@KV(MyJAj^dEc7GubrjsK>$?m(S37S= z9}%NFUdo~+(|pQm9CjqCJdt^niK2TUlQ^?2I>TLwH|6z3@9FeWG@XDFYuk!o|C6GP z8wLi3wY~iolv4j+LSgZ6V0!`v+c?(;DFw^G36VEP6t$D8jtGpVG|vL%a#q?jp3+{H zts>?2^o6q2JUZEnYkm8$nd{w53{1?t&wrZm^}WhpIsd~K^@2gLq$kl3Ei4C3Bawij zc3MpE9gI!FMCS!;05C%HL8*SPgy%{^|B=q{XP^|k2M0rZ>e#}$P{TeIgqyA`8fII zf0WNPqYd+>%-u10xcxWZXitoYh;+s+*DCC`g2ppE<5*|Xizv)itp5;JjP;^_fIf%7 ze#K_xP296S7o~-aPCx*g(3D82WbsW0dHvK|@R*Hc#x?e|AIk#`*C7m(gg?P^Y5kW> zcLrsp;me+>Y?C^AXxFP==y7v2K{)@k|7X5m`4F5Qa6 zSwx+3fclgHkNZ}cNLa(^jng%S;mQwNG3ZWi+p&(Si4tvyjcX5~gunmW%0TEpdX_)o z1_%VVcR&xgy}eDQ+6i6#eod(JH-bZmZr2Zpk0*bk*|sYPOiYvpl?LUmlx5x^g>c{; z{ll{4`Em$D@5pOScC_*%ORuvhi$m8c+)2d0506Q_xmHWtHGiyS26TS|?Wv!_R?;%v&P%0k3>o zGjyaEB)~3PlM`>9w5ZeGj;_;I#C2fxTOE9S2+rD7->WJ=B$;{h4P1n+tt}uqZ`kYR%g6~kGhJI^su)h!49DsvUmoiAI zZw?m~Hd(kYegFFYvZ-?`6-BV}#4=tlfW2wLuV9C~LvuYu?p>l-4Q|*33yBEuu)sn{ zP%8D#3!ZgqwVj8V@6?J+#n$`xa@&pu z28B=gb`Otxy-Bmqd6DZ?ITh=ySFXidc8+{uJ+bsi8!mfG)IZ2eLT!QGLP$g?X=FqW z(nN9$EMKBX%+R$u_EGQ4F13VmMm$K5Rt=f^D=95%AZx{W0D5@UrLc3q*yHkFjTDNU z5b_(35*rWtI`^nAd~lH-!gG11` zgQ;fdT+x9bTYy9sRTME8rd}N72O=;V*6!DalLRR~g6CYnU+CAG9Gh1W%urkV;%odj~Iu2Pw~H&vx3 zRxDjs-Z>9F4uo>3BYy>R(I(EKZZw{yJe_M>Nh{#NeD9|j#uss+C?rO*L1ge{njH?LuP=mOmz~0 z*+R;n5eD2Prcw{E-64VNjO+K%t6zdMR%_p7R^*5v26#y^Y?rXDV7N-!>% zqU>Bx6stz^O>MGLzWZdMGZ{nCr8I+UUhDC5%OZUH@C?!Cnz?D+lXSO57fB|bY@CZc zIRO>vyXrRs=oQu{$^YV5;(|F5Wo6HBuTslnJvr~1#_cV`lx?P^VbyK*o}q?@WRa>Q z)l0y{Oh;2$PJ}QwHa2#FRDcM?eB_{4oq?XaVJxR@}9*(YOnK(b0e#d6=;X~P1QMR(z_~m^X>ND9-a7)<{Am)1L zgptXC;<$2WdA~V`X<}{t(G&R{UGlELTy#mRV(`FA-2~aT3x9GTDxnL?+?=rv-$>4h!I|>YuZ!Pn=b_yV!`XDxQ?;e$u_o#kyhtX6tYdszfLuo=Bw`d&W3?pAfyXr%O zEe29yN6q&y{L~*AF#pm-%QSzn<-g5^XS6`?+i-qft{vnTdCFkTnR9xrx9o86@;73tR5rN|{IXw+> zdLrb&nb$WfAT0rgWaJ>9Q^#qgU%tjShd4u@6JqN#j{>aoP*TVsSrj$L&67)+MMYxG09Sly5mMoV04NRzatZi;9R|GRj_`d(5Y_w60Hu1c2 z`}oW|$nR63hQ2HTH={_?w_ z{SU|5!5TJ5Xr_|f=PgPqK;{UKrUGeUSNaKZP3%1xxzsS?uR04a;&$)$LY+JE56lorz%XrEJ_u*T#>Tdvyg*s-68gzvzCM8_ z0ge0FgyoYx;Hu59rrE8Z_pXYm9(~f*#*CI4`N-DRRsuLRfS*K17ZG#|nruB(hTB-1 zAJ*CvgF_O}Fl@C=7gi8TRm>8bip;6XktZh3-i(BV6#B{Y1+p9VHZF+_&iQA+m## ztNs_es;t^_*5MP0yzD^l0_e4?^9i`*gNL3c6at*HzPXW-RNZ{AZU(5~F4}F|-<%Mt z(C(^iUZ`P_@+6@eRaMi5)t{cYqXs(kv2*b7An2s38W_YfRkbG(gHQQU&n zWM0C`gF>M7R#a376@7HXpYw{Cl&7fFekq%bR!YY)knj`Zmn+QKMj|-|vcf5-$4uVZ zXyU5ogb|rDZfA;lxY@tv=aC^xj;{=Zto)DaN@U9H+*`A4d;BQJiZdefio6L{KB^YC z0D(5Pni*S#bHY6TYOmEp^JnmqQ){J}ogK6C0c|h{qC*=&Gkq?Fr~L#QzN-&pY{&0H zw4m-FL~iwht(|q)oD<6PD;o}IiV zZAE3}P>u+Dkmd*O#xn%H!`L}127?AN5syEDPV(3yrZw5pAaY3{GI?#xhYkm93Xq!! z&QN4M?53B)zOY_fjk0E(pk!rZo7fuRB#eksXB?%r4t2>B)Q8H{ByebQJJ>jX>d{Gq z;mz-oocjkO7qL^f=1Pl_dq9Cbm7ws&xtGtOuk&HC)5Ojk7q~4^Wg!B*BopD^hfcbU z1$aNqLB-#j50$}AypBZ_VhS&00Q>U=zIWah%SA17Z-YLlTqL`KA1_m1uy0GuxakLM z9k17F8N5(Vq8vu$jKkEKF=-K2*FZ80+F;IC5`P)BRdc75Fk-X&5=008E;OJejfKRW zPyZcINwok@riZrxT({{tNH5>|xcwuO@_mN{lF)U1D&I8Eo>F>_+or=5%fp4$&s3X! z@%0WP(&>#)Ixo9J5jJYmhYYt@>HYqiM88nxNw!1~v}ybDT5Uk~^~}mj9Eegri-@k4 zT$W!;MCTg85ubHmGIJiSSXI<08WxS471vL*KNc#n84x6)?nin*ZuiSiTLQ23r{Xki z{kt&J@njkSvwsKyG3NZ z+PkMtM81;CWpYT{3gg4cFoQW3UI}fC(7bqYSzx2a<;VVPR(kakuRtcQv;>*XzKGU{ zKe1&j?bSFDZMKMl+!;721hUKM+gqlnF18Fe7l7Qr@)4X3cIz6w(Sil(te_H`1iV+q z!75LOj)7>3GbiJYemGG^3uuBiMC(a$xXqkgT%o{CUIXAKoQBeI>JKn3{b8l@KMO%o z%VHiL$@OD{kr0FEgC%4z3%}L8X4C#S521%WEk&MwKHKYZn1 zO~p7AWkmXloyu|z%7yU-M^0V+GiY}{1b`ZV^xf0*p#rG;GZqJ?^x4^2J7;Q0ziN7B zzqk$}WbKyhHvXRpc#4gMrVhMQFI=5Lgk;+4I&};OVbt^TV3js)_e&vbYFY1Hkc&Ds z@h#6fp^IF?c02lV5ys<2ArffhFm5M2=NKJN{KPgOEf*<6i{(k_ki;3?Y48e!Bux zJ)$A1zJ{w=5h;9x3gXO?(|rC`vdyDE!fralZI;i+ufW)r42SlZ>kO>-MsmD;8>`OP zUoJ5|sEZkZ!loUbQ%OfpKQ%uek{9y?57K&T3oVrg?R{lh%*R&Yz}@|=UoOpwDZN2A zJcp5+5D+b{GD>82M7!% zW2Mh#mz0(!4x0mN_;@yOwFzq!vhwruTw_AOdO7K!voR6s%4K8Iy4BN;$$zE3hv4z$ z>f@y+m@$y@ZrVmc>UkZNq-7V*c!hC!wboGO&!W#){kh+a&Jx?E&-A?M=q>T&Dbl!( z5TKQiI$N>%CZ+f(Kiz|)=Hj4Asb>AkW>%}83u*jTFsKpbmEQ({r}@8(HQ1bI@}KZg zFW$2czc<0;WO;9JUQj>@x+MF+N$1g>)t8yQ?AJcL{-s~t&0(5S2HXv_8{>hoRKK-8 zr{^dI7~11))f4KTn@=&O<2dywr|=mc`4)?6a2L@WIN|`v-E-75p6pR%zSW&6L|mGP zdGU?y>rgb(Qe32Jhh;%X-RoGBnK$E7{*|MXc4FWTk$8S20||t? z3&c7Ony*LFIzzxA-5G9hMi?k_UNwn5x+A!Rny8cJMcg=}wUeu>6Vx7hnTypXW-Nqe z)%Iy1v`lmoZStBIA-bi1gM)nl#Du{i$AyIjr(TS}s5eK~KEwANOrO3CH6Q$JQ>m%M zt~~DcAeG$U0O&&ldLk2eA@g51n)!7zFkQ>+AfS7+8c3P2cIi(ZFLdS<(3_Dk!OuLY zH5%bw%z+LEQn-`U19HJl=;eXEoeNm7r2IB~1Z2#(=sT^f0atCSr#X#<4E!#e$eqf^ zD3~L&SmABjJ<9_O6Mi6&2T-@S!RL;L3g2^7S%|GjPu>tdogDiA%>r1~u`A-V(wTvn zHw0h(QcHy-3O!zuN+^gK9Gf~9(s!TL@B(i!u1BaAnhcI{fr>(IWMh3qkQu9NQQ%4v z$>;PE0)ny(?3y2KT`jZEVIS0W1;qNzKudK7s2Z{sPAM%d&Cbc$12-tk#YRhL)~+2> z$WYCU2Jj!yo_;b#wz}>pJ?aiRd)43R(q|}~uF>YffILESGFLE)Vfqq5?18T_b_gPQ zExe9K!cR+fcK#rdyK~~n-@idV1vsEy!v+h+6(v%6VYd%gPZSgM3WKr-a5e`S3MDl9 zF46t9Asu@GtjS*|r(g5Gm4A233}-GFc(aw}-KOF*2HZ|}cgh^49Vz$eP1f-IYA2QW z$^&p?(m)BdTilLL1!L>Bi#0GfSYX2lo$gJI-s1LVr3djnW(Sa<1$L~&4EIWYc+?&; zK2mYuv}N;;AEcfu?gXrz_by(!6Kbg63bQRhWa)y|c@Ni&a)V1BwYjAw!zwK7p(lJ6 z;q~E>ex#r_e(mH<=K?goE|yT0a+?Suc2O1!0L96X?ypj95Y!b3$UbgFE0?la_`NsS zo}HkxeB}=!4B${(O$`U6j!s1<^|U8?qM)XR?2DU<;E1V?4f(f1hV*oWpc)E_a%Q40 zY>kbL+Zr!%vtOC77hvS?cmtM&&3xG) z^oZ>UI*6z#-KSb>bdLe)$qb7}p%v5Xgq@FVKhh&tFMwNBtrTqd<1ro3A8CqWMCYkzOS2+KLApsOZghH(tC9AyfbK?}FCxoE~cL^F8|1e@tUI8VQV*ID~;=kyhfz>yT z{rkAMqc%pi*>Kb!0=5@7Iq?5d#FGew*zsl&V9B)EuUI9lm)Ol+(P_;3L5xdiypr~0mC)t8Bwfy|{A;{n^c^!jQ--|;|B^LaXV z_WpgbN$t5|ORYX8OdlVl6Wh5HK59RA0I|;8BBayOz}wPYJ6mzi41F9T!U~j6>O^3Z z|F*+FJUj$Kgg2lx_a6pAjFPzl;|>Sg-jBnWC6;+|jH| zgl2Wk$I;w0H&$}#Bq0be~#t! zWGPgM=TBhc@78mC**C!@!H<w_S{l#$jU{pcFCc`1YmK9WJ&(UEQCsT)%i>TW1y-+;q9A^XO9x_MZ^S_l6H zsbF8xJ)mj-<xIId)3;5r_YU(kY}W#rFe=s#=g;twI|8y)rPZ=Q`QD;rwCNADG#bKyv? zb^2|QW@21TuEY?Y3{M<;;3nv=gnZ$|4AU<^X*61!AWJj(>zCX6v2k&}zJ6$e>6SlQ zZT4Jqs^J-RnUf+5E^hb}Te}F5Hi2X6S|F2?B%7a{PfkWQko(s6WcKM4Z>Tm~tH*^0 z$54IuiRQ~|p06Nl2kgByDfb{_4!Xk>kF^+%_OlTtp=Jvf_`4TIp=2>pkn0-zfflq0uE$gmbqLuU2{~O_4kfo%f;guJv zs2JP49zp!_)BmCAtOBCy+9>=HD&3MpcXyXG3?bd!-3UV}-Q6iIAl=;|9nvu%4bt8J z@#4Sm1}}&+XYY5f^{lleFL{P{hAxHBBP9Q1(^ ztUqA3tvj@0Jf-6kx?4F68`O9ih-d<<_?x-3>1tX0dF+%+mJQDc&bHr)TCp7Qfy zF1)hsc60Y59PRm$_CbhTL-;^xfP@6xN+z$E$`0ASFx&%&Vk$kCBeF4N*STX=eR zRmbtHl8Atp#its;SoiPRY6adM);DjKPj<8xOh8~92>$^4En`&+EFfb3XSryiiZ*#0 zT8h(f!!24c>HYz40kroB@;(Jv@IAPw@{$=UYDM)_iw%xzKy?1MWBoUtVbr?v-FLZ$ zb&V~MMFp?}mYSVN0rK){4LK19{%3H7LBjF_AT;{Ise`9)U@o)Hf!BX>QfcFdRQk#l zJy+x09$*NotE+F$j(st9r}(BogDi#26H!-gB6MhKNz>RTV+7)$U(F?I(4EY&T5)xL zI5UW7YT^OxV6jw-Q^Ar}Ra-Z67Hg4dd}o8Sc4j?Y-SdsRF5VwFAI?9?fzd_qnDFH% zGVuSulJ^tszZmBu=#I^L5ynhoRz5`n;%{+x-tWN@p{Pk0zOZcu1_Gr{P<9m-O&U-NIgCo*vlZug191y7z z`bLdg__fbe-kn)PLkckZfC!@Tu1Z74L_C$89mSN93J!^A{_(f6r4JInr)wNmdGx&x zi~qR>T!etkDAXpL^sA@tXNt(P1uY1p^jN^%0ElMdg9!QpUXR$Hw@6>f0q&T`&drY0 z45gfc_1B|I8xm9(8qMlMUvG*R{&Br%)>PnbA1vkSXMlUToqKJ7lE~ES0f$|iU*>E; z>aX;)0dSnRXB%)ITkEPa-!rDkm)YokFW&V%sG}lJtgzO z6LRImClJ~8Aj(vTBM!zWia|fi0UHe<^8V4pfBDeQ-g-V(tEP3r|zil=4GaIOJBBlit6b9!IqIlyWWtob2l@_>@N6m-B9rQ-%NTE|WD4 z-LhwleDc?q7~WI*?Wm1TXaeubtOQ#N&P4k&5f- zo6>{J2B))5SWQWrJo@{KZoqv&+v()_S&5lhl9RkgEr&%zLvudLSiRW|y+y|d76pL! zRoB=R^jK}mw|R@}N(3_~rgD45n+c|GD#5ywv5v!MzW!I8 zZzE1t7{-UTB?k8`*elY3AJN2m_N8s>!V9MFoWxz0_Fhc(&j9f%SV*2BCRM$>^=QK< zwA1s=<&@u}LcLt=vQjlA<@vdlw6%Ovcv}Qe?iQS0QnP%9bcnq)hjVXmj1ZYLV?XSW zKuS7+OdbF|3O)U;|Mw3V2$=2ObcAhiRXd(e1?ke(wFYcGsYhHnIk~~RJb*DI=HugI zI0aoZVMLy?$~nlCGu0B{KxdZ2DxYUC5cUHCcY<-Y4VOAj)`m=0V9ykA2r!j8Z}z|d z;j&LSQo$x(QnC_wW@rJ#iJC+E}&BG9x?j2^@po{$Z6~T{o`Wy4gPp{7|plVc<{;fM5`oPTfk^(>4D0@82(6UTYESxHB+bb=
E-lY`wUf}h0HZk9>rVtS$#tKb4X#n` z!XAT*&g8?xe%_QF1LwQ4aX7&Ha&UL-$vV!d&-SaRxDVkUAOC7@!KG7qpTTM6b@_`H z^7^n}rda_|Y-48QTjsY~gmb=`Up)Uer`bm|Z|ZNoHvmUiV^9zeZr3GMYHQO<02~5deCaSzFVk7*{Qdb=5&|C&vGxEc?#P%!pyY|30>% z>nbb^0v<(vvZdRbW+1+$NK?4@l38_4V8ArgmpZ{`=&Nd?cjY8d^s}41-Z@Z| zgiT9G(sJAevC&exv}suRIdA(9cLrX?f1%4dU{@L4+9&3oC5ugB7W#tXFf1A9AR$O5#|Up} zWrg{gvd$@VR~G_{Qp*lsB@dk6wN5r9RI7m=whVbcOUTup^7BX3!y1oc8o*td8u~U7 zlX=phD{dF_-D~C^{IwCcH(RWEL6srphdKiw=I$f6F)=TKDq9l)##vZc_+brO3R4VY zdVRgKYE}t4nqQ5vAP|;&!pS{-_@_;`^74A_Giw|1c)$p_OvpEvoj;3U(gn0{=;|i> z*1Dhj4+ikvUM__|*Ut*u+Xb!0tBXdpX>fpW5CF1d3wT5Vc?6|gpZNM`vfKu;IiJHAusZZVCL<3{pzh8PYHUGKI!HoQ8a-Si2THYjT%tQVKu!-42 zyK>z2CyPOWWFycEzSy$GV=bY%&gF!WA#WhhVqjn}hHav||Gx3y8F=46Ed_GwPNEv& z-)7$t`y5u(?42FMCaJpnOL;^G^1pA1P;+{k3wTI--ue8Z_r<9312!`;mK`Kz8UOd9 zQGjr@-^=m2P+Z25z2U}!ZBBt|Zo9uCIn$3kH;4`Ek zO$ohmQL4=&gReL&I@wT&a!n75`l9mG#k&PDET7rHhnoFa$hAw)|R&{)N>)DYLN8-yDx7jH0x+wT>e>5<7o?Z2i z01^qoY$!HoM|(2hSW^qp2@flS!P)rDBZ{j7PPi;)7EN1woG39;bisS4ywG9%>o-2FP? z{XA@~a+8*heds56e=e5zUUU#YNdNuk-4vkU5V1c#jMO`wiXF1L1*}st z_PV{^SMiI4j9t%8gJi5=f4!TJZ6p2P%d?x_`2lTpbNV%gFWHiNFXpCH6DAKSEw6Nu z>Dk#uhSh3lU=O)~Xx4N%eIDbKlG?eBp92y$R=l95^@)OawStaXLu_up=`(U}q7Q*;^Dlzq2dey{@zgT34H9sqm*F~b-*N8)*TrXkx+QKbc|1Rl!* zR5VZ=q+OKv60lxdp#&S#(Y}pzzl~Zvtgu%WtZ)&%t^93&J;NV~rKxJEVTjSA`)W)V6 zKk85odl>Z5<=59IZES1^?K)FKmZBycLbiQE_~9A%J}~VW7>$m#X*+DX9*t=I>EOim z?liRW_00w_F=GqVo-)}SH>^JB{SG#-!rFCoQ6kFt5&f4B=j z48y9waIKyeQLPfHPBwml_T0?+#Ora@cBWmGN&k?d?|s*YxxsALOP^%xcE^t9J(s05 zV@hnQ*`j$2xGbJ}PpJRx-}cZhR5-fg9}D}XZkax~J-jk-MD)}E#%8}#$E_9N*14JW zXT?ORMcz&k1KxhEC84USiXW|4V3@How(|z$9fdb<8v_}$a6m-|^wRQ1Z^M9`$|lXH z3obkFeMU`kO?zX$Scx)qa7;+;)k<;IZ}vKCX)LS87B}RSG(&Hj+!`>+!#&M6SHEb7 z)Q_6*#YlS1PNnswVVh+V@>_ph2zLFzGu}nC?a}-2 z?99sgNr}f{CHVNm@51+6v&gavLFsfj2njsxwPpKG@zqQg6;jIAX!N^4!ww*T0WWUi zui6=|-4y(votJt)EJImQB;Gfp{DY9e#aNBH4uiMQ**oM{!)xCKJ>n-uvapRKf{&z} z$P!kDb~N|#b>mui$kdc-+ohLzdQuB@?6GFa=~vHL%R`l9cBC2JPi|#V(buVv{R#3# zrZC{J&?dE&ag!^d1;&&jG<%m@$o2^eey6(3JG^%jq8rUjF5>wB*%MPB-|fV5Mw|Xx=NplJdD*{6S@ag%N`ulUw4tNy&0k1-R zMaa30G{elvmB8e`u`vn!yh{x>*hI~zvW1*Os+F2zMQteJ2(~JcV2KRYIDyX$t@8+a zQQ9Zu>75_C&gucc3y8%{j{Ie^fVTg++Gn#m0H&zsHCIkKQ-ZuqC3#Q`J=I`km=x5u zpoQsq_I4lVF3GTs^dV%Q^9?1^uV?5MnN)v!xIp02RDX$w>n#d{ZWs8rhbOj$hKu$q zTqE=Ccb9m1ubf}(S7Q=sPQaQh*rDWdiPON$o=64pZ~JJzwQoP4NpQCtTAW6NH5zQn zA+AcpyJ{=To13ZlR!Xu>|DljuwJ*U;X1V)J_tblFmG2gNTb&{0`CgSFnKHsOhWW_K z$lX7r-|XKAyV^&z`l3qoAo_8c*s)7~^Nf!3JxJt-H2K5h*bglFw$(UM6 zzA2X($EqUbo9kj7-}4nC@%pVcv$Ly(2_zF<&Wa-_^ge3{A>-Tg*K- zE|s)di<#~VTr+WU{^6%3e%KNgPx@d(5BDqfEzwCVQCm)0PV2qcm?t69~tf{j~kx6KaS z*tCC6Mrn5YZakuFsny%uj@h)*U>Y`h^0$rr>~-+Rm`59{*d+~AMt)k8A5Y?mTQf7o zcW<*epLj>*9qNrjU7s-4{n|7BxzV&;>5c~oO@Y<(*Zgq($=1k=*lCwSr1-o7W_E4HL z;-Fd@gCB>X=TR`@Yiqj*-;xjiXjQvW2W8_}elk8hIx6Vy&a-XIOm*k+FuKlGZy7$K ziVF?*U=d34C|5{?*MgKyD`S}@N!t`|v+?nz$7V@q?fz8118e=#L&n*d@i1>U;$gA8 zu56^zb@O-sCsdYHXsjf07`0HhK)kC#$cG@sEY&)n<_l5!j0+%ayD9by{#rpem>{J?27+Cc0bOS%84)mqo z?%MoL%ekO_BN?Q}?$8OTRBeLq`d->TFulin8G{$+x~kzc)$Ilix}&5Px}N!v(AJ0u z9Y9nmh$zITM&UMde#Ro=b;|Et8%*k-+Jun!1j6`Ei3xC8Gs?2zn;*BU06g4y<$Y^C?Dlsi*BA0m`(@AR|WcRVlag zG%uFPV(*sYUxM8@T>BTeA~j9YMjKr4@PH<;&FjA%)NxNV>}^(*+e20LjXoHRFlHauqH`WH-H+e)jzF@t<_{Kw*kZS^Z3>Y`6{-_GAD zX_pr2x%ir+Dg1VTZOzclU+mzWhNHR&dIeNks0HH+FCqefE5i z?dZel?K4};#$ncTG*mzilSMWyYsW9h6Nx|sf#la}H`L%$*MI{noRRT@?F74K%h6F) zO^D2AfZ_IJwYhYl_fRg8O74MLF&DB>WYf7n?FTK@lrMDEd5ieuXeCaXzI+A3vY2Rew%+7TZrX%JQ$;SxwjMwf=LeelspW|hI#MApiRm$GnQ zuA!tf0M6-U&}gT<`^jkgJ&cM_fVk5sQDviat2|Ngyfmg2n7YuohYYa;smll!`GycA zjHl|>Aswkz)N0Ir2b0b)l26MQRRyVscJd+j^>{Y)t67@#$0(tBg^quKYh&xkH+4Aej~L(nWn7z!X+>Y8cHPTtD}3Rs(1N zu)i)3(L%Y+ykc3ytpNNxS?E^lp1expzuD$CN3iASX#L(lf{LAPx5Oek<}}I1*v4-n zH_B(^-EFCHUYekIO*H875&a3rqzu$H$g#9Ik#RvkT8w3;rr|BP5{??JIC=RnIkmrf zw%U$9b@c;~CG%W9SDk?tZ3{c=qkzw^D!ue%b|5C-D;(wZ^_>f#oURDA?a7T>+Q07c z6dV)irm$mC9J3M7my}QrSy4#SmOd;K@lLGX#*n@-%-1L}M@M*w+jG_X&oF+;A9^_V z=?-(a^M7y0JPf@XdUjewZ|QM-y_I-l?Y?4czG_Dop1r*3yfQe0-`u2(Gp_tDptrrY ztWuIEFd*u`E%!R**~Kkb|L(11$@|PIZLNDX8B5zf(Kc%6M>4GUs^HS}%utV&;PUUe z!B0lK>nG>cg0m-Rp9Sd}Rtnv=lNK2tATHu+DnL)rEygK<)!^4Ww zNkXA5749KkmV8MDtdsu)@~2zZn|ZBm$f2pQ9sAmNPOJXeYqRSC-sb2?z7fiT?qu|5 zl`{2kTMutRMk-wC$(UJSkkdxLfXmCf=N0Yce4FC@yVA;d#tO{mKV8tgDihdWKXtKfObyWb&M-;`T$x$au2GZ&f$77R~%)#Q-mBI z+j$Q}?ardVU1q^7oo^Pl?91?Z+@VIDT50(_o?Y04SiR#=vU@ZW^?JYyAc)uK$2aR) zN#>oUgD|InfpJ{5dJ&MfvxP(yDmDAv)JYOGZT;$B>v%?L7XTR^7z6=R;otlK=!&2K zrIb3u>cZr{EB&JzXDO6@u;kZ8w@RPdP6OpHr9^*oqEbq@leF=s^6}Pc0_W((zl=o9 zCo~f#vbKrHlyI*CP~r0g^cgkp@ptLJn+^c23t)g;?w75W>g|Z+?AdiGLOz+)((HuH zvDSKyk=3GxyRd;N)lqHCrb$$_F#Huj!++OWlSrR?NsBr=g+CsAMPAxUbIn;Mdr1p; z!1||H&)cSeixZu)Ac(nO<@d6Lj|1W*NETp<;69IcbM>4tN^%Zl)Q!5~y(M51t+Q=_ zd)o!BDxmbaGYZ=05B5+@AAtOtEY7}rNB85(;pU;;Hnr#!<32}HCFeWEAu|M&SBVKv zEy4+F^e{yK`Y^2$`*}dp5pk;pp%9ZQ!tPt) z=VscH7Mp+%PeNWU=E07O7DJQsTfEpT^#M__MqC+qO1B{)ee#79pM`HDW>f%FeyDbf z5|GHrgEu=pHzt7!!sL=C^R`Xw)NDz*=t0>O*5oXUB2Egk1VitVvfP+C%L`I+$&G=s z))2?5FS$pg-zLc{Yj9^r3!eGtx_ z87r9q%Y8lESOupM^Hj&Yz~#J1oW1hh_4Rq7=wsoU@707aP#L&&(tVE0m*j|T6F(~_ zip%tV3+eWB1tu9&H(%L?LmeTOSa`VVL@=R`eAWY);9dQ;6?9P37k}^UngZ?h!1G6M z=$A1xern3O?}A$6CLsCH$#Bs`Nh6|S+2sr94PFJRr%MwZ%@gi|1sC<*Py=qX^8Qo= z+z0`u9``R_3Mws3O_3btLWxtrpDGvH?k8<2YFRW9+_N|7H;(jm_x_2CAgsOZz43mruad4QTWuDFjp6tM_aNW7zGceq6F$^_0j zyh*zf)vZb&rh7#^zjHztta)1(dD|c8TNe8D(<`+>J0Z;W}2XBX4TO2%O7zTG0q2%PM{Mo z(zR9Lt>;tM*X9Kde*Ry6q>%8${r&Fxg`#jjrsp z{X&BE#-z4HK!7Nq6Br*)V*uvPfOL}N;X~QGKAGcnO8;UBs>ePR=raX=ZNoRGc?qLf zF{j;k2C-pXzi;?w_l{)16Cr&oLGIsQ*Y`!^XmP6Cd$k*QsEQb^@>LDoh8b!I6~b}3 zlmD|3PQH~hCpJSdGcyB5UBGpUSG}C{>`anD6Pc|G6X9z~0l+!mx)E0`9Z}O5apVXM z2JXK!2I4wdNM$Xiu?Zy9W%!a>pINhb9Drm`n(mslB_&xbw@TuFF^He!?8U$Z)BP+s zkG2l8u_4k!uv!w!Y0>jT&fbsw{Kw~S!jF6bPk*>L^DP$W8nj@B`?X`HF{^3@-jR6E z>`-qDaGYnvaL;x7A_v_CdJn`A;3woy(wavons9Q*dm@sS8cp58Z%)&u3Bb zdhN!h3B94VQtN`#$&0)Cv|=+`RB>(QgTD1ZeSqG{fyO~^V~Zu53M%vt@mby7!qzt% zsPJb4Je-kMPO1p8(T27@{2*?fX33EKw(;==SF=_7-)U~AY>Oea%d)%y)%q-IzyiOh z_VO^kCCeCS+GGzM1iV#=)u!So@7V_|S!e(y>-A`szu_5)HzqD^14}?2<4L}e@id-N zJaS4p3yQoENsxc7z@;Ybb>Fc(7HIg_%}7>bB~0{oK@FW9<`5RakHQ~_Qbop2h)N1# zMDHyss3_p+oqtAwK}C7qfBs#Q^3O$dcgLB!x>UY#{Y8n#c>v)2Un{EGBL6*L*Rjht z7f{gLWW!e-a=8Yo|3<&Ea;xgNYfl($*7Rz73W-AFntthLq_`4YHX=Eo2A!~!(xlx^ zYps6Ad+DTs?@GA`q+Dy7Btp5f_abfwOaU*grT2e*y24ONpYa;5^Dh(>uqYM76JeQ= zkH(P=m##dal4oJv;kal+;N)+KwDAMk9mlw6{##NT?qeGEs)$PZ`!fNr9G^vbqhlyf zeeYIvZ>Q&Gor2ues~VlRCwN`16nRSn;!v!jcjCIev+p{-gukNuqhU4_QsVo)RUo5! z&%C5b&1TDq^Z#JuVITeL)R~(Pec*EHa={aQb68}<*UGrq!&Q%Be%9kgsBoATrcIG; z6aa1{@}0^D4DZKl8(@sv0+j8~aT1h29hnN)qmbnd(Ncd&8;!HEhJ=tm?cGj9G__*J zZKu;k&Pw@d;Q^M&-}cl008G&47a`Bt@^^jO7)NP0@}Gk!PqswvI^Vf!Rmty)ahc^! zG*BN+`FBFZmD5(g8!?4-Idea{-Wj?3)rpz^dh}&1zH~Nk)E#`ZQ0R=Un!u96oQv4( z_yXyF{pL%W_wZ=LQy$#25MdFWfMh|%@y&115VdFjb$H+FpHV))r@5v>KjP}l9@OP| z<`1--UZoizB-{nyi7UtHqv?11ZFs&tGP2I#NhWuux9FDYvuvlyx5UQb-NTC!ki)BB zQCbL)4@jF4@y{+}`R|izjr%?YC(U-%l!}k4%22SDv zb{pMbMP;6?zfX?zT-H)_KA9QI7{{sj-A|TnXDJ7PtZ4p zwzDVL?X%95jSsov2gM;4x`P(N>`#>+yPR{XF~bhv55wbsaj+5u@C(TEe@=9O?!~t|vhU1Hyo6Wd z*h^+EoE+O#%LayGh?cwj1ph5@v&-w#%gqnk>Zkf#%1p{;MqZ*wc>z%**Sq8StW6GE zfrZX*@>6ekzw%j6idkOT8!IV|==J|T2FIsM(+OYwwz9M&AST`gT-|5|C1C%Fuq^#C zkG=7FYt&*a8t{-YRW}zyze)J1-_7XdMZv8t^ryh zjzRpc!F;h-^KP7TLWtBK(gP+%ua6X;hl28oXw#*%S)KM~mzM`a72#0q*A!&5tO%RZ z%GwMy$Lwoto_-IpYjzj<+9~shY2yXUcV1kA2t~&7llGU-ds*}8i-kMb5$se{T~0fB zX9CW&4!Z9cLy%Vr*a>Ze-1Xflxm7Or#Rs6C{fiFM={AJlecJ4I`BF` zR#^9EG!o?Li#>Hvzt&&u+LN-onmQ&J3RGu_1?L1y4u2igU`hEt{%TikVQQZpn?(E1 zxWYEuSE~knOD_A#q>rDXecH&%^@v;uDxbm9Vi*j4_5X6Z_6sOg14QpbQ}~c3R02ar zF{Egv!Bi{<7d+*!EZlvM;L&DQ%Os=|qh1l#o6B8SlE+=DU(9#+j1V+=1EU4y9^I_w zXF-o69O(TJF95R8;)^`PT74!lbG-)5AB`70y{!ud(D*sWXjC_qZ3Z{mRA1UQMq=1R z4Jv$qczb91oV7OZ+NpstL$}r<+c90Hb+L!pzZv+xqYLgyVi%~wT(nBh0PX(%W#+s6 ztJ-Bf_avJi0@Bhpr);pSl+v3c``z25lvjCDnYPB2C&?k={m%qU|N0$hlj;!e9ARphp^zPz&fowi0)paW0QdL@-{9c>yVlh95Vn zF|lIyQ)S~pf{@U}eV)wppZd(zR5@z~yE}&j5j{wFA0)ViM4g^E&)U8W#&+UR5aoli zMBu2?+k~k{UZ(IqyEJ&`lgZpxH-6EXshlS<8v9mzD1(qtTG@`B2H zp1If&3iJtQ04AM^jnj6O;AxLbHe~!ui#w&)w?!uEt}`{3G{nHKKv>lIxU%^Ypqg?4 z=yq;CrTh($;7k>&+^uBKAf~Fj-STC#I@K+|_q!JsePGOXb_wqp5hoV$q*Mrz+&~3% ze*kJk==FXZ1s&aOza1J{hnUOwBUygUW04qd-71q6jJmOYCQIaiVB>c2j%;d%v6wCe z+-fYrI3j+$JT|{pGOvs5eF182#7z{)Ej%{}1Ji#8c^&ZWbj1k`B=oa7@0=t5hdL#` zANAf0MP}Fzl&9+x>NA7fTG*U(@?yh$r6J75ky2Ok`E@00T0D@O&csEEGA^UBB^m3m zaiI-oHaV~{HNxoSOJIrbxm^`>4Ao(i-wLn z;z&=uJ;z-WS_hReo%Oj&dV83T1bOnOd%bm2oP(sHZePEb1z(ITtN2?xSAFSTW}JwI za4y?%qq;I8VCQ&}a`6x&%b5{V6c>?%mNk?&Uf-6wmN$3oX&T;?YXL>+cXzF_*i5Xm zZ5YehN$YX;RS1D!0Sw5obr%;XfFA1T1*h7MhxcWe0V`KaC&aOJ1oAWNDK~%qqBghc zUC#`Y{uT=YLHc0dks_2{Xdom%FJvpfSh-=8=iTKuhVP%aV)~498(zZN&ELpmp2wC zm&K-lm<2P#ugu{qj6);Ezd|-3M737yv8PiUz|D7yr_;ttRH^cc?6R6IC(}WqT)H5 z_gteq8#ye(VEFDtH4MKi>cKtx{BI0OyTA53cPVJ=={|D-5!K7t|7Wb{8DT|R{`Z81 zlY?76K&HIW`QA4;jE2GMO-co=dGlz%@&jdVu{V73QIyy(uR)kp&$yCXaMIZyN-4G7ySJ zsoQW($%XXs$iFtG7dElcKwTwP`aoj61l2c4w08LMDZ1trzwPI%WAd9hiPeD!m(XK- z9K|u2LD~lrzVQAO<`-}FTT4q>L*I+R249O~3~AXux`Lf{YerRRdoj`dzWwe|dajT^ zI|uNH7P*4lqZy$;WTyO#`lEKs+~(S^KJzav^pTnZ`yM)bIetFPJ@p6J3ve#MN=yO51zw(79(p7PI&ZMFIY_12@<2+(BV{(X-;qPOwblQx@bC z*u!D$5hXxPgD9Pe`}p1|5-m+X*GkP$QA+_HMFh5bYfhT@*tSfpo40B9vXKuQG3h-X zL+tSEoWt?7CS^*HER)rlFY|w*P1Sjs^FJQ(NnWlP1d>&O`aE(YucpUW^QUjWCC<*y zK4fYv*cU!q6Pm&54;NQ3bF02u97LN2Q`z9lm@rufsRu6UHoe}8UY()AcVuK8s=}yf z%d{raMJR)d7=kK(j_XHJ`}p|f3JON-j|kbb2$90({SfKgx$A^A$&H*tcq5F8nA5Dc z;mm4vA@(Nz4l8S_FGEgTQ&gZHf?3rgMpkQ`IIsy0@faPaVu^i!%)=_12`&Du{Dil) zX)aqpW3#;{%pK~WSK6;_fK3-+h2n5>68%|YCYB-@?G@=#ashVmy^lp)^N-Z0U5>qD zn2gfac>ToPtS5n4yi;`12cz(za<>yrMRDcJX=YoSYEN@)AD#=VqyUmrR7&Z|u7LzR z^m>P3v_RDmwIq)}e0^?0?z6hY2ey=AwS^KFQ1qCq2;T0b;@489UTu%))NjEv6tm zhKLtXSrhEY5Xfs>R^}DJ5sI^`DvpxcjI#|tleOR_bg?W##B`Ni0&&nH0&NWT%aY92 z_;9bb^~ON_X@`<@D4|PL{%+Wx@nf^|$m3ymTdWV+Du{<{Ll?jFEzjH*SAS+&=XMgR z!jMYUW!~{=np&)UyI!QlFBnIMdVT%;{7PPwqbOw!lCAq;Cgw(#Bgwa5>VQ&9?m|3- zHOMVUXyAer)FOqZSljQ`!m_kUCt%UDbO1lUjPZ=$TnV?39y(V((YAKA`tI|wtIr;@ z5B@t64&JsoI$8m`ft{+q$;6S*v7f@tSq z==-YU3$@zU&@%Zslz^mCP!m}I=mpLLe*mhHnN+l0RM!rm$rD)Zk8ilb zs!(LN{uB7vT9etM@_d1ubRVEXSyaF4rj0Zk*qewS)POjvo&3>y3#067At$%LZ^f9J zhBdl@LiXkZ$qgS3`}=usO&7Uj_nakbWswM^rQA|qwf)V^jRIk&($;8g_jc0OFI9_w z@7?>Jpl%<~g`e4+I zX!_c9>&_OF?MLqrPKF`}qM$~wlP#D>8>tfIsy7M2pi+UyACej7gZ$+yq}*qZ81npR zNf4ED({&!a!`R-* zd}8C(6rKX$>>o836RsxF|Ed}D^YbBn6brf?L(DY`#+A}Y@?<7T8_Zd|9V=A6K*E5?|i{CWDf*OZ?=K?Gu;i;?Q|Uiiek9OqvIi25-<{va1U^&}fIvk6NUJ3_ zt_yGW>uUNiJr08=-}6xRGO~9DRz|jAnhH%;i-*GIy-Z5F3UzFD*5<)4PO6o?9g*RL zr4SC?imz$X73tr@3=Gh!p)E&YdRX7^zEhE*a0M44sa*7GX(x=<3>}k&cp315NJ4(h zi@ZDjFU_a7)|G2ni;lxAMXt^9Alrz>1-O;9G}2Z@*Yohne=^+ZRNcMU)P#%r$>0kV z?7y;8ywg5DIa#7eEiDb0WmmR;7a0v#la##cF%`Psq(O(Om%`CfQScl3_TJ5Cbsn!7qcqWbdQHQU2K`JiXX9wi>F=0 zaTX#~>lxoK@=z%h_kh1StD;3IG1YsXnCuBdhX(9(<|ru#TxQ8C77}8`1u95QBGfZ} zr6j;v6D&*?qc%pQS+H%q0Q~^9E!!stUVeP^c>&Lm*j&S>K`G1yz2F{p`QZMv zuw9#VL#DrmKMi%1tqh&JkjL&>_~L42?7zSCf#$|3b7M@ z_K_`QpX5_zJZ-t^BfP$5Xj8V04rWNjid5CLvsJ_WSv-@A5n)sA;BM{GWF1V*9N3`o z4W3YV3RB%r0^gADLI+eNi{aYUu+yjC7CV<+QWqF`rjnJhGgz9}*U0YbjL}`ldeV97 zO}9v^#PvfumnWJ&)6JpxiuWDFyNoQ-6l@6iod`J6h_*KZV$`UthBwn@3eZ>G_ook7 zbaB5%XcLsbfRa1e?AsF)Lh96dpEmJYRw^$y(K{l~(EN_X2u$*^g6t7sEuv)Xn0H+X zBmY7869CS+Kb1G-fs$EBI)r~D7Y#uF5X&Zf&LQW0hh~>E;X7BLF{c)YwZT4pv48RLqE}U zr+^})r{-%HQz}cN09w}QNtV_ClQa?|N32>0vr%j>7t2WRiT)IruE^fW!~yojyK0s= z<5s?kk1wM#k?}?l83A4a0-T5pil2n8BP4DXV2ekufS6THHJ8NNqkhsuZynr%TUAw!l zo^}!zLmIKO`zG$elSK--U4!cilVO)^ehJU!<;j&|2*|7&Zx3-T5QUPvfB>jY1*h1s zlRcfP*LGcd6eb1=^?ZA=-{{Dg$l_IFNV(*g_?c+N4wsXltW^WwMQzRbCRsws=SPyr zw-Zu(B-PdEt37|MM7v3WDKJDs7)|{p6<4G+`~E~QAeZ1HMn&sLx{EY8q! zuDsL!AFBAL(}=v0@s<+&<+t2 zZebCJ*_b8JL`=@3>4a#K7X?L_0sZ!0V`k74wC}&!eOPjx!uv6dh>)^~VHL&10w)jE zjiRJd75DKW5(g)%TRYI%<{;EqO_2aJrL>HU%!V@{vhJU_F#6M5goLrre%ka(?)=ZF z)oXU^sG`~uD9=v@7dHr|rXSCyNJrO=j6ZK9!H8ZOi8d29?OLVltk94N`lWKdptN#8mQ~oXrL-BkfEBMI(U?EOaPr-n2ye!gNyb1-} zur%+U#ugpqsp5kb;EFmj+|Hk%Rvg@6{OqMqz<4|umJzMLRusr#q5ij!0uL)}poAmt zf&b9_mG-W}aD$eM+V(y;84)pDDnc8cii1oOrYZ(<<`>}J`_RT?nCcvk0SkB$$?);m z6_eTg|9UjjGjaz!022P!s-(9qq|zkK?w<9wwP{gGF9;_y$x7NqKW*LNd`)(=Cl3`H zxG|f5(O(szmSQGh_min|Y)?w0Yld|6gsEa8QXx){?ii5vgiP2O_5)6f2|fpKb;3d> z8A5nJ#*~Y7wYsu68z=YR_-~x`oSZe_t~ub$7c@D^Wxn=PD6LfEa?sLtAWQf<#dNtj zu>P!@fN`$&?$5GZEIFqtQAdBkO!<`J4eUB$NpZ=R~)M( zj{3SjT6B>>yPkU7MP1n0I6H?&K{$O%=f+Y zT{)}-)U$U34JtH0lEHjR3{_h=$x1({m@8^$DOF%Rp%?2HTwy8>*xCQ}4_4rwdTMhp)!|RS@`|>i&2fMmlgz9L(bT%ZW zBq!Q(YfK}L+K}*=$uSlK)hd=iTn8Yefpiv7-88&Y=c*Ix-=D}>rrx#w; zo)>kw=6dP&!z$}&_!b^NZT&_!gFuc6tAI&gB88v|ng7{OK*9YZRyL~#r;}9Yw}joq z?aAsgaQ7vEcR(6@TRE-fl)WW5z5rw@oPLG%c?G1GmY>Mv5-x#NBT)jCAdSlas+>;Pe!%97#H8n71n3I^q>0I*>mAl7W+*?m-iJ_B=9; z(d_E|gt^;$`EI}o)K00px_8Cbft>J7M}DlXo)L!9EciV(fsn@5-zA(Wl)OJ}y-K;n z8IBniZ@-tgKI-)n24SXZTDrOrTh1T z%P#^uZr205kODWzd12fRWccUPitEvjm~Cb3#0c2WZtU6VhntIz0myH|4&6OZP63Q6 zKg(!S`DP?nFz^n(vwpC$r!BR|D|O$mi{bAHOKt4~>`K>GfLE1NAp|=u5C=>-oP9#* zJ!o|U34V!YLjj_6bj1k$^I9vb^Lo;V;eUeH4H6@kEND+@ zY?`m1snu~@mp%LUarNH4l*?rjt*NTiLv)11XbaZjNH@>r7C!BQI?x!GYx@I^PEK$* zuJDFFm-Y|*6K!p6IJF68RomRI7OSIPWiNf?y*JWz&zE_XAM*LzUkBA0P?pH^Nw5ek zo~fdYA*Mo2mB2zNK7@+^f?|;t;U(4ham}l_ddSl^{uw2QP1*A0(2>3UM({Ud$Bgw3$bXo zwbj5{dF$5NC5<^iwOXA==E{so%6N7V)*`G0B)@m>hY_NUnn_>iU%&JA%WxHIkMkk) zSdX%BkwjoL(i)0hn5;c*5O^RICr+He_XDoFdN<{AnR=wLiN>f@1i~~(TvO2Mjw_E*DLu!*k9oY| zFZ;RWz;3SHR;Jg1G8$p(gpnl(%0Q|c;7W_vsGM+1ZG`Ja9nIn>fz=v|L@G(Wo^apy zUCkFqpwICzG`J8_km=Yi6@_SqR2oMJbQB@1BF5wR*>Rw6Rj=z?SRBGo=wSGp5ubC=s3ym z{Yr+sy(9+dbFS*}E z>fHDDg}rxG=QQ0tJ(?K>f<%;rKnM(oWP^S1J?F8{x%WB8KDH0o23r|LvOzhZfIx^~ z49C9rINR99Hedye1d@=DkTe!blY2T$=dQ5#{=)rZS6BD6db+C9bdNOe^YkN4ch#<4 zReOKyTWh`ReL)yUGF?Ql{u+IOZ;xKz;z$}UtIJDzl{(9%7d<2UsT4v=(p9jgHEDuXd7d6BbK5VUOo@oL z8y}|mnt#Wxu-vv9Xu1AAw3L)m!(;+R1vn|Q9Nl@M<_=7$OoISpV#>0apBFWM`?Gz# zvp2gwx7_&eY`X3qT&{txTOL410ZOEJTPEj=gua0GG14Vyk?91eAP+j?sf%92rt2Q1 z=i~p#`%diO_6K+JY^)eJ78{C8YSmguEs;=I10@9g&?y5WyOieyUfz^rH&MxWkYqiktvat zHoY?hQV~{WNr#4pc>dYvC{9kH5#*x?=`)gDHB%QW-%vUsC`iSl`^MOIY=7YQF`ov!YP%eWa zhjJQa1Pxx%q$G{rlGBz*8njOlHo-fC@F1KA3q9BVlsHLnUB}aR<4?HxyZ^!G|M4fZ z1v#cvBa;@amtX}_ho~@z0rrkeaQxLjSlQ7p%Rc9gUB~B;^24A=veQ!{F281c+Dn;6A)2^+891ERV+7A zUCJ6)>oty;u*~6JXQ>PJY6bJ_ZoGw{B8oCo-kq79o*_aBArLMr8B4$-xZu1OH~Fm| z6v<}U>miHZX;1x)X0XhUcvwzt2hY2#=3{5(xupbe9TJDG$gC#iB71i2=0JZx(-V^!!@VMIVy(rj zf|mN2frp;m#qRME(Wmc2*aU42T~|JY-2i43%4MIC7mD5egCssvz{<>2vg`fnN%-bZ zhWXN6&+x-%hKW@~zNwYLkG`4lPriZFW*eYkD_xqgv`W)gbq+)gbD+c(v{7r zs7e+CSmTK>wBGPj06MR{msj5WBVK#czw?uwgG>Wn2bee|c3B%_SARcdrHrIifW%eJ zWURGFsp!3F2W6>gxZxgt_VZm#6cP*q;~iRL8}+A#ChKy$cd5k5hy#=B->*G}4Da8Z zXW9XJ{qNrm-9tZ8Sgkia|2RFZwRhdOfBEZNaPCLQ=ks{)3B#}&)Mpg8=4S0M*L_Ry z>5sm&$Z!kcy7PXkV#8V+CQiuZa(L&6WZObTAK*m!9 z$t01PCb9(@uiAmt5rI!>vIVx@@IzD(GEfeA{G)H^Udr7gLm3H7`mFMpc zJ#EqXki<`6u}Ia7wRwbExy9y6;Jv{39OIXr!s~9nmz)2~n|OD-0_B)!%+Xr;__loZ z9$c=2RD_h`GMxA2y>>~~*#bT=P5bvvy$KZc5DH(l#7$6sra^G0#zX2ExU=k+`} zIKr!YI(how6vk$iqr_WsR*;h++j{amFy~72fAjHVU>oBV3SXvFg^?6mQ`S(CArNWwHaW!-{)KZka;GJvQvKSOuU@jJm9N6E_$jAs<3L0`b z(llAvle&`gvDct%PA96wP(+IuX~ic&z%kC&wF@c=K!!Vq+e@6gqqRG0)P2@2^lu< z?8qdq=xWZ|IVx+pd8shY^6X#Bw}B}_ z9)5N&+i!l5LK@?=z(_EFlL{j|PON`lG?xzgBN7v>)R2X0pIGM@pI+u-};U!wtQ91DzDLme!OpT9o zpno6z{rf1DO5~&PknenMK%bdLaLypf%Kp|nUcEWvQS2No@yY+|EldepHnySi+52)f!CQlM35J9? zP4L3uwIq?A)H|GzNEDNool5hy_tAXqeIzPJ$$BQ^l)+0*BS{iWTKoN5@7Qwf{Q&&u zKYNn@`A_@USJdpk{9Q-IcDQU(NMZv8Snq^*K32hPZR6v%FW!kN z3BoYQg1GZpskpL}TL{O3`Qqs4>c*V-GK}yH4i1u(V{Q?qPnD?HC`Tv_xoCDW$5axrmar zrEAw34v%z(&?{7~iO0`*Bd2}!LH^>VCmAob5d=+m>q%|q#HY2yN{2@fsu1TYlNor7 zO%Xzp4+B)?y0&3vBPu*7pJ@kl-1r#UhZU)`8a-$YMg;U-_W+<&Q9Io?Jw)Uc ztb&2iTEcrrA_AU0IL%Xolk|3G+WpR0c8rvv}Eu)z=` z@G{6Y_Ab*5LCQ*X$sjl~qm^?jhco{MpvD?lE56oRLgzn!!wbtSgx;3=W=J6m=4m;u zI!aYPAD5MD7s9b%zBqm`4l)Yp>g!|6_Ty>a)Xk+Iy%6I(Qfq=Jn-8t0BrCnEsPzdN zav|0v3?4YZ{(XBG9T~1}47ApVSb)w3y?^u_v}!;}4LH2F zXfIJtA+1N(HMq34aNd&-LdHM+W|YX7)H{bu42&D1Tqi2AU@R_8uvpM4+l(3@RcNok z39L;K!lSfB5o1c@w0`V+R$G zLXf9WiV2SbjitN_h`r=M+4ID}2qTH-k>L_H$&~NB%k(9zbf86LO^}o}emCJ5fT4*g zQX%lj>WFM6O65pbVeEA&sAsHtty%aBnzJ0~9{Qq~vqM=*Ag>c%Z zI2O!nLkNfyLl{JK_4bfj!&m?G|HX}E_QXoe^tT1IHpp73O5a_glt(E+oW=|f4x*Ig zgj1Rb!;l~d79=tXk>%S-QbvbOOqCqx{^N7(dUA@QY$TE)-W$A4Q7F97WQw&ZQW>0B z-_f;Fni8d1^l%jo^6`(o1Awi!K1n=1h0>ZtW+g-;B+dyi3J)kHu{J>}j|wHiCYZF$ z$fw@>g4gO{ipjDdQ4s_=f?R~JL2Pq4jB_L=MMY7@47Vnmli#2l{<(;RVA=`@8hLW? zAiF0f>FSJ#ynvEH>k#KXt}@c*aYz(z-n8Clehl^C4V#Ywo8f>N(m^z0Su1YpN zl9->VA8BlO#>Yx`GeHn!?B~=}UA$(3!ps=d42}i!`tY_^D8*$`>&P|a>FVyLb5j>u zYZ8-U(pk29El8OKWN%WewS-y|1ObIYf!#ZIarz0}l*?soWivKc5NKvM4iLvNLMwi; zPqO>K08_DL@{{jCpm46D6Yo4)Xe0`pueimnFLI4dNDn7{=0}iPT0j3No!9=9p3nXS zI~@}wj!-}#vl60l79kW`MvQ;rjRaC7z05T5aX1q*@`>4Ce*Xa6GX#J747~r0Q#ih} z3GEY{GoWjy*xC0eC=?1PB?+{`#0gr(9;2P$biRi^x#!(8YyNIw3+H%Jvs@i(L>)z5Tk{(?lW5GgVwjQMJm+-t|1CsR;rliK2+4T%HZYl?emksfzgMaB;y7+1SBrUw0~fTeo7XBWIe}I=p}! zDX;Er;i<7{_M04k{@_l&@+&U~p#Ay>Q8h{gwHEJM*Ke)o*9;Cd{N!sfbqik5Ed}vp z%)sZ~%%*F9!0_d72Vf$B)}Vye|v1t2(4iwlcI=G2|9H&2VLx)*1Y}r4WH{A!#qq(Sw`Xlwjqx) zmIj+*R1JCO8uy>BaT(050xWo~*EoKy(dni7t*`j1UF#mfa)SAtU;AUyG)32uft+*R z`89(%KwDb}N(HN;UUszOnSp7LGBdXz>uWbOG|=7KM|XEODu^(Z3wdtFGt>K?>2(D` zZS^ga#O&VnJR?IxL^^Y2OOhBZGUFFzEj#*0F+}V=IK|$B69BYadmnQBrN-AB%33B1 z6O?_KwySE}QSkpvT`l!{Xn%4Gmf+0x7(jvcja001BWNklx}-#;)4I%ps^na==TqGV>3lZ=n9-w7YXvaoXsrjrD%H94)p`TC}8 zRuRjIcdH#g>%OCpCeqya$Y@5Ss*#;91x-yYnShB&cxqzR4trEWN{N%1hLV&LV?9D? zy1TnMZtHg1J3B#Y;?z{j;xqr9DTjIQ>k{^HCSjm|KYMoXWNLB(tprMVyt7E}2%JX{ zGM;E2-+hpO{;e};yY>fJf4Nq6`657*7UY{k!j6zA58a{QtmFIW){ekVAcBZULt|(# z=`=5Ehf`m+l~-Kzuf%p^-oLAfKuAPI@Q7%3fghSoLFMtnA(bLEU<{O}rhtyT4~GhWl>__t@%*z-laveO!vJqnyh~9|Ai^e|A1U**{TapG>#+JdFLnr% zATOE)|*f-x#o7Hg86cA`yF?Jb>wr|PTZM=8N5p&zwI6#r?EaJ@3>DoIDEV&Q=KP4S|+u>v2}%!fb7M`oI{YDWu+! zCYDe~gi13pK0m6Kq>sQzLT^vI_cz(QuFbaP zb~7Ihu7uJS83hP02~vZxjvxq#q6p^&)h^h||n;LMg@ExVzM` zw8q9pCX*E91EkR4ExJN`6y*uvr6VQv*ce2mn8Zj#l*bp!L{1P3iLnlWKf(b2VuDJl8bKksDc z6XT>(6MB!Z24NIZHsDxaH?_6Klyx*XK_nXJyzN=+gytWf_&JTyiJaWqPDdz75FD6J zIXI^H!P5ggwtJM=zclPXZ74}fDUsKifQ(ld8M0@5f*t#ZcvEi&Qi4lL4E68jz{mlN zvGo?0d?Ug;8oVKIi`;nIolN_H&z%3i*88m;1Mrz!|Aa`#gfiugJKsS2D^3Hi ziIWl{Jo-tWb6b{ke|I>h`-XYPD+%Ub{K{7`CP67x(Gkz2K($!@+dDX30J7e&wT^9@ zCDvMkAYfo}jBUMHFu(2bWxvGHg|v(yp%@o4cDomxyuAw{1f?XURE`1g$g1;Mb89^b zgadna(!D8%cTg@TwRKb10P9_~6C=}yHX7%jP|Z2>8h@{ar5LO%gxhYtZPC9=DLLod zbCz_>eFvv;KI`$C8cg|?FRZ8z4R9jd0zXq_c3<) zTj{#tp~c_-8f!@pUvfIV*WHis67MVbW5t&qDHy!yjOt^zUvoFb#G#`mybPF_D$>v} z+m={p*Duui`k4!9Nh;$=Qf8LC0)Q5(~RGM9er!!_RRF{}jF-u!hMNeD$5d>JPUCEr94 z1X!P$?7a2uZ=F-JnOex+r>yGw*Na0e zcjx?W*Wf67+nY!xr%BV4Kud1>;vJaS@}-+@1QwrV){#O;OGEVHCm60LK6~3&X>=Yu z#9rfwNPR#s$KOE;!QkK^eVdP?TrMvdjMrP5buQK--X4;nFG!8AC3LmS41J}UIlygq zd>IxIdRdN?>%N2280$evq*SCec2H6z?5CYy=veYg9Tj+FV45HZvTMOugs(yoG{Ge$LZv9@b;j=Y8mV(kUzD{W8n5{=g)81n z=QXnxhK-n^duFe%nLS#dBZLr?%Vk1c-^S{29H5aa-pFUavx86l@~gQ0nj4Aoin5f% zi6aVfhrIqmFw&u&CamymM!aJn*TtaFSFZ4RpFo;@ehAy*{T07eP zTCsz__?53xDwPiV_vHlh{UcME6seL3sjziqdD_QpYFhG39ToVqJ&+4R6e9DIpCe=F z1lT$@bLBWiC{2537n`>nM|)>CGRzq9z79^Na2AEdn=&qmG2U_E1s8Dct=|G5HUgzX zke(z-uoj#Xcw>>Oj_k8ydLooW35mBR^HcVgG(L2*7@CyPkDiW1U;$HyR`goKRYZM+ z4lqD!4ALe-f6f&bXHw8M^DN;BhCCKUQ`|&n&WK5ETsi`T3hli^M zTu@(pJ5s`FYh4AG>m?eqQcO=z69o$ggyjVDr}qrtg`}Jqq|%@yrjCzdYiBRI4jam& z5nCES7>7>`!nhZdE$g{ftdJxY9Ez5XPWrZOqjOU)B8Vu&^?Ys;;XKM`?nzDt{Lz=b z#X%~)F`WY)V!R=-2E0Uy5Gf@})DGyr5|oAXNC`@0n-^(4g-`!t^>P0)29fl%U;QJb zR!m-WCh9QP-;qRS6{!gGIr0rTv`7ifBqugYe)G?M%5R_1!*86{&HwY-O}w>N)0qw< z3L^;VFduv8dY^tx%)RDj#EGo6RimZVz^;)gK78X}0AO&Od*LPMK-N(`0xdl{P!M<$ zo6w*HTQ_yB%6YxiaPiH5#^xZQQ>NryLSR$8(>Sj&US`!`pQ3z13>zLNk)=HeFBqqfP z@Lu5R{5)*2$W!HIz3hfYs{`*G))>5V)v1A*R!lwZmN04{wVqOvB2-9McQ0GFA5TkL z2eyWB0c3jPPDrE<2y%H`5He~5_QpZwTq2CKSZ@&uqz)Ll>~yqLh#KXv?D-Zad^KRG z%=;CAWAiol0Pr_Mj`y{LR2GNDS2DM$%id7)_-hTVGoqL=3Ai$$o8qK4&HG-zjSs#1 zG=A^xFX#8({xbgXT`%V&?|c=%`0_4V?F8}k7||CVT<_Db356h3nowyJl~xZRyhkk| zpdT(v>%8G!MiQ8y0f3}ZH9Gg4b5M1-@kx_CrtA!5EVLgeux!lN-{YqEDK!X{`_&J4Jus(!apN(Kf7*xKE>AdjYIi)W2u;96Ax=5H_- zO)i?`a2I@~(~-Ek?)f}BTai4-C;y1*l-WQVnavQkLpu_guM$VEB2dp1)pmx<#T zQy8o9{0L(mQV66{BwjNbdxlL$R`Mdi*fK&oLKPwAx_=1+HRi3e_aZPRE8!|K@|D(- z=H{$)+NK=;)-SQ&NFh*|)YEj+gXGfnC&tZ;{yCFklWBSzJa2pT3H<6ACvi$E1SBZw zL29~AYy^J_BdO)!zA;M10PFuA7K8Vm#>PgRa}_|yc88BhtqMQGM ztuo@)8?Ph`8px5W(Lo2DLhK!7DG&`gTKam)x3(_vT^<8KDlAqytjpFH=``ATK;VSH z3xV?rK}N=P61>T5noXLJiy~~2lBSk_{kMBL*`8dJ1h>>V@0H+45b~<4-&&OgdRy|V zy6c&mnj#8x=Dl4mt~fIvn$Fyo;y5M<0<_koCNmHbst&(snJ17MSDfOp8nNkULSDit zeR;HyS!PtRKApR>^mX)*%SnvT0YMOAoF#RhTw^0$n|kQk+*kAYUMQ@SB-Zfz=YE*7 zas2N~{yRmV1@zI&UIijko%2#)jHCU^N3-2|o#rgwd#p{X^0X3AQt}^vcp4AxHoU7- z^X@)KZHkOE&iia!DqVkucoN6tLQO6TDSqmGJazH=Ipb9)^0HP%PLP$2MI*_?D9s)| z@bVU3|B4f6&IP!mpjG6(Czs2S%jK&74uYUc)LhDO7Fy#Rp1q%b9|bFzC|NE%_ak_~ znKJcsR6g?2D>ApXKoPaK(6ObDsI9s76OZ8qxbB<}lHl-_QP|(T_)-F!qFjm~Yx!9f zV08`~G-6a^R;>{kuOf;fF1X-ay!Q+Y3{;Q19&P3Ig07ZL=d8_s?l@7cHG7^P@Fb9sWt_QrVE2tkD$WDLlRisY;Z>!AjVJHTO+Y!+MwS;mtX zk8bbg__j?y2TL{i{QiWMm$P*~w9i$+?*NdjT`?CoFU;bbcSdp~|Qn{RxO z)G0y)_#Bw5ERL#7)49f)JL1T7lB84UoMhzU*_rM4-g;N|cNuf{;51^Y5%ae#sA5R0 zK*ups3tatTi)#W)3nr0_RLcLq`sIJ&+kNk2vNQ^G5b1V|DHB>vS{R`0dU*A&X8Iz@ z-t*3;@%jg|RzsHeWE(fRF=w)1YPd}HP{R&#I{}IC%z7~Ma ztG*AShFW9g`xguON&^QkdOOWmJ;c<1p4}sJCqN%Ev}Um{^1iAdr0VrmL}PmS8A6=xQ4z3;ID6Q7)HJN>M5mxaH}QF}v#k92ueZ$I%R)Qg-jhe0TgX7$JLLTuf3Je^(Lc%?|3M}+|hMUtc_AqicK_nwm1Od7?smGoWx zW7@8MXm#AwOo>oSto5{f{!#MRKFF5O{Tti5JNdh34nIY)Q4oZJgO|OIwyPfiz=-Ug z(^0muEXOfg=OAh$Xl%v`!FZuWnpPG7pZzR!wQmHsf|-`WWoKvA9G7NfmA31jI)p>B zT=ZV|7zj_-)pt>}+2UUI8sR0OtL@e$w8k3GZQuGjZEaca{H5UXw^o>mBi6h6?3JCX zPAtqk-urCg;6Xc>Sz?Y{FQkFReQ~1zpH&G~idan6N#)YUHN>qaTM#8|y-%%=zlT$buI^qsIyd2g zw{KaUisVZX-e-CP-e2@F1+BP6&>%H{X<9{Qi|h6Hz0F+#)tcvF&LRCQ@+?x z?}l!-X*L29TamWanwD!G;-L%Q%|+jNo*l!EVy>0abP?|%ZD=Pa z6ptOqe1Cub@%J!z#Tl7Ukbhw?_ktttR<#&@JOL;4cF^0JLz|dDWaQPA!=jYHD$S&i z7;t&Ud>-R9zkBh;bsZts)J$i04^cxNf2>NkA~-79xu~xK>%D(LFo!I2pPrs(czC!v z;yA;<$T%~$?uzQ+lGe4rN{_qh!ZNGDjuC-s86;qKHyz!E3x1cqy48V$e4;L=zXD5)0J1qqk%M5A^sIEIUR?h*+DR^We_`X#eEhbY1f}%2EB<(1_uL?p99fZD-_Dzk=|NRq>XR0x3ZX zO-V)!lV`~1DAm~mzv-5*)7jNcOM5%El3D)yffwNn>k+`6|8O^fj_^((1C6a?Y;Y!! z&m>nfKQmhY!^6WA3WbaS=`!M+5F#`2S|ScNdbW~;=5S=qh(#mgwvhqX%qV$MDbd1!XTk4osjy05El6i+3*fbVZM?F( zh0w=Xmm%?J30-#U{E{&5HWBctpd z8smXWK0w>2{u$ZOMadcRP%XPxCWL@Y2@p1h9phX7_)%_2UrBd!p1=R~j1cG31RZM9 z6)#r`<+D$~2+gDj8S@F;>;iqu2u zA>Y=<))P)-)8@_SAVLU9QRF#ja}1e~0wG>Fl#3BI&2IP=qKwSguSuD$Z4JDBdk>wF zL!>dj&a&TnLdqOCL0)N;$s}w|zKOQa{Tui0o8Y*szsFxcKEU0(iac=12LKrV?E4Xo z4HQ0hTD9B`GlDJa_g)r4-&OacCA@J>Vp2bx{36h04Yj(gm2(^Z5je;g#L9e(2APOtM$D z@U9x8u^S!#vKP9UL& zw965T04XIJi^f4v%MNh1%r@HG-=J)XU?wq{Pt^q zd`MMoCgYhwz2v0j!rR5~zh+UUqqm9c-up^AoZ$^yTlmI9JNcbAoO0lDIt5Ng7>(a2BZ?oAo#+1OuEcC$QcTtnJyFwE8=1EE6cMb@5S$5HSf<0IuE|cb!vZCaMM>vD8lf0CDw=*J2v!jO2rf6aLwZC|rUyV*g*qAd;Y~x3}#xd5f zvH9uB5vM6K3@|R!X0Rrq#g}+(Ur+Th|7T~+^ZQ5Gv1gDc_KvV~GRC%aFn!rs>v-mM z!g(I~?bG<){u17M?mJkZc_>>~MnC-yns0mrDafQiok1vxt}JWbA7;S*kmFZ2dcxpE zf|CLx1Z4sWK8ICBz>%i$A!YuChQ$(=V`aMKz*@_*`}fnaV-p95$MN1A62xa_&Y}K* zD}=xr!_?Fi)6>(mc6Jfl1WACLAB|T5_4L@+st*sV5YQLQ+E-AL7#|zsl8aU+D+hSy zz$gtt1J;8vDGq_EsPk9{O02A$;=M=efO0v;$c;^)su#a@BHX)6W98bYvLpY15!yaZfBxut^?%FA zR`>550UALlQY$xnKv!B5Xhpf0kV*(`iIJ;5z?UBzsy^oZ$49iD&^Nlr1g)H3LHur95EI}D)LMc zF>ad}w-dC48dol&yu-@?B^B-M3zgxH1@e`^JAn=ZHgDcc|Gq)eiIEos@R>4s{Q)uC zypNBMad2daj-E}pf~m?yuT(v0xdD8&g8KY;wdz;k+!xq4zBHw+&)@c?RaaRGq8vzt za}Mj76(NwiDg-ls%wS1#)GE^(PgRbhd-2@RF4sURm)|z27c+L401xk(0N~6mIrbMl zzx%FJD2jksMi?n^QXr&5-~fw|_4FzobA$Qp_nQ6gz^C8BNj_ zsVIvt_Iu^I8SKmS}uy?G!nanSJQn~MWuCDJs_E(&JVgq#;u5=E^Kxt>|W)O*M^F}m@`mg`1YQ&&K*=kr-~ zNW1q;gcm?zB9o*!>nB7nb&=v zQ;+ZE-ch)3_c%%k{{6ZA*~YJqIoS1v4?=uWCX}8uHS9S5EZ+Ret;FdRQ96!RK%kIO zgf5M-y$Npk;d3;*A{{qByxyl@H-7QBTz3CjgK{xFjqs}NU1(>)B$+OO%2?*cW$iRw zNB`ed*YwJ!&wHHE#3-J;{M`)NkO`}>QdO*cHBIf^v~~9I>TUDPg{r}P<8K5vBBCI` zS&!BMo40Hy%r#ZXZIEsLXMXAp>fT#|Aiz1p=;#QeqX#qHfjXQtmx_%*o?EqmUeAtX zG5o>r{myEg3IO{@3YlkjB{Nq_p_Ib;O!_ai4zmCuVX0*hYf}>Iuqx!2x>xJ$*B|fi zg7^p(oPWIYAg}3bL8%T6Z{j^Rtsq;SO>0eJW39FYRT4klxpX=wto zp`EsTz$L$M5>3i8dg1!}xz~&D?>8A!**mmNXjJgZzD_!u8#0Ev$i`4pYcbwcGWt5C zJw+w!s{~`=CBkPagj=q>n<3f67$FIo*m`u-LhGh2gw1U{yl;@%C3OCOk722hQf2`h zNn3j-U7LCq&B*IotDQ&5?6KuSkpunx;45p%DxW{p4(dydi%Z3dufBRp346!N)t@7Q z=lc(`rL&PFNsv0IX5y|=LUqhCc^A51mJ-y35Fj;$WaEx9EEn++NKjLo?VumuGmh|C z3Hhm=2YLFy2&G)sBbCOWokQbM!e=_~BE-~SFvH<8^V!}0pZxY&^fqc_5+hYW>?A}H z5B87omTgCe4Q3!b+pfNgrfVJn;HffrD=EenCv3K%F;k?a3F4V2sXQ&8y?@=#d8zO+ zQ}l1pip=;&eu=c^M1D9K7R}*FD%|Vl!}PGAk0N<46m`;2(EpCd@f|q z$KJ*C6{iEx-#^ZD$zTITTRy~Nh?6oh$}^F`C%*eU6GeyBjWv$Gv0#j;@?MlpXbiLO zZ~qlcRxwNnk+EKDz>92ykC*g+@?F(Tef-kb1F++=|3uko5(h#>v~TL=9k1x( ztiGmdf-s9?fqW%M(`<@BRKDX)J>3LBP<2L|3FdRx@mdhlXPW;NzlMp43DPv>#ICkg zW181fYClrtcd>uG#vJ+_OS-wJ63FHlWGv^6__)OJy&a1_W+~Wpa0(HGSno-VsotQ6 zef=8eR}LEqlOo!dkt!rn4U}z4V5WIZUnf5woMa@|!dqHb?JaC5{CL=)(`iInAjmf| zohr1-A>#sPY;WViy%Q@se&P${mB!hCH*Ra^in}KHn+JFB^UL2%&-FjVviRs@t((%s znz2v3j=mcoq5tA6;B{a71BNbtI{^3Z$>!|mSDI#yt7FSllSda@`5%9C7qRWdD1#zJ zrVd}j!gH{djN{t)jn}-I54=1_b0vwKG$mSeo;!9-@n?5E z!Vk~M$Yx#FFWyIA>+`QQhn~Z+|B5sD!SkNHA7vsBxkO?R&P?MI^-n$~zo1^>x>_T#iWoVvtgj zr0J^VS3WU#>(EkSy(fuFNFfNrkUhi0c-{V@4dwu&Qzg0@1BBIB>t`Lg>L#TuenCbe z04MM|mDFU3~Ggwb2@NzUHu?F6*OP-5L#=(VwtyI|99MX>3?3? z!8ZUlU41{&N(L`~bM<$p-0&U#`>$vH@%>4R2qOAKwlTW*v8Q>if0))!e;1K!MspNc z#MZ#p-Y&LW^?j^uM@U7Qru1C*5E!-Mq&YO2PR*D2udT1)p=T$^*@)L|%k$9g zDOls4=t~U_e@HttpU>0M(!$8_a5W(N)Bql>>SMXg5L{hl&5GlgLZLuoV7&dd+}dZ`QqRhM!zL;?=&<0wA$A#d?PhBI;_SEdph;a;%UlBWF2>(i$ZK z(ln+Rtoxp5P4VpD7|ky`j=Xl6u!gMg50vDwJtM4iPndU_GJ>KEdFJ3KPxTKlZ4G&) zF|k-NEl*2J+5i9Sy?K-*SAFOExl2UkQv25Xs%{~*B!pHYB*Y>Zv)I^-JqG*D_<0QD zgO|Z9LTqLeNC;Vg?HQZr^?7{8_}K@0Fc^%4Kr9kSMiN4Rg_dshzE#(rm6;K7m-k0x zR%KOJS5|jcbyc_Odrq9HjEszXGvnU-yT9%GbEHlp!w}^xd7HAOV}8P%r6hk?Oh}=L zrKRf+zDJ}4s!~CeB-=jpW%7lHe-Ce(asB`I%U7}P_DROxcO!jwJiJW3UL1Ju`QpBD zb{*Tmqx;7w#W5<^Mru8U0DMx#wa5(-8O7fBzZ!r)fA}cq9GC>iVRHgmp7!Z_@9|BU z5ms?3)Lkaj0u>R0LZOX;fdR%xGgEm!2uMdGtuH6HjzcWm8X-wcZ(oEI}s{j~S5iUWCrCV7&FZ&Ahl@VuKuBDg@xI#S5^DQN1z+FAE%=NO^4E z5ssBB_%P(y%~ufyg_iGcT@{PPD}@q*6SrK&+JfS!)}pm_yRNQz)A zE;CUoBa9}9dMFjvuqW)M^HYz~`Kd>zuJ8K9_bB_2zB?Yy__9|xW4aW@jzZR~T~DE{NNNnWu1zbASzuaeJ<455iEx%mrNW89<4l$&X2jAoKEuV_ z%%9CX_0w9C&orWMK1BHfKiPlmv_3N%&m0>9si`I@sm&&|)*9jENniMMC!q2fslV}x z6o-@^?-CO0A?oC{>zm%rp$AGLlFZk6(V7kb3M_15tz?v|2|*ChRwxqc5a%TZMXD6Bhp~5D$=ExtoVtGW z-PbVo{ugHRM6dkfGmV&Qk4cG4^+zl?IqyRros((-NVms+0J+NRS46$ ztL&XiP)Z@4#8)k&@5=n>eILD_z-hW0#%KSnUq=QZ4uuNxgg#`VJV~2gdN#mTFqekj z_?{Aq(4}0srh_dVArr$Dh>E0MU>BjVOz+1ZMF@%adA{-+*KpS(quhK!R?WC^^PdY)8F6E;PIoB$H&o1;SgA#LKCN)tfi(oFTmTWs%zEB6334p zr*GSZD5Xv+!zxb^4Bjeco6_fc4QFm4Sa3b`+2`iEuG#12!epgPVp7^WJDOfQ7ouDN zV=dOz%=cc-sE6AsoN!caid7P)C6}xnKt>9y6j%1QeEV|-gTp0^6(~fO3Md7O5qfyl zmLg9bJ;vX^VHc^4zz4Y45~z?QS%fl_UZJceFqWPWF5kYEi?<9QFkHQ(_tYOdM})i5 zg1|wWk68D~AJTu0_=% z&N_**mJOW|U;phJIR1f`VUrkiNOciRNG8b4>(XepefVoU_{?tp_HcyV9*`=AW&(Prdi_^z~+1x=?tRol|n*g_%T+)7?8m7>1;2%JATE%H=X?nx0aA zwQAu#+j;8C9?=zs5yD!+Ajjbolf;!twry%oxwiYjadL$s)(aAoqEtW_M3}_Z%rcPe zS6UM~T5FPO6`9irrFi7nA+GA((9%86MT|_8Fug?roe6X!EOwEE-m}M!0_)IW9&bE0 zNg4ZaRtcIAEW6eZ@bL#mc*9lQY@elshr)8`mTQ-%!;1{>1=1Tj!s%%JG^sNFfg6C<$4{bD zbgDS;fsKgA;)-o+d3^ui6kiEU3-iUyQ=d;OKh?Q2fj*-=^M;0-MFQF;!kM=+7p z@`4?4ss3QW(Z5 zwuMxZQda3p7I|a@t~$qSo}Vt>^^&asJU9yR@uReL7I^8#ejYq9(r{IMTulF_FWlV0 zcMptbq##m~3-esLF5;1AO5~%=NB$>2e+2*uWxR_}VaS@>e~3t$4{+x*4Qj3l0xm-`zcoMNM~m_B{ZvC8{x{ttjSWvum=-_ZwaQBZ6ap;;?()PixP`dS1%h_w7d0wuU zf}8%|CwUJWu}DM$-j^||pSJ1mjW1s5If#mtVjyU9o{pQX!Hm(#6?2=QUCVShFhJ&jiAPASUsPj$^dS%I5y%U;hJd+WbrG zIXsFLf+%00948bDMaD}N@(pgQx$?yu39IJ*QZ@NH`+V(0W1jk4g5RH_-I?ES8Y`aK z=qE=k0rX6JK~)IscHQY$fWg$we6YoE7~ zcYkdUrCVP`_s74r%)M`p`J#g}A9{#Q4dW+HaQk2X3+>vm^<#Gvgo~37+w;kX$>nl0 zQk#yS7-qa2<8=;KqsljPjJs8|4&!`gCAEei2Zd>p3=%2{ZzB5TbByfg$OIrUU2!^e!NuN*tg`(u2{T$ z0CcX6G;wIJn);ZWw0Q5(fj|mKOpFaAWue$JJPN@2kKBipIg|`CWmy;yDPA@w9cm`f z2kv}~9F|+|JHpzw96?$|I!o#yL7$PIY|47I0?e#KH($;1_uNQ(zCh?LU6JJ9Q`poQ z5%@_W5fO$taspCsxVi&&_GLNvsxq<6y+1QF{_dd&sFo_6IC6+E9%DeIw2KNl@U(xT z^=fh^Ny!BvzQ!Krq~_q@F#89`Da#Opz$5WqVBN|X6Xz;sZ`L5Q01KUE*61*#f6Y3I z9ql+gPPD%M8=J6y|9-$Br65gX0;Q=|t0&2ql_bDV^|_ONk%b8EvpHzJ2j@J_d9r2& zQYy3#2!gY~awT$L!KYcy?&#U5ShB*A3V}ys(*@Qe7Y5-S&Kazb_v?$JK{kHu zyBHB5RR~i>b1asW*fdY_ZxpVxbCkXJ$atKM-9_$v**ZG4Ao7kEZRtTMO?*1#S67e_ zZ$#IfKVa=A9^&x3u4Uu{*Mo`K6+m_L2&f{}G$oRrKw4B~f^iSUDC9+d@O4hy`r760 ze#;Q4XLN9g((nnwc!G7R%DTXyeN4Ov4iWD?xNK}W1VU&JjjKLd=2tr~B&yH95gI~NBBLmP8PGotd!g*9}=WP~1?ATbSq4B7Xm7^cH zkq3U~I=*-a0&55aeEX>*2&FLIoR)SzmjY+oxXe{~8+g?ubwsVIm?o`jhOiplo@F;0qB}gmu60<4i$eS{f)`@ch8IU9i zfzlc0w+=~Vj%N;!@bs|>ywnI4BBa8J#UZm=#WaM{q}Cv{!a7fwE6_L4Un|(sx`u9T zN~Ka^aPSz`rRYFmY(f}@xQ6wi5li)q7o(l2Uu30e=F@G8d5%4j*Y_;hlc?$fye4B2*x>w5*jHLNQKl3r|oQ( zI`p#}z^4}B6feGT9nKq+SeOR4k{9XTyB@=PN9r9NcRb8cl39?BSx+_UC5Q^RsDLYU z;|kq;_XIq==O}%*JwREl{Az2B>(E@9%;eZ{{_7iGONv2yN4rZI5SA{HP*{M=rWv$U zxYVF){&OoNBG<-|Qo;}S9VbpLhD`9V2mtj97sV&R}bC2eW*pC-4@>C zt>MU#BTP<|vgd6qftE8O&d!$0xtYvu*6xb;p&MhS^2%Ylj`i8{p?gxCbhw~3PU!Oy zHVB&g(9sB?!Gabc#wecNf1D={9;fYN_mH?0TO+HH)P%9uc&8AuIqAu%1bE~5e|*;R z^}QB>CUJ@f_KafF3W2mu`@hnC=r)}MVF(I2Oqk69-6N^#!Nuq1zJcSTA zuP`E@LdcVc1}RNesU`;N#f&(gRh&NNvVa-y34(ycq*Ffgd_K>HO`A|nDjhBa^+3mw zp&>>_hVb4Z1T~p6bHjg5`p{Pz>VmtGa~GzApq3g=Wb8ue>Lfi0sc1eJ1pxwuM59zh zVmt?r4s!U!IJ&KyloT&KLf0r5MOM|#SQvWul}+zo9~;0_P#iF0y!^s81>PZLNNO@d z3X`Ph1#0MxSP4SB5uw(A!wE^nL0L}6m0Z&mG9cm6y`yZ3;MRY6jC&vY0RU0{+^@0* zP$`cgv>;K6heVeS)^#g;k>~48o@yAu(bjy&im=}O|>gI@8PgB4(rW~WZ<}JOP;R{PV&XQ z!&IXl)TE(}HbNJnY(TxBju0LtJ^i0}WKJfo#$!ST7$FIejJ)TCjJ)TCh}dxAUDq&p z^VNJ~&jjDtGlBF~5)orVN!2-WQ3oQ8z{`0LXC<%M*pF}u=_L|@_6p@dBS5(Mk0nMT z9KsjqwRtvKL4R?8?oa-J;Dg_w|Kkq<@XBqOo9NG<7~|e|y^hY0f0Hz+QuyctOWwa$ zA*98+6e%^%3WSchar*{R3{F~p{g>Z>oh(rl@EdRcUB*Jsd*AaG2J8`@eAjC*ri8cP zZGjWFTt$k*su&>+QZ%>D7-6Yeh@C`QPr+5`{`kL<;3!2IG0|AqN6vO2$H#g8Ce7HY zOg|%7=P)j-6G5%eR;UF@d6Le2kqAYl6ys3Hwhn&d&HtIV{_b0O>+il5twT&2BSmH| z7fMn!3)rw*12(~@DaQ^SWMuF-fdFAs@?kh7Z|aA2ZpKlUQ<!Wvw&vH-uf|@ z{G8KDUMpf#KURc>zL-0drGQ(cig4!}-mnIAROG=uBRsZu45d`2A$wcn(HGozU%#MV$r z6RIW!DJd35fJ189y>5ZK3EaU>Un|s^RCC(G?qE7 zUAqx@B3n+**#AyC~hgR*gk}% z=u7E2OeE6`iOx|)gN_hd0n_>50)=pn)C(RuX4yA5!rp^NF^*c1gw}mvflrVwOBeE5 z)AP~q(XKrguIpiIPkZZMaD_t%4@wd{Ln<dCWXZ5QqC{7*3qf&ec(RzOe)@xoBL`ATwjl3lmm&E{a79i4_vxs=Mg zuOYtW8Uo=m=Ed;baU<1zo8EiA_Vm6Pf?jJq6fnEtK50Zudr4b+Nq$3sn>N7 zjx3e(3^K-N3-uChTy)n192l#TNXZr3)=hC%tfF;fX60$ijMVjfe^0KEr@Oz8LR%5z zrY$f+2o@0DlU?sU!aJ0dm^5W{c!crsaqt%5PG8O}l~A7@Fu35LxRor-m#WSA+8qfL z|K-9ns|5F4!OJ%Ys@9V_TQj>`0;zBgl<;_+WA9LfCl3!XX(TF$NYj+VH@~3u##2jF zOK&sP65Ww!*M=Up^>rZQQtS6$;TU@Ri?G%qltgQZPcp50*Fce1UAC2*U%iWWzVZ^@ zbo~YV%HKWAC7<{TYVri-$#I-MH%!BIQ~T_{0QY?731luu;xqO?Aw#eVZBst|2Y<<0 zQK4H_2~>iY7U8K8hAd12n=5L)@%88}S29xdJbm;SKc{R0lF(HJ&H!y^H zm~xqP_4U%(*8@u8YSr25rgy)9plKoM7Daq z;B4Vcedx2zac9=}T=ag^_k8K<+*}Z1C&-D+ge7Ye&w7u-V}<6~qsKT_G8h#RNx5jj z8=e5X!lhM|DYI!!k&8EU(U+6h63xmbpY!Pc{ReQVAXE|?R|wNdZurbMdE=FraO3tq zp4Xn@M8K$ltJZgM_Ye2*l^-2ocXblo*#V`cCueFEa|!f1fFi$J{4XkMk?r`b zPWn{JD49^t74r1;_jBUtL6XVwtbmpfwTQCj4>!}~EzT+OVMH}f7#GMCozIY7A-zHiNm`zuzo2;O^S5); zMSWb-0a2Wio19>+Pq=n{ftT;v%C3!Fls@n(Mt|$_N)Bq%+dQ<#Emili+egsen+09J%FkFovhzbrV+ckFL|5M$din===WqWv-tqP~;eAF(mBv-_-jY}F zp4&KJr>};=R{1JTbw+;SpZCR`K~gt5LLziMn!Gr~LL(Ow}(p-cf9C zqfjVJ3G}*9Ur3COCvy`bG82BilINKO#Vr+1$D}`JP#jGAj%Me_%|03%@!p@Dw>~Sc zyna}BaxK?|S_x)Sd^XE7_cIRb-HhXsbp?d9jEhMwU0>wV^+j|Vl6DulY(v|8zw;_) zAs(*~wDs}A4Lw+yBZnk$Ato2{g|}q>a#INjT_=fgbbj)icsXF{}yNPIjs9#3^NaxTnuSP5U*JxDnKq-0WiM&5S? zN-4@}`6s-OK}b)}N58?ytuN;n|LR_TVE|lplxWR5sFCdj-5OkpzS@-St5)#uxoP=2 zzCdKp5t6_YyObOPm4J{DlQP8TV^Y;d`@qHg(}R!mH($Dsptm1e=%cLi6w)$(^}BBX zpv#qrtihugi>vrTa~^@&ya%(HDkp40@24Ii>Dt8Cc9;0n_a|sy0psFaL{(}=gEoBP zxN1#~Fmy;1IDzmIB_ouKutrgdJ#i`sErdQ~^QN8T+j=oRBFN?G=xoCzWt7OcBZMbg zH)@CQnYrBxh)s%A0oBByWJp`FlWNra(vuD;oNl`pC}~giz#E zzz>cL^YnoU2m`LjFI#ucS(JrBihz6ejH9F{Q7Jx7`A-`aKlO)SXW--C1(gvrBDz0v?=tp$VQBUYDy1skLcZ9>z?$`}-@Ju&o43-vZawY& z1H9$t|IQu%>;C}Ip%us8cO6zkmkB7Oa92&0HJv82Xf@l&+nQp%}(^LjaMDKmD;)EKPK7y*M^ zL=;7}?2$8b3odlsSc>&!$p!jK_mMxozk+cP0NPtp9Pz3f?2PcLogFx@CACGb?)mLk^2D=~43`B~wi8yXXxT<-;slAxF_^-;zw#s}#;b_1u-sigEzC84 zwG41plEjYKW>o-tHg0CyCC_KqwJ+k{haTbb%dY_7k_{VJbKBQQM1seXPE=d&)98Dy zr1+8hky2B&f+zMJWvIIH0}WRqL`@r4P7@Fy(^GGZrmQAPl3GWUFEFrn4aJTQVq-~C z%iG_1Gr-hZ(db{F^0Vs@p(MsRlGGB0Astm;h;$CW;bsu^&ZGEXUqf@nG zg9z`zmSd##7_B+6Iv>v%Gv^vCEh$a2?3#x`eMMo{DMATxT|Ac(NmQ;w?? z+uP{r8$bmi)-OCLZlURGOD)vTsz5&-=l){0IbXXz5J(Ti2Bjn7T#=gwmb_c%End4- zVrw<*zk1*(QY%E7vTbcIMVVsLadeOsT{!UGs~4rsi`Hik>|b|}VACo>3#@Y_@%g_q zTX)-iL{DgQxlY-ZFc}EJuZ+Q!BPe_{VQO&ewkX<&>=C=-}XT zcmIsgxUoyqG>eB2Wc9Iy!g#2rj&f`u$^(*|gf(qB1_}Y9Ize15Pen|(21gWT!B{HF zQ?inqzkX~H?)%(>a5k%zP>W7)rrZf3NIjqfoEPX^o`Lln=n~$+PjrPilh{1%xt( z2-~>k+*Mju3?_v{=^}v%NWDWV!S;bZo_+7n61tQqR0yrvbo-A_>%MhgdSj5%O@H!j zF4@$}Jx72f;l^zPpcT#=q-|b4^IZ3#3jzWa(0}_QNH5V*k%JSCzj*x%_{_bJvb|HW zPQYtElljXZJ6vMz9p9#B?Rwm;H!gGUo5Oq0{lC8Jlu_=+Ta33@YcM9orUslxOHC9+ zXpuwc052^AJw+~EzlL5V2@v?)VwB$mk0Gvm`}akJ9!KknN{pd3;;(2mp_ z5;6CNt1+&|l9}DD1Qi7IuUX6b4V!51>_lkIWTi|cu9Di!PwoXcJjPj4Yij>{^2K(x zY~9M{ZClCZ3RJ5xK@>I*T3eun`D|IDpYuL+XD5+30-d8`&T|%$vxEZ^<9HMW6Ojsm z7SNN^{N|T;Gtg1QnUtaTUP&eLVB-S0bHdVlm3ADnn{2=s*zH3gb9q z`0Hm|zx8to>-)Nh0s&Z3QWBqFm2Ix2ONC`RYbuB$)@|6tw(UFUUo$Wj0O$R5+M6+E zDjGeX&vVP$-^P}0TiLQ@3;9AD4l)z{0xj;VKJ-PnW-;Ks$C?=FELvzL;?Yj?ImkfmlQ2N!PM$eNx`;>sidM}P0)ruUjXp=YNNU9i57|7&M}tyYMlJYFfR z7s!Q@IiKU0eBbqy-hVwK@4Xr!JqO=;DMRnSj$Ez>onJHaTGheG2d<~|{_B`{_q9aP zxxaz+J}Z0dy~R0$w+5xgs}q1gYtnbM?(*^8;=N(~JvZQ- z0VLjd+E?A^r-e0rooEHlCt2xgVG&{T@hOzVI*&1q*rZtR>FVib^R}(5TfdQay#4KT zc6O4_=clT#Nht|}fLt!ee}Btw0`U4*{RcX_yGW8G^Q(s;alG(a5G%!+Cw32)=j}MYeLvXExAz_E;C*B!^$rfT&qY$uUk*K*ukSIYKXolaJ zEx?=ZxQFMjU&EJv^>V(tdu-l*G#$T9hTu={?BWYQI!dWyEx)okJD0!XM?|K~=19GYED@^s2ewoI+u1lClus(W5zYbuda5`@9pl;QWjh*$m1_j%Jx zFQdIYj5LNI-%gTxe)^&g?tXf7{{BmibqS&LL@H!5(cJfw!+h??yE!By^5g(FW0i4I z??=Bwmm6pIhhD|M?i=UTTh4zAQLFgQvqLjd$m-*5YOQWk zAVrFk$7tj0>cl9Mlaq{%jWIDXfiZ?K3@H=}9(&fDLK%;nIzh(G_sKjLe5-;Hop z6pkZ5d62a`uL2ox^vMU=xc!=z+CRAGdvrbTYDS-Yn1M@Q%<&(6d+NRWhasHQGlckT zInnBNva73$_V#vqdU`UJIqzo##+h1kb6EnwiM=ZO#&wcabO2g-OSLv!Gcnw5?I8Bj3o{G%#qeI7eeE%W-{*70#?GxXlWK*gD zN~2|f_7dqlqe)7j3@x3eRPE(Nt23d&BxjN6IThtD|Td?yyxHX zB@VbwM&5S=ZMXkh7PYVDPkmYm8hSmSwowCVd_5nQdSP=mMoJA{XEn+JDFq0FbB3Y! zTnE74JUz~)oFtwsgUV&9nYT^LWJ;-t(+c^V##RkNw=-xXKL6MgJg|2k6+bW)j{y#E z9nKpR*}1fd23B^Cj$#|t@e)x|;@a)&_>V8##RWx&EFDLLc~a}}LZNhkcMgr?#TR6z z{~enz$ZjOu)OV2$=~ArC$@68b>6-2d4 zUV?OnoQ%0_O(z@M^Zfch?B&vl9Q()0jKndiQ)ogCy!*ufZ28oq_J#03GVu}CS<5{go=V{H%nPaNi% zF`H@UQleCVmmZmtQ42elg|W{AsTE0D#a72@&ndq2YnKA>%{?ih%#j2ZM?L@9<6M?` z@r|brGJ0Z=t4H?^2W1+HE#k-B841n|nOdA{|uBd@{wgi5ta zQHFH1<@ot)wlZ9Y$#aCx-6xy@3pOqlc zrz)p;pXHGQ-aDw(w%&g0=Xq_3FTG_vfE!}!+XmM>bnnLYdVbMfYjh=PdFYE&#q zeTq<;?ywCv5ffMlv_KkRpr)g*%Vv`Dy^la|yqG$gI;}Z!|7mzv!EU^=R5ip-XUv6acaQc5>#_M%$MK<+z zlT#9()HHG-ka&cj9TIyoOp*yMW3xgR0NTc^Yj5ZIn+Ev7kx7OpDvVSUk`$CEAf!Zi z1=yzRldM(6Zq!Q^NwVqe(%=67XDH@CN7GH5BvI@dY znNG!&2{-ej2Q8Z1O=P%e%OH?VTkvFT)seR48|nfbWsnkTBe`{ z&%bCh+cpl+*_qEMiOHhq4FV@*(+wlQBX7H&=WX3ce@BF`mN4-I-diTh6I4}<&3k@& zS2q*{CU7J=B?(gA{EIImpXA9Wc?wBHF3D4fb2HB2^DP}=Mbqwz>|DQtLXzjTuliM9 zv~?}tf2P7q*0!@Y*H4FQqY&qbsuB6Lz^=_Z>2&Sv+;m~f?dS5n$e;t~a-=5YnP;D7 zXt+XY(vw|x zZp&P^xgBLXcxcZN4h$c{v~QXZo%jB-#l#%Za!ELiX%d!yd^~NXP>(l_pWJ^w(wafT;qx;Tyy&3`4AQ(s%cC@mKZm% zeSq&ibr>Jz`Nn~mT)9eqZ4cu|4`t?dZ^0`}&4MPIoZ*70AiJ6)7U@;3y_xQxx-4K`qbvhi=_#=if<))TLi%^wL2=6|;LpUI|C2)#2q%%w5(ZE< zDL!iBh5d`3vA2qO@SmSo;9qu^DT*S_Sd4H4QsSFQv}K-PNtWme#v&?ZqC$}i`n!mv z=9ask<&ymaj7(G*kKy=xZ=~xZ50Wdi(|_j=33Y@v^V3H*W5Q|`QnVwz#Cs?wRggKV z)hZxyDdcstn&3;j;10fhntt{2|M>tL*7kDsj*aXb=ww~HBb{4;TQsDVDn2o&z_K=s z=-JfAW$XI*r3alyrA@Gq_J?!G;Za*IEBsv>?s$k7t$f9Ajf+tg|)? zBv{3qS~{HmuYX!nZ6yiwx$?~CH189FGXz57O^TKZ7o1)l?o})f2Fs3~zBbCE!yv#Y zpb2q9t7ER&=bPOVK=)a_7B_PE69-w+5k8yd0;mEk{>d8_(|E!{G0|W?B39ybt~zPu}{=JpV(V z-T(^R@5qYX`xWZ5;oOpt=A`I5tMng~hCjCa1Lrzi7UJC}Jh zmS~-C^iPkD&Yy02wlJT$d%62E*STi>Td+W1jvVt-wR2jz=TZRVpTg| z4*b{4+W5xt%&(OT6xOCq1^RNMz6b@ms8&hKl9o#-sVPbcWCG_)Pn3D>#Rb0bqX|B8 zqLaV9|L^(I-`>Ic9rG8Uk+fdIb3Ro6XFz9X4{y2oU0izgwN&F6o5Tzr*vH2{_enPH zxTVP*miGA^y!CO`UimuK|7aVR{oGA-6aqf~%s3)7s9YO9ZDzq~t^IMAqNL#NXUDR1 zNb3-$R=Uf3?mke!IfqRR+Ge@pp3G`vYqTh{%ldj|26xScvlT@xrKD~}uTv`5+m$k_ zp3Bl;-=z^FE&jwDF&bb_d{ZvA|u|MLMnlMx(iJ9V3Ua1JMxYS_~Xd#hWV3GuD<0)Fme|~Zl zt33bwY{JiN>*DSo9>pg6*tB&AVbUazxn;KM`JqLL>cj-OT#0;JOiYP^?mRuY9&&OJ zoir;Uy0nY#t~EP2`sg#fr1KZp90?Mia&)4EhytQ8N0hb}6xIwP(0Gvr2}8CVy=ll%K^lU>)nQ`BfncwRX z-;G=xJv}|yn&~rgpT)`nhq;B2s0s9yhB?jNO@qc;49cBDIG;)jpHo|(wSJuUKJ+S8 zw2m-VpmiJNbft59o&QKB8NYk7fM>eQCdi~)*FNsNFAaJ zn%8a2anCc;)&8a;v+*=^^t(_9;bszfaa5J1PvhO_|6la}fbaXTe zAk?etF)Wi0eWhU`K^v)0Q9(qSc=BOLT*+z{uVVR-3XgLJ>r!Y!p4x2jTWZZmJA)7k z6-W#U4_GB}&LEuS%RkYgc2haV5ne;Fa%11OPQFMpd(sZCdZtg4$SmYWRc!NV0|X= zzW&q@#TdL$nY-KzOky#WgfINKgf^m~_=lz@XYp$TU1ABM#rphfCV?fVe+~{oMT#t0uoPwNwI?dqZ8_xIobTJos_H%jFlKvDkq2>Xltkr9wXP;fl)a~ zEN!YC*Q}aVvpo4Gi*qXMOr2mB`&_mDrgt+2TSk{4rz_au8{Svhy6HjI%-XI-V&a@9 zR0`odM~)nsGmU;Re|_aZ1|g*+#szsk{=u7h;El(4$@T%hy|2VrC8lT1Ix4B7BbUb{ z)hr6$Sb{(|RehS7=Ti^DWo-8OTu3#Jx%i?>*m3AG0vu_J8}?>ojk3x3u$(L)8(+$X z2IjK3_$GPkv)`U?y_wU0?&h+ZG|0hOqvgC;RfUHi9iD_BWVF1pbDp0|n5e8ii?e|` z8&(hm(^1%Di&3FiT&`}-=m%tip;D>L@b9japsB^c>>#*0bJT0 z++V^uN3mF>qoac$2r$OroFh%sDGNobXf)&3efVjbSzlJM_&9%N%qgG|#MY8%&8xSa z_h0v%!LiYC?tQkIy>}I@!a0W*pu%8^X0xu9bapO3xl*G*pO~1KB0@P|&`1;87y#v* zBWbbl$wJVmL2Iq)=;%PHtVX)`9xnyCT#g_LvofPvO$qke2&~XtGqBt}Sw$n>dQ}&b=XMCkxdAaF*sTJCz^Z=KclrIZv3g{gEkfHX}}fu>N%^6-No$YKdD1b(AR-|IU0q$v*t2Og3UoO4Yf{g~ zT=4*B^E*yiXlnlS*#tAjJKEdZG0u{vDag#^uEW+zkEVmGr~6RKVzD}dylcJ z5`7iVO;~I3A`6JB3(oq2{0eLe_um<|kU6yj$~pf?i8G`_BD z%k>=k_RdZY9M}W34OW__wIV)?gL<3O)!*clMP?Oej@cFsJzY=yke{J)Pt;=CYE60{DHfgmvkV-x<{`)-H-y~OF8I>37H#^b%Cv%QN-H9-_Z zUU6YB-`F?&|FiezQL!iM1(Gk82gve95+BP1at3ipDg-Q@%rTNXU8s~MTlWX(TDSDvyS81!h_m$80 z(;!jFV;|aBr9P8?-#%4T<1Gfu=t6mW_O9nz_fuS3-neTI*Mbi%Xq8oS>TAF3jSJxm z4r2%!T2)*8%}+c{k|g`~ndN=2S`A4E;;L>M!*%_Q2eeBw=}Zx$n2LjKChm z-LLtwUegmZ^JhHHXOke@^Qy^t77RU{D=^YltA*AY=Nun=atGg2VNahrgA@vDed+6- zMw6B*Gat-g7|d!ITv6eaeaNAtxFfn-|sPWQ8p8q1%wcEyIt}; zM^CZa*SHv_6;5-mRW)?fY~uq;K@Dg&n}vpM-5#Swa^_6Yg3=g6l*D+SBh_@WgNpN1 zquh%;_)C{AmA~=c_f54yjlTN&C@nL?%;uv|{q?Z@r!l7TTm#oW>|Eun8m0wZ3k?3z zCok3i=mc}aqH5;jV%VYzK}Cyzz__a^OW||xJ%8{Y|HD3?@vODu5CG?#qucEc^%Wjh z4BpSGmNknxQa!(vk|asW&x-%W>!NC)#Muy#sLQDLNiggg28+Rk3l|Q3oN3RANomY1 z`Q|udmB)o}UM*7T`PehN^B%?thTz?wO#6Jg!?u8f7S23;tb+&yDljFOJ!3owA@A2( z+n0MBihB%V(5HRW7(CC`)>hx=<38uBeg3l`$l;hla0!*#c6N5AdY)kzjApM2cVSFI zD3+F1%5tyX_r@uv$Iz?yG^~?Q{`DZ2M;#NNwpsh2_lMno+T#ltNBh6#edtB|bH{&v z7JlFZpP%<|PEf&GbALeAAm%M_jw5hX8G5K!9YxVXtfj$JHGprrZ=)|Kc-Ze}g)p{o z-!5Oi+?QH4t1*o8+0`I0)F9~1nxR+cWSFPnxmSg|BuR*(2(5K57*0;*9t<-Xhv&Mz zy}j@Iaa|s>n4^=NFqihD1>;6W>l$%vH%YkB&!kMYub?xO1rLPQvEQAqHhrP^2g zVb4u4UYtc8uc%v|b#*MH54G_b7;7&GvZh~pokl%)eft9A299v;Yv^vz%+-iBzxJ7< zH*=k!9>4j>HrC8vgPjI~Np(<5Ujz+3bl4gkS1<)bK_rw?2-R?pZmA}0RW+7e=LBX z%{55Br*-6c&gPXX_;CMfs>IF8k2;PObJ%Ydfxw3`NGWMF8hr(ZdM}E9Qt~Z-=Rv%f zZA#td=4QEG#K5@+*Wscv@AP%SzQpeC z(YH@LY9H93IXL*HtN!XVT~%0H-4bmn(BM+sgHznyU0STTLn&6=y|}x(yIU!e;8H9& zE$%^zOK@)fhx?Gne91TG%$~K^tTp3Z(xw4uqCg$SETmQFJ9^O9qnPte7&ybZCyp~w zioy-MI3G)64%<}s=8-3E&rJb4qQ_tzH!A2)83)igoR$T{zd z)xS&iuEBVu5_Z*JJQ)O!OW@(B8q0yVjx0Yx(sOS2(=A2;(5O0Zth3GmpWTZ*d%XOz zw7rh^c`DInNoT{E{>#JNo9D8Y91oKxz_6;n-;3LZ1tM z*Cp?UOt*DhU%V5XvCTxJ0NIn@3VyHoVm046f-Fwvkvn*OZS1)dp;B$Xr~tyyhu{l> zg-i7zY828Xh1`q2y9S6uQJ72>pqmcDUHeXGu5SbA|j+;E|; zc(=~~`}YrThl4m&rE(*MbYH)@*(#xvXW>&rI{oWiEz zmL})ycK>6Yt20dXLkA+~867s)y-V4ApKa%5VFRy>D``i6W%%lvmn(7Z%gomm&mN2) z8!tN%Q90vYWs-KW?~XSc)_i|Ho%DDO-qN?RhuBg3M#(6;kv88FIL}Hj#eLzl$)<__ z6KC9hcUW;H|fPIvq+85!19oG$TG|*2M-8QfN9N< zDU3vw%+<}o$+Zm)gxd6U7r&N22h8>Ejc1?{YMp^naiwA-Rwy$&DkuEZohG^6;QL~O z+zAfpKF%`o41X;>!K4iIA*|wQN>mUT?=QkT`VgzBUsbwA&fSgGNEa>>}1Bh?}fDM3(?ofd%H1%d<@SrNs= zk|{BXUA%${y3V?>9DRG5@XB?MBWxAsLZuP~4F-D@<(Cf$CiQ%V)cUQgRczd_8Ln=FZ!@-1`-k8rx-kKBCdC>w z6E#EwAd2$E#{2LBLanXtHW}x4Si5|rJNF6P;&OiCMd>z}M-@iMC^5}y3PoDIWy%@R zLVsE+S2QfltVtscK9M2k7zCWmWdP%BWaAydj$wh%7s`Im8xO`}kKky3bcrR$cayHO`d8!3|HWzz1%P@)`8c06vdv;$dI3kzr#ipXO7kDN7ZQ6LtO-WURs9Dm*q(o?I-Do%hEY%wF=GJePC345W zf@<90XG^sQNYPM0Qui5|G>gFV+3^9yI>}`IqCLo$%Moe&kHu_ZTpw5Q+d0%qRPQ|C z`!<%hOjvA-oaiB<)itlGjlTeb`wOszAEHGuy}vTnFRHm-3HNdS?2NsxIe31A8kgP+ zT8mz-LrOIa@dvW&z7)6ulF@f^Lez55ODwa*;-A!-kb74-D28mJNMYmN4)|GYu=MFfmn9t ziyx;HpgUQ{Irh+ttWXvQ#R4R~BvXbIJb&nBjWIV(IGx~5G@pHKcWZK8v!o9zV-6c# zc|GniVpN%3Z)yJ7xn!&rd_%G24>95#XJ#R~+Z!ijA_ASkAQ+NHPRq4UPHKi>g4!;< zljz3>5!N@_H4CrAkCU5rc6NrDMUDC8OnILp+=1uoX^=+_C?&cf8NsL*Xj4YI02@r$ zi$i-O8EzaAQf##&kRSbb?Y8txAl?~-fIBR_nn}OFk?+xE1Qwr}PQYqiv^-q;Sled# za&dI@(VP9fms(dYQg?eK_Bc?4klmPNqQT77@!qGZ>8d z1z|p(Xi@)Xd;7Sn_Thoqr>3=^Rp0$d#BTXsi z6)Y!;5q>JOC6D2rJKm%;6Qe*GcmBxpNj?)_wXqTq+Fb3gGg-$qTU%EL44(+ov$hVI z>0LK?d2V>RsxcppIgqBb#1wOf5KerJ-CEV6^l=wiFl`OIM>}IGcw`CQu0{tPaZ|Rt zU7}zdjiA6IuVvq6%hs8_^M!c7)i&t;oF1Mm-8p)|jj zGf$LvzeO18#d^|qR=N=WloDHA=_b^D8nr)%&n}gN^mIaZWSTJYm%Jh_9AYmPAc1H2 z`g96BxM9447#Oo2;j1%;=F?D7Yf0xQD*2KUcUtAJGecq*prU2Unvrz32T7ZAw2DG0 zJ}t6Ly4mwx6O|5H%GqT{MZsPXL_8=1<4e8^g!#-$R?*P->fiGVK~5ixJJ7YbNiL|j`q9c4hgF8To_>)!{XXAOL)rTbA86eTHEJf-DKi1d)g zqydA7R1#&CrH=uZ83B0{N{Fa>Depuv;j7K@7KFlJjKJx%Zz9U;7yX(EDYVmyo>BUo zQ)tbtm0Ql(d6axhHJJpO8~l{WVrW;kPWj|A8_4Raub4~6+q7f;(FfcO_caAy28U;$T9y z;10d|cY3;5UTZYzU2pXTDtQyIl5Z)^G<13Ca^Gb$Q&7z(s`3l$bwRBLAoI?Lop{!5 zRYEu6nSf9&w#PD#xfepBV)eE>Jp>bEJaWCPNzZ9a7ElB*`Gq{ogJj?)hpHzxKyX0) zVag`KK2y1JFh8rd+o1#PN1$LwOp5dtDHFbBdTKUx3TE|NX8yFZcAL9u?$Cl*dOg-x4)_tMB{O-AU?U9H3Yf+A< zsddds;)bUoWo(9i6uSC)Y_{405u%j|eLx7t1@|5Y@ z{On|j<1_m^x2BUA&N$=J}fZ(vh;UDf`mlK`=DN%Q|5W&f~ad0;)`5&pWr#!>Sv6NzjW@ z!_#DL;*W{M=Vjo#NmPD9r3sx1|2`K&_Ji~g-7&yeuBJFdJ_`|Ik&1j7VCwpXRSx@CRepgm|rKzUWcnukP|3_|4o5i{h-TRGbt z9bVNwS7;*JutjtD;R#$6QNH^^snKS%xnQ1KjyNZ9DnJkWD0O`+`Ic?ZnK09dV&P9U z!kM|J&`c&xO0o4!&GN|f$X}R%>Ecr3Srmrczt7QqtB}4)A#oqlQ8bFx9?XGyD94gc zhSkStepB+K^j6PyXL?!Y1iYKK6jMRc)Ww-6p9#MVUJl!E;c1_q#q)gkE2;mh7nR8A z==Jy0Q$payjaw~iXB|pVrA#UXI*Ps-sHn@AxUK6G&G_h5t_M%;(zDatz9h_-#Cw0C z`*QW~Wm{Ehhv=R6c(y%{2&WXhJ_}e$2;c=P&;e?c>tKcU8t7aH{*nqV??R|;0WR$! z^5${K?CSkHIA1XXo*uzD43z$v9!E*k!=7C{PV!;_jyVF#oP1fqPCUh#XsTkvIp9q? zFPV<8ZS3ae1<{^9sCZ@tMKKsFn0gP+J&#u#=9O-;jvA~eMX8jyc?1odk zHm#ohpa^VmN5KkbF>#ROEhA8V@s~g)rV@S##6#mndqnlt|BMdI=%ePa0CRWOz>N8T z;UAqD4you=E2mkzfkfB*c4nWv1&_*_;GJ9{-T+7-IWMb!-v#b~pbUY}&#RZ0OWVE( zwaM^jk?;n{Q9VW$Onloe_Hdq55J*5&TYU#V3Nxz$y>u5pO^4TjMh0H}EsGPdgJwL1 z^2CampTzsNoHTU5DFI%tYSJDMeJ%AXK$*3KPZjc0J01<#&(5LzHfK4UzQsChOpvQ} zDPfZKUX*gQx|@87MP?Fd*%p9|tGgwL>hg^SRV#ISe)egnW{?IdGs`uitOYv!v>4H_ zCd2cHkoBbexiL^$xp;|{(?-BblY7=K6`p_K%X4sWEI?)I>e|vjDjF~*>Ai&Zndce> zhoBJ#W{Gy|7_OEY2xs5v8Wp+c8yM19c zCugl;`3=G`60=>6!UD7G(OyuH+uZP`pp@Iy?d@$7)xm&Dd&pUhouJ`HEs;+l^TMlS zB57 zl82QIK7cNm5cRCsM;>UcZ7ycM^F2n=UUTPi=#a({On&>ojz@r{VU&h-)>x^JQvKGj ztE;PQ$SzxKx};ySiDugIvi>2}D(I*M3#q1hqVs44^Oc{E?_r(t<}MW5u-nVI;P5rH zh?0T<-CydtIdDaIb2zAn%Vmt?*O-B3xVf1@42#|dydcafX zRX4J4`&GiluSMvBB5u5_xX>CHIHR~8L?N2LEV*S#aKUvmm}ZupT1^S`F=#+2G*fm3s1{y0V-N01)B zeer6H;Pj5YbdF0o7DS=HX~H;;SYILqx#afk5TNy2G^fe{X6x)rIc4V^P}cvl zDWP#eZ4B<>9q;Lvk-KLtOQDsM55;!bCm;&H2BY|N+#MFd?3)(o!9E2!!!OPUBP$_b z25u4AdfRWIjNe@u&h;^09v`F5js-={^1Y4n{gYl#DM(cYr_5c`?t9wE$xN2&~D^hm>N|Y^`t0ig~M)00$AZ2MwYT9 zvC3`}AHywzm59B_1qOQ&Gw&j$KW=I&i4_YWL_Faqalcy>p4%r(=U8_KYt_p}EzVe& z?%5a^e{S@O0zP@4KZYo@&$Yn%KvT*qQ46@;i0iQM#LHS_2Iqg0U+C~O)j`C-J?r1`&69Gx~W9DZeKQ8T^ftiCwy-2dOL#S910{^C5P(bjhUX$8x_)%2h!dwOsuMIc%` zQ+AIdEWQNfIxj(BQ!H!Qk$*3GHvvP1sDU&NZ+{6pOORlLf}so8TcVmnrw?5R+*aI5@Osi$>lNDtbpRaFt130|$sl=JyH8wYE+_{G_ii_KR`7|RLgD*AD)g}9@ zeaAF0%IEC9)7OD|yg7^O+LrygFEjc`7rHOq9v^tUY49VsufQ6r69EVFvMMBNEQ4

_+DK!Toq1?tOtv^vG>d1Es!G2qE;az6&kr_qOr$vogRW!b0J% zS)@%e_Q%VHqsKMpT-T5+<}H%?;cR{sslY3BbdbKs4W<8?!8d|deu4P02yWrmHUvSI zgnGvh4!hb|{4OiU9wL4zAiVI9pJupD1wVI*vlLjm$vQA78lpAOT+_QjaTCHksq(kB zX2LipD^?qvse?Wd(L5VhC$AqU8bMErRY=X}KWLa-*2B(a*Bu;d;>(n3m8osG%*kd6 z7mB;TJl!^Xj+laL*=faeUs++s?!C!zv{PcMX|z`&yb{o`Nw%U20COShYF? zn_m6bo~m*cadG_4h5u@ z1)3}JC4RQ+F5Tx`g;{zHLH4-L2epZ`Qg-qN;=^p zXW4xoL`2co?t|#Nz6Pg_z7A4{K@y#7=f)pMtTedPvCc$Qqp@@@xR#q4fyeI*lS-hc zJo^nxrrkh|U`M|zPi*EWPU4TrcLzVZUvPN54+Ni#m7Lc+RyhL|BSOtIK zt$5wpc)A78=M8-B6$-S_rPAX5zIGSwZ@6K#sQ&wlJizUVJ7?^;9lQ4gNQxp5j!&KkwH(`P+ zo4M~h7#LB2-%^J}Nx&|Fp=x17d!oh)v?M!BtT<8tZS5s*iZEAVm$y9WXoPIjy2e8S zVW}iCN$X5e@D6p3$yz5f=l1|ii;p1%X??ZsFl&!*$7bj285XR@bNu}8Xkgd-%`FN{ zdd9~4+fd5=`jyknzqN;-Ow= zSOF;-#%)fXcuqgA5TJdiCfyzsGFzuE<_(6W*uk0=pIKETD0|_SP#l(z?s{au1!K+@ z{IMSwmp30fq2gHtAV%0BmF{ilN1>T6QVl#d`REJgvPQ6pris3O_FtlqerGr%xSds9 zN!a6DTt`XpA1|_Hd!-bHU4}?L;w;!vrfrc^fIN9N5NzCUj2-OLE9;hE(EJvX?$}H6!@PMum=KLeK!2`u< zZw&v3n5$FU&^gKxj&&?7?I^HW+`f%umH1%5-{c8u#V=-RWmUlf6FwFqTtbCcl~BM$ z%MnC47Hc5}WKqf356hNSU>Zj?j<_hHEG@&bI1qohdiAU2j82rMzV(ZMM-n=PI_Tyvg;Q&EC5&n%>=DH_Q%ARRGFIoAH zeq6X=%B^NY5QI<*<6ZRQ?RfPkYz-w(hSuw91e&o6^OSRn}2KCiN(vlfs=Q%w>Eu3N(gK%x&LujjP zX5a{h4^wt6gCjZ3xDm#d=VUf_?4nm5WnQPb(ONO3=!;OCue2b1H4AqR`=-72eD5Mo zKhc-0baxIHP3wcPeZR{jd4W8h-~R9C**^P@ZYMp$I2VCe8}bxq!h2`ngLUD%yApfw z5j!}D(hpXl2q&XjK>%yw53)Gk`4++}wF)B)ue&LJ10Yy}Sa0avCQU-z6L^toTYjTQ zNSEIy(1PvC-Q?Uw?0VW_us@}CaMkPT#2R|nB2TfOFMLYY@mi`)q*>*^t`k@U`&+e# zkDK!WEdd+3;N%twgwi%(;(z1scThAU0CErGe}!yJi0|gS{dJtaqI~jPxj6*qs+sNf z$2Xqpp8Adh%FZ5P;+J~h{q?T5cfD5mB>o7TdbTSjUVn`~oV-33_z=Vm?+boflhM#s z=pOfe%8H2h3n&%*dV<-|`HbmcC%4Ns1W5RRP=((B+L3!B_PmRBpfx$}C^SF=F)3oj zee(tHq$XI;vNa|8i@w68$c`mDC}VUta~$F-N1Ff3DT#YHagpOjF=j)?U8fK}F@ngb zMlxo`8LAWq1`nXt`B=E0s0ovi@L~<_mh>#~^3N}EJ^cn~kV`M=wSV`+rd_keuM`5d zEPM~fW@)H%8K|10Rc5XA^kQ;apNp20&spSbt!`j395-s;=uaW!>v$GlAHBWW*-eHi z-)PxiyL={oBj(i*iXGWRy@fUWyd9tIydb*q8&F)Mi1>R=Zwh+u0@G-1%WNGOK0@{8 zGgjJE-+ABjeC%ES4w~&G7M4MqdRB1!W9Hm#>7x3M?Yr<^5=8Vj$a5VTZ*X`@Fw%E& zfcvC1V-{tqFJrXJd&a92Z?zz=Mz9~g+-Jz``bmoy2F1U0fH%kWKGQ@uE+$nFlQOfO z2JG442!Ft6AgCE zG^+ZF@FM!`ETpyNOu`rzl5YpmAD^AYb*Aa_kuOc)qcomZajKG^BZSHmLN$2N{g>NN zuakwACwMilR#Qljs^fu+xYsE7v7I~e>MaV7jXxoTZ47z~t8bv{O3go8CzMKLOJ)Wo ziLrHHZo?hoi%P8oURYTnbil%-L_npoVU2A7ym2zl#rH8o(5oT(4nC$kzHLdTr6<>| zFBbFZxLEy%d~xE}u^Kuq5BvWUN<$yzsq9Si{oUfzSi%&1_s>d{Ca8;uH{Xh)!h^&G9hY})o2IPTO71$ zZ)DH4Go^M5#7EKzFddQv9saxgtNQ9(7cRzRxG1M2S&X>owOBfgI_fKX*}YVjUV~Sg zr{Cw5n6yvX{mlBbO)d_G9C1$|dA6O;hG3|lm4y)~=GFZDYSgX4 z(<-%rNQdnFFQoRs7kZ?>Dz^wZ*pBg88Vz7RGuUwOO>siQf{LfyVSjn{}gohjutaxU!e}z4stK9B;PD`2OP18v|ajy z&ym=WbH(@Rmnz#h8tvX1I0C!srbvZRf0_g1rtM{ooCn$%DOf8jE6XSWV>CVku%t$P za2hZvO4)7uVVH4v(~&$i%B;o$6Gb1BJ6+?~){G*VudJLdVIMWgS&vR3rSx4h2o;x` zaZCt>weqM5+&^`Wmm#7oM;4UNG{!Y1Xrg^yYGR8N={e5#|4Ox2ogP$X#xwx`a_vuz zrT1OaLkE}=QYnCF1X?Qfols$$q=Mh{=eV2*LHO5;h4MR!o}NzL$Vb-1orDzK%!VfG z!Gw|diR^EHF|@F*3L~=s8HPu;#GX>U0lK*%-+U#S8?XZv&H@(ekK$oBRuOs8YHcFKJ}wr zSM#pEjKn?}r<22mKO<*UfuLhuiYk~&gXZmG4(Q_~UH2JEDFqO3eEi0SX@RHH_9&$- z9UdH)j~hCtKN(VUb5#nftr+ADR^{f2p4}QYq;P0J`Myoe%;qi)7or6% zurM25l^lS9!UEfue$8A_-}ng10K79OWmTZJZ^TGJK=`k=P}lhISpZ@=VJSZ1b_i#c zgogC=@h#if%GUQHGJ*F}jLRnuc`gF@yP%Y>i;2+mel?mzFe9f??EBm+(S1hF@=Cyc z_EG?FJN|_^*TWxS2gBGaRSkfW!DdLS(OEej)W0f3U_EvX z8qqW0!jtTy(ZXq~Zu{n6VvIn^qM&I{2LDoG5##~fgg3Es;F^_?z7;7HB#GaF&KTy2 zOGlUFKpm+jWj^d=M@DCUIHOzJ0$@*+DxCRc+$KO11L=k_R`vBMPpu+q<0#8c@sJd% za0K8q`P;+*;-c}YD}pMUmj0ApIdY}cUm!D~2I(IGwnT(Jp9e}8?GW=w%*cXJaE27f zX?*Jm4U6*NQ;YGYfTgt2?o~4Oj`lPrG>_RbNGdJ6bq6Rf>&o!{RM9~&N|%U#mF#8bRhq?#e!#BSf$m}VOwC*IhJR-dDj@;O3?GOAF)AVgHtZJMMs zwQZ;UE_gxKdZ(ix!He6YAw+k$@mMu&*%YgDeQY{yEsl{R5C;l^wvI{L4byo8D4L>pah7Sap7WI3cRXq{l`lcZu|#Z(q^Zum_JxBKws_2R3> z&IJ+F<`(Zp+b(J(-#b=k^)|YL`?~B`m@;cqYz#`8Zz94>*I|D4HW#m?a$BYof^QKv zKn5a2jqUaR);_Pa{h?uOLF}fqW+=%|b z;vzwZqB>*g;vfB(yRQiTI33Otn<83${+PNW~z~QmE)A3tAnJ0b=xs- zK0-MFxzkigoG1NqC|+mL=C~T$-2+6*xov*~F1&H`8bLY5?jP*X7fDOCZ+lGZh6fu%wnGYS`v)1~gJej6eYXtLr67)Q!v#uNG>FP_xgKOugGl)`BYZt+v7)T+820K|7hkeX_Uz8$t$nLft%`{P`q=;?m zKPCReAl{qD4*Fn$K2s_w|G~TqG|3?TtO(v_?m-BWkxO1BDNR-Y;>^!CWhTFc7UGVF zsBaVrD7EOtD(?{hEpe=XXo22Vo*8m9^;+TOZ>>c12ZSm7-tX5T1AA+z>1KA6!xY9q zb{~iLqNs-^+t>R)sEP#LV6vk5VBZ`Bquo9zn$kIw!44AW>?;gAyuw=e*8z*gt<>Yu zRCA2cs1JWKoHYkI!Ym{t+nZTvqKn@hj{b58sl2t~y|(PP^3#10dDSp*4Q~VM;3-{S zD)R_w4<^Yc%@MF_;A-G@vX$H6cj$N}Vau{wvshS~mE%sqh`y;;bCK-W0D$nDGyc%y z#L8TMqeYm{WXY6kB9Cz$M_Us?QW?B?iw%y!#Xad%SPA={!)RNSEB}~V&Lh)r%Heg0 z!|W~_7Ed|LbMm2|fII|Im1(HwAuUh~oX=mHD$9rTd^O{1Vi00Z0MPER-AdbxcbO`3 zGxLri;hfSpJo8jco~Z3e!Vbm)zrOPg9s!=Nz+3H#3}f`-?+|ur)s%2#aWs@JMMiuf za4A}&o?N=6VTVhYK)elKj{gPj`lCxg`0Q}sUI(LP1~lmSs+t*lY=_a@On5O_NE*jF ztwbS8MqOXVCxTm$Pxbd4=3=RCMhgw8o2*pQcWoB66>gijIk`DBSu!~Lp<(NDt>pH3 z?*Tbesm<-1JCN+wYe5#2XZcklB?fWF^~*eB9$qmR$r0%*@tDiNNAX3IM-Q-s(}AUVgNllW1R&9V?c9gs0jtQF?lMw3L8S zvK6sSyYf1#A>oNf4xGw(ldAuuPA#%xTM#(_khYr2WwKE>Jy>vANa-h%u9#!0l~f-b z9!7>j3K%|Vwl4nXCt0LLwB$?Dh<0f2Y6v!3==2iZE~OO0#MVRGlV3uRWx3W7`oF>1;S!BDMX=CtFDRPI1$p=68O(;nT>hhM_ z!pi`)meLIh#e4iXqFPKXfB$dx?=fm2A_$eqg@Y z%9BAuhmr{k3)A%pW9m!YbRbXe|NGnGs~zr*8E@_f*H*2<{!(+eG7`nQ#>Y(6acnOqLQ4l}^M64S|N7yl?l%~ue zE)aD6*1#?q7NDXmolp$;U>LW4l_dT`1nW6T^E&(c_wSags%Rg1`$pfSi3hjILz&4~ z#_LqZ6`jc?U9PZaeW`_3M$uwtDw20T3Id+o6I7nM2AY)Z> zWvDg^QPO#i2O-i+6z3dzpHy&%SknpB)I^Y#sYSmhx-urvQv5+B$~;(#q~}AFYW&_m zuq4|M-Qs9K4C^jAEo9{4w-JQ3&NBOF$ic2maZG&1_-)=2s+2f%CsN{#YMzi*Haql0 z`n}gy*uWR%OjfwOS7ELd@WVZR<9Tgk&;QJqlJfO#Rc%z%UEh&ZDP?$VH8=x_V{PXAaV@r#l(gxu4--Tp5HtlX6!7`Hn_ zXtK+&e)D1VaRugb27+Dg^Y>&qJ`Fpv7^N5K$YP@h(`^X=7Ul+T+}orJEkn~0Y+OS+~;K(}8dc)8A8gp}leReiXKaoOSnh24`w#L=x_JN|U~S zpS1`Ra*hITr0)=I$&1IP2D~QkVil}gYPL<+@wP@%iGn8@qN@|}R2ml`gyeAL{sTfy zO^v^#+!Y)R!7~AU0i6&iSG01HOpBr_c2C=Lt=uz+^*oJr0UyC=@Ly}73@`9ux*`bV zF$7c__l2Y}>wM!H?z^qzcmWB!?oUj==^Y@m!1M5gWg}VY@lB&NVh3kW((9!=AG5a4 z9=hEPh(AfMUoUM8hG2<}rl^WVwf*F2BAmJO0PdfPIIVHJO5!|&f)}93+%6*-9s%hgi&U8I-EfY7oe!aigT}UoL*a}aYjlXa%mx!fd}SxHrLO1 zNhS2rzpw81tyR&qf~{gDnY7k-c7B-Vqw8UekB_(N*M*s8PIYJuVC=9wm%7Uee)|DW ziv4~1_O$@g*Xx28O$wg_;NsGfp#K9;!F>zF36kge;YKLE%toIpUm!kehlcG@sYjXa z*CKL^L|lIsx79;v)e#?tbsd_gh3YX@`4!7}bmT)m6=Ikr)gbAb+bMm(zExoO#$DXT z=EVr*`&+AP!-RnApzt4jHmXt$LAMLl4x;nIGY_v6hOqWCuON3r#iUCK+&?;e1*DQcE@(z zm-r34hZP0;eum9SL0$bRItEz`%2{I-<)NqRr(}bk9h5kMx?mRSD8o` ztdT0@p-=Dnb}3HfvB@q)7~(Bz+y0XeE&Ei=70p<~+bI22ahgy2jxY2D&;P6*L(>v1 zTNz!yrvEx6_Myh;z-~1{cAjuO37ylKF+F$d_o{zd7B3NqR3AVR4}(V+)b8;r0vZ1%yw%1TE`0jS0thgt zx>FUo7&N~9!O|=t@{Im%d6}ls5rnaxLI~;UHF@rIH1+h2ppE|B$uwE|b}FTUSP78K zxDDsDcHy7W6^A)np2#+~OLLzcaqAjs4t2^_$-dq6j0_m{@LO)VnU6nm96C`fRBRN{ z$CS>sRHF+gLVfL+ZTxMri$z+u5f4R(l)0n(bXE8*EiBWZ`QGVgk6nQY@E=!`>uv8M zCj%3nc1Ij>=iZ9w;TgivjhIlpa$_55zki-KI-z+*@#9rTL)cJ2j!c>ju|+7bGCV~<5Ohp(R(nHIlkwQ=Ksn{qKA z{+wc%L}+u2X~Z<@7qeQc>bE|L-t6a!s>2aDkAyb0{S-n!Q#eC*D-eVOuZZli;in)g zPfyRYhd*-y&^Y+pT_OTob@e)fJA=w(fgB)j8h~$2jqFDFK>3$^A$QcWFT||`PjfN- z=vN{YYYtaYs(!__@10n={|QY54o{M<17%{Tl^Kh??-3&&y0D%;t>4V`OoS&YEYX)q z(?hVk$WFLgnQ0Yh=!Dm2em}xg;~3t$L39{JRvrncY>_t%3l!{<8J;WAj#*ot_H8&c?VSZk%Ho-Ey*J{47|7!s%R14S; zs>;Qd2Y{;sF@)^5_zp~GXSsC%%9rzq4yP@Ib;3CF&NVjg{5fkLg5avqE64BO-++9f z^@Sia_jZH7L6;AJJYQoLCB?PVmyP)w#O+ohqrS0MgMB#X3`+s?s@WoUqRV@q{VCaMC}e!3Ix$$B4fy`*dB z6{_T=I7clT+8*rrdd==6nY&-$2WvlBakR0C5;(Q&u!`^e*(e{?9sp}kZ3w(uJKK5O zxM%e{TY0%%9d z04Dw)_f)U#Cl$oc@1+?0LhXW#%M&kFl1)g8ADsL@(fGjLR` zb?@?yceoYc?5HvBF`cuti^qC3RHo`ami>n6S1LjN9PCYIPcfz%pqoVlWmZmI8G=4ficOG}zds1? zkCfc-ubr6U$Q(y-7TkdAKkzDB*-ubCkq1X>ZfLQjeSxgzFREXsIPhkA$AnXJL__Yg z0$-Wlq+3WRxj6pL8$snDdma?QU%E~aqpszZSm}O=7y*QcUF+o&J_sL>hgYE^3!ngX z_4M=r1vbCnO7pc0Rg9P<=xel2ck#8V&Y2E}E7rra75V$kTnl&iHaxy+f70PB$~d_Y zQioqf4KAjp2QgIVVf{SNsl0awHIeO%QVT53aHJ6P@c~~sh@gel?K1!MNf8XSGl^=! zj2O@xsZLN&k`a#bi1RPQZV1N?^-oP?1V)v8Y{$1a^zgj9`v4)I(ZU?j`*Am~0`bNp znt(meSBPnqLneZO;rj%V%IMzR@Nz2Ut(&u2&1VcsmuQ9L3G>fwGrX6y`;-qAxtid% zoXK}$E$aVMdTfCgUWTZB!E18GyLaEZNcRDY$=DdsjV%yu9J~1Ff>sc>-2d|49zH%- zWW*`KsCHzyfn{{s>$JF+@-x|N4KXItFYX~<% zRAt`l5=ngfJ6F`iAHBc}g)OgjCWqXh%qw}}cz*UZahQXJO?DDXo%4qMIJam+-_|TE zPYt)|SsPrAYFfuzr(NUGBl*E&!L6scS*lZb!{>3U6K?q$ZLa-Sj?{u8R6Ag2@~BVY z{ZHMY>wdABLp7P!O(?I~!52TmlGa)JwG`x_gie2GJ0pI}f@9HXx zU7}9SPo}bI{fxZ9>NBk6{xi&FZS81+h`v&AON(^P!uBw!BjV<9&&#p*p|Xj7e7miE zWr?U1KqbG$`w;aN+Vi9XcL!c=$FN^+m!bK+{2o!}4_VA+jE*d>Y@jh%Yl~~4QO@WALrH5hsIs-rc=(qiVm~)J?1PV9q4N5iDXbm41GqXT2evsGM{P&Rs z&05GBFikO)#pWfwMUvqK#o^|=!Ya-ouAQ7wY9f=}B-ah`6zm^hP8P*jE+vQ=q~^do zlur0M{d*IGckxQqkp%4I9hKhBSftRBt6&7X+#RgM-9NI@P$IFoUKV5I*8}wZZL#vc z{asNmv_3$M_g!%=6;9ZGE)a`zC!ixN(S}vcRoss?Ji*O;D?RT58cZumNl8Vnt*~6- zm^#H$&m>lAAyhm*-4F)i3>S#^zDt5QK~LEC{$4?ves+z)pYngfR(%eu81u$v;Tz6u zHd7(L6tS}R&*KLjeiC^&D0ylLyoLPQTb&H^rFSix#uG%S)M(lb* zv>>lOY4j(--W)PV7m_%Fb&_sXoFuGx&hFSI4aoCbTIXO-GiNjo%oGDWRDI=AFeBun z&+`uAG%o4hOGC?MPNH5yQgCi@$3)dS$d@ysJY0B2w?}#D8;^>L6k^thk?*tKxA?-h z$jHu_#?zAHsKJt2$D;5%lscyG_t1c)oSY#;o?$ABD8nBgO}m7JSG`WjdhXUuwtY7) zKCj>8d%BKygUZ}XG2y)EyDlZVBm1y?=s;v z^wH7((_bojj)Cg&;?uiHZ8TbI!V9B~8zaWDyNK62%C}CBtnF#83>-IV^aPox(vYj% zy**2K3;A+y902_FoW3I9c|_K}=0SS)ya!A6&>Uq%`|mc@T>p3z?tPUKCc)W+Ux_?s z&^z0k>>WW{lp@?YWhT4zL1;eh0!&dNM2k|?;jMGE_H+sF=2rCV5WhJE9p_(qY7J}ScOGSa&NDExvL49oe@425dpw09c^u4uJLJU_@US$mw!smdCr-7Lymtndj#D0H1MCmrME)E zg49(`6uF5C#6jEw8Ng71ZoRBgEI>mHnDIO4i)Aiji5XX5!U4qc zjxuR^b=wLwR?&UN?d&3d(Y{*ozP?E~Ux$G+zq_iG4?HHL!Z4Dr zvoW;kRCx6nV%xGsrpzj;n#q7e9I)v>B|LGipE2pIsWFK*kexz&?LIca$qqt75Fd7@ zsTL=ubc3ztf2P$MZz+Jftx?~uF>5mJWKPjL=j2p$tj*gMM`%RgKY6&roa@Z@(jQ*) z9%e&)OS4tQQQaLrK*`_`an)%6sWs{&%}u1v&ies;%g_n zHhiHsn^7m6*s_!`RQO+eR~6RQ60L)~6^a*^(&Fyn;1o$I2a1=L7KfA~p#%uU3dP;s z4ql+Ry9B3LQwR=41Hmmf=RDo_`+DbPzs#QbzL~ZEf3G#O*1u&L;s&W7JckSfqw=19 zt2-z2qM^>uE_^v)A!{MnJuDN!Bgqr^{3<)|D!a7nw+&C^#_X*%UaL=OpqvHyU%@KJ zEMZABeIb@QFsBd?wE`XJSf}WKR>znkk&b(d(n%n(7e|l0!9z{n`QK0lqWY4gLV^@W zIxP}%u1)2y)utPH8E$kJMB1~Mt`2B){C@kf!h?U#PL_lObW6Y8D9Pb#fw7JWk72wX zoS|QQuUp%^NNDPZ${M}HY-@GoV$%E3gb(o68G`~2eL$hg4OckL4lbR$EjPucE|+eK z{z8e%GBzdtsUe+C)$o?J-GtmE`fOmy?5KLz>J@bD=HM8QT6f|oM@}Lu9r@V}Q`&cN zh!9Xq`@PYD__dcJPr)g8QwJ}j9SyhzVx&)i8g-sGe5{d<6ZEI*R-T!%<~mfIgxHjE zrx&8b#?C7(MLP`P@5d#MN8IA`s!b}St}i{x&+PK%5Jm*ffBqaEb7wd;+iq-^r@=3D zMc&>Pr;hEsZRgc7xyRI)dDv;XL2y?;{qqjOSvjU9RHtHR;s~AH7SzpS88xzR=hqQ$ z`LNxR;oCWHjukcFYkN6q&o!qiG59it7Yb~-)JtwgFWRVYgUeE9M=c8JZ&=UPvzK4M z0!j!iA?*+W=V(Y@BVs(Ahhzns!1MP0=6uI1D}8_Jb(Oi)^?kZ6I&q_j>><2l-`j{m zqi1UBNlAoWy$7+@l4W1YX4e%GaxSzCC z1D;=yOO}l0!UmIuS+BXeCkgf*VmvHUg~ zYHnk(&6@m*8e6(vp1)sRG{=NKfW8xB2YcnFMavUi#S_TS9h znrfOgRxs^&+I3;%_?&>4UNL|$^2WRS)u4(aSr8hZOes5I$NF=+l>!9SJ86w?GjyR_ zyE3hIoH^LpW=H4)Y43nSnXe<+G#QLc}POL`d&${z8KC7}J4te>g zpr<*+{!Ks*ym3-_wli%bgJY1*TKS*ChT#HYMMa#! zk1EA@s{4RTt;u}GwaJl9ZaiK>gK86Tz^;z5$@u~pD(6r+}utDgv8gFj;$f`k0S_(`yY{x;69*I|JG}(zN7sbUMlLu5QA{? zv^A$Ufk%Y8(wwi7!=xtOIwqEotUiTDaEa1aRyZxUjMXv@^ecFwk2)W+QKF(N3_sTdd*BFuR zUia&N%=(Rda(7Su-*Kmp<|D$KU)ZOA=>O8GSQo>PG%aF}YT!55v-Y4*r~z6<=+)Dqu&}F%l{dNGS>sCBTKHEI7ofKL z;d*5HrQA{LIfj}RWRoR(AwR%U^KlopEOC9$nfU2$YO>h{EzK-lC`igY-qa{JFy?jG z5q!@`JMt>B&j@>)>92UZMLVDxi?_$#ng~c?5OHxYN5SHAipJasDX)7-$Qrs`pF%q| z$$1eX=I{muY4^j%Im;Huz(|XfF=-C-Pwb-7J?5w$qp%?Lx583|DyfgF%MEh*jMJi{ zw$h3;W*o$S#rR#XQnR-?QDD4xo(Z=c18gN_FUlm|Dql^_Cek*116lR0s)0QAHrjUY z*JCT(_kG-?=3qH?rR-ox5Si%$r-hPg=>>VvS1Qe+j?#NVfF|zYu=P&^roWMZ&nGpK8HZUGejQJRv`&# z3FEiy8$Vnp_D^hm`S&+0oS9fy3a1@J8zHaH4{zCridh7JCve)G6VXdQ)GOtiRH7?( z%(}TXo3mJ&Tphk%c!=qvGP_-(s7AsBbHhCNH~O?i4+VL>@Mb|)pf!D{KlR$%-^iI%cWU@?;x>k4DjCfp0GaxEj)dMAjY!VBLoUh^RFIRw#DU8m` zORt<|F1kWR5yD?;jDfd%hsPff_e72e@j4-61i05PJ`_M{INU%EEB{9r_{kDAk-H@&Z{ zB{ZVvp$u{rwWd2Oix-x9S3u7=N;+TCpG@G$)YHfa3F8mLg?XUNj<700Cdg|@(K!9k z#d3cM@?JSqM8LK|@G!bV#(>R!@{ro^I%k`Zr*}Gs<=Jwc- zg7OvVsm#Ra>|XYOl+&rd26KSgpld?B@$Ohk#jyRdUd+z;r(F3k<@&uWF+%co|Dk~^ z)=vmf<00v9h3cKN?KfPNh#&z)4dV9N%dipK%Ye1EL>TzG{$NlhG;?Eih$n96deb`( zFa+*Mk-AilX-Kh?4UHuPvodN$@Y?VR|9sTgDsz?mB=aiTS$J)*>b|l#T8akzDh!b` zSG6<=+GL3M7hw%wWGJuy!f^>Mlyk{?g}eOw9<#fDSR9W(sP$FgRN9f7b0njm(J|%v z{dBU7@;%%9%55w*{pM7$boS5G=yp@7k0Yy%*ff?0Xd@ zExxqT=g<+N9wq}R9E+Z|T)J;DU_?NE>)U(oHWTllBiV1jq5^ojR6(zd0vM(SSd;s}G|UpwyH)E?AhtgQ|rtU`6kdq&>T!8yOY!k}gV`CGectAmGPWdr=P9}%9 z$TZ15gCs^J3qYe*POEVB#=Jf~6`j6f)l8HrG#uRw3sB=t$RyKw({-|{cIqyQE} zWIoAWol-j=-#~Y*boPUX=kTBG$G;@fW#9Iep|O1D$z)qkC1?$x&)Cp z73g+gH~B+kPWZ-^_QYfig+$7a@G52b(4mZ_A;VNPvgJWK>@i@F!CBN&l)Lt zaU-jkd`@GyFZcRVu-~zf|Fl+QM7!Posu4n~CzU=nR(k>urMKPecU_3%BPj*9Jz~I{ zTsh%|8RAadpOf^!Ju?eV%>QPzGjd1L*eI zNh}~FOts8og23oshg~l)_rUct*JFH}r`_dp^JbI9v`QFsyxQFwgwmtgW#&cCW@&^O zdnr7M?X_U!j{Ww=pBxb6iLW!}ufa=etpCF;=Q5G@JKD_-9r(#Tq#F93POQ((ITyo8a?W*Pf?DVF}Va}DnefS`59Xa=X zinzvbnwgfpMqyh2OIT|72h@=kKiHW^bcL-Y(4MyrMYmg5z{H{xez3F%Z`JJQA*ea% z$mnf!po4c!K>f*sVzk+@`C{;WEX)i{i;Sx&01NR$N+4K{@LYs%Ms+s?H%>A)n_)2BDl5!nb zMrrF5oR4^!P$XoH*_2}3*!AiE(3SfRGI?^jzVY4@zF1He%n)2qM*|Cco+)i^@5*Vbxaej%>WtR6!PII<5d z&qYv6<5hyXqr}lrSU9^9N%uBiVvwT^Nfr z1@-Ymsf+Kbj`YgI?r);z?kwG>{(1GsPIn`PfCJ3)={noX~ zU5=#g28~lsoMD~-1k>8ClFY>YExdcUbGh;}>Z=P|rQKeaHI|+dLK)X6r>8|xjdL+T zIh3M;@E)%e4sH5x=?m3NSMuds!?2^@edDmZSijY8*{p|2JOOk_w!-gln6}2I-@l9` z5ltUZurC|A;fFfaKWMr8H1l1t*GX6leE%2_=GKx?dg)IbXgra)lr&vC(H;xtADnvK zM#$dcO%&^Q#%Equh~;9p$|H-WG-XB} zVJHEEa+O~Aa`3J)Tc(4ag~JDRh3B|3uT8y&&~8nFLNbZ3%T4xzD8ckO4FGt4uN5lKXPvo+_siYoVFcR z=3AVSyJ;Z+5-0%xK=@ck{jb006+vLuj~e~Sa@90{7DK{xn)fqBJ}%q}XJ6E3UcfSK zXsvJi+xWm1=x&I;QfKy#ENn?;bXOZEU&no4A5eL7w~=+{=~as^9ts$J%p&t~U=W9} zE|6-&hbsl2L6C1w4^l>j^^{x)!*NhaTe2&1q8(AVg&SX7m5f*K>VXe@ljIZ@7JXtYZZ1vU!9%`B3ArRQiyZ*;CfA8r>qJi1*b?I6aM$%BvEFI}NGx|dRDr6Lg; z`|zvbZu5#o(f@t8nwEjy!%d*YUDMQXXSu@lw#Xd?1K4!@0p{}s((bR2xnNQ49!JC& zg%dnvr({FU8`D1lTQUdNn^~dziFH(+6iJ>878Z7&+6o?L#7E$b%lI56vIADvpZcdOM@r#aBhi4TZ{)8b?Ht zw;GaJnKS~#2n*192eq1l{&P>9pA=EZcj~)kMgg)_j4ytw*l}8H3aNh$>M{RFZ;8*< zEP4VatI!)Qz~h5o=9T<6B`W>z>}7pFnxb7+FrACc3j>O38)O;VxN8~taJF*;^9 zFS)l{9dz?YE{6>`xdWyPt~ch7WREQ>E}i6)Bx%MWv$gI2xth%hh;TP$Ro5l|^-=#n zKDFcsQwgV$n06p59?}$@4|-0l@`plQEu}~$#E+F3kF2h6$%VWxu&SC%mFJO|Y=IPG zqKZ9h7G5H?+MM`M&XOQ+En2ryQAB4ZP%IvBrMS-3%tQ1#$V`pKfJQGkLA!sJW7R=T z*+8#x()aFKI9aAsUy{&PC_X|Hg724gW&Y@u1x2xqdyh>puPI7X>FAXR_On_eRgF>y zHGmu4)g=sd##BlfIqLn{}HkfBB)Kw-`C`M*%&Il~vv$_0m1e z3QHO}O$w6c_Sg4lx)G9EeV(3lHh}!+uXcrE(|v}A<_xMlu8gW{6?xL}jP}PDxyOvH zx|vre+8=qR>FM(EJ{V+}*8RZAPn|J;K~AZy+Z_zzYLRe=Y5Vz~U-CQFM(4ZOz&bIF zi%GPumeJhZAl~PY-q-gB`n#)+X-QlYu&PTJMT&MJzivkDtR6E7GnI8oqc8w~C`seX zz-k@-_U%#3oQ8hkw3c;@jUKzQietAdh$^OT*M^wKQHqT%@HbI=?RzrO7+|L7dOEQ> zE}`1DNNV|)-reVFLnfHeXks(DlkblhrM@U9ug5VP=0#$QS_utb3&S(^A9kR3*DDxH z`rAA8P4W(ey1KfP3VdGOZaUktfKn1t=UcEUG-XZhHpr3qtnc6-)gEe7w^&-L_l>a?`sxr{fl;IGxhKFlY zJe|_`ca|^zdyu@y@bI63xc_yg+vVcolEQ|W{{NN#>x!*n@Opne1Ke4zBmuBZN5eq9 JTGb}#e*kL`(OCch literal 0 HcmV?d00001 diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..8093b6a --- /dev/null +++ b/package-lock.json @@ -0,0 +1,2956 @@ +{ + "name": "resemblejs", + "version": "2.2.4", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "abab": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/abab/-/abab-1.0.3.tgz", + "integrity": "sha1-uB3l9ydOxOdW15fNg08wNkJyTl0=", + "dev": true + }, + "acorn": { + "version": "4.0.13", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", + "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=", + "dev": true + }, + "acorn-globals": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-3.1.0.tgz", + "integrity": "sha1-/YJw9x+7SZawBPqIDuXUZXOnMb8=", + "dev": true, + "requires": { + "acorn": "4.0.13" + } + }, + "ajv": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", + "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", + "dev": true, + "requires": { + "co": "4.6.0", + "json-stable-stringify": "1.0.1" + } + }, + "align-text": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", + "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", + "dev": true, + "requires": { + "kind-of": "3.2.2", + "longest": "1.0.1", + "repeat-string": "1.6.1" + } + }, + "amdefine": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", + "dev": true + }, + "ansi-escapes": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz", + "integrity": "sha1-06ioOzGapneTZisT52HHkRQiMG4=", + "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": "1.3.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz", + "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==", + "dev": true, + "requires": { + "micromatch": "2.3.11", + "normalize-path": "2.1.1" + } + }, + "append-transform": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-0.4.0.tgz", + "integrity": "sha1-126/jKlNJ24keja61EpLdKthGZE=", + "dev": true, + "requires": { + "default-require-extensions": "1.0.0" + } + }, + "argparse": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz", + "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=", + "dev": true, + "requires": { + "sprintf-js": "1.0.3" + } + }, + "arr-diff": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=", + "dev": true, + "requires": { + "arr-flatten": "1.1.0" + } + }, + "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 + }, + "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.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", + "dev": true + }, + "arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "dev": true + }, + "asn1": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", + "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=", + "dev": true + }, + "assert-plus": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz", + "integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ=", + "dev": true + }, + "assertion-error": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.0.2.tgz", + "integrity": "sha1-E8pRXYYgbaC6xm6DTdOX2HWBCUw=", + "dev": true + }, + "async": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/async/-/async-2.5.0.tgz", + "integrity": "sha512-e+lJAJeNWuPCNyxZKOBdaJGyLGHugXVQtrAwtuAe2vhxTYxFTKE73p8JuTmdH0qdQZtDvI4dhJwjZc5zsfIsYw==", + "dev": true, + "requires": { + "lodash": "4.17.4" + } + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true + }, + "aws-sign2": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz", + "integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8=", + "dev": true + }, + "aws4": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.6.0.tgz", + "integrity": "sha1-g+9cqGCysy5KDe7e6MdxudtXRx4=", + "dev": true + }, + "babel-code-frame": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.22.0.tgz", + "integrity": "sha1-AnYgvuVnqIwyVhV05/0IAdMxGOQ=", + "dev": true, + "requires": { + "chalk": "1.1.3", + "esutils": "2.0.2", + "js-tokens": "3.0.2" + } + }, + "babel-core": { + "version": "6.25.0", + "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.25.0.tgz", + "integrity": "sha1-fdQrBGPHQunVKW3rPsZ6kyLa1yk=", + "dev": true, + "requires": { + "babel-code-frame": "6.22.0", + "babel-generator": "6.25.0", + "babel-helpers": "6.24.1", + "babel-messages": "6.23.0", + "babel-register": "6.24.1", + "babel-runtime": "6.25.0", + "babel-template": "6.25.0", + "babel-traverse": "6.25.0", + "babel-types": "6.25.0", + "babylon": "6.17.4", + "convert-source-map": "1.5.0", + "debug": "2.6.8", + "json5": "0.5.1", + "lodash": "4.17.4", + "minimatch": "3.0.4", + "path-is-absolute": "1.0.1", + "private": "0.1.7", + "slash": "1.0.0", + "source-map": "0.5.6" + } + }, + "babel-generator": { + "version": "6.25.0", + "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.25.0.tgz", + "integrity": "sha1-M6GvcNXyiQrrRlpKd5PB32qeqfw=", + "dev": true, + "requires": { + "babel-messages": "6.23.0", + "babel-runtime": "6.25.0", + "babel-types": "6.25.0", + "detect-indent": "4.0.0", + "jsesc": "1.3.0", + "lodash": "4.17.4", + "source-map": "0.5.6", + "trim-right": "1.0.1" + } + }, + "babel-helpers": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", + "integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=", + "dev": true, + "requires": { + "babel-runtime": "6.25.0", + "babel-template": "6.25.0" + } + }, + "babel-jest": { + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-20.0.3.tgz", + "integrity": "sha1-5KA7E9wQOJ4UD8ZF0J/8TO0wFnE=", + "dev": true, + "requires": { + "babel-core": "6.25.0", + "babel-plugin-istanbul": "4.1.4", + "babel-preset-jest": "20.0.3" + } + }, + "babel-messages": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", + "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", + "dev": true, + "requires": { + "babel-runtime": "6.25.0" + } + }, + "babel-plugin-istanbul": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-4.1.4.tgz", + "integrity": "sha1-GN3oS/POMp/d8/QQP66SFFbY5Yc=", + "dev": true, + "requires": { + "find-up": "2.1.0", + "istanbul-lib-instrument": "1.7.4", + "test-exclude": "4.1.1" + } + }, + "babel-plugin-jest-hoist": { + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-20.0.3.tgz", + "integrity": "sha1-r+3IU70/jcNUjqZx++adA8wsF2c=", + "dev": true + }, + "babel-preset-jest": { + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-20.0.3.tgz", + "integrity": "sha1-y6yq3stdaJyh4d4TYOv8ZoYsF4o=", + "dev": true, + "requires": { + "babel-plugin-jest-hoist": "20.0.3" + } + }, + "babel-register": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.24.1.tgz", + "integrity": "sha1-fhDhOi9xBlvfrVoXh7pFvKbe118=", + "dev": true, + "requires": { + "babel-core": "6.25.0", + "babel-runtime": "6.25.0", + "core-js": "2.4.1", + "home-or-tmp": "2.0.0", + "lodash": "4.17.4", + "mkdirp": "0.5.1", + "source-map-support": "0.4.15" + } + }, + "babel-runtime": { + "version": "6.25.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.25.0.tgz", + "integrity": "sha1-M7mOql1IK7AajRqmtDetKwGuxBw=", + "dev": true, + "requires": { + "core-js": "2.4.1", + "regenerator-runtime": "0.10.5" + } + }, + "babel-template": { + "version": "6.25.0", + "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.25.0.tgz", + "integrity": "sha1-ZlJBFmt8KqTGGdceGSlpVSsQwHE=", + "dev": true, + "requires": { + "babel-runtime": "6.25.0", + "babel-traverse": "6.25.0", + "babel-types": "6.25.0", + "babylon": "6.17.4", + "lodash": "4.17.4" + } + }, + "babel-traverse": { + "version": "6.25.0", + "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.25.0.tgz", + "integrity": "sha1-IldJfi/NGbie3BPEyROB+VEklvE=", + "dev": true, + "requires": { + "babel-code-frame": "6.22.0", + "babel-messages": "6.23.0", + "babel-runtime": "6.25.0", + "babel-types": "6.25.0", + "babylon": "6.17.4", + "debug": "2.6.8", + "globals": "9.18.0", + "invariant": "2.2.2", + "lodash": "4.17.4" + } + }, + "babel-types": { + "version": "6.25.0", + "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.25.0.tgz", + "integrity": "sha1-cK+ySNVmDl0Y+BHZHIMDtUE0oY4=", + "dev": true, + "requires": { + "babel-runtime": "6.25.0", + "esutils": "2.0.2", + "lodash": "4.17.4", + "to-fast-properties": "1.0.3" + } + }, + "babylon": { + "version": "6.17.4", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.17.4.tgz", + "integrity": "sha512-kChlV+0SXkjE0vUn9OZ7pBMWRFd8uq3mZe8x1K6jhuNcAFAtEnjchFAqB+dYEXKyd+JpT6eppRR78QAr5gTsUw==", + "dev": true + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "bcrypt-pbkdf": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", + "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=", + "dev": true, + "optional": true, + "requires": { + "tweetnacl": "0.14.5" + } + }, + "boom": { + "version": "2.10.1", + "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz", + "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=", + "dev": true, + "requires": { + "hoek": "2.16.3" + } + }, + "brace-expansion": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", + "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", + "dev": true, + "requires": { + "balanced-match": "1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=", + "dev": true, + "requires": { + "expand-range": "1.8.2", + "preserve": "0.2.0", + "repeat-element": "1.1.2" + } + }, + "browser-resolve": { + "version": "1.11.2", + "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.2.tgz", + "integrity": "sha1-j/CbCixCFxihBRwmCzLkj0QpOM4=", + "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" + } + }, + "builtin-modules": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", + "dev": true + }, + "callsites": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", + "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=", + "dev": true + }, + "camelcase": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", + "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", + "dev": true, + "optional": true + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "dev": true + }, + "center-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", + "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", + "dev": true, + "optional": true, + "requires": { + "align-text": "0.1.4", + "lazy-cache": "1.0.4" + } + }, + "chai": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/chai/-/chai-3.5.0.tgz", + "integrity": "sha1-TQJjewZ/6Vi9v906QOxW/vc3Mkc=", + "dev": true, + "requires": { + "assertion-error": "1.0.2", + "deep-eql": "0.1.3", + "type-detect": "1.0.0" + } + }, + "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.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "ci-info": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.0.0.tgz", + "integrity": "sha1-3FKF8rTiUYIWg2gcOBwziPRuxTQ=", + "dev": true + }, + "cliui": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", + "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", + "dev": true, + "optional": true, + "requires": { + "center-align": "0.1.3", + "right-align": "0.1.3", + "wordwrap": "0.0.2" + }, + "dependencies": { + "wordwrap": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", + "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", + "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 + }, + "color-convert": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.0.tgz", + "integrity": "sha1-Gsz5fdc5uYO/mU1W/sj5WFNkG3o=", + "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.5", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.5.tgz", + "integrity": "sha1-k4NwpXtKUd6ix3wV1cX9+JUWQAk=", + "dev": true, + "requires": { + "delayed-stream": "1.0.0" + } + }, + "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 + }, + "content-type-parser": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/content-type-parser/-/content-type-parser-1.0.1.tgz", + "integrity": "sha1-w+VpiMU8ZRJ/tG1AMqOpACRv3JQ=", + "dev": true + }, + "convert-source-map": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.5.0.tgz", + "integrity": "sha1-ms1whRxtXf3ZPZKC5e35SgP/RrU=", + "dev": true + }, + "core-js": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.4.1.tgz", + "integrity": "sha1-TekR5mew6ukSTjQlS1OupvxhjT4=", + "dev": true + }, + "cryptiles": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz", + "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=", + "dev": true, + "requires": { + "boom": "2.10.1" + } + }, + "cssom": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.2.tgz", + "integrity": "sha1-uANhcMefB6kP8vFuIihAJ6JDhIs=", + "dev": true + }, + "cssstyle": { + "version": "0.2.37", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-0.2.37.tgz", + "integrity": "sha1-VBCXI0yyUTyDzu06zdwn/yeYfVQ=", + "dev": true, + "requires": { + "cssom": "0.3.2" + } + }, + "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" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + } + } + }, + "debug": { + "version": "2.6.8", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.8.tgz", + "integrity": "sha1-5zFTHKLt4n0YgiJCfaF4IdaP9Pw=", + "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 + }, + "deep-eql": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-0.1.3.tgz", + "integrity": "sha1-71WKyrjeJSBs1xOQbXTlaTDrafI=", + "dev": true, + "requires": { + "type-detect": "0.1.1" + }, + "dependencies": { + "type-detect": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-0.1.1.tgz", + "integrity": "sha1-C6XsKohWQORw6k6FBZcZANrFiCI=", + "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": "1.0.0", + "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-1.0.0.tgz", + "integrity": "sha1-836hXT4T/9m0N9M+GnW1+5eHTLg=", + "dev": true, + "requires": { + "strip-bom": "2.0.0" + } + }, + "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-indent": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", + "integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=", + "dev": true, + "requires": { + "repeating": "2.0.1" + } + }, + "diff": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.3.0.tgz", + "integrity": "sha512-w0XZubFWn0Adlsapj9EAWX0FqWdO4tz8kc3RiYdWLh4k/V8PTb6i0SMgXt0vRM3zyKnT8tKO7mUlieRQHIjMNg==", + "dev": true + }, + "ecc-jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz", + "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=", + "dev": true, + "optional": true, + "requires": { + "jsbn": "0.1.1" + } + }, + "errno": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.4.tgz", + "integrity": "sha1-uJbiOp5ei6M4cfyZar02NfyaHH0=", + "dev": true, + "requires": { + "prr": "0.0.0" + } + }, + "error-ex": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", + "integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=", + "dev": true, + "requires": { + "is-arrayish": "0.2.1" + } + }, + "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.8.1", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.8.1.tgz", + "integrity": "sha1-WltTr0aTEQvrsIZ6o0MN07cKEBg=", + "dev": true, + "requires": { + "esprima": "2.7.3", + "estraverse": "1.9.3", + "esutils": "2.0.2", + "optionator": "0.8.2", + "source-map": "0.2.0" + }, + "dependencies": { + "esprima": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", + "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=", + "dev": true + }, + "source-map": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.2.0.tgz", + "integrity": "sha1-2rc/vPwrqBm03gO9b26qSBZLP50=", + "dev": true, + "optional": true, + "requires": { + "amdefine": "1.0.1" + } + } + } + }, + "esprima": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", + "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==", + "dev": true + }, + "estraverse": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-1.9.3.tgz", + "integrity": "sha1-r2fy3JIlgkFZUJJgkaQAXSnJu0Q=", + "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.2.0", + "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.2.0.tgz", + "integrity": "sha1-FPdd4/INKG75MwmbLOUKkDWc7xA=", + "dev": true, + "requires": { + "merge": "1.2.0" + } + }, + "expand-brackets": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=", + "dev": true, + "requires": { + "is-posix-bracket": "0.1.1" + } + }, + "expand-range": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", + "integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=", + "dev": true, + "requires": { + "fill-range": "2.2.3" + } + }, + "extend": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", + "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=", + "dev": true + }, + "extglob": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=", + "dev": true, + "requires": { + "is-extglob": "1.0.0" + } + }, + "extsprintf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.0.2.tgz", + "integrity": "sha1-4QgOBljjALBilJkMxw4VAiNf1VA=", + "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" + } + }, + "filename-regex": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", + "integrity": "sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY=", + "dev": true + }, + "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.1.2", + "minimatch": "3.0.4" + } + }, + "fill-range": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.3.tgz", + "integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=", + "dev": true, + "requires": { + "is-number": "2.1.0", + "isobject": "2.1.0", + "randomatic": "1.1.7", + "repeat-element": "1.1.2", + "repeat-string": "1.6.1" + } + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "2.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 + }, + "for-own": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", + "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", + "dev": true, + "requires": { + "for-in": "1.0.2" + } + }, + "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.1.4", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz", + "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=", + "dev": true, + "requires": { + "asynckit": "0.4.0", + "combined-stream": "1.0.5", + "mime-types": "2.1.16" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "get-caller-file": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", + "integrity": "sha1-9wLmMSfn4jHBYKgMFVSstw1QR+U=", + "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" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + } + } + }, + "glob": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", + "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", + "dev": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "glob-base": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", + "integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=", + "dev": true, + "requires": { + "glob-parent": "2.0.0", + "is-glob": "2.0.1" + } + }, + "glob-parent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", + "integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=", + "dev": true, + "requires": { + "is-glob": "2.0.1" + } + }, + "globals": { + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", + "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", + "dev": true + }, + "graceful-fs": { + "version": "4.1.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", + "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.0.10", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.10.tgz", + "integrity": "sha1-PTDHGLCaPZbyPqTMH0A8TTup/08=", + "dev": true, + "requires": { + "async": "1.5.2", + "optimist": "0.6.1", + "source-map": "0.4.4", + "uglify-js": "2.8.29" + }, + "dependencies": { + "async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", + "dev": true + }, + "source-map": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", + "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", + "dev": true, + "requires": { + "amdefine": "1.0.1" + } + } + } + }, + "har-schema": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-1.0.5.tgz", + "integrity": "sha1-0mMTX0MwfALGAq/I/pWXDAFRNp4=", + "dev": true + }, + "har-validator": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-4.2.1.tgz", + "integrity": "sha1-M0gdDxu/9gDdID11gSpqX7oALio=", + "dev": true, + "requires": { + "ajv": "4.11.8", + "har-schema": "1.0.5" + } + }, + "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.1.1" + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "dev": true + }, + "hawk": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz", + "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=", + "dev": true, + "requires": { + "boom": "2.10.1", + "cryptiles": "2.0.5", + "hoek": "2.16.3", + "sntp": "1.0.9" + } + }, + "hoek": { + "version": "2.16.3", + "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz", + "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=", + "dev": true + }, + "home-or-tmp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", + "integrity": "sha1-42w/LSyufXRqhX440Y1fMqeILbg=", + "dev": true, + "requires": { + "os-homedir": "1.0.2", + "os-tmpdir": "1.0.2" + } + }, + "hosted-git-info": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.5.0.tgz", + "integrity": "sha512-pNgbURSuab90KbTqvRPsseaTxOJCZBD0a7t+haSN33piP9cCM4l0CqdzAif2hUqm716UovKB2ROmiabGAKVXyg==", + "dev": true + }, + "html-encoding-sniffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.1.tgz", + "integrity": "sha1-eb96eF6klf5mFl5zQVPzY/9UN9o=", + "dev": true, + "requires": { + "whatwg-encoding": "1.0.1" + } + }, + "http-signature": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz", + "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=", + "dev": true, + "requires": { + "assert-plus": "0.2.0", + "jsprim": "1.4.0", + "sshpk": "1.13.1" + } + }, + "iconv-lite": { + "version": "0.4.13", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.13.tgz", + "integrity": "sha1-H4irpKsLFQjoMSrMOTRfNumS4vI=", + "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.4.0", + "wrappy": "1.0.2" + } + }, + "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.2", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.2.tgz", + "integrity": "sha1-nh9WrArNtr8wMwbzOL47IErmA2A=", + "dev": true, + "requires": { + "loose-envify": "1.3.1" + } + }, + "invert-kv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", + "dev": true + }, + "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.5", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.5.tgz", + "integrity": "sha1-Hzsm72E7IUuIy8ojzGwB2Hlh7sw=", + "dev": true + }, + "is-builtin-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", + "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", + "dev": true, + "requires": { + "builtin-modules": "1.1.1" + } + }, + "is-ci": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.0.10.tgz", + "integrity": "sha1-9zkzayYyNlBhqdSCcM1WrjNpMY4=", + "dev": true, + "requires": { + "ci-info": "1.0.0" + } + }, + "is-dotfile": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", + "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", + "dev": true + }, + "is-equal-shallow": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", + "integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=", + "dev": true, + "requires": { + "is-primitive": "2.0.0" + } + }, + "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-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA=", + "dev": true + }, + "is-finite": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", + "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "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.1" + } + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=", + "dev": true, + "requires": { + "is-extglob": "1.0.0" + } + }, + "is-number": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", + "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=", + "dev": true, + "requires": { + "kind-of": "3.2.2" + } + }, + "is-posix-bracket": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", + "integrity": "sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q=", + "dev": true + }, + "is-primitive": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", + "integrity": "sha1-IHurkWOEmcB7Kt8kCkGochADRXU=", + "dev": true + }, + "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-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", + "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": "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" + } + }, + "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": "1.1.11", + "resolved": "https://registry.npmjs.org/istanbul-api/-/istanbul-api-1.1.11.tgz", + "integrity": "sha1-/MC0YeKzvaceMFFVE4I4doJX2d4=", + "dev": true, + "requires": { + "async": "2.5.0", + "fileset": "2.0.3", + "istanbul-lib-coverage": "1.1.1", + "istanbul-lib-hook": "1.0.7", + "istanbul-lib-instrument": "1.7.4", + "istanbul-lib-report": "1.1.1", + "istanbul-lib-source-maps": "1.2.1", + "istanbul-reports": "1.1.1", + "js-yaml": "3.9.0", + "mkdirp": "0.5.1", + "once": "1.4.0" + } + }, + "istanbul-lib-coverage": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-1.1.1.tgz", + "integrity": "sha512-0+1vDkmzxqJIn5rcoEqapSB4DmPxE31EtI2dF2aCkV5esN9EWHxZ0dwgDClivMXJqE7zaYQxq30hj5L0nlTN5Q==", + "dev": true + }, + "istanbul-lib-hook": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-1.0.7.tgz", + "integrity": "sha512-3U2HB9y1ZV9UmFlE12Fx+nPtFqIymzrqCksrXujm3NVbAZIJg/RfYgO1XiIa0mbmxTjWpVEVlkIZJ25xVIAfkQ==", + "dev": true, + "requires": { + "append-transform": "0.4.0" + } + }, + "istanbul-lib-instrument": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-1.7.4.tgz", + "integrity": "sha1-6f2SDkdn89Ge3HZeLWs/XMvQ7qg=", + "dev": true, + "requires": { + "babel-generator": "6.25.0", + "babel-template": "6.25.0", + "babel-traverse": "6.25.0", + "babel-types": "6.25.0", + "babylon": "6.17.4", + "istanbul-lib-coverage": "1.1.1", + "semver": "5.4.1" + } + }, + "istanbul-lib-report": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-1.1.1.tgz", + "integrity": "sha512-tvF+YmCmH4thnez6JFX06ujIA19WPa9YUiwjc1uALF2cv5dmE3It8b5I8Ob7FHJ70H9Y5yF+TDkVa/mcADuw1Q==", + "dev": true, + "requires": { + "istanbul-lib-coverage": "1.1.1", + "mkdirp": "0.5.1", + "path-parse": "1.0.5", + "supports-color": "3.2.3" + }, + "dependencies": { + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "1.0.0" + } + } + } + }, + "istanbul-lib-source-maps": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.1.tgz", + "integrity": "sha512-mukVvSXCn9JQvdJl8wP/iPhqig0MRtuWuD4ZNKo6vB2Ik//AmhAKe3QnPN02dmkRe3lTudFk3rzoHhwU4hb94w==", + "dev": true, + "requires": { + "debug": "2.6.8", + "istanbul-lib-coverage": "1.1.1", + "mkdirp": "0.5.1", + "rimraf": "2.6.1", + "source-map": "0.5.6" + } + }, + "istanbul-reports": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-1.1.1.tgz", + "integrity": "sha512-P8G873A0kW24XRlxHVGhMJBhQ8gWAec+dae7ZxOBzxT4w+a9ATSPvRVK3LB1RAJ9S8bg2tOyWHAGW40Zd2dKfw==", + "dev": true, + "requires": { + "handlebars": "4.0.10" + } + }, + "jest": { + "version": "20.0.4", + "resolved": "https://registry.npmjs.org/jest/-/jest-20.0.4.tgz", + "integrity": "sha1-PdJgwpidba1nix6cxNkZRPbWAqw=", + "dev": true, + "requires": { + "jest-cli": "20.0.4" + }, + "dependencies": { + "jest-cli": { + "version": "20.0.4", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-20.0.4.tgz", + "integrity": "sha1-5TKxnYiuW8bEF+iwWTpv6VSx3JM=", + "dev": true, + "requires": { + "ansi-escapes": "1.4.0", + "callsites": "2.0.0", + "chalk": "1.1.3", + "graceful-fs": "4.1.11", + "is-ci": "1.0.10", + "istanbul-api": "1.1.11", + "istanbul-lib-coverage": "1.1.1", + "istanbul-lib-instrument": "1.7.4", + "istanbul-lib-source-maps": "1.2.1", + "jest-changed-files": "20.0.3", + "jest-config": "20.0.4", + "jest-docblock": "20.0.3", + "jest-environment-jsdom": "20.0.3", + "jest-haste-map": "20.0.4", + "jest-jasmine2": "20.0.4", + "jest-message-util": "20.0.3", + "jest-regex-util": "20.0.3", + "jest-resolve-dependencies": "20.0.3", + "jest-runtime": "20.0.4", + "jest-snapshot": "20.0.3", + "jest-util": "20.0.3", + "micromatch": "2.3.11", + "node-notifier": "5.1.2", + "pify": "2.3.0", + "slash": "1.0.0", + "string-length": "1.0.1", + "throat": "3.2.0", + "which": "1.2.14", + "worker-farm": "1.4.1", + "yargs": "7.1.0" + } + } + } + }, + "jest-changed-files": { + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-20.0.3.tgz", + "integrity": "sha1-k5TVzGXEOEBhSb7xv01Sto4D4/g=", + "dev": true + }, + "jest-config": { + "version": "20.0.4", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-20.0.4.tgz", + "integrity": "sha1-43kwqyIXyRNgXv8T5712PsSPruo=", + "dev": true, + "requires": { + "chalk": "1.1.3", + "glob": "7.1.2", + "jest-environment-jsdom": "20.0.3", + "jest-environment-node": "20.0.3", + "jest-jasmine2": "20.0.4", + "jest-matcher-utils": "20.0.3", + "jest-regex-util": "20.0.3", + "jest-resolve": "20.0.4", + "jest-validate": "20.0.3", + "pretty-format": "20.0.3" + } + }, + "jest-diff": { + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-20.0.3.tgz", + "integrity": "sha1-gfKI/Z5nXw+yPHXxwrGURf5YZhc=", + "dev": true, + "requires": { + "chalk": "1.1.3", + "diff": "3.3.0", + "jest-matcher-utils": "20.0.3", + "pretty-format": "20.0.3" + } + }, + "jest-docblock": { + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-20.0.3.tgz", + "integrity": "sha1-F76phDQswz2DxQ++FUXqDvqkRxI=", + "dev": true + }, + "jest-environment-jsdom": { + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-20.0.3.tgz", + "integrity": "sha1-BIqKwS7iJfcZBBdxODS7mZeH3pk=", + "dev": true, + "requires": { + "jest-mock": "20.0.3", + "jest-util": "20.0.3", + "jsdom": "9.12.0" + } + }, + "jest-environment-node": { + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-20.0.3.tgz", + "integrity": "sha1-1Ii8RhKvLCRumG6K52caCZFj1AM=", + "dev": true, + "requires": { + "jest-mock": "20.0.3", + "jest-util": "20.0.3" + } + }, + "jest-haste-map": { + "version": "20.0.4", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-20.0.4.tgz", + "integrity": "sha1-ZT61XIic48Ah97lGk/IKQVm63wM=", + "dev": true, + "requires": { + "fb-watchman": "2.0.0", + "graceful-fs": "4.1.11", + "jest-docblock": "20.0.3", + "micromatch": "2.3.11", + "sane": "1.6.0", + "worker-farm": "1.4.1" + } + }, + "jest-jasmine2": { + "version": "20.0.4", + "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-20.0.4.tgz", + "integrity": "sha1-/MWxQReA2RHQQpAu8YWehS5g1eE=", + "dev": true, + "requires": { + "chalk": "1.1.3", + "graceful-fs": "4.1.11", + "jest-diff": "20.0.3", + "jest-matcher-utils": "20.0.3", + "jest-matchers": "20.0.3", + "jest-message-util": "20.0.3", + "jest-snapshot": "20.0.3", + "once": "1.4.0", + "p-map": "1.1.1" + } + }, + "jest-matcher-utils": { + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-20.0.3.tgz", + "integrity": "sha1-s6a443yld4A7CDKpixZPRLeBVhI=", + "dev": true, + "requires": { + "chalk": "1.1.3", + "pretty-format": "20.0.3" + } + }, + "jest-matchers": { + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/jest-matchers/-/jest-matchers-20.0.3.tgz", + "integrity": "sha1-ymnbHDLbWm9wf6XgQBq7VXAN/WA=", + "dev": true, + "requires": { + "jest-diff": "20.0.3", + "jest-matcher-utils": "20.0.3", + "jest-message-util": "20.0.3", + "jest-regex-util": "20.0.3" + } + }, + "jest-message-util": { + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-20.0.3.tgz", + "integrity": "sha1-auwoRDBvyw5udNV5bBAG2W/dgxw=", + "dev": true, + "requires": { + "chalk": "1.1.3", + "micromatch": "2.3.11", + "slash": "1.0.0" + } + }, + "jest-mock": { + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-20.0.3.tgz", + "integrity": "sha1-i8Bw6QQUqhVcEajWTIaaDVxx2lk=", + "dev": true + }, + "jest-regex-util": { + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-20.0.3.tgz", + "integrity": "sha1-hburXRM+RGJbGfr4xqpRItCF12I=", + "dev": true + }, + "jest-resolve": { + "version": "20.0.4", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-20.0.4.tgz", + "integrity": "sha1-lEiz6La6/BVHlETGSZBFt//ll6U=", + "dev": true, + "requires": { + "browser-resolve": "1.11.2", + "is-builtin-module": "1.0.0", + "resolve": "1.4.0" + } + }, + "jest-resolve-dependencies": { + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-20.0.3.tgz", + "integrity": "sha1-bhSntxevDyyzZnxUneQK8Bexcjo=", + "dev": true, + "requires": { + "jest-regex-util": "20.0.3" + } + }, + "jest-runtime": { + "version": "20.0.4", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-20.0.4.tgz", + "integrity": "sha1-osgCIZxCA/dU3xQE5JAYYWnRJNg=", + "dev": true, + "requires": { + "babel-core": "6.25.0", + "babel-jest": "20.0.3", + "babel-plugin-istanbul": "4.1.4", + "chalk": "1.1.3", + "convert-source-map": "1.5.0", + "graceful-fs": "4.1.11", + "jest-config": "20.0.4", + "jest-haste-map": "20.0.4", + "jest-regex-util": "20.0.3", + "jest-resolve": "20.0.4", + "jest-util": "20.0.3", + "json-stable-stringify": "1.0.1", + "micromatch": "2.3.11", + "strip-bom": "3.0.0", + "yargs": "7.1.0" + }, + "dependencies": { + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + } + } + }, + "jest-snapshot": { + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-20.0.3.tgz", + "integrity": "sha1-W4R+GtsaTZCFKn+fElCG4YfHZWY=", + "dev": true, + "requires": { + "chalk": "1.1.3", + "jest-diff": "20.0.3", + "jest-matcher-utils": "20.0.3", + "jest-util": "20.0.3", + "natural-compare": "1.4.0", + "pretty-format": "20.0.3" + } + }, + "jest-util": { + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-20.0.3.tgz", + "integrity": "sha1-DAf32A2C9OWmfG+LnD/n9lz9Mq0=", + "dev": true, + "requires": { + "chalk": "1.1.3", + "graceful-fs": "4.1.11", + "jest-message-util": "20.0.3", + "jest-mock": "20.0.3", + "jest-validate": "20.0.3", + "leven": "2.1.0", + "mkdirp": "0.5.1" + } + }, + "jest-validate": { + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-20.0.3.tgz", + "integrity": "sha1-0M/R3k9XnymEhJJcKA+PHZTsPKs=", + "dev": true, + "requires": { + "chalk": "1.1.3", + "jest-matcher-utils": "20.0.3", + "leven": "2.1.0", + "pretty-format": "20.0.3" + } + }, + "js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", + "dev": true + }, + "js-yaml": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.9.0.tgz", + "integrity": "sha512-0LoUNELX4S+iofCT8f4uEHIiRBR+c2AINyC8qRWfC6QNruLtxVZRJaPcu/xwMgFIgDxF25tGHaDjvxzJCNE9yw==", + "dev": true, + "requires": { + "argparse": "1.0.9", + "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, + "optional": true + }, + "jsdom": { + "version": "9.12.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-9.12.0.tgz", + "integrity": "sha1-6MVG//ywbADUgzyoRBD+1/igl9Q=", + "dev": true, + "requires": { + "abab": "1.0.3", + "acorn": "4.0.13", + "acorn-globals": "3.1.0", + "array-equal": "1.0.0", + "content-type-parser": "1.0.1", + "cssom": "0.3.2", + "cssstyle": "0.2.37", + "escodegen": "1.8.1", + "html-encoding-sniffer": "1.0.1", + "nwmatcher": "1.4.1", + "parse5": "1.5.1", + "request": "2.81.0", + "sax": "1.2.4", + "symbol-tree": "3.2.2", + "tough-cookie": "2.3.2", + "webidl-conversions": "4.0.1", + "whatwg-encoding": "1.0.1", + "whatwg-url": "4.8.0", + "xml-name-validator": "2.0.1" + } + }, + "jsesc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", + "integrity": "sha1-RsP+yMGJKxKwgz25vHYiF226s0s=", + "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-stable-stringify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", + "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", + "dev": true, + "requires": { + "jsonify": "0.0.0" + } + }, + "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": "0.5.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", + "dev": true + }, + "jsonify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", + "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", + "dev": true + }, + "jsprim": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.0.tgz", + "integrity": "sha1-o7h+QCmNjDgFUtjMdiigu5WiKRg=", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.0.2", + "json-schema": "0.2.3", + "verror": "1.3.6" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + } + } + }, + "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" + } + }, + "lazy-cache": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", + "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", + "dev": true, + "optional": true + }, + "lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "dev": true, + "requires": { + "invert-kv": "1.0.0" + } + }, + "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" + } + }, + "load-json-file": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "parse-json": "2.2.0", + "pify": "2.3.0", + "pinkie-promise": "2.0.1", + "strip-bom": "2.0.0" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "2.0.0", + "path-exists": "3.0.0" + } + }, + "lodash": { + "version": "4.17.4", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.4.tgz", + "integrity": "sha1-eCA6TRwyiuHYbcpkYONptX9AVa4=", + "dev": true + }, + "longest": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", + "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", + "dev": true + }, + "loose-envify": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.3.1.tgz", + "integrity": "sha1-0aitM/qc4OcT1l/dCsi3SNR4yEg=", + "dev": true, + "requires": { + "js-tokens": "3.0.2" + } + }, + "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.4" + } + }, + "merge": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/merge/-/merge-1.2.0.tgz", + "integrity": "sha1-dTHjnUlJwoGma4xabgJl6LBYlNo=", + "dev": true + }, + "micromatch": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=", + "dev": true, + "requires": { + "arr-diff": "2.0.0", + "array-unique": "0.2.1", + "braces": "1.8.5", + "expand-brackets": "0.1.5", + "extglob": "0.3.2", + "filename-regex": "2.0.1", + "is-extglob": "1.0.0", + "is-glob": "2.0.1", + "kind-of": "3.2.2", + "normalize-path": "2.1.1", + "object.omit": "2.0.1", + "parse-glob": "3.0.4", + "regex-cache": "0.4.3" + } + }, + "mime-db": { + "version": "1.29.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.29.0.tgz", + "integrity": "sha1-SNJtI1WJZRcErFkWygYAGRQmaHg=", + "dev": true + }, + "mime-types": { + "version": "2.1.16", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.16.tgz", + "integrity": "sha1-K4WKUuXs1RbbiXrCvodIeDBpjiM=", + "dev": true, + "requires": { + "mime-db": "1.29.0" + } + }, + "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.8" + } + }, + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true + }, + "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" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "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 + }, + "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-notifier": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-5.1.2.tgz", + "integrity": "sha1-L6nhJgX6EACdRFSdb82KY93g5P8=", + "dev": true, + "requires": { + "growly": "1.3.0", + "semver": "5.4.1", + "shellwords": "0.1.0", + "which": "1.2.14" + } + }, + "normalize-package-data": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz", + "integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==", + "dev": true, + "requires": { + "hosted-git-info": "2.5.0", + "is-builtin-module": "1.0.0", + "semver": "5.4.1", + "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.2" + } + }, + "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 + }, + "nwmatcher": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/nwmatcher/-/nwmatcher-1.4.1.tgz", + "integrity": "sha1-eumwew6oBNt+JfBctf5Al9TklJ8=", + "dev": true + }, + "oauth-sign": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz", + "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=", + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + }, + "object.omit": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", + "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=", + "dev": true, + "requires": { + "for-own": "0.1.5", + "is-extendable": "0.1.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.0.2" + } + }, + "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.8", + "wordwrap": "0.0.3" + } + }, + "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.6", + "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-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "dev": true + }, + "os-locale": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", + "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", + "dev": true, + "requires": { + "lcid": "1.0.0" + } + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "dev": true + }, + "p-limit": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.1.0.tgz", + "integrity": "sha1-sH/y2aXYi+yAYDWJWiurZqJ5iLw=", + "dev": true + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "requires": { + "p-limit": "1.1.0" + } + }, + "p-map": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-1.1.1.tgz", + "integrity": "sha1-BfXkrpegaDcbwqXMhr+9vBnErno=", + "dev": true + }, + "parse-glob": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", + "integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=", + "dev": true, + "requires": { + "glob-base": "0.3.0", + "is-dotfile": "1.0.3", + "is-extglob": "1.0.0", + "is-glob": "2.0.1" + } + }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "dev": true, + "requires": { + "error-ex": "1.3.1" + } + }, + "parse5": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-1.5.1.tgz", + "integrity": "sha1-m387DeMr543CQBsXVzzK8Pb1nZQ=", + "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-parse": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", + "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", + "dev": true + }, + "path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" + } + }, + "performance-now": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-0.2.0.tgz", + "integrity": "sha1-M+8wxcd9TqIcWlOGnZG1bY8lVeU=", + "dev": true + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "dev": true + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "dev": true, + "requires": { + "pinkie": "2.0.4" + } + }, + "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 + }, + "preserve": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", + "integrity": "sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks=", + "dev": true + }, + "pretty-format": { + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-20.0.3.tgz", + "integrity": "sha1-Ag41ClYKH+GpjcO+tsz/s4beixQ=", + "dev": true, + "requires": { + "ansi-regex": "2.1.1", + "ansi-styles": "3.2.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.0.tgz", + "integrity": "sha512-NnSOmMEYtVR2JVMIGTzynRkkaxtiq1xnFBcdQD/DnNCYPoEPsVJhM98BDyaoNOQIi7p4okdi3E27eN7GQbsUug==", + "dev": true, + "requires": { + "color-convert": "1.9.0" + } + } + } + }, + "private": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/private/-/private-0.1.7.tgz", + "integrity": "sha1-aM5eih7woju1cMwoU3tTMqumPvE=", + "dev": true + }, + "prr": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/prr/-/prr-0.0.0.tgz", + "integrity": "sha1-GoS4WQgyVQFBGFPQCB7j+obikmo=", + "dev": true + }, + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + }, + "qs": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.4.0.tgz", + "integrity": "sha1-E+JtKK1rD/qpExLNO/cI7TUecjM=", + "dev": true + }, + "randomatic": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", + "integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==", + "dev": true, + "requires": { + "is-number": "3.0.0", + "kind-of": "4.0.0" + }, + "dependencies": { + "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.2.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" + } + } + } + }, + "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" + } + } + } + }, + "read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "dev": true, + "requires": { + "load-json-file": "1.1.0", + "normalize-package-data": "2.4.0", + "path-type": "1.1.0" + } + }, + "read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "dev": true, + "requires": { + "find-up": "1.1.2", + "read-pkg": "1.1.0" + }, + "dependencies": { + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "dev": true, + "requires": { + "path-exists": "2.1.0", + "pinkie-promise": "2.0.1" + } + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "dev": true, + "requires": { + "pinkie-promise": "2.0.1" + } + } + } + }, + "regenerator-runtime": { + "version": "0.10.5", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz", + "integrity": "sha1-M2w+/BIgrc7dosn6tntaeVWjNlg=", + "dev": true + }, + "regex-cache": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.3.tgz", + "integrity": "sha1-mxpsNdTQ3871cRrmUejp09cRQUU=", + "dev": true, + "requires": { + "is-equal-shallow": "0.1.3", + "is-primitive": "2.0.0" + } + }, + "remove-trailing-separator": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.0.2.tgz", + "integrity": "sha1-abBi2XhyetFNxrVrpKt3L9jXBRE=", + "dev": true + }, + "repeat-element": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.2.tgz", + "integrity": "sha1-7wiaF40Ug7quTZPrmLT55OEdmQo=", + "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 + }, + "repeating": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "dev": true, + "requires": { + "is-finite": "1.0.2" + } + }, + "request": { + "version": "2.81.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.81.0.tgz", + "integrity": "sha1-xpKJRqDgbF+Nb4qTM0af/aRimKA=", + "dev": true, + "requires": { + "aws-sign2": "0.6.0", + "aws4": "1.6.0", + "caseless": "0.12.0", + "combined-stream": "1.0.5", + "extend": "3.0.1", + "forever-agent": "0.6.1", + "form-data": "2.1.4", + "har-validator": "4.2.1", + "hawk": "3.1.3", + "http-signature": "1.1.1", + "is-typedarray": "1.0.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.16", + "oauth-sign": "0.8.2", + "performance-now": "0.2.0", + "qs": "6.4.0", + "safe-buffer": "5.1.1", + "stringstream": "0.0.5", + "tough-cookie": "2.3.2", + "tunnel-agent": "0.6.0", + "uuid": "3.1.0" + } + }, + "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": "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 + }, + "resolve": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.4.0.tgz", + "integrity": "sha512-aW7sVKPufyHqOmyyLzg/J+8606v5nevBgaliIlV7nUpVMsDnoBGV/cbSLNjZAg9q0Cfd/+easKVKQ8vOu8fn1Q==", + "dev": true, + "requires": { + "path-parse": "1.0.5" + } + }, + "right-align": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", + "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", + "dev": true, + "optional": true, + "requires": { + "align-text": "0.1.4" + } + }, + "rimraf": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.1.tgz", + "integrity": "sha1-wjOOxkPfeht/5cVPqG9XQopV8z0=", + "dev": true, + "requires": { + "glob": "7.1.2" + } + }, + "safe-buffer": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", + "integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==", + "dev": true + }, + "sane": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/sane/-/sane-1.6.0.tgz", + "integrity": "sha1-lhDEUjB6E10pwf3+JUcDQYDEZ3U=", + "dev": true, + "requires": { + "anymatch": "1.3.2", + "exec-sh": "0.2.0", + "fb-watchman": "1.9.2", + "minimatch": "3.0.4", + "minimist": "1.2.0", + "walker": "1.0.7", + "watch": "0.10.0" + }, + "dependencies": { + "bser": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bser/-/bser-1.0.2.tgz", + "integrity": "sha1-OBEWlwsqbe6lZG3RXdcnhES1YWk=", + "dev": true, + "requires": { + "node-int64": "0.4.0" + } + }, + "fb-watchman": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-1.9.2.tgz", + "integrity": "sha1-okz0eCf4LTj7Waaa1wt247auc4M=", + "dev": true, + "requires": { + "bser": "1.0.2" + } + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } + } + }, + "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.4.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.4.1.tgz", + "integrity": "sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==", + "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 + }, + "shellwords": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.0.tgz", + "integrity": "sha1-Zq/Ue2oSky2Qccv9mKUueFzQuhQ=", + "dev": true + }, + "slash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", + "dev": true + }, + "sntp": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz", + "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=", + "dev": true, + "requires": { + "hoek": "2.16.3" + } + }, + "source-map": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.6.tgz", + "integrity": "sha1-dc449SvwczxafwwRjYEzSiu19BI=", + "dev": true + }, + "source-map-support": { + "version": "0.4.15", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.15.tgz", + "integrity": "sha1-AyAt9lwG0r2MfsI2KhkwVv7407E=", + "dev": true, + "requires": { + "source-map": "0.5.6" + } + }, + "spdx-correct": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz", + "integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=", + "dev": true, + "requires": { + "spdx-license-ids": "1.2.2" + } + }, + "spdx-expression-parse": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-1.0.4.tgz", + "integrity": "sha1-m98vIOH0DtRH++JzJmGR/O1RYmw=", + "dev": true + }, + "spdx-license-ids": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz", + "integrity": "sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc=", + "dev": true + }, + "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.13.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.13.1.tgz", + "integrity": "sha1-US322mKHFEMW3EwY/hzx2UBzm+M=", + "dev": true, + "requires": { + "asn1": "0.2.3", + "assert-plus": "1.0.0", + "bcrypt-pbkdf": "1.0.1", + "dashdash": "1.14.1", + "ecc-jsbn": "0.1.1", + "getpass": "0.1.7", + "jsbn": "0.1.1", + "tweetnacl": "0.14.5" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + } + } + }, + "string-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-1.0.1.tgz", + "integrity": "sha1-VpcPscOFWOnnC3KL894mmsRa36w=", + "dev": true, + "requires": { + "strip-ansi": "3.0.1" + } + }, + "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.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + }, + "stringstream": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", + "integrity": "sha1-TkhM1N5aC7vuGORjB3EKioFiGHg=", + "dev": true + }, + "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.1.1" + } + }, + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "dev": true, + "requires": { + "is-utf8": "0.2.1" + } + }, + "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": "4.1.1", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-4.1.1.tgz", + "integrity": "sha512-35+Asrsk3XHJDBgf/VRFexPgh3UyETv8IAn/LRTiZjVy6rjPVqdEk8dJcJYBzl1w0XCJM48lvTy8SfEsCWS4nA==", + "dev": true, + "requires": { + "arrify": "1.0.1", + "micromatch": "2.3.11", + "object-assign": "4.1.1", + "read-pkg-up": "1.0.1", + "require-main-filename": "1.0.1" + } + }, + "throat": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/throat/-/throat-3.2.0.tgz", + "integrity": "sha512-/EY8VpvlqJ+sFtLPeOgc8Pl7kQVOWv0woD87KTXVHPIAE842FGT+rokxIhe8xIUP1cfgrkt0as0vDLjDiMtr8w==", + "dev": true + }, + "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": "1.0.3", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", + "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", + "dev": true + }, + "tough-cookie": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.2.tgz", + "integrity": "sha1-8IH3bkyFcg5sN6X6ztc3FQ2EByo=", + "dev": true, + "requires": { + "punycode": "1.4.1" + } + }, + "tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=", + "dev": true + }, + "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.1.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, + "optional": 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" + } + }, + "type-detect": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-1.0.0.tgz", + "integrity": "sha1-diIXzAbbJY7EiQihKY6LlRIejqI=", + "dev": true + }, + "uglify-js": { + "version": "2.8.29", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", + "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", + "dev": true, + "optional": true, + "requires": { + "source-map": "0.5.6", + "uglify-to-browserify": "1.0.2", + "yargs": "3.10.0" + }, + "dependencies": { + "yargs": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", + "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", + "dev": true, + "optional": true, + "requires": { + "camelcase": "1.2.1", + "cliui": "2.1.0", + "decamelize": "1.2.0", + "window-size": "0.1.0" + } + } + } + }, + "uglify-to-browserify": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", + "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", + "dev": true, + "optional": true + }, + "uuid": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.1.0.tgz", + "integrity": "sha512-DIWtzUkw04M4k3bf1IcpS2tngXEL26YUD2M0tMDUpnUrz2hgzUBlD55a4FjdLGPvfHxS6uluGWvaVEqgBcVa+g==", + "dev": true + }, + "validate-npm-package-license": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz", + "integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=", + "dev": true, + "requires": { + "spdx-correct": "1.0.2", + "spdx-expression-parse": "1.0.4" + } + }, + "verror": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.3.6.tgz", + "integrity": "sha1-z/XfEpRtKX0rqu+qJoniW+AcAFw=", + "dev": true, + "requires": { + "extsprintf": "1.0.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.11" + } + }, + "watch": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/watch/-/watch-0.10.0.tgz", + "integrity": "sha1-d3mLLaD5kQ1ZXxrOWwwiWFIfIdw=", + "dev": true + }, + "webidl-conversions": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.1.tgz", + "integrity": "sha1-gBWherg+fhsxFjhIas6B2mziBqA=", + "dev": true + }, + "whatwg-encoding": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.1.tgz", + "integrity": "sha1-PGxFGhmO567FWx7GHQkgxngBpfQ=", + "dev": true, + "requires": { + "iconv-lite": "0.4.13" + } + }, + "whatwg-url": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-4.8.0.tgz", + "integrity": "sha1-0pgaqRSMHgCkHFphMRZqtGg7vMA=", + "dev": true, + "requires": { + "tr46": "0.0.3", + "webidl-conversions": "3.0.1" + }, + "dependencies": { + "webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=", + "dev": true + } + } + }, + "which": { + "version": "1.2.14", + "resolved": "https://registry.npmjs.org/which/-/which-1.2.14.tgz", + "integrity": "sha1-mofEN48D6CfOyvGs31bHNsAcFOU=", + "dev": true, + "requires": { + "isexe": "2.0.0" + } + }, + "which-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", + "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=", + "dev": true + }, + "window-size": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", + "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", + "dev": true, + "optional": true + }, + "wordwrap": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", + "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", + "dev": true + }, + "worker-farm": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.4.1.tgz", + "integrity": "sha512-tgFAtgOYLPutkAyzgpS6VJFL5HY+0ui1Tvua+fITgz8ByaJTMFGtazR6xxQfwfiAcbwE+2fLG/K49wc2TfwCNw==", + "dev": true, + "requires": { + "errno": "0.1.4", + "xtend": "4.0.1" + } + }, + "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.2", + "strip-ansi": "3.0.1" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "xml-name-validator": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-2.0.1.tgz", + "integrity": "sha1-TYuPHszTQZqjYgYb7O9RXh5VljU=", + "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": "3.2.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "dev": true + }, + "yargs": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.0.tgz", + "integrity": "sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg=", + "dev": true, + "requires": { + "camelcase": "3.0.0", + "cliui": "3.2.0", + "decamelize": "1.2.0", + "get-caller-file": "1.0.2", + "os-locale": "1.4.0", + "read-pkg-up": "1.0.1", + "require-directory": "2.1.1", + "require-main-filename": "1.0.1", + "set-blocking": "2.0.0", + "string-width": "1.0.2", + "which-module": "1.0.0", + "y18n": "3.2.1", + "yargs-parser": "5.0.0" + }, + "dependencies": { + "camelcase": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", + "dev": true + }, + "cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "dev": true, + "requires": { + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wrap-ansi": "2.1.0" + } + } + } + }, + "yargs-parser": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.0.tgz", + "integrity": "sha1-J17PDX/+Bcd+ZOfIbkzZS/DhIoo=", + "dev": true, + "requires": { + "camelcase": "3.0.0" + }, + "dependencies": { + "camelcase": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", + "dev": true + } + } + } + } +} diff --git a/package.json b/package.json index 5f9e1f1..da300e2 100644 --- a/package.json +++ b/package.json @@ -20,9 +20,19 @@ "bugs": { "url": "https://github.com/Huddle/Resemble.js/issues" }, - "homepage": "https://github.com/Huddle/Resemble.js" "homepage": "https://github.com/Huddle/Resemble.js", + "scripts": { + "test": "jest .", + "test-watch": "jest --watch ." + }, "devDependencies": { "chai": "^3.4.1", + "jest": "^20.0.4" + }, + "peerDependencies": { + "canvas": "^1.6.5" }, + "jest": { + "testEnvironment": "node" + } } diff --git a/resemble.js b/resemble.js index 78d4e12..4afe297 100644 --- a/resemble.js +++ b/resemble.js @@ -61,7 +61,13 @@ URL: https://github.com/Huddle/Resemble.js var errorPixel = errorPixelTransform.flat; var largeImageThreshold = 1200; var useCrossOrigin = true; - var document = typeof window != "undefined" ? window.document : {}; + var document = typeof window != "undefined" ? window.document : { + createElement: function() { + // This will work as long as only createElement is used on window.document + var Canvas = require('canvas'); + return new Canvas(); + } + }; var resemble = function( fileData ){ @@ -151,16 +157,24 @@ URL: https://github.com/Huddle/Resemble.js function loadImageData( fileData, callback ){ var fileReader; - var hiddenImage = new Image(); + var hiddenImage; + if (typeof Image !== 'undefined') { + hiddenImage = new Image(); + } else { + var CanvasImage = require('canvas').Image; + hiddenImage = new CanvasImage(); + hiddenImage.setAttribute = function setAttribute() { }; + } + if(useCrossOrigin) { hiddenImage.setAttribute('crossorigin', 'anonymous'); } - hiddenImage.onerror = function () { + hiddenImage.onerror = function () { hiddenImage.onerror = null; //fixes pollution between calls images.push({ error : "Image load error."}); - callback(); + callback(); }; hiddenImage.onload = function() { @@ -201,7 +215,9 @@ URL: https://github.com/Huddle/Resemble.js images.push(fileData); callback(fileData, fileData.width, fileData.height); - + } else if (typeof Buffer !== 'undefined' && fileData instanceof Buffer){ + // If we have Buffer, assume we're on Node+Canvas and its supported + hiddenImage.src = fileData; } else { fileReader = new FileReader(); fileReader.onload = function (event) { @@ -482,6 +498,13 @@ URL: https://github.com/Huddle/Resemble.js return hiddenCanvas.toDataURL("image/png"); }; + + if (hiddenCanvas.toBuffer) { + data.getBuffer = function() { + context.putImageData(imgd, 0, 0); + return hiddenCanvas.toBuffer(); + } + } } function addLabel(text, context, hiddenCanvas){ diff --git a/resemble.test.js b/resemble.test.js new file mode 100644 index 0000000..2a1fdc2 --- /dev/null +++ b/resemble.test.js @@ -0,0 +1,89 @@ +const resemble = require('./resemble'); +const fs = require('fs'); + +describe('resemble', () => { + test('base64', () => { + const people_src = + 'data:image/jpeg;base64,' + + fs.readFileSync('./demoassets/People.jpg', 'base64'); + const people2_src = + 'data:image/jpeg;base64,' + + fs.readFileSync('./demoassets/People2.jpg', 'base64'); + + return new Promise(function(resolve, reject) { + resemble(people_src).compareTo(people2_src).onComplete(function(data) { + // console.info('Reached oncomplete for base64_string'); + expect(data.diffBounds.bottom).toEqual(431); + expect(data.diffBounds.left).toEqual(22); + expect(data.diffBounds.right).toEqual(450); + expect(data.diffBounds.top).toEqual(58); + expect(data.dimensionDifference.height).toEqual(0); + expect(data.dimensionDifference.width).toEqual(0); + expect(data.isSameDimensions).toBe(true); + expect(data.misMatchPercentage).toEqual('8.66'); + resolve(); + }); + }); + }); + + test('files', () => { + return new Promise(function(resolve, reject) { + resemble('./demoassets/People.jpg') + .compareTo('./demoassets/People2.jpg') + .onComplete(function(data) { + // console.info('Reached oncomplete for request_success'); + expect(data.diffBounds).toEqual( + expect.objectContaining({ + bottom: expect.any(Number), + left: expect.any(Number), + top: expect.any(Number), + right: expect.any(Number) + }) + ); + + expect(data.diffBounds.bottom).toEqual(431); + expect(data.diffBounds.left).toEqual(22); + expect(data.diffBounds.right).toEqual(450); + expect(data.diffBounds.top).toEqual(58); + expect(data.dimensionDifference.height).toEqual(0); + expect(data.dimensionDifference.width).toEqual(0); + expect(data.isSameDimensions).toBe(true); + expect(data.misMatchPercentage).toEqual('8.66'); + resolve(); + }); + }); + }); + + test('file not found', () => { + return new Promise(function(resolve, reject) { + resemble('../demoassets/People.jpg') + .compareTo('../demoassets/404-image.jpg') + .onComplete(function(data) { + // console.info('Reached oncomplete for request_404'); + // console.log(data); + expect(data.error).toEqual('Image load error.'); + resolve(); + }); + }); + }); + + test('node buffers', () => { + const people = fs.readFileSync('./demoassets/People.jpg'); + const people2 = fs.readFileSync('./demoassets/People2.jpg'); + + return new Promise(function(resolve, reject) { + resemble(people).compareTo(people2).onComplete(function(data) { + // console.info('Reached oncomplete for base64_string'); + expect(data.diffBounds.bottom).toEqual(431); + expect(data.diffBounds.left).toEqual(22); + expect(data.diffBounds.right).toEqual(450); + expect(data.diffBounds.top).toEqual(58); + expect(data.dimensionDifference.height).toEqual(0); + expect(data.dimensionDifference.width).toEqual(0); + expect(data.isSameDimensions).toBe(true); + expect(data.misMatchPercentage).toEqual('8.66'); + resolve(); + }); + }); + }); +});