zqiI8CU7UeZ=qphrK)afGBg-?ZxpErE*0bg6#QykAz+6mfhbAq77qLVP0Q
zutG1f2K$Jp+-dA{FkgRL7OXM7mzC>
zWvj^ftT9P_yAA?|VX1Bn4Ym_bzL)UUxU#=3&Gl&TGc_I`!nN%JnAd*w{!-2#hzol4
z_pDzihQbjcir9N93A18jZPCC@si!J3bS`=Gh;uD%Y0x}?B9xgTAMMdGvZ$-j^7#OV
z9LE`fLODwU&bh1nl2YEdt)!XBr=H_K6nd@<*V1cz6)Pdr>X3a-&dA2>SCc&qPYh^-
z-j2fAC#DJ`IJo&3c4DK_0PpL%qqe@FymL&?XRX$n;?sa*TS{&4B%#8|UiR?O{mkVT
z&>Rj8Hl0k2m;d_%!PCmnen>YummS(P$!axg#od6@_;%7*tj>jXv8a_;4|K%Ymm?jf
zf{Fq>3pNG)6eTs%>%5&(9Ui<~T4B-Fjtb#=xa|?AOS;zOy%=*B1jJQwF~Y(!sRxzm
z)JJ5?<8VAHMDC=8t#Ba$dL9Tvv!aE@?SU;wX%D@D(X&1U8NH7C7uJfMp6Pr2tyz55d{&VX>P`+kH#%bW5`!XJvOuq=)mh+z1WtUAVQ4q
z)keZrIXZxF+~bK5G@L%^Wvm1PRoB(hEny(#Jyo`Hwv?B>E65)i
z6d^wFZ+&n)0DMJGkW2I0niua9l2Fb*gjEsZAy7n%r)s~{3Qxql)jjtY=H{7Iv|`p>
z6-IoT#>u~s4{^nqf2iAlGoC$+y`R0@=YD{Y;yBltND_782%Jd=nwKX7FlgEF1PD2SxE5
zjoKDTnG?2tPYu9o77KX`+Ghn~BS9>;1vFu{MoGmUyEA$B+3cSM$falEs|8B+_Sh!{
zP!HUa>q}G8m`rnaQu>yC%WNL6t}BL)>E)sH#ueHW3{W}C-!1W;QLwZy}oPq
zO_OcD_ZYi%l&`<+eb&TrZKTWmWJRoRmRH>T+Kfq()yURYMtOOe2ISw+z1`i@y#z;<#=+TS`W&5ewXmrMy_F)zUKOyUKv&C7O$U~f8Ny>w
zIO8ydjwc
zqE4e^Xan}ww4Ti$B81hH+s`y;gZK{-BHZ!l)jZ8>{CC#5mtO?uuw>D0Brs2t;yadu
z7{JF|!crZHt^
z;~KZT#EU0MCp#}1CQQgbPmX@%LJQw#clirbQoGLHaXq65*qY|Dk(JDxwY~5ww1^xF
z>533FW~J%MxgC&_hX^s4LJQ*G5IP-86m}uc{w5;BkH6kHxjddF@%r?~`$#br&tepf
z6BMhXwP8BZbL2qRLV&j(lI9j9Gi64QBJihhxuSitCrw}fUjJi3Ie^jf^SB8H;g1j#nDrr%KfWhx4
zCQXg$m^+(9EixN@wI1>3tFYTC-LnEKBfIE}8qD}ld+?23wKOkQERCH*l%7>6KlPZi
zH4l35Zas@Ok_I7O0X1I3d&}P+#7%{NK`xJ$KP>7x=fhP~A
zF4$N-l(=bi{?2}_2!oQ^pS~oU+V5Au_%vX|n}!;rj+Z
z_d4r*?*->HHl6DY#&Y~EzH}QJF=lc)Mx$~pT1Z1Vjr7sTAbQATfpeV7zSZ1s0qt3K
zlrJ9VmzFXOUZ=u=?g6?azMd4Lz;*^N_l%iz>JtW5I*m##;Fv#*3W6gUwg+8In-63&
z=j!ZKG`qC`#@Q|$%fZQbeDM0E$3Ec;ZLO24Q}{#(l;eh1Q|{l(K4JQ)Hm1x9>-nDi
z=m(f8UA^xZnytF%H=^>I7WO28Q}G1tii@sLv`gDUZZxNuNWRX)SNcR1sCWTq#F~@b
z!lu!m=bVrNHBuS+pR2JJH5q$3-5;IYItnE}wuulMv|uod?aor^(kA2zyqFocV82zA
zP7zl5d~fOj+)R(IxE&@bfew(k#T(~Rju*6g=Ab@_@OZP|t<#$A6qzFGVkR
ze4kK5f-?p8RU%i&sjD)Fvr@@uP?XHKA5B~>ECxk9P@(OI-#8La^cnN9^&G?);VQlL$$v-7UGa^uK7FZ%_T
z!9U-_b7E$Bf3i7}?|%(bvWgLeQ0l!zh_avu=O6OwsB+)~Pg0YMFV`b&xnG2MgO%cV
zao=z(Cm*~sVUi!C4zmlha=i2uOZB6q2E1whr_KuaGN69$n0to2j0CLs5(8k@YkS4Nyg-&`-1md
zrzK16$0k-oMdVikZ@!1w$GPWtn^9h5A?hGLWwE+Tqr8?b%mv_uYqAkma*#2pm{?tl
znBx{>3qPxaavcqteHcDF8@OSLgQUcT6cNG~&EbgOJWPk
z3|d@jQ?w39RW>!am5tWq%E>JnNZgwJnyuC%152f7GGfwx9qQ7qpZGjWd(M^!U=
z$=*{@GJL^80PGD5LJ4cc}Ba>RR0@%Qu0qr
z){+UV%^kyu5I5nI_5M8m%>DXadwsK;3BYR6s005@*jYn20d`}X`zytLwu
zQ-bbsdNJ&>iJX|xrpVQqoMqjE@$(^(W4M|C~E$6mKe?NMJ?
znQg2-{Zn0%lhwo)90##XK=$GnZ@uQpsFTl@gncO-zegN$gF{Rn`CTfLX_q?d7W@uI
z#j$i&?{uy}wyw#{0`z6jC5*LLfibMoOSF|n6<|f*7>-ippAl^vY1Rxwbv4C6IxKxL
z9Wf|19pHt}zY+n?k8q9B)Aop>;XCF;95jD)r8A)EwcCPyLC4^rI)A=9w$&6Xr+a42
zsO}gA>pL@<4*VH$`a=H16&&zoR1QK5}cF6V3UuyiFo#v
z4+|!?{4&rcXEr7EP}_h`%V4?z!0Nxmra@<%Ga0}@6_fS&VvN?lS*+FJrX-+v0XP%X
zJ9Rx$a*QLx%@};mAKD2#uB%Jz_anVSX@S~-K1>Oc0s-A4_LySh+dA*FJ-NF%ha&ZOZm|6d2fu>KXkBVEsw02
zbHoa$&N`e?{Qd)Z*cK%Vr-XYyDv!r+;@5zvlkatzfQlB8
z#E2a83YS1BPMGWEz8>O4EpkJ`%X2(a{5?y5l3h)W!IVD_jgsHv>ePCy
zpbR^QlS0BQWjh>d&K|e1WIrw#qbbr+{I!qi`%AS$=Y>CxK=ns(hXpReEI}}*meE;n
zP*szCcP+qc(}cZNcSy4cv56ccR`>GtoyF?Dpp-QgQw_s9My3bB4d$0h=+QUOE;c6p
z9cUoO$taC<8&C}^mqrT%AT%h3T)@`Q<)~-y^fA*cE?LgYdgNR@RT+gGwr_yO(R?($
za94z}*^lmZJ=}A~2_@6zMPk^~pC_-;qwSuI{04xN)yuUz|9$fh>LYm_%4>=bim1e8M42#w)-H&uM$Mz
zu6O`N;q;n=KJs|(U@fH8;oZG=ezB~#Gc#Q1Ksc)=LIli{RTWZQ*u?o9SmHi1=i)aD
zl87gHm^4V1pv2K{^x2iJQOg_$uj!kl1__{`Ux(o&VHU{%Rk`XI@?HEoIf8
zmeE5&eMzRh7r-r}N)Aq*y-d=Rd4bKlx^d%sy?1quX`p<^q-q5!;~M!{!{p1?*w584
z@jn*E61+m%8f#@n%(QAvg20kByoEyiIa#pvMx}xz|3kJ97N&9`as
zwd)n!r$6X)YUqoduU22pHHCXL4LzkIOZEaYj!jtxzRxFL5Vgt=X33
zi`E4ZV&?FwADVag35EN$P{SIm8Erj4$ELCx6t8a2K3hk;Nip$qbN(=wp;%6^Wor0{
zfkfW5YKO?O()b?<-fu#qfYHPMlwc>%w3oIGT5zdds2{g}1%!U%QJ$ZFIKe1CkEs&E
zyRu0mQS)n)LYu+J{QiPgU$B|+#l^(`qS+8>GvJBYCU9n_|18qXbIEkFw>;%|ec0)(
zj+I7vGu4&nw2>M%_e*!dzNMZd8EA>IsES*vWmzOMM`pK(99HA6ROyPF7cfEEwT
zEx~21^JQTPV_I9>ArxCU8AZNk7MAO@-`wR{81WV~w?jB9_$rKtGzlhP$UsKQC|bfE
zUsHA@Gc@LmTzzx7q0h3+`1vVtu8$BphKr%gmMO(xqQo3P?a?il+Jvz=j?RY7g3v`5
zddVzbMi@yp)@kuBS$l426*b$*avgkw5df64(k!rQ`W_U>e6@$$=Cb3C|}=>BF&B7e=+wyYMj<_f=wO
zu0Rq!Du)bTfdwKIvNx-f=0=yrH85u~&!=6j>?(NMX%%*xf8OLBEW^TinyS%B31pKS
z2lgf4o0_O++3~USce2bJkaBgJX*u>6(GzcvU7l`**3o5JT*5J0kW{b;q2B=0fF{Nh
zQbhrhNMu3q%=!enwZbr2gB{eAp&Drl;+PJx2AG7&Zi+b|N6m5J%3HBfnHV}&Io|PnGrD-FJ=zD;<#Pzl8S&doIwBDl0jy-
zu1A4xnBx>U%#0*9_vt&8tm-z
zKCPkG2rM~k=a&9Pe~7i}+ERb(G~O&7lZ+lg{jpmyxVbQmsUNSz)PM4>TgkYcfQsea
zSvh;KA{+qWP<;1GoY(x3pMgh4-j<*)X1neUefm2)WTp0fyGf$N(cB>fSZ(Ob#@2)k
z6&70t=G06U!F8nQ%!9B`cjt2+yLphid_Z;j6Qygyw1AfTcLQ4ZRa%0mNnqh3=zR2T
zPDD6{r9F@Lt0>8{7Mo0oD?={CtKbu_z&o?x@}v)c(e0z%T*L0Ot=iw|Ve~L{UGA^Q
zgJ-0kzy31uV;@}TYj1VGeRQ%+p!&hR68+>jIZ(KrV*bvAx6)Q&M1lk0rt=?(9>IBe
zQXV^vFJPWKHuWgNMQdYrBJNkf9K4wq(-;eu;&t4$EEUUW01ztO>;%3nVLce;C^5@-
zGXrozMn!iIALh%=&AT)>Tu-6
zjTrU0$z^GJ)SiMU@f~eD=IBV&5qJGIM!bysr)is`!btnxfYpkwLfA~jI*H2j=)nYi
zpvYN!jQq5hRucbYkzmBcg`Wer;KDSFiqVIVaJ{7v;Q9-5%3zYfs(-+sf56|E
zSq8GIge)!t8v9+QT`ywum@1Dr#v
z>>;)YAx%%QhJHD6>ivFzWN3Sp*Lzw$=7~Zt7pq4O^xDCiI>&j(OE!a!u4{2qg_$3T
zy96gIy92x(Fe&xgh8ph%UdiK1We%{`{CW3%)~c|dTMyp%HH@>}Z!+|wd(9@00b?5@
zVYz97%W;bH25R?xbpN$OrJZYMhoyfBo6^SrCA^Go!#O2GOMGaNV-KA%9r`kkkT0>r
zXfMA56%`MOpLv6S&Z;xG8~es_W*{T)y~BWWTfRY9YNLLF72OXt)d=(#Dve>k!bR?7
z0+EBMXGM%Cr7<56l=0pYtntdV2bwRPb-T(-U2_7E*eP-ovi?r+|{Lfh$e
zpLcK2UJ|t>a=~+IXIvhSdJY$adtR;1m1RS3Q4%xMgIyGx5BP^;wx$;r$XX*_p@-il
zv`fpBaF#=bXQsI?PT+mWqhqwnvE!F-U8bthx=&g|JRQulvg1l)QwyZbSbKLFoA#Ba
zfC|g@YxT>(-m8!vPj_84yRXTOedM_JN|cUH%%6R!HiykB>Q660m&bDDdO)Bq1Q))t
zTGVkTvvWb-{Lqq%(}%so>4Tixu3!&UOn1yxTRv@&1-=gu`5RFwp&F>df**voTC9
zG8(swDlx;$W8igTQK7x&NcDdpPxE@~;TabK>%3M-12#y)gkV6ZG6Q
zBpYI5U}@??$rSKKy&0FUv|+;b!aBAYC~I3ta%DePiWkSD+kbDVEGd_Z5bFHZnSrVL0yNj7r=BKV>aEZ;
za^huhkikcTnQB`9g7>lg$2*0O2Q;c=6s1Ys_q^!PJZ()iX6Nj8^tA?>KfnDfdQ)x#
zIjY?eGaCN{tB89zUeS<|#cZ*#7`}`}`?l}zFG9~%v_TE`dI7~!dOybD^QYcYk|g0A
z$EbIawd$mOJ$20b^d1qyoc|Z9jR#YaQMqM>Mr6Dg6Y~TG3qCexY~^C~_kh!cw0_!L
zX>&D!{=ZV<01z^JwfAtDyi`n0xC!q7aVmHhF7*
z&>AhgpT?>VCSOd1dr;=4U1k`JW=rI8d&*o(#+%;_8D_d&{*nK+W{7LIhUM^ggQNH$
zhFyUhZBNgn&(A#?%%5KU)a^KoSh&w_)yI7QF$lc4T(ly8;I*qNZM#i>Ye}%I6&8=71|e};1xES1i!#*el&l6MmP*pKa5kyBE8*E9g?c>Jvv?sbqd6s1H%iQ@iDc_*=@o+
zk02fD#o9Cqi6p!%LL@GcD^YR+1vagwT63wcw%p%?t6&|KUGDYe_PLR~>Ywzwj_OSv
zap_)ljkobnZ#=!dV)Rtg!B|YwU2Hh(sZ7VCSjr0dF>ps~5H~LsJc^49%3*B<1CQVD
zZu|ohoS^YU2ntM1u8)4QEm}=dJUqDfY0kr(1Na$}#~fgC
zTMg;OXMvVIzP!oxur}Uj@@}?PcxhX|{`Hu8ngT`FgX!&Wt;8sEvL2b7?FH!fO983~
zvCexG4ohIZ(-T=PB
z{b!u2C}*ZyGB!9jiARYW93DwjA9$L&zC%wwZuh=thK8m`3)LJuW&YiBg<1cDp%DK;
zssH!I*=t6tKc)7$SB6;E;`w0YKpg4C30U7G47Ta6!>N5UkNqMDw~^(e?tC|}DiXu9
zJM4;F-+~WrJo5K+35=c=aQL|sKH&oGk6`CjC+%|`
zi)Cp`r^>k}4L@$N>H3({!CL%yw_UZe0#LhZX4VJmE;+<8ca+pGiuR_uZ1*06tJY!T
z#bp<4X`AKh@g-aj&|ysDexxm1GkW+(PfwJOx{xQ|EA(oJR4^mavldk-pY0qo#)V^?
zylVybN!y58_{34t)3+Rjh{baBP*pLos(%mm%}&8QIg{o|?u$T%XDC;4A|DoNvUD`;
zS{KuOms>p3C(UNR8%YwP9^srK>;GPUdiF)wG)cobLiHG#69KX
z`>kP5-Z(p~7o-xF{aR3Xk_S|Z5cL|J{mG}Bffv{b&3Hzej6jXu6p1n*9IJe_a{b1x
zIYpv=%#p|B*h{`+O%
zaUxu>>VcPA$qiz;!F5M+WONd_ybKMh?X0YHDw%QC>zwE^%voks7T=5n_&XyPfv+0P
zh7Np5!A*7{53|#_;45vZ)12~K@`4u$oCwRnMt{E-P@N<`KvI9@qJ7L3<7FrIkkIny
zv5}-Irq%{9tM=GjA?Rh>@fVL$l!_Ee9u*;KY2m1YU^{dBiqH1`hWDPk28AE4jWG6`
zM24sd+n{x9r-j^KuZ^-up9w?v%5qVcG5B$w?x9dp6zvA^G(+j>H)uE15f6oUR9tC;
zVYCn3dB4A#Zu$={Puftsb}`XZga}hcKYSObEg21MUi)6~xF8bJ2{!fXdL7M+e+0l4
zeySd*hL&}&jEMJg(IM}!8o?Z>I)!TDM=dyeaWIVgRqUWf8@y{h&JF5}lTD{K9SMLf
z_Md#86<=rfar!Ufx=yl~^u?6&*I{+fek+P`UcU_4|GsfY{P(h9hSIZqD^yO;bamw%VPo91h%#h9jOGt$+~
zO81m?E*vP05q6!+T9I30Dcm^Y(ViXFw1crWVV%hYD$MG*9NzqLVH%#YU~GJ|dsGRS
zN?E519(G{I2ld7`RTEjB^1D3m``ZtjmN;OP%nsLV`gQ6FVLMPhi_d!9LK5VSx*`R}dU52A_{L7gbaw
z9LQL|6+3cW^EUALTTwGDXsEF@D<{SCNZS2(iZ*Z1Q?vOto639
zUoLX}@Rxndl?s|Izir0{xF94+820o;tzh0{UT+yr$Tc@*%pN`TIjTQF`Fih%#X{HO
z=`rXKm|shkVHf;>v?!&e9d{%9`tL$6D9G^5=b?rN{D0t{ZFmrS45i0H`9=n3Cx59W
zO?BMW@>VMkjWH4-RObWCL)yofBCbR_xhe|Zk7T=za
zUv=Xa8gqw)q?=$fd)~A1P;MHtb#rM?!kfBbSTs5AvJMksp!^ZPd-aQo!I`@UPUe-;
zvI!Z!50gCGeDA0RdW+4!0;gL^|lKnenF
z_U)8FGQps<)a!UK)Zz06(D%C^g#@ia)j{l7_J=vud{xs~zOpiEB2)ox_Pvac=Z3{k;vH{$M|vc-6vDp8*Z^RY*IE3Aoj5-Psl^)Y~gz
z4a3%DXmt1_FV1@9ly&V7y>H2)-Cm*NFdjfDs(_ilr%Y?7;3P-0DCavm5T9~?8xq=h
z*VEnbEXRSVY99E}i$l=w_$K_B_~sZkr3tEXY*m40&rjz!tG+KL9n+$Ir17G<{Ly5E
zlkvy0eq0qMp!Up(5aKBDKD>W}e7n784=?DH&b=Sc3!7e45?WTtk+jh_$qL?lGiN6y
z3zC{QivB(AyLW66@g9jzt`_^cw@^WWwp$Puwil`6YG(lmWyJO8>{F4ov<(7Pe$bPl
zmzo07(J}kp)gy&Y`=P1yd#oa~;!MqL+|`Dby_}zBdRkier^oKmHs2s>t-(_jl5@=A
zAB`1PrrE;wQQQ-I%E&&@mrd0RFXSiIKT1vXQqypqBA?=4R;yl5;Vgu@0C0F1K9hF6JYWF_
z_qo-aLG1x*;fkXbCv3<;i(uv-6V}((e*kWgTlb!tDW+E6J~M-h=4{oPySC=HAQiNT
zcKHVDD>gNzxYj(ayBZ86cm!S3>Fb(JxX`%(g`O0qeR$#g>5CA?gmge%AgQtV)wjU~
z?5wQ}iZj&6n^r7EdUggX1(kn}@80)!Z$b)l;z7e-#YTp868mneTzv(4J+hpvq({>w
zSG69a&^?4B9|+6WEcma=fu?$NjXr$D7k9Yik(sLz2U7Ded0^~Czf6>QDkSr%b5%Ly
zyOF2EoRc&zZ1pF}ha2@aQuvtMiF^!;#Pe$mnz#qF4<3D#_lktZVXlc6;H@L|i!lF_
zrtQls!5P49&MwQu6X1t4#6U%PGiY;8*bEc-$axFr#^)Y_>f2e(vB}U_lsdqlE+Bf;
zzx-}{5^YCrbq6%i#@|jPdHh;$(8S?O81NaW(wwUvYB5YF%4^G)oI^$Qb`HC%g>?_n(kQuotf-1BweyW$c6!o;o&`KXj8dCcIsOn`
zwY4NS7^ZUUKS+EdEx~ctfJ4o^Qay580Dbph4DkV1{76cmB({m5#sG!s&>9X
zLN1P@mt=4ycj3rBpM@>_y&!t*W{^Qa_7MhMK50nztnHc`0C!q6!C7~NM{Xg@fw3w{`tQ8ZLs2<0{cwZ*pmrTqiR~Tv
z&@hbHvwNm(+@rGW>#$UUV7rD0v9)IDuAz6+MSj(#uKCrN!#>CE?x&Q#(r?nOiZrts
zz7|NX1uE$$T0`Iv#Nu1vQ@8+UqtWX`&kV&^w9e8qIcrM7&%o!^!L)lnJpFrXX`ySE
zkC9Pa!xz39!;mXi?p}y^!F!ML%A9Ms`}#f}0!@UVUunp^nyUd@0|DYi+m;vj8o=+*(A`(T2
z#*D#A+gJtenO>^eh)E&AkCQ$XeK$c+|4XM?l1dWeqjG1{G-ie+&UF&>-_^Nf&u|Bv
zo@$hzbvT`T_*dvrj{WO}J)^z*ioU1tKb`?rvfk~{#|md1>Fef^4D=Rv)RuOa4uVnk
z!1Ou+=Qq;v#}o9?wJ}H>hGc5f==qZ#a2>0+E4`Ia0k;dNz{(EXPWibZ7iz;MU9@Rx
z_lIsC`+juK(Q?RUiS@5GK^|$VH$jwOZP;}TSQlxCf0C;3IG}BHAgQqlSeuZd2f<`q
zZGGa~;ZPV=3uG!r9q>N2JU}|oE37iEG{Y`6jx_smnYX?Q!;q${0Fh!iro4l;{V2^l
zW5nhme*UTp7xRg7mNBO#0RorX1Nuw~B1k^UWfTp8^xJu>HSwNzopbD#;UQs;h6a4i
z!UebQKm}%gM!g|^3pr{<1BY%1*>Sl=F>J2tE?I%!!s~>#qT^^<5C6$5!Brp2Oks|T{d`yje5R4yW2W}0*9qzn37K|%rre0~DRftIsIZ>%%
znZ~&H`C5B{hW3hn{O_*)H8c3PR&C(}j9A_C-2x+R5u&a8)hjgXvqdi%zQ`aJbQ^mb
zi)=DD^dl0wW;9?7r~Q9WJ>;haDL1A8`4{m8Sub6@2r@>d$@vaLb^hYbvUx}KhXcH8
zKi&-KmHZeqY!qR5aqOOsN+Q>#yZbdu6|fucEZRhV|EIu$AKC(=8wJn^zH}AQ{}<@F=hFmO!e^j!a`!_
zrYsmJt2Zz8_V7J|3;S;G`3$twMFihh46R>NYhz#+bVtwHJ~{`cz=>7*+TiziAq9yptDNZbsz)>l5(
z$;VE?;EN^4ovYef34jPbjeQI|#cN~@hBna@Huosrp|c}FU#gXxixz7Fv+k`AeM{3A
zY*})2{(J4s7nk7-75&q-qXCJO_zJ2%aX@7wsHxuB+ABCnJoM*-?3p`A*ANS>A&gK;
zm@43b6Z|Xq!LiOY#V+>D!0wjGhOFzki%F3~K>(HIY>=&Wr;Ae5O3X|d-{VN*#nWG{
zjku)uHu6b3wk}&d`fIX+ATb)|#>B>yw(WG+D+tb`w-g_OHX|EZ!upH6*{k7)LoY@?
zxcqt+^IYsLu?2@%gp33iB5JR_GCY~P`Ac_U3ZGUZ4tEfW5CSJ+^)(MTRKCzlE;>|Q
zU3t*TL~+5^mT@&qqYbr@u(uuBB0$3z)g)8Bn@)|4oD%S`VyrLFMRets5J0>P%m{o%
zX_3JTr2B-C>MeE~BWSWwhu=oCF$DM-p`mTpzMwm-H;18>MK3kZsz*2kr}$lnJ26{Z
zI&-8z`Bz4z_L3X7RG1Wq{AYb`cHQvQ2wr6gH{=+fK97U&tqZ~?GU@*KP3&U)6CFwY
z21TQhS04t)bgc%8q50X>)w&+wy16;qB5r<%5eWF^Gy6B
zyY_To>iZh(V!t$c4K?`QzeTosmBWe@3An9k)$2T*!;pMfWfS5r_hk8p^vd1YDPO_K
zTTTxs`W%g}eZ?h50He7X2TS`5O-8HHS8&Y4OO;-5ET|3&YpAo_XOM1l9FhSaI>+sgr#
zK2{ydKs=@j53Go@=k7feAyRbX@21FEK+YZLfCs3Dq*Cm-dN|;%_0(BzAd1@4rhMtN!EC
z@O}zu9##zr7N2@!9F8}-KnB+Qc+X^)#|3O#BOg{EGX){e6u5F+Yf&56zj}39yZUC<
zU66@?YrzS@Yaq_O{>F0MVA
z%{vThOFK-}C2hABTUSHfi}gk_HAhP~MT;u^POC=5rFFlAXm_wswHl(?5p7AeCDI0G
zb7`m`s5EtnxJ-h$lu`*Hk$j2$blcfE`{Vb|_s@6E_rBlzKF|9;&+p`bTG5nfwSK=&
zPVe*KmWvnGLy4iFK5~$k$?5k9!XYEA
zWv*m4J+b7b8rHMHZT#o=_?f200wBRAC6}eL?3RIVmv^6KVjl}#F9`T*dMt*MZQtZs
zuSpyiqB3A-k#+k}iguQGB;M(VNxHw!heNnDzEn@q*h4Ig4O+jTD2W5Af=v~MmeWWU04AfizZ|qK#NHDt27}sm
z09Nd+?1gAGcsUAv=tDxTuPA((IOfx{
zu~VLzB3DcT--(%hJ@OZnA{7PKf?@6lTm!T#T;?>JTNQ+EBo}p-J{d)JQ=%RXi%@bj
z)D(P+?J#5X*`~^mAl7jFKr?mEJn70~JdJ;`Zo}#t`0gLQPP7pN%u)>9n37q4(Cy_8
zft{6MmWkw#=ma-GqJ31j%v#{LXe$63?W2MG`8~L{;K{X9%D&1DWsxrKcR(0*==3#K*d_3Lou4R~Wyb#aE#b^TF1r113607>BZqA)x2<)k)~Q{>
zL%8i}>~+(vA#DL|_(1fH*}LfEirJFvtHg`|yV1s$Y)I4bvMBU|k}WLGjIUy~%n|iR
zRH0>-M3+7%-3Ks~@GX4IxP~gyowC*m$H?3JDV-LN<|UvdLd+QfIVovTpiW>&Xw7m%
zo~BtxF#QvGWe-XP7ed_+W9d1m=D5ZDPXV>5z!2~&xCRZ}Ymk>rb1{E{-3n>ITEgLe
z_(U)*bap}ML*H_(&;ib(DMpvY3MBVjZO&-_{-vdrQvABe0AShp~70wCv%JUMPbDX@G
za3;t|F^1Z~1#fMY_|=#jqQ@G2>z;AStx}H8oOtF#zT#M$$9@Chfk7FihqiQJ-p0B_
z)&zja7e7X_L3K*Y2Pje0vr*Z}S9MGi&Qu@|3$v;ocb2V)E#WTI@(Q*{e*K6U0@rB1
za0B+rV*nX59~rI3NDAP$NjzWSY|eTw8P?04r`Q=~yRnJ0$c72ZURkJ|yR%Q%2LK`c
zoeE4h)>Xa@{(^I#IOaYW7rd!*UUAxaQ>FYEmoq7Slo#^)xW}?v&$XlKZ>8Zz#c=;B
z6e%5BHxeGpUS0nlY7fM*J#s+@7)1yI%D`6qfq$23N>+8u%~cN_@HBqS-qx$#3S)H2
z(edG+@Gcs&kiT2mgVg6#u2gd3TS<6(@Oy@F8>P`o^*Ld4XTkWm6ks9+o?7k-m*X+N
zAxaq9QDJ}b?rK~l&CMYK`r`6j+Wqk8ig`&2c|g$>LE(Lj``WLJmKW?-%bFW8&J(!@
zy8SAMxlZhNi*EB*7!Q)7&j=TdLi*#HoUF!_$(P2eJvL0Y(=Q`Bo>!8Om<(K%-sB9C
zT~-*N$}HN7FwFdegp(G?eKg!g@=yp^!$@Y3DKhG0HmpZz None:
# a list of builtin themes.
#
html_theme = "pydata_sphinx_theme"
-html_logo = "_static/hydromt-logo.jpg"
+html_logo = "_static/hydromt-icon.svg"
+html_favicon = "_static/hydromt-icon.svg"
autodoc_member_order = "bysource" # overwrite default alphabetical sort
autoclass_content = "both"
From 6b3b9aa2e046ecdde7ccde860f88c600ccb0a4b8 Mon Sep 17 00:00:00 2001
From: veenstrajelmer <60435591+veenstrajelmer@users.noreply.github.com>
Date: Thu, 17 Oct 2024 15:35:23 +0200
Subject: [PATCH 2/4] Build 2dmodel notebook typos (#189)
* fixed typos
* not mentioning ini configuration file anymore, this is not tested and therefore not supported
---
docs/user_guide/dflowfm_build.rst | 2 +-
docs/user_guide/dflowfm_model_setup.rst | 2 +-
examples/build_1d2dmodel.ipynb | 4 ++--
examples/build_1dmodel.ipynb | 4 ++--
examples/build_2dmodel.ipynb | 4 ++--
examples/plot_dflowfm_mesh.ipynb | 2 +-
examples/update_refine_2dgrid.ipynb | 2 +-
7 files changed, 10 insertions(+), 10 deletions(-)
diff --git a/docs/user_guide/dflowfm_build.rst b/docs/user_guide/dflowfm_build.rst
index 6265d67f..a539b5f2 100644
--- a/docs/user_guide/dflowfm_build.rst
+++ b/docs/user_guide/dflowfm_build.rst
@@ -18,7 +18,7 @@ Settings to build or update a Delft3DFM model are managed in a configuration fil
every option from each :ref:`model method ` can be changed by the user
in its corresponding section.
-Note that the order in which the components are listed in the yml/ini file is important:
+Note that the order in which the components are listed in the yml file is important:
- When setting up a 1D model, one of the `setup_rivers`, `setup_channels` and `setup_pipes` should always be run first to determine the model topology.
diff --git a/docs/user_guide/dflowfm_model_setup.rst b/docs/user_guide/dflowfm_model_setup.rst
index d37eda24..8f1fb727 100644
--- a/docs/user_guide/dflowfm_model_setup.rst
+++ b/docs/user_guide/dflowfm_model_setup.rst
@@ -11,7 +11,7 @@ The main interactions are available from the HydroMT Command Line Interface and
HydroMT in order to build or update Delft3D FM models.
When building or updating a model from command line a model setup
-:ref:`configuration ` (.yml/.ini file) with model methods and options and, optionally,
+:ref:`configuration ` (.yml file) with model methods and options and, optionally,
a `data sources `_ (.yml) file should be prepared.
.. _model_methods:
diff --git a/examples/build_1d2dmodel.ipynb b/examples/build_1d2dmodel.ipynb
index 80fb3ecf..441f7cbb 100644
--- a/examples/build_1d2dmodel.ipynb
+++ b/examples/build_1d2dmodel.ipynb
@@ -93,7 +93,7 @@
"\n",
"More information on how to write a data catalog yml file can be found in the [HydroMT core docs](https://deltares.github.io/hydromt/latest/user_guide/data_prepare_cat.html) \n",
"\n",
- "> **NOTE**: In HydroMT-Delft3D FM, an additionnal data catalog with all default parameters values is always used [parameters_data.yml](https://github.com/Deltares/hydromt_delft3dfm/tree/main/hydromt_delft3dfm/data/parameters_data.yml). It contains default values for 1D network elements and structures as well as default 2D landuse paramter mapping tables."
+ "> **NOTE**: In HydroMT-Delft3D FM, an additional data catalog with all default parameters values is always used [parameters_data.yml](https://github.com/Deltares/hydromt_delft3dfm/tree/main/hydromt_delft3dfm/data/parameters_data.yml). It contains default values for 1D network elements and structures as well as default 2D landuse parameter mapping tables."
]
},
{
@@ -109,7 +109,7 @@
"id": "fb8282c9",
"metadata": {},
"source": [
- "The HydroMT configuration file contains the model setup configuration and determines which methods are used to prepare the different components of a Delft3D FM model and in which order and optionally sets non-default arguments for each method. This configuration is passed to HydroMT using `-i `. The supported format are either YAML or INI. We have prepared several example yml-files which are available in the model repository [examples folder](https://github.com/Deltares/hydromt_delft3dfm/tree/main/examples) and from the [docs (building a model)](https://deltares.github.io/hydromt_delft3dfm/latest/user_guide/dflowfm_build). \n",
+ "The HydroMT configuration file contains the model setup configuration and determines which methods are used to prepare the different components of a Delft3D FM model and in which order and optionally sets non-default arguments for each method. This configuration is passed to HydroMT using `-i `. We have prepared several example yml-files which are available in the model repository [examples folder](https://github.com/Deltares/hydromt_delft3dfm/tree/main/examples) and from the [docs (building a model)](https://deltares.github.io/hydromt_delft3dfm/latest/user_guide/dflowfm_build). \n",
"\n",
"Each section, before indent, (e.g. setup_rivers_from_dem) corresponds to a model method. All model methods are explained in the [docs (model components)](https://deltares.github.io/hydromt_delft3dfm/latest/user_guide/dflowfm_model_setup.html). The `global` section contains direct model initialisation properties."
]
diff --git a/examples/build_1dmodel.ipynb b/examples/build_1dmodel.ipynb
index 95c6a3f5..465b9960 100644
--- a/examples/build_1dmodel.ipynb
+++ b/examples/build_1dmodel.ipynb
@@ -91,7 +91,7 @@
"\n",
"More information on how to write a data catalog yml file can be found in the [HydroMT core docs](https://deltares.github.io/hydromt/latest/user_guide/data_prepare_cat.html) \n",
"\n",
- "> **NOTE**: In HydroMT-Delft3D FM, an additionnal data catalog with all default parameters values is always used [parameters_data.yml](https://github.com/Deltares/hydromt_delft3dfm/tree/main/hydromt_delft3dfm/data/parameters_data.yml). It contains default values for 1D network elements and structures as well as default 2D landuse paramter mapping tables."
+ "> **NOTE**: In HydroMT-Delft3D FM, an additional data catalog with all default parameters values is always used [parameters_data.yml](https://github.com/Deltares/hydromt_delft3dfm/tree/main/hydromt_delft3dfm/data/parameters_data.yml). It contains default values for 1D network elements and structures as well as default 2D landuse parameter mapping tables."
]
},
{
@@ -107,7 +107,7 @@
"id": "fb8282c9",
"metadata": {},
"source": [
- "The HydroMT configuration file contains the model setup configuration and determines which methods are used to prepare the different components of a Delft3D FM model and in which order and optionally sets non-default arguments for each method. This configuration is passed to HydroMT using `-i `. The supported format are either YAML or INI. We have prepared several example yml-files which are available in the model repository [examples folder](https://github.com/Deltares/hydromt_delft3dfm/tree/main/examples) and from the [docs (building a model)](https://deltares.github.io/hydromt_delft3dfm/latest/user_guide/dflowfm_build). \n",
+ "The HydroMT configuration file contains the model setup configuration and determines which methods are used to prepare the different components of a Delft3D FM model and in which order and optionally sets non-default arguments for each method. This configuration is passed to HydroMT using `-i `. We have prepared several example yml-files which are available in the model repository [examples folder](https://github.com/Deltares/hydromt_delft3dfm/tree/main/examples) and from the [docs (building a model)](https://deltares.github.io/hydromt_delft3dfm/latest/user_guide/dflowfm_build). \n",
"\n",
"Each section, before indent, (e.g. setup_rivers_from_dem) corresponds to a model method. All model methods are explained in the [docs (model components)](https://deltares.github.io/hydromt_delft3dfm/latest/user_guide/dflowfm_model_setup.html). The `global` section contains direct model initialisation properties."
]
diff --git a/examples/build_2dmodel.ipynb b/examples/build_2dmodel.ipynb
index 584eebb8..1bb480e5 100644
--- a/examples/build_2dmodel.ipynb
+++ b/examples/build_2dmodel.ipynb
@@ -91,7 +91,7 @@
"\n",
"More information on how to write a data catalog yml file can be found in the [HydroMT core docs](https://deltares.github.io/hydromt/latest/user_guide/data_prepare_cat.html) \n",
"\n",
- "> **NOTE**: In HydroMT-Delft3D FM, an additionnal data catalog with all default parameters values is always used [parameters_data.yml](https://github.com/Deltares/hydromt_delft3dfm/tree/main/hydromt_delft3dfm/data/parameters_data.yml). It contains default values for 1D network elements and structures as well as default 2D landuse paramter mapping tables."
+ "> **NOTE**: In HydroMT-Delft3D FM, an additional data catalog with all default parameters values is always used [parameters_data.yml](https://github.com/Deltares/hydromt_delft3dfm/tree/main/hydromt_delft3dfm/data/parameters_data.yml). It contains default values for 1D network elements and structures as well as default 2D landuse parameter mapping tables."
]
},
{
@@ -107,7 +107,7 @@
"id": "fb8282c9",
"metadata": {},
"source": [
- "The HydroMT configuration file contains the model setup configuration and determines which methods are used to prepare the different components of a Delft3D FM model and in which order and optionally sets non-default arguments for each method. This configuration is passed to HydroMT using `-i `. The supported format are either YAML or INI. We have prepared several example yml-files which are available in the model repository [examples folder](https://github.com/Deltares/hydromt_delft3dfm/tree/main/examples) and from the [docs (building a model)](https://deltares.github.io/hydromt_delft3dfm/latest/user_guide/dflowfm_build). \n",
+ "The HydroMT configuration file contains the model setup configuration and determines which methods are used to prepare the different components of a Delft3D FM model and in which order and optionally sets non-default arguments for each method. This configuration is passed to HydroMT using `-i `. We have prepared several example yml-files which are available in the model repository [examples folder](https://github.com/Deltares/hydromt_delft3dfm/tree/main/examples) and from the [docs (building a model)](https://deltares.github.io/hydromt_delft3dfm/latest/user_guide/dflowfm_build). \n",
"\n",
"Each section, before indent, (e.g. setup_mesh2d) corresponds to a model method. All model methods are explained in the [docs (model components)](https://deltares.github.io/hydromt_delft3dfm/latest/user_guide/dflowfm_model_setup.html). The `global` section contains direct model initialisation properties."
]
diff --git a/examples/plot_dflowfm_mesh.ipynb b/examples/plot_dflowfm_mesh.ipynb
index d2bf9703..8a7fba56 100644
--- a/examples/plot_dflowfm_mesh.ipynb
+++ b/examples/plot_dflowfm_mesh.ipynb
@@ -83,7 +83,7 @@
"# Get the different types of branches in mesh1d\n",
"rivers = mod.rivers\n",
"pipes = mod.pipes\n",
- "# Additionnal geometry and structures\n",
+ "# Additional geometry and structures\n",
"manholes = mod.geoms[\"manholes\"]\n",
"crosssections = mod.geoms[\"crosssections\"]\n",
"\n",
diff --git a/examples/update_refine_2dgrid.ipynb b/examples/update_refine_2dgrid.ipynb
index ac2ca114..458c7b2e 100644
--- a/examples/update_refine_2dgrid.ipynb
+++ b/examples/update_refine_2dgrid.ipynb
@@ -35,7 +35,7 @@
"source": [
"Updating a bedlevel or infiltration capacity map is an easy step with the command line but sometimes, for example with forcing or grid refinement, you need to update several things at the same time. This is possible by preparing a **configuration file** that includes every methods and settings that you want to do during your update.\n",
"\n",
- "The configuration-file contains the model setup configuration and determines which methods are updated and in which sequence and sets optional arguments for each method. This configuration is passed to hydromt using `-i `. The supported format are either YAML or INI.\n",
+ "The configuration-file contains the model setup configuration and determines which methods are updated and in which sequence and sets optional arguments for each method. This configuration is passed to hydromt using `-i `.\n",
"\n",
"Each section, before indent, (e.g. setup_mesh2d_refine) corresponds with a model method which are explained in the [docs (model methods)](https://deltares.github.io/hydromt_delft3dfm/latest/user_guide/dflowfm_model_setup.html).\n",
"\n",
From 6b3771f81d31490203c8081603d8b760bbb01e55 Mon Sep 17 00:00:00 2001
From: veenstrajelmer <60435591+veenstrajelmer@users.noreply.github.com>
Date: Thu, 17 Oct 2024 15:36:05 +0200
Subject: [PATCH 3/4] updated changelog (#186)
* updated changelog
---
docs/changelog.rst | 9 +++++++--
1 file changed, 7 insertions(+), 2 deletions(-)
diff --git a/docs/changelog.rst b/docs/changelog.rst
index e4beb0be..05bfeab7 100644
--- a/docs/changelog.rst
+++ b/docs/changelog.rst
@@ -9,7 +9,7 @@ The format is based on `Keep a Changelog`_, and this project adheres to
Unreleased
==========
This version includes many code updates to accomodate for newer versions of dependencies.
-This makes the code more robust and future-proof.
+The only upper bound left is hydromt<1.
Added
-----
@@ -25,10 +25,15 @@ Changed
Fixed
-----
- Bugfixing of reading of frictions (global), crosssections and boundaries when update. (PR #81)
-- Fixing bug related to changes to pandas TimeDelta formatting, see also https://pandas.pydata.org/docs/whatsnew/v2.2.0.html#other-deprecations. (PR #129)
+- Support for xugrid>=0.9.0, meshkernel>=4.3.0, hydromt>=0.10,<1, pandas>=2. (PR #129)
- Fixing setup_links1d2d for 2d to 1d direction. (PR #133)
+- Support for hydrolib-core>=0.8.0. (PR #139)
+- Add support for Python 3.12. (PR #149)
+- Fix writing of structures with newer (geo)pandas versions. (PR #151)
- Several bugfixes related to processing of cross-sections (PR #153)
- Support for geopandas v1 (PR #158)
+- Support for latest version hydromt artifact data. (PR #160)
+- Avoid sediment section in mdu so generated models can run in Delft3D FM Suite 2024.03 1D2D. (PR #184)
v0.2.0 (20 November 2023)
=========================
From dca452d3a01261df360a392743689e237b0ef56b Mon Sep 17 00:00:00 2001
From: veenstrajelmer <60435591+veenstrajelmer@users.noreply.github.com>
Date: Fri, 18 Oct 2024 06:10:46 +0200
Subject: [PATCH 4/4] fixed typo in setup manholes parameters (#187)
* update argument name to be in line with docs and consistent with related namings
* included change in notebooks
* updated changelog
* fixed type declaration
---
docs/changelog.rst | 1 +
examples/build_1d2dmodel.ipynb | 2 +-
examples/build_1dmodel.ipynb | 2 +-
examples/dflowfm_build.yml | 2 +-
examples/dflowfm_build1d.yml | 2 +-
hydromt_delft3dfm/dflowfm.py | 10 +++++-----
hydromt_delft3dfm/utils.py | 4 +---
tests/data/dflowfm_build.yml | 2 +-
8 files changed, 12 insertions(+), 13 deletions(-)
diff --git a/docs/changelog.rst b/docs/changelog.rst
index 05bfeab7..4f89ed0a 100644
--- a/docs/changelog.rst
+++ b/docs/changelog.rst
@@ -21,6 +21,7 @@ Changed
-------
- Change default spacing in setup_channels from ``None`` to ``np.inf``. (PR #133)
- Added ``maxdist`` variable to setup_rivers and setup_channels. (PR #153)
+- Renamed ``manhole_defaults_fn`` to ``manholes_defaults_fn`` in ``setup_manholes`` for consistency. (PR #187)
Fixed
-----
diff --git a/examples/build_1d2dmodel.ipynb b/examples/build_1d2dmodel.ipynb
index 441f7cbb..6c966a19 100644
--- a/examples/build_1d2dmodel.ipynb
+++ b/examples/build_1d2dmodel.ipynb
@@ -146,7 +146,7 @@
"\n",
"- [setup_rivers_from_dem](https://deltares.github.io/hydromt_delft3dfm/latest/_generated/hydromt_delft3dfm.DFlowFMModel.setup_rivers_from_dem.html): We will derive the 1D rivers lines based on the *MERIT Hydro DEM* and that intersects with the region bounding box [12.4331, 46.4661, 12.5212, 46.5369]. River roughness will be a Manning constant of 25.0 and we will use data from *rivers_lin2019* database to prepare rectangular cross-sections. \n",
"- [setup_pipes](https://deltares.github.io/hydromt_delft3dfm/latest/_generated/hydromt_delft3dfm.DFlowFMModel.setup_pipes.html): We will add pipes by assuming that they are located under the roads, with a standard length of 50 meters. The roads are defined in the *grip_roads* data and the standard length are defined in the argument spacing. Roughness will be a WhiteColeBrook constant of 0.003 and we will use a circular cross-sections of 0.5m. The pipes invert levels will be derived from the *MERIT Hydro DEM* assuming a constant depth of the pipe underground of 2 meters. \n",
- "- [setup_manholes](https://deltares.github.io/hydromt_delft3dfm/latest/_generated/hydromt_delft3dfm.DFlowFMModel.setup_manholes.html): For a pipe network, manholes are present at pipe connections. Here we do not have specific input data locations for our pipes, so manholes will be generated based on a set of standards specified in manhole_defaults_fn.\n",
+ "- [setup_manholes](https://deltares.github.io/hydromt_delft3dfm/latest/_generated/hydromt_delft3dfm.DFlowFMModel.setup_manholes.html): For a pipe network, manholes are present at pipe connections. Here we do not have specific input data locations for our pipes, so manholes will be generated based on a set of standards specified in manholes_defaults_fn.\n",
"- [setup_1dboundary](https://deltares.github.io/hydromt_delft3dfm/latest/_generated/hydromt_delft3dfm.DFlowFMModel.setup_1dboundary.html): Finally as a default, we will apply both upstream and downstream boundaries of our rivers with a constant waterlevel of -2.0 meter a.s.l\n",
"\n",
"- [setup_mesh2d](https://deltares.github.io/hydromt_delft3dfm/latest/_generated/hydromt_delft3dfm.DFlowFMModel.setup_mesh2d.html): we will prepare a regular grid for the region bounding box [12.4331, 46.4661, 12.5212, 46.5369] of *500***500* meters resolution.\n",
diff --git a/examples/build_1dmodel.ipynb b/examples/build_1dmodel.ipynb
index 465b9960..b277a024 100644
--- a/examples/build_1dmodel.ipynb
+++ b/examples/build_1dmodel.ipynb
@@ -143,7 +143,7 @@
"- [global](https://deltares.github.io/hydromt_delft3dfm/latest/_generated/hydromt_delft3dfm.DFlowFMModel.html#hydromt_delft3dfm.DFlowFMModel): Our model will be defined in the projected CRS WGS84 EPSG 3857. TO ensure the 1D network is connected, we will allow snapping of 25 meters using argument network_snap_offset. The 1D computational grid for the open water system will be created at 40 meters distance using argument openwater_computation_node_distance. \n",
"- [setup_rivers_from_dem](https://deltares.github.io/hydromt_delft3dfm/latest/_generated/hydromt_delft3dfm.DFlowFMModel.setup_rivers_from_dem.html): We will derive the 1D rivers lines based on the *MERIT Hydro DEM* and that intersects with the region bounding box [12.4331, 46.4661, 12.5212, 46.5369]. River roughness will be a Manning constant of 25.0 and we will use data from *rivers_lin2019* database to prepare rectangular cross-sections. \n",
"- [setup_pipes](https://deltares.github.io/hydromt_delft3dfm/latest/_generated/hydromt_delft3dfm.DFlowFMModel.setup_pipes.html): We will add pipes by assuming that they are located under the roads, with a standard length of 50 meters. The roads are defined in the *grip_roads* data and the standard length are defined in the argument spacing. Roughness will be a WhiteColeBrook constant of 0.003 and we will use a circular cross-sections of 0.5m. The pipes invert levels will be derived from the *MERIT Hydro DEM* assuming a constant depth of the pipe underground of 2 meters. \n",
- "- [setup_manholes](https://deltares.github.io/hydromt_delft3dfm/latest/_generated/hydromt_delft3dfm.DFlowFMModel.setup_manholes.html): For a pipe network, manholes are present at pipe connections. Here we do not have specific input data locations for our pipes, so manholes will be generated based on a set of standards specified in manhole_defaults_fn.\n",
+ "- [setup_manholes](https://deltares.github.io/hydromt_delft3dfm/latest/_generated/hydromt_delft3dfm.DFlowFMModel.setup_manholes.html): For a pipe network, manholes are present at pipe connections. Here we do not have specific input data locations for our pipes, so manholes will be generated based on a set of standards specified in manholes_defaults_fn.\n",
"- [setup_1dboundary](https://deltares.github.io/hydromt_delft3dfm/latest/_generated/hydromt_delft3dfm.DFlowFMModel.setup_1dboundary.html): Finally as a default, we will apply both upstream and downstream boundaries of our rivers with a constant waterlevel of -2.0 meter a.s.l\n",
"\n",
"Feel free to use the links of each components to know more about how each function works and what are all the available settings."
diff --git a/examples/dflowfm_build.yml b/examples/dflowfm_build.yml
index 73c5a41c..e818f3cd 100644
--- a/examples/dflowfm_build.yml
+++ b/examples/dflowfm_build.yml
@@ -34,7 +34,7 @@ setup_pipes:
setup_manholes:
manholes_fn:
- manhole_defaults_fn: manholes_defaults
+ manholes_defaults_fn: manholes_defaults
dem_fn: merit_hydro
bedlevel_shift: 0.5
diff --git a/examples/dflowfm_build1d.yml b/examples/dflowfm_build1d.yml
index 40fca81d..a19e9eec 100644
--- a/examples/dflowfm_build1d.yml
+++ b/examples/dflowfm_build1d.yml
@@ -34,7 +34,7 @@ setup_pipes:
setup_manholes:
manholes_fn:
- manhole_defaults_fn: manholes_defaults
+ manholes_defaults_fn: manholes_defaults
dem_fn: merit_hydro
bedlevel_shift: 0.5
diff --git a/hydromt_delft3dfm/dflowfm.py b/hydromt_delft3dfm/dflowfm.py
index c01ff118..dabd90b3 100644
--- a/hydromt_delft3dfm/dflowfm.py
+++ b/hydromt_delft3dfm/dflowfm.py
@@ -1319,7 +1319,7 @@ def _setup_crosssections(
def setup_manholes(
self,
manholes_fn: str = None,
- manhole_defaults_fn: str = "manholes_defaults",
+ manholes_defaults_fn: str = "manholes_defaults",
bedlevel_shift: float = -0.5,
dem_fn: str = None,
snap_offset: float = 1e-3,
@@ -1330,7 +1330,7 @@ def setup_manholes(
Can only be used after all branches are setup.
The manholes are generated based on a set of standards specified in
- ``manhole_defaults_fn`` (default) and can be overwritten with manholes
+ ``manholes_defaults_fn`` (default) and can be overwritten with manholes
read from ``manholes_fn``.
Use ``manholes_fn`` to set the manholes from a dataset of point locations.
@@ -1339,7 +1339,7 @@ def setup_manholes(
Manhole attributes ["area", "streetstoragearea", "storagetype", "streetlevel"]
are either taken from ``manholes_fn`` or filled in using defaults in
- ``manhole_defaults_fn``.
+ ``manholes_defaults_fn``.
Manhole attribute ["bedlevel"] is always generated from invert levels of the
pipe/tunnel network plus a shift defined in ``bedlevel_shift``. This is needed
for numerical stability.
@@ -1414,7 +1414,7 @@ def setup_manholes(
self.set_branches(branches)
# add manhole attributes from defaults
- defaults = self.data_catalog.get_dataframe(manhole_defaults_fn)
+ defaults = self.data_catalog.get_dataframe(manholes_defaults_fn)
# add defaults
manholes = workflows.update_data_columns_attributes(manholes, defaults)
@@ -3713,7 +3713,7 @@ def set_mesh(
def set_link1d2d(
self,
- link1d2d: xr.Dataset(),
+ link1d2d: xr.Dataset,
):
"""
Add or replace the link1d2d in the model mesh.
diff --git a/hydromt_delft3dfm/utils.py b/hydromt_delft3dfm/utils.py
index b3cc7a7b..9e820f28 100644
--- a/hydromt_delft3dfm/utils.py
+++ b/hydromt_delft3dfm/utils.py
@@ -156,9 +156,7 @@ def write_branches_gui(
return branchgui_fn
-def read_crosssections(
- gdf: gpd.GeoDataFrame, fm_model: FMModel
-) -> tuple((gpd.GeoDataFrame, gpd.GeoDataFrame)):
+def read_crosssections(gdf: gpd.GeoDataFrame, fm_model: FMModel) -> gpd.GeoDataFrame:
"""
Read crosssections from hydrolib-core crsloc and crsdef objects and add to branches.
diff --git a/tests/data/dflowfm_build.yml b/tests/data/dflowfm_build.yml
index 24f1972a..4783d98c 100644
--- a/tests/data/dflowfm_build.yml
+++ b/tests/data/dflowfm_build.yml
@@ -34,7 +34,7 @@ setup_pipes:
setup_manholes:
manholes_fn:
- manhole_defaults_fn: manholes_defaults
+ manholes_defaults_fn: manholes_defaults
dem_fn: merit_hydro
bedlevel_shift: 0.5