From b5961fa308a5ba9a959bb4677670dca498eb0988 Mon Sep 17 00:00:00 2001 From: DarioS Date: Sun, 19 Dec 2021 18:41:54 +0100 Subject: [PATCH] Optalog : - nuova versione con aggiunta dei vincoli textile CNS_SetPartStripYconstraint e CNS_SetPartStripXconstraint. --- Optalog/Include/cns.h | 11 +++++++++- Optalog/Include/cns_textile.h | 36 +++++++++++++++++++++++++++++++++ Optalog/Lib/x32/liblcns.def | 8 ++++++++ Optalog/Lib/x32/liblcnsR32.lib | Bin 84446 -> 86780 bytes Optalog/Lib/x64/liblcns.def | 8 ++++++++ Optalog/Lib/x64/liblcnsR64.lib | Bin 82870 -> 85162 bytes 6 files changed, 62 insertions(+), 1 deletion(-) create mode 100644 Optalog/Include/cns_textile.h diff --git a/Optalog/Include/cns.h b/Optalog/Include/cns.h index c346123..e494483 100644 --- a/Optalog/Include/cns.h +++ b/Optalog/Include/cns.h @@ -1220,8 +1220,17 @@ extern "C" { CNS_EXPORT void CNS_API CNS_SetPartCommonCutMaxBlockSize(CNS_PartPtr part, unsigned max_number_of_parts_in_block); - + + /** + * Allows to disable some advanced common cut checks. + * + * Warning: this can allows to generate small holes between common cuts. + */ + CNS_EXPORT void CNS_API + CNS_SetCommonCutAdvancedQualityCheck(CNS_LaunchingOrderPtr order, + int advanced_quality_check); + /** * return the number of common cuts in the given nesting. diff --git a/Optalog/Include/cns_textile.h b/Optalog/Include/cns_textile.h new file mode 100644 index 0000000..b17b218 --- /dev/null +++ b/Optalog/Include/cns_textile.h @@ -0,0 +1,36 @@ +#ifndef CNS_TEXTILE_HPP_ +#define CNS_TEXTILE_HPP_ + +#include "cns.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * Defines a regular set of possible y values for part position + * The intended usage is when using textile with horizontal stripes or plaids patterns having an influence on part position + * Setting this constraint on a part means that the point @ref of part @part will always have + * final coordinate when nested ref_nested_position.y = strip_start + k * strip_repeat for some k + * This constraint is set on parts and not sheet. + * It means it should only be used when the problem has only 1 sheet, or a set of sheets with same stripes patterns + * and same sheet border gaps. + */ +CNS_EXPORT void CNS_API +CNS_SetPartStripYconstraint(CNS_PartPtr part, CNS_Point ref, double strip_start, double strip_repeat); + +/** + * Same as CNS_SetPartStripYconstraint but for vertical stripes and x_values of ref point. + * When combined with CNS_SetPartStripYconstraint it allows to manage also plaid patterns. + */ + +CNS_EXPORT void CNS_API +CNS_SetPartStripXconstraint(CNS_PartPtr part, CNS_Point ref, double strip_start, double strip_repeat); + +#ifdef __cplusplus +} +#endif + + + +#endif /* CNS_TEXTILE_HPP_ */ diff --git a/Optalog/Lib/x32/liblcns.def b/Optalog/Lib/x32/liblcns.def index 27a5f3b..5163cc4 100644 --- a/Optalog/Lib/x32/liblcns.def +++ b/Optalog/Lib/x32/liblcns.def @@ -274,6 +274,10 @@ EXPORTS CNS_SetOriginPrioritiesOnParts@8 @375 NONAME CNS_SetCommonCutMaxBlockSizeXY = CNS_SetCommonCutMaxBlockSizeXY@20 @376 NONAME CNS_SetCommonCutMaxBlockSizeXY@20 @377 NONAME + CNS_SetPartStripYconstraint = CNS_SetPartStripYconstraint@36 @378 NONAME + CNS_SetPartStripYconstraint@36 @379 NONAME + CNS_SetPartStripXconstraint = CNS_SetPartStripXconstraint@36 @380 NONAME + CNS_SetPartStripXconstraint@36 @381 NONAME CNS_LaunchBasicLocalComputation = CNS_LaunchBasicLocalComputation@12 @382 NONAME CNS_LaunchBasicLocalComputation@12 @383 NONAME CNS_BetterPartInsideHole=CNS_BetterPartInsideHole@4 @384 NONAME @@ -312,3 +316,7 @@ EXPORTS CNS_ArrayHelperGetElements@4 @437 NONAME CNS_SetShearMaxLength = CNS_SetShearMaxLength@12 @446 NONAME CNS_SetShearMaxLength@12 @447 NONAME + CNS_GetNestedPartInternalStatus = CNS_GetNestedPartInternalStatus@16 @448 NONAME + CNS_GetNestedPartInternalStatus@16 @449 NONAME + CNS_SetCommonCutAdvancedQualityCheck = CNS_SetCommonCutAdvancedQualityCheck@8 @450 NONAME + CNS_SetCommonCutAdvancedQualityCheck@8 @451 NONAME diff --git a/Optalog/Lib/x32/liblcnsR32.lib b/Optalog/Lib/x32/liblcnsR32.lib index 0cd736db86d318e705ade4abfa1334d594071e57..6bb0da224bcdf9750d4e632165eca704be7fcd28 100644 GIT binary patch delta 13730 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 diff --git a/Optalog/Lib/x64/liblcns.def b/Optalog/Lib/x64/liblcns.def index 5ca43dc..f8670a8 100644 --- a/Optalog/Lib/x64/liblcns.def +++ b/Optalog/Lib/x64/liblcns.def @@ -274,6 +274,10 @@ EXPORTS CNS_SetOriginPrioritiesOnParts@8 @375 NONAME CNS_SetCommonCutMaxBlockSizeXY = CNS_SetCommonCutMaxBlockSizeXY@20 @376 NONAME CNS_SetCommonCutMaxBlockSizeXY@20 @377 NONAME + CNS_SetPartStripYconstraint = CNS_SetPartStripYconstraint@36 @378 NONAME + CNS_SetPartStripYconstraint@36 @379 NONAME + CNS_SetPartStripXconstraint = CNS_SetPartStripXconstraint@36 @380 NONAME + CNS_SetPartStripXconstraint@36 @381 NONAME CNS_LaunchBasicLocalComputation = CNS_LaunchBasicLocalComputation@12 @382 NONAME CNS_LaunchBasicLocalComputation@12 @383 NONAME CNS_BetterPartInsideHole=CNS_BetterPartInsideHole@4 @384 NONAME @@ -312,3 +316,7 @@ EXPORTS CNS_ArrayHelperGetElements@4 @437 NONAME CNS_SetShearMaxLength = CNS_SetShearMaxLength@12 @446 NONAME CNS_SetShearMaxLength@12 @447 NONAME + CNS_GetNestedPartInternalStatus = CNS_GetNestedPartInternalStatus@16 @448 NONAME + CNS_GetNestedPartInternalStatus@16 @449 NONAME + CNS_SetCommonCutAdvancedQualityCheck = CNS_SetCommonCutAdvancedQualityCheck@8 @450 NONAME + CNS_SetCommonCutAdvancedQualityCheck@8 @451 NONAME diff --git a/Optalog/Lib/x64/liblcnsR64.lib b/Optalog/Lib/x64/liblcnsR64.lib index d794cd514d998113fba4b60f41240cc6b3c3e2b8..f442e25afab71b63e06952490d316c60efe8307d 100644 GIT binary patch delta 13816 zcmds-cYKvay2qb^03kp~NbiM^Mj(|GAQ%#mB1=)OS49Xx*#&_R*ysWx$8xXBipv6{ zzLpiSTy;@tp=~G$T_g~i^e!Mps)*EZe=~2HIh0*L_s`4c^F4EzcgizQo0<1y@t+&a zey_o_uts@#X_+}WdE94SperLIBRwlx{2S~=RPQySIe|p;dJ)Zko#@-K7H3d`jlZ|p zgA#1+ZBdC5?5i=^--SqUEiP=aHg7Ou(o0)Fr^`7w(~@-<3uc8J!x|70R9iIcQ?6-$pp6` zvEVj3NiL(jOswAH7BwhA&=!;6LSll}Z7se;3DT~bq>m&9T&&|*GC774^jvN7NC7cP zHA>Jc%Y?=elVEa!5W8-f?1rfXSFf1-IuZ-QBn9CXGf>XJq86LnNFlnB;=;#gCO5;e zQZ)ASw3vhvJd|PaIm*w8R-(P23aS-s7-xZrH(bH0mzsnm6BBgXXVU#qVuJWLEpDN7 z;iGx5#blHq43Y}Mo0^2aMNAOZ!XyzYmJCJ-(;Yu2qaiiNiOk0)o~_O@L0i;LX*W?hy?%4Hd%@Z0DJh9NjGQ!Q1vG!t0IX2YYUA^ zpz5|D`V*6wXkvgCLIZ+DgJAzfgNQ0%JHf(IlN!`XcA^BEhFBaz3D$a>teHjxSbYd3 z>4Fj@lv+TW3BV6tFYqrn$@`L+puG!{wg+AX77I}V??8)pP=W@z7K>4WhWNjv5+!Jo zVgV;@0w=xP-eMt2aI&vOHOgvYJ=UAJdKMzwpzb>e9my4xSBSNVx0s1?CebN)y5t>{ z;9`G^8k9A}I`y(xi4sIEH;Kw1CJ2XP3nIKsqGqFhHsU`zjwCHYiAkW&7Qi1u2m*#l z=$BwJnTm2MB1J?F@R?*1iC0S#P&26FZYT*Pv_n*{Yo<^q8S zBvkhtnf!zjY)Q8G5+zsu3taf9 z7-{ldZz9Pql)I2Tpn5?l`~%Sbl_m!eI)XiWO!huS1XvNYA?Wgg1%&DXx|Ug7LpfhYO znT&EW(V=%u4*Nqh{&4&^V1InD4(JGI(N2@a@K(T*I$6NulNJ-Le&1vb1^~?0!vg-` z3(}99WIRm_(1k%3(9{KR5W))%MM_xK7T7;)3$b>vyW{{$kUhktJG3L{fz=5-5!(_t zkS9oi^GZHL`5BTAv?N#^YO*zuNP;}EbsGHQO_O+NMiAqgg%1!LYtjfSmQ@J;CAzO0dhz;#HKuwHs+ruxGG@ML{96(97I%xFJ$tYSZjI_? z6R+Z3`K-}R_}tPEp8B>Iughx4FYu5By{37Fh#9&KE$=<_kL5$36^iOnT0V4aX~{@_ zX{tXz46>0=LPB6e5-eGwtFws%8pQV(dbd5Mwb>nU*7rI7fMQ> z8TxF$=SxNoFCSktZ0Iv1c<1Ec-22r3w$5YT2}!@-s0F!{D(?;IBRxCwuB%0ceYGfJ zM1gaNdd(wxeLm6HZ*k-Tzu$^2Sv;PHBlYQUBtMuowQ+O}r&CAgZ#XkRB0O$IZ<7&Q%N^j0XN7Wlp;kxhPd z{`h|KH1cphqsPGu`0fdMES`1N3J3YZVRD->yv0k(J_q9EF>DV2&=0gDiz;rkeR@cP1uEi zHzu3527}dS)CH6#FggjYLQCcTFhd?z-yUlBVzdwhdNXp^bY8M5sn9Xbz-yKAAV+=5vq`C#%`M&T`C8qgxn#i;uw2mtov;Cn8k{&21X zfsCF*YW)c$Zz1{;l&*&pf*Em)yj#J>hhZ8-z=54`s_$X81#l{8ulIM@wZKgHM=eN_80~}^`@;5}lAwC<{%Smj={$THO$EmhDNkoG z8gv0$>mGc3eh^N9LAGG>{_U`OFeDoS!Lz%=EL}ViN+2!;kpO1GfkH88;8yqqcoW+2 zif1$neiRG!c4~z7AT62E98l00S^&3F5sC=adMGD>3D{cc2IAWbarr7ZgV-DlHBEy( z<6z&|rjQ;ig!)n-{Z9Nz*0I%^CPr5SOvkokq z<*<${pXIVVRzsU9oJFu)%A-gY#dgtd%3|%97d4@s^gYF~R($kRG4+#KYu;#Jj7I_M z%y{C!j&Y$ZjKxy|t)?|Ji$11o%ApLF$r34v{z8+fkQFiRGa$TCENjWqSUUe=U`+i) zmc%y=jHn;YV))sCU2}q22n%FEtSzO|HM&mmEP)-O!&FCz9>!Q(mdaLA6?I|{v8nVo zI!_lUg|*?ugSzsxr(gd6v6_nFLBpEmy6@k=dAlagnnzb081aI~|9R)F=v210@pJNs zr5!%(P1`wsY0u=@=&qxYemcAR;G;c5SEFAd3#w=~p&-!PebM%z#rK}$2aj$ZP|yIqM_zGhwiyaH9X!>pS>uTa&kHR}@Q ztG@FNBsUi8ZA(O%yv_VbzF~g6(3d{>*|%9mPrJ@YYh;N(rJ|Qz$svN&N0Wt4L%y}n6e}H*jN`rwWB9y<2~H26 zRaTEheVw|p#X)@hB0o9O-xet?`dl|hYKM{jz&A1+osX8mgRXoVh$ z{Np9Tyl6?B)5E9M?D4^pE~;)`5Wl^|oZD|{C#T+4-+wPv>a*2yeW|lrsTOI4G)$Sm z?<|exvtIKst~X(^&REchRJ+hfSE2TjSRS~-$4%w7UdC4{y=<*C<-J|$coByTa;!EO zs~lr(D~aMWm$kI#l3peoq@ck>G`LU_$-|Z_VG1nQ9JAapqjJql%awcC4M(kT8gkpO z&#iDIa-R`9GxseF<$qbJJW&^U3M85}B#L`gIU;j=qLM0Sq8UF2@l92xRgPBW+NGTKBlKj}-c z=vbepuM6P6RQb%9>*uTs{w>$qdYwuQcK-Qzor(jj%c$~VrUH}JKVc6bjpZd$fN+n= z#M9RM^R4UK*v}nXq;GI+!F}v}v_VY@N07rLVVFOg!yI|mllT1AS>=qMO;JDoR+;a} zw`N_ljUAmC?Vx&TqZ3q)6gM|2DeR@c_??o%4(LnYserbFX85KDxacUj=$N5lykSi% zM+n=mi)-9FNoDV?QD#C0l@<~ibPhjU6Tr(htCVEVy?L`U47cmLZE@;Uysg@zhPD@z zUwiLj7S%eP#jk`sc&on@Ep_V#>Nx4F$D z`z52_E6~rKM?(13ZAw43^80L8%GWm=7L!hy<6T53N%Xjj3sE$}@Q{jRlJYEy= zF}+tH-@e0{&6sCzHLZ8v8`9tGR3UAPmHxdNT^H*cEahmwK)&w#c%>$5`BA&>zkE*! z^h%QusLc_`v7zs7#|+AbQ+B)AQ0h@EZ7L=&85YWu_QX1q+s@$H;|#;|d)(%wiuWuLax9p=+`JUzlo_J{COr=0lYw!aP7ujWPG zl;dTgM`K=c(2qy|HGnrbs8(QQOxa3gOfT80>_DEgM*B=~@PHH0>hLh&po(ZaaqmB< ztZXOgfrpfpMQWUzX(h9xhg9mYbEZ^Zzr$+t#;Ho0p(O--QrI&*fFC)mmJYv>&&4s} z3HjWge{oVN&Q||7N8Hpe`?N-%_h8z7&xP_HM^zs;DL*}`OKIBI@0dDC*t-AoF{OLk zH|`wMCe@cd{s(Qum zN{b7H4&>8M2J+04agN39Fr0Eyg`s`0Wk0G_>uPTSwWoXg^O*14ROp<=&i?4EiQ8wf zfv4111uK$UizJc?iK>xA{>>X(9#iSaEAxx&oPo}(enaPyY9*w71le{8~!dy7-48v__ z8Gb=?7Aq$ozMvLjxBJhFs-3;y%@?(H7tP&7NRT5mSKt%C{eN-ahV1pMxTFNJ>vAqT zb!v_CFFR|r4>E0jRtFi|3EulzbAlbFAR^m#5Q3!hKx1kSQ)$PJ`j@UK@pZ%JTfHE@ z+IwunkNU-th}+S8`WNMD@Ifbdp1i7p2Z17!#HOoG=2aW)BfqNDYb$*7uS(&NP9{CE zpT%KGn|(w1&})uYs)3eWQv>1JCTGmQt}e;?73ebzR5Ci2kJ=vRcnb2qoG23${f~U! z%GlkBxnE0di*3B&SWMi9qyvf_FpJmTh~O8qJow1#n%1q8wUlYqO{E#66*(ssMqeSL z&+iv#_%+b(ZMH_fxTQ2=yI{m^WkU=kWe@}Xl{c>o;tOtT^IJ!t#&v2GeV<)zOlQo` z|9-#e@QZWQICt;7YyL&QS$mWN+554p&e@N}9bKy9cAYYtUFW)^>a6YfZN}7gjCOLh z;x=0@WiX-{^L=|RQ|8py_q@|4$2PYUXT}u9lv~49<;WtZKPh@e87cLcdUv4Ty2hE$ zzplsBN_EM`%jdk{k%mTEeJuucTfJp44;Exhjn|%A_BC$SXUf3HV^T12+xffb~F{% zE2*{v8{Mz%!A7brc5-!?GKxK!oK{()x=%2opl#A9`Rz2+g`x!TdLHMNSXOYKQESIG-|@)okms=8YNAb z7C+h*0zZKeU-e#y`#Trw(rWZ+>fTMtD$-dYdTk2|HGXWWEyju!BflAQf<>u!Su>?x z`^}xv!CR@z-rS72-rB6z4cBPZTn#F&xbhMteBBV2ps9VLjhg0~TOjvJ#Ry?{8z1|y zFuXKU>A*^c#s@yiYuwIh3C7=iS)fsrs+`om${T<2)#MW{AznR*j9}dHWo{W#R*q?* zt;T31T_M zjQ}+%lq)aTQX?aR*t5Ee%8ueXF~=Aa!u*YhV5W{ix+Ukz=e+nsPve7NC9HkLG%f`z zt%}XfoGnDtpIv!cuY@~E5rk4-F)oBasecXCm8!jh9E-g!rbkO2TdBOsO7zC?FfG&D zF?23W_ZBVmR$w;XduHI*5T{I}(&LC$Dm|*;JKIXvym`D#(X8pR1(8p6IHdx@ZPq1Tb|K}JZ0JfP=eBD1}iVC+iK+}h4!`E4~#=@*+1#iCve zGX5)F>t%;z>r_1?^_}vARBflU&Cx8)eG=zIXBDi=4}TiM7gaddC-=kH&9n#2G$LJ_ z$v&bSOus9-rBVlEC>uCOl>Hg*aU)yy$fE2{BPJ8ezY3m(HaTbo2bsTUb{vT;)XBwJ-8=PYwQTVIHI*)m4w=#|8v$HdUB3NpNjFLjLOd1{lp$B zpimo1{Ms#hiS07Y2rFbUMrENU6}(ewU)=e{O_(3`_czjt-2GFw5buM;?FlV{=BR+lVC9 z4K^>J_2T0=CXpPwpkO@?ki}zYAHy}6ToH;ER6bzwEhbakjTS6gZBgAE6N4%&E?Jy! z@!cjONd*LwEL=k?=o0Xg=Azf)=d9HN|1HVC`s|(`Z4J$71EjM3Nh; zY#{iJ`-mlswt?>xK&u9e)-Mo~WG=GEN`e2gQiwGzu)&R{z(3q(8ro?@jX5^3P9wO9 z|0|ZFT}sTai_Pa~KPUPH=2fgj3ywTu1M?r*M66(kMWGkc7DDPP2pmNt+D2ljsWvmw z&LsK?k*@d*EjazCO)c75V%fuNHlPI&%Pk_i5tD==uqEMv7Ljvt9eAUly`-hbW(r!+ z`l3afCx`($mt^xH+7FQ_NFPay@fOk0ToMywQ-&7AB4YrZ8Dg^mEdY zR?_x>f-WO76b)#>`kpq6(1IGoi2@d@fyH7=E#le`1GEoTlk7*vNVcA|*fyR>@(r@> zn+vG_^Tt@Ld5B1H6zx$I513vOf@lU*3&|zB;akbhV-`O?P6Sw=0Go+uB@jxIH`WH$ z$^(60v`E`SEX|9L&ciHv!#4`}srOq%8+zExMGF=$v{-_4l~f+G_--ij8kWlqwV8w# z(F#PiWF;m5EYQye ziv@y?^%k8FGk{Jxz@n$X9w;E$o2Fo$_mNkAur4JwC((lR(H8w+9Z3PSldvM2YP6s| z0#`8yEwoz>D@j(QT5LqnDo`UfevG(4F_Of?(h|=s|Ib|tptH!LpsVLJxf!)+#^1v?P9lAWlMfQ2KoBoPo?(#(s6n@OfCXm>S&3+zFG z0j$$ei!``H(&mswTYLv}_;H)VXb;1U@U^6SfJJ%(ED18OxTJZg4f-@kOpLyUG*bM6 z7W{bHVpj={QeZPuN%1CHum##kwvM*ggv?Nsq6J&X2J>!t1*yH(A~O#qH;-?BJ%?wO z$5ea~7+6?QIVi4$r>i>snUAcV-F?r8xz72p4g~3qko3qHarx-dF|e!y=2Zcv>){6ZwoD?Z@c7ct+PjWB{YLKxrtWR$+|F zLKp?(`<6sTC7`~JXe(_yKi6J8X{<1lkI(F>pi-!B})A-V^n$G}8<4+RfYqTjbf zcZ1c7h?=AC^eUqK#fXaUFi{0uvk)d-hLQzA@5A?f3yAuo?`qt;*q6~$5OyB!r!6On z>;R#`XWl4A2_8lbI3kQJCv{ACMSfq0cn71`V*djkEcP)Ha@7q?4n`+Hd(Z$Yz0jJ` zqD)39Sul4~dG!7`O%m$HM=BNG1KfJ`acjrn&HJ^mwN3u!hHG=i~tUIb1a zqZi?yJ!y=Fb%r**p%v({foLvR2p?x601qJshQimOxr`=(@Em9X=IkX(fH2cw{?KlW z4#SO)!1wt{j4HwBD{vpK^9#f{P>)P`q7yg;LB04`xCcRjN%mp!k}ix+g3;*^2$4M$ zZYg5O5RlRyi-EZapj1qnv=K1@-h(v)5&g3eM@cZRtnsqGXC@=yKtU5mE5RE`Wj~~G z_;#X6paH4qeF|oo0{^AJpGnOaO$XI5R}O?a3Mn6fRSv2TKy0rm*&WTuE%x7#7PvDH+f;gSygXx2LG=^S-rop{uU0es)16aGKxR1r1eiPn5j+pvngqhIvn>1l0vNm^3H z#=lQ!QBgB)V0gvDWuG>~h|{~YB7%E2 zgtU|cau8{VWfXhJ z^hLS4(*CCD39DGw#x1$e>BtMJ?0!q`cdkhTKfTlvtrtXlg11|i%=7;vfPcBTEibMN zH65+7EtlQu9JTZZ%Z55Vc|wELHEMZ(=b9);w`H8X+-L|Nh;jMMa)SSge5W^;&Vj+y z%rCDn&Z)Lda(2ZZm}JySZ4#~hnU%L||8$kso@Z{eL_J?+;>KBIRJC4&BbJmfr>eEn zt+=bPOxG2r8^_O8$Mb@>{P?6A<5`SU@g$>gB%*iwU2(kSDjiSGENb=+4QH&0ll7Nwd~!lgfblbggBT?$G%F@3$_Mi!CY6MCc%H_OP9vyG}=w$*ih%S~Znf zN|Zi7Xx&UOE%`wQlNp}1UJvIJ)?0r2X1xh6Cp_af=_%NTiE^(xqurRPAsQFmp%c@uY|#D5mC zAYQ#ZM0ar)xaiF~6r=;an=J=U-E15<<&-5U+mffJa3bWnE!v7ck#}y3i9E+X&urE9 zQ5IKW+!12p48r5{J*W^yQ74i9x=qWclVk!c+ zH*Ys1of3J^4()TDzBN0{s*WUmcA9H$M}5l+cgFHPJKH)WaIMdhs^j`v zBRQO*?A{&=WMexz|718n&=};d%zE=!vfIpsuu^kn?fDZYz78iQjP&sJd$bcpxwE^( z@4Y?8XYbWHE-SoJTT1mcpS>@V-?7hV?RaX&J}r;3u^J)+$e(|(KU!MKH_jc;y}RG& zk84VQ=>{BIdE>}v-tmA>c~yFP59mlS{=9ZT3m`*9`*Sj92cvn}LE}qD2O z@-kG5v3&8UNPfCD*lm7Och57(K5b9}P5&etbOf#SnvW$e>R)*e{31s{B* z1HX7!tL#%h2Ocr?Qy&AiAJJ=?14Hpqli^M&-+ENL*)H2kl)*n4PZylD;%L`TrkFTI zb-*!GRPE!G5<3}UKghF=hw~0+Qk;<2r-IJMwf0sCvX5@Fk87_RlSZE~CUry+CyXfW zQ=I?L`k-J!;MJdvS=}KJ#9#Y4nune=A>d5^^hqOxGPTS zp-#8-)3a~lM<5diG##CSN+4a%9I>V3WoHrUesXF<*9_GZ6PF1{D;5FT&dD;at&b^Di zcHs|V?b-z`oU9f~BUyGL0G~b8!>9jdW^*(;|C<@)NcQx_+a%NG@mQ0E@Stb?dBE>x zLTA?<{=0UZGLh0r7EQde;5Atue(Cq5+j8pP8uTE!8z>8Qz?c|bcqx*XUiB$hdcWv% z$;j!>jU0^f@Hei7_?$w}Lsf_L%i4BwpH}k8!)>gT@7XxM`LdSJeL_jTVooUT_?mph z#FtYbZ(PypC>tn!qz&@;`KwXTM`x{xqBB>uGQLrik1^5Erh~Scldg5wOc*1#OpX*^ zH#wrhrp7vD)m+y#)a;doH*^v8*%y;}zsAU0_i7_=ZljS`@4E{c^;~!uR;I$WlZlM@&K(? zz%LUtS9EQ{!o&`@1hOXCPimr56J~0N9na#ECQLiii98X~lxgkVRY<(s)HQ`24&r80 zGlhO25Z-1kG3^~q+-SzM1yL1L#0qb7bJ1lG!Tenoahvi5@j(C!;q}vlMY+Gr-0pq( zAF7W?2w=T*VA(}Myc@twRj>m{Sy4U$JSYdoi!Lpgj!5742V<-bU$o$U(MPrhX+6RahR5R=kfee4n?t_8XrU{^*pP?qqI<-ia=zjF)m5@PB$ z_0G0*spl>??+pSy!U8PqXX=OrApH9TXt=a9VCHA*Ajx&A#+UAe?9&BU! za(kl^!`m{S6nEbEh^=i+oT*e+%6EhEOU1?@)?SPbGFG$SONli>OrN&oDJ;94^%N@x zwqp-yE8#&=P1XmK^%aBLu`a?tn5F9bPGXD*c15-GdPM9Fb~(mLfZ~u_y6R1#KPp4J zNRRkAgz2hlQlxLFNfBeeWueA??(>J}6K0I!93;g2FtfHi)vBe_q1!YZhbO!gF9wAh zOIaInjrG1x2D?z5;>7xJV*%fizFW+WV9`D=!|dWDW<;1!aRgPSm4}}WVsa!4=ZPy! zd^+ZOJJKbxeS{M?Bbh1c?yB`%luK(nQk9Z274UNmA3nw-{5`I4cG7&f$DIe(t0}SH zV{Go2LkTU-@$ce@hb0Jaw6TWIgUJwiKU_Q$!~DhdXqR2Fq?$x-w13f^x;R0lcO$Vi z#-xE0w}WF%+`^9GqB@pYkF7ut3+3Bh z_7igg@hsj)!d8hR$ubmDjIjE#N9;}UjV$GRnRIocE``O3&i<}Z^0`k*C0{;|mdEc2 z{~a%`wRaiX*$D@yn&{9)a%ZZmNFrU7z2tshERP+YP%*rNYbw-x)j=LFC!xdaSEEF2 z2Y2jP=R}d-(Kyw98WR8N$joWaK8A^~PG)_5J`(@z~^K zWkSH0#JDt;C}KMMY^CbOs!nmFIiE1r!}qQ+mBh*LbDfPJOaUF$#S~DJd1ty9+Zr{V zPWM$qEi0cY{)J_ajExe_GhDLCx@12Mis2cqx`a(bxmdn%@d94=KjETv0RqpJbh>8u z%`!o&&s-H*E=inoK<93*i+1r-)|16=pvdaRJYr05=KK8Mcq6vE@rKW%zz0aQ%<*wz zMR!-=*a@HvAZsCh<>XuQ5`Fd$WlhyXZpHWw6g?8evK}Vd<-RN59xEYxqSO6ib~fuI zin2`z%B04RM)GMz%*bZ?hl$(94v}L+`MCjMe>7e#A%ArGi_4LH(&n1I9q&xL>P2oh*Cw>1U ziXM}RIU!E;&3D-x)9L3l!Sjt?N>)6Hs5Fts-){iVnj6NauGB{(r<0QX<$f+{9ABR8 z=TZn4RS?K`^SPp~fJO0`tNQ87cw%pX%M(uZA6#h6>l_3uLl(L%Y*)+T{=QaFJ=gbl zl^$;C z&JPr#^}Q|=*%eN$^!B~R$!3lg1I--1#>*6K2V$q1H_+(f1gi=`8PQqdwLvU`U%KY| N+T01