From 44fb252d5a8b923a81ba483fa9eabf499e0129be Mon Sep 17 00:00:00 2001 From: Andrew Kirkegaard Date: Mon, 15 Mar 2021 12:22:52 -0500 Subject: [PATCH] Update gitignore --- .gitignore | 14 +- .yarn/build-state.yml | 6 - .yarn/install-state.gz | Bin 714314 -> 0 bytes .yarn/releases/yarn-1.22.10.cjs | 147392 ----------------------------- 4 files changed, 9 insertions(+), 147403 deletions(-) delete mode 100644 .yarn/build-state.yml delete mode 100644 .yarn/install-state.gz delete mode 100755 .yarn/releases/yarn-1.22.10.cjs diff --git a/.gitignore b/.gitignore index 0497951..08ccfd3 100644 --- a/.gitignore +++ b/.gitignore @@ -1,11 +1,15 @@ +coverage node_modules **/*.{js,d.ts,js.map,d.ts.map} -coverage + .* !.yarnrc.yml -!.yarn -!.gitignore !.eslintrc.json !jest.config.js -!.travis.yml -yarn-error.log + +.yarn/* +!.yarn/patches +!.yarn/releases +!.yarn/plugins +!.yarn/sdks +!.yarn/versions diff --git a/.yarn/build-state.yml b/.yarn/build-state.yml deleted file mode 100644 index 332dc4a..0000000 --- a/.yarn/build-state.yml +++ /dev/null @@ -1,6 +0,0 @@ -# Warning: This file is automatically generated. Removing it is fine, but will -# cause all your builds to become invalidated. - -# protobufjs@npm:6.10.2 -"f0f2cab7feaa939c696093d7f660223c924c22c102acb3833aa031c253fadbfd34d3f7c106d591607244d14e8c1fae6ee553f58c88d88e913d3d830c1e573d88": - 52cfe91a762c1182a61475f876c28a47c1360058829ffc940e26593c004a181187066dcc829dfc1c3c8e02e2e43fd86f0e67da788785acb9e64ba903bad18c75 diff --git a/.yarn/install-state.gz b/.yarn/install-state.gz deleted file mode 100644 index a207459bd241db5855d6bd92370fa6081b94d8aa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 714314 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≤B~ zvKe*wfvy6qpy4a#|KI10nQR*b> z*6Xq=qIjgBu8lwVr10h*|8DQ`TjkF?FWwuwdhT8I4coD-+3X-tolW&#m8uvZ?s|gE zqr-Uhro`M9bDR2dJUJ@IJ8u~e&d97z6x8gOkWr+4D6?|dah8}~1wKBdUh*ixMC&1z zu_v!~b>2Fdt68XPutGgqLT+72m9Gdw7VcHBuNemsY%ZKnEuby0Sy|0t)4lQi2_HB@N0m{h3N z!djJtp&cFZljA$UI?cj&-I{divzGlmUkv#fDB4)V5Q=u6jS;(UJ% zqyDKR``%0Un*rFk1{|X#OsdCC4GOe6s{A5tNNk|oo}UnUSI1TJ@vg@hSncw;Okq4( zK|ueZT<@qp5h!t+=hO%QV?dn07&veWC=Sv@>3Ta{zSjWrKmo5SA7YV3{e6Oed(+8h zDA#V^P7|^$)uwXYC}?I*i(2q{B)Sv!)@;IHt&TYrho0yfi%*H;^@8Bs4&i5e6m zw-2v{v>c98&SBjz0KeMP|DWmgy%+H}cX!RAjAY&NGNk}UwX`TA_HANXOH3KKeHYcJ z^oNf9m@2>~MeC`-4hn7&Pw&w-lEg(S(HUig_#XZ^`4u%<*NeqjAX}MT1E1d4>%!+` zOSKgwd}@;kE|Mz2m!Hw1v@VK+Aw|cpd5aRyuAjv<&&ciVM+O7~GeL)zs)6-Wclrvxs5hej)2=~WBvd#*DJ=m!qCvRL5^Q+tBdDXv0js#@GQ|uPm}+R)GBWJzqiY=sbyUYmY*$#cnC}NUV#{ zq`SAL*)g-5#1hl%4JL?Xsn#=Val9RT&*V&zLS4^N4WTaw$g6CT5~2>ySqVB_Vt}5$ zVx5u(N$hn^A_6qLx@@ z+SviNw_bl#6h^bD1{pyv z#n#HR>>%<{Czpy<)8pt;_xwb{|Le{D;m42Pefad|{=V}v{`!F`eRF=k zyV>a~{wjwfg7%toXiLSx1{^&dhjDz4!##VsD83^3U-gHq`dsbG=|{a}6n1|!`peo% zvgnsqMPS%)Zj;Qm9lkCN#B~cRNk<1h*z58L%s_UfN++#oc{R^!Ygb7ga%5EKAv|Hq zp^Cxprc_5epGQk8wFu=#W{0Ew|EGHyEVsh$GDu$52;^~E@<{t#SAtzmSs9>yzJAR3 z_4fW&@%!G3`0LACjLa{W_i*$mB&}Qtbyz<+XORM5nKEYG!n9lC$zZ zr#?UR0Qd1vj$Vi2Rqbv*_>WB&m(Z5L7CMyPl%}eesHIMTQLgrEuM=-p8o%DEbm`%t z!8#|N<2`b|Hm5Cg4)l4Gd$yyyI`W!~ae%`BfjOjdbJgwkI12}Up+XJ{**p0-seTnb z(ze*STwf&08P2W11k8T5yMOu_IKPo<-+A4>*wCM&u^LZh%k5H>@vX;wo=t-4DO?ek z44<;KGR%FPiUjc?iS&<8VcKXk*|1tWZ^LA8Xgn2~(vYt1SkxZMQOfj1^w7k9k&X^Z zo-?oGi`OZq>^;cD$mI~muvwslEHFYbP%c_`M3!{J)svIKf1%9RXH6SC%7x=njzHy% z=SB3Z>2G;Y4nousafGCfF4;A$lUVOO`t>p&oL+6{Z@pu@_o}@@PS-cr=dKU11kg|U zOiIsABv&iTqWsaKs@4|iat`itvVmhyh&ak4sdMc&25@HRQJ1{a{>JU3i0`${&PP{` zYF$bF^#ZJ22UssAlg>@x8~5|N6YrE2NWXMMA*$b|AA5d(l1(TD+a5Z+L)kBqZbH08`{5!9`mN3;~XJwIv$av7YPnvUsd5adv}+BdBK(hMRO zX&?MS0LZ!Rpn-dnRdmW|1Y6~5Jf`ZT$$6_$87|6<*E^b37mdcDd4m(C8f;ttgKHVj zG>=)!LAJW)dGQ(3IqLNPBptiwNm?S>nUrOLI<>`drd*{OEX}?(hg@2Nx~tq7N=oem zH$Os}`s*G2-A_c^`>kfrJ1^TS`1{QfJ_lS5@5q{4N#fJV4eStR>!*IMTJgp-#x{3T zU^T2t9#H6+h*4sfN=v!r(sF512G3A9Ec2_Z*Dtb2-d+||sF6VCgA1$g{EY(&FZF4lORi+ zjqKzw0DJWs(Kq>emIR~ol$GF6NoogI>NVH+kFQW~Z0dWj-OrmEf9O9wfBjc~{H*^8 z035$L|Hu0eAHMzR!}tH&^YJ_W$p7-kKk&c5yi1W2ZY6gClZ3n+j9M)6eYTo2wbb78MSfhR+>@BOvZJ&tF}cPDbQtGUp!mEg zyZ=QqE#7&O(AXBAKv;)BlS`=$S&PK+}FJCRSHeqDM_` zT@5IPRSDIb?UHiFt<#GB^*hC1e*5v`r}_2#{_j4le|Td<-+T3bUBUkGfuaMu&%V{( z6!)1r^KdVYc4tkksPA5!3c7iaGfkbaLVUpXGVh_-G0EOhHSU-O|9rk=4oL3TBAV%8K*=)0o5+hePGtmR;?EpDKHQ1?~g z>66m&RCPmLRV7UL>%m9XQxK44)DoI35`0G_LFjy!)xZu$NO*Q^V8S; z)29!=f2;BH-plv;VdD7wFmZBbu0?p$66DZZp&zXW4d?m4r_+VuI16dO(Y&mlztl*% zmY1RgAiM66LMd6dAb%3)QK_3~eF|?)-d_`<9Lt?LMshpn zLx_yK)$QEB9zVC< zma1tcFB0alBtTTl-tuPf{fi%d{P@GyFaP8X2ID)g;2RORYcDXett@q+rwSCn6{5vu zM$%o_?xWhus%I$TKf_AO+wo77wiOAgt5Tg^lUwSbLt#ln7L7^^sSZ??OA3<8WT$8} zbvu%;Uz=QN5b)#&gB~-*PNNb}_tIBghfpp9!I!ln_C8xcNIeh2vAWiEP}bPi-stFR zN@BWi!D)GlN}p|S1(*~QEkMmHR@pcXSeD9Foo_RbKRtgv#~;3ZyNCDA3;4#K&N-Yk z_jd(C7d0vQ$!B>&8&!UwP9&i?G26UOp=MtQ)_o`NYNuG6L>K32 zHD97^FX9(IQ=EK3UuDT5ii#hvImf5E_r<~_YGI>VzKf*xp30d^JxUFFVkrCDr^N?5 zwP(LN|1)sVYb@+j34uGl)cwAkndRV1C|3=;3@6{uT(vxF8viyRtxzSrenI@R=hG*5 z_bnFrJ1^XqoW=N=-{t`Pq0KY}S$9f&YhZJz&pqhqH2bmkE8Z4CKel-jSW|JAtOOMQ zJpnz7gDO-P&gly(DY`mkekGE$CnQyr6_^eH`bsfB6hvOH88hwHG`{QvqGMx}*fiAy zqdw#^J z!VJsKFDshY`TC9NpS+&$y>!1WV`a;H&ZcFD@phK%ARi^!YWv{y?doj@QFk&IbzBq@ zB>87e$H+_7*?X>}j@vazBZoFb*-ka}($4brKC)_Rp927hQ^m=T~6upm(r42xy@u5ct?Y(I_BwaL0LH}j2;Nyr8oH~@!8f& zx&XC%6}<(4oYldR!of=8TMS2thQX5m# zk8}7WP&$$C?DwlJ6-V@Z`}PM|)eJFen-QC~p^4lF-02#I=Iv>!hp(#Hcb9hGxVWnL z0u#rho<&g~TYeM4P>T2^?~Gg9AJZ>|Wyv*M_tuDHEw3+{>i_;_OF#W}|MuIDfB#Q0 zQQvzVe@${bu5XT?dvmvvq4O*o!fm$<4Tq?c)T>ozB--U8{4L7n?XF5ep|#rDLUVFV z{H0MdTvmQczVk&p@Mq!^iH`hq}x< zUk;tIr;3PQ%;4>rfbn6ix1OHfdFj4*AO870aqL-AAlvMc0#&`bZ=c65E4*R_=a|B9 z)If{Tq8>W6zv^?Nb3i$f_DrM6A>$9iV zbCriZ)*(Z!K1W}C9Fmk`*N<*C#Ib5^NxI@*%IdnsPVt2+kpzW$Hpz$MEKuwe1tF*M zk4Ig7dwQPDm!7bPqxh`PajJBo>##OzudCG`ew;u3^bcRJk3W9b-<;oh=jHp&eQl5G zU-ltJJ}eE=A}#D@{-{(Hd&&qvUR7s1#-pYi72XM&TOqfs(w#)@&IPMV3zsd%d-tHa z-C;#>=qqI7Yehd|q3Du(dv3Xyf3Ya|y%+A+C^&xeOY3~7=GFFeM9DHY_@tG1@w8a4 zq@y7jsjFiay914S3RxFZULA+cXG;4L=6yaF@$Z%^?TiI+Me)3xG_iM*>Nx_}WswS^ z_Jyk+nN;}tS*h%C2xr&SoJgR@TvP;ebp5%N%4ZWZpVenU$8c_K1s^_EVc$6gfd8;- z{iR}kI>T_1n!jDN;5rWe%92}=fsqsvk7A62WX1p36YGM0SJ#xa^|)N4G*;k})e0eh+=kn0k;D4cn#o8C=iaT;mr{DM?`=+qeR)w0QF zmaKXV>F8o%)H_x51t2o*xDl-!y;@vaPy{!{sno0a2%CLWe9+pz4)M}I|J+M|KK}UDeSPnx`^{du1Kj}1D{Bo~I9C1iqbZAD zljG%7#cOipGC=R(Un`(gp9%<3d$)2&QY@Q$auXFFc?c)fr0n0OL}dW)ncQy)vbsG) zc8H`9^YpFf^@E}KLvTptrmK7cFGvJEzzZj302{1<;@vsYSJEeOyJ=`#qlXM>cuy;; z8F?!Pp^uj)7;0y6JD#CD=XkCwAEWxjbJ)%9AebZz^>wH2FJEY-Uw`}Y>2HY^y!Yz; z)?>t>(OA&?&rYY0$*S~46~;CGCN_-;61c_Y^Ld_KS#?`jIUH(5a?r1%@fn`oF51%; z8vHcJ6m?3APxT3tQ$5b}Qb6&39->e_99Vj_tD32)@l3%kb(o~XPtbJc0MVxe&{6V? zd=uJZG7DLIPXX?77??|}Ius$7_aFl7yIppx1#VnuiS55)S8G5j{RwY*&P1@q09B*b|y0c5E}%}EToI9Q5; z5&UxJqV%OcZP%k^kQ_K#VJC@hgKO2Zug-FIz|Z7gB;}nG^@qkm{R}m-5}cx z&FH#sb)>1ARFXCEi9pU63w5C*;wmr5b=4lLX({DUvEWi>JwI{iydA>SKU=p?zTFY2 z6hSZdwxAhGqaN4mN2jEHDHVLIdd&sNES3evX#0_xFg)ku9$#16)6Afspcem8)c7AD z62cp6@PJO`Es&7UnZk=rj4mKn8X&bx%Uf#wkYiAGkppt){?Bgo?|!S3^WF>jTN`{S z8B6)7w?UKlqoTFqVe>A__NLsxn{OYKc?{P)Nhoq2rym)#vV- zb!+#@>QHn%J)pi*^S{?*CxK!B##$pNuGT7F=Bj!O-?}bNN*udAz)aQJ zF2EB90Mr?^u((g9;fqgrmH&R;+=^!%mY5o%ee|Lg|; z`d|F?<9rKXz4xO2)@GkTNuS!McJMx4C7I@W&t+Y@*Rh?W36uxna!c4;O46+|oSAxj z2g;LAsiWL^=>{p^#7FtQ2H+F`pQzana*3=$s=g2#8=3FvVDsy+9b?vkxgFaJFxM_g zMd7AqE4F67(8fd8etINsX99Xz{8WnFqN9D)@a-X?DGtPiUz9|oYpPlR>S;RH935Of zHU`%mK}}Sj0*`*bX10xa|Kay<>d3tBvi(+nz4Q09h;f9sv;X!v!#1D?ek7d+f!mn? zV@1J%(pk9m8QbNt&~9^^wa`E(*hc$+Pb7y>@TBESAsxbs#(?8Kp<86z+N3K#L&cAlCZd76qTgi+H;|6i*EOOpO;AU< zB|bk-ea#Wq1wqGW@<|^$0xIDg`1*V*ZH)r=l<%I&JtSUG2_c%)2?i;W6Q4u=czIq- zje^e5diKt#3WT-srSl;bigsO!8tcN-%v98x9Ei6$6Mym>Q+4mXc3(`@wQtf3ObU*7ofToJ-R9(uc}+D(nAXfKh<=P_*}FQN|>i=)ZOc1zEk*s}Cr zhHm)7p*b@MJcE*yqF<+lcccNv5u+wSE8RS;l%Qc3**Y;x1#hrui2Mmcp&gP-KSNGE%OJ(HU#Eksc08$7D4U~iAbOYT@B5l2{^w8s z_S;V%-d4PQ@1^_lrQ!u25gasg44?#7&{~r6`O$pVaoUoW6lDr>keYlO#E#Mo0y&Wdr|ZXgVH8s%^@>A2zl72Co^Jl;R>-po~z9~KN-V68Z4Q;<{DBFK(WOpp#qrDJqA3{+J zALy}-NBH;q_(u*5=dy;wI;?hy8ftzMZe_D^g6J+SL<3$RnC{>xyWvf7#WT zD%v=I6TTdtbCe9wIP5+iI*rwIQV(qHkVrhPwGegEp_>OEwm*_2s26Vkn0n+V$ni*3 zi@~H(I~SHpRX7!$oLQ6Pt6*xpX5CL8y9(C9xM|D#de-W26T!l^#UOiJM+?!R+H!>JBGYN(b#37qt*|yf z&`Ir~0cAZ+>b{V%^4+0^++SbMe<71|@4aeYprW5y-$2J(QpmY_2!tuB!IJfOZk#ur z=fHFN{0(jCsNBvGw11_j;-=hfvjgT)9I_2f`{JbtBnzy6aL~+=ETC6JrVyu2s9Db< z+mm|PjxQb&iGg`B!1 zIQTP9F@4ueR|~-kWY#ExTEg)Wvb$LHs>`C00AGu?sO@$_d`utRR7K~rtfd%u(}m{I zgvWL_wcw-V;TX>yD|Iz>+wuA#Sl_@~tJVfs46{(}WqzU!ICiCph9*VG9h>4F3l!BT z3}@0a%we@Lxb3I9Ifp~uPH6y_fLFmujWs$u*|L&Hx3;?FSlaG5IdB~9Ilj<}|Fy`# zo1pi-SMWDMFZEs|Kt<2?81;0RlE8gXxeujAGqHqFMF8m~YA)2HUEOTJ=>YF>kh2JB zDV#pQC(XXW_f#GgZWu0r(UCatc^WT znyC6qBCz{0n*tsaFB=Ago`2@cL#)grBY z5srP-r5@;Nxjc@mjP$tRL;XNjfMQN->4Ul*4BQrx5WpMxO?CUdk4j7|pr4zRt10SY zIn%8%-+MgHKriZl!a=%us{nHP>|Nd=m#CxyXulFPmSbR3|WbBnC>p$#BkXsVwQ&U*P&*)zXb%k%4z zB)g*gzI9BW5iTc(mu_%m$JcMY$LSI6vUPMC(=DuLpU7qwEIrZ2Q(Y489NXqk>Rk>( zOp3u=LC#BHXV|fIN%haR3AbmFi?g(^LrF;F_@ZE>+KYZti z@LN~(otN&*!29xmq-6HoJx8r#eNIWK>H=Bh=8ZME{qpEk6j{l9M8QrHS*z&O$8W8z zcST{HQo1gVZR}0S`nbl5)P0ZhUl-AkJ9d~rg1Q;yx`2BI zvCP->>iIYWa*F)zb;*&YPyt><7U7ITS1~L0s}<^nUdc*{QZ}cd@cv02O$ww?I|NR} zDP2OtYi$wRZIJ(hZ}{W<^zqxjd+UzA_rm?WpK z{=BqZCnahtNkGjMY(QFVG=q=aW4%tc+jmgW8qeu7?$oYc^W^tax7KI+z!y}t(h4+P zMd6fXpC)P^Hn|SBBAOC#Gl;A6%k6tsoyp4@4!RwVh9{EU?tg)EvtEeP#!i3Dh56G@ z^Si%$lOOTk>-OtA{9n|t>Z(5=Ho%DQ-0Ldf5~`@sZwa^U3{|3ZzjeHgN?#vJ$|h|e ztIY>n`azu;Ev)0*uL6OxTfb{6|1)YoM>R7XqyV5i7NzW(LND#Lv>G+dO}(Hy0!VUD zizgMbE`1y|kd|D@jclP^GwRx>;465S7(1nRQ{q2U2+~CvL-{81pQ5mQpQlaM(@u%@ z>qmT~#Xb^r72^M5n{?;qxmAHL%w_iuj_RK54A{#O4y+K z!!nkURDhJRYwTJ4XqWm>K=GrP@}>_djXS}u(e!xEGd+XqGLm#Isx)9ek?WxhrEc$z zr}Br|?o;1DiKX8A>#@2p`S~1m;BN>~bzusf{Qpt+rc06?SCXbkPi-Wts<)YL>FGCU zk$~8~JdUkkkcmumMkbs5GtWNySww<`>mID1E=d+qKqA8ZUR%ylH9JSOdD@tV)0Eob zLWL_;j4vFjb7=_Ml)yE!#ql%lgogRly>UjP)56h}vrQUxAbIKZ6x9nryJo#x zc3zY4|JYwYjxW!jK5Aw^uldwJwDHHMcSaMcwZB?OBJowQ`xJu*_v_@7ROFhPbs7uYz(*`*KR!Jz?>a$K%^~~ zH(G^>N`ULFPNa4|^{k}i1NJ0>yVhpGW_+77!L=9kkWeNQ4Nh2u>F1ZU9AP?P&p$7CCpg(+?JlH)~mdB3UuUoLrp0)9{ zt)myL&_@cUZZZ3TN{N;&opcBxinW%Sx-ZfU9 z9cOgBdX-m<#e#;8YzpAnMh%<6sX-0OqBoa1gFRX?gtb!)Ab2ZwQ?0Q_%+o8bbp>T@ zO|DDloC$s6(=VVWLr(?AqH_%pH8}8n?pYdc$m=yU1|_>*xmDYgb$gE0L)XS_H!WC# zSwAW!|9r2l-hl<4okKtm^DiN8Q^sjr5yei&2Vu1_Fv_DkN8_VlfYu+-(<<3( z3l*nifDMeZ?UIfFJF&g9GCNk`4y^4D|Y?*>CXdfcwpI{vLb zTrfLqw|%4VY4xftAlB~1suwi`ou(m&<~(u<&EQ|OHDZlZf+>t=!>i@3ncWICXtifU zHY+1QK8r9wno~#+dZ%1J6^#&x4tXGFbH&7poq|h-Ui-O}7DY6W^%n4$72D9IsTGmW z3PjB~EqQ~M50wQ!9U2~4?mYB7bme2ggND{jT$O*2~I%0Nm>i(Xry*T|KZHq_Dk zQChuK(0dOiJ$m4NeY4|F%zYIcRw}SmAt-w-FG{A>1+c0WrE1zn7q<#Z&a07bwEuG% zk#adjt6GvqF>VFBP0fdZzxbrt?HGB|xZUXkROHcK>0NZy*R@;^$399a=X&j`(G@+I zenf2hqL^ahm1;oDJql`Ur_h>eRi0UWQLL}UK8^R5W=U$KmuM`|$KWSAeHur#?zBUe z)wK(ZHVS>H2vBO2l=~Wofta9NXY@b(bZ;^rJ!aQ~#BT>rOQg52m}zC1$}J|Q%E4AM z3g=lPHA+L1WE6d-omE*WCxgOs7m?7vp>@|y!7fzE^@ccT2$vhhosIF{!oGT9fM!R+}uVGu@lz}!#MbfZNm8HU@pq~I^#Zs{4PW^xwoY?-N_$POo=fnhz zwG^CY>jJe9DJpF_Cweb{rP%0Zp!7$(IV1n0yc!DE?DRu7#PzSc^XEVQ_%xsIQq~6# z+_h@-+eMuc3fSH$097OC7skL-)%d*@8iK~2l|cmy{TB8!47)CJ^-K)WIuUL)vHYO^T%IX&-VG3 zDL_$P-TsP)e)o1<^ECd?z1!DE58k_&2wtNX7F1hwvF|Kips3)IezkI*r>x~Lf;&}W zt!mgP&s2c%Lk~VzipT!Nq!a z2}x<}e23y9=%+6|O+v9t%q22-QIYXRvvmBvefZ-&Nc7-gyYA6nrc>XFNpiCye$J3; z=sOg^GDu`@55j0zc;+jWr zKH4R~Ehd;mubp8<-qq8)~HVG`lE+HQ~wJ&M8bq-h%qfgh!8SXj}yC2QH;Glr$0eVQ5in z0@@n#?Yr&b5qr?MsJ|Bvivj6Hlg+k6R3dF-Vkpq&ViF#USB(LYH%-D=VRDkH@etzG zKPF92NlG|+Z~ax=F-7rEvB=8H)-Dc^^N}E+r=~$=eL>37OitUP+p8pttel2F`X!<; zhKT4~g}y{hK0XK6%hp$q&>z>Ar}vZw9z1+E^Xk8qM^vmVJVF{y8^w!hVbg;EP0FbZ z(E#76y(nRF(S-U%Dy26C!x`en-<}pfBpAiAcEU3`f#ntdoFHe(T&bbz;Y2WnI>6K;R7_S9GhMKho7J1%Wh=02moFJ_ ziXPBww1StO!}rWd*q+oeP?sqFfji?KF;H}-WK>X7C(O=>DA^3gZ4P{E-qf`;O1vFC zRRp#`k=qm{p`U3X{3AB;i*?z*RT+4<uI&R5U2!?!DloRsu(Eo$XdR1Er}5<2P@W=8%CEYcpAiuPa6& zeQ{gMv=oj8rDK%2Xj@`CA9FFvQG!jy4Us;l4T>u)x~_ship8gc2%h2mF1@b>ZL`RN=B-pi~H9=mIO#5cr5 z)87={v=l_q-y9e9tja$I^3ah=^-9-GSwpbhm$)~U0vwuTB@clEKQYV|D>#NinuxWq z46obZpe%-c;AgOS7vl{UY%Eln`5_2#-Kb8P_1tizV@Wm7G5B;_5TW;lZe-h-tctS~ zQ4$4GPAP;$;SHE2D|HzskO_c-AZGoNW}4!mXectxaGe1_>57$ED}V|LWW%+yuB_(F z>C2bDe7L()A3b>Q!C*^iIlhX*TurHJFYzvixCKSj$RXfEAsi97?Tyun-it*kSGcK^ zp-n~im!Gjrzs10!Msz8E*`y6ePg_W12~jkIb&&qdp_IG@2o&vnxHiKTeWj93$s>_L1D~(k>0lI^< zcQ|gZl@>xn&sXfrwjm5UP$HZT!z`KvshGst+A2BenLGua$Fx?@S7whjN4K(aOAL_; zc!41?G{GKa7@DsYlXALlUPVzSu7>%irMDsuiV75&Af}lHqKpkF<%r603df~tJYs3FgY7=PgGRk_cG%6)W-hNGlCTR1wf%EopUn!y)meq#+6jzYr5vlip*sn>GH%D&P)-{=Ob{#vm1ef2y(cXVsEX5(okeAy%3#1tP?h zIGEa&cZDjB#pUrdO56rrUPu()lcHUHyX_j9z6;;cDB6LXl@_TcCD`72KegP!>x~8! zG;yR*b5@keHv~sPQJKYQ8#bjIK?K6rLRo89C;B5U;mlN0)DLM7Q!p?hetN=-^u2Jp zpE@4aG?b$2zx%7O;B0;entFZ9t;NjkmpHyPnDYgJAFEJ!tv~E9Pai)0cwgJ)(L?ub zHvf^?G(Y_L?N&T*Jx&tn5@sA$fsHV}a|!r|3=YciZZ{_MNS#lvv~UZdc11@~%BoL@ ziXlS-7C8W!G|h%-LZ}pD6Ai1;1Z^-}4IE_`)TKOq-`CWdc{d^5j*2-q5~nn}_om!u zDRdv*@TuA3YS3fWQV#lx0IE%=2UOeu-HldTv{Pv)BUUPmWlu4&po`E=MsT1~GeUnW zEgMQ|KDX;Z#P9l7J@)6P{rS^RcW=fYJ9xjEQTsNdO2}I8g+h*C5OdX<65BN~dh2o1 zqPbT)M2JM`cn#`16absp2VFk`0#>ZJVyv|lB4Uk4-E6mI#igUNxj~5Ary?j5Xg{gZ zWUTL?=IvUXgfXuTJI63NAk!LkAb2i8Bj%sYGzFu83Y{X9_Mv#f$QWX57p!m-?e?V_ z>Z^+#+9BXhWRFn56EAFgA*$_Wi3G8F?#MZs!WTPVFWvs%-Cn*t{o&=)N9>pTho%4b z`T66I_l;5>J(jYIhYmKe10d>{M0XU;2GO2Fy5n80T(y;~IqV88ZACsB zt*6tZaB|c0sQ_#OZ_#3=r+1ASYt4v9UN=|;(t+HAkD}kAnCL29OOs;gSy0t;4wF-F zWGidBJ>E@gCzN#^PAT0enmWxUG9Jp1ewaRuluQMpP(YiTonk*7 zH8HU)J%v#BFd6+hgcr&#V{&%sjXr0L+K>qnf!t1eLm^O0ty&Lj#+hIgdWM}a4?rb{ zs~EJtJ7h#WuyYK89g0_hCVhIcCl@yb>taK>^di^ht~HOuC#UmxdG?wW1(iwB60iv7 zTYMjFodaF;jX@)(^g{^P(5R-z%;NF0f<3Qigg>=EuBY|+^QU`&_t9f_7anQhT4Sgm z&cYn%DfT>$rD7XUXGK0bLwDb`)n%w656Z>@Zvv5=$uw+9oR&Q2l^SPk<`=y&U3{;d zQs$nyKoN(;0lVQWLEjU#=J{HwA3&`dq8$;I1?fycW#(s>vx4sUI(lTV^el<$9?ZxV zS8r<#k2J7ofDsg0t&09AqS3rVx;>miZ&)c9>k=vTn{aa2uUSh>1gpF>4_$iz$?%cE{F3t4P=%KRwERu%J{* zQkd|VLIq1xlF*8fn3&-%Mc5Mem|hg%ctou`EwCVx60hv#yD0&E^tk=dKc?JIvPbE_CQ7M*_-1pCV^E(TY-Bqc+bL z{fvtwEQOLK4rn$Na8^h~;~>}G+Lnnc$y$Q zZTSjv)FkC9Qjhk%5R(YufH<_UJjN7_wo-a|SEqtyYk441IRz>NDU+otL2&8Xfc%&C z`Nx;1pWEk`yHon;(fc-~|8$_xFUJcSEJfrf7;T25D;44@5mMJQ!;mq&SDAH)=+lCzPK0G|2C3#aMJ-k}>9{I_W?5&us`C{rP7u z-9Fuu%X;(x-cD?OQ+rmx-~uWuwNMgn2DQwNOQTNbBuAF3TGuiidi^Mv7Rw_(Y8+9{kHbv-MLAY*fHK%*V4?c)PE#bl94 zfw^aDNUr*@zZsu?`l(?;bywf{u|s!zh5A;CuMeWEJaRv@p?>H}1_{S`PLsWJ%h3xhBtL^js8hNqoUI@!T%V01Bmy`h#lcyPBxyyNP>;NkSX4Z^ zUae8Bs|2ah?*+>edYU#C7Pz<<-0&I)WSRzR=juv6dNfTIaz0ftY!(FB8)ky^Wed!B z%@!hRO9M3MTx_1pIn<0iFLe?l|H8PrubNr^d3+sTf9mV=(@*Q=rTuvScKpFZ_-$%` z!_<~vF2^}ZKDLU>pF-Ivilt#vY!k2(wGkGve#XbC%=xr8z`IJ7AABC;6B z^5V{#738190g?N1rx~K4y{ug(mZcCxT~_AK-(FK}LAMOyzh;+aO|a4xoLq3U4uYCT z{LCA!Q%38PyCu$Z^&H+stY~}D-)v0A6v>hg;~6V38*%BI`i&*tVU@h8147_n(!wO1&aT-LcM?sE=+aJD=3PfRajY58^+WCZDC8RnO#HAIh+E!awtV9QB-qX>k0q0eg543^7Q<1eE2%= z?%79=-?dKvTQ^NofY*>IIu+!U{jm@g9u?=+Qc{!`chIPcPc7)S#lJwnKu?=z@k$R= z^6|?nXq->uz^W#20*`&X9!SVj8^}2BC#<1jJA_Ax%{!Q+U~ao;k8;#N&~A=_>9zix<0-rSUU3mZHzme2 zU=NBZQWDF}mwEl~XI_8!`SYhQpSUOgVSi{}w1e+8Vmx>tuMo<;>354pSWHzE)k7D) z?9q*igsBKt9CVsBFzBe5BQ}?y7gTj3{v;ll28!`j6Vm%>b%9nGq)uw27;<4gWa%5? zz+{$62_U<~42qWBb%KS5Yi%xY3dH3J(3nEJJh^aNEo(FcM5uLeg3w%&>fN1Qfkr{M z@!1tyRg@gAP_#d=jW4~@%;YgGQ&blpeB&n}>uC*w{Q^31^lQ7+Kg~~rYqz_~OAj8o z+XlF|%EG}ld#;vFAN-xgrW=~{LTX;Lpd1(AScKQRaC<_Rq=`8SooAtPAv`av$t_@_ zfBNqk!;c{X{Q#2 z%v9JA<9bE&fBnAQ#Y_(#v|D+H*X`LA$s*KiA);!;4Pw()s6+pFinx$2qRO4f=$soN zaBQj|XK16;s`I{t;rck$b0sSIEBuS58I)ui{m+}DgITq@VzQ>tYM?}@_378OjOBz` zy*$zeUIc|wb*n&0OOrOJHlBt{DAGiY910iO4Q`!M(OJ-O6+%uJlxZ&*j50aCG3b$b zB{kt*p;NH~Sd9j^X#-@7T8JW~aB{q<)BnTEpP$;x`)YTO9=>1O0=gf<5B3OE{u?zz zvy^=bCL3c@A0p(b;bbH@n=8&}UnsKl)0Ia7^e&^VuDl_r859tc;++P^I(*FYEdCVM6xxI8vpC_@|v2 zrMgLB1hsp4M&G!Oq_4X;Dl0c8u< zVKTjoQaqUm85>(r^Ur-zrfc2a{S*RlnAUm?#&#U3%~A1NzGKwnfuLHYt;*NAMZ|bbYAl1EE;c=b zL*YdM1A*hJk8S)z8u)bR+fk-U%3Ey<0iIS7*oL-C5MRb|lRu0rDD+tjqv${sUbjM} z0o#Bf%uk6u9pK@nc~#`p$0lOuxEaY+G{MueI{HZ1aBhkk3QjONp`x%?H|&M2yi}}E zt}@lyT*0Em?D2v`(qy({-DNvHgUYbVzslAwbCs^Gv$Y&t+RI-t)4#mU?Vs9*uXm^Q z(ZhGUW#5jT0yU1<^z5h@rnM%rk9lIl#UNX)1@4q_KwNRx6oYNYps!kJQf zz_L7xYYE7@IZZr0ZMH%&xNF13CAx0KxEp?dg1tAFbWL0yj^ z`p&s(u}3tmU{Hexq!zvLrj07_kJ6w%MT{?(czRqkPIikh;6E0;AhHoDI(SP_K%9xv zh@_v+R|(SJisk(L^j`1OqsQ*zdJ=!gZ+lf^q1dO-)`~93OVrb+C#;4tpY3|lfrc28 zB=~bAZ3QKE!FaUxCgw@>Y$MYbYgMA4Q4J*o{TcdC!h)$!MGEbfKX|1!WhSDKy?k8$E@;rZ_5*L?7v}rxgaKstj_?y;`XssegK zkt)sCMiemwZL=X*b}elBAFqX^|K`-~&O2U}fP}Qn&>V@Mwt9Y37qibmEh^pxiF>0f``n2wmG_|Kt^eE0n1zN$w zx)qkRumwgI?k+)V`O1svQ4rsuKGxAaCD_!ab;D=}m#vSkQz*C!rBaJv^%t>(h#Lx4 zf@3$~i5by2Z5O;QNM*BIWjJ@d zI0XtPO4|e^{RIOHG7rNjT#yz`M!q6NAJG3hF}HH57UPY7t5|?V3?nI1O)fA?YE$om zvW+H1+tcX%T^3cMUB}bisNaFrYkHhP&mO(U86C=`d$2B6umvM@g~@u%7^|=q*G0Uz zU@jUX8rgXx+y7gIy5GN+R@@`I4<5VQGmP{m?Jjzd6_M5!6cZBVu#%l|x`Lg)0$;La~eBs>G=ANWq~} zwD@o6(TLx>QWnLilZ&y8OS4!2g+O}0l5*E5Npxy)Ox#4EYn&SMMTu6;tkIhQaJV8x3 zAITtx%BO;j!vCCtr31GwvjVrJ@B)$V+y!z`;a^no~d66myF6 zGYa2m4^}~+xsvNXO{>j{qiR)fqqmWB4H9F_T-^ne0w){;W3hk@*u<(!yoA=siI@6l zPWdk=3g~~zW8qct$918x%XI$V_ilOaA?62<;(J#-jZ?9qD78D?vR2<8b}xxnPlEYQ zq25n%%(X?ebD04r?y04%+^)oLrhusN+EI%5o~;nJU|=|caY8j1^RV_@zyi#mzU`;R za`=hC+Vv=kZUy>MVr*$w6!2)#m_BpW)}3)&s%n!8*>ur)L-Rc?!ZfdH>UUDQr8P^m ziRKJ1Iwh7%k)soJ>_VfWM}jp@z}U`HGe{>?M!A=o;OlY4`1J8hd;Unt;+K2n{*NBM zUr(#~>pf4P(vdDKZn+f;Y8B~*Vo|4MyB${Jl(l!3N!D;Nl~`IyLxQyJ4t_hMff)|t zENYskLp-7Gtc4k|t%=Q5Y`+Xw;+yKbF8t0ly1(A@d@ttMj~=!w@=ZU~Go4wms_mhT zO>Yua%Z^1qFjzG7JtzPc0Wy<(QQ`QO#S`40wX)k)^k1Tb- zkz0=|963AE;mFFRHW<%70$mi?lP*e&lGVtCt#_G5-@lMw5r>)+V;D!{#l#Oz{}B(5 zkhj9|ZbxtIS`uS5lS#iQ%o-JGs0govOH9Fh(-mv&GKDsd-Ky~lvYZi9P_*^lp5yjT zU-IwcjM2`en1d#IEo_f-ECy3rW@2H%QLDZk7a-bv#Se;MyU%msik!2UdZ9hz+T%JSb!iN{qD~R_ z2#DCBeK(xosvb$qUVqxX;mFknVm87k%5REd?6@s8E%U?^l1LD zj|(=^)2g>@5I_XVX3aEPtx$9Sy-!wVm z7=)d8BPDFLR_V%Fv~MIYs6RMa=ZJS?l8m;;s-pc?+@T418hR$hE;u0+IIgs(3!sS1 zClSCPC|xvWUN5K}qV10P;v^ExqwtNuPSLX(>%~d#D9^U}gr4x%dj(IA9=!LA=8SUE zoLCGGdT_G>zj4au+go3_9Br6+C|wJ$)6&_@z#uCik6jp&mb82dzKz4+L%sV#)j?Qr z=H;zE%4-^uwpckn5?ay7lzZGtZ%+=tp9_IU58U6l5Xe86zj+~mrDmgFC~C(b(nl47 zpj>q}7d=kMtUYBgRJjFlv^+yY9aN~D_@AeU1m`=m9H}z}O7TeA2Pyeba6-dFX*DG^f>wH{t3%)bZ{f`vv!*i7gU8_Ou3>JEu^n9 zi@`gE=!&ANf-4XvY7ASA)FF+8DnP(5k|VsST%~2P>A}Mi$QIv3MI5wp;J=-f$y^DO zK7ajF(l8HuW0kU>KhFEX`OyRSo`BvEbBcl)JD;I{D)4KFIK;V$!y(e;VG^q zD~e-Q$NCGs7F!caJ6CE;iG()f8US9{PjobYoN%iptFb5*FAYw81baIo6v#Y?NLV3Z zr&uLuGU)G=*OZ-g@9LF$DbxRJdvwO4aNp_CuF6u5s76J zaBLx9Yf=Fsa~$ZzaRhgjiK`%_Vp$Mhux{Z0gRzC!Qi*X3M=20e*6EiK1{ZpnYcK67 zMMk}#>zerMdByX`{o(n?-`_nae(=cM&gd(bZDsatMDxXlx1e1VtnA!`=n-?TNC$}r z2#bg|cV#1L(v=cCLuNW>w3})k?g?>oS2UV!O~FpVSf#X8i6`bVYNw@GV1M&{(gOa{&H8o|G^{oEB(XQ0tvlz zcPO@ET$d--O+pl&GG-2d1UFJA4`4Nn>}LxxYE4;NsmtFq_~mT+o;VC^vv3Ki5$gKT zwXg{ql#^wp|JhJz7t*f|wP#E+@{Rb`F*;0jbCzHSU{u~Jyyl1weu(zr8NO0Kxd_T+bCZa%3(CKLNnqE#^~3UCZ7C7`CGU)?)=@S zkK^u9;)6%+x;4Ma^$T}L5qgU@P&vByR21p&Mwvo!t-3)Q@f@jPGF*4S?}BF(f|<2) znM*IP#&nbs#0E$a$^+yI3;pMGAfQ8;0&VrBSqe%OT9oGP)p}VgP+V^e?GyUtklxw1S+3$u6nvz1p7T6^Ox0@AM z6LS-!uqevibnA4BuXJ%-xSG=Neo@d;G+haQwH6d?ak?G!-yyM#0KlS9UUR6a3yRUg zDMV(v&P?U%ZEL?MhKuqjcly~Be;GQ(Gw!BEPqz|urSbiy!DD>-@aglD=;@!<-Gr6$tJ3%9i?4F_;cA`>zFvX;i$$4w~MbMgT7tX_Qjc~ zSM=wwrJ4xmwYVIX42o6MoM>)FS8zpN8ckRIuKpZxU%};;sVh>V+tA*IzIY|yj??4f>-|X z4G~CB!ARudiEd)5FdIkn7VEar6d~wns3Mg3hExwL3rs+%QITZeC0OR-3Eci zAq>~Y_FCT@SPMps+?Rk0VgSl)+^`6y(`K+1X*Dv%eE?t0PUcYTU20Dk`49^$BHxP zUuI*t9jR>wQTT3Fqh@ytQ7T?7oG>*Jc=HN31??IG!R@u~>-G6R9rgC-m-`|Fj~%(& zI+xc}>Zw4Th@sM3V6X&#?fRLcMr{G_1DAtSIYO(%j_K+YdB`==%eQGOaeZkaMT)K= zkmbySM@2!AjVkAX_%$lK`xJykF0D1LlT)+r+EU}ugLmDg_LoXS`n23gF1x0m6X-%^ zZd2T@onRu32dRxg&8t_GnW#7@vd@WPn6pI?RAGWv86z%T=v$anX$Uy1v71#8^3jt+*?1Z>Bnxe~11WFtd zGm2Rfy}24U;clh%f}e+Rkgo>m;&xN7o)T?k>Bcee`xIPz^dP=>$Ev-d=tccww2-V+!SqM6HgZ2sgesYxM!hUPqc)Yt?x(>=H@D zuVM*FO~$Q(rJrm$}^cyo1bs$Hnm zh>EXZ&4vV_MnhrCV4qxTS?I#L5InRGm+aOOCXIR!L|`KNujgV;f8?n77WVB+=;z8( z_t%f(%k!s?PyPAhJr~|b58rzouM@8}pJHs<&H7CfW>G|;-+I`Q^*~3KF&825H1%^z z7eSYoBJvAYn^+8cN<<)~to*73ww$tTpGSQc?R&1SgsF-+K+|rF2q8vO zkL@_+epB3FoVq54(K>HSD9!r9$>BA*_V%HD9BV$kXJho}@q6!3i5hsPxFL*5ov}6x zUa@>S$_|dxEG`=iD!K}17$a!CERCCfX%ZP6=do2-rU<%Zg&u8)s>FiMRMa}2ZRusP zPuSy}T#w{Y?yNNZ-z3)}8l%Y+I$V1q$iWE#A}V?wnsHjK_>V;HD`znqG4N2QF9@mc z#bC}%iy78|3Sxr8-r>U#1EufSIfRXqLE75;dV_%P1+wCT+Bb(vza5`Gj`rp0zEIPn z$L?3vq~;g8Dvs`5MF)9oEp}xEW34L!)zPE6nmAq6>(8E(G6(9oy=bRsaM2~{$jdju zJ_QH;&Qh?+v)kcwtjNlb*X=Y#B{lql3p3RTdf-w+u<=?=`hEG|JbLin+oxPcDq9Ip zn{z?erXaT9y08`v49n~-^o3f~L|?v7MF8*|;@o0pR{vgGNUKYWi`Fn<^q_Qs__?S%5J z)lY<^D4Vlm2sE+uG+-cdY7V)6T&1UuhGIObM;^a2F+hTW0$y!+HJ*C3qiFT(efn2P z#Ct`f4<5T~Mew(x(J}2<8xbTb?HpgL9U{!8WyGPV=$OGTN!Vo7Olb&Cqz(GCd~=F2 z+CF$+6hV;6ElW6s2Na*%6byQWn0qVCi6+Ld)38QwEH>T60A-Xra zD!o)HM=f*J)0^#QQ$A`-Vb61Exzk1xYqW?&vgIfa+i5|9=3NO`J_rEn#~Q`-`csy_ z)>7!mQQ_+&1W*JN6b}*1r@MZ`7nM=20hr!FiyFR`>KGb$#Z6ihS3@I5Db`vaMk(M# ziVekY3_>vaWJS4P0;j@aM0w$?tDTW6%4Vf^J&5MlR82ic4x%EWGtd3jV6<09`q-fdztLD`e|JfOLq!gQ`=maDf1o^5f4RXC8Y=p zvdVMX2_p7Y$W%~Eq_zl~CO5C%%K!M6_Tj^Or@)ULxc5p3w*tA+l$-e6(oh(k28)iR zh}KAVh~;=iG1HO;O?N{fGH6R=8=d~^gn&#o{iGn^1S%aV8uwX&MahG3+&>cCumR%(U{!Xg%nDGrC`weWEX4)=Ms`d+khRrkEP%8f$jeCeR zsjU^}7Aja+YSN*p_@RWReV4V5^e@HEmC~-~Nlx%^L`9*PLJ^9|bBV%GRxt5-LT6S$ zUw_&$e%f3!ioJCDF|hD-6iYO#ysI5;6b)(Z=d>*@G#iR?7-A7~1(L0BC_k{Z8ngoR zB{v4>r!!dy_z(B;>7&Q)Dj`sQD6bc)opwpAOZ1mhi)sU!Z8JnV2DPk(PI^@6LnhQL z%GgAh$p_*PJvEMHtgz@P$_%C|^cc!;I0R6d65Vt-I%U)PDj`yQqs@T;{}^~lTnit( zFofVgU_l$83Gyc-k}E11no2}K4DI7cq-P;2^luimyPT{?aTlaPJhw8qJ5|wv*r^0n zmeW2F+{yu|1*;&N2nqCu3NdR4o4Cg{pT4(4A3bW<9qQkD%(KrO;rI+CZd*`)ioOf@ z_asmfm0!9xz<}si8VIsOUD+txMddP$6{nRRmh4dIQvy^1YbeffP^Ptpqj%u03umH* z1bU6d9gb1bjh+40G89o$X2ELLf;X)9!nK126{V$AGr9m(Ur>85K5Gj0W_wa8OOKd| zM(ZIbBvhE?>D{KHx?=KB{SYCDKA_2)M)w-4PDA_PQD?pzb$|Ej<~e@9erk8ySRXrt z*PEJe612`>%W>=?x-j>kg|H8OdF)!izK9>? z15)2){iYf%>_QDG(qkflcu-^87L-YgS1R_H-R3xu%toDeMvhd6IcHBrn>yiA(nlA^ z2n`W&I`XeI`ENHhuk(FRpY*Y#_g+mt1sKQo-4eit7H$|^+~Q5q3>tiHQU}tti$tm8 z)E^pdq7%;K8-QBydzn63dSuErX|jD0CvayP1%5HrwdAUeC8#>N+6CVU7MR+z|)3eUIY{O*Rk zXWL&}$29Q>^hb+nS=WA#WGo6@#C0<5yTxv3zc#v}mp&m(XS2ClKmPNFPoG}a)B5i9=+??VEA@Hj^5v^dXH$V9?w@V)SZOMjoZ{3Xu%ZRDQEEXa1SwOy+R1+I#qY% z43c;;OLz^zznD*`h7Rr-^ zS8|h!w9h%9JigKzVd?=`{G1Xyq|t){HCplbH`{&bPMaCV|nYm=okuL8aj`wlNcB2 z!YI(xq#?h_qymKn-FkeO2nm)t)D{!4d}Z$&CzepzR_k9y=Yzh=q^b5f1Y2yw2%Gkho=wE{b_vq z)B4t7Uu+^bdl9L*vY;*IHd98qs`Td)!*3H(FYHGbTrIYvRk7dzzdy zh{$N?LhEXy+J}o)q2wxBQniRh`F2}H*(o85FYpvkhK}?zD6G?zq)$WP#&++}(hn;T zHo0@w*i!;7O6AJkN&Zj2O!DV-%9rl7s6KccuT19`{Q!|K!3Z=V1vG>_wcs@nB_7?i zyjG30M-)S|r{$hG&?VrO)=^ME^hjxl<$Ft^{nAVL<@E|cwxnpJklFw+LN^;R&Z_M* zg=LGFdQUgvvYFNjh+F0aCRMQ*GHuEZ@#_&q@sY?7$`Ov#zXFy}0^^6m-cr2tR>*g9 zT@yDl+0<;dF$6g(K0AWYVRJOmw0&|ypeLcG#tA(#9e3yV?~e!Qy+Viw58jPT^e?A| zQP@J%Z~~v(O4b=_{DdDJ9s)GQDlK65#br=)O8Mf*T8SD1Zhr$7LBRxS)HxyVopTax zl@hQ&)Q96OB)Wp*vp;RtAbgb9VeQv?ec_6MS?y@8;FF+Oo9MOGHeDiYehE9Elc3#+ z?qo$p80=a6TsTT<^LiZVLKM+xBL;=>Bs!tF4~#lpgK5O1q-M4BmD#xoMU`~ztRQ!- z*Z)7C+s{AWLr;$$w_kO>y;)Y#IVQ#?B7A(&RuoW-$~$z=&c2HGSqVh?>m-Hge zfipM7%84py7ns?i%2?w??yjvD)Ar~bO=SQj0>M^JeGFX&QO`S26vF9dU75|IftdD` zG6*uZ1g-d3X$r=Xx1zdZG*e2p4L{U4^RB{INrNdeVNrC^Lr1I7W}}dhxS|;ER7me$ z2vw|9m{R1C9*v$e<=ufAJ+G+_H_i+H`22FN;O=SyKX%~WyCpZX%qhA?0l>=SaD^-@ zAi^Qd)-#;)XML*|ni<1txQ(YlPxQJeN6@7P?Gm7?LYzJ;`R&-zJ-``3i9`9&B)kqx z%t!X1*{nQbZ~?q2KKqUoTOK@ce?zgw|2q=yjy@{|znP+tW>7w`S}bYq;Rr~;&+ocU+{hV}b(r`Ogz_hYsRjbrE$`GO-t_UzJ zv^KAsc!>5hXHNMLzlD{lD4Xb=pp%8zn4oi4q!y-7Q0&VFIEeC-;r!gPx6n-wm{24J zk=i7!9l!LqG%pL&Y}#S5{KI}+$(S=;QO9yK=cq2t=X>?uj~=-9U~yBB%G&lq>2XrB|W>s6{GYJ5PeF9 z*5cq%Xx2~mQL*0g3N$m_T;Y5_QZ0`jxc4R$qu)NwX^}<#PiVvMg-dFsT7Cy^aG`BW5ls?aLZs}bf9jh!+Pysc;E{V*8I1~XMT8ASj>=_X2Nd@R zj0sb-%$r5GAfvn5ys(|2++tS+v+6q+{zk!NC@V&OtMLX+yT{QGqEFp593i;Pp{xSq z)Hql#`c)O7+Vyw>6(}uJ*lAM`RN|t9K>J8Dn#AU{b}70Ktx*F#FsMMO$m%h&tHFnb z=yS#wsAe?r2OMM4h@~$TiY|(cJ)&MOcw-QO(6&KmIZhvLI^upa+J_JC7I;5+=-z`) zlsivR2r%Ti;}dMoO5vTZ(TZV`Sb;ZK0|wBZ8&Zr}$ z(ubgePl$_UT;ZG&b;zHP3Ab$mM8yjG(}pCpp(!Xh zyP|f6;u6Yn+^u3oZO|ErHWu;tLCHk3Nf}k!fxi8H#4A@nBE5=Z-nXU%JAE@lFYNa9 z;`~30EIof*PdFQ`&tLAFkUe?`Z)^8oujM=zT^O$95yfqtC?F-&wJY#zH&D-tH?A<6 z&Dg~&Hwa*yuMWqKN4vv}fk8>?`dUXryFj8BUD-#*V%JSGu>K^qvYQa?Zd`$Cv-o-= zl|{5IM!RrPzBfe`ocOp#u2Xnv(UGDOZHejal{l#w8BtE=50AE?aHyq#<5fqxG*R3p z%q;%y@}LtA$#ew0;g+J6P49q|)(~Uy*Yn}ut)m9<<#QYNikBWec;6=VzkHk2@`HK$ zxc>a*TVuw?o=emb2d(F9-7 z$!ooCdW1wV#e&PiQK zMq6K$P`O!&12I=Fc7p(;7Ub53snzBgqtLpi{!tiQTVZ9ZpVlXBQ^w(hm;xwf=vPjU zE=qnvflf@M3HgN8JKfng1^nODetq=dy}w`I93km#$(GydQFGdL=}$1@a4@MMHqFtM z;F@c+byL`Zjh|0?5K$`S31PX8w2;Sv(vieg&tVqUmv5(4%q0AeHD`t;D#Eq(=!x>O z8?~ifD7D0D%j|52xV^4L=J-)sDSg&awQR!Eba=z_8rolsn z?Tj}6(7vpi+$cP)L95ir#7OP@@h1p6w7 zW^6IMr}jrdT%LNOsR$zGyu|LXA`rC3*JnB-I#n#1Xi<)Ws72DSY!q|0KE=Q! zVxy)cqrsgqn-wr9o61%jxe=y#HlP@A-LS1Y?wcE%iCgmlEaLBiX+k8kTaA{ejpoZW z3fX8GcgP2XWHB^06XljT`^G;~v0P)PL8Ky)qP~sfCyiNvFwH08jvNlqEGd{-uN(Hm zr_sKw_e?V$J$Ubyy&NTL94@h1%Ni+@y~czxsZ>Hfx6w3ELgPVWwFtfYt)!PjtW}Xx z92p&;s<)Y1^Gm^p+ptB`xX35f%f58w9+afAA}FF2A!XVQuZgwQxOd(N|LKLq2wC?u z_xhsw>J^DGE;qE$eGI)ux-}YCB7-AW?y6l|j8Zu#FiKmSikZ1=UcO-mMm>YTwix|V z78mnK9PinJPU+309wDvu=jWHZS8|UYy!T4J6IOL}($bBhD37Z9TyX+HB6_Q#E`-Rl z!a|9zW3QsDrg(@O_?q~CDDw1U>&8v-5;4g%hzZnZWq*N^u!P@-5?iGoH*=p+Iq(xy zzag#~jgDT6(&3TIM@?NXs;HJlQUrYj5fyurHeRVlqv4Z~55?_z0-v>W8z-uE#-fPa z3Q7ZO2JX(fc2VDPjzBj$3L!Wz?7r&cS`Hb}lViIw61r$2d!mBbYrH&ANV^Cr??r8A_H?!D6IXv7?@jYfIZpNM%3S~D$Mxmu z8RP7aFVEwyV)tW*@4b%mDB7?&T%~Vmi_mXVtMH;=n}SK*cA_AtyyFTD1IP_Kteyl` zr%(&Waf05W%=$4z$0%~H-84Z<4z!VL3k@FIYD_ zvVn4b1UPFGh!pDJP=BF(r`)OFB#_VTq)=3#B3cjEH4;iWY0v{8P$6_8=rwSGYE9H- zBOgmsX~W(TIUm7Ij~~UF?s^RT8*SBBch615a+c>S)Pxm70i$~ z&Atjs2=WyXM#V%nMRFac;6hxhiSA{TACU#Dh}L@TD~qBeT?G38{oZ&rZ5uIfZ;46> zPbyC;+WB5?agrXKB|gOUFpt>A&~Ma&w%KT7WNhKB8?R|<4ed1{>gGS}ClsCdJ9 zZJJ0mpTRQ5HE~D%p5MW1E6oLjwkCk7oUIGrsENWrir)$%{_YR!<;%Cc`bB?_$IaId zcLjkTJc7Tjig4+N^sPA#&`+1H0>4c< zc3;+riuYQjYb}v)TkDt_yHO#M(<&`CanRKYSK`Wcmb)>!+DyFCn!&U*tz3bR&h)G> zwgyaJryQdR*L*DKz2fV})4X9#<6Djh{tW@mhL)v*AMK?YTT2&)QYwbF1{F0?4A`n` zT)rVlH%@_SR9NutikALPKXc?2YEFw9 z^gU78SlHZV+v+^}x8qpsiB@k8x{RX@h@0+g=EQ{%jm3fxsKC1*CX(4{6<0f@%{JF| z-KZU8m}%%+UQ0Mpoo8rGF*F((fk`DDHxMYS0!AY`SI{mDa|`1}dZ7e#^$Lr+QdEMq z>lJ~m9$oxSaT4nS}HZmfj@lmhC$+cbdU1PfE@o^Ty?5N7b8<|nTfIX8(uTiU<=AvVx zIxUqg{aAkE+c<`@QKV52v8qiqIE7{UZh_9G+*Pr+--xn{0!CwyoK@bnv^x$ku0p2x zd@>$$RPBkNMU-!p zOjNuQLRorBtrxAnYLDFprPB%nw3mdfK)3@sRYkYj^t_2kbMeNTS_49enW6y^D={^6gdm zrTWv6jluE?lvm*j!YSqum=H1pKMRZ`JzDpp#5@c6~#&igc+}xHYbiu?+(5El7{~50>h8uV&xo0 zc(GA`T6L6soI^ufn9AVzs3>kjhYZe8=n-gRYfYZl&!{05@gBF{YxL))2{AV-ZH26(ix4GKXn=&zynrLR$d zG}=)c%h;5Z{v1VET6}}TxQ*Sj;X*7eaS&xV5onZUC<2IAhT1fpWpe$^9^5qkYQVYMZqSF+p1>ihLlC^%3G zWi?bBDrV+(g`4uxpFe;4>F2wrgO47#_oUe4-dhv^n{5OhO%OR)bW4WL(UxfN7UZPx z-S?`IDLG^KN>2-t6LhTTA1K3ZN3d3#tCcZDvGr1^VySwhBb9CxLy*E~bCgo4EbHPQ z*V94qe@$k_Vo8Ie?5aV@dPfTH#55JQ%<7bB(%8K=Q|IU}$BgGJ430WlCavQWL)0+&ySNlojSs z2vH803WZxlT2q2Y?lAg_s}?1PfXYi%cwyu{r`YyJg-V;Jw?ZGiXgZm3r`%#w8XdhN zagCO`$Vv%Qq+OIpV6;>-fu^lbMPt9&Os8FiTH9)@-b6#xXgkB$G~b%}{r0Elp)LB3 zVBw?3?)C)#?fx|TL`9Uw!a9872jHkL(o7;zM#J=yjVAm#W&@?9)VZNc%t5NnIKGPQ%fZl zDt}PDMy635MVMIpuT$dfdNP`+qdzIIq}8A`oka_qMNL85JOnYr)^}MJM@D5RK^6o+ z4Ob_DbJ-!-;p4TK@b~TIX@6+x5NiNy=4iQtVRdpfsbQo&lA!_TeH3WM-soya|9H`uICaejOWk^&0t5^iV$x-GFydfg*_NMa(hQ9QOY>T`+y!%Vr| z%`V-cl(i7ro}0b{B~^z>R-$!AFD}?o6{7Ta(b1XEgENY!qoWI0l^knQc8xWQK_m@m zK(;-aG{lBN!gaiKe{6uXqmghxpw~yv-{vn3HJ3Ii1R>(R6QlWab$>JANpu<40 zUlqnFq1Nv4^t2fT5(+xB{gl$Sxk~J7!mQN>5T0#&uF~=O5(y9(QuK`?BDSK0t?)X9 zdLyxkGR$KXKeYQMS6>y8Pvy=k7Bh#9nqP5@Ntt3fIs`^IOPfle4e){rm)8*N8`Xe! z=kw9Sc6)UHno1Eqp#%ovjr6S6h82*=rkUI`;PP-L4y(`)5nEDP(^q1H(t&d9CnX~S>0iuw7e-<1@7^w7QAo*HOvpgJp@0uc<{sb|z0>v>xRe^GdjT`QGr zA`&(&ly(K=T;<|QgCl<6^gVjSP7idz>3JDTYq*$~aJnB(SSFRRs3EF!#{(nEz7>N| z6vFRZw%qDB0W7S{%8RZmM3COY@Z0bO{#8jJ}Lo#8$~kBXBEKqE3?^Dly?9dI;_$i?(#u|_wJjwL)C!Xb zc@?zJC^1temi>w-!6wu>8vUDBzGG!wmVmudZPpVyD;&p-cg)a`&xKLCO6N(DT49B*A4?VD^N*e@qb zx&Nk2swlSA5!^;52;fO)vW+8V=60b@3t%_@%x zj&QW1JtsasdK{tZX{UBm-%jE1ih&h=yf~c2RFPep5=OUNZP?R_#O|%oH^89)vL04I z6jWPscY?^T6Il1L!WK7D2zEG{HnhyU0E~EP*~N){DDNpE-~f*2=%o9=jw%< zZGm)3gH{@28T5)v5Je}W_28X`P@u@e02~Ur*Bdybhc*R*-EZ7XjJ~z?rO>mm=b0g3 z>ZtEn_+D^{Z0#K6-!U5}MV%`e8b;U56!96Asmwxv(QApiNmi7 zt06nQl|&U1rJN2E#91lB(jb;21*w=9aeNU{F(N6P8*4L$fY=dqHE60Ft$_;J&9;rq zBlqYbi+|w1VEphgMZr$No7qmS*i}IGw~J<)Kdt+7`slH{Rbzj%%@s7{rcNO&!zPq@ zmasObm}bV964-Q$4ab6VMyCC)ah0gAbi$}fz)UPrNy>FP*fpr4b5sv4#62|;TkFoJ zo$%EYb(ydINp@`!m>cti??@%!!2@?&#{K35*M~laQemwDJ>qGt3N%YosJan2T0lFY z#7Id(>8D7x;6*z(vfBNK{Uq$;@pm-^p-d}yFMQbo7mh=qbJn8NE=KBd#J$ejF6x%A z6Z(BM(L8$a-qrF5n6+no$GEkfdgC#sA{FQARq0{T)Dkp;oP8(-R59-@5~&PtroK&C zD0@YCQH?Ap;X%ZV2uK@5&BdvZGDGUfU6*yr8Lqoju)gWZ2mVpyz~F}< zk)q_l%~;74{hEme3%y@?V3yb2Iaf54?xu?Wkl@ZfZJ^qvi*o_0VTJ&T71$g_ypZ;W zj;v%(BnNkgBPdx8 zu}FW@MWYmm8Y3V=6PkCz_c+rnBZMlrqf9yl6}h<4HWbZ?bQcK|FQv!hL$6(ca)-7l zSyC`}i1I)x(T7&13pSuB>m9cRh%t{ngp-Guh`$y-{L{}*ubcJWbH0r#pR9BeYR|TAa{mp*xrTNV{kOiHIQ$xg6N7B87qsTc2(_J?avX>#NkfWiQy&GMkBXjSxZ&fB0~{zwUw}IUGN&YfL5Sb`RHOl0a@#&%%_pq$BC~{h~_+MPgK-=Cej&Z zY9s}eo59|;#kz1>HPkmO2-TN|vE|#oSo432P}^$Ar-zUY0|ka>k6d^p%_L_VVSuDShMRJ{MGgbsf?xd zC*~nkB1%RDwmx8s-J5onWfm-;Lf{H}d4eG}Ip~AIk5O!H=>4ZjZO+D|B-a#$#XRuL z5_@;;IF3^vh`(`1+EC$p^*MQ#mR;yU&##~uMQ4>X1u7{4ZbD;2lo6?$7AWSw9yk2M z^N$}teZG6v@ZfQ~wvB(&0_e)&O#`Ekt_ziU0WU0|@f6sC*sUpBWE3*DR$diD%xFwk z1ctlDrciNSR~AyGdsMF}>c6mzMPbHhIWjBUVysxXU@DZ=V*#(fD3@I3Q*7EO{ZTSM zI9XX*oM{9AVC)dgrSGXt`IFw%Vf2qCU_%<=ty?>dj%xJm@nfT~L?O`GgsFWSSqb@+ zEFlzWk>%YnDW@SmtDo=YijDr^r}g>AVIF*Ochv)M5(=nM^&U$YB%+Q;ri}?0E4ey2$jI!vJb*qbwRZur=3= zA?040SVzw$D&1eP?mS#1&_*O=ufR)l#LPt@a|z;N^IkR0*@&IC?gi&dRKVnvT>Fnb z*)Wu7Mk9l>7PQ1w1QYNXSlFU)0LO(Dwripj+9E>%nhTL}y-@x8mk&JG?Q}kR*xoC8 zSP4PZ;6#$GmR3o_*@}@>D~)2?G-?uQ5@AsGQg{)r6s6jlayA`#NWM^x(ax0H8S0OQ(}0CZmtVf(m4!FRLx#IN)&dL^7=vA?F&a zNTI1(E0}O7$n>V?vRZ{h>^c_3h23cA^!%8(yGTa_qlBJlr_ITQkljQ9VWz9E$@a)J91bx*ELJo7T+e(dOQ)P)%1X%rdE4b{KIVvhjA}TtBtoP7|i%!>g^|@>{%a+ zzAxoSRU3p(88UKIo-fh{AB+IUQP~W@MBt?y`9=@F&y@bCzCnM|f%@oOcj zk%=ULtm>xm<26PANV4`hr(d^~x~sAhz`@=Tepzcy_qFDn)6;=TiX*=sk4L=yJzI5s zd@cAsdEnj_g5{~A?EC0spOxF~G8|5*oIW7ly0=X|xUm$7Bm9FLS71FB#u#7*UeTfn zDtRf)cR;g}J#|*4lU3|bQ*0rmt*OvJ+AmcNV*XmGk9zACBt_89C?QzL9#1)SR9@XS zTwO+Cd#wKo+&Q!+(JhK^Cfp9kXeEYoR}5JPw#>gMhGloCV*9~j_?TB7cIxlKTi9)k zDtX!x_*ilF4pv5FD4*Bkc`wLv#(4yi%%*QOSR(CU`RYq+ zfiRAt(~`ad>zq)_cKa8dab8hZ)5`nSdiFSo#9&{~8e*8S&LbVpz)&S{o%Y7*?6W2b zZ4$gMMk2k?n7pO1ta^B@(fG+j_hu-rM5A*7w)PgwrbA1NByeTw3uC%5LYH=>q^P8I z^yZ*}C41J{YFg)7N=kF-FKp2b)Vr-q83N;wN48N{?Tv2{`(?uU#$9)gd|nD?kt%g>A!RYKk}5 z|4Wz@M}pW~1^zH1n>r1TuLiNOrpKPtzx>A!^Ox7_Rh~O+FKNxUws8>Vl>@N**7QFP z-5~~8CF+nu#G2q}KKA6xchycioLvdlmd+CQnRF!uwW~a!O7U%gX=j6GiCqT^mSkW} z0vuqT#5#`($}Q3i!FvIfJUu!_uQvVK-UgREOii5y%n9X3)y zRAx~88tM)}@wjbHJBc!X9#Xd~7^bwqk9xsDfP!TvYm0Vw?u^8X3Wv|{KYy8w+~?N> z9-cjRZ`J(vXvdts(YD(p+lXNDx7eKyDsu;-4X;0DJUEh3)Zn^=tNa`$9n^HiGG9*mAt@MdPKk)Y#>YEsnNdfFb}XLG#Vzd?(3yB^nMMKXG-9jRCRUQA&23G ztS@0QT-#E}=)9YV_pX{jZ;{2yD5zK#NkJqak8{bI$(H%Ld3(WJv*pe)2NY#&qpGSj z?I~aH-j8(KQ0L_aU?!W!{eSfnV_1Q!BGK;2fwSr*An1o)P zB?KxTmRg8E)SV)zMLqCfT45bmRY?kfnY>;qGmhgnywXv^x+m5X2_olkX#_j=<{=6Q zXN~RT(_zrZae51Ok>6o*`~IT5VQNa3&em+XfOaxa!9{rl9o$x3*M7Fs5-xrT#8vTN z>A7@z1r7)Sa}wIJriOV}vx6}RhqkQDeBDn?eOMg_VGpjDyadQmFFh4nUlla_>;Cbl z&mUitN8@cESZ0d~a{HfazP@#f$oYD^8TP&dtFp5~YQ}OUvTlFyZ=kjNex?uo?@7 zuYOi5x@S7Cm}@SN&2Im;fBf*ly_*;@^- zd1k#&-_}Mn*)@CDxF}{Q*^$b&*#OFe)y*4v?^X2rZnliB63>{+x{ts{I$5@ia!b}H z@LeqG1hxGCm9^@#2lJKsZPjqAh3cK*BhDMz%2Bj4vvSAF+pXo=uFd9bB0=73gIG7w zI$VJ@81Iv^Skr_(u;NH+N8ipvEnRZR+IP4!XrIxwpP*|aa>5Q<2aNtX7yCYY>>e*w z_wTi#(0kSqUqG(NM3Q4ads4p(tQU*djyV;g)u~(;Xt8d)&Fy+bhN97ZA|*yL4Np&C zgkSKRCr~2V!E*EwtPk2evhQ^UJ9{+suqMY!$3OF1n`aN-%LD#z2FOA$?MX>VLJM$Z zb5K>CIBord3YSF`33_b7t_!$4*~{A%3sO%_`_?&tBy9b3Fg9rm;Ur}R}Aq~A!w<+HLn90bb8yYhedc5B0|{ybmx zx_I{ZJIp5QPY$ZqdL^BAG!HV)W`}rxVKVgRQ^Wo2k$Y1RmIVa6 z6`h5|4p0jQ;>?2t5_&yAZys3@V>0V0&)$2q@;Q~IvRr8;X)3G5c5b(;?{3LPvcyZ{ zNN_`9yIHa`HS=D|Np&xomlZsZ!1vF~u;kf;_g1|U&=2fwm1Wvai20`Kl2?{c`5FQY zej_lgcy05nrRs0BQeABi))kD%aE1fkum=(ArF8Km2^jLvLp^$8k(vrk{W5;yoM{vV zz+e=K|302DSueZs!^z&E!wLY%S=xp=4ueg_(zkNpP%Tw=!XaeU+b+WWx)CK9a132#CK!rjPK5W2ZW!_QK zPzW8{S5n;gzA6L0SxDsb?7sN*Lb#ccY4y^{Lcx6XIhY4#fSDNwPsCQ3(2$Z_-^n^! zwL2kw#h~MoAKz!HJSTMh2)Wo>&gkhoI!Ml}0oJ>H$<6MTO=%6%UM!Hq4My{L_4Z-@ zVZPR7@$6xHS-}0R%VM|wX|E>V3mkuGcEYySrGcH#xM`^p_Pd7aO4bOCc2}2=pl(pk ziA8m5729u3+F}J=LE{1fq3xEewap5Ic0%76SO}Z>UE}R*KFX?VYOEN`82biF=xUf% zsi>6;%?f4$C2WQfW7~Sk1;w9!eDrP^?g9j5&W@?^BEJD0)sR?IeY4h!UhyN;*$6~VS zgFWFbas!b;h6;n-H|u2wg#NIeQLWW&u|&r_W{&OR<+QZqQyLp!uVO*)q^^Q&i==gP zd#n#7nOs?sx&5jN!vk`(eX`|U<9Eh}oTBzc2gH(3m>Q;yKX#7-`Nx&Wu%Y#mF6cRb za?0N;^z<%}PP;{!3K?pzyYbdTONtN@?-=(N22tz%hY#<*j@&C3sZSoeKb_O-*NZnu z_!(`go;HA4^|TYTSsCz%4eWf3RXjc;zJcZ<0gM5*1z<6t^HN;o;OVT#0VD7h#Zzrd z$4BK~luZe48srgW))yH=6uNGLzv(fWnzY=51(h>^lr(Q`pppkQn8Wwsaa~x-};?t-0gf(w^ zyG1on>`eeZMTopQobh0w7!!*#FAz1cSN|3b@}!YASoQE2cK_~HT)B%0Uz^h>kKJ3x z3^9_M@@{De34q;kbt_HnafLa|b;Pf!X;%x`Yc9AR8{+b=h>Vn!vLy{<4SE3qAas&d zxpX*#b+3^Ri-UNJG_+g~fxmDO>Z&%OFC9uix5{slHR`VJeV+$A#rq7N!#h(;o5?k* zPy=soSa@r2PaQnMZjnk?J#Hh|b{O1omF+$PX2=z5zOoFFR4cHbr^fM05+DHi5HK1<0k#HoslNhpza(X04!< zy_u$pP9n3idv+V}`XuIijM~<;V`peMs1B-L^xmPn*}OhC2ZO(l*^o_M&KWf~tG3diUdA-9CtG+hbKE!}9iI z;XI7S>Y=P$Ily!AE>q2&L*d!mMtGguV=2pDf0~~^e)z*{DfQU{_kBXuo#;ROU*8_| z|Md(X#Pq+nU*3QC^8Tm)yMO$VANW7N{qg_vwIu^sw`yj)Z)ERF#sv)MHW>{q!6R&a zuv4}eO22lXTex6(@V_-k{T(E*px-vy5^@4zs6{Ig*i#S-Hq;=#Y*}c|Z&t>kOnVk%?O?tv2(~<=T*R| z)1#`T7m!bK$pga({Wxv!y$&1j7aIdmJami6FS71meV#x5;Z;ejXOG+WDgPhc!~1{u zFaPB~ME`O4kFQlPO1sq(x`y?=?~LhIJc%YWo)z#uyO&lLyRynu0=jh|?^>|k@~XUV z{Wy-x5|g8(Nh(}iz{;z|NzqFZL4d4Qzv@u2``-rEqH^&ESeH~XY{+&9o zE87NCbn0v{RY-KZ#TkK_%kJcO$PnA1jWE>XE?yZ{Mv<-Z6l`R(yYW-{()S9#cGfG~X&$gR>ta-sdA$SPb)0ojPF? z=#~csOQG{QORFBHTX7g{lFrdmhkbXOfLh9eRjlj*(Uz4Zw{&nEGW$TpO%@u?lZ@9% z=Z7*X#A#Lx(Hj&)q62Azabdz|H(MU#yl%x_X2T+iwV34fc<1_;Kfn9(=`~{e>|uMm zN8@7Iz@|&xJc7+pJ>o-G9|lXYjT*-pU=oCenG{u@NZtxJKnM z)x`ATjFBTnO>dIOMT8%vEsmV@2qm*TPUoM|o!pZL?ybx7nxF=JRDn@>VHH&NWWh&% z`;4W=9X`g#B{6;J3K0*Nb|4s3s2Q(Df62XWe=PjYhj z_N_5%=iq<#REL-;w0bLm$TD(b=mrGYa*8VU2G#tk?(rZ0`lpX$et6%06+-*`+s|L> zYZLqI0erbrzcSkjh_A`rP+bA=`EXT@01TDIcV<nXa~1<)qD1xXL4?5ha<&$ z_M#VHij9Cg{)LJCWBu@tuTAWe2k>#n?%xXfHCOI+w-@*pv*p`KKr_H5?sF^%U@NLz z&*i(T9yqmEzIbErUdkSg{-`Qdw8Gf!GTgko!Xg< zbHW^M2QtN#!BUH7Jgh2Oj30|65DoUYc!ft6^!Ez4s1(Z+z7~d`Ja{klKE8$FzSQp8 z@19%mnUZ-jhYl1`7-QJ0{ooF2jT zqVpDCbEZ=n{WIR+bH4_^ZGRnkStF~et%5?|Kv(%*XCH4Ry5_AYR-_3HvSp{EAJ+@^%KjX6S-xGgQ7B^+ zCEk{B;bIHAp$JCz$HS&WR(%%i>Sw zR>8rkkR+j;xW4@=9Q(@b{#C1==Xtyqi=RA%Z%yrCC3W?jYFF3Cx>zstw|V?VD;gc-tF}rt;hE(?Q6LL_i>Cg3e{I%^DD~dDqfUn3;$4 z=W(q3;+T=O%sb~R!5J9z3o)c$n`Oa1QEYxZZ4;Y(Ef&Al9E zA2%}A200-7GeTzu@dPz=W$QbJJjFknl(T`qk@eX_B!(LQ_-l*g#8~b}#T?I`6W0h&rJT z2$b4VuF>*7g0Ynd&?Uu=JVzp;L3P0$<(3oFr;H?KS79XWg&m9oMjKNTxup%+czbSt zWBtUJ37P%!>iOcc2l6dG%fjCQa(rMUU0cSXJM<1sPHl8(70^VFQBUrBIxUYsq1FL> zA6asT)eZbciM$Bd#a6M#k8P1*cbQdN%ga&NKbNYJP}IeaDms?JF&{h90X+Q*qwWcc z8Iwf=!*d&w71Uns7w>9LLXx#5xiY=>Fr5)_rVBFnEnauhe6LA)a9O4f9@Wx1NM2?dIG#xRQ){nEh(nD z4u+RMdNj%)ys=)D4@d#n&yVE+Z#ehUo2_!6_Kaw=pt77g12#h{;o0u*47nv^UwdV; zcv7O?KDM$lcqS!1QByk9Mu#M&U4`u1&uVDd;P1zOX=XoseD$c}*(3Ot>{dK4b*QrG zf`3oBCA)e^P;G$+co5*8Mioj0hGBkin|*)y-Pkm5&^*Yp?(b zMQ6|*kI0kNDk>n=9r{l2++N=Czy`HRmk$$WBAstJ;+;mf+JguozdGYmIv3ZMNU5m6+=^>G>4*rN3hl-Dm|}S4m*f6 zw;MOsnPgrDq@ud-+QFer!BokJ=eMYx|4h$*$Fu_XJ|cS|WT~T&4d3irk|k*PP$05r zA{Q9x0)h~p_o@^R43?Qc7!BJ@p$!m8@@>iioD8EMOKCHW6?;#7*LjfyZFXg6$!^Jh zwdn2&zCF4v7ku2?bNd%>X!1XM0N+B%aYCckHi#8nDI+bj)>3{&*OnMq(Z;$~!=)_; z+37k@VQKXw%vS-0!VA@m1FsYEqHSb#tVX_znkd;FNUE=~<~3xg;G)is%tuX+U01E} z4lq$Ig)9K8vsx%x^}U4Yq(h-5gI20g)nY}_38Yj%joE<+DYwFpA4ErJB*|;s8p@sQ zw<50=dxaIV@>Q#-9u>vS#w%;uTJd8kFVK{J$nG(+OZ^Jwcl%FFR1-h(>B zHvr27oL)|FI4`YhW(`I+HVlDhv$yc-$r{6b)-!A1yp!|87LG(-gq2;JQg(o!a^x8E zkgKyY6EtsRw>S4A0+_nX7Aaptg2MgA2@Po+5u#R2l z4VzAF@+PQoyyQD zd%+jky-@5*AnZ@;DfzKend+c7qfOz*JOFan)h!ILemm{$u#I7+t{q>8a8&*ZAmQ;c z000!(pD@5$RSvL1n2ZGo*;V86q9?7s0S$S{n&Pd`5!4xGYxe^X2~Sl&db@O66Dj9& zpR+-pZV9?{GKqxr4UD}hWNLGNi9t8p{%f21!<>5M^O_3RlgIAC7$yGp`o2+>T;2eS zq4(%D<)%jSt{HdeJV~EmjN$p6Mmko887Nkefx6*Nc7>f zb}MTwJ9mhrPY5-GNmGV3Ldmhgf%w;B{9m3u&T`t?|)Dgn{A7b1#TM_2Y&BBTvmk|~ z3PRnFmTg;rfOyza`ES!&U?-IX>rQUHsmERbatBcV+=E1QOb^dVNO8-$vaww=$VURV zc_U(ZOgQ1{g@k(_PT5~Krq0yE+Mnu;78LtqFy^Tw`q2G+k^gJeuNCVaTna z5yc{%t?^APPzD6_#*^Dh?-gSkTN*JhgWcTc$x3E`$qfoE5c$?)7Hzzr2C2~Y3Iild z!q!INuXoBd7p*Q@4;e;$5Jac^g1> zn0}4Nl7If$x&S_V;NCK#T5yBYpb(Ee$(v`tj^hH3m)j1Ur3c1_4r)5-SZrHVe*1_3 zL|vY8BbMx!?gC4b&{g-VSw+-?vP#{up3$!BGDmnnvmF+3H)bxJ@a6r@H!=5O2|HQk*ZonZ z4R4oDUSw+gJRhTP3TYM+A+Z${Yuj5J8Z>Tvb>4_ceTx>n+~?rQo|Y}C$Q7#szRS)4 z%`9?ej~Gn}b}$URiolva@i=d|l)WGI@-q4bS3#8&8FNdMm}zbWj|^O3m9{_4fImU^(>t!wGF1& zd#qSq*%jU&gM6jNVNoG5EI6TOgn*$+M7xbg6dNQSp9<=b>dtnmpIto4fv*-QDw`)0 z#zEACs_5D|6_pj1+*tCwqYHZSmEg zax1q8&g1l^y_l0oDzV#=JkvTEpj&fy_fku%Bd~04c0X4;p9bt_%la{_V}@qqah@6+ zLH$zNhdFEVeg)V&Y_^4Vn6ZlYD(7ZrL|5O8ZSkUc=Qp1T$?e0({*UipB{$C=y|-qy zS>v}B;T-_VUu1cOp$g$ea$D>LsBgI9(2b1&E_eNuHMl1p9-J6u1pG}was#paNF4u z`UupPLvZU?SP|)TP4?{)SY_F1+8y;2ZDE03 zRjiA;t)Az|z=Hj;#&oFQNMKdXaX54O*)GUj^c4Q;C65)OHy}ZoZ9rirkaoE03DPKl zsKR2{?Q(FU!7+iE>pihM!rB99D_L!yErvSuc-4Of01I9__x^~T{^FlQepN8!$)onx zu~N53;$Uagm^3FmwD;Wz+tvHMa^7AX2bpITRmT~oNyuWi5Vkg$UbDZq=T$(LmnA!^ zq|g9;bFwu?RWQN}eFBt9Ac`@n{kZtaYK8jaHBHb2Bqx4m-!9wnS;K{KSzqt4@|?U; zvL}||&{NS4n;4G4mIZ9R+wS$$Id2D3+gG{~aD?DzOtaV$# zZ^tSOmInfnuV?uX2m$QJY{0xV)!#fA@N;E_JV@`;jYHVc1P@$4s=upcu4dj)f;|#N zUZCJ+PhhKjxgTc*R}91JH8=^&(>63!w0ln4f3wes)unEBdE3i01Ehw?H6|F;t2G9X zsJsomGk3jk*(~?n%$TdJu@R=7{53U~|MkB7ztsZ&+fVc7kDtEGPp=70JbV1!R0HQt zN7zK+C)ws2X|`N4>n9y;PTTfR5F+t?93>|*Ly>TM5x<}ON?VV!#WL2B3xKqTjrE%Q z&<&3#uNUz~rRP#T)0}-@ng5=k*exlK{dmUIBCuW%VBr=;PGh5@q2S(tN1JiT{%WBd_gq`c!LR`u93y3m%s^`xcI{kGRW#l9ri)N z_Oq>Nqw%1m_G-e1PwFuPqmGA&vw~`^XRjNv^T>Nu@UFqU?SZ-;3n9YA+TX!FM8^rM zfrcL)a-xCCrk;;NMq_P7El(z5*;cMb;H7AfJbguY1MmshbXnp9gQ%*!5|s}gHt;DP z>U%V=a5v+p58PeoIeU5x#M-62V>0W{ui9)pd-PsH;IF3<*1D&}o2f)XrkX7tdhaa4 zK{x0pmW$V#x~F*}yLqLbkIgGwizQF80ZHpdc?siH1yZIr5EE6$Z>)ZLY*c$9{D3nzbAL89?w`9a>g{Ec}lhbbB#>Z}} zf4C?2hx+-8r%kUN`#*d9-kex|4k``eEIih648xL2#-R6Rzd(XmFA_TuaJNnpKCpOp zJ;#ToBvXfz%T5tScU5QyIZHZyT37~IZ`W$9;R}WaR0l@bD^!=lkv z0iM240iGT!F~;*YhSgx~QElMg+!Oob{QOxhiC@0Ff2}O-*+clYol3GbV(IX-X$>G2 zFLvRRFao?_pJ0?rD~lSAcGz0W-r031ZSk(!7<=3Tj|0!%JV?{keL|j>O3Hv(+bu5L zRWqRpe19D_rEYgCTX>Af-mBzf$L<-!$@?8|(fbiMp;Q{JZmeX& zvf8jPJ>l+oMBOzv5-uo(zc1y;E%K7PjS~Ru&1TX-V0Tl2pcg6m@lNNS+fVa%^Pk?D z*=G;ni<$jSWmy#L`%5jli%k_ zf;(lcc^+o=fB81EwvZD37v^qUqOG(45 z%7Ev9r!9kzk-2$BRK-lZf-5-LWdnprmc}&IS4yj88{2Mcq#|53f<-nE=`k#T$RTXO z(?rP45UgrV&vU0kq0n1*g-K6Ig#aSv-do%=gczRqqNeFL|Lq*VCgAnt(R(u}E4{rS z0~L00vM9XGALlVWcng+OZB04d&a#4P)#HfSmU?hQym-!G_pRa&KnL-v3N0Ew9a~II zbNH-|>vn(&?&>1&ENH**5{^GCSVgbK=BZMYR&fIu?xDbt2>GKQHjb828;;)tqYLNAt<&%=axB8ZD01S&-Pkr91N}SXDMciZj zvMm*jq(|l=a0o~*+m^Nf0wlhyY(>CSW1WB3AI17H#v6Eemd9B=L6TwY*>aK6qU}<4 z&=7y7C&w2sb}3fI64%;jz>9`@5q&DTs9t1A#{nrgNvu5-;?;mI1*k}03c++eYWRxt zYj#UKv!^03&8|QB>znnLpT4|*^#=CYqxa^t)*N&t44!xJOt$xo1WoYRM#Z2ufZP{3 z0rJ<{WYGZqT4@YDqh&0Jj9@I9=WS=@SXt|NDDdKmSyJ{`|woSCxLAJbZ5k;dp7M zsyR=&s`^sPk`c9>H>>RyzbN`wT=sR<$RgbR!Q~MwOkO`a~gi6c~rsv7r^Jx)e_%Gm>T$i0I{V*7Xo% z7$f}ft9@724~!o_74InQp#o2W-Iwj)k831N?JO3ajc-mOAQ zc{K_@d-UF%)?8Y-Tm9y_lqx77&H{H{Wb0S9^*b~wXVuDvVIJ+ zSyHX?S^}GXLa?uT3;4yHn^o(}Lxc$VOl+4Bbgkm6A0ZPc@CHF8T03y%u-3+=OPeYJ zJ9q;4>Ml%K=P&r(mf3@|*;%vLkgIvRH&X4}ucwHTKLwN*lw7hov%@^1=WibM09#{K zPx(<^qFM4lYTd#1#YA-KN`s5l=-G1hSjBKTT|f%O1e)yPG=5;Pzxyd*x|{;w)34NAPe`-v|kDZ zbUxgpx>I9Yg=#mAay3&|c29*;@1hwK!r66uhh_lB45YE@z;3paw^N1v7pCc7n8kN* zn5I8_?A|K!4>~5o>G!Xi>(`#nLu(1GHY=EuxB-~(=xr}hh&B&a_{mspumaM$#T)j8 zU-sAA$N)Aa5f&$6hN+#*g8h3%+Ah7G;w=#k{2!53`B>JJp_rF(kw-58Ceq7FwvK|1 z$em=I9V!UaS51X2z?5poOh`WWBUo@7wWAMS6ZBj5h!=#ttTUxU-N-B@XjYnbQ*P57 z1JvZ12C?nYy7wQxeEfFO^p=Oiv&ZjIX6<|VFu1-#1sOj3`O96A#|oaicE&Z_-ab5V z?{+~DIP%Q{91(*-i`E&HEg1^WL=YSRyNjntBD;E9p^Rd$_OUn5G;O0`hHOD{EFbO4 z8gnuD-bRR;D#m*7v`1ELn5w8jKzvHRvXBdF(~O4oyu1k7Yga;?zZ<#^P>j+7D)03+ zw24V^jc%V~vO|qXx2pv^btxj>72Owpy@dVC2G;uUeaEWm^KN~5y}b0H2LT zuZC}xh-z1CR#-HRj9KS8#^z$tl`@1Q#=MR+1f-z<{kT#+RMyXoBwdg?!rC9VzFz*x4^3#&ZKV|5d_f|tyE6QOP2>}cr45`G(w4`zLk z$1EAIY12bBUi-9y^w6G#(Ok=Fum%z0OHw0J=X(V-vX&!awoQX&uz8l-(p{EIh&wE~ zU&pWAt$#H?e|Z1X_Z#-V`TDC*ui3jkdjS7*&u+gxzAH$?M3lE`z7MG#d`=_s=i&0Ez%LdpmUz>pnG}!{EQlF}mn0x|YZ?Rf?v36a(%C@l^;iK$} zZZFd+rSxsrODXhY!8HJ-C9B#MR%yBcCT)_}DD0JEv=>HK|6Tq4A6~nmd-9JS_A-R)aT3NJlWCVg?ZUu683+2t*HOm!}gY_KvL)PRP@+78%Q7w z0pM?=9=Oem<(638^SnKyHM(Zec=M#B4lC+lKiCBhY*DOwv!0K|2hsNpzqG9atPuML~wFD2yqgre&!27yK%~wb&POdZTmFWI>@bEX|W4EmTHFWgs zk$a1yF81=+R-Fx2bf!||>f3f&-Uy-QF;^z5Wzn179>je(w5l_UB+pvXAa5vMkdt?R zaRpnv?IYe=$^Gs~RcduvVSjB&lyaH)MFIVBMuF_RA`xq@i`WZJ%Jby^wVL3{r=t|EFRd+bUBTS`r)M+clg@nyFvs zYQ^x~G5u*IIVC!`&8R*=AdSg;ksW^7bMDH9^&fHxK<{ z9GC3quu1yRyk*|D7HNkbuiGhR<9FCjkmUeK?@gILORBQL^fn`_M;p2v?d36#b{%Z& zzK@Nq*ma$W=k6Uh>wK}!fe;!fFM#CIq|GXmunjE*%Zf%mgV1k#kudkV>qQ=dF~FJ-{LMc&>vaCKH75Fi*f zPnRp0!+u;3V=A~4I8J6bHHz~Rvcs@g?VS)mBG1oAodIw;WY$(pf=Dx&iARA>t*esw zG!NsY$^Sb+G`#wc5h}BfI49I2>8SzWSZ1S5VX=6^!R0Tf5X6R@)XBU`e%wv{ z)>?}-)u3&cx23a0n=}qhv*9ac)PqsuIabpO4jj4zwNz9~9Zug~G~RrhRqI<`t^I!T z=)HB~tGSG&x1mVBZ_y3S4JwqN9Ax9I862qhfWP*NEZi>*SL)ci*X4Zy%gY0(z z0HMK>8+g_5X%*eR>@kt;5Yl6>Y zai~5`Yhy-3yIWOq<3%P(uwDcy1v!CE+E0h+A-;pz#^hGoU~A^BWisi|DtQ zX5Sn028<*KD;8LS6<_+%c((c|7coEor(fo)t>@1kxJUhu??()^Hkh2~{Rlt?09U^v zXoTpO$+SISgMlanH0_%Biz-Ep9iV+4*6Tw zm5^$3>mVSIVamMb3u{-#NMNIT?SvAX*BmVYh!*)T2l%C@_nrZ5dXRvM0X_}d5UpBc zC|0)OfXQ7Ns5dF}@dSj7W8)#=r9+n_z6xE=j*USKtXl2N*E{JW4{GC#C01MH3lgE0| zzjjjVs{rZQ1NYGN_+Jr{Ra;u`*|OBcUc;iS^JGPd%ye>JkVbxJlS_@`oXH!KrA#1C z>-lIMmx}jbJA0nSef2bsaB6!h9fJl|@*1JlE0a}D59Zk=kh(`1!}|54r1GZFYL+sf zzY9r040Qlol?4HJgyTAS&az@uSZv>{iXgegk(&;%2N)L2Pvj+T?MFLC?n?_ArXUoy zcjQSJ#tP}xT@p6PyUoXp`d9CN_tVE$RiB?dZZA)e&ad;i#{g;9@e;BG)rZg$DfHc8 zRoEX0cN1Acy0Y>%U=GWDf~u@}Qx>cZ_5O)#fSDYIVn$lyWmr9940{tuKqPh6)Ts1S zy&Fq^CY!!;xnDsNftVnwQqYbR@)~EUTHCc#fkKS9S zNFs`&7ZiM<<)uuUhcGqGz#?wxwjtbjf=;q2y#zS@uF^!cQIBOg=7dpsITQ}HxWoP4PdwMX;7MOZ+r%pytYSYpclRSLorm|e%f-WVd7ug(nD7@Ac) zo;m#e`yYS##D9LMuTJW-2k-HE?YpV=PFg<+4sm!*Z=D*LY+bW?zBo=b5`m6sUiR=3 zr92GpkZI$cHsKz`H1*9dYjKo`)W05Zw#e-l*kSjsgygr_Cu4wI3E!A2HnK zyJR!qr{$H~&SKwY2v!qcLur(n;fsX8$7K5c^E>nDYrFKx1NW9NM2x&f4qBoTi|he$^uk`0l*FI zv+%T36k^^1axg-m${ZV0w+8VXB&}E_YeDFl&swYWwb{DNI#N9FaYBFp`Q1O)A72$@ zfAYZnDLRV34d2fjfR^dF%GT_kH(OgWp(F#rgSEc0#_|e8vd|c<%j)yFfMrCztLfS< zE;!dYvu7gROlJG77I?Nw-`6}F)Gyb z8n-g`QeT0bdU))s)#4UFkFfmvew61RW+xc`^vO>psCb6PrX?Bgxy*7+2qinl8yPn+ zL(cs7yQBND8tMP|{pXKAz5D#7HdyLc!KL@>pWprQ{g)p;{_^FWf6A|4Q+9dsu)efI z`8wT}P=4(!1BAfz6Dvi}R6&auA+;7m-WgYAt3W2EmIP&*4QyEH;|kY(wQ%VOw=-3I zw_?gHME-BZ6;o9SYQ$5A@8l-{bDWEMKDNWP7Oa!4Dt+Fb0!Gm+;n`M%_A3aXP;)EU zl8#~hQDPq_!uYjcD&!^0&VVB7rqrwl4c~h3f70@x+}9$)mDd#=}*77$d<#j|?i(B))qku*)8;>)~?=cb@tyQ3m=r zEQ#OchC2i!Z&2Y!S;N2j@NvA3m!3Ut-{eh?Y`kt! zwT)&BV6!UJ>R(;GJaI_Jb|*SdrXUZecPIzz;n>vecp)zPQ~mPGr~2Vt|M;UPORplQ z=MLao$H3yPwD#0B_l?$Av{6+hh->p^_9%QAKqcA50GtddmJ5d0*RfY<8ZlzB6sIO& zfB={vkUy3RaD|$K2L_8!J02U?;CGu`yKT9Zn!N6QoLJrz=wW&9<&D`=x<*k5c#qll z(%`(Q5W#S5N3bK^N?wa1^nC{tN1N+`M-ZTTF?xZow<-}JqYInrvkV?vg6EsW?|zZr zvV8#O3v>Iw`}p&h_aB+vkFVX6KYQ#R!*BV10L(_u0FWp)n}^^W0!7Xz3#h{lX3(vUNaE_Ur+`#=m8A&^b==T9Gh_i289?Xd9KBlnh!p}uSJNXMa{ z=)6j@#z0{>JF~sW(6bf4!H(4>-x(_X3RHY0 zu_(Z>Wu=nF;88Vc+q$QtFDyI>V_HP?%~YwhId5Z`z9o5HeWYCrw$+Dy*M8hds!`=8 z0g^j_75J?RR1R&#$Sr zJbU0CkClG4h_m}KjqDNgs5&qKK;X+w@_e!dcqp}qE#NVzOi#dA+Qf?k7!XxMhxP-y z3+qX5@!cdyKGQE0xXy|iwm+~nIvFr3f2^EfA@q;|A5S2>hb(Z_!>+GkRW&bS>9t?>R)}HKmOs>(xhjP+vD~4cj>HCDHp)y5sqs+8LXkr>*->cP18I}Dr%J6C-LXB`s>u!peW&0F0$i1_$=_C)(B~P z+@RhvZz^)GL-$2Ku7YRad<@tD3ALI7b{B}TfLNR0ymcdkY2~wZC@cKVLP~&$rs4Nt zJ(25x(Q1OCIUuCrf)e{Yx7{bd?IjoiV0#R?|MqJ`)J39Ks18;RnMCVa8(^4>kq)9kwg^>3p^Fz0BLRQN~UO3(4%K7r@v^$ z^V!WXlEaoX?P{RRl|0h{%_uPVSa+txI!Q5ZN_XgfJd!NFO%PurpmndPv>V=T ztQ?947{{tcvQ_WCUy#SVD_Vd-$7YYJ+OyNL7!BN_O)fla^%(cAmLWy2M>_MD_bJ3{ z1!qqlwwL$g-~6z5-4RuO4E-DzR0=k9kZDL;AVzW#nckQSG3b$*HH0pGn=IUt|Ne;hi3jmeh-dRobPi{g)R}E!voA z)uf7*O4upSoZ?A@HCtunkfgNT!e>?B!2C*2LS^iWV#^C_wKuSHZXZ0BGB_41*vLvS zB!AgywZFJ{`@1jmpT4|%Yfhg%c8`$vyLz{cVQ_e0zXIi(J`_d_{SC(mW%t%Oc^cyl zZdya-cNTxB@Pd%9W$~OIdWuDn1&`Qw;$??rkK8I_1seyC!Y)8<`$-(RhUY-L&Tim| z$MWsFbLd(dU@+eGKcX1Dh;2}{wD#tq1|S95t*9kqrXz#_aA*KxOF^~Sl9{WHzE{{P zj|?TWYSZHBwUc(?`Hem5tu~oDceSMV$C`(K{fB&0Q)^n@tY&%g2)=~AUj;mf-t8pG zTU)yyK~y@7PG}M1*ync7eHgHr1U-K3-DsMO(Kg{YqnN7Tyvb zF3rpck&A@K_8?{e(YLCH)0y|G9_Xg0QuCDlgf0S4EbePIz&G1^rx5*$kCH6crcWy9 zC7bHZ32y@>e`SOYzfD!i68h}BUpC~8gnX-MGK?A34Yl@j$#AS=rT_S(p zY3=GcMbC0zq1Wxt$c7a9?t*FpvA#DcPfvHGA=hcm#N*N6{QU0A$9F$}djI45FYjL! zI(zm2zTBtZx{HJTVRh(~lSs$93PbGY$!{nSK}NP2Kk0?2ESJ&ZYPLV662;+u{%P^SjUg{A2t0YT4Pd2k+%>{o1yuiqn1f1c26V*$%A~Z+kjmIzSCZ zlv&0^hx>j=(PY?I)XU>y=MY;?7Cu=+J&ekh7`$H8Kv5xluuJ6``B0)$Cm=kJr_ zAd!1{VRKUA(&J#JVPyd+r@{(UU%!+U)iKrl+0rpX-nF?nJgPlmJR8e8ME+kBs$jeD zYP$T59yYJO_*}NmJViA+uT6q&KLD99T6?LO*zj1F|M%}d-zITyF`6e2-pif(O}p;s zP^H<$o9g(Vy`5*@w>=NNI`RQKCzn|X)<9#^YfZf$>^y@$UiazOY05~k8Djm{U zpej}uZ&~I5j|X;3^2`p3l06$@kCf{XBf%m=YA~@m-GIFT=<{M>6QxdIKB#sNny6K9 zL}377`-_hz1hYZ*sDQ)ml`wA6E64$?QH0#9CHN#|#(qV{Ca^I`a|<9n2gEjmPUGY8 z;J;>4f11CmhTnJpd4Br%T5^5z2)^b0muG_JfvET_U8y=ylcWS*v!l1(_BpWP6WR=j z@rsC)4Z*$-0g@_2>Qj7r z$aKK&3l`vE>z?UeX)ovF=>tq-J3Z{(rv__^--r&51V+Npn*z~mmtU$N) z$~wB07xv348Bz(69rVJlRV~=V0v)oRd3@qh4HqkHTI&j)hjjCKMxqk<%YhB`m|_V$ zyo>yP&u3|6>4vwn?Z{N>lwOENf{n zmiI#s+m;W-nt-8`L}fut095nj384Kj!~g56GyM5W{q(B-zZVflY8Ywxbve_)H$&4xbte=p$dkdY%XB2=KIgzAkdTRmi<(f={s4+Uj~c z``X@Eva8%0^Dt3}3vB)|E;lWXt-IS*LD-;rXYwRn%>%{2j;;F;jw)lq0|DMJSU znW?C1zRkS}LKb8to~ki)J&H+8>XZ-G`({z~*hr>1Yg4T<`^E5pMM_z^sayWq}A?gH#kooy|=3PGkjhas6jy~dsavdy3FpF3jYOL z?Dew(evEy)4wKd0#H#@b`y~1h>GIeTWJ-8RV4Tx`QyMD47BBM8NmQ}9a4cXvv~nNE z%nJQJZdco8g5Er7#Q@IOZVT*G6fx5i*<}xMCMS1oMN-npF%@gr&OnYX5v(!*olx3C z!)#E_W`!Rk)bD1}x@*;yArXWICZQ3KRDLt>!$9k&-yg*%Ockvkw<(*y2E@LGCyz&U3(k<`T2}r*5 z5>X`bVS4}8EcM@~Ydfw>bhj+#pDPv$Q`2E;SHe(k@>N`?#p`{>s>$_#~^Eg zpNPf45!;4qHf)|iRvk_)NMOJS!VnANT%3;u;D7N(gT}K*?Xf;0d^@4=)8uqyu!Cr& zwVJim>$Ix&B!X8P1NwbyxNLk_N^x0u8~33}%c)oQZ6X3}^AKQ+leiD6^}zmAb}aFf z4B)IM%_|gi4!2kuNVmo&3BW+b7!mYzb$*qZ?38`&b(vT}%_as^J)&xzA z%|nVIdOqTC#t-FOlIIf_OtS5VioeQUvrl%dSFL+dE&Aen2*QAw#~tbk#V0*7emxAds(lCF)!5W1%jvxRD(efH(=rd=wZCX;18jL^Wv~~JLYE=S zg*O&{Z3?=8CH1%<2AxwM3PKnAkcf5dd`0%MorPdc(TqS1Fq4--b?lx|>4(A|=SBBI zW+oKGb9_HZ{EvVA)5kGCyl>yH)7R(Ue(v?B@&2{BefAiBpWDB6ZuejN+n|7ncLd8IIp1Zauie^kYpR(_ch5!&HIo>R8Z^jI9l1Z;XdLe_E||DI{KX! zX|nhlxiP{bQ%|>R3A7^eKTOSI(<4!LU94~I@lraXw~?2vF|Zt-0Is zkl1}%)D9IZyT!igg5D}Yxj?5p1ykLQO@*V*NV0?335wI@J=$cc_R)xEnlH5NR{i|t zKfSh7pFC`joaX!vj~FR<;0{PT7I9k1n5K6cf8T1_v)skGcl!xQMECBPtugm#j#uHO zNL{xF`-+(z(KV4LJ=GSyJsj<>MOP|5&2BC1vZObF?7}ts3tz`bY=pL7+hjE#+nTw? zxxf+QEZ2xl`QxiV;-)rfo5JR^ogUvvHg}IqWjPkeOyJJRSdLQ(I?KNHi|A+zf0qI2 z(5cytos@&uWbl4f0RFrC2%`P6e*gJ<9Il`Fy&vDd3VxqGiZ2fozg2syoVIsD(kdmj zq9;dfAT2VKg%(Omw~f)}ONP#|1S|E}iuag@K4=5TXAi}F*VMBkyHxhdm(HRed=1e^(;IP2348o%pyN-)xYe0pl)is}VkYJN_L016fM|F5=P{&dJ+L=gFnmuOr zrx2}*rh2^jVEYbsbFsw%(hlfSE@D^pZeO|xdW5@Qod`cu+q|dG+aqKB+s;2f^!ny@ze?dUjRz_tJ78438kmcE#&I<+9I{Tpf6( zxUMT%x%)V!fBaP6RM&s@&^;C%elL0fON1uaEk__?(P9FB43a;?kz1Y?S^X)~!_utPSKmPvxn|C?S9=t!D)cjx19hNuAa{vmP z$7U>{39VQp?>y7q>s>#yoCo9)W2KLup zYPEkBa>fGPK(VEtOB=KWpx_N(;3T2!VTnl9XERG$9RUr)4P(mLOdw4P^MbUhu*5Dt zvj)0s%AI#7WCtjUy}_1T0+K;9x#+`|qX?S`C1n-eFKQsd&z4iU6<{AZ>i-0*S-*Vv z@W=P#%Mb5vh5esDzJFD9>DdGM*1^)n`sVdn`cuUOFlWtLY^9~HGA>)3xBJ>mVYZbOS3D-^JSw^14F#iIla(hks5jHii40#5e_oyy3@@N& zz1j|CXN5l=?q8(S7|yV7oATp(g^d=X<2b~|!3P}2(ym(Aaa=h}`xn{WP+6UJRdA1M z(+e@|=3kwzN3(&lcsA8YQiT)-XN`B|@{8(u-FG_$sP4wa#AaP&)k}tewAln*XV_ z$zSx>Wwf3>b}vr~zva}fIwoJa!@of(pu?-|U^%rAS;HQ&-4{eF+%~7>I8)Zd35s>; zECcie!7SJs$fStWY5|`m&q?A$&Hm$#tRHNU$Po0W}YHwg|Gzk-+n*}7~BmIx{y==$OTXR@TefAccXR6|258L+A z$JJwU@dG?MQ_{2?z4oOnpx$5>277ta zG=0o==#Z3D#ptdT&y(6|I};BXJlL4~-l0h`S?_kQ7B#fv<2mr(-5dAa?_a;FdG^@7 zJ*kHt1EiT-e0JTY%|&DH?42$v(Y`H$$GJfh7^uC2?}qZa8QQLsRiE%EVqdxii#24= z%j1(n2Xb!$+az`_4MOdo@BBS*ZUcI5{H4b&OAuz6gCY0~6+Bvj0gN)BaeD;qGQakf z*)e+VH_Ne{kJk@Ua|3qJ(Q!(B+68UxWwX46{Y#dzULo!2Op7JZc8_X<5q_+TM~7!T z(p5s`&p*yjubPHEd*~jK(*C_ncwTx0pP?mBG^~*0O|6?cy}w*uxkI=ZvbtDq@C`Nm zEweqW3`sqKJ1q}9h3nO_NLJqk@?iB}?L3kiQsWGLUSW(?l@0`$ri0j7@?(|SpULgp zvq$Y^PW^gB2qGCL@kyz#reXr%B-FIsH+cFtkodum0Spa>+{&(o3hbbfycLcs8^g?c zstVQLY71UlA0$QgOROH^B>+HCUOQgIAQC;F5AWE|qr7lc9kp1Eu!UT0gaK}VZq)R> zy%=*;I>9c_&GZ90R3vVABObJe>9^5$WPp^x8KZ7|(&>GcM=`{5lJjv4Kxgm!3|9O1;@wMC4Cy(R5;D)^Cd9Vz;-B88U zLupUBKoY&&CAFG0kfy90@YKe}ZD@j?q(DtY{8G%IkbGpK<9XMU+~OnlkSK{0Pa-Oz z3HVS;8T!Pirn6YP*W-oF(wZB3S!W+H>6kj#1P?(-^zf^-iFAltBLaV~l((LeuC##N z?NT(kl&c34U55}(cmpuX6L(g7TiZH_WU6gx?*nILpAw)Wuq*@^VSkk8`FAfS*gLvc zZIPcljBn0wTVyN?FD^|^Hy6+hM~B+&jZ6T0SQlfkt5ar|sP|!cv%!}HwO=zwC_ZfK z^tOvZ>}(LPi2)`ge@o;5qvRQwG%s{bp3#=Y*qg=h^@aL#+s{m9WFIEL{>I+|U<9L3 zRU~C4MHoiQwruFX7PKZ(RrmJLl}-{Wrv`f2V!!h)0rw0Jyb3KmjtQSF%G}8d3LOls zE`?p$_dyoW`~Tza&3YtTt}ML=HD`8LSCs?-(u)ASDoQpFf*|xiY1nv~WKI>C$)O+g z+qFK6Om_3Qd+E`^E~3bLGb7y3v0?AE%=TVOoIfpn12;&D8OT$E1@`t^*+k%k-h)Nw zPnlG&(|T6LJ}O!%Nb@NSX(1xC;>8SUShE83oo-F618^r6zYx09+gy*D&@{u}u2zN4 zQ!pwbPkZP@xf2c9K@Dxgrwc6&1>h2eK9A!Vpwyaz<+u2}f?yFWS+z9$bhEceNOX-{ z)A$G-?_s+zml&srr?#v}%JsaT+nbm1>HVkId(Cst9=t0m{(+;YFt_2%JrA$tW|3KBhw3*b=)pNxxzo2kT0ZxG6aWxD)aeOfA}E zwoiJYQW&1gj(yX+QKB^hvSiKpPywR!H>io&n$kL!Nz=(ES} z)_&@{5|a`DC(abk=NwkpCl{e#U}(%+%3?tf4=H(6=*rqQ_0T9O((oXZ?oH~|AG5wb z5D*I>d%*=E`)I^nM9VxX+!{qiDZ`DKucS6*j4L)?aZKbCSjdJ7x`<6G);g)BLw;RUtP zcD|X@{l0yDs2TC>vAeytc?-Uq(>5;Lol~Y+UcqlvFWk9=D)n4OJVI$h^uu=w6jt{! zy3m%QN{UFcRRlN@Vji@~i<)I_lA6}%98I}`XUy3sKx(gHy+iZFq!6G5bLBgKPxZjh z9=fZ*OZnkHCGxkTf_l)tK#+|(0s)Su$lc9$SVLk4A(kyLUMTH~L0^=F-nOldW{5o% z@HPHMzbl3&97;EQ#34dloW(iy&e|y%0SiMdC7^n@Xj}hJHeqA$WTopq=>PRgA=%bs^HQqwW3eJ@p3+-Gz^Ewq!Xu_lA zl~G$ZT_~!SoBQ*3UtZelYx~Q)ySlQ^9=u!Cp6{w@3eRX23lUb%zt$3^-pb;e>k>MD zQA9S}Zaez3hwo7j)x<$% z3tk7*SCtrM!6n@uKX)uSaB7~SdRz@PKYcy-UpOcsuCa@^=vU||TEtOAFjeolbEwnN zQlkA992GZklX|pyQx|MeEXHkF zg@HZN_X<`KaSx6H1&TS0g(#NUQWZw-%AfY!rKW(14D$PhzDX9u%+}gb&CO}VZ(rA! zPw)Sz2>g2Ykm=c@_vrGRhIJtjJ5eMkAspX9TFbK5y%o5mVIa0+1T0)9^c651>=`GH zjm@3oQLCbd-a`*)3)dl4kRfVG;qR-ra+(}5IF#X<6F_N#Di(|RYXtU)ObIUHFrI{I zH5XekNWVIff1Zmn{GzlHwmAv7QK45w4FowzY5r7z^=xbJIcDY3CSFTb=P)*NRi@-> zHK@v5NNYH*SVU?CpYzVw9;#oq*PkA>O+9<$Zue<^>x!F+vMiH>^8IjK%nJ{x%9NwiHVw{O5md+A^xk~Rx~b?xq>9(n8ONCWG=`j%%8+@mdO+%e)x zbsh4AjDIPLWg5U_k_BChC~3=}jlBdojGjjsp)2&)s8vlmYE%RX!b1!jA~m8F)n%vT z7*NR&T$u?urQU>ZFx9l2^Jr(?)I;F$hIm#<=u8#8rxt$^KS)zqFz7Km7LQILR4*D) z_C&Hpi`Q7hz6Z6zNt1=$)S$(DC;1R6UhWF^JbUaOsW3T?&5(ifdArjsioBH~2G@f%q7AfqApY0RO{D%!U_>ayRAqRf z%j!1@eHxriN3Qal)9T-0C66bmFrDD*po(GByMUW8yAYuaduwC9jDE>3Ed4k%!=j7I z5Dv!B#PCB&CU7E(dbV9?**Qyzwj$@S3Z$uXpNtnTY1v|DKgCrgt$}?4GKl z7lKY&?JT{*^}1%ZvA`EX40>_0s-Y;`DlsXL6^#fQN>#CSHsvaZVzz-ph*D^$E=)>; z6R0{z`6MLmjVyHP(Znvao=0G%!|>c~MZ!F_juhrxphx&dpuK(l-OC@=JrTTTkK7}P z;7MDvjS+7r1#e++aVs1vrz@P&xYM?ct$NV{&x=FyqSQmDS;V(Ve>0KmOSs-Gc!wcm z#Gv5jL>!Smj=;?%Kp56;!ZfpD9pSW-u2oCQ7DWVA2}BqG&Df?S33j()eMxN4D6Sm< z=s3<^OaIa=TAfNmIPP&BOLA)3$BMf8Cp5Y!Gh6ItDn&C!_suFr`QxX-n{vs@_03fe z;>+(eq#u7e;?M1_n9H*V@R9ORNy6K;v((I)H-|H{%D>d&cC9_?9yf~C`AKThsLx9yH_cRh;xy;Z0^t*TC-igDrhwYJ`*3hQV3ftlhXhLe$Y5!A! z>_z%~G6fwB=P{GuxK;n7zwuznT{(>da~#hkw9xgS18?{(T(4?usjdvG|7AmK9E?CdtMc7NuN;riQY2S18hiD@=uczKyD9 z#lq?uN9Ufx_w7d>MLRe5tG;awDwo+KLCjhI zwhEdQHq#KKJ>#|b9c=~_npd>r?Y7$s$7=<*k~H8q%~G7AHC&5b!(>q#3@M}%`ID%f zAke7k=HN5M!$x;1MI)h5taP*&m9*NhlQvRiVH=lzy{);Gltvk%2o7N*M!e$B>5$q| zgcC>>7rO4yGo|+qdY?RO*IK0?*odaqiI8+$B67!Zqpd;rLRwyn!sdZ~n`qM-=G-1D zv-bi(^Eu$l%mpt^VA>}o)IbTn7gwf9$uZ(38Ep_J#!b3W$e|oS0AOMja&5VY!urAk zTG?HpS6Rr4gIRRgr}jY08wtl&X>FtgMexw2lJx&eqzC8RYBxs>%hSy{g^hX@fr=V7GA|)C{gv{X0=|N|U?fW08YI*nvD?O5at6_~IQ!D? z>190iH|Ks=RI_p-rYF{8idwl4Exk-;A8WU3HeDQ4qeq#0YY}^LlsQpH>#J%C^2GI; zw(HTwwOVML=)_rk zROrh{1EPnDLAyy}`qb`KiZ8`Al;9M31ns7{WlEH;VsA(=n%Q!(bS+FO$KFS*La!hc zWC{Yxnn#UUQl9Y}WvL`I6r5JCK^K6t)Y0|O(PMYx57|N09t|voz#NYXyD}GLD!9Rm z%Qjj;MIVP{!6=ZriM!KPdGrV?y?-~>$1m&U-Mni#_2dzJ)cUrwV#pAWJ=eR6a&r|^ zQM*iP>qY}mLL?FE~qPQiR40^5==9pRRQ8ds_y8Hqb z7a99D42g%Oeq)rIw2Fi3T4m}5w3s2@`d5#@Aj;l7A`%h#6Qxras&=aYA@)A42_PP; zHpOJaEbcvvm{51fXIOoIP-0HF>H=9i9=HhJR4QwGHCh)}r1THpC9}pl266W$_Spk? zg}^_kYQdAVq9slj*+6)#nKYHD1*^3hn-Pdqn2$pvup0P_RkboM0kO;&H$L*phgoQT za%6zZS{z6!PCd<{SoJic33OIr22RctV1-f8D7hLch_DUCM+`Zs1npeSEVm-&JpmPE z?P+}RkZ_z$uUDs-+~5>`W4fpKtzSzZORa{5{AUtXrx{i()%b=q0M?~e0lQQ{r-dAg z5U+gWCH4=9d%RGx|FZt|Tf66({Okd|J%jkJ*B)r|2t}x~oBbvdq|9Wv%wJ|iEy(R? z&DQcaRDf8wIPJpbox=c)v4%9xto7E|9-Y}60+=T${>BDduA7>t$LsW~<`r%M0Jnb^C&$@eNopFEb2jw3c=3v2tX zVYR}Eow7vwTS^Z?*$FqOLz$MrX$^I%G2A43X?J13E+Rpjh|-G|9JXwpgYSeLkik7P zrWQSPT6Fsy>`STWrLTBUM@r|lDif1 z5sy{0TPti~WG^N{Mz-0DTw01p={t6qSO|?SG(dXjeR4%+aJW%K6-{yFdK~dTzD@7= z-TKg8{*79+XOH3|-(*H3Vc*2r7J;qpaftrvLE~W1x-AnK@`w&S{YK~-aYShb%6(xo z&fFPK7~JlnBi!-(O)YjHC^p4ed+srYS;C_D5s^-^-tUU0Y{?pNC9Ii-(S%_nLpARZ zHqk?h*G5iy9m=v+$yM80!An!6!LUL!nD8Ms=j~S9^|Uq%DQQ}JQzYh4wbKM6&LBi3 z$ior4ez?$n>TYyDe*W$Coi^~j`F!%YJ?x?~qI^x5(qvXKPI?GrU@`4&r3yYP=MuPbbAG()F^oh39pgnqm`WYGyPYM@M{nL$vfprO?_7trQ} zbUVV{jx$J7u>NT)PigpL&zwEh1R@n_xy2Ndq@0F9<*D%ySK@t-Bn;hl*!o8 z^Vs1uh$(A#8XHVJMu{3lFd7;n+<8)4Yehi>Ry}o*mbOZcYg*-uM7hw8THBZ!aqWUa zXFMmdLhgECx`h_Wp(xB=FIVYhP^hIJN-syBFGt*CA)(wA&xCiZYj$t#2E5s_Uri*3 zt>@2EQ|6};89Q2iyE0MUOChavikr+7mpX3MNtszIUSrxdqoI4#ImWnN#C?J0JW}O( z_SikTFpoKL^&FJyxAP4d+Ju0f2!Z0i#RroDFdX?th>0d2F7snL_wg6~Hv@R7#6fzcw#M!HM zr|_ZRh+=NBTiIBss&kvSwOupDRN5=1A=-bJFKea}dpc301R@ z5k41`)Hk-y1!Xjaw5iRgClg_)oU=9b3JcdV4qFK$oa9g<8YuNEC#6)_@uCpeXP|V0 z%p4-F1Je}x^lyaj-u}+6o&!F8nez z5ZNie2l~y#4FuCEjO$Y|0ojV!#1CrTUK}xLJJb+p&}_(5({(AVMEaIvm`wKK=zur~mdG-Ka1Z0043k%$r z(1gmU=E05y0|%!hE&8Y2RGi1ZE@+w1jkNoyLf+lrC9=FjaYi{K;{Y@hlpw;-(DIx# z{KhoI1V%j-{k4L6ObFlC*wGBWmg~QrC%wF1AAkCKuO{Nz!*>gUfA~BKdMB4e--XU- zQ80!Q_!I=!-W*;=!I#aWsezB1R!+^9YPceLfx=T85%J|{asr4J)o*6HpH#v5kycV*uB?7@39skS35j%r{OEsiO; zZE3tyWIG0QZ`K=h?F5&!<@33IidJlSAg$}pIhcN9=NdiN6wYM?Lltlw6${nlk(H^n z6%iTHuYt7#+iS;iJ>eISq;YqOg4kMcFGZyU1E*e>hCO~-9WI^=ECTxs?7eu}8)c@%eqrLP`e_r$7 z^qzY5Fg_wU+=Ae=Tsn^G9y2y7b1<7u+A0ffRZN+Ja}zm@3GCCZggRQb#!}gxBSj z)tX%_bBr}LP}K^oE0!291e3mBCpql8COU!zrEFXv(wi$p+Z0@t*ejyQL8B*FI+Q0- z{1XUWNczRA(8uDEIH0T3inlnQYyrkvmi}zuw4iwE^|V&GtfodA&Y;v#RKjGTT!rO| z{U0t*X?7uJQ70TxF>757^fG;&qk}KC0E~7K70KG+e#dy7+TXnDcV0gK;is2xpYNRr zKY8$OPlWAv)g_@v4WEX>B1mPtHo&%39~HA6Y`a#meOKrZ?$-LENHB(+GRxGe$QS+lPT1Ls@E^;VW47nHw=7^RJG8U39$JmcdA<~V zSVz7#8rtZ_xRyx#;#{J?yO&>|J#g3iw;wJ=dIkkMfoG)WCzlRJFK*E*&@!oTej&-B zFfi%2#hc?CMpJ!_4xj)IhoFKbXgqaMDvdt{ll0Bcu){=aK7#3XR>Ew{g@o%s;F#82 zPY&rartviG)HW*giK=KlmUe5KI65izh_d$Hgo;pKHzEgU{$cW{?dnm}Ui1ix0#ILp zz$^aM8HQ64O*`up|A_3_K^zOHxos!E?dg17hP z>8(Ele;p^Fv9#4IelU8^h5%+EH?O6&(OlgMGhM+Y&4j2jNrD;;L2=W?y|L<{^Cg<5 ztiA)6ON}EnB>~=4(4}*pAdE7wpNyzmMIrT@+K9iWE~;mb-R*7pclGBK=pyoBN{9#s zEn}x$ps<0C*ET3_=+me)K)GmJ5#(KR(O(7Hv~fI}Vhxi9YQ#@MKnFb{@a9)W4|R1j zj<~%;SrzHe%%5p&+l_iaRf-`7>ANPzYoe8HAmiX?fB`zAP~01iB74I<9iAZFB>nts z7W-9kgKRPBb(~rl4%8LV+EgT4VyvRIi)IMQgOofqLJJ;_QeYaAADSs6&agG*gSV8P4URD!U`X(~}XN z;ZABqZN;r`GSp2|$)6Q#wR7=$sTi3zEp5(*l{#@6*6WE7;pwJNUc2ivmf#I845EJG z{jng?D-LxnC;bItJYUzn_NiwN+@roYE$wq7rMHjlXDwn;dG0=F1PGYCBrh1fV>O$f zU6j;T1qzECj88^zT)@Ln7S#1AThHWDiCSB9Zx4EZo1Q|Wtc;SC+0xdA@>y@-ZYT{B zggBUYEDLL+v27UK;CMnhnkvG`Ce7=S;m<`s$F#|6N2+O~MyM=t)CldhH!wWo0Gb0mTZ+qJK)(@m9YZ#ek1r_x&oR zXOG?Ab|e4SOE_hvrPL0%a6VumiBoeef^s-)O>d`j!O`^IGr=7mA+8wF_`;%4q0UWm zIm=R!s0gi#IAmkGmcP|{oV{1lf$vNEL`hP!#MNjM^}5oSPSI~_wr4~cJ;k27>H=*HK^t*NpTCSAXmh(=F9B*X`O7-CzrC<;TW+KSW zi9je(@9Me`*rDefM3h3VeRl)tG5J&4N(w1pT%&1rbV$5q4Piy znEvUCkU%smW9p-nS;RIJ!!&97GOBoKt2%NlaRuu6s*TKUrd>2C&^0l^>842Pk>{Sp zpF3y`tB|j9SB=QEY#5C8Y8sk91?Q+t+_-7A@vk!r-2LJC_nR+Y+xWxFx3BN+9tA&p z2p{$(V>f5f@p*G4q}XFE6eVbC=o$jb+AP<#P4UjUK=qqOf;s@shND*@29Zd0MU92xjiM3h^h z;m{&sL^+`LOQp4G3#TL->oH~LgQyh1_fRjDqjd^A4u2X!!W%s_&o>q;q#-2Krq$wh zSd{FkfUB%(mc{r_)2@Vxouyq#?7#WJ2GC0&ztFgb)h=k7bD)UhnkM#?m7K#~+vK31 z&)IU3tF>~}nX6kj!dc%hSdX9By&{(4`xn)F1x*o0=1vJO$ieM%?AdM8-KyoSg zPRmsniPW{IR`%HyfR; z=aJv-clVF^pFE^Lruw%(WS`x?*za;Z4M9}SUc9iiqDpF2fu`WxmYNrb6r+eSQM7By zed$CJ|j6M7@Sqs#wHCZ4!alOz(un->Y)^Ev_D}40csi z^MkE)FXHCJ`6>}sskILzlmwBB;$UmO>4`Q5wF+p1o$ZyR(Gx)1&;&OWoCR_`h4n%@ zF{1P$lwA?)RfyNW``HvBVpN=r^hsO+^3TTa+WWgoJx?CChy6Cf7s#8x^&knV2k`^o zwCA+C?&F#j6|}@6o0fW8d0RyV{i7)j{V1Z~F6Sa?pcvV*Xr<6Z7(%k0qh0N(VR0W4 z%E5SN^QI_Wo12oCEO?BA_lkrV0>92nO<>l+AKdk%xk53-D zM>XH4_`J-ZxJI;Cu1B$|ik1QOwaWV3;OZZhC|qO}RjWNOj6XPh-Uwsb8bXI$MWw@) zDekKkk*FykHvsfXFHPK2o52g;XwxVWDy5m5#?~4`w_afNd1@a-0)uD{`)~+5<99-tsPBmjS^cB|QVtr$#qg7F zI5F%vy-US+k$+k%>0?@ZT~C^R_U_C2^F8YN>|uKpc$INBMFuO_hD<;11PW>j)&}qF zQSr2$(NmLC$D|G(0V}b4r8)&gYFP^v8oQPwqAGS-IqB&>E0$Qwdw0UG2jRa+5w^g4 zUqXb9b$oNTYJ<{dr?#glOQBv!@3mQCpjp#FSulMl6pV@wz!HnN1J2@m1`38VPHPx{ zQg54xe0Q$aP~v_4m;X_v}IYTYr-T(0!}$_WrakEEEw1MiQ-^si4~> z;)`;)Ge~{*EMA97XAnO?)|Q^?(zjhTa9fFEmg1I(u~0#a^!$mBIWfy1-kiAGUe=;jR8(Md+2at_!KC$iu#a}^x@$4@ z5gI6QV4tB3M2%xBD9DN9(I~s9<`UU5bQD#dMBiHuVA~5YPKBPG4e5F}NN~-GAD$Kn z#R|Q$Ux~lT70I(O^IYPJi;j3DAeXQ6+4YsMMNxKfF@;fd&bdfT5x;g3a($ZTMAdNd zSjb2taPq*_7RC}o7${LSdrWlo9|0%f6|BP@ame`>3v?yJiiS z%ZQdL>^rXjlQ>?pBG5Gjda%v_4dFt9iQwi=g_MAPwqWU0j6nBPm~AM`xxFcw?_I1B zU8^+k@UB|K({i#FsBGoj`+r^Yo(zkm5n-*9$r4!lHQ){{!De z!O$rZ1vIGorfRo9h%#oQ+=!f`Fe;uy$Q78-4=Ua6LHih1esgym9t9P}2m?x{Xxz6c z{->}|vYsv_y05T8#XHbnvG1?P@7n7_diw0Kd(`Qu7i)sx`fchi1wzV15vc6gsN~U3 z2v9uXmtCzzv5Fd2OdGf}u{d9f9(XDjwD=Uz#0`}bD2!8Jat%-!v6D<1?@hI?aEs># zswug+t8hz=uFpti8NwcKjm4!Lxe1`Sz`l1f)37vSY|Sv&coLU0Gn+z$tsH1q&#Ks30VT z;kW)&97733VMuhaot{mK7z7VC0-{%9BOX4TM#c#(=p$yqVikAGu8?|UJvFO?u7pZ0 zsfYnq?xHaj`M=Ar8wY1l5j0d!m1lBvQpENw+mZx-qB=xLao2TRVQkEgGtW$Fm zZA4#;I~K&+P%;oWt(e?4&5yUX4oZ@@o?EciD&(a>#fsLiJKaNj-Zb1eM`to(7$UDR zO?~5zduuOH(;m6Rh-jlL`+Cixc4Ku;{Gx3|FXdpxXMAB$OkNnN8p`#xD@|%Ep`Q}c zY(n0gA1Lt_!86ApToJGd;Tnm5bviOWe7ajT`s|^5IH$W(a2Y)CyP&PCV=sBUAdxwcSg)*B^*$b(BvnVx1i z+mOgtp1g4q6W_)sRatc}0b+`~0DeG$zXgCW8E$?lvmivss@HaC{G(I0L@Y&-72UhR zn&(!8>&&cZ*R@?!rq~2F6l`(1iv8Tj8>EMgpSe3Db+%V^`Xz$YeEY{el6^YnEXc!CkV!euC2L5$Zl28>Y z6pg$W$aKmK+b8aeX*Bf;e%Wfc^F(#^Mmp>7&`I~n1Nf+hN$gEfGHSV{sJPWI>1sF_ zlz>)29aagwREvVDc0>yFG2w(L;HIqLhztUGPDzlpDVS+!$)qhpVTUR!{AB7Z6M1JG zfV)P$D??(eIBqHqPr3BeyHROz$Bc!-1HHGmmk`FyAIFfbyRuZ*8nfjuDyKtKyxev3>rbW%#yh?-hJM zdlVm*F*&?~o7iBmT1-?5RO(V)7Hbky$c>B5qM^|k%q^5a=WP=%5dDe?YhX0N3MVEU ztD+~VXWx3&ZAAdE890Kf;9R9N7G7>xvDaRkyJ9DgassX}J7yXZQ3zK2^|O5e7|p(G8kh#HqM**82q8Igk(9B6TT2ikFGpDJmuXuaJc`-EJ;qOmAWb>soR6 z_o`3%)b z48?VecD989UpnO`o}dCn$69F{PF=K0E6x4XyyxB56%Oal89HEz_68Cdw{D^+0sloR zobuVQL!S|8Ptu%Bp&y|QpCi^L###k63ilA@K#8?2&J~rYq8R33QJX>{O+GG9C20j& zeUC==ri=BTU)R5Wd-wWg?D#z*-%GSl9>hn*hZw^eaX>FDDF#_*up$RSU)=o;E~qW# z>YU7*qUGkN7aVWrJg1;GC`gCKm+^EJ2#zDDUb%>9$m3SLeiMSgnM0IKD`!JYvmd9+ z8`I>~yhHlNX$EsPin^G-JC-^=Y|{*@py1HQsmM4_ykV&T|_GpG0giv?vzyhOCJQB#;Dcfk*lAT9B> za6t)CQ<*v!U@IcyJ<*5tF)V>4l;;rn(H3>FqEyzGJx1f0j}Mq(Yf90v=ubqQ5S+cS z?)>%JNT}^gh{Dq=%ymaZYp#gTQ%w~_$Hfj% z#YLn-5o8GUmAn-OX{N=d8-r@0HZ9kN1{xrJw}5NNI@g`zDYkZ`Zf-PtD8jEz`7)!X zBv9hFk5QkZSM5>Ili;d{XhtYm-#(FZ+}enxXEgbhN;TmEOadHTU?n!K=3oPr2OK0X zE&iTp$4Ls!;-5571TOEbmXW!d-u!0wmp?J1AKJYp33A>$Ky9_)88{7)%6ilCYs3LtC$RCv58$UYQ)BYx8QZEqyGmXNP)| z&3)5tA~P%&meMi8^PqRdChk-tvrFZUN(&+lH*J$vMS z%;>*-X4U;)Kc4hIo$?p=zxQwN-hX}f@&6v5KIjMj&mVvN|GWj~miL<21!yH2p*cl- zPUEOXFuB?kicf_m1d4GfM&FzeSwVhkh^Y6(O2E;arjc8Cyx|WgCW_LGLOEz2y|L~5+B(Np659>MKAqL zo5q_ivYJM+Lc>_ryN;e-DM*K6Um~O&sa6p?5?w-*g$4lxCabx*#ye+>U)Jlp_Ws>} zxmyhW>;Zgu(%6?CC!;d$_M)V5i$yI21*agrf`6pEvn1|Zp!(=_Bs{Wg$ysb%IWPOE z_-1{iZ+Ca}*q2A3k}G2o8X*OvM??x*Ula(N;^U4+&~df05+4y0C>5WvS-TL2xZUYm zDpLtl`H}PAq)b(@H>X8_0wM0#i~iN=;SvWPOqkwC`y-YRYq#eTK6msju_Y7ppjDQ$ zEj`~{*k}XQu0i_D?4Lfp{^9PdK6~&U&Z^f(P=lq_uZJ-c#bPCooPww&3eIG-O*@xE zH;k|&gpO~p5(R6oXsx1D6CKyqU4w|p%<&f&9Lm!vaWv%Uob8*AK%>ObrXcSYhr8LY zX750gq(cl^Sayk$#;u`Rdobl#}=lUPLW>oJR(SSbf2!X`tQE9kN4}Io;zx{)!_a+>k;g?!D+_z!HKTJ zq~WZTl2>W~IH3+!i=-!1+O+OUReE12A}Qe~L`w9WQ!EnMPrX&7^m7?OMA0&KlQDGs zgL(w%qZmyDBP6Z7ah=V8{RdKNxiG5^x%$b9RfH7xY1*unX6H#Arcq$6i;gEcz3E~l z+uG^^ZfxTE6eceEI=ZH>p%RHwA@{oC&Ga%>967sQyxA6nx~>OMKmSvEe}8*Ed)yv* z+6#EOj3t1u<<44V9PC)pYyD~1t#a$cy{J?0)27!#Pqj?tJmfbO9%}Z~YAEwzL`kdX zw#xp7!Oon?i$-qyH5cnsE*r7%bAI zbrpK~Ryks8RZdUVc~#enN^0oc4MF&=o-& zm6-yXXcCRRlxJ{UR!GASm6j@PL*X4qyMr?1?34RWjf3VLDpLu`NguzL+bFjeJ>bS+ zp>1x`YcABCT64@-DrH0c2(N8(|6Jl+^Ze)kJU+eN3%<`D!t33R{k~a+r4etVjj3p9 zP%9~Lj+1i~?HXyu12=XJlx1R-RB=d}6}2Nl3y-E*79FQ2!B`B~OU$AIw&{J6xCRzI z1wT_CTx=EL^fk9d2gHOc;Zgn&WNkxHmzy=@VH>I-qW9GK+bY6Y6q7}7OVV<794#+} zS43U)J)_%xMxui&d++(Ug;FT`-D7wI`t4M?H(E=pgU`|em3zn8HkasxDs6)D!v z=6Zc=Q$>-?+NcJ_93eU2s!*wLu!c9MgyO?h&+_~9zOFCp>&q#YxdWS?JcJKXFnzY1 z#5t?L;S?Y!+wDn&e$YDPtpMh#ij5J&)QY=d;wDXxmP&L~UMe-9R5BwDs(sFh@ptxK zn*!CWrDeK>+PS>Jb}fd~EgD%}VeGnf`$*z)LhgcxtZ7p1#9wjiL%DqJHm+0nBi`w# z2p0no&eTLA($Dp%g1P2DXw!$I64*K=eG1qM4G7xF^(!cqBBLIB5qd5fC@Oy2^{nEb z#;1>eT(2UopT510_447a3fHs8@QR_rU(cZgNdSr)wK*=hdw>h<%)n)cl{*etLs&zj zrkx=GQ&Qnxe6NbNQYmp!y^rEs^{aA_0PAvRH9CYgHD@r6v=obcWH~A`j&81)IE$rX ziZL3_W6CX4SQvu7N_PS|Xx_OZnCLb*!%a)wL`RXUwO*@NqKX&)QA1W5Ihk;1s@6EaKM`CORgS{oiElnv(LuIK;1{x>)2v&ZhL zewcpDDb^wtaX=w$A8~E=kybz7X!coXqbkPZMj8j@CL!Z&Kv~_Qo(OYieT6`bfS_eN z=uIZMP6S`^$cqxrGAUs9JBedEWRzc}G(0ND7}g*=YGzBSaE0g{FWjXNt4+fSMpD+&3`A zc57T2k141+cTG?fP1g$6Bt~x**O~$zGlz;_S6ad|0#zOZAds@f*~YmxfTMHS9H}7M zZX&F<1yl8S_$^ixVtekKy%o+56}+Rie6^_1`Wx;3@%rh@mzOV}+n?@T?mT<&9@VjJ z1R(vK+T2aBdi2&xa)>Ky>vO1+`|ju)X%mgE#iEtnO5IW62Nf`Z?_n)UGsrt?Ssvf& zqBKx4g?8W*9GeirRq#ZiMlZcHoe%wvD_OSOYtXz)>y4tPhDUfwY;9{hVzq`miUQQY zb3tKL&w|jJ5^0E3NNk)h1u#W>{ZYmQLv(d-d82Jm4x_q zF^wC9aB4UrDw4_>9V;#`a3*vq?g9P~njt&QH8#l6o;Y|~4vjXrl za~LPgm^?cY^#t^f^i>0flDlA2;2x%;!n7>C{Jo(It~rl|TOW}j4)SUC;c(9#XLUi< z%!L_3cSC=xSE>$qjy>^3t=D>(fB(C0AKJ&4FYkW(*zU@3J$v|WeU9EzYY_3Zj?=Ad z&_dNaa!%RN_N!ct355l221Npb_P4O2CP>@RJ|J76JAot3l8 zYC$WShNP@1qLGbOc2^{&VM-M3MmCR2O(m#EgGy{hn^ijx?T4c~C%BLm-A=deNFP7Jb%C*`6L&m~;gNiK^g0Spw?K8D$Lmg`7d~ zK#D`?B#U+Bk-#ic8GjpYL>LB@j)6Ibj}>;<2RMA^d``OpJ;GL20x!` zy_&;~{`YS`tk<8`<5_+7=slX%CZMeRj>7*^{Ml3NYq*+vw}CQSW%Ck6f`!0QFA=d8 zXA)b~N~b>+%LhGdvQ+7;jM1HdrJi1)F5q;6K4sqGX+b&PW1Fgwsq_%0@XLrd8`UEc ztv%C3Ja|cghNuu5DNt+`fAOWsR@zDd$LcjHSVCVocyYZ%EwB)<-aUGYyrt-462#~f zxi#1J7L(x&R>{iL1jpB+Ky?vpmTqQMqxJG;HFw{S?8&3|NT8|gqYmhi1JE;-)^%8uW;Nkr*?zG_sv_4AyU_E~25OZB1UOkbeSSe@*6WWS3dGwn>4dQF8gTsDS< z^m7K0cg6{ls)#r!;>7$)>_Mw$Moxw`I+z=+VUhw}ZpAe*hU*3EFFt)-G}7JMrcWNY zD@^*K{6fD zg->s^N)JGKS$}?ax9#=GgZD@Yyuo`@+^F?VJ)vI)k)*Lt`d1tevmjKSg|zuBi&J@} z90YL#^oxsrQdxay=#g(jdNnxu+-U0+-dqZ6xH-~`5Q%@HAI0M=($j6Z@D%LTlu*|l ze5SH}Qwy(bhdALh!kTm=PVUz!co6GvQG=1Gq;{i$B@*jDpl7D1%QPMWb&ZSM1NGdf zvM?z5(;2}L6nec#!j79-@Hc6R{f?Raxc>D1-QB8)XAk0|#F}Ys(jW~*i%Mxh3_Vcu zDq`M+=f-SEwpqIr$SLIWi}PuL(3}e>(`&@QVD<}#ig!G(4A zBK;q}U!?yV%{k8=#@p$AQ{?K_U$cuuGuFS@u@`78q70IqdL`# zUkKn(hZ@l)t%GBA5&l&~h3<>J|MK(e`ug?0rtq`J?_pKALPAAFd?*qW8i|{)HEY8t z3s8lnrJcv{p(KFg)W|NBuEnua^#%(GuC|q03eLBt>|*divq{N9>0~wiF^WqFcrU?< zQj78ow^sC-TpM7yY+5e#Eeur)&OSm>3n#~5xRB=XOv_ktQ#?Ymw5PT*GDls57$>Gs zh)&}y&ROw91C;6^L1klu76s)8_~j~7g^8BipanIe<{_kdJ?Q`W`t#>C?pmWidE6de zoeR93o)u)|M1T#V2Sa(HjIxC^X3^kvN>R4A{h&CaTXwX%cwzFYOt`hmyl_FJp4m{7 z?}COGsYuE_jQ5(0Ft8rt=8DP49K-9kuD5YTw8fj6kw&Yzp!t9)0o@wnmUg9xeLNjD z!xfZvN7|e&in<^&t5*^16nR(Z!#ZjrG`k(j4BEGLQxzi!vJ~JVVprPe;zHUrBA)mi z-1t_Vvf%k{-?PPe_Ru{Rl~{`THles%=nM~A)KFBSiN#rMbw!mpyh0SZepuO>AfTbA z!NXENSJ8wmbfhSwiDD>>ZQRK<2l)PJlPHW#6O||<&h<+>PjQM)2~AnOqTzr(|7=Qr zLH{SV*Y*?u62zD}CQKbiOjTRk|9Qr3s z8+BpDwv-Jjd|Tgu2`cHgSCSoZn?L%!Ieqfb zJ+fM+$N)$^r+|N2bY3QB@IO;H6O9zm@?);iiJ6z z!fbrXX_Of3xDe9G6i5KjOaqK{UGUBSk{&gsj7|%X+(}6>umXf8^Rw%%vGy2~l8Ns57{u4NMcmTP7096NC}z zz8*|uCRP|vAB{B^rwys=w{eMTC`?3cMkUo+wos4BnlRy4GjpX4OUqdwx>H3IM2}<* zcRq;{(h?E;ZFF!f&LuWp3;`hm+b{~Ce>z`JoBpGw_T#q?U2*u~%szVrZ#V6C&0&bV zK9dWqjg_quM#4~b({tN4{ql$k=Ut=kc_2cZ08loVKi z3Yv;I5o;65R2ugZQ|V=ow6GQ^*OC`hc#kYI$8D`ek%1-x-=d>>%ua>h((&jjNJR@0 z4<#o0N>)_NW^i;qi9dGAjBH1q9@}FlE}k0^)YY^E`a`T=>fUj642yCZH48cbJ$kvH8vXS_{NJ8g^q?eEoU_fU2E^+ z{v^0mj|G(eYolMBs$z1^*C_lSzI^+PRQQ*d@#+1iyPb1S9>41?-46wL#cxMrrxpp&3E5FWE4G#C zx#vcBz&U%JN*|5R33N%#6*r}|TTx=oZ6A@UBACkp7mW+r5hE&>X%cZT8#F!$%$9)% zg+5NGNTh{x*+Oee$Hs(Gqv}v+H{K+YvoEMXRWV{APwFKS8Zk?mvgds*Q2TfN%iUAM zXOG&$f*0Dlg#V)#=2}WhhVF&nj|iloMlam%(e%ON37N-2i9$CeMGmD6P6T=rg*Nd+ z7n(54L`r$*9neA364W1;bM!-5*2rn;-+_Im*V|J=j`~XoMwzvlsLVA`5UiXn2}4X< z>v2L=9;|yg&8zDP=Q(91&IPp;s>7K)c`mcXU_3rDXh}|SnplybwVWSU4w$_d11Iwf zh1guKiS?Hsv2*?DFZbf^vq$c4X7oLs24CNJ4IaR}WJYe<^doqK8L2O}!Y~>OxGIPc z)XTKSwnVofcqEuTw*~?g^2o{P2#OuzlE`c}MT*f-1yDliln5bLxACyYp%}iM*Y$iq z122HNoy$&E2JnBb!De zWU7D=UeL%>f=#t%q((I=&=+*Qu{^ucqW#eRu-5DA-H`k2q5CnVzhX+sq zA+zHBss$es0gcH;ui!+ZG6&mv{X5A*}E%}q*-ocnUp~~a-&(usI^c#?wQ#NDeC{kY6>MvHEaYk zL@>n+kV;I-rssr}=1HyYDxkFKqzTrJs1T^!sc1_wqCCF(qV&cU%`|=rXb|Z%>+U+E zzxmSkdg;!$Q^p-#bRd5sCOAt9rYy)f~{1lI`Z$5S6|+ZsD4 zcqqWFAy7gs>*(W{Ja2JAqKs1_P}b0hYuH@N_?sH2r$s3sVo2;`@LG%4Vi!dr zO`L!YrK1A9L!*i%4D!x+C{oQZxpCE`pjEbp5|yIqQHvC3HK8oC8hsesC%wKggKDwP zWi@hKd1tR^X1stE?d_YU8}f0$E9Y7laRTp$PxG57&13BQ>_L1afGCEwwQ5JGT-#wz zL*<>A-&DNFM!dWq&nE>t1UDR>QWy~lYj=&NxPyp+wv-J>NVQ3)u9Cr~^igDEWSTj( z(6BRgu4qXrgcPhP%&HoPYZ+->fxU!L z^Qh$T+2i-9<3<@uR4Wd=T@_1|X#^wiZMIdREOH$-g(`&evR$0r2x+vr6=5d5XfYho z*doTU^;lT0)j_bc`Xo#vH0olUb}2_j96N&mor&G|Qjn{^Y0ePM$Y$%!D}^c*?^Uj+ zyVrD#W0=x$c?!v9{bi-tPfWCl!7$_8m>l1746tUypIjJfW2A~agx)PDv50kaUp&oP z%Qd}$NFSo{``RG)tIzMor$-8T&mOv4033eU&DADu)JmopL-8Ouv0zS*d2caY!E+YL zrVnkOa)aX1v?7KModd!5)i!;;h*&ua*@Y{qPRUUma45pHRyDACT;+|TIJouESSSPm zifeK$-f8@u{-zK=v1Ls&q$zxxL#Hjwm*4}nvRcVn#r`B&%&V(VDE+|A(z&EPWGEg^ z$B9qCrNv`3rIhCPppaBMH7$`$CA4@tKiar45L_SLef_##|8n1R?x`bp?Rd=JGiw)u z1`R5X)A`zQ3SSEuR2S(Pp_*vuQ89g>12~`p8S$bQ$*+T+K1?L2&rVHmXt$6&8nTQj zK?vJCOKa)sX`hl%yuy_g!&!~jJJu4D20v`LnLxdgte&q6XDXc_NZTgWeO*gcP(?Yl z9+f+X@gK)6DF>Zak zH~%#H`}>9r&mO*;>(#&3rBQ7sCa}1*I#xPjNFCXmD6*iWCUB9clWg4cc8aJ9GFF9N z>!|crl(aOKMYwb``qeps&mN3$z6D)!V(BAp=2g59;j(3BUjFTT^m@G-vHy#TvEFgL zZLv`HM+yK^l26G4jW|>PI~RQ|OPnQc0ivLtoIOP^ld@fqDT@9Iv9{Wxz!$b=TYsg! zIVhwE_!y%;C{z=pBHGP?(%aqn`_=yNGS}BNzTRax&mO~vcjrw2t#HC(md9OSovWjc zPKDRH8~7h0z^kAjz#Xd=8E)P}@q5!jk+pr|MsY#eO%c-^;oU}! z=Z@huAjf}6Z|D5ZWwZ3DVRd~1Z>!gAzS`LhWf@IeUEF_*LN98!;MIg1>}16*f)Ntm zbR7l=xzb2dWK0}hDw1dzi714CCAlwRwRV_uHV zL>pZT(V@EW-xQSo^~CV=w-0yE^`AUyk1(+9Vp9Re}g4R>tXpb{^QfLzsY&$EIIJb)xfzu->K@{hx_hd%qj%d*+N@^q7 zYuCAkVFlV)Q!^aM)ol2FWfIO-i#T0Br}P7(Y_#lF5_DY7M~j0imz4(37kp9hc8S=5imHWzVehH&_`NO&gn4Udyk7ksvP%n<_a8^1! zV-8;yj>+rrsEUg^+NpP@Aq~~5fef<67mgl@zD4AXuv;zeh(%TU`A~EgQP3JpW`u>D zItA!77I637w1FbU9`(9E5mHi;5un7t>C~o(E3^YSy2Vs8Xhf!P@HrJivZ^7=<2}NM znjY}gh}|giy0Z)Eall2AHnhalDmS;oPEm_gXynL;qpT>zdQGgq{P6C>yYaH`i3mJ< zW zWhnly`DjgW)Sv-r(~JnKQwTVs*#Dr2gT}x$6<)7xtSCt~!TK8UslbYQV#a4Q!L~&hRuE}J-LF*OrG;M zQavkqrIaJ+F{r1d5D1&SefH$UI;09tX~EZKZ6HF4U!c00j;5#3;t^v&Jwk}1WALkd zeEN}=U3%3X^`tb?HGxl!^Mp7EnMC2QbR{|e+uvxWjc>27deoP5rugMAAHTMHj%Cjt z(MM;AktQulslOh?;r-g~Hm5&(1g|q2zn3%htshe? z;$*{YAxkAPj}o6SwtyyrBuI`cP7KAjB0{Cb5^_-(2tsoP-*37!eFU#^o9G2ar%*2C zA4VaAVqetEHd933@Zh*yxu@@*t}|sU>9v5hF)vuDP zQ8rc*Ya8qG4yrmmz`|18)y3@0@?L|urde^eU@*WC$6t=_^%}A_G+DBWBAUSWjU#_r zAJ=QUfAsY10em#EJ9zX^mHG#I2Nol6g^e-DUQR1xIcfn$;-tj;)ljf@2iymgbbR)d z{|ybb5R5({ZPAi~=a2w}B1_-4qavn|FJ;)9A3 z^uyH5*Knl;^H!!ue>@p~Bn5>)5HfC^$|72|v#_X9SeZ+RouYM$?PCvF&xjlZ>9Ekw zb~V-TN=nLC+B|(l#JrL6#67k9X$)Ide~$p93mhvWbceDWS0swK^xSC_xhq-J+ZT#W z@c6}Q)1#Na2e-8zTLgjArAbxnRvbpSTQh%mT7Ukzz1}ZZd-mu(+^nKk;z_pGq!AP4 zQy4_e%2Rc#W#N!(;|Mbeh;eErc&#rQr6%FY{6BM0VHSs%vBhi_hm20u{Vo@gqbi^LUG1=qjHOz)J z#Sp|=o5oOQ>`~!%)cqUHsm9V58YJWN2$e1^_EqR}*&>n%=WSQ+&gw6}t`DCn2)nmi zpFDooc@5uhVZ+YsiL9`%mA%5zJm)dMBq(X3P@+%bK7@yAN3C2qRbdc^s7mo1*IfzT zPe1j-jVsoIW-=x|MLBVBAYMKFP}?=?>9s6{R&VZhM)atm#Bfy6u!Ar9g((!dgfJYJ z(Ny~*0^TSmN%qkI~t(BFbl~FC8s|JAw`nfHYP+AqsiZ+ab zIHu^&eOu;V{u^Qg&mO-=`<3O|FkFfQ5;ohppBHfo4(&NDGtXZu2gPG~VU6%XHi}t- zmX;D|$`I0;d4wD@N;zCFcJz4xgF@w;ED#sH9$XJiE2}b1HO=b5{;o;Rvj^{CYIO?P zVnza(Q8=YIE*fTmpKCmY#_3o>0(qP0IZj`8;tznip`Lh7bdDTe!HOIqq4fojZ?x={ zg^xsR0wlr{3m-5&w3eYF3I_Igu>E(T>Hg#~eAE?bPtjjYO$(WOl@hwg(P<03X@79{ zAUKiR!~~TyzO)quL<3J!&<3JI-bH1_?9;K5h)5fcyan(gFsEogl!%Jf6bKw`SVdaw zc1^eL8i@5#(D{plLF zVIp@0b*+dPK9Xr+I?ZC%CLnPx27^9Bhj;4i3fp27hDyGTR+iwWLEh9?9`|}#_cMI9 zin7r4rY<5bnUJ6#UjOSyLEc^w zSA0glCZ>kEK1P5f-Hh)|S8V>b$7i?;Bzm6|p7gL{LJ zycU3h+7!1(dsz>6)p&XTY4TuqGU=1Y?Z}?iJ1iy`z%H&`P6W1_L++crWy6O3r#ICy16Rvf2?1QQEDA z&lNGm$C9QXAqKXu<%gRu5fc$`=~VIxI&7R_L~+FJa%}-KR_6}r#TBq&gQEwC`n1V; zAyq8mt=cz@Hjc2hC4$lwjiVy^3XE$uPFJIcny&C>w@|xA>&Bq>7q9Efr}uxnhj^bo za6hK>|9G=<{r;f;NvYJ|I=O!T+czWEPIIloM;6+kM_vF^LnmxLmr*85Shr0InwNN* zQV~@fo&yxG{H{n-+Q4ko9*1+gl?r@EH&Po)sRV3FD}{b(iG5rBsiJ0AkZOVzVXd13 zr`qXw(@qpc8&g0?+e?T+xkt=rXxIcSHA^jQ3q%y&MLR?v&TSZNq#c`MoAf?0Vo4v5 zr{~1_b5qDW2?Vf^ERsPVfQ^olxan+Z*OsfFe_0>?c)ye5$>Vlyhz#HBO?_A3P_`Df z!cDOZy6-$51vCI9aYF$S;p;+45M?MpZKW<04+JK2MbVka^8a!7ZcTP1*_ED|#LJK~ zqZx_1n@J;+=|y7(S-5++hsV$H@Jly_D4+zOy2*LaZ`bz)fa282%r?FqYZ}?r)j;Ms z5q{ZwE%&|G0=`#%b4$t@pChz$?Wr-~r`DwHNq7mfS$gFC z=zPL9>kGyH`>yrfccSxJCE}BZ?~&b{KO9pO@g1a|WJ3^{Zqpm4k9hl@9g1+o5JF=w zXz5beAv=GfGY^EA9W}0IFMTVAP6psg0!xSkx=bkIHRf$M9QR`-r7x_Y>?EW_lnHxy zoK^*F6u;Z|Jo7$Pyyr{FGFh_?;fa1SecO4C^HlDTY#T4K=Te@_BgVaMojD{;w-zk^ zPFLNPIc$KK8CV=s`FG1}ilVi;UMwPH0d>A8_WynR@@{=-uMwPQkK9|eYt_<&cB@D6 z?H3^rlmhCCR%ikM7~+t!{#`}KagXl~_3xM3Z)ejpLY`kbK`f9Ic#LQ>5J2Y28ZZG? zff8f0jI+W;$X);%k962iFBE960TzaKf*b`>z$j3YYF4MJ(Q97uxZ>GMO?Qvvu!>}3 z|Ar7-iduX2Xcaj5Hp584)fOOnya6!vz*yIyoHqC^#Gw`_g-ze&Q^06G|LK6~zf`mQ zAOFjKtN!=xck|t7U)yWtPEQ`qN8aZyEEq_^j$sM%W)^*x6 zYO;zvjkWTyKVoD{HAL0T2rkK7xHNQ$eUdE73Chht#&UNoDs@*bkJ-ivZ=Y(bKGN7Q zR%EUeKGU-*PhU3mD^?QKba4tX*|kJ=>S|&A-+w5(`*x7NsW$#){1X_TZ1^w_-XK>*7d7o64kzetTyjFtA>fx!W4BbI-97;p@0tH)wA7Y5%02SB0Qct{q22C_s+wLS4$M1J9clG z9wlAYCxjRvX*~@n0G4&CTe2mc@JuI{!dFqPSQZc5fMs^==C`x(`D6oYbWRJWI|0-3 z-(xJ`A|nhs-N`Lb4`3bN72tx+G2+YZL0_&0Bm}A2fix_XOsZ9?1NWk>xgPU|JsuH{ z0WoQO{g&rtgITl#?u>^8K-N^;%@}JYfpPH8b=lr?!VaTGW8fCght_uV4*D#a=VFbQ zJvJXJdC~=Yt*iiYUP}A<<23RA{Od38KYsf7pMEvjUhVJaJH0nvEtq)rAii{A4&Uoc zA;EC1a@^c}1DQgkw++_rrRCihp7ekLiozwc_kVGEc2KqCJM2jqtxYIBh+(N$c$GDX?Y`7WTDQh_Nc%efq8)Qd_ zzwDqT`_r#vr)0J^Y1b}_q?m=v{R*w{X^?m0@oAM)CktPa*b29-5M!@Fnl*fD<>mQa z0)$yp1FZxlx1}P$cHi(ouO3C#{%KC%ef{*dipaA^@sa+7U$0_8m09yiKq%zHa0=Q?(4 zf!IU4UIek|toPUk(EN$9_I0wJZ?y@<(P8v1toTzWezzfBO0B z`&X~opFM_eNpp3TP_uUk88XlZ-)(_Cne1T11|y^;oW5bg&!thC5TtnY)vX;1Nx8<% zBAWUSgyHpB1t{#1$IL(k{l*S+U0p<`3VKYE5Vp=9AN$z(@#}7t)67v{PdivP9dl~; zjNw#)!rq4(Dr05I)v6+|Lk54T2>^!B2`Dt`g3 z-Jh`h>d$>ba=J{Gy)55>z31MVPK(+i7An#E? zMAOrD0)&7E9Y(6|4PdAxGNi&c;9f6UmW&?^#d7WH5+qv?_q#mh(%}^bvl>VkFg8_Z zsU9$Tes@AIF1@Njvz@5<%?&$y-+dB1A6sF+{`B)}s?(tZ?Wn%?dFH{0?u4RQIHiAz` zo`wdVDz0K(CU_;h@GJW>D=~fc=si|9{pvzT9%@$r}H3C5q@c-><)$`;wL@E2YEl0xD_Mobu zv(0|g>|vIqgJbjpZ$coK>TV=(lJz7LzHy@X@4wq0{i%BYXOH8L`Ta}h_dkBSd4&NV zBrsUfIcr^$NCb;7N&SUwyXs^(E4=LTK1IfVT}_=xz#9Rf!<4&CjdyJ&d#q~sttoi$ zXpDezCAA%4Y2JPVfgob}n;U9P+y0nQ;i|1^#is#kHSlbjIgvlCL0Z}mvjsg&1y`n+ z?KNws^}niab*2ggv35c(A2ZVpPQ7>!QPHEyz*O+u5ftrlJxv;OFa`1g$FdA&D`rPz$+6x@@QcM^%<6h zz5+Jj=GFiOWQN`dlHJ>@qir?85VQAH#LL=>;zcaDe<7Y_&mP8CW_D>-m;3UNDk@wB zc_LFQL(cdd9?G;3$ahc-<PDQCX*>C|}NBGJ{R|Ka(1 zu_!e)4N+tEqLvRTn=&eT9s-CjTz2n5HK7bAv99G;lkDGpYtQ-7(f+1! z&Xb4otxnjBu&_1Qd7V3fgyA~@p**a&++#P3u`YF=W`D>+BHIL~vTe{Bz_3mE-)*bW-Y6XPy z;;`(d$o6)X%2e0`nuF?~FH9x#w!|i#nU`>{ZF;I3}p3#!tZS)xDuD=DJ2HIXs{l&^TB4hRT9RJmq{`>jU ztCzD+9>PaX8@@|X*iJg5ex#Wn4auNy>&&@@pb`CTgu58PsYiJ**t0Xtje3oNMKz*m zQ**XD?1;JuJ{mcdZ^b|w6rGtJr`^rItC~Img#A7Nt?7}|7E3q>KqTGwtmiFjd2XiI ze!xn-ry06H@oc<45LdszUJnpd5VVk19h_}z#1*Sq&0zkL1t%TM!F6Rc+s{(2-s^2EfmC51#;G0D2~mSU9(xN=K=K2$O?i~X z*NtOUHCKq5F+ASBvz!5&2P1XP&iiVq&Ztb#6nygRY9ls?YB{PvqiZ*)dJ~{#!h9_o zI;`&2Uowyg&qNed>{)LXr9J@IY6G2_fM7?^wgY0lYk*$zxDONjZ&Y4?H~*o3_+`9? zsh&N0FYkN4U*=_XE|y&sg}oA$J-Igazh*Wi-bMML!I)Wa#nT&Gb-|s$7FC`BxQ0eh z%EkX_#@AEf$tD1ymI5Qc3iENEx7B#7c4uU-o9i0!STBx_?MI6h3dqV`Yj&PV&Gea| ztXUnAO@T`Q%ay~fH0S|T+0=Acr&bTUn%gOZMswBVuE0lH>)Nqs*yy$Uk(FQ9?L4at zwu5V;J*v%`^G98gZz76+!jt>i^2y`(*11&GEgFVhT3l_-LT1Y;?T}2yC+8G$FWr+^zKi%631*RGzrnK@%%KJV zjX-k0tJOW~Yi%tNAFUVkVxud=ANSe);&Lz&=tEV2 zLe*MUJ@f^{&nRR)HM4G-mv*2Re?~mLATmqU{VXC%YODh_?TH@jhSSVkO7CS(5VumJ z@gy2{3mW%&%z8KEUA7PXnAg8hzw4h>Yy9j1eA_qFde*d`Lda#w{I2>1n3Ih`=qL9d zpt=Z#C$y-Ub?V%i$Xz|RDT7|M|vdMslxMDa4Tw;WH=0|3YUHIm_1^pA0;wOShh$50ZrfUNSMC7!iwh z%1wvseOi_UKOxDnjdobtP~s;%c4(~*TsRcO3FH;VeOR}&_H}ta*KW_Z>s0(jy`H?X zb~@$Kv<42#2-+w>;Jj4+;jMNX`;$V)oBHgaWbekvw%5Mw&#Q~4D!VqWcemBUT>iWF zU*7$CX8gLO;zH`K0lJB8#e=oxDdDw8@FiG}_4rLt8R$uvn;N$kOC7cnZAX5g{}Ys!jauX6E3%lE zcUR=ltr%k=4Yp(K{P~)5E6Tpi!LH<6LakT2I@@MVUzvdgcv_fZ8_l#hky$0o9y(;J z03BEqd+_Xor86}fc-4)Y*L|(~?%6~4X5a<-@roO9f2F?L7X~ajh}%hv8*-H#s=)5^ zPQ*(D1kgqwWGDtmA5YL&w6b>v@6JSbcMWhM<~5UA>w`cwQ?SK2c`S2Q;t!uaZTNg7 zHi!LlURgo?#Dcn&X!Mz)GTS48aJ9qW-$HB_r_F=B*eV}J8fIv!_O9g9P>WX9yIwZO z$<~Pa7HR~1usg{~?X-@#904K}S3fT!=dUUC>YwJ1Vzxijcl{Gssr~LXu=MN^d_0qg z-~B>M(EGteAG9nl17Hp_Jab+;U6(xB{sb8~l?J*N^(3(5*gPf)wtgOSJD82ZOz=QK zPiZZ@01-~jrnX^)kEcEHG5ooOmrYN^QR{jnH(JJkVH7B{(tFp!VQFs_;DuSfe)Oe; z#If;qot&f|;Z%@%osrkzOI9GosWCX9LF={=3*H0@S+t=foh{)nxmyr*0)jUpAH;t? z7PI}u?>>CGUZXTm9<`Uy_q*6Bi+t58)z83d2)*hxb}P1U=uKXN^{-oHyGJj*tVjp9 z5gTKje32gRnWRGUKXifFx&e`J!LmDgIQHwVZwG)_NjO0xck0ocNU72n23Wx)4;VtZ`c`5%6B!t^IL>$8XPEyfCyVAHE2w&{mUuJ)*0WoP2v zoa38+`$qEWB=&Hh_(V~g!?zJmg3WC_OjdBJ>8+Nw({lvljs+09X~VGCCc`*bucqg2 z@aP+s_b=uE@!13U@&NH$G=_L(UKEU>a{9prfL(Xup$0?i@_GdtRWzaJ1ACljNLjlY z9*_sNEZZ7;C3U?X5B{jfC2*5k7LkzLL0H_6mm7L2nE*!W{#3|*wRVtii_U1< zg6+h&QPETcWZ!oWEv+(tta|#p-%Rl5`G&j0vj_3b-5XY(nIsNqx%k4WVYozKBVVv( z5`5BjxT~qDoXefkfHTvBH*h9YYgo>4z#mFK&!W;vR2C3O3jYt5S@OrrcI6&h(@LH{ z?W^j!^2lCc;z4nEwYBrmro-lSFZ0;MT`gi=g}k}05Y+^6J-yrpiC&#N>diO5aS-02 zl#`d~`obxBytT8OpwYdmSEoRhlbL&-Wk0+N25zQD#`8b_W^(`OeBxD~?kA7rTj&2? zJ=l=up{B0YATvV57}nEkXFh|nl)G!w69b?pfK9_ZwvOdTB#lLIt1Vo?#);0_`&QIM z81j-0=mRU=Sj2!RyiWtmTuvNN)1xR5AFX%@@C`k&xwuy__JFt~}(N z1gOw}Qaaxa_<*(eHTHDg1-=>1KNNNt1ZAnl*+|92Y^^F;G%d4~cn6h$i54)?<58pH z-~T$p-?r{+GyCije7SeO1FIw29np@nXAj_NJ2Q;_zB2+NERm=BH6T}|Spcg1iN~F4 z@&Z#y@4Qc#z)a#lhygIFDhGLSvDI>DU>WeL7bn+(asm~v9&b&mvBk%-8IlTfL%6v% z@WfJ~YXd2>y<%;NIoVWmDt7_k)w`0ztEi3z^#MVyyVj)XCJMLU^{o!KL1v6gDKLh6 z!gWL8We>~Yd~}W3eerc(k0r+c_AW90`04BW_5Rfo#%B-TZ>P2XmuD4?XGKvEg4$rj@<@USgooOs}C*!V3t*lbVQ)N@cpn&#Q}5UKUU-q zlHYlF0maq}3jVA3_^7(qznO3ZCa5>!aB6n`@9=fj=3z1Rn!}z&_+SQLsG}9FMN#$( z2pa8jT3Yl#b*^@`QXsTxc@fAcvjRLeP%P6s2KA6(9v0Mq(_?*Mxbttn&d)!+|JV%4 zA767od-m|Xbp$oK1+;P(~9PG)`sosXLO!lJ< z&poI0){UISYWLFN1j(>50P=ZlV3FOzULmQaJ!(#lerz^T*)Y>%0OXuu9V!awJ4j;c zkM#D>OC@+Dg_u|OzlW89Q1GmKV^Oy|so7p3SAB(fTgQc2 z)mu+mD^A_jbf9W#g`Ax!@W|DJ-U@vn#F5AZWjCF2I%h{xLaEA^$j8>kI zF71NXXi`JUtZ;l#S@z^5SvKrMO^X&A=kl7C0Zxx96#sU99Pd7@cVE7Kp6#bsy(gbL zd~Zpf-nv&Hv3Zx19BS=Cu==SD{E-ydkGew#y=l!)wklSu@a_FfL_kmgX(Ai;FTzZ) z%dLO_D#ToY*fnhp%}LxssEUW3Wb7a?LOs$8p#qsfx$h%MlK^5^2~54U!{&(Xn4_?+ z6?RpCyKP!DE19n02|qqORb?;$L}9>ih7z*}0gHIO4S);i6Dpi-KDI5$1B$Cck3rM( zgo8Yu6@U8JU)`fm9<|5WOyAqsLj;{gibv%?DbkM}hDJafBbeR>a(LHl)%0apM|ZKgA;tQ*jm zvCTGPDg-od4?E%}&jeK^DEvsKf73ssDFIJsQcLi__BidTl6JpT~>f4 z@MdqIMLxyweii=gy#0|cD-yEZ-z51m57>r{<+cX1wvGwXu;(d3`dF(&IS^u<;uzg< z2P@k=X^$PCxA&B8WtOtpX0#rgcQQn5)1EN*26nxRz-*X0yymLMbt}F0z*>em00jY) z2@+bpt;@r!XMRuXA)PLWf2FWevQC{^*MT;(zRGOP+SAmDs@$?*LBs^~c&u0ZSMB3J zzGc1s?2&tm&y;alfMCr9RDasQHS|sdU9RTv#Ysp5fPqdF$bc&y0F1@TPn&f`z!r!- z+2a~;`P!B1j4ZDM5F?$~_N7b&Tg&5YEBBYJz^pyOP=2Atrfc@5#lq5m@|gBcULHT_ zYj^U#n?h@OTqAjzt;le&UYBQ$5W*Vjraltcw~V$cLl|R+=CVasx(g4Fsd77*)V*3W zm_%zt?a~?A$GXzqe*XH)=lO2_!~56HgP%QmZ?e<_6tx{H@|8Xlcznd7aH={X&j0V9R(VB)THiTEctf7_9nSsM?MHF&`2U@^gN&gYcelzhOo(4 zhP>smVaGkS9qoWyGK-t->GRkD!Y!Pa;&d=OR&Oi!ktjF=^fcyFU5BCS*3^?mQv*TS zE<+TnXNkb7#mZp+*jS!`yX*&MqgofGK&rYkI?g`o{`~d)huPn~DpLIHfqT45Pu~v- z2OI#XWsezSH>NuITIVUG31KM2uFk^PD}TSOnIogR!U6H>TlM*a1i9=!FL_;c3y=t` z8O|4Wjg$=&1VSq=N%XriOf&i;6a4T9dmVJe=k8*OHg7daR(eh+Q%eluy|zuS^k$5k zjZX!906^MWrRXpZfM75znTeog6$-1B;x$?{FBnbT13UOG!3~ZVEJD=4+ymOjyY#C&?xhUOH~Sp2ckNQXYaY^Ai7eY=voQJ6N^>e`p7hN< zCH6&wKI;m)Cv|%FoRw{4VWheo`Sd``-mXT%3XzF8d3r`y$^J=b3HI>bKGWWqy(o|X zJ;J(_z6VZ_dAxf9_`w{(_Y0!ol?(tU>5pq~I)IiB56ij9o%G0G9^2-1*a?@lb;?uz zd~U0Bb-7K}Waw&@D$Isgh{W#VLE?Hm$NyJ9z5n?Br`HXBpFMIfN$EElGq>A~vBJ|f zk5*t!um*d3FT-CrGr`De*CTH%vaVz@@N4dJszZl*9~S0dipo0b-8SZSd1Wh&_8r6- z!J?;9ctwM!RalxkAQ3R|czk5_{;;4MJhzua)$|G=C>A_KEq>Kt0ak`t$NVV7Ot93G`wV6VpeJq6~R3=VW^fr%4&Fztt{?#AbhrfUI zO6J+)_M7?q|BSldjmxTBoUdnerna+r*%5BDci}nvalj7_NHqInV}op-#(7@D&t%25 zy~yv-2ZwUGrU>lH6GvYG^p@z}ImITpDo9QpJ?Fv#Qeb*W;9Xq+q!*i-bmTiU@YNvxA zScp zrs2)|9=+KmU#|nuSFNiiL4jNdA_`>`?bLRn6d8d(6fJ-tKn%0hH0glSJGK!Z~~!6g|W8jDIpnYwFy?a>hR2! zT(v2Lc?`f3nJn)r;BM16InuA@kq`2vf89U*^wX!0uZ7`f58xwMI(|$ngP34Tg$R-q zlLLkvtnvV3BDN2E@O0?BD%>E;bd8jC%t;o*9ld2CCIHkIw0rLfz1 zdQfxhMb}H%q>4I?FIGtR&s&J=*`xQCCn%g3UUduRE3JNl>`C;jdPdTAu{^AzDcX25 zo;Gyp@O{FU6XSPkTohT3+B0n%e`-q-8U4KOzOD(ttJ&+UKA|P?V(F=Y(QhRsNWmjf z{qwpOfA-+LHL0FrZHH#vB=t2@SAFB$3*fTOS!z!VSl8&X2$VP2X>4YQ1}P z%kqa5%^?90%9JNl|CSJ_;?sGA+4#tGO47=-W_7W302yo_%j;7jfr0w2s%c3$v=;Ac z@`+>$fc&XicUJK}Gj;3Y_xaHF0to+EZPsTG-dmG8wgy?g*icu)}SzR=Vj&2 zsn6M(X68EiVtrTicF1ZG!c-F+h;+{nO{y_Up5U@U5D& zo*?NFz?yJ_;Py7HxZD=D&b}OWWct*H5R*%m4I+iF{4_!XzkLt;q z6BGukZexUfu>zqK!(7o%&3@*#`sPj9iz~RTpQIa|kM^`nNvbvr&{rZ`zpGoe0w3Rb zm=wi{Yzr`>>K^r$9XN98{zF%px;#JSR}%Twe0s?)tL8`gIKizfNk9Rg- zKfnL!-RJke`~7Pt{Ldb{m-ler=5*KK*^({3zit+Ek&Kq!JN1|i(p>jIl5Z><{%Nt> zI@GmwqrjhI$r-ljt|Cj+nKuneyrK@7__u`&JUGfm&i5{V*dd;^8aRMEdwyA@e^r_M z#>CmWpfGzs+9Xl|0u}1tdBv#9hH|p8v(v2TB7c^$lFTnldR zTl>EtMgzKj2{BgnVlsBpR{?R?blO9j4vP@H2NQZK+%}Z}2-eo!mIs*>2wa^@w>*NT zBD|iy=q+Lq=k{37(leNc%?E2gGOSxyoDy`)&10oYMzZUoT5bDfr}e58!+pF)_=NP; zXvYJ%B(3DI0j#nWOuWgAcN$}Mb_orX4)^5Yd<@3vhocI#qK!=<23wr_w9BnBBwiXwT z#pPrKuuUL!#OC$Ognnr66y=btG@_NNxxf++LG4cBXJDF(JXrM|*&a78a|oW*LI&Dk zYwsD=hrSg*A@b*dlJB>Jtv)D3DE7>KQhr8e93**ok#4lRip5B}BoB7MG51ACjvHIG z?|Q|-TOo&>|MZ>$Mh5=|x-11x*i!1T zc*@7Z%nAschr$8%JT^ezu^krOKXy9)naD;wd(>XaM(p1&=RoEx)vNBRpu&)VmDxBy zJW=J}$Xq=V!}c+Un3SY7D)5cuw3@Yfw=M z-+g%3N~UWnPh4dyYwOoM`Q%+iE(^BWg) z&mFzD>I+Tqyf!3$GGJ%)^`k|X8+g<8WtsA~P14B=$5h>GXITd_-_ouY%y;D5PBm-* z)xK4m&<<-5W;)se08B;g0rUGwIsq+eFh5UTem>T^G{RL@3KHf3A?M{S9?3%nAvESO z-CsxEwRYOy7W9J`LpiyB0ff0;{f&T{pe=&z=mLPUckAPt=t9vH-HN{f30jE z#EXXHKa*aJXOG%rI{o2xWExqExI~H~8S4c`7*TRTGYWOCb|73~0ov$5KuDVbBqJ-2o)zze?{W8Gdz%Y?yoym4^&?6G@Hs>k<2rZ_Y<;ECm zd_=$P)Iu@tc7b`SyA#78oC-^pRh4PVK>?7qub^T_us9nsQ2DaKpTw>S-x-Q3S6Lx} zysU*8aaoO8x{Yw)lpO-H!yib6A;;U|5h&Rn%SZp}%lzpNuivshdE6dlpntHLb}0Y9 zu>=Yj+!VBX;&_#C9k+;0vEQmg-BaDh?eoGAi9%uRgt=DETTgOWYF?v$Au1W2woPk& zmst2B@l2kOT`5!-wT78aS$Zrqv|>x!^JT|$)EK>jYlnqqd$X3k_B*|9x4HC1bW(pb zoEw{tSHH@AKIb8RJ!>Pkveawx(3sz_Yy@VpMgvJ&gSssU(E$oRQ#iCocx)>Fi_c&F z@S2wFvq$Z*#HId#yzKuLmD$~_bM(y2DpnRwS8E&~4gokzB&V~4t!(Uhkv8DRtm**T z?uS0o5VAd3fSm%+4(Jk6I(AF2NM1ldR_xrbGh3}4fpeSnpJ9KDxI`p{oDU5`AbHpH zE}9|R0fLv}SXsBu0JuGyQ+zDIj)yJj(OI}IgZZ}y)rl+siTLg3q8=Ro!*U=%?FC@E`fz& zzbNfiZwDY7#kb0=s-4j7u9?~edNN9|BC!rI;vmNsfW&e#51!~!Uo5ekiGVAEWYw%Z z&jG}^Zi`obj-bp6nJQ|K

6C)>G^1d*xqkd4GFR^Uqemd-hs4Tm`(x(I5^MA6C#-*>`K5?o;E#lG4W`rT?yf`pA@i zefKBjy`MdXk0AI*At`u5rLa|?%#3DQ_0Ws5062GB3kie_iav%~Ta)kM3>zVB3o0Fv z-w7%Nw~Kv7cBybFn?Miy+Nwt^xx{c~b$zEg&NjNSa|U}df?-~&dwaDy1pVD31uz9L zM&X&bk)z1IX&y_}=d4QD41u56%h~hY@EtlsT(0d34URCkjU?EaZ8&@3Co|xvoQYSf zi$O2-1XtY}W||#jM(eR}^-oK-KYQ#Ri-V6J)h?rY{Cs*3%d52(Sa1g$0aonM>+tFb z5=?s9X3qUQ!DxrtKXX^`YbeZIc59Un?GH!OdE~T^Z(OS8&jk;J9x@34*}(rEHodgl zG%-Jd;4&GXbSV_t8roVNDd{e+@#=ZnyrKA-H6&`HJfria zq!Qk9T9gWvJLUY?cgbVsj`q;}_83eXf zo2y&rWOg+GgR>a0J*1ffoJga(UFvsu=^6AnfgxBB52jk_guidrqm|@3Xwe6UN|Mta z`&R$z!>7?+ZCiczxc!*UfAbv*hvWYV=eMk?hcwA|S2h};7*D;d(vdgMN(dH5KD6+< z^caUf&+`PURhImfm8sr{Hy&dvM-ePAnA5@{vlzVmV6k=pOy4W`wz?UBvpiWUOb~7?b4jigi8ua-9}Z=Vp#GQ6t?$2Cg=_Bw-#o)#5t zIRj2Ft8q>Vx4A2Ly~&Gdb0?MCa)J^ z?~KW=2deJVIx%V+8K6ZlLinvNuAtKWShu{~IwP|T?_s6euCL&r=1^>rQR)jR%HPee z?|yFm??J!s48pJ7sy=xHU%JSBKZl5ije-R>RVyC{BL`KS->l;$Vnc&@z(@nRowj|< z6Fz(;4>IioBDbG`2Zkz3n#t<+p~MLkxMgpfLM93wYgkS`Q+Iwc-gWM)Z!g{Mv%Z{t zdP&7Ir0%k=jc|GO`#cX~XR|*aJMvHspdF)S9ga2PE4IGmV102+<6_}MPMZyhmIL3d zaB2&hl6zabdKpPyw+T(O9pG`Z&X0d!X21Ua)x-QJ58WfHi9eKq57E7NiPAPrerA#A2_kqOYaqen4;7KdrM6ADC{G2F_a8ug(b6xjvjQLC3)EX;N93BS$=E_ zU;`9F4V61Gvg09wnF6Ec2N6Wq1b*5vrn8io zVt}#~mYbgMSCSKhojsyicDE4TY&gF?+V*oEWz*O~iIwrj^%~O^Nl0WSIwd9L6cMyrXE?RIo|ZGwDcG7XRRjlB)I%JaXM9`QFLuw^%_ne2R4rx6&?QeQeg0 z?wSh`sUOb^KYsf8HO%|$QG3j%zqZ7+rnKtep?BHfXB%$^MP$i>xmoPJWcc~8nc?JF z61$+3UA^pfUq9q4YhwC4Ob_@q3PW?1K!x zFK?*TtFYXi#09ai^l|V&OFeNG_*rcxAdMHcQ(P=eGIqE?ZF30p0B8w}Af(yKp6veh zRQ+(x8dcA_fj8k>FVxTMGTL>WZ&UxjK(>r6g;T*_#m<`kn%dJ_y3qG!&fIJV?YDX5 z!3=|F?P!Y`=B17c^&{Ol-9oW5(%W?*3RP`q!W5|NF~)T?gXH z1NYEj{{PhaL!x`X`)@#4Fm8fSI>uWo+YMnc350VftPm#w z_Zq+rW2E>^n?rfcbZnhvuc+F*g`;_pZ6Aly zaFI*}Ot*g;o*%8y1GRzV7-g&5r)=FuuY-S8hhvdB9NwbDf=|W$b*Bhk!Zn`)s3Wq(RuW z2OTz`(gWl(T+NEi=H)r~<+P-81e?~|dOSD!%Rm19{p$jDPad|H$M*620mB}M4-K#p zl7^AQe06|YwPu8j>>(QQyXm`AItgZiL?-b5@R)-@b066h8)GMUtzVg3)B;a-@;(

(QY^h1r83TBU3hz-V&llO~e2jCudA3)#61A-)=UyJhWfi*0TJ!X+^ ztN>erQVwm+d8zW&Y=BDByE;Ww0vWCGe_dA4Lb11{5bC@GQ%vBz&63&okH$6s&Bsrl ze`+7z|L1u#msd|2o;!Yz^ZG-4C*K-w`eZjN+sA^J)zuUWJ}tis_F^3j)dqMDhc7_( zXE<0{a3&zf!9%s%9w)3)+q6>oFt9M5l_XY=Vo_+!)b_>zh<0*qpU_cBD zH*DlppX5xt*DW@--7;3y%V&r{^UfkJjjRKAi=n{l!H8L0$|n{`t>3qY}NI}1E{ z-e8p;Y^don#b)lxnDY`52$f!MX8iAeKR^6DKfhbQeC%J}fBN{Amh-d6@+~{vaM^!w z!IJ^dldl@^fesi$sOy=lHrg~kENkj>DnLxon3V+v6AbFC+Seh5hj?(=4S$= zR4eIDeV)#?n(#gi26cb~8~85O7dPcWhr6p^OY!PVx;)&jW7Xq`OyIO$`;y7euF74q zbI7Zy+WX9RAuLqfcA4$W`?fXD;K+X0T@f5KOgOHods7twt=7V@I~{0#lT%F1jZVWpA>%d0nTUwJrdXj8q?~CM+3Y7 zi(bgNkgA~Yt(3uI4I9;>8oGc9fX2b*v@D=!OUXQVN)Z}xsX}j$l~vxu&az5MEt)59 z+x^Iw#TK)U#ge%oBtd;uB^z4EAEiexMB-_p60zGCP#e4yT z>0!^8O?W4X&+A5V!oDw!tZGglUH=PW?Smg6_l;IHIo|@1GGil@3#j~urojK6%PG%^%sR`zx({@k01W= zwT|Q`kK4=csqgpX-d{i}!mwKAvTpH!AS|W-j^ypb$}I2I_?BLxZT2b|v|CJu6rsK{ z>u+?ujJ1Y|ehw=PxZX5+zSwk0Yr+il>!asBcYa3U+zTr30!&57--JuH!LmPzN~tmS z-TTsMSMeMJtaNztLZ(!6Zsps}r|-7oH0zT}Fj_W*LnL2c(So2Z}L^IvFxdB zqrn!EwlMi3x97d*bh3wXhhzjGACxQG{(FV2lRUv+w z6CaP3Zf4&saUPzC)lpj1&Fch4of_nV57ld)1lkfnMWSkHqzFzmQu${PEN0@oLb0^4Pt+r1=Jn z^~*_N*Q_dQ#l5liqi5bA2tLnG^Hk=v#b7J0kS%jRxxEO*-= zAjh2y6kv)ac)F5qf2(p4@K1(jUbogi8RfW0aa)IVg9<#nYu1sa!diaO$OtFv?8Uodw2e+SKfgrHQ9CrvKf8sTl zQjH7&xlbPeR;Xgs;e{*bpO+-svq$gkdCf!#xp_%E9{W2%3SjZ+v~(PpIEO0NCpvubAD(^fRjIk(JJjxcDZ72D(NPPi8M|fJQk6DR$jf-#CpGJT|0BM$EPKb zLC+^xGtTQ~eaFy8QU!VVw}@UBOnAmfqekzJ?_Pr5Ck*8Al%M6zT4o4ZZx@vBQWU}- zMbB|O$={Y{-{sJ3>k{A|TVKmY{jw?BnbQt6RlJ-%u=L)9O4yaLul=yC49pA)4PM7v zfpS$+_rZG~Y@^q=>;L}qhhKj8{^PqZ|M>B1`-gXp|L*U8H$TqL?d$6b0?!`Rm)>yS z4kJJmq#m)D>KWt+a=DR&rM;5cay4`w8Pu-ykN#ZH`KkHbK1JhAdmXFvYRYVlBjijt z)y7-M!%NiD{*eXDAePn)*0H)8WE6E`f26LZKp=J|c?2adwo8pWcwMugWUvtrRglS{ zdY&sOArCzOKrwX_y0_RfYV zy?(y<+u6R}^FLnoJb&_7zUBY7li?tSuA)O|Hg-UrZY+b(-|xnJ!kTV&RROmO2fw=y zFTficC}ars6#y7}$l!9A$v;VVpbpO!4e0lftXMXPU*Y~eR@Mn+eTeICEPLY9Hm&dXY zzJs3+YR3g@c+2g!zGaX1Ncsm+E)pg7qJ!EwYTcDuEed2cHknpZX9d`wyage46&PN* z?Zu%eN|md1v^L->-;y)ii-cNODw>|Q*H4rGm*39z`=9RP z<1u9s2u^v z^MP=!aU^~ud2$0Q@var*pk;edA*0xgWKSq_iLgWSGm_5fBB*a_vh5d^IKa2cdLq zy5NKsV~daKA@B#K?SfYI-Re#jJlGoUs6sd(Oveia)c3m!_2LPXD^MIJ-(ox7E2KTf zYtw-fxXX~90G5NaJo{mB{;InsSE@RXpdOpf0Ez(}^Lllr|Ko3G`opK+z3=S<(Co|m z-+lavhks`*e+!;HdxYPb`HN&QKs)myzmXG*eh8%xuj?YY`xf#O__KD!22T zWvjf&V&SdZD>3c*PBCL4ct}^sxovp^nr$}Ty4CZFdalbRegNg=nc@rkblB2u?`1jJ z&bO}Qwa+c|z85u(!d|03R_t+`CGDPBVC}T-^9ZF|`0ZF?y|0-P51WXCLdgP&zn%GyzkK-c{>$&*^-t{s)67=?b>?3ywtDgazcumv zGKfIm*|X~j!Y{LLh_7ck*H{6NzY&!th=~tgyLBhZupAJ)X(0*$s@?)E_vPo$v%PlS{p@jl zYrY|a3k(4v*{_S#zsdclR!HlbgqAfrIZ|O=_D8pEvc;|)ZUy@i2wy~GcCYzBJ{8$5E#S7qSd^28H=K)!o)(`93QlKRY zf~Or;`Tp5D4^n#95f2vraS+>IJ8F6I*uIJ4_C3QEj&qLX0bWRUE7!Q>c@dn{ ziImm*_OrqC3@b{NH4lr}PREsaINMyIALpitbM(f*lv2k9g*@yjDP>x>GOm4`RzX;? zzr!Q?;~w7@{2M-V^u71KARZA28h0yNszo8*?B`<+3%6oA;a+g_2Hdqr%IkXOugjWb&f^$&k5=OH0Qr>??1ji-OnD@x28Lv z%0Ta7KT-|w!K>J3aqhR&^l6#6f}h6#*V-pzA9I09>?P@UyLrHsYA;QTzR?bL%6W^$ zN2qU&<%q4b%oiV=K_#8=yfdMe?z1oV7qaI1@|G*4${tuck6z8{@-~60BV?81wott1 zy;6vp@)WQ-EPAT*$ApD>+3g+`q$h%29;`a8)utAf!|81p8Lz1<*6s=s3H~Vd7KYbP z*8aEOPWRVOKfn7h|1g2=e{8Qh4L^HO-^|}FFc{5J1g(zm>f*HbI`sDR>J8vr**@7W zyG>c*rSHXpS~4Anoj_MAYg;8I*wIV?(g|h?wpm0*)A|;b42OP8QVg}9fFKq}^O1k9 zQdG|#x0luN-z$LTb}B8LSYcooPi#(hz{!_3!o9^~MHMvS%GQFOep@^kj$SpQzwE~% z{=~sZ6E%T87gp4)4) zFV}+>TO_5L?6;%TOa8*VWHnWjHt54*o3iD>2C&+7AB-_@ z9T~T(^FeFJ*bbo}Ip1?RkJxRiOgvrme36)Nh6a*6wn5?q&agziJB0)4#%dFMPq}sm zeGp+^#NoZG(%!umW`Kd#r&v1MQ3;#&KG{p17}YVIfY&oHZ6`4eDpKp-Qp!cko?6to z?d)2j6^s0=+eLhg(3xUm*?k{oJzT0yd1dCBzkis@|K;=i>C+$PyRVFm7|t?+zp$(vpf2w7ADZ= zSeaNuGW4(y&|(sR0V@fy#X4BfB()Z|U=i^ekC#|BP)6o1F2;mpc*%Wjsa{U|(uEAP zWKH;Wdxl5t;L}c=120EXQ0_3($;h!e;)>qsW?(LsHefa`MYJYsKO#0b__f`lFMb(hd4*OofUR`niEflw51%oF+F^4 z^+80$i{u=yZ9+mvX(i?1vA3S5<555EZ`D`$@)g?qn(gJY$L=lL%cE+FOL&@x`@_Ic zw&U6%f|ZY5Hp>#az#0IwF=Aw)c@HjgP(KHIEj_om%w~$~(eQ({S^-)vzZ{B}-drF@@bT4)4 zzayoilcEdU*cy#9m44Xj*qe)I@&Rcm<>cL2C(N{Z}is?AM`m5&`bG{jK$XW3RKC;t@b5 zDlleZeM=y4s5A)MO7fwWBAMMzOMq(ZhkgjU)}N#p;>I4m=Oh<279muUzbucz*Kpa6 zA%^o*p3UkAV;0PSk!}_lAGd6DO6*V~ z`o3K{g%@k}?v{iLJ~>)6C!ejqkU;tQ-FpAAeR#F0;n_p?5+r?}(iN4Q25OvXsox)i-V zYGh{wORVm?i*R@j__$F4qyU=>wgB_fMS9mRFA-?laUSfo-;W+n_OwyYm7{XZxyD?}atIH%FV|MzAQ^&0pymQzlnjytFZKmnh>0HtytL!; zYOb=#;9En6TrQ0aJ;Kr4L{MJXfH^YSHep@yv30OmGYrpTogRa??fE=(0kwjw))75< zttIpQQMuDb9t2@(&#UAc{O}}Tg+tZ67Ol~Q4~)PDR7BTmN61Vbed*hF?sK~Z0J<{c z;Wj6D-5Pv;TCeG5JbCEe+Na8#zj~VV?4f%rn_9iHcHU41PbN;y{k8f}Z46?O(`6J*{63^Ej^yd}6_rK?0KKT`18(nPQeZ@GLAn5Aq7|2ODbHGphgU zy#nF5EJklI#m8)F9SVtUYPgejHt4BNc&QrFk+1sY*^H)iS5+|0dX0^}pvwDUxBazg z3Df53$%BsC8g4){_Ko2MW}bEd+f)E(I%jSm%yL`oWxcN6sMPtJ-@pIe??1d@ocHVj ze7jou;7fbf%~~CHA_a?vq+KduO=Y#D0QG*@y|r&kzfaOOh&lk}1f9L}0%GjbhDLHc zn~D&s0!g}f&mHy_J$T;*em2ad>%0^@QP!_KR@<>8Jw^+CuK5iTrJ@#Ty;VrTxP7s* zuh`eM0}6-4W`+%305J&~f-n$u^DEM1h3keh5`=(X)GKlM-8-3$H@v*j33uxnz?9!U zUj*QP-#*WGf1K~W{(kZ=|2SWp+h>p9Z#M1!7kQW2av6qu`TBF+9T90UU?EE*cJPI5a#9rS_1MS4DGrvtH2JkXE({5UMWq5L$1tg zU!u_Sg$OG_>=Y%!*R6(xq+d$-Y}%mRU}>;iPg_yg&~0k7WNU)%4q?Lm7XW5JnZHxq z2jjBNEkki&KLF01N9dLhGju#-oHj(uU?D~80M+bGo!#^(+4(>9PanU0`Y_+|-(Np} z`tT>J>YhE2FDLjrAO_?UHdfup>9wf9!VVd8Kdx*U1N#L$L&^^YRtzTCHUdX>bDUss zt(1W)npkTZz(&ysg9+eQ_6??($%umV`OVg3wYl5NqqE=6ls#gntjNH19bn$MB{&RV zvERaO5TDIT1t22ZM6ErqX)an42*6Q32<7?Uz@D>z_Srzn#wbs}Od~j?clswUWH8I>ts!SI8+ku6sBY z#q42@t`PXGH3}e`U`!R%8Y_!{aj8h*dP~>NKb3;LqM*mp?Nc*Yw~sP^=ed&!;od+Q z7W0e!s=VczY_mQ{Tk~$ry?{0mq6z#tJ(lD5FWvK+a$?Z^V^dY+c3dHhg;;0)c1)Oa zy!C))s-VdY`fwld`1R!2+N`nG==Jan?MsYxg)NF_;FpQ?K}KUWaaO-xJU8Wk}#Ile1(RzG>J9JhFKwC z3*&Yd2!P@o`TcJfw92Y9Bb%6$k> zfqmN*3@a>x7TZv$NcBCPH~LQE1!@her|e$|v5W-JB)LX_D4{a*?{=vX&$dPep08K4 zf7eFwNcdL`oc8(s*Vm3Go;{#%xxjD7B!6$-APcawYIJc-)qTbtm4+~BJ{yAHJyrxqvx9ND_ zHB4Yr448#quJ{c*GW)j7|z=j z+)5jstLS}uY_o=<`uVuL34m$6I??~?>-_2G5AEw~VfoqP_m;R3DLGj2eh}9QC-qXO z7tlE%(Hp5f9k)bOiJ@J>c2Gwn@Ub?-)T7*^8(W_MBm4`g-D}My%~qmVxmk})>z?hl zv6!PAD{BpCc?)ddv5++Z0M(+;cTt#KcW^~8kY*YokeQqlUO%U$T*h{rryqRXbzG(B zJK|@D6|D>;H^-tlGyL{!mAOCfMx$b#W3xAtN!EEAT5%qAw*2b6{@wQt{Jk3Hm#^<% z)xUZ6P`)gF`8LI8+r7lLBv1*gG)|?{iaj%(XX-1#E6P6YmEp-Z9%|n$vp-0P{FFM3 zS1obfVm?=k`z?Oy9XNck!s0iPL$+#E2_`jGqpo-UAtCi&&=fy=DBmW!kqBiW286)) zuL6s8vg))zxns5)8N3G~NR@S?!u+MGu(pjmJUrC0zYP9Vxn(R($&3hJNpnWh%;^pD&BBh&*7T!XOjIjdIeWDVk9<_E_X2OU z1(vAfrx&e*SxdcDU@0WqRnxAmt#Z9eOdo6pX6#%Z6KrrDwSq`stZBQgrsew=L($j+5T1k{ii>EeATe+$>a9cxno{& zn>#%50LLrD39f5{wE>jhVTsua8<>a3V0i&QtTZ6q4+a8~$0K?kc6Q;7$Mx~r_Z=jo zTh<cbMdr5*>SWN&D~ps4c-o2=csMptZdLGXGRZiH0)*1)w%j@ z*6UqJIa<_mazE`843Hy*mRIXT^In1_Uw^R}AX*LHoFaciWUH65)t5ARS;C(;wF4fn zeAbtDKfV9>{^$1Pb%loK4&Gan8m}4)=x(zY`i$d_@~b!Kg;J%fd#SJ1%%RqShGTuf zR3PW=I7Tc&*^RBl5Rax=#3~&&zCeGWT+ODHG*;aUpR#nuw#YD9E6AecOCN!BDk@mrl* zzwwGy^S9}pIHa1;4KIRX1&`!k_$t0Vqt70>w=VI{+|EEAAYkw{s&!d$0Xd5Snr2TG z#LKob4MQ0(`-7E_IP2N36%Pr>zD9|SpWY=M2k1=&%UBPX-WZBYx7eFJe0Vcj^dB(u zvmPI-VrI#wT0*(yxV75#qdPU6V>IB7L{{L51@)878VJ!|3#~ocNC8Z2p);fhqY@c~ zK`u^uNdqBQCY|nf_g6J6_zw6X`#;>fGh`-m?vOk2W7-Q+X)it`rKt5EbJ&?QP=^g{`yR|2)R|k8W!ocqr4E;{;Qw< ze!Tzun#ta?$L-~v>~{$(U9I-E$=Un0NA0u50ZqE^C@k1b^R_65i7~!@52R^ljGDzn zI&?PmT7sZkzcAK%(07S_BTfhIYplzfyC#I14HB}ZWXCALf|p*lt>44Y)S%@>&SN7d z@#&WWZFO%7FfV4Wjb;b_oDAdX9aorE+G`%9qcKRbm#~x!o2SQ8i2&(UtXjOmTi+OO zVHI{4`@QuVVH?L|f$6`pxar;B&)1Hdo;`AJWzk)MnX2e~upg8)m->D&tfI^9u!ahJ z=$UpO7xA0)R(Z&c57(q;v_?b&enl8Dd2~D9``&?n2 z8hJie!z^#5RL|Qk1v9}w>mYfMUD;WMac53;yT?_;fz8>R#WRG!HfF24ne<@x~Y)6G{XYf4SQ3DPM+r^%cuS1 zZ#P@Q;blq(H&060I(qVKk2A``K8dS&?sc!$I1R<%ZmD~Xje1*}|AJ5h!&KT4Rl7~Q zJ?2&x@AZU+?CS85ZqwllbiTQG4xFP`KGtPymtrb2o_8NswdJWpf%f%y6Z>zN(e{t; ze);(R|NZ4vZS*IP-lNQC`hE*rVol!ncCD=8d5LhgiMKbH>~6;zsIhDbKxna*H@usb zfxGU6swqi&Z+|TYXa)~92jrVTbl4!a0pQDh49?!;4OP4Dv1y5&x{UIL%%}S1Q(e^z z;5bw{HG73k8q>ou(V>~VXHyFXkL8(>)=Idn3QCvaQGhY~wHXBPYe8i#{+b6whL`{9#M%3|5Pp&5Zw_yLaoYEV;Hb z0sF{DlBH9&+HD*CB=kFlxL<(o{ws~RR?=dUX_Bdu45NR0k8hEbP-}0V*NrlyQl&DP zd#@FjImd{Ya}0D}5-O5)OkoV=Oif{?{k1C!MueWQ{&5JqiPj~U?i`4Umg)tUnmfz3 z{xH|Re_S8JQ&$t}jR){E0}_Pchv0Lu*oA>YvIu+&LeLwN^H^5YGs5Q(z42kA6|@c| zKAh-9^0MBh`L#6ONTmvqd8|mC7`QT7sbYyO%HR;o<40Yqe`P9=}U+>fWm)^fnyX zaHz<6i}T5EPs_OA+sb_(J>YpnJ244tu{lRcCXaA5Bq70Xaj**F_Q;ZMRQr(33RZCk zbMBy>M!O<~ffm`r^jgXc~fGAL7MU6IR=>q9w|ubiN5J z4*T#gq{^Dx($Co;T7jPtu)4@9!0zgt(#{qBSK+>LPhLwIu|7$ zI137Ml;|`JV<{0)P}>{Br*Vr`!83^X)x&E>sFyk@5d_+Xz2@CgXQHnXVHgyeXnQzO z!y_GIFv^8(fe;zw)y^ArKerzbxhRe5mupDr*5h|ZO71cYc3l1(5IiF7H1S*=1&eY~(qQdFCQU83e@O!lo{MG~a znL`^+%`|=#yq0jX5#^#qLY$#OlWB_eIPbJc!+x8GWtg(QXyd@-c^u0BTcL(S54%vF z&$wZ<#<8Z5TqvE_SP_#HUnm|jZ3nheK11J##|F1*o91%EdArC*bu8j7h}#^J=m+z`;H!3FVN|T-J~!J?m5=hGRx{h z<>*l<5Ly&FW(W#k8k2-j(X>UN#Z^J?GPH?Yb#!zpDutGFD5QLWz{688EA*aF)O|M$AN2zUP&EV)(tTW6loJ6S7F7V>{nB$@0 zV3PJ_F@jt35U539Ina+78b`>j4|*Za7cy^>PJjA#KmL5x==8RO_nBMFw&C!|nWLdz zWsn{g91$cj9UbZ_P=O?lL7GB~Xr`exEsC$P$^35GMv z6B&5Dq&2(g`R#GZZImB;Js53=|qj}} z)77@B8xP%QJviFyhuldvO*|Pkzm)26rdD(x6g9TKM@>c?F>sDf*GR024)`i4pX5fj zzn0p9St`rvx#*PO2sHOG4&O>n^@J{)5L-G-btzhhMqFNmYeQP)HszFr&TXMSE2iw1 zIR3QUTX$1-KHzE$rVBc7{Ecd1v_lg<3*A;-dnPF+r*>R*H$*;?s|_WU0)OusO#~ey z=Y@14&L%E#VHoq+zD?nztF~*m9=kI>D)0EH3W|##IU#PYB|FwB3VXtsBroN&rN@N= z;^{_RWSQ8`3&AO1i6V=>V}7$S&=`A0ZHpGEq4tGH(eUxcDoseIZlu$85>@wh&=@nv znaD)U%v_~gtbjJK`|-+*ljB=QlG3(xEl_RJk{&KAgrS*YH9u2y4pB)2dlrI~o9ENc zh#Z!R2RXX=aXSlL=qhW&*VT+=e2P=RzvzGb_3P8!u~V|4L&9yJQN?Sj{<&ivk^h&mtVQ&!S8J)U?sA8pYgp z)Gm2xd`qLQC`}1Hi0uf8)4Zo0ulR*#g`R@D$iyl2P~H)tFaf_SJqj$U9Xmwn#|QOWt8=Fuv9}wWvza7t#5t5g z8#S5pqLb?PZ9F|c-hFP4cxw=_Tv%g1k ztvwnJK2E7aOIO=ZK(J6Ihss%3P||nCLvl;cq324a(1u3cmfdTbtUcOhr07h`JtFu{ z$`ZO50O24wGZY9E-DjIh#1z((PMe=+$os2fTCd%N-+0*0MqMAfRQcPKNOdG0M}9jl zi92dDQ_R+7V{knNaf{iJd#H)$WRpYiIO)U{W<;eVO*=~xKGWK3N*aPJ8fJ$huacFJ zg0ff@auKf&LEA{vq+guxP3^+7N=b7U{VFNcZY*3XxUXve&gI;KSo$Eu)KP--RISi_ zKgIMzhZJ@izq1ihSshPAioFE=gGMpOjewbAY0H%JAMIEQkJpR134HC|qxuBo@& zdf3jO=);Rvyo?xDwz!?(cdkcfn>qy!8Ts8u-9_O-@mgFuCvuItj6yuVXyDL19;V-$c$+;W(vabSDqF zVf~VW1~VNUXIVIATDPffXqrycY89J%g~RL?No1Uu2`ynwt<0vKt~`oS8@3&ykxn^R z1Do~JK3FDxqF(CVNjQaedhG5I7mXfI$c z28UvoNaa$kx7_Yo7y~iGk{p+8$qN7{+ENpW@@4V4;+TlV1*6sMlz4IatVdH?8AIC; zR|W${DyGe5v3{-E7FfS3FjFp%j`5o3dzjzM_S){gKVR>!xbe_^Djz^`o!}YGJjGVT}El124ek82EZ=78CdqDYxkmTEy-C5$G`%p93|WyelmTSK?bRDc3{9tKxP=ds10 zOfrjs3nSNFQF-Zyp>(CSv1rR5>I&LUNyLuRn`Y7&=*|}IP5Mk?2^SJeztw}^e{Bzc z`fu0f^wwi{@{In+alN8cq103WJ|QH}5n0gsRS*m55Sh?Ua1A17X_fANQ!$Pk0cB5m z4o<$U{-Ju>J3pr=HC|?dGR2El<8B2J6daF@7JG5Ux@eRa7CF1;ZP7SfDF!sIOnSvf2?n@!6oi^E*R03} zw-t6quWI4i)!aU}m;Y`)eO-SY>)R*Z?zbMj%dPr0t9ZnBy}Qn zezG05pQ2rTizd)EnrPQY&UhtSd#2*OARF4ZSjp>8w1uh=s!uV}_|Y3Q3_3W(J~_%6&- zdpe{%t0<#2qWGv5Wu;nt)|8os$5p}NFgb!im;T;)tNupQ_%zp#>)MpwdgwljzQWo& zZ0!jyuKK_jyXxt{ZUQJu*={U4=`D3mR$)QNFjb*ZoVs&r%6CZ6OxjnB_;k=}M~P8U zqf+`sY>X(vu7<|1u(&&PBeioH#Q+ym>cypla9!)k3vh7yu4EH5VQ6jFM(+z6Sw(r$ zlvHx8ly?dyEzxsPcB(?Ph6O56$548ji9!b|w`dKt*jwm%vKLVmru0p~DbeXkBj9OD z|MxGiUmxz)qvrKckA1vX^1Rj~bL(OJY{$-WFdw9c+@R@EF!Ruc2d-&Y1N<*H0>Gf0 zKmem7W+Olcj*G0yZHLx9m-AZr&BmkLt2R2hf&h@i@nEBpprlDxyj7^ghSRroz7A(* z%5iXDmYXz^2d+ew3J*<3H0p#uRzPh^KuBa&dpdhD0p(1z0>twTN4U;FZ@iy~dA6{Q zI?ztpSujhV(BL`VRYZbOvsBKi$(-@hAMao8zCFF_`R-BS|Nip&^!08%tmB6K@e?QF z8;|H`hx+=`qz#~VUq>IG@dH^mr)4BmiNFN0#w*DSO6q6Yp=cvYDKakzsEwwiBJ{b$ zo2w>g2Tv(3?ni+mJ!%2PGP6m%2q!s>L+)YsZh2k6D1lrrq`zvwLEF|{kbG27^SL14 zDV`E0b%K-+6eo^Izi+OwkX1p`Mw1S-$)c4`Ltr(S+CzI5ujrenm=jurVk3t@YmBuC zuC(c$GwVFl|L*apm-g-cS}Ea;$L+jx-Nz-3Ic^Mu+Nw!n105ltW|Zgw;Rf$<6weji zkvrEPWrxcHkDa;|lR#iBcKl8Nc0OlnQ3c+`<%~lrRKe0>L&q*rZi%A*wkQ{3hTYD` zzXQAQ$+6iK?y;o^7zrYcu{1zyp#CQ!Uf5}3hup4dv09v)4buEt@EYA(k>Z6QDHhJ1tMK&yYObdzTq!ByM=iw+FuU*jGc-%hb^Eb?A`gYd>t8mL3$r0)e!kokH6~5WU!V%%QBI0j)jS*@g3zsw~BCoL?t2`g#!P zQ@F%)EUlw+c5|*!yYdNA_f!hb^K`O^m-43If_7&R9`@0T!&JH<(4|C5)!EjRgEe|I z%+G+texJP{z@&8$gdeBE^*p*tll9_6F(&W*QSD?o?w}xZU{K+d?P!4-D`N6}n$G|H zy#D)ltd71tKYhJ_Sqi?d_kX#n&vWB(ybQl@wGWC8h|9QcTo(3^hs@*fbOFSpL00dM zt9%g)s}2cVtjw*LSBU+H46dQLJy>~4b_V+n1tnA?Lx@(-KRE^LCGVcM%Uohl?0Yn- zEuK#fBd2B9y9w`Vt#dG=R8`oUapOKPv=`dw%2^c54uwxa=P|h&bp>VqG!M1UrQNGE ztca$7iyEn+?3Po$fiCUV${9^dz+uJ^Jte!gUFh@t>ZSelY9aTnhwbOn8UMarQz{fQ ziNS^J#SI7U^mw@PoHh??Fgc7Bg2V)uo_7tCBko~9zd}s{b=G4l7ZKrB;%Gs?;F7-y z{)k*4wQltctD=#kco_2#p3w+jsAuU@sLu%z~wl{S2(n?(%=OVW!{mY2VM z?N1MPug~k+9=-M8oo`g#`*E-$^d|pcM=R!)MeqfxqQYB3XCY%yU+kpvR=_k+;#fo^ z1v%@gd%*j0QtA+hcR^p}C-y9y$ORz&Jvuc?@XRg% z5^+4x{`8crkFK~(g|=TA#b%9;g4(8`)Kea!g-w}v=2E;_tV%V$?eL##DMRSBdv+BM z5qcIPjshrY=uws1l2FVLluj3#cfWgm`u-!vl23oWzc#D49=*>xqh{=QszUdxuWm+B ze^1~#ibw{LE)VeyK?{vpr~=ZV+KQjLt6csTFpV}zkN$Ay9cG9t`l8Pv{zokJL_(1y zNAuI+LV|6*PAWr)v~tbGcl(1L-L3d+jS@x>&xTN3X&q^evfKyw$2VesNcQ&aD6bCqM4KJm0i#rsd z1c7`?b0W^L3PH-coaaV*B%(H{0y18cR=*SQf!R1UZfNXG36_AeJMyEYG~#yD@)wrE zCtQh@!yWCoT+itDKQgI*{rd2-o<&^m|HpN?;2RI&r?MSAIE@R&WqLjo)x@81W)SqY z6j0?g#TJL_O+>CB6Q@-r#HkP#IU$>g!)H;Eu#YY;0el6-nvjc8BxNs%mmqP5+~5#K z)g&E=PGF{9?AJImW?Sw!3Z7q14W7ubMZFM7;)Qe`+9)QSqwpVoTK#@LAUyh)_55=G^mtXh z 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ν^mrjpivSMZg#&= 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

  • R@zN^oIK~v!75=7JgKc_SKah;O@q4o4fTX)xnyjJ;X8zh zm#%s{Uc?{x2w4FlU4GQ@ctB*UOVHw0^T>2lQaA77obWFQo;f8=Oq()d)C)woJN?9R zT-8&Mh%ifXk1||+)K|~jBh6}1#!(_PSD*;B+7F&Ed-?-2>*H<|2-qH(O9|2#b$%u_ z_X|9iZ@qilao5zn1J|&Z%C;I#NF_+J)T!4-j7*C|hh4d~n)gm%kwm{Rq0K=!FNE~( zdvzk#1IprFA)d2&{&qcYE#Yd?T9Yi}z{^RUs}b5~R4J@;*;{!prDlx)x;nb=pkj}b zj*^*+PN6z3_odpgB1<-FC=T^$>mDCl)Y`j-Gvg&OVT8-EOWaF(eGb~jR|qjw0JrS0 z&+_54t40r2^wiotLQf_cP#bT;h5x6Ak}X9!*K{{$?Olhh@lb>4+u%YSpTJNJj*O3B zi@fSYse-agI)s6#IEXxS5ZbGVz|xu>WDnL(8t!mp^3s1}lOkS)G2i9d-@5!kB5BYU zvE2=FeVT1;MauvKLHu6FIFlP|Z@+E$*}E037fo8waw(9YPn`_Blt}q&KV7bsr_|M*8jCKdvS4dA~4N{xp|Z(hC&G zQu4>QNa3&Ngym0j;%3vxu7@VFRWDuFEhwC)Aw``XYF!nQc#`(;wGG7FsLFxS;mioRPZXMVmTvQ#a^w$0S5 zN^I-Np{uU#Qd2H1wJCB!XK{zUx{kqhGT)om>V z4v_(H0|b-`(yYaa%4^%4h%~E4<75-gfGzb)SHv&sr7GW!H|hfY{ab8R{6*2W^%C%I zZKC-MkDZ02Ikgj5sqrdi=@Ozk(f)@0+6iuRJ`1P^g82^s#S%wU!3A)uqpeFihl6|E zl@HY?qmjOqs!#`ZN17@w6_uGO0>9=mAP32%oaIEE2=8yzBcqfn1Yo9)+h89qp(<8p z>s$AxvDJ&};UBUuk^_;#p>o^uzq{&JDp!cYRZ-r`_H(a1jzEK<)@=@#hN1Py5Y^R} zuYN1$&g}%#cFl_w=uo76sdt)wOVH(_ia^|{i-IG zR2v$Kz8g$Ji8W5*bW1wYg)@Wn^aH0Ny*O-omO2Z~3V5hOt#Pw#7p*XPqIzzwf`o36JOnvck)RLHg>5g76G=ekOzsSFqJSkD3ll69!`e>XcS~tYvrmG zlV(N$CFMlb4#3k*UlEZ57@wO_Yx3683}RV}pD*K*C`shd;6A(uLqVv**FwwM80&VwGL zB>#MKz7wzEv*yaGijx1SVP&@6UBTO$oo1$Ex~n>Fp3m`y4r=@y%F>Wnm8NTy*7s(s zM4>?FZ5vnTpB*ykpUT=Zk~JT0lwZSxLP#@nzKO&Y%4JP}KMhWo>k+TrgCRM~X59#` zh3L7%T}LIqE_*xsC}~GI&3ok0a=Z!pw#SsmNFbg2(KVIN&Nt5nyc}C?T5d1(J(iXn z1d$yc9fiE63$e$M*Soa*N$w1A&>x@5;UX0^aZ6I(i zx39S~0UuCF0w~6}SG%UF?&|}9v`awccxi7%8C(3>GghX6w?X$mx(a;~w?}tTB zX0nRpM7gH>%5%0#$~G+kc`B#^0;t7Qs3mc5rFpFCxEvQS6=PKae-X<*bx|k+NLwuw zyPB4#>$1V2`LrtDV%;|ZF@bM=t`Nxi16!q41wY|R(@IH-s^ZQ~jo9G>vyDPJ2l8-K z+`89o5um~?)7{~*<;9z{(_-CzD~rzOtyBfu*c2FZ*$6z8_KPS%egb+t{;Ma{^8dh= zh)eO5$du}eB*~E`Ck5o;uS}(SFN$R?%Io#WvD4iCvtCsiYe(0S=a5EGY~l(HfON~a z0gn<~UvB9L8Qbh`_Dz6a?mvJlMb$al;Lcb%js4;%sin&u$u@;Gp1P|t9YB_%6UoKr zk~=pHi7`PR%kk^u-oiDw(7Q;)d@}I>7&=!~D`#G+OR8hx@*BlZ<<$=*e^;}t<+=ho zRHNeDDPQ%-9#wPba&6m&$fZZ2C1Vb$+~7&6ic?)Smn`jJ{FE=5{Isga8s|ozEhi7W zC6#$O-1!?e$vG=v3hKqB)wBT`@Mr){K(fCZ!8CebK>`+ae949G6-@i1BzG8UCw0`? z?Y_KQs`(O0=Qax61>G{aSjwSVr8D@)yrI)b7vX&t7C zn3RF<$4#Lys4+ZGN~jmpJ%PI=#b&@mj`iXM*mCCM0ocEoqUWxnmkJTL-Er<$mP#e@ zSEeqp>rJm1q$>74f`mLn@$MvbeJ*9F&-Z9gOKDsV2ZxXLB{l3392J!|=gc~f4Q&8|*L0+sf5rL6(sMeD1G%Zk zZR3zmxb1o<8*{f?QEFo1OH@gm(0hx>Uu8$K`o>3#0*8_F7{jc()F!Y`0HOrCNDg!i z%R)n$-kQQsy(nPsgLS`7`8gsbLZ;opy^9 zm3JIfReHAv2=XPCxOMwd8QgBOt7v;)>g|8VM1D8NTWk59saa*HPM3@+xn`{F=PkL< z9SF%^d51`!oOI4^Yb)7g1bxQLnz*3K{+py}gIFjot>?CM18dMNVVOs5Gho$BG|~WB zg-MR4oOdp_%%h9z)MJnjZg5`fv$ed{J3X{#ilit-bW{Y>d`?Z9AQcfe6czz6>Fo42 z%BiBojiL=?3Zdt#<7n2hO6F2D+lH+8)(MQ2zdFPtwn;7?fRL;n>r@*?-PW_qZp!&9 zKmeF(x-e55&)5v0;-~bNNO^rNepP!?nCB7!XI7*Gcwl5JWa{A?#rcfk66ogYVM&_Eu56ocQ!S!Pj+2@c90O{yX?Mov0k< z4O4B34JgtkSZ1Fx{f#4}f$*l1mdO>ePioS-+Lh!TeT%oABnTI+ut7qt7(85}JaIGo z?>H%n*c??nmj0oRqN#OL6qfS*-=A>fv#j}fHj@3ub{~Bfj;nUs{2&)-)n&f?Bfc5F zIe41zSQ^ouA4qx0MX8Or27oUqTnPy2%0L`@RIfcmkdlI=Pp8BKFm&e`obNlxhEJA5 z!E4^*>Z;rN%=|0q5K(t5@_njJs1w>j`JYSAyqV>$Vt2Ls%F{ZGOU=hu=Ja{NF%M{8 zJregz1|`k){ygXnZ&47>zl9s0yubgyypJbV^)c)@s*ltjq_4hn3 zC{S5itdl8UJI%hDTV_tWCb|#r(d^2Wx|IN1@08;Fd~NPvP2dCSK8p#tpzN_V>vcu zDO;qCR3(c@KAgEnB}#XDm)e#u5zPH4o@rIs7kI74qFsjORKbssP9cs?efP2!O2p|S zPc~M{UFo25`FKBIOFL-@r{1IeFXP@)fJ~41 z(A`piHpy)5VRO`MfD;Tzjo^@5Z581Q&ytf}dATYwxeGx8$gQf1Jw+=c%K~1dTuw;2 ziw`BM{nIKWc}WXRXU)wIQ@B>Pa8*-zDRiQ7NRqc2mvYHQ(7c4GK)>-d#_1qla!RK~D%ovH6Z-T5yCsy_;iTH+Kbo3PGTD`a`{GjOxj3oH%X~$3 z>#C|rjZ%hs#Rj^(Wxccs7sXes`EN&HU=3C!J9( zEa~b>x^mnj-7gw$$E5~!)VHQ@xULDx1W|NyOVmVPo#vdVRw|sw`9Gl0ZtL6K7+nb@@@+@F52c!p8tVU25d*=hVbi$lh}t?P zEX`D|E;y*1$MBJkAp>5Pue(pLvkqz1>1KMnoD_7M5 z8J@$=c?MTJ3Jhjf-%bDSlFbmEakEycjas-;$u7dOt2#h^m)#x*VIJldj)F422k4gU zI+OtmB@-cwu3*Z>JNMRoO9`81lFT}{zV5a>?g0$7T|#Pt64tGqP%r0kDaAi+0?%oe z4g~k`_L6=nj=^06P?EGg+1h_A0|tn{ZnvM_Sa{#WGXerITqRYz7_vAXX+@8#1ky-| zvX6FUfCT{2O#qaAZqH5c&ioFg^3}?BMNXR>6`Xx`(v-4omPcI<(1pG6Ae=78NNI$- zPQ7kfZm)tV-zyeXoaJ>q2;y3{XG#GKSsUsfE!lZJml6{if-A5i2bL6P>uYQLMSZnn z+eRkYzEo{#>M-50r}xRw)h%qC8YXbB3Kh5gkMD8P&ym-(lx$$>wPgKKAA*(-pGFZQ zr3Yt^<;rFyxJ3&2BQv) zRjk5E0@gWEBD0)f+H%&M<19F7?3^6@;`rNnwh3>!N;Kfd zUCu?iMqrdePb|z+-3Tea2gEH(e+=iY>gq%fbkjJ-wHvM|5j*stHL5%{Xo0WGW`^F6 zK&@@Uq~5Wi_JVZ@n#D0#SI}68A~`~@%s`9u{5Bi&w@Y`*oe3Sdj;e25r@K!DV$QtC z{8B>QbrL(f8@_Vl!E{<|+|AG49p;1uKi;f_#!K!EA$Y zB2JF^YIfB!$@%4QXosWl6F^0}u4;;xMmeF)3gS_`Fj^c02Iv07V-juW;7dt$iUXcp zf*y5Ah+L$PrD#rXA&fDV@a1c&16xCqj2b1&d-R%nD3Y^kU9}~~@ZEST@@0AY_ZKv7 zU~6m!`~jVK5u6K%E__n$ec`m%Z7PVzIR58H?)X#)e6{)J6i|D&>B5Aa!}kg+lO;J{ zFOmmX=nU^8cuFB})_qbzRg`;=bUgCgqo4T>;C2Ixs5N+(uQ!p)S(4Q($J!-XqV5a6 zAVOHYC7u8^t=og3LXZ|9tADj{CmOdygVLM&J%#wQ4%2|U5jHi1ejq6st~+-Jd^;C@ z-|zn(LxWJ?3h&dgpc_kxXHsm=wZ`RAc_~|?#>4%NiV{l56Cs!M$wwLc>Pm>5Yr-mM z7|2gZ2p#@cZC)oA!aP#r&11HKwYcOt6w*O-y>KJdVR`I0f_C)Q0$&0l*P}C!W_(_{ zi*iJM>vB!c4N@M3?0z{VO@j-WF0O?Duz3nwT3ia~Y6{Kh$GRe1F{SqWB@tTpD5?p(j!}fLl4^q-6$3 znA=davEUyUQ6oXm!;sGv+VZ#DE}om`gi^%ivGeNE9XiMMW^G$UbflEju!KPEz7f?( z;~i?io3&X5kaMja`B>b5VsajQrLbtL6e*8uOgpUNh^13WaEEGc^l+zmVk^{kdBCP; zo`M2U(t>QMibdj5aszEpyrfE^{Hx7@<-$E1C@9-TrBIyuIX;rj0A%-)u)O?y`p{W~ zaL>AG>Pv-Ls~Zi7?oemQiQ|k_A;3y*5KSOa`medTFLykY62l~>6~vlff%Yt-TsYF zqb85zMF9J$bf|7Tg@Q-w_sgZS<7YOYIv}39iLMNz_S|2ufXt;~df3_W==Ga;n!^BV z>7?1b4o%#hoVFk)yHlb8Cm6fu8Ev$fP3c+hV02Ozx;(8Dr|+4QW9RU3WXG`>)UwAl zmJ%D!!zIT-QXofDQ+93+Wh_T`DJV8%FLjmcFJ%w3dC9kgUYob=RqUxrke4`NqetBt zaHZxrJf-*JXRL5qRkbi_=Q!M~sfv`mx9yY?OeOU|#8MBqO8u9j=llVJk#03X>gsM? z3NuW8|NU}pC=2a(@De7lPu1`cQR}KcgXBOF_kJxjo-ti@b1iSUS)vMO>yNH!y9sWz zli}yhSfhUJ0%*s=mzEeSvzu?B7sqgAH%|~9-+nrMJS|k>^noUX6zkhq`(L^wyZ)^0 z4TyYSd?kG`G_-bkLd9XO2|&2&Po}L~a_y6Y-QUD}zh$RBu1sjz4fqz_hF-s9kLJoR zWj?1@(ri!R;A*mxxh7D6-dh~kt{3O#Us#omE=_qzGf3UuCXK~8;vOklUurKuoqbFc8@;0G3UrI2%H z-<8}+EeQhVqaTV2UOcd?%2&Op9=MT>+r!)QvIZxiyXG-96>C<^sc>#@mFTr1jouYl- z_Fokqy80!b4Cbk_t6cHb2;7=7lIue8bPCy2=JpK=r+^cLY-dy!wf5Zzu6zMie|cc4 z98H9=I6Dt~)B3Z3z zDJDl}i`&UGhk~qu95idSmLew}=PYh2 zI`DSwY@3!}YO}?^rI!2@iQs`zq`D0bZmLTSE=_!@e12Dn!h7u2Q9Ef9ujUyk5v(^8 zrHwoABvH2(NE7z9Rd-g_%s~uDb{IA0?u6o*$!K+ z$4fzUv1-{Z2F5A^rzwM4!d|ld&GGy4Poc`j@$G^v2e>O4!bv+0&dJgwM_%p@fdQrZ zxJ+DDl?QGeSM&mx45RNmud`5$YRg>QJMTIba1p(f7iZAj07AhQf(7Y&y*k#o1FwHI z7o(~(yaA8T#6;b0uIwJSidnA$sWIofV~sB@H9N*#z>@ddn+v4fzMYwrtFQY5hxPU(>aakl zkOvLsY8EJN)Tu#Tr~3p>p!9WqN!_HSQMAyYprdjC%So>Xf(KVw0wc?#L5;b{}jB>&(h?vr&#@;%D_AS(ys5i9|ywxsh(o(pG>0}`<_`qD>2+I<5J@;6%3MpGRfwUfv$O3tI#9pl-Z!@kwan9X>@pMDW8%Ol zx#INO&;(wY%0wv27_u*6753?}GOST3yDRUysehCku2KG~7lp;+%! zHQcxIx_e7Pr(%7mcBBk!i$TC`S7*r$)I8STcna663#~lR>ve;71+~_mtwH5>jH;kX zvI*~!R1S0Us62o_7w}RGduMU$QZ&h>Vl{l5%6Y{NdDrk{`4ik_$z+v12pNiK?fo+f zbwGGaEIZ+;<8bP8=;;Elv^QA;Aje0V*Ot*}43oG`d80>Eq;tyjNg}`NY8rCdnb0{{ zrRbT|83xft)+dOTq3w-+aCQ9=vf&^22rb((yDz)`n$sy(sHbz;O2FxZ;Ykkj5ru*Q zBxK7mfT4P9N}5j;Hg{47%l-Oe$4s5zZrA6LNO~w|G!=H`kI%0V0Dr|k-S0U5fsdeI zE&%BRZRtLHg}#+?L0ZXE#ydVGWnCO=dGAxp6|&yTz2bukb?Ym|It;X*S9QHZ`6*FE z9aT`;4F;mv0gE&d0EOHnOAqOV>&Nc;??1x2!)2^Wo@_1!>hMZ>Txt>NK6*f8`VnRq zaF3#T-x|@>mqw)#sy2;}jCR+$s1xK3cQ6-uN?skX%Xy`v!v%sE!U#tj8ZwmfH$H+L zLJ=1w(*#vm5O4&m3v^SSpHALQe}<2+r^YoWjcVN<=b%1J_OUdp$;qwQmr_uvRQzEJlacXTFvF0piwk`YKdG| z7#32U1BNRp*ln`36bQSV4aVeNTJ#4x)H*Coai;BH6<{AZFaSC$$cHM~t&7Lz=W3U9 zCcV}zUDV1*)T`j|%4ebw+SeE59SAimpzAIziIx(K!@&=@KXFXhe@FL~f1$)A|AgCi zrk;|a-y2ePIjYwuE1k@L-$%oEN~EYOu6sGzQrV3frrHI3)M`^HNkwthX)X(2t>V)5 z{ZkFetPaJttJdf{-j9`ANXANHs7m4Ub?iKqTkAM?R*nRVUZ^r%O1wcF`2v?c9|guc zCEBa+v3^oJ*3La*h@GluXCfk)_vqVtmh$ON0n_GKy)C*dN&$UgdCS!!TFhI&d3l0_ zSFX?_et*d@^1f?-&0Exc<#kooA`(RWsV6cQV}7kwQPcrwbw7FHGrvp0nlC*kyP2A zG0&%rRL^!V?X@ev35==biI$pP%Ha^mVbr&jp~yk=e-FPj_|mR^CD$7z=Ua&I*S)Gl zxyLW8)JvH-v?^A9d@!vHELrs>J0upZHOVX4uh+D>)K-8{TPfc@*C#7y z{f;JKR^2AounEdMmvAbj(mpo)0YiJm7+BiTK5UtmZ@j@q0+ym``BYTETQ7d z%4qR;^QYX%6E$Uc5#GK{?KV}AyHqeYr&Qvc8B`fC=ivuw&-@e1Q%uks zp>RI$2i-Mayd9$58u+v}KD+%0cB5Z50mo12l89Jgb&YBBwIGwIsVu z1?kZ)dvrZCuC98MH%FFwF#SM;4tP%Y@%LeOQub)KWy&{}qIXLi9No{P07_CCfVZQ! zlZ-2H(9*EL=B@$^@=xVFgG0d@I(NBk#G@84NH6A&82e+f-y4xGQ*T%ILT`lcH6P0=JRXw9-&gh1(=&ol|9=Av4fW@Acjzns$rI2b07s%q*pm3t&AA3p+B3a^3JA|+0mtFlF40u9xg zH!~5msAHRLEDkzgLk@^$1;iXq1b{b#(a2z?HcmxWZ3Ddciwq*v}<25+@vs%f)|&CXcQH>wBO*;qB6j z&KLFABdCLK^5)K}%j@%j`=#pQ;3Xj-Y2=?cSccZax9gcck_T|^#Db|?Cj9}c{Gn8jRIR6SlwmVFDqe2MwP>$1-2BguKi*sVc*e^d(G#s5?>B|P7XY*eyl@TcX+c_9N(7I^ymuKxU~R!B@PpD zOzrSzx|PBQ67U1%%S{I6|LWvt*UE17^WM;P9>g!-+XKo-F`YfB5+i5GhY?!c=Gw+| zWgNmQp^-C&7jp_Ms^xPYrZy`t5MU6ssXi`OA}*Dtp6o=<$=M<Ayfsky+8~6ccTwp?;=A6X)#Q#OD;r@|kTjkX}VrcJ3 zp2`$1g}0`=+EJ8{EWZ^@8b)KYdDnmGamU>Lt>v;p^~#|*O%%v;14aPOlm(ta}Te3chQS`YWzf3XKL3BQ^|%VJ^n|pObUL11<1s} zx2df3#dW$Cjs?oLa4*p0~Q0Wl%&>?3o&cN+;Q@?=kP2^5o5pi@j!Fn&Bv52gbaJTFusPY1$xhdyyiBu$ zsvvE+Ee;OM4!{x>7BUJm?I_@(G=`lvf{Q#Po|BZ+>_+bM<3h4o$74vH z&5}^_y6NVo;CFeRWV^bRSEA8#OXen@c(@dtxZR}`*pS_;CIpJt6F{e(yS|2N2rlbP zOU$NVVrccLr^p+pG!U~5P*o0ti02-9^pYgPANwV(zHaYJW_-T7{0RFC1>xoh`S~~@ zGK04EkU$p>T2YMNTMY~f1!#Wuoh&(kZz?%W-h^R_6WTeT;4VX)9vysFFbptB+ern= z&sLjO(Q#*iSM4RphUy2_?^6$oWcS+s8~}HnVe;-ths-LcLCGF7v1Fucs=u=)F9@*i zW>N&lZ);eyf9i_PW4KOEy(Gx3#_7_{&b8bnVJB%cQM{CX(5;fvt8zM^{T=${*{0m8 zmfmhYRDmAYmm^e$u;zqKiB$8X?Xy!*S78aITYu)^-V{~Lksz-mU1?cjyhMKEyK2|^ zF!P-~jv7jJZDpggYH30?-@C zjq;e+Q3Yonn~b501Oj@}Jo4hu5eccM$8YW5^>#_lJM?Q6Vb>G~NYhhM_T{WCy-lu$ z0&`s&!7DQ6b;+$7x~dB8fyaqz);TVa4eWH3PhW0ZkYB)NOHuFeqa#N-9y_|hcoxRj z-JHAhRpZ`hxpEX*Cvq>B#2y8z__#00gWS;+A_#Ki~U2 z6d@{fX*6lIK{3GtyvDg7ZKd3VwIdbX*RI@{{-adRM0VnejOW40yQs~&Irg>%y|^!K zjE2v)a-me+&a^LeiF{er5eeA@Xvt@Ddv0A#F%wBqn@UCR?}Wemr!1ptlSLY)O0>NaoqK9nT*|)7+~%4mXwP^l`r91 zp~l^zm$8AfT z5qnlg$0AMJvyZyqwnSSAeaAmgM+_M*#Qd#Gr)$M3Qxg5J@JP|Y$?*SWunEOd$xjLr z!Ci?bQgXPY#rykhCZU5fh8xBn&6B2At!ki1C?cL0ZD2V?@)It8diG&xA0!QS z>H@1^`=bgAp)GU7hHC7@if`+)qYyIZ(@};SDNBxk66$-&2(rImV~qElR9;ln7brPE za$8zpO=4x2gqHp1?5ta>_`2YgYa;R1n5>T5QsjRoyyt$Ei}}Pz-Yl%`0FAkQBATvXQwbNbOdj zn2_sJpa$X8+e5Az87Gbwg=N-e&bgi{v6^Em?(KrzOtq)Q+}7;uZ{ zb)I~=E};7Jrg|7R4^zYKOjLLPyP+0YB-flUfh(VrT$fHL6u@RWXn!#U&0_(YAIqNC zF|!)4$wHq8d`YjNd?iA>)K&2d)C89n)z#xnGN>=jTn}KWzCT8ei!;}w@1ygM^Q4ff zf0H_CQ+EzBuZz$&WojTq6$7g+VO>dLVB^LssGahj5>_dPqHJN(t&c;eSbYdP6wOFn zRRsmRrZf1lSFg<{=VI01HUm6<$MKskXC?h&PFwu9uTg+BDnwx72s@e60Q|~?gv|}* zMd%0KN2laX{>;Z-qYC4OGOdj6!-6GQaq`K$IewsHf#kub_qm=mr9Jg(mKRzYie~C|G zyKC*99*Vo8BA~w1k9-Ylta7O_uR(lQLP~oDcT9UHpOC1=!`D;L_R|nUg{EsA%^MW8 z*dmBKR1TbAP`v#66J8=RF_e#26?`on=_z~^0Dg|*Zn15BX&9*#hQ7Ak(yCsuY6A0= z1iIlIazuoRWDaL}+qM;-new+Q)uD_fHT~Bd`g=-0Lq#H#gb&>iKUlc92h)06ITj$N zsNqt%lt@)n+)7U0ZhobcE$(Ed%+@_tS67#WoqqWm+726z*YN=X=_7F{d6Be|D9tCi zJdGu^nPNO9Z^9X+=9&goEqFdHbNY9J1TtMlpAJqH?LRh%)a*KSEAp*P#v*{K8D$~! zDmvo^9vEA0^DXZ}AP8F7x&qpoFc3%!cw;K_2i*A7Zd|GsQsHckfyiT1I#ja(tMy1# z2fa?)=#r+KUp!q`j&F3%1~8>6Mik4A`{qkt1Ej2+P?tBZIffg7#P%gQ(*>g})tacv ztNa^XmM0WAd4M1x%RgE9e4&q@qK&b83dH+p{;FHQZC{3jd*WVYtA(bpSG@?mue0<= zXUt|Y`NmR`Y*2QBT|hpZj4)%-cxP*}aAIjm)Aw9MB}*}5?snG{E32nYV04QVB*w!g z&40E49i80Uk%+=kw(YZ8-IqF>=GtI}kqBID)Pr!Bci7zrxw-Q5$yo>eDTqbP5WZFe z)h6|)e>PflXwxp07xw;*?kn$Adq^i1%9flS3Tu1{MS^+zswh1Jw8Kv$e0)u| zmtURV*1)kuS5O5nya`QZHs}bF98cJV;D4W@MzCR3XS5|Hm8%dAH~TX#=jF0a0TUJ$cY+Z&~qo}}R z^Id_GTbVL5RaOaoJ|P+9J`RzRFdM5)R7o1Xy;L7m#%F&@P>;S8e!o<}0rxD&m$``G zn%WSq$r7U+!RdWO4WvLc-Id{oh1hVt9I6&44 zec4a+A7n1!k+pd5`*yG4qTIS{UfJB?MgR+sBMbXKq*{Jsu{7^T;T}n~W1O~w+5${) zoehk%B5%u)GeFM*d?&1^H|{FSl#}EZD?jHmNq|bG9qLCuV=OXVswX$L=lB~^iASJ%Z)NY*H(52Y(`KP%eb3op|@e#zy;X}HKM!Amy8gen(g&OK# zP!GRc!T(Qg8L>c{uYd#4*zf<-}16@bGzJHr3s={BQ&UhsRgLa7#lM{dt3dT|(mI56bm44iuU z-GlzfG2JHw>ntU9^m=2f6p%pX;%rwJPk=5p>^4B{ju)t|kB-37@{f~lP6=R%vVxe( zH@m?ipCn?-j4nf1M_0w+r?!o5PpzyyalUs58B@VL`*jgQb9k49=mQ)IdT z;oZ(S9$pQw_}2r>*Lc|E<1ecbaC4;5aqrHV7scQV0mn;aKtezbF|TJmdIP6vslKMNI`n{uL(LLdjOyXc&kLWk}h^z|s&q#tb4m$siBFG4#(-m;rSJW3e?>KE_zwX}$6Jc7?) zT4W4UJSZwFh4@+#-I(je>gzym`;^aqZ7Dvb#S8i=|_JZZKU>8X;EQ+vgn8% zg-$K6kvEkK;E+UTXJ{(m$#FhW=Y<;|8Im*16;gaj>0b9v$+?{DZEeTVKMK+H%Pu@= z@n|S|%SO}iSXt=Hu~fFfbGzV485WXaZ=HlvkXjg5sA%gJv65JGPsJ)nj^p^=HdOT+ zJK8@0{~jHX6u{R@LA8=6+ra<=clAoa$|^Ana<@bTv;U=I#S5g-pZVRg+NV8qzerhC znMcF7)_K`zzSaG@?IEQ&3odHA7N)8Wr*2)zRfL+s*y^o{G{QX z>#2Qrs1EF0+xc9e2t~as)uEyQ<+im1rs;ZNCygjbfH{Eyo-pztF~6UI>EDgQS47oMSR!da^Bb}i|uM1$_! z@s;XC+NxldpLxUP4>!$;T=mj?9>_dikODP{RmOc0qv|m=gs`v*?N6mX()djk-Y&I^ zi{bXFmKo~DsAb>4ff_w4HZ#&g(KX4h2JF{n6PfZ3VQzWoL<)Nr)srOGYmft0=7a23 zn~v~)4Lu^bc3Pw>BnjrCFs1%|wU%?Q@g{*JyIY(^=})eF1EK1!%34Xxy%ZVO54hLb z@=?v@xAy<(b74RAmOj<uXhl1z!q9~=L-tSD+CJbLdrT1GI zPeLLY>s3J{)c%Rn-cx1dR50I~Y>^6X4t> zDd~Tx6(?=J9gj4u`C*>gd@K>`=yvtks{l_DLYIyWr~YQRkB% zxn15*jx3AC8#jrMc7wUT7zVu6=A>egpxURM#CZn?_3~)^XTRtfoSR@@d?=x@|YxS=M=KeC0ZeI!P0_cNpFYI$FWBFo7$|^d+4IU#Sks z9nMbaT|;%>p_2U+iY?%kkQU(G)p}40k_7E4%Kf$QWUrFav=B?5c0WzmF?aI#I(zHW z($%`iT`7=b7yjeK3SU1J47I}KveAm^SYQKvP$3Yi!km*wP}LRz%qLw~A3a7n>}Aa@c_iPaZ2qU-bT&fYCsB$zo5^wu z#iW$BDowuoR;OH-Gz9^v)Y{=_KX#SLoC*M%mtu`C=@yr4(dkGbCA?4@cMTcA>r{<) zP!lKYeBrttK@iEiID}l=9yAy8 zsoacD#-1K}6uWu~7v*r?v||0JxQHm@$%e2iy;bz14`irsd9uLXImiPpQL94y>Q@jk z@#x!mT+-%w>IiMw>Gn6NQO(0f4!q^p@SRnXFR%OxEp=W!KD|Ni?aBKCHUnMt9eDXz zHDve*GN1qxAxAI_OJ{Njn4!)0L zy{nqCfN~^(RW+%tJZsXL?w#_rU9hc_>u9q384J4m4s1+Z4zC<{Q7Y5X=y(i(|L*@| z@4bFCz0&MHYt-!Sndu1{jRi>d#ejlzA%HbIhw}750t7=hmJM0gpRi+hO_MBwRqW9~ zx^TAToO2Fx_zP?W!@jT$8_qfBoO4d=w@;C*`p)SI9MWHLT<9iQ=hO-ByTkLWwfFO^ zh5c^X{*KCM3Ir6hJJ;OaE;Nfoq%4;)bk~(-24*!C$8VtuJR#AGN2IEXE@J|S&s3Nd z4|@fBoro`_OHQ%H`36p=$onw;`(?u(A9`=Hdp4E5&|wQ3Y%RZh6)*a z#txNPLbr$&(|)BzS~jIyLRYp5ENk^nx|mR}3j%T(y+RDlIqjlOpew~I9&5;u-%k`y zPl}!g{=nKeJ<<3lDpizYD1M~rP@xs^IfS6@a)jZcg%Ski#g4~ZKpWXuYG5sIYcWL@ zQxe|5j(#E3p4O?yqjJnmE>tkd6WNAKATK$*cynuPeit8?uqHt zFBnz^2bfdiyaXe}qb$;O7~u$-qxowabp;bGfsDpfI7fim-i31;z!FH2d+AC=foL6x zL2N~^LIGh_s`(s!{K^^{;z6HfKvnAP<1xey0{%7zCXdN8ax_zcg&VJkH-~kos);&t z8iZ1zqf;1_`$`L|G2}qQF`1J4I*oEWZhX#3OBH*?LapxDIJH-k%=6tlF-=>4i9?uB*qiC0Kz812PFcn z$xT(QauBs9Nej#h3m~=t&^dQgMiDn7RzLL0iZ(tMlz}`)44x!kxJ*tK%}B$EgO&pN z*)8GdnJAMIEpN&zW_L(Px2b3dwl)O^Wl3>xa9yqc3z&1A;RNKOr`-}V52be1Wepl0;fI-n5lGDiI&TGP3~9F3NdI&olDGbq?^!xEcLCE+Hn8*Lnn{Ds2J9MwD&oe@(!Qk+s9A`bP6m`39@ZCbSR` z)7L~fJk<2n_80=5K5mPj9xmiI;epvt%SvkC6b#W6R1X{St*9dmx zn?%N^mb`))r%eNGR3ZF^Ns)#-tz!XXclG^r{)}cowyr~SNyp}*pf}3KV+6BFg44IfmUuJTf@5EQMS!mM^44AVN zD-}tbx|TnL7y$dQYgheCSXBE}djxkY#rTX15VZ;Vp)Djh4M+Yc+mQmHBk^<+ zX8l_6RQy6RB{~VimP#*2f;3Y36;4G*@4Yn4&*}K69Bj14kfL8{_$t)jD?m0LNxCp7 z5Tj%)T8xJEoAsb9il}GySiA~;6Phy6ZyD|#=zyi33G?F0;=wOjFL51IIUyst-x)MNhSINLSD3N zBr0~fsYgPBVg$}+@YrD@6ns!)?Km?Lb6Y(Tryj20*uq?56XB?YLv|lgO~RiyJ6UE(XzLc`-_n;WS6)qfF8nB8d z3P+*3e(*xytkr<={6y}WFIh^IRJ=0^ECk30?reHIbW0S)=@=j#2~G&}H5$tCD#HiQ zE5C0{_r%YU&l=drD{_l`;vcL4ifXrlizo)kx(1w%Nyrewg-bOryb&>mfGC7;2|-~l zJ;344M3RDOtJy`R%X)E-VmcP$#}dF{yC)J@&h0*D`1&qk2d)MZy7*o@>)05q6Pj?x zq+JZ19R0-nPz3^_lXJAyNpI*-p{W$^B%=hq1?Ad8 zc_U&buS7seoufowq`7c^C<4R5fbEn|>ig)Q>*(bo04j9WPH|c_7!XmGhK~Nkm(M2d zZ}cN*x>lIaM$owiy1HW5*BvW74q+&r*7`yyM>BHTQ|gfg-W=p&hevo8u2ljBBNO=$ zK4sYe!1Z9lCl#3-B_2AM(W@D!@(znWUoQVMOvH9>w7As_eA_TB2?y^&VuZ)ofNEs#LvXQh@w7}7FTAHTPofS51 zu|dCWczu7MT{^xVkAV7(eq7dfG%qwjt8d1Gqs-GvL_4U^ho@NyAxf%u9QWNKU_c43 z+=;GugBRQ$yS|w=d~GWZfu^J3N^}RALV9Po38d{`FQ?sQPKPm)T{x)v9rT0Ap(eHqF&a)QzRl*YPl{V5 z!BmTe5k9gLGXf7eT_16z?4r(F?hgr82~Bw?L2Z(2<7h z$4hc%R895jB`Kl{Pb-R7uc&8vS-j*dKEzbPU~BA<5kuSToWvv1o$>V1OW{j}ypYoL zHbod*%Z}cFs%(t0G;;sA)fS@j!mdFmC2NY5ZV^9r-5_s|*&p)LpmF6MqfDj=SOO&o zn`?^;?c)TChQ#af2$rLhrM)D)R8f~TqS98)=blUik*|vE}RoL!-8kE@Vme|1$hD${I+Ojfy#1 zB=()OXI9SS@XpXFkuexiXqZz_NT@t1QESX7v{ooKJuO31NEZRMeCks1GN-Ce zt3@en7SuR7JUVAhmTrrNt@BnaqR?B}vQcUe;G8sQc;rRAD->MqOx=BlCFzwHhT$F% zORt#l0tY2D;w^*Us8?`>Kp}Woxj|R{-iw08No~IZ=82A*V$Bf+Tk1MH%qGg&#mmL` z^}A8IqO}phaGXgvVp}`#MFCGQ+N~xhv-(}6=qRk*4R-eycWaJ5#ePx#LIG(SpY@_N z1uGILsGNF7&KVZ6p5jI57Un`j9lgjVQn5tD$6CU2Vd|)L#_Q|I3>1akqa22dA-C_E zGg|4v9~)10Oo&8FI7L);c9^t!q!2O6)gvg;nFHc!sp5FApfR~JYAV>l)r^dP;IQ9T z)Z6qUhD8WZ%hO=Ruobtuo@i_i>=jH<7DWk~A_nnGU^N0~*mEpe;9fJxWR;kV&XMaaE%&Ba(z$^Er2<|BS;KL{EokbJAmq#$!W*EfmJdTBM7U zA<={R&_nUyR3N12>cHO)6#v5nA#lHR4v+?wUW#0bE`|Z8;_FJ<( zU(eqD!FQjIrlI@zA#XfpZ-4)XN~|BQ_s4qsM}GF{hu?YjK^yDw-Lrn}yX(VePoBR2 z_K%oH`rkVrJzI}>{CD5}#=GtPZ+)bR|DC+r*FJjxJMTaJ+4tZ6`nylw|IY9JxewOc zU-?u2rcM?Re#cY-uUE?Uw`GtfAOpP zllS%C-}ghOOJ^NK>v4crSY_-CZY%8+K4*>RR8SkEgZfag6?HmRfr$AjW;G7BD7EAI zv2m~p5K(Y|Xu{zs3PyD%SwV%MWJL>)5-sKt^LoWi97422ly02&Z1@FzQh1#l8weB$ zli^_EI;B*oW!b=`A9c&qE3Z(>9#D$nI$XRo9tCcyN-&`{n$z9`s0rmz#HPWup@{f< zh03cH_x(?vuMeL;efsXbRd?%gdwJFU+D}*Ar_cL2ue{eF8hj~&(+|(}Y<&3SgV!iN zz4f8y`+jWteQ!PfzRx?FM4ZFt@$9mvd$@^()XDs$g|CyNr9{kWoV)ws;1|?74RI`Y z>@OV*+<76|6k5dDa3f1NX-T2R$0}F*(}V~_TACcc=BY2yPPtklofeMcogI-!5QWmX z()*Sj*PBMjA>x2osk3Obi5#t~$}Jc-C&6i5h(Dou8&3mb!KjKWZAve>mF4P=8%3cL zAqsBl(NL&*Rt1&oX!6}B>u2A4I@i1Ra@dW>?R!L%PoMWqGrX z_{teTv&oOuuoTm7^PMVntXZ?W{2|UQf+iJ>5oP;iPYK_s+M?+1pF22*&Qs9$n4JfX zBTkQ6(ehZ?pfp+oRrKyOsJQ594aqobm$|ZSeT>MNogy|il5Hx9WB!pnvOOvF%O5_9 z0^^A8QJUqJ^$QyrbNr_;Iz)ahjyX7-3z_Cr>KQnOInrMU4wYb>FwaN_02mGtIex*B zH&L_FmD>>Ci6|4K?9CB(q=SER?{WDf{xyiLZ$kYS6zZu9?E0OR^Gt=0q8E&jPWXZZ zXfvML5T2h-ywQ)d@<`N!8|zTjvrQ|sBSv7UFT;C1D$qHW7%E6^QI^;RNV8XfDweh$ z%BnHY=BoGdM_FP0IHu5im=?F$9R5~{>dkV*(?Xr$L|7Y>2W^RxJ+)6c9oKU~=vZ-x zbiy`EKRHu4pKyrJ_&?$9qZnX~Mrf^c>;<)b(G+#a=(@{4)a+qU2hWwfVKphv|KF6TurTTWymylMcSCsj={+`;>%ho$WZPWPJjK>SUl2&m@8zYkLFr;Wuy8wcccp@#WmWbt6lz)$LCIa6qA;dvyfFv6@5TZfah-M}&C$26*Yz?4!SjNe%i7W8(CFWHWJArZ@xLv!cnv zx6KOMUH;)yydofvZmiOY!eVo6Xlo+^NgX!2nzUQ5UMvdU3!;s)s;A{k*m1R{!H$8R zS!C5FE!bLXL(9OU?InsZtVM(arBVvF1T31;wxb(e?|1pf4yePZPq=QBX$(gSOuZ0m zo-w9lmVnBJman)5eK6Eu9w}(=BK~n;QQzs^Q_hPxa3eQD^}%U8TnjDuC4@m)(-M#{ z_z;W6&yl!`F8unfM8y)O#*Pgx?BmQNQI940%8dC}`pk2oQ!f6ro^f9C8fP$Ma5F*7^zerF*XgerBDC!?scM!V> zg7&$iSZpA$)55s?lV@FwCdjeTq(S&3ogO_m0up$Nxfo$LCEXUxz}UeJvS`^FXzOuR z(+1We5c6=6idxj?3WaQI)84N2&=ZPt=<#e)7;WQP-0vv@@CmUYu@&$oJ>7x6Q^nF{>{9M*=w_iXS(cWvxB`Xx zp&-+maL|B$Xk($SA}osY=-l04o-3%X;V^|ly@a}*Fe285;vC%xyIuZ)lPIU2P1GqM zwo6&N=-)tw`nVleg+`clZF}WLZvb|J)Z-GY{6JlV@J1^525Ir zkTPc9F1oppjuVMOFQ}zbFMsGfg_{P^KrNV#orjRRV1W1~wUw2wl0{wm(Cbhxm{EYm zKyXnqgU3*XGkQ$D^pzS|n~;4k-68L!-@B>c9;KL5MQ#)Ult_e>o5E!a^YVuupT3!f zdb2=36O7)fl21fy?6mD`RV(i6V=;(L9UJz0$9RzDZu&uerw}5Tgq^*XA)3MT#?l*{ zGy!?id@s5PZLn!IvP25nwzz(z%O81s`c{yA#OY&N?P?4;3rQhH6NC4thA5zHac*e!FVuF}6QhwK5maT-iael_s%XVs# z6?~}?)!@!avqHeww&3r)MHC8WJ$_vN!N-q(!{-g4wEhp?r;FyKnzJjmDths?7iGW8L`1xA=Jp#QMRvUXkge>i-01G;^eJ-M+E+XGF zND;AJ0jOIaz`OuZZ@=|ifa2N5?Bm5L+0*x~QPizR?`0JA1Mh$E-ea2un%t)#>Z>n4 z@hW!u%KPFbF9WCF@!NjaZ-3zGCKA>i{21~q)wr)MQ z7|IkR##RJHK|P)TqVpI@(B0K(X*YmY?$RRNy0m*%@gs-ywZU_ResbYnYQC{KDGgzS ziOfa1{4?j~s8em)u(C<$Geu$gL!fa}LfN$)9fF8z=s3p!g6#BWS4Y2y7_3Q@qz(>F zEw&Dd+;^qd{9+6M9Va~*=TpJdiV>kWf~HTKJetct>p%Z1+<8nR$B}apDyF4*ar4l- zcw95lOniYWvXz)!g2odJ-53fg^k8V^i&%+*;$N*G=%6%x#TBOrZ5Gjj)#=L-Y!gYP zF=FAKnYnxU62;={L%ti2+{0VWUvD}8*|yw5HB^vdvBwk>8j9APUU!c*>OiS>*T#hx znt?;JhJFA|Eqc3U6eb+jqV`B^;6|LH*{kP(3xq+ln}I`C(c+J>_Y`Z_K;*(XSibyo zY&rgJ*@Z{%F1V7SO{Ov00!2=ttt96SCFGEE0sdidsIiIyVx_xGkw1e&C+9Iq+@YUe zbX4=i;895KTN58LLb;+2u5eP1MS8~hY+e5O<6g8Bb+dLjM0b?Bf+FM%#0*cY;D4V~2hWY6o(06K@MnRgube9Gh6Q zza|s2HDsxw+nf^iGjVt_i$SuiX#~?b6F-vF?)pyb*4H@KcVgd@mEL;Xer0Fc>x!Nm zKhD*v_{O_WpFUgftoOhBWdGa)*nF5JsEo;ySfC)6l9|i+Ak{5~sg;Jf#8lundCrVB zh5oiF7Kx5_l#r3PK-fGAkLe8+3vHvTvX*vwn}n=uIxDnahd zu}&0mmKTg}TzJs`H`g|9h+0!7I+ieskU2(5DWh+TX_=|V+;7v{n-`itf;h?|sgLRBtJ4}Zt@cc7?Ij7_obPK>KLEn9@DY!+>T~dQTt@-+MT;>Y6jzk0%FKNT zNwGb)0?}zUQ_AE5KqLeiCt;&J#2adf9lvldB8i{P=GeXmAGZ&efAQhG^cvu}FA=P~ zzuv43^b)3W1ZdCogP(&lOWf}g?rK6&3pd0r#CUA4g+_+Mnj)h1C%A(Pg((&#pT;t9 zM!^IJ97P@dMckob?X=U-2#71vg~x%q-uUD7_N#u&S!TB;z+VbJet#C16T)=Dg$+$j zT%>cUnVPn|hXr=%fu>?bsfb0QTqszBXeZu^RIwXPKc2M$)B>@zL|Rl1#VY8S#qHf` z(tAbXJ0Z@mS2liI+ML@b6=E;&z+L_CFCH$w{f*yx7VA%*_j~&G*PnjyT=1g3`@4VN zuX_A_uO8T>js+>_kDJzW+*ms@B&ML8hJ564BT{nAD@E7PH^LJS1(act%R|L=Vj{p4Hk zJbT{WpY6kW?*!+@gLofTrt8~|^cinE9&C8z&X0w@a9-g;Iyw|EwRVvz8;Y|Qr7=uV zPNlZ%7^Nj_vga(5dIO}4Vmba}So0_aYENy=cdDXqsLUeuthg*R;jIR>itPm}N`;^3 zxK0wcew+uB#E-vNJs-UL(YKzw|IU;5K6v`!L(yg=%qI%=^?@ti76my6<``jQ{RaVF)qpj+z5n3#nM#DG`mtkZXZh3?*JD)3=DnpGWq= zqnIqd9kK#F?Ac&hcz(9BtPqNVw-6%cS1XB|UFVEjKhA?w`(v+8?b%2V6kv|Zqh?KN zFo=bftt`FwQVuU@SmQCngP_&j_1mLf&uf+t-}1+p%>=wUki^j%LD_2vyNX--Zc9J* zKg;5Df^>4|b7a@CG2L3cpB7-gnAlZt?hPsKhHh0IQvpVM2B~wAmq=YgNCp9Y;Kp*= z8)8x>ndUv0O|F{O@xm2owqXEMTBO=bZSk#Io!44d1OF z=fR2nV_%)v4?cYQ-jin!&8?Q+I#PU9;iU?Bq71HW+EKn03G#?&qMDhtCZ|b@BEi$g zVlbQ)t4vObq6P5)y=78lM|l-<5Hzwj%FjdVBaV#N|DYI5Ag2Q)l@jLF+zydRtmTk5 zJfcgth+aGjtD+w92O81uV=|Z_bU}Y%1ifm{Cx-(y78g=WSA% zEt+^8fp1*mbnhhRwvTfK%6_qF)oomMI{I0e+8N`UqDaEX^_1`JVyPCf%vQqDE+i#f z5qzz?ou%vD*#k1fk)mmEcCemsudPAm~hs1Xc{4)4KNQ#M)2K>26)d zd^NGRew?d`{Y9r$lz==wQBHwV8Q-JAnv~x2EAWfqIEy z8;b9&-GqeZ(mILQ*P+kl@HJUl$aV}@7Y_|hF>3u z-S}~?ruKVhRqk25k^u$eiUo=Z`i~YSJx|7`$<^b~L@9<$ssRV)R?#N( zv%@h|#{y3bIuzXIG_wOiGzymmvJ^^&vg|MeHNl{mFHH97KFyEpnasyO`b#=S`Jorb zD0gr8>N(2Wf7~m7`D!-0`qE$j;Fl8JuDnpgkeHcHNkJ(tD>ZoF zm=hqUYwh^4t)?}oMG>#n9KIak=js^e)?@hcG0yjMj1wODmv0B(y8HNZI>hrtC42vmlkP?T_6Xbo9iO%ALlD6&MPEO03iT5zJTS{Uf8V`YM?@8+yDM{bLHn+ZvEaV;f=@a{wd)jYaW@GPYLfn z@megfx-~7`IQ$->!&!O>;3?{hMipe!ZA04HiGhi5;clm>aB2ng`l88svKB^dmtiT;ZJH)XHj`Lpr%*YwAqg!t3ZFnGa|K+!OA|@;8^zCQiWWog97A*yEu^y>KEP|*RQul2Q1d&nRhU7=s;xM)Qh!xakfK%fTD%6E1rN>8>$Kjl#n&E^&1rt%M&aH~lVi_WM z+;NJo+E`o9iM9Nxk^wJh~M%IZEuREs zr7$o5vVRS#UaqtHjUVT_aPisr_L?8PtHAdFnO5{t=(DCBA3WC*3UkhArT8PQFlNA? zj8g$h(6&fR#V}WCT8pL7k6*b&ix~wfMd3(~D3y+w4hrfnZkKRfTgUOji2vY0qm>lm z{^T_C2hZ|0kKA2d!q?x_5WT4(dQ(I6|LYnedK%kIbB);@!t&lIMJX9Cjt((+(%V~1 zWknrul*&0^ktSG}JrYRzIMNY7%R=K4U!O+l+tQ!zH*C2oFie}qhx)* zbM& za`p^kLnyYn$Q7mMPF<*|)q+7$3YvJsHJ7Kak^^fRQmUgAV_5EaLltq*3|}v^TdU_h zm{Y#;GvZJ8n(=QuaIZ)jvBun~MtkYx>1!W<=Cd_E6oVDBcAv*vx-{;IvU0W_*5ES% zwq3Y1X=ep!td@Rk9TU|qK#QWAuYya0x_CGW@#U=<#J>cS-n3qeBgOcwOszyFQCP+ino`%^iS7{I75kX zmcWH5d=FMLEI{QF0)={d7jo6Wt&r%ZFBpl7jgO_2t!UNCh#rSoT(G#QwN8uLV!T_A znQE|FSRyzDE5<=l+?NQ)U7y3H?Tk3m;clf2{@ZI`m5ZYhOSFE41Ee!ng8}o)o8D{7bdSQ z<4{K_N^{z&enR-Mx!X#L*AeWsU#VAN?AF6~Ka9mk`PC!WyHC6h2(@CF9BiUd++f)3 zF~02%Upwqi#nz7(D#zyHlpC`$uk6)J)rVp$dydU1-#qs8c*%JsDC*M1YefmW@PZZS z#3Vb5p=zg_o)<6Y4$e9`TA&JVjlXpv@h7PK-Fh4LzEvp}=5Upj5Lc)^kZ#UYg1}$Q zdgbF)Eryo|uIc*6*)sd6nNbh|x<2>5u{QA44tVgS>DEJbFNM4GD7~Vq^WqbqY3+0R zz7=h1q?UN)h=93*Qql_EXa*S#cGr&PZl=`vHxt;gL{k+@gY9K!8*El! z*op#z$|g-g#k6L_OI`fOiwM`MglfFZDR>c*5GPaIZk=YF67%KXK01mV zG@FKtjVQmNQhKB@Nk>2p{pvO}uX+IG`lHBXle5K7=xrRCCM1?9mxT5eIXN?egy&gM!@k%Y_r8avP?OXj@X}(niw{5GB*h zbM9fg#U(N+{pu-&lAKU}>H?{O-k7d@83GmYeq&ln7A)Y+ZSCh>hxb zls8fDz5Ki9DYPJru)Brp1_ey+2ypDF9O9K2hB=8do$4x0Nz`1??``NHwc0;L07-D( za-plerO-Q-V1syW$bwPIqm%1s*XMy38TTM9IGigLQ!oFX|6b)cw{E|E(+&JNb_3tK z-|I`;erDNyYYN>|uQ}W_gX(A15|L8wNdJ$ulu9`=Qms;hCM&=`+xsWT+%0h0)D*c z9KCUG!I!7i;Q=c@A=>W55F@9-+fflSY*fb9FN?z=me4GM9*w>m5nOM?KRCU1T7zY+ z)SUurDMgdpxzHFpY~@PIunv|=TzFl21($ngd^A3K zuiwXuw;sC(4}{#I-@gVWQkVb0 zA1nARYIY*<@--hQ+!j56o5qX?+R@ z3d<@#Aq4A{Hj;Q}(P|PezymTWS!~2(%hnsL%YS%~^VTREv4xIkSBq#w7eZpr3W`yK zZqV)*u@KmyOlapug^ylG^df7W_9g=5^c6~zqAUeq-1LJ5WAxlEC(TFNSON*K(}}3PnJ0qQ5vele;DyT_$6H&Q zKzUJb($MS?#{im!qlsFPF6)?}TXyR5tp)rH6qof=sYx~^T>j%zD%FJcLGGev7G`Vz=?j-t7K6S@uOaTEClJr}sTONX$}IYT8knG^b7BQ{ z3M^v!z%iN-m6#vPJ+c;X^3jfqUAc{z)s2`RW@6lcI7EoN*2K^R3!hE|%+tF3XP&P3 z&smwi3$UTQF$nQJoMS-Fdqu{*-yD)6GeT&fDO$j)C9`eSpH^)}ByMk*f|icRX%a~s z<`@}auc#Nt9$VYQW(>T=Vx99MP;}FFXz+D;(CgdhaeaP%<8gc73f!5iD{%Klp!$tK z^&5feU(s!gpMM!1{Vu{tQA1h4on&qCHHD*Q3#7{{Fbh}oqE|tFD@AYyGK_5t!6n6B zPaC^3wprQhol~IbVivLc;!{t=zk(xxvVKj&h=CTT;k6~V>s4~=cF1d;*}Hp`XWwq` zzWelNzi0pRtq1X5AwT6%;pP1BwU0mZrUUv-D0yuxy54hJr6qf5V$T)nA!? zstQ|8R34^pN)DWiiVKLn9{Xy}K$TajpG8?rJGL5Ru$SV1l8F#z=j1})9EEYSRxd>y zpladLAu49N(qrVj_ih${>|#GX9k(xz$G<% z&*pOlp96v05~MeprlcSzoUGWV&7_z&q7mKSPBS`((e{herV>}+q{LUefgEQVsc6iK z&rTt-iVrAs8SM;Wxc$#)Qd8ficzjsg|uLld~#1~P9STYtlF*s~0qof( z{&2Mp-&@fv2@P;%E$V4)9d=y)i*s7%7Uxw@hs)@DExzS_K zF7zL`O!4X4e~witQs%)Y<;H)lp_hoA?r5^idtVnMd@ z(AVrTC=#|t-zc_VDPvLe4Vxo3ex5i4`e^Y^+hULUlQAg2S zgJ@|j(<~)C&unS-^56Q$-*{7b@TT(MP36JE(->CDjhvB{4-2-abpg}IVGwg~q z)YAzL3!E!lDq<+6YUe3VR8xYon@~aK0*wNt8f=|iQQXje7ZK*kxPN0jvumJ_Fi~fv zH~GZ(;p;#B%}C4AFC9qzyjRe#BB{o0hLV8Du~N8J7lu7_jcL6)p%xps`%vytSoIAT zNWHcx+~W$$E7mKY>N{~k78k_wBpOjXT6{!*1e=wXEPXhQ7{xx_%*HNCW2Mz=2ca)X zC(^A)?cU|Hdz2ofmoA_0K7Jj_V+9CG6cQ3`;%XYsOChHSph%LkZ*JU93k3)^Dz*AK zg*o-E*oS!fN}Sa^4UdnA56f);nTe+cq*;Womf(WGsX}OMHXPBza|E)Ckoa{N;tn8+v)SRqXzcv?)k28yVn zE*Aw)Pt`Em%^vd?L?o49yj_YF+KIx3+H3>^JS`ISWkKU^6lNlJwc6N?3u-M4uK2Y` zl*dHv?;Rc7y2|z!tiXQj!CvuOkKz|tfc^O|IdRzu052g3w`8ss5rlA5s)u9~_D2Hd zVk07ZF%(dGv!;nhQO?|~u()7njT&64FqRiRQuNtua>CPy*(0=G5e3lKxs}@z^b<7^ ziM{9Xa^oVIht-T8I(WGCz`eZ6zVY$FgMVb}r|azNpM2_dSZOYmT?@UUPN0@k2A^70 zWKVWjLup>dtxyqTh@KjS3T1{aM!dQU$PdNdaNjBmz+p>PPKnhBXIFZ?#O0}M@4-(P zylAbsm6+xh@vU~ad-7~IE`++ypQF9|?z1P)?}xKnkJ|(Ffv+5Jz2!gS`PLU8%?4L$ zU2!1>y`m3zth+AMI)*Jm4%&N}@|fy+_btI|cIVJ*(U)RMTPW!-m$iSJ$Ws+L6?PR$ z(r3wUMl1=k9mJ}X0jd2Qk()D9N4z$_xphs|b*t=0A3eF}8G7p>ySKW^Bmc5I)LVBS z-&S7zZsdMwK6&>1C+W@P!xxR2oHGIl!VtqAOHh1?Iuq$_5?@jlDj_1BWrQuJrhDl> z27gcuxAQ|;VIs7(l%AAKCa0VF?zsww(?Z1Dt+X?+PJmw{$VF`&#*~?By=Dc`aE=hO zz9efwXvu9+P=AcZ6cO~Tn&)7#s+_)fGg82@)NRfKxoF|s-^Ynf8SC;KDk_d7M{%)Luf|)C<`>&LmrKIoD{A8l+Dt56!xUJk zz4je?LRLOZWL490V_QRgoQSx%_d;#Yh@Pz=#L{}#KI3GmQEQikbc7_9KusR4(H3B< z<1lF})N4aqDp|X^{CEB}=-|7jCve-x`Gr^P`TKX?Ywv5iAC$xn%I`{~OV6`w5Y$w_ zr|xzQuhlxHn8IoTen$DgagL&OOuDwf+ZCG_ZrjCl;XCX0oK_$(8No}BaHIBc@#3+g zCNZhC^cPwK!m-K^Wslfisdu0){TMJ<~TQgoa>8d(Tk71^^hW7)>vyJt*YON zypH%?NJB_m98n`~mFzYv(rR6%I7Kkb5=P5JkT}rujH{pf3i^mlom4wevMV~$MFWZg zYf`fJLi~cDdO=sWl73&@zqjvIz9Pt`k>G?Mw{1rh4$Z~p5o#MQBGKYP<;oBtDt$)F zE{&u}7x*=b)RW$@(XkcQkVLTRZkf(f#ab%Dw$Y0Y%r4#55c@hCXDn{nnJ)i5(IeJm zw0g74THHb+qnx`9A&|@%a9^XT)0!RlC5ypyJB$8oMPY)aE-BE*nz0q)Oi7b{T0^k5 zQglxghSVrv;WTQfz3L57mQ1Y}lk2$r4|n|ogIBNG{vA{87QB*N5k|Ip|1x}Zn)Jj0 zCB$w{E*Y9X$7Dw1;C&V3$)|WfV!h3&y$EK*k4EF^O)0o?^cqUbJI+lDx6o17c(hqA z|Kn?M|Mfqecy6N-h?bzXfZ|~np2SAJYx4AY!8JXQ$vIb>n{jlMQ8%plO-4Dgt$N^F zI|mxdLLTPn1` zqZ$qm8s4zR>DN>sABd7%<kLjz^2@;`Fu6Mx7OSEvdVuvFtK{hKCBY7uz|8|(lXK~DtCFS zqsrFlKo(|E%*Z}RE`x_K&`6x&2vaDRnaX8OHBRWS(rB6m=rs(&{i7r3k|>mB-=?)^92`~RPI@BhH()V==`FG?rAXGZ#^bo+nx z>dwfxP&nNzsaS2NCeUxNtPfrJjP8)mUlGYvBtZ zi6_q`>>-FnA7iDT9%e)%7&jy-P4tkWV63}tpnE-u<-O~o+m6{6X0UP^RGbGe3RsU~ zqDx@ZExw0Fx1Jxgn_JRm`|3A*~|a(uo&lQ{qG9F+Nk1`M!#<4p>ZXfh`lD!)FTI}sNLae zlt@k?YI@BTcm%n&SSJdJT0?w`-bwjeOQ<5h*oPK`6Fszk*pt43{w4P4Vcis-Uh5Oz z`f;w7>JLBr=mUJhpS?4lzWekcC?gz+35b}YPxRqq7Hxz|#9fuwgiQ6IR4(P<566zQ z@)z8G722i(z1Bn8)hM4Su?quH+AGN0XEV*wlb#m`&Ry`-WI?fp3O%xnS^|RyeknA5 z-!CaNUcKDUTRb*IeTR}Y{F_kH&9RpqIT%UghHZf|X{z>Yq1k~$zA2b42Bq8p?bqXJdkhha=mcFt6Az`f zYCCiyNlTn1AWxBEU-U)wsdroYqnM_6s@wVz*(;N1CJ>RpAE+6Hx6A)}ioHYOAVBcQ zXiR$(1#MadOM9;B3ClvAM4V^0;loA%Krn^zYWk5;vs#RzX2>~)hR4TFWs5**#%vMZ z$_*Pv*Eqt?8(jg)(8Y|jXr|r1T>iJu(+}hAAAfl@y|bVE-sc~ExZeJe7k_y6ldp&$ zn>3nhHKAX-BBhSVu=-;#Cob6WV(v#YA!5F((3nyftHKR()?4FIX80;)T493i>zt>f zP-`qCG@%PSGTjO1Y&V&eDj#+EH_^qLac*Dj-pXpu`1k{`aB!x64W-$P}WE>otLZ3n4kzcMoey^D`Q;#_p>jxMK|ZVBN>`LayUGsEbN~c zsyQ%QXioGb3db!Yc3K1RK^U%$m6MHA30vbjz2ja05%qRXB*287D?Ckpu!!SmlX9%5 zbZ;;J2TvjRu=E{cg&C`>X2&&*K1}*qCFLc0>GW?Uixici4TqNlIVEAwoKGDxN|TL) zbYD=CFw-psYbQ3FEWSO;K+y}AYB75Ks#SK{+hNHrzI6FNUklf<|Lb89%3q%Mz?yq- z;V5cP%RHBMf}2J3vk1S@H5!Z-O6~enPp8RQ5ngkuY#>lKF-4l97s^{)WpJGywezt63o~&oz6l2|z~k8p2NEDa|g*`vavqLNAna4L0_SxE~88Cj@I-7OK{dbuk>#Jl_p&m8M0Pnz*^bY&FXF$A8XNVWZwt zQSPsU`X1pVuG)bpRtvq(T!;9fc4jHVr_j5}@IL*q2%CwCxU7YJ`P0MaFK*SEuwE73 z2rDnEAYhe`g#j>WrNUcyECfdtj!0Uq4U{jQv_uRSiYMTW%2BSR|7-V9(3ctv0esTK{|2t<=uJts=J3e2JP+FNET)<6@;-8x){~ROrQXCTxNESv7JR+SRr& zoZ?F<3T(pi;v!26WLC;H1S%Hy_1jp)fff3<2#wI{08k{$4Ooek#&3UBQhHA_?yI_|70;**u7kfe;PEkfsdq-EiLRG}2Bm3*# z?pv!`Kis7Dt#_aH>&18LfxEZ(vVz%5K4@>AN;+q4>u#&QVdIYD)yp_j2uG z;*Rcb3KRJu!Q% z!42@`&j_zU!{X)7`~rYP)fgfqk0qqwHZDV^3UgXoF6a&;ASsP4`i6GmRu>;Sy{Vv* za9GsPi;^TOlCD5W7;?*Nbk`PVSMc&?D63+y*U_|81Wa)x3hiRGVO?MF*ASN=w!jgOW|Sx)Hmx>fIM&!4^Xkn7;BN9~~_uXyb`7(ct~;09bP|9L%&v5_Jx z0cVjpC1K?=}i++7=b4Polt;_RABMLH@w6~EA(5_hN|&Mc-W z#MlFeSZT*l1O$>c7%i01PG#oIrHq1?JpfdkRJbh@uLbq%b&wjU^bAI{e3CDDc*`7Du@Y2C`bsL?qs>H zM;o-82na>6Ob@V)9}4eW=k!tps5QzqDxXdLD&IiUZVh9UHn=946K%A5lwK@GRN6Y8 zYn02M%TsVzEULx<1NCsFXXn7Tb`?RasGnkM5<)8!owp;yCoZM06jZk(IW6;mB4MWY z)YIlX2c_p}x;SeU9y{eEW-D}WJ%~Pij!cRM7-!qdpBG+-wuC=$mkdhCv<`bGm{uF5 zoIz`UYsG2g$P=lrXwt$4U8_bpb!+}Z=eV8d)N7^%Q_t(Sa*r7z6a@Xd~Y46Kl5MBdxe)$XU z;)UY^B35cfsUcL@9~w;2dc92}nk21n^wQ8xr(Bst1&qVJWT-91md5@*lC7P(f zosqrQx^z^)a9_AHq>I3H0idF^DwAAdG?_m zt*FSnxIj<<5vaM9H($p<$P%I-WPWzL`-)O+YH+n|V9EEijf(cNgj(V|2hUF1pU zb@A=3ALqfT{P|08ZBcYlK6c^{d(*#>=(VE;LIIN^3QH@OP0Ff`2&+ue>e5shuW+P1 zrAZT|(u@zv2c1!F5!x2ahg4b9D6Oc-OLwE_U?VNi3oiscc{SG>zBl${`7(HJ-=D-p zEEdjEnjZ=bqBm7g$ZYWG*7!T^)zIj~OJ)_XwI^(~6)myYDcDgdXv8|EqG=hNeawPz zf_AsyV;5UmLZL>}d$iE1Fa+jZ8yPIIqxh2EoJ&9PQ!c-$jQ?d;#y1Tj<9J=R%>iMo2$v=Zi@jE}#TJ1hQHeq&CwCy=eA&)K?4QS~P%%RnW*OAlsd= zOHGIj2Ym*IT%~6W4P5%<`2MHA=^vG!_^Eg_1i$`EsssJO7lrLC+N+xPUvsZU{$ZE9 zPbuG5U#U)OA}s54_ln>9y(0Lg`fghm0AE0$zoN#C9N~KMQlNWM09OfRPjR~{n2G{F ziL$z+$zF7@ihBaC1f(et#zc1OCwhuG3Ts_Fv75b@-;G|E>lA)to!;xR(HBw=A3cBa z?mbnTTMyj>!h^4>+PKfI+8o>Bpb5~V?JFv4MfPny4u2ZOyv4K@dd%XER{JwRbd&y} z;7WlL+oqwo%d^@sg)cjjQo^nZ?a3pSotHgLj2tP`)MRE$+UK=dWxmT_93HHP|78|K z3EM{mfjWZO$JoPh**n%0Y4Kv4jkb3}g;6-uaErWXm2@w7?h%^YVuTs<2gM?5EEMbIrof2=Y!+c$d`QDTFpS;(ek8j^Egu3mxJy;(d zuIi)1XItppIuCTmJ5teJfraDFAqYWdO;ubkrPExaXU}1BcC5r6z4k6@r{Y~G_S1GA z2K6k0YOn@_EP}>Bqc$V&pOn(3Ry(E1+BHrg!w8$&%U|*ZEOes~loTQzHUpIEiWC&9 zxiCpoaf-A?(WE$)!@L+_MrQMrMhcgWtQi)H% zr=10t2c{-9cfCN`+M9b-F0gSxacCyv&D8P)Web`j%|V9bd}(-2ZL89pUUtXK(X?rN zh7y`x=DG4Kn3af1MJ;yGu*+Y{Q3hrF7%8{|pRhy|w2q>4R@t&>R*h195;xKu&Lvdo zM4V7vT`MZz(`Y`!Y#0z)v_!;`Jz7eYON}{@0coBa6YhAtf}xU-Dd#Vc@Cui|>>P1H z8e%gPHR?AA_=yn5J~5rs!n22Yc*7YkoRWKfrzMLe6m}}ZyVwRN_WHx77JiGD()@(e zN-QpmV-rCp+6i@w!xl~wte9rqJ@(6A9xyomye=Mp?8S0^=V#h?+Y1={gIqzr`1}i? zCvr>k4K@2p)+k>q!3d~^a^jkhwaEy*p}jn4lgj1z=THQ96(YSVG&@N%s)cjFPfcR7+DIrmDv*o#kmrU-$>RYeb7>zO;Gv^dC3d9izJaK)nH zz};%8*gF?tl*o~WLqIZe0;zDKz-O0sW-&wISePJdPlQ1g^oIFqK9m4xDObR0!Vg1n zQ?ziE%U^M>B@jGNV8?L9c1pPvi3{@VdM+f?=(s7oXcSiR(e%569qP>`>X4H#Em&$ z7Zosu=3a~4W%rlA>RbryYy_q4u81nsmbR;+H(GJd=OoG?E@08S^t@p$3DhC#!M$N@ zUU3^0395QZttDr3APr|G2W23~P2MWb11 zxTnt3E2n+P-CcG;OWbp9r1U5>x9px1yZ3AvL6McZ91x5s$3j?i=iVR3@1(z#P zf0CVG%19uNE{a_DBR4j?nSowPhG@n)0JajZq|7 zwH~p@(ZnP;i4oNhwMVY@n54kkE`I}0adQ`$zwxY#jY<*cgnDO% zD~d1IDF>y{-8T#=1dQj%j!6ftO{ty=@ijyOp*BYNGa*;Cpw2(@vuOhJw~A>Nv_ z%<3D3q3N6!H44I8L-fLr%ik0p|GGE&Rlnl(t8Ohh^JP`QSxZkgg*YfuL|0S^EeKzt zN~D#hsnSDss&vK7l$E^*tFYL_Mp3CM?VU9lxe60Su@{`)g#JTQg4N^}Aqh_cFsAEQ zaHd?w+s8HN6+=$UKM(vy6apgqK%ySV;V>FY%tM-2@NZ(Jyrzofqju46T{IcsCt6SIBTt}*RpH3d^`keK~gLco9`gEJPmrbcZ z{>c~M7*`&T%~*aZ`Y+Gvg-WV6%psKC-| z<&0G5!{c8{VZ9h!91gpAedRt5rz>LEiZ-G)`E?EPt({b_7TAxzdSrIr_2bsV_u#dW zy}CB~jCx_WzNh{&U7O#>~vXMVYz9M6Qiuyx6B;`C8DL#NuR|M zmAI&$;+(-GawDCi7z#wgZE7x4p>~SiQ`jhoUl3hVChxgwxtFl8S$J>d}8ORcxp!gk-u2qY{XtNq)5DZBaC``nug08pNwKMH|7CQ%1`v653c@ zB)F`x@DIjwI%CU5@3MtW12B(F&Y^OL9 z`5GmeUARcMNwZlgbL3E3I9=(h&>;MG+&v_*7P!gwm(Qnpl zXGGKJOHX}{<30Yg`gfU}spF4!S`1ys!A3++K$)wfFbh&t!pX|CiqZ;RWgDj@Jsek4 zn_)bK^c*PPV+yxEw7wtLpFMr|yZ7w@Z#-%*g> zV}zTdD;kZaG>BuZ^7&W_4KqZykbJoO&8JyL`|K$G<7YODL8n_YV772P6NJ*d+tn$+ zW*R*`B1HP0T@-7zjg@YSRZOCJ3OA-bcnbyPA~rF0pzAww>RBpP7>ITZ1p!Z2TAg-W z{+2JGe{&5=sH_t;F==;yIxo`c{vBCQvz6SslX|$-lxKX0Dip&b3Sf6tR zSM`@G(*dTL)FxR;0lZNZNIRK;5Utio8V_;kO+%8l&X-aI;?{%qKp(z;r3m!y z8IYFkRRP?f5LQ6VdJnh=9;0K38&Th2mRI7%ST!_ZAlLCr==9lb%QZe-3L-T{8QgFK zV7Ly@Yni35(OkK_Yj$E>sN@QO(a0q@b@^LA&mz!IX7Gm|5~A?b;U{k!@y!IFYwrGFbl?*Dg)ORWUj+h8giROBQ>gzxYW(o9( zD?%E~j6LXmvWV&@y=;HrSN-%i-J^2n;Pcbp{0YULN9LWmzWd3?{_5j!^>MuVI6d%j zS5o`r6Zz^3@{2F{B_A97f(>)89vx63nQSfDpl~A+9a?fFE2|50X^F&Gxiiyx=P=CB z)K!xyLrcZbPN2-wHA6+@0HHrXg%u+ASSO`afESn?^pZBB5yA(e&S_EvFTSv@4-1Q% zCQ?L;e#fB5aS3~A2a6`O$}z$c)sI7upmnUp=+;IESD;=IS+Rv1Kk*OGjdr5eQk+HP zM4U5IZCth!uM>4aryl?}={V0y1d0bOT&K$)fAtRNP8R>(J zd@1Xu@7)C5_HnN5S=xsmwx4_F$@}BokLH8&nu2UY@wc3-h*;x74bgHyh9PwD%6x(h zK*5d#NNd(jeTSC0UZqAW;w_1ZyD)bw5NW?%mHQ{UQRslt;A;b~XwI#8lP zE@C$@h+`gv$nKnMlK6&DBub)?cBPk8T}If)h*XOHdvB+~EF_^N_$2mUdOddEg1zauv~0&>KOVA!k~Aw{RIwdzQK!7hAzO9`6SsDS>Ul z$;%%+om9lX$mbR9iWp_U*8n>Np*4knjqa-YZ1-kzZV;G2@u7%mSFFMXyPH}!{i4{w z&~@2766mxM*rwr7DCRbCAigfRE?TP{wzNh#zP$Y1uS18z_2tWrALlCe{pxSGhXURn znFCb)z)svm9J4i`w6>6^Q#K++7_kiKn1^aPu)3BBj>{CGb7ek3%pDWjV#;#e3@sgj zHf;bcRSXF%4G~4$!fJ7+l&wjL^ImQ0R|6g;gZ>1(Tel;BX}Y5ysAm9hSWVIpeOI>B z5?aByUhsXbE_Q5oqRY6IjJXr8MhaefV1Ihs+U%Ub4`t~fhT*j`h3FM@G-b59jZUkJ z6AtIqK%7H_}``6#$P6Ot~og&v~JvV-wYxj?*{b$yA{^+~y-H#rGCf>TJ zpFHpm7)D57H_fGHY-+Vo$k2P^1I2QzA&%`wR8myhZzA;C%;@roX4_zmc=p+nDA8%P zDSLX4feyZ$Q{ZaCB$YHUlc2jSE%45*Wv6)C9{S+PG2XfY@WliNKb6%n>v#>btVr^ zW1E(COyc{}4l06^xzX|&Mj)##Xhz5a!#QqeDNj>~83=8ekm2x`4G^cuI8H+<4B31HdFAoFHkrKu*N zU(-Op$$Rg;_ufOM<-PQ*Z|um+V(xQpl{%DxlSw4)&B%y2doMHR7;DWrhRntrWM}yi zWWtzOhf|kf(%k%R8vpuxcQo33Zv&2wu%5F9Wy53+br5m33fhN-9l%DoL?Wj^b3!&8 zD*;S=<1ME`u?pf;LgV2Hpg#*=U<_pS=7e_CIil{--V<W>L;_ z4a$w3-_GX*asa%0v;M|+I;Od}e!2DFJ);%Z$G_eN0O(wrSh=I@ZDR2ZI}_*KQTN#_ z$bi6|Jw#LLsuDk5R=5-7IuZ;U)WEOM+!Z!m*JUwmb4Uj~H>dVqR>I6dvfw>02QCuJ zaI)Gv1NmFK`<+qWVL18qdV8m>d!gxdqm~Ha@_QCaL7QOI*~e z2XDgIG$YyQQqV5|qEeHZoTucKeb>QHE}Jy0mbdB{6PrP?RY!Blu3p*JkN^{;<|~iO zxm(Mt7Bkdiebx#N<;C9N<$xijS<>; zdmY!UE$N?5o-!esB{g}IIvJ}T^{bM4Vh1wWLw2dmY=j6oc%&ODE--<`_NexUfp9y+}B6&Zx2jA_g-xRdVFAxrJl)E4E&NOt^tae z+(POtjtE=ReOukdtQ_4ak_6=eRiu=&?owKWtc@fAgS@(ozOsx%)I@jaBLUj$UhLQo zJjwd?iL^5rgqdaUQlZ}Wf6Fs0^-;v^WC&x0kdiKPLzAFlk^0|I@kxYoyzDI0gRXQR`wK8Dq3B2(t}aTKItsXNwC+bN`?Q?HHx}gr|Kplqo<{QYY(2Q z$0Faa#d+(|ySm){X}LeepXC{N(2@(DCEg?xVS{0)vXhuE6Br`9&OPK=&u`S0{o<H%isHHw9_n|FQq&w;I29BIT0E1W zTe}OLGk1TtnaaEU`qeiVAoa#0cSTOcp5#>QCnBeE=*%^SDP~66^s!WyC#6}2AFS)D zW7`Gk&dOcAOnESkB^zb_Zk5JVGR93UN1(GgesyV=dgFn+ z64(4!@q@UgKYt2q%;%jJ0iwgryQV5g5?-3FyWbZ zG~@=^yuPvvkWZ+Uu|1+h+vXUeD=iXL&}-$GPP-1P)aztd^k?kHRDg#II7S+QpYjbO9rhCv*W^or_(rxM+2? zFpF)Bj{3A!lV(lIhqZ>}tb5RnJU}(NXaoDrPOLOO1d8~Dg<{fwmCYvr6wQNarCsAbajguhI2Ag5Jc-otE00{{4#)i zQlex(fM}l2lsE`adjGc_MO&(KYh8{GX+=NOu%3JGyloolkOJe8ObLY+Iw);}E@ucG zI0V~^YOhohsWKz4Hp|tBES2yVRSa)b>mzRJ+gduYNM)!ek5OSHR?7bVZx5e9h3S`q z*NdNJ$Q@d|Lv?<27u8H>eqofrLXvQnRjV$j&Zrj-xL3$A@_U~uRw1KhSgAs06iMFy7C-9rdl`kiAcsglJmouaUDGqYi)k1E`*zUv?jb{_Nx1<&Q>o=eav}ELO$r+ z#%qfel4u?Ge`omd?|k%gt`Lv&>XEyzIy~0J;+#jx7AsZM8A#l8jA_6b##ULHjwojU zmPnJ9;BX60v(@6WWKXK=r6@mT=LkW1sXmVKUzjqJHGEf(2&gmEi{0XETf>~1c(PmUg48FitpdyW+ z4#ZqXeW~FKFyahN>yY{Tzw0?}s0{C6n%VvEzDS4iiS4^dYLW++NxbgK&4`JZ;o(Zv zS($uWGS+cZ7|pf~%10g~H+9{@`7wuTzq1ZERqou@+`xOM+sL5at|))gaB)L*YcIa< zvC8?whc^!_^1Gj{UtBEtTaVz?BM@^s0{JwK*_>mTBpct=rppeA40-{hJDtn724Izi z7-?Jw1#Xj7s)D`5&3BRM1OuhpTlk?@(OYCZZDT0Z@f)P)sg6q45J`wkWX#_zJk<;LT7C8~aSdk{XE+XLO^ND;^bN~(l6Mlh-6%9Ld& z;5dw#yBW)D6^jvh8`xgO{8AnlWc2EJjp7(d&EUydetO6a60A?!G^=gW+t7961gp6W z=7*k4&w{b1C8m>EtHX`Br(1G^E?^hHk4$u}^Ifem5`=O2UyRO;(p^mvFm;H{hs*90JgH7omUVk0b!@-q)``F1io@ z;+hk{tw;3YAmq?x|J5?l_g{EYQa>27X+d@O%#`$8#v%LGmmImJxJxV+6MN+NFm2$J z5#Gp*Ow=j2Rk5oZI{N{91G2otdN*MkNX;yh)j`=Z_-a|4z?lV%V8qzR=Tq4mKhB@H zUf$oRUy)v6_4XZY7}ED5+Ki=xG16eyI@o|3NNu+E@CtHyv-aWn9>fn}Wl8IBERmv* z2Dhr~r7bl$M-DV*4ap(wL;6T(Fp@j&fTbv+xSCDw1Df=>A`Y5V_}n1x!qu{L1aooh z44*}BOp|+2i;lqPHlZIHo(a>SG>JzP$OlNG02-|4$*fv!I&Zi5s0cGh6I_2c}B6Z|_LV4W-T>=rXMcXw*Zo3O&PqEsAp8nx6t$AXJ3 z$<@y~@Ys@QK#8hK6DS^_IJhNCddd&PKrl5H#wH?wP3oFISYk6WFXU@ZR=V4Yuo@rM z_s#RI`}WU)|HhAV!WKW6tH1mDTHj|DXUR}QK9jToqU_87M3KE2%b|v;p8RTAwkb|& zH!b;ys1!Jo#4_lpA5wdg_+e!nF5x7)wr3}>!}D3BcB(B!jyBmi-3`UQyzTka_ZfcK z_vv7bs$r0nn5kocnKnTqNieVKUNJe?@qJ|Qmyb77@1R&(#sxdmvv6!2G$;4C36k9 zq;$zhyZ3)j_yj}~KMxJZEB$zD6GN6v*^OF$|>%c?@0&w{_R)Y(0-ueiZ5 z@If0K_^T9Wr=E(pAreI`I#!P@MC(17ShJ^%x+Mj3m$Fr}!!l~ZKN}eI;o6pFqkC*s zzp)PBXCg~@IiVp4)b2z4L)8WBZ0MFJ?=95=cKJy;rnd>hsSCkJv&GbMLBrSMIFlFSqVB?7B{*q2>L1*L$LG zEw}brtG`vX@uU)jBocED7ay|9@O)StP7+DY5+q4=A(c9fH&M09&|8%SELnd@B&QU% za@Q%!ATQ~rmSw>->vRSpwrYi)Hy>5Wz`Kt~ys4}IYDcsV-TpHAWPkYoQEe?JW}~RI zqRZnqZnMa#UDgkWJt%vz$Jo_O;K6o93Y!HOsI6vl4WYsWRR`ok>E25ZrL1hrRxw%u z5n3;I)hRhMi91CDa?ssSVd85&-_7%bg49lq;xIfL)ff#vty{q!a_WsvviN+y$!;bH z4i_c-GqdwfV4sJE?Mdph1Mm$PQMR7M(B?NI%O9Hr7iBi?EP-8TcSiSrmY{Jy4C!y~ zUcCDH>&wHCTaVktVTi8bfA!+@@y|~a=e=>U;pbcXctv~2G*)YoOC8ZINRXJo7EF{} zLMZT0<1*`;_yn~e@v%4{800f`{%lAM*ge)A9B<=xtg+_=rfH-smYq6lqACUwOA)Nz zlgyd3jEsGcsm<>~$ZtKCKK}eMkbKqxb>J_6^}P3@%Sg6W<^pnL2Oqw zX3s5e21~vJ0z>Ik$RKmr6(wW5q!egln-=J&(t~i|F{rAJVj|1Gwh85HUB`2=%7>+?IP3Z-5>;DocP@ z5l$m7-NEZ_wHLK`zDQWLvHgRU`a<-@G3QN%YdaD$rTSEv5fxZAIY~q#Ld{qwD5W)C z%~#tG^)MSb=&~o~@)B-Hk~7(=Xe056`}CC$Gy0YjVc6%)gqLx4tNX$DNqh0Li+idY zkJ;5r1arDXcxs>Qjc>^B|Gq;m5iB`XKz}rCSbk>6-)-wWK?StHSZUk^xzbr9eW;n! z(2inSoKu6N0i3e}jDBQPNg7J+sq-8A=&}jeaMfWC{hOoru6i%GU4iUR1E+?if$?rB!=$>L)6Pk@qg$} zYAlAkROy03NVBYW2!>rYQz`D?n3Sa+lsN{k53Qa`NRYG81r93kw`7-VlKEa_%s@h2 z7BuU)#>@Br;4@ScGEq^dhQGr&JFsRuMztQIvqr+aaM1$pW~oamig91V zS+GR#p}?*WBdW9u*(UqVOGS;qp?1WV)JNrb)eZpL_y5o{EOE&^u6}4mkm9CuZ47uP zJe?TFb~eSvOkC+rPzhFF`*+qzng0Wwb^a>A+q#U#xBLiMgbwtc2$Nmcj#m93fYdda zRK`QM&2o%eM7#54ED&}q-MdLW*!!wj9(B>FrCJGyrF4}NzymU$G&LI|NU}Xj}f3{WW3jZvFgQ6^XNc zF2pTwJ9?LL8>%?4A9$o5Uw9e;GCmm_WC}iv@*zQnFg*b~OTs3QFvVZfheQw=Tb-R) zllv^HjNc>X7G;l+%UGnaI-&-jfD?~$i@k=h{5U)ea+ILBw*`Jm{!^dE{Xcv-6%ex^ zED3Rjaa9R}*YEAk3}qaj+kYA7v)n{UecW`I0 zUWO#}mQ&cll3T!`JM+UjQrGPO=(Cjjf8;q(dX+TC61V^$_6Q9kPWCw#!EKf;`$&N6Jt@?Zqh=Ei;ZM0ufLk%y=`XQ zosS`I?S^}nlzn(}H(tG7ci+64?_OLY^&1b~6&&SGIO@p~dAH8-p8@3fOnf;$ey&cj zd*4huJTOrR#)zz%puPX?8Y81ut8Dad9bv9o(aK(}pj zI<3$Mct(_+0JB6CcG8Cg=0JnJgqPigp&1;z$7ZIa7#-YOJ+TB-Cq+TOtT##O1iBxW zkz$*(xp>sOOxw3QMPnl+c5xVpzmA3HakR`slUu+&rYQAKsnJ)Gg%UqJ0t8lfkLQ}e z-+%M!-D{HdH|^WIH}Af^W@mQm0lY}p=BxOXt-q44-+$qWl7qL^kGlUy4|^kKHO*P2 z(X#pq>~R*#3{{R54nFHw-c5G$@~cyu8xxR#201%n2%aQ$qk<-Xm|n=NbCsUDmQg%5 zpO?-W2v3+G0VG&L`_W%wxOV@KJwv+o#|4uIqfMQo8pceOe)6sW6V&_ZH9l`_ zEq2!B9WLPMHIFvm#o8lqz zn4C+M&E20XW5>|}SXAODnwp&V)9!g(*(M2;I?`)UuWOb;*>cPB-{UHBLdqihva0=) z1*I~QsqUd-M$OLetotIFNs#0-%TVIO^0Z`u8d>HxAJ0;iBh8ojAaGS@Od4qOP%`F$)}@rg&R3 zkfg5jlrHruS*$pxg6O7H%U>H{t`QP;P1j^W*K|%d9S)W!E&Rs6pkS_@SJ_|j;`O_` z(Z)|MnEtKD?P7_g(-KQhR|toN=t(;tT9eb&h6?v!30r=1k&OW0ojbd#Yv(rjin>fw z_B=i~S=Bf$0^QU(z!ZU|-JE2wefU5{9X(q%D7>|c))ZCT=xT|9Owir?fATqwlU>-h z>m+rQzEwWYbX3-lZsv}@^G^6$F*##-z64y=6_vM47V8N}I>M|_JV-c6qv+Z|x9`;& zxQI)cMC}qejwJ;mWMDl1WVa;bE$RET&?ROsnMF5y8N|3~joER)0CzJ)8Wq(#xlNNA z8OH*RgFFFd^s)n^7I7{EC4GSiL{exR3;c8$Pf%RwKBm} znQYKaZjv0H9b;Eh#9>R42;O#PCAq$V<_@A7syDvpy`tp7cyl1c*mBIMvWP1xC$UAs z=~)Q&{+~L!&m0VWL|1oAp}-zVEUnh!dL_Fg)<}?$H(v!I4cS3Lph>?nVpKbTlO7O+ z2ILdLymbI0ONXPxwXEt?>QA`BXQICOqyqwI{{M`q>lep z4P}L2TDI^at9P|L%mC$3`N#B-IMcP2Bs<2hQJJF78K*9$oQV>AWrxaHLSn)feMUFd z!#mfWJiPqLdj0VBk{;i9*siK)hm(5tjg@D=JM3fIryBR3g;#eoGHgR~x`p^`z?+~f zNNLx7QItM45Ze18ts@v()Xe*OTs0>-c!0K4xv1MpvJhZQu|!miV8iT=<9H(45=-sf zI&-f2xV0qRX@&jiqk`_?&0XtI!*_2lF#D~C?`kZwr&#uBsQW|!yCl|xHD&s-lSJ5p zCp}4TZi8=_O@MvZ<4sK7gGifPllHgujChTcb>##a9;b0Z0ko2fPtWmU^X3 zB7FruNTOdd)Q&US2%ymAoKaDcbx=|3c~G4WdfQ6VK{X7usTf)PP5cGB z6#4@!20_O5eFgHjZaMhU0rAWo5VzKI`!$f4yPWKsE6jb*WDiNwR4}}5WVc))rQWID zFhBNAqmc**9DH!Y!)2EOC=~$xtqm zVJozD@j=Ef_=X3vMA_;NhEc~?nZV2w@)wX}qO@$qSFq}ZglK{oO_Nuz%ZIG+;-4ku zZKhYD5GZAiq>H0-`ndJuTy^pL&G+%;a;iz@kT;Tq4ss%)#FD+I1Ow#5$D={TV}{YW zvWu$f_K>XEs5^MCUQm+1%m(?dCwAy0fv1*86g*Q*R$g|NO>Zmh{i>{td@U{e#DM`{UJrW>8-nYn>NL!FS&q=xoB& zbKoyqaw^aQKTD36EuvfkvjS}gQ<+HDrs}l;ce>6pwP&X~HAg(-3oOpV#Jbq2WJtO< zvQ|Ij%Lm}yeHL4QAEzKfupK&DJcLeI?Ziv3!g0_R z$UIf>Hy~kE0P>JigO1}l%#b>>B$5XOpylfBxm$u=cK zD`0&8&tJdX`~+kT&H&`bk8>`)e_uMQ0{j=Ru8~!^%8ugC*-LW9t-=<9Y6mwS>kWC( zLxvpCr?e7-h)GE!O__HZ!+J=&nzj_G1(BVa2gpIqH1@#)D3iisw^@bZp^{y*VyI2B z!3zIBw9HN~_s2#w;F4jLlGR;Tk7#rxnBCk6?54_>Sd3c|T0RuDk(a;_G}dvKzu!_L zB;YF#UWjE$26CaOwaXBUlohmZ5-B>f5_VAae?9w;s65o~U@XAdXM8Al6Y0Tdo8Am8aQm z+o!Y!T(dyfyV!gRqye86^uZZ7+u?QKyi^)>AKL>l9^6U3mkO+vFW2(L@^(s{;63q<*IU-3T-WS)|MgiRZ<6>&H14 zioWVUUE}Rtd-LYu>zCJ*RPBK8>1@T>;~q@{k!GnZ-f5VpWJdh#(%exS19)&7r>1Z= zP#aQNv~Cx|Sjy46CVmU{h7kbr)Rw$l@=`AFo;|BO;?~$l!hO<$o8PArtg@3X(+$2e z4I_9C6DQP4h19Z$G{8FNWOG#M)lSdOZF-ynC$I8-3ni^)AhfwvV2Q5l#1%(lpY^St zNUI_c7-F+Q)%$5iIIPuk-~WrxP!+(asq+VR*;y938)AY{UpHf6)loZ~+GW)(UL#xy z#w6o&sn3-udn(tfG6Co|9`B|jk2D*R#g56_0gTvY3lPuFGi*Pm%#>Nmx zzzqQT>SObLDnC>u%myDBescER?kiJDKD@Fnu%7bvo%Rxx~fF11T@xq49YxU4Q?x%68b zgBdi$hPAQMtWrm3QA7B2o}ML@J5?K9Er7WnWeuLE$;1IqR*h`jy+#{;Z?JSy%hn>( z=qz4Ft`L58uSwH0NvA;Pv`t;2MECDv`46;19*;`0Zs28B4`t6QDfI~-q%29fIilsu z(g?5;1m>?8L+MWg$_>Dtk%D&Gse0!ebvRRXQ9%w&Ue#(o5o^GEdcr__ND?ARQ^$Ku z(O9$H|104WQ1SaLLvv+BfBtT`E&1yHL7_<9Uk0>=>`LVih$46+KZyy_?b z)g?*v;kso7TNeA)9UQ4Iu_gIRZY)w#Q#qGW-CF7MTt;;`Xg<8T=peoIuw5x`ai>DP zr*#=UL!sW`b^-oql4l}Y1C5Qd2I^K+Hc|<+p$p_RX9%@EM>uX)Pqk1o1e9D4Wh6yp z0Kk%VCqX0y$@$CYR=ZJZOuF@N*7i0f-cZcyB;k4%HNCaJ=-EX1m8S4qq<7;XyRy2% zX?2CCmadRA2VpOa)(YvCL?+SlENBHza4INFKrVo)Qy)pKzICUXd=L48M*+CJs`Nvg zIv$TfcOly=b&{~XtjfWWP_i&>FEi?p{!lCqOd5Of{$G8Dc8Bb1WbfN}NInPfz~dFX z?6?ghTm!Lc5z3N}Ivoz`(OZ&~2X62s=7+VXe$@eSYZ4fo(lE%qFR!|Hl4MiBbD-m< zBbfjMnd)#Hm38=;3ZdP4*siSecv|Q2a}`26pBvuzan5ci>wDc$SV~o@VP*0kCr{e0 zwnZKo^pva`M+nMWO`*n;VqxC0k*(Pg?6xB!4uBZz)2m&bFvF5IL{FAl;{PN*V=QD( za-G1r0mS3YW?J=-_RN=8+mH4(OPv7;?pUPst}5rQvS(HMLsB8&Rk>n@ak!@H0zU6* zI=?unn^~t^t1ngg$nt~1VS}o|1Jc>O-|F1at)Cdl7#%1m@xQLCB&TTa?*FxCXnWm^ zp*pft_GRh%7_J0p2BXU%ldq`tKt&DVu*(A4IGF@Zq=rUPe|N}P1DCC+>%2aFU@X(mzwNRS;4wW&iIEo$57qpNcnTH0mM zq0FZlCvrHIT{)uykJba_ug1h%ku&?iq2yi~7x$#I|kvH%k6xKif`Dx{*&?vS(M9hi!u(AOtLFV>p zMG1kh0VJ8O&Usxw%QRXyR3&!rX6b|m;!BbUlW&LZF9BX9#Js&aFoU`crj*`tBt};W z1|B*dlE_TP-~a336S&O1{|i6<_#2R6OPwTK8k0R`+azZNbsE7NWnNpv2j#)wvl@KX z;CpulA0^4b7pJmmub#db**J9#=145nO5A?tl?i;r5~2>+6a-KXYcR7WKo_QUZj_9Y zd=-Q?WrP+qB~t8G>y#p(#K2UPZ=~vT2)dCPBw;T} zDA<=e;S76C`s7QOSuMig$0FfKMeKWwsvq^gzNgar#v^$3`rMqZ&z}e)$P_JTd)e8iYiR8SK8U=wx!NL$FGp`oh zKm^<}K!JZ5A59oho@*mD$=>&#jU=KA87N5oDnd%;?5g50Ec<4>?3$c|WO-d_wsTP$ zYl~r!d_rTXB@b^LEWDyfIC2Z6$0!700l?CdZt6pYI33zZJ}ea`5-^3B$aOuzg}P{< z3dPIfA(=zAhcf6qZ0e-SFVrL~6fZPZe)O83x%>8KU*Em^_M)-p#v^yNh0L5<$e!xB zLGEs{(B!cVKmrV6XV+0*&W-fNL`ZcuFoek$$=9w1@=LCcL#vhL3>ab0PCq1vw)rv0 zdjlnU*scNcNzRtvnt_0>glSgPpMVX0*mD1GYQyEN&SlxtH4=TShmdGE4t7D-gH%RDu8h3l<51wxTzzf7vC{21_%vc=TpxwgYrVK)D5stb5LX7vkr z5p*vkJ9yc!$rYj)*A;7^iajk>VC_}LN}EsEGQxxTr1OR|@wlk)$qjyr;q}aiBz~lJ zWNcDpVUiV_V?ZZhB{^Xh6JkzD-Qj6G>Zy3?O{uMVO8amyzu5ywd1C4Ks*`_D=CDhY zi}XTRld;li!~Hew_3QSFufBc#>g_9C0AfI$zju7KU$nR1w2RGm>ruRV@EA@9k57b| zIi@{R(M22kep)icFjDzq*+cWBRv?N=2*^n?N5yv^cqvj#mcvM3;WwWp1jZ1gkw(zP zqI`2K+$y_Li>_^e2z?(CWGw)vW&1XL*!}+B*5>1N!*PiSE8|lcQ?FaZQmjv^$7e5l zeyV8A4E;*>nxd&X@ujt(YSGT(DNMqUh=Cd}_>IA-0C*n&Y4x#`AiH!38`*dQvIY|h znZ5sa9zy^tQuhbKE1M9SA+{~UiF>f#T2(_xUTHPwWw#>Sl66$5k17hniEo)jwL)D; zE=jQoKyIdyVHX$6+fOP-w>M3q5b$!~iw|<;+eaU|Ja;R?X zjxaZ`9A!wCHZrtiEp{w3mZ5S4;hCX(Ng}ckJ(dXRPPUTJf4)EZ)_I8nJ#;Gf)~P{_ zfPl#4dWmXzvVnF0&`Qc3QXXZQCV1kGDkswAGEu&UvmWVDU-IMM{^)l|ChS^)&?@7U z=cuFx4gb>)6~f*5>JV;}q|WY;23O?6r7~Aw!Rr1fW08Y#g!3{wBSP=N7P|OZ>(T*s4{_Tld7Uw3ntdT+{8)wb6%Y9O z;j+5p)`NE?pxcvDzJ01v{;dQ0xv%-gk8_s08tui4?+qO~irnf>(Iv-e?iaH=PGNY2(jT zNcX~XEJv8KmC<>y01h%!t<^b@BFf8`s)<{4h=tMJk7Cor4v~ zi$L8(QmK`tkNCx6`k4JV+aTlYW8T2)e6Y%;$B@oG$essk;Fe6lHWE%yd+)Att6(Hd zYGpU)$WH3mC(`&@znj$G|87#tSLW{J`uW@UC8f6(aQ~tw|Izg1KRSK`F&g4u_B9)j za^98=vW=I*plnvWtnQ^e6L`+p+YH02l99c$z@@oP{(@~((#peEIXy(Opvj>-^5kZr zjo>NBrQnstE&Cao%Q73<2Om4 zeh-Gb^#DGbsM03@n(qI-Pl1$wfgQiLu;c#U51&9n`jQ_%-TbI~>f~cIT2XUPwMy76 zrP3bdq#(FAVcQZ;Cyr$uBM;EtP{Y8SI-t+-a3#vTpzWlv&K?@BWvNl*btTUGdT@yjBsXKWuf3EI&-(~gHAGR0ou5*1QvDjR2!4!mpf zw_L8P|GS!Pw0H$YqTZMws4n%^3J+dI&k0;6OH7nSOB`~g$ii+&IC40vcXy1vtXr9F zm5DVi{A|veG~L!m@s+IF=BA#n)g=K<5-UlilXgqFbf_+&^VE_USZp)jl7xDLB*xS@ z>gDg&2_rcjMJdAkjsi)2+wu z>dA&ZooqbO)>eHF#-?(Z%w&N_8Q`g3rV)!JmQIqbYRi%xlxM$6as${Jcud(rWHOV} zyN+pM+tM8jDsz)OK$WyxoMd7Nx=1`V4PV*#O}B7ON>KOz!83HCM2QIba!6b1b~%<+ z<&S-t%+`IA~++zr&QxcY^}CR2C=+9D{sqMj+7H65U;lBAiavMcBio% zxMTD-`(aDKYE$mc7n-cGN!p_WIKTpijBP<`wpw6VuZ-XhFoIUq#7_EG{k;@TnV&z?9o(l!$JQ_HdyX01wg3MJ|%7&`c7KB-VNL?k`&b zYB`xQEttnlHPNv?vI<>6v<}3`FAP)gUdCYKP!2!j6kq`@uv`x3q4UN6t&8{0JuYD7 zd8K~x)}wZ@z{1H0F+9--QEf)uCAI7caq386h>Pf-WOpv_JZl@ffrto$lkbV-r=S31 zv8zXxwU>`W;+0!^MiOpaLse{DUK&squ%MCgx0ny{bk@EO$3D1WUA5l-hljU|WaslP zsR662OOPaap*7T`K^kJDz#PHmiS5!1Qp)FNnw}_QA$z+hDY={W)D^RTbye#3b64#940Q4)YmGLZ?b#@Aeb&+dKm%dmQ)V2CHgj;0WbJ!d8905f51SN(^X+B4JJ7R zmA#N-WiFo*uzwF5SO8M&X8dbc<^6(W04n4KaIVGrt%o;vU%z9LJ8D-p+lK%q zJRQK~At~C$@X1y|IziG5ADdJ{;EGbCWrG#wA+6cc%RvPyqh6NlH=H* zMX7hq0Q(|r0(CYyO;Vu(Mo0G)`LM#|YGsc5xc`rz!#S*|OM$ox{WH>SmV1q9OiGa` z8G#KB5u=(prh363NYEIQ4x;5f?+ChPfKN+nBL66(F$pM5m08&y z8}wB&)=jE4mi=Jl_YfFWw{_La@`uDVr>@bG%pRrG)5)H3CDndN(sgHaoNF+k2pqpQ%fRhT!Ar?Ivm2z>gft0CrZBB#a?99^xI7Ir`ASpAT!7U?ssaZ2uw8WxN+;K#^uz;) z8%vLT4oWDOr<)P8C%;Zz;zg3UQ);$g8Oa>C0KE|8t2%7mvbiLT zNL-f)#j?&4XVcM|^B_4O;E)7r2FK6V?UDg~bwO7~vp1Oj`IOSXuY|p|kjZH_Z~ZuD zA@o20x_$fYFRqUMXD^kJQm=yA|3MRA8?a1v?l1#DWHBWqWrW0!2u zrYw9K?<7a?-r9(5f`E5E! zJM;)`GhG+GhJj*Jf%+F?ST65{cQD#?L^zj=BU)x1J+}&*nkxY&5;Gdd&W2BHT{3+t zy&GW>E@c@HehezY8${wITPcamv6P&QNyn6l(vV^^Q&T{YrF3$`kRzs(M*V4J{8iUF z-7e0ZZ#;y*&TVd=aoNC^u81#X17FGpKA*CIPr57O<4aseiRJDvbh+zRn^Om6HFuRM zOqOU}9`S~)>UFvuA;t8Pa{dWc0uSht(v8?bqH2D6OF{>xQufkHTJ zN9fJS>P+|NLVC%WSFa2TQwk}N<7C#5mwf3hAyUWQOPXqu9c7F`b1}jJd5$c*^(ZNk z7$my147guT=3$XAl=caUTd`M_dm{j^-IhA7DhYUcg6H`@HFDd^st`vluS_7&m5QMF9n(`ZgRUB5TsuT!(M39e0 z(UC_aEO-(hAVp^lBn_2csannkh&1o1kxFF`BB`7^d-gih=QpmNW!NSm-(1Qd!PaK( z{}bI%gJe_~7aMOXIeNllW`0JjjUi#hO4Vzr9t`%{qw217#?g4XJXrfirB^Yyl!#%g zZK$zVHPa|F$XT1Xt8>{jSt%>&`~6_>d}A&avGM*t4If`ioHYj^0HEz)cMB48Wk0JQ zPaekJ?g;_URt^iK1<%_r_2&h7@*4HasTM|ck5g9k&437eol4YAYm~Ski+de&^^vve zyCPdvY0dD2s&hyLw*)qe;kS*ko2h`6E(DsSIA)>!KFMUlRMlfdJ}<~(Y!d#HJDjFw zmhZ;u(WgL!jCE$o6FMMi;$ux{;4}8?C#Z+fsEY2hbiV0&)X| z1FXl8#(lAF5Zr;^;P&S1bZrs(v(9^YDjgUC;ayy+kMuGMYv4Jfo>sO1;A^P>)0&_I zJZJ0Lwp($6o#Op}cEr#dJNSG)hC)|FmOEil4b|DjNG2ojRc2Mb#EtM`h&rBipz_5) z6j}^@?}j)RWDW~>v_LV#^e?w2%+RH&+B9;M4JsRugNsDwz>lmocv_CK%_W;!7-qP( zwBD;Me{n1MwQ(y^2-7ZaGZMytZ|wFJNRHXpq^`ellu<1)IG%T_1ENU`7Rt_Z$+XO* zrrP+mBA5>}I<0XkzMTNxqV&s4RiRebq+1Fs97ii-i~uU{>ivIyxI0-71}ox`o;OTI z9r|SINWK;?WhRMFLzQUN8@8pqloug$Za7sWju+X$Rk!4-rpr%)pNxv4;k$OJ!)zb4 zM*7q@kynzDWp-@z;_!PrBxf*LVQSX zjMEsv>}*|eg-GiN7sVK$TLe4EU{E>_J2{uestS~0RRcXDB9kM6g&4~jaf0Jn@I`8{ zJB`p4W+$6d@^5m5Ycb#dmq+`044w2(w&C;GOHDRd)^rOj%znw4VHGF$#ST6M5#~a+ zfsq-Y!j{%5bcgVvPz{rIfjq=E^bC&3xN&lx8B**9@Pd6iFDGXSZ@X8ZyZ^8B6iFg= za1>q0m&^x(BYacI2@qkewC5p}*5pFWFBDi(p(05|x@usUut{xlStLprDY`ST5PZ3v z&QK(l(FUA0&K1?m%$^gqiL&ZSK>Pdu`l$YulE&1rhTf4B3Nnu}fncTkU00CXJ5Ne> z_7*lp0P>}8)&}UF1YW0=+oG;S3&RR5Sw(GH3>g_Y?PB975a>iGSE0F;cTaVyFpql$ zcmLlU0*>quo*>609os#VXW`~zTW2wWc9JoMv}y^VY@N0Bd2SPBbwXBjds%FksTrYB zD;Qu#b|sw3NQcqSrqWf(oRoV1-yV^V-OESw%aR+;SKE(^+i9iK z-g#Wf2^Zj;lZEeghtq<3#l5ciyJYV+16}Jh%pD)KNl_8z1Zm;X>=JnrwGC=U*RhKa zgm%EPRXbR^|BFBV@t^%@Jo7!a`4Rv82l}V4e){Ief9g?!P&E(a0x>Vmw|IPmsTJMd zMF!1HMwtyG>s3dF&D~3hcz4KN2XB(92T&MHr87lS05)Suk6vEH-7JQxhr^}B57u4a zMSIN|sAO3)XV`G-?RY+5J*cM&M=#U|Z#-_#>n(X}NdAQ(JOe|xwJYTplgy85l6h-} z^@Z?#RKj;_s&&z9ecQ)5-<^E@x-t6iUfk`gG1mp_VxFeRq4H?yQFr%Brh?x1{bQ>y z1l&ec=LwpTIXZKDRKxO)+RoK(l}H#Tg9RD$WCI@CMNP@MsE?f3tFDb!2Mo^DKACk= zOe^O}bzg-~g5#WR=5PEs=RNxH=59P(+oNi}Pk}JNK>M|3FQJCK+4o@*?$=_6Mb?T8 zyImd2sW;7$DO5mj;R=BD+=FDjSFN#vsO+$^H`P45Lg16h}N4;*l7J*248G1}~*y`eGOGH|ssSr~HH3?WPHYeLiX-ui3f3ft7^dVqL44oRw zre3u53Fz?rHthzMATP12v2c=7m&F`x30OYz0G&tH6e&HmwWU&-RJ-n?H8RVZISrZ9I${us zw}>@r?HK*YsIpw@fIwYc^wH-gQ%B3B5Xc1AgFt~F>e?_svUBatn|I&pc!iZJxrZ|i zxb@&&)ZXNioo#-iovkvuSI3S?5H&YhLhB_L_Xeq%b z6k3*Jq&i$jrhO{@h{s?Tka4qh#3)5KQ=_`uWcR6Jk#QJ`$q2zZZ%cr@`l9}l^J?#n zl`_`6`=-4eKe@PYz472(?J+W^9-~h~;Xx&UPQ_NtWl+zy&AOA6C)sYQH)=kXq{@d9 zD@28@p=wP;VxVXCN&H9$9Sku9iWw&`q60t;0D~sR(T(2F(qf$hp!`cUpBcEe2Kp6uwg@>jUH|gE|J3G~=6!BqaeHc^-n9EZlk#a8b8}nx}wdi&-?%3@e~4U4DC@-tMm>RY2K(9b@VP50&hs%-juzdfqm8Ob)mPVKr>VwAq{8U&}AkH z%wZ-!Hm7boEx@{1@g&H1l0&lX5qL9ex2%x00y~J9ey(J8@0q^*c?;|@c0#{A#LQTW z7v+P9B|QXY-vL#n9+EVqpzPU`@0HJsRduisQ1&wXbNCSnGd$Fq$uxKo|E}`7=F8cH zq_$GN4vMNVv6tLR_y1$~_M#acGJ^_wr&@D(IvwMv8LkH!720+T_}<4w@w{;Tgf&2-IvPIhGIw$mc^X%d#$E zbGM+ZN50JDhNQME-(ijXu5wn|lH;E@hJ;gfD7lLoRHh*$`rV|YuAmQ9XiicrItbmB zV50`EWK>q{%t`}RH1kOq@zGwJE_dLyzQL|1BgIs5AFV5?RA~b@5%tEiw&uh6v9{a1E8Qke+p|X2x~~hhgZsAA@5Yl3tV9M<;)zihu-z*h|}BZAUdXO zmWW4@q#gK#L30eZlhuvcYgJf9NL>wXmh28LsKeE^}I4H;!QMNA8DT{efy^^v~}LWVTdl zp@3&XoExEKpa_@N;^&mF5yF^9(aUTw>GJ7&VdX0Cr~+67AXKGL48C zsI^Q>%=_$-z(HOZpw%#(bgZDCcEUK$azsFloK@exbdzK2=#CGJ(C1LLk4#F{F)G}c z{oi|mgeKM%bE>|!=<{4gvbs8vo7QU`PVdzC+gY-@p&QeyvTT8sRT@@;GFjK}Q`rl^Qds13^k;wV6(~ zk?u@qK-U_BG^IilHC!asQt09m@ML|iwu~TQJxO4j-oQq>sf@sS2i>Z*s4~;bwhInd zS4zHafb;omx;rU=fL_7aMrxEvE~qs~(G%DXps`Gk>{q+2b_qyB5=P!zxUyC4%$ifm zu};kn(pDP;KT;bAClLfgND@mj&{tipLceRW4cskpp?=n4|5M*w^6MK9*k`0T4ED6G z?bX!RyCV!vXSVA1-+QKm7$)L%F*A3^NG=$PG=7Qy^8H;Ss$o+1Y-MgsoZm-*IcY%E zs5bW_RV)h&+=BD`?xE{|c-&mAbBBFfOIJuKZQXhqg40mxsHt7COl6eBtwd%She(uzAMM5PN8u!y=m5(#IeYLJSlaY3eUg^q4LVZ(@D5;GxTFm@V8MJefs$CcG ze}QF;M2g^pIvI3)))GW_S|J{I1>913ZVN?cAib2l15e=Lp;N72YVx;Q0Irucl37fP z2Q{x#O?PZIvW@J%|DTViXp1?}X<;I{s>MIE;jBCqvR_d} z2}w}0xyUb5g{WVqY$Ankij!0I;p*0IQl-vnTz7q|wm6NW&Xka2L-V`I$FaA?7{f-| z63KSE-TyCo3RT*AKrFw&8@+l;lI0akW_3XDH6%JHoT19%YO2N@Ozf*K;Ln)dm4DZo2F`q94dPEE^nNThw$+lNMGEcUx)Tgg&18WnOR&IQ&pxT> z4SK5aH+#b%vp-5wX6j@ZlEPM|VS(%5ZX07km~yX?5@4d5-n?xu`@0u+ zFCO~ccm>jGYT-CZJl}XEpUqS18IDpcsXnM~KldcmWB|Wx?PW3n%=N|O5TY#kUcw8j zg(mTb>1W+rJpr>@1I??%5|Sq5fqk};WKeCD;KFP<%HK-O*~K{J9=My%|2M(xd}{ZJ zY7C!`Q*JzHSIhg{sl4wg9c>?feUU_jMM$5j&lL0~zmV*AXgx^<#QH-prZ=eBa13OS z!lG$Oy}Wq@)qUF@2DyYSsXE7DBs=KkL}0h+R_B_)mch6d0#1_K;AmBSr}=!GqMiqv zh%-f{4%L>>8~m>6T#GO#cO;m?48*o(z$J0!4JXlVSJ9L80-nSSyFpK}_S76a2IOqP zD}FPpkQp!$>tPJyi|+kHS0e%IFLZb5DRW2`UU(Ycc+@_l`ca*5SEs5AaOsvWq-6bp zBqsL7e1Zp^ni{=J(rFwL-R&yPh=Wn=rADwTaU;ZF)>e~>jbRP&XE4PaGVc%|K)_IA zc~T?G5}fRSslD5|yX)4Lf0y;6@?LyI;is$A8xP!7r;TuO+IY(0$;V$~YAF+Q2Z3ZZG}C9*2crhu zFt4V_h|+?rW}G>&kr z!fn;}%cw>&ZY~XCH-Q6eEU}N2Co~>X18^X-0C)yGO|36+L|OcnD&;zR|Gzy$n-L$K zU59Wf_{1Q!Nhf{0S!QxgqYHe>jIqqn42&G$zpD*UPL>)FU+uU2tx59ogS_!`<|slk z1^A$zVwwcgBA#0JZ+Xu78yQ7 z^|^{!?B+eB#joU+x4}-$3;`@}M!rk38k`UFV3BXK<8JC^4<+-ETQ|789|6pdHQUuy z|ASw&*I!>O^;?hJuP*gNLcvC{+Fz*{_^t20@}%VsrE8_gr&{Z~mb_Vtu|#L;iZ-Y_ zF4j3hPVBovq)OTFx6-?ap}+`7E1PMM{)OCtqr?hV^(uHY*^u^pf)i@5cObMQyg85w z^A8Nl$=?6(&#>H0$pEgzBdYXmA6il*GM13pY9lmpj=g1N4V;U)6rQi^(9x(dzO%KV zfKAF5y1P{qt(w^c=~+HT(kD`#3U2RdARS8$$6F;$RjMEReDil}f5$UgeRulSlSbclRREJM7w;H6Cenp zWEUZ^z4p-;q^X4o8J`!P$-nd7p!+e-o=t&nJaiYUES^?beBvrovqKo30hPmo-|CVz zwq&-!=xm^!3+P)WyFHnu{zY~CTXwFF^9MTviYQ#q~bbx-45}t6)+#d?j0_Q>Y-{SEKIK2?}0IR@;25E@Lw91_#)oIB8?D#% z@FXVx)cgPY8J2mLK)H{)8_tQ)V)9UP5+QM^$~yxz9Lb62F---Na|1L%ql354mJ|wk z_E59UiYx@0yg|Mj`oYw8U5Qslg@C2<@<%J8IXrxYwXE`tbGP`djU3LES77wV0=*0H zbmMWmdT9|)mlpApfas7Xz~ORTy>H$@Kc##;|6>sDj1dHu=e?5P^a>AlfO)o zad7ISPq4QkbIPQ)xZP9(p#~f4)y34(#^ZPO z?!uq$E}m*<0oQ0b+98P%!Rr7#g5a`GG8u$j3%F*R+M_b7u*nR8)*UUkx`GxHrR$i78N5pyGE^o^yWM**CT`MOFpLa{kRAji`*=fW z1nE@|`V%g2Y*kbxnN()7&^3CI_uku)8+q@&_ZITrd+8sLH^21-%kaCwhLFh6mswyp zi_D0Oxc9rq?7h}Gd#^LGhVd&7RM$l&qo4}UqvI=pJ?9E69V)zf*gm2g;2;t05&TlEawayw6~O?yi)=mJJ!`Y1cdGyw=W*KC(doZzR2RcA0=gHysBr})DtL3&XyKU)?JJXD%grT zLhFZ&5JLb|D!?-CxANt)|p@)XXIv7=v-ViofS36#8;5c5rQ~Y;GIBnyF*>n5BN2 zqSUnIM3Edz73eKTcX)^Hgd{pSx`on=u4+H&vnLk5*8Gs-xk6G7A^C0h);Se$U8d7w zAdYA(H8zN>#8=N{r@8^_cU6H`588c?<*DxUyY^iRPlcMuVXimhHyFXO$JRE>s0pWt z*zp*NiP@F#066i2)rL*T=s5{BK{Y2K0PY4vQDNO&;3M|K+$AT~1;KYlEYlw84Bjaj z9bMB0KeNmE_P-tqRoSb`1(0LptO2J59Y-KbVET%!;$7ASZyECF8o`Z40EY}}b|zXl z$%X8#9F?|uDKea)q^PI@L4YZQ&LA(R8;!<}43a@wwyNin4|)6F!qHJ4k2;nZwxp+x zh~5UXleR@hc?z>x24+qG7_p4yXA+b+$-Kyd#n#?xw`kK#wZ!R^Q3@>NeW{Py5Nif8 zklv+2YUPlVJrL8f3)E+P``-_no5T-~(Ap5`=@B3h2Kzw@8xr8x>m(-)shrq6RgEC7 z9qPbxuxVaOl9HZsef0^rUAtu#X_y3<1$E-;`SuIFByWRc|J%!80 zFqtxc8S;l%t{G^19Tn`V^V+5U)W&L%x#}=d9tyh0i#i70a<$BYrCzd8(iPlfA!n0h zlbh7C%7J}?n-G6_sm9bsRKYnv-;KNdpNHAbJot5xM7l4Qd67BI%thuD1YdSetU;y= zO(I}yQ#K{zS)|0gtUiBJ=RDy>L4u$QxB=`lP}b_aHUX~#v6tY%UX(D%V&Iv-u8ymH z`@fz+(R!=0lSt4Hv(o5SvWcz67U{8!DCsXNSqc!LA8fpE7+0}OB8w6F%T@?m9ZQ41 zcF;!1h%YVMGF2 z(_&J{6w>C=%|K~Y;yEj>*p_S-3UdjCWUm7uB6#P{4fE>9IjxCb+h2Y@-ZIADq@qCZ zYB4mGYqJ{2JR2>;a$}E?YIZgUL7C z6-Hq#3A7YVsAQ&997=%TC&`pK0Fxn>-INR>vMS<}9V%Rv_mYVaTx6<{H%rVRlX!iQ zH8^q1CkdFI#rl5jRsX>nZ$D{o-aLHo^SeUmi^uMX6UMJ!l!SM@DER;q$w!mdo`_!# zcE2~^S&hIeZh79>4W=sI9~D2%O5r*OMbF{zmzpQP zts=GExF3~ecuB9`I4G;^XB-QxtklfC3XJ(y1?Cr91?Fm@kh5{*#gB77z}FSgn;(DH zU%h;4QcX}npOk09anUfgj1r54L0~xm2N_lAT2%-4z!Bp5lJ5%G(^Zu-k+O&U6Ir`V zb&p0J35g(LrCJf?L%6+ajT)bEsRg&j#XGV#%J%hszdquP%j+@zpJz}wFDbbOEC++L z{+9}DJ7iOrw-!ihWH5T%@G2$;X4*t|M0$pIsslXn%Lz*=J zesoX>_Kb@7L$}84=9z*S&Uxj-^xHcd?p!=(&snd``q#w)ae&|;-Kd&@Jj8ShoQiB2 zb$Cw8a@C3OOpUq>_w za*{uj`kPcVPjchC)(A?fvc3u$%U4gu#fOwNI3=rSgT-7^mcE<|$%022(DN~rirZt> zoj_YT#_CwtF&wRcGLC0AxC9voQU{j2RmVth(p^fWI`WrvY#3=Rxoud@l?66UFcQ*= zy6%(rF@xLqM7(&m*#d`0T084p`ObXe^=k9Q7eBnaz`uIfo^#ntN6VYT0NXZT{^526 zI4q`#r3om;#g$Sfi|& z4KPbkNG0dKmr0u-4R9zc_S+vHKmG1|S6U5O&cZc7)WGZjQgBTK^0a7WoC;-S{KiU# z$${Vj|5H#~sq}1Rm&1(N>SR+u@J`~jLQ^(swT1|U8j6qNv{L4o@<-chwgur1VAWaP z=wcV1bDn$hZsY1Pd-6=sp3Vf{wF&N91EOCf1ETke86G#oue^Ndzdl|*{0uilwf(5q zLgklEd|!IpEBG8>p^daEO$lLn^$;0pl(BacNXZO&+yQ_Hq*GZ#Qc&vJDKTiid&s^x zQ^@Xh)uFRdpef0IfwTa?p16Cb?fD_Ix^s2u#Uu9->7+>vq7h^V`4tQz5rV$J{j!}& zN(w-$SX6j0fJSQ%$$LZmTN|sm8EPtyOv%FMCUIGEZS0jlF^;(CT zGqeJX<+r_)omUUV)Co_Cb?=%ZVTcGs7)t8fg+)bnx_~MuXB-$%Rp!3WtTL9$dfX-V z2qcWES5g(vu$wn$s?t_{NJ;#|EU9}BP*|i&1TBIgg*%RB1C$1WJ$*LC@1l z_z|kC!&e8eS+_qizW>{nO}3J$Sd?@{ELzYEU^$Ff38B8o464Hg7_~-l(x*S{Ee_Gp zq;3g7HKeUeyNDg3-a9ain8R_&B>t{~=V^}HDstvx;}G@W{N0`lZM`n9V8T^B?sBsv z7H>O-hPyYC-;!R1EUgLAO=ef5-Ku=q3Ij~I4$~hQULLk* z;Z(Q5AXM_$?N2&b7{ChruKuCabq(qU_=RJPFr=^-AEy- z=U+7d`eugHgqHb41ccPuCRm3C8YGmvun6I^!YqPnT!}+rOP7e~M2Js57`Yhoae{=x zq3?`uGTZcC7*kc~*(m`EAoRIE=i(dW^X=yM*4q~kpR1?#&BM4$aTkx>ldX>S)av+- zDemf$h;J)2o~1(LYKHO=5vGsl8Vo*Wnpznu!4hzpbZMO6^s1&!Ffbz-fow_T;QU&W z49K&A`xO@(xzPk&c}b0*J)+u3K0uBDZqlk$mAX(0DVW_trt2~;D5Hi{Vltr4^U2A@ zk8_&T-;+sw%GrW#RfbNyx~gN~P_+>&WSGX3N%z#c33^UmONS$9%MR}bKQXV0nB_q+DP zsr9X@`G>p$!_+ZorF+VxFprS@QIog6`^BW>kYxul_hNs*A0S1rp{*Vs2yE5?2K-4L z7Q{XU3|-`8le3C18Ab)=ITz4etY~&-Z%aNqnzuW3yQ>H83HIhs zt+@UJSz}Vf-teTV6QQ!=*nl<(Odh?(;C}i1c18#Ckd}_Y8=xu%2Cyd!DI9e*UZhs` zA&9TQ2V*#1%{4eil;M-;Ll(+${%2&fA2b+LTc7jw0>(`k|Yw%6->>o>mmIU7jH z3*4=@s|WFk_2y6O&A%%@zPjA@Bd-4a)&ug}>firAtAC&2&~)#aiMe@6kUC4S-z1^P zGW@XJ))|J1G4du3gT0E5@T5Mk1Dynp^8m1>`LuF$v_>bDb8gvls|3st{44}Iw=Hsc z+=mtR@(x0Ycg?vCd4a>a{C!^SAk{&d3mxyrP5~01*F=AAUKbs#)kcsc{ z_NVBwf+U}L5=bcc4$R<4o+8Zv&gefh(t8P zo?<*u@?BIEX-!LR)dFG&WOC>7tl6eG8+=xJFWa6`^2Lwy)Dr#b4B$SBK?BtxrENmVuHWMGwA16s~o zHPP9rG?P_ta`f4#deCa3e_Bs-SU21r*W!_(uJ(QWh;1nEXPKFha+bx?x#&iEOH{PA#`P^R#&83Bu=X= zW{KjcxFKbI#<@XwYpKvg*V@~v0Yuu3G4eNR>FsxSGZ#BeoO$AU^LmXhpEwY`dfcAv zK=cDRmcISz&#=&;@g;&~9qDi^CcXejBe0Y$Sz-p;gXMZF&^M@h-D(#z+iB6o5w_9I zNgvI(DCAaC0DDDg?KsFFG$9bKKyto~>6kQcVY)?N7^?-tAs_6CChl|X905q6rYhqGof$|Aw-?$6byS1a3{ zdy?L~)N`F7>BVFA5lLa?V%QlzHS&p$&sBj+Otv|9^$Cqu7%!7mW!j?7OKg!BRE|RG zY5+6?Dp>$oIs*=n(`IbQk{mDokjdaXGY;qF{j?YselmDQ`p}`gGsM2Qv-sReFdkk! ze7;}Zo0nWWYR}f?`V93KiveM~Gi^J8c#EvNfa_7+>>Gf*R4WTy&qI-=xpnB!db6a3 zoBd`RMit8(*LEP!BPZ?L6MGdFRZH7xH`|Yc$QjkKAT9DP+~W3`ZLCCw(J5#tPW`;i zz_vx|fK@7iG)^UXWKeI^00)4AeEW1Xj_5Q^wVeS#U!dYr-!FZ_F$OslEF?vIuafsF zEmyhb911|pZCi5p^Y*T4^WpQi>-FdD<%>5jU)@pbtH(AZ+}Mo z015-Yty6qob&9IUW~}@GG-P#?vXzrOdJOSj^+|w1ZSgvFB2zU)5R+nSmBwokHDTi) zH3#yf@+OD4WGiSx2WcMim|1-=Wfv!70k&WnhGoabR{N1ZUoc$#IA<%n@%{Gs z=j-JYvr1H8{p56*&uumxYlx{EY{R7hVTcKPJJ1wh8_MS!DatIuhjQDfDjH9V-6v`Ee#Ll+O-lj$g&(oy)fc;;K_ybnV9^P}n`yPwvTptzt$7x}Nz zB67CowsR{jPH^I=i3e$2*B?ToWP~x49!9KU`=$?J&%E5M-F2Rrpum<-gD0%EO=pq; zcIzg(5BVr8ksF4i51#rPYoen1tt2-J3ij$)KFlc%Ph+EL;GCe=V9y_tN78hInFHfbzjIcUJZhkS7uak`sVEv;Lwi;6t9KM6b5*Y8iQw;A-ynXFh}S45&TH zlicf)PD(6AfJy!f!2S)ESI@L@HAOr43HFZ`fGo6Jlcu;jO9{j>oM8ad?7gucYn6or z*z1tNuR023C}iopXRpAj!i!V~5j}^Wi(O>SN+Vyqc(n7m%Saaw+mm9h<|O9&j#n~) zP|3QKVD`2#lfdBui*d`@b)#luw##OXD_#WMqfgeZ5#o00;wHq*$hO#^dtIE`+SI}c zL!Gt}SL{ypaC_1A;O~ZMLk2E@6Y>upF|C1vnMfrEZ`Ws71F7 z<6OjiwSUWbozI8YFXZNPclCJjuswO8X-@~5?|8?4xsuqQ{S50oWlu0V#FdIRUJTtc z?Ii?3*}=PyXg$nZvW?8>QC4S-x4_YQMaH2uP%rTh(Ced zizRO5TyKBwbBMI09i<+pIyI+K#t0`3lgJKc2H08tVnL2eZdz5~ZP`AvP7QFcth$rB~%{oNBg?b;utwsLWeEol~OHYCDr#6U<-d z1x&4VHUX6uyu_3Gh{cP^jlfZzlaP%QVS7T!gYJF~BfnN$!mw8MF zyiROSaEDi@kCF=_P5=i&t)?EWkOX=*AE-M)mw@MFiwr`6ipJV=CP0A=NK&UImZT%o zas$8El2-v96%Wx-gBbjXw-xn;mytRfjATzKUPl5Hpw1K`%Jzk zfVM?dyKTU3;#^UXinueTGy}m+Y4mfJ{55rAy!cUj`7ob2Yq)ysp1DQn+vc2KyyhHv z4p!4cj0%lmgVhH7M=GjWHBFvZSWV`V{-_vKbEE7CJzQ>W9e~9F$RKzg$4Y8#sV8a~Ehpj`>6 zv$y73h(==Y!=8l@5!?gVCzGVXHK-*6OU358-#ZI{R6)5!?$~u?AUBcM+IA0%XiyhSbJEtSKChTiAR}_A#U0c zS4;ai%p`c2Vv-=wU9j+9%`5DzH-OZDr_Csl26i}mn9$U#ZbTQ7u-Z2OiNk>Xw&8P-0f~SF&)c7WG>L*6 z*X&yk>9*~#K{h znrw`U`m>pEV?hUKxtWZP%g)udH=Bk++?!738wZ$PgE2${Odoh}*K4$DtO zCrqwSqXCeIhn0E!oUAL^=55=bPDStEi#lZ%6Bv%=%8rJqvK6Nac_pl;Zbz@ypS7!T ziOgT}l=3WlHWDJ>p)eOfK_1LtWSDo2AWXxG^_Kth{H=$+?44A+$KP23y_-bu4v&Bk zpSjY-XV`aKslEOFV*t84UA=bPp7V57&N$MbnUfG0g_=l#I&6@uNe_g^y<9XRndD2N zAq$tev4?rBwWN&#!Sygz)k;{wPbn&{)h9W@$b%#4vU~6Y#Nle)Xw^$D6G#R*xcvps zaFLMZZv|E?QjBB9Ez6^m*9jLgZh7Q1%H2}fatl_iI#afO$Wv7mzNa<8fW&fMDb-5K z8pG{4jVv^qP{LkXQm*#t$%;j2v%sgy^6{>S;bPh2b9+gD&2-)iyV$p$fmr*(WV5fHV4)gUt!riPSkm91SQz$pCNE-z;h2|$v# zRjWHYwe&@&+KrA6`%(FsdcbMPUp<1)X2bIg9aXBS@)B@zWYY{4^dMK; zi}ZaBqXti!Wa!ixu+Zm(9}L?asFj~sm^}yY&u_#}kpIc*(Uw;T|EJuJ-hb80|pafCdpIq6i zQ6h0!W=%m33>(tjt%9&8Q8mR9;yd%mj~E@R7j=H@O$L?AlbV^94rm~JfEe=Ws(Z>M zYkX-DIjIGctt9AJ0JvUCPLR8* zs}R?6V)GWJnDBB+%D}VYojR3FzDN2;G-lK zt%q*v{F{$eQw9*sPyx<_8i<|FX;ly)8&%cW>;?LPd=g|9J95ZnqlRfmiY68}w*j~N z4ay)Rs^8e13Bc7(ujhRE@>QEJb`jJp4W5NAO01Lx>}`@^v;ZJJPhy6 z7V0olW+O^77{)dLB?Xp~!<5cAWR~Ccgas$Z;1$_eWshC`VKPVvoKBFE2msR!es-Eg+?OkaCp1z?6jw`_{@(rSMcy z4)ZZeE-JCu)RkJG@nn?aw%=Bxj|B`!5+kTt9W#YJwDJnyB&uf#_6(LNTx_z`F?{rL zh_Danc?i6>)3H^G>hiH}t}GL@UbQ=`T7?*vpeFM$yt)}e6AMhx^DIRw-Q*U&4N)VP zWYKnsx)6{yEBLIOc=h9)p&Kmp;fojj)n`vkX)j)y;fDe*U~`bQC9$1NGY|m9Ke9E6 zSE^dF#D*t;09>&n?xrKgp!lUrwGkyp7vL}aQ@{m$IK%!ewL+d-1p^R9Sqf`;rR@U9 zTc@j0|2U=ZU!hP8o>^H7j-qQL9(59Xlk9hzaWYp>_opgA!Ox3z%KDU^fl3^*4FssM zAvUUwuy83r#mu_guYjeslSzjBv_pz37)VjjePj`)l2&;+OAB3XJbqSu|6G?~FCTuV z>d40r$ty2rd)w}$hAtk&Cz4}4CCB*As%?9bo;|^)Ih8|^(uuZmZ}9MW(Csii5~956 zs!dtn6=DqQ_i2B+~fXU;0?pt|JGhT%n_b9%^cZ0IVu| z(lR_QO6{~Yk}xljt(D=GKNK{kRS7M*2ymYAp_!p7{k@<9laa|}qM??saH#&}z+xhz zS)iLr998ULZ+}@lBGZT6-CMC{R6|DC5;vUurG4};A`+<_6Ik2vspwRnH+GuD2P$apus!Gb+0|g__E$bbrY=2spp`C%906!KJ3MfN1Yy0R1Zxh00jh|GN#U=m zm*5OD*f!M6_8}D{P!bkQSF&=^Oe9U_RFt^h)13|g&do>FR4`+*Y}|2? z6V*V+_B2MP!~p35K|S?t#~xI zS@l;z`**dfAc9Jtao}z$aDPIi;_7jGB2l|f;@1+jzJ8}L>Ut^At-aDXc4`%)p9FrR z2wwOT6Cpj$G6G@HClFHtqO?Or0Z6Pm>J4*CPC95g0m`$BZR!le_I8MgNVlWt-i1Ii zr2Eu#a3fQ}a{FEJ=yh0XD#=djOL2A{Xl&kWOaiV+wt|v@^g45q7;zaHsO0pMGFD(> zoXwI51OHg{8dWLaf}w5HouV}7o$G$-K^DUryz1BOZYt=2j?LR&b)5H1=a*V@BUxAV zKd?``O3GesxMqOXv+ZtWD2fX)xWw;=(X%a*h1Te(`$|Xfnb1k@Ff+kqvTn+v^aMjn zEZGpG-n?sM0cXoNJD^(X{`ObvDXtbe|2TBlpEx@=yS1^8YrQ2;7GL4#HY6jxurV9) z-oxI!)MJ4Pq&8U#@j=u*Ge{Lq-v%NWshHWLXmqX0`r2089-5mb5-7F599S$?axp2 z6alI`%gL%;C|6!&s(^3};)Jq8V%$}QS7VeCa4(K`th$6wTi2nmY1Ktcoz<)udeSSY zMs$mu7fVzLlAyH0gfA;0}K@%^`+Y_rKZT^Hqmq&iYf zMrJZQCFw4W%5EW=67rdHU*uwGJPRfI-3Y{!kL{0Rj|AM3vYsSWZBP*;K`)Vr`AMP3 z!lGDJejl@_sFMus@1@$Bv}*{(m530EBsKw`>~7ZqjE$KDy~mXJE{&g+t(IW_)@K}sRi~TpLx~xJA#(f$2){? zNW_@vWgaK&&oeOmy2q%k8f_5JK3J(=QpkxiXtpwGqp+#ivV7QoycD>r#?8 zP{yR&B*=qh#R3>WA-NdIQCI1g#2h9;0f<730GJXEym0H58@O(ZRK#o~qI-Z}N#EXn z_ffO~u-Ll$CB6YVRwoU~mv^yr)s=5!>RRb;=_CTQL8A6T&8#hELLOgWK1Wp6^-3T} zrPRoSP7;_pkXjLVyscLkw#)oQQQs(OAB0rXy#4jZy_94ltjs3>b3UphVAeEN?mR=6 zzk#mQBt7U29K5NkQy-|QPnFyb(9FIYh$MNwryz55oxWwz!P4ngld`*+DvW`)MIe%^ zLU^or@bS3)4SEX3ap&zMF%&J}Vh3Kat(Dx-Ck!YzItmj4PyKMgu3e+a%*YYBfFfB} z*)?8xFvjE)(*7<6&=-|k$SjsXv?QX%i1b4;f6B#6-}kq_@#qAHKdPRyZ8iaT5LDDYrA0#3M z_CsXD1Y@MH2@PnF2dBd}=0vCQMLf;wLekF)g|xOzRyiSi8SvwTPmqe*aSePJ>)!s> zV|Bvk9uM~laZiAX1U>@5coO0rfU~m%O)T=4<;i%~N&wi2hk!DW(R4sTc3|VmL``PC zMHfd*(1d8R>=_Zz+;GF}AVsaH@CTJ_bB}iW+m5HmY*8hU-kSXR)DpGSCE1+>yhO0# z9!jQak0;`FeLz{=Fmj+gn~4L0_9ip6O&dognM#_3ULO?E<7RpZ{LM(G->X=R6jv0a z*6nXUo`O)qFHPy|!F$1s70@;GGhNG!r($M^!a*C2Ic7=dw$L+X9e}QcZS$135?lll zE)i}P4p7j$hW^Ee){{rH_Y_gzw<>03H%oR{OiY` z`19oq+XCBMOQd6xd-~%iu&kv7qR)V z$mk@#ERsN%8ex^h!_0%3GO9H9QXJ;{HtQT$=M%C;1Lcww;+_1huTnT>+ct9mPKF+| zV+EDuL(MXSzzNVwj!lLdaB6alk#@G;0>gqAOgHtws-9+oVUwz}9;8Y|>%K*_TL(S#c({)uI z7N(<(35C(||1yg$qU&dyg6?%}KGM9ZzUQhA%qXXUAjM0vjxw%yL}x?#C%S=|rxeoE zz1fQesE`R-Zg$@O&c`6Vr+iWuIe_6L@Gy+CvYDAN=wC_f993wV#x7l|rvZ1%p>piu z$qs56HSp;|RM8!7As{Dh$0T3B%4Sbh#AeG^$|Pt_^=s(af(MD+{;s3$vykP1>V@Gq z1W?DvBeklwg%HUrl8$xZP+@LfvTqp%5UX%NDg~G(az)&<^H5`F^a!xvM$#$~9Hga0 zO8#TeV(kv%bEw^;tAZb_4)Rg~Es32Z#oqyprK6%V?!0e*&tceN z;8qQiOa}_cNu}4S3U-9X zC4nerHj(9zkXgw8E|DB9;d_C21TgZRx4&0UK}KAq*bvE9v6hzV;N8KmUiNiH?V;7l zcWO>JmF&{1%+~FWLmI=5CD=?VO;=T9wd10j7fN7))KjTTUP270L_z9MBR+EqQ0M?f zl@8thzGEyLKOZ-M#Sh&SNP2%8GQV|fpO~`_qgd#rixq)cMcl5QobGNI>@jTd+eO^HCfj zN}aw-IESYIm=Z@e6K9Wn&r@rL6Z`O&oAz* zy1~?!WsvvnA9zgOav@Gj);TJr0>Q7;ovz)Mlv3E*N#e)=cM!dA zYQ*iKv)*ha6hm~b$JN_mWnpAYD@sH zEwlUw_^=*Fx_c~lC`x*WAgiQ9+MNWqi_joH zP^_uyH)#ZeX<0UGQ?)JV`f0K11}jB1jf>nYh`xw^jGtpaF>OF}-7~P2Sr{s3fU;KI z@*9{gNpsuCK9BXNR}%ZQGKz!f=s@&*=LZxf)^Am&Ot^BCawTJwqIRO)bEf=5#U{AK1t83yE=S>>#A;!tK@mKUfCaj?Y7dP<<| zJLA>s`{s~~$L(p^I)9d}dq)>BHfM!pC0L|B2h?&}GLC{R@FndgnBReMT?HOSTfVAt zK=fe3vUGXl8Qjtyg`^d#rKy$`8j$sx2x4bJ{vWkzzhTssd1)Gv6p&R~uv>PTI&Jpc{4?(ckK} zy0dbVbQNpT69B^?kCjkJ_y>URS=6#2r%^)amJO(p<1h(|Eh=fRl*zuKEr$KzfphID ziN<)uxeW(`;TtLFDc`o^S_*| zGvKbllu6k+@-7iBxz#q>6Tb(O@N$h@FlTQ`>P&>Qb#2>)FiGWiBJLMI&Qpu)_j)V2 zv)Aj*moJ}|qXL(!(I$?pR=4EhAvzE`U{vQbMOV~`Of9z?GK+fDful=@A@Ymj>!Au- zW&c8InSFMbtL|px!T}QiDucs-{5Bj%F+=mp14G$d`DSIr?h`b*s9QvddZa*dCiNwG zZ`o~)3RKseT5rYkb2`=ozpc!MeAGcs%JTyPXgu&0qNfuzHfUGiCsVr&7Vatv>Y&zM z`BZEIkVtCd_K(I7K;`mV(amQN-Mso3=`^WVKh94k^{a{e3aK2~{Rz*h-keBLP#*`N z88|&F4_6B?J_TQ;{s3|&c8pY2{oCb-$2K#ns#9mJi7YkfbQ^xlsTmerbcm|obwajMlqp9UAZsIif?)M=tZ^V`x0Xi0j{U%y!vs@1&r%A9-cxIMM7kN zf)-WWz&0W4>a2ydO@u1&b?6POgb6k3T{~#-Rwo$Dy4o5^W$Y-ax~e&G>AbDhq23f- zK112<*fO03eiU6g1tUnIery6@^k1J%^NIZ`;$PjPekWdV?c@5j4l|Jn1Cer!1xl?s8e$-F$SfGYBvFQ>)>&2wHszL zr;Jqs&&l@Ro_r4ABm0fCid6g9!@!nS&Rf*Uc2=VZw2qB%2FJ>Y)J$0Z>x9B8I4(Ar9}D7^of?D(KkI6Ag)h zsk1@q?H_+UTx-V_q(uD&jF4v;#9OuA!qQBMIuC4Hl5dlcD%5)Lp%$&qkN7eGXaJz# z-J+~IrLw=PPV%j;ZFv!0Bn<$Z2cE)QTO{-An$NJqZ~ugzLZ?}kPfBoGLs9 zj>|{k)nyfJi z?{*@Y$ryKBct(}1EHxvfJeJzns=D0<0W-_NS{NzG05^9+6M$3!xB6u_r0%ilo)wUS zdTx4Py^rK8Odqx20YE<&9xIa38JexOXzvPvVmt5i?VmZug29to zU=5K^))+{W<-)iu;8Kp{JFA$tq^e$`S;-B$REIAy-@1AC05UHVTe3qYmwMPDJWK`j zpsXP;7`~_tCn*P5;7A4Ct3E+x0Bnb)L)a`&$8Cu& zjHxqVi9q@a0FR}%=^Z3O5W*@=Mh*iyN;G0`!)w?-s>dBrI^CYYlYLZ~6yXQfNEjKB zn0fo>9)+v5{cV(vfNJ}cKA6u!5H);yw^T@Im6Ew{TyML_+xy}@OQPGvV9tBtHL~n3}3;q?B;yVK?; zI46bfHo)Z)Ah2M%+rJP$fI{bQ>#m=n?s}PdC#D)KC%SHi6&1zQd zxeM$-f>~WpgOAyG0 zSCLej9PUf7k9~1EmSv`MV1Av{AxZi@Nr>h4FCCYmQxZldh)MWj1AxMT4|37DV2>FX zA8XKgSBubCuh-T+T#*d+va7QM1JJ!4H=N9D?gTc1gN@c!;7}T^1<)RZYHqf#&j9=Z zJ?TaUz30-Riy!BFa`NV-p6h;TlY+q;Ks`+^q$fndLzPajx0-sR6W}W8?52#`x8Gh@ zDdHF~7Tp#191l}s)i`umzOKQ9I~{p@nGMz_obMdl(j`3bojjXoXVHM}`jZk%2k=e2 z-_ZC$VBm6=$fvu1#%BuV!vUeP1~9frtS+kxcCgBqGY_>K%lfi0JEpt z@BZ}D^4`S>ilp%~>qlh`s!S`#{SRaoOk){Y-WiTnRD>QwG~gW&jw%lz$44DcQFFgz zG$1yk!AXF1s)jmzq(@ouMgcrc)g#zl)D%}FTn{!f;e6e7vC#cF6YPhVFJF9>%1;Uf z7Z2QB<6}N)ujhAn=Pq5USH$@=OJ(sD`PgiAF%NdF_fa=0QXwa0KU`t{g zP1@rSPo0+x=^}Z%rTMiJIk9Fwi*6sgO0I@bOqb>!6i0-)!Afuc%5(IOZ+6#Gc9IaI zZj)6lCNZrL6a`d$?W{6iKeUB?C6cCtuiHA|>?3UX!vp05d>VYx4{0$~#Cal=0+UmL zJ8VT2Ny!H|ij<34%PyX!_detUyK@`)#UuBGZt~Z?Hp2(wwF!=2tLLc@%&E|i!4b4VP9(O*)`ZQWOt|I31XEwbO|`>)=-UGv5F9wY+~N;)@-T|9bE=oOSt!q@Z)^!10Z z&;oQ|HNZ*-F&8zu0E(>%BsVe+oThsqhw6DPd5PE?4@U@TuA9u>Q_Go?0IdOn7vS7T zyqaYqTZ}r)Q+q}*;-_lLCLihYY?o{+ztzqN_i7=&b0_qh^%;|PUSC%a+7n(D`D;1* z@#{<1*H6dpS3mi6HEcY7_37{NC<`wIOz;TlrNmKGiaX$HfO}(QeWUXhNfS3&3H4yfQcmReW6bVdMb-bx%3Voy^V6;BN^7^`lzb-JMEZtw?v~ zRbRY#`}$6VnoTCS!@^&0XzXv;tjS z?9mt~dzTr#RMclAWey1+H@_A@cVyKtM9l{Tqb8*r55!)Sna~haMb_my zzMPYkh*TnYfB<3bOtSGarrP_6=b*OUFdui4lUEPgU9E5a#C=UG?Ym!n6H?BHGFvnL(f zf`Eov0omzHX0tA;(i;5SY*qgtApG{P9+fyja#|%j-ot~WHq&3#)}mg=zynS*q>92z znb;&%09g}^6@^_+C4gE~FbZyyL51{?d(y2J$D>)odqAX~_V9-^je3?`lsbk-a4!6&Zx-FkE7_GFKToyRvGMvg|+!0l9K? zSS|5Is3F01_<8#`9*Yei!OaCYM9^JcQI|AHHcvjSy00Y$)sE(3BHNZpLMoCm8o)+S zya+)T7bt9W7CzCLeO;t9U#;&(!XoT1Yla)TItD!&c8>CAV;lL~zj+)RGt(-XJi0sC zVzrbURg1x=9a2&PX(k|~m;O--FrHa*Y5-F>3UOtQ!}23%qNpQlz>}o6Y8zNYzLNZ< zU1rxMB?kzYQP5Wlh`hCk!?%A+Pcejg>y&N*A9*m$vLaD&fFD~&y>9CgU4rR>*UeiU zBY;pHnz49@WKO+io0Sx_hgG)>lT-C|Bxv#_A*IUHSA)~5PUl%?O;sU&+H(81j|+Bb zhLPO}R8hi#JHfD;#O`41KB<{hfzzv|k$eJYbWy#?>hqFyYB;<;af+&?iUdp&LF1FiYyx2I z!d~pvmZ7tW#ZOd{;+M&Rs|8s=cPD(p$2DB%-6n)~hsC#9 z1S;KfUAG7A_U|2aPD=+fjc=_g8l$2a^|Ou)5DfJ&UmisBuE`jgZR%JW07o@xZ21rH zNZzyXRG&~&m_q_zuuw>}mlTRNd?uGyHU8U`XYFc_SyAQqXWNIXALlH$zTT*S@B9c8eAH1j!U)NQF zemq@kq&<81(Rr^rGp`YJ5)Lt8OY6H!94j^nf&q`Su`ks`RPYS64a-PPM)y%|z`ZY%L(uE->k&9Bxzk`B+# zmXx^^j}F@q8sL4bv=F2^F&6nl9r=}Ul#~p?1YCM{6S??tPRr`|+h2Y@-ojDZ%NMWL ze9>RF@k2QLda9&E*lRtyuo20HnyqeSwyY_J)p4h563fjF?w&#uB_VMViPZUg*stoO zYpw!30GF#toH#2u;+rH>){tOS)rFF-0~Vmrf?nYp=Um^$3nYYnejh3qNo(M z!?Z1>2})A?D;QeGf55J0U(ZUw#@YgvhFK2tW{4TH&KRl~jp*1|j`H>xP1Opk z-TtFTJ+38%4}f5jB6S%@DAB#9kSFk7S0Y}5TS@?`AOY<9YC-i(QtGA|@S zBqRMy7rif;G5(%%fnRwOvCZg+^UVJvPKk!of+y6h@gQ;7|%y zc}hdJl-qxD%!r(^)%|8wySKpPAS8aVOUBHSTr&8YciGWF6;vq)awL_*J9OK{KQadf zyyzlqgs{k~-X4x937Xb7b7{f1usZcI_rpVU=n7xD^=aS!(_=5 zMcrc*i}o%gto5d5N2vmJkUcXYkr{~!%kZ1g%hI<{YiF3DB~|+swre2*g`nHOaY)x5 z*GlrTURxzRP%;Zh;HB5dxBud?#$5oZ^MX7aQDm^eEUR=HU1Vk*_VeuOV=bzh1_N65 zV3DjaQI$0;Fj0o=73Et-oFP}UAqjN6Zb{0TRg!zI?~ov)WEn@KWLH7_>bU)vkJ!&d zRja7Gk6cVl*-~o-vq6S6id{-B8>*kRLgc3$l*id2gmpdvnB1sNiF}=ixhb;kjfcx6 z1B`*e0RtEYV55qcJbq!D`!7@`269U%HUkv4e*_$H{2u#&X$s0 zQSqg^Dp6=~l*$>Hn;|bSD@_;61AC{Vs5Yg&!+KaF$cBq415v3*fDlN=Awji7Xwglx z9OWd41>)j|a?mByeXY=A3kUnAZ`L4U)Ya zW#QjqynBaI)xe=9Wz`Kz54x+HgOmlXQJaIRB6QdhEss87Ya<$>3emaAnZPci6A6-2 zCqY+9+AL2f0Wx^doBDIlHY~T^flrIt# zt;@U{KDDI}1!+~;OkkvTl-dfZ)CcvIg1>M7?FV5M_TR-1ppxxu-F@-noXf2q{U6)s zZyuf!u26dqnSxX1UpvggWClYdA=clK9Lku#bt4 zBgm7fNElPbaAfwSvRFZIfD}Wu%^`e7z z@@)dRRL{)3{rAVIp`@kQu+jyoQL3d1^Q3XO0q_Qp!bIsPmv~~Vo6<-HGDfL@g$?Pj zVEvlm1B?GVj#LOLK?YA#;zdj6GEfP4a$`IPz*5D)Ij+yyF<_`I`2{t{si-abq+_$B19-KF>Fh5ay_srh3(`>_`0Cb%AysVKSpXc?G4t|K zmtBN8l@1r4BTwA}5wC9l*0(+(p1Vl?B*D( zJ)FRsJx)xMj+#^qBYmnyMqo~}pMA@BjkxGkvt%T9stF_bN$*WcWd8O)9b)w^GGx7~ zJFEtntYkdkf>4weR*~4J3A#?$lE($@NP8pi0Be)l)lxC3D?>fe~}O{jN_x{UhFEUBFk@kH4m>fX6?7@`E>D6$XHa35zc4 zqD;j*hm}Zcy1HIl_Z|=zU6f8;Ln_5P9@Wb~dy+qteI;?(nN95jEnunYOoDKcVtBQn zJ8NXe0KU_|Sv^$>AWfH5{?4WNLzd(@7m{8)bWdwFxwBT&J1S&fEidw|+R3+SC*P`_ z{N`#WS6`ujd!zq;Z}cy2+&^=Siy!ASoxktVI{Mjq^G4?3-_RBub)_yHd{rXIa6-*@ zx(5f+7FE<_%W~u${d9A%iMK$Uw&|FXBwvCV@NhS3V43XcWvo#|Gn`=o8{OK6$tb{V zont%89s*)4C207-H%8v8d#k@~^?v`Y-dA@Ae%q}0{+bovzw?k$8RM3HpDs-oSYUdA z)ySAxsgA>grO?daCtayq)pU?k++@82XZKO&k$o{TUX4|rmF3X5S0b^N7#kcP*UP88 z=x(sqn3j%90i5|t!HA0Aq`oB_Xde^5COt=K!W+CD>bNQ9o>E;U$tJmG>Ly+85E* z#7K`a)b2JdX&%%jGn!>|LMF>;N6fEh*pQABoCr#TTBmskC9}`7oU90_vW#4E7}^q# z-<2%Q!=^@lorf7EGsf3Gu#M$Mx7GCn-ioqHm?~ycAIH+Uk^rIsUrvIE3JY~TZO{Iy zzw$+U{bs%R!JAiiUe#9*+_M$<>r}B9NQsJ63PZOg=n6cAYe?t_*gAq^w+BHwiCB!o zAgC49yCwPksE(OUrh;^UlO|+t4Rv4_tr>JLK2c-R9f>{0yC- z?0X3Y34}UTWo8*pfYl{Kpo$^U4q0<4CE3cv1o?s=U+b2Asw&z;rpHkqR&;XMebgxQkfusf%Jus>+fHlc8E953~)>irD z*Xzxzmp{7K6u)@Xetwz%kzeRm^3$)L^bcdv|AGDwx1U(n`5(}~e0cfx;qyOay!wov z`t`4V<`4b!)35f!?|A&VKj`~>tlvR2FRlH&eaZ2c?`XU2WV6M3PfN8k&`&VYly)6? zEk`Hw5eJt6c4Qq`Ky+H?cXokKm`Or(x)Sw5!D?XGqc>eW*&+q_9aQlZ$+rZ&SV_QB zA;pOV_oKGv>>+&dP8 zJw<&k-N^#O!YQ1L^7fK-l4#X}a?Vw)lirYYaI$J~020I$((~5&N;1dBf{ID*%iUL3 zCD7b^4?S6W=Dqr&25t6m(19ZXFUyF8k(a?LAHzh*@Fu)hqjO1ch*@&Qn>vyrNI(*o zR~4WtoM5^}l!=j;MK=XQ<%8s$*yWQYvjS+!5KcZP*{l5ve}d+I-azszD%aldz0V%r z+{K}*hwv`lT4{p*T)KVy`a^(pkS|?7LWfibkPVY#3Hr6^=(pP~bGJsSUWrYRfZ?vRwijI;vS#4&e-lB=UkAM_Z%?3$Nl;2O+&gsl0>BG(8*FQ0*wCt$RDL*pXnbDDL;74S z;h`s}Q-w`+sr!Q^nsIbYXIOZJKt~Mk6=B4(_ zgX#I+x?>Sn58y|{RE^U?uX?%nAdH(5NkDR~^lc^fD;r-|0;ZX!`kty|2KG~QEhOVq zCKrmtt`|h313i;OMpS2^0kNUFt-GH^;)~E9uPT10!qOp+G%(1Ssa|Y3`^{_ZSJ#ht z%=OvB+qd^(2v?8dlfliLg4>7DmmX7wvP*gy5ZLTt+pzaY|drn zojU>8z^GkSZ_rj~@(4>Z0bB;|UZve5{a^{J*I5fxsK%|{?H!67rLshVL8|UtCVI86 z?>8^FU)nEU-5O$@8$sh3~6-a4Agw=U(qRul?ZTO-pR;PJqK*p2q6nn zyd)+Ny|dI8iyZ;x)T0FI`i$8OxO!&R(;!JqXqn`jf|QvjuwGi|9aytvVW`_nT}Z|A zY46qE&A&++efa#3`tsr4`RwWe{D`6&=|+Z+D*$9bo4@Nu3^oUDaJpZ!(y22>oh_sq z)jb3!?a`pSFqoV%5=q~tm{8>s$dFaFFw61!h#B6*qOLc!8vE%=m)Rxz`)D)*oK$u$ zneepMu6F4D=C$@6om`w3+SQ}?5pe@~dK1W@)dY~WTc0a{aSY6^PA5|aX#pNhv1B!< zdzj7}UAv?bimEiEylMEUr7CjxI-n$n0?w+^!rxtf#*LlMtEs(R?r5q+&D*Ph{!BwJ zHevtG7TT*`)6qbUT&HC&Nv@UkQ$yTn?GQVYi@^)U!hX2_W)>8}Z%eTAS6M}0;@1t61ZWMWcXEnR2Q-tWPW*wkF zj>myRH^jyN{k5oo~vtzN>Bt zK)qJUdmok1ag#~qCiDQsui2zY+F(+)yPvCX4oYy zRV;f{-C4uS>2gctiLJ^~@H!xB0CLs31aU=Oz!b)Poeyt6;3C^|!n}CketwPp>Ji8M zC;SuA&z9M5`RTVlgq60`ztUu{6bQ;*V$7iAQFK+p1WJ4mSVT5b-E33CmH4?CZWCbg z)NC=Tj02OED!baxX4|1i#xmG49s;L36=eZGR1YYfW9QWa1wT9AhlAoX6UDE|ID3ZH z)s{H44!RJ%+8x;8q)eSofVF^TPQ5xrz23n^63@x<%^o!l`MWx+7?^Dc4YWq&Xxrsg z$Z~1be5fq%7?)Suvp;K(JQ>HX9gXgtN#wIQXZAYu3`1qO*s5DbA(;VJ1**EmD!_ah z0C8Eo#2xzI(-IyQ{4q->c+V-bV=3ju)@?~!RjtFCR+Xq^_0?4=W(Q#aX2}E?nVhTJ z3%Z-48g4ES2q>i>!y{Zasv-eu(?7bFuyBdB$oPLZ2 zgAa-dz2S4msq~`5SzDeP#?dF&ajR->{P1<75bZVAX@6*txWAOv9~eoJa>h8*oL*Zw!adY zB87{`$R}BJD2_dZ*HDZ|yC}w2+TIj^(NNN~Fhm4h7UhRDIsKX<(yp|p;ks3*T>`qX zv7;Ae7JUxoO+z2DDfCQunvExd{V}zmIYvy;w}vA0Wx!f!w&CQvPK@tTN zYti#Dm3&ar(Drmw*&w4sZ6JGV2sTYljx77IDm=v_d?h}I+$ZM>gU+dj9eSHx5#}1% zoEAphXs7BU#0lfp?DQ?D9TkakCR|KhWJF218XS3wEf8HgvLMPynv}BilTEW4qeG9m zE^)!ixjkkOR=C^DSe5gl@FHF)TvT85(l*K$W)e0MLKs&v@Q1(p z;??-#>B~3s7q=+w(L?t;w8~-}Ggq;@n8c=&wm4UdLehywijJgh^jU9My+M|UT0+!} zhp_BK;lB%N`@m@tHlJbZuc}48M59c%eMbPabpc|{=nOew__jH~H&(gtdb8OVi7yvg zVOdFD@OXn=IJD1$4e!xdflp3-GZszd5XnsFU1nSq2XQYH7T!ikS<7|^@L&jSh3gR1 z;?PV_Z%hvz*{T3COm19J+7Eth%T4*&qlfHw=s*LWo#}UkB+;)@c8F_<1T_(I(eE9B zK#;M44Qr%yHPA5Xj%0Gs`&*}MlZ1}8a1W|yf+h$5W>a@YtusX*cB0)ip!MoDez;yK z;d;xYxCCje>saufW+I3@n%z#D|Ky;)ZAzijJFe|N+eGF;aR^^hB^*T*1CcAp4CxVb zQoIu7vlOk_ooZHiL$EC9?}ll^`|9;&nbuz$rT*aSr`NB(e05U<^ypE$bDH5Vry2fZ z8$TZHL-YKfe}XQl#$jbEtrnDak=I9(KNyQc*la~F=eOu3#&ttKTdNCOKwpbv)a{BQ zofRC8ei9P|t2iR#EJ2GV9I-f#b~P9SGco+?jIfSY0P=yF@9SmiskSx(XKO5FLa#MR zgOCUX6-rtZy;*8naX?;arFx*0A6!P_sDqT9SZDPLPg>VOM1T`}VN2SM3r1maR!h~m z*oszZTbz#BKD<8Qs*U*P*1MMr2_{PUAcG0AXih2`x zP{OfVrAC-qfJfP8hu|#A-bx2b1nYQ>_;Acs1|GhGMTa5974k7)L1)oZuBgHHwCd=U z5G`Tov>^n+TEGy|n>h9QSE;8*Kh9NxfOEDdZKHXo$!Q{$E8Hb=oE039L$A~$Wl;ky z5`&CBDyA-AxyKo8@*I`u84`lAD95;JZAX(``#(`;On2yxhEm?G43I@_!{~rfgU4dk zHwR*(S}nItPA>`sT*V`U=}|#ZeovHK_1-Ix!g!P!wdG0>IaRmm@FvDr0 zCm~$r740aor)|V?^0`;>VW42=(8kM3DLab(FMOtz0mw9V)aU==n3Bh%&^P-LHf>H3 zF(dGdsZla|XT9aC|R2&5@~wLEF=VPx44nYuBT?d3+{&83{*7mY@|8 z7KQNyW!z31Lih!RRpv^+arI2KsWw>Vdd4X>wwso>2S3hrS~;74_0{{gufBTsYTTLD zq;fEm?zA>Z zpldMqsiny2RSbesMI5mJ%juwtGbjm}-!`p+DJwg{NO4Wk8Ud1uxVJ`5oTT(z?FtdK z&dR}{4{7;UQyE@a(GD!Dln8r9L=w?_8c8|TX(H94NW*uLSKN03UI}!t(A-b|DH6b~ z&FBB}$Vl&On&0quA*708uyW-_ULJ{UAX-H#Aw6B+4f zGwIp<$Tp^m{HaNa&SJ%n+ce}~mXuzuCqdshXB0f^`c%OvE?f1<*bjj7skL5K<0bYR z&^s1cwHkGSBmFO@&KA=$ML0d#99FBSHT~WVEbNGiD;zJu<`MEjh7HpuEi1d8|EnWm z>dC%sZ%cB`m*@ZbSW!7!%^a0-`G#*m6>W=syX2He_kuhG zMJLo)(2!ojn3_XPK|}q*B3XzbJ-(3o5$;V&u>f9}8>;nxG3b{r&pF1mj0YnTHZ@DK)q5(?OXdE~}uppK*xu@&IjUY^*AKQB>2P39| zRSd=zCJI9YO|`R*hWi%84}~bv1d00Gbf=*`zUZSPM0>bT({!V!eO_On4~G>j*7UsE zOZtO$t!R>g_Z!!Q9wIsqqTWVBwFV|t8Rs(W$h9hik`Kymm^9naoLj_X4%~)`JId_nKpgd!~H|$Idv= z6w(oT_(C5_@dX8KxQC`dOAx0DqfCy%*LABt_;Idu{lmQe7KgOzO-|9)!Is=erwGCY zWNu;-o9E)F)7P}cWfVZjfts!0eQ63lxZQ2L8g@*TO{&al5WUKpK4E-{?l+<=22!xJ zY?WIDD7*K1*xj!tQhy4vv=^dfb7&I`j_9)mR|Ul`fuvYGJprQ>fVw~fQXD`x{iFs{ zqaLtS(ef0*6khjMNuQLCxyPb^K{2Yt<9;(6I!GRytbFvWl3wj9wEF1Bxnk#+N&QKC z_wLotzPbl=ltGbX(w-HJ9$m@P&qjC9>b(&j%uWQ$BMmi?`C|iDrDDY%@3g5MoN8hc zgA!}RFR9aV9XeZCZ)s`?3Sh}jpbou__zKzX^ubq!PWypxZvz@?$Qk&>ArFo&BLr<1 z)IK%FUMpQNWAxB4{?PWoEl#g+dN3EowJ>hu_0Q_*KM`q+f)!26)>@4g-ZEOm6B8s+ zb|HeSJp}_V{`tQ>cCxq@+K5T6Q_9pJoiP$h(A4R*=V{awTM8O}zc!8KqBsdVy_B?5 z^a{dN4MQmG)@IWb)s56+E@Hd_{u-yKo$658ZUZ+N+Yu5(DIq-ncL(Tn1#y?KxY95# zLyboiT~KnHm|Q43^U#8F0%H0EG=~I~&~(*s>yb(dd83VwwZjrw6J)koaYj5s%rq&$ zZd6A$mWCxxJtB@Dw8~@J_x#_-pZ=}idmE>vuts6Tb+o#&f?ZDB2XfZE&S{jkgjkx< zD$jb&-O$6tnkMt&om6664DBt@62 zo1YK}_Q#5*l&qS9pP>g+i;}e<$Q?QBT0%i1;Ic4rBW|W^sKpc!01{ME6iZ5W8eOBs zJ+(I!_ykZ(_u3Z1tBS@o8LbmK+??4F0T1P}aIHr>GM#VN&(@#3h;?3jI3GNE_Y~2; za~buc58wD4Zlijw27P4h%VgmeiU%%XN?EtTvnzr|b}LpKMX=vm+NAgLlem#rr~Vow&0efLbZ!jZJ6kNFN<)b{%@D>DLoBg1 zv_E}w(RRge+IX)i;_Ii?#urcT)?1C=jr9J5$L^CU_kD_vCyUlAf{G?+8xBaU4St7? zuK2(>3^^!G{mK~RDY_^vX+tGM4nxrhXiyd8i$Gw>NO~?WfZ()WQ?YLC=_YHV(V2DylFJK52!;9J|mow_1+(Na)`Dn z;x}z!yt3mIhn!9LvL{7pEgwM{?aag?vD(Vd|6}~=55D(eC4uFM2}n1!BE*>1$TT=n ztRlu4l-xW8rF#I`DV*t;Fvm;_I*y3~G^Gm2a$#B(788@(R2+D~gUJEX3pj2!2WxREz=)q;*7}d$zWVZQ+t*e8=s~-i zSKKA9e60DH0ALVL98U3;mR!Z3jh6SBO{H5w2VHHUtL zA|Ea1(W4#N&RPRDS8z&fAGNFto+L<(+@xPkm)Fbh*pfrmDF@- z%+ytPMAX!VEOv`V+vzB7$fTmuXi(5C0<9}5+|cM;sr=8#3q|}=0%!Ws7EzGE;Y-bm zYxM8mJ+wnAmDuNt;%D17weTo=Vj`{w}ip0Ae|;4onbOehR&CblSZDcL*i_oy{1 zd|{QOJw;Qy3AwJ2l?j{H(QMHaqlfBrzLtd+s3{1=Q87k8kAifliN61E2>#Y$w^4zn zqNN$_<>oeiFqZk=v*i{z(OT?An@7+!%s}n9mNaeT>lAlXbQEzjLvUgAX{sp}Gi=S^ z#M|ENvbm-qc)rkCkyNDv>Jzw=@QAu;HiDu8d9Da&Plx$>t+bDkD*7t*7yF=`!^p>s6V(iU9jPU2k*|I&UbZe;z#P(9E`pj*O~>9b!}Qh zi6U;~1vVH3yJJT!Swu8aQ4=aR)aZKZC8>d#+#m(*S!LF6s3_$x+2z(<0I1Lpp1pB& zsNk5*!EolrEn)or{J(qxY=}a#t$}W7ed?m%iOQl`^iui*cS`Jg(GR^{pd71gi~aX9Bc^i>g#;}WJ``AjZ3@;~ zqis<6PF!=z;tP_|&GF8fC&;Kij4>X7F+(N;ySP@GA0}=9#-^(c-oalQowbWc%O3;#kxz`s8 zBFiBmskIYx@~6mMG&y3XB{Z-6dE_#O{(<(UVp1!``5F;jPjL7!wBEAl z#U^MQ?u@CGK+;aQuX^F_o_nKsW@@@^*Yet7(HgWnmRk|4rs|?%AN;sETa-7ASG?E( z)f_!OP+P=b@8^>Kc8Aa)T0!ys=6G1(QZTc*h|YdwlBj=MI5y2La#c;%{0i}TdE-7ljjd(7xTuJWlDLaYHWfA{vk>@@x_Lg31=1VBG&Vw~HU{ z^?uw)j6Qn!KA9ljA3xrCdyi$NH?i7nPRo8q1;@i%&>hE#(l$XObjr0NMHNMI^pF`t8caWmsB2nN zi5M$cBUF_r5BBo_Gp8L>4cC)Wd;S+=gO2Lql^@>@3>;_u1OG=T9jgsP4ST) zW4hDZp6KAz_OaK4)L*x^KYRD$?sV%k@Zh1l?T0H`CH~v}a4+BZIJm4eSdCCm#GE_q z&7Dt-W}g0`VZ~gi4bP;Coz|2cy#Jq>?3<-E{yzbQ&fp&m`M;q#7tA9dB}*S<6@qa?;H0O%T4Totx}8j{Wh&= zduXnY z^nP#q+F2mTqYdWuG&Z94&e`)G_$NhL_X2%HanOayHnnky-zn`4akRkI`79v_Un|@y z%%YeU=(7qt+Nl{ldM=3ZIsA%+U6N9igDVKMXp+mdS>(^X`tlcV^?%q--Yl{QkKD~7 zGfIcwzT1EK`g2%h9qlLAU7-hBm~f(hqVYO~`v$8&1zzQUVI$15><}uToz0=9AV6A% z5A+vWlvYD(S)2%uIol%Icic-GG{}UveO0KpG+ZkQtfT<%%{7QAV;icm%<8c8Iw`vr z>nb9E+VQoE9^#GKg}P|35_&PV2n1{#dc5ChQQ5O80B=Dr=ZhdS4)dAEEW*0DqxYx~ z=tiO*sh3@a$@CgZhL=V5x8qOz^zMD@uh)mxq*wdbPrrKg{);!icz@iB_4V!P&SS^) zu0M~x`15=oqI^{WLG*^pg^J=ZDgnC-e>82-WjON@W|zegeX?1uWoGaJm*t%#|pE17*VCT z1^@A?=@TrnHC3XCQAiRDq4ZspLBF;NdFL?brdhOfVB*y|E$8Mf718Zw6e3L?m=szX z1H`dIP-2cW^4MW-ghsz=?|<>Oy?#30ySK^o(W7@~p@qwVM)*wXZE-TqOYkR|CH@{w zj2M{Csy9(o&hD{u5rWUIZiOX&T1U0Q+K5EdF zFM`X6?x$dA`&Vwma@Sl>CM*upyNR1=f4f8jhz-=z_960ay>Dcm9uQEUCF3}tW#&0C zb9NiI8uBZOB?SSLsBpHZ3r_?0=eQ}h^GhKya87U}PI42KvstN4^zPc&{Nu0RzWLeP z_3ox-=h4GCt+&v(NVWj< zM%VyVrI5=m4c|k*#n^<3X=Uma_9_Y{3eGL8Grnl8h}UVpZ5FUK6DE7K#BNqtDL91p zjZ#P~S^x??iv|$XIyu4cw2^B`b+@Rfp{84KY~j>99LC{@QYaM%Q1yZPz6ee!J578E zXF}eJP9Z!1(88OzE@k{0&2@$S^)Gb;C!Z>seW?e%U2G2?!8@fh-xagZN#2!M>Oz5~R4^olwRaVQkKXoiMGqbxVDT&uc3mxe~$fc+?8dUHqVTCmgwf zU~tP6co|U~Oi2PI{lxXEen}3BFIPoAeM5=R! zHY^ow16f82xm=hiB~-eV%xS_FS=Z(axS3$BtL>~GTIiH)5x!tdP>c#kk51cgLB|H-kiic=B^BsCEc|}<G4ypFk_Q z6cIWb29CXz>(khS29=YBtdUXN5Qn$ySPI~#*?|IkY;5wJ*@z*IGHNl(4@og02IYi8 z<1EtG8uBGf??t#WMmnNdNl2s&rNDt2-4&cgm#DXew52%(*0r9feJ>)C*z^>7DKia} zQ&`7sL^LXu11I$K~ifL^)EV{T76$ACrOpaBJkoRnD3Vl;wZAA_gHCt}> znmT_tUcdUqO|{*l$Lv#9+r{c>buCa1Ur;GRc-}{x=p)Kd_#hh*f0G;zhxMtt<++-PT?gNUbJ zy_)a8xTmN=$KKvvA2@OS2ht!nOe9?87)v5bE8nx0bNrSXvQ_n)TB2wHL~LP}F#ICF}1_VeOs%HoC}B z|ME?VZI)mJehofIBWXH>*e&+WK9(+CUWRj1@I+{r<^XNoBfTfK7?v``)WX$EdckFW zYSFgiL>(2^5ZtdRbr&%ooTXq}VN3n)oTir=O4geGWdjxYNT3t8n>fxMNp9pb88UW; zpkALNv?IJ}QkV@@n!b^u+RjYdV(64tDaz!kH0;GNCynOG3&1N3BYB|*V`uE9HJPKP z%sl^}@uxrf-j!OLr5^_0xzAHsw6h4w?IV1!5tSf+dwLL1CDpB%6>}5VPhMq?j8Kw9h>%}qcJal)icieZn zA6~xxsH}9fZnG&?8L*5Hi=?PM9m1xx{ za$3Ex3KeV8^Zy+`gW&o5SpGf7^6x*2?x>ZHOezOVyVzK?$BPJ2$Y@Q~y4sOsLr6#Q zK<`99bwcGr)T!>_+H_-@c!UL(ev06<-W$nb7m2ZaEFQiLXt3_+a$K5Fj6auE3FHjxUk+W99 z+GP+a8vuz0^3CzMptSZ^-?R}sEy2_^(e<)K{<@>tGQMCY=JDIP?U#J;0N#^rN#72p zKl<>EkF1KH+0vtD@Icef_2NK95nd!q&#$rNsIktHaH?;1g^iVvR&cILC6(6m-DlM1 zFsPPkxZ|#L9_i;TJ6CV56d07&6!T`ymMFbMhhkBZxoM<*?Bje>D)O5Y(y&D=na?s@B(b|V{fuYpBn89XH zhHe7+fx|bJz13!LN*T%oMS;ZQa1gsvtquO02=eDn1bJBn2M#93iK;gWLINtZAbTMT z#id#pg`-?&Xi{z(=(t+Z=q>Kp+U5o%_FbKp>f8z4b^t)2Bk7oZ(pQ_oG*~z`nu6^b z3YRr3KN(nC)AQe-sO1wD_1Zel=<`M5+e}JWn_QB(LKdSm`RQ=fE$=^rS|NlkRN6XFqj;Y_>(XAAD=^e+n0cmR6 zXN2ml_lwr`>{id>0(lA|hc1{jIG1(SXz}@aF4CQ**Fy@NRtWa6Wh}(R5p`4^F`T;Q zToko(gJ^8-S+Q{=ntk_LKO9-Y1<1~3H% zhtgoK4xI_g`qS3p_c-H5tu{Zz7LegfbtQVino*=Wx2QgGKabyS;4a~2yFU1Fu3~d% zX5W3)zJB+`n|s>9!Vha{?-*@N%>!KyqC?dbg@9ZX<7ch3h8o3<4zVsB{c!|v4ZGEe z&o0UqqDWX0IQE!MZo%fFJhd0T5p!o$s&){ErW0LEt>Qs2w(0kG>?b&o8WE)yr6>w0 zN;gg^NzBC{ql0FP+YNJL!5r$nITP7dQKvf6Ci;H@KGZDgB}5<>YVF?TIP$LOTKOHD zS14ZW1sj%8lI=AF7xiJSU0aKL3rBZdWYkfDW;<!24Z_2#Sn z>c&d)(IfY1v%PX>LhwY-Ws%WxQ!p$mbMc1ao!X$=qVN>c!fFQr{e|tS!$HP*RO_jw zE4;NM9peH-WYd8Ft~RpxGUn)t?)n8GD%=5Nl5fxdU^-B6EiO_`41zp^Ti8kO zi10Vxi6{&?bY}GcAVM#IS2=F#3r}^8omPh7GGV12^r;g=K8GKJ2YXGQZCFCr&g(3zcK%p1R{8Rp5V#iPH5~l8-o0oTaL8w*7eihtsKi z*GSN~lB<5A=y?!1J$t{4K{&yLs)WheifDG^OU+!+tTbd!Re!CrFk1S zdQqad=?bg0VhT1trKtH--3*eVm)?=`ZMTzmuJ@54Xhy_?z~L0zpW9<{R7ngVMWxz(8Q?yCyY28HjS z2OY>g34$s5W;#{xXfnQlE`d}t(EbAvj*1D4(gE`5%{re-(fZ1+(sZ7ZJ16?uyvk+b zwc3-!SBu{6;+P*Zg*Gbs`A)%WS_E&=u}g7l33ivoTP*=uKtf?rXy^GKNuPt3(m%>m zAjx8K!9`6=KP6hNjcv3>Tbkjto@mcNzq5LSs5qC!DTlc?z7R?O)+5D&)%{Xh#JEYr zYLPR~DES(+%(YU5#q>i}W2(XLy>bEAu2J*Rk8>kK`?hH%{^Ir1z8f~3rYB;95iq4v z2-GJdRBS3&C{CaNeH&#!1!nvN_2F4hKDm2Gpns)_8t%?{qm4L)Q%1~2NC!6(J*PI$ z_F4;R+aV&PnRG(0fl9mDZshRYPr_N?+Dhmk8f{@*EiH(J1BiC6Iw^&N1Z*KbNWwjqR2QPfpb4|6GRBe*wLWDPnLdx8jnjsE!` zOGmEF`{a#p;s`z>z$PT5jIZp`sqPhx#FoCr=> zCK7ZY^a+@6MYZe_rR~Eex{n545n^;k08*K1?B{9v{5;j22hD4XQrEolD%_w>TShuwPD^Xc z&AGuq%PQV#Wnq)k{F>T$+Eo<2YY@WoKaoCzqmbX9%zUbo89_%&UAWew)<3_F&I&D! z8Yv9ySi9A(r9H)TqFX4_H?43qX%sbSoi0|n3*XQl?G(3cTX8lZx1aQS^h%Z`1Siyn zLS%HJJ5F49X|vu`^FR7=t~DUvK5oA=tz4I^cI4c&A_XqDGM;u%Kp>vZ6lIA)u}^G^ zj>@i>tu>TrHW%g^Y3mg*VNdj>i#{OYp(LrDjZ7zNB{cC1?Z+r~kNXdzPc+>rjRyBy z2?b5^Idlq1x?pW@oIfcvT6~ZcoAh~#V7)F1A-5Q3F5+Rz!p38Xp=1~cDFG6LHWXV1 zP4O(6qd_*}OMvTn3J7Yled3*6o44HqzOSV{4}P4h0o$3@-?CM`c)enMq=+aE@%%Q$ z3b5Pd${RIX69uqDCRk!2h*#lQuf(1(0y?VyTWieGjae`vSNN?&df(4afYK?T0W^#wBUfSck; zg;IMmzE+AtId->*IdF9rIoK05azjgUgp%8B2>xbXJtneRXYj(2w~%Pv7<@Oy`re?Y zMZA)gF4Ed!)3z90jLtUv0|faC_M14U3Yb8F8um|JT!}-a2@4SP?rQ=ZXPZEWpo!Ah zimHYyH+l5qTx*QJd^O&_`LdyNbqBWzIx8ty3na^2*3Ry_b}e!0juY{awaln0(Qj&}R7PuqS`;DJF_Dl-Q>%36nvGegbO^2{bIZLy zIAibDj#sFbfo(z+xr!Q;hESiPo>j(~hl`ad_^N?TiRu)MgwqfNRQC*hu3`u@+~+xL zSXB$tVty_3hJUH0Lwspx;0Y+eqm`(f$QkmD0p^1r=f+*)*ifcGb475arh_`;rq||JP zum*ll zoa}Hcblt!Yew=TPWIr6keh>nC|L*A=_TNsnQ>IXii71*+l#jJ?5b)(vqT`jPR1uUx zj`zv{{bjM1tX*y+jqKdb)vYJX6=8FQo{6HEazt&L;H9iJE5pOq_pO zC-`Unjt`7$i?9!hbg=#m!2|_>B%W78^y04#q1in}yV4Sl*Fvje=Lu~p{af3Y2Mk(8 zyBe_|Q%K26FmAFmm(p4=Db}QyNQ*sEoVW@F7{h7OZoCs8{5V%{n%_Q;*6G=lR9Ez~ z2^uL-^ftBn3|@fAPR*C4Jq@GiuA~peDuP1PZHFqlm2>bZhKS#cRkRkX$9n|UD%k9X zODJAw_qL2rksiD6IAWbRrTnHJ;}8C>zq5WQ_WZ&Bm&?fCyxW^U{_&fy-@khEReSyS z{C$7skN@cJJ`4FT-u+vB#J6uS1^1dLJMNsyqNpbfPOuhdWU1lsVwWaPaaapID3mpk z(~PXJqwwGNM9PdP`==;0gtufafi_Fd8tAE-6~}MI=+T0w1rEz~jQ}-AH!>qZ5ni9$ zbDCW3Wr~@cpGanVAz9i=^_0jz4Bwgp#}Ogl)Q>t09w)LQO8#760f@9Vv~qAZiJBMv zay%!J874IA(8XD1>GSHY4kL}UVoF(heq*fzda|9-@V3s^zeQA8uP^d{1fYb zV!zcJ{RiKC=c6t%6WZR|2%K00gd0bBlYVr1>3}jK>Ex6XhTIBS}2riF${Yw?qwRIfgfkmKM^#wo_-J|a{7qBr zKYG~i8fch{fyPHRHa4Xd#eq)KB^^@YZZ-nS@UIEN?1G%*+>Fo6&Q%&nW_Hwm6ygI_ z;A?nqF>3-^3WE!qg%yI*yAoMD2=0`B3&Ya^GU?=qM`nMv>#5SCALp7w*E`N0?q0PB zLR%ACnRL4t@#KE0N`k<4z_wf=B5^0Mnz6NrHJQ#?Fa~}CXw4yc8;&aR)Y54UnQfy) z8(Y$U#g>aA4#yLEY_v2TWeL;`3rd8mp|pG9GoQfUttj2+h)T;8AT^?cnIk*8$Q^oj z$Bysxuj7`9>J^F?MFf*#s=O+F3EJO^gW{KM+Lh)I4p>-0cLYoeKR1#heHOex&_`Lz z_AYE#uSXgBY_1}^wvC>|IX*}OCK`M8Vi1+ENqEy^7@4U4(0nH$r_`;+t<8aMZq8ZI zSYxVy-p!Hc^SgAUIMMge^Dp#-1G)>4%!T&$#-jEbGS-V|?u{VoqlfKot9`n(+JB^+ zdPX(MERJrS*aW6+Mqzg;Tq8V($>I>bP=s58_Ic^&vVx*tC$RhEj${*R`1(2R9xpgt zOQT*Od%IBGbIOQr(#gAr?F}+dKWAM&8~^-IeS*}eRKymxE#p%V13}tpUnXTBr>!Xf z+gDdaN>n+BtGU4~1P4>%suq7Tv8qmuKhn&?yjc^&)uPyr0+(N@K*>;%r(r-NhuYvm zIeh0>uUx{@6QqzPRE~}u$0+*(wk{+9cRi3z!zSNRgf!N2^A_4YhFx zH*p`cddQ9lEQlgZzBsZH{;T*2iz^9#$JUc3O0&@0*89Wq45C*QeNdpeGz+8CEH|vk zv27Gi4GIneh9-jc&0xbNj%2Ff^lV+|Vz1|a`V%a3Zz)~brfts^x`K{V!kHoiV`M7z zlzl1w(6rdna~@VKPY=4`aT<({*~TY5Jq=V-%uKOE&& zvl%Wyd*%F0h>@}fL&V6d%$+<1;?(_eBf`I_wI8XmC8~7oQThYCi`(m)j-*GA+O3?s z`)*wS(T8vRZaQQBv!7t0XD{reND`=m@I!M=7oxD3;@qJ~^T_MWp^&L$6b0c%#%{^bTr^wMo8y2fNY^~> z6kfl5TBYDg2v&qt#x^B4%rUm#xSk2zd3u35QjWqN_*gmNIWfc=96RYFo2FN&K_0UFJrg1@rd z7J2nbZ=&tB;L+vA!tt+CjV^3t8$Mv-EiWd|(+MR`uF;#`Mu7kcK+$=3+Lfp;6r&AR zfz5~}^`+&etXPsz;q@x^&ufu=wSLy#zxw5R`g_;gH#b6(4<5d|%DDETjQe?rm15hr z3j$-tjNoV^RJNH}tgL6N|4_Qpj`bKKGe1o;h$7Tjn9yi!W30F+uV9a$-3UdjLln$B`7n6EA92v z^T+G$+c$5Y)}LHg*rSK-PAv1^(NcQ(`lC=G3P+0~iDI~`bVX|&)}maVvYrNeTWkOs zbrGA9nzcu3NuUqUY~gsTjgFrFFiT+9IN@~;1S&#g!p%rm9ka7j2&e6)O#^nfq1Ixb z|G7_q3R_rC*+m381~Kgx3Z6T8`$Suy2=|=EFUr0amnc!oL_fQgB!jYwGoChrA-F%q zqy^;d9trJI5d^)tvrs!K9dkQ($*JPgOM$*Q(CnJF`&gx57?4vHt1RQ3b?4&G?Ti3m z?QVGL3OIxs`n|)AfNYrQ+8EPV46u~xYdd{`xVt(dmW=8ViU&gSA{{Q~-3yA%+w`XQ z=`Cw^%8hQ=t1rKP^Y;DIe!FfRJ03lBccq`rMf&-p)hzYgnPQ=)eMJXqa(!Bb2@@Ty zZQ?FPIYjg^hi!YbjgwtrrL}3(qC(oZ=xF~lQ}3xC(R^;xgk8ds+lxb(hUOBwZD~kt zCMuSV7SagM|NId}u@nwc$KDV?5q!~Kc5VAeDZW#*LlGrMG>@866=&c{S$0+}kx0oW z-9zYbdzxLvQk6Sv<`$+7dz4R-h=o=IzdjW)SUvw#pt5+D?&p6Yeg76rURifj$3t1M z4TI8RLC-Wjjexy5WID83xSkrLhz-vX>7S~~#~N@NvnCEx4c%Paum{~&6;<@jrB_S} zib*6VDT#}Cid);ok<{r{yLRT`*GoZ8F?GRK(a!8}9u0jjtprVq zvz;1kuhnc4c^*HKps3gt-}E91^$LyX=;7EEUD7;>&C#)orE%(pA>V<1^zR-x{QTY1 zuiKZeZ_d>oJZd)w4%%G)+t}qtAHMNX+s$+Th@FoW(5e7Sx~BJ^zbrH__^da)2VJSai2lYcz#fOsqJcuVwYzab#r?+BTDDXVT;72XQ>y zzV)^;s)w}wadAlTi*O&kWFm^0>ks`suIE!ho17!+C`2w&s{iqk<}Gau%v`vgSUb{$ zQIO?CcVdkz!u!GN^~C5gf%V~aE^vgJ308uM)D(VG}-xS%qqeZ7b|0|y$P57;CK z7FmdM&L^1z*E}uw`Uwopsh5a)M?=+jc3dA;;hwgI3|w`g7`;rTH>g1=wuvo5zwzm_ z!7REoQM;@@d+KAahDi@T-Mu!jP?7kwkvzC;w?~iLP0kZJ{|>_Z(T8t*4ustZbr)(G zH7=YFS8O^tD}zM{nJ-R;r+%vRfN!W0qN8FQ!$#u*cAUN1yaj5|qSts-vM{AUz0uuG z4<2z=B%}-M7%CUM0;%F*N#VxIChyjU$ZXdXjfrR9Ox}#Bpqy4TSu1UK8WelvC{g#3j|2@MIiLs7qgP=T0fbc?SL{tMq({3hGLD9R z@nyeb%=_SRyNT)fa>SiKn=sZC3TTMeNkI|QdhT#^zwYCH)ykXf>ANJh4K)z~(L6T`kx ze#GRw*HEK3YoeDAjp4S{g`|CbR4tti-us|*Bv9wDxE)xEuxKWDn4$ozAW6NQLlNhC#68}=dH3$=-Pi3`H^AZ1BX@U^`O6~vNI|371g?~5 zTha(^V7x&CUaP$erj^hf7X?+ocs9L+qn%De=>!9opu-wmd^!=^)6tEViCLlo$|8D4 zPpzv+w>3*qK>ve{XPyhkG2y8Y^L+kS4{)IIwXQIRh!Ac?P5V((tPh~dQ29zI{?sQ6 z8tNA;ebMacTaTLNU=Uk~wHg+Spo{**FTCbP&gCT~G|8P~w+XnfqK^ZfZ= zJH6#jbh~j7K;Op(ozmWKl>rC07xd+b5_UO+s5fr)na8H%40kDTI*8 ztXj}1OaVNh3A)j9EGReAlH-rkY7$a%b4xCRoo3))==@f!Qfn9V7l_Y#pXv^aJSxa-GawvejD67&YM(1q{=WN9UEyjS~ zk2A#g)koFamzuTtH%d<$gn;(eEcC8m7B8kats9iCOfEDUN0NJ`=fCpP?|;X~DRPRg zq~5@Lq$ZlnK6F;&4#G(&phY`V*xZQ;qA#{g@XA!!c}?1o$DZ1T;)mHgG_EQHP=n;0 zr39u}{ZobVIgPDjiMUaVLxtwL9?@CF$!aK*@rt|@uLU8>XtaEoUF#|A6r`uZ4e>z_ z6V)Sm1pyXn()Z>#7jZq!#J%xOJp^tODHOsHV&N#5g)8-d8A7R0YpB7{0=;6%q5ph6 z+Pj-g|LAeM+4S+U>ElOk`cFVtI0_XwGkIzwDp>o4X)pbn+5{-(Q}LD7id%mc)ae?% zD(*?IE_LmmIFYg@Ra;1r-6*mT47O$vw-r*tMq^r_g%EzX{0V2t!DhX=$yNldMxVZn z@(Fh>bx+0L?G&1`#+14ng=Ddpijq%QNil>HuGX|R@vEyA3C)}*J|N>r2ON2t;*T3# zY`ZeEP)%PVU9EUwYvo0;)$2|6k40CG2FndwdGN5^xnH!G`$hY)_lsGn0(@pUelW@k z4A$8S+BzDnAb#hNuvIG1a__}=A5O2{$c`g|HFNXI?jfIkKKz`$P(2RInh515asRGY z7V+FjYxWk{-d@?+ha2;WM?cPO)Or2-NjqrXX|{A&Y~{+SHpdaQ*bXg4UD3}g?`+y|q7lvwEG7X~G#Kg80HBk|_DFod z=-+L%vA>ZHC_|auDeCqD!NLJ!w4xL=~!@y@Usz-EW)*;XR!evC^JACj``^g=u;=hsdUfaRi6#~Pb5qjw$qUk6uan4 zX}MzGl%lYP(_85sg^Eh65zwoRF058>C)K{RA%D*|@Pdc}x{DTm4(OHEc644ucEiB4 zVp|DlPV28k;Za7?)CtxL83h#BHl0aA0{KPGPdK639Tl#;21x)D70ZRTSQhxycF^C_ zWvd}TlIX@xUX&oEh9Hw);)#fb6i#u3wr9u@4L4y%XHfzviHkHxOGq7^f?j>1!e!@h z$m^d~F}@}8zJS3^*j(JSw3YB&QuAhAU_Rae@oRt1V zUw^3qy}6Bl@G#yj)eM(X&G7ro@cYbgGQ*xLY**257eLxIO{7{BsZg?*C`VeacLu)% zWFRPhFpD@?sAkolwRpv^gx?EKspXisN`pA2Mm*%WPBB<)yX!L)eFf`%Go#aIacw(z z^y6Hn^sk+3zxrxDY1e~$8%ECGy;m6Bi3=;r(-9acR7B;JGv<56HID4H z4Z1&Fbppd}iH${P^q1UmiDKHM`S(pM&7iV(#Sok?SdJe>`BUu_(P$D2*A?YNr*%aZ*ZX+9oQfo0vYbwu-@Rthy14LpoMOS7AJGed=iL!=FQ^mj~>Y1XNccth~H<3-)D&LzrI4WhGOX%sV3fAq0E&=fyh`E zMSyOG({`l1t6TIhw1IH3(?n89f_!7>TE|8c7}F97(yaBkOVAIa4tFkH0($p~_SB=M z618E1=%HfyRqJ2Fv~vq3FO3!YTo&8gtqoGWb`16AZn%L-Mo*R&3GJxt^~J72&c|3aR-seS)Ff- z=~0|WBV&Y7y5)embNm;U88H>3P$kBP3dZuDsz=XVRIHj=4l9L7xUa#TTby;L9cP>S zSWYNsb=-&B!b~sRI0|L1&qmTbTeR%vq+$=V-C`Z*@KeC&XkR268x6)sm*Z(LVx(~>-i^7!{5Y3o@fXgrSby^M z+x3p2e)_t-eRogsuav@t`#^8KR;O^SMcsvn=E7#$QXxHE7V;-(OuS8d7gNxDuQpcjyVhZX3n!EVyyoH3o!AhmFxv)O-FbpP(X=Bh(T-1-&?2#IQ8D(ahAH-NII@DLs0O#f)ox*Ot7( z!o*CfTQ`(ag-a6gVTf^PrwWz^fw7GyvKUp@4i-0~@?J|Kt)Xe9A4|U{d!f_c$u)cJ z&3^D0eoD=?z7r}LW$FDcI9YG4mP(qC{9iuSQ!YJ^$P3GuV39Yw!m@&b8b2tkT!7 z#`@~rdU`eQ5fDUKmD@ch2pZN&OAS(iLdHt4TQ(RWE75Gv%kF$2(#Nsx6H>iI9;S7d^Az63Ge=CqE zCr~Rb052wp@m1e$j1mDZQ9F?i0Ys(+w#$qYRj4iofGE7BiBi8P6%7lQ4iwSZUBetA z&iTlIwuz2+&f4LLllbcq)e@2&h$MWNt(XkiSkd&&>OC{9DC z?WM$pzu%Fj<{4@gcy@cCHm_{wC}yh##R@%DH`;np?3UKI#N_DlFAL?*wx9p<8oVAo zVmI_7A%*%a`L`c^_{K+tFR^13HJjy>2R}5L_Le}gV1q-(Hft*f?gS0Kr^A*ykxil* zY3nbv`>5+o+LjvVvWmw&2-BdDvWCkyYEu;brlmHu4m=|%fAonynezPaoRY}chYdT& zFmZZB2A5fkoD$`^i-x^%cc@4z%o=Hxz^4s!Oc!in3)YMTt>(0_IWyhTEh~Mc>V^@l zU&@(SQAS#J>%emp-y=<$$@BT&O-J3~2>e;9sLDjxxhm4qx?BwBB1)ru!n}%jM2NKX zbSn-O>Q)|JD{R}elr_VOYc>P6Et0Xg$h&Dee)Ef(o*sIidU#Gu#Qqfcgucsu{`XEO zw@%7UiszWLpggzNZ_N4!j_fKDRXl zWE<{OO7&}<@=SoSf&<>9+OE`iDl~MDjPe+oPd)A_{iLe$#^dn)J+YBTkJ(*)vV74e z%O4kZ9v%0e|ASMPNfVfmvCG5jzbQD{1j1=>_R|9f?x~UOFMTfbuk0-Pvp7->!lV&- z1F>xvYHTA5wK$HSmF^K?ED0gIDq3zd+_-@X^fVl$QY*&fdMzG&^y6I1gR89hE4c8`L<0%R34KKRB-23Vx!?0hd-fp`W_M5wp1}YdQi5-)bRLC(N7@aT3)(( z`-(K(Z0)?P*ejwt>%m_lJfga2tP1jdgO&d9gZ+oiKXESM0v@osioGnqVqaBf}63$**)LuWIwVjnZEnXaglhxgH(LMTcZjQgsJ>b)? zUd{LSR+qM_VkAcC3Ro%ImbIFM>lHD)qhUs@QQ370h-ry$Evd2>%US_?=;?hZAqaRI zC2Y|rrD2SNiW1y15l11f->2C-s`>CnMGZw4(c%Q!$+y0jAo1@#B|7V~Xo5CxvV&5a zv^(lNirv~ym@QjBke22Y(%aUQYm^5xLAWuJ#sgRv0RQ5%4gFDhc1HNb1iLrI*U@k1|03Q!5I;r4jQY*S4XtU&~vWLIr&*c zoulG`b`2pwSy$7o4X=Tk2&>_ZcXXo+?M5Rdh7`jGrGT&m@5_z1^d#>D?&TX+kOiA! zx1D#`Y#J>;yaIeWV(yOmUZspFzFZW96my*uq_V-LkhVhFpwE5?XVG^n#D9#?hC>9t zRTI2mjlhwnnFuH-oGy#(Z+P|YY5(H&>l2Bdjz7lNZ(elt-i z4mY-$*0i+1WQ=ekjKv67OsZ5wemrHNStFd$ z%^louOf4Q|XQf?X@Izdb3&1kB4qV3T*E{1e8287-L+Gb>j^>bU8mPz!_zJZs1A4-h z##_TL9BqWz(J@JAtWAnhy#9qjjSr7#<^B<^pF&$1F$9Yzj&LnnHrR6|s!*<$rR&|( z`!`QtzkT)PE2Q6U>Rui^dUy2&?L}YkBU`Z^E%W&NAElQbYU~j4i$4dqp&aR50Z=hL-*^(yD z&WLyuH}(q}tH;u_3vCHJZrrfS5g)DtK`1V*v}y98p;YQF9L2U+T%I$>!F_(^07tW7 za0?F0AYP-qY{mYxAFmbkS)=X|qgTk)f4hd=28SVmY8Q)))IKZgg_Aw!^W9QpU)K~(-L`65RlmF-6Mc~QC6yyq6|SoLKYIVg+c)hd zwLE&z?(|`OH?_piCbfvTy@;eZg~)6br%yYjZPuaHzxwdpQBo_hgAWr6v(xZx_P}X_ zD<%O2mrTS-vX<310%U8LBgg7B$JoMa_*WQ;0TZSF)3~h&AFfzNxx@@5hJn8{1YA2; zX@FB2D^9Hdk+Noxc@%It&>6v?5UaHniN&BNi^>?_>7J);3fRIIBp{n z<}%iDL7a7p&Ui(IYlp^PJ=gmB%k}nWx9(mK9=Dq%2BrFTBi75;pTiPMC;@iomEen? z+U#Z0j++^MO=*PS)YvLchmP}LY6C@^uwg|3GI4JwCOsqG8%?94fa9xTMHAr50mtEn za6)vpDOCwlBF=~TfS_Ky@sTU1i8lx3LVbXt9#2$!&xQ1Yl3Z4(TH@~;zw}WRf9ggZ z0Q1gKopP8P6TgjET#p>BupE~#G3uYlcem-#xW&l3jF@Tnj;RYv`!v7lAOGV&U@~66 z>fboY?RP(UH`-V8)r~~SqX+PgY_0uH;qJ@V9|d6W-mJq4XAEtbDM-Mveimk26M;p< z+&HK#^x)LyQy(sEgmzCaqcympZUGxb0|o1>S3}mR%}S3{r*2MZ+&EXFz}%c}EMYt3 zGLIrydHzq2&|<1u6rts+1cq32@{~4-`HB`Xl1lpe+@Kv_Fq~ENa7s{SQNgij6ZKAM z2B@X=vNGlmR-kw*=?Q+Uk#^fjxLFZF|Cs(t;>4^pXX<00|Fcg}WFa6rgWg^Xrwy2( zS?;_Ifv;uoXWpsb^|EworMU@C*FMUM|=3rg{hLm`jvI&IL((ZXO@thTz(ym=q9`FUnz}b)~j$;=tv6d&{AZB9BR4sNN%$Gffa!(*}fcY;J3eMY+-7 z$sI&fQ^c%NJks9SJa=lf zihf+wsf*+Y;SFA+R*@xTVeY8i5yM{!UdHkKRv^|5&&iifw-U`i*Xnxu6`u09;%1K? zx|=eK7yI#Vm05iF#>Z8@27!1{$dQr}A}V@A>Y`ehi}RO}x1kn!U;xckZEGU;j;p?u zp|C;Vx+!(1>f+ipDm`y>!Ftla(`A^q&q)B;spLyvQyim1qdI#F<;_Ed~=Q8t}I zi5PA0zjacJeo*g7#J z5cnhXd>hMVMpl^YFx6Ece~TUn@P(2f@4dH>_mY59_d*ZRe$pE zL{L&)OhFAO+ejO%EcGB(K$_JPkA2a}dE>|Vm7(~7w##~rI;%2If z<>7!gQor?;WwTW#AklaEM#}%JShg8_Xh}CIo7g0$N+=@1*d3C*VL{CLStqHpE{(p~ zRLhmrUFZuSr3B&J^k!0jLzDUszTTrz&V=NLdI-)C6LeCcu7_ZvZet{)wIM|=N{ep; zcgbK|S4_dFm>$pqQszfw|LP1eGBi0}E{G=tP8EXQcH)Tifa?Hq6Fm*twS_g#;rG^$ zbI!{LzhD~M^XOKa92Qg(?7_D& zH!G4Ao7AWrAGcSqJ~$0WMp%~C)U!1 zw>121R8t(0b%rh#ThB^Lav6Rf4n)>e4I8Fp_J)xJN#H@@B7S5E;xpF@ zPv_};(>@Yo=s8IE9%9KeH3bkBt(CnNOatJtit7LgVBhXeoSPj&&{A=pE>J@+yq4lT z(Zm5}-SQ2_GY*p$mX!v0&JtIsgbfmsr<+=d&GIC$Y{E?Baqy@vtogBDatnQXZUPT(R%NU}o z#Ofe^MjE0yu}(vj0{I}5rf8vd@64mq>-wR0l>|lEtExM^sU;EGYx%6Aq9U{956u2x zTqQ#~?UW!TG^3Tm?tvFtGRN@4Pk898(aM5thN6_%^Qh>I*c0|JOg*?R>nfm;0$YO z%FrcASt09o+H`_)uwJy!=F>>=k7Ig9bubx6NEbx__?#iNe;pg$&B zl{m2qWb&oUoT);-B=FnSvY$dOBJFO<3Rc&PLDlH$jE-Fuj%Sf{)r=dL_BccW7Jzf4 zs3RK{lCyt}9jbwdb9Sg9XMB~KYdmm{JmFC`?FuXyO846qxaF=K#%h{X^EW{KqfhQnZ z3h$D(U~dxxNh>u@Bs9V}Z3)1yofKaL6tMIDv zTh5r~GGjzaIOoY*Kh9}o{LX&$bi7n6;yXk{Oh_$;mRP#8OE+2S#Io@MITHypzqN>p zWG!c=6jymEP!@5}$l65b4gj&$*HL60{ctjaU$Eq;7E8#tJe0Byt*ZQ%?2bON%v)fY z+jIAtGsW(GXbSbRoCn6gm)igx8l77m3chb zw#NbJj6_#&WEC@2f7CpQj0c`6-{v0+I@E`--*>~q2 zm|Huxok{5P_2Sv%pRc?9{MnOpIKTDKUAg6YJDi74r%FauK15B>ybP=l^_%5%(xT!d zSQ=x0s7Z2niyE05kJ{A*W={+3#=!I#yraGU_ka2a@@aeh%b$Mp z;)|cG7e8;0AIqg#!ty1*wG zoEGP;jl@oi^C#avUyonSb@%wA)V| zHZaLygz3BPG{KhE)ePR3&3g7yMjL7#1}iayu^13)7NRu)96~}XfLS=Ib-U?8LQV-_ zovOaIv-M90IJu+MEy}lTLl{h%>N|yWeT$Gl!Lr%z^nx6 zU>Z|Lu6xH4)Osha!oZ^zKv9e;8umNt&eN5$*LL2Y%>p0pU|;9j3)Xbwq5HUZu(!S$ z`+QON5iaU(edzxA4&Z~{0qBTNI`Jbc&u8nbnb_A-JSZ*%Zh#2YePbKoUZ+v2OG*UF zO_qju^Rph3=+xM;!~@D6y2zB8EqkL5BPm;Er%(N*x>$unR;_KoU(S2<){k>OTK(#I zWAtA=zS~zfDRddSHPu_a9;DGLGfYaU>WXtf*|sDIwFv_}0cqc7D_sF1{Nf#TQCnsB zmA7Q2<_>MdY^KA_ zt?V*4tDu4nQX5hf?L?(j8CSdDMdEytFIf8G?6sXF*OH3_>SO~0Smg;__cBUcEIlVt z#yPtDYJk+zr*bZ6P?NKtsm!1 zcHh9fE7eryDF0JAsZ-A!%M2hlq!~Hk;Jv7tc<+O+$Xy}H{t*oK$GIZBOE-`9ZVqXDPmz*W`mh8z^Q3yN2$Y1fzy1M&T)qr2Ve$c<75#^z0XDo|8&jrsjtM;#{(zi>Im!S5`0XQ;uEy)e?C0EAsy675 zzk3yCI+0}26GzNj0LmtBLRKb}U`@D5CPrmoU^Y5Ye3xisbNq!&#;MZUY3d9msMZDE zG1g}3H}u5Fvd&f9%&HWzt#U14P*k*D)lEf+fCP6?7yB=q zh63M~z!uTH-2e42zx@3VE_bAE+o~ewB0q2SPSiT3k5Q$lSPQAbHpx)|@d=Aj_H7xs zkOAj?Lfhn~=VkX-c>ZBKEHdv_2qYkA{xC~JO6Qwia(cWifJ@Hf;L9}58t+?I>ScHz znKwW@QKeL1yj5|d&N0-E(xp_^5-WixgZh&})QnHOA`WNyA)7;AvFI>P$U^78$PV70XCB8M;{~I|I>%anFQ`754A}hBm0)X{i_c`$!IgE)EcfK3~5ie4eYFt{AyRpEB2T?!hR%v}z|i}D zMo+=4q`X#BM`W^A9H(zE)wE#J)+G%mwNPe?1pqOG8Ybzj#pBc~OV3)Bz+tlg371V> z+{H@+o6ID2xOqI12uUZ3MIE*j>E3{R^BU*d?OQ+2X@mUm@%s7GD>0lO^FDzQ668=# za8vpck!MTlL6b(9uaamdM)ERls)ABN=&edmPHKMA=^HKNwqYo$w*ZatX2ezgcLe<= zHJo`kf+z!wraJ2`)8zej3^zXwZ>}zHe2)6-bF6#iI@-n2JRuYWAT3j-g6B@UA4x_R zSFr2s6B~-iyPUIT)!>UxN2@^ zyn*VG{0xO{paaR(;a(u>t&45AOf~EZ{yzL!6({hRY~_FBRA$By8>S6}3J4S7C8?~g zeo`JBW$-iQeQoC99OD-k?hqCYTm#i;l>`=H-0> zK_sT>#LWq=eX!&hT2dIx#7!a1UdZc=CIf6Gy~GNE{0$?;2POzgl{f205?928b0gZV zUD3~mq9FdS?|!y^d0{Ae<6*n1jBiiM_@BrfNN+{Asm3u1Zm9md0uY9i3YNfy`m7^h zy(^lHViR~FsYGI@s#bubVMjiTlMDt`DMAfyfV|+VNq~TeYBSs}is>Zj6_ujEMfyx< zUVLlk>GO$88_%9Uz5C|Hg|gVK$L;@HS7fnQ9qvsd+w-hO;XQ>9oUt2H+bwKN*6v=~ zjkYgRN@r%+R7s8blDp1J{iTtBoXCpRLbfEhGd8=D*BvwRZh)()b`ofA+&bg&D`pk_ zosZ9N{Ww?qTz=zNE>}|buF@o1l1){Qq2$=7@<<^Ekr5%ohv2KuRl=0}NZ+zR%@zJi zunjDGFCPz>GYbwLo0jmjidr*h1&Ynv>@uY9Br*fx@shyoa3Vv7eUrNX%tMpQt-bCq zF!gO8=X@~ou31dcHOmx{%7F1an~tzl7^R~bNsdad8^+a)PEh<}-vbFIVAZ6bH?#Pc?xm+|{_9fHXzx`K^1^frcJ3ss4N3RL@n+WDaXqp(Jy6#v-5QqB&Qi-FVC{vP2dW`%ad4`1Ngzg*+L7?YM-1E&PGH)H7n zDZ@bWBD`oZo<$PAnFOrU65rT$u%|jNWKUNlzP72d!Ln>&!*2^I0lk7HXW!inU4FC7 zK#E>>@~$&&NrYnWz9e{=$>Gx1muuy5F=t7oO(ueFWT1Xu&;UMpsp+IJ0zpOOCV|KbSU`G-q|^I< z{KUDv^-ud-G`U$4?5&I z6#gUxC`W6n##>pUZylrOz)B+&?XleCEz=D5|H4O**0IuUw%t@vcGc0xlv|F952P|? zG>klo@dXC&)uNfUCCf1#MKY~(>3ouRVOf;n13@x(os_6QzJwsp%^I+q5@JP-%P$ufdpJ9N!iN#+qx}tysZNg*?+=N$JvVQcfM_`=$Cg-p3PU63jDVo zyQ^I!_S8l4o~O~_p|XSgGWvgxWu*trd>G|PMVT%=gF zbp-|KN;OM#h}<<)gfvE$W@nQ7?y~IKF?F;cZ7b>es_=T9k^ik9=b8=ei$^c77DJh3 z3?O`f?7@8rz~AyvIemCg-IshB^fpe3Vz{0>6hmHGaMJ)}Xf;jsE$CjAFcQ?Z-lA$T zAR|!%l$*fOR1OG%4J`daz%YQ+?rXiUp?zZ&^ubLWqbv1L0h`hSmk*rs4oJ+apu6qr zhLF!vRP)hEU&gAFhX;2<9qe+Dfw!#^*P8Nuk+>Pui)hygdaV*d*-|>yTvDyl#wgQN z^^L@IF4pyj-LGWqOM~1slBx1otZl0NbwZeeE2=Tt=FnDZHmg(T0Ewe|_HEHkNVZjy zL%A~QvlH379Xd)fBq12R>Ov|hlQ))+VjywK>n5Ko$$!+Ie|6RD?AF6}#jcbf@wQ#* z@f+`_;>(g9b9P?MDwi=2Y7LbqifYs3#j%T*r@(O2N?aMlf7nLjZ8KE03x6 z#H2m0OPlF^@cp}za-tj;a_KTQt87d1FQ6*yqj*GT-35}9 zE_~mQ!p0}-#S3=cLxJO24&cV)_i_6Ty6p2(vpox(%mlnkkUljTFZP-m*mkaq_pYST zrZ!4DVj-34K0_W)ysb`rboyn}UXBS=72aawOGdAfV{aw1)74<=5B&$W1gUB^ zqIT<(;OeCc&hYWfea$W35+Yksm3wlV$spUFC-v5kb4IaG9*yVEo~Q=>TDhJ4stG7M zeOb9m52HVr2&%hclLboEVLRa=u%3E>oF6B66;Q1c;++7z1e}oPQmwo`skzcw$Sg{o zM+bTRT0;J0*0&54jXV~{FeRDGjrv+~6o_zG+>CM@DDZ4jKWrcZ(9p6vFh3SCuzPq0 zHi0-C>zY^*WW^?DphhkduZ%g*VZ*8}PKij7n3rsKtTn`^Vxf^q2W@I;j}rX2^jNy_ z<6Io+K3^|i{_<`=d(OmORgwiPG_UV;GD?7N#-sbe`E*!{l0CW#G$j@sK+Li-RId;@ z1aPvafk{DIWcniuo+MrWWMsGiK_})EeuO}vOF#Ahq!QztV`#atweqNuE#R3uzGR@%uN;o zjE;o1H`@gC2ck5c&jdR%Id&_Y@*#EVVj4KvL7n&iO8WB8e{lbJ5HJuC%*X>Dls%|> z%WXk+_O}_bAlXG>6LwELCbRNz4BUo>rP&FVjE1+FFs`yE{&UF#w(8JI{^0C0;=GSe zv&fFr6%G{j(3Zb&Na>QL2BdjO)k)=T9(O>=5tyrEV6D{iiN>Z+z#TxMN0Y)-JPKW< z^D0=Mwh^C!@J2>lq+zFf`KdC<1m;&$%3#7%>T)*SJQ1s(41A`%KmOzA?b|!asb09q z-+0`vm^r(*PRbsB{eF%0&PH_=I`P}Y=Hbzrm)r!4w66vCX$)9~I9U}p5y%5G2A}~o zZMX&LuowrptwHvDydyv4=XRa_V1Vy(VN*!Oa*Cdc zDFar)h6q^#&IU*YWljf$3D!4f2)HGHJfx^a;4SY~W4*Cy@cqAf*!97RM;*#R-okXC zx=Du6j0e-Wd2=VjOrBw^l%mTz9v#hO@>EUPXSTVOnu+(;8%;fwSbb)C71Nwd0Ky;) z!1N@F*<^Df=TP5a^%q)qw|<;6e3g^(>v(gyviOF&B-Q5G{{)@@dm1Jy)+7+M+s4Y& z%f}+=!!n$kuvvF_7m`fUA?v4;Lskk@iBV^xYBf7 zQ|j9*E4{v^{NT2Ohp4Pty{zxPt~is3b7qwt|H!=t^p<2xG1ZB~z9_nF@Uk;%R$!8? z3&+S1&aSfe(BWLx6vA(eW@lB`kaO8|eadZsKV+Bj=~ZsXXKMu}tdv#BEWNeZp=yR1 z9i6jGFyn%9^}%<{-3G>EhVIY~aw)dZVzFxg}v@eS3Z#`;POB=$ewBdcKi9UQWJ<|k&t0BNzvZ<;e zRAonTu9F$MYJtFaOZHyuS#ms-VLI&|ovjz9EDjm9LDxkzqHn5QHiD=IbiGK}PCAN7 z61(!H4l3>)S|h~gaP|VQLaAhe5bI&u!8hpsRa|u>^)v!^qYN#;4PabDFa}w;Ids?` znXsMw(a`~;uG+?Xl^h43Fs)9`7O^TeG6viWeA*#(TEI?cu8XyJT42Bb;@kO)yT^~l zdirABJ(?HNRkt3#t95JfRJRsCiIvvW_z9wjMCm3o6EBH>RYrL^*|)9r0#GkH%$sGgM$~F7EB2~d`g7aH?;R^`{bH=6n)za(-Foz{cn`h}vE6$@?2q8m zZB-p(LQVrP0~{$(rLm@wjB{)3f7r9;Q%B5j+*VTAdkpeY*&(ZE%G;>I*AZ=McInU> z{y)mj2Y4PW3Hk*MQ5>yA^1~$O1zk5^^asIRY_W`KQlgXR6C`P-0%j#X=@8DSpL2L2!T>6=bk1Ndcyg~%KFk|g&h+b76>f>(Tq}Li??U`fuysD)ISqZ+_?fj4pNQ0ntdcsyBUW zBebo;I&JjMZ&o8S;iS8+V)h_l!(t3OJRa`UL8mxs0PG47QllGA6;9z0$7JW*z}#xj zxbRuC~^{u5&FmKG7)g3vtDLe_$~O*>Y=nO<`ZSD z7|m4Y*kJ~0os+j}hQ0T_SPg;LLxfEHbcVt~_4$$AgD}(9sp61W@~jR3J;I9S{@?fr zPTg5*FGDBPPS>n(M5WaL?GzVaq&Bn;>1L z{TJHuyS;dMCp+c4^+&JTMb*NsNAGGMsz3Fi`cERyNWsEXo2vKIFAJTpb9%2?8^@Un z;aN6yWQ0~8$8O1S*nS65O)267HoJ~WN!UGt!sUMZcTPth}a}Q2+ zFr+5G+4jmgYCt#)Ex{BEa8so*GNUXK0p&cHlT!7CAL3v9=Ebw8cQ3}*>q)zN`MhZY zFUm=8J%m?F?Chz;?$hXcCb)NtVc$E$I2pQ2>J-;u|wT z8Y~C6>jmbkM)DBUN=njFqmLnROZJ(4Djio{7yAzW6_p}0R5Co1;?midWl4p#t}w{_ z)}|$O)zsvF0AP`Xn*o;|ILAT7geWcCCKM^fMoadWlXt9@H(3GrqNY#y4+)O2Gv&$%K2=x zxnT${gOrxR=@Q2on*noz$$lPJpldX*8V5-WS6Nc{4Sr*USOTjI@c41d(Pk_BhEc&j z*jX8Mm8H8j@EfmcqsN7vjQRyfP1Be4ps?LovjCdZV7)z!HgqR_6QKj#Z?Mz4hJ0EWQ?;|C8T&-Arm^B&CDxz~ieJ z01~gZz^1x^j; z4W|%5$SU%ylISM!f-uiKRyN8#DM-($J40v_kggfsGCKZWJxtD2^R)n?P?jD9_|jB= zlGk~cCwP!7)bF+lM|{rE8CYw4uBy4yad78dI0`O!Ah~RgWBWLJZYGrzm-?7mzie&0 z^~ha0|Fx&{U;Bxi|N5pg?gYYv&CBLz!Z21`;V9EfaM3M$^C7JeFeOYfsA!krQ?at? zHR?pk!8(qxm#a!Kt%LU~2`z?Djk#HFLQrZ~q&c=qcQW&oYTfw`isUNu&q(ys`CO3L zn9fv-g{v|H@Y_YI(j_I(0%Yop6^30Zya)O1AVaKPNP_@W&|nuZfe{mzOLpvZqeM-P zcG;~&4EO5HoH{u%@qFd|yDT!9Jls9&->h+I9)IJ(`)DncAAX&w;2RXzc#&a9YebWI z-0ON>{Yp5{I|=pqSRuEe!aHJ}ofOLeHo-_(1}_ipv^t`!gV0^Tn=LT2`hk>X$U9gL z#wXBOP-}+=Sn{pmtceG+oqL|2<+=x+f@1L3 zU|QP~qK<=}CC=;eCUB%^Rq#*BESt5PYC2f7D*295B_@_MdH*6XVcCXCiP5>I-5bQR`(`hv+xVqKq3-- z4Aq+JSnUYi02pg@B;xp7*HaH|tQ>gJExBG@QYIrU!*N+@bL+=B=eGUgr_Wb=EU~a_ z<+!0s-_l0_hd_A0zA#u)rQNHT24o*P`X9bqmLo)Es^Fu^ZCH(lJr06tmZ8s1LCIBa zq|!$PBaD`-$9b2-3U<(`B#%v8(l>e^} zAEr&m;Z7jeY)MwPSPOXEkvmC_d8o42Ojc%XaTlV8TYxF)j78aLk7#`~o;5pp3CM;I z<8nqH3ao7>ut9|(0I+o;MFMpnhPNvXFUvdG(N*Za-IX;GAOsR|_rbC-OHr+O&rPe& zt6f;U8q72V%~OE!hf!CNNaq4g$!brond}gD#Y*`ML2vyymoxhHdj9C;Ra@~wf&dTm zaBdsuiA_}}Q9DRTgMbaM-f}u+rwh}(-|~rnU0Ll-R2`_=Z<1~|>(RX}UTR4NLv_8T>xw`Smqo1C1ElvFyAcQ z=jGwg(bm7tpX}nb!4brpsJbE;Kv(DKB@E{P#6GoUB;&}Deif~fF?+Ww4!tcwTksZukgl?bFRfXq*LX;-CsO= z{OaYknT=cWQ_b>0hsz0I&49?9#0C}&uR7Ui<|%JDJ1y*8+f1`;7i7LR-z3$qGFgyv zkR7Y~Db@j?tjs&)?E!vjK0(<^EX`WA4N7ZZT6+~4eRz%C1;uq+M|&{JC5wTXB+TZ! zn(oF}hnpGPL6*7F|EM5~%Jz{DWRFhT6m^s}<-oz>gdZDc)eq8~^j?&&I<%#zG}o)F z)5JV`F~+x^9JU8G6z>%z49qJnsvDaTj&!zxnF*LbyG0;(e18&ye)^q4va4*=wvaB40YU<#Nv;_ z5jhlf^;7}(NI9K+KV&W6$RbISX%a$7MFq2th3Io!5&__qD^GsD@%k~5@Wn5m^k)}W z__rRntEW=#bSm|p3;os(-sdy%8$ZtZ+~Di>W>H+@Bm~|aEist?Z3Sdd77(XrLh|-J zd{4v?{*1NY%__hlaLwS`d8wt?LbN2im)!ZX1DZ^8B zQM4L>`$D+nBT0M7C?_B1W)kE!M658EZbajj`8=ph=O5yYTUU5f(qw=YodS3bhMAHS z0LU$CW>OPKm7&;pV=lwn6@QeD+G(~*EdwNRxR`?n!Jk!MgY+;}9Fz3zpdd+}0v15K zbIDJu0&W40piXFKlif*K#MG>ca;+rKNRpC#w_}ZHj)JT-LfmWGtb4|4{Yq1^jFOij zi*>cAc%3he3s8Klk^bnbM^9f~q{v&3+^^AjHWW^5eyvvHR4)+3HTy#}Y;U;Bf^FIa zVS&$OHh|9Mz_<{hHQLTaIvK>|BEl|#J$2Q3APISUv*Q`^)HAeGZ7a+HG}$(wkFQ$* zx18@yKIK4kzBIY<$X#7z=CsH@jY?)2P!I)(!KH5)SCqPgLb5-~wHAq(H`hT@m&6Vz z!>BDTB((%?(?BNBPG~n_A@R2XuRwy{N#b%F8zpQ%eC%ZLL@sYZ$BuAeLXMHL^SS1S z_##^@)oVXoPA(1+CVsl6X zb@qQvYf4!*s!-h+9pAtJYUdA#IKbBZs{_?9esjHGBHjqx{OI9V&&Nd<(2Ym$W9qk+ z)w1MkLLgT_Jm44wMw7IYmn0_GIgQ6;lsB7v9w*a7XTCL5qa!IW>Y)b!YXGCxVcdp> zSs5BSm9?nal>gebo3xm%ta28Deh4Z_x&L=mKir^w65?ZAOkf9wCTSP)SzItE=$oDD z+Scaw3(n=$Y{Mt}tzLRYlt9C17YSojmAM=hj#DYY}GX>QOik` zVaKuV|J_3bD!>B6v@NBn_Png>f}~a;)>1RMN?LQ;!AvztM-}hplq>mggchfJy(unK z!12dzvoWHfh9nAJE@W$|-hztN$fKq-)q6APle8<3$TJ(h@#CC(;+Bdd|vMU;)@zHq>7GEU149L^e#pWanvE^JF zmdKDrVZFCbq$%fO4{^TIWl72=lu*NF_p3j>2i>188;LB#)(A#o6Y<>ACQgw(Eo1kv z&KF6yew_39#-p#EK6`%c_zTuJtd1a1RBvbgJ5jZ zK}ZKVF!n>$LOD#(h|vbnE3?}BR?h>mb6NGay1W4=toP_x>N*8&tw|yuKxXnVk=1|B zrni2abDa3*#oaI4ldC?>&5mZJ2U|Olq z3~yTV68{QWV(0ZZl65f7A*>eG)DTEiZYH(q4x$9yGzH;VN5EJopJsn_|9rmD`hMPM z>6#X#0VoMIugGYTG7k-ADDP%b>oznIe%SW9JeBGy5pPRsfW_%_@}*5M48IZN*G)`g zbA_m@^Bz@_-gJGld>y)9O?~s*3};v4=e+;-4!Z&y1HD1(YcZT{zTk>7s)>gnCL?Rk6rcwHQ+-g@Y+a8`HXtnV#wlX#?{0w1gQ5@Iz& z#_K$<#%#>i6uhmRr6qB#T3PntWIGwBYrwe#Y`fT#Tk^9zYR*(YyTmFQNg|MgW+W|} zq^ zA>|A&69$r(&8$jwuVn%a!2n=OCSEmH27}3yf}_-?L3=h&dD>g~d7jUSZ|wtqRlNAy zr{CVaHlM$+s=oF3U0v|*wBX<84&j|%fpAqXTw`_rUzQr0Cj;rXgsr+%yVbm*Hs`s3 zza|w3wZ!VBfGqvymYZZxp-+3U@`2S;SX&4d_MO83)dKn53e31*Q}x7%(PRUb;yF0p z_;Id!1^)K2Y+f&!E0|*TMyi#?wm&WpWO9>O*(B|$4y9HN6l29uS`B2%0t*D%v@yU! z!OPduvDOPQ_GrEU46epIL~+ZYQ;G?!l6w>DUK&g;N_1|hv59x=C(A%X_}psCQrQ&W zxTmW7;a@VSwz8O-UcCF@y3whAKQ}M)_rvo{8hOQ9V~M{G;4rts;s&jC8$$vV2h~U} zc4O4lAI!uJwS)8O>=b`4j=A;Yob%oP!(@)O>v1;JBv7Dsh;1PzR;Ws1-%u@kC|`J6 z=LVBai8_MODR;b5R9 zAPsFTmCO|#zHVFQoKorIc#z;$;o1hYqh=){jkY?@Kq(w$1#eE)m*L; zV@}eFs(^}R$tV>**5q0`NHB&6_Px0BPRZI^i*$e14F3q4;jtdvMVJE?&u6HFsj%1? zJQz&@n;ZFPNC;_5iwq#MQVmU*yB&I7lMU3>Hz<`|c0&Ox18vw6upMx@3G9jizVW0- zBAH5GN%pOn<Z-L?_i!LW=JYZ5C&ZP8KD9LQU}v@__o zQcheDc_ywdvw0HLjTWdEH~}7DRSBxT$+m1!eT8~-CqD*wkhM{&@0ivvfAXP^dyMRl zN=Pb-TD|(JqL#(uINdQtGNinP*lmNnre?n`H~KOoJlh7c9e^=`YKV_vB#9BRiJZ(T zjfrw33WQfOj;^X09b1p~@=eaw!tdu*BA4BxLDS6L32z}96`9K#sDf{Y)!<5oCQH@N z6T_v>GmUx<2B|UGWF?$Dy{OYVSY|bE3-G3{591U;*7f zfB~{^sjx=+AbboJaAzIDL}54bPX=D`KTwvNyQyu6i0(T$>4*emz`ZCGdn)DkRu_ST$Fl}BXB3&&cli-1*A+5QYH~;{DJIe3i-M{BxV?P2E+oWmJ!)5#5$#DC@zW@dhTfUx z1-!`K%KQFI|n)(pFR9V7zpo14NE-%iopg&6E}Pr^`e4U~#hybdUpy zl);>ggL_CYL$!g~!R+c9R*hqX4Rg_@absKO3uA+CpFeu~a$o6DyY;|bt&R4l+UQRs zh?TiO3d#1N+jhpmN(I@5w#h3E5*^jBB&BQBCrX05?KNC$HJP0xHyot+UIzHVWr%di z1QvkAv^pxZ?8DquNUmiti1UOYqyEIuyX;)gdGf}ll~*t9e(S}{Hhy-v(_SpKTaVvI zQ$+j-`7$)gh*>pyhQLIIn5zd?$o{zjQtWXI5OYX6JzqqMrUqEa+=9@7&?NzeMyeyn zLiW-gw-2S}AQBr>Nh4;ax-Pqo>b`1T@Fmb~3-eq!s5Uz{57`T_(&2Rxj~2g@ZL~1P zB3qh66hhT88FVb67dbvntBQeASbUIp6*LV$yqY{`jW!DV6GbHC>tx?5CHdj2;R&~8 z6~^wvI5#5xj(l34eg*u0`qj$|O~PA`-IcD}w_A$Bd$trERbpYOqjIs6CHt9;6miQm zvTOsM?40F4-DF1ZWfgBWa8%W+dG#*u8EN=HsR?YsYxM$ho@rA14c;az9rqqVM!=S{eRflY~~57-w;kg%XV!h))K*jiu?GC=?=5yXxP zGm%#cM@hbZ{&wI?;A-Rkgmg-q|EF@M-XV zx7Ftos|vt&9MTrwp2?85t-JsVpuh}WDc}D`3T1`uHr>jL^x&F_QzoU6|7K^)@mxa8 zY_!4VsyggybG6_kdr<44%v`;yDy@2iYU}JssVWhUTQi3j%M7&#@q6+A!Io^qs>ru2 zs}_m-|M;`1{P)yUzVH{#7PL{pr0U!t>c$68#OV@nNKm0+B0;*0#)o!bv6cU8o&yRl z2M?QvS<+E666b0~RW>|4+m@gnb&P&gIx%tuN+xrW%D&)<$3B2@(uIduaXG20 zHz)g8T`vc9^XY1yhpTKT3D#AX%?^7`onTb!syf#S@sX#=tX!|-IF_24Qq<&Yx40=V zRYcjrc6+lbJrvGU;hWVNuZl%=TTp#^OUvw`wr@KkO&`F%(NrV^J(22(Z7W2!Ja_X?242G zTW%r5`~O6dBF3PiT=rt=Ehn{r%9lVjdvckBCb>g~Xo2nG?yly-UUbX~kYkT|oLLn( zA`6+}a)Dh+&QKeelQ1=V=4gmHFi>S&crFlO^H!~t{tUft{W#~d+9R)ud|vA*vaE5> z*d{;K(N$Fl5G4pkij5_0!hcZ-xmUGg2x@exx@?v^IiMOQ8Fwzrjb5yjRlwAx%C?J) z%UgkyJBdh!0a=wY^6LvKLIHD1AN6{m`0!FqX|d=nX^u=KlWjBdA;@oSXDODL?B0vr z&)8R~wQhOkX#V)!$wWeo$jB+NpOjmLZlp0bi-Y@Yxkmw;NPw)_DT*EPveOe)SC{PP zIhjbeLtRO0#IEBlzC!IOW3k~L+}~x;+jywjwrfBc5AU~8LQGx|fVBab3T5nQ(;o1d z%+%yuSb5v3+Oy9gwU4Cc2bEd%F8f4pI+6S=)%24W^47cRDSYdJyGk6*i8y}t6#ncf z{6_t@5@(Af;SOEG%y(~SEjbzZ+x&v~%K%VfOpes1|8!0Lww9DwW$;7*Rzr*_>@v78 z%M$RKGR(lK5jNQ3z{A7Z|N%t2XbXdl3gI2PJ1dI>4ONFaW8IO-3nMCB$k|^x#E^Oy{|zNkdvE zy)X8o^b=V-XUT{gKh9}s{XLIf-0fG7AOG>A`SR<#A;*PppGivMnv|fd2i7zyhtvk} z5>%53N(Z>OE;Ip=h0$2`I_UTThUr^VVXBlRLrc9oDBWO!C58wx87i58EE2~KGXkr6 z=)o{dA*!VFJY6aPhwWv9pNMzJPlA7(#AeW2%yw#)OztW&cLh|xBB|MtxzzwUh{|SxA_Mp;|*hPjo-E_HFyb<99xVqjlX?8Hv;_ zl{kT|GgAjVPb;WDj@WKo)DiGbVQ2Orf0VWaVnSL{8Iv0Oj@tc)tZZ0A>fKWTR$joV zd*TK8f8-4!_A+;wK4-`02Dt9|7U#xRN*71#uU)O4udmiGE^cscJa$*Tht0`*_|v$- z>9Le-yXb!mR;hahEm*xp6fmbxC%%uZ4Io8;*)Danu`{1Kxk1!&+`jE2R>j9=k zpumB7fj<&zgyq2JjRVY*EeJ|y;pQ$|QGlgdL05ow?W0I;Iu-FH!Nt0P;1D@5v81mS zj}gn}KXv{t-w|C_kD-n+0vW*7sS;GjtCfHofM6(Cefc9 zXlp+|5dOJz>$byp#pooyWupG@>-X!fzp?xC{eSimy6cy$glp8XqtLt&fC3a7P+Kk2 z@Z7_y6?8LYNp0Z8vD1NKf;%k2*0c1nf@QTp5R%)fRW0&J*O?AH$g2If>5kZgy-By^ zE)T2I;oUfsj1qfh%@95dScnvz)E3-ak@BQCo}BiU;w{vU0fl^6scgc#tOQDGl=~yg z3-jc9{!D&-}-QymKdZmOgJ%i|G%>##T;e@NBXIjao_%z~WDCrNfHQlROOd36p+PY`khV9%0< z-$u7OkRnn?PDwS$(&AzO!-E2)WOsmA>Ha_e7(xy#x- zi8_Vzy@3kTvRBuPYH}EG?^FY}+HrNRB5)hi*vV`OGBwy~r*P2$Fb`2D^+ zz2GpneVnTuz~5OS*9fZmT%jmABqdf&|oVr`BrM$9h(yWZrx|Ry~msd(UIvNCZD7KV3-+60z;|u9?qPy|q zT%Fq8ezxw^fA;*U#$-v>=*A^DlC6ZzL{gJep<0Cjlfu;FS)^;Hv(dIq1QSK(CPF4^ z*QJ#WI^}7#z;CP;nFxf5G3a+eOOZ5JX3J_J(a~u)j#L2w-|xNaRvFTecV4}Qpz-5fy{1kzS_ zUV9?DvGX(lU3LCNl^nDZjWlrBq)Rf--o_zM*2!|1!;`fqJhcF67)FA9GAYX#L-Hp; z=nC8M(LrG)wbOKSE&)C7FRP_4_$&v4w^k z&8k@%#MB8D5%|LTi%#dQS*cTI7{&la$pMm6kEA=uGk*{Xu2HxAS;H(h9Wa>=*JqGP zu<@-Mwx)-suyfeONp3sk;mRn_vtjYAALq0he(z`iKV$~hAH8bVf|o=rv+5tnH46mM zQe?SKkdLWMx%7XeL6qZw(y`V(e-?~rAn`I5spm>ET)L>!OBKIv9UX|vj>NJf=E+== zwZEXEmAEtIsHLFJf^PMEpKf1kNV^95%<9+R1?SxC4tUaz6E|D z^G#U{7+w1D_7}SQ?xn!s$>M_bO_!>H$g{?D z`H@CzRb9|sURGe-v909#5|q(2)zlVDrsKIoX?&^B=u~p{@(m%zfmGG$ z%-(ge#>sq0Fng(mwv?fBiPj*R5%9Vg31$2H|N7|MaO%oa*{|B5tJL;9!P0KCT4xsy zL8tpyqTTbDR`Pp>P3!uXhh(RxF*=idD9@X}$EQr0q zx0s3h|K`EDs>lea5JdnuQ(l`1!p64X{Xj9$V7GLY>oTY`R~`6jo zB6m4S9YwazOwIKrt!T{(Q>zhF0VA?5Wt&V2Q?{P$Pu7wmr|X?}Q(YBso0=O$#u-LurN%?<(R93L*P2Hk1mJ=d8e3#V zw!%|-QjK6|vQ72pK#4AIl~ODj%n5|Twkt>mP$|6 z0}oMw3~SatfOR1Y?Kd2lHw&i)=dZ zTxyPqx^5V79MVDKDP&O|bU>sYwJ=Im66~S%$@6*H{}A|zwq#7H0!&bHAsLc)H?N;l zIH#jqKhC*h?#ZL^{Mox)y`+oK!67!td8oV7 z<5m|autu$FGP;14CAsGY6{}09=!A&FhT#~}n%DrUtO1F1xLDn7!U{-rmJAnLzW*Q7 zmw(@%_E6@FAMFKPR(c_nY_#LB)FMj;$>9>zxef8CvfB0Ab?3X|I z@&|vqLmZbRR|AYx^X5EsohD$>$cc*OK+af_?sm*Yn;K#pi9*@W-6U0`>LSo^AU1-B zCxO99I4G)ao8Taz-ic;lqFqTFGWvkp>8y81QZ}7kQHHaj6_u#S_Da{OQjTdX-?&vI zn01js3a>K#B67%lpvWFoKARHA7=eeBLt>NgDIu%s)`OQ~{~UkH+>p)|>_&RUhUImz zV;vSbbG}pk(YLRj{&HNA|G4$AT`AmrTm8>{GU|VaN-O~lJblq+`#tf|tL%dK?^p<2b*HHkB?Di)4L~n;ZFKDK%+dw&hxu?<#Ohm_G|sl_mPz zF3y6MC29nT#IVi?J?hKMV5}u`z^v{GiS<;_0-+_zwps;ZeJP!0FA_r3jw;tR85Wmd zz+K0NUM`lBe1Wlf_4q(b)a9jGI!6@GfWHl{JM)R>{LJ0AKl|$L)#VxCjYsav1)4cs zpuM+PmIXmT=pkd^`=Njv)oi`w;NA%IOhlb>+9m4{3nIz09WhmRPsGq5|J)^MbUzw1 zC2zAm4@Di{tdUydOsY$;S$48yT|$U{C6}RL&lhO7ew+)@(MM0GR>T!oExw<)uw39< zm*j^G=uncg;N39|#K^)ib0)`Z?_@nn+MGHo2L3rI)l1DEAgPOB8KMkjNV&I@_7yti z220c_L|0il%xFhvbUeJX&T!7@Z%mrAG~?vp1mJ_eRKk~vHJiM<>?*vzBg{rQUaGxU zSU13k42+&6>etLbtK=DtvQ3glqt}7Gk?Xajr==#KJG>_OLkNt`Hf5Q%@2nore*Zry zr*D3656d6NVZfQPrzj)GAfv+Ad67nHNQE5*c(#3PS zWtInDg%*@N;F~&l?V^6QZ5SSeGQbPUJVe0GB|rNDA@mi7E75;qn*o&p zx%>jf0bF(FJX9;InP?eOGJrb!@NbV1#I?*MDP^xaO>&r=hzBvpEhb6L&1AbgN9*1- z5fxoltlS~=Roo}OrE{n*nMx=|Hc3Mpm(=|n+naYUxu^qIrwAF83a)EQvcTQ< zoLXR-qpTT%4EtpHx?s`4A7xMHe01Z-xprgqc2nK61X|fbZO3=&@4h<2Ptj_LKvqFAhF{{#XSmSj9&J%C5{c5~`BEEWE zBT##|UHB(O_5h1VZ3dqUyZ`@l70KK7C_{0`T`@ZT-eeM)k(W@^FrDg_pPPkFN$J`H zx}=f4Ms+J-!*B_|ce82Uj0wz>bGj{}6} zY%`4)aq75aW%Eoy&v5WnD-)-Z`6VBd5=m5rMS#R;P1GSB93j`i7$!3TN5$|j862uT zv=3jU-y76&-PK}Wf|sU=Y*`p*o+sb`FUPHsj*dWDq|hx1U!yq7J4aRd5@+SYV2%UP z=yXKU)hSD&*g=1(0@juR52`wF7zUjP-lZVeH_uO?lhr#HY`G z|GyqWGgX3{!Ri1jLNs#BYQ%!_G+?Q9@=72cOyG_VNzCRSHhE&CbYQy6Q5V|mHexno z*15b&W~96mcgj*`Cz|MhE%R$Hw{w^acGkWE0Sw&Y}NWV+H=+?JxpDzJF!X;oPYE0;#o`AFywgQ+1fGd3W$l5iq z4AmwOJOtRuII&8DUiJfa0ovOE^JMd9hpy){P!M(&t*x8o2wMp1SY|EmNMM5{i=6SL zE|2pi&8;8jyhmR=)^lBfHd_MT&cjVNffXt*pXKbJH5LwTfT~3Hq$p9;_@LT>xwdM^ z8XGj{M(DK?xFFAy<-LR1S{XPy0Q@3qleIx_If9|qjB1aTXtX?U$%Os7^waNOH!csV zr8T*w1-y2ioCCGbq;4LZOf2(lzVA5eSd%Z;Z37HqGW32bk;KS&%A=sPrW``Z982B)elB z&9l>i9Z_CDSzX5cPb^B`!@B&>zqTj;&I_L0$$#+nS-bi-0$*Bz?S9zf6ebe(#4)m5 zBtaNOWv<&woGK7GheD#fJ@~WfiL`)5sMZQcWM;$a(!%8=yfNiRI(7a8-j$@CWnO#- znfS$YpY^joaTa?%Zol#1ecY1VTSwww=fvPypVKWq&}V2n99)kj6|MlP0D(oGS}bD| zE!g<{C177!W;ED1d1Qf8)F4Ti582kKVo&fwBm^0jw)OxhuH~`%2C)xG%|M;=ie(%R z`&|T(e|6@5>%)Z4XB!{kY~$9a3g?Y_b37bStJLAq)4NA6Ubd(G)wQy!EFbBx z3`v0y;nZI<99x&n0uUc*#-lW8*U&PLq{@y0{bC<3)}EhUw!A9mbIg~qFhzHWNC(?k z95NF%S(+q#4Y?<_T8G7|i zSvT44>(C(~MoFG)l?BSwQCm_0YmSS@3M_g_Otbj92Hrzh!Mi;5)bsHp>>QF|I-J%! z4^(~DjQIQi?Kpjl%$5AV0zWZ~g!|OYE0ITeP=c=b%aw5JR5=wHf~7Z)&4c7EnC4LO zBk9aO3Y5fU31v63R7(|>nk1t>li?S23P!xD+4AP=jn`qgEi_y0Rx{ z`>qf()he7FFa_WW6iu7tm};FP9oi`{%$4hm6$T1ie7CO2tveh(H(Y$IhKpPG7JP1X z_y~$MpPLN6cTEOtXK=f;sihEMP0{)7Pzz=04xs3z*Iz&vd?IVh=_r`BBv1L)y383y ziJkAA2L7JFm|j+;(wZSV07dd@ticecn=%S7#7{N+O0${uw(kG;^a)&YeZF)1aCdI1 zzJ=*0#?XwxU@RR60RPB(ss?uiBro&M0u0^~JknB@&L&VXJBce<*_Iq?5B?}9cMuBJ zV`9~Zp)%1_y;{XL+%c7!a)qClEs?k=etZ9a9Nl(ZyqC~Gh{#2{I5kSt$wVDxbs5p9 zAdoEvm;-sKdwLQ*WGq~^DQmf%RMA1WP?y9iQq$$J$q;#}51W<2^b=GvG*xCzn*=+I z?rmV9_y1@5^6&rP(#kcs0#;@oWt>cgXX_8;_U)hxAq{V3<}`?9@Utct;MAO?o|wSx zrA(CwimhcS#FG~!cPry(#=SDiL>DMF;|+iVnX;65HP$U7)2uslSVnb(Ez2=G9~^qk z&@^l{9f|j`&f&0jsK;Hy-6c#b^gQ8-o5;ae^uvW#GCl?hOVow~lHR1X)dWU>PGHGx z47i$DDYXvSnw1bQ5Yr#MTCYICio`G5i=SO+D&KhYE_wy5WM{t9EAa5^PoW`YjFh7) zoT`k1V})75Ws~ljl&GYGHpD!^obY~WHP)DQ_9cZiGII}dw(y?aZfqulS&3GWP+_)y z5OAao&#W_6{Ds0Ikb%gLbpA>CU1}{1dz9Lpbm5Cmy@^Pw>{6jPUmulo zawYpoUXl5PknHNfW|K53y+sL3*>ZTPyQ!jcAif{)7uQseO$?M26{LOYAl=rpT>WpX zU#!v2%j?!-cEx_rp6vJR``YiBqSl>GOpLa`RXTAqLJWDdsB60%styYhQ*g`cC_w*}=-7&xEBKlB#RBj5^qfK^KpHOZ#b;QsCB`)S?y?LyjJy z$+ANj8N}tfSt&{tB9Stu>@&z8)7}4VJq4@~%9K=;Z>3_9yk1&9A#249j~=Q9Bv*D9 z)Edq^^aLMMVR|F1=_zH~rVDqY-rjBs0Y%PjQ9|xOjSg0-bET1FbKqFKjMbjfva03& z|I$+cqB5!5$EYjx$XW*aO`WbsFfR*3;(vu$EA_{*NwC3oTS)k1G*E!NmYh{3LGXe) zu+YV;^LMN@a{G(vhzTJswy;_lDbK~=|LzN2m&Ixyh(@x z^#}B%=R+);8LTj=FjZaDi@Z0G_mrc&|4o$l-n(z?8(FN_=LA87;_5`UqN+P9!`yrK zS$nQI$5?C5F*N<-9Drc!eUyCpQ^zccR6<4#>RFfbC7+XW-3*wdg~}RJdHDjO!|9-$ zwUV@9l?d5zV=qF-d09RQlUP`pVIx9e)j>%)&Zag#PkS&z%z-T=mz-mkTFue@@*f;) z;a9bXp*fHs3>QiVN%s_`4cBTtbonw5;{ooChn!MA8OrDEQ|e8Zm{~NsCI`ns61pts zspNvkjwAxc7|N^~TtzoOGkZytqs05853nXV(Zbc)J z+g$#mV=aJJ0`5>+GGt>3gIZ0z?%^}XfSs+1FRKX;qs;ezQKGp47&rQS8P+n(&hB}A_ zvkTTP_QmBtNnii=C%43^a_eXY*lOnjQwKny55|LXc{&{@kndN}5$de2%Wx97X*Kxo zcb`(!Gdx@*>U!r%Ckb+I5X2OWu#%AUTStR|1T$H(87T=_zb56JJzOmKen2W_R=>!W zwj)UwCZ64A%heM0pRG=53 zNd#3hPdb}Fjw=fvnLT}Gz`y@E)p-4)efRp?msgW9_g=flZ5%l=1!$HWF{Qu10_izy z&&D_GZ&~OJ%^!i$9*2qgar1dJdTq4buBx%rIhe8wf6QaHiPb`(&mKX5Tmmp`|);wE>(x>fy`Ogl) zD>=_X=xjXhho_o2L4nH>k??h^V{G!jhV**xIw}JtfSUk1PO@(*sJ&&c-iN8~h*ToA z-SZFAq|2klFwseYCx*pu4=2H5a3Hy&#LIvFWq{&$U0(q4Ri!-(Xys{&R7jTGtqgTR zZIBuXXN$4Gy<0*=)BFBV++z*FynqV%-C8)hCk#)Tn4m~a_Xv2eP`D77n;1_9&%K@|H zJgX7{rS8O5!R-7Jxa>;;+2rQpe0%MkrL6zVO zP!R;gR?i2;6N4X`o0b)p(R(BZNQ{El4QA-PMhm8tWi%|Af0x%|aB{WGa!-h>rG2!t zP@|37PRM^(HQ9fEz4@gh;df_80vkj9MWCU;e@IbnPjGoj^43auSg)S4F!W41>DW}e zF`7>6R@51j??a*wP86NLM*$U)mzKQFof7K|<>`fdF2NK@lQhvUjg{s;^5wre4iYvj z!WPL$Z0hxbzf_%vBpGQ2EnL%8Nhg2WI+#N zT9)Ts!uvoBo}!YrsFW=2(jiv?+otn8%e^1x6kfme;Ni1gzlNlJ=oXz9-j-C~sS$=Z zX>}9Y#058qq(~b@u02i2dctfwk4F%~rpYAJ?`3sMMPel8o1(zSwJgyObu$1v({)}; zR4g5)IOxa#+cjylNLS>;qxJ?UvmtP#8B&`XEh4mo*r+k-AcNvT-D$cabw&EXW@jA% zEvgnZ{y6!C?b=#({cq>ig^MPFq$`rVB()A#A|I({<(C{{-7z&j}A%Y#iI(IAT?(Wj`J?X>v_ zAxh}U$t_A@+K9;}F$FTAVF?`CUOkz@>YTom>lvY!QfM)o8Q2CM{>E1U? z2UPQ72;km6+4AoLN&8j!etcw$Qg_mP0dbSIa+OwhOW+W;ft3T~ft<_n1g@t9GVCJ2 zDcHc@tHx8F)d|02&J!xKs*8t;J4J4hOhHu#(LJ1%sWA?`!e;ZD$GbZ7yYJ(iA>4Pb z)|)rKe4?f{Y)xB^4m$?X4>I=I-Hdt&RwDjvgHJ~P(@l&mzE9+cxk+Q z0D40TE=ynq;G;}#Ef)+rHJi0ZI>$Z#BJ zW&jlkA#37M-RffWXV!P`$2t49yk5_LzFyrrOCWC#GC*BbRo;N(_`V=>i61Wu!yEi8 z$=wq^z_kK+Cldk1ZE((yQh1GeDn3ohJr|fW!@+_^V~a~Z zuaF{$KE<^~$W|FmN_Fg6)-ek~7gj9%*eEW2K`=r18oi(3)_v-2Mr*EGA{7V1x-fMWH-NKyOEzCzB z_3eZzKg?9f1(`$_FEIzAraeMF8yT z!8hkBKk6XuD^KZ;$rZ{bXW&e^7LgtaAZpGw?GTE9mCU7e=meHnvSASL(#Y2|%0#@Z zc=>ORQ`xL%m~4H|_m+ti;Ho=~DOWYo7~Q|?hOQQ2J~#lisfuV4gG|9dZKFsoZ{~jaZ;#6lK)4jsWC$i>4n73m zUyjUelP$?wE%P~w44sE`1=DJhq*Xf+91eV|V-Lz?8V|17p5+3IP)mcBm_)>98<1#2 zInv(;Y4Tug)KdtN74y%s2K@t%eCs4KOFdjugQL?`q23q7*$vVmRpP4baMt*i~!QsCh~4&t0&= zP(Mj)gdcy!s^e7$t1`RWJC)WtJH$Xo;wpvJmt?8i;qu?5uYco{R~A`}ANN>e@q^Q< zYlGlq!VTHb)i*ge@iOXca+3*dO4A<1I%|b9Zc4oFn}B{Ru4=%9)TMJ9_4u~EdKh}R zDkpbdxJN4|pT2v~ucl+psxxZPRn?VoQA10pfMdHJazELG1>uvDYSlQfRhN%bzuDXN zvNl~k!;~c;QFXD?oSf*7HkQF6v9bgJ$$zSE9dK_f3ki$+LEMv_!t35^c0;W^ycb>% zzy3JkPR9-?l^U9;C{*zZnDT1scM?ZkYnH}Fm(rx=GpqX!6v&&BGb&jY$U^#e>fjAf zk?!RnyV&jkH~1W{abz_>t4XVMoiEh202e+xGKaU9|Nd|#TWSHBP50Qt%k@HYDK9m>IuH)(V}w+7&IH4V^vz-jCPP-Gx7I$uf|5LN|o7@`V_>Lx%{7(#W7_05G+ z0XK41%MY!({11AHRE2GpObSRrmM0%g_H5F2mW=8KR8t%R2nOJpHMu}N^D8V~Iyj2- z2N02XtkIVMVZnO6Y`J+$t(ZlDS(8gFMZfZ@gRIEZ=SYdkIb8n7^yvkAw}e1>dJ3Y3 zRCtusjMc;f#cVbzbMkP2X4-?3xfjACu}>;r5R#CFA+=LYIj&V!M`|>@P$}VV!gN6; zm#sSch06tA;!p%@bd3->Z+IO=6wn(>HNd1z`tbrnO8`Z(GvHkL+Unq*K;&PY8s5~Y zu&XR~$82iwHk5bLI~%Y|d^hz9!7 zH9gq^x+z8DqLGPFBoH>#5~&(Iqtl(XcTom6)@wFx$8NpX>C>3!L(VRNsgn5lsY+~P zK#}Bk?33KE+0$w|^}1y-YV$4{4gui?MUbYJ0D`(9Y6WznE@u8q&LS;D&lA_9fi=YJ zV&1(NvfwrynzOsaFo5vqD0}++yO*!tJlU@nk9SpF?z?nXQRa1-`D;=3@avDNF0tmW zA=yN&+YwanA#c)iVc*5467=tpdF-8MwpTJDPMai z)D|R*gG!;!0kK8i79~phD5F91uRU(>`#4ueq>W{N^W^!<`S#gOMLo5H6S+f^pX53! zt1i@KypmGSIq^Y_j2ZNn!y3IXgHUAl*pE=#js=6 z@mb&9lU*r`6m7L|f!y2G$@ll&Ia!_Ee7(+-O)T*CrXH?1H2X!od6mM$xxPRi4NJUI z0&`7W2u3wBCfy-qF$;oO(lJea+qO&Vrq;b`3P5nSrJQ>UC`88HS=OJ`Tu z{oN%M+x_J&t#5fWb+#bzfMO_{>Js)0Hu30fmo5AB4Yrt)vjU6xdT4e5WI#fIuHvb2 zJM#{kI9D%l=?F*zjjG>@6(n9@KWN5Bx(Vu=L4QTgK%K4HSn4ZZUrar z$D-jwL$awv5GB8`?MfvILLcsYb^^DPl2@wR7GfqXb;gpCJ0`)%xn?a5VoLGW}&)g&ueGV(hGek$8Al;_38B<6bfSM}+@&_N( zd&alxd3yrj)eF2jl)v{9-aJJyr&E;ABif3DEe(kr%G}uRn)H;BnXfIyb|@)!@xVQj z+7f2=;6=?0vJPII-f|X|b5Rp*raZf4q`t_e)dcHaMWGRR;}iu=R(shMJ6(i?+~-*+ zG|NszV}y_(N|G~9zHZLxJIJGt)I>H5QgHKf!zQiqI!p*_c#YxIVBjiQ6F!>%I)s&Y z)S$6ArIY1WUX+}vCVc5Pkw}u#iaNI4l_}RBc(wlew@+U^6u|G#mQTTU?-jh6+T1C% zeI7@4QsR(JdMi7U3Y4RxCjOuwTb_3mHZ@7v#2&Iz#4Pd^igN--CumpQW3xyvEK~r0 z(2R(ICSgYO!w?A0X5 zB_u=|7X#{&dld=ck;%W8+3&bOvel z#A9D!<~u*mO}X-i{c)oKu?Gn322LTm2qnl&ni*l-U;CUXl#Y3A4$XJ@(!Zazd7I`gnV+=4; za;`GG;{}AE>lboy3=-a^GD~VebIbvzbmhIanl9PdnLvx2%_z_(_=ir+UG|WXG37(8 zL22TFY+AQBgRcrYIB_X^b!$5aw$~%^5|$=U*lEM?X(X_8^qv`DwBL#PKtfn)fJKYu zhi;46|N2nMsUX~Y{cfr-#FGj`{J3&(@2&bJb9}*`qXEmYDu=9mEp{KOaJ5tQ_+C~=o1U(r*(>~{OSil!QQDW}SN?kzuQ*qdB^dqCrDf}^zWn?T)PEg|?KeCpdb%eog z+=KPD(&HhBVq-G~YHzJoXZ1@q8OcY$0R-llZ{h8#QArjB#-9h-c7O5<$+JCgFRpUN zomcMBj$m}Wyfz_N*ju}~5T-ga$(<5b2|-OhY`X>Nl2VFBho%8DNy5x^IpS)X2B=pw zH`V3gE4Eo(RhsuEsRu{Xd1ls`qeOnU4q8d_E5Q%)c9;Jtefm&`6H4c99y*q()+kXA zxgZY7rpVTLh5|!$y{J)A3Io#3nJKsl9dNqWEf5v;iNsuNC;jX2CCNz?w7NqTd!AnH z#8B!|D1J3<>KcsVs)@!1%8AoY^l8YFQHC{fN+2|>-krQTmoc%p%nuYtZ8i>RU}rZv z*=AUKC@)YAm+O*$r2NgqJ6Ia8P)Z@+WQr?P*Ut`M4sd^s#0l4)9ohHm^>d!?sy5zx z*?v9F|Jv`g8NdGiQU3^G|Cjl{#;KwAFX?ZeK6~@@#b0%d3%vP5-~XMz`s=UX?T9~o z{Jp>YTRzqwwj`I;-rFqxWBJwy8VCY-7)M3{L-aJH#aJ~hN!D2N``o=LvdMJOw+HnEjN)sif8pym9dh1fM}JPyC{qyfblNUpr0y4&<}6L0d#jqTja z{G(sAXFpr7u1@9eyl6MiN%QHPG=F4C2wiszYOmDvQ=21?DV-xJ)ddY&FYwEv_5tjV zn{`QMMQUQKBq*@m(m@IkueAuqXXj_l5rv#ag7rHI(5y(wm$tB!x?<;*j|3OrrN+zu z@(59$tU7ksOC+y3*iVBrSHo00ne|Zi+QMe;(+#vq;$a7W&(_;GQS1pMLYAJ-ez4 z_g=dj!Onl*3wHhbb2z89l6)-cI|t>#gIj_ZbiG06D24T8dwYWxU%KOg|C<=km?XBD{HZRV?8 z8;9L_-F`r~oURRx*)M>Gfrzf=in>eWlbCg=nk_J5^5J;5fDEt}RZ`|_Q1Pj`9i3D- z6RDp;THkCiX})w6lD_d+iGo_eL~UWG5ncYiV+-^R_D#hl%}$Td1?L=RFkubwI=nIu^~h2Ico$n zNW(ceB*&&%9fw(xvf@K7nAtlxQhC1rQ- zmAlc)_x`P>|7>nG{UH#YM@pI_^x%tm=yX$C0F9u}0>oj#c>8@Uuy6q}9@lH+f?!>i zeQ2vaNSrfCJ7X9Cy>!dA+T5H*s*JLKTk?$5q<4@acxKzCd=9dEt5Tk?&~5J6oz$HU2^48`MvJCNaiQTPoddY4-;{UiE5ysojUv zhb}Nk=e%|*&r;8rIofH14(wo#DFBybS~~~7>^n#Xe@7cb0lrJ5c%RQd@9lba3bx-K zFJJJ|-aL8z^6jhfpv-fMwRth^)s;rb%Ho@W5{<*ELsQ_$hac{fF6-f?e$}>)<53=HjG6W(lLDG2~B7Qro zT~qNIg zV4JQcmy7LnZEDQ0wQO}sKu`p0Y{J+gm0ax;6*^w|@EG9wE%Lgt*{~rBw-y zO1dXhP+fB^jo3(6nva)KWEudmO`Zah!4hLg+V<^`rG&}uRlVC&Y?o@6!#;X_x8+X` zVJN5MRCic}X4Mpzg}LObi>*GKAvlA^IkFfAi;>8fAT^o2KwgJ*<_r*Z#;g-P!VH8_ zbc1B=lpC^-fz(ZgZE7)5n~aMRC0~8X%|`>YrGSa$6(g}!g(si4TXU9M`$>E8%Lm_~ zQ=H#>*>2#}_fK{FN1p14lvb)GczGq+YfzJ>q@byeF&rI3RaY_5jhwbx4UIP|Nx&-k znl$jSE5sI`K8rcVdHLTD{e==N=zjpP zq}N6Un{)lClwm^?;)_PlVImxMP6 zt73Jj0TOVon3CXQqw7FZ&cxPRU9)$Ry@uwulD1oa_UM$TJ< zl0qrzTPINLf++c#p(`-6_Tafm;pNZ@z3IyLdcAtuo<05J*Y^hZUcJZdN4$5($Cn0_ zPuGC*8E6fEkv{&^(#M~^9PAvs1X?v_IBL&M=80=3PqmEO9<;L=-rSO6lq17AJ_ul# zO%rwYYd5Sk=}r*@VaZ{xQ>$~SMKjY*v$QT3wW(Cz5D9TDs4pRV$UB_x)$T1se{;+K z>6bLtL-AddP)EGIEOvs43@=Ll()(j+Io9z^<~0 zQ#$}9UENJiCtF>!+|=0=KvS@E*7-qFPB~U>ONs?QbCyc{f;v*{HF@36)^_(6__}ei z)}Ma!^u^U_^u5>ZW}|{VH7a}_cefHOEe+6JWnq~%6~a+y#C#2a8=Nl+Fxi5JEK>v9 zEK0C8Pv>Tn0LrZ0_yT9!S<5y?k=#k^piU>FUO0dh(4;p?F`(2-wLC9sO>S2WlK0k4 zJB8R^K#09~`@FALPhR#vw#HSY-Fx|NMp`&UTKFs?jn~(FvJ=b!hgf;|F<|@<7YSgs zV5Tqw5E4Y7Nl?Hh7~aTRJd=5(WvbW9SBl1xcf9&%)VWt9*ikb{xdV@MJpl@Yvgl5W zHFru`;jHq^H_JIo+&HGK&UaweQX3x}r4^^Sa-Jv_>HSUWrw1j;;Tu}qD5+}Q?ahaF z%z5S{W9ziWAse`Q7-J`uEyJhNcWt`0i+s3IV+Y5^^EB7*dr*0P`{KoQ#k}{*-R4jJ z%%A*6&T|25dju4M==0I-Hm#NGZjj!1+Pnxo2OKu@OC#Os>Nk0}BtBh_v&14xxdI0^ z#mSC*YS<|8I{I$Xnv(2C(#h%CeZ`OkiZz6nd3|SYeecJ)HP7|q@$$v%mp7F%tm$+5 z=vBSIe_=>6x~bDocl1y@51cA0$!eC>Xth*;V+qo};?<{PxNOa=)?0}%=#0%~&6Z9_ za;!6$u_p;wdQc&Rq!}0LXI)L|O&^@-f_qSPSNaL=ChS&=nt)FfE{F%EKo~ z4P#P+>~U}zbMw`{c_-Tc_StO-@J6-pF@qOk_ECyPBB>GeFNKbxYh^Q? zKwO%G4;=a`QZElaNFUDvFirJGHwNi&)wPNn&XeIw)cuLk^il$;f&vqDd>`W)l5!hz zN!}|aS@sZg@#wiH=q~@KuI+{jpsr?%V59o!!`M+r8&!93DN*@W?gpyUH!)4Rg=+hz zmKU}q483*Ri*S?X4I$sg4b5)ZHHwkFk%S;E5#RFelDq^@L4jioMIO(mpt|?toPz52 z9zBoOF{M78kv0EB>IOqO%C8xnSLDc0rKYWeZJ0b%-%BCW)uYc&oxB-38F{s9M4e_v zY0j$qrdC48OFIM@0=(R*={i=DjFzOJV!li(l4SGm$CUZXzRURczBTxAiSY>jjiFEy zfuTEVLYBYi2`SdDMjIvHMiJ@OfhlDF6UkF0hcF;1i!EV&Awq3q$CF_O3A>SGx^#J2 zN*TVV2)W4KFOr5E)3kml7VvkVl3b|Ni3h_r>S$i_hN=&gW0k(v)wAFTkf$1XaxmHc+$UyX7uSZKzzvb5x^U(Y!KO$*#mQ|IM>C)6f9qMsA zz1Dj_&h6Lw_Qjj0&u<>!db=g!O97TgD&TV$d3BS_%0MHw`7V;!k1uS%g!l)DO9#PGDtleK8!#=8E|ocujm9bVph|>Z${`{|E%8o*+!Rcp($HlD zm{{+GJW^Q13h|wQsHuAtXgp~7T z0G|!Yx-v(AmO*kYUr;nt11R3dSo|VisErSZm~~uF{V}HVslaI6QSu{bM_`&5tZK4U z$G0T~d~mA*s{;>F;UjBSnM49^SQT*fEb5k95+O_=%461$Odtl6yy_9ZbS~+5%IfUY zH`(a%Y2e2?3gs_l_C+F=m10Vx0Lg7nTa3S6tR%6{VzGCAoSS!Wzj*oTXE$yBAZVs! zeMh(1i#oTE_JI=d^qyTB37=Y$ZWJ`r8v*}mEeYY~%%{{<8oWFxZFsN|)i`@{wUyAr zW(Aav;EG|6P&Yp)NZlt}5{qPIKYVBlsZg>oIsgTffyt;>u}`o?rz$HVDB=bzsME-) zvnGm&+rG)gRDJ+aN~FE;FI$s!yUxS;!^JcXffhn-$WI)MT%kA}W(1i~s)RiE%ioxF zT|ppws{?h2sZFlUv??@W29tS7QV=I+2{cdkE!f8{wNuEe%g7ngIa!2AgE#O^Y*9A_ zC9m5e+X$_*-4@zRL0ujov%`=hfJBM*qI8`HFYf#}XGx7W-@bZz(+*VF5MZfuAIWCK zq8O1~l3qIxj3> z1YiRbmxU}(N?|LYBYD*l>xHcgb%IP6SzuXKouGzLA6@=1QZF}E36R=2b5EB)`SsU- z#V4N*as}k3n*fTSX)FujewgdBC<+DLuZ^sUKdQb4r}^YdE=HYgByB61w31MoRGzy9 zq%T9VZoq;edJpRcag79tE^28vQI@Nqt$7>>{VvdEzxNW}YNmY0ta6MO{Kf3q6Xp~rTU}y-!&5kbZzi| zxJn9GklK<7=}dUCbj_RYM{8brHgoj8yF!OF5@B%fh<+P5BYV z(b`f#HQrKKA%$E?JPuB&U&-&9%1T8D5Mmw+x&z1ZGCBs(8L6L)wkMw?v&W5GuQs1u z7o*|eS0xvjf{dke^%AzVRNxVojIMJT^GZ3vuWHv2x#N3Kp%f622ar%a3C3jkw0jM> z2CFL*nNR7&49uXj(AtCek;xJ4FyUirk)B1=ut*e&cTwvAgY%wvTm#aWrkWrZFUiN8 zIUpe<3i#x^_U3vd?aoX0n4_1ojU|541Dmet1N^LB^NqOyA-@tH13 zQ9p@;T$`H4g6_M#N^g#GoU@SAk#x|-uF2i9muA%EA&Erx*N|nh=E|)=+sZzZs2{(4 zv5upTE4Q!vuG)>1Zr^MBfB5ysiN~qaGeY17yK5X)(R*mj!Zg#t!X#dnZR)&UGIqeX6NXla^&x*{`vAH6b1%yg6L{md6P5 z2zzwZ>1@}zB}`Vmm9*f5p?f~xkU?gUBZhkZ`L%YR1ZTuQs{XRBof@x08f+tEFuw-} z01~7s)Cx&0ly#g|*4YYq5Fl6~$8hSaW4!{uv6BoT17wIZ`9VHUGUi}022`29P{r{< zCSLRJ2BLc0Lug#J>tH2mxL%3}m26!!o)Ck)q9Iu|W|Nzy4tRv6t06*<+UujnQ@r_A z*9e(_v&4Rd;TiEhhQFl{ZZk5?~acjXakCaikB$?L2qRQ zPPVQtS031FyxA_ocEp%sm&+$Pck9AZ(^fYx z6-Qmw3aINrrxSImb4qC9eWLGvMfBThsvN-LRV6v1M)wG5ALO4%$(E`#yesr2S7~5| z!yG=bvlC_Tm_|RJn(!Hcjw2sI=O%SUtrxdmsZ4BCGAQN64$1gIAl5uO3+3Y= z36TT|Tk2cvQpA`_8zFxq>H>$n`sQ9E|{J6K3Z3J z^5KY=WNup&esXW*ATw2;be+YrjM=J^6J12xE)867&$V5rtw1}L#B93~A;Rl# zV5B5vufX=EU>_GivLIc)J6T+H!7lz%J;pmN*ed7-!D`5*b{QgXV1oKzs&r*F0uhr_ zwr@PJ4t~9;M4D&1_FG4ZfAZa{^?JQ|a zf#9U_BH5j-k%!CQs{4eMe1h@@E$B8YWO>y}!TJErETaLb$-j}W0qVQZdv>2{z@D$y^r#|2oJy1f{_Pa-3k)#n@E37ot!4^+~iR#(Tm%lCFoE$%1KLiQ1 znAWn{k)mdm&{rTFoeXN*;dvmXyhQF;0vUPjFq=CJP1W)OA0}e-qZQ?c*K&m6Ms=YN zU2_q-SvOdHsjFlIT8?oY$k$a5)V&|)CN%!Na)IAxF3Jp z%6q`6*0*03%^zLzuMiM*yR-kcBY}vThOzbOmX5m1(ABLVq_j7Sbu6ThnqyYPR@Y?_ zDccQ2e@(DF8Q-vbSAkCK01s(u3W2ssScgw)*eYreBx2cI8ofE+3f%c|Zu<)zFZYlB z(GR><)72E6YEdUc?prMgl*eiu6cxe?6NaJ$-vfw^M~%JdyuwPW2J}PNnytYk$)gpy z-VK}NWvhjzpj0493n6U70Z<0nXQz>()KL>~f^VqCgFx9D1n#VH&!vsn$-(D4q|bh` z?NmGOy?l?X21I3>hifRI-%KQJ%^dmn)Q=e>el#y)jHnjLk;!W;gY%k1;GG3_kdL`Q zW|RChz|FH%O|-?##n`E ziIA|v%w@LGOAKWfft*8ZG!s^?W&)i`_hmNj%WT}2*|;C*Y}~y)dVesM!8d^USR|5o z3=M22=52KTOm1;TPH)nZubtWq=+2f8l8^4@t%Ft@n~u?Vr=}hbS?U!!lr>wGF{b6w zJRFj=Ts-+%8lGx1TQC%L0}&)27)<#3C!hT6LvLgTFhko^KI#n1Su}>z4H#j`o=Y9@ z;M0EeX%@B%5QSt#053^+>>;`RavT^>wN6;gOXzxGYSLOuqkew1^DLR#$W*AS`3x9! zzN-G5dmzuJ9(P{3FFKB2D#4$9CAhOi%MZyh=GI`VoT)&^{um;FQRdcK*Z8w$A>8DL zm@*}#G3)|b8c~ESds6b!%CfwY+=v60>+o*y#Exhj=4e}QQzwCZR+*#eupka0ww@*N z9JB2ox~qaY?s>S6@)+J8ltsSF`{-9D3Bp@bDnZ^|R@RKv$V5uwr$^#QEwfPM!2U4$ z5?)A`!1-1&A^}nKG!be2u$r=f_yp|jwv(+5q5b#&uxq7xW#MFD@^=}_*W9LgpxBIGd@uVSEptPI% zXe<(!-j@h`C%@SlBwg+ezta6B>3)ZAUfnOL!#E5v>KJXDh;{5 zsp}37Uy>T!dmYut407{4^4Lf+PKzzC4$~}PoLyV<4t!LG63ETW^XI=ioq6-BDcfJQ zm)v^|uWD2N%GzJQaR1S}-}tybDm9+uvvK;wYIJaOP7>fUzCwp{XN4ZIm$fjEM9H04GV@reCUK_V;< zSxVB6*Yr1V$fXFX2;kEeO&}WqtE`HPJ@e_$_!RwY&3xyDyV+Y3PrW4{Y3EMa7&B4r zvu2DT`A`wk#B@nMk-KRaCf8M}sciDr+4XkB!bp0{>nWrz64Z}Uq*kZ9gxM@l1V#1J z7%c~Xp2I$*RZO(%TjTpf2OBF-RjNmZ)sd9;FR1 z`AJ)$EnGfhGkRA13W`k&f8r6zWg~mw!M{QDp`WoNikjhhWc6!}Wo4W7+)T>c?Fg?iIG!EFvjY!Zz; zX2sU2SdpyRq(fqzJ0i178Ce|_)5(H?vZa>Xp=Lxf0r;tCFqI0Wk=O(x_B|9eUC9vz zoTS~kg4R9e3b0DXU;g1EYsn`?4WIo|%*>^Br9UDq_^6XD|QAu}6ej=Op0a zCuE)x__HvB4BKV?CW(VBYp=NFn`kY6BP1%TYCK zC&?6EYLM5D%;9R|R}bqkT)X_ENA4tuOoW-kRpEYQovr6dp-SmP9h`;?)UpH^B;LNI zEeKQ2x@XIB$~cU&h6jeINKp>Ss8OyLIppdI-Y{iEBMUqdV9qn>QYIxYADVvo6JLM* z7kzS7@@QDvJw*;FyIBGsTSit*@V~GHcg?j>BdacXsTTYpOP|0bL3Ea+0w^((yI|WG zqOd4CO5AwZUdTI^jFr_Po=N+|OX(8sZ()+Ws&oH4nO36Fn%Sq+1U1n}8ihiqUXm=!3)^MKsf!ybB+c)t3yZE1p&$hY;eRS0 zZv=vIK4bkYsgl2Z`E0cpAJB}x_xjy*mNqA6>5n8TnW{Jwu&H$we@nA{s5qOJD_mNmlUKl z&*(`bS3|(}eVp_8`)JReJz*=&TOAZ?>D&N|LzRt$t;phjq46>KZ4|Zh_y3wxuMGuLjTsE!nvx z-J+>$-l_nXe2&?DKt~F|IA4v%tgcouGs~g3~ZBWu%Nj z39o|)yk!>t%jf;&v#YFe=XJX|cI!`Lw;w41UWTTEjVvSOB&qqH(L^_8tw}ztR_gci zWH3n@_-T2fTZ8xo_Gdx;65!89Q>)N{xL`tR0tSj^FWo;rP+?mEwOE{E0J%L3LT?K3 zmCwb!ALo1}^KJV+C~jS?o5O&eV!5a(iDYIQ$W9i`aeJx`6ae^Eh~*mPYv?qS?dx^ku#b^9inLHv zreR;Al)pDfL3|qonyoT(51=ZbUcw%5WH>TehM5(InJW_o_utPr`aHS z0WJwg<`t1ts)Yc8vt@_5WQk|<()2t?PHnYNp^>e7IL?!y$if}GUr$n~d|4=YqX^;_}kuNy_oo%66j>|vx z2nVCKco2Zk65o<;t23>TtAjj-r-lVsZw=~46S64%998}$autw21h}<%!b>Lcszwdo zR2@|JFt5~*3N!(FB#{u;aQNHvTZ!p)}LGNF;T7X)8Bd4m~QVV<#2BMPiWyx7TEoy9A&lgp8K4q0Egl~mv4=1xH- zgGLRJSYY1Ks?dldTyu9ds3~vn&4K}nHF?A0tmO4m}7}Exnx=t0Z);roobHt z#;^lO9&*x94=ap~;wTHOYP=*!P1n#wv7m2gIzX#A9dF7)*{00;uANC#{!AHu@`}{@ zu9a6hPPELB<{<&-s{C&D>L6C&b1MEYD3_j{4C{imt^u%i z;47p(3PX>impr_b0(4pl!qQ=|28SZ=NhV)FrQ?c&90Uf603Lh!Cyt{dl2xlAbS*V6wUo^do+h^iMTBS>9sI{o<(MYf-o7a!Fw5Sx zoRU%*=1gm{F8c$q+xdQOzS!2G#yD*_O7}`+L}bG!K|*^s4~>QVUC_% z@FbsQs)e^030e>lLURegCR2=9$akKw;JKI1_2DR4gRdk@3f|Tb<<@nG?U#S*I9go# zsa6MHL)W)bu`NVi7*cvAi7zp1py5!%Eh$Qq`&3@d2MIsQ5z9(^fM>39!kS4MPkvS- zrSy?>>5z4JKW%N>kh0SbK1)!P)f<<8I)D03uxM?GrmrdAw=~qbFr>}g!7)LDL{(Fo z?5(Vmc)*fIkR(H1bsPhkVy6KH=9ZY+o-%2vQvKVyOVRy!lmv5Eo0UW)$Cl(3#VO81 zarFn+t9{NucV527Z3nw|d-a!Y??>qN-UQtNd~_-g29#|ZKRGTn&q2MME(o&Ux$Eln z&`$#9i7{B+9d2nXQbD(qoD~nx?p#}Ll57HEbo28ivecGuBs3F}B$3H_O~T!w&dWcO zKZDl3FP(;;wA1k38sT3g%O6j&{N4@xU*-uu@jSs#@2@2NMcDci3tNBvo1dB)z?|gY znJ388s-Xv%0JxA(C(oC&b_HyiSko@6a!K_S#+_UVGA@$T&(_ruNIY&5qdp+8Aj>X* z?W%4m7Ek6ipkWv-pRWi94N`5sI)RH_E>#B1Uv&+6`1ncwJQ|HcGC%Z-?j`||`O|Tx2KQdS8%NIXUsm~#zpPqS`aI+<$%$A#2xOk51}hWPrCfG( z6=oGBQs-f9Z=6IfYzdxS2(4qo_dMp|HPu>>)GB3Ez4RskMQZ0&14W!?n~;wog{FlJ zqyev==ZEh7IOmIqr_bNM;{U$Y)7@~t(WO`oZVab(nP!%7G*k~30zy;EYOoUS7~4>P zsvNpN|MES^MK`KaIml8YNs?{#lAo0n-154{*t*xY&C9qJKta|>(e)iAT>^q{&R!d4 zg?F>P^0p=Ro%3>zswr&~vLn!dJLJ*M)*A!PFmwg5f<%w`r^zq^DJ--6lGto&_Uc84 zKQLm$^AY3(Y~U}oX;fI-aG!e{xvFugb>8r*!EWn}I{Ty`m(*2S{O}`oHX-krTFUS9_=5CmK=iVBmW~$r z-1S7+<`=u}Qbl^Z1B-~4q54#N{Fk1MC4}E2g^O4)2GS z|CJio;SB?c0A@R2Y9r;P)g{<6KNpp>d!+yur`I_xskgtLYR8=3PJ%yt8T~Ly{K% zjJm;OWdf+(Rq#fQ7TA#siM&A>3%RL5!_<72*w*Sy*RWH7O~_Xlx~MF$A^i>b%3caO zvLe6j<2ZttI%~$=yCe2y@BTYJdn%3hUb)9?-oLkW-xnppPpl+(@4n_Mv%mX3&e_xB z*~@tw<|H6@)!pC9V0Ox1_JoiwXw?Na%&@FHWoVP7>oE=DNIZhE(7N6SRg4NTrFFe> z{F&`B0H_Q6989046?I0QH$o09^e3eg5V<89|%BvJb9KO)EJ0pcRHi z35k|cZZ@E0jHLQZiqjl9wMOSF{gNSEr7|QWk)b5UZ8yFPob^TtZg&7oVjJ@QCDhjr??ue$jPwf(K|wcOvZPFxCE* z%5W~SZ3%kma(3lW_)nCYbo8vm%XtNjdYB4>jNWA-}H zBg7-sYEt!c^hHC!hR~3(^k_%B_!Vw~AU)}C_r4zKzxT>Lnkx4rn0WxUz-x8rI$ySa znKV!R7t759h+tgSohsM>+*|}Ca|U?ZPifuNnic_vrrRzZ@a1XfOWJ=-fUqtrxwKTMC9Jhq<6ygjFmEb9{8E;n7PtsstR1@F=nDf|@9Q12>%9Z?E#wv~f zLV!nXHaT_9NUJ>>`R#&MC3wG0Ja@$Yc`shRdfuKr{p0JVqsF}#@8;=~Ih{Uz9&tv6 zX-2Nv0IKc*gOFh$V(tmxlVDFWR}QnNx2Aj7Dw)E!9RN1UHJU>9x@rhi1#vE&%*>gf zvEWT@JU5mr#+78&&_Rdiof~M`f{E>TuAFIYN|;(>c60i?!jFnmf@BR5ptW!1VpA(`~nWxGx7oH>#xB$<)2pc)LYlRwV3 z@BQ_4$-MWHT}78WjqkXRAKzg~`{B4EjUM?uu>*8Q$5xOWH>ky0kb#cwI|(=Y%|3G@ zOz4W7P%CJG^_E`nG;$B0dTTjmABTiU$O16mmYZ6#M)GVH{s7S3b4oGv%Rm1J4TfUK z*}$g8kkgJ=Ptx9f^)xIWOv-{3rQ^z&CjlUnb#y~^9QF0FQwDJHq@ZJ2Gq4yMFyC8) zf*p<^YTbhj!Dr&#spXzP3vt-u%e5Rj9DR~LHFzTb-3A>UQ>H@7DM6O-i!{5S1kKdo zorZTbjG0Q5?O-ECf&L0iptYz;Zpr+cO=Xstij`NlRH7j~GMbdpm;9p&=-x?o{pt?y zdHWfQ`0Bco_TKAu)!%c>7W`V{_>bQG#z%#^Ar@_`jbsqiD@>v<6b9Ek?}pH}an~^b zL1q~_p&82p$}|d4l7PdT#g`$Pj3(Nw;19cu1AD23yaDj#;L&yDzEJVK}&Bl9XNe+ZCMF4f0ECG&u8pXF5z^kSKfWYN3zgcn2)wjr_C(IJ0)fT3a8 z1&?G&MoDm$409&WQrdJ2U!`9}lC$0d;-JsNZB6dyRnARIpTCgtDdg|Hez#O)zOwFp z6&d};$7T0>D>?j&pM!eA59sLl#wEu%jIW^RUA}Y6P&BD0#8#AagweEcXAe*YM&$LX zEv61%V1lr^A%rpvT+gY+3mB~7#9Z8x=z<%?5*N~3(7ZlLIUe8NJGkMjTa!rd9~Ay+ z1@#CF8Y{)-hFR;E_5!rNR)swQMtxz5k7i9^9^ji#ynLpla)gNDJt z9b{bE>O=u?q+94>)e2ZNeHgvOx@Ee|t72X9)bjEXgHA-p_C%~E?m?B?Ux_sxhh%NI z;$+z+1I(5Lme_xC$E|#2$^4SikiaW$vYS^6kqWGylcBTNVYk}gM7=KKn zkZRUgRSg$XjxcIa2GuXG;Zg`%QK$Hn0+L#_lG=ruH+;r1?qUsa8W+$&#Qkui$T& zf8!C7VGyPzWyGaHQJArB$JJ9Nx?3%7Q?>->Qm16{`;xTO^&kw5+OqvRMq5}ueZ_Kd zMleEx7*(kWM!@iKIxfFC-jy{W@`ZMFiXh*%T-`Sm?-CV&d{}gZEBCB4S*Iacs=lOZ zK?(~106;76yZYnap$A^-T1EEmjq0I!-68G*|Ae0hz)pkOb@f9~WrlL%UNNb&w(|vx zxRF-Hd1P%pfBNRldiBdI{op$<+g1KEU*-2M8yUZyQju}1R08Jdk5otu`Olw`MJ$caEj4kG|794u-|^@J8o~rx9ioDhfDRd zM&g|p@NtKe?rnMb19jkR6t!&+cDvLUxwG(lRda2S{OhJH4cFALXT_fCB$q;fKvW(Q zNa1O*NCO%CJ=EBy>vyUCNvbYWZNd3eApYo3UIP2*9HCS)Z`JI~O?N+?lN6)lwQNMO zb5YlQ?s=D>k#sq(v1G(6bO*pI-@uVJ3_$M81M;WVp2+h%iY4V!J%wAN-mZASs@+1n z>@%un0_Xsan;M4X#!SqcaOIwU@5i~>kv^a9eM|jhXu1)ssJiE556<_87;8o>#x{A` zfHU1s%Y9d!eqvO|H9Nov$_YT+U86uP^U%o(@=X`gfYO39p`b=u1Z;ja+5@?ltsUT~ z4%XrG2d50YT!Y&jlJu+&a2(YzF<`QgHUJU%5}4{G6d5PLMdM+^6txqEV^DvB?8hN) zc1V_i5hpxd=Qaz_sWIWf14;*q<@5X~5>MJ2whFCI=OM3qKhEi${{G{gezV>@(MiXR z_gbU8zZ%tk0}Kk7E^9u%>Qq)<%2|U;z)DH^O-V~EjSPF3J7MUDx^e-6M)xvOErC<4 zt!tqv>C|Om`bLJ&>U@ckQ!_@^;;_Ub3%PzhLg?S^)kAc5cIq2gtL?gS)pS@(JREUt zHD_A^Vw%hsT!!2b?Okr*nn>sGRRhzRiA}X*mKIZ3>eaJ_5EL^}6k21XZ0V;3!ocnO zE>TKD^}JW_{W$0M`rWJb=FKmkY+caa>e7|k#%el2O%Rymx6Y~7v_MekH>rUF(q+?m z9Jb^P0f+S!cBoY=%vSrJD>_U{S*lxn7ZG?rs*?`G(UEt!QV@=sc1a}yKzO4zHSx6n z&s;`yQ6e$%pe{bCm@cBYEJJu{g0!noA^4%&FI}qGoyl9$eKb7+uBQiVk*Q|u1a^^{ z=O(xX(7Ur9-ntF}6A4K2Iiq|&mX4%&VPm?pT+zK9>dzG6`P1i5$CLfyiXz;3*&gk3 z_0v-Xh`OXd0WoAbseT7%yEeNeN$U1{O6W=AE(645qMT@T@oa-@dr!b^sHDQ=G%cQ{ zhAL&V(joye2I)T}C>7r{O3VVP<>dA^wiiTh?FZ7EdDbkr^P>HFd>tw1p*Qo_`mcZd z{qKAZF~+-;P(X0ta0iTcHSFmjgFQ>$L3mHXH^obP9^@6(pIG?te4QibuFO6R(76yv z<_V0KC6?aDln9-No3X~;I{|08`H_^IwCcfGQZG4!n0t%*o?`4bUcY?%YAlH8Rjb>* z7w*PUNBk= ze#sbIa>rHZwpcZ;M0sdgnA)&ivOZEg6;~lPY?qbxJUS`}hvv)~P=&&`%Z&`NbrB%B zo-G-yD%*PJB>UaRk^X2HzG-iDcvpcWdty7Not`vUc{$JcFhloSCGt9A`h6ovunV zm?$RAf5G=j`$Zz0p_Zo7bNM$Pp+%$h#@b57L^6V*XxK7p4keaU98|^vY;`-p1CZC6 zFILx})IlSu1-HTIvN%--0*F6AS3_FTx1%f`qV=QMl0r#xQ@4_>8xsue`DD^iIrE3^ zbVfE0P9#~B;h{oS!zHbW7V7|*a4*G0mcPjH$-3RMu>o)#9L2@u>2_dnKNKY#jSxpTPRd+lx?>iP4b-bW4=-`!l| z-#TVc?`$XiLvy#j(WCLuATmxc0UOv_A=LQd)|(EXN8 z?422j)(%-O6Cx!eHDIvp(KXVqOJVrAgBPpG31ICtT{~xPfCcvfihG>mZ*_Mxt4ndY zAXB-LgEhC%X4*Z1Lt0FhCD+M3q>wmN{~$$x0ugo3sB@yl63Sdf*2`6wh*JMbYb^?+ zk=k)sX-HF24wdCF^XT&Dxcu9PKSUV(=*?FoUZwO2VC(+ajeaySJ7Wu*+S*+Jaj;6| z91#cdH$NZ%_M0SktBXsTq&{rtWYWXe`5pAuAQ&xp;+&r#O9c%_sy9r7edi&;J3r3N z0DGe>_-eg=`|S1^N&^LYQpH1SEmWvainSWdrZ6V|wKc5-C9X9QMiWR7;!^Wy2h{TG zL7mJd2VZm*O-gpT<}H<=q^3?gN!^hRWJ9xZ=G^{Jo#3sz^2H(h|4*7}_m&6yqE_}v z)ynRDSNG-W@RMF0f)7dssucCyOTAr9&;Z}s_9BMD;^R|iz`$wBvDr)TrJ2A!8AS}1 zybnooMy@7psIS+|WRn`-d)?&9mMqnbS|$f4NnJbgDi90=QscV(JBKe?aCN!RK`yKb zWI&1`zy$WC8A&cjEL?Z;8S$>J4C!6hC3|rkHBIDI4%B`|KpaFx_nN+W@jIl8<$>)WM%?=yXAIeThBS z<-Z7A4Z6SZ_jM1SfNv+lF)lDzu)=6QNaMegdQ=BWc287Cm1o^>0 zzqeZE7xB)=6Ym6!lVqs!uAACD@Q);;PLRQZ5Px0e+6GoPbSI+^XfT_~jb%vuGXJbm zu5vArUuF4BU6A|vtXsZvWS-qMtU!*kJabTHtZU}t>d=Jr`40BZk8`$wKi=)Dw=bmb zedDzfRlAMmbt6Ku$X>b?)W0IHi^vNzd=6qpCrawxbxrmi0NeoD0r)i8&jMuYGU_F^ zI;_cEGcoq?lxG76zneTKJpT^9o)Yp02iarN^u}xT?>aD&MpX{si3$X4QnJ%vmm`7~#`$`A4N>%us zzXPat=qkn4`rOfNeZUggTLAzOZ3NyD73kx=S;E@?0RT6SEq=7;$J0CokgEeE4|k z-a@EfbXh;KF6(E|p7f<#>Jhr7bjBSIomrAO1PQhwzbx=qo55t5`5@e=1CS9vb={E5 zF{HGefrPE7iwZeDZ383Yo3MI7fW0R)6BMX1_YT{xIj`#FP&77FVU0}!tU&W{zQwxt zs*-9VgPz^Z_tgAb$1^#KTFzn=NNmDJ*!Q$T!4Hv&l`0$VNaz z4m3jD!LIBusKfR;^fJ5)oy*tUt~7G*?3;D&ev_f&e%7u$o$kGCKOo^6xGu@Bi0v7< zC9jZ;Op3+xiJE;ME+ZYPftBATCSet>8z%2sb(G*1j%T`7YMBZ zXxNfXI_%Lrl#l#1s4HpXN{y>^9zb%qQ1ejYcA11UDFjqtLqgi5S7{&UuA1Bv4Cp{k zj(f_Es%+_}l(n^Mr7}R!Nk~#n)_e{}LRel`Fhz5ZK<7zWhLSfbIq+=W^zPwh$|vuJ zbI-jO?{SA?a+Z_55x@niQt?8oRhGQ47#XswaWqWzk9hW&99uLn247j!4(nwhz&nuR z728^;3&DfUa)srB;dRloL!RJ)*mTU>sI6A+30oEf5Vy;}f1F({U%M`DyEd`&U^^>) zAKk`4Z6O8OrJkAuR#-ODjnj2CbWPp1 zqm$Q&nBryZ0PAn(YtDN=&aD9b@p$>-^~+~B$*1X>MfJqvu)G}2GpfHhP{xlN9q-E` z>FQKIWJqcdVu6tewkm#)i#f>eAbvH*wZP&w%WQQ@9lU}J2D=D=CSkh}pkMj0w_8oN zlOF^=_r5Ova(n%Fx7S_H+F1tAa&dIJDG;T1X&V_pSt4ffN3$QJ%KSaTXWK2Uj2LCV z?qWJ7#b*);}6Xf0tk`j5eXE!|AkNd0?KY`t+m!#lTH3Yk9j-=;@lf$Wx)vE$SN;b zWu`~CUq5GywdUM=tvPL)RkC_=NCvy;*hr4sUO2VLd1gR@%`6bZaQ@7gCTe`RoI>xH#Z zq<>>l0g!^AT^FDO!fNLj;ybY}svIq@QEd zV0T`wxaS+>TR+ZOU3a{C{(Ox$cfT%o;}s|wNPO*SOB;8#c)s=HoK;5OVQ5m=S3@l* zkr28hjtnqo-2nllXj2pLeC%e}twfNl0*0(6CSC)!Vr!IC+lcDUl{fK{1bMCOOfOeB zaNe}6%O*iymYl9F<4cp~U(osg6J zfB4Y)(s>;WV+7slC!I=LW(vMp`D`QaVmTPaVO#a;Rfk3Im2#MHT2(*Gl5;Zsl5$;A z0s}^?&MO+(N&!It9YNt7w!k-4-FT^F<~Sd2=cIn?$2n`hfBw)|GhaTx+gG!?V|rqq zri9GO(n-E#D@EVkfF%>1WMa{Enz49-#xIwe+0=?#yrb&as@>9$gWoqWTN^Q(IkW1n zc}_CSme#KHOr`j}imMWU%z&6y&RM{HWy2Ih8tX9sHAdRYvB(^~FnaRUCKZBOkKdY- z*J*-uvI^`HLd!b{EP`tVHI2-+7yH}8`eUk9Wdp2B<=Psmk$e)r#_(}Q=ed(b>sq}3 zM?MMVq<>UTVHkZj<1yruS0i%(0X_TG8WNKrza?7-b*_7_%g0XAf_RS-B)V#jPE3N+ z^j1v|QWWNMRwr2RInmy8p-Y6wqg@zF?3gAksh~j4BQC zA|w$@a#9ZyU#C$b3_3JZ2|5t3+=mu8v%*iv&^ZMdJAh{eLcr9ec9p}I+}(2bd4;6k z8b@3zRFJA7vzqV!@uOxuR-GugA;qm>i^|d&G%3aMz4SvqNbZlR zlKwO!T%3I2XJ9Wy>Do6Ph3zQ?eg^e8>yxr?Y;0$p)q;n4_Ee5LTy_Ns8Zb!k-rxm( z9)>-D`MQ5dU9w^jDN?p!wk|quZ~HiBQTF44@)zy(o5zmGD+CeVrxF$>lN@4*l1H~1 z%T6LqE$9%MC=dIwGpl^bOMs0hS3j-dBfoWJzk8OTRn#5lu-O@&hCn!D+G;_TSXDY) zN0rRjnM`=ta)*0&5m4`TyJp}aQlbi*cQj?rU5PAG6(dbmP#&;I67Yn{otxK9a8O6w zQdNZ1VQXE7+t&uqZHd!DVnXtM$$?LX2NA>v(<8MF;9_BeY{%X`7XjV)ajqANtkET6nx7s6ugB%E%ZlujCgqRFL>M*ac zUc%Uf6~Z;^lt4jPX_H7B^HzE+Y|)`3N-|GyPXz^kfeH#hO@W61M;5gbswfcxRRo*J zZF}1#4`Ycx3I;Ehj9_x|s&L~==aSAMq;D}~b0opa0=LzHCf}5$2O*tF)*@L^?l)bk zoT61lF2v`0y<0!d8TK7>`kPk|zgiDhW>qD?B_9fzAP0>*=v%kj01U5sqc|kOo77v! zek;1WNo&<@OU}Gyk}SuBz*--DW)*Y^)GiMWNxExPV=bV<$taDqnGSD5lP%b98+P`) zPt^euh2Q1W_b@i22!{n`k@8FPWM%=>*w$AbloNzOXBc-4^2o^vdP4+X+x9atDMD?4z*OXu>ICu;1=Wn zz^t5G&uZW<>XaEI4ySu5WijxcT8W`iE{!c?y}4$T?Ud{gd(Q?O-QOk?{@Wv^8>>Zp zcf>2M$ZzR%3obYb0r61wkynGU?7b%LWH!7H@R)%2L@<~gNqa=tR7k)9%imX(M8Nrq zE9^gCgHx}q*XpedJ=zl zYBDVpR-!Z=sC`ymz4haq>&affd3g5n^SkHk<>zm%ZB^M5=QujMkF?`ex~VFmBE@CW z?q(ik?hMG#%`F+f5^5}vvi2&SYWU$%mEBeYUu>fMV{A=%h}r6h%`E1dyh6Tn>aDjD4YF0z(mbjwVcq{N#s9@OCyBp|kv;Ay6{QV%4-|t^Od;aE+fBM5$ zU%Ywt>ScTW5B&5;U%r$m`R8l?@!$BnKKtHh-}|%5&)Og-(XNS0fWhFL?X{>9f`sE7 zi`7UcP*;q@`;g^V8FkQ~c(I|j`mTVlPR3Ny(79EqUarodU_KW*Z)}=}lL9$ez>%SC zD>^wNpHbG0jVrEtG<^Sy_He}>>efT|G5vjS?Uix=Pkl&1mTzY8ul?-jeEsvUH2jZ0 z``IsFfA+m&D|jYKXA=w5V!c`j4{0!Bg#LyJ1)OzH=um?$D{6%aewAhK0)>*HRRs)? z=N(wQo=_20)j&MpQ&a_72%&K;7vOZvYcSIata+J$W_RIq9j#V4%-=gTXz7xUNC$wE z^k&J2{3^dJvOWM;;9$2hxEID91O{~=%FdBjy7z>2N!zEOII6b1ZB)_Bf@?#ft}1}u zs}YZVB!ZQ3q1W=*{q=mcU)|01W{o$OHd419z>iyOc57YLCz;nLnb)Vrg+Hsz>+gN& zGGxzCZdGTo+*In~*$PW$%wT;Ng^*3NKw$xFdEA*S)uE(LY%=Kv$Lms0lql%Z@6fvp zMaQ_RsvT-kX9GYO06%qBH`%I7O$w$fV4uqtAe8FP6Fg#e7jd886J=uq%K+(kUEs)N z)vAPNN;kqmH_6}=IPY{<28Dq(@*i6o-oPaGNg~|xS!}&!N*vmX9*VgE0wv@jhS2No z@oWnGN8fVHyVqZSp=#ud>~P}&yvPm`Mzp^x>Gjngyk9A@Er-8`dJGKUr?jo>rQWtW zbyoug!DcL3*^-Jo{3S{p3Pxxkjyp=?EHnBm5gFwVxk{G0I@ug}DsA3fbRWuJMs}`j zRvaWIFy}+QDd!WV8$ZtZwDQrD{BA$Ix>ip(Lh!DZHsmDrmsB##DG zXwPY?6GBBVrjHz(cw83}Z9^i#(5$g4nNPx-KFi40<)K5BqdGjY*r2@=%nA-V6ce|% zuI#>F@=Sm+wE$F}iSmGJzQPqjIihM+TQ{t0k+M1qimI!x#u_proRejst zIS>somn=Qo3Q=VXI@mSDy0pN&-vt!cRz0q@!8MffDH?igwl9sXZtkHSV_P$fio^*B5u# zm$hE4yzrbKYD_VpADdMvKey{ydW%r+Y~4;n-kT~n%5{4BTX3f#KCHT3@hvARCQA9 z4b!7KdBe8GO|_fx^9(5<(Mv7dR?E^$W)qgQiByOvRi1Hi>3i$PInC`)zADfAeErG0 zW>(GvaN4RO=~jJ{FK{i>dcRb(5BcpxR3Kq#DoYNmNM6ga8h0lOt?mxtK8Z@HXlwWZ z{URZ$G?5U`=GMJ5TfWHOH4@iyh+Bmza%HoZyY^9b;>RCcc4AA`1N64kD4Nu$&9pF4 z({;77x{+YHf{ZL|6~anyaL-zojNLMcONEGPKQ>5gs z6NM;K1etxI8R>R?N0PDP&Z8WqkrmFb4S zTM)!u0a~{NT7#vLMP;4}a+fQDpK?$Ib2As9c*7q^89(yWp?ae8Xd37E(vbU-P zhe5F1O<-%zmPI|-H+_(s8bkw<>PU1$y$%HQ2=W3?RWP!e?8$)3t74UzBv|%E_03HbG z4{rss?`lO#2dd)|_BV$?jW;71`GHtCUB57mOfiO#p%;feO=>!1jp`F%`RE)bWxrVg zkShbE%j%fhGkG3;NP9DyJ$wKjfGbjlmzphCcNh)v((0-n6jPtP5aW6f@rJ=>ajU>{7b0l*vY_x(Sk5}G|k zLZlm9WviCT0N?cr%I#Ur1B=P3W!Smu%#5Wfie(9E##YZ0S^djfWq>~HRSt$Hh=ijyfv#UL@_932N;2LavH>R)jq3FDQ3AZ z9d38ts~A()?lz|=N<~6!EZe!IeJB?(BIA(Cfx1D3=?U9e@_^uisV2c3f;svk2qA-b zQ_qC3Pe8ndn5#G&$T(DZpCUvcrO_A=r!voxio_JV1p0i08V74xz0}8^03F zob63J@4#CRI;7Jvn5I;*wMA2lIl^WsM)E=4$JWNG-S##Y}e8B1*kwi!cMIITMA;m86$ z1NY68YGqYHh+JuOS2Q3G1O`783+~EErExx<0!^5*D){V#QiuGE0Yl%I6{V6Q5erSEJ z$TVc>g>Bvauz_-$6WSWoOcJXyZemi_@?%-2n*SKtxf?h-H)ZQNjZ`>ab!aMxB&>&LOC~ z0;Ib0Pa@T9N#zTT3YBa!ox0Wj^S)iLiB7U_~|Z_;Jd1!Ze) z5(^AaK{a5K(69`y7krTT*q$Iu5{IONYb8uTM!-E$Zha>4%{Fdk0nSRST3$Y#tda9F zYw8k|mVJd#FCd_mivDKFjFFC?o?gv3ASs=090D_gCWZ(iN)28I9Pfj@nC!ysPZ)*BDtm8@w_ zS@Tm_YX!nJlMd9_BzA#%qO63a2nW1f7HZ5(vgNB^R%a7Mjm>5eSynaTc?B8{$6adm zhJv>QfOU3{dTeB82Mfi6gjfQDjTxiMf-|~d+3B1$z1cgY%w{HiSeqa|VMSKKiWBy4 zpqouy|IF=J(q9tnPAg070bcEDR6)!J*K74<(o-Pqkl}(lIz7+2cARtR5=7U!sx?n) zp;m2f{z1QvKI%|Vn6U7LU)T{nSDn$aA=0LfJAu)CgKh_mht z3%md4j>hpmB=;IZgg|CjqU1MIshJ;DTNY?)=#E2u6%*7NK`g1uL}Nwp3scL_`4|W+ zHH4;{Ox?zkI5hX2DJpAQN!&@xZvev%X;Z5j>P}X?|L2eP2HA`n0-96z=E_SI^j%$c zR*|bpoXcm~V@?UB=`^z2<@9lZTm&U6hovHXG94n9Dsvw}Hvwk*!$mVg6&Wg(Yh>Nt z*Tb7{ZOJ08`+woEiqQp5Zn^6E&Z|?IAQV#B&DNeZ`dwV0B~OlSh5@Z`va@mt5lTX7lHtNTe^^Gk$U6n+6>*M}ke3W>|@JBd~R(V^& z97&nfT#K%+J5OSaN}n6iRD!)WYq7)f!LMp8hcB1NFNNzm$hPOni*(pzLusUJ1~nmS zJ4nb-GuyDT#q(1);*8+^zjUk%*Vf~mr8fuT2Frw*l zO{zuKyhP&SmM%C9jG3(q2IIAt<)O&lL&dam1S8t1GR{e!^(2quzP&y+QX(Wcs?s29 zkEwKK3|5(wU~^xE;Z*6_PUPvPgRNfuu!O|SRyHL}4b>pLW0hR}Sl( zUG|izB&b7ch8ZeT&B8Vv8l)1knJVzLc6ixalQFzx4w4}lCAlDwKSFLvDu|w4x1^pX z^{l3jv&2*=!UPD|a)M`SDv%-w4-#9x|5x*8fArxRMjq4WkAL>_*AL_8^yc5E1Abnkul72?24*% zBrfY_DKv&d&a_JOBwb53X8rQ{RW@GdhAH(H8jz|io!eG^B5mld3Yc-YYgooLD)>U$ zvtnb0{RU#Mm2pU2kQ?1nu_}!Gsb_HcQLb}ja7cHP)!hi=!xQBsA<18C=vYoX|G5tM z4~|x~XD{ERa0S}lbl|SA^>AYApUQ!d{JTM0CC8;2$TqxOSDjf>S~z4eRSe*k>8gk8 zCh#Q-Kz|{1Hr*?#Az&TXGQ^&lfNn`b)x(w=V~#r4Nn}CSyRkqcrz(844XE1sQl-RA ztMl+F<%aAC79|4-WJd2-_( zaSO8F)|WBa0OgisVw>9&KFXOmebQ!0=cAw-58cPLCBL++NM-ei=wXyn>&-+L7 zd1pz>cMLLK4HTLsA7%!(voDTnY^lQpmPk|s@W`Vnz(9x!m?=~>hj;)xv@H=0q0C^t zDvh1kbPu9d!%%w&P}-%8s0(I79BX#!eCR?N`PPqfb!vC})w)wKf4ElWSP12+;*!#X z^})gUgXfn?)1yk82@H^IEIRFIzD@PQz;&ZaH+xbIxd>KpsvW6C7h+muMSiR?2K}k- zCqmg}syY_-GBXgv)yy)59KUmFfghlAvJ4DtRRg?|bW$Ku64o5?Y|56mfVe`3OAYze zz`cF4iP)&#y=F_4aGdOnb`REO$+hd?Z>pRkPc}wW0Y4+Rd(OoUV&|5aCU1NHuRS`V zf_PxDM6Z(cDw$bw%$c$<1Tdq6P$=>40-r~vL;xBw>SuV$7B1zlK${;Fj_JB(1NkQZ+-Rssz z<%1BVwB6z)mw4&?!h78EGFYE#=#?yMuSd=8kj_zs2kC|`Y~3$4l37k^YmI^|2_;bM zd10`4*`M;6e_PYy!qHbsu9Wxss|Zw&#H~z+zs5? zCFIGpy+<= zb;=p4-S~0Nv-$b+SN&S}mu#jKD6G0a)QiX}*~I^FG{XWkpbl$|2?CTX$VkRZX`O8u zNoC}AmBtqkmwNCjVcl7kW=J|jU^KQw%G;!@;7ZjwNR5OhOEO{Qm6O15W;XpXo459S zd9tAS7#1{7CLe!JO+KDF#Q)rOh;Qdq4nhVSO^Q{sEa@dkCkRZ^B9UxI@HJG#`doN& z(zu&y_>>j2RCje%+_tXyYLm&6E37v%ikzLNOdJS9>Kw>X9wp6WI3hW+Wn#_w*z(qo zbJgkN#jA0RTS>l~TyX5A4OX3U?=C8!b7u8KTCKCPaZTT9z+3PUdB<$AL{RvW$g*dj z%fDp9vRR*1caIZX%)%|6C}h>coUBuEsx$><+fckJ-{!mb>#f`DpSu1(O4t8SZ|`sP zWViHD?3OICeh}-Yyy*PiqD5Z4dw@@)8(<=SQG2G>!AEEbiZ#321Cp1kQ%hm7TJ6qd zR%O;+S9OzKzieN;{>7_noV67T zEsj=~0c@|n$qNynraKL=Y&-hRAWvq)Zu(*Yk$gLd*6}`8v*Xh;zN&b{B(?o+0?%$L zq9VqxzIs%*uMKvGnbNR2ZQ)IU-va>tWTW*L$VN*wYQCwi8f2A434D=Ob0jL6rK_~K zb>3xj*LX;aA*(4oWY6+0s)qM6-B?g>=vQ?<&f^TMfn!1;K#isj;3%CjR<@U)i6LYK zS^4yH=fSNX=jvYlb$kA7wl~*ea8JHH3dmMMitkxx3oFR%p|Q3=M3S(ybMig&&`j7e zpiosxhZ(_BCN!ockk=%ByAX>Vy0ws3$s|Qbh)uV(sdz0Cq;-kcPA5v6bWbBI-X^+I6LsM5g%;Ose$x$ ztL%lMXyO39vi5QYK9CxhP^}af5^2!z=Ut_KEE`ml@6=!zx#F!lM69}i@+sk{KR3b~M8~V}LSQodD;VZW# zQs$w&GoXw^rHG`)crM#UzP<4Blsv7a4S}DQ1Q{@nh68uJw z*sDmLwPa(3EZum-8g&{g4*_U>5E|?0{vZ16v-IJ*a^9}Z{wuO_`Q1PHwn=AD8!suKfi?B)#M6# zdZtqpW0UBq5x>^ep)_{@suF%9WI^v_QCW8HbAkH&(H>|9AR-g7Nq(Ko0!Aw2*d5q& z6{f11FqOodLuZ7tmaO~z<=Od1m!nA%fhU9cI=uC&IP*HRG3n^gCOoDHD3zRcs3h#t zS|v;+oiqwI2cO8>gem7NRAfrV9rWxvpQg%6C3aP_u~NS73;XFGJbV47z3g8;|K-=U z9N&LEez9I$=mp(+{I0Zz*|${b9>4w+mfGM|gIaJqvDQk@7fM7X2Q9?D%8({cf=0}v z7e545PfHhN011>wL9mVhuG$9`vqe=hO}|snSAcoIQMS$27qt;BQ~RnD*(jQZF}9AtiWIjEagPIKxGF-juL z>4xbrbD{YLla(kpvGfy41iCgXE&jaw;J5<^JFN2oi|oH6}&M1y=u? zZ4`+?L#cE%0wlJE&|s2E3?z*PSg9>_~wtG&_0MWWSWKO{JuYN0Dbob`f z-J{vcdClK?2(L&Y+PCZqAHRN2%Z1zONqwi}t*-DFKGr~2Q&t)dtl;P_-19*)2T?dz5jGN#ZUb!Zr_Gq0Z~W3SjPPw-mBaHGhP-I@^I8x~!0t zrV47))smbzksrmz>KO3=D$^m3Eri#aS72!NH$G>@yvpbC7o zYeg035fXvq1sEQkj+jqRDm^_<88hFe!OzC{#-;@p=kX^E*I@Ke`Wgtlk z(!V!l*9gGQI`vYC1JH|MEs7q*7my6R?Wng_TfT%l`HK`y589XVP9zSgdP~G|gqV%y zOh>4?t<5mQtE}J$kF4M#W8Qk~KC0O%{JrU1YM9CZCeQ&9ZNy@-Y!%cYVrD1BLwn6$ zBQn08ZCRmS5(6V_h9xM|omx!c?kw->kJ}`5FUpz$^eTHLZLuX`9^sGf)OhO7`ntD% zoU7~Nhi}%4FP>jNBi(xj6&oqe#V%A$q#`7EK2m2hPK^*7498{%ORVkHGE-EYr)yAk zP0l1Z==_veto3df!UsH-beFtQRgeUzqH1*)aKjUumQLt;0t8`RF#jHZB z>G&(wCk$VuZx+BcN;n*)_qh(_){pa!d3|WwL)YdN<}U~4T%yk5mjuaJL`)+La)k_5 zW?q>InaFBVn>@Hz?Sv+t0Z?zkA|n+Q_=}O5yd=#NYq2tWGO}ptnLii{sG|dYr_ADy zn$BJ>=9LZpSd4vRbK>)Uz47B*o!58v!K6cvW3U8=C=A?p5N=&1Z&-B@rsVb4#N_B= z+`6UgF3b9Szz~3{#1B@S`qW_$*;cROcPk|ph@Rv=RNoh6!R?uKW?Z%>nOG)J)63OK z{p|Z6TvL}P&Qt5Kcqb(iK+>x7sJ9wrCV36X98i%3^2fZTp5?KfdL3+0*qZc~iKwQr zGCQHhO0|DE-oBIC2tdI{KLV4*+LsD{GLFgJIo5o>9{I#$`dL`_#)Eey*@w5pR35*6 zKlOA%&;)$QN^%j+7&#U#ftQWz(`I1n&Q(RsRVE0M^RUd5#D+StmW^KcSv!VPjZoT4 z_S_(4^{xZc`0zcLXSh^omY_~>1K~D#%)1^g^qX$|I9C_O9}KBD?T4cd^it>o-0EIiOO~LW2uw&96`RmLUX=Zz_QGix;(Fr6Kbil?L$F6s}(O8IM~r% zWFq6%2S}MuZwy)Vz3S?=$Xc^!&pw<0lO{ug3Hu4^HI@^ib!rii3YnV!7)SzsWxwA4 zTlo{n2KWDV{_xRs**Uxiqv^J+tKAdo>HLrzJ#&r*6bLO$(uFEPL@>yUC@oXS~-9lX9s9}qhGZH3 zOp;cGh^f*;jIv^$19mJ(Zw7I!OPY7dTYWZ_R+9~2%sGRsnw!9i-R1tccqH{n>|7k! z+Xr`CflD+)RZe*(7mv^PGF6{-%ir;8K>hH?FFG8LQ_a3kGNZDf99pjffTO<6!<)H@ z4D_i6;X-17FSZem3)5nflVm@8q3EhzYIG$uH9de-eR06lA@_Lr2$Kh-E#x{ivXC9w zVHe$tqfM2s5A~Xa-DIu|cV%y8<5OCmXLRgBXic4=wZ%+ynccJhMw42clq_K}C6(;? zdT5OeP*>E)NXMc|nR0=wp)`Xv(;9FJ)-!&`#^&uH@{_NE$TzI)d`ouYF}xZ>@+pSo zrx^18dkhIJTV2`C+?v~PCTPHHQE#|*{vg4?QhIp_R)YsvFkHfkmjjfqYI>!+Iabk#V(W=n8WL5tRS=}1; zYH42D8hOc-o>#Klk<=w(tm|LNQJG|pzV`)dniAWsI?V7xR`NcB1}lJ(AWUX1i{L8o z7Xi73*M(1It0Kd6f!=$Qtdo%}{I5(zXt<|=WE9GCn8nyMArFzwviqN7(=T#{MjW>qIh zQ0ikbg{=1+CAG|uxZYL1ny1O&Nuw07YjnH-yN0LPE&&asRZ5g6BSe<9i2x2AQN%S5 z@&CXEDr%ZoawjRUa&yr>I@cR%F}z&AVZUDBm|G9t)yrsex{Urb3d@Y{(Cl8FRW1<) z=B11xhNs#Toyd+d)RfnVB1>X_(OGr^^GK8_Y)FY_OM8nCSdzR|A?eZt0~q)?h6T{K zL6X)DFX0lIDu_8GE=(hMgjy?xMLzY6Q^bX_M{qcLGtd}a)WSw2cE$xN`!eZ4yfU0a%S^@%foq|r-vu+Fz3kYLPYQd-_io}t6*hA_s z+uE6e{B2cqcJ9yn$+OpY-<;;$?Uxst<2N3?D`rjhWY+Yl1Ti*W2L8$=b{k20>+}u? z>D7H<06y?mDeTvHD;lPx#Wa)^uU(M?FjABs*^-ECWSte!n@GYKiw zx_6m!E$xY4M=&@i%Y3-O80DJe#dm|$i4N^nW(#n)kM?Y`rUw?O{&1;MPK?@H>($f@ zHk45!kVJO&!S|U78BI-w(yH4bv$8DVu}(-+0{H-vb^RfSoNtut`gpazu2=kB*`m`* zyY=v0DUNlg;#l{I6vxVx0@4&z7y!-$CR9}mu*3Lo%l>ORFq52rx)Z~^w|C@TS|RPZLHKc@rMpngPu76^#C@fOFy*j+md1pKwH%dzjCKkM&YZnqx8kLI5I5i+P?Oa-enc}l2y3kK(k z+z;0rh4MFV^TLMg$^3MpGql=_EMWe3iMl!2-OOjO=|xtMj-g1F?Z z3OSm};^%}~$r1RX!@bM9I8;-vF3wAB9v6@5Xln;L^GG~Y{~Pb$?gQ*iaJ;m5of zx%H*wxp4W$k8|}<^ZQ@4hu7=jT4Cx0Ix%(3v$OyY2{zb3kvx0JfOc67k6|IT{Bb5# z!T&pJLI6^ww`$vOpg-Qwxl&oTMMa9@8z9RDNlXU}uzpBx+Kvf;msqF^K(UJoB>S}- zBFLd){Ub5^{&tK2qj z30$YHZ4Z|@d}p^hyo!v6Cu>3-Rn;9T6ozD=Mvs!D*{u5~@3&>3&59Fl)i9-}A^JJx=Xt-Vf{isXCcU&pTm z>dRhtb#+M+q9QOyy0b;CzDxi>dl=tIu|^3x4p8|rp>yj(F~&-j|2>Z9!NZjw*@`a^ZnSZALqn=zW@ByyeuR~nTTtnny4I(1nxCtGc(@Ggu%P!0fh zK#0F;sbmaYtICdB=U#CG?v~}($Vg{IX$q>}H*Fn+ThgesWU|cbSAp3lzB5X*uKJ`| zV3DU%leBdCN|JQi66dCsTR+a(Z}LwyUy)O!tRludY(-@;rw&D@Ou*Quy1qb z!AxksN4KQ+AA&A4M>CpIVu*ShjbFMalo{dKg^%~!3VFnb|l^&C-A?^m}vB&f2%ab zm$uj~L<6-id0`GRdm|R;uGl+y?q-c{U>gQC0Yzh**J1Byo=G8oLs~X~T^(bYofups z;MOF4f(^ed=N8SqN$8d+2!(-1tUzRuZ z%eoj(aA)=;G1B<0UZ-8n;c%83L5~Q^jxFktOI`)@;3$@=ypGfqW4&DL0llK>qBk;J zFimg=;si)n>9)Nv-#vKr-7jCiy11&i^}t=MvG_Ch)`{NZ*H0DwPZj;YQ_&CHUh01* z8L}y4SC>a7BC-hCZ*iz2o$Mw(WwXh+Eiiiz(vwghp`@x|C|jE-_!3$0 zN!3iFZzF>Sg6q~@%>Z2MoYZ@p@BgEG^z9MONy38;g)+TrZ7-#a9ssajb!K{-# zR3rhp44H!{H#OZ#aH+$B+#oIU{yK%^ZDjFki5N;!FdLQh1H>%T_EorVUR+0=^z$7~?d8L{uE@Z4%lc3{)yfpVphOB3Stu~i* z+JJEucC$ea?ogr)mBqRPE6fRfwM^O}8kubU{eSWiYH0lK#?Pd3{3f{yFNY7{;3{j& z&sTx5r{dHTt;#I0G;>OlBWKor(6+#|j|jknUs=T(5Rg39#-6U_U}w%vzFG?~2%6;M zoLnd5lNirTI1j)Ze2>9hV@P(H=``#O=@l}_#CjHZ<#P_FvLVr3_Jxy8j+2Xsnjp1e z2D3asG51|3L_Q%*27^1DT=*}_#OkDWY{!x`NE`0$@we=?qbIWG^*Z#;BY zB}~jo!sI<8`mM!_zH?eiSA0>}`k;mBl=-X6WNTJL00}}0n(FP?-Bl38kj3E=a!Qf) zplo&)4^o))HA>W}5Kna|kV4QyT>u0rdwW(Nua)3$hJ|JcH48Flg{{l@RDDtI|5F81 z>y4@~WE5i4;$d_%0FI6;>Oz0$v{?K+ipc3|pro*-_L1rwlL7ij9wS5<#wyz!^}jrg zQi{}!I@CAIca$lN8K^!a_$s+!z>>Mp3%T**oP};*JbU@lfZVo$B zIV_Zk{OU_}6>?FCjnQSfHv?4wCaoJHhH6fUQ!u11`Qwon*?SmY(gqdC(m+WuB?6V| zRs96|NWZdnp={}ecl_rf#|J_(u3_69buBZ`#Cx9^WUtS$T){Inb=i^oJ zzM7M2Da0jOdD^O&0H`s5kvy_a7wpt6$|Tz@Qb%nv#U|Fs9h21&p${-xb(6@P3qEu{ zF8Ryf)TunIFJ3*oxzMAz_3&LSQE{gdmG`U}kedXrCzp8_b+aaWSoUpb8|FSVvKeqN z7|0ACkryY4d0DG!{30@EBt^mI{`*k zF6qWeWUj2vp5MeAt9nR~Q?Vor^3f(41fDv}Xo6IB;oWfC$2pq~zEw!|xJa+bhm&tx zwslAi2|6{1U3P$fB*S+oRrbw#E&Q`L;P~Q|Vv`#pY1CyYAjs-Cwfa^7XPPn! z-XNb29#d(&(;bl(0>KazA#%%W&8u?LAO5aensf|qjyyHnE631D{7W|Ea_8I?jLUO| zGD32|NCtT&P0k#x@B=CngI#1Pp3OEUlvZ%Lf)!L7r+H9a5<5>uDeMnct<)o7$FRqQBB?I|K{N)~C8MQDE+z1h6(umgx786@E4}rW z(sJH!@xv(Lc7jJ9Y6Oy$kM7fptrFu6JYWgu8udSXvmSs{O>5=lug;O|)?;_IirAj2 zh~HC-lDAsh9d%eqZm94MVvYnv*r=deDY9zeRrmMPuPO50nq>rAN?m@-^Iu0Q@f)F5Do}Az> zNJjNxOD(jGByn^&C&|FLIwpbd(m3x?RlJoJ#Z)Zor@IIeDCUsKR|BbE^1K)SVkH-O zV9z-_+mTE<_*{NYS6N&7UcT$FB9hb?`z2mejU$osIkAqGWG$@Du`Ln2?&Nb9fFt++ zdH(PrOf`%cI0wZB96YpT_}}$7+i_~=B{Tt&;?TjK>R_Z5XjLIm$6;7Ofa}2hEgx3a zKGDrzc%S?sV|Vvz-@ShGu-c1Dnef|=-IW`x@Ky+W{QA8@*p~8iQe#qGR!*7VS#oe| zyn*}^p{Vjfl$`m@m91uM2WA$vTl4LJ++zA7brc;k#|an>dBAzfG_qNf69s@k#T=@@ z6!hptws`FN$}rsj7au`RcWJ|BP%r_d0&r?PjEq#9qwNa}6>iW?^Cy78)$AZgAuYMBwT2=vBK77(xN(;2_1OJ8`s1ShhI2RS%*j@WfKE^L! z-@SM>zkI&#p2Ku6m0WH-d{=1h+Z|@+lj$(4d4g$LBJ`;6?x^VmeKYvG7Z+W%WFNlA z5j04$x_9U{?BfDVMHyK=c4V1Q*kmE=Blvw%L=YgZd*_ zQfCBkW1E%pNgMI>*%x>H)kR3X^|)PWVl<~F#!saMBk1)3Zp2*gx|2V!+=0|U*mUv$ z9IMWh?NnotWSI*JZfxPAiBb8-j=sXp0EhD58d0@*>T2j4#A4*h;oYnaq`nKETy@R1 zy;&pl-Y*)lRUxLZL^#h3uiVlXL{62>^7oYfF1(XqWptums?CaOG06xlrQNIw)`J-% z2A$n6Nk#kMr0dQK?5s%@>4RK{>eS$^-6mHZ>r&2f^Q;N+7Eyink`?#m3!e5uS?0#0 zcy+<~(}H`SDipmN;D_CE)Ffmzv&^dM!w}kb>yE&^9N)Os? zM)zY-H1%f5*^!)`EHKyQ$apTITJ)2-G=yVbgN zm*01?>F`Qthz!nk45D(6Okk6{A^%WENcL+uRai)j4-W6tiI$z@spc$d7weHt$xo87 zNtUcJnCxJ4vo1;8@L(&w@eq%ss+u{10h3K?&eH@(6nd9ATdUH#=S6h^HNa?aFtwMA zywjFK79^N_4}jfP1>;tCC*7~&U~v42!l43v0x8BQPh=Um_A(*zdCxRN$U>5)at>=+ z7Oai#(BgMGg1G;$K0@t9gz;y&0cRi(TNc0|fLcgSkP0D{ht3GF&4 zsnTpnd}kO_rkYz?_D-iB-S=&aX3HJJ;fVC$@8G;&?5C=FB2~p-xGpmtq09Qo$trUZ zf9GtSfD&}$CEE(}N0uH5i?cX+DR-eFqEBFupjX8-Ux42&O|{ooA~#FBmZrlA$(BGH zZHIp{SL_BL(2#!9+Um$YpV|F*v@hO#`LOQRpFF$BmA4+cD@S(b)cF72wHK!8SYVJB zctO_!YZ*W}r@DFC96if&2_9?aN*y4=lY4bM7?K}3^C&qfRgyr3pi3r5M$9WesU;;+v|%GOk1McWG5Qr$aPtDSc(ObRgL5A*VMoYL7ce$Mft5 zH@8~UnzdesT{3lmFzS~w#A)+W1$L5%0R$1ZI)A47xJd?u*1|dt|I6kWH#vWo*>rBB z>hPqiuEoyKT5~n5Gy=Fk$ZC}@=IVTF`$m315@A;=>CetFHy*u@D;EaLwb7{1fEQFf zBH5tqG<1CBRo0r#jyh0x+4MHbKa=cX`5cI*`oBF1zdts>?RZU1cmlfXnaZXeEmp*@xUjuM#Uo|sz zfz7Q|N0!{?XoqvbNX(GMB!6F0791$bH;*S!dX=u*aWe~T}2?G)drf@Sno) zW;0dAIw@wQB%MI3BO@WDw6{tHc1`M!BgeQh)$Br$Co6f8+@7V1Lt0k_I6qUS%>3F? zkEr^wi#hYAbX-G!@S-gqeb?-R?&X>)?X9lemq^NH7mW@iOR8)Ji;U1+Qt=9l*Cbuv zWfnJBz5^lo0KiLGpiWrGfXu@h*%PXaVkMKnn&+R6?PrVIYUfBfeHTj>&Sf<>9>I^M z{PGE~;wO^+QAzqNMpj8Vmky(_9YoT_p+VNQ>m)VGQxSr-Y7?7L8+i2K6UDL)!ITIE zQ8`HOb~CthsIA6p*!J%+QZHHv?zp#y+&|KI4458Sr-L9f0*7+@cn z>9lc!WP<7pwuA4peUdKDB`_wp`Jwl8qd z1v}ItVFT6AjzeXRU4K4|zVYLnRY6~W`NdJrcXzZyURhmJ?bW)vI0{<4twll~14KIp zObF(qjtZia1QuPVNL_)ImIZUkeJQF_i^3UYl+D74)G{+ln z8FNv^M-jXu32zo^Rv}6sj)d*hUM_MaSqDcn7-~L)PmqzjY$KhykOi7fCB)t~H6xj{ zr;f8+W*Ao;S`yPVzJ`WG83Mr?${OB=+=rkl@ra***abL%R5ZroakTPGQ>&?jT=`xv z12AQ#IHYWl<%MpPKTgZ!?|my4eT!@^sz7f&j34cm>=VcjPwDF8rmH79^WJm@Z0dAN zRrM=+*4fdrD$7o)RM)Yu=_;1k)=JeQNr0nD@D=W?2&LF1jkC%hnIarZaEs0#ZV4vD zx~3-%F1W2MY=Paj=zKG~EFpz_NoO7l<0Kub0}<)?*C6Hit>H|e`W99J*t2zJlPZIY zN~6))nm2*7%D`wXIdV&5z%sTC6b*wWRqZf&?!(0!bYK190==V|IZw&@k->Fz-1_}L z_}Pa~RV)JSZ1q{FLQ+PPQ+K8%E#hd93qV$(A%Mtbqax-lzQUOLGCO;L7!gP;)esis zCqVpFC424ahv&ife%xi_D300eDJu_nSy;MQ&MuljF?cC?ML_Iuwqzwpk&;-V$p-a# z)y`?=>gek8WdNoB!x|x;cgNzLu^gfv{Gmd+C7;zUQzezz_EaQKeaKkq-u+;-e{yG|6xmCaE;9ZfidRrnmzo$g7b|E9em^jsarqOl4P=;ERR?FGSbf%c7 zWNWGIBly;=(bzl7f9$>om&^O;+foE&srQZEp5vcl0#o>fQY@Bh2}353u4|NbMmzWGG3@s;hM z%k&my9mIIGT@{gvnx#Wlsb_Q&ea+zY>Dz2um+ouz#x^9)uF1Ff-kh9(S>&5x%hK5) zD}%YRTm^=vmCZmV^rWh{Wl((KY0D@ z<*S$9R4e>oyn6BC)yoTPdh5}>QH+8`n|S3(JS&$(#j6W`dN3(Tb`eB^sS1y zR?41j^5SV*&>TUSX<)s|UMku>iFq5SXp6dbrx&u~r)p8Ioz)JZc~YpXtccB3CtZXW zg*)|&-Tx0C;gT@xzEvr~!h5RP-w3^yO<$IW{Wql$mEi}Xu%u8c6Q;k3-sk9(8#<4V z5jeXIbMNM~(wYK)^0CALwzeF0bT-en=jC=GU=-C2H?qz-(S6FYd}jrt8;{(@1)gE|{!PNJf=YVOT4Izy3avDt&96Xe1&OC)0qWkSaI z(1-`6bWfTj)#>%3%pQX~`q>F@fmKgt)HyJmBsO*t2=&a>Z~Qn{*TvuWi}n1A^>Fv= z_WapA>=KSgezu=o)%9imRwfABXoFLJgl@6+;*vL0cYu5KX{iPaLJ4$ALpMV_rp>?w z{#ME~b1a=cPa^dgiP%7zC-}qKBdAo<4`m9m2C>R7k)ZMi)bhx?g*gz&dk zEWH081t*#wLKT=5KE2qJV9;c?9i2BF%o&^3H@8djES(mDe)E^-=HMGY&Ixn>5rBKQ*Kh8=c;HVT z-aNZ{IbEHPqUI&+s4J7Cr7@2N<$Tz-Ng9+u)4W-7wayU3xVB1pK-jHSBL!&yU7phn zxCR7cRM&W2y$tkUCA+1%u~ojo2#paWHs=y?H=RhL`>OTw!_zbQGmI*MbVxyxble1h zI)Vb&GQ>w8lDq*3tf68`Z!ulTvXXF}0Tb3P(A9fyf1cf@ED()k8E#!|S`MN`LbFRhxG&e>?8R ztC#!P=NDA%#shg(hR>X2_}(*xsa>JMav~HKXh^6GV=~H=dhVq@a4(Dy*!x zQFS)hV2{RBjyakgFs3xs=@k!pwPi9=bSRdpZU`AERjCm?#m$L(nM^`vx&NOI)fIL7 z!QNpp?5vcSRy(DxM4XgVRtw#IZ_W5Jx4>Wv@gtf{e|y_|PnUOVra{C*bsf&;X`IP30M zc9Mrr2Xo@&;?@>}pJehTIsh|Jw`9uFWpFwzfUQGu<--MZ9Mi2@bfr`IB6Yd>9UAL) zSu&9>Ogf|Em91ttmt=e`gHIM%5>${#LWG#ITUgpr8fbtBtAkP_H;0wryd!$&yR5kR z8^)T4^H#l4*7D077#e!|OH+r#K&>5R{A{W#}k^~=|Hzils`Uz5l6D@i4l=(ANn0FzkD zGZ6%{rKmSq`XItX0mHQACSe>VW|^fSL&oM~0BgzSg?}Yo5rJ?<1i3-^Gz32IQn2#v zN0{9#DEG>c4`So`roZ?veRVVrM1KTfDj}18DVvFxfuyT6vx|duK=K&Ps zmBAS)c|EU}9wB^3l21c=dW-D5YhfSj{7+XpmLRO>01`xvS&{bhgcZ%Kl}O0mXIZ!# zKhC){`C+|&_59b8bA0vU+UYomQnJCS1O<`?waiNPDGjfB^kQ_(xm;2+uw+QJ;^1O4 z$-b)SC>_2)tdToLBR54gqi#`p*#^ttiie!6QexX`syS2bW*chjWoMq$9OGBO=Y#7F z6JTM3WGO=Hp}b1KV~kC2E%WtA4P++u1VB9a)59u_G!4B8QiI$Ck}^We5}|229qiev zB)mFE!&ZT=wlA#P0S5V;z$%y-wx!N?f8nnHG4PWh9}M_U_@Jl5RJj@=GjVw`(T7&1 zt5RHbOK#gq+>A(T$h?Jg11TUAdEJLK3ByXeMGem0hbY-VHme$tt88mL#H}PaP?mYa zxybK_0tR=V|MsGo_twL9^+ej8PNd)0YzMrk!g`Xj);^=H;>yy9H+>wvSP`hhb2SoR zobwRzo-L|oK&?ZJrZa$mxFtZ=CsE7t*E1b{zhe?7L)uoyT2SsFL0-rMQFGTOqn!Ky zC4T}EcW0P$ zyMY(`(YL6pq+$7SI0>I3o!22R6js30Jt*A0xD6t^|KE;d30dhF$PuZ&klt;VHUkVs zXHJtH=XFL4i7qMzkb&YR4lq^nktq@pmIb|H#sDQto_0dF8^a>O3K&$VkH7!l4<%gn4`^n+BwBedD>!@j%T1f?XrW13RR(2}xf)?>Pn$k6#D;VY zwkIBm$fwd-{Y8CTMkPbULiP&FPVsumHM_3L;}ji_60$SfA;kOtLr<~gG9zh5C&HLL z$&;BOmbcOqVUr|VgPKlVWxgZf{%|b=B`w`IF4zJ9eywGKlp9(7e2VgNb~Th>4e=FR zN5BoEz^Y_wD+ds#Yr!-xWU(k`y_h&&PQ%Hew_1szFseWef20;HH1<(W2ba-BRPa9l+=a`P*~Ogo%vm* zEK=`Or=GHFUd*};&Jn{2T~klR+av;X@d=un)SB#J(@CqqMsgD&YnP%6panH=&|TuJ zzi{*NU$^ASXhr68F?uPF@|GQdL&)q?4JW!djnNf3>B`ek(Yol~-4lye)+iCvCGw?z zZU8aSU5Xu~e%~szsOaq0@G`x_YynhR3W_AnE&=@e|MQ5L@{VaTY9;%sM3Q(X-2D?It?o28=v1FjhF3L?XS1rw6E{c zesjp{o^@qzJbG7-AkE1MDH?acrNp2w4P9Ra&0c;A?&!%m2XF@#7D_3|~o^sX*aga|<# z*d*jnQBo)CE34WSThzf!N>!C(l=V0S8~{3xON$NdWK>*$H?b>|Y>s3oyI7>mY$o6Z z@;AT(7RI}hj+v+3RPrMXUm(Bd6{9+Dz)FDh*6e_yM%R~6vFIn?UsC|#TDT6m7yJN@ zAmj#hHIZrUaqM5cPC8Q!U~BbGDXg&NnU21!4n!=^K@KOt${(ymR-%e6x;5vL*B`c* zzkP8nE8Ke6KBn4$*WK6BiB>VfrL$Eck-Rs81J^X!Suj|`tqn_v&@YXJ*0M zqG^@ARZKbC=+M9EftGxlXte+uVYwQsf~2C|o{quHDV&$Ytsm!H1^wdLczE?LCH~3^ zm`r{0%~}4+)E`MY8}yqqHYALC9xEz3%aH>F15rNKC(^+dKgApHGjH9W{@Q(%ey*h)LJQ3=}7pZIPA7=qo;-X`@ek6>b#Hzz44e` z30(25qvpr2Z>nMU_0auDeCqhmuaYGoe@L>XGbK%S%0z17@{~-BRTKAO|7H+Ns2dF6 zATcEmAVQN%d&vxi8nR?#Yvc|TQ~=fmTo0Z~u<0ZZ!-ozLb&x7hHfiP|tkC!(g=*!kI z%_>peX9OGKPEGLMtiyW6Ga`fuYLH0Frj$nsM;pmDS1TKT_~xN$>MjhpZasJ()1my< z9){n2OGPm`mFCDAKqZf)H`i5L-K3aF6!Fvg4rH;5Ut@Uu>?J&JOB23lHThYON?xAK zsGc?R%eU-h`wWZJX=mtG7c?p(Aa@IIjnU(bsh_QfzqKj1=D6}Czsj~?^u+#%PM zqpO?bO8A6DO2)C|YNW8O>zhj2?|qTDT~}K~f%n3SoLS!U)Y8oa+#S}~>^Hagi&hkV zB^$10dxYg|P_y0`)d^DaHT zb7G5W>I90RcyenUEVAl@`kV%f_@Eb16xX}Vu2tT)X&F0EEJmAGxxX7MJlmyAda zXfS}@I*Bn3CBe8Mt||ji&C-%#tZWc0uYdoyAC1*4gktn9SK=r^D#86JEqKSTSc=K; zC)t16#^keILv9|vM6y4wVo9rl0H($OV+}g{1neDm(pEMcu&1~f*{wN*hfT0$nFi`r z>?rsDkDkJL!P=rJ=DXeYM#sOfxqWD?YhkH-h&y~zM>hpIyfK$9w4+#WNloKzs` zxLlF;4XG2Rl67mP>fK&Vk#hdKR`{(OV!lKDIhT_PzuJvGyrU|6Jv4j(dZmn_%0nPf zk_TTA*>gu6Geo$owpo&+E&b5dfL%>FY{^qX#vU>eCFUrdxkD!`YLWW6bkvxa^f6h_ z&5r)gNwuL>ma%QbKzPCw!Gz&w9cDvN$?750W1;YxD&|o^QiabBC+49_l_~uIwpLA2 zLL?~HaY$GJp9(?LFLI)SzV?uQMwQu-?8|0K_5T0OpFr2g`DF6Ok8{5Keg0~;t9KKs zRg^540g#L;IdV9jDp{E!r>jpZVb2t|ktn*7v1755L1jqPyKF;9H<&IA;mOIvK^h<*PiD3e@WU&+xwn7|Hh-3?{J}9Uxm};2-+SG@T>(>@r=;MD zTH{972=`*isC+{nlR6j)MpH>c%i=a9DqT~k%Qn|gb}d6=1!lxGNnm)Yv_dt%r!Qf& zmeeW`no7C7nCo44}f=SOP3T)6S3fbLmDV%Nk|94 zt&)3{xdb-?fO{?-v%#CIrfOwa0oc&$N+a{NS14o&d_Ia|#yKP1`*F_a&EvE7^oO^q zkv6}>9yofn9tq`SN)HrG>Qv~8Ly}7<`;E$O(?yS_>}fV2XbtCW7!e!^e0I!yQ{vId zlT;wE&zZn*MSx#x}9`}$pYhDz~Z}Id?3FhS;wQm-^h#+WLrsORm>aetJ#7LizK?S=BY*Mw$<6MggZt!|4g$1BZ4-}I z%|dA|0#ad-Kmr2Aa(Hsk#Bvysnopz$15;%CbJ46BsXDUr;Qb2NU&i!!O!nx`88xP9 z3N8_;RUIct|I2!lzA^OLP3WH;yjTX(D~ht%VD(Vm0Sn^4%C_0s4ZKuG$pu{5WS{eerU= ze*NQz{ru(U?N)WmsATHq^*eR9r(UsW)>O}*x)DeBI!#JEc8~%}cKmdby^=rlvmN+xz}Qw7_h2_ zXju*4ZC*tJ;9Fp0E$XS#Fq!J|u0Rzvx&sqg25Fxd^-x&d$wr*eZm|;yXcJxGyk5GZ z>eA`c5`yv2te&AxwBB={1>8o=s)X)9t{kf>imWDddPQ(`Pk6YG10)sc-Kj&fs6(HW zn{*gxyy2sb^KP(X-b-Qv(5q^fNz8CSeLg1;LX6tjM#r3nE+Puduj&T>WF~+32d|z# zdpORR9@dZ6vxkn=td|e#<;&+UuLMNyy_Pp_iv4K@uK!5x>;R!TZ1uvDfVnBb!v`6gmy#0Paue7CIZD$@x5nHRl7Gno1g&vyxwKb_kA(??-y_&$iwPCUv4O>NPVfDmk9Un(KDEkcgUqe)8y`5rS{@05e0 zilsXkGU@!&HC556SDa9!XfwRyGuZghq7Y#NhBQsC4(j(=kh$pM`52weCxvU)Y_zKy z%_);;$0UrQ&3Z`23~UE;B1NdrIUXtvQSC+0n7k!Xl#MpU*)<_8aLN64 zLWX1;WE=MA`IB0yv;7va{26t#wWn8BcJHP8c268?bQ(sp{5WP|ZZB0fbrMITE)!iC z9HW(Vg{=`TDj=?CpLzVW;UBF0nuOOxZhGX{%e0oQzD!0%>%+S$& zO!}Mz!<^KoGM%rO1n))UQM*?vGv=Ov&fO_NX0@r2PcbCxKvsdAt>)x%$Svj;b8z1P zl0Jgdo5#bXZ{aWrEfj?wsv9l+I>+IHdfW+(z07kG|fYX^M|zh_#WSh}Ty6EU(^hbam!0h z9%K;b$s{C$R*&jwtfx8k=3z(V{VdW2B~6;Dj#~;_@9qH=20vu`gqlq;Z)*C9I~8b< z#KCpcz_*vvxm4{-ZM^DBSdv2}!2E{p%8AN+c%e^q=dJCIGTKz( z%)d#kTwSWfK|Rfwp{X(0>;NalEfqM)uxwh+s+c|NZG86n^QRBkMtgBR3jE$nce6O( zor?4CT;uu^ea*I1a2{7y=@J`3ICM51M>zq!q`S8TRR9dRW_0`u$y3YD&;bCUnN0-u z;3%H8FitHQ-Nms40Nf%}NZ|eOB$fXxpNRLl9?}$i?772sN*gIj0=(nk5(G9y^CqPa z>lcQh8^Bbp3NXe{Vc1UIs3pjSS+>%*?zUrPM*<-}Y_<)iFuSC&)T~8vvWi$aO6x_I zsp~7F@}+)m82Y_OGv%}AZ#5II6gKa>c2{OrPDQQdJ&Rg}m7S{Hz%Dv~#1TSEVILEj zNsv$}X#8GBZByELTeb$6EZSBzce%ygJ3u;TwTcJ1J{}d6YDYTily*ok&FaH|eR^+` zwu4^*Gt0WXxcqlVKR<68^CI`Q30kT;As~OK=E?HwD~Ui&R)yTHUU{b}!duN13v4I? z+%zL5K|iGIruha7s5aOF%fHglcxZAKzrX7wn;$l*62KzAhxp$v|9$=l+P)vV&_8S! zdWu2v&Q2O3Qu&)n0u1U`7^XI$1t?B)YL_k^q6O$>snxh%0ChQa3Dpm4Vzxu#;5AD0 zHAv%ud_X+fz(F;Ss}BjzkfmAJfk5n3pLv_h|8OXz`KCdVNpcQEAQmg=XfS~`Y#|Nl zHjBhM0IY!E>Mgr*j2Vj>!xO>6uB7Ip=14BE3h*?Fd2~NpmqNQ_{{*_-gD ztlkR_Yjh{VYpDvB{H1y)9rCWFDxab4;y;rrq48#UV$u-4&=xx8qvJ zR2cLZKDeA$!gnP`gqM+tBazmpQFZH+O>`R~-XTZ}4+^R_=@_3S4D(}vJ_mBzRUPwk z2hA0&xee*QZjhDFosb-=iHfvMk}#Q1%4T*+7e!U`oU8kY56v{-oT-PFm(uSXkix7B zP<0*fx2J$8JP|ApQt)^!$+$__c7XeF6=6M1LDk_7@W8WEz8?Kl>J^w?y8fg%a)vm; zhP68~;dbR4dJ)#=FP^s7SG@@LUc9fvgP(sZ>g7JMUy}~_nXkU{o$N=r{7)Z4S@Gq6 z&L2VD>E(a<7Di2&x&cW`#r;wT))n^A8RLE8xmjpZpS3<}gr?5wd7h%dOayBu9Sq`f z8ONzkAm~c=NQa`@{M0qCHaB%O8_k+@8DpP(vSOxG5}mm^YQFan^s{E#%U3_T7V^9E zlHHhnR^I79dh_+iz&sQ0qV8vnj)ou%VbbMw6|Dg(m7oCRZvao}I#|{G40SeUO*@3j zSwD=?dL7lY#2dWEcO4o63zTkk6gdX}BhJ7YobGvyCY0bziIqQ}f8BX-&QEg7n}f{X zbfDU~lJd?gdGol#pN>1;C&_$xqg%W%NvYsZM;$yn75kD_a|sI8kvE(@O?6s;$tBv> z)z_tt=@DuX6LLTUn6GY8v!rNNb&?5ChU=2}@B|l?wXQ;<$4a>5D@o#skP3b5HK-~rFkoVDGH1T3TGye51e8r(c_DykFwT&i^Mu|VfR z_lj>1bG_E-{`rFT&MS9wa%eeC4lN&rk)Bs771Uf>i>biYKX#GM@jC`6vhm2Hku3(hn2Ke@!RUe&+L-ac@*s2lOS;B z?ROTPKN;EYQ`zc^Hh#z^y(wQkr_4Jq-;Hqg?pz7;o^vI>g&TsQcMqVUuvKy$(*|a1 zq)Ia``y3sM1{n|I7?4=iH6IeBRd@J(L3s2BhoDhAm=SAPO9}vM5h${gkh&RGCp4-f zZczdh&_RuINLQ1V?kp#LuBKhjeuSmH{_J}G)}7bw1}bx>@;UdBl+Tq=*HB5pF%wEd zOxV3Z-q#r)^bYK7L$y0X)SZFnd*O~wGIJK!+&*ZMM^bMhJj=LIfTg~Hh&4)FN}-13 z%@~7FbcG<5V2MGEiJR1tqmX~VRJ?6&X4P><85}0TgK40!4qwt# zZEw+WR4wMnkX6Uha0w`aCYbV0i=5+kk0jPb;%yp?7|JC6VSExj>*+jr`&W+BriT|V z*DIph_~Ipd`ugFxnR@l(XRq6@U!~DIFXy)=wxVn3bxaFO8W7%8W8O7Fx+V~$iq&@| z)N1&1%90i6y7eK_gGHPqyj#?yps>3Hy>-C6btmYJw!7e_D%r7zJhA4*XgY@Nou$w) zYS64{_42>!xF@AlNmr^i+Q3?)az%}`Z(ajWH;ZFgxL7sXI;sL#S6v|RiJ?c8ny3ZRs3ysq}*F zGe?yRNQdp@& zOQvvURW%v$5aOaV`s(F>Ka{^&xFij7KWg9PaY*nol1GUqv~IsAwE9;*%WUi^v zkU+@4W3`zr%~e-~LrM{T#A#JUi~}V#B$$@?Cy|ri5@YYv5$KDuHHKX-|3^L=7hp#u z-UTXE^XuZv+WT@N27XY}dCAwQ13j|waFS>pTW(d)V8O>u8hx6^m-E24;U&V&>VAaq z6ir(&P3?p5m|l+RZ37fe&U%ft_vZ3{>M8IQHEWB^I2@i=b42I`Bi95}>@l*fK@(b7 zOiW9Gx~M(a<+ui$efXTJ+6=gt(1V$7u!hN40zS=df+T{}O|wpjB`&ERf1~o;y!z$; z(o+l_D;^r7lRpeC1cjWMj-jgR9&q@7aiAN^TIdi$pnBs1q@LWckI||KSYj>J`Ry?* zpQct(=hj~AK(*=u;DZI;QSc{9n;EA{m;d{)i-oCpP0jIj2Nz+eys1uE)sm^ZNL`2N z1~y5hfS)u?v)%Rpku4T6)c|v8z_Yzl4A`J)GUZSQ`7yE!8UEqP(flm*b9J2`>pAcv zXD|QHaXcK!mp+JTMqHo)Qk$+Ki6LeU)u)%?w=M%=;6uXGK2`-ixuY35I*Oc~%lg^DNh&aLn4yU#= zVQ+p`tv+47{VrCO{Uis*8sxj=ObVLuP)e=pVF2Gp*4>dbc4hdG%lTk*)+n1_`_#74D5`YP}>?816Azi;s?c#hG_D#gw zB{n}sXh)fW0ucz0ziZp&FE8K!b8a9QnQR;yuG6Gfmw9L>(YkE$H@4+yOjZHJF`rDg zceo2}|v9B%rwbJaDT&A4%T( zac*9B{qFJn<*jZ&Fq15AVCcYYkhgl;iV6{=Jwf;&yDnYx9OsjE9}>t(V(`Fim0XfV zi0qw^jM?rvlhneNQh|h)!N$8~{8}}8M7OScc>8AVmY~#6COdxbl7G_RiHY^tG%{io zi4z7Q32z79k+QfN+teXT(!-RThB)K;Py!yHzQI9CmY@n^=a?!kAnF&KwhhhnB9O!q zrY;n`Y?1Iqzy$<_Zg|qQ&!>I&ew>>}%s+o@?jQZ5->|KutTB}{ng5v1HO*RTWN1LU3TBShdf^ zE=+>_B`Fw9GHhPA64;T%V(~Y1`;9#{SXj5G0QTmW%A&H){C$}75c`A$^M2}DRF_$7 z?n*nm{ct_ZCs$Q)_g=Ouw&71lDgOOObl$tv>hf2V4?j|!kdeTp($G{R6u}s{9Qaq3 z(9aZY#AecA6^h)4_J(HeWCeq$X;Km-gX3!IMpm(=8hMi%dz}WPbx`uqSfs9#Klamr zY1KvQO&nK}O-)5UQEidccGk10cEd;A!&PaTg7`GX3I8mt0+4U{7KvNJ(|yY*e9jSedTG)e&~39<6az_n|nMEp9R#oYOE&Qb8Q z_Ud6jZJ*xiozGs{Y>6bSdNozfc1b-G$4P)7&;f-|cSKN&NEUMg)DXpi)po?20 zouCjf03uP+fsdkDW*Mf&QbIl*IMHd2rm-5^rctRrh{Wk+WvggD_Mw6#oiq7i>oLz= zLX1)%P8D;``CPZ)sH;Pg5I0yuEyCzU2a9KU*&#l`Pv}G~NS?PkJiymu z#&vc_7HD&8+GTMfHiZN#X-%7^S~q!KL&7%rM+|icdiU-Ju{bOxSc%8*R}vhOtPp}q zz=-D6XUXN9Z#y4d`lnjjAgDKrYf`3P3CGRqz;*z2K#IS%N#426?zRLaf({#rX}FHszI)N^rU{@W zG_nT;B&nCw6|LGv#+9Lfic1Y@0$mY>PENuI-bYh+;Cl^SaM=DO&14> z8e9u>mYS8*hzf{+?_P(&lYC$JA*pZM2tW`-vO>~fiYaVwH6#vX4iPox@>hOH?)26E zy_vB0;`MI~P)fuKAbhr(B*flp)=Mft90;|>aoeUz@HUqj^V3FY%mHBCC`R1_ zI=F$8YXX9#y^@w@75vq6K;qHy;f^m2w*&m>9o^vPem zj$86;5y<;4-c2TDPfY4PuPPxWL!HlK9fzD5C$G9|AP^N@0;|+q%+)y!ieaf|wHUi* ze|H$7I^caw>O9a~v2BK80xV^VA$KUP>sIYN#vNCk9j4<;lYk2z!k=IMs&C=&zyeEw zC90C<_W*;HTSryXg2vW>+P2E7)wa_Y=mb;@tx3GTRDW|Lc=Zq?G=A;0I$#I;97lJB zPCpB8;XL07#0khS zVvbRF(Q8Old+VOB#HE5lU28TH%1}^KdA9H8rZkO?)X}Eq=8$rNiGHuGZr&ojir#a; zY!;}j5ONecu{!~Z2B{?scg@j`Ds8P>!?Shq3QRM4w*i97c={mjISmV#c8vkz*Q`j@ zVB30begA2VrEFK_Mt5Gbn?)byRP^zlP{P2M0bC23XEkTF>tjeDX?;HHZ!L%*3`O<0NvA3jfP+ld*(5?l8_H=ox2d)kD*E~ zXH^SI98+DVP8x}6OY&{OX=iH5$Enf-_%AU3^4I7os+kZPbua3MgapoW@S&_lBp@8A zZnvVzv)CS35#S_!uV@1szm6e3U6l`lOhHYf>e1eXpRpDSMb#cVdj81 zBc(2@)(HzJSMfNU9I%b!%jg48d6ot|PJY91P-s;cJgA<`NE zBz^Hb2HYBJHit+{gYUU0Lgltq7hdWbq@e1I5SB(S>I~nQETOS{bnCFqK|C91qyl0b z$fhL{SPGz8_ZoUH`Jt)Kk?C6BnxUj#Kxwq8QOuEkHr~)Le}kSPY4lRH#uN6Z zRNQ0D9ttEvSn&8c2u~>jxSS3r8rx~u|0oR>@{MWL0!Febq?=QRnjsxpUQ*XV@XHCh zh;wYswIev0V~{t0ct|{s8ZUoi`Tj3{a7vlOF+8bohpS*rpzplf~hq=bn_Oj`!^NMrcc};JO$O@l?cSdCC z>-S0&_in@dPER9go(NqqK_y1%np8=uP35eXCp$bL97CfkbGLXu$h2#o5ya$>m6VKl zsX=9F#%OM&i!}swYydh)-q{z8Amo)LMBNo2RS_GPCnJ~h=+eUqzKvt5PE=GiFG(gZ zfodlq;!WHRQH^v2UkzGW#5|&-2dmqPSI$&R1TUnS0!H5;3?yCFYe^8y*Qt~RjtHrB zsk>xx1PNOZ{dMxIBJ;>voR2c^Ewpl0^Z4}T^Dm$N_#8Cuy=XVkr9Yud|B;Xv$%nPf z`)8JWB~7o_6lc&mV9{$veW|fVr^*hXSau8C23~Nww>W01MJ&PbCr#CwiWG_D+#-~?CVxwVJTIV zwU^^hZ4N5JHc=N;PD%>=a1Py#3ZpPZ)p}QFj`x*mI>)dluO7a9_4G<)_|A)VvmwWv z8gkxuWcvz%P=B);) zwk)GAItRhdEvTsjz#TmQbXf)N0?(TrBv$ZhWk78-jaCz(TsBM7JqZ*rMva3d<~YbG zcuNIppk9cv^X0mc_TG9Yf69TU=lke8FW8=c^F;C2U(#*%e)(WTLm+NwHM2bot>qC!$21WDbXin6sq&>`)t2tZ?xG%Q=g zNtQR4zxi9RdBT#UzoJyG;FHyhbCK@)oM~cRUgY1$+}RSJraVw_%aGd$P;3B<%x$l$ zo~WLTSc0}N#?HI&x-bjRE@NbETkACm89=C60z^IQzf)5(&y(%%ymYth-G5@uyY_y3 z=aJn0=_a>cvv;Si1*5J@EWdCm$a?5Zk;VkSGUzabZPx%^Qo35r9r*K2^H5$=^4ca2 zBJyQU76tg`?+@!@&QR#3|1Aem&tGQ)!lng*{P{mQ5*KD@h4X8RT0~%yyvpS~%7$;{ z(Kb1#Sv5hF=0Q+?;MT5b76rM5upM>NG3VGhl9HMfOMJNet;bX77^C+b9lN2eW3$Fl z%9C?8ajL_(Nc!HY$&;MeLvsX)<&UvtEny_BlPC3;OVyQpkeXvUu9XdD2mjWr(uUni z)tF#3`K+Zm5hLu&-}YuLYDhpbt2@Dt7aSbB1GZgsgdr6?5BRQBEyn@4veKI=(jwjj zHSoTLGsicVOEJ1bKvH^8b&|;wUSo&FEdVvRQ8E!YNC1Pf>u&P$x0mn#><33RwY3Dt zAT?_Ohnn+JRcCOIY);DkXx-&?oP=9Qr)t$+2_BfI)Z+)Vze26}bEn!ZNoI8`<@W3& zUS)J%nN>I`0U8aA;id7=ES&^?_xa52&STkcrmjEh?K%Gb;@Qx-{ll{xnEu`idE@Z@ z-Ohvj{+$O!b6{QC$G~LQHFwsk3YwRwi)B-z9Hv}!xn(v{l-Qp^3CZi&r%jb2<;2#d zLrBXMz{XTRubS?yOVhU<2t+PGi)xIT7+f`6FPbK8z02QGJ_3!=%imc(0&w-6#(H@i z1@-E`(B1J8$_RZ9=|c4B4CVr-tE3K1!6S!zsU3KgHDpp6K|RU9AOjNeom+=bq)83? z32qcMpR00QjbJmmcznLs_`6y6?&(T*`c1+9haV7;V#UpuBtyF9a>bzqBQ24iiaPpZ znW{o}N0X^amnEq06P(NO=)OpgFeSUO_8L_&5OOA8PyR>>ayvkWGB~X97b?I+Y!4c& zKnPAb*W2E?-t!FRTJJB{kFIV%@4RR?Cym+Dq_L0VkQq#)u5)PuSmH0SPqVm>8grH( zpHC|nt9k;LtEv$INZy$_g~Uya3%Fv+_N-u&URTKMvnQrXp*$D>h&r|02D%Xl0Yt&5 z;7LvBBSFj00-bj*r##u$FTY%$KmXBsc>S_HVPighc(q>W#{K!#xx~HK@uta{lgWJ? zcV`;jrEEE>O;ErH14+lc)1oS?6>N)6Hw1X)G$~8}O9B-swMHz@(dee2EfvbAqULzF zNINxb2i>ZvNxXuH?}$pO50cv-Z9`dF!DC*vncP`y=w{mcb6-6D;?pP3-fBNRH2ysv zK3&h&VSHD&YWH5!8;G%-%00^amV3Yv4beFRwMzkFjFmlz&5x4R(o-S*3exI@*t%LG z!VgV{OtZ82Nxfu8UHMiqxrgVuByG9wT-9>4dWaqAwOgCeOqK=^0MfKIm(}9s@49^g z{1Iq(e3zv}ijpdO+kDk*@hI6D8`w4z)T3Lwns_xn&PdI6nWMK(Q$3dk(rRRaJgaJ8 z_zvDw4SDkx(3fW=mFw1KNDr+;`ZS?O!*$qCd^@I;G+*uwe*4)s*zMs_Oyp5aIuK8vtPVsRaXwssHx5lx>N}G=PHmp3)bB}@pw0r^(TCB)gpKAg}j-+{3(CE z=MCn)^Vc~^-1%{C8p$7cdo1?WR=#-swXv}6q(f~aF>Fd#0o{P{z%2tE1bG5v)k&1ep8cJ58+15wM=ed0E z&N{Nc6`DJqwpXtnUcBVzUcP4GuLkejc}c(RVyAoO=F8vxNOd2x*<&_)%w|{FEbuDE zMnbHg*d+fNk{=1%Z3tR0vEzFkm|UF0YV!)b0UpZgXvR0M=dG1!q@vN-sRapJx=!Yi zg0wrLqD$UGbwqm%Q=$Y~Ty(rq z9JN7Yd``rdD*a^59qL(e*;kBHD&bKA#r+sAX;M~LtU5gsAJhk^*% z@j7Z@lZd?C#m`(+UR_yK66?`MucqYHiNdV(j`)~{Dh-0w)L8O8-RdFf?;3-L%>c99 zTZ&?%Vyde4+F`@Y8kP`o4@uhF93g}AEcJNrX;U}-|Bt*25uQH(^vP&XAKI%|Pd( zgN))4H9Vq*N7V3$8m>`8X>v27YlP(ntJ!E3YCmxr=&Elshito-kZ1_o^tGcpk?SNo z8@uWdKX2?|Crt4rVYNVpwr0&%a_k>Ef#1zfnxHxQzyz zZEK3gtu7EjhE@A5IpSg0&`1&4iyF6PU!I(q01`yt%mVY@*}}Sc4QCYU6&85etjTA2 zWmPedV|uchl4*v1?M?sxm3N`S^ZtW1UO&8CuU`S#ahy3OP-KLZawBcN~%$ErB<`6BED%;30U_^#AWN8 z8Q6W5kd`GD!)$g=4Yofv_6lQ`z!8StwGM4=@-Zu@5!r;^t0~|XEPxxEiFqf@*3N@x zVC{(NUX!&nixqbWMLlAw0JPagLMgjJY&WUqJyZ2WjjFv-B*|MxzKU5u(|b2$RA^utf4^CQN;v` zMgVKBRm@BB+QE?|7Wz^d79tCY!&M{lnx@oKG(~p$;XGV^nA~wzf?BrZUjnc%Mz`*Uz|}MkV%b8n zw5e$ZmYJzcjhNH1K`FbWWzRC@1D{Tvz3iIA+&9UPpcdNNeoY%2{%veB4j(5t)am(< z!BWN*0;ZKb?nU-x*)aw}MVEl9@Icwe{ATvFnkrxQV}y1L)|95eOo6{^Z~OlreitXa ze*WU&>H5)n`p~{?Pp;(d?!BVF({*fq2O)*pf+VnYE*8Vypu=E>beOzX8Ok764Y20o znJidBQ>%hTw`wY9=cmZ~Dt-k*dJV*BE+nPSt=bVy9E*f6BWHq3K5O?xV{h2f23;qzK;vR9dpZx-*GBzfD^x#*pfa$O?9oyS!W z2Z!`;qm}|+EZTD*X=trKETJ_n?^gO zr1`3a^(I0|nx1|;L8wd?wy7j*Sf~>GjDh`57Qi=03BC5RrxC1^cm>Y6iu5-~67jRIDgVD?g1lBiG7k%>>6c zq4nGPMB3&<`4$O1gq7-&&IQq%ozh5n&+cl_gXv&Go`r2BI5_q1_^HWpM5Z>z*~DHv z>?gS9^>p`puiFh1Gba->ABl<0!fKOVGhBoBf-Q_F8O-io_G@_XcSn%J~%=bV?!P9!1C zu_2`QF=7RDm_ypTl=zNE>apf%nd`diru;hlHn0;-WFifOLH3BWO^a*jNu?O zfWzs6k8|uw6cjEXcC^VKh7O4sHJ(jOVlXcr*7JQehT_ia_8l@Y&0Mn<)LFX?KmwD& zdVP}96Omh2*nrZ?3l^e5&bTbW-$MbW#(Qr-;&!ZPt@?HY0F~rfR4|Z6RL$HiP!X81 zrt5A5ogw=GM9P88659EuKDJ}i3tQv8Gcm(Dvcy&$5Q{{#`BschwR|~;IybSRbO)f( zfE0L$c!q^gZT)i-r@$=M`7nm2Io1yG#25|u8Vcn!D>$#H`88D&M9y=a{*2e{s69YV`%lFSMN&v*Cla&)mKF*7MN6u-VP{C3XVo>KedYqXORz%VMTD%u3##M} z6biw9+Sbo46?2;lH``%tgV3%^`B5ToT=I(!HO5HeDVnaAc@5unBL(Nc>Ksz|NSVA=Rt|WC`Gw zjdrm%yP&tG`nm>e%4@PA@h#77lH*AMPGM*j2~-6ONE3ifG}%z%TsjMvdb<4mdWw}G z4mSDNfYPmytkbN~U}{+Yh7&+230+1S8+c8}PE;=HpxAAi0@5PiXX29syH9JYhp0%= z5rW}Okk~T8c=0=vbg){q1a24#S$9jB`0@|vDKuIXo3?_hg!HU*4J*tTb6(Eo96PVB z@lr$3R&&lv0vgt?2s|J^c4A7PML=pLv9oLzR!^kY2^ufr_((asY#ma?k{I7p&pdqE z`|=MScA>r1c1j#t0?C5O;Loj3$*fq6U@%WV0X36PGhFz(L8TPBMVd z&Xa~FMgrbVaNW+@fF8P9D~#hU*-Om|gqVVr=2bep^W&Ui)zAF6sgL>fEk@5G=g3Fm zm^m$<65x&K!Y_;?94Ask17=$av+cArj?x;dc}qpiQ|c$yX|UXq1PnQUx-rTz$_%n# zNtzOL!N7}yu+Fv_g=W0L#NGY==A#z zdQA}{Jc5<)xe%y%g_u_#WIAyT{1N)WHEX^R2 zfV1#;rmzrd5md%TGbuy{O5j5L8yT#Ik+L~v_0!bs< z;8#0eDOH@$k{dx3A%_9C?iE;)B3Z?OUQLF?$UcCYR!y=%feDeaJV~rRfnmWO(EyQ& z+QeVWTg-9{)E!NUNs5)-N#s+*Y6CxIstE>Ur6Z=3apx1gweEnWA1M6Nup4d_|bq4?su`x{GRkxZ>(KM|a#sE`kQc2apf{wg=w5uBR z8tI6o;n{`F*&39&s-{Kz;#6*v!JfvN#frIO<`vEXglnU?5a8CAf9SSw^#3ng2k^0S z00vHQLXWyogFByBd7_I}pg`e-SwpSa!?Qui0N6=Na{weG&IAYn zVZc9lCiok{CVLjDU>CAwtJxY+hdn~@y2gy6D7lT%wb-&M$8+eC1m0$QA&i}~qmD%9 z^YO!V#rN*LZZ{15-66j2{zH7fzI@*sPoI49gIC}GsW;PSSn;B<+>_|QOEyhZhr^6L zi5xjkM+mDy$9XQQo-QBfHELO7c{JxZ$HjI-{e3bp7r3%W9!R9K@gzt>gU0lNU_(<) zeu8~ z=Y_kH5b!dyuYt1fz5T{}MOaqdYo_ERAl-OZ!e5DzK^=@59tgWq(Pd+2 zEXZj_IBMyvj+xbx#vuN?mpHTUyH>CW%)II#Tk{uKd%S;$ZNpx(;l<6o{KF!Yd3)ij zxOBck6c?ZFD>mba=F(f*W@+|d0dx1%vfCymADSVIgXIH=y|4o#brK&8D{hioTgkxT zq63H}#W>S-qq~63D(xUjkRWD}RMq7l(NlDca$uDFzBs{MY|$QVAQVyMA44vL+)&h!98;KGwG2FS{>@EDVI~ z#xKq)cBzc8hBxb=Hy9onVwEgrl`Ve@nn9kJ*bNIZdMATeZRb?zb%HBdSJk)% z`5U8ROIgv&KYr|p_*0MJ6H-3zWmf3sj9GLqs zDgai+A<3^m8Pmu;mw)nDi!M5fU)VWxfK@Y~EG>{cTS9a+a95};sf$;|JC+ZSx}GOt zrn7h!W`H9p5Lryj9s{y$TQ=C>>VO0Aa+748I!MUk{+5{Rr6ijg;OO#C=_#V>CR83H zVKjWIxr$dso!ohNR13sD+b7md_?B+#RLEVDb;oRXs2dDCy}=`l%-gyN#t7IZ*Ov8c@l;a4BxaKGP7A7kBEb>OaWJfVTRw5ZWbrYx6#GGr znBBmTjgP_Sgrhs}z>p;2(6MdeeS_A3@7d+zFoV%A|9tuWANtTpJ>ICI5bUY z=xUz*^40b20S5R0@#{R}2-EOGJK_msuNh4o8fpf96a zJ0BqU+ByRCHqC&xmRGZ6A=`tMNYg4`(7AVO=N3bV-C+-F5!@8V05|TKd zNd&!8l!9Pp7Eoi@Xx-B35^M7AL}=I6aWbXNZ^2C{0kO(eFg#()lf@N$8UXe3FX<^j z($EINaM*?a!fM;@l0BcSdS#U+_O+B$eCVpA8WJrlae09oNS2rtJ`CQ zByO^L;Q6x%CawV1&A_(O@c9Ga2@n5w@HP=#TDVfPVg}S>s#WN5XDJsg{++>X{Kw^w;|9vED2Lw zx>u6W%HWMj5zfe13xuTE=^#_HsQp?LNR_8*<|f=+{?%hgFlrC7l-4>p3CyWZX3v&) z`DnAC0#k+aRfqr}FU0|kc`@C60iKfNS1LQLk!)aQ{(AB{sl@Hcd!$z=VKTb@0CuT* z8=E3O5K;o~efihQQHHZ{BST^(mA8pS=z+1IO?tDcl^JAttBTm!GWnQa1$ZD5;dl*d zS=q*+yUa|WB&}{ZXKpU>7d;UeL!QcAq)MyohQoDO&(h%ZM&iHx>&LC3%Cnpr*h2EE z;mm^Fz2W_{>?QG-W-Hh>7cWc5;7S6uTD{Da+#e<==So6rOAvaL?93Be4khV5tPxyvk%m%@Q1G9Qz0oY~|xF^n8^&Ih!fCmz>2p}Y9->_LY#mee1y8N4Z3VlF1 z;tt4PCpao^3|*I4Q^m(pSA+Znb|+(Y1P@j#!(5zB0CEO<86yDVjQkePK#Eg2^uaW{ zNEd*VPiS&rB45@p1VW7`sFKVsf8wB5Afn@PC176G*3DuJ6am0S@`FR>2uM zeb?O!7+u#dQ+{Q5AmaKu?g;_O7L2#NrY?EbJWu={mO+YWqyVB}1VU}19FP!>bNQ2c z3g9^YMH0^dQ>WV09x=b6dp+q15?g_1Mb8d}6+i?;YL*|dkSM8ID%Ca&X9dk7+mMLn zT_IPx%Mv5-JRVzOVUpmgWZBKi#wj@`bNRRQ6c$Xr*k=+eOA&ApAIZ;76*XDC4`f$J z8jOUOX-1u6lP8FTR_P%M#mxXVo9x>>$_Ier_%+GHdwa4YGr9;j89=J3r3(Hu>fHV_&SBx5*vQ4};Jh zw;Eos-KJZ@h}+btGG-#241a>OKw#i_0_QRiU8|~SfIg;-i*HO{vX^TS&UFsA{hUM* z6^Ft{;BJY<$XGy?R0ZVpNQ&-V%|iD{DWABbL>wT8rC~CJvIPJv#_EBy1S&&>*A4tUSEDFX>9PmkX`n(ANf9ga8+N?Utjm3_J=>ZyKx~>8Q zoAH-_=kWA}cW-A2Ck;4B3?b#s9Rtr#C`+bS5B%)AgtFBZG+TqDYp@F0%f_bb0V8D& zA_=+BXq<>ja&-m?D=`~8wnPQsjz+IFQXxjM=hzys<}d&5k&}5Jh3cMpLY!XrD4rY^ zMweo_*F$7ga;Bw&%dPSc)v|>Ef)7iatZ6EBRG?97i6NM$%;QyZr36F<`%UPBCXX~g zBv>6>tAOG7mErR59r30EkO!MGHRd}KJ`!M@9J(X?{iqRK;_74&;?8l#$5s`g6HSW) ztB!1mbvhc+u$k(I2FP?ml|;-8h^s9X(q}+NF&!4_RS9~Wu@nC;|9&}i;&jFm*fu^( zme(TelVs{8p4Q|&HbmLrQc{mP2#Tx%TO@@!%XdHq*=${AZ6yS(ALFPhsm&M#2~InS zciEtW-np=l1%Qx_TQ!&e;8+X1VJ%(h3zKXm3KLaUowaku2Q#6TL4}mkYMEBj`5K>U zn<^=IbBv6*3bteY7P;o|CIx@7{o_CJw@sFTFM|pK>84xNB(mZuT>is@Fhh~b(Z!K< z9we62!E{G^57-$dPOzCrPuNzzCBp+fAWu47+dx?GoF@zKEg5@=e=tKGO91>;SX`TR zr|)#{Q3&Qq=jKBdZ$?#~#$5iRx9E8!m>D0M$sNESgUuYU#6@^aVa;KKK}R%BfG-_g zBx!e^8N9oAClc=5U3iR~YUHf&9`zAz9mEdU1#d}sDms~mF|jE+NA)6um;d-+5<_T3 zMa(*IA*7N{Cm38eP2fjp4Bij6@1XMSkE0GOH4$I{Q3OvcjAWDRoE@J8xT~6nC-kE# z-E~bj^j-7np`Yv{V3U})Wk_ocw=e(6fs$fWaiao+OMy6}QzjWR@In3i{4F40lzcIv z3|l8XcNm+_B(nveB`}TG>FomhlOAPBFu&GF7|>ytp@L2Uux-%OR<&0$Iu6C{XIq#5 z^vKDeD#!rltIjK{)&btM)~M52_z0LDhCeIL7FqJLbTB$~lmf2S^Mg`6;05BMyF9o8 zu?FIx$0SuLVXN5zv+*hlw$RayyP5$E#dKP%r4w|luTb6&lWLi|+M1csZz0hoE` z0rtSvfXsMk)Y9`CmW_PrMSJ*J?5 zr%G}%k}>Dwkb6JQ&CZ|ijrQzE?N;L+228B&a7op3@o|ml5p*m7xO7lc7s2DJd6`Z{ocMaw7z-~-#3SgKlTe<9s`8V?FCF{JYv4exX~qX((1>jiCE0z@i z6a~jp%VN@*>=J$-TcLWvY+=m0Q-=VNDfm^O_AYOm(jr(ufCM1yI>_M<4C!(^e7#E0 zs{ukqS5g-g2a!X-8Yv0F!Mpn<5zIQ_nrE?(dq2(zb$#t%yjPwQ6(}o(K`*=SyA06HwK8<#}95JECjbJsy=s1X6G!v1T7~ zXjSbVW&~X>64@IFQAhD>qtbhm= z8xxGMLjoePsOxkVWad<9qE-(UcfmLu94nB~99GI2so1x&lTxf;51`+Zy_-NyNGO2F zL?V}w$LfMWJ=jnQxF10L90gp@YI0VT)%f;-p9-;(=E%XObRDpV3M^3FIiCok2Q2Gg z+1f?o-|CNo)Po#I(fmTlKcO2iuM%4awT97v?5vII^O}H!3|9+~K2v=-8P1+XjfBH>>a__y0-=Y34j9=Ax$C(_^D6Kw0Sq?6`AY;0%A*~M8QiI)RXaQy{ z$&;odoh0sN)Y+V&53n)aT835GI&fw75G4`^1PFF(HA=99?uz8yopw6*c%Hxb-Dw^_ zncThC@zyK^|IW$$+i!dfM%Mt91p*2aC?h}$R0r&IXzfX<29FCP0YvMLy7L<~EL>V@ zj^tghn^@A1T8;|{)M}6>0DP-lK!@QI0Dy~vw{)`|1*=uFSHacBY2xM?>p)>KBshh- zI9wkK7l&+Sfqznq4B*MH!Cq>Ig0$H-MMx;_#Kq(SKjIHplNziCw zVBLaiD}Tv4<5ckmP%r>G0IepZz+)Pik0i!lJD0BB`*Chs%3Fwhji#WaWG%PH?5cw$ zABV1O4?6dr&S1T^*Gi^#BdW+tmDt0VG;f9tt03u`j`H@Op4I@q-vT zi)y_9aF$J}x-9KWl@z+!C4JT7T2(cSna@4y%b}gIz(G`)zF?PU;CSbr&MS)h+4C=- zT~%4%d(m#T6PQyw!N-9SyIjB$F{cSCd`Pb4p>hnnkE+;S<~CC$w9x+52sNr-#=n!s zlI6aLhyj43dv{`*8jvQtJ&d$JVkIf&Ho$p&;wD0?*B`I6VE1l)yK33KceBLFzJ6BC zDi1$gS77ko%XZVk?8(CJT*v>FC;;!@k17P;END(LAIp<|w~s(}Q%K?Qs0SThG?G1o zYk6S5g@;Kvhy~Nt$yh3`^SaB1j^cdAHr2@nT$b(hy7rOo!j4k?8b?N)_I%c2N^4HF zm7A1GCh3~+M+%->Dp-4F)or+tRQeeV+|LHD>}+TA#yN7@7`&1SKpdIDP5v})HW405 zK1g*yJz>dMhbtCyR0|S(MZI&<&pBDx&ySbSU%h&G^`d?G>`ENq&MS9A9KgH-8Qy&T zUXa17W<@mtZTd+z#jMpH3Jz#*WQw9H=0Oi|t7w4r!}QL(WPy6s=I3TrCpH`)Zdh`% z>MWO00j+njD^4_M;NquM`J;;-yL!Sk_ueL4{>$I`XQCTGFYWlBAG$PQu)I&2Eyh;AE9TsGp*NqSxY!Mh4gI z4<;`>lvX4y%5fCENRVblX~r!}!mp(CtT}^?hbi9XFrrHgDlbVXHFAP1yD94X1EJ+*}>QF$9(S6ux2FSAABjUco7B zZ(w~d0WFxi3Z^#;H2Y9bXg&TnYCNs)nwS$Lhm4!cwf3zoE(+RTWnFE=xx?A`o@rM!wb> zxU(e2IRx%k51&7I_T)u-b$#A<=aswJFK15ua_@WSa%WADGxWOiJyZf=;NU+&{l7 z268^Az4NkN#SHZ}etlfQo3Gz1X53pQ=25lggR0hi@Q^X^uhdvu=T+o}T{jYSi`$q9 z#%*=uyKTi#_9C*4yfUcojZj$gnseHRHEe~)@JZpi{NpQmz;r#rcZ`vsA{2J$x(0YP zSV~O=6U#Z*q29YQ_Z%|X%a;%H$-dI~yZ5r)(5x{h&6r46whOEx`}Q`Re-Keaq)O_roX8=EJpA>AhF&=7Etr9T)mG-A z(lSTd+c;?SI0k_Fs&vq$zdhe{36uC@4)t7+bMKzavyvB?w_oAvJ1^PIGw*mh^M0S> z$ZsJ@YIH&b90Wjcltz^rMhwKqs^pDbt*qEM#!^Va-G^Fijk?{}v5czsX7rfAP>cVz zDu~djv>GEqRhdKA^;ptb?`WY+FPH*UQvd08XT|t?ce$RMuG@J2^6Iqv-fMPcUgdPu zQ|@0)_|?+=9=`as<3HajBNbb=v>8-fO$;HK03MR6p+bymeW-1-A(F`kaq8NG9HnmQ zU7@(d6C#O50M|->1Cd(K^25@NE7BTiSqBI^i!5pW}YARP#Qt<{zt9HSyLtS;hix;NNs^hV0aw^@b zaM=6R=DL!1yLYem$;y7^$*YGK&tLO=Pc*Cbi&w9ofBvwZuFv_-!<&ng6C1ema(;&f z7mx^Iti}XZ%J{_p`1Z{%aB$jScG&pR*L4L;yb zcXRF|v9D}k@-5T=_(`fp7`C=%_JTzfiDZCs)Kj|ETLlx;IaS}CWTeVvl}Z*5npHbk z?in+HS(%*NE*9>jn|7O74QKm$(O$k<@oZoBUbLI1 z8TNFV@o{9%t@ifWb5!pj3vY@}6S@jma2-4!c;ib7Zm$5Ijnc_!+7TenHb(`9W^(F4 zOXZMObsgTQiJyQ0qXQv&-a!XT(0=O6s~~po1-sD(`R=J%{*b3;5;L(Nk8H(6pihL_#%tIm zg}SEMgg%gONc=hRZp2zEst>{Tx$lsT)cWe~E@~Qy^h`xytXzm&!Pr22qP2km@UMJ){O%bcUlr<(O+#qZ9B{l2z?caxSS% zP@sW!T5FZFosE2RR`A z33Za*t7d3gz;jgxft1t(mXPhl05?gE4d=;#q?odEBsLh9Q)j_%$ib-0$sYT;jcnH0 zB=LySOpHA&11g!T5s_BiBiF1EKaj*&oR!c#hTY8$N3(-|unzp?&?Rhu830;pv-GYv z8^El&wyI~UdJJ(ewu^sCp~AOwxADCn=d_=HYWM6?ZYNguvIjv@otV&$#1~{^4GwQd z?P8NqQIIhC9_oh#d8+qZ@`N35V0=}YQC_#DYkV9r*Q+vi4M7GQOF5b!jrw*8Jw|%x zQEB=odm2^q@yCDq`#<~JlKAa>woa=5Bz4I!n1xIBU+<& zR9I$HDV0uEH{r@b4rSyTN(o#U2V9x0xi>upMa7QJOVDkk*(Fz&Z7sR#8yXX#!+vv| zJ?una6TK@?2P?id%wS0g{xO(x?qIvOy4soe{`%+tAA9fBY}u7%=LMV9)mCIvLGnRQ zih5EgBGJnm=tVz5&!=Nq;C3Z4q09uUii}W%y!YObqP&;>hb(1Dc`+#Oy+qk>?3;jq zeNIVKDwF4;0%d^AYxiDe&N0@SbByQ5{lk}o`SPkC_ud0|Hxd5H0C+%$zuZJD zS%pk9cDF^PFvhz_qu*|HRM6$gvJ`Yyi;%6D29b1yHZ=&dW;iN%D5;Pru{WDopOtHy zYG|x&QW^yyz&w5RM5pOx$D-;DrJ;H5$Gx{>?5&#r-~0UGsy6A~!*;Vz$esFx-qk?v zyFQ_xr9Po2&^Ga17sq?;;&|_(AMmP8#svJShzew``??L2t-O2+a;f6MYtIrmk)sa; z(vYiVrzM$vQY2hYB#+bzkIoS7nWkGT(5{49iYze;u(cBVbj>QQK&ey_kgrjU zFs3-55N`QS(0+vaGO3Rb3K~si1^10*AjUWz#%l42M)oDwO?11c~ z6+ianpZNe@qH;D|lBw@LdddE<)a1a>r$*UGBZ!1dK!Pjxw(E+L8uSj%At|p-faxKC zEXege*0)Y-Ir}vOfR-tm^?2(Hf2(D=BH&U9b+*e#`dln~XJ4-K<>kx%n`^xJ=<|p1 z!}C(V_sHF-@bRY#pLaXw*EC42)JN$>jx?J52c@*{c^`=mr^7^PtpQ(A6-%9=4=V{U zcy1wf2SH13Tgb^6xNHIG)zu;9gT(JL3e3 z-B5)*)P}7`6iK?1Sy7c!AnZy2ZQvYV39;_5rYO5e-`DMxy7!AP6J*;^?b5$inCsBm z<@I{+N54=b(iX<97pbk2t2gg8pn7LBt~)#aoT1!!{rdHrpFF<`>GvMC4|bpR1WKhZ z|J(;y=OlP%BqO2IrJ}AB=pFmfkZg5B0qhQ5?s#&~9dp*B6FcjC6Cx&~70~&L$ucc@ z+InEd5tb=x421|ZI2xf$&bg{A$@1z6vNJCLjd4C=zqgOlxk+%o{A~SrtmDAxx+?v? zL-)ayrJg{^#^s;?0Bc=nmLS*UYHMU%vVsoO6gtVIa3(OrgfF+FNSG`ol|{sQQS4*&H32K5 z5ybmZA)^LDYr5G>ziwwM{m>#QN}XFsg+4}puk?IX@endZCgv%X0dngez16T-aYFFj zo6!nTQ8y+_r%q~O1LDA$!Z%63iq_+YkZy>%^+%b3rTbcmZ%tY7R*7iwj%_j%YB)A3 z5AT78)46vB;`hxg%7tM_ENg-D!(kjs@ZRg#2Bo(Aeu(a{HrW0(t zV5A1i0*d zI!++3Hi}%2-HJtifkY7LN;A^UH9#*dv-~w@$xTzfTh0Sz=TCnu)HNG zJZmHxN`avJU22dlrO?!iJq2)7h}vDjxo1sv_b*H8NJG9h){Mqx@>(xVh{_uORG2y+(?}LdrKY=U! zZ(l{hjS3eq=V7fe4@b}DCTR_lC>2WYTjs!lm+FOg)4 z+@3dKMH>S&329fN#bP+Jt4%5#wiiD`wuZDDVf3xoKS?5h>^`$$KN*rw%u{n{S1}g5 zP$KwDoO}%?F9;B@zJYCwX{t~%b_CD?B$z*Ur#?a}Cm&c~$W6e(5h#iOl4#dG8sA)+ zD7KN7d+F>h$59HSaunH?w9uWzBb#P|i}-Wi__KMjViqQhcz!?rj0>px&NZ zciR9ulFcbE?>tCQP3HiBATMJ{cC_FOkDWUpw}VRfLEJKn=`>dZK-atm5Es7v(foI;b_oc=7%R1u*S}(DM_XDqxIZp-C4B7sZ#p5 zJCHaRL9c2N>GDv=-C2&rt10d+Qp*ZQ;it~&z&6ng4{8g(feTZFfmpdEJ2mUTostxI z=deAi4pgDno$K*``&|3s#d`MnD?a$@+N0>+qjxiBx>L@4N01n$t~CtHat^KD0u~H2 z%K@md_KDqd_A#nj-2EZiR>gCSA2sWMz@%VOZE~Q8FEUNV?zQ2L(@I}@sj}LcB0Ool z&d^i@k=Y%B76gpTzf_*Uwbc2t^3IQQzQK8T{diq@s|$d{LBI!I4Rtp0gag0^k&^q@ zu+FBUa+|JhbMlyc6$yiG&8IH(D)FL^N?rS*& z3Br-kqpN9N=WF{RYBzMo4#wzPd`5a|&W}KbWPq)yg9Xasl^>&*XyHz5AvLxWM*z{h zRh-+$2*{d5jwy>fCwV1VDi%j%h6TEdj~?b?I29S8nyJO<_yA3Ad-Seu#sgBIG4z&XQ>OjdU;hym54+G%wjJ_ zYY2g(sn`bGLc|^+5URsUeKH);U;bsqFM{G+ysxYqqldaFfTRHAF*?H&@l*MwlTTUm zfUc&Fz%3s{wpCHJBg=xwFa&_CRd?WKDOFo0U)@8K<{&sqyL{vb5mWo4lZh7JZ7=`I z2QW!8sVU5p`#h-@9K&{>QI20@Nez>P9kwL%B)Mwk3zp+*NhdXgpe%1TY1nC9C8HXl z0!*^T`3UXNaRD(;ol#!q9w4M>_+E8QNH)sWbF%;=20}1$F!1Dd_2=lEMu}FOl%Vs5|N=EO-^=$IW_4z_Dma;9eE1MwTF!FHHPj z1(NxEs>GW9Wc~QriGe##Oy(el76vRNs)5Z>xu}K?k#~-bZ0SbiB)WCM2S2@vovs7?y zgRMT622C2mJid$orY9(GIbC>_L*?k?z+SDi4V{gxL`W(mbdSrw`T+u18+{EY0mCT~ zoVXapR;G`6SVduz_TjFPEFc~3>bsTGu4z&$hFKKg_a@*%zT<+K$08k9-JTu-O_ik} z-!t1986=Qv@|b}rQ#Fii{BuiUC)a?r8HQx#YQ>7=_o*{io;zO0{O3HNOooU{R!w1ohC@JN=RACd7c*_+quzVRCVswI!J-c&Tk+KW>2WR@>cv)4yD6q zpFDrr+qEU|y~pmROpH0n#JuA9Qjkvi2+_*5%7Antw$fdi%_704_WbvZyhtuDS`XwW%eTM!awP{R;QVNg{I z<>iY5Wwb-a>q~|1IzJ)&1b8T1yhSN36sAN9x#oOYI@PRipc7phgplvuvjpN+T`Ydy~VooOA?jRIo7RQ#X~+qSTb! z(!IO~fSf_@FU|I*J^SL-HDz?|*&N?Bq)Ml_nacVm|2hiXANkjCLWq2y8dz9Y%Xd())xk5o0ZLGdM2kU_;-R5! zop_|kiYdFXS!%1Gzd9!&dO&W~Imjq`l{2SCQqupD13&QES$ug*5QB$a;QVvQx%cCo zg*M(!EJ5d{5KaxA2T^%JR$mtMnjEFRXZ6#8ec7usW!R~7ZEAn*1BN=G zIu%5%wuhA1iW3f235wIhqjZnIjfj`3^I*h2B~@_DT3q_(oR+s&*57~cYT->jo7FAg z-++L#zI6LV&UIqvd#aY3HOb1&aCaSQ<-xr6$1bqo2g-)^r|bbm?9r6~25FEf)2Yt`ITqm|Q*nRCI9m`wKSvfvgmmTk8IkIMbT7NUx3)MZ9i zqe^G^$^y1_zGf@gHfx2SgqOD#2jl+Vtls*YyJ+mxj96cle zHRDMMvh9|lQdk=J!# z$2#b;!_b{+0hCC>;PP*ln-M^dR>xr!M1sg_0|XAabrkY$D*+$bAj<)rXJ65^KAA`< zwQkqIY-&7IPj!pB?cm)d4*=mHpcqVi35if!U1e-j&K1e`ew>>^ zS-j8ro&2(Iw7MbzsXTt8`cbV!f!^VdO3IK48ZzQ+~i9#R+Pba;`2k zN;|}kR#uh6SzZ6$k8>6s`04Xl#{}9J(k`3NyJF#=Y*=PX_tm4QV5SHu5L1ivHh~e$ zW6Rbq9Vn80L1*$dl>Qy*yZH##W*=7x+_9bemPg%ShZitschX~MB$K!tDErHK{CT0U z@OWqa|3OLVx4jiSdi#PWrK6ww=H)dRKpo4Hm}UJFFyJwS5R#1{asV>A)Vs2(Q~1@`PuWy|jDg8}SYu*fNqImDT?#XdgJH|d>cno2 zm>lo~I8n-GWTjx{!64elRhoAa7f{vQ2!hef-L}3-24?#uiARz?gp~a2^OQ2wob&Q; zDN_z77cqXW2f2%L?f^V$L##7q76#wC*m;$Vz)!Mku3Xf`JT~+wl)`Tmy_FR>15Xy$ zlk*dpn|*v%e&#U}rwN~+=+%j;z=NER8>!2`t*21e7)VkEGqOxKRz{FXP-@HGOa`aB zNyQu@2uZ6emOYD(v8t?Th~&`oy;Q~QjLYi19D5rbZmPvY@`sItkr@*xNCE&w=_rBX zy_N6!<=?rTum67`b^syxDH%1nl3R&REtr;y1&^s}nq}K`I95T(pcgBPcpx(wXr&s# z#6f}BFs^Jdg1VjRFLZ}cBP&}D%zPCCv{^|+`y6CVL1L3TY)$9;rzcG6&dO$Y9=IE( zW#MF67T&o?-H`2Al5>PP@(Q*`wuvEru|J|2J!Sb@ZPFPKdJ2^QeF+i93di`Ns)tro zTJH}hT`+Jr#4I9iH6S=%FM3&NdEp&1*rIL_{@}Gk1uOq{u)Q=Ruc9py;HxXk=dPUFI_UF6OAEyYqHD-3&63~ ztIW7mu+Qe|Q3^ezir6K;7D$UWu@a>QTT?MB0T9$zWd;$Pa7v&Y8XP6mxWH4fo(cdD zt@{sg`cbN!1|z71++>4fk|3t82Sy$|=iF4u@Jav#sC*%R2Xee@%511!b;aFj>ySaa zP*2kGZKjb2qGVMq1OiSnb7WUClC4Na5rhCH23%Yz_<0?dFVG~*0IHgrx+GyY7VygK zcY>+2US{0V#y)5A>R~rR}Pbw3eYRuDJR)t5vPH#>Lio? z?_rGr$~m8WzW#J|rh&Ec*=Oy=yeing^XT0;_Hd``#dk9m5|N0mH%{svyo!8ndWk92PHFIOuAa)~x6`4uT2Ld{nio!{!jBY^UgZ^Scp zIB-8f2Y9C#pbP{pUg{kF?)^CD_3-d|{rJ{(PYzY$T~g!+JRR!Nd8sqo@r(`Nl8G8% zrnp!Vx`dM9a?F6$KD1`GRQO!;e3{Wz6qeq+m?>GOGOQ5mi_Wj`eVyMg!Oy+}J<^1V?+C5aFG| zV29;I+A4K`C+#K)u9B;9fEcS5^XhOkd;-Z#$?F8_g^!U^`9qT%U>IGUNV)SGR05B1ih@OeO!d_O?d$9XJ2 ze^#J~0b2B`3emFQ2|D#w(?caHW*4Sk%7)|cUI&WV$|BUkThZcPfjLd}@*f^ELVOZj zmvS%fAO&W*=*42xTq*P)&D0%vmqx6{lI^2=I0CS^!T=(zEtxwgF7LvwR1F5?(bok% z;AaF)(A*G-vU9@lAo63Jw#(-`E6G;ch zo>-61rnVi4zFE(Ts#cohaL*yg0G@+AC03P+U?tsW$S_9NlPd5{s)P-ReFTEL{Kv;w z^a?teYmiK8C(1~QF>KFl8f%Fd(j3`h`8u>7iEKsoH{$xL+#v-F_DogzUL4HxkT0ec z8{EMW}40@E>$2`;8K-w)#{Oe=!te-3g3$@!E3I`Iwp4LIHm|4%LhYO z^8WIl9>+kiB93)pepP4l8rQK~i zt8X%nZpqNZ>8hMjcD78(nlVF)@Jvk8QIaWEC8^C_{Z61pSMeNu*FHMA`#)i}C;c>gBqcBg<9l$_j zGah2uOo&Wgb^=Rw2);xJeMlFTeH9`ZWLsz57*$b@IlRMjdDIx z{IW<+`!*d_q(jPe{0?3#O!*zNaHf*u6!U z`-lBPl1XKdT99NR-Q_GW+F`rQ8ij#7)yK_c ztd0SPZt7f)GDieNg>%_~>cEO51JWqc$8$0{1&>YxZwAhbD3IQz6v6sYePHbpL)y{+ z23oKjjZrWJ>g2k;su1LhMR)>L0W`+|xq)I@jyaSDfHqcbW<~Eb`ngf!&C6#;3-6U` z>Yaz}Lw3vGTX^MLrUP@MetfwumnOB4TZw9dgHudy#1!O0XoxN>R#ronQfJq_s3d=_ zG&$B$%t{dF+pI*TRdiESo7Pv7@JDbY*~Ry;*sL08Rce*BlqSr*GA7ptijV!f_ilv# zt}pw;^kv^$^x*Pelqb*~em*k1^W$6rueR6QTyo>E&;`&@Q}t!*B!*5B^tCxww|b6! z6-X}Nr8JvV&r;BwwUE+Qzo}FrRnwZbgyFIoojiIdc(Y}W?{Aq*5>>ydBF;WbRj-0H zTy!ee&pOMG_w&E_-h1XO$T2eqHImd@R_4_CQG}Q;9ca!u08jE)6ZfW%SjLku z`iQ#KIb0glgkVQ43?Vo~oMg)0$^q~eNI^4^c#qcQE-Qakc6RSUt&?i)QHvvRb7#T3 z=A2B84*5MR0tCAr;p)QjllH|YS2qp!9bF8iju86$5m|K)L}DqRBg(vL^3uU*!}X~9A|x! zjrCHCSZnKG%BYyNKy(N6O6~egirR;yI+d%4b7ODzL#j!ugcMdKjj9U>jlzJ-sWe?i z-F&>yDHU>^5`)ui<&kt$%Sb~A$CZc4y&vZ+RsH(mlNaszv-RVLTQ&2W8JDq|Cqu!8 zbzfrvPdZp2Y&od`kl;r?6yk|4yYbA-H#yL>(0HJ#NI@+0fG8H4bT@Ud9!UKIPz**W zH7zAUr)8%OP90th?Ko3@n)6~5pq7y*JA-vivf~+?k5jG0Q0dm$$;Rlmh8V1C1bLG4 z=*=?*3{#NkH(MX<89yb zOe5r{2=*rmvjZf0sB$Oruf6w5X0nj3m)OXan0*}ckckY0HS()Vlb9eWMwf^|MdLLQl(v`l$ zbWL<8*Ti=@OL+gH3uF#JiQV%k4)JWB$yl))h0QX2X>A}3xv3gm-dV6v7NF1l=pYXT z3^And(u!Of*ejWRS{Nx6hpBxvbS2!UqNeuPsiwLwQoPZ^k;E@Ki(L(p0#o&>OWAAjgu7bQohizA{rcr+S2AFC z9-r(;_An_)y%tF!mVwyp>OJ2v%6VMITDPZ)H2vY3#bIIqKDduP{Ehs+xujG?a-mz4@4TmI5>5=a1F56c zMg@nGwuEA=fGpEBh8piL|HC0@Q=&EGH%a1cm5&?^x~>o1TCY?9!K$$Y_oS{XIFS0D z;PEz#8L^uXpjC&JR)FL=<8`;znmwu)Mzo~Itm6pwudWC+AEv5GuEG8JRcF`bJ3r3( z@@u_*^QvjKZ&k`mT!eJbPRbS}XC?JiB?Y6CQ0rBMZhC2iKBzNruNECpcd6QENfE$7 zVKjW)x45SCZ;8oA$!(Y;SXazuv+&l%1aN{etYMWim6h3o`P7^mm0cez16La>wXWK4 z=YWl>37TdO-4lUA2eUtluI#6-dZsOo*xU__DoM?07rTb{c8;Oi_2X%}3NC|GgyBkl z%H_R6ea4Q_9@&N{(3b8O+SyLx-j8!uZCS6sc=Pc5X1B31RTy8j+mk?Giku}_Fa)5G ztTD2%FsbE0T%Ey;5rkm4p-GQ9S5;o3R4pr zI-+sWSsnZ-*DgaMEz)W<00FbLTbe)OBK6)O1Cdez>nAN-ET&wlxLKK=3c9vfc?Q|kEGHiG6ziM*?%q^dV6>#~Eu z&Ju9q;h9jTov&pCq}E*HWZAI_RPE5*)91z7Jrc;6zt38w21NOo}3O)f|y!7n;#)E@e> zYP2WMlq4e-VjX181vWSP&G8M9xS*c=YFA3;u~ELkdsWK_5+SgHdDP-pfDmPo#@uW!sA{&@{!h%Y(-If{5RP#FMNFoK@0(s&{ zlCNCqn~qzRKtQ&0QQn=M4bN-rL1%%_o~;?4ISxUa9VUw%Aw4j;L%RmOb(?FZhC z)&L#4oP1TP%l@J#^g=OYv$9DPHbWC5)+3Xz*QiDmS;jt6rTg9T|oQ z9?Yus01bjujGC^bPO5&;RVBydU~FXwIgiW#`~d_jvH`-)(k;;-=>pzJ3pMeKaqif7 zp~_BHxz&(YJdiausYQ(8o0O5ICYC^j#0AND+AaNYqJb(#)fiiK{9JvO2uC-N0qgT} z$L-uE@t#j4?`_C+_F8#({p_&@we{!MB6oKlyPIj-p3?R^3Rg&3LCU=VUwDJ=d?MVS zOXQp60R>UDTGsIxV+vgq6)38=at2@w>?bg}q`QaMis0FCSpBH-#X0cpOH3o(Z<9_T-UsQsr_f<*43>&8T_7Yhih&?Wpjq z4Ymd|@gA(U*`B(r_bTP71XkU~5Wm#N+Z*Vy4)KOV#!uxi7Q7k4S%&=y*TY_2C*F79 zZme{B0;u*~Pph0XqK8!sR|%A4v!HmY8ws)Np;*oA1hSSZVDH{k-X{^b(%6oYsD(_& zLpo%*IN9;M8}UjEgIECb*Pe#DOMQMyEv`wkd~e?+ewiRjZ&rK$=F^`%lML*`wU)@ehwtWkx2N^~G^#V4 zlrHMbW=-j5NPeY?rbsi8u#h3GY^OEU2D@FiAUiMXGgS|&@Hu+mG)ade|@ErdG8UsvAD`9n3gBP z#Hu9jygk$*dP}@_3dGkf)pMATq&ci+ajHl_mpV(Q$|i=Ss|8i0s?LtwS|x<-B~rCj zIRSRz=SkIJRMIGsd?$6m^P}YrW=TCHt$e=CytmrzS%LYB7Y~}W_WWUA`$pY)=x$U1 z*;5IleIg}{drI^`QYz)qGon{DK!A9fPtnI9$EJE5RJW~jeHW|7G;UqXZMI|5C0kA1 zHQ9!F=!yzEna*qvlnWM`Vl9V|_RN7E6(l}-{qohDeznZ* zJ$5&QzVk`wJ3o@iBQtXtc`9OvKVxVq$A)({vdJ$m8_I(DoHUm^_iCg%J`#bo^2Eb#bTD9Q}S7TOu0_}m5dtOpc2r$+9kHk-0GA>MpV1a zt}_v(;3nsbnL=qv0-c!bLSzuS@Y{oHNWqu zP<3xRs&g0Boge4i+4A`pFMgtux?8ayUQE~*Z}8yI6pfUmprn#l4NlVgWs%S4s!d`g zvB|N4*s#EyGZig#Cjl899|rZVM;$$G!eExlNzZc?$!xPVqJ$tPxlYL}R;rtGT;kU5u&OR`X2W0%=-6tK z-Gsmg>AO1xb~RCtlxJ#jN?Ul1nbH!pAw=p{znkq~pXa+*tK6ub3qLbyMX=jgmsJ5+ zjkOl4rt%Z^A_?ECb*scUC}U6t$pX0g<@!{1HGMBoDZ!gs>x{&2xu7 zn)Jf5Qyh4Q|~ABwl(zFr8((h}m)yZQW7D zO-rZtVP7%FJ3r3(aKF8J)qe8qix&^%;#(En6CN;Sue@A#(#BTG&|Q~og5;LonPS4o z0{8Vu*n+<}6_{AbC$(H+fw$PX)3y`rN)D8oJHQzt30Mxq6Kisimvb@k5RA=P@-YUS z>(9cV{%u9~y|n=^|Ensx34#P@`9xZQV(BxrB*878ZF6c9VGkGy$um6wEFJSCInLx6 zL4nS(>#dYlTH98>O3bNsAa3&Zwh`zECO3yB-h?V-Zx3bf?tQg2xODm7$`g>&yZrBm zfKUK*WHS$MZh{yTuc#m=5(}!8Lb>s>1L{qO3`B+~KoiVJm57m5uf)_oX0{JT!<=GS?C6S84Si2N7Qu5lQubLq#GxA9y0_ zs6h1H6vC1kQ5a#kKi}Qu_AA)f^ew(wNp`#1WX{7fg9@wrUt`NMgi}=MOV4u`#l0Wr zszB{U`+Txp0UkFzqf}7QrP9_+bWuXsR^?Z{9~uNB_SOaXA%DzZu1BZ1G=-XsUIH7f zEu8};-3(3g^Ime%Gj*s~zmIXaq7@gQRk^9oc}Q@rst#3h#pi8W-fq)->nC6Sj}IU$ zadRre2w*0<=zbU zimDf!)dQiHYIyhVO-=hv+Ig)?Ol!!U<|?N=-GzF-XS(yi-6+c_r?QOlu4e$GbJe!P zgUe8xU>Gfx=2@G^LMOvP#OnrbL7(Lfv|P8|OvYCXxb&1Hx2!Bp<^!Y2)F=qyF8K;G znLu$c<Wu3t7<-b-! z-MogHQj(X8FcBdJU{eVsnOFfDmW&C$0(#V( zo|v4ls)@@NaH|Jq>e9k_OQb$JG|ah>dvCCJ2%AYXe| z6=|epY*a62ltgl!Qp0Al)c9os%*OO6nH564Jgo{?trHoXiXQkrsgcOkP&QcX#dBx$ zoyD`y3eBIk*E&o+E@7@**6%xVHxJqE>5%0 znVU>cZcu^Loa{rwH6OFQt;#BPSkNf&BLJ}uCUdF0K_dm_hOVjS(Gy5&9s_JrvxHCK zTcySG0mZ!?2+vxazxn#*i+H6bcIPqsVCr=`+TqlSlt9fJV2&draCZ%g-PBuaD;sk~ewl$}O#5o%xd5B=icwEIE$lnHC4Cg_~D%93-hH zSw0TZHzaiF;-0y%ML369YxSr!DT9D{Akbu3Lxa%NR12nSrz$~4b9m*rxJ?QYLYJ73e6gj%FF(t-gjc~__EWN{QPe~Iw2q(+82WTD{h-4qd%C^ed#rC;9RchG&&3W!7W zfa!zIK;?A8q;`AXEricY^$-eSVgTq>V`qmM%_s-k#iOXC$tPWKO^LCNEV;ZkFMp|? zLcayRQoH37iUoi`9+|h!i)1?BVwHE$(rr0H)O`^C0(*lD^JpYlSf*&Wm7bd=-0ARY z*2{o!t2L*cQuPO+0psw?42 zGKf6C3qdYBRR>qoONxEXBzZu|;;5;3Ef`;MFv14(+Mb=$twMrqxOJop&X<>oN%MSP zRgTiw$s_nj`)<~@oZSGX*6O?q#@&v6*aoz__@o3k*q2_#hXm*{$jPwm^L_uDmtTDH>9g_jT_i-wV;5lXElv4CIMXQTc6RuVSABe2%j3uko~(+`)+2FF{W8Z^OwI| zp-VJT@;S+}4%9hphwG3{P<)bSw_M|7h1ZC#BW0btcYa#{8$lcN>|;r2GdRr*!9VEe zf3ck%@OBv8m-3R*+z6B3-R5p-$X5h1kc+we6-NM_(n{Cj;^Q?RwzyJ3?GDtspx=Yf z4@qN9AQJHNaRIAdkw9&-9&G6zP8ar_71q@Ln-{nTt_KI1ESRa|YaU8fH{@UIMkU$8 z@SVT>mB-1kOf=+DZh&Gs3G6^&vw%d5Gc;KhMWri|G7+Lr1R3Uoe?UQaYEOn%fw%?* zC_E1UE_G!!%MVos2o)Hn!e`a41c}~R(rc6g{ur0P>KKa@Jv)dwWvR+ZT>&l-BEfc2 zGwbkt?{!z@z#5B{%|?^aLr|g7Av?neFx$SE&F5T_l#*sH>J*iqxmhw3o-M(9ze7H% z5kaH{_C3Pouhvr#0I~{O7E9s{#4FR(F<*zwdLG21Ba1anF>5DJ- zNx<9(5;Z#?))q@^vJ>aW6`4I|d1l@WcORU{PlVYo3+S5Q_iU;jKrT9K&eq|^$#!@>?$ekF_y+a z7Obzz%!=MJh_{j?J!_LymI+BNutWwslK4lk3pxT! zL9PzWV(+SXD7xT2^sb0^K-1Tn{$vw|w{iLk|PYnAEUK~d5` zTGNt90#m|EI2E)54Z>to@}+z?h?qbld)qyjs!`kJZ$9G15Y#6f1HqDOO)albi6+rW zf@4#^3TuuP3s%drn+lO&k$FXyIX`9*$Jb<;N~4+|b$Gfg&&Fo~OB{C{mn>2GWN|s- z*2?V1E)y(Z{N-<{2OX$Ep1afW+Rhi36$G=crgg+2>Y}VbaAx6`K;mCV+~diD_N(ekag^9j7?UO>^9L$vAs@E#gmt@B^A{XXuzH4m)m>pYZjj=jRhl}Y@g%xJ z#kbYTFgZABostGftCzp+*dx;EE}^rCOHf{Bdm1RFafAOvr_1Wf$nKy%a_~L7x0l77 zdWEM3%rme;!Y2@E1{ENVSk($hB37{gS;?@JiZ%q>U>a4)5Mu^#Se3?l(6fh>!645@l2 zSR+7~ICR)=Oc_#s@Wjx3CTKr)m11|W+ZK42waHSiy4)sUSC4)a{hr_KhWQiq~O zN=xQWUEL`pj|{AfB>CC)iY!6Z8%V3jYAKPly($1EFx2S8fPD}Y9uj+%C@74SiRED* zt$rk2URB4N{0C~pa#Fo-Ik)Eg_E)fG$$vh3{f0kYS*_iB^lqHZ_>a;z&Sv!YcOp0> zJg*aa$)pq9rJGvW44{z03k;pXfL@XuqK2gZC4=R4ZckDqn*+h8gwi`G8IY3X$0QA( zFg%=2cHQhuevm7x#i;|21{gUCHy|)I@5|qPBCEr}Hh<1`ds=yzwL+0{2p3x)@w4!)6a-R!{s& z*WTIkVS#u{AV}LhE1~W#beZ$IK36yb2?EvFSw6HK6 z1vYdln`xmzAY9y$f~HB9qvXj zlv3rE(vvf~0tEP3c+;8?CZ2i8SIJ2;ieIn^qFx2i#QrH@H>4izy6z-ZOgtB$ zzqoH4nEiS2@xV-HHQFcHADY#06f!lmr+0S294s1jLIC)p(bYs%F?&z)rf*R^LNGim z)k~kiYXMOz(@uEINIj%d{91wszaF!fn#q7bsF&S_uZCRyDi3{3gADm>D?q>0pvYr*n2x} zUzN+hVS_wtFJ3=f*<{^$;69j5?x7}GRjeDU*oCQWXbppe$+RkTR_9o2F3Cn|vYb`G zt4IN_X5$c#`~=x9Neho$dIWO7rj%PGK*9JgSRw(PJYm(r43US{O$#>xgA^`Y@x?gscN8aNYufon;~J?CO4A=|AG(p0(!>pIkMD+~;Q_-fib+idT5ZlNk zTtgy^Mfw7~GH`!tsA{N56)a3CpuMPakdcH@SUy6ISCeg5M`PEO_#g=Q-klP{8a_5} zb=(IsG>uqh0DCgJVpicO=b{=fVy7cw2%B^2sF#LR4xnc6Wnjd2t-9k~kNwvJWR_r6 z%gD{r3d=6lONF5GLp8PW$j2R#Y$7Y%r%VZTZl862OTr)I!49LA7S_3{_xt@-8|%tX z>)wNQlajj=C4a{|#|S(NYsUdXt0g3z4-ny@tSzSE0Pai*^WYT!Kz1;9JV_2=g7yHpkd-(_I6A;VzPP^knXm{MZ zOYpm<#Shc8*kqutqIQ?%gdC^t4YT@N+Gf8vHzZBxs~eD`FnD=>H{sJpmFR*)v+Ayx zh8nZn2c=I|#7howZd0R(BakyXA0&XmE(?SfRdP6%Zo@8?iU zmsO(#!&TB)5Ji@A6u@9Z!u{HWmrFtz%2QYjAo`>tI8eKa+By?CJb4DNtQKF8qki{h zFUTnjX0HRDkleX<;NFjOF0p!e{j&e&8aL%3=PEmyaJW__=~IrZPHB?jvT{686_w7A zSwSE_xFGof23hyiaTgCH=}!kC$RXJ2TQQ1#nRVe+A<)#1v$j+ubxK__P_PH7kTA71 zoeD(#SL-UP@09$Soz~8AU+sn}J@^p=6t+45KLzQevgZcLhKEz}YPbB~d%|yz#RlC^ zv-C@0lnM)OOi#>HXLj@IBkXDxn6tX>pI}uu{4rsx^&iX^Vr5Hj746rh<0a!3&lxuz315QPP z)j3lv6Hwd~OfLU$eF72$-yTJTZ;y1xk{dy?(tDHvr%H5MB?AFY7vm{g^-7?y3#dUh z;+a{9OBD#(<1h}Jj82{jHCbnvdR)?x*Tk&SkA75wOCqcS0KmIO>T`^FlDKq;mw%)_ z0RfRS(Y*8Hoa5%3mv1ctZYehzuft2-$!1;q>le$2T~%Jv;E;+>knMW4x;UCr1lF7uDluWLFRTH%3Rb05Li4nIK5 zz*9JaILK5b-3bG-V}&JBJ8JL2Jw~<(VFHlySVRWtqGUj%T!gzA$3CvQbVtkfRUI+t z8dgHOCC4loEhP4LTJWp@ED5TfOHPNatuH3!Ea9%xC*~gPAT%~Qu(rjmiA+aJL@v@4 zD0aIlg%>rrFe9byS{)32c_UdFI9*9#?3f)a%Wtb@vlVA!QpsyIIk*zMx2k{H*|3;r zomHCsmA1E@@A;R)7jGTWue;ywJ$hG5Eq`SFNA+t=BysD+IyIDIpimW?> zbS{L*a!G`8T{{CN)U2O`6xqrRtV)bmshi{T_&6d`aRXwnm-RhXpj0W_T zSAmy}NXV76lVQYyr7Y0U3Y1tn3sxsxot&47lcbbg(I3snRTtny+8GI5EJT&D$u9_0;Lj9^ip3yk@2C*rULNnpgJ+Z3PES!bF+)uPnZD$^f10R zqpS}m5J6GhxawT%@}x{jp)e0w=45W^O2Ftse(U~?O$`HX|BdZ2x_gb{zH|M5$q$U95RoTu~7k8?#$UViavtY@FK&u`4B?>xpV zQ>+GZ1LNsZRw9-Mo>Fq~S;f4oNGzI-D((`ZTg4aE*JpW?nwrxBWfZ;>_#nmRsb0}= z2>;i(0ZEYHWt+;Yb!Rv8j%-(W=$V>CZPEANn`sFy#vev(aH;B5ud)5Cu6tE1&MwP= zO|G3wLM*Dyg$w&2atwv8#L5lScTpwl@U$VP9o5`33M^h`mBm~=8*2DK{93wiBFk9_ zDm?n!yW1E~ovgP#r_;@0a7|8^Nxix9NmjhnL7(o>3!I_qNFWDY7c~cq4Wn3TZ4dQW zSTbycpF##ZZa(vvo8EC3HiHx{ucjOeJh1v~vIJGvzL!-8CSA)oYQ1YkHLb zh%PL2s|zuhQgd=(F>k{3^@z6H1;Demt;ALj03&YPnOAk~oWsYRALr)U_{BHtv(KNm zH@8mvM-8wQ6^(_it}B-tzfpGBEKtazBm``Z)+zJ%kd&MHYz_um9PCM2CZ3leL6Np4 zdoZGGIaS`_r%9}FC-`S|)ar{4Pn`FeB{sT_2fu0M!%}dphDR|wl}JXY%F!LORoA{< zo3hW4l%Z-!Sl2tM$zL^UM7zfU2JU1SbF*G2)RxR;bRcr*8%(vgB@$aMCiKI9bg8&e zr^LFz&qKFXyxu;$_T2k%e#*?gYT8FPXEqQmtUR~6<4-zPQ;nT8v{*K#)~b3sU6cn` z9G``_WVM{^D*w7DX@~9AlEtb6zbv4o)L&%XMKU1-!aY^wu7geDlq-?^28fVRe9Pni z0l<9+%YVjT`TNiLI`Srfu(=#;Q_V9(m?RxU=g5WZ4Bg=KC0&-(-biF?Nv}0|iEKGm zKhp_EE;<;FJF^#bM9!8Q;4lDrE$YuBf62~fx>}V2=L{;io99Imm(4B{cVXpZ_9c-@ zqx+|Ih#jaaHCYIIc{GP5$UCAjp|OTqNrVFH#BHu={euud)%%Vy)@|T*Gjd%|Mmm#CgQ7eG%}~r zLCD-77haDAJ6Y&;%G*9q^@$UKg|j7nX-Qe^M_vT{CGU^|`I*%woe1x(7C{C>8d1bV z>E5eHeaoha0aHuqWLuN&0P5yk)^zX3IiEJSSFfJUhkZ-Nh49aUl(>dXDnc5L_^u{Q zHRPLYCAQ=vAwiUIC8C2VDN1XnM3x|&RClc~z6sOuM*U|KCJE0SyQ)+_QQ)M+f^vro1fg6*tP)M z+U-VHzYqZMe~QVCn1ZSef$M4tY@T?NW)h3Dbq4jC5%ZTAG-4CTlQ*%2+*nQ9@sH+!}r#4 z5t!Vv(>S+0p&COfOP*AkPpM{?Q3!%};={G;EA@BOTa z?;U+`O^UF7TTmgK*~2QCawkbn8^!da1;f+a^jHpxL zrGr*2PoNvE@>_(?qja!HX=c}9Wi?RLtOGw&8JvWt}HdVVg3oWSV^EJl9pR@eTz1=g7j!Ah0JUIzkO4W6>Ym@$j~sCpp` zM;@uNgMkFYIHenyt8TSPl!nDE+bcM72kNj@uX_LP+h2Lr`}gM6!;4Rz{pex7xjH?) z_t1SvHSi$Ov1z5T4p*s?dl}0s24yh5i1czvn1-7yx}kZynj)(4&aCdu82_JL=+Cv!5I zQtt%xODbfp$ka=G!00?NsQEe_ilE00B?M8eLBZ(;3&P|=iX|+l;5@b{*!$|rq{wju z&buwRmen1PCfH$*#-gZW8Ji_?Bj21TZXT8Wwk{aQk_4lXvLqzggK=R0b4dL4&{{HV z#6AnW9WX@d3@J-xRAN38UM!8m^P$_r>t~-oZx1h?z3pVVGQzm;=zT~t^Luv_eb?Od zUYncVzgz&nb+e?cV>cz@7;ua~6L}f0QI2{ya;}#qp(;cUy;F8Yl7-xmya!ptmZJqp z&2}nv0`a;YY7hWYR4?5aX=18;xx_tGbRS4GoeX(p9GE1y+Sucg<=FttSk;`O7`>U{ zVT-O_3V>pQ6uqiYbiJ0BlMYx)s%hqP#9_#mmlBKfdMr63Rf2zSFzn;db*dh#E+5n& zLw@7WVcoov|I;2Tte%aRpMC!DyuD#lK6}$%eX`zM6?NkG+xen`dgiV zGGYM{fKfbnU#iZ2fih$+;+Lx7W4CS@Wu&=>TsPKjri?!_0t>%RhBUKf=)! zv>@g|JsXKUb{xUMESz1^O7Z;086k!R_@K2I3X4#herr_&`YMhLmqV+pOCB^51w-{v zV#sDPI>VBKCQ#QCEw>JfEx$%5mOWhl=|dj15>#1U3xbkhmO)pGhxpEhstgtIS)=N$ zpd*wdeXFop@2pHAnc(0xD%|IH#Hb#87x%$_-R4J3S%TT4hcZvyiP;RsjwEUwPO=%# zx&Pjeb5>$_y*~RrH|5UU>~^UJZYN0LgmhY%2*auax00rjXc((dWpKykC#Zf)L(@nD zEwV_|4*|IB+e%A&)E-&s?kLtSRSM_6%+87ox{N7(%ePCq(0-HQ%K3oxv6|)=Z^U;Y zcy;vwI+OfT6+UDamTd?JW@5P~*1MFcbpxpz=B@LPFriG+d-ST?FqH^#$TI`KJjsgS zV|SGA=OB4`aC~Ofv3s>+_6~80$wGSlmCFB}ALnM2{@!@`>edBKk~5Gb!ZSabMjX2|Pj z1)@1`c55k5xs$nFtP9jl&_5+Jjvzy4N%eiD>+sb9UJzO;ncH(3_um_cr4_H&TA_`r4T2&Leh1pUnP{a&3hYrox|7Xub*GZi{5#}ZY(Z;vX}Nx#9o?RCvkr8g@AhitSH^6 zxEcTntQq25PAA`xXPxGN<>fOfi9ce8Y*}*5lFU$BwS_c7`10rgJLsZYIu8c*5rzcz z48ecN`KLl!q=|h#zqq&c()sGT{pj_x*AJh(aMw%hzTNti-+OW+JSiVdQBQ8|Rosw!W;@C8wRRbjhb zW@4xADMbk&cc}7kvUP!DTOV1T%H`?+_RfB3XZ$tV>-BuSzCLKZ^RV5LO8JI;`S;&` z;7P2p;|8-yVr<0*CkF_qB-)m>8KT8dHUqW+tL!0DH=qh1hSWgTBeQG$;ka02Q5E|j zj;L1!U=p0y(aMk#E~&5oU+lf-uU^}E?FU@giX$n$H;!{}f_w;IARj5uUd|u0gIOh7 zJmd+6)EC*xdnQ>7%2H$KOAP zWmaN=ZAD+AQ_FdpX^pnBY?NlIuK5Pih^=V??WKR;Y>2r#D}%a2f+3D> zK@~$XCM~99PcEr(ss&mVo$ID!>}spP+so|xPEc15+np8mv8=gyHnQfT z>?)w|QmQ6`SP0Ca-65K^*hF5sFhm4iDBCu4;R8Hct0v!y8dWBMWFK}JrK+)3axhZz z41@jGWdH{qe|KiB1wYS zy&!3Uh@RQPfE|)pg4boc<6-%@y9yv2pT`|*msd5ju3lxOfZBjr=S#h-eKyY}+Hcy| z?|*U}Ufi7SUp#Pk0$M$tUDRiS{B>)}+pQp_2i@?geod#G#j6*B{H0h>8<58ZI}PJ1 zQH#ChGZ}qqwW?yJfMP9q4Cv5dgw;unQuQA)8YATeUG$dJ9jHjU6S5*MK;?7S=G88$ z=gPpZ)?2{YmyMZx@%qgl+?d~7JbHHxLCnbzJ?e-3Mlfq@$dBv>5-NH#t0MB1o_ zQ{tXcrsO1ml0muv9+lzxu$pFD(>GLv9pFMF213Qw(SebsZcuxsiM>U}eK;0{YJnX1 zgJJR_j5V~IzL#fg>v(fZdF{yEL1P~slKuMQ@1MgWn^G{_AZ1$|P{HVo9li#wtLpn= zO6LNis)4Z8L;PxwB2qWxHak;L3&51UZ&T-f7NsA?G79h`6{5PKZtmFR`)3>h-w0eV z;+`*C=S6n4qx1Qc|Ld<`-kgwKJ!E%I$oxm%aF4&gbaj0gx$pnzclq7#>epZViN`Zp z_b42oR&h@x*QR6x?#5`yL%6HR*E45_&3Tu`P*qicB$tewlECCPg}sZdErM>?thNPk z?E(<>7QAclBx?ar*|QyG_RH{Qat1s0d}j9Cg;LIkvloxv-F7W=YS;S28tW+e0Z4oS z66D}@4O@6JY0#SdPdudQ2q?FnqPE;qsfz@@wO@HakzEg|f0M+d|ms^LwkheDRp9LwW9V`X?876_LdMjXoM!OS*CTQY__T_rVbWD6h!AI$@6>YmSN29!?_XV znajtVSNp|-ceg{yo;s91(QcN-I~Ok?W60>C+G-I>;3`Nr;a_4na%FY^UG+x~*GO25 zuvNKEF9y!vWiFMn+U$}m{4xzS#ja#x%H;Rr48NPZ zZ$6#66k9RM_JNqUVIf8+u}Z0M?r_$o{mg><)uVUkeCOlZI`fIObW8f0nO)XL=t-qdA$ZlKj7UOX&{G{E28G>P zyGoPP(M1$Hn)X%9=H=5>x|hlP80#zwV_YF&^WLk26OHzM4Qf1*P+uLYsXY0jjMQic2^Dejql3A`TI6T)4+=LfOS8ga7~wolR(Hra%4y3r5$ zp$fcTeEt6As~0bCjsdP7x+m*9|MnT06gkMb$yB>1kz0Dnn|&NdGsy*BJ}q0SwCx(4 zwI+tFlu49Oav@qR5FVkgbZM+e_i{Nks^!d27A-1v`7ZxJhP8Pc(%4z%Zn>w`_qmSL zH}>QrN$S|U#u(r?KB^EisKuwcL?{`@C0SMtFAvSaa{P-TU(=Gnpe(V`cgxL7K!kWV zb)GW{h=M)OmM-289WKGrHiR4oRFtO;6zjCgew%1I*1LBvUV|lGj-S40Z-0EV+O8hL zCj$~sP&30E+U6|KBDodi3|zN#U%U%usN)-any^cz<&Xc=h0YMo|q+<-)WElIrXP@e-=pDezObU6QWbXzD%^ zz*Qo%Is{4jL)eB~7t~+gNk$_ti477bN-t0u!Lg__MqSA|FkbIWKiolLDtw%>dXvxk zi*l}DamA`5b5qGMs%y!GL@MDj2^KcMv$ptTF)d4M(-lXtWkqll*(SnGj*d_DGf&;| zf$ybQ-XxVTdjQv&HrtFZ@~uv8TD!N5X7ahZ^!x4gyO$qiea@#(7Z2Rs%NcvRoOvFx zY^w2AbPsILhJ@34kO5)9*5x|LAdpsK+`whvuwPz1StU=W)^#S3!HcD-q}!+!Vs~)= znw3n&Zc_od_0z^#G!GrPWL4x2b}bMv<9xcYQE^7)OpG&Yh73B!w*HW4+ko-{Z7uwj z)T*4+4!eXsOkbAVsjgsYZ|@>erer~6EW^~N4+%8C%Id9;E(?R9lHx+**$pr}C)v!Y z@&9~){-k|Sa=Ka<^WkrK0#+jDtW_dmppjv+giTwK z>8T1$_7rrPklwJW>X__t{b%)g=DotORcd~OCplZp6|JNt2#>YzK-x@=Y$Y6CRXQcB zB_l(p18+}NPMulFmRXe4nU?N2_t|ti1f7pdnVk7 z9S+1cU4kP_ZIWE=xt_sg^)2`^jnqi0E?(C%YlDdy?2x2|T{;w0lD0Zr3Y#p&xaP__ z$=*xo(5vTJ+C*_4IdVhx;FeJUs8wB~`-4CZ6~mi~MfSCCz_wy!n#BTJy#I zlGCe4?{4HMr^r!0@dOW?Q7hv~2wrI$R(bP&wIHQ^APt$^I2Q=l%t1WNzoNvWqAcK4 zXxU6>lH5_mmU!pbb#LyRG*0;0=fq)Bzw8 zYb#oWLlDPKm*qp$de{#MSNN&PVP6Am@MoY0x@+$H_ZUEqaMvBwZv=4}iHyXz3J|wXY_Y3NA-}~^vC%W#)z+`I2)#Z!&9}cHKsrj)Lqmk&7YZ3x! zqpdCpl&F)TsZ(bkY$0}36CRsMCF16!=PD_3VU(G2G6FhLt^UL*arux+D>B5JsXhE{ zPq5Zg@Iei>LRvnvu*~Gq2cWwYxNhB&5dnx1R9RNdY?uk}+6U1ouc@MAo2IN7h6k<{ z1NF6?wZ+nbCF*F^1fm4kUqz%Wt+%BNntUtHGp@V7s~T36Al9H^GOF&0CZ z_qNrV#`AaG6|qW~(W+Ld8H=vYf~?}Dtx*q>?n_rtN+5g_heQu!l`SDztg};{Jaglg z>Z-Vm8hDGh&gVFRbY~b7w`7F~;wh=wGA;gj3~pFCRTQ_Xq?pt>AQfLvR3L2VI6Olc z%$6U83NX6^3+Og%sG@P`G@U@g`Whv7>HhTG)r~ql5VpuMvG5~8!HUu7(yU%VXNgh$~ngfmM%|hVOPP0r;JAPuBwVS*LLJ#CD1FoMt5k% zsTrOBt0fPR?doyQ#Mk7bt31jXt;;^6>uyXY5Uxv4kSC5d5e5%zEo`ym=`X zbt%rsmWLHMh~o14jRf%XQTbbjuf2b@io5P|gPhEW?=DFnR2S)64IecM zX{r>GbmU#0eS{@s*&yXCr!z?1!e9^-vc_7n@ddvmo$8G_h(S`p)NC4Q<5y|qOZ!KC zsLnyey82(FF{oOjBrUWJ!g3@C=lhabvlLKAB(FG@L6=gZZtCC*+m1j|Kd-aL#;m`R z#mMB`9Ohg-cz4&CJ*~4(tRcEQb^jetLCK~XeUsZ!M?jLV8g=*5)zZ9R8nMbEs79ZY z6p5BIqP}4q^8?ScRz3{6iSfGjWtr)AjF*(tLT4@{U$g=Xbox1%@C+Om7-!k0n9c>s zkM75FZ~bh~GMa-VD=jsalavuvL^SJ`zmRRR9#g{(d>HEGhLf;1w5_Rm+GKUOBn|ye zlLt(E;K+YFsSZ=JU8`92HL7|zsUUcqVd`J-llJz-@3&VkXS;K9dG*-cse88{RS-S? z{*x9vfCjYhW$Y(We)R^ItcE8ZVRg$;N7oGKsi!?;^9&^ota+)90ZbwpLz4btqlevS z9R{8)la;XdQLV1A`W7eIQH`}3aaoeAt}_waX0cGj;2#RVW)n`e&FQ_eY7w^UVL z_=T6=0$= zIK-~{_E{375?`upAa-AD@|uoax9Msh7vW}oTG%y#j|H1mE1-4&yCfy%iOn*PAJSP* zHD*u5kI=CQ@^CV*-)x&3|BSC*y?pDA86z8ccxR8Nr45Eqt_lL-c^i6mzd3kbZUD=DX=o+78{Wd`I%%8YS!MTaD> zc$kl`sley5X)L={U~2*RkO0~?*f|NW=k#*5UE%q}@8!D}fAI44eDeo4Cw^BC+-FqV zvb}7w0;yEzodH&50u#4nJg--A(uQ_YR#`+J7wi}vWXi7y5k!7AiexXPlGBo!Y70B1 zNU`O(Yb3GD_qa{p32g3g{F|&G+ndBfZ%&oB?lg+b&AXJx99X6>0oF>}co>PIRb~)u z-5~P8HmRzVWaLW|0mRbAGb0)o*{lE?lA2vGGqkO6x(SUWDDYwJ9yOg`6kZOsIvZ1e%VV;MKoy%6u zt9u1-1#_a^KL8j~i#xs zo_buU=~fjSv}FY=jWE>=!{@+xAVJH_gG5GA>l$%h?QN#5=%jwuAO7A)dsGl3NXiTDS|z*QcR9+Mw&X09 z`Z|^x97?U0IV9-BUK;e@@RgvZ83A9%T^q@?6`4uua+v@4czC?)ks`~YleJ=%o~dlO zCO;Y!`0)4XDZ-k~h(nbmi@qXi8YGYASul}tSdHiG+tn?v$tY7RR_OA%>H=Wp1GLM> zo-7`8!q7&LV%#pw5~&WbznyGwK!O05c!)ha2>{5CsyzJthpB^+e~PTuA-`Qk4mxs! zkFkieQ7UjTY~2C}X|a2i{Mj*A0@V)n{1c8haGYOSdGW%-RmCV{L7!M;QPtW}=8J&# z4r>dA)dl|Oq#X9|!#{A$$mqOW)U{hVnqW*LU=+x$cQMPUeQZZ$wnZ0DKo1s8kWTN& zOA46|oC~Qe#yH)p4@Gr$U>Y+p@D7NkL(Uo4$MDlaJdxaqtO6&1KIVsiuzvBwZ#xcq zwYAAnGUWu#2Z50uCCOerqXHcOQKz7(TasOnl?}@nQpa1%hO(%@on4rlE3#>nM!`{? zZisN>C^}D&IY$1d$MoPd%gTu|j+d0~nMz*lM|P%?Ixl(g)ti^E-@j-#=W|z&-Dh+T z3=o2pEXZTzWl6M?JDSl^#H(7hsr!OL6U6%0P2mb z1_2c;WHi&>hft>)Q~;jPZ4tCwII>Tm@JP+|LX@^xXA9)bcJ0*NaXy~HM=M#ggO~CFhwm+x#I-4J#4|U>{et+VxV+1j;Q{XX%Qe=Dk$1M4FlsrDJvqt7npg(>c!R zV0$V`5fe6{qN?yv^}C+04ND0Qe%+e945ca!yolMzd1kk{2AEKu4E=EbYfc@1N)uto zTdC@jug$qla7>%LP9$j#R)Iqqz3@2S{QddTFuNPyt{%5Lu;OEd7Wat?EjlA<>Jq6{ zWm7XXm1fwO7CS^~Lr~1?Vo5H`Q8yk<&KN_ZaQLtfU8mZThlKNW)2~u{?|NC{tZKEK zDjPH;so6#5t1KNPq1%{>>f6IVQlCL#?!!M?pFzFk!$0-}uEtBQnGiuQxxK05+uU_L zwU+w)Y~+{3a_E=MvB?@yuMYo%H|hXy=>V*0Su30m*(B5uqx#hhugBX|ow0k%yC1yo?O{QFa2~+u1MpK$q=& zR7sysoBH8<=ezeC3`;VZ5JVQBQq3GpD>!4YElEXXs0_u#cCJbN&7Zt~|J5On+1`Ks z_O=7_;=#M?PxLWu{WRq--4*cFPQo9s=?Z9T?5W+ zJ?#3}bQ$YdlU`9?>NU3ZlW4hTtzGik#Oq7ig>ADvAkUKU;5j9LbjvG*8A-E>E7H)t5|!v9wm zW^d}Y(oHn1PiK0GH4VlGIF=n4J1@T!rfcb(v)$aoUQA$5JO9tTeD`91{p!_mknrN? zhgUZk^Wsr_%J!|%bB>POIubOIm<*^bq2$zbKEGv}l;BuI>egq9I^dnD&**fCELqm6 zeO1|y{N1V2J`jF&AL>&G$+fx0dMBU(5=>)^yyW@iYDn<(5C7B?T*-Q%emG7zTNCF! z>~3J5yi?vVPZ<&hMqm6xCh`rS)4W!Y`kDKl!OJIFn#_qj(mgY=j}rS3z;?$aR?*c3 zAtZ0eQW%iaebh->v(93@S1U7}k7-%rpl9ujm!-)w&Wn|WVr|RjbL9PR||O> zY;}_V2n7-#cOjl&D4~+#XCXitVuLQ?1oRz%!RzkVq$nwtCT|1ztu>zME|339KJfT2 z-^{OHtrzd#w%6~(vTmvYt{%+$CrIXeg7m4CFHSm2TU8m*Qev(>q(+T_4DlpJ*Emqj zran&<6;)kW!)JN7xOKEEW>qzWMPB*&EhA&OOk_C=2Q#RH<4*k!$ zTzL4Wg>kB^&!w-d(~?P4Hch^mppUA?De_sAK({23vskQ2uyUgNDp@X0>Y@Yhbjd!G zSdDH~bZ0cC(;>QDQd`bC+3hMslcLx%ayly;3btB*_-Bs$Nz!JNfBBNS@|1iRX@>TSCn0qe6j;@8B+23eOa(#}L~3Up%lS-Dn{)+1bXK)n1L9waog^%Pc)LvTd#36KIfm3S2N0&)iR>KNvgqz|YnOydUwB6*?007kiO z>E2tn-bTpXG^m{k1#~%h0-F+CzAs)=2DmFodP+Xm1nek{k5L}}xr6nt?vf_~RJDbv z=#xp?QY9my0%jM9a_J7Wo6gGS8$q9QuqO-5G>xQ+PM=cnU7m;_s{#P3#e^24`ojs| zB?ehO<)h4^)E;3f(4bPtI_K`#iy!B12>HuyjslNIez{-X^`nPPtSk?OXyI+z8WUCz zm4_Md)T}C1S`MaW>y~t-qtb)NwAt*fENxZLw`7$y<%2d-VbwJjJ&SrtJ7^EMyq7($ z{DHO{Wy;|{MRNP&zUm(yebtYLfA%mdpKD2Z(C2*6Pn^wK8Q15Qv@?u^)B z8-*~^i{OXmIkZxxd_7)j(C|T&TVRX7A0e%u-h-Sr04TZ&IoiHXKMomtA!WNCp zT>$8Zjd_Kw$-YOL%Y#*^qDKkE6YP?A(QV?iCv3v-iEqROveD?v4tsBA{V}rxVr*lM zkG0)f0g|9RrJN|;M#=T43m{5Ag1tjRUXKGjbu!I|R{i`k=$=LusfSd{lq{VJ?1-SD zPbc47tMYoCo)BU3P~(>xq0YyuS3k}#nc25Zx%BSLhMgsXxumL)yQ*y_KT{E(Wn)xZ zomGJ?6(abzC7;hMW+$^Rm7mKj!poUVc1cz>fX0J|oJmzQrMN!QA)Kvpm6(CtF-uLO zY%qk3#vW((2j9%Bml(pK%v~dkYmLs=^ki44torR6DS$9S4l*k7E%Mi_;!wa?V0|+k zTAy`*D980`l7}0qrU!6htxk+sW>TZkMI8^zyJ_smQL0T&Rx`mrv*#^)@#EZ`*k6C_ z=f0iQSodKiPEM$jtpdyNkv69;o1AZ*ojL)MjR@WSP)Uc-P(6HRN{EqMS=FbVLMBl= ztFparJj@0r6=Z3sI`=7Sr&K|qgtW1f1JCi(+b^Bfs2Z!(iQU8VzkKt6k&(+xCe~-b zaAIk-b*QYb4EeXS@N1p+!F`qtg#iNDNpeN)Z?Y%va#2!~ZAqIcA$Sg>cn7jd4h%b; zPtY-w>$!3H>c=_TIKFx_^~HDgF<-66!g|)&8`9(v8UwJjH_3)GaZ{!^0F#`yJ;DE=JEX8Gj#FbJuQ<1S4dDn zvdqHu36zt9di+$Dnl>P)?hIq91{&Ry?`*qQZbgegPAz=EO?? zLFRK6el`dL(-HO`H3XYza%>?<_XRvhkdf;ZNRlV^L_#9tcwF(er6s%4mFm##s%rgp z1_r}c?V0ZKMNEt-zZ}Lv^8gm=0=5#&>xn%QH_S2-ouwk7N<*lp$`0Yg6+TWn)zKKs zxA(;gS0U!Gay*{E45+o=Vy;GYH^D$x*>et{O3>7~1REtRO2cqxuDJDML5s%v#p%^8jC2_L7x-wq!<9A@r)kfVmnFWLJe=r&FHvg_Ny35jM=4 zJbCCWEk3j?*UCSd;Y+j2%x3qTjX*rX z39NtqJnQZ~m}(+ngU131@U=t?9=7r=&?eQDA9i$eSFtY#AzUo;4Zo_%TlFLG_zp^4 z6h{ED6>9nLFV<&(aK8iGPXV}XXjRP^Eu~px^jmj#iMX6*?+pyPf(rSE433mlh|)V0FE%#KwCNAAu%Dr7LBtHLFOvYppOk zb8|-PR<{$-8?{_VxR87@liw<^0htz)CJE56A~WO zx}f`KKzvM9m`IXiEY&W^PU`JhcEqx1Ar!0Q3^rC5BxVz#KGv_bkNUORW2&w=$m<#j zaJ`@m02YFnZALf69#*^7Fp_KlWls{k=-!m7B4{?4soPEHgRVPa&{^jx-EIbT4;bGu zCl)BEtT~i@)e+|c!jj?#-*;zdahecmVGd*Thph`lopnA1YoYsjU~>0-Wv(I_b79 z6FkBOe9kKw`+5-$RQfD+ni-BEp4D3Rd~)eAcdr)8qc5#0kRHr7Xv%P9|xWx ztd`i*b=z=VG*apW%4N#Yy*444tbc_SFB{)6&t49ERK!U%I zoCJw==}mx+Rc@^{+oty)N#dT8^IR~p2mz^Tkg0aEuq2mtG(+lQT17DI^d!J&e2*{z z-EAJ#f--eatl_FQ-F2K242XeNIv9_!_}BClX=iBYQKFxScM{smIt3&+v$_Z@6Iu>U zDLt+t`;W$SX-&b=m5iJY`c_as^)gjq3&hb_XKO{^NQ9KEEF7%X|6Ig)b;x^M8=H~B z!@quv1rrd+1f`ic^n4RgnFUxumpi~vh<3p1#2SWdOSM2h*4r(X<>g@0^H3j;uqR&v zSgepL6%;t{9JpAuG!kATkQR8(VByE*BN%y^_3&@hFTVe+_tAiXcqRrl^2I}K#|42YUeVBJ!A#Juq*@A6P&j=uli9(`f;Tm0w{S1XE6m} zcsWKKho16yIjys+WvtH!Cx@K)>^D-N7mwP_4V3*+_-KWF@52YrVTsk))Y+Ab!ovdG zmJ#*@b%S{)DKW@fFB#c2lZc_MZZTr&v?+7M%6_Zzx^mqc3xAVLD$rP^IPw=GB}Ch2 z6v!eMvE57MuSLnQO;x6z4TW1_j=YY$0ca}RQ+E#uxTw~Xl

    m!K(o^>gv#?J_8&B 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 Hm1`dWjTS&p diff --git a/.yarn/releases/yarn-1.22.10.cjs b/.yarn/releases/yarn-1.22.10.cjs deleted file mode 100755 index 6418ae5..0000000 --- a/.yarn/releases/yarn-1.22.10.cjs +++ /dev/null @@ -1,147392 +0,0 @@ -#!/usr/bin/env node -module.exports = -/******/ (function(modules) { // webpackBootstrap -/******/ // The module cache -/******/ var installedModules = {}; -/******/ -/******/ // The require function -/******/ function __webpack_require__(moduleId) { -/******/ -/******/ // Check if module is in cache -/******/ if(installedModules[moduleId]) { -/******/ return installedModules[moduleId].exports; -/******/ } -/******/ // Create a new module (and put it into the cache) -/******/ var module = installedModules[moduleId] = { -/******/ i: moduleId, -/******/ l: false, -/******/ exports: {} -/******/ }; -/******/ -/******/ // Execute the module function -/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); -/******/ -/******/ // Flag the module as loaded -/******/ module.l = true; -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/******/ -/******/ // expose the modules object (__webpack_modules__) -/******/ __webpack_require__.m = modules; -/******/ -/******/ // expose the module cache -/******/ __webpack_require__.c = installedModules; -/******/ -/******/ // identity function for calling harmony imports with the correct context -/******/ __webpack_require__.i = function(value) { return value; }; -/******/ -/******/ // define getter function for harmony exports -/******/ __webpack_require__.d = function(exports, name, getter) { -/******/ if(!__webpack_require__.o(exports, name)) { -/******/ Object.defineProperty(exports, name, { -/******/ configurable: false, -/******/ enumerable: true, -/******/ get: getter -/******/ }); -/******/ } -/******/ }; -/******/ -/******/ // getDefaultExport function for compatibility with non-harmony modules -/******/ __webpack_require__.n = function(module) { -/******/ var getter = module && module.__esModule ? -/******/ function getDefault() { return module['default']; } : -/******/ function getModuleExports() { return module; }; -/******/ __webpack_require__.d(getter, 'a', getter); -/******/ return getter; -/******/ }; -/******/ -/******/ // Object.prototype.hasOwnProperty.call -/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; -/******/ -/******/ // __webpack_public_path__ -/******/ __webpack_require__.p = ""; -/******/ -/******/ // Load entry module and return exports -/******/ return __webpack_require__(__webpack_require__.s = 549); -/******/ }) -/************************************************************************/ -/******/ ([ -/* 0 */ -/***/ (function(module, exports) { - -module.exports = require("path"); - -/***/ }), -/* 1 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (immutable) */ __webpack_exports__["a"] = __extends; -/* unused harmony export __assign */ -/* unused harmony export __rest */ -/* unused harmony export __decorate */ -/* unused harmony export __param */ -/* unused harmony export __metadata */ -/* unused harmony export __awaiter */ -/* unused harmony export __generator */ -/* unused harmony export __exportStar */ -/* unused harmony export __values */ -/* unused harmony export __read */ -/* unused harmony export __spread */ -/* unused harmony export __await */ -/* unused harmony export __asyncGenerator */ -/* unused harmony export __asyncDelegator */ -/* unused harmony export __asyncValues */ -/* unused harmony export __makeTemplateObject */ -/* unused harmony export __importStar */ -/* unused harmony export __importDefault */ -/*! ***************************************************************************** -Copyright (c) Microsoft Corporation. All rights reserved. -Licensed under the Apache License, Version 2.0 (the "License"); you may not use -this file except in compliance with the License. You may obtain a copy of the -License at http://www.apache.org/licenses/LICENSE-2.0 - -THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED -WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, -MERCHANTABLITY OR NON-INFRINGEMENT. - -See the Apache Version 2.0 License for specific language governing permissions -and limitations under the License. -***************************************************************************** */ -/* global Reflect, Promise */ - -var extendStatics = function(d, b) { - extendStatics = Object.setPrototypeOf || - ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || - function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; - return extendStatics(d, b); -}; - -function __extends(d, b) { - extendStatics(d, b); - function __() { this.constructor = d; } - d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); -} - -var __assign = function() { - __assign = Object.assign || function __assign(t) { - for (var s, i = 1, n = arguments.length; i < n; i++) { - s = arguments[i]; - for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; - } - return t; - } - return __assign.apply(this, arguments); -} - -function __rest(s, e) { - var t = {}; - for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) - t[p] = s[p]; - if (s != null && typeof Object.getOwnPropertySymbols === "function") - for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0) - t[p[i]] = s[p[i]]; - return t; -} - -function __decorate(decorators, target, key, desc) { - var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; - if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); - else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; - return c > 3 && r && Object.defineProperty(target, key, r), r; -} - -function __param(paramIndex, decorator) { - return function (target, key) { decorator(target, key, paramIndex); } -} - -function __metadata(metadataKey, metadataValue) { - if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue); -} - -function __awaiter(thisArg, _arguments, P, generator) { - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -} - -function __generator(thisArg, body) { - var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; - return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; - function verb(n) { return function (v) { return step([n, v]); }; } - function step(op) { - if (f) throw new TypeError("Generator is already executing."); - while (_) try { - if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; - if (y = 0, t) op = [op[0] & 2, t.value]; - switch (op[0]) { - case 0: case 1: t = op; break; - case 4: _.label++; return { value: op[1], done: false }; - case 5: _.label++; y = op[1]; op = [0]; continue; - case 7: op = _.ops.pop(); _.trys.pop(); continue; - default: - if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } - if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } - if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } - if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } - if (t[2]) _.ops.pop(); - _.trys.pop(); continue; - } - op = body.call(thisArg, _); - } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } - if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; - } -} - -function __exportStar(m, exports) { - for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]; -} - -function __values(o) { - var m = typeof Symbol === "function" && o[Symbol.iterator], i = 0; - if (m) return m.call(o); - return { - next: function () { - if (o && i >= o.length) o = void 0; - return { value: o && o[i++], done: !o }; - } - }; -} - -function __read(o, n) { - var m = typeof Symbol === "function" && o[Symbol.iterator]; - if (!m) return o; - var i = m.call(o), r, ar = [], e; - try { - while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value); - } - catch (error) { e = { error: error }; } - finally { - try { - if (r && !r.done && (m = i["return"])) m.call(i); - } - finally { if (e) throw e.error; } - } - return ar; -} - -function __spread() { - for (var ar = [], i = 0; i < arguments.length; i++) - ar = ar.concat(__read(arguments[i])); - return ar; -} - -function __await(v) { - return this instanceof __await ? (this.v = v, this) : new __await(v); -} - -function __asyncGenerator(thisArg, _arguments, generator) { - if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); - var g = generator.apply(thisArg, _arguments || []), i, q = []; - return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; - function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } - function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } - function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } - function fulfill(value) { resume("next", value); } - function reject(value) { resume("throw", value); } - function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } -} - -function __asyncDelegator(o) { - var i, p; - return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i; - function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === "return" } : f ? f(v) : v; } : f; } -} - -function __asyncValues(o) { - if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); - var m = o[Symbol.asyncIterator], i; - return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i); - function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; } - function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); } -} - -function __makeTemplateObject(cooked, raw) { - if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; } - return cooked; -}; - -function __importStar(mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k]; - result.default = mod; - return result; -} - -function __importDefault(mod) { - return (mod && mod.__esModule) ? mod : { default: mod }; -} - - -/***/ }), -/* 2 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; - -var _promise = __webpack_require__(227); - -var _promise2 = _interopRequireDefault(_promise); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -exports.default = function (fn) { - return function () { - var gen = fn.apply(this, arguments); - return new _promise2.default(function (resolve, reject) { - function step(key, arg) { - try { - var info = gen[key](arg); - var value = info.value; - } catch (error) { - reject(error); - return; - } - - if (info.done) { - resolve(value); - } else { - return _promise2.default.resolve(value).then(function (value) { - step("next", value); - }, function (err) { - step("throw", err); - }); - } - } - - return step("next"); - }); - }; -}; - -/***/ }), -/* 3 */ -/***/ (function(module, exports) { - -module.exports = require("util"); - -/***/ }), -/* 4 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.getFirstSuitableFolder = exports.readFirstAvailableStream = exports.makeTempDir = exports.hardlinksWork = exports.writeFilePreservingEol = exports.getFileSizeOnDisk = exports.walk = exports.symlink = exports.find = exports.readJsonAndFile = exports.readJson = exports.readFileAny = exports.hardlinkBulk = exports.copyBulk = exports.unlink = exports.glob = exports.link = exports.chmod = exports.lstat = exports.exists = exports.mkdirp = exports.stat = exports.access = exports.rename = exports.readdir = exports.realpath = exports.readlink = exports.writeFile = exports.open = exports.readFileBuffer = exports.lockQueue = exports.constants = undefined; - -var _asyncToGenerator2; - -function _load_asyncToGenerator() { - return _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(2)); -} - -let buildActionsForCopy = (() => { - var _ref = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (queue, events, possibleExtraneous, reporter) { - - // - let build = (() => { - var _ref5 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (data) { - const src = data.src, - dest = data.dest, - type = data.type; - - const onFresh = data.onFresh || noop; - const onDone = data.onDone || noop; - - // TODO https://github.com/yarnpkg/yarn/issues/3751 - // related to bundled dependencies handling - if (files.has(dest.toLowerCase())) { - reporter.verbose(`The case-insensitive file ${dest} shouldn't be copied twice in one bulk copy`); - } else { - files.add(dest.toLowerCase()); - } - - if (type === 'symlink') { - yield mkdirp((_path || _load_path()).default.dirname(dest)); - onFresh(); - actions.symlink.push({ - dest, - linkname: src - }); - onDone(); - return; - } - - if (events.ignoreBasenames.indexOf((_path || _load_path()).default.basename(src)) >= 0) { - // ignored file - return; - } - - const srcStat = yield lstat(src); - let srcFiles; - - if (srcStat.isDirectory()) { - srcFiles = yield readdir(src); - } - - let destStat; - try { - // try accessing the destination - destStat = yield lstat(dest); - } catch (e) { - // proceed if destination doesn't exist, otherwise error - if (e.code !== 'ENOENT') { - throw e; - } - } - - // if destination exists - if (destStat) { - const bothSymlinks = srcStat.isSymbolicLink() && destStat.isSymbolicLink(); - const bothFolders = srcStat.isDirectory() && destStat.isDirectory(); - const bothFiles = srcStat.isFile() && destStat.isFile(); - - // EINVAL access errors sometimes happen which shouldn't because node shouldn't be giving - // us modes that aren't valid. investigate this, it's generally safe to proceed. - - /* if (srcStat.mode !== destStat.mode) { - try { - await access(dest, srcStat.mode); - } catch (err) {} - } */ - - if (bothFiles && artifactFiles.has(dest)) { - // this file gets changed during build, likely by a custom install script. Don't bother checking it. - onDone(); - reporter.verbose(reporter.lang('verboseFileSkipArtifact', src)); - return; - } - - if (bothFiles && srcStat.size === destStat.size && (0, (_fsNormalized || _load_fsNormalized()).fileDatesEqual)(srcStat.mtime, destStat.mtime)) { - // we can safely assume this is the same file - onDone(); - reporter.verbose(reporter.lang('verboseFileSkip', src, dest, srcStat.size, +srcStat.mtime)); - return; - } - - if (bothSymlinks) { - const srcReallink = yield readlink(src); - if (srcReallink === (yield readlink(dest))) { - // if both symlinks are the same then we can continue on - onDone(); - reporter.verbose(reporter.lang('verboseFileSkipSymlink', src, dest, srcReallink)); - return; - } - } - - if (bothFolders) { - // mark files that aren't in this folder as possibly extraneous - const destFiles = yield readdir(dest); - invariant(srcFiles, 'src files not initialised'); - - for (var _iterator4 = destFiles, _isArray4 = Array.isArray(_iterator4), _i4 = 0, _iterator4 = _isArray4 ? _iterator4 : _iterator4[Symbol.iterator]();;) { - var _ref6; - - if (_isArray4) { - if (_i4 >= _iterator4.length) break; - _ref6 = _iterator4[_i4++]; - } else { - _i4 = _iterator4.next(); - if (_i4.done) break; - _ref6 = _i4.value; - } - - const file = _ref6; - - if (srcFiles.indexOf(file) < 0) { - const loc = (_path || _load_path()).default.join(dest, file); - possibleExtraneous.add(loc); - - if ((yield lstat(loc)).isDirectory()) { - for (var _iterator5 = yield readdir(loc), _isArray5 = Array.isArray(_iterator5), _i5 = 0, _iterator5 = _isArray5 ? _iterator5 : _iterator5[Symbol.iterator]();;) { - var _ref7; - - if (_isArray5) { - if (_i5 >= _iterator5.length) break; - _ref7 = _iterator5[_i5++]; - } else { - _i5 = _iterator5.next(); - if (_i5.done) break; - _ref7 = _i5.value; - } - - const file = _ref7; - - possibleExtraneous.add((_path || _load_path()).default.join(loc, file)); - } - } - } - } - } - } - - if (destStat && destStat.isSymbolicLink()) { - yield (0, (_fsNormalized || _load_fsNormalized()).unlink)(dest); - destStat = null; - } - - if (srcStat.isSymbolicLink()) { - onFresh(); - const linkname = yield readlink(src); - actions.symlink.push({ - dest, - linkname - }); - onDone(); - } else if (srcStat.isDirectory()) { - if (!destStat) { - reporter.verbose(reporter.lang('verboseFileFolder', dest)); - yield mkdirp(dest); - } - - const destParts = dest.split((_path || _load_path()).default.sep); - while (destParts.length) { - files.add(destParts.join((_path || _load_path()).default.sep).toLowerCase()); - destParts.pop(); - } - - // push all files to queue - invariant(srcFiles, 'src files not initialised'); - let remaining = srcFiles.length; - if (!remaining) { - onDone(); - } - for (var _iterator6 = srcFiles, _isArray6 = Array.isArray(_iterator6), _i6 = 0, _iterator6 = _isArray6 ? _iterator6 : _iterator6[Symbol.iterator]();;) { - var _ref8; - - if (_isArray6) { - if (_i6 >= _iterator6.length) break; - _ref8 = _iterator6[_i6++]; - } else { - _i6 = _iterator6.next(); - if (_i6.done) break; - _ref8 = _i6.value; - } - - const file = _ref8; - - queue.push({ - dest: (_path || _load_path()).default.join(dest, file), - onFresh, - onDone: function (_onDone) { - function onDone() { - return _onDone.apply(this, arguments); - } - - onDone.toString = function () { - return _onDone.toString(); - }; - - return onDone; - }(function () { - if (--remaining === 0) { - onDone(); - } - }), - src: (_path || _load_path()).default.join(src, file) - }); - } - } else if (srcStat.isFile()) { - onFresh(); - actions.file.push({ - src, - dest, - atime: srcStat.atime, - mtime: srcStat.mtime, - mode: srcStat.mode - }); - onDone(); - } else { - throw new Error(`unsure how to copy this: ${src}`); - } - }); - - return function build(_x5) { - return _ref5.apply(this, arguments); - }; - })(); - - const artifactFiles = new Set(events.artifactFiles || []); - const files = new Set(); - - // initialise events - for (var _iterator = queue, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) { - var _ref2; - - if (_isArray) { - if (_i >= _iterator.length) break; - _ref2 = _iterator[_i++]; - } else { - _i = _iterator.next(); - if (_i.done) break; - _ref2 = _i.value; - } - - const item = _ref2; - - const onDone = item.onDone; - item.onDone = function () { - events.onProgress(item.dest); - if (onDone) { - onDone(); - } - }; - } - events.onStart(queue.length); - - // start building actions - const actions = { - file: [], - symlink: [], - link: [] - }; - - // custom concurrency logic as we're always executing stacks of CONCURRENT_QUEUE_ITEMS queue items - // at a time due to the requirement to push items onto the queue - while (queue.length) { - const items = queue.splice(0, CONCURRENT_QUEUE_ITEMS); - yield Promise.all(items.map(build)); - } - - // simulate the existence of some files to prevent considering them extraneous - for (var _iterator2 = artifactFiles, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) { - var _ref3; - - if (_isArray2) { - if (_i2 >= _iterator2.length) break; - _ref3 = _iterator2[_i2++]; - } else { - _i2 = _iterator2.next(); - if (_i2.done) break; - _ref3 = _i2.value; - } - - const file = _ref3; - - if (possibleExtraneous.has(file)) { - reporter.verbose(reporter.lang('verboseFilePhantomExtraneous', file)); - possibleExtraneous.delete(file); - } - } - - for (var _iterator3 = possibleExtraneous, _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : _iterator3[Symbol.iterator]();;) { - var _ref4; - - if (_isArray3) { - if (_i3 >= _iterator3.length) break; - _ref4 = _iterator3[_i3++]; - } else { - _i3 = _iterator3.next(); - if (_i3.done) break; - _ref4 = _i3.value; - } - - const loc = _ref4; - - if (files.has(loc.toLowerCase())) { - possibleExtraneous.delete(loc); - } - } - - return actions; - }); - - return function buildActionsForCopy(_x, _x2, _x3, _x4) { - return _ref.apply(this, arguments); - }; -})(); - -let buildActionsForHardlink = (() => { - var _ref9 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (queue, events, possibleExtraneous, reporter) { - - // - let build = (() => { - var _ref13 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (data) { - const src = data.src, - dest = data.dest; - - const onFresh = data.onFresh || noop; - const onDone = data.onDone || noop; - if (files.has(dest.toLowerCase())) { - // Fixes issue https://github.com/yarnpkg/yarn/issues/2734 - // When bulk hardlinking we have A -> B structure that we want to hardlink to A1 -> B1, - // package-linker passes that modules A1 and B1 need to be hardlinked, - // the recursive linking algorithm of A1 ends up scheduling files in B1 to be linked twice which will case - // an exception. - onDone(); - return; - } - files.add(dest.toLowerCase()); - - if (events.ignoreBasenames.indexOf((_path || _load_path()).default.basename(src)) >= 0) { - // ignored file - return; - } - - const srcStat = yield lstat(src); - let srcFiles; - - if (srcStat.isDirectory()) { - srcFiles = yield readdir(src); - } - - const destExists = yield exists(dest); - if (destExists) { - const destStat = yield lstat(dest); - - const bothSymlinks = srcStat.isSymbolicLink() && destStat.isSymbolicLink(); - const bothFolders = srcStat.isDirectory() && destStat.isDirectory(); - const bothFiles = srcStat.isFile() && destStat.isFile(); - - if (srcStat.mode !== destStat.mode) { - try { - yield access(dest, srcStat.mode); - } catch (err) { - // EINVAL access errors sometimes happen which shouldn't because node shouldn't be giving - // us modes that aren't valid. investigate this, it's generally safe to proceed. - reporter.verbose(err); - } - } - - if (bothFiles && artifactFiles.has(dest)) { - // this file gets changed during build, likely by a custom install script. Don't bother checking it. - onDone(); - reporter.verbose(reporter.lang('verboseFileSkipArtifact', src)); - return; - } - - // correct hardlink - if (bothFiles && srcStat.ino !== null && srcStat.ino === destStat.ino) { - onDone(); - reporter.verbose(reporter.lang('verboseFileSkip', src, dest, srcStat.ino)); - return; - } - - if (bothSymlinks) { - const srcReallink = yield readlink(src); - if (srcReallink === (yield readlink(dest))) { - // if both symlinks are the same then we can continue on - onDone(); - reporter.verbose(reporter.lang('verboseFileSkipSymlink', src, dest, srcReallink)); - return; - } - } - - if (bothFolders) { - // mark files that aren't in this folder as possibly extraneous - const destFiles = yield readdir(dest); - invariant(srcFiles, 'src files not initialised'); - - for (var _iterator10 = destFiles, _isArray10 = Array.isArray(_iterator10), _i10 = 0, _iterator10 = _isArray10 ? _iterator10 : _iterator10[Symbol.iterator]();;) { - var _ref14; - - if (_isArray10) { - if (_i10 >= _iterator10.length) break; - _ref14 = _iterator10[_i10++]; - } else { - _i10 = _iterator10.next(); - if (_i10.done) break; - _ref14 = _i10.value; - } - - const file = _ref14; - - if (srcFiles.indexOf(file) < 0) { - const loc = (_path || _load_path()).default.join(dest, file); - possibleExtraneous.add(loc); - - if ((yield lstat(loc)).isDirectory()) { - for (var _iterator11 = yield readdir(loc), _isArray11 = Array.isArray(_iterator11), _i11 = 0, _iterator11 = _isArray11 ? _iterator11 : _iterator11[Symbol.iterator]();;) { - var _ref15; - - if (_isArray11) { - if (_i11 >= _iterator11.length) break; - _ref15 = _iterator11[_i11++]; - } else { - _i11 = _iterator11.next(); - if (_i11.done) break; - _ref15 = _i11.value; - } - - const file = _ref15; - - possibleExtraneous.add((_path || _load_path()).default.join(loc, file)); - } - } - } - } - } - } - - if (srcStat.isSymbolicLink()) { - onFresh(); - const linkname = yield readlink(src); - actions.symlink.push({ - dest, - linkname - }); - onDone(); - } else if (srcStat.isDirectory()) { - reporter.verbose(reporter.lang('verboseFileFolder', dest)); - yield mkdirp(dest); - - const destParts = dest.split((_path || _load_path()).default.sep); - while (destParts.length) { - files.add(destParts.join((_path || _load_path()).default.sep).toLowerCase()); - destParts.pop(); - } - - // push all files to queue - invariant(srcFiles, 'src files not initialised'); - let remaining = srcFiles.length; - if (!remaining) { - onDone(); - } - for (var _iterator12 = srcFiles, _isArray12 = Array.isArray(_iterator12), _i12 = 0, _iterator12 = _isArray12 ? _iterator12 : _iterator12[Symbol.iterator]();;) { - var _ref16; - - if (_isArray12) { - if (_i12 >= _iterator12.length) break; - _ref16 = _iterator12[_i12++]; - } else { - _i12 = _iterator12.next(); - if (_i12.done) break; - _ref16 = _i12.value; - } - - const file = _ref16; - - queue.push({ - onFresh, - src: (_path || _load_path()).default.join(src, file), - dest: (_path || _load_path()).default.join(dest, file), - onDone: function (_onDone2) { - function onDone() { - return _onDone2.apply(this, arguments); - } - - onDone.toString = function () { - return _onDone2.toString(); - }; - - return onDone; - }(function () { - if (--remaining === 0) { - onDone(); - } - }) - }); - } - } else if (srcStat.isFile()) { - onFresh(); - actions.link.push({ - src, - dest, - removeDest: destExists - }); - onDone(); - } else { - throw new Error(`unsure how to copy this: ${src}`); - } - }); - - return function build(_x10) { - return _ref13.apply(this, arguments); - }; - })(); - - const artifactFiles = new Set(events.artifactFiles || []); - const files = new Set(); - - // initialise events - for (var _iterator7 = queue, _isArray7 = Array.isArray(_iterator7), _i7 = 0, _iterator7 = _isArray7 ? _iterator7 : _iterator7[Symbol.iterator]();;) { - var _ref10; - - if (_isArray7) { - if (_i7 >= _iterator7.length) break; - _ref10 = _iterator7[_i7++]; - } else { - _i7 = _iterator7.next(); - if (_i7.done) break; - _ref10 = _i7.value; - } - - const item = _ref10; - - const onDone = item.onDone || noop; - item.onDone = function () { - events.onProgress(item.dest); - onDone(); - }; - } - events.onStart(queue.length); - - // start building actions - const actions = { - file: [], - symlink: [], - link: [] - }; - - // custom concurrency logic as we're always executing stacks of CONCURRENT_QUEUE_ITEMS queue items - // at a time due to the requirement to push items onto the queue - while (queue.length) { - const items = queue.splice(0, CONCURRENT_QUEUE_ITEMS); - yield Promise.all(items.map(build)); - } - - // simulate the existence of some files to prevent considering them extraneous - for (var _iterator8 = artifactFiles, _isArray8 = Array.isArray(_iterator8), _i8 = 0, _iterator8 = _isArray8 ? _iterator8 : _iterator8[Symbol.iterator]();;) { - var _ref11; - - if (_isArray8) { - if (_i8 >= _iterator8.length) break; - _ref11 = _iterator8[_i8++]; - } else { - _i8 = _iterator8.next(); - if (_i8.done) break; - _ref11 = _i8.value; - } - - const file = _ref11; - - if (possibleExtraneous.has(file)) { - reporter.verbose(reporter.lang('verboseFilePhantomExtraneous', file)); - possibleExtraneous.delete(file); - } - } - - for (var _iterator9 = possibleExtraneous, _isArray9 = Array.isArray(_iterator9), _i9 = 0, _iterator9 = _isArray9 ? _iterator9 : _iterator9[Symbol.iterator]();;) { - var _ref12; - - if (_isArray9) { - if (_i9 >= _iterator9.length) break; - _ref12 = _iterator9[_i9++]; - } else { - _i9 = _iterator9.next(); - if (_i9.done) break; - _ref12 = _i9.value; - } - - const loc = _ref12; - - if (files.has(loc.toLowerCase())) { - possibleExtraneous.delete(loc); - } - } - - return actions; - }); - - return function buildActionsForHardlink(_x6, _x7, _x8, _x9) { - return _ref9.apply(this, arguments); - }; -})(); - -let copyBulk = exports.copyBulk = (() => { - var _ref17 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (queue, reporter, _events) { - const events = { - onStart: _events && _events.onStart || noop, - onProgress: _events && _events.onProgress || noop, - possibleExtraneous: _events ? _events.possibleExtraneous : new Set(), - ignoreBasenames: _events && _events.ignoreBasenames || [], - artifactFiles: _events && _events.artifactFiles || [] - }; - - const actions = yield buildActionsForCopy(queue, events, events.possibleExtraneous, reporter); - events.onStart(actions.file.length + actions.symlink.length + actions.link.length); - - const fileActions = actions.file; - - const currentlyWriting = new Map(); - - yield (_promise || _load_promise()).queue(fileActions, (() => { - var _ref18 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (data) { - let writePromise; - while (writePromise = currentlyWriting.get(data.dest)) { - yield writePromise; - } - - reporter.verbose(reporter.lang('verboseFileCopy', data.src, data.dest)); - const copier = (0, (_fsNormalized || _load_fsNormalized()).copyFile)(data, function () { - return currentlyWriting.delete(data.dest); - }); - currentlyWriting.set(data.dest, copier); - events.onProgress(data.dest); - return copier; - }); - - return function (_x14) { - return _ref18.apply(this, arguments); - }; - })(), CONCURRENT_QUEUE_ITEMS); - - // we need to copy symlinks last as they could reference files we were copying - const symlinkActions = actions.symlink; - yield (_promise || _load_promise()).queue(symlinkActions, function (data) { - const linkname = (_path || _load_path()).default.resolve((_path || _load_path()).default.dirname(data.dest), data.linkname); - reporter.verbose(reporter.lang('verboseFileSymlink', data.dest, linkname)); - return symlink(linkname, data.dest); - }); - }); - - return function copyBulk(_x11, _x12, _x13) { - return _ref17.apply(this, arguments); - }; -})(); - -let hardlinkBulk = exports.hardlinkBulk = (() => { - var _ref19 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (queue, reporter, _events) { - const events = { - onStart: _events && _events.onStart || noop, - onProgress: _events && _events.onProgress || noop, - possibleExtraneous: _events ? _events.possibleExtraneous : new Set(), - artifactFiles: _events && _events.artifactFiles || [], - ignoreBasenames: [] - }; - - const actions = yield buildActionsForHardlink(queue, events, events.possibleExtraneous, reporter); - events.onStart(actions.file.length + actions.symlink.length + actions.link.length); - - const fileActions = actions.link; - - yield (_promise || _load_promise()).queue(fileActions, (() => { - var _ref20 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (data) { - reporter.verbose(reporter.lang('verboseFileLink', data.src, data.dest)); - if (data.removeDest) { - yield (0, (_fsNormalized || _load_fsNormalized()).unlink)(data.dest); - } - yield link(data.src, data.dest); - }); - - return function (_x18) { - return _ref20.apply(this, arguments); - }; - })(), CONCURRENT_QUEUE_ITEMS); - - // we need to copy symlinks last as they could reference files we were copying - const symlinkActions = actions.symlink; - yield (_promise || _load_promise()).queue(symlinkActions, function (data) { - const linkname = (_path || _load_path()).default.resolve((_path || _load_path()).default.dirname(data.dest), data.linkname); - reporter.verbose(reporter.lang('verboseFileSymlink', data.dest, linkname)); - return symlink(linkname, data.dest); - }); - }); - - return function hardlinkBulk(_x15, _x16, _x17) { - return _ref19.apply(this, arguments); - }; -})(); - -let readFileAny = exports.readFileAny = (() => { - var _ref21 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (files) { - for (var _iterator13 = files, _isArray13 = Array.isArray(_iterator13), _i13 = 0, _iterator13 = _isArray13 ? _iterator13 : _iterator13[Symbol.iterator]();;) { - var _ref22; - - if (_isArray13) { - if (_i13 >= _iterator13.length) break; - _ref22 = _iterator13[_i13++]; - } else { - _i13 = _iterator13.next(); - if (_i13.done) break; - _ref22 = _i13.value; - } - - const file = _ref22; - - if (yield exists(file)) { - return readFile(file); - } - } - return null; - }); - - return function readFileAny(_x19) { - return _ref21.apply(this, arguments); - }; -})(); - -let readJson = exports.readJson = (() => { - var _ref23 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (loc) { - return (yield readJsonAndFile(loc)).object; - }); - - return function readJson(_x20) { - return _ref23.apply(this, arguments); - }; -})(); - -let readJsonAndFile = exports.readJsonAndFile = (() => { - var _ref24 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (loc) { - const file = yield readFile(loc); - try { - return { - object: (0, (_map || _load_map()).default)(JSON.parse(stripBOM(file))), - content: file - }; - } catch (err) { - err.message = `${loc}: ${err.message}`; - throw err; - } - }); - - return function readJsonAndFile(_x21) { - return _ref24.apply(this, arguments); - }; -})(); - -let find = exports.find = (() => { - var _ref25 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (filename, dir) { - const parts = dir.split((_path || _load_path()).default.sep); - - while (parts.length) { - const loc = parts.concat(filename).join((_path || _load_path()).default.sep); - - if (yield exists(loc)) { - return loc; - } else { - parts.pop(); - } - } - - return false; - }); - - return function find(_x22, _x23) { - return _ref25.apply(this, arguments); - }; -})(); - -let symlink = exports.symlink = (() => { - var _ref26 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (src, dest) { - if (process.platform !== 'win32') { - // use relative paths otherwise which will be retained if the directory is moved - src = (_path || _load_path()).default.relative((_path || _load_path()).default.dirname(dest), src); - // When path.relative returns an empty string for the current directory, we should instead use - // '.', which is a valid fs.symlink target. - src = src || '.'; - } - - try { - const stats = yield lstat(dest); - if (stats.isSymbolicLink()) { - const resolved = dest; - if (resolved === src) { - return; - } - } - } catch (err) { - if (err.code !== 'ENOENT') { - throw err; - } - } - - // We use rimraf for unlink which never throws an ENOENT on missing target - yield (0, (_fsNormalized || _load_fsNormalized()).unlink)(dest); - - if (process.platform === 'win32') { - // use directory junctions if possible on win32, this requires absolute paths - yield fsSymlink(src, dest, 'junction'); - } else { - yield fsSymlink(src, dest); - } - }); - - return function symlink(_x24, _x25) { - return _ref26.apply(this, arguments); - }; -})(); - -let walk = exports.walk = (() => { - var _ref27 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (dir, relativeDir, ignoreBasenames = new Set()) { - let files = []; - - let filenames = yield readdir(dir); - if (ignoreBasenames.size) { - filenames = filenames.filter(function (name) { - return !ignoreBasenames.has(name); - }); - } - - for (var _iterator14 = filenames, _isArray14 = Array.isArray(_iterator14), _i14 = 0, _iterator14 = _isArray14 ? _iterator14 : _iterator14[Symbol.iterator]();;) { - var _ref28; - - if (_isArray14) { - if (_i14 >= _iterator14.length) break; - _ref28 = _iterator14[_i14++]; - } else { - _i14 = _iterator14.next(); - if (_i14.done) break; - _ref28 = _i14.value; - } - - const name = _ref28; - - const relative = relativeDir ? (_path || _load_path()).default.join(relativeDir, name) : name; - const loc = (_path || _load_path()).default.join(dir, name); - const stat = yield lstat(loc); - - files.push({ - relative, - basename: name, - absolute: loc, - mtime: +stat.mtime - }); - - if (stat.isDirectory()) { - files = files.concat((yield walk(loc, relative, ignoreBasenames))); - } - } - - return files; - }); - - return function walk(_x26, _x27) { - return _ref27.apply(this, arguments); - }; -})(); - -let getFileSizeOnDisk = exports.getFileSizeOnDisk = (() => { - var _ref29 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (loc) { - const stat = yield lstat(loc); - const size = stat.size, - blockSize = stat.blksize; - - - return Math.ceil(size / blockSize) * blockSize; - }); - - return function getFileSizeOnDisk(_x28) { - return _ref29.apply(this, arguments); - }; -})(); - -let getEolFromFile = (() => { - var _ref30 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (path) { - if (!(yield exists(path))) { - return undefined; - } - - const buffer = yield readFileBuffer(path); - - for (let i = 0; i < buffer.length; ++i) { - if (buffer[i] === cr) { - return '\r\n'; - } - if (buffer[i] === lf) { - return '\n'; - } - } - return undefined; - }); - - return function getEolFromFile(_x29) { - return _ref30.apply(this, arguments); - }; -})(); - -let writeFilePreservingEol = exports.writeFilePreservingEol = (() => { - var _ref31 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (path, data) { - const eol = (yield getEolFromFile(path)) || (_os || _load_os()).default.EOL; - if (eol !== '\n') { - data = data.replace(/\n/g, eol); - } - yield writeFile(path, data); - }); - - return function writeFilePreservingEol(_x30, _x31) { - return _ref31.apply(this, arguments); - }; -})(); - -let hardlinksWork = exports.hardlinksWork = (() => { - var _ref32 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (dir) { - const filename = 'test-file' + Math.random(); - const file = (_path || _load_path()).default.join(dir, filename); - const fileLink = (_path || _load_path()).default.join(dir, filename + '-link'); - try { - yield writeFile(file, 'test'); - yield link(file, fileLink); - } catch (err) { - return false; - } finally { - yield (0, (_fsNormalized || _load_fsNormalized()).unlink)(file); - yield (0, (_fsNormalized || _load_fsNormalized()).unlink)(fileLink); - } - return true; - }); - - return function hardlinksWork(_x32) { - return _ref32.apply(this, arguments); - }; -})(); - -// not a strict polyfill for Node's fs.mkdtemp - - -let makeTempDir = exports.makeTempDir = (() => { - var _ref33 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (prefix) { - const dir = (_path || _load_path()).default.join((_os || _load_os()).default.tmpdir(), `yarn-${prefix || ''}-${Date.now()}-${Math.random()}`); - yield (0, (_fsNormalized || _load_fsNormalized()).unlink)(dir); - yield mkdirp(dir); - return dir; - }); - - return function makeTempDir(_x33) { - return _ref33.apply(this, arguments); - }; -})(); - -let readFirstAvailableStream = exports.readFirstAvailableStream = (() => { - var _ref34 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (paths) { - for (var _iterator15 = paths, _isArray15 = Array.isArray(_iterator15), _i15 = 0, _iterator15 = _isArray15 ? _iterator15 : _iterator15[Symbol.iterator]();;) { - var _ref35; - - if (_isArray15) { - if (_i15 >= _iterator15.length) break; - _ref35 = _iterator15[_i15++]; - } else { - _i15 = _iterator15.next(); - if (_i15.done) break; - _ref35 = _i15.value; - } - - const path = _ref35; - - try { - const fd = yield open(path, 'r'); - return (_fs || _load_fs()).default.createReadStream(path, { fd }); - } catch (err) { - // Try the next one - } - } - return null; - }); - - return function readFirstAvailableStream(_x34) { - return _ref34.apply(this, arguments); - }; -})(); - -let getFirstSuitableFolder = exports.getFirstSuitableFolder = (() => { - var _ref36 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (paths, mode = constants.W_OK | constants.X_OK) { - const result = { - skipped: [], - folder: null - }; - - for (var _iterator16 = paths, _isArray16 = Array.isArray(_iterator16), _i16 = 0, _iterator16 = _isArray16 ? _iterator16 : _iterator16[Symbol.iterator]();;) { - var _ref37; - - if (_isArray16) { - if (_i16 >= _iterator16.length) break; - _ref37 = _iterator16[_i16++]; - } else { - _i16 = _iterator16.next(); - if (_i16.done) break; - _ref37 = _i16.value; - } - - const folder = _ref37; - - try { - yield mkdirp(folder); - yield access(folder, mode); - - result.folder = folder; - - return result; - } catch (error) { - result.skipped.push({ - error, - folder - }); - } - } - return result; - }); - - return function getFirstSuitableFolder(_x35) { - return _ref36.apply(this, arguments); - }; -})(); - -exports.copy = copy; -exports.readFile = readFile; -exports.readFileRaw = readFileRaw; -exports.normalizeOS = normalizeOS; - -var _fs; - -function _load_fs() { - return _fs = _interopRequireDefault(__webpack_require__(5)); -} - -var _glob; - -function _load_glob() { - return _glob = _interopRequireDefault(__webpack_require__(99)); -} - -var _os; - -function _load_os() { - return _os = _interopRequireDefault(__webpack_require__(46)); -} - -var _path; - -function _load_path() { - return _path = _interopRequireDefault(__webpack_require__(0)); -} - -var _blockingQueue; - -function _load_blockingQueue() { - return _blockingQueue = _interopRequireDefault(__webpack_require__(110)); -} - -var _promise; - -function _load_promise() { - return _promise = _interopRequireWildcard(__webpack_require__(50)); -} - -var _promise2; - -function _load_promise2() { - return _promise2 = __webpack_require__(50); -} - -var _map; - -function _load_map() { - return _map = _interopRequireDefault(__webpack_require__(29)); -} - -var _fsNormalized; - -function _load_fsNormalized() { - return _fsNormalized = __webpack_require__(218); -} - -function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -const constants = exports.constants = typeof (_fs || _load_fs()).default.constants !== 'undefined' ? (_fs || _load_fs()).default.constants : { - R_OK: (_fs || _load_fs()).default.R_OK, - W_OK: (_fs || _load_fs()).default.W_OK, - X_OK: (_fs || _load_fs()).default.X_OK -}; - -const lockQueue = exports.lockQueue = new (_blockingQueue || _load_blockingQueue()).default('fs lock'); - -const readFileBuffer = exports.readFileBuffer = (0, (_promise2 || _load_promise2()).promisify)((_fs || _load_fs()).default.readFile); -const open = exports.open = (0, (_promise2 || _load_promise2()).promisify)((_fs || _load_fs()).default.open); -const writeFile = exports.writeFile = (0, (_promise2 || _load_promise2()).promisify)((_fs || _load_fs()).default.writeFile); -const readlink = exports.readlink = (0, (_promise2 || _load_promise2()).promisify)((_fs || _load_fs()).default.readlink); -const realpath = exports.realpath = (0, (_promise2 || _load_promise2()).promisify)((_fs || _load_fs()).default.realpath); -const readdir = exports.readdir = (0, (_promise2 || _load_promise2()).promisify)((_fs || _load_fs()).default.readdir); -const rename = exports.rename = (0, (_promise2 || _load_promise2()).promisify)((_fs || _load_fs()).default.rename); -const access = exports.access = (0, (_promise2 || _load_promise2()).promisify)((_fs || _load_fs()).default.access); -const stat = exports.stat = (0, (_promise2 || _load_promise2()).promisify)((_fs || _load_fs()).default.stat); -const mkdirp = exports.mkdirp = (0, (_promise2 || _load_promise2()).promisify)(__webpack_require__(145)); -const exists = exports.exists = (0, (_promise2 || _load_promise2()).promisify)((_fs || _load_fs()).default.exists, true); -const lstat = exports.lstat = (0, (_promise2 || _load_promise2()).promisify)((_fs || _load_fs()).default.lstat); -const chmod = exports.chmod = (0, (_promise2 || _load_promise2()).promisify)((_fs || _load_fs()).default.chmod); -const link = exports.link = (0, (_promise2 || _load_promise2()).promisify)((_fs || _load_fs()).default.link); -const glob = exports.glob = (0, (_promise2 || _load_promise2()).promisify)((_glob || _load_glob()).default); -exports.unlink = (_fsNormalized || _load_fsNormalized()).unlink; - -// fs.copyFile uses the native file copying instructions on the system, performing much better -// than any JS-based solution and consumes fewer resources. Repeated testing to fine tune the -// concurrency level revealed 128 as the sweet spot on a quad-core, 16 CPU Intel system with SSD. - -const CONCURRENT_QUEUE_ITEMS = (_fs || _load_fs()).default.copyFile ? 128 : 4; - -const fsSymlink = (0, (_promise2 || _load_promise2()).promisify)((_fs || _load_fs()).default.symlink); -const invariant = __webpack_require__(9); -const stripBOM = __webpack_require__(160); - -const noop = () => {}; - -function copy(src, dest, reporter) { - return copyBulk([{ src, dest }], reporter); -} - -function _readFile(loc, encoding) { - return new Promise((resolve, reject) => { - (_fs || _load_fs()).default.readFile(loc, encoding, function (err, content) { - if (err) { - reject(err); - } else { - resolve(content); - } - }); - }); -} - -function readFile(loc) { - return _readFile(loc, 'utf8').then(normalizeOS); -} - -function readFileRaw(loc) { - return _readFile(loc, 'binary'); -} - -function normalizeOS(body) { - return body.replace(/\r\n/g, '\n'); -} - -const cr = '\r'.charCodeAt(0); -const lf = '\n'.charCodeAt(0); - -/***/ }), -/* 5 */ -/***/ (function(module, exports) { - -module.exports = require("fs"); - -/***/ }), -/* 6 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -class MessageError extends Error { - constructor(msg, code) { - super(msg); - this.code = code; - } - -} - -exports.MessageError = MessageError; -class ProcessSpawnError extends MessageError { - constructor(msg, code, process) { - super(msg, code); - this.process = process; - } - -} - -exports.ProcessSpawnError = ProcessSpawnError; -class SecurityError extends MessageError {} - -exports.SecurityError = SecurityError; -class ProcessTermError extends MessageError {} - -exports.ProcessTermError = ProcessTermError; -class ResponseError extends Error { - constructor(msg, responseCode) { - super(msg); - this.responseCode = responseCode; - } - -} - -exports.ResponseError = ResponseError; -class OneTimePasswordError extends Error {} -exports.OneTimePasswordError = OneTimePasswordError; - -/***/ }), -/* 7 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return Subscriber; }); -/* unused harmony export SafeSubscriber */ -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_tslib__ = __webpack_require__(1); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__util_isFunction__ = __webpack_require__(154); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__Observer__ = __webpack_require__(420); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__Subscription__ = __webpack_require__(25); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__internal_symbol_rxSubscriber__ = __webpack_require__(321); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__config__ = __webpack_require__(185); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__util_hostReportError__ = __webpack_require__(323); -/** PURE_IMPORTS_START tslib,_util_isFunction,_Observer,_Subscription,_internal_symbol_rxSubscriber,_config,_util_hostReportError PURE_IMPORTS_END */ - - - - - - - -var Subscriber = /*@__PURE__*/ (function (_super) { - __WEBPACK_IMPORTED_MODULE_0_tslib__["a" /* __extends */](Subscriber, _super); - function Subscriber(destinationOrNext, error, complete) { - var _this = _super.call(this) || this; - _this.syncErrorValue = null; - _this.syncErrorThrown = false; - _this.syncErrorThrowable = false; - _this.isStopped = false; - _this._parentSubscription = null; - switch (arguments.length) { - case 0: - _this.destination = __WEBPACK_IMPORTED_MODULE_2__Observer__["a" /* empty */]; - break; - case 1: - if (!destinationOrNext) { - _this.destination = __WEBPACK_IMPORTED_MODULE_2__Observer__["a" /* empty */]; - break; - } - if (typeof destinationOrNext === 'object') { - if (destinationOrNext instanceof Subscriber) { - _this.syncErrorThrowable = destinationOrNext.syncErrorThrowable; - _this.destination = destinationOrNext; - destinationOrNext.add(_this); - } - else { - _this.syncErrorThrowable = true; - _this.destination = new SafeSubscriber(_this, destinationOrNext); - } - break; - } - default: - _this.syncErrorThrowable = true; - _this.destination = new SafeSubscriber(_this, destinationOrNext, error, complete); - break; - } - return _this; - } - Subscriber.prototype[__WEBPACK_IMPORTED_MODULE_4__internal_symbol_rxSubscriber__["a" /* rxSubscriber */]] = function () { return this; }; - Subscriber.create = function (next, error, complete) { - var subscriber = new Subscriber(next, error, complete); - subscriber.syncErrorThrowable = false; - return subscriber; - }; - Subscriber.prototype.next = function (value) { - if (!this.isStopped) { - this._next(value); - } - }; - Subscriber.prototype.error = function (err) { - if (!this.isStopped) { - this.isStopped = true; - this._error(err); - } - }; - Subscriber.prototype.complete = function () { - if (!this.isStopped) { - this.isStopped = true; - this._complete(); - } - }; - Subscriber.prototype.unsubscribe = function () { - if (this.closed) { - return; - } - this.isStopped = true; - _super.prototype.unsubscribe.call(this); - }; - Subscriber.prototype._next = function (value) { - this.destination.next(value); - }; - Subscriber.prototype._error = function (err) { - this.destination.error(err); - this.unsubscribe(); - }; - Subscriber.prototype._complete = function () { - this.destination.complete(); - this.unsubscribe(); - }; - Subscriber.prototype._unsubscribeAndRecycle = function () { - var _a = this, _parent = _a._parent, _parents = _a._parents; - this._parent = null; - this._parents = null; - this.unsubscribe(); - this.closed = false; - this.isStopped = false; - this._parent = _parent; - this._parents = _parents; - this._parentSubscription = null; - return this; - }; - return Subscriber; -}(__WEBPACK_IMPORTED_MODULE_3__Subscription__["a" /* Subscription */])); - -var SafeSubscriber = /*@__PURE__*/ (function (_super) { - __WEBPACK_IMPORTED_MODULE_0_tslib__["a" /* __extends */](SafeSubscriber, _super); - function SafeSubscriber(_parentSubscriber, observerOrNext, error, complete) { - var _this = _super.call(this) || this; - _this._parentSubscriber = _parentSubscriber; - var next; - var context = _this; - if (__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__util_isFunction__["a" /* isFunction */])(observerOrNext)) { - next = observerOrNext; - } - else if (observerOrNext) { - next = observerOrNext.next; - error = observerOrNext.error; - complete = observerOrNext.complete; - if (observerOrNext !== __WEBPACK_IMPORTED_MODULE_2__Observer__["a" /* empty */]) { - context = Object.create(observerOrNext); - if (__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__util_isFunction__["a" /* isFunction */])(context.unsubscribe)) { - _this.add(context.unsubscribe.bind(context)); - } - context.unsubscribe = _this.unsubscribe.bind(_this); - } - } - _this._context = context; - _this._next = next; - _this._error = error; - _this._complete = complete; - return _this; - } - SafeSubscriber.prototype.next = function (value) { - if (!this.isStopped && this._next) { - var _parentSubscriber = this._parentSubscriber; - if (!__WEBPACK_IMPORTED_MODULE_5__config__["a" /* config */].useDeprecatedSynchronousErrorHandling || !_parentSubscriber.syncErrorThrowable) { - this.__tryOrUnsub(this._next, value); - } - else if (this.__tryOrSetError(_parentSubscriber, this._next, value)) { - this.unsubscribe(); - } - } - }; - SafeSubscriber.prototype.error = function (err) { - if (!this.isStopped) { - var _parentSubscriber = this._parentSubscriber; - var useDeprecatedSynchronousErrorHandling = __WEBPACK_IMPORTED_MODULE_5__config__["a" /* config */].useDeprecatedSynchronousErrorHandling; - if (this._error) { - if (!useDeprecatedSynchronousErrorHandling || !_parentSubscriber.syncErrorThrowable) { - this.__tryOrUnsub(this._error, err); - this.unsubscribe(); - } - else { - this.__tryOrSetError(_parentSubscriber, this._error, err); - this.unsubscribe(); - } - } - else if (!_parentSubscriber.syncErrorThrowable) { - this.unsubscribe(); - if (useDeprecatedSynchronousErrorHandling) { - throw err; - } - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_6__util_hostReportError__["a" /* hostReportError */])(err); - } - else { - if (useDeprecatedSynchronousErrorHandling) { - _parentSubscriber.syncErrorValue = err; - _parentSubscriber.syncErrorThrown = true; - } - else { - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_6__util_hostReportError__["a" /* hostReportError */])(err); - } - this.unsubscribe(); - } - } - }; - SafeSubscriber.prototype.complete = function () { - var _this = this; - if (!this.isStopped) { - var _parentSubscriber = this._parentSubscriber; - if (this._complete) { - var wrappedComplete = function () { return _this._complete.call(_this._context); }; - if (!__WEBPACK_IMPORTED_MODULE_5__config__["a" /* config */].useDeprecatedSynchronousErrorHandling || !_parentSubscriber.syncErrorThrowable) { - this.__tryOrUnsub(wrappedComplete); - this.unsubscribe(); - } - else { - this.__tryOrSetError(_parentSubscriber, wrappedComplete); - this.unsubscribe(); - } - } - else { - this.unsubscribe(); - } - } - }; - SafeSubscriber.prototype.__tryOrUnsub = function (fn, value) { - try { - fn.call(this._context, value); - } - catch (err) { - this.unsubscribe(); - if (__WEBPACK_IMPORTED_MODULE_5__config__["a" /* config */].useDeprecatedSynchronousErrorHandling) { - throw err; - } - else { - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_6__util_hostReportError__["a" /* hostReportError */])(err); - } - } - }; - SafeSubscriber.prototype.__tryOrSetError = function (parent, fn, value) { - if (!__WEBPACK_IMPORTED_MODULE_5__config__["a" /* config */].useDeprecatedSynchronousErrorHandling) { - throw new Error('bad call'); - } - try { - fn.call(this._context, value); - } - catch (err) { - if (__WEBPACK_IMPORTED_MODULE_5__config__["a" /* config */].useDeprecatedSynchronousErrorHandling) { - parent.syncErrorValue = err; - parent.syncErrorThrown = true; - return true; - } - else { - __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_6__util_hostReportError__["a" /* hostReportError */])(err); - return true; - } - } - return false; - }; - SafeSubscriber.prototype._unsubscribe = function () { - var _parentSubscriber = this._parentSubscriber; - this._context = null; - this._parentSubscriber = null; - _parentSubscriber.unsubscribe(); - }; - return SafeSubscriber; -}(Subscriber)); - -//# sourceMappingURL=Subscriber.js.map - - -/***/ }), -/* 8 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.getPathKey = getPathKey; -const os = __webpack_require__(46); -const path = __webpack_require__(0); -const userHome = __webpack_require__(67).default; - -var _require = __webpack_require__(225); - -const getCacheDir = _require.getCacheDir, - getConfigDir = _require.getConfigDir, - getDataDir = _require.getDataDir; - -const isWebpackBundle = __webpack_require__(278); - -const DEPENDENCY_TYPES = exports.DEPENDENCY_TYPES = ['devDependencies', 'dependencies', 'optionalDependencies', 'peerDependencies']; -const OWNED_DEPENDENCY_TYPES = exports.OWNED_DEPENDENCY_TYPES = ['devDependencies', 'dependencies', 'optionalDependencies']; - -const RESOLUTIONS = exports.RESOLUTIONS = 'resolutions'; -const MANIFEST_FIELDS = exports.MANIFEST_FIELDS = [RESOLUTIONS, ...DEPENDENCY_TYPES]; - -const SUPPORTED_NODE_VERSIONS = exports.SUPPORTED_NODE_VERSIONS = '^4.8.0 || ^5.7.0 || ^6.2.2 || >=8.0.0'; - -const YARN_REGISTRY = exports.YARN_REGISTRY = 'https://registry.yarnpkg.com'; -const NPM_REGISTRY_RE = exports.NPM_REGISTRY_RE = /https?:\/\/registry\.npmjs\.org/g; - -const YARN_DOCS = exports.YARN_DOCS = 'https://yarnpkg.com/en/docs/cli/'; -const YARN_INSTALLER_SH = exports.YARN_INSTALLER_SH = 'https://yarnpkg.com/install.sh'; -const YARN_INSTALLER_MSI = exports.YARN_INSTALLER_MSI = 'https://yarnpkg.com/latest.msi'; - -const SELF_UPDATE_VERSION_URL = exports.SELF_UPDATE_VERSION_URL = 'https://yarnpkg.com/latest-version'; - -// cache version, bump whenever we make backwards incompatible changes -const CACHE_VERSION = exports.CACHE_VERSION = 6; - -// lockfile version, bump whenever we make backwards incompatible changes -const LOCKFILE_VERSION = exports.LOCKFILE_VERSION = 1; - -// max amount of network requests to perform concurrently -const NETWORK_CONCURRENCY = exports.NETWORK_CONCURRENCY = 8; - -// HTTP timeout used when downloading packages -const NETWORK_TIMEOUT = exports.NETWORK_TIMEOUT = 30 * 1000; // in milliseconds - -// max amount of child processes to execute concurrently -const CHILD_CONCURRENCY = exports.CHILD_CONCURRENCY = 5; - -const REQUIRED_PACKAGE_KEYS = exports.REQUIRED_PACKAGE_KEYS = ['name', 'version', '_uid']; - -function getPreferredCacheDirectories() { - const preferredCacheDirectories = [getCacheDir()]; - - if (process.getuid) { - // $FlowFixMe: process.getuid exists, dammit - preferredCacheDirectories.push(path.join(os.tmpdir(), `.yarn-cache-${process.getuid()}`)); - } - - preferredCacheDirectories.push(path.join(os.tmpdir(), `.yarn-cache`)); - - return preferredCacheDirectories; -} - -const PREFERRED_MODULE_CACHE_DIRECTORIES = exports.PREFERRED_MODULE_CACHE_DIRECTORIES = getPreferredCacheDirectories(); -const CONFIG_DIRECTORY = exports.CONFIG_DIRECTORY = getConfigDir(); -const DATA_DIRECTORY = exports.DATA_DIRECTORY = getDataDir(); -const LINK_REGISTRY_DIRECTORY = exports.LINK_REGISTRY_DIRECTORY = path.join(DATA_DIRECTORY, 'link'); -const GLOBAL_MODULE_DIRECTORY = exports.GLOBAL_MODULE_DIRECTORY = path.join(DATA_DIRECTORY, 'global'); - -const NODE_BIN_PATH = exports.NODE_BIN_PATH = process.execPath; -const YARN_BIN_PATH = exports.YARN_BIN_PATH = getYarnBinPath(); - -// Webpack needs to be configured with node.__dirname/__filename = false -function getYarnBinPath() { - if (isWebpackBundle) { - return __filename; - } else { - return path.join(__dirname, '..', 'bin', 'yarn.js'); - } -} - -const NODE_MODULES_FOLDER = exports.NODE_MODULES_FOLDER = 'node_modules'; -const NODE_PACKAGE_JSON = exports.NODE_PACKAGE_JSON = 'package.json'; - -const PNP_FILENAME = exports.PNP_FILENAME = '.pnp.js'; - -const POSIX_GLOBAL_PREFIX = exports.POSIX_GLOBAL_PREFIX = `${process.env.DESTDIR || ''}/usr/local`; -const FALLBACK_GLOBAL_PREFIX = exports.FALLBACK_GLOBAL_PREFIX = path.join(userHome, '.yarn'); - -const META_FOLDER = exports.META_FOLDER = '.yarn-meta'; -const INTEGRITY_FILENAME = exports.INTEGRITY_FILENAME = '.yarn-integrity'; -const LOCKFILE_FILENAME = exports.LOCKFILE_FILENAME = 'yarn.lock'; -const METADATA_FILENAME = exports.METADATA_FILENAME = '.yarn-metadata.json'; -const TARBALL_FILENAME = exports.TARBALL_FILENAME = '.yarn-tarball.tgz'; -const CLEAN_FILENAME = exports.CLEAN_FILENAME = '.yarnclean'; - -const NPM_LOCK_FILENAME = exports.NPM_LOCK_FILENAME = 'package-lock.json'; -const NPM_SHRINKWRAP_FILENAME = exports.NPM_SHRINKWRAP_FILENAME = 'npm-shrinkwrap.json'; - -const DEFAULT_INDENT = exports.DEFAULT_INDENT = ' '; -const SINGLE_INSTANCE_PORT = exports.SINGLE_INSTANCE_PORT = 31997; -const SINGLE_INSTANCE_FILENAME = exports.SINGLE_INSTANCE_FILENAME = '.yarn-single-instance'; - -const ENV_PATH_KEY = exports.ENV_PATH_KEY = getPathKey(process.platform, process.env); - -function getPathKey(platform, env) { - let pathKey = 'PATH'; - - // windows calls its path "Path" usually, but this is not guaranteed. - if (platform === 'win32') { - pathKey = 'Path'; - - for (const key in env) { - if (key.toLowerCase() === 'path') { - pathKey = key; - } - } - } - - return pathKey; -} - -const VERSION_COLOR_SCHEME = exports.VERSION_COLOR_SCHEME = { - major: 'red', - premajor: 'red', - minor: 'yellow', - preminor: 'yellow', - patch: 'green', - prepatch: 'green', - prerelease: 'red', - unchanged: 'white', - unknown: 'red' -}; - -/***/ }), -/* 9 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -/** - * Copyright (c) 2013-present, Facebook, Inc. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ - - - -/** - * Use invariant() to assert state which your program assumes to be true. - * - * Provide sprintf-style format (only %s is supported) and arguments - * to provide information about what broke and what you were - * expecting. - * - * The invariant message will be stripped in production, but the invariant - * will remain to ensure logic does not differ in production. - */ - -var NODE_ENV = process.env.NODE_ENV; - -var invariant = function(condition, format, a, b, c, d, e, f) { - if (NODE_ENV !== 'production') { - if (format === undefined) { - throw new Error('invariant requires an error message argument'); - } - } - - if (!condition) { - var error; - if (format === undefined) { - error = new Error( - 'Minified exception occurred; use the non-minified dev environment ' + - 'for the full error message and additional helpful warnings.' - ); - } else { - var args = [a, b, c, d, e, f]; - var argIndex = 0; - error = new Error( - format.replace(/%s/g, function() { return args[argIndex++]; }) - ); - error.name = 'Invariant Violation'; - } - - error.framesToPop = 1; // we don't care about invariant's own frame - throw error; - } -}; - -module.exports = invariant; - - -/***/ }), -/* 10 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -var YAMLException = __webpack_require__(54); - -var TYPE_CONSTRUCTOR_OPTIONS = [ - 'kind', - 'resolve', - 'construct', - 'instanceOf', - 'predicate', - 'represent', - 'defaultStyle', - 'styleAliases' -]; - -var YAML_NODE_KINDS = [ - 'scalar', - 'sequence', - 'mapping' -]; - -function compileStyleAliases(map) { - var result = {}; - - if (map !== null) { - Object.keys(map).forEach(function (style) { - map[style].forEach(function (alias) { - result[String(alias)] = style; - }); - }); - } - - return result; -} - -function Type(tag, options) { - options = options || {}; - - Object.keys(options).forEach(function (name) { - if (TYPE_CONSTRUCTOR_OPTIONS.indexOf(name) === -1) { - throw new YAMLException('Unknown option "' + name + '" is met in definition of "' + tag + '" YAML type.'); - } - }); - - // TODO: Add tag format check. - this.tag = tag; - this.kind = options['kind'] || null; - this.resolve = options['resolve'] || function () { return true; }; - this.construct = options['construct'] || function (data) { return data; }; - this.instanceOf = options['instanceOf'] || null; - this.predicate = options['predicate'] || null; - this.represent = options['represent'] || null; - this.defaultStyle = options['defaultStyle'] || null; - this.styleAliases = compileStyleAliases(options['styleAliases'] || null); - - if (YAML_NODE_KINDS.indexOf(this.kind) === -1) { - throw new YAMLException('Unknown kind "' + this.kind + '" is specified for "' + tag + '" YAML type.'); - } -} - -module.exports = Type; - - -/***/ }), -/* 11 */ -/***/ (function(module, exports) { - -module.exports = require("crypto"); - -/***/ }), -/* 12 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return Observable; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__util_canReportError__ = __webpack_require__(322); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__util_toSubscriber__ = __webpack_require__(932); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__internal_symbol_observable__ = __webpack_require__(117); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__util_pipe__ = __webpack_require__(324); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__config__ = __webpack_require__(185); -/** PURE_IMPORTS_START _util_canReportError,_util_toSubscriber,_internal_symbol_observable,_util_pipe,_config PURE_IMPORTS_END */ - - - - - -var Observable = /*@__PURE__*/ (function () { - function Observable(subscribe) { - this._isScalar = false; - if (subscribe) { - this._subscribe = subscribe; - } - } - Observable.prototype.lift = function (operator) { - var observable = new Observable(); - observable.source = this; - observable.operator = operator; - return observable; - }; - Observable.prototype.subscribe = function (observerOrNext, error, complete) { - var operator = this.operator; - var sink = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__util_toSubscriber__["a" /* toSubscriber */])(observerOrNext, error, complete); - if (operator) { - operator.call(sink, this.source); - } - else { - sink.add(this.source || (__WEBPACK_IMPORTED_MODULE_4__config__["a" /* config */].useDeprecatedSynchronousErrorHandling && !sink.syncErrorThrowable) ? - this._subscribe(sink) : - this._trySubscribe(sink)); - } - if (__WEBPACK_IMPORTED_MODULE_4__config__["a" /* config */].useDeprecatedSynchronousErrorHandling) { - if (sink.syncErrorThrowable) { - sink.syncErrorThrowable = false; - if (sink.syncErrorThrown) { - throw sink.syncErrorValue; - } - } - } - return sink; - }; - Observable.prototype._trySubscribe = function (sink) { - try { - return this._subscribe(sink); - } - catch (err) { - if (__WEBPACK_IMPORTED_MODULE_4__config__["a" /* config */].useDeprecatedSynchronousErrorHandling) { - sink.syncErrorThrown = true; - sink.syncErrorValue = err; - } - if (__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__util_canReportError__["a" /* canReportError */])(sink)) { - sink.error(err); - } - else { - console.warn(err); - } - } - }; - Observable.prototype.forEach = function (next, promiseCtor) { - var _this = this; - promiseCtor = getPromiseCtor(promiseCtor); - return new promiseCtor(function (resolve, reject) { - var subscription; - subscription = _this.subscribe(function (value) { - try { - next(value); - } - catch (err) { - reject(err); - if (subscription) { - subscription.unsubscribe(); - } - } - }, reject, resolve); - }); - }; - Observable.prototype._subscribe = function (subscriber) { - var source = this.source; - return source && source.subscribe(subscriber); - }; - Observable.prototype[__WEBPACK_IMPORTED_MODULE_2__internal_symbol_observable__["a" /* observable */]] = function () { - return this; - }; - Observable.prototype.pipe = function () { - var operations = []; - for (var _i = 0; _i < arguments.length; _i++) { - operations[_i] = arguments[_i]; - } - if (operations.length === 0) { - return this; - } - return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__util_pipe__["b" /* pipeFromArray */])(operations)(this); - }; - Observable.prototype.toPromise = function (promiseCtor) { - var _this = this; - promiseCtor = getPromiseCtor(promiseCtor); - return new promiseCtor(function (resolve, reject) { - var value; - _this.subscribe(function (x) { return value = x; }, function (err) { return reject(err); }, function () { return resolve(value); }); - }); - }; - Observable.create = function (subscribe) { - return new Observable(subscribe); - }; - return Observable; -}()); - -function getPromiseCtor(promiseCtor) { - if (!promiseCtor) { - promiseCtor = __WEBPACK_IMPORTED_MODULE_4__config__["a" /* config */].Promise || Promise; - } - if (!promiseCtor) { - throw new Error('no Promise impl found'); - } - return promiseCtor; -} -//# sourceMappingURL=Observable.js.map - - -/***/ }), -/* 13 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return OuterSubscriber; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_tslib__ = __webpack_require__(1); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__Subscriber__ = __webpack_require__(7); -/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */ - - -var OuterSubscriber = /*@__PURE__*/ (function (_super) { - __WEBPACK_IMPORTED_MODULE_0_tslib__["a" /* __extends */](OuterSubscriber, _super); - function OuterSubscriber() { - return _super !== null && _super.apply(this, arguments) || this; - } - OuterSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) { - this.destination.next(innerValue); - }; - OuterSubscriber.prototype.notifyError = function (error, innerSub) { - this.destination.error(error); - }; - OuterSubscriber.prototype.notifyComplete = function (innerSub) { - this.destination.complete(); - }; - return OuterSubscriber; -}(__WEBPACK_IMPORTED_MODULE_1__Subscriber__["a" /* Subscriber */])); - -//# sourceMappingURL=OuterSubscriber.js.map - - -/***/ }), -/* 14 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (immutable) */ __webpack_exports__["a"] = subscribeToResult; -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__InnerSubscriber__ = __webpack_require__(84); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__subscribeTo__ = __webpack_require__(446); -/** PURE_IMPORTS_START _InnerSubscriber,_subscribeTo PURE_IMPORTS_END */ - - -function subscribeToResult(outerSubscriber, result, outerValue, outerIndex, destination) { - if (destination === void 0) { - destination = new __WEBPACK_IMPORTED_MODULE_0__InnerSubscriber__["a" /* InnerSubscriber */](outerSubscriber, outerValue, outerIndex); - } - if (destination.closed) { - return; - } - return __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__subscribeTo__["a" /* subscribeTo */])(result)(destination); -} -//# sourceMappingURL=subscribeToResult.js.map - - -/***/ }), -/* 15 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -/* eslint-disable node/no-deprecated-api */ - - - -var buffer = __webpack_require__(64) -var Buffer = buffer.Buffer - -var safer = {} - -var key - -for (key in buffer) { - if (!buffer.hasOwnProperty(key)) continue - if (key === 'SlowBuffer' || key === 'Buffer') continue - safer[key] = buffer[key] -} - -var Safer = safer.Buffer = {} -for (key in Buffer) { - if (!Buffer.hasOwnProperty(key)) continue - if (key === 'allocUnsafe' || key === 'allocUnsafeSlow') continue - Safer[key] = Buffer[key] -} - -safer.Buffer.prototype = Buffer.prototype - -if (!Safer.from || Safer.from === Uint8Array.from) { - Safer.from = function (value, encodingOrOffset, length) { - if (typeof value === 'number') { - throw new TypeError('The "value" argument must not be of type number. Received type ' + typeof value) - } - if (value && typeof value.length === 'undefined') { - throw new TypeError('The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type ' + typeof value) - } - return Buffer(value, encodingOrOffset, length) - } -} - -if (!Safer.alloc) { - Safer.alloc = function (size, fill, encoding) { - if (typeof size !== 'number') { - throw new TypeError('The "size" argument must be of type number. Received type ' + typeof size) - } - if (size < 0 || size >= 2 * (1 << 30)) { - throw new RangeError('The value "' + size + '" is invalid for option "size"') - } - var buf = Buffer(size) - if (!fill || fill.length === 0) { - buf.fill(0) - } else if (typeof encoding === 'string') { - buf.fill(fill, encoding) - } else { - buf.fill(fill) - } - return buf - } -} - -if (!safer.kStringMaxLength) { - try { - safer.kStringMaxLength = process.binding('buffer').kStringMaxLength - } catch (e) { - // we can't determine kStringMaxLength in environments where process.binding - // is unsupported, so let's not set it - } -} - -if (!safer.constants) { - safer.constants = { - MAX_LENGTH: safer.kMaxLength - } - if (safer.kStringMaxLength) { - safer.constants.MAX_STRING_LENGTH = safer.kStringMaxLength - } -} - -module.exports = safer - - -/***/ }), -/* 16 */ -/***/ (function(module, exports, __webpack_require__) { - -// Copyright (c) 2012, Mark Cavage. All rights reserved. -// Copyright 2015 Joyent, Inc. - -var assert = __webpack_require__(28); -var Stream = __webpack_require__(23).Stream; -var util = __webpack_require__(3); - - -///--- Globals - -/* JSSTYLED */ -var UUID_REGEXP = /^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$/; - - -///--- Internal - -function _capitalize(str) { - return (str.charAt(0).toUpperCase() + str.slice(1)); -} - -function _toss(name, expected, oper, arg, actual) { - throw new assert.AssertionError({ - message: util.format('%s (%s) is required', name, expected), - actual: (actual === undefined) ? typeof (arg) : actual(arg), - expected: expected, - operator: oper || '===', - stackStartFunction: _toss.caller - }); -} - -function _getClass(arg) { - return (Object.prototype.toString.call(arg).slice(8, -1)); -} - -function noop() { - // Why even bother with asserts? -} - - -///--- Exports - -var types = { - bool: { - check: function (arg) { return typeof (arg) === 'boolean'; } - }, - func: { - check: function (arg) { return typeof (arg) === 'function'; } - }, - string: { - check: function (arg) { return typeof (arg) === 'string'; } - }, - object: { - check: function (arg) { - return typeof (arg) === 'object' && arg !== null; - } - }, - number: { - check: function (arg) { - return typeof (arg) === 'number' && !isNaN(arg); - } - }, - finite: { - check: function (arg) { - return typeof (arg) === 'number' && !isNaN(arg) && isFinite(arg); - } - }, - buffer: { - check: function (arg) { return Buffer.isBuffer(arg); }, - operator: 'Buffer.isBuffer' - }, - array: { - check: function (arg) { return Array.isArray(arg); }, - operator: 'Array.isArray' - }, - stream: { - check: function (arg) { return arg instanceof Stream; }, - operator: 'instanceof', - actual: _getClass - }, - date: { - check: function (arg) { return arg instanceof Date; }, - operator: 'instanceof', - actual: _getClass - }, - regexp: { - check: function (arg) { return arg instanceof RegExp; }, - operator: 'instanceof', - actual: _getClass - }, - uuid: { - check: function (arg) { - return typeof (arg) === 'string' && UUID_REGEXP.test(arg); - }, - operator: 'isUUID' - } -}; - -function _setExports(ndebug) { - var keys = Object.keys(types); - var out; - - /* re-export standard assert */ - if (process.env.NODE_NDEBUG) { - out = noop; - } else { - out = function (arg, msg) { - if (!arg) { - _toss(msg, 'true', arg); - } - }; - } - - /* standard checks */ - keys.forEach(function (k) { - if (ndebug) { - out[k] = noop; - return; - } - var type = types[k]; - out[k] = function (arg, msg) { - if (!type.check(arg)) { - _toss(msg, k, type.operator, arg, type.actual); - } - }; - }); - - /* optional checks */ - keys.forEach(function (k) { - var name = 'optional' + _capitalize(k); - if (ndebug) { - out[name] = noop; - return; - } - var type = types[k]; - out[name] = function (arg, msg) { - if (arg === undefined || arg === null) { - return; - } - if (!type.check(arg)) { - _toss(msg, k, type.operator, arg, type.actual); - } - }; - }); - - /* arrayOf checks */ - keys.forEach(function (k) { - var name = 'arrayOf' + _capitalize(k); - if (ndebug) { - out[name] = noop; - return; - } - var type = types[k]; - var expected = '[' + k + ']'; - out[name] = function (arg, msg) { - if (!Array.isArray(arg)) { - _toss(msg, expected, type.operator, arg, type.actual); - } - var i; - for (i = 0; i < arg.length; i++) { - if (!type.check(arg[i])) { - _toss(msg, expected, type.operator, arg, type.actual); - } - } - }; - }); - - /* optionalArrayOf checks */ - keys.forEach(function (k) { - var name = 'optionalArrayOf' + _capitalize(k); - if (ndebug) { - out[name] = noop; - return; - } - var type = types[k]; - var expected = '[' + k + ']'; - out[name] = function (arg, msg) { - if (arg === undefined || arg === null) { - return; - } - if (!Array.isArray(arg)) { - _toss(msg, expected, type.operator, arg, type.actual); - } - var i; - for (i = 0; i < arg.length; i++) { - if (!type.check(arg[i])) { - _toss(msg, expected, type.operator, arg, type.actual); - } - } - }; - }); - - /* re-export built-in assertions */ - Object.keys(assert).forEach(function (k) { - if (k === 'AssertionError') { - out[k] = assert[k]; - return; - } - if (ndebug) { - out[k] = noop; - return; - } - out[k] = assert[k]; - }); - - /* export ourselves (for unit tests _only_) */ - out._setExports = _setExports; - - return out; -} - -module.exports = _setExports(process.env.NODE_NDEBUG); - - -/***/ }), -/* 17 */ -/***/ (function(module, exports) { - -// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028 -var global = module.exports = typeof window != 'undefined' && window.Math == Math - ? window : typeof self != 'undefined' && self.Math == Math ? self - // eslint-disable-next-line no-new-func - : Function('return this')(); -if (typeof __g == 'number') __g = global; // eslint-disable-line no-undef - - -/***/ }), -/* 18 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.sortAlpha = sortAlpha; -exports.sortOptionsByFlags = sortOptionsByFlags; -exports.entries = entries; -exports.removePrefix = removePrefix; -exports.removeSuffix = removeSuffix; -exports.addSuffix = addSuffix; -exports.hyphenate = hyphenate; -exports.camelCase = camelCase; -exports.compareSortedArrays = compareSortedArrays; -exports.sleep = sleep; -const _camelCase = __webpack_require__(230); - -function sortAlpha(a, b) { - // sort alphabetically in a deterministic way - const shortLen = Math.min(a.length, b.length); - for (let i = 0; i < shortLen; i++) { - const aChar = a.charCodeAt(i); - const bChar = b.charCodeAt(i); - if (aChar !== bChar) { - return aChar - bChar; - } - } - return a.length - b.length; -} - -function sortOptionsByFlags(a, b) { - const aOpt = a.flags.replace(/-/g, ''); - const bOpt = b.flags.replace(/-/g, ''); - return sortAlpha(aOpt, bOpt); -} - -function entries(obj) { - const entries = []; - if (obj) { - for (const key in obj) { - entries.push([key, obj[key]]); - } - } - return entries; -} - -function removePrefix(pattern, prefix) { - if (pattern.startsWith(prefix)) { - pattern = pattern.slice(prefix.length); - } - - return pattern; -} - -function removeSuffix(pattern, suffix) { - if (pattern.endsWith(suffix)) { - return pattern.slice(0, -suffix.length); - } - - return pattern; -} - -function addSuffix(pattern, suffix) { - if (!pattern.endsWith(suffix)) { - return pattern + suffix; - } - - return pattern; -} - -function hyphenate(str) { - return str.replace(/[A-Z]/g, match => { - return '-' + match.charAt(0).toLowerCase(); - }); -} - -function camelCase(str) { - if (/[A-Z]/.test(str)) { - return null; - } else { - return _camelCase(str); - } -} - -function compareSortedArrays(array1, array2) { - if (array1.length !== array2.length) { - return false; - } - for (let i = 0, len = array1.length; i < len; i++) { - if (array1[i] !== array2[i]) { - return false; - } - } - return true; -} - -function sleep(ms) { - return new Promise(resolve => { - setTimeout(resolve, ms); - }); -} - -/***/ }), -/* 19 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.stringify = exports.parse = undefined; - -var _asyncToGenerator2; - -function _load_asyncToGenerator() { - return _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(2)); -} - -var _parse; - -function _load_parse() { - return _parse = __webpack_require__(105); -} - -Object.defineProperty(exports, 'parse', { - enumerable: true, - get: function get() { - return _interopRequireDefault(_parse || _load_parse()).default; - } -}); - -var _stringify; - -function _load_stringify() { - return _stringify = __webpack_require__(199); -} - -Object.defineProperty(exports, 'stringify', { - enumerable: true, - get: function get() { - return _interopRequireDefault(_stringify || _load_stringify()).default; - } -}); -exports.implodeEntry = implodeEntry; -exports.explodeEntry = explodeEntry; - -var _misc; - -function _load_misc() { - return _misc = __webpack_require__(18); -} - -var _normalizePattern; - -function _load_normalizePattern() { - return _normalizePattern = __webpack_require__(37); -} - -var _parse2; - -function _load_parse2() { - return _parse2 = _interopRequireDefault(__webpack_require__(105)); -} - -var _constants; - -function _load_constants() { - return _constants = __webpack_require__(8); -} - -var _fs; - -function _load_fs() { - return _fs = _interopRequireWildcard(__webpack_require__(4)); -} - -function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -const invariant = __webpack_require__(9); - -const path = __webpack_require__(0); -const ssri = __webpack_require__(65); - -function getName(pattern) { - return (0, (_normalizePattern || _load_normalizePattern()).normalizePattern)(pattern).name; -} - -function blankObjectUndefined(obj) { - return obj && Object.keys(obj).length ? obj : undefined; -} - -function keyForRemote(remote) { - return remote.resolved || (remote.reference && remote.hash ? `${remote.reference}#${remote.hash}` : null); -} - -function serializeIntegrity(integrity) { - // We need this because `Integrity.toString()` does not use sorting to ensure a stable string output - // See https://git.io/vx2Hy - return integrity.toString().split(' ').sort().join(' '); -} - -function implodeEntry(pattern, obj) { - const inferredName = getName(pattern); - const integrity = obj.integrity ? serializeIntegrity(obj.integrity) : ''; - const imploded = { - name: inferredName === obj.name ? undefined : obj.name, - version: obj.version, - uid: obj.uid === obj.version ? undefined : obj.uid, - resolved: obj.resolved, - registry: obj.registry === 'npm' ? undefined : obj.registry, - dependencies: blankObjectUndefined(obj.dependencies), - optionalDependencies: blankObjectUndefined(obj.optionalDependencies), - permissions: blankObjectUndefined(obj.permissions), - prebuiltVariants: blankObjectUndefined(obj.prebuiltVariants) - }; - if (integrity) { - imploded.integrity = integrity; - } - return imploded; -} - -function explodeEntry(pattern, obj) { - obj.optionalDependencies = obj.optionalDependencies || {}; - obj.dependencies = obj.dependencies || {}; - obj.uid = obj.uid || obj.version; - obj.permissions = obj.permissions || {}; - obj.registry = obj.registry || 'npm'; - obj.name = obj.name || getName(pattern); - const integrity = obj.integrity; - if (integrity && integrity.isIntegrity) { - obj.integrity = ssri.parse(integrity); - } - return obj; -} - -class Lockfile { - constructor({ cache, source, parseResultType } = {}) { - this.source = source || ''; - this.cache = cache; - this.parseResultType = parseResultType; - } - - // source string if the `cache` was parsed - - - // if true, we're parsing an old yarn file and need to update integrity fields - hasEntriesExistWithoutIntegrity() { - if (!this.cache) { - return false; - } - - for (const key in this.cache) { - // $FlowFixMe - `this.cache` is clearly defined at this point - if (!/^.*@(file:|http)/.test(key) && this.cache[key] && !this.cache[key].integrity) { - return true; - } - } - - return false; - } - - static fromDirectory(dir, reporter) { - return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { - // read the manifest in this directory - const lockfileLoc = path.join(dir, (_constants || _load_constants()).LOCKFILE_FILENAME); - - let lockfile; - let rawLockfile = ''; - let parseResult; - - if (yield (_fs || _load_fs()).exists(lockfileLoc)) { - rawLockfile = yield (_fs || _load_fs()).readFile(lockfileLoc); - parseResult = (0, (_parse2 || _load_parse2()).default)(rawLockfile, lockfileLoc); - - if (reporter) { - if (parseResult.type === 'merge') { - reporter.info(reporter.lang('lockfileMerged')); - } else if (parseResult.type === 'conflict') { - reporter.warn(reporter.lang('lockfileConflict')); - } - } - - lockfile = parseResult.object; - } else if (reporter) { - reporter.info(reporter.lang('noLockfileFound')); - } - - if (lockfile && lockfile.__metadata) { - const lockfilev2 = lockfile; - lockfile = {}; - } - - return new Lockfile({ cache: lockfile, source: rawLockfile, parseResultType: parseResult && parseResult.type }); - })(); - } - - getLocked(pattern) { - const cache = this.cache; - if (!cache) { - return undefined; - } - - const shrunk = pattern in cache && cache[pattern]; - - if (typeof shrunk === 'string') { - return this.getLocked(shrunk); - } else if (shrunk) { - explodeEntry(pattern, shrunk); - return shrunk; - } - - return undefined; - } - - removePattern(pattern) { - const cache = this.cache; - if (!cache) { - return; - } - delete cache[pattern]; - } - - getLockfile(patterns) { - const lockfile = {}; - const seen = new Map(); - - // order by name so that lockfile manifest is assigned to the first dependency with this manifest - // the others that have the same remoteKey will just refer to the first - // ordering allows for consistency in lockfile when it is serialized - const sortedPatternsKeys = Object.keys(patterns).sort((_misc || _load_misc()).sortAlpha); - - for (var _iterator = sortedPatternsKeys, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) { - var _ref; - - if (_isArray) { - if (_i >= _iterator.length) break; - _ref = _iterator[_i++]; - } else { - _i = _iterator.next(); - if (_i.done) break; - _ref = _i.value; - } - - const pattern = _ref; - - const pkg = patterns[pattern]; - const remote = pkg._remote, - ref = pkg._reference; - - invariant(ref, 'Package is missing a reference'); - invariant(remote, 'Package is missing a remote'); - - const remoteKey = keyForRemote(remote); - const seenPattern = remoteKey && seen.get(remoteKey); - if (seenPattern) { - // no point in duplicating it - lockfile[pattern] = seenPattern; - - // if we're relying on our name being inferred and two of the patterns have - // different inferred names then we need to set it - if (!seenPattern.name && getName(pattern) !== pkg.name) { - seenPattern.name = pkg.name; - } - continue; - } - const obj = implodeEntry(pattern, { - name: pkg.name, - version: pkg.version, - uid: pkg._uid, - resolved: remote.resolved, - integrity: remote.integrity, - registry: remote.registry, - dependencies: pkg.dependencies, - peerDependencies: pkg.peerDependencies, - optionalDependencies: pkg.optionalDependencies, - permissions: ref.permissions, - prebuiltVariants: pkg.prebuiltVariants - }); - - lockfile[pattern] = obj; - - if (remoteKey) { - seen.set(remoteKey, obj); - } - } - - return lockfile; - } -} -exports.default = Lockfile; - -/***/ }), -/* 20 */ -/***/ (function(module, exports, __webpack_require__) { - -var store = __webpack_require__(133)('wks'); -var uid = __webpack_require__(137); -var Symbol = __webpack_require__(17).Symbol; -var USE_SYMBOL = typeof Symbol == 'function'; - -var $exports = module.exports = function (name) { - return store[name] || (store[name] = - USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name)); -}; - -$exports.store = store; - - -/***/ }), -/* 21 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -exports.__esModule = true; - -var _assign = __webpack_require__(591); - -var _assign2 = _interopRequireDefault(_assign); - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -exports.default = _assign2.default || function (target) { - for (var i = 1; i < arguments.length; i++) { - var source = arguments[i]; - - for (var key in source) { - if (Object.prototype.hasOwnProperty.call(source, key)) { - target[key] = source[key]; - } - } - } - - return target; -}; - -/***/ }), -/* 22 */ -/***/ (function(module, exports) { - -exports = module.exports = SemVer; - -// The debug function is excluded entirely from the minified version. -/* nomin */ var debug; -/* nomin */ if (typeof process === 'object' && - /* nomin */ process.env && - /* nomin */ process.env.NODE_DEBUG && - /* nomin */ /\bsemver\b/i.test(process.env.NODE_DEBUG)) - /* nomin */ debug = function() { - /* nomin */ var args = Array.prototype.slice.call(arguments, 0); - /* nomin */ args.unshift('SEMVER'); - /* nomin */ console.log.apply(console, args); - /* nomin */ }; -/* nomin */ else - /* nomin */ debug = function() {}; - -// Note: this is the semver.org version of the spec that it implements -// Not necessarily the package version of this code. -exports.SEMVER_SPEC_VERSION = '2.0.0'; - -var MAX_LENGTH = 256; -var MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || 9007199254740991; - -// Max safe segment length for coercion. -var MAX_SAFE_COMPONENT_LENGTH = 16; - -// The actual regexps go on exports.re -var re = exports.re = []; -var src = exports.src = []; -var R = 0; - -// The following Regular Expressions can be used for tokenizing, -// validating, and parsing SemVer version strings. - -// ## Numeric Identifier -// A single `0`, or a non-zero digit followed by zero or more digits. - -var NUMERICIDENTIFIER = R++; -src[NUMERICIDENTIFIER] = '0|[1-9]\\d*'; -var NUMERICIDENTIFIERLOOSE = R++; -src[NUMERICIDENTIFIERLOOSE] = '[0-9]+'; - - -// ## Non-numeric Identifier -// Zero or more digits, followed by a letter or hyphen, and then zero or -// more letters, digits, or hyphens. - -var NONNUMERICIDENTIFIER = R++; -src[NONNUMERICIDENTIFIER] = '\\d*[a-zA-Z-][a-zA-Z0-9-]*'; - - -// ## Main Version -// Three dot-separated numeric identifiers. - -var MAINVERSION = R++; -src[MAINVERSION] = '(' + src[NUMERICIDENTIFIER] + ')\\.' + - '(' + src[NUMERICIDENTIFIER] + ')\\.' + - '(' + src[NUMERICIDENTIFIER] + ')'; - -var MAINVERSIONLOOSE = R++; -src[MAINVERSIONLOOSE] = '(' + src[NUMERICIDENTIFIERLOOSE] + ')\\.' + - '(' + src[NUMERICIDENTIFIERLOOSE] + ')\\.' + - '(' + src[NUMERICIDENTIFIERLOOSE] + ')'; - -// ## Pre-release Version Identifier -// A numeric identifier, or a non-numeric identifier. - -var PRERELEASEIDENTIFIER = R++; -src[PRERELEASEIDENTIFIER] = '(?:' + src[NUMERICIDENTIFIER] + - '|' + src[NONNUMERICIDENTIFIER] + ')'; - -var PRERELEASEIDENTIFIERLOOSE = R++; -src[PRERELEASEIDENTIFIERLOOSE] = '(?:' + src[NUMERICIDENTIFIERLOOSE] + - '|' + src[NONNUMERICIDENTIFIER] + ')'; - - -// ## Pre-release Version -// Hyphen, followed by one or more dot-separated pre-release version -// identifiers. - -var PRERELEASE = R++; -src[PRERELEASE] = '(?:-(' + src[PRERELEASEIDENTIFIER] + - '(?:\\.' + src[PRERELEASEIDENTIFIER] + ')*))'; - -var PRERELEASELOOSE = R++; -src[PRERELEASELOOSE] = '(?:-?(' + src[PRERELEASEIDENTIFIERLOOSE] + - '(?:\\.' + src[PRERELEASEIDENTIFIERLOOSE] + ')*))'; - -// ## Build Metadata Identifier -// Any combination of digits, letters, or hyphens. - -var BUILDIDENTIFIER = R++; -src[BUILDIDENTIFIER] = '[0-9A-Za-z-]+'; - -// ## Build Metadata -// Plus sign, followed by one or more period-separated build metadata -// identifiers. - -var BUILD = R++; -src[BUILD] = '(?:\\+(' + src[BUILDIDENTIFIER] + - '(?:\\.' + src[BUILDIDENTIFIER] + ')*))'; - - -// ## Full Version String -// A main version, followed optionally by a pre-release version and -// build metadata. - -// Note that the only major, minor, patch, and pre-release sections of -// the version string are capturing groups. The build metadata is not a -// capturing group, because it should not ever be used in version -// comparison. - -var FULL = R++; -var FULLPLAIN = 'v?' + src[MAINVERSION] + - src[PRERELEASE] + '?' + - src[BUILD] + '?'; - -src[FULL] = '^' + FULLPLAIN + '$'; - -// like full, but allows v1.2.3 and =1.2.3, which people do sometimes. -// also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty -// common in the npm registry. -var LOOSEPLAIN = '[v=\\s]*' + src[MAINVERSIONLOOSE] + - src[PRERELEASELOOSE] + '?' + - src[BUILD] + '?'; - -var LOOSE = R++; -src[LOOSE] = '^' + LOOSEPLAIN + '$'; - -var GTLT = R++; -src[GTLT] = '((?:<|>)?=?)'; - -// Something like "2.*" or "1.2.x". -// Note that "x.x" is a valid xRange identifer, meaning "any version" -// Only the first item is strictly required. -var XRANGEIDENTIFIERLOOSE = R++; -src[XRANGEIDENTIFIERLOOSE] = src[NUMERICIDENTIFIERLOOSE] + '|x|X|\\*'; -var XRANGEIDENTIFIER = R++; -src[XRANGEIDENTIFIER] = src[NUMERICIDENTIFIER] + '|x|X|\\*'; - -var XRANGEPLAIN = R++; -src[XRANGEPLAIN] = '[v=\\s]*(' + src[XRANGEIDENTIFIER] + ')' + - '(?:\\.(' + src[XRANGEIDENTIFIER] + ')' + - '(?:\\.(' + src[XRANGEIDENTIFIER] + ')' + - '(?:' + src[PRERELEASE] + ')?' + - src[BUILD] + '?' + - ')?)?'; - -var XRANGEPLAINLOOSE = R++; -src[XRANGEPLAINLOOSE] = '[v=\\s]*(' + src[XRANGEIDENTIFIERLOOSE] + ')' + - '(?:\\.(' + src[XRANGEIDENTIFIERLOOSE] + ')' + - '(?:\\.(' + src[XRANGEIDENTIFIERLOOSE] + ')' + - '(?:' + src[PRERELEASELOOSE] + ')?' + - src[BUILD] + '?' + - ')?)?'; - -var XRANGE = R++; -src[XRANGE] = '^' + src[GTLT] + '\\s*' + src[XRANGEPLAIN] + '$'; -var XRANGELOOSE = R++; -src[XRANGELOOSE] = '^' + src[GTLT] + '\\s*' + src[XRANGEPLAINLOOSE] + '$'; - -// Coercion. -// Extract anything that could conceivably be a part of a valid semver -var COERCE = R++; -src[COERCE] = '(?:^|[^\\d])' + - '(\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '})' + - '(?:\\.(\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '}))?' + - '(?:\\.(\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '}))?' + - '(?:$|[^\\d])'; - -// Tilde ranges. -// Meaning is "reasonably at or greater than" -var LONETILDE = R++; -src[LONETILDE] = '(?:~>?)'; - -var TILDETRIM = R++; -src[TILDETRIM] = '(\\s*)' + src[LONETILDE] + '\\s+'; -re[TILDETRIM] = new RegExp(src[TILDETRIM], 'g'); -var tildeTrimReplace = '$1~'; - -var TILDE = R++; -src[TILDE] = '^' + src[LONETILDE] + src[XRANGEPLAIN] + '$'; -var TILDELOOSE = R++; -src[TILDELOOSE] = '^' + src[LONETILDE] + src[XRANGEPLAINLOOSE] + '$'; - -// Caret ranges. -// Meaning is "at least and backwards compatible with" -var LONECARET = R++; -src[LONECARET] = '(?:\\^)'; - -var CARETTRIM = R++; -src[CARETTRIM] = '(\\s*)' + src[LONECARET] + '\\s+'; -re[CARETTRIM] = new RegExp(src[CARETTRIM], 'g'); -var caretTrimReplace = '$1^'; - -var CARET = R++; -src[CARET] = '^' + src[LONECARET] + src[XRANGEPLAIN] + '$'; -var CARETLOOSE = R++; -src[CARETLOOSE] = '^' + src[LONECARET] + src[XRANGEPLAINLOOSE] + '$'; - -// A simple gt/lt/eq thing, or just "" to indicate "any version" -var COMPARATORLOOSE = R++; -src[COMPARATORLOOSE] = '^' + src[GTLT] + '\\s*(' + LOOSEPLAIN + ')$|^$'; -var COMPARATOR = R++; -src[COMPARATOR] = '^' + src[GTLT] + '\\s*(' + FULLPLAIN + ')$|^$'; - - -// An expression to strip any whitespace between the gtlt and the thing -// it modifies, so that `> 1.2.3` ==> `>1.2.3` -var COMPARATORTRIM = R++; -src[COMPARATORTRIM] = '(\\s*)' + src[GTLT] + - '\\s*(' + LOOSEPLAIN + '|' + src[XRANGEPLAIN] + ')'; - -// this one has to use the /g flag -re[COMPARATORTRIM] = new RegExp(src[COMPARATORTRIM], 'g'); -var comparatorTrimReplace = '$1$2$3'; - - -// Something like `1.2.3 - 1.2.4` -// Note that these all use the loose form, because they'll be -// checked against either the strict or loose comparator form -// later. -var HYPHENRANGE = R++; -src[HYPHENRANGE] = '^\\s*(' + src[XRANGEPLAIN] + ')' + - '\\s+-\\s+' + - '(' + src[XRANGEPLAIN] + ')' + - '\\s*$'; - -var HYPHENRANGELOOSE = R++; -src[HYPHENRANGELOOSE] = '^\\s*(' + src[XRANGEPLAINLOOSE] + ')' + - '\\s+-\\s+' + - '(' + src[XRANGEPLAINLOOSE] + ')' + - '\\s*$'; - -// Star ranges basically just allow anything at all. -var STAR = R++; -src[STAR] = '(<|>)?=?\\s*\\*'; - -// Compile to actual regexp objects. -// All are flag-free, unless they were created above with a flag. -for (var i = 0; i < R; i++) { - debug(i, src[i]); - if (!re[i]) - re[i] = new RegExp(src[i]); -} - -exports.parse = parse; -function parse(version, loose) { - if (version instanceof SemVer) - return version; - - if (typeof version !== 'string') - return null; - - if (version.length > MAX_LENGTH) - return null; - - var r = loose ? re[LOOSE] : re[FULL]; - if (!r.test(version)) - return null; - - try { - return new SemVer(version, loose); - } catch (er) { - return null; - } -} - -exports.valid = valid; -function valid(version, loose) { - var v = parse(version, loose); - return v ? v.version : null; -} - - -exports.clean = clean; -function clean(version, loose) { - var s = parse(version.trim().replace(/^[=v]+/, ''), loose); - return s ? s.version : null; -} - -exports.SemVer = SemVer; - -function SemVer(version, loose) { - if (version instanceof SemVer) { - if (version.loose === loose) - return version; - else - version = version.version; - } else if (typeof version !== 'string') { - throw new TypeError('Invalid Version: ' + version); - } - - if (version.length > MAX_LENGTH) - throw new TypeError('version is longer than ' + MAX_LENGTH + ' characters') - - if (!(this instanceof SemVer)) - return new SemVer(version, loose); - - debug('SemVer', version, loose); - this.loose = loose; - var m = version.trim().match(loose ? re[LOOSE] : re[FULL]); - - if (!m) - throw new TypeError('Invalid Version: ' + version); - - this.raw = version; - - // these are actually numbers - this.major = +m[1]; - this.minor = +m[2]; - this.patch = +m[3]; - - if (this.major > MAX_SAFE_INTEGER || this.major < 0) - throw new TypeError('Invalid major version') - - if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) - throw new TypeError('Invalid minor version') - - if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) - throw new TypeError('Invalid patch version') - - // numberify any prerelease numeric ids - if (!m[4]) - this.prerelease = []; - else - this.prerelease = m[4].split('.').map(function(id) { - if (/^[0-9]+$/.test(id)) { - var num = +id; - if (num >= 0 && num < MAX_SAFE_INTEGER) - return num; - } - return id; - }); - - this.build = m[5] ? m[5].split('.') : []; - this.format(); -} - -SemVer.prototype.format = function() { - this.version = this.major + '.' + this.minor + '.' + this.patch; - if (this.prerelease.length) - this.version += '-' + this.prerelease.join('.'); - return this.version; -}; - -SemVer.prototype.toString = function() { - return this.version; -}; - -SemVer.prototype.compare = function(other) { - debug('SemVer.compare', this.version, this.loose, other); - if (!(other instanceof SemVer)) - other = new SemVer(other, this.loose); - - return this.compareMain(other) || this.comparePre(other); -}; - -SemVer.prototype.compareMain = function(other) { - if (!(other instanceof SemVer)) - other = new SemVer(other, this.loose); - - return compareIdentifiers(this.major, other.major) || - compareIdentifiers(this.minor, other.minor) || - compareIdentifiers(this.patch, other.patch); -}; - -SemVer.prototype.comparePre = function(other) { - if (!(other instanceof SemVer)) - other = new SemVer(other, this.loose); - - // NOT having a prerelease is > having one - if (this.prerelease.length && !other.prerelease.length) - return -1; - else if (!this.prerelease.length && other.prerelease.length) - return 1; - else if (!this.prerelease.length && !other.prerelease.length) - return 0; - - var i = 0; - do { - var a = this.prerelease[i]; - var b = other.prerelease[i]; - debug('prerelease compare', i, a, b); - if (a === undefined && b === undefined) - return 0; - else if (b === undefined) - return 1; - else if (a === undefined) - return -1; - else if (a === b) - continue; - else - return compareIdentifiers(a, b); - } while (++i); -}; - -// preminor will bump the version up to the next minor release, and immediately -// down to pre-release. premajor and prepatch work the same way. -SemVer.prototype.inc = function(release, identifier) { - switch (release) { - case 'premajor': - this.prerelease.length = 0; - this.patch = 0; - this.minor = 0; - this.major++; - this.inc('pre', identifier); - break; - case 'preminor': - this.prerelease.length = 0; - this.patch = 0; - this.minor++; - this.inc('pre', identifier); - break; - case 'prepatch': - // If this is already a prerelease, it will bump to the next version - // drop any prereleases that might already exist, since they are not - // relevant at this point. - this.prerelease.length = 0; - this.inc('patch', identifier); - this.inc('pre', identifier); - break; - // If the input is a non-prerelease version, this acts the same as - // prepatch. - case 'prerelease': - if (this.prerelease.length === 0) - this.inc('patch', identifier); - this.inc('pre', identifier); - break; - - case 'major': - // If this is a pre-major version, bump up to the same major version. - // Otherwise increment major. - // 1.0.0-5 bumps to 1.0.0 - // 1.1.0 bumps to 2.0.0 - if (this.minor !== 0 || this.patch !== 0 || this.prerelease.length === 0) - this.major++; - this.minor = 0; - this.patch = 0; - this.prerelease = []; - break; - case 'minor': - // If this is a pre-minor version, bump up to the same minor version. - // Otherwise increment minor. - // 1.2.0-5 bumps to 1.2.0 - // 1.2.1 bumps to 1.3.0 - if (this.patch !== 0 || this.prerelease.length === 0) - this.minor++; - this.patch = 0; - this.prerelease = []; - break; - case 'patch': - // If this is not a pre-release version, it will increment the patch. - // If it is a pre-release it will bump up to the same patch version. - // 1.2.0-5 patches to 1.2.0 - // 1.2.0 patches to 1.2.1 - if (this.prerelease.length === 0) - this.patch++; - this.prerelease = []; - break; - // This probably shouldn't be used publicly. - // 1.0.0 "pre" would become 1.0.0-0 which is the wrong direction. - case 'pre': - if (this.prerelease.length === 0) - this.prerelease = [0]; - else { - var i = this.prerelease.length; - while (--i >= 0) { - if (typeof this.prerelease[i] === 'number') { - this.prerelease[i]++; - i = -2; - } - } - if (i === -1) // didn't increment anything - this.prerelease.push(0); - } - if (identifier) { - // 1.2.0-beta.1 bumps to 1.2.0-beta.2, - // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0 - if (this.prerelease[0] === identifier) { - if (isNaN(this.prerelease[1])) - this.prerelease = [identifier, 0]; - } else - this.prerelease = [identifier, 0]; - } - break; - - default: - throw new Error('invalid increment argument: ' + release); - } - this.format(); - this.raw = this.version; - return this; -}; - -exports.inc = inc; -function inc(version, release, loose, identifier) { - if (typeof(loose) === 'string') { - identifier = loose; - loose = undefined; - } - - try { - return new SemVer(version, loose).inc(release, identifier).version; - } catch (er) { - return null; - } -} - -exports.diff = diff; -function diff(version1, version2) { - if (eq(version1, version2)) { - return null; - } else { - var v1 = parse(version1); - var v2 = parse(version2); - if (v1.prerelease.length || v2.prerelease.length) { - for (var key in v1) { - if (key === 'major' || key === 'minor' || key === 'patch') { - if (v1[key] !== v2[key]) { - return 'pre'+key; - } - } - } - return 'prerelease'; - } - for (var key in v1) { - if (key === 'major' || key === 'minor' || key === 'patch') { - if (v1[key] !== v2[key]) { - return key; - } - } - } - } -} - -exports.compareIdentifiers = compareIdentifiers; - -var numeric = /^[0-9]+$/; -function compareIdentifiers(a, b) { - var anum = numeric.test(a); - var bnum = numeric.test(b); - - if (anum && bnum) { - a = +a; - b = +b; - } - - return (anum && !bnum) ? -1 : - (bnum && !anum) ? 1 : - a < b ? -1 : - a > b ? 1 : - 0; -} - -exports.rcompareIdentifiers = rcompareIdentifiers; -function rcompareIdentifiers(a, b) { - return compareIdentifiers(b, a); -} - -exports.major = major; -function major(a, loose) { - return new SemVer(a, loose).major; -} - -exports.minor = minor; -function minor(a, loose) { - return new SemVer(a, loose).minor; -} - -exports.patch = patch; -function patch(a, loose) { - return new SemVer(a, loose).patch; -} - -exports.compare = compare; -function compare(a, b, loose) { - return new SemVer(a, loose).compare(new SemVer(b, loose)); -} - -exports.compareLoose = compareLoose; -function compareLoose(a, b) { - return compare(a, b, true); -} - -exports.rcompare = rcompare; -function rcompare(a, b, loose) { - return compare(b, a, loose); -} - -exports.sort = sort; -function sort(list, loose) { - return list.sort(function(a, b) { - return exports.compare(a, b, loose); - }); -} - -exports.rsort = rsort; -function rsort(list, loose) { - return list.sort(function(a, b) { - return exports.rcompare(a, b, loose); - }); -} - -exports.gt = gt; -function gt(a, b, loose) { - return compare(a, b, loose) > 0; -} - -exports.lt = lt; -function lt(a, b, loose) { - return compare(a, b, loose) < 0; -} - -exports.eq = eq; -function eq(a, b, loose) { - return compare(a, b, loose) === 0; -} - -exports.neq = neq; -function neq(a, b, loose) { - return compare(a, b, loose) !== 0; -} - -exports.gte = gte; -function gte(a, b, loose) { - return compare(a, b, loose) >= 0; -} - -exports.lte = lte; -function lte(a, b, loose) { - return compare(a, b, loose) <= 0; -} - -exports.cmp = cmp; -function cmp(a, op, b, loose) { - var ret; - switch (op) { - case '===': - if (typeof a === 'object') a = a.version; - if (typeof b === 'object') b = b.version; - ret = a === b; - break; - case '!==': - if (typeof a === 'object') a = a.version; - if (typeof b === 'object') b = b.version; - ret = a !== b; - break; - case '': case '=': case '==': ret = eq(a, b, loose); break; - case '!=': ret = neq(a, b, loose); break; - case '>': ret = gt(a, b, loose); break; - case '>=': ret = gte(a, b, loose); break; - case '<': ret = lt(a, b, loose); break; - case '<=': ret = lte(a, b, loose); break; - default: throw new TypeError('Invalid operator: ' + op); - } - return ret; -} - -exports.Comparator = Comparator; -function Comparator(comp, loose) { - if (comp instanceof Comparator) { - if (comp.loose === loose) - return comp; - else - comp = comp.value; - } - - if (!(this instanceof Comparator)) - return new Comparator(comp, loose); - - debug('comparator', comp, loose); - this.loose = loose; - this.parse(comp); - - if (this.semver === ANY) - this.value = ''; - else - this.value = this.operator + this.semver.version; - - debug('comp', this); -} - -var ANY = {}; -Comparator.prototype.parse = function(comp) { - var r = this.loose ? re[COMPARATORLOOSE] : re[COMPARATOR]; - var m = comp.match(r); - - if (!m) - throw new TypeError('Invalid comparator: ' + comp); - - this.operator = m[1]; - if (this.operator === '=') - this.operator = ''; - - // if it literally is just '>' or '' then allow anything. - if (!m[2]) - this.semver = ANY; - else - this.semver = new SemVer(m[2], this.loose); -}; - -Comparator.prototype.toString = function() { - return this.value; -}; - -Comparator.prototype.test = function(version) { - debug('Comparator.test', version, this.loose); - - if (this.semver === ANY) - return true; - - if (typeof version === 'string') - version = new SemVer(version, this.loose); - - return cmp(version, this.operator, this.semver, this.loose); -}; - -Comparator.prototype.intersects = function(comp, loose) { - if (!(comp instanceof Comparator)) { - throw new TypeError('a Comparator is required'); - } - - var rangeTmp; - - if (this.operator === '') { - rangeTmp = new Range(comp.value, loose); - return satisfies(this.value, rangeTmp, loose); - } else if (comp.operator === '') { - rangeTmp = new Range(this.value, loose); - return satisfies(comp.semver, rangeTmp, loose); - } - - var sameDirectionIncreasing = - (this.operator === '>=' || this.operator === '>') && - (comp.operator === '>=' || comp.operator === '>'); - var sameDirectionDecreasing = - (this.operator === '<=' || this.operator === '<') && - (comp.operator === '<=' || comp.operator === '<'); - var sameSemVer = this.semver.version === comp.semver.version; - var differentDirectionsInclusive = - (this.operator === '>=' || this.operator === '<=') && - (comp.operator === '>=' || comp.operator === '<='); - var oppositeDirectionsLessThan = - cmp(this.semver, '<', comp.semver, loose) && - ((this.operator === '>=' || this.operator === '>') && - (comp.operator === '<=' || comp.operator === '<')); - var oppositeDirectionsGreaterThan = - cmp(this.semver, '>', comp.semver, loose) && - ((this.operator === '<=' || this.operator === '<') && - (comp.operator === '>=' || comp.operator === '>')); - - return sameDirectionIncreasing || sameDirectionDecreasing || - (sameSemVer && differentDirectionsInclusive) || - oppositeDirectionsLessThan || oppositeDirectionsGreaterThan; -}; - - -exports.Range = Range; -function Range(range, loose) { - if (range instanceof Range) { - if (range.loose === loose) { - return range; - } else { - return new Range(range.raw, loose); - } - } - - if (range instanceof Comparator) { - return new Range(range.value, loose); - } - - if (!(this instanceof Range)) - return new Range(range, loose); - - this.loose = loose; - - // First, split based on boolean or || - this.raw = range; - this.set = range.split(/\s*\|\|\s*/).map(function(range) { - return this.parseRange(range.trim()); - }, this).filter(function(c) { - // throw out any that are not relevant for whatever reason - return c.length; - }); - - if (!this.set.length) { - throw new TypeError('Invalid SemVer Range: ' + range); - } - - this.format(); -} - -Range.prototype.format = function() { - this.range = this.set.map(function(comps) { - return comps.join(' ').trim(); - }).join('||').trim(); - return this.range; -}; - -Range.prototype.toString = function() { - return this.range; -}; - -Range.prototype.parseRange = function(range) { - var loose = this.loose; - range = range.trim(); - debug('range', range, loose); - // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4` - var hr = loose ? re[HYPHENRANGELOOSE] : re[HYPHENRANGE]; - range = range.replace(hr, hyphenReplace); - debug('hyphen replace', range); - // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5` - range = range.replace(re[COMPARATORTRIM], comparatorTrimReplace); - debug('comparator trim', range, re[COMPARATORTRIM]); - - // `~ 1.2.3` => `~1.2.3` - range = range.replace(re[TILDETRIM], tildeTrimReplace); - - // `^ 1.2.3` => `^1.2.3` - range = range.replace(re[CARETTRIM], caretTrimReplace); - - // normalize spaces - range = range.split(/\s+/).join(' '); - - // At this point, the range is completely trimmed and - // ready to be split into comparators. - - var compRe = loose ? re[COMPARATORLOOSE] : re[COMPARATOR]; - var set = range.split(' ').map(function(comp) { - return parseComparator(comp, loose); - }).join(' ').split(/\s+/); - if (this.loose) { - // in loose mode, throw out any that are not valid comparators - set = set.filter(function(comp) { - return !!comp.match(compRe); - }); - } - set = set.map(function(comp) { - return new Comparator(comp, loose); - }); - - return set; -}; - -Range.prototype.intersects = function(range, loose) { - if (!(range instanceof Range)) { - throw new TypeError('a Range is required'); - } - - return this.set.some(function(thisComparators) { - return thisComparators.every(function(thisComparator) { - return range.set.some(function(rangeComparators) { - return rangeComparators.every(function(rangeComparator) { - return thisComparator.intersects(rangeComparator, loose); - }); - }); - }); - }); -}; - -// Mostly just for testing and legacy API reasons -exports.toComparators = toComparators; -function toComparators(range, loose) { - return new Range(range, loose).set.map(function(comp) { - return comp.map(function(c) { - return c.value; - }).join(' ').trim().split(' '); - }); -} - -// comprised of xranges, tildes, stars, and gtlt's at this point. -// already replaced the hyphen ranges -// turn into a set of JUST comparators. -function parseComparator(comp, loose) { - debug('comp', comp); - comp = replaceCarets(comp, loose); - debug('caret', comp); - comp = replaceTildes(comp, loose); - debug('tildes', comp); - comp = replaceXRanges(comp, loose); - debug('xrange', comp); - comp = replaceStars(comp, loose); - debug('stars', comp); - return comp; -} - -function isX(id) { - return !id || id.toLowerCase() === 'x' || id === '*'; -} - -// ~, ~> --> * (any, kinda silly) -// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0 -// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0 -// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0 -// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0 -// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0 -function replaceTildes(comp, loose) { - return comp.trim().split(/\s+/).map(function(comp) { - return replaceTilde(comp, loose); - }).join(' '); -} - -function replaceTilde(comp, loose) { - var r = loose ? re[TILDELOOSE] : re[TILDE]; - return comp.replace(r, function(_, M, m, p, pr) { - debug('tilde', comp, _, M, m, p, pr); - var ret; - - if (isX(M)) - ret = ''; - else if (isX(m)) - ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0'; - else if (isX(p)) - // ~1.2 == >=1.2.0 <1.3.0 - ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0'; - else if (pr) { - debug('replaceTilde pr', pr); - if (pr.charAt(0) !== '-') - pr = '-' + pr; - ret = '>=' + M + '.' + m + '.' + p + pr + - ' <' + M + '.' + (+m + 1) + '.0'; - } else - // ~1.2.3 == >=1.2.3 <1.3.0 - ret = '>=' + M + '.' + m + '.' + p + - ' <' + M + '.' + (+m + 1) + '.0'; - - debug('tilde return', ret); - return ret; - }); -} - -// ^ --> * (any, kinda silly) -// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0 -// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0 -// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0 -// ^1.2.3 --> >=1.2.3 <2.0.0 -// ^1.2.0 --> >=1.2.0 <2.0.0 -function replaceCarets(comp, loose) { - return comp.trim().split(/\s+/).map(function(comp) { - return replaceCaret(comp, loose); - }).join(' '); -} - -function replaceCaret(comp, loose) { - debug('caret', comp, loose); - var r = loose ? re[CARETLOOSE] : re[CARET]; - return comp.replace(r, function(_, M, m, p, pr) { - debug('caret', comp, _, M, m, p, pr); - var ret; - - if (isX(M)) - ret = ''; - else if (isX(m)) - ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0'; - else if (isX(p)) { - if (M === '0') - ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0'; - else - ret = '>=' + M + '.' + m + '.0 <' + (+M + 1) + '.0.0'; - } else if (pr) { - debug('replaceCaret pr', pr); - if (pr.charAt(0) !== '-') - pr = '-' + pr; - if (M === '0') { - if (m === '0') - ret = '>=' + M + '.' + m + '.' + p + pr + - ' <' + M + '.' + m + '.' + (+p + 1); - else - ret = '>=' + M + '.' + m + '.' + p + pr + - ' <' + M + '.' + (+m + 1) + '.0'; - } else - ret = '>=' + M + '.' + m + '.' + p + pr + - ' <' + (+M + 1) + '.0.0'; - } else { - debug('no pr'); - if (M === '0') { - if (m === '0') - ret = '>=' + M + '.' + m + '.' + p + - ' <' + M + '.' + m + '.' + (+p + 1); - else - ret = '>=' + M + '.' + m + '.' + p + - ' <' + M + '.' + (+m + 1) + '.0'; - } else - ret = '>=' + M + '.' + m + '.' + p + - ' <' + (+M + 1) + '.0.0'; - } - - debug('caret return', ret); - return ret; - }); -} - -function replaceXRanges(comp, loose) { - debug('replaceXRanges', comp, loose); - return comp.split(/\s+/).map(function(comp) { - return replaceXRange(comp, loose); - }).join(' '); -} - -function replaceXRange(comp, loose) { - comp = comp.trim(); - var r = loose ? re[XRANGELOOSE] : re[XRANGE]; - return comp.replace(r, function(ret, gtlt, M, m, p, pr) { - debug('xRange', comp, ret, gtlt, M, m, p, pr); - var xM = isX(M); - var xm = xM || isX(m); - var xp = xm || isX(p); - var anyX = xp; - - if (gtlt === '=' && anyX) - gtlt = ''; - - if (xM) { - if (gtlt === '>' || gtlt === '<') { - // nothing is allowed - ret = '<0.0.0'; - } else { - // nothing is forbidden - ret = '*'; - } - } else if (gtlt && anyX) { - // replace X with 0 - if (xm) - m = 0; - if (xp) - p = 0; - - if (gtlt === '>') { - // >1 => >=2.0.0 - // >1.2 => >=1.3.0 - // >1.2.3 => >= 1.2.4 - gtlt = '>='; - if (xm) { - M = +M + 1; - m = 0; - p = 0; - } else if (xp) { - m = +m + 1; - p = 0; - } - } else if (gtlt === '<=') { - // <=0.7.x is actually <0.8.0, since any 0.7.x should - // pass. Similarly, <=7.x is actually <8.0.0, etc. - gtlt = '<'; - if (xm) - M = +M + 1; - else - m = +m + 1; - } - - ret = gtlt + M + '.' + m + '.' + p; - } else if (xm) { - ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0'; - } else if (xp) { - ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0'; - } - - debug('xRange return', ret); - - return ret; - }); -} - -// Because * is AND-ed with everything else in the comparator, -// and '' means "any version", just remove the *s entirely. -function replaceStars(comp, loose) { - debug('replaceStars', comp, loose); - // Looseness is ignored here. star is always as loose as it gets! - return comp.trim().replace(re[STAR], ''); -} - -// This function is passed to string.replace(re[HYPHENRANGE]) -// M, m, patch, prerelease, build -// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5 -// 1.2.3 - 3.4 => >=1.2.0 <3.5.0 Any 3.4.x will do -// 1.2 - 3.4 => >=1.2.0 <3.5.0 -function hyphenReplace($0, - from, fM, fm, fp, fpr, fb, - to, tM, tm, tp, tpr, tb) { - - if (isX(fM)) - from = ''; - else if (isX(fm)) - from = '>=' + fM + '.0.0'; - else if (isX(fp)) - from = '>=' + fM + '.' + fm + '.0'; - else - from = '>=' + from; - - if (isX(tM)) - to = ''; - else if (isX(tm)) - to = '<' + (+tM + 1) + '.0.0'; - else if (isX(tp)) - to = '<' + tM + '.' + (+tm + 1) + '.0'; - else if (tpr) - to = '<=' + tM + '.' + tm + '.' + tp + '-' + tpr; - else - to = '<=' + to; - - return (from + ' ' + to).trim(); -} - - -// if ANY of the sets match ALL of its comparators, then pass -Range.prototype.test = function(version) { - if (!version) - return false; - - if (typeof version === 'string') - version = new SemVer(version, this.loose); - - for (var i = 0; i < this.set.length; i++) { - if (testSet(this.set[i], version)) - return true; - } - return false; -}; - -function testSet(set, version) { - for (var i = 0; i < set.length; i++) { - if (!set[i].test(version)) - return false; - } - - if (version.prerelease.length) { - // Find the set of versions that are allowed to have prereleases - // For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0 - // That should allow `1.2.3-pr.2` to pass. - // However, `1.2.4-alpha.notready` should NOT be allowed, - // even though it's within the range set by the comparators. - for (var i = 0; i < set.length; i++) { - debug(set[i].semver); - if (set[i].semver === ANY) - continue; - - if (set[i].semver.prerelease.length > 0) { - var allowed = set[i].semver; - if (allowed.major === version.major && - allowed.minor === version.minor && - allowed.patch === version.patch) - return true; - } - } - - // Version has a -pre, but it's not one of the ones we like. - return false; - } - - return true; -} - -exports.satisfies = satisfies; -function satisfies(version, range, loose) { - try { - range = new Range(range, loose); - } catch (er) { - return false; - } - return range.test(version); -} - -exports.maxSatisfying = maxSatisfying; -function maxSatisfying(versions, range, loose) { - var max = null; - var maxSV = null; - try { - var rangeObj = new Range(range, loose); - } catch (er) { - return null; - } - versions.forEach(function (v) { - if (rangeObj.test(v)) { // satisfies(v, range, loose) - if (!max || maxSV.compare(v) === -1) { // compare(max, v, true) - max = v; - maxSV = new SemVer(max, loose); - } - } - }) - return max; -} - -exports.minSatisfying = minSatisfying; -function minSatisfying(versions, range, loose) { - var min = null; - var minSV = null; - try { - var rangeObj = new Range(range, loose); - } catch (er) { - return null; - } - versions.forEach(function (v) { - if (rangeObj.test(v)) { // satisfies(v, range, loose) - if (!min || minSV.compare(v) === 1) { // compare(min, v, true) - min = v; - minSV = new SemVer(min, loose); - } - } - }) - return min; -} - -exports.validRange = validRange; -function validRange(range, loose) { - try { - // Return '*' instead of '' so that truthiness works. - // This will throw if it's invalid anyway - return new Range(range, loose).range || '*'; - } catch (er) { - return null; - } -} - -// Determine if version is less than all the versions possible in the range -exports.ltr = ltr; -function ltr(version, range, loose) { - return outside(version, range, '<', loose); -} - -// Determine if version is greater than all the versions possible in the range. -exports.gtr = gtr; -function gtr(version, range, loose) { - return outside(version, range, '>', loose); -} - -exports.outside = outside; -function outside(version, range, hilo, loose) { - version = new SemVer(version, loose); - range = new Range(range, loose); - - var gtfn, ltefn, ltfn, comp, ecomp; - switch (hilo) { - case '>': - gtfn = gt; - ltefn = lte; - ltfn = lt; - comp = '>'; - ecomp = '>='; - break; - case '<': - gtfn = lt; - ltefn = gte; - ltfn = gt; - comp = '<'; - ecomp = '<='; - break; - default: - throw new TypeError('Must provide a hilo val of "<" or ">"'); - } - - // If it satisifes the range it is not outside - if (satisfies(version, range, loose)) { - return false; - } - - // From now on, variable terms are as if we're in "gtr" mode. - // but note that everything is flipped for the "ltr" function. - - for (var i = 0; i < range.set.length; ++i) { - var comparators = range.set[i]; - - var high = null; - var low = null; - - comparators.forEach(function(comparator) { - if (comparator.semver === ANY) { - comparator = new Comparator('>=0.0.0') - } - high = high || comparator; - low = low || comparator; - if (gtfn(comparator.semver, high.semver, loose)) { - high = comparator; - } else if (ltfn(comparator.semver, low.semver, loose)) { - low = comparator; - } - }); - - // If the edge version comparator has a operator then our version - // isn't outside it - if (high.operator === comp || high.operator === ecomp) { - return false; - } - - // If the lowest version comparator has an operator and our version - // is less than it then it isn't higher than the range - if ((!low.operator || low.operator === comp) && - ltefn(version, low.semver)) { - return false; - } else if (low.operator === ecomp && ltfn(version, low.semver)) { - return false; - } - } - return true; -} - -exports.prerelease = prerelease; -function prerelease(version, loose) { - var parsed = parse(version, loose); - return (parsed && parsed.prerelease.length) ? parsed.prerelease : null; -} - -exports.intersects = intersects; -function intersects(r1, r2, loose) { - r1 = new Range(r1, loose) - r2 = new Range(r2, loose) - return r1.intersects(r2) -} - -exports.coerce = coerce; -function coerce(version) { - if (version instanceof SemVer) - return version; - - if (typeof version !== 'string') - return null; - - var match = version.match(re[COERCE]); - - if (match == null) - return null; - - return parse((match[1] || '0') + '.' + (match[2] || '0') + '.' + (match[3] || '0')); -} - - -/***/ }), -/* 23 */ -/***/ (function(module, exports) { - -module.exports = require("stream"); - -/***/ }), -/* 24 */ -/***/ (function(module, exports) { - -module.exports = require("url"); - -/***/ }), -/* 25 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return Subscription; }); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__util_isArray__ = __webpack_require__(41); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__util_isObject__ = __webpack_require__(444); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__util_isFunction__ = __webpack_require__(154); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__util_tryCatch__ = __webpack_require__(56); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__util_errorObject__ = __webpack_require__(48); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__util_UnsubscriptionError__ = __webpack_require__(441); -/** PURE_IMPORTS_START _util_isArray,_util_isObject,_util_isFunction,_util_tryCatch,_util_errorObject,_util_UnsubscriptionError PURE_IMPORTS_END */ - - - - - - -var Subscription = /*@__PURE__*/ (function () { - function Subscription(unsubscribe) { - this.closed = false; - this._parent = null; - this._parents = null; - this._subscriptions = null; - if (unsubscribe) { - this._unsubscribe = unsubscribe; - } - } - Subscription.prototype.unsubscribe = function () { - var hasErrors = false; - var errors; - if (this.closed) { - return; - } - var _a = this, _parent = _a._parent, _parents = _a._parents, _unsubscribe = _a._unsubscribe, _subscriptions = _a._subscriptions; - this.closed = true; - this._parent = null; - this._parents = null; - this._subscriptions = null; - var index = -1; - var len = _parents ? _parents.length : 0; - while (_parent) { - _parent.remove(this); - _parent = ++index < len && _parents[index] || null; - } - if (__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_2__util_isFunction__["a" /* isFunction */])(_unsubscribe)) { - var trial = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__util_tryCatch__["a" /* tryCatch */])(_unsubscribe).call(this); - if (trial === __WEBPACK_IMPORTED_MODULE_4__util_errorObject__["a" /* errorObject */]) { - hasErrors = true; - errors = errors || (__WEBPACK_IMPORTED_MODULE_4__util_errorObject__["a" /* errorObject */].e instanceof __WEBPACK_IMPORTED_MODULE_5__util_UnsubscriptionError__["a" /* UnsubscriptionError */] ? - flattenUnsubscriptionErrors(__WEBPACK_IMPORTED_MODULE_4__util_errorObject__["a" /* errorObject */].e.errors) : [__WEBPACK_IMPORTED_MODULE_4__util_errorObject__["a" /* errorObject */].e]); - } - } - if (__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_0__util_isArray__["a" /* isArray */])(_subscriptions)) { - index = -1; - len = _subscriptions.length; - while (++index < len) { - var sub = _subscriptions[index]; - if (__webpack_require__.i(__WEBPACK_IMPORTED_MODULE_1__util_isObject__["a" /* isObject */])(sub)) { - var trial = __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_3__util_tryCatch__["a" /* tryCatch */])(sub.unsubscribe).call(sub); - if (trial === __WEBPACK_IMPORTED_MODULE_4__util_errorObject__["a" /* errorObject */]) { - hasErrors = true; - errors = errors || []; - var err = __WEBPACK_IMPORTED_MODULE_4__util_errorObject__["a" /* errorObject */].e; - if (err instanceof __WEBPACK_IMPORTED_MODULE_5__util_UnsubscriptionError__["a" /* UnsubscriptionError */]) { - errors = errors.concat(flattenUnsubscriptionErrors(err.errors)); - } - else { - errors.push(err); - } - } - } - } - } - if (hasErrors) { - throw new __WEBPACK_IMPORTED_MODULE_5__util_UnsubscriptionError__["a" /* UnsubscriptionError */](errors); - } - }; - Subscription.prototype.add = function (teardown) { - if (!teardown || (teardown === Subscription.EMPTY)) { - return Subscription.EMPTY; - } - if (teardown === this) { - return this; - } - var subscription = teardown; - switch (typeof teardown) { - case 'function': - subscription = new Subscription(teardown); - case 'object': - if (subscription.closed || typeof subscription.unsubscribe !== 'function') { - return subscription; - } - else if (this.closed) { - subscription.unsubscribe(); - return subscription; - } - else if (typeof subscription._addParent !== 'function') { - var tmp = subscription; - subscription = new Subscription(); - subscription._subscriptions = [tmp]; - } - break; - default: - throw new Error('unrecognized teardown ' + teardown + ' added to Subscription.'); - } - var subscriptions = this._subscriptions || (this._subscriptions = []); - subscriptions.push(subscription); - subscription._addParent(this); - return subscription; - }; - Subscription.prototype.remove = function (subscription) { - var subscriptions = this._subscriptions; - if (subscriptions) { - var subscriptionIndex = subscriptions.indexOf(subscription); - if (subscriptionIndex !== -1) { - subscriptions.splice(subscriptionIndex, 1); - } - } - }; - Subscription.prototype._addParent = function (parent) { - var _a = this, _parent = _a._parent, _parents = _a._parents; - if (!_parent || _parent === parent) { - this._parent = parent; - } - else if (!_parents) { - this._parents = [parent]; - } - else if (_parents.indexOf(parent) === -1) { - _parents.push(parent); - } - }; - Subscription.EMPTY = (function (empty) { - empty.closed = true; - return empty; - }(new Subscription())); - return Subscription; -}()); - -function flattenUnsubscriptionErrors(errors) { - return errors.reduce(function (errs, err) { return errs.concat((err instanceof __WEBPACK_IMPORTED_MODULE_5__util_UnsubscriptionError__["a" /* UnsubscriptionError */]) ? err.errors : err); }, []); -} -//# sourceMappingURL=Subscription.js.map - - -/***/ }), -/* 26 */ -/***/ (function(module, exports, __webpack_require__) { - -// Copyright 2015 Joyent, Inc. - -module.exports = { - bufferSplit: bufferSplit, - addRSAMissing: addRSAMissing, - calculateDSAPublic: calculateDSAPublic, - calculateED25519Public: calculateED25519Public, - calculateX25519Public: calculateX25519Public, - mpNormalize: mpNormalize, - mpDenormalize: mpDenormalize, - ecNormalize: ecNormalize, - countZeros: countZeros, - assertCompatible: assertCompatible, - isCompatible: isCompatible, - opensslKeyDeriv: opensslKeyDeriv, - opensshCipherInfo: opensshCipherInfo, - publicFromPrivateECDSA: publicFromPrivateECDSA, - zeroPadToLength: zeroPadToLength, - writeBitString: writeBitString, - readBitString: readBitString -}; - -var assert = __webpack_require__(16); -var Buffer = __webpack_require__(15).Buffer; -var PrivateKey = __webpack_require__(33); -var Key = __webpack_require__(27); -var crypto = __webpack_require__(11); -var algs = __webpack_require__(32); -var asn1 = __webpack_require__(66); - -var ec, jsbn; -var nacl; - -var MAX_CLASS_DEPTH = 3; - -function isCompatible(obj, klass, needVer) { - if (obj === null || typeof (obj) !== 'object') - return (false); - if (needVer === undefined) - needVer = klass.prototype._sshpkApiVersion; - if (obj instanceof klass && - klass.prototype._sshpkApiVersion[0] == needVer[0]) - return (true); - var proto = Object.getPrototypeOf(obj); - var depth = 0; - while (proto.constructor.name !== klass.name) { - proto = Object.getPrototypeOf(proto); - if (!proto || ++depth > MAX_CLASS_DEPTH) - return (false); - } - if (proto.constructor.name !== klass.name) - return (false); - var ver = proto._sshpkApiVersion; - if (ver === undefined) - ver = klass._oldVersionDetect(obj); - if (ver[0] != needVer[0] || ver[1] < needVer[1]) - return (false); - return (true); -} - -function assertCompatible(obj, klass, needVer, name) { - if (name === undefined) - name = 'object'; - assert.ok(obj, name + ' must not be null'); - assert.object(obj, name + ' must be an object'); - if (needVer === undefined) - needVer = klass.prototype._sshpkApiVersion; - if (obj instanceof klass && - klass.prototype._sshpkApiVersion[0] == needVer[0]) - return; - var proto = Object.getPrototypeOf(obj); - var depth = 0; - while (proto.constructor.name !== klass.name) { - proto = Object.getPrototypeOf(proto); - assert.ok(proto && ++depth <= MAX_CLASS_DEPTH, - name + ' must be a ' + klass.name + ' instance'); - } - assert.strictEqual(proto.constructor.name, klass.name, - name + ' must be a ' + klass.name + ' instance'); - var ver = proto._sshpkApiVersion; - if (ver === undefined) - ver = klass._oldVersionDetect(obj); - assert.ok(ver[0] == needVer[0] && ver[1] >= needVer[1], - name + ' must be compatible with ' + klass.name + ' klass ' + - 'version ' + needVer[0] + '.' + needVer[1]); -} - -var CIPHER_LEN = { - 'des-ede3-cbc': { key: 7, iv: 8 }, - 'aes-128-cbc': { key: 16, iv: 16 } -}; -var PKCS5_SALT_LEN = 8; - -function opensslKeyDeriv(cipher, salt, passphrase, count) { - assert.buffer(salt, 'salt'); - assert.buffer(passphrase, 'passphrase'); - assert.number(count, 'iteration count'); - - var clen = CIPHER_LEN[cipher]; - assert.object(clen, 'supported cipher'); - - salt = salt.slice(0, PKCS5_SALT_LEN); - - var D, D_prev, bufs; - var material = Buffer.alloc(0); - while (material.length < clen.key + clen.iv) { - bufs = []; - if (D_prev) - bufs.push(D_prev); - bufs.push(passphrase); - bufs.push(salt); - D = Buffer.concat(bufs); - for (var j = 0; j < count; ++j) - D = crypto.createHash('md5').update(D).digest(); - material = Buffer.concat([material, D]); - D_prev = D; - } - - return ({ - key: material.slice(0, clen.key), - iv: material.slice(clen.key, clen.key + clen.iv) - }); -} - -/* Count leading zero bits on a buffer */ -function countZeros(buf) { - var o = 0, obit = 8; - while (o < buf.length) { - var mask = (1 << obit); - if ((buf[o] & mask) === mask) - break; - obit--; - if (obit < 0) { - o++; - obit = 8; - } - } - return (o*8 + (8 - obit) - 1); -} - -function bufferSplit(buf, chr) { - assert.buffer(buf); - assert.string(chr); - - var parts = []; - var lastPart = 0; - var matches = 0; - for (var i = 0; i < buf.length; ++i) { - if (buf[i] === chr.charCodeAt(matches)) - ++matches; - else if (buf[i] === chr.charCodeAt(0)) - matches = 1; - else - matches = 0; - - if (matches >= chr.length) { - var newPart = i + 1; - parts.push(buf.slice(lastPart, newPart - matches)); - lastPart = newPart; - matches = 0; - } - } - if (lastPart <= buf.length) - parts.push(buf.slice(lastPart, buf.length)); - - return (parts); -} - -function ecNormalize(buf, addZero) { - assert.buffer(buf); - if (buf[0] === 0x00 && buf[1] === 0x04) { - if (addZero) - return (buf); - return (buf.slice(1)); - } else if (buf[0] === 0x04) { - if (!addZero) - return (buf); - } else { - while (buf[0] === 0x00) - buf = buf.slice(1); - if (buf[0] === 0x02 || buf[0] === 0x03) - throw (new Error('Compressed elliptic curve points ' + - 'are not supported')); - if (buf[0] !== 0x04) - throw (new Error('Not a valid elliptic curve point')); - if (!addZero) - return (buf); - } - var b = Buffer.alloc(buf.length + 1); - b[0] = 0x0; - buf.copy(b, 1); - return (b); -} - -function readBitString(der, tag) { - if (tag === undefined) - tag = asn1.Ber.BitString; - var buf = der.readString(tag, true); - assert.strictEqual(buf[0], 0x00, 'bit strings with unused bits are ' + - 'not supported (0x' + buf[0].toString(16) + ')'); - return (buf.slice(1)); -} - -function writeBitString(der, buf, tag) { - if (tag === undefined) - tag = asn1.Ber.BitString; - var b = Buffer.alloc(buf.length + 1); - b[0] = 0x00; - buf.copy(b, 1); - der.writeBuffer(b, tag); -} - -function mpNormalize(buf) { - assert.buffer(buf); - while (buf.length > 1 && buf[0] === 0x00 && (buf[1] & 0x80) === 0x00) - buf = buf.slice(1); - if ((buf[0] & 0x80) === 0x80) { - var b = Buffer.alloc(buf.length + 1); - b[0] = 0x00; - buf.copy(b, 1); - buf = b; - } - return (buf); -} - -function mpDenormalize(buf) { - assert.buffer(buf); - while (buf.length > 1 && buf[0] === 0x00) - buf = buf.slice(1); - return (buf); -} - -function zeroPadToLength(buf, len) { - assert.buffer(buf); - assert.number(len); - while (buf.length > len) { - assert.equal(buf[0], 0x00); - buf = buf.slice(1); - } - while (buf.length < len) { - var b = Buffer.alloc(buf.length + 1); - b[0] = 0x00; - buf.copy(b, 1); - buf = b; - } - return (buf); -} - -function bigintToMpBuf(bigint) { - var buf = Buffer.from(bigint.toByteArray()); - buf = mpNormalize(buf); - return (buf); -} - -function calculateDSAPublic(g, p, x) { - assert.buffer(g); - assert.buffer(p); - assert.buffer(x); - try { - var bigInt = __webpack_require__(81).BigInteger; - } catch (e) { - throw (new Error('To load a PKCS#8 format DSA private key, ' + - 'the node jsbn library is required.')); - } - g = new bigInt(g); - p = new bigInt(p); - x = new bigInt(x); - var y = g.modPow(x, p); - var ybuf = bigintToMpBuf(y); - return (ybuf); -} - -function calculateED25519Public(k) { - assert.buffer(k); - - if (nacl === undefined) - nacl = __webpack_require__(76); - - var kp = nacl.sign.keyPair.fromSeed(new Uint8Array(k)); - return (Buffer.from(kp.publicKey)); -} - -function calculateX25519Public(k) { - assert.buffer(k); - - if (nacl === undefined) - nacl = __webpack_require__(76); - - var kp = nacl.box.keyPair.fromSeed(new Uint8Array(k)); - return (Buffer.from(kp.publicKey)); -} - -function addRSAMissing(key) { - assert.object(key); - assertCompatible(key, PrivateKey, [1, 1]); - try { - var bigInt = __webpack_require__(81).BigInteger; - } catch (e) { - throw (new Error('To write a PEM private key from ' + - 'this source, the node jsbn lib is required.')); - } - - var d = new bigInt(key.part.d.data); - var buf; - - if (!key.part.dmodp) { - var p = new bigInt(key.part.p.data); - var dmodp = d.mod(p.subtract(1)); - - buf = bigintToMpBuf(dmodp); - key.part.dmodp = {name: 'dmodp', data: buf}; - key.parts.push(key.part.dmodp); - } - if (!key.part.dmodq) { - var q = new bigInt(key.part.q.data); - var dmodq = d.mod(q.subtract(1)); - - buf = bigintToMpBuf(dmodq); - key.part.dmodq = {name: 'dmodq', data: buf}; - key.parts.push(key.part.dmodq); - } -} - -function publicFromPrivateECDSA(curveName, priv) { - assert.string(curveName, 'curveName'); - assert.buffer(priv); - if (ec === undefined) - ec = __webpack_require__(139); - if (jsbn === undefined) - jsbn = __webpack_require__(81).BigInteger; - var params = algs.curves[curveName]; - var p = new jsbn(params.p); - var a = new jsbn(params.a); - var b = new jsbn(params.b); - var curve = new ec.ECCurveFp(p, a, b); - var G = curve.decodePointHex(params.G.toString('hex')); - - var d = new jsbn(mpNormalize(priv)); - var pub = G.multiply(d); - pub = Buffer.from(curve.encodePointHex(pub), 'hex'); - - var parts = []; - parts.push({name: 'curve', data: Buffer.from(curveName)}); - parts.push({name: 'Q', data: pub}); - - var key = new Key({type: 'ecdsa', curve: curve, parts: parts}); - return (key); -} - -function opensshCipherInfo(cipher) { - var inf = {}; - switch (cipher) { - case '3des-cbc': - inf.keySize = 24; - inf.blockSize = 8; - inf.opensslName = 'des-ede3-cbc'; - break; - case 'blowfish-cbc': - inf.keySize = 16; - inf.blockSize = 8; - inf.opensslName = 'bf-cbc'; - break; - case 'aes128-cbc': - case 'aes128-ctr': - case 'aes128-gcm@openssh.com': - inf.keySize = 16; - inf.blockSize = 16; - inf.opensslName = 'aes-128-' + cipher.slice(7, 10); - break; - case 'aes192-cbc': - case 'aes192-ctr': - case 'aes192-gcm@openssh.com': - inf.keySize = 24; - inf.blockSize = 16; - inf.opensslName = 'aes-192-' + cipher.slice(7, 10); - break; - case 'aes256-cbc': - case 'aes256-ctr': - case 'aes256-gcm@openssh.com': - inf.keySize = 32; - inf.blockSize = 16; - inf.opensslName = 'aes-256-' + cipher.slice(7, 10); - break; - default: - throw (new Error( - 'Unsupported openssl cipher "' + cipher + '"')); - } - return (inf); -} - - -/***/ }), -/* 27 */ -/***/ (function(module, exports, __webpack_require__) { - -// Copyright 2017 Joyent, Inc. - -module.exports = Key; - -var assert = __webpack_require__(16); -var algs = __webpack_require__(32); -var crypto = __webpack_require__(11); -var Fingerprint = __webpack_require__(156); -var Signature = __webpack_require__(75); -var DiffieHellman = __webpack_require__(325).DiffieHellman; -var errs = __webpack_require__(74); -var utils = __webpack_require__(26); -var PrivateKey = __webpack_require__(33); -var edCompat; - -try { - edCompat = __webpack_require__(454); -} catch (e) { - /* Just continue through, and bail out if we try to use it. */ -} - -var InvalidAlgorithmError = errs.InvalidAlgorithmError; -var KeyParseError = errs.KeyParseError; - -var formats = {}; -formats['auto'] = __webpack_require__(455); -formats['pem'] = __webpack_require__(86); -formats['pkcs1'] = __webpack_require__(327); -formats['pkcs8'] = __webpack_require__(157); -formats['rfc4253'] = __webpack_require__(103); -formats['ssh'] = __webpack_require__(456); -formats['ssh-private'] = __webpack_require__(192); -formats['openssh'] = formats['ssh-private']; -formats['dnssec'] = __webpack_require__(326); - -function Key(opts) { - assert.object(opts, 'options'); - assert.arrayOfObject(opts.parts, 'options.parts'); - assert.string(opts.type, 'options.type'); - assert.optionalString(opts.comment, 'options.comment'); - - var algInfo = algs.info[opts.type]; - if (typeof (algInfo) !== 'object') - throw (new InvalidAlgorithmError(opts.type)); - - var partLookup = {}; - for (var i = 0; i < opts.parts.length; ++i) { - var part = opts.parts[i]; - partLookup[part.name] = part; - } - - this.type = opts.type; - this.parts = opts.parts; - this.part = partLookup; - this.comment = undefined; - this.source = opts.source; - - /* for speeding up hashing/fingerprint operations */ - this._rfc4253Cache = opts._rfc4253Cache; - this._hashCache = {}; - - var sz; - this.curve = undefined; - if (this.type === 'ecdsa') { - var curve = this.part.curve.data.toString(); - this.curve = curve; - sz = algs.curves[curve].size; - } else if (this.type === 'ed25519' || this.type === 'curve25519') { - sz = 256; - this.curve = 'curve25519'; - } else { - var szPart = this.part[algInfo.sizePart]; - sz = szPart.data.length; - sz = sz * 8 - utils.countZeros(szPart.data); - } - this.size = sz; -} - -Key.formats = formats; - -Key.prototype.toBuffer = function (format, options) { - if (format === undefined) - format = 'ssh'; - assert.string(format, 'format'); - assert.object(formats[format], 'formats[format]'); - assert.optionalObject(options, 'options'); - - if (format === 'rfc4253') { - if (this._rfc4253Cache === undefined) - this._rfc4253Cache = formats['rfc4253'].write(this); - return (this._rfc4253Cache); - } - - return (formats[format].write(this, options)); -}; - -Key.prototype.toString = function (format, options) { - return (this.toBuffer(format, options).toString()); -}; - -Key.prototype.hash = function (algo) { - assert.string(algo, 'algorithm'); - algo = algo.toLowerCase(); - if (algs.hashAlgs[algo] === undefined) - throw (new InvalidAlgorithmError(algo)); - - if (this._hashCache[algo]) - return (this._hashCache[algo]); - var hash = crypto.createHash(algo). - update(this.toBuffer('rfc4253')).digest(); - this._hashCache[algo] = hash; - return (hash); -}; - -Key.prototype.fingerprint = function (algo) { - if (algo === undefined) - algo = 'sha256'; - assert.string(algo, 'algorithm'); - var opts = { - type: 'key', - hash: this.hash(algo), - algorithm: algo - }; - return (new Fingerprint(opts)); -}; - -Key.prototype.defaultHashAlgorithm = function () { - var hashAlgo = 'sha1'; - if (this.type === 'rsa') - hashAlgo = 'sha256'; - if (this.type === 'dsa' && this.size > 1024) - hashAlgo = 'sha256'; - if (this.type === 'ed25519') - hashAlgo = 'sha512'; - if (this.type === 'ecdsa') { - if (this.size <= 256) - hashAlgo = 'sha256'; - else if (this.size <= 384) - hashAlgo = 'sha384'; - else - hashAlgo = 'sha512'; - } - return (hashAlgo); -}; - -Key.prototype.createVerify = function (hashAlgo) { - if (hashAlgo === undefined) - hashAlgo = this.defaultHashAlgorithm(); - assert.string(hashAlgo, 'hash algorithm'); - - /* ED25519 is not supported by OpenSSL, use a javascript impl. */ - if (this.type === 'ed25519' && edCompat !== undefined) - return (new edCompat.Verifier(this, hashAlgo)); - if (this.type === 'curve25519') - throw (new Error('Curve25519 keys are not suitable for ' + - 'signing or verification')); - - var v, nm, err; - try { - nm = hashAlgo.toUpperCase(); - v = crypto.createVerify(nm); - } catch (e) { - err = e; - } - if (v === undefined || (err instanceof Error && - err.message.match(/Unknown message digest/))) { - nm = 'RSA-'; - nm += hashAlgo.toUpperCase(); - v = crypto.createVerify(nm); - } - assert.ok(v, 'failed to create verifier'); - var oldVerify = v.verify.bind(v); - var key = this.toBuffer('pkcs8'); - var curve = this.curve; - var self = this; - v.verify = function (signature, fmt) { - if (Signature.isSignature(signature, [2, 0])) { - if (signature.type !== self.type) - return (false); - if (signature.hashAlgorithm && - signature.hashAlgorithm !== hashAlgo) - return (false); - if (signature.curve && self.type === 'ecdsa' && - signature.curve !== curve) - return (false); - return (oldVerify(key, signature.toBuffer('asn1'))); - - } else if (typeof (signature) === 'string' || - Buffer.isBuffer(signature)) { - return (oldVerify(key, signature, fmt)); - - /* - * Avoid doing this on valid arguments, walking the prototype - * chain can be quite slow. - */ - } else if (Signature.isSignature(signature, [1, 0])) { - throw (new Error('signature was created by too old ' + - 'a version of sshpk and cannot be verified')); - - } else { - throw (new TypeError('signature must be a string, ' + - 'Buffer, or Signature object')); - } - }; - return (v); -}; - -Key.prototype.createDiffieHellman = function () { - if (this.type === 'rsa') - throw (new Error('RSA keys do not support Diffie-Hellman')); - - return (new DiffieHellman(this)); -}; -Key.prototype.createDH = Key.prototype.createDiffieHellman; - -Key.parse = function (data, format, options) { - if (typeof (data) !== 'string') - assert.buffer(data, 'data'); - if (format === undefined) - format = 'auto'; - assert.string(format, 'format'); - if (typeof (options) === 'string') - options = { filename: options }; - assert.optionalObject(options, 'options'); - if (options === undefined) - options = {}; - assert.optionalString(options.filename, 'options.filename'); - if (options.filename === undefined) - options.filename = '(unnamed)'; - - assert.object(formats[format], 'formats[format]'); - - try { - var k = formats[format].read(data, options); - if (k instanceof PrivateKey) - k = k.toPublic(); - if (!k.comment) - k.comment = options.filename; - return (k); - } catch (e) { - if (e.name === 'KeyEncryptedError') - throw (e); - throw (new KeyParseError(options.filename, format, e)); - } -}; - -Key.isKey = function (obj, ver) { - return (utils.isCompatible(obj, Key, ver)); -}; - -/* - * API versions for Key: - * [1,0] -- initial ver, may take Signature for createVerify or may not - * [1,1] -- added pkcs1, pkcs8 formats - * [1,2] -- added auto, ssh-private, openssh formats - * [1,3] -- added defaultHashAlgorithm - * [1,4] -- added ed support, createDH - * [1,5] -- first explicitly tagged version - * [1,6] -- changed ed25519 part names - */ -Key.prototype._sshpkApiVersion = [1, 6]; - -Key._oldVersionDetect = function (obj) { - assert.func(obj.toBuffer); - assert.func(obj.fingerprint); - if (obj.createDH) - return ([1, 4]); - if (obj.defaultHashAlgorithm) - return ([1, 3]); - if (obj.formats['auto']) - return ([1, 2]); - if (obj.formats['pkcs1']) - return ([1, 1]); - return ([1, 0]); -}; - - -/***/ }), -/* 28 */ -/***/ (function(module, exports) { - -module.exports = require("assert"); - -/***/ }), -/* 29 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.default = nullify; -function nullify(obj = {}) { - if (Array.isArray(obj)) { - for (var _iterator = obj, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) { - var _ref; - - if (_isArray) { - if (_i >= _iterator.length) break; - _ref = _iterator[_i++]; - } else { - _i = _iterator.next(); - if (_i.done) break; - _ref = _i.value; - } - - const item = _ref; - - nullify(item); - } - } else if (obj !== null && typeof obj === 'object' || typeof obj === 'function') { - Object.setPrototypeOf(obj, null); - - // for..in can only be applied to 'object', not 'function' - if (typeof obj === 'object') { - for (const key in obj) { - nullify(obj[key]); - } - } - } - - return obj; -} - -/***/ }), -/* 30 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - -const escapeStringRegexp = __webpack_require__(388); -const ansiStyles = __webpack_require__(506); -const stdoutColor = __webpack_require__(598).stdout; - -const template = __webpack_require__(599); - -const isSimpleWindowsTerm = process.platform === 'win32' && !(process.env.TERM || '').toLowerCase().startsWith('xterm'); - -// `supportsColor.level` → `ansiStyles.color[name]` mapping -const levelMapping = ['ansi', 'ansi', 'ansi256', 'ansi16m']; - -// `color-convert` models to exclude from the Chalk API due to conflicts and such -const skipModels = new Set(['gray']); - -const styles = Object.create(null); - -function applyOptions(obj, options) { - options = options || {}; - - // Detect level if not set manually - const scLevel = stdoutColor ? stdoutColor.level : 0; - obj.level = options.level === undefined ? scLevel : options.level; - obj.enabled = 'enabled' in options ? options.enabled : obj.level > 0; -} - -function Chalk(options) { - // We check for this.template here since calling `chalk.constructor()` - // by itself will have a `this` of a previously constructed chalk object - if (!this || !(this instanceof Chalk) || this.template) { - const chalk = {}; - applyOptions(chalk, options); - - chalk.template = function () { - const args = [].slice.call(arguments); - return chalkTag.apply(null, [chalk.template].concat(args)); - }; - - Object.setPrototypeOf(chalk, Chalk.prototype); - Object.setPrototypeOf(chalk.template, chalk); - - chalk.template.constructor = Chalk; - - return chalk.template; - } - - applyOptions(this, options); -} - -// Use bright blue on Windows as the normal blue color is illegible -if (isSimpleWindowsTerm) { - ansiStyles.blue.open = '\u001B[94m'; -} - -for (const key of Object.keys(ansiStyles)) { - ansiStyles[key].closeRe = new RegExp(escapeStringRegexp(ansiStyles[key].close), 'g'); - - styles[key] = { - get() { - const codes = ansiStyles[key]; - return build.call(this, this._styles ? this._styles.concat(codes) : [codes], this._empty, key); - } - }; -} - -styles.visible = { - get() { - return build.call(this, this._styles || [], true, 'visible'); - } -}; - -ansiStyles.color.closeRe = new RegExp(escapeStringRegexp(ansiStyles.color.close), 'g'); -for (const model of Object.keys(ansiStyles.color.ansi)) { - if (skipModels.has(model)) { - continue; - } - - styles[model] = { - get() { - const level = this.level; - return function () { - const open = ansiStyles.color[levelMapping[level]][model].apply(null, arguments); - const codes = { - open, - close: ansiStyles.color.close, - closeRe: ansiStyles.color.closeRe - }; - return build.call(this, this._styles ? this._styles.concat(codes) : [codes], this._empty, model); - }; - } - }; -} - -ansiStyles.bgColor.closeRe = new RegExp(escapeStringRegexp(ansiStyles.bgColor.close), 'g'); -for (const model of Object.keys(ansiStyles.bgColor.ansi)) { - if (skipModels.has(model)) { - continue; - } - - const bgModel = 'bg' + model[0].toUpperCase() + model.slice(1); - styles[bgModel] = { - get() { - const level = this.level; - return function () { - const open = ansiStyles.bgColor[levelMapping[level]][model].apply(null, arguments); - const codes = { - open, - close: ansiStyles.bgColor.close, - closeRe: ansiStyles.bgColor.closeRe - }; - return build.call(this, this._styles ? this._styles.concat(codes) : [codes], this._empty, model); - }; - } - }; -} - -const proto = Object.defineProperties(() => {}, styles); - -function build(_styles, _empty, key) { - const builder = function () { - return applyStyle.apply(builder, arguments); - }; - - builder._styles = _styles; - builder._empty = _empty; - - const self = this; - - Object.defineProperty(builder, 'level', { - enumerable: true, - get() { - return self.level; - }, - set(level) { - self.level = level; - } - }); - - Object.defineProperty(builder, 'enabled', { - enumerable: true, - get() { - return self.enabled; - }, - set(enabled) { - self.enabled = enabled; - } - }); - - // See below for fix regarding invisible grey/dim combination on Windows - builder.hasGrey = this.hasGrey || key === 'gray' || key === 'grey'; - - // `__proto__` is used because we must return a function, but there is - // no way to create a function with a different prototype - builder.__proto__ = proto; // eslint-disable-line no-proto - - return builder; -} - -function applyStyle() { - // Support varags, but simply cast to string in case there's only one arg - const args = arguments; - const argsLen = args.length; - let str = String(arguments[0]); - - if (argsLen === 0) { - return ''; - } - - if (argsLen > 1) { - // Don't slice `arguments`, it prevents V8 optimizations - for (let a = 1; a < argsLen; a++) { - str += ' ' + args[a]; - } - } - - if (!this.enabled || this.level <= 0 || !str) { - return this._empty ? '' : str; - } - - // Turns out that on Windows dimmed gray text becomes invisible in cmd.exe, - // see https://github.com/chalk/chalk/issues/58 - // If we're on Windows and we're dealing with a gray color, temporarily make 'dim' a noop. - const originalDim = ansiStyles.dim.open; - if (isSimpleWindowsTerm && this.hasGrey) { - ansiStyles.dim.open = ''; - } - - for (const code of this._styles.slice().reverse()) { - // Replace any instances already present with a re-opening code - // otherwise only the part of the string until said closing code - // will be colored, and the rest will simply be 'plain'. - str = code.open + str.replace(code.closeRe, code.open) + code.close; - - // Close the styling before a linebreak and reopen - // after next line to fix a bleed issue on macOS - // https://github.com/chalk/chalk/pull/92 - str = str.replace(/\r?\n/g, `${code.close}$&${code.open}`); - } - - // Reset the original `dim` if we changed it to work around the Windows dimmed gray issue - ansiStyles.dim.open = originalDim; - - return str; -} - -function chalkTag(chalk, strings) { - if (!Array.isArray(strings)) { - // If chalk() was called by itself or with a string, - // return the string itself as a string. - return [].slice.call(arguments, 1).join(' '); - } - - const args = [].slice.call(arguments, 2); - const parts = [strings.raw[0]]; - - for (let i = 1; i < strings.length; i++) { - parts.push(String(args[i - 1]).replace(/[{}\\]/g, '\\$&')); - parts.push(String(strings.raw[i])); - } - - return template(chalk, parts.join('')); -} - -Object.defineProperties(Chalk.prototype, styles); - -module.exports = Chalk(); // eslint-disable-line new-cap -module.exports.supportsColor = stdoutColor; -module.exports.default = module.exports; // For TypeScript - - -/***/ }), -/* 31 */ -/***/ (function(module, exports) { - -var core = module.exports = { version: '2.5.7' }; -if (typeof __e == 'number') __e = core; // eslint-disable-line no-undef - - -/***/ }), -/* 32 */ -/***/ (function(module, exports, __webpack_require__) { - -// Copyright 2015 Joyent, Inc. - -var Buffer = __webpack_require__(15).Buffer; - -var algInfo = { - 'dsa': { - parts: ['p', 'q', 'g', 'y'], - sizePart: 'p' - }, - 'rsa': { - parts: ['e', 'n'], - sizePart: 'n' - }, - 'ecdsa': { - parts: ['curve', 'Q'], - sizePart: 'Q' - }, - 'ed25519': { - parts: ['A'], - sizePart: 'A' - } -}; -algInfo['curve25519'] = algInfo['ed25519']; - -var algPrivInfo = { - 'dsa': { - parts: ['p', 'q', 'g', 'y', 'x'] - }, - 'rsa': { - parts: ['n', 'e', 'd', 'iqmp', 'p', 'q'] - }, - 'ecdsa': { - parts: ['curve', 'Q', 'd'] - }, - 'ed25519': { - parts: ['A', 'k'] - } -}; -algPrivInfo['curve25519'] = algPrivInfo['ed25519']; - -var hashAlgs = { - 'md5': true, - 'sha1': true, - 'sha256': true, - 'sha384': true, - 'sha512': true -}; - -/* - * Taken from - * http://csrc.nist.gov/groups/ST/toolkit/documents/dss/NISTReCur.pdf - */ -var curves = { - 'nistp256': { - size: 256, - pkcs8oid: '1.2.840.10045.3.1.7', - p: Buffer.from(('00' + - 'ffffffff 00000001 00000000 00000000' + - '00000000 ffffffff ffffffff ffffffff'). - replace(/ /g, ''), 'hex'), - a: Buffer.from(('00' + - 'FFFFFFFF 00000001 00000000 00000000' + - '00000000 FFFFFFFF FFFFFFFF FFFFFFFC'). - replace(/ /g, ''), 'hex'), - b: Buffer.from(( - '5ac635d8 aa3a93e7 b3ebbd55 769886bc' + - '651d06b0 cc53b0f6 3bce3c3e 27d2604b'). - replace(/ /g, ''), 'hex'), - s: Buffer.from(('00' + - 'c49d3608 86e70493 6a6678e1 139d26b7' + - '819f7e90'). - replace(/ /g, ''), 'hex'), - n: Buffer.from(('00' + - 'ffffffff 00000000 ffffffff ffffffff' + - 'bce6faad a7179e84 f3b9cac2 fc632551'). - replace(/ /g, ''), 'hex'), - G: Buffer.from(('04' + - '6b17d1f2 e12c4247 f8bce6e5 63a440f2' + - '77037d81 2deb33a0 f4a13945 d898c296' + - '4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16' + - '2bce3357 6b315ece cbb64068 37bf51f5'). - replace(/ /g, ''), 'hex') - }, - 'nistp384': { - size: 384, - pkcs8oid: '1.3.132.0.34', - p: Buffer.from(('00' + - 'ffffffff ffffffff ffffffff ffffffff' + - 'ffffffff ffffffff ffffffff fffffffe' + - 'ffffffff 00000000 00000000 ffffffff'). - replace(/ /g, ''), 'hex'), - a: Buffer.from(('00' + - 'FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF' + - 'FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFE' + - 'FFFFFFFF 00000000 00000000 FFFFFFFC'). - replace(/ /g, ''), 'hex'), - b: Buffer.from(( - 'b3312fa7 e23ee7e4 988e056b e3f82d19' + - '181d9c6e fe814112 0314088f 5013875a' + - 'c656398d 8a2ed19d 2a85c8ed d3ec2aef'). - replace(/ /g, ''), 'hex'), - s: Buffer.from(('00' + - 'a335926a a319a27a 1d00896a 6773a482' + - '7acdac73'). - replace(/ /g, ''), 'hex'), - n: Buffer.from(('00' + - 'ffffffff ffffffff ffffffff ffffffff' + - 'ffffffff ffffffff c7634d81 f4372ddf' + - '581a0db2 48b0a77a ecec196a ccc52973'). - replace(/ /g, ''), 'hex'), - G: Buffer.from(('04' + - 'aa87ca22 be8b0537 8eb1c71e f320ad74' + - '6e1d3b62 8ba79b98 59f741e0 82542a38' + - '5502f25d bf55296c 3a545e38 72760ab7' + - '3617de4a 96262c6f 5d9e98bf 9292dc29' + - 'f8f41dbd 289a147c e9da3113 b5f0b8c0' + - '0a60b1ce 1d7e819d 7a431d7c 90ea0e5f'). - replace(/ /g, ''), 'hex') - }, - 'nistp521': { - size: 521, - pkcs8oid: '1.3.132.0.35', - p: Buffer.from(( - '01ffffff ffffffff ffffffff ffffffff' + - 'ffffffff ffffffff ffffffff ffffffff' + - 'ffffffff ffffffff ffffffff ffffffff' + - 'ffffffff ffffffff ffffffff ffffffff' + - 'ffff').replace(/ /g, ''), 'hex'), - a: Buffer.from(('01FF' + - 'FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF' + - 'FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF' + - 'FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF' + - 'FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFC'). - replace(/ /g, ''), 'hex'), - b: Buffer.from(('51' + - '953eb961 8e1c9a1f 929a21a0 b68540ee' + - 'a2da725b 99b315f3 b8b48991 8ef109e1' + - '56193951 ec7e937b 1652c0bd 3bb1bf07' + - '3573df88 3d2c34f1 ef451fd4 6b503f00'). - replace(/ /g, ''), 'hex'), - s: Buffer.from(('00' + - 'd09e8800 291cb853 96cc6717 393284aa' + - 'a0da64ba').replace(/ /g, ''), 'hex'), - n: Buffer.from(('01ff' + - 'ffffffff ffffffff ffffffff ffffffff' + - 'ffffffff ffffffff ffffffff fffffffa' + - '51868783 bf2f966b 7fcc0148 f709a5d0' + - '3bb5c9b8 899c47ae bb6fb71e 91386409'). - replace(/ /g, ''), 'hex'), - G: Buffer.from(('04' + - '00c6 858e06b7 0404e9cd 9e3ecb66 2395b442' + - '9c648139 053fb521 f828af60 6b4d3dba' + - 'a14b5e77 efe75928 fe1dc127 a2ffa8de' + - '3348b3c1 856a429b f97e7e31 c2e5bd66' + - '0118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9' + - '98f54449 579b4468 17afbd17 273e662c' + - '97ee7299 5ef42640 c550b901 3fad0761' + - '353c7086 a272c240 88be9476 9fd16650'). - replace(/ /g, ''), 'hex') - } -}; - -module.exports = { - info: algInfo, - privInfo: algPrivInfo, - hashAlgs: hashAlgs, - curves: curves -}; - - -/***/ }), -/* 33 */ -/***/ (function(module, exports, __webpack_require__) { - -// Copyright 2017 Joyent, Inc. - -module.exports = PrivateKey; - -var assert = __webpack_require__(16); -var Buffer = __webpack_require__(15).Buffer; -var algs = __webpack_require__(32); -var crypto = __webpack_require__(11); -var Fingerprint = __webpack_require__(156); -var Signature = __webpack_require__(75); -var errs = __webpack_require__(74); -var util = __webpack_require__(3); -var utils = __webpack_require__(26); -var dhe = __webpack_require__(325); -var generateECDSA = dhe.generateECDSA; -var generateED25519 = dhe.generateED25519; -var edCompat; -var nacl; - -try { - edCompat = __webpack_require__(454); -} catch (e) { - /* Just continue through, and bail out if we try to use it. */ -} - -var Key = __webpack_require__(27); - -var InvalidAlgorithmError = errs.InvalidAlgorithmError; -var KeyParseError = errs.KeyParseError; -var KeyEncryptedError = errs.KeyEncryptedError; - -var formats = {}; -formats['auto'] = __webpack_require__(455); -formats['pem'] = __webpack_require__(86); -formats['pkcs1'] = __webpack_require__(327); -formats['pkcs8'] = __webpack_require__(157); -formats['rfc4253'] = __webpack_require__(103); -formats['ssh-private'] = __webpack_require__(192); -formats['openssh'] = formats['ssh-private']; -formats['ssh'] = formats['ssh-private']; -formats['dnssec'] = __webpack_require__(326); - -function PrivateKey(opts) { - assert.object(opts, 'options'); - Key.call(this, opts); - - this._pubCache = undefined; -} -util.inherits(PrivateKey, Key); - -PrivateKey.formats = formats; - -PrivateKey.prototype.toBuffer = function (format, options) { - if (format === undefined) - format = 'pkcs1'; - assert.string(format, 'format'); - assert.object(formats[format], 'formats[format]'); - assert.optionalObject(options, 'options'); - - return (formats[format].write(this, options)); -}; - -PrivateKey.prototype.hash = function (algo) { - return (this.toPublic().hash(algo)); -}; - -PrivateKey.prototype.toPublic = function () { - if (this._pubCache) - return (this._pubCache); - - var algInfo = algs.info[this.type]; - var pubParts = []; - for (var i = 0; i < algInfo.parts.length; ++i) { - var p = algInfo.parts[i]; - pubParts.push(this.part[p]); - } - - this._pubCache = new Key({ - type: this.type, - source: this, - parts: pubParts - }); - if (this.comment) - this._pubCache.comment = this.comment; - return (this._pubCache); -}; - -PrivateKey.prototype.derive = function (newType) { - assert.string(newType, 'type'); - var priv, pub, pair; - - if (this.type === 'ed25519' && newType === 'curve25519') { - if (nacl === undefined) - nacl = __webpack_require__(76); - - priv = this.part.k.data; - if (priv[0] === 0x00) - priv = priv.slice(1); - - pair = nacl.box.keyPair.fromSecretKey(new Uint8Array(priv)); - pub = Buffer.from(pair.publicKey); - - return (new PrivateKey({ - type: 'curve25519', - parts: [ - { name: 'A', data: utils.mpNormalize(pub) }, - { name: 'k', data: utils.mpNormalize(priv) } - ] - })); - } else if (this.type === 'curve25519' && newType === 'ed25519') { - if (nacl === undefined) - nacl = __webpack_require__(76); - - priv = this.part.k.data; - if (priv[0] === 0x00) - priv = priv.slice(1); - - pair = nacl.sign.keyPair.fromSeed(new Uint8Array(priv)); - pub = Buffer.from(pair.publicKey); - - return (new PrivateKey({ - type: 'ed25519', - parts: [ - { name: 'A', data: utils.mpNormalize(pub) }, - { name: 'k', data: utils.mpNormalize(priv) } - ] - })); - } - throw (new Error('Key derivation not supported from ' + this.type + - ' to ' + newType)); -}; - -PrivateKey.prototype.createVerify = function (hashAlgo) { - return (this.toPublic().createVerify(hashAlgo)); -}; - -PrivateKey.prototype.createSign = function (hashAlgo) { - if (hashAlgo === undefined) - hashAlgo = this.defaultHashAlgorithm(); - assert.string(hashAlgo, 'hash algorithm'); - - /* ED25519 is not supported by OpenSSL, use a javascript impl. */ - if (this.type === 'ed25519' && edCompat !== undefined) - return (new edCompat.Signer(this, hashAlgo)); - if (this.type === 'curve25519') - throw (new Error('Curve25519 keys are not suitable for ' + - 'signing or verification')); - - var v, nm, err; - try { - nm = hashAlgo.toUpperCase(); - v = crypto.createSign(nm); - } catch (e) { - err = e; - } - if (v === undefined || (err instanceof Error && - err.message.match(/Unknown message digest/))) { - nm = 'RSA-'; - nm += hashAlgo.toUpperCase(); - v = crypto.createSign(nm); - } - assert.ok(v, 'failed to create verifier'); - var oldSign = v.sign.bind(v); - var key = this.toBuffer('pkcs1'); - var type = this.type; - var curve = this.curve; - v.sign = function () { - var sig = oldSign(key); - if (typeof (sig) === 'string') - sig = Buffer.from(sig, 'binary'); - sig = Signature.parse(sig, type, 'asn1'); - sig.hashAlgorithm = hashAlgo; - sig.curve = curve; - return (sig); - }; - return (v); -}; - -PrivateKey.parse = function (data, format, options) { - if (typeof (data) !== 'string') - assert.buffer(data, 'data'); - if (format === undefined) - format = 'auto'; - assert.string(format, 'format'); - if (typeof (options) === 'string') - options = { filename: options }; - assert.optionalObject(options, 'options'); - if (options === undefined) - options = {}; - assert.optionalString(options.filename, 'options.filename'); - if (options.filename === undefined) - options.filename = '(unnamed)'; - - assert.object(formats[format], 'formats[format]'); - - try { - var k = formats[format].read(data, options); - assert.ok(k instanceof PrivateKey, 'key is not a private key'); - if (!k.comment) - k.comment = options.filename; - return (k); - } catch (e) { - if (e.name === 'KeyEncryptedError') - throw (e); - throw (new KeyParseError(options.filename, format, e)); - } -}; - -PrivateKey.isPrivateKey = function (obj, ver) { - return (utils.isCompatible(obj, PrivateKey, ver)); -}; - -PrivateKey.generate = function (type, options) { - if (options === undefined) - options = {}; - assert.object(options, 'options'); - - switch (type) { - case 'ecdsa': - if (options.curve === undefined) - options.curve = 'nistp256'; - assert.string(options.curve, 'options.curve'); - return (generateECDSA(options.curve)); - case 'ed25519': - return (generateED25519()); - default: - throw (new Error('Key generation not supported with key ' + - 'type "' + type + '"')); - } -}; - -/* - * API versions for PrivateKey: - * [1,0] -- initial ver - * [1,1] -- added auto, pkcs[18], openssh/ssh-private formats - * [1,2] -- added defaultHashAlgorithm - * [1,3] -- added derive, ed, createDH - * [1,4] -- first tagged version - * [1,5] -- changed ed25519 part names and format - */ -PrivateKey.prototype._sshpkApiVersion = [1, 5]; - -PrivateKey._oldVersionDetect = function (obj) { - assert.func(obj.toPublic); - assert.func(obj.createSign); - if (obj.derive) - return ([1, 3]); - if (obj.defaultHashAlgorithm) - return ([1, 2]); - if (obj.formats['auto']) - return ([1, 1]); - return ([1, 0]); -}; - - -/***/ }), -/* 34 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.wrapLifecycle = exports.run = exports.install = exports.Install = undefined; - -var _extends2; - -function _load_extends() { - return _extends2 = _interopRequireDefault(__webpack_require__(21)); -} - -var _asyncToGenerator2; - -function _load_asyncToGenerator() { - return _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(2)); -} - -let install = exports.install = (() => { - var _ref29 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (config, reporter, flags, lockfile) { - yield wrapLifecycle(config, flags, (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { - const install = new Install(flags, config, reporter, lockfile); - yield install.init(); - })); - }); - - return function install(_x7, _x8, _x9, _x10) { - return _ref29.apply(this, arguments); - }; -})(); - -let run = exports.run = (() => { - var _ref31 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (config, reporter, flags, args) { - let lockfile; - let error = 'installCommandRenamed'; - if (flags.lockfile === false) { - lockfile = new (_lockfile || _load_lockfile()).default(); - } else { - lockfile = yield (_lockfile || _load_lockfile()).default.fromDirectory(config.lockfileFolder, reporter); - } - - if (args.length) { - const exampleArgs = args.slice(); - - if (flags.saveDev) { - exampleArgs.push('--dev'); - } - if (flags.savePeer) { - exampleArgs.push('--peer'); - } - if (flags.saveOptional) { - exampleArgs.push('--optional'); - } - if (flags.saveExact) { - exampleArgs.push('--exact'); - } - if (flags.saveTilde) { - exampleArgs.push('--tilde'); - } - let command = 'add'; - if (flags.global) { - error = 'globalFlagRemoved'; - command = 'global add'; - } - throw new (_errors || _load_errors()).MessageError(reporter.lang(error, `yarn ${command} ${exampleArgs.join(' ')}`)); - } - - yield install(config, reporter, flags, lockfile); - }); - - return function run(_x11, _x12, _x13, _x14) { - return _ref31.apply(this, arguments); - }; -})(); - -let wrapLifecycle = exports.wrapLifecycle = (() => { - var _ref32 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (config, flags, factory) { - yield config.executeLifecycleScript('preinstall'); - - yield factory(); - - // npm behaviour, seems kinda funky but yay compatibility - yield config.executeLifecycleScript('install'); - yield config.executeLifecycleScript('postinstall'); - - if (!config.production) { - if (!config.disablePrepublish) { - yield config.executeLifecycleScript('prepublish'); - } - yield config.executeLifecycleScript('prepare'); - } - }); - - return function wrapLifecycle(_x15, _x16, _x17) { - return _ref32.apply(this, arguments); - }; -})(); - -exports.hasWrapper = hasWrapper; -exports.setFlags = setFlags; - -var _objectPath; - -function _load_objectPath() { - return _objectPath = _interopRequireDefault(__webpack_require__(304)); -} - -var _hooks; - -function _load_hooks() { - return _hooks = __webpack_require__(374); -} - -var _index; - -function _load_index() { - return _index = _interopRequireDefault(__webpack_require__(220)); -} - -var _errors; - -function _load_errors() { - return _errors = __webpack_require__(6); -} - -var _integrityChecker; - -function _load_integrityChecker() { - return _integrityChecker = _interopRequireDefault(__webpack_require__(208)); -} - -var _lockfile; - -function _load_lockfile() { - return _lockfile = _interopRequireDefault(__webpack_require__(19)); -} - -var _lockfile2; - -function _load_lockfile2() { - return _lockfile2 = __webpack_require__(19); -} - -var _packageFetcher; - -function _load_packageFetcher() { - return _packageFetcher = _interopRequireWildcard(__webpack_require__(210)); -} - -var _packageInstallScripts; - -function _load_packageInstallScripts() { - return _packageInstallScripts = _interopRequireDefault(__webpack_require__(557)); -} - -var _packageCompatibility; - -function _load_packageCompatibility() { - return _packageCompatibility = _interopRequireWildcard(__webpack_require__(209)); -} - -var _packageResolver; - -function _load_packageResolver() { - return _packageResolver = _interopRequireDefault(__webpack_require__(366)); -} - -var _packageLinker; - -function _load_packageLinker() { - return _packageLinker = _interopRequireDefault(__webpack_require__(211)); -} - -var _index2; - -function _load_index2() { - return _index2 = __webpack_require__(57); -} - -var _index3; - -function _load_index3() { - return _index3 = __webpack_require__(78); -} - -var _autoclean; - -function _load_autoclean() { - return _autoclean = __webpack_require__(354); -} - -var _constants; - -function _load_constants() { - return _constants = _interopRequireWildcard(__webpack_require__(8)); -} - -var _normalizePattern; - -function _load_normalizePattern() { - return _normalizePattern = __webpack_require__(37); -} - -var _fs; - -function _load_fs() { - return _fs = _interopRequireWildcard(__webpack_require__(4)); -} - -var _map; - -function _load_map() { - return _map = _interopRequireDefault(__webpack_require__(29)); -} - -var _yarnVersion; - -function _load_yarnVersion() { - return _yarnVersion = __webpack_require__(120); -} - -var _generatePnpMap; - -function _load_generatePnpMap() { - return _generatePnpMap = __webpack_require__(579); -} - -var _workspaceLayout; - -function _load_workspaceLayout() { - return _workspaceLayout = _interopRequireDefault(__webpack_require__(90)); -} - -var _resolutionMap; - -function _load_resolutionMap() { - return _resolutionMap = _interopRequireDefault(__webpack_require__(214)); -} - -var _guessName; - -function _load_guessName() { - return _guessName = _interopRequireDefault(__webpack_require__(169)); -} - -var _audit; - -function _load_audit() { - return _audit = _interopRequireDefault(__webpack_require__(353)); -} - -function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } - -function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } - -const deepEqual = __webpack_require__(631); - -const emoji = __webpack_require__(302); -const invariant = __webpack_require__(9); -const path = __webpack_require__(0); -const semver = __webpack_require__(22); -const uuid = __webpack_require__(119); -const ssri = __webpack_require__(65); - -const ONE_DAY = 1000 * 60 * 60 * 24; - -/** - * Try and detect the installation method for Yarn and provide a command to update it with. - */ - -function getUpdateCommand(installationMethod) { - if (installationMethod === 'tar') { - return `curl --compressed -o- -L ${(_constants || _load_constants()).YARN_INSTALLER_SH} | bash`; - } - - if (installationMethod === 'homebrew') { - return 'brew upgrade yarn'; - } - - if (installationMethod === 'deb') { - return 'sudo apt-get update && sudo apt-get install yarn'; - } - - if (installationMethod === 'rpm') { - return 'sudo yum install yarn'; - } - - if (installationMethod === 'npm') { - return 'npm install --global yarn'; - } - - if (installationMethod === 'chocolatey') { - return 'choco upgrade yarn'; - } - - if (installationMethod === 'apk') { - return 'apk update && apk add -u yarn'; - } - - if (installationMethod === 'portage') { - return 'sudo emerge --sync && sudo emerge -au sys-apps/yarn'; - } - - return null; -} - -function getUpdateInstaller(installationMethod) { - // Windows - if (installationMethod === 'msi') { - return (_constants || _load_constants()).YARN_INSTALLER_MSI; - } - - return null; -} - -function normalizeFlags(config, rawFlags) { - const flags = { - // install - har: !!rawFlags.har, - ignorePlatform: !!rawFlags.ignorePlatform, - ignoreEngines: !!rawFlags.ignoreEngines, - ignoreScripts: !!rawFlags.ignoreScripts, - ignoreOptional: !!rawFlags.ignoreOptional, - force: !!rawFlags.force, - flat: !!rawFlags.flat, - lockfile: rawFlags.lockfile !== false, - pureLockfile: !!rawFlags.pureLockfile, - updateChecksums: !!rawFlags.updateChecksums, - skipIntegrityCheck: !!rawFlags.skipIntegrityCheck, - frozenLockfile: !!rawFlags.frozenLockfile, - linkDuplicates: !!rawFlags.linkDuplicates, - checkFiles: !!rawFlags.checkFiles, - audit: !!rawFlags.audit, - - // add - peer: !!rawFlags.peer, - dev: !!rawFlags.dev, - optional: !!rawFlags.optional, - exact: !!rawFlags.exact, - tilde: !!rawFlags.tilde, - ignoreWorkspaceRootCheck: !!rawFlags.ignoreWorkspaceRootCheck, - - // outdated, update-interactive - includeWorkspaceDeps: !!rawFlags.includeWorkspaceDeps, - - // add, remove, update - workspaceRootIsCwd: rawFlags.workspaceRootIsCwd !== false - }; - - if (config.getOption('ignore-scripts')) { - flags.ignoreScripts = true; - } - - if (config.getOption('ignore-platform')) { - flags.ignorePlatform = true; - } - - if (config.getOption('ignore-engines')) { - flags.ignoreEngines = true; - } - - if (config.getOption('ignore-optional')) { - flags.ignoreOptional = true; - } - - if (config.getOption('force')) { - flags.force = true; - } - - return flags; -} - -class Install { - constructor(flags, config, reporter, lockfile) { - this.rootManifestRegistries = []; - this.rootPatternsToOrigin = (0, (_map || _load_map()).default)(); - this.lockfile = lockfile; - this.reporter = reporter; - this.config = config; - this.flags = normalizeFlags(config, flags); - this.resolutions = (0, (_map || _load_map()).default)(); // Legacy resolutions field used for flat install mode - this.resolutionMap = new (_resolutionMap || _load_resolutionMap()).default(config); // Selective resolutions for nested dependencies - this.resolver = new (_packageResolver || _load_packageResolver()).default(config, lockfile, this.resolutionMap); - this.integrityChecker = new (_integrityChecker || _load_integrityChecker()).default(config); - this.linker = new (_packageLinker || _load_packageLinker()).default(config, this.resolver); - this.scripts = new (_packageInstallScripts || _load_packageInstallScripts()).default(config, this.resolver, this.flags.force); - } - - /** - * Create a list of dependency requests from the current directories manifests. - */ - - fetchRequestFromCwd(excludePatterns = [], ignoreUnusedPatterns = false) { - var _this = this; - - return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { - const patterns = []; - const deps = []; - let resolutionDeps = []; - const manifest = {}; - - const ignorePatterns = []; - const usedPatterns = []; - let workspaceLayout; - - // some commands should always run in the context of the entire workspace - const cwd = _this.flags.includeWorkspaceDeps || _this.flags.workspaceRootIsCwd ? _this.config.lockfileFolder : _this.config.cwd; - - // non-workspaces are always root, otherwise check for workspace root - const cwdIsRoot = !_this.config.workspaceRootFolder || _this.config.lockfileFolder === cwd; - - // exclude package names that are in install args - const excludeNames = []; - for (var _iterator = excludePatterns, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) { - var _ref; - - if (_isArray) { - if (_i >= _iterator.length) break; - _ref = _iterator[_i++]; - } else { - _i = _iterator.next(); - if (_i.done) break; - _ref = _i.value; - } - - const pattern = _ref; - - if ((0, (_index3 || _load_index3()).getExoticResolver)(pattern)) { - excludeNames.push((0, (_guessName || _load_guessName()).default)(pattern)); - } else { - // extract the name - const parts = (0, (_normalizePattern || _load_normalizePattern()).normalizePattern)(pattern); - excludeNames.push(parts.name); - } - } - - const stripExcluded = function stripExcluded(manifest) { - for (var _iterator2 = excludeNames, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _iterator2[Symbol.iterator]();;) { - var _ref2; - - if (_isArray2) { - if (_i2 >= _iterator2.length) break; - _ref2 = _iterator2[_i2++]; - } else { - _i2 = _iterator2.next(); - if (_i2.done) break; - _ref2 = _i2.value; - } - - const exclude = _ref2; - - if (manifest.dependencies && manifest.dependencies[exclude]) { - delete manifest.dependencies[exclude]; - } - if (manifest.devDependencies && manifest.devDependencies[exclude]) { - delete manifest.devDependencies[exclude]; - } - if (manifest.optionalDependencies && manifest.optionalDependencies[exclude]) { - delete manifest.optionalDependencies[exclude]; - } - } - }; - - for (var _iterator3 = Object.keys((_index2 || _load_index2()).registries), _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : _iterator3[Symbol.iterator]();;) { - var _ref3; - - if (_isArray3) { - if (_i3 >= _iterator3.length) break; - _ref3 = _iterator3[_i3++]; - } else { - _i3 = _iterator3.next(); - if (_i3.done) break; - _ref3 = _i3.value; - } - - const registry = _ref3; - - const filename = (_index2 || _load_index2()).registries[registry].filename; - - const loc = path.join(cwd, filename); - if (!(yield (_fs || _load_fs()).exists(loc))) { - continue; - } - - _this.rootManifestRegistries.push(registry); - - const projectManifestJson = yield _this.config.readJson(loc); - yield (0, (_index || _load_index()).default)(projectManifestJson, cwd, _this.config, cwdIsRoot); - - Object.assign(_this.resolutions, projectManifestJson.resolutions); - Object.assign(manifest, projectManifestJson); - - _this.resolutionMap.init(_this.resolutions); - for (var _iterator4 = Object.keys(_this.resolutionMap.resolutionsByPackage), _isArray4 = Array.isArray(_iterator4), _i4 = 0, _iterator4 = _isArray4 ? _iterator4 : _iterator4[Symbol.iterator]();;) { - var _ref4; - - if (_isArray4) { - if (_i4 >= _iterator4.length) break; - _ref4 = _iterator4[_i4++]; - } else { - _i4 = _iterator4.next(); - if (_i4.done) break; - _ref4 = _i4.value; - } - - const packageName = _ref4; - - const optional = (_objectPath || _load_objectPath()).default.has(manifest.optionalDependencies, packageName) && _this.flags.ignoreOptional; - for (var _iterator8 = _this.resolutionMap.resolutionsByPackage[packageName], _isArray8 = Array.isArray(_iterator8), _i8 = 0, _iterator8 = _isArray8 ? _iterator8 : _iterator8[Symbol.iterator]();;) { - var _ref9; - - if (_isArray8) { - if (_i8 >= _iterator8.length) break; - _ref9 = _iterator8[_i8++]; - } else { - _i8 = _iterator8.next(); - if (_i8.done) break; - _ref9 = _i8.value; - } - - const _ref8 = _ref9; - const pattern = _ref8.pattern; - - resolutionDeps = [...resolutionDeps, { registry, pattern, optional, hint: 'resolution' }]; - } - } - - const pushDeps = function pushDeps(depType, manifest, { hint, optional }, isUsed) { - if (ignoreUnusedPatterns && !isUsed) { - return; - } - // We only take unused dependencies into consideration to get deterministic hoisting. - // Since flat mode doesn't care about hoisting and everything is top level and specified then we can safely - // leave these out. - if (_this.flags.flat && !isUsed) { - return; - } - const depMap = manifest[depType]; - for (const name in depMap) { - if (excludeNames.indexOf(name) >= 0) { - continue; - } - - let pattern = name; - if (!_this.lockfile.getLocked(pattern)) { - // when we use --save we save the dependency to the lockfile with just the name rather than the - // version combo - pattern += '@' + depMap[name]; - } - - // normalization made sure packages are mentioned only once - if (isUsed) { - usedPatterns.push(pattern); - } else { - ignorePatterns.push(pattern); - } - - _this.rootPatternsToOrigin[pattern] = depType; - patterns.push(pattern); - deps.push({ pattern, registry, hint, optional, workspaceName: manifest.name, workspaceLoc: manifest._loc }); - } - }; - - if (cwdIsRoot) { - pushDeps('dependencies', projectManifestJson, { hint: null, optional: false }, true); - pushDeps('devDependencies', projectManifestJson, { hint: 'dev', optional: false }, !_this.config.production); - pushDeps('optionalDependencies', projectManifestJson, { hint: 'optional', optional: true }, true); - } - - if (_this.config.workspaceRootFolder) { - const workspaceLoc = cwdIsRoot ? loc : path.join(_this.config.lockfileFolder, filename); - const workspacesRoot = path.dirname(workspaceLoc); - - let workspaceManifestJson = projectManifestJson; - if (!cwdIsRoot) { - // the manifest we read before was a child workspace, so get the root - workspaceManifestJson = yield _this.config.readJson(workspaceLoc); - yield (0, (_index || _load_index()).default)(workspaceManifestJson, workspacesRoot, _this.config, true); - } - - const workspaces = yield _this.config.resolveWorkspaces(workspacesRoot, workspaceManifestJson); - workspaceLayout = new (_workspaceLayout || _load_workspaceLayout()).default(workspaces, _this.config); - - // add virtual manifest that depends on all workspaces, this way package hoisters and resolvers will work fine - const workspaceDependencies = (0, (_extends2 || _load_extends()).default)({}, workspaceManifestJson.dependencies); - for (var _iterator5 = Object.keys(workspaces), _isArray5 = Array.isArray(_iterator5), _i5 = 0, _iterator5 = _isArray5 ? _iterator5 : _iterator5[Symbol.iterator]();;) { - var _ref5; - - if (_isArray5) { - if (_i5 >= _iterator5.length) break; - _ref5 = _iterator5[_i5++]; - } else { - _i5 = _iterator5.next(); - if (_i5.done) break; - _ref5 = _i5.value; - } - - const workspaceName = _ref5; - - const workspaceManifest = workspaces[workspaceName].manifest; - workspaceDependencies[workspaceName] = workspaceManifest.version; - - // include dependencies from all workspaces - if (_this.flags.includeWorkspaceDeps) { - pushDeps('dependencies', workspaceManifest, { hint: null, optional: false }, true); - pushDeps('devDependencies', workspaceManifest, { hint: 'dev', optional: false }, !_this.config.production); - pushDeps('optionalDependencies', workspaceManifest, { hint: 'optional', optional: true }, true); - } - } - const virtualDependencyManifest = { - _uid: '', - name: `workspace-aggregator-${uuid.v4()}`, - version: '1.0.0', - _registry: 'npm', - _loc: workspacesRoot, - dependencies: workspaceDependencies, - devDependencies: (0, (_extends2 || _load_extends()).default)({}, workspaceManifestJson.devDependencies), - optionalDependencies: (0, (_extends2 || _load_extends()).default)({}, workspaceManifestJson.optionalDependencies), - private: workspaceManifestJson.private, - workspaces: workspaceManifestJson.workspaces - }; - workspaceLayout.virtualManifestName = virtualDependencyManifest.name; - const virtualDep = {}; - virtualDep[virtualDependencyManifest.name] = virtualDependencyManifest.version; - workspaces[virtualDependencyManifest.name] = { loc: workspacesRoot, manifest: virtualDependencyManifest }; - - // ensure dependencies that should be excluded are stripped from the correct manifest - stripExcluded(cwdIsRoot ? virtualDependencyManifest : workspaces[projectManifestJson.name].manifest); - - pushDeps('workspaces', { workspaces: virtualDep }, { hint: 'workspaces', optional: false }, true); - - const implicitWorkspaceDependencies = (0, (_extends2 || _load_extends()).default)({}, workspaceDependencies); - - for (var _iterator6 = (_constants || _load_constants()).OWNED_DEPENDENCY_TYPES, _isArray6 = Array.isArray(_iterator6), _i6 = 0, _iterator6 = _isArray6 ? _iterator6 : _iterator6[Symbol.iterator]();;) { - var _ref6; - - if (_isArray6) { - if (_i6 >= _iterator6.length) break; - _ref6 = _iterator6[_i6++]; - } else { - _i6 = _iterator6.next(); - if (_i6.done) break; - _ref6 = _i6.value; - } - - const type = _ref6; - - for (var _iterator7 = Object.keys(projectManifestJson[type] || {}), _isArray7 = Array.isArray(_iterator7), _i7 = 0, _iterator7 = _isArray7 ? _iterator7 : _iterator7[Symbol.iterator]();;) { - var _ref7; - - if (_isArray7) { - if (_i7 >= _iterator7.length) break; - _ref7 = _iterator7[_i7++]; - } else { - _i7 = _iterator7.next(); - if (_i7.done) break; - _ref7 = _i7.value; - } - - const dependencyName = _ref7; - - delete implicitWorkspaceDependencies[dependencyName]; - } - } - - pushDeps('dependencies', { dependencies: implicitWorkspaceDependencies }, { hint: 'workspaces', optional: false }, true); - } - - break; - } - - // inherit root flat flag - if (manifest.flat) { - _this.flags.flat = true; - } - - return { - requests: [...resolutionDeps, ...deps], - patterns, - manifest, - usedPatterns, - ignorePatterns, - workspaceLayout - }; - })(); - } - - /** - * TODO description - */ - - prepareRequests(requests) { - return requests; - } - - preparePatterns(patterns) { - return patterns; - } - preparePatternsForLinking(patterns, cwdManifest, cwdIsRoot) { - return patterns; - } - - prepareManifests() { - var _this2 = this; - - return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { - const manifests = yield _this2.config.getRootManifests(); - return manifests; - })(); - } - - bailout(patterns, workspaceLayout) { - var _this3 = this; - - return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { - // We don't want to skip the audit - it could yield important errors - if (_this3.flags.audit) { - return false; - } - // PNP is so fast that the integrity check isn't pertinent - if (_this3.config.plugnplayEnabled) { - return false; - } - if (_this3.flags.skipIntegrityCheck || _this3.flags.force) { - return false; - } - const lockfileCache = _this3.lockfile.cache; - if (!lockfileCache) { - return false; - } - const lockfileClean = _this3.lockfile.parseResultType === 'success'; - const match = yield _this3.integrityChecker.check(patterns, lockfileCache, _this3.flags, workspaceLayout); - if (_this3.flags.frozenLockfile && (!lockfileClean || match.missingPatterns.length > 0)) { - throw new (_errors || _load_errors()).MessageError(_this3.reporter.lang('frozenLockfileError')); - } - - const haveLockfile = yield (_fs || _load_fs()).exists(path.join(_this3.config.lockfileFolder, (_constants || _load_constants()).LOCKFILE_FILENAME)); - - const lockfileIntegrityPresent = !_this3.lockfile.hasEntriesExistWithoutIntegrity(); - const integrityBailout = lockfileIntegrityPresent || !_this3.config.autoAddIntegrity; - - if (match.integrityMatches && haveLockfile && lockfileClean && integrityBailout) { - _this3.reporter.success(_this3.reporter.lang('upToDate')); - return true; - } - - if (match.integrityFileMissing && haveLockfile) { - // Integrity file missing, force script installations - _this3.scripts.setForce(true); - return false; - } - - if (match.hardRefreshRequired) { - // e.g. node version doesn't match, force script installations - _this3.scripts.setForce(true); - return false; - } - - if (!patterns.length && !match.integrityFileMissing) { - _this3.reporter.success(_this3.reporter.lang('nothingToInstall')); - yield _this3.createEmptyManifestFolders(); - yield _this3.saveLockfileAndIntegrity(patterns, workspaceLayout); - return true; - } - - return false; - })(); - } - - /** - * Produce empty folders for all used root manifests. - */ - - createEmptyManifestFolders() { - var _this4 = this; - - return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { - if (_this4.config.modulesFolder) { - // already created - return; - } - - for (var _iterator9 = _this4.rootManifestRegistries, _isArray9 = Array.isArray(_iterator9), _i9 = 0, _iterator9 = _isArray9 ? _iterator9 : _iterator9[Symbol.iterator]();;) { - var _ref10; - - if (_isArray9) { - if (_i9 >= _iterator9.length) break; - _ref10 = _iterator9[_i9++]; - } else { - _i9 = _iterator9.next(); - if (_i9.done) break; - _ref10 = _i9.value; - } - - const registryName = _ref10; - const folder = _this4.config.registries[registryName].folder; - - yield (_fs || _load_fs()).mkdirp(path.join(_this4.config.lockfileFolder, folder)); - } - })(); - } - - /** - * TODO description - */ - - markIgnored(patterns) { - for (var _iterator10 = patterns, _isArray10 = Array.isArray(_iterator10), _i10 = 0, _iterator10 = _isArray10 ? _iterator10 : _iterator10[Symbol.iterator]();;) { - var _ref11; - - if (_isArray10) { - if (_i10 >= _iterator10.length) break; - _ref11 = _iterator10[_i10++]; - } else { - _i10 = _iterator10.next(); - if (_i10.done) break; - _ref11 = _i10.value; - } - - const pattern = _ref11; - - const manifest = this.resolver.getStrictResolvedPattern(pattern); - const ref = manifest._reference; - invariant(ref, 'expected package reference'); - - // just mark the package as ignored. if the package is used by a required package, the hoister - // will take care of that. - ref.ignore = true; - } - } - - /** - * helper method that gets only recent manifests - * used by global.ls command - */ - getFlattenedDeps() { - var _this5 = this; - - return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { - var _ref12 = yield _this5.fetchRequestFromCwd(); - - const depRequests = _ref12.requests, - rawPatterns = _ref12.patterns; - - - yield _this5.resolver.init(depRequests, {}); - - const manifests = yield (_packageFetcher || _load_packageFetcher()).fetch(_this5.resolver.getManifests(), _this5.config); - _this5.resolver.updateManifests(manifests); - - return _this5.flatten(rawPatterns); - })(); - } - - /** - * TODO description - */ - - init() { - var _this6 = this; - - return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { - _this6.checkUpdate(); - - // warn if we have a shrinkwrap - if (yield (_fs || _load_fs()).exists(path.join(_this6.config.lockfileFolder, (_constants || _load_constants()).NPM_SHRINKWRAP_FILENAME))) { - _this6.reporter.warn(_this6.reporter.lang('shrinkwrapWarning')); - } - - // warn if we have an npm lockfile - if (yield (_fs || _load_fs()).exists(path.join(_this6.config.lockfileFolder, (_constants || _load_constants()).NPM_LOCK_FILENAME))) { - _this6.reporter.warn(_this6.reporter.lang('npmLockfileWarning')); - } - - if (_this6.config.plugnplayEnabled) { - _this6.reporter.info(_this6.reporter.lang('plugnplaySuggestV2L1')); - _this6.reporter.info(_this6.reporter.lang('plugnplaySuggestV2L2')); - } - - let flattenedTopLevelPatterns = []; - const steps = []; - - var _ref13 = yield _this6.fetchRequestFromCwd(); - - const depRequests = _ref13.requests, - rawPatterns = _ref13.patterns, - ignorePatterns = _ref13.ignorePatterns, - workspaceLayout = _ref13.workspaceLayout, - manifest = _ref13.manifest; - - let topLevelPatterns = []; - - const artifacts = yield _this6.integrityChecker.getArtifacts(); - if (artifacts) { - _this6.linker.setArtifacts(artifacts); - _this6.scripts.setArtifacts(artifacts); - } - - if ((_packageCompatibility || _load_packageCompatibility()).shouldCheck(manifest, _this6.flags)) { - steps.push((() => { - var _ref14 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (curr, total) { - _this6.reporter.step(curr, total, _this6.reporter.lang('checkingManifest'), emoji.get('mag')); - yield _this6.checkCompatibility(); - }); - - return function (_x, _x2) { - return _ref14.apply(this, arguments); - }; - })()); - } - - const audit = new (_audit || _load_audit()).default(_this6.config, _this6.reporter, { groups: (_constants || _load_constants()).OWNED_DEPENDENCY_TYPES }); - let auditFoundProblems = false; - - steps.push(function (curr, total) { - return (0, (_hooks || _load_hooks()).callThroughHook)('resolveStep', (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { - _this6.reporter.step(curr, total, _this6.reporter.lang('resolvingPackages'), emoji.get('mag')); - yield _this6.resolver.init(_this6.prepareRequests(depRequests), { - isFlat: _this6.flags.flat, - isFrozen: _this6.flags.frozenLockfile, - workspaceLayout - }); - topLevelPatterns = _this6.preparePatterns(rawPatterns); - flattenedTopLevelPatterns = yield _this6.flatten(topLevelPatterns); - return { bailout: !_this6.flags.audit && (yield _this6.bailout(topLevelPatterns, workspaceLayout)) }; - })); - }); - - if (_this6.flags.audit) { - steps.push(function (curr, total) { - return (0, (_hooks || _load_hooks()).callThroughHook)('auditStep', (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { - _this6.reporter.step(curr, total, _this6.reporter.lang('auditRunning'), emoji.get('mag')); - if (_this6.flags.offline) { - _this6.reporter.warn(_this6.reporter.lang('auditOffline')); - return { bailout: false }; - } - const preparedManifests = yield _this6.prepareManifests(); - // $FlowFixMe - Flow considers `m` in the map operation to be "mixed", so does not recognize `m.object` - const mergedManifest = Object.assign({}, ...Object.values(preparedManifests).map(function (m) { - return m.object; - })); - const auditVulnerabilityCounts = yield audit.performAudit(mergedManifest, _this6.lockfile, _this6.resolver, _this6.linker, topLevelPatterns); - auditFoundProblems = auditVulnerabilityCounts.info || auditVulnerabilityCounts.low || auditVulnerabilityCounts.moderate || auditVulnerabilityCounts.high || auditVulnerabilityCounts.critical; - return { bailout: yield _this6.bailout(topLevelPatterns, workspaceLayout) }; - })); - }); - } - - steps.push(function (curr, total) { - return (0, (_hooks || _load_hooks()).callThroughHook)('fetchStep', (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { - _this6.markIgnored(ignorePatterns); - _this6.reporter.step(curr, total, _this6.reporter.lang('fetchingPackages'), emoji.get('truck')); - const manifests = yield (_packageFetcher || _load_packageFetcher()).fetch(_this6.resolver.getManifests(), _this6.config); - _this6.resolver.updateManifests(manifests); - yield (_packageCompatibility || _load_packageCompatibility()).check(_this6.resolver.getManifests(), _this6.config, _this6.flags.ignoreEngines); - })); - }); - - steps.push(function (curr, total) { - return (0, (_hooks || _load_hooks()).callThroughHook)('linkStep', (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { - // remove integrity hash to make this operation atomic - yield _this6.integrityChecker.removeIntegrityFile(); - _this6.reporter.step(curr, total, _this6.reporter.lang('linkingDependencies'), emoji.get('link')); - flattenedTopLevelPatterns = _this6.preparePatternsForLinking(flattenedTopLevelPatterns, manifest, _this6.config.lockfileFolder === _this6.config.cwd); - yield _this6.linker.init(flattenedTopLevelPatterns, workspaceLayout, { - linkDuplicates: _this6.flags.linkDuplicates, - ignoreOptional: _this6.flags.ignoreOptional - }); - })); - }); - - if (_this6.config.plugnplayEnabled) { - steps.push(function (curr, total) { - return (0, (_hooks || _load_hooks()).callThroughHook)('pnpStep', (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { - const pnpPath = `${_this6.config.lockfileFolder}/${(_constants || _load_constants()).PNP_FILENAME}`; - - const code = yield (0, (_generatePnpMap || _load_generatePnpMap()).generatePnpMap)(_this6.config, flattenedTopLevelPatterns, { - resolver: _this6.resolver, - reporter: _this6.reporter, - targetPath: pnpPath, - workspaceLayout - }); - - try { - const file = yield (_fs || _load_fs()).readFile(pnpPath); - if (file === code) { - return; - } - } catch (error) {} - - yield (_fs || _load_fs()).writeFile(pnpPath, code); - yield (_fs || _load_fs()).chmod(pnpPath, 0o755); - })); - }); - } - - steps.push(function (curr, total) { - return (0, (_hooks || _load_hooks()).callThroughHook)('buildStep', (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { - _this6.reporter.step(curr, total, _this6.flags.force ? _this6.reporter.lang('rebuildingPackages') : _this6.reporter.lang('buildingFreshPackages'), emoji.get('hammer')); - - if (_this6.config.ignoreScripts) { - _this6.reporter.warn(_this6.reporter.lang('ignoredScripts')); - } else { - yield _this6.scripts.init(flattenedTopLevelPatterns); - } - })); - }); - - if (_this6.flags.har) { - steps.push((() => { - var _ref21 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (curr, total) { - const formattedDate = new Date().toISOString().replace(/:/g, '-'); - const filename = `yarn-install_${formattedDate}.har`; - _this6.reporter.step(curr, total, _this6.reporter.lang('savingHar', filename), emoji.get('black_circle_for_record')); - yield _this6.config.requestManager.saveHar(filename); - }); - - return function (_x3, _x4) { - return _ref21.apply(this, arguments); - }; - })()); - } - - if (yield _this6.shouldClean()) { - steps.push((() => { - var _ref22 = (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* (curr, total) { - _this6.reporter.step(curr, total, _this6.reporter.lang('cleaningModules'), emoji.get('recycle')); - yield (0, (_autoclean || _load_autoclean()).clean)(_this6.config, _this6.reporter); - }); - - return function (_x5, _x6) { - return _ref22.apply(this, arguments); - }; - })()); - } - - let currentStep = 0; - for (var _iterator11 = steps, _isArray11 = Array.isArray(_iterator11), _i11 = 0, _iterator11 = _isArray11 ? _iterator11 : _iterator11[Symbol.iterator]();;) { - var _ref23; - - if (_isArray11) { - if (_i11 >= _iterator11.length) break; - _ref23 = _iterator11[_i11++]; - } else { - _i11 = _iterator11.next(); - if (_i11.done) break; - _ref23 = _i11.value; - } - - const step = _ref23; - - const stepResult = yield step(++currentStep, steps.length); - if (stepResult && stepResult.bailout) { - if (_this6.flags.audit) { - audit.summary(); - } - if (auditFoundProblems) { - _this6.reporter.warn(_this6.reporter.lang('auditRunAuditForDetails')); - } - _this6.maybeOutputUpdate(); - return flattenedTopLevelPatterns; - } - } - - // fin! - if (_this6.flags.audit) { - audit.summary(); - } - if (auditFoundProblems) { - _this6.reporter.warn(_this6.reporter.lang('auditRunAuditForDetails')); - } - yield _this6.saveLockfileAndIntegrity(topLevelPatterns, workspaceLayout); - yield _this6.persistChanges(); - _this6.maybeOutputUpdate(); - _this6.config.requestManager.clearCache(); - return flattenedTopLevelPatterns; - })(); - } - - checkCompatibility() { - var _this7 = this; - - return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { - var _ref24 = yield _this7.fetchRequestFromCwd(); - - const manifest = _ref24.manifest; - - yield (_packageCompatibility || _load_packageCompatibility()).checkOne(manifest, _this7.config, _this7.flags.ignoreEngines); - })(); - } - - persistChanges() { - var _this8 = this; - - return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { - // get all the different registry manifests in this folder - const manifests = yield _this8.config.getRootManifests(); - - if (yield _this8.applyChanges(manifests)) { - yield _this8.config.saveRootManifests(manifests); - } - })(); - } - - applyChanges(manifests) { - let hasChanged = false; - - if (this.config.plugnplayPersist) { - const object = manifests.npm.object; - - - if (typeof object.installConfig !== 'object') { - object.installConfig = {}; - } - - if (this.config.plugnplayEnabled && object.installConfig.pnp !== true) { - object.installConfig.pnp = true; - hasChanged = true; - } else if (!this.config.plugnplayEnabled && typeof object.installConfig.pnp !== 'undefined') { - delete object.installConfig.pnp; - hasChanged = true; - } - - if (Object.keys(object.installConfig).length === 0) { - delete object.installConfig; - } - } - - return Promise.resolve(hasChanged); - } - - /** - * Check if we should run the cleaning step. - */ - - shouldClean() { - return (_fs || _load_fs()).exists(path.join(this.config.lockfileFolder, (_constants || _load_constants()).CLEAN_FILENAME)); - } - - /** - * TODO - */ - - flatten(patterns) { - var _this9 = this; - - return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { - if (!_this9.flags.flat) { - return patterns; - } - - const flattenedPatterns = []; - - for (var _iterator12 = _this9.resolver.getAllDependencyNamesByLevelOrder(patterns), _isArray12 = Array.isArray(_iterator12), _i12 = 0, _iterator12 = _isArray12 ? _iterator12 : _iterator12[Symbol.iterator]();;) { - var _ref25; - - if (_isArray12) { - if (_i12 >= _iterator12.length) break; - _ref25 = _iterator12[_i12++]; - } else { - _i12 = _iterator12.next(); - if (_i12.done) break; - _ref25 = _i12.value; - } - - const name = _ref25; - - const infos = _this9.resolver.getAllInfoForPackageName(name).filter(function (manifest) { - const ref = manifest._reference; - invariant(ref, 'expected package reference'); - return !ref.ignore; - }); - - if (infos.length === 0) { - continue; - } - - if (infos.length === 1) { - // single version of this package - // take out a single pattern as multiple patterns may have resolved to this package - flattenedPatterns.push(_this9.resolver.patternsByPackage[name][0]); - continue; - } - - const options = infos.map(function (info) { - const ref = info._reference; - invariant(ref, 'expected reference'); - return { - // TODO `and is required by {PARENT}`, - name: _this9.reporter.lang('manualVersionResolutionOption', ref.patterns.join(', '), info.version), - - value: info.version - }; - }); - const versions = infos.map(function (info) { - return info.version; - }); - let version; - - const resolutionVersion = _this9.resolutions[name]; - if (resolutionVersion && versions.indexOf(resolutionVersion) >= 0) { - // use json `resolution` version - version = resolutionVersion; - } else { - version = yield _this9.reporter.select(_this9.reporter.lang('manualVersionResolution', name), _this9.reporter.lang('answer'), options); - _this9.resolutions[name] = version; - } - - flattenedPatterns.push(_this9.resolver.collapseAllVersionsOfPackage(name, version)); - } - - // save resolutions to their appropriate root manifest - if (Object.keys(_this9.resolutions).length) { - const manifests = yield _this9.config.getRootManifests(); - - for (const name in _this9.resolutions) { - const version = _this9.resolutions[name]; - - const patterns = _this9.resolver.patternsByPackage[name]; - if (!patterns) { - continue; - } - - let manifest; - for (var _iterator13 = patterns, _isArray13 = Array.isArray(_iterator13), _i13 = 0, _iterator13 = _isArray13 ? _iterator13 : _iterator13[Symbol.iterator]();;) { - var _ref26; - - if (_isArray13) { - if (_i13 >= _iterator13.length) break; - _ref26 = _iterator13[_i13++]; - } else { - _i13 = _iterator13.next(); - if (_i13.done) break; - _ref26 = _i13.value; - } - - const pattern = _ref26; - - manifest = _this9.resolver.getResolvedPattern(pattern); - if (manifest) { - break; - } - } - invariant(manifest, 'expected manifest'); - - const ref = manifest._reference; - invariant(ref, 'expected reference'); - - const object = manifests[ref.registry].object; - object.resolutions = object.resolutions || {}; - object.resolutions[name] = version; - } - - yield _this9.config.saveRootManifests(manifests); - } - - return flattenedPatterns; - })(); - } - - /** - * Remove offline tarballs that are no longer required - */ - - pruneOfflineMirror(lockfile) { - var _this10 = this; - - return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { - const mirror = _this10.config.getOfflineMirrorPath(); - if (!mirror) { - return; - } - - const requiredTarballs = new Set(); - for (const dependency in lockfile) { - const resolved = lockfile[dependency].resolved; - if (resolved) { - const basename = path.basename(resolved.split('#')[0]); - if (dependency[0] === '@' && basename[0] !== '@') { - requiredTarballs.add(`${dependency.split('/')[0]}-${basename}`); - } - requiredTarballs.add(basename); - } - } - - const mirrorFiles = yield (_fs || _load_fs()).walk(mirror); - for (var _iterator14 = mirrorFiles, _isArray14 = Array.isArray(_iterator14), _i14 = 0, _iterator14 = _isArray14 ? _iterator14 : _iterator14[Symbol.iterator]();;) { - var _ref27; - - if (_isArray14) { - if (_i14 >= _iterator14.length) break; - _ref27 = _iterator14[_i14++]; - } else { - _i14 = _iterator14.next(); - if (_i14.done) break; - _ref27 = _i14.value; - } - - const file = _ref27; - - const isTarball = path.extname(file.basename) === '.tgz'; - // if using experimental-pack-script-packages-in-mirror flag, don't unlink prebuilt packages - const hasPrebuiltPackage = file.relative.startsWith('prebuilt/'); - if (isTarball && !hasPrebuiltPackage && !requiredTarballs.has(file.basename)) { - yield (_fs || _load_fs()).unlink(file.absolute); - } - } - })(); - } - - /** - * Save updated integrity and lockfiles. - */ - - saveLockfileAndIntegrity(patterns, workspaceLayout) { - var _this11 = this; - - return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { - const resolvedPatterns = {}; - Object.keys(_this11.resolver.patterns).forEach(function (pattern) { - if (!workspaceLayout || !workspaceLayout.getManifestByPattern(pattern)) { - resolvedPatterns[pattern] = _this11.resolver.patterns[pattern]; - } - }); - - // TODO this code is duplicated in a few places, need a common way to filter out workspace patterns from lockfile - patterns = patterns.filter(function (p) { - return !workspaceLayout || !workspaceLayout.getManifestByPattern(p); - }); - - const lockfileBasedOnResolver = _this11.lockfile.getLockfile(resolvedPatterns); - - if (_this11.config.pruneOfflineMirror) { - yield _this11.pruneOfflineMirror(lockfileBasedOnResolver); - } - - // write integrity hash - if (!_this11.config.plugnplayEnabled) { - yield _this11.integrityChecker.save(patterns, lockfileBasedOnResolver, _this11.flags, workspaceLayout, _this11.scripts.getArtifacts()); - } - - // --no-lockfile or --pure-lockfile or --frozen-lockfile - if (_this11.flags.lockfile === false || _this11.flags.pureLockfile || _this11.flags.frozenLockfile) { - return; - } - - const lockFileHasAllPatterns = patterns.every(function (p) { - return _this11.lockfile.getLocked(p); - }); - const lockfilePatternsMatch = Object.keys(_this11.lockfile.cache || {}).every(function (p) { - return lockfileBasedOnResolver[p]; - }); - const resolverPatternsAreSameAsInLockfile = Object.keys(lockfileBasedOnResolver).every(function (pattern) { - const manifest = _this11.lockfile.getLocked(pattern); - return manifest && manifest.resolved === lockfileBasedOnResolver[pattern].resolved && deepEqual(manifest.prebuiltVariants, lockfileBasedOnResolver[pattern].prebuiltVariants); - }); - const integrityPatternsAreSameAsInLockfile = Object.keys(lockfileBasedOnResolver).every(function (pattern) { - const existingIntegrityInfo = lockfileBasedOnResolver[pattern].integrity; - if (!existingIntegrityInfo) { - // if this entry does not have an integrity, no need to re-write the lockfile because of it - return true; - } - const manifest = _this11.lockfile.getLocked(pattern); - if (manifest && manifest.integrity) { - const manifestIntegrity = ssri.stringify(manifest.integrity); - return manifestIntegrity === existingIntegrityInfo; - } - return false; - }); - - // remove command is followed by install with force, lockfile will be rewritten in any case then - if (!_this11.flags.force && _this11.lockfile.parseResultType === 'success' && lockFileHasAllPatterns && lockfilePatternsMatch && resolverPatternsAreSameAsInLockfile && integrityPatternsAreSameAsInLockfile && patterns.length) { - return; - } - - // build lockfile location - const loc = path.join(_this11.config.lockfileFolder, (_constants || _load_constants()).LOCKFILE_FILENAME); - - // write lockfile - const lockSource = (0, (_lockfile2 || _load_lockfile2()).stringify)(lockfileBasedOnResolver, false, _this11.config.enableLockfileVersions); - yield (_fs || _load_fs()).writeFilePreservingEol(loc, lockSource); - - _this11._logSuccessSaveLockfile(); - })(); - } - - _logSuccessSaveLockfile() { - this.reporter.success(this.reporter.lang('savedLockfile')); - } - - /** - * Load the dependency graph of the current install. Only does package resolving and wont write to the cwd. - */ - hydrate(ignoreUnusedPatterns) { - var _this12 = this; - - return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { - const request = yield _this12.fetchRequestFromCwd([], ignoreUnusedPatterns); - const depRequests = request.requests, - rawPatterns = request.patterns, - ignorePatterns = request.ignorePatterns, - workspaceLayout = request.workspaceLayout; - - - yield _this12.resolver.init(depRequests, { - isFlat: _this12.flags.flat, - isFrozen: _this12.flags.frozenLockfile, - workspaceLayout - }); - yield _this12.flatten(rawPatterns); - _this12.markIgnored(ignorePatterns); - - // fetch packages, should hit cache most of the time - const manifests = yield (_packageFetcher || _load_packageFetcher()).fetch(_this12.resolver.getManifests(), _this12.config); - _this12.resolver.updateManifests(manifests); - yield (_packageCompatibility || _load_packageCompatibility()).check(_this12.resolver.getManifests(), _this12.config, _this12.flags.ignoreEngines); - - // expand minimal manifests - for (var _iterator15 = _this12.resolver.getManifests(), _isArray15 = Array.isArray(_iterator15), _i15 = 0, _iterator15 = _isArray15 ? _iterator15 : _iterator15[Symbol.iterator]();;) { - var _ref28; - - if (_isArray15) { - if (_i15 >= _iterator15.length) break; - _ref28 = _iterator15[_i15++]; - } else { - _i15 = _iterator15.next(); - if (_i15.done) break; - _ref28 = _i15.value; - } - - const manifest = _ref28; - - const ref = manifest._reference; - invariant(ref, 'expected reference'); - const type = ref.remote.type; - // link specifier won't ever hit cache - - let loc = ''; - if (type === 'link') { - continue; - } else if (type === 'workspace') { - if (!ref.remote.reference) { - continue; - } - loc = ref.remote.reference; - } else { - loc = _this12.config.generateModuleCachePath(ref); - } - const newPkg = yield _this12.config.readManifest(loc); - yield _this12.resolver.updateManifest(ref, newPkg); - } - - return request; - })(); - } - - /** - * Check for updates every day and output a nag message if there's a newer version. - */ - - checkUpdate() { - if (this.config.nonInteractive) { - // don't show upgrade dialog on CI or non-TTY terminals - return; - } - - // don't check if disabled - if (this.config.getOption('disable-self-update-check')) { - return; - } - - // only check for updates once a day - const lastUpdateCheck = Number(this.config.getOption('lastUpdateCheck')) || 0; - if (lastUpdateCheck && Date.now() - lastUpdateCheck < ONE_DAY) { - return; - } - - // don't bug for updates on tagged releases - if ((_yarnVersion || _load_yarnVersion()).version.indexOf('-') >= 0) { - return; - } - - this._checkUpdate().catch(() => { - // swallow errors - }); - } - - _checkUpdate() { - var _this13 = this; - - return (0, (_asyncToGenerator2 || _load_asyncToGenerator()).default)(function* () { - let latestVersion = yield _this13.config.requestManager.request({ - url: (_constants || _load_constants()).SELF_UPDATE_VERSION_URL - }); - invariant(typeof latestVersion === 'string', 'expected string'); - latestVersion = latestVersion.trim(); - if (!semver.valid(latestVersion)) { - return; - } - - // ensure we only check for updates periodically - _this13.config.registries.yarn.saveHomeConfig({ - lastUpdateCheck: Date.now() - }); - - if (semver.gt(latestVersion, (_yarnVersion || _load_yarnVersion()).version)) { - const installationMethod = yield (0, (_yarnVersion || _load_yarnVersion()).getInstallationMethod)(); - _this13.maybeOutputUpdate = function () { - _this13.reporter.warn(_this13.reporter.lang('yarnOutdated', latestVersion, (_yarnVersion || _load_yarnVersion()).version)); - - const command = getUpdateCommand(installationMethod); - if (command) { - _this13.reporter.info(_this13.reporter.lang('yarnOutdatedCommand')); - _this13.reporter.command(command); - } else { - const installer = getUpdateInstaller(installationMethod); - if (installer) { - _this13.reporter.info(_this13.reporter.lang('yarnOutdatedInstaller', installer)); - } - } - }; - } - })(); - } - - /** - * Method to override with a possible upgrade message. - */ - - maybeOutputUpdate() {} -} - -exports.Install = Install; -function hasWrapper(commander, args) { - return true; -} - -function setFlags(commander) { - commander.description('Yarn install is used to install all dependencies for a project.'); - commander.usage('install [flags]'); - commander.option('-A, --audit', 'Run vulnerability audit on installed packages'); - commander.option('-g, --global', 'DEPRECATED'); - commander.option('-S, --save', 'DEPRECATED - save package to your `dependencies`'); - commander.option('-D, --save-dev', 'DEPRECATED - save package to your `devDependencies`'); - commander.option('-P, --save-peer', 'DEPRECATED - save package to your `peerDependencies`'); - commander.option('-O, --save-optional', 'DEPRECATED - save package to your `optionalDependencies`'); - commander.option('-E, --save-exact', 'DEPRECATED'); - commander.option('-T, --save-tilde', 'DEPRECATED'); -} - -/***/ }), -/* 35 */ -/***/ (function(module, exports, __webpack_require__) { - -var isObject = __webpack_require__(52); -module.exports = function (it) { - if (!isObject(it)) throw TypeError(it + ' is not an object!'); - return it; -}; - - -/***/ }), -/* 36 */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return SubjectSubscriber; }); -/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return Subject; }); -/* unused harmony export AnonymousSubject */ -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_tslib__ = __webpack_require__(1); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__Observable__ = __webpack_require__(12); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__Subscriber__ = __webpack_require__(7); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__Subscription__ = __webpack_require__(25); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__util_ObjectUnsubscribedError__ = __webpack_require__(189); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__SubjectSubscription__ = __webpack_require__(422); -/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__internal_symbol_rxSubscriber__ = __webpack_require__(321); -/** PURE_IMPORTS_START tslib,_Observable,_Subscriber,_Subscription,_util_ObjectUnsubscribedError,_SubjectSubscription,_internal_symbol_rxSubscriber PURE_IMPORTS_END */ - - - - - - - -var SubjectSubscriber = /*@__PURE__*/ (function (_super) { - __WEBPACK_IMPORTED_MODULE_0_tslib__["a" /* __extends */](SubjectSubscriber, _super); - function SubjectSubscriber(destination) { - var _this = _super.call(this, destination) || this; - _this.destination = destination; - return _this; - } - return SubjectSubscriber; -}(__WEBPACK_IMPORTED_MODULE_2__Subscriber__["a" /* Subscriber */])); - -var Subject = /*@__PURE__*/ (function (_super) { - __WEBPACK_IMPORTED_MODULE_0_tslib__["a" /* __extends */](Subject, _super); - function Subject() { - var _this = _super.call(this) || this; - _this.observers = []; - _this.closed = false; - _this.isStopped = false; - _this.hasError = false; - _this.thrownError = null; - return _this; - } - Subject.prototype[__WEBPACK_IMPORTED_MODULE_6__internal_symbol_rxSubscriber__["a" /* rxSubscriber */]] = function () { - return new SubjectSubscriber(this); - }; - Subject.prototype.lift = function (operator) { - var subject = new AnonymousSubject(this, this); - subject.operator = operator; - return subject; - }; - Subject.prototype.next = function (value) { - if (this.closed) { - throw new __WEBPACK_IMPORTED_MODULE_4__util_ObjectUnsubscribedError__["a" /* ObjectUnsubscribedError */](); - } - if (!this.isStopped) { - var observers = this.observers; - var len = observers.length; - var copy = observers.slice(); - for (var i = 0; i < len; i++) { - copy[i].next(value); - } - } - }; - Subject.prototype.error = function (err) { - if (this.closed) { - throw new __WEBPACK_IMPORTED_MODULE_4__util_ObjectUnsubscribedError__["a" /* ObjectUnsubscribedError */](); - } - this.hasError = true; - this.thrownError = err; - this.isStopped = true; - var observers = this.observers; - var len = observers.length; - var copy = observers.slice(); - for (var i = 0; i < len; i++) { - copy[i].error(err); - } - this.observers.length = 0; - }; - Subject.prototype.complete = function () { - if (this.closed) { - throw new __WEBPACK_IMPORTED_MODULE_4__util_ObjectUnsubscribedError__["a" /* ObjectUnsubscribedError */](); - } - this.isStopped = true; - var observers = this.observers; - var len = observers.length; - var copy = observers.slice(); - for (var i = 0; i < len; i++) { - copy[i].complete(); - } - this.observers.length = 0; - }; - Subject.prototype.unsubscribe = function () { - this.isStopped = true; - this.closed = true; - this.observers = null; - }; - Subject.prototype._trySubscribe = function (subscriber) { - if (this.closed) { - throw new __WEBPACK_IMPORTED_MODULE_4__util_ObjectUnsubscribedError__["a" /* ObjectUnsubscribedError */](); - } - else { - return _super.prototype._trySubscribe.call(this, subscriber); - } - }; - Subject.prototype._subscribe = function (subscriber) { - if (this.closed) { - throw new __WEBPACK_IMPORTED_MODULE_4__util_ObjectUnsubscribedError__["a" /* ObjectUnsubscribedError */](); - } - else if (this.hasError) { - subscriber.error(this.thrownError); - return __WEBPACK_IMPORTED_MODULE_3__Subscription__["a" /* Subscription */].EMPTY; - } - else if (this.isStopped) { - subscriber.complete(); - return __WEBPACK_IMPORTED_MODULE_3__Subscription__["a" /* Subscription */].EMPTY; - } - else { - this.observers.push(subscriber); - return new __WEBPACK_IMPORTED_MODULE_5__SubjectSubscription__["a" /* SubjectSubscription */](this, subscriber); - } - }; - Subject.prototype.asObservable = function () { - var observable = new __WEBPACK_IMPORTED_MODULE_1__Observable__["a" /* Observable */](); - observable.source = this; - return observable; - }; - Subject.create = function (destination, source) { - return new AnonymousSubject(destination, source); - }; - return Subject; -}(__WEBPACK_IMPORTED_MODULE_1__Observable__["a" /* Observable */])); - -var AnonymousSubject = /*@__PURE__*/ (function (_super) { - __WEBPACK_IMPORTED_MODULE_0_tslib__["a" /* __extends */](AnonymousSubject, _super); - function AnonymousSubject(destination, source) { - var _this = _super.call(this) || this; - _this.destination = destination; - _this.source = source; - return _this; - } - AnonymousSubject.prototype.next = function (value) { - var destination = this.destination; - if (destination && destination.next) { - destination.next(value); - } - }; - AnonymousSubject.prototype.error = function (err) { - var destination = this.destination; - if (destination && destination.error) { - this.destination.error(err); - } - }; - AnonymousSubject.prototype.complete = function () { - var destination = this.destination; - if (destination && destination.complete) { - this.destination.complete(); - } - }; - AnonymousSubject.prototype._subscribe = function (subscriber) { - var source = this.source; - if (source) { - return this.source.subscribe(subscriber); - } - else { - return __WEBPACK_IMPORTED_MODULE_3__Subscription__["a" /* Subscription */].EMPTY; - } - }; - return AnonymousSubject; -}(Subject)); - -//# sourceMappingURL=Subject.js.map - - -/***/ }), -/* 37 */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.normalizePattern = normalizePattern; - -/** - * Explode and normalize a pattern into its name and range. - */ - -function normalizePattern(pattern) { - let hasVersion = false; - let range = 'latest'; - let name = pattern; - - // if we're a scope then remove the @ and add it back later - let isScoped = false; - if (name[0] === '@') { - isScoped = true; - name = name.slice(1); - } - - // take first part as the name - const parts = name.split('@'); - if (parts.length > 1) { - name = parts.shift(); - range = parts.join('@'); - - if (range) { - hasVersion = true; - } else { - range = '*'; - } - } - - // add back @ scope suffix - if (isScoped) { - name = `@${name}`; - } - - return { name, range, hasVersion }; -} - -/***/ }), -/* 38 */ -/***/ (function(module, exports, __webpack_require__) { - -/* WEBPACK VAR INJECTION */(function(module) {var __WEBPACK_AMD_DEFINE_RESULT__;/** - * @license - * Lodash - * Copyright JS Foundation and other contributors - * Released under MIT license - * Based on Underscore.js 1.8.3 - * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - */ -;(function() { - - /** Used as a safe reference for `undefined` in pre-ES5 environments. */ - var undefined; - - /** Used as the semantic version number. */ - var VERSION = '4.17.10'; - - /** Used as the size to enable large array optimizations. */ - var LARGE_ARRAY_SIZE = 200; - - /** Error message constants. */ - var CORE_ERROR_TEXT = 'Unsupported core-js use. Try https://npms.io/search?q=ponyfill.', - FUNC_ERROR_TEXT = 'Expected a function'; - - /** Used to stand-in for `undefined` hash values. */ - var HASH_UNDEFINED = '__lodash_hash_undefined__'; - - /** Used as the maximum memoize cache size. */ - var MAX_MEMOIZE_SIZE = 500; - - /** Used as the internal argument placeholder. */ - var PLACEHOLDER = '__lodash_placeholder__'; - - /** Used to compose bitmasks for cloning. */ - var CLONE_DEEP_FLAG = 1, - CLONE_FLAT_FLAG = 2, - CLONE_SYMBOLS_FLAG = 4; - - /** Used to compose bitmasks for value comparisons. */ - var COMPARE_PARTIAL_FLAG = 1, - COMPARE_UNORDERED_FLAG = 2; - - /** Used to compose bitmasks for function metadata. */ - var WRAP_BIND_FLAG = 1, - WRAP_BIND_KEY_FLAG = 2, - WRAP_CURRY_BOUND_FLAG = 4, - WRAP_CURRY_FLAG = 8, - WRAP_CURRY_RIGHT_FLAG = 16, - WRAP_PARTIAL_FLAG = 32, - WRAP_PARTIAL_RIGHT_FLAG = 64, - WRAP_ARY_FLAG = 128, - WRAP_REARG_FLAG = 256, - WRAP_FLIP_FLAG = 512; - - /** Used as default options for `_.truncate`. */ - var DEFAULT_TRUNC_LENGTH = 30, - DEFAULT_TRUNC_OMISSION = '...'; - - /** Used to detect hot functions by number of calls within a span of milliseconds. */ - var HOT_COUNT = 800, - HOT_SPAN = 16; - - /** Used to indicate the type of lazy iteratees. */ - var LAZY_FILTER_FLAG = 1, - LAZY_MAP_FLAG = 2, - LAZY_WHILE_FLAG = 3; - - /** Used as references for various `Number` constants. */ - var INFINITY = 1 / 0, - MAX_SAFE_INTEGER = 9007199254740991, - MAX_INTEGER = 1.7976931348623157e+308, - NAN = 0 / 0; - - /** Used as references for the maximum length and index of an array. */ - var MAX_ARRAY_LENGTH = 4294967295, - MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1, - HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1; - - /** Used to associate wrap methods with their bit flags. */ - var wrapFlags = [ - ['ary', WRAP_ARY_FLAG], - ['bind', WRAP_BIND_FLAG], - ['bindKey', WRAP_BIND_KEY_FLAG], - ['curry', WRAP_CURRY_FLAG], - ['curryRight', WRAP_CURRY_RIGHT_FLAG], - ['flip', WRAP_FLIP_FLAG], - ['partial', WRAP_PARTIAL_FLAG], - ['partialRight', WRAP_PARTIAL_RIGHT_FLAG], - ['rearg', WRAP_REARG_FLAG] - ]; - - /** `Object#toString` result references. */ - var argsTag = '[object Arguments]', - arrayTag = '[object Array]', - asyncTag = '[object AsyncFunction]', - boolTag = '[object Boolean]', - dateTag = '[object Date]', - domExcTag = '[object DOMException]', - errorTag = '[object Error]', - funcTag = '[object Function]', - genTag = '[object GeneratorFunction]', - mapTag = '[object Map]', - numberTag = '[object Number]', - nullTag = '[object Null]', - objectTag = '[object Object]', - promiseTag = '[object Promise]', - proxyTag = '[object Proxy]', - regexpTag = '[object RegExp]', - setTag = '[object Set]', - stringTag = '[object String]', - symbolTag = '[object Symbol]', - undefinedTag = '[object Undefined]', - weakMapTag = '[object WeakMap]', - weakSetTag = '[object WeakSet]'; - - var arrayBufferTag = '[object ArrayBuffer]', - dataViewTag = '[object DataView]', - float32Tag = '[object Float32Array]', - float64Tag = '[object Float64Array]', - int8Tag = '[object Int8Array]', - int16Tag = '[object Int16Array]', - int32Tag = '[object Int32Array]', - uint8Tag = '[object Uint8Array]', - uint8ClampedTag = '[object Uint8ClampedArray]', - uint16Tag = '[object Uint16Array]', - uint32Tag = '[object Uint32Array]'; - - /** Used to match empty string literals in compiled template source. */ - var reEmptyStringLeading = /\b__p \+= '';/g, - reEmptyStringMiddle = /\b(__p \+=) '' \+/g, - reEmptyStringTrailing = /(__e\(.*?\)|\b__t\)) \+\n'';/g; - - /** Used to match HTML entities and HTML characters. */ - var reEscapedHtml = /&(?:amp|lt|gt|quot|#39);/g, - reUnescapedHtml = /[&<>"']/g, - reHasEscapedHtml = RegExp(reEscapedHtml.source), - reHasUnescapedHtml = RegExp(reUnescapedHtml.source); - - /** Used to match template delimiters. */ - var reEscape = /<%-([\s\S]+?)%>/g, - reEvaluate = /<%([\s\S]+?)%>/g, - reInterpolate = /<%=([\s\S]+?)%>/g; - - /** Used to match property names within property paths. */ - var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/, - reIsPlainProp = /^\w*$/, - rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g; - - /** - * Used to match `RegExp` - * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns). - */ - var reRegExpChar = /[\\^$.*+?()[\]{}|]/g, - reHasRegExpChar = RegExp(reRegExpChar.source); - - /** Used to match leading and trailing whitespace. */ - var reTrim = /^\s+|\s+$/g, - reTrimStart = /^\s+/, - reTrimEnd = /\s+$/; - - /** Used to match wrap detail comments. */ - var reWrapComment = /\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/, - reWrapDetails = /\{\n\/\* \[wrapped with (.+)\] \*/, - reSplitDetails = /,? & /; - - /** Used to match words composed of alphanumeric characters. */ - var reAsciiWord = /[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g; - - /** Used to match backslashes in property paths. */ - var reEscapeChar = /\\(\\)?/g; - - /** - * Used to match - * [ES template delimiters](http://ecma-international.org/ecma-262/7.0/#sec-template-literal-lexical-components). - */ - var reEsTemplate = /\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g; - - /** Used to match `RegExp` flags from their coerced string values. */ - var reFlags = /\w*$/; - - /** Used to detect bad signed hexadecimal string values. */ - var reIsBadHex = /^[-+]0x[0-9a-f]+$/i; - - /** Used to detect binary string values. */ - var reIsBinary = /^0b[01]+$/i; - - /** Used to detect host constructors (Safari). */ - var reIsHostCtor = /^\[object .+?Constructor\]$/; - - /** Used to detect octal string values. */ - var reIsOctal = /^0o[0-7]+$/i; - - /** Used to detect unsigned integer values. */ - var reIsUint = /^(?:0|[1-9]\d*)$/; - - /** Used to match Latin Unicode letters (excluding mathematical operators). */ - var reLatin = /[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g; - - /** Used to ensure capturing order of template delimiters. */ - var reNoMatch = /($^)/; - - /** Used to match unescaped characters in compiled string literals. */ - var reUnescapedString = /['\n\r\u2028\u2029\\]/g; - - /** Used to compose unicode character classes. */ - var rsAstralRange = '\\ud800-\\udfff', - rsComboMarksRange = '\\u0300-\\u036f', - reComboHalfMarksRange = '\\ufe20-\\ufe2f', - rsComboSymbolsRange = '\\u20d0-\\u20ff', - rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange, - rsDingbatRange = '\\u2700-\\u27bf', - rsLowerRange = 'a-z\\xdf-\\xf6\\xf8-\\xff', - rsMathOpRange = '\\xac\\xb1\\xd7\\xf7', - rsNonCharRange = '\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf', - rsPunctuationRange = '\\u2000-\\u206f', - rsSpaceRange = ' \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000', - rsUpperRange = 'A-Z\\xc0-\\xd6\\xd8-\\xde', - rsVarRange = '\\ufe0e\\ufe0f', - rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange; - - /** Used to compose unicode capture groups. */ - var rsApos = "['\u2019]", - rsAstral = '[' + rsAstralRange + ']', - rsBreak = '[' + rsBreakRange + ']', - rsCombo = '[' + rsComboRange + ']', - rsDigits = '\\d+', - rsDingbat = '[' + rsDingbatRange + ']', - rsLower = '[' + rsLowerRange + ']', - rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']', - rsFitz = '\\ud83c[\\udffb-\\udfff]', - rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')', - rsNonAstral = '[^' + rsAstralRange + ']', - rsRegional = '(?:\\ud83c[\\udde6-\\uddff]){2}', - rsSurrPair = '[\\ud800-\\udbff][\\udc00-\\udfff]', - rsUpper = '[' + rsUpperRange + ']', - rsZWJ = '\\u200d'; - - /** Used to compose unicode regexes. */ - var rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')', - rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')', - rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?', - rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?', - reOptMod = rsModifier + '?', - rsOptVar = '[' + rsVarRange + ']?', - rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*', - rsOrdLower = '\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])', - rsOrdUpper = '\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])', - rsSeq = rsOptVar + reOptMod + rsOptJoin, - rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq, - rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')'; - - /** Used to match apostrophes. */ - var reApos = RegExp(rsApos, 'g'); - - /** - * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and - * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols). - */ - var reComboMark = RegExp(rsCombo, 'g'); - - /** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */ - var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g'); - - /** Used to match complex or compound words. */ - var reUnicodeWord = RegExp([ - rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')', - rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')', - rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower, - rsUpper + '+' + rsOptContrUpper, - rsOrdUpper, - rsOrdLower, - rsDigits, - rsEmoji - ].join('|'), 'g'); - - /** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */ - var reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']'); - - /** Used to detect strings that need a more robust regexp to match words. */ - var reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2,}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/; - - /** Used to assign default `context` object properties. */ - var contextProps = [ - 'Array', 'Buffer', 'DataView', 'Date', 'Error', 'Float32Array', 'Float64Array', - 'Function', 'Int8Array', 'Int16Array', 'Int32Array', 'Map', 'Math', 'Object', - 'Promise', 'RegExp', 'Set', 'String', 'Symbol', 'TypeError', 'Uint8Array', - 'Uint8ClampedArray', 'Uint16Array', 'Uint32Array', 'WeakMap', - '_', 'clearTimeout', 'isFinite', 'parseInt', 'setTimeout' - ]; - - /** Used to make template sourceURLs easier to identify. */ - var templateCounter = -1; - - /** Used to identify `toStringTag` values of typed arrays. */ - var typedArrayTags = {}; - typedArrayTags[float32Tag] = typedArrayTags[float64Tag] = - typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = - typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = - typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = - typedArrayTags[uint32Tag] = true; - typedArrayTags[argsTag] = typedArrayTags[arrayTag] = - typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] = - typedArrayTags[dataViewTag] = typedArrayTags[dateTag] = - typedArrayTags[errorTag] = typedArrayTags[funcTag] = - typedArrayTags[mapTag] = typedArrayTags[numberTag] = - typedArrayTags[objectTag] = typedArrayTags[regexpTag] = - typedArrayTags[setTag] = typedArrayTags[stringTag] = - typedArrayTags[weakMapTag] = false; - - /** Used to identify `toStringTag` values supported by `_.clone`. */ - var cloneableTags = {}; - cloneableTags[argsTag] = cloneableTags[arrayTag] = - cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] = - cloneableTags[boolTag] = cloneableTags[dateTag] = - cloneableTags[float32Tag] = cloneableTags[float64Tag] = - cloneableTags[int8Tag] = cloneableTags[int16Tag] = - cloneableTags[int32Tag] = cloneableTags[mapTag] = - cloneableTags[numberTag] = cloneableTags[objectTag] = - cloneableTags[regexpTag] = cloneableTags[setTag] = - cloneableTags[stringTag] = cloneableTags[symbolTag] = - cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] = - cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true; - cloneableTags[errorTag] = cloneableTags[funcTag] = - cloneableTags[weakMapTag] = false; - - /** Used to map Latin Unicode letters to basic Latin letters. */ - var deburredLetters = { - // Latin-1 Supplement block. - '\xc0': 'A', '\xc1': 'A', '\xc2': 'A', '\xc3': 'A', '\xc4': 'A', '\xc5': 'A', - '\xe0': 'a', '\xe1': 'a', '\xe2': 'a', '\xe3': 'a', '\xe4': 'a', '\xe5': 'a', - '\xc7': 'C', '\xe7': 'c', - '\xd0': 'D', '\xf0': 'd', - '\xc8': 'E', '\xc9': 'E', '\xca': 'E', '\xcb': 'E', - '\xe8': 'e', '\xe9': 'e', '\xea': 'e', '\xeb': 'e', - '\xcc': 'I', '\xcd': 'I', '\xce': 'I', '\xcf': 'I', - '\xec': 'i', '\xed': 'i', '\xee': 'i', '\xef': 'i', - '\xd1': 'N', '\xf1': 'n', - '\xd2': 'O', '\xd3': 'O', '\xd4': 'O', '\xd5': 'O', '\xd6': 'O', '\xd8': 'O', - '\xf2': 'o', '\xf3': 'o', '\xf4': 'o', '\xf5': 'o', '\xf6': 'o', '\xf8': 'o', - '\xd9': 'U', '\xda': 'U', '\xdb': 'U', '\xdc': 'U', - '\xf9': 'u', '\xfa': 'u', '\xfb': 'u', '\xfc': 'u', - '\xdd': 'Y', '\xfd': 'y', '\xff': 'y', - '\xc6': 'Ae', '\xe6': 'ae', - '\xde': 'Th', '\xfe': 'th', - '\xdf': 'ss', - // Latin Extended-A block. - '\u0100': 'A', '\u0102': 'A', '\u0104': 'A', - '\u0101': 'a', '\u0103': 'a', '\u0105': 'a', - '\u0106': 'C', '\u0108': 'C', '\u010a': 'C', '\u010c': 'C', - '\u0107': 'c', '\u0109': 'c', '\u010b': 'c', '\u010d': 'c', - '\u010e': 'D', '\u0110': 'D', '\u010f': 'd', '\u0111': 'd', - '\u0112': 'E', '\u0114': 'E', '\u0116': 'E', '\u0118': 'E', '\u011a': 'E', - '\u0113': 'e', '\u0115': 'e', '\u0117': 'e', '\u0119': 'e', '\u011b': 'e', - '\u011c': 'G', '\u011e': 'G', '\u0120': 'G', '\u0122': 'G', - '\u011d': 'g', '\u011f': 'g', '\u0121': 'g', '\u0123': 'g', - '\u0124': 'H', '\u0126': 'H', '\u0125': 'h', '\u0127': 'h', - '\u0128': 'I', '\u012a': 'I', '\u012c': 'I', '\u012e': 'I', '\u0130': 'I', - '\u0129': 'i', '\u012b': 'i', '\u012d': 'i', '\u012f': 'i', '\u0131': 'i', - '\u0134': 'J', '\u0135': 'j', - '\u0136': 'K', '\u0137': 'k', '\u0138': 'k', - '\u0139': 'L', '\u013b': 'L', '\u013d': 'L', '\u013f': 'L', '\u0141': 'L', - '\u013a': 'l', '\u013c': 'l', '\u013e': 'l', '\u0140': 'l', '\u0142': 'l', - '\u0143': 'N', '\u0145': 'N', '\u0147': 'N', '\u014a': 'N', - '\u0144': 'n', '\u0146': 'n', '\u0148': 'n', '\u014b': 'n', - '\u014c': 'O', '\u014e': 'O', '\u0150': 'O', - '\u014d': 'o', '\u014f': 'o', '\u0151': 'o', - '\u0154': 'R', '\u0156': 'R', '\u0158': 'R', - '\u0155': 'r', '\u0157': 'r', '\u0159': 'r', - '\u015a': 'S', '\u015c': 'S', '\u015e': 'S', '\u0160': 'S', - '\u015b': 's', '\u015d': 's', '\u015f': 's', '\u0161': 's', - '\u0162': 'T', '\u0164': 'T', '\u0166': 'T', - '\u0163': 't', '\u0165': 't', '\u0167': 't', - '\u0168': 'U', '\u016a': 'U', '\u016c': 'U', '\u016e': 'U', '\u0170': 'U', '\u0172': 'U', - '\u0169': 'u', '\u016b': 'u', '\u016d': 'u', '\u016f': 'u', '\u0171': 'u', '\u0173': 'u', - '\u0174': 'W', '\u0175': 'w', - '\u0176': 'Y', '\u0177': 'y', '\u0178': 'Y', - '\u0179': 'Z', '\u017b': 'Z', '\u017d': 'Z', - '\u017a': 'z', '\u017c': 'z', '\u017e': 'z', - '\u0132': 'IJ', '\u0133': 'ij', - '\u0152': 'Oe', '\u0153': 'oe', - '\u0149': "'n", '\u017f': 's' - }; - - /** Used to map characters to HTML entities. */ - var htmlEscapes = { - '&': '&', - '<': '<', - '>': '>', - '"': '"', - "'": ''' - }; - - /** Used to map HTML entities to characters. */ - var htmlUnescapes = { - '&': '&', - '<': '<', - '>': '>', - '"': '"', - ''': "'" - }; - - /** Used to escape characters for inclusion in compiled string literals. */ - var stringEscapes = { - '\\': '\\', - "'": "'", - '\n': 'n', - '\r': 'r', - '\u2028': 'u2028', - '\u2029': 'u2029' - }; - - /** Built-in method references without a dependency on `root`. */ - var freeParseFloat = parseFloat, - freeParseInt = parseInt; - - /** Detect free variable `global` from Node.js. */ - var freeGlobal = typeof global == 'object' && global && global.Object === Object && global; - - /** Detect free variable `self`. */ - var freeSelf = typeof self == 'object' && self && self.Object === Object && self; - - /** Used as a reference to the global object. */ - var root = freeGlobal || freeSelf || Function('return this')(); - - /** Detect free variable `exports`. */ - var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports; - - /** Detect free variable `module`. */ - var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module; - - /** Detect the popular CommonJS extension `module.exports`. */ - var moduleExports = freeModule && freeModule.exports === freeExports; - - /** Detect free variable `process` from Node.js. */ - var freeProcess = moduleExports && freeGlobal.process; - - /** Used to access faster Node.js helpers. */ - var nodeUtil = (function() { - try { - // Use `util.types` for Node.js 10+. - var types = freeModule && freeModule.require && freeModule.require('util').types; - - if (types) { - return types; - } - - // Legacy `process.binding('util')` for Node.js < 10. - return freeProcess && freeProcess.binding && freeProcess.binding('util'); - } catch (e) {} - }()); - - /* Node.js helper references. */ - var nodeIsArrayBuffer = nodeUtil && nodeUtil.isArrayBuffer, - nodeIsDate = nodeUtil && nodeUtil.isDate, - nodeIsMap = nodeUtil && nodeUtil.isMap, - nodeIsRegExp = nodeUtil && nodeUtil.isRegExp, - nodeIsSet = nodeUtil && nodeUtil.isSet, - nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray; - - /*--------------------------------------------------------------------------*/ - - /** - * A faster alternative to `Function#apply`, this function invokes `func` - * with the `this` binding of `thisArg` and the arguments of `args`. - * - * @private - * @param {Function} func The function to invoke. - * @param {*} thisArg The `this` binding of `func`. - * @param {Array} args The arguments to invoke `func` with. - * @returns {*} Returns the result of `func`. - */ - function apply(func, thisArg, args) { - switch (args.length) { - case 0: return func.call(thisArg); - case 1: return func.call(thisArg, args[0]); - case 2: return func.call(thisArg, args[0], args[1]); - case 3: return func.call(thisArg, args[0], args[1], args[2]); - } - return func.apply(thisArg, args); - } - - /** - * A specialized version of `baseAggregator` for arrays. - * - * @private - * @param {Array} [array] The array to iterate over. - * @param {Function} setter The function to set `accumulator` values. - * @param {Function} iteratee The iteratee to transform keys. - * @param {Object} accumulator The initial aggregated object. - * @returns {Function} Returns `accumulator`. - */ - function arrayAggregator(array, setter, iteratee, accumulator) { - var index = -1, - length = array == null ? 0 : array.length; - - while (++index < length) { - var value = array[index]; - setter(accumulator, value, iteratee(value), array); - } - return accumulator; - } - - /** - * A specialized version of `_.forEach` for arrays without support for - * iteratee shorthands. - * - * @private - * @param {Array} [array] The array to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @returns {Array} Returns `array`. - */ - function arrayEach(array, iteratee) { - var index = -1, - length = array == null ? 0 : array.length; - - while (++index < length) { - if (iteratee(array[index], index, array) === false) { - break; - } - } - return array; - } - - /** - * A specialized version of `_.forEachRight` for arrays without support for - * iteratee shorthands. - * - * @private - * @param {Array} [array] The array to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @returns {Array} Returns `array`. - */ - function arrayEachRight(array, iteratee) { - var length = array == null ? 0 : array.length; - - while (length--) { - if (iteratee(array[length], length, array) === false) { - break; - } - } - return array; - } - - /** - * A specialized version of `_.every` for arrays without support for - * iteratee shorthands. - * - * @private - * @param {Array} [array] The array to iterate over. - * @param {Function} predicate The function invoked per iteration. - * @returns {boolean} Returns `true` if all elements pass the predicate check, - * else `false`. - */ - function arrayEvery(array, predicate) { - var index = -1, - length = array == null ? 0 : array.length; - - while (++index < length) { - if (!predicate(array[index], index, array)) { - return false; - } - } - return true; - } - - /** - * A specialized version of `_.filter` for arrays without support for - * iteratee shorthands. - * - * @private - * @param {Array} [array] The array to iterate over. - * @param {Function} predicate The function invoked per iteration. - * @returns {Array} Returns the new filtered array. - */ - function arrayFilter(array, predicate) { - var index = -1, - length = array == null ? 0 : array.length, - resIndex = 0, - result = []; - - while (++index < length) { - var value = array[index]; - if (predicate(value, index, array)) { - result[resIndex++] = value; - } - } - return result; - } - - /** - * A specialized version of `_.includes` for arrays without support for - * specifying an index to search from. - * - * @private - * @param {Array} [array] The array to inspect. - * @param {*} target The value to search for. - * @returns {boolean} Returns `true` if `target` is found, else `false`. - */ - function arrayIncludes(array, value) { - var length = array == null ? 0 : array.length; - return !!length && baseIndexOf(array, value, 0) > -1; - } - - /** - * This function is like `arrayIncludes` except that it accepts a comparator. - * - * @private - * @param {Array} [array] The array to inspect. - * @param {*} target The value to search for. - * @param {Function} comparator The comparator invoked per element. - * @returns {boolean} Returns `true` if `target` is found, else `false`. - */ - function arrayIncludesWith(array, value, comparator) { - var index = -1, - length = array == null ? 0 : array.length; - - while (++index < length) { - if (comparator(value, array[index])) { - return true; - } - } - return false; - } - - /** - * A specialized version of `_.map` for arrays without support for iteratee - * shorthands. - * - * @private - * @param {Array} [array] The array to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @returns {Array} Returns the new mapped array. - */ - function arrayMap(array, iteratee) { - var index = -1, - length = array == null ? 0 : array.length, - result = Array(length); - - while (++index < length) { - result[index] = iteratee(array[index], index, array); - } - return result; - } - - /** - * Appends the elements of `values` to `array`. - * - * @private - * @param {Array} array The array to modify. - * @param {Array} values The values to append. - * @returns {Array} Returns `array`. - */ - function arrayPush(array, values) { - var index = -1, - length = values.length, - offset = array.length; - - while (++index < length) { - array[offset + index] = values[index]; - } - return array; - } - - /** - * A specialized version of `_.reduce` for arrays without support for - * iteratee shorthands. - * - * @private - * @param {Array} [array] The array to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @param {*} [accumulator] The initial value. - * @param {boolean} [initAccum] Specify using the first element of `array` as - * the initial value. - * @returns {*} Returns the accumulated value. - */ - function arrayReduce(array, iteratee, accumulator, initAccum) { - var index = -1, - length = array == null ? 0 : array.length; - - if (initAccum && length) { - accumulator = array[++index]; - } - while (++index < length) { - accumulator = iteratee(accumulator, array[index], index, array); - } - return accumulator; - } - - /** - * A specialized version of `_.reduceRight` for arrays without support for - * iteratee shorthands. - * - * @private - * @param {Array} [array] The array to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @param {*} [accumulator] The initial value. - * @param {boolean} [initAccum] Specify using the last element of `array` as - * the initial value. - * @returns {*} Returns the accumulated value. - */ - function arrayReduceRight(array, iteratee, accumulator, initAccum) { - var length = array == null ? 0 : array.length; - if (initAccum && length) { - accumulator = array[--length]; - } - while (length--) { - accumulator = iteratee(accumulator, array[length], length, array); - } - return accumulator; - } - - /** - * A specialized version of `_.some` for arrays without support for iteratee - * shorthands. - * - * @private - * @param {Array} [array] The array to iterate over. - * @param {Function} predicate The function invoked per iteration. - * @returns {boolean} Returns `true` if any element passes the predicate check, - * else `false`. - */ - function arraySome(array, predicate) { - var index = -1, - length = array == null ? 0 : array.length; - - while (++index < length) { - if (predicate(array[index], index, array)) { - return true; - } - } - return false; - } - - /** - * Gets the size of an ASCII `string`. - * - * @private - * @param {string} string The string inspect. - * @returns {number} Returns the string size. - */ - var asciiSize = baseProperty('length'); - - /** - * Converts an ASCII `string` to an array. - * - * @private - * @param {string} string The string to convert. - * @returns {Array} Returns the converted array. - */ - function asciiToArray(string) { - return string.split(''); - } - - /** - * Splits an ASCII `string` into an array of its words. - * - * @private - * @param {string} The string to inspect. - * @returns {Array} Returns the words of `string`. - */ - function asciiWords(string) { - return string.match(reAsciiWord) || []; - } - - /** - * The base implementation of methods like `_.findKey` and `_.findLastKey`, - * without support for iteratee shorthands, which iterates over `collection` - * using `eachFunc`. - * - * @private - * @param {Array|Object} collection The collection to inspect. - * @param {Function} predicate The function invoked per iteration. - * @param {Function} eachFunc The function to iterate over `collection`. - * @returns {*} Returns the found element or its key, else `undefined`. - */ - function baseFindKey(collection, predicate, eachFunc) { - var result; - eachFunc(collection, function(value, key, collection) { - if (predicate(value, key, collection)) { - result = key; - return false; - } - }); - return result; - } - - /** - * The base implementation of `_.findIndex` and `_.findLastIndex` without - * support for iteratee shorthands. - * - * @private - * @param {Array} array The array to inspect. - * @param {Function} predicate The function invoked per iteration. - * @param {number} fromIndex The index to search from. - * @param {boolean} [fromRight] Specify iterating from right to left. - * @returns {number} Returns the index of the matched value, else `-1`. - */ - function baseFindIndex(array, predicate, fromIndex, fromRight) { - var length = array.length, - index = fromIndex + (fromRight ? 1 : -1); - - while ((fromRight ? index-- : ++index < length)) { - if (predicate(array[index], index, array)) { - return index; - } - } - return -1; - } - - /** - * The base implementation of `_.indexOf` without `fromIndex` bounds checks. - * - * @private - * @param {Array} array The array to inspect. - * @param {*} value The value to search for. - * @param {number} fromIndex The index to search from. - * @returns {number} Returns the index of the matched value, else `-1`. - */ - function baseIndexOf(array, value, fromIndex) { - return value === value - ? strictIndexOf(array, value, fromIndex) - : baseFindIndex(array, baseIsNaN, fromIndex); - } - - /** - * This function is like `baseIndexOf` except that it accepts a comparator. - * - * @private - * @param {Array} array The array to inspect. - * @param {*} value The value to search for. - * @param {number} fromIndex The index to search from. - * @param {Function} comparator The comparator invoked per element. - * @returns {number} Returns the index of the matched value, else `-1`. - */ - function baseIndexOfWith(array, value, fromIndex, comparator) { - var index = fromIndex - 1, - length = array.length; - - while (++index < length) { - if (comparator(array[index], value)) { - return index; - } - } - return -1; - } - - /** - * The base implementation of `_.isNaN` without support for number objects. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`. - */ - function baseIsNaN(value) { - return value !== value; - } - - /** - * The base implementation of `_.mean` and `_.meanBy` without support for - * iteratee shorthands. - * - * @private - * @param {Array} array The array to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @returns {number} Returns the mean. - */ - function baseMean(array, iteratee) { - var length = array == null ? 0 : array.length; - return length ? (baseSum(array, iteratee) / length) : NAN; - } - - /** - * The base implementation of `_.property` without support for deep paths. - * - * @private - * @param {string} key The key of the property to get. - * @returns {Function} Returns the new accessor function. - */ - function baseProperty(key) { - return function(object) { - return object == null ? undefined : object[key]; - }; - } - - /** - * The base implementation of `_.propertyOf` without support for deep paths. - * - * @private - * @param {Object} object The object to query. - * @returns {Function} Returns the new accessor function. - */ - function basePropertyOf(object) { - return function(key) { - return object == null ? undefined : object[key]; - }; - } - - /** - * The base implementation of `_.reduce` and `_.reduceRight`, without support - * for iteratee shorthands, which iterates over `collection` using `eachFunc`. - * - * @private - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @param {*} accumulator The initial value. - * @param {boolean} initAccum Specify using the first or last element of - * `collection` as the initial value. - * @param {Function} eachFunc The function to iterate over `collection`. - * @returns {*} Returns the accumulated value. - */ - function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) { - eachFunc(collection, function(value, index, collection) { - accumulator = initAccum - ? (initAccum = false, value) - : iteratee(accumulator, value, index, collection); - }); - return accumulator; - } - - /** - * The base implementation of `_.sortBy` which uses `comparer` to define the - * sort order of `array` and replaces criteria objects with their corresponding - * values. - * - * @private - * @param {Array} array The array to sort. - * @param {Function} comparer The function to define sort order. - * @returns {Array} Returns `array`. - */ - function baseSortBy(array, comparer) { - var length = array.length; - - array.sort(comparer); - while (length--) { - array[length] = array[length].value; - } - return array; - } - - /** - * The base implementation of `_.sum` and `_.sumBy` without support for - * iteratee shorthands. - * - * @private - * @param {Array} array The array to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @returns {number} Returns the sum. - */ - function baseSum(array, iteratee) { - var result, - index = -1, - length = array.length; - - while (++index < length) { - var current = iteratee(array[index]); - if (current !== undefined) { - result = result === undefined ? current : (result + current); - } - } - return result; - } - - /** - * The base implementation of `_.times` without support for iteratee shorthands - * or max array length checks. - * - * @private - * @param {number} n The number of times to invoke `iteratee`. - * @param {Function} iteratee The function invoked per iteration. - * @returns {Array} Returns the array of results. - */ - function baseTimes(n, iteratee) { - var index = -1, - result = Array(n); - - while (++index < n) { - result[index] = iteratee(index); - } - return result; - } - - /** - * The base implementation of `_.toPairs` and `_.toPairsIn` which creates an array - * of key-value pairs for `object` corresponding to the property names of `props`. - * - * @private - * @param {Object} object The object to query. - * @param {Array} props The property names to get values for. - * @returns {Object} Returns the key-value pairs. - */ - function baseToPairs(object, props) { - return arrayMap(props, function(key) { - return [key, object[key]]; - }); - } - - /** - * The base implementation of `_.unary` without support for storing metadata. - * - * @private - * @param {Function} func The function to cap arguments for. - * @returns {Function} Returns the new capped function. - */ - function baseUnary(func) { - return function(value) { - return func(value); - }; - } - - /** - * The base implementation of `_.values` and `_.valuesIn` which creates an - * array of `object` property values corresponding to the property names - * of `props`. - * - * @private - * @param {Object} object The object to query. - * @param {Array} props The property names to get values for. - * @returns {Object} Returns the array of property values. - */ - function baseValues(object, props) { - return arrayMap(props, function(key) { - return object[key]; - }); - } - - /** - * Checks if a `cache` value for `key` exists. - * - * @private - * @param {Object} cache The cache to query. - * @param {string} key The key of the entry to check. - * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. - */ - function cacheHas(cache, key) { - return cache.has(key); - } - - /** - * Used by `_.trim` and `_.trimStart` to get the index of the first string symbol - * that is not found in the character symbols. - * - * @private - * @param {Array} strSymbols The string symbols to inspect. - * @param {Array} chrSymbols The character symbols to find. - * @returns {number} Returns the index of the first unmatched string symbol. - */ - function charsStartIndex(strSymbols, chrSymbols) { - var index = -1, - length = strSymbols.length; - - while (++index < length && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {} - return index; - } - - /** - * Used by `_.trim` and `_.trimEnd` to get the index of the last string symbol - * that is not found in the character symbols. - * - * @private - * @param {Array} strSymbols The string symbols to inspect. - * @param {Array} chrSymbols The character symbols to find. - * @returns {number} Returns the index of the last unmatched string symbol. - */ - function charsEndIndex(strSymbols, chrSymbols) { - var index = strSymbols.length; - - while (index-- && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {} - return index; - } - - /** - * Gets the number of `placeholder` occurrences in `array`. - * - * @private - * @param {Array} array The array to inspect. - * @param {*} placeholder The placeholder to search for. - * @returns {number} Returns the placeholder count. - */ - function countHolders(array, placeholder) { - var length = array.length, - result = 0; - - while (length--) { - if (array[length] === placeholder) { - ++result; - } - } - return result; - } - - /** - * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A - * letters to basic Latin letters. - * - * @private - * @param {string} letter The matched letter to deburr. - * @returns {string} Returns the deburred letter. - */ - var deburrLetter = basePropertyOf(deburredLetters); - - /** - * Used by `_.escape` to convert characters to HTML entities. - * - * @private - * @param {string} chr The matched character to escape. - * @returns {string} Returns the escaped character. - */ - var escapeHtmlChar = basePropertyOf(htmlEscapes); - - /** - * Used by `_.template` to escape characters for inclusion in compiled string literals. - * - * @private - * @param {string} chr The matched character to escape. - * @returns {string} Returns the escaped character. - */ - function escapeStringChar(chr) { - return '\\' + stringEscapes[chr]; - } - - /** - * Gets the value at `key` of `object`. - * - * @private - * @param {Object} [object] The object to query. - * @param {string} key The key of the property to get. - * @returns {*} Returns the property value. - */ - function getValue(object, key) { - return object == null ? undefined : object[key]; - } - - /** - * Checks if `string` contains Unicode symbols. - * - * @private - * @param {string} string The string to inspect. - * @returns {boolean} Returns `true` if a symbol is found, else `false`. - */ - function hasUnicode(string) { - return reHasUnicode.test(string); - } - - /** - * Checks if `string` contains a word composed of Unicode symbols. - * - * @private - * @param {string} string The string to inspect. - * @returns {boolean} Returns `true` if a word is found, else `false`. - */ - function hasUnicodeWord(string) { - return reHasUnicodeWord.test(string); - } - - /** - * Converts `iterator` to an array. - * - * @private - * @param {Object} iterator The iterator to convert. - * @returns {Array} Returns the converted array. - */ - function iteratorToArray(iterator) { - var data, - result = []; - - while (!(data = iterator.next()).done) { - result.push(data.value); - } - return result; - } - - /** - * Converts `map` to its key-value pairs. - * - * @private - * @param {Object} map The map to convert. - * @returns {Array} Returns the key-value pairs. - */ - function mapToArray(map) { - var index = -1, - result = Array(map.size); - - map.forEach(function(value, key) { - result[++index] = [key, value]; - }); - return result; - } - - /** - * Creates a unary function that invokes `func` with its argument transformed. - * - * @private - * @param {Function} func The function to wrap. - * @param {Function} transform The argument transform. - * @returns {Function} Returns the new function. - */ - function overArg(func, transform) { - return function(arg) { - return func(transform(arg)); - }; - } - - /** - * Replaces all `placeholder` elements in `array` with an internal placeholder - * and returns an array of their indexes. - * - * @private - * @param {Array} array The array to modify. - * @param {*} placeholder The placeholder to replace. - * @returns {Array} Returns the new array of placeholder indexes. - */ - function replaceHolders(array, placeholder) { - var index = -1, - length = array.length, - resIndex = 0, - result = []; - - while (++index < length) { - var value = array[index]; - if (value === placeholder || value === PLACEHOLDER) { - array[index] = PLACEHOLDER; - result[resIndex++] = index; - } - } - return result; - } - - /** - * Gets the value at `key`, unless `key` is "__proto__". - * - * @private - * @param {Object} object The object to query. - * @param {string} key The key of the property to get. - * @returns {*} Returns the property value. - */ - function safeGet(object, key) { - return key == '__proto__' - ? undefined - : object[key]; - } - - /** - * Converts `set` to an array of its values. - * - * @private - * @param {Object} set The set to convert. - * @returns {Array} Returns the values. - */ - function setToArray(set) { - var index = -1, - result = Array(set.size); - - set.forEach(function(value) { - result[++index] = value; - }); - return result; - } - - /** - * Converts `set` to its value-value pairs. - * - * @private - * @param {Object} set The set to convert. - * @returns {Array} Returns the value-value pairs. - */ - function setToPairs(set) { - var index = -1, - result = Array(set.size); - - set.forEach(function(value) { - result[++index] = [value, value]; - }); - return result; - } - - /** - * A specialized version of `_.indexOf` which performs strict equality - * comparisons of values, i.e. `===`. - * - * @private - * @param {Array} array The array to inspect. - * @param {*} value The value to search for. - * @param {number} fromIndex The index to search from. - * @returns {number} Returns the index of the matched value, else `-1`. - */ - function strictIndexOf(array, value, fromIndex) { - var index = fromIndex - 1, - length = array.length; - - while (++index < length) { - if (array[index] === value) { - return index; - } - } - return -1; - } - - /** - * A specialized version of `_.lastIndexOf` which performs strict equality - * comparisons of values, i.e. `===`. - * - * @private - * @param {Array} array The array to inspect. - * @param {*} value The value to search for. - * @param {number} fromIndex The index to search from. - * @returns {number} Returns the index of the matched value, else `-1`. - */ - function strictLastIndexOf(array, value, fromIndex) { - var index = fromIndex + 1; - while (index--) { - if (array[index] === value) { - return index; - } - } - return index; - } - - /** - * Gets the number of symbols in `string`. - * - * @private - * @param {string} string The string to inspect. - * @returns {number} Returns the string size. - */ - function stringSize(string) { - return hasUnicode(string) - ? unicodeSize(string) - : asciiSize(string); - } - - /** - * Converts `string` to an array. - * - * @private - * @param {string} string The string to convert. - * @returns {Array} Returns the converted array. - */ - function stringToArray(string) { - return hasUnicode(string) - ? unicodeToArray(string) - : asciiToArray(string); - } - - /** - * Used by `_.unescape` to convert HTML entities to characters. - * - * @private - * @param {string} chr The matched character to unescape. - * @returns {string} Returns the unescaped character. - */ - var unescapeHtmlChar = basePropertyOf(htmlUnescapes); - - /** - * Gets the size of a Unicode `string`. - * - * @private - * @param {string} string The string inspect. - * @returns {number} Returns the string size. - */ - function unicodeSize(string) { - var result = reUnicode.lastIndex = 0; - while (reUnicode.test(string)) { - ++result; - } - return result; - } - - /** - * Converts a Unicode `string` to an array. - * - * @private - * @param {string} string The string to convert. - * @returns {Array} Returns the converted array. - */ - function unicodeToArray(string) { - return string.match(reUnicode) || []; - } - - /** - * Splits a Unicode `string` into an array of its words. - * - * @private - * @param {string} The string to inspect. - * @returns {Array} Returns the words of `string`. - */ - function unicodeWords(string) { - return string.match(reUnicodeWord) || []; - } - - /*--------------------------------------------------------------------------*/ - - /** - * Create a new pristine `lodash` function using the `context` object. - * - * @static - * @memberOf _ - * @since 1.1.0 - * @category Util - * @param {Object} [context=root] The context object. - * @returns {Function} Returns a new `lodash` function. - * @example - * - * _.mixin({ 'foo': _.constant('foo') }); - * - * var lodash = _.runInContext(); - * lodash.mixin({ 'bar': lodash.constant('bar') }); - * - * _.isFunction(_.foo); - * // => true - * _.isFunction(_.bar); - * // => false - * - * lodash.isFunction(lodash.foo); - * // => false - * lodash.isFunction(lodash.bar); - * // => true - * - * // Create a suped-up `defer` in Node.js. - * var defer = _.runInContext({ 'setTimeout': setImmediate }).defer; - */ - var runInContext = (function runInContext(context) { - context = context == null ? root : _.defaults(root.Object(), context, _.pick(root, contextProps)); - - /** Built-in constructor references. */ - var Array = context.Array, - Date = context.Date, - Error = context.Error, - Function = context.Function, - Math = context.Math, - Object = context.Object, - RegExp = context.RegExp, - String = context.String, - TypeError = context.TypeError; - - /** Used for built-in method references. */ - var arrayProto = Array.prototype, - funcProto = Function.prototype, - objectProto = Object.prototype; - - /** Used to detect overreaching core-js shims. */ - var coreJsData = context['__core-js_shared__']; - - /** Used to resolve the decompiled source of functions. */ - var funcToString = funcProto.toString; - - /** Used to check objects for own properties. */ - var hasOwnProperty = objectProto.hasOwnProperty; - - /** Used to generate unique IDs. */ - var idCounter = 0; - - /** Used to detect methods masquerading as native. */ - var maskSrcKey = (function() { - var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || ''); - return uid ? ('Symbol(src)_1.' + uid) : ''; - }()); - - /** - * Used to resolve the - * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) - * of values. - */ - var nativeObjectToString = objectProto.toString; - - /** Used to infer the `Object` constructor. */ - var objectCtorString = funcToString.call(Object); - - /** Used to restore the original `_` reference in `_.noConflict`. */ - var oldDash = root._; - - /** Used to detect if a method is native. */ - var reIsNative = RegExp('^' + - funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\$&') - .replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$' - ); - - /** Built-in value references. */ - var Buffer = moduleExports ? context.Buffer : undefined, - Symbol = context.Symbol, - Uint8Array = context.Uint8Array, - allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined, - getPrototype = overArg(Object.getPrototypeOf, Object), - objectCreate = Object.create, - propertyIsEnumerable = objectProto.propertyIsEnumerable, - splice = arrayProto.splice, - spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined, - symIterator = Symbol ? Symbol.iterator : undefined, - symToStringTag = Symbol ? Symbol.toStringTag : undefined; - - var defineProperty = (function() { - try { - var func = getNative(Object, 'defineProperty'); - func({}, '', {}); - return func; - } catch (e) {} - }()); - - /** Mocked built-ins. */ - var ctxClearTimeout = context.clearTimeout !== root.clearTimeout && context.clearTimeout, - ctxNow = Date && Date.now !== root.Date.now && Date.now, - ctxSetTimeout = context.setTimeout !== root.setTimeout && context.setTimeout; - - /* Built-in method references for those with the same name as other `lodash` methods. */ - var nativeCeil = Math.ceil, - nativeFloor = Math.floor, - nativeGetSymbols = Object.getOwnPropertySymbols, - nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined, - nativeIsFinite = context.isFinite, - nativeJoin = arrayProto.join, - nativeKeys = overArg(Object.keys, Object), - nativeMax = Math.max, - nativeMin = Math.min, - nativeNow = Date.now, - nativeParseInt = context.parseInt, - nativeRandom = Math.random, - nativeReverse = arrayProto.reverse; - - /* Built-in method references that are verified to be native. */ - var DataView = getNative(context, 'DataView'), - Map = getNative(context, 'Map'), - Promise = getNative(context, 'Promise'), - Set = getNative(context, 'Set'), - WeakMap = getNative(context, 'WeakMap'), - nativeCreate = getNative(Object, 'create'); - - /** Used to store function metadata. */ - var metaMap = WeakMap && new WeakMap; - - /** Used to lookup unminified function names. */ - var realNames = {}; - - /** Used to detect maps, sets, and weakmaps. */ - var dataViewCtorString = toSource(DataView), - mapCtorString = toSource(Map), - promiseCtorString = toSource(Promise), - setCtorString = toSource(Set), - weakMapCtorString = toSource(WeakMap); - - /** Used to convert symbols to primitives and strings. */ - var symbolProto = Symbol ? Symbol.prototype : undefined, - symbolValueOf = symbolProto ? symbolProto.valueOf : undefined, - symbolToString = symbolProto ? symbolProto.toString : undefined; - - /*------------------------------------------------------------------------*/ - - /** - * Creates a `lodash` object which wraps `value` to enable implicit method - * chain sequences. Methods that operate on and return arrays, collections, - * and functions can be chained together. Methods that retrieve a single value - * or may return a primitive value will automatically end the chain sequence - * and return the unwrapped value. Otherwise, the value must be unwrapped - * with `_#value`. - * - * Explicit chain sequences, which must be unwrapped with `_#value`, may be - * enabled using `_.chain`. - * - * The execution of chained methods is lazy, that is, it's deferred until - * `_#value` is implicitly or explicitly called. - * - * Lazy evaluation allows several methods to support shortcut fusion. - * Shortcut fusion is an optimization to merge iteratee calls; this avoids - * the creation of intermediate arrays and can greatly reduce the number of - * iteratee executions. Sections of a chain sequence qualify for shortcut - * fusion if the section is applied to an array and iteratees accept only - * one argument. The heuristic for whether a section qualifies for shortcut - * fusion is subject to change. - * - * Chaining is supported in custom builds as long as the `_#value` method is - * directly or indirectly included in the build. - * - * In addition to lodash methods, wrappers have `Array` and `String` methods. - * - * The wrapper `Array` methods are: - * `concat`, `join`, `pop`, `push`, `shift`, `sort`, `splice`, and `unshift` - * - * The wrapper `String` methods are: - * `replace` and `split` - * - * The wrapper methods that support shortcut fusion are: - * `at`, `compact`, `drop`, `dropRight`, `dropWhile`, `filter`, `find`, - * `findLast`, `head`, `initial`, `last`, `map`, `reject`, `reverse`, `slice`, - * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `toArray` - * - * The chainable wrapper methods are: - * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`, - * `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`, - * `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`, - * `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`, - * `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`, - * `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`, - * `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`, - * `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`, - * `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`, - * `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`, - * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`, - * `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`, - * `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`, - * `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`, - * `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`, - * `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`, - * `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`, - * `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`, - * `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`, - * `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`, - * `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`, - * `unshift`, `unzip`, `unzipWith`, `update`, `updateWith`, `values`, - * `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`, - * `zipObject`, `zipObjectDeep`, and `zipWith` - * - * The wrapper methods that are **not** chainable by default are: - * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`, - * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`, - * `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`, - * `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`, - * `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`, - * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`, - * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`, - * `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`, - * `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`, - * `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`, - * `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`, - * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`, - * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`, - * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`, - * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`, - * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`, - * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`, - * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`, - * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`, - * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`, - * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`, - * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`, - * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`, - * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`, - * `upperFirst`, `value`, and `words` - * - * @name _ - * @constructor - * @category Seq - * @param {*} value The value to wrap in a `lodash` instance. - * @returns {Object} Returns the new `lodash` wrapper instance. - * @example - * - * function square(n) { - * return n * n; - * } - * - * var wrapped = _([1, 2, 3]); - * - * // Returns an unwrapped value. - * wrapped.reduce(_.add); - * // => 6 - * - * // Returns a wrapped value. - * var squares = wrapped.map(square); - * - * _.isArray(squares); - * // => false - * - * _.isArray(squares.value()); - * // => true - */ - function lodash(value) { - if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) { - if (value instanceof LodashWrapper) { - return value; - } - if (hasOwnProperty.call(value, '__wrapped__')) { - return wrapperClone(value); - } - } - return new LodashWrapper(value); - } - - /** - * The base implementation of `_.create` without support for assigning - * properties to the created object. - * - * @private - * @param {Object} proto The object to inherit from. - * @returns {Object} Returns the new object. - */ - var baseCreate = (function() { - function object() {} - return function(proto) { - if (!isObject(proto)) { - return {}; - } - if (objectCreate) { - return objectCreate(proto); - } - object.prototype = proto; - var result = new object; - object.prototype = undefined; - return result; - }; - }()); - - /** - * The function whose prototype chain sequence wrappers inherit from. - * - * @private - */ - function baseLodash() { - // No operation performed. - } - - /** - * The base constructor for creating `lodash` wrapper objects. - * - * @private - * @param {*} value The value to wrap. - * @param {boolean} [chainAll] Enable explicit method chain sequences. - */ - function LodashWrapper(value, chainAll) { - this.__wrapped__ = value; - this.__actions__ = []; - this.__chain__ = !!chainAll; - this.__index__ = 0; - this.__values__ = undefined; - } - - /** - * By default, the template delimiters used by lodash are like those in - * embedded Ruby (ERB) as well as ES2015 template strings. Change the - * following template settings to use alternative delimiters. - * - * @static - * @memberOf _ - * @type {Object} - */ - lodash.templateSettings = { - - /** - * Used to detect `data` property values to be HTML-escaped. - * - * @memberOf _.templateSettings - * @type {RegExp} - */ - 'escape': reEscape, - - /** - * Used to detect code to be evaluated. - * - * @memberOf _.templateSettings - * @type {RegExp} - */ - 'evaluate': reEvaluate, - - /** - * Used to detect `data` property values to inject. - * - * @memberOf _.templateSettings - * @type {RegExp} - */ - 'interpolate': reInterpolate, - - /** - * Used to reference the data object in the template text. - * - * @memberOf _.templateSettings - * @type {string} - */ - 'variable': '', - - /** - * Used to import variables into the compiled template. - * - * @memberOf _.templateSettings - * @type {Object} - */ - 'imports': { - - /** - * A reference to the `lodash` function. - * - * @memberOf _.templateSettings.imports - * @type {Function} - */ - '_': lodash - } - }; - - // Ensure wrappers are instances of `baseLodash`. - lodash.prototype = baseLodash.prototype; - lodash.prototype.constructor = lodash; - - LodashWrapper.prototype = baseCreate(baseLodash.prototype); - LodashWrapper.prototype.constructor = LodashWrapper; - - /*------------------------------------------------------------------------*/ - - /** - * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation. - * - * @private - * @constructor - * @param {*} value The value to wrap. - */ - function LazyWrapper(value) { - this.__wrapped__ = value; - this.__actions__ = []; - this.__dir__ = 1; - this.__filtered__ = false; - this.__iteratees__ = []; - this.__takeCount__ = MAX_ARRAY_LENGTH; - this.__views__ = []; - } - - /** - * Creates a clone of the lazy wrapper object. - * - * @private - * @name clone - * @memberOf LazyWrapper - * @returns {Object} Returns the cloned `LazyWrapper` object. - */ - function lazyClone() { - var result = new LazyWrapper(this.__wrapped__); - result.__actions__ = copyArray(this.__actions__); - result.__dir__ = this.__dir__; - result.__filtered__ = this.__filtered__; - result.__iteratees__ = copyArray(this.__iteratees__); - result.__takeCount__ = this.__takeCount__; - result.__views__ = copyArray(this.__views__); - return result; - } - - /** - * Reverses the direction of lazy iteration. - * - * @private - * @name reverse - * @memberOf LazyWrapper - * @returns {Object} Returns the new reversed `LazyWrapper` object. - */ - function lazyReverse() { - if (this.__filtered__) { - var result = new LazyWrapper(this); - result.__dir__ = -1; - result.__filtered__ = true; - } else { - result = this.clone(); - result.__dir__ *= -1; - } - return result; - } - - /** - * Extracts the unwrapped value from its lazy wrapper. - * - * @private - * @name value - * @memberOf LazyWrapper - * @returns {*} Returns the unwrapped value. - */ - function lazyValue() { - var array = this.__wrapped__.value(), - dir = this.__dir__, - isArr = isArray(array), - isRight = dir < 0, - arrLength = isArr ? array.length : 0, - view = getView(0, arrLength, this.__views__), - start = view.start, - end = view.end, - length = end - start, - index = isRight ? end : (start - 1), - iteratees = this.__iteratees__, - iterLength = iteratees.length, - resIndex = 0, - takeCount = nativeMin(length, this.__takeCount__); - - if (!isArr || (!isRight && arrLength == length && takeCount == length)) { - return baseWrapperValue(array, this.__actions__); - } - var result = []; - - outer: - while (length-- && resIndex < takeCount) { - index += dir; - - var iterIndex = -1, - value = array[index]; - - while (++iterIndex < iterLength) { - var data = iteratees[iterIndex], - iteratee = data.iteratee, - type = data.type, - computed = iteratee(value); - - if (type == LAZY_MAP_FLAG) { - value = computed; - } else if (!computed) { - if (type == LAZY_FILTER_FLAG) { - continue outer; - } else { - break outer; - } - } - } - result[resIndex++] = value; - } - return result; - } - - // Ensure `LazyWrapper` is an instance of `baseLodash`. - LazyWrapper.prototype = baseCreate(baseLodash.prototype); - LazyWrapper.prototype.constructor = LazyWrapper; - - /*------------------------------------------------------------------------*/ - - /** - * Creates a hash object. - * - * @private - * @constructor - * @param {Array} [entries] The key-value pairs to cache. - */ - function Hash(entries) { - var index = -1, - length = entries == null ? 0 : entries.length; - - this.clear(); - while (++index < length) { - var entry = entries[index]; - this.set(entry[0], entry[1]); - } - } - - /** - * Removes all key-value entries from the hash. - * - * @private - * @name clear - * @memberOf Hash - */ - function hashClear() { - this.__data__ = nativeCreate ? nativeCreate(null) : {}; - this.size = 0; - } - - /** - * Removes `key` and its value from the hash. - * - * @private - * @name delete - * @memberOf Hash - * @param {Object} hash The hash to modify. - * @param {string} key The key of the value to remove. - * @returns {boolean} Returns `true` if the entry was removed, else `false`. - */ - function hashDelete(key) { - var result = this.has(key) && delete this.__data__[key]; - this.size -= result ? 1 : 0; - return result; - } - - /** - * Gets the hash value for `key`. - * - * @private - * @name get - * @memberOf Hash - * @param {string} key The key of the value to get. - * @returns {*} Returns the entry value. - */ - function hashGet(key) { - var data = this.__data__; - if (nativeCreate) { - var result = data[key]; - return result === HASH_UNDEFINED ? undefined : result; - } - return hasOwnProperty.call(data, key) ? data[key] : undefined; - } - - /** - * Checks if a hash value for `key` exists. - * - * @private - * @name has - * @memberOf Hash - * @param {string} key The key of the entry to check. - * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. - */ - function hashHas(key) { - var data = this.__data__; - return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key); - } - - /** - * Sets the hash `key` to `value`. - * - * @private - * @name set - * @memberOf Hash - * @param {string} key The key of the value to set. - * @param {*} value The value to set. - * @returns {Object} Returns the hash instance. - */ - function hashSet(key, value) { - var data = this.__data__; - this.size += this.has(key) ? 0 : 1; - data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value; - return this; - } - - // Add methods to `Hash`. - Hash.prototype.clear = hashClear; - Hash.prototype['delete'] = hashDelete; - Hash.prototype.get = hashGet; - Hash.prototype.has = hashHas; - Hash.prototype.set = hashSet; - - /*------------------------------------------------------------------------*/ - - /** - * Creates an list cache object. - * - * @private - * @constructor - * @param {Array} [entries] The key-value pairs to cache. - */ - function ListCache(entries) { - var index = -1, - length = entries == null ? 0 : entries.length; - - this.clear(); - while (++index < length) { - var entry = entries[index]; - this.set(entry[0], entry[1]); - } - } - - /** - * Removes all key-value entries from the list cache. - * - * @private - * @name clear - * @memberOf ListCache - */ - function listCacheClear() { - this.__data__ = []; - this.size = 0; - } - - /** - * Removes `key` and its value from the list cache. - * - * @private - * @name delete - * @memberOf ListCache - * @param {string} key The key of the value to remove. - * @returns {boolean} Returns `true` if the entry was removed, else `false`. - */ - function listCacheDelete(key) { - var data = this.__data__, - index = assocIndexOf(data, key); - - if (index < 0) { - return false; - } - var lastIndex = data.length - 1; - if (index == lastIndex) { - data.pop(); - } else { - splice.call(data, index, 1); - } - --this.size; - return true; - } - - /** - * Gets the list cache value for `key`. - * - * @private - * @name get - * @memberOf ListCache - * @param {string} key The key of the value to get. - * @returns {*} Returns the entry value. - */ - function listCacheGet(key) { - var data = this.__data__, - index = assocIndexOf(data, key); - - return index < 0 ? undefined : data[index][1]; - } - - /** - * Checks if a list cache value for `key` exists. - * - * @private - * @name has - * @memberOf ListCache - * @param {string} key The key of the entry to check. - * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. - */ - function listCacheHas(key) { - return assocIndexOf(this.__data__, key) > -1; - } - - /** - * Sets the list cache `key` to `value`. - * - * @private - * @name set - * @memberOf ListCache - * @param {string} key The key of the value to set. - * @param {*} value The value to set. - * @returns {Object} Returns the list cache instance. - */ - function listCacheSet(key, value) { - var data = this.__data__, - index = assocIndexOf(data, key); - - if (index < 0) { - ++this.size; - data.push([key, value]); - } else { - data[index][1] = value; - } - return this; - } - - // Add methods to `ListCache`. - ListCache.prototype.clear = listCacheClear; - ListCache.prototype['delete'] = listCacheDelete; - ListCache.prototype.get = listCacheGet; - ListCache.prototype.has = listCacheHas; - ListCache.prototype.set = listCacheSet; - - /*------------------------------------------------------------------------*/ - - /** - * Creates a map cache object to store key-value pairs. - * - * @private - * @constructor - * @param {Array} [entries] The key-value pairs to cache. - */ - function MapCache(entries) { - var index = -1, - length = entries == null ? 0 : entries.length; - - this.clear(); - while (++index < length) { - var entry = entries[index]; - this.set(entry[0], entry[1]); - } - } - - /** - * Removes all key-value entries from the map. - * - * @private - * @name clear - * @memberOf MapCache - */ - function mapCacheClear() { - this.size = 0; - this.__data__ = { - 'hash': new Hash, - 'map': new (Map || ListCache), - 'string': new Hash - }; - } - - /** - * Removes `key` and its value from the map. - * - * @private - * @name delete - * @memberOf MapCache - * @param {string} key The key of the value to remove. - * @returns {boolean} Returns `true` if the entry was removed, else `false`. - */ - function mapCacheDelete(key) { - var result = getMapData(this, key)['delete'](key); - this.size -= result ? 1 : 0; - return result; - } - - /** - * Gets the map value for `key`. - * - * @private - * @name get - * @memberOf MapCache - * @param {string} key The key of the value to get. - * @returns {*} Returns the entry value. - */ - function mapCacheGet(key) { - return getMapData(this, key).get(key); - } - - /** - * Checks if a map value for `key` exists. - * - * @private - * @name has - * @memberOf MapCache - * @param {string} key The key of the entry to check. - * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. - */ - function mapCacheHas(key) { - return getMapData(this, key).has(key); - } - - /** - * Sets the map `key` to `value`. - * - * @private - * @name set - * @memberOf MapCache - * @param {string} key The key of the value to set. - * @param {*} value The value to set. - * @returns {Object} Returns the map cache instance. - */ - function mapCacheSet(key, value) { - var data = getMapData(this, key), - size = data.size; - - data.set(key, value); - this.size += data.size == size ? 0 : 1; - return this; - } - - // Add methods to `MapCache`. - MapCache.prototype.clear = mapCacheClear; - MapCache.prototype['delete'] = mapCacheDelete; - MapCache.prototype.get = mapCacheGet; - MapCache.prototype.has = mapCacheHas; - MapCache.prototype.set = mapCacheSet; - - /*------------------------------------------------------------------------*/ - - /** - * - * Creates an array cache object to store unique values. - * - * @private - * @constructor - * @param {Array} [values] The values to cache. - */ - function SetCache(values) { - var index = -1, - length = values == null ? 0 : values.length; - - this.__data__ = new MapCache; - while (++index < length) { - this.add(values[index]); - } - } - - /** - * Adds `value` to the array cache. - * - * @private - * @name add - * @memberOf SetCache - * @alias push - * @param {*} value The value to cache. - * @returns {Object} Returns the cache instance. - */ - function setCacheAdd(value) { - this.__data__.set(value, HASH_UNDEFINED); - return this; - } - - /** - * Checks if `value` is in the array cache. - * - * @private - * @name has - * @memberOf SetCache - * @param {*} value The value to search for. - * @returns {number} Returns `true` if `value` is found, else `false`. - */ - function setCacheHas(value) { - return this.__data__.has(value); - } - - // Add methods to `SetCache`. - SetCache.prototype.add = SetCache.prototype.push = setCacheAdd; - SetCache.prototype.has = setCacheHas; - - /*------------------------------------------------------------------------*/ - - /** - * Creates a stack cache object to store key-value pairs. - * - * @private - * @constructor - * @param {Array} [entries] The key-value pairs to cache. - */ - function Stack(entries) { - var data = this.__data__ = new ListCache(entries); - this.size = data.size; - } - - /** - * Removes all key-value entries from the stack. - * - * @private - * @name clear - * @memberOf Stack - */ - function stackClear() { - this.__data__ = new ListCache; - this.size = 0; - } - - /** - * Removes `key` and its value from the stack. - * - * @private - * @name delete - * @memberOf Stack - * @param {string} key The key of the value to remove. - * @returns {boolean} Returns `true` if the entry was removed, else `false`. - */ - function stackDelete(key) { - var data = this.__data__, - result = data['delete'](key); - - this.size = data.size; - return result; - } - - /** - * Gets the stack value for `key`. - * - * @private - * @name get - * @memberOf Stack - * @param {string} key The key of the value to get. - * @returns {*} Returns the entry value. - */ - function stackGet(key) { - return this.__data__.get(key); - } - - /** - * Checks if a stack value for `key` exists. - * - * @private - * @name has - * @memberOf Stack - * @param {string} key The key of the entry to check. - * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. - */ - function stackHas(key) { - return this.__data__.has(key); - } - - /** - * Sets the stack `key` to `value`. - * - * @private - * @name set - * @memberOf Stack - * @param {string} key The key of the value to set. - * @param {*} value The value to set. - * @returns {Object} Returns the stack cache instance. - */ - function stackSet(key, value) { - var data = this.__data__; - if (data instanceof ListCache) { - var pairs = data.__data__; - if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) { - pairs.push([key, value]); - this.size = ++data.size; - return this; - } - data = this.__data__ = new MapCache(pairs); - } - data.set(key, value); - this.size = data.size; - return this; - } - - // Add methods to `Stack`. - Stack.prototype.clear = stackClear; - Stack.prototype['delete'] = stackDelete; - Stack.prototype.get = stackGet; - Stack.prototype.has = stackHas; - Stack.prototype.set = stackSet; - - /*------------------------------------------------------------------------*/ - - /** - * Creates an array of the enumerable property names of the array-like `value`. - * - * @private - * @param {*} value The value to query. - * @param {boolean} inherited Specify returning inherited property names. - * @returns {Array} Returns the array of property names. - */ - function arrayLikeKeys(value, inherited) { - var isArr = isArray(value), - isArg = !isArr && isArguments(value), - isBuff = !isArr && !isArg && isBuffer(value), - isType = !isArr && !isArg && !isBuff && isTypedArray(value), - skipIndexes = isArr || isArg || isBuff || isType, - result = skipIndexes ? baseTimes(value.length, String) : [], - length = result.length; - - for (var key in value) { - if ((inherited || hasOwnProperty.call(value, key)) && - !(skipIndexes && ( - // Safari 9 has enumerable `arguments.length` in strict mode. - key == 'length' || - // Node.js 0.10 has enumerable non-index properties on buffers. - (isBuff && (key == 'offset' || key == 'parent')) || - // PhantomJS 2 has enumerable non-index properties on typed arrays. - (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) || - // Skip index properties. - isIndex(key, length) - ))) { - result.push(key); - } - } - return result; - } - - /** - * A specialized version of `_.sample` for arrays. - * - * @private - * @param {Array} array The array to sample. - * @returns {*} Returns the random element. - */ - function arraySample(array) { - var length = array.length; - return length ? array[baseRandom(0, length - 1)] : undefined; - } - - /** - * A specialized version of `_.sampleSize` for arrays. - * - * @private - * @param {Array} array The array to sample. - * @param {number} n The number of elements to sample. - * @returns {Array} Returns the random elements. - */ - function arraySampleSize(array, n) { - return shuffleSelf(copyArray(array), baseClamp(n, 0, array.length)); - } - - /** - * A specialized version of `_.shuffle` for arrays. - * - * @private - * @param {Array} array The array to shuffle. - * @returns {Array} Returns the new shuffled array. - */ - function arrayShuffle(array) { - return shuffleSelf(copyArray(array)); - } - - /** - * This function is like `assignValue` except that it doesn't assign - * `undefined` values. - * - * @private - * @param {Object} object The object to modify. - * @param {string} key The key of the property to assign. - * @param {*} value The value to assign. - */ - function assignMergeValue(object, key, value) { - if ((value !== undefined && !eq(object[key], value)) || - (value === undefined && !(key in object))) { - baseAssignValue(object, key, value); - } - } - - /** - * Assigns `value` to `key` of `object` if the existing value is not equivalent - * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) - * for equality comparisons. - * - * @private - * @param {Object} object The object to modify. - * @param {string} key The key of the property to assign. - * @param {*} value The value to assign. - */ - function assignValue(object, key, value) { - var objValue = object[key]; - if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) || - (value === undefined && !(key in object))) { - baseAssignValue(object, key, value); - } - } - - /** - * Gets the index at which the `key` is found in `array` of key-value pairs. - * - * @private - * @param {Array} array The array to inspect. - * @param {*} key The key to search for. - * @returns {number} Returns the index of the matched value, else `-1`. - */ - function assocIndexOf(array, key) { - var length = array.length; - while (length--) { - if (eq(array[length][0], key)) { - return length; - } - } - return -1; - } - - /** - * Aggregates elements of `collection` on `accumulator` with keys transformed - * by `iteratee` and values set by `setter`. - * - * @private - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} setter The function to set `accumulator` values. - * @param {Function} iteratee The iteratee to transform keys. - * @param {Object} accumulator The initial aggregated object. - * @returns {Function} Returns `accumulator`. - */ - function baseAggregator(collection, setter, iteratee, accumulator) { - baseEach(collection, function(value, key, collection) { - setter(accumulator, value, iteratee(value), collection); - }); - return accumulator; - } - - /** - * The base implementation of `_.assign` without support for multiple sources - * or `customizer` functions. - * - * @private - * @param {Object} object The destination object. - * @param {Object} source The source object. - * @returns {Object} Returns `object`. - */ - function baseAssign(object, source) { - return object && copyObject(source, keys(source), object); - } - - /** - * The base implementation of `_.assignIn` without support for multiple sources - * or `customizer` functions. - * - * @private - * @param {Object} object The destination object. - * @param {Object} source The source object. - * @returns {Object} Returns `object`. - */ - function baseAssignIn(object, source) { - return object && copyObject(source, keysIn(source), object); - } - - /** - * The base implementation of `assignValue` and `assignMergeValue` without - * value checks. - * - * @private - * @param {Object} object The object to modify. - * @param {string} key The key of the property to assign. - * @param {*} value The value to assign. - */ - function baseAssignValue(object, key, value) { - if (key == '__proto__' && defineProperty) { - defineProperty(object, key, { - 'configurable': true, - 'enumerable': true, - 'value': value, - 'writable': true - }); - } else { - object[key] = value; - } - } - - /** - * The base implementation of `_.at` without support for individual paths. - * - * @private - * @param {Object} object The object to iterate over. - * @param {string[]} paths The property paths to pick. - * @returns {Array} Returns the picked elements. - */ - function baseAt(object, paths) { - var index = -1, - length = paths.length, - result = Array(length), - skip = object == null; - - while (++index < length) { - result[index] = skip ? undefined : get(object, paths[index]); - } - return result; - } - - /** - * The base implementation of `_.clamp` which doesn't coerce arguments. - * - * @private - * @param {number} number The number to clamp. - * @param {number} [lower] The lower bound. - * @param {number} upper The upper bound. - * @returns {number} Returns the clamped number. - */ - function baseClamp(number, lower, upper) { - if (number === number) { - if (upper !== undefined) { - number = number <= upper ? number : upper; - } - if (lower !== undefined) { - number = number >= lower ? number : lower; - } - } - return number; - } - - /** - * The base implementation of `_.clone` and `_.cloneDeep` which tracks - * traversed objects. - * - * @private - * @param {*} value The value to clone. - * @param {boolean} bitmask The bitmask flags. - * 1 - Deep clone - * 2 - Flatten inherited properties - * 4 - Clone symbols - * @param {Function} [customizer] The function to customize cloning. - * @param {string} [key] The key of `value`. - * @param {Object} [object] The parent object of `value`. - * @param {Object} [stack] Tracks traversed objects and their clone counterparts. - * @returns {*} Returns the cloned value. - */ - function baseClone(value, bitmask, customizer, key, object, stack) { - var result, - isDeep = bitmask & CLONE_DEEP_FLAG, - isFlat = bitmask & CLONE_FLAT_FLAG, - isFull = bitmask & CLONE_SYMBOLS_FLAG; - - if (customizer) { - result = object ? customizer(value, key, object, stack) : customizer(value); - } - if (result !== undefined) { - return result; - } - if (!isObject(value)) { - return value; - } - var isArr = isArray(value); - if (isArr) { - result = initCloneArray(value); - if (!isDeep) { - return copyArray(value, result); - } - } else { - var tag = getTag(value), - isFunc = tag == funcTag || tag == genTag; - - if (isBuffer(value)) { - return cloneBuffer(value, isDeep); - } - if (tag == objectTag || tag == argsTag || (isFunc && !object)) { - result = (isFlat || isFunc) ? {} : initCloneObject(value); - if (!isDeep) { - return isFlat - ? copySymbolsIn(value, baseAssignIn(result, value)) - : copySymbols(value, baseAssign(result, value)); - } - } else { - if (!cloneableTags[tag]) { - return object ? value : {}; - } - result = initCloneByTag(value, tag, isDeep); - } - } - // Check for circular references and return its corresponding clone. - stack || (stack = new Stack); - var stacked = stack.get(value); - if (stacked) { - return stacked; - } - stack.set(value, result); - - if (isSet(value)) { - value.forEach(function(subValue) { - result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack)); - }); - - return result; - } - - if (isMap(value)) { - value.forEach(function(subValue, key) { - result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack)); - }); - - return result; - } - - var keysFunc = isFull - ? (isFlat ? getAllKeysIn : getAllKeys) - : (isFlat ? keysIn : keys); - - var props = isArr ? undefined : keysFunc(value); - arrayEach(props || value, function(subValue, key) { - if (props) { - key = subValue; - subValue = value[key]; - } - // Recursively populate clone (susceptible to call stack limits). - assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack)); - }); - return result; - } - - /** - * The base implementation of `_.conforms` which doesn't clone `source`. - * - * @private - * @param {Object} source The object of property predicates to conform to. - * @returns {Function} Returns the new spec function. - */ - function baseConforms(source) { - var props = keys(source); - return function(object) { - return baseConformsTo(object, source, props); - }; - } - - /** - * The base implementation of `_.conformsTo` which accepts `props` to check. - * - * @private - * @param {Object} object The object to inspect. - * @param {Object} source The object of property predicates to conform to. - * @returns {boolean} Returns `true` if `object` conforms, else `false`. - */ - function baseConformsTo(object, source, props) { - var length = props.length; - if (object == null) { - return !length; - } - object = Object(object); - while (length--) { - var key = props[length], - predicate = source[key], - value = object[key]; - - if ((value === undefined && !(key in object)) || !predicate(value)) { - return false; - } - } - return true; - } - - /** - * The base implementation of `_.delay` and `_.defer` which accepts `args` - * to provide to `func`. - * - * @private - * @param {Function} func The function to delay. - * @param {number} wait The number of milliseconds to delay invocation. - * @param {Array} args The arguments to provide to `func`. - * @returns {number|Object} Returns the timer id or timeout object. - */ - function baseDelay(func, wait, args) { - if (typeof func != 'function') { - throw new TypeError(FUNC_ERROR_TEXT); - } - return setTimeout(function() { func.apply(undefined, args); }, wait); - } - - /** - * The base implementation of methods like `_.difference` without support - * for excluding multiple arrays or iteratee shorthands. - * - * @private - * @param {Array} array The array to inspect. - * @param {Array} values The values to exclude. - * @param {Function} [iteratee] The iteratee invoked per element. - * @param {Function} [comparator] The comparator invoked per element. - * @returns {Array} Returns the new array of filtered values. - */ - function baseDifference(array, values, iteratee, comparator) { - var index = -1, - includes = arrayIncludes, - isCommon = true, - length = array.length, - result = [], - valuesLength = values.length; - - if (!length) { - return result; - } - if (iteratee) { - values = arrayMap(values, baseUnary(iteratee)); - } - if (comparator) { - includes = arrayIncludesWith; - isCommon = false; - } - else if (values.length >= LARGE_ARRAY_SIZE) { - includes = cacheHas; - isCommon = false; - values = new SetCache(values); - } - outer: - while (++index < length) { - var value = array[index], - computed = iteratee == null ? value : iteratee(value); - - value = (comparator || value !== 0) ? value : 0; - if (isCommon && computed === computed) { - var valuesIndex = valuesLength; - while (valuesIndex--) { - if (values[valuesIndex] === computed) { - continue outer; - } - } - result.push(value); - } - else if (!includes(values, computed, comparator)) { - result.push(value); - } - } - return result; - } - - /** - * The base implementation of `_.forEach` without support for iteratee shorthands. - * - * @private - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @returns {Array|Object} Returns `collection`. - */ - var baseEach = createBaseEach(baseForOwn); - - /** - * The base implementation of `_.forEachRight` without support for iteratee shorthands. - * - * @private - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @returns {Array|Object} Returns `collection`. - */ - var baseEachRight = createBaseEach(baseForOwnRight, true); - - /** - * The base implementation of `_.every` without support for iteratee shorthands. - * - * @private - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} predicate The function invoked per iteration. - * @returns {boolean} Returns `true` if all elements pass the predicate check, - * else `false` - */ - function baseEvery(collection, predicate) { - var result = true; - baseEach(collection, function(value, index, collection) { - result = !!predicate(value, index, collection); - return result; - }); - return result; - } - - /** - * The base implementation of methods like `_.max` and `_.min` which accepts a - * `comparator` to determine the extremum value. - * - * @private - * @param {Array} array The array to iterate over. - * @param {Function} iteratee The iteratee invoked per iteration. - * @param {Function} comparator The comparator used to compare values. - * @returns {*} Returns the extremum value. - */ - function baseExtremum(array, iteratee, comparator) { - var index = -1, - length = array.length; - - while (++index < length) { - var value = array[index], - current = iteratee(value); - - if (current != null && (computed === undefined - ? (current === current && !isSymbol(current)) - : comparator(current, computed) - )) { - var computed = current, - result = value; - } - } - return result; - } - - /** - * The base implementation of `_.fill` without an iteratee call guard. - * - * @private - * @param {Array} array The array to fill. - * @param {*} value The value to fill `array` with. - * @param {number} [start=0] The start position. - * @param {number} [end=array.length] The end position. - * @returns {Array} Returns `array`. - */ - function baseFill(array, value, start, end) { - var length = array.length; - - start = toInteger(start); - if (start < 0) { - start = -start > length ? 0 : (length + start); - } - end = (end === undefined || end > length) ? length : toInteger(end); - if (end < 0) { - end += length; - } - end = start > end ? 0 : toLength(end); - while (start < end) { - array[start++] = value; - } - return array; - } - - /** - * The base implementation of `_.filter` without support for iteratee shorthands. - * - * @private - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} predicate The function invoked per iteration. - * @returns {Array} Returns the new filtered array. - */ - function baseFilter(collection, predicate) { - var result = []; - baseEach(collection, function(value, index, collection) { - if (predicate(value, index, collection)) { - result.push(value); - } - }); - return result; - } - - /** - * The base implementation of `_.flatten` with support for restricting flattening. - * - * @private - * @param {Array} array The array to flatten. - * @param {number} depth The maximum recursion depth. - * @param {boolean} [predicate=isFlattenable] The function invoked per iteration. - * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks. - * @param {Array} [result=[]] The initial result value. - * @returns {Array} Returns the new flattened array. - */ - function baseFlatten(array, depth, predicate, isStrict, result) { - var index = -1, - length = array.length; - - predicate || (predicate = isFlattenable); - result || (result = []); - - while (++index < length) { - var value = array[index]; - if (depth > 0 && predicate(value)) { - if (depth > 1) { - // Recursively flatten arrays (susceptible to call stack limits). - baseFlatten(value, depth - 1, predicate, isStrict, result); - } else { - arrayPush(result, value); - } - } else if (!isStrict) { - result[result.length] = value; - } - } - return result; - } - - /** - * The base implementation of `baseForOwn` which iterates over `object` - * properties returned by `keysFunc` and invokes `iteratee` for each property. - * Iteratee functions may exit iteration early by explicitly returning `false`. - * - * @private - * @param {Object} object The object to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @param {Function} keysFunc The function to get the keys of `object`. - * @returns {Object} Returns `object`. - */ - var baseFor = createBaseFor(); - - /** - * This function is like `baseFor` except that it iterates over properties - * in the opposite order. - * - * @private - * @param {Object} object The object to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @param {Function} keysFunc The function to get the keys of `object`. - * @returns {Object} Returns `object`. - */ - var baseForRight = createBaseFor(true); - - /** - * The base implementation of `_.forOwn` without support for iteratee shorthands. - * - * @private - * @param {Object} object The object to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @returns {Object} Returns `object`. - */ - function baseForOwn(object, iteratee) { - return object && baseFor(object, iteratee, keys); - } - - /** - * The base implementation of `_.forOwnRight` without support for iteratee shorthands. - * - * @private - * @param {Object} object The object to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @returns {Object} Returns `object`. - */ - function baseForOwnRight(object, iteratee) { - return object && baseForRight(object, iteratee, keys); - } - - /** - * The base implementation of `_.functions` which creates an array of - * `object` function property names filtered from `props`. - * - * @private - * @param {Object} object The object to inspect. - * @param {Array} props The property names to filter. - * @returns {Array} Returns the function names. - */ - function baseFunctions(object, props) { - return arrayFilter(props, function(key) { - return isFunction(object[key]); - }); - } - - /** - * The base implementation of `_.get` without support for default values. - * - * @private - * @param {Object} object The object to query. - * @param {Array|string} path The path of the property to get. - * @returns {*} Returns the resolved value. - */ - function baseGet(object, path) { - path = castPath(path, object); - - var index = 0, - length = path.length; - - while (object != null && index < length) { - object = object[toKey(path[index++])]; - } - return (index && index == length) ? object : undefined; - } - - /** - * The base implementation of `getAllKeys` and `getAllKeysIn` which uses - * `keysFunc` and `symbolsFunc` to get the enumerable property names and - * symbols of `object`. - * - * @private - * @param {Object} object The object to query. - * @param {Function} keysFunc The function to get the keys of `object`. - * @param {Function} symbolsFunc The function to get the symbols of `object`. - * @returns {Array} Returns the array of property names and symbols. - */ - function baseGetAllKeys(object, keysFunc, symbolsFunc) { - var result = keysFunc(object); - return isArray(object) ? result : arrayPush(result, symbolsFunc(object)); - } - - /** - * The base implementation of `getTag` without fallbacks for buggy environments. - * - * @private - * @param {*} value The value to query. - * @returns {string} Returns the `toStringTag`. - */ - function baseGetTag(value) { - if (value == null) { - return value === undefined ? undefinedTag : nullTag; - } - return (symToStringTag && symToStringTag in Object(value)) - ? getRawTag(value) - : objectToString(value); - } - - /** - * The base implementation of `_.gt` which doesn't coerce arguments. - * - * @private - * @param {*} value The value to compare. - * @param {*} other The other value to compare. - * @returns {boolean} Returns `true` if `value` is greater than `other`, - * else `false`. - */ - function baseGt(value, other) { - return value > other; - } - - /** - * The base implementation of `_.has` without support for deep paths. - * - * @private - * @param {Object} [object] The object to query. - * @param {Array|string} key The key to check. - * @returns {boolean} Returns `true` if `key` exists, else `false`. - */ - function baseHas(object, key) { - return object != null && hasOwnProperty.call(object, key); - } - - /** - * The base implementation of `_.hasIn` without support for deep paths. - * - * @private - * @param {Object} [object] The object to query. - * @param {Array|string} key The key to check. - * @returns {boolean} Returns `true` if `key` exists, else `false`. - */ - function baseHasIn(object, key) { - return object != null && key in Object(object); - } - - /** - * The base implementation of `_.inRange` which doesn't coerce arguments. - * - * @private - * @param {number} number The number to check. - * @param {number} start The start of the range. - * @param {number} end The end of the range. - * @returns {boolean} Returns `true` if `number` is in the range, else `false`. - */ - function baseInRange(number, start, end) { - return number >= nativeMin(start, end) && number < nativeMax(start, end); - } - - /** - * The base implementation of methods like `_.intersection`, without support - * for iteratee shorthands, that accepts an array of arrays to inspect. - * - * @private - * @param {Array} arrays The arrays to inspect. - * @param {Function} [iteratee] The iteratee invoked per element. - * @param {Function} [comparator] The comparator invoked per element. - * @returns {Array} Returns the new array of shared values. - */ - function baseIntersection(arrays, iteratee, comparator) { - var includes = comparator ? arrayIncludesWith : arrayIncludes, - length = arrays[0].length, - othLength = arrays.length, - othIndex = othLength, - caches = Array(othLength), - maxLength = Infinity, - result = []; - - while (othIndex--) { - var array = arrays[othIndex]; - if (othIndex && iteratee) { - array = arrayMap(array, baseUnary(iteratee)); - } - maxLength = nativeMin(array.length, maxLength); - caches[othIndex] = !comparator && (iteratee || (length >= 120 && array.length >= 120)) - ? new SetCache(othIndex && array) - : undefined; - } - array = arrays[0]; - - var index = -1, - seen = caches[0]; - - outer: - while (++index < length && result.length < maxLength) { - var value = array[index], - computed = iteratee ? iteratee(value) : value; - - value = (comparator || value !== 0) ? value : 0; - if (!(seen - ? cacheHas(seen, computed) - : includes(result, computed, comparator) - )) { - othIndex = othLength; - while (--othIndex) { - var cache = caches[othIndex]; - if (!(cache - ? cacheHas(cache, computed) - : includes(arrays[othIndex], computed, comparator)) - ) { - continue outer; - } - } - if (seen) { - seen.push(computed); - } - result.push(value); - } - } - return result; - } - - /** - * The base implementation of `_.invert` and `_.invertBy` which inverts - * `object` with values transformed by `iteratee` and set by `setter`. - * - * @private - * @param {Object} object The object to iterate over. - * @param {Function} setter The function to set `accumulator` values. - * @param {Function} iteratee The iteratee to transform values. - * @param {Object} accumulator The initial inverted object. - * @returns {Function} Returns `accumulator`. - */ - function baseInverter(object, setter, iteratee, accumulator) { - baseForOwn(object, function(value, key, object) { - setter(accumulator, iteratee(value), key, object); - }); - return accumulator; - } - - /** - * The base implementation of `_.invoke` without support for individual - * method arguments. - * - * @private - * @param {Object} object The object to query. - * @param {Array|string} path The path of the method to invoke. - * @param {Array} args The arguments to invoke the method with. - * @returns {*} Returns the result of the invoked method. - */ - function baseInvoke(object, path, args) { - path = castPath(path, object); - object = parent(object, path); - var func = object == null ? object : object[toKey(last(path))]; - return func == null ? undefined : apply(func, object, args); - } - - /** - * The base implementation of `_.isArguments`. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an `arguments` object, - */ - function baseIsArguments(value) { - return isObjectLike(value) && baseGetTag(value) == argsTag; - } - - /** - * The base implementation of `_.isArrayBuffer` without Node.js optimizations. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`. - */ - function baseIsArrayBuffer(value) { - return isObjectLike(value) && baseGetTag(value) == arrayBufferTag; - } - - /** - * The base implementation of `_.isDate` without Node.js optimizations. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a date object, else `false`. - */ - function baseIsDate(value) { - return isObjectLike(value) && baseGetTag(value) == dateTag; - } - - /** - * The base implementation of `_.isEqual` which supports partial comparisons - * and tracks traversed objects. - * - * @private - * @param {*} value The value to compare. - * @param {*} other The other value to compare. - * @param {boolean} bitmask The bitmask flags. - * 1 - Unordered comparison - * 2 - Partial comparison - * @param {Function} [customizer] The function to customize comparisons. - * @param {Object} [stack] Tracks traversed `value` and `other` objects. - * @returns {boolean} Returns `true` if the values are equivalent, else `false`. - */ - function baseIsEqual(value, other, bitmask, customizer, stack) { - if (value === other) { - return true; - } - if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) { - return value !== value && other !== other; - } - return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack); - } - - /** - * A specialized version of `baseIsEqual` for arrays and objects which performs - * deep comparisons and tracks traversed objects enabling objects with circular - * references to be compared. - * - * @private - * @param {Object} object The object to compare. - * @param {Object} other The other object to compare. - * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. - * @param {Function} customizer The function to customize comparisons. - * @param {Function} equalFunc The function to determine equivalents of values. - * @param {Object} [stack] Tracks traversed `object` and `other` objects. - * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. - */ - function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) { - var objIsArr = isArray(object), - othIsArr = isArray(other), - objTag = objIsArr ? arrayTag : getTag(object), - othTag = othIsArr ? arrayTag : getTag(other); - - objTag = objTag == argsTag ? objectTag : objTag; - othTag = othTag == argsTag ? objectTag : othTag; - - var objIsObj = objTag == objectTag, - othIsObj = othTag == objectTag, - isSameTag = objTag == othTag; - - if (isSameTag && isBuffer(object)) { - if (!isBuffer(other)) { - return false; - } - objIsArr = true; - objIsObj = false; - } - if (isSameTag && !objIsObj) { - stack || (stack = new Stack); - return (objIsArr || isTypedArray(object)) - ? equalArrays(object, other, bitmask, customizer, equalFunc, stack) - : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack); - } - if (!(bitmask & COMPARE_PARTIAL_FLAG)) { - var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'), - othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__'); - - if (objIsWrapped || othIsWrapped) { - var objUnwrapped = objIsWrapped ? object.value() : object, - othUnwrapped = othIsWrapped ? other.value() : other; - - stack || (stack = new Stack); - return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack); - } - } - if (!isSameTag) { - return false; - } - stack || (stack = new Stack); - return equalObjects(object, other, bitmask, customizer, equalFunc, stack); - } - - /** - * The base implementation of `_.isMap` without Node.js optimizations. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a map, else `false`. - */ - function baseIsMap(value) { - return isObjectLike(value) && getTag(value) == mapTag; - } - - /** - * The base implementation of `_.isMatch` without support for iteratee shorthands. - * - * @private - * @param {Object} object The object to inspect. - * @param {Object} source The object of property values to match. - * @param {Array} matchData The property names, values, and compare flags to match. - * @param {Function} [customizer] The function to customize comparisons. - * @returns {boolean} Returns `true` if `object` is a match, else `false`. - */ - function baseIsMatch(object, source, matchData, customizer) { - var index = matchData.length, - length = index, - noCustomizer = !customizer; - - if (object == null) { - return !length; - } - object = Object(object); - while (index--) { - var data = matchData[index]; - if ((noCustomizer && data[2]) - ? data[1] !== object[data[0]] - : !(data[0] in object) - ) { - return false; - } - } - while (++index < length) { - data = matchData[index]; - var key = data[0], - objValue = object[key], - srcValue = data[1]; - - if (noCustomizer && data[2]) { - if (objValue === undefined && !(key in object)) { - return false; - } - } else { - var stack = new Stack; - if (customizer) { - var result = customizer(objValue, srcValue, key, object, source, stack); - } - if (!(result === undefined - ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack) - : result - )) { - return false; - } - } - } - return true; - } - - /** - * The base implementation of `_.isNative` without bad shim checks. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a native function, - * else `false`. - */ - function baseIsNative(value) { - if (!isObject(value) || isMasked(value)) { - return false; - } - var pattern = isFunction(value) ? reIsNative : reIsHostCtor; - return pattern.test(toSource(value)); - } - - /** - * The base implementation of `_.isRegExp` without Node.js optimizations. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a regexp, else `false`. - */ - function baseIsRegExp(value) { - return isObjectLike(value) && baseGetTag(value) == regexpTag; - } - - /** - * The base implementation of `_.isSet` without Node.js optimizations. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a set, else `false`. - */ - function baseIsSet(value) { - return isObjectLike(value) && getTag(value) == setTag; - } - - /** - * The base implementation of `_.isTypedArray` without Node.js optimizations. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a typed array, else `false`. - */ - function baseIsTypedArray(value) { - return isObjectLike(value) && - isLength(value.length) && !!typedArrayTags[baseGetTag(value)]; - } - - /** - * The base implementation of `_.iteratee`. - * - * @private - * @param {*} [value=_.identity] The value to convert to an iteratee. - * @returns {Function} Returns the iteratee. - */ - function baseIteratee(value) { - // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9. - // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details. - if (typeof value == 'function') { - return value; - } - if (value == null) { - return identity; - } - if (typeof value == 'object') { - return isArray(value) - ? baseMatchesProperty(value[0], value[1]) - : baseMatches(value); - } - return property(value); - } - - /** - * The base implementation of `_.keys` which doesn't treat sparse arrays as dense. - * - * @private - * @param {Object} object The object to query. - * @returns {Array} Returns the array of property names. - */ - function baseKeys(object) { - if (!isPrototype(object)) { - return nativeKeys(object); - } - var result = []; - for (var key in Object(object)) { - if (hasOwnProperty.call(object, key) && key != 'constructor') { - result.push(key); - } - } - return result; - } - - /** - * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense. - * - * @private - * @param {Object} object The object to query. - * @returns {Array} Returns the array of property names. - */ - function baseKeysIn(object) { - if (!isObject(object)) { - return nativeKeysIn(object); - } - var isProto = isPrototype(object), - result = []; - - for (var key in object) { - if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) { - result.push(key); - } - } - return result; - } - - /** - * The base implementation of `_.lt` which doesn't coerce arguments. - * - * @private - * @param {*} value The value to compare. - * @param {*} other The other value to compare. - * @returns {boolean} Returns `true` if `value` is less than `other`, - * else `false`. - */ - function baseLt(value, other) { - return value < other; - } - - /** - * The base implementation of `_.map` without support for iteratee shorthands. - * - * @private - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @returns {Array} Returns the new mapped array. - */ - function baseMap(collection, iteratee) { - var index = -1, - result = isArrayLike(collection) ? Array(collection.length) : []; - - baseEach(collection, function(value, key, collection) { - result[++index] = iteratee(value, key, collection); - }); - return result; - } - - /** - * The base implementation of `_.matches` which doesn't clone `source`. - * - * @private - * @param {Object} source The object of property values to match. - * @returns {Function} Returns the new spec function. - */ - function baseMatches(source) { - var matchData = getMatchData(source); - if (matchData.length == 1 && matchData[0][2]) { - return matchesStrictComparable(matchData[0][0], matchData[0][1]); - } - return function(object) { - return object === source || baseIsMatch(object, source, matchData); - }; - } - - /** - * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`. - * - * @private - * @param {string} path The path of the property to get. - * @param {*} srcValue The value to match. - * @returns {Function} Returns the new spec function. - */ - function baseMatchesProperty(path, srcValue) { - if (isKey(path) && isStrictComparable(srcValue)) { - return matchesStrictComparable(toKey(path), srcValue); - } - return function(object) { - var objValue = get(object, path); - return (objValue === undefined && objValue === srcValue) - ? hasIn(object, path) - : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG); - }; - } - - /** - * The base implementation of `_.merge` without support for multiple sources. - * - * @private - * @param {Object} object The destination object. - * @param {Object} source The source object. - * @param {number} srcIndex The index of `source`. - * @param {Function} [customizer] The function to customize merged values. - * @param {Object} [stack] Tracks traversed source values and their merged - * counterparts. - */ - function baseMerge(object, source, srcIndex, customizer, stack) { - if (object === source) { - return; - } - baseFor(source, function(srcValue, key) { - if (isObject(srcValue)) { - stack || (stack = new Stack); - baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack); - } - else { - var newValue = customizer - ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack) - : undefined; - - if (newValue === undefined) { - newValue = srcValue; - } - assignMergeValue(object, key, newValue); - } - }, keysIn); - } - - /** - * A specialized version of `baseMerge` for arrays and objects which performs - * deep merges and tracks traversed objects enabling objects with circular - * references to be merged. - * - * @private - * @param {Object} object The destination object. - * @param {Object} source The source object. - * @param {string} key The key of the value to merge. - * @param {number} srcIndex The index of `source`. - * @param {Function} mergeFunc The function to merge values. - * @param {Function} [customizer] The function to customize assigned values. - * @param {Object} [stack] Tracks traversed source values and their merged - * counterparts. - */ - function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) { - var objValue = safeGet(object, key), - srcValue = safeGet(source, key), - stacked = stack.get(srcValue); - - if (stacked) { - assignMergeValue(object, key, stacked); - return; - } - var newValue = customizer - ? customizer(objValue, srcValue, (key + ''), object, source, stack) - : undefined; - - var isCommon = newValue === undefined; - - if (isCommon) { - var isArr = isArray(srcValue), - isBuff = !isArr && isBuffer(srcValue), - isTyped = !isArr && !isBuff && isTypedArray(srcValue); - - newValue = srcValue; - if (isArr || isBuff || isTyped) { - if (isArray(objValue)) { - newValue = objValue; - } - else if (isArrayLikeObject(objValue)) { - newValue = copyArray(objValue); - } - else if (isBuff) { - isCommon = false; - newValue = cloneBuffer(srcValue, true); - } - else if (isTyped) { - isCommon = false; - newValue = cloneTypedArray(srcValue, true); - } - else { - newValue = []; - } - } - else if (isPlainObject(srcValue) || isArguments(srcValue)) { - newValue = objValue; - if (isArguments(objValue)) { - newValue = toPlainObject(objValue); - } - else if (!isObject(objValue) || (srcIndex && isFunction(objValue))) { - newValue = initCloneObject(srcValue); - } - } - else { - isCommon = false; - } - } - if (isCommon) { - // Recursively merge objects and arrays (susceptible to call stack limits). - stack.set(srcValue, newValue); - mergeFunc(newValue, srcValue, srcIndex, customizer, stack); - stack['delete'](srcValue); - } - assignMergeValue(object, key, newValue); - } - - /** - * The base implementation of `_.nth` which doesn't coerce arguments. - * - * @private - * @param {Array} array The array to query. - * @param {number} n The index of the element to return. - * @returns {*} Returns the nth element of `array`. - */ - function baseNth(array, n) { - var length = array.length; - if (!length) { - return; - } - n += n < 0 ? length : 0; - return isIndex(n, length) ? array[n] : undefined; - } - - /** - * The base implementation of `_.orderBy` without param guards. - * - * @private - * @param {Array|Object} collection The collection to iterate over. - * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by. - * @param {string[]} orders The sort orders of `iteratees`. - * @returns {Array} Returns the new sorted array. - */ - function baseOrderBy(collection, iteratees, orders) { - var index = -1; - iteratees = arrayMap(iteratees.length ? iteratees : [identity], baseUnary(getIteratee())); - - var result = baseMap(collection, function(value, key, collection) { - var criteria = arrayMap(iteratees, function(iteratee) { - return iteratee(value); - }); - return { 'criteria': criteria, 'index': ++index, 'value': value }; - }); - - return baseSortBy(result, function(object, other) { - return compareMultiple(object, other, orders); - }); - } - - /** - * The base implementation of `_.pick` without support for individual - * property identifiers. - * - * @private - * @param {Object} object The source object. - * @param {string[]} paths The property paths to pick. - * @returns {Object} Returns the new object. - */ - function basePick(object, paths) { - return basePickBy(object, paths, function(value, path) { - return hasIn(object, path); - }); - } - - /** - * The base implementation of `_.pickBy` without support for iteratee shorthands. - * - * @private - * @param {Object} object The source object. - * @param {string[]} paths The property paths to pick. - * @param {Function} predicate The function invoked per property. - * @returns {Object} Returns the new object. - */ - function basePickBy(object, paths, predicate) { - var index = -1, - length = paths.length, - result = {}; - - while (++index < length) { - var path = paths[index], - value = baseGet(object, path); - - if (predicate(value, path)) { - baseSet(result, castPath(path, object), value); - } - } - return result; - } - - /** - * A specialized version of `baseProperty` which supports deep paths. - * - * @private - * @param {Array|string} path The path of the property to get. - * @returns {Function} Returns the new accessor function. - */ - function basePropertyDeep(path) { - return function(object) { - return baseGet(object, path); - }; - } - - /** - * The base implementation of `_.pullAllBy` without support for iteratee - * shorthands. - * - * @private - * @param {Array} array The array to modify. - * @param {Array} values The values to remove. - * @param {Function} [iteratee] The iteratee invoked per element. - * @param {Function} [comparator] The comparator invoked per element. - * @returns {Array} Returns `array`. - */ - function basePullAll(array, values, iteratee, comparator) { - var indexOf = comparator ? baseIndexOfWith : baseIndexOf, - index = -1, - length = values.length, - seen = array; - - if (array === values) { - values = copyArray(values); - } - if (iteratee) { - seen = arrayMap(array, baseUnary(iteratee)); - } - while (++index < length) { - var fromIndex = 0, - value = values[index], - computed = iteratee ? iteratee(value) : value; - - while ((fromIndex = indexOf(seen, computed, fromIndex, comparator)) > -1) { - if (seen !== array) { - splice.call(seen, fromIndex, 1); - } - splice.call(array, fromIndex, 1); - } - } - return array; - } - - /** - * The base implementation of `_.pullAt` without support for individual - * indexes or capturing the removed elements. - * - * @private - * @param {Array} array The array to modify. - * @param {number[]} indexes The indexes of elements to remove. - * @returns {Array} Returns `array`. - */ - function basePullAt(array, indexes) { - var length = array ? indexes.length : 0, - lastIndex = length - 1; - - while (length--) { - var index = indexes[length]; - if (length == lastIndex || index !== previous) { - var previous = index; - if (isIndex(index)) { - splice.call(array, index, 1); - } else { - baseUnset(array, index); - } - } - } - return array; - } - - /** - * The base implementation of `_.random` without support for returning - * floating-point numbers. - * - * @private - * @param {number} lower The lower bound. - * @param {number} upper The upper bound. - * @returns {number} Returns the random number. - */ - function baseRandom(lower, upper) { - return lower + nativeFloor(nativeRandom() * (upper - lower + 1)); - } - - /** - * The base implementation of `_.range` and `_.rangeRight` which doesn't - * coerce arguments. - * - * @private - * @param {number} start The start of the range. - * @param {number} end The end of the range. - * @param {number} step The value to increment or decrement by. - * @param {boolean} [fromRight] Specify iterating from right to left. - * @returns {Array} Returns the range of numbers. - */ - function baseRange(start, end, step, fromRight) { - var index = -1, - length = nativeMax(nativeCeil((end - start) / (step || 1)), 0), - result = Array(length); - - while (length--) { - result[fromRight ? length : ++index] = start; - start += step; - } - return result; - } - - /** - * The base implementation of `_.repeat` which doesn't coerce arguments. - * - * @private - * @param {string} string The string to repeat. - * @param {number} n The number of times to repeat the string. - * @returns {string} Returns the repeated string. - */ - function baseRepeat(string, n) { - var result = ''; - if (!string || n < 1 || n > MAX_SAFE_INTEGER) { - return result; - } - // Leverage the exponentiation by squaring algorithm for a faster repeat. - // See https://en.wikipedia.org/wiki/Exponentiation_by_squaring for more details. - do { - if (n % 2) { - result += string; - } - n = nativeFloor(n / 2); - if (n) { - string += string; - } - } while (n); - - return result; - } - - /** - * The base implementation of `_.rest` which doesn't validate or coerce arguments. - * - * @private - * @param {Function} func The function to apply a rest parameter to. - * @param {number} [start=func.length-1] The start position of the rest parameter. - * @returns {Function} Returns the new function. - */ - function baseRest(func, start) { - return setToString(overRest(func, start, identity), func + ''); - } - - /** - * The base implementation of `_.sample`. - * - * @private - * @param {Array|Object} collection The collection to sample. - * @returns {*} Returns the random element. - */ - function baseSample(collection) { - return arraySample(values(collection)); - } - - /** - * The base implementation of `_.sampleSize` without param guards. - * - * @private - * @param {Array|Object} collection The collection to sample. - * @param {number} n The number of elements to sample. - * @returns {Array} Returns the random elements. - */ - function baseSampleSize(collection, n) { - var array = values(collection); - return shuffleSelf(array, baseClamp(n, 0, array.length)); - } - - /** - * The base implementation of `_.set`. - * - * @private - * @param {Object} object The object to modify. - * @param {Array|string} path The path of the property to set. - * @param {*} value The value to set. - * @param {Function} [customizer] The function to customize path creation. - * @returns {Object} Returns `object`. - */ - function baseSet(object, path, value, customizer) { - if (!isObject(object)) { - return object; - } - path = castPath(path, object); - - var index = -1, - length = path.length, - lastIndex = length - 1, - nested = object; - - while (nested != null && ++index < length) { - var key = toKey(path[index]), - newValue = value; - - if (index != lastIndex) { - var objValue = nested[key]; - newValue = customizer ? customizer(objValue, key, nested) : undefined; - if (newValue === undefined) { - newValue = isObject(objValue) - ? objValue - : (isIndex(path[index + 1]) ? [] : {}); - } - } - assignValue(nested, key, newValue); - nested = nested[key]; - } - return object; - } - - /** - * The base implementation of `setData` without support for hot loop shorting. - * - * @private - * @param {Function} func The function to associate metadata with. - * @param {*} data The metadata. - * @returns {Function} Returns `func`. - */ - var baseSetData = !metaMap ? identity : function(func, data) { - metaMap.set(func, data); - return func; - }; - - /** - * The base implementation of `setToString` without support for hot loop shorting. - * - * @private - * @param {Function} func The function to modify. - * @param {Function} string The `toString` result. - * @returns {Function} Returns `func`. - */ - var baseSetToString = !defineProperty ? identity : function(func, string) { - return defineProperty(func, 'toString', { - 'configurable': true, - 'enumerable': false, - 'value': constant(string), - 'writable': true - }); - }; - - /** - * The base implementation of `_.shuffle`. - * - * @private - * @param {Array|Object} collection The collection to shuffle. - * @returns {Array} Returns the new shuffled array. - */ - function baseShuffle(collection) { - return shuffleSelf(values(collection)); - } - - /** - * The base implementation of `_.slice` without an iteratee call guard. - * - * @private - * @param {Array} array The array to slice. - * @param {number} [start=0] The start position. - * @param {number} [end=array.length] The end position. - * @returns {Array} Returns the slice of `array`. - */ - function baseSlice(array, start, end) { - var index = -1, - length = array.length; - - if (start < 0) { - start = -start > length ? 0 : (length + start); - } - end = end > length ? length : end; - if (end < 0) { - end += length; - } - length = start > end ? 0 : ((end - start) >>> 0); - start >>>= 0; - - var result = Array(length); - while (++index < length) { - result[index] = array[index + start]; - } - return result; - } - - /** - * The base implementation of `_.some` without support for iteratee shorthands. - * - * @private - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} predicate The function invoked per iteration. - * @returns {boolean} Returns `true` if any element passes the predicate check, - * else `false`. - */ - function baseSome(collection, predicate) { - var result; - - baseEach(collection, function(value, index, collection) { - result = predicate(value, index, collection); - return !result; - }); - return !!result; - } - - /** - * The base implementation of `_.sortedIndex` and `_.sortedLastIndex` which - * performs a binary search of `array` to determine the index at which `value` - * should be inserted into `array` in order to maintain its sort order. - * - * @private - * @param {Array} array The sorted array to inspect. - * @param {*} value The value to evaluate. - * @param {boolean} [retHighest] Specify returning the highest qualified index. - * @returns {number} Returns the index at which `value` should be inserted - * into `array`. - */ - function baseSortedIndex(array, value, retHighest) { - var low = 0, - high = array == null ? low : array.length; - - if (typeof value == 'number' && value === value && high <= HALF_MAX_ARRAY_LENGTH) { - while (low < high) { - var mid = (low + high) >>> 1, - computed = array[mid]; - - if (computed !== null && !isSymbol(computed) && - (retHighest ? (computed <= value) : (computed < value))) { - low = mid + 1; - } else { - high = mid; - } - } - return high; - } - return baseSortedIndexBy(array, value, identity, retHighest); - } - - /** - * The base implementation of `_.sortedIndexBy` and `_.sortedLastIndexBy` - * which invokes `iteratee` for `value` and each element of `array` to compute - * their sort ranking. The iteratee is invoked with one argument; (value). - * - * @private - * @param {Array} array The sorted array to inspect. - * @param {*} value The value to evaluate. - * @param {Function} iteratee The iteratee invoked per element. - * @param {boolean} [retHighest] Specify returning the highest qualified index. - * @returns {number} Returns the index at which `value` should be inserted - * into `array`. - */ - function baseSortedIndexBy(array, value, iteratee, retHighest) { - value = iteratee(value); - - var low = 0, - high = array == null ? 0 : array.length, - valIsNaN = value !== value, - valIsNull = value === null, - valIsSymbol = isSymbol(value), - valIsUndefined = value === undefined; - - while (low < high) { - var mid = nativeFloor((low + high) / 2), - computed = iteratee(array[mid]), - othIsDefined = computed !== undefined, - othIsNull = computed === null, - othIsReflexive = computed === computed, - othIsSymbol = isSymbol(computed); - - if (valIsNaN) { - var setLow = retHighest || othIsReflexive; - } else if (valIsUndefined) { - setLow = othIsReflexive && (retHighest || othIsDefined); - } else if (valIsNull) { - setLow = othIsReflexive && othIsDefined && (retHighest || !othIsNull); - } else if (valIsSymbol) { - setLow = othIsReflexive && othIsDefined && !othIsNull && (retHighest || !othIsSymbol); - } else if (othIsNull || othIsSymbol) { - setLow = false; - } else { - setLow = retHighest ? (computed <= value) : (computed < value); - } - if (setLow) { - low = mid + 1; - } else { - high = mid; - } - } - return nativeMin(high, MAX_ARRAY_INDEX); - } - - /** - * The base implementation of `_.sortedUniq` and `_.sortedUniqBy` without - * support for iteratee shorthands. - * - * @private - * @param {Array} array The array to inspect. - * @param {Function} [iteratee] The iteratee invoked per element. - * @returns {Array} Returns the new duplicate free array. - */ - function baseSortedUniq(array, iteratee) { - var index = -1, - length = array.length, - resIndex = 0, - result = []; - - while (++index < length) { - var value = array[index], - computed = iteratee ? iteratee(value) : value; - - if (!index || !eq(computed, seen)) { - var seen = computed; - result[resIndex++] = value === 0 ? 0 : value; - } - } - return result; - } - - /** - * The base implementation of `_.toNumber` which doesn't ensure correct - * conversions of binary, hexadecimal, or octal string values. - * - * @private - * @param {*} value The value to process. - * @returns {number} Returns the number. - */ - function baseToNumber(value) { - if (typeof value == 'number') { - return value; - } - if (isSymbol(value)) { - return NAN; - } - return +value; - } - - /** - * The base implementation of `_.toString` which doesn't convert nullish - * values to empty strings. - * - * @private - * @param {*} value The value to process. - * @returns {string} Returns the string. - */ - function baseToString(value) { - // Exit early for strings to avoid a performance hit in some environments. - if (typeof value == 'string') { - return value; - } - if (isArray(value)) { - // Recursively convert values (susceptible to call stack limits). - return arrayMap(value, baseToString) + ''; - } - if (isSymbol(value)) { - return symbolToString ? symbolToString.call(value) : ''; - } - var result = (value + ''); - return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result; - } - - /** - * The base implementation of `_.uniqBy` without support for iteratee shorthands. - * - * @private - * @param {Array} array The array to inspect. - * @param {Function} [iteratee] The iteratee invoked per element. - * @param {Function} [comparator] The comparator invoked per element. - * @returns {Array} Returns the new duplicate free array. - */ - function baseUniq(array, iteratee, comparator) { - var index = -1, - includes = arrayIncludes, - length = array.length, - isCommon = true, - result = [], - seen = result; - - if (comparator) { - isCommon = false; - includes = arrayIncludesWith; - } - else if (length >= LARGE_ARRAY_SIZE) { - var set = iteratee ? null : createSet(array); - if (set) { - return setToArray(set); - } - isCommon = false; - includes = cacheHas; - seen = new SetCache; - } - else { - seen = iteratee ? [] : result; - } - outer: - while (++index < length) { - var value = array[index], - computed = iteratee ? iteratee(value) : value; - - value = (comparator || value !== 0) ? value : 0; - if (isCommon && computed === computed) { - var seenIndex = seen.length; - while (seenIndex--) { - if (seen[seenIndex] === computed) { - continue outer; - } - } - if (iteratee) { - seen.push(computed); - } - result.push(value); - } - else if (!includes(seen, computed, comparator)) { - if (seen !== result) { - seen.push(computed); - } - result.push(value); - } - } - return result; - } - - /** - * The base implementation of `_.unset`. - * - * @private - * @param {Object} object The object to modify. - * @param {Array|string} path The property path to unset. - * @returns {boolean} Returns `true` if the property is deleted, else `false`. - */ - function baseUnset(object, path) { - path = castPath(path, object); - object = parent(object, path); - return object == null || delete object[toKey(last(path))]; - } - - /** - * The base implementation of `_.update`. - * - * @private - * @param {Object} object The object to modify. - * @param {Array|string} path The path of the property to update. - * @param {Function} updater The function to produce the updated value. - * @param {Function} [customizer] The function to customize path creation. - * @returns {Object} Returns `object`. - */ - function baseUpdate(object, path, updater, customizer) { - return baseSet(object, path, updater(baseGet(object, path)), customizer); - } - - /** - * The base implementation of methods like `_.dropWhile` and `_.takeWhile` - * without support for iteratee shorthands. - * - * @private - * @param {Array} array The array to query. - * @param {Function} predicate The function invoked per iteration. - * @param {boolean} [isDrop] Specify dropping elements instead of taking them. - * @param {boolean} [fromRight] Specify iterating from right to left. - * @returns {Array} Returns the slice of `array`. - */ - function baseWhile(array, predicate, isDrop, fromRight) { - var length = array.length, - index = fromRight ? length : -1; - - while ((fromRight ? index-- : ++index < length) && - predicate(array[index], index, array)) {} - - return isDrop - ? baseSlice(array, (fromRight ? 0 : index), (fromRight ? index + 1 : length)) - : baseSlice(array, (fromRight ? index + 1 : 0), (fromRight ? length : index)); - } - - /** - * The base implementation of `wrapperValue` which returns the result of - * performing a sequence of actions on the unwrapped `value`, where each - * successive action is supplied the return value of the previous. - * - * @private - * @param {*} value The unwrapped value. - * @param {Array} actions Actions to perform to resolve the unwrapped value. - * @returns {*} Returns the resolved value. - */ - function baseWrapperValue(value, actions) { - var result = value; - if (result instanceof LazyWrapper) { - result = result.value(); - } - return arrayReduce(actions, function(result, action) { - return action.func.apply(action.thisArg, arrayPush([result], action.args)); - }, result); - } - - /** - * The base implementation of methods like `_.xor`, without support for - * iteratee shorthands, that accepts an array of arrays to inspect. - * - * @private - * @param {Array} arrays The arrays to inspect. - * @param {Function} [iteratee] The iteratee invoked per element. - * @param {Function} [comparator] The comparator invoked per element. - * @returns {Array} Returns the new array of values. - */ - function baseXor(arrays, iteratee, comparator) { - var length = arrays.length; - if (length < 2) { - return length ? baseUniq(arrays[0]) : []; - } - var index = -1, - result = Array(length); - - while (++index < length) { - var array = arrays[index], - othIndex = -1; - - while (++othIndex < length) { - if (othIndex != index) { - result[index] = baseDifference(result[index] || array, arrays[othIndex], iteratee, comparator); - } - } - } - return baseUniq(baseFlatten(result, 1), iteratee, comparator); - } - - /** - * This base implementation of `_.zipObject` which assigns values using `assignFunc`. - * - * @private - * @param {Array} props The property identifiers. - * @param {Array} values The property values. - * @param {Function} assignFunc The function to assign values. - * @returns {Object} Returns the new object. - */ - function baseZipObject(props, values, assignFunc) { - var index = -1, - length = props.length, - valsLength = values.length, - result = {}; - - while (++index < length) { - var value = index < valsLength ? values[index] : undefined; - assignFunc(result, props[index], value); - } - return result; - } - - /** - * Casts `value` to an empty array if it's not an array like object. - * - * @private - * @param {*} value The value to inspect. - * @returns {Array|Object} Returns the cast array-like object. - */ - function castArrayLikeObject(value) { - return isArrayLikeObject(value) ? value : []; - } - - /** - * Casts `value` to `identity` if it's not a function. - * - * @private - * @param {*} value The value to inspect. - * @returns {Function} Returns cast function. - */ - function castFunction(value) { - return typeof value == 'function' ? value : identity; - } - - /** - * Casts `value` to a path array if it's not one. - * - * @private - * @param {*} value The value to inspect. - * @param {Object} [object] The object to query keys on. - * @returns {Array} Returns the cast property path array. - */ - function castPath(value, object) { - if (isArray(value)) { - return value; - } - return isKey(value, object) ? [value] : stringToPath(toString(value)); - } - - /** - * A `baseRest` alias which can be replaced with `identity` by module - * replacement plugins. - * - * @private - * @type {Function} - * @param {Function} func The function to apply a rest parameter to. - * @returns {Function} Returns the new function. - */ - var castRest = baseRest; - - /** - * Casts `array` to a slice if it's needed. - * - * @private - * @param {Array} array The array to inspect. - * @param {number} start The start position. - * @param {number} [end=array.length] The end position. - * @returns {Array} Returns the cast slice. - */ - function castSlice(array, start, end) { - var length = array.length; - end = end === undefined ? length : end; - return (!start && end >= length) ? array : baseSlice(array, start, end); - } - - /** - * A simple wrapper around the global [`clearTimeout`](https://mdn.io/clearTimeout). - * - * @private - * @param {number|Object} id The timer id or timeout object of the timer to clear. - */ - var clearTimeout = ctxClearTimeout || function(id) { - return root.clearTimeout(id); - }; - - /** - * Creates a clone of `buffer`. - * - * @private - * @param {Buffer} buffer The buffer to clone. - * @param {boolean} [isDeep] Specify a deep clone. - * @returns {Buffer} Returns the cloned buffer. - */ - function cloneBuffer(buffer, isDeep) { - if (isDeep) { - return buffer.slice(); - } - var length = buffer.length, - result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length); - - buffer.copy(result); - return result; - } - - /** - * Creates a clone of `arrayBuffer`. - * - * @private - * @param {ArrayBuffer} arrayBuffer The array buffer to clone. - * @returns {ArrayBuffer} Returns the cloned array buffer. - */ - function cloneArrayBuffer(arrayBuffer) { - var result = new arrayBuffer.constructor(arrayBuffer.byteLength); - new Uint8Array(result).set(new Uint8Array(arrayBuffer)); - return result; - } - - /** - * Creates a clone of `dataView`. - * - * @private - * @param {Object} dataView The data view to clone. - * @param {boolean} [isDeep] Specify a deep clone. - * @returns {Object} Returns the cloned data view. - */ - function cloneDataView(dataView, isDeep) { - var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer; - return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength); - } - - /** - * Creates a clone of `regexp`. - * - * @private - * @param {Object} regexp The regexp to clone. - * @returns {Object} Returns the cloned regexp. - */ - function cloneRegExp(regexp) { - var result = new regexp.constructor(regexp.source, reFlags.exec(regexp)); - result.lastIndex = regexp.lastIndex; - return result; - } - - /** - * Creates a clone of the `symbol` object. - * - * @private - * @param {Object} symbol The symbol object to clone. - * @returns {Object} Returns the cloned symbol object. - */ - function cloneSymbol(symbol) { - return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {}; - } - - /** - * Creates a clone of `typedArray`. - * - * @private - * @param {Object} typedArray The typed array to clone. - * @param {boolean} [isDeep] Specify a deep clone. - * @returns {Object} Returns the cloned typed array. - */ - function cloneTypedArray(typedArray, isDeep) { - var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer; - return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length); - } - - /** - * Compares values to sort them in ascending order. - * - * @private - * @param {*} value The value to compare. - * @param {*} other The other value to compare. - * @returns {number} Returns the sort order indicator for `value`. - */ - function compareAscending(value, other) { - if (value !== other) { - var valIsDefined = value !== undefined, - valIsNull = value === null, - valIsReflexive = value === value, - valIsSymbol = isSymbol(value); - - var othIsDefined = other !== undefined, - othIsNull = other === null, - othIsReflexive = other === other, - othIsSymbol = isSymbol(other); - - if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) || - (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) || - (valIsNull && othIsDefined && othIsReflexive) || - (!valIsDefined && othIsReflexive) || - !valIsReflexive) { - return 1; - } - if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) || - (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) || - (othIsNull && valIsDefined && valIsReflexive) || - (!othIsDefined && valIsReflexive) || - !othIsReflexive) { - return -1; - } - } - return 0; - } - - /** - * Used by `_.orderBy` to compare multiple properties of a value to another - * and stable sort them. - * - * If `orders` is unspecified, all values are sorted in ascending order. Otherwise, - * specify an order of "desc" for descending or "asc" for ascending sort order - * of corresponding values. - * - * @private - * @param {Object} object The object to compare. - * @param {Object} other The other object to compare. - * @param {boolean[]|string[]} orders The order to sort by for each property. - * @returns {number} Returns the sort order indicator for `object`. - */ - function compareMultiple(object, other, orders) { - var index = -1, - objCriteria = object.criteria, - othCriteria = other.criteria, - length = objCriteria.length, - ordersLength = orders.length; - - while (++index < length) { - var result = compareAscending(objCriteria[index], othCriteria[index]); - if (result) { - if (index >= ordersLength) { - return result; - } - var order = orders[index]; - return result * (order == 'desc' ? -1 : 1); - } - } - // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications - // that causes it, under certain circumstances, to provide the same value for - // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247 - // for more details. - // - // This also ensures a stable sort in V8 and other engines. - // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details. - return object.index - other.index; - } - - /** - * Creates an array that is the composition of partially applied arguments, - * placeholders, and provided arguments into a single array of arguments. - * - * @private - * @param {Array} args The provided arguments. - * @param {Array} partials The arguments to prepend to those provided. - * @param {Array} holders The `partials` placeholder indexes. - * @params {boolean} [isCurried] Specify composing for a curried function. - * @returns {Array} Returns the new array of composed arguments. - */ - function composeArgs(args, partials, holders, isCurried) { - var argsIndex = -1, - argsLength = args.length, - holdersLength = holders.length, - leftIndex = -1, - leftLength = partials.length, - rangeLength = nativeMax(argsLength - holdersLength, 0), - result = Array(leftLength + rangeLength), - isUncurried = !isCurried; - - while (++leftIndex < leftLength) { - result[leftIndex] = partials[leftIndex]; - } - while (++argsIndex < holdersLength) { - if (isUncurried || argsIndex < argsLength) { - result[holders[argsIndex]] = args[argsIndex]; - } - } - while (rangeLength--) { - result[leftIndex++] = args[argsIndex++]; - } - return result; - } - - /** - * This function is like `composeArgs` except that the arguments composition - * is tailored for `_.partialRight`. - * - * @private - * @param {Array} args The provided arguments. - * @param {Array} partials The arguments to append to those provided. - * @param {Array} holders The `partials` placeholder indexes. - * @params {boolean} [isCurried] Specify composing for a curried function. - * @returns {Array} Returns the new array of composed arguments. - */ - function composeArgsRight(args, partials, holders, isCurried) { - var argsIndex = -1, - argsLength = args.length, - holdersIndex = -1, - holdersLength = holders.length, - rightIndex = -1, - rightLength = partials.length, - rangeLength = nativeMax(argsLength - holdersLength, 0), - result = Array(rangeLength + rightLength), - isUncurried = !isCurried; - - while (++argsIndex < rangeLength) { - result[argsIndex] = args[argsIndex]; - } - var offset = argsIndex; - while (++rightIndex < rightLength) { - result[offset + rightIndex] = partials[rightIndex]; - } - while (++holdersIndex < holdersLength) { - if (isUncurried || argsIndex < argsLength) { - result[offset + holders[holdersIndex]] = args[argsIndex++]; - } - } - return result; - } - - /** - * Copies the values of `source` to `array`. - * - * @private - * @param {Array} source The array to copy values from. - * @param {Array} [array=[]] The array to copy values to. - * @returns {Array} Returns `array`. - */ - function copyArray(source, array) { - var index = -1, - length = source.length; - - array || (array = Array(length)); - while (++index < length) { - array[index] = source[index]; - } - return array; - } - - /** - * Copies properties of `source` to `object`. - * - * @private - * @param {Object} source The object to copy properties from. - * @param {Array} props The property identifiers to copy. - * @param {Object} [object={}] The object to copy properties to. - * @param {Function} [customizer] The function to customize copied values. - * @returns {Object} Returns `object`. - */ - function copyObject(source, props, object, customizer) { - var isNew = !object; - object || (object = {}); - - var index = -1, - length = props.length; - - while (++index < length) { - var key = props[index]; - - var newValue = customizer - ? customizer(object[key], source[key], key, object, source) - : undefined; - - if (newValue === undefined) { - newValue = source[key]; - } - if (isNew) { - baseAssignValue(object, key, newValue); - } else { - assignValue(object, key, newValue); - } - } - return object; - } - - /** - * Copies own symbols of `source` to `object`. - * - * @private - * @param {Object} source The object to copy symbols from. - * @param {Object} [object={}] The object to copy symbols to. - * @returns {Object} Returns `object`. - */ - function copySymbols(source, object) { - return copyObject(source, getSymbols(source), object); - } - - /** - * Copies own and inherited symbols of `source` to `object`. - * - * @private - * @param {Object} source The object to copy symbols from. - * @param {Object} [object={}] The object to copy symbols to. - * @returns {Object} Returns `object`. - */ - function copySymbolsIn(source, object) { - return copyObject(source, getSymbolsIn(source), object); - } - - /** - * Creates a function like `_.groupBy`. - * - * @private - * @param {Function} setter The function to set accumulator values. - * @param {Function} [initializer] The accumulator object initializer. - * @returns {Function} Returns the new aggregator function. - */ - function createAggregator(setter, initializer) { - return function(collection, iteratee) { - var func = isArray(collection) ? arrayAggregator : baseAggregator, - accumulator = initializer ? initializer() : {}; - - return func(collection, setter, getIteratee(iteratee, 2), accumulator); - }; - } - - /** - * Creates a function like `_.assign`. - * - * @private - * @param {Function} assigner The function to assign values. - * @returns {Function} Returns the new assigner function. - */ - function createAssigner(assigner) { - return baseRest(function(object, sources) { - var index = -1, - length = sources.length, - customizer = length > 1 ? sources[length - 1] : undefined, - guard = length > 2 ? sources[2] : undefined; - - customizer = (assigner.length > 3 && typeof customizer == 'function') - ? (length--, customizer) - : undefined; - - if (guard && isIterateeCall(sources[0], sources[1], guard)) { - customizer = length < 3 ? undefined : customizer; - length = 1; - } - object = Object(object); - while (++index < length) { - var source = sources[index]; - if (source) { - assigner(object, source, index, customizer); - } - } - return object; - }); - } - - /** - * Creates a `baseEach` or `baseEachRight` function. - * - * @private - * @param {Function} eachFunc The function to iterate over a collection. - * @param {boolean} [fromRight] Specify iterating from right to left. - * @returns {Function} Returns the new base function. - */ - function createBaseEach(eachFunc, fromRight) { - return function(collection, iteratee) { - if (collection == null) { - return collection; - } - if (!isArrayLike(collection)) { - return eachFunc(collection, iteratee); - } - var length = collection.length, - index = fromRight ? length : -1, - iterable = Object(collection); - - while ((fromRight ? index-- : ++index < length)) { - if (iteratee(iterable[index], index, iterable) === false) { - break; - } - } - return collection; - }; - } - - /** - * Creates a base function for methods like `_.forIn` and `_.forOwn`. - * - * @private - * @param {boolean} [fromRight] Specify iterating from right to left. - * @returns {Function} Returns the new base function. - */ - function createBaseFor(fromRight) { - return function(object, iteratee, keysFunc) { - var index = -1, - iterable = Object(object), - props = keysFunc(object), - length = props.length; - - while (length--) { - var key = props[fromRight ? length : ++index]; - if (iteratee(iterable[key], key, iterable) === false) { - break; - } - } - return object; - }; - } - - /** - * Creates a function that wraps `func` to invoke it with the optional `this` - * binding of `thisArg`. - * - * @private - * @param {Function} func The function to wrap. - * @param {number} bitmask The bitmask flags. See `createWrap` for more details. - * @param {*} [thisArg] The `this` binding of `func`. - * @returns {Function} Returns the new wrapped function. - */ - function createBind(func, bitmask, thisArg) { - var isBind = bitmask & WRAP_BIND_FLAG, - Ctor = createCtor(func); - - function wrapper() { - var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func; - return fn.apply(isBind ? thisArg : this, arguments); - } - return wrapper; - } - - /** - * Creates a function like `_.lowerFirst`. - * - * @private - * @param {string} methodName The name of the `String` case method to use. - * @returns {Function} Returns the new case function. - */ - function createCaseFirst(methodName) { - return function(string) { - string = toString(string); - - var strSymbols = hasUnicode(string) - ? stringToArray(string) - : undefined; - - var chr = strSymbols - ? strSymbols[0] - : string.charAt(0); - - var trailing = strSymbols - ? castSlice(strSymbols, 1).join('') - : string.slice(1); - - return chr[methodName]() + trailing; - }; - } - - /** - * Creates a function like `_.camelCase`. - * - * @private - * @param {Function} callback The function to combine each word. - * @returns {Function} Returns the new compounder function. - */ - function createCompounder(callback) { - return function(string) { - return arrayReduce(words(deburr(string).replace(reApos, '')), callback, ''); - }; - } - - /** - * Creates a function that produces an instance of `Ctor` regardless of - * whether it was invoked as part of a `new` expression or by `call` or `apply`. - * - * @private - * @param {Function} Ctor The constructor to wrap. - * @returns {Function} Returns the new wrapped function. - */ - function createCtor(Ctor) { - return function() { - // Use a `switch` statement to work with class constructors. See - // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist - // for more details. - var args = arguments; - switch (args.length) { - case 0: return new Ctor; - case 1: return new Ctor(args[0]); - case 2: return new Ctor(args[0], args[1]); - case 3: return new Ctor(args[0], args[1], args[2]); - case 4: return new Ctor(args[0], args[1], args[2], args[3]); - case 5: return new Ctor(args[0], args[1], args[2], args[3], args[4]); - case 6: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]); - case 7: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]); - } - var thisBinding = baseCreate(Ctor.prototype), - result = Ctor.apply(thisBinding, args); - - // Mimic the constructor's `return` behavior. - // See https://es5.github.io/#x13.2.2 for more details. - return isObject(result) ? result : thisBinding; - }; - } - - /** - * Creates a function that wraps `func` to enable currying. - * - * @private - * @param {Function} func The function to wrap. - * @param {number} bitmask The bitmask flags. See `createWrap` for more details. - * @param {number} arity The arity of `func`. - * @returns {Function} Returns the new wrapped function. - */ - function createCurry(func, bitmask, arity) { - var Ctor = createCtor(func); - - function wrapper() { - var length = arguments.length, - args = Array(length), - index = length, - placeholder = getHolder(wrapper); - - while (index--) { - args[index] = arguments[index]; - } - var holders = (length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder) - ? [] - : replaceHolders(args, placeholder); - - length -= holders.length; - if (length < arity) { - return createRecurry( - func, bitmask, createHybrid, wrapper.placeholder, undefined, - args, holders, undefined, undefined, arity - length); - } - var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func; - return apply(fn, this, args); - } - return wrapper; - } - - /** - * Creates a `_.find` or `_.findLast` function. - * - * @private - * @param {Function} findIndexFunc The function to find the collection index. - * @returns {Function} Returns the new find function. - */ - function createFind(findIndexFunc) { - return function(collection, predicate, fromIndex) { - var iterable = Object(collection); - if (!isArrayLike(collection)) { - var iteratee = getIteratee(predicate, 3); - collection = keys(collection); - predicate = function(key) { return iteratee(iterable[key], key, iterable); }; - } - var index = findIndexFunc(collection, predicate, fromIndex); - return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined; - }; - } - - /** - * Creates a `_.flow` or `_.flowRight` function. - * - * @private - * @param {boolean} [fromRight] Specify iterating from right to left. - * @returns {Function} Returns the new flow function. - */ - function createFlow(fromRight) { - return flatRest(function(funcs) { - var length = funcs.length, - index = length, - prereq = LodashWrapper.prototype.thru; - - if (fromRight) { - funcs.reverse(); - } - while (index--) { - var func = funcs[index]; - if (typeof func != 'function') { - throw new TypeError(FUNC_ERROR_TEXT); - } - if (prereq && !wrapper && getFuncName(func) == 'wrapper') { - var wrapper = new LodashWrapper([], true); - } - } - index = wrapper ? index : length; - while (++index < length) { - func = funcs[index]; - - var funcName = getFuncName(func), - data = funcName == 'wrapper' ? getData(func) : undefined; - - if (data && isLaziable(data[0]) && - data[1] == (WRAP_ARY_FLAG | WRAP_CURRY_FLAG | WRAP_PARTIAL_FLAG | WRAP_REARG_FLAG) && - !data[4].length && data[9] == 1 - ) { - wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]); - } else { - wrapper = (func.length == 1 && isLaziable(func)) - ? wrapper[funcName]() - : wrapper.thru(func); - } - } - return function() { - var args = arguments, - value = args[0]; - - if (wrapper && args.length == 1 && isArray(value)) { - return wrapper.plant(value).value(); - } - var index = 0, - result = length ? funcs[index].apply(this, args) : value; - - while (++index < length) { - result = funcs[index].call(this, result); - } - return result; - }; - }); - } - - /** - * Creates a function that wraps `func` to invoke it with optional `this` - * binding of `thisArg`, partial application, and currying. - * - * @private - * @param {Function|string} func The function or method name to wrap. - * @param {number} bitmask The bitmask flags. See `createWrap` for more details. - * @param {*} [thisArg] The `this` binding of `func`. - * @param {Array} [partials] The arguments to prepend to those provided to - * the new function. - * @param {Array} [holders] The `partials` placeholder indexes. - * @param {Array} [partialsRight] The arguments to append to those provided - * to the new function. - * @param {Array} [holdersRight] The `partialsRight` placeholder indexes. - * @param {Array} [argPos] The argument positions of the new function. - * @param {number} [ary] The arity cap of `func`. - * @param {number} [arity] The arity of `func`. - * @returns {Function} Returns the new wrapped function. - */ - function createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) { - var isAry = bitmask & WRAP_ARY_FLAG, - isBind = bitmask & WRAP_BIND_FLAG, - isBindKey = bitmask & WRAP_BIND_KEY_FLAG, - isCurried = bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG), - isFlip = bitmask & WRAP_FLIP_FLAG, - Ctor = isBindKey ? undefined : createCtor(func); - - function wrapper() { - var length = arguments.length, - args = Array(length), - index = length; - - while (index--) { - args[index] = arguments[index]; - } - if (isCurried) { - var placeholder = getHolder(wrapper), - holdersCount = countHolders(args, placeholder); - } - if (partials) { - args = composeArgs(args, partials, holders, isCurried); - } - if (partialsRight) { - args = composeArgsRight(args, partialsRight, holdersRight, isCurried); - } - length -= holdersCount; - if (isCurried && length < arity) { - var newHolders = replaceHolders(args, placeholder); - return createRecurry( - func, bitmask, createHybrid, wrapper.placeholder, thisArg, - args, newHolders, argPos, ary, arity - length - ); - } - var thisBinding = isBind ? thisArg : this, - fn = isBindKey ? thisBinding[func] : func; - - length = args.length; - if (argPos) { - args = reorder(args, argPos); - } else if (isFlip && length > 1) { - args.reverse(); - } - if (isAry && ary < length) { - args.length = ary; - } - if (this && this !== root && this instanceof wrapper) { - fn = Ctor || createCtor(fn); - } - return fn.apply(thisBinding, args); - } - return wrapper; - } - - /** - * Creates a function like `_.invertBy`. - * - * @private - * @param {Function} setter The function to set accumulator values. - * @param {Function} toIteratee The function to resolve iteratees. - * @returns {Function} Returns the new inverter function. - */ - function createInverter(setter, toIteratee) { - return function(object, iteratee) { - return baseInverter(object, setter, toIteratee(iteratee), {}); - }; - } - - /** - * Creates a function that performs a mathematical operation on two values. - * - * @private - * @param {Function} operator The function to perform the operation. - * @param {number} [defaultValue] The value used for `undefined` arguments. - * @returns {Function} Returns the new mathematical operation function. - */ - function createMathOperation(operator, defaultValue) { - return function(value, other) { - var result; - if (value === undefined && other === undefined) { - return defaultValue; - } - if (value !== undefined) { - result = value; - } - if (other !== undefined) { - if (result === undefined) { - return other; - } - if (typeof value == 'string' || typeof other == 'string') { - value = baseToString(value); - other = baseToString(other); - } else { - value = baseToNumber(value); - other = baseToNumber(other); - } - result = operator(value, other); - } - return result; - }; - } - - /** - * Creates a function like `_.over`. - * - * @private - * @param {Function} arrayFunc The function to iterate over iteratees. - * @returns {Function} Returns the new over function. - */ - function createOver(arrayFunc) { - return flatRest(function(iteratees) { - iteratees = arrayMap(iteratees, baseUnary(getIteratee())); - return baseRest(function(args) { - var thisArg = this; - return arrayFunc(iteratees, function(iteratee) { - return apply(iteratee, thisArg, args); - }); - }); - }); - } - - /** - * Creates the padding for `string` based on `length`. The `chars` string - * is truncated if the number of characters exceeds `length`. - * - * @private - * @param {number} length The padding length. - * @param {string} [chars=' '] The string used as padding. - * @returns {string} Returns the padding for `string`. - */ - function createPadding(length, chars) { - chars = chars === undefined ? ' ' : baseToString(chars); - - var charsLength = chars.length; - if (charsLength < 2) { - return charsLength ? baseRepeat(chars, length) : chars; - } - var result = baseRepeat(chars, nativeCeil(length / stringSize(chars))); - return hasUnicode(chars) - ? castSlice(stringToArray(result), 0, length).join('') - : result.slice(0, length); - } - - /** - * Creates a function that wraps `func` to invoke it with the `this` binding - * of `thisArg` and `partials` prepended to the arguments it receives. - * - * @private - * @param {Function} func The function to wrap. - * @param {number} bitmask The bitmask flags. See `createWrap` for more details. - * @param {*} thisArg The `this` binding of `func`. - * @param {Array} partials The arguments to prepend to those provided to - * the new function. - * @returns {Function} Returns the new wrapped function. - */ - function createPartial(func, bitmask, thisArg, partials) { - var isBind = bitmask & WRAP_BIND_FLAG, - Ctor = createCtor(func); - - function wrapper() { - var argsIndex = -1, - argsLength = arguments.length, - leftIndex = -1, - leftLength = partials.length, - args = Array(leftLength + argsLength), - fn = (this && this !== root && this instanceof wrapper) ? Ctor : func; - - while (++leftIndex < leftLength) { - args[leftIndex] = partials[leftIndex]; - } - while (argsLength--) { - args[leftIndex++] = arguments[++argsIndex]; - } - return apply(fn, isBind ? thisArg : this, args); - } - return wrapper; - } - - /** - * Creates a `_.range` or `_.rangeRight` function. - * - * @private - * @param {boolean} [fromRight] Specify iterating from right to left. - * @returns {Function} Returns the new range function. - */ - function createRange(fromRight) { - return function(start, end, step) { - if (step && typeof step != 'number' && isIterateeCall(start, end, step)) { - end = step = undefined; - } - // Ensure the sign of `-0` is preserved. - start = toFinite(start); - if (end === undefined) { - end = start; - start = 0; - } else { - end = toFinite(end); - } - step = step === undefined ? (start < end ? 1 : -1) : toFinite(step); - return baseRange(start, end, step, fromRight); - }; - } - - /** - * Creates a function that performs a relational operation on two values. - * - * @private - * @param {Function} operator The function to perform the operation. - * @returns {Function} Returns the new relational operation function. - */ - function createRelationalOperation(operator) { - return function(value, other) { - if (!(typeof value == 'string' && typeof other == 'string')) { - value = toNumber(value); - other = toNumber(other); - } - return operator(value, other); - }; - } - - /** - * Creates a function that wraps `func` to continue currying. - * - * @private - * @param {Function} func The function to wrap. - * @param {number} bitmask The bitmask flags. See `createWrap` for more details. - * @param {Function} wrapFunc The function to create the `func` wrapper. - * @param {*} placeholder The placeholder value. - * @param {*} [thisArg] The `this` binding of `func`. - * @param {Array} [partials] The arguments to prepend to those provided to - * the new function. - * @param {Array} [holders] The `partials` placeholder indexes. - * @param {Array} [argPos] The argument positions of the new function. - * @param {number} [ary] The arity cap of `func`. - * @param {number} [arity] The arity of `func`. - * @returns {Function} Returns the new wrapped function. - */ - function createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary, arity) { - var isCurry = bitmask & WRAP_CURRY_FLAG, - newHolders = isCurry ? holders : undefined, - newHoldersRight = isCurry ? undefined : holders, - newPartials = isCurry ? partials : undefined, - newPartialsRight = isCurry ? undefined : partials; - - bitmask |= (isCurry ? WRAP_PARTIAL_FLAG : WRAP_PARTIAL_RIGHT_FLAG); - bitmask &= ~(isCurry ? WRAP_PARTIAL_RIGHT_FLAG : WRAP_PARTIAL_FLAG); - - if (!(bitmask & WRAP_CURRY_BOUND_FLAG)) { - bitmask &= ~(WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG); - } - var newData = [ - func, bitmask, thisArg, newPartials, newHolders, newPartialsRight, - newHoldersRight, argPos, ary, arity - ]; - - var result = wrapFunc.apply(undefined, newData); - if (isLaziable(func)) { - setData(result, newData); - } - result.placeholder = placeholder; - return setWrapToString(result, func, bitmask); - } - - /** - * Creates a function like `_.round`. - * - * @private - * @param {string} methodName The name of the `Math` method to use when rounding. - * @returns {Function} Returns the new round function. - */ - function createRound(methodName) { - var func = Math[methodName]; - return function(number, precision) { - number = toNumber(number); - precision = precision == null ? 0 : nativeMin(toInteger(precision), 292); - if (precision) { - // Shift with exponential notation to avoid floating-point issues. - // See [MDN](https://mdn.io/round#Examples) for more details. - var pair = (toString(number) + 'e').split('e'), - value = func(pair[0] + 'e' + (+pair[1] + precision)); - - pair = (toString(value) + 'e').split('e'); - return +(pair[0] + 'e' + (+pair[1] - precision)); - } - return func(number); - }; - } - - /** - * Creates a set object of `values`. - * - * @private - * @param {Array} values The values to add to the set. - * @returns {Object} Returns the new set. - */ - var createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) { - return new Set(values); - }; - - /** - * Creates a `_.toPairs` or `_.toPairsIn` function. - * - * @private - * @param {Function} keysFunc The function to get the keys of a given object. - * @returns {Function} Returns the new pairs function. - */ - function createToPairs(keysFunc) { - return function(object) { - var tag = getTag(object); - if (tag == mapTag) { - return mapToArray(object); - } - if (tag == setTag) { - return setToPairs(object); - } - return baseToPairs(object, keysFunc(object)); - }; - } - - /** - * Creates a function that either curries or invokes `func` with optional - * `this` binding and partially applied arguments. - * - * @private - * @param {Function|string} func The function or method name to wrap. - * @param {number} bitmask The bitmask flags. - * 1 - `_.bind` - * 2 - `_.bindKey` - * 4 - `_.curry` or `_.curryRight` of a bound function - * 8 - `_.curry` - * 16 - `_.curryRight` - * 32 - `_.partial` - * 64 - `_.partialRight` - * 128 - `_.rearg` - * 256 - `_.ary` - * 512 - `_.flip` - * @param {*} [thisArg] The `this` binding of `func`. - * @param {Array} [partials] The arguments to be partially applied. - * @param {Array} [holders] The `partials` placeholder indexes. - * @param {Array} [argPos] The argument positions of the new function. - * @param {number} [ary] The arity cap of `func`. - * @param {number} [arity] The arity of `func`. - * @returns {Function} Returns the new wrapped function. - */ - function createWrap(func, bitmask, thisArg, partials, holders, argPos, ary, arity) { - var isBindKey = bitmask & WRAP_BIND_KEY_FLAG; - if (!isBindKey && typeof func != 'function') { - throw new TypeError(FUNC_ERROR_TEXT); - } - var length = partials ? partials.length : 0; - if (!length) { - bitmask &= ~(WRAP_PARTIAL_FLAG | WRAP_PARTIAL_RIGHT_FLAG); - partials = holders = undefined; - } - ary = ary === undefined ? ary : nativeMax(toInteger(ary), 0); - arity = arity === undefined ? arity : toInteger(arity); - length -= holders ? holders.length : 0; - - if (bitmask & WRAP_PARTIAL_RIGHT_FLAG) { - var partialsRight = partials, - holdersRight = holders; - - partials = holders = undefined; - } - var data = isBindKey ? undefined : getData(func); - - var newData = [ - func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, - argPos, ary, arity - ]; - - if (data) { - mergeData(newData, data); - } - func = newData[0]; - bitmask = newData[1]; - thisArg = newData[2]; - partials = newData[3]; - holders = newData[4]; - arity = newData[9] = newData[9] === undefined - ? (isBindKey ? 0 : func.length) - : nativeMax(newData[9] - length, 0); - - if (!arity && bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG)) { - bitmask &= ~(WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG); - } - if (!bitmask || bitmask == WRAP_BIND_FLAG) { - var result = createBind(func, bitmask, thisArg); - } else if (bitmask == WRAP_CURRY_FLAG || bitmask == WRAP_CURRY_RIGHT_FLAG) { - result = createCurry(func, bitmask, arity); - } else if ((bitmask == WRAP_PARTIAL_FLAG || bitmask == (WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG)) && !holders.length) { - result = createPartial(func, bitmask, thisArg, partials); - } else { - result = createHybrid.apply(undefined, newData); - } - var setter = data ? baseSetData : setData; - return setWrapToString(setter(result, newData), func, bitmask); - } - - /** - * Used by `_.defaults` to customize its `_.assignIn` use to assign properties - * of source objects to the destination object for all destination properties - * that resolve to `undefined`. - * - * @private - * @param {*} objValue The destination value. - * @param {*} srcValue The source value. - * @param {string} key The key of the property to assign. - * @param {Object} object The parent object of `objValue`. - * @returns {*} Returns the value to assign. - */ - function customDefaultsAssignIn(objValue, srcValue, key, object) { - if (objValue === undefined || - (eq(objValue, objectProto[key]) && !hasOwnProperty.call(object, key))) { - return srcValue; - } - return objValue; - } - - /** - * Used by `_.defaultsDeep` to customize its `_.merge` use to merge source - * objects into destination objects that are passed thru. - * - * @private - * @param {*} objValue The destination value. - * @param {*} srcValue The source value. - * @param {string} key The key of the property to merge. - * @param {Object} object The parent object of `objValue`. - * @param {Object} source The parent object of `srcValue`. - * @param {Object} [stack] Tracks traversed source values and their merged - * counterparts. - * @returns {*} Returns the value to assign. - */ - function customDefaultsMerge(objValue, srcValue, key, object, source, stack) { - if (isObject(objValue) && isObject(srcValue)) { - // Recursively merge objects and arrays (susceptible to call stack limits). - stack.set(srcValue, objValue); - baseMerge(objValue, srcValue, undefined, customDefaultsMerge, stack); - stack['delete'](srcValue); - } - return objValue; - } - - /** - * Used by `_.omit` to customize its `_.cloneDeep` use to only clone plain - * objects. - * - * @private - * @param {*} value The value to inspect. - * @param {string} key The key of the property to inspect. - * @returns {*} Returns the uncloned value or `undefined` to defer cloning to `_.cloneDeep`. - */ - function customOmitClone(value) { - return isPlainObject(value) ? undefined : value; - } - - /** - * A specialized version of `baseIsEqualDeep` for arrays with support for - * partial deep comparisons. - * - * @private - * @param {Array} array The array to compare. - * @param {Array} other The other array to compare. - * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. - * @param {Function} customizer The function to customize comparisons. - * @param {Function} equalFunc The function to determine equivalents of values. - * @param {Object} stack Tracks traversed `array` and `other` objects. - * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`. - */ - function equalArrays(array, other, bitmask, customizer, equalFunc, stack) { - var isPartial = bitmask & COMPARE_PARTIAL_FLAG, - arrLength = array.length, - othLength = other.length; - - if (arrLength != othLength && !(isPartial && othLength > arrLength)) { - return false; - } - // Assume cyclic values are equal. - var stacked = stack.get(array); - if (stacked && stack.get(other)) { - return stacked == other; - } - var index = -1, - result = true, - seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined; - - stack.set(array, other); - stack.set(other, array); - - // Ignore non-index properties. - while (++index < arrLength) { - var arrValue = array[index], - othValue = other[index]; - - if (customizer) { - var compared = isPartial - ? customizer(othValue, arrValue, index, other, array, stack) - : customizer(arrValue, othValue, index, array, other, stack); - } - if (compared !== undefined) { - if (compared) { - continue; - } - result = false; - break; - } - // Recursively compare arrays (susceptible to call stack limits). - if (seen) { - if (!arraySome(other, function(othValue, othIndex) { - if (!cacheHas(seen, othIndex) && - (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) { - return seen.push(othIndex); - } - })) { - result = false; - break; - } - } else if (!( - arrValue === othValue || - equalFunc(arrValue, othValue, bitmask, customizer, stack) - )) { - result = false; - break; - } - } - stack['delete'](array); - stack['delete'](other); - return result; - } - - /** - * A specialized version of `baseIsEqualDeep` for comparing objects of - * the same `toStringTag`. - * - * **Note:** This function only supports comparing values with tags of - * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`. - * - * @private - * @param {Object} object The object to compare. - * @param {Object} other The other object to compare. - * @param {string} tag The `toStringTag` of the objects to compare. - * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. - * @param {Function} customizer The function to customize comparisons. - * @param {Function} equalFunc The function to determine equivalents of values. - * @param {Object} stack Tracks traversed `object` and `other` objects. - * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. - */ - function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) { - switch (tag) { - case dataViewTag: - if ((object.byteLength != other.byteLength) || - (object.byteOffset != other.byteOffset)) { - return false; - } - object = object.buffer; - other = other.buffer; - - case arrayBufferTag: - if ((object.byteLength != other.byteLength) || - !equalFunc(new Uint8Array(object), new Uint8Array(other))) { - return false; - } - return true; - - case boolTag: - case dateTag: - case numberTag: - // Coerce booleans to `1` or `0` and dates to milliseconds. - // Invalid dates are coerced to `NaN`. - return eq(+object, +other); - - case errorTag: - return object.name == other.name && object.message == other.message; - - case regexpTag: - case stringTag: - // Coerce regexes to strings and treat strings, primitives and objects, - // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring - // for more details. - return object == (other + ''); - - case mapTag: - var convert = mapToArray; - - case setTag: - var isPartial = bitmask & COMPARE_PARTIAL_FLAG; - convert || (convert = setToArray); - - if (object.size != other.size && !isPartial) { - return false; - } - // Assume cyclic values are equal. - var stacked = stack.get(object); - if (stacked) { - return stacked == other; - } - bitmask |= COMPARE_UNORDERED_FLAG; - - // Recursively compare objects (susceptible to call stack limits). - stack.set(object, other); - var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack); - stack['delete'](object); - return result; - - case symbolTag: - if (symbolValueOf) { - return symbolValueOf.call(object) == symbolValueOf.call(other); - } - } - return false; - } - - /** - * A specialized version of `baseIsEqualDeep` for objects with support for - * partial deep comparisons. - * - * @private - * @param {Object} object The object to compare. - * @param {Object} other The other object to compare. - * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. - * @param {Function} customizer The function to customize comparisons. - * @param {Function} equalFunc The function to determine equivalents of values. - * @param {Object} stack Tracks traversed `object` and `other` objects. - * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. - */ - function equalObjects(object, other, bitmask, customizer, equalFunc, stack) { - var isPartial = bitmask & COMPARE_PARTIAL_FLAG, - objProps = getAllKeys(object), - objLength = objProps.length, - othProps = getAllKeys(other), - othLength = othProps.length; - - if (objLength != othLength && !isPartial) { - return false; - } - var index = objLength; - while (index--) { - var key = objProps[index]; - if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) { - return false; - } - } - // Assume cyclic values are equal. - var stacked = stack.get(object); - if (stacked && stack.get(other)) { - return stacked == other; - } - var result = true; - stack.set(object, other); - stack.set(other, object); - - var skipCtor = isPartial; - while (++index < objLength) { - key = objProps[index]; - var objValue = object[key], - othValue = other[key]; - - if (customizer) { - var compared = isPartial - ? customizer(othValue, objValue, key, other, object, stack) - : customizer(objValue, othValue, key, object, other, stack); - } - // Recursively compare objects (susceptible to call stack limits). - if (!(compared === undefined - ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack)) - : compared - )) { - result = false; - break; - } - skipCtor || (skipCtor = key == 'constructor'); - } - if (result && !skipCtor) { - var objCtor = object.constructor, - othCtor = other.constructor; - - // Non `Object` object instances with different constructors are not equal. - if (objCtor != othCtor && - ('constructor' in object && 'constructor' in other) && - !(typeof objCtor == 'function' && objCtor instanceof objCtor && - typeof othCtor == 'function' && othCtor instanceof othCtor)) { - result = false; - } - } - stack['delete'](object); - stack['delete'](other); - return result; - } - - /** - * A specialized version of `baseRest` which flattens the rest array. - * - * @private - * @param {Function} func The function to apply a rest parameter to. - * @returns {Function} Returns the new function. - */ - function flatRest(func) { - return setToString(overRest(func, undefined, flatten), func + ''); - } - - /** - * Creates an array of own enumerable property names and symbols of `object`. - * - * @private - * @param {Object} object The object to query. - * @returns {Array} Returns the array of property names and symbols. - */ - function getAllKeys(object) { - return baseGetAllKeys(object, keys, getSymbols); - } - - /** - * Creates an array of own and inherited enumerable property names and - * symbols of `object`. - * - * @private - * @param {Object} object The object to query. - * @returns {Array} Returns the array of property names and symbols. - */ - function getAllKeysIn(object) { - return baseGetAllKeys(object, keysIn, getSymbolsIn); - } - - /** - * Gets metadata for `func`. - * - * @private - * @param {Function} func The function to query. - * @returns {*} Returns the metadata for `func`. - */ - var getData = !metaMap ? noop : function(func) { - return metaMap.get(func); - }; - - /** - * Gets the name of `func`. - * - * @private - * @param {Function} func The function to query. - * @returns {string} Returns the function name. - */ - function getFuncName(func) { - var result = (func.name + ''), - array = realNames[result], - length = hasOwnProperty.call(realNames, result) ? array.length : 0; - - while (length--) { - var data = array[length], - otherFunc = data.func; - if (otherFunc == null || otherFunc == func) { - return data.name; - } - } - return result; - } - - /** - * Gets the argument placeholder value for `func`. - * - * @private - * @param {Function} func The function to inspect. - * @returns {*} Returns the placeholder value. - */ - function getHolder(func) { - var object = hasOwnProperty.call(lodash, 'placeholder') ? lodash : func; - return object.placeholder; - } - - /** - * Gets the appropriate "iteratee" function. If `_.iteratee` is customized, - * this function returns the custom method, otherwise it returns `baseIteratee`. - * If arguments are provided, the chosen function is invoked with them and - * its result is returned. - * - * @private - * @param {*} [value] The value to convert to an iteratee. - * @param {number} [arity] The arity of the created iteratee. - * @returns {Function} Returns the chosen function or its result. - */ - function getIteratee() { - var result = lodash.iteratee || iteratee; - result = result === iteratee ? baseIteratee : result; - return arguments.length ? result(arguments[0], arguments[1]) : result; - } - - /** - * Gets the data for `map`. - * - * @private - * @param {Object} map The map to query. - * @param {string} key The reference key. - * @returns {*} Returns the map data. - */ - function getMapData(map, key) { - var data = map.__data__; - return isKeyable(key) - ? data[typeof key == 'string' ? 'string' : 'hash'] - : data.map; - } - - /** - * Gets the property names, values, and compare flags of `object`. - * - * @private - * @param {Object} object The object to query. - * @returns {Array} Returns the match data of `object`. - */ - function getMatchData(object) { - var result = keys(object), - length = result.length; - - while (length--) { - var key = result[length], - value = object[key]; - - result[length] = [key, value, isStrictComparable(value)]; - } - return result; - } - - /** - * Gets the native function at `key` of `object`. - * - * @private - * @param {Object} object The object to query. - * @param {string} key The key of the method to get. - * @returns {*} Returns the function if it's native, else `undefined`. - */ - function getNative(object, key) { - var value = getValue(object, key); - return baseIsNative(value) ? value : undefined; - } - - /** - * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values. - * - * @private - * @param {*} value The value to query. - * @returns {string} Returns the raw `toStringTag`. - */ - function getRawTag(value) { - var isOwn = hasOwnProperty.call(value, symToStringTag), - tag = value[symToStringTag]; - - try { - value[symToStringTag] = undefined; - var unmasked = true; - } catch (e) {} - - var result = nativeObjectToString.call(value); - if (unmasked) { - if (isOwn) { - value[symToStringTag] = tag; - } else { - delete value[symToStringTag]; - } - } - return result; - } - - /** - * Creates an array of the own enumerable symbols of `object`. - * - * @private - * @param {Object} object The object to query. - * @returns {Array} Returns the array of symbols. - */ - var getSymbols = !nativeGetSymbols ? stubArray : function(object) { - if (object == null) { - return []; - } - object = Object(object); - return arrayFilter(nativeGetSymbols(object), function(symbol) { - return propertyIsEnumerable.call(object, symbol); - }); - }; - - /** - * Creates an array of the own and inherited enumerable symbols of `object`. - * - * @private - * @param {Object} object The object to query. - * @returns {Array} Returns the array of symbols. - */ - var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) { - var result = []; - while (object) { - arrayPush(result, getSymbols(object)); - object = getPrototype(object); - } - return result; - }; - - /** - * Gets the `toStringTag` of `value`. - * - * @private - * @param {*} value The value to query. - * @returns {string} Returns the `toStringTag`. - */ - var getTag = baseGetTag; - - // Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6. - if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) || - (Map && getTag(new Map) != mapTag) || - (Promise && getTag(Promise.resolve()) != promiseTag) || - (Set && getTag(new Set) != setTag) || - (WeakMap && getTag(new WeakMap) != weakMapTag)) { - getTag = function(value) { - var result = baseGetTag(value), - Ctor = result == objectTag ? value.constructor : undefined, - ctorString = Ctor ? toSource(Ctor) : ''; - - if (ctorString) { - switch (ctorString) { - case dataViewCtorString: return dataViewTag; - case mapCtorString: return mapTag; - case promiseCtorString: return promiseTag; - case setCtorString: return setTag; - case weakMapCtorString: return weakMapTag; - } - } - return result; - }; - } - - /** - * Gets the view, applying any `transforms` to the `start` and `end` positions. - * - * @private - * @param {number} start The start of the view. - * @param {number} end The end of the view. - * @param {Array} transforms The transformations to apply to the view. - * @returns {Object} Returns an object containing the `start` and `end` - * positions of the view. - */ - function getView(start, end, transforms) { - var index = -1, - length = transforms.length; - - while (++index < length) { - var data = transforms[index], - size = data.size; - - switch (data.type) { - case 'drop': start += size; break; - case 'dropRight': end -= size; break; - case 'take': end = nativeMin(end, start + size); break; - case 'takeRight': start = nativeMax(start, end - size); break; - } - } - return { 'start': start, 'end': end }; - } - - /** - * Extracts wrapper details from the `source` body comment. - * - * @private - * @param {string} source The source to inspect. - * @returns {Array} Returns the wrapper details. - */ - function getWrapDetails(source) { - var match = source.match(reWrapDetails); - return match ? match[1].split(reSplitDetails) : []; - } - - /** - * Checks if `path` exists on `object`. - * - * @private - * @param {Object} object The object to query. - * @param {Array|string} path The path to check. - * @param {Function} hasFunc The function to check properties. - * @returns {boolean} Returns `true` if `path` exists, else `false`. - */ - function hasPath(object, path, hasFunc) { - path = castPath(path, object); - - var index = -1, - length = path.length, - result = false; - - while (++index < length) { - var key = toKey(path[index]); - if (!(result = object != null && hasFunc(object, key))) { - break; - } - object = object[key]; - } - if (result || ++index != length) { - return result; - } - length = object == null ? 0 : object.length; - return !!length && isLength(length) && isIndex(key, length) && - (isArray(object) || isArguments(object)); - } - - /** - * Initializes an array clone. - * - * @private - * @param {Array} array The array to clone. - * @returns {Array} Returns the initialized clone. - */ - function initCloneArray(array) { - var length = array.length, - result = new array.constructor(length); - - // Add properties assigned by `RegExp#exec`. - if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) { - result.index = array.index; - result.input = array.input; - } - return result; - } - - /** - * Initializes an object clone. - * - * @private - * @param {Object} object The object to clone. - * @returns {Object} Returns the initialized clone. - */ - function initCloneObject(object) { - return (typeof object.constructor == 'function' && !isPrototype(object)) - ? baseCreate(getPrototype(object)) - : {}; - } - - /** - * Initializes an object clone based on its `toStringTag`. - * - * **Note:** This function only supports cloning values with tags of - * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`. - * - * @private - * @param {Object} object The object to clone. - * @param {string} tag The `toStringTag` of the object to clone. - * @param {boolean} [isDeep] Specify a deep clone. - * @returns {Object} Returns the initialized clone. - */ - function initCloneByTag(object, tag, isDeep) { - var Ctor = object.constructor; - switch (tag) { - case arrayBufferTag: - return cloneArrayBuffer(object); - - case boolTag: - case dateTag: - return new Ctor(+object); - - case dataViewTag: - return cloneDataView(object, isDeep); - - case float32Tag: case float64Tag: - case int8Tag: case int16Tag: case int32Tag: - case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag: - return cloneTypedArray(object, isDeep); - - case mapTag: - return new Ctor; - - case numberTag: - case stringTag: - return new Ctor(object); - - case regexpTag: - return cloneRegExp(object); - - case setTag: - return new Ctor; - - case symbolTag: - return cloneSymbol(object); - } - } - - /** - * Inserts wrapper `details` in a comment at the top of the `source` body. - * - * @private - * @param {string} source The source to modify. - * @returns {Array} details The details to insert. - * @returns {string} Returns the modified source. - */ - function insertWrapDetails(source, details) { - var length = details.length; - if (!length) { - return source; - } - var lastIndex = length - 1; - details[lastIndex] = (length > 1 ? '& ' : '') + details[lastIndex]; - details = details.join(length > 2 ? ', ' : ' '); - return source.replace(reWrapComment, '{\n/* [wrapped with ' + details + '] */\n'); - } - - /** - * Checks if `value` is a flattenable `arguments` object or array. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is flattenable, else `false`. - */ - function isFlattenable(value) { - return isArray(value) || isArguments(value) || - !!(spreadableSymbol && value && value[spreadableSymbol]); - } - - /** - * Checks if `value` is a valid array-like index. - * - * @private - * @param {*} value The value to check. - * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index. - * @returns {boolean} Returns `true` if `value` is a valid index, else `false`. - */ - function isIndex(value, length) { - var type = typeof value; - length = length == null ? MAX_SAFE_INTEGER : length; - - return !!length && - (type == 'number' || - (type != 'symbol' && reIsUint.test(value))) && - (value > -1 && value % 1 == 0 && value < length); - } - - /** - * Checks if the given arguments are from an iteratee call. - * - * @private - * @param {*} value The potential iteratee value argument. - * @param {*} index The potential iteratee index or key argument. - * @param {*} object The potential iteratee object argument. - * @returns {boolean} Returns `true` if the arguments are from an iteratee call, - * else `false`. - */ - function isIterateeCall(value, index, object) { - if (!isObject(object)) { - return false; - } - var type = typeof index; - if (type == 'number' - ? (isArrayLike(object) && isIndex(index, object.length)) - : (type == 'string' && index in object) - ) { - return eq(object[index], value); - } - return false; - } - - /** - * Checks if `value` is a property name and not a property path. - * - * @private - * @param {*} value The value to check. - * @param {Object} [object] The object to query keys on. - * @returns {boolean} Returns `true` if `value` is a property name, else `false`. - */ - function isKey(value, object) { - if (isArray(value)) { - return false; - } - var type = typeof value; - if (type == 'number' || type == 'symbol' || type == 'boolean' || - value == null || isSymbol(value)) { - return true; - } - return reIsPlainProp.test(value) || !reIsDeepProp.test(value) || - (object != null && value in Object(object)); - } - - /** - * Checks if `value` is suitable for use as unique object key. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is suitable, else `false`. - */ - function isKeyable(value) { - var type = typeof value; - return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean') - ? (value !== '__proto__') - : (value === null); - } - - /** - * Checks if `func` has a lazy counterpart. - * - * @private - * @param {Function} func The function to check. - * @returns {boolean} Returns `true` if `func` has a lazy counterpart, - * else `false`. - */ - function isLaziable(func) { - var funcName = getFuncName(func), - other = lodash[funcName]; - - if (typeof other != 'function' || !(funcName in LazyWrapper.prototype)) { - return false; - } - if (func === other) { - return true; - } - var data = getData(other); - return !!data && func === data[0]; - } - - /** - * Checks if `func` has its source masked. - * - * @private - * @param {Function} func The function to check. - * @returns {boolean} Returns `true` if `func` is masked, else `false`. - */ - function isMasked(func) { - return !!maskSrcKey && (maskSrcKey in func); - } - - /** - * Checks if `func` is capable of being masked. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `func` is maskable, else `false`. - */ - var isMaskable = coreJsData ? isFunction : stubFalse; - - /** - * Checks if `value` is likely a prototype object. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a prototype, else `false`. - */ - function isPrototype(value) { - var Ctor = value && value.constructor, - proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto; - - return value === proto; - } - - /** - * Checks if `value` is suitable for strict equality comparisons, i.e. `===`. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` if suitable for strict - * equality comparisons, else `false`. - */ - function isStrictComparable(value) { - return value === value && !isObject(value); - } - - /** - * A specialized version of `matchesProperty` for source values suitable - * for strict equality comparisons, i.e. `===`. - * - * @private - * @param {string} key The key of the property to get. - * @param {*} srcValue The value to match. - * @returns {Function} Returns the new spec function. - */ - function matchesStrictComparable(key, srcValue) { - return function(object) { - if (object == null) { - return false; - } - return object[key] === srcValue && - (srcValue !== undefined || (key in Object(object))); - }; - } - - /** - * A specialized version of `_.memoize` which clears the memoized function's - * cache when it exceeds `MAX_MEMOIZE_SIZE`. - * - * @private - * @param {Function} func The function to have its output memoized. - * @returns {Function} Returns the new memoized function. - */ - function memoizeCapped(func) { - var result = memoize(func, function(key) { - if (cache.size === MAX_MEMOIZE_SIZE) { - cache.clear(); - } - return key; - }); - - var cache = result.cache; - return result; - } - - /** - * Merges the function metadata of `source` into `data`. - * - * Merging metadata reduces the number of wrappers used to invoke a function. - * This is possible because methods like `_.bind`, `_.curry`, and `_.partial` - * may be applied regardless of execution order. Methods like `_.ary` and - * `_.rearg` modify function arguments, making the order in which they are - * executed important, preventing the merging of metadata. However, we make - * an exception for a safe combined case where curried functions have `_.ary` - * and or `_.rearg` applied. - * - * @private - * @param {Array} data The destination metadata. - * @param {Array} source The source metadata. - * @returns {Array} Returns `data`. - */ - function mergeData(data, source) { - var bitmask = data[1], - srcBitmask = source[1], - newBitmask = bitmask | srcBitmask, - isCommon = newBitmask < (WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG | WRAP_ARY_FLAG); - - var isCombo = - ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_CURRY_FLAG)) || - ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_REARG_FLAG) && (data[7].length <= source[8])) || - ((srcBitmask == (WRAP_ARY_FLAG | WRAP_REARG_FLAG)) && (source[7].length <= source[8]) && (bitmask == WRAP_CURRY_FLAG)); - - // Exit early if metadata can't be merged. - if (!(isCommon || isCombo)) { - return data; - } - // Use source `thisArg` if available. - if (srcBitmask & WRAP_BIND_FLAG) { - data[2] = source[2]; - // Set when currying a bound function. - newBitmask |= bitmask & WRAP_BIND_FLAG ? 0 : WRAP_CURRY_BOUND_FLAG; - } - // Compose partial arguments. - var value = source[3]; - if (value) { - var partials = data[3]; - data[3] = partials ? composeArgs(partials, value, source[4]) : value; - data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : source[4]; - } - // Compose partial right arguments. - value = source[5]; - if (value) { - partials = data[5]; - data[5] = partials ? composeArgsRight(partials, value, source[6]) : value; - data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : source[6]; - } - // Use source `argPos` if available. - value = source[7]; - if (value) { - data[7] = value; - } - // Use source `ary` if it's smaller. - if (srcBitmask & WRAP_ARY_FLAG) { - data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]); - } - // Use source `arity` if one is not provided. - if (data[9] == null) { - data[9] = source[9]; - } - // Use source `func` and merge bitmasks. - data[0] = source[0]; - data[1] = newBitmask; - - return data; - } - - /** - * This function is like - * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys) - * except that it includes inherited enumerable properties. - * - * @private - * @param {Object} object The object to query. - * @returns {Array} Returns the array of property names. - */ - function nativeKeysIn(object) { - var result = []; - if (object != null) { - for (var key in Object(object)) { - result.push(key); - } - } - return result; - } - - /** - * Converts `value` to a string using `Object.prototype.toString`. - * - * @private - * @param {*} value The value to convert. - * @returns {string} Returns the converted string. - */ - function objectToString(value) { - return nativeObjectToString.call(value); - } - - /** - * A specialized version of `baseRest` which transforms the rest array. - * - * @private - * @param {Function} func The function to apply a rest parameter to. - * @param {number} [start=func.length-1] The start position of the rest parameter. - * @param {Function} transform The rest array transform. - * @returns {Function} Returns the new function. - */ - function overRest(func, start, transform) { - start = nativeMax(start === undefined ? (func.length - 1) : start, 0); - return function() { - var args = arguments, - index = -1, - length = nativeMax(args.length - start, 0), - array = Array(length); - - while (++index < length) { - array[index] = args[start + index]; - } - index = -1; - var otherArgs = Array(start + 1); - while (++index < start) { - otherArgs[index] = args[index]; - } - otherArgs[start] = transform(array); - return apply(func, this, otherArgs); - }; - } - - /** - * Gets the parent value at `path` of `object`. - * - * @private - * @param {Object} object The object to query. - * @param {Array} path The path to get the parent value of. - * @returns {*} Returns the parent value. - */ - function parent(object, path) { - return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1)); - } - - /** - * Reorder `array` according to the specified indexes where the element at - * the first index is assigned as the first element, the element at - * the second index is assigned as the second element, and so on. - * - * @private - * @param {Array} array The array to reorder. - * @param {Array} indexes The arranged array indexes. - * @returns {Array} Returns `array`. - */ - function reorder(array, indexes) { - var arrLength = array.length, - length = nativeMin(indexes.length, arrLength), - oldArray = copyArray(array); - - while (length--) { - var index = indexes[length]; - array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined; - } - return array; - } - - /** - * Sets metadata for `func`. - * - * **Note:** If this function becomes hot, i.e. is invoked a lot in a short - * period of time, it will trip its breaker and transition to an identity - * function to avoid garbage collection pauses in V8. See - * [V8 issue 2070](https://bugs.chromium.org/p/v8/issues/detail?id=2070) - * for more details. - * - * @private - * @param {Function} func The function to associate metadata with. - * @param {*} data The metadata. - * @returns {Function} Returns `func`. - */ - var setData = shortOut(baseSetData); - - /** - * A simple wrapper around the global [`setTimeout`](https://mdn.io/setTimeout). - * - * @private - * @param {Function} func The function to delay. - * @param {number} wait The number of milliseconds to delay invocation. - * @returns {number|Object} Returns the timer id or timeout object. - */ - var setTimeout = ctxSetTimeout || function(func, wait) { - return root.setTimeout(func, wait); - }; - - /** - * Sets the `toString` method of `func` to return `string`. - * - * @private - * @param {Function} func The function to modify. - * @param {Function} string The `toString` result. - * @returns {Function} Returns `func`. - */ - var setToString = shortOut(baseSetToString); - - /** - * Sets the `toString` method of `wrapper` to mimic the source of `reference` - * with wrapper details in a comment at the top of the source body. - * - * @private - * @param {Function} wrapper The function to modify. - * @param {Function} reference The reference function. - * @param {number} bitmask The bitmask flags. See `createWrap` for more details. - * @returns {Function} Returns `wrapper`. - */ - function setWrapToString(wrapper, reference, bitmask) { - var source = (reference + ''); - return setToString(wrapper, insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask))); - } - - /** - * Creates a function that'll short out and invoke `identity` instead - * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN` - * milliseconds. - * - * @private - * @param {Function} func The function to restrict. - * @returns {Function} Returns the new shortable function. - */ - function shortOut(func) { - var count = 0, - lastCalled = 0; - - return function() { - var stamp = nativeNow(), - remaining = HOT_SPAN - (stamp - lastCalled); - - lastCalled = stamp; - if (remaining > 0) { - if (++count >= HOT_COUNT) { - return arguments[0]; - } - } else { - count = 0; - } - return func.apply(undefined, arguments); - }; - } - - /** - * A specialized version of `_.shuffle` which mutates and sets the size of `array`. - * - * @private - * @param {Array} array The array to shuffle. - * @param {number} [size=array.length] The size of `array`. - * @returns {Array} Returns `array`. - */ - function shuffleSelf(array, size) { - var index = -1, - length = array.length, - lastIndex = length - 1; - - size = size === undefined ? length : size; - while (++index < size) { - var rand = baseRandom(index, lastIndex), - value = array[rand]; - - array[rand] = array[index]; - array[index] = value; - } - array.length = size; - return array; - } - - /** - * Converts `string` to a property path array. - * - * @private - * @param {string} string The string to convert. - * @returns {Array} Returns the property path array. - */ - var stringToPath = memoizeCapped(function(string) { - var result = []; - if (string.charCodeAt(0) === 46 /* . */) { - result.push(''); - } - string.replace(rePropName, function(match, number, quote, subString) { - result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match)); - }); - return result; - }); - - /** - * Converts `value` to a string key if it's not a string or symbol. - * - * @private - * @param {*} value The value to inspect. - * @returns {string|symbol} Returns the key. - */ - function toKey(value) { - if (typeof value == 'string' || isSymbol(value)) { - return value; - } - var result = (value + ''); - return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result; - } - - /** - * Converts `func` to its source code. - * - * @private - * @param {Function} func The function to convert. - * @returns {string} Returns the source code. - */ - function toSource(func) { - if (func != null) { - try { - return funcToString.call(func); - } catch (e) {} - try { - return (func + ''); - } catch (e) {} - } - return ''; - } - - /** - * Updates wrapper `details` based on `bitmask` flags. - * - * @private - * @returns {Array} details The details to modify. - * @param {number} bitmask The bitmask flags. See `createWrap` for more details. - * @returns {Array} Returns `details`. - */ - function updateWrapDetails(details, bitmask) { - arrayEach(wrapFlags, function(pair) { - var value = '_.' + pair[0]; - if ((bitmask & pair[1]) && !arrayIncludes(details, value)) { - details.push(value); - } - }); - return details.sort(); - } - - /** - * Creates a clone of `wrapper`. - * - * @private - * @param {Object} wrapper The wrapper to clone. - * @returns {Object} Returns the cloned wrapper. - */ - function wrapperClone(wrapper) { - if (wrapper instanceof LazyWrapper) { - return wrapper.clone(); - } - var result = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__); - result.__actions__ = copyArray(wrapper.__actions__); - result.__index__ = wrapper.__index__; - result.__values__ = wrapper.__values__; - return result; - } - - /*------------------------------------------------------------------------*/ - - /** - * Creates an array of elements split into groups the length of `size`. - * If `array` can't be split evenly, the final chunk will be the remaining - * elements. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Array - * @param {Array} array The array to process. - * @param {number} [size=1] The length of each chunk - * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. - * @returns {Array} Returns the new array of chunks. - * @example - * - * _.chunk(['a', 'b', 'c', 'd'], 2); - * // => [['a', 'b'], ['c', 'd']] - * - * _.chunk(['a', 'b', 'c', 'd'], 3); - * // => [['a', 'b', 'c'], ['d']] - */ - function chunk(array, size, guard) { - if ((guard ? isIterateeCall(array, size, guard) : size === undefined)) { - size = 1; - } else { - size = nativeMax(toInteger(size), 0); - } - var length = array == null ? 0 : array.length; - if (!length || size < 1) { - return []; - } - var index = 0, - resIndex = 0, - result = Array(nativeCeil(length / size)); - - while (index < length) { - result[resIndex++] = baseSlice(array, index, (index += size)); - } - return result; - } - - /** - * Creates an array with all falsey values removed. The values `false`, `null`, - * `0`, `""`, `undefined`, and `NaN` are falsey. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Array - * @param {Array} array The array to compact. - * @returns {Array} Returns the new array of filtered values. - * @example - * - * _.compact([0, 1, false, 2, '', 3]); - * // => [1, 2, 3] - */ - function compact(array) { - var index = -1, - length = array == null ? 0 : array.length, - resIndex = 0, - result = []; - - while (++index < length) { - var value = array[index]; - if (value) { - result[resIndex++] = value; - } - } - return result; - } - - /** - * Creates a new array concatenating `array` with any additional arrays - * and/or values. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {Array} array The array to concatenate. - * @param {...*} [values] The values to concatenate. - * @returns {Array} Returns the new concatenated array. - * @example - * - * var array = [1]; - * var other = _.concat(array, 2, [3], [[4]]); - * - * console.log(other); - * // => [1, 2, 3, [4]] - * - * console.log(array); - * // => [1] - */ - function concat() { - var length = arguments.length; - if (!length) { - return []; - } - var args = Array(length - 1), - array = arguments[0], - index = length; - - while (index--) { - args[index - 1] = arguments[index]; - } - return arrayPush(isArray(array) ? copyArray(array) : [array], baseFlatten(args, 1)); - } - - /** - * Creates an array of `array` values not included in the other given arrays - * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) - * for equality comparisons. The order and references of result values are - * determined by the first array. - * - * **Note:** Unlike `_.pullAll`, this method returns a new array. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Array - * @param {Array} array The array to inspect. - * @param {...Array} [values] The values to exclude. - * @returns {Array} Returns the new array of filtered values. - * @see _.without, _.xor - * @example - * - * _.difference([2, 1], [2, 3]); - * // => [1] - */ - var difference = baseRest(function(array, values) { - return isArrayLikeObject(array) - ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true)) - : []; - }); - - /** - * This method is like `_.difference` except that it accepts `iteratee` which - * is invoked for each element of `array` and `values` to generate the criterion - * by which they're compared. The order and references of result values are - * determined by the first array. The iteratee is invoked with one argument: - * (value). - * - * **Note:** Unlike `_.pullAllBy`, this method returns a new array. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {Array} array The array to inspect. - * @param {...Array} [values] The values to exclude. - * @param {Function} [iteratee=_.identity] The iteratee invoked per element. - * @returns {Array} Returns the new array of filtered values. - * @example - * - * _.differenceBy([2.1, 1.2], [2.3, 3.4], Math.floor); - * // => [1.2] - * - * // The `_.property` iteratee shorthand. - * _.differenceBy([{ 'x': 2 }, { 'x': 1 }], [{ 'x': 1 }], 'x'); - * // => [{ 'x': 2 }] - */ - var differenceBy = baseRest(function(array, values) { - var iteratee = last(values); - if (isArrayLikeObject(iteratee)) { - iteratee = undefined; - } - return isArrayLikeObject(array) - ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), getIteratee(iteratee, 2)) - : []; - }); - - /** - * This method is like `_.difference` except that it accepts `comparator` - * which is invoked to compare elements of `array` to `values`. The order and - * references of result values are determined by the first array. The comparator - * is invoked with two arguments: (arrVal, othVal). - * - * **Note:** Unlike `_.pullAllWith`, this method returns a new array. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {Array} array The array to inspect. - * @param {...Array} [values] The values to exclude. - * @param {Function} [comparator] The comparator invoked per element. - * @returns {Array} Returns the new array of filtered values. - * @example - * - * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]; - * - * _.differenceWith(objects, [{ 'x': 1, 'y': 2 }], _.isEqual); - * // => [{ 'x': 2, 'y': 1 }] - */ - var differenceWith = baseRest(function(array, values) { - var comparator = last(values); - if (isArrayLikeObject(comparator)) { - comparator = undefined; - } - return isArrayLikeObject(array) - ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), undefined, comparator) - : []; - }); - - /** - * Creates a slice of `array` with `n` elements dropped from the beginning. - * - * @static - * @memberOf _ - * @since 0.5.0 - * @category Array - * @param {Array} array The array to query. - * @param {number} [n=1] The number of elements to drop. - * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. - * @returns {Array} Returns the slice of `array`. - * @example - * - * _.drop([1, 2, 3]); - * // => [2, 3] - * - * _.drop([1, 2, 3], 2); - * // => [3] - * - * _.drop([1, 2, 3], 5); - * // => [] - * - * _.drop([1, 2, 3], 0); - * // => [1, 2, 3] - */ - function drop(array, n, guard) { - var length = array == null ? 0 : array.length; - if (!length) { - return []; - } - n = (guard || n === undefined) ? 1 : toInteger(n); - return baseSlice(array, n < 0 ? 0 : n, length); - } - - /** - * Creates a slice of `array` with `n` elements dropped from the end. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Array - * @param {Array} array The array to query. - * @param {number} [n=1] The number of elements to drop. - * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. - * @returns {Array} Returns the slice of `array`. - * @example - * - * _.dropRight([1, 2, 3]); - * // => [1, 2] - * - * _.dropRight([1, 2, 3], 2); - * // => [1] - * - * _.dropRight([1, 2, 3], 5); - * // => [] - * - * _.dropRight([1, 2, 3], 0); - * // => [1, 2, 3] - */ - function dropRight(array, n, guard) { - var length = array == null ? 0 : array.length; - if (!length) { - return []; - } - n = (guard || n === undefined) ? 1 : toInteger(n); - n = length - n; - return baseSlice(array, 0, n < 0 ? 0 : n); - } - - /** - * Creates a slice of `array` excluding elements dropped from the end. - * Elements are dropped until `predicate` returns falsey. The predicate is - * invoked with three arguments: (value, index, array). - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Array - * @param {Array} array The array to query. - * @param {Function} [predicate=_.identity] The function invoked per iteration. - * @returns {Array} Returns the slice of `array`. - * @example - * - * var users = [ - * { 'user': 'barney', 'active': true }, - * { 'user': 'fred', 'active': false }, - * { 'user': 'pebbles', 'active': false } - * ]; - * - * _.dropRightWhile(users, function(o) { return !o.active; }); - * // => objects for ['barney'] - * - * // The `_.matches` iteratee shorthand. - * _.dropRightWhile(users, { 'user': 'pebbles', 'active': false }); - * // => objects for ['barney', 'fred'] - * - * // The `_.matchesProperty` iteratee shorthand. - * _.dropRightWhile(users, ['active', false]); - * // => objects for ['barney'] - * - * // The `_.property` iteratee shorthand. - * _.dropRightWhile(users, 'active'); - * // => objects for ['barney', 'fred', 'pebbles'] - */ - function dropRightWhile(array, predicate) { - return (array && array.length) - ? baseWhile(array, getIteratee(predicate, 3), true, true) - : []; - } - - /** - * Creates a slice of `array` excluding elements dropped from the beginning. - * Elements are dropped until `predicate` returns falsey. The predicate is - * invoked with three arguments: (value, index, array). - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Array - * @param {Array} array The array to query. - * @param {Function} [predicate=_.identity] The function invoked per iteration. - * @returns {Array} Returns the slice of `array`. - * @example - * - * var users = [ - * { 'user': 'barney', 'active': false }, - * { 'user': 'fred', 'active': false }, - * { 'user': 'pebbles', 'active': true } - * ]; - * - * _.dropWhile(users, function(o) { return !o.active; }); - * // => objects for ['pebbles'] - * - * // The `_.matches` iteratee shorthand. - * _.dropWhile(users, { 'user': 'barney', 'active': false }); - * // => objects for ['fred', 'pebbles'] - * - * // The `_.matchesProperty` iteratee shorthand. - * _.dropWhile(users, ['active', false]); - * // => objects for ['pebbles'] - * - * // The `_.property` iteratee shorthand. - * _.dropWhile(users, 'active'); - * // => objects for ['barney', 'fred', 'pebbles'] - */ - function dropWhile(array, predicate) { - return (array && array.length) - ? baseWhile(array, getIteratee(predicate, 3), true) - : []; - } - - /** - * Fills elements of `array` with `value` from `start` up to, but not - * including, `end`. - * - * **Note:** This method mutates `array`. - * - * @static - * @memberOf _ - * @since 3.2.0 - * @category Array - * @param {Array} array The array to fill. - * @param {*} value The value to fill `array` with. - * @param {number} [start=0] The start position. - * @param {number} [end=array.length] The end position. - * @returns {Array} Returns `array`. - * @example - * - * var array = [1, 2, 3]; - * - * _.fill(array, 'a'); - * console.log(array); - * // => ['a', 'a', 'a'] - * - * _.fill(Array(3), 2); - * // => [2, 2, 2] - * - * _.fill([4, 6, 8, 10], '*', 1, 3); - * // => [4, '*', '*', 10] - */ - function fill(array, value, start, end) { - var length = array == null ? 0 : array.length; - if (!length) { - return []; - } - if (start && typeof start != 'number' && isIterateeCall(array, value, start)) { - start = 0; - end = length; - } - return baseFill(array, value, start, end); - } - - /** - * This method is like `_.find` except that it returns the index of the first - * element `predicate` returns truthy for instead of the element itself. - * - * @static - * @memberOf _ - * @since 1.1.0 - * @category Array - * @param {Array} array The array to inspect. - * @param {Function} [predicate=_.identity] The function invoked per iteration. - * @param {number} [fromIndex=0] The index to search from. - * @returns {number} Returns the index of the found element, else `-1`. - * @example - * - * var users = [ - * { 'user': 'barney', 'active': false }, - * { 'user': 'fred', 'active': false }, - * { 'user': 'pebbles', 'active': true } - * ]; - * - * _.findIndex(users, function(o) { return o.user == 'barney'; }); - * // => 0 - * - * // The `_.matches` iteratee shorthand. - * _.findIndex(users, { 'user': 'fred', 'active': false }); - * // => 1 - * - * // The `_.matchesProperty` iteratee shorthand. - * _.findIndex(users, ['active', false]); - * // => 0 - * - * // The `_.property` iteratee shorthand. - * _.findIndex(users, 'active'); - * // => 2 - */ - function findIndex(array, predicate, fromIndex) { - var length = array == null ? 0 : array.length; - if (!length) { - return -1; - } - var index = fromIndex == null ? 0 : toInteger(fromIndex); - if (index < 0) { - index = nativeMax(length + index, 0); - } - return baseFindIndex(array, getIteratee(predicate, 3), index); - } - - /** - * This method is like `_.findIndex` except that it iterates over elements - * of `collection` from right to left. - * - * @static - * @memberOf _ - * @since 2.0.0 - * @category Array - * @param {Array} array The array to inspect. - * @param {Function} [predicate=_.identity] The function invoked per iteration. - * @param {number} [fromIndex=array.length-1] The index to search from. - * @returns {number} Returns the index of the found element, else `-1`. - * @example - * - * var users = [ - * { 'user': 'barney', 'active': true }, - * { 'user': 'fred', 'active': false }, - * { 'user': 'pebbles', 'active': false } - * ]; - * - * _.findLastIndex(users, function(o) { return o.user == 'pebbles'; }); - * // => 2 - * - * // The `_.matches` iteratee shorthand. - * _.findLastIndex(users, { 'user': 'barney', 'active': true }); - * // => 0 - * - * // The `_.matchesProperty` iteratee shorthand. - * _.findLastIndex(users, ['active', false]); - * // => 2 - * - * // The `_.property` iteratee shorthand. - * _.findLastIndex(users, 'active'); - * // => 0 - */ - function findLastIndex(array, predicate, fromIndex) { - var length = array == null ? 0 : array.length; - if (!length) { - return -1; - } - var index = length - 1; - if (fromIndex !== undefined) { - index = toInteger(fromIndex); - index = fromIndex < 0 - ? nativeMax(length + index, 0) - : nativeMin(index, length - 1); - } - return baseFindIndex(array, getIteratee(predicate, 3), index, true); - } - - /** - * Flattens `array` a single level deep. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Array - * @param {Array} array The array to flatten. - * @returns {Array} Returns the new flattened array. - * @example - * - * _.flatten([1, [2, [3, [4]], 5]]); - * // => [1, 2, [3, [4]], 5] - */ - function flatten(array) { - var length = array == null ? 0 : array.length; - return length ? baseFlatten(array, 1) : []; - } - - /** - * Recursively flattens `array`. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Array - * @param {Array} array The array to flatten. - * @returns {Array} Returns the new flattened array. - * @example - * - * _.flattenDeep([1, [2, [3, [4]], 5]]); - * // => [1, 2, 3, 4, 5] - */ - function flattenDeep(array) { - var length = array == null ? 0 : array.length; - return length ? baseFlatten(array, INFINITY) : []; - } - - /** - * Recursively flatten `array` up to `depth` times. - * - * @static - * @memberOf _ - * @since 4.4.0 - * @category Array - * @param {Array} array The array to flatten. - * @param {number} [depth=1] The maximum recursion depth. - * @returns {Array} Returns the new flattened array. - * @example - * - * var array = [1, [2, [3, [4]], 5]]; - * - * _.flattenDepth(array, 1); - * // => [1, 2, [3, [4]], 5] - * - * _.flattenDepth(array, 2); - * // => [1, 2, 3, [4], 5] - */ - function flattenDepth(array, depth) { - var length = array == null ? 0 : array.length; - if (!length) { - return []; - } - depth = depth === undefined ? 1 : toInteger(depth); - return baseFlatten(array, depth); - } - - /** - * The inverse of `_.toPairs`; this method returns an object composed - * from key-value `pairs`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {Array} pairs The key-value pairs. - * @returns {Object} Returns the new object. - * @example - * - * _.fromPairs([['a', 1], ['b', 2]]); - * // => { 'a': 1, 'b': 2 } - */ - function fromPairs(pairs) { - var index = -1, - length = pairs == null ? 0 : pairs.length, - result = {}; - - while (++index < length) { - var pair = pairs[index]; - result[pair[0]] = pair[1]; - } - return result; - } - - /** - * Gets the first element of `array`. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @alias first - * @category Array - * @param {Array} array The array to query. - * @returns {*} Returns the first element of `array`. - * @example - * - * _.head([1, 2, 3]); - * // => 1 - * - * _.head([]); - * // => undefined - */ - function head(array) { - return (array && array.length) ? array[0] : undefined; - } - - /** - * Gets the index at which the first occurrence of `value` is found in `array` - * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) - * for equality comparisons. If `fromIndex` is negative, it's used as the - * offset from the end of `array`. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Array - * @param {Array} array The array to inspect. - * @param {*} value The value to search for. - * @param {number} [fromIndex=0] The index to search from. - * @returns {number} Returns the index of the matched value, else `-1`. - * @example - * - * _.indexOf([1, 2, 1, 2], 2); - * // => 1 - * - * // Search from the `fromIndex`. - * _.indexOf([1, 2, 1, 2], 2, 2); - * // => 3 - */ - function indexOf(array, value, fromIndex) { - var length = array == null ? 0 : array.length; - if (!length) { - return -1; - } - var index = fromIndex == null ? 0 : toInteger(fromIndex); - if (index < 0) { - index = nativeMax(length + index, 0); - } - return baseIndexOf(array, value, index); - } - - /** - * Gets all but the last element of `array`. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Array - * @param {Array} array The array to query. - * @returns {Array} Returns the slice of `array`. - * @example - * - * _.initial([1, 2, 3]); - * // => [1, 2] - */ - function initial(array) { - var length = array == null ? 0 : array.length; - return length ? baseSlice(array, 0, -1) : []; - } - - /** - * Creates an array of unique values that are included in all given arrays - * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) - * for equality comparisons. The order and references of result values are - * determined by the first array. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Array - * @param {...Array} [arrays] The arrays to inspect. - * @returns {Array} Returns the new array of intersecting values. - * @example - * - * _.intersection([2, 1], [2, 3]); - * // => [2] - */ - var intersection = baseRest(function(arrays) { - var mapped = arrayMap(arrays, castArrayLikeObject); - return (mapped.length && mapped[0] === arrays[0]) - ? baseIntersection(mapped) - : []; - }); - - /** - * This method is like `_.intersection` except that it accepts `iteratee` - * which is invoked for each element of each `arrays` to generate the criterion - * by which they're compared. The order and references of result values are - * determined by the first array. The iteratee is invoked with one argument: - * (value). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {...Array} [arrays] The arrays to inspect. - * @param {Function} [iteratee=_.identity] The iteratee invoked per element. - * @returns {Array} Returns the new array of intersecting values. - * @example - * - * _.intersectionBy([2.1, 1.2], [2.3, 3.4], Math.floor); - * // => [2.1] - * - * // The `_.property` iteratee shorthand. - * _.intersectionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x'); - * // => [{ 'x': 1 }] - */ - var intersectionBy = baseRest(function(arrays) { - var iteratee = last(arrays), - mapped = arrayMap(arrays, castArrayLikeObject); - - if (iteratee === last(mapped)) { - iteratee = undefined; - } else { - mapped.pop(); - } - return (mapped.length && mapped[0] === arrays[0]) - ? baseIntersection(mapped, getIteratee(iteratee, 2)) - : []; - }); - - /** - * This method is like `_.intersection` except that it accepts `comparator` - * which is invoked to compare elements of `arrays`. The order and references - * of result values are determined by the first array. The comparator is - * invoked with two arguments: (arrVal, othVal). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {...Array} [arrays] The arrays to inspect. - * @param {Function} [comparator] The comparator invoked per element. - * @returns {Array} Returns the new array of intersecting values. - * @example - * - * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]; - * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }]; - * - * _.intersectionWith(objects, others, _.isEqual); - * // => [{ 'x': 1, 'y': 2 }] - */ - var intersectionWith = baseRest(function(arrays) { - var comparator = last(arrays), - mapped = arrayMap(arrays, castArrayLikeObject); - - comparator = typeof comparator == 'function' ? comparator : undefined; - if (comparator) { - mapped.pop(); - } - return (mapped.length && mapped[0] === arrays[0]) - ? baseIntersection(mapped, undefined, comparator) - : []; - }); - - /** - * Converts all elements in `array` into a string separated by `separator`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {Array} array The array to convert. - * @param {string} [separator=','] The element separator. - * @returns {string} Returns the joined string. - * @example - * - * _.join(['a', 'b', 'c'], '~'); - * // => 'a~b~c' - */ - function join(array, separator) { - return array == null ? '' : nativeJoin.call(array, separator); - } - - /** - * Gets the last element of `array`. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Array - * @param {Array} array The array to query. - * @returns {*} Returns the last element of `array`. - * @example - * - * _.last([1, 2, 3]); - * // => 3 - */ - function last(array) { - var length = array == null ? 0 : array.length; - return length ? array[length - 1] : undefined; - } - - /** - * This method is like `_.indexOf` except that it iterates over elements of - * `array` from right to left. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Array - * @param {Array} array The array to inspect. - * @param {*} value The value to search for. - * @param {number} [fromIndex=array.length-1] The index to search from. - * @returns {number} Returns the index of the matched value, else `-1`. - * @example - * - * _.lastIndexOf([1, 2, 1, 2], 2); - * // => 3 - * - * // Search from the `fromIndex`. - * _.lastIndexOf([1, 2, 1, 2], 2, 2); - * // => 1 - */ - function lastIndexOf(array, value, fromIndex) { - var length = array == null ? 0 : array.length; - if (!length) { - return -1; - } - var index = length; - if (fromIndex !== undefined) { - index = toInteger(fromIndex); - index = index < 0 ? nativeMax(length + index, 0) : nativeMin(index, length - 1); - } - return value === value - ? strictLastIndexOf(array, value, index) - : baseFindIndex(array, baseIsNaN, index, true); - } - - /** - * Gets the element at index `n` of `array`. If `n` is negative, the nth - * element from the end is returned. - * - * @static - * @memberOf _ - * @since 4.11.0 - * @category Array - * @param {Array} array The array to query. - * @param {number} [n=0] The index of the element to return. - * @returns {*} Returns the nth element of `array`. - * @example - * - * var array = ['a', 'b', 'c', 'd']; - * - * _.nth(array, 1); - * // => 'b' - * - * _.nth(array, -2); - * // => 'c'; - */ - function nth(array, n) { - return (array && array.length) ? baseNth(array, toInteger(n)) : undefined; - } - - /** - * Removes all given values from `array` using - * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) - * for equality comparisons. - * - * **Note:** Unlike `_.without`, this method mutates `array`. Use `_.remove` - * to remove elements from an array by predicate. - * - * @static - * @memberOf _ - * @since 2.0.0 - * @category Array - * @param {Array} array The array to modify. - * @param {...*} [values] The values to remove. - * @returns {Array} Returns `array`. - * @example - * - * var array = ['a', 'b', 'c', 'a', 'b', 'c']; - * - * _.pull(array, 'a', 'c'); - * console.log(array); - * // => ['b', 'b'] - */ - var pull = baseRest(pullAll); - - /** - * This method is like `_.pull` except that it accepts an array of values to remove. - * - * **Note:** Unlike `_.difference`, this method mutates `array`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {Array} array The array to modify. - * @param {Array} values The values to remove. - * @returns {Array} Returns `array`. - * @example - * - * var array = ['a', 'b', 'c', 'a', 'b', 'c']; - * - * _.pullAll(array, ['a', 'c']); - * console.log(array); - * // => ['b', 'b'] - */ - function pullAll(array, values) { - return (array && array.length && values && values.length) - ? basePullAll(array, values) - : array; - } - - /** - * This method is like `_.pullAll` except that it accepts `iteratee` which is - * invoked for each element of `array` and `values` to generate the criterion - * by which they're compared. The iteratee is invoked with one argument: (value). - * - * **Note:** Unlike `_.differenceBy`, this method mutates `array`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {Array} array The array to modify. - * @param {Array} values The values to remove. - * @param {Function} [iteratee=_.identity] The iteratee invoked per element. - * @returns {Array} Returns `array`. - * @example - * - * var array = [{ 'x': 1 }, { 'x': 2 }, { 'x': 3 }, { 'x': 1 }]; - * - * _.pullAllBy(array, [{ 'x': 1 }, { 'x': 3 }], 'x'); - * console.log(array); - * // => [{ 'x': 2 }] - */ - function pullAllBy(array, values, iteratee) { - return (array && array.length && values && values.length) - ? basePullAll(array, values, getIteratee(iteratee, 2)) - : array; - } - - /** - * This method is like `_.pullAll` except that it accepts `comparator` which - * is invoked to compare elements of `array` to `values`. The comparator is - * invoked with two arguments: (arrVal, othVal). - * - * **Note:** Unlike `_.differenceWith`, this method mutates `array`. - * - * @static - * @memberOf _ - * @since 4.6.0 - * @category Array - * @param {Array} array The array to modify. - * @param {Array} values The values to remove. - * @param {Function} [comparator] The comparator invoked per element. - * @returns {Array} Returns `array`. - * @example - * - * var array = [{ 'x': 1, 'y': 2 }, { 'x': 3, 'y': 4 }, { 'x': 5, 'y': 6 }]; - * - * _.pullAllWith(array, [{ 'x': 3, 'y': 4 }], _.isEqual); - * console.log(array); - * // => [{ 'x': 1, 'y': 2 }, { 'x': 5, 'y': 6 }] - */ - function pullAllWith(array, values, comparator) { - return (array && array.length && values && values.length) - ? basePullAll(array, values, undefined, comparator) - : array; - } - - /** - * Removes elements from `array` corresponding to `indexes` and returns an - * array of removed elements. - * - * **Note:** Unlike `_.at`, this method mutates `array`. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Array - * @param {Array} array The array to modify. - * @param {...(number|number[])} [indexes] The indexes of elements to remove. - * @returns {Array} Returns the new array of removed elements. - * @example - * - * var array = ['a', 'b', 'c', 'd']; - * var pulled = _.pullAt(array, [1, 3]); - * - * console.log(array); - * // => ['a', 'c'] - * - * console.log(pulled); - * // => ['b', 'd'] - */ - var pullAt = flatRest(function(array, indexes) { - var length = array == null ? 0 : array.length, - result = baseAt(array, indexes); - - basePullAt(array, arrayMap(indexes, function(index) { - return isIndex(index, length) ? +index : index; - }).sort(compareAscending)); - - return result; - }); - - /** - * Removes all elements from `array` that `predicate` returns truthy for - * and returns an array of the removed elements. The predicate is invoked - * with three arguments: (value, index, array). - * - * **Note:** Unlike `_.filter`, this method mutates `array`. Use `_.pull` - * to pull elements from an array by value. - * - * @static - * @memberOf _ - * @since 2.0.0 - * @category Array - * @param {Array} array The array to modify. - * @param {Function} [predicate=_.identity] The function invoked per iteration. - * @returns {Array} Returns the new array of removed elements. - * @example - * - * var array = [1, 2, 3, 4]; - * var evens = _.remove(array, function(n) { - * return n % 2 == 0; - * }); - * - * console.log(array); - * // => [1, 3] - * - * console.log(evens); - * // => [2, 4] - */ - function remove(array, predicate) { - var result = []; - if (!(array && array.length)) { - return result; - } - var index = -1, - indexes = [], - length = array.length; - - predicate = getIteratee(predicate, 3); - while (++index < length) { - var value = array[index]; - if (predicate(value, index, array)) { - result.push(value); - indexes.push(index); - } - } - basePullAt(array, indexes); - return result; - } - - /** - * Reverses `array` so that the first element becomes the last, the second - * element becomes the second to last, and so on. - * - * **Note:** This method mutates `array` and is based on - * [`Array#reverse`](https://mdn.io/Array/reverse). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {Array} array The array to modify. - * @returns {Array} Returns `array`. - * @example - * - * var array = [1, 2, 3]; - * - * _.reverse(array); - * // => [3, 2, 1] - * - * console.log(array); - * // => [3, 2, 1] - */ - function reverse(array) { - return array == null ? array : nativeReverse.call(array); - } - - /** - * Creates a slice of `array` from `start` up to, but not including, `end`. - * - * **Note:** This method is used instead of - * [`Array#slice`](https://mdn.io/Array/slice) to ensure dense arrays are - * returned. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Array - * @param {Array} array The array to slice. - * @param {number} [start=0] The start position. - * @param {number} [end=array.length] The end position. - * @returns {Array} Returns the slice of `array`. - */ - function slice(array, start, end) { - var length = array == null ? 0 : array.length; - if (!length) { - return []; - } - if (end && typeof end != 'number' && isIterateeCall(array, start, end)) { - start = 0; - end = length; - } - else { - start = start == null ? 0 : toInteger(start); - end = end === undefined ? length : toInteger(end); - } - return baseSlice(array, start, end); - } - - /** - * Uses a binary search to determine the lowest index at which `value` - * should be inserted into `array` in order to maintain its sort order. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Array - * @param {Array} array The sorted array to inspect. - * @param {*} value The value to evaluate. - * @returns {number} Returns the index at which `value` should be inserted - * into `array`. - * @example - * - * _.sortedIndex([30, 50], 40); - * // => 1 - */ - function sortedIndex(array, value) { - return baseSortedIndex(array, value); - } - - /** - * This method is like `_.sortedIndex` except that it accepts `iteratee` - * which is invoked for `value` and each element of `array` to compute their - * sort ranking. The iteratee is invoked with one argument: (value). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {Array} array The sorted array to inspect. - * @param {*} value The value to evaluate. - * @param {Function} [iteratee=_.identity] The iteratee invoked per element. - * @returns {number} Returns the index at which `value` should be inserted - * into `array`. - * @example - * - * var objects = [{ 'x': 4 }, { 'x': 5 }]; - * - * _.sortedIndexBy(objects, { 'x': 4 }, function(o) { return o.x; }); - * // => 0 - * - * // The `_.property` iteratee shorthand. - * _.sortedIndexBy(objects, { 'x': 4 }, 'x'); - * // => 0 - */ - function sortedIndexBy(array, value, iteratee) { - return baseSortedIndexBy(array, value, getIteratee(iteratee, 2)); - } - - /** - * This method is like `_.indexOf` except that it performs a binary - * search on a sorted `array`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {Array} array The array to inspect. - * @param {*} value The value to search for. - * @returns {number} Returns the index of the matched value, else `-1`. - * @example - * - * _.sortedIndexOf([4, 5, 5, 5, 6], 5); - * // => 1 - */ - function sortedIndexOf(array, value) { - var length = array == null ? 0 : array.length; - if (length) { - var index = baseSortedIndex(array, value); - if (index < length && eq(array[index], value)) { - return index; - } - } - return -1; - } - - /** - * This method is like `_.sortedIndex` except that it returns the highest - * index at which `value` should be inserted into `array` in order to - * maintain its sort order. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Array - * @param {Array} array The sorted array to inspect. - * @param {*} value The value to evaluate. - * @returns {number} Returns the index at which `value` should be inserted - * into `array`. - * @example - * - * _.sortedLastIndex([4, 5, 5, 5, 6], 5); - * // => 4 - */ - function sortedLastIndex(array, value) { - return baseSortedIndex(array, value, true); - } - - /** - * This method is like `_.sortedLastIndex` except that it accepts `iteratee` - * which is invoked for `value` and each element of `array` to compute their - * sort ranking. The iteratee is invoked with one argument: (value). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {Array} array The sorted array to inspect. - * @param {*} value The value to evaluate. - * @param {Function} [iteratee=_.identity] The iteratee invoked per element. - * @returns {number} Returns the index at which `value` should be inserted - * into `array`. - * @example - * - * var objects = [{ 'x': 4 }, { 'x': 5 }]; - * - * _.sortedLastIndexBy(objects, { 'x': 4 }, function(o) { return o.x; }); - * // => 1 - * - * // The `_.property` iteratee shorthand. - * _.sortedLastIndexBy(objects, { 'x': 4 }, 'x'); - * // => 1 - */ - function sortedLastIndexBy(array, value, iteratee) { - return baseSortedIndexBy(array, value, getIteratee(iteratee, 2), true); - } - - /** - * This method is like `_.lastIndexOf` except that it performs a binary - * search on a sorted `array`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {Array} array The array to inspect. - * @param {*} value The value to search for. - * @returns {number} Returns the index of the matched value, else `-1`. - * @example - * - * _.sortedLastIndexOf([4, 5, 5, 5, 6], 5); - * // => 3 - */ - function sortedLastIndexOf(array, value) { - var length = array == null ? 0 : array.length; - if (length) { - var index = baseSortedIndex(array, value, true) - 1; - if (eq(array[index], value)) { - return index; - } - } - return -1; - } - - /** - * This method is like `_.uniq` except that it's designed and optimized - * for sorted arrays. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {Array} array The array to inspect. - * @returns {Array} Returns the new duplicate free array. - * @example - * - * _.sortedUniq([1, 1, 2]); - * // => [1, 2] - */ - function sortedUniq(array) { - return (array && array.length) - ? baseSortedUniq(array) - : []; - } - - /** - * This method is like `_.uniqBy` except that it's designed and optimized - * for sorted arrays. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {Array} array The array to inspect. - * @param {Function} [iteratee] The iteratee invoked per element. - * @returns {Array} Returns the new duplicate free array. - * @example - * - * _.sortedUniqBy([1.1, 1.2, 2.3, 2.4], Math.floor); - * // => [1.1, 2.3] - */ - function sortedUniqBy(array, iteratee) { - return (array && array.length) - ? baseSortedUniq(array, getIteratee(iteratee, 2)) - : []; - } - - /** - * Gets all but the first element of `array`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {Array} array The array to query. - * @returns {Array} Returns the slice of `array`. - * @example - * - * _.tail([1, 2, 3]); - * // => [2, 3] - */ - function tail(array) { - var length = array == null ? 0 : array.length; - return length ? baseSlice(array, 1, length) : []; - } - - /** - * Creates a slice of `array` with `n` elements taken from the beginning. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Array - * @param {Array} array The array to query. - * @param {number} [n=1] The number of elements to take. - * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. - * @returns {Array} Returns the slice of `array`. - * @example - * - * _.take([1, 2, 3]); - * // => [1] - * - * _.take([1, 2, 3], 2); - * // => [1, 2] - * - * _.take([1, 2, 3], 5); - * // => [1, 2, 3] - * - * _.take([1, 2, 3], 0); - * // => [] - */ - function take(array, n, guard) { - if (!(array && array.length)) { - return []; - } - n = (guard || n === undefined) ? 1 : toInteger(n); - return baseSlice(array, 0, n < 0 ? 0 : n); - } - - /** - * Creates a slice of `array` with `n` elements taken from the end. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Array - * @param {Array} array The array to query. - * @param {number} [n=1] The number of elements to take. - * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. - * @returns {Array} Returns the slice of `array`. - * @example - * - * _.takeRight([1, 2, 3]); - * // => [3] - * - * _.takeRight([1, 2, 3], 2); - * // => [2, 3] - * - * _.takeRight([1, 2, 3], 5); - * // => [1, 2, 3] - * - * _.takeRight([1, 2, 3], 0); - * // => [] - */ - function takeRight(array, n, guard) { - var length = array == null ? 0 : array.length; - if (!length) { - return []; - } - n = (guard || n === undefined) ? 1 : toInteger(n); - n = length - n; - return baseSlice(array, n < 0 ? 0 : n, length); - } - - /** - * Creates a slice of `array` with elements taken from the end. Elements are - * taken until `predicate` returns falsey. The predicate is invoked with - * three arguments: (value, index, array). - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Array - * @param {Array} array The array to query. - * @param {Function} [predicate=_.identity] The function invoked per iteration. - * @returns {Array} Returns the slice of `array`. - * @example - * - * var users = [ - * { 'user': 'barney', 'active': true }, - * { 'user': 'fred', 'active': false }, - * { 'user': 'pebbles', 'active': false } - * ]; - * - * _.takeRightWhile(users, function(o) { return !o.active; }); - * // => objects for ['fred', 'pebbles'] - * - * // The `_.matches` iteratee shorthand. - * _.takeRightWhile(users, { 'user': 'pebbles', 'active': false }); - * // => objects for ['pebbles'] - * - * // The `_.matchesProperty` iteratee shorthand. - * _.takeRightWhile(users, ['active', false]); - * // => objects for ['fred', 'pebbles'] - * - * // The `_.property` iteratee shorthand. - * _.takeRightWhile(users, 'active'); - * // => [] - */ - function takeRightWhile(array, predicate) { - return (array && array.length) - ? baseWhile(array, getIteratee(predicate, 3), false, true) - : []; - } - - /** - * Creates a slice of `array` with elements taken from the beginning. Elements - * are taken until `predicate` returns falsey. The predicate is invoked with - * three arguments: (value, index, array). - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Array - * @param {Array} array The array to query. - * @param {Function} [predicate=_.identity] The function invoked per iteration. - * @returns {Array} Returns the slice of `array`. - * @example - * - * var users = [ - * { 'user': 'barney', 'active': false }, - * { 'user': 'fred', 'active': false }, - * { 'user': 'pebbles', 'active': true } - * ]; - * - * _.takeWhile(users, function(o) { return !o.active; }); - * // => objects for ['barney', 'fred'] - * - * // The `_.matches` iteratee shorthand. - * _.takeWhile(users, { 'user': 'barney', 'active': false }); - * // => objects for ['barney'] - * - * // The `_.matchesProperty` iteratee shorthand. - * _.takeWhile(users, ['active', false]); - * // => objects for ['barney', 'fred'] - * - * // The `_.property` iteratee shorthand. - * _.takeWhile(users, 'active'); - * // => [] - */ - function takeWhile(array, predicate) { - return (array && array.length) - ? baseWhile(array, getIteratee(predicate, 3)) - : []; - } - - /** - * Creates an array of unique values, in order, from all given arrays using - * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) - * for equality comparisons. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Array - * @param {...Array} [arrays] The arrays to inspect. - * @returns {Array} Returns the new array of combined values. - * @example - * - * _.union([2], [1, 2]); - * // => [2, 1] - */ - var union = baseRest(function(arrays) { - return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true)); - }); - - /** - * This method is like `_.union` except that it accepts `iteratee` which is - * invoked for each element of each `arrays` to generate the criterion by - * which uniqueness is computed. Result values are chosen from the first - * array in which the value occurs. The iteratee is invoked with one argument: - * (value). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {...Array} [arrays] The arrays to inspect. - * @param {Function} [iteratee=_.identity] The iteratee invoked per element. - * @returns {Array} Returns the new array of combined values. - * @example - * - * _.unionBy([2.1], [1.2, 2.3], Math.floor); - * // => [2.1, 1.2] - * - * // The `_.property` iteratee shorthand. - * _.unionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x'); - * // => [{ 'x': 1 }, { 'x': 2 }] - */ - var unionBy = baseRest(function(arrays) { - var iteratee = last(arrays); - if (isArrayLikeObject(iteratee)) { - iteratee = undefined; - } - return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), getIteratee(iteratee, 2)); - }); - - /** - * This method is like `_.union` except that it accepts `comparator` which - * is invoked to compare elements of `arrays`. Result values are chosen from - * the first array in which the value occurs. The comparator is invoked - * with two arguments: (arrVal, othVal). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {...Array} [arrays] The arrays to inspect. - * @param {Function} [comparator] The comparator invoked per element. - * @returns {Array} Returns the new array of combined values. - * @example - * - * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]; - * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }]; - * - * _.unionWith(objects, others, _.isEqual); - * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }] - */ - var unionWith = baseRest(function(arrays) { - var comparator = last(arrays); - comparator = typeof comparator == 'function' ? comparator : undefined; - return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), undefined, comparator); - }); - - /** - * Creates a duplicate-free version of an array, using - * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) - * for equality comparisons, in which only the first occurrence of each element - * is kept. The order of result values is determined by the order they occur - * in the array. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Array - * @param {Array} array The array to inspect. - * @returns {Array} Returns the new duplicate free array. - * @example - * - * _.uniq([2, 1, 2]); - * // => [2, 1] - */ - function uniq(array) { - return (array && array.length) ? baseUniq(array) : []; - } - - /** - * This method is like `_.uniq` except that it accepts `iteratee` which is - * invoked for each element in `array` to generate the criterion by which - * uniqueness is computed. The order of result values is determined by the - * order they occur in the array. The iteratee is invoked with one argument: - * (value). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {Array} array The array to inspect. - * @param {Function} [iteratee=_.identity] The iteratee invoked per element. - * @returns {Array} Returns the new duplicate free array. - * @example - * - * _.uniqBy([2.1, 1.2, 2.3], Math.floor); - * // => [2.1, 1.2] - * - * // The `_.property` iteratee shorthand. - * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x'); - * // => [{ 'x': 1 }, { 'x': 2 }] - */ - function uniqBy(array, iteratee) { - return (array && array.length) ? baseUniq(array, getIteratee(iteratee, 2)) : []; - } - - /** - * This method is like `_.uniq` except that it accepts `comparator` which - * is invoked to compare elements of `array`. The order of result values is - * determined by the order they occur in the array.The comparator is invoked - * with two arguments: (arrVal, othVal). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {Array} array The array to inspect. - * @param {Function} [comparator] The comparator invoked per element. - * @returns {Array} Returns the new duplicate free array. - * @example - * - * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }]; - * - * _.uniqWith(objects, _.isEqual); - * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }] - */ - function uniqWith(array, comparator) { - comparator = typeof comparator == 'function' ? comparator : undefined; - return (array && array.length) ? baseUniq(array, undefined, comparator) : []; - } - - /** - * This method is like `_.zip` except that it accepts an array of grouped - * elements and creates an array regrouping the elements to their pre-zip - * configuration. - * - * @static - * @memberOf _ - * @since 1.2.0 - * @category Array - * @param {Array} array The array of grouped elements to process. - * @returns {Array} Returns the new array of regrouped elements. - * @example - * - * var zipped = _.zip(['a', 'b'], [1, 2], [true, false]); - * // => [['a', 1, true], ['b', 2, false]] - * - * _.unzip(zipped); - * // => [['a', 'b'], [1, 2], [true, false]] - */ - function unzip(array) { - if (!(array && array.length)) { - return []; - } - var length = 0; - array = arrayFilter(array, function(group) { - if (isArrayLikeObject(group)) { - length = nativeMax(group.length, length); - return true; - } - }); - return baseTimes(length, function(index) { - return arrayMap(array, baseProperty(index)); - }); - } - - /** - * This method is like `_.unzip` except that it accepts `iteratee` to specify - * how regrouped values should be combined. The iteratee is invoked with the - * elements of each group: (...group). - * - * @static - * @memberOf _ - * @since 3.8.0 - * @category Array - * @param {Array} array The array of grouped elements to process. - * @param {Function} [iteratee=_.identity] The function to combine - * regrouped values. - * @returns {Array} Returns the new array of regrouped elements. - * @example - * - * var zipped = _.zip([1, 2], [10, 20], [100, 200]); - * // => [[1, 10, 100], [2, 20, 200]] - * - * _.unzipWith(zipped, _.add); - * // => [3, 30, 300] - */ - function unzipWith(array, iteratee) { - if (!(array && array.length)) { - return []; - } - var result = unzip(array); - if (iteratee == null) { - return result; - } - return arrayMap(result, function(group) { - return apply(iteratee, undefined, group); - }); - } - - /** - * Creates an array excluding all given values using - * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) - * for equality comparisons. - * - * **Note:** Unlike `_.pull`, this method returns a new array. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Array - * @param {Array} array The array to inspect. - * @param {...*} [values] The values to exclude. - * @returns {Array} Returns the new array of filtered values. - * @see _.difference, _.xor - * @example - * - * _.without([2, 1, 2, 3], 1, 2); - * // => [3] - */ - var without = baseRest(function(array, values) { - return isArrayLikeObject(array) - ? baseDifference(array, values) - : []; - }); - - /** - * Creates an array of unique values that is the - * [symmetric difference](https://en.wikipedia.org/wiki/Symmetric_difference) - * of the given arrays. The order of result values is determined by the order - * they occur in the arrays. - * - * @static - * @memberOf _ - * @since 2.4.0 - * @category Array - * @param {...Array} [arrays] The arrays to inspect. - * @returns {Array} Returns the new array of filtered values. - * @see _.difference, _.without - * @example - * - * _.xor([2, 1], [2, 3]); - * // => [1, 3] - */ - var xor = baseRest(function(arrays) { - return baseXor(arrayFilter(arrays, isArrayLikeObject)); - }); - - /** - * This method is like `_.xor` except that it accepts `iteratee` which is - * invoked for each element of each `arrays` to generate the criterion by - * which by which they're compared. The order of result values is determined - * by the order they occur in the arrays. The iteratee is invoked with one - * argument: (value). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {...Array} [arrays] The arrays to inspect. - * @param {Function} [iteratee=_.identity] The iteratee invoked per element. - * @returns {Array} Returns the new array of filtered values. - * @example - * - * _.xorBy([2.1, 1.2], [2.3, 3.4], Math.floor); - * // => [1.2, 3.4] - * - * // The `_.property` iteratee shorthand. - * _.xorBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x'); - * // => [{ 'x': 2 }] - */ - var xorBy = baseRest(function(arrays) { - var iteratee = last(arrays); - if (isArrayLikeObject(iteratee)) { - iteratee = undefined; - } - return baseXor(arrayFilter(arrays, isArrayLikeObject), getIteratee(iteratee, 2)); - }); - - /** - * This method is like `_.xor` except that it accepts `comparator` which is - * invoked to compare elements of `arrays`. The order of result values is - * determined by the order they occur in the arrays. The comparator is invoked - * with two arguments: (arrVal, othVal). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Array - * @param {...Array} [arrays] The arrays to inspect. - * @param {Function} [comparator] The comparator invoked per element. - * @returns {Array} Returns the new array of filtered values. - * @example - * - * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]; - * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }]; - * - * _.xorWith(objects, others, _.isEqual); - * // => [{ 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }] - */ - var xorWith = baseRest(function(arrays) { - var comparator = last(arrays); - comparator = typeof comparator == 'function' ? comparator : undefined; - return baseXor(arrayFilter(arrays, isArrayLikeObject), undefined, comparator); - }); - - /** - * Creates an array of grouped elements, the first of which contains the - * first elements of the given arrays, the second of which contains the - * second elements of the given arrays, and so on. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Array - * @param {...Array} [arrays] The arrays to process. - * @returns {Array} Returns the new array of grouped elements. - * @example - * - * _.zip(['a', 'b'], [1, 2], [true, false]); - * // => [['a', 1, true], ['b', 2, false]] - */ - var zip = baseRest(unzip); - - /** - * This method is like `_.fromPairs` except that it accepts two arrays, - * one of property identifiers and one of corresponding values. - * - * @static - * @memberOf _ - * @since 0.4.0 - * @category Array - * @param {Array} [props=[]] The property identifiers. - * @param {Array} [values=[]] The property values. - * @returns {Object} Returns the new object. - * @example - * - * _.zipObject(['a', 'b'], [1, 2]); - * // => { 'a': 1, 'b': 2 } - */ - function zipObject(props, values) { - return baseZipObject(props || [], values || [], assignValue); - } - - /** - * This method is like `_.zipObject` except that it supports property paths. - * - * @static - * @memberOf _ - * @since 4.1.0 - * @category Array - * @param {Array} [props=[]] The property identifiers. - * @param {Array} [values=[]] The property values. - * @returns {Object} Returns the new object. - * @example - * - * _.zipObjectDeep(['a.b[0].c', 'a.b[1].d'], [1, 2]); - * // => { 'a': { 'b': [{ 'c': 1 }, { 'd': 2 }] } } - */ - function zipObjectDeep(props, values) { - return baseZipObject(props || [], values || [], baseSet); - } - - /** - * This method is like `_.zip` except that it accepts `iteratee` to specify - * how grouped values should be combined. The iteratee is invoked with the - * elements of each group: (...group). - * - * @static - * @memberOf _ - * @since 3.8.0 - * @category Array - * @param {...Array} [arrays] The arrays to process. - * @param {Function} [iteratee=_.identity] The function to combine - * grouped values. - * @returns {Array} Returns the new array of grouped elements. - * @example - * - * _.zipWith([1, 2], [10, 20], [100, 200], function(a, b, c) { - * return a + b + c; - * }); - * // => [111, 222] - */ - var zipWith = baseRest(function(arrays) { - var length = arrays.length, - iteratee = length > 1 ? arrays[length - 1] : undefined; - - iteratee = typeof iteratee == 'function' ? (arrays.pop(), iteratee) : undefined; - return unzipWith(arrays, iteratee); - }); - - /*------------------------------------------------------------------------*/ - - /** - * Creates a `lodash` wrapper instance that wraps `value` with explicit method - * chain sequences enabled. The result of such sequences must be unwrapped - * with `_#value`. - * - * @static - * @memberOf _ - * @since 1.3.0 - * @category Seq - * @param {*} value The value to wrap. - * @returns {Object} Returns the new `lodash` wrapper instance. - * @example - * - * var users = [ - * { 'user': 'barney', 'age': 36 }, - * { 'user': 'fred', 'age': 40 }, - * { 'user': 'pebbles', 'age': 1 } - * ]; - * - * var youngest = _ - * .chain(users) - * .sortBy('age') - * .map(function(o) { - * return o.user + ' is ' + o.age; - * }) - * .head() - * .value(); - * // => 'pebbles is 1' - */ - function chain(value) { - var result = lodash(value); - result.__chain__ = true; - return result; - } - - /** - * This method invokes `interceptor` and returns `value`. The interceptor - * is invoked with one argument; (value). The purpose of this method is to - * "tap into" a method chain sequence in order to modify intermediate results. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Seq - * @param {*} value The value to provide to `interceptor`. - * @param {Function} interceptor The function to invoke. - * @returns {*} Returns `value`. - * @example - * - * _([1, 2, 3]) - * .tap(function(array) { - * // Mutate input array. - * array.pop(); - * }) - * .reverse() - * .value(); - * // => [2, 1] - */ - function tap(value, interceptor) { - interceptor(value); - return value; - } - - /** - * This method is like `_.tap` except that it returns the result of `interceptor`. - * The purpose of this method is to "pass thru" values replacing intermediate - * results in a method chain sequence. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Seq - * @param {*} value The value to provide to `interceptor`. - * @param {Function} interceptor The function to invoke. - * @returns {*} Returns the result of `interceptor`. - * @example - * - * _(' abc ') - * .chain() - * .trim() - * .thru(function(value) { - * return [value]; - * }) - * .value(); - * // => ['abc'] - */ - function thru(value, interceptor) { - return interceptor(value); - } - - /** - * This method is the wrapper version of `_.at`. - * - * @name at - * @memberOf _ - * @since 1.0.0 - * @category Seq - * @param {...(string|string[])} [paths] The property paths to pick. - * @returns {Object} Returns the new `lodash` wrapper instance. - * @example - * - * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] }; - * - * _(object).at(['a[0].b.c', 'a[1]']).value(); - * // => [3, 4] - */ - var wrapperAt = flatRest(function(paths) { - var length = paths.length, - start = length ? paths[0] : 0, - value = this.__wrapped__, - interceptor = function(object) { return baseAt(object, paths); }; - - if (length > 1 || this.__actions__.length || - !(value instanceof LazyWrapper) || !isIndex(start)) { - return this.thru(interceptor); - } - value = value.slice(start, +start + (length ? 1 : 0)); - value.__actions__.push({ - 'func': thru, - 'args': [interceptor], - 'thisArg': undefined - }); - return new LodashWrapper(value, this.__chain__).thru(function(array) { - if (length && !array.length) { - array.push(undefined); - } - return array; - }); - }); - - /** - * Creates a `lodash` wrapper instance with explicit method chain sequences enabled. - * - * @name chain - * @memberOf _ - * @since 0.1.0 - * @category Seq - * @returns {Object} Returns the new `lodash` wrapper instance. - * @example - * - * var users = [ - * { 'user': 'barney', 'age': 36 }, - * { 'user': 'fred', 'age': 40 } - * ]; - * - * // A sequence without explicit chaining. - * _(users).head(); - * // => { 'user': 'barney', 'age': 36 } - * - * // A sequence with explicit chaining. - * _(users) - * .chain() - * .head() - * .pick('user') - * .value(); - * // => { 'user': 'barney' } - */ - function wrapperChain() { - return chain(this); - } - - /** - * Executes the chain sequence and returns the wrapped result. - * - * @name commit - * @memberOf _ - * @since 3.2.0 - * @category Seq - * @returns {Object} Returns the new `lodash` wrapper instance. - * @example - * - * var array = [1, 2]; - * var wrapped = _(array).push(3); - * - * console.log(array); - * // => [1, 2] - * - * wrapped = wrapped.commit(); - * console.log(array); - * // => [1, 2, 3] - * - * wrapped.last(); - * // => 3 - * - * console.log(array); - * // => [1, 2, 3] - */ - function wrapperCommit() { - return new LodashWrapper(this.value(), this.__chain__); - } - - /** - * Gets the next value on a wrapped object following the - * [iterator protocol](https://mdn.io/iteration_protocols#iterator). - * - * @name next - * @memberOf _ - * @since 4.0.0 - * @category Seq - * @returns {Object} Returns the next iterator value. - * @example - * - * var wrapped = _([1, 2]); - * - * wrapped.next(); - * // => { 'done': false, 'value': 1 } - * - * wrapped.next(); - * // => { 'done': false, 'value': 2 } - * - * wrapped.next(); - * // => { 'done': true, 'value': undefined } - */ - function wrapperNext() { - if (this.__values__ === undefined) { - this.__values__ = toArray(this.value()); - } - var done = this.__index__ >= this.__values__.length, - value = done ? undefined : this.__values__[this.__index__++]; - - return { 'done': done, 'value': value }; - } - - /** - * Enables the wrapper to be iterable. - * - * @name Symbol.iterator - * @memberOf _ - * @since 4.0.0 - * @category Seq - * @returns {Object} Returns the wrapper object. - * @example - * - * var wrapped = _([1, 2]); - * - * wrapped[Symbol.iterator]() === wrapped; - * // => true - * - * Array.from(wrapped); - * // => [1, 2] - */ - function wrapperToIterator() { - return this; - } - - /** - * Creates a clone of the chain sequence planting `value` as the wrapped value. - * - * @name plant - * @memberOf _ - * @since 3.2.0 - * @category Seq - * @param {*} value The value to plant. - * @returns {Object} Returns the new `lodash` wrapper instance. - * @example - * - * function square(n) { - * return n * n; - * } - * - * var wrapped = _([1, 2]).map(square); - * var other = wrapped.plant([3, 4]); - * - * other.value(); - * // => [9, 16] - * - * wrapped.value(); - * // => [1, 4] - */ - function wrapperPlant(value) { - var result, - parent = this; - - while (parent instanceof baseLodash) { - var clone = wrapperClone(parent); - clone.__index__ = 0; - clone.__values__ = undefined; - if (result) { - previous.__wrapped__ = clone; - } else { - result = clone; - } - var previous = clone; - parent = parent.__wrapped__; - } - previous.__wrapped__ = value; - return result; - } - - /** - * This method is the wrapper version of `_.reverse`. - * - * **Note:** This method mutates the wrapped array. - * - * @name reverse - * @memberOf _ - * @since 0.1.0 - * @category Seq - * @returns {Object} Returns the new `lodash` wrapper instance. - * @example - * - * var array = [1, 2, 3]; - * - * _(array).reverse().value() - * // => [3, 2, 1] - * - * console.log(array); - * // => [3, 2, 1] - */ - function wrapperReverse() { - var value = this.__wrapped__; - if (value instanceof LazyWrapper) { - var wrapped = value; - if (this.__actions__.length) { - wrapped = new LazyWrapper(this); - } - wrapped = wrapped.reverse(); - wrapped.__actions__.push({ - 'func': thru, - 'args': [reverse], - 'thisArg': undefined - }); - return new LodashWrapper(wrapped, this.__chain__); - } - return this.thru(reverse); - } - - /** - * Executes the chain sequence to resolve the unwrapped value. - * - * @name value - * @memberOf _ - * @since 0.1.0 - * @alias toJSON, valueOf - * @category Seq - * @returns {*} Returns the resolved unwrapped value. - * @example - * - * _([1, 2, 3]).value(); - * // => [1, 2, 3] - */ - function wrapperValue() { - return baseWrapperValue(this.__wrapped__, this.__actions__); - } - - /*------------------------------------------------------------------------*/ - - /** - * Creates an object composed of keys generated from the results of running - * each element of `collection` thru `iteratee`. The corresponding value of - * each key is the number of times the key was returned by `iteratee`. The - * iteratee is invoked with one argument: (value). - * - * @static - * @memberOf _ - * @since 0.5.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} [iteratee=_.identity] The iteratee to transform keys. - * @returns {Object} Returns the composed aggregate object. - * @example - * - * _.countBy([6.1, 4.2, 6.3], Math.floor); - * // => { '4': 1, '6': 2 } - * - * // The `_.property` iteratee shorthand. - * _.countBy(['one', 'two', 'three'], 'length'); - * // => { '3': 2, '5': 1 } - */ - var countBy = createAggregator(function(result, value, key) { - if (hasOwnProperty.call(result, key)) { - ++result[key]; - } else { - baseAssignValue(result, key, 1); - } - }); - - /** - * Checks if `predicate` returns truthy for **all** elements of `collection`. - * Iteration is stopped once `predicate` returns falsey. The predicate is - * invoked with three arguments: (value, index|key, collection). - * - * **Note:** This method returns `true` for - * [empty collections](https://en.wikipedia.org/wiki/Empty_set) because - * [everything is true](https://en.wikipedia.org/wiki/Vacuous_truth) of - * elements of empty collections. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} [predicate=_.identity] The function invoked per iteration. - * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. - * @returns {boolean} Returns `true` if all elements pass the predicate check, - * else `false`. - * @example - * - * _.every([true, 1, null, 'yes'], Boolean); - * // => false - * - * var users = [ - * { 'user': 'barney', 'age': 36, 'active': false }, - * { 'user': 'fred', 'age': 40, 'active': false } - * ]; - * - * // The `_.matches` iteratee shorthand. - * _.every(users, { 'user': 'barney', 'active': false }); - * // => false - * - * // The `_.matchesProperty` iteratee shorthand. - * _.every(users, ['active', false]); - * // => true - * - * // The `_.property` iteratee shorthand. - * _.every(users, 'active'); - * // => false - */ - function every(collection, predicate, guard) { - var func = isArray(collection) ? arrayEvery : baseEvery; - if (guard && isIterateeCall(collection, predicate, guard)) { - predicate = undefined; - } - return func(collection, getIteratee(predicate, 3)); - } - - /** - * Iterates over elements of `collection`, returning an array of all elements - * `predicate` returns truthy for. The predicate is invoked with three - * arguments: (value, index|key, collection). - * - * **Note:** Unlike `_.remove`, this method returns a new array. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} [predicate=_.identity] The function invoked per iteration. - * @returns {Array} Returns the new filtered array. - * @see _.reject - * @example - * - * var users = [ - * { 'user': 'barney', 'age': 36, 'active': true }, - * { 'user': 'fred', 'age': 40, 'active': false } - * ]; - * - * _.filter(users, function(o) { return !o.active; }); - * // => objects for ['fred'] - * - * // The `_.matches` iteratee shorthand. - * _.filter(users, { 'age': 36, 'active': true }); - * // => objects for ['barney'] - * - * // The `_.matchesProperty` iteratee shorthand. - * _.filter(users, ['active', false]); - * // => objects for ['fred'] - * - * // The `_.property` iteratee shorthand. - * _.filter(users, 'active'); - * // => objects for ['barney'] - */ - function filter(collection, predicate) { - var func = isArray(collection) ? arrayFilter : baseFilter; - return func(collection, getIteratee(predicate, 3)); - } - - /** - * Iterates over elements of `collection`, returning the first element - * `predicate` returns truthy for. The predicate is invoked with three - * arguments: (value, index|key, collection). - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Collection - * @param {Array|Object} collection The collection to inspect. - * @param {Function} [predicate=_.identity] The function invoked per iteration. - * @param {number} [fromIndex=0] The index to search from. - * @returns {*} Returns the matched element, else `undefined`. - * @example - * - * var users = [ - * { 'user': 'barney', 'age': 36, 'active': true }, - * { 'user': 'fred', 'age': 40, 'active': false }, - * { 'user': 'pebbles', 'age': 1, 'active': true } - * ]; - * - * _.find(users, function(o) { return o.age < 40; }); - * // => object for 'barney' - * - * // The `_.matches` iteratee shorthand. - * _.find(users, { 'age': 1, 'active': true }); - * // => object for 'pebbles' - * - * // The `_.matchesProperty` iteratee shorthand. - * _.find(users, ['active', false]); - * // => object for 'fred' - * - * // The `_.property` iteratee shorthand. - * _.find(users, 'active'); - * // => object for 'barney' - */ - var find = createFind(findIndex); - - /** - * This method is like `_.find` except that it iterates over elements of - * `collection` from right to left. - * - * @static - * @memberOf _ - * @since 2.0.0 - * @category Collection - * @param {Array|Object} collection The collection to inspect. - * @param {Function} [predicate=_.identity] The function invoked per iteration. - * @param {number} [fromIndex=collection.length-1] The index to search from. - * @returns {*} Returns the matched element, else `undefined`. - * @example - * - * _.findLast([1, 2, 3, 4], function(n) { - * return n % 2 == 1; - * }); - * // => 3 - */ - var findLast = createFind(findLastIndex); - - /** - * Creates a flattened array of values by running each element in `collection` - * thru `iteratee` and flattening the mapped results. The iteratee is invoked - * with three arguments: (value, index|key, collection). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @returns {Array} Returns the new flattened array. - * @example - * - * function duplicate(n) { - * return [n, n]; - * } - * - * _.flatMap([1, 2], duplicate); - * // => [1, 1, 2, 2] - */ - function flatMap(collection, iteratee) { - return baseFlatten(map(collection, iteratee), 1); - } - - /** - * This method is like `_.flatMap` except that it recursively flattens the - * mapped results. - * - * @static - * @memberOf _ - * @since 4.7.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @returns {Array} Returns the new flattened array. - * @example - * - * function duplicate(n) { - * return [[[n, n]]]; - * } - * - * _.flatMapDeep([1, 2], duplicate); - * // => [1, 1, 2, 2] - */ - function flatMapDeep(collection, iteratee) { - return baseFlatten(map(collection, iteratee), INFINITY); - } - - /** - * This method is like `_.flatMap` except that it recursively flattens the - * mapped results up to `depth` times. - * - * @static - * @memberOf _ - * @since 4.7.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @param {number} [depth=1] The maximum recursion depth. - * @returns {Array} Returns the new flattened array. - * @example - * - * function duplicate(n) { - * return [[[n, n]]]; - * } - * - * _.flatMapDepth([1, 2], duplicate, 2); - * // => [[1, 1], [2, 2]] - */ - function flatMapDepth(collection, iteratee, depth) { - depth = depth === undefined ? 1 : toInteger(depth); - return baseFlatten(map(collection, iteratee), depth); - } - - /** - * Iterates over elements of `collection` and invokes `iteratee` for each element. - * The iteratee is invoked with three arguments: (value, index|key, collection). - * Iteratee functions may exit iteration early by explicitly returning `false`. - * - * **Note:** As with other "Collections" methods, objects with a "length" - * property are iterated like arrays. To avoid this behavior use `_.forIn` - * or `_.forOwn` for object iteration. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @alias each - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @returns {Array|Object} Returns `collection`. - * @see _.forEachRight - * @example - * - * _.forEach([1, 2], function(value) { - * console.log(value); - * }); - * // => Logs `1` then `2`. - * - * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) { - * console.log(key); - * }); - * // => Logs 'a' then 'b' (iteration order is not guaranteed). - */ - function forEach(collection, iteratee) { - var func = isArray(collection) ? arrayEach : baseEach; - return func(collection, getIteratee(iteratee, 3)); - } - - /** - * This method is like `_.forEach` except that it iterates over elements of - * `collection` from right to left. - * - * @static - * @memberOf _ - * @since 2.0.0 - * @alias eachRight - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @returns {Array|Object} Returns `collection`. - * @see _.forEach - * @example - * - * _.forEachRight([1, 2], function(value) { - * console.log(value); - * }); - * // => Logs `2` then `1`. - */ - function forEachRight(collection, iteratee) { - var func = isArray(collection) ? arrayEachRight : baseEachRight; - return func(collection, getIteratee(iteratee, 3)); - } - - /** - * Creates an object composed of keys generated from the results of running - * each element of `collection` thru `iteratee`. The order of grouped values - * is determined by the order they occur in `collection`. The corresponding - * value of each key is an array of elements responsible for generating the - * key. The iteratee is invoked with one argument: (value). - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} [iteratee=_.identity] The iteratee to transform keys. - * @returns {Object} Returns the composed aggregate object. - * @example - * - * _.groupBy([6.1, 4.2, 6.3], Math.floor); - * // => { '4': [4.2], '6': [6.1, 6.3] } - * - * // The `_.property` iteratee shorthand. - * _.groupBy(['one', 'two', 'three'], 'length'); - * // => { '3': ['one', 'two'], '5': ['three'] } - */ - var groupBy = createAggregator(function(result, value, key) { - if (hasOwnProperty.call(result, key)) { - result[key].push(value); - } else { - baseAssignValue(result, key, [value]); - } - }); - - /** - * Checks if `value` is in `collection`. If `collection` is a string, it's - * checked for a substring of `value`, otherwise - * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) - * is used for equality comparisons. If `fromIndex` is negative, it's used as - * the offset from the end of `collection`. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Collection - * @param {Array|Object|string} collection The collection to inspect. - * @param {*} value The value to search for. - * @param {number} [fromIndex=0] The index to search from. - * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`. - * @returns {boolean} Returns `true` if `value` is found, else `false`. - * @example - * - * _.includes([1, 2, 3], 1); - * // => true - * - * _.includes([1, 2, 3], 1, 2); - * // => false - * - * _.includes({ 'a': 1, 'b': 2 }, 1); - * // => true - * - * _.includes('abcd', 'bc'); - * // => true - */ - function includes(collection, value, fromIndex, guard) { - collection = isArrayLike(collection) ? collection : values(collection); - fromIndex = (fromIndex && !guard) ? toInteger(fromIndex) : 0; - - var length = collection.length; - if (fromIndex < 0) { - fromIndex = nativeMax(length + fromIndex, 0); - } - return isString(collection) - ? (fromIndex <= length && collection.indexOf(value, fromIndex) > -1) - : (!!length && baseIndexOf(collection, value, fromIndex) > -1); - } - - /** - * Invokes the method at `path` of each element in `collection`, returning - * an array of the results of each invoked method. Any additional arguments - * are provided to each invoked method. If `path` is a function, it's invoked - * for, and `this` bound to, each element in `collection`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Array|Function|string} path The path of the method to invoke or - * the function invoked per iteration. - * @param {...*} [args] The arguments to invoke each method with. - * @returns {Array} Returns the array of results. - * @example - * - * _.invokeMap([[5, 1, 7], [3, 2, 1]], 'sort'); - * // => [[1, 5, 7], [1, 2, 3]] - * - * _.invokeMap([123, 456], String.prototype.split, ''); - * // => [['1', '2', '3'], ['4', '5', '6']] - */ - var invokeMap = baseRest(function(collection, path, args) { - var index = -1, - isFunc = typeof path == 'function', - result = isArrayLike(collection) ? Array(collection.length) : []; - - baseEach(collection, function(value) { - result[++index] = isFunc ? apply(path, value, args) : baseInvoke(value, path, args); - }); - return result; - }); - - /** - * Creates an object composed of keys generated from the results of running - * each element of `collection` thru `iteratee`. The corresponding value of - * each key is the last element responsible for generating the key. The - * iteratee is invoked with one argument: (value). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} [iteratee=_.identity] The iteratee to transform keys. - * @returns {Object} Returns the composed aggregate object. - * @example - * - * var array = [ - * { 'dir': 'left', 'code': 97 }, - * { 'dir': 'right', 'code': 100 } - * ]; - * - * _.keyBy(array, function(o) { - * return String.fromCharCode(o.code); - * }); - * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } } - * - * _.keyBy(array, 'dir'); - * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } } - */ - var keyBy = createAggregator(function(result, value, key) { - baseAssignValue(result, key, value); - }); - - /** - * Creates an array of values by running each element in `collection` thru - * `iteratee`. The iteratee is invoked with three arguments: - * (value, index|key, collection). - * - * Many lodash methods are guarded to work as iteratees for methods like - * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`. - * - * The guarded methods are: - * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`, - * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`, - * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`, - * `template`, `trim`, `trimEnd`, `trimStart`, and `words` - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @returns {Array} Returns the new mapped array. - * @example - * - * function square(n) { - * return n * n; - * } - * - * _.map([4, 8], square); - * // => [16, 64] - * - * _.map({ 'a': 4, 'b': 8 }, square); - * // => [16, 64] (iteration order is not guaranteed) - * - * var users = [ - * { 'user': 'barney' }, - * { 'user': 'fred' } - * ]; - * - * // The `_.property` iteratee shorthand. - * _.map(users, 'user'); - * // => ['barney', 'fred'] - */ - function map(collection, iteratee) { - var func = isArray(collection) ? arrayMap : baseMap; - return func(collection, getIteratee(iteratee, 3)); - } - - /** - * This method is like `_.sortBy` except that it allows specifying the sort - * orders of the iteratees to sort by. If `orders` is unspecified, all values - * are sorted in ascending order. Otherwise, specify an order of "desc" for - * descending or "asc" for ascending sort order of corresponding values. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Array[]|Function[]|Object[]|string[]} [iteratees=[_.identity]] - * The iteratees to sort by. - * @param {string[]} [orders] The sort orders of `iteratees`. - * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`. - * @returns {Array} Returns the new sorted array. - * @example - * - * var users = [ - * { 'user': 'fred', 'age': 48 }, - * { 'user': 'barney', 'age': 34 }, - * { 'user': 'fred', 'age': 40 }, - * { 'user': 'barney', 'age': 36 } - * ]; - * - * // Sort by `user` in ascending order and by `age` in descending order. - * _.orderBy(users, ['user', 'age'], ['asc', 'desc']); - * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]] - */ - function orderBy(collection, iteratees, orders, guard) { - if (collection == null) { - return []; - } - if (!isArray(iteratees)) { - iteratees = iteratees == null ? [] : [iteratees]; - } - orders = guard ? undefined : orders; - if (!isArray(orders)) { - orders = orders == null ? [] : [orders]; - } - return baseOrderBy(collection, iteratees, orders); - } - - /** - * Creates an array of elements split into two groups, the first of which - * contains elements `predicate` returns truthy for, the second of which - * contains elements `predicate` returns falsey for. The predicate is - * invoked with one argument: (value). - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} [predicate=_.identity] The function invoked per iteration. - * @returns {Array} Returns the array of grouped elements. - * @example - * - * var users = [ - * { 'user': 'barney', 'age': 36, 'active': false }, - * { 'user': 'fred', 'age': 40, 'active': true }, - * { 'user': 'pebbles', 'age': 1, 'active': false } - * ]; - * - * _.partition(users, function(o) { return o.active; }); - * // => objects for [['fred'], ['barney', 'pebbles']] - * - * // The `_.matches` iteratee shorthand. - * _.partition(users, { 'age': 1, 'active': false }); - * // => objects for [['pebbles'], ['barney', 'fred']] - * - * // The `_.matchesProperty` iteratee shorthand. - * _.partition(users, ['active', false]); - * // => objects for [['barney', 'pebbles'], ['fred']] - * - * // The `_.property` iteratee shorthand. - * _.partition(users, 'active'); - * // => objects for [['fred'], ['barney', 'pebbles']] - */ - var partition = createAggregator(function(result, value, key) { - result[key ? 0 : 1].push(value); - }, function() { return [[], []]; }); - - /** - * Reduces `collection` to a value which is the accumulated result of running - * each element in `collection` thru `iteratee`, where each successive - * invocation is supplied the return value of the previous. If `accumulator` - * is not given, the first element of `collection` is used as the initial - * value. The iteratee is invoked with four arguments: - * (accumulator, value, index|key, collection). - * - * Many lodash methods are guarded to work as iteratees for methods like - * `_.reduce`, `_.reduceRight`, and `_.transform`. - * - * The guarded methods are: - * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`, - * and `sortBy` - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @param {*} [accumulator] The initial value. - * @returns {*} Returns the accumulated value. - * @see _.reduceRight - * @example - * - * _.reduce([1, 2], function(sum, n) { - * return sum + n; - * }, 0); - * // => 3 - * - * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) { - * (result[value] || (result[value] = [])).push(key); - * return result; - * }, {}); - * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed) - */ - function reduce(collection, iteratee, accumulator) { - var func = isArray(collection) ? arrayReduce : baseReduce, - initAccum = arguments.length < 3; - - return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEach); - } - - /** - * This method is like `_.reduce` except that it iterates over elements of - * `collection` from right to left. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @param {*} [accumulator] The initial value. - * @returns {*} Returns the accumulated value. - * @see _.reduce - * @example - * - * var array = [[0, 1], [2, 3], [4, 5]]; - * - * _.reduceRight(array, function(flattened, other) { - * return flattened.concat(other); - * }, []); - * // => [4, 5, 2, 3, 0, 1] - */ - function reduceRight(collection, iteratee, accumulator) { - var func = isArray(collection) ? arrayReduceRight : baseReduce, - initAccum = arguments.length < 3; - - return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEachRight); - } - - /** - * The opposite of `_.filter`; this method returns the elements of `collection` - * that `predicate` does **not** return truthy for. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} [predicate=_.identity] The function invoked per iteration. - * @returns {Array} Returns the new filtered array. - * @see _.filter - * @example - * - * var users = [ - * { 'user': 'barney', 'age': 36, 'active': false }, - * { 'user': 'fred', 'age': 40, 'active': true } - * ]; - * - * _.reject(users, function(o) { return !o.active; }); - * // => objects for ['fred'] - * - * // The `_.matches` iteratee shorthand. - * _.reject(users, { 'age': 40, 'active': true }); - * // => objects for ['barney'] - * - * // The `_.matchesProperty` iteratee shorthand. - * _.reject(users, ['active', false]); - * // => objects for ['fred'] - * - * // The `_.property` iteratee shorthand. - * _.reject(users, 'active'); - * // => objects for ['barney'] - */ - function reject(collection, predicate) { - var func = isArray(collection) ? arrayFilter : baseFilter; - return func(collection, negate(getIteratee(predicate, 3))); - } - - /** - * Gets a random element from `collection`. - * - * @static - * @memberOf _ - * @since 2.0.0 - * @category Collection - * @param {Array|Object} collection The collection to sample. - * @returns {*} Returns the random element. - * @example - * - * _.sample([1, 2, 3, 4]); - * // => 2 - */ - function sample(collection) { - var func = isArray(collection) ? arraySample : baseSample; - return func(collection); - } - - /** - * Gets `n` random elements at unique keys from `collection` up to the - * size of `collection`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Collection - * @param {Array|Object} collection The collection to sample. - * @param {number} [n=1] The number of elements to sample. - * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. - * @returns {Array} Returns the random elements. - * @example - * - * _.sampleSize([1, 2, 3], 2); - * // => [3, 1] - * - * _.sampleSize([1, 2, 3], 4); - * // => [2, 3, 1] - */ - function sampleSize(collection, n, guard) { - if ((guard ? isIterateeCall(collection, n, guard) : n === undefined)) { - n = 1; - } else { - n = toInteger(n); - } - var func = isArray(collection) ? arraySampleSize : baseSampleSize; - return func(collection, n); - } - - /** - * Creates an array of shuffled values, using a version of the - * [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher-Yates_shuffle). - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Collection - * @param {Array|Object} collection The collection to shuffle. - * @returns {Array} Returns the new shuffled array. - * @example - * - * _.shuffle([1, 2, 3, 4]); - * // => [4, 1, 3, 2] - */ - function shuffle(collection) { - var func = isArray(collection) ? arrayShuffle : baseShuffle; - return func(collection); - } - - /** - * Gets the size of `collection` by returning its length for array-like - * values or the number of own enumerable string keyed properties for objects. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Collection - * @param {Array|Object|string} collection The collection to inspect. - * @returns {number} Returns the collection size. - * @example - * - * _.size([1, 2, 3]); - * // => 3 - * - * _.size({ 'a': 1, 'b': 2 }); - * // => 2 - * - * _.size('pebbles'); - * // => 7 - */ - function size(collection) { - if (collection == null) { - return 0; - } - if (isArrayLike(collection)) { - return isString(collection) ? stringSize(collection) : collection.length; - } - var tag = getTag(collection); - if (tag == mapTag || tag == setTag) { - return collection.size; - } - return baseKeys(collection).length; - } - - /** - * Checks if `predicate` returns truthy for **any** element of `collection`. - * Iteration is stopped once `predicate` returns truthy. The predicate is - * invoked with three arguments: (value, index|key, collection). - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {Function} [predicate=_.identity] The function invoked per iteration. - * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. - * @returns {boolean} Returns `true` if any element passes the predicate check, - * else `false`. - * @example - * - * _.some([null, 0, 'yes', false], Boolean); - * // => true - * - * var users = [ - * { 'user': 'barney', 'active': true }, - * { 'user': 'fred', 'active': false } - * ]; - * - * // The `_.matches` iteratee shorthand. - * _.some(users, { 'user': 'barney', 'active': false }); - * // => false - * - * // The `_.matchesProperty` iteratee shorthand. - * _.some(users, ['active', false]); - * // => true - * - * // The `_.property` iteratee shorthand. - * _.some(users, 'active'); - * // => true - */ - function some(collection, predicate, guard) { - var func = isArray(collection) ? arraySome : baseSome; - if (guard && isIterateeCall(collection, predicate, guard)) { - predicate = undefined; - } - return func(collection, getIteratee(predicate, 3)); - } - - /** - * Creates an array of elements, sorted in ascending order by the results of - * running each element in a collection thru each iteratee. This method - * performs a stable sort, that is, it preserves the original sort order of - * equal elements. The iteratees are invoked with one argument: (value). - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Collection - * @param {Array|Object} collection The collection to iterate over. - * @param {...(Function|Function[])} [iteratees=[_.identity]] - * The iteratees to sort by. - * @returns {Array} Returns the new sorted array. - * @example - * - * var users = [ - * { 'user': 'fred', 'age': 48 }, - * { 'user': 'barney', 'age': 36 }, - * { 'user': 'fred', 'age': 40 }, - * { 'user': 'barney', 'age': 34 } - * ]; - * - * _.sortBy(users, [function(o) { return o.user; }]); - * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]] - * - * _.sortBy(users, ['user', 'age']); - * // => objects for [['barney', 34], ['barney', 36], ['fred', 40], ['fred', 48]] - */ - var sortBy = baseRest(function(collection, iteratees) { - if (collection == null) { - return []; - } - var length = iteratees.length; - if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) { - iteratees = []; - } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) { - iteratees = [iteratees[0]]; - } - return baseOrderBy(collection, baseFlatten(iteratees, 1), []); - }); - - /*------------------------------------------------------------------------*/ - - /** - * Gets the timestamp of the number of milliseconds that have elapsed since - * the Unix epoch (1 January 1970 00:00:00 UTC). - * - * @static - * @memberOf _ - * @since 2.4.0 - * @category Date - * @returns {number} Returns the timestamp. - * @example - * - * _.defer(function(stamp) { - * console.log(_.now() - stamp); - * }, _.now()); - * // => Logs the number of milliseconds it took for the deferred invocation. - */ - var now = ctxNow || function() { - return root.Date.now(); - }; - - /*------------------------------------------------------------------------*/ - - /** - * The opposite of `_.before`; this method creates a function that invokes - * `func` once it's called `n` or more times. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Function - * @param {number} n The number of calls before `func` is invoked. - * @param {Function} func The function to restrict. - * @returns {Function} Returns the new restricted function. - * @example - * - * var saves = ['profile', 'settings']; - * - * var done = _.after(saves.length, function() { - * console.log('done saving!'); - * }); - * - * _.forEach(saves, function(type) { - * asyncSave({ 'type': type, 'complete': done }); - * }); - * // => Logs 'done saving!' after the two async saves have completed. - */ - function after(n, func) { - if (typeof func != 'function') { - throw new TypeError(FUNC_ERROR_TEXT); - } - n = toInteger(n); - return function() { - if (--n < 1) { - return func.apply(this, arguments); - } - }; - } - - /** - * Creates a function that invokes `func`, with up to `n` arguments, - * ignoring any additional arguments. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Function - * @param {Function} func The function to cap arguments for. - * @param {number} [n=func.length] The arity cap. - * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. - * @returns {Function} Returns the new capped function. - * @example - * - * _.map(['6', '8', '10'], _.ary(parseInt, 1)); - * // => [6, 8, 10] - */ - function ary(func, n, guard) { - n = guard ? undefined : n; - n = (func && n == null) ? func.length : n; - return createWrap(func, WRAP_ARY_FLAG, undefined, undefined, undefined, undefined, n); - } - - /** - * Creates a function that invokes `func`, with the `this` binding and arguments - * of the created function, while it's called less than `n` times. Subsequent - * calls to the created function return the result of the last `func` invocation. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Function - * @param {number} n The number of calls at which `func` is no longer invoked. - * @param {Function} func The function to restrict. - * @returns {Function} Returns the new restricted function. - * @example - * - * jQuery(element).on('click', _.before(5, addContactToList)); - * // => Allows adding up to 4 contacts to the list. - */ - function before(n, func) { - var result; - if (typeof func != 'function') { - throw new TypeError(FUNC_ERROR_TEXT); - } - n = toInteger(n); - return function() { - if (--n > 0) { - result = func.apply(this, arguments); - } - if (n <= 1) { - func = undefined; - } - return result; - }; - } - - /** - * Creates a function that invokes `func` with the `this` binding of `thisArg` - * and `partials` prepended to the arguments it receives. - * - * The `_.bind.placeholder` value, which defaults to `_` in monolithic builds, - * may be used as a placeholder for partially applied arguments. - * - * **Note:** Unlike native `Function#bind`, this method doesn't set the "length" - * property of bound functions. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Function - * @param {Function} func The function to bind. - * @param {*} thisArg The `this` binding of `func`. - * @param {...*} [partials] The arguments to be partially applied. - * @returns {Function} Returns the new bound function. - * @example - * - * function greet(greeting, punctuation) { - * return greeting + ' ' + this.user + punctuation; - * } - * - * var object = { 'user': 'fred' }; - * - * var bound = _.bind(greet, object, 'hi'); - * bound('!'); - * // => 'hi fred!' - * - * // Bound with placeholders. - * var bound = _.bind(greet, object, _, '!'); - * bound('hi'); - * // => 'hi fred!' - */ - var bind = baseRest(function(func, thisArg, partials) { - var bitmask = WRAP_BIND_FLAG; - if (partials.length) { - var holders = replaceHolders(partials, getHolder(bind)); - bitmask |= WRAP_PARTIAL_FLAG; - } - return createWrap(func, bitmask, thisArg, partials, holders); - }); - - /** - * Creates a function that invokes the method at `object[key]` with `partials` - * prepended to the arguments it receives. - * - * This method differs from `_.bind` by allowing bound functions to reference - * methods that may be redefined or don't yet exist. See - * [Peter Michaux's article](http://peter.michaux.ca/articles/lazy-function-definition-pattern) - * for more details. - * - * The `_.bindKey.placeholder` value, which defaults to `_` in monolithic - * builds, may be used as a placeholder for partially applied arguments. - * - * @static - * @memberOf _ - * @since 0.10.0 - * @category Function - * @param {Object} object The object to invoke the method on. - * @param {string} key The key of the method. - * @param {...*} [partials] The arguments to be partially applied. - * @returns {Function} Returns the new bound function. - * @example - * - * var object = { - * 'user': 'fred', - * 'greet': function(greeting, punctuation) { - * return greeting + ' ' + this.user + punctuation; - * } - * }; - * - * var bound = _.bindKey(object, 'greet', 'hi'); - * bound('!'); - * // => 'hi fred!' - * - * object.greet = function(greeting, punctuation) { - * return greeting + 'ya ' + this.user + punctuation; - * }; - * - * bound('!'); - * // => 'hiya fred!' - * - * // Bound with placeholders. - * var bound = _.bindKey(object, 'greet', _, '!'); - * bound('hi'); - * // => 'hiya fred!' - */ - var bindKey = baseRest(function(object, key, partials) { - var bitmask = WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG; - if (partials.length) { - var holders = replaceHolders(partials, getHolder(bindKey)); - bitmask |= WRAP_PARTIAL_FLAG; - } - return createWrap(key, bitmask, object, partials, holders); - }); - - /** - * Creates a function that accepts arguments of `func` and either invokes - * `func` returning its result, if at least `arity` number of arguments have - * been provided, or returns a function that accepts the remaining `func` - * arguments, and so on. The arity of `func` may be specified if `func.length` - * is not sufficient. - * - * The `_.curry.placeholder` value, which defaults to `_` in monolithic builds, - * may be used as a placeholder for provided arguments. - * - * **Note:** This method doesn't set the "length" property of curried functions. - * - * @static - * @memberOf _ - * @since 2.0.0 - * @category Function - * @param {Function} func The function to curry. - * @param {number} [arity=func.length] The arity of `func`. - * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. - * @returns {Function} Returns the new curried function. - * @example - * - * var abc = function(a, b, c) { - * return [a, b, c]; - * }; - * - * var curried = _.curry(abc); - * - * curried(1)(2)(3); - * // => [1, 2, 3] - * - * curried(1, 2)(3); - * // => [1, 2, 3] - * - * curried(1, 2, 3); - * // => [1, 2, 3] - * - * // Curried with placeholders. - * curried(1)(_, 3)(2); - * // => [1, 2, 3] - */ - function curry(func, arity, guard) { - arity = guard ? undefined : arity; - var result = createWrap(func, WRAP_CURRY_FLAG, undefined, undefined, undefined, undefined, undefined, arity); - result.placeholder = curry.placeholder; - return result; - } - - /** - * This method is like `_.curry` except that arguments are applied to `func` - * in the manner of `_.partialRight` instead of `_.partial`. - * - * The `_.curryRight.placeholder` value, which defaults to `_` in monolithic - * builds, may be used as a placeholder for provided arguments. - * - * **Note:** This method doesn't set the "length" property of curried functions. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Function - * @param {Function} func The function to curry. - * @param {number} [arity=func.length] The arity of `func`. - * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. - * @returns {Function} Returns the new curried function. - * @example - * - * var abc = function(a, b, c) { - * return [a, b, c]; - * }; - * - * var curried = _.curryRight(abc); - * - * curried(3)(2)(1); - * // => [1, 2, 3] - * - * curried(2, 3)(1); - * // => [1, 2, 3] - * - * curried(1, 2, 3); - * // => [1, 2, 3] - * - * // Curried with placeholders. - * curried(3)(1, _)(2); - * // => [1, 2, 3] - */ - function curryRight(func, arity, guard) { - arity = guard ? undefined : arity; - var result = createWrap(func, WRAP_CURRY_RIGHT_FLAG, undefined, undefined, undefined, undefined, undefined, arity); - result.placeholder = curryRight.placeholder; - return result; - } - - /** - * Creates a debounced function that delays invoking `func` until after `wait` - * milliseconds have elapsed since the last time the debounced function was - * invoked. The debounced function comes with a `cancel` method to cancel - * delayed `func` invocations and a `flush` method to immediately invoke them. - * Provide `options` to indicate whether `func` should be invoked on the - * leading and/or trailing edge of the `wait` timeout. The `func` is invoked - * with the last arguments provided to the debounced function. Subsequent - * calls to the debounced function return the result of the last `func` - * invocation. - * - * **Note:** If `leading` and `trailing` options are `true`, `func` is - * invoked on the trailing edge of the timeout only if the debounced function - * is invoked more than once during the `wait` timeout. - * - * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred - * until to the next tick, similar to `setTimeout` with a timeout of `0`. - * - * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/) - * for details over the differences between `_.debounce` and `_.throttle`. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Function - * @param {Function} func The function to debounce. - * @param {number} [wait=0] The number of milliseconds to delay. - * @param {Object} [options={}] The options object. - * @param {boolean} [options.leading=false] - * Specify invoking on the leading edge of the timeout. - * @param {number} [options.maxWait] - * The maximum time `func` is allowed to be delayed before it's invoked. - * @param {boolean} [options.trailing=true] - * Specify invoking on the trailing edge of the timeout. - * @returns {Function} Returns the new debounced function. - * @example - * - * // Avoid costly calculations while the window size is in flux. - * jQuery(window).on('resize', _.debounce(calculateLayout, 150)); - * - * // Invoke `sendMail` when clicked, debouncing subsequent calls. - * jQuery(element).on('click', _.debounce(sendMail, 300, { - * 'leading': true, - * 'trailing': false - * })); - * - * // Ensure `batchLog` is invoked once after 1 second of debounced calls. - * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 }); - * var source = new EventSource('/stream'); - * jQuery(source).on('message', debounced); - * - * // Cancel the trailing debounced invocation. - * jQuery(window).on('popstate', debounced.cancel); - */ - function debounce(func, wait, options) { - var lastArgs, - lastThis, - maxWait, - result, - timerId, - lastCallTime, - lastInvokeTime = 0, - leading = false, - maxing = false, - trailing = true; - - if (typeof func != 'function') { - throw new TypeError(FUNC_ERROR_TEXT); - } - wait = toNumber(wait) || 0; - if (isObject(options)) { - leading = !!options.leading; - maxing = 'maxWait' in options; - maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait; - trailing = 'trailing' in options ? !!options.trailing : trailing; - } - - function invokeFunc(time) { - var args = lastArgs, - thisArg = lastThis; - - lastArgs = lastThis = undefined; - lastInvokeTime = time; - result = func.apply(thisArg, args); - return result; - } - - function leadingEdge(time) { - // Reset any `maxWait` timer. - lastInvokeTime = time; - // Start the timer for the trailing edge. - timerId = setTimeout(timerExpired, wait); - // Invoke the leading edge. - return leading ? invokeFunc(time) : result; - } - - function remainingWait(time) { - var timeSinceLastCall = time - lastCallTime, - timeSinceLastInvoke = time - lastInvokeTime, - timeWaiting = wait - timeSinceLastCall; - - return maxing - ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke) - : timeWaiting; - } - - function shouldInvoke(time) { - var timeSinceLastCall = time - lastCallTime, - timeSinceLastInvoke = time - lastInvokeTime; - - // Either this is the first call, activity has stopped and we're at the - // trailing edge, the system time has gone backwards and we're treating - // it as the trailing edge, or we've hit the `maxWait` limit. - return (lastCallTime === undefined || (timeSinceLastCall >= wait) || - (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait)); - } - - function timerExpired() { - var time = now(); - if (shouldInvoke(time)) { - return trailingEdge(time); - } - // Restart the timer. - timerId = setTimeout(timerExpired, remainingWait(time)); - } - - function trailingEdge(time) { - timerId = undefined; - - // Only invoke if we have `lastArgs` which means `func` has been - // debounced at least once. - if (trailing && lastArgs) { - return invokeFunc(time); - } - lastArgs = lastThis = undefined; - return result; - } - - function cancel() { - if (timerId !== undefined) { - clearTimeout(timerId); - } - lastInvokeTime = 0; - lastArgs = lastCallTime = lastThis = timerId = undefined; - } - - function flush() { - return timerId === undefined ? result : trailingEdge(now()); - } - - function debounced() { - var time = now(), - isInvoking = shouldInvoke(time); - - lastArgs = arguments; - lastThis = this; - lastCallTime = time; - - if (isInvoking) { - if (timerId === undefined) { - return leadingEdge(lastCallTime); - } - if (maxing) { - // Handle invocations in a tight loop. - timerId = setTimeout(timerExpired, wait); - return invokeFunc(lastCallTime); - } - } - if (timerId === undefined) { - timerId = setTimeout(timerExpired, wait); - } - return result; - } - debounced.cancel = cancel; - debounced.flush = flush; - return debounced; - } - - /** - * Defers invoking the `func` until the current call stack has cleared. Any - * additional arguments are provided to `func` when it's invoked. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Function - * @param {Function} func The function to defer. - * @param {...*} [args] The arguments to invoke `func` with. - * @returns {number} Returns the timer id. - * @example - * - * _.defer(function(text) { - * console.log(text); - * }, 'deferred'); - * // => Logs 'deferred' after one millisecond. - */ - var defer = baseRest(function(func, args) { - return baseDelay(func, 1, args); - }); - - /** - * Invokes `func` after `wait` milliseconds. Any additional arguments are - * provided to `func` when it's invoked. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Function - * @param {Function} func The function to delay. - * @param {number} wait The number of milliseconds to delay invocation. - * @param {...*} [args] The arguments to invoke `func` with. - * @returns {number} Returns the timer id. - * @example - * - * _.delay(function(text) { - * console.log(text); - * }, 1000, 'later'); - * // => Logs 'later' after one second. - */ - var delay = baseRest(function(func, wait, args) { - return baseDelay(func, toNumber(wait) || 0, args); - }); - - /** - * Creates a function that invokes `func` with arguments reversed. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Function - * @param {Function} func The function to flip arguments for. - * @returns {Function} Returns the new flipped function. - * @example - * - * var flipped = _.flip(function() { - * return _.toArray(arguments); - * }); - * - * flipped('a', 'b', 'c', 'd'); - * // => ['d', 'c', 'b', 'a'] - */ - function flip(func) { - return createWrap(func, WRAP_FLIP_FLAG); - } - - /** - * Creates a function that memoizes the result of `func`. If `resolver` is - * provided, it determines the cache key for storing the result based on the - * arguments provided to the memoized function. By default, the first argument - * provided to the memoized function is used as the map cache key. The `func` - * is invoked with the `this` binding of the memoized function. - * - * **Note:** The cache is exposed as the `cache` property on the memoized - * function. Its creation may be customized by replacing the `_.memoize.Cache` - * constructor with one whose instances implement the - * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object) - * method interface of `clear`, `delete`, `get`, `has`, and `set`. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Function - * @param {Function} func The function to have its output memoized. - * @param {Function} [resolver] The function to resolve the cache key. - * @returns {Function} Returns the new memoized function. - * @example - * - * var object = { 'a': 1, 'b': 2 }; - * var other = { 'c': 3, 'd': 4 }; - * - * var values = _.memoize(_.values); - * values(object); - * // => [1, 2] - * - * values(other); - * // => [3, 4] - * - * object.a = 2; - * values(object); - * // => [1, 2] - * - * // Modify the result cache. - * values.cache.set(object, ['a', 'b']); - * values(object); - * // => ['a', 'b'] - * - * // Replace `_.memoize.Cache`. - * _.memoize.Cache = WeakMap; - */ - function memoize(func, resolver) { - if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) { - throw new TypeError(FUNC_ERROR_TEXT); - } - var memoized = function() { - var args = arguments, - key = resolver ? resolver.apply(this, args) : args[0], - cache = memoized.cache; - - if (cache.has(key)) { - return cache.get(key); - } - var result = func.apply(this, args); - memoized.cache = cache.set(key, result) || cache; - return result; - }; - memoized.cache = new (memoize.Cache || MapCache); - return memoized; - } - - // Expose `MapCache`. - memoize.Cache = MapCache; - - /** - * Creates a function that negates the result of the predicate `func`. The - * `func` predicate is invoked with the `this` binding and arguments of the - * created function. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Function - * @param {Function} predicate The predicate to negate. - * @returns {Function} Returns the new negated function. - * @example - * - * function isEven(n) { - * return n % 2 == 0; - * } - * - * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven)); - * // => [1, 3, 5] - */ - function negate(predicate) { - if (typeof predicate != 'function') { - throw new TypeError(FUNC_ERROR_TEXT); - } - return function() { - var args = arguments; - switch (args.length) { - case 0: return !predicate.call(this); - case 1: return !predicate.call(this, args[0]); - case 2: return !predicate.call(this, args[0], args[1]); - case 3: return !predicate.call(this, args[0], args[1], args[2]); - } - return !predicate.apply(this, args); - }; - } - - /** - * Creates a function that is restricted to invoking `func` once. Repeat calls - * to the function return the value of the first invocation. The `func` is - * invoked with the `this` binding and arguments of the created function. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Function - * @param {Function} func The function to restrict. - * @returns {Function} Returns the new restricted function. - * @example - * - * var initialize = _.once(createApplication); - * initialize(); - * initialize(); - * // => `createApplication` is invoked once - */ - function once(func) { - return before(2, func); - } - - /** - * Creates a function that invokes `func` with its arguments transformed. - * - * @static - * @since 4.0.0 - * @memberOf _ - * @category Function - * @param {Function} func The function to wrap. - * @param {...(Function|Function[])} [transforms=[_.identity]] - * The argument transforms. - * @returns {Function} Returns the new function. - * @example - * - * function doubled(n) { - * return n * 2; - * } - * - * function square(n) { - * return n * n; - * } - * - * var func = _.overArgs(function(x, y) { - * return [x, y]; - * }, [square, doubled]); - * - * func(9, 3); - * // => [81, 6] - * - * func(10, 5); - * // => [100, 10] - */ - var overArgs = castRest(function(func, transforms) { - transforms = (transforms.length == 1 && isArray(transforms[0])) - ? arrayMap(transforms[0], baseUnary(getIteratee())) - : arrayMap(baseFlatten(transforms, 1), baseUnary(getIteratee())); - - var funcsLength = transforms.length; - return baseRest(function(args) { - var index = -1, - length = nativeMin(args.length, funcsLength); - - while (++index < length) { - args[index] = transforms[index].call(this, args[index]); - } - return apply(func, this, args); - }); - }); - - /** - * Creates a function that invokes `func` with `partials` prepended to the - * arguments it receives. This method is like `_.bind` except it does **not** - * alter the `this` binding. - * - * The `_.partial.placeholder` value, which defaults to `_` in monolithic - * builds, may be used as a placeholder for partially applied arguments. - * - * **Note:** This method doesn't set the "length" property of partially - * applied functions. - * - * @static - * @memberOf _ - * @since 0.2.0 - * @category Function - * @param {Function} func The function to partially apply arguments to. - * @param {...*} [partials] The arguments to be partially applied. - * @returns {Function} Returns the new partially applied function. - * @example - * - * function greet(greeting, name) { - * return greeting + ' ' + name; - * } - * - * var sayHelloTo = _.partial(greet, 'hello'); - * sayHelloTo('fred'); - * // => 'hello fred' - * - * // Partially applied with placeholders. - * var greetFred = _.partial(greet, _, 'fred'); - * greetFred('hi'); - * // => 'hi fred' - */ - var partial = baseRest(function(func, partials) { - var holders = replaceHolders(partials, getHolder(partial)); - return createWrap(func, WRAP_PARTIAL_FLAG, undefined, partials, holders); - }); - - /** - * This method is like `_.partial` except that partially applied arguments - * are appended to the arguments it receives. - * - * The `_.partialRight.placeholder` value, which defaults to `_` in monolithic - * builds, may be used as a placeholder for partially applied arguments. - * - * **Note:** This method doesn't set the "length" property of partially - * applied functions. - * - * @static - * @memberOf _ - * @since 1.0.0 - * @category Function - * @param {Function} func The function to partially apply arguments to. - * @param {...*} [partials] The arguments to be partially applied. - * @returns {Function} Returns the new partially applied function. - * @example - * - * function greet(greeting, name) { - * return greeting + ' ' + name; - * } - * - * var greetFred = _.partialRight(greet, 'fred'); - * greetFred('hi'); - * // => 'hi fred' - * - * // Partially applied with placeholders. - * var sayHelloTo = _.partialRight(greet, 'hello', _); - * sayHelloTo('fred'); - * // => 'hello fred' - */ - var partialRight = baseRest(function(func, partials) { - var holders = replaceHolders(partials, getHolder(partialRight)); - return createWrap(func, WRAP_PARTIAL_RIGHT_FLAG, undefined, partials, holders); - }); - - /** - * Creates a function that invokes `func` with arguments arranged according - * to the specified `indexes` where the argument value at the first index is - * provided as the first argument, the argument value at the second index is - * provided as the second argument, and so on. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Function - * @param {Function} func The function to rearrange arguments for. - * @param {...(number|number[])} indexes The arranged argument indexes. - * @returns {Function} Returns the new function. - * @example - * - * var rearged = _.rearg(function(a, b, c) { - * return [a, b, c]; - * }, [2, 0, 1]); - * - * rearged('b', 'c', 'a') - * // => ['a', 'b', 'c'] - */ - var rearg = flatRest(function(func, indexes) { - return createWrap(func, WRAP_REARG_FLAG, undefined, undefined, undefined, indexes); - }); - - /** - * Creates a function that invokes `func` with the `this` binding of the - * created function and arguments from `start` and beyond provided as - * an array. - * - * **Note:** This method is based on the - * [rest parameter](https://mdn.io/rest_parameters). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Function - * @param {Function} func The function to apply a rest parameter to. - * @param {number} [start=func.length-1] The start position of the rest parameter. - * @returns {Function} Returns the new function. - * @example - * - * var say = _.rest(function(what, names) { - * return what + ' ' + _.initial(names).join(', ') + - * (_.size(names) > 1 ? ', & ' : '') + _.last(names); - * }); - * - * say('hello', 'fred', 'barney', 'pebbles'); - * // => 'hello fred, barney, & pebbles' - */ - function rest(func, start) { - if (typeof func != 'function') { - throw new TypeError(FUNC_ERROR_TEXT); - } - start = start === undefined ? start : toInteger(start); - return baseRest(func, start); - } - - /** - * Creates a function that invokes `func` with the `this` binding of the - * create function and an array of arguments much like - * [`Function#apply`](http://www.ecma-international.org/ecma-262/7.0/#sec-function.prototype.apply). - * - * **Note:** This method is based on the - * [spread operator](https://mdn.io/spread_operator). - * - * @static - * @memberOf _ - * @since 3.2.0 - * @category Function - * @param {Function} func The function to spread arguments over. - * @param {number} [start=0] The start position of the spread. - * @returns {Function} Returns the new function. - * @example - * - * var say = _.spread(function(who, what) { - * return who + ' says ' + what; - * }); - * - * say(['fred', 'hello']); - * // => 'fred says hello' - * - * var numbers = Promise.all([ - * Promise.resolve(40), - * Promise.resolve(36) - * ]); - * - * numbers.then(_.spread(function(x, y) { - * return x + y; - * })); - * // => a Promise of 76 - */ - function spread(func, start) { - if (typeof func != 'function') { - throw new TypeError(FUNC_ERROR_TEXT); - } - start = start == null ? 0 : nativeMax(toInteger(start), 0); - return baseRest(function(args) { - var array = args[start], - otherArgs = castSlice(args, 0, start); - - if (array) { - arrayPush(otherArgs, array); - } - return apply(func, this, otherArgs); - }); - } - - /** - * Creates a throttled function that only invokes `func` at most once per - * every `wait` milliseconds. The throttled function comes with a `cancel` - * method to cancel delayed `func` invocations and a `flush` method to - * immediately invoke them. Provide `options` to indicate whether `func` - * should be invoked on the leading and/or trailing edge of the `wait` - * timeout. The `func` is invoked with the last arguments provided to the - * throttled function. Subsequent calls to the throttled function return the - * result of the last `func` invocation. - * - * **Note:** If `leading` and `trailing` options are `true`, `func` is - * invoked on the trailing edge of the timeout only if the throttled function - * is invoked more than once during the `wait` timeout. - * - * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred - * until to the next tick, similar to `setTimeout` with a timeout of `0`. - * - * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/) - * for details over the differences between `_.throttle` and `_.debounce`. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Function - * @param {Function} func The function to throttle. - * @param {number} [wait=0] The number of milliseconds to throttle invocations to. - * @param {Object} [options={}] The options object. - * @param {boolean} [options.leading=true] - * Specify invoking on the leading edge of the timeout. - * @param {boolean} [options.trailing=true] - * Specify invoking on the trailing edge of the timeout. - * @returns {Function} Returns the new throttled function. - * @example - * - * // Avoid excessively updating the position while scrolling. - * jQuery(window).on('scroll', _.throttle(updatePosition, 100)); - * - * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes. - * var throttled = _.throttle(renewToken, 300000, { 'trailing': false }); - * jQuery(element).on('click', throttled); - * - * // Cancel the trailing throttled invocation. - * jQuery(window).on('popstate', throttled.cancel); - */ - function throttle(func, wait, options) { - var leading = true, - trailing = true; - - if (typeof func != 'function') { - throw new TypeError(FUNC_ERROR_TEXT); - } - if (isObject(options)) { - leading = 'leading' in options ? !!options.leading : leading; - trailing = 'trailing' in options ? !!options.trailing : trailing; - } - return debounce(func, wait, { - 'leading': leading, - 'maxWait': wait, - 'trailing': trailing - }); - } - - /** - * Creates a function that accepts up to one argument, ignoring any - * additional arguments. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Function - * @param {Function} func The function to cap arguments for. - * @returns {Function} Returns the new capped function. - * @example - * - * _.map(['6', '8', '10'], _.unary(parseInt)); - * // => [6, 8, 10] - */ - function unary(func) { - return ary(func, 1); - } - - /** - * Creates a function that provides `value` to `wrapper` as its first - * argument. Any additional arguments provided to the function are appended - * to those provided to the `wrapper`. The wrapper is invoked with the `this` - * binding of the created function. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Function - * @param {*} value The value to wrap. - * @param {Function} [wrapper=identity] The wrapper function. - * @returns {Function} Returns the new function. - * @example - * - * var p = _.wrap(_.escape, function(func, text) { - * return '

    ' + func(text) + '

    '; - * }); - * - * p('fred, barney, & pebbles'); - * // => '

    fred, barney, & pebbles

    ' - */ - function wrap(value, wrapper) { - return partial(castFunction(wrapper), value); - } - - /*------------------------------------------------------------------------*/ - - /** - * Casts `value` as an array if it's not one. - * - * @static - * @memberOf _ - * @since 4.4.0 - * @category Lang - * @param {*} value The value to inspect. - * @returns {Array} Returns the cast array. - * @example - * - * _.castArray(1); - * // => [1] - * - * _.castArray({ 'a': 1 }); - * // => [{ 'a': 1 }] - * - * _.castArray('abc'); - * // => ['abc'] - * - * _.castArray(null); - * // => [null] - * - * _.castArray(undefined); - * // => [undefined] - * - * _.castArray(); - * // => [] - * - * var array = [1, 2, 3]; - * console.log(_.castArray(array) === array); - * // => true - */ - function castArray() { - if (!arguments.length) { - return []; - } - var value = arguments[0]; - return isArray(value) ? value : [value]; - } - - /** - * Creates a shallow clone of `value`. - * - * **Note:** This method is loosely based on the - * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm) - * and supports cloning arrays, array buffers, booleans, date objects, maps, - * numbers, `Object` objects, regexes, sets, strings, symbols, and typed - * arrays. The own enumerable properties of `arguments` objects are cloned - * as plain objects. An empty object is returned for uncloneable values such - * as error objects, functions, DOM nodes, and WeakMaps. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to clone. - * @returns {*} Returns the cloned value. - * @see _.cloneDeep - * @example - * - * var objects = [{ 'a': 1 }, { 'b': 2 }]; - * - * var shallow = _.clone(objects); - * console.log(shallow[0] === objects[0]); - * // => true - */ - function clone(value) { - return baseClone(value, CLONE_SYMBOLS_FLAG); - } - - /** - * This method is like `_.clone` except that it accepts `customizer` which - * is invoked to produce the cloned value. If `customizer` returns `undefined`, - * cloning is handled by the method instead. The `customizer` is invoked with - * up to four arguments; (value [, index|key, object, stack]). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to clone. - * @param {Function} [customizer] The function to customize cloning. - * @returns {*} Returns the cloned value. - * @see _.cloneDeepWith - * @example - * - * function customizer(value) { - * if (_.isElement(value)) { - * return value.cloneNode(false); - * } - * } - * - * var el = _.cloneWith(document.body, customizer); - * - * console.log(el === document.body); - * // => false - * console.log(el.nodeName); - * // => 'BODY' - * console.log(el.childNodes.length); - * // => 0 - */ - function cloneWith(value, customizer) { - customizer = typeof customizer == 'function' ? customizer : undefined; - return baseClone(value, CLONE_SYMBOLS_FLAG, customizer); - } - - /** - * This method is like `_.clone` except that it recursively clones `value`. - * - * @static - * @memberOf _ - * @since 1.0.0 - * @category Lang - * @param {*} value The value to recursively clone. - * @returns {*} Returns the deep cloned value. - * @see _.clone - * @example - * - * var objects = [{ 'a': 1 }, { 'b': 2 }]; - * - * var deep = _.cloneDeep(objects); - * console.log(deep[0] === objects[0]); - * // => false - */ - function cloneDeep(value) { - return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG); - } - - /** - * This method is like `_.cloneWith` except that it recursively clones `value`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to recursively clone. - * @param {Function} [customizer] The function to customize cloning. - * @returns {*} Returns the deep cloned value. - * @see _.cloneWith - * @example - * - * function customizer(value) { - * if (_.isElement(value)) { - * return value.cloneNode(true); - * } - * } - * - * var el = _.cloneDeepWith(document.body, customizer); - * - * console.log(el === document.body); - * // => false - * console.log(el.nodeName); - * // => 'BODY' - * console.log(el.childNodes.length); - * // => 20 - */ - function cloneDeepWith(value, customizer) { - customizer = typeof customizer == 'function' ? customizer : undefined; - return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG, customizer); - } - - /** - * Checks if `object` conforms to `source` by invoking the predicate - * properties of `source` with the corresponding property values of `object`. - * - * **Note:** This method is equivalent to `_.conforms` when `source` is - * partially applied. - * - * @static - * @memberOf _ - * @since 4.14.0 - * @category Lang - * @param {Object} object The object to inspect. - * @param {Object} source The object of property predicates to conform to. - * @returns {boolean} Returns `true` if `object` conforms, else `false`. - * @example - * - * var object = { 'a': 1, 'b': 2 }; - * - * _.conformsTo(object, { 'b': function(n) { return n > 1; } }); - * // => true - * - * _.conformsTo(object, { 'b': function(n) { return n > 2; } }); - * // => false - */ - function conformsTo(object, source) { - return source == null || baseConformsTo(object, source, keys(source)); - } - - /** - * Performs a - * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) - * comparison between two values to determine if they are equivalent. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to compare. - * @param {*} other The other value to compare. - * @returns {boolean} Returns `true` if the values are equivalent, else `false`. - * @example - * - * var object = { 'a': 1 }; - * var other = { 'a': 1 }; - * - * _.eq(object, object); - * // => true - * - * _.eq(object, other); - * // => false - * - * _.eq('a', 'a'); - * // => true - * - * _.eq('a', Object('a')); - * // => false - * - * _.eq(NaN, NaN); - * // => true - */ - function eq(value, other) { - return value === other || (value !== value && other !== other); - } - - /** - * Checks if `value` is greater than `other`. - * - * @static - * @memberOf _ - * @since 3.9.0 - * @category Lang - * @param {*} value The value to compare. - * @param {*} other The other value to compare. - * @returns {boolean} Returns `true` if `value` is greater than `other`, - * else `false`. - * @see _.lt - * @example - * - * _.gt(3, 1); - * // => true - * - * _.gt(3, 3); - * // => false - * - * _.gt(1, 3); - * // => false - */ - var gt = createRelationalOperation(baseGt); - - /** - * Checks if `value` is greater than or equal to `other`. - * - * @static - * @memberOf _ - * @since 3.9.0 - * @category Lang - * @param {*} value The value to compare. - * @param {*} other The other value to compare. - * @returns {boolean} Returns `true` if `value` is greater than or equal to - * `other`, else `false`. - * @see _.lte - * @example - * - * _.gte(3, 1); - * // => true - * - * _.gte(3, 3); - * // => true - * - * _.gte(1, 3); - * // => false - */ - var gte = createRelationalOperation(function(value, other) { - return value >= other; - }); - - /** - * Checks if `value` is likely an `arguments` object. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an `arguments` object, - * else `false`. - * @example - * - * _.isArguments(function() { return arguments; }()); - * // => true - * - * _.isArguments([1, 2, 3]); - * // => false - */ - var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) { - return isObjectLike(value) && hasOwnProperty.call(value, 'callee') && - !propertyIsEnumerable.call(value, 'callee'); - }; - - /** - * Checks if `value` is classified as an `Array` object. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an array, else `false`. - * @example - * - * _.isArray([1, 2, 3]); - * // => true - * - * _.isArray(document.body.children); - * // => false - * - * _.isArray('abc'); - * // => false - * - * _.isArray(_.noop); - * // => false - */ - var isArray = Array.isArray; - - /** - * Checks if `value` is classified as an `ArrayBuffer` object. - * - * @static - * @memberOf _ - * @since 4.3.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`. - * @example - * - * _.isArrayBuffer(new ArrayBuffer(2)); - * // => true - * - * _.isArrayBuffer(new Array(2)); - * // => false - */ - var isArrayBuffer = nodeIsArrayBuffer ? baseUnary(nodeIsArrayBuffer) : baseIsArrayBuffer; - - /** - * Checks if `value` is array-like. A value is considered array-like if it's - * not a function and has a `value.length` that's an integer greater than or - * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is array-like, else `false`. - * @example - * - * _.isArrayLike([1, 2, 3]); - * // => true - * - * _.isArrayLike(document.body.children); - * // => true - * - * _.isArrayLike('abc'); - * // => true - * - * _.isArrayLike(_.noop); - * // => false - */ - function isArrayLike(value) { - return value != null && isLength(value.length) && !isFunction(value); - } - - /** - * This method is like `_.isArrayLike` except that it also checks if `value` - * is an object. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an array-like object, - * else `false`. - * @example - * - * _.isArrayLikeObject([1, 2, 3]); - * // => true - * - * _.isArrayLikeObject(document.body.children); - * // => true - * - * _.isArrayLikeObject('abc'); - * // => false - * - * _.isArrayLikeObject(_.noop); - * // => false - */ - function isArrayLikeObject(value) { - return isObjectLike(value) && isArrayLike(value); - } - - /** - * Checks if `value` is classified as a boolean primitive or object. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a boolean, else `false`. - * @example - * - * _.isBoolean(false); - * // => true - * - * _.isBoolean(null); - * // => false - */ - function isBoolean(value) { - return value === true || value === false || - (isObjectLike(value) && baseGetTag(value) == boolTag); - } - - /** - * Checks if `value` is a buffer. - * - * @static - * @memberOf _ - * @since 4.3.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a buffer, else `false`. - * @example - * - * _.isBuffer(new Buffer(2)); - * // => true - * - * _.isBuffer(new Uint8Array(2)); - * // => false - */ - var isBuffer = nativeIsBuffer || stubFalse; - - /** - * Checks if `value` is classified as a `Date` object. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a date object, else `false`. - * @example - * - * _.isDate(new Date); - * // => true - * - * _.isDate('Mon April 23 2012'); - * // => false - */ - var isDate = nodeIsDate ? baseUnary(nodeIsDate) : baseIsDate; - - /** - * Checks if `value` is likely a DOM element. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a DOM element, else `false`. - * @example - * - * _.isElement(document.body); - * // => true - * - * _.isElement(''); - * // => false - */ - function isElement(value) { - return isObjectLike(value) && value.nodeType === 1 && !isPlainObject(value); - } - - /** - * Checks if `value` is an empty object, collection, map, or set. - * - * Objects are considered empty if they have no own enumerable string keyed - * properties. - * - * Array-like values such as `arguments` objects, arrays, buffers, strings, or - * jQuery-like collections are considered empty if they have a `length` of `0`. - * Similarly, maps and sets are considered empty if they have a `size` of `0`. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is empty, else `false`. - * @example - * - * _.isEmpty(null); - * // => true - * - * _.isEmpty(true); - * // => true - * - * _.isEmpty(1); - * // => true - * - * _.isEmpty([1, 2, 3]); - * // => false - * - * _.isEmpty({ 'a': 1 }); - * // => false - */ - function isEmpty(value) { - if (value == null) { - return true; - } - if (isArrayLike(value) && - (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' || - isBuffer(value) || isTypedArray(value) || isArguments(value))) { - return !value.length; - } - var tag = getTag(value); - if (tag == mapTag || tag == setTag) { - return !value.size; - } - if (isPrototype(value)) { - return !baseKeys(value).length; - } - for (var key in value) { - if (hasOwnProperty.call(value, key)) { - return false; - } - } - return true; - } - - /** - * Performs a deep comparison between two values to determine if they are - * equivalent. - * - * **Note:** This method supports comparing arrays, array buffers, booleans, - * date objects, error objects, maps, numbers, `Object` objects, regexes, - * sets, strings, symbols, and typed arrays. `Object` objects are compared - * by their own, not inherited, enumerable properties. Functions and DOM - * nodes are compared by strict equality, i.e. `===`. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to compare. - * @param {*} other The other value to compare. - * @returns {boolean} Returns `true` if the values are equivalent, else `false`. - * @example - * - * var object = { 'a': 1 }; - * var other = { 'a': 1 }; - * - * _.isEqual(object, other); - * // => true - * - * object === other; - * // => false - */ - function isEqual(value, other) { - return baseIsEqual(value, other); - } - - /** - * This method is like `_.isEqual` except that it accepts `customizer` which - * is invoked to compare values. If `customizer` returns `undefined`, comparisons - * are handled by the method instead. The `customizer` is invoked with up to - * six arguments: (objValue, othValue [, index|key, object, other, stack]). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to compare. - * @param {*} other The other value to compare. - * @param {Function} [customizer] The function to customize comparisons. - * @returns {boolean} Returns `true` if the values are equivalent, else `false`. - * @example - * - * function isGreeting(value) { - * return /^h(?:i|ello)$/.test(value); - * } - * - * function customizer(objValue, othValue) { - * if (isGreeting(objValue) && isGreeting(othValue)) { - * return true; - * } - * } - * - * var array = ['hello', 'goodbye']; - * var other = ['hi', 'goodbye']; - * - * _.isEqualWith(array, other, customizer); - * // => true - */ - function isEqualWith(value, other, customizer) { - customizer = typeof customizer == 'function' ? customizer : undefined; - var result = customizer ? customizer(value, other) : undefined; - return result === undefined ? baseIsEqual(value, other, undefined, customizer) : !!result; - } - - /** - * Checks if `value` is an `Error`, `EvalError`, `RangeError`, `ReferenceError`, - * `SyntaxError`, `TypeError`, or `URIError` object. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an error object, else `false`. - * @example - * - * _.isError(new Error); - * // => true - * - * _.isError(Error); - * // => false - */ - function isError(value) { - if (!isObjectLike(value)) { - return false; - } - var tag = baseGetTag(value); - return tag == errorTag || tag == domExcTag || - (typeof value.message == 'string' && typeof value.name == 'string' && !isPlainObject(value)); - } - - /** - * Checks if `value` is a finite primitive number. - * - * **Note:** This method is based on - * [`Number.isFinite`](https://mdn.io/Number/isFinite). - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a finite number, else `false`. - * @example - * - * _.isFinite(3); - * // => true - * - * _.isFinite(Number.MIN_VALUE); - * // => true - * - * _.isFinite(Infinity); - * // => false - * - * _.isFinite('3'); - * // => false - */ - function isFinite(value) { - return typeof value == 'number' && nativeIsFinite(value); - } - - /** - * Checks if `value` is classified as a `Function` object. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a function, else `false`. - * @example - * - * _.isFunction(_); - * // => true - * - * _.isFunction(/abc/); - * // => false - */ - function isFunction(value) { - if (!isObject(value)) { - return false; - } - // The use of `Object#toString` avoids issues with the `typeof` operator - // in Safari 9 which returns 'object' for typed arrays and other constructors. - var tag = baseGetTag(value); - return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag; - } - - /** - * Checks if `value` is an integer. - * - * **Note:** This method is based on - * [`Number.isInteger`](https://mdn.io/Number/isInteger). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an integer, else `false`. - * @example - * - * _.isInteger(3); - * // => true - * - * _.isInteger(Number.MIN_VALUE); - * // => false - * - * _.isInteger(Infinity); - * // => false - * - * _.isInteger('3'); - * // => false - */ - function isInteger(value) { - return typeof value == 'number' && value == toInteger(value); - } - - /** - * Checks if `value` is a valid array-like length. - * - * **Note:** This method is loosely based on - * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a valid length, else `false`. - * @example - * - * _.isLength(3); - * // => true - * - * _.isLength(Number.MIN_VALUE); - * // => false - * - * _.isLength(Infinity); - * // => false - * - * _.isLength('3'); - * // => false - */ - function isLength(value) { - return typeof value == 'number' && - value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER; - } - - /** - * Checks if `value` is the - * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types) - * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an object, else `false`. - * @example - * - * _.isObject({}); - * // => true - * - * _.isObject([1, 2, 3]); - * // => true - * - * _.isObject(_.noop); - * // => true - * - * _.isObject(null); - * // => false - */ - function isObject(value) { - var type = typeof value; - return value != null && (type == 'object' || type == 'function'); - } - - /** - * Checks if `value` is object-like. A value is object-like if it's not `null` - * and has a `typeof` result of "object". - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is object-like, else `false`. - * @example - * - * _.isObjectLike({}); - * // => true - * - * _.isObjectLike([1, 2, 3]); - * // => true - * - * _.isObjectLike(_.noop); - * // => false - * - * _.isObjectLike(null); - * // => false - */ - function isObjectLike(value) { - return value != null && typeof value == 'object'; - } - - /** - * Checks if `value` is classified as a `Map` object. - * - * @static - * @memberOf _ - * @since 4.3.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a map, else `false`. - * @example - * - * _.isMap(new Map); - * // => true - * - * _.isMap(new WeakMap); - * // => false - */ - var isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap; - - /** - * Performs a partial deep comparison between `object` and `source` to - * determine if `object` contains equivalent property values. - * - * **Note:** This method is equivalent to `_.matches` when `source` is - * partially applied. - * - * Partial comparisons will match empty array and empty object `source` - * values against any array or object value, respectively. See `_.isEqual` - * for a list of supported value comparisons. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Lang - * @param {Object} object The object to inspect. - * @param {Object} source The object of property values to match. - * @returns {boolean} Returns `true` if `object` is a match, else `false`. - * @example - * - * var object = { 'a': 1, 'b': 2 }; - * - * _.isMatch(object, { 'b': 2 }); - * // => true - * - * _.isMatch(object, { 'b': 1 }); - * // => false - */ - function isMatch(object, source) { - return object === source || baseIsMatch(object, source, getMatchData(source)); - } - - /** - * This method is like `_.isMatch` except that it accepts `customizer` which - * is invoked to compare values. If `customizer` returns `undefined`, comparisons - * are handled by the method instead. The `customizer` is invoked with five - * arguments: (objValue, srcValue, index|key, object, source). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {Object} object The object to inspect. - * @param {Object} source The object of property values to match. - * @param {Function} [customizer] The function to customize comparisons. - * @returns {boolean} Returns `true` if `object` is a match, else `false`. - * @example - * - * function isGreeting(value) { - * return /^h(?:i|ello)$/.test(value); - * } - * - * function customizer(objValue, srcValue) { - * if (isGreeting(objValue) && isGreeting(srcValue)) { - * return true; - * } - * } - * - * var object = { 'greeting': 'hello' }; - * var source = { 'greeting': 'hi' }; - * - * _.isMatchWith(object, source, customizer); - * // => true - */ - function isMatchWith(object, source, customizer) { - customizer = typeof customizer == 'function' ? customizer : undefined; - return baseIsMatch(object, source, getMatchData(source), customizer); - } - - /** - * Checks if `value` is `NaN`. - * - * **Note:** This method is based on - * [`Number.isNaN`](https://mdn.io/Number/isNaN) and is not the same as - * global [`isNaN`](https://mdn.io/isNaN) which returns `true` for - * `undefined` and other non-number values. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`. - * @example - * - * _.isNaN(NaN); - * // => true - * - * _.isNaN(new Number(NaN)); - * // => true - * - * isNaN(undefined); - * // => true - * - * _.isNaN(undefined); - * // => false - */ - function isNaN(value) { - // An `NaN` primitive is the only value that is not equal to itself. - // Perform the `toStringTag` check first to avoid errors with some - // ActiveX objects in IE. - return isNumber(value) && value != +value; - } - - /** - * Checks if `value` is a pristine native function. - * - * **Note:** This method can't reliably detect native functions in the presence - * of the core-js package because core-js circumvents this kind of detection. - * Despite multiple requests, the core-js maintainer has made it clear: any - * attempt to fix the detection will be obstructed. As a result, we're left - * with little choice but to throw an error. Unfortunately, this also affects - * packages, like [babel-polyfill](https://www.npmjs.com/package/babel-polyfill), - * which rely on core-js. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a native function, - * else `false`. - * @example - * - * _.isNative(Array.prototype.push); - * // => true - * - * _.isNative(_); - * // => false - */ - function isNative(value) { - if (isMaskable(value)) { - throw new Error(CORE_ERROR_TEXT); - } - return baseIsNative(value); - } - - /** - * Checks if `value` is `null`. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is `null`, else `false`. - * @example - * - * _.isNull(null); - * // => true - * - * _.isNull(void 0); - * // => false - */ - function isNull(value) { - return value === null; - } - - /** - * Checks if `value` is `null` or `undefined`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is nullish, else `false`. - * @example - * - * _.isNil(null); - * // => true - * - * _.isNil(void 0); - * // => true - * - * _.isNil(NaN); - * // => false - */ - function isNil(value) { - return value == null; - } - - /** - * Checks if `value` is classified as a `Number` primitive or object. - * - * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are - * classified as numbers, use the `_.isFinite` method. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a number, else `false`. - * @example - * - * _.isNumber(3); - * // => true - * - * _.isNumber(Number.MIN_VALUE); - * // => true - * - * _.isNumber(Infinity); - * // => true - * - * _.isNumber('3'); - * // => false - */ - function isNumber(value) { - return typeof value == 'number' || - (isObjectLike(value) && baseGetTag(value) == numberTag); - } - - /** - * Checks if `value` is a plain object, that is, an object created by the - * `Object` constructor or one with a `[[Prototype]]` of `null`. - * - * @static - * @memberOf _ - * @since 0.8.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a plain object, else `false`. - * @example - * - * function Foo() { - * this.a = 1; - * } - * - * _.isPlainObject(new Foo); - * // => false - * - * _.isPlainObject([1, 2, 3]); - * // => false - * - * _.isPlainObject({ 'x': 0, 'y': 0 }); - * // => true - * - * _.isPlainObject(Object.create(null)); - * // => true - */ - function isPlainObject(value) { - if (!isObjectLike(value) || baseGetTag(value) != objectTag) { - return false; - } - var proto = getPrototype(value); - if (proto === null) { - return true; - } - var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor; - return typeof Ctor == 'function' && Ctor instanceof Ctor && - funcToString.call(Ctor) == objectCtorString; - } - - /** - * Checks if `value` is classified as a `RegExp` object. - * - * @static - * @memberOf _ - * @since 0.1.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a regexp, else `false`. - * @example - * - * _.isRegExp(/abc/); - * // => true - * - * _.isRegExp('/abc/'); - * // => false - */ - var isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp; - - /** - * Checks if `value` is a safe integer. An integer is safe if it's an IEEE-754 - * double precision number which isn't the result of a rounded unsafe integer. - * - * **Note:** This method is based on - * [`Number.isSafeInteger`](https://mdn.io/Number/isSafeInteger). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a safe integer, else `false`. - * @example - * - * _.isSafeInteger(3); - * // => true - * - * _.isSafeInteger(Number.MIN_VALUE); - * // => false - * - * _.isSafeInteger(Infinity); - * // => false - * - * _.isSafeInteger('3'); - * // => false - */ - function isSafeInteger(value) { - return isInteger(value) && value >= -MAX_SAFE_INTEGER && value <= MAX_SAFE_INTEGER; - } - - /** - * Checks if `value` is classified as a `Set` object. - * - * @static - * @memberOf _ - * @since 4.3.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a set, else `false`. - * @example - * - * _.isSet(new Set); - * // => true - * - * _.isSet(new WeakSet); - * // => false - */ - var isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet; - - /** - * Checks if `value` is classified as a `String` primitive or object. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a string, else `false`. - * @example - * - * _.isString('abc'); - * // => true - * - * _.isString(1); - * // => false - */ - function isString(value) { - return typeof value == 'string' || - (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag); - } - - /** - * Checks if `value` is classified as a `Symbol` primitive or object. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a symbol, else `false`. - * @example - * - * _.isSymbol(Symbol.iterator); - * // => true - * - * _.isSymbol('abc'); - * // => false - */ - function isSymbol(value) { - return typeof value == 'symbol' || - (isObjectLike(value) && baseGetTag(value) == symbolTag); - } - - /** - * Checks if `value` is classified as a typed array. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a typed array, else `false`. - * @example - * - * _.isTypedArray(new Uint8Array); - * // => true - * - * _.isTypedArray([]); - * // => false - */ - var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray; - - /** - * Checks if `value` is `undefined`. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`. - * @example - * - * _.isUndefined(void 0); - * // => true - * - * _.isUndefined(null); - * // => false - */ - function isUndefined(value) { - return value === undefined; - } - - /** - * Checks if `value` is classified as a `WeakMap` object. - * - * @static - * @memberOf _ - * @since 4.3.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a weak map, else `false`. - * @example - * - * _.isWeakMap(new WeakMap); - * // => true - * - * _.isWeakMap(new Map); - * // => false - */ - function isWeakMap(value) { - return isObjectLike(value) && getTag(value) == weakMapTag; - } - - /** - * Checks if `value` is classified as a `WeakSet` object. - * - * @static - * @memberOf _ - * @since 4.3.0 - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a weak set, else `false`. - * @example - * - * _.isWeakSet(new WeakSet); - * // => true - * - * _.isWeakSet(new Set); - * // => false - */ - function isWeakSet(value) { - return isObjectLike(value) && baseGetTag(value) == weakSetTag; - } - - /** - * Checks if `value` is less than `other`. - * - * @static - * @memberOf _ - * @since 3.9.0 - * @category Lang - * @param {*} value The value to compare. - * @param {*} other The other value to compare. - * @returns {boolean} Returns `true` if `value` is less than `other`, - * else `false`. - * @see _.gt - * @example - * - * _.lt(1, 3); - * // => true - * - * _.lt(3, 3); - * // => false - * - * _.lt(3, 1); - * // => false - */ - var lt = createRelationalOperation(baseLt); - - /** - * Checks if `value` is less than or equal to `other`. - * - * @static - * @memberOf _ - * @since 3.9.0 - * @category Lang - * @param {*} value The value to compare. - * @param {*} other The other value to compare. - * @returns {boolean} Returns `true` if `value` is less than or equal to - * `other`, else `false`. - * @see _.gte - * @example - * - * _.lte(1, 3); - * // => true - * - * _.lte(3, 3); - * // => true - * - * _.lte(3, 1); - * // => false - */ - var lte = createRelationalOperation(function(value, other) { - return value <= other; - }); - - /** - * Converts `value` to an array. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Lang - * @param {*} value The value to convert. - * @returns {Array} Returns the converted array. - * @example - * - * _.toArray({ 'a': 1, 'b': 2 }); - * // => [1, 2] - * - * _.toArray('abc'); - * // => ['a', 'b', 'c'] - * - * _.toArray(1); - * // => [] - * - * _.toArray(null); - * // => [] - */ - function toArray(value) { - if (!value) { - return []; - } - if (isArrayLike(value)) { - return isString(value) ? stringToArray(value) : copyArray(value); - } - if (symIterator && value[symIterator]) { - return iteratorToArray(value[symIterator]()); - } - var tag = getTag(value), - func = tag == mapTag ? mapToArray : (tag == setTag ? setToArray : values); - - return func(value); - } - - /** - * Converts `value` to a finite number. - * - * @static - * @memberOf _ - * @since 4.12.0 - * @category Lang - * @param {*} value The value to convert. - * @returns {number} Returns the converted number. - * @example - * - * _.toFinite(3.2); - * // => 3.2 - * - * _.toFinite(Number.MIN_VALUE); - * // => 5e-324 - * - * _.toFinite(Infinity); - * // => 1.7976931348623157e+308 - * - * _.toFinite('3.2'); - * // => 3.2 - */ - function toFinite(value) { - if (!value) { - return value === 0 ? value : 0; - } - value = toNumber(value); - if (value === INFINITY || value === -INFINITY) { - var sign = (value < 0 ? -1 : 1); - return sign * MAX_INTEGER; - } - return value === value ? value : 0; - } - - /** - * Converts `value` to an integer. - * - * **Note:** This method is loosely based on - * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to convert. - * @returns {number} Returns the converted integer. - * @example - * - * _.toInteger(3.2); - * // => 3 - * - * _.toInteger(Number.MIN_VALUE); - * // => 0 - * - * _.toInteger(Infinity); - * // => 1.7976931348623157e+308 - * - * _.toInteger('3.2'); - * // => 3 - */ - function toInteger(value) { - var result = toFinite(value), - remainder = result % 1; - - return result === result ? (remainder ? result - remainder : result) : 0; - } - - /** - * Converts `value` to an integer suitable for use as the length of an - * array-like object. - * - * **Note:** This method is based on - * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to convert. - * @returns {number} Returns the converted integer. - * @example - * - * _.toLength(3.2); - * // => 3 - * - * _.toLength(Number.MIN_VALUE); - * // => 0 - * - * _.toLength(Infinity); - * // => 4294967295 - * - * _.toLength('3.2'); - * // => 3 - */ - function toLength(value) { - return value ? baseClamp(toInteger(value), 0, MAX_ARRAY_LENGTH) : 0; - } - - /** - * Converts `value` to a number. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to process. - * @returns {number} Returns the number. - * @example - * - * _.toNumber(3.2); - * // => 3.2 - * - * _.toNumber(Number.MIN_VALUE); - * // => 5e-324 - * - * _.toNumber(Infinity); - * // => Infinity - * - * _.toNumber('3.2'); - * // => 3.2 - */ - function toNumber(value) { - if (typeof value == 'number') { - return value; - } - if (isSymbol(value)) { - return NAN; - } - if (isObject(value)) { - var other = typeof value.valueOf == 'function' ? value.valueOf() : value; - value = isObject(other) ? (other + '') : other; - } - if (typeof value != 'string') { - return value === 0 ? value : +value; - } - value = value.replace(reTrim, ''); - var isBinary = reIsBinary.test(value); - return (isBinary || reIsOctal.test(value)) - ? freeParseInt(value.slice(2), isBinary ? 2 : 8) - : (reIsBadHex.test(value) ? NAN : +value); - } - - /** - * Converts `value` to a plain object flattening inherited enumerable string - * keyed properties of `value` to own properties of the plain object. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Lang - * @param {*} value The value to convert. - * @returns {Object} Returns the converted plain object. - * @example - * - * function Foo() { - * this.b = 2; - * } - * - * Foo.prototype.c = 3; - * - * _.assign({ 'a': 1 }, new Foo); - * // => { 'a': 1, 'b': 2 } - * - * _.assign({ 'a': 1 }, _.toPlainObject(new Foo)); - * // => { 'a': 1, 'b': 2, 'c': 3 } - */ - function toPlainObject(value) { - return copyObject(value, keysIn(value)); - } - - /** - * Converts `value` to a safe integer. A safe integer can be compared and - * represented correctly. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to convert. - * @returns {number} Returns the converted integer. - * @example - * - * _.toSafeInteger(3.2); - * // => 3 - * - * _.toSafeInteger(Number.MIN_VALUE); - * // => 0 - * - * _.toSafeInteger(Infinity); - * // => 9007199254740991 - * - * _.toSafeInteger('3.2'); - * // => 3 - */ - function toSafeInteger(value) { - return value - ? baseClamp(toInteger(value), -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER) - : (value === 0 ? value : 0); - } - - /** - * Converts `value` to a string. An empty string is returned for `null` - * and `undefined` values. The sign of `-0` is preserved. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Lang - * @param {*} value The value to convert. - * @returns {string} Returns the converted string. - * @example - * - * _.toString(null); - * // => '' - * - * _.toString(-0); - * // => '-0' - * - * _.toString([1, 2, 3]); - * // => '1,2,3' - */ - function toString(value) { - return value == null ? '' : baseToString(value); - } - - /*------------------------------------------------------------------------*/ - - /** - * Assigns own enumerable string keyed properties of source objects to the - * destination object. Source objects are applied from left to right. - * Subsequent sources overwrite property assignments of previous sources. - * - * **Note:** This method mutates `object` and is loosely based on - * [`Object.assign`](https://mdn.io/Object/assign). - * - * @static - * @memberOf _ - * @since 0.10.0 - * @category Object - * @param {Object} object The destination object. - * @param {...Object} [sources] The source objects. - * @returns {Object} Returns `object`. - * @see _.assignIn - * @example - * - * function Foo() { - * this.a = 1; - * } - * - * function Bar() { - * this.c = 3; - * } - * - * Foo.prototype.b = 2; - * Bar.prototype.d = 4; - * - * _.assign({ 'a': 0 }, new Foo, new Bar); - * // => { 'a': 1, 'c': 3 } - */ - var assign = createAssigner(function(object, source) { - if (isPrototype(source) || isArrayLike(source)) { - copyObject(source, keys(source), object); - return; - } - for (var key in source) { - if (hasOwnProperty.call(source, key)) { - assignValue(object, key, source[key]); - } - } - }); - - /** - * This method is like `_.assign` except that it iterates over own and - * inherited source properties. - * - * **Note:** This method mutates `object`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @alias extend - * @category Object - * @param {Object} object The destination object. - * @param {...Object} [sources] The source objects. - * @returns {Object} Returns `object`. - * @see _.assign - * @example - * - * function Foo() { - * this.a = 1; - * } - * - * function Bar() { - * this.c = 3; - * } - * - * Foo.prototype.b = 2; - * Bar.prototype.d = 4; - * - * _.assignIn({ 'a': 0 }, new Foo, new Bar); - * // => { 'a': 1, 'b': 2, 'c': 3, 'd': 4 } - */ - var assignIn = createAssigner(function(object, source) { - copyObject(source, keysIn(source), object); - }); - - /** - * This method is like `_.assignIn` except that it accepts `customizer` - * which is invoked to produce the assigned values. If `customizer` returns - * `undefined`, assignment is handled by the method instead. The `customizer` - * is invoked with five arguments: (objValue, srcValue, key, object, source). - * - * **Note:** This method mutates `object`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @alias extendWith - * @category Object - * @param {Object} object The destination object. - * @param {...Object} sources The source objects. - * @param {Function} [customizer] The function to customize assigned values. - * @returns {Object} Returns `object`. - * @see _.assignWith - * @example - * - * function customizer(objValue, srcValue) { - * return _.isUndefined(objValue) ? srcValue : objValue; - * } - * - * var defaults = _.partialRight(_.assignInWith, customizer); - * - * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 }); - * // => { 'a': 1, 'b': 2 } - */ - var assignInWith = createAssigner(function(object, source, srcIndex, customizer) { - copyObject(source, keysIn(source), object, customizer); - }); - - /** - * This method is like `_.assign` except that it accepts `customizer` - * which is invoked to produce the assigned values. If `customizer` returns - * `undefined`, assignment is handled by the method instead. The `customizer` - * is invoked with five arguments: (objValue, srcValue, key, object, source). - * - * **Note:** This method mutates `object`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Object - * @param {Object} object The destination object. - * @param {...Object} sources The source objects. - * @param {Function} [customizer] The function to customize assigned values. - * @returns {Object} Returns `object`. - * @see _.assignInWith - * @example - * - * function customizer(objValue, srcValue) { - * return _.isUndefined(objValue) ? srcValue : objValue; - * } - * - * var defaults = _.partialRight(_.assignWith, customizer); - * - * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 }); - * // => { 'a': 1, 'b': 2 } - */ - var assignWith = createAssigner(function(object, source, srcIndex, customizer) { - copyObject(source, keys(source), object, customizer); - }); - - /** - * Creates an array of values corresponding to `paths` of `object`. - * - * @static - * @memberOf _ - * @since 1.0.0 - * @category Object - * @param {Object} object The object to iterate over. - * @param {...(string|string[])} [paths] The property paths to pick. - * @returns {Array} Returns the picked values. - * @example - * - * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] }; - * - * _.at(object, ['a[0].b.c', 'a[1]']); - * // => [3, 4] - */ - var at = flatRest(baseAt); - - /** - * Creates an object that inherits from the `prototype` object. If a - * `properties` object is given, its own enumerable string keyed properties - * are assigned to the created object. - * - * @static - * @memberOf _ - * @since 2.3.0 - * @category Object - * @param {Object} prototype The object to inherit from. - * @param {Object} [properties] The properties to assign to the object. - * @returns {Object} Returns the new object. - * @example - * - * function Shape() { - * this.x = 0; - * this.y = 0; - * } - * - * function Circle() { - * Shape.call(this); - * } - * - * Circle.prototype = _.create(Shape.prototype, { - * 'constructor': Circle - * }); - * - * var circle = new Circle; - * circle instanceof Circle; - * // => true - * - * circle instanceof Shape; - * // => true - */ - function create(prototype, properties) { - var result = baseCreate(prototype); - return properties == null ? result : baseAssign(result, properties); - } - - /** - * Assigns own and inherited enumerable string keyed properties of source - * objects to the destination object for all destination properties that - * resolve to `undefined`. Source objects are applied from left to right. - * Once a property is set, additional values of the same property are ignored. - * - * **Note:** This method mutates `object`. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Object - * @param {Object} object The destination object. - * @param {...Object} [sources] The source objects. - * @returns {Object} Returns `object`. - * @see _.defaultsDeep - * @example - * - * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 }); - * // => { 'a': 1, 'b': 2 } - */ - var defaults = baseRest(function(object, sources) { - object = Object(object); - - var index = -1; - var length = sources.length; - var guard = length > 2 ? sources[2] : undefined; - - if (guard && isIterateeCall(sources[0], sources[1], guard)) { - length = 1; - } - - while (++index < length) { - var source = sources[index]; - var props = keysIn(source); - var propsIndex = -1; - var propsLength = props.length; - - while (++propsIndex < propsLength) { - var key = props[propsIndex]; - var value = object[key]; - - if (value === undefined || - (eq(value, objectProto[key]) && !hasOwnProperty.call(object, key))) { - object[key] = source[key]; - } - } - } - - return object; - }); - - /** - * This method is like `_.defaults` except that it recursively assigns - * default properties. - * - * **Note:** This method mutates `object`. - * - * @static - * @memberOf _ - * @since 3.10.0 - * @category Object - * @param {Object} object The destination object. - * @param {...Object} [sources] The source objects. - * @returns {Object} Returns `object`. - * @see _.defaults - * @example - * - * _.defaultsDeep({ 'a': { 'b': 2 } }, { 'a': { 'b': 1, 'c': 3 } }); - * // => { 'a': { 'b': 2, 'c': 3 } } - */ - var defaultsDeep = baseRest(function(args) { - args.push(undefined, customDefaultsMerge); - return apply(mergeWith, undefined, args); - }); - - /** - * This method is like `_.find` except that it returns the key of the first - * element `predicate` returns truthy for instead of the element itself. - * - * @static - * @memberOf _ - * @since 1.1.0 - * @category Object - * @param {Object} object The object to inspect. - * @param {Function} [predicate=_.identity] The function invoked per iteration. - * @returns {string|undefined} Returns the key of the matched element, - * else `undefined`. - * @example - * - * var users = { - * 'barney': { 'age': 36, 'active': true }, - * 'fred': { 'age': 40, 'active': false }, - * 'pebbles': { 'age': 1, 'active': true } - * }; - * - * _.findKey(users, function(o) { return o.age < 40; }); - * // => 'barney' (iteration order is not guaranteed) - * - * // The `_.matches` iteratee shorthand. - * _.findKey(users, { 'age': 1, 'active': true }); - * // => 'pebbles' - * - * // The `_.matchesProperty` iteratee shorthand. - * _.findKey(users, ['active', false]); - * // => 'fred' - * - * // The `_.property` iteratee shorthand. - * _.findKey(users, 'active'); - * // => 'barney' - */ - function findKey(object, predicate) { - return baseFindKey(object, getIteratee(predicate, 3), baseForOwn); - } - - /** - * This method is like `_.findKey` except that it iterates over elements of - * a collection in the opposite order. - * - * @static - * @memberOf _ - * @since 2.0.0 - * @category Object - * @param {Object} object The object to inspect. - * @param {Function} [predicate=_.identity] The function invoked per iteration. - * @returns {string|undefined} Returns the key of the matched element, - * else `undefined`. - * @example - * - * var users = { - * 'barney': { 'age': 36, 'active': true }, - * 'fred': { 'age': 40, 'active': false }, - * 'pebbles': { 'age': 1, 'active': true } - * }; - * - * _.findLastKey(users, function(o) { return o.age < 40; }); - * // => returns 'pebbles' assuming `_.findKey` returns 'barney' - * - * // The `_.matches` iteratee shorthand. - * _.findLastKey(users, { 'age': 36, 'active': true }); - * // => 'barney' - * - * // The `_.matchesProperty` iteratee shorthand. - * _.findLastKey(users, ['active', false]); - * // => 'fred' - * - * // The `_.property` iteratee shorthand. - * _.findLastKey(users, 'active'); - * // => 'pebbles' - */ - function findLastKey(object, predicate) { - return baseFindKey(object, getIteratee(predicate, 3), baseForOwnRight); - } - - /** - * Iterates over own and inherited enumerable string keyed properties of an - * object and invokes `iteratee` for each property. The iteratee is invoked - * with three arguments: (value, key, object). Iteratee functions may exit - * iteration early by explicitly returning `false`. - * - * @static - * @memberOf _ - * @since 0.3.0 - * @category Object - * @param {Object} object The object to iterate over. - * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @returns {Object} Returns `object`. - * @see _.forInRight - * @example - * - * function Foo() { - * this.a = 1; - * this.b = 2; - * } - * - * Foo.prototype.c = 3; - * - * _.forIn(new Foo, function(value, key) { - * console.log(key); - * }); - * // => Logs 'a', 'b', then 'c' (iteration order is not guaranteed). - */ - function forIn(object, iteratee) { - return object == null - ? object - : baseFor(object, getIteratee(iteratee, 3), keysIn); - } - - /** - * This method is like `_.forIn` except that it iterates over properties of - * `object` in the opposite order. - * - * @static - * @memberOf _ - * @since 2.0.0 - * @category Object - * @param {Object} object The object to iterate over. - * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @returns {Object} Returns `object`. - * @see _.forIn - * @example - * - * function Foo() { - * this.a = 1; - * this.b = 2; - * } - * - * Foo.prototype.c = 3; - * - * _.forInRight(new Foo, function(value, key) { - * console.log(key); - * }); - * // => Logs 'c', 'b', then 'a' assuming `_.forIn` logs 'a', 'b', then 'c'. - */ - function forInRight(object, iteratee) { - return object == null - ? object - : baseForRight(object, getIteratee(iteratee, 3), keysIn); - } - - /** - * Iterates over own enumerable string keyed properties of an object and - * invokes `iteratee` for each property. The iteratee is invoked with three - * arguments: (value, key, object). Iteratee functions may exit iteration - * early by explicitly returning `false`. - * - * @static - * @memberOf _ - * @since 0.3.0 - * @category Object - * @param {Object} object The object to iterate over. - * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @returns {Object} Returns `object`. - * @see _.forOwnRight - * @example - * - * function Foo() { - * this.a = 1; - * this.b = 2; - * } - * - * Foo.prototype.c = 3; - * - * _.forOwn(new Foo, function(value, key) { - * console.log(key); - * }); - * // => Logs 'a' then 'b' (iteration order is not guaranteed). - */ - function forOwn(object, iteratee) { - return object && baseForOwn(object, getIteratee(iteratee, 3)); - } - - /** - * This method is like `_.forOwn` except that it iterates over properties of - * `object` in the opposite order. - * - * @static - * @memberOf _ - * @since 2.0.0 - * @category Object - * @param {Object} object The object to iterate over. - * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @returns {Object} Returns `object`. - * @see _.forOwn - * @example - * - * function Foo() { - * this.a = 1; - * this.b = 2; - * } - * - * Foo.prototype.c = 3; - * - * _.forOwnRight(new Foo, function(value, key) { - * console.log(key); - * }); - * // => Logs 'b' then 'a' assuming `_.forOwn` logs 'a' then 'b'. - */ - function forOwnRight(object, iteratee) { - return object && baseForOwnRight(object, getIteratee(iteratee, 3)); - } - - /** - * Creates an array of function property names from own enumerable properties - * of `object`. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Object - * @param {Object} object The object to inspect. - * @returns {Array} Returns the function names. - * @see _.functionsIn - * @example - * - * function Foo() { - * this.a = _.constant('a'); - * this.b = _.constant('b'); - * } - * - * Foo.prototype.c = _.constant('c'); - * - * _.functions(new Foo); - * // => ['a', 'b'] - */ - function functions(object) { - return object == null ? [] : baseFunctions(object, keys(object)); - } - - /** - * Creates an array of function property names from own and inherited - * enumerable properties of `object`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Object - * @param {Object} object The object to inspect. - * @returns {Array} Returns the function names. - * @see _.functions - * @example - * - * function Foo() { - * this.a = _.constant('a'); - * this.b = _.constant('b'); - * } - * - * Foo.prototype.c = _.constant('c'); - * - * _.functionsIn(new Foo); - * // => ['a', 'b', 'c'] - */ - function functionsIn(object) { - return object == null ? [] : baseFunctions(object, keysIn(object)); - } - - /** - * Gets the value at `path` of `object`. If the resolved value is - * `undefined`, the `defaultValue` is returned in its place. - * - * @static - * @memberOf _ - * @since 3.7.0 - * @category Object - * @param {Object} object The object to query. - * @param {Array|string} path The path of the property to get. - * @param {*} [defaultValue] The value returned for `undefined` resolved values. - * @returns {*} Returns the resolved value. - * @example - * - * var object = { 'a': [{ 'b': { 'c': 3 } }] }; - * - * _.get(object, 'a[0].b.c'); - * // => 3 - * - * _.get(object, ['a', '0', 'b', 'c']); - * // => 3 - * - * _.get(object, 'a.b.c', 'default'); - * // => 'default' - */ - function get(object, path, defaultValue) { - var result = object == null ? undefined : baseGet(object, path); - return result === undefined ? defaultValue : result; - } - - /** - * Checks if `path` is a direct property of `object`. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Object - * @param {Object} object The object to query. - * @param {Array|string} path The path to check. - * @returns {boolean} Returns `true` if `path` exists, else `false`. - * @example - * - * var object = { 'a': { 'b': 2 } }; - * var other = _.create({ 'a': _.create({ 'b': 2 }) }); - * - * _.has(object, 'a'); - * // => true - * - * _.has(object, 'a.b'); - * // => true - * - * _.has(object, ['a', 'b']); - * // => true - * - * _.has(other, 'a'); - * // => false - */ - function has(object, path) { - return object != null && hasPath(object, path, baseHas); - } - - /** - * Checks if `path` is a direct or inherited property of `object`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Object - * @param {Object} object The object to query. - * @param {Array|string} path The path to check. - * @returns {boolean} Returns `true` if `path` exists, else `false`. - * @example - * - * var object = _.create({ 'a': _.create({ 'b': 2 }) }); - * - * _.hasIn(object, 'a'); - * // => true - * - * _.hasIn(object, 'a.b'); - * // => true - * - * _.hasIn(object, ['a', 'b']); - * // => true - * - * _.hasIn(object, 'b'); - * // => false - */ - function hasIn(object, path) { - return object != null && hasPath(object, path, baseHasIn); - } - - /** - * Creates an object composed of the inverted keys and values of `object`. - * If `object` contains duplicate values, subsequent values overwrite - * property assignments of previous values. - * - * @static - * @memberOf _ - * @since 0.7.0 - * @category Object - * @param {Object} object The object to invert. - * @returns {Object} Returns the new inverted object. - * @example - * - * var object = { 'a': 1, 'b': 2, 'c': 1 }; - * - * _.invert(object); - * // => { '1': 'c', '2': 'b' } - */ - var invert = createInverter(function(result, value, key) { - if (value != null && - typeof value.toString != 'function') { - value = nativeObjectToString.call(value); - } - - result[value] = key; - }, constant(identity)); - - /** - * This method is like `_.invert` except that the inverted object is generated - * from the results of running each element of `object` thru `iteratee`. The - * corresponding inverted value of each inverted key is an array of keys - * responsible for generating the inverted value. The iteratee is invoked - * with one argument: (value). - * - * @static - * @memberOf _ - * @since 4.1.0 - * @category Object - * @param {Object} object The object to invert. - * @param {Function} [iteratee=_.identity] The iteratee invoked per element. - * @returns {Object} Returns the new inverted object. - * @example - * - * var object = { 'a': 1, 'b': 2, 'c': 1 }; - * - * _.invertBy(object); - * // => { '1': ['a', 'c'], '2': ['b'] } - * - * _.invertBy(object, function(value) { - * return 'group' + value; - * }); - * // => { 'group1': ['a', 'c'], 'group2': ['b'] } - */ - var invertBy = createInverter(function(result, value, key) { - if (value != null && - typeof value.toString != 'function') { - value = nativeObjectToString.call(value); - } - - if (hasOwnProperty.call(result, value)) { - result[value].push(key); - } else { - result[value] = [key]; - } - }, getIteratee); - - /** - * Invokes the method at `path` of `object`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Object - * @param {Object} object The object to query. - * @param {Array|string} path The path of the method to invoke. - * @param {...*} [args] The arguments to invoke the method with. - * @returns {*} Returns the result of the invoked method. - * @example - * - * var object = { 'a': [{ 'b': { 'c': [1, 2, 3, 4] } }] }; - * - * _.invoke(object, 'a[0].b.c.slice', 1, 3); - * // => [2, 3] - */ - var invoke = baseRest(baseInvoke); - - /** - * Creates an array of the own enumerable property names of `object`. - * - * **Note:** Non-object values are coerced to objects. See the - * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys) - * for more details. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Object - * @param {Object} object The object to query. - * @returns {Array} Returns the array of property names. - * @example - * - * function Foo() { - * this.a = 1; - * this.b = 2; - * } - * - * Foo.prototype.c = 3; - * - * _.keys(new Foo); - * // => ['a', 'b'] (iteration order is not guaranteed) - * - * _.keys('hi'); - * // => ['0', '1'] - */ - function keys(object) { - return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object); - } - - /** - * Creates an array of the own and inherited enumerable property names of `object`. - * - * **Note:** Non-object values are coerced to objects. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Object - * @param {Object} object The object to query. - * @returns {Array} Returns the array of property names. - * @example - * - * function Foo() { - * this.a = 1; - * this.b = 2; - * } - * - * Foo.prototype.c = 3; - * - * _.keysIn(new Foo); - * // => ['a', 'b', 'c'] (iteration order is not guaranteed) - */ - function keysIn(object) { - return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object); - } - - /** - * The opposite of `_.mapValues`; this method creates an object with the - * same values as `object` and keys generated by running each own enumerable - * string keyed property of `object` thru `iteratee`. The iteratee is invoked - * with three arguments: (value, key, object). - * - * @static - * @memberOf _ - * @since 3.8.0 - * @category Object - * @param {Object} object The object to iterate over. - * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @returns {Object} Returns the new mapped object. - * @see _.mapValues - * @example - * - * _.mapKeys({ 'a': 1, 'b': 2 }, function(value, key) { - * return key + value; - * }); - * // => { 'a1': 1, 'b2': 2 } - */ - function mapKeys(object, iteratee) { - var result = {}; - iteratee = getIteratee(iteratee, 3); - - baseForOwn(object, function(value, key, object) { - baseAssignValue(result, iteratee(value, key, object), value); - }); - return result; - } - - /** - * Creates an object with the same keys as `object` and values generated - * by running each own enumerable string keyed property of `object` thru - * `iteratee`. The iteratee is invoked with three arguments: - * (value, key, object). - * - * @static - * @memberOf _ - * @since 2.4.0 - * @category Object - * @param {Object} object The object to iterate over. - * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @returns {Object} Returns the new mapped object. - * @see _.mapKeys - * @example - * - * var users = { - * 'fred': { 'user': 'fred', 'age': 40 }, - * 'pebbles': { 'user': 'pebbles', 'age': 1 } - * }; - * - * _.mapValues(users, function(o) { return o.age; }); - * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed) - * - * // The `_.property` iteratee shorthand. - * _.mapValues(users, 'age'); - * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed) - */ - function mapValues(object, iteratee) { - var result = {}; - iteratee = getIteratee(iteratee, 3); - - baseForOwn(object, function(value, key, object) { - baseAssignValue(result, key, iteratee(value, key, object)); - }); - return result; - } - - /** - * This method is like `_.assign` except that it recursively merges own and - * inherited enumerable string keyed properties of source objects into the - * destination object. Source properties that resolve to `undefined` are - * skipped if a destination value exists. Array and plain object properties - * are merged recursively. Other objects and value types are overridden by - * assignment. Source objects are applied from left to right. Subsequent - * sources overwrite property assignments of previous sources. - * - * **Note:** This method mutates `object`. - * - * @static - * @memberOf _ - * @since 0.5.0 - * @category Object - * @param {Object} object The destination object. - * @param {...Object} [sources] The source objects. - * @returns {Object} Returns `object`. - * @example - * - * var object = { - * 'a': [{ 'b': 2 }, { 'd': 4 }] - * }; - * - * var other = { - * 'a': [{ 'c': 3 }, { 'e': 5 }] - * }; - * - * _.merge(object, other); - * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] } - */ - var merge = createAssigner(function(object, source, srcIndex) { - baseMerge(object, source, srcIndex); - }); - - /** - * This method is like `_.merge` except that it accepts `customizer` which - * is invoked to produce the merged values of the destination and source - * properties. If `customizer` returns `undefined`, merging is handled by the - * method instead. The `customizer` is invoked with six arguments: - * (objValue, srcValue, key, object, source, stack). - * - * **Note:** This method mutates `object`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Object - * @param {Object} object The destination object. - * @param {...Object} sources The source objects. - * @param {Function} customizer The function to customize assigned values. - * @returns {Object} Returns `object`. - * @example - * - * function customizer(objValue, srcValue) { - * if (_.isArray(objValue)) { - * return objValue.concat(srcValue); - * } - * } - * - * var object = { 'a': [1], 'b': [2] }; - * var other = { 'a': [3], 'b': [4] }; - * - * _.mergeWith(object, other, customizer); - * // => { 'a': [1, 3], 'b': [2, 4] } - */ - var mergeWith = createAssigner(function(object, source, srcIndex, customizer) { - baseMerge(object, source, srcIndex, customizer); - }); - - /** - * The opposite of `_.pick`; this method creates an object composed of the - * own and inherited enumerable property paths of `object` that are not omitted. - * - * **Note:** This method is considerably slower than `_.pick`. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Object - * @param {Object} object The source object. - * @param {...(string|string[])} [paths] The property paths to omit. - * @returns {Object} Returns the new object. - * @example - * - * var object = { 'a': 1, 'b': '2', 'c': 3 }; - * - * _.omit(object, ['a', 'c']); - * // => { 'b': '2' } - */ - var omit = flatRest(function(object, paths) { - var result = {}; - if (object == null) { - return result; - } - var isDeep = false; - paths = arrayMap(paths, function(path) { - path = castPath(path, object); - isDeep || (isDeep = path.length > 1); - return path; - }); - copyObject(object, getAllKeysIn(object), result); - if (isDeep) { - result = baseClone(result, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone); - } - var length = paths.length; - while (length--) { - baseUnset(result, paths[length]); - } - return result; - }); - - /** - * The opposite of `_.pickBy`; this method creates an object composed of - * the own and inherited enumerable string keyed properties of `object` that - * `predicate` doesn't return truthy for. The predicate is invoked with two - * arguments: (value, key). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Object - * @param {Object} object The source object. - * @param {Function} [predicate=_.identity] The function invoked per property. - * @returns {Object} Returns the new object. - * @example - * - * var object = { 'a': 1, 'b': '2', 'c': 3 }; - * - * _.omitBy(object, _.isNumber); - * // => { 'b': '2' } - */ - function omitBy(object, predicate) { - return pickBy(object, negate(getIteratee(predicate))); - } - - /** - * Creates an object composed of the picked `object` properties. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Object - * @param {Object} object The source object. - * @param {...(string|string[])} [paths] The property paths to pick. - * @returns {Object} Returns the new object. - * @example - * - * var object = { 'a': 1, 'b': '2', 'c': 3 }; - * - * _.pick(object, ['a', 'c']); - * // => { 'a': 1, 'c': 3 } - */ - var pick = flatRest(function(object, paths) { - return object == null ? {} : basePick(object, paths); - }); - - /** - * Creates an object composed of the `object` properties `predicate` returns - * truthy for. The predicate is invoked with two arguments: (value, key). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Object - * @param {Object} object The source object. - * @param {Function} [predicate=_.identity] The function invoked per property. - * @returns {Object} Returns the new object. - * @example - * - * var object = { 'a': 1, 'b': '2', 'c': 3 }; - * - * _.pickBy(object, _.isNumber); - * // => { 'a': 1, 'c': 3 } - */ - function pickBy(object, predicate) { - if (object == null) { - return {}; - } - var props = arrayMap(getAllKeysIn(object), function(prop) { - return [prop]; - }); - predicate = getIteratee(predicate); - return basePickBy(object, props, function(value, path) { - return predicate(value, path[0]); - }); - } - - /** - * This method is like `_.get` except that if the resolved value is a - * function it's invoked with the `this` binding of its parent object and - * its result is returned. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Object - * @param {Object} object The object to query. - * @param {Array|string} path The path of the property to resolve. - * @param {*} [defaultValue] The value returned for `undefined` resolved values. - * @returns {*} Returns the resolved value. - * @example - * - * var object = { 'a': [{ 'b': { 'c1': 3, 'c2': _.constant(4) } }] }; - * - * _.result(object, 'a[0].b.c1'); - * // => 3 - * - * _.result(object, 'a[0].b.c2'); - * // => 4 - * - * _.result(object, 'a[0].b.c3', 'default'); - * // => 'default' - * - * _.result(object, 'a[0].b.c3', _.constant('default')); - * // => 'default' - */ - function result(object, path, defaultValue) { - path = castPath(path, object); - - var index = -1, - length = path.length; - - // Ensure the loop is entered when path is empty. - if (!length) { - length = 1; - object = undefined; - } - while (++index < length) { - var value = object == null ? undefined : object[toKey(path[index])]; - if (value === undefined) { - index = length; - value = defaultValue; - } - object = isFunction(value) ? value.call(object) : value; - } - return object; - } - - /** - * Sets the value at `path` of `object`. If a portion of `path` doesn't exist, - * it's created. Arrays are created for missing index properties while objects - * are created for all other missing properties. Use `_.setWith` to customize - * `path` creation. - * - * **Note:** This method mutates `object`. - * - * @static - * @memberOf _ - * @since 3.7.0 - * @category Object - * @param {Object} object The object to modify. - * @param {Array|string} path The path of the property to set. - * @param {*} value The value to set. - * @returns {Object} Returns `object`. - * @example - * - * var object = { 'a': [{ 'b': { 'c': 3 } }] }; - * - * _.set(object, 'a[0].b.c', 4); - * console.log(object.a[0].b.c); - * // => 4 - * - * _.set(object, ['x', '0', 'y', 'z'], 5); - * console.log(object.x[0].y.z); - * // => 5 - */ - function set(object, path, value) { - return object == null ? object : baseSet(object, path, value); - } - - /** - * This method is like `_.set` except that it accepts `customizer` which is - * invoked to produce the objects of `path`. If `customizer` returns `undefined` - * path creation is handled by the method instead. The `customizer` is invoked - * with three arguments: (nsValue, key, nsObject). - * - * **Note:** This method mutates `object`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Object - * @param {Object} object The object to modify. - * @param {Array|string} path The path of the property to set. - * @param {*} value The value to set. - * @param {Function} [customizer] The function to customize assigned values. - * @returns {Object} Returns `object`. - * @example - * - * var object = {}; - * - * _.setWith(object, '[0][1]', 'a', Object); - * // => { '0': { '1': 'a' } } - */ - function setWith(object, path, value, customizer) { - customizer = typeof customizer == 'function' ? customizer : undefined; - return object == null ? object : baseSet(object, path, value, customizer); - } - - /** - * Creates an array of own enumerable string keyed-value pairs for `object` - * which can be consumed by `_.fromPairs`. If `object` is a map or set, its - * entries are returned. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @alias entries - * @category Object - * @param {Object} object The object to query. - * @returns {Array} Returns the key-value pairs. - * @example - * - * function Foo() { - * this.a = 1; - * this.b = 2; - * } - * - * Foo.prototype.c = 3; - * - * _.toPairs(new Foo); - * // => [['a', 1], ['b', 2]] (iteration order is not guaranteed) - */ - var toPairs = createToPairs(keys); - - /** - * Creates an array of own and inherited enumerable string keyed-value pairs - * for `object` which can be consumed by `_.fromPairs`. If `object` is a map - * or set, its entries are returned. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @alias entriesIn - * @category Object - * @param {Object} object The object to query. - * @returns {Array} Returns the key-value pairs. - * @example - * - * function Foo() { - * this.a = 1; - * this.b = 2; - * } - * - * Foo.prototype.c = 3; - * - * _.toPairsIn(new Foo); - * // => [['a', 1], ['b', 2], ['c', 3]] (iteration order is not guaranteed) - */ - var toPairsIn = createToPairs(keysIn); - - /** - * An alternative to `_.reduce`; this method transforms `object` to a new - * `accumulator` object which is the result of running each of its own - * enumerable string keyed properties thru `iteratee`, with each invocation - * potentially mutating the `accumulator` object. If `accumulator` is not - * provided, a new object with the same `[[Prototype]]` will be used. The - * iteratee is invoked with four arguments: (accumulator, value, key, object). - * Iteratee functions may exit iteration early by explicitly returning `false`. - * - * @static - * @memberOf _ - * @since 1.3.0 - * @category Object - * @param {Object} object The object to iterate over. - * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @param {*} [accumulator] The custom accumulator value. - * @returns {*} Returns the accumulated value. - * @example - * - * _.transform([2, 3, 4], function(result, n) { - * result.push(n *= n); - * return n % 2 == 0; - * }, []); - * // => [4, 9] - * - * _.transform({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) { - * (result[value] || (result[value] = [])).push(key); - * }, {}); - * // => { '1': ['a', 'c'], '2': ['b'] } - */ - function transform(object, iteratee, accumulator) { - var isArr = isArray(object), - isArrLike = isArr || isBuffer(object) || isTypedArray(object); - - iteratee = getIteratee(iteratee, 4); - if (accumulator == null) { - var Ctor = object && object.constructor; - if (isArrLike) { - accumulator = isArr ? new Ctor : []; - } - else if (isObject(object)) { - accumulator = isFunction(Ctor) ? baseCreate(getPrototype(object)) : {}; - } - else { - accumulator = {}; - } - } - (isArrLike ? arrayEach : baseForOwn)(object, function(value, index, object) { - return iteratee(accumulator, value, index, object); - }); - return accumulator; - } - - /** - * Removes the property at `path` of `object`. - * - * **Note:** This method mutates `object`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Object - * @param {Object} object The object to modify. - * @param {Array|string} path The path of the property to unset. - * @returns {boolean} Returns `true` if the property is deleted, else `false`. - * @example - * - * var object = { 'a': [{ 'b': { 'c': 7 } }] }; - * _.unset(object, 'a[0].b.c'); - * // => true - * - * console.log(object); - * // => { 'a': [{ 'b': {} }] }; - * - * _.unset(object, ['a', '0', 'b', 'c']); - * // => true - * - * console.log(object); - * // => { 'a': [{ 'b': {} }] }; - */ - function unset(object, path) { - return object == null ? true : baseUnset(object, path); - } - - /** - * This method is like `_.set` except that accepts `updater` to produce the - * value to set. Use `_.updateWith` to customize `path` creation. The `updater` - * is invoked with one argument: (value). - * - * **Note:** This method mutates `object`. - * - * @static - * @memberOf _ - * @since 4.6.0 - * @category Object - * @param {Object} object The object to modify. - * @param {Array|string} path The path of the property to set. - * @param {Function} updater The function to produce the updated value. - * @returns {Object} Returns `object`. - * @example - * - * var object = { 'a': [{ 'b': { 'c': 3 } }] }; - * - * _.update(object, 'a[0].b.c', function(n) { return n * n; }); - * console.log(object.a[0].b.c); - * // => 9 - * - * _.update(object, 'x[0].y.z', function(n) { return n ? n + 1 : 0; }); - * console.log(object.x[0].y.z); - * // => 0 - */ - function update(object, path, updater) { - return object == null ? object : baseUpdate(object, path, castFunction(updater)); - } - - /** - * This method is like `_.update` except that it accepts `customizer` which is - * invoked to produce the objects of `path`. If `customizer` returns `undefined` - * path creation is handled by the method instead. The `customizer` is invoked - * with three arguments: (nsValue, key, nsObject). - * - * **Note:** This method mutates `object`. - * - * @static - * @memberOf _ - * @since 4.6.0 - * @category Object - * @param {Object} object The object to modify. - * @param {Array|string} path The path of the property to set. - * @param {Function} updater The function to produce the updated value. - * @param {Function} [customizer] The function to customize assigned values. - * @returns {Object} Returns `object`. - * @example - * - * var object = {}; - * - * _.updateWith(object, '[0][1]', _.constant('a'), Object); - * // => { '0': { '1': 'a' } } - */ - function updateWith(object, path, updater, customizer) { - customizer = typeof customizer == 'function' ? customizer : undefined; - return object == null ? object : baseUpdate(object, path, castFunction(updater), customizer); - } - - /** - * Creates an array of the own enumerable string keyed property values of `object`. - * - * **Note:** Non-object values are coerced to objects. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category Object - * @param {Object} object The object to query. - * @returns {Array} Returns the array of property values. - * @example - * - * function Foo() { - * this.a = 1; - * this.b = 2; - * } - * - * Foo.prototype.c = 3; - * - * _.values(new Foo); - * // => [1, 2] (iteration order is not guaranteed) - * - * _.values('hi'); - * // => ['h', 'i'] - */ - function values(object) { - return object == null ? [] : baseValues(object, keys(object)); - } - - /** - * Creates an array of the own and inherited enumerable string keyed property - * values of `object`. - * - * **Note:** Non-object values are coerced to objects. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category Object - * @param {Object} object The object to query. - * @returns {Array} Returns the array of property values. - * @example - * - * function Foo() { - * this.a = 1; - * this.b = 2; - * } - * - * Foo.prototype.c = 3; - * - * _.valuesIn(new Foo); - * // => [1, 2, 3] (iteration order is not guaranteed) - */ - function valuesIn(object) { - return object == null ? [] : baseValues(object, keysIn(object)); - } - - /*------------------------------------------------------------------------*/ - - /** - * Clamps `number` within the inclusive `lower` and `upper` bounds. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category Number - * @param {number} number The number to clamp. - * @param {number} [lower] The lower bound. - * @param {number} upper The upper bound. - * @returns {number} Returns the clamped number. - * @example - * - * _.clamp(-10, -5, 5); - * // => -5 - * - * _.clamp(10, -5, 5); - * // => 5 - */ - function clamp(number, lower, upper) { - if (upper === undefined) { - upper = lower; - lower = undefined; - } - if (upper !== undefined) { - upper = toNumber(upper); - upper = upper === upper ? upper : 0; - } - if (lower !== undefined) { - lower = toNumber(lower); - lower = lower === lower ? lower : 0; - } - return baseClamp(toNumber(number), lower, upper); - } - - /** - * Checks if `n` is between `start` and up to, but not including, `end`. If - * `end` is not specified, it's set to `start` with `start` then set to `0`. - * If `start` is greater than `end` the params are swapped to support - * negative ranges. - * - * @static - * @memberOf _ - * @since 3.3.0 - * @category Number - * @param {number} number The number to check. - * @param {number} [start=0] The start of the range. - * @param {number} end The end of the range. - * @returns {boolean} Returns `true` if `number` is in the range, else `false`. - * @see _.range, _.rangeRight - * @example - * - * _.inRange(3, 2, 4); - * // => true - * - * _.inRange(4, 8); - * // => true - * - * _.inRange(4, 2); - * // => false - * - * _.inRange(2, 2); - * // => false - * - * _.inRange(1.2, 2); - * // => true - * - * _.inRange(5.2, 4); - * // => false - * - * _.inRange(-3, -2, -6); - * // => true - */ - function inRange(number, start, end) { - start = toFinite(start); - if (end === undefined) { - end = start; - start = 0; - } else { - end = toFinite(end); - } - number = toNumber(number); - return baseInRange(number, start, end); - } - - /** - * Produces a random number between the inclusive `lower` and `upper` bounds. - * If only one argument is provided a number between `0` and the given number - * is returned. If `floating` is `true`, or either `lower` or `upper` are - * floats, a floating-point number is returned instead of an integer. - * - * **Note:** JavaScript follows the IEEE-754 standard for resolving - * floating-point values which can produce unexpected results. - * - * @static - * @memberOf _ - * @since 0.7.0 - * @category Number - * @param {number} [lower=0] The lower bound. - * @param {number} [upper=1] The upper bound. - * @param {boolean} [floating] Specify returning a floating-point number. - * @returns {number} Returns the random number. - * @example - * - * _.random(0, 5); - * // => an integer between 0 and 5 - * - * _.random(5); - * // => also an integer between 0 and 5 - * - * _.random(5, true); - * // => a floating-point number between 0 and 5 - * - * _.random(1.2, 5.2); - * // => a floating-point number between 1.2 and 5.2 - */ - function random(lower, upper, floating) { - if (floating && typeof floating != 'boolean' && isIterateeCall(lower, upper, floating)) { - upper = floating = undefined; - } - if (floating === undefined) { - if (typeof upper == 'boolean') { - floating = upper; - upper = undefined; - } - else if (typeof lower == 'boolean') { - floating = lower; - lower = undefined; - } - } - if (lower === undefined && upper === undefined) { - lower = 0; - upper = 1; - } - else { - lower = toFinite(lower); - if (upper === undefined) { - upper = lower; - lower = 0; - } else { - upper = toFinite(upper); - } - } - if (lower > upper) { - var temp = lower; - lower = upper; - upper = temp; - } - if (floating || lower % 1 || upper % 1) { - var rand = nativeRandom(); - return nativeMin(lower + (rand * (upper - lower + freeParseFloat('1e-' + ((rand + '').length - 1)))), upper); - } - return baseRandom(lower, upper); - } - - /*------------------------------------------------------------------------*/ - - /** - * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase). - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category String - * @param {string} [string=''] The string to convert. - * @returns {string} Returns the camel cased string. - * @example - * - * _.camelCase('Foo Bar'); - * // => 'fooBar' - * - * _.camelCase('--foo-bar--'); - * // => 'fooBar' - * - * _.camelCase('__FOO_BAR__'); - * // => 'fooBar' - */ - var camelCase = createCompounder(function(result, word, index) { - word = word.toLowerCase(); - return result + (index ? capitalize(word) : word); - }); - - /** - * Converts the first character of `string` to upper case and the remaining - * to lower case. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category String - * @param {string} [string=''] The string to capitalize. - * @returns {string} Returns the capitalized string. - * @example - * - * _.capitalize('FRED'); - * // => 'Fred' - */ - function capitalize(string) { - return upperFirst(toString(string).toLowerCase()); - } - - /** - * Deburrs `string` by converting - * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table) - * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A) - * letters to basic Latin letters and removing - * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks). - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category String - * @param {string} [string=''] The string to deburr. - * @returns {string} Returns the deburred string. - * @example - * - * _.deburr('déjà vu'); - * // => 'deja vu' - */ - function deburr(string) { - string = toString(string); - return string && string.replace(reLatin, deburrLetter).replace(reComboMark, ''); - } - - /** - * Checks if `string` ends with the given target string. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category String - * @param {string} [string=''] The string to inspect. - * @param {string} [target] The string to search for. - * @param {number} [position=string.length] The position to search up to. - * @returns {boolean} Returns `true` if `string` ends with `target`, - * else `false`. - * @example - * - * _.endsWith('abc', 'c'); - * // => true - * - * _.endsWith('abc', 'b'); - * // => false - * - * _.endsWith('abc', 'b', 2); - * // => true - */ - function endsWith(string, target, position) { - string = toString(string); - target = baseToString(target); - - var length = string.length; - position = position === undefined - ? length - : baseClamp(toInteger(position), 0, length); - - var end = position; - position -= target.length; - return position >= 0 && string.slice(position, end) == target; - } - - /** - * Converts the characters "&", "<", ">", '"', and "'" in `string` to their - * corresponding HTML entities. - * - * **Note:** No other characters are escaped. To escape additional - * characters use a third-party library like [_he_](https://mths.be/he). - * - * Though the ">" character is escaped for symmetry, characters like - * ">" and "/" don't need escaping in HTML and have no special meaning - * unless they're part of a tag or unquoted attribute value. See - * [Mathias Bynens's article](https://mathiasbynens.be/notes/ambiguous-ampersands) - * (under "semi-related fun fact") for more details. - * - * When working with HTML you should always - * [quote attribute values](http://wonko.com/post/html-escaping) to reduce - * XSS vectors. - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category String - * @param {string} [string=''] The string to escape. - * @returns {string} Returns the escaped string. - * @example - * - * _.escape('fred, barney, & pebbles'); - * // => 'fred, barney, & pebbles' - */ - function escape(string) { - string = toString(string); - return (string && reHasUnescapedHtml.test(string)) - ? string.replace(reUnescapedHtml, escapeHtmlChar) - : string; - } - - /** - * Escapes the `RegExp` special characters "^", "$", "\", ".", "*", "+", - * "?", "(", ")", "[", "]", "{", "}", and "|" in `string`. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category String - * @param {string} [string=''] The string to escape. - * @returns {string} Returns the escaped string. - * @example - * - * _.escapeRegExp('[lodash](https://lodash.com/)'); - * // => '\[lodash\]\(https://lodash\.com/\)' - */ - function escapeRegExp(string) { - string = toString(string); - return (string && reHasRegExpChar.test(string)) - ? string.replace(reRegExpChar, '\\$&') - : string; - } - - /** - * Converts `string` to - * [kebab case](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles). - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category String - * @param {string} [string=''] The string to convert. - * @returns {string} Returns the kebab cased string. - * @example - * - * _.kebabCase('Foo Bar'); - * // => 'foo-bar' - * - * _.kebabCase('fooBar'); - * // => 'foo-bar' - * - * _.kebabCase('__FOO_BAR__'); - * // => 'foo-bar' - */ - var kebabCase = createCompounder(function(result, word, index) { - return result + (index ? '-' : '') + word.toLowerCase(); - }); - - /** - * Converts `string`, as space separated words, to lower case. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category String - * @param {string} [string=''] The string to convert. - * @returns {string} Returns the lower cased string. - * @example - * - * _.lowerCase('--Foo-Bar--'); - * // => 'foo bar' - * - * _.lowerCase('fooBar'); - * // => 'foo bar' - * - * _.lowerCase('__FOO_BAR__'); - * // => 'foo bar' - */ - var lowerCase = createCompounder(function(result, word, index) { - return result + (index ? ' ' : '') + word.toLowerCase(); - }); - - /** - * Converts the first character of `string` to lower case. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category String - * @param {string} [string=''] The string to convert. - * @returns {string} Returns the converted string. - * @example - * - * _.lowerFirst('Fred'); - * // => 'fred' - * - * _.lowerFirst('FRED'); - * // => 'fRED' - */ - var lowerFirst = createCaseFirst('toLowerCase'); - - /** - * Pads `string` on the left and right sides if it's shorter than `length`. - * Padding characters are truncated if they can't be evenly divided by `length`. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category String - * @param {string} [string=''] The string to pad. - * @param {number} [length=0] The padding length. - * @param {string} [chars=' '] The string used as padding. - * @returns {string} Returns the padded string. - * @example - * - * _.pad('abc', 8); - * // => ' abc ' - * - * _.pad('abc', 8, '_-'); - * // => '_-abc_-_' - * - * _.pad('abc', 3); - * // => 'abc' - */ - function pad(string, length, chars) { - string = toString(string); - length = toInteger(length); - - var strLength = length ? stringSize(string) : 0; - if (!length || strLength >= length) { - return string; - } - var mid = (length - strLength) / 2; - return ( - createPadding(nativeFloor(mid), chars) + - string + - createPadding(nativeCeil(mid), chars) - ); - } - - /** - * Pads `string` on the right side if it's shorter than `length`. Padding - * characters are truncated if they exceed `length`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category String - * @param {string} [string=''] The string to pad. - * @param {number} [length=0] The padding length. - * @param {string} [chars=' '] The string used as padding. - * @returns {string} Returns the padded string. - * @example - * - * _.padEnd('abc', 6); - * // => 'abc ' - * - * _.padEnd('abc', 6, '_-'); - * // => 'abc_-_' - * - * _.padEnd('abc', 3); - * // => 'abc' - */ - function padEnd(string, length, chars) { - string = toString(string); - length = toInteger(length); - - var strLength = length ? stringSize(string) : 0; - return (length && strLength < length) - ? (string + createPadding(length - strLength, chars)) - : string; - } - - /** - * Pads `string` on the left side if it's shorter than `length`. Padding - * characters are truncated if they exceed `length`. - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category String - * @param {string} [string=''] The string to pad. - * @param {number} [length=0] The padding length. - * @param {string} [chars=' '] The string used as padding. - * @returns {string} Returns the padded string. - * @example - * - * _.padStart('abc', 6); - * // => ' abc' - * - * _.padStart('abc', 6, '_-'); - * // => '_-_abc' - * - * _.padStart('abc', 3); - * // => 'abc' - */ - function padStart(string, length, chars) { - string = toString(string); - length = toInteger(length); - - var strLength = length ? stringSize(string) : 0; - return (length && strLength < length) - ? (createPadding(length - strLength, chars) + string) - : string; - } - - /** - * Converts `string` to an integer of the specified radix. If `radix` is - * `undefined` or `0`, a `radix` of `10` is used unless `value` is a - * hexadecimal, in which case a `radix` of `16` is used. - * - * **Note:** This method aligns with the - * [ES5 implementation](https://es5.github.io/#x15.1.2.2) of `parseInt`. - * - * @static - * @memberOf _ - * @since 1.1.0 - * @category String - * @param {string} string The string to convert. - * @param {number} [radix=10] The radix to interpret `value` by. - * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. - * @returns {number} Returns the converted integer. - * @example - * - * _.parseInt('08'); - * // => 8 - * - * _.map(['6', '08', '10'], _.parseInt); - * // => [6, 8, 10] - */ - function parseInt(string, radix, guard) { - if (guard || radix == null) { - radix = 0; - } else if (radix) { - radix = +radix; - } - return nativeParseInt(toString(string).replace(reTrimStart, ''), radix || 0); - } - - /** - * Repeats the given string `n` times. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category String - * @param {string} [string=''] The string to repeat. - * @param {number} [n=1] The number of times to repeat the string. - * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. - * @returns {string} Returns the repeated string. - * @example - * - * _.repeat('*', 3); - * // => '***' - * - * _.repeat('abc', 2); - * // => 'abcabc' - * - * _.repeat('abc', 0); - * // => '' - */ - function repeat(string, n, guard) { - if ((guard ? isIterateeCall(string, n, guard) : n === undefined)) { - n = 1; - } else { - n = toInteger(n); - } - return baseRepeat(toString(string), n); - } - - /** - * Replaces matches for `pattern` in `string` with `replacement`. - * - * **Note:** This method is based on - * [`String#replace`](https://mdn.io/String/replace). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category String - * @param {string} [string=''] The string to modify. - * @param {RegExp|string} pattern The pattern to replace. - * @param {Function|string} replacement The match replacement. - * @returns {string} Returns the modified string. - * @example - * - * _.replace('Hi Fred', 'Fred', 'Barney'); - * // => 'Hi Barney' - */ - function replace() { - var args = arguments, - string = toString(args[0]); - - return args.length < 3 ? string : string.replace(args[1], args[2]); - } - - /** - * Converts `string` to - * [snake case](https://en.wikipedia.org/wiki/Snake_case). - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category String - * @param {string} [string=''] The string to convert. - * @returns {string} Returns the snake cased string. - * @example - * - * _.snakeCase('Foo Bar'); - * // => 'foo_bar' - * - * _.snakeCase('fooBar'); - * // => 'foo_bar' - * - * _.snakeCase('--FOO-BAR--'); - * // => 'foo_bar' - */ - var snakeCase = createCompounder(function(result, word, index) { - return result + (index ? '_' : '') + word.toLowerCase(); - }); - - /** - * Splits `string` by `separator`. - * - * **Note:** This method is based on - * [`String#split`](https://mdn.io/String/split). - * - * @static - * @memberOf _ - * @since 4.0.0 - * @category String - * @param {string} [string=''] The string to split. - * @param {RegExp|string} separator The separator pattern to split by. - * @param {number} [limit] The length to truncate results to. - * @returns {Array} Returns the string segments. - * @example - * - * _.split('a-b-c', '-', 2); - * // => ['a', 'b'] - */ - function split(string, separator, limit) { - if (limit && typeof limit != 'number' && isIterateeCall(string, separator, limit)) { - separator = limit = undefined; - } - limit = limit === undefined ? MAX_ARRAY_LENGTH : limit >>> 0; - if (!limit) { - return []; - } - string = toString(string); - if (string && ( - typeof separator == 'string' || - (separator != null && !isRegExp(separator)) - )) { - separator = baseToString(separator); - if (!separator && hasUnicode(string)) { - return castSlice(stringToArray(string), 0, limit); - } - } - return string.split(separator, limit); - } - - /** - * Converts `string` to - * [start case](https://en.wikipedia.org/wiki/Letter_case#Stylistic_or_specialised_usage). - * - * @static - * @memberOf _ - * @since 3.1.0 - * @category String - * @param {string} [string=''] The string to convert. - * @returns {string} Returns the start cased string. - * @example - * - * _.startCase('--foo-bar--'); - * // => 'Foo Bar' - * - * _.startCase('fooBar'); - * // => 'Foo Bar' - * - * _.startCase('__FOO_BAR__'); - * // => 'FOO BAR' - */ - var startCase = createCompounder(function(result, word, index) { - return result + (index ? ' ' : '') + upperFirst(word); - }); - - /** - * Checks if `string` starts with the given target string. - * - * @static - * @memberOf _ - * @since 3.0.0 - * @category String - * @param {string} [string=''] The string to inspect. - * @param {string} [target] The string to search for. - * @param {number} [position=0] The position to search from. - * @returns {boolean} Returns `true` if `string` starts with `target`, - * else `false`. - * @example - * - * _.startsWith('abc', 'a'); - * // => true - * - * _.startsWith('abc', 'b'); - * // => false - * - * _.startsWith('abc', 'b', 1); - * // => true - */ - function startsWith(string, target, position) { - string = toString(string); - position = position == null - ? 0 - : baseClamp(toInteger(position), 0, string.length); - - target = baseToString(target); - return string.slice(position, position + target.length) == target; - } - - /** - * Creates a compiled template function that can interpolate data properties - * in "interpolate" delimiters, HTML-escape interpolated data properties in - * "escape" delimiters, and execute JavaScript in "evaluate" delimiters. Data - * properties may be accessed as free variables in the template. If a setting - * object is given, it takes precedence over `_.templateSettings` values. - * - * **Note:** In the development build `_.template` utilizes - * [sourceURLs](http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/#toc-sourceurl) - * for easier debugging. - * - * For more information on precompiling templates see - * [lodash's custom builds documentation](https://lodash.com/custom-builds). - * - * For more information on Chrome extension sandboxes see - * [Chrome's extensions documentation](https://developer.chrome.com/extensions/sandboxingEval). - * - * @static - * @since 0.1.0 - * @memberOf _ - * @category String - * @param {string} [string=''] The template string. - * @param {Object} [options={}] The options object. - * @param {RegExp} [options.escape=_.templateSettings.escape] - * The HTML "escape" delimiter. - * @param {RegExp} [options.evaluate=_.templateSettings.evaluate] - * The "evaluate" delimiter. - * @param {Object} [options.imports=_.templateSettings.imports] - * An object to import into the template as free variables. - * @param {RegExp} [options.interpolate=_.templateSettings.interpolate] - * The "interpolate" delimiter. - * @param {string} [options.sourceURL='lodash.templateSources[n]'] - * The sourceURL of the compiled template. - * @param {string} [options.variable='obj'] - * The data object variable name. - * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`. - * @returns {Function} Returns the compiled template function. - * @example - * - * // Use the "interpolate" delimiter to create a compiled template. - * var compiled = _.template('hello <%= user %>!'); - * compiled({ 'user': 'fred' }); - * // => 'hello fred!' - * - * // Use the HTML "escape" delimiter to escape data property values. - * var compiled = _.template('<%- value %>'); - * compiled({ 'value': '