From 996a72a2737c95ccd965aee3e1f26275ffe02a3b Mon Sep 17 00:00:00 2001 From: Mimoja <git@mimoja.de> Date: Wed, 5 Apr 2023 15:04:06 +0200 Subject: [PATCH] format/AnycubicSLA: refactor Anycubic SLA format and add Photon Mono and Mono SE printers (#9929) * format/sla: Rename pwmx format to AnycubicSLA The Anycubic Photon SLA printer familiy is shipped with the PhotonWorkshop slicer. This slicer generates the sliced archives. These archives have per-printer extensions, not only pwmx. The name is -most of the times- comprised of the PhontonWorkshop "pw" bit and the model name. "mo" for the Photon Mono, "mx" for the Mono X. Therefore the format name "pwmx" is incorrect and we are renaming it to AnycubicSLA. On top of it we are introducing a helper macro to connect file extension and printer definition as most printers use extremely similiar formats. Signed-off-by: Mimoja <git@mimoja.de> * format/AnycubicSLA: Add missing fields The AnycubicSLA format description is derived from reverse engineering of the PhotonWorkshop output files. While the initial Photon devices had their binary headers with version 1 we have seen newer models with additional versions. Namely 515, 516 and 517. We are adding the version handling to the AnycubicSLA exporter to prepare for future version handling. Some fields were missing for Version 1 which are added. Signed-off-by: Mimoja <git@mimoja.de> * PrintConfig/sla: Move material notes to simple view As the Anycubic Photon Mono X uses the material notes to configure the printers parameters we need to change the visibility to allow every user acces. This will change the default behaviour for non Anycubic SLA printers. Signed-off-by: Mimoja <git@mimoja.de> * format/AnycubicSLA: Expose Antialiasing via material notes Similiar to how the other machine configurations are exposed via the material notes we are adding the Antialiasing config. Signed-off-by: Mimoja <git@mimoja.de> * Printer/sla: Add Anycubic Photon Mono and Mono SE The Photon Mono and Mono SE are format compatible printers with the Mono X. They support Version 1 and Version 515 binary archives. We are implementing them as Version 1 priters to reduce the overhead and keep the code in line with the Mono X. The addition as Version 1 printers leaves some features unexposed, most noteably the Antialiasing level configuration which is now always the maximum. Given that the printers check the eligability of sliced files by file extension we are poised to create per-printer sla_print default configurations to overwrite output_filename_format. Tested: Successfully printed multiple objects. Changing the layer parameter on the onscreen display succeeded. --------- Signed-off-by: Mimoja <git@mimoja.de> --- resources/profiles/Anycubic.idx | 4 + resources/profiles/Anycubic.ini | 103 ++++++++- .../Anycubic/PHOTON MONO SE_thumbnail.png | Bin 0 -> 39203 bytes .../Anycubic/PHOTON MONO_thumbnail.png | Bin 0 -> 35707 bytes src/libslic3r/CMakeLists.txt | 4 +- .../Format/{pwmx.cpp => AnycubicSLA.cpp} | 217 +++++++++--------- src/libslic3r/Format/AnycubicSLA.hpp | 81 +++++++ src/libslic3r/Format/SLAArchiveWriter.cpp | 9 +- src/libslic3r/Format/pwmx.hpp | 37 --- src/libslic3r/PrintConfig.cpp | 4 +- 10 files changed, 303 insertions(+), 156 deletions(-) create mode 100644 resources/profiles/Anycubic/PHOTON MONO SE_thumbnail.png create mode 100644 resources/profiles/Anycubic/PHOTON MONO_thumbnail.png rename src/libslic3r/Format/{pwmx.cpp => AnycubicSLA.cpp} (72%) create mode 100644 src/libslic3r/Format/AnycubicSLA.hpp delete mode 100644 src/libslic3r/Format/pwmx.hpp diff --git a/resources/profiles/Anycubic.idx b/resources/profiles/Anycubic.idx index e2cf7b087..a941cef9c 100644 --- a/resources/profiles/Anycubic.idx +++ b/resources/profiles/Anycubic.idx @@ -1,3 +1,7 @@ +min_slic3r_version = 2.6.0-alpha4 +0.2.4 Enable pad for Anycubic SLA profiles +0.2.3 Added Photon Mono printer. +0.2.2 Added Photon Mono SE printer. min_slic3r_version = 2.6.0-alpha2 0.2.1 Added Eolas Prints filaments. 0.2.0 Added Photon Mono X printer. diff --git a/resources/profiles/Anycubic.ini b/resources/profiles/Anycubic.ini index 9bebbbe76..771b38d01 100644 --- a/resources/profiles/Anycubic.ini +++ b/resources/profiles/Anycubic.ini @@ -73,6 +73,13 @@ technology = FFF family = PREDATOR default_materials = Generic PLA @PREDATOR; Generic PETG @PREDATOR; Generic ABS @PREDATOR +[printer_model:PHOTON MONO] +name = Photon Mono +variants = default +technology = SLA +family = PHOTON MONO +default_materials = Generic Blue Resin @MONO 0.05 + [printer_model:PHOTON MONO X] name = Photon Mono X variants = default @@ -80,6 +87,13 @@ technology = SLA family = PHOTON MONO default_materials = Generic Blue Resin @MONO 0.05 +[printer_model:PHOTON MONO SE] +name = Photon Mono SE +variants = default +technology = SLA +family = PHOTON MONO +default_materials = Generic Blue Resin @MONO 0.05 + # All presets starting with asterisk, for example *common*, are intermediate and they will # not make it into the user interface. @@ -2327,11 +2341,10 @@ z_offset = 0 ## SLA printers [sla_print:*common print ANYCUBIC SLA*] -compatible_printers_condition = printer_notes=~/.*PHOTONMONOX.*/ +compatible_printers_condition = printer_notes=~/.*VENDOR_ANYCUBIC.*/ and printer_notes=~/.*SLA.*/ layer_height = 0.05 -output_filename_format = [input_filename_base].pwmx pad_edge_radius = 0.5 -pad_enable = 0 +pad_enable = 1 pad_max_merge_distance = 50 pad_wall_height = 0 pad_wall_thickness = 1 @@ -2355,20 +2368,38 @@ support_pillar_widening_factor = 0 supports_enable = 1 support_small_pillar_diameter_percent = 60% -[sla_print:0.05 Normal @ANYCUBIC] +[sla_print:0.05 Normal @ANYCUBIC ABSTRACT] inherits = *common print ANYCUBIC SLA* +compatible_printers_condition = printer_notes=~/.*ABSTRACT_ONLY.*/ layer_height = 0.05 +[sla_print:0.05 Normal @ANYCUBIC MONO] +inherits = 0.05 Normal @ANYCUBIC ABSTRACT +compatible_printers_condition = printer_notes=~/.*PHOTONMONO\n.*/ +output_filename_format = [input_filename_base].pwmo + +[sla_print:0.05 Normal @ANYCUBIC MONO X] +inherits = 0.05 Normal @ANYCUBIC ABSTRACT +compatible_printers_condition = printer_notes=~/.*PHOTONMONOX\n.*/ +output_filename_format = [input_filename_base].pwmx + +[sla_print:0.05 Normal @ANYCUBIC MONO SE] +inherits = 0.05 Normal @ANYCUBIC ABSTRACT +compatible_printers_condition = printer_notes=~/.*PHOTONMONOSE\n.*/ +output_filename_format = [input_filename_base].pwma + + ## SLA materials +#MONO series printer need a significantly reduced exposure time but are otherwise compatible [sla_material:*common ANYCUBIC SLA*] -compatible_printers_condition = printer_notes=~/.*PHOTONMONOX.*/ +compatible_printers_condition = printer_notes=~/.*VENDOR_ANYCUBIC.*/ and printer_notes=~/.*SLA.*/ compatible_prints_condition = layer_height == 0.05 exposure_time = 7 initial_exposure_time = 40 initial_layer_height = 0.05 material_correction = 1,1,1 -material_notes = LIFT_DISTANCE=8.0\nLIFT_SPEED=2.5\nRETRACT_SPEED=3.0\nBOTTOM_LIFT_SPEED=2.0\nBOTTOM_LIFT_DISTANCE=9.0\nDELAY_BEFORE_EXPOSURE=0.5 +material_notes = #Distances are defined in mm, speeds are defined in mm/s.\n#Delay is defined in s.\nLIFT_DISTANCE=8.0\nLIFT_SPEED=2.5\nRETRACT_SPEED=3.0\nBOTTOM_LIFT_SPEED=2.0\nBOTTOM_LIFT_DISTANCE=9.0\nDELAY_BEFORE_EXPOSURE=0.5\nANTIALIASING=1 [sla_material:*common 0.05 ANYCUBIC SLA*] inherits = *common ANYCUBIC SLA* @@ -2380,10 +2411,66 @@ initial_exposure_time = 40 material_type = Tough material_vendor = Generic material_colour = #6080EC -compatible_printers_condition = printer_notes=~/.*PHOTONMONOX.*/ +compatible_printers_condition = printer_notes=~/.*MONO.*/ and printer_notes=~/.*VENDOR_ANYCUBIC.*/ and printer_notes=~/.*SLA.*/ ## Printers +[printer:Anycubic Photon Mono] +printer_technology = SLA +printer_model = PHOTON MONO +printer_variant = default +default_sla_material_profile = Generic Blue Resin @MONO 0.05 +default_sla_print_profile = 0.05 Normal @ANYCUBIC +thumbnails = 224x168 +sla_archive_format = pwmo +bed_shape = 0x0,82.62x0,82.62x130.56,0x130.56 +display_orientation = landscape +display_mirror_x = 1 +display_mirror_y = 0 +display_pixels_x = 1620 +display_pixels_y = 2560 +display_width = 82.62 +display_height = 130.56 +max_print_height = 165 +elefant_foot_compensation = 0.2 +elefant_foot_min_width = 0.2 +min_exposure_time = 0.8 +max_exposure_time = 120 +min_initial_exposure_time = 0.8 +max_initial_exposure_time = 300 +printer_correction = 1,1,1 +gamma_correction = 1 +area_fill = 50 +printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.'\nPRINTER_VENDOR_ANYCUBIC\nPRINTER_MODEL_PHOTONMONO\nPRINTER_TECHNOLOGY_SLA\n + +[printer:Anycubic Photon Mono SE] +printer_technology = SLA +printer_model = PHOTON MONO SE +printer_variant = default +default_sla_material_profile = Generic Blue Resin @MONO 0.05 +default_sla_print_profile = 0.05 Normal @ANYCUBIC +thumbnails = 224x168 +sla_archive_format = pwms +bed_shape = 0x0,82.62x0,82.62x130.56,0x130.56 +display_orientation = landscape +display_mirror_x = 1 +display_mirror_y = 0 +display_pixels_x = 1620 +display_pixels_y = 2560 +display_width = 82.62 +display_height = 130.56 +max_print_height = 160 +elefant_foot_compensation = 0.2 +elefant_foot_min_width = 0.2 +min_exposure_time = 0.8 +max_exposure_time = 120 +min_initial_exposure_time = 0.8 +max_initial_exposure_time = 300 +printer_correction = 1,1,1 +gamma_correction = 1 +area_fill = 45 +printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.'\nPRINTER_VENDOR_ANYCUBIC\nPRINTER_MODEL_PHOTONMONOSE\nPRINTER_TECHNOLOGY_SLA\n + [printer:Anycubic Photon Mono X] printer_technology = SLA printer_model = PHOTON MONO X @@ -2410,4 +2497,4 @@ max_initial_exposure_time = 300 printer_correction = 1,1,1 gamma_correction = 1 area_fill = 45 -printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.'\nPRINTER_VENDOR_ANYCUBIC\nPRINTER_MODEL_PHOTONMONOX\n \ No newline at end of file +printer_notes = Don't remove the following keywords! These keywords are used in the "compatible printer" condition of the print and filament profiles to link the particular print and filament profiles to this printer profile.'\nPRINTER_VENDOR_ANYCUBIC\nPRINTER_MODEL_PHOTONMONOX\nPRINTER_TECHNOLOGY_SLA\n \ No newline at end of file diff --git a/resources/profiles/Anycubic/PHOTON MONO SE_thumbnail.png b/resources/profiles/Anycubic/PHOTON MONO SE_thumbnail.png new file mode 100644 index 0000000000000000000000000000000000000000..9fa39cb4f1b859572bbb59f6f29c205ff70a2f74 GIT binary patch literal 39203 zcmcG#g;O2B|2=$hcP%c(-QA(MdvUko#oet)ad&r$yIr8TyX%D_7kByb{ya0^|KORO zY<9CVJK0Tg^2#|UQ7TH(D2N1z0000*Rz^|{0D$<sgaE+9erEbE<(8irw3V2m7y!@^ zkMwE+^LbBZCZnbZ0C-aa0D++Z!1HHO;4uK;#tH!ZGX?<o(*XcHr|b?@!OsV<rt;E~ zfRF!<{O+=(&k_VD8C_QZ015NI1TnYi|N2=7_fu9;3JwGXjf{!)3|IW~^Nj#mNihx2 zwX-*`OUBid?FhfA?hMU4y{(?xtyl-ZrVfE94{Q1tMh;*kr3>%(@G8c6>=P+u-9J<j zRO^3;)pS};^2JResN@Uk2NNw43vtzm!XgL~8x!#%Lv-try*q-wf!Fn(?|i@yTQ5wS zDH#t$AI{*(l1l$Nwy#4Dh+c-TTVQR?4BZT#n_Qn%@DmBXMY8I*FaLj?wj_Q(JVS4R zuRY$USa!2->U!^O8}ykWXvY)d{mx`xfHZlw{^#Sp-?!G*2l0B|Ciq51)oHG#ib~<d zRdFXQIS`FlGZfM%Ej__>G*nwpkGi{8L%3UM3wMwxI9qt0U@<|8q3v-hd=)5a_N@!m zaCTt~kKcJOr@cVD-p9eAkADF-0k3(6-QI8U)+!vx>IY}-^UEZ@kNtT8?*c6EjRh4} z6p)Z!iG0piWRQvBy4hry0oks`Cqi>CPp;4teT*b5-Jm(pQ`<qEQ}7@;wI|qlYPU;T z(!5>gqW5vmZd(&Y3<%_lh|e>bTC>CHqx1x=xoXg)0~_&Zu=kw1Z#<ZDMIQ(x0l(b^ zz8Y~Dqee#0G5WW<7W>WP%f1U-X!Az63ir?i-)z1)Z;cmL_Ht*m4-XuSWMeTPl0!Gv z)LdtXJadS=-NZcYT}lVss)O%}ZhKOC%cu_Fr0(w>uH<_k52s0ph~D%Z4SKwkBw0B$ zOu$nGTl^~@G`0F2e&Ss99c@Q&g3;)Bds_l0I#rn4>{{A(V)ZFzw;pNty|25*pgas{ zMS%l^*kfZnX)Udj&P27wd(Wq?r8*jt?`+kYo>#u}7*ecQ6Z($6jKr>oa`P+2b&f0x za}V;*>kBJ<4V^q01wK5fph5~nXw6*ze?>P{+I8<40xxg@cfD^kholByaQfJ;o9q0t zK9)ajKF0BS9tQ(1kDa`jY0q69VWZphTEW@Y!9yU|$y7NG>HJM&x8U!N6o<MAEt)a& z6#={_=l>MYW46gD(($8*qf*cqPU7!33^H|sp`C2lkBWv3{)Fw~``U)fSz-KOC($g@ zoiiA#Ok}Mu|2mOa_}7R=NRe{0heCouYGRF?3o7M#B2|p|SE-hyE%xDk&S1@x?^VPH zko4sw?`?@E4@o)Tc^`bZ|M{O)A&4lo>kM}TF3aBkR#*i*4CM*(>g3yqkA#f}F{mIx zbMytB96{+i7UCn9IfLC^vLCenDgg@-vX#hca`<Q1Oc_Sze!gl=)6Ox0j-!<Zys@w( zl5}TtV@m9=J?^z0y8^(=I~_OC4mv)liFG{FM}j0?iC8HFU#ajuj<KtFE78;WBJ$wJ z<(&6aUC&4vb(yoKKc2OF-(}`QwckyI1wLp;%K>q}Pk9{XIPc~?P~(N$1DbwJf_TLs zw}R-)VYC!Y3A@Y~><-6(7a8Nuy^re<LU`Rd*9S0$$iR*_MndqLW5atPe|q^UV3c1r z;TTd!gK^dgU7<-R*ADH+xu)!kVz<1Vw&Ry<`Fr}gG++bU_ZTvg>7jiP6#qFXCf4$I zc}QscnbQ1ANK97O^#0x5?4d&c<720*FoBnsB1qnE8`~e`@0~Q;KJOOqXCfao2x1>A z=WiicaN|_A(bP9Mka2-r(Yi^(jSgAv0x<zu-;l&QN!jF&s!L?CTkRi|MV`{5F%=MK zW5XVETja@MX*c;Y>Bv{%Lr6Imu1#}aT~a)~aRVlx&jTzWpM;#DvBcHTqtXA?6|EOS zLKLx;G<a@>58bd);zM%;e~E<&w&54q<H~Fvv6*Ij6I~#k{jRE!qJn_M(=T8%;@6|Y zD)RmDu<*SiU@z}|bkC#bZu8-}!P{ue8sbMn>y~#+?^{)``?Ou1(fi!{JGnT^01Ech zes@_VHb`*iM!o&YlVYy+XccZ6+-ka1Tbl5;=@5YRoxyzmip{RoV@irDL3^jGV@(c! zV00%NSltbcLH+~&Tg!-%!J*G`^X$X)vUA$>QeBnaQ)gd3@&LW6>ac630?mSEBz*@0 z5iv1F)6=Wt>oX4tck?Xb3Rw~43Ym7Tz6E!d|NXJk`|f5=lHlFK{P_<~j;;_}|A_N* zEJi|WC?nHyhsd1=Y*GJidM~#rw2tvyPj8lW?5wz1Z2%vam5r4BkSU;MJxWWgIPIL9 z4}YZtp0G!|8Jx9lJjgvM%hS)Jc>C_Z`BG3uX7K%~M#!*AW^ql!`sCNsEXL3e0a$(r z8kG5y<c?aBOj2Th6JeuYh{hqGNy`5dj0dd(j_Ka_j2;;RE{C_yPbT$RS9%-!B-u2B zVG&s(wKP&1$|1uk%iboD(;&4{gLOk>bFSa*i#zY^m#0e%PQ2;bxrwbMNcGn8nEzPO zAtm%$38~JmFLiJlE44N=`w6>`osOK}jAiMgkDqjr!;-zc=RE%_#J1A~1m><qgQbuI z-EM?(&D1m^RRszh=m*5D#RZj4c2kxOK?@Z$zHDwHcTr`+?|A`FVE>vYKau<Phi42Q zqtBtGb#S+AxL@~n7T^b-%o=CuejcW}M+5a0$E51&XYEU*2eJO-SaAttgqdRmbx?g< zT<q}rU35V)h|t~gUGC?U1u@c$14|+!Jhv6DuEC^sO5~7&bk*-AD6h@0V3>2CjEL&$ zKXz=q-#WH<GkhxMf1<MG{?_&*q)o`*bZ+u602GEtOWQadA&^5>%V}SaojN-0=BoR8 zKFm({UOksYOn&1r)*L3=iQedOix}#9FDM!uiZJqe;vx%Md2Sr3<}kY1V<aA{1A}Ta z{+*MbtvqN^)wyGY7Jq)`2Af8+CiBP#a&OV(HzL=I5ZBeq?h%8J&hzb$(Y$SY1%B34 zhhH=Y4^lhF)>Dns!phd3p29}{yGN7jAAr2%4~M_y0PpMTah5BQC(s8c!5Nx<fR*F( zlmHK9v33W}jCayD>(`93w}?8l-`!av*(G61)zENoxR8Sgy*6qODGSDh4Y~-#0jP7` z7jLJeMItslvaQi*4}8qW%i{SwztjV|!p%%W9>`+d5J{r3as%F}9L~=>XF~Iyp#pYp zhB&5uL8SjU?)=kcVU9;XXTZbd-si<6mR^@bX+ytr6x@nOnwJtL-^D+qBq9Eh<a?v< z?wnRWZ9yorS3mfy;Ooe8Ua}elYJ6r)5WWNTw`LQS8N)kzJ`@HJSnD%lkIy{9dz(N> zG$smWa~(upj#kV^C(Ez*_d9lVdL9UNL2~W)LAexI5Ldw!D9NfIXeu5P7>jb+L<6>G zInH;#n<FMe&npXNea~mC?boBmGO^m;<>}QI*>5m2NrcPbdakTw9tWZy-Pg}{JL1!~ z7d0*LwJ@Vr+C0TYx37!lwGT|ejG310F$lidD}BB3XpPNStdu@j0Mvvj96;ahk2#Y5 zLtfz6!#B|#R-BC4fK8yna`CxBJOnR7y-OUFb9dL~j_WC1$4^{Kwt+mT@<JO8^L$PN zw1D$#>szMcWOCWIa&D28U~)yTqgAV?2{gagAQzW=2u(s9QRV+C$x)`<(9Gp?xz_Bs z5wJfT%Z(|_+IXS`;=ZOjwe-u)_PQQ)%Cfc=01{16>?uk4tl!5tm>bijQxDCcg`2=n z8V~)z5#9Essd<?*;_8GCu(Bz(vD?H@pg=DdsCpmn{%h9q-CGw*E&mT;r*A>#FhkvI zj?MP4mMbo~6}6Ur;9Z+F9FzOh)smjJ=iwm_4M-_(m0ytG8!fl`q3#!AK22Tk761IG z`TeU$uYi3fY?twx^v3Kkz#EtMO;cn9^0`hsL?3_(XUmI#Ev&?yH)(fT0#hSD-fY8> zv;>-5^q@wsZmkp;Egi^5WF=<L*xxJ$7Q6BApC}slRqUFl_voRlxxtErbcA&Mu^N?< zKf1R1VzcO)v6hEyvlPS*)z2B|T2mM|LXwKBF&+*UeAv4{^LwtKQP_0s`oETT6uDu< zV=?sHs~J!8*b_MIFH66n&Ma11JJ2=K3Nd)o_eXNZD_~5vb<TOZ=FT78i>#{7q`>Xd z4gLp<z6{~~d=-f<)*c3}l#{+og|j8&h<i{SCW-HGLP@_G7!^^7eiY-Mz>x_uaDya+ z(S-82$9o(NMRysk9h5Augt>WwWb22Q*%P!j0JtLLCQlEst@2H`-#j!n`h^<{Yku5O zy!vqj7Eqjz(C}Lu_c$_XpaZY=<m)c)9DQ$ImwWElyY80UNPI6}ecsx-S<E#6vORYb z51!9S%9mCjLmziE7eve@Qf;z`(Yo2l_B)JXt~ZEO74THGk<5zEuYJQ2hV#XlUSflv zq4Xn4%jUY^-7a0&LN<S=l*JffnuF_2sRSOCd<9+17myMy!5;8(OWHgiTAYbjjv6as zqzxQuHf}c&C4jdJbyUdC8iAoB*PoG57;9$Y<lJg()p|6iDeLb`gjE!|yfRMBn3>3v z>WX`$ib$=dDpw8T>GQ$w?j&kL<xt638BD!^E~?`0K`nTF%)Rvmt~K6z!t?4bxYcmu zP=fT86GZw1o#}*Yuh9!vU`T0@Usi~f%+{gAmz$7{N3*fE4O;zd;;Xz5$9K%$_tSvA zZvTxf9(MY`udNQ7kjDN$f3jJ#5N#*<qxxM&-My_TRx~)kFyx4@fPALk5F=VYp}QXe zZF8Pg^>L<%O4-+ZxN$r8`jsK5Td1uEoS}sKdLrVSIp66PgD|rL|J~)h6y%ZD88!x8 z-S-q-c$tnMR)S<m-OCFN->izSp_D$2mppH8sW$-R!L}&eI7tdRzz2-AaAj|-7TSIy zc7FuP)?Sb+%oHl$cm6Ti{_39#{JY@SO&A|Ixm_X)azRhk$I-l%U4iYKn}Ha)b3vXu zo-W^0Vnfdh22R8FhXNYaJJ~4PCbjQh)wTX|<1eC&Mx=O{K`iJwb{|6YydJXjF2}FG zeESBIP;5hxZzWbrmU+SoNEe9;kb%qKg6(-nUzsE5S3o>mOzRz*&B;pE0@8D5>O5S~ zw@{BwISl?hD)^CJC4r6DYi^au3RhXakgl;oF9+n~^hCs-4W4;Cm<HwN7eAe0z@ZMc zd*0;0f&1H!w*^klh-PvLA(Uu5iNZLtX}NM`Pv|x<#s}?^IUh@hy@phQ`?%k92d3Qn ze^!}%4r+ZY0~!qKlg>$0&+|h^r|Z|ZACt^SqEZ5>d`mMQIn$gG%onht;%aYz`XBS1 zMZXZqM)}K2z#nL0bl;Se?^-uQ4GDW#M4MMYOR@5vAT|Vr)?bC#)ew%TnFv7yi<nKr zD%py(z@a@ot8{#Eh$(fMgX=1`V2*5FHJNIt%Sd^vJ&Yh(o9q<~1!~4-Qx8}U7VNEE zpINt|JH$w6PGhwqNcw@M(5Ncwe}0wxD!3@=D%u0t7J|#L8rXKo3ynJ1q2K6)c<ZqJ zquXIIbeJ#dTOYXB(KbTDn9*e%&)}jL-Ku4l=+6!JOb*?Tbi)6!9WaRm{?{*;!Z%%i z3SL_uet#5xu0;!<)kwSWHc#V|qOCC^P}H^(Z|(}=Ldw43^c)jU_bjmK>pYg%1E4@G zmRrk}DMSbBHkkK^dco*XVYe7prSHirn^e$NyeX}b`4i%#5%lj9pItyl4>TC{-z!O- zAWHu8*NLrtrCub6#JqxyQ!6}FaSG*X&6pGg?r;2x5}?q)YLd-{ZA%wkkaWl#Zo7nO ztQd^i9SU01fa6h5rn;bE`1THvO>cm<ALE2!Y8<$r3w!VJXvX&M`ww+s!+7lGY7Xoj zI%8#5J1>%$U_ttJrZ1s$3`E#U=%kab@;juUUxiM|QW}^_1hzTXA1^ST7gYN+y={~6 zA_gj+FcoW#Hc)5XqauQ3e{}>i#QAJ!^^NV=gG^DC*ly0<nJ`&9xiV^aOfa&wfvD-J zV|I@GJx|%7+!rAuU)!vx<>aH}EptU{VvaFLeTexel}GEL$RHaTxfTiN0jE3dMXt8n ze=8oB6{;81W=wt2f8{O&ptNBvi`>eEXnvD)g2i}gpa3d9)xQcnP-&t)f>w)-zavh4 zp>W;{86E`_mxRnA%t!t4a2-ey8Zk8$eCW<9N9_5V8m^4xuU?>3w?b1>uDIXkUemw+ z%PtLa(Iq&NR6nAIcw~(;hquV#o{VV6En<0#S2q3Pa*S|n)<oi@;8Mk#bUeRVJ$(zt zGK`JMlz%Q}mx?Y%!P3<J+SyD@#XrFQ-?oL@whZtZin$0<X6_4Mc#|albw-v&F4u0~ z<ZXBDR@9s3H=5C}8XH+%-Y$-=cu)bsUu;v<BF0~kyRYqiVU4g6IPpSG!K0GSO8tVR zQizG95!0>a1kzIOFItm1>jU@hK^_Bt{_(!(N#U@N)%<B6V8w{lHTG9gjc#b1uXpX( zz0BXcjRS4Sns6gHi|Yy6DiubDoM@yghMrfj=9uG=Vb)X+Yh7rOuh!v+cEoI&-vJfB z!PL_iAtjjOx1DA@*E>_ObEphz$+-$(JVzkoPhpRub>JxwH%6JQBWdAcD`90s#@xXk zWylOxBP&?xW%KD?O~0w<23(IIP35t*7#Q!7e>?4j%%4(}efNozPN(^cSs`ycyks6M zjbOpu?nVWhFifE>Kz*}~z=(>5a7RvK1w+${_7p|BdRT-ez^t!A!mG}aH;8>{nOx`z zz7)1VN4%s`MNl9LgBRAtm3rw$t+p9)(Oml_N+F>c1E3ivI?lKjl;A#bX`Mg0{lA$6 z+(P@~$6iDKh`u^zw^@~xXoBl+t`T55wsTmXr!0d>wv&>KLm+Doek0S!5BZEK0_JR( z=FB-Fy_aB_5SgIcgkV23Uc8s4Fiu=3&%$WD0$LPs1pLRMzK@bQVsLohs}m{4;aNr^ z+!O=eU}F3x_%}Q2%|J~Nf<=42(>HRqr67VZ4%Q(7GpliqEN?{VE(d;~*!vVdcLH|6 zvG03OO!KTvLXhT6n&QPOTIGLGY0eIDJ=nk=Rg;B(vU#sP+|+5d;@gq=h#Gw=N&8iJ zAuK|+f-#5vO1OtPbdE4AWEIFk2dRXOaV}bm>14?ZR_mK?2Cev8Z8J3-^kzvk7tq3> zU|60FQO$S88{iwF9q@KKd$z@M<0N6ax5TQ`KoW=x4uAc28?Qk(R=(2}FIhR2?<A*- z-&nz#^<`cht2QvTiBrkDC@+0g@_qJ>HNVQ1U&;HyS_6>tUv)Q0qR(zxX$2LN=t9iB z#rhvzEFcdf_;BVTWnNfQ!`O2A3L{IKm9_ecZ?Sv&1xgsNfyaUe*@rG_WbCq<Ttd~s zHC5HGJq6e$qUb=~GdSxS+f`mzFAG$~Nf-afq~kg~Lv*yr_{CtUK6zMt-B<nUbGn@z z)*K)|JlGU@5XmzwI^#L18x86rF9x~pM@sTfr&$JVwlS5@{;XP@rGhzmujvxkRW6?$ zR>M^vh06dp>jV?L<40fE5IN&&NGrc*E~_ZaR>Bxs=;TT2jdM{<ke{BmOay-l`WWTn z^rQMJRHDk^rWaZ$v*?LhYy;(YTmK04%)DdmA7QLHVUCZ%dmz+?>8v?`6v$`suYgge z$}xm3YWow9$b{FhYotP3BBdys9(Gp#`cFaXSYiCkCP%<y-LWN_53XWg6PI1e@*?T| z-o%h_XAr75asrlMA5@p#IEWkZ6h#g^e4v2lQ}Sku<qgtzH#gwPf9%|rDSp@_oZGpo zIi~ldAww~a<dAH#xH}hBkg%zg$UKAyqunYjF`WaxbyF~ld+ddMDT$XWVl>U1r?LC& zlDfd>KzyvIqjozzG&d>jDnIP!!0OziaUL_2*LnY?4=%`{?_Zb#zlH=SrDR}jj>k>5 zNF_JV%w?0(bQ@aj+4NGTK#uSR+};p7YyR5w#`$V`js&9XW~JjdR`!YB6hk0D_kG!r z2Ycj|4Fa0_IO&nWLYnX=D-{YJtWTYbBB6b|?-=DxkAhzlVKbE9&|UIb&%u5z?q4kd zT`G}OKO}y+Me0;5C-Al?ec#I46<X=5nJJ}xxzHxbH_0HI&5U{|sjPf>cJ|r+Tr4M6 zx8)2@A5XkIqK}TbpDMJ64B+r*Q3&^;vV_B`LB#EL%VQg3Ky&6KL!(KFU9w4QaTX~2 z?V{E^5g=evNHNx#t;rQW94!28Z_2h4VXgW@lOP+P-yZUJ_XeV*+yW{g(1#0!Vh`Ch zQQ>l^P|KpzC8;9x*|<=R23JzKh)PUoN;7BIWCyYCa3MyQX^RHhh@kt&qRjQjy3R@E z;oRV59UJq5<IIl39UpQ>Y&;b18`=10t$$YCUG?nQV#wMtL{{6xL8vS3)ixf0yz$VH zB9&*h6~c>zkM=@<;e=|g@3W*&L-B%d6@(re+V97|Kjx75`MM?E2;*}d{kz+0K(>4z z^CCO~H+m5_cH1xWs1e>HSb2{UMl7vLUAKEY0ax*(uS@2-3hkGdBOo;2oyK05_kNm- zg@_mFt=iYys_nPM7c`dMiL(PrZBqa1Jg;5geg_Z3TZUJ&uMc0Zy6*$eM^!+Vq5h_j z*Zuyo$ZH1aQw^N(<&}Wgq~X(r_H@@}tkG)|akukqTG0Cau3U`ranuo>6^92QP6SKK z;J(po*~d~y49A1;P1VQfyx~Jp5X<Z)En*QZ8O7H~XUOlI0a+L`@4U4#x&OMeR#KTj z0L3bQpAov~tA=UzI7tRDEVRyc*Cc9fa$e2Vn$-h&0dfwIlnb7K1DXwYXMZh)winp{ zG$Q-}yq7Q%bp835qpK<ON?w(FTblQ?<N_<&FJL|31PM*Vt8V>e@q<AseJ0ZBXm6f$ zo$q1BjOF8^E_qyP=t(+&RN3!Bd9q97$_(yBJ10vhe?EzH-LKj+5=`<=!#J?O#Cr#v zs@POFZfT@cXt^Lto>KO>c)PtWGJ3?zT8)~|%i8wUGiVp^dA$kn_J3}eJ`Vuly`K;M z@$xToU`_?MeXzA=`FQ5PR-OH`_{9VwdC!=>xFF5VRQiwyWl89hhgftPaUK>IUH;8% zuCmer<IMcd=x8RK>u=>|xMo9H`Q*=fNLLe%#-Rxf_9yQu8=KF4h9vynyC0n*up@6m zhiA}LgIXQHBKHGGESK#*+a|-ky*@TzS6}cj+Eqp4gUi){{lm2$%SLCbM~(`-oM_3; zb%~w8d+GYD%8nIYMviYLxZ6q5q4zy6d#&?TpbvrM2^imhLTd5?l~>@upT^wvloepe zyqS(sinn{oU(nu&^NLGz@#bvUc{|m;oc9sme)Vr#mC1d>FaE<!z)IwD-)dUu9ZsCK z?$6Mv%gLN}o7biD#di4g)`Khd#&3qY0Pvnm!0HnEffq>dkwQ}$GsTGU{5;~eBm5+X zy!jvE&w`oMG2gqT*%b3wl^wTF<-?!^4#t6LlqAg`Pm2Wl=()!>PHQALaM0fLK;Ul9 zb?I((K79bwO25N5>iHjraxT5sRf)9cyV_*)8|d)>uXgrqLGb3xHI!_^GTyap%Y@(H za^N%#;hvkO*>bP7&Fx9C@=#lM>k%azv3Aw$^q$4(?LK%=oY(choSm=uw@;g<(Se{x zy)EhLss(s1W&&h%biCL*DT$|4wXXkkzirx3SG%$1BFGuW3Ys``bUq&|dwkknJqmmA zk7V(C_364Eup=Tqb4^VME^ZH`7mJ=xmw`O_5qw$KVO9m8I<@aaUEx2fjYG`;)Jv*I z6W}>^J-jj8ZREX)=kyxFZ7Lc4tR1M2ouIVIOfQ9+Qo~Dp^Ibn1+&7J9yW;UJPq^Rc zB`eMA@E_spElBC|SSYRC*(sVO;IL}LV^4T0TjzR0p63xL?a}7G-`VBr6EE_p0W+S- z5V37m=9v@4OK+(V6h)*$>X#)DvHrtx8Cz<nWPJH)%r)()OjzB?!FE9!e0jeJ4)n>Q z!--9fTrlQo_r0@Y%`sMH_Pn`<dB0{My_$aQcf5W^%Kf-x0bd=W<s6M|@vOMXzeh<I z7!&N1q@qWXlVP*Lr+*_t5bfinn@#3F$K$haf#eSfkilMi=V`;+dU<#z|Nl___6abt zHweNUVALLRL!s+1El7pzv?{F?sWyLpX^C-awUzp*zkW5c2lemk@TGDN|KI@P)Re<z z-A4wDV#C4jc~>PR+k0S}(>r7tO`Om4h4Zeuo<i9R=QvViZ`#0?*rezA_np^KX)jL@ zSM(8VxKq(PVB7OaP+%w<=>a<%S>3&?tnFhUS++fb%c%@OpMTB7=T!9~Z^FbsV@J^8 zl<gjs)clV|{ra){puDy)kl|C~GI}loJ00D6y+1oDW5_8P=u-^Y$*4$T#Rs}#OG#pQ zr>Pa%KN~f2pTp?b?>vBBQcMQlNKg#8d3u+(cD1775%ZJ&lgpT}OAHn}IZ2QwKO(jC z9yDL(o|-lVh^w{r@FXVT$wevtdLHygv_16utmeEE3p?HOGf%KqAY3HO3H6obzM4>v zXNA5wHX3*))5ZH<O1F>X0M9=#75yUOeIIRtUjRwx(#Fm(=4s>Ehq)20tA~2L-LWdp zyBi~qXG8H$h3^F8cG7K!*=R!7UX?j$984m=L_A@Vn0~yFUsScO<^&)$>M67;-7HuM zkG8u~mAUr}<~>2llX&eU`R+H5&>>1YKMJay@0(+~zB9w}zWBWtyTS2O2?RdXE<pVp zlJiqR59xhLBB>5Diq{QP8vgBx=Ug$s>{DLJXTL0Frww|c_qJ!Mv1X%2*OovBp_fTq zW5g=Tl6db>bb?5&_@6X0S&RN;KJ6m7dmtjR_+BT)v-frkjZfoRLk{{KH$*sfT6x`^ z?xaPWkqC{qkAQa<hDe8SIO>B-JBBBhdxo~E>YV>ga4QD7f;=8~C`s*WeP60JbT{Y_ zs~WoNE{{X-_?~v+Rh0Z8hcHrox^Awu+un|N@}0A3r>@(T{gQ7Q1s1q>n|g;p!jD;u zsEE{M{-FZfbmhd415yJ?sXE1uxesdhtG8C&%=yIg(4*Yr7NP9;+p)WWvoJcJE!>po z`iii#Eq`*?xnbGm*I8(Vsc6PzkW#_~n{0T&Uk0cCJQj7|Gc5(LTtw9UWI+u#-QeaQ zFNO8U;*V?Se-)Vb>O39q>mHBv?CQH;qo-<;E~f7MR$?SZ&5=1oJ|%Z{Os}2yQm1R^ z6ST?kpu!cz)Qt@8>aQ3j0(+=xH-6l65M6**-&62Zu{7j<IA`$mT;cKho#?ugdZH7w zxt(}9biXmuY(P53ap-LyE}aIX7(Lc#KQ<^Qzh32qMhO(RJ>kUN8x}1{NctAyVIzXd z4GyFdvYWv$ci2O^zcQ)`)hlGJ*Oq3-|H>TMoh8dFU|Gfm3SLRWBv^d15LyUg-+$lP zujK{-2?CsvgEc=zCS<%2!~+<Ho7+92Fb|o5Lk|GAM3=<9QQ!J_vVTmg<3LKQhtoPr zUDxd8kn%JiUeD0$5@bV8s;lG2Fp{&B8^(*{l+$jYp5q(!@^(1_JZXS+3~^Qi=`VWd zF|y+v21bV-RTrx%AYyQybh)EnRyR-2#3T=aq&!eiJ=9c<0{*b@XxO!P==D0W*Ju3k zbw1a1eIS*@$@4O&Ni?kiwV%QuQ<<vII0~*oe#y-Z#lK`uIlT8}NOX=o&_X4bToNY1 zE6U~MmX?)1Q0tl4_l7b_@w%nB)u5z<S9Ca6-t@pAUhSde#*yO(S!>q?JWCQ%!sC<a zgT6HD?wO6}S%3Jlp}}<l+K*jdz!>l-OS?U}LI&oZDWC`8sBgMOu?o|i`CqC`dn^v* z&=(6U7r%gyv5Dxnq<I(9yFUq0up9S61-7VNT4FIAG>%&RwnA-wV&ySH9(hXcq;2gl zGgCR6hpIQn7bQq#?he^}PH4=x1AdM<Z4b9m&r9PE3qEy_Cg}2C5>n;3yPgfwBQRcl zne5CMLT1m`N{J~cnLKGenGN=@zb5F(<hbv`ZZDf4%1Izq_D=T^gYwH1ykD9OLe&Kt zT9V?aA!|cXL>b(v<MN*9cryw0)-?-J6zu;ps=0%x3vF>_x&BHi1Xns;Y@snJW&8ef zYWO(38OJI+r4hb<Iyy}2X}PPQ37DG_X?VMz{Y@lvbC>sVaN^n-^K>rd^|n}d;eQ_! zaQ3Nl2nN{l^L;E8k-nVSjYIkE|7&)9eOv?uyoWeW2UzNI#v8r(i98j)1C_sfdHb7l zU+L$3tgh3L=ua86x&L!_4SUnWI9RCD`RDQW1^XT)+9&+1&yOl=gcHm^@ofM1E}jZt z_sIa7eJv|-A+wFW<>+?5nryMQSivaQtI*(|=HOn6v<z(2M^5_t4Ou1a5;9nBB1g}F zOlnZ!*XYl0SV!f2jPQSEXJ-ChT1iR5XHpt(v^Df{2{j1SlqpjVg<UVUwnmR$PzrwJ zjK4o^zuD#Sx?ae3dR~cbZFRB>1YD_ixw3+WPIoDikdkRw1TRl}UrGJ@7Gcl={-KRd zMMbpv9$qg!)SmgBZJcqrzh+O1_=jja8XY*kKOg#Rymmgc{iA+3>lv(eB4f6EQUlb{ z>Q_SG2Nxsbt(SmS#x4iu9!sylSKPIlqIzlFQR@ey7uFEwUvNYd6*Vot=oJ3czg?9= zk5YXVR&X+Vu7iVe7n+G4Mx$d#GxpsugHm-v7yrqXy=MS{OVdy((M(+qr!J1=0-kNz z>ML<yRZMr{d|=e5pcj)6(;Zw~H*${kzO36Bki6(N)^YnAo5jPc-$U;cL8a*mTx{)~ zYz_$qcRx{(c1gE;J>_Hww8<95rS;wjWY0+myIkmP7%H_HPCgP&=j~Yf{f-yvns#Lo z9)ZG(qaDB~tG4`S%gC!?(+H@sNQtEwwGk3yq8o+I9lJ{L=X2-zJD8Qq!SOa}>i!8o zRsXTNRh;Ts_*~C#pc9xU#;fz1=MTRr{_)=xn%)c@3(2Rt$Wv6Q!mg1qM=l0m2p|hE z{uz66Ra(e}Wi&xFJ_h<Q8yH>>uX7drjKm=#W_sM2SH7O{!}C01=mp-7Cixyke2{(W zs(iVRD`;0iu6eeW^ErE`Mgeh1cq}R_nhpjX6J>etMC(JEE8c;wq&}H)$!~U!904~l znb-a#{+D!9^8L44H~I@!o{wkCPx~TQV&*QnYWEej0kO}|Znm+LvSE_Zi6?kID&xFO zYd%B93K6E&C&6NC^&tMPWwezSjZa14pbfEs2yh0a;d0ySBOKAB8G=(<V;w`5Ck&^a z_P`TNUm0!tD>$Z&lcmsSmh-oLS#4}-cz!UF3R8+g&?XdvDg4V#-$p4mMe>wt!@=-+ z9Y@0;wqx7qo!$1{*y%Jzs`lA{5UK9Pc87uQerwM#RQ$$>Us>8hgkz&eyNNq>{l<$y za+#`jz2|Ax8T0++9UVMN0~UdBqn_*b0Ss{R=@u#=!m-;WF2ph`W6S(I;v)MsX2SQX zngWU&&$5GjT{K&vzm>pQLf<8JDip7<5<FLHlR-*SQHCN&o!_}>Up`tlKI&rhJ(4EY z@^{gLGviVyU%o8-5mz%o=t~qiZ<3fWkY6t!tT%>s#*lWzgbM6eBV*D95a1|$!{L!d z^MYiCu1|c5wbR$@3W-)@30*ey%yk0c@>J<vAIVRHBVA>zJx_e<)V8(Ru?jkFQ2DtO z7`A+`(%^-6t{CNaHJ<oMuUL!?5!8$=@;}#b0ZHnuh9&_g=@Y+7)PoPmY|KUe&AC=3 zJ^{4Q{p(5e4JybI&6c0<Uf9RV0pD#%qr22@vqC6BB8HKjoaY?r#SNgKOG@~ppKl(l z`IWTI$gCq@1h5Mfe7!QYekdl1Fch!+rKC@%pbPf(wYIkY+Jfi^gby5rE(TPw)nu@s zRj>kyY5`sOTTTS5R|{%iL0xfD@`jgfsEu`FYLM1ZML~dnkspfCHi@PK>R(~V;ueU) zw$dLiq@u%HV8m_#x^F({A8SrLK3w>+bm?wOedPfD&$U<Q-~2c1L6@D^4${gkjix^~ zdZ$m_<ekV&xD{yx@)dph%5?~G>kcNyw$^B)_@wS56QvUi^NdhpVNq4^v41>9uxQ~Y z6FX{kn4$R)6^3?+6q-d9Y;Z*}yb$V9D>vd$60&|<sl+uk#PjwKg<;Q5rzYAJ-GpH0 z+vkokt-x^uZD4sSd&kqSUxfb)9^$NSQn>d-@=@f4tzzz4?-CbZJ+kC}Gy;f!@>=0N zLws{){%!qr+c389@{wW~DVjowpCw9zqaWABi5+^dol^L|AdzMu*%&DmXX4a8RdcXL zVnlB_PKPnMlAg9}@Mr%BDNBZT32lr<ok+iLfBT6bIg(I0YO)^iK|n#BO+$~8JThc- zVW<V9+4m9&xiG92qG7}F^}HDkE)Rm*SZHq<M$czLeq_>L;DT4A??12^T%-yK$_KT3 zz;o$wk!v4U#=pgp%>3P}UNq122C=CUgc;-XBa)G2rUdO2PGg)NPD<lauoXI!28lM% zv#BTa7sDqj)khVn7FC8}>A~>S@+1q0bKNK)7O?J0JP@iQH^5>PHAIgQVM5vp7ZRVe z3(=R$zW!S&!Y(5LWgeH7OGsuY2#E>aP~x@X4aUU7h^>)R-uxu}<#GQvuA*t<$3&g< zhwH25o8gD?IDE9y+_#H$YeWC<)eOrPLsZsp*Jh9!P@@Z)Co8y=o3?D+J1Y4F2w0UR zMc;9uQPHs=6$R1kS&@DlV@thdlV$2hQoj|yL&A$on8~LirqC&7J1%%fl<Jy77pnl_ zh=vCs$MZE1k#KBdfW+j^*qPx$X_&zc8j340<tUkC4Xm=s)V$(Fj8)-7`ev|2SC4bF z*+uB`C|dh%d^ZS`7&JZieowJui)(>a?h@BBt=K_O*d}lfBvha7vac1V1jiKjRdYBc z)q;Yf3g;sERn7o;7?!6-1#AMNq>UI}fh@258Bt0cREY}fVCT2+LEZj8!QX@wRl1VT zHZe0h`ZJWvB?DK&R=i~UzfnSmQMWwQ#u<Cq4Mc4sPz<<`@H*Rm(_w_4E1n4k2xl&3 zdLnXyPF$@F51+YA<mKT}<%-Zt7)?k*L)KB;n08{HDDuV1<851%8Kep#v7zW$37J2- z8@gYLQ<_Dtou8xn-<dv*BB`nnUsX}A;`ObB0g!hPG{56}Q#68>ah{3PF|%2pLmuY9 z`M8Ac>CRU@eSW<G!M3vS>YT-{NH~f(6@!_T<j~UUIN5>)zDM&U+5#%1`-r6tgHGSC zLg499K?JDrrM@6XqCY<n^>ZpoUVq^+gKwhH(gdH<N5sR_zUGSCYwMmE{Ba%7Fs{mO zw1(W`L&TwlE;6se&V3Gzph)44+3Aw53J(bhO!*DfF!ZhTQOb_Wf|@Mc($}c{yAch@ zZ|!Yq(es11Nb<kXp~q-@dR6{<mggyd<PPn)wa%diFlkZ8=VRHhz%BHs3t{hwb9Tne zTElk7shDpQYROl?OhDbtN*5-J1+OWgi-d*cyU(@=&&^Iw%ZbfcV`2wO(x1h~g!a_H zGNF^ttGC0rlWi5?Ab1(5GGS}Fn7b3=>{6CbYX=;0H)gK*1_~YcLO}u+l7c9?Nwx@a z71!l_`~v}3>$D>_7TtY{b??YmT`mTh>I9HGJ6%qN`FGWjyuZ&l(!ITe0Qq&eMAcXW zP*Yu!?s7@Ta(S-Csc>rX_0*Qg7^j_@4+R!F_Jm{d?kbRvyqwZn5`d4+m^%HfGB2SX zzy@C)Tck==z8f;)!c}kcM@3L>=XL1I!=^f`m@3ylm8%M6_(<iXRhl_uX?SBT@d50O zE)<?^Rrl^as?39o>OqQf0Js@Ni6R&#uaYQAN>Q9p8AA~)a4Cf>%5~J2PrW1-Ddk&_ zkuvxl(H+nv7rj_r1gocdK-@Q`62sJA`S1Au1Tf;zE}tLI@oIWEP}Rc_&k(fu^jJ3P zx(J1pvy!bqizE(siU$2wG=yU(A?`=+NjhNa!`PZqUzoNyt8Lh7%T?bS%#@}m)E!1x z6+}dOSv_@*bSN6G6i&a?N&UkXPf?{w4|p}hlQ#2MyUB{8W;<6s^GJUrJ=vE0`7Z(# zA}I&V#e;E_qyAk$U3lQ;p^ixYe<;X@G?OS-yQlEi!B#|#ijKxZzhSIX2CS2q5VSo_ zUi|i(yN32lw{>n7T%2Bn`UM?BHsd9{t)?7aVjwS7Y?i4O`2w$Q6W{AEdnc_Rj}6{T zR>xnBox_~{zxA}f$~ql{uAT0G`IE=o{YPJ2evEpqZsa*aXKIFij@-1P^CE?f1W0vF zdm9}TKHA63%-ZoOW!dy`d9_;Dz+c6pJ$ZZCM11*69Oib8|D<}szb``=`ZKY-U#~Q8 z@k~O4q@ll*f}~5ka_wp_E7$1h90t6>Y#QBwVO^=CYYkJHdvgEwBkzrzx>I@YwYz+3 zCIQ2nq<>$-`d{$&YbhwLSIx!GG1^0_E=aakYNfcX+KuV5;aZuI9tDLU1^#C-8Puy% znWWapPu`x*bh)&LeNQaoWX(@a1_wi5KMr5%U)QtM`+IZC0z*k(NaBvp^13CGLcgTm zH!^1k=b+V};<_3dcfarqGugA21U(y~pFEPdKleMF_3%m3+rp*QrYOiyk7j^!PUW}S zzBgJ6hQVY4+6aCGYuB4bZ@-gamu0m1B-FrFq-yJKJdq5e0IAy+DmTOj$Lq8=I-p4X z+jjb6av7F|2m~LD1Pc|&%uk1;pRrm?4<^Us)OMiIxPQX~rI7<Y=vb{%0~HOF13j_^ zGYIoLMI?BN)@uW>_G!!<`;<OoQgaT>daHjAa<VT-n!U<_8;joc5Vb-uA9^sV&w=d( z45hxOy3<DQ46VFwV~-pGd&p?Honegx_PX{k<Ycw|z?-p{_1C>RSWAK7c)uwV+;qN6 z#i&)t6oLlG0`kAO^EnX(D^&TsbYdRq3Z#X+TxK6Tx||!sS<=PBd?qdD&Jn}2rehvP zcdv^dmSPr{BF~gCq+ZrvMg_P{o^n88%ZTrdA7dB<yUHJ~aS>CR6+C27O`H}|i6sXe z1-AP%S^8DXE!Ph|bpiDj8et=H;z?}KkJX8)sEk1*>`p19WUwFJ?+vyTJu-~#S`-DM zZUfDB->|5EfY0jnIhpcm@+*R@50ISpFyN%6gU-+Gm2y~YCfY!++z)vfe+2B|V+$7| zsd)+oW!Zc}3CPn6p`B)Qq7*MI9u|_Y4-tUavj__?c+;N3w>!Vk1a<0r9a%H}^unK= z+k9n~T@?Ieho5#l90;tY6wAdYo2%3%iNfH(W;LR)Y*{jPu5MJzBNA15TL3-Xx0<>r ztslY8dv&9qp6ujWO-<M(^8v+`gDiIArp>Qwm|6#p`LQhmQ42<x(2ml+M-}$9M$Y=Y z%a=1k%%vTd&U*q;?@ii3WXDTj5mjp~Df=caN!JdaYvEqci;$J_G(xPjAEMSC9W@PG z0Avb)K9W`jPzKGCoITu0yx=ewX~v#&soonfret!K%mtdpcQnu}cK1C~jn|Ew^(Bmp zfWWmCzFy(3>soViKk~Y!M4BMTX1Nqrde1($e!?>eOf1IJ+4w4MCEH9^D7aPH&A!9N zT>ohbO(^#Ho7{zar|ulWt@V>ZF-{-Ex%<6At`|fW^~9sKM6;$O0iPbKAuY1|?kfG7 z@sSH>Uq3UmfH0`^b>=5sS1RclN7>Qq0{Fqxaf4sS<tIR$w9mGliT_b4Ki8;i#hXyu zP(e((q(2cyP5oRXo_TAyxbL#O?_w#KSlg^LTZC)3_e0&r$@E@0{CRCfhD3$cEnCR> zZ{8~<77$_R$J8VtmI4F(oLY_)DiE7cRtF*tGJIf@gOQjJy@G<(6{i{wx-o{^1=5|p z10c&Up0N88vcoBnB;rv#TaC=^1ZkNceHT}<YT{r9n6reGNm8p;igUYup<)jh)>>=t zH3YsQ5eR^7Ly|-(oo;4yIDvcQT-fod`7I-}{o}kjMLnejQDgm~mSC=de!WP|sJL<G zCR(q<#V;O}^U!qY^oSXhjPp-_^J}!Hbeg`k(;24nwnj4inQMUpNBe38JeaXmeMxx_ z-6Ct5!fNXowMO|LUtk6$K}gai+@<|#9DYtf{T|)i4g06Pa#XT;fmFq`m;Y3{B_eWQ ziY4wB|8FwjciWnDS!*Zu{h>6P*E=H}CwpZK?fq(N%Ddb^=2{HY?P6={WW?H@slEF~ z4LBBZMwQt6=!YN+i`N<>!%NbS5~{lH9%A)CW=nbCU55AbGLjv&2aC&EYxJ|(8m_Ev zugHJ_S$}umS-myc5RCW!*0z7L(l<P^(b5Q)q$a0%2p1J@$7K?qOWAc}4Q-N9lQJU3 zia`gj*!K?k{=Sv(<B}?P^TEL?nmB2-Ozj=ojn<a<D5Wq*P}JeeOkMDkdpHVd3*%5t z9bqew*{YqG{rd<r*gCU2?s7d3d*tzcR%1z|nPiygAkobGH32BOwWz8J#XP+X52fN| zVqQH>zf`i*jcP-bk8k`=OEfL4*^eHbJR--RlO)$~+|tu)xormMXtDlVei#T-yHiCW z2%n3<;#?0?V;I};JvFSUHg@ULcId10Jc;xjh$Pq)NR}NK4NgeU=3kFqx~BaqQK4kE z0~hyS*{^ufaVG4^550g=xnhzwnN;-Ac{zjQsMI%)ev`tXr@Ung^1DluF#da&>lx_4 z`TWNX%x;Fpm{(X_rqJV0x;q;9*859c0IR4tU5s_li&6ozew0xUUzZM*#y-!G$=xY# zz2c6rwOJ1;2fWQW>GPJ*?fB_4vzs#kJZFpgiMS<I&ucx1i6vBp&w29!vEc1BvsGth zARN*LQreEtRqbeG>H=|bOr>(XZClDEq-H3EpPj^X`l4z|4RnQIU{G*V?JLzLq}x~& z`OAum&j=RC$R<kT;)S?}cAsXIwOBnuT@W3<KzT3^iRdHi-V!jVL&xJqB-4eMI#7ir z@_&-S(t37eMexmBhc^yT^2USR$8grm!lZT(OaJr3L8lPDE(=$;uB&*zAalUzve)(q zczXw8iOIB31NkJ0XPnN5aeJTb<lW1-M6TMITBzm4aq!cdDcIm68$5inwjXiJd4-<} z=tzB?rdE>%PKa5Vf<)DsY$}V=uah=B2a|F@!$dMtP9*WlN#&)txzle6pfjbxrKY2E zuYT>`qYNdF$Ez{|C51FPs5$jCK6Ws{Juc1DdVn@Yo$twrWfatGv)pWxnc);=-UHZ{ zYH6S4ZJBU2_+oD~Ry6;AQ>q!qbgZ5`TVPMvjK~zV%S>FA>B?J+y*3q&C6*+O;Eh0# z<9mzCQSs$298#|5k3U)@U{i&>@L+Hka_`$l@W8UZAlGgP8V>vzumn4ck@5~Van3Ec z<V@@UgEN01i<|&cK{pU#DnEgbN}Mj&v77ghCl@0%0_Wj;z)F}o$Hh+Z4*Ltnv_~%5 z>zZTAMi(3CAP#gAk6$p$8(tx1J%aiAwpm5Qs80p3#fo6CST7=CF~cQ`8gH(ct6AJE zbXTyYuW|1P4%uv?xNCrB>J<@ZjgidYC5S!l`gEnn&{<6<XK&b3U^#XMc;K3bV-;n? zllNU{jgDe{+hvH3DjCj*u8i08z^|10L2pZy_>9z&4PD$OX{%oetv_4ejWX0!aLLt4 zlk8eXgH006PC^<)_B&J1P>+Bk`Gh&UyFTnDPL?m~YndcWu_bg&%Ewyf`IUm?MJ>t_ zjR@V>1bs|J6fB;<$B;kSzXN3T>v+4F-p(@~CEza+aoTQew|RhoLS4pm*YhL-zh{R< z4kFD%c*UW3-(lx#=re~e57|fzyf3e90`-s$RC&)bgXZ)KLV}(>Q9p#0E@`Kr!HA3* zZ{LXH3-W6L1j$rwbkxy}n94z}D7^8MD!lP{v;@;5!st#NK-qq*cxIK@lfNr*`j-fq zR)Jgt(xh6ILqrc5bjks?Q}3};hKQDQfR)x?-e$v2rVn~;(nujV@{AUMi(F`YgTUPX zyjxD1$G+1orEj&x$#Z+JCh8`$GhBZWzm|?;a(U9<H+aVox9&8ODsKL?lQx50D((q7 zNoNL55xR|{!U?`vbCyY*mup<khnMhebugc8vLk}&{IV|!aHn!Y);$QOz)F06mIFw2 za0*Dw+18h_stR`cs-mo8;#ZKdcC^t{d5`HMRdBJ+QE{xzghGL2L4~{r(s_n^IZ)cp zBbFGKlFV=y`+=PuZ-N=?O*^&^`R>(U4qhg!C&zvgqH+!WkB|~gWd7re%y0>S=X|Z^ zGJ<34V1`OqZp>b8356od=qVMAtmq#`5F@HBIDITi6o2oIvV@&8W^RE?L$7+Hg;a`_ zb!s!7c-YC2=RifXQ_92GYGd4Ja|bGaBt3i@_Rnq(%uw*aLj5dn10;)u2k{^CSkwi< z7E!M9V-&+E*@2I+1u|Em=tw~d^Iw~AH))utS7@91mcvus&frpOMGXDEzi|}Ez=|KD zX_?Yh=>YhqmU)&$MV-f$zQkkx$6$T`mVetTOAkL*uXPgax2M0CAJgV0d)(GS0w4@F zV)x~>$0A$0&XQ(gJ`xjJQs}eQi2KeMEY1j}6>oh2jUG$%oKK6hMW<3kTe#!Q>xPY) zo{S`XA4Gs7LFWmgpO70FQXgK$VqMkJUllFbfzsnBNkHUK&QLP?>Q3%*<XmwD&kVHv zMsD%S)JR1AO&qTZpD8Y^++F8GgU0v>Q|P-!sBI!-f|qY|&R~_ygw_{iwTNnH<A_w* z_iEbV5#e!OOj)gp(!!|BIrpE!$NXB|5(92OP5BUo72qg}U%kywVh>t_VM|I2YlV84 z=_>7m#q;ADAlZVUgYjc&V}TWQbLjfEh2#ZkbnrS~RPt!_lKOaH{JD3BeWyGOyA<8Z zH&(F>0~$<vSoC>CERG0}<1rNPH~M*-w7jR#fdii*Wj-i!Gav^mIKFrCOJ?P#HE2Te zh~5$VAG(;R*MymP{-AnOPMSrIUBQs{ZHWgO_nNbf517a8>wAClC)1+Kh16L}A~E3= z_l!mmdasqaf$!RFWc(|kGn+3VR8GAJbwEE%swkb4Oq!SJicb1MgUoFMLG0?A`Ls=- zMg&=VF!Onl<wARFoTS}=<nK~T4@8i18qt<6D;?4N9|iM5O-2rCAkOBsH%S$`)IWHr zDcs*fHYZGK{y3Ps3NQ@~?epm+f4c^$od<Xnf3RaFr>Ze}$d8#ViHG@^`DUMNX+j?j zmk&6-JBnk(LH@V>lN%6ZOhvp>BhEx8)yv={AY1(=xZDbrArr%ouSq$<V5SO#nq_~F z%QjS|Wfn!J0~I=K3Kk8^54MrDgo{fJv-7j%qC}s(fPciO&R{npa(2=4ye*)UzR8Sv zphXj|{^5x9B0W$j41tM$#fyu-2FpsE<Q~kAmlCZLO5?*t&_@&Z8Dj|L$S17fhLsjO zpjxvF{Gnz|VAZG;8i-%?+IE~H_?Sj~?)G<hpZyfLH>8>(psZ)R?2|^{2V3dxq`^0} zZXWMUmd>i$W*Es&1<s)QU7oxQS3k!n*aF4^nRQ_&=Wi!z7y@+|qDBh8c(&ZT++ms` zEj`CY(mRlvY`9<=`rgF`FH*19N?=~#f@+A{?&Avg_`cJNd{jwCg=@eg<gS0`4E5B& z_($z@)AC23pmRPr$ELqawKNQrOFS}&1|M^Xv1b<L4<FaTjrglfn9U?c0+IugU>}Qa z%H|4Em3$HV=br{1GQ!tDF;iBFQ2s-qKad`uF&WC7sfx?i7g%cl7c#jQYlx=u9${tU z*BnIS>;1Lo?%<03`ruO@sQ*XPIrwGTwOu&7Cfl|q+pfvBZB4dqbFyvQwrjF^=icV| ze&4^)-F5DBuXU`oA)SU~_ex`i7|(Fe^76<fdbwrOeh+yfmVoKcL5bn1=`vt437Aox zVG2bwRutZVb0_vXYtEaao%Sj-TG$UIX+;WLvEc?3UZ#n$9QP@(_7^a3w;RfkYn`MR zxp}63;6So;=WRM(O!Ke<Y=x2h`R?1yx}CGu>C_i<^5``gY1j45%%O$oz@;Rql-3Wu zx8TE$7q@s;x;K#O<{@AWl!3hefmDB{mTFLI;hH5|KLxFrBH_3{G(YJ%l3OGd-gn*K z+8rLn0^Re?5!SNXni+CY`nX%WeW8vlga}!P4o8!@ST=p@qPDx|98thr7SBr0CHn9_ zY>ke10NVCE&fk$iJdWQmS6!4@+$6ZPXU|>86VVhV<TSw7cqjx)-gTKZ$8&EmQhEZV zY3M6$fT$8ph~f?Sl_yYD5jBc5fA(=n!6jPvQ`V6(rH$6`<|*~5SDMa0<ppfujJVgy zo}?dfdRo8JKiE#~I&U%gN56j?x5Nj(v#lf`9l7=&fMA3sHjbR31YM$9ZQ8cGm;!eg z2_)~rI7Dg7DI`Q8Fa&w<OI7y!G|Fu?ckK<S$wjkDMmfXxyc;Cf&aNf-EA-CCCnQB> z<wz_@b_{KvV~*1Na-lQ1zYY?lH?(laAloCvddGbllPm(knSYo~Rv5F<Y3aW2^<n6@ z@Aujd{R;BBZOHO4e79qClPNgffD|=9`oj8%`ac9}7JDN$y{1#VI7Z;-|Fke+Lix!L z>6+Fe&+&SkSzxtx$EB&cBX^Nsw6)2~i#YBlInc2@jQJKvOm4XjkZt(+!Hb+CsPIUC z6JufwIS8DN%By(^5|iwlnT+!IR5qcL5(P|RS^(r>nBq=*jzwu~GO)nluvCc*89p9) zIFhO%pz*6vED${44DnO~$cr3l^AgtX#F&P_42YF~lUt|}u=906ju?doMM(*CojJVO z1N>E;9Zj{yS;6r<4X<94aGGNT@@W4d05WgDNA{%mx*@Em3drFm69|o1Fq>ixPWEyn zk1N8*(tLn9ylHDZV)sd^BjJfx>G77xzd!{6EF8H#6#SdeEZ^~xs+yHW%ZZ`=tj1WU zn0jXpXxu3)DGJ>74AAJ61|67SKkx)Ke84@QVjOk^$^aVud>YxHUg(?~ow9~#FAco| zSj3=|aj39#5%S^LBPYhMWbLlv3-*BY*dy)$CG)}MVYb+7KQn)#AATmQHIJE{t?F3c z80G7~Km7cU=SR}F;<^}baLsk}CpaY)VL2edZy_Nt85IKK*T4_{Qx5Mtwr7d#L)ikf zT{1c5+p;5me}hJH2R|}*PYiQZ=Kbmcj5u<|jb0S{Z9}x&$P-?9Ay90%WBq2dH(yIe zA=}l|lUcGrU#R#vWk=YCWDYOW8%f*F8TubcvY52P#94vNPz0?E#Hc+V0gff%B72-M z43ekT)HTxp@?T!(YLG6PS$tw0di;!1|4yq@jI&X~%0@$vYAS#0dN)zw3L0fta^{0g zxhbVzTvyyk_KN%SQhZcrCx8y9@^HvlXSH}mTEFx4n4w*bg_It*YKixG%mygX3x9w} zuCC+HxeG3i&L60Jx*agjvx3&yf5Ov-DUc(KcQ(n)omItdC$gN<LjDpzqu(rm71lw4 zIfgGi$9v*Y$Lze=nmfR6?bBNUN|nHnk`BG7iFDgaD#)-um?IPlzLV;SVWKEJ-6t=v zw$bR7PU0pvT-TZ0R~c^Vg*+bDLHsX8uvxSS@)V_DGSWdBXY(k~d{aW1BFfP|RTh97 zt8%hwn$9C2{Z}8^V3BMq6p9v<8$<V+x{O)FmK}L+>cG79B6wl5p@*p(cdiuq(2#Vi z$SW?OSOd*Qc)>tyB6Y6jLIklYDy=z6vtLvVhLOkBa}W;&Xubf;N%})6EdiEM7!kCT z<|+R*1<?Owi>brjva9Z*yMjlDw+&k#fkJ-za19aRhxJ&?nJUW^n82v5Y)%Y0wxnV( z3_-TwLo}`hqY^%#2g(t+PD)EMG5<D`%%?N1y$2ct<mv4Mqg@!wOg}DMX&C4<)a+oR zMpGX*@A)A-!kB0+(l`YqPqZgaBt@d+W+ZUI#XS}m@cJ-BI1ZRy9ERVYmp$t8Eu&{V zy8~$v57Tva6pbqBakoRKm}T#)(J=Zd|NQ*xA|vYwwB6SlPhMb;{UsxWZl|_A-_K*+ zSV=ZkpTC7DpNGD-<EnKtLefWQS=-QI^h!<nO#A_t>GJ5ZkxcgC+vl%SewnB;&F8L; zrY(6AbJyD5b}@qje_LIrZr`PIhU!f{&tCdt(X&>$q*mgg6iHKGhYSDOZr(bLOm)$9 zVs<3@g#hu9j@uD|8F-fT%34OX?lYvuyyPGBV-2CfqDLRM<TzZ=@djho=-O~-`|ZeG zNf*$ZdjXd2^bN~VJ(&EKl58llJ((eZ>;K(GI#j}J{{Cq}_`6_MF}Cr8=^TM6A9{S- zAlwOffvg2R;DsyWz7ORrD4Jan&+nU0SRYw`D+S`wMa`;JcgH1DT~4}m+6tLz*8~R_ z_m5BvPMAoA?f$5&gY);Cw!Ih5ElWdN7hM`M5W%ha6A0GSj1|FvThmiEndPuE_KiBU zBhsN<tJA~MZ=O>&8)o;{tJ-cd(syYvdph=8D>_{2M}F-xF#Nt<CqgtwrPoH3%bx0+ z3|L~j%)FLXL&yq!vt9Bt^1S)Jh2MC_@s*YYr<1}yKIiyZScS_I*um?jqLL#aSOu{B zoMZqNrDX=qJe>B=(HFu4;d|^-!bTjDjGC_yY1A>u2(V@9U2#2|TQwe(MzMOMTZf#( zN-H=+!tQkA1wy#>`eS87E~ltJF90G(&J>~#+(%N@%^w7$DN>a<J;WLNto(3b2?D$X zQ8Gt|2rW?{Iq~;+UL4ewBy+f>q1Ewt5CO&A4aJuf?DSjo@cn^2HIMn*cFvsUu-vLl zfLKMPvWY#(Pt*Fi3P!~M%n1x7U=fi^6v!kB+&n@u2x17SQZkywsu#(g4$1tyC^Ax1 zR*pL^I`RQe@MjRGCah`pd4iHdv4u&K`H)Bv1`%80{H$o61y2Fr{>#+fL>M_snIb7) z!w*=?7y(fu#KDp6AY>dDFkEt?fK)}uKa-l925@)J#XA-i=9dzYjWQ(LF~0oLjGF(# zM!Q?aBzVczY)orG>gRXPA0B>~ZNG~8+kWU$pWAH2A~^tv)Rp0eka69~&7l_MN&^+D z7YBqd*f~fUk!nE{RR{{)+4JkTsvFM?52g*XmphGi^FvEwwIR@9Xc3d+W6xXIX2IH_ zL|_6ku=2x)B!e-Ojq;T5gKT&aaiYAxv{l7AhCt%Z*<#A(FYsJ05H`QJ+s?>AXw-`P zc3oG--TG^dq;n=e9?nx#fp0Pnr#X?Oc-jL!gv`BWc&rgBCY8a);lBN5(1;a7j>^SP zs3TN|m5tzfgfz=32$2!?ls7h{RNqTO+}S|$P7NpXuaUD~X*I`qBjIWS%;BroH~2^c z$YPqFN@0o4>udQ_lD;6o>IsqHC-&0fdf#<C5D7<DmX(dw2)6-*%B-UXr14!j@O{=L zz=iRI{PcMK%`m?>(rZIpY5n{3Zs6iii{{YIx)QNX6~9i1ARV%wz`$Wk%kx^U+EXk{ zb*IkF&oA{8;_a~lL^D)dcinaRM55|pO;RBF;n9g*?hdB8ZFTh#+N63L%h{k1?)w0} zmxzP4l_(1Q?3-VoY4Sm2DcTsa8`$$80Wu^cj*#o;*`Oa|);8z`sR!q6I+=MZzwbAx zjoq^ivc9UmKYz&<%F0R~XZzjHj?2ZXI*{<u@w0i~FsJkA)^YKW8b3|{3~@<QpW263 zYOFzI8F?4w$Dn$14kycqmXO&+^HSj0@>qZVpw4H`(>5%K^kf!CaF($9QgU42cpL$3 zz8&pzM54a(+t!R)2vZ>?nyGmwR2Xzv%95OOcA6OU7#o7jEHEWyW_-dncyy{MWfW@p zr2aqPdPC&pzb};3?V~Nb2z=uOFMX?_5yvbw9gdXZl|)El{=37+1co+qw9By6fnc5y zg{e)N;km-<a+>O9z81Ua;t7Yn`<OQ)g28@|A%dHi8JSks%eY_Oi~d$nXNoNZ14x?p zoCFnmHTpJ+J4Rs2Mw;`A>^TTus1&}<Awtw1^CCORM6ITbHP~{$cw>24L<f)vemf7R z<SMNQ6$-^m!^}G@8urSCX9qQW#X`GI%Bs6b--%rF=`}o=EI4><#DaYHIwTwY6mILc zPPF3@D6LX1tGg3uNv8SxrD-KNMU2b-Hfm8HFZol&9Avb9w=j0u>wN%inIlCd4;sai zwG#p+oWn=b#-mGG;VsHo=17LH{*DVWKVkGe@mtcziF9?5Ws3CzZu>~pv^G;cCnE52 z?t>(_mAL>~B8wh=GU5cn4D=I{pcj-76oC&ZCtR16KYe+<-F|3AXMeQUc4>0t9a-nO z)_^JmDg-e<eDkJ+_&m~ynG+1L@qPo&T4jU}LQMB$*}IvehscAGy=gV{uK=$aPs?S9 z;u1hXU4oEJ^A7_KJG!rp;-qd^2Pr4Z52yFH6u}LNbNt|hqCgB7&NCn;5%sbJMOO%R zVWj0C1*;9=GC&bJK#8Mz{DQ^%T?Rq)tc($-M2yajc5FzvPNW&#P<z*2_ygnIfvs{o z6L7QU!T%lHQZ-J*4^zFZT{Xj;jP(7{g2k6*n*V4MFSBi6aVNT=uH+B}5o!^LR2nD` zP7>r75;B+yPt=TH5iqwXR=Qtavu!?jQ&#^gixkd(f5@n>bP6hZmIeP0Ftj;hMo9DX z@FZjE0rV};`RvP<sT7JKk^Cf2+<TroT@$)8{Ik%3R1G*fDRKr_EszRc6%dnXB_RO2 zb`efeJJ-*J6=HS^N0^wbT{08Frplj9Y~2J_3{~JCsC#FN-n-=v%%1)(Y%+U*u02Ma zCb;0oV0hJ8oo^c@FN(WckD%NXN|;7tez#4O;JpH`3@?LiE<+VD$}i782Xn*c0-+k+ z^g_+zo-u6D)oZ-f>xFeQO+@7$7AcUA2vRH`D#DVn89)vt7)<W1h9HzN<fN%QHpM6p zf6Fdb81mzGGmsoHR^!UB*5HD@!+guW#xIp^v#igP1iAJ*;zG*#ly7d)`-ZIGzzMY~ z4uZdet?e<0Ri47=LZ2}Zjd;dkaRwAAWq~flm|wnogD3<#A&Fsi!=b%p&w??Y?ib(| zQxL}Kl6%s6@FF@ZO9VcxUnW)+e_jIv-zSBx!jszn;{~q36DiWR0Gu$0y!!pVO_5z} zNj+21nYc8tJfM)Ib{NH6USEU4(c$NrSgB<`0uyFhy{k>FOIXPXND*h|ydf>yX8Ly3 zhP$u$e<QV<0So<gGy-}Ze2R@^#qq`B{ED0~j=Z4<IxksKMQVWqJyO60Og4iQ60(0! zA&|z&C5O=k-^_ml626<ZY<w|&WaK3OUOojWlVNZ&0HYAm#6oOqkk;=W3Ej&+PsS?* z31FC#0-8uw6IQD&lB)leC&;47c>9`gCvTvE)nW^dE-HeNfthTo>zB5tPTMpEC-S+A z(D!URfB2TDHQz%5+BKW|`~oNi`rfQ|0fcmG;A8gFSOI9O7G`LTp2&g9za@(wzi_Nd zg&JYXP4cRFmxR=D`|8Ur0%|#^OH;sEWJQKKq38t=Q=|`W<jabs{1wsp*iKPPy~It> z1NL#lh7kA+PAOUCB?(LGdFEH8DpN0^h%~5Ruu*TBC^_^*0J}GYj5IhIAfzf+L(OJ6 z9%Y+tm!-x2j>PWArAQf?X#`X#;)C>v8yVm%Y%;;>+=MCei#oJqIm?J<a|O(zMm>Yt zc&&Xl_RJn%{~+C+24~<hT)6XXz0`wx2pwsL!g7*SZxtLDyg(xrlf@?arCN0smOe@p zsxb3SKF`ib6X7Z;e?~g^ToAMAp*tOiMplTN)svs4Mh5bs36@04k#L6fnCy&&)s9mA zNC8CnXWt|j8rq@x9%U98EFrLii~z1+@({7E6(cBYTI_8=;77=s@*HlXRsP)ky#FCE z+p^k)>}`eteBbNG2?gpfi~jew=FVORr;+T+N~}_1lGR?!wl=U8(go7t?vkrRY4|D2 z+cY$$%PPM#2hdZ^F)^V%^GlRCN+&r$5cKlD7gM4U#3M@I;mbcUgb;9`Z`xzKIfACo zE8sY$YSgcwG%t@ZLBUCoFeJ7-(<VBZMdW^4Zer3K*59sY?oXjeBVVmLED$^cvc*#H zk{!n%B{fA(Nfw8qt(c|Z7;i??`B=>0+=-@}b)bKW$Uo6At<cYl>PVY8zJ64C?2i8q zq8QTjsPUbml^R3YBgo*5Kr*`j`m=IUOyk8QP1DowXhDk};p9KGSxTe6EVR{oB`3IN z<jrSj(TCcJQ7%?T2nsHMGXyE4C1GzsrK0}5spQB{Q#)g+FZ;hJCWa#GK*D38<gFp* zl^gz4A~B`S0CEWvl$fZF6%#EE7x@FVn+>THbHo}ciko@J+<2T!ab6o8Vb6{@OIVh0 ztpJlyE$35c1+BXB==o9mpRXtxB3RV)3k%4jl7?22yY6++1W~Sqmt{I`*U%G)B8*xE zUJW6s-rsVMqdcmRY%&%^Rn)TT_hsH6n=dltSOe3GnL@jB5kW)SZOMr7l18sd5RqUN z#Xydj6xIzC@l%j{{Y_5B6qgtWjtn4l$CB(AS8nr35W<*tWCVoZ*`T!0)RRbVGu$b> zZK@&CT`R@{7YFCvRwr{A^jiMdFcA`Fv^OwhHsBhhrB#9>*(t#Tx`t*{!o+ZWePpGw zd8aitf@4Uv@0*;6YH9*JGs|(uN2QMatA?2Y8lN?osaA|qNy%m>FQfx5K2=S3{zb8m z*M4w2QcMgOviMggdiA9Wl@tLq-5^#py#m@5rxJ6#pHu*%G^Bj};seQFkN3ZJGsmn8 z1%6!3WB_p@l`*Woq;>^b(h-V=>pusfh=q@lnjD=PN~lCcphjVGe+n#c&E!y@O+fkT z(YYCvBYU;3MT#6R<wSMF8#-z6Hk4LkY`EjuHH<&tq<cb$b^>v^Pa<%(&qvO^|0A%k zuNB6c->)yz$gwk>NOche)m6uv&WH2wWyov0NEW4M43SdpR1Qm#5su_he>(;(3XU8o zoRK5zK;TBZmMk+Ls4D}dGj7lppO$kKL!>tCr()9uE7Qoc`?<mm1PqXZ(+ewmP3Ys& z(E=kd6G@6NN2rZk7;~_NTZ@ZAKO)E2f~E91oKvb94Bt~z+;Y8|jDc47u#OdtUCwVa zf!0*tEu+~+M+y8_SrF%JsG}O_!6|_@HDzo*J}W!=>3or0f+VAaH6beObAl5%P?Qg% z#5xJysEDqDU{0kXU*0P1nUkKyou;tFB!H1O1nmsdOP1wpeS-wFV16}|Dt{Cufc6up z{FXxyrMdf9EmK{qk`y`8D}!s^uMAe>N25TAiPA#aP)LbIRO2lztG#?*A9J(L#IdHz z_@9<L9334Y0zi*gQ;OGTlC{q5D6_feLKptGK~(jC>i76IRrB_BxtN-^9npcHmW=M4 z@RXwb2Xx$(M428WsF^XND36cr$$U_p4JZ2XE@XEqO^O!D^%R(4zO0N>$VeGqMmUpU z=J9KKXo>$0j<Rhf)Z*_YtaN^v&_f|_c;f)F=gjQVSmHLV>myTi13epf^0GAsad15A z937zxts;$ifauWywSWmKh*EFG0BepuS+rWGa@bUYZxhUw4MV|Yynq~m)C^f|HK+NN z0}vG<C(L*9DW?+baUF7IJ-LO3TW78FIH+0S#I-Ps3<&yWQ21uXXCL>`k)VRE9n8c! z|1g_yTK=)LEe!?ZMvk&GlCFzcjzAnL{*0zESY(~LG|TcL$v^f%U$;Qf9E<_Yp*Y|^ zah08rbf_?|t(RQS2xLp3@fEgSXuQIjo+{>)*C8I2bUtG!Dmb6TKxzxq1u<np9j_Ff z(SgTJxo*Wzp}?@Uxw2&^kM$#apLQ)G?4X91F%RxqB@zr*$M0L(T&1L;kz@F^<Wh9{ zRy;uI^xlyRA_G%!%i~OcL*Z*V<~(1U1`7|aVz@;lky+ESDDm^~7TK5$;>To=`Q%FD zrpNxQYf;iN@+i5}AbfE1wY~^=NVBBa20-2`)O~RgTEd(YXwtEzAm~;4R0y7Fq-LFo z5Cd7qKZ?#CzY`;iqq8;4;^wyy%)%wz=SQy7`+f_2gk+_%h!&k`*BjzBxDD;$mYoGg z9NolSmrw71rCCNM=1*pbl3LW#IjGkuOktsp=t>6S$=_hY*qYNgvw7A{K^g68Q{p6| zkgKQ+6!w0QMCcOwRmQvC(rU7}<19VSUz-&nZPV%TZ|qin1$5ioN?*KZV^p~dL3l%s zmy<OuDRxMxp!Ijys!z1kr1ZtsfwmzM@(l}9qJPtN$~}B{7}aFyX!)pemOrm#hzrKD z7#tT2l0}W#{T6PZ-?!l)kkHgCZ^w#<o^JXl-Nv26v%=z+;p>#aygbe(2jwc44cM76 zKDUraJ)qze??u$v0ens-1F7zQ`3W|P)AzErnxo)czz$q>Zkkx4VQ>&as*pch*<&TM zdFrW2Q<>`zU&yv7k6#ga5eN%87zOIl4bd?4odZrme?2*yj9>`|or2V$;We0KiacMg z%iRoS?cjbBr1=Z1VHEkJc<tr_;~NkO!hZz~aHxL93tA9aAEyJh4a;<4HEeSsf{J*^ zse0f~$E@O!A;d*nv`d4>X_*?wJHsnF;<`jbK%~{(ZFQk!e{&zYXISn-ja_%NEpaG> zv-s9^CHV*Eay)ZaW*butB1v<}>5+XikQ7x5;m6xnzZlg8w4*Re14Nv{^h2Ik$;s+* zFv;PC0*l0*R?YGUNN01zo72oCRo9aQ5Eh%IyoRE2z6XO_qEXb_lRv0p5O;dvNK>sG z<j-5Mh@=&@X4swTY9gY2E;)ZbB?sftQ|w60Y8#at?rqoO<!i~bz42+62<jEcO5F-; zuG?n(p5xC(+qmyF)S~}JlwJHMyMPd#reksdL?=pCe5F5!MVDWg*n~h3A#mSbrG)Cp z4eg5la^{tyDstEPx^nYJ;J=z9=98bfJCOu~O~N5S$<69yU2(D_mh3U)rF-hCA?;X^ z<@rhKlPFeuh2M(h;V{)R`dkRIlI7U==(+3Bja8G3rz;az?oZu)Qly~ob|O*8_NN{l zDVw;#+UBtk=?6n9dMGGtRHw35XpFt_eZ^uSMR);aR3vFauzjZNXSNi@lz@n1ece2n zn>8#As;W;P3cF0WI+rCjYQJwiu2zyZV*&}XhBuezt$_Zskup7btIE!GIQ$HV#r{#O z54I+I_p(BoTq)mvx6<f3+NO=fUIN8^wC!(SMw8TN$Li=$k{!o}Z2B_-3a59KKL~;! zEGE;LfL>u!Dh|jtS&i--A27ZSn7UsAD{gsZM&Wk!G}Fg>I^mYqpKDLzvnRwNZWN4} zT<%W8G-@pl({YQ!4h!0NAORr<1o5%ir;TM6-(4pE;x%HY_CU*Q>ysRh-TYXB<ld*h zl86H3d&3=0Uo8;udtw>9+;h`uEu3K=fxV*Br03lB!D^E_W?%?q*KLtYFhxJFo*u}C zV3_;FuPkQWFpL>*@0s4V{N9e@!lbK%v@CoQ3<;d623N(Zt{sgRx>j}<aGNNB3(cF= zBM!cUg3z{`oOs#cDO>Jcv*kF)OR#2`H98w+1Ks?)-z#{BL{7K&jU)}tPvb5+b>D^O zevPqs`j_bAU-zq^v3FxXx`wfQVKGS4r*-5NXqVqdR&HA~*@@Ou)RFVM#>_EuKn-g7 zA388ymW9|gY>Z&&Xp+8r77b80mU?`*=yddc%?-k5gk{MD(i~CU;s$~D+(f_qKDrBK z;tmf(#z_kxYrj#c+kSSdPPfU~q=Qw$%_}eeG~k!I*81mV76qm~EI)2@chPmgZNh*s zq?hj7_w98$o?iZZFZwz{)pI{X&3)PB&f;`{z0OSf9G|zlTeB0%fOT%<c2$+PAqQy} z!++66C2e$w-fKIS%-(>m()He!@0dV0)E@8<oNbJ)PCH2eNy!F@$Yr<ebh$_E`MkjL zIrjuO<Y7>eih%0}Xw0?i2i{MrF6%exO)WoM8zMjs&WQ2-`yY%W&1@3tzo^~?Vk-kV zncVEW9IiJcNpO0Gn4>y6?sWP4yjGL5Z|8fD+ff2yqTse2^yq!lc=n|D!-irHPVh=l zk6jihnsYE|Ymr`h`6>+;?likMq*EYQ`KR2li-0TvXXmy_>jY^SVjDs^9YUtkE(WUN zoQ5`)9m9Eqd9*2=&B8toGpdI=8p}AuzfnA0!y1C3|BUEDm?x(RhW%Xxd0M3%Fx#5O z%T7bgPH;0FfBTeA$c#scb&h=1RoaChvv$>?+Iw|Ldct(61!pb>Q5XbiUc-bo)jCRm z*#NsWXa%3X9f4mq=CPaciS+;yZ&fyj#t{q@tfrrE4Th&nR2l8vvnJKT``07-UFeGW zWd!p-dBRZ}!8c7jg-u{tZt23aS|oQJc^$1`(PL-nbq|z)YY0{Z(*sLq5r1>sVWr>C zqG(2Nz?_aHg>rzd&#$ph#=g3@?XOiP=xx|bAL-@Nd)!OUG8*C*voGAU*lQDH7ofxO z+_@@nb+GuY(YB}&K(2)~vU!dKv-wXM#hqa3$T-5`iLbAJd?jfKU%0Z3roTT<m|XXv z^WukU;d9uJ$lXy|IN=8<hGN6PI+Y*Vq}*>T=7Zpxa2`&k-^*ViR`yPyqOF8N!Bv|; zv1o>#R>xR;WkKR4sttQJ{T8QZ)7)Yo0SeKG;*<3xsA~HjmM8yU!{v=%W{k2jz+#cx zaZf}O8%4YxG%LlM_ke|T)224_3b1t}M)gNXl(9<q{UIfV$&6Jcc@lh|3j4|Cpp_au zViq*H-ruoHPK{4IpU;KbJwBtC8>~m(Z@gIEsh)6fBNpCp?9@t;&Ig$wE){&<jW=qv z<=bB$wUHVkqTM*1Y92cWAES`p3H)HmkP4xvGo$aOZdIT`%9UPz{?9aF+&4y()!feW z(Y`$guA=$F3vSF>L-Y!mIjGvYJazd-i&?~4L;)+${XhWg#ET0HE!6}a`GU>3qm)9@ zW_QyFPK{6KchNXeGetEW;L=ykx9E~Kf!?%!Y@YL~q-P5#nCfz_JtJiMT=nB|KDI0V zY^x6qjZTNKg>u-1;ah3z*0b<u#^n~=u{q>_nxz>xU_INC&F~4$GEm-<QGl<LZDk9R zUkHLwg33SoTQ>Io$gbPzbXwIy837&a#)08WygKUeG9}&lGEBqswECg0Za8?54!#It zDO>(zwZBvO>nz`K)eA3^Hh8IgT!r00V00dWBy?HeT0gT-fCk3w+ia~2uM&{%0H}#B z<9{~Mv5EHe{L*;rVz=(w6`5KO#}bmA<)R8s<4u#Xd7D2}n||%z%erPom_mW?y`7KT zIlMTf>x4~Xqe0>StQxyp1q;&D`B2;8o<>`5+&QY#QJ}7Ht4aOMJH3Qy^zCgl%O?O^ zyAAxr2)s+#|FGQ+1PRwLdluNKDiihH`8*zgUW0sfuJGRMZh1xd@NGiG@}Lz-)aj!o zT-5Gx4L@|0(@1)ts)IN-AMg9LvE6F-2Z$-L+l(`&>=(O-k(N5|-=se15@fG@Q_-s* zeLJ_KRi`^Kk*17F42gC+Vuf!hjXl*h&)G9Op$^B&*NEL8fwYCx+VRVklk>kWN^<#N z@_v*|)!biqXh2l>*4WU5KZahhgF11@jl0)JAR))_JAZP8$Qx-oxqIfKYd3(TPho)- z8fYx>05;vq&P{M0qO^;dDiF&eC8GMU>NgB1uh1W~qyHW^W*gWj&Di$0D5O2<#Y|~d zL>&m2pslJ2{Dvbdl07(I9CrV{1O0Oci<fu2u>^c$(l@;c+^VQXnSg7TmY90nCM6O0 zu2U&$x@)i*qv`$R<<T3Otdy2gmTB+aIRmiS?Y3>(pdb=eLiu_Sw)GeyG@~IaGXUqu zTc8AZMx0d#1h42y{N(d3Fw3z_|9R}`GRVlX$aqg3JS2GY)@0A2O^KFEgFRZWb|fKN zRYEbLBV&krOZPS{NQ!HYW5)Gc#d{t*GVK2QcV{=&c9*+4&|PDzg0Zm#@t^9Is-pPp z`H<E95IkSh*9GUXg>$SRV?}E(<*EXTNRUX$i|VldSv1Dr_A^6~dTn3Zur=Hnh(eXv zi7DlUG~;!APn-2zaY@WFv+F65^vQkArZ(@B;dZ`vd=)igtPiIEARn4#i2Hp~$FTb? zJBBbf35DGWI#<_UMo_Zm$ieQ#w^spv8yytsmstYZ@iB*j+V9clUZg~iAgGhD?vexm zKf!ngR5TJqX<w(F9_<QLx={Loc>2nYX|!FHo<<HeDlvi~GfY(dQ|<(^V%Fp7i@U{= z9I#!d@3hSI<H1vR{CA1ZU!`9@ajAMfSjU@txvyqlH&Z*$XLjQ?J}(tNt{E(y_G0D- z$IhoH?OPf9LL&;GPYvKLh{luOuwv0Eq7v!z%m#;Xs`|JEmf>flWsTx0^t1#rI8sb) zGy3oyf(h%?1Y)+`=!dNxk=;NLj$5>x_z3J2<yJFne{OIgy?pe8ltkcEzSn((I^iFK zIp90-BF40)sB!cxiEU0n%(*pOs6GPo>-f*jiWab*{!D7G=(g_VE^Uc#A3jqSt0YtJ z1I3uReMlrYEc@jf5K7RV`*rg5aeW(1@R9%jMROhrGE0dRt}Xnx3;d67cD`5l{F4nk z-g{<W<9aV^Jts{_OHrmuUcmY3$U<5A!EP+F!YK9pc<WMvNR$y_d{!A5Lxz2Ob0CY9 z5yS<z$R9D5dA8UrgRaZ63-Zq(e`baVO09;NqurqvRfc}}KK+c<ZnfX@Ut50IG*-;v zs_Srx4Vx@)U$?{N_4t@iK2Ck~?|Q$3&E;L)`Lb@xvWq0##@JgNQ%dE#84dOQZFM}@ zBx+8Yws#Ir?;llgsN}~9bDfABR>@10zAPw!avA3o6HY_CR5E16v@{BP!kboCX%&+} zT>utIobk|QE5gYJJg}4EK`u62%rUKWZQhulHSCn$N~rfbNANK~;Bz4yo6G3}<1qXu zYP<;7-|xRKl;ORqXDplBt+c$H)B9{OCsU5o!E%M~t8M0eIQDb2#P<p`miJXRcfVu2 z!uO-&w+jE<;$!&B-rhl^$)f{O8&jrS?iR1h9k<y`)`IV)-iz8V-nY%4x$TaJ^CW;B zw=d8ZyX&r-zlpy-uX=76KBa5AU&m>tetqWWdekr+UQ2hsX!VRi5_m3tO@BApo7b7+ zt3}5ho1i35e9ql<@eKi@{|%C-X{sELGpcVq;!y9S5gWtjLRzo=E<Be1_I3J6weT7p z$%{aeIUC^rF??~y_KuA;n00aFd+_yOw@Kc;GrseDsCTsU;`a6ZjK#y3zeJIJYia3J zez&o2_pY1Iac1ZHzBJJH#`#{;wNmo@Pgo^&7-9ozxmx7*1+4gH>b*4Wbl?0P;dB2u zAow@|t?6;NT=;76z5KpmtVQKX?R}?(J;O4Kk5Z-fq`~rOVNJEPP`l0h1h>U)d)BN& z7<d*=QNxg~BsudbBb&V**UWM~-}pZ!zScgUo>29qoRLHf5vSXo4fqRc(7C_l$WbB+ zz@iwuPXTrx7`}&U*W$`?h}&KVOXpvQGoMrUrbjBE-8WBNsX0A&(RMxu=3Lo`0seA^ z4|;~aJ@xX%4GE{t<I~d!3uAK5z~jh23#&0$491q1gQ~va8m*Fa8P~$dUEXcZ@%pG^ zl@!!%rDu?9-o!DmC5Yps0!qq=fO=XcjFAb>PyqNg8VA7$P_G%H(nLIBP0yTnXXbvo z0cEng8%NE!nGb;5>xD+|xJhm2?_XEAhwavGfG)r7HO}|8ifpB1^&R7l9IAhQWzXpX zOkW=PIvnf2FqFEbQ0OT@flH~tPH@#jntbx5jxyJ#4R0v-pEKJ_m?sO<e|31jO>>t_ zZ~BUBBVvR<YDL%(#`|Hr&_VHu&KDAwf`qYzLG?UO=&ik8+IazVi8zW7AR*msv(|ZC z<g(loSnaL8mXpiNk8GfG&>G8lerEltZlB)E2KCZHL6YQGeAtdZgOSQ&fVAL3x)H5Q z>2{vZ&liKzp`LBS@8>*}-Xv9w1o(@7yrtAb9yW^Mh%1Tf2Cn@{D%SMcO}Fz+<dRS( zFN3kK1pjX@3_0mZD!<2%(D>b&mMYu-2?;MFwf9$UtbqAQ#mhXqXjr=-Fd&C5pd0%} zPOrT^TRtmmT5foZ>;w0smTeo^hppvVlh<~MQmv+IA&|ObK^!tP8;!^hl_H+F2&=<c zn-7I)2ajMhIaKGUK-wulSX;nrBaasRw7&mD9um*yH{AZ?wV)Ql<`H&iQMW<Sr+|#Z zbVHXBOEjb2V3n&GN;3sG(X;syoIUi{Nvrdh&A&R!%7$~1_g1MuuHapypPj7_ts{_I zO=XP_?lg6bCG2*8T08)z;sIqPq4OS$IN?9|meXIB4Uw1)rxC3kjwZ*{08dYRh8%0# z8QyM8{OzUW$IZ>fcDcMA_wUa2O`gZgh8_p6(Xm@jGp99I)^_~gErMDla=DyuOZpyj zwHuzE>^<&B7j1U*sgEC!kfE_W54)f}4OtBM2>I>JU92idZjVRXQ`wdlx!x!F;@vJz zcGm-Lwma)vTU(#e+1WObKG(auCrbCC-u%nKs~b;$c!Tt&57Yl-z&POzvfEv}Ho-Jv zA$tg8@H>4=hc96njEbs+<zx&RSe$X25H=zpPbOd>O$i31FyA(0r<C^ElpD$>i|g7@ zkz7X`Ip0yO?EK<jJ{DLK&`*gA1Y-^vZNNJ5BBkgVSEuJ+h}e_>X&papdP#Jt>l*Ki zy0@>Hjtxi2sXghp<Tr+k&+Fpt%a#0>t-!9#ucx`oOgnz(uk^3y?S>A$&sihDSK9|S zJK&nL;jM??_d1+`+w3s(yL`<~rg-R(`)%cmcj0vfu@$g6t=E1$S*C{H4e+<iT1)@* zvY6WV<$YJ@>(t!!F)#c>=lRRpZmRm?;^O_1!DsKMZ}-i#jSbq&j^|99o|T4Io*UiP zSuRBDhYdC(%cr_^jHRLZ2DQsG13N|X6GaaORuUe1Jj{_G49kj*1SrcTuWiQB+iyZ2 zLgPlD1nc5N+k74x9Jgx(qH1Wg6A$}kG|UU~YbX6K!1?y|6aLiQUMRkYY+NkQO|Lh< z=kxr=S48P&pX8XE&+`Jo2fLofC3kMO)5ht>N{XJgs@>L?QSRHr*JWzYU8e7Ha#HT| zC`FC;VT&(d29MRl^m>@aw|lw1^?1MRbS@iPS%FoFX;9L_)YabJ{?A?`ml_9r#B*`m z@u$<*BS6>vGPlS1Wj9nOKi2_4DPr0tJh0)GnjNXAGFBE6feT+Mivu_-j??d+uhClW zrE0n#n~m+IFJ%ry!cn`;Ru$L^>XkJG2O{yocJ*rsU<732^5)_g{|QJg`ifrYSoqqV z&er<D`!YB3)o=-I7o_RiTz+xCVt3*FPT_Om<XdgwRU~8D7f}>;q1yDWkQ`oap>2L3 zSrOLycHIH!){vxQalbAX-D;FypJmxdW$1c(%V<x)d`J0r$WmQriwqiRXZSMYH_3|f zxxKxq%YkXl{oIP78Ca!?KXe@Y*WuI)pcz3w>Eb5XTF+k(ue74^<T<kR_0Q)x&Um}_ zJz?nicv@oE;^W}?eL7zR+1wKORa*U2bBT9KGt=XEI`bK=_p<zTmmhl7MW9Dw!YJd) zQ^eh_!}~f9TeA%qJoxeT@-~z6y8OfY=+@V}U8U#cX+y31xvYf$NehD^=k;(+^<_A@ zLhagVTT21;>Y~l*^@fDt)y6^b_w|s_-j3JhIKjvB2>uuBk8R)m6#}1|&99HS(Ce?7 zAR_-`YNdH<@!p*phHZkvM+NP*W<bmOzh){Ozi8x-7j5aB=yjhherJ@&E&PKiWrIs@ zx2>9)uGGSn1&uOU^UuYm%==$#Q|}LtS`!5PE>9Pc-1SXMU|R^vo1AH1u)#ZD>HStn zmY)0R*Il>#$|_k*U9L`FU-j~U%&>zFhMvz6jL6sRiU}=1A5JX#;nT%N&)Zo~gSPUI zPVdWgjLH7^u%1`$na*2Zb^40f&bzZ@eoyzt&abCSt&W}t8ojrj@0m3hbX3OeX6vI! z=ZAVuHq!-rwL<<dLgMsgqdCp)0ClwP*K8K>2mOo}SxM3%DNWu1uWp=QsJHs7`CIAT ziB$*8R#i_fAHA_(uNQaB`>!iwe2AqF_8Qfj9RQ4TK7GpUSXR-+m;O!_((uPX?ZZ4B zKL&qDuh2{2+|$qcb-3P7e-Ot64!ll&_7(jk#?PvSyZXz`e)WEUmt-0MVyE-__`oKg z2;5G$?M1);Cl7wj(EYkrDnA)92fx8r>FY&yp^1!G@w|~)okJU$_CTDzC~<`&wTD#Q zq%GlTGE&Rigk}`!7u&+3gFEYwc2|s$+h8P!*?-MOYY#w@7}w`Wa*bt`MB<|v$fFh6 z3@|W6s+UcK>1Z%ashB<+3|RBl@OQT<(hlMN^fX3P4&}8Ir|fu*><y!vMojmJG&uKr z^M4c5x+fnWzYmUi5w;&mHlju=@Qfxbb!idj(UNb!GiKfJt`Wfe++y;iibgnJ8jl}s z8@SIy-ya*+E(lhY?ql2kaZppYFWSLYShER<%UyTc+@{x^nwM8s@-wj<88e<ZfXeVb zU@lxCX)a={PQ%MT5irC>t&;|-B0t_+ImyLjf+Ytr2p2C|kIv72&r{i?$FlFfP3V!# z@hVOwY1eIOs3Lwind=n2uZbz~>$JI9+u8iglq)@&Kx_W9hj)(YcjaUEX8I)ov;M6; zX^#D*;K%KPCOTKz1e+{s-cBh#kI>s_e*A8YiJ*arISMTedD6NIYTi~{u2!enNe}1W z$LEwc7xB{8S3#>PS-Lw$@-C_9c6p!Q21xm&X8G#jHCWdfFY2XUUsH{D7tMk4gwJ)! z^<)DkBe3odan+tvf=r?-oA4N9jhJpq)&-qUnO_C_k)Zz73TtZU45-EX<7{_DGPJE< z4o@m1p)`wfWDw-ZE(l{8qx2k$Kd8;YADdr}Z?Thv9Ctvk)!t@Ux61s8wQo6Cv;X>} zpj!l_DO|=sANE8R=(n?KwIx*N80M+3I6JEO)}D4h?BJvQ)BB!zC2aea{QY9qLh{k# zPTQ5E3n<st`1<Dd@Pu@Xc(pt8pnDS1ZQ0EbKf9-UDBLE72v!zuY>$7MZ*uy5jtyUK zq?nq@lqiueSQraTrw24T6O7bWnvNXTZCrY;tTJOnWB;>oRR6vqAOgJhI}f(V&5t$* z;I5@z-G0f_VO$Pesd|0NByTnK>x$1*`HpmWfAOb5@|Tdu0*c;}baW6McmWK%QK!cJ z&dicfyysL?Uek`7;hpF3=VZj59nlv5{6Y0Zo;_Thn%76jVc_Y%Z)%uWm$|NK)2^%A zoPAz=zbdi^Bx8Tn=u~m}>anLSB0+3;qw7)JbF;3VVEaFSSO{r>@U}j5|7}}=)o#W@ zq-8?rxZ;7I#jSMK!5Q+JFPA9)oJjiHO(_qrtisBX%L73!X)!t;ZUR2%h;FNjI;S8d zD@(_JWrWE1Z~v08>+d>mrs1D%>o%Jm?}Z<ovRJ=%3ZMANyv4N=yxLCb39?q~oEK(w zzN6(Q4?^A4`A&`nv(P>LR)osic2HZ?{!YY3a7Ue0h3)XWqgAMd)9d(kXAxbTC?GKm z_JX0=Fr-0ZeT~|0UTK9@RfR6Lf1J`)GSyW(pMZvwzL3LfiR!Knv-X>YeaA1-NpE*s zR#eXPI<H>lJ#6##xY07+47tvaBoYajH1NDq+41Tv$rX@}=lZ$-Lwk>ld8*^(?li;k zV7AYVB2Pg3LoF~HV!CLRr;7L_2DX5+8_72mkxlp99!P_x+!B(fO*;Ggebe5i>bVia zynnDYfF_XVrM;DfXnFsIm_>GB&V!6be}NPe>{zvj3v&L1+_ob&mI+e!sN)Da@yTHj zA9%i^6(t^>rly>ipWhXMSc^D(gD~}k>$pI4HwaP4ZR<nbUvybtDH=h6_DN64a_3j= zPj=++_9_gLe5J+#%>JX>cfr)}V4F(2mwWY#9v!oluU%ecf-(h#1aZ@9RN#&=@Za!- z;!#RNh#jE}4k}1`-dsJ}mtD?6b5Nx<7s%M2O&C)mqtk`9Qc>z_gy}5oL}SaJq>BEL z-w&cnoBDEHqwDCOL;Qxg$%O8<QOX%vC*vD(9WY`>q`Dyt?<NywTd(`I3Lfr-U>OgY zr>T1V82BH-L(0ikzx}x+KJkbqyd!v-2|6(99lC3@JJ8~3TbgyA`4mmb0d6ILr!E*L zA%z@hd}~+KQczs#k#l1JUVM&Yb^BawU{60gz+W^*T@dCh!R5j#N6Y#HSS7SnxYPOE z;a8mva~JrIBiQh8@yF!IQQgH(HZF#aFxZcX>V$$?87O2-vhSInP)Tx8U&F1P{Z>`A z5^%IEsB0pd?>w?*eDuV<YdzUy73e0W!J&P0R%jt?Z}ZS2N{X%9zG8|v`@{ps$WLoH zzFSbah&$BF8>Zt2e|*O&N2ziH6AgMFQ*K#$CSViLOmlC_Bghhg8b;e2=-#`#J?OTa z{BY~yz193pU++j?9rgT|s~VscXmKo}8g$@v#=!=wV%W~u-AcI(5ml)4wYzrFgMM%T znHb7ad#WZ*L}t$<3U2IUk|cNDK?*M$s*cUE2%{I$MAW%EjvqD63iR3TXw4RDzg<RS ziZ1?5-G^os7rrMI3!5ix<k0$e@Pb9In2^(nv2$5)L_fL?`WlbO8tAez+KplNck1sf ztysJ6H6yrxb4l~mW3vVCxF}MsMoOEkYUt8!UiLvnHSbdjQ#rg%a7ZFC%5{Y;BG=*h zC}<cP!Bt9*??u73$0;ye*?M5^MG2r@TkE7emA(T1rXp&D1kIm)Ay2R*AE;=AzK+IN zh^U2rpjk+U1b6Ooh!%e$7bHNhF^tN}@iNPMq02FKcSLk=b<Nn;Ff#oYtUGQy4Pm4T z59Jtn$IzCq9UBTO=A`_5(Kg#1DtWs~0#LMo^5M1jA48az{5cSxBoITabq)~-ueR1L zk<pilZBYa9scbY(D_%!O(A!?>O25n$NGNm=>_p%bz<oTU$dIz>IqXnP`7VzC@u#id ziLr(QW_Ts{jlQLVO!PFqi*s)pH*`Q`A!768`D3Ydiu{jcIY{xc0cxPZx(MU10?3|^ zGp$XZOS(b*w@C|arqc^Dct0y6h|GD<bOkEMrwRMY7_5O$;McuW;3IuMeNBI$i8P4G zZ?97I>Ima$-a2s12It4UEuX1eQ<Hu!d|%Hy`yb~lvF(k*zzEX{gL;>g3YCHAB3V73 zC)q*vTORK|$2TyaV=y1xx>gsI8YxOemd$l85gB1Aco^z=5Kmh66MKCkF$BZsUL&aq zAahL72w4aMtltnzzFn=u>tV$+L2yBiRr@$G@0L7y7_hYn`wKe<Ti)+X5dX@Kt5!R_ z=EZLIJ+Bo5yE8_vNiJTURX;ktOTg{`8XI&gC<cul$9{*=oQiaaY6_79m4l=}3vA{T z#4Ob2pwvv>6xAp3sR109<dIHk?ug<N7VL^J^7Cyt9~{C0wEENLIsn~G8<fWteefA{ zaYLvGb79FXU(ZJ%oZ-eQhS42PdE7RPKCS@!r0*Ji0h*7_d#NNn%t~V$1TK=<yFk~; z1vUvZDI5cJL4>37Ufpa3hMxu?O_98?QWT{y#SO+_+<)w!=TZ6-wj}*!N^t4G(z#fm zM$ubg7(^#Gtb$Ka>)d6;!y^o;1sVsPa~HGx0z&8%5RO>;QuPtS1tG98c&`<4brm}t zStm_mfbb|ARZ5u<>mbU|i5s&6*o?eZP{)cL^y(1B$m~1+B?8olmV@89JSw7wt|9Z0 z8*0e2daQlcUv29Ah>m)`2my@Tgme$hZ@NRYY^c!aVJTi0YbAoW4Ooee{f6IC%-G)t zNdyE?IjgIk94Ci2t^kJ;t_dqAaj2iO$dg8&VY~jO*fV;m`V=IAm|_~3B~l#jZxFW3 zLm1#w*;-|-;)0;E=8740B(Uc&{_SHsI*u8mx{R<)l$K1-t2AWBv$}8)w?P*Pb%r)Y zM4b~|_<?@kfr~g}rO)5bzs<%0vXAJt?aVK+g)lSl)N1$ZYcQC*FK@l+Y~^@LJ|7Z6 zP`h|&-)O`etl$q&wyl8LDbQn_&sp)OReIi@SC6U88d>#q=yA>G-nGn4r+$Y+yqQXE z$B&qUNrZ2=m_vTx4`G_UbM21?I%QH#Y<jBE#)7v333!o}5tk)A%fP6Qb%;p3SPKuP z_~qcZCME~(Mgszv&CfREUnfQC!$*1lNI1zzwVfOLRejeVC|{=QZ9vO5-dTSkd%oIr zPVd<t$j2B7SINN_0&~cbn2JIfdSTCqtY!5zg%GPTe%y4p;bMFc*#+O97^CM;Rqu|y z>F(WnQfEN+O6yOfcWg+1-tTnB2EM`(ld%A2GuRXTxkXZ~Q5Kfi^t-e`7|*y*H>>ec zUtMhC(E|sPtj5yU;XGd4)f7(d9&u^$<o!NJxUh<W->Ur{_^$i}v8W_EF8=E0TXQ&z z&2Znc5Y0PmN5@n2Tm|ZiEO<tXCDlv}yYjHvg4ByZJr@A+7dnT^G`DD^02*e18?x_{ z4g&-PvTug>LVsVra8mrDZ)41C(3VM~!=2dYF(eBcm>Wzgl9(h76P_e8Wy&E$xW(`M zRn*R_Y+NpW(gAiJ#s3oVvo`#RBYPX?=yL-`S_`Y?-SpbFIuz==O6b3_{{0lNeq$=1 zE#1eUWBmPOiUd^^<Rjkx>OFV(1!z9q)-M{vX_$w=0IN9tUMuZW*jwcUF3%TwDTeJl zc{!UI%3ss&CFK^z!`$N1XIz9?rq%xKj7cCEATyged2D@nSViEBP*i>xc+tI;L5at~ z=XMxi?1I@NS+S46WoPnqgUSW1qqd9n{?7gje6v(~J<>*IhP>wmN?mm37Kn^^F_*74 zo3&Sf9=HGV(<J#@IxPnPD-Z8cPbE*~xt4!yS!gV3Sr-<FLkN(C+=RWq1dvE;rAI~i zbnt0?QUUVli{-R-R|?B9yQZ71hpj}w+SdDf4oLzeNDgUZf&nh(5|fDOM#PK6iwJ`l zbI7CiyBEc!#6CZFk5|LIV=QLTzQROQcW2MHJvX(dSh2ax@$lzDNA`fY5SO9A#=mDa z=>YC~$V{TqTEFRiN7n}%Z)K(cpUsu$fK+bF1m7LuZdzq<KZZFJs16y&;8Y%>eE?^E z#?T{L6?5x1O$UStAt@rLjKpKPfkbz#Xz(lG$u((%Ui679{Sw$I$IspzWpYJfO#QCm zjU#062DFiE=%d#(^h&D_P#u--hOlLi!p3f=vqiqdrk-lL8AJkQQ2F0cLi+pB5eq!D z5zSkNi>7;L>=w<pBKI&sZIm!srTyGss+T;3AlclOeIic3h8INxPEDlLuC8fnd5jJ{ zRLUSGyDGxQqW5xva#J^Js8T>%mPBe6B$PN`Fr8RY@TXw*-e!V^fi@)#y-wM!yZx9; z`0xI#kT4OVTSL#ZkR1N%b;0PBlOE#(7lIWl1IFro#WF`*1$2ezGTE_=DEj{h3d623 z{64M(34Wao@{VW|0;Ttb!}bp7S$<c3P{y#liekgGsl*;$wh&JHMCf&OSPOO)V^5sS zt6l2WCS_v-bxzRC`@uEP&u5exCr8)8nXY%lp7-&ANpjEkZt?2-<tCI1_Wm(qd)qg* zR6w&lL()(djySirMwaPS5c@StkmIljthKZu4l~~C86Cd?cU;}Bg@9KA0F#iYL66lr zF{Dfm>%9wsQgeXl$MrPFG5fzI5jPd5dCzwwCH*N-dFwAhwdQmi!fqgZWlWR#)A(;_ zkaBf-Asz9%=$s`+PVWE@tANccar-G_knTT@@PM2jJRVngN79G4o_M|oml*+g(=Wn& zxB2Yx|10e}gW+Ji_F}OFy9g1{7Ksu)%Id2`FRO)!E=2FWu3n;dj~*pTbWwxo5nWdA zHf;3XgU|cCzrOG9H*;prk9)4UXYQF(X71}chm4(EEwZ~%2-ZNJl6o|6Iv9BMlX4Qi zK?%clXH((MX8uN4#VdX6&mZLFVugw<?(KK7(?wHPp!c)sjZXS&jns!ol432<e)s<l z7@i-Tt>RLAli_P}X>#s-yOgyTXnWIm<!ERMWW*n7GYDMntVBJEF4a(wvY5!;{}mpT zANG+j|4?CzG}Ec2BSQJkbU$;?`D&7lwNX#=aM!PExu~GkJ^B{Gq>0YPShd93rfK(K zXQf$THF9(b)Vgp_;Ws$=xj6RrQAuY_AyLBKkq7iKwEo3&XUdDR$%4)J?eCGw#dEj5 z-ZPU`6S!6nZN<yFqX|g36vx{Y6TLs!hI>v;gy)9H(WX6*!GmhNk@>Bh$Eu(L;@*vj zmRA4BD|=QG-->)O=q@*nME0sLKJk6Lqu9uB*Vn5zM0(pv9~`pRQ)R}!Et{3$W|-Uo ztd&&M%#56{18lPANlDUHNl&LW-V^Q{x`42VRe^FFe<XHZYuJ|fflW-=+UH|q8x%U- z-xQcTEY@0J^HHJyqXlPB?9?@++*0)`u9$o$#51G#a^ZU`bMe}Gykaj_13aUv)~7;` z&~zXz&$;spS@y+5@Q-HiSKVfDq13^=l_}TL&=QJR?+50kCo|GJ6z>CFD&es6&JQdK zGXc{4d=Q0nY7Mc{T1;i#dIFq@uEk%W2H9ZOEBE%X*OM$KSnUtVao3=@S2s7-H<$h- znC~iDmOZq|l!jP%?mZG5Gil%2S%e_8LCAl};f5p9Tb_AgYkW-K+bUUUd#ay%ECrYj zvtwBWd@roX5`3(j%!p${0j+Gbi4<r?JgB%R<%+S+q8+h|7#XXH^`tU(%?o5J<6=b; zGE5OZ6^(0C2vSNjZ4Lx^4J1l}BaP*Q<7Wb5sF%_tdoGO7wYu}*!(YQ~7dIiB!>=jZ z*OWb-3xGAl8iN0hiw<-IhY|TrO@Z!gL@L1gbFwMCy8#OuLv3DgU`J?)qKf!n4ud7I zh*#x_T~2nLzghosP*7g2AvL*fpUgJYS0$nU^{HWk!ognhU{%9_HjULtT!`yCr!5y% zbfnVve@cN#dq%J)M^c=W&5!WtB3$)k@JhBj7sE=y&zAM@vhl2DslVXI%xjDB{Dl9f zy-C0uK5(Z$f8l=N{SGg|m?iHGAELyQ0YgJgcB(T=Mf6N5JNU|Xo<oWxCG!)d{+Dm# zCas}z&8}Jnq}0X?WM0R^0v%5GqBNt*RVbFLooX>;`D%2yyxP-<M`LHWK&{3Xh-l{z zTN-c8@J<j;XRYJ>(Jh3(kfp(4Kx#7WXB?sDVpIGA#KHkzTxt6tL)@gqRBk=zbsdrf z_)d0<fwcDg|7wL929cR8?K9KZ4fhwi)cTTvhp;&(`gFeExnxr>go$V`mTPZ8K63DP zXW?)}gTwqkp?`D2Wqr7bfyyMoIF7lQc1Nc@LK7l~c>y=eUMfv+)X~+eY8R{Aa=;95 zR3*il&2M9pWTnkHsDI$`ipx{O7!#6UMkob$1`f>|)We)GWQ>*@(NI8yRM#?+bZuOf z9Twc0gR0;deCzVKZzC@iX#;fK&@HGOpvnsIcvy3mq$>5D<Cf;6ZLmf|;oy>t#R?mX zzU`o&8ky}i4wy$=?tT=C+7@MqU8f{ejkTe`aRrU)ET$#@?ca%amLIEgXGBtD0Qq5D zoHUxO^ovG^4_lA8)WCB&uzk@c*@l=@96U1W(w9Z$`B4)AD^yDGC2Th=jxJo(fKSk! zj*SwSg!+@6Lan|uWz}R5aetHKsAmgj1uynayQEUe!(RtqrV5}mYjaZxm%W{4>K{8l z1)*=BOL!U5OswNZD(*{i0nTl9E-zK5;E@*1)-pv^Y-x{zX>02R3J-~!zDgCX9Zv`b zo_rm+>JxI%yn?SnbnOc!55Icu7kl}3duW&!NDax9OtF#N1~bTKh<syxSIoC!ygsZI zSs159Pj0RmMir95L2x1i%i%2iVU}V}U2#Tii=NI}4B3475?!mP-`53EpXg*`QGZ~k z$k1Q&bY6bEuX)&O-t>@v29wn#y5etp=`CwZ1BQe(?9E;{2=E==@>d(UKbj|4s?gD` z_l#8}21)7nepwd}9mieZVHyTI!xDt+yFo%#(oPDjEgl;rjzhqr?iq3eXAqUzqqIo~ zDnpd#QR#_STL=RE8^9~Smh!6DyjCwbMf>c&v)wg57TtVs>1pY45qA-AcnOPsJoU5s zje^Zw;xFn*=;uJ#8*^=Mm`=<mTxuDLMIb2pj$+n+uipdBj9fseE;74}15_uOtJWS{ zktqmHQkL!M31*knFz#&d7jZ;^6Tkgh+S^yT&&XVw+el2ZW07w;A&nDR-ZS@Td3BPt z@+u)SI?7FD9g3Jc5_J2Z2B)zNierE(5-{+YZ$tj{-YR7pVQs7yP30vfBkY1>a}vy+ zZ~b$j1<1vi-JI_&eFlpKiTehC<He50xwi)AXJ@hCYrMhn0jFbdB-23s=uhbxZpB}D z<+}3dQ7_)77L4=&?57!Ip_73DsT-|h9c*A>C@>=*)Ph{t_;U`T8HK?31|)H@wyq9) za1nAf<J<76z|@vR_8U5}Q0!H0)@L0=X#_xxy>+AsDC(RyVb3ZA{S8tc2Y(jqir9Ds z$H6bA?Idwzjt~1B2koH=)n;Jwv;K<YAXRf4mV{*DeKqRgNaU)_We?$vk>YYUjylTS z@h29K9hGB7t!l8P)Oee%576JtvN&y|zQez5wx`+!m^dwcT}T}Cs^`8xy(|lJtuGc> z!k#HGwwL_L>ct&-zR&Wrs*Fe*ix0X7Wj1VaaM0FR_QB0Rel&?RKT1VIFq8$#{#c0D zqOWOQvHF!+sB^|daUG37WsqO9>NMKm=OPqO%E*$if&6Hw75Dn?Ol~-=3B;QsWVzMQ zR7k36|C?MvK}S}0-Ou=C;Cz$<)xpi*V&MC_iQ3x46LRvA`!a2IDq7Ba>D;^_Qc(bv z-8_F-*`R7Ay~K_5P4D0<P}FuqqHgu1vV8qaUqJ|x{|TY<UIY>+9wuqsFjin-TG%ys zkB7;99EKCO78jr3oGPy89>IE&kRsc>nwZHoDqYlY7210S_%x=SX50>Lu3H(R`Po4a z3}|D@&ZFf*)xZByZLvB5?S|8grfN$K+wND7#0SjqQpm~*U~`2vZ)<Q^kb;`4LN;Yj z><aW?1ZHQ;FFXJ|R)Sg0>)U11C=}{Qv+VTQiSo&KamA;7F0G5wE+mWCHS+FgTcond zlC$mHM-w>|HQTyTo@&r#olYp68Anee-c1?~mHiRh410?RB@1T&72`vp?3H;?mx{?n zXJ{fMh7Sbd`3dMo+md555=jxP<v3Jt@T7_R{k>Ed8LFJ#+$tM1C`LK8NgNO+iHpuG zOh1a0A092C+^fJ7H-+u@e#SOenUaqYZBXFApLQuyvoQ&Uuu?wCu!`&4v}k`-<Qgy@ zKNsFj0>JBRw10H>H+SsvU89Oby|tg+#ozT$yUg(S(Z7~kBI$lhbO7*5-X3UvQQrzG zVgU-bk9S}_!Uig{KLG^g+jI*~ca&TqXgNnG$@99z-tF3l&Zg?J$``U`C`OTq6h!RA z80A%hI5?$;xf_8Ya0M8aJIJE^m&=c4T=xK1NK&4Lz=xf<s^_?PN^ih5TaDyf`_(oX zMd`$v1h07K;f4CJhLe(KX+{!$$LVJ<LrOhw*1pqI;BiaA2Nsqr&Ik>etj_}bPdsUU z6+Is^EI4TOY^MPbw6!qg2M2Xy1>qp@5SbPk<+9n2IgXOHrOGwk5wKn?TpT76tMxpU z0J8fRv{sSZ@ED$rqXF%8GC~lc91UbUm?yq@xUhEwvHkviaY`t;&T)GSP!Z3Vt<u^C ztQC=O7+)w`iFb<)WPASbq&IUh7mmi4Hv_!_y6WIdf(1Q20tQ_3$HT>vbhNhLG&wex zxlpabw76E`m*>wYl4wQQ)~lb8cTVRs#4|E>dA3`~hyZozS5%_Cq3t1R?=1T{tVj*s zNl8=DCjQ80-s_-IREk1ald=h%2`7;$e`&{mkI{)RdTyCXFoESy$G~}qIT4N#8c?J7 z*q3g=ebP^#&_wkHTY;BPBxb42F{gT(ojWczUUu1+pz~dbmu31&W?2ui8Lgr7cQOUQ zT5J*%%vau_+o^T-w9teE$2H?`%yzctk?@8y>ImgqzD$md{#NH73g1NUJR8qA&s1Nb zbsbNfh$>jE)6SF-BqDf0mWevwzH`c%qEaAvUy&V(GLc8UJWhx)z<Kjk)i?r)T!qTX zQM2l@kMUD)=+chSo}$05)sVrX-#N5A&AVCPKC-F29!@LUe25KaxjuBoynA9wd590u z2B1MvH2@3>H3et49g0zon9T>hcBt0<&gR=h+F$O!c|(BbGtGn;3_zD4$%}M*oegAu z!_DPhy%;O}uqyE(Hn2QSSu08+iMsX7-(w^*3qc6MQz8(-h(ct0gCw?jj{G4Lbx6?0 z0s{<I%wE9Obz1U*P^KkBQpBydb4NYk{>km7fyXRXKA4F~fQZ;4FN=ykOH_QO3VoVn z;3-e{0SHJgsMha#9;0TudI3!P`{pld`<@I3o=2ePxy-sHmlyJEzj|}u*;wV&&iu-R z=Hr)T5@v5s>-0r8+CG?0)NVow8Jenpl8vvJu;?JIDj+oFE(8f(2J!S1o&g@>5Ro)q zAO)0${I2s>iHRMhc+`TSv19_=nBpTPh`?Z`ydj#ZsS0jg_Tpy*mMC*p93PM_H}nI` zC;M4Tuz+v;c;eBKV5qzUUwJ)Cp9>@EngfdX!!~YLsRWiTiZFCjz^c*NZ$8d3DwZXa z^68#-_*qgd)2+l1*#EJxIWZXYwlRhZhfa}S=&Dm9m^!u8IVv2IvN*!yVnrK<no3|T zBWV6^RT#9kHa|3_f9KR_Pk$CL+cp_tTh&56vSpjz*?PYg$o<$wXwxM(nwSz|@ZA|1 z^I1hlf8U6u8$7;N8!3`X$Is9B++oOmazK$CaE9?o+ZZ$obAw5!e@)(&s&M=@qxQ3G zY*6v1?g3eL;Us2q2+V%%2z6W2XuOutkY4kFQYF_*f?oII$WdGTcFnw>y+~B&ki1%| z{#KRNK2?hYr|-`q_S^b+50suIPc?JSlSk}_Vwe^L2-sjBKs{X2EBJ0wL=4b<>`42A zvfaEbJ+G|-ORv$gYHoJ#*EUi91x2$y9ve@#tA2J$)Xnu6I7FU?M_F{2yAswaQ7hOv ze%a9#5Og0ceJ-n{SvBze>FerepJvbi*6~6on)#PH<@eqf?eqf_x^^w4owxTwyMP+J zEFtwm#1C3wf19;P(CyB<mqQcvKd7*nWd3;gST)T9th7TcImzji#b?Eq!cc(mvE)Nd z@A~zn8JC6j@$)AORd*X5y{(;DH%c0LOvXO|i(QkN&kFRhYozI9=60j>+s~yvST9Nz z<C_?#iJI|}wX`nxJXZuUmf0-fE=KP^P3l;`7x(?=(jZyQkF>0ZEDp|x=G5WNBu=k# zp~QY83aPxnPJlUFyVnlzGSP8wEl%8=K1z49-?}L!kIn#r5O~d8AqNqVY&l^vrDCyg zmu2wsS=G*m<E!0#`p?84QvuVf<rOb#0`G-ZTSvhU=X_Yv8V?N3!*9bx=BAe3WjdH( zCT;ISH)QM<vT%o3lWJ5#sXnzK<t$T5HN;brmO)e5tN4p@HBZt_HPrIi5cw}}j3#7< zVp)Jc+IiEQ)cPdJ;aA-+dH2ULHwE~ww*H{I-D$sk;gE59Ncwp-23*H3Etjam_<+=d zCEJle+lPp8|FKbDsxu^6uJaLmyI9ys4aCAoM@sXiFNg^o{hq7;P;HPQ>FQZARU!e_ zW>jYSM55U+Gb#?8{8%-Y4HFmSyY37nV-cJhNDQB6dto*;{KRoUl}%<WTkO357xUvI z>m6jAwu%UldGvXw+UT(LCyHzKjg4*dtuAdguBExm%t~eDA)``(Ya4t+qOkIO4y?Eb zJ%C7Di0Vj%QTdeZSk6EGd$f?a1PuCAw^3z8MOF2#W@(>j_o{`a2Isqo-=FgZKtA!R z#O+-7UqYGzi?C1f5{F&lfm;`8r7QMb&QJNOw*P2Hw+GR~bq{y1B=q+LyBUy}us!g% zgEZ0mOD5lVE{<U>_?u}`X$FwA6PN3m@^2NYa4|y9=LrSvQV>Rvwg;UOoK1!*{Lfjd z&C1>K@m6oPDb?xTxc=_6y(<lVDB`jMJlfM?)?!_zAge(p`^twO3BlUtb-q5$OuRJ? z*flm5KRT&I!e1mywP=T@59YgeJQ~F%?86S<aStts*ZQnx>g-I4gs;Y11YWc^1<oHt zzlEsL_QNwn<jk49Fpl=dnK_xyPR$z%YH_|l*Q}&CyhN{%3~jg!x(=$zN&j}Gi*BJY zNN1bSVOWLAzG=-RQ<^yQ1z>~LK533NEnw0q>HiMjV(!*++wlDraW<}GA`X`g58etN z-X2KQHoz`En~up#q|20POGCmlFj&D1aEBjKU-jWH&_R<BBv=~cBJ3!bK9+4r`V!-D z5U`TZjj8Kl$1=w6>2Y85J84T-3OjC+lke}AYY(!ijMHq1-bK*GWnrE09lCfwW~WH0 z5J1`XP|-gf=)DY;6c@N{!I!+68E8~-q&qDp%HC;o9EiABBt_YtMYzgbJ)s#0$r=pi z!LLex4K<c6Lr8Na<1>+nZ5E_(n>J5>?|oqO9o267=LP<rsBiPwqdqM*NYlIjF*6tv zc*d5ZRQyv*UGglx{<CEuJ}PLZMe{w0w9}!&4jmrUXX)gRM_cL4&Wi6sV^g4$wYRnP zz4<-QpP^ZZ*p2a+>44};&^yN#`?2BO;gvI=_HyKxYh@`Zf-p3UUBe2%1>}1gug)(d zemJ&rcP(!G_iy@D&dr_Gc)IgjGkm1b_gryb9tnwno|n}$xBa%CN7b%^xJ5hlF*d3~ z=0sKU-h~rh)(a0sA@Hd0N#1gkBfZDLviKk6S)K<z<Yz?nRJ&uqPL|NQ&ypl_=$&QL zuQK6b&X?ji&W0>SB%3Z*ixagIwFisN0}=F{7t1#RKC9n@q=fG4`bYqd$Pj$68D=!+ z^iF*_aH*DQz`<BguQ@KlFDV3rGrHESHooPi_U7f3ZoSO%g~#r!^I=un{`K7PF<*4w zdVW?X)cgL%abUUKvvo`|u+-VXxmJTc?FD9YQwqex$4BkvgNb)o3D~n0T5=<I{HiYw zXs@lUl@hx7_j2qUHT+ym?ZMxnWQV3-v_^UcKN@@uQ9JI-HeW|~=iO~F1?qu<mst^# zqJK*CIVeB&nbqq3Kb!^nFwjsvhsE}z#%BNk@Z9aSp4)p<HwzJS7mEi6;N#(Y#mVzv z{Mx*{B7Fa`mpnWoJUkkkn7986VDI?e+S2>~0(e9Oc>W789}@I<000zUtI1YLn*{$4 D;k<`{ literal 0 HcmV?d00001 diff --git a/resources/profiles/Anycubic/PHOTON MONO_thumbnail.png b/resources/profiles/Anycubic/PHOTON MONO_thumbnail.png new file mode 100644 index 0000000000000000000000000000000000000000..0aaf5c4cd6484315f7f99e187b670eb87dbed7cb GIT binary patch literal 35707 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 literal 0 HcmV?d00001 diff --git a/src/libslic3r/CMakeLists.txt b/src/libslic3r/CMakeLists.txt index 098131e00..61046e961 100644 --- a/src/libslic3r/CMakeLists.txt +++ b/src/libslic3r/CMakeLists.txt @@ -127,8 +127,8 @@ set(SLIC3R_SOURCES Format/SL1.cpp Format/SL1_SVG.hpp Format/SL1_SVG.cpp - Format/pwmx.hpp - Format/pwmx.cpp + Format/AnycubicSLA.hpp + Format/AnycubicSLA.cpp Format/STEP.hpp Format/STEP.cpp GCode/ThumbnailData.cpp diff --git a/src/libslic3r/Format/pwmx.cpp b/src/libslic3r/Format/AnycubicSLA.cpp similarity index 72% rename from src/libslic3r/Format/pwmx.cpp rename to src/libslic3r/Format/AnycubicSLA.cpp index f3f0f6802..6eeb6b3ea 100644 --- a/src/libslic3r/Format/pwmx.cpp +++ b/src/libslic3r/Format/AnycubicSLA.cpp @@ -1,4 +1,4 @@ -#include "pwmx.hpp" +#include "AnycubicSLA.hpp" #include "GCode/ThumbnailData.hpp" #include "SLA/RasterBase.hpp" #include "libslic3r/SLAPrint.hpp" @@ -22,6 +22,8 @@ #define CFG_DELAY_BEFORE_EXPOSURE "DELAY_BEFORE_EXPOSURE" #define CFG_BOTTOM_LIFT_SPEED "BOTTOM_LIFT_SPEED" #define CFG_BOTTOM_LIFT_DISTANCE "BOTTOM_LIFT_DISTANCE" +#define CFG_ANTIALIASING "ANTIALIASING" + #define PREV_W 224 #define PREV_H 168 @@ -31,7 +33,7 @@ namespace Slic3r { -static void pwx_get_pixel_span(const std::uint8_t* ptr, const std::uint8_t* end, +static void anycubicsla_get_pixel_span(const std::uint8_t* ptr, const std::uint8_t* end, std::uint8_t& pixel, size_t& span_len) { size_t max_len; @@ -46,7 +48,7 @@ static void pwx_get_pixel_span(const std::uint8_t* ptr, const std::uint8_t* end, } } -struct PWXRasterEncoder +struct AnycubicSLARasterEncoder { sla::EncodedRaster operator()(const void *ptr, size_t w, @@ -62,7 +64,7 @@ struct PWXRasterEncoder const std::uint8_t *src = reinterpret_cast<const std::uint8_t *>(ptr); const std::uint8_t *src_end = src + size; while (src < src_end) { - pwx_get_pixel_span(src, src_end, pixel, span_len); + anycubicsla_get_pixel_span(src, src_end, pixel, span_len); src += span_len; // fully transparent of fully opaque pixel if (pixel == 0 || pixel == 0xF0) { @@ -78,27 +80,27 @@ struct PWXRasterEncoder } } - return sla::EncodedRaster(std::move(dst), "pwx"); + return sla::EncodedRaster(std::move(dst), "pwimg"); } }; using ConfMap = std::map<std::string, std::string>; -typedef struct pwmx_format_intro +typedef struct anycubicsla_format_intro { char tag[12]; - std::uint32_t version; // value 1 - std::uint32_t area_num; // unknown - usually 4 + std::uint32_t version; // value 1 (also known as 515, 516 and 517) + std::uint32_t area_num; // Number of tables - usually 4 std::uint32_t header_data_offset; - std::float_t intro24; // unknown - usually 0 + std::uint32_t software_data_offset; // unused in version 1 std::uint32_t preview_data_offset; - std::float_t intro32; // unknown + std::uint32_t layer_color_offset; // unused in version 1 std::uint32_t layer_data_offset; - std::float_t intro40; // unknown + std::uint32_t extra_data_offset; // unused here (only used in version 516) std::uint32_t image_data_offset; -} pwmx_format_intro; +} anycubicsla_format_intro; -typedef struct pwmx_format_header +typedef struct anycubicsla_format_header { char tag[12]; std::uint32_t payload_size; @@ -121,11 +123,11 @@ typedef struct pwmx_format_header std::uint32_t per_layer_override; // ? unknown meaning ? std::uint32_t print_time_s; std::uint32_t transition_layer_count; - std::uint32_t unknown; // ? usually 0 ? + std::uint32_t transition_layer_type; // usually 0 -} pwmx_format_header; +} anycubicsla_format_header; -typedef struct pwmx_format_preview +typedef struct anycubicsla_format_preview { char tag[12]; std::uint32_t payload_size; @@ -134,16 +136,16 @@ typedef struct pwmx_format_preview std::uint32_t preview_h; // raw image data in BGR565 format std::uint8_t pixels[PREV_W * PREV_H * 2]; -} pwmx_format_preview; +} anycubicsla_format_preview; -typedef struct pwmx_format_layers_header +typedef struct anycubicsla_format_layers_header { char tag[12]; std::uint32_t payload_size; std::uint32_t layer_count; -} pwmx_format_layers_header; +} anycubicsla_format_layers_header; -typedef struct pwmx_format_layer +typedef struct anycubicsla_format_layer { std::uint32_t image_offset; std::uint32_t image_size; @@ -153,20 +155,20 @@ typedef struct pwmx_format_layer std::float_t layer_height_mm; std::float_t layer44; // unkown - usually 0 std::float_t layer48; // unkown - usually 0 -} pwmx_format_layer; +} anycubicsla_format_layer; -typedef struct pwmx_format_misc +typedef struct anycubicsla_format_misc { std::float_t bottom_layer_height_mm; std::float_t bottom_lift_distance_mm; std::float_t bottom_lift_speed_mms; -} pwmx_format_misc; +} anycubicsla_format_misc; -class PwmxFormatConfigDef : public ConfigDef +class AnycubicSLAFormatConfigDef : public ConfigDef { public: - PwmxFormatConfigDef() + AnycubicSLAFormatConfigDef() { add(CFG_LIFT_DISTANCE, coFloat); add(CFG_LIFT_SPEED, coFloat); @@ -174,17 +176,18 @@ public: add(CFG_DELAY_BEFORE_EXPOSURE, coFloat); add(CFG_BOTTOM_LIFT_DISTANCE, coFloat); add(CFG_BOTTOM_LIFT_SPEED, coFloat); + add(CFG_ANTIALIASING, coInt); } }; -class PwmxFormatDynamicConfig : public DynamicConfig +class AnycubicSLAFormatDynamicConfig : public DynamicConfig { public: - PwmxFormatDynamicConfig(){}; + AnycubicSLAFormatDynamicConfig(){}; const ConfigDef *def() const override { return &config_def; } private: - PwmxFormatConfigDef config_def; + AnycubicSLAFormatConfigDef config_def; }; namespace { @@ -222,8 +225,8 @@ template<class T> void crop_value(T &val, T val_min, T val_max) } } -void fill_preview(pwmx_format_preview &p, - pwmx_format_misc &/*m*/, +void fill_preview(anycubicsla_format_preview &p, + anycubicsla_format_misc &/*m*/, const ThumbnailsList &thumbnails) { @@ -266,9 +269,8 @@ void fill_preview(pwmx_format_preview &p, } } - -void fill_header(pwmx_format_header &h, - pwmx_format_misc &m, +void fill_header(anycubicsla_format_header &h, + anycubicsla_format_misc &m, const SLAPrint &print, std::uint32_t layer_count) { @@ -282,7 +284,7 @@ void fill_header(pwmx_format_header &h, auto mat_opt = cfg.option("material_notes"); std::string mnotes = mat_opt? cfg.option("material_notes")->serialize() : ""; // create a config parser from the material notes - Slic3r::PwmxFormatDynamicConfig mat_cfg; + Slic3r::AnycubicSLAFormatDynamicConfig mat_cfg; SLAPrintStatistics stats = print.print_statistics(); // sanitize the string config @@ -314,6 +316,13 @@ void fill_header(pwmx_format_header &h, h.per_layer_override = 0; // TODO - expose these variables to the UI rather than using material notes + if (mat_cfg.has(CFG_ANTIALIASING)) { + h.antialiasing = get_cfg_value_i(mat_cfg, CFG_ANTIALIASING); + crop_value(h.antialiasing, (uint32_t) 0, (uint32_t) 1); + } else { + h.antialiasing = 1; + } + h.delay_before_exposure_s = get_cfg_value_f(mat_cfg, CFG_DELAY_BEFORE_EXPOSURE, 0.5f); crop_value(h.delay_before_exposure_s, 0.0f, 1000.0f); @@ -356,7 +365,7 @@ void fill_header(pwmx_format_header &h, } // namespace -std::unique_ptr<sla::RasterBase> PwmxArchive::create_raster() const +std::unique_ptr<sla::RasterBase> AnycubicSLAArchive::create_raster() const { sla::Resolution res; sla::PixelDim pxdim; @@ -389,13 +398,13 @@ std::unique_ptr<sla::RasterBase> PwmxArchive::create_raster() const return sla::create_raster_grayscale_aa(res, pxdim, gamma, tr); } -sla::RasterEncoder PwmxArchive::get_encoder() const +sla::RasterEncoder AnycubicSLAArchive::get_encoder() const { - return PWXRasterEncoder{}; + return AnycubicSLARasterEncoder{}; } // Endian safe write of little endian 32bit ints -static void pwmx_write_int32(std::ofstream &out, std::uint32_t val) +static void anycubicsla_write_int32(std::ofstream &out, std::uint32_t val) { const char i1 = (val & 0xFF); const char i2 = (val >> 8) & 0xFF; @@ -407,104 +416,106 @@ static void pwmx_write_int32(std::ofstream &out, std::uint32_t val) out.write((const char *) &i3, 1); out.write((const char *) &i4, 1); } -static void pwmx_write_float(std::ofstream &out, std::float_t val) +static void anycubicsla_write_float(std::ofstream &out, std::float_t val) { std::uint32_t *f = (std::uint32_t *) &val; - pwmx_write_int32(out, *f); + anycubicsla_write_int32(out, *f); } -static void pwmx_write_intro(std::ofstream &out, pwmx_format_intro &i) +static void anycubicsla_write_intro(std::ofstream &out, anycubicsla_format_intro &i) { out.write(TAG_INTRO, sizeof(i.tag)); - pwmx_write_int32(out, i.version); - pwmx_write_int32(out, i.area_num); - pwmx_write_int32(out, i.header_data_offset); - pwmx_write_int32(out, i.intro24); - pwmx_write_int32(out, i.preview_data_offset); - pwmx_write_int32(out, i.intro32); - pwmx_write_int32(out, i.layer_data_offset); - pwmx_write_int32(out, i.intro40); - pwmx_write_int32(out, i.image_data_offset); + anycubicsla_write_int32(out, i.version); + anycubicsla_write_int32(out, i.area_num); + anycubicsla_write_int32(out, i.header_data_offset); + anycubicsla_write_int32(out, i.software_data_offset); + anycubicsla_write_int32(out, i.preview_data_offset); + anycubicsla_write_int32(out, i.layer_color_offset); + anycubicsla_write_int32(out, i.layer_data_offset); + anycubicsla_write_int32(out, i.extra_data_offset); + anycubicsla_write_int32(out, i.image_data_offset); } -static void pwmx_write_header(std::ofstream &out, pwmx_format_header &h) +static void anycubicsla_write_header(std::ofstream &out, anycubicsla_format_header &h) { out.write(TAG_HEADER, sizeof(h.tag)); - pwmx_write_int32(out, h.payload_size); - pwmx_write_float(out, h.pixel_size_um); - pwmx_write_float(out, h.layer_height_mm); - pwmx_write_float(out, h.exposure_time_s); - pwmx_write_float(out, h.delay_before_exposure_s); - pwmx_write_float(out, h.bottom_exposure_time_s); - pwmx_write_float(out, h.bottom_layer_count); - pwmx_write_float(out, h.lift_distance_mm); - pwmx_write_float(out, h.lift_speed_mms); - pwmx_write_float(out, h.retract_speed_mms); - pwmx_write_float(out, h.volume_ml); - pwmx_write_int32(out, h.antialiasing); - pwmx_write_int32(out, h.res_x); - pwmx_write_int32(out, h.res_y); - pwmx_write_float(out, h.weight_g); - pwmx_write_float(out, h.price); - pwmx_write_int32(out, h.price_currency); - pwmx_write_int32(out, h.per_layer_override); - pwmx_write_int32(out, h.print_time_s); - pwmx_write_int32(out, h.transition_layer_count); - pwmx_write_int32(out, h.unknown); + anycubicsla_write_int32(out, h.payload_size); + anycubicsla_write_float(out, h.pixel_size_um); + anycubicsla_write_float(out, h.layer_height_mm); + anycubicsla_write_float(out, h.exposure_time_s); + anycubicsla_write_float(out, h.delay_before_exposure_s); + anycubicsla_write_float(out, h.bottom_exposure_time_s); + anycubicsla_write_float(out, h.bottom_layer_count); + anycubicsla_write_float(out, h.lift_distance_mm); + anycubicsla_write_float(out, h.lift_speed_mms); + anycubicsla_write_float(out, h.retract_speed_mms); + anycubicsla_write_float(out, h.volume_ml); + anycubicsla_write_int32(out, h.antialiasing); + anycubicsla_write_int32(out, h.res_x); + anycubicsla_write_int32(out, h.res_y); + anycubicsla_write_float(out, h.weight_g); + anycubicsla_write_float(out, h.price); + anycubicsla_write_int32(out, h.price_currency); + anycubicsla_write_int32(out, h.per_layer_override); + anycubicsla_write_int32(out, h.print_time_s); + anycubicsla_write_int32(out, h.transition_layer_count); + anycubicsla_write_int32(out, h.transition_layer_type); } -static void pwmx_write_preview(std::ofstream &out, pwmx_format_preview &p) +static void anycubicsla_write_preview(std::ofstream &out, anycubicsla_format_preview &p) { out.write(TAG_PREVIEW, sizeof(p.tag)); - pwmx_write_int32(out, p.payload_size); - pwmx_write_int32(out, p.preview_w); - pwmx_write_int32(out, p.preview_dpi); - pwmx_write_int32(out, p.preview_h); + anycubicsla_write_int32(out, p.payload_size); + anycubicsla_write_int32(out, p.preview_w); + anycubicsla_write_int32(out, p.preview_dpi); + anycubicsla_write_int32(out, p.preview_h); out.write((const char*) p.pixels, sizeof(p.pixels)); } -static void pwmx_write_layers_header(std::ofstream &out, pwmx_format_layers_header &h) +static void anycubicsla_write_layers_header(std::ofstream &out, anycubicsla_format_layers_header &h) { out.write(TAG_LAYERS, sizeof(h.tag)); - pwmx_write_int32(out, h.payload_size); - pwmx_write_int32(out, h.layer_count); + anycubicsla_write_int32(out, h.payload_size); + anycubicsla_write_int32(out, h.layer_count); } -static void pwmx_write_layer(std::ofstream &out, pwmx_format_layer &l) +static void anycubicsla_write_layer(std::ofstream &out, anycubicsla_format_layer &l) { - pwmx_write_int32(out, l.image_offset); - pwmx_write_int32(out, l.image_size); - pwmx_write_float(out, l.lift_distance_mm); - pwmx_write_float(out, l.lift_speed_mms); - pwmx_write_float(out, l.exposure_time_s); - pwmx_write_float(out, l.layer_height_mm); - pwmx_write_float(out, l.layer44); - pwmx_write_float(out, l.layer48); + anycubicsla_write_int32(out, l.image_offset); + anycubicsla_write_int32(out, l.image_size); + anycubicsla_write_float(out, l.lift_distance_mm); + anycubicsla_write_float(out, l.lift_speed_mms); + anycubicsla_write_float(out, l.exposure_time_s); + anycubicsla_write_float(out, l.layer_height_mm); + anycubicsla_write_float(out, l.layer44); + anycubicsla_write_float(out, l.layer48); } -void PwmxArchive::export_print(const std::string fname, +void AnycubicSLAArchive::export_print(const std::string fname, const SLAPrint &print, const ThumbnailsList &thumbnails, const std::string &/*projectname*/) { std::uint32_t layer_count = m_layers.size(); - pwmx_format_intro intro = {}; - pwmx_format_header header = {}; - pwmx_format_preview preview = {}; - pwmx_format_layers_header layers_header = {}; - pwmx_format_misc misc = {}; + anycubicsla_format_intro intro = {}; + anycubicsla_format_header header = {}; + anycubicsla_format_preview preview = {}; + anycubicsla_format_layers_header layers_header = {}; + anycubicsla_format_misc misc = {}; std::vector<uint8_t> layer_images; std::uint32_t image_offset; - intro.version = 1; + assert(m_version == ANYCUBIC_SLA_FORMAT_VERSION_1); + + intro.version = m_version; intro.area_num = 4; intro.header_data_offset = sizeof(intro); intro.preview_data_offset = sizeof(intro) + sizeof(header); intro.layer_data_offset = intro.preview_data_offset + sizeof(preview); intro.image_data_offset = intro.layer_data_offset + sizeof(layers_header) + - (sizeof(pwmx_format_layer) * layer_count); + (sizeof(anycubicsla_format_layer) * layer_count); fill_header(header, misc, print, layer_count); fill_preview(preview, misc, thumbnails); @@ -513,21 +524,21 @@ void PwmxArchive::export_print(const std::string fname, // open the file and write the contents std::ofstream out; out.open(fname, std::ios::binary | std::ios::out | std::ios::trunc); - pwmx_write_intro(out, intro); - pwmx_write_header(out, header); - pwmx_write_preview(out, preview); + anycubicsla_write_intro(out, intro); + anycubicsla_write_header(out, header); + anycubicsla_write_preview(out, preview); layers_header.payload_size = intro.image_data_offset - intro.layer_data_offset - sizeof(layers_header.tag) - sizeof(layers_header.payload_size); layers_header.layer_count = layer_count; - pwmx_write_layers_header(out, layers_header); + anycubicsla_write_layers_header(out, layers_header); //layers layer_images.reserve(layer_count * LAYER_SIZE_ESTIMATE); image_offset = intro.image_data_offset; size_t i = 0; for (const sla::EncodedRaster &rst : m_layers) { - pwmx_format_layer l; + anycubicsla_format_layer l; std::memset(&l, 0, sizeof(l)); l.image_offset = image_offset; l.image_size = rst.size(); @@ -543,7 +554,7 @@ void PwmxArchive::export_print(const std::string fname, l.lift_speed_mms = header.lift_speed_mms; } image_offset += l.image_size; - pwmx_write_layer(out, l); + anycubicsla_write_layer(out, l); // add the rle encoded layer image into the buffer const char* img_start = reinterpret_cast<const char*>(rst.data()); const char* img_end = img_start + rst.size(); diff --git a/src/libslic3r/Format/AnycubicSLA.hpp b/src/libslic3r/Format/AnycubicSLA.hpp new file mode 100644 index 000000000..46eb68d00 --- /dev/null +++ b/src/libslic3r/Format/AnycubicSLA.hpp @@ -0,0 +1,81 @@ +#ifndef _SLIC3R_FORMAT_PWMX_HPP_ +#define _SLIC3R_FORMAT_PWMX_HPP_ + +#include <string> + +#include "SLAArchiveWriter.hpp" + +#include "libslic3r/PrintConfig.hpp" + +#define ANYCUBIC_SLA_FORMAT_VERSION_1 1 +#define ANYCUBIC_SLA_FORMAT_VERSION_515 515 +#define ANYCUBIC_SLA_FORMAT_VERSION_516 516 +#define ANYCUBIC_SLA_FORMAT_VERSION_517 517 + +#define ANYCUBIC_SLA_FORMAT_VERSIONED(FILEFORMAT, NAME, VERSION) \ + { FILEFORMAT, { FILEFORMAT, [] (const auto &cfg) { return std::make_unique<AnycubicSLAArchive>(cfg, VERSION); } } } + +#define ANYCUBIC_SLA_FORMAT(FILEFORMAT, NAME) \ + ANYCUBIC_SLA_FORMAT_VERSIONED(FILEFORMAT, NAME, ANYCUBIC_SLA_FORMAT_VERSION_1) + +/** + // Supports only ANYCUBIC_SLA_VERSION_1 + ANYCUBIC_SLA_FORMAT_VERSIONED("pws", "Photon / Photon S", ANYCUBIC_SLA_VERSION_1), + ANYCUBIC_SLA_FORMAT_VERSIONED("pw0", "Photon Zero", ANYCUBIC_SLA_VERSION_1), + ANYCUBIC_SLA_FORMAT_VERSIONED("pwx", "Photon X", ANYCUBIC_SLA_VERSION_1), + + // Supports ANYCUBIC_SLA_VERSION_1 and ANYCUBIC_SLA_VERSION_515 + ANYCUBIC_SLA_FORMAT_VERSIONED("pwmo", "Photon Mono", ANYCUBIC_SLA_VERSION_1), + ANYCUBIC_SLA_FORMAT_VERSIONED("pwms", "Photon Mono SE", ANYCUBIC_SLA_VERSION_1), + ANYCUBIC_SLA_FORMAT_VERSIONED("dlp", "Photon Ultra", ANYCUBIC_SLA_VERSION_1), + ANYCUBIC_SLA_FORMAT_VERSIONED("pwmx", "Photon Mono X", ANYCUBIC_SLA_VERSION_1), + ANYCUBIC_SLA_FORMAT_VERSIONED("pmsq", "Photon Mono SQ", ANYCUBIC_SLA_VERSION_1), + + // Supports ANYCUBIC_SLA_VERSION_515 and ANYCUBIC_SLA_VERSION_516 + ANYCUBIC_SLA_FORMAT_VERSIONED("pwma", "Photon Mono 4K", ANYCUBIC_SLA_VERSION_515), + ANYCUBIC_SLA_FORMAT_VERSIONED("pm3", "Photon M3", ANYCUBIC_SLA_VERSION_515), + ANYCUBIC_SLA_FORMAT_VERSIONED("pm3m", "Photon M3 Max", ANYCUBIC_SLA_VERSION_515), + + // Supports NYCUBIC_SLA_VERSION_515 and ANYCUBIC_SLA_VERSION_516 and ANYCUBIC_SLA_VERSION_517 + ANYCUBIC_SLA_FORMAT_VERSIONED("pwmb", "Photon Mono X 6K / Photon M3 Plus", ANYCUBIC_SLA_VERSION_515), + ANYCUBIC_SLA_FORMAT_VERSIONED("dl2p", "Photon Photon D2", ANYCUBIC_SLA_VERSION_515), + ANYCUBIC_SLA_FORMAT_VERSIONED("pmx2", "Photon Mono X2", ANYCUBIC_SLA_VERSION_515), + ANYCUBIC_SLA_FORMAT_VERSIONED("pm3r", "Photon M3 Premium", ANYCUBIC_SLA_VERSION_515), +*/ + +namespace Slic3r { + +class AnycubicSLAArchive: public SLAArchiveWriter { + SLAPrinterConfig m_cfg; + uint16_t m_version; + +protected: + std::unique_ptr<sla::RasterBase> create_raster() const override; + sla::RasterEncoder get_encoder() const override; + + SLAPrinterConfig & cfg() { return m_cfg; } + const SLAPrinterConfig & cfg() const { return m_cfg; } + +public: + + AnycubicSLAArchive() = default; + explicit AnycubicSLAArchive(const SLAPrinterConfig &cfg): + m_cfg(cfg), m_version(ANYCUBIC_SLA_FORMAT_VERSION_1) {} + explicit AnycubicSLAArchive(SLAPrinterConfig &&cfg): + m_cfg(std::move(cfg)), m_version(ANYCUBIC_SLA_FORMAT_VERSION_1) {} + + explicit AnycubicSLAArchive(const SLAPrinterConfig &cfg, uint16_t version): + m_cfg(cfg), m_version(version) {} + explicit AnycubicSLAArchive(SLAPrinterConfig &&cfg, uint16_t version): + m_cfg(std::move(cfg)), m_version(version) {} + + void export_print(const std::string fname, + const SLAPrint &print, + const ThumbnailsList &thumbnails, + const std::string &projectname = "") override; +}; + + +} // namespace Slic3r::sla + +#endif // _SLIC3R_FORMAT_PWMX_HPP_ diff --git a/src/libslic3r/Format/SLAArchiveWriter.cpp b/src/libslic3r/Format/SLAArchiveWriter.cpp index b28c2c680..7546d7c46 100644 --- a/src/libslic3r/Format/SLAArchiveWriter.cpp +++ b/src/libslic3r/Format/SLAArchiveWriter.cpp @@ -2,7 +2,7 @@ #include "SL1.hpp" #include "SL1_SVG.hpp" -#include "pwmx.hpp" +#include "AnycubicSLA.hpp" #include "libslic3r/libslic3r.h" @@ -33,10 +33,9 @@ static const std::map<std::string, ArchiveEntry> REGISTERED_ARCHIVES { "SL2", { "sl1_svg", [] (const auto &cfg) { return std::make_unique<SL1_SVGArchive>(cfg); } } }, - { - "pwmx", - { "pwmx", [] (const auto &cfg) { return std::make_unique<PwmxArchive>(cfg); } } - } + ANYCUBIC_SLA_FORMAT("pwmo", "Photon Mono"), + ANYCUBIC_SLA_FORMAT("pwmx", "Photon Mono X"), + ANYCUBIC_SLA_FORMAT("pwms", "Photon Mono SE"), }; std::unique_ptr<SLAArchiveWriter> diff --git a/src/libslic3r/Format/pwmx.hpp b/src/libslic3r/Format/pwmx.hpp deleted file mode 100644 index 6d667fab7..000000000 --- a/src/libslic3r/Format/pwmx.hpp +++ /dev/null @@ -1,37 +0,0 @@ -#ifndef _SLIC3R_FORMAT_PWMX_HPP_ -#define _SLIC3R_FORMAT_PWMX_HPP_ - -#include <string> - -#include "SLAArchiveWriter.hpp" - -#include "libslic3r/PrintConfig.hpp" - -namespace Slic3r { - -class PwmxArchive: public SLAArchiveWriter { - SLAPrinterConfig m_cfg; - -protected: - std::unique_ptr<sla::RasterBase> create_raster() const override; - sla::RasterEncoder get_encoder() const override; - - SLAPrinterConfig & cfg() { return m_cfg; } - const SLAPrinterConfig & cfg() const { return m_cfg; } - -public: - - PwmxArchive() = default; - explicit PwmxArchive(const SLAPrinterConfig &cfg): m_cfg(cfg) {} - explicit PwmxArchive(SLAPrinterConfig &&cfg): m_cfg(std::move(cfg)) {} - - void export_print(const std::string fname, - const SLAPrint &print, - const ThumbnailsList &thumbnails, - const std::string &projectname = "") override; -}; - - -} // namespace Slic3r::sla - -#endif // _SLIC3R_FORMAT_PWMX_HPP_ diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index fdf97cbe2..dffd94321 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -3868,7 +3868,9 @@ void PrintConfigDef::init_sla_params() def->multiline = true; def->full_width = true; def->height = 13; - def->mode = comAdvanced; + // TODO currently notes are the only way to pass data + // for non-PrusaResearch printers. We therefore need to always show them + def->mode = comSimple; def->set_default_value(new ConfigOptionString("")); def = this->add("material_vendor", coString);