From 85bb55f96559ec706c8103d47b277215c4a8984f Mon Sep 17 00:00:00 2001 From: Jan Wissmann Date: Sun, 8 Nov 2020 13:13:49 +0100 Subject: [PATCH 1/8] Non-Working Example for custom shapes --- src/graphs.jl | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/graphs.jl b/src/graphs.jl index aa9a684..d91cf2c 100644 --- a/src/graphs.jl +++ b/src/graphs.jl @@ -487,6 +487,9 @@ more details. nodeheight = (yextent[2] - yextent[1]) push!(node_vec_vec_xy, partialellipse(0, 2π, [x[i], y[i]], 80, nodewidth/2, nodeheight/2)) + elseif applicable(nodeshape[node_number], x[i], y[i], 0., 0.) + nodeheight = (yextent[2] - yextent[1]) + push!(node_vec_vec_xy, nodeshape[node_number](x[i], y[i], nodewidth/2, nodeheight/2)) else error("Unknown nodeshape: $(nodeshape[node_number]). Choose from :circle, ellipse, :hexagon, :rect or :rectangle.") end From d13992cd10565307b70d9843d95063abc84ce149 Mon Sep 17 00:00:00 2001 From: Jan Wissmann Date: Tue, 10 Nov 2020 12:55:27 +0100 Subject: [PATCH 2/8] Added custom nodeshapes --- assets/custom_nodeshape.png | Bin 0 -> 18748 bytes src/graphs.jl | 11 +++++++++-- test/functions.jl | 32 ++++++++++++++++++++++++++++++++ 3 files changed, 41 insertions(+), 2 deletions(-) create mode 100644 assets/custom_nodeshape.png diff --git a/assets/custom_nodeshape.png b/assets/custom_nodeshape.png new file mode 100644 index 0000000000000000000000000000000000000000..9fe85c9145a7b67b064c1f9783375a29081b75f1 GIT binary patch literal 18748 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 z�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 0.5] .= 0 + for i in 1:5 + g[i,i] = 0 + end + graphplot(g, nodeshape=[:circle, shapy, shapy_wh, :hexagon, shapy]) +end + function funky_edge_and_marker_args() Random.seed!(6) n = 5 From 68aab9cb408d236bf362d8ccc8229fc6ad80c230 Mon Sep 17 00:00:00 2001 From: Jan Wissmann Date: Wed, 11 Nov 2020 10:18:56 +0100 Subject: [PATCH 3/8] Added a test for custom shapes and set markershape to :circle --- assets/custom_nodeshape.png | Bin 18748 -> 0 bytes src/graphs.jl | 2 +- test/figures.jl | 2 ++ test/generate_figures.jl | 3 +++ 4 files changed, 6 insertions(+), 1 deletion(-) delete mode 100644 assets/custom_nodeshape.png diff --git a/assets/custom_nodeshape.png b/assets/custom_nodeshape.png deleted file mode 100644 index 9fe85c9145a7b67b064c1f9783375a29081b75f1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18748 zcmeHv_dnKc{PtyLWi$xM3KdbZlU1UOhzJRhk(n(sMAJwa*{RI3C6ZMkS(UAjy(^pW z99Q@Aeg1^!r|)&YUhb0XbA3MN`5wpnIF8dDElri}G;A~k0%7|Z)l=sQ1k#HH0!aiF zDZaCzf2Rfiqr9S~a*D7;{4b>C#bSi)O_MQjaA206kuGY-c+Rvy>PV!uzg5){X0b}hvF6OL-tNjdpot_o9 zA9Ztdd2Mq3nSYq*lGIco$zV15nT{o@VLv{4{BHat{zuSNV!{o*Or;_r1axQx69@{n z2b2he6!Bf$1VSs@T}A@Idb=_eflw5}Lrx$Vp8Ve*|DTl!(0CFbpBY9Va40a5=GEr! z6rPMKmiPOs>c&V|!O8`UgeALnd;IyU({Qlot5qs3$r>BpYn$jKT|71(ch0EBC_2Gc z?nd)Bo70?fJ}EN02!Cmnsj8F&E@^J~4ZBw8?BbTb%XOPMdqZScy(qm!iG_551G}TQ znnlt3KbKQ;?FyV}y+!b)!6*787MUJ* zY5$@VY8i1pTWR)mn;UGlEPIkqxP&aeA*7gJWFn3Dy!h>CYGo%=?mqu97yJ7pKe7ex zKa}$sXEbsqQK<9Gq$gC_OxxL02VTste!E$B{QZ&QF!^sE2g-_cpYqfWX-4Gb9Wk0G zsq(KS-i&)m$-Yh|Z={NFQf9IRxC3lTbq=;Y*v*{wEM{Qq@ z$;iz2KYlF*L+uuC>T-?ccv&RaKRd zysf9lP*0CvK%i63(#vagq%r1uU*GV^h@?YbscAK-oSfXD%KZeDE2Ij!($dlm_4Ns| zUIp*oB{f)V&bP>a`t%8R{_x>L$NqQrTk1wey)mJ&v9T-b>&N0g+xM1COilT(Eld~% zy)G)kH?d+mdV22t?|dD9yfquqCrRPRp(0U@h>SdH`FRf$6H_49*|TShii>M&Yp+^Z zd~0tPJakA#cKCDLF>G6mh>4|WoNY(W!NZ3ueAgx9<^2T;W&QrH{9T>z%r%h|7vK0@ z$C<8~`01etnZmKs(^Lw9XQKFvUz@6_H9q81OGr!<7ZXd8^?LeZ=>hvB^_AJaH>s(q z>ikjn?oH)ZZtmE%>(U$Nt42mf0)-iwnQzL<_zqL+i zrAADvdoNA1idjdbrSU23yt^fLrBm+bE5<6pM@ho}397=8kzl6lnWPA3$efut5x-FcCjtZ&(F_4bCr(Je+z{pG%@k}cw1Wdz7uP!0@$A$H*U;y(wEO7OeiTS zD>s&Uvo2(p#izb`v%0o8C2%gu?%Fj3zhRkcW~$2O7_cH{%K@a4DTqodIY34N<2 zEyAB#S|r89-Z~A|y!D#DA)$njZ-^2&CMqgHjEdTjn`GOT?au)j-) ztX1&v;luZs5BF61%ilSy${1W$R#sVA85DF9cNo5nRnj4$yxiN}U4oOd|Jj+Sy?gf} zG?cEW5}E^e$j2X_@Lr;0m#~}ZDSj57lbh?mIN82BKPG=;AwzPg{?n&@CvGfEd`&m6 z3lo=+NRs#89DA8XP#E}jK*4c8Kfmy$(j&)?A={oP>-3em*$#bt(AL(5uTvY=4<0utBKRWM?jFJ+)lP7CYp=xRZpYQbY_MYo07L=2_eED+H zBN8J+LmwX>`hBtoczFxGmuFj+y$P*5?=q%@cH|hGWPJZzEvD;8OnLeG=EnNY9Xn1x zU{mghrK7BEX_>3KN%r&SPrN7bgtvqNFWG{~0i}SXQkSvj=)*<@1qEf^@uuO42)>^m z?om@ypA4bnzTQ<*BH{19wXwc@@7}$+?!s+uRARwco06=oLvC)1+4{K!t8Bg4u2;t8 z%q%Pde0<8Y_4fAms2yG99&-cLL8#R&h_cAzatbCu4dW8t-s{{aLr_B=Zs?$N9Y-1B z=RbY^{KJK6R=SYz@RoPJ>$`UEX4of-3_P>8i{Q)XkW3g)8WQhf@S!ax5%+iNp6Y z>oy)^W8-V)du3cz&z)=O>wEj+MToKv6%EZMo^N$^^~#kih(e_2T>81>i()Kqv*goNC=Lp@a%!F3z!h9D9{Xh>K(0w@;X#|KsGuK3UH^)Y!GP zHB=`vqk~R6c5y4jNXf`_baa%Jm+Np0R~C7goj!fq)3da+REqsY`SqcXDE(+IzUZZI zn@Od}G#`-q^ka!~O)61HuV)4MJU}t*d*jm6(}Q~j7%{DNb$567^72Bcw}1O4>olOC zqq8$xfWj2Ou*&1ep8Jbaot($r?OIb5b*&}{EG#jI7Sz@J{NL-#bKOVMQc?zzPI!O$ z_xc#l$;rf29dd@`;v63l=x`GyrGL2gnF?nav`^?hP6733| z5AE*Nt5;n*G#gBM!Gy%s!BEcA;rlkmlKszfJj=#ao0Cqkv$AGpWYjl%C8M`Fe3wCI zMd1!-Jr=$srs&Duh@3 z�4^Z$NLKZgrA+S-0?Ya1N>NG&kVnTP1#6I30G3~Nq2&LVtC)h*g#etzD?)%C60 zR5UUzKHcy4&kyJXwzjq>PMo-)tJ@`eT!CRgUm_sP%hU7rojZ$l#3voBxrMGgKiWjg zz+g51E$#FJG=fX-d{&EWzG^1P-pLMWT{csuYQ2fhzI*p$WRBm)p{Ljik&Af)-!gSj z60dAc^YQV~)6=7xBqb&Bp1yDDPY4jMLBNwCU6PJjX;wNY26DN&xtW`rd(8HEO?Mq# zY7rI?U}0ggva`#1{@iV2&24ELVVnmI{2lt2APU0g&+5$=>mEf%KfxSU6_+h+) zsHkYPkik=w(9zGV+}zy6ckRVqnDhduple8{QBVi&k#-)&Umr$A&CJXk^y2A3MMl8v zp$mzQ*3;CaUne8D(hDjDY(0#Lk#rgTTvMYY@wVk=A{#qK(uy>egA&m6a7K zX=x4_SL^ny3y;VN=Y=m>&DY0CnTt!p~M1z z`=;yQ;K0F=`1C2yzxSPsCRyn$bDKg(LCwmbuTe5IGz3b-!n4V^jt5ik?BWav4@a}} zLi_8wCssIvQE3-FvT0j_Smr>-g)}m0+Himt8 zpq$GUHu>~X{HXMIG&koJ7M`7%(P(c@`SZt_ojtxf zXq&gU_r2S|Rn6^LY{(W_9 zH}Wqj>Bl`5kpm5c0NY>!xgsO*@9VrgbTG8w$$^=${(I8-@`s{Zm!Sad2}A8VyOV; zfMMia#~Djn2)zSr+^xpGz7;VsEWS(iKKF`>Ty=F3nb9v^SYElp!^isQ(WBY##QKH@X*jPG)`=9Nl6KwAa(dcAfgiKzkU05 z;H38U_Gt!!Sg=l-f~`8g&V>u@O-)TzRRNPizN!WWaTOIC!1AvyR~+Kyt=%M`5jQj( zL$OU&{U6?m}yH>5f>LnrlQ#*{kLrkMa?q0c=42qN}<1d3U!|r z!-Cty7rvuM^FQ2U(cyS@j{S&f6?*Km=g&Fz?#;^1#tn7*qzxhnPzjk28}1hnK~(X< ztn)xCQ&hvFm>33n`hD_#vh4}uYiDO?Y3aW5%dA9$ zCSiLeJsHOd&tIlUOY7<%M(Tkcm?BPwLj zx(Z54UdT{{wzjsao;_<=eC=^uTzANJb~&Gws*p2$`}gzk@L&SO^!GkwBA^h#>rRB; zhKBs=u?lXC&D9@16klu4diz!u&JV=`s{` z=Pz7%aR0vSjfHUxIO^)^7=8?7jJ;WYU{t|F3nfxX?ZE;(FDUr)d#J87JgNP2Q&VAK zA)xu#=eR=TUO|CqM-v}6Hxn=zCugPax_d_x>0UZzs)Zf9cZ(wwNJvPsf}GIu-aTNK zWM*a#+jCUuL69-3yRm(nR4U+%f$jWMCXQ%E)!-k7~uk`oV)NBSY z!*q>D*V5OoyL)FpA79$jrw%B=zXlZb?lb)NJ`RotJQkIyCqplnI&q^zN=oW$YyTc@ zh(fwQYZ3MQHIR{U00Buhb)_U}Mz;awWgI-AoyM`MD)W37*4klRylH;{& zJRWy($&c^fgD)5bydDmtBYvFN4o*%-Yim_EnljA#v{Y17^z>n<%jeIRISrD&ag#zR z$jHb5-|@AsF7&F6>vNw&Ux`$mUiK|^ylJX~K(OUm!Br@j5*gS_D! z$0cNCeKyt>?Mibw*N)@iJ^Ye<3Z@pYr|BPTto!hV`wj%`=tO2ko5!Y?I8TNovelyvB^UT?^H&*{VfB5jrIr)tR zw1&%JnJ5!eQ^)-`|K7h(cV3B91#_SAvuDqcMp}ua?@pdMGl8G$?(W8wFxV1DbQEMq zN-cWPal zfsxS`c!EN!mf4LRJEeA9{!Clc`sItL(?Hd0$9@dyI*Alz>6w`gy}j!wAy1z^#ZX+B zpFcPlEYn`)KpYx%WIftF$}o7xaeSk zfhyeG+&t>K-}#n5eoV~bm=;f9Nw;08;?n zDk^n|TzA_Dj6UiKQf;3;P0kmS{*v9a6_=vz}$ zBO@aNSaI~|QDZw%Vc}P_EW&hqrJN?dJg1`!;<}CUkIrLZX;~m8zF>1eDdiSEaTm8h zkdR=*DQeo0m6j$zf=86r&8t4k`u)fa&!~^W>QO*bfXB;CnE0|HTMiSWp0L z)s@7yMw0{tc|MUOpcs=bF#Bt#L8Yu9g6$bq)jjO&fLm{hix+ymMQPj^jC(gw}b>M?d-N>`{Ak{STXRqX#FneEj&aqk~yc z=|)yYMyc}%z*cW->PbnvE>l2O^rFehYx44yNY!_qzptPn;o=xbRl@eI+l=MDjAD_{ zFg|-%`qA_V$}0c} zNEWpDj#tLn85ydKr+`>MEP(i#iZ`UVI?UG5zu!XUhWwckL9=DP`JxLI-$kC%N;4o1 zE~%*@hCQ!deGcli-5}sbOVWvQ&)-ke)6>h!)`0jA3ki98dF2|HkLF#qDs&O$mRX5c zk?`FiXaClJh@rPcrr@YZ9vSgUU_Bl`zF=m?-L9CzU~}yn4HcD>n;Qs|%%Gs4sol9* zkGB|U`n{za%B^Zt7L!><&YU@u&&QufEzw8_ZER^l`A(IgSU5~dN{SeM=e_Iz#u*cF zacSSO5oYk}KlVEh3madz@>MVu+{Nuw3Z#v}GfPK-^Et=`S=A?*g+=$09kooHc%|+? zj||w*3a%PNji|dnVU3wYk&!%det-C$A0z4X+mnA49Z7zCJ%AJo>ZGi!j0T{a9`G(Z zKlSDS%j9JGDn;)eI=zo1G$>THyIELXJ3iVr9`UG1Ok3wi`?=1yyP0B4ukKAD;K2=i zeSLu@0WC7+FT{`))!A>bAs1dK3>s&5UZL(Gf-$;i2A5fcoLa?Zo`OO+#T z6E)xX&blYwtp~zY?9KWCue6CDLUYGJ_*nkG` zZ4RcU3T`whr?s^sV~DR#q=bIX#lg{0e(tvFkQUTGbY_e?lARs&B4zV_ofk%f-)K0? z1gA)~=?Z8?H_snXwfZ#NIFY&X{H_jKYgC2jZ_=$lPvb#-fC=^V^aK&r-P;>_>z1!A zYfNmcC+-pi8affc4?uHQORxF++f3*V-jCePik=pfW<-=scsA1h_T(qCsy+GoW)#{T z^R8V3ObxEBNMTOSxrqtZ9XmwLKi=Ohs2BU>iTjG*>WdfrNME!nNl8h^t~@hzQR0RG zNuvz)SNe-^apk$s7;fMG01`mnmJxvu_%Q5(zJBMoZ^6vNp0{q@`tjoj#Er*~9=SR> zq20V6sP6ZP|AG>Z!3))H`sdFp78a)%-(x6!|KY>SoE$Wep8oblP`kK~yg6DzJC-&7 zteTq2{XL3qG^UR~eL5>IFYo9$2W}teKQuU4J@&|8Im8(8NetV`%R7>#UHGM?SMe9L z#Lmu60jj`i)8Wxk1V(|xi3L6+!9{Q(rHNKC8|vzXnlrosYzQM!DwX zA|g${wgelNXlzA)bQ^5shgPPuO#9sE>0f`V$s#))qSS{aBJ zdmJ6@_s*PcEw``llF7dpYBTsr47=KCrx%?+BMuO>bN!W-8?#S7fBuY)$-pLdo9nhp z_&$vUsmS2IR{wu@bz|`wrUvBtzC%zZ+-IKT=FTBeFcASRDd@=`-E;pIEelx3m&WBK z8v=O185Sz)K(NS$uN^oJ?o{-LNEf!awrFc$V1U}QjKQS8^g3wU+?156o*pPDUojpG z%e8;*?tTNV9k3+XpNEfcarJU77|&OBWh9z`xWp~n;Ej3!50txCCY4EXaW-aVzaeda zCGqfNF%?-|Ss^DUm-YM=5VPFxzkb-btZ0J)xEq69h5RDT1}#btvtF>T396T=X-Z|K zKe`$4O1S){^_454rd0%Hjb#K4SjP|V-xrzC|208N!xZD`$nqUaaSVxpu8Deao`YQG z7fSuoruV{lWM<|B1{ZY=4GIbh1DOfj;b>F**yLnSLr`J<)kjGPzBoYfV;1#{Z;z&* z^McBzpg=?jii$V!xE(KzFf7!TE%wJ48X18s03}#rS{6^*~JP*hRqKTfxCTE5E8geYytC>6qnb(+`W4n&3B1s;XLpeopik!f1*1WOs(# zmkJNB zJa!IUql6+z4gzKZ_3^6*v~_iNVOC*dyRo&ok*Sjo&abn(+W^l~ql%i1TYC@|Hv8*p zu*s+TdWquRj)9I!-wNQQy9OgD!^`Kpyy(?n0|= z5*(vX{as=q~;K2zbKCeoco&Rb%02F7X$}v8^5x~fU2M_-J``38Y z2k_a;OWOStQR|TU1ezk9?Q>46VKXD6QNF`a(5VYp(yWtaFeV z#^vrWU%&R?6sc?>Qex18XJ_RwunO;ch%qKL^=6{z0;b^R-)|_4#{Q}^p4tt8POSD( zdH#4!Gw?cy3*htTKrhdqgZa@&l(_&@4sumZE!#0^X_`E$;SvUI2#lx^Wq!KXt{wVu zK?$_g0HaAUmm=d!N?W-d?>)-%va&w4w=V)g5%~rEi-*7-fqWbp9)^Y~B`7$B`hv%e z;@1Ghgu?J0YR=lay#R4h5kycu+FquC^KbodLcGeWG*+Fzot1E7%HQbMu^-+slppp@ z<&ka^QUT4c$XdJ94N}`=_2!+;PmIO+Ml6jx;qf>E~061|zh% z%+iepR_QhW0u`yKXaQXVtJab%?+=^;@P(g2r9qE+^!PEdIV~qgNI;-2Gu#vv+PKI% zGCSKAE(PS*^XC+YRk3{I{W6Z#?k4VLV3vWkF&hB%CnqQOi@5uvo?|QlqY#d3B9XnZ zK&UFHA@k7v@pC`~;AXT>pSDDY2ER?@m+|vZ2?QbU;KjwI;O4Wmia`*w{c-;s_fU+E z;JXc&sMjcVaW9x-cXYN}>RIR7iaSsLjUw)%nB<|%tk>clchG0<-5VPnC93o2Pv~Ss z&En}(az(m5M^bzpZ%0IEdEff=`}dvOw~H8RT3SSeg#M1?0h1(7H)H0vwzK>Dmvd@z z5^N1s;L5^;4on4jt#e}9{!-%oi?TvZP}Zvxdro8%2a*d!ipc z6g_eT^J6r^G%~WuU_R-WJFoPx{xa(O`)qZk+*&Mavq37PRZNGSK8A1 zrmyX3Ma627{-a=_zHENFwG?fi+rIR4H|Pmw=IEFh$E~1@jB#+MAGSmEw=hOPY|4KPR}!uWRYL^d`L_(BGhcrT6Q%Zwu%Z z;O2Dyo1~L(?BBCM7u6t!PV@EaRJV&6+7BhezDwHLZG}51=oOZ~9&GIgF&g~+56jZZ z&HC`I(a_CG3JkO8oZy;4q2end(A>&O|NQxyccoRNP>8V3M8>p*{+yZ`u-9J0h-R(e z);ZsF+Dhx{7WtvEF%wL)K$|aKjDisAd})N)qPnC?;VBRj=31{CHpuF1^K2cKY;-7k7ToE#kUZ zt-1BZG4LbU$^oxW31gra!4Y^MJi}vx@Wi-HbYBF{uw{@RdHLzoEicGTDAj%6zsEm$ z0^{JV+?8!73JzKgdQ7#gx+cUDYxF0ClmH}Q{` zIj*y6L%~0GtPm&(t^54O_5d;LfvdCgd2Q{9CN5N6^lq+$Obhyu4>r`Do&SK=?qMOx zy(HRVi~7qjbVjP*URV_|fdh9<0;3Bw3&aZb9}175Gm!&SMA$T@4onbXT+%Rn^-7 zRb!!WZvfC?9Z-M=>@HT8U@~=anZI0uegQ;vGL&AKmK67sytZ}&$`2S6$nT+Cw*j?L zWIaY$kAhHm_wF5Ws72;Ld76qMU4@+Nia{QTf59)KtLq}PpdaC68ypgi3i4mOx}*SR zh&-^2Th@jEm~}k<+|R*dR?X0K13;r)xUjoXlr;NDoI3g&Xh#>+nhMUtGBQ2&^%=`U z3jU!y!J8=KA38eR$6Hg8G+^Xr^v%7^39%MawgieE~0uaG;kA&;J73L09a>sY;3tb%nL>-2V&Dj zN%r&e1F?->DNlzYYoswQR(Fx9H8G;7E0qHk`Rb-ps5n3w<(F?lzbD~Ylg z6c`BM4$~j1#K}*wRWhK2q#^Mlat+8rZry_15GBsGV0)2CNgmS8jy-$!u(9=Q?(-_B zZ)hOS9pKo2NcPjy<`6kjj9B;C#P2?8BiclM52>KAo~ z>FVu;3&s^q5Y=1g3F!?RAY0-nH4=Tt9U?n&*x~`@28a6trT)hW39@)9h{FJn1+F~& zQ4<3LtzBK7@T27HSc7k2uemwAX;)zSIZp}400-tX0I!AGwrmO$hKIX5e>T)zDq32wNhfJ*tdJDGZSj(hm<2GFeJCy}Z)$?3XdJ2)z8w++2}6=ExKG4ee73+mQOcn!v7*xnZtLNKEXO zT|@|_Ys8NZ4iXI^66dyapc;Mc==cGx!hlRdTzor+jF^asBXEty1L_S9O*}c0^oqH8 z+RK+sn^4o06cqay>UU*s@c&|<{dkfyl8ij=R+6q z_1&PLWk%!ENxby}jnvA~@!S>s+x4+#4#ZRu*S|OJgrtgQ$IHV5`&?%8A5PSMP>*13 zpiGp$iD*KuNnjpv< z>*<|tDB*ZAzqr`m*2evsB0DP!Dab5zQQ>E76)VX8d^j&~b5P!!5|77B3YqNOwF@c( zhNL9~SVpsw2+BpggguYPXEhaxL7Sli(5!88>qWr>=1<_z^^S!#|NOV$*1=>MQ;&+F)fZf8I37Con? zp;4TdR|+@At5?G922utn@CgZ*{QTtJIDY8KH{S-M820qc-knmEaN3E()I#jmAaDHI z0?8HC6J^@rTkPqP5fKTW6iS#z1Bny2WqxzGtFLc*W~Rb<AL;m8qsjXJ`EYlQEXT`4S3C z)GyRTC{pk1>Y`SfUAd@gkfYGtLqkK~9|fxpHfVjINxId;w2&^Z9gYCY<^)zwQ2%{W zS%nLC3kzL9k=fY^&8qRz{->qV&^$R}MtY}K*yNoLnms_<{_E-kM-C{NCV%{R8gVEf zAb>`nRTyCkh6@84Mq1o09+w=|55~@hrY64YpHc3SRu9*Q9R_6KuDM0q7T7ACLv>RFuB~Fk9)dvgM!vR@QG8HP zEtF)i#@p!jD7Yo~p`_VkGyt>!TVe5Fb>gc4?607drde(^gWsPfvKJuSR@T;>&;Q>< zn3#~ZZsmfB0%La8(1JO@9?>V4j|%7H;&Mz(>=bQ{2bjc>SoKlp^+YZF>Ze_JT=)p; z>grT3UGn*_IP2C;QAd9;}CYJAOYllWg z_;`4(*xKH6Gh+bjMHKbc1D~PTYQ%{?KUdL3yC!srm%IaQBojacvjOz@jOH3cNUXqL z7@Z-YmR{~UY-3}i7A(}9GRZ}{2O*jatJ-( zu>j$5A*l74VPBKUw{62fm;9bY1pY>l3q@S6Kus6xo0?t%7PPfRPIB4RG&XuKPF_HP z)Y18hDH#jJj^+b0#NvS-kRbvC8xtwc@fWbMv^`UV2KlAgxK0d0f+s6rlN~VvY3Ino6IuP&q|C!Gs zBZ*xmBkXJEt&k9KjuGvFM7tr36yO@pux_^|W%y1RO+`)J(9%-rKEu|om;t@q4YoK$ zA}o3J^{RcJI_?ln>_$cfr+X{?D=R800s~16$VfTh@{Gt$O;yy;n1P%N@>16-wadhR z!wrTs1bxIhmrYn(U!N?z06=Evo4Lov#?B?nosg7dY0(XGsJ_cs?=etCf`ljnR6#wA zdGtsOF5vn3c%q-?`dR|qT15Ly4eW<~0D7m~BHq#>za|#MXZ%Z?P z09p+6WX)tbjajv>^-N5xpf4&Ri!RT&0UTn?Pf6iAA4u}uRGI3TnP?oIgUI(7=ADGw zu+n4hGK{^zoEjS2+plM^aB}9Rr+2P1gJ?S8^=B9@L-h;=(QEqUQn~ws(9mr$)iT^* zA=a1dA&O#u0PA!(LazW@qw!R5jsewUT!4LSYC}um99BvNuo>c_ALM;uVPO<38;s~! zCZkHf3Lr^n82DVckceio%k(=K8GnIfg&izv2lY6$GS#q?hX*(Wfe{uTnXV$6C^%EG z)d>D`Zp_!-0~Ertek+Dbkx)sZ@}k)2C9JQZ;%;~1af}|+$?M!nZnI0wv90lyDKy8whe3^DgNcDggMDlraxC-PSOc+$P>5ou8>a?j*-aUA9X>%TD=WO&n`j}cuRn13 zFzy_J-!mC{TlDX1Ha3f;6yS2uDSyZA;{xM+gYU=@r(Xlr71DJS$yX%|Ql;vHxk9s`2hI5i)f!8J*o8L^tnW>{ zHxlp7&h9NVCq6XXac_IcRfBnglhoAJ|Na^bdj6cRT~X>mR@Nlg6r7>}VuF&M8Fo?> zCnkH^#8X@Q^u=d}2LjnE+d} zc{4d|PQ>~sB9dFa4a^M6G@q<2wmxxpbwEiTPcTs>K+y+OKZsB7{!hcE1ao9oLmt*0 z6Aznw(1q;03Q^*Y-NK{~~(f z(luvhwb2WicJ73=)IxcGiZs})Q!Xxr=s{>{ne<95NEtL=0AX-Gkd8Li?w-b+QEJ75J2R8_7Z;FieGG=l3 z8uF(O*P9*zNYa04c#E05Ly<}8^=`BbW@g~rm`N@%xWr&|f}WEGg%*c;1_n&CcDmIP zIm$(+B{uw_nVnq$ePC$F9J7fV&59hX)OZ&( z&^-{H+1a;#)iU60gKj7f%zY?`GOJa8&>dHH|hxq)HnCnoW@NW2z zW--Th7u)KCw1iL$-y`f3T84(7HunIiAovsen8t^P_d{w$Ymx{d<)XqSeh1S7wF#!F z6Jl@&A<9^G?ZT-k^(SI?Hr!&tkvDj0dw49z#_j5u*|zNy(V@C`cI@zRI|n)se!J0Nyqz91|1W4I?KB(MrUt zy!8SMdjfaR3&kKxbhupTssLdq0<_FRs%mQHZI?j7qc33@$Q5xMV{&Th_14?eR5MU_ z@Ty=syxR7ScpfNt4#TEVSb6wUXXkHDA(Ne}Iq7$Eq}IN0QY>-Nx5 z8VvcrQ&44mkHzoR4~FsC2XX>(x#0;#ij`LIFJB^&HQJOWLy@-^h!v-M;5b5;1KxTG zOB_*SEcZ`KOKWUwEEjdw)9V1(qz*hFEQ~_5PyE`qmqxDvs7T4kh;u;?3t^mT7q^cJ z*x(yC)-YEgd+lnPn(S?C;$maRM@BG;@d*gL2CIW9WoyF%R3wO2%(IopN5^)X;ULS+ zn~Lu4OHkTDY*<{q8mDgQ>bd~(0B7G$ZpM&|lj8by*aoZSgl<2#ZPv>A`jT8+1JE!4 z0$@s->Ub%5;K0fsGMug=wgN(5>t&waB%R&ix=UbJCOG5*+Qp@f3bY5C8#E_Kp1*v{6RBKVMxKg!`M7w z5e)hTy9l*sC;4?yIG`X|+1T*IxTPE3-kefSTp}VZZEZ}Ib|e@66Q5G%(9KyzEmR#G zUJ*r8IDOF8&`nKFP!moMJ2KXNr%KjCd&mkSb&2=n+IQQk9i6w zv@j9ET}(V-RTrL{o6DIgwiL8vsN~t&siG%4Qs(`8Ir+8y_p%F0N`ZH$2^>`+p5yA) z))_Flv>!}i_`STWf8l~Sq|IZ;8k?Kt+$J9(axhH3w(Guf_3Gn?51rShS5Hfys3}S_ zB8yWWEck{~DybBy=c>h({#^)%a)=jN#TFs$A>E-LN~4>jHo$(1%*A0cI7F?lT}zVj z7>xSB$-(*g!v!nfE4?D+*uCy}wv=OlU;Vo0&p*x1UWc6g53?$mXd4(nes0D%fP)u} z4Gr*U5vJi=x$sLuMgkj(d%+*Dwpvx6s+tmf0+#ExMvoJF`!~h{gH#d0(uxM8k96#5Ud2`JUkh=V*CML zlhf|rx#PPT6dZhNy#)gifDwKUa7YGIJ~oFo{sVrn#TH4r5z{^QAM?8X>$RgFHZW#y}|Wndw3_Gz;6mI^av5EGmhuxFu^i`#Z!X4Jr396JAswz{%i zr2NnKT4je#*M%y-zEdQ=|Lq7zd!$Xg5G4}1$8xG%<2e6o%Xpmhh1JOL8%YbIo*qy%^?%S0w7 zo-qGNcl>xcPV~I4bl4QUte@-9ZpeEjSGYhj5ABNbXGbQ z6^l9cj=HW?N$#tnR3NtQm(V6*LPogyZe4@b+X#&T#~Er8DjbMZh_TdB0yaT)fC(MG-Ra{+U0+vg7 z-9$q?*zgY7U`6!s-_30Y1i~`lb^0`FG#tk`!!?J-?`eL7u&_h(K}}}}j@Cs);5QNA zct&7@1r9Uc0@)fGYGq+DJ~@elh~BWpAyai#$Oz3iLGw2T!w#5*YesoE9|*)OM0^o> zYv=~u-NfUniL#z-gp@h}A(I2LA~=TN3dR?@5P%Z=^O!ic{xpgJsyqrNA*?Ad)%e4^ za14O1*OiWv_vq2zAb^0>pyL1zfiMGc-Z3W0NJ7YCd&N{!8LJL6haIG-?Bv&w|5*T{ zaj1=rO~!dx6-ITmCUljh5uALk%EVynj|zbXUhs+n+0MRquMe;cmISE+z82as9j9D^ z@>ddqE5%*LO&s=+M|6J)g`1b?_Cf&%jsT?!rWUF+WVkcQRD_gmc(mN$VDgT~SP^&FCvT=e3Vn4BEqHe*`*KExEOZi&0Yl@$~S5E$}I ztAW(;q;K9-{yx8tK*$2iOLR4VT}lq$CsWnf*jvbK*Z-GDNW!;FO??M?29d;p({K72 zfiQfM=?ip_js*k$MP9MPIV{bsU#B|qkvf1=&@mxmf!TUpQWAFO4l22&wl0C7r@-_D zzg?k2EKRzYHtcA+P*&-x+NJXYn0asj<+ywn2nfvF{r&Pdntb{4kB=W=sWgD;`9vHE zp&o9&g~hA1C0oH;9gb<2Px05Ocy!$Y@dluS4+N=-;w&K{fu;u5$HMU%f$%Vu%4X8v zC@)c=bvCkv_uX`j$oe^)m;2ZE*d(_|2z9unw%3MvIHSXVDg?>#qx3rO{{0phHfA;i z1O*#6iwFdvTRhJaoAEnCmYYmUcL;0f=^GbVP_Ho%q}cC9TrT?(I3rVenTk+#R4aJl zskyA=g-hW!1r>svqvd%DCI!+GhXUI(34{Z|W4^789pa7TLoGY-dqkF_E=`b-U6z${ zU*TduPeRb5T4wsvsC4{zAeWwlSnk$u`lISIMw~-u85rNZ;}aIuMOl0>f$Id|Zsy#% z4H Date: Wed, 11 Nov 2020 10:29:31 +0100 Subject: [PATCH 4/8] Replaced Tabs by spaces and added image for test --- assets/custom_nodeshapes.png | Bin 0 -> 18748 bytes test/functions.jl | 8 ++++---- 2 files changed, 4 insertions(+), 4 deletions(-) create mode 100644 assets/custom_nodeshapes.png diff --git a/assets/custom_nodeshapes.png b/assets/custom_nodeshapes.png new file mode 100644 index 0000000000000000000000000000000000000000..9fe85c9145a7b67b064c1f9783375a29081b75f1 GIT binary patch literal 18748 zcmeHv_dnKc{PtyLWi$xM3KdbZlU1UOhzJRhk(n(sMAJwa*{RI3C6ZMkS(UAjy(^pW z99Q@Aeg1^!r|)&YUhb0XbA3MN`5wpnIF8dDElri}G;A~k0%7|Z)l=sQ1k#HH0!aiF zDZaCzf2Rfiqr9S~a*D7;{4b>C#bSi)O_MQjaA206kuGY-c+Rvy>PV!uzg5){X0b}hvF6OL-tNjdpot_o9 zA9Ztdd2Mq3nSYq*lGIco$zV15nT{o@VLv{4{BHat{zuSNV!{o*Or;_r1axQx69@{n z2b2he6!Bf$1VSs@T}A@Idb=_eflw5}Lrx$Vp8Ve*|DTl!(0CFbpBY9Va40a5=GEr! z6rPMKmiPOs>c&V|!O8`UgeALnd;IyU({Qlot5qs3$r>BpYn$jKT|71(ch0EBC_2Gc z?nd)Bo70?fJ}EN02!Cmnsj8F&E@^J~4ZBw8?BbTb%XOPMdqZScy(qm!iG_551G}TQ znnlt3KbKQ;?FyV}y+!b)!6*787MUJ* zY5$@VY8i1pTWR)mn;UGlEPIkqxP&aeA*7gJWFn3Dy!h>CYGo%=?mqu97yJ7pKe7ex zKa}$sXEbsqQK<9Gq$gC_OxxL02VTste!E$B{QZ&QF!^sE2g-_cpYqfWX-4Gb9Wk0G zsq(KS-i&)m$-Yh|Z={NFQf9IRxC3lTbq=;Y*v*{wEM{Qq@ z$;iz2KYlF*L+uuC>T-?ccv&RaKRd zysf9lP*0CvK%i63(#vagq%r1uU*GV^h@?YbscAK-oSfXD%KZeDE2Ij!($dlm_4Ns| zUIp*oB{f)V&bP>a`t%8R{_x>L$NqQrTk1wey)mJ&v9T-b>&N0g+xM1COilT(Eld~% zy)G)kH?d+mdV22t?|dD9yfquqCrRPRp(0U@h>SdH`FRf$6H_49*|TShii>M&Yp+^Z zd~0tPJakA#cKCDLF>G6mh>4|WoNY(W!NZ3ueAgx9<^2T;W&QrH{9T>z%r%h|7vK0@ z$C<8~`01etnZmKs(^Lw9XQKFvUz@6_H9q81OGr!<7ZXd8^?LeZ=>hvB^_AJaH>s(q z>ikjn?oH)ZZtmE%>(U$Nt42mf0)-iwnQzL<_zqL+i zrAADvdoNA1idjdbrSU23yt^fLrBm+bE5<6pM@ho}397=8kzl6lnWPA3$efut5x-FcCjtZ&(F_4bCr(Je+z{pG%@k}cw1Wdz7uP!0@$A$H*U;y(wEO7OeiTS zD>s&Uvo2(p#izb`v%0o8C2%gu?%Fj3zhRkcW~$2O7_cH{%K@a4DTqodIY34N<2 zEyAB#S|r89-Z~A|y!D#DA)$njZ-^2&CMqgHjEdTjn`GOT?au)j-) ztX1&v;luZs5BF61%ilSy${1W$R#sVA85DF9cNo5nRnj4$yxiN}U4oOd|Jj+Sy?gf} zG?cEW5}E^e$j2X_@Lr;0m#~}ZDSj57lbh?mIN82BKPG=;AwzPg{?n&@CvGfEd`&m6 z3lo=+NRs#89DA8XP#E}jK*4c8Kfmy$(j&)?A={oP>-3em*$#bt(AL(5uTvY=4<0utBKRWM?jFJ+)lP7CYp=xRZpYQbY_MYo07L=2_eED+H zBN8J+LmwX>`hBtoczFxGmuFj+y$P*5?=q%@cH|hGWPJZzEvD;8OnLeG=EnNY9Xn1x zU{mghrK7BEX_>3KN%r&SPrN7bgtvqNFWG{~0i}SXQkSvj=)*<@1qEf^@uuO42)>^m z?om@ypA4bnzTQ<*BH{19wXwc@@7}$+?!s+uRARwco06=oLvC)1+4{K!t8Bg4u2;t8 z%q%Pde0<8Y_4fAms2yG99&-cLL8#R&h_cAzatbCu4dW8t-s{{aLr_B=Zs?$N9Y-1B z=RbY^{KJK6R=SYz@RoPJ>$`UEX4of-3_P>8i{Q)XkW3g)8WQhf@S!ax5%+iNp6Y z>oy)^W8-V)du3cz&z)=O>wEj+MToKv6%EZMo^N$^^~#kih(e_2T>81>i()Kqv*goNC=Lp@a%!F3z!h9D9{Xh>K(0w@;X#|KsGuK3UH^)Y!GP zHB=`vqk~R6c5y4jNXf`_baa%Jm+Np0R~C7goj!fq)3da+REqsY`SqcXDE(+IzUZZI zn@Od}G#`-q^ka!~O)61HuV)4MJU}t*d*jm6(}Q~j7%{DNb$567^72Bcw}1O4>olOC zqq8$xfWj2Ou*&1ep8Jbaot($r?OIb5b*&}{EG#jI7Sz@J{NL-#bKOVMQc?zzPI!O$ z_xc#l$;rf29dd@`;v63l=x`GyrGL2gnF?nav`^?hP6733| z5AE*Nt5;n*G#gBM!Gy%s!BEcA;rlkmlKszfJj=#ao0Cqkv$AGpWYjl%C8M`Fe3wCI zMd1!-Jr=$srs&Duh@3 z�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 Date: Sat, 14 Nov 2020 14:45:56 +0100 Subject: [PATCH 5/8] Changed the way nodeshapes are applied to markershapes and added a second test. --- assets/custom_nodeshapes_single.png | Bin 0 -> 19781 bytes assets/custom_nodeshapes_various.png | Bin 0 -> 19981 bytes src/graphs.jl | 11 ++++-- test/figures.jl | 4 +- test/functions.jl | 55 ++++++++++++++++----------- test/generate_figures.jl | 7 +++- 6 files changed, 48 insertions(+), 29 deletions(-) create mode 100644 assets/custom_nodeshapes_single.png create mode 100644 assets/custom_nodeshapes_various.png diff --git a/assets/custom_nodeshapes_single.png b/assets/custom_nodeshapes_single.png new file mode 100644 index 0000000000000000000000000000000000000000..5b2e3f060b39f4caf006d0e36cf74c5a562f3f95 GIT binary patch literal 19781 zcmeHvg3yNSCx2 zw1RZsu{`JZ-1|KD{t0)Tv-fsy7T@~5Io}xX7-O!77ggnVQyifn5D2>!70#&>2wQas zge}3ut@tnN+7FxXkL}l#g*Y5JjTrEAU%!W@Q#HCqZrolg@S;?3PgythYR0M+A zZW$thkbj?%j6k?@mI`;8!9?6b@b0AY#TzY%viLQ@|Nr*?y)qSvIXO?q_j}8e7RX3R zMMZNeF#;BNdNcXet1I0i?sk1&qJQX? zv6!ue(ti8)?J^B{pC6Wfi9w4(OVowW{|h70r}^lmvLCJQ-&8VEF4JL;ycsK0WDc1y z?LHN$%+?`DAWY@w=U>*++D~@L&~RYonx>|vhK9yOk&lm$gzMZ@kNyljVMRqnA4Xq4 zzYiZiC}xeUa&&VpUUI4&6XuOA%E@8!FpE2i3oB?`x^ziLXK7=7H6bBkFN0)gc(~`< zQcik$`rEf}bN{_wy?RwxSeTIDQ++ktN9D?u()qu~BwUFU6osC>?d_K}H9xGB3X0Gj zIbv>MLA&dIXec!oH9qwGxpPTLN$=mkXJKJ+of~E1;P{#-9~2|umRk`X8j8;${rwr~ zwPHsMk4<8v%nkNJ;KjWgA0M~-&+E>eS-k%KrTF(EBO?n93p+?ny)rj;oR@bnO`DhY z-%D$c;)M&jc1r5%xq8A+BqNM}Ub}w%y2`(ohlhu$si~EfmBYW+`Sa(oSelw0DQdAg zTl8nh`S|#5{d;k6aA@rs+!?fT<~!q^rH0smN8CR&u$@Z}ajSiOeYo59_V$2(ubLX! z-Me?=qWB10R`B2J;K74CckWDmyk3%;n)>(O>(Qe}xw-s*uBRN+QY_*Y`I`AS%WXkb zA|f`5hnczNC;we1gwQnopMi3>wWXO5cD4Qc_hUg!Oig#}K63i@kTmZ8?Af#UtSwu% zq*}1Z%gEe)=;u&JEP8dRzSp`=fg+r^!oxpjgvT9d-~RS4BboQ6%ktl!_jc^XeqOtF z4Y$(J&~P6+Yd_i?f7btkqT(e3dYS@u%BMc=yJU#c7RkxU#>U2re+KtbQd(GB7yjGx zBYf9u!u=}Ba&rMaD;QsX` z%4zxIRMU5%{6>6|{q+3oX+qUaNw1Bg$BrGNrl#J%zctH9ik&^Bx%uJ?wT+4igzM9% zPiOWXr)Luhr#jd6`lo`-i>d%BZ>fU({4>teLu<>kU0Ft5EiKQ*98yCC(*Kzt=ogSLP=ksy1#(QDr12C3qFPr03e>3TvmD6{ADQ|dA zzNEWy<%*@1m3+{#^^sUFbpy(a+tcK>lpbaaL4LT*jkY{^@ZgO`ieZVJ>GV+bWttAn zslm$1oE+PZRL#pYTQAoHP{q|R&5gA^7r6Q4m;@&`_gnk1Ry=pXv92AKwG9m@Hvxfx z9qsK&rHA77-@uJmJ*MH^Loa6kt%h7&yzKj@ps1)Q4TDP&UESRxZVQumTqg1@GQ?&V zzUK|i&CT0(>^bAHVm~wd0n0McTg2OOe&(S{ln@6OS6OlKMFZl+y@;a%t&TdeZM0dU`@gXrcX$2BHvm{c>xk&bEt;tgNJG!rBg2XzJ^~ zwf!z9C|Drw^m}P(iG`iLDN1-RheAS6PtWq~2!ojYYo|X0m%H%0K2+ZB+F6Dks|!;> z13X+@cN`s&BEiwoeGyqVO-zc5i$^CWv@c&igFV4klWG8OxMOF!?saqX@ySVL2c~A- zq0SS8y2coZqV6eSTH5DJ{!cGlxL{P?+t=67vtZeie=CDm?)-Td7nkIuq~em2pFe)g zjdwgQVr^5<(dqsYCEV89`uZf9*giDZ=O+!{&P^~J+nvTdAhlOOh@N)yl)8$_RQ+~~ zu1qU)^PXH&N*SszU%ud;=l}jqee*`Qz+Ch8?Niow?KH7uHGY(8(IQMdJSq-6%?}xg zTNLih3@7{j_G&*_sd8dmm}}gN<-xb(@*dCqs;jHDGxZe}6wE9w=N1T6jbRgScZl zI$LC92=-`J2#JCmA<>MH;9f`WpdKYyZVi;9Yp$)KDw5=+=motpmem}aE$WnwASXws?U zWLJ%@sptB=TPhv=z29SXGe75Qw`Yk+B|G1xK}n4*eY40^nS0y&D?Hq4gPBOdM1Ab_ zj;pc3afHO=hp%~T)UMxs}`we|JKj~;bq8L1(@-h4xRrI6~vt?`EKU5v6LtKta{ z`?_DRtaw^pK3o{^ExE{M@CY59zn>rNkt0ZZdvkn(hf=K= zd$xa%xTix9HHShNet3w6CQCQ({_}5tS(&(q$XoYiyKd=wzu9jT-iV(rm{*Xw@YZGaMt`XTK2cUy7HelfunydsuZ=C4 zc%jA?GB!5m^1H93x5%dHg`mZ^8o!vB7-akN=g&h@*44{KWs7cZe!kh?py264{i8ew z&vKaW+PnL^Q4S2YVHeD@I;kzq%yjb2E~%=jT3Sw~X=kBmKA{(P9ID!a=8sgFkQrfD zb{yyExA=9MJ&Ezp^6F}(+v4vgsm&w=06zj?G%|=mN=#IgZN zn`L45P=T!mD?F-w$kVl-Fi4$bWW0@9m!%%eNW^836Zh|Lk1nVepy4%aXl$&oAKQ!-vrw*R4zuANcKEyLLJ2uz7f_EwwZ^ zPveP1hWCk42*`TJqGw-0vp9F|{X74?KsS0uL60A=t}WlWc(FO?WP4j%eM7@Js=ps? zD%XW9I=Pb=vq`l+9LuH}D`}vkBO)ZE1vEB4fB*h{R;6&7=^5QlH%j}?)+*HIw?=}S58Ic z%io{%9`5d?PJdKU?9gcPk{w05UE(y+_s<|k^*?UX=U{iugJ)ye*fGe%ddbd zm4!Bsa*33bX>Z<`-n@AyUKy~Sw5o-cUx8k1KOeunRfagd>F4LSo0k9mz`zDj(BOLi zi_lQ};rBbSIF635v$BHp68rMd0VF+ElwXR4A@MBUWn3coFg`%RMf*hT?%2Nl$q~Wv zGAk4U8g89z1Xt_;wN-LfR%}cRe$W0dr{88>UER#Wf~vAIDa8K*c%1X}+?f2D$I8O; zEF=Uq(W~8ZqB8?%G4I9~bFZfD+qd7nd)K6$xLIw&@3lVPH9ygn_WJcjlo%HjSbHZV z>9=?O;$mV0C3jK+sg+e!=KsB>E{BI?SJ3Q+8T3#`{stn#6H!k65uuuk991-^TP9G{Ns^*rK>g)4Au9P`u}{(BivCvMn?paTKp03hc&iMq2gF?~Y> z=sc!m0Wva6N>2XJ)zwv7tDvVR&dQoB!O`8`o`3sW4L}a?OP=uS_;{v;Di$Ra&9t-$ z!~^>M>rC>c9XEWXX&yd&Xl-qcpx(D{-;~t8n)-UwB*TmyRJql)wWHW|OQStTV(v@X z0Ras~Q3G3UZ+&d)y@_GMs;_tk#b4ZUGE(5?o_p11BYwKNx`z%OB25{osg^;8>gov@ z83tNfog22_%7C#E=Yah7_V%O?r$AwqO3Tb#n43Gz&;KkU!VBw;PTdrAq1L~HBy885}Fgrf{n56pyLH?@Uk^8n*zIpRT^!AWfcDJ2(thdNI(`(^FH=wcY&DdmFPBZhg>mH8B0}_T5J?h01E#*lTEM6#_)y zM%4|7(>&=%{7zyBUIVfMUg6~B-JI_-GSJsIF)&*0YZe5R7|FpC;UtcmGs^T4wO^2jP-`kF(jG|pv-2NtOV)COq=Q?uemX%e1 z2Ayb;a5#@%A)4iW4OI5+_o}b(UcY%${#ucJ@Uv$a3IC$-rc!S4yswuyy@`~4earmQ zhYyzwY8O4QM1zBab#-rW<&BMv5H=M|VIp1|Z!5rt~u{1&sl?s7yj z87fpCtv%mUQy7f*L`$3WMTktu8XwZSeEI!{55SyDC?vR-m6esw&d!B}g&Q|+^gVd3 zRk`*TQ0Q~xOYxEx7gg0K<>elRhR1}(MwC!!TwPt+)nbkcnp1Za5Ms|#)p%(H`xWWx z7#haBc<}=B7pC>l(Dzp|uOatvL2K)QMESkP+NbgCnffLCf`XdL$^mri0?(BJ+|fR3 z>*{P1y*Bay1d5AAloRjnpz^g}d`WHc?aCpbo=WE#W^wUV;6xx4%v7GG>x)1sb~eO{OUTx&tj*Du<4C_$i!B@e zj7bFyuNaj+uK!LM=`XSEsHyP@Y*e~%fr63}$@O=37LorlHg*$@xvx(jL=6ZBU}n5P z3jitzIeId6<(k&(u%EVd2o0nY21|m4v2&o_82a^#4MUvQrYE-eO4T*ml@&!&JG0Ri z-)x9f)ToH^>*(mf(DY}pk{9=buF1*iimGdCJ5%QL2ekw@0TL%HH1slF|0ok+H2e;t zSiF~_3Wf8&uWwRH${n{j<9GL$mzHk3QA-Agg*hz$H9f<>;De%d_F$jHdWl?J@ePI`3}*%-OFEF;FaI5~4S>XY~O)^;>EpTZEIp;sg( zCT8cB4sv2*Y%DB1eE7_(LQyd>66l*B?*Qntzl)EVl5kDy^bnP4}o-h_W&=GV1F5;^K5Wb`~&6N=owa&44YywNCpmCUK|* z4gS&9iI8fx$XTo7I~(x6{+ZgnW9RzVo$|sO86_n8KYj9#=rxXd@#5phkIcm0Z1av( z6pfirQh9M{(p0VBwX`hlec$*wh|1(Y^$YN2{6<;t^?bG-sDpD;?H>X?Z)%zx9^Q$W z*+p0Aq0Y!}>)t|@OP8MByqD_(%3=8oU5-VG%j_>uR5zMpR2-P3d6xo$J3)yl^Q6~X zNnrDE-Me?{UzkfheEc}*h@g3El45IXE8;$VGuM72P|@qh^tX3-(!Iyd4EX+;gl%A7?wo;qlbS2N(ZwL(NEmjg^Tk zjPz+)S(TVD?d)=cgM%MFtb70Pz`L57(qVePp`jt9d%8hc__G!~1K-$kcx7c}VWE(l zo-pC|qn%YI{LdQ%Ejp=cu5CR&Litb$Txb6Ld_#jWIzMK1t`jFfYi1j!XJnvu6@!Mt zh=SGw7Vx~LlMc2vH}@|<^BYb^PR`Hm?V+hH;wdXDuBN6xQCP4#FKTZ3N>hz5zkL3jo0oUT-u|uQ)D=t1^k>i1C-ji}{(I;jJ$Yi7 zef2Jgmef?vgFl_TfoHE@|Bm|NIS?v-mORw)O-M&s5qCR4Gv3Gcz+l42V*r^0Zg4fD6K6V{Pz2`Y83xvk)wKYzZ!$Cm>N$c7GNB^MVLgQ#6n;2ymzSAGwaPYew;Bhi4R%e^*Z zEDD?gA|fJ4)Q9G&=gK6Q`S9V+4o!OsG#!vT>EaZG%hgCmu;T#EP0^wuk&)e%US2?E z+qT{N@xug61SUJ1UW;3|z<^HzHZ?WhDuF8}1B-uB1OpX;Jqoj*_B;dk*5AQCd}2)_vtK@Ux4jO+C2_TJvrkAZZUM1hHf z1O$!~Yg$|Rv9uWA(t>vC-7+_qla~h$S{J3PgLfn-6MfwxEbDhKb2l{vt!I=%G$ z9Y$s;fD;Y+iR%^?bcYVfIUJ-GcUwr$%=`^@8o_7_&L1D2t!yFq zSdw-S989IB*IUTTd*VbhSf{^#$D892Mws0u`pXtE4q=13Pn0DB9HV0$KYrZhl-4RM zJNv}w=tTqaFaU%6f&%g0Sjy%DH+<)k)6(i!hJV&aY~8vw{f#k3ItP1u@TfhJ`*O37 zDM?{+@;_7oB66_Qfs2`Wc&eAwjlg?(E&pZhm6CM>Dex6V_w(mRX^HmjK*9C(_2}EL zPx|r$;D?2UO<8)KlvX3kGD3~eWuVIKD|d4me*X}C6hUjYT7#Y^f9{-qxobgUZ`k~w z!NH~`UI76O+(LW1{doHu;QYzZ4FSN7n~l*RormQ{qOYDh?C9tSxQ_Yrv$KoKrGk3; zDs3v?X$Pv@J#x)mT{cbXYUroneXx42&d&Ds`sCz(sHs1G{?ygcQH~P&($n*zuj8~b z+Z`Y^@A#>vU4sjg19`1UtU#?UQ53H$x}_3O#PY=*$i#>?8;yoPThXETez4Knfb z=aRHD*%R5I$E7yc^7Mq)Htwo!@!B_*`RWy$u<&B9heVH|$jU(ujyFgPOpNQO=$0l- zGE^WeFq}fb_?mOwKPxK>fHW)121tm`ASW~;B1^C6H&8Wp)6%I%lT^J*OCft;;5AfI zQ&Uq>S^pVfgi<)JDJ!v)TK?W+bCU3yl*?T92p5zPhD%R&@J4z8ejZJN6!n zmT+4DGdk6kHHh5;rvEx>4!TL>l``!a=TmNB(;tzfU@Tr|`gH9%Dw1val^{3KY9-c2PEl+zVZit6rAOMF!Lad)ZgYm1{yeg;Qlo8bGbzYtH z`inuGeq2Rac@mQ)`Wqm7W?I_!Y$5O(;N?EOfB)8V{fd&31)c(nD^;F~;r7cHE0pe+ zXD~jW;^#NFwr;GgjVq-ZK!JvS!l_Orb`bSk0?@xqM#0{sydeU*B6hVKA_s7dr_0p? zy_lX=W6oeq*U{2?m6o;&9inhu{}WV)Qilm4uMPJ`|6g|%L)Z*}X~#L8lX7xey1EvN z20anT-kU&9Js699eSN799;{r=tf-K53pvQd6c5<)CN;IEw>PAqARifwPK)m3;ZYtF zGY~YKjrlCAazhMSlK<~f^#=}pd>xw8wP9S^bEwyIbENH-qVmmONL)?ew%marLU?=% zVh~0@C@eh5!C_ofl?CK`44cWr6L`=cdXrH<_xeOu* zdR!hd;Ooq-L(s&pJPry%7B2-2{A57|L|P(R>7_j10$v##Gxe^!r(q&P1OeV;WM+1D zbo3Y7UUzX3m7zjDNAMc`zH;*=C6O4wAQiJGqy`QQL8<+Z+NYSyqUUCLz-pp_K<@BbnwF85zX>WwDdJ>*uBp<9 z(ec?ZY{GVO@=FHfUGx&J?I6zEBs+K7-)Bt90*FN-7R)5Qgy7-hBkSoY>A$T6A?WG~ zbigSn81^o+A{p|)$VddrFK(TNMq5kkW8L+o(CmT&1lZ3%Wr-LMQ1PZXxgx!-seI?= z=f*TJQvl=%^^A^VwlPltC;b?4lhp8_OhW@bkJFSPDA zzjce2fkACpNB^3Y)jG(U$w|vp%5RTwH|3dy7O&#xK%S| zl1yy4v3jxjtH;WmqO9yNvf4_Ri=cJ>h z-3gt)Um2ZMUw;h^`NtE~=|lAN9+(w{g@qTMSY5kiZN0I+IJh|Z^*ATzN}>?nHJELD z7O3y+*?TC`MMX{;8V7oh+clxZ0~4VezB%b@f*cTn4#7`5+Cb%dIt*~w(y}ime0_Bh zM3v|m`H2%J&dJGP(Y{3TCC10!Emu{I7HNUzFE9TowlEa(@4`Zb*X9PMM1UmfW5*f? z9_S0AtfJ{)d+Q*jfDV;*I7qOPp=!N+?b&I+A55iW`ZCs*a`VfJ`Kg>H!b=LD;3u41T#p|=20-a)i*yL! zTzq7F>TsFk)C*yof!e3Xdn*gZP(AU);GSy+;(*rxw9xXt)Yl`ob`ptKvlv==^oyr| z)P{fF^+yoBes*w zj8aBH9`mP_CEvFU)XkeP2#jYrVWLE&KziE|YC-I)=EvBBn; z0)wFWWrV-K|0is-SNr`s6BHHKPfzF(pX?U;=q(Ntour-y`Ux=Gb!~}HS0b+(3gd}Oib9z2IytmIVlZZ7aJF;g3+SFch5{rvnK1~Ssq$&N&Pfy6TM zT=tub2UB9xU;1-wOw_99w6Jgye)Fm1IX4KH0f+f~`V2;$|KPUpcBnF>GJl6C+jGmz z41pF_QQ^7Di?kg6DHMquhh>2Cfv+Pk}pJ=a&TFZL53Gb&3P8ymq#!HOYt z>Qu4IEL()!tzHm9PmYSp)-{`y-2S%p)xBm-M&d1Y2?+xwrL?nLJ>YL#-fE}#`o2fB zug*^hUwi)mdS6k+@9*CeQ&Mi4ntteL0e`)=wuT!la-AQC2nFiJ&Y{@mYj1B?N5_Zv z@28#hb5T!x@84H_&hLlS=^>X<5C`8YCnrZ=dQL+_Kv+0JX@2biMtD-&?C%F6(RqqF zp#b~YslitKrKW}%Iz4(Meg&oA*Oxf%UE8l?2?quS-X0A-Cv4q!NC<@N14rXi zWwm#$q{GqKkqTK?3R2f2-l9pO6(s!;=~0C##m?4N6!`=;85A1Cvc~UQhrfRZVGAgL zc*L*ON67%eVP~MvS5#eq?5RrMIup#gxM=*; z_sJ4=9v&+&$3RVAzkWqQe9IeGQ8CcgCcwxzge08$+7pT@bSyBCBqfb}xoraAqJHU8 zT~kv;XefLW-j3B7mwFV{)Pzr;o@{2_wf(G$N?^@P(ZGNJZXOH_*V>SwzjsEl#ieMzHs3X%v7*z85@7YkS6Im_n`M3kdJEQsk@6sKBD$0JQ$8s z(+HykGNy76dvu2nXWKFr$dCdKdmJ1 zs9Z0jqhTjGrzk-t156|dY7(HguP-`nZ#cR)v@KAsFWk-sPoTXYmkX%!xHNhNSmW8# zr!DdFV|s|aO9kxnz?vJ&BeA@~m-C8>yyixqW@Y_pO@=5<$MNQZp`j$;Ho)%t2m3rd zJ^Sd)&~h;)p%M=dP_a<#*#mkcp_Ib=2^vN{`YI4)cX4nkW5AOqScG{L`$|`&5tpQ7 zMSgyJLqmF8ocE$%PQy!aY$+ylH%KZ7ufD_AmZra9+obv*ycK|o2W|MJh%Gawc>7)0 zt{5q=0dyCklbDTCScs66%Wk!?p&;1|J_`rlw~5o}(w&+2u*ge2+2dDP|rjvg(09Z$Qa`5dQ1Tv56Lm zyTL>=leis82IvnA>;%J$^E4x`#p*LurJ|xmBd>KRm7f9+gj!l!x-S0y^1a`x`!<#c zs2$i*+MkJdi-n6z2@PVZUi0#0XO{!d>P$Ak6X+FME{|>W09v7()}gFJYXQyTqA^f} zE^_d|f$!hH3qU4rwF$BAE4BqX1w8!WsFVOI2d(5dF`i47s#QTtEBwimJ-rdLBE)<5 z?)mxp_AEcv)YTQ`c=7-kM^BM41%eYZv#`kXC;_G26k}oo&JFr5$b!SWhvD>ec5bei z+XA}zu@9+moRiBF>L~hC) zrlw{&c~TM!{KQbiX5j7U=qQ>@(@XJ)XJ5K?el^8196GcBi4)4>vvmL8=x@mJZQHgf zjs@By5uBeKD?RbwTfKEF$D`!gvsNsNV)}^ui>N5wHkpN!D7&aDru@&@*x0BC*aQ(3 z3JT84f0F|P!5r`7@UZ@xYl>97EFt#wKFT>N&MtbfP*mpbyNpS&0EFW|E`sZsI);yi zzM#lGCJ)Qe2`;YQ_*uRRW+o29mr^dqUi2i^^=f9f{`o||1e~k3NW`BIk zf8_qhB_&_0s)itRC(SJ&ZMJONt{f{_ z4i9PQp0BgeU?5U~yt5t91mS{01+wM6i#E#C-1@U>@ju$Y{&CY`dSI5oDvIW~~+z z!KmDzm0$E6A&B@gCXpy7ls>d5|975vlZgK4%yBSPAiZPwO(}%MHp4Mmf?|hT3GX{| zqv7y?CG~U|91`cwpXWQg3rt^UH6uMUCub=(Rx?d2M>vJ09;-v;+uVWD7ytS-D%3(* z%8J7SXsUFTxxM!U=`o=W$&E-|yLxqcY34di*l^-{d3g=6KLRg|O31DnZFb|v$B%3x z0yi3{sHu}~U+(~}#Eu7II!xV4P(XhAVb3@@IBW-kaADyazW;GNfm~rLABjc8udM#5 zgnZ%d;eo*x9GtU0!D2ZeB_*Yxz(GexM?Ome7zF^Glt#&adk!5q03_FiQR#x*4n|6! z;6o7e6nDx(=>+<2TwVT*U?YKzM)q_|fzzkqO`5^H3BU~st7zkX#)9htcm-d5C>Sh zJjPovIxz7d6KyNh?=uon(_8P|22Z9G&OO$WxTB;$R~{%6x!d3GftHe{mBG9ow_FJJ zix(x5kB?N%V4I$LdjWpkAgPTdgk|xS-XfTEm*66TWI2OXZ2j-PA~I(^Ve^0lDe@;p z^VY2~D7|otC{Bi)MZ-jt17^cU4!jN)^X*Z1E`-jUdHd!~U3GOlsDPK+8CME81q4VF zrGCZ~7jhl+IQ2mD_J7NdZV#8GP2=i5Z04auY_>7rZuS9gsms35=jZ2#aF28&QD#^v z5F^e)`7qyse1N&G;ma4KK!1!9D7VF_-o;N0UekYH*Gx~}w#?tXwnavP5)v*X3-)9# zi0HWs{njA*QAj?AaiP7?$vrvxJUaRe4EVs|);;+T%h?CNR$V=HMnWQjTNmm$^zxn< zC5)yi$;p7@lGa_F6f#8jZMZP19D*&$9{)Vw+27*rO@KIq-4AJ{iy-dYnE@x@ythB7 zI(9l=$98Nc!sn`u4a2^DEinrahzIb@Ae15|n4#3IuQ-7CX5Y-)X2y=4g*qQBcpMI- zo0^&jM@WtiIE2%$6g-;Ebe2|B90Okr$2fWfT=Oc7P5{V&T)&f$hM-CfKVvG44XH zM1g}f)N=FMAyt@5G0kM^6zF1#UqWtmE_hGCASZ2WQ@!NSNO46TAs#zpl16 zxI+(B8`s8t+y7GA;dSof#oHeq9fVa8of>^%ab^Z$%IM5DLPPs79EfIF>zVOZin@&|lXBm+0b z^fQrn;X4AC`~KrcMBE~Y0?N;a*GW*YKj-?6#Yc6YKO^;q)}n8Et8SI4-Gl`a(Ooy5 z0g^JBH>M9g3uEHBbLSK|9&%y;gNgzukKqNq4U_86@!J@{!HC21b=%$^Qm0koPq25G z35yqHNTOI^;O+>q9YYdiOq+O5aA+t?8aP$HJ@-hAEbb5D z&wqIqai>f_zw?mAoqFvjI=^&vIbj|^;;}o;L8?+xP{54`_wo?@NcUY@dIf%(^Z{gS zuVH#iA?_Lvxr>(H7av3it`?;HeOyjXZhUkU2Gdt(2ep02fsq=c^DpzH8^;-9n5BTlJV+yJiR0uhl>D^euI1>8el;jS9Cp-v+UAOgU}p=0U~vJ3)3_$X$P~iXbv7^O%sMqYQUfZ zs%}-4^k=n%6ta8OkwR8i|aG-K78;%r@*`eT1AD26AZN=7Z_Q+ zZH=gx_TxqcPoEB68Wro6amIO%J9qAY8_4AxvxA`r&^vy(OGzUfo+V8266XZ^WiwRa`$d^QI=CX`~>@a zs~}vh1@$qS*vKt`$HP1m{k`V`EV^I5@UXLg8W@NJfy-o3#ZOC8d^45d;fMAgco4`)IymMy)q^dl zOTF8aJ&a~g(mX*M*x$bGjNo9Whtn6bw3N6wXXv61}x>?<@TL8-hucV^`cA zS*pKMpKtoYg$gQWEx+W1FwC@NrKLA+-b97!2VDr=8(3kARN~Q~H8eG`PnWTHE2Tj0 z$PJhhyGIXjnR**B5#z7psmaL6#qH}51WUitcUm9VzaNwlDy5x+g8_mA#5}-lH~8W6z+u4En%dfVhW56$Pa`4*^KPp7 zm%751^I+fcX%60L*0q9P|GoC^8c65d`o+Q3SA#VP9zgTpzd?nf!>q2ZT3A>xz@L&R z?*-amI~f_ytN_Pii*iaO9L7U2)dObr3^pNvP!Pozwh`?2p^(VCQWb6*2cYP}4pVYx zw)B*dhzf@1LX2hw(k1a4 zRR987PZa5JY{P-F+D)wT*W$E=<2Y-9Vaev^cf@?)VZH=_M3X?(oA528K4BthYHaLm zZ`a4!Dy+14mg%X($f9hF41(tE01rf;+qSl2(Dg}J)m{;_73AV~D=Q?osHi9)bo3@Q z;UyK)*Vg%VtG1YZ_y-(|qB*Ir(Ag|a z_Ub8gG_X!{iQji&&JBP1^pb|gS*rJNX8G@;ttmaw+}dgfq*kcLxMkEA*{22=``$=z zYHtk$SkmbR%$z2>cW2;OBCuIRR1`Y;t?SnXY=_@FO1h4stqu=gGd0z`crh+1DIc8= zl)J}bmOs#)_m*usdza9|^9N`QKwl!c6xMVJCrD8ReJPYI9`rhzgV;(sd46nu{@i~Y z6(55bD$QD$4;%;qHN7!6JA_pUabRr6zoD|HBqZd5)&5h6gE=e{4VXa=cV2jo(`SG= zWIJ}WO>y%K-BBKL!j@pvKA~HVA%yeHnYENJNDn-OfPg^V5t^RPzCL#te)k=hgCqe* zZ!rR8Y5|lP2BR;vwa$ybUqUN{ySB&*e+Op8sEulit~vvIBTmfC&DsB6BO`>uDYFUx zvxEH?4>}OA0FqukBs(d<7~&T!ycqyjKSYv@`O0KKL zO)6O6k3>CIuW4xD77>A1{|RPy*pD!ve6FosvaUz3aC311P(fNFRo9_p83|GyIDk=Z zc4p>jaB!rE?J#IXbf-`2u>|ifQW$`K`Xr-+n*vy*6}S;Bc)~su4kq+L0A>iRQ43zngv)S-2#vf~z?Li%l;>CIYlemc7{Ez`4cL`v0F1Od=U%P$0c#BU05S6>EzRa@F2sSPf@(PG)Lx1eAoV3A%E1qVwfGts ztG`~)cdc*bezG<#^Dv!|CDs1@3Dfd~Ax=D2NN_MC7ZDOR42C_{Xl@~~u|e-f#p$-+ zGq$nu!UU9^oehQ!>>0OiZqmH*8W;=c*03S!m)L!%akTH)#c-`k#0Q68?)-Wb{FTz+ zI5YF>^kd#pB-91C4rHEW4@zmJjqwb^3Dd>Q($$pYl$4Q?kwpX(NL*17k;tehe_vnl z6-r9=@Wq5`c6BvMZd6j6wD4!?+S?AdKd+S?(nghJXJze(mw3@TjhUygsSE5Ix)H9+ zWGXUr3`Gcd5rzOviZJ;O;=}}=SEqc#=GX9@O-0gaZIX7sd7O_3YNOea3TA%I0xhL88xYj|eXkdXqBo2wav3S_sxhIR!$gVWb)AsL)><(GiMGEKI6Azfm2_2+p>dmUsu?D8Xpr;L?Mk=3a9&cybZR|HQOXUUN}oh?6(nu`-b zYdu-+2)qzm?xr(Ze(xN`jiTg5 zM@Ne=kUIy3`AIM@P%V~M_Il6!NRW=}E%Xv%B)_{kWXyXdI3#4%j(y((BsDmXHqGRm zpnWrC~P2Fc2-406Kphp@s z6%LM_H|M7BW=Zl+hEuUPT(??#cLI!es?xThLw!e*$q^cv+rOcpv#GpbfeG{*RWmK_ z?93Aifr9Lf$cSbE-W6MWGIgpYx*NXvB=;c<&Ud;MVO|I8=QLP~v$x=}L?;=<_M#ki zk3QJKkrz)cy# z_gimTCLUZVrMNiqohl6FIKW%su?}zs15@>ZPD1l}5FmH)Jp^bU6>b)%Pn9!Vjn=<+*l(jqRf$2}FRxKnXRe;dy+2i7DSmtx1;q=PC~i7zAza)gqdKZ-9KajpC8{mwN zM*R2cxA*(PJcNT;=xRn4&Y&VVG+qr=oFLdcEb++EKuLiYWYQoC_lF}ACzfJ&FGE=- zoe7pTB@jYMkC&f+`d;-3Uf!GEdjN=0KD?GM0LI?B_2&6=TE!0B$95To<1jK!s!*Wk zR#McUL5qlre#56sZ&_nb+=qP!7btX68FJyNQ%irtutOxRHK~+9cn!Lf^ai+6a%_#| zu)d9ZkZ*=Hk2r^C_W)3eYZ5MnS26<<6;AP7R^OGr)*i;C*qSb$P+o&PyNh^YtN z{{7eB41%Nb_vIY~=`GMK?d|0vU%U{zTIJnolLa;%PN9?SmYzOErUi#fNV5K@45xT!I44_MvX#CF|#K!|KcH%LpJyUA?A9KLgGW%*_DrKkV+3QiCxGHR2_3 zV}6P$`T+c*x;J?woTsI6oMQ1`(v~B;dO6 z&x1$XXoI816dE>Q2U+Litpua9RIN|&+%WFp)_Y0mjg$VmT&5Vf3DbOJO!VM6qyz-= zri6gxaLk8^m;fRj^$;0(h68Z`L}U-Wc(IK!;GZW>M1~4oJo=Qe4@OJ13)=`o=!2xI zY^E?A!1*DPe~U~8BaAY%XLeFj5@4+WONJI=b(%yJ0u$nnP(`R281NMUO?f>8f-^E# zUaDNMM~wb0fDH-{>XHlk2q6nqLjepf;{)*eYp-S8-QU8qEklJp={BM!EYbM{zk&w< zC;z)xwST9ovNw0}co--m_2=1_ZX<&u|W30?J+gk*sTv=He zy#_2gCJ|>NIs$KLz<)n*<(djbrRxmlHf$H*Hla5U6bw);5NXYEs;$8|0F&u9I zBEz{IzzSGrk~1JRJTEAa)g1RZqf!4(ALD%MWxLP-8H%wY0S% zM!C4TlS<_XgiM6l3uyI_=P(7}J6u}Z+DPBg0$T|C3_S683>Zo-8XPAOoUk~7^L!*G z0P(s86i0f@=g<2qJlrrM1AxKMgaZhYPQQX|T|G{|#d{BWcp1cY5>UNTn=#q23$|d0HJ}|(+Hepd zaJ&`UxJ5v=6!w>|PPHS+!JHb!;y3|nX4VZex;hnM6a~uyo`(VXAi>5tYr8Twv+{gh zX_JA>@c;Zd0$;H}nM=Bp z$EKqn+O6H+{viGu?U=g7ZQov}|B7#TL&91c)t9M(IA;2Dxa8U;{|7a5v4tiqc6$)e|Mwos#@3%SdXuFj8$N%%2ZH{UEr@~LIoyOP05Tv-l_)^E@Bt^9sD8EK9kIeiwm2pp=)paFswH z)gTZ^!YD}bUp8(8HsK%JjTB@r5VnZ_ORP+ZAP`sx@)xA9xyDZXG}XDL&CEA*?o3P8 z%gBdvf&PiU{)akAosAiXG-MA9bbgqk6;oBECMP@im^w0QKiS1S)Fk9dNoG?)rO}^_ zujJnp`m*UM*|htqrhAs8EVEbkIrpr3gIoG=PD{(n|xCHUDh`g8>XlQb4+otu+W zzEUgr?`hP<%t zhq!5j#^?z?&QBH1%*{Easq5?ODfyzFJZW!l7xdsdejL}X-_(+llDc&19t*|3efxIq z+}Sez*K?PUE6tD5FN15v=kD)0EVJ4yC4zkqOHN8UE-bwKIhrp)(wq0hi4!MJuC6YQ z7u)td3<^^C_u@Kv@+23R!sW|{_G}mH92^{^=Zy{z-@kvq#Y$0jc6MgwqYbC?cGqv* zxN-fuz@a^wnwrihF3ZV1c=+(sr%%LBxqSJuynMsQk8<+z@(K$1)lrWhKaPlq!2drX zzO2Q`v`=$>yvIGLk9D|Jn4X@V`R^rc+l#AJxGzuD-QUYB;X!@iz(j9l`NM~oqj_~B zpF9~F8ajA@`05lne(YFXBhTT(he=36B%%$6jg*v>E)rk$q0Ew(6%@F*xIX`T;bw4G zcvX3CHB$A5UwT(xKZL6c4w{&n{@_2da=gI#lWNr8HnU3?Y3DexL}&aOOsek8v-9)w zb8>R>{Cf!t-@wvnYnR__ihqV^`1i7~um}$ized+xk(ZbE``-)yZrfMII9o!k%KjnN zz3L*}n$2jeBhRo>a%$>{=+9)mh@l$W!J#4It-gEr?*04sA3k8gm&U(0VZl^XnrdpK zaH%U-!p7(uW`EV~2zu)r;HNWgwPjPrcC1&n#qvk1>|RAhMOQV3neB+a%^d9Ay?}s# zd-o*Vm#~gj{WW+0{P|<{?}a2B%W9LtLIU;*Y(Ff2?X`^s>5o%Wuctme$s+tgQP~jG~Ss&ApZGYPxh! zBs^9OY)secjrc7`=HBNVBmc|fOYOruHZ~@6{=BEB=f?Uv@d+Ot9_a5kFg0a6dQ`^A ze6l`PW&pahR6&&*N{Zw@2>*e2zuV(rat321P>N48V;fDK?l9TmH9qLqB1f>G$Wh0pSrrb97^sU&hl7a`PSC9@T>0rrAwEteJ5>`q9%2`h9s@B`&IjQei%Xfrzt_w zY3$mj-clnaH?8GJ^NXdWCCl&Gugho?_r%kaj~HlhceJLcsKkpO-oIbK{`WgEm#ISx z3~IX9WSs^-KE~s;XWUTJrMR;5w2Tkcz}oUO9zf#GT+)LFAAi>ep{DiP=`a^aqm(>( zqJHh#wH&?5)NJxp|HG_OJ7(~_#vej{me?EP%1DI5f`X*7msB}LMb3Y|#E3ahNbN#7 zOx!Ta)d*!eC+e{>gDOMEtq~R;-co3JBR%Lh&DO?pg0F9_FZu3NUb58tEM$q7Y;3aA z)5j8evobR)+!n_kACpDUMDgiQjgJRyn~^)f%T zc=ztz-kw~Nl3RV=TkXxw6nplFV{v3;YA1f=KlVMoIy>+IKcSBFl-|CXZh6<4M4CcM z!q#?LB|&0i^e6IEL`;lX%vn)hK5cf~+}xa(m)FhBjg5^BDN!x!b;^Ydr$ zqetvY&n`HzHtY3woFFu0>s1!jIK}w-$~eAjwfR}Lv0&rrdCt8%|9$m?^XJbmPj*K? zeL6BW_Uy?MHa@31JKaBy-4j>#l4q6UPG{`soyy)mFyd2&#}?M(wAW8^^! zs!A|JrfxZ^tj*feB$;&E_wVlR?$h1HIWJ!twWq5~NJx~Be^P(_`ZezLW@GGINx?*Z zlq_?b-U>n6QOPIXJE+s$7SrAIch>fNDzc|tU0K1?a|j6)B`5#E4kMbcsH^`hFmE0C z_G-3m``%2Q(w4Wx*InG0C-KH!+3(8JPb=2%J-b`&>Q!1EEl1pnT8eVqS$m@zACm9c zx(ufb2!*Dt_Y)HIU0u)GJgm)mlfQ?s(@W{?cHg(M2ac+U&n+{ab1O(pG_bdyeHTdc zv!}<=(eVW5llX@ZAFeJp`Vv$LZ`@$e{7`-g;3c}d@HA8d#~=UblosetWZ`i1R~eWoPs%Q7|@z59(u_}jJX znHsDoPJA@VMGp%K3K}09Lk*32Ug zTZ{IB<7BIq@r(ZRm-!msiSOQUQX;ogF*JOEzLk@c6BBc|y--RlfP9f)&B1;Aqd~{M zC-pq$+#2B=$GEsyS>H~kC+5}%(KS66-pfg$gzPQQ?W^+iwAGy+{H0hyWm)!mq|&>6 zzV_I8riO-w*<>LWir+{nw9l>0HNN%$sq%Z;uL!YjD>J`J0@X6;?(D1du0HmR_@+Kd zFDCj&PCXS1CVCSmH5oPSTZRtlbbj7OC3zVy}bCd+=W@v%L6au?AZ7?no?teD7&3U zt;(|8W8Z6~4nvonotMg-#*wk21Tt1B1sRtZKrhGT>sl$Yzv6-dvvta zakK>mtlD#}sQR&2%561X`65g8?W?!EvMDqqdcyL8`w6AP3u&@}Q0MGyV+MQ>rU}W?=<3`SVm1oyQw(c2NBzin_x#U24HEj6^ zBO@gxWwF%{89Wfbf%G{k1;Hc(C#S{rzw`NddGV6o@o{mwSFis5^~-)`#!&s=OP{Za ze}Hl5Nn}>mb{6tGO|7l-likHwm83H2kyEFRk==^R(XU4PNKZ}Gsq)a&(eXgtLH&&i z3oCJ7wmJVCC9l1$t)#S+?fCI48Yd}n^M~o_d#kcJ)3-F}laaWD) ziLYg3WHPg|z9U#~4=XRt-o=#xe8kZ(R5<0R{Yy$p($i16bE)=IN=jA($|yY-QpKB3 zQONkv&d$s{mGE5s`doOpG48WhK)n$j6R5%f{j9q3T}=%O8(YAA!4@rZ^R$eNaoiH> zEsDJ8A?)pGH1EyLwdrHBAr~%O(9qu6TAbt4t4PhtTAZ6(Z4IE1(bGaitjrDo7NsE| zm^|D_nj^7r%JJfw7cLAUJ_Q5>D02V~`4A>`b>}Z$98&p?%7zvjz+u{=3-Ey!HQPjW zi{T3e$>s?Wksm!hJ#B4mO-(uWyY`diI*niF;mJx9~8jRj(GE2X8S6UHNV z6>yCzkG~F!W9sR_hvv-lJTgOn{8yk5~pFYjYJN5m*aS9{UO5Dt?)#O{- z&k`-rBTPX$}qzm2{cv!BcB> zzIgG1m7S~S_DD19;lnYbttsf(j#kJQDQYrR+_TeoM-UyKUbWZHj*g{bYrxPyjdAWk zeP*@~g+{uI`GhJ5!(FC(Cx4a;i;6z0EG3b84p#RdHa7O~X*0RYm)VaWKf%SdmG;AX zYa=B)yEpysjx5e)~ZYkty&^JwP1`}$Q$K_Lh&p{{OA{60VN};$yLSEf@#9GJ&aDCLM*^a6IKdm`Vui%aUrHZHS0Rd9UPZ-w zWd^lWm4?UC(sKAqOuqM)m%4g;M~IP$$->;w=lFB(4p%tWL#O+y%S%gtR@_n3(0Dqg z<-=@niQ)!7BHi894?{zjXJ^4y zUX@YzGXq-&pNjc{CuE?f2QuYgXD>QVj#l#L>+@nHNzhNkf4cup*$( z&B@=iK1I0d2wGQTd%L=Z#@XY?FX-!62i!mos_5xe{Tg{K)ZE;RW^{s^``Xp37PmQS zoL3jj_w9QebNVKcP#*k3ad*pebNxRE^+a7^nx2Xde-N6RiS{QXJhHuhInHG1LZwD#D_PUuX}n{q6XdFw!=&G;C`P2 zSobaT`?F|b2(KM`nI@*E`zFR}Bn@*l&=j=MAv81kog5vJ%2%&mJxXM$_Z@F9O=y~% zkLvHeN5(>K=3led$k>=z`x>9m%-Heq96EHU|4vL1 zCogX=S{p#;%%eSaJAJ7|-vGCR0D$Bv#|T`!aYLAkYrHK@4JbW!AtpMy*t|9Q_Hg6Q zUAw~7Ii#tG?7^6478VMMi#fQ+b9Bp>rhbaK zxVT((v;5N5c7~TXWWnZd{PXACh+(iS6z`S8e)UGGy4$XdVxLa`;aPq0QrkwlKM;h>VDE-`YGEA8jt8uir<>AOxji=gwcf2krLxhIJ_4iM8)8sdQMn z__BD>wztu(W3*)=ZYx`}YQa|Ty86|tbAYSJlLrqTtgN`6J9kb@tlSXw^2ph+j1NV|^VR&R}Eb?^6w3-SR+Hy`-Wt4VbvXx4q{cOHxjMf4{xj@U=}EnG@!l zx!;OIlG9fpx`ke9#QL`K7IP^8Cr1o+B>uSPI8?R zJHwA*tUU}vjd5ZC-t&u#L%q} zj@&jHTIjI(tB(@;{P`O87sVg9I1Jh2=FRFm^Ov9?XlrZB{(GsYsGzM-idBbMHiWZH z&^#*<{R9E#%a!dw??KcZwL&e@mT3}*gi}N?NgD~ zz#V94tPFjQe);lcZEY>Ms`uYHHc3fIKECPs;U+X@u?q`R+N?%t&KKl3Cq{Ia6Xx0Vii z_I=A8pm5$O4Lc+A*psDt^H;^68d=B}yGb5QIOD;5)f>`GiG5s#E=qI~QL= zn{X&*k5^DqI)`e_S4?0$Wl-}>(9%^%N45YY5*@;2tPT9o=Mw0YQp{ln{@(h60w?E3 z=G9)+o+)^ayu9#&Jl6-FQ&S;~VyM%1gi>Q-G|~TeZ1BC`MnXb@Zjj~4z1!zJZs3`O zy{}16A*~Rtmvib)@_ z;oEVLj_!MFYu!|Lb-hup5LVy#0~HfrJPC^1GkOt+q?TutL%GG8W?z5KC{}z}4L=y8 z`z$A^{r4b>b^3vpzsP3Uw3x3V2~|(x**}J?8-4jhiCx7|!-26O5I8pD-^+L<wYBSj!U`9vGNM zvf?*a1!+ot}65^LrG}+<{3bGSG}(T?)=CD#BJv<5}G0SAd70Al#Yg%$=K? ztKQlK1pd*|(sFI<%vX&vM{^~m;QRM?1PFdfknF?lp++3&XwHrmzcU9Gzqz@Ir$5uq zzj<)4PQAe?0D!8Y;a%;K_sRb<_76GfOUJA8;L#)0M4cil&Fj}`UrQ>fp_O}jc$By_U)`;#t$jZrKvnzv8kC(- z-EwE^pJh*wE>+b2QqWh{=bI#rjEoQ?yY}uCK66G<;9?->At4m^PbxEU0tH$;uVz} z%P&3wDJdx`me?N>klM{kG0F>US?j-(iHQmQR9RUW6%6!IL_`F9Q?d~1*&e8tj~->F zrR}4m+Y;o)f8JV~u8xg8g0>AI4(e-y$nE3}ZYD{Ol{X+bZD~9|En?lV0#FW53kan0 z`ny5wK(bCIDyZJIWuY*i1TetUqYc}mZsL~+8hTny(7&aJlaq9R^nHQMUS=%2??RZy)N4| z21L>bVEyIGBP=ooLIpzJn;wFKf`E)Dw5Y6OBO{T~(caK4|B=d};%GSqg&pMNm3QXN zu%nBMi%O0*#>ThNr9oFvuNEh}UAhX)b8~Zh{)#*+hFE}GS|0i4mrm+sWN8`1f~EQa zApJg=0q|smN?J}I|E8>>Qtddp-|wx#4pzUnSf_^o#78N1`i4bD?%A^kK@=zIWMOS> z-TDeG8v^wSF|qD1U#uXsMny&S_Vy}qoEY`+^lWWyg%IT`a;tS>Vgd@adDXL-u0l&} z85#|GccK^>s}kgo*t7P(q4!Q$Z=!=q7}P*@+`gA-J!ROGp61{|@Zj|9Y-eX@V166t zv%sBCxNex4nr3O_{_cP4SLwcN##hEN{=r=4&Yiyx4*~^?ceP8LMfJvR$jd9)jMsgC zs`v*II_SNu6Dxs2rcB`U>7a)XjhHL003swLe=d4& z(M;eWX=&-3H-|APSXw#*j5^+twYL8E^suBdO_6oC85Y6VxUOBbtERVi6XAUAhV)@u zTU*?T^U5&k8Gn`}&h38RD&1X{zC+`rrKO$V*@BW%?eX_0J3DcpbLC32BM0hne0)4Q zH3PrVJAejliL!uzdi1APuU?@_E}#VK=%74wt>>R%<>8q`6+{ajxHNnuuef+G6;*QC zu1^M{6q7rAsUKkD-%JPXCu3z{nL*n@gF1Jv5&>?OLliVHuc)fpd}CM#7^W?l9TnB_ z?UgJP9ME}w%ozYK{qNr|9@??8jW%czsM+>snYyNC%sZO~gbM>B<4>=s=$Wf>a&maW zRMl4iCq68w2Gkc!Oa=kV7^0=vX>hv#^ zp~V2DtSmNEMtLZ9`n)xm=&SaI$O7?Tb754C;S=@2gSsfOZf>i{OYrfmoE#z-HDi{y zmVqz|-a!nGdCnXZdvIgccJ&!8G;@#v=(Bj1{w*2m7RXrP2;)bOzNq9B&ve`}o|>8h z70S=eg@|ab%@3Lp5)uL=g2J%8urTrM)d#F$xAVLmz%q&w229o&{=!F&93kDdEiK#k zJ4QHzV`E*}Ouxy?j7cgP#hk4G4XUg3z^4FrO$4;Ne_@rdN0|ADM zrL+DUfKrWl8fbm&_ZoFYb~SZ%!PBQB#$;Sm5)-9BayPcV5wZ*}$+=K+QFtFcMtsd9 zp*oyPOd7&bw-jVq%RU zNzZ$OQ+NO-aaSoP){5ImZ21WG!YxVq#Diq4KQ}lj0z1U{<|9DO7$If8d$13|9jh)& zP4*3t104?_cX(*X+|n{fyEyyJn>T?=Xf@Q-)K5>}q#8ayUxU!WGNxwx%64){^J*8N z;1M==fTTd!z$~+%u+V!gJ3e0TdGxZ<(^J1bJ>dcbWU>5Of`CO&pxM74!^P}ZuLh>3 zHoMPqgHx8+4`2;3Kjj>7=tg{_G2w$y&*>^EDp0f_a-K)-Z*BYZI^Oz!ya3X2me@z& zO7Bm5lzky_pk@F4`}b@7xi#Q_>#0EwLJBi8r^Pb zQb9yIudmDkK7aajnUOIL@=$bTlqB+HX|kJfDs$d`;63!>(6N&xyqJ#i@$C&7dBKPv zrFXxylH%gz#qu^;UVh-*=}r z{_>O`C5`7tdBu4#%&Wlpy65wh6M4v3J^5q4tgNiCQ@wp07IsBd)qMVC&32U6kcSV6 zI1QCsWMb?FRs?g9Knw?{sJuXkQ3wELv`>unMR@f;1x|B_pP)Ftz`}K^mIYiI`N+)df~Iw5KaqukPBp6Oz(%e&b7!=Q%xv zI!kY-1P6abdRJ6dPWO}!jE@+&aWK);JgoWC?B-422s6OF30sWxnD_5@nCX8D@t6u^ zIkNCk4@5a(piQqzu~jT^SC`h2a}<-bz{EgT+5*SEeEi5_j}`s~Km>}vmq93#t@~Yp zKePhLt@SzylajYUa3F8Ae0szY8yXPE|JC=u<1qs0D{~4$Jp6|Aj(H8EsVPS@_5YR? z`caaQK`5VC8OxWN^74UYWp48FJ4>tUF{s22ZftD$`TEi~?yz}|wI|X%L1 z8>=6A2u>=j-B;!TKqqBAJuiU6uSI}Jk`9A%w}`J)$e(LH4W>x{?>YJ@WxK+4D_nD5 zO|0!I2w+J{gRXCu5NS9L-L{mOMo7rI>&#MA5<0N$WTC04DKe+K+S~gxA7Yjg(@y7! z&UE#RdsK{$ z`5q+$?U5rDKw)4Wg=4j7@Q``Z10*jRgCYb520~FOEGp`KV|c!sYIA5i1Xk5omoWbI z8Bm)ye2tTA5c87w;@8m`^Ap>p~1%Q9*oGc*!e%bPz#iUG~!N+ zld&=uo<#9!?&xUz@?}u(Tri|cxQ-kEOt$TyTAyUB#d>UEt+6^ud$W?0;g%qR04QqK zv%l+=nl6{7fN)@Uj>nrR2Kx9Awr%r6@IxP#ngo=sEiD4Ev+tB z-;WIF@Tikm3p8@T{lTw^h{}mjvpYgZ1HpTQ(F8H1xq{UWLgb49zw%MSMuLU1DN8f?}MO(ZcWax(DJ!=J!Fx5l;F)=aVedU-{p-Fsr zbohKbNfDj_&x7G6SgH8g6+Oi8$B!eZRXt1(bTFT>cXmc+^|>xZ-J*cTZkgg|)wcZ? zk_bZt9zH%vvoBB4pYf3!pwWu#5z9{i{b48i1LB2%0Sd~@$QT&2Lz94l@nVp}`Z;<$ z9uP!=xT0L>{cM7Q>MANZlyny6=0r5H;HGs{NN5R(4MI0zi@J)YNF;t{Uk;^rRD?1J z6QK?-uMJwN&PJ1wtt}rb>umqqZBvxeylB^u4|?bVLdd1%_^=$-yJavh0mIMxZ2lNG zYTa8=I(yFov4Vn#;!+IDj77=>Itwz!06-RbrgKioWpS(>cl=9lYjAFM*51)E3CqwS zP2KVt18~vn)c5Y+$98UhKh_AJ7wCB;U%K`hyFlL5Y#dP360iqle*xTkV zSJ0$=eMv2fC9PjzzAx^zeyAx(=Dr_GQZ)J%ims4OYFe7SJT=A#&R~(=qWl&}f3Rgl zC(%-5aWOMD*B<^aA0HnKDlT8%HM+5T*RHbi^6Ac8zlC^tx+6!dOibGL(MgbgWu-7r zdh;fXg@TRkwU7=M^z-A#7qD%4K^70ItGzWfe?)SsJ-c-pq6;K$WC*6kr4<#iHwy*X zd3nA5d^rqJf%W`7oifM3g-rmun8%N$8_FJEFGUdmmQKwkO>Bqu8y+9ui+2m@XD25w z!5g=K+?+nBz6*Z=fcpHWzBZ@`#2NqssD;>$3eM>pxBqM|H5EA+zzB*&`#jkkL@EiKzjrZLo=%nZqG}Y{K!} zcy>$`t0hH@g`u4rhuwk9hPjV!~uk9j#bQr^62 z{-+!fx=5wv=oHycb8yHiC}ey+mztiApbyt*N$A0dS5?&>W-{xkyKfC(d|E;U1V=%W zJXb6%vql4tWMU!;Qo7$$Gs`L zbMs;4jTI25Vz)&LDoKGOl3o=B1!ryuJ6U40UIPS7AqPpL5;DUjH0Ym&W`7KGT1Z=#oUc7i~$N_}= zM~^x$#ShbG^Y*T{QJ^JN&Xdp3l$&1=9dNP@AFPOL>@uxa?hNbbe*jErE9Xqddo3l;G&CUeu%k|rOi^=u+r zp9TeeMis>xb^n=v0{9_l-BqykrfL)a5pEo7vB|@Uap)fPpg|&gWlT+nfE>eA8*L|u zWMg$v=NXky@{1SyV2;FE0H}hAI=Gkg5m|ww;{qrX{BCVUN_IlFy%Up@UxVj)wT7T^ z14oOmsBP}zNUWQg0kjL9tU8>;j<```Y4 ze%ow2WH*zvi)}C@1hm64*wh`90|!B}OcVK4aF^B;26R0uigZ5FKv-eX(JA0pa10ts zLT5p@Pl{ZiS#rDrPcS||5H%1vf&v3A`h;c}>^x2gCAh-Sa={V`m*%QBSK*6Hc*m%u zol#UIbo8hZrij-L5~OzF{ykO~(vTLh%davszXTsP{Lf{D)++7R^mRWiEtvTlZjy>g z{H#UWiQWm;?}yfAV-9j%hw(xjE-v-&V6{Z<2?hYKp3cb}b7&B#oM>{9kEo<*|GS1f z25$3SfCVM9Nx!k{*Rys0rWlXhscCMWL9>PAD$LI>;=L(8y|-LH&!hou>q9Vu3u5rP z?yZ|QZ`#;EQ}NM>OHhRCU+I^W9S_52YgU;Pr zkS;-Dy&z)1P66!IW%nxl{IN@qT+wPF!oe8PlD->+${VAOi3zKzw)RMPldVo{^B_pe z?MB_5YI(hTcmt;Ra3+5Qk$#EYi^#|Wr9X>;U%W89cC8K0Cya(mV9R1+wzy?rFf;Mv zG^X2_KNWazAhilH|N7A0{v@MtBOOL1xYTQFeLoD4hC$5U4KXKHQs6SRKLEo0ZoiGB z)Knt+LAzqhRiOedMNESie%O zZWUlDRQls5Pk#C=O;SSg-!*^%W0%ptxQ`ya3K{dx4J%+xJ7;J1*Fp}ke69WcOKd^^ z`RoRUn0Vo&zz_%334<&iokGr|M`4`HwfZ5jf9uw>#lZ#|alT#a#Lq@3A|R6-*^V7M z-%-_#=>rfZ*Y!-6*TOb-j*f~73h?-UYi$+tTs_m|YzkdW)M>2kHhcSsAgKrou zr1y`zWT4gOy!$BpaA`t zF+fNF=rKl&9bvlDxgYlG-2D8y#|t&gGs{o6oo%Y=+!|jPxQY$;80m4PYG34=_Elw6*m{+CuXvFwwq7M@NT`z%bdNJUuLo8k2dO zP|_MK&*m~<)c)m7c&LxEQ4r0{@sf<|G~nVWq!(cH3N^8u09t|R@X^=D zdm)ZRCnWR%>))8-{0C`Ail878?zzY3b;o#S@)dCQmM~N=v_m zEy>i(3;|4k_%J5K`r{TcH(tMP7(-ot6v2|2lOu^dm==CNco+N`LJ$AhvnwD&U>#L% zizlOL`_Td2TwQTG0i#V}`=psMoUpFxKwF{eVVVN!&k z|MmVv#`UbOGAB$vtkE`X8Q?8xf`tJz^f=YSwU;&C)c)(Rs-r6TX7)m5=~^ezxOC|~ z_A@pvuHj^I90U3Wa2SFIF$2w`#6GMZqi|S{MUCD)zy&vo-a_TVKuo?u8goq{u%tY< zZMXIkKR7-8vW`w{X7AaUeeuA7K;1`=9yK}Gy2*d&5!MwG^3sx$FF+1Vkgv{RU(N_wqBC;3ys<+HR6D*=|?(4`;DLb2TsWArXN zL*NIb2B&0T{C+^0e6z2YRa6qrn72T`y|EOYOMqB6a?SY-l4)YusWEXXzU?G>U zMs?<=`0d&5H=j-D+KX(PdF?FhNC*Y{W*$J}5N@?o3>aj74{eD-Zq!O(& zNR`11U1yE*K8=+42LupLUc|(Rn71TBLh1hT! zlaQRXz_769OwD|l;E0nxOllh8ONKO9XSxE<1ku(G`~yi^C1!YPN)LksWNp#n5yXgH zztlP_>DJpm^UV(?0`lua?e|zPsY0GjK^*v)ezyreUd4EE5q^GqP+j!z=JxhVyI-Un z&kNF0Q^g_JV};;RH9wL8od>X)SOjoPpu3qzf`!a002L^*i2|CIgyYB+uP&WPhC_Sa z1BJhO`4U3CO<&bd049w6ivGUi5)mndkp|WiGaL!RM1(R2de{^S3?|~%8rx|0?YqlD zR^^Y6wDxM8FNWF6-``)$iFhVxWgv5B@0+3`sy%xa=I4WggWEAF22Hi%Uc-W!np4UGQSRk24h_`6Fd5KKOdvF&zHUzJC2)>lbb8 z*$CJbNGggcd}H1li#On2v=oCkVR>=UG*<&Nty>l9t5^y+zB|+F835}bau;;%AsHd2 zM^{DvuVO6*e{3=^7E_c#aWGU^)C=h57`9;O^gfh%D3CYgNB6O^VD;a4t{UcZ)(PZ>7$OBP*VOgn?GWflmPkyCd3vrx3xLm zz6}edXFeT@Is7t^p;63X4vt}=09=6H#jTk)h(bmtJu)&<;k8jV%ZA6D5X;4g7AuU^ zBa?>e7kWfwE+vY@2VftSu-ka46YL za%}5|{;~DyBn6)4EOeNT>_VUGm=8dK?!#IkM{j<8W@>0?kD8KfOTY-l6iE%4+GJX+ z%;u*k>Tqv-0VJT{6gQ-o*V4q{hz6`MDk$78P7V&wAnZW{F5S3IGP55K2YeyuC0C2R&buA#4uh-||Ua*M6kis0OtpdJ(86%aYysLnj-|GI z`^I^aCpzr0?TWtS=^(dzSI(Wk72BG0kNg3_W4p@2tR!wsh}md{==Mb!HDe~LbQs#j zly=LOXbjXT1p$agPus&Fq$n$U6Y3j-kd-SEBs4Vi{{0WN0lV+-x$Vl;UF+y z{tL4kN>f`l67G4yHxH8*+2hnyoMMd49k_%VZ+)(LM(m7SkfNu~;Cw?!0WBA&lce`=%o!+vz@Nk($ z6@rw+7mB|L1qF_ER1rrIw-!Pa2wHLD_j|aRt(rQQ6;c#qU?v>@^Ct>0pP4x){fC0V zLYLbQ-s~gisG!thX zNhz;h#UXlnEmROBik8-=&6fa@@EyQDdtRE~^5Yyk?@cW}x59A@pO(>AKIA_maU~#( zpN=JA{rl)Oh-Ri^$y>SPr-m2|@ zXv2r{oo2f8N}Aja9BW(8roL>vB)IMXKZXK=sybAWknBf1EDJ$&z~ewaKh%tEO6qrS z(mk_ocu@6CJ=FpS7Q|C``M}PMLz0Qj?=;DHzQ4=*1|#@=fB&3Y-+XKrK%i}3rTxJ6 zsUYWDYcA8&4=d#dD_1wV`y_VC#)?$j++iC;+E31%kVp=?h=$`W>dgXYw}b@otj!TB zk^^WEeXG-DO3~NVJIgm#vt365)w!bJ=ANxOMX-VQ#25ZX6b+Gyq(GJmOh%yDzkByg zCxmjcx20OwukKj&JEoOIp1+Oz$2->9Sx8n0;O%Ab{n60W8FGLrx3;ydPeMlfiNPh! z{f%uyfVj*(l}hkPRNQN#Fn<9V1p>~WHxW=*Foe<9--0~@tp@F@)^LkJh=edmdczM3 z)7sD=4`Y1YCJEsLaW$^`o)QyVD=xkSDILf0-Wd)P2-h%u@rCpwO$}F2SEyiTi5YF zUER8B9VHZXYh}?1z{e*9!Vn#(Yb=?enOQQ3wF)1O`W&F6+k5DgPksx5kP6XjH-shN zrlP-dKv_V@8w)QXLFeb6E;88eLq%C#JMxkUcFBI(-t^bg(?j&6;z|I^`ukt#rZWBnxQQk(aN|F3 z<94bea{u#34={TqPV0C*F!fTAc10NnPs3UeBz*Ku&b&-Z`-@&8q=Tan={Y%lD+l3V z-*^R{#o*=bRxBK4IW{0h0#G(?kpm ztxs4_X?kGbG(^FK_&5^6zfs4_*RK~bGV0L7Eo4BQgr)RM#cvz|85xnYF#qpi1}Hu@*gnV2XLk%jD$iSFRA#;kxdV@Ngr{#AnbinlL$_SD_{$ zh@QdphXP)mw6ww{TCY%h!d{Potwh80D5ZPk!3$K(6=pRskvWq)`!kNGW98M&V{culd}~!NvxMZSgN6 z4h>FTeaWTo0OUAi2p9NoWjrjtX`n>`7+32c5MCf9 z5g@d|XM$y&irh|+q9kLjO#Rof;B_i^gnwc%nG6k(OnT+--{8Zi?{N?} z3F5OX?pJ9CQM$r736zJ(>Hz9t0i4YgA`m-Mi)w!HC5B`_jB2pmuwzx6#N%Pf9FOzy z@v*Z<;h;~-c04MY=D&|O^j0PG+u|q)rj$tdwbpXr@KeIVILr>a=`ZNAcQg+X2zW^I z^gtGj&Y>^i@a)dLd*Q_(9s{(8HL(KahZFJ=FlHaoPMd@!;NkHEDPbvbPlpE35Nei@AFp$Awr~y**4=S!Tp4qC_`{)u@Siy|==nb%jj1a*SZr*p zexH#fXPuW`@4n4prlCD>z+-Jm3Dlym&l_g&m9{caqJ<9*cf2mvIgnC%=eul9D$YkED;268af?=wIi6@ZhVM zqD7{R7ZYl|E`GdO`R7Cb@Qb%VY;7F~rqe|4U=GgKUx*uM+)H1#qqEa{WA#aG7lGiq z6UkYvBwaLS-~Bj%AjO4xVt$nTN7#QqyO|69_cODr#y!35dl(scPCpQ=&0-4H$tKsbTZv6Yz`rxe5&4n2O}Wu{ zubrkqx`R34Mfz5X*&|nG`5aRf=5t`>zYNi451?2p=i_@F$Ou~KxT-Y&ek{X}ZMON; zoD>A2%ReU}kND#Pek_Epk3kKOj!^n1v$SiS-)6#OG3k9>cH+M@`MF@;Nh^zzo>j6TgJfm Fe*rx?@e%+4 literal 0 HcmV?d00001 diff --git a/src/graphs.jl b/src/graphs.jl index 886b88e..3a19d4f 100644 --- a/src/graphs.jl +++ b/src/graphs.jl @@ -355,10 +355,13 @@ more details. plotattributes[markerproperty] = nodeproperty end - # Remove the markershapes from the dictionary to allow for nodeshapes not - # compatible with the shapes of plotting ( Custom nodeshape functions don't - # work without this line) - plotattributes[:markershape] = :circle + # If we pass a value of plotattributes[:markershape] that the backend does not + # recognize, then the backend will throw an error. The error is thrown despite the + # fact that we override the default behavior. Custom nodehapes are incompatible + # with the backend's markershapes and thus replaced. + if nodeshape isa Function || nodeshape isa Array && any([s isa Function for s in nodeshape]) + plotattributes[:markershape] = :circle + end @assert dim in (2, 3) _3d = dim == 3 diff --git a/test/figures.jl b/test/figures.jl index c121628..cf596a0 100644 --- a/test/figures.jl +++ b/test/figures.jl @@ -43,7 +43,9 @@ cd("../assets") @plottest funky_edge_and_marker_args() "funky_edge_and_marker_args.png" popup=!istravis tol=0.2 - @plottest custom_nodeshapes() "custom_nodeshapes.png" popup=!istravis tol=0.2 + @plottest custom_nodeshapes_single() "custom_nodeshapes_single.png" popup=!istravis tol=0.2 + + @plottest custom_nodeshapes_various() "custom_nodeshapes_various.png" popup=!istravis tol=0.2 end @testset "README" begin diff --git a/test/functions.jl b/test/functions.jl index fc956e0..8c0116e 100644 --- a/test/functions.jl +++ b/test/functions.jl @@ -141,36 +141,47 @@ function julia_dict_tree() plot(TreePlot(d), method=:tree, fontsize=10, nodeshape=:ellipse, size=(1000, 1000)) end -function custom_nodeshapes() - function shapy(x_i,y_i, s) - out = Tuple{Float64, Float64}[(-0.5,0),(0,-0.5),(0.5,0),(0,0.5)] - map(out) do t - x = t[1]* s - y = t[2]* s - ( - x + x_i, - y + y_i - ) - end +function diamond_nodeshape(x_i, y_i, s) + out = Tuple{Float64, Float64}[(-0.5,0),(0,-0.5),(0.5,0),(0,0.5)] + map(out) do t + x = t[1]* s + y = t[2]* s + ( + x + x_i, + y + y_i + ) end - function shapy_wh(x_i,y_i, h, w) - out = Tuple{Float64, Float64}[(-0.5,0),(0,-0.5),(0.5,0),(0,0.5)] - map(out) do t - x = t[1]* h - y = t[2]* w - ( - x + x_i, - y + y_i - ) - end +end +function diamond_nodeshape_wh(x_i, y_i, h, w) + out = Tuple{Float64, Float64}[(-0.5,0),(0,-0.5),(0.5,0),(0,0.5)] + map(out) do t + x = t[1]* h + y = t[2]* w + ( + x + x_i, + y + y_i + ) end +end + +function custom_nodeshapes_single() + Random.seed!(6) + g = rand(5,5) + g[g .> 0.5] .= 0 + for i in 1:5 + g[i,i] = 0 + end + graphplot(g, nodeshape=diamond_nodeshape) +end + +function custom_nodeshapes_various() Random.seed!(6) g = rand(5,5) g[g .> 0.5] .= 0 for i in 1:5 g[i,i] = 0 end - graphplot(g, nodeshape=[:circle, shapy, shapy_wh, :hexagon, shapy]) + graphplot(g, nodeshape=[:circle, diamond_nodeshape, diamond_nodeshape_wh, :hexagon, diamond_nodeshape_wh]) end function funky_edge_and_marker_args() diff --git a/test/generate_figures.jl b/test/generate_figures.jl index ad074ed..7c320a8 100644 --- a/test/generate_figures.jl +++ b/test/generate_figures.jl @@ -53,5 +53,8 @@ savefig("julia_dict_tree.png") funky_edge_and_marker_args() savefig("funky_edge_and_marker_args.png") -custom_nodeshapes() -savefig("custom_nodeshapes.png") +custom_nodeshapes_single() +savefig("custom_nodeshapes_single.png") + +custom_nodeshapes_various() +savefig("custom_nodeshapes_various.png") From ad70189ed0425f658d7827b85eb7e1ded03aefa1 Mon Sep 17 00:00:00 2001 From: Jan Wissmann Date: Sat, 14 Nov 2020 14:53:09 +0100 Subject: [PATCH 6/8] Added more descriptive comment for unknown nodeshape errors. --- src/graphs.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/graphs.jl b/src/graphs.jl index 3a19d4f..e357a3d 100644 --- a/src/graphs.jl +++ b/src/graphs.jl @@ -501,7 +501,7 @@ more details. elseif applicable(nodeshape[node_number], x[i], y[i], 0.) push!(node_vec_vec_xy, nodeshape[node_number](x[i], y[i], nodewidth)) else - error("Unknown nodeshape: $(nodeshape[node_number]). Choose from :circle, ellipse, :hexagon, :rect or :rectangle or write a function providing custom shapes.") + error("Unknown nodeshape: $(nodeshape[node_number]). Choose from :circle, ellipse, :hexagon, :rect or :rectangle or or a custom shape. Custom shapes can be passed as a function customshape such that customshape(x, y, nodeheight, nodewidth) -> nodeperimeter/ customshape(x, y, nodescale) -> nodeperimeter. nodeperimeter must be an array of 2-tuples, where each tuple is a corner of your custom shape, centered at (x, y) and with height nodeheight, width nodewidth or only a nodescale for symmetrically scaling shapes.") end end else From 8362ca1dbb8ae3ddf8887d14184a9600a934d177 Mon Sep 17 00:00:00 2001 From: Jan Wissmann Date: Sat, 14 Nov 2020 15:05:01 +0100 Subject: [PATCH 7/8] Added different style of generating custom nodeshapes to tests --- test/functions.jl | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/test/functions.jl b/test/functions.jl index 8c0116e..dc9ab60 100644 --- a/test/functions.jl +++ b/test/functions.jl @@ -142,15 +142,7 @@ function julia_dict_tree() end function diamond_nodeshape(x_i, y_i, s) - out = Tuple{Float64, Float64}[(-0.5,0),(0,-0.5),(0.5,0),(0,0.5)] - map(out) do t - x = t[1]* s - y = t[2]* s - ( - x + x_i, - y + y_i - ) - end + [(x_i + 0.5s*dx, y_i + 0.5s*dy) for (dx, dy) in [(1,1),(-1,1),(-1,-1),(1,-1)]] end function diamond_nodeshape_wh(x_i, y_i, h, w) out = Tuple{Float64, Float64}[(-0.5,0),(0,-0.5),(0.5,0),(0,0.5)] From e286e0ad3879bfc665c2f85de1183a428887e0a7 Mon Sep 17 00:00:00 2001 From: Jan Wissmann Date: Tue, 17 Nov 2020 11:26:04 +0100 Subject: [PATCH 8/8] Removed old test shape --- assets/custom_nodeshapes.png | Bin 18748 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 assets/custom_nodeshapes.png diff --git a/assets/custom_nodeshapes.png b/assets/custom_nodeshapes.png deleted file mode 100644 index 9fe85c9145a7b67b064c1f9783375a29081b75f1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18748 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 z�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