From f6741a933f5c212098857927b4512f40ffcfc6fa Mon Sep 17 00:00:00 2001 From: fr3ak2402 <96239814+fr3ak2402@users.noreply.github.com> Date: Fri, 5 May 2023 15:10:04 +0200 Subject: [PATCH] Add Voxelab Aquila X2 Profile (#956) * Adding the Qidi X-Plus Qidi X-Plus profile Qidi X-Plus image * Revision of the pressure plate model Qidi X-Plus * Add Artillery Profiles Artillery Genius Artillery Hornet * Adds Elepoo Neptune 3 profiles Elepoo Neptune 3 Elepoo Neptune 3 Pro Elepoo Neptune 3 Plus Elepoo Neptune 3 Max * Revision of the Qidi profiles Adjustments of the speeds: Qidi X-Plus Qidi X-Max Qidi X-CF Pro * Revision of the Qidi profiles Qidi X-Smart 3 Qidi X-Plus 3 Qidi X-Max 3 * Add Voxelab Aquila X2 Profile * Revision of the Voxelab Processes Changing the Aquila X2 process names * Acceleration adjustment Voxelab Voxelab Aquila X2 * Adjustment of the printing area --- resources/profiles/Voxelab.json | 67 ++++++++ .../Voxelab/filament/Voxelab Generic ABS.json | 18 +++ .../filament/Voxelab Generic PETG.json | 45 ++++++ .../Voxelab/filament/Voxelab Generic PLA.json | 21 +++ .../Voxelab/filament/fdm_filament_abs.json | 88 +++++++++++ .../Voxelab/filament/fdm_filament_common.json | 144 ++++++++++++++++++ .../Voxelab/filament/fdm_filament_pet.json | 82 ++++++++++ .../Voxelab/filament/fdm_filament_pla.json | 91 +++++++++++ .../machine/Voxelab Aquila X2 0.4 nozzle.json | 109 +++++++++++++ .../Voxelab/machine/Voxelab Aquila X2.json | 12 ++ .../Voxelab/machine/fdm_machine_common.json | 117 ++++++++++++++ .../0.16mm Optimal @Voxelab AquilaX2.json | 109 +++++++++++++ .../0.20mm Standard @Voxelab AquilaX2.json | 109 +++++++++++++ .../Voxelab/process/fdm_process_common.json | 70 +++++++++ .../voxelab_aquilax2_buildplate_model.stl | Bin 0 -> 5484 bytes .../voxelab_aquilax2_buildplate_texture.png | Bin 0 -> 6214 bytes .../image/printer/Voxelab Aquila X2_cover.png | Bin 0 -> 23254 bytes 17 files changed, 1082 insertions(+) create mode 100644 resources/profiles/Voxelab.json create mode 100644 resources/profiles/Voxelab/filament/Voxelab Generic ABS.json create mode 100644 resources/profiles/Voxelab/filament/Voxelab Generic PETG.json create mode 100644 resources/profiles/Voxelab/filament/Voxelab Generic PLA.json create mode 100644 resources/profiles/Voxelab/filament/fdm_filament_abs.json create mode 100644 resources/profiles/Voxelab/filament/fdm_filament_common.json create mode 100644 resources/profiles/Voxelab/filament/fdm_filament_pet.json create mode 100644 resources/profiles/Voxelab/filament/fdm_filament_pla.json create mode 100644 resources/profiles/Voxelab/machine/Voxelab Aquila X2 0.4 nozzle.json create mode 100644 resources/profiles/Voxelab/machine/Voxelab Aquila X2.json create mode 100644 resources/profiles/Voxelab/machine/fdm_machine_common.json create mode 100644 resources/profiles/Voxelab/process/0.16mm Optimal @Voxelab AquilaX2.json create mode 100644 resources/profiles/Voxelab/process/0.20mm Standard @Voxelab AquilaX2.json create mode 100644 resources/profiles/Voxelab/process/fdm_process_common.json create mode 100644 resources/profiles/Voxelab/voxelab_aquilax2_buildplate_model.stl create mode 100644 resources/profiles/Voxelab/voxelab_aquilax2_buildplate_texture.png create mode 100644 resources/web/image/printer/Voxelab Aquila X2_cover.png diff --git a/resources/profiles/Voxelab.json b/resources/profiles/Voxelab.json new file mode 100644 index 0000000000..9963178855 --- /dev/null +++ b/resources/profiles/Voxelab.json @@ -0,0 +1,67 @@ +{ + "name": "Voxelab", + "url": "", + "version": "01.00.00.00", + "force_update": "0", + "description": "Voxelab configurations", + "machine_model_list": [ + { + "name": "Voxelab Aquila X2", + "sub_path": "machine/Voxelab Aquila X2.json" + } + ], + "process_list": [ + { + "name": "fdm_process_common", + "sub_path": "process/fdm_process_common.json" + }, + { + "name": "0.16mm Optimal @Voxelab AquilaX2", + "sub_path": "process/0.16mm Optimal @Voxelab AquilaX2.json" + }, + { + "name": "0.20mm Standard @Voxelab AquilaX2", + "sub_path": "process/0.20mm Standard @Voxelab AquilaX2.json" + } + ], + "filament_list": [ + { + "name": "fdm_filament_common", + "sub_path": "filament/fdm_filament_common.json" + }, + { + "name": "fdm_filament_abs", + "sub_path": "filament/fdm_filament_abs.json" + }, + { + "name": "fdm_filament_pet", + "sub_path": "filament/fdm_filament_pet.json" + }, + { + "name": "fdm_filament_pla", + "sub_path": "filament/fdm_filament_pla.json" + }, + { + "name": "Voxelab Generic ABS", + "sub_path": "filament/Voxelab Generic ABS.json" + }, + { + "name": "Voxelab Generic PETG", + "sub_path": "filament/Voxelab Generic PETG.json" + }, + { + "name": "Voxelab Generic PLA", + "sub_path": "filament/Voxelab Generic PLA.json" + } + ], + "machine_list": [ + { + "name": "fdm_machine_common", + "sub_path": "machine/fdm_machine_common.json" + }, + { + "name": "Voxelab Aquila X2 0.4 nozzle", + "sub_path": "machine/Voxelab Aquila X2 0.4 nozzle.json" + } + ] +} diff --git a/resources/profiles/Voxelab/filament/Voxelab Generic ABS.json b/resources/profiles/Voxelab/filament/Voxelab Generic ABS.json new file mode 100644 index 0000000000..9e485f70c8 --- /dev/null +++ b/resources/profiles/Voxelab/filament/Voxelab Generic ABS.json @@ -0,0 +1,18 @@ +{ + "type": "filament", + "filament_id": "GFB99", + "setting_id": "GFSA04", + "name": "Voxelab Generic ABS", + "from": "system", + "instantiation": "true", + "inherits": "fdm_filament_abs", + "filament_flow_ratio": [ + "0.926" + ], + "filament_max_volumetric_speed": [ + "12" + ], + "compatible_printers": [ + "Voxelab Aquila X2 0.4 nozzle" + ] +} diff --git a/resources/profiles/Voxelab/filament/Voxelab Generic PETG.json b/resources/profiles/Voxelab/filament/Voxelab Generic PETG.json new file mode 100644 index 0000000000..9b54afa219 --- /dev/null +++ b/resources/profiles/Voxelab/filament/Voxelab Generic PETG.json @@ -0,0 +1,45 @@ +{ + "type": "filament", + "filament_id": "GFG99", + "setting_id": "GFSG99", + "name": "Voxelab Generic PETG", + "from": "system", + "instantiation": "true", + "inherits": "fdm_filament_pet", + "reduce_fan_stop_start_freq": [ + "1" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "fan_cooling_layer_time": [ + "30" + ], + "overhang_fan_speed": [ + "90" + ], + "fan_max_speed": [ + "40" + ], + "fan_min_speed": [ + "20" + ], + "slow_down_min_speed": [ + "10" + ], + "slow_down_layer_time": [ + "8" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_max_volumetric_speed": [ + "15" + ], + "filament_start_gcode": [ + "; filament start gcode\n" + ], + "compatible_printers": [ + "Voxelab Aquila X2 0.4 nozzle" + ] +} diff --git a/resources/profiles/Voxelab/filament/Voxelab Generic PLA.json b/resources/profiles/Voxelab/filament/Voxelab Generic PLA.json new file mode 100644 index 0000000000..bab844c481 --- /dev/null +++ b/resources/profiles/Voxelab/filament/Voxelab Generic PLA.json @@ -0,0 +1,21 @@ +{ + "type": "filament", + "filament_id": "GFL99", + "setting_id": "GFSL99", + "name": "Voxelab Generic PLA", + "from": "system", + "instantiation": "true", + "inherits": "fdm_filament_pla", + "filament_flow_ratio": [ + "0.98" + ], + "filament_max_volumetric_speed": [ + "15" + ], + "slow_down_layer_time": [ + "8" + ], + "compatible_printers": [ + "Voxelab Aquila X2 0.4 nozzle" + ] +} diff --git a/resources/profiles/Voxelab/filament/fdm_filament_abs.json b/resources/profiles/Voxelab/filament/fdm_filament_abs.json new file mode 100644 index 0000000000..a3a4574810 --- /dev/null +++ b/resources/profiles/Voxelab/filament/fdm_filament_abs.json @@ -0,0 +1,88 @@ +{ + "type": "filament", + "name": "fdm_filament_abs", + "from": "system", + "instantiation": "false", + "inherits": "fdm_filament_common", + "cool_plate_temp" : [ + "80" + ], + "eng_plate_temp" : [ + "80" + ], + "hot_plate_temp" : [ + "80" + ], + "textured_plate_temp" : [ + "80" + ], + "cool_plate_temp_initial_layer" : [ + "80" + ], + "eng_plate_temp_initial_layer" : [ + "80" + ], + "hot_plate_temp_initial_layer" : [ + "80" + ], + "textured_plate_temp_initial_layer" : [ + "80" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "close_fan_the_first_x_layers": [ + "3" + ], + "fan_cooling_layer_time": [ + "30" + ], + "filament_max_volumetric_speed": [ + "0" + ], + "filament_type": [ + "ABS" + ], + "filament_density": [ + "1.10" + ], + "filament_cost": [ + "20" + ], + "nozzle_temperature_initial_layer": [ + "240" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "fan_max_speed": [ + "5" + ], + "fan_min_speed": [ + "5" + ], + "overhang_fan_threshold": [ + "25%" + ], + "overhang_fan_speed": [ + "80" + ], + "nozzle_temperature": [ + "235" + ], + "temperature_vitrification": [ + "110" + ], + "nozzle_temperature_range_low": [ + "235" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "slow_down_min_speed": [ + "10" + ], + "slow_down_layer_time": [ + "15" + ] +} diff --git a/resources/profiles/Voxelab/filament/fdm_filament_common.json b/resources/profiles/Voxelab/filament/fdm_filament_common.json new file mode 100644 index 0000000000..823c736e8a --- /dev/null +++ b/resources/profiles/Voxelab/filament/fdm_filament_common.json @@ -0,0 +1,144 @@ +{ + "type": "filament", + "name": "fdm_filament_common", + "from": "system", + "instantiation": "false", + "cool_plate_temp" : [ + "60" + ], + "eng_plate_temp" : [ + "60" + ], + "hot_plate_temp" : [ + "60" + ], + "textured_plate_temp" : [ + "60" + ], + "cool_plate_temp_initial_layer" : [ + "60" + ], + "eng_plate_temp_initial_layer" : [ + "60" + ], + "hot_plate_temp_initial_layer" : [ + "60" + ], + "textured_plate_temp_initial_layer" : [ + "60" + ], + "overhang_fan_threshold": [ + "95%" + ], + "overhang_fan_speed": [ + "100" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "close_fan_the_first_x_layers": [ + "3" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ], + "filament_flow_ratio": [ + "1" + ], + "reduce_fan_stop_start_freq": [ + "0" + ], + "fan_cooling_layer_time": [ + "60" + ], + "filament_cost": [ + "0" + ], + "filament_density": [ + "0" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "2.85" + ], + "filament_max_volumetric_speed": [ + "0" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_settings_id": [ + "" + ], + "filament_soluble": [ + "0" + ], + "filament_type": [ + "PLA" + ], + "filament_vendor": [ + "Generic" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "bed_type": [ + "Cool Plate" + ], + "nozzle_temperature_initial_layer": [ + "200" + ], + "full_fan_speed_layer": [ + "0" + ], + "fan_max_speed": [ + "100" + ], + "fan_min_speed": [ + "35" + ], + "slow_down_min_speed": [ + "10" + ], + "slow_down_layer_time": [ + "8" + ], + "filament_start_gcode": [ + "; Filament gcode\n" + ], + "nozzle_temperature": [ + "200" + ], + "temperature_vitrification": [ + "100" + ] +} diff --git a/resources/profiles/Voxelab/filament/fdm_filament_pet.json b/resources/profiles/Voxelab/filament/fdm_filament_pet.json new file mode 100644 index 0000000000..0c65253151 --- /dev/null +++ b/resources/profiles/Voxelab/filament/fdm_filament_pet.json @@ -0,0 +1,82 @@ +{ + "type": "filament", + "name": "fdm_filament_pet", + "from": "system", + "instantiation": "false", + "inherits": "fdm_filament_common", + "cool_plate_temp" : [ + "85" + ], + "eng_plate_temp" : [ + "85" + ], + "hot_plate_temp" : [ + "85" + ], + "textured_plate_temp" : [ + "85" + ], + "cool_plate_temp_initial_layer" : [ + "85" + ], + "eng_plate_temp_initial_layer" : [ + "85" + ], + "hot_plate_temp_initial_layer" : [ + "85" + ], + "textured_plate_temp_initial_layer" : [ + "85" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "close_fan_the_first_x_layers": [ + "3" + ], + "fan_cooling_layer_time": [ + "15" + ], + "filament_max_volumetric_speed": [ + "0" + ], + "filament_type": [ + "PETG" + ], + "filament_density": [ + "1.27" + ], + "filament_cost": [ + "30" + ], + "nozzle_temperature_initial_layer": [ + "240" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "fan_max_speed": [ + "40" + ], + "fan_min_speed": [ + "20" + ], + "overhang_fan_speed": [ + "50" + ], + "nozzle_temperature": [ + "235" + ], + "temperature_vitrification": [ + "80" + ], + "nozzle_temperature_range_low": [ + "235" + ], + "nozzle_temperature_range_high": [ + "240" + ], + "filament_start_gcode": [ + "; filament start gcode\n" + ] +} diff --git a/resources/profiles/Voxelab/filament/fdm_filament_pla.json b/resources/profiles/Voxelab/filament/fdm_filament_pla.json new file mode 100644 index 0000000000..1111af5b8d --- /dev/null +++ b/resources/profiles/Voxelab/filament/fdm_filament_pla.json @@ -0,0 +1,91 @@ +{ + "type": "filament", + "name": "fdm_filament_pla", + "from": "system", + "instantiation": "false", + "inherits": "fdm_filament_common", + "fan_cooling_layer_time": [ + "100" + ], + "filament_max_volumetric_speed": [ + "0" + ], + "filament_type": [ + "PLA" + ], + "filament_density": [ + "1.24" + ], + "filament_cost": [ + "20" + ], + "cool_plate_temp" : [ + "60" + ], + "eng_plate_temp" : [ + "60" + ], + "hot_plate_temp" : [ + "60" + ], + "textured_plate_temp" : [ + "60" + ], + "cool_plate_temp_initial_layer" : [ + "55" + ], + "eng_plate_temp_initial_layer" : [ + "55" + ], + "hot_plate_temp_initial_layer" : [ + "55" + ], + "textured_plate_temp_initial_layer" : [ + "55" + ], + "nozzle_temperature_initial_layer": [ + "205" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "fan_max_speed": [ + "100" + ], + "fan_min_speed": [ + "100" + ], + "overhang_fan_speed": [ + "100" + ], + "overhang_fan_threshold": [ + "50%" + ], + "close_fan_the_first_x_layers": [ + "1" + ], + "nozzle_temperature": [ + "210" + ], + "temperature_vitrification": [ + "60" + ], + "nozzle_temperature_range_low": [ + "190" + ], + "nozzle_temperature_range_high": [ + "210" + ], + "slow_down_min_speed": [ + "10" + ], + "slow_down_layer_time": [ + "4" + ], + "filament_start_gcode": [ + "; filament start gcode\n" + ] +} diff --git a/resources/profiles/Voxelab/machine/Voxelab Aquila X2 0.4 nozzle.json b/resources/profiles/Voxelab/machine/Voxelab Aquila X2 0.4 nozzle.json new file mode 100644 index 0000000000..ea0a7fcebe --- /dev/null +++ b/resources/profiles/Voxelab/machine/Voxelab Aquila X2 0.4 nozzle.json @@ -0,0 +1,109 @@ +{ + "type": "machine", + "setting_id": "GM001", + "name": "Voxelab Aquila X2 0.4 nozzle", + "from": "system", + "instantiation": "true", + "inherits": "fdm_machine_common", + "printer_model": "Voxelab Aquila X2", + "default_print_profile": "0.20mm Standard @Voxelab AquilaX2", + "nozzle_diameter": [ + "0.4" + ], + "printable_area": [ + "0x0", + "220x0", + "220x220", + "0x220" + ], + "printable_height": "250", + "nozzle_type": "undefine", + "auxiliary_fan": "0", + "machine_max_acceleration_extruding": [ + "500", + "500" + ], + "machine_max_acceleration_retracting": [ + "1000", + "1000" + ], + "machine_max_acceleration_travel": [ + "1500", + "1250" + ], + "machine_max_acceleration_x": [ + "500", + "500" + ], + "machine_max_acceleration_y": [ + "500", + "500" + ], + "machine_max_acceleration_z": [ + "100", + "100" + ], + "machine_max_speed_e": [ + "60", + "60" + ], + "machine_max_speed_x": [ + "500", + "500" + ], + "machine_max_speed_y": [ + "500", + "500" + ], + "machine_max_speed_z": [ + "10", + "10" + ], + "machine_max_jerk_e": [ + "5", + "5" + ], + "machine_max_jerk_x": [ + "8", + "8" + ], + "machine_max_jerk_y": [ + "8", + "8" + ], + "machine_max_jerk_z": [ + "0.4", + "0.4" + ], + "max_layer_height": [ + "0.28" + ], + "min_layer_height": [ + "0.08" + ], + "printer_settings_id": "Voxelab", + "retraction_minimum_travel": [ + "2" + ], + "retract_before_wipe": [ + "70%" + ], + "retraction_length": [ + "5" + ], + "retract_length_toolchange": [ + "1" + ], + "deretraction_speed": [ + "40" + ], + "single_extruder_multi_material": "0", + "change_filament_gcode": "M600", + "machine_pause_gcode": "M0", + "default_filament_profile": [ + "Voxelab Generic PLA" + ], + "machine_start_gcode": "G90 ; use absolute coordinates\nM83 ; extruder relative mode\nM140 S{hot_plate_temp_initial_layer} ; set final bed temp\nM104 S150 ; set temporary nozzle temp to prevent oozing during homing\nG4 S10 ; allow partial nozzle warmup\nG28 ; home all axis\nG1 Z50 F240\nG1 X2 Y10 F3000\nM104 S{nozzle_temperature_initial_layer} ; set final nozzle temp\nM190 S{hot_plate_temp_initial_layer} ; wait for bed temp to stabilize\nM109 S{nozzle_temperature_initial_layer} ; wait for nozzle temp to stabilize\nG1 Z0.28 F240\nG92 E0\nG1 Y140 E10 F1500 ; prime the nozzle\nG1 X2.3 F5000\nG92 E0\nG1 Y10 E10 F1200 ; prime the nozzle\nG92 E0", + "machine_end_gcode": "{if max_layer_z < printable_height}G1 Z{z_offset+min(max_layer_z+2, printable_height)} F600 ; Move print head up{endif}\nG1 X5 Y{print_bed_max[1]*0.8} F{travel_speed*60} ; present print\n{if max_layer_z < printable_height-10}G1 Z{z_offset+min(max_layer_z+70, printable_height-10)} F600 ; Move print head further up{endif}\n{if max_layer_z < max_print_height*0.6}G1 Z{printable_height*0.6} F600 ; Move print head further up{endif}\nM140 S0 ; turn off heatbed\nM104 S0 ; turn off temperature\nM107 ; turn off fan\nM84 X Y E ; disable motors", + "scan_first_layer": "0" +} \ No newline at end of file diff --git a/resources/profiles/Voxelab/machine/Voxelab Aquila X2.json b/resources/profiles/Voxelab/machine/Voxelab Aquila X2.json new file mode 100644 index 0000000000..0f4b349267 --- /dev/null +++ b/resources/profiles/Voxelab/machine/Voxelab Aquila X2.json @@ -0,0 +1,12 @@ +{ + "type": "machine_model", + "name": "Voxelab Aquila X2", + "model_id": "Voxelab-Aquila-X2", + "nozzle_diameter": "0.4", + "machine_tech": "FFF", + "family": "Voxelab", + "bed_model": "voxelab_aquilax2_buildplate_model.stl", + "bed_texture": "voxelab_aquilax2_buildplate_texture.png", + "hotend_model": "", + "default_materials": "Voxelab Generic ABS;Voxelab Generic PETG;Voxelab Generic PLA" +} diff --git a/resources/profiles/Voxelab/machine/fdm_machine_common.json b/resources/profiles/Voxelab/machine/fdm_machine_common.json new file mode 100644 index 0000000000..ea4531cc3d --- /dev/null +++ b/resources/profiles/Voxelab/machine/fdm_machine_common.json @@ -0,0 +1,117 @@ +{ + "type": "machine", + "name": "fdm_machine_common", + "from": "system", + "instantiation": "false", + "printer_technology": "FFF", + "deretraction_speed": [ + "40" + ], + "extruder_colour": [ + "#FCE94F" + ], + "extruder_offset": [ + "0x0" + ], + "gcode_flavor": "marlin", + "silent_mode": "0", + "machine_max_acceleration_e": [ + "5000" + ], + "machine_max_acceleration_extruding": [ + "500" + ], + "machine_max_acceleration_retracting": [ + "1000" + ], + "machine_max_acceleration_x": [ + "500" + ], + "machine_max_acceleration_y": [ + "500" + ], + "machine_max_acceleration_z": [ + "100" + ], + "machine_max_speed_e": [ + "60" + ], + "machine_max_speed_x": [ + "500" + ], + "machine_max_speed_y": [ + "500" + ], + "machine_max_speed_z": [ + "10" + ], + "machine_max_jerk_e": [ + "5" + ], + "machine_max_jerk_x": [ + "8" + ], + "machine_max_jerk_y": [ + "8" + ], + "machine_max_jerk_z": [ + "0.4" + ], + "machine_min_extruding_rate": [ + "0" + ], + "machine_min_travel_rate": [ + "0" + ], + "max_layer_height": [ + "0.28" + ], + "min_layer_height": [ + "0.08" + ], + "printable_height": "250", + "extruder_clearance_radius": "65", + "extruder_clearance_height_to_rod": "36", + "extruder_clearance_height_to_lid": "140", + "nozzle_diameter": [ + "0.4" + ], + "printer_settings_id": "", + "printer_variant": "0.4", + "retraction_minimum_travel": [ + "2" + ], + "retract_before_wipe": [ + "70%" + ], + "retract_when_changing_layer": [ + "1" + ], + "retraction_length": [ + "5" + ], + "retract_length_toolchange": [ + "1" + ], + "z_hop": [ + "0" + ], + "retract_restart_extra": [ + "0" + ], + "retract_restart_extra_toolchange": [ + "0" + ], + "retraction_speed": [ + "60" + ], + "single_extruder_multi_material": "0", + "change_filament_gcode": "", + "wipe": [ + "1" + ], + "z_lift_type": "NormalLift", + "default_print_profile": "", + "machine_start_gcode": "", + "machine_end_gcode": "" +} diff --git a/resources/profiles/Voxelab/process/0.16mm Optimal @Voxelab AquilaX2.json b/resources/profiles/Voxelab/process/0.16mm Optimal @Voxelab AquilaX2.json new file mode 100644 index 0000000000..ee199398c8 --- /dev/null +++ b/resources/profiles/Voxelab/process/0.16mm Optimal @Voxelab AquilaX2.json @@ -0,0 +1,109 @@ +{ + "type": "process", + "setting_id": "GP004", + "name": "0.16mm Optimal @Voxelab AquilaX2", + "from": "system", + "inherits": "fdm_process_common", + "instantiation": "true", + "adaptive_layer_height": "1", + "reduce_crossing_wall": "0", + "layer_height": "0.16", + "max_travel_detour_distance": "0", + "bottom_surface_pattern": "monotonic", + "bottom_shell_layers": "5", + "bottom_shell_thickness": "0", + "bridge_flow": "0.85", + "bridge_speed": "25", + "brim_width": "0", + "brim_object_gap": "0", + "compatible_printers_condition": "", + "print_sequence": "by layer", + "default_acceleration": "0", + "outer_wall_acceleration": "0", + "top_surface_acceleration": "0", + "bridge_no_support": "0", + "draft_shield": "disabled", + "elefant_foot_compensation": "0.1", + "enable_arc_fitting": "0", + "outer_wall_line_width": "0.4", + "wall_infill_order": "inner wall/outer wall/infill", + "line_width": "0.45", + "infill_direction": "45", + "sparse_infill_density": "15%", + "sparse_infill_pattern": "grid", + "initial_layer_acceleration": "0", + "travel_acceleration": "0", + "inner_wall_acceleration": "0", + "initial_layer_line_width": "0.45", + "initial_layer_print_height": "0.2", + "infill_combination": "0", + "sparse_infill_line_width": "0.45", + "infill_wall_overlap": "25%", + "interface_shells": "0", + "ironing_flow": "15%", + "ironing_spacing": "0.1", + "ironing_speed": "15", + "ironing_type": "top", + "reduce_infill_retraction": "1", + "filename_format": "[input_filename_base].gcode", + "detect_overhang_wall": "1", + "overhang_1_4_speed": "0", + "overhang_2_4_speed": "20", + "overhang_3_4_speed": "15", + "overhang_4_4_speed": "10", + "inner_wall_line_width": "0.45", + "wall_loops": "2", + "print_settings_id": "", + "raft_layers": "0", + "seam_position": "aligned", + "skirt_distance": "3", + "skirt_height": "1", + "skirt_loops": "2", + "minimum_sparse_infill_area": "10", + "internal_solid_infill_line_width": "0", + "spiral_mode": "0", + "standby_temperature_delta": "-5", + "enable_support": "0", + "resolution": "0.012", + "support_type": "normal(auto)", + "support_style": "grid", + "support_on_build_plate_only": "0", + "support_top_z_distance": "0.15", + "support_filament": "0", + "support_line_width": "0.38", + "support_interface_loop_pattern": "0", + "support_interface_filament": "0", + "support_interface_top_layers": "3", + "support_interface_bottom_layers": "-1", + "support_interface_spacing": "0.2", + "support_interface_speed": "100%", + "support_base_pattern": "rectilinear", + "support_base_pattern_spacing": "0.2", + "support_speed": "40", + "support_threshold_angle": "40", + "support_object_xy_distance": "60%", + "tree_support_branch_angle": "40", + "tree_support_wall_count": "0", + "detect_thin_wall": "1", + "top_surface_pattern": "monotonic", + "top_surface_line_width": "0.38", + "top_shell_layers": "5", + "top_shell_thickness": "0.8", + "initial_layer_speed": "35%", + "initial_layer_infill_speed": "35%", + "outer_wall_speed": "40", + "inner_wall_speed": "40", + "internal_solid_infill_speed": "40", + "top_surface_speed": "30", + "gap_infill_speed": "30", + "sparse_infill_speed": "60", + "travel_speed": "150", + "enable_prime_tower": "0", + "wipe_tower_no_sparse_layers": "0", + "prime_tower_width": "60", + "xy_hole_compensation": "0", + "xy_contour_compensation": "0", + "compatible_printers": [ + "Voxelab Aquila X2 0.4 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/Voxelab/process/0.20mm Standard @Voxelab AquilaX2.json b/resources/profiles/Voxelab/process/0.20mm Standard @Voxelab AquilaX2.json new file mode 100644 index 0000000000..d34049d08b --- /dev/null +++ b/resources/profiles/Voxelab/process/0.20mm Standard @Voxelab AquilaX2.json @@ -0,0 +1,109 @@ +{ + "type": "process", + "setting_id": "GP004", + "name": "0.20mm Standard @Voxelab AquilaX2", + "from": "system", + "inherits": "fdm_process_common", + "instantiation": "true", + "adaptive_layer_height": "1", + "reduce_crossing_wall": "0", + "layer_height": "0.2", + "max_travel_detour_distance": "0", + "bottom_surface_pattern": "monotonic", + "bottom_shell_layers": "5", + "bottom_shell_thickness": "0", + "bridge_flow": "0.85", + "bridge_speed": "25", + "brim_width": "0", + "brim_object_gap": "0", + "compatible_printers_condition": "", + "print_sequence": "by layer", + "default_acceleration": "0", + "outer_wall_acceleration": "0", + "top_surface_acceleration": "0", + "bridge_no_support": "0", + "draft_shield": "disabled", + "elefant_foot_compensation": "0.1", + "enable_arc_fitting": "0", + "outer_wall_line_width": "0.4", + "wall_infill_order": "inner wall/outer wall/infill", + "line_width": "0.45", + "infill_direction": "45", + "sparse_infill_density": "15%", + "sparse_infill_pattern": "grid", + "initial_layer_acceleration": "0", + "travel_acceleration": "0", + "inner_wall_acceleration": "0", + "initial_layer_line_width": "0.45", + "initial_layer_print_height": "0.2", + "infill_combination": "0", + "sparse_infill_line_width": "0.45", + "infill_wall_overlap": "25%", + "interface_shells": "0", + "ironing_flow": "15%", + "ironing_spacing": "0.1", + "ironing_speed": "15", + "ironing_type": "top", + "reduce_infill_retraction": "1", + "filename_format": "[input_filename_base].gcode", + "detect_overhang_wall": "1", + "overhang_1_4_speed": "0", + "overhang_2_4_speed": "20", + "overhang_3_4_speed": "15", + "overhang_4_4_speed": "10", + "inner_wall_line_width": "0.45", + "wall_loops": "2", + "print_settings_id": "", + "raft_layers": "0", + "seam_position": "aligned", + "skirt_distance": "3", + "skirt_height": "1", + "skirt_loops": "2", + "minimum_sparse_infill_area": "10", + "internal_solid_infill_line_width": "0", + "spiral_mode": "0", + "standby_temperature_delta": "-5", + "enable_support": "0", + "resolution": "0.012", + "support_type": "normal(auto)", + "support_style": "grid", + "support_on_build_plate_only": "0", + "support_top_z_distance": "0.19", + "support_filament": "0", + "support_line_width": "0.38", + "support_interface_loop_pattern": "0", + "support_interface_filament": "0", + "support_interface_top_layers": "3", + "support_interface_bottom_layers": "-1", + "support_interface_spacing": "0.2", + "support_interface_speed": "100%", + "support_base_pattern": "rectilinear", + "support_base_pattern_spacing": "0.2", + "support_speed": "40", + "support_threshold_angle": "40", + "support_object_xy_distance": "60%", + "tree_support_branch_angle": "40", + "tree_support_wall_count": "0", + "detect_thin_wall": "1", + "top_surface_pattern": "monotonic", + "top_surface_line_width": "0.38", + "top_shell_layers": "5", + "top_shell_thickness": "0.8", + "initial_layer_speed": "35%", + "initial_layer_infill_speed": "35%", + "outer_wall_speed": "40", + "inner_wall_speed": "40", + "internal_solid_infill_speed": "40", + "top_surface_speed": "30", + "gap_infill_speed": "30", + "sparse_infill_speed": "60", + "travel_speed": "150", + "enable_prime_tower": "0", + "wipe_tower_no_sparse_layers": "0", + "prime_tower_width": "60", + "xy_hole_compensation": "0", + "xy_contour_compensation": "0", + "compatible_printers": [ + "Voxelab Aquila X2 0.4 nozzle" + ] +} \ No newline at end of file diff --git a/resources/profiles/Voxelab/process/fdm_process_common.json b/resources/profiles/Voxelab/process/fdm_process_common.json new file mode 100644 index 0000000000..7ccf87cfd2 --- /dev/null +++ b/resources/profiles/Voxelab/process/fdm_process_common.json @@ -0,0 +1,70 @@ +{ + "type": "process", + "name": "fdm_process_common", + "from": "system", + "instantiation": "false", + "adaptive_layer_height": "0", + "reduce_crossing_wall": "0", + "bridge_flow": "0.95", + "bridge_speed": "25", + "brim_width": "5", + "compatible_printers": [], + "print_sequence": "by layer", + "default_acceleration": "0", + "bridge_no_support": "0", + "elefant_foot_compensation": "0.1", + "outer_wall_line_width": "0.4", + "outer_wall_speed": "120", + "line_width": "0.45", + "infill_direction": "45", + "sparse_infill_density": "15%", + "sparse_infill_pattern": "grid", + "initial_layer_line_width": "0.42", + "initial_layer_print_height": "0.2", + "initial_layer_speed": "20", + "gap_infill_speed": "30", + "infill_combination": "0", + "sparse_infill_line_width": "0.45", + "infill_wall_overlap": "25%", + "sparse_infill_speed": "50", + "interface_shells": "0", + "detect_overhang_wall": "0", + "reduce_infill_retraction": "0", + "filename_format": "{input_filename_base}.gcode", + "wall_loops": "3", + "inner_wall_line_width": "0.45", + "inner_wall_speed": "40", + "print_settings_id": "", + "raft_layers": "0", + "seam_position": "nearest", + "skirt_distance": "2", + "skirt_height": "2", + "minimum_sparse_infill_area": "0", + "internal_solid_infill_line_width": "0.45", + "internal_solid_infill_speed": "40", + "spiral_mode": "0", + "standby_temperature_delta": "-5", + "enable_support": "0", + "support_filament": "0", + "support_line_width": "0.42", + "support_interface_filament": "0", + "support_on_build_plate_only": "0", + "support_top_z_distance": "0.15", + "support_interface_loop_pattern": "0", + "support_interface_top_layers": "2", + "support_interface_spacing": "0", + "support_interface_speed": "80", + "support_base_pattern": "rectilinear", + "support_base_pattern_spacing": "2", + "support_speed": "40", + "support_threshold_angle": "40", + "support_object_xy_distance": "0.5", + "detect_thin_wall": "0", + "top_surface_line_width": "0.4", + "top_surface_speed": "30", + "travel_speed": "400", + "enable_prime_tower": "0", + "prime_tower_width": "60", + "xy_hole_compensation": "0", + "xy_contour_compensation": "0" +} diff --git a/resources/profiles/Voxelab/voxelab_aquilax2_buildplate_model.stl b/resources/profiles/Voxelab/voxelab_aquilax2_buildplate_model.stl new file mode 100644 index 0000000000000000000000000000000000000000..21de13e2d47d03c8768a4fcd90f99f525d12ae0b GIT binary patch literal 5484 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 QuoMln%f-IL_TZ8K0xL2(ga7~l literal 0 HcmV?d00001 diff --git a/resources/web/image/printer/Voxelab Aquila X2_cover.png b/resources/web/image/printer/Voxelab Aquila X2_cover.png new file mode 100644 index 0000000000000000000000000000000000000000..a489eed107a040713b6f2413d71f5f8c4852b984 GIT binary patch literal 23254 zcma&O1z40{yFNOi;LxK|(j_Gg(jh}S(lRvCDJ8?uEub_=Nh&BHLrF`kNQtyKgoFYP z-JNIg`}W@7f1iE!|2o$t$ne&B*Lv0y_kBM^X=|#I644StAP~|AYD&7`|C-A$C;|8` z+eaV_f#Bb9)HC!n)KHhQc5~skv~jbt<@a%M2ge~08F?RfOY0}Lp3GLZ_KvQytQ$>j ztjvx!vaAO8Gz2x=6>S|H)%-kcANgtOS^GV)mb77&mm`w#kpeexvGufM_Hl7`MM?R{ zvi@^lDe&{q`tZ4;*e-AJuX`xjqO3g} z-8~)MT$wNLX=&w#_LOC11;?5Hb7U^=|8;X$)PKA^mVF&1f4(6GgpAF2z#?sUB|IhjV zHQ`d1Xa8$Zz%>7_Bl`C>if+zs9$;|b9Yp?l{J#%9P*l|RaIuNKL ziU{!u^MN-LXI4^tz|5sB!u`)>mrE$6?dW6cY^dbuV(W?m<|fN3B=N6z`u9v9z}}aJ2Ds`1c+EeL&sT)&74Rxm+@5^rg)sT^+$9 z3;+9WhW|b$%PKA`AoTA;M*ri`{OVs@>yho#e|`GbM`y=> z_7pSoKb9qBX?^*8Syp!sHygCIt<68r0k`|tQIwmVr?;htt%5x;Dp^(qJ3B`(QeS56 z%k9N1%q+|=$S?ZeFY$J;1-JWuE$shcJp%tRG=a-){-0x$5%?dYm-**}|HChU>;CmS z;BSEA68JCA1wQz$sn{aRm19f3ph+gewW1G=RXzO=hxPviMjAmkL4bf*bShQQgV0^g2nB%<-@5#|0?Ev# zfk2oc50n)2e6m+t98+vm(fr5C*^;=@Z<$Sqsb!<7GO98{LZL+j-fcpYw8}FoF`0Sv zl@qI)#5nc=f~?-gF&TM5YLRXO=CnJ`#3w@DSqe0vBo5Am=#s45C;gc0B9V?LA9550UpuElHpJ?>}ySyK1yf(EM`K z{9@1C#>y&8l$La{Q4^B5Hd((Colnx&-|w24k#XCw-gW9AaE7UAy>VsCqu%?TRoozs zrYnJo^VY3f-*$IJ_hb@u5tO}EHKzROPwDMZm4?55In}C&YD^MYWVuW#D!|yg>F+}w z-;FF?hzJU9dSft}rsz@RXOGt-PG4yA%&#r)No8bYB~O-5W-iXNdKb2@hr>)FU}-S8HiFa7&+lAKCuPG7 z%$7(?OUpyMGOZjb<<~*Sj%S}juO9#H%gU*5-7A~cJ^QH(#vuSZ*@#vrkxpUA8!n>8#zsQ}1FRNb?=e$F&|b-Fqt)Qv1!2jc(~tXKZ)tta z4cs@n`+9(`$7Wa$dGDuFZK;iLMpV~ad!HTZgEkk5L#Egpu5a!oqsCZgv5^$rg0?pE zuU3@^v8*!>H@A(h>67V$^V5#UZRxj`J;W^vtY=ySr}q5L>g=kIa4)~Veft&~#_S+U zYpt5VD4T{T*k2#3oa;?D4>~GF?KOd?zD*H>*swkyWrjxHwqEJ#>Uu5fG5^AMbN2K6 z@Al_qPPI;*b6X!bPNJmOKe92#bW~*)lHQ|@Lo2}Mjmv&QSZqFyJMZ^>|Niv~jOCgH zZZ^C9An=+(2s6~eh)U3YwJJ_!jsS8&2-d%Z!T(@=t$5U_zSg*`>9%#TRppDyN}+2C zFq+7%_Po42f%S>nl{`AP=B?}-Mq#=<>kYWvLYK+SKqfd;uv5ECKd!jA*x+nV{`_r{ z8oM77$xw`4X(?av66qwkZ4G9uy0^{+`J&--D2nlAst^^y`&c0u{62R?`O2UuX__rd zD&op3VjDu16kSZt%8m(7=?%XdtCRH=MaE^*c9Z+SxXsG+iH`ypV}&efIu%#26>TTv z=dH*i_@$U;F;ecxOrTw6|)w&c!~SQPydqjXlY7t`KliI&a^Olxp(70~Exgh&Aiuu;pd2iK^#$=!u6~JfJcD#0lZ=mGL-57< z?%0?i0=pM(Yjk_EE;;zLD>z$|{bpeH&f`u)a%*0!Q!RKPgM{z4%}W#+94dixXo7|d z6$*ELv0i&~1A~EM(O>7DI%HDa)DPmobk<0#9?D>%diw{@UGV-{H3e8R8Ol%aN{Bkg zv(KLuoM&3k%-tH73Vm((QxP_voIJ&Dm32J4r_ctGs9Yh9>dBpE#>u*-%sx9YXc%MH(?;X6v<@1!wT&EmqdULf zr2?N)=om?*|5Dp{xnB%@Q{M}3i8`y05Q+SKB1dD*MHMrft%yV#rs2b(nSC6cot=q2 zHq7Doc~aqThd#~E+w6rA^N-=X4~&7AiulaoC=hrgXc#0qpE*<$Iv8dJjt$*#&=C5a^?Xy1MvQXXxUYnD$Lr;azNvOcC zS;8n<#)UUurs+5058p9-Q3`=$6`I_sZ)j zh$754JWbfCoSI}RM#Fc)24~LJy-yC-CJ*A7p?>SFC+if}ypEZ6-*%d7TqdJb-X__^ z7Pw4mPSm+v`)sOgm*T$7QdSaBj#+Mo@Hq{!&)dKKX&9t`jA<-?9`tdgaZ`pI4*giZ zg0G;BC)i7KR~OOSW8=Y*q5jupl7F(!tYXxuK+Mu4&GufM+sxzfYJ07@{22Z!Y=!wo z!N`(t>B%>PR*#8$!|0q_aHXOdz6!;ntRF#|rdTs1y%93bjHFEe3COYjkTY~e)f@9w zk2-M+zj#T$BtRP}H1LNf8V{1!$js8i{X7VXRHSA_xGzz4vzXo#V=Xxbb6< z%^sejK9Y@Kzd51+OTmBvjXEI%XWV>pvEOZkz1-Z~&Z>I(pR7)|G}XFJNy#Vod@qTb zu6LUe2#6zTpUpYj$>qR|oJ%HK?cMSeQw z+}T1RNqaP*gtdl{Jd-zEh{Z0ccsBX=+t!p_PYY?RMc^;2Sd(7$+XyE^?0{|5g2B+m zspJURtu(Ihf~;_Vb$sMk1F8u18K2sRjg4&wdeY|>w3BWA_I+Dh;$-Ekh`-r)am_*x zUx3xjMvXqD*W;nw-P?E<%ii&6Ct-_RbVuyWp2MYR8pp2ly=S)_tczpcKj8 z$+tBc0o#$2QaPgxyRzU^YrH2@G453Bj3}O*nsPDs98xYbXjw+~cgE4RIE(cr_smxj z=npTvU^M9tjE;ALsEOtpl1d0b`NFkNj*mfRnABrqL8Gz=7wnupk(0oEaG@*EB`jZI z%}{4$OnBH=H|kW&@r?PEMQk64);;U%>mW370OJtL>N76Tbrj9gFo6DEYFu}os3}JG z+)4jvQt!HVoq*t@CCy!9LP3&eR}4SIRXy|04@-SuX;GMFccQ1#}g46dPT64R#8z=e!ALzpv`TjHOI{TGrj`Is+*-xMk|8Q z4Vv~3-e8tx(yjASJ_bw+p`DRNi^v5gzDN_-h7L`RWc(v3%!$gKd&M3!kqW%MRvQ60 z>72V2%`ed}j{?HWSFTXGOG@36zv<%Z)(010^RZ8?PW($dnr;4oIs8RGM9?X9VTG($ zBOF!|&4%kUBMqC4)fe-7oBxooS$FWkd`AE-e&7b=34fQzC$t&StY~l3Se$=>0(S5I zcgxQQ(sv<~USrn~X*-3cr079r}Gg8Yd}n`m%}h{;)CU9z>tT+M;3#S|cvURD!9r z4^toF7Y*RIXi&DNJq&n`!Q?sD52~lXe@Jx??_EpjxYK8h(`v?jZrQ$tM8h{KN0jz? zwuSDM(M=JB&ypld8|Zt(-TNO?#5j~)E8!jUEq+lxTk~p$zHBM+3JWd(X;!oo33kKq z(si#w)Y}T~f|6yG7QOeFZ_>6+5jS-hoM6ARD~uKw?(5Z=I1@w$Ozr0xV1MPOLlMP` zt7D(OV6Xc;ZcP5X|F2;T-u|vsnP_@|ASRmR?;@77myFKQm@#*haDy_8=1~)oNx$Hy zVm&`1QP%l#V@chwYDt@KeqS+8hc_{Pb}hwtG((K&fJ+RLR=5{htyPj0=+;=-p4 zUX=Zf{_*9!nXPzl=O5@m5$o@_;HUE-hCOLX6qAS-Sv@(QT-iJRTU^ZDK&9qlVew|$ zYGB1wVWj5%3wQY~WwZm!*Jfu+{|d_C;+Lg*+2Y|U>|Ca5btcSvEsLa?uU`4MczYjg zjMvGw)A*BzRNp*a9C~|vOG~CQPn*k`n}P^rF|8YOU!!idj5_U+GM$WdeZ!if`tl6g zjz@c|%)RYvS={~df<2wmENRAC1N~W()J~7h&qmG7JaIYR$08yk@~<;9k0*-c_KLg2 z+@_mZz0+i0LrG^NG_Y>zI{X+9_x?xl7fH;}6lzR+t`z!Pjmt?GqQFWb{+TJixNYX& zbUoymPM$UmD6fNOKow*^1FEc`^GC0bfBdFKxeDNC7DkBZQxTIy_yiGu^pT0z<0){; ztZUURCLv}4xySzE;$ocmw9lM8y|mZr4xPBG>C<;|ZqTWWp=EkqWt%M(WgR8hwV0by z+ij;2c1-s6_OlVRm?b|K)9Uin^(KwpSHvC7SHz> zTBRqFQUee9FF=LW*wj>M+e`J!b3}uNiK!?-cAq9EJ6nl0X%OUCi6LW!&Jy7>6INgQb+WH^=Ju3JVLr4g~F2 zoAaml27jS>7@LrQWePssTE@2S*UHPImw)udRz8N%Ffg3anPEFh%+HpCgRvk{YXQ!F zJJSAj;J(5B#>__GZ({Rq|6KcN)PU@dr`dXW+8^`BoxdCe_R~B8dsA*?baZbaDk@4h zPkS?rc@tEnofcanhEm!HMFu}1UzEE$EVJnU%iVb!RU5h%vv3Us++bdNhh-7SgJLn7V#%j~M7 z#>dAEHYV#g%E1pN<|h-_^NqeNarvJkBPjSt4S=CCev$_tw%D#Co%;6s&H879!kzr&MNJSh@AGCTKhvcZS4?5M_6%`h8n796H zb1y}}XV6$PC1cB(gRLm70ISCz*ebQPX=;Du;v7A)EaA`z{e5qb26}F)7@xi;kDr05 zqcW*;Rsgs|p>A=_1D%u!WoonC3p4+<+5yO?jf?Y*o)**TH?(0`6I^iH49=B zI1}t=V>3SkFsP+0&1{LS#}EE!WQpaCJOAlUVgtp78v9KEh5*~ZFQ~D~{Clg=5u{CH zZ@HqKjHqa=Uv$kauB~+xKPnoWnITu!vB=~w#dhS%`X}}-SWND>JwjZ}fcc=Kqg!EM zVq$`ZStP^$^wqhLJ7)g839sqw>S_Y@RPkx>?L>eJIdLT4W}>A%{u)V2$9TGGFK=SD z{6t(%E;j(UlX_52SQ`|LI6_$x)j5VnMxH6LR?hly48^5GLUg47&~m=+;^seDB+z>J z$2N&+AQEYvCx7^voHi9AhRP+(6agPJjK`vu9&1{^EK_<+nr3dw#M2NEGR_+ex^bVv-Qm z^y6d4%ud@MycLR|9+hEy?VXeVb$zhJ3?gsZ7IgLujF$J}E2o?#Smt2|QQ+iQ;#3sN zo8o{iRGKw;9aRLMt(foQeW27@ObA@HKK}Yu2{YvIOG;YWpW1pA4p+NN6(ie8Gx@jC z)j)=kQ~u&;z|p|KKy9&_l2e(GpQYaSmX#|TOGCs{8Aereb0#PYSmKC{li$cY%MGxX|@U@qBg>}Nyx}lykE6|dU>AFXZFgS^j<#44{F>Ca45?{LwPyB zP4)N)2eoQ-`0zdAFi6U9JHUf3$or4t1LQ6m?W)JuBs6~=1e!rDbrF1!Ey;!n-~GWn z#RS>SPgh5BalQbFsO2s3Jz1+4Xz;JKA`IMUIlzFbU>CpwCUkL~CwEi7m8A@;XIaR< z$F6vbbhf@*@k@sdxQ%l>M_5?$HSQQvxX9C1S69E+FR_RPV>SgDFYxlu^SJ<;Gv7Ru zBz=u0Qpk--k>#56q)N+URRaTR@T%KKGQgBOtbjGs(9ql$&X{j37g&n(GE3JhL9&L! zvQYp>?y;-R;}-xp6evzU=H!@$)=Uxd%Xuyi;wY6_JU$;T?j@gy`sF@{=Y`l+_o$Bq z@I%9_!IBeV(eejF2|=Fw>rESvhf!up;XxNCGj0qL?iQ-7Ns9=MEH^vQGq*@b0Gf*65cEf$YQ9$_k#7lY`toY8IB0 zD+dKyL5pOIRc2xSN+W_BNn_1}Gxf(w&lKAUX8>g2Mob6TX*y;4?K{a?FYKy~z$So0 zLsi~ZYKy=L1ng)g%CA?Am(pJQTn^9s@Wjb!`LB)exHfVx_^RRX>Yu7x$MMqZgU*xv zLY*GjsJ?^1GCdxby}%1G#1eoauTIuo4`XHqRapf5O3HAJB@Om=WGD!N`X!XEB-bpa zA3ys<{F-ojDXg20uT5*ci%<31lH%QHyn!8fSZ`aEb*Ebj@@9ek!RWWh zqE|A|g-Pn~qfp+0vM`1~P~&>fP>k2#d@PS~s*T=T!M2NPfNX{&MYmSB_}4qkvb}rj zt;SKOxWm>9|Lh%cA{Jo<*gG?9oDKpB685sF0^1Z5@`v5Te0+J|p_-cgJ@4#|iI3EO zHksKH^h?rMA9jkjhCV58;0Txz)nHHVaVOsZ(*krnyYEv4?-4u@>t01+Y&_K9}Rn!L8WJS1yx1h=P1A4UHS)c~len ziiHQZP1OF~@l;byrby&3pSie?fG3)jAft^V04d9LICOchF_xSbM3I4ay2V#B3sVVM zNFl8_-z?g=&bZjhJZ9(@*g7%UdM3!9S-&M_I`$n2kDq)dn75?z3yfQHNxsM2Rgh|I>mZ_T^!6Su%9Kx zBVcVDQ&ikZ55kPnA`E%ODso=F2v7VVGF}%rL3B0@?JmoEtHQEOr&{L8lS=ejr1Q(l z*)P<9rKcyw)YKH`#EaibHwJo;l@n8Rf7(q0F2-&_`plN;34_z*pPz| zV7ZQ&dD2!i1R&g8VgBVaEvoUV@HT-jsN4aRovBI&e-XQzq*>H%4Uj@CI^&%JKrh`a zYEWJT#Z}f1zFdX2Jshb?ba)w(p-xa~$je^zD_0W{189sLUe{f5DN?viFK$HcWKfZu zB}wg#9?$O{&etT;N?>_FZ~`IWdsXROkoRltEjQ-or`Szo{4i_Xa7#JhdOcw6 zij9wlkBI(ox>qaWTTNl85BJYi4 z4|4#ac@Tt)$i+<|c~YS);a+wO3zGN>A;x6@#upM43<;1UpR9Wgn2(2#T^mcoU5m1D z2GjKdjl0PU9ckh5JhVd^_uf)hqqyRZqhGoUC#JMpd2+>1&vP9C9GQ1I{k+=N2<$3L z4sGP9Z-+cFI#)C7!GQ_@pK}u50v8TVc&Lp4P9eI(O0BV9R*#C76q5au%vWRH{@wAA zSyT=R-yDWAqA6H~ml?{1$-IVatkdm(2&9FTw&}2B01Lqk~C~G5bvwUR>mw=cG zr9arUs(fWn6WR4waPH*%QDZsIdu?JbH8eDIHrIb$Qgzjc=5E+vPFF$OUAF+7{}3)Z zKm2oY`3fYrUVGTUlq>XQkImnu9*Ac3o14Ok$u>zZv-M2be-{i8Gkdat?CZ~#1aB{q z8NrCCr4iN5D5V(KHk-1Jo%)C~-utKh3@l0j<2!Q}TdBj2K=qJl>q^5%(4o>%r#hT( zkPM@J1U#?kafNxB8vDLB!u#qXTX=X+Lcdr~Th6<*M3)ro5ZX-AI1NPUv7Kgnw3$5y z)7V%p9cd{Moj(RK)ffTJPqy>bif^u)kv>a$FT)XZ@lWc1Y5{iSFLol5uRRP|@REd5 z88H`*JWm@ah~>DNro~A2vv8L1>7}OLHl1`XKbhssr~Nk) zx(W!is>WA;01v)#8Q^{4NTh4#->UQuFRO-Ua5#XsNP6?gUuijTBYO_s;d{_ukDufH z7*ksFW{3sJp}^h{-NAZ%e4GnF(5b6EHrpR8Y2phV<8i+6E|Wo(hNsmrAnVph(Ivev zLGthp{J2q+lFr_$^T(T_)wwb8+Ii0o>TFvyI?jhELWBGTYtf zOsBKgX8=1!eOh5dxK1Bc!~I1dkl1T2|TD>AeC^zPXc?v*>q55U%xAj6FENZ>#<19+xe z@SyKBC*WQt0&hTdAbV$U8_~=0++QPW zGDwQHLw??)fl2mo_8Bpi;9;x0 z<)oK32zL*>sz`M-k6W2AWVtvN#)N0En;d>N&)LF1)vb*)Lw`jC?Gylzm=J;wiP#7_ zXwo`6?2Dshbcd>Ic5PV+K z-}Vax0F$%@0Gc!5D{P9#R4`7}00L*Jz! zmPH!#+(y4FhdBg;sRba5+u7OKYestd({cH;5qUo253R0KjhtkRGTroDp^lk5(=p$y zw*OvN2tgFwY<)d|8*-|($g~?v^TJzD<4MKj%=JoZ)MM+!9(WVgH760)Vx%We#US3`$!@gqoEq~|`Kv>>x-XH5 zbd6!WPuvA?DzY9;!wRhBq!`$JN$MQ!ht|%{B(Xwj26v%&w{7S$3;6;WPn0dj2^l(` z%k8pkpkAN+sxH#ZIerb29F2Ct<;=nbK+?`ENc7jKybX00qvIjU2~TUS#$XoL*K;{X zAJn|{F2rC?;N84WFU}6+59;b$)^61r^Vu0u)$$Ujn|eg~?g8|NKYYxn0-M~rad6an zk=fJJ@H!_`19H8 z@`v4k*{TJZteM=sdz2vA0_8S)@&m{$D2}3(!oG!3!_{701Bv63Cv6NNl-Ov$I*-AD za*`bK=^444+V;`u*x}(JsDjd*jDET*>-+>XW_twu_XhA75;)WAZ@}wfFgzj})u*`! z%|&Ry;x(_@yh-7g>U-E|J>2msHy7}~G`DYu+8Vve$oPDIc9JxJJ2T}!c!Wd-?|Rgo zMOby*poM_^UFy90^_g>iQIYByfM}X>b&VI7m$!v8zKe!D?yX|%UhpuN2sqqq>$Iv2 zvgjwGCc=MJNQmI}G$SXRy4^EE{ULggSRpH=Z2zkH;TP)8D-^uF+d(Jw!6)OSbYi?} zZxRCL*#!2A1_<+AU+G!A%T$7XUR~v_&@Y*bQu^bFMW28i0Pt(;zd@u8dN5Lx+>71r zsI)pT9It(nzPPb*5CKbYo^C!01_WqeyC8`QlqG)7xevF~2ItmLtGWpXX}Cq^-{!@Z z>Te{kOiGgkKEtQuRN7r?jnPe znxO+dWI<-3W7`&8+t6vU{86%C(l$^*@uDA@i|Us~#Q)i!bfezzpE==xoXUpC6KoEx zRJ5JD!n-XyY0?#K?7v(!{9*q1=E^u0iv!R{uVlTQot^N*Ejj`GoIT#04fM_I@1rs+ zv6Yl=hwSWi~eSGevPQcljX+g7908PKSEk{CQ8HE2k9uyufI&cAVUG! z{b{K>dqL=^v3;9&fwXEefl_r*B*&{LBL1fTy)}*|j9$D*D5^YH!~F5`n-5cD;?OXC z*tOeObTMF(5gd!9B&)mW(tKV``R=2zi#u>V!TwdyuzjY84>F%D=1Gh0Ug8~aQt`qOeEYWq)qOR1!+p)N+LN+3iIrr z!NRpe;zNwmXc{F4za`WASms(YR9DXMq|H9^W3mNe!x*G?m+ii=_cRHj-ey`zd zic{j%Ip%&NRJI(= zlhzF^S3$T?T|P9fVTa(uCRbe|`Y}o}jgUC%f_MqD&F5Iwe-Bg|+7um*oId&~|ZX3Y1Pa{8;*YL$47V zjpU_Yx4hOiHg6cUPf=FT{D42hBm<> zeMXLdiDkI@T6M(bm`B4G>fl4gIxyx!jLuT zDrD9-m-y3_5BWdK6XgJp>WFVjoJv+B67huUctJ^;IlD+vKHUDd9gw`5>RdVTCS}$3_>wZNp$; zS7AeI+!I{`DbB`7{w|E;;y82daP)m=$=P9AQTVP>5LFWg-@efgOF4JX^vTUbt~=H}T=m zCsk9uQTwFKF*khjES_@bt@z#N-s393tTf)`*i7T^V!izt-+RiemxBK)S3&;BA6}*P ze&^r1bwy_W>I>UVcdumcF#F|Dl`JeCGL_yqwgm!K87N*s@>hGc75?I0OB$8?f5p7b zb$*t)WVWLvC%Tx;1%zMTDD68A@@1(Vj-YyYMYDbw4sF$|rN8fxhyNGaV%5!z-C0?k zx8Kb9EXkR@Ln-ntoAhpHoAh;N9i~n7QJb}|-(DIybiQJ*(x$NO_|8r8_a~bKpWrpB z1d(u<60dI0$D26RTVAP!an*CQEI9N{=4`AjCJ06OvOi#}yaH6+OGVHGYeOEXsB}^Ar6; zq*0z`)Q#o6W%&_>jvyF*7}n?e(!wZB=rZZ`G2Mz+tlm2rX4SXgBgry>FG_qP)3el{ zcc$|u0T5ndvQfA0zgan!WZPvr8)8ZdkehkLlR6EU?9hEB{Qd^hsTbE3J_XL;S~o-h z9)!U#7Kj36G9gR39&$9c!|HeR*-&Yo>C0EJn>RCIRhJa?xaVIo@$jpL!Umt}Tnc2> z{c$e`vv*d%e*NkXbdmd?-ZfD`1^1e17rk!b|>N5Wy;j8NG|&$c>p(qEY_>~l%4A0 z_QrF9Q5XUboO*?|~Y|B|Qc_1M| zX&}R{poE{!ntnfLWMCLI!)o9wSd7(`F-dtkyffu5y7B{*C1dE_#i8XwjjW*GvMqqI zN`21g_x_2eryknupe-&gu0`ji0djPZ&u~!&)j$s<%z|QKkt%P6+>*7AZg)M+pJaTF zRn?&&At7PT(R^D`;ige%!U1%=gYUJt+;o4K&wu`9jzuA{=$iD#ze<&c>;S|ku(%b% z8&YaX!v@s9CP-vk;3*`;{MBIm+*hC@2D4b^=Ip#$4Huzw>0*n?-HbXs(VZLxhw}D*nVn^pzyXLAsCV!$i#(Q2 z!vJsxkkb<*kx`a3zeF|m*W7|lhR_TENlvrv+o4;qJIGVfz#Tp$Bm`bLWeo1#-vjiV zOd;!D6B7qA0~Od6UaFW>024^Lxq&Rl^~xK(SG(Ho?THY1q zI|j6IksvW11w}m_$mP?opyn@2wxB(OV9Hn_Z3KWnpfd-G!cLh4oiw0?hq4HgDCU~@ z$hPhl2>h0wInwkojdxGc-90#9ql(GX<6(I{@TmVNx|l|WP9HxnaE239VJBtq7qW$p zHxb-d?#m9$wQflF+1+YyZ+GIobb5Ig={+`ptc1mMSkMp*FNwbFVV4=Wio4=eyWH>H zb~4rGJB7wJWEO7O2y>sW&77}&t;Ig}XRux+VhJbsq(f1#+*p2AAP~6p`*+AliZ97 zXG-Xj?XAM=tqQXdUNTAR03urjSPiK5QDE-0eu`&lXd{M3ME02u z%5rtm{6p7~PrYP@zQOP~)za>-Pth6MFG*iTwH^!(Y9AiiRX3y=8WDk(4FX&gO+3{YTV`e!l>=6QN)kzKx4*s;z z3E-OC7g7zvARp9k0eKBj0kY8>+>f62FLignfWddKb`!BQ3gNP}h*>hn zo$GoeFYHV@1RoXu099f6UW4hnFqqm!GQ1>saoneXV7cTTz?gQ&&Ei_bB_z5vM&=>i z^YiZ{d^VX)u?68Un`$G|gUlzh^2Zb^oI8WM58g+Tt&2ckD{S<#w4&%V(;i9$o%(!a zYW&rt)5r-r0+dTe@&0PM=2iieAeI@b&65gb^dG+P5CF!{gmYe4K4I{t~iTmESeYo2haumZdhJ_LvsRUfq~ z7CQ0(d#-1S>9FF}oqGeM=tL~@MerAlEa3v-?;#FrK$q&X(IHAf8AFX*F0V5nvK_DsdJQ#HKoqH9z^!rf3ab!Ezf4j$6}^_b3R$i z3Y1rQO+r#qz}CDrrsIG*J6zxBoD%+~sRSWLWor zJS#;vHZJaSor_QI^WVQML2WPC393-{*-uvhyJ7|K4mk8xVH8lL$ebTu4s5CDHQBv+ z&^{pEx=!kTzC!qsv+G8a`?VIg0NLi^+dqO1xprIWt)%PzY()v3E~?6h;rbR(pd@>` zIwnLfA4ES1$dS1O`FOi(Nv(0n-*=6m1pq2kZ|_$!3I~MqPu|_(JpB^eTT$UaO7sp1 zx}e^qtF0Q?TMIEn0>dr#^|1JjkL^s1sDN<$#VUcxxrP6&&fhj@jxC0 zP@E6R-L}LK0Hj9dxHvoW{wSKxr%KZQylECqF)&qoY)g!dIAmgeXFrUG#w}x&8}H%-!hW3N8dW zPNqjvoUb<;>@|Dc8eo5t|bw*P5 zOx0p{k2!G9)(2zy)jC0*k%tn<0B1ix14@*Si}^8$12}-HLBbWPRyTnX<2uVVK(>Ro z%TQM_-ayuZ#E#WdRQYZJ$G{GdIl&UT@>T#}3kMd`^0>=7L6%_V0C2K^B?S7AaF~SG z>SYWjW0G@T*zx6x&KCmwNF!V)#e}q78_2OJl`A2Ou|oHtc(UoeL%`f-&}OH&;B!uZ z|AB~VP13s2Ud5}80GgVfWX`QiU=m=L4q{oC(34b7Cun{Hfd_!afTyap^ks~n1Ia3o zVM9<<+nGO_1yc`#F-%GJj5_8pnS z)&vj&zXhts(-W4VL}}EEMgTyChoc9Wq49gKfXi$r->Ah?Dh{}Pz*Vwb1B(IVAV7by zadJtWgBF!bT-SsBCLvce9%xeXWkeL{0&b~ef|lO^i5AOHm&@(5yOi|dvUd;#f6{wx zJ81x*xb_9eF+jVP+nsQS@|Ao&o;*Wdppfgod$=V-4hT!I6Vy180S)n9kLR#QE9jf&msB2iJf3<)Dq>8}E z_WUk$Mqt|Dr8i{+euR)S$ggM%=z^*cLNSgyGrEu_!& z(f#~Ad2u@61DJNded)%D`E5VE{HvTx zdN*xw&(G{=o>SiUNu^=)Z-9(xiFAr8>l}x}&WiPjKqpr`0Hed~s&5;cbsD~sO+K%( zq+!{jP$pcV4QW_x%`sw+&R;Fn;|V_ebd~%C(4l~wUXY~yT?%b3?sjzk;;7T8HZnCn zF7C>!YFA;kRHeV!Z}m$o{rsd#9Y7*5{fY+A|^jWuYH!C)ezK{d`&NvTXo>;=GgAz@*VdPaea zqF9dr^nMAjgoD0PNXW(sXa)qhGw4YGKY*9XL#DBNnNiod03QXC3#)(tdVnO&W`iUg zNEB*}%Ql1G?X4~^16M+1AEU<22gUmpu+s-bTZiWdZRG8OA5b_=5cmL&0s7ON$E)zA zLC_a(JJJB!ncUpmL34fzB2cM-Wj+d!Q|IsLXL}+8=*Roq9fyZLG}k>Xl>1EO>GbLI zp48HwZKt=LE+Y!IXC!gy67g>z+}0ea(f%`xW&mPn(HJ&9c57bxbKA~Rgt4_}fi+C4rCyJoPyl1JTrTV3c+o!1V&L?G@(IqQoZX zJ6&$jrU|sm@H|*uTU#4b{VxwW24Tn|z@u{NGH&xsKY*yTW z%+7cJn^9lsz`E1|Ljm)2*;4{$Bo_x%-=KR}kU1r@rg>|~CbWD7@C{%kyKy_fqp~cq zD->vPPo;p70y%3?ktGd?IeDGDEYCC$-2aeq9Yb$b+jZdi+FWmj93ZbIWkD(f`rv@S zz3f;KjP(s_gW+Ai9nfcPwKJW=qVp|4LNWHi@@j6t_5;99nEEXhd<4BJTYDA344~uX zQtsG@z6*qOptX}|<^W`Wz=*!EzI(4;gyA6|Ab_vX^Jz!_d|7W_Q6Z7b8%c>B1f7v@ zwYh9YmTHW+C_wQ=(taPveuOiC7W>nW9~7Q}uBj6MI0k{+3K+Zm`Bs8X1vaVA4u@~A zd&HHB_+4rT`E755ek`2v6}Sda0=HXlqlU{s3J-cx%U2@Ff$NsgG<=x9A_Z2Hw>NC1 z5jb8Ndit+`YXMDx=%nLx2iAyE`Y>SJn-@$#nX~M69povfSE23$w1t-`NL`a zNg(`waB%Qg5-4fDtT5$lFuzv4+L0Phsp-H3?9Xk_fs?l8r2Fi?cnv8s6IQqv36@qq1rg zP~U)b2Yd(14&n#sIh9qHXOa(+@k|Pb`K*}CM4R$I2MOk7r~VGl^|w^|IurqaMP6qZ zAQw;MWCq$nKIRStmtX2!v=Qy^;+hG-YiU#9gM={enB~SsPIC7in1NppGDZ6=Q| z_d%DL_ygu+GhJNV@%GK_lRL$46-sK}#m|LHdBU!J-26g(smgvH|Ji?8&oP;MX6!X9%Sbss6wK2nK-`-l3}P&PiCb(Rlz?*V0Je zAuv?3sv9GDB(?01uu|b`R&N1K!5^Lh4**JV2hqQLcidOX>H#qiR0luJ02%N5E@k_z zo_qea>mhSp33DKQ2kKJtibtMjalp)hZF!}M#)6~|;WJ%nsNQ*939118O2Y+m{DY<9 zD$u~Pk;|WM762tjI>@d|XDY2#oj`GOYs=^V>Ep_yq5j|Rh(d^@=o6JJQL-nKC2I^u z##Us>G8kKADax1+p${68b!^#}L?mmdXlxmpDHCJO9zsI4e4ozm|DWUd#~H_a=Jk4> z=icYuyR!nL>;On4^eNzS`Rh@vsQVWEpZU3|zY+lG;%Oi>l-WFYMTR4%W$nf7Cr~K1 zR-`lxBt#&X+W>MUB~G>$(7u0L+5%?Z-XgrY*b17ayjI^n;yc4G|wXz?td+}A88<9 z<#dMG2*rbdvIz};VqyY801Uj`m>&SHGwzcQmNiv>^=U(4`a9%Fr?kSNQxoc#v>*o7 zfhg%0^`0Al4}Lf+_rBC6^^Va*$-7ol{EP8b3hpEj`$?M^n8jA^Z3ERqkvS2$vR8Ze zLW}Rs;oZ9^yM$I@SN+FjDcAvd_x7rZHVShfFWozcGA7c1nXhn3GY*VS!Q`bP; zU4h8bH;iiancTMv^PD6o-+M2n_wWZdja27KtZF@ais7>bR(b{M%lglskPT2`Ds{~F z&rT2=lFm+4nh97zz_<^hC-{1c)N8U!8M?r3q;wob52!Co;L51Iy&9HI_y1fJW=U8G zFDkI22Nai{+n-^1psV0CQ<0~tExjPmQ1j$iQNbUmb9Djp$6)0L!3vSmbT0&S zD4~S;1|ZX_ZBUmF@8HK+SiqL9 z#H$Y-H_3via*2cRoIcPPs~KM4FJ%Sj1^*K8!-GYz`UV{f ziWl6IfCb_A4;}7l#J}qBxOMQY8%ez6lKbF34XOu*FNZeQF)NCYtP`E(%kQwvdivCb zG|kl0DbNZKK0p5AKU^%DrzLCG)&d^vth7HH)H=6Me3kHBQu1)LV(7Y{xfwg6ySsZi z#Qv(8+$oT-xPD{PV zBK)&VYhs+Ozn}P>EWkDJv{xFu<1N*vxOd}QWQ2+qn0wcY(=#$ajoZA`t;$Xofaevp z)pcQ8q2+6?PVXPcu_A|sNjkIAzE&xoLSN=RIrdBlEoSL|szd6f)I32bE7NU~klc+$ z9wMifMS^h6j`fTFRg$mi(3t@5rO4Pv z^6Z2E{v2y`A9WL&Y~_u_ULwVCBU-M|IjtnG?Fq*(4YtAS6?VIg1_f0?z^sK13=d~^ zsxK^PcLXoMOWj59*cEf`fu@E0@gt}AP@V8=@W0=K68N&QF$Ow;fzm@3f?Ew{f=}z& zu(zRR{%M06wSAA}QV^kUN5qvx=8dQ|o_+3w^-jo6sHZ9u!Pw)RwVz#@eNEO?mYX-Y z0gU>fv4@e>X57Wq74DQLBbljGB3d+}zOs^uoLapxw^NAA9bL+U=agy!-Lr8KvxSA6 zn%ZNyHBh-69UL@slE#aDC-K$c;Ecg*0St0-5IfATcn)5z% zj>%gnn=6|$+2L}L@Op46oq#k2sKMd>gR^xwl0oFdlhz}J(;0?dy}}b{L3IV8IRz%)2O$B&jt!-^OE7J4%@#F?*Rw>V{b2@*hGT@ z=JWAbD_te`el-WddJXPm^j$1=>Xf-f)2MgtHChi#WXn*LhV{97d-37XIb1YmEW1WLMtPiX9K3!MSRem+@T{Yg>CeNuo{W1Qf88&_aZHdY0TJx3qaeL_r|P-eZ8i<1-+Kf|yL{CY3aRxj{FXN9^Z4~SB8GzBi( zwTwpLNL0?hEu@x_WT6DYLqTrgZfi(5DKXE#t?`iqInvev59{A(3t$!?J)AE65EvTI z8fOr&R#e4K5fpFGf+$Lq_Q_M}9g-hplp^ihqP{lbQ6&D)7!vX}(fK0M>!x%HlSbA4 zd<%|MHe(J|2uZB?TJQjPY>!{&(-e8fpx2KA?(SiinHhYCXF!L<*E^>YBESz zJLe92=UKl1Xl6*Bk(~^3r4}bPpKHS#A54nGj58yQ(CG1<&DGS@)OZV}UdU$Xb4^@K z(sL4zdilw141}40iGc%v5(pcSDB?D1yzWedwVg=iZbH!^#*)TTKCbKMK6#@Urg$aA zfj8k3owLUfCMjERdh5#1FWOO%{dD@_NMRegT3^Uhbv<_My29SJL#S(Jk7>% zcxOLx;)c62uTq!Q@uQBc%L>M6mAli5eC+uLLHlS#10N6+Xwd!rILX{x;tgH8> zRxyDC>`ntp#Z1Y$Wi(}xelQ~Jp3A*iCiAf|=Ieae?ttM?=38sQO)Upo`+6b?s{$^i zlXJBTHNUjE-M;E{dQ2`fYm1M`khEIKOd1EyOKe@mRXluSG83+0by6ieCgID^>Mauo zh%L#QLAm<|23j6dOf(SN+~J1hc) z^-=7*#S_k(^E)hE(>J(JY&&%PoT%~Yey{}D9rOU~V*Y%?U%QaWswSH-&A!CZj_qII z=Z=C!PO{v#F%mMghFU`Hr$3l{iR0ORAp(_ZaHOh?`Ay?Y5W~;UuRUSRUrI?)Hj$X# z9J0M`ALUTI9;~+XGGw)7rgrlp$uIS|f`Q@V%NxbMkM9UxL~G}m#IqX?48<&*6>|FO zd^|wy_ki7W$q{R|)+@Pt7@ z$72^+P4&A~h$76o)x6O09y&-I=b>y;zJ2?qke8!ND!e%<%ag~`zT)|6VCN?Jh78eZ zL-v@1KxEoKc?+XE_$Xvpr)vw0P222DbX76&h(lkSo0mk`_5tN*TqMGn zE5t>E67-NOCF3v{jtg<+s(U-D8{511AvZ-A#$pX^e$4<>?+yZ_UHs^yT>U}g$!B*c zA&6a9@n35Cc<#>b9u5Se#Gz^ttJb?+VOsL*0^ze_kGj*x*oiuUNCza^%(bt%-zD~F z1dlPFZhXcm0YzkdT2DARi=bBeJ+o1TR0E{Mh5p@FWnTZz}A6 z9@-GR_WepgqwU_WIht?d@HB(LfEb?0f%!F~X6|q~7afeVEE(J#AnybJNN#DVuCNZ0 zv(=P`MTvkDZnO8HYy%v@SI{SbX41i!L+KbjH8`6@ARmg&O5F5XeV{ZIK4}#zl`h3A!xjc#xe1 ztr{fvL(D!PQYys_P6ID|$v$W*X=`U^NB`it=riIEHEJ0aFt~#HZ)*++g7{h-goouFi@ zM1ieoUKsVPHv<`dn$2g1B9xY{s-VD3Q-tjh_Q08lC873r@WcfOZmQNi>Ir zY9)2-0ww5^Y-|G0dyZD0T-w}?LR_FC`sUomHayRdeM^E!Wg+3G zZ{5Ft|9gLba!o^nyQi1e9GsA?>FL6(!jkg&2GGk&KOFNFoX3$!9~?h{v_zh>6=U&w zXldiTCQluP59uq&$nZ<|`@xi|pU^h97W_dX`rst@DSH^ zn?#Ij8Q5X(lrQcV142SFE6U1dJv=l~9le_MJ4PjG^$YV;Xf3kzC}mmWPp2E|)TpHCWG zT-Qku#iD5j;Adk>q$yrl`tiehG<2_t3Rb>hZ+cf`D!X$oaJGL3Yqk5w%ICW->(dm? zK<_%+@Mjbbu|dLQx+toKv(-)N!i9^JEVUC-($ariqU}%dx7&$&SRHFp{&O8iErJXh zm+N6;DK*@!@vj+PHLqUfsRjSiXN-(Y1L!eK(3xKgwxI_k`IWN^S1S|iu~uEM*|N8> zk%9)Wd!J9&Qt57()~8?RYE4T-&5$KDGg9Gv#%d^pAnYMkR2uI>P|uGq&#z}&i>>4@ zn_Gljc@9bgaoqjaK`rx?oFjwLgh7TRsXe+}OR`oU1HFwBWLoBkPd=zpk z=A#7vq_r)1qqbg*H*JiV_4oI`MY`5_0q`o6IB1-${=%lt=iN)GZs43VN8tVsjEs~+ zc2pAwzx2*E;4&5h8#{q5y)T8*bc&TD3;h2-Le+Op?Ha#aJ@7An8?rtTC|zTna;;lo F{{#LS=(GR; literal 0 HcmV?d00001