From 8567e7c2e078ff52ede4ad89c33044107505ab71 Mon Sep 17 00:00:00 2001 From: daid Date: Fri, 23 Mar 2012 14:04:50 +0100 Subject: [PATCH 01/33] Switch to GCode view when GCode is generated. Switch to model view when loading a new model. #27 --- SkeinPyPy/newui/mainWindow.py | 1 + SkeinPyPy/newui/preview3d.py | 8 +++++++- SkeinPyPy/newui/sliceProgessPanel.py | 6 +++--- 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/SkeinPyPy/newui/mainWindow.py b/SkeinPyPy/newui/mainWindow.py index 9d04138..9c40d84 100644 --- a/SkeinPyPy/newui/mainWindow.py +++ b/SkeinPyPy/newui/mainWindow.py @@ -239,6 +239,7 @@ class mainWindow(configBase.configWindowBase): return self.lastPath = os.path.split(self.filename)[0] self.preview3d.loadModelFile(self.filename) + self.preview3d.setViewMode("Model - Normal") dlg.Destroy() def OnSlice(self, e): diff --git a/SkeinPyPy/newui/preview3d.py b/SkeinPyPy/newui/preview3d.py index 5607f9c..f2a8e48 100644 --- a/SkeinPyPy/newui/preview3d.py +++ b/SkeinPyPy/newui/preview3d.py @@ -184,6 +184,11 @@ class previewPanel(wx.Panel): self.moveModel() self.glCanvas.Refresh() + def setViewMode(self, mode): + self.viewSelect.SetValue(mode) + self.glCanvas.viewMode = self.viewSelect.GetValue() + wx.CallAfter(self.glCanvas.Refresh) + def loadModelFile(self, filename): if self.modelFilename != filename: self.modelFileTime = None @@ -203,8 +208,9 @@ class previewPanel(wx.Panel): def loadReModelFile(self, filename): #Only load this again if the filename matches the file we have already loaded (for auto loading GCode after slicing) if self.modelFilename != filename: - return + return False self.loadModelFile(filename) + return True def doFileLoadThread(self): if os.path.isfile(self.modelFilename) and self.modelFileTime != os.stat(self.modelFilename).st_mtime: diff --git a/SkeinPyPy/newui/sliceProgessPanel.py b/SkeinPyPy/newui/sliceProgessPanel.py index 8d2a83e..ddd3504 100644 --- a/SkeinPyPy/newui/sliceProgessPanel.py +++ b/SkeinPyPy/newui/sliceProgessPanel.py @@ -67,8 +67,7 @@ class sliceProgessPanel(wx.Panel): def OnShowGCode(self, e): self.mainWindow.preview3d.loadModelFile(self.filename) - self.mainWindow.preview3d.viewSelect.SetValue("GCode") - self.mainWindow.preview3d.OnViewChange(None) + self.mainWindow.preview3d.setViewMode("GCode") def OnShowLog(self, e): LogWindow('\n'.join(self.progressLog)) @@ -93,7 +92,8 @@ class sliceProgessPanel(wx.Panel): self.sizer.Layout() self.Layout() self.abort = True - self.mainWindow.preview3d.loadReModelFile(self.filename) + if self.mainWindow.preview3d.loadReModelFile(self.filename): + self.mainWindow.preview3d.setViewMode("GCode") def SetProgress(self, stepName, layer, maxLayer): if self.prevStep != stepName: From 895fe2a18078f4c029282ba9f012252f5496d393 Mon Sep 17 00:00:00 2001 From: Daid Date: Sat, 24 Mar 2012 10:51:52 +0100 Subject: [PATCH 02/33] Rename in source files to Cura --- SkeinPyPy/fabmetheus_utilities/settings.py | 8 ++++---- SkeinPyPy/newui/configWizard.py | 8 ++++---- SkeinPyPy/newui/mainWindow.py | 13 ++++++++++--- .../skeinforge_utilities/skeinforge_profile.py | 2 +- SkeinPyPy/skeinpypy.py | 2 +- 5 files changed, 20 insertions(+), 13 deletions(-) diff --git a/SkeinPyPy/fabmetheus_utilities/settings.py b/SkeinPyPy/fabmetheus_utilities/settings.py index 3c312b1..351c3cc 100644 --- a/SkeinPyPy/fabmetheus_utilities/settings.py +++ b/SkeinPyPy/fabmetheus_utilities/settings.py @@ -88,7 +88,7 @@ def calculateMultiplyDistance(setting): edgeWidth = calculateEdgeWidth(setting) return 10.0 / edgeWidth -def getSkeinPyPyProfileInformation(): +def getProfileInformation(): return { 'carve': { 'Add_Layer_Template_to_SVG': DEFSET, @@ -400,9 +400,9 @@ def safeConfigName(name): def getReadRepository(repository): "Read the configuration for this 'repository'" - info = getSkeinPyPyProfileInformation() + info = getProfileInformation() if not info.has_key(repository.name): - print "Warning: Plugin: " + repository.name + " missing from SkeinPyPy info" + print "Warning: Plugin: " + repository.name + " missing from Cura info" return repository info = info[repository.name] @@ -410,7 +410,7 @@ def getReadRepository(repository): for p in repository.preferences: name = safeConfigName(p.name) if not info.has_key(name): - print "Setting: " + repository.name + ":" + name + " missing from SkeinPyPy info" + print "Setting: " + repository.name + ":" + name + " missing from Cura info" continue if isinstance(info[name], types.FunctionType): p.setValueToString(str(info[name](p))) diff --git a/SkeinPyPy/newui/configWizard.py b/SkeinPyPy/newui/configWizard.py index 7070158..4450195 100644 --- a/SkeinPyPy/newui/configWizard.py +++ b/SkeinPyPy/newui/configWizard.py @@ -60,10 +60,10 @@ class InfoPage(wx.wizard.WizardPageSimple): class FirstInfoPage(InfoPage): def __init__(self, parent): super(FirstInfoPage, self).__init__(parent, "First time run wizard") - self.AddText('Welcome, and thanks for trying SkeinPyPy!') + self.AddText('Welcome, and thanks for trying Cura!') self.AddSeperator() self.AddText('This wizard will help you with the following steps:') - self.AddText('* Configure SkeinPyPy for your machine') + self.AddText('* Configure Cura for your machine') self.AddText('* Upgrade your firmware') self.AddText('* Calibrate your machine') #self.AddText('* Do your first print') @@ -73,7 +73,7 @@ class RepRapInfoPage(InfoPage): super(RepRapInfoPage, self).__init__(parent, "RepRap information") self.AddText('Sorry, but this wizard will not help you with\nconfiguring and calibrating your RepRap.') self.AddSeperator() - self.AddText('You will have to manually install Marlin firmware\nand configure SkeinPyPy.') + self.AddText('You will have to manually install Marlin or Sprinter firmware\nand configure Cura.') class MachineSelectPage(InfoPage): def __init__(self, parent): @@ -116,7 +116,7 @@ class FirmwareUpgradePage(InfoPage): self.AddHiddenSeperator() self.AddText('The firmware shipping with new Ultimakers works, but upgrades\nhave been made to make better prints, and make calibration easier.') self.AddHiddenSeperator() - self.AddText('SkeinPyPy requires these new features and thus\nyour firmware will most likely need to be upgraded.\nYou will get the chance to do so now.') + self.AddText('Cura requires these new features and thus\nyour firmware will most likely need to be upgraded.\nYou will get the chance to do so now.') upgradeButton, skipUpgradeButton = self.AddDualButton('Upgrade to Marlin firmware', 'Skip upgrade') upgradeButton.Bind(wx.EVT_BUTTON, self.OnUpgradeClick) skipUpgradeButton.Bind(wx.EVT_BUTTON, self.OnSkipClick) diff --git a/SkeinPyPy/newui/mainWindow.py b/SkeinPyPy/newui/mainWindow.py index 9d04138..28ccb57 100644 --- a/SkeinPyPy/newui/mainWindow.py +++ b/SkeinPyPy/newui/mainWindow.py @@ -13,12 +13,13 @@ from newui import preferencesDialog from newui import configWizard from newui import machineCom from newui import profile +from newui import printWindow def main(): app = wx.App(False) if profile.getPreference('wizardDone') == 'False': if os.name == 'darwin': - wx.MessageBox('The MacOS version of SkeinPyPy is experimental.\nThere are still UI/usability bugs. Check the issue list at:\nhttps://github.com/daid/SkeinPyPy/issues\nfor details.\nPlease report any extra issue you find.', 'MacOS Warning', wx.OK | wx.ICON_INFORMATION) + wx.MessageBox('The MacOS version of Cura is experimental.\nThere are still UI/usability bugs. Check the issue list at:\nhttps://github.com/daid/SkeinPyPy/issues\nfor details.\nPlease report any extra issue you find.', 'MacOS Warning', wx.OK | wx.ICON_INFORMATION) configWizard.configWizard() profile.putPreference("wizardDone", "True") mainWindow() @@ -27,7 +28,7 @@ def main(): class mainWindow(configBase.configWindowBase): "Main user interface window" def __init__(self): - super(mainWindow, self).__init__(title='SkeinPyPy') + super(mainWindow, self).__init__(title='Cura') wx.EVT_CLOSE(self, self.OnClose) @@ -161,8 +162,10 @@ class mainWindow(configBase.configWindowBase): # load and slice buttons. loadButton = wx.Button(self, -1, 'Load Model') sliceButton = wx.Button(self, -1, 'Slice to GCode') + #printButton = wx.Button(self, -1, 'Print GCode') self.Bind(wx.EVT_BUTTON, self.OnLoadModel, loadButton) self.Bind(wx.EVT_BUTTON, self.OnSlice, sliceButton) + #self.Bind(wx.EVT_BUTTON, self.OnPrint, printButton) #Also bind double clicking the 3D preview to load an STL file. self.preview3d.glCanvas.Bind(wx.EVT_LEFT_DCLICK, self.OnLoadModel, self.preview3d.glCanvas) @@ -174,7 +177,8 @@ class mainWindow(configBase.configWindowBase): sizer.AddGrowableCol(2) sizer.AddGrowableRow(0) sizer.Add(loadButton, (1,1), flag=wx.RIGHT, border=5) - sizer.Add(sliceButton, (1,2)) + sizer.Add(sliceButton, (1,2), flag=wx.RIGHT, border=5) + #sizer.Add(printButton, (1,3), flag=wx.RIGHT, border=5) self.sizer = sizer if self.filename != "None": @@ -254,6 +258,9 @@ class mainWindow(configBase.configWindowBase): newSize.IncBy(0, spp.GetSize().GetHeight()) self.SetSize(newSize) self.progressPanelList.append(spp) + + def OnPrint(self, e): + printWindow.printWindow() def OnExpertOpen(self, e): acw = advancedConfig.advancedConfigWindow() diff --git a/SkeinPyPy/skeinforge_application/skeinforge_utilities/skeinforge_profile.py b/SkeinPyPy/skeinforge_application/skeinforge_utilities/skeinforge_profile.py index fbdc972..38f8c9c 100644 --- a/SkeinPyPy/skeinforge_application/skeinforge_utilities/skeinforge_profile.py +++ b/SkeinPyPy/skeinforge_application/skeinforge_utilities/skeinforge_profile.py @@ -15,7 +15,7 @@ def getCraftTypeName(): return 'extrusion' def getProfileName(craftTypeName): - return 'SkeinPyPy profile:' + craftTypeName + return 'Cura profile:' + craftTypeName def addListsToCraftTypeRepository(fileNameHelp, repository): #print('addListsToCraftTypeRepository:', fileNameHelp, repository) diff --git a/SkeinPyPy/skeinpypy.py b/SkeinPyPy/skeinpypy.py index f307961..b968a94 100644 --- a/SkeinPyPy/skeinpypy.py +++ b/SkeinPyPy/skeinpypy.py @@ -3,7 +3,7 @@ This page is in the table of contents. ==Overview== ===Introduction=== -SkeinPyPy is a GPL tool chain to forge a gcode skein for a model. Based on Skeinforge. +Cura is a GPL tool chain to forge a gcode skein for a model. Based on Skeinforge. The slicing code is the same as Skeinforge. But the UI has been revamped to be... sane. From 397342429487346834fe073281a08c7daf7185fe Mon Sep 17 00:00:00 2001 From: Daid Date: Sat, 24 Mar 2012 11:01:35 +0100 Subject: [PATCH 03/33] Rename from SkeinPyPy to Cura in URLs, paths and scripts. --- .gitignore | 6 +++--- {SkeinPyPy => Cura}/SkeinforgeVersion | 0 {SkeinPyPy => Cura}/__init__.py | 0 {SkeinPyPy => Cura}/avr_isp/__init__.py | 0 {SkeinPyPy => Cura}/avr_isp/chipDB.py | 0 {SkeinPyPy => Cura}/avr_isp/intelHex.py | 0 {SkeinPyPy => Cura}/avr_isp/ispBase.py | 0 {SkeinPyPy => Cura}/avr_isp/stk500v2.py | 0 SkeinPyPy/skeinpypy.py => Cura/cura.py | 0 {SkeinPyPy => Cura}/fabmetheus_utilities/__init__.py | 0 {SkeinPyPy => Cura}/fabmetheus_utilities/archive.py | 0 {SkeinPyPy => Cura}/fabmetheus_utilities/euclidean.py | 0 .../fabmetheus_utilities/fabmetheus_tools/__init__.py | 0 .../fabmetheus_utilities/fabmetheus_tools/alphabetize.py | 0 .../fabmetheus_tools/fabmetheus_interpret.py | 0 .../fabmetheus_tools/interpret_plugins/__init__.py | 0 .../fabmetheus_tools/interpret_plugins/csv.py | 0 .../fabmetheus_tools/interpret_plugins/gts.py | 0 .../fabmetheus_tools/interpret_plugins/obj.py | 0 .../fabmetheus_tools/interpret_plugins/slc.py | 0 .../fabmetheus_tools/interpret_plugins/stl.py | 0 .../fabmetheus_tools/interpret_plugins/svg.py | 0 .../fabmetheus_utilities/fabmetheus_tools/prepare.py | 0 .../fabmetheus_utilities/fabmetheus_tools/wikifier.py | 0 {SkeinPyPy => Cura}/fabmetheus_utilities/gcodec.py | 0 .../fabmetheus_utilities/geometry/__init__.py | 0 .../fabmetheus_utilities/geometry/creation/__init__.py | 0 .../fabmetheus_utilities/geometry/creation/_drill.py | 0 .../fabmetheus_utilities/geometry/creation/_svg.py | 0 .../fabmetheus_utilities/geometry/creation/circle.py | 0 .../fabmetheus_utilities/geometry/creation/concatenate.py | 0 .../fabmetheus_utilities/geometry/creation/extrude.py | 0 .../fabmetheus_utilities/geometry/creation/gear.py | 0 .../fabmetheus_utilities/geometry/creation/grid.py | 0 .../fabmetheus_utilities/geometry/creation/heightmap.py | 0 .../fabmetheus_utilities/geometry/creation/lathe.py | 0 .../fabmetheus_utilities/geometry/creation/line.py | 0 .../geometry/creation/linear_bearing_cage.py | 0 .../fabmetheus_utilities/geometry/creation/lineation.py | 0 .../fabmetheus_utilities/geometry/creation/mechaslab.py | 0 .../fabmetheus_utilities/geometry/creation/peg.py | 0 .../fabmetheus_utilities/geometry/creation/polygon.py | 0 .../fabmetheus_utilities/geometry/creation/shaft.py | 0 .../fabmetheus_utilities/geometry/creation/solid.py | 0 .../fabmetheus_utilities/geometry/creation/sponge_slice.py | 0 .../fabmetheus_utilities/geometry/creation/square.py | 0 .../fabmetheus_utilities/geometry/creation/teardrop.py | 0 .../fabmetheus_utilities/geometry/creation/text.py | 0 .../geometry/geometry_tools/__init__.py | 0 .../geometry/geometry_tools/dictionary.py | 0 .../fabmetheus_utilities/geometry/geometry_tools/face.py | 0 .../fabmetheus_utilities/geometry/geometry_tools/path.py | 0 .../geometry/geometry_tools/path_elements/__init__.py | 0 .../geometry/geometry_tools/path_elements/arc.py | 0 .../geometry/geometry_tools/path_elements/cubic.py | 0 .../geometry/geometry_tools/path_elements/quadratic.py | 0 .../fabmetheus_utilities/geometry/geometry_tools/vertex.py | 0 .../geometry/geometry_utilities/__init__.py | 0 .../geometry/geometry_utilities/boolean_geometry.py | 0 .../geometry/geometry_utilities/boolean_solid.py | 0 .../geometry/geometry_utilities/evaluate.py | 0 .../geometry_utilities/evaluate_elements/__init__.py | 0 .../geometry_utilities/evaluate_elements/creation.py | 0 .../geometry_utilities/evaluate_elements/document.py | 0 .../geometry_utilities/evaluate_elements/setting.py | 0 .../geometry_utilities/evaluate_enumerables/__init__.py | 0 .../evaluate_enumerables/dictionary_attribute.py | 0 .../evaluate_enumerables/list_attribute.py | 0 .../evaluate_enumerables/string_attribute.py | 0 .../geometry_utilities/evaluate_fundamentals/__init__.py | 0 .../geometry_utilities/evaluate_fundamentals/_math.py | 0 .../geometry_utilities/evaluate_fundamentals/euclid.py | 0 .../geometry_utilities/evaluate_fundamentals/measure.py | 0 .../geometry_utilities/evaluate_fundamentals/print.py | 0 .../geometry/geometry_utilities/example.csv | 0 .../geometry/geometry_utilities/matrix.py | 0 .../geometry/manipulation_matrix/__init__.py | 0 .../geometry/manipulation_matrix/_scale.py | 0 .../geometry/manipulation_matrix/rotate.py | 0 .../geometry/manipulation_matrix/transform.py | 0 .../geometry/manipulation_matrix/translate.py | 0 .../geometry/manipulation_meta/__init__.py | 0 .../geometry/manipulation_meta/_array.py | 0 .../geometry/manipulation_meta/_carve.py | 0 .../geometry/manipulation_meta/_copy.py | 0 .../geometry/manipulation_meta/disjoin.py | 0 .../geometry/manipulation_meta/import.py | 0 .../geometry/manipulation_meta/write.py | 0 .../geometry/manipulation_paths/__init__.py | 0 .../geometry/manipulation_paths/bevel.py | 0 .../geometry/manipulation_paths/convex.py | 0 .../geometry/manipulation_paths/outline.py | 0 .../geometry/manipulation_paths/overhang.py | 0 .../geometry/manipulation_paths/round.py | 0 .../geometry/manipulation_paths/segment.py | 0 .../geometry/manipulation_paths/wedge.py | 0 .../geometry/manipulation_shapes/__init__.py | 0 .../geometry/manipulation_shapes/_bottom.py | 0 .../geometry/manipulation_shapes/_inset.py | 0 .../geometry/manipulation_shapes/_outset.py | 0 .../geometry/manipulation_shapes/equation.py | 0 .../geometry/manipulation_shapes/flip.py | 0 .../geometry/manipulation_shapes/mirror.py | 0 .../fabmetheus_utilities/geometry/solids/__init__.py | 0 .../fabmetheus_utilities/geometry/solids/cube.py | 0 .../fabmetheus_utilities/geometry/solids/cylinder.py | 0 .../fabmetheus_utilities/geometry/solids/difference.py | 0 .../fabmetheus_utilities/geometry/solids/group.py | 0 .../fabmetheus_utilities/geometry/solids/intersection.py | 0 .../fabmetheus_utilities/geometry/solids/sphere.py | 0 .../fabmetheus_utilities/geometry/solids/triangle_mesh.py | 0 .../fabmetheus_utilities/geometry/solids/union.py | 0 .../fabmetheus_utilities/geometry/statements/__init__.py | 0 .../fabmetheus_utilities/geometry/statements/_print.py | 0 .../fabmetheus_utilities/geometry/statements/class.py | 0 .../fabmetheus_utilities/geometry/statements/elif.py | 0 .../fabmetheus_utilities/geometry/statements/else.py | 0 .../fabmetheus_utilities/geometry/statements/for.py | 0 .../fabmetheus_utilities/geometry/statements/function.py | 0 .../fabmetheus_utilities/geometry/statements/if.py | 0 .../fabmetheus_utilities/geometry/statements/return.py | 0 .../fabmetheus_utilities/geometry/statements/statement.py | 0 .../fabmetheus_utilities/geometry/statements/while.py | 0 .../fabmetheus_utilities/geometry_plugins/__init__.py | 0 .../geometry_plugins/creation/__init__.py | 0 .../geometry_plugins/manipulation_matrix/__init__.py | 0 .../geometry_plugins/manipulation_meta/__init__.py | 0 .../geometry_plugins/manipulation_paths/__init__.py | 0 .../geometry_plugins/manipulation_shapes/__init__.py | 0 {SkeinPyPy => Cura}/fabmetheus_utilities/intercircle.py | 0 {SkeinPyPy => Cura}/fabmetheus_utilities/settings.py | 0 {SkeinPyPy => Cura}/fabmetheus_utilities/svg_reader.py | 0 {SkeinPyPy => Cura}/fabmetheus_utilities/svg_writer.py | 0 .../fabmetheus_utilities/templates/canvas_template.svg | 0 .../fabmetheus_utilities/templates/layer_template.svg | 0 {SkeinPyPy => Cura}/fabmetheus_utilities/vector3.py | 0 {SkeinPyPy => Cura}/fabmetheus_utilities/vector3index.py | 0 {SkeinPyPy => Cura}/fabmetheus_utilities/version.txt | 0 .../fabmetheus_utilities/xml_simple_reader.py | 0 .../fabmetheus_utilities/xml_simple_writer.py | 0 {SkeinPyPy => Cura}/firmware/default.h | 0 {SkeinPyPy => Cura}/firmware/default.hex | 0 {SkeinPyPy => Cura}/newui/__init__.py | 0 {SkeinPyPy => Cura}/newui/advancedConfig.py | 0 {SkeinPyPy => Cura}/newui/alterationPanel.py | 0 {SkeinPyPy => Cura}/newui/configBase.py | 0 {SkeinPyPy => Cura}/newui/configWizard.py | 0 {SkeinPyPy => Cura}/newui/gcodeInterpreter.py | 0 {SkeinPyPy => Cura}/newui/machineCom.py | 0 {SkeinPyPy => Cura}/newui/mainWindow.py | 6 +++--- {SkeinPyPy => Cura}/newui/preferencesDialog.py | 0 {SkeinPyPy => Cura}/newui/preview3d.py | 0 {SkeinPyPy => Cura}/newui/profile.py | 0 {SkeinPyPy => Cura}/newui/sliceProgessPanel.py | 0 {SkeinPyPy => Cura}/newui/sliceRun.py | 0 {SkeinPyPy => Cura}/newui/util3d.py | 0 {SkeinPyPy => Cura}/newui/validators.py | 0 {SkeinPyPy => Cura}/skeinforge_application/__init__.py | 0 .../skeinforge_application/alterations/end.gcode | 0 .../alterations/example_cool_end.gcode | 0 .../alterations/example_cool_start.gcode | 0 .../skeinforge_application/alterations/example_end.gcode | 0 .../skeinforge_application/alterations/example_home.gcode | 0 .../skeinforge_application/alterations/example_replace.csv | 0 .../alterations/example_replace_M108.csv | 0 .../skeinforge_application/alterations/example_start.gcode | 0 .../alterations/example_support_end.gcode | 0 .../alterations/example_support_start.gcode | 0 .../skeinforge_application/alterations/start.gcode | 0 .../skeinforge_application/skeinforge_plugins/__init__.py | 0 .../skeinforge_application/skeinforge_plugins/analyze.py | 0 .../skeinforge_plugins/analyze_plugins/__init__.py | 0 .../skeinforge_application/skeinforge_plugins/craft.py | 0 .../skeinforge_plugins/craft_plugins/__init__.py | 0 .../skeinforge_plugins/craft_plugins/alteration.py | 0 .../skeinforge_plugins/craft_plugins/bottom.py | 0 .../skeinforge_plugins/craft_plugins/carve.py | 0 .../skeinforge_plugins/craft_plugins/chamber.py | 0 .../skeinforge_plugins/craft_plugins/chop.py | 0 .../skeinforge_plugins/craft_plugins/cleave.py | 0 .../skeinforge_plugins/craft_plugins/clip.py | 0 .../skeinforge_plugins/craft_plugins/coil.py | 0 .../skeinforge_plugins/craft_plugins/comb.py | 0 .../skeinforge_plugins/craft_plugins/cool.py | 0 .../skeinforge_plugins/craft_plugins/dimension.py | 0 .../skeinforge_plugins/craft_plugins/drill.py | 0 .../skeinforge_plugins/craft_plugins/dwindle.py | 0 .../skeinforge_plugins/craft_plugins/export.py | 0 .../craft_plugins/export_plugins/__init__.py | 0 .../craft_plugins/export_plugins/binary_16_byte.py | 0 .../craft_plugins/export_plugins/gcode_step.py | 0 .../craft_plugins/export_plugins/gcode_time_segment.py | 0 .../craft_plugins/export_plugins/static_plugins/__init__.py | 0 .../export_plugins/static_plugins/gcode_small.py | 0 .../skeinforge_plugins/craft_plugins/feed.py | 0 .../skeinforge_plugins/craft_plugins/fill.py | 0 .../skeinforge_plugins/craft_plugins/fillet.py | 0 .../skeinforge_plugins/craft_plugins/flow.py | 0 .../skeinforge_plugins/craft_plugins/home.py | 0 .../skeinforge_plugins/craft_plugins/hop.py | 0 .../skeinforge_plugins/craft_plugins/inset.py | 0 .../skeinforge_plugins/craft_plugins/jitter.py | 0 .../skeinforge_plugins/craft_plugins/joris.py | 0 .../skeinforge_plugins/craft_plugins/lash.py | 0 .../skeinforge_plugins/craft_plugins/lift.py | 0 .../skeinforge_plugins/craft_plugins/limit.py | 0 .../skeinforge_plugins/craft_plugins/mill.py | 0 .../skeinforge_plugins/craft_plugins/multiply.py | 0 .../skeinforge_plugins/craft_plugins/oozebane.py | 0 .../skeinforge_plugins/craft_plugins/outset.py | 0 .../skeinforge_plugins/craft_plugins/preface.py | 0 .../skeinforge_plugins/craft_plugins/raft.py | 0 .../skeinforge_plugins/craft_plugins/scale.py | 0 .../skeinforge_plugins/craft_plugins/skin.py | 0 .../skeinforge_plugins/craft_plugins/skirt.py | 0 .../skeinforge_plugins/craft_plugins/smooth.py | 0 .../skeinforge_plugins/craft_plugins/speed.py | 0 .../skeinforge_plugins/craft_plugins/splodge.py | 0 .../skeinforge_plugins/craft_plugins/stretch.py | 0 .../skeinforge_plugins/craft_plugins/temperature.py | 0 .../skeinforge_plugins/craft_plugins/tower.py | 0 .../skeinforge_plugins/craft_plugins/unpause.py | 0 .../skeinforge_plugins/craft_plugins/whittle.py | 0 .../skeinforge_plugins/craft_plugins/widen.py | 0 .../skeinforge_plugins/craft_plugins/wipe.py | 0 .../skeinforge_application/skeinforge_plugins/help.py | 0 .../skeinforge_application/skeinforge_plugins/meta.py | 0 .../skeinforge_plugins/meta_plugins/__init__.py | 0 .../skeinforge_plugins/meta_plugins/description.py | 0 .../skeinforge_plugins/meta_plugins/polyfile.py | 0 .../skeinforge_application/skeinforge_plugins/profile.py | 0 .../skeinforge_plugins/profile_plugins/__init__.py | 0 .../skeinforge_plugins/profile_plugins/cutting.py | 0 .../skeinforge_plugins/profile_plugins/extrusion.py | 0 .../skeinforge_plugins/profile_plugins/milling.py | 0 .../skeinforge_plugins/profile_plugins/winding.py | 0 .../skeinforge_application/skeinforge_utilities/__init__.py | 0 .../skeinforge_utilities/skeinforge_analyze.py | 0 .../skeinforge_utilities/skeinforge_craft.py | 0 .../skeinforge_utilities/skeinforge_help.py | 0 .../skeinforge_utilities/skeinforge_meta.py | 0 .../skeinforge_utilities/skeinforge_polyfile.py | 0 .../skeinforge_utilities/skeinforge_profile.py | 0 package.sh | 6 +++--- scripts/linux/skeinpypy.sh | 2 +- scripts/osx64/skeinpypy.sh | 2 +- scripts/win32/skeinpypy.bat | 2 +- 247 files changed, 12 insertions(+), 12 deletions(-) rename {SkeinPyPy => Cura}/SkeinforgeVersion (100%) rename {SkeinPyPy => Cura}/__init__.py (100%) rename {SkeinPyPy => Cura}/avr_isp/__init__.py (100%) rename {SkeinPyPy => Cura}/avr_isp/chipDB.py (100%) rename {SkeinPyPy => Cura}/avr_isp/intelHex.py (100%) rename {SkeinPyPy => Cura}/avr_isp/ispBase.py (100%) rename {SkeinPyPy => Cura}/avr_isp/stk500v2.py (100%) rename SkeinPyPy/skeinpypy.py => Cura/cura.py (100%) rename {SkeinPyPy => Cura}/fabmetheus_utilities/__init__.py (100%) rename {SkeinPyPy => Cura}/fabmetheus_utilities/archive.py (100%) rename {SkeinPyPy => Cura}/fabmetheus_utilities/euclidean.py (100%) rename {SkeinPyPy => Cura}/fabmetheus_utilities/fabmetheus_tools/__init__.py (100%) rename {SkeinPyPy => Cura}/fabmetheus_utilities/fabmetheus_tools/alphabetize.py (100%) rename {SkeinPyPy => Cura}/fabmetheus_utilities/fabmetheus_tools/fabmetheus_interpret.py (100%) rename {SkeinPyPy => Cura}/fabmetheus_utilities/fabmetheus_tools/interpret_plugins/__init__.py (100%) rename {SkeinPyPy => Cura}/fabmetheus_utilities/fabmetheus_tools/interpret_plugins/csv.py (100%) rename {SkeinPyPy => Cura}/fabmetheus_utilities/fabmetheus_tools/interpret_plugins/gts.py (100%) rename {SkeinPyPy => Cura}/fabmetheus_utilities/fabmetheus_tools/interpret_plugins/obj.py (100%) rename {SkeinPyPy => Cura}/fabmetheus_utilities/fabmetheus_tools/interpret_plugins/slc.py (100%) rename {SkeinPyPy => Cura}/fabmetheus_utilities/fabmetheus_tools/interpret_plugins/stl.py (100%) rename {SkeinPyPy => Cura}/fabmetheus_utilities/fabmetheus_tools/interpret_plugins/svg.py (100%) rename {SkeinPyPy => Cura}/fabmetheus_utilities/fabmetheus_tools/prepare.py (100%) rename {SkeinPyPy => Cura}/fabmetheus_utilities/fabmetheus_tools/wikifier.py (100%) rename {SkeinPyPy => Cura}/fabmetheus_utilities/gcodec.py (100%) rename {SkeinPyPy => Cura}/fabmetheus_utilities/geometry/__init__.py (100%) rename {SkeinPyPy => Cura}/fabmetheus_utilities/geometry/creation/__init__.py (100%) rename {SkeinPyPy => Cura}/fabmetheus_utilities/geometry/creation/_drill.py (100%) rename {SkeinPyPy => Cura}/fabmetheus_utilities/geometry/creation/_svg.py (100%) rename {SkeinPyPy => Cura}/fabmetheus_utilities/geometry/creation/circle.py (100%) rename {SkeinPyPy => Cura}/fabmetheus_utilities/geometry/creation/concatenate.py (100%) rename {SkeinPyPy => Cura}/fabmetheus_utilities/geometry/creation/extrude.py (100%) rename {SkeinPyPy => Cura}/fabmetheus_utilities/geometry/creation/gear.py (100%) rename {SkeinPyPy => Cura}/fabmetheus_utilities/geometry/creation/grid.py (100%) rename {SkeinPyPy => Cura}/fabmetheus_utilities/geometry/creation/heightmap.py (100%) rename {SkeinPyPy => Cura}/fabmetheus_utilities/geometry/creation/lathe.py (100%) rename {SkeinPyPy => Cura}/fabmetheus_utilities/geometry/creation/line.py (100%) rename {SkeinPyPy => Cura}/fabmetheus_utilities/geometry/creation/linear_bearing_cage.py (100%) rename {SkeinPyPy => Cura}/fabmetheus_utilities/geometry/creation/lineation.py (100%) rename {SkeinPyPy => Cura}/fabmetheus_utilities/geometry/creation/mechaslab.py (100%) rename {SkeinPyPy => Cura}/fabmetheus_utilities/geometry/creation/peg.py (100%) rename {SkeinPyPy => Cura}/fabmetheus_utilities/geometry/creation/polygon.py (100%) rename {SkeinPyPy => Cura}/fabmetheus_utilities/geometry/creation/shaft.py (100%) rename {SkeinPyPy => Cura}/fabmetheus_utilities/geometry/creation/solid.py (100%) rename {SkeinPyPy => Cura}/fabmetheus_utilities/geometry/creation/sponge_slice.py (100%) rename {SkeinPyPy => Cura}/fabmetheus_utilities/geometry/creation/square.py (100%) rename {SkeinPyPy => Cura}/fabmetheus_utilities/geometry/creation/teardrop.py (100%) rename {SkeinPyPy => Cura}/fabmetheus_utilities/geometry/creation/text.py (100%) rename {SkeinPyPy => Cura}/fabmetheus_utilities/geometry/geometry_tools/__init__.py (100%) rename {SkeinPyPy => Cura}/fabmetheus_utilities/geometry/geometry_tools/dictionary.py (100%) rename {SkeinPyPy => Cura}/fabmetheus_utilities/geometry/geometry_tools/face.py (100%) rename {SkeinPyPy => Cura}/fabmetheus_utilities/geometry/geometry_tools/path.py (100%) rename {SkeinPyPy => Cura}/fabmetheus_utilities/geometry/geometry_tools/path_elements/__init__.py (100%) rename {SkeinPyPy => Cura}/fabmetheus_utilities/geometry/geometry_tools/path_elements/arc.py (100%) rename {SkeinPyPy => Cura}/fabmetheus_utilities/geometry/geometry_tools/path_elements/cubic.py (100%) rename {SkeinPyPy => Cura}/fabmetheus_utilities/geometry/geometry_tools/path_elements/quadratic.py (100%) rename {SkeinPyPy => Cura}/fabmetheus_utilities/geometry/geometry_tools/vertex.py (100%) rename {SkeinPyPy => Cura}/fabmetheus_utilities/geometry/geometry_utilities/__init__.py (100%) rename {SkeinPyPy => Cura}/fabmetheus_utilities/geometry/geometry_utilities/boolean_geometry.py (100%) rename {SkeinPyPy => Cura}/fabmetheus_utilities/geometry/geometry_utilities/boolean_solid.py (100%) rename {SkeinPyPy => Cura}/fabmetheus_utilities/geometry/geometry_utilities/evaluate.py (100%) rename {SkeinPyPy => Cura}/fabmetheus_utilities/geometry/geometry_utilities/evaluate_elements/__init__.py (100%) rename {SkeinPyPy => Cura}/fabmetheus_utilities/geometry/geometry_utilities/evaluate_elements/creation.py (100%) rename {SkeinPyPy => Cura}/fabmetheus_utilities/geometry/geometry_utilities/evaluate_elements/document.py (100%) rename {SkeinPyPy => Cura}/fabmetheus_utilities/geometry/geometry_utilities/evaluate_elements/setting.py (100%) rename {SkeinPyPy => Cura}/fabmetheus_utilities/geometry/geometry_utilities/evaluate_enumerables/__init__.py (100%) rename {SkeinPyPy => Cura}/fabmetheus_utilities/geometry/geometry_utilities/evaluate_enumerables/dictionary_attribute.py (100%) rename {SkeinPyPy => Cura}/fabmetheus_utilities/geometry/geometry_utilities/evaluate_enumerables/list_attribute.py (100%) rename {SkeinPyPy => Cura}/fabmetheus_utilities/geometry/geometry_utilities/evaluate_enumerables/string_attribute.py (100%) rename {SkeinPyPy => Cura}/fabmetheus_utilities/geometry/geometry_utilities/evaluate_fundamentals/__init__.py (100%) rename {SkeinPyPy => Cura}/fabmetheus_utilities/geometry/geometry_utilities/evaluate_fundamentals/_math.py (100%) rename {SkeinPyPy => Cura}/fabmetheus_utilities/geometry/geometry_utilities/evaluate_fundamentals/euclid.py (100%) rename {SkeinPyPy => Cura}/fabmetheus_utilities/geometry/geometry_utilities/evaluate_fundamentals/measure.py (100%) rename {SkeinPyPy => Cura}/fabmetheus_utilities/geometry/geometry_utilities/evaluate_fundamentals/print.py (100%) rename {SkeinPyPy => Cura}/fabmetheus_utilities/geometry/geometry_utilities/example.csv (100%) rename {SkeinPyPy => Cura}/fabmetheus_utilities/geometry/geometry_utilities/matrix.py (100%) rename {SkeinPyPy => Cura}/fabmetheus_utilities/geometry/manipulation_matrix/__init__.py (100%) rename {SkeinPyPy => Cura}/fabmetheus_utilities/geometry/manipulation_matrix/_scale.py (100%) rename {SkeinPyPy => Cura}/fabmetheus_utilities/geometry/manipulation_matrix/rotate.py (100%) rename {SkeinPyPy => Cura}/fabmetheus_utilities/geometry/manipulation_matrix/transform.py (100%) rename {SkeinPyPy => Cura}/fabmetheus_utilities/geometry/manipulation_matrix/translate.py (100%) rename {SkeinPyPy => Cura}/fabmetheus_utilities/geometry/manipulation_meta/__init__.py (100%) rename {SkeinPyPy => Cura}/fabmetheus_utilities/geometry/manipulation_meta/_array.py (100%) rename {SkeinPyPy => Cura}/fabmetheus_utilities/geometry/manipulation_meta/_carve.py (100%) rename {SkeinPyPy => Cura}/fabmetheus_utilities/geometry/manipulation_meta/_copy.py (100%) rename {SkeinPyPy => Cura}/fabmetheus_utilities/geometry/manipulation_meta/disjoin.py (100%) rename {SkeinPyPy => Cura}/fabmetheus_utilities/geometry/manipulation_meta/import.py (100%) rename {SkeinPyPy => Cura}/fabmetheus_utilities/geometry/manipulation_meta/write.py (100%) rename {SkeinPyPy => Cura}/fabmetheus_utilities/geometry/manipulation_paths/__init__.py (100%) rename {SkeinPyPy => Cura}/fabmetheus_utilities/geometry/manipulation_paths/bevel.py (100%) rename {SkeinPyPy => Cura}/fabmetheus_utilities/geometry/manipulation_paths/convex.py (100%) rename {SkeinPyPy => Cura}/fabmetheus_utilities/geometry/manipulation_paths/outline.py (100%) rename {SkeinPyPy => Cura}/fabmetheus_utilities/geometry/manipulation_paths/overhang.py (100%) rename {SkeinPyPy => Cura}/fabmetheus_utilities/geometry/manipulation_paths/round.py (100%) rename {SkeinPyPy => Cura}/fabmetheus_utilities/geometry/manipulation_paths/segment.py (100%) rename {SkeinPyPy => Cura}/fabmetheus_utilities/geometry/manipulation_paths/wedge.py (100%) rename {SkeinPyPy => Cura}/fabmetheus_utilities/geometry/manipulation_shapes/__init__.py (100%) rename {SkeinPyPy => Cura}/fabmetheus_utilities/geometry/manipulation_shapes/_bottom.py (100%) rename {SkeinPyPy => Cura}/fabmetheus_utilities/geometry/manipulation_shapes/_inset.py (100%) rename {SkeinPyPy => Cura}/fabmetheus_utilities/geometry/manipulation_shapes/_outset.py (100%) rename {SkeinPyPy => Cura}/fabmetheus_utilities/geometry/manipulation_shapes/equation.py (100%) rename {SkeinPyPy => Cura}/fabmetheus_utilities/geometry/manipulation_shapes/flip.py (100%) rename {SkeinPyPy => Cura}/fabmetheus_utilities/geometry/manipulation_shapes/mirror.py (100%) rename {SkeinPyPy => Cura}/fabmetheus_utilities/geometry/solids/__init__.py (100%) rename {SkeinPyPy => Cura}/fabmetheus_utilities/geometry/solids/cube.py (100%) rename {SkeinPyPy => Cura}/fabmetheus_utilities/geometry/solids/cylinder.py (100%) rename {SkeinPyPy => Cura}/fabmetheus_utilities/geometry/solids/difference.py (100%) rename {SkeinPyPy => Cura}/fabmetheus_utilities/geometry/solids/group.py (100%) rename {SkeinPyPy => Cura}/fabmetheus_utilities/geometry/solids/intersection.py (100%) rename {SkeinPyPy => Cura}/fabmetheus_utilities/geometry/solids/sphere.py (100%) rename {SkeinPyPy => Cura}/fabmetheus_utilities/geometry/solids/triangle_mesh.py (100%) rename {SkeinPyPy => Cura}/fabmetheus_utilities/geometry/solids/union.py (100%) rename {SkeinPyPy => Cura}/fabmetheus_utilities/geometry/statements/__init__.py (100%) rename {SkeinPyPy => Cura}/fabmetheus_utilities/geometry/statements/_print.py (100%) rename {SkeinPyPy => Cura}/fabmetheus_utilities/geometry/statements/class.py (100%) rename {SkeinPyPy => Cura}/fabmetheus_utilities/geometry/statements/elif.py (100%) rename {SkeinPyPy => Cura}/fabmetheus_utilities/geometry/statements/else.py (100%) rename {SkeinPyPy => Cura}/fabmetheus_utilities/geometry/statements/for.py (100%) rename {SkeinPyPy => Cura}/fabmetheus_utilities/geometry/statements/function.py (100%) rename {SkeinPyPy => Cura}/fabmetheus_utilities/geometry/statements/if.py (100%) rename {SkeinPyPy => Cura}/fabmetheus_utilities/geometry/statements/return.py (100%) rename {SkeinPyPy => Cura}/fabmetheus_utilities/geometry/statements/statement.py (100%) rename {SkeinPyPy => Cura}/fabmetheus_utilities/geometry/statements/while.py (100%) rename {SkeinPyPy => Cura}/fabmetheus_utilities/geometry_plugins/__init__.py (100%) rename {SkeinPyPy => Cura}/fabmetheus_utilities/geometry_plugins/creation/__init__.py (100%) rename {SkeinPyPy => Cura}/fabmetheus_utilities/geometry_plugins/manipulation_matrix/__init__.py (100%) rename {SkeinPyPy => Cura}/fabmetheus_utilities/geometry_plugins/manipulation_meta/__init__.py (100%) rename {SkeinPyPy => Cura}/fabmetheus_utilities/geometry_plugins/manipulation_paths/__init__.py (100%) rename {SkeinPyPy => Cura}/fabmetheus_utilities/geometry_plugins/manipulation_shapes/__init__.py (100%) rename {SkeinPyPy => Cura}/fabmetheus_utilities/intercircle.py (100%) rename {SkeinPyPy => Cura}/fabmetheus_utilities/settings.py (100%) rename {SkeinPyPy => Cura}/fabmetheus_utilities/svg_reader.py (100%) rename {SkeinPyPy => Cura}/fabmetheus_utilities/svg_writer.py (100%) rename {SkeinPyPy => Cura}/fabmetheus_utilities/templates/canvas_template.svg (100%) rename {SkeinPyPy => Cura}/fabmetheus_utilities/templates/layer_template.svg (100%) rename {SkeinPyPy => Cura}/fabmetheus_utilities/vector3.py (100%) rename {SkeinPyPy => Cura}/fabmetheus_utilities/vector3index.py (100%) rename {SkeinPyPy => Cura}/fabmetheus_utilities/version.txt (100%) rename {SkeinPyPy => Cura}/fabmetheus_utilities/xml_simple_reader.py (100%) rename {SkeinPyPy => Cura}/fabmetheus_utilities/xml_simple_writer.py (100%) rename {SkeinPyPy => Cura}/firmware/default.h (100%) rename {SkeinPyPy => Cura}/firmware/default.hex (100%) rename {SkeinPyPy => Cura}/newui/__init__.py (100%) rename {SkeinPyPy => Cura}/newui/advancedConfig.py (100%) rename {SkeinPyPy => Cura}/newui/alterationPanel.py (100%) rename {SkeinPyPy => Cura}/newui/configBase.py (100%) rename {SkeinPyPy => Cura}/newui/configWizard.py (100%) rename {SkeinPyPy => Cura}/newui/gcodeInterpreter.py (100%) rename {SkeinPyPy => Cura}/newui/machineCom.py (100%) rename {SkeinPyPy => Cura}/newui/mainWindow.py (98%) rename {SkeinPyPy => Cura}/newui/preferencesDialog.py (100%) rename {SkeinPyPy => Cura}/newui/preview3d.py (100%) rename {SkeinPyPy => Cura}/newui/profile.py (100%) rename {SkeinPyPy => Cura}/newui/sliceProgessPanel.py (100%) rename {SkeinPyPy => Cura}/newui/sliceRun.py (100%) rename {SkeinPyPy => Cura}/newui/util3d.py (100%) rename {SkeinPyPy => Cura}/newui/validators.py (100%) rename {SkeinPyPy => Cura}/skeinforge_application/__init__.py (100%) rename {SkeinPyPy => Cura}/skeinforge_application/alterations/end.gcode (100%) rename {SkeinPyPy => Cura}/skeinforge_application/alterations/example_cool_end.gcode (100%) rename {SkeinPyPy => Cura}/skeinforge_application/alterations/example_cool_start.gcode (100%) rename {SkeinPyPy => Cura}/skeinforge_application/alterations/example_end.gcode (100%) rename {SkeinPyPy => Cura}/skeinforge_application/alterations/example_home.gcode (100%) rename {SkeinPyPy => Cura}/skeinforge_application/alterations/example_replace.csv (100%) rename {SkeinPyPy => Cura}/skeinforge_application/alterations/example_replace_M108.csv (100%) rename {SkeinPyPy => Cura}/skeinforge_application/alterations/example_start.gcode (100%) rename {SkeinPyPy => Cura}/skeinforge_application/alterations/example_support_end.gcode (100%) rename {SkeinPyPy => Cura}/skeinforge_application/alterations/example_support_start.gcode (100%) rename {SkeinPyPy => Cura}/skeinforge_application/alterations/start.gcode (100%) rename {SkeinPyPy => Cura}/skeinforge_application/skeinforge_plugins/__init__.py (100%) rename {SkeinPyPy => Cura}/skeinforge_application/skeinforge_plugins/analyze.py (100%) rename {SkeinPyPy => Cura}/skeinforge_application/skeinforge_plugins/analyze_plugins/__init__.py (100%) rename {SkeinPyPy => Cura}/skeinforge_application/skeinforge_plugins/craft.py (100%) rename {SkeinPyPy => Cura}/skeinforge_application/skeinforge_plugins/craft_plugins/__init__.py (100%) rename {SkeinPyPy => Cura}/skeinforge_application/skeinforge_plugins/craft_plugins/alteration.py (100%) rename {SkeinPyPy => Cura}/skeinforge_application/skeinforge_plugins/craft_plugins/bottom.py (100%) rename {SkeinPyPy => Cura}/skeinforge_application/skeinforge_plugins/craft_plugins/carve.py (100%) rename {SkeinPyPy => Cura}/skeinforge_application/skeinforge_plugins/craft_plugins/chamber.py (100%) rename {SkeinPyPy => Cura}/skeinforge_application/skeinforge_plugins/craft_plugins/chop.py (100%) rename {SkeinPyPy => Cura}/skeinforge_application/skeinforge_plugins/craft_plugins/cleave.py (100%) rename {SkeinPyPy => Cura}/skeinforge_application/skeinforge_plugins/craft_plugins/clip.py (100%) rename {SkeinPyPy => Cura}/skeinforge_application/skeinforge_plugins/craft_plugins/coil.py (100%) rename {SkeinPyPy => Cura}/skeinforge_application/skeinforge_plugins/craft_plugins/comb.py (100%) rename {SkeinPyPy => Cura}/skeinforge_application/skeinforge_plugins/craft_plugins/cool.py (100%) rename {SkeinPyPy => Cura}/skeinforge_application/skeinforge_plugins/craft_plugins/dimension.py (100%) rename {SkeinPyPy => Cura}/skeinforge_application/skeinforge_plugins/craft_plugins/drill.py (100%) rename {SkeinPyPy => Cura}/skeinforge_application/skeinforge_plugins/craft_plugins/dwindle.py (100%) rename {SkeinPyPy => Cura}/skeinforge_application/skeinforge_plugins/craft_plugins/export.py (100%) rename {SkeinPyPy => Cura}/skeinforge_application/skeinforge_plugins/craft_plugins/export_plugins/__init__.py (100%) rename {SkeinPyPy => Cura}/skeinforge_application/skeinforge_plugins/craft_plugins/export_plugins/binary_16_byte.py (100%) rename {SkeinPyPy => Cura}/skeinforge_application/skeinforge_plugins/craft_plugins/export_plugins/gcode_step.py (100%) rename {SkeinPyPy => Cura}/skeinforge_application/skeinforge_plugins/craft_plugins/export_plugins/gcode_time_segment.py (100%) rename {SkeinPyPy => Cura}/skeinforge_application/skeinforge_plugins/craft_plugins/export_plugins/static_plugins/__init__.py (100%) rename {SkeinPyPy => Cura}/skeinforge_application/skeinforge_plugins/craft_plugins/export_plugins/static_plugins/gcode_small.py (100%) rename {SkeinPyPy => Cura}/skeinforge_application/skeinforge_plugins/craft_plugins/feed.py (100%) rename {SkeinPyPy => Cura}/skeinforge_application/skeinforge_plugins/craft_plugins/fill.py (100%) rename {SkeinPyPy => Cura}/skeinforge_application/skeinforge_plugins/craft_plugins/fillet.py (100%) rename {SkeinPyPy => Cura}/skeinforge_application/skeinforge_plugins/craft_plugins/flow.py (100%) rename {SkeinPyPy => Cura}/skeinforge_application/skeinforge_plugins/craft_plugins/home.py (100%) rename {SkeinPyPy => Cura}/skeinforge_application/skeinforge_plugins/craft_plugins/hop.py (100%) rename {SkeinPyPy => Cura}/skeinforge_application/skeinforge_plugins/craft_plugins/inset.py (100%) rename {SkeinPyPy => Cura}/skeinforge_application/skeinforge_plugins/craft_plugins/jitter.py (100%) rename {SkeinPyPy => Cura}/skeinforge_application/skeinforge_plugins/craft_plugins/joris.py (100%) rename {SkeinPyPy => Cura}/skeinforge_application/skeinforge_plugins/craft_plugins/lash.py (100%) rename {SkeinPyPy => Cura}/skeinforge_application/skeinforge_plugins/craft_plugins/lift.py (100%) rename {SkeinPyPy => Cura}/skeinforge_application/skeinforge_plugins/craft_plugins/limit.py (100%) rename {SkeinPyPy => Cura}/skeinforge_application/skeinforge_plugins/craft_plugins/mill.py (100%) rename {SkeinPyPy => Cura}/skeinforge_application/skeinforge_plugins/craft_plugins/multiply.py (100%) rename {SkeinPyPy => Cura}/skeinforge_application/skeinforge_plugins/craft_plugins/oozebane.py (100%) rename {SkeinPyPy => Cura}/skeinforge_application/skeinforge_plugins/craft_plugins/outset.py (100%) rename {SkeinPyPy => Cura}/skeinforge_application/skeinforge_plugins/craft_plugins/preface.py (100%) rename {SkeinPyPy => Cura}/skeinforge_application/skeinforge_plugins/craft_plugins/raft.py (100%) rename {SkeinPyPy => Cura}/skeinforge_application/skeinforge_plugins/craft_plugins/scale.py (100%) rename {SkeinPyPy => Cura}/skeinforge_application/skeinforge_plugins/craft_plugins/skin.py (100%) rename {SkeinPyPy => Cura}/skeinforge_application/skeinforge_plugins/craft_plugins/skirt.py (100%) rename {SkeinPyPy => Cura}/skeinforge_application/skeinforge_plugins/craft_plugins/smooth.py (100%) rename {SkeinPyPy => Cura}/skeinforge_application/skeinforge_plugins/craft_plugins/speed.py (100%) rename {SkeinPyPy => Cura}/skeinforge_application/skeinforge_plugins/craft_plugins/splodge.py (100%) rename {SkeinPyPy => Cura}/skeinforge_application/skeinforge_plugins/craft_plugins/stretch.py (100%) rename {SkeinPyPy => Cura}/skeinforge_application/skeinforge_plugins/craft_plugins/temperature.py (100%) rename {SkeinPyPy => Cura}/skeinforge_application/skeinforge_plugins/craft_plugins/tower.py (100%) rename {SkeinPyPy => Cura}/skeinforge_application/skeinforge_plugins/craft_plugins/unpause.py (100%) rename {SkeinPyPy => Cura}/skeinforge_application/skeinforge_plugins/craft_plugins/whittle.py (100%) rename {SkeinPyPy => Cura}/skeinforge_application/skeinforge_plugins/craft_plugins/widen.py (100%) rename {SkeinPyPy => Cura}/skeinforge_application/skeinforge_plugins/craft_plugins/wipe.py (100%) rename {SkeinPyPy => Cura}/skeinforge_application/skeinforge_plugins/help.py (100%) rename {SkeinPyPy => Cura}/skeinforge_application/skeinforge_plugins/meta.py (100%) rename {SkeinPyPy => Cura}/skeinforge_application/skeinforge_plugins/meta_plugins/__init__.py (100%) rename {SkeinPyPy => Cura}/skeinforge_application/skeinforge_plugins/meta_plugins/description.py (100%) rename {SkeinPyPy => Cura}/skeinforge_application/skeinforge_plugins/meta_plugins/polyfile.py (100%) rename {SkeinPyPy => Cura}/skeinforge_application/skeinforge_plugins/profile.py (100%) rename {SkeinPyPy => Cura}/skeinforge_application/skeinforge_plugins/profile_plugins/__init__.py (100%) rename {SkeinPyPy => Cura}/skeinforge_application/skeinforge_plugins/profile_plugins/cutting.py (100%) rename {SkeinPyPy => Cura}/skeinforge_application/skeinforge_plugins/profile_plugins/extrusion.py (100%) rename {SkeinPyPy => Cura}/skeinforge_application/skeinforge_plugins/profile_plugins/milling.py (100%) rename {SkeinPyPy => Cura}/skeinforge_application/skeinforge_plugins/profile_plugins/winding.py (100%) rename {SkeinPyPy => Cura}/skeinforge_application/skeinforge_utilities/__init__.py (100%) rename {SkeinPyPy => Cura}/skeinforge_application/skeinforge_utilities/skeinforge_analyze.py (100%) rename {SkeinPyPy => Cura}/skeinforge_application/skeinforge_utilities/skeinforge_craft.py (100%) rename {SkeinPyPy => Cura}/skeinforge_application/skeinforge_utilities/skeinforge_help.py (100%) rename {SkeinPyPy => Cura}/skeinforge_application/skeinforge_utilities/skeinforge_meta.py (100%) rename {SkeinPyPy => Cura}/skeinforge_application/skeinforge_utilities/skeinforge_polyfile.py (100%) rename {SkeinPyPy => Cura}/skeinforge_application/skeinforge_utilities/skeinforge_profile.py (100%) diff --git a/.gitignore b/.gitignore index e872f6a..6c1debd 100644 --- a/.gitignore +++ b/.gitignore @@ -3,7 +3,7 @@ *.pyc *.zip *.exe -osx64-SkeinPyPy-NewUI* -win32-SkeinPyPy-NewUI* -linux-SkeinPyPy-NewUI* +osx64-Cura-NewUI* +win32-Cura-NewUI* +linux-Cura-NewUI* Printrun diff --git a/SkeinPyPy/SkeinforgeVersion b/Cura/SkeinforgeVersion similarity index 100% rename from SkeinPyPy/SkeinforgeVersion rename to Cura/SkeinforgeVersion diff --git a/SkeinPyPy/__init__.py b/Cura/__init__.py similarity index 100% rename from SkeinPyPy/__init__.py rename to Cura/__init__.py diff --git a/SkeinPyPy/avr_isp/__init__.py b/Cura/avr_isp/__init__.py similarity index 100% rename from SkeinPyPy/avr_isp/__init__.py rename to Cura/avr_isp/__init__.py diff --git a/SkeinPyPy/avr_isp/chipDB.py b/Cura/avr_isp/chipDB.py similarity index 100% rename from SkeinPyPy/avr_isp/chipDB.py rename to Cura/avr_isp/chipDB.py diff --git a/SkeinPyPy/avr_isp/intelHex.py b/Cura/avr_isp/intelHex.py similarity index 100% rename from SkeinPyPy/avr_isp/intelHex.py rename to Cura/avr_isp/intelHex.py diff --git a/SkeinPyPy/avr_isp/ispBase.py b/Cura/avr_isp/ispBase.py similarity index 100% rename from SkeinPyPy/avr_isp/ispBase.py rename to Cura/avr_isp/ispBase.py diff --git a/SkeinPyPy/avr_isp/stk500v2.py b/Cura/avr_isp/stk500v2.py similarity index 100% rename from SkeinPyPy/avr_isp/stk500v2.py rename to Cura/avr_isp/stk500v2.py diff --git a/SkeinPyPy/skeinpypy.py b/Cura/cura.py similarity index 100% rename from SkeinPyPy/skeinpypy.py rename to Cura/cura.py diff --git a/SkeinPyPy/fabmetheus_utilities/__init__.py b/Cura/fabmetheus_utilities/__init__.py similarity index 100% rename from SkeinPyPy/fabmetheus_utilities/__init__.py rename to Cura/fabmetheus_utilities/__init__.py diff --git a/SkeinPyPy/fabmetheus_utilities/archive.py b/Cura/fabmetheus_utilities/archive.py similarity index 100% rename from SkeinPyPy/fabmetheus_utilities/archive.py rename to Cura/fabmetheus_utilities/archive.py diff --git a/SkeinPyPy/fabmetheus_utilities/euclidean.py b/Cura/fabmetheus_utilities/euclidean.py similarity index 100% rename from SkeinPyPy/fabmetheus_utilities/euclidean.py rename to Cura/fabmetheus_utilities/euclidean.py diff --git a/SkeinPyPy/fabmetheus_utilities/fabmetheus_tools/__init__.py b/Cura/fabmetheus_utilities/fabmetheus_tools/__init__.py similarity index 100% rename from SkeinPyPy/fabmetheus_utilities/fabmetheus_tools/__init__.py rename to Cura/fabmetheus_utilities/fabmetheus_tools/__init__.py diff --git a/SkeinPyPy/fabmetheus_utilities/fabmetheus_tools/alphabetize.py b/Cura/fabmetheus_utilities/fabmetheus_tools/alphabetize.py similarity index 100% rename from SkeinPyPy/fabmetheus_utilities/fabmetheus_tools/alphabetize.py rename to Cura/fabmetheus_utilities/fabmetheus_tools/alphabetize.py diff --git a/SkeinPyPy/fabmetheus_utilities/fabmetheus_tools/fabmetheus_interpret.py b/Cura/fabmetheus_utilities/fabmetheus_tools/fabmetheus_interpret.py similarity index 100% rename from SkeinPyPy/fabmetheus_utilities/fabmetheus_tools/fabmetheus_interpret.py rename to Cura/fabmetheus_utilities/fabmetheus_tools/fabmetheus_interpret.py diff --git a/SkeinPyPy/fabmetheus_utilities/fabmetheus_tools/interpret_plugins/__init__.py b/Cura/fabmetheus_utilities/fabmetheus_tools/interpret_plugins/__init__.py similarity index 100% rename from SkeinPyPy/fabmetheus_utilities/fabmetheus_tools/interpret_plugins/__init__.py rename to Cura/fabmetheus_utilities/fabmetheus_tools/interpret_plugins/__init__.py diff --git a/SkeinPyPy/fabmetheus_utilities/fabmetheus_tools/interpret_plugins/csv.py b/Cura/fabmetheus_utilities/fabmetheus_tools/interpret_plugins/csv.py similarity index 100% rename from SkeinPyPy/fabmetheus_utilities/fabmetheus_tools/interpret_plugins/csv.py rename to Cura/fabmetheus_utilities/fabmetheus_tools/interpret_plugins/csv.py diff --git a/SkeinPyPy/fabmetheus_utilities/fabmetheus_tools/interpret_plugins/gts.py b/Cura/fabmetheus_utilities/fabmetheus_tools/interpret_plugins/gts.py similarity index 100% rename from SkeinPyPy/fabmetheus_utilities/fabmetheus_tools/interpret_plugins/gts.py rename to Cura/fabmetheus_utilities/fabmetheus_tools/interpret_plugins/gts.py diff --git a/SkeinPyPy/fabmetheus_utilities/fabmetheus_tools/interpret_plugins/obj.py b/Cura/fabmetheus_utilities/fabmetheus_tools/interpret_plugins/obj.py similarity index 100% rename from SkeinPyPy/fabmetheus_utilities/fabmetheus_tools/interpret_plugins/obj.py rename to Cura/fabmetheus_utilities/fabmetheus_tools/interpret_plugins/obj.py diff --git a/SkeinPyPy/fabmetheus_utilities/fabmetheus_tools/interpret_plugins/slc.py b/Cura/fabmetheus_utilities/fabmetheus_tools/interpret_plugins/slc.py similarity index 100% rename from SkeinPyPy/fabmetheus_utilities/fabmetheus_tools/interpret_plugins/slc.py rename to Cura/fabmetheus_utilities/fabmetheus_tools/interpret_plugins/slc.py diff --git a/SkeinPyPy/fabmetheus_utilities/fabmetheus_tools/interpret_plugins/stl.py b/Cura/fabmetheus_utilities/fabmetheus_tools/interpret_plugins/stl.py similarity index 100% rename from SkeinPyPy/fabmetheus_utilities/fabmetheus_tools/interpret_plugins/stl.py rename to Cura/fabmetheus_utilities/fabmetheus_tools/interpret_plugins/stl.py diff --git a/SkeinPyPy/fabmetheus_utilities/fabmetheus_tools/interpret_plugins/svg.py b/Cura/fabmetheus_utilities/fabmetheus_tools/interpret_plugins/svg.py similarity index 100% rename from SkeinPyPy/fabmetheus_utilities/fabmetheus_tools/interpret_plugins/svg.py rename to Cura/fabmetheus_utilities/fabmetheus_tools/interpret_plugins/svg.py diff --git a/SkeinPyPy/fabmetheus_utilities/fabmetheus_tools/prepare.py b/Cura/fabmetheus_utilities/fabmetheus_tools/prepare.py similarity index 100% rename from SkeinPyPy/fabmetheus_utilities/fabmetheus_tools/prepare.py rename to Cura/fabmetheus_utilities/fabmetheus_tools/prepare.py diff --git a/SkeinPyPy/fabmetheus_utilities/fabmetheus_tools/wikifier.py b/Cura/fabmetheus_utilities/fabmetheus_tools/wikifier.py similarity index 100% rename from SkeinPyPy/fabmetheus_utilities/fabmetheus_tools/wikifier.py rename to Cura/fabmetheus_utilities/fabmetheus_tools/wikifier.py diff --git a/SkeinPyPy/fabmetheus_utilities/gcodec.py b/Cura/fabmetheus_utilities/gcodec.py similarity index 100% rename from SkeinPyPy/fabmetheus_utilities/gcodec.py rename to Cura/fabmetheus_utilities/gcodec.py diff --git a/SkeinPyPy/fabmetheus_utilities/geometry/__init__.py b/Cura/fabmetheus_utilities/geometry/__init__.py similarity index 100% rename from SkeinPyPy/fabmetheus_utilities/geometry/__init__.py rename to Cura/fabmetheus_utilities/geometry/__init__.py diff --git a/SkeinPyPy/fabmetheus_utilities/geometry/creation/__init__.py b/Cura/fabmetheus_utilities/geometry/creation/__init__.py similarity index 100% rename from SkeinPyPy/fabmetheus_utilities/geometry/creation/__init__.py rename to Cura/fabmetheus_utilities/geometry/creation/__init__.py diff --git a/SkeinPyPy/fabmetheus_utilities/geometry/creation/_drill.py b/Cura/fabmetheus_utilities/geometry/creation/_drill.py similarity index 100% rename from SkeinPyPy/fabmetheus_utilities/geometry/creation/_drill.py rename to Cura/fabmetheus_utilities/geometry/creation/_drill.py diff --git a/SkeinPyPy/fabmetheus_utilities/geometry/creation/_svg.py b/Cura/fabmetheus_utilities/geometry/creation/_svg.py similarity index 100% rename from SkeinPyPy/fabmetheus_utilities/geometry/creation/_svg.py rename to Cura/fabmetheus_utilities/geometry/creation/_svg.py diff --git a/SkeinPyPy/fabmetheus_utilities/geometry/creation/circle.py b/Cura/fabmetheus_utilities/geometry/creation/circle.py similarity index 100% rename from SkeinPyPy/fabmetheus_utilities/geometry/creation/circle.py rename to Cura/fabmetheus_utilities/geometry/creation/circle.py diff --git a/SkeinPyPy/fabmetheus_utilities/geometry/creation/concatenate.py b/Cura/fabmetheus_utilities/geometry/creation/concatenate.py similarity index 100% rename from SkeinPyPy/fabmetheus_utilities/geometry/creation/concatenate.py rename to Cura/fabmetheus_utilities/geometry/creation/concatenate.py diff --git a/SkeinPyPy/fabmetheus_utilities/geometry/creation/extrude.py b/Cura/fabmetheus_utilities/geometry/creation/extrude.py similarity index 100% rename from SkeinPyPy/fabmetheus_utilities/geometry/creation/extrude.py rename to Cura/fabmetheus_utilities/geometry/creation/extrude.py diff --git a/SkeinPyPy/fabmetheus_utilities/geometry/creation/gear.py b/Cura/fabmetheus_utilities/geometry/creation/gear.py similarity index 100% rename from SkeinPyPy/fabmetheus_utilities/geometry/creation/gear.py rename to Cura/fabmetheus_utilities/geometry/creation/gear.py diff --git a/SkeinPyPy/fabmetheus_utilities/geometry/creation/grid.py b/Cura/fabmetheus_utilities/geometry/creation/grid.py similarity index 100% rename from SkeinPyPy/fabmetheus_utilities/geometry/creation/grid.py rename to Cura/fabmetheus_utilities/geometry/creation/grid.py diff --git a/SkeinPyPy/fabmetheus_utilities/geometry/creation/heightmap.py b/Cura/fabmetheus_utilities/geometry/creation/heightmap.py similarity index 100% rename from SkeinPyPy/fabmetheus_utilities/geometry/creation/heightmap.py rename to Cura/fabmetheus_utilities/geometry/creation/heightmap.py diff --git a/SkeinPyPy/fabmetheus_utilities/geometry/creation/lathe.py b/Cura/fabmetheus_utilities/geometry/creation/lathe.py similarity index 100% rename from SkeinPyPy/fabmetheus_utilities/geometry/creation/lathe.py rename to Cura/fabmetheus_utilities/geometry/creation/lathe.py diff --git a/SkeinPyPy/fabmetheus_utilities/geometry/creation/line.py b/Cura/fabmetheus_utilities/geometry/creation/line.py similarity index 100% rename from SkeinPyPy/fabmetheus_utilities/geometry/creation/line.py rename to Cura/fabmetheus_utilities/geometry/creation/line.py diff --git a/SkeinPyPy/fabmetheus_utilities/geometry/creation/linear_bearing_cage.py b/Cura/fabmetheus_utilities/geometry/creation/linear_bearing_cage.py similarity index 100% rename from SkeinPyPy/fabmetheus_utilities/geometry/creation/linear_bearing_cage.py rename to Cura/fabmetheus_utilities/geometry/creation/linear_bearing_cage.py diff --git a/SkeinPyPy/fabmetheus_utilities/geometry/creation/lineation.py b/Cura/fabmetheus_utilities/geometry/creation/lineation.py similarity index 100% rename from SkeinPyPy/fabmetheus_utilities/geometry/creation/lineation.py rename to Cura/fabmetheus_utilities/geometry/creation/lineation.py diff --git a/SkeinPyPy/fabmetheus_utilities/geometry/creation/mechaslab.py b/Cura/fabmetheus_utilities/geometry/creation/mechaslab.py similarity index 100% rename from SkeinPyPy/fabmetheus_utilities/geometry/creation/mechaslab.py rename to Cura/fabmetheus_utilities/geometry/creation/mechaslab.py diff --git a/SkeinPyPy/fabmetheus_utilities/geometry/creation/peg.py b/Cura/fabmetheus_utilities/geometry/creation/peg.py similarity index 100% rename from SkeinPyPy/fabmetheus_utilities/geometry/creation/peg.py rename to Cura/fabmetheus_utilities/geometry/creation/peg.py diff --git a/SkeinPyPy/fabmetheus_utilities/geometry/creation/polygon.py b/Cura/fabmetheus_utilities/geometry/creation/polygon.py similarity index 100% rename from SkeinPyPy/fabmetheus_utilities/geometry/creation/polygon.py rename to Cura/fabmetheus_utilities/geometry/creation/polygon.py diff --git a/SkeinPyPy/fabmetheus_utilities/geometry/creation/shaft.py b/Cura/fabmetheus_utilities/geometry/creation/shaft.py similarity index 100% rename from SkeinPyPy/fabmetheus_utilities/geometry/creation/shaft.py rename to Cura/fabmetheus_utilities/geometry/creation/shaft.py diff --git a/SkeinPyPy/fabmetheus_utilities/geometry/creation/solid.py b/Cura/fabmetheus_utilities/geometry/creation/solid.py similarity index 100% rename from SkeinPyPy/fabmetheus_utilities/geometry/creation/solid.py rename to Cura/fabmetheus_utilities/geometry/creation/solid.py diff --git a/SkeinPyPy/fabmetheus_utilities/geometry/creation/sponge_slice.py b/Cura/fabmetheus_utilities/geometry/creation/sponge_slice.py similarity index 100% rename from SkeinPyPy/fabmetheus_utilities/geometry/creation/sponge_slice.py rename to Cura/fabmetheus_utilities/geometry/creation/sponge_slice.py diff --git a/SkeinPyPy/fabmetheus_utilities/geometry/creation/square.py b/Cura/fabmetheus_utilities/geometry/creation/square.py similarity index 100% rename from SkeinPyPy/fabmetheus_utilities/geometry/creation/square.py rename to Cura/fabmetheus_utilities/geometry/creation/square.py diff --git a/SkeinPyPy/fabmetheus_utilities/geometry/creation/teardrop.py b/Cura/fabmetheus_utilities/geometry/creation/teardrop.py similarity index 100% rename from SkeinPyPy/fabmetheus_utilities/geometry/creation/teardrop.py rename to Cura/fabmetheus_utilities/geometry/creation/teardrop.py diff --git a/SkeinPyPy/fabmetheus_utilities/geometry/creation/text.py b/Cura/fabmetheus_utilities/geometry/creation/text.py similarity index 100% rename from SkeinPyPy/fabmetheus_utilities/geometry/creation/text.py rename to Cura/fabmetheus_utilities/geometry/creation/text.py diff --git a/SkeinPyPy/fabmetheus_utilities/geometry/geometry_tools/__init__.py b/Cura/fabmetheus_utilities/geometry/geometry_tools/__init__.py similarity index 100% rename from SkeinPyPy/fabmetheus_utilities/geometry/geometry_tools/__init__.py rename to Cura/fabmetheus_utilities/geometry/geometry_tools/__init__.py diff --git a/SkeinPyPy/fabmetheus_utilities/geometry/geometry_tools/dictionary.py b/Cura/fabmetheus_utilities/geometry/geometry_tools/dictionary.py similarity index 100% rename from SkeinPyPy/fabmetheus_utilities/geometry/geometry_tools/dictionary.py rename to Cura/fabmetheus_utilities/geometry/geometry_tools/dictionary.py diff --git a/SkeinPyPy/fabmetheus_utilities/geometry/geometry_tools/face.py b/Cura/fabmetheus_utilities/geometry/geometry_tools/face.py similarity index 100% rename from SkeinPyPy/fabmetheus_utilities/geometry/geometry_tools/face.py rename to Cura/fabmetheus_utilities/geometry/geometry_tools/face.py diff --git a/SkeinPyPy/fabmetheus_utilities/geometry/geometry_tools/path.py b/Cura/fabmetheus_utilities/geometry/geometry_tools/path.py similarity index 100% rename from SkeinPyPy/fabmetheus_utilities/geometry/geometry_tools/path.py rename to Cura/fabmetheus_utilities/geometry/geometry_tools/path.py diff --git a/SkeinPyPy/fabmetheus_utilities/geometry/geometry_tools/path_elements/__init__.py b/Cura/fabmetheus_utilities/geometry/geometry_tools/path_elements/__init__.py similarity index 100% rename from SkeinPyPy/fabmetheus_utilities/geometry/geometry_tools/path_elements/__init__.py rename to Cura/fabmetheus_utilities/geometry/geometry_tools/path_elements/__init__.py diff --git a/SkeinPyPy/fabmetheus_utilities/geometry/geometry_tools/path_elements/arc.py b/Cura/fabmetheus_utilities/geometry/geometry_tools/path_elements/arc.py similarity index 100% rename from SkeinPyPy/fabmetheus_utilities/geometry/geometry_tools/path_elements/arc.py rename to Cura/fabmetheus_utilities/geometry/geometry_tools/path_elements/arc.py diff --git a/SkeinPyPy/fabmetheus_utilities/geometry/geometry_tools/path_elements/cubic.py b/Cura/fabmetheus_utilities/geometry/geometry_tools/path_elements/cubic.py similarity index 100% rename from SkeinPyPy/fabmetheus_utilities/geometry/geometry_tools/path_elements/cubic.py rename to Cura/fabmetheus_utilities/geometry/geometry_tools/path_elements/cubic.py diff --git a/SkeinPyPy/fabmetheus_utilities/geometry/geometry_tools/path_elements/quadratic.py b/Cura/fabmetheus_utilities/geometry/geometry_tools/path_elements/quadratic.py similarity index 100% rename from SkeinPyPy/fabmetheus_utilities/geometry/geometry_tools/path_elements/quadratic.py rename to Cura/fabmetheus_utilities/geometry/geometry_tools/path_elements/quadratic.py diff --git a/SkeinPyPy/fabmetheus_utilities/geometry/geometry_tools/vertex.py b/Cura/fabmetheus_utilities/geometry/geometry_tools/vertex.py similarity index 100% rename from SkeinPyPy/fabmetheus_utilities/geometry/geometry_tools/vertex.py rename to Cura/fabmetheus_utilities/geometry/geometry_tools/vertex.py diff --git a/SkeinPyPy/fabmetheus_utilities/geometry/geometry_utilities/__init__.py b/Cura/fabmetheus_utilities/geometry/geometry_utilities/__init__.py similarity index 100% rename from SkeinPyPy/fabmetheus_utilities/geometry/geometry_utilities/__init__.py rename to Cura/fabmetheus_utilities/geometry/geometry_utilities/__init__.py diff --git a/SkeinPyPy/fabmetheus_utilities/geometry/geometry_utilities/boolean_geometry.py b/Cura/fabmetheus_utilities/geometry/geometry_utilities/boolean_geometry.py similarity index 100% rename from SkeinPyPy/fabmetheus_utilities/geometry/geometry_utilities/boolean_geometry.py rename to Cura/fabmetheus_utilities/geometry/geometry_utilities/boolean_geometry.py diff --git a/SkeinPyPy/fabmetheus_utilities/geometry/geometry_utilities/boolean_solid.py b/Cura/fabmetheus_utilities/geometry/geometry_utilities/boolean_solid.py similarity index 100% rename from SkeinPyPy/fabmetheus_utilities/geometry/geometry_utilities/boolean_solid.py rename to Cura/fabmetheus_utilities/geometry/geometry_utilities/boolean_solid.py diff --git a/SkeinPyPy/fabmetheus_utilities/geometry/geometry_utilities/evaluate.py b/Cura/fabmetheus_utilities/geometry/geometry_utilities/evaluate.py similarity index 100% rename from SkeinPyPy/fabmetheus_utilities/geometry/geometry_utilities/evaluate.py rename to Cura/fabmetheus_utilities/geometry/geometry_utilities/evaluate.py diff --git a/SkeinPyPy/fabmetheus_utilities/geometry/geometry_utilities/evaluate_elements/__init__.py b/Cura/fabmetheus_utilities/geometry/geometry_utilities/evaluate_elements/__init__.py similarity index 100% rename from SkeinPyPy/fabmetheus_utilities/geometry/geometry_utilities/evaluate_elements/__init__.py rename to Cura/fabmetheus_utilities/geometry/geometry_utilities/evaluate_elements/__init__.py diff --git a/SkeinPyPy/fabmetheus_utilities/geometry/geometry_utilities/evaluate_elements/creation.py b/Cura/fabmetheus_utilities/geometry/geometry_utilities/evaluate_elements/creation.py similarity index 100% rename from SkeinPyPy/fabmetheus_utilities/geometry/geometry_utilities/evaluate_elements/creation.py rename to Cura/fabmetheus_utilities/geometry/geometry_utilities/evaluate_elements/creation.py diff --git a/SkeinPyPy/fabmetheus_utilities/geometry/geometry_utilities/evaluate_elements/document.py b/Cura/fabmetheus_utilities/geometry/geometry_utilities/evaluate_elements/document.py similarity index 100% rename from SkeinPyPy/fabmetheus_utilities/geometry/geometry_utilities/evaluate_elements/document.py rename to Cura/fabmetheus_utilities/geometry/geometry_utilities/evaluate_elements/document.py diff --git a/SkeinPyPy/fabmetheus_utilities/geometry/geometry_utilities/evaluate_elements/setting.py b/Cura/fabmetheus_utilities/geometry/geometry_utilities/evaluate_elements/setting.py similarity index 100% rename from SkeinPyPy/fabmetheus_utilities/geometry/geometry_utilities/evaluate_elements/setting.py rename to Cura/fabmetheus_utilities/geometry/geometry_utilities/evaluate_elements/setting.py diff --git a/SkeinPyPy/fabmetheus_utilities/geometry/geometry_utilities/evaluate_enumerables/__init__.py b/Cura/fabmetheus_utilities/geometry/geometry_utilities/evaluate_enumerables/__init__.py similarity index 100% rename from SkeinPyPy/fabmetheus_utilities/geometry/geometry_utilities/evaluate_enumerables/__init__.py rename to Cura/fabmetheus_utilities/geometry/geometry_utilities/evaluate_enumerables/__init__.py diff --git a/SkeinPyPy/fabmetheus_utilities/geometry/geometry_utilities/evaluate_enumerables/dictionary_attribute.py b/Cura/fabmetheus_utilities/geometry/geometry_utilities/evaluate_enumerables/dictionary_attribute.py similarity index 100% rename from SkeinPyPy/fabmetheus_utilities/geometry/geometry_utilities/evaluate_enumerables/dictionary_attribute.py rename to Cura/fabmetheus_utilities/geometry/geometry_utilities/evaluate_enumerables/dictionary_attribute.py diff --git a/SkeinPyPy/fabmetheus_utilities/geometry/geometry_utilities/evaluate_enumerables/list_attribute.py b/Cura/fabmetheus_utilities/geometry/geometry_utilities/evaluate_enumerables/list_attribute.py similarity index 100% rename from SkeinPyPy/fabmetheus_utilities/geometry/geometry_utilities/evaluate_enumerables/list_attribute.py rename to Cura/fabmetheus_utilities/geometry/geometry_utilities/evaluate_enumerables/list_attribute.py diff --git a/SkeinPyPy/fabmetheus_utilities/geometry/geometry_utilities/evaluate_enumerables/string_attribute.py b/Cura/fabmetheus_utilities/geometry/geometry_utilities/evaluate_enumerables/string_attribute.py similarity index 100% rename from SkeinPyPy/fabmetheus_utilities/geometry/geometry_utilities/evaluate_enumerables/string_attribute.py rename to Cura/fabmetheus_utilities/geometry/geometry_utilities/evaluate_enumerables/string_attribute.py diff --git a/SkeinPyPy/fabmetheus_utilities/geometry/geometry_utilities/evaluate_fundamentals/__init__.py b/Cura/fabmetheus_utilities/geometry/geometry_utilities/evaluate_fundamentals/__init__.py similarity index 100% rename from SkeinPyPy/fabmetheus_utilities/geometry/geometry_utilities/evaluate_fundamentals/__init__.py rename to Cura/fabmetheus_utilities/geometry/geometry_utilities/evaluate_fundamentals/__init__.py diff --git a/SkeinPyPy/fabmetheus_utilities/geometry/geometry_utilities/evaluate_fundamentals/_math.py b/Cura/fabmetheus_utilities/geometry/geometry_utilities/evaluate_fundamentals/_math.py similarity index 100% rename from SkeinPyPy/fabmetheus_utilities/geometry/geometry_utilities/evaluate_fundamentals/_math.py rename to Cura/fabmetheus_utilities/geometry/geometry_utilities/evaluate_fundamentals/_math.py diff --git a/SkeinPyPy/fabmetheus_utilities/geometry/geometry_utilities/evaluate_fundamentals/euclid.py b/Cura/fabmetheus_utilities/geometry/geometry_utilities/evaluate_fundamentals/euclid.py similarity index 100% rename from SkeinPyPy/fabmetheus_utilities/geometry/geometry_utilities/evaluate_fundamentals/euclid.py rename to Cura/fabmetheus_utilities/geometry/geometry_utilities/evaluate_fundamentals/euclid.py diff --git a/SkeinPyPy/fabmetheus_utilities/geometry/geometry_utilities/evaluate_fundamentals/measure.py b/Cura/fabmetheus_utilities/geometry/geometry_utilities/evaluate_fundamentals/measure.py similarity index 100% rename from SkeinPyPy/fabmetheus_utilities/geometry/geometry_utilities/evaluate_fundamentals/measure.py rename to Cura/fabmetheus_utilities/geometry/geometry_utilities/evaluate_fundamentals/measure.py diff --git a/SkeinPyPy/fabmetheus_utilities/geometry/geometry_utilities/evaluate_fundamentals/print.py b/Cura/fabmetheus_utilities/geometry/geometry_utilities/evaluate_fundamentals/print.py similarity index 100% rename from SkeinPyPy/fabmetheus_utilities/geometry/geometry_utilities/evaluate_fundamentals/print.py rename to Cura/fabmetheus_utilities/geometry/geometry_utilities/evaluate_fundamentals/print.py diff --git a/SkeinPyPy/fabmetheus_utilities/geometry/geometry_utilities/example.csv b/Cura/fabmetheus_utilities/geometry/geometry_utilities/example.csv similarity index 100% rename from SkeinPyPy/fabmetheus_utilities/geometry/geometry_utilities/example.csv rename to Cura/fabmetheus_utilities/geometry/geometry_utilities/example.csv diff --git a/SkeinPyPy/fabmetheus_utilities/geometry/geometry_utilities/matrix.py b/Cura/fabmetheus_utilities/geometry/geometry_utilities/matrix.py similarity index 100% rename from SkeinPyPy/fabmetheus_utilities/geometry/geometry_utilities/matrix.py rename to Cura/fabmetheus_utilities/geometry/geometry_utilities/matrix.py diff --git a/SkeinPyPy/fabmetheus_utilities/geometry/manipulation_matrix/__init__.py b/Cura/fabmetheus_utilities/geometry/manipulation_matrix/__init__.py similarity index 100% rename from SkeinPyPy/fabmetheus_utilities/geometry/manipulation_matrix/__init__.py rename to Cura/fabmetheus_utilities/geometry/manipulation_matrix/__init__.py diff --git a/SkeinPyPy/fabmetheus_utilities/geometry/manipulation_matrix/_scale.py b/Cura/fabmetheus_utilities/geometry/manipulation_matrix/_scale.py similarity index 100% rename from SkeinPyPy/fabmetheus_utilities/geometry/manipulation_matrix/_scale.py rename to Cura/fabmetheus_utilities/geometry/manipulation_matrix/_scale.py diff --git a/SkeinPyPy/fabmetheus_utilities/geometry/manipulation_matrix/rotate.py b/Cura/fabmetheus_utilities/geometry/manipulation_matrix/rotate.py similarity index 100% rename from SkeinPyPy/fabmetheus_utilities/geometry/manipulation_matrix/rotate.py rename to Cura/fabmetheus_utilities/geometry/manipulation_matrix/rotate.py diff --git a/SkeinPyPy/fabmetheus_utilities/geometry/manipulation_matrix/transform.py b/Cura/fabmetheus_utilities/geometry/manipulation_matrix/transform.py similarity index 100% rename from SkeinPyPy/fabmetheus_utilities/geometry/manipulation_matrix/transform.py rename to Cura/fabmetheus_utilities/geometry/manipulation_matrix/transform.py diff --git a/SkeinPyPy/fabmetheus_utilities/geometry/manipulation_matrix/translate.py b/Cura/fabmetheus_utilities/geometry/manipulation_matrix/translate.py similarity index 100% rename from SkeinPyPy/fabmetheus_utilities/geometry/manipulation_matrix/translate.py rename to Cura/fabmetheus_utilities/geometry/manipulation_matrix/translate.py diff --git a/SkeinPyPy/fabmetheus_utilities/geometry/manipulation_meta/__init__.py b/Cura/fabmetheus_utilities/geometry/manipulation_meta/__init__.py similarity index 100% rename from SkeinPyPy/fabmetheus_utilities/geometry/manipulation_meta/__init__.py rename to Cura/fabmetheus_utilities/geometry/manipulation_meta/__init__.py diff --git a/SkeinPyPy/fabmetheus_utilities/geometry/manipulation_meta/_array.py b/Cura/fabmetheus_utilities/geometry/manipulation_meta/_array.py similarity index 100% rename from SkeinPyPy/fabmetheus_utilities/geometry/manipulation_meta/_array.py rename to Cura/fabmetheus_utilities/geometry/manipulation_meta/_array.py diff --git a/SkeinPyPy/fabmetheus_utilities/geometry/manipulation_meta/_carve.py b/Cura/fabmetheus_utilities/geometry/manipulation_meta/_carve.py similarity index 100% rename from SkeinPyPy/fabmetheus_utilities/geometry/manipulation_meta/_carve.py rename to Cura/fabmetheus_utilities/geometry/manipulation_meta/_carve.py diff --git a/SkeinPyPy/fabmetheus_utilities/geometry/manipulation_meta/_copy.py b/Cura/fabmetheus_utilities/geometry/manipulation_meta/_copy.py similarity index 100% rename from SkeinPyPy/fabmetheus_utilities/geometry/manipulation_meta/_copy.py rename to Cura/fabmetheus_utilities/geometry/manipulation_meta/_copy.py diff --git a/SkeinPyPy/fabmetheus_utilities/geometry/manipulation_meta/disjoin.py b/Cura/fabmetheus_utilities/geometry/manipulation_meta/disjoin.py similarity index 100% rename from SkeinPyPy/fabmetheus_utilities/geometry/manipulation_meta/disjoin.py rename to Cura/fabmetheus_utilities/geometry/manipulation_meta/disjoin.py diff --git a/SkeinPyPy/fabmetheus_utilities/geometry/manipulation_meta/import.py b/Cura/fabmetheus_utilities/geometry/manipulation_meta/import.py similarity index 100% rename from SkeinPyPy/fabmetheus_utilities/geometry/manipulation_meta/import.py rename to Cura/fabmetheus_utilities/geometry/manipulation_meta/import.py diff --git a/SkeinPyPy/fabmetheus_utilities/geometry/manipulation_meta/write.py b/Cura/fabmetheus_utilities/geometry/manipulation_meta/write.py similarity index 100% rename from SkeinPyPy/fabmetheus_utilities/geometry/manipulation_meta/write.py rename to Cura/fabmetheus_utilities/geometry/manipulation_meta/write.py diff --git a/SkeinPyPy/fabmetheus_utilities/geometry/manipulation_paths/__init__.py b/Cura/fabmetheus_utilities/geometry/manipulation_paths/__init__.py similarity index 100% rename from SkeinPyPy/fabmetheus_utilities/geometry/manipulation_paths/__init__.py rename to Cura/fabmetheus_utilities/geometry/manipulation_paths/__init__.py diff --git a/SkeinPyPy/fabmetheus_utilities/geometry/manipulation_paths/bevel.py b/Cura/fabmetheus_utilities/geometry/manipulation_paths/bevel.py similarity index 100% rename from SkeinPyPy/fabmetheus_utilities/geometry/manipulation_paths/bevel.py rename to Cura/fabmetheus_utilities/geometry/manipulation_paths/bevel.py diff --git a/SkeinPyPy/fabmetheus_utilities/geometry/manipulation_paths/convex.py b/Cura/fabmetheus_utilities/geometry/manipulation_paths/convex.py similarity index 100% rename from SkeinPyPy/fabmetheus_utilities/geometry/manipulation_paths/convex.py rename to Cura/fabmetheus_utilities/geometry/manipulation_paths/convex.py diff --git a/SkeinPyPy/fabmetheus_utilities/geometry/manipulation_paths/outline.py b/Cura/fabmetheus_utilities/geometry/manipulation_paths/outline.py similarity index 100% rename from SkeinPyPy/fabmetheus_utilities/geometry/manipulation_paths/outline.py rename to Cura/fabmetheus_utilities/geometry/manipulation_paths/outline.py diff --git a/SkeinPyPy/fabmetheus_utilities/geometry/manipulation_paths/overhang.py b/Cura/fabmetheus_utilities/geometry/manipulation_paths/overhang.py similarity index 100% rename from SkeinPyPy/fabmetheus_utilities/geometry/manipulation_paths/overhang.py rename to Cura/fabmetheus_utilities/geometry/manipulation_paths/overhang.py diff --git a/SkeinPyPy/fabmetheus_utilities/geometry/manipulation_paths/round.py b/Cura/fabmetheus_utilities/geometry/manipulation_paths/round.py similarity index 100% rename from SkeinPyPy/fabmetheus_utilities/geometry/manipulation_paths/round.py rename to Cura/fabmetheus_utilities/geometry/manipulation_paths/round.py diff --git a/SkeinPyPy/fabmetheus_utilities/geometry/manipulation_paths/segment.py b/Cura/fabmetheus_utilities/geometry/manipulation_paths/segment.py similarity index 100% rename from SkeinPyPy/fabmetheus_utilities/geometry/manipulation_paths/segment.py rename to Cura/fabmetheus_utilities/geometry/manipulation_paths/segment.py diff --git a/SkeinPyPy/fabmetheus_utilities/geometry/manipulation_paths/wedge.py b/Cura/fabmetheus_utilities/geometry/manipulation_paths/wedge.py similarity index 100% rename from SkeinPyPy/fabmetheus_utilities/geometry/manipulation_paths/wedge.py rename to Cura/fabmetheus_utilities/geometry/manipulation_paths/wedge.py diff --git a/SkeinPyPy/fabmetheus_utilities/geometry/manipulation_shapes/__init__.py b/Cura/fabmetheus_utilities/geometry/manipulation_shapes/__init__.py similarity index 100% rename from SkeinPyPy/fabmetheus_utilities/geometry/manipulation_shapes/__init__.py rename to Cura/fabmetheus_utilities/geometry/manipulation_shapes/__init__.py diff --git a/SkeinPyPy/fabmetheus_utilities/geometry/manipulation_shapes/_bottom.py b/Cura/fabmetheus_utilities/geometry/manipulation_shapes/_bottom.py similarity index 100% rename from SkeinPyPy/fabmetheus_utilities/geometry/manipulation_shapes/_bottom.py rename to Cura/fabmetheus_utilities/geometry/manipulation_shapes/_bottom.py diff --git a/SkeinPyPy/fabmetheus_utilities/geometry/manipulation_shapes/_inset.py b/Cura/fabmetheus_utilities/geometry/manipulation_shapes/_inset.py similarity index 100% rename from SkeinPyPy/fabmetheus_utilities/geometry/manipulation_shapes/_inset.py rename to Cura/fabmetheus_utilities/geometry/manipulation_shapes/_inset.py diff --git a/SkeinPyPy/fabmetheus_utilities/geometry/manipulation_shapes/_outset.py b/Cura/fabmetheus_utilities/geometry/manipulation_shapes/_outset.py similarity index 100% rename from SkeinPyPy/fabmetheus_utilities/geometry/manipulation_shapes/_outset.py rename to Cura/fabmetheus_utilities/geometry/manipulation_shapes/_outset.py diff --git a/SkeinPyPy/fabmetheus_utilities/geometry/manipulation_shapes/equation.py b/Cura/fabmetheus_utilities/geometry/manipulation_shapes/equation.py similarity index 100% rename from SkeinPyPy/fabmetheus_utilities/geometry/manipulation_shapes/equation.py rename to Cura/fabmetheus_utilities/geometry/manipulation_shapes/equation.py diff --git a/SkeinPyPy/fabmetheus_utilities/geometry/manipulation_shapes/flip.py b/Cura/fabmetheus_utilities/geometry/manipulation_shapes/flip.py similarity index 100% rename from SkeinPyPy/fabmetheus_utilities/geometry/manipulation_shapes/flip.py rename to Cura/fabmetheus_utilities/geometry/manipulation_shapes/flip.py diff --git a/SkeinPyPy/fabmetheus_utilities/geometry/manipulation_shapes/mirror.py b/Cura/fabmetheus_utilities/geometry/manipulation_shapes/mirror.py similarity index 100% rename from SkeinPyPy/fabmetheus_utilities/geometry/manipulation_shapes/mirror.py rename to Cura/fabmetheus_utilities/geometry/manipulation_shapes/mirror.py diff --git a/SkeinPyPy/fabmetheus_utilities/geometry/solids/__init__.py b/Cura/fabmetheus_utilities/geometry/solids/__init__.py similarity index 100% rename from SkeinPyPy/fabmetheus_utilities/geometry/solids/__init__.py rename to Cura/fabmetheus_utilities/geometry/solids/__init__.py diff --git a/SkeinPyPy/fabmetheus_utilities/geometry/solids/cube.py b/Cura/fabmetheus_utilities/geometry/solids/cube.py similarity index 100% rename from SkeinPyPy/fabmetheus_utilities/geometry/solids/cube.py rename to Cura/fabmetheus_utilities/geometry/solids/cube.py diff --git a/SkeinPyPy/fabmetheus_utilities/geometry/solids/cylinder.py b/Cura/fabmetheus_utilities/geometry/solids/cylinder.py similarity index 100% rename from SkeinPyPy/fabmetheus_utilities/geometry/solids/cylinder.py rename to Cura/fabmetheus_utilities/geometry/solids/cylinder.py diff --git a/SkeinPyPy/fabmetheus_utilities/geometry/solids/difference.py b/Cura/fabmetheus_utilities/geometry/solids/difference.py similarity index 100% rename from SkeinPyPy/fabmetheus_utilities/geometry/solids/difference.py rename to Cura/fabmetheus_utilities/geometry/solids/difference.py diff --git a/SkeinPyPy/fabmetheus_utilities/geometry/solids/group.py b/Cura/fabmetheus_utilities/geometry/solids/group.py similarity index 100% rename from SkeinPyPy/fabmetheus_utilities/geometry/solids/group.py rename to Cura/fabmetheus_utilities/geometry/solids/group.py diff --git a/SkeinPyPy/fabmetheus_utilities/geometry/solids/intersection.py b/Cura/fabmetheus_utilities/geometry/solids/intersection.py similarity index 100% rename from SkeinPyPy/fabmetheus_utilities/geometry/solids/intersection.py rename to Cura/fabmetheus_utilities/geometry/solids/intersection.py diff --git a/SkeinPyPy/fabmetheus_utilities/geometry/solids/sphere.py b/Cura/fabmetheus_utilities/geometry/solids/sphere.py similarity index 100% rename from SkeinPyPy/fabmetheus_utilities/geometry/solids/sphere.py rename to Cura/fabmetheus_utilities/geometry/solids/sphere.py diff --git a/SkeinPyPy/fabmetheus_utilities/geometry/solids/triangle_mesh.py b/Cura/fabmetheus_utilities/geometry/solids/triangle_mesh.py similarity index 100% rename from SkeinPyPy/fabmetheus_utilities/geometry/solids/triangle_mesh.py rename to Cura/fabmetheus_utilities/geometry/solids/triangle_mesh.py diff --git a/SkeinPyPy/fabmetheus_utilities/geometry/solids/union.py b/Cura/fabmetheus_utilities/geometry/solids/union.py similarity index 100% rename from SkeinPyPy/fabmetheus_utilities/geometry/solids/union.py rename to Cura/fabmetheus_utilities/geometry/solids/union.py diff --git a/SkeinPyPy/fabmetheus_utilities/geometry/statements/__init__.py b/Cura/fabmetheus_utilities/geometry/statements/__init__.py similarity index 100% rename from SkeinPyPy/fabmetheus_utilities/geometry/statements/__init__.py rename to Cura/fabmetheus_utilities/geometry/statements/__init__.py diff --git a/SkeinPyPy/fabmetheus_utilities/geometry/statements/_print.py b/Cura/fabmetheus_utilities/geometry/statements/_print.py similarity index 100% rename from SkeinPyPy/fabmetheus_utilities/geometry/statements/_print.py rename to Cura/fabmetheus_utilities/geometry/statements/_print.py diff --git a/SkeinPyPy/fabmetheus_utilities/geometry/statements/class.py b/Cura/fabmetheus_utilities/geometry/statements/class.py similarity index 100% rename from SkeinPyPy/fabmetheus_utilities/geometry/statements/class.py rename to Cura/fabmetheus_utilities/geometry/statements/class.py diff --git a/SkeinPyPy/fabmetheus_utilities/geometry/statements/elif.py b/Cura/fabmetheus_utilities/geometry/statements/elif.py similarity index 100% rename from SkeinPyPy/fabmetheus_utilities/geometry/statements/elif.py rename to Cura/fabmetheus_utilities/geometry/statements/elif.py diff --git a/SkeinPyPy/fabmetheus_utilities/geometry/statements/else.py b/Cura/fabmetheus_utilities/geometry/statements/else.py similarity index 100% rename from SkeinPyPy/fabmetheus_utilities/geometry/statements/else.py rename to Cura/fabmetheus_utilities/geometry/statements/else.py diff --git a/SkeinPyPy/fabmetheus_utilities/geometry/statements/for.py b/Cura/fabmetheus_utilities/geometry/statements/for.py similarity index 100% rename from SkeinPyPy/fabmetheus_utilities/geometry/statements/for.py rename to Cura/fabmetheus_utilities/geometry/statements/for.py diff --git a/SkeinPyPy/fabmetheus_utilities/geometry/statements/function.py b/Cura/fabmetheus_utilities/geometry/statements/function.py similarity index 100% rename from SkeinPyPy/fabmetheus_utilities/geometry/statements/function.py rename to Cura/fabmetheus_utilities/geometry/statements/function.py diff --git a/SkeinPyPy/fabmetheus_utilities/geometry/statements/if.py b/Cura/fabmetheus_utilities/geometry/statements/if.py similarity index 100% rename from SkeinPyPy/fabmetheus_utilities/geometry/statements/if.py rename to Cura/fabmetheus_utilities/geometry/statements/if.py diff --git a/SkeinPyPy/fabmetheus_utilities/geometry/statements/return.py b/Cura/fabmetheus_utilities/geometry/statements/return.py similarity index 100% rename from SkeinPyPy/fabmetheus_utilities/geometry/statements/return.py rename to Cura/fabmetheus_utilities/geometry/statements/return.py diff --git a/SkeinPyPy/fabmetheus_utilities/geometry/statements/statement.py b/Cura/fabmetheus_utilities/geometry/statements/statement.py similarity index 100% rename from SkeinPyPy/fabmetheus_utilities/geometry/statements/statement.py rename to Cura/fabmetheus_utilities/geometry/statements/statement.py diff --git a/SkeinPyPy/fabmetheus_utilities/geometry/statements/while.py b/Cura/fabmetheus_utilities/geometry/statements/while.py similarity index 100% rename from SkeinPyPy/fabmetheus_utilities/geometry/statements/while.py rename to Cura/fabmetheus_utilities/geometry/statements/while.py diff --git a/SkeinPyPy/fabmetheus_utilities/geometry_plugins/__init__.py b/Cura/fabmetheus_utilities/geometry_plugins/__init__.py similarity index 100% rename from SkeinPyPy/fabmetheus_utilities/geometry_plugins/__init__.py rename to Cura/fabmetheus_utilities/geometry_plugins/__init__.py diff --git a/SkeinPyPy/fabmetheus_utilities/geometry_plugins/creation/__init__.py b/Cura/fabmetheus_utilities/geometry_plugins/creation/__init__.py similarity index 100% rename from SkeinPyPy/fabmetheus_utilities/geometry_plugins/creation/__init__.py rename to Cura/fabmetheus_utilities/geometry_plugins/creation/__init__.py diff --git a/SkeinPyPy/fabmetheus_utilities/geometry_plugins/manipulation_matrix/__init__.py b/Cura/fabmetheus_utilities/geometry_plugins/manipulation_matrix/__init__.py similarity index 100% rename from SkeinPyPy/fabmetheus_utilities/geometry_plugins/manipulation_matrix/__init__.py rename to Cura/fabmetheus_utilities/geometry_plugins/manipulation_matrix/__init__.py diff --git a/SkeinPyPy/fabmetheus_utilities/geometry_plugins/manipulation_meta/__init__.py b/Cura/fabmetheus_utilities/geometry_plugins/manipulation_meta/__init__.py similarity index 100% rename from SkeinPyPy/fabmetheus_utilities/geometry_plugins/manipulation_meta/__init__.py rename to Cura/fabmetheus_utilities/geometry_plugins/manipulation_meta/__init__.py diff --git a/SkeinPyPy/fabmetheus_utilities/geometry_plugins/manipulation_paths/__init__.py b/Cura/fabmetheus_utilities/geometry_plugins/manipulation_paths/__init__.py similarity index 100% rename from SkeinPyPy/fabmetheus_utilities/geometry_plugins/manipulation_paths/__init__.py rename to Cura/fabmetheus_utilities/geometry_plugins/manipulation_paths/__init__.py diff --git a/SkeinPyPy/fabmetheus_utilities/geometry_plugins/manipulation_shapes/__init__.py b/Cura/fabmetheus_utilities/geometry_plugins/manipulation_shapes/__init__.py similarity index 100% rename from SkeinPyPy/fabmetheus_utilities/geometry_plugins/manipulation_shapes/__init__.py rename to Cura/fabmetheus_utilities/geometry_plugins/manipulation_shapes/__init__.py diff --git a/SkeinPyPy/fabmetheus_utilities/intercircle.py b/Cura/fabmetheus_utilities/intercircle.py similarity index 100% rename from SkeinPyPy/fabmetheus_utilities/intercircle.py rename to Cura/fabmetheus_utilities/intercircle.py diff --git a/SkeinPyPy/fabmetheus_utilities/settings.py b/Cura/fabmetheus_utilities/settings.py similarity index 100% rename from SkeinPyPy/fabmetheus_utilities/settings.py rename to Cura/fabmetheus_utilities/settings.py diff --git a/SkeinPyPy/fabmetheus_utilities/svg_reader.py b/Cura/fabmetheus_utilities/svg_reader.py similarity index 100% rename from SkeinPyPy/fabmetheus_utilities/svg_reader.py rename to Cura/fabmetheus_utilities/svg_reader.py diff --git a/SkeinPyPy/fabmetheus_utilities/svg_writer.py b/Cura/fabmetheus_utilities/svg_writer.py similarity index 100% rename from SkeinPyPy/fabmetheus_utilities/svg_writer.py rename to Cura/fabmetheus_utilities/svg_writer.py diff --git a/SkeinPyPy/fabmetheus_utilities/templates/canvas_template.svg b/Cura/fabmetheus_utilities/templates/canvas_template.svg similarity index 100% rename from SkeinPyPy/fabmetheus_utilities/templates/canvas_template.svg rename to Cura/fabmetheus_utilities/templates/canvas_template.svg diff --git a/SkeinPyPy/fabmetheus_utilities/templates/layer_template.svg b/Cura/fabmetheus_utilities/templates/layer_template.svg similarity index 100% rename from SkeinPyPy/fabmetheus_utilities/templates/layer_template.svg rename to Cura/fabmetheus_utilities/templates/layer_template.svg diff --git a/SkeinPyPy/fabmetheus_utilities/vector3.py b/Cura/fabmetheus_utilities/vector3.py similarity index 100% rename from SkeinPyPy/fabmetheus_utilities/vector3.py rename to Cura/fabmetheus_utilities/vector3.py diff --git a/SkeinPyPy/fabmetheus_utilities/vector3index.py b/Cura/fabmetheus_utilities/vector3index.py similarity index 100% rename from SkeinPyPy/fabmetheus_utilities/vector3index.py rename to Cura/fabmetheus_utilities/vector3index.py diff --git a/SkeinPyPy/fabmetheus_utilities/version.txt b/Cura/fabmetheus_utilities/version.txt similarity index 100% rename from SkeinPyPy/fabmetheus_utilities/version.txt rename to Cura/fabmetheus_utilities/version.txt diff --git a/SkeinPyPy/fabmetheus_utilities/xml_simple_reader.py b/Cura/fabmetheus_utilities/xml_simple_reader.py similarity index 100% rename from SkeinPyPy/fabmetheus_utilities/xml_simple_reader.py rename to Cura/fabmetheus_utilities/xml_simple_reader.py diff --git a/SkeinPyPy/fabmetheus_utilities/xml_simple_writer.py b/Cura/fabmetheus_utilities/xml_simple_writer.py similarity index 100% rename from SkeinPyPy/fabmetheus_utilities/xml_simple_writer.py rename to Cura/fabmetheus_utilities/xml_simple_writer.py diff --git a/SkeinPyPy/firmware/default.h b/Cura/firmware/default.h similarity index 100% rename from SkeinPyPy/firmware/default.h rename to Cura/firmware/default.h diff --git a/SkeinPyPy/firmware/default.hex b/Cura/firmware/default.hex similarity index 100% rename from SkeinPyPy/firmware/default.hex rename to Cura/firmware/default.hex diff --git a/SkeinPyPy/newui/__init__.py b/Cura/newui/__init__.py similarity index 100% rename from SkeinPyPy/newui/__init__.py rename to Cura/newui/__init__.py diff --git a/SkeinPyPy/newui/advancedConfig.py b/Cura/newui/advancedConfig.py similarity index 100% rename from SkeinPyPy/newui/advancedConfig.py rename to Cura/newui/advancedConfig.py diff --git a/SkeinPyPy/newui/alterationPanel.py b/Cura/newui/alterationPanel.py similarity index 100% rename from SkeinPyPy/newui/alterationPanel.py rename to Cura/newui/alterationPanel.py diff --git a/SkeinPyPy/newui/configBase.py b/Cura/newui/configBase.py similarity index 100% rename from SkeinPyPy/newui/configBase.py rename to Cura/newui/configBase.py diff --git a/SkeinPyPy/newui/configWizard.py b/Cura/newui/configWizard.py similarity index 100% rename from SkeinPyPy/newui/configWizard.py rename to Cura/newui/configWizard.py diff --git a/SkeinPyPy/newui/gcodeInterpreter.py b/Cura/newui/gcodeInterpreter.py similarity index 100% rename from SkeinPyPy/newui/gcodeInterpreter.py rename to Cura/newui/gcodeInterpreter.py diff --git a/SkeinPyPy/newui/machineCom.py b/Cura/newui/machineCom.py similarity index 100% rename from SkeinPyPy/newui/machineCom.py rename to Cura/newui/machineCom.py diff --git a/SkeinPyPy/newui/mainWindow.py b/Cura/newui/mainWindow.py similarity index 98% rename from SkeinPyPy/newui/mainWindow.py rename to Cura/newui/mainWindow.py index 49ab85e..b3fc0e1 100644 --- a/SkeinPyPy/newui/mainWindow.py +++ b/Cura/newui/mainWindow.py @@ -19,7 +19,7 @@ def main(): app = wx.App(False) if profile.getPreference('wizardDone') == 'False': if os.name == 'darwin': - wx.MessageBox('The MacOS version of Cura is experimental.\nThere are still UI/usability bugs. Check the issue list at:\nhttps://github.com/daid/SkeinPyPy/issues\nfor details.\nPlease report any extra issue you find.', 'MacOS Warning', wx.OK | wx.ICON_INFORMATION) + wx.MessageBox('The MacOS version of Cura is experimental.\nThere are still UI/usability bugs. Check the issue list at:\nhttps://github.com/daid/Cura/issues\nfor details.\nPlease report any extra issue you find.', 'MacOS Warning', wx.OK | wx.ICON_INFORMATION) configWizard.configWizard() profile.putPreference("wizardDone", "True") mainWindow() @@ -64,9 +64,9 @@ class mainWindow(configBase.configWindowBase): helpMenu = wx.Menu() i = helpMenu.Append(-1, 'Online documentation...') - self.Bind(wx.EVT_MENU, lambda e: webbrowser.open('https://github.com/daid/SkeinPyPy/wiki'), i) + self.Bind(wx.EVT_MENU, lambda e: webbrowser.open('https://github.com/daid/Cura/wiki'), i) i = helpMenu.Append(-1, 'Report a problem...') - self.Bind(wx.EVT_MENU, lambda e: webbrowser.open('https://github.com/daid/SkeinPyPy/issues'), i) + self.Bind(wx.EVT_MENU, lambda e: webbrowser.open('https://github.com/daid/Cura/issues'), i) menubar.Append(helpMenu, 'Help') self.SetMenuBar(menubar) diff --git a/SkeinPyPy/newui/preferencesDialog.py b/Cura/newui/preferencesDialog.py similarity index 100% rename from SkeinPyPy/newui/preferencesDialog.py rename to Cura/newui/preferencesDialog.py diff --git a/SkeinPyPy/newui/preview3d.py b/Cura/newui/preview3d.py similarity index 100% rename from SkeinPyPy/newui/preview3d.py rename to Cura/newui/preview3d.py diff --git a/SkeinPyPy/newui/profile.py b/Cura/newui/profile.py similarity index 100% rename from SkeinPyPy/newui/profile.py rename to Cura/newui/profile.py diff --git a/SkeinPyPy/newui/sliceProgessPanel.py b/Cura/newui/sliceProgessPanel.py similarity index 100% rename from SkeinPyPy/newui/sliceProgessPanel.py rename to Cura/newui/sliceProgessPanel.py diff --git a/SkeinPyPy/newui/sliceRun.py b/Cura/newui/sliceRun.py similarity index 100% rename from SkeinPyPy/newui/sliceRun.py rename to Cura/newui/sliceRun.py diff --git a/SkeinPyPy/newui/util3d.py b/Cura/newui/util3d.py similarity index 100% rename from SkeinPyPy/newui/util3d.py rename to Cura/newui/util3d.py diff --git a/SkeinPyPy/newui/validators.py b/Cura/newui/validators.py similarity index 100% rename from SkeinPyPy/newui/validators.py rename to Cura/newui/validators.py diff --git a/SkeinPyPy/skeinforge_application/__init__.py b/Cura/skeinforge_application/__init__.py similarity index 100% rename from SkeinPyPy/skeinforge_application/__init__.py rename to Cura/skeinforge_application/__init__.py diff --git a/SkeinPyPy/skeinforge_application/alterations/end.gcode b/Cura/skeinforge_application/alterations/end.gcode similarity index 100% rename from SkeinPyPy/skeinforge_application/alterations/end.gcode rename to Cura/skeinforge_application/alterations/end.gcode diff --git a/SkeinPyPy/skeinforge_application/alterations/example_cool_end.gcode b/Cura/skeinforge_application/alterations/example_cool_end.gcode similarity index 100% rename from SkeinPyPy/skeinforge_application/alterations/example_cool_end.gcode rename to Cura/skeinforge_application/alterations/example_cool_end.gcode diff --git a/SkeinPyPy/skeinforge_application/alterations/example_cool_start.gcode b/Cura/skeinforge_application/alterations/example_cool_start.gcode similarity index 100% rename from SkeinPyPy/skeinforge_application/alterations/example_cool_start.gcode rename to Cura/skeinforge_application/alterations/example_cool_start.gcode diff --git a/SkeinPyPy/skeinforge_application/alterations/example_end.gcode b/Cura/skeinforge_application/alterations/example_end.gcode similarity index 100% rename from SkeinPyPy/skeinforge_application/alterations/example_end.gcode rename to Cura/skeinforge_application/alterations/example_end.gcode diff --git a/SkeinPyPy/skeinforge_application/alterations/example_home.gcode b/Cura/skeinforge_application/alterations/example_home.gcode similarity index 100% rename from SkeinPyPy/skeinforge_application/alterations/example_home.gcode rename to Cura/skeinforge_application/alterations/example_home.gcode diff --git a/SkeinPyPy/skeinforge_application/alterations/example_replace.csv b/Cura/skeinforge_application/alterations/example_replace.csv similarity index 100% rename from SkeinPyPy/skeinforge_application/alterations/example_replace.csv rename to Cura/skeinforge_application/alterations/example_replace.csv diff --git a/SkeinPyPy/skeinforge_application/alterations/example_replace_M108.csv b/Cura/skeinforge_application/alterations/example_replace_M108.csv similarity index 100% rename from SkeinPyPy/skeinforge_application/alterations/example_replace_M108.csv rename to Cura/skeinforge_application/alterations/example_replace_M108.csv diff --git a/SkeinPyPy/skeinforge_application/alterations/example_start.gcode b/Cura/skeinforge_application/alterations/example_start.gcode similarity index 100% rename from SkeinPyPy/skeinforge_application/alterations/example_start.gcode rename to Cura/skeinforge_application/alterations/example_start.gcode diff --git a/SkeinPyPy/skeinforge_application/alterations/example_support_end.gcode b/Cura/skeinforge_application/alterations/example_support_end.gcode similarity index 100% rename from SkeinPyPy/skeinforge_application/alterations/example_support_end.gcode rename to Cura/skeinforge_application/alterations/example_support_end.gcode diff --git a/SkeinPyPy/skeinforge_application/alterations/example_support_start.gcode b/Cura/skeinforge_application/alterations/example_support_start.gcode similarity index 100% rename from SkeinPyPy/skeinforge_application/alterations/example_support_start.gcode rename to Cura/skeinforge_application/alterations/example_support_start.gcode diff --git a/SkeinPyPy/skeinforge_application/alterations/start.gcode b/Cura/skeinforge_application/alterations/start.gcode similarity index 100% rename from SkeinPyPy/skeinforge_application/alterations/start.gcode rename to Cura/skeinforge_application/alterations/start.gcode diff --git a/SkeinPyPy/skeinforge_application/skeinforge_plugins/__init__.py b/Cura/skeinforge_application/skeinforge_plugins/__init__.py similarity index 100% rename from SkeinPyPy/skeinforge_application/skeinforge_plugins/__init__.py rename to Cura/skeinforge_application/skeinforge_plugins/__init__.py diff --git a/SkeinPyPy/skeinforge_application/skeinforge_plugins/analyze.py b/Cura/skeinforge_application/skeinforge_plugins/analyze.py similarity index 100% rename from SkeinPyPy/skeinforge_application/skeinforge_plugins/analyze.py rename to Cura/skeinforge_application/skeinforge_plugins/analyze.py diff --git a/SkeinPyPy/skeinforge_application/skeinforge_plugins/analyze_plugins/__init__.py b/Cura/skeinforge_application/skeinforge_plugins/analyze_plugins/__init__.py similarity index 100% rename from SkeinPyPy/skeinforge_application/skeinforge_plugins/analyze_plugins/__init__.py rename to Cura/skeinforge_application/skeinforge_plugins/analyze_plugins/__init__.py diff --git a/SkeinPyPy/skeinforge_application/skeinforge_plugins/craft.py b/Cura/skeinforge_application/skeinforge_plugins/craft.py similarity index 100% rename from SkeinPyPy/skeinforge_application/skeinforge_plugins/craft.py rename to Cura/skeinforge_application/skeinforge_plugins/craft.py diff --git a/SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/__init__.py b/Cura/skeinforge_application/skeinforge_plugins/craft_plugins/__init__.py similarity index 100% rename from SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/__init__.py rename to Cura/skeinforge_application/skeinforge_plugins/craft_plugins/__init__.py diff --git a/SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/alteration.py b/Cura/skeinforge_application/skeinforge_plugins/craft_plugins/alteration.py similarity index 100% rename from SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/alteration.py rename to Cura/skeinforge_application/skeinforge_plugins/craft_plugins/alteration.py diff --git a/SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/bottom.py b/Cura/skeinforge_application/skeinforge_plugins/craft_plugins/bottom.py similarity index 100% rename from SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/bottom.py rename to Cura/skeinforge_application/skeinforge_plugins/craft_plugins/bottom.py diff --git a/SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/carve.py b/Cura/skeinforge_application/skeinforge_plugins/craft_plugins/carve.py similarity index 100% rename from SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/carve.py rename to Cura/skeinforge_application/skeinforge_plugins/craft_plugins/carve.py diff --git a/SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/chamber.py b/Cura/skeinforge_application/skeinforge_plugins/craft_plugins/chamber.py similarity index 100% rename from SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/chamber.py rename to Cura/skeinforge_application/skeinforge_plugins/craft_plugins/chamber.py diff --git a/SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/chop.py b/Cura/skeinforge_application/skeinforge_plugins/craft_plugins/chop.py similarity index 100% rename from SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/chop.py rename to Cura/skeinforge_application/skeinforge_plugins/craft_plugins/chop.py diff --git a/SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/cleave.py b/Cura/skeinforge_application/skeinforge_plugins/craft_plugins/cleave.py similarity index 100% rename from SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/cleave.py rename to Cura/skeinforge_application/skeinforge_plugins/craft_plugins/cleave.py diff --git a/SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/clip.py b/Cura/skeinforge_application/skeinforge_plugins/craft_plugins/clip.py similarity index 100% rename from SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/clip.py rename to Cura/skeinforge_application/skeinforge_plugins/craft_plugins/clip.py diff --git a/SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/coil.py b/Cura/skeinforge_application/skeinforge_plugins/craft_plugins/coil.py similarity index 100% rename from SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/coil.py rename to Cura/skeinforge_application/skeinforge_plugins/craft_plugins/coil.py diff --git a/SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/comb.py b/Cura/skeinforge_application/skeinforge_plugins/craft_plugins/comb.py similarity index 100% rename from SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/comb.py rename to Cura/skeinforge_application/skeinforge_plugins/craft_plugins/comb.py diff --git a/SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/cool.py b/Cura/skeinforge_application/skeinforge_plugins/craft_plugins/cool.py similarity index 100% rename from SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/cool.py rename to Cura/skeinforge_application/skeinforge_plugins/craft_plugins/cool.py diff --git a/SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/dimension.py b/Cura/skeinforge_application/skeinforge_plugins/craft_plugins/dimension.py similarity index 100% rename from SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/dimension.py rename to Cura/skeinforge_application/skeinforge_plugins/craft_plugins/dimension.py diff --git a/SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/drill.py b/Cura/skeinforge_application/skeinforge_plugins/craft_plugins/drill.py similarity index 100% rename from SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/drill.py rename to Cura/skeinforge_application/skeinforge_plugins/craft_plugins/drill.py diff --git a/SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/dwindle.py b/Cura/skeinforge_application/skeinforge_plugins/craft_plugins/dwindle.py similarity index 100% rename from SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/dwindle.py rename to Cura/skeinforge_application/skeinforge_plugins/craft_plugins/dwindle.py diff --git a/SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/export.py b/Cura/skeinforge_application/skeinforge_plugins/craft_plugins/export.py similarity index 100% rename from SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/export.py rename to Cura/skeinforge_application/skeinforge_plugins/craft_plugins/export.py diff --git a/SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/export_plugins/__init__.py b/Cura/skeinforge_application/skeinforge_plugins/craft_plugins/export_plugins/__init__.py similarity index 100% rename from SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/export_plugins/__init__.py rename to Cura/skeinforge_application/skeinforge_plugins/craft_plugins/export_plugins/__init__.py diff --git a/SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/export_plugins/binary_16_byte.py b/Cura/skeinforge_application/skeinforge_plugins/craft_plugins/export_plugins/binary_16_byte.py similarity index 100% rename from SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/export_plugins/binary_16_byte.py rename to Cura/skeinforge_application/skeinforge_plugins/craft_plugins/export_plugins/binary_16_byte.py diff --git a/SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/export_plugins/gcode_step.py b/Cura/skeinforge_application/skeinforge_plugins/craft_plugins/export_plugins/gcode_step.py similarity index 100% rename from SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/export_plugins/gcode_step.py rename to Cura/skeinforge_application/skeinforge_plugins/craft_plugins/export_plugins/gcode_step.py diff --git a/SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/export_plugins/gcode_time_segment.py b/Cura/skeinforge_application/skeinforge_plugins/craft_plugins/export_plugins/gcode_time_segment.py similarity index 100% rename from SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/export_plugins/gcode_time_segment.py rename to Cura/skeinforge_application/skeinforge_plugins/craft_plugins/export_plugins/gcode_time_segment.py diff --git a/SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/export_plugins/static_plugins/__init__.py b/Cura/skeinforge_application/skeinforge_plugins/craft_plugins/export_plugins/static_plugins/__init__.py similarity index 100% rename from SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/export_plugins/static_plugins/__init__.py rename to Cura/skeinforge_application/skeinforge_plugins/craft_plugins/export_plugins/static_plugins/__init__.py diff --git a/SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/export_plugins/static_plugins/gcode_small.py b/Cura/skeinforge_application/skeinforge_plugins/craft_plugins/export_plugins/static_plugins/gcode_small.py similarity index 100% rename from SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/export_plugins/static_plugins/gcode_small.py rename to Cura/skeinforge_application/skeinforge_plugins/craft_plugins/export_plugins/static_plugins/gcode_small.py diff --git a/SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/feed.py b/Cura/skeinforge_application/skeinforge_plugins/craft_plugins/feed.py similarity index 100% rename from SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/feed.py rename to Cura/skeinforge_application/skeinforge_plugins/craft_plugins/feed.py diff --git a/SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/fill.py b/Cura/skeinforge_application/skeinforge_plugins/craft_plugins/fill.py similarity index 100% rename from SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/fill.py rename to Cura/skeinforge_application/skeinforge_plugins/craft_plugins/fill.py diff --git a/SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/fillet.py b/Cura/skeinforge_application/skeinforge_plugins/craft_plugins/fillet.py similarity index 100% rename from SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/fillet.py rename to Cura/skeinforge_application/skeinforge_plugins/craft_plugins/fillet.py diff --git a/SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/flow.py b/Cura/skeinforge_application/skeinforge_plugins/craft_plugins/flow.py similarity index 100% rename from SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/flow.py rename to Cura/skeinforge_application/skeinforge_plugins/craft_plugins/flow.py diff --git a/SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/home.py b/Cura/skeinforge_application/skeinforge_plugins/craft_plugins/home.py similarity index 100% rename from SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/home.py rename to Cura/skeinforge_application/skeinforge_plugins/craft_plugins/home.py diff --git a/SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/hop.py b/Cura/skeinforge_application/skeinforge_plugins/craft_plugins/hop.py similarity index 100% rename from SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/hop.py rename to Cura/skeinforge_application/skeinforge_plugins/craft_plugins/hop.py diff --git a/SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/inset.py b/Cura/skeinforge_application/skeinforge_plugins/craft_plugins/inset.py similarity index 100% rename from SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/inset.py rename to Cura/skeinforge_application/skeinforge_plugins/craft_plugins/inset.py diff --git a/SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/jitter.py b/Cura/skeinforge_application/skeinforge_plugins/craft_plugins/jitter.py similarity index 100% rename from SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/jitter.py rename to Cura/skeinforge_application/skeinforge_plugins/craft_plugins/jitter.py diff --git a/SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/joris.py b/Cura/skeinforge_application/skeinforge_plugins/craft_plugins/joris.py similarity index 100% rename from SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/joris.py rename to Cura/skeinforge_application/skeinforge_plugins/craft_plugins/joris.py diff --git a/SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/lash.py b/Cura/skeinforge_application/skeinforge_plugins/craft_plugins/lash.py similarity index 100% rename from SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/lash.py rename to Cura/skeinforge_application/skeinforge_plugins/craft_plugins/lash.py diff --git a/SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/lift.py b/Cura/skeinforge_application/skeinforge_plugins/craft_plugins/lift.py similarity index 100% rename from SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/lift.py rename to Cura/skeinforge_application/skeinforge_plugins/craft_plugins/lift.py diff --git a/SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/limit.py b/Cura/skeinforge_application/skeinforge_plugins/craft_plugins/limit.py similarity index 100% rename from SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/limit.py rename to Cura/skeinforge_application/skeinforge_plugins/craft_plugins/limit.py diff --git a/SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/mill.py b/Cura/skeinforge_application/skeinforge_plugins/craft_plugins/mill.py similarity index 100% rename from SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/mill.py rename to Cura/skeinforge_application/skeinforge_plugins/craft_plugins/mill.py diff --git a/SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/multiply.py b/Cura/skeinforge_application/skeinforge_plugins/craft_plugins/multiply.py similarity index 100% rename from SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/multiply.py rename to Cura/skeinforge_application/skeinforge_plugins/craft_plugins/multiply.py diff --git a/SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/oozebane.py b/Cura/skeinforge_application/skeinforge_plugins/craft_plugins/oozebane.py similarity index 100% rename from SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/oozebane.py rename to Cura/skeinforge_application/skeinforge_plugins/craft_plugins/oozebane.py diff --git a/SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/outset.py b/Cura/skeinforge_application/skeinforge_plugins/craft_plugins/outset.py similarity index 100% rename from SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/outset.py rename to Cura/skeinforge_application/skeinforge_plugins/craft_plugins/outset.py diff --git a/SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/preface.py b/Cura/skeinforge_application/skeinforge_plugins/craft_plugins/preface.py similarity index 100% rename from SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/preface.py rename to Cura/skeinforge_application/skeinforge_plugins/craft_plugins/preface.py diff --git a/SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/raft.py b/Cura/skeinforge_application/skeinforge_plugins/craft_plugins/raft.py similarity index 100% rename from SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/raft.py rename to Cura/skeinforge_application/skeinforge_plugins/craft_plugins/raft.py diff --git a/SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/scale.py b/Cura/skeinforge_application/skeinforge_plugins/craft_plugins/scale.py similarity index 100% rename from SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/scale.py rename to Cura/skeinforge_application/skeinforge_plugins/craft_plugins/scale.py diff --git a/SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/skin.py b/Cura/skeinforge_application/skeinforge_plugins/craft_plugins/skin.py similarity index 100% rename from SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/skin.py rename to Cura/skeinforge_application/skeinforge_plugins/craft_plugins/skin.py diff --git a/SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/skirt.py b/Cura/skeinforge_application/skeinforge_plugins/craft_plugins/skirt.py similarity index 100% rename from SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/skirt.py rename to Cura/skeinforge_application/skeinforge_plugins/craft_plugins/skirt.py diff --git a/SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/smooth.py b/Cura/skeinforge_application/skeinforge_plugins/craft_plugins/smooth.py similarity index 100% rename from SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/smooth.py rename to Cura/skeinforge_application/skeinforge_plugins/craft_plugins/smooth.py diff --git a/SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/speed.py b/Cura/skeinforge_application/skeinforge_plugins/craft_plugins/speed.py similarity index 100% rename from SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/speed.py rename to Cura/skeinforge_application/skeinforge_plugins/craft_plugins/speed.py diff --git a/SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/splodge.py b/Cura/skeinforge_application/skeinforge_plugins/craft_plugins/splodge.py similarity index 100% rename from SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/splodge.py rename to Cura/skeinforge_application/skeinforge_plugins/craft_plugins/splodge.py diff --git a/SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/stretch.py b/Cura/skeinforge_application/skeinforge_plugins/craft_plugins/stretch.py similarity index 100% rename from SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/stretch.py rename to Cura/skeinforge_application/skeinforge_plugins/craft_plugins/stretch.py diff --git a/SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/temperature.py b/Cura/skeinforge_application/skeinforge_plugins/craft_plugins/temperature.py similarity index 100% rename from SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/temperature.py rename to Cura/skeinforge_application/skeinforge_plugins/craft_plugins/temperature.py diff --git a/SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/tower.py b/Cura/skeinforge_application/skeinforge_plugins/craft_plugins/tower.py similarity index 100% rename from SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/tower.py rename to Cura/skeinforge_application/skeinforge_plugins/craft_plugins/tower.py diff --git a/SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/unpause.py b/Cura/skeinforge_application/skeinforge_plugins/craft_plugins/unpause.py similarity index 100% rename from SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/unpause.py rename to Cura/skeinforge_application/skeinforge_plugins/craft_plugins/unpause.py diff --git a/SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/whittle.py b/Cura/skeinforge_application/skeinforge_plugins/craft_plugins/whittle.py similarity index 100% rename from SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/whittle.py rename to Cura/skeinforge_application/skeinforge_plugins/craft_plugins/whittle.py diff --git a/SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/widen.py b/Cura/skeinforge_application/skeinforge_plugins/craft_plugins/widen.py similarity index 100% rename from SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/widen.py rename to Cura/skeinforge_application/skeinforge_plugins/craft_plugins/widen.py diff --git a/SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/wipe.py b/Cura/skeinforge_application/skeinforge_plugins/craft_plugins/wipe.py similarity index 100% rename from SkeinPyPy/skeinforge_application/skeinforge_plugins/craft_plugins/wipe.py rename to Cura/skeinforge_application/skeinforge_plugins/craft_plugins/wipe.py diff --git a/SkeinPyPy/skeinforge_application/skeinforge_plugins/help.py b/Cura/skeinforge_application/skeinforge_plugins/help.py similarity index 100% rename from SkeinPyPy/skeinforge_application/skeinforge_plugins/help.py rename to Cura/skeinforge_application/skeinforge_plugins/help.py diff --git a/SkeinPyPy/skeinforge_application/skeinforge_plugins/meta.py b/Cura/skeinforge_application/skeinforge_plugins/meta.py similarity index 100% rename from SkeinPyPy/skeinforge_application/skeinforge_plugins/meta.py rename to Cura/skeinforge_application/skeinforge_plugins/meta.py diff --git a/SkeinPyPy/skeinforge_application/skeinforge_plugins/meta_plugins/__init__.py b/Cura/skeinforge_application/skeinforge_plugins/meta_plugins/__init__.py similarity index 100% rename from SkeinPyPy/skeinforge_application/skeinforge_plugins/meta_plugins/__init__.py rename to Cura/skeinforge_application/skeinforge_plugins/meta_plugins/__init__.py diff --git a/SkeinPyPy/skeinforge_application/skeinforge_plugins/meta_plugins/description.py b/Cura/skeinforge_application/skeinforge_plugins/meta_plugins/description.py similarity index 100% rename from SkeinPyPy/skeinforge_application/skeinforge_plugins/meta_plugins/description.py rename to Cura/skeinforge_application/skeinforge_plugins/meta_plugins/description.py diff --git a/SkeinPyPy/skeinforge_application/skeinforge_plugins/meta_plugins/polyfile.py b/Cura/skeinforge_application/skeinforge_plugins/meta_plugins/polyfile.py similarity index 100% rename from SkeinPyPy/skeinforge_application/skeinforge_plugins/meta_plugins/polyfile.py rename to Cura/skeinforge_application/skeinforge_plugins/meta_plugins/polyfile.py diff --git a/SkeinPyPy/skeinforge_application/skeinforge_plugins/profile.py b/Cura/skeinforge_application/skeinforge_plugins/profile.py similarity index 100% rename from SkeinPyPy/skeinforge_application/skeinforge_plugins/profile.py rename to Cura/skeinforge_application/skeinforge_plugins/profile.py diff --git a/SkeinPyPy/skeinforge_application/skeinforge_plugins/profile_plugins/__init__.py b/Cura/skeinforge_application/skeinforge_plugins/profile_plugins/__init__.py similarity index 100% rename from SkeinPyPy/skeinforge_application/skeinforge_plugins/profile_plugins/__init__.py rename to Cura/skeinforge_application/skeinforge_plugins/profile_plugins/__init__.py diff --git a/SkeinPyPy/skeinforge_application/skeinforge_plugins/profile_plugins/cutting.py b/Cura/skeinforge_application/skeinforge_plugins/profile_plugins/cutting.py similarity index 100% rename from SkeinPyPy/skeinforge_application/skeinforge_plugins/profile_plugins/cutting.py rename to Cura/skeinforge_application/skeinforge_plugins/profile_plugins/cutting.py diff --git a/SkeinPyPy/skeinforge_application/skeinforge_plugins/profile_plugins/extrusion.py b/Cura/skeinforge_application/skeinforge_plugins/profile_plugins/extrusion.py similarity index 100% rename from SkeinPyPy/skeinforge_application/skeinforge_plugins/profile_plugins/extrusion.py rename to Cura/skeinforge_application/skeinforge_plugins/profile_plugins/extrusion.py diff --git a/SkeinPyPy/skeinforge_application/skeinforge_plugins/profile_plugins/milling.py b/Cura/skeinforge_application/skeinforge_plugins/profile_plugins/milling.py similarity index 100% rename from SkeinPyPy/skeinforge_application/skeinforge_plugins/profile_plugins/milling.py rename to Cura/skeinforge_application/skeinforge_plugins/profile_plugins/milling.py diff --git a/SkeinPyPy/skeinforge_application/skeinforge_plugins/profile_plugins/winding.py b/Cura/skeinforge_application/skeinforge_plugins/profile_plugins/winding.py similarity index 100% rename from SkeinPyPy/skeinforge_application/skeinforge_plugins/profile_plugins/winding.py rename to Cura/skeinforge_application/skeinforge_plugins/profile_plugins/winding.py diff --git a/SkeinPyPy/skeinforge_application/skeinforge_utilities/__init__.py b/Cura/skeinforge_application/skeinforge_utilities/__init__.py similarity index 100% rename from SkeinPyPy/skeinforge_application/skeinforge_utilities/__init__.py rename to Cura/skeinforge_application/skeinforge_utilities/__init__.py diff --git a/SkeinPyPy/skeinforge_application/skeinforge_utilities/skeinforge_analyze.py b/Cura/skeinforge_application/skeinforge_utilities/skeinforge_analyze.py similarity index 100% rename from SkeinPyPy/skeinforge_application/skeinforge_utilities/skeinforge_analyze.py rename to Cura/skeinforge_application/skeinforge_utilities/skeinforge_analyze.py diff --git a/SkeinPyPy/skeinforge_application/skeinforge_utilities/skeinforge_craft.py b/Cura/skeinforge_application/skeinforge_utilities/skeinforge_craft.py similarity index 100% rename from SkeinPyPy/skeinforge_application/skeinforge_utilities/skeinforge_craft.py rename to Cura/skeinforge_application/skeinforge_utilities/skeinforge_craft.py diff --git a/SkeinPyPy/skeinforge_application/skeinforge_utilities/skeinforge_help.py b/Cura/skeinforge_application/skeinforge_utilities/skeinforge_help.py similarity index 100% rename from SkeinPyPy/skeinforge_application/skeinforge_utilities/skeinforge_help.py rename to Cura/skeinforge_application/skeinforge_utilities/skeinforge_help.py diff --git a/SkeinPyPy/skeinforge_application/skeinforge_utilities/skeinforge_meta.py b/Cura/skeinforge_application/skeinforge_utilities/skeinforge_meta.py similarity index 100% rename from SkeinPyPy/skeinforge_application/skeinforge_utilities/skeinforge_meta.py rename to Cura/skeinforge_application/skeinforge_utilities/skeinforge_meta.py diff --git a/SkeinPyPy/skeinforge_application/skeinforge_utilities/skeinforge_polyfile.py b/Cura/skeinforge_application/skeinforge_utilities/skeinforge_polyfile.py similarity index 100% rename from SkeinPyPy/skeinforge_application/skeinforge_utilities/skeinforge_polyfile.py rename to Cura/skeinforge_application/skeinforge_utilities/skeinforge_polyfile.py diff --git a/SkeinPyPy/skeinforge_application/skeinforge_utilities/skeinforge_profile.py b/Cura/skeinforge_application/skeinforge_utilities/skeinforge_profile.py similarity index 100% rename from SkeinPyPy/skeinforge_application/skeinforge_utilities/skeinforge_profile.py rename to Cura/skeinforge_application/skeinforge_utilities/skeinforge_profile.py diff --git a/package.sh b/package.sh index 1af88a2..7eaed80 100755 --- a/package.sh +++ b/package.sh @@ -1,6 +1,6 @@ #!/bin/bash -# This script is to package the SkeinPyPy package for Windows/Linux and OSx +# This script is to package the Cura package for Windows/Linux and OSx # This script should run under Linux and OSx, as well as Windows with Cygwin. ############################# @@ -17,7 +17,7 @@ BUILD_TARGET=${1:-win32} ARCHIVE_FOR_DISTRIBUTION=1 ##Which version name are we appending to the final archive BUILD_NAME=NewUI-Beta4 -TARGET_DIR=${BUILD_TARGET}-SkeinPyPy-${BUILD_NAME} +TARGET_DIR=${BUILD_TARGET}-Cura-${BUILD_NAME} ##Which versions of external programs to use PYPY_VERSION=c-jit-latest @@ -136,7 +136,7 @@ mv ${TARGET_DIR}/pypy-*-${BUILD_TARGET} ${TARGET_DIR}/pypy rm -rf ${TARGET_DIR}/pypy/lib-python/2.7/test #add Skeinforge -cp -a SkeinPyPy ${TARGET_DIR}/SkeinPyPy +cp -a Cura ${TARGET_DIR}/Cura #add printrun cp -a Printrun ${TARGET_DIR}/Printrun diff --git a/scripts/linux/skeinpypy.sh b/scripts/linux/skeinpypy.sh index 6393f39..6ddee07 100755 --- a/scripts/linux/skeinpypy.sh +++ b/scripts/linux/skeinpypy.sh @@ -20,5 +20,5 @@ if [ $? != 0 ]; then fi SCRIPT_DIR=`dirname $0` -python ${SCRIPT_DIR}/SkeinPyPy/skeinpypy.py +python ${SCRIPT_DIR}/Cura/cura.py diff --git a/scripts/osx64/skeinpypy.sh b/scripts/osx64/skeinpypy.sh index 14e10fb..d48f365 100755 --- a/scripts/osx64/skeinpypy.sh +++ b/scripts/osx64/skeinpypy.sh @@ -22,5 +22,5 @@ if [ $? != 0 ]; then fi SCRIPT_DIR=`dirname $0` -python ${SCRIPT_DIR}/SkeinPyPy/skeinpypy.py +python ${SCRIPT_DIR}/Cura/cura.py diff --git a/scripts/win32/skeinpypy.bat b/scripts/win32/skeinpypy.bat index ef56c9a..74c3615 100644 --- a/scripts/win32/skeinpypy.bat +++ b/scripts/win32/skeinpypy.bat @@ -1 +1 @@ -@python\python.exe SkeinPyPy\SkeinPyPy.py +@python\python.exe Cura\cura.py From 3ded5575843de356608610599c1d801f67bdb274 Mon Sep 17 00:00:00 2001 From: Daid Date: Sat, 24 Mar 2012 12:39:31 +0100 Subject: [PATCH 04/33] Enable print button, does not do anything useful yet. But stashing the change so I can rename to Cura --- Cura/newui/mainWindow.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Cura/newui/mainWindow.py b/Cura/newui/mainWindow.py index b3fc0e1..e1b1f8c 100644 --- a/Cura/newui/mainWindow.py +++ b/Cura/newui/mainWindow.py @@ -162,10 +162,10 @@ class mainWindow(configBase.configWindowBase): # load and slice buttons. loadButton = wx.Button(self, -1, 'Load Model') sliceButton = wx.Button(self, -1, 'Slice to GCode') - #printButton = wx.Button(self, -1, 'Print GCode') + printButton = wx.Button(self, -1, 'Print GCode') self.Bind(wx.EVT_BUTTON, self.OnLoadModel, loadButton) self.Bind(wx.EVT_BUTTON, self.OnSlice, sliceButton) - #self.Bind(wx.EVT_BUTTON, self.OnPrint, printButton) + self.Bind(wx.EVT_BUTTON, self.OnPrint, printButton) #Also bind double clicking the 3D preview to load an STL file. self.preview3d.glCanvas.Bind(wx.EVT_LEFT_DCLICK, self.OnLoadModel, self.preview3d.glCanvas) @@ -178,7 +178,7 @@ class mainWindow(configBase.configWindowBase): sizer.AddGrowableRow(0) sizer.Add(loadButton, (1,1), flag=wx.RIGHT, border=5) sizer.Add(sliceButton, (1,2), flag=wx.RIGHT, border=5) - #sizer.Add(printButton, (1,3), flag=wx.RIGHT, border=5) + sizer.Add(printButton, (1,3), flag=wx.RIGHT, border=5) self.sizer = sizer if self.filename != "None": From 1021f0f3f7dd375f1d4f11051a5b0005037e1db9 Mon Sep 17 00:00:00 2001 From: Daid Date: Sat, 24 Mar 2012 18:12:10 +0100 Subject: [PATCH 05/33] Added printWindow placeholder --- Cura/newui/printWindow.py | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 Cura/newui/printWindow.py diff --git a/Cura/newui/printWindow.py b/Cura/newui/printWindow.py new file mode 100644 index 0000000..9df9794 --- /dev/null +++ b/Cura/newui/printWindow.py @@ -0,0 +1,38 @@ +from __future__ import absolute_import +import __init__ + +import wx + +printWindowHandle = None + +def printFile(filename): + global printWindowHandle + print "Want to print: " + filename + if printWindowHandle == None: + printWindowHandle = printWindow() + printWindowHandle.Show(True) + printWindowHandle.Raise() + +class printWindow(wx.Frame): + "Main user interface window" + def __init__(self): + super(printWindow, self).__init__(None, -1, title='Printing') + self.SetSizer(wx.GridBagSizer(2, 2)) + + self.statsPanel = wx.Panel(self) + self.GetSizer().Add(self.statsPanel, pos=(0,0), span=(4,1), flag=wx.EXPAND) + + self.GetSizer().Add(wx.Button(self, -1, 'Test'), pos=(0,1)) + self.GetSizer().Add(wx.Button(self, -1, 'Test'), pos=(1,1)) + self.GetSizer().Add(wx.Button(self, -1, 'Test'), pos=(2,1)) + + self.Bind(wx.EVT_CLOSE, self.OnClose) + + self.Layout() + self.Fit() + self.Centre() + + def OnClose(self, e): + global printWindowHandle + printWindowHandle = None + self.Destroy() From 0d16ef4bd18ef809f542f491739950c94ef2cef6 Mon Sep 17 00:00:00 2001 From: Daid Date: Sat, 24 Mar 2012 19:50:37 +0100 Subject: [PATCH 06/33] Updated script filenames. Renamed SkeinPyPy to Cura in README --- README | 16 ++++++++-------- scripts/linux/{skeinpypy.sh => cura.sh} | 0 scripts/osx64/{skeinpypy.sh => cura.sh} | 0 scripts/win32/{skeinpypy.bat => cura.bat} | 0 4 files changed, 8 insertions(+), 8 deletions(-) rename scripts/linux/{skeinpypy.sh => cura.sh} (100%) rename scripts/osx64/{skeinpypy.sh => cura.sh} (100%) rename scripts/win32/{skeinpypy.bat => cura.bat} (100%) diff --git a/README b/README index d371684..7d879ae 100644 --- a/README +++ b/README @@ -1,5 +1,5 @@ -For documentation check: https://github.com/daid/SkeinPyPy/wiki -For downloads check: https://github.com/daid/SkeinPyPy/downloads +For documentation check: https://github.com/daid/Cura/wiki +For downloads check: https://github.com/daid/Cura/downloads This package includes two programs: @@ -7,11 +7,11 @@ Pronterface: An application for both manually controlling and automatically feeding gcode to a 3D printer. -SkeinPyPy: +Cura: - A easy to use program for slicing STL files using SkeinForge. SkeinPyPy can also visualize the 3D models in a variety of ways. + A easy to use program for slicing STL files using SkeinForge. Cura can also visualize the 3D models in a variety of ways. - On first run, SkeinPyPy will ask to go through a set of calibration steps that will perform a series of operations on your 3D printer. One of those steps involves extruding a bit of filament where the filament is initially nearly fully extracted. As such, it you will probably need to run Pronterface first, heat up the extruder enough to be able to extract the filament and then use the Pronterface interface to reverse the extruder motor until the filament is at the right position (specifically, until the filament end is even with where the Bowden tube leaves the extuder motor assembly, on an Ultimaker). + On first run, Cura will ask to go through a set of calibration steps that will perform a series of operations on your 3D printer. One of those steps involves extruding a bit of filament where the filament is initially nearly fully extracted. As such, it you will probably need to run Pronterface first, heat up the extruder enough to be able to extract the filament and then use the Pronterface interface to reverse the extruder motor until the filament is at the right position (specifically, until the filament end is even with where the Bowden tube leaves the extuder motor assembly, on an Ultimaker). ======== BUILDING @@ -47,12 +47,12 @@ Double-click skeinforge.bat and Printrun.bat. Mac OS X & Linux ---------------- -Once built, the two apps -- Pronterface and SkeinPyPy -- must be started from the command line (for now): +Once built, the two apps -- Pronterface and Cura -- must be started from the command line (for now): # open a new terminal window and.... - cd osx64-SkeinPyPy-NewUI-Beta4 + cd osx64-Cura-NewUI-Beta4 ./pronterface.sh & - ./skeinpypy.sh & + ./Cura.sh & This will start both applications with their console logging output directed into the terminal window. diff --git a/scripts/linux/skeinpypy.sh b/scripts/linux/cura.sh similarity index 100% rename from scripts/linux/skeinpypy.sh rename to scripts/linux/cura.sh diff --git a/scripts/osx64/skeinpypy.sh b/scripts/osx64/cura.sh similarity index 100% rename from scripts/osx64/skeinpypy.sh rename to scripts/osx64/cura.sh diff --git a/scripts/win32/skeinpypy.bat b/scripts/win32/cura.bat similarity index 100% rename from scripts/win32/skeinpypy.bat rename to scripts/win32/cura.bat From 3f0c86d1d941de0827e7dd3d8e680b295d7201b2 Mon Sep 17 00:00:00 2001 From: daid Date: Mon, 26 Mar 2012 13:45:31 +0200 Subject: [PATCH 07/33] Move nozzle_size back to machine config. Rename machine config tab to advanced config, and advanced config window to expert config --- Cura/fabmetheus_utilities/settings.py | 8 ++++---- Cura/newui/advancedConfig.py | 3 ++- Cura/newui/configWizard.py | 6 +++--- Cura/newui/mainWindow.py | 6 ++++-- Cura/newui/preferencesDialog.py | 2 -- Cura/newui/preview3d.py | 2 +- Cura/newui/profile.py | 2 +- Cura/newui/validators.py | 4 ++-- 8 files changed, 17 insertions(+), 16 deletions(-) diff --git a/Cura/fabmetheus_utilities/settings.py b/Cura/fabmetheus_utilities/settings.py index 351c3cc..75556f9 100644 --- a/Cura/fabmetheus_utilities/settings.py +++ b/Cura/fabmetheus_utilities/settings.py @@ -37,7 +37,7 @@ def storedPercentSetting(name): def calculateEdgeWidth(setting): wallThickness = float(profile.getProfileSetting('wall_thickness')) - nozzleSize = float(profile.getPreference('nozzle_size')) + nozzleSize = float(profile.getProfileSetting('nozzle_size')) if wallThickness < nozzleSize: return wallThickness @@ -56,7 +56,7 @@ def calculateShellsBase(setting): return calculateShellsImp(float(profile.getProfileSetting('wall_thickness')) + float(profile.getProfileSetting('extra_base_wall_thickness'))) def calculateShellsImp(wallThickness): - nozzleSize = float(profile.getPreference('nozzle_size')) + nozzleSize = float(profile.getProfileSetting('nozzle_size')) if wallThickness < nozzleSize: return 0 @@ -129,7 +129,7 @@ def getProfileInformation(): },'inset': { 'Add_Custom_Code_for_Temperature_Reading': DEFSET, 'Infill_in_Direction_of_Bridge': "True", - 'Infill_Width': storedPreference("nozzle_size"), + 'Infill_Width': getProfileSetting("nozzle_size"), 'Loop_Order_Choice': DEFSET, 'Overlap_Removal_Width_over_Perimeter_Width_ratio': DEFSET, 'Turn_Extruder_Heater_Off_at_Shut_Down': DEFSET, @@ -157,7 +157,7 @@ def getProfileInformation(): 'Line': ifSettingIs('infill_type', 'Line'), 'Infill_Perimeter_Overlap_ratio': storedPercentSetting('fill_overlap'), 'Infill_Solidity_ratio': storedPercentSetting('fill_density'), - 'Infill_Width': storedPreference("nozzle_size"), + 'Infill_Width': getProfileSetting("nozzle_size"), 'Sharpest_Angle_degrees': DEFSET, 'Solid_Surface_Thickness_layers': calculateSolidLayerCount, 'Start_From_Choice': DEFSET, diff --git a/Cura/newui/advancedConfig.py b/Cura/newui/advancedConfig.py index 2febe8b..97852fe 100644 --- a/Cura/newui/advancedConfig.py +++ b/Cura/newui/advancedConfig.py @@ -13,7 +13,7 @@ from newui import validators class advancedConfigWindow(configBase.configWindowBase): "Advanced configuration window" def __init__(self): - super(advancedConfigWindow, self).__init__(title='Advanced config') + super(advancedConfigWindow, self).__init__(title='Expert config') wx.EVT_CLOSE(self, self.OnClose) @@ -22,6 +22,7 @@ class advancedConfigWindow(configBase.configWindowBase): configBase.TitleRow(left, "Accuracy") c = configBase.SettingRow(left, "Extra Wall thickness for bottom/top (mm)", 'extra_base_wall_thickness', '0.0', 'Additional wall thickness of the bottom and top layers.') validators.validFloat(c, 0.0) + configBase.TitleRow(left, "Sequence") c = configBase.SettingRow(left, "Print order sequence", 'sequence', ['Loops > Perimeter > Infill', 'Loops > Infill > Perimeter', 'Infill > Loops > Perimeter', 'Infill > Perimeter > Loops', 'Perimeter > Infill > Loops', 'Perimeter > Loops > Infill'], 'Sequence of printing. The perimeter is the outer print edge, the loops are the insides of the walls, and the infill is the insides.'); c = configBase.SettingRow(left, "Force first layer sequence", 'force_first_layer_sequence', True, 'This setting forces the order of the first layer to be \'Perimeter > Loops > Infill\'') diff --git a/Cura/newui/configWizard.py b/Cura/newui/configWizard.py index 4450195..97b3f5b 100644 --- a/Cura/newui/configWizard.py +++ b/Cura/newui/configWizard.py @@ -97,17 +97,17 @@ class MachineSelectPage(InfoPage): profile.putPreference('machine_width', '205') profile.putPreference('machine_depth', '205') profile.putPreference('machine_height', '200') - profile.putPreference('nozzle_size', '0.4') + profile.putProfileSetting('nozzle_size', '0.4') profile.putProfileSetting('machine_center_x', '100') profile.putProfileSetting('machine_center_y', '100') else: profile.putPreference('machine_width', '80') profile.putPreference('machine_depth', '80') profile.putPreference('machine_height', '60') - profile.putPreference('nozzle_size', '0.5') + profile.putProfileSetting('nozzle_size', '0.5') profile.putProfileSetting('machine_center_x', '40') profile.putProfileSetting('machine_center_y', '40') - profile.putProfileSetting('wall_thickness', float(profile.getPreference('nozzle_size')) * 2) + profile.putProfileSetting('wall_thickness', float(profile.getProfileSetting('nozzle_size')) * 2) class FirmwareUpgradePage(InfoPage): def __init__(self, parent): diff --git a/Cura/newui/mainWindow.py b/Cura/newui/mainWindow.py index e1b1f8c..aecb1c5 100644 --- a/Cura/newui/mainWindow.py +++ b/Cura/newui/mainWindow.py @@ -85,7 +85,7 @@ class mainWindow(configBase.configWindowBase): configBase.TitleRow(left, "Accuracy") c = configBase.SettingRow(left, "Layer height (mm)", 'layer_height', '0.2', 'Layer height in millimeters.\n0.2 is a good value for quick prints.\n0.1 gives high quality prints.') validators.validFloat(c, 0.0) - validators.warningAbove(c, lambda : (float(profile.getPreference('nozzle_size')) * 80 / 100), "Thicker layers then %.2fmm (80%% nozzle size) usually give bad results and are not recommended.") + validators.warningAbove(c, lambda : (float(profile.getProfileSetting('nozzle_size')) * 80 / 100), "Thicker layers then %.2fmm (80%% nozzle size) usually give bad results and are not recommended.") c = configBase.SettingRow(left, "Wall thickness (mm)", 'wall_thickness', '0.8', 'Thickness of the walls.\nThis is used in combination with the nozzle size to define the number\nof perimeter lines and the thickness of those perimeter lines.') validators.validFloat(c, 0.0) validators.wallThicknessValidator(c) @@ -124,9 +124,11 @@ class mainWindow(configBase.configWindowBase): c = configBase.SettingRow(right, "Packing Density", 'filament_density', '1.00', 'Packing density of your filament. This should be 1.00 for PLA and 0.85 for ABS') validators.validFloat(c, 0.5, 1.5) - (left, right) = self.CreateConfigTab(nb, 'Machine config') + (left, right) = self.CreateConfigTab(nb, 'Advanced config') configBase.TitleRow(left, "Machine size") + c = configBase.SettingRow(left, "Nozzle size (mm)", 'nozzle_size', '0.4', 'The nozzle size is very important, this is used to calculate the line width of the infill, and used to calculate the amount of outside wall lines and thickness for the wall thickness you entered in the print settings.') + validators.validFloat(c, 0.1, 1.0) c = configBase.SettingRow(left, "Machine center X (mm)", 'machine_center_x', '100', 'The center of your machine, your print will be placed at this location') validators.validInt(c, 10) configBase.settingNotify(c, self.preview3d.updateCenterX) diff --git a/Cura/newui/preferencesDialog.py b/Cura/newui/preferencesDialog.py index 539a69a..493807b 100644 --- a/Cura/newui/preferencesDialog.py +++ b/Cura/newui/preferencesDialog.py @@ -16,8 +16,6 @@ class preferencesDialog(configBase.configWindowBase): left, right, main = self.CreateConfigPanel(self) configBase.TitleRow(left, 'Machine settings') - c = configBase.SettingRow(left, "Nozzle size (mm)", 'nozzle_size', '0.4', 'The nozzle size is very important, this is used to calculate the line width of the infill, and used to calculate the amount of outside wall lines and thickness for the wall thickness you entered in the print settings.', type = 'preference') - validators.validFloat(c, 0.1, 1.0) c = configBase.SettingRow(left, 'Steps per E', 'steps_per_e', '0', 'Amount of steps per mm filament extrusion', type = 'preference') validators.validFloat(c, 0.1) c = configBase.SettingRow(left, 'Machine width (mm)', 'machine_width', '205', 'Size of the machine in mm', type = 'preference') diff --git a/Cura/newui/preview3d.py b/Cura/newui/preview3d.py index 722c282..679f05b 100644 --- a/Cura/newui/preview3d.py +++ b/Cura/newui/preview3d.py @@ -440,7 +440,7 @@ class PreviewGLCanvas(glcanvas.GLCanvas): layerThickness = 0.0 filamentRadius = float(profile.getProfileSetting('filament_diameter')) / 2 filamentArea = math.pi * filamentRadius * filamentRadius - lineWidth = float(profile.getPreference('nozzle_size')) / 2 + lineWidth = float(profile.getProfileSetting('nozzle_size')) / 2 curLayerNum = 0 for path in self.parent.gcode.pathList: diff --git a/Cura/newui/profile.py b/Cura/newui/profile.py index 5a3e403..481932d 100644 --- a/Cura/newui/profile.py +++ b/Cura/newui/profile.py @@ -8,6 +8,7 @@ import traceback #Single place to store the defaults, so we have a consistent set of default settings. profileDefaultSettings = { + 'nozzle_size': '0.4', 'layer_height': '0.2', 'wall_thickness': '0.8', 'solid_layer_thickness': '0.6', @@ -59,7 +60,6 @@ preferencesDefaultSettings = { 'machine_width': '205', 'machine_depth': '205', 'machine_height': '200', - 'nozzle_size': '0.4', 'steps_per_e': '0', 'serial_port': 'AUTO', 'serial_baud': '250000', diff --git a/Cura/newui/validators.py b/Cura/newui/validators.py index 79a3d31..6352deb 100644 --- a/Cura/newui/validators.py +++ b/Cura/newui/validators.py @@ -75,7 +75,7 @@ class wallThicknessValidator(): def validate(self): try: wallThickness = float(self.setting.GetValue()) - nozzleSize = float(profile.getPreference('nozzle_size')) + nozzleSize = float(profile.getProfileSetting('nozzle_size')) if wallThickness <= nozzleSize * 0.5: return ERROR, 'Trying to print walls thinner then the half of your nozzle size, this will not produce anything usable' if wallThickness <= nozzleSize * 0.85: @@ -100,7 +100,7 @@ class printSpeedValidator(): def validate(self): try: - nozzleSize = float(profile.getPreference('nozzle_size')) + nozzleSize = float(profile.getProfileSetting('nozzle_size')) layerHeight = float(profile.getProfileSetting('layer_height')) printSpeed = float(profile.getProfileSetting('print_speed')) From 22291be50e1c66b7c75111c41980948b2314c3a0 Mon Sep 17 00:00:00 2001 From: daid Date: Mon, 26 Mar 2012 15:03:26 +0200 Subject: [PATCH 08/33] Added experimental Slic3r option as backend. This does not support all options. --- Cura/fabmetheus_utilities/settings.py | 36 ++---------- Cura/newui/gcodeInterpreter.py | 11 ++++ Cura/newui/preferencesDialog.py | 3 + Cura/newui/profile.py | 38 +++++++++++++ Cura/newui/sliceRun.py | 81 +++++++++++++++++++++++++-- 5 files changed, 135 insertions(+), 34 deletions(-) diff --git a/Cura/fabmetheus_utilities/settings.py b/Cura/fabmetheus_utilities/settings.py index 75556f9..d9573c3 100644 --- a/Cura/fabmetheus_utilities/settings.py +++ b/Cura/fabmetheus_utilities/settings.py @@ -36,43 +36,19 @@ def storedPercentSetting(name): return lambda setting: float(profile.getProfileSetting(name)) / 100 def calculateEdgeWidth(setting): - wallThickness = float(profile.getProfileSetting('wall_thickness')) - nozzleSize = float(profile.getProfileSetting('nozzle_size')) - - if wallThickness < nozzleSize: - return wallThickness - - lineCount = int(wallThickness / nozzleSize) - lineWidth = wallThickness / lineCount - lineWidthAlt = wallThickness / (lineCount + 1) - if lineWidth > nozzleSize * 1.5: - return lineWidthAlt - return lineWidth + return profile.calculateEdgeWidth() def calculateShells(setting): - return calculateShellsImp(float(profile.getProfileSetting('wall_thickness'))) + return profile.calculateLineCount() - 1 def calculateShellsBase(setting): - return calculateShellsImp(float(profile.getProfileSetting('wall_thickness')) + float(profile.getProfileSetting('extra_base_wall_thickness'))) - -def calculateShellsImp(wallThickness): - nozzleSize = float(profile.getProfileSetting('nozzle_size')) + edgeWidth = profile.calculateEdgeWidth() + extraWall = float(profile.getProfileSetting('extra_base_wall_thickness')) - if wallThickness < nozzleSize: - return 0 - - lineCount = int(wallThickness / nozzleSize + 0.0001) - lineWidth = wallThickness / lineCount - lineWidthAlt = wallThickness / (lineCount + 1) - if lineWidth > nozzleSize * 1.5: - return lineCount - return lineCount - 1 + return profile.calculateLineCount() - 1 + int(extraWall / edgeWidth + 0.0001) def calculateSolidLayerCount(setting): - layerHeight = float(profile.getProfileSetting('layer_height')) - solidThickness = float(profile.getProfileSetting('solid_layer_thickness')) - ret = int(math.ceil(solidThickness / layerHeight - 0.0001)) - return ret + return profile.calculateSolidLayerCount() def firstLayerSpeedRatio(setting): bottomSpeed = float(profile.getProfileSetting('bottom_layer_speed')) diff --git a/Cura/newui/gcodeInterpreter.py b/Cura/newui/gcodeInterpreter.py index cd10cdf..bc591cf 100644 --- a/Cura/newui/gcodeInterpreter.py +++ b/Cura/newui/gcodeInterpreter.py @@ -46,6 +46,17 @@ class gcode(): pathType = line[6:].strip() if pathType != "CUSTOM": startCodeDone = True + if ';' in line: + comment = line[line.find(';')+1:].strip() + if comment == 'fill': + pathType = 'FILL' + elif comment == 'perimeter': + pathType = 'WALL-INNER' + elif comment == 'skirt': + pathType = 'SKIRT' + if pathType != "CUSTOM": + startCodeDone = True + line = line[0:line.find(';')] G = self.getCodeInt(line, 'G') if G is not None: if G == 0 or G == 1: #Move diff --git a/Cura/newui/preferencesDialog.py b/Cura/newui/preferencesDialog.py index 493807b..0cf19c7 100644 --- a/Cura/newui/preferencesDialog.py +++ b/Cura/newui/preferencesDialog.py @@ -28,6 +28,9 @@ class preferencesDialog(configBase.configWindowBase): configBase.TitleRow(left, 'Communication settings') c = configBase.SettingRow(left, 'Serial port', 'serial_port', ['AUTO'] + machineCom.serialList(), 'Serial port to use for communication with the printer', type = 'preference') c = configBase.SettingRow(left, 'Baudrate', 'serial_baud', '250000', 'Speed of the serial port communication\nNeeds to match your firmware settings\nCommon values are 250000, 115200, 57600', type = 'preference') + + configBase.TitleRow(left, 'Slicer settings') + c = configBase.SettingRow(left, 'Slicer selection', 'slicer', ['Cura (Skeinforge based)', 'Slic3r'], 'Which slicer to use to slice objects. Usually the Cura engine produces the best results. But Slic3r is developing fast and is faster with slicing.', type = 'preference') self.MakeModal(True) main.Fit() diff --git a/Cura/newui/profile.py b/Cura/newui/profile.py index 481932d..96e56ad 100644 --- a/Cura/newui/profile.py +++ b/Cura/newui/profile.py @@ -5,6 +5,7 @@ import __init__ import ConfigParser import os import traceback +import math #Single place to store the defaults, so we have a consistent set of default settings. profileDefaultSettings = { @@ -63,6 +64,7 @@ preferencesDefaultSettings = { 'steps_per_e': '0', 'serial_port': 'AUTO', 'serial_baud': '250000', + 'slicer': 'Cura (Skeinforge based)', } def getDefaultProfilePath(): @@ -146,3 +148,39 @@ def putPreference(name, value): globalPreferenceParser.add_section('preference') globalPreferenceParser.set('preference', name, str(value)) globalPreferenceParser.write(open(getPreferencePath(), 'w')) + +## Utility functions to calculate common profile values + +def calculateEdgeWidth(): + wallThickness = float(getProfileSetting('wall_thickness')) + nozzleSize = float(getProfileSetting('nozzle_size')) + + if wallThickness < nozzleSize: + return wallThickness + + lineCount = int(wallThickness / nozzleSize) + lineWidth = wallThickness / lineCount + lineWidthAlt = wallThickness / (lineCount + 1) + if lineWidth > nozzleSize * 1.5: + return lineWidthAlt + return lineWidth + +def calculateLineCount(): + wallThickness = float(getProfileSetting('wall_thickness')) + nozzleSize = float(getProfileSetting('nozzle_size')) + + if wallThickness < nozzleSize: + return 1 + + lineCount = int(wallThickness / nozzleSize + 0.0001) + lineWidth = wallThickness / lineCount + lineWidthAlt = wallThickness / (lineCount + 1) + if lineWidth > nozzleSize * 1.5: + return lineCount + 1 + return lineCount + +def calculateSolidLayerCount(): + layerHeight = float(getProfileSetting('layer_height')) + solidThickness = float(getProfileSetting('solid_layer_thickness')) + return int(math.ceil(solidThickness / layerHeight - 0.0001)) + diff --git a/Cura/newui/sliceRun.py b/Cura/newui/sliceRun.py index 2232768..b8c420d 100644 --- a/Cura/newui/sliceRun.py +++ b/Cura/newui/sliceRun.py @@ -3,6 +3,7 @@ from __future__ import absolute_import import platform, os, subprocess, sys from skeinforge_application.skeinforge_utilities import skeinforge_craft +from newui import profile def getPyPyExe(): "Return the path to the pypy executable if we can find it. Else return False" @@ -23,6 +24,25 @@ def getPyPyExe(): return pypyExe return False +def getSlic3rExe(): + "Return the path to the pypy executable if we can find it. Else return False" + if platform.system() == "Windows": + exeName = "slic3r.exe" + slic3rExe = os.path.normpath(os.path.join(os.path.dirname(os.path.abspath(__file__)), "../../Slic3r/bin/slic3r.exe")); + else: + exeName = "slic3r" + slic3rExe = os.path.normpath(os.path.join(os.path.dirname(os.path.abspath(__file__)), "../../Slic3r/bin/slic3r")); + if os.path.exists(slic3rExe): + return slic3rExe + + path = os.environ['PATH'] + paths = path.split(os.pathsep) + for p in paths: + slic3rExe = os.path.join(p, exeName) + if os.path.exists(slic3rExe): + return slic3rExe + return False + def runSlice(fileNames): "Run the slicer on the files. If we are running with PyPy then just do the slicing action. If we are running as Python, try to find pypy." pypyExe = getPyPyExe() @@ -41,7 +61,60 @@ def runSlice(fileNames): subprocess.call([pypyExe, os.path.join(sys.path[0], sys.argv[0]), fileName]) def getSliceCommand(filename): - pypyExe = getPyPyExe() - if pypyExe == False: - pypyExe = sys.executable - return [pypyExe, os.path.join(sys.path[0], os.path.split(sys.argv[0])[1]), filename] + if profile.getPreference('slicer').startswith('Slic3r'): + slic3rExe = getSlic3rExe() + if slic3rExe == False: + return False + cmd = [slic3rExe, + '--output-filename-format', '[input_filename_base]_export.gcode', + '--nozzle-diameter', str(profile.calculateEdgeWidth()), + '--print-center', '%s,%s' % (profile.getProfileSetting('machine_center_x'), profile.getProfileSetting('machine_center_y')), + '--z-offset', '0', + '--gcode-flavor', 'reprap', + '--gcode-comments', + '--filament-diameter', profile.getProfileSetting('filament_diameter'), + '--extrusion-multiplier', profile.getProfileSetting('filament_density'), + '--temperature', profile.getProfileSetting('print_temperature'), + '--travel-speed', profile.getProfileSetting('travel_speed'), + '--perimeter-speed', profile.getProfileSetting('print_speed'), + '--small-perimeter-speed', profile.getProfileSetting('print_speed'), + '--infill-speed', profile.getProfileSetting('print_speed'), + '--solid-infill-speed', profile.getProfileSetting('print_speed'), + '--bridge-speed', profile.getProfileSetting('print_speed'), + '--bottom-layer-speed-ratio', str(float(profile.getProfileSetting('bottom_layer_speed')) / float(profile.getProfileSetting('print_speed'))), + '--layer-height', profile.getProfileSetting('layer_height'), + '--first-layer-height-ratio', '1.0', + '--infill-every-layers', '1', + '--perimeters', str(profile.calculateLineCount()), + '--solid-layers', str(profile.calculateSolidLayerCount()), + '--fill-density', str(float(profile.getProfileSetting('fill_density'))/100), + '--fill-angle', '45', + '--fill-pattern', 'rectilinear', + '--solid-fill-pattern', 'rectilinear', + '--start-gcode', '', + '--end-gcode', '', + '--retract-length', profile.getProfileSetting('retraction_amount'), + '--retract-speed', str(int(float(profile.getProfileSetting('retraction_speed')))), + '--retract-restart-extra', profile.getProfileSetting('retraction_extra'), + '--retract-before-travel', profile.getProfileSetting('retraction_min_travel'), + '--retract-lift', '0', + '--slowdown-below-layer-time', profile.getProfileSetting('cool_min_layer_time'), + '--min-print-speed', profile.getProfileSetting('cool_min_feedrate'), + '--skirts', profile.getProfileSetting('skirt_line_count'), + '--skirt-distance', str(int(float(profile.getProfileSetting('skirt_gap')))), + '--skirt-height', '1', + '--scale', profile.getProfileSetting('model_scale'), + '--rotate', profile.getProfileSetting('model_rotate_base'), + '--duplicate-x', profile.getProfileSetting('model_multiply_x'), + '--duplicate-y', profile.getProfileSetting('model_multiply_y'), + '--duplicate-distance', '10'] + if profile.getProfileSetting('support') != 'None': + cmd.extend(['--support-material']) + cmd.extend([filename]) + return cmd + else: + pypyExe = getPyPyExe() + if pypyExe == False: + pypyExe = sys.executable + return [pypyExe, os.path.join(sys.path[0], os.path.split(sys.argv[0])[1]), filename] + From ad36fa91320ca7767d0990018a7f4dae2bb41031 Mon Sep 17 00:00:00 2001 From: daid Date: Mon, 26 Mar 2012 15:11:08 +0200 Subject: [PATCH 09/33] Extrusion multiply is the inverse of packing density --- Cura/newui/sliceRun.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Cura/newui/sliceRun.py b/Cura/newui/sliceRun.py index b8c420d..b4d30dc 100644 --- a/Cura/newui/sliceRun.py +++ b/Cura/newui/sliceRun.py @@ -73,7 +73,7 @@ def getSliceCommand(filename): '--gcode-flavor', 'reprap', '--gcode-comments', '--filament-diameter', profile.getProfileSetting('filament_diameter'), - '--extrusion-multiplier', profile.getProfileSetting('filament_density'), + '--extrusion-multiplier', str(1.0 / float(profile.getProfileSetting('filament_density'))), '--temperature', profile.getProfileSetting('print_temperature'), '--travel-speed', profile.getProfileSetting('travel_speed'), '--perimeter-speed', profile.getProfileSetting('print_speed'), From 2cd4ddb67c24cfd1f52c691fd462fa38dbb4ecd3 Mon Sep 17 00:00:00 2001 From: daid Date: Mon, 26 Mar 2012 17:14:31 +0200 Subject: [PATCH 10/33] Modified gcodeInterperter to use an object for the path parts, instead of a dict. Tiny bit faster, and cleaner code. --- Cura/newui/gcodeInterpreter.py | 21 +++++++++++++++------ Cura/newui/preview3d.py | 34 +++++++++++++++++----------------- 2 files changed, 32 insertions(+), 23 deletions(-) diff --git a/Cura/newui/gcodeInterpreter.py b/Cura/newui/gcodeInterpreter.py index bc591cf..5424cfe 100644 --- a/Cura/newui/gcodeInterpreter.py +++ b/Cura/newui/gcodeInterpreter.py @@ -9,6 +9,13 @@ import os from newui import util3d +class gcodePath(): + def __init__(self, newType, pathType, layerNr, startPoint): + self.type = newType + self.pathType = pathType + self.list = [startPoint] + self.layerNr = layerNr + class gcode(): def __init__(self): self.regMatch = {} @@ -35,8 +42,9 @@ class gcode(): pathType = 'CUSTOM'; layerNr = 0; #Note layer 0 will be the start code. startCodeDone = False - currentPath = {'type': 'move', 'pathType': pathType, 'list': [pos.copy()], 'layerNr': layerNr} - currentPath['list'][-1].e = totalExtrusion + currentPath = gcodePath('move', pathType, layerNr, pos.copy()) + currentPath.list[0].e = totalExtrusion + pathList.append(currentPath) for line in gcodeFile: if filePos != gcodeFile.tell(): filePos = gcodeFile.tell() @@ -105,11 +113,12 @@ class gcode(): currentE += e if totalExtrusion > maxExtrusion: maxExtrusion = totalExtrusion - if currentPath['type'] != moveType or currentPath['pathType'] != pathType: + if currentPath.type != moveType or currentPath.pathType != pathType: + currentPath = gcodePath(moveType, pathType, layerNr, currentPath.list[-1]) pathList.append(currentPath) - currentPath = {'type': moveType, 'pathType': pathType, 'list': [currentPath['list'][-1]], 'layerNr': layerNr} - currentPath['list'].append(pos.copy()) - currentPath['list'][-1].e = totalExtrusion + newPos = pos.copy() + newPos.e = totalExtrusion + currentPath.list.append(newPos) elif G == 20: #Units are inches scale = 25.4 elif G == 21: #Units are mm diff --git a/Cura/newui/preview3d.py b/Cura/newui/preview3d.py index 679f05b..e9421df 100644 --- a/Cura/newui/preview3d.py +++ b/Cura/newui/preview3d.py @@ -444,35 +444,35 @@ class PreviewGLCanvas(glcanvas.GLCanvas): curLayerNum = 0 for path in self.parent.gcode.pathList: - if path['layerNr'] != curLayerNum: + if path.layerNr != curLayerNum: prevLayerZ = curLayerZ - curLayerZ = path['list'][1].z - curLayerNum = path['layerNr'] + curLayerZ = path.list[1].z + curLayerNum = path.layerNr layerThickness = curLayerZ - prevLayerZ c = 1.0 - if path['layerNr'] != self.parent.layerSpin.GetValue(): - if path['layerNr'] < self.parent.layerSpin.GetValue(): - c = 0.9 - (self.parent.layerSpin.GetValue() - path['layerNr']) * 0.1 + if path.layerNr != self.parent.layerSpin.GetValue(): + if path.layerNr < self.parent.layerSpin.GetValue(): + c = 0.9 - (self.parent.layerSpin.GetValue() - path.layerNr) * 0.1 if c < 0.4: c = 0.4 else: break - if path['type'] == 'move': + if path.type == 'move': glColor3f(0,0,c) - if path['type'] == 'extrude': - if path['pathType'] == 'FILL': + if path.type == 'extrude': + if path.pathType == 'FILL': glColor3f(c/2,c/2,0) - elif path['pathType'] == 'WALL-INNER': + elif path.pathType == 'WALL-INNER': glColor3f(0,c,0) else: glColor3f(c,0,0) - if path['type'] == 'retract': + if path.type == 'retract': glColor3f(0,c,c) - if c > 0.4 and path['type'] == 'extrude': - for i in xrange(0, len(path['list'])-1): - v0 = path['list'][i] - v1 = path['list'][i+1] + if c > 0.4 and path.type == 'extrude': + for i in xrange(0, len(path.list)-1): + v0 = path.list[i] + v1 = path.list[i+1] # Calculate line width from ePerDistance (needs layer thickness and filament diameter) dist = (v0 - v1).vsize() @@ -488,7 +488,7 @@ class PreviewGLCanvas(glcanvas.GLCanvas): v1 = v1 - normal * lineWidth glBegin(GL_QUADS) - if path['pathType'] == 'FILL': #Remove depth buffer fighting on infill/wall overlap + if path.pathType == 'FILL': #Remove depth buffer fighting on infill/wall overlap glVertex3f(v0.x, v0.y, v0.z - 0.02) glVertex3f(v1.x, v1.y, v1.z - 0.02) glVertex3f(v3.x, v3.y, v3.z - 0.02) @@ -511,7 +511,7 @@ class PreviewGLCanvas(glcanvas.GLCanvas): # glEnd() else: glBegin(GL_LINE_STRIP) - for v in path['list']: + for v in path.list: glVertex3f(v.x, v.y, v.z) glEnd() glEndList() From 5072e61c08a4ff0b3057fc5be0c8ffc6033ded63 Mon Sep 17 00:00:00 2001 From: Russell Neches Date: Mon, 26 Mar 2012 14:15:15 -0700 Subject: [PATCH 11/33] fixed missing import for sys package --- Cura/newui/machineCom.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Cura/newui/machineCom.py b/Cura/newui/machineCom.py index 5f6974d..f4dfee6 100644 --- a/Cura/newui/machineCom.py +++ b/Cura/newui/machineCom.py @@ -1,7 +1,7 @@ from __future__ import absolute_import import __init__ -import os, glob, wx, threading +import os, glob, wx, threading, sys from serial import Serial From 168e748724a2d7333da880549af23208506610fb Mon Sep 17 00:00:00 2001 From: daid Date: Tue, 27 Mar 2012 13:48:40 +0200 Subject: [PATCH 12/33] Add start/end code to Slic3r engine. Fix for SF engine crash --- .../alterations/end.gcode | 0 .../alterations/example_cool_end.gcode | 0 .../alterations/example_cool_start.gcode | 0 .../alterations/example_end.gcode | 0 .../alterations/example_home.gcode | 0 .../alterations/example_replace.csv | 0 .../alterations/example_replace_M108.csv | 0 .../alterations/example_start.gcode | 0 .../alterations/example_support_end.gcode | 0 .../alterations/example_support_start.gcode | 0 .../alterations/start.gcode | 0 Cura/fabmetheus_utilities/settings.py | 27 ++----------- Cura/newui/alterationPanel.py | 9 ++--- Cura/newui/gcodeInterpreter.py | 3 ++ Cura/newui/profile.py | 39 ++++++++++++++++++- Cura/newui/sliceRun.py | 4 +- 16 files changed, 51 insertions(+), 31 deletions(-) rename Cura/{skeinforge_application => }/alterations/end.gcode (100%) rename Cura/{skeinforge_application => }/alterations/example_cool_end.gcode (100%) rename Cura/{skeinforge_application => }/alterations/example_cool_start.gcode (100%) rename Cura/{skeinforge_application => }/alterations/example_end.gcode (100%) rename Cura/{skeinforge_application => }/alterations/example_home.gcode (100%) rename Cura/{skeinforge_application => }/alterations/example_replace.csv (100%) rename Cura/{skeinforge_application => }/alterations/example_replace_M108.csv (100%) rename Cura/{skeinforge_application => }/alterations/example_start.gcode (100%) rename Cura/{skeinforge_application => }/alterations/example_support_end.gcode (100%) rename Cura/{skeinforge_application => }/alterations/example_support_start.gcode (100%) rename Cura/{skeinforge_application => }/alterations/start.gcode (100%) diff --git a/Cura/skeinforge_application/alterations/end.gcode b/Cura/alterations/end.gcode similarity index 100% rename from Cura/skeinforge_application/alterations/end.gcode rename to Cura/alterations/end.gcode diff --git a/Cura/skeinforge_application/alterations/example_cool_end.gcode b/Cura/alterations/example_cool_end.gcode similarity index 100% rename from Cura/skeinforge_application/alterations/example_cool_end.gcode rename to Cura/alterations/example_cool_end.gcode diff --git a/Cura/skeinforge_application/alterations/example_cool_start.gcode b/Cura/alterations/example_cool_start.gcode similarity index 100% rename from Cura/skeinforge_application/alterations/example_cool_start.gcode rename to Cura/alterations/example_cool_start.gcode diff --git a/Cura/skeinforge_application/alterations/example_end.gcode b/Cura/alterations/example_end.gcode similarity index 100% rename from Cura/skeinforge_application/alterations/example_end.gcode rename to Cura/alterations/example_end.gcode diff --git a/Cura/skeinforge_application/alterations/example_home.gcode b/Cura/alterations/example_home.gcode similarity index 100% rename from Cura/skeinforge_application/alterations/example_home.gcode rename to Cura/alterations/example_home.gcode diff --git a/Cura/skeinforge_application/alterations/example_replace.csv b/Cura/alterations/example_replace.csv similarity index 100% rename from Cura/skeinforge_application/alterations/example_replace.csv rename to Cura/alterations/example_replace.csv diff --git a/Cura/skeinforge_application/alterations/example_replace_M108.csv b/Cura/alterations/example_replace_M108.csv similarity index 100% rename from Cura/skeinforge_application/alterations/example_replace_M108.csv rename to Cura/alterations/example_replace_M108.csv diff --git a/Cura/skeinforge_application/alterations/example_start.gcode b/Cura/alterations/example_start.gcode similarity index 100% rename from Cura/skeinforge_application/alterations/example_start.gcode rename to Cura/alterations/example_start.gcode diff --git a/Cura/skeinforge_application/alterations/example_support_end.gcode b/Cura/alterations/example_support_end.gcode similarity index 100% rename from Cura/skeinforge_application/alterations/example_support_end.gcode rename to Cura/alterations/example_support_end.gcode diff --git a/Cura/skeinforge_application/alterations/example_support_start.gcode b/Cura/alterations/example_support_start.gcode similarity index 100% rename from Cura/skeinforge_application/alterations/example_support_start.gcode rename to Cura/alterations/example_support_start.gcode diff --git a/Cura/skeinforge_application/alterations/start.gcode b/Cura/alterations/start.gcode similarity index 100% rename from Cura/skeinforge_application/alterations/start.gcode rename to Cura/alterations/start.gcode diff --git a/Cura/fabmetheus_utilities/settings.py b/Cura/fabmetheus_utilities/settings.py index d9573c3..567b5a8 100644 --- a/Cura/fabmetheus_utilities/settings.py +++ b/Cura/fabmetheus_utilities/settings.py @@ -105,7 +105,7 @@ def getProfileInformation(): },'inset': { 'Add_Custom_Code_for_Temperature_Reading': DEFSET, 'Infill_in_Direction_of_Bridge': "True", - 'Infill_Width': getProfileSetting("nozzle_size"), + 'Infill_Width': storedSetting("nozzle_size"), 'Loop_Order_Choice': DEFSET, 'Overlap_Removal_Width_over_Perimeter_Width_ratio': DEFSET, 'Turn_Extruder_Heater_Off_at_Shut_Down': DEFSET, @@ -133,7 +133,7 @@ def getProfileInformation(): 'Line': ifSettingIs('infill_type', 'Line'), 'Infill_Perimeter_Overlap_ratio': storedPercentSetting('fill_overlap'), 'Infill_Solidity_ratio': storedPercentSetting('fill_density'), - 'Infill_Width': getProfileSetting("nozzle_size"), + 'Infill_Width': storedSetting("nozzle_size"), 'Sharpest_Angle_degrees': DEFSET, 'Solid_Surface_Thickness_layers': calculateSolidLayerCount, 'Start_From_Choice': DEFSET, @@ -410,27 +410,8 @@ def getAlterationFileLines(fileName): def getAlterationLines(fileName): return archive.getTextLines(getAlterationFile(fileName)) -def getAlterationFile(fileName, allowMagicPrefix = True): - "Get the file from the fileName or the lowercase fileName in the alterations directories." - #print ('getAlterationFile:', fileName) - prefix = '' - if allowMagicPrefix: - if fileName == 'start.gcode': - #For the start code, hack the temperature and the steps per E value into it. So the temperature is reached before the start code extrusion. - #We also set our steps per E here, if configured. - eSteps = float(profile.getPreference('steps_per_e')) - if eSteps > 0: - prefix += 'M92 E'+str(eSteps)+'\n' - temp = float(profile.getProfileSetting('print_temperature')) - if temp > 0: - prefix += 'M109 S'+str(temp)+'\n' - elif fileName == 'replace.csv': - prefix = 'M101\nM103\n' - alterationsDirectory = archive.getSkeinforgePath('alterations') - fullFilename = os.path.join(alterationsDirectory, fileName) - if os.path.isfile(fullFilename): - return prefix + archive.getFileText( fullFilename ) - return prefix +def getAlterationFile(fileName): + return profile.getAlterationFileContents(fileName) #################################### ## Configuration settings classes ## diff --git a/Cura/newui/alterationPanel.py b/Cura/newui/alterationPanel.py index 453cdd4..c25a1dd 100644 --- a/Cura/newui/alterationPanel.py +++ b/Cura/newui/alterationPanel.py @@ -1,14 +1,13 @@ import wx import sys,math,threading,os -from fabmetheus_utilities import settings -from fabmetheus_utilities import archive +from newui import profile class alterationPanel(wx.Panel): def __init__(self, parent): wx.Panel.__init__(self, parent,-1) - self.alterationFileList = ['start.gcode', 'end.gcode', 'cool_start.gcode', 'cool_end.gcode'] + self.alterationFileList = ['start.gcode', 'end.gcode', 'cool_start.gcode', 'cool_end.gcode', 'replace.csv'] self.currentFile = None self.textArea = wx.TextCtrl(self, style=wx.TE_MULTILINE|wx.TE_DONTWRAP|wx.TE_PROCESS_TAB) @@ -32,11 +31,11 @@ class alterationPanel(wx.Panel): self.currentFile = self.list.GetSelection() def loadFile(self, filename): - self.textArea.SetValue(unicode(settings.getAlterationFile(filename, False), "utf-8")) + self.textArea.SetValue(unicode(profile.getAlterationFileContents(filename, False), "utf-8")) def OnFocusLost(self, e): if self.currentFile == self.list.GetSelection(): - filename = os.path.join(archive.getSkeinforgePath('alterations'), self.alterationFileList[self.list.GetSelection()]) + filename = profile.getAlterationFilePath(self.alterationFileList[self.list.GetSelection()]) f = open(filename, "wb") f.write(self.textArea.GetValue().encode("utf-8")) f.close() diff --git a/Cura/newui/gcodeInterpreter.py b/Cura/newui/gcodeInterpreter.py index 5424cfe..334d475 100644 --- a/Cura/newui/gcodeInterpreter.py +++ b/Cura/newui/gcodeInterpreter.py @@ -54,7 +54,9 @@ class gcode(): pathType = line[6:].strip() if pathType != "CUSTOM": startCodeDone = True + if ';' in line: + #Slic3r GCode comment parser comment = line[line.find(';')+1:].strip() if comment == 'fill': pathType = 'FILL' @@ -65,6 +67,7 @@ class gcode(): if pathType != "CUSTOM": startCodeDone = True line = line[0:line.find(';')] + G = self.getCodeInt(line, 'G') if G is not None: if G == 0 or G == 1: #Move diff --git a/Cura/newui/profile.py b/Cura/newui/profile.py index 96e56ad..d523962 100644 --- a/Cura/newui/profile.py +++ b/Cura/newui/profile.py @@ -7,6 +7,10 @@ import os import traceback import math +######################################################### +## Profile and preferences functions +######################################################### + #Single place to store the defaults, so we have a consistent set of default settings. profileDefaultSettings = { 'nozzle_size': '0.4', @@ -149,8 +153,9 @@ def putPreference(name, value): globalPreferenceParser.set('preference', name, str(value)) globalPreferenceParser.write(open(getPreferencePath(), 'w')) +######################################################### ## Utility functions to calculate common profile values - +######################################################### def calculateEdgeWidth(): wallThickness = float(getProfileSetting('wall_thickness')) nozzleSize = float(getProfileSetting('nozzle_size')) @@ -184,3 +189,35 @@ def calculateSolidLayerCount(): solidThickness = float(getProfileSetting('solid_layer_thickness')) return int(math.ceil(solidThickness / layerHeight - 0.0001)) +######################################################### +## Alteration file functions +######################################################### +def getCuraBasePath(): + return os.path.abspath(os.path.join(os.path.dirname(os.path.abspath(__file__)), "..")) + +def getAlterationFilePath(filename): + return os.path.join(getCuraBasePath(), "alterations", filename) + +def getAlterationFileContents(filename, allowMagicPrefix = True): + "Get the file from the fileName or the lowercase fileName in the alterations directories." + prefix = '' + if allowMagicPrefix: + if filename == 'start.gcode': + #For the start code, hack the temperature and the steps per E value into it. So the temperature is reached before the start code extrusion. + #We also set our steps per E here, if configured. + eSteps = float(getPreference('steps_per_e')) + if eSteps > 0: + prefix += 'M92 E'+str(eSteps)+'\n' + temp = float(getProfileSetting('print_temperature')) + if temp > 0: + prefix += 'M109 S'+str(temp)+'\n' + elif filename == 'replace.csv': + prefix = 'M101\nM103\n' + fullFilename = getAlterationFilePath(filename) + if os.path.isfile(fullFilename): + file = open(fullFilename, "r") + fileText = file.read() + file.close() + return prefix + fileText + return prefix + diff --git a/Cura/newui/sliceRun.py b/Cura/newui/sliceRun.py index b4d30dc..d81f4aa 100644 --- a/Cura/newui/sliceRun.py +++ b/Cura/newui/sliceRun.py @@ -91,8 +91,8 @@ def getSliceCommand(filename): '--fill-angle', '45', '--fill-pattern', 'rectilinear', '--solid-fill-pattern', 'rectilinear', - '--start-gcode', '', - '--end-gcode', '', + '--start-gcode', profile.getAlterationFilePath('start.gcode'), + '--end-gcode', profile.getAlterationFilePath('end.gcode'), '--retract-length', profile.getProfileSetting('retraction_amount'), '--retract-speed', str(int(float(profile.getProfileSetting('retraction_speed')))), '--retract-restart-extra', profile.getProfileSetting('retraction_extra'), From 8518df4a8ed03e80d1048c78ea1c37a0373ae13d Mon Sep 17 00:00:00 2001 From: daid Date: Tue, 27 Mar 2012 13:49:15 +0200 Subject: [PATCH 13/33] Cleanup of unused alteration files --- Cura/alterations/example_cool_end.gcode | 2 -- Cura/alterations/example_cool_start.gcode | 2 -- Cura/alterations/example_end.gcode | 2 -- Cura/alterations/example_home.gcode | 5 ----- Cura/alterations/example_replace.csv | 3 --- Cura/alterations/example_replace_M108.csv | 2 -- Cura/alterations/example_start.gcode | 3 --- Cura/alterations/example_support_end.gcode | 2 -- Cura/alterations/example_support_start.gcode | 2 -- 9 files changed, 23 deletions(-) delete mode 100644 Cura/alterations/example_cool_end.gcode delete mode 100644 Cura/alterations/example_cool_start.gcode delete mode 100644 Cura/alterations/example_end.gcode delete mode 100644 Cura/alterations/example_home.gcode delete mode 100644 Cura/alterations/example_replace.csv delete mode 100644 Cura/alterations/example_replace_M108.csv delete mode 100644 Cura/alterations/example_start.gcode delete mode 100644 Cura/alterations/example_support_end.gcode delete mode 100644 Cura/alterations/example_support_start.gcode diff --git a/Cura/alterations/example_cool_end.gcode b/Cura/alterations/example_cool_end.gcode deleted file mode 100644 index 730c606..0000000 --- a/Cura/alterations/example_cool_end.gcode +++ /dev/null @@ -1,2 +0,0 @@ -(this is a sample cool end file, it must be renamed cool_end.gcode for skeinforge to recognize it) -M107 diff --git a/Cura/alterations/example_cool_start.gcode b/Cura/alterations/example_cool_start.gcode deleted file mode 100644 index 90285c7..0000000 --- a/Cura/alterations/example_cool_start.gcode +++ /dev/null @@ -1,2 +0,0 @@ -(this is a sample cool start file, it must be renamed cool_start.gcode for skeinforge to recognize it) -M106 diff --git a/Cura/alterations/example_end.gcode b/Cura/alterations/example_end.gcode deleted file mode 100644 index 86dc43b..0000000 --- a/Cura/alterations/example_end.gcode +++ /dev/null @@ -1,2 +0,0 @@ -(this is a sample gcode end file, it must be renamed end.gcode for skeinforge to recognize it) -M2 diff --git a/Cura/alterations/example_home.gcode b/Cura/alterations/example_home.gcode deleted file mode 100644 index a089a31..0000000 --- a/Cura/alterations/example_home.gcode +++ /dev/null @@ -1,5 +0,0 @@ -(this is a sample gcode homing file, it must be renamed homing.gcode for skeinforge to recognize it) -G1 X-250.0 -G92 X0 ;set x 0 -G1 Y-250.0 -G92 Y0 ;set y 0 diff --git a/Cura/alterations/example_replace.csv b/Cura/alterations/example_replace.csv deleted file mode 100644 index dbcbd1b..0000000 --- a/Cura/alterations/example_replace.csv +++ /dev/null @@ -1,3 +0,0 @@ -M101 -M103 - diff --git a/Cura/alterations/example_replace_M108.csv b/Cura/alterations/example_replace_M108.csv deleted file mode 100644 index 4cac815..0000000 --- a/Cura/alterations/example_replace_M108.csv +++ /dev/null @@ -1,2 +0,0 @@ -M108 S M108 P -M113 S M108 S diff --git a/Cura/alterations/example_start.gcode b/Cura/alterations/example_start.gcode deleted file mode 100644 index eeafa85..0000000 --- a/Cura/alterations/example_start.gcode +++ /dev/null @@ -1,3 +0,0 @@ -(This is a sample gcode start file, it must be renamed start.gcode for skeinforge to recognize it. Also, to remove confusion this comment line should be deleted.) -G28 -M140 S diff --git a/Cura/alterations/example_support_end.gcode b/Cura/alterations/example_support_end.gcode deleted file mode 100644 index 63315e9..0000000 --- a/Cura/alterations/example_support_end.gcode +++ /dev/null @@ -1,2 +0,0 @@ -(this is a sample support end file, it must be renamed support_end.gcode for skeinforge to recognize it) - diff --git a/Cura/alterations/example_support_start.gcode b/Cura/alterations/example_support_start.gcode deleted file mode 100644 index 04392f0..0000000 --- a/Cura/alterations/example_support_start.gcode +++ /dev/null @@ -1,2 +0,0 @@ -(this is a sample support start file, it must be renamed support_start.gcode for skeinforge to recognize it) - From 09d33bb0cd7665cb8748d000e99e2a6d13a97b8e Mon Sep 17 00:00:00 2001 From: daid Date: Tue, 27 Mar 2012 16:21:53 +0200 Subject: [PATCH 14/33] Add uppercase STL and HEX to file dialog filters for linux/MacOS --- Cura/newui/mainWindow.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Cura/newui/mainWindow.py b/Cura/newui/mainWindow.py index aecb1c5..d87c384 100644 --- a/Cura/newui/mainWindow.py +++ b/Cura/newui/mainWindow.py @@ -223,7 +223,7 @@ class mainWindow(configBase.configWindowBase): def OnCustomFirmware(self, e): dlg=wx.FileDialog(self, "Open firmware to upload", self.lastPath, style=wx.FD_OPEN|wx.FD_FILE_MUST_EXIST) - dlg.SetWildcard("HEX file (*.hex)|*.hex") + dlg.SetWildcard("HEX file (*.hex)|*.hex;*.HEX") if dlg.ShowModal() == wx.ID_OK: filename = dlg.GetPath() if not(os.path.exists(filename)): @@ -237,7 +237,7 @@ class mainWindow(configBase.configWindowBase): def OnLoadModel(self, e): dlg=wx.FileDialog(self, "Open file to print", self.lastPath, style=wx.FD_OPEN|wx.FD_FILE_MUST_EXIST) - dlg.SetWildcard("STL files (*.stl)|*.stl") + dlg.SetWildcard("STL files (*.stl)|*.stl;*.STL") if dlg.ShowModal() == wx.ID_OK: self.filename=dlg.GetPath() profile.putPreference('lastFile', self.filename) From 8b3b3e5076d2c69de0644037ff2e790ed9e5eb1a Mon Sep 17 00:00:00 2001 From: daid Date: Tue, 27 Mar 2012 17:20:30 +0200 Subject: [PATCH 15/33] Move SF into its own directory, to seperate SF and Cura. Rename newui to gui. --- Cura/cura.py | 6 ++--- .../fabmetheus_utilities/__init__.py | 0 .../fabmetheus_utilities/archive.py | 0 .../fabmetheus_utilities/euclidean.py | 0 .../fabmetheus_tools/__init__.py | 0 .../fabmetheus_tools/alphabetize.py | 0 .../fabmetheus_tools/fabmetheus_interpret.py | 0 .../interpret_plugins/__init__.py | 0 .../fabmetheus_tools/interpret_plugins/csv.py | 0 .../fabmetheus_tools/interpret_plugins/gts.py | 0 .../fabmetheus_tools/interpret_plugins/obj.py | 0 .../fabmetheus_tools/interpret_plugins/slc.py | 0 .../fabmetheus_tools/interpret_plugins/stl.py | 0 .../fabmetheus_tools/interpret_plugins/svg.py | 0 .../fabmetheus_tools/prepare.py | 0 .../fabmetheus_tools/wikifier.py | 0 .../fabmetheus_utilities/gcodec.py | 0 .../fabmetheus_utilities/geometry/__init__.py | 0 .../geometry/creation/__init__.py | 0 .../geometry/creation/_drill.py | 0 .../geometry/creation/_svg.py | 0 .../geometry/creation/circle.py | 0 .../geometry/creation/concatenate.py | 0 .../geometry/creation/extrude.py | 0 .../geometry/creation/gear.py | 0 .../geometry/creation/grid.py | 0 .../geometry/creation/heightmap.py | 0 .../geometry/creation/lathe.py | 0 .../geometry/creation/line.py | 0 .../geometry/creation/linear_bearing_cage.py | 0 .../geometry/creation/lineation.py | 0 .../geometry/creation/mechaslab.py | 0 .../geometry/creation/peg.py | 0 .../geometry/creation/polygon.py | 0 .../geometry/creation/shaft.py | 0 .../geometry/creation/solid.py | 0 .../geometry/creation/sponge_slice.py | 0 .../geometry/creation/square.py | 0 .../geometry/creation/teardrop.py | 0 .../geometry/creation/text.py | 0 .../geometry/geometry_tools/__init__.py | 0 .../geometry/geometry_tools/dictionary.py | 0 .../geometry/geometry_tools/face.py | 0 .../geometry/geometry_tools/path.py | 0 .../geometry_tools/path_elements/__init__.py | 0 .../geometry_tools/path_elements/arc.py | 0 .../geometry_tools/path_elements/cubic.py | 0 .../geometry_tools/path_elements/quadratic.py | 0 .../geometry/geometry_tools/vertex.py | 0 .../geometry/geometry_utilities/__init__.py | 0 .../geometry_utilities/boolean_geometry.py | 0 .../geometry_utilities/boolean_solid.py | 0 .../geometry/geometry_utilities/evaluate.py | 0 .../evaluate_elements/__init__.py | 0 .../evaluate_elements/creation.py | 0 .../evaluate_elements/document.py | 0 .../evaluate_elements/setting.py | 0 .../evaluate_enumerables/__init__.py | 0 .../dictionary_attribute.py | 0 .../evaluate_enumerables/list_attribute.py | 0 .../evaluate_enumerables/string_attribute.py | 0 .../evaluate_fundamentals/__init__.py | 0 .../evaluate_fundamentals/_math.py | 0 .../evaluate_fundamentals/euclid.py | 0 .../evaluate_fundamentals/measure.py | 0 .../evaluate_fundamentals/print.py | 0 .../geometry/geometry_utilities/example.csv | 0 .../geometry/geometry_utilities/matrix.py | 0 .../geometry/manipulation_matrix/__init__.py | 0 .../geometry/manipulation_matrix/_scale.py | 0 .../geometry/manipulation_matrix/rotate.py | 0 .../geometry/manipulation_matrix/transform.py | 0 .../geometry/manipulation_matrix/translate.py | 0 .../geometry/manipulation_meta/__init__.py | 0 .../geometry/manipulation_meta/_array.py | 0 .../geometry/manipulation_meta/_carve.py | 0 .../geometry/manipulation_meta/_copy.py | 0 .../geometry/manipulation_meta/disjoin.py | 0 .../geometry/manipulation_meta/import.py | 0 .../geometry/manipulation_meta/write.py | 0 .../geometry/manipulation_paths/__init__.py | 0 .../geometry/manipulation_paths/bevel.py | 0 .../geometry/manipulation_paths/convex.py | 0 .../geometry/manipulation_paths/outline.py | 0 .../geometry/manipulation_paths/overhang.py | 0 .../geometry/manipulation_paths/round.py | 0 .../geometry/manipulation_paths/segment.py | 0 .../geometry/manipulation_paths/wedge.py | 0 .../geometry/manipulation_shapes/__init__.py | 0 .../geometry/manipulation_shapes/_bottom.py | 0 .../geometry/manipulation_shapes/_inset.py | 0 .../geometry/manipulation_shapes/_outset.py | 0 .../geometry/manipulation_shapes/equation.py | 0 .../geometry/manipulation_shapes/flip.py | 0 .../geometry/manipulation_shapes/mirror.py | 0 .../geometry/solids/__init__.py | 0 .../geometry/solids/cube.py | 0 .../geometry/solids/cylinder.py | 0 .../geometry/solids/difference.py | 0 .../geometry/solids/group.py | 0 .../geometry/solids/intersection.py | 0 .../geometry/solids/sphere.py | 0 .../geometry/solids/triangle_mesh.py | 0 .../geometry/solids/union.py | 0 .../geometry/statements/__init__.py | 0 .../geometry/statements/_print.py | 0 .../geometry/statements/class.py | 0 .../geometry/statements/elif.py | 0 .../geometry/statements/else.py | 0 .../geometry/statements/for.py | 0 .../geometry/statements/function.py | 0 .../geometry/statements/if.py | 0 .../geometry/statements/return.py | 0 .../geometry/statements/statement.py | 0 .../geometry/statements/while.py | 0 .../geometry_plugins/__init__.py | 0 .../geometry_plugins/creation/__init__.py | 0 .../manipulation_matrix/__init__.py | 0 .../manipulation_meta/__init__.py | 0 .../manipulation_paths/__init__.py | 0 .../manipulation_shapes/__init__.py | 0 .../fabmetheus_utilities/intercircle.py | 0 .../fabmetheus_utilities/settings.py | 2 +- .../fabmetheus_utilities/svg_reader.py | 0 .../fabmetheus_utilities/svg_writer.py | 0 .../templates/canvas_template.svg | 0 .../templates/layer_template.svg | 0 .../fabmetheus_utilities/vector3.py | 0 .../fabmetheus_utilities/vector3index.py | 0 .../fabmetheus_utilities/version.txt | 0 .../fabmetheus_utilities/xml_simple_reader.py | 0 .../fabmetheus_utilities/xml_simple_writer.py | 0 .../skeinforge_application/__init__.py | 0 .../skeinforge_plugins/__init__.py | 0 .../skeinforge_plugins/analyze.py | 0 .../analyze_plugins/__init__.py | 0 .../skeinforge_plugins/craft.py | 0 .../craft_plugins/__init__.py | 0 .../craft_plugins/alteration.py | 0 .../craft_plugins/bottom.py | 0 .../skeinforge_plugins/craft_plugins/carve.py | 0 .../craft_plugins/chamber.py | 0 .../skeinforge_plugins/craft_plugins/chop.py | 0 .../craft_plugins/cleave.py | 0 .../skeinforge_plugins/craft_plugins/clip.py | 0 .../skeinforge_plugins/craft_plugins/coil.py | 0 .../skeinforge_plugins/craft_plugins/comb.py | 0 .../skeinforge_plugins/craft_plugins/cool.py | 0 .../craft_plugins/dimension.py | 0 .../skeinforge_plugins/craft_plugins/drill.py | 0 .../craft_plugins/dwindle.py | 0 .../craft_plugins/export.py | 0 .../craft_plugins/export_plugins/__init__.py | 0 .../export_plugins/binary_16_byte.py | 0 .../export_plugins/gcode_step.py | 0 .../export_plugins/gcode_time_segment.py | 0 .../export_plugins/static_plugins/__init__.py | 0 .../static_plugins/gcode_small.py | 0 .../skeinforge_plugins/craft_plugins/feed.py | 0 .../skeinforge_plugins/craft_plugins/fill.py | 0 .../craft_plugins/fillet.py | 0 .../skeinforge_plugins/craft_plugins/flow.py | 0 .../skeinforge_plugins/craft_plugins/home.py | 0 .../skeinforge_plugins/craft_plugins/hop.py | 0 .../skeinforge_plugins/craft_plugins/inset.py | 0 .../craft_plugins/jitter.py | 0 .../skeinforge_plugins/craft_plugins/joris.py | 0 .../skeinforge_plugins/craft_plugins/lash.py | 0 .../skeinforge_plugins/craft_plugins/lift.py | 0 .../skeinforge_plugins/craft_plugins/limit.py | 0 .../skeinforge_plugins/craft_plugins/mill.py | 0 .../craft_plugins/multiply.py | 0 .../craft_plugins/oozebane.py | 0 .../craft_plugins/outset.py | 0 .../craft_plugins/preface.py | 0 .../skeinforge_plugins/craft_plugins/raft.py | 0 .../skeinforge_plugins/craft_plugins/scale.py | 0 .../skeinforge_plugins/craft_plugins/skin.py | 0 .../skeinforge_plugins/craft_plugins/skirt.py | 0 .../craft_plugins/smooth.py | 0 .../skeinforge_plugins/craft_plugins/speed.py | 0 .../craft_plugins/splodge.py | 0 .../craft_plugins/stretch.py | 0 .../craft_plugins/temperature.py | 0 .../skeinforge_plugins/craft_plugins/tower.py | 0 .../craft_plugins/unpause.py | 0 .../craft_plugins/whittle.py | 0 .../skeinforge_plugins/craft_plugins/widen.py | 0 .../skeinforge_plugins/craft_plugins/wipe.py | 0 .../skeinforge_plugins/help.py | 0 .../skeinforge_plugins/meta.py | 0 .../meta_plugins/__init__.py | 0 .../meta_plugins/description.py | 0 .../meta_plugins/polyfile.py | 0 .../skeinforge_plugins/profile.py | 0 .../profile_plugins/__init__.py | 0 .../profile_plugins/cutting.py | 0 .../profile_plugins/extrusion.py | 0 .../profile_plugins/milling.py | 0 .../profile_plugins/winding.py | 0 .../skeinforge_utilities/__init__.py | 0 .../skeinforge_analyze.py | 0 .../skeinforge_utilities/skeinforge_craft.py | 0 .../skeinforge_utilities/skeinforge_help.py | 0 .../skeinforge_utilities/skeinforge_meta.py | 0 .../skeinforge_polyfile.py | 0 .../skeinforge_profile.py | 0 Cura/{newui => gui}/__init__.py | 0 Cura/{newui => gui}/advancedConfig.py | 10 ++++----- Cura/{newui => gui}/alterationPanel.py | 2 +- Cura/{newui => gui}/configBase.py | 4 ++-- Cura/{newui => gui}/configWizard.py | 4 ++-- Cura/{newui => gui}/gcodeInterpreter.py | 2 +- Cura/{newui => gui}/machineCom.py | 2 +- Cura/{newui => gui}/mainWindow.py | 22 +++++++++---------- Cura/{newui => gui}/preferencesDialog.py | 6 ++--- Cura/{newui => gui}/preview3d.py | 6 ++--- Cura/{newui => gui}/printWindow.py | 0 Cura/{newui => gui}/profile.py | 0 Cura/{newui => gui}/sliceProgessPanel.py | 3 ++- Cura/{newui => gui}/sliceRun.py | 6 ++--- Cura/{newui => gui}/util3d.py | 0 Cura/{newui => gui}/validators.py | 2 +- 223 files changed, 39 insertions(+), 38 deletions(-) rename Cura/{ => cura_sf}/fabmetheus_utilities/__init__.py (100%) rename Cura/{ => cura_sf}/fabmetheus_utilities/archive.py (100%) rename Cura/{ => cura_sf}/fabmetheus_utilities/euclidean.py (100%) rename Cura/{ => cura_sf}/fabmetheus_utilities/fabmetheus_tools/__init__.py (100%) rename Cura/{ => cura_sf}/fabmetheus_utilities/fabmetheus_tools/alphabetize.py (100%) rename Cura/{ => cura_sf}/fabmetheus_utilities/fabmetheus_tools/fabmetheus_interpret.py (100%) rename Cura/{ => cura_sf}/fabmetheus_utilities/fabmetheus_tools/interpret_plugins/__init__.py (100%) rename Cura/{ => cura_sf}/fabmetheus_utilities/fabmetheus_tools/interpret_plugins/csv.py (100%) rename Cura/{ => cura_sf}/fabmetheus_utilities/fabmetheus_tools/interpret_plugins/gts.py (100%) rename Cura/{ => cura_sf}/fabmetheus_utilities/fabmetheus_tools/interpret_plugins/obj.py (100%) rename Cura/{ => cura_sf}/fabmetheus_utilities/fabmetheus_tools/interpret_plugins/slc.py (100%) rename Cura/{ => cura_sf}/fabmetheus_utilities/fabmetheus_tools/interpret_plugins/stl.py (100%) rename Cura/{ => cura_sf}/fabmetheus_utilities/fabmetheus_tools/interpret_plugins/svg.py (100%) rename Cura/{ => cura_sf}/fabmetheus_utilities/fabmetheus_tools/prepare.py (100%) rename Cura/{ => cura_sf}/fabmetheus_utilities/fabmetheus_tools/wikifier.py (100%) rename Cura/{ => cura_sf}/fabmetheus_utilities/gcodec.py (100%) rename Cura/{ => cura_sf}/fabmetheus_utilities/geometry/__init__.py (100%) rename Cura/{ => cura_sf}/fabmetheus_utilities/geometry/creation/__init__.py (100%) rename Cura/{ => cura_sf}/fabmetheus_utilities/geometry/creation/_drill.py (100%) rename Cura/{ => cura_sf}/fabmetheus_utilities/geometry/creation/_svg.py (100%) rename Cura/{ => cura_sf}/fabmetheus_utilities/geometry/creation/circle.py (100%) rename Cura/{ => cura_sf}/fabmetheus_utilities/geometry/creation/concatenate.py (100%) rename Cura/{ => cura_sf}/fabmetheus_utilities/geometry/creation/extrude.py (100%) rename Cura/{ => cura_sf}/fabmetheus_utilities/geometry/creation/gear.py (100%) rename Cura/{ => cura_sf}/fabmetheus_utilities/geometry/creation/grid.py (100%) rename Cura/{ => cura_sf}/fabmetheus_utilities/geometry/creation/heightmap.py (100%) rename Cura/{ => cura_sf}/fabmetheus_utilities/geometry/creation/lathe.py (100%) rename Cura/{ => cura_sf}/fabmetheus_utilities/geometry/creation/line.py (100%) rename Cura/{ => cura_sf}/fabmetheus_utilities/geometry/creation/linear_bearing_cage.py (100%) rename Cura/{ => cura_sf}/fabmetheus_utilities/geometry/creation/lineation.py (100%) rename Cura/{ => cura_sf}/fabmetheus_utilities/geometry/creation/mechaslab.py (100%) rename Cura/{ => cura_sf}/fabmetheus_utilities/geometry/creation/peg.py (100%) rename Cura/{ => cura_sf}/fabmetheus_utilities/geometry/creation/polygon.py (100%) rename Cura/{ => cura_sf}/fabmetheus_utilities/geometry/creation/shaft.py (100%) rename Cura/{ => cura_sf}/fabmetheus_utilities/geometry/creation/solid.py (100%) rename Cura/{ => cura_sf}/fabmetheus_utilities/geometry/creation/sponge_slice.py (100%) rename Cura/{ => cura_sf}/fabmetheus_utilities/geometry/creation/square.py (100%) rename Cura/{ => cura_sf}/fabmetheus_utilities/geometry/creation/teardrop.py (100%) rename Cura/{ => cura_sf}/fabmetheus_utilities/geometry/creation/text.py (100%) rename Cura/{ => cura_sf}/fabmetheus_utilities/geometry/geometry_tools/__init__.py (100%) rename Cura/{ => cura_sf}/fabmetheus_utilities/geometry/geometry_tools/dictionary.py (100%) rename Cura/{ => cura_sf}/fabmetheus_utilities/geometry/geometry_tools/face.py (100%) rename Cura/{ => cura_sf}/fabmetheus_utilities/geometry/geometry_tools/path.py (100%) rename Cura/{ => cura_sf}/fabmetheus_utilities/geometry/geometry_tools/path_elements/__init__.py (100%) rename Cura/{ => cura_sf}/fabmetheus_utilities/geometry/geometry_tools/path_elements/arc.py (100%) rename Cura/{ => cura_sf}/fabmetheus_utilities/geometry/geometry_tools/path_elements/cubic.py (100%) rename Cura/{ => cura_sf}/fabmetheus_utilities/geometry/geometry_tools/path_elements/quadratic.py (100%) rename Cura/{ => cura_sf}/fabmetheus_utilities/geometry/geometry_tools/vertex.py (100%) rename Cura/{ => cura_sf}/fabmetheus_utilities/geometry/geometry_utilities/__init__.py (100%) rename Cura/{ => cura_sf}/fabmetheus_utilities/geometry/geometry_utilities/boolean_geometry.py (100%) rename Cura/{ => cura_sf}/fabmetheus_utilities/geometry/geometry_utilities/boolean_solid.py (100%) rename Cura/{ => cura_sf}/fabmetheus_utilities/geometry/geometry_utilities/evaluate.py (100%) rename Cura/{ => cura_sf}/fabmetheus_utilities/geometry/geometry_utilities/evaluate_elements/__init__.py (100%) rename Cura/{ => cura_sf}/fabmetheus_utilities/geometry/geometry_utilities/evaluate_elements/creation.py (100%) rename Cura/{ => cura_sf}/fabmetheus_utilities/geometry/geometry_utilities/evaluate_elements/document.py (100%) rename Cura/{ => cura_sf}/fabmetheus_utilities/geometry/geometry_utilities/evaluate_elements/setting.py (100%) rename Cura/{ => cura_sf}/fabmetheus_utilities/geometry/geometry_utilities/evaluate_enumerables/__init__.py (100%) rename Cura/{ => cura_sf}/fabmetheus_utilities/geometry/geometry_utilities/evaluate_enumerables/dictionary_attribute.py (100%) rename Cura/{ => cura_sf}/fabmetheus_utilities/geometry/geometry_utilities/evaluate_enumerables/list_attribute.py (100%) rename Cura/{ => cura_sf}/fabmetheus_utilities/geometry/geometry_utilities/evaluate_enumerables/string_attribute.py (100%) rename Cura/{ => cura_sf}/fabmetheus_utilities/geometry/geometry_utilities/evaluate_fundamentals/__init__.py (100%) rename Cura/{ => cura_sf}/fabmetheus_utilities/geometry/geometry_utilities/evaluate_fundamentals/_math.py (100%) rename Cura/{ => cura_sf}/fabmetheus_utilities/geometry/geometry_utilities/evaluate_fundamentals/euclid.py (100%) rename Cura/{ => cura_sf}/fabmetheus_utilities/geometry/geometry_utilities/evaluate_fundamentals/measure.py (100%) rename Cura/{ => cura_sf}/fabmetheus_utilities/geometry/geometry_utilities/evaluate_fundamentals/print.py (100%) rename Cura/{ => cura_sf}/fabmetheus_utilities/geometry/geometry_utilities/example.csv (100%) rename Cura/{ => cura_sf}/fabmetheus_utilities/geometry/geometry_utilities/matrix.py (100%) rename Cura/{ => cura_sf}/fabmetheus_utilities/geometry/manipulation_matrix/__init__.py (100%) rename Cura/{ => cura_sf}/fabmetheus_utilities/geometry/manipulation_matrix/_scale.py (100%) rename Cura/{ => cura_sf}/fabmetheus_utilities/geometry/manipulation_matrix/rotate.py (100%) rename Cura/{ => cura_sf}/fabmetheus_utilities/geometry/manipulation_matrix/transform.py (100%) rename Cura/{ => cura_sf}/fabmetheus_utilities/geometry/manipulation_matrix/translate.py (100%) rename Cura/{ => cura_sf}/fabmetheus_utilities/geometry/manipulation_meta/__init__.py (100%) rename Cura/{ => cura_sf}/fabmetheus_utilities/geometry/manipulation_meta/_array.py (100%) rename Cura/{ => cura_sf}/fabmetheus_utilities/geometry/manipulation_meta/_carve.py (100%) rename Cura/{ => cura_sf}/fabmetheus_utilities/geometry/manipulation_meta/_copy.py (100%) rename Cura/{ => cura_sf}/fabmetheus_utilities/geometry/manipulation_meta/disjoin.py (100%) rename Cura/{ => cura_sf}/fabmetheus_utilities/geometry/manipulation_meta/import.py (100%) rename Cura/{ => cura_sf}/fabmetheus_utilities/geometry/manipulation_meta/write.py (100%) rename Cura/{ => cura_sf}/fabmetheus_utilities/geometry/manipulation_paths/__init__.py (100%) rename Cura/{ => cura_sf}/fabmetheus_utilities/geometry/manipulation_paths/bevel.py (100%) rename Cura/{ => cura_sf}/fabmetheus_utilities/geometry/manipulation_paths/convex.py (100%) rename Cura/{ => cura_sf}/fabmetheus_utilities/geometry/manipulation_paths/outline.py (100%) rename Cura/{ => cura_sf}/fabmetheus_utilities/geometry/manipulation_paths/overhang.py (100%) rename Cura/{ => cura_sf}/fabmetheus_utilities/geometry/manipulation_paths/round.py (100%) rename Cura/{ => cura_sf}/fabmetheus_utilities/geometry/manipulation_paths/segment.py (100%) rename Cura/{ => cura_sf}/fabmetheus_utilities/geometry/manipulation_paths/wedge.py (100%) rename Cura/{ => cura_sf}/fabmetheus_utilities/geometry/manipulation_shapes/__init__.py (100%) rename Cura/{ => cura_sf}/fabmetheus_utilities/geometry/manipulation_shapes/_bottom.py (100%) rename Cura/{ => cura_sf}/fabmetheus_utilities/geometry/manipulation_shapes/_inset.py (100%) rename Cura/{ => cura_sf}/fabmetheus_utilities/geometry/manipulation_shapes/_outset.py (100%) rename Cura/{ => cura_sf}/fabmetheus_utilities/geometry/manipulation_shapes/equation.py (100%) rename Cura/{ => cura_sf}/fabmetheus_utilities/geometry/manipulation_shapes/flip.py (100%) rename Cura/{ => cura_sf}/fabmetheus_utilities/geometry/manipulation_shapes/mirror.py (100%) rename Cura/{ => cura_sf}/fabmetheus_utilities/geometry/solids/__init__.py (100%) rename Cura/{ => cura_sf}/fabmetheus_utilities/geometry/solids/cube.py (100%) rename Cura/{ => cura_sf}/fabmetheus_utilities/geometry/solids/cylinder.py (100%) rename Cura/{ => cura_sf}/fabmetheus_utilities/geometry/solids/difference.py (100%) rename Cura/{ => cura_sf}/fabmetheus_utilities/geometry/solids/group.py (100%) rename Cura/{ => cura_sf}/fabmetheus_utilities/geometry/solids/intersection.py (100%) rename Cura/{ => cura_sf}/fabmetheus_utilities/geometry/solids/sphere.py (100%) rename Cura/{ => cura_sf}/fabmetheus_utilities/geometry/solids/triangle_mesh.py (100%) rename Cura/{ => cura_sf}/fabmetheus_utilities/geometry/solids/union.py (100%) rename Cura/{ => cura_sf}/fabmetheus_utilities/geometry/statements/__init__.py (100%) rename Cura/{ => cura_sf}/fabmetheus_utilities/geometry/statements/_print.py (100%) rename Cura/{ => cura_sf}/fabmetheus_utilities/geometry/statements/class.py (100%) rename Cura/{ => cura_sf}/fabmetheus_utilities/geometry/statements/elif.py (100%) rename Cura/{ => cura_sf}/fabmetheus_utilities/geometry/statements/else.py (100%) rename Cura/{ => cura_sf}/fabmetheus_utilities/geometry/statements/for.py (100%) rename Cura/{ => cura_sf}/fabmetheus_utilities/geometry/statements/function.py (100%) rename Cura/{ => cura_sf}/fabmetheus_utilities/geometry/statements/if.py (100%) rename Cura/{ => cura_sf}/fabmetheus_utilities/geometry/statements/return.py (100%) rename Cura/{ => cura_sf}/fabmetheus_utilities/geometry/statements/statement.py (100%) rename Cura/{ => cura_sf}/fabmetheus_utilities/geometry/statements/while.py (100%) rename Cura/{ => cura_sf}/fabmetheus_utilities/geometry_plugins/__init__.py (100%) rename Cura/{ => cura_sf}/fabmetheus_utilities/geometry_plugins/creation/__init__.py (100%) rename Cura/{ => cura_sf}/fabmetheus_utilities/geometry_plugins/manipulation_matrix/__init__.py (100%) rename Cura/{ => cura_sf}/fabmetheus_utilities/geometry_plugins/manipulation_meta/__init__.py (100%) rename Cura/{ => cura_sf}/fabmetheus_utilities/geometry_plugins/manipulation_paths/__init__.py (100%) rename Cura/{ => cura_sf}/fabmetheus_utilities/geometry_plugins/manipulation_shapes/__init__.py (100%) rename Cura/{ => cura_sf}/fabmetheus_utilities/intercircle.py (100%) rename Cura/{ => cura_sf}/fabmetheus_utilities/settings.py (99%) rename Cura/{ => cura_sf}/fabmetheus_utilities/svg_reader.py (100%) rename Cura/{ => cura_sf}/fabmetheus_utilities/svg_writer.py (100%) rename Cura/{ => cura_sf}/fabmetheus_utilities/templates/canvas_template.svg (100%) rename Cura/{ => cura_sf}/fabmetheus_utilities/templates/layer_template.svg (100%) rename Cura/{ => cura_sf}/fabmetheus_utilities/vector3.py (100%) rename Cura/{ => cura_sf}/fabmetheus_utilities/vector3index.py (100%) rename Cura/{ => cura_sf}/fabmetheus_utilities/version.txt (100%) rename Cura/{ => cura_sf}/fabmetheus_utilities/xml_simple_reader.py (100%) rename Cura/{ => cura_sf}/fabmetheus_utilities/xml_simple_writer.py (100%) rename Cura/{ => cura_sf}/skeinforge_application/__init__.py (100%) rename Cura/{ => cura_sf}/skeinforge_application/skeinforge_plugins/__init__.py (100%) rename Cura/{ => cura_sf}/skeinforge_application/skeinforge_plugins/analyze.py (100%) rename Cura/{ => cura_sf}/skeinforge_application/skeinforge_plugins/analyze_plugins/__init__.py (100%) rename Cura/{ => cura_sf}/skeinforge_application/skeinforge_plugins/craft.py (100%) rename Cura/{ => cura_sf}/skeinforge_application/skeinforge_plugins/craft_plugins/__init__.py (100%) rename Cura/{ => cura_sf}/skeinforge_application/skeinforge_plugins/craft_plugins/alteration.py (100%) rename Cura/{ => cura_sf}/skeinforge_application/skeinforge_plugins/craft_plugins/bottom.py (100%) rename Cura/{ => cura_sf}/skeinforge_application/skeinforge_plugins/craft_plugins/carve.py (100%) rename Cura/{ => cura_sf}/skeinforge_application/skeinforge_plugins/craft_plugins/chamber.py (100%) rename Cura/{ => cura_sf}/skeinforge_application/skeinforge_plugins/craft_plugins/chop.py (100%) rename Cura/{ => cura_sf}/skeinforge_application/skeinforge_plugins/craft_plugins/cleave.py (100%) rename Cura/{ => cura_sf}/skeinforge_application/skeinforge_plugins/craft_plugins/clip.py (100%) rename Cura/{ => cura_sf}/skeinforge_application/skeinforge_plugins/craft_plugins/coil.py (100%) rename Cura/{ => cura_sf}/skeinforge_application/skeinforge_plugins/craft_plugins/comb.py (100%) rename Cura/{ => cura_sf}/skeinforge_application/skeinforge_plugins/craft_plugins/cool.py (100%) rename Cura/{ => cura_sf}/skeinforge_application/skeinforge_plugins/craft_plugins/dimension.py (100%) rename Cura/{ => cura_sf}/skeinforge_application/skeinforge_plugins/craft_plugins/drill.py (100%) rename Cura/{ => cura_sf}/skeinforge_application/skeinforge_plugins/craft_plugins/dwindle.py (100%) rename Cura/{ => cura_sf}/skeinforge_application/skeinforge_plugins/craft_plugins/export.py (100%) rename Cura/{ => cura_sf}/skeinforge_application/skeinforge_plugins/craft_plugins/export_plugins/__init__.py (100%) rename Cura/{ => cura_sf}/skeinforge_application/skeinforge_plugins/craft_plugins/export_plugins/binary_16_byte.py (100%) rename Cura/{ => cura_sf}/skeinforge_application/skeinforge_plugins/craft_plugins/export_plugins/gcode_step.py (100%) rename Cura/{ => cura_sf}/skeinforge_application/skeinforge_plugins/craft_plugins/export_plugins/gcode_time_segment.py (100%) rename Cura/{ => cura_sf}/skeinforge_application/skeinforge_plugins/craft_plugins/export_plugins/static_plugins/__init__.py (100%) rename Cura/{ => cura_sf}/skeinforge_application/skeinforge_plugins/craft_plugins/export_plugins/static_plugins/gcode_small.py (100%) rename Cura/{ => cura_sf}/skeinforge_application/skeinforge_plugins/craft_plugins/feed.py (100%) rename Cura/{ => cura_sf}/skeinforge_application/skeinforge_plugins/craft_plugins/fill.py (100%) rename Cura/{ => cura_sf}/skeinforge_application/skeinforge_plugins/craft_plugins/fillet.py (100%) rename Cura/{ => cura_sf}/skeinforge_application/skeinforge_plugins/craft_plugins/flow.py (100%) rename Cura/{ => cura_sf}/skeinforge_application/skeinforge_plugins/craft_plugins/home.py (100%) rename Cura/{ => cura_sf}/skeinforge_application/skeinforge_plugins/craft_plugins/hop.py (100%) rename Cura/{ => cura_sf}/skeinforge_application/skeinforge_plugins/craft_plugins/inset.py (100%) rename Cura/{ => cura_sf}/skeinforge_application/skeinforge_plugins/craft_plugins/jitter.py (100%) rename Cura/{ => cura_sf}/skeinforge_application/skeinforge_plugins/craft_plugins/joris.py (100%) rename Cura/{ => cura_sf}/skeinforge_application/skeinforge_plugins/craft_plugins/lash.py (100%) rename Cura/{ => cura_sf}/skeinforge_application/skeinforge_plugins/craft_plugins/lift.py (100%) rename Cura/{ => cura_sf}/skeinforge_application/skeinforge_plugins/craft_plugins/limit.py (100%) rename Cura/{ => cura_sf}/skeinforge_application/skeinforge_plugins/craft_plugins/mill.py (100%) rename Cura/{ => cura_sf}/skeinforge_application/skeinforge_plugins/craft_plugins/multiply.py (100%) rename Cura/{ => cura_sf}/skeinforge_application/skeinforge_plugins/craft_plugins/oozebane.py (100%) rename Cura/{ => cura_sf}/skeinforge_application/skeinforge_plugins/craft_plugins/outset.py (100%) rename Cura/{ => cura_sf}/skeinforge_application/skeinforge_plugins/craft_plugins/preface.py (100%) rename Cura/{ => cura_sf}/skeinforge_application/skeinforge_plugins/craft_plugins/raft.py (100%) rename Cura/{ => cura_sf}/skeinforge_application/skeinforge_plugins/craft_plugins/scale.py (100%) rename Cura/{ => cura_sf}/skeinforge_application/skeinforge_plugins/craft_plugins/skin.py (100%) rename Cura/{ => cura_sf}/skeinforge_application/skeinforge_plugins/craft_plugins/skirt.py (100%) rename Cura/{ => cura_sf}/skeinforge_application/skeinforge_plugins/craft_plugins/smooth.py (100%) rename Cura/{ => cura_sf}/skeinforge_application/skeinforge_plugins/craft_plugins/speed.py (100%) rename Cura/{ => cura_sf}/skeinforge_application/skeinforge_plugins/craft_plugins/splodge.py (100%) rename Cura/{ => cura_sf}/skeinforge_application/skeinforge_plugins/craft_plugins/stretch.py (100%) rename Cura/{ => cura_sf}/skeinforge_application/skeinforge_plugins/craft_plugins/temperature.py (100%) rename Cura/{ => cura_sf}/skeinforge_application/skeinforge_plugins/craft_plugins/tower.py (100%) rename Cura/{ => cura_sf}/skeinforge_application/skeinforge_plugins/craft_plugins/unpause.py (100%) rename Cura/{ => cura_sf}/skeinforge_application/skeinforge_plugins/craft_plugins/whittle.py (100%) rename Cura/{ => cura_sf}/skeinforge_application/skeinforge_plugins/craft_plugins/widen.py (100%) rename Cura/{ => cura_sf}/skeinforge_application/skeinforge_plugins/craft_plugins/wipe.py (100%) rename Cura/{ => cura_sf}/skeinforge_application/skeinforge_plugins/help.py (100%) rename Cura/{ => cura_sf}/skeinforge_application/skeinforge_plugins/meta.py (100%) rename Cura/{ => cura_sf}/skeinforge_application/skeinforge_plugins/meta_plugins/__init__.py (100%) rename Cura/{ => cura_sf}/skeinforge_application/skeinforge_plugins/meta_plugins/description.py (100%) rename Cura/{ => cura_sf}/skeinforge_application/skeinforge_plugins/meta_plugins/polyfile.py (100%) rename Cura/{ => cura_sf}/skeinforge_application/skeinforge_plugins/profile.py (100%) rename Cura/{ => cura_sf}/skeinforge_application/skeinforge_plugins/profile_plugins/__init__.py (100%) rename Cura/{ => cura_sf}/skeinforge_application/skeinforge_plugins/profile_plugins/cutting.py (100%) rename Cura/{ => cura_sf}/skeinforge_application/skeinforge_plugins/profile_plugins/extrusion.py (100%) rename Cura/{ => cura_sf}/skeinforge_application/skeinforge_plugins/profile_plugins/milling.py (100%) rename Cura/{ => cura_sf}/skeinforge_application/skeinforge_plugins/profile_plugins/winding.py (100%) rename Cura/{ => cura_sf}/skeinforge_application/skeinforge_utilities/__init__.py (100%) rename Cura/{ => cura_sf}/skeinforge_application/skeinforge_utilities/skeinforge_analyze.py (100%) rename Cura/{ => cura_sf}/skeinforge_application/skeinforge_utilities/skeinforge_craft.py (100%) rename Cura/{ => cura_sf}/skeinforge_application/skeinforge_utilities/skeinforge_help.py (100%) rename Cura/{ => cura_sf}/skeinforge_application/skeinforge_utilities/skeinforge_meta.py (100%) rename Cura/{ => cura_sf}/skeinforge_application/skeinforge_utilities/skeinforge_polyfile.py (100%) rename Cura/{ => cura_sf}/skeinforge_application/skeinforge_utilities/skeinforge_profile.py (100%) rename Cura/{newui => gui}/__init__.py (100%) rename Cura/{newui => gui}/advancedConfig.py (96%) rename Cura/{newui => gui}/alterationPanel.py (95%) rename Cura/{newui => gui}/configBase.py (99%) rename Cura/{newui => gui}/configWizard.py (97%) rename Cura/{newui => gui}/gcodeInterpreter.py (99%) rename Cura/{newui => gui}/machineCom.py (99%) rename Cura/{newui => gui}/mainWindow.py (97%) rename Cura/{newui => gui}/preferencesDialog.py (93%) rename Cura/{newui => gui}/preview3d.py (96%) rename Cura/{newui => gui}/printWindow.py (100%) rename Cura/{newui => gui}/profile.py (100%) rename Cura/{newui => gui}/sliceProgessPanel.py (98%) rename Cura/{newui => gui}/sliceRun.py (95%) rename Cura/{newui => gui}/util3d.py (100%) rename Cura/{newui => gui}/validators.py (99%) diff --git a/Cura/cura.py b/Cura/cura.py index b968a94..3633e41 100644 --- a/Cura/cura.py +++ b/Cura/cura.py @@ -14,9 +14,9 @@ import __init__ import sys import platform - from optparse import OptionParser -from newui import sliceRun + +from gui import sliceRun __author__ = 'Daid' __credits__ = """ @@ -49,7 +49,7 @@ def main(): if len( args ) > 0: sliceRun.runSlice(args) else: - from newui import mainWindow + from gui import mainWindow mainWindow.main() if __name__ == '__main__': diff --git a/Cura/fabmetheus_utilities/__init__.py b/Cura/cura_sf/fabmetheus_utilities/__init__.py similarity index 100% rename from Cura/fabmetheus_utilities/__init__.py rename to Cura/cura_sf/fabmetheus_utilities/__init__.py diff --git a/Cura/fabmetheus_utilities/archive.py b/Cura/cura_sf/fabmetheus_utilities/archive.py similarity index 100% rename from Cura/fabmetheus_utilities/archive.py rename to Cura/cura_sf/fabmetheus_utilities/archive.py diff --git a/Cura/fabmetheus_utilities/euclidean.py b/Cura/cura_sf/fabmetheus_utilities/euclidean.py similarity index 100% rename from Cura/fabmetheus_utilities/euclidean.py rename to Cura/cura_sf/fabmetheus_utilities/euclidean.py diff --git a/Cura/fabmetheus_utilities/fabmetheus_tools/__init__.py b/Cura/cura_sf/fabmetheus_utilities/fabmetheus_tools/__init__.py similarity index 100% rename from Cura/fabmetheus_utilities/fabmetheus_tools/__init__.py rename to Cura/cura_sf/fabmetheus_utilities/fabmetheus_tools/__init__.py diff --git a/Cura/fabmetheus_utilities/fabmetheus_tools/alphabetize.py b/Cura/cura_sf/fabmetheus_utilities/fabmetheus_tools/alphabetize.py similarity index 100% rename from Cura/fabmetheus_utilities/fabmetheus_tools/alphabetize.py rename to Cura/cura_sf/fabmetheus_utilities/fabmetheus_tools/alphabetize.py diff --git a/Cura/fabmetheus_utilities/fabmetheus_tools/fabmetheus_interpret.py b/Cura/cura_sf/fabmetheus_utilities/fabmetheus_tools/fabmetheus_interpret.py similarity index 100% rename from Cura/fabmetheus_utilities/fabmetheus_tools/fabmetheus_interpret.py rename to Cura/cura_sf/fabmetheus_utilities/fabmetheus_tools/fabmetheus_interpret.py diff --git a/Cura/fabmetheus_utilities/fabmetheus_tools/interpret_plugins/__init__.py b/Cura/cura_sf/fabmetheus_utilities/fabmetheus_tools/interpret_plugins/__init__.py similarity index 100% rename from Cura/fabmetheus_utilities/fabmetheus_tools/interpret_plugins/__init__.py rename to Cura/cura_sf/fabmetheus_utilities/fabmetheus_tools/interpret_plugins/__init__.py diff --git a/Cura/fabmetheus_utilities/fabmetheus_tools/interpret_plugins/csv.py b/Cura/cura_sf/fabmetheus_utilities/fabmetheus_tools/interpret_plugins/csv.py similarity index 100% rename from Cura/fabmetheus_utilities/fabmetheus_tools/interpret_plugins/csv.py rename to Cura/cura_sf/fabmetheus_utilities/fabmetheus_tools/interpret_plugins/csv.py diff --git a/Cura/fabmetheus_utilities/fabmetheus_tools/interpret_plugins/gts.py b/Cura/cura_sf/fabmetheus_utilities/fabmetheus_tools/interpret_plugins/gts.py similarity index 100% rename from Cura/fabmetheus_utilities/fabmetheus_tools/interpret_plugins/gts.py rename to Cura/cura_sf/fabmetheus_utilities/fabmetheus_tools/interpret_plugins/gts.py diff --git a/Cura/fabmetheus_utilities/fabmetheus_tools/interpret_plugins/obj.py b/Cura/cura_sf/fabmetheus_utilities/fabmetheus_tools/interpret_plugins/obj.py similarity index 100% rename from Cura/fabmetheus_utilities/fabmetheus_tools/interpret_plugins/obj.py rename to Cura/cura_sf/fabmetheus_utilities/fabmetheus_tools/interpret_plugins/obj.py diff --git a/Cura/fabmetheus_utilities/fabmetheus_tools/interpret_plugins/slc.py b/Cura/cura_sf/fabmetheus_utilities/fabmetheus_tools/interpret_plugins/slc.py similarity index 100% rename from Cura/fabmetheus_utilities/fabmetheus_tools/interpret_plugins/slc.py rename to Cura/cura_sf/fabmetheus_utilities/fabmetheus_tools/interpret_plugins/slc.py diff --git a/Cura/fabmetheus_utilities/fabmetheus_tools/interpret_plugins/stl.py b/Cura/cura_sf/fabmetheus_utilities/fabmetheus_tools/interpret_plugins/stl.py similarity index 100% rename from Cura/fabmetheus_utilities/fabmetheus_tools/interpret_plugins/stl.py rename to Cura/cura_sf/fabmetheus_utilities/fabmetheus_tools/interpret_plugins/stl.py diff --git a/Cura/fabmetheus_utilities/fabmetheus_tools/interpret_plugins/svg.py b/Cura/cura_sf/fabmetheus_utilities/fabmetheus_tools/interpret_plugins/svg.py similarity index 100% rename from Cura/fabmetheus_utilities/fabmetheus_tools/interpret_plugins/svg.py rename to Cura/cura_sf/fabmetheus_utilities/fabmetheus_tools/interpret_plugins/svg.py diff --git a/Cura/fabmetheus_utilities/fabmetheus_tools/prepare.py b/Cura/cura_sf/fabmetheus_utilities/fabmetheus_tools/prepare.py similarity index 100% rename from Cura/fabmetheus_utilities/fabmetheus_tools/prepare.py rename to Cura/cura_sf/fabmetheus_utilities/fabmetheus_tools/prepare.py diff --git a/Cura/fabmetheus_utilities/fabmetheus_tools/wikifier.py b/Cura/cura_sf/fabmetheus_utilities/fabmetheus_tools/wikifier.py similarity index 100% rename from Cura/fabmetheus_utilities/fabmetheus_tools/wikifier.py rename to Cura/cura_sf/fabmetheus_utilities/fabmetheus_tools/wikifier.py diff --git a/Cura/fabmetheus_utilities/gcodec.py b/Cura/cura_sf/fabmetheus_utilities/gcodec.py similarity index 100% rename from Cura/fabmetheus_utilities/gcodec.py rename to Cura/cura_sf/fabmetheus_utilities/gcodec.py diff --git a/Cura/fabmetheus_utilities/geometry/__init__.py b/Cura/cura_sf/fabmetheus_utilities/geometry/__init__.py similarity index 100% rename from Cura/fabmetheus_utilities/geometry/__init__.py rename to Cura/cura_sf/fabmetheus_utilities/geometry/__init__.py diff --git a/Cura/fabmetheus_utilities/geometry/creation/__init__.py b/Cura/cura_sf/fabmetheus_utilities/geometry/creation/__init__.py similarity index 100% rename from Cura/fabmetheus_utilities/geometry/creation/__init__.py rename to Cura/cura_sf/fabmetheus_utilities/geometry/creation/__init__.py diff --git a/Cura/fabmetheus_utilities/geometry/creation/_drill.py b/Cura/cura_sf/fabmetheus_utilities/geometry/creation/_drill.py similarity index 100% rename from Cura/fabmetheus_utilities/geometry/creation/_drill.py rename to Cura/cura_sf/fabmetheus_utilities/geometry/creation/_drill.py diff --git a/Cura/fabmetheus_utilities/geometry/creation/_svg.py b/Cura/cura_sf/fabmetheus_utilities/geometry/creation/_svg.py similarity index 100% rename from Cura/fabmetheus_utilities/geometry/creation/_svg.py rename to Cura/cura_sf/fabmetheus_utilities/geometry/creation/_svg.py diff --git a/Cura/fabmetheus_utilities/geometry/creation/circle.py b/Cura/cura_sf/fabmetheus_utilities/geometry/creation/circle.py similarity index 100% rename from Cura/fabmetheus_utilities/geometry/creation/circle.py rename to Cura/cura_sf/fabmetheus_utilities/geometry/creation/circle.py diff --git a/Cura/fabmetheus_utilities/geometry/creation/concatenate.py b/Cura/cura_sf/fabmetheus_utilities/geometry/creation/concatenate.py similarity index 100% rename from Cura/fabmetheus_utilities/geometry/creation/concatenate.py rename to Cura/cura_sf/fabmetheus_utilities/geometry/creation/concatenate.py diff --git a/Cura/fabmetheus_utilities/geometry/creation/extrude.py b/Cura/cura_sf/fabmetheus_utilities/geometry/creation/extrude.py similarity index 100% rename from Cura/fabmetheus_utilities/geometry/creation/extrude.py rename to Cura/cura_sf/fabmetheus_utilities/geometry/creation/extrude.py diff --git a/Cura/fabmetheus_utilities/geometry/creation/gear.py b/Cura/cura_sf/fabmetheus_utilities/geometry/creation/gear.py similarity index 100% rename from Cura/fabmetheus_utilities/geometry/creation/gear.py rename to Cura/cura_sf/fabmetheus_utilities/geometry/creation/gear.py diff --git a/Cura/fabmetheus_utilities/geometry/creation/grid.py b/Cura/cura_sf/fabmetheus_utilities/geometry/creation/grid.py similarity index 100% rename from Cura/fabmetheus_utilities/geometry/creation/grid.py rename to Cura/cura_sf/fabmetheus_utilities/geometry/creation/grid.py diff --git a/Cura/fabmetheus_utilities/geometry/creation/heightmap.py b/Cura/cura_sf/fabmetheus_utilities/geometry/creation/heightmap.py similarity index 100% rename from Cura/fabmetheus_utilities/geometry/creation/heightmap.py rename to Cura/cura_sf/fabmetheus_utilities/geometry/creation/heightmap.py diff --git a/Cura/fabmetheus_utilities/geometry/creation/lathe.py b/Cura/cura_sf/fabmetheus_utilities/geometry/creation/lathe.py similarity index 100% rename from Cura/fabmetheus_utilities/geometry/creation/lathe.py rename to Cura/cura_sf/fabmetheus_utilities/geometry/creation/lathe.py diff --git a/Cura/fabmetheus_utilities/geometry/creation/line.py b/Cura/cura_sf/fabmetheus_utilities/geometry/creation/line.py similarity index 100% rename from Cura/fabmetheus_utilities/geometry/creation/line.py rename to Cura/cura_sf/fabmetheus_utilities/geometry/creation/line.py diff --git a/Cura/fabmetheus_utilities/geometry/creation/linear_bearing_cage.py b/Cura/cura_sf/fabmetheus_utilities/geometry/creation/linear_bearing_cage.py similarity index 100% rename from Cura/fabmetheus_utilities/geometry/creation/linear_bearing_cage.py rename to Cura/cura_sf/fabmetheus_utilities/geometry/creation/linear_bearing_cage.py diff --git a/Cura/fabmetheus_utilities/geometry/creation/lineation.py b/Cura/cura_sf/fabmetheus_utilities/geometry/creation/lineation.py similarity index 100% rename from Cura/fabmetheus_utilities/geometry/creation/lineation.py rename to Cura/cura_sf/fabmetheus_utilities/geometry/creation/lineation.py diff --git a/Cura/fabmetheus_utilities/geometry/creation/mechaslab.py b/Cura/cura_sf/fabmetheus_utilities/geometry/creation/mechaslab.py similarity index 100% rename from Cura/fabmetheus_utilities/geometry/creation/mechaslab.py rename to Cura/cura_sf/fabmetheus_utilities/geometry/creation/mechaslab.py diff --git a/Cura/fabmetheus_utilities/geometry/creation/peg.py b/Cura/cura_sf/fabmetheus_utilities/geometry/creation/peg.py similarity index 100% rename from Cura/fabmetheus_utilities/geometry/creation/peg.py rename to Cura/cura_sf/fabmetheus_utilities/geometry/creation/peg.py diff --git a/Cura/fabmetheus_utilities/geometry/creation/polygon.py b/Cura/cura_sf/fabmetheus_utilities/geometry/creation/polygon.py similarity index 100% rename from Cura/fabmetheus_utilities/geometry/creation/polygon.py rename to Cura/cura_sf/fabmetheus_utilities/geometry/creation/polygon.py diff --git a/Cura/fabmetheus_utilities/geometry/creation/shaft.py b/Cura/cura_sf/fabmetheus_utilities/geometry/creation/shaft.py similarity index 100% rename from Cura/fabmetheus_utilities/geometry/creation/shaft.py rename to Cura/cura_sf/fabmetheus_utilities/geometry/creation/shaft.py diff --git a/Cura/fabmetheus_utilities/geometry/creation/solid.py b/Cura/cura_sf/fabmetheus_utilities/geometry/creation/solid.py similarity index 100% rename from Cura/fabmetheus_utilities/geometry/creation/solid.py rename to Cura/cura_sf/fabmetheus_utilities/geometry/creation/solid.py diff --git a/Cura/fabmetheus_utilities/geometry/creation/sponge_slice.py b/Cura/cura_sf/fabmetheus_utilities/geometry/creation/sponge_slice.py similarity index 100% rename from Cura/fabmetheus_utilities/geometry/creation/sponge_slice.py rename to Cura/cura_sf/fabmetheus_utilities/geometry/creation/sponge_slice.py diff --git a/Cura/fabmetheus_utilities/geometry/creation/square.py b/Cura/cura_sf/fabmetheus_utilities/geometry/creation/square.py similarity index 100% rename from Cura/fabmetheus_utilities/geometry/creation/square.py rename to Cura/cura_sf/fabmetheus_utilities/geometry/creation/square.py diff --git a/Cura/fabmetheus_utilities/geometry/creation/teardrop.py b/Cura/cura_sf/fabmetheus_utilities/geometry/creation/teardrop.py similarity index 100% rename from Cura/fabmetheus_utilities/geometry/creation/teardrop.py rename to Cura/cura_sf/fabmetheus_utilities/geometry/creation/teardrop.py diff --git a/Cura/fabmetheus_utilities/geometry/creation/text.py b/Cura/cura_sf/fabmetheus_utilities/geometry/creation/text.py similarity index 100% rename from Cura/fabmetheus_utilities/geometry/creation/text.py rename to Cura/cura_sf/fabmetheus_utilities/geometry/creation/text.py diff --git a/Cura/fabmetheus_utilities/geometry/geometry_tools/__init__.py b/Cura/cura_sf/fabmetheus_utilities/geometry/geometry_tools/__init__.py similarity index 100% rename from Cura/fabmetheus_utilities/geometry/geometry_tools/__init__.py rename to Cura/cura_sf/fabmetheus_utilities/geometry/geometry_tools/__init__.py diff --git a/Cura/fabmetheus_utilities/geometry/geometry_tools/dictionary.py b/Cura/cura_sf/fabmetheus_utilities/geometry/geometry_tools/dictionary.py similarity index 100% rename from Cura/fabmetheus_utilities/geometry/geometry_tools/dictionary.py rename to Cura/cura_sf/fabmetheus_utilities/geometry/geometry_tools/dictionary.py diff --git a/Cura/fabmetheus_utilities/geometry/geometry_tools/face.py b/Cura/cura_sf/fabmetheus_utilities/geometry/geometry_tools/face.py similarity index 100% rename from Cura/fabmetheus_utilities/geometry/geometry_tools/face.py rename to Cura/cura_sf/fabmetheus_utilities/geometry/geometry_tools/face.py diff --git a/Cura/fabmetheus_utilities/geometry/geometry_tools/path.py b/Cura/cura_sf/fabmetheus_utilities/geometry/geometry_tools/path.py similarity index 100% rename from Cura/fabmetheus_utilities/geometry/geometry_tools/path.py rename to Cura/cura_sf/fabmetheus_utilities/geometry/geometry_tools/path.py diff --git a/Cura/fabmetheus_utilities/geometry/geometry_tools/path_elements/__init__.py b/Cura/cura_sf/fabmetheus_utilities/geometry/geometry_tools/path_elements/__init__.py similarity index 100% rename from Cura/fabmetheus_utilities/geometry/geometry_tools/path_elements/__init__.py rename to Cura/cura_sf/fabmetheus_utilities/geometry/geometry_tools/path_elements/__init__.py diff --git a/Cura/fabmetheus_utilities/geometry/geometry_tools/path_elements/arc.py b/Cura/cura_sf/fabmetheus_utilities/geometry/geometry_tools/path_elements/arc.py similarity index 100% rename from Cura/fabmetheus_utilities/geometry/geometry_tools/path_elements/arc.py rename to Cura/cura_sf/fabmetheus_utilities/geometry/geometry_tools/path_elements/arc.py diff --git a/Cura/fabmetheus_utilities/geometry/geometry_tools/path_elements/cubic.py b/Cura/cura_sf/fabmetheus_utilities/geometry/geometry_tools/path_elements/cubic.py similarity index 100% rename from Cura/fabmetheus_utilities/geometry/geometry_tools/path_elements/cubic.py rename to Cura/cura_sf/fabmetheus_utilities/geometry/geometry_tools/path_elements/cubic.py diff --git a/Cura/fabmetheus_utilities/geometry/geometry_tools/path_elements/quadratic.py b/Cura/cura_sf/fabmetheus_utilities/geometry/geometry_tools/path_elements/quadratic.py similarity index 100% rename from Cura/fabmetheus_utilities/geometry/geometry_tools/path_elements/quadratic.py rename to Cura/cura_sf/fabmetheus_utilities/geometry/geometry_tools/path_elements/quadratic.py diff --git a/Cura/fabmetheus_utilities/geometry/geometry_tools/vertex.py b/Cura/cura_sf/fabmetheus_utilities/geometry/geometry_tools/vertex.py similarity index 100% rename from Cura/fabmetheus_utilities/geometry/geometry_tools/vertex.py rename to Cura/cura_sf/fabmetheus_utilities/geometry/geometry_tools/vertex.py diff --git a/Cura/fabmetheus_utilities/geometry/geometry_utilities/__init__.py b/Cura/cura_sf/fabmetheus_utilities/geometry/geometry_utilities/__init__.py similarity index 100% rename from Cura/fabmetheus_utilities/geometry/geometry_utilities/__init__.py rename to Cura/cura_sf/fabmetheus_utilities/geometry/geometry_utilities/__init__.py diff --git a/Cura/fabmetheus_utilities/geometry/geometry_utilities/boolean_geometry.py b/Cura/cura_sf/fabmetheus_utilities/geometry/geometry_utilities/boolean_geometry.py similarity index 100% rename from Cura/fabmetheus_utilities/geometry/geometry_utilities/boolean_geometry.py rename to Cura/cura_sf/fabmetheus_utilities/geometry/geometry_utilities/boolean_geometry.py diff --git a/Cura/fabmetheus_utilities/geometry/geometry_utilities/boolean_solid.py b/Cura/cura_sf/fabmetheus_utilities/geometry/geometry_utilities/boolean_solid.py similarity index 100% rename from Cura/fabmetheus_utilities/geometry/geometry_utilities/boolean_solid.py rename to Cura/cura_sf/fabmetheus_utilities/geometry/geometry_utilities/boolean_solid.py diff --git a/Cura/fabmetheus_utilities/geometry/geometry_utilities/evaluate.py b/Cura/cura_sf/fabmetheus_utilities/geometry/geometry_utilities/evaluate.py similarity index 100% rename from Cura/fabmetheus_utilities/geometry/geometry_utilities/evaluate.py rename to Cura/cura_sf/fabmetheus_utilities/geometry/geometry_utilities/evaluate.py diff --git a/Cura/fabmetheus_utilities/geometry/geometry_utilities/evaluate_elements/__init__.py b/Cura/cura_sf/fabmetheus_utilities/geometry/geometry_utilities/evaluate_elements/__init__.py similarity index 100% rename from Cura/fabmetheus_utilities/geometry/geometry_utilities/evaluate_elements/__init__.py rename to Cura/cura_sf/fabmetheus_utilities/geometry/geometry_utilities/evaluate_elements/__init__.py diff --git a/Cura/fabmetheus_utilities/geometry/geometry_utilities/evaluate_elements/creation.py b/Cura/cura_sf/fabmetheus_utilities/geometry/geometry_utilities/evaluate_elements/creation.py similarity index 100% rename from Cura/fabmetheus_utilities/geometry/geometry_utilities/evaluate_elements/creation.py rename to Cura/cura_sf/fabmetheus_utilities/geometry/geometry_utilities/evaluate_elements/creation.py diff --git a/Cura/fabmetheus_utilities/geometry/geometry_utilities/evaluate_elements/document.py b/Cura/cura_sf/fabmetheus_utilities/geometry/geometry_utilities/evaluate_elements/document.py similarity index 100% rename from Cura/fabmetheus_utilities/geometry/geometry_utilities/evaluate_elements/document.py rename to Cura/cura_sf/fabmetheus_utilities/geometry/geometry_utilities/evaluate_elements/document.py diff --git a/Cura/fabmetheus_utilities/geometry/geometry_utilities/evaluate_elements/setting.py b/Cura/cura_sf/fabmetheus_utilities/geometry/geometry_utilities/evaluate_elements/setting.py similarity index 100% rename from Cura/fabmetheus_utilities/geometry/geometry_utilities/evaluate_elements/setting.py rename to Cura/cura_sf/fabmetheus_utilities/geometry/geometry_utilities/evaluate_elements/setting.py diff --git a/Cura/fabmetheus_utilities/geometry/geometry_utilities/evaluate_enumerables/__init__.py b/Cura/cura_sf/fabmetheus_utilities/geometry/geometry_utilities/evaluate_enumerables/__init__.py similarity index 100% rename from Cura/fabmetheus_utilities/geometry/geometry_utilities/evaluate_enumerables/__init__.py rename to Cura/cura_sf/fabmetheus_utilities/geometry/geometry_utilities/evaluate_enumerables/__init__.py diff --git a/Cura/fabmetheus_utilities/geometry/geometry_utilities/evaluate_enumerables/dictionary_attribute.py b/Cura/cura_sf/fabmetheus_utilities/geometry/geometry_utilities/evaluate_enumerables/dictionary_attribute.py similarity index 100% rename from Cura/fabmetheus_utilities/geometry/geometry_utilities/evaluate_enumerables/dictionary_attribute.py rename to Cura/cura_sf/fabmetheus_utilities/geometry/geometry_utilities/evaluate_enumerables/dictionary_attribute.py diff --git a/Cura/fabmetheus_utilities/geometry/geometry_utilities/evaluate_enumerables/list_attribute.py b/Cura/cura_sf/fabmetheus_utilities/geometry/geometry_utilities/evaluate_enumerables/list_attribute.py similarity index 100% rename from Cura/fabmetheus_utilities/geometry/geometry_utilities/evaluate_enumerables/list_attribute.py rename to Cura/cura_sf/fabmetheus_utilities/geometry/geometry_utilities/evaluate_enumerables/list_attribute.py diff --git a/Cura/fabmetheus_utilities/geometry/geometry_utilities/evaluate_enumerables/string_attribute.py b/Cura/cura_sf/fabmetheus_utilities/geometry/geometry_utilities/evaluate_enumerables/string_attribute.py similarity index 100% rename from Cura/fabmetheus_utilities/geometry/geometry_utilities/evaluate_enumerables/string_attribute.py rename to Cura/cura_sf/fabmetheus_utilities/geometry/geometry_utilities/evaluate_enumerables/string_attribute.py diff --git a/Cura/fabmetheus_utilities/geometry/geometry_utilities/evaluate_fundamentals/__init__.py b/Cura/cura_sf/fabmetheus_utilities/geometry/geometry_utilities/evaluate_fundamentals/__init__.py similarity index 100% rename from Cura/fabmetheus_utilities/geometry/geometry_utilities/evaluate_fundamentals/__init__.py rename to Cura/cura_sf/fabmetheus_utilities/geometry/geometry_utilities/evaluate_fundamentals/__init__.py diff --git a/Cura/fabmetheus_utilities/geometry/geometry_utilities/evaluate_fundamentals/_math.py b/Cura/cura_sf/fabmetheus_utilities/geometry/geometry_utilities/evaluate_fundamentals/_math.py similarity index 100% rename from Cura/fabmetheus_utilities/geometry/geometry_utilities/evaluate_fundamentals/_math.py rename to Cura/cura_sf/fabmetheus_utilities/geometry/geometry_utilities/evaluate_fundamentals/_math.py diff --git a/Cura/fabmetheus_utilities/geometry/geometry_utilities/evaluate_fundamentals/euclid.py b/Cura/cura_sf/fabmetheus_utilities/geometry/geometry_utilities/evaluate_fundamentals/euclid.py similarity index 100% rename from Cura/fabmetheus_utilities/geometry/geometry_utilities/evaluate_fundamentals/euclid.py rename to Cura/cura_sf/fabmetheus_utilities/geometry/geometry_utilities/evaluate_fundamentals/euclid.py diff --git a/Cura/fabmetheus_utilities/geometry/geometry_utilities/evaluate_fundamentals/measure.py b/Cura/cura_sf/fabmetheus_utilities/geometry/geometry_utilities/evaluate_fundamentals/measure.py similarity index 100% rename from Cura/fabmetheus_utilities/geometry/geometry_utilities/evaluate_fundamentals/measure.py rename to Cura/cura_sf/fabmetheus_utilities/geometry/geometry_utilities/evaluate_fundamentals/measure.py diff --git a/Cura/fabmetheus_utilities/geometry/geometry_utilities/evaluate_fundamentals/print.py b/Cura/cura_sf/fabmetheus_utilities/geometry/geometry_utilities/evaluate_fundamentals/print.py similarity index 100% rename from Cura/fabmetheus_utilities/geometry/geometry_utilities/evaluate_fundamentals/print.py rename to Cura/cura_sf/fabmetheus_utilities/geometry/geometry_utilities/evaluate_fundamentals/print.py diff --git a/Cura/fabmetheus_utilities/geometry/geometry_utilities/example.csv b/Cura/cura_sf/fabmetheus_utilities/geometry/geometry_utilities/example.csv similarity index 100% rename from Cura/fabmetheus_utilities/geometry/geometry_utilities/example.csv rename to Cura/cura_sf/fabmetheus_utilities/geometry/geometry_utilities/example.csv diff --git a/Cura/fabmetheus_utilities/geometry/geometry_utilities/matrix.py b/Cura/cura_sf/fabmetheus_utilities/geometry/geometry_utilities/matrix.py similarity index 100% rename from Cura/fabmetheus_utilities/geometry/geometry_utilities/matrix.py rename to Cura/cura_sf/fabmetheus_utilities/geometry/geometry_utilities/matrix.py diff --git a/Cura/fabmetheus_utilities/geometry/manipulation_matrix/__init__.py b/Cura/cura_sf/fabmetheus_utilities/geometry/manipulation_matrix/__init__.py similarity index 100% rename from Cura/fabmetheus_utilities/geometry/manipulation_matrix/__init__.py rename to Cura/cura_sf/fabmetheus_utilities/geometry/manipulation_matrix/__init__.py diff --git a/Cura/fabmetheus_utilities/geometry/manipulation_matrix/_scale.py b/Cura/cura_sf/fabmetheus_utilities/geometry/manipulation_matrix/_scale.py similarity index 100% rename from Cura/fabmetheus_utilities/geometry/manipulation_matrix/_scale.py rename to Cura/cura_sf/fabmetheus_utilities/geometry/manipulation_matrix/_scale.py diff --git a/Cura/fabmetheus_utilities/geometry/manipulation_matrix/rotate.py b/Cura/cura_sf/fabmetheus_utilities/geometry/manipulation_matrix/rotate.py similarity index 100% rename from Cura/fabmetheus_utilities/geometry/manipulation_matrix/rotate.py rename to Cura/cura_sf/fabmetheus_utilities/geometry/manipulation_matrix/rotate.py diff --git a/Cura/fabmetheus_utilities/geometry/manipulation_matrix/transform.py b/Cura/cura_sf/fabmetheus_utilities/geometry/manipulation_matrix/transform.py similarity index 100% rename from Cura/fabmetheus_utilities/geometry/manipulation_matrix/transform.py rename to Cura/cura_sf/fabmetheus_utilities/geometry/manipulation_matrix/transform.py diff --git a/Cura/fabmetheus_utilities/geometry/manipulation_matrix/translate.py b/Cura/cura_sf/fabmetheus_utilities/geometry/manipulation_matrix/translate.py similarity index 100% rename from Cura/fabmetheus_utilities/geometry/manipulation_matrix/translate.py rename to Cura/cura_sf/fabmetheus_utilities/geometry/manipulation_matrix/translate.py diff --git a/Cura/fabmetheus_utilities/geometry/manipulation_meta/__init__.py b/Cura/cura_sf/fabmetheus_utilities/geometry/manipulation_meta/__init__.py similarity index 100% rename from Cura/fabmetheus_utilities/geometry/manipulation_meta/__init__.py rename to Cura/cura_sf/fabmetheus_utilities/geometry/manipulation_meta/__init__.py diff --git a/Cura/fabmetheus_utilities/geometry/manipulation_meta/_array.py b/Cura/cura_sf/fabmetheus_utilities/geometry/manipulation_meta/_array.py similarity index 100% rename from Cura/fabmetheus_utilities/geometry/manipulation_meta/_array.py rename to Cura/cura_sf/fabmetheus_utilities/geometry/manipulation_meta/_array.py diff --git a/Cura/fabmetheus_utilities/geometry/manipulation_meta/_carve.py b/Cura/cura_sf/fabmetheus_utilities/geometry/manipulation_meta/_carve.py similarity index 100% rename from Cura/fabmetheus_utilities/geometry/manipulation_meta/_carve.py rename to Cura/cura_sf/fabmetheus_utilities/geometry/manipulation_meta/_carve.py diff --git a/Cura/fabmetheus_utilities/geometry/manipulation_meta/_copy.py b/Cura/cura_sf/fabmetheus_utilities/geometry/manipulation_meta/_copy.py similarity index 100% rename from Cura/fabmetheus_utilities/geometry/manipulation_meta/_copy.py rename to Cura/cura_sf/fabmetheus_utilities/geometry/manipulation_meta/_copy.py diff --git a/Cura/fabmetheus_utilities/geometry/manipulation_meta/disjoin.py b/Cura/cura_sf/fabmetheus_utilities/geometry/manipulation_meta/disjoin.py similarity index 100% rename from Cura/fabmetheus_utilities/geometry/manipulation_meta/disjoin.py rename to Cura/cura_sf/fabmetheus_utilities/geometry/manipulation_meta/disjoin.py diff --git a/Cura/fabmetheus_utilities/geometry/manipulation_meta/import.py b/Cura/cura_sf/fabmetheus_utilities/geometry/manipulation_meta/import.py similarity index 100% rename from Cura/fabmetheus_utilities/geometry/manipulation_meta/import.py rename to Cura/cura_sf/fabmetheus_utilities/geometry/manipulation_meta/import.py diff --git a/Cura/fabmetheus_utilities/geometry/manipulation_meta/write.py b/Cura/cura_sf/fabmetheus_utilities/geometry/manipulation_meta/write.py similarity index 100% rename from Cura/fabmetheus_utilities/geometry/manipulation_meta/write.py rename to Cura/cura_sf/fabmetheus_utilities/geometry/manipulation_meta/write.py diff --git a/Cura/fabmetheus_utilities/geometry/manipulation_paths/__init__.py b/Cura/cura_sf/fabmetheus_utilities/geometry/manipulation_paths/__init__.py similarity index 100% rename from Cura/fabmetheus_utilities/geometry/manipulation_paths/__init__.py rename to Cura/cura_sf/fabmetheus_utilities/geometry/manipulation_paths/__init__.py diff --git a/Cura/fabmetheus_utilities/geometry/manipulation_paths/bevel.py b/Cura/cura_sf/fabmetheus_utilities/geometry/manipulation_paths/bevel.py similarity index 100% rename from Cura/fabmetheus_utilities/geometry/manipulation_paths/bevel.py rename to Cura/cura_sf/fabmetheus_utilities/geometry/manipulation_paths/bevel.py diff --git a/Cura/fabmetheus_utilities/geometry/manipulation_paths/convex.py b/Cura/cura_sf/fabmetheus_utilities/geometry/manipulation_paths/convex.py similarity index 100% rename from Cura/fabmetheus_utilities/geometry/manipulation_paths/convex.py rename to Cura/cura_sf/fabmetheus_utilities/geometry/manipulation_paths/convex.py diff --git a/Cura/fabmetheus_utilities/geometry/manipulation_paths/outline.py b/Cura/cura_sf/fabmetheus_utilities/geometry/manipulation_paths/outline.py similarity index 100% rename from Cura/fabmetheus_utilities/geometry/manipulation_paths/outline.py rename to Cura/cura_sf/fabmetheus_utilities/geometry/manipulation_paths/outline.py diff --git a/Cura/fabmetheus_utilities/geometry/manipulation_paths/overhang.py b/Cura/cura_sf/fabmetheus_utilities/geometry/manipulation_paths/overhang.py similarity index 100% rename from Cura/fabmetheus_utilities/geometry/manipulation_paths/overhang.py rename to Cura/cura_sf/fabmetheus_utilities/geometry/manipulation_paths/overhang.py diff --git a/Cura/fabmetheus_utilities/geometry/manipulation_paths/round.py b/Cura/cura_sf/fabmetheus_utilities/geometry/manipulation_paths/round.py similarity index 100% rename from Cura/fabmetheus_utilities/geometry/manipulation_paths/round.py rename to Cura/cura_sf/fabmetheus_utilities/geometry/manipulation_paths/round.py diff --git a/Cura/fabmetheus_utilities/geometry/manipulation_paths/segment.py b/Cura/cura_sf/fabmetheus_utilities/geometry/manipulation_paths/segment.py similarity index 100% rename from Cura/fabmetheus_utilities/geometry/manipulation_paths/segment.py rename to Cura/cura_sf/fabmetheus_utilities/geometry/manipulation_paths/segment.py diff --git a/Cura/fabmetheus_utilities/geometry/manipulation_paths/wedge.py b/Cura/cura_sf/fabmetheus_utilities/geometry/manipulation_paths/wedge.py similarity index 100% rename from Cura/fabmetheus_utilities/geometry/manipulation_paths/wedge.py rename to Cura/cura_sf/fabmetheus_utilities/geometry/manipulation_paths/wedge.py diff --git a/Cura/fabmetheus_utilities/geometry/manipulation_shapes/__init__.py b/Cura/cura_sf/fabmetheus_utilities/geometry/manipulation_shapes/__init__.py similarity index 100% rename from Cura/fabmetheus_utilities/geometry/manipulation_shapes/__init__.py rename to Cura/cura_sf/fabmetheus_utilities/geometry/manipulation_shapes/__init__.py diff --git a/Cura/fabmetheus_utilities/geometry/manipulation_shapes/_bottom.py b/Cura/cura_sf/fabmetheus_utilities/geometry/manipulation_shapes/_bottom.py similarity index 100% rename from Cura/fabmetheus_utilities/geometry/manipulation_shapes/_bottom.py rename to Cura/cura_sf/fabmetheus_utilities/geometry/manipulation_shapes/_bottom.py diff --git a/Cura/fabmetheus_utilities/geometry/manipulation_shapes/_inset.py b/Cura/cura_sf/fabmetheus_utilities/geometry/manipulation_shapes/_inset.py similarity index 100% rename from Cura/fabmetheus_utilities/geometry/manipulation_shapes/_inset.py rename to Cura/cura_sf/fabmetheus_utilities/geometry/manipulation_shapes/_inset.py diff --git a/Cura/fabmetheus_utilities/geometry/manipulation_shapes/_outset.py b/Cura/cura_sf/fabmetheus_utilities/geometry/manipulation_shapes/_outset.py similarity index 100% rename from Cura/fabmetheus_utilities/geometry/manipulation_shapes/_outset.py rename to Cura/cura_sf/fabmetheus_utilities/geometry/manipulation_shapes/_outset.py diff --git a/Cura/fabmetheus_utilities/geometry/manipulation_shapes/equation.py b/Cura/cura_sf/fabmetheus_utilities/geometry/manipulation_shapes/equation.py similarity index 100% rename from Cura/fabmetheus_utilities/geometry/manipulation_shapes/equation.py rename to Cura/cura_sf/fabmetheus_utilities/geometry/manipulation_shapes/equation.py diff --git a/Cura/fabmetheus_utilities/geometry/manipulation_shapes/flip.py b/Cura/cura_sf/fabmetheus_utilities/geometry/manipulation_shapes/flip.py similarity index 100% rename from Cura/fabmetheus_utilities/geometry/manipulation_shapes/flip.py rename to Cura/cura_sf/fabmetheus_utilities/geometry/manipulation_shapes/flip.py diff --git a/Cura/fabmetheus_utilities/geometry/manipulation_shapes/mirror.py b/Cura/cura_sf/fabmetheus_utilities/geometry/manipulation_shapes/mirror.py similarity index 100% rename from Cura/fabmetheus_utilities/geometry/manipulation_shapes/mirror.py rename to Cura/cura_sf/fabmetheus_utilities/geometry/manipulation_shapes/mirror.py diff --git a/Cura/fabmetheus_utilities/geometry/solids/__init__.py b/Cura/cura_sf/fabmetheus_utilities/geometry/solids/__init__.py similarity index 100% rename from Cura/fabmetheus_utilities/geometry/solids/__init__.py rename to Cura/cura_sf/fabmetheus_utilities/geometry/solids/__init__.py diff --git a/Cura/fabmetheus_utilities/geometry/solids/cube.py b/Cura/cura_sf/fabmetheus_utilities/geometry/solids/cube.py similarity index 100% rename from Cura/fabmetheus_utilities/geometry/solids/cube.py rename to Cura/cura_sf/fabmetheus_utilities/geometry/solids/cube.py diff --git a/Cura/fabmetheus_utilities/geometry/solids/cylinder.py b/Cura/cura_sf/fabmetheus_utilities/geometry/solids/cylinder.py similarity index 100% rename from Cura/fabmetheus_utilities/geometry/solids/cylinder.py rename to Cura/cura_sf/fabmetheus_utilities/geometry/solids/cylinder.py diff --git a/Cura/fabmetheus_utilities/geometry/solids/difference.py b/Cura/cura_sf/fabmetheus_utilities/geometry/solids/difference.py similarity index 100% rename from Cura/fabmetheus_utilities/geometry/solids/difference.py rename to Cura/cura_sf/fabmetheus_utilities/geometry/solids/difference.py diff --git a/Cura/fabmetheus_utilities/geometry/solids/group.py b/Cura/cura_sf/fabmetheus_utilities/geometry/solids/group.py similarity index 100% rename from Cura/fabmetheus_utilities/geometry/solids/group.py rename to Cura/cura_sf/fabmetheus_utilities/geometry/solids/group.py diff --git a/Cura/fabmetheus_utilities/geometry/solids/intersection.py b/Cura/cura_sf/fabmetheus_utilities/geometry/solids/intersection.py similarity index 100% rename from Cura/fabmetheus_utilities/geometry/solids/intersection.py rename to Cura/cura_sf/fabmetheus_utilities/geometry/solids/intersection.py diff --git a/Cura/fabmetheus_utilities/geometry/solids/sphere.py b/Cura/cura_sf/fabmetheus_utilities/geometry/solids/sphere.py similarity index 100% rename from Cura/fabmetheus_utilities/geometry/solids/sphere.py rename to Cura/cura_sf/fabmetheus_utilities/geometry/solids/sphere.py diff --git a/Cura/fabmetheus_utilities/geometry/solids/triangle_mesh.py b/Cura/cura_sf/fabmetheus_utilities/geometry/solids/triangle_mesh.py similarity index 100% rename from Cura/fabmetheus_utilities/geometry/solids/triangle_mesh.py rename to Cura/cura_sf/fabmetheus_utilities/geometry/solids/triangle_mesh.py diff --git a/Cura/fabmetheus_utilities/geometry/solids/union.py b/Cura/cura_sf/fabmetheus_utilities/geometry/solids/union.py similarity index 100% rename from Cura/fabmetheus_utilities/geometry/solids/union.py rename to Cura/cura_sf/fabmetheus_utilities/geometry/solids/union.py diff --git a/Cura/fabmetheus_utilities/geometry/statements/__init__.py b/Cura/cura_sf/fabmetheus_utilities/geometry/statements/__init__.py similarity index 100% rename from Cura/fabmetheus_utilities/geometry/statements/__init__.py rename to Cura/cura_sf/fabmetheus_utilities/geometry/statements/__init__.py diff --git a/Cura/fabmetheus_utilities/geometry/statements/_print.py b/Cura/cura_sf/fabmetheus_utilities/geometry/statements/_print.py similarity index 100% rename from Cura/fabmetheus_utilities/geometry/statements/_print.py rename to Cura/cura_sf/fabmetheus_utilities/geometry/statements/_print.py diff --git a/Cura/fabmetheus_utilities/geometry/statements/class.py b/Cura/cura_sf/fabmetheus_utilities/geometry/statements/class.py similarity index 100% rename from Cura/fabmetheus_utilities/geometry/statements/class.py rename to Cura/cura_sf/fabmetheus_utilities/geometry/statements/class.py diff --git a/Cura/fabmetheus_utilities/geometry/statements/elif.py b/Cura/cura_sf/fabmetheus_utilities/geometry/statements/elif.py similarity index 100% rename from Cura/fabmetheus_utilities/geometry/statements/elif.py rename to Cura/cura_sf/fabmetheus_utilities/geometry/statements/elif.py diff --git a/Cura/fabmetheus_utilities/geometry/statements/else.py b/Cura/cura_sf/fabmetheus_utilities/geometry/statements/else.py similarity index 100% rename from Cura/fabmetheus_utilities/geometry/statements/else.py rename to Cura/cura_sf/fabmetheus_utilities/geometry/statements/else.py diff --git a/Cura/fabmetheus_utilities/geometry/statements/for.py b/Cura/cura_sf/fabmetheus_utilities/geometry/statements/for.py similarity index 100% rename from Cura/fabmetheus_utilities/geometry/statements/for.py rename to Cura/cura_sf/fabmetheus_utilities/geometry/statements/for.py diff --git a/Cura/fabmetheus_utilities/geometry/statements/function.py b/Cura/cura_sf/fabmetheus_utilities/geometry/statements/function.py similarity index 100% rename from Cura/fabmetheus_utilities/geometry/statements/function.py rename to Cura/cura_sf/fabmetheus_utilities/geometry/statements/function.py diff --git a/Cura/fabmetheus_utilities/geometry/statements/if.py b/Cura/cura_sf/fabmetheus_utilities/geometry/statements/if.py similarity index 100% rename from Cura/fabmetheus_utilities/geometry/statements/if.py rename to Cura/cura_sf/fabmetheus_utilities/geometry/statements/if.py diff --git a/Cura/fabmetheus_utilities/geometry/statements/return.py b/Cura/cura_sf/fabmetheus_utilities/geometry/statements/return.py similarity index 100% rename from Cura/fabmetheus_utilities/geometry/statements/return.py rename to Cura/cura_sf/fabmetheus_utilities/geometry/statements/return.py diff --git a/Cura/fabmetheus_utilities/geometry/statements/statement.py b/Cura/cura_sf/fabmetheus_utilities/geometry/statements/statement.py similarity index 100% rename from Cura/fabmetheus_utilities/geometry/statements/statement.py rename to Cura/cura_sf/fabmetheus_utilities/geometry/statements/statement.py diff --git a/Cura/fabmetheus_utilities/geometry/statements/while.py b/Cura/cura_sf/fabmetheus_utilities/geometry/statements/while.py similarity index 100% rename from Cura/fabmetheus_utilities/geometry/statements/while.py rename to Cura/cura_sf/fabmetheus_utilities/geometry/statements/while.py diff --git a/Cura/fabmetheus_utilities/geometry_plugins/__init__.py b/Cura/cura_sf/fabmetheus_utilities/geometry_plugins/__init__.py similarity index 100% rename from Cura/fabmetheus_utilities/geometry_plugins/__init__.py rename to Cura/cura_sf/fabmetheus_utilities/geometry_plugins/__init__.py diff --git a/Cura/fabmetheus_utilities/geometry_plugins/creation/__init__.py b/Cura/cura_sf/fabmetheus_utilities/geometry_plugins/creation/__init__.py similarity index 100% rename from Cura/fabmetheus_utilities/geometry_plugins/creation/__init__.py rename to Cura/cura_sf/fabmetheus_utilities/geometry_plugins/creation/__init__.py diff --git a/Cura/fabmetheus_utilities/geometry_plugins/manipulation_matrix/__init__.py b/Cura/cura_sf/fabmetheus_utilities/geometry_plugins/manipulation_matrix/__init__.py similarity index 100% rename from Cura/fabmetheus_utilities/geometry_plugins/manipulation_matrix/__init__.py rename to Cura/cura_sf/fabmetheus_utilities/geometry_plugins/manipulation_matrix/__init__.py diff --git a/Cura/fabmetheus_utilities/geometry_plugins/manipulation_meta/__init__.py b/Cura/cura_sf/fabmetheus_utilities/geometry_plugins/manipulation_meta/__init__.py similarity index 100% rename from Cura/fabmetheus_utilities/geometry_plugins/manipulation_meta/__init__.py rename to Cura/cura_sf/fabmetheus_utilities/geometry_plugins/manipulation_meta/__init__.py diff --git a/Cura/fabmetheus_utilities/geometry_plugins/manipulation_paths/__init__.py b/Cura/cura_sf/fabmetheus_utilities/geometry_plugins/manipulation_paths/__init__.py similarity index 100% rename from Cura/fabmetheus_utilities/geometry_plugins/manipulation_paths/__init__.py rename to Cura/cura_sf/fabmetheus_utilities/geometry_plugins/manipulation_paths/__init__.py diff --git a/Cura/fabmetheus_utilities/geometry_plugins/manipulation_shapes/__init__.py b/Cura/cura_sf/fabmetheus_utilities/geometry_plugins/manipulation_shapes/__init__.py similarity index 100% rename from Cura/fabmetheus_utilities/geometry_plugins/manipulation_shapes/__init__.py rename to Cura/cura_sf/fabmetheus_utilities/geometry_plugins/manipulation_shapes/__init__.py diff --git a/Cura/fabmetheus_utilities/intercircle.py b/Cura/cura_sf/fabmetheus_utilities/intercircle.py similarity index 100% rename from Cura/fabmetheus_utilities/intercircle.py rename to Cura/cura_sf/fabmetheus_utilities/intercircle.py diff --git a/Cura/fabmetheus_utilities/settings.py b/Cura/cura_sf/fabmetheus_utilities/settings.py similarity index 99% rename from Cura/fabmetheus_utilities/settings.py rename to Cura/cura_sf/fabmetheus_utilities/settings.py index 567b5a8..626bb04 100644 --- a/Cura/fabmetheus_utilities/settings.py +++ b/Cura/cura_sf/fabmetheus_utilities/settings.py @@ -10,7 +10,7 @@ import __init__ import os, sys import types, math -from newui import profile +from gui import profile from fabmetheus_utilities import archive def DEFSET(setting): diff --git a/Cura/fabmetheus_utilities/svg_reader.py b/Cura/cura_sf/fabmetheus_utilities/svg_reader.py similarity index 100% rename from Cura/fabmetheus_utilities/svg_reader.py rename to Cura/cura_sf/fabmetheus_utilities/svg_reader.py diff --git a/Cura/fabmetheus_utilities/svg_writer.py b/Cura/cura_sf/fabmetheus_utilities/svg_writer.py similarity index 100% rename from Cura/fabmetheus_utilities/svg_writer.py rename to Cura/cura_sf/fabmetheus_utilities/svg_writer.py diff --git a/Cura/fabmetheus_utilities/templates/canvas_template.svg b/Cura/cura_sf/fabmetheus_utilities/templates/canvas_template.svg similarity index 100% rename from Cura/fabmetheus_utilities/templates/canvas_template.svg rename to Cura/cura_sf/fabmetheus_utilities/templates/canvas_template.svg diff --git a/Cura/fabmetheus_utilities/templates/layer_template.svg b/Cura/cura_sf/fabmetheus_utilities/templates/layer_template.svg similarity index 100% rename from Cura/fabmetheus_utilities/templates/layer_template.svg rename to Cura/cura_sf/fabmetheus_utilities/templates/layer_template.svg diff --git a/Cura/fabmetheus_utilities/vector3.py b/Cura/cura_sf/fabmetheus_utilities/vector3.py similarity index 100% rename from Cura/fabmetheus_utilities/vector3.py rename to Cura/cura_sf/fabmetheus_utilities/vector3.py diff --git a/Cura/fabmetheus_utilities/vector3index.py b/Cura/cura_sf/fabmetheus_utilities/vector3index.py similarity index 100% rename from Cura/fabmetheus_utilities/vector3index.py rename to Cura/cura_sf/fabmetheus_utilities/vector3index.py diff --git a/Cura/fabmetheus_utilities/version.txt b/Cura/cura_sf/fabmetheus_utilities/version.txt similarity index 100% rename from Cura/fabmetheus_utilities/version.txt rename to Cura/cura_sf/fabmetheus_utilities/version.txt diff --git a/Cura/fabmetheus_utilities/xml_simple_reader.py b/Cura/cura_sf/fabmetheus_utilities/xml_simple_reader.py similarity index 100% rename from Cura/fabmetheus_utilities/xml_simple_reader.py rename to Cura/cura_sf/fabmetheus_utilities/xml_simple_reader.py diff --git a/Cura/fabmetheus_utilities/xml_simple_writer.py b/Cura/cura_sf/fabmetheus_utilities/xml_simple_writer.py similarity index 100% rename from Cura/fabmetheus_utilities/xml_simple_writer.py rename to Cura/cura_sf/fabmetheus_utilities/xml_simple_writer.py diff --git a/Cura/skeinforge_application/__init__.py b/Cura/cura_sf/skeinforge_application/__init__.py similarity index 100% rename from Cura/skeinforge_application/__init__.py rename to Cura/cura_sf/skeinforge_application/__init__.py diff --git a/Cura/skeinforge_application/skeinforge_plugins/__init__.py b/Cura/cura_sf/skeinforge_application/skeinforge_plugins/__init__.py similarity index 100% rename from Cura/skeinforge_application/skeinforge_plugins/__init__.py rename to Cura/cura_sf/skeinforge_application/skeinforge_plugins/__init__.py diff --git a/Cura/skeinforge_application/skeinforge_plugins/analyze.py b/Cura/cura_sf/skeinforge_application/skeinforge_plugins/analyze.py similarity index 100% rename from Cura/skeinforge_application/skeinforge_plugins/analyze.py rename to Cura/cura_sf/skeinforge_application/skeinforge_plugins/analyze.py diff --git a/Cura/skeinforge_application/skeinforge_plugins/analyze_plugins/__init__.py b/Cura/cura_sf/skeinforge_application/skeinforge_plugins/analyze_plugins/__init__.py similarity index 100% rename from Cura/skeinforge_application/skeinforge_plugins/analyze_plugins/__init__.py rename to Cura/cura_sf/skeinforge_application/skeinforge_plugins/analyze_plugins/__init__.py diff --git a/Cura/skeinforge_application/skeinforge_plugins/craft.py b/Cura/cura_sf/skeinforge_application/skeinforge_plugins/craft.py similarity index 100% rename from Cura/skeinforge_application/skeinforge_plugins/craft.py rename to Cura/cura_sf/skeinforge_application/skeinforge_plugins/craft.py diff --git a/Cura/skeinforge_application/skeinforge_plugins/craft_plugins/__init__.py b/Cura/cura_sf/skeinforge_application/skeinforge_plugins/craft_plugins/__init__.py similarity index 100% rename from Cura/skeinforge_application/skeinforge_plugins/craft_plugins/__init__.py rename to Cura/cura_sf/skeinforge_application/skeinforge_plugins/craft_plugins/__init__.py diff --git a/Cura/skeinforge_application/skeinforge_plugins/craft_plugins/alteration.py b/Cura/cura_sf/skeinforge_application/skeinforge_plugins/craft_plugins/alteration.py similarity index 100% rename from Cura/skeinforge_application/skeinforge_plugins/craft_plugins/alteration.py rename to Cura/cura_sf/skeinforge_application/skeinforge_plugins/craft_plugins/alteration.py diff --git a/Cura/skeinforge_application/skeinforge_plugins/craft_plugins/bottom.py b/Cura/cura_sf/skeinforge_application/skeinforge_plugins/craft_plugins/bottom.py similarity index 100% rename from Cura/skeinforge_application/skeinforge_plugins/craft_plugins/bottom.py rename to Cura/cura_sf/skeinforge_application/skeinforge_plugins/craft_plugins/bottom.py diff --git a/Cura/skeinforge_application/skeinforge_plugins/craft_plugins/carve.py b/Cura/cura_sf/skeinforge_application/skeinforge_plugins/craft_plugins/carve.py similarity index 100% rename from Cura/skeinforge_application/skeinforge_plugins/craft_plugins/carve.py rename to Cura/cura_sf/skeinforge_application/skeinforge_plugins/craft_plugins/carve.py diff --git a/Cura/skeinforge_application/skeinforge_plugins/craft_plugins/chamber.py b/Cura/cura_sf/skeinforge_application/skeinforge_plugins/craft_plugins/chamber.py similarity index 100% rename from Cura/skeinforge_application/skeinforge_plugins/craft_plugins/chamber.py rename to Cura/cura_sf/skeinforge_application/skeinforge_plugins/craft_plugins/chamber.py diff --git a/Cura/skeinforge_application/skeinforge_plugins/craft_plugins/chop.py b/Cura/cura_sf/skeinforge_application/skeinforge_plugins/craft_plugins/chop.py similarity index 100% rename from Cura/skeinforge_application/skeinforge_plugins/craft_plugins/chop.py rename to Cura/cura_sf/skeinforge_application/skeinforge_plugins/craft_plugins/chop.py diff --git a/Cura/skeinforge_application/skeinforge_plugins/craft_plugins/cleave.py b/Cura/cura_sf/skeinforge_application/skeinforge_plugins/craft_plugins/cleave.py similarity index 100% rename from Cura/skeinforge_application/skeinforge_plugins/craft_plugins/cleave.py rename to Cura/cura_sf/skeinforge_application/skeinforge_plugins/craft_plugins/cleave.py diff --git a/Cura/skeinforge_application/skeinforge_plugins/craft_plugins/clip.py b/Cura/cura_sf/skeinforge_application/skeinforge_plugins/craft_plugins/clip.py similarity index 100% rename from Cura/skeinforge_application/skeinforge_plugins/craft_plugins/clip.py rename to Cura/cura_sf/skeinforge_application/skeinforge_plugins/craft_plugins/clip.py diff --git a/Cura/skeinforge_application/skeinforge_plugins/craft_plugins/coil.py b/Cura/cura_sf/skeinforge_application/skeinforge_plugins/craft_plugins/coil.py similarity index 100% rename from Cura/skeinforge_application/skeinforge_plugins/craft_plugins/coil.py rename to Cura/cura_sf/skeinforge_application/skeinforge_plugins/craft_plugins/coil.py diff --git a/Cura/skeinforge_application/skeinforge_plugins/craft_plugins/comb.py b/Cura/cura_sf/skeinforge_application/skeinforge_plugins/craft_plugins/comb.py similarity index 100% rename from Cura/skeinforge_application/skeinforge_plugins/craft_plugins/comb.py rename to Cura/cura_sf/skeinforge_application/skeinforge_plugins/craft_plugins/comb.py diff --git a/Cura/skeinforge_application/skeinforge_plugins/craft_plugins/cool.py b/Cura/cura_sf/skeinforge_application/skeinforge_plugins/craft_plugins/cool.py similarity index 100% rename from Cura/skeinforge_application/skeinforge_plugins/craft_plugins/cool.py rename to Cura/cura_sf/skeinforge_application/skeinforge_plugins/craft_plugins/cool.py diff --git a/Cura/skeinforge_application/skeinforge_plugins/craft_plugins/dimension.py b/Cura/cura_sf/skeinforge_application/skeinforge_plugins/craft_plugins/dimension.py similarity index 100% rename from Cura/skeinforge_application/skeinforge_plugins/craft_plugins/dimension.py rename to Cura/cura_sf/skeinforge_application/skeinforge_plugins/craft_plugins/dimension.py diff --git a/Cura/skeinforge_application/skeinforge_plugins/craft_plugins/drill.py b/Cura/cura_sf/skeinforge_application/skeinforge_plugins/craft_plugins/drill.py similarity index 100% rename from Cura/skeinforge_application/skeinforge_plugins/craft_plugins/drill.py rename to Cura/cura_sf/skeinforge_application/skeinforge_plugins/craft_plugins/drill.py diff --git a/Cura/skeinforge_application/skeinforge_plugins/craft_plugins/dwindle.py b/Cura/cura_sf/skeinforge_application/skeinforge_plugins/craft_plugins/dwindle.py similarity index 100% rename from Cura/skeinforge_application/skeinforge_plugins/craft_plugins/dwindle.py rename to Cura/cura_sf/skeinforge_application/skeinforge_plugins/craft_plugins/dwindle.py diff --git a/Cura/skeinforge_application/skeinforge_plugins/craft_plugins/export.py b/Cura/cura_sf/skeinforge_application/skeinforge_plugins/craft_plugins/export.py similarity index 100% rename from Cura/skeinforge_application/skeinforge_plugins/craft_plugins/export.py rename to Cura/cura_sf/skeinforge_application/skeinforge_plugins/craft_plugins/export.py diff --git a/Cura/skeinforge_application/skeinforge_plugins/craft_plugins/export_plugins/__init__.py b/Cura/cura_sf/skeinforge_application/skeinforge_plugins/craft_plugins/export_plugins/__init__.py similarity index 100% rename from Cura/skeinforge_application/skeinforge_plugins/craft_plugins/export_plugins/__init__.py rename to Cura/cura_sf/skeinforge_application/skeinforge_plugins/craft_plugins/export_plugins/__init__.py diff --git a/Cura/skeinforge_application/skeinforge_plugins/craft_plugins/export_plugins/binary_16_byte.py b/Cura/cura_sf/skeinforge_application/skeinforge_plugins/craft_plugins/export_plugins/binary_16_byte.py similarity index 100% rename from Cura/skeinforge_application/skeinforge_plugins/craft_plugins/export_plugins/binary_16_byte.py rename to Cura/cura_sf/skeinforge_application/skeinforge_plugins/craft_plugins/export_plugins/binary_16_byte.py diff --git a/Cura/skeinforge_application/skeinforge_plugins/craft_plugins/export_plugins/gcode_step.py b/Cura/cura_sf/skeinforge_application/skeinforge_plugins/craft_plugins/export_plugins/gcode_step.py similarity index 100% rename from Cura/skeinforge_application/skeinforge_plugins/craft_plugins/export_plugins/gcode_step.py rename to Cura/cura_sf/skeinforge_application/skeinforge_plugins/craft_plugins/export_plugins/gcode_step.py diff --git a/Cura/skeinforge_application/skeinforge_plugins/craft_plugins/export_plugins/gcode_time_segment.py b/Cura/cura_sf/skeinforge_application/skeinforge_plugins/craft_plugins/export_plugins/gcode_time_segment.py similarity index 100% rename from Cura/skeinforge_application/skeinforge_plugins/craft_plugins/export_plugins/gcode_time_segment.py rename to Cura/cura_sf/skeinforge_application/skeinforge_plugins/craft_plugins/export_plugins/gcode_time_segment.py diff --git a/Cura/skeinforge_application/skeinforge_plugins/craft_plugins/export_plugins/static_plugins/__init__.py b/Cura/cura_sf/skeinforge_application/skeinforge_plugins/craft_plugins/export_plugins/static_plugins/__init__.py similarity index 100% rename from Cura/skeinforge_application/skeinforge_plugins/craft_plugins/export_plugins/static_plugins/__init__.py rename to Cura/cura_sf/skeinforge_application/skeinforge_plugins/craft_plugins/export_plugins/static_plugins/__init__.py diff --git a/Cura/skeinforge_application/skeinforge_plugins/craft_plugins/export_plugins/static_plugins/gcode_small.py b/Cura/cura_sf/skeinforge_application/skeinforge_plugins/craft_plugins/export_plugins/static_plugins/gcode_small.py similarity index 100% rename from Cura/skeinforge_application/skeinforge_plugins/craft_plugins/export_plugins/static_plugins/gcode_small.py rename to Cura/cura_sf/skeinforge_application/skeinforge_plugins/craft_plugins/export_plugins/static_plugins/gcode_small.py diff --git a/Cura/skeinforge_application/skeinforge_plugins/craft_plugins/feed.py b/Cura/cura_sf/skeinforge_application/skeinforge_plugins/craft_plugins/feed.py similarity index 100% rename from Cura/skeinforge_application/skeinforge_plugins/craft_plugins/feed.py rename to Cura/cura_sf/skeinforge_application/skeinforge_plugins/craft_plugins/feed.py diff --git a/Cura/skeinforge_application/skeinforge_plugins/craft_plugins/fill.py b/Cura/cura_sf/skeinforge_application/skeinforge_plugins/craft_plugins/fill.py similarity index 100% rename from Cura/skeinforge_application/skeinforge_plugins/craft_plugins/fill.py rename to Cura/cura_sf/skeinforge_application/skeinforge_plugins/craft_plugins/fill.py diff --git a/Cura/skeinforge_application/skeinforge_plugins/craft_plugins/fillet.py b/Cura/cura_sf/skeinforge_application/skeinforge_plugins/craft_plugins/fillet.py similarity index 100% rename from Cura/skeinforge_application/skeinforge_plugins/craft_plugins/fillet.py rename to Cura/cura_sf/skeinforge_application/skeinforge_plugins/craft_plugins/fillet.py diff --git a/Cura/skeinforge_application/skeinforge_plugins/craft_plugins/flow.py b/Cura/cura_sf/skeinforge_application/skeinforge_plugins/craft_plugins/flow.py similarity index 100% rename from Cura/skeinforge_application/skeinforge_plugins/craft_plugins/flow.py rename to Cura/cura_sf/skeinforge_application/skeinforge_plugins/craft_plugins/flow.py diff --git a/Cura/skeinforge_application/skeinforge_plugins/craft_plugins/home.py b/Cura/cura_sf/skeinforge_application/skeinforge_plugins/craft_plugins/home.py similarity index 100% rename from Cura/skeinforge_application/skeinforge_plugins/craft_plugins/home.py rename to Cura/cura_sf/skeinforge_application/skeinforge_plugins/craft_plugins/home.py diff --git a/Cura/skeinforge_application/skeinforge_plugins/craft_plugins/hop.py b/Cura/cura_sf/skeinforge_application/skeinforge_plugins/craft_plugins/hop.py similarity index 100% rename from Cura/skeinforge_application/skeinforge_plugins/craft_plugins/hop.py rename to Cura/cura_sf/skeinforge_application/skeinforge_plugins/craft_plugins/hop.py diff --git a/Cura/skeinforge_application/skeinforge_plugins/craft_plugins/inset.py b/Cura/cura_sf/skeinforge_application/skeinforge_plugins/craft_plugins/inset.py similarity index 100% rename from Cura/skeinforge_application/skeinforge_plugins/craft_plugins/inset.py rename to Cura/cura_sf/skeinforge_application/skeinforge_plugins/craft_plugins/inset.py diff --git a/Cura/skeinforge_application/skeinforge_plugins/craft_plugins/jitter.py b/Cura/cura_sf/skeinforge_application/skeinforge_plugins/craft_plugins/jitter.py similarity index 100% rename from Cura/skeinforge_application/skeinforge_plugins/craft_plugins/jitter.py rename to Cura/cura_sf/skeinforge_application/skeinforge_plugins/craft_plugins/jitter.py diff --git a/Cura/skeinforge_application/skeinforge_plugins/craft_plugins/joris.py b/Cura/cura_sf/skeinforge_application/skeinforge_plugins/craft_plugins/joris.py similarity index 100% rename from Cura/skeinforge_application/skeinforge_plugins/craft_plugins/joris.py rename to Cura/cura_sf/skeinforge_application/skeinforge_plugins/craft_plugins/joris.py diff --git a/Cura/skeinforge_application/skeinforge_plugins/craft_plugins/lash.py b/Cura/cura_sf/skeinforge_application/skeinforge_plugins/craft_plugins/lash.py similarity index 100% rename from Cura/skeinforge_application/skeinforge_plugins/craft_plugins/lash.py rename to Cura/cura_sf/skeinforge_application/skeinforge_plugins/craft_plugins/lash.py diff --git a/Cura/skeinforge_application/skeinforge_plugins/craft_plugins/lift.py b/Cura/cura_sf/skeinforge_application/skeinforge_plugins/craft_plugins/lift.py similarity index 100% rename from Cura/skeinforge_application/skeinforge_plugins/craft_plugins/lift.py rename to Cura/cura_sf/skeinforge_application/skeinforge_plugins/craft_plugins/lift.py diff --git a/Cura/skeinforge_application/skeinforge_plugins/craft_plugins/limit.py b/Cura/cura_sf/skeinforge_application/skeinforge_plugins/craft_plugins/limit.py similarity index 100% rename from Cura/skeinforge_application/skeinforge_plugins/craft_plugins/limit.py rename to Cura/cura_sf/skeinforge_application/skeinforge_plugins/craft_plugins/limit.py diff --git a/Cura/skeinforge_application/skeinforge_plugins/craft_plugins/mill.py b/Cura/cura_sf/skeinforge_application/skeinforge_plugins/craft_plugins/mill.py similarity index 100% rename from Cura/skeinforge_application/skeinforge_plugins/craft_plugins/mill.py rename to Cura/cura_sf/skeinforge_application/skeinforge_plugins/craft_plugins/mill.py diff --git a/Cura/skeinforge_application/skeinforge_plugins/craft_plugins/multiply.py b/Cura/cura_sf/skeinforge_application/skeinforge_plugins/craft_plugins/multiply.py similarity index 100% rename from Cura/skeinforge_application/skeinforge_plugins/craft_plugins/multiply.py rename to Cura/cura_sf/skeinforge_application/skeinforge_plugins/craft_plugins/multiply.py diff --git a/Cura/skeinforge_application/skeinforge_plugins/craft_plugins/oozebane.py b/Cura/cura_sf/skeinforge_application/skeinforge_plugins/craft_plugins/oozebane.py similarity index 100% rename from Cura/skeinforge_application/skeinforge_plugins/craft_plugins/oozebane.py rename to Cura/cura_sf/skeinforge_application/skeinforge_plugins/craft_plugins/oozebane.py diff --git a/Cura/skeinforge_application/skeinforge_plugins/craft_plugins/outset.py b/Cura/cura_sf/skeinforge_application/skeinforge_plugins/craft_plugins/outset.py similarity index 100% rename from Cura/skeinforge_application/skeinforge_plugins/craft_plugins/outset.py rename to Cura/cura_sf/skeinforge_application/skeinforge_plugins/craft_plugins/outset.py diff --git a/Cura/skeinforge_application/skeinforge_plugins/craft_plugins/preface.py b/Cura/cura_sf/skeinforge_application/skeinforge_plugins/craft_plugins/preface.py similarity index 100% rename from Cura/skeinforge_application/skeinforge_plugins/craft_plugins/preface.py rename to Cura/cura_sf/skeinforge_application/skeinforge_plugins/craft_plugins/preface.py diff --git a/Cura/skeinforge_application/skeinforge_plugins/craft_plugins/raft.py b/Cura/cura_sf/skeinforge_application/skeinforge_plugins/craft_plugins/raft.py similarity index 100% rename from Cura/skeinforge_application/skeinforge_plugins/craft_plugins/raft.py rename to Cura/cura_sf/skeinforge_application/skeinforge_plugins/craft_plugins/raft.py diff --git a/Cura/skeinforge_application/skeinforge_plugins/craft_plugins/scale.py b/Cura/cura_sf/skeinforge_application/skeinforge_plugins/craft_plugins/scale.py similarity index 100% rename from Cura/skeinforge_application/skeinforge_plugins/craft_plugins/scale.py rename to Cura/cura_sf/skeinforge_application/skeinforge_plugins/craft_plugins/scale.py diff --git a/Cura/skeinforge_application/skeinforge_plugins/craft_plugins/skin.py b/Cura/cura_sf/skeinforge_application/skeinforge_plugins/craft_plugins/skin.py similarity index 100% rename from Cura/skeinforge_application/skeinforge_plugins/craft_plugins/skin.py rename to Cura/cura_sf/skeinforge_application/skeinforge_plugins/craft_plugins/skin.py diff --git a/Cura/skeinforge_application/skeinforge_plugins/craft_plugins/skirt.py b/Cura/cura_sf/skeinforge_application/skeinforge_plugins/craft_plugins/skirt.py similarity index 100% rename from Cura/skeinforge_application/skeinforge_plugins/craft_plugins/skirt.py rename to Cura/cura_sf/skeinforge_application/skeinforge_plugins/craft_plugins/skirt.py diff --git a/Cura/skeinforge_application/skeinforge_plugins/craft_plugins/smooth.py b/Cura/cura_sf/skeinforge_application/skeinforge_plugins/craft_plugins/smooth.py similarity index 100% rename from Cura/skeinforge_application/skeinforge_plugins/craft_plugins/smooth.py rename to Cura/cura_sf/skeinforge_application/skeinforge_plugins/craft_plugins/smooth.py diff --git a/Cura/skeinforge_application/skeinforge_plugins/craft_plugins/speed.py b/Cura/cura_sf/skeinforge_application/skeinforge_plugins/craft_plugins/speed.py similarity index 100% rename from Cura/skeinforge_application/skeinforge_plugins/craft_plugins/speed.py rename to Cura/cura_sf/skeinforge_application/skeinforge_plugins/craft_plugins/speed.py diff --git a/Cura/skeinforge_application/skeinforge_plugins/craft_plugins/splodge.py b/Cura/cura_sf/skeinforge_application/skeinforge_plugins/craft_plugins/splodge.py similarity index 100% rename from Cura/skeinforge_application/skeinforge_plugins/craft_plugins/splodge.py rename to Cura/cura_sf/skeinforge_application/skeinforge_plugins/craft_plugins/splodge.py diff --git a/Cura/skeinforge_application/skeinforge_plugins/craft_plugins/stretch.py b/Cura/cura_sf/skeinforge_application/skeinforge_plugins/craft_plugins/stretch.py similarity index 100% rename from Cura/skeinforge_application/skeinforge_plugins/craft_plugins/stretch.py rename to Cura/cura_sf/skeinforge_application/skeinforge_plugins/craft_plugins/stretch.py diff --git a/Cura/skeinforge_application/skeinforge_plugins/craft_plugins/temperature.py b/Cura/cura_sf/skeinforge_application/skeinforge_plugins/craft_plugins/temperature.py similarity index 100% rename from Cura/skeinforge_application/skeinforge_plugins/craft_plugins/temperature.py rename to Cura/cura_sf/skeinforge_application/skeinforge_plugins/craft_plugins/temperature.py diff --git a/Cura/skeinforge_application/skeinforge_plugins/craft_plugins/tower.py b/Cura/cura_sf/skeinforge_application/skeinforge_plugins/craft_plugins/tower.py similarity index 100% rename from Cura/skeinforge_application/skeinforge_plugins/craft_plugins/tower.py rename to Cura/cura_sf/skeinforge_application/skeinforge_plugins/craft_plugins/tower.py diff --git a/Cura/skeinforge_application/skeinforge_plugins/craft_plugins/unpause.py b/Cura/cura_sf/skeinforge_application/skeinforge_plugins/craft_plugins/unpause.py similarity index 100% rename from Cura/skeinforge_application/skeinforge_plugins/craft_plugins/unpause.py rename to Cura/cura_sf/skeinforge_application/skeinforge_plugins/craft_plugins/unpause.py diff --git a/Cura/skeinforge_application/skeinforge_plugins/craft_plugins/whittle.py b/Cura/cura_sf/skeinforge_application/skeinforge_plugins/craft_plugins/whittle.py similarity index 100% rename from Cura/skeinforge_application/skeinforge_plugins/craft_plugins/whittle.py rename to Cura/cura_sf/skeinforge_application/skeinforge_plugins/craft_plugins/whittle.py diff --git a/Cura/skeinforge_application/skeinforge_plugins/craft_plugins/widen.py b/Cura/cura_sf/skeinforge_application/skeinforge_plugins/craft_plugins/widen.py similarity index 100% rename from Cura/skeinforge_application/skeinforge_plugins/craft_plugins/widen.py rename to Cura/cura_sf/skeinforge_application/skeinforge_plugins/craft_plugins/widen.py diff --git a/Cura/skeinforge_application/skeinforge_plugins/craft_plugins/wipe.py b/Cura/cura_sf/skeinforge_application/skeinforge_plugins/craft_plugins/wipe.py similarity index 100% rename from Cura/skeinforge_application/skeinforge_plugins/craft_plugins/wipe.py rename to Cura/cura_sf/skeinforge_application/skeinforge_plugins/craft_plugins/wipe.py diff --git a/Cura/skeinforge_application/skeinforge_plugins/help.py b/Cura/cura_sf/skeinforge_application/skeinforge_plugins/help.py similarity index 100% rename from Cura/skeinforge_application/skeinforge_plugins/help.py rename to Cura/cura_sf/skeinforge_application/skeinforge_plugins/help.py diff --git a/Cura/skeinforge_application/skeinforge_plugins/meta.py b/Cura/cura_sf/skeinforge_application/skeinforge_plugins/meta.py similarity index 100% rename from Cura/skeinforge_application/skeinforge_plugins/meta.py rename to Cura/cura_sf/skeinforge_application/skeinforge_plugins/meta.py diff --git a/Cura/skeinforge_application/skeinforge_plugins/meta_plugins/__init__.py b/Cura/cura_sf/skeinforge_application/skeinforge_plugins/meta_plugins/__init__.py similarity index 100% rename from Cura/skeinforge_application/skeinforge_plugins/meta_plugins/__init__.py rename to Cura/cura_sf/skeinforge_application/skeinforge_plugins/meta_plugins/__init__.py diff --git a/Cura/skeinforge_application/skeinforge_plugins/meta_plugins/description.py b/Cura/cura_sf/skeinforge_application/skeinforge_plugins/meta_plugins/description.py similarity index 100% rename from Cura/skeinforge_application/skeinforge_plugins/meta_plugins/description.py rename to Cura/cura_sf/skeinforge_application/skeinforge_plugins/meta_plugins/description.py diff --git a/Cura/skeinforge_application/skeinforge_plugins/meta_plugins/polyfile.py b/Cura/cura_sf/skeinforge_application/skeinforge_plugins/meta_plugins/polyfile.py similarity index 100% rename from Cura/skeinforge_application/skeinforge_plugins/meta_plugins/polyfile.py rename to Cura/cura_sf/skeinforge_application/skeinforge_plugins/meta_plugins/polyfile.py diff --git a/Cura/skeinforge_application/skeinforge_plugins/profile.py b/Cura/cura_sf/skeinforge_application/skeinforge_plugins/profile.py similarity index 100% rename from Cura/skeinforge_application/skeinforge_plugins/profile.py rename to Cura/cura_sf/skeinforge_application/skeinforge_plugins/profile.py diff --git a/Cura/skeinforge_application/skeinforge_plugins/profile_plugins/__init__.py b/Cura/cura_sf/skeinforge_application/skeinforge_plugins/profile_plugins/__init__.py similarity index 100% rename from Cura/skeinforge_application/skeinforge_plugins/profile_plugins/__init__.py rename to Cura/cura_sf/skeinforge_application/skeinforge_plugins/profile_plugins/__init__.py diff --git a/Cura/skeinforge_application/skeinforge_plugins/profile_plugins/cutting.py b/Cura/cura_sf/skeinforge_application/skeinforge_plugins/profile_plugins/cutting.py similarity index 100% rename from Cura/skeinforge_application/skeinforge_plugins/profile_plugins/cutting.py rename to Cura/cura_sf/skeinforge_application/skeinforge_plugins/profile_plugins/cutting.py diff --git a/Cura/skeinforge_application/skeinforge_plugins/profile_plugins/extrusion.py b/Cura/cura_sf/skeinforge_application/skeinforge_plugins/profile_plugins/extrusion.py similarity index 100% rename from Cura/skeinforge_application/skeinforge_plugins/profile_plugins/extrusion.py rename to Cura/cura_sf/skeinforge_application/skeinforge_plugins/profile_plugins/extrusion.py diff --git a/Cura/skeinforge_application/skeinforge_plugins/profile_plugins/milling.py b/Cura/cura_sf/skeinforge_application/skeinforge_plugins/profile_plugins/milling.py similarity index 100% rename from Cura/skeinforge_application/skeinforge_plugins/profile_plugins/milling.py rename to Cura/cura_sf/skeinforge_application/skeinforge_plugins/profile_plugins/milling.py diff --git a/Cura/skeinforge_application/skeinforge_plugins/profile_plugins/winding.py b/Cura/cura_sf/skeinforge_application/skeinforge_plugins/profile_plugins/winding.py similarity index 100% rename from Cura/skeinforge_application/skeinforge_plugins/profile_plugins/winding.py rename to Cura/cura_sf/skeinforge_application/skeinforge_plugins/profile_plugins/winding.py diff --git a/Cura/skeinforge_application/skeinforge_utilities/__init__.py b/Cura/cura_sf/skeinforge_application/skeinforge_utilities/__init__.py similarity index 100% rename from Cura/skeinforge_application/skeinforge_utilities/__init__.py rename to Cura/cura_sf/skeinforge_application/skeinforge_utilities/__init__.py diff --git a/Cura/skeinforge_application/skeinforge_utilities/skeinforge_analyze.py b/Cura/cura_sf/skeinforge_application/skeinforge_utilities/skeinforge_analyze.py similarity index 100% rename from Cura/skeinforge_application/skeinforge_utilities/skeinforge_analyze.py rename to Cura/cura_sf/skeinforge_application/skeinforge_utilities/skeinforge_analyze.py diff --git a/Cura/skeinforge_application/skeinforge_utilities/skeinforge_craft.py b/Cura/cura_sf/skeinforge_application/skeinforge_utilities/skeinforge_craft.py similarity index 100% rename from Cura/skeinforge_application/skeinforge_utilities/skeinforge_craft.py rename to Cura/cura_sf/skeinforge_application/skeinforge_utilities/skeinforge_craft.py diff --git a/Cura/skeinforge_application/skeinforge_utilities/skeinforge_help.py b/Cura/cura_sf/skeinforge_application/skeinforge_utilities/skeinforge_help.py similarity index 100% rename from Cura/skeinforge_application/skeinforge_utilities/skeinforge_help.py rename to Cura/cura_sf/skeinforge_application/skeinforge_utilities/skeinforge_help.py diff --git a/Cura/skeinforge_application/skeinforge_utilities/skeinforge_meta.py b/Cura/cura_sf/skeinforge_application/skeinforge_utilities/skeinforge_meta.py similarity index 100% rename from Cura/skeinforge_application/skeinforge_utilities/skeinforge_meta.py rename to Cura/cura_sf/skeinforge_application/skeinforge_utilities/skeinforge_meta.py diff --git a/Cura/skeinforge_application/skeinforge_utilities/skeinforge_polyfile.py b/Cura/cura_sf/skeinforge_application/skeinforge_utilities/skeinforge_polyfile.py similarity index 100% rename from Cura/skeinforge_application/skeinforge_utilities/skeinforge_polyfile.py rename to Cura/cura_sf/skeinforge_application/skeinforge_utilities/skeinforge_polyfile.py diff --git a/Cura/skeinforge_application/skeinforge_utilities/skeinforge_profile.py b/Cura/cura_sf/skeinforge_application/skeinforge_utilities/skeinforge_profile.py similarity index 100% rename from Cura/skeinforge_application/skeinforge_utilities/skeinforge_profile.py rename to Cura/cura_sf/skeinforge_application/skeinforge_utilities/skeinforge_profile.py diff --git a/Cura/newui/__init__.py b/Cura/gui/__init__.py similarity index 100% rename from Cura/newui/__init__.py rename to Cura/gui/__init__.py diff --git a/Cura/newui/advancedConfig.py b/Cura/gui/advancedConfig.py similarity index 96% rename from Cura/newui/advancedConfig.py rename to Cura/gui/advancedConfig.py index 97852fe..4f9a0c9 100644 --- a/Cura/newui/advancedConfig.py +++ b/Cura/gui/advancedConfig.py @@ -4,11 +4,11 @@ import __init__ import wx, os, platform, types import ConfigParser -from newui import configBase -from newui import preview3d -from newui import sliceProgessPanel -from newui import alterationPanel -from newui import validators +from gui import configBase +from gui import preview3d +from gui import sliceProgessPanel +from gui import alterationPanel +from gui import validators class advancedConfigWindow(configBase.configWindowBase): "Advanced configuration window" diff --git a/Cura/newui/alterationPanel.py b/Cura/gui/alterationPanel.py similarity index 95% rename from Cura/newui/alterationPanel.py rename to Cura/gui/alterationPanel.py index c25a1dd..cd99b62 100644 --- a/Cura/newui/alterationPanel.py +++ b/Cura/gui/alterationPanel.py @@ -1,7 +1,7 @@ import wx import sys,math,threading,os -from newui import profile +from gui import profile class alterationPanel(wx.Panel): def __init__(self, parent): diff --git a/Cura/newui/configBase.py b/Cura/gui/configBase.py similarity index 99% rename from Cura/newui/configBase.py rename to Cura/gui/configBase.py index 265a687..4b87473 100644 --- a/Cura/newui/configBase.py +++ b/Cura/gui/configBase.py @@ -3,8 +3,8 @@ import __init__ import wx, os, sys, platform, types -from newui import validators -from newui import profile +from gui import validators +from gui import profile def main(): app = wx.App(False) diff --git a/Cura/newui/configWizard.py b/Cura/gui/configWizard.py similarity index 97% rename from Cura/newui/configWizard.py rename to Cura/gui/configWizard.py index 97b3f5b..8d72d39 100644 --- a/Cura/newui/configWizard.py +++ b/Cura/gui/configWizard.py @@ -4,8 +4,8 @@ import __init__ import wx, os, platform, types, webbrowser, threading, time, re import wx.wizard -from newui import machineCom -from newui import profile +from gui import machineCom +from gui import profile class InfoPage(wx.wizard.WizardPageSimple): def __init__(self, parent, title): diff --git a/Cura/newui/gcodeInterpreter.py b/Cura/gui/gcodeInterpreter.py similarity index 99% rename from Cura/newui/gcodeInterpreter.py rename to Cura/gui/gcodeInterpreter.py index 334d475..2b77550 100644 --- a/Cura/newui/gcodeInterpreter.py +++ b/Cura/gui/gcodeInterpreter.py @@ -7,7 +7,7 @@ import threading import re import os -from newui import util3d +from gui import util3d class gcodePath(): def __init__(self, newType, pathType, layerNr, startPoint): diff --git a/Cura/newui/machineCom.py b/Cura/gui/machineCom.py similarity index 99% rename from Cura/newui/machineCom.py rename to Cura/gui/machineCom.py index f4dfee6..bdf0d45 100644 --- a/Cura/newui/machineCom.py +++ b/Cura/gui/machineCom.py @@ -9,7 +9,7 @@ from avr_isp import stk500v2 from avr_isp import ispBase from avr_isp import intelHex -from newui import profile +from gui import profile try: import _winreg diff --git a/Cura/newui/mainWindow.py b/Cura/gui/mainWindow.py similarity index 97% rename from Cura/newui/mainWindow.py rename to Cura/gui/mainWindow.py index d87c384..7d33a32 100644 --- a/Cura/newui/mainWindow.py +++ b/Cura/gui/mainWindow.py @@ -3,17 +3,17 @@ import __init__ import wx, os, platform, types, webbrowser -from newui import configBase -from newui import advancedConfig -from newui import preview3d -from newui import sliceProgessPanel -from newui import alterationPanel -from newui import validators -from newui import preferencesDialog -from newui import configWizard -from newui import machineCom -from newui import profile -from newui import printWindow +from gui import configBase +from gui import advancedConfig +from gui import preview3d +from gui import sliceProgessPanel +from gui import alterationPanel +from gui import validators +from gui import preferencesDialog +from gui import configWizard +from gui import machineCom +from gui import profile +from gui import printWindow def main(): app = wx.App(False) diff --git a/Cura/newui/preferencesDialog.py b/Cura/gui/preferencesDialog.py similarity index 93% rename from Cura/newui/preferencesDialog.py rename to Cura/gui/preferencesDialog.py index 0cf19c7..564a583 100644 --- a/Cura/newui/preferencesDialog.py +++ b/Cura/gui/preferencesDialog.py @@ -4,9 +4,9 @@ import __init__ import wx, os, platform, types import ConfigParser -from newui import configBase -from newui import validators -from newui import machineCom +from gui import configBase +from gui import validators +from gui import machineCom class preferencesDialog(configBase.configWindowBase): def __init__(self, parent): diff --git a/Cura/newui/preview3d.py b/Cura/gui/preview3d.py similarity index 96% rename from Cura/newui/preview3d.py rename to Cura/gui/preview3d.py index e9421df..ce85772 100644 --- a/Cura/newui/preview3d.py +++ b/Cura/gui/preview3d.py @@ -17,9 +17,9 @@ except: print "Failed to find PyOpenGL: http://pyopengl.sourceforge.net/" hasOpenGLlibs = False -from newui import profile -from newui import gcodeInterpreter -from newui import util3d +from gui import profile +from gui import gcodeInterpreter +from gui import util3d from fabmetheus_utilities.fabmetheus_tools import fabmetheus_interpret from fabmetheus_utilities.vector3 import Vector3 diff --git a/Cura/newui/printWindow.py b/Cura/gui/printWindow.py similarity index 100% rename from Cura/newui/printWindow.py rename to Cura/gui/printWindow.py diff --git a/Cura/newui/profile.py b/Cura/gui/profile.py similarity index 100% rename from Cura/newui/profile.py rename to Cura/gui/profile.py diff --git a/Cura/newui/sliceProgessPanel.py b/Cura/gui/sliceProgessPanel.py similarity index 98% rename from Cura/newui/sliceProgessPanel.py rename to Cura/gui/sliceProgessPanel.py index 3c3537c..4fda1ea 100644 --- a/Cura/newui/sliceProgessPanel.py +++ b/Cura/gui/sliceProgessPanel.py @@ -8,7 +8,7 @@ import threading import subprocess import time -from newui import sliceRun +from gui import sliceRun class sliceProgessPanel(wx.Panel): def __init__(self, mainWindow, parent, filename): @@ -115,6 +115,7 @@ class WorkerThread(threading.Thread): self.start() def run(self): + print sliceRun.getSliceCommand(self.filename) p = subprocess.Popen(sliceRun.getSliceCommand(self.filename), stdout=subprocess.PIPE, stderr=subprocess.STDOUT) line = p.stdout.readline() maxValue = 1 diff --git a/Cura/newui/sliceRun.py b/Cura/gui/sliceRun.py similarity index 95% rename from Cura/newui/sliceRun.py rename to Cura/gui/sliceRun.py index d81f4aa..5a32fbe 100644 --- a/Cura/newui/sliceRun.py +++ b/Cura/gui/sliceRun.py @@ -2,8 +2,8 @@ from __future__ import absolute_import import platform, os, subprocess, sys -from skeinforge_application.skeinforge_utilities import skeinforge_craft -from newui import profile +from cura_sf.skeinforge_application.skeinforge_utilities import skeinforge_craft +from gui import profile def getPyPyExe(): "Return the path to the pypy executable if we can find it. Else return False" @@ -116,5 +116,5 @@ def getSliceCommand(filename): pypyExe = getPyPyExe() if pypyExe == False: pypyExe = sys.executable - return [pypyExe, os.path.join(sys.path[0], os.path.split(sys.argv[0])[1]), filename] + return [pypyExe, os.path.abspath(os.path.join(os.path.dirname(os.path.abspath(__file__)), "..", os.path.split(sys.argv[0])[1])), filename] diff --git a/Cura/newui/util3d.py b/Cura/gui/util3d.py similarity index 100% rename from Cura/newui/util3d.py rename to Cura/gui/util3d.py diff --git a/Cura/newui/validators.py b/Cura/gui/validators.py similarity index 99% rename from Cura/newui/validators.py rename to Cura/gui/validators.py index 6352deb..55e0254 100644 --- a/Cura/newui/validators.py +++ b/Cura/gui/validators.py @@ -4,7 +4,7 @@ import __init__ import types import math -from newui import profile +from gui import profile SUCCESS = 0 WARNING = 1 From 5d531a7a00d26f0bd7df4b9330b5544aac0462c3 Mon Sep 17 00:00:00 2001 From: daid Date: Wed, 28 Mar 2012 12:24:34 +0200 Subject: [PATCH 16/33] Remove debug message --- Cura/gui/sliceProgessPanel.py | 1 - 1 file changed, 1 deletion(-) diff --git a/Cura/gui/sliceProgessPanel.py b/Cura/gui/sliceProgessPanel.py index 4fda1ea..7c9528a 100644 --- a/Cura/gui/sliceProgessPanel.py +++ b/Cura/gui/sliceProgessPanel.py @@ -115,7 +115,6 @@ class WorkerThread(threading.Thread): self.start() def run(self): - print sliceRun.getSliceCommand(self.filename) p = subprocess.Popen(sliceRun.getSliceCommand(self.filename), stdout=subprocess.PIPE, stderr=subprocess.STDOUT) line = p.stdout.readline() maxValue = 1 From 405f4880cd4b108d85cc70447bdc4b7cbebaae2a Mon Sep 17 00:00:00 2001 From: daid Date: Wed, 28 Mar 2012 14:26:40 +0200 Subject: [PATCH 17/33] Split gui to gui and util directories. --- Cura/cura.py | 2 +- Cura/cura_sf/__init__.py | 9 +++++++++ Cura/cura_sf/fabmetheus_utilities/settings.py | 2 +- Cura/gui/alterationPanel.py | 2 +- Cura/gui/configBase.py | 2 +- Cura/gui/configWizard.py | 2 +- Cura/gui/machineCom.py | 2 +- Cura/gui/mainWindow.py | 2 +- Cura/gui/preview3d.py | 6 +++--- Cura/gui/sliceProgessPanel.py | 2 +- Cura/gui/validators.py | 2 +- Cura/util/__init__.py | 0 Cura/{gui => util}/gcodeInterpreter.py | 2 +- Cura/{gui => util}/profile.py | 0 Cura/{gui => util}/sliceRun.py | 2 +- Cura/{gui => util}/util3d.py | 0 16 files changed, 23 insertions(+), 14 deletions(-) create mode 100644 Cura/cura_sf/__init__.py create mode 100644 Cura/util/__init__.py rename Cura/{gui => util}/gcodeInterpreter.py (99%) rename Cura/{gui => util}/profile.py (100%) rename Cura/{gui => util}/sliceRun.py (99%) rename Cura/{gui => util}/util3d.py (100%) diff --git a/Cura/cura.py b/Cura/cura.py index 3633e41..4de0ed1 100644 --- a/Cura/cura.py +++ b/Cura/cura.py @@ -16,7 +16,7 @@ import sys import platform from optparse import OptionParser -from gui import sliceRun +from util import sliceRun __author__ = 'Daid' __credits__ = """ diff --git a/Cura/cura_sf/__init__.py b/Cura/cura_sf/__init__.py new file mode 100644 index 0000000..bdac25d --- /dev/null +++ b/Cura/cura_sf/__init__.py @@ -0,0 +1,9 @@ +#This is required to workaround the python import bug where relative imports don't work if the module is imported as a main module. +import os +import sys +numberOfLevelsDeepInPackageHierarchy = 1 +packageFilePath = os.path.abspath(__file__) +for level in range( numberOfLevelsDeepInPackageHierarchy + 1 ): + packageFilePath = os.path.dirname( packageFilePath ) +if packageFilePath not in sys.path: + sys.path.insert( 0, packageFilePath ) diff --git a/Cura/cura_sf/fabmetheus_utilities/settings.py b/Cura/cura_sf/fabmetheus_utilities/settings.py index 626bb04..3c27c0f 100644 --- a/Cura/cura_sf/fabmetheus_utilities/settings.py +++ b/Cura/cura_sf/fabmetheus_utilities/settings.py @@ -10,7 +10,7 @@ import __init__ import os, sys import types, math -from gui import profile +from util import profile from fabmetheus_utilities import archive def DEFSET(setting): diff --git a/Cura/gui/alterationPanel.py b/Cura/gui/alterationPanel.py index cd99b62..425c823 100644 --- a/Cura/gui/alterationPanel.py +++ b/Cura/gui/alterationPanel.py @@ -1,7 +1,7 @@ import wx import sys,math,threading,os -from gui import profile +from util import profile class alterationPanel(wx.Panel): def __init__(self, parent): diff --git a/Cura/gui/configBase.py b/Cura/gui/configBase.py index 4b87473..9d28af4 100644 --- a/Cura/gui/configBase.py +++ b/Cura/gui/configBase.py @@ -4,7 +4,7 @@ import __init__ import wx, os, sys, platform, types from gui import validators -from gui import profile +from util import profile def main(): app = wx.App(False) diff --git a/Cura/gui/configWizard.py b/Cura/gui/configWizard.py index 8d72d39..923f5a1 100644 --- a/Cura/gui/configWizard.py +++ b/Cura/gui/configWizard.py @@ -5,7 +5,7 @@ import wx, os, platform, types, webbrowser, threading, time, re import wx.wizard from gui import machineCom -from gui import profile +from util import profile class InfoPage(wx.wizard.WizardPageSimple): def __init__(self, parent, title): diff --git a/Cura/gui/machineCom.py b/Cura/gui/machineCom.py index bdf0d45..605d05c 100644 --- a/Cura/gui/machineCom.py +++ b/Cura/gui/machineCom.py @@ -9,7 +9,7 @@ from avr_isp import stk500v2 from avr_isp import ispBase from avr_isp import intelHex -from gui import profile +from util import profile try: import _winreg diff --git a/Cura/gui/mainWindow.py b/Cura/gui/mainWindow.py index 7d33a32..20eb44d 100644 --- a/Cura/gui/mainWindow.py +++ b/Cura/gui/mainWindow.py @@ -12,8 +12,8 @@ from gui import validators from gui import preferencesDialog from gui import configWizard from gui import machineCom -from gui import profile from gui import printWindow +from util import profile def main(): app = wx.App(False) diff --git a/Cura/gui/preview3d.py b/Cura/gui/preview3d.py index ce85772..7f06f3e 100644 --- a/Cura/gui/preview3d.py +++ b/Cura/gui/preview3d.py @@ -17,9 +17,9 @@ except: print "Failed to find PyOpenGL: http://pyopengl.sourceforge.net/" hasOpenGLlibs = False -from gui import profile -from gui import gcodeInterpreter -from gui import util3d +from util import profile +from util import gcodeInterpreter +from util import util3d from fabmetheus_utilities.fabmetheus_tools import fabmetheus_interpret from fabmetheus_utilities.vector3 import Vector3 diff --git a/Cura/gui/sliceProgessPanel.py b/Cura/gui/sliceProgessPanel.py index 7c9528a..5854060 100644 --- a/Cura/gui/sliceProgessPanel.py +++ b/Cura/gui/sliceProgessPanel.py @@ -8,7 +8,7 @@ import threading import subprocess import time -from gui import sliceRun +from util import sliceRun class sliceProgessPanel(wx.Panel): def __init__(self, mainWindow, parent, filename): diff --git a/Cura/gui/validators.py b/Cura/gui/validators.py index 55e0254..d7db5c8 100644 --- a/Cura/gui/validators.py +++ b/Cura/gui/validators.py @@ -4,7 +4,7 @@ import __init__ import types import math -from gui import profile +from util import profile SUCCESS = 0 WARNING = 1 diff --git a/Cura/util/__init__.py b/Cura/util/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/Cura/gui/gcodeInterpreter.py b/Cura/util/gcodeInterpreter.py similarity index 99% rename from Cura/gui/gcodeInterpreter.py rename to Cura/util/gcodeInterpreter.py index 2b77550..ca2117c 100644 --- a/Cura/gui/gcodeInterpreter.py +++ b/Cura/util/gcodeInterpreter.py @@ -7,7 +7,7 @@ import threading import re import os -from gui import util3d +from util import util3d class gcodePath(): def __init__(self, newType, pathType, layerNr, startPoint): diff --git a/Cura/gui/profile.py b/Cura/util/profile.py similarity index 100% rename from Cura/gui/profile.py rename to Cura/util/profile.py diff --git a/Cura/gui/sliceRun.py b/Cura/util/sliceRun.py similarity index 99% rename from Cura/gui/sliceRun.py rename to Cura/util/sliceRun.py index 5a32fbe..e18fb98 100644 --- a/Cura/gui/sliceRun.py +++ b/Cura/util/sliceRun.py @@ -3,7 +3,7 @@ from __future__ import absolute_import import platform, os, subprocess, sys from cura_sf.skeinforge_application.skeinforge_utilities import skeinforge_craft -from gui import profile +from util import profile def getPyPyExe(): "Return the path to the pypy executable if we can find it. Else return False" diff --git a/Cura/gui/util3d.py b/Cura/util/util3d.py similarity index 100% rename from Cura/gui/util3d.py rename to Cura/util/util3d.py From 0834aec2d2161c54805e89e5e085ba7941d5e5ac Mon Sep 17 00:00:00 2001 From: daid Date: Wed, 28 Mar 2012 16:53:08 +0200 Subject: [PATCH 18/33] Added my own STL loader, no longer using the one from Skeinforge. This one is 3 to 4 times faster. --- Cura/gui/__init__.py | 4 -- Cura/gui/preview3d.py | 31 ++++++------- Cura/util/__init__.py | 9 ++++ Cura/util/gcodeInterpreter.py | 1 - Cura/util/stl.py | 87 +++++++++++++++++++++++++++++++++++ 5 files changed, 111 insertions(+), 21 deletions(-) create mode 100644 Cura/util/stl.py diff --git a/Cura/gui/__init__.py b/Cura/gui/__init__.py index 1638033..4870325 100644 --- a/Cura/gui/__init__.py +++ b/Cura/gui/__init__.py @@ -1,7 +1,3 @@ -""" -This page is in the table of contents. -This is required to workaround the python import bug where relative imports don't work if the module is imported as a main module. -""" import os import sys diff --git a/Cura/gui/preview3d.py b/Cura/gui/preview3d.py index 7f06f3e..311d49a 100644 --- a/Cura/gui/preview3d.py +++ b/Cura/gui/preview3d.py @@ -19,11 +19,9 @@ except: from util import profile from util import gcodeInterpreter +from util import stl from util import util3d -from fabmetheus_utilities.fabmetheus_tools import fabmetheus_interpret -from fabmetheus_utilities.vector3 import Vector3 - class previewPanel(wx.Panel): def __init__(self, parent): wx.Panel.__init__(self, parent,-1) @@ -38,8 +36,8 @@ class previewPanel(wx.Panel): self.modelFilename = None self.loadingProgressAmount = 0 self.loadThread = None - self.machineSize = Vector3(float(profile.getPreference('machine_width')), float(profile.getPreference('machine_depth')), float(profile.getPreference('machine_height'))) - self.machineCenter = Vector3(0, 0, 0) + self.machineSize = util3d.Vector3(float(profile.getPreference('machine_width')), float(profile.getPreference('machine_depth')), float(profile.getPreference('machine_height'))) + self.machineCenter = util3d.Vector3(0, 0, 0) self.toolbar = wx.ToolBar( self, -1 ) self.toolbar.SetToolBitmapSize( ( 21, 21 ) ) @@ -215,7 +213,8 @@ class previewPanel(wx.Panel): def doFileLoadThread(self): if os.path.isfile(self.modelFilename) and self.modelFileTime != os.stat(self.modelFilename).st_mtime: self.modelFileTime = os.stat(self.modelFilename).st_mtime - triangleMesh = fabmetheus_interpret.getCarving(self.modelFilename) + triangleMesh = stl.stlModel() + triangleMesh.load(self.modelFilename) triangleMesh.origonalVertexes = list(triangleMesh.vertexes) for i in xrange(0, len(triangleMesh.origonalVertexes)): triangleMesh.origonalVertexes[i] = triangleMesh.origonalVertexes[i].copy() @@ -297,9 +296,9 @@ class previewPanel(wx.Panel): self.triangleMesh.vertexes[i].z = self.triangleMesh.origonalVertexes[i].z * scaleZ for face in self.triangleMesh.faces: - v1 = self.triangleMesh.vertexes[face.vertexIndexes[0]] - v2 = self.triangleMesh.vertexes[face.vertexIndexes[1]] - v3 = self.triangleMesh.vertexes[face.vertexIndexes[2]] + v1 = face.v[0] + v2 = face.v[1] + v3 = face.v[2] face.normal = (v2 - v1).cross(v3 - v1) face.normal.normalize() @@ -309,8 +308,8 @@ class previewPanel(wx.Panel): if self.triangleMesh == None: return minZ = self.triangleMesh.getMinimumZ() - min = self.triangleMesh.getCarveCornerMinimum() - max = self.triangleMesh.getCarveCornerMaximum() + min = self.triangleMesh.getMinimum() + max = self.triangleMesh.getMaximum() for v in self.triangleMesh.vertexes: v.z -= minZ v.x -= min.x + (max.x - min.x) / 2 @@ -525,7 +524,7 @@ class PreviewGLCanvas(glcanvas.GLCanvas): self.parent.modelDirty = False multiX = int(profile.getProfileSetting('model_multiply_x')) multiY = int(profile.getProfileSetting('model_multiply_y')) - modelSize = self.parent.triangleMesh.getCarveCornerMaximum() - self.parent.triangleMesh.getCarveCornerMinimum() + modelSize = self.parent.triangleMesh.getMaximum() - self.parent.triangleMesh.getMinimum() glNewList(self.modelDisplayList, GL_COMPILE) glPushMatrix() glTranslate(-(modelSize.x+10)*(multiX-1)/2,-(modelSize.y+10)*(multiY-1)/2, 0) @@ -535,9 +534,9 @@ class PreviewGLCanvas(glcanvas.GLCanvas): glPushMatrix() glTranslate((modelSize.x+10)*mx,(modelSize.y+10)*my, 0) glBegin(GL_TRIANGLES) - v1 = self.parent.triangleMesh.vertexes[face.vertexIndexes[0]] - v2 = self.parent.triangleMesh.vertexes[face.vertexIndexes[1]] - v3 = self.parent.triangleMesh.vertexes[face.vertexIndexes[2]] + v1 = face.v[0] + v2 = face.v[1] + v3 = face.v[2] glNormal3f(face.normal.x, face.normal.y, face.normal.z) glVertex3f(v1.x, v1.y, v1.z) glVertex3f(v2.x, v2.y, v2.z) @@ -664,7 +663,7 @@ class PreviewGLCanvas(glcanvas.GLCanvas): glRotate(-self.pitch, 1,0,0) glRotate(self.yaw, 0,0,1) if self.parent.triangleMesh != None: - glTranslate(0,0,-self.parent.triangleMesh.getCarveCornerMaximum().z / 2) + glTranslate(0,0,-self.parent.triangleMesh.getMaximum().z / 2) else: glTranslate(self.offsetX, self.offsetY, 0) diff --git a/Cura/util/__init__.py b/Cura/util/__init__.py index e69de29..4870325 100644 --- a/Cura/util/__init__.py +++ b/Cura/util/__init__.py @@ -0,0 +1,9 @@ +import os +import sys + +numberOfLevelsDeepInPackageHierarchy = 1 +packageFilePath = os.path.abspath(__file__) +for level in range( numberOfLevelsDeepInPackageHierarchy + 1 ): + packageFilePath = os.path.dirname( packageFilePath ) +if packageFilePath not in sys.path: + sys.path.insert( 0, packageFilePath ) diff --git a/Cura/util/gcodeInterpreter.py b/Cura/util/gcodeInterpreter.py index ca2117c..71e26f0 100644 --- a/Cura/util/gcodeInterpreter.py +++ b/Cura/util/gcodeInterpreter.py @@ -3,7 +3,6 @@ import __init__ import sys import math -import threading import re import os diff --git a/Cura/util/stl.py b/Cura/util/stl.py new file mode 100644 index 0000000..05e759e --- /dev/null +++ b/Cura/util/stl.py @@ -0,0 +1,87 @@ +from __future__ import absolute_import +import __init__ + +import sys +import math +import re +import os +import struct + +from util import util3d + +class stlFace(): + def __init__(self, v0, v1, v2): + self.v = [v0, v1, v2] + +class stlModel(): + def __init__(self): + self.faces = [] + self.vertexes = [] + + def load(self, filename): + f = open(filename, "rb") + if f.read(6).lower() == "solid ": + self._loadAscii(f) + if len(self.faces) < 1: + f.seek(6, os.SEEK_SET) + self._loadBinary(f) + else: + self._loadBinary(f) + f.close() + + def _loadAscii(self, f): + cnt = 0 + for line in f: + if 'vertex' in line: + data = line.split() + if cnt == 0: + v0 = util3d.Vector3(float(data[1]), float(data[2]), float(data[3])) + cnt = 1 + elif cnt == 1: + v1 = util3d.Vector3(float(data[1]), float(data[2]), float(data[3])) + cnt = 2 + elif cnt == 2: + v2 = util3d.Vector3(float(data[1]), float(data[2]), float(data[3])) + self.faces.append(stlFace(v0, v1, v2)) + self.vertexes.append(v0) + self.vertexes.append(v1) + self.vertexes.append(v2) + cnt = 0 + + def _loadBinary(self, f): + #Skip the header + f.read(80-6) + faceCount = struct.unpack(' Date: Wed, 28 Mar 2012 20:36:46 +0200 Subject: [PATCH 19/33] Initial layout for print window --- Cura/newui/mainWindow.py | 8 +++++++- Cura/newui/printWindow.py | 24 ++++++++++++++++++------ 2 files changed, 25 insertions(+), 7 deletions(-) diff --git a/Cura/newui/mainWindow.py b/Cura/newui/mainWindow.py index e1b1f8c..7ac3195 100644 --- a/Cura/newui/mainWindow.py +++ b/Cura/newui/mainWindow.py @@ -261,7 +261,13 @@ class mainWindow(configBase.configWindowBase): self.progressPanelList.append(spp) def OnPrint(self, e): - printWindow.printWindow() + if self.filename == None: + wx.MessageBox('You need to load a file before you can print it.', 'Print error', wx.OK | wx.ICON_INFORMATION) + return + if not os.path.exists(self.filename[: self.filename.rfind('.')] + "_export.gcode"): + wx.MessageBox('You need to slice the file to GCode before you can print it.', 'Print error', wx.OK | wx.ICON_INFORMATION) + return + printWindow.printFile(self.filename[: self.filename.rfind('.')] + "_export.gcode") def OnExpertOpen(self, e): acw = advancedConfig.advancedConfigWindow() diff --git a/Cura/newui/printWindow.py b/Cura/newui/printWindow.py index 9df9794..7b28a45 100644 --- a/Cura/newui/printWindow.py +++ b/Cura/newui/printWindow.py @@ -17,14 +17,26 @@ class printWindow(wx.Frame): "Main user interface window" def __init__(self): super(printWindow, self).__init__(None, -1, title='Printing') - self.SetSizer(wx.GridBagSizer(2, 2)) + self.SetSizer(wx.BoxSizer()) + self.panel = wx.Panel(self) + self.GetSizer().Add(self.panel, 1, flag=wx.EXPAND) + self.sizer = wx.GridBagSizer(2, 2) + self.panel.SetSizer(self.sizer) - self.statsPanel = wx.Panel(self) - self.GetSizer().Add(self.statsPanel, pos=(0,0), span=(4,1), flag=wx.EXPAND) + sb = wx.StaticBox(self.panel, label="Statistics") + boxsizer = wx.StaticBoxSizer(sb, wx.VERTICAL) + boxsizer.Add(wx.StaticText(self.panel, -1, "Filament: #.##m #.##g"), flag=wx.LEFT, border=5) + boxsizer.Add(wx.StaticText(self.panel, -1, "Print time: ##:##"), flag=wx.LEFT, border=5) - self.GetSizer().Add(wx.Button(self, -1, 'Test'), pos=(0,1)) - self.GetSizer().Add(wx.Button(self, -1, 'Test'), pos=(1,1)) - self.GetSizer().Add(wx.Button(self, -1, 'Test'), pos=(2,1)) + self.sizer.Add(boxsizer, pos=(0,0), span=(4,1), flag=wx.EXPAND) + + self.sizer.Add(wx.Button(self.panel, -1, 'Connect'), pos=(0,1)) + self.sizer.Add(wx.Button(self.panel, -1, 'Load GCode'), pos=(1,1)) + self.sizer.Add(wx.Button(self.panel, -1, 'Print GCode'), pos=(2,1)) + self.sizer.Add(wx.Button(self.panel, -1, 'Cancel print'), pos=(3,1)) + self.sizer.Add(wx.Gauge(self.panel, -1), pos=(4,0), span=(1,2), flag=wx.EXPAND) + self.sizer.AddGrowableRow(3) + self.sizer.AddGrowableCol(0) self.Bind(wx.EVT_CLOSE, self.OnClose) From ddfd386b73d4de62d08c861d10c26e0717144352 Mon Sep 17 00:00:00 2001 From: daid Date: Thu, 29 Mar 2012 11:01:33 +0200 Subject: [PATCH 20/33] Make GCode reader store paths per layer --- Cura/gui/preview3d.py | 136 +++++++++++++++++----------------- Cura/util/gcodeInterpreter.py | 26 +++---- 2 files changed, 79 insertions(+), 83 deletions(-) diff --git a/Cura/gui/preview3d.py b/Cura/gui/preview3d.py index 311d49a..4aa6792 100644 --- a/Cura/gui/preview3d.py +++ b/Cura/gui/preview3d.py @@ -259,7 +259,7 @@ class previewPanel(wx.Panel): def updateToolbar(self): self.layerSpin.Show(self.gcode != None) if self.gcode != None: - self.layerSpin.SetRange(1, self.gcode.layerCount) + self.layerSpin.SetRange(1, len(self.gcode.layerList)) self.toolbar.Realize() def OnViewChange(self, e): @@ -442,77 +442,73 @@ class PreviewGLCanvas(glcanvas.GLCanvas): lineWidth = float(profile.getProfileSetting('nozzle_size')) / 2 curLayerNum = 0 - for path in self.parent.gcode.pathList: - if path.layerNr != curLayerNum: - prevLayerZ = curLayerZ - curLayerZ = path.list[1].z - curLayerNum = path.layerNr - layerThickness = curLayerZ - prevLayerZ - - c = 1.0 - if path.layerNr != self.parent.layerSpin.GetValue(): - if path.layerNr < self.parent.layerSpin.GetValue(): - c = 0.9 - (self.parent.layerSpin.GetValue() - path.layerNr) * 0.1 - if c < 0.4: - c = 0.4 - else: - break - if path.type == 'move': - glColor3f(0,0,c) - if path.type == 'extrude': - if path.pathType == 'FILL': - glColor3f(c/2,c/2,0) - elif path.pathType == 'WALL-INNER': - glColor3f(0,c,0) - else: - glColor3f(c,0,0) - if path.type == 'retract': - glColor3f(0,c,c) - if c > 0.4 and path.type == 'extrude': - for i in xrange(0, len(path.list)-1): - v0 = path.list[i] - v1 = path.list[i+1] - - # Calculate line width from ePerDistance (needs layer thickness and filament diameter) - dist = (v0 - v1).vsize() - if dist > 0 and layerThickness > 0: - extrusionMMperDist = (v1.e - v0.e) / (v0 - v1).vsize() - lineWidth = extrusionMMperDist * filamentArea / layerThickness / 2 - - normal = (v0 - v1).cross(util3d.Vector3(0,0,1)) - normal.normalize() - v2 = v0 + normal * lineWidth - v3 = v1 + normal * lineWidth - v0 = v0 - normal * lineWidth - v1 = v1 - normal * lineWidth - - glBegin(GL_QUADS) - if path.pathType == 'FILL': #Remove depth buffer fighting on infill/wall overlap - glVertex3f(v0.x, v0.y, v0.z - 0.02) - glVertex3f(v1.x, v1.y, v1.z - 0.02) - glVertex3f(v3.x, v3.y, v3.z - 0.02) - glVertex3f(v2.x, v2.y, v2.z - 0.02) + for layer in self.parent.gcode.layerList: + for path in layer: + c = 1.0 + if curLayerNum != self.parent.layerSpin.GetValue(): + if curLayerNum < self.parent.layerSpin.GetValue(): + c = 0.9 - (self.parent.layerSpin.GetValue() - curLayerNum) * 0.1 + if c < 0.4: + c = 0.4 else: - glVertex3f(v0.x, v0.y, v0.z - 0.01) - glVertex3f(v1.x, v1.y, v1.z - 0.01) - glVertex3f(v3.x, v3.y, v3.z - 0.01) - glVertex3f(v2.x, v2.y, v2.z - 0.01) - glEnd() + break + if path.type == 'move': + glColor3f(0,0,c) + if path.type == 'extrude': + if path.pathType == 'FILL': + glColor3f(c/2,c/2,0) + elif path.pathType == 'WALL-INNER': + glColor3f(0,c,0) + else: + glColor3f(c,0,0) + if path.type == 'retract': + glColor3f(0,c,c) + if c > 0.4 and path.type == 'extrude': + for i in xrange(0, len(path.list)-1): + v0 = path.list[i] + v1 = path.list[i+1] + + # Calculate line width from ePerDistance (needs layer thickness and filament diameter) + dist = (v0 - v1).vsize() + if dist > 0 and layerThickness > 0: + extrusionMMperDist = (v1.e - v0.e) / (v0 - v1).vsize() + lineWidth = extrusionMMperDist * filamentArea / layerThickness / 2 + + normal = (v0 - v1).cross(util3d.Vector3(0,0,1)) + normal.normalize() + v2 = v0 + normal * lineWidth + v3 = v1 + normal * lineWidth + v0 = v0 - normal * lineWidth + v1 = v1 - normal * lineWidth + + glBegin(GL_QUADS) + if path.pathType == 'FILL': #Remove depth buffer fighting on infill/wall overlap + glVertex3f(v0.x, v0.y, v0.z - 0.02) + glVertex3f(v1.x, v1.y, v1.z - 0.02) + glVertex3f(v3.x, v3.y, v3.z - 0.02) + glVertex3f(v2.x, v2.y, v2.z - 0.02) + else: + glVertex3f(v0.x, v0.y, v0.z - 0.01) + glVertex3f(v1.x, v1.y, v1.z - 0.01) + glVertex3f(v3.x, v3.y, v3.z - 0.01) + glVertex3f(v2.x, v2.y, v2.z - 0.01) + glEnd() - #for v in path['list']: - # glBegin(GL_TRIANGLE_FAN) - # glVertex3f(v.x, v.y, v.z - 0.001) - # for i in xrange(0, 16+1): - # if path['pathType'] == 'FILL': #Remove depth buffer fighting on infill/wall overlap - # glVertex3f(v.x + math.cos(math.pi*2/16*i) * lineWidth, v.y + math.sin(math.pi*2/16*i) * lineWidth, v.z - 0.02) - # else: - # glVertex3f(v.x + math.cos(math.pi*2/16*i) * lineWidth, v.y + math.sin(math.pi*2/16*i) * lineWidth, v.z - 0.01) - # glEnd() - else: - glBegin(GL_LINE_STRIP) - for v in path.list: - glVertex3f(v.x, v.y, v.z) - glEnd() + #for v in path['list']: + # glBegin(GL_TRIANGLE_FAN) + # glVertex3f(v.x, v.y, v.z - 0.001) + # for i in xrange(0, 16+1): + # if path['pathType'] == 'FILL': #Remove depth buffer fighting on infill/wall overlap + # glVertex3f(v.x + math.cos(math.pi*2/16*i) * lineWidth, v.y + math.sin(math.pi*2/16*i) * lineWidth, v.z - 0.02) + # else: + # glVertex3f(v.x + math.cos(math.pi*2/16*i) * lineWidth, v.y + math.sin(math.pi*2/16*i) * lineWidth, v.z - 0.01) + # glEnd() + else: + glBegin(GL_LINE_STRIP) + for v in path.list: + glVertex3f(v.x, v.y, v.z) + glEnd() + curLayerNum += 1 glEndList() if self.viewMode == "GCode" or self.viewMode == "Mixed": glCallList(self.gcodeDisplayList) diff --git a/Cura/util/gcodeInterpreter.py b/Cura/util/gcodeInterpreter.py index 71e26f0..347eabe 100644 --- a/Cura/util/gcodeInterpreter.py +++ b/Cura/util/gcodeInterpreter.py @@ -9,17 +9,15 @@ import os from util import util3d class gcodePath(): - def __init__(self, newType, pathType, layerNr, startPoint): + def __init__(self, newType, pathType, startPoint): self.type = newType self.pathType = pathType self.list = [startPoint] - self.layerNr = layerNr class gcode(): def __init__(self): self.regMatch = {} - self.layerCount = 0 - self.pathList = [] + self.layerList = [] self.extrusionAmount = 0 self.totalMoveTimeMinute = 0 self.progressCallback = None @@ -34,21 +32,22 @@ class gcode(): totalExtrusion = 0.0 maxExtrusion = 0.0 totalMoveTimeMinute = 0.0 - pathList = [] scale = 1.0 posAbs = True feedRate = 3600 pathType = 'CUSTOM'; - layerNr = 0; #Note layer 0 will be the start code. startCodeDone = False - currentPath = gcodePath('move', pathType, layerNr, pos.copy()) + currentLayer = [] + currentPath = gcodePath('move', pathType, pos.copy()) currentPath.list[0].e = totalExtrusion - pathList.append(currentPath) + currentLayer.append(currentPath) for line in gcodeFile: if filePos != gcodeFile.tell(): filePos = gcodeFile.tell() if self.progressCallback != None: self.progressCallback(float(filePos) / float(fileSize)) + + #Parse Cura_SF comments if line.startswith(';TYPE:'): pathType = line[6:].strip() if pathType != "CUSTOM": @@ -91,8 +90,10 @@ class gcode(): pos.z = z * scale else: pos.z += z * scale + #Check if we have a new layer. if oldPos.z != pos.z and startCodeDone: - layerNr += 1 + self.layerList.append(currentLayer) + currentLayer = [] if f is not None: feedRate = f if x is not None or y is not None or z is not None: @@ -116,8 +117,8 @@ class gcode(): if totalExtrusion > maxExtrusion: maxExtrusion = totalExtrusion if currentPath.type != moveType or currentPath.pathType != pathType: - currentPath = gcodePath(moveType, pathType, layerNr, currentPath.list[-1]) - pathList.append(currentPath) + currentPath = gcodePath(moveType, pathType, currentPath.list[-1]) + currentLayer.append(currentPath) newPos = pos.copy() newPos.e = totalExtrusion currentPath.list.append(newPos) @@ -183,8 +184,7 @@ class gcode(): else: print "Unknown M code:" + str(M) gcodeFile.close() - self.layerCount = layerNr - self.pathList = pathList + self.layerList.append(currentLayer) self.extrusionAmount = maxExtrusion self.totalMoveTimeMinute = totalMoveTimeMinute print "Extruded a total of: %d mm of filament" % (self.extrusionAmount) From ab6430c843a9d4a44c40df7c6ffd22e2fe6430e3 Mon Sep 17 00:00:00 2001 From: daid Date: Thu, 29 Mar 2012 14:45:14 +0200 Subject: [PATCH 21/33] Added simple mode dialog --- Cura/gui/mainWindow.py | 16 ++- Cura/gui/preview3d.py | 2 +- Cura/gui/simpleMode.py | 287 +++++++++++++++++++++++++++++++++++++++++ Cura/util/profile.py | 1 + 4 files changed, 304 insertions(+), 2 deletions(-) create mode 100644 Cura/gui/simpleMode.py diff --git a/Cura/gui/mainWindow.py b/Cura/gui/mainWindow.py index 20eb44d..9839d40 100644 --- a/Cura/gui/mainWindow.py +++ b/Cura/gui/mainWindow.py @@ -13,6 +13,7 @@ from gui import preferencesDialog from gui import configWizard from gui import machineCom from gui import printWindow +from gui import simpleMode from util import profile def main(): @@ -22,7 +23,10 @@ def main(): wx.MessageBox('The MacOS version of Cura is experimental.\nThere are still UI/usability bugs. Check the issue list at:\nhttps://github.com/daid/Cura/issues\nfor details.\nPlease report any extra issue you find.', 'MacOS Warning', wx.OK | wx.ICON_INFORMATION) configWizard.configWizard() profile.putPreference("wizardDone", "True") - mainWindow() + if profile.getPreference('startMode') == 'Simple': + simpleMode.simpleModeWindow() + else: + mainWindow() app.MainLoop() class mainWindow(configBase.configWindowBase): @@ -49,6 +53,11 @@ class mainWindow(configBase.configWindowBase): self.Bind(wx.EVT_MENU, self.OnQuit, i) menubar.Append(fileMenu, '&File') + simpleMenu = wx.Menu() + i = simpleMenu.Append(-1, 'Switch to simple mode...') + self.Bind(wx.EVT_MENU, self.OnSimpleSwitch, i) + menubar.Append(simpleMenu, 'Simple') + expertMenu = wx.Menu() i = expertMenu.Append(-1, 'Open expert settings...') self.Bind(wx.EVT_MENU, self.OnExpertOpen, i) @@ -218,6 +227,11 @@ class mainWindow(configBase.configWindowBase): prefDialog.Centre() prefDialog.Show(True) + def OnSimpleSwitch(self, e): + profile.putPreference('startMode', 'Simple') + simpleMode.simpleModeWindow() + self.Close() + def OnDefaultMarlinFirmware(self, e): machineCom.InstallFirmware(os.path.join(os.path.dirname(os.path.abspath(__file__)), "../firmware/default.hex")) diff --git a/Cura/gui/preview3d.py b/Cura/gui/preview3d.py index 4aa6792..e553198 100644 --- a/Cura/gui/preview3d.py +++ b/Cura/gui/preview3d.py @@ -37,7 +37,7 @@ class previewPanel(wx.Panel): self.loadingProgressAmount = 0 self.loadThread = None self.machineSize = util3d.Vector3(float(profile.getPreference('machine_width')), float(profile.getPreference('machine_depth')), float(profile.getPreference('machine_height'))) - self.machineCenter = util3d.Vector3(0, 0, 0) + self.machineCenter = util3d.Vector3(float(profile.getProfileSetting('machine_center_x')), float(profile.getProfileSetting('machine_center_y')), 0) self.toolbar = wx.ToolBar( self, -1 ) self.toolbar.SetToolBitmapSize( ( 21, 21 ) ) diff --git a/Cura/gui/simpleMode.py b/Cura/gui/simpleMode.py new file mode 100644 index 0000000..003a79d --- /dev/null +++ b/Cura/gui/simpleMode.py @@ -0,0 +1,287 @@ +from __future__ import absolute_import +import __init__ + +import wx, os, platform, types, webbrowser + +from gui import configBase +from gui import preview3d +from gui import sliceProgessPanel +from gui import validators +from gui import preferencesDialog +from gui import configWizard +from gui import machineCom +from gui import printWindow +from util import profile + +class simpleModeWindow(configBase.configWindowBase): + "Main user interface window for simple mode" + def __init__(self): + super(simpleModeWindow, self).__init__(title='Cura - Simple mode') + + wx.EVT_CLOSE(self, self.OnClose) + + menubar = wx.MenuBar() + fileMenu = wx.Menu() + i = fileMenu.Append(-1, 'Load model file...') + self.Bind(wx.EVT_MENU, self.OnLoadModel, i) + fileMenu.AppendSeparator() + i = fileMenu.Append(-1, 'Preferences...') + self.Bind(wx.EVT_MENU, self.OnPreferences, i) + fileMenu.AppendSeparator() + i = fileMenu.Append(wx.ID_EXIT, 'Quit') + self.Bind(wx.EVT_MENU, self.OnQuit, i) + menubar.Append(fileMenu, '&File') + + expertMenu = wx.Menu() + i = expertMenu.Append(-1, 'Switch to Normal mode...') + self.Bind(wx.EVT_MENU, self.OnNormalSwitch, i) + expertMenu.AppendSeparator() + i = expertMenu.Append(-1, 'ReRun first run wizard...') + self.Bind(wx.EVT_MENU, self.OnFirstRunWizard, i) + menubar.Append(expertMenu, 'Expert') + + helpMenu = wx.Menu() + i = helpMenu.Append(-1, 'Online documentation...') + self.Bind(wx.EVT_MENU, lambda e: webbrowser.open('https://github.com/daid/Cura/wiki'), i) + i = helpMenu.Append(-1, 'Report a problem...') + self.Bind(wx.EVT_MENU, lambda e: webbrowser.open('https://github.com/daid/Cura/issues'), i) + menubar.Append(helpMenu, 'Help') + self.SetMenuBar(menubar) + + self.lastPath = "" + self.filename = profile.getPreference('lastFile') + self.progressPanelList = [] + + #Preview window + self.preview3d = preview3d.previewPanel(self) + + configPanel = wx.Panel(self) + self.printTypeNormal = wx.RadioButton(configPanel, -1, 'Normal quality print', style=wx.RB_GROUP) + self.printTypeLow = wx.RadioButton(configPanel, -1, 'Fast low quality print') + self.printTypeHigh = wx.RadioButton(configPanel, -1, 'High quality print') + self.printTypeJoris = wx.RadioButton(configPanel, -1, 'Thin walled cup or vase') + + self.printMaterialPLA = wx.RadioButton(configPanel, -1, 'PLA', style=wx.RB_GROUP) + self.printMaterialABS = wx.RadioButton(configPanel, -1, 'ABS') + self.printMaterialDiameter = wx.TextCtrl(configPanel, -1, profile.getProfileSetting('filament_diameter')) + + self.printSupport = wx.CheckBox(configPanel, -1, 'Print support structure') + + sizer = wx.GridBagSizer() + configPanel.SetSizer(sizer) + + sb = wx.StaticBox(configPanel, label="Select a print type:") + boxsizer = wx.StaticBoxSizer(sb, wx.VERTICAL) + boxsizer.Add(self.printTypeNormal) + boxsizer.Add(self.printTypeLow) + boxsizer.Add(self.printTypeHigh) + boxsizer.Add(self.printTypeJoris) + sizer.Add(boxsizer, (0,0), flag=wx.EXPAND) + + sb = wx.StaticBox(configPanel, label="Material:") + boxsizer = wx.StaticBoxSizer(sb, wx.VERTICAL) + boxsizer.Add(self.printMaterialPLA) + boxsizer.Add(self.printMaterialABS) + boxsizer.Add(wx.StaticText(configPanel, -1, 'Diameter:')) + boxsizer.Add(self.printMaterialDiameter) + sizer.Add(boxsizer, (1,0), flag=wx.EXPAND) + + sb = wx.StaticBox(configPanel, label="Other:") + boxsizer = wx.StaticBoxSizer(sb, wx.VERTICAL) + boxsizer.Add(self.printSupport) + sizer.Add(boxsizer, (2,0), flag=wx.EXPAND) + + # load and slice buttons. + loadButton = wx.Button(self, -1, 'Load Model') + sliceButton = wx.Button(self, -1, 'Slice to GCode') + printButton = wx.Button(self, -1, 'Print GCode') + self.Bind(wx.EVT_BUTTON, self.OnLoadModel, loadButton) + self.Bind(wx.EVT_BUTTON, self.OnSlice, sliceButton) + self.Bind(wx.EVT_BUTTON, self.OnPrint, printButton) + #Also bind double clicking the 3D preview to load an STL file. + self.preview3d.glCanvas.Bind(wx.EVT_LEFT_DCLICK, self.OnLoadModel, self.preview3d.glCanvas) + + #Main sizer, to position the preview window, buttons and tab control + sizer = wx.GridBagSizer() + self.SetSizer(sizer) + sizer.Add(configPanel, (0,0), span=(1,1), flag=wx.EXPAND) + sizer.Add(self.preview3d, (0,1), span=(1,3), flag=wx.EXPAND) + sizer.AddGrowableCol(2) + sizer.AddGrowableRow(0) + sizer.Add(loadButton, (1,1), flag=wx.RIGHT, border=5) + sizer.Add(sliceButton, (1,2), flag=wx.RIGHT, border=5) + sizer.Add(printButton, (1,3), flag=wx.RIGHT, border=5) + self.sizer = sizer + + if self.filename != "None": + self.preview3d.loadModelFile(self.filename) + self.lastPath = os.path.split(self.filename)[0] + + self.updateProfileToControls() + + self.Fit() + self.SetMinSize(self.GetSize()) + self.Centre() + self.Show(True) + + def OnPreferences(self, e): + prefDialog = preferencesDialog.preferencesDialog(self) + prefDialog.Centre() + prefDialog.Show(True) + + def OnDefaultMarlinFirmware(self, e): + machineCom.InstallFirmware(os.path.join(os.path.dirname(os.path.abspath(__file__)), "../firmware/default.hex")) + + def OnCustomFirmware(self, e): + dlg=wx.FileDialog(self, "Open firmware to upload", self.lastPath, style=wx.FD_OPEN|wx.FD_FILE_MUST_EXIST) + dlg.SetWildcard("HEX file (*.hex)|*.hex;*.HEX") + if dlg.ShowModal() == wx.ID_OK: + filename = dlg.GetPath() + if not(os.path.exists(filename)): + return + #For some reason my Ubuntu 10.10 crashes here. + machineCom.InstallFirmware(filename) + + def OnFirstRunWizard(self, e): + configWizard.configWizard() + self.updateProfileToControls() + + def OnLoadModel(self, e): + dlg=wx.FileDialog(self, "Open file to print", self.lastPath, style=wx.FD_OPEN|wx.FD_FILE_MUST_EXIST) + dlg.SetWildcard("STL files (*.stl)|*.stl;*.STL") + if dlg.ShowModal() == wx.ID_OK: + self.filename=dlg.GetPath() + profile.putPreference('lastFile', self.filename) + if not(os.path.exists(self.filename)): + return + self.lastPath = os.path.split(self.filename)[0] + self.preview3d.loadModelFile(self.filename) + self.preview3d.setViewMode("Model - Normal") + dlg.Destroy() + + def OnSlice(self, e): + if self.filename == None: + return + put = profile.putProfileSetting + get = profile.getProfileSetting + + put('layer_height', '0.2') + put('wall_thickness', '0.8') + put('solid_layer_thickness', '0.6') + put('fill_density', '20') + put('skirt_line_count', '1') + put('skirt_gap', '6.0') + put('print_speed', '50') + put('print_temperature', '0') + put('support', 'None') + #put('machine_center_x', '100') + #put('machine_center_y', '100') + #put('retraction_min_travel', '5.0') + #put('retraction_speed', '13.5') + #put('retraction_amount', '0.0') + #put('retraction_extra', '0.0') + put('travel_speed', '150') + put('max_z_speed', '1.0') + put('bottom_layer_speed', '25') + put('cool_min_layer_time', '10') + #put('model_scale', '1.0') + #put('flip_x', 'False') + #put('flip_y', 'False') + #put('flip_z', 'False') + #put('model_rotate_base', '0') + #put('model_multiply_x', '1') + #put('model_multiply_y', '1') + put('extra_base_wall_thickness', '0.0') + put('sequence', 'Loops > Perimeter > Infill') + put('force_first_layer_sequence', 'True') + put('infill_type', 'Line') + put('solid_top', 'True') + put('fill_overlap', '15') + put('support_rate', '100') + put('support_distance', '0.5') + put('joris', 'False') + put('cool_min_feedrate', '5') + put('bridge_speed', '100') + put('bridge_material_amount', '100') + put('raft_margin', '5') + put('raft_base_material_amount', '100') + put('raft_interface_material_amount', '100') + + if self.printSupport.GetValue(): + put('support', 'Exterior Only') + + nozzle_size = float(get('nozzle_size')) + if self.printTypeNormal.GetValue(): + put('wall_thickness', nozzle_size * 2.0) + put('layer_height', '0.2') + put('fill_density', '20') + elif self.printTypeLow.GetValue(): + put('wall_thickness', nozzle_size * 1.0) + put('layer_height', '0.3') + put('fill_density', '10') + put('print_speed', '80') + elif self.printTypeHigh.GetValue(): + put('wall_thickness', nozzle_size * 3.0) + put('layer_height', '0.1') + put('fill_density', '30') + put('bottom_layer_speed', '15') + elif self.printTypeJoris.GetValue(): + put('wall_thickness', nozzle_size * 1.5) + put('layer_height', '0.2') + put('fill_density', '0') + put('joris', 'True') + put('extra_base_wall_thickness', '15.0') + put('sequence', 'Infill > Loops > Perimeter') + put('force_first_layer_sequence', 'False') + put('solid_top', 'False') + put('support', 'None') + + put('filament_diameter', self.printMaterialDiameter.GetValue()) + if self.printMaterialPLA.GetValue(): + put('filament_density', '1.00') + put('enable_raft', 'False') + else: + put('filament_density', '0.85') + put('enable_raft', 'True') + + profile.saveGlobalProfile(profile.getDefaultProfilePath()) + + #Create a progress panel and add it to the window. The progress panel will start the Skein operation. + spp = sliceProgessPanel.sliceProgessPanel(self, self, self.filename) + self.sizer.Add(spp, (len(self.progressPanelList)+2,0), span=(1,4), flag=wx.EXPAND) + self.sizer.Layout() + newSize = self.GetSize(); + newSize.IncBy(0, spp.GetSize().GetHeight()) + self.SetSize(newSize) + self.progressPanelList.append(spp) + + def OnPrint(self, e): + printWindow.printWindow() + + def OnNormalSwitch(self, e): + from gui import mainWindow + profile.putPreference('startMode', 'Normal') + mainWindow.mainWindow() + self.Close() + + def removeSliceProgress(self, spp): + self.progressPanelList.remove(spp) + newSize = self.GetSize(); + newSize.IncBy(0, -spp.GetSize().GetHeight()) + self.SetSize(newSize) + self.sizer.Remove(spp) + spp.Destroy() + for spp in self.progressPanelList: + self.sizer.Remove(spp) + i = 2 + for spp in self.progressPanelList: + self.sizer.Add(spp, (i,0), span=(1,4), flag=wx.EXPAND) + i += 1 + self.sizer.Layout() + + def OnQuit(self, e): + self.Close() + + def OnClose(self, e): + profile.saveGlobalProfile(profile.getDefaultProfilePath()) + self.Destroy() diff --git a/Cura/util/profile.py b/Cura/util/profile.py index d523962..daa8254 100644 --- a/Cura/util/profile.py +++ b/Cura/util/profile.py @@ -61,6 +61,7 @@ profileDefaultSettings = { } preferencesDefaultSettings = { 'wizardDone': 'False', + 'startMode': 'Simple', 'lastFile': 'None', 'machine_width': '205', 'machine_depth': '205', From 9966bbf6f4bbac498892596eac0e2877fd890160 Mon Sep 17 00:00:00 2001 From: daid Date: Fri, 30 Mar 2012 09:49:28 +0200 Subject: [PATCH 22/33] Fix start.gcode saving when the tab is opened for the first time. --- Cura/gui/alterationPanel.py | 1 + 1 file changed, 1 insertion(+) diff --git a/Cura/gui/alterationPanel.py b/Cura/gui/alterationPanel.py index 425c823..c47b7c8 100644 --- a/Cura/gui/alterationPanel.py +++ b/Cura/gui/alterationPanel.py @@ -25,6 +25,7 @@ class alterationPanel(wx.Panel): self.SetSizer(sizer) self.loadFile(self.alterationFileList[self.list.GetSelection()]) + self.currentFile = self.list.GetSelection() def OnSelect(self, e): self.loadFile(self.alterationFileList[self.list.GetSelection()]) From 8c5bf431b5bc1e8f2044a7c39c0a02d4441aad0b Mon Sep 17 00:00:00 2001 From: daid Date: Fri, 30 Mar 2012 09:50:13 +0200 Subject: [PATCH 23/33] Turn on fan in startcode instead of always have it on. --- Cura/alterations/start.gcode | 2 ++ Cura/cura_sf/fabmetheus_utilities/settings.py | 6 +++--- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/Cura/alterations/start.gcode b/Cura/alterations/start.gcode index 7db5699..4f1222a 100644 --- a/Cura/alterations/start.gcode +++ b/Cura/alterations/start.gcode @@ -4,6 +4,8 @@ G90 ;absolute positioning G28 X0 Y0 ;move X/Y to min endstops G28 Z0 ;move Z to min endstops +M106 ;turn on fan + ; if your prints start too high, try changing the Z0.0 below ; to Z1.0 - the number after the Z is the actual, physical ; height of the nozzle in mm. This can take some messing around diff --git a/Cura/cura_sf/fabmetheus_utilities/settings.py b/Cura/cura_sf/fabmetheus_utilities/settings.py index 3c27c0f..f89fa87 100644 --- a/Cura/cura_sf/fabmetheus_utilities/settings.py +++ b/Cura/cura_sf/fabmetheus_utilities/settings.py @@ -103,7 +103,7 @@ def getProfileInformation(): 'Activate_Widen': DEFSET, 'Widen_Width_over_Edge_Width_ratio': DEFSET, },'inset': { - 'Add_Custom_Code_for_Temperature_Reading': DEFSET, + 'Add_Custom_Code_for_Temperature_Reading': "False", 'Infill_in_Direction_of_Bridge': "True", 'Infill_Width': storedSetting("nozzle_size"), 'Loop_Order_Choice': DEFSET, @@ -265,8 +265,8 @@ def getProfileInformation(): 'Name_of_Cool_End_File': DEFSET, 'Name_of_Cool_Start_File': DEFSET, 'Orbital_Outset_millimeters': DEFSET, - 'Turn_Fan_On_at_Beginning': DEFSET, - 'Turn_Fan_Off_at_Ending': DEFSET, + 'Turn_Fan_On_at_Beginning': "False", + 'Turn_Fan_Off_at_Ending': "False", 'Minimum_feed_rate_mm/s': storedSetting("cool_min_feedrate"), },'hop': { 'Activate_Hop': "False", From 7cb514f4aaf248fa4d1c606acdd9794f00a9695b Mon Sep 17 00:00:00 2001 From: daid Date: Fri, 30 Mar 2012 11:12:26 +0200 Subject: [PATCH 24/33] Disable skirt for ABS on simple mode. Because we already have a raft. --- Cura/gui/simpleMode.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Cura/gui/simpleMode.py b/Cura/gui/simpleMode.py index 003a79d..1480418 100644 --- a/Cura/gui/simpleMode.py +++ b/Cura/gui/simpleMode.py @@ -240,9 +240,11 @@ class simpleModeWindow(configBase.configWindowBase): if self.printMaterialPLA.GetValue(): put('filament_density', '1.00') put('enable_raft', 'False') + put('skirt_line_count', '1') else: put('filament_density', '0.85') put('enable_raft', 'True') + put('skirt_line_count', '0') profile.saveGlobalProfile(profile.getDefaultProfilePath()) From e17c4387c956a9c76924a5a180813c1c38fe4aab Mon Sep 17 00:00:00 2001 From: daid Date: Fri, 30 Mar 2012 12:11:10 +0200 Subject: [PATCH 25/33] Speed up the first layer for low quality prints. --- Cura/gui/simpleMode.py | 1 + 1 file changed, 1 insertion(+) diff --git a/Cura/gui/simpleMode.py b/Cura/gui/simpleMode.py index 1480418..02905c6 100644 --- a/Cura/gui/simpleMode.py +++ b/Cura/gui/simpleMode.py @@ -220,6 +220,7 @@ class simpleModeWindow(configBase.configWindowBase): put('layer_height', '0.3') put('fill_density', '10') put('print_speed', '80') + put('bottom_layer_speed', '40') elif self.printTypeHigh.GetValue(): put('wall_thickness', nozzle_size * 3.0) put('layer_height', '0.1') From 88337f167546023c6ae0de6065c94a41fbfe7abd Mon Sep 17 00:00:00 2001 From: daid Date: Fri, 30 Mar 2012 13:54:49 +0200 Subject: [PATCH 26/33] No longer use the current_profile.ini to share the profile between the backend slicer and the frontend. No longer have simple-mode overwrite the current profile from normal mode. --- Cura/cura.py | 7 +++++-- Cura/gui/mainWindow.py | 2 -- Cura/gui/simpleMode.py | 9 ++++++--- Cura/gui/sliceProgessPanel.py | 8 +++++--- Cura/util/profile.py | 17 +++++++++++++++-- Cura/util/sliceRun.py | 4 ++-- 6 files changed, 33 insertions(+), 14 deletions(-) diff --git a/Cura/cura.py b/Cura/cura.py index 4de0ed1..2d2d7e4 100644 --- a/Cura/cura.py +++ b/Cura/cura.py @@ -16,6 +16,7 @@ import sys import platform from optparse import OptionParser +from util import profile from util import sliceRun __author__ = 'Daid' @@ -43,9 +44,11 @@ Art of Illusion """ __license__ = 'GNU Affero General Public License http://www.gnu.org/licenses/agpl.html' def main(): - parser = OptionParser() + parser = OptionParser(usage="usage: %prog [options] .stl") + parser.add_option("-p", "--profile", action="store", type="string", dest="profile", help="Use these profile settings instead of loading current_profile.ini") (options, args) = parser.parse_args() - sys.argv = [sys.argv[0]] + args + if options.profile != None: + profile.loadGlobalProfileFromString(options.profile) if len( args ) > 0: sliceRun.runSlice(args) else: diff --git a/Cura/gui/mainWindow.py b/Cura/gui/mainWindow.py index 9839d40..d0c30d7 100644 --- a/Cura/gui/mainWindow.py +++ b/Cura/gui/mainWindow.py @@ -265,8 +265,6 @@ class mainWindow(configBase.configWindowBase): def OnSlice(self, e): if self.filename == None: return - profile.saveGlobalProfile(profile.getDefaultProfilePath()) - #Create a progress panel and add it to the window. The progress panel will start the Skein operation. spp = sliceProgessPanel.sliceProgessPanel(self, self, self.filename) self.sizer.Add(spp, (len(self.progressPanelList)+2,0), span=(1,4), flag=wx.EXPAND) diff --git a/Cura/gui/simpleMode.py b/Cura/gui/simpleMode.py index 02905c6..e2a6d91 100644 --- a/Cura/gui/simpleMode.py +++ b/Cura/gui/simpleMode.py @@ -162,6 +162,9 @@ class simpleModeWindow(configBase.configWindowBase): def OnSlice(self, e): if self.filename == None: return + #save the current profile so we can put it back latter + oldProfile = profile.getGlobalProfileString() + put = profile.putProfileSetting get = profile.getProfileSetting @@ -247,8 +250,6 @@ class simpleModeWindow(configBase.configWindowBase): put('enable_raft', 'True') put('skirt_line_count', '0') - profile.saveGlobalProfile(profile.getDefaultProfilePath()) - #Create a progress panel and add it to the window. The progress panel will start the Skein operation. spp = sliceProgessPanel.sliceProgessPanel(self, self, self.filename) self.sizer.Add(spp, (len(self.progressPanelList)+2,0), span=(1,4), flag=wx.EXPAND) @@ -257,6 +258,9 @@ class simpleModeWindow(configBase.configWindowBase): newSize.IncBy(0, spp.GetSize().GetHeight()) self.SetSize(newSize) self.progressPanelList.append(spp) + + #Restore the old profile. + profile.loadGlobalProfileFromString(oldProfile) def OnPrint(self, e): printWindow.printWindow() @@ -286,5 +290,4 @@ class simpleModeWindow(configBase.configWindowBase): self.Close() def OnClose(self, e): - profile.saveGlobalProfile(profile.getDefaultProfilePath()) self.Destroy() diff --git a/Cura/gui/sliceProgessPanel.py b/Cura/gui/sliceProgessPanel.py index 5854060..bdf2e82 100644 --- a/Cura/gui/sliceProgessPanel.py +++ b/Cura/gui/sliceProgessPanel.py @@ -57,7 +57,8 @@ class sliceProgessPanel(wx.Panel): self.prevStep = 'start' self.totalDoneFactor = 0.0 self.startTime = time.time() - self.thread = WorkerThread(self, filename) + p = subprocess.Popen(sliceRun.getSliceCommand(self.filename), stdout=subprocess.PIPE, stderr=subprocess.STDOUT) + self.thread = WorkerThread(self, filename, p) def OnAbort(self, e): if self.abort: @@ -108,14 +109,15 @@ class sliceProgessPanel(wx.Panel): self.statusText.SetLabel(stepName + " [" + str(layer) + "/" + str(maxLayer) + "]") class WorkerThread(threading.Thread): - def __init__(self, notifyWindow, filename): + def __init__(self, notifyWindow, filename, process): threading.Thread.__init__(self) self.filename = filename self.notifyWindow = notifyWindow + self.process = process self.start() def run(self): - p = subprocess.Popen(sliceRun.getSliceCommand(self.filename), stdout=subprocess.PIPE, stderr=subprocess.STDOUT) + p = self.process line = p.stdout.readline() maxValue = 1 self.progressLog = [] diff --git a/Cura/util/profile.py b/Cura/util/profile.py index daa8254..8ab00bd 100644 --- a/Cura/util/profile.py +++ b/Cura/util/profile.py @@ -85,10 +85,23 @@ def saveGlobalProfile(filename): #Save the current profile to an ini file globalProfileParser.write(open(filename, 'w')) -def resetGlobalProfile(): - #Create an empty profile with no settings, so everything gets default settings. +def loadGlobalProfileFromString(options): global globalProfileParser globalProfileParser = ConfigParser.ConfigParser() + globalProfileParser.add_section('profile') + for option in options.split('#'): + (key, value) = option.split('=', 1) + globalProfileParser.set('profile', key, value) + +def getGlobalProfileString(): + global globalProfileParser + if not globals().has_key('globalProfileParser'): + loadGlobalProfile(getDefaultProfilePath()) + + ret = [] + for key in globalProfileParser.options('profile'): + ret.append(key + "=" + globalProfileParser.get('profile', key)) + return '#'.join(ret) def getProfileSetting(name): if name in profileDefaultSettings: diff --git a/Cura/util/sliceRun.py b/Cura/util/sliceRun.py index e18fb98..4813f35 100644 --- a/Cura/util/sliceRun.py +++ b/Cura/util/sliceRun.py @@ -58,7 +58,7 @@ def runSlice(fileNames): print "* Failed to find pypy, so sliced with python! *" print "************************************************" else: - subprocess.call([pypyExe, os.path.join(sys.path[0], sys.argv[0]), fileName]) + subprocess.call([pypyExe, os.path.abspath(os.path.join(os.path.dirname(os.path.abspath(__file__)), "..", os.path.split(sys.argv[0])[1])), '-p', profile.getGlobalProfileString(), fileName]) def getSliceCommand(filename): if profile.getPreference('slicer').startswith('Slic3r'): @@ -116,5 +116,5 @@ def getSliceCommand(filename): pypyExe = getPyPyExe() if pypyExe == False: pypyExe = sys.executable - return [pypyExe, os.path.abspath(os.path.join(os.path.dirname(os.path.abspath(__file__)), "..", os.path.split(sys.argv[0])[1])), filename] + return [pypyExe, os.path.abspath(os.path.join(os.path.dirname(os.path.abspath(__file__)), "..", os.path.split(sys.argv[0])[1])), '-p', profile.getGlobalProfileString(), filename] From 7d13b17dd99701dcab1107fbef47d4692bc3376e Mon Sep 17 00:00:00 2001 From: Daid Date: Sat, 31 Mar 2012 21:48:23 +0200 Subject: [PATCH 27/33] Small optimalization in gcode preview, saves a square root per line --- Cura/gui/preview3d.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Cura/gui/preview3d.py b/Cura/gui/preview3d.py index e553198..c27558b 100644 --- a/Cura/gui/preview3d.py +++ b/Cura/gui/preview3d.py @@ -471,7 +471,7 @@ class PreviewGLCanvas(glcanvas.GLCanvas): # Calculate line width from ePerDistance (needs layer thickness and filament diameter) dist = (v0 - v1).vsize() if dist > 0 and layerThickness > 0: - extrusionMMperDist = (v1.e - v0.e) / (v0 - v1).vsize() + extrusionMMperDist = (v1.e - v0.e) / dist lineWidth = extrusionMMperDist * filamentArea / layerThickness / 2 normal = (v0 - v1).cross(util3d.Vector3(0,0,1)) From ca92f69770a29eb19773cf80284014b6e27fdf38 Mon Sep 17 00:00:00 2001 From: Daid Date: Sun, 1 Apr 2012 19:16:31 +0200 Subject: [PATCH 28/33] Printing works! If you press the right buttons in the right order that is. --- Cura/gui/machineCom.py | 11 +++-- Cura/gui/printWindow.py | 99 ++++++++++++++++++++++++++++++++++++++--- 2 files changed, 100 insertions(+), 10 deletions(-) diff --git a/Cura/gui/machineCom.py b/Cura/gui/machineCom.py index 605d05c..ffd8165 100644 --- a/Cura/gui/machineCom.py +++ b/Cura/gui/machineCom.py @@ -1,7 +1,7 @@ from __future__ import absolute_import import __init__ -import os, glob, wx, threading, sys +import os, glob, wx, threading, sys, time from serial import Serial @@ -108,7 +108,7 @@ class MachineCom(): if port == None: port = profile.getPreference('serial_port') if baudrate == None: - baudrate = profile.getPreference('serial_baud') + baudrate = int(profile.getPreference('serial_baud')) self.serial = None if port == 'AUTO': programmer = stk500v2.Stk500v2() @@ -116,6 +116,7 @@ class MachineCom(): try: programmer.connect(port) programmer.close() + print "Connecting to: %s %i" % (port, baudrate) self.serial = Serial(port, baudrate, timeout=5) break except ispBase.IspError: @@ -131,9 +132,10 @@ class MachineCom(): def readline(self): if self.serial == None: - return '' + return None ret = self.serial.readline() - print "Recv: " + ret.rstrip() + if ret != '': + print "Recv: " + ret.rstrip() return ret def close(self): @@ -144,5 +146,6 @@ class MachineCom(): def sendCommand(self, cmd): if self.serial == None: return + print 'Send: ' + cmd self.serial.write(cmd + '\n') diff --git a/Cura/gui/printWindow.py b/Cura/gui/printWindow.py index 7b28a45..d061330 100644 --- a/Cura/gui/printWindow.py +++ b/Cura/gui/printWindow.py @@ -1,22 +1,31 @@ from __future__ import absolute_import import __init__ -import wx +import wx, threading + +from gui import machineCom printWindowHandle = None def printFile(filename): global printWindowHandle - print "Want to print: " + filename if printWindowHandle == None: printWindowHandle = printWindow() printWindowHandle.Show(True) printWindowHandle.Raise() + printWindowHandle.LoadGCodeFile(filename) class printWindow(wx.Frame): "Main user interface window" def __init__(self): super(printWindow, self).__init__(None, -1, title='Printing') + self.machineCom = None + self.thread = None + self.gcodeList = None + self.printIdx = None + self.bufferLineCount = 4 + self.sendCnt = 0 + self.SetSizer(wx.BoxSizer()) self.panel = wx.Panel(self) self.GetSizer().Add(self.panel, 1, flag=wx.EXPAND) @@ -30,21 +39,99 @@ class printWindow(wx.Frame): self.sizer.Add(boxsizer, pos=(0,0), span=(4,1), flag=wx.EXPAND) - self.sizer.Add(wx.Button(self.panel, -1, 'Connect'), pos=(0,1)) - self.sizer.Add(wx.Button(self.panel, -1, 'Load GCode'), pos=(1,1)) - self.sizer.Add(wx.Button(self.panel, -1, 'Print GCode'), pos=(2,1)) - self.sizer.Add(wx.Button(self.panel, -1, 'Cancel print'), pos=(3,1)) + self.connectButton = wx.Button(self.panel, -1, 'Connect') + self.loadButton = wx.Button(self.panel, -1, 'Load GCode') + self.printButton = wx.Button(self.panel, -1, 'Print GCode') + self.cancelButton = wx.Button(self.panel, -1, 'Cancel print') + self.sizer.Add(self.connectButton, pos=(0,1)) + self.sizer.Add(self.loadButton, pos=(1,1)) + self.sizer.Add(self.printButton, pos=(2,1)) + self.sizer.Add(self.cancelButton, pos=(3,1)) self.sizer.Add(wx.Gauge(self.panel, -1), pos=(4,0), span=(1,2), flag=wx.EXPAND) self.sizer.AddGrowableRow(3) self.sizer.AddGrowableCol(0) self.Bind(wx.EVT_CLOSE, self.OnClose) + self.connectButton.Bind(wx.EVT_BUTTON, self.OnConnect) + self.loadButton.Bind(wx.EVT_BUTTON, self.OnLoad) + self.printButton.Bind(wx.EVT_BUTTON, self.OnPrint) + self.cancelButton.Bind(wx.EVT_BUTTON, self.OnCancel) self.Layout() self.Fit() self.Centre() + def OnConnect(self, e): + if self.machineCom != None: + self.machineCom.close() + self.thread.join() + self.machineCom = machineCom.MachineCom() + self.thread = threading.Thread(target=self.PrinterMonitor) + self.thread.start() + + def OnLoad(self, e): + pass + + def OnPrint(self, e): + if self.machineCom == None: + return + if self.gcodeList == None: + return + if self.printIdx != None: + return + self.printIdx = 1 + self.sendLine(0) + self.sendCnt = self.bufferLineCount + + def OnCancel(self, e): + pass + def OnClose(self, e): global printWindowHandle printWindowHandle = None + if self.machineCom != None: + self.machineCom.close() + self.thread.join() self.Destroy() + + def LoadGCodeFile(self, filename): + gcodeList = ["M110"] + for line in open(filename, 'r'): + if ';' in line: + line = line[0:line.find(';')] + line = line.strip() + if len(line) > 0: + gcodeList.append(line) + print "Loaded: %s (%d)" % (filename, len(gcodeList)) + self.gcodeList = gcodeList + + def sendLine(self, lineNr): + if lineNr >= len(self.gcodeList): + return + checksum = reduce(lambda x,y:x^y, map(ord, "N%d%s" % (lineNr, self.gcodeList[lineNr]))) + self.machineCom.sendCommand("N%d%s*%d" % (lineNr, self.gcodeList[lineNr], checksum)) + + def PrinterMonitor(self): + skipCount = 0 + while True: + line = self.machineCom.readline() + if line == None: + return + while self.sendCnt > 0: + self.sendLine(self.printIdx) + self.printIdx += 1 + self.sendCnt -= 1 + if self.printIdx != None: + if line.startswith("ok"): + if skipCount > 0: + skipCount -= 1 + else: + self.sendLine(self.printIdx) + self.printIdx += 1 + elif "resend" in line.lower() or "rs" in line: + try: + lineNr=int(line.replace("N:"," ").replace("N"," ").replace(":"," ").split()[-1]) + except: + if "rs" in line: + lineNr=int(line.split()[1]) + self.printIdx = lineNr From 85d44ad8a0f98738d10ae330ca51e0c3662f95be Mon Sep 17 00:00:00 2001 From: daid Date: Mon, 2 Apr 2012 14:43:39 +0200 Subject: [PATCH 29/33] Added icon to main window. Added win32 installer script, with drivers for Arduino Mega2560. --- Cura/gui/icon.py | 27 +++++ Cura/gui/mainWindow.py | 3 +- Cura/gui/printWindow.py | 3 + Cura/gui/simpleMode.py | 2 + scripts/win32/cura.ico | Bin 0 -> 4286 bytes scripts/win32/drivers/Arduino_MEGA_2560.inf | 106 ++++++++++++++++++ scripts/win32/drivers/dpinst32.exe | Bin 0 -> 552528 bytes scripts/win32/drivers/dpinst64.exe | Bin 0 -> 677952 bytes scripts/win32/header.bmp | Bin 0 -> 21722 bytes scripts/win32/installer.nsi | 117 ++++++++++++++++++++ 10 files changed, 257 insertions(+), 1 deletion(-) create mode 100644 Cura/gui/icon.py create mode 100644 scripts/win32/cura.ico create mode 100644 scripts/win32/drivers/Arduino_MEGA_2560.inf create mode 100644 scripts/win32/drivers/dpinst32.exe create mode 100644 scripts/win32/drivers/dpinst64.exe create mode 100644 scripts/win32/header.bmp create mode 100644 scripts/win32/installer.nsi diff --git a/Cura/gui/icon.py b/Cura/gui/icon.py new file mode 100644 index 0000000..8b53bbf --- /dev/null +++ b/Cura/gui/icon.py @@ -0,0 +1,27 @@ +#---------------------------------------------------------------------- +# This file was generated by /usr/bin/img2py +# +from wx.lib.embeddedimage import PyEmbeddedImage + +Main = PyEmbeddedImage( + "iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAIAAAD9MqGbAAAAA3NCSVQICAjb4U/gAAAC/klE" + "QVQ4jYWUe0hTYRTAz+5rd5uPys2Z89mtLLecPRQpZw+ishf0gB5EQRZFWY20h/6jGQWSlJRR" + "RFGRFJXRHw3ECpRWbqRZq1WabErqqjWd7XF3d7e72x8rfKX9/jsf349zzncOn6DyPRuPBeAv" + "IY5DUBT+hy2IY/FYII1g2s2mi5Vl7WZTMBhQZS5Qqefbf3w7UlIxeYp0PBkDgMYGXenhAo4L" + "yqcqUqiZpjfGVoMeAFat35yjWTau6f3lrCwrxgn8bNWNxcvzERRl/f4TB3e9ano2ccHYuxcN" + "A46fqzdsWbpybfiIEAr3aUsYH52mzJjAROVJVOdbo7bkdMiod+gbvZYv0Sq1NDZuLoK4Xzc7" + "W43ipBRMEjFK6+cwjKHdABDNsh9KtQAgmTY9cctO1vHTdOxA+FJMTi4ZGzc2JyJTpACAE8fy" + "6l8RUtmfgqWyvAajYuPWcEgHPf8wZ2drAODW1WoylUKFJAA0ftWteaTMb15SPutpbwIUWg4t" + "u5eyXadptj0f0WdBxWWht/+Z7vH929cyvF6cDzVh/k6nmZUwHpR5O0/gDnnykvKtvzp6XJa1" + "1LahPgHg8MlTU6SxN2rO9TNMyEc3XKojRaLIokludFD+nT+jqVZQqS55LhE1ffiGCe588qYR" + "DAAEPe6Wmirn9RoifY4sc0GpvNaHBo62ALIUEFQIJgGdHSNiB9Lnlien7elgSWRoshGRWYXF" + "8es2cV2Wzrs3AUDE4QCAmElKqc08cCUr4ziOitvbynieg/D2DZczL1xzuey2XjPeUeTjaNV5" + "HdgNLk833VuP4ZFCkdw9+ImhbYDPGGGG2f9ik9X5GUeJAMfWPslJFyvEfgcvQAR8aESaURrP" + "c3szTnzsbwMAkrbFdz1kAOwzd29WnxShoveGwj7rg9EvNBZbd52xrYKKW5RI7XA6Wn701A86" + "WhFUSCm1ePKGiUwA0Os03pdWUPMAEOL8jFgBACTdJ5tXLRj1J4yFcRh89qao6ASIWcH5He5A" + "lwRiBqIX/gbbS0S3wHAu3wAAAABJRU5ErkJggg==") +getMainData = Main.GetData +getMainImage = Main.GetImage +getMainBitmap = Main.GetBitmap +getMainIcon = Main.GetIcon + diff --git a/Cura/gui/mainWindow.py b/Cura/gui/mainWindow.py index 67377ea..8994762 100644 --- a/Cura/gui/mainWindow.py +++ b/Cura/gui/mainWindow.py @@ -14,6 +14,7 @@ from gui import configWizard from gui import machineCom from gui import printWindow from gui import simpleMode +from gui import icon from util import profile def main(): @@ -34,7 +35,7 @@ class mainWindow(configBase.configWindowBase): def __init__(self): super(mainWindow, self).__init__(title='Cura') - wx.EVT_CLOSE(self, self.OnClose) + self.SetIcon(icon.getMainIcon()) menubar = wx.MenuBar() fileMenu = wx.Menu() diff --git a/Cura/gui/printWindow.py b/Cura/gui/printWindow.py index d061330..1b19a4c 100644 --- a/Cura/gui/printWindow.py +++ b/Cura/gui/printWindow.py @@ -4,6 +4,7 @@ import __init__ import wx, threading from gui import machineCom +from gui import icon printWindowHandle = None @@ -25,6 +26,8 @@ class printWindow(wx.Frame): self.printIdx = None self.bufferLineCount = 4 self.sendCnt = 0 + + self.SetIcon(icon.getMainIcon()) self.SetSizer(wx.BoxSizer()) self.panel = wx.Panel(self) diff --git a/Cura/gui/simpleMode.py b/Cura/gui/simpleMode.py index e2a6d91..40a3d0e 100644 --- a/Cura/gui/simpleMode.py +++ b/Cura/gui/simpleMode.py @@ -11,6 +11,7 @@ from gui import preferencesDialog from gui import configWizard from gui import machineCom from gui import printWindow +from gui import icon from util import profile class simpleModeWindow(configBase.configWindowBase): @@ -19,6 +20,7 @@ class simpleModeWindow(configBase.configWindowBase): super(simpleModeWindow, self).__init__(title='Cura - Simple mode') wx.EVT_CLOSE(self, self.OnClose) + self.SetIcon(icon.getMainIcon()) menubar = wx.MenuBar() fileMenu = wx.Menu() diff --git a/scripts/win32/cura.ico b/scripts/win32/cura.ico new file mode 100644 index 0000000000000000000000000000000000000000..1919bfe1f26e3d1ed97fe83baceed526b5a7299b GIT binary patch literal 4286 zcmc(iYfzL`7{?DRH!Hkx2@DG&EgUc{4a!RxpoB??nNn2JQ2N0EW^B?%NUkfOkX+<0 zDVNr~g4h}vm&Ij8ATB8gL!(V8g68zGnLhOIoP~3E-^B%mom%GE_v|^(oZtU>p7TCu zAjFLRxw;beO^(kd#E}s40yR2Ce5tW{{fDllT8`Mr1R?))?)vlZpOv>vVSjZiZ}sX@ z?zAam{OTYEdbE1KN6r6@-a2U7D$&?hA2WIFn{!2RE3`K%BRE_1({Zx;$ zG$)xCP6?l>@;4s~G~jX_3Oc`0>~E~ze159@j_xYFUl9zyqF1prXOYn2l;(gp3VpCR zD;QRZUrefFs{A|GTcG>C9$IxBPHXZ6e{0!#QBQUrTRR$1*;s>p)yEM_&t7)z8RTC) zD|C51V*R@`8ic-81cie36*6LqXCnmPX3I-(uvcR4;uI|M%RqBOz0kwoYo>+gKd>ZE ztWS3S`dhWIx1+sflq;UD+XSD4ECE?gbxHaj>qp*)v*2HJ7|!XbvbDHs)kE{Qh8D}% z?rsMV6p#<6SGLRf0dl@ni*&p!_YemATPEb+rRy0TJ>3gGFnfHDa+OKST@ z`Ai3W_x1C1&6S!#AFzJ!Mf}#+DE9BU+JxGc^W&Jt_@|HNz|72Sj6rNh+3|R6MhvwX zAa<0yjM|3re5S|kpbL^}Vo;+iMCj4Aut-pV^$jUgI_B~BU#W$ogPmYM|C}2NGt&j% z(<1}7`!2yzNqr3BCed?1_R?G#&X4|frv2gGz*x;6#Ah|-xm~{03qyT6+~{bQ@rMR< zcrwj?JcphCInl8CnAXiegLR@6${P+$8voNS&U(J3g$1rPf2a31Adj7$JvPsJo%-8aS^Uzx z{V~vr?j{WyYkm|yj4$EPAI(dJe0H)|p?}rV^QtG+)NXEdTc}@4L<4`vvZ<54Fc||7G0l9DmOk;~1Og@4xH( zr)WM2?YHLW(o|2VfxVmTeX)Jwahy4pJE5;JE}!RoR(E~|0(@6YxMyk3e&M?_GJHZ` z&N24n{9c_Jvu4_gecufUdSHGVs>|Rq&q?@g3kx*~pXtlqPwzBZ18xrXa}g5ck3G?! zg6WZRxsNINOhfYC7+70b2@RZM>>0iNLzBhNYot}HuxyDZ%*`eDEzOIKjWt&Kyo}vZ zpJ3C5b?{i|j)rsPCg*bhC1JW~wJUfBb)7eir}BCu7sv{;!{Z E0W(u3@&Et; literal 0 HcmV?d00001 diff --git a/scripts/win32/drivers/Arduino_MEGA_2560.inf b/scripts/win32/drivers/Arduino_MEGA_2560.inf new file mode 100644 index 0000000..2f51973 --- /dev/null +++ b/scripts/win32/drivers/Arduino_MEGA_2560.inf @@ -0,0 +1,106 @@ +;************************************************************ +; Windows USB CDC ACM Setup File +; Copyright (c) 2000 Microsoft Corporation + + +[Version] +Signature="$Windows NT$" +Class=Ports +ClassGuid={4D36E978-E325-11CE-BFC1-08002BE10318} +Provider=%MFGNAME% +LayoutFile=layout.inf +CatalogFile=%MFGFILENAME%.cat +DriverVer=11/15/2007,5.1.2600.0 + +[Manufacturer] +%MFGNAME%=DeviceList, NTamd64 + +[DestinationDirs] +DefaultDestDir=12 + + +;------------------------------------------------------------------------------ +; Windows 2000/XP/Vista-32bit Sections +;------------------------------------------------------------------------------ + +[DriverInstall.nt] +include=mdmcpq.inf +CopyFiles=DriverCopyFiles.nt +AddReg=DriverInstall.nt.AddReg + +[DriverCopyFiles.nt] +usbser.sys,,,0x20 + +[DriverInstall.nt.AddReg] +HKR,,DevLoader,,*ntkern +HKR,,NTMPDriver,,%DRIVERFILENAME%.sys +HKR,,EnumPropPages32,,"MsPorts.dll,SerialPortPropPageProvider" + +[DriverInstall.nt.Services] +AddService=usbser, 0x00000002, DriverService.nt + +[DriverService.nt] +DisplayName=%SERVICE% +ServiceType=1 +StartType=3 +ErrorControl=1 +ServiceBinary=%12%\%DRIVERFILENAME%.sys + +;------------------------------------------------------------------------------ +; Vista-64bit Sections +;------------------------------------------------------------------------------ + +[DriverInstall.NTamd64] +include=mdmcpq.inf +CopyFiles=DriverCopyFiles.NTamd64 +AddReg=DriverInstall.NTamd64.AddReg + +[DriverCopyFiles.NTamd64] +%DRIVERFILENAME%.sys,,,0x20 + +[DriverInstall.NTamd64.AddReg] +HKR,,DevLoader,,*ntkern +HKR,,NTMPDriver,,%DRIVERFILENAME%.sys +HKR,,EnumPropPages32,,"MsPorts.dll,SerialPortPropPageProvider" + +[DriverInstall.NTamd64.Services] +AddService=usbser, 0x00000002, DriverService.NTamd64 + +[DriverService.NTamd64] +DisplayName=%SERVICE% +ServiceType=1 +StartType=3 +ErrorControl=1 +ServiceBinary=%12%\%DRIVERFILENAME%.sys + + +;------------------------------------------------------------------------------ +; Vendor and Product ID Definitions +;------------------------------------------------------------------------------ +; When developing your USB device, the VID and PID used in the PC side +; application program and the firmware on the microcontroller must match. +; Modify the below line to use your VID and PID. Use the format as shown below. +; Note: One INF file can be used for multiple devices with different VID and PIDs. +; For each supported device, append ",USB\VID_xxxx&PID_yyyy" to the end of the line. +;------------------------------------------------------------------------------ +[SourceDisksFiles] +[SourceDisksNames] +[DeviceList] +%DESCRIPTION%=DriverInstall, USB\VID_2341&PID_0010 + +[DeviceList.NTamd64] +%DESCRIPTION%=DriverInstall, USB\VID_2341&PID_0010 + + +;------------------------------------------------------------------------------ +; String Definitions +;------------------------------------------------------------------------------ +;Modify these strings to customize your device +;------------------------------------------------------------------------------ +[Strings] +MFGFILENAME="CDC_vista" +DRIVERFILENAME ="usbser" +MFGNAME="Arduino LLC (www.arduino.cc)" +INSTDISK="Arduino Mega 2560 Driver Installer" +DESCRIPTION="Arduino Mega 2560" +SERVICE="USB RS-232 Emulation Driver" diff --git a/scripts/win32/drivers/dpinst32.exe b/scripts/win32/drivers/dpinst32.exe new file mode 100644 index 0000000000000000000000000000000000000000..f4d9174e2b2c4d3bad101c4f4417cc93eaa5492d GIT binary patch literal 552528 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

dD=kUH8oOfY9d_)SSdX>l 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

NRXccHWXc#CQ6a;DpdJ|L@7cowWKb+< z04NCL1*!`w3ChNp%*GmV9drhC6tokx3bX)}3K|9)21>JDlQstj@j-KpUur$PHc8$oHH6i_&*E2uT7 z2FMX~vpQ@9Z3a1GPK^VGf!csvKn|em)xZPV3YrUw1$6~A1HB4*f_38p=qP9>C=E0M zGyv2VR2NhZH>WT`P;CzEkK-M3Fc=S(k;>6aX{?Vbe_DXizMuH>f?x4OA9oi-8Q`SXV}ax~uhNGs>>OCWc9f$AOxIdV?a7-xbKv z1pHp03RtV^g51=a)zG1HhW5*aZ-m?7q9 zzvzK6aZw?bh?r=3Xrj=7xR_9Le7shQ?lAeq2bq&B-J&BxW5Ud`%^}ci2{eZ$#6?(! zdzs@y<04`$F>ziYp^=hkvQhIK3m>2!VPPJjlupwU%}AJKm`yDYNNGmf{LRsWEa6%^ zJiNMl1o*i&t{)Z|iJg#mM<+yeHOI#!#D$vuL!t*IgbXsr!z-H{1JS&gfkqi_g9`b_ zgbv9~dmtSWmYeQm@`;GfNe4^EJZXBit7skJ8xkEBX%+_uS{4#-@s5j&i4)17rJf0K zapq`?@|p}P)G;B_647?J#T*n991&*r3=fGDUs@6p$!?OJ4(%di2B?I1=_OiM;T}|z z7!wr*h5ixI=3x1qIo?ST7EgHJP$G{UgF_-LJ~45D5z&Jp&7B7fHiufIqa*r8+2a)v zhpd>m;qXiu+TAfGEFseD6A@|d6cPo&vVpn5a6n9Aye)Sjt(7!4C?d+tJ7Dm2H^;?e zh|niXnC=#Dj`K1P3_)AF`5C={-=?7jLE&-ckT9*mW|>azJUO3>C(7X-jSb(;D;$im zq**4jR2j_-mOmW)qAlh)4B{bXjNs5Xa}+#{PkC+gz05iJCmp**M}@?8k1!{89!L=q zT&QE7^mH5fD2avl;E6l*G5I-wWK*H8ArbMIX`$v=ZCXfQ6FiMM(h&m}gAFx8*iP2) zuvp?E1|(Rt5ttyJF|osS+v{s%NgF-lt;IWG7U^Xzw6sq|T)fJV@tT*+QL$uD{SyXh zQL!O$=0K>>>}*>>ssw8Wjr*I%)Apb2Q@D4g2$0b5gv_k!Ibo!SZ*Zu1JN%n>)hT zBz)Rsv>+fRf=;{V z<7y=`K-1?RF(57^Zn)HfHzOnS2;iIx2}P@d)77=Rp42g}GH}!FmgrSE)5Q=5)53GM-UNNEg-mF8QB_z&*c(B}K zZUDxnY}RwNcp}#7NUQ>e&bO7$whKjCeA!4E+!#5Oy|J4$RRL1CecVmD;xDR*RL)PczQ;}V{~{% zhQ!A+OI~+SbGvN}k|}6obXe|ee@p9?$U%M>Y;U1?HrGP4<|(WdSRRj3o~}SQNe<=a_{V4~Nd$bLtp@0@s#@zj<*q~E zaCjw3GaKthTs%7?SoY%iJdEQSYj#&YW`yGkgHUgFju9VFj;>c}S!J|b&y{3yK#6Be zBp#n*R0=B9=*D}fCO)D4qV!evNAZdaNn|6~N!PS8eS~5j=$vqAunbatOa~it3FmFC zHuJo(-nmkn&VVJPTcCGWV`d(A>}rYZ7M+MEp+sA-$a#KlDMIiQxJV82d5UAqMa>2)Gu7xrQ~+c|B_ z#N_U~xXbd4@zkEMn(}CDu>|X~YHnwLZ;x(4M%yO}#$c>D&N3YBLhpf7H1GRkg7oWZ zj*ScnHEZK`s7*e`SKA?aCrY4AzOI#@KPA`H zgowy6uegX|`qPvhjn4^@RHA4aoZSg^PorD|!-6{)vpi&37_p69*Q*x=Cz>oX#PFqiv5 zcR%EJ!Y-yCA3a#2+Zwfa49Ts7Q;as=ytMww@vfKI5)u&^EE8->b9|$51xt6EGOg1f zl^#zw@*&u^GmS2B&K+qUv2ZJP$l9hiSWfFTVLkTGJ`v_fJTbn@$8rX7OuDF8OIP!Nm>7#>=dFRoZh&aJk|tD zuNRl19#+|$v98y{7-F6_HVg&$by?biZU@U~rXf4`MxzCD^m(Z6G<rd=RJ%V>kau=kn|r5{<_YjsopiwvFE)} zC&G-K5pF6VC5}?ClH%mRGurd_B0(|F=b_$h>>;@U#lbfsG-s${UsuTAjHlsq`4@2F zH7;X+*G`;SS3?dRRnUOf=8w-9zFcLU5)CmQej{g~LihEM^*({XZPL zM<5jviFstv_LSF*9Ni!($2$6*h2DwqTD&Gl+oV#A+%@WG0|UP(#B*l1Xc&y!ny{P$ zJf6ewwY>JML=SwA$;7J_7{NO!DV@u~XE&!Jc=~InO`C@4eI4&1r=DrCDv*$TYH(%F z>myYIZJWdrn=Pk@#IQAb+tq4)pFFfIXn3qy258>k5m5K4ha7MWii`(~Heuvjrj$1i zGH%Q`+0T@A(2u7Mn;WffH7oQRE&YDR56_Mtw9%nYPuxWtUe_diT1az#fH_XPN5u14 zGZy}yNBe>zLa|fSo;6?D$W|VQ@Znl3v_9o^lSjPPK3+UcDWu;9c$o(z4ALEi-pFv| zmM$V1E1%JAavb+Q`EJ;s zg$OqJL?+-w0Ok4x2-be5yiy>yLY|ul57}rVRreuf2U50obeOstlT@`!r*IExowsF> z8m-x{^^Dr<+TQfN0cjy|q2c=Ow11(Fcoa|)_w32JHT9EUp8Lhv+)|rs$H%nUCm}MD z0@V#zh{hQn6Q}Kg^~}9m+w>7?Q(X!<>W?Gays@fL*y)0R&EjeV$`!jI_S5x#73vlpXM1;n5riEAF1!43na-!$98)LUx8TD9wo6^> z>lgVaq!V_Lcrr>Tc(@5s(?{L&4^g@Ltk*M3^JLr!bxpct>1c>Uu08wvDfZ^cB0 znd9^UAn}5()?FJEm%uXxZn*GZEa*1&afodr2sD%PkG^&&l=Dav>XMM3o6M zwF9c`g|Bg1)|zMBXnA(+8DJb{!|^N*LbqY(p{-0wCVfhCH|6Oc=;wvgCJfZ-t1X2% z@%+hQn`bx_enGCjhwAR#HPEkfC;cd{eTws+`E#nGnD{cvVPFc#5g!c30{t0Bej8v( zP+`O!fteM=?o33h^_*-Jn+y-v~?sl|eib=mjc`cynMm&})bn z1zvhxOl1*21zgKG+PDmu4B{6ZVuAjkHxO?FtOTlpcuAnG*R#u_{h-63eW2Z-t)RuA z5^uo|J#_y1?jGGeJuJAqQ5XAdJc9h&w9yJFFpp3h1$-|SpT$b2D{XddD!-}EDc->>+1C9XJ1wH}R0`eu8a=^lP ztnuAW27HGw18&vA0-N{@#Mv%}nKtoRHu2du@i{i}xi;~6HgUf9#CJYvCw+w1a;zzg z*a_repfA}+d~cn8Cs7`e_S2VWm-hV&e!|MWpf0{Q&vp=*N2E%Y(FaBux;BHyW} zT*_5N#f-a2$~3<3TK+0HQtU19=;?M5R9l(%zLI>iZN#zU?5|cLc=pUqCD`2dB_K zB%|+5h%*?dr*hK;<>yzPpPc;ojeG-*`v3j0WWGUfyGy>|zlU!^284#02M!947(660 zDmo^1C_Xq%7?zkcoXZ=6M_W%XZ=ZI)e(gK>ckI+Tpi9@lpl;oRd-QxyFaPiGH{T(^ zB?=+mA>g7F|9AQGfB8_@*c9I*b8vKCi3eBzal^+|RsFK+cRlj)CpwN@n#o7Dv>BbE zVLJG~T5)=Xi(dTP-?2~itTqZi|Cjt8ihmpUe_VcPc?G$=JZpKc{N<1SSgX+m585uL z`<`}@ey0bYZu~s|@l)qAAK{b#(Yj?#hKTmAu&3huPp#pn-gU|&`hPb~VR-~1-P|Kr zN5cp)?T8Xn^B6H5baygkLO=P5?CWyKCVfAIh&joskzOemy+;h&(t9Zdg*u#5`V zgvMC!Sa(7^&hMaPP!b650GRMvk0}xq2I>t80{Md6KutikKs7)vph}=}pfaG6prRmW zkRu3JE~Y1OV#)^H0bK%}0i6Jm|1fYLXg6phC>^vIG#fM>lnP1)g@by7csF3I8$n3> zgSDe9R}?NrGu7%(m=C8sh|{45-1iF4(bo;0SW;5f|`SB zfXac2g2*qR2eD`m=qM-yv=)>GnhiVJOz`JN zTlf&@QDhD`IV7w3F3yCXY&t0pMy?-?t@C9aScJ8Kv5v0&buh%SvC>00JIf!9CQy< z5_}Cn9YK*G+raM)8Q&e!@;UaNSgkxy^Bmd+WW{7k0geSP&-Ofzx`4)ja>6o)HaYQw zg>&P7JLkmPEH0W85BR1;PQ1p0SB-eeg0!+m+-3Kk@_O8H@1cq_n=tle!XbI*hvY)4*7QM(e~1(^IEiQx?}ULz>c3@?$heqJ}sv$nfso#&#F5g zyJQ4?GX0&9WB*KhZ`!GveWpD6ZP4oXv+uvPclp6SXH%m64=wt@WvWBh{`+bspuO_L z;U5m`;j#PBRxkguB9?!$-QNpq`FrOXA4I=8{!jOBj@LDpztH3L?Z@uAA1zURLc5CX z)_(ixZTB{-wnap4DE#F+lWw@Xw%Xlx#O0so?>%|d{p)}JITA9VRN~<^m)slp_d4Hk z-=6vJUpeGHcVA%31g{^;?D=qm`?*0o=eO`)S9#Nq^WAGy-+y8E&X$crrj2k9>DKeB z(VGI3U)|Nu{g>MfW;pGcJMp#0UhXyAKe^W8leeyqNw4ibYVF6Dc84YV96j5ub?8W^ z!_|Wl$6M!&Z8hibcgv3mt?Ah)W35}&DaV?RYxltp`RA9GXHt7OSKO3!anhyHenIjg7R%8YYgk9wT7zw(l+sqY2PaoZa(zFN6X9n1s%89!@-)BI7T zF4a4?^vF*K9nY>hW!!e9l=RA3Q&Oa1PMq$~vkwgP_RX^u+J_ zl3tdS9#{@>SIS3C3i~h>$bL)*vTvPD+V_RT7g!wWS`Ly@5*PsF`WX%c*aQ>aoYaJ+ z*kmGV(#AyEbNmisM(IZ64+I{3uKZ=KUMBKsUpA2Tl`JGF9BZ|Jw6hJ6VEY1XDkEA!T42ES zNB+COBw$P6Y@i!39oPz(0c;IC1xy0o0geVb7nYO>Ko{UtU~}L$U;uD8FdX;|5RFVZ z1WW_|2;2z#8F&zQ2AB!F0L%tv0r54{l-odjjV$F)U>o3LU=JX_pd1S<0!#%K2QCAa z0qy|iZC@b?L&j0$hXb>K5o9RxET7)Lxa&<}ac=;&J%S1l*=c-RzCU7^U3$kC%;EN z`QiEGC*_l$nooXOKKbeSq*DWCk*eDc%s$xqKGe@8y~2lL54l}~!ep}eNSjc3J=Nb@1BLaj{jV@)-J z^X0tye6Qq9mm7!ga~sUSWk~Z`WdxTA_`bA}03LlNoifo$X7d@U!qGp9@Hw0ldfYF< z=WtGNDe8>h*vd)DoySGwLmU6kc5;^4HsvKB7LiPw_9T^ZmccgivdTDX=S@Rm|JR)H zZe(rZ{zFGms5&oXE|r7Y*XGJzYM}Ns}VL2Ek|XJ8{Ir83Hm1TYinWmD$e)@P;O}M;*2+Gb3?hR&VqehPKZT% zV@?X=shYElut_gN`hiV4t-7=JnX!>I`x3raZX|#WF+R%Jq+>C@ZPQt!@m*sZ|IZ$Q z-x9FtpF-jx-NjD|Nk{1hG=iIZQdFeNF#SuQt*SMu->{mCIT~LG#_Mjas&xzUsn@)k z3*NGh4#U@?qRp+U4L8SEb8lVjWw)yJ>bdai8gUVW!YwYfLf>}j7!ev56CX3sg8aDH z7`)hwx3pdA)gw2)kA?S!BZs>{U37e_Y6)@C@5YCQo1;SF>qQy$>V?Kcy&DoARexBc zYA*PSPQ*Zbze>HpquT~iE(kf|{KD`?7QU~nXS2wHcl26S!*_mM8&}KCjm8_Ft*Yf1 zSYN%pR^JQn55`+;7;`+)v_5Qrud*Rw!X|1X?YucjefM!h^HE9wW zID_E|6HmgIQd&BE8(_+H(=9GtGzY`VlPUVR_l zCQmaV&O9^$!`B>!FFg&zi)i>R`!g(g+4QfTVaWKKhnXXDhaI_$5Xque)xt65AlhRX zzJkIRv7hmT!JQDHe>((I0d1#zl17mEqu3Lx? z=kE9xSwH;s#``k(KACiuPDuOVuMgr3UpoGQ&mDO_(I3VJx}%JbTSxq7^O$B8eDj<& z0>y&2X(A*VXI&p)B+jsYNDag{-Lx|?cp74h&`?@vIDl6%;*Ym#OyUWiD7=#s0{-E! zCIl%nMPqf0kWk2t!6keQWLd;TOByVyvH zM{XRn#A{Zu?P1#UzBO)vP3U`FAA65h7(Qf5?+IJG>!WrOh#^d>p?(1B#~_{nPg?Ty z-+$HDF7ULiuD7A1uIBr^I-czT!~b63H(`W_z#^j+xuXzwd5|R%gi?;Rc(m1a1mWJ! zaijK>&Tu%G0!BQa8CsckYREaz5hL9N6b=t?gt)-oNc0thLjeEAnrq$H# zcn9$txTm>bqsz`jfeWpp3#mhL{W}Ze_3P!Svya^A6;y<%C z%Usa^;TXFdZ=6vab7pM}MXM2SD{HhS>o*%&VHig)=$ROBQ^J2uvToxZ)NhP;kk4vz z-$Y-9VDHAc?E$-tpz~%c-d`0jM;T{vqLUJ(Ts6lQv}?Q^#xLBVMMXtg)O^ZT8p3f(0`&0&PxIt)``V z*!QwN&v;LXVA9V}-88T0tE9dTbC%&3Y#@arjVbmMdzI_6z1cvqy4^*vHs6EK_?g-` ztO3S24a*}r%to?{X1xn^CLot%nIj_-z3CzYkm5)ggm?mamn$lBS;jd)EBWl>8WDq* z8@wTyC$Y$5OLEtqczKtGN-^iLnjec`{kVrGWTss|8s62%O>R5+I~6Xfoqn*w1y;qt zN?OV>nAfwpGuECb^fs}boR=?dgNru0=>cN~Cqi!=o~|ya!DmD)>c?pwtdI9&U)IPE z{xUpGABTc3O05~Rh<>GZdaK};=+8KNHb&&}NFwC2SE++*4=sp7OkXknjc;<#&Bizz z1OGcK|9fdt4gd4G&%F_!8_#O~U+o+2%^0w2)5gvWd0$)qOt2sY>vK=E=-GAefZ}mb zJe^=ALoJXCs13-ZJu4Bh7gA7|l7cmh>lXe)BqJjO$Q*nOj{l)T2mIwH{94@ZnhOdOM)ICcFl zh!muee3+Oz_4Y2XA+047W1Vjx9h*|_p%tZxu|;B2cO@pJrj)ZLTA56YO-xOloRm@u zhFFmtlP$Cf_N1~DNmpbfjfK4_Or|8dB4cc+lBSYOj;of+j8dgaXw2hkiI!n1H7g0F zQ`2WXWJYQ!r1fNCA~GOsRw_!T?3kRGTCG|&)Gt?V>WXzcSEr{gua@G#j8e#0ojzsf z>QrlNP6jwqX|@AJD2~*`q;XnO%OHo5)H$kY`pAz^ZfbSgBrys*0>zyLj zC;baq@8J6q8Txl7_!8zFPzER^A7UAJ_+5)4Y5G?PxIHQX;#4TH4BNJBMEC+FCO{!; zrj)Q|i@WtHhu(P5A6Aa@k{}n*e|(&m)P}p5Ca=LbW&f|i_)GjCHL*x+O5&$ul2#|i zPX2UE_T*`aDU-)MjFnUj^M`keB+2C1k|{;Tq`J!3S%7M(uBKVDQdg%|OF{pxW<=1h zi&9t9=ZLIU-DY$bTy4FWn)t*c5iTB)l_80-c!LDjUKqf#`UWsI#WZ4sm@o_rt>1;T zERzw5*@Ye^J}q&3mv!$$Z9QlRANAM#WOLz)v~8&M#!QKio+I<;ERxwXJ`leKLnJ0( zw50T!ps_`Gg~{~cQzX_iKqe%Ol!Yl1W&4EbvUJ95Sutk3^lsi#)(;*cUyd3r8)nRu z9|jGQqtVeaq(uw)DK1Wa9zI-7jUFut-rn-t#EJ54Qj(mTj=curnX_ie`T6tZQd*iU zM7`+t?d96ir82QsFF87Uw%qvS6S@7_XL4o53Q5NV**R&Fj7HhL4I5+~)~Syy7PAIV=|d?5!GEWp3(G)qn{UoJbQO_SeNt&;37zm#LkmdWPSRJpo&vs^^ozrX%k zuA|=BHEZN&=;+n1o!r{FQ~o({K<@6@BjaJq-~0E=PpJRbzI_tey}MWsAC`Z<`%YFv z&JD=CwriJM-myb=fAE1=j~Me-fk^5FP!v7S38*T4T>LLvVV$}S!}Co1)apIeAWY^lY`2N+qvLE*Se(abm zfsZ}i-SON13ndMH?c1}bSnuDLdsnW=Y1Hiod%lNHyxX>wnP}gau=hUX9Y>qpTeXtI zu?_;hV2#iv)2S!uIn%G{|^c71Je^=&4V-fti^;u}isey-BM&sF+N50fez zT1lO$?$V;WyM!hV63fYH(zs<4X%Ocj^}p&R4br=cd~KELD^E(-eRpNlk=x=jZi5Wi z@RNLX-6|75{6yaH?kDv;I!WoiA4rFkPo-DrU~%#qE9<_*&N}*(I8;lJq|x)`_2$3J zUw{22XV0FM)2C0%arDJ5jEimX-= z`}vyl$HQv_P2Yd>O$L|`9w}P+%@*z2^|512c6MfkeHjq@O0hTJ>8Xc4`5IHC$o)Sq zc$6wyxoPLn+%U?ftrsrbxRHGWLFL`Q{?DVc7+*QT5dLP+!H^a{AK>HznwYv`;|Yk|Io|M&cVQ*a_-!%Cy&qD za?hDEWyTCW;}j}nUb^w{zLq?D_Sav}6)BRH{kJXu)Z@ob+E)KP^Zcdjf9hsw`F9>> z+wvd%>G+)$TEU82e-Se?&tJTh^~Yb?x|Xc_e;HoTxTYTaY5t8rZ{NIp?w6ClYB{KJ z@zRRRSvP0j`}6+YJ9qEsxyIi~$9_6~9Br68SJ`#_@x$A!a5d}Njhnarm}M~L;G8+f zj{S5}ao_tV%6ssWzq4=t{_DBR*RpI)Zbc{tv$bBAUvngkAeoSl6kH~)pPOW9-n z-Rrb+t?l62w5@*#l>A|5%v^sM)xEusYm<6)s(o2|U+Jc8JNF*(IQxD+HSXN&-Kl-6 z#trMgS>x53KUUjw7|6}1jrags9 zG-~M9WAJlI9>jES@7bzxy;?P@R;gC4-0LMB%l_#6W8uRladIm5PQxaFP?DqL+P$J3 z+xs+cSnn-xS1ezudYN+d>y|8AR!~CypWthVFBk3V*)rt_a@rlu>OI1?*RcUs`mIDS2>esKI zQNybvbhK^l+Mrr(*QPDr^{!r_QqAl7ka)FX#g;=xkB*Crv#Bw-caPGYyu8}BZrP%K zgZfQcGRJ9YoPMDk=4(l5B^labBDY2I1 zu^d1)(pB_I)`MBg$h>Oxx^?Tq+7}&hwcC`Tlc!8hvLw%bj4GEd>60A%SFT)n`~{g; zuHLY9!^REk)(sBs+_h)78RH_&L#NCbmog4jp4`W<(}Zixv|{Vlt((5MKkLpHn>KCS zw6JK;Zv8DY6D_exQ)bScGULv%xwo_~UcPK8tk|%1_vf2F|NQEV8D}qEyK?={4eK^+ zPK^og-`_It-{_o$H@I{p;z|^_w?spEqyqmd`hA{`1C) z>kpqs6}LoN=FOitKZk$Q?p?drKmBvo#WSbRtho8`>87o0#HOn!Pi9`cd~wC?Pd|Gl zA$HtEgTF|TU$1^P`|Jr7PF~r(fsMGC{d9BsnloF{KmGKN%(FLQMvk3(>_VTFy^s`HsbcbKMl%16`#q_MRx4zhU@Ap&l=FK~MbIX=Z zn{s&d;uriqd-mM58y7Eb-?q76-rVY$h7Gw{|L0;jR3d118&>N-I`S;b+)N#{@AIi7 z^V{Iy2}CwduXzwB*{3|cR>8ZAQrU$s;%7^dO#Y}q<`dJM5a2h~4EOWEukL0R`39I_ z0td?r-N9iO{3SAQ;H6xge~CB{k0HXCD#R4*pMknjl#k%9pS!6S#hQKtnPk2eY%qlx zsHdS7`jMm^Y&+%Sf9+(B^Exv0a$<%`r#yq1DowlG>6gqL``xv6STDkL$k#$H=DoMd z|D4+N?Ku+Eae;JbIbS+7ioyAGmW&uSl3Jxxy-u=v>1yfHsf$dTJWcRRDw3FxC?75Q zNJb@(l2xCql7(ptCDCk=-ral2?1?j_-+O(<+&5G{nEk$N+w!?Ao0cXkmo1ls$QU`b z?>iaf*-@^p{z5j+`amvxzDJTh{bg=wgdAP9Rw8=fe*cfVvUA~L`F?(yWPI|e99yzX z26pN!3&xHUYt}WH+CM}_z1K^=nLAI`PQY3B^KEkYv(<7T<14YA{!M<0kCR`LlV$th z!Ezes+VeQKuEZYy^84@0rNxWn`o|y3ZJZ(R;w+blGuAnrVISa3u^eZE$GdmScARgm z-+n7Mc>cw?>Y1!0O z4t=^%R(-TkKADmv^HNi!YnK4&*41C8OiUI_Oi!6GW}tkuc$TdHB29*l43!b1lkjUh z?ou6R)DpoZrB`*S8UD7^k8u^}Y2~DSasd8q*f1Hj zW4v}=ePxr2l$={l#=JjHDvhrv4T77BTa=f)>*FRfKA9tvXQaw&^Xo{R@orM5eIx1I zud75@hDiBEu2OLj&bb3xiAOhYS+ZiOyqVNoIt~t!8k>D3Zghe~L=BdnL;DMUZ%3Np zT-Oq3yrH-&7!ngJ$v@wd`il-p*EPS$^ku8Xvz?#J+ImPF!j?;gv0ut-y{AazymiuH z;tr|l)fA#9sG9PygJkQR?{ld(dGi5sNczB-0*T`f9uBv#Z9X4#3Sa4^9Lx)5~ zMM-!#K5fBW297t<9d{sIyLQ#iuRObYdEu9i)cKWj-06QcjC%j*<3IAL{QZGLznnR7 zV)mi<7ciXq<(D&OPW*KI$dL(;&p%iG;Pjcyvqz5L4ES@odI#@3TmIL>w~rk@^7C)S z0$Qew>;9)vdn9p#rj1I7%*_);2|ZV zRqf=@@PP-iW^y`}aTDe?9!0lJs!-@}&_YE?;J1#rZ$uZ{NLp;q=2qRY*OF-N?UIo2kE^`|+)mu?r3zI&CZA zR!r@N{+_MJyfZ^gzn}csxz@x4R(eT7!>KYW}+OTG)_U+qwdHL3FP_;!M_4oJd8S8WbJ>gZ1SZ`ua|uF%P&9K^-ApOjT=ANyu8?`@Ptb@GIaa0va;@c{r-jGFPG2w zeE;S(>(*)6S2I*GQ(0M~Ze8EEcjq>}Os|*sZ&ryFs%GANyD5F&zz+ek@tw^K5I%Q! zDutf3mLhkGNQq2ShWmlc*6tb2WlTmAwjUZxAuIMXW3Y#*l7Zb!ine1D>`pY&K6gMq zF3|i_NkZ#+)eOn2r|7KnMEDn;*nm1|DvVE75c;%!x zOB;9cYty`S)3#lL0=3G`8sqgOS8x2zla}P4wv{Rrc6z0IH}0#XV#V^Wzfq;ot3_Wf z^;&Q@w{qpGRH@?Iu58t+&Lv8}r4&!GP=1jAn1!=Jt5 zPvuns)djTyaR9ytY6YqZ;>%6}pno|U!1@1PFl@ywM2;UTA^sMqImjOr0vb`GM2S^z zyz$1tiVd2bDpsu6cI3?hj;UL>?r(_m`}-Y0|EB`&X1~+7E+D>keOYTRRU&O#c!I`$zznY@_?n* z){{0_!@oRk?ccGZwONA(_lg%UzOH=v^5fBtOvs4^{U-y*GyPo}FXQ`HuG4IH`9{81 z%eEX~E#@}VDy?B}ld)E5INDmW^;m1UZu70L#id(|rEId+S%2Qz<*NtQZU^pJI~=%X z?Prd(_GsPu@vE=C`UNNzpPTY(jK26!1^OI6If_>=@f!WxZ@;}&swY{cBK%x&u(hGz zY^z_?Dr=v`KUyPpU$KUL|J2&<%RAP}>AzW>KRRkHyy%G4b@~=-&+$vGcyGhHcX+b3 zhnLsmTD5AO!}z({uwlbPkXsG(p9&7p^9$x*dc}$r-^Y6l)k!JthL4`&$BK{nQlEgVS@G8oH^E?mM*p8{R@qHcIxyP z#?HjNZi?|!9dWLu1qEaLz6kTJTd!WdR~t8Od=Gv<2--Z%&(At@@d|7F!7J9L8-BIE zJ!OOD+wt+^t=q??T7QPEzrxPbTeet#+rIsU)F&v2V}>uha=oHG_5$0+wYWTpYcbo) zwU>RyG-dD=asFfl*TOvV(7&Z%|3&0SfQEKz-u(31(1F&)@a>67ldPxV*UTL|ta#Vt zUsG3q|Fe+Q5=5Q(1=@mbiT3JIdtf+dIA{WB8Yl(CH0M6&k2k0ui0$E4CZ|s^$IfG| z{sMh{5pB7@bNO;B-fj6W(TRQgteaM@w2q38zk>CX>pgwy0D4iN?g}7(oIlcWW;u;d zJ+ji$(r)3rW5v4}S8Dcj;+O=zkU=GnYg+Y1x7-`$Uvj2y@Z-KM1 z>i*y7%+)P2=E4|;8JApS-FoY%*sJ>y-<5EDvA7*&iV?{7 zR>U*1%_sEPXP>?Ev(G-`TS0R(`VDK&1Ask>b>>{~Iu!9a_-^I_@ctIU_j((!=H&Qh z^*4M2vm0alE1>!?0_lDMLK1?QZ((oo#wk;#e2Deudf0ern>K9e|=MS1Es+9aSrdPh8vPbVEo!?!#=uva=8 zWe-z7P#bUvOYJC!etjDo8~Zx&79-q+K=TB$y|xI=5J!n7(QyCnXp z|7revMcuk}XTx87gto7PJ(k^i>#cjKA52q{AH$t^vQ# zz}Nja>Bbv*>FCkCZ};xJb?eqY;S<=8kpDE~y#o6|uVIg9BY6KD{dt<&fN$YW4;eD# z6YxF>cw`T%KM@V;q4s+R(h=gHY?yR^ShHr$-Y9ar&x{>3h#%dsf#bZ5zha3YB=P}0p_2Gy7 zzYst3#v6R~-FNfP9)6e~d-6&C)}43q*)&hg;QVp4v-L~+`1BbI`QYc@<;x#>jDPg# zqx{I4HKP3M^XBmp0|)*^eS$IX9n?ksmBxzx2xM2pLse~=`i=UJ#;jcUky~MpZw(nZ z@C?3R=4UV-lWza<{`(x?So7a7&;14SiJvehTRvd|e-~{y2wi#&zGZT!PJ;h?`t;!~ z-Mjg?0ke7Qx%>DXlNa#Jf9>Mp+Iw={I(`)WHW%f(7Zm(PeS-R*LwFEj zBm#{+}?aZh7TS3#jDVf z-(ibFxA9iGee#u8_zBE8Nw>cT?Ss&BeE-k?eb-%l7wiys1o#f<&v@`#a?LgTWwdDr z>OKq|$2a->72wXg;RZe|FOQGL8uCgfuHkg)%bPd6kKa^ulW51po)h^~7z4FWI3zKf+K7gg$FTX5w`$yz` z2b&|^-jBZdH|+DP$&>j`@Jz5@F_-w`2f@RE zmtNv8&z#BcL0hiR&E@|{@5ZNKu9lySvAFY4J{RNfW5vaM(!RNT!Gb&Z?2WVe-1p}4 z1B({%C1b~O_^B1(y$FG9)O;`|-nkR~6-c+g#e8xf^g-$NH{kCic;-8HaC`?M^o;!I zxlcYZ+i@E6jFX!-@pmw z`5%99e)cTqzyHp0zoqhaVBJ7^^&b3GDfB(Ndj=l~e}wxx{4D0++c8GX#@H|i`tvI0 z8D!_)?f4#jO>>O(@K-ahzn)JkF8=MhUcJ_&q@+w}(xeH=o#ry$z7rrUl+gz22fP>J zPRL<=`^0}fb}Vo^PMk3N<30G6Qph;9cSj!8KZ@f%4aeOY!T+D&|4sN`Ou+fSF@B$h zy?l-_>OSbqY?Prn-4V3yJM{VU;Ct$@VL##6XgyAXZUtM!GubMQPsFzhh*tR6VACzJ zew}jL)TwXbo)E{qA^!V+u<3{Xz+EH$9(X8)JaG?5@Qiyvf@k78baEuG^KcBm2|A0r zRH7ZUhXT3q-*@ihUjcRi?ZSO0z8iCqr5FdVx%z6_WBCr_E$#8s9EfzC*6%dtCLz!~ zC=P-4($w4zQJ;s}Nc}`O)P7nEU5$Crv)#IN`wicx@uV(EK0HU>-GDb()SSnxO5rhU zQh4-ghv5G_{OV%pc9)_ePU|kxr7vi|4gBxH9B>=vCA;wc2JjuQbKJ?|y?gcgjn)ci z%j>9{<_^>rng`v4FdCsR0@(u1G1WtTR1bmHC4y&sIeQoMZc}nf^7o0|6Fqpw-6~%9 zzE~dpl!G^YBZoJCB8#`4l)+m(kj7)zb`)*63jX|cjOjl>7pWh1Lr=&aKE~MaCB{kI zKjXNc#t(h*1^)u$--pn#PoZObfrI-kd=c#Us;jONZE4Y>#n;$Z`5`VYZX5Wcx!q(0 z-4~IbWrF9aI?oLTHZb)fY(j0`U~VE$Se46LzTJf7sf#)`gtb;Awdo z+%Y_jw;h(slP6rp+YIZ-aqo;jj(*tn+H0Z>KcioEq784ujyGctz8m}>gFbzSF>xE_ zF1XXi%iyQJKpVH9O+=U0<@nBxL%06|ua6p;oOPZfr#0YlOE2Te zZ(hzFYp&$&@9D%l4$Z~haUpLzC!ga>d$G?&dtId8_rM3^ju$TQ-o|ga)32!>D zJ&#(|nm4`A!7uBa#&Hji--R)0BmCwu=+aM+|5s?so3P<^@IjxVA8^-?A0%5xyH>&e zhr%Bb{}ix?$-(zRgm#L5tf}UZ?NO+IUo)QYTpmv;8^}An)Q?{_u`^HWox{lnDd6nb zjHh+Y;+OTx;wdAYe8jX-v^OCF?&k5K50B(o4|d`S^E-g=bkP>9)%jf*OQ~(xClPeU zV-Mmf_|$#SE8JxicCa38c?D~Ww=veef_c*o74y%qH*inuA*noL*+8E5elbsbbuiE9 z?h^D#hBw1*Nw(NK#N6;%@xBxDIQUzWkM_`|7BA%S#3x<6$?Ms?*%KMO^~7|cOJuv) zHxhyNw`O9T#2yj97iSdI9_&AGN1qhl?V2vax4whD)*m2$>WebiPq8omwB95eCjAi) z_KMRHrXakL(LLwaYcPK#oxnZ93IpwBVb53eL-L|L-hN0HY$C(732Gzm{s~!hxH64j zd2c_C`;$Tjqvws`ohEeSj=t@|e|tJ(+}E*V$EUETHMg*!VApLJ3s+!nL;jU?U(+A* zN3>2f`IoIQ|Jqc0V4H8?JD*>vEu`mPKwoJOdfGjAiv2QOugH$^{U^sANltrRdZ2yL zj#sAhCXc7^7Po=l!5#T!xv59N>#MN8;W&#V->1e{VV86U0zPhpeyl@1zhZB14+Y@S zUIncgtNKuTI-{-!5xz`!XYq~`3TeNLWB-=pnm2OM)x_uqei^T!{5eCW$BzwCoE0qRFu&r$#M zM_7pPBKGyiU4VQq28&gpQCa_0mS2@R{=dPYuQJQgT6&kt_bF;Tl4Zu5UPzxe-se2u z^eYsQ_&IWCA@sWxSl;1%h_J9@T1M{~UT=(`0xsS~_yASn)0--fz?*8JdpyLHO4DT; z!CawH9`undcV_9WJW^HPw4+OpMn}+B{G(l^0>OG4N%N)h%M1v~lH@^r7k-F$84D5j zbq>)-ut?K-ir(UpgIFSp6d~9c#s0@0a4CEz*+0!6FGV1KK;x>@2yO7Dd0KOXi}6sM zP!O?~PV0%52&o925UxQOSHE7}rS+p@S0O$h`{WPcTZKu8Ux5(JL-nFpMLS#L-P3Nf z-5g%G{;axDanDCLYq>cpCDz>fEqJhbQYL=kI9PuG{fCX~WCwKJ1EMj02-BL0+C}FJlpk%xX^&RTBM=p1%NCqT zzA)tS9%pfP278RB`7LX|;A0oA<+vlmpIG!9|KN$I`FBq*;|E`PiU0WaMt=X4Ddcd* z_00_k*CPx>xEvuJfyy;N2*;TAX5%JJCJgP|=?Lzj@r_HC z^Uq#c!w!IZ`7b+n@L#Yeb`s$z#`Y<<+;Si^G?a9c_RZBpb<;Z0g}KW- zoM&#pIp|iL(Y}xUhxIsneF+zcx$HCjdI<;$01&+780g?~C@4bt?%SE7YAHrCKeptJVgFXyGJOv>gbExmBe#EauXoR4* z8A4WOv~Eim&jk z$U%H3at3|z3od_;K#67utq?lbZ_r>G&iXeG96We8)=R(R4wqPK;J(%`So0jl-t%!f zH^#aBKI~bL&n3O~+jhXkgLzwnfB*a66LGe^0(T2uT)%$(Be*wk4c7f+5A6}Ig5P{J zy+eoH_fMSo*PX+P|H2u>3CMd}tJbaG!MFb#u(z}s^7uC{!heD_!#&vBY=UyS&5F7z z`9plxLZCgNblege92*z6a=?{We*ZM~Lup^~IQ9$HU?1b-Wl!+89-7O?4jTAd`;?UZ zwQJY@7s@O^Am82#f%qmL;;ruh`8;+&$R;u2U^%e2368dH-x@P?=*iD;zC-))JDz%q zA3(qzMvl999Cz_v}>k6YOIvY-0uJ%tRm`;zFQx5ZO45 z7y3i(Req<-r41WS?_5~;`NF&JKJzX1b~yGr&S8!B8`iG>!kTtB&aiQBlBZwx6vusA z-lcdw#~ndF{*jd&cWn7id<%zrmtvo@gTry4Zk;+L6Lq%T6>(}G^@)0DzbZAcMT_|Z z`}EoK+T)M^{X6!FIQA(1#NIHSCDK{T4_Hqv{m@`G5@uex)_-&f}49c>&Fvl;(d67@}ggeX-xzKwBC zA3uKAmoLA3{v7sAaA%hPhW`BzWPTKDT>KUl$30xW8~dW~;=BcSZN-_`hmSAhuii6* z;~pu$nRv+_&96)y!@D{raaYp4II|hgpL_5Qj=Q4#ix-!1+*9Qp+qC&N>b)Hy5kc6) z_?vH@dj>v|W3T2n>?P2-DV^id8QyN}_xu}s-*l$;3-)X1yz(^gKE^&c?(Fha*t2;H zc^@xc$Z^M&-(NhOkMG`#U)ka(?%YAH&A-Hoa&qdVP4xJ_J|C%3u^DVvsXEnIL%yFlgpT@XB=TL8A?|MD< z1l|G7_vb%?GtZg)QJn3(0Noi>RJ05ArXi5Ni|5wi!-wH}jI;m2KL2?-8=!~I3h0bO zoo~?lD9$6xih z&pljHa`ehhot|yhytx~dQr%?h<}-BIu;dAoCy&Ltb=8J9-~4tj_K41j`80U>!cXzohmQ=2-q>s;Z^$(wV{fB}1PznOO#S;%8=h!J(N zJHvSG1&ulGk@3vZT#ozi9CzLM!{~e3cc;C@Z?VVt0qpkaB}@Lq{?>omwrR5)WAr-A zca|XBi#qN?xCMb^p?Dxa-5-AIsm4i-Ka0+ZIuUtQ_<1%ajEBx?$QvwZ$(!8Mp0}Tp z%W*fFC*0eCCynpGaR-~@{x-**dwvr7_#Ngq`(eYo;VbuHKj~}m@;PkgIoQk4Awzz_ z_g=r?o2KI}TC{i<_1%gP-?~-n`mNHEA8lM1d#v8|m;4=hTLWHyehZHK)x5=>nY{IF zxxCds^EiGlfIqwZS&rWZ;P{;Yj=R-7v)Ik+%xcDQx0@Fa9>^Dz{*%9hv%{~Ti(h@X znSc4=M|=nB-;I6pcVR2|c8s6E{0RG;Cs6lo2+cCurzgh^Y+8;x-W>O~dHdOy^NgWI zyl20wIDUhGj~+RS<97=PEC*LK={v9QQTJ$sCYYaur)Ot%&APH+ zetQ3cudcm%&?)@p0bhgf3NSC=xW~=$`v)AqkHGQU2)xM%2ams{9q)W|4~~229KWT2 zeb^f~?zQvMB{TWmkCgHrqkEoD?3{eE?PYDZ6uI*sA6Z=d+59 zDY;GkdiB*fFMOLt>B3@v{`u#PXU?3NgZCkp~%hpLL zO&iD4T0q(Hg;n&wSPG67dj_TWeFy9vAe^6$y%6+T8TzbLhWdC@XilLF+YhJYn`BM> zM?v(l@fNUBB>X*x0K~OmRMnh3z1Q!BCi*K93{3G=RT_j(eMxg7>epB!P`sjt%8@)s z=N$;->uH`d5@85JCW3ktPx_nYyR`2-68jR%BirV_A5l2$nXowzO8CqH@;6&;`_lr61AamR|=C~itaX*^lZZwrAKT!{J`j*)L--I>6*Z5v{FV0s!z#5F!UqdM@ zdi2p#fh= zlYhAGy6c{Xe^`iiJdO3nVw_1HLAfpnmm*NR8P;dRu|7J5-wON{YtwhJwz>-7Y^*yb zU{C)e`1Jo^y-eTCp2c@&3z3(KK(eCxNhiq{(Y%vnK(ud(Y8thsadzXwxc|-XnmF-z zR$AJZ*w0vnyvGnGBMd~KzNGP*d}UFcm^zQtch}!nZ$Q02aj#p9#kfb#aUY!Ht~kfN zaXw|jgyWeR8J}W(x*lcbB3yMzze}do8C>Vb`lA|&GBk$Mc_N)x;qJH?PiRcR{d10c z<{Wp+Iqq}Q-v0+E-z#Bg(nQydU3cQnwm8$Evlz(VEJx>GxLeL~&z#>re*9-oE?DqA z?xu6B=Sdc%m*Szb7p$@SL&hsm<}mJ{^PBFvbx+=v`A^~d^nO56ewp^}TOh4`xFq2D zSJz<`_r$nJDgFoiQz;8M&n9#$W2?Vm>|N;Qn}0F3=67aWc?SQ)@t=&5zAl6po4%K^ zt}Dw})co>7Hl6d(;iN{9EHSYG-l5`OM6)rh@kEOLJv2K@g}x9D{cC6;z%)|u1fjr` zDf*Yt!VJtr@$aC88<cWea(jViYJPPtDm6@fb0*C%0 zicre1F8~xYk1P@!z2b$x#-1;LK2M^A*vaoQu;V2F^cEQO zwkOhGJc;73pFffh#{LFl17}l079`GPx!X`ZYBQb)q^xpCh=QV6*%l)u%843y>1_E=IYw|u&Ma3pj|$?U zTDEW!j#-~%jn^-SSR<(72(26yJUg$fY?>%VtXkzz@a%2ia+)ZGNQ6}%BJZ>^MB4u~YwQo$jWvg!l=R$elXmx^{#UGy0Bp;RfA z6dZb$Ln$E66MTv?R=GJOe6Pol%a^90UFRoN;SCW$2 z#o|q;Q^Th&jo{-o@(f;vI)xf}>e2{4UL()oWvElAk*6+=;Nvy&3|@vhg&KM4(g;3Y zBhTPvs8gtsr!I})<2CXOUWPh_8hPr{2tHmT&){XKQ>c-rE{)*hHS!EzhB}2BdFs*# zK3*fw;AN;&sF9~Gjo{-o@(f;vI)xf}>e2{4UL()oWvElAk*6+=;Nvy&3|@vhg&KM4 z(g;3YBhTPvs8gtsr!I})<2CXOUWPh_8hPr{2tHmT&){XKQ>c-rE{)*hHS!EzhB}2B zdFs*#K3*fw;AN;&sF9~Gjo{-o@(f;vI)xf}>e2{4UL()oWvElAk*6+=;Nvy&3|@vh zg&KM4(g;3YBhTPvs8gtsr!I})<2CXOUWPh_8hPr{2tHmT&){XKQ>c-rE{)*hHS!Ez zhB}2BdFs*#K3*fw;AN;&sF9~Gjo{-o@(f;vI)xf}>e2{4UL()oWvElAk*6+=;Nvy& z3|@vhg&KM4(g;3YBhTPvs8gtsr!I})<2CXOUWPh_8hPr{2tHmT&){XKQ>c-rE{)*h zHS!EzhB}2BdFs*#K3*fw;AN;&sF9~Gjo{-o@(f;vI)xf}>e2{4UL()oWvElAk*6+= z;Nvy&3|@vhg&KM4(g;5O|A;)h{x|U1HF)WHQNTaX*Ni^8Wy zljsE_M5C-mQ9>>PpBha`EoeS9ii%dyd}=fmEk*kR-x@`Wf}(waZ;hr!!J>WvF^!^L z+M<2|F^#5PTBl#lxJJ>lq)xw@agC;DNzWRpkr`qWi1K%?n{XyjFsPmQ7h%R^G%L&$c!c3wvlm38=#?XqS~j8* z!?$KHh*roeM?yqhQrj^m4W>m`-QJG;?=_jTY@smql z-SepmpIQl%H7%lL%czm(w|)uKiulLU5GZOQY1Mj1wIbeGGOZy{)I>6gdq=ba-dQTG zp=exIFdk_IOa{Cn8j8kcKs(aV6<5CRKuBIytE7gmK)&xlNWQfLq9OauH-ILZ7m{!7 zfSAZ0V)8*X(Y$iJs-UEa>d~2j5q)yJs-UDs(@(AjG7vS0jQUifQS{040#G|F>rt70 zR8c|_@Tgv+=>e~D zLK4tw)hKGvYD5(QjRgh5TZ2|3st8zYC`fR!Bq|mg7EKFQotRbLcmuOyhBZ944|2=Rz#zSauzQVZl$Xe(`cfY$&LVcljf zqL|5$$S_mYh-egzQWigyXQiqh(`XunOol|3nW}O`qiB|~_@P`YRn?eA(=1{V7nx?N ziV=;XR>CA6O8Hi*YB7zbR=^}LvdvVLA{s>xe2Y9`SgESSG@2ghW(5MlOjRMGQS`#L zDj*yyRe4OK>4j`oAyCXzr4fyy53W@OVOgolVj4{!RI?I+WTq;KXcYZmT9pu73d^iV0L+v}MB(D? z0ryN;SQbA7vr>A@!VZ8SkS#2;E&(!ATExPw8kgSd4xKv{*Jvt`@7n{(WGDci8nTJ% z8}Y=lswB9TQZWr%fqdUyNM@Y^Zl;WghU}fCrM^+1R`Hh(s2x7XC`%pJgD~nha`OxqIShy9(%sPE2_ySDaN+MQ`zBGIw7IK9# zvq~QVegGzN#SyDQKQw$m7IsB3vqqot{s1O+g%PVhe>8kx7J3CSvqGQZegP(WMG>ny zzchS+7JlHES)Wg7{{R!ef{0a{e;Phet3be*Rh>_1{{X8%z?fEEw5v?`=d;R;5=)j`jCcS(tI8;`WYScL0DNkdn??LZbUw{^AU>_y{gEMzAK{X!ID-?lo4sYA}wA4QNp5Z4O>P{pjMF{rF_4SKoU7RI>jxZ zPi+RkFF^u|d^4gKH-X-@sWc(@dqh5EC`9uuutiF*$RqBLAi)HZdi#_R0J9qJNC27w z%@3DVk*DT!OzNQ&lYDwGXe7*BZ}zM-q3Dm~#LD-M30wj6SD{v~Mifv=1ukIbde^3< z3CDVnK?yD2D=JV0EO5165+y_`7Px?!>s6UYl91Fx85H+G@JI+uffl%0gD*vt5GhV? z|BuS8pk9M9!o(vOsEAEv@4)q6rGg4_@(+P3MkhSc77vm5BqTZdEBN%u*8vu;;wZqo z%7~&B2DV<4pSVfWPo5XZM1=qNfTCCgvtmU|MhAl z{Ui8+iZTN3w{nf7-+cc-DkXCKR46^Rr0Xv`08A7J#HXYt{`zMq0F+7u;8PxWN`WI%obWr(uAd}<^EauYa% zO8fAskqpF)1^02OqO>=k8p*)Ss2qbOm83V77iq0xi>3~=;(83YdXnOzxBv>m^v9yu z)r1jLOIT4two*pS1ghEyU_1&Gc)}?VEi@UkfM#uqqFz72Oav<;QLVI$38;vw+9V$S zDu5v%Ev<44RFyQ|5-Jj^HbqmV@s=PBAftXTP2{cuMb&0ts-)sl=Ue6}lAaAvP(OT1 zPQ+h@rGY4_z@CCOp#obmCZH-|ap}#cS=b}Pg8K4l@nm6HFb^(uJ}u;~0$Z^r;3^Sl zMA8atd}>fhK(Qe*RH9O`5w=3sNE#r;n#fU!0DNkttzOrFs<=mODxvXdfe_QmE4Uv} zsG=?MRKnuZgiypPZ-On5#ko1J6Pc=VlOqctVkQLzHvtq;z>4`a*^v=N!2~OSc$?4) z`7|q55rc+TQc+gmiuklDHe#}{30Aa>w+XL+PqSJpB1)^I7s;x~)2h~t5fzVw2U#;G zAfJjGk2h$jv)`ThLt)70G#f8;qDT-bgpBfRt zla{9Fh4877kUVJsL@$I-je_Dx10kxQRhK7~=M_Gu6!(g_s8S{TyhVP6B>5Rx%#wmA zV~NB&CbFx-Cm|}9L?M;%c}tR&&=hLWO~sNZsuJ2;BN-a%!RI_)T3=(d>U?S>!I91EO@)JPgwicjLQ2NJ}mVpQ@e5Dk_>1p$>1Z;hma8+-~`&H#tR zr(#s_DG>wmsgYDTM!ySLUQP@OJ`F~RPXkf0;LWE-QlS|AF1Q4XkmwBJ(_j>QDn!MD zprI1V!FT}$pR&h`dXz$5uX}KFD@-U4K8P#rOr1bS^=LLNpCJqJ{6Z|OErlG=2Ii-!=>U= z;}SRqqk;QfBk9Yf!6&ST_=^x+nvBA*{M(U6(hrxCPvT4Is6dj82ISMC>5ogv=M2yk zstFe5BXqQKKK*hj`82xO!l)vj{<#!7RU=vC}tXIaT#e-K2_HK0ZG+sXA z6y=f<5Udh;2I5liX&4Sk;1u|jstV>S=F^KeJqdOcqjS#A0iTAdg3${349unEQ!sjV z9=!Z1gG;bGuR=a`wtV8mCoy`qya(Q=3@!z%0zNC^(%=(JmC$@HvRt}Q>ivic`1Ik- z6Cn63x?I|k#U&u+{`d?f8>*N~gHOXNu}IUJBKS0#JNeid9zs76 zAuj!nN0qTC@}Y)`OURS-Q^*or`sb6XuIvGyFq_#xn^CIxlw1bI=UM7wbbV>$48f<6 zWsrQHE$Rd5@p7Zr6_-Ks840e+;q0l~O)i6yr|fj{M2J~j2FWMbi=0tD4}5A|2F+&= zC?w>ma~Uk3;1ayTX9~SUR6PFds50H8eCQ{6but_EqNsTM%tNYbM`tCMU~P`Upz#WZ zPsyd?&Uy#Ir&?xsGKo|Wd``1C^Na<-rw@M$5Cor|%xS3$=aa_uK##AV*QyK{4Ma`C zmESkl#Z}bLim3kI!)KKmW3Ar<%J2d*s#tZk&@Ow9*SesAARCLc0JqDlJki2C9f$X{8r{P{pdNg?0gKR9d833{(-hs7MW_ zS6|V+`{8uPIt{!cvDX#-2OJ7zY}AN}V}?x~J<0{7<+E&TTz!e%02A9rMnN0i>EVnu zK*Vjp^cT@u09unKPaK0FXiXhGV$#@&V@B$DwUHQM0Eo7r*~Y?XU~?0Vo7#d_TYy!4 zHWtZ2NC$V)8Phy>8*Ke{~M39Up{@6{r2T+?9^AA*zaF|%+7Cng7IB1GydI&j34=g@#9~y^C$MR z^Jjiy{M;Yx{9onl?;X#vvtKM{=l8wF{{Cho`}@c3?EIEl?DU>D7(cd+o&WVa#y1qR zzu%w0_`VkyKfHQT83ie=B4B?^A5o4#3VGX6MhJWAA;qnr+(i1$+9PH`s?ewzDPt zJbUhsvuwq&AK5aP?Em{b zTkt1mC(ixN9{&A2n~(5lIcJN%`;q;I{AbVn%_bfBjXiMcJbUQqY4#OxZ`gZ+Ejz{8 z6G$)p_zTu&+fjDk&z#LV!Px^x|6up*JHbld|B|gb&Dpx&I2(K5cUJt`W>$KXvwMyK z=QwAN1NR}|J^J+tmbd8}*7?1Itjn8wSkX%#vyr=hXCps5%BCOY?EV9%*}@+=oBYD- zY|npjcFEGMtp2k**`*J?$r?Ssi^aXThsE5#hP8P1GuC?Te%5-`9+vdj8?3{+1I)Sc zFw1}ED9d``6IS%zQPyGR(=2W7OU$`s1Is8~!Uk?T$($4JWn=gL$wqHJ%qDz#l$CsZ zm@NUHb9WwRPl3PwCAYKQ!)|8p{BW9mdE$50|N3H9=aF|=^pl^lMvFdVQS&yirYrZc zCXc_*n#_HTwS4(&*7UxWti@v+S>pYxnB$dwtmQwSVX3S4v+T78Si$Sxuy%JYVnwg- zXFWdnndL88&w6e6mZeXb%ld6Nz^>bNn&nJ?j9vHM5qA9tM_DoCGUCG@*o3|3S<&rt z*|YppcByZf^rSSk8o#umtM^icyp{Rhij_XEp&>nE1``gg2g<8jt$!%wW&J81Vu zr`dq_PqGo)|6pTxoo5qv|IOy_KFPlSuk-Ax_fE6kWxugOAC$zMwb!#kg3Mgip&z?>KpENk@3I#DSwnj2xesl*ZVV*YxgLPL8MMsgXd91ZpHu zBY_$T)JUL40yPq-k-+~45}>vD3oRHMJAUfu)YK8fY0b^;m)fiIx3-;yo&4hD$&>6` zGu8|gYS~$>)vy0+`GaNKkhk9>6)*Gat={nEzCGKYdHSWdx19`Sd+f{$5-agSSMPLh z3f;(Rt=qL?`ipNY2ECnj<_8+3@OOW@B@+1i*37!=xraXj{uhMr1Ff&{4=uQ}?rki5 z_8O zdUUnBPp_UmdtNypwRQXU?HhJMsgbXqwA;~;l=tl{V)d~fet2_GPgd_rl)W^QJ}iHRw!%+Bf(-u6ZALEVS+ z=^fdNg>M=%WXSy|p>L#H$*UJ`+O%oox;eAnTCnKLB&RbYE9x3^d|Eg~+^T zXP2yAxN+mgHM8DY|H0BP-F?D)gATC9mq|Ld)wYEZx3UKNk7wTU1gJP&uJ+BYPDu%i zv&DzT*%ECj@7jTLdjzy&%De|2b@vS$VtX(2YTHA$li&iJAa`i^b*$m0@9RdjnEd$C ztKE+5yk@B15gHc}Z%cWHFvis$&T5T*)IDg>)!njahPM$s&+Ba2Eexay9C*qE4>(a|jtqGRGy*e2qqXZ?OG^tx-WpAkM&mS?qB z_v+NCQ@?@X@y%*Qv)V0VVj49Ji;j(r4U1u6&7-5ERLO>&Y%^^khDAiK?v7Gj>c!WO zVIj@JqgX_2XpF6yEk)GQC%hAjxN^vl-rah3WnrG>KI_w~b9lp;`mroB;%9qw651IN zYm2g_ylrP8s}DeFI@!A0J`7#WB0u}Q?~vZTW{Nt|YvHROUs`lYY&}RPHmT0fc6${1 zJ1i+A)|No^!s|e)*?4HdQRKm|MKq61OioT{j<(q2j|0}oZfg{pa2B!ZdhCmf z&ukbuZhV<`TiA2zV!Lu;rSoTOcEtqY*tt=EC*s?QO!hSW2c!<0ZBo~nciH0SS@gNi2F{B0! zTC@!mStQv-baeBW&}bGycA+qqy4_d5#KJ+ld2EcK{ml&ui7a#``aLQvHe6^qm1)Ur zCnJGPDjXimLStlg1pk@fx^@zN5{pEyTiPdKLK7U&M|cfeyaltxg*mA01W86o(h7&6 zQ4*$fNTrnCP`VXLK-EPIZ5D4hXwhS1M2~fBDBmYK>o(&2tEGiCa&qV(?+@c;Q@e&sAhEqmIvk-?{ zNr5Da31;1RH@qLlM~5jbk}9@gBSlVhf{*9kpgkGEt;=`f^eK0s~nOg&XM0jdcFAeoy` z8+nX~<^n9`M7XwQp@7>B&F(_lPLc?Xf$$)^uowtKVs{aGR||OwVpM~UIUI&ONJ@1{ zesBQD1YBy{)yx(Z>R=&KoD41yl5@leF;YrtUy+bpuLLQ%o`%G(GTyySt?L5~LzxIt zCndQ))Z5UyhFQv(nY}N;YR9*V(X_5Fq-jfr6inMD2&6P z5r>q5mZyF~9w=2u=pm$t9*B#Qax4}a2;oLY35g>O4UCPB5ibF|W zVaYLZv1q8NheJu)DP*nD&gd+ug*Ompz2qdw8~?>dOXXyC0ly?AIi*!H{?PvlU+Sln zU~;nLwb+oYmjqiu6!v06x?=7E;ac)DG!%AhNpYNq6vvrT>?ou-s-=|T%|d$NEQG4J zk2Yi(5--!YP@5v-W1SiC@j{q(0fE(G2=|25i6>2SW)W2M+pXk}>c%I<#l%2HfQuS# zC5nJzh>DGk$%qjHyj?)+0XHc&2?I=Qk}>X&B^n{{xtN|{M0ZGR0lg%?QM5e)28kgp zTI$hQ(1zEh5)RTm*b>?_PDnI@bj%^N&VZu*q>bTZ)l%;uBfu`9vBxbTcbig+6H=R+ z6lRx_nM!>T9-jcQh<1r|WIRk#NlHL!$H&IPN-Y@8Z{lOJVnQ=uS4K&i(Za)rCqWmb zlx`#Hb>m|lNzpMeE+soGg#c~jAk%^D4BTmiTdx@;L4B_T&Flgmiq=JkVaSh)myKlh z+kqbv4_6Z=eT=9}*EpNh3|O!v+zxBxE{`#*wjcNine<>cKfPyMWY+b;LnMk~%0X z_?%k6!n`CYLc;DsNn310k}bkU0J}`v9N}>o{Y)H`tCKFqy(D*RU0L#Os;fLrAQm5Ozzedl4s}{3CmK11 zj|;(?K|mg5wpLO?b%lgxCW9tsGE$3Xl7t0~_^9@Vx0*@wjPUpv=VemcXOazs$2+sK z+6#RV=?Lg@tjn;pdkG^V)(t~5>_$MK?@3r$ODgwDOLjPtTrLT@k4n{|ksrorP`Zz> z2o?vk(qXlsMIhA;HIgML`!ZG>L{q$lpPMh_yf%@AVjvehtpV35tr|wj0g~CDSG`m_xqVDbc9Qb_&k3D{ zzo?tsItG3$J4WR^OKk{=Zy$}Fr;uzG+Q^t+3V38nE2tFO8-T%s{gixjFQ z7k_An^c&I92?=s8^c>L*L!ZQ88J8e6V+CQ=iI2rJg@)iZN{@h9D=IsV`XpAuo|oDS zKpZ+i!KmjFAX@w{B=Z8WYzbiwDW?~x#_$BvW0Cu!$PIPN+!vJuLK6&WuT(mzL9n|3 z|A<+&(FZRHONd~0T98mrAiox~St-#ki$uR{YKDdy{qi>Y1%sQR{>;7>gPWNB*G@ni zV^oHH4UGllOX?=T6~rVtOp94ft+^y2CJ9CjF~lS^leWH^Bom$xo8)lAj%ih$6eBhE zRqC4*TT(5D-L2Lv1e07vI&6v51_7y?fYB`_g_dN(%>W9$t&;$cLeputVJm_MaEw7X z){)>4^T5@>Bz=aaNHnxTYB&qUJiyROvH~z3qbRKk_fdN8X2D8Xe5F5 ze~CT{hqP^O>FXp!_K0ldYeJIL2NFZ1(XQ92r^FkhAl~b!uSD-G5WVwBQ`ni&J6p-t z6VN}xh?sqopov;Aw`>&Cs2NSHh{oHBM|kyET6Sm!(2cu510?b+g$6m3;M;){wDXA4Y-RJ>o1Gu1R4IB_5GP?o85(yv!W=bI>J}%1S zRYK8M@gYVnn?&znb^#g4dfyRptwTE}f{%BNK6;P5l<1pfqHp#z!NN~&H`#Yn-!xb5 ziP=B#=$n`*<+rwa_f4||V;tT>(!yR1^^NjoTS)&x;v2`YTGS85?BZjRKzOu+`X|C6 zebh%%D(=QKZfboa;C}jMGp*&|!5t3tLYTws9fI3a>~1@>LG+IBp8~sXJd6zVf!jpL z#ej-FL!FIfPj06D2AcaM#S^l?{79@E;~h}Lm9HP~Zk*H3k(1M|T~0f9BdL#H5f$V#X_wPP zWVBN@w3BjRLnz}$0aGsp9R1X|U5>k5yLONC65T;`Fe0M> zXt2Z_n3uarerhB~ z-{V+uViN+}?b2Tz!*K|u>4;2%nEgjaK81Fk!{Vgwe=BS)6z~X~P(T*ICs}+$8iv_! zY%GqYaAt%3!+2YN$~ize4O8N=A{U2EI6;a{=+UExnHQE4h5dGHcHyKZnxJ3PsGNe` zn;1IzA;^9SiHg9=4Ahf=hF-G$r1G%2LclFQhZldLCz_BKIh))j0pG z?|J^2r03K5W&^MD&81ZP50Dj|M*5swhT!Bzlc{}#F0 zJZHq}oHFc3NKdUZ#85gzlV^&2vD4{6KrW9%p|9JtjOX zW^^8Bew6bw=>}#z`iURGf1%!_oniB|kDzB6o%Au==n>P>Xb+dZ)M$VVP!_i&===>) zR)B(Z4yV$mphk4cqtYXwaC8Ep(krp$PP^$UeYg%|27N)VT|Lm$@=LHKMZ0zi{{`Fz zq5UY8{uoTr{)!I|{J8=1JB$2N0rLll`s=0!qCZrWAAs4O|N2Wregn)g{O8{z@+Sw(Ux560wl`q@ z8d2WeHW2;yMgH=D`Cke8Sl@Bl&L&nBP$3r?v}3KUw522$-KO^2-C} z_YnC*QUcMxPUM#b%pW82liLR>f49h=6EJ_i$UosX-`01jZHXYdDP2VRN6 z!)W-1k)S^kIEmnrsCw2fsgsAf&E!;ipUJ3qv?zBY%8dohDWE_;t0Sm%0gT!`3^fyv zw!-{KPpR9h5>hk36;DO^kxL2Lvbln z84pC?qC~ZlL@XK|SsFYmc~99clB<*qwU|=Dd+QdUL;4`)cN^ZykCVKq?h?@sDK+0d zQJhSIWNrd?R^NDQ7h#fAN$%83#J_ick;FzIM~y&~9*6WuA!{jD>J7r7K9SP64fH0m zThZI8qPIx{NSkPUBAq3?izP2i*fFM&Hcf^mOoHj=qZj&`V`E3uI}JfvhSX-VCu+CM zA^j)qB)uZtu=G({2H7C#Ya%>F3F1;0RZIELUQ_Xcbl@;idxEXatoS8+x5VM&bmx_HvM)Rc>yGZ0r)H_a|+PC)&7pXrah+fQ>0 z>c1&?lV>39lNurANj|0o|55LgM93b83mdw4E$GPVvDzY#oOC~;>L7ndzCd~jf=VqX z&o*9YGHEOErfi6CWJ^kbOFbmp*O6Vq)U2ro>jq!m3#Gc^@8x)>Gdui2ItyV==y@vq zcsEgR2X+mlBJH7a@1KY})!k5{7e)pL%d9|uh%@S^63EuliJQNy%Aluk-LBPqx+ zhg#z~=5$1TQd0>|-qxZhwSBZGA-$hxS<+>)G+i?%fise>oL3G9Me+u+2T1N@ccdw* zkNO%CCTSAqWOug$>vmW~bTz!_1Y_Kz+Qx$BjiM*XLn+-PJy&fcZ%&*mIVo<23;sx| zy04>@H6B}fHwYY00aaatNaDmlwUF$e^o%rs$`eiEhUiltQLUCFT0w^@s<)86YTBdD z4@vVjQ3p{c%ahtca=uCMH%3?Ih4)kLe9o6rKw>v~ck|0KsIOLnSF6Gf}ls%Mh$vT~%Mv7Y3jdS1zUEMPPTnkZz_ zk?nx(Q7@6EdP@KF!{Up7NFbfk9FvS<#!?Dm7A{Q^?*TsggZfz2-R! z(dR>|_Xt;dS@OF?e;jKA3Z$dd=39*s(9>i4mqVhk9p%BP4cCC$tq96fNXsI+-OLsa z00$%i@&Iy_lC31(rB_npE6GRN>PYCqO(-RGSoSnws~(d2Bdv!B)zNRT9%ju z`B2~bo23+D{&EF!TMI5d#~R6j??}?jC_(+M`rLP<3RIf034Xns@;Iu`$U}SEo3uyD zAs?YeB&pT1zL7%5NiV3!6s-|}-YjxtAJM2lW5UhAQ2tTJ_spaIwXAcPnD3DPkn1M0 z0pgU#BAU@r%^lf;0ov%PD^ynP-;j@zK1SKNWsSP7kW5HlXstw^U-_V6fJyHxM_w9_ zshx6cr#SfS zaZGiQjp(x@vJ!<&Gas@lDJ81~BuB-k-Y;_G93|)}E25b&@ku>SmRkafQV(c`Am;(p zGgMajW75H!&>q$5BGH3#4yDG8j)sr9&0O1)B#54>S@+Zg&Bpw(187Pc@T{5UBs9+Y zUmMAGSvux9m$Jr@E}|9GPqJ^6W>8(qV@vBG38=oL)gx)GK4Y@#@}6_!7motii(IQH zJC?fYX+stH1nT7p=pU&;q*1cRBn-`TW^))=m~dmPBKZe~Tn*Q+@wGA;WZx zEYx1h_tOl~6GB!j*R^UiptM{GS{}|*zLqT%g0}vIn(h18Z|_NeLH>}qy14Vz7N96+ zk>o!-{iDD6qc!hPwx)JTXl)~N)d&=L&MU3V@;B0x`pyd!Z&t09bEu>q{0!I5a?vIR zuTV9;^PZuS=aOSu;5|9ZZ(1|aiajXV3ynug)}$4rd2*(tR-;m))@+Y=9Vw6I z6;hUJ4MrYVuJ6^_R7qNSQsRU>5OJnIk7?tK-iJCr-rQK@ms|~5d+YwJ*Rv(onCLxf zSdz80j^=8fXCvPF?mf#^zL4_C9q|KF7kTzGW!iBiDh7Be`~xdvnq@<$PXgg|C$=3-dhJko%-oAA4Fo`E%)c z2K_&^*IdYA#8)74RVLTro--%Uy{HiMW(R~xn&t+tMS%! zA9Fmtv3LD}M@HrGWq+x*NxNuS;Y@^9$yY!I zQ_<5T4e}@b@urr@dIYcv>U%DrpT-q7le9*Hgxxdkbnu+;4S0z?)fT zV+^BxV%lLG1DR)zEB7&bCM+EF4c?Lwz9kA86d5F@(IRY7u>LK;LFq zy6f3K!c_ak)~G^ysP8IMY0_7c4{5rZcl$Ij03ZT$*GZsA`&x4C7y!`=d>`ul2fGZV z)lOjtF^{Dg!u2AjKXRrcT*mqtkX|@nm3e)QcXt!FhZ*Z+#MHYlb~gsF9-u@%jCw=T zpc7gd>xH~t$kR`&ufSYi=5{gOD%}gxx)~H{oRRYxD=tg)hcA^e+V_xcpuHXyliy|F z{Mnwcx> zptqb;j)pYk*FU7|^t}PqNgj!I@k#*m{OW-6Y1Sp{kUn`5Xi@F*yAA3$^*nCKfpk;0 zzZbCRJE9v!{d#*l0Y)B?&g6*~vN_NBZN>h`vVG6qBwE%y*L!zgoeszoL+R_~O3fb? zS{KW+IB#!a?fTN1Tkg(NkI{_Q|L(Ep&c5_5N^X_CuLV`o`@Z-~THY5uBENK@`e@B- zdCiKX<~go=wn>iRa^I+`^F(hCO;RCk)^(z?woyK{i`qvgB-Fm{XdR6RBwJ4|tJm89 z>DD|6eyJV(g@>h<^hYbm`baB%XYXomMDw=Ez@(jUX=D2AgUTvPCJD<~H?5=SOh@_& zmG3DnDoH+mJnAP|>bgOBs(yVB-gh5ZN>OC4Dt^)Y$TXDNy%?So8#?OVJPMDAgD z^5Ls5*P)b@V<)_&96i0GrSF~4su7Sm?Ki12TxB6@RY`4?e9Kt_>Gwon%Q*pgMmj&D zc?fwmnjxuH5KNv;=sbJR8+=<(vDPP`25O&b-4#MZ=xj*NQPi8blm&`bKV3@REl@nE7G8t-KUo>gC}|c=b7-rNXbdOMLan0lo^}A$m?X!c>dn}tzBWY- z)Xx6s0i_{<>`r}o=Pj#>G@s_3M8Atcy(?Np-)pKbl1V<&|Ir+LGIHelRZ5duDbG(y zn$(M3M4M^1Le4$g`mEari?Ky{N75wul}GjFceJ`EzPsWtc_W&QQH|s+JiRK-pQsJA zqEWga`-QBAa;$lqujFn4H7Wl=c>D8v!OsfYgR;`c%4T=+>xi47y)@4t&S^GFdMIa( zYR)M2T%JtmGfdwWR-_#aU(d+)SF}=4a*+O3B!U4|ggeIi_t6LfG<4c{2a#~WYa z5e_{x*3q}Lbjh{m(Ifx?jX<(*)_|qOS6tm)aM+4pA8 z$)1}%KYKy;;%pEvVvPD>Yu2``F}WqVa6tIB1UDaDk*>O~2Chb~I9F3wqAS_e*45rM z!Zpe@##Q2)?3(79?kaVya7`pXR@=cv%NFbndx*n z-OeIsS7#4rFK1up0Ow%m5NEM-gmaX0jI+c!**VQQ-C63q*Ez>I*E!$0z`5AD%(>jT z!nxA9%DL9L&bi*X$yw&y?A+?y=G^Yw<=pE$;5_6!;ymU&;XLI$<1BZcb269zR>CC3 zzbm>Tb7dyW3eAelS_^t*ptT)z4uQrglxL7o14t(kl1X*BTt%)PuD-6pu42fj1oA0$ z&2i0lEpRP%Epsi0q*l6Cxz@VYxz@WjxyoFdU0Yq-T-#l{Tzg#yT!&moT*q7|T&G-T zT<2VIIYl``a?lB-xL6J&56x|m+cdXrZf0&#Zm- zxd(EO<(|o9d3E#R@{;pX^W1qo@&@D;=Z(pmmUnO7{Jdp(EA!UnmE~>A+naYJ?^NEo zyhwK=ccQz!+vV=+?&}`n9_60wE_Kg!FLtkRuXS&7Z*}i-A99~?m%Bsr8{{|5Z=0W) zUzFb~e{lYY{F40X`E&9Y&1Wnb4kk3UL26TISY~QbYOmD6sUuQLQm3cRNnMb- zJatv-`qa&-+fxsu9!ouw%F^nl#ib>urKY*ldZZ0VD^44eHZASmwE1bv(pILeODjv; zmbN$TNZP5ib7_(3jnWg-+o!wIyQcR|ACf*QeR6tf`rP!z=_}ILrf*8$n!YRjQ2L4V z^7PP*1{qB=+Gb>C6lL_v7@RR8qaYCLT zRz3>WT?(sS3~OEsE8YqVChINF3e9ei-88#xc4l@_cCYNg*(0(`vZuqE7i2HbUImNW z3`;uz3p)eLstb!sh9$XSK?7hpV_-4&!cvyOLe@c-w?UJSK#$KkBVpr-ux*#CEA)2= zw0AOecP{jH1@v_j^mG^W^MtG16`Io^r)f^xoJ{Cvubja-BXUY|rsvGbS&*|lXI0Mn zoXt7ga}MMj%Q=(7a_i>CncMoXwV0SU}y2L#VnmxxoAG*EVy%O5J-dzU$ z-tOKD4L{~S1s!Mkkekt^Qe*R);{L1{b(D}0b zthbS1?=fgIZ7p{bL ztS>BseQYn>3kx|`c#3RfIb+jlLXa8>D~U@@gq@_Ox?m|iQv1SIic?3yTBfCz!d~X5 zE{4UdOkE3`DNEf7tJ#}+2zGNSwH%fcnbrWdlbF^P*5gVmg8lSO8w?8?l~w{9DovXM zD_Wek9CoxeZ9Ob$Yua|$(xJ3tu%>cclZi}kkRAt%YMY)4n<`500jnCEUJSb`NuLJG znv*^swzWKcC9G?GdKv6%d-`5j*s=6eurZbq2`h`sNQ9lGX1HK!Ju>>j)`~Mm!P=%} zl>VRgzC13cy?yt28mSOvE<%~rnx8d4hDt(aLgoySN+L6b%=0{l5TcNI3Yjx!mN9eY z%)>s{T47`F{l4$-obx-s^M}{x^R_E`*7~mdzV7R~?)&aRzD=d)BI6S26y#hQeFRx| ziN1-vdrrSY=H+7?k$Y}TWn>@E)I|O@W&)9cJ(vjO;0R_cvT!aFk339awjmRbFsG4= zH<<^>#&^K`e5@l|0vTDEC6JRfSwCcDAZl+9)ZGEd%(1Aqb5Uy(k)7L6V{ztbd0gkT zn2CtKhM3MqROg5qnR3Lp{gfcY5&q+59+wIt@ZZn#c-KuT8+V?Ad(Xw)f1*y)_#R=@ zIhj_ks_W4tBc8kwQTSd>BN(K?P?BCqucCL*$LK5c7utp?$1G!#nfuHu#+q%$j>onA z!ItDit}i!;8_mtu zC!b4iq>qv;`^ueAQO3y2f{>HlH+~H{S-gFzTGto$v(KPa$Rz-iX5CWE?q(TtjXri%|8bW>gm{ zgqnm{x`1=^rkm1{^hkOEeS&_=v;t2G09Fp>7UB#_0TY{=7MWI?P6GcN`3ihb)Zz@( zTpPh#m?A6?_6SFWLSlJT+2vxgn1!eKLacyF+8%coCoMw#EGc`+tXxZODff~G%G2ff za9Behb^5)U-(1@4X>Mw6Z|-FtZJr18 zxoUo>#l#4s;S)YkL^Ls+m`2PYmJnx&_e4IjAnI)oawMM5T=Ev_NeQ^0dQ@|&4b_e6 zMQx`ts7I7NT@}BmSVd+Jq$kny>811*+~ELbKXVuLuo@e{_5r8e%3fh#vMwCK)j_>$ zhxKK{ycw=f5KN2D1jFm3sJ%#Ax4N3CJ8fy zxk9S2Q%Dnz3ulBZ!A2}5dWgK(PMj#(qtZ0NvmGzpmAcDY<$Z`#U!|MUR~e3Iov9pB zGL-AU_@_!gb)33VO;THej~ET^z}jX+B+;K3L<}Qhi8x|BF`1Z7EGDXubx41*H}LT| zd4+sTmInehq*_uPsP4eO$<%G+y9I4e2hi>4e!#Q&`t#jK+cMSJVq9rFO97lW!gSwM zOlT*}!Ike84hiRld%|16N_0a#jS%Oeem)Q#rG`>FX&|^=3i9rQR1lFFD2IZ>ZIO@3 z_vC_zNDX_2C<(ZWY}`c-YE>?()hE;|E48RvMy;sUP)%wbwVv8U?V$Ej`=|p^sTQd# z)b;8nb+@`7jP0Cy9aZX$TEJY)?1C&+&Girwf#!DR?&iMW|FOu}Y34=d<>s~K9p)_a z6Z31-BctIR;=_P?RFo(SWl)2l2!Ze>0#J*hiIIqxZNy&UIHKkfahI?o3zHsXb&|rV zy&^xLj^w8bQAH_F%9m4+dl+6$Fo5IqlZbCtGa$}|2<2r~_s zeu;U@lx0=68#|gk!`^4#vNEEl6W5Cy&n@Lvaa+0l+(*vYR2EpkLsfLbSnTAYH)F3;y5LDa@;Pq3s zF|v39BK#TG(A37%%QVeYiZ9D|2Ok^FF991{551rYb%Zv;W?{c@M{pL)ij_o4^bz}u z=S44xl~f>AXKAREBozSDxh3byk`kaSR7$CpR2F#K+}v8b#Pp2>v#2FFyDNC=#ef?;-JKcAjAv+YFuB~aL zX|ky%7;9Ofns7q6D%=*H317r~s6x+W9$9=ru|<@}t54J+h|?El!%d@MCa%Q=JZLpo zP#Q6qnn7)(_E9IO3bYKgJ%pH=#B5;>GG~}9rZpSR4ra%&)7h!0q+7TWxc5ZU9x21A`8uafV|HI*~U6m<`3 z-UrpvOq%PPHv&@)&y9v8TvG+qgu{3SW5}i8RAs5E6pbe_k2*<}qALL}JJY@C{`7D< zj^0b(Mdi0&ez(8-jh! z0q;tOqj8HZ#8u)Na-E@pVz@cnVr~VZ@+fy3+2duZZ)#@>Hw`w$K=JI=vpU=K!ek4z zUL9FHf}h7P%VxZJ4ZJ;rp*U1(dGK#fREDv{bz&j; z2l!D=tcSZxVA7e7j04*m80C)&7sgG4E0e}`hJt!2T7plVgT`qG zhIR&(*c*&Yuf1*-daSq*&4Hi?iDIM+czPFd4!MY24Hn*(3Z;fquc>^fu_E1)e#iK8 z!|`*M0R56U&7H|Y4K4Q1GI62#pTZh5WUYmNtGfCx-^XE|6-|!!KgJ3Nb#V;rH5In)xnhRk+y4Xn^|OitLU$9tpl#m?}=ORBcqEE>JPiK#F^m5!$31y@EbP zU!d>NFX_*;3#!l{W-@sAX672IIm7mZmS4zjMh&XO32@z}BSzD?Q`}YV1^0$CLZv&w zBvq)=9d zOzI2%FjN`|bv;>{AuR@z*a>ZY9DL#`wDl9oMs|=(%7Sc$PJSZ)0o71e@lXV11^9%m z>ikvj%4z^mql+2^)_Y#HhLWwQyExfqLu35HPFvAL!2Ql5+8u{rAV3- z$hu@3au`_xYOyJlVmm}{Uuqz5e+;#lT24J?-UHoAvSrvBEC&<_fEMe^4nx%(&rX37 z+sy7{53$GDbL?gI0sD-#TLCj zS_o?0%WN{s(Cgmj-sTzR4bbMhpw82w&oh9RnOZz`v@m4gLz%DsC_&67mJ+*&1E_o% zP~R_z(qu!h=0GwCIy)HbITTuZ2efrM)O7|K17y5HH3eUo0Oh(29A`UofWf;_0P!_c z?8uIT4!y$qbKSXQuC&RlJ3Qx1cfWd+l@K?1H6V%~2v;(h&qCcUhDvEIwh)(!uSEr} zO1g9n9MWHIC3lv4%fsaf@@zR(c2-s@q3U4sNN~DO+Py?r=>D)LSsJy;hw8~*;5zfu z;cBiGKgeHX3&lpUQwl0Ylwyh%xMMbaKEntL1CM{|49(w*PT)41esw@MiILJYX*pu= znRHP8pp-JlnCF0JTVM(gTMFbU>KyxlwdI0^g~AQtu24f}T_)ice2 z=Y7U>AI~%w{IIUj49aJ;kSK(T1I0<=B5{qlMfcmzp`x^s?Bz;wceya!+?PtCY7d1U zkC@$SK59N=zHYv&J>xVBLl8a`CDs!a$Z{;r`mn9o5Gb;hxT<65COn1mEW)|tx5E2z zZMabGsmUIdq8}g2cLySKVjZ!wI9%Kf^}JGYlK042@(v{nntz(vaM}XXCI&+nLL_^U zG30*mfMMWXx2P`kdDO=8OdX~xvz}>;SFqi%H5s%?G(@ zq1p7%U?bsV&7sya8^PChFngdO4>8A>k?blwNzSC0)`F$=23p?aeS{{$QSjy*p_IG= zS}#pLDqocADIJvF%5>!{^wDRVv^OoaHj$wN*#g(#h*~!R zdVppHwjTQs&nb~xY+7k*4St!4yBi|Liql0(swWMTn!qW=KO`*mXYLDrn23x^p;MtN zcEP(#hkKU+|1OjEhGsLdzHB6WmVLu^SE7K-8^jKyz1=7s%J;8gK?i!sEFH z4K1Jo+*6I_GUkisds>V%w$xe`1|MP^e5z!4A=Sv*WIa@}*@%nd)OqSEwEr`>9}FEz zk7i~u3*b0@VLaIusAuEYHOTnmV73pCUmUI|1xzptYGWR_P$_hoJkfi*$$x+k&kDX` zEAh4%0A_O<4!BY7hFA_#?BPH+Q!AOH!Pjvi9WC`f7EAPoGvf5|;U;r-(8IIfIhN#`KuulXn zO_YJg>p`v}`#@ou;mo#Rud?3U0^D&$bSd_luA0j73@Xb(zMe2aSR(9zdvi^A1Q$ee zZ)jjagg9F&B7cyL@azXD{&3UrA|otyZ6^@*iQ7aa_=JbaC*)_+k*Y!Uhsrwyuk{tp zGjre*d|?X0Yl>o5;mnQT34Rwu6pSjg#|ce^!*vqa<^ui~CuU0t@Fa{%VWqlKTe+g#fwFT~Tf*bnp}IhE z8saStyKr3oL_fspems$vgcVsHd^aBcOAXXZN4h!v5PrHl7<)bFu_4R_<_2(i4_h5R z$`S4nR~$Xtx^Pei0b?hCi9X@;3!LDOp3o#=8Lq|)9@`-Cm{>;glp0A1(m|;Ne$Rbv z*oc7FELJRf2jDm z>}vK7+Z8=&N95E{Xq$P^g6sJH!f-(po1(%j5ig)pdP~vL3h9yLDl6z4rGxzzQ_M<# zWfnZ%hfq4@R7LHsPKR^83#|7tyiyT*a44#&AuSKL4d}vjg2#{mm+K8wS}SrgIiK7O zN6;I1okhK%isGpspdG*gHZb=Pj}B}p^d0K5dl8Sp+*z&=6u|>iCq53{V{4(9P!A6E zY9U(~E=m%E=R02+rxrv_&C9Q{gcnf@=dpt*4DX;B)fg^#FD8+#&rRVN=!}-=14fzR zpouq{?wQKKQ98!kp_jJ?dg-y)6&fHO+&@R6Bs-H~f4-BE`#QHNgxO|%a37~p@VTH0I#y|6fF?3eIK zEHTeyFjPk;Yd_JL>;N}p5W1;_p(QtPcez)nTMi~Kxcq&PA@le%yoYdDC@qeXO3SP9 zQy1!W)k^;vrO?^xMGl46vVdF%_k9?++7@m)a>`OKE0|spr7D*4K z)`-^t^(tzm73S*^G1E0C9Z`}+XRk#6S(a= z(08eUt7wfo+oaxA9pRzkhqzf8=Hf#;IB~v>7Ik@d-* z&}y^EYv8svR5^-*x4jr==1i9XFR*7^nMzCp=-($yC%CV@!8+EXEBydip_&?^6Ws-U z=y-5y4z=tN<{dr*GaLn1!Ap1vbS*5J#pB{-(TLt}dvtz#0wr$A8A<@Is|f19mF^+3 zaGS0Z4~eHl0kSGRjV{kbfC)n0)y$P&^klevu!Xbt3WK~8($9|78VCFXW=pfv2k1q0xzb-}3)gtIuw zwA*wRQ#6*C5h}@h=+grU{2`vk2{%W#WsR_1uoa7gGen_Ru^RCgEnSeN!Xx)qdMcKx zlNzng2jfgar)e*A91m;{L+>ENd`COm2rKNt8w?x~LoO!|lA-7tpQk8Vq9>y3>&%p5 zDl#?D&y7M&vc>d7RdxY<{?e#Qxm;^hp~0dnJdSoylt=JP+sMP@X?UVbFw+u%K5S2L zg;-@TP$s`ROFaP}wjm-uOMBfBR(hXP!)-HBj|hkUxkwZzhhSo4KUoR2`WpD;Ys!`` zi2igXTESD*`ZhzD%IrGU73^^*_+uxy!)8oUjKS>BNuCixQ3<<=55-WRM-`~*mbii> z6s02qaNvJF;VjF1mWbvqIB`uNf%hu@W^-%_axi5rswO-k;991Ya z4*tO_)g9g0VYvE-<_}s7q~tw^f`mz*GU|dm*g@onBeM_F4dwM-)D6l3{qI0LgRS%) zO#HaPI|yd_F_YlvCL)U-Fz)cGqR=y#%PxmMbq|Whjw{RYh|oLW^JZj`RuhZEU#$mc zW*UDP{^m2xeN_d1_k^GMQD}|%u5;oe@fC92Rq~ahkmni5^gEb!vBjLr5P77$5Gb`> zJ^(H6rPNotK$X-~{neL1N*DBMaW83Bx@I*H9>fgdGSQ9U+d1#f#X_IXeoRK)2@c=n2uh!Ak{%{DGh$~d&y5}4OeInBB6@f z2%UnvU_OoTil?>LJe`M&&X_q_0*!VNJ%B0D$o4?PNz^o8;2q#~S7taf4yTobvwFgm zhJzJ`(^>%Kvlb4=IaJZ&rVwzSbWH6T`BHE_gW+~Q##OZudI(`59Y-U~%Br`H;@PKV(%I!e{0E||dE4wY6_mgGj5MT(IpVa9F~dd=tMtLO-Q zkQ*p#l)9J{8UqDY%3Rf~fa^R3*Re9B;7AK#rm_}s3Q^b@U7?eR!$$A{wos!n`|*H& zMxSABLBlyz8yb`pT(~ROSyy& z-b?;Hu3Z2RY=P_<03}fy3L+FvX}Wk8O79V7v&OV4iAI^@cus!J@l%6nzP9f|r zn)ON>RMgS%q*tMDzZH7q5|HgZda#-n*E&^Uz_@Xmb|S3x8s`X37Xv-2>Ap`y39=&G z=k{bY9J%qB=emr3^+)vQoT!RG>CMzp%85behV2Juq8=B{O+w5k0kJ;wl-@tf5kka! z;vi`&6mdWKwA#+x1-+`#==>%?0dF%OgtvGF{LNbDOeOT*m`Vge9rXZ@pGB-ig}984 z;Rnp0Ig-V2H6msxnvgBY5ON^=+)>bUt57vIex2HUN>iw5x8Z|+06QVU_1A#uS@0s< z5ehtMzhD8kA`;H$ZLmBM_^?JgD_O`*)whdbl+sK;) zj_^fa$u#Q8ap;07&?+(NYW1Sp2tJOr-rsDDIl&63h-sMlD+m3z1Wwxrsx$46`|gFg zv$~i+^)xL;g$v-z2)@E>%&*v>Cv`!rh>p`eI7eY}8B7t6Qno8^lrrcY4Z~#3b+s_= z>4^Cw`UTdy|J(r;#2)>j3783KMs1>=P(Ji(IzLm3SpnW$25e^-=41b0O>pfqIRead zy~&eb4i;J(-sWI&6I5*tX|wFA^aIax1f5!?rXxQ|D~SH>*jbBe%( zVH&(KKV~V;i-nGDVHyo~=1O40e zsFk~c@#ir8@DxtWXR;u&&=t<6HU|)ZS+{mn82V#F;rz~^7J)x)qIP3C;0c`H;&eHn zs+ra%;9Ak0z^0-wUo{4-c|N^_UPm89L&v=>W+cOy zzDx|d5i^;2=)5PvPu~j+JB#VayO=DrXN&6oL=8B#GV9MaV%s5_BY+AcF%>x*^?NnD z9#15by$&7r0<6ctS#wU%5+Y~j>Y-E60UT}+INU5$(G8fS&~^k4!s*IF9^~M(3t$I; zGSvd+2csW49!xp~&esLgLulPXn8jf+W8an!LkE8fzZj^v1)Ad&s_z3#CmW%W@V0e= zC^Qs0ppp%R3pGth03S?6XZR9a6Dv$5JL{A5+DvkkK0}`f9heFK!wMbJ>Jo#wd2dWJ zHkX2+KF5BYI8M^18s7oiex5P*#%%GAQ^mV51^7VDn#8e6N z6TLAB-yBHVL!awih^}HfdQX{{r7`G}yxL^IkF&cofepLRSIoc+#x+d9=YUPPP%<2; z2AI(cf<6p|e?9~b`b2aV7J{KCVG1!#pMZA&L(=Bo^CohG;UiDfXW!H5Y}CA5;Gq@f z-kmXf`)%qr7&Gq^5l!0E`w=M2T%e&9>wx)MZQ4B;GXMk7AK!(Fn1QId#%7~W@`-iC zyVEl0SOmh69RXi{DrOfF(7nh&mS4jTNsd0@?hZ$*0UU)O#7Zc9ts$6ipQuj{r2S=6 z!$DW5ftVEx#ZE>Fx|L~|Yd;MHyouP!<(&mL%o7Adt3|=R93@P|O#4D0;}P)8T;Y?D zPv5@K=GaGo4^IVJYV0Tjk)!QhIQ$Yh!O-PV=rE6xCQ38)&5I+5pi6(5Rd%7pm#k{oe3W-0qQ#y-etPJlkpB6F9&R6Fz97#`xxJ5&S#oa!R+#; z%=P|n8r~HOu}5I4JQR~Y6ZL8Gg+wZ*`7Qz7N?>L@5UO=9X2UNbwn|V8`uc&Gd>n;n zipM@h8u<22R3aT|x|L^V@l|+cM*=Pi{x)6Wa?>Q@0_8E}>_V z7e5{K9jJIH-D}v8_yn}c$2oA$h#p>#9W83ouyth6cZ(`x8-j=G)%J%5z{5xYwrqpG z$Og7p!N+jcH+gCTVVdh35DA!g$-w07HOzM9AVv&`k;5~jN?^>i-eZ?4eOo1`*Km5cV`nJwOL`(|eB^NUpR@l;UhH|O=!;ZrMJx)@-ZZ%|M zTEzh>PutD;8DsvsxnPBu_;pud;#b7cq9Ie?&B^z}c7m)1eUFB*f7wUKQS9c_1D zB6^SidRw3YwgkTI2WYzi+FrnqI{^$B+^<^zyAXX^>}j~=hW#7@@mCX_@y1*b@GBnu z(G+awq@ibW8h+YMxS`Ln|7O7MnYF-8zHXf5U~Me9LwPy1P#Zu-JDS9xOmjPbkx0@h)Ngi;^f7nH#W$cL*E7K8#!~a zL6-O*?c;c3k}C8kR7=2=X{xjfb0Zm2CT2&n(K&dB4v(9@fg@w{X2cKGF;(9t%ZEL( z>iTX?M|i8+4%yVN`!s*<(&W|027iNA+y1xqWs-i4R?H4q8xr(*b-<TCj7TPm{)bA=he%A2UR?re2TqRIMp*{>Tc zso$$^F7VSzM^A0TOpDz>t|Qk&-!NMU98H2RvkMXY*VxTNRX=QL2BP271C>~t;QLmC zv%g}i3+C6Vqn|4yh8qB3gZ?&>Q&E>6AdX8Qj`^<@c>w(61VnNMV)>oESyml=#X!{J z9^h~@^^LL&Oq%?NtnR4DyuLja3J#a@mwmBMlG{%kVgpcj7wUUqnR=bIQXCX##Hu@@ zl|j5}TIH{GRzucobiUsyCH`jbD-`=)KW}>dh^+iS>~^JMOXQuV>z-R1G7+QN{JbNg zltG*}*Y~)BQFo)Dn&b5iu3h@ZV?KRn%U#D$ZQD`9&u>ic^!L3iXB{#BjK_&Ox7!7* zJPqyh34MW@|8m=E*H01X_;2>BlJp3?hAqdO@4U~Mb@?G48(<1FNN0gjsN|zC&pi`t zP}_PujS1iE@A2pkMAhOkl#7C2G75Y!4^K0Iqu&tp*C@=Z@ng~JoQr-_qF(F2#pKQZ zc!PH)Hg^+$V2ba+0`lowkTRmP0eT%le_@RYy5iWSM{Fj#o!S4u41Pr7C}EkB`M?o~@7s_;KX6J7eYfeHGFR6nZeO<^8~?QPI8)zuO#8a&`243mM=h@X&<}~w zw;O-lZA{mrIu}!rZg5Z=|FXZBguTU|Hx{d#|6~YxdSxP}q8GyZNdkM!;|qCFZDWY~ z9@8$s-HzY45-0w^5HucX_+<~#8@>Hd%=QgIWG7=^p}uwgh#-!4qSeA1DB!xS2S-71XI_06xit8oTrsGPrU4krAhc5=ZS ze&!6{aQ9E`qiy&8tbH`j@Mpva>Dp&1`qY^^pUpvMPTT9P{L5atw$+=2dFoxiFxyXj zzMq(FpwJNvVxqp+o5yV5VFJnx3_{}$ng*Jv@10+QZq9-FDS-&p_(8;1y{v7TU;4+L z+@S9|Ctlye{f4-XK-%V*00~w?F#|H>JK`pO-L%aH$}-rjZH}$lC~VZu)VFC9pkUI} zYuKax1O?-Q{aI}mHwb&PL$EWe;irxM4#^shIuOqKW~@8>bd9IVP|tqQF`9nXB2mND z0YKJK-&IY5jAUe^gtkdhdeEigu0cgSFUuZf($6gO#M_Hp$n!Wzvd#t;*n#C z$g&hY&$ON3yqV)mVCOgC7CeAo@Eor1yS&-mnl}3H6F^^IKMhCyJY3+`yTg&y&P1y+ zGV)S8mj?RD1nOrKte;MVel}zE)0v66mW8N6+6g6Lhep$X+9{=fooUui>Ka^#Z0r?l zr_hm&jkbrL#n3OWi}atP|#DCB)jxD*CVomS?m zqarY1*)n*xH`q!8)P=d&@QepjN&LFw@K3*i0x|LXf4@)Q_X+$yf!`SAUUS{)-|EjPwnS{N-X>^fO(daWN%0iwY7 zYc*Qqs-pFav}|Ez<7CmI8Rf0kEtb0^=80kn9)V^rzWZSfBaPRQ2 zV6qJ1qJ72Asc6HHE|KAV!@EVf)d`P`2#@R(6@q_Jjwq{r-_ohXpWkmD(z|PoW>KAb zN4PbvQ;R55ya3wSCW^%h3C*x=iWeZsyiY0ZQz8aiiMUn#l>e(&R)DbAex|*XRl`P& zo063XkGxOIgw+X&=+QOO&AXY8n@_UzS6_DiZCX*Od1z5;i4ukzVT-nbVxVdyyH1eXDU{Kl*q{%se# zUR-$Sd3wXsdn@_d&a~=dF}6U&y?0gb7wmLrZv8V^YnyK|eLUp*Il*PuAIUiz=Zv_v zZN}$q}v^UhL4jZQOM8=qfd+;4rLMJfL= z35K}l@q;^Wd{pQ|yP$(r3&+mc6Ia@G?bfw+RX$~$V8-pOxuuZ>g50<~)>slJQj~DT zk-8SNDrV&zKbmYmW__VGc2j+S=A=v}%A~1nu|jbHXA{{`vyZ(b0eR z0$n5j#ZQhRoV4rpuyP>mzWqqce0pxV7BU+Du(GnWuu1zde2}0BAETjepGI5!eA4ng zUg&ksqwUr1O$tw6dHM22=lK=)f413|adGVHmF(sd)wc8s?0Mq-qE~Gm`+68h@QK7-~)%Zh9QqO24sww zU#!NF1V?Kk)_OJ&ZP+(7GalNfqnYh5hegE1{I`HcHKIyh@|XV}HEyj!!h*x2`?|I4 z8X3|pq>GMwe*zmx;CF8TI4DX3Htex!pEBB~#PI)?OZ)}bN)aXUuDI}DuK3?#)HU&( zcW#*5lB|S+u>ptU+IPt~cDHu3`lCOz>l1paze9-$D+|2#fBU8Q%c&Wi54*2hF#nd1 z)agyX1I##Y_7y+oOgjvdAxIvX3%yWYV)K}F*HMvt2obE5RRvRi9(ANXSM5|1&? z{X5(#7`!yHlgHhDAqSmbbg*riP$0sl!m7}$*!7ne)J<3snlB~rMYEobu8i(<++uLO za_9Z8 z_E%WxQZLs2e6yd^+jhiHpf+_v;S~{2ZoXfgmXz=C=G@o~@ z>>*-y5;5Cs@_*$)MZJiaHAKyCFJWOUrr&B`0Qlcub>F_BUR@&kdVS43?N)n4^(MM~ z{|OdEn=*m=JGn*RJz}+YP5btKW2+5r2GStte`**g1A#v*zSaYK zdy{GJ1Q&@tRPF!&d^bGLU%*C3=Dr<{jd1Dc8@`=cH1^J(@)JMY3!J}paH%<;pLhxx zt=qZ|vKha#&WyojmX2+9!~0#c)sNnEFD(ujRk&w(mAX^y90r$<4hY{CT;+z%;Uj%V zUFa5n>~fomv8~?UX(S|jPTpYCHWFLM>jO^8LsN=WTfCy*ojNOvOt5jD8+|8`^5|$g zv2~wSeQIs8nH2PF;qW%)dv85=`Sr@uO|QQm)_=&C+#?lA)%SRu{WRIpzQut{`-+e5 z6n@UUf`V7sO;McE5~$X9y;H;ZrM83!c|PZ)57}olYP0_?FycoL&VzHf@ePahRnr!Fgh~3 z{Bl@C2c25l<)2=0+>DpigN-GNS)weHC5hrTKYlU)_o_|SAgbj-nERg))-*gEL=#mu z4|2P@)#?}3BRn!BYM{<1O&F1+Ns6Tj0kBJv`lmFZefmE~bpIVCT(UHD!;Pzc)2j~Y zDtrR&kZ6fUNQ7~ zFnD*)INL&R3tG*6J}#r|aoT;%qL;bdU8;W?e1EL#qx%8Nm+q_3?AW9aKBw}ZZl8QQ zrMA_w_bWqZbiY{nns2j|xYKtl`+8PNifh!OsYAA9^^ZNLP9?&|ylPD>`Y`OmoJ|kP z%^CLYtkbJ}TbuQ6n(8xkiJ!s0Znwgfs&q@7lYP!6#(&xSQL75qb&Hs3B zePF+v{WnUu7KLdQQAooICyfnR6PEb!1HAq%1=QHQYaxv~8RH1YKcU5_eZ@e;%+OYXypH-w~EY8|-&iDgCmfl>}!_;-rS5FRX($KiUGpbM9-VRP{Pwp8! zWt(Sak!2Hmciz^@;&_0YQ{#DAgKFMxwKF+zzRN9FV_eeC0WT+<&XJ5yZ||96XMJRn z-|gqkie@!hJ3agUq@L$T?7KJfrH$8U%ZJmdx|fgm_~ujgfO(z;-rC-d*i|B6(d1rs zk+Zff6&7}{aj;3jN1cPr#pX_MGvBr?MZM1;{ri(jwMhFTk0O*mM%y{v*l*Wq^7D(^ zia!pRF#I4}t^M-7k9Q5VuRS=kS!B7V#Icc-?Am#x3pNDK%`V)5^VT>OL@ogu1?2Ugm>R7o8kIOVV zI{#_Cn{SO>!^hbVJrZ){Uf82mb54>~{wR2`ZP2BLrI%j%;I-K7*`iplqfW~|qZBL! zNgwyE6xdo^(@TN<|41od34vrOl4TiEW8fU>0t*VRefs}}O89qG;b78?fP4Oh7n@GA zXH#r~Mmn$PH2u?;P2=|6J8`5eIV%4&#&>%4ZBMHobnBb`pwy*FCkOS|+-<;wyB&)z zdsC&2Yx{PeI-lDYRAt;p`dzVET-FBPsF28J=hr+KKd;oKx83t!&hJ*9A9TU8!o_h* zT#Q?r+?d;~s>KAGoa`#k+SV>!bWW2=Lp|)0Jsw=YwxD}4yOw%E!C;C9++0DpXTl!4Mi9S4p^gF-Jqx?j}+sgc)-9rwWPt>d!ond*lD8D#VP?%9oqfK)hc}zdy^a7gkaJ zU(s>RVuYLW&&up?ij)VrH1JW=ySIuv+hh-@=v6 zI67iyn~)OZflcw7y4T&a=`i0emE0q2e>m&pryWuNDgJ zne{UH`peDN3v5~0=6Rgm_TKaAn+Ml0jtZSJ=GyQnYn{iQwwcE4DIHrrVONXs>lS?K z>+G0*v}76Ep$iJ8&8pb$P}!u^m&0~=MEDQBIQh(?c&B=UQY@M_bX`|eEm;|gi!rmq6dTc|zfSKIfR>~pnNL+Sdn zb;)JNcCAyo$=3P(j!h1!=Qw4+_$Z(4`6u^{wx#^*U+htB?!g_+ADNFYGfdoh$uaQd z)oTk*TzceJ=eGZ_t{bntt`XqTJ@Mw|9jmg2wcppkBI@X-usiRb+duiVy~@G1N4X|b zuMQZxohsD6|JkBJlBwLGt4B+QJ&CFsRNcNwJ)dSN8#h(RT$<9MK*Ec&5fAYTh;I_PM(9WG*?={@8x#-f%-K7+Vq0+;rO{&&?U9`}| zb?rRa8@UOdZ=6hRsy%2izh3n@Cl?tP&+!eqTw|Aen^~>H8y;J9p;bjP)=G1dro){l zG*0+G?-#+G|I^O;vt1A$vx6x4-Kx)TNjiKt9ne02{r+b&!JaHg{P^9Xu&TfHBl263 za98`)GA=X}t+R5X$EbX7qc@fg-rwJWX!FC5a3EoH#=DOw|F?R$6*O`f-s?Er5N+tY zwEPISf8>(Ud8XKp6(1J3Rjkoau+xH(@~bS1pzvA`dN>rldB6R2I&)0b1-Z8;h4c-c zS-pGWgAH+~X3w76wBXFw$6Ply@|*ps$L(lmIoqe8*rnc=QAKP=nC!|ueekN#{6z{A zlQ8P#m*)LPy4+hjd_!{Sg?k4FuekT*Y`IP=-rRT_(_<1h-y!HgGj_tx7dt8(B9>5z zm0eA1>fC5oV(z3K(P4+q-tS`GTkF{ax6(VJ5BWWu`ee4(viD+}f%V1QDFe!cA9}p! z?eYS3Bd@ua9n`8oi%vH;%El<-X20z0GgsI9a;@(P_sj0_YB_k3f8Z0gfkCM|bw%CF zb;T8f)>es1dGRJJerAV;=Yw|Ev8gopN#&R;{r697jR?N)-?1hOp^qaFCX&I1rHMr2=GWk3?bB_` zG=90;{@wZhV+(Q#xs8f%_%T3Wa%%xHJ9W*sObx!k?r6l`5@5vyi+>^fh)R`0mP^}9a=mAx9)pS3v04W-AOI?}bq z>ANlJ7qVNDoNweia+zJwoeMX=EVvSs@SWLsD=7Qq3@mW&LttXMJ; z#7#snL|hxLl5kt!`)Dc>H&;z*uba53o6=jSp^1`^#-YBg)4Hjfrm51<)M;s|q%MBz zx7Tl-nLTIkBgsJCd*AoQpFC%+S$oZzHEY(a`E&MJ{obMI>?n$+%irnKQFKUhq?-8u z(*K>5;tQ_$;sw#cbH6$7(6okc&TH=6+MDayvHjj1ZQF92+q%2A_vJQq8G%mm9=#zH> zzyIi#82?*GXGuQ&lXo7yGKN3T{0niuZtLbw@C;kfxFU+$ADa>V^|#-6tCgLMu8ht* z>)a^%`OGM4JS#?zd}Brw%~6VJ$naT;&WWbQe=`6e^~{Qu_ud8P38rQsippYil+&!h zguHyAUqDKxjn=v5X5*xl1)sw9G;O|EDw2K>0sw zUsf<*%KTR5cQfx}KE(WK=AU8y1?FF2{^!hJVm|w%*7MZa+Sj|8cQfC}yn*>r<|E9n zV?LMpSHUdFtP`A`2v z<^M$9yUCYnWfk{M2;i zKgRs)%nvgE6!SsmyO?(|Z)RT2Jjc9@`6-UaA2UC}{7UNiV&)O^AOA%A_j}BbGXG=d zpJVDQRaiJ_esKi%PQ> z!2E7Lzl-_P%)h|=GnDIj=09Lw#`66p7vUF~|Co6h=Yt&ccQJ2a-p%|;=AUAI1La%E z-1=<^`|)YE=QH&GpCfE^Cw{8!-7>Cu3-eo<-@?3#c|ZM4JM$Ol*T2jBB=hOydnxnz z%xjphW8TiZhxvz??`8fp^Di)ek@=6ANB^#J&tZN!^Bb7gF>hqPiTMM}{|obB=AUE! z73N2of1mkJnO{JCT*~}P=BC#tIsf)Ezni(0N1V^U7|hErBHoqsb>@eeA7cJl=KGir zGVfu&h51J2>zL=6FJ``w`Ell#F~5NMbml*2yT+J*m-&m#zs~$Q<_DR7mia#BgUrXs z_ovKfA+DEnDf1ljTbQq7zLEKT%y%%~#r!GepJYD5{C_haWqyqL519X$`Olf3#qlwl z`DM(nVP3_2Df5-gALDrVIP+oVpJjfK`8f0G?DtEV=a^r|d@=L+)YG$p{q(W?N#@PW zYnV4uu6E`hVtzNvW2MV~Yshyo?Xiye9n6;o_1bewM`y@NGl~XZz=|`9o@aiHdGt-i z_y39J2be$4{AK0~zoO;s%%5g{l=Ps7XzeluFhBBj)kDvVng_)(Xlr@QwO7gC$dl8ek&i%YQPlEf zKF|Cq=0};o#C+fLO1G5x{6A5+k#H;XF6MLYy#5On9pAp_moJK<@wc9T{)u-t+`N71 zix)lo!RYYX2Os*qx{j`nz7FaC?dv+WZGS*MXA?r7_Z7qE3wv|9d}+q%7bQDI@-dRbXqfAnU}D`X+RGwPCm*TxN~=-%1Yr5|JXoPmMI1|A-e z_4(P44LtUdfw?ngtXQ$)(MKPZ?USmifyRLWnW!rkR5xxIh-OCbtg32k9Fzxh6$67( zBuo3&*3Qn(va*@|Jv|@j>A~nJlYbn=QS^!59y{D!_3ev3`>kl;o-Zx9;MW59R|5D~ z1GsJ7*?0Y{MxK93pWpGrn^s@_cYk`(AAPATdfVTgUEUkOeF3~PfHy|hi_}rHG5$Xi zs58pN|96Ovdg9OTk+SQf-k9Qg(H_$E(bhO$FZyhcI-)HCcT3(LV-W}T#F*ZwFIp7! zN85xOQeD&-)kkZ@Hkt+B5Uq_?#rVExM^q`aJ7Or3(w*}8e&Nv@OH@(7bVLub??Boc zJs{8ZO3j*@q7TGUxaSPhA@aG7-XZ)eqjk}GKDSQbUir5*Y7@F#R3T*!{%&9?4O!YEkR$ z^0Wg!U9s%#aVxuH`Zc0qO?4t&U$mLJTqBb9$>$EK#h&WrbDN}|ZsDeBP24`{^j=Rl z%LIGB^y%Nr)7Qq@GP*YQ&iz7BDKyrfx5a!q3fgtB>h?YD1v| ze{7BQiT^d#%O~jD^`l|bYC1&^mC|yx;wZ|?r*3Imn@H-O@v-(?hdftb&}UvWf?n(p zdqaQMOV6XnFlr#(7J(|Gm10GjR>rj5g&qJ5OWQ0@DE(HU$0#y-jHhma&Hh))XY?wb z(mnMZ8%j!&lkzQs zw`beDdeGiV>6KbmQ!8+rv|+2rtUcZ)ZE6=dCp1>(IINO-w+lVS&_>Z>z1VO|bdUJ6 zb+NBrCr_;wcx5~mR!B|v2)tfey+Y{V-}MP=WylZQ8iZzw%a#%h_lFmG+0p6{TPg(oxq4)8hR4+Z#n#2*OoR}w!G z;IV!}8V>OD6&>vh@K+N*6yUERelWl5 z0RJxHqX5tS%&0u@V@pXt{`us%xP|zW0Um1~q_F^B6Jupu1o&FwD}s8L5q~V8Urzjy z0AEM^Xnxmx@@V64bFTmeM{7`_mb;n?U$G!m4 zK!9JP=%_!yuO)u(Bgy`1B)%u0zn%Eb0B>=4Yk+SeeM^9ECcZJi-$8snz;7VFCcwX! z`04c4~dlL6l1 zk+A@OAL&m7c#GeU1^6z~9|`c=h#w8`7LOke@V1UU6yR;0c_6^|lmAG7xAnqsfZs*> zeF6SM#194d4-=o;lho$`@q+>V!^95+cyTXr>JRWTOyblN;3W);Q)hsGl=#*F{}}Nt z0sf=JHwO4Y;`0H1FYz@2{$s>14)D{avp^=|Y5a)nEaEFjZ)Il_Urzj4d}ccFWyIgf z2WAjI{yWN_U~~>Yj1fPBd}b1V;3}oJIJk`XW2Cn@_*~*gi7z9cS;UVJZ*lN>#P1{C z;^5iD4_>MDo<~0C6W>DoY~n94dh)S2_(J0QiMKd-4)LADTO53m@h9Hm;ERdR6Mqrw zeFO1j^Hk1@iJwb+HR<0={a-?S1@Uu9e<|_h#9u=E8;w8l76+FTKYl>#wK(`q#y_Wc zi-RvCevI@M2fvy4W5in=d^z!>#9JKv7UB;PZ*lNji60@};@~TY-$%T~!8zgwiMKd- z9`XIeOEcnhCGnlai@M`<74a>^i&?~JKJj_t#eCy*HSyKN&nNyG;wy-k;TNX`#FrCq zac~9k5%C+@zt<9f@_(uRE6C?M;!hB7aq!!SKSI34!3&8$M0_*(R}w!${6g|yMEpMD zEe^h(_(9?=4!(i-e&VkupT)#?5?@99JBV)~{_VuyM0}q38;E}=@zuoNNPIQ%6~r$l z{$}FKiMM$AUBs6WZ}IdJ;>Ukm^=$FD9!a{4Ldgo_y92e}Z_6r`HmHgm{am8;L(m z{08dncH$2Z-$4HBh#w|?HStZv4-vnH_-5h-$?vA z;_o89hWIAp-$#4}@hxoE-Ncs@zn=7M#Fr6o@$@F*$DdU_w~&4_@ngi_Nqjr;$B4K1 zyMy>q;w}E}B>n*Ln){Jq2v5P$MFRsUOwf0+0a z#9Ms-5#o;!e?RFTA^tG&UBvGu{s8gYh<}v$VdA@qe~kDc;o@fRu>y@B{);tTN`@k7L~mi3J ziuMuDYNKhh_0wR0pH6%~@wTp+Nqi^q1^Xesg?Ne)%_2Te{JE@nHu2TOoBdoye2)Fw zz;-PmzJm1DFZUB)PQ0~u8V5)j@z&ny#E*}tJ`3Z5_%Y%O?IQjd@r8B~KT7<$)-K`? z5npH*@gv0Bx?l(CHGkJ&~|DVdgAP@0l#24ft{v_owKd^-O zW29ei`lLe`CB7gJ@rQ^n$V2=H@g~n@#2;q81^Xm^Us!KWYZ?seCB8qbm-x=GUgBF= z@2zat62p_e(b_vdic>zUm-y3P~hL?kUp>UEg?Pe`G9^_gVI-r_(sK7g!pE~mk0RE+7(|$d=u^Y zvQEX1?^pd7@Lh@@BmOR5kDNzFC>15_(HwJ4-#*3E+@X9_*=-ok@!yHZzKMF#J3PnwMWx;k>DBC zr`-pbOMD~g3-S}6C*ImyL3}mw3&?g6@m0iE62FA_3gQdxBEFpXLc54BBfiis;>SO& z@>{#^A^rsMc7D@I{1M_eQl4;M-p(y;U&r=v)R&SPvHYwOxkmXFbHm(mVL3Ex84 z;)pp0|Axwcn$O$%;U5T_e|yO#CaI_)gN7MCp|e2ns*XXR|~Ka!ut?{8xHK91*F z!WP%gH<;zi3EO()4TLT3d6$)weg$ER>uw-C%J$N|Mu+Ghu3)*vX*Ut>q&_UZ9Aunz zBg+R_-!j7EgqIMuxcEB4dFp2_;StuKBW&^DJB^<9bGFe_{$HX#N6Bxt(X;-QgpW}F zKeGO0`6`x=v;NDBp6$Dya0Th}gbxvZ58+P2b%ZTGswaGm4MU5gzAwv3*$EmwkcdcF$)qVLKNQ zwa3Zs_nk-B_O)IjZ2J_`+1^9!uk#7p`RRv^p5>RYe2n^fGhw?I(L#FLcmBG;^k3D4 zZQtpqgzY@Lm$2<4exGoj&oc~;Z2$esEbpYgwh=x+|N32n`TR1%b{-<#5T`LdZ}E)9 zH@2^R;92eeKegxCf3peOx$*#EyKnUl!gf9-!zNB+v=7@i8KHhJF#Xcro*;dm^p%A7 z(cYf1a>{c);X&Hd!-QM;{B?xw-0+ix53oE(xS#buW#!b*X2Lbp$NwQb!t!>)wy*x@ zMo;-JAly&+K0?^;i`xF`0s4o3VtFU&A0b@9{%j^}ak-tB*!jsE?By8tpe@{5a`hGxoAMNcG!Y$O#cEUrXKSB5y%kQ>w>h}m?J74)v z!sX;YllE=*kgvV)rZ#0?y=rV z_z1_#9};fm^WB7p`TXAyw)@QQBy8s{=dgWtA4DFDlbx6S8{sPUZxi7f*8dg4C)mEr z2p?nnpCr7GFs=CALEA$t(@>12_GT7 z?Q7dU_d=E*V!7?Nx3IniEI&s1-%NQ&*}ng3?cwvbZ#YKS_KEF$VIKL}dDslX6`#@e zR+~J8tE_(VTTS@nGfICsVLLzl3FWbU@Wm{*{r+c!km?xioa za{3Q(vvI1XeXJwgNc;E`!ow`DBV5Jje~<7!maib3WBDP%{gihB;cDu`?vL4hvj2l3m#RrC4l3HM7wp}J2KKFspB65dDtA16FY{_i0?K>jjJ z<5bS_I|$o8qn-QOIq)f#56Xk6e=FgW9N&LQc!cuIBiu=O{u|*#EWd*AAj>~N_z2~> zg>XOhYvLsU?f%}c63(+d?HlM;3r#=$$wlY{N#lgi zC0s^%KA^=>1?7J`;TFpO>x65>knpJ8`>iHy_lBzo+r8Qf!gilFM|k>lWms--nZk1j z&t`cUVLQKvA)|h~KRYggB4E4Udy=r-(;XxH7Vt5H`M+ zOV`I~xK-&1PC6Sn!{@Rps5(P_NBG?2zRz1L-|)pZZ}H7sd?y`mH`poPq24IpH13vf z^6EPQ@QrGGXMMSRZ+DxN;@iFWmUv(M9pDef-@&bxZ{=3Se^v55>J>t}EUJ@FZ$md#wl>AzdfqDSMEflDyfKO@u8N|glJAwg zS_0XVl0PkZ^L%-~j08q=WO9B^@;=FP5?CCQe7EFFE984{k`GJX@D_Q!s!R$8B=3}b zu1ugWNZv1b)pb#HT=J(RuaSvrT=M;rZ+x4)3?(NoSCza=^7#v+=!oQlk}sYYMK4KS z+~4|U3w(!rtLPHn)}G8ay6fco*!E5Bqz!Boje-x}H3F{ojcwIYt@IeadHwd(#{$L&-kyPxu}B`)vEs@aSoSWVTOfyn zz4E`G^!+YshdH6`6}mS0+a~Soid$Yu{&-&s#z!uGJ3+U6-XYpUok(eX@KzGYo6XCf z#`|ONb`#Lz-501E5Ng>Lf5Q6#AR9CRU7*kLrVGbGT3TO^?q}HKy5z)n`_=S=#2_UI9CW*6{8m)f?XS0Skt& zL&<}pU3{`JjCWwzC{Df!V=}zbxWKRJ9E^9)m>eIFPmo#d1vZeAzU~+6Ytg|b|EoWA z&!~OjO+fl2e2y<~z3_*PVVuBsWl`e&M7ac|d9Pgj)*ZFY9?{PB*xN(8_9AZ(1@T1K z=g{&N=?(Nyd#qoy88ZrekB$k9n;r3NqT|R#CxEvIWxJHy++{x0p57#!`{WoGwjgSVmzI}<4HecL+%y`{mU8r-1$O&%&d&ot%3xpY6 zJ-WW3XrbUIBfYj48c<%)fofp#y3@Hy$I`rl{k{I}Q!no90(}S%-6_5IfmkzPuVVgO zA>O}1;smn?X!`xJ2Js1&ukVF&c4j^w`JzxujCT!={f>&3m!?v28tF1Ucp#5CBc6-m&0&m<-wSC$)wO4(s73>qO zc!;en9(CFeNlQk2fM`Q!J?BYE%cIr^kJ==Ciy7N`5ADZ%wIPrMZ*|i?&&k}^B%d+M z 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

ahkf-(xh2%sKLLGc&%;8WWzUdz`k2n|$Azv; z;DrKb(L!{WfqcgWHhT)?0lzsvbM1xv6#`p4 z7t({@phpk=?-RIRa-@(R{EvI|sOe>abCM&4^nhP#gcO?a{L-Ii)1$mc$}M4iJ1B4& z8K?0Nuft7LRDUf!<>UeX zW`T2HE-B;>*q;xeufsxb{xqaV`^G%}=-=@Y{6W7sm~ZL?&IukVp#Lfs|DVoYh{~&q0qK^*t|eR)2wW&5W6`U6o4?`THf$ znqR?x=y#kvp#Q$m*GL{F$PfKBoa5*bPqz!)7!nH%dRWd$kN#qTb2GE~gZ`M5Te?U- zl$FhlMhxNQ;1Bx`{nY`X&+0Gq?{O)&1o)J|rS!A-Tt^T6*9n|O5BYa{^oVZ`mY}~( z$}46${%;X@T;M^;!-V#tzfPU!=<#Xx?Ckc!9ydz4CGbBgaMt(*{};}8^yu&70_P+T z6Xb#ZW?$gw%LHC1aBD~`FzCT=(4&WZ!vbg7GvukdFv-70;4FIht9>5*8wEZou+6^$ z7Lv(xc#h+b{x~LZu0Z8JnEppEa`dqOV*+Q{8|>k!i*-D9NsjULyyT_qr}Yg=UoAQ4 zha}IUpDpDtOSz?T`OrK!dwj*?^%CX3RC3V2AbE>1@N%>l^uw1r{+9?`_Qq^_=@yy}9zFcY>?^YS3-X8i^?9MsvN!PWlX6S=v|Hd( z@*D~1Pn4jCywy3!ANpw(xK;8nK|he^Wse^EojxyHpJ;FOw;X@i$6le&vVYLmT^NM*{i-0@q~F!=6ug^svve3MW4wi!;~{+PhcEEkQre zm7s_HZ@kvgqrNVIbCM&4^1~iRJbKJuqXK93FZlcM8|J_L*SYozSV)jRp0D4QlxLy9 zxdN5@VB@97qlfd}4H7szC`2J?#0oM_(rJsS@$B;)4e{w|NEc*e!k)=)^wC9MxS@J`lOW*D2aa(A&z*+n;{;J>O=%N38 z0(VLtCdeQAvl>UA6QWZBw}iw3gC6qFUFPVqKf6?5^H=_3pvU-)mOFZUDi^p0_#lBE zOCI}k$#Y~7$^$su-+o!>8#Cz9-i5b2dBDFx;4FIZANA-V-w}ZiNFFBGKl*q2 zI>$fuF9K)vFZi{4^cX+81Rj<=Og6q=^5`*s7dOp}#zSI(K@a);^Dy*pnVeT!|N4&^ zeQ0m}LZ9;q`Pte#BITCQ-a`Vn7{beqK0GfkTc0h@&GLM|lv~;&A8Iy8e1e7r3H!V=>PUsNB;(a4+=aK&;kTKDErzRJ>s`#1s;|>OrVFoE#2hk z(O(+{ZVibA20i>i&1OfB_+dcc!3=unJJ;^$VLy3+J2U9f|0kpz>N_Mk_Ft+yviW2F z-MEG0QF72fCwZ2BK!4(1@|PU+HJ#b?kiUAXlfPWxR)P0P9wz7q^mX?+dg#AP;H>sS zpL6a{(l-iRYW%+7(c{VE0_P+TlgYER%kiHhMC}3(hr|L~|4!fL=&u%hoxlSb^zaV@ z-HsmZ-zRV`gC6#F+@nYPPYIl*AJ~C^{{Z^jwLP0Z#!J-WPDg*eza^ktG?Bk+jiqX8{I(1XpXkGuB5|IGbF_WBF)?2wdOg8rkYvil3o zYWQVG4||CITef~+H(`AHw9x19T#z6?`sb*WTf(Q8OYl#VXQRlM)nC{jn*A$|KkV|^ zeFA6n7woI%R~>yE&j_5wAM4|}pLF!-@BIR|NFFA%H;sPq*Rtusxog<*$MgFI&V|ec z2LF&A^JC*P+4S%?N2J^m>}OoyDnocV_+!57{FI{y|9t{y=?DJu@=rT@_@8!xTO|(@ z_@g|x-_c(y@F9VRLt=qJkNuDNpK^gtj@rVBV z1+I}iOvZoIqc0btae=e=!#^GWUylEk0=FM<@rhrD$>X0dK%U{>DJ{>Klv{#6%RiS* z5C6PZ$}NHaeu1<47v(2Cdg#CW^V#bQ_=6ECw{)L;s6Lo&Z|JZ6zvt)|3Vc-HR>{Kz z{eZIZ_Z>a<_XY)S4T%K?J=(kL4;+1LZvtoeL+p>1Kj-Lo3taYxV$Z%|3JwYU!7u+M zN00F}Eby@8Nd9BizhOMk^2gcZH|~Eaw}ell0*@NP%fY`);EFFhdibwSfy;eC_zdVV zpUi*W(L*m!3vBllNg8LMhyU6ARY$*8;G+T$`GouoddT1Tbw>~XIV5mJ27NqUzv1X_ z7rN#bvild!^6&SezL)2GNB_sk1JDxWfxoJfa!axN9(^c3`0e%R@#KDiN5~+g$9R0%qep+u z|8wytBn;^x&)&aC%Ja0qhcfs>-s2uU^gI1nw*QAc4@tQt%tuEA-bX|z5BMGbj-$U` z;JUwb<2R%S9Nzah`d2P~27mczzjpL^{)oV>l84F0OW$`L zJ>r$81s)BF1vdIq9zC9%|2NKlLV3_%T~cld@yD(b^ce5Ydh{5dr%KSHzq(F1{_*ny z=LC^a_)f8?dc{GRXJ__Zf$XVpJ`+o=2gkk5jA%N{BH(OEYhe)MqPxqH4f_FrYx{-`X!=Nn`HDdQ!-XXE^8 zsX2EKYp!WRrPVk7RbHxnqIrJH<8Qk0YY?VW{u;+>H%yC`e7SGdAKWFz_rp(06^Ed$ zo9pJc?40@d%pdL*;E`SPTh6-h(TC;Z<1-;#Xa0#xp8c~|PS^han`9}n;>N@IuYO5v zWgsuj&z-*H+aG@A^pY>{Y|ig#0BPO)R-r#7^eC?YqH)EIUz5kaDn;l+KKG0~Cyz8P z`SOJ;zVWzxh#8!|+vgMwN~Gg)T{JB!~C-KcWkI_u3cYyM{TU;6*qpr zVb9N{)pd`z&+lBl=jHl6FV!zOx^q^o2(aOY=ZL_kFS%p)E2rz1Jin9e|Dm)UO6tt- z89jYTy%_`aQ>gbaDNjWBIpz=SQ>ANu6=op1-JFa&*^? zQs>kE+W;5Rdm)qGCu9XC;vg7i65+c;;x^qSn}l$-JM5a!xMLu-S}eto>}=NU+-IV zq zv0G4CrxVBa(j(*Gs5ANv&gjUD>&!Sp5GCweSOgao72I!Z(5NU8h5q07)V zp@UMtY_hdxGRh&%z*If{N!BMS5Fjb)aLGWV{iaMZ_%Rn)&k{apuRd#L*aIRq&l}; z|1l7$2K`pKjnRN19$^B3HXUQ<;SxmjoITq> zpv;VkbR!pUl6oC8P3KcE5P8Bg2hj`{nc=-=$Td-myy#hoFz(s{qO0+H_c-gT(O%T> ziJpaGH+rftJilW#09wfijX$MavFEUkBK{O`Ui%sur|EAt&cOp>zzJppteQd2`tAU% zzabN=jwBv^)Wf z7nH$fusryK5Yp;kg{IH*P%P$T&Ore-fh;pNQGYY;`V1T@*{)!wcWvx=s|5ST+;LYU za-rE|CT}JSSor`sm=$+5Bcs_|kde0mbQweXSCJ2oQoL5s5h+I|TNqd6dQ&d*C&mWoUDJa+9 zQyJ=0GiaQ0J2B;$OJ+)y@e1}8HGHq;&yD=4<WWu^J_t;5E( z>7)0*N-jNYZLbwGUHY3^G^aNbjXz(({H`=S7yoMi%wCOLFO0!g!|Xfqt5)FuQ-}!Y z+M;X@rS5nOuYSE0DWHuTW`a^c?mq7tXZ_zX{Q>DEWGMH(5pwwS&9MQ6O<;YRez4~2 z=d}Z`l@HtM^KN#|yB%4*q-4cFfy9TC2Mj+@!H~waJQIBGuesh~rokmFvyML8x?FqNoXiLM3wgoc?$OkKuS`XguIv^cA^Xz*A~e zj>X=I*-u%VS$O;p@ zI9&2AW^6|27(mZPs~d@Q;}0O0SfR1oXClNODY^YVOp>VU3A1NG=ID!vZ&*m^<9bAC zQHy8$(H0$0=Xsh4ap6U1p}s)oC#8!e!-3sI3HUs z-GD?VZ?t>R4HP?36?3a#2!fb7w|$W4oBjG4RD70MaUWK!=lnausk=Fd)nU&alukxG zju-@gK>!{w;vWbR{E0#Fh_ev{9mdSj=_vJ{xj@`{=i#_<`UUJrPOll5rk7rrjv4v_ zCZvp})^RjvV;Iemlq}dhv>)))EDMA(JIRGL$^@igTplLIJAz8hH0S7PQ4hIFxqda~z!cE)?OM71Q9`;)h-tDX%a+Z8re9LcO8s5R4TMN?6OFqia~aR$ z?sT69CRxiLh@I8;5u%u z62cg5yu>!J^1hE@;aU?q7Tol^In3aiZGzc!9;%SNSn-Hq_hh9x>(55X;wk+@eSOi2 zEMwjCQZiFt6U*@Ft0QCj7f;CxISV%!&$ds=E1u#B<@&$_A84QCDV~zgq|L^(_DT80 zQ;I_U8i9p0<7e#?i;Aa=LLzs%MoIg`QN>eAktht$-9E9jcuFM_DVZ7>?Gr1Dr%Xa3 zl|II&&$a8|q~a-qkVsvLv7vq9pyDZ0Lr(C#=i8@DCC+*fIhhb3fGhB-F_q566LXD$ zd8{Hh!03iyz)C>^_$xH7ijw-GcOA+azlVlX%4~TwQRdb}nfK6XU^{pm@EYtFnF7^- z>)Q?F#+!|spzR<$2ig)Gz+A4#l>U(^dC2qHMwQ2B=3#rC^?T6O;wf%t!&`XJiboVe z2y@nN;OKg|8W}}M2A5rQIpVm^WbeT;`Y z-vBgeZofW$5avprJ`v1uyk^Xh;p!i{g_G$#Sc=yv~_y#`KN5nr??OqDSF&@Uzp_ zvUk*ASuFhbuTi4JECgNj5A|bna?12I%pG@Ki;|Q-Yq4UJjKLEopMqc~TKCTF5Fl1m zfIM>_NzC4V;$2@A8*1|LH`iEVmWIh_a)l`Ja6Zl9&Yik$Y*x2%BAB`rOC_4R#x)@a zcdIOEE^}@ybI_gm^u5%T;4cq<*=5nGo^*fl_5DM=@SDfIPBU56W+S&RDuFVtr_|o^ z9E1RW@#Ow8{O=0sY&LqIA(4vg#|lksHV%w{meboUVtHXN#91@N z0aX>Nx(X?Ptw^xajC=uLSYhZC{N{z+#_yfdpwO{^88b8K$W++W(ie>bxg6LzFdqJ_ zTXHGE z%$j;noB5KToL1PgL2BSuh`?XZMqdr}d@m|$`3NO|RcFIHcrdH=n$^Zfs-Bm!s~Xiy zm8q>*%~n8w{z8k?~&Fznr=0z&8 z=4jbeIYL&Xu8H%g6d~tPx&D=?{zsgD3s?w-Pj?jH$)?pQg?tC{ScDoG3Yj3}B;q?; z!f-vpXjM;0Y1_;g5f_mna~vTRWX$O{!+eCuUclGrJQ41UdoKdru|g;*nRku}>s~XQ zZ-%5{lwD}P?li+aW@wn9B1A=l$SzAUs$zCyFso8MzMwXx$68?%>aWFL75=JKo&l+O zDphQz85^yF28@bgwZAVypNx8logy4_p9}$Y|1Z*ULgTDo$i_t{8tt|c?RHv~+}GH* z8tu|$v({BQ$a=als!Vw9JQ+IU40*Hm?Dm4mJq*WmPRmFK+Xvb;{sm=0S>Z0fenl=C zTh_3B*45Zo=-g{JG?h9ZTocgyH0%p{%k>^uDJg-zz|1 zS`9WYH~ONZ)3wRl{LwPZt3Gkp${Nrq4!6LJ*K=*UQM3}!>l-^o`@wdfe@S{;Juv+$ zxG3{Xr%q>)pq;e^(>yig?UJTC&(o8 zJoC|YzrG6V`@MMLG$fh~A8J6BN%~YzZNsi$F|=saX`!=lvQl-&a8{@p1F+Y_d1FFR zavy}bsMgK6_H>JS$ZIqmX9$3teukz)2ZSe3PgQyu62MCMit~wd$jOs1NT}(TnEMU8 zoDVi(gs+6wOVbBp9^|shO5-{zU(9msK>>HS`5KNs+yV6EVSw`^nSDxhh~>UK7?1Zr zZvZ*;XN%xo#nc`a6R8I;HjwQF!gj+$$KkWorP?zoncfuB@`c@#wb?MF6@8D#c=hAy( zg97?0@bO<@liY}2rWsp@LPpP0Y9__FhN9}ShL1zpzIay4>&O$v5oKCt~|=vY80c7ak$!NTI-(4(Qzcpb_EJ z{>&qm7zJs;OcXwWgWZq~%CgwqXQhJhD~<4`xV}oMC|5y&*-oku{jREm)UHZ^RJ z^njl3gE9k0BM?AEhB5_E+lhEm?xdXs1kGv?BbAZ`io9!cLDGG$17#P=nPMfA^{;?P z%JA;FpXXw@f}Zff^k8@Ff6gU|VpN?CC-F(&7I)ow)8Tkaf4pHLM6Z=8at{LA6mbW1 z$F2}`@!{#MX~8~A{Tw@&P3kzGag zCQTB;{u`-LEGd5BaQqe8WfG2CzxYSvc1$*md3O@3JLbZO^xes<0Z+a$5SvL~xH&zb zr|HKDm}ddT_ucCBpvM>f_%JzfJ~?qXv8zZ`DTmi(YvFzAq2Dp5TXJsT{$pHjd_(Hk zXiLx$`KRggJc3;4yD!RveE=B2y+roh)f^HY30t;5)NPmA#t231R)~mUu!f= z$Qg2t;CcW8;@XsStBo_kUeNP?6un-_#Z<{XJw2`EH$;w}B_mJ_#u(l}O>D_JDkaR5 zMt{_YxSTVCS!qU7A+sOr*GIP^>I6pd>`=p;bVJ6;dFBvoB4CZO2dLC&nlX8@vZoNR ze|xhdSkX(|0bKEaZ(!4blyctl8J_>e8fgy_9$QdrI*sLDa#-yyK!sFYNqH9mO^kTV|VV8GTWA;88b7*(XAJpSm#&>&4BABVLG zN{~K(5BiK=oE~n=a{9lIIV4>=bj0baHU(Ww-*p56X=ZhSt*^9ZOZHWN+sL|1S)BEy z#aVA!oN+$Bi(xgkUaV*x@6C9JoYnvhG3VokC7F4an|pW2ZytMyF6q$qf{RdBY#H-jKr=IjC_os z9Y$VLDH~H$1S6G=D~W;=hbxR|je?+DympF_TdRLMM(jL4x#0scMkkPwI}pgA?kLtB zi`j>md3LNcH#-;SRDcQ8G;9c-jH6H=pMBm9(4WEnqejoJ34fm!+84t%4a_f|E*!}^ zO-s(Hd}~gXlGk8uhe?x9Z*?wyM{g;N*LV*)8%_f+D=wKkl^XhY@f>$GOoF;(@lNOB z^~Na;P>`+*=J}nAxzg`gCG*7iY%ml@&m*(B)gxeq49-XgPq#UA0%kItx~j^)KL6EFhpX`pUU@ zlkospG;Hb`evJg@;%~&b!S!|mEB^-d7ndAA1xLlxnSJ~{f?8kP zG6zLspESG8676oml}i-`C9Rdp^_FtIHK2d!=fehL6L#;u!ViJgfAQ!?1|qI&W1k&ky?0NH$Mmwn`6fx(L512%k(V}v3&YljXiLB6?c7b zB^B{dzUlxRz921lX83|kNRb)4TgCxKU~(Uno`eiri%@;%R9G=~)D*F2 z!lsYbV9^N$#+Supns~UUM98DzI5q++NI~3n>Sc2D1&t}XL}P)IU^ct}&ywEt~**cnrC@l}*&BE@hU7@OFVshAvTCTGd`F&SKUa}P#)iT^xq_(Rf zVO7LgzaMPDY7_Ztrz3v3m3yr%cV1VyPc@r!jWy7h6NhAlN9R16F&J7GO`ibcjfXBZ z$Kwa|$Qq9?@htXlR-;{AHDjR^?-m+jHRD?p)h2H$*Lyb`Te0J-iCmQ1a+s^M$lDjhUXmR7s+OB;hXW%$#RfIk$C{^C6Yf*)ST^yDkgFm=^1aVJVGe;y2I4 zL-Ycqwv20w#{-jBU94xW#+vjXL1ImM533<|AtxdSuMi;Rn^#rJDwX0uio#jcRVPVF zGgmIDfKfJ7VC=#enJ}g;RxoBO7%Pxs!D#LrM!JH*TOR>^g6vtq)?8;aDM04}kSGuT zJIu-^?V+o*SVA)iyHw`?WgDC%k2}m3y^6I7_2AThT_B1* z?@zGxgPaMaRUOENBBs_}#Kb~&NdW7aQeKH}OaH!b7fm~`)Eyo#OWgqkwq1i8WG4;ooAMr>)|1MlO5<-* zh`Wor;~-N1Fxaklq6NVtlqf_)_*ZP?UPfV5mTmkJ<-(ie->pgyo)rE_bWWvQ81*$u z3AiRz<}u30+-c|6HZNBPaJcbIOJK?nGdtzFIV?Mx|Vr zno^CFfJ!M#O>tA}=_bCaVZUZfgl-cOd&6&plq?P85w$PX((SJG%TTp}^twtvjwTlN z)Z~U24CW1xv}zm3q`(*oIx>&fp{!hQJUD^F>#YA@(%MteTIhr7|0u`{cxvOW#p4gh z(Zc^N_-y!JFsw@yo0?`+jv>(^65pO^%!mBWBpM)Zyf7y1PO*^mqLFSJZ>d z0af2|k<5f!5!hw|cJ(=vRLbRMN)(E0n&{#9q42xHebn1628{CJP_DE7Sw87AVPyb2 zWl|H*q~q#Lx=zz~Yx;#yL*^=GwFx$?c!OS?H2DhN{QA{yKNf}}U-$={O5q47mWRh~ z!Cd@i1bgB)6NY+gV%_3v0XOvck~r${8qTqXx79he75D7?&ar!h^;oAjr=1G>h{8B* zEqdvP=59@!6OXU>EO*7H*}h);dmS!o_>QMOU!K6p)lNH_oIy$cc_jTXCO*#msfj^X zXW&pC!=mmzTB^Ke(T}=e6AyN&Y~s68vLBObGL^d0gjc&QjjNoMTK9819q|h4cRt5~ z1W(?ER5#&oJ^r>~Xy^K6(Cv^+zvL~KLqmcgNpv5B@ak_ z-$b=+R^u4h6y6DD67pMh{5erafmO%6c6D@bU&j_>j~lZ0*&y&}$s1M$87UQj0@#V* zRjLC!`U;wYo$b|+HOnR0x2cxG-|sCRjI76Jz-!hXP;Z(N4{&zFM&J6+ljI#rKEu*x@v zB0H@9sfGl}<04>^1QK7byQx5{~L*5VVo{18EcE+HtAM~6ZUyIs{ zq*fl8FRid@ePt}#3m!P%VsxdLuFYoikFjz+gj~MH!(fvve1a7{N21-RgVE<&(YGL4 z4gXQkN_n?rKFUM#!d>erkiKq*^mR9-FW;mDzXL2%G0Scko<~7d~0SP0=Tb)0sTb){b121*{fZDv{ zajElbJVeIhQs;`A$nY^}-x$@tQD*yal0)W*0}t1R3IN8yRvQzY*l1ETL^MT1L{=K_ zK)@-zuZ^pU68g3%qk%2n&9G_9(@bmx|5n>scv!Dzoytj8x7aQ^`4c%7AK0yH# z2LX^2)y=|;wca&0ps+9pO!MlOJxi|bjv25Q!`Uq?1&aK*?k?RMs?nQI5FOZ>4M_`jSs$sMS1mzncOv?E*(jb@T{J627pwTh>U!0^8 zS!-O(Nb{}QnAu0(XrPbYAK5_EEeNvRMQew^{PyX|uCk+09gS(Fg};_vRotaKPvG#d!p<}sP!)VxE$8|Bh_|ptKoyiqYn`$1fVT;`+;cKZ~mJ!YcAYN zu&0Y1rxHfl6aI_@4SQluhuI^iKm2~kH33|S)^wOao2mv(9-p__IqybHE4dPVH6G+j z^a|X#^o-_BZCd2$P+4Q7adUW5r_c1y(;7*D8aCZ?=4O-sQ1fDzkjTxl~}!L-C$tih-~0NZxjxQhpy zs>Hz{rzY*eZgYfi=Nid~ za)h3<4co(NqM9>%El$nRWXqZ-^@?b_X{ko7>uIY7&6aK-637q9X{(iDJa%Mo+WIRJ z({>i-@qEe^T}<2X>MFZ`9NrT!@u-%t+Jyc~u{k({h}5kIE{`u3T=qkdic6SWodM8A z#rmt*I})*(h~=tBq`Nh^G~k8Ax|F#e|Ir8(lfvmzs|hSRo8wHt0VoL#4@DQHW#5BCfXw>AB)!a8GooSvRm zJmLx{8rAHZkLj4CJp01dt{rZfdA52wPQ2AnsLTgPueF)6%3iNJF}XM-I0$j{RZNgx`Q?0)G9TaS$+yaCxo(JMerze%#>P ztDaQ@UT37sE=8vQ4iS@#X*dHAlJ3fyE4;coxs}Ad?SMz_Z71!TxDbJ@W4{VPw36gG z{#t+89q@*_|d*f?)|AC@eOMW{)|5(ecm=_!yga@DpOW%v)N{Au_zw~V+b59 zY%=zOQet(9T)xh8t!1upiCh_-=UT{Io4+nwrQjN!c}_M}fl^P&#dn zUqBx^)22Yj{fl#e6{X|e!`#uFlNqBs1|cAxOzXeefIjpV=)>WU#i#EJM4nMg1y_14 zy1y6PYu+@0n%;2?_Zs+3B{hf=)9Sg!5my4g#{kXLU0g$FfzO87g)_4|DmQVkJ z2!d_{-cf!Wg)N15U+9zo+KeljQz>82=@^Q&?X-&Bfnusm)b-A9Py(iopMM*V8=t@d zk+L*?`e_w?^Y`)iawwQ_II^yAJ7th2^wv0ke@61+u!_Su>Upptg#^#OhEBqWFsrg` zwXy_}MR2wRNw^Wb4MC`fUhiqfLoD05SUs^GnlO{(^U-s#i+OSri}xT_Ga>3a(`?}y z%pyh;6f9LPLNp94$0G21*94q?@OW35nfDRqbuOOgc@sUtL%rv9AqUrGW`^mK;iY+= zcdQIMRffrChAWW)02i3AFYb>6dxwbVx^n$nI&i_Y#b-Qo&=~){ri&bejpqAOGkn<$ zmmyqR?|B7*Bkr1TF3CZz|I{tbPU{A>&hO7O5k>@Yk*Ss=T|btTY7DE7d**<5S;LO6 zQ9~|jc)*NUiHLSg8|7`gICe~!430q_i)EljIOYHmVKa_R_!MlyZ-<|!yWyncqf`Z? zrGIq%rhvSOTd|pVO0sd~T`{3uB=d)!CTKcX)O27QmmbF(av|RhEe4>hpV3$Ijxj>L zwCLSNYj{jsdTbON`9ZniTf(Ut&!rP1DBQA)1(5cdxp|6SoChWl8JmrlcoQzEX&KuC z`bOigUt|c|DA1x~A&KJRKSZQps^dkx~P0iaYG|NQk>|8-9;<|?*h%3-tY<7U?idN)B%Chlh$LJ;dGSbxIKPET69(v^7n%+yU zhtbE77A+&1W4*?B7k4=zLlc+se zC-}sw`f)jLRey~(aG!1JVyaja3N_(kH-l?wlXr%Hh$FcVeVi3D8C5GanI=eG)oVSF z3L4&O+yjCE#i8W^Y}Y4m18+9Y-J5~+^xYY_Xef<8#T@&fr&M)=S}2W}HTwc;0LoNP zHeiou_Qc#@Y9c|}H9x%JTL;brl!zc%O&Z4$xCScT5Ck=X6hSLHasRwuDZ5|{n(ZFRuds@Yj!v$NP?n9NwsnvZn z9yb}+QvImpy=qS3T8v6k4D!3FsOzD`Jg&VYJB}nT0;&Iu*vBl$ZXAUgZ5_;0Z*t|7IG~g+tCXyXHHMwW- zu1HyZx>FELAY8Ev8;2l&PF**`#X$Po!7+vL;yZI^jl^9&Ojf;r))5Z5;+QY+3UGJs z4A5;a*s-4lN)Mk5IPecls)0NrQIoUN!jnl*TqcBbr8GsY6`kprtArrQumX`Dx-VC_ zrsA-gUY;FyJ#ZQ*5I0Z!S_J+ZCXdMlAz|d(*!XDgHjy0J6bKY=7_UKUn=g%v_P-NG z$-yk=;yyKzp7AlcDJQiy4QT>Ti8X@MC-21mKnU)8m_3J1Fwj+ueS33nw>UCb zMaP6DcQ~IbEG868x)U6rt~D@h57<}vYd?a6C0N1T!s?v?@26VyY-kXm`hIg-uL;r2 z>y2ffWk6I0!!`Qh2`!kBXYz*J1Y;YX)iMR5km3TXxDKg*ovsh`9;_C`^uT0Xg7gV< z^@FvtU6Xf?j-GvTh29d-za9ocZt)ABebd+p12>K5$r-yUxbAKR*< zf)|2Ag^t_w8;zS0DQx(g8Ruy@M)TI~pAD8KID-~FQU}7u;hLDsPex~9F;D)?ZJ*l| zlT>HEgEWv}X9kjbADX%~`@Nq*@bNhV zKZ3v~LpKP8TgG5_$OY^~sc>iMMB?D( zh+_}{e)SK*VIMdn3od~RcNwR>i+ZECr(>Vj@)Q?6p6dSt4>;V5PRzpg4koKuZ))JD z5L=q2xa+OcDDm&)?7)oJCTr0S#-XQ~g}Y)CMC(oWvZ>*pt;#d}6%!PTvC=PnRs z#uwOf0JO8A0%Qo5((oOsZi@9OlaJk z!Guo4E@oIeIbe%13w1gdJ0UlA3x6LExu}<+(O{e9(sYY2V@rSzOtJSFH4tj-ii{0L z=11fPYl7#5+j<9whTDz}y25QI1#`n~mBAruO{Pz^W;KtVlSh$C{>n#_kM!|gwSRVQ z8cfjKn{@v$A?A%Vx#6iv zq0*F;CWAkL;F64mu9-|x>A%3uY_tWM(^qPG-{R4&&WlI4hVR0Wa1R`m>OWvVc(Q)! ze($!KgM3TUP|D}sHp}75*cR)SvE94P8Q5k(%1gtXPrAl7ZA<(D5^EZlR)6v6-Z&(f zc^WSA&4Ly$-6xld;&5vt9La%;YR#tDL=NkVD+n2Ii%=!V9A%ZEr#snxljAyB4@z zSh%AXrB~>iE5Mhq(S?J%XzyBM#hwiMV}EDHNhU1~NKjBsq(2v>eA7$O)h78|$GX(N zmN3S_d|sJ&YHltSFV)Z?D)p%{WX288|0%!E_TDAe;z#K-?>-Q zuR|P8oi)9XVLrF&aML$F7q~Ziv{Jr`Omhb!lTp<$Ej~8a6y&Qo3#%<@zCg)D34*ZE zBG>9mQR>L1S7XqM?phezWi4{IJA@T?lQE1}I+Ju~0k^@n==?TKKauOF?D8oo0+tRV zH#$JI8`VH)#P(kH;5sbgj+9JPWoXa?ph4G3gSHyK<{7cfo%@e8cP>8lD02tmqD4sP z6ekN*D;RXwdtW%9$HTMn-d7n`7U?e?XXFO-?S=4wwKJf>Us*nEB|h&kA-VuMoA_+jGtjv>vsVoO^wZ)SYa;38@r?r5`&MX= zh96YZ(#_X+7g|;mDdxyw7}0E>zQR)QLsTr&HiM>8RgfXem|uBgflnRQLtQKhkJ-!qai^ zQh>2=jXoRu5isGJy(C6{1|^}W!`LZaZRI_|%zOS%$lK4%+vg|b{i0B{;ltR`+py8h z`_fOy`!_T1eLo@Zug$#I{)D`zn0e3o33q1LXEd$pZeKLm8er=xj8__{Bs~P;Nu^W6whNThNjD)Q>Zj zr+JON_YnE-K$1%jzZ1fh;@cB0|N8%ZE95y%Iho9$rg z5rF_F^(f&lu5JyvLGsh^qOORS?WGum56ZmKAJ#!FKgW+q-Z-5=+o@MKu1!`umeu~; zs+OrotJY<&Hk;MX<5l!6v6O1R!S-M&2ZxomvC@{y5(s+-s&wPq7PGHRJzAxUP$JRS zKjEb@D)--0E1ktk(O;=_2`ddIEBys4onuwX)T34EwO4uuEB!4i{rK~gp7vm+*a%Cd z1}lvxsVj|@_OdEv>d`9Q0wsK+rz`N%_+PB_*3?QDK>S|{X-+C#&r0u0R{DFCGX7wg z=w<5BD!txb>1C|+K300LC8eh)vQqp>r95agT**p5#r!gcSe42#>=EaY?syR;5#JX` zA!t44Z(yTzBnqv{j<_ou8JPnjY|a8R1xyhsUknrwV@(hy*O42>`q~5sXaZ2<=1Z)B zGrRNkCuVn;{FA!VWlz3T%~*f3ttU4Ts-E+1zP%?GAfwfjjb@7KiARBGFhQ6-IUP(a z5E(iRv0_6&ezuLhd8E?nP0s1VK@mf(&M@^TopH56+bwN8_#!kHes2PYnXgHyWs}(6L#Cq54;n zVA)98ZS#{7oKkkddCD^5~!$9@*$R#UEKA62XAUi-#}G7zHv=5fr=SkS6kC) z&NaC*URNMUNUBgRXfQx@H?AVTfBHj0gncD+0dTFiYAHV?DOG%btaYEjzVp2}vGa}j zeRJ>3JqH*Hp2nvlJcTf~`byK*D{U2TDAZwubHrtS7JMq zILI?~JG_@%3H(x4rwDAy>QGkHy46u64q0emf-~kN_kxIssw$&tD=d$udT4sW)Bt!5 zp@58_l)y`sWW`H0lWX~-Otn$X9OTPG=EyU0T?B#3{EXO+A;ThMAh59Vr5s0&ckwDU z$6ei>_`>5F=e%c-1>Osp0!M!Tg*Q!yT^E@eP`^NS9&y(#$nD3?ClZrBPw3K@!4Ev1 z4O0`|cLDP$h+Yo;2#UpBAP@mBVB zj?Q2@gFc$dmiYu$XFB|Uq%S8N?(>-M5%XP|+&%6Z0*EM}?$%mY|8Plz;7p%ra<&(n zXootc9n`{hP&efyq1vw;rkMB?Hj&ei?2?=&d9OJDw1A2)^W<7;OB}Dw-7DxLwUW@G z=2NxF2{o2r++3jgzosOGbb3l*HlkJ!=S66S}4F8iG&pLdIM-a>$vOG^*o!MwEOkDNV* zHs4S!w^IbHO`RW?fh3NS&OMmUaPZuN-5I*@71&@d5|JgC ztvg=EG8W5*lX}NL@x;XJxd*9j3H6eh9C18?__+uF3A}{{RCrgY8>qb8`Z1ztH@`fN z+jJ=DY}hU_@f>`gCLA9a%8R?Ia;X)k^E00P>aXK_sE9#o4`;&@$Q>>@2jFq7mE#f~ zn$H)F7ZOiIHs3OQAser%pbIhZ;u@@z^f(B>hlz+|Eu0g6k2j{_Di_Lrgg1Y5Y#Tp^ z!&JUY!bUuR;463@x_&9HnS!T2XC*$12df0v5h?nDJmmcDIEZTcR=9%HFsC^s;;zRe zsnfGmoBdR~yPnhAYsWZ(P+=;k!r{*$4!I$6&i#BP@Zqfg1iu^;y3ITrf;7~uO^t5@ zDIABVk%;iOc}OV1x53k9jVXB#fwLitGPh;73U)?j@&$B1G}XXVo`ZtMzo-k6aoI+F z{>#u(w`}PF(M#bRqS6zXoRDCK3SYP%FTjXT=3`OCGxkHq?1Z zVl$E7g_;dTmOpswb_g(# zB5Rnu)ZWi_=|$wVwshzH=LwQcd8OqvyiqnDiS9Y;A4C)RcBZ`f%{R);&W1RciQo<2 zam8W?TE@{L5VQ&}ozU_Vh>qb@7C9bQIZ_C@fpH+IaLFn3I2b%pa!yk@6<1k$n~3FC z6VNPU>iPUMgqiQ+PVyBp-xb7brExLzOxWs$?`%ygbuIw6Y=3Jtg_KI`<3ZKZ13jfL zDfRC{T#{ZMQ#suETiMPp$=ZW#w) z;dpmv!(TxhV()}ls^bPXG~H<~x~`8Qi#48w3^m10XZaKQQI-c^OEBnE5}70b3`Qv9hM6WPsbcnB*%GHj&2=uluM2xE5{ympM5z#+1pc@ z10G9@o%Jg_ruHyX&v4d1(J?g!_Q&vVw-nyEG{KhM-9+?&-DcX!s) zN&!nTq+Jf{wb>w?LPT{jM89I;zL~8Nupy zDV1i*$lyioQqDC~&I=A_ij5QoF~u5^U>~e2=5TDyBFA@C-%X*Y*(hCsg_^t;qeBq3 zQGI*Q(FSI*1<%mb;!W1!}oVNFi$P#b|HGDk#K(iXZ}eg7!>_K$uR{Ck(~8o zFuolNWRv;2T#B55Ue0{M->9{bn^}$eHzt20x}MNnI60p?ns;s&3KcYa^oB1 z^bc(%r^hvs@ZGHtY@b6aHDfzvIf51B?hIZbbGWBrje6IL+=$4Qa01W*0-9h46ucz` z$R8DuU3b`lG$1nOQ%!k*5PGLTI5h=Am4fg{3WPC;1dfmR1%Og9pM}aT=@8#$3!@k7 zSHVW;kMTosm`G%k-`#^};4_R30ai9+7Y;DZy?8o!x@>ljLA}IT0cF|beUnagso0Z1 ztM$E{07I)9oTN0W&iX?bRO|r(Q+5$w;dSX-Kychu-^~&oC{ETON8B}C;-C!ub0U%A zfs$*&h--Nk0FvTYmieZ{FJX12+S1uTlPvg)NdRIkN^f~S;-nGM%^%aH9lpk!G1AO* zvovKNqLZ24QklxvtpHHyHP*+M-Xz)9G9gm(JY?3mtN8Gtc*OBEo+-@c^K&eaXrnp5 zLky_v=Rmgl8f6+XLMFZqhq^7hP_2oQ+f*&)Kq!>lByl+xAuFuGARHij+;u+zgolnq zY+4H`KXQ(rI>Bg830xmzhMbF_qtqjFLC4&XaphbHo{}U$;QcM=WYN+*eB0QZ2Z&sW zNHF7*L6uNDz4$Ws9=PTz*gFNyQ^aXkgHxuqK2ktCaZ$IEMB3|w)yMog^N%K%#=_Nk z=u^op-?L9!(XH$7l;~ELvi0>xUX*LPDo2SuhaX03Qts5$*n+}+h3Le|umrAX_*k6* z@Uuc6o1Yc>0vIjV->uL+_=b+KA|;dc2IEHF_Ly;rR@D(>EJmBr}L_#Q5om^$j~59L1k}{`AMq$Ivw9 z+QD3JBUh}JuM7FQk*`1#R89koYd3rZgiVz=YF!bfgjmvGWx(=5Rqp7KBC z7p{NH0io#|5F`eldgy4*#VSQJQ_S_C3gb#GYxEb;&(y11#6v&{3*<=EKjd`X@p;dz zG+a#GaNsrAyfYIesYtf&c+HW8-A3pp*m^gvA$lim;B;BwX+nm^M;S8?F^c9>-D9Mp z2nQh8NG82sIPZ@`yiB0H1y+3g$ak`$Z`Ru?dX5!+fSCVIMSn=C=w7^WfuwpY(W`sx zmA%Qzf{2k%BgTWb0JGnID>(lGfeq(wE@bY;zp}s>0fBQS%a4a{-W2~1dQfS$t@pEY z6Fnz8s8Zj7sXBspkHi+#j>2V74JH7|cW(p5zs$8E@ws(2BtFJwK8l$C4iYa(scH<~ zBByKmxj>OPGJ6u(#KH)lX6j31_u*aB-$xFMV^kVV_VMDxlVBIYGI&D_l_rL4$6D6#q7Wh{|Ksf4s}iZmcby!(wk#o` zI!bXL?-d*hH*+UjV4Sd1aRpdT8y~K=&vN@9B`KKoLtT-qZ7FN3L~UiHrT?(^`(l-x z7%#BrsHDg^4O+bUa-G5|x5Wrql_|waaxiUTqBTh)`2ZdSQRGbfMyRh2fsOj$as{kM zQQw+1#0Cxk6V$iGn7OqR!b|oEUGib&!crEznJXI4My`PSU)AI-#>Q19UP{|d-S#>p zwe#QA}?|tSP3@HD5V%zKl3cA6bSEOmVHd4KoJx!~HhriS@<4i)C6J z()h)`=#{w~g?yuOB`3<25a>y(qw(g4@p;1aDAq$bAe}XwGi6pk{5pci#!m2kx27kK z0{|aS-JJCws;6{k{Z93Sj~me?4$hiN(Hop)&G7gkl4z2c@UCsRQz)} zCsW2Mto`7j^ebqOkF7*JCsi{3E#}|BcrNkD_*WVKGUMl@#J|G$zal<1C7F3GBY(@t zD`*8|R{1((r!%(H7Q2kGH!$|}_OSuR_P52p%)I9!maa}pDM8aIqL9R*??@7DI32tf z?E?yB%F<7P-P_{nkWx66-8@%h2LqGg>|7lbEDc()CIOZYm-P5Kz^BFh|3x{jwq%!W z+raF6jWpUp8x@(R}dI`pdF4KgUElY$VH625;lX#Fo;pG z*C@hsZ}Yi877E5<`N?_CjK!gJ&Oh*s&C(PEy6bxWt~Un2W(uvjA8)?m+EzF@R%+u} z-;j+uZnfh3EPYcrEVkm4kyJe5G02_H`XA9t)G~dqp!zlh2~@+CzsZ$RW-Q8JVl|$H z4#U0@Z~D&0Gv(zOzO3i`#M01=%a=5tJaI4bM;ryHgvU~J3`0LO(FyRw5@vyIuwd+m z)VM1XS)&tfF}A%*T<)ZMv&*3${qhj*Hm;xBB3tycK z6@U@rnVqqd~HcztMA=xsK4JSf(A_}V7r5Tvh zvg@q;`cNFxpbGvZXx}o4TvcmqBqMqjj&%ZHCR$nX0+hs4$5KmFD_Cr!azhJP&j6OW zL@I}_h+kf;2~3x z7i^~k+i}+~RDNG0)Doh`P`Zu@h%O#ciZhVlsj!7c2m=mC>^aZk(XTsBM}WET6ax%e z7$>3tIkb4h8mQQUxM#Y_m;$VWj7-fe+lA)96H61h*BsOa?u9F1UHP01AM6%7sRAca zgO~86zQ$Kv+AY-6H@CWXeD{HPth;Znn-7IeruY-k-=)0sLO0+ZV=M-H<&mqi%Og{A z%OkhvfqVU~1=FJtrU-ECgKUNSV5+nb4dGExD`rr6R0k2qjo*NUKqNYy*+uwq>BQH9#tnQeG+*6~8~N(ND;7SsYd_k= zb;fi=RJc7_aT@#(wUXGdWNOg`o+9)EABLY~ta+9mcfGNcqHMm#0;4jL(63HW#?vmD6B0tM|xs5%= zAW+KcY{^u2j-giz(Zpd=4%QXNAXqV(i)Y5_a9dBG(~spd3$fuL=<`P7p>;U4c6}Rn zKxy;3v%U%T1M+ZLw)yZOlyVYNhowdyPQs*=hvU&~JOuksaf z5~+^65!i^d5-GJR<@(f=Dk^3-VMsU8=lKozbmG^~YX@E{AEqn}Tq_a9VXHJeuPC!j zWISgXWA(!+d3hOt=bb+;i<7TbqXTFVcQUxO-yK{QHAyXtJJ#|nc1H1N9{RqMIH zCXn-aFLV5r&LBC!Dg29=q&6^_jPVDV+Qy%682=B|_#?25e=WyfrCghuBEC5-7O?%= zj^mFgj(@E&1g%euKVv%`qdMbztkM{x=~geHcHV4cqLN6#4nSmt{s-zA+feyvh)7Gi4bjyPc0AgEt+%w2ZF>x1PLV8d*;ZnNKz}V?h(WAu4g2@$;9Gi0;OOPJ2(N#)ZfVL@&a#Vld{h2N3PY z?6MHO|LP7ket@V%jcxz2YV5kI*O8}-s%Rc5h-RDG(Q7+I3!>U1`gKgaB%;^y4eS5= zg6QiJ*bw~!Yk>b>mFQ1RT!KV9qW=RU#FRBZ>iP@q5}{`y93wr^?dUm=h{0k<5kdL- zG~RrXOT-hNCaK?400YbKgDNa6|F&awciXFb05DYEPO;3^8^7$Lo;y&FpqROijAB7i zdlcV>d6-1;WWGgn9PbH=55H?eF?LEwi6IJN*~h6V`F7-1UDW}(Wr!l@bsJCp+v;lc zoC_J-Nsp-nosE24d7*HixD13wAwOCOE$LXr>4_@*i7L8)eKInDs~1=+uYfb4T#=65#JS8u*(`@Yb3n;JLpw!MiF6 ztD}Xj+Zc8<&^=AiASqCRiFcO`w4*D~+x~eJq&$xdM2aQtN~?LB+G_REE4yfQ=xCrX zGeLu`C0ot!`C6cF?F#gOqk;bZ1=VUx%9U1U0<W)k~0(yHj!p=4)9N(Vdp5Wu++6c=y>KJ1zMQbz5=I-=KKwT zQT!EmnSW9-^BI_W$vJq2^6@=03fuxaH>e>Om=V-cE-|0o&`913qcUh7pGA}}JRKGv zeUdFQ-j^0dY-tI#WHZvjC4G@3s-rXU0JYI65;)?mY^lqQH*}3EB}2o-WS;w5mqpm# z?9P05!sii=tG>py1M%I7<1oO0>(Q=#ci!?At8v_bK)D{JbDLD(o!cQ-w)fqcf!S9F z)eH2274Y+MNvq~Pko4hcE^qMR3H64XUuB?{a+A^g9F=>xX#v%q*sCPncQ*6eNTyG- zRF6*ZBL5-I-vatA+3meJtxtM!YEoXD^2Li&M0s&qQ66qfcyTHc3bDL6O#n^f-tp2!t~-a$L7W9BAlVXi_-*5#Fl*1i_W za7ks8@z*DD^jQx6mks|;*~S9AmH`2|{>atH_e*ymaw|G^YMK_mC|BcWilNVgzp*0v z8@oV@%*v)eT@z!<;Zp)@mXGVVHN6M@St(&XSA2(tZ60&z>&VQKC61Vo#qLi{=&7T9 zpa!$E@X!;W!sFC&;&8$k{a_kD_F2D)+>tjFbK0OtH{L=t?Z{u0Xvcohu@C-)0j%Oi z(7P4-mcgkCN6flo2UE~bD54O*K2A?ntF*}AmsNZST5h?C*o7Gk6iUydros)ztKgn6 zDRE-L#PPBEsFrTr`Uh}X$4yW%l0Gd!U6@cUVV>Ac(0m)ima}UxAd0#!11Px;W1IwF z^DP+mo4rXD8g;rn*eqpVy7q0w3fB zN9_=1aSj4mAn5Fv&dYF^TLfNyqo-7UaSDv*O8Kqg8F4i^wibRu#9{QSWXI?1aXbh| zecgHLK%!8>GVx&1Xk?ib;ML3`sK_mGdix0kHUo#vp|i-Li;NfZxrVm83!AcnO1E2P zVzkkX(01v@FA>;8er|4fub>DQrD=z82=DkN1;!0;$`EC@WWj8_5Fd9$&)r&aRc`P& zO|OEN!Cj^zWg3;GNH|G#>F!K7b(pJaNMam1_N&$`0j@2 z2C`ouRZ#G-U)}{`!Dvjy0MO16IP26DDaIzIFso^=sILLx)$ub;*H|l==#$k-Ce~^~ zezaC|E`A&1P(0%An8!kbA(Eh;^Elplg*nHZE0GcRBc=w9gPpK@ef?0p2DYD2PJB-OsxZWtG00OUTk z)tE;;jIt3dUyUJykPYAe-YU&FfFRKfb;Vc6PXAW(9&*;74;lrc@c3X8&l34zB3S`0 z)b#gEqN}xt&ih^mqC=a7l97~3b1D{}he$S-QKY$t5h|KvjPbj{Vm^1A=6%mu&npZG zx@);d-c$*m!A=3?{d$a0-bXk&Pwe!&xmn6In>_wMIA30z^A7ZD-W4HeCUbUC>F(VW zJQY=>tPD9TB*oUs!OtT`jGvh|F~xF;p@tpcRu;_;gLEx4%igr7*>;B_LbJ0xoziUT zrFWXxsvFs)-Q*|#nl;|n)hLA}EQ!K+io7i*FKB9P<(9zG?VK=^e-W=FIB0Jk-y(tOcC5B04K0y!KGbtv~?WMUeHuSh`*w z=-?O@Bk@hNAAz%Qd~R<=FpJ<~KUd#kg5yD-{+iGG)vPPZ^~1h@&GChs<-4*H80{0Dd5-Z>ivSiE#S_{-Qt^`c4XUyjJ6n)}q%HY2wR#*d=Xx z`F`K9&Am3x>_t}y==br9RKMZ=$lKza*T$N?x1!&)_x49_Z7rXSeCT+jccsV-ke5>{ zd}s>~^?|k3p>n$ZPke9jI4r?%*_=>9s1GjAI3AyCo84bNw74OG(iWmwb#5R#SML2W zco*0wFn7lQeG~je!>Q;}H!{^kfTiniOE0ORdL9P!NBN#`H-h@f5*?W>IF?O{6ZUJD zZI&s+GfHvh;V<3Un`?u^#o|c9cEDLr+E$`f{*gp0?!#YLFJ1jRf&?3-QV~MeLTOV6 zp^MQe;$?ERcGEoon#3%|19U$XbsaYj>lud4Eo1dIm?<_I6@<^h>O`oMF|>DF4J+B$ zd=yA{Qe!@21S)~-bY-fgzg?~ZvA`|x1}=}XD=?R#7(`_?q;kh(2%Amt#*}|Sa46Xf z8?5>!9IXEsDOrK%Se9PWh!8%boYIYZXTa120@7!Fgov4;9*kCH_U-c6l499)m0ZH5pF*vBlj&+6hf1y+4i+|=|n zEnkC3y4q|ozB&!-Wv#X4SP0yJ!fe7fW4fS&(&d0n12~HoYWlG-S67l}PoygHEI1N* z7Jxkat`&UrM3BG-WzPQw`Jk9;kr2*)7{Gu!@5J}3NuBvZonCMfP^XXGcMEBrVCyni zdrE(?aj~R6lPHnH_!9shl_Cr5fIx>FKXunBF{3}i*1Wz6eg>^^zu}J@ca_&Z=Jze2 zzy?vQ)c9tAMUb8Eu`%o-e%ba7qWiFEisYk>r9$AP#>FsEf-Ja=`j?5{$+PL6pbL!x z)eqR2C&^v;7;XF)ev2jep`Dwr^(rAAu6lmjCPe zIonDpPs05;5Qs&ylKPk%Jym8SKHZgUgxeTpHNs7l78t|vuB0Qj15vfcRjMUWzNxF4 zb2$+tW#n@*W+%h!5VSQETS@VrZ!EqSHA{}i9_AoYZwF0QEoF&K4@j?Zck+l9yx_N1S1~=g`4SP-?Q@-2; z-adHjJB~D5g#t&S#b1HB^d%VvT4pDDwiMG55Q>aU;SMzMg0?O3h3jV6%)ZM#?cBW! ziDC1EnxjZ#JAPP6T(K3v>~0SJ?#17H{5>2k>j^=;3XhBM_X7Tw;I9dP>wS?iAm+h; zf_@#_pwPhb==ep(E5`|XINJZhBeY^~lQm)oxSsVUyD(2hVB2il{4o!Ass)LKi7`eH zCMjAmHpQVq9QkVF%4978Rm<(D1rri@E#MZB`&8>YPk;Lhq#m|_lClQlMQ++oPAc9Bp4KdO>I)sQNbqdFt4UZyO{ZZST7%w!+n-S&HV?RJ#9Dr(mTaD)1DPF<`Y zZflp?@VLyHO53{M4w4}KLx@Gf8w-rL@TjzQ;Gs?I#@y8l5!m*krVdZ8{mtDgxCPNM zFNrQ77yafe7X;pkfC#j%cjGP}op)99r-O9$@Z8z{QkNZqk=t(jTV< z<@kVPs``$J<=!nx8e1m$)tKVg54>ic#2C4-c?lGwt`Pi)lE%L2Z%%Z6aNTs=O~2i1 zZO8gbg~zX^1avI&%vs_6)LDN4Vqi7P3#IhzSy_&oVi?stv?fqom&>naR^^s^-)}eS zl8&xcHEL*@G5c=XhT>zhYlHYCXB~9)j%!P?#74RYBGd2{@oD&qI6ufR4O^vY1?$EZ z5heIwVK%l!s_uHv$RIClF zk9ruDkSfu8K`bMU#W-3F6sy{t^)S%|u2fqpaGS3F0#mdvO>4|UG2_0w{ttU^0$){i z?tdqQKp5hQ!%-B6V~rXOY80i32QeaTk zm)hIb+uGJn0**`)lu>P+5T&)%9giqhMNr|q-``q$pCJt1d*A!MpZEX%%jZMR+H0@9 z#%De2nbz}Y(3_$d`z}{CNaT-7v=fyiReJuZ8vFpxx^Yh#z^UgayYt3YV5F=tM6uFM ziLuN96IriYzW$ZHyJ@=FSvJ8LW$C5b-O)=JaD7v5|Do6m$(90Y1B_eKk{Vl)C0S}* zm#Ks7sneGbh?d5ym}4#xj%Gd#B#kXAc{b2}43AM~fEVa+b*7?sxXBq?AqlGIMlV(R z7y?Mq{-@~Yj0*Q;uwjey?P0{9sNs&pOlHYB)0_vy4iQ!2#SZzpA3H>O)r*kDlwE(A z4IlE%Qi)EacnWk~r3G-#MDz&e8CT_p5D9cm(S~I+n%S z!<+o6U@Bd&N}gFm*vYbJB7`<+T*ySrfP*m6Yx>h5`X*v$7EV@nj^c<^^X5lu*^Laq zkZxwPu{iDqJhF@_-Z)(?jDTE#F|BlH=-yS*mvYlB|L+t31Em@IUTD=F7&G zx|>3QE_{ChR5z7P&{OwaJVlsGzK)l|Xs7?vD{{;dvm)&EK-VTyrwQuPY=XK>aNe8{ zelyVZimCp*KH*#fNapXsIF?mjz@W-AOEhIZx6^j~7NsvlQvZk3>F3rxF z6kKiBrKCAIkd{F>9v}BEHo|)WPCPby&uiXt0CdT{> z@qJPJVsQ}4*4Z3|JY@)8hK}dmkfP_nG`=@%SCr_o-p7OwKtzSwE9JDC{K;Y~rvi^O z?Ro!PeuuWl7L^H+dr*HV8Y~vuTe{9~K~b+1~mC(c(*4IAkDJ z=|IHzPgEP!cVL}DdJ1Zv_v(Six#~ zf`^ccw^i^Th#(|HP~+C}tQedik51-D!MS3G=?`(a^AJ*JK0gaW>eS7Bi_<#YD7^xi zsLld@r;pZ`NZwEujNDo*V7>yZOg3zGPIPVDHk*Ov`EJgS*fzntUEkY`HPr_o8x$Kv zK#L*~yyzy5nfbs!C6HrzHCY>7Wk{hH*+(>N8K)0wLqfGQ+sMDR!_F{&0GQDQNi31Dg z*4c?&ijZbyU|zMj+D<#OpZYWVu-=)O-OIcD-|0SVHWg(%l2wuLr_h{m ze#efcV}QCR?(t0sBIsjrjNsc47|`r2kSQ^e!nqGLBU#|M6lk_2k8_r#o9yhC8IcvR zZ7L{Szunhi0nr2TK2}&p-qV~MUp5h$kEa6;SqZtfB4I<*->1IT~C>;N6}7x1CDHK?aKWcnNYC~a`0E7=Wh>BxdTZWRVb+9Oju_K#|C zFZvQY+jY@8IIF;YNdAOFCY$x=R5lIwMFE8?;o|^9*Uk%LL%H6htB ztWZx5AHhx6EyO^E8f+%W9SoL&vRWMiPhqnY0KL-JtZsYv=4Ei?mMXr2{Uw>Et5MFG(XS7VRGcaM&p9o#sg3%>> zAUk+`YD96fvyd)Ft9#B&^>2;7u%&u=q{uZ<;JGQpNVig9CLEp(t}hq>q;DrsBz zJs(1%&NeL^BEnkW2}nuzbDsAX@2UyRA7aiMntOl1X0`0myD1Qu#T9Ruq~VlaFv(K6 z{aKbP@I1J|2UjEY%_{BK}&vwZ}HZLhwyKCG(e@kMep54_U%b2q&z9Kwns`Tv<5Pr#$ z`prG2>J{!Srs|z^Z-@BEcHW4$ZX-jqgje}8>VB{!D|LZ8fGF5IcRzpvKwDqzg*1Pu z*?A5=n~59XuIN(n#KK`=%&!Jcuha6L=moG%?K8Y1IRcxF0MHK=<*vp#t{t~OoAsIr zqaLtJ-KCcD*V?QwmdzD>xb?;ck8HbM;w;5e9S^nrTnxNx39U&gCh%EXlciq?X{P?f88}P~R@9<5DNLdEET#raJ!V6|J zvCICW9QOMEAG_=S6~Fz8{#WMpA35faj}`TmFu-D+0Y+FY)pn1*ii>9DlKx|&P)a!QUwMULwicEXOpoxFhfin zeg$cQSibcHcPvg?&tGucOx`6+|HOl!rCkx@xp#na!<|b#jUqG}lLyULVT2CJ(%;!s zXR`DWTfv>Cf}ik^ID9UDxf=0({qT?Kg=vzd-_hGK@BM=8cmS_xv3&^yOSPAguSfcJ zzP=IdAj9Qd7z1Q!pL&ZOpic92T~TLg{@I?3LKJ2Eh6+ly5kmL#7Uv_Zds>onTUls+ z+U!re{h4fkrt%X>T~s+Z`2f>EF&G)jZlNB2a1W}VGW%1(Px66bUa?x0t@mzMmrwc? zGkH4FnF--fVr9+FD;SMsURG=}otyf7)cc+9{Vw!=m-CDEV6FF9CJaY$xyaG4gl+nj zu0y|)x>LM{A5m2*?!ITaGS7GxyU(ZT%+-6!6zibR7qBENaC|WEU?H`^{>(^H-O`GjHCixhmz}*K1@*_O;t}4 z0$EjErKOu6q)1Fd0uH8;k_*UBZP4)J12S_ib)XyKLvs z?9HJ$Dvo9r5^_8;pK(wXO4>~DsehN6YH4gZ2c6NEn32n20DY=;SKlH+97>|qaJqS- zL*}!PqhO?laf_6dERmd?XAm-`Zy7X8pNI`+s(Swpn3|NY?0Y~m52tkFJa+!L`mDsR z)4kzRm@HEx;$5#sNC#VEi(}Q56TkEI6rclHcl8v~2D$y%Mcn8<{A0J*fn$*m z(AW1LzHm5J1%Z1PVsjFRWR^517M5YFIsKVNXI*1>U7-73>QFQk>>3US++eoukN8yl2a>HPd_8hx7pZ ztF5}9sohN5P-t~yy^1yvJb;p3)$X6GHakR9TW*Mf?w`p_nqivH8DuY)5dpHXKuqwa z?1*mumWN=f3gi|4)5H278PT7#JM%}hgbce{FV18bHrYdRrBiz1@9mj$0K<(Q%9-QM z`6~AxoaeoF@~Qi``^7Mp#0Dp}^pBM$wv@)d9dX{UC2a)Mv9Xe(G5uJr_^3$9`iQP@ zP~XE}vuD`D)Z~;t|2x|fylU`RCRV50-D;zfHZbaq?S*|a@BZq&8}Lnwf;%z%4Rqa2 zv^@+oEl-vYGwDxaRT!P9j=eS|8lZw9-q}(nKo9MH8R!Z8w7obU$P|lO0&^ceCU9 z@okL94((q_da&atm!sn|FpWYf6VeL=)5(GHcXHguGqs>gV+V7g_D^Im6RQLYSZOm_w;%G>5-@x6#+J*jqQP3*Ff#$Q-To-Vlt8Q81Cj}s09q$aAv>A^Z_sad zl%)m0(wf$@fYipiZ&pTc8{O=D8Flsv6khBTeSmz?N_Wcu-e{tyEQ}`gRv0$wNHb1; z@Z0+D2rM9$;HxonRMkT=!Jm1VKD8*C2?Jb6IiI%{dG0NM9to0G5S z;sscFBf#1!{siLWA5Q7rMD^h?3Zgr`oP&wDZ#~7-Q`DR0j~s64gnf%NOK|xQm<*@% zLVgO5_425F6Y<`7c0&*=tKD8i4p;+i{xRR8pu7`EEU&U2-k+O7*{p~6 zCwTJxHP_k`lKQqTp$z=fJi|fzMAXFT=3Lmp2r#z*qTvcrY=N1fQ#$k48l5qq?Bgll zzkim!!!zss4PX}O2RpX|^r)^w%*(XzQ^82%6>lxCQCpZx$-OuStI{h3Y)6*bg0+qI?Lpq=6A@W&L|_welsWRpcH|uz`Tz8&Z#IX%x9NM4bRzpI zJsxZwwYsyZ?!#9JRIRyfjr%fa-t>R!?)ndjIa7NO1VK39-+fQw4LpM`i%-$e>v#B+ z_Ps8cx@*6xz)qIW_3s;uX-SQlc`zX;x=ddlt_XCkQJ+%5OUM;kdW6SJa45YK z0CfGrzHKac`@sX=+u6KjYR3LlV=<-@lid_Mo)zvgHF;Ci>fWT>?1cRks@x39Fl4)1 zzR5d`x)2*+0E3)8*#1g$Fsv0{0}bhiXeg-br5rim|Z3P8OVL{sP{$J z9d_0#I32uM!}b;qx$msCxe?`NXYE=;Hv=neJ4{L+SZUv(zz(yv%KhYeA!;8e!6pOg zpccIwrxo;!oQ?k~x0L_SK<7?$qTc}f(cJ7xpK?4D)rOq4R0w;=!x6cZ zXNzP=K5Q-9Sy~ULV|_Qdf75v#FoIGUCRpyvUrnyHd=K@Bm(a?(gO3Pljv9+Ju4$s`&4XF|M1NPO zZ|P6?$vb)_g_vXCB=g@`=23f4Or)hd{0W?WGda$am2>H!F)06xgp?=#MQji?e1a4nO(fADcPa+gZ$d#583{qUfqB$rFO$KVydmhX8*4QqX&tlm~*kfUOp6z2WY@!DU_1Plh{33aV zt4s;N@O~B;I+-nC+Um@GdViA1G+=5CQE95Lkj$eAZA+(B*b;e==bufxE|As6wnr{D z9w~ecQJ%RHK$EBZak$CQ34NrYg|%5gcX}saQ#3HM_rwWy0`R z4n%(Jt)cHd#QIJU_kOBOHdy%vtvmt-r=cpd9AU{#1A7{(;M9uh#*c^%O-!pPj#nq9 zjp!dgT>jK2vtY7d7+>LD`yXbx_ULIC!5LW8(_p;MH4dS3R^)(;y2Q{J!aeGaF?S1e zL!f3ICVXx;A9`?cJ!b3<(C<8@Z$LzdNDGJ>s{T$UxVT>`N^QCz*M*!X0)o!eB2T(NgU` z;=j>%hA^sd2sOMp%)U9W@C`c$Glc~&?9IV=-6g7m-L&9EJzlOy&Wn0K#189Q;|_z2 z5M5R42d%DgOO>T+G@P!B4Dy`lI=iwyR6((8yMAvOhF!fs2P}+{bl&USuA0vr6{S&7 zdraehf3Y<3$+9^yNvZR|Seo)~H5o>no z4DJmRL!y~;LEyGnucY&xT{)AUxiikUt88&`w}r_cdfy`;nQaE(c3q$|uUVEm!O(i~ z30~y$rc|u5xVd_@34iVtUV-!(+%)@#;3hn3+OMAHB+h=-=Y#L_fnV+yyD4`)QOE0sA%b>!Sb5#reId2~ zRVB>UEya;F2f zfLH=x^4A+hht%S{ooWbjv2_^6fGx?BTave6z;_GBBfe|yx<{5?SmE`=N67C;Gad{N z%qhjn^$do$%BPm(tq@DSGsGU619)nMxyRoe{w&aSgt$Wl_@t#k?I9wiDR&7CjgpmL z|4qfy;0I;e;fx>FSaY+MyaRFB~apM#ix5%rQ0ypl@{VVLYo2y@LbQa##e{fB4v}8?7bx-_bMwAJTW)5Ua z+2Z`gSp-lul$9(}5cd*ex|YF67a<-i6r0|A7Fa&wd}gVbzD3fP?D|#1u3uH{`c=8* zNPG8&*ygz{~zH0Tu6|) z2}7KGkDu&mXk!=hGGSj%_g;F8%UXKctV=~xD|9d!^NxQZ4{}dwV{ahuIk(xZ@@1A; zLF$FNw7!qU1>(!`G$19aObdnVL&#zIFWTmjFbplqq}Tx#KkbY^pw;;8;s?|-pC6cr zN{>j3!8`Waj?M5M_|I{GCJu-wEd{zRL9A>UmP^iJILbOzS@t^At5oEkbhbT@%tQZk zq#0ia2{Cw!cCl5t5a2748eh`!@y}xenuf1y8opkpEZws}6)jQ(1-caK)3&p@)oUlN zEZdGc?5>(<+c6Ih(rCo_vf25>A5f#_tSP+owuuCfLYs!E!y;qI+7w<%tP`4QcKU-I zU&^y}*dyxOIi zt(&sE45WUmVNCi^I_}ytQk5>hQ~NAlJMm{`0YNB?h$^*w0+0$$(nvJuc6VbPyPjPd zNNofosU~QoeKr;9#XQY+j${;}2Zc5CW2wFl@N5E=W@r1>3@ypZk2$*Px%*0AyZ)Uf zt6$-vWzzEIMSm$VO`V<^>b9gJWzk75Mi>3H#2r{K)V0(zGyWMpGSlo`dc{x+R_?S|ZRR0^!}>KZ_riuMlH6OrVBWY_0`ZX+54Fg$Kp$D&_zh;Yl zfYi?HH|Yv`9qtlXWcm<-15f>Xze$>#EwfG1*i+BS6}T~1U`nn)yOQ?Q!;f?E0u%}h zi8nrT8&L?I_tTg2XM)4s^x%bz%j$s38)0mlvoHD)c+I}}q=6ST*%!&|i*V5WcCYm+QAlX@DP<-U%UTo^S^EdAB?n0PfE5pz0FCd2D%+^JVEaa(^ExC z2ac~8hL~$|KC|zJdhalv7U`}|*%u#k%P4zFWtp(`g}I%!Y)@gX$KU<7Ft^>7{Xt=F ztIh2$%x$x|*B0hZwYldP=1#V`4TZV&Huo4WH#L>v{lQ~XtRF|8Q)!k-P3qcWT{qct zQ}JYI){BHWz0yp|qnZ>@?Ob!d%r?*N??2)2fbi=6yV=&k!%BQxhwqFrB7k$YeyBiV0gaV25PP%I( zAiL|Xr~LZLiadU7SKVp$_?ClgTiUow<3q){Kynq!Ky89$TyB;dp%m0QARs{5-|)$g zi_kWbam_3_7M2H3w4(F(QK1GkCMP z%M_>xbl+z>cW>o%m8U6*9^47yPi0}H-f3ctK*FH>)&9hotljs*>KgL7=z@LzuvfWl z#8cb-$TeF%eu$d2gTT-;dX3%9#=f$bi9qJ-_b%A*slhF4kGHtRRwqn!0K;Ha#$RPt zrIDY!Rar>u*@f4GUHH={dJAu|b~`>7H|F= z0xj_7Cp8Fm;6%C4hFvwN(LH6f9qn56ybmTF~y4WqK& zEWUTAvfVuwR@US{>*cp=Zldnu59_(!dv;CZU7lH|XF|YxSyyU}FpKo` z>K*jN=(at3O4aP1WimIZWUES6D08&Qd{vpO^K5h3*FDl?Zc%2NGNqAs_abvw>g{^B z_7<~(M*Y+nX!EAxe*~y(x{89!kSg6ceGQ*t1f@1mIIsRTH#h zyS?^|c^3?@OfhW)uYcva8ARz_d(OAQYmYh&!{iMyzHf`u5TYaNKa|b|ZSWsBL(->u zxjlaFkH{r&7$ukZd3TXF!8s%%_jA}sa^Z=~1nx>`*Eu^g%u~m@G3v_N?>y1Jhe>`$TY7bAhDjg3y} z5FVOPBbFpql{w`bJ9+h-9&mfwzf!v9$O33@D#9W0o*W}6sIqQ@HyhH(m}bZt&oj+< z&;*Q$5Nmy?}LNA7i2@n7Nv7GpjG(B1GxKFCOYej0^Mf)wnm;}N{h_pOnd!~ z2|5(XGLe+neEX$3i<8qvG?skkuQ-8z`lY`;a$#iF7yTGB`o=)xqGZE})Xm!(Q&((H zw`6NshaICav*}yGwZ-WpY_pBYDI>Dwe@XdB>eftNV@~ONH`*CoN+)-)`7j`IkGlWr zHW4v^4{!xgL=CfNskPaLesY`sq=SA7P{Zv4Cc;#PgFBKfIa62+HG0>RRZ!1NTF~LB zUw7L}rXKI}->PixbH4sJa-87abQ@3)@#B;a=C6h6bYos8JLx2Pc0)$EKP#yA0$Z(T z{n9(0N2@yhHqw=qb|?8;$lE-LF~5$3m18B5A-%?ToZU?(@L-^8D?p=tw9Z3wZ}J>< zZm5Vl!)4jjCWBb!jaZ_dEAqPAssi0_u>0z68xiCF|1~3GgB$D47!m01(Ux4tM<>eW zxJEX|Y%5I4Cr%gCxMpJny59%n6Jrigp90-)nTJ{5)I-;c<^f|7Jy2D0ftO1>w2vws*d|SCWB_bvRlr3H5<$7g3&ELGjTqqz|_XVqgE_diit)z_I zJ(l1|h~K{U?ya(SKZW(s)xlN(3J`^6TChenJb!|=YwQ@Kt2dOCxPhU=HJy;xX&kmd zLN8dWvOl7%$u+)4Cm4A}#JJOqL>5#EsGOHZK1Uq34&4bG5U&Pbz23WxAf;cp&mW3) z@v8oPrg#&y7gL=0`xjs3B|=?;!!Q)D)vravdf+)heX`p<{_SvO!^$((};hxCj!2)QwNO^q3A?=PvrBIB`D zV8!iv|r?K3e|5GW4?V9ag@)~YsWUE@>ni6NI z#OUO0Rmt0GOrv#UN5lcPbD=KSd)J~ID1OpTc6I}VY4CDku;YAn)EvRR&!NokgRy*O&-1YQ!DlCus<3~!@dqbzp_b`#6Yjw zL}z1Btf8P+a8oi9&b%p$V>TdCk#WNAr{SKi}h2EA(>zv4l-)xXB^ zUGwr%aBIOe4(m49u3f{3_yFDBz&l0Vlo9bp(j~D|64OpBiq+z7W|+Gl*W~C6W^#sn zJe$T1dE$-*FQoVJvVZ0GiOijnkLpx6wlZ1r@kqoL*ozG1pnNX23!D=N$- z5%A*Mj9GBvU)fr&IdCopPOfH`fBVHp8Q7??v=TO8?ln-5S+NA? z)d9%P02oSm8*|as2%AjrF{bU&Rjh*hJ{x1F^-MP1{l)XbAse)0KxGIs>P?MuZq!J> z^Z2+{!^a)rT{dbhxNL+E!l=E^8?pC7=4x_bVAQ?smVtq`nG6&2SL~E9Q2I`rpi5N5 z9i;LAtjgwI=jD24OCg(kVPRR14rwaPt+!>5E6nw%ll}8^yNndZ7B4D%u|Wec{d@O3 zkM@xjQ4D>^;&=PO;cPY+?GFYBJsxIn1CQsrJA}w7IQTsUiD-lTFb;jnxN3d3Wqbl- zmz8)*w_Ug5-4fbe0kcteSDw~rK^cTr_1Pi@{0-J+*9 zH*PbsYV)Mq58);54O*CLwlYSKQD;?7ZJr@G?CQYm!+2{{r3aA6s!C5ZYV%zW=KrXL zc@R>|s-5pc^nu!WS92+E(`GI&B~dV!Dl3{i z1ghRPrL@Ss>KmM8;bjDse5%Qrp2SJgOw+FiR(YB(XG3NT`^0k(+uhv7%YGyfZ zj4rkOCs#7FSDwtwp3L^pEf$uPt&s{Q|B@$pZr>;N!C9;tjLHESBKlkZ>y!Ap zrS7BdVSF4pR)%DqZ`*UT7o>@NB!L;9-5x~ZE2UCZem`{nAh%ns||CvS(fvZ~>qND`~N ze7B1B)Jl?VbPz3&WBnPJX%CTOpMxehC$eaqsfJK&SW%6qu280%3JEc9QKeOy5z%^X zCzg-qutAsq#z% zNC)vFK=Np+PS^o^I$MwTvS%A?I8irUt<~SR?iM1XAEA0~*+gN)x|p&(T!zF_5I0qf zj5}fq0yo#(h5J4|=Bs90cjL-(ReGm^!BY@a0u<-@ihoqe|3uG5s%OXc=@~Z(azSYo z%ObahoM-*UgipQ38b|`)T8IR9@(aBe5G&lS+qtY;z3%0E9xtRGKpm4R@0?)P>NwTEp@2S>trCmKXjsdW15^79&N$3x#fJcC7UU5Bu1 ze2IJAUfzy0h5}%c3?&<(-0Pn4-~U#Q1ydiSH$)mh&>g8u)X)Pal#^1$SBjLaC^c zJI2{@HzMTO9Gf9V)W%|r-5PbW3Kcbe1B}vxl{2YXVg@U)+>`0b{7Kp_E;}yclrImy80b+7rRhA##FhoDn?k^^yRJ*ZTkGJH%5?+V)V;|<$uZ@8bSZru`{)V4{n zK$Z+yd+R{wCHGH92rULu4a65&>vnu0K5$(myl(oTibzDvy&;Xk`Z79}JM+tXIXPH+x||pGUL8)}PeOq$s3--18?U4bz{H{t$ys3b&pH z6Ymsmx{i`rywMOP3@Cn_jhp|&^MxFT7*^k2_>(76<4y#Ryyb<3B!$u_61nin`E#{( zL9P1zc4@ZX7kd33Z2SGosO`5?`eRb&>?yxrc?qc(&=5MMcV=JQmU}Ub7uR|(Y|+sF z{7AfYmm`4+arVQ!NDp-^!fUZ9BRAJwS8>~UBUy1SIqoyC@G5122g|541&lHDxZOzg zqKV4miZaWLBhnixrvK6?)JM0nx{1SRZ#?lraqN-_9%Zs7m7zyvsq=zV^jQWg`{OLx z;rwqiUR~Z}3@yn)PNbsXB58A3COCE+3jmCr!3uC=v!Mb}&}7kij59TKi-d|*>J6Cv z&u;g=X7^DrwGZ067h|lM5egwjib#w!IMYyJ2pB<1n~uEP*2=+(i6_D-|Jv?m5#RFe zQHHfS=&t1)2g%{Nz#@mDd-#gDC#H?iSG3_wM7KpOg0Rws1Z4$x2oo>?^gFOQ0X(Ej z+3AG-HA+eMcZXZKNi9(b<)fuOe~SVe*nYIItiw#0p@{;L$s#sdjV#W24WJIcLeqxg z{4Q9HradlzucF4~soZ;zf1wGa4DP-?`E+|4EkO^KeR&E*N1Kg%VR0(H5JvGPn zl0@M-#_3s+rEW&T2rgOS-Z$L96Ef6H@P|=>|I*2q`thg?yl5*{cw6yikeqWJdy8;1 zuLZihz&1{ERWqw6041O-(UbfTzcqe{-YRWl32lS~qM>k^uVnP+o{%@*Ga`g)sv680_kA zhbU`4k&<*=QL44E*&ynziSkPf7LZ8{18D8NzPPowngM#}gBJ&d9penj1g{_GVG1y@ zKU)RomLH$yAhGFe)0U`1*qb$ksBz)aifrVWw|5u0QI4ey zuB>E+vj1{>TRYA<9l-ru!`y{dBbxZO@R{ZkOxjSvCYlzCGX*PLBv3S*ZEVN!H@B+d z0hwS7Xk$w8M`a$rWgdrkPnpvUH04cCflS&9{N|C{L=`n2CSNxuHQ3Wk{R96Wjik%+x2N7)_i7fB# zAm0cGP#U&iOZhJNOkTM#^(bkc|VlVe-(3)NR- z;{6j*=Fs1w#tlkqmH09wF=nd~B1zqTfjwq=VILogD#Ra~;1`5EtSyRv$FBbQ`N?}p{~Zp!|--ZfA9bF}2e=%i&Wss0TZD`{yn86&Zc z?L*YESQ9t)VlbJKwv~%lz zJFPZ-36?FNoukhAjlK{&S$K=aITTo3hT*+(f~!=LQw-eBD4!=vW%gzAphwNiY@f5F zk2s6=td}(Se65O6$$E}sj1$XVr#-4c-ZObKMS3%FO9h6^ZH88iyTWY5$dv=ZG6`HyAQI$JRNt zxk__kt_W+&0@q~bv{O%HK^e2!(O5^R*xr(V>RlA%!u^}Erc*}n45#mYG1PQstq7My zxk-DRUICG%{by$yNHX=jQ}6Y!lemt4I=`>kxt**dQxlwXL$}hLk2N`{cV1^k>zTws znnbXyiN`1;bO9ZNbWFp>*b-)>^}r@$v?L3qPPD@?gvmwpM#Lt>Z1%AI>h|6w`k~r; zZ^$m%Ycq?iT|}v+lrpOWA@u&KJGSTPQ~Pdhw%X)jCYtPfQD;w1dILTenzjF?LXulT zlfQ+5OGW$*)_9rwDp&TFR&F%Y%mKc#C6DNmeQr)P5$Jl|yfyxXgc>kgD2Q_oaSD?F zL9;@81Rtq0Rh~U*Ed%U^aur6|4d+^mazKwf9096u5nYLowBC{l(3czQ!I5L)GK zyC;(|Fz6o_xUbzIdU?H#Dr;nUCS-YwF}|=?Z9*XIoKQ19(^}hEl*s@bn}&^`{K=Wt z`jHvX-Q>XC3p90%TcQUc$nP@+{zn7N7mC26CPaDJj7(2h9iNRw zG}Egt=iae%>T_XcSJoR(-+fKc+r)XZwc&-fwm6rS5o0lgvEqM=$p4%jn^qa!hFX%77#d7|W?TjBl!tfeqe*%oa3SSWJC{z zyaJn4X|Ids=+7@a;p6-)Y)VDgLaQ^ulTS7kPEmzOf#Y27EWd;Y_oo!2&Tjo|<~Xbu z`BOe#eGYc>5uMz7%uL?KhT7Oe<5Ra4r^gy|N9Qy7p)()sWj=VMP9Map>}Jz-Q7N(- z89M0yV@NHkc1Nq~hbZZ6v1p-uy~+A;6j|`3f3VnU)>5^aJHSD_Reb&*l#M2~W@0!t z3u;h_^855Tul`l9L>^{>Ur>ECad?6pN-wSQR?n;zCcsIVj&uS|(XzeQ(Xq>23_t-^b4o&Bhv-;R^*L)*T-hDifj`JEeCLVVGJ$!Gv=MlwvGPQUUP4jD zxx1bBzSu_J&E#3l==bpue>|S!5^A8Q!yHR1Q^SGOK)h=5o%Lz>>K0N63-FJoEYUq} z2=TI{kEOL*IZf&g>K!Yy0Fmj`^Cup>+5D|(B+w=7ZKfnJuk_T@j1~SUexSd9L*b5+ zMI8+IO1^zSkI=Q(h>4xtAq1;Gmn-04yXmWH^saT?X4?QsC)(b(kr;%qd zZC1X4QSm|PCU`pMh33Q;aNa~U{HEEVQB04b;T5sUXIy}&*?Ccjd`(B)0gw`j#r-%* zisK(qAYMVoF5+`9LH~BZ>ym!vZC=lOy`h+vH%PWVfi1xUpiXT8>5MEQS9Ai(6vZWmW|_> z0)w$Wgz{j9Lelqm^OrAI6ZRfVf4yqF@kk8+kjav~)v8=_Qa1w^IT>Y(Q~skM6N~yaC(_07^)2DI;)8&$eox#Yn0l)tS$FHe z`O~N|Juw-)lqy@2<-$kNa+au-bjEoTihdN2&l!|2vdAjC4nG%m{vx zV-Du;{Cx&eTPZ-RB^Rw|gqBRDe?n>=fHhBTQa^HCVBS{n!)t8zco`b9-a!m1Fz+*? zSrSPwutp#rA3XmA>NGLVHkba6(#0_pzU4nA^>~Gu6hvmoPp*QlKz{O32WNhbhsj#l zB^|_ZtBD`28lO6TTjsM@hp+qWrNrAO^a?uNJ&rU7P;5^{H5^J*!`Q$l)LwczZJZ=T z#C|Q$1TQ}h$Vnb_m~v9(C-M`R_lmm~Z!FAAxhc0K*56s3-g~oo>=)Z-!616n5ndAq zVj5_fu^dUI8$cs@LtpRsIx+#|whagz z+_n8gQU|+*t;pNglbvrJXspt`D4@eBF~uuU?v;3j5-7?R+9k_dE#wgsIj%#2dEkQb z5$fSWL%Rg#y_5-d2@^s{AqpuUW~xN{W8Pe8aAXepchs3>ZW&~%>E9Oq+CnVEIU;oCh@D(2vbFQ=? zG0}y=JAfz?wL=DO6QtC?(j*`Xbi+?45z-Zou}6RteK20R-oY!*sMQ>cnc#Hl*ZXSk z{Y*NZ2|i7(Upfls+k_qBQ#nzluL_A*S-foIa~(;{ESDJG-=})Bw7h>;*IMvM-!1u= z^N&cXv#cc*Eo)9iw+pV{V(U1sj+qWy6yICWHx<>LDBR%R%^NNQ-WfCicva<8YaJtM zPR10RCZuMPYD%3^k~(iM1RJ^lYH}P9wprQ^Tg}4GGZRmmSN&vmwLMMHU|TdkN>@O< zI@N=kCRV(Egna_XyUMHP5Wku-1Q9jd#oFGzuJbwsJ*9~wiqeB4pS^)RW?{c1Y%Sn| zWZCPQx~R@Jrq1l2I`06C{nb5jgI>kUfD_$f?X0YO(v&2~YY&e>>fX~Ckl0djJ#lCE zzP==}u!7nJL-Z;W{E@zcl0pV5WZB1BBTubqS&*uc8@cS_tdEBOOa-$(=fItDW9buy z+*&^!bIx0sO)eNw!gS zMd}O9V*N&L#*(Id0f#(0=<%cA@`28so#5bd2U&ttVN;F5l|vj>r^_)**ybkNHZ-Oh zN5XA@T1gu$e+>w~a^%9sRDE%>w3K=y)yrd7M8eAh-7~2@@p);ynPOESvXk`+CD-y; zY3j5<`Vw$USEcUEEfAR#Xjqh3-aj3ET!Qx0>7RGh%{DIs4U5z7m|JS;5sA^Z!)-Uwsm5HvxvY3#x`rICS}R|5Ur%w zWo1Zx>;trsX1yQfD8laMxWlv4Ck@od&C*tcR~z9(l4@WSp3)UjiCbps6HQc9myq9d zFZ`U{wQTz3+Fj4ybYUE+z#l3V;laHaA+Ymm;_V~ciKNUoi4ABfmpE(PI6?yLi|{f< zW@fLfac_riCdTIe?3>L?ieqK?2|5Ct4X^s};ex6+jnHg%rO}Zw*sr~12CE_D?_czI z6IhBi9V`1)!PpbEGNbDc^JWx%FVSGbC#^-I6X^amli8eV zV3VC8dDWRQ;e>_Jo<$5|CIDH(wezCpWCI7*q_075E{o3)3a%ByjO;e}G9L)lTH6e7 zW7(r2OnFmQXZR?6{AT>LXzCbeDp1VaZS#!z>m&2Er``LvXx$);!GJv#i7yVk{>}7W z(Me09B@1D$pJf?K52Vi>PHB)I)f|;Sl1J8CMyuV5E_YDUc=$7GUzMd5p+un((S(^W zy{|QgR|UGvbcFvL==v!=nh<_A&?O!;;%sb6#V>10-3l{Q(h;d%){)q<|4n5)kWTMy zGkZ+t$tJTWvE_gpj^on8vDa%7MiW|OTkH^Sh8ryG9u1^m#T(mSBgJfwZCMq6JM(O_ z^G0G@zgw%*4@8~w%5+c*Z~9)4GS49dJm-dTPSHW=1XsKJa|ujnmG!+!qFYPZhqAXc zeX_yY7WT0*)6ns|vPG8KbY)Cqs_7gTH7_SqtfnzFp`S90rO#@&MZO5a>tlPi=uFf- z;f`dr`w-w~$deqkPd{qak9sk@K8IoH^1#-F<8Xoq}qZs=Y*DsASYht6WWbXf*YR$w9`r9XJQ} zzyCY6zJ?R0I1~J{x}thUQBOx>`0YUVt9%iSYz(<8K*SP0%#hVjS-S6(m73eZi zL%lL5<&`;&G97gfnx42R zopw7gZ@Js(_4=@=9MqY0GU#6nR5&66o+M zV;t~sNucXY-n(=7U{{@Ih#Op@!$ zlUMqOl+F$yc7gya3lhMu>#{^U%;}lg3gYeNrJ<7ykerx%)s#MEbLst~N{a@@#`mq) zK-+BU1}2Z)q5coIctieJh7AyzmmI7;w5)d~y)}lGh-JwhN4ERx&6&)@wXxArhYg6f z=%L?O;McxvaaP$YnL2CSt8j&{o&x@Q89|=t{yU=k^#1M@R08ryY&arEz||e1M!|eN zX?QW3d-Whop|JQ zgP!lQbJ+jSh%JWJsgEoe#*4`OZvt2bk-5`9qQ~Iwg)L6KcXWW=J-3yT3$Bk{0pgC* z1cVlgnVE6Z8L%oKaafg(WOce8gDGcQOZ9Ut)k~UF{RgQwBmNuKK??C-Ni?yi(m|I+=QG2*{%e1GfU1-HEwStIg}@vjbaJ*Clx zUk-G6!=6X)AWcxN2P?k;=A1t%JKouwG+u6Uh#rhis)z3_or`!63(WfFNsY_-W@tTb zy`0A7W;(Ky(c(PE`2AszOxMpphZ>xh88v-~9S8)EX2jcLdqp$LJCfn3&Rxb0?emuY zm|;I|hW&C!a^$T8&9Grookg%bcJX=+^jRKoEG7#ahe*(UP*^Fw9+DLiQ0w38&-#*f zyEkTmMFu39!yo5J@$~@HE6dDQe4!ayeg^bHaqQ-N`k*P*Rvi88h34uNBKF%m61Vj0 zY;s>Vx{RE?JN=0j^Waur|AJvf-T^b zsuO{o9o<_q_C8>qtiFH{XM;Y*37Bh==CRvxO-2$12f#|mb=^K`2v5J+&Td%xbO38 zoEUPG{z(xEhT(Ts*{kA_>ZRO9+be>y(tLiwr;3Y+M4+*55_i%*XTXigNt-&7zb^yn zNDLhklOKXe(l<^Z6P$MdwC-|2>C=?vz`NlgVY3i$#4ZFyexoBfb^A^|Zp+WCk(0Ua ze4ut^&lG++wzu_pnI#IVS2-UwI?FVgrztlleToVC5ndVJ(<}K!)^%-o_4MPoNIm0d z?-Dhpj-n7cH6;@?H}!XYV23&hv`~N7v*}7}o&5I&@By{mS5A2f^7&*US4dO@!qvae?G zDq?i(HFMJAohpGAaJT1 z2OBg69{V72@|#V8rVstShDI8#LCSteAyI!CtKH1wyrmA zU2ip={6Xx3rjy^a(i&5<=PHxR>yE+Xr3LG8NNNCQs=E>naE{>-R=H2U{(Dx4$+rs>nz8TPk4Af6oOjK=Q%?5@DirD(x*dl)Y!Z zEE(ATwl}c=J*kATub)@k>zXZ$@KN^;YVG9%QcF5HJS1wrdk{y1lT4r`el$ zN=1vqYo;F+9>3|sr8qc3bv6Sg{oA@=M)l9gCi9Jo^s zy!4%BGi<(brN%488-_MmI{L!4@CP&cJ0GO`Wu9$xvau@#pmQ0cd&Ov&g4|~rd-#Lf&VxhcxEEsdt9`q}nE3(pUOP9w z?d_tFdk_j4*=gF*gurp;NVz%S1+~Bnnbr&fqCNioOKmxJCy$0g`gmot`kxx^EGw#9a zZF)cZ>Hcs+cY#OsqSPNotNS@Uze^(TtdT3YK!U)~5GI&?Hx)t+36l(%Ea8mMV9!0X zLW2qw^8#Vk-+2`*EiJUUhvhmt%ulwuM-WI>o&zM zZ((gWP}HER;P3w+yQHV~WZjp=#(JAXuMOpJH9aK%SZFQ8K=MMbSJ|Un)B)gUiklHH z0yU?rB~lB&9GB9#@Aapg6YVzlUJ3^ue|zu^*NSQ}mUKl$p#c&=3&X)4K8`OrsKm%X z^}Y@Ngmg#3c9}>Z3%qAGM^kA7%%4`U-6K#jV?l&rt&)86-ln+(&2 z)rmk*em5K8NZ?GB6iwNNPsNt%h0)aQ*8X5wY+uOn{$(9Z#Zb@wAX@$B_?sFf1}?q* zB2eE0XLclyZw#-#b+}!jpMI2W{rgJxUQ5%GO&U>a!|xf2*SvfCLlQd1y$`R-eR!Gq za1<9Dpbl_SyXFM81#}o*ALy1CqF{(?`5x*_LsYWGA>i%uzM~to zo6*hBj&50C_SdQ2AI80vk9a*&#qQ%j);O%E8ockTw-tnCO$8U-Ye%cnnc%enK~PQ((Kp}ctNJ?;{q@cv z_4rIv$!t?eCb(t~+Y42R9+xL3eTw!&(I9_6{N%Tk5jXw|^Ex)t+Y&0F^|IfdV>+p8 zcNk{$SH9k(*CIa)k=fEml50AZT|x)Tu1xSens8q2je=Z6kGC73K3Sbq2ey`P%RF3x zX{{dKu$|2UJ6SJ~<<%;zILe}2VYX_6VegUv)a=UPJlEd^F*Uo=U@9aFUoPthu6VFg z2oBZsFwD6__|L|y`|T`;DE=62*sS;KwFLOh9GXRVH6~{(9HKG0Oii4T30_Bk4bq5` zKyQRCOTcg1poUCOLwtqNQy^lrJ|kbu1UFLrgms{1 zx^CK}>k+!H6SPfzn6*@$%XWDsy}eUw?v!3X#OtlOfrDY4T9}G_Q=hSES}`(+%F>`- ze>|H5QdN2k6-A7q=y&~=f&7d3bDjQNuRk~FPfUN}rP#X;GS}nU(T*GwbueTX25y&e zz;^~4o1EtkW36GcSzUk_{U0CL#g-8{{_i_;>q^30Y&?GKvsS8ygauI6U2+k1jf1(kHT>Ek; z(`JRWI{)^_1b=5BBhbCrE80a-V^;BkElQ^`s5M3J@QU8AqK+r>4O@IeBxL0RNkio^ zn)&ISstmKTURnATl6k0lV|Fll4Ej_wMBUz^ZtIFspi7wUD?T(m>|v#4$HRy1=ELn& zob8yioMWu0I2v9Y4UBs}iq)%@+FnSQEP_~Ku|?6qX=@eYVhitJ-J2J=A>Cc3pDP~c z$YmoyjqRzEz8{`2nfWh^wsB_{5fe@v%xpH<}wdh94IJDBExdW3r=7`}~ zdOrp}S`mdK3d}pZsmT4=!4NTl#||Mgl6X6C8o3vv`ye+;Z1Kbg#qm}DIW?fsLozd2 zHy6eU0Jn63TL$(I_oCOuq7A9Ld6Tgx8Kr}&#=TLrO;7B=Xi7{VDYSF&hzKc+;ev~I z2)^2buVmZfLO%N% z-I79*|5bg_x72_3Ui0$W$bG@CXA+lK+Sls7k7FTPX7d9`b5jBdPFD6@?z`Zzl^L(OJ>-u=a^Oijv< zXDmd=93eEh2nvWlFz$j`{#5Zl^voX2s4NsyO^PXu- zo%gA5+oL>Xg4OnY0~vaaT*IKFO`5e){zpt*!AG0>nM(URU!?cS1lJA#L2XGR4qRqZ zxyqlWobrEd^21-m50{0|KI}%OSItQX_(y17mSKqz?xQ4a#1`daUDX4NZUZyTk=^tv z_t?LiX-+Jix)Z;&l6@9H9Q)E@2_m)|H9U^Dq8r>RUhqimkb8-r>~tsk$r=}VjAgB= z+%ZbBHsO!sW3(lz++SKznPe$*{bZ+mpPvl5clpU$cLqrmOpl2wV~`tO)=HMIA68oA zHol+9z{fW)kUcl_Fe_lVxhnT`|N9#ER6p72p6Dk-?oocS);*Xc4V@$*!5$en>_4y4?MEmDht#*ELDRS*HS1MuZcuO`S2#j@R_E({0Rktl`*gb%N3C!_wTU(E`y}|(((Hl_>Rpah4QAO) zbEo^fDas^-+-LmHAM-!|mHqtJ0NdkeLI7w4(hqVfp>7IvU1MNyNVIwpf?&fNTtrTz z6WP=#iHq4uE8O0FJb#*1jm~MCG~FThr<{Lz0E>9*$an0Z>g?j5==ZAAJ<3mp+=Feu zR=7c%SmO>Q!T8G66Kd{s*RioAP3RUGD-yHQy^~v_NPE1RU&pDbH|cBqWXN4=l1$DM zHnGP29SLgweF2~{`ZKnFso5iZhtT6}zlu(GmY)o{H`+>8xK}HYW}6rgUFFvKP*LT6 z!!O?Hj`NctceMZINF|aPP``YMO{{T0e^dPyBny7IublM= zxAXhToUf4c5R$69%?+>6^ze0?x#Chiaf{RNi60qyu^$<_&HXnW(<+wd;`$JTI&yK1 zeKr@|exl&e&O~U`74Du|pGlj-C_4VvOvdENAhV&N<>Pwg^h=~lJU{D?xw1hH{)?^Z zw0fC|OZ~F#<)MD-k?<$e4-DV%$&CGyHz*=?j(WAv2S$qOg(c zq0-7-*n*-K5!08JmP@FQu*?1O%go4)&Z}5S5ZCY~OzG+~9j7HmkG&{9G_j-v{oE@* zg3K74SVAzD(w9i5#-o3^35BL?>D)iAqn9hNHf&iXrEejX4}qT*vJ}#=JJG1N;g&%v zZ%A42T7^6OIYuQe@(+elYzcp0^%}sx#+$nByxv+ZHf?t9&PjTwd$Gs^70ZL5^^ohv zNqW-wNEa=peGC)LvRaz>u`j;NL?^k;c+m_`0i0w=AiXpe*}h&n^Bj8VZ)-6x&*`Nj zsWba|p!BQ(C3ITC4ln=N>qhv4=~dw=pUgNcIRy>;iAI*#xA8g}&-r3KPQA5IRjK4o zx)GQyV-mU&xMwDbTz8naLo&f6>ue#b(~YoZ*b=OCYqfYicy|%j5ZPYBoVSEG$BvFV z9)*tD-YDZ4wC{`TI_~utrTrlP80>UEpjW2Kzmv#8=1pKtwqA=1uqMVpT+ z*x}6>1PqQqbez|Fu7`bF-EGTE%@~mGZtYv$%l>31y_K~O%pSt`HlV!08R)pgbo_9u z7W%)8Gx8eF#~H2e#+SS{cf=WL5z4!o7IQe`EO3msx?`36ui=c}eD1GotNU%{n*}{V z3kot=<(|-^X#)IO-SNC*W%jjTwEmTBn=g_y=mRXXBl@V%$rAfoKup#mO%+d!qy|$J zBBo?o>Ta$urtW(&)e(n%w|_I9PsS6FgVtmy)bn-krXnjS#S zr|buq4Zeym_9Jv0sa|J#oHg^o_}nf33)bFndYNdT9^|v!J#~eoye_eHO&{*25F*7! z=QBJ`G>1Qn#Y{Io^SW_i)OlI1D9~}*_Fi2|H*iiXWP#ktFrag3l7oeNcAH_P7DgYK zkgAlgTl7j~px>%q-dOUH{obW4&7k)jVwIaWfq7PTG$lt@{$IR(34ByV@_!BjL5>-e zNIZ}MqmF_)3Ti?CXC%QFNF;dT9Yqn9)hIK9f*ekwW*?)t;;z@a=z6WX9;>S;s0jiA z0}0}Vips86$3cyv917(B{Z{vTZ-ztM-|x47Kf9!-Uw3tNb#+yBb$4~7?nYp?gplC| zBiUg0@qUhX`XI%R8()u|xSTJ3#Q7>-#K3YPG9Q~ausrlyWYRs{fBW;Mt@JD%1?SM@ z!{;A^@8gT%NRqp%2Z%q~_hN@b-pSfNgHFC=2RK?72DF~WN+F%d1D*l7;)^Y(Wt_iv zT*q*Uuj_;cQyj--b?4>+tI-Zt*cU>HQu|-<$%x$kz62iY64aoZ>5VTdH_iXH5IDhO zTY`-FZ}reWM&QTNngR=dYVo%Wf4>-rO^JmCBlVY2_*0KBe5PVF{#M}cBK+m^%y;20 z&#!)qWz?b7EW#_d^PAJ@f7A9WAtf8^O~P(R$70}fwMDGZFuI~MfQJp54K{R55a zg8-nwd}MJZAgSBs>ERF*F$|CEqO0(Sd!<-YNc=pyZ%}F;&x?Y= zzT)={XQDDTbnuP$)vybLR*4>dKuRGjBg8{FB*{sPGj>X; z@1-6%xBh;#1csR(!Ev*sU>REAKOif@;oQBWK2{J0g&_!Xja*&q?= zfwLx^a38a6DA#XecgSc)e z|G^cjS>O=g%;XD_z^(gVN_?j@CLbZM^@a3LVquNo6Lem7u$ypsW~U1za;UIb&4uDe zD0)%8_6=?JNk8@xbHeXWT!BM2zf8mF>yE`!ew;C=Zb}=Y42^3UUw0t5 z8)Mv_SG8elyIz(<8iS{zxZx zss~TZ@bN)|fOhYe;kX4Tf%6gjev7fw)pxXIZyVx#Tz(hR_JL9JBR38;#UUBjyKV8v2ltw$$~VU)-_ zO$s@ei~3{ts)6?Ge3-9gcFzLvMbSBeI&(XsJzDf>?YYr@u+QAhYcdN>mf8CP0QQqk zaDgj^-*3qBWXkO@-^+`LkqC&oEu*J(_U4kLA;Uq4-p8B^`;ow;rR9m6rzcO}Np7P{nl^9wfK zST$&Yv@7n*oK`9{jL6$_Ku|FOKjvpTaL_67K~|~pcnVi++A1{}XfU{3WjO!_A}{Y} zCJaQ$Sa-UN|5{`dtUck-%kVR`jyK89XRFR63+Y-|3CTPGYkz_q5j%9FBMgK<+Ygzz z0*!eCyxE`6;ds%4WP%nX&UtT|2IGi$u zh1&nfk(13Ypd3)Kmx(fx6Vw$>a;&=0Nmi-Tby8#oe3-QSQ5tXhFrWQFH^p7JOnvYj z+=Y!%oEZdu>OKf@)4MrNa)PR5vh_Y8H<<$Et66@my5$?zj^U(Q&Qnm@ggTaALhAch z-KKDdQCdHUSv;*QO?4Hz%ZEdprb23eB(+iky#nf(M`;nsyIWG}7tbBj<|HSmFPvmR zeTbyq(K9N=RU{H$obg0Lwn*`M{8(T7(=^-=h99R%ef$y# zlG0f6bjvQoLTW`6Ha{XB29nuj_TsYQ#SCuOZ6Ae|iJj9GfAFas$8yHuAa1kO|E;n_ z&oSlpG9DZQ)RTvTLsOt~`2+5mxCS|jX6<~~-!u9* zVsg%Az_3JzJ_zt>k8CS$nBKwup#P`ETOz*EYa_*5W4((%;LT_p0d7`byqMPSrOERU zi+i{IKHw|qcTfC5zqt(vqXLorM@pArJ~XS-hop6RspF)ZxJ)>1_x*9yDOrswO4cU$p zUHVxKYg`itAT++Nr)<7EM$TJs5~TCy&bJ*fYG5YBQ)rJ~4mE6Ei;bQt>~o^Cgbu5_ z{wdwuhcYIN`=78autb%Bh+(x1G(gqZYso`6@xtmQO_V0}G!oL&WS(9*4;9A+SZFT3 zaLG!-VYTe}6E(e@SoabIQ;q%vzJNsD!?t;E)?TA#o{AGdzhp=I#eeA#?H&ImCz>Ds zrQ@`&T;;c@7h%RGdo17q`D9RMjl$JdhTVvEl7}hD?|JtDAdYv!oIeKOkns;>;1rsu z1J#>(AakLX`yt?&;`iLexC#>k%3=pkeVtjoGX|>F{uobZZ_bVe8G`9xhG04f3;bz& zm)lK1fjF*Iy$%Pyy)@csA6~)92D$R_Tq=Uo0M}!NU17N!A2BBz@O)thJO>cZ&(`i4 z&%UgL1 zXq!rBtR|ibt|^-VS{Kg6jY4TQpdJK`pd?$==GQ47zp=`eb zM)oScgY|`jQ9!*SRYgx`qx_uK8gy08bz;SUJFeNfvD@D_&%ee7;S5NuOTwCm_}HJr zqykqrzQSqAf&ul!OSoKu(-~3RBOl>CkabcZQpCLs7`j0AvHuNXBY4So;pf?X%bhfxxiEwQImBKYwCo=qqEgbrtAp=229KrLI z!nXqoU`k-86ExQS{sH|ae}96T%Dix+j}$hmn}3j{Xr6G3Y3ph9t+ic-GH)Ld%*-A*!~5>7IxZqi8uJ?ea@R`)+ei|wVI{-r}-$@p#ZcZ|wvYcd4ZE6s-4Jxhr7x|*QgUY+e11cY4khvtc zxFiqrq!by3w6xU4PYV#)#9pSt1w=ABt=z6LW%7PPs9{aC=SQUy?RuxZkh;oA7OHVh zGN8sf$)KvxNrUN$&WCDs$!P=$>hwn*Fy(=1n&t3;nG+sCRk?&)-5BOWzzOtik^A^P z#2y4x$oZbbx#Dyal9GKzhbuwuIp~D$?_TJy+)JEm;Ls8{|L-6|IUVGRkr8$w?Nf$xagY=$&LxU8IwyuctX5s?`)I>N%}+Mq5QU`g!8cg@2?|Dx~^3 z$wJl3Nd{C`CmB?kI%(i!?4v_L+)0$;f93v=BE8%<<%SoxkJPPA~Bsdo6Px$|cbDsjMu zRFRV`R7W|ej{wCTU)fH5#q+7GDgZL9Y8D#8Tk3iwt>W(xeOp8o z?Bd}dx`ll{$q7-a9m5*;jl1f~G6>aI{BdjuNH{BwlNc4*>cP^~LYIj%jiav$b!`fXSrsUgxbdvk8Ysm1 z?K3!}P2-CWXPD&%1jSGiW_bz1EaSavz}33u={vpnBc|v6ZU(b=blgt=qsb>eeP$PMYR9 zE}*xErvkdi19XK4NNj-Da|q}KGPR?Qh32kdVF=&xQQ@q)n*SjCj6kXg9Vpj48$;E7}DfhLaI$A3WPtldwpB z;bU&}Y^!J@4RVbEoER|-Tk3?{aqv4oOf)d)GZDiHp;Q@lFy;fS4$&(SxL$j$Ax|zq z7KH5*3CdOCE2+ot%;>(NMa)vIT7ABpY6@#Ec1tb_v4e>FAo+;UlRN7dEYdP!eqdQi zIm_n4F%S0%B6PUBE^essfzinj@1*f2)z0i>6sAVUnwsf1<(uH12 zkDqMH2+6Ks87++ap()x#0b1WdV?hPf9Nn{e&dGdqmAr8Y&MnvoDY7Jbik>*{-{?)8 zebTzy*+b&PdD1ewdvF>OU%UV$S|92_;P;zGAeAqEJ4GsQdpA`o<56;_>4(|05zBX{ z_n%l2b*9(WUrJKxdlAdDGP204BF(pzYr(ltL^lzwR>z=5yuD-e0`u)D zBi0e_BX5b@&*4K->Dbw8`@=uG{X96W?Ju5VKRF1kf5yKUTP@YE!NFvl=QL7%oczMa zT)dm^&C|5e9`yjJiW$1-04fA6y}O|fVy)x?bj03cer+|>aPPoe@ z8ij0gjiZLSGFn_{#=uwe1R!cza33h)*kqkR3obPSTx!CK_mpoy{pHUF*K6~IBcoSn zj(pOk3bVhb->4U1_lvb>jk03k{q8VLJ1Lb#hUqef$wT;MKyD=%48HNUBWVQs&%ax-18?>wUifRtM_1< zdFAeZ#=r`y-)R73+ZQ7!6G=?NS=c);q$%p8Z;CY!b+TB1F92{Y{jN^~exe85?*TuX zz_kJy1mH9-L`$St^CA<J$Kfke6vyJ0bj7jNY3xciW)#PTX^oxXHFl`i*wxaQ#KFv{r-0Ms zdTOdeu927x-dOlOApg3@#rOyU(PCWty;8}A=^=e^oi`Z*nm~@(n4SHY6r^!z8!~Qf< zy!OU(L8dn_c6#2=Iu7f-Ph$sDp$qsD?S7(kyqua<&-V*KakofcugC}~au#UWIz)=p z6s%!~v`B!rakl(c$7`hP$x~vCLnQ3g?1+Tp%JDQ$BIm{wj(Qn*d3}Bc?igX-ka~y2 zXl-F5kOLYP;(_)Le zzwh2DDA0^v#4_@DVj+%ihlH&uYMzj~#fS$qtTRTU81K0rheV|Acry#%7+(}hnS^+n ztT{FcoO4FCGu!q#*0d5-YacV+52&}CWTkpYqhat}*1Fi(ZR2*i6A zOH!uU8Ou_q8KTOXHn)+n%`E%=7`Mk?YhM#d{Hc?yRL}lF3YZ>muWk7uy9zV+L@&Z53yX%|+lar75Ogd+8lY=Yw{Ut{R ze?rv3eP0jvPakmy{~ae;sUEo_l@v+nAcK27_*YGS2@b)f0<*vs-;0iR>0vv70&1p{ ztW;ytVE##9=70jN6J<`g4CQRrh1G^T1UIwYc>W>K54d5w5OrvYOpk0_!WYF7d4EC2 z=np*6Lm}5`H=wqOZwYg*QZ>&>?N(1gK^A(gK%^W*4Qi`q`&FP6rhJB4e-xQruCj2_ zCjLN+1}vB?(z_!?kquz%z(48g2ukdC`N`DF+ z-~n}{ldM$RZ%^${3EOEs2u+B9hTyVi>*xvy`i#wS?t8^IcgCBJ5Tp2-n%f0$Fd!Es z&5Cw|*)kCxIB3prvb(0kdFFR1mU8j0Iz;S`dG9$KV91KPZkY(u6P>J=ju)2VRh-nY}H!GPaNUa2}q$2 z{>Xfy4xi#uglgGO+I!m+{RNjXuJ|HAcmy*PU%o5x)D@^*uVD!~e ziInhY8~f5{Crn>D%)#_I6eL}+UqU{85mN;a^TFG9(iUu1mka>DR35EQpr~C^Fa#aE z?Hr`B8|k~P7zxq#JmHWpxgB-Xf1ZZ8?O4gloqmxF|7IZ1m^%o})5TZI_vlOU8e^B* zk8l(1n^uNEtw7upvz6Hk=k!4@F5^>6F$5~!chKk#A1`G-2i(*$ZKzXWH^Tv~x63Nk zDI2BW0-+v#ek5DMIt%f#>S0jlbJs24n$(r*Ade2oYlIHx^>^s-5POKyG%1I6U+?Sfr*1Q;L-tcB<3 z7%*wpHoB>`i(}TdF1Rt{tJw;yW^K!aneVGMWA_USlZ3ASSib#sCuXALh4klL1tAp_?R;Bj81$-i!%aLaxaV1Wv|1Ip!X)#N&o zDDR*8VUpXO9{3hV6yA*Jx%e}rBO*Nlen6eSAD-3}HhkkY0gS^-n!@j+E`1sA9}cL8 zI=MY)$u_G+%kuN(APYE!)j{ndr)aud{TEl?T;e1v)p2&JAe(xODIQW` zl(CnzJ_fRA(R{G0fX4v3SZ&xNbsz#` z;M`!8{nqk2E0B6OXV!X78d{R%5@(A5H*_j&CFe#{49G`*Zzx%)?sbx3b-R;9{1u(l zPi3p|&}6XBHkRN7;#mGu$#>?+V*D|otav-#a_$TsrDgIo5~X#63XD0~7)hL&iG^JV zv5&a0>;Go#`!ZuvW{r1lIH0DA&kdvut7<1%s4iu4K{Lv>-V32j z9f2FVvI!u!2C9|K4y2lt7sCT$uR&08+IKBjMZJ5er!9Nvu`}I0!E1i2;fbDKQ55q>&%(d3DDiJ@6wUSSJCFt?-U9V6+zNk^Sd@4vvH}L> zcJ!Y)uqc@WgL1vefknw27?dCC9I^iPg|VVBUwlX^=C8nGWauyhJ|IbkRn$oqs>_+w zm_Go9SBLzat6ObSKIqQItJ8p9>H$5%ffQDKoMfTuDL`TVWVG_8u4`urJ0?*(jdeb( z@>u7+w1&1q*Ba~_v@eXD`=XO9R8KP5`UM)2J=k(Q!brKz{Z1tf8y=htK-m0@4zI9R zRM<ayVuz1P77gG<|GT%FeZ~z;Z67RaC%-AZBvXkBKQ?h18%21 zR$_0A#J|jpUP|T*sUKFz^RZ{4c>Ho_i29;9x@Fq!<+Z!^9(Rb|a*~B=DU%C4dHEuK z+i$df4*JSg0jv7%P+H&=5OZKu-m)jkXx&9ysc zn!0k&a0;`76g5?4_8HK$M5GT8!D}_hKrPx}-6aD9<(@6PgzeD&8;cXaT=xR)RS(gw zfElxwHZPB2t5_feTBl-+>||?iWFT~=WK|){)BL=sstI8WBiP%2^n2sfp>@jeoI7RTToUi12=Eon_21k5*RZZ*l8pCa1Jfo;MUCH zeVpvYXwcS1PNE{S_=&wfkT(b8;YKzO!vMtD`pp1K&#YV>ROBa zda`cov#6te7eg>(?UmC|llA@@fO&MW zv#Zn-y6YbEX=P1xP z{Ts?V#woY<9OLv3No(V@mN2IkOo09R61s`xSQx4FNXTTP8u<^#=wCN+jM}_0S|u5q zQ^x2}%H;7z;o2ckk$z{4*Q81G1O(u`_KE8yHk_j<-8VV%$ z(M7uIKRNQpwYX~l93UM-+e|l%mYHsM%`yWv0Y*Ep=&1+nA?O7T*bi7SB;_f-MBY_g zl((o)k@YJ8OB{fG9!&*!2PzZbgDC*FX@IvO%jTBGwhgJWd8#%8XpD!omyinRI44=C zj&PD8)dxv?iI}msp6!VG;{n$b^#eR`-`~kTgI~kyOD9>VK5~*FwF*gdKjZ!aE|Rfn zK$FxpU%k*-JTI8)1FdFhSgu?uI+iQrvx@&ymB=C5$U?^fTByF5A-G_R0u@x_!A9v; zsduKEWJooz48lM!ESLxAybOY}7z0kYM|6Es>0U|l#fWven4WkD*^w#I~6;hDSfoAFyb@&5nPWg~O+&`S;I3^Y3XxuIWIR4vV$> zjkJE*Nru$ZPO?hPNNauxN3iu~j8kM&;|Dx?ND4m**c$SK2e^>0a9{-0g-$Z0PIr=3 z>X0sPflv&n0W-Ik&cLlhX28nrs59_b9y4I%{sgjNpN<_k_Cluv>-Kj$@HcT>2^&7( zBtz;>Ct0N~nI>h;$UM={?EqXQ8S40ljB$Gw zsz2UH@eZEi<_ag=-)?uO$OBFi{dbb+|J1bp_htXN`I)@j;AALsI#8FHaIu~VC1-du zA?y*P$blSGM>)xmI@n28sUL4hZErB!Bc_F_{Wi$QrLB0E7hb+b?cBWmTd@T!$84Qp ze$%$A!aUWtz6^$cd=MCJHV(bx%mg={tI@avcGA;3d#=!bhzMAP@X7GF)3@#l@BVxY z(y4%gfKv_MWyQZj{3yI{1Fj~zRcav^AN6|addFjJov^aic-A@)wP+CAGQ`@ms}4L| z20{nSNlZSA9<{v~x9iEj11)$f^_N$$o;NM*HOr`Y`c%j&ViSiQ)m^FbrV=EbOQwyv zi)k^&I`)P5O-4->^G+1%3<8Dh zjObuZ)VDYopkapcp|!|D1Q=S!zDffV&?Fi#JwJyC&>`x6x6-~3#xD)DE4?5B^p$c+%>?i?+T|J)_ExACJ^sSPVKv7lR* zJS+Zl#~7j`BZ8BjZbxn7N^f0qSp4Ts2$lYGZmbAjH6@?;QCI5c=9Iu?%hG-~=bVcq zrxadj!;w$99Jv?pl_&+69)T#HXvxcP`|@obyUq#U0SiIh-qVhs)&00{;L#%@Z(HpmBs?X9Ix}`^)5s`qRZ?`M#rd#!&h86%c1c z#k`}?7M7i70c7i6LC46ftsFgH%^&eY?A8Pl+Lo=k2}v@m%b#hS>o99r9WsT?3J0sR z^6QC=6bCEfJJd;+#g7^?9Q%>s*d{C$w1?ICGR7s}Gh9Yc_#X7Nkw*b_wd0=)s!N+#gYpGQ079fdZ)upFbF4v?Vg>?A{Kd!2AJCtXV{ z6?C2l`a_g)otL!ZwDWQjq{1#7mpj;ft1yZ?+|$)>NLARaWi|}If19gF@JqxDF4gLN zXc%m5mn5#sg!>V@4x#;_x3DjkDQ#{o!c^1ej?ICZyz78us@HM-lV&6PSk0kTXvneF?)RFy>sGgO zuTXQfZY5!$HQ`%?CAQaNFut7I9*_KuKiu0M+wpR+?2%UxwArtYc%TP+pf42A4+3;# z(_*o**!NPm@5Ot&eedAaI-Iri?lTP#i)5Y4`5_imGY{;;Q+OKwg$0Fw#ey2T=^(T9 z{3URQTM!l$mTk14-qjhfpqK#*YO&6M1;q?lP|r(7jL5Y?r|aqbKo1wW%WiS0HJhxU zky{R&RQ^4(z09h2RXSD2c~u8^RmVtGv3#IVFx`z)s9ODkFS4)7^&=M4$#QSdzVcwL z6aN#YPqoS+tmH`9JGHR=j{6I#$8ev>hh)Jq+`$$0%5r;&98qmjn|~m0Xx5$U!Q#8Y zGAl!BI&yKm>@l$%Qdv&pYM3r}l90pru(l_Gd>g%3oxrJ)jf=CQT_N}0|ALaT4e#G# z3^UX+{Sz{wL1jf6*5^dxpJ&F`W%_FO;TY2sFk6V?wOVBaBDFq5qquo+go92ngGetR z!dQPs8irLz$?#V4xG#7uaHXwO=&j@z;;;iTmbHAjUdsm|$@RED>Vv?(fIO?0=nu;d ziAZOI0*DbH6@zN~H9`sR_~F@i8PGT#M`P+DDhLFwRh5Lw)h0B22I!O#JxG`MjyAQB z=tvZKjVhw`4g5CsshZ@g4`1PzHBZk5RO3&krNW^&LblGa-sZXe_@p~pd>Jiip85(O z96@j=U?r#1G$ATn|5@ZlbjlF+Q0W&If0)MT?C3CT20k<4OWLE&$S=+UetVfzIRdM(TdpwOC zXv;!)eyC0jOPDTb)hYdu*lgq(<1P)Vwra8PJU01MGS-+r)ABwJIbajrea~b108})( zf1qqi8cw;*wHBtq&M+I6=35rmUqXf|e2ZYGan-+FDbiP*ZZdsGz$h?Nt_yMz8Tww< zcDOy<`f??4c=$ZVH(W!5`Bu^!bU2^>fDf+{ghu6B@xCxvFUrkmjQAm>aB3R=S#^;B zGVyTNMIn3`v=^(!FDm3eVPwDp2%p#(fykLTtT6(u?hmWrmFO)Zs3LyZ{kkm-XTWT) zNtEY+nu}IVSWg~Mh+&UsnQDO(OP|`t?S5eRQOwWm`N&R8?cR!`dgwuu%8#OMVpOiW z^9UTHj~5ik&OZXc8=(@W7gpx;QS2KwKrs2V({IZ!m}Q$8S7)cPSuD$g9BA>;Ozgtr zCUmnJg0^uWga+U@nzhgD0@ju-_;&6z#9*0;_i&@jD}z|#2M}sjJ2&Rt5;g9u*_$O+ zNeOyH-4aquD6|2&ZBEwJwGj;|_B*R0cOYH4vWNX&HlwS^| z517TTW-HCAl9@fw>g)Wy3OU`;;v7CT1U=lO)||zdxev?m`4%VO4xJjp(((Cow8Zy^d8Tx48O0 zBYQaVe5<`dv%#h-&72FV^^ycL2!9Oz9XUx{4c)ds3$p(m{ze4oJkWxC4B@E|K14*d zj@uL6QC7$QM^&u<9SLZgL1lUreXwW}W> zf*DjSh>^mEgRcjsB7XJWM}GP9I^pjtobIGZr7Az4qe$nWew;@gjc*VY zgUanL8123#p4REj9_U&(!AeHbR4Md>I|rlt5-}H|yEJi8rYJg7U@ELj(lzW>X`tn( z1xA>C11^Ose1!~~-Xc-QI=|={Rt544v2MoV9jT4UV+Ph2!O4EzVU~?vSn(p<;EZH1 z#>MSi#Coo}_M2okdl?56YGlwd$fk{mK!npu0L3s}8xiW78-UwH!fa=BBCH5U_$#p3 z95`^bJtBWow4f@I{f;&6O@UIL=(?;JfmkQym7%R@b_GI^Wxs<+y1A$l{X$}z&dB9# zfG}!eIIx_ylFZ96NS{(DN*`;NM+@8Hk=%9)Khmci(oTO%_Hk2ryR00a5yIxlaH1QZ z;m_bs+h{*}8xSsAun%l!kkC>~E~l7XR?-=qVI|IzLr#Ti)J+H{P*Q`usE<4&%O6Ws z!c9k~4R@qCJmS3ztKKM$x&iN#8Icb91GZFWi@RPWrL~3fL+^E61fj_NhrVDCI-A6+ zkK$}XMQ@Ycz*4vVSF_vOYp^|7Zr7NSc@qqPb+EIOa2dNFCR5x33f_w5C%GXloN+~5 zfWSwy3kwy zBDd}>NsM@)Ej}EBiou+%2ih52h(iv%aCcb!n{FvReTHMMc++P~R}=vwaK92eAe`&z z?^GbZt~s{@?O#ppFVa%S(_JUQbXx~*jMRnjgs!i)1}!33uD`5q_#FI2NZ#Rh<8J_e z=YbT@fIwx5QGRvrWn>lD+IcIG<@P=<*|4qhzA)MIN%V=xhM%H^W-Z@3T&d21_Yg;9 zYq`0H((j{m;*@N~i>9sDNS<~F(hdM;c@K(#F?EP;V3j%S%bu>8HXXLvG{V<+* zu7UOEXP#j53G&jhSpg?CTs}OsPytM|Fuo6TCdI?*qMky0I%rU;8=@HV6|4<+!~ znaP40v3wXwOyxKpgu1|an^E4#h@25Q(~0zHj0lF1l_wbNE$xvIU*0S_##hsf-bCz; zB}LcxeK$AYN16RCLPD0?1wlE6_7}-o%NV>>6^V%j@MvC&c{wVVrj)vm~(E|*Lm`)*)6(5%iGBy$7xvd|=Hq^+1#slLc*(TR*4?=LIXNrVX?)!?S%85st$zl1R>r=2w+E3fPn_HVy1%&{ z1C(=j%E$Y6_=v-MAKZ(!<9w(SbIjq#9lL@U4Dt22;`ccs#>kp=vmQBCmQKdRL9UEQ>e)bdQ#xN4Y5bnCa4+k9ELd zyv5R`W~A9A`#pQ5bZJS-$K^YGM3*}1E(ML?a5{z2lGu{6>MYd8Cl8~@7CR*f;zU%L zX&O?UPsRh2u>B?Q7Ay!XdnsNq-NmYIQZpfWxtCI86=lbIN1n~JPxEsItvx3rqXq}G zU+$jKX{I_8UY`{_a9zy@c)i+LV<}H9%&qs;RTsIf-Xd-zVnzAjEHP5>))G$+(J)@? z7UEr~R$WL4dgC1aV)-Q<8a_hz!s5A`oqN%uUO7{G5rsyog!Uq^PeFudGi&Nih(*Ao z=SqM33Q4}Zy#t23iveaxn{ysK6;>VOWm$lestexHxQ%Q#E&w9ryw-zXv%?!3GZ~Dy zNu4p03w~)PJ&KpCwNl^B6B{CA77_v9;niz=hfi5n;yXM%-;Arc1{z>t8W+KxeHA>YY*j4Fy-d#p`6c@TeF99 zUyauN2++d&75rW|likt_BIGs79^{pk-)ZXLFfu7+L^XY0z91G_zTh-0 z8hydxFf2dwj24+65TS*x$&2}2*t+eMjEoc=QeKcto#c7Nz{j-npqc30!XnA9zC2gv z;;4MJ)}#VzwMhllGLs6qt7kIkmmj1uXz#cA)924?#9vuIs~*4u6MPgNwLzTsl)BE6 zd!DH>*RAqNg=U0$F!JtdU14fn;MRKF)S~-&ceMtYT0ytgwWd}jYN;>I0RaXsZ_itE z7nKa0e;B6TS~nw=uXQ&(Iqtyb$jA6!5?_$Cg_up%52Syic)M~_IO6hw$TMu>RcyTttxfWcqTzWcwx9JF@gEADR?Gy<1)48cAnw}U9n+K zKl0rZU1$j=TluIM)oc}4@vzTN@v9fAxhm%UW!4z))i{^Q1y^A>TR-BMCT=5nrJ_0j zT!PxUs$&_m*gAe(|0s-BHh|Jy-^J057%3oxH2Tu{+#r>f(^VOq34dco##=YjI zFbU@p@~5aP@k1*`?OpShM2Nw8dV$~Ny`WwdnfC?~W5g`^_$+|pf*WX%|G~T7xc_SX zJA|xI%lG~o2#o`|CqyBqae&bgmbmg;%-aWVszU(8MFV~vyqFW8(v}hRS&7@(5SHcY zQVhA#|D2&A*AVjjh;wKe1CC{Mzw92AaqGNIZ=K_%Ivhpogn*gcdE!d19#zz%XMzlN zoP$x^I30n&bEfCU>o>tiJlRh-4-3%*Y3|BOCGb7Lsz)D&V+GXc>JjFHLGcegkK;GV zoTPI=3Oiu%5%+c2AQy44f}8OYxY;(VR6P$y3q{j&o#>R6>L?%z9x#|rgG)-spJZP> z5AGL04wM;>fh$g&!1$ZVATT){5supdl8)bD6WI zi*{>Psu7fk$jQPMy>Yz+)iI7FtyDL|Z$tqI*QD%fW3T935ekwWOL~J5WyUlj#b&x$EIV0zhBQyFjEI zv7gE?rCV5?L~j&|S}c0wKQ(q1g6{HJ$6X^x#D;i; zq4^-AY1~lBfa8!te8gS$klnNP)IA`iyT?w|_NU_mSoM>3htnPflWLpaX`e^9ISBv3 zfS1tC^`8wmy@lOSP25sdj<>}12FRUD?r~|qhWM#wt)EG}FyXLYO=ua=m}8=AlpyCv)}# zMi}TmfWs~XRi!Kk-zwremV9)^lY%dtTU!Oy$v|})xe*teeglqUHQ>j_5y!1D+#;IVbUh{>0y0R^EdV(&gq&k&v-2v4N}Vy#?$EmYf<6n1#uH>*_68a zJTeLTIzjaWO6B0oRiwH-yp52Sacm*>L(pe(Wd}}AZpO(e-!WbAK+qrJ9WvD4uGi6Z zrZ<*maO7Pi>MsU(-My2Y?sbyxwdf%W|6lc;R+?R-5l(bF9az~NX3=-)(BruOKd40D zv!1nhCa~GX^jTr-YO#z0+G3I2(jVZ#S%A^YK-}k|%X7tCfi%sqXVE}G5Q1o5yu$%2 zB@2(*Ac*=t45HqhLDV}lCP6LR)6CyoApzYKV;0kL(N|v3)saXrl5r zNDY)RfG-4K+_fX@DvG21pA*=tT%sJVsm1|52^euklUSuiQo;PMDZ{fTS zaSg+Ll6*O(xbfPPOQ5vSn~=z8S|Z}0Eh)OVEsC=cE7cb;2u0F`)DaipkWTjY;_cVH zne+iPIU}TcA~y-y`-w}+EaU)8jUY@X^dS*@B_y>4QMOX=j_R&p>swUN!=`Im4(+;z z9(J#W{tfZU;!tp21Kmg?jDS=25ysLZA5 z2&fyrJvj`2%Zq-Oi`^li>T6Umn4_a|A{wZ^Eh1TzrfKO>q(!?)trX_C_Im=M9X#V5jy7?*U zFsFI=DCX)Z#pa*Acel-R+Wm&+_3Y$we;S%+?Am~@<}XI7z!0IqeZzy&3QUo0(n%cG zNHIlLlACtl!-+IkwoxSf)Vd8v2ueAB%wh-HV9`?o8*+tn;~gxoF?q~h_1AQ&*qCc2 zMOTPW`KfgQAaE2ygmJ4g3V*w2R|r;e6jn%nEY%oP2IM0Zuy|kE`XT_3oKNE~ zxMapj^kQb_3w5m$$ zGES?o5WZKj%X=7gl-cI1iHj=%hs~YJE$R~VH8OaKuXY@m+#KMC^l4EqkqGU1p&J<8 zVhJ5I5KAIYB@UE@{j6X~(S$avTI5R;B&`HxHtW~9`r&ML_wGLdRC&=;l7p!B7^x6& z{|zI>VjBEJg6BbKl80U_iv4N_l)Cf*8M1stbeBmn6|?#mt|p`?h*Zti4*T_~0dNbY z0-*S6zQceU#;7-pvEeak1>XG?>ZMY{82qSK!mm|fA6QUYbY+{b_65OjZoy1^A}u$` z8lI-cw&)0C>=H{NI4l)GeYy&Q$w7;!t2Bbiyj_AIIoKva9gzxZXFe-$m-vRWkSyt$<0~2d?VMlOJY6U zB43>*4#dMzjkYwTII26-9OiW6okq~j#FtoU>U1oy;!RjAiRqF3hG%&sPRr7k2dlUZ zP1g<8i|WgpI7AyBVf8d|q<{^3^GHv5^}HA#7}2l_qjt(1h)rVKiAiuAdh?=>hf7xy zUp$y%&OT-4rzc8&t!x_FjaaS0>gx=&Wnso;CarVz%0nVJVJV2pn5sGNZWNzG-2Ur` z9i1CmsInQuTp&iD%)-Y67%Qu=uV+AoYTK~6w-bO##e|=2mEbK(&&z-?TD%Qd@q zEAVsn!}wYJmhblaS=#qfhs^Pj_~t;YQz_oOIX-zv@mn))V9tQ(FytVD=O@SsjxVjt z%HCcUUj$hJ(An?dWOx=DD1Ph4i<6JrjX0t;u{0yu8|O}Ox@iiW4lD3T1y}0Zl30rC z&pfP$m#DXm|KS;H(_2=51hZ_g?00E2y?7ElM%$D7>H3ANuaid#D0>^%>}Mce1*~I^ z@O7uiFlZkCzvJjW8ti{r8orD^*^Sg$T+hHmR=LAjR;CmjW zy2EN=Ido9*2CVBvhv@~lI=kT=&#xlj@Brf)@PT?dxE- zB=-gb^W2AHJX!6_jq$YUM6zQ-^Nspo6wTSZeGT?i%I{!bMes7{=)nHE1BC;ZTg4wl z3$5ZUB-=i?ke@h`imNg*Xo zVJNUJC76hS@o}Kih~ZpnqnGeNA`gJ4zY03)-8FBC-9`IRK#{jWktRe;gHZ{WuCXSq z{wswbE7h073_<1rh*~xhYqU}bFzzVzA4=-z%>?zt7u!geixe@@RO)Y}0n}+qg1=n^LCsKXvU>-P)(KcEHp=8MQS&dm%O+GTEV-_^Zx8 zUOEmVL7mDZc{acf@~f4o@T*@cI45yQ+=i)P-_RCs+$z`7`j6afpY&t@#x4yv_R!b4 z0_r|AD&>lQnby1bh976-*WJ)&jcXiVci>5UC6nD+0MUti9wK<#wNrwvpRS#82CWhJ z1(sZJte)E;b)$n^h!d)s6YBTc;sGQ6673?R-rw8Cs#7*Sae{2+>Rg@%YJWK><{t4&D~^=oy(%r z6ZYI`_#CO5KExmZgsS%wbJ%9j?kK$~iM6At=-98Qn*S9-}| zHa6-2Q0T!=D{chi=2CgEaO72*1!cOC=Rnng%Lg~aj>A1{l3UgxX#MoGW}4Kk4tN$& zM*uto39q+;NLXx5sG82D-4Q2lk^LXy=-+qud(c%?A{x zq7l^spg3uEGKydy8yY)R3_~SFv?`S2BC{4#%k66U#(ksmx^RBFuUhDser*u98Weoh zbz>%!*OkFDS|btBthz{5gpUj%KJP^n)d_j@X(4)VY$CYnpGRwMveab*4L3nYI?K0; z43&E`II296;2{?r()d?5j?yZcB!lSc3x;rl>j~a7(R5fG2T)Kn*Sz8U$XJJBuLe6t;uG z+kMMXt@6gIA~XwCmKb`;+O64@*(f4BQ@D4sJ3HFm&I$}M*1L>hPpm3?Uuu@e{%_4 zp)VBh8{Wai%x3C05L=32ph^Ltbr{x2905PZk;D}d!4hiN?*;i#S@A|OCB|chZMU4F z=oFkR&6F3vMqYqhD6j#=S5qze4!5scRQ_FH>cO~5#>n&)_F}dj;)ey|7l4WoDIAtw z$8Qo;guR{t452AJD|>7n)phe$Vl;NfPPlYyI|3Ii00M)K>NjP zKcbfwV0bYX60_yA8ubF_H)3PrVO`5c5R#`SNIYZuwyEw|SbYoS6B)dbw~9@*wa96u z{t{KCulPELQ#zZY~GkPfVp3cEi8S%cs?7G<6<}l$@Xy!uz#A%lQ}4@ zJ(9er&thQm`{mpn?i|C4#8fDwd$>v6jG@F;mfE*43gXK*$9awbm*NnFu%RW>vFl9E znsrQ@;Zk*>0Vw>2LWU&e*?0W9dkknmEgwR`0W}U1 z#RfSkU(F|I7*0CR9f`X(dJ>EC+rr`S2^p~$uYV8F3OZv z!o=BV)Ai#9W&RGDiaZDVRm2{WhEs)>D4N5`2(i`Rd*Asg56)Piqf`eu>_a=A`PqJ* z?et(zbtiz5a+8oFf#?@gFoNOKAR#o8u^^dP0CO1+RZ(09WSkJiaEpXoXvJtn594T* z*~?W|37EzDJsM(~h~N;?8|OL(-2v}>Z+35YKaxJTq^Kht*Bmxf zCGTGfB%RnPUM$e@Xvgvq25M4AY9nwJyDiqrdZC6MfAo#&mih4+Z5gq1Wzp57 zhGuC-q+=eSzdC>l)k64!(f|qlq`3$2sg>LrpFSZYda7yQBVYw&k1`E} z*+4v{fxA&bo#ZqSR_6i=

xVfx1H&KnVu+DT~+R=(!$Ow-8p%3Tq0?SJU%-i6sUK zbErv;!AO89Aj{LmXxd0|fOa89IX2M297`=mCFP3IbP%?gle<$GW}q=A4M?i>+FrET zb}2^LmWWZQXkz!c6gd{cl7MEi6rHdaM9xpSo0oDLq$k1GJEuhN!ohQ5 z91UY1M;CCvJ~4DeU-ZfjB}QiHh2iSR0q@tY4*TZfR1kd}8{s|**Pu}>(XcH;k*u|@ z1FFZBluK>iC#0vFe1iFf3o&qy<21!eHO4P&NxR@C$F*ju$xgCT zO++$zR_X~xgkyqm84?r13y_Ro=tFY2D~-atk@+r#4bC0WiXOsj&~&};=BH$#U<5}< z7RY*n@G=1--0V2c9LXW6V=I>lu(3)O|$q2qkS5x&wz?!gxsz@|+w= zV`G?A0d0&%eV;%$2re(80M6o1PJ=3#7&@|sd;O2P1JN~hwljFu{Cj62^y(uMA)xy8 zlZoI2)NuSLUDV+SVL~~wOL>1@!ITL6-IlEl5_S|~z;n;JwgI-cG{!RpW9Ymo)3jw9BF(L$lM5Hu>OyXrJavTmEh8H4pJ_(m++ zW;F)Kp@oG+6M>q$#|(#;(X5~ad8V4MvSkAy&byA7FC+ow)lkDJ45Vb_ASJPPcHPnPg~x7GUdND^pt!d442WCe+PlN9wT!YjTs=}$J}HFJ3ui= zX2Deub@a7q5TfS z|HY_77SN2`K_lWCaNdXmi~#6+kP!ehO;XAI_|>EXCM!Rve}GxMug$7i^jBW{{sd#} zkoS5EsGO(Yp(n{PX{Zf)YAKUb&*Jbvidt&#%i?n_MUcntWpS>Wb}WzSCc*&jUa!)w^a;d)VApUouwxSMUm=;=_toHF zkg&h>ol@iD1Eu34oE!<-U0rsS5Re6;2Et6?yJl6G!^m$?nb6*!@3*a8Z?cypB4{V? zZDhDK9eFS;!9>ovZ>N*AQZ)oLv46+XnxvL`N-{M`A;P+=&weM&?C0c=#zD6o$mwMN zR&q*tM|$m%oRD9jp{1@p%8;{CU4|sdsR1>s{v8BI4?#?hUmK%`r6%ASw(BLJ(LoUu z=-?jf>-kUh2^-S6H&4$_z4FzqBXpD(EDxUbxT{C6TM1qZY!> zHkAZ;bU1mGd-o27`tB|ek=Fh!TKf^s3eXi!14TZMfI!cHMND((_|&cDM-0GIV3Vq*s( zT2911%U=dx>)-bgoo&M99M)gLM8-;_W^G2rmcmkGj1h z&%?A?<`o6r!H0dDb1hzux9U2^$LE5~IqQ3Y!RtCo9D%3ug^NzfR}Yy~K;6w0V=9(` z+)gXPJtzaWXS{cA6Rlb*E73hO)3Ks=CFcBhuI7dY;=d{ zOomcTV+`M2bYZwC;?)~guyKGLrE$?_<&Za zEC-;a4j@3xACR$0U9bbdfSPCkN(pdmC5vsiAq7JS-c{;3O-!D!coWVc^0q9Eb6Aqj zR9eZdNQEJZPz9pKdhdpy@*tPY0gT0RhaG)22olu3`}siMB8JN;-uf91^TL#w03-K2 z&yv~EXD#j#?2*zM@Mh}Mm`^Zj^69glN1t`)YCTW&WivfnOEUFk)p;PGUfMxelY?Mk zdF#3qV^+*>nf{!!z091wUr!28y3>bbA5g!y&x zR@_H`l&rRFeGNus?8On?Y{eO$n$hZCE@ZU}vpHW7L>b3?Ia!8cdX(b*cLc?exMqo* z#-5xk*@%|H^)4dJ+>j?NA;L(tNd?t-req6Q&wqs1q3qJs=)?Zw2#VK#c(5?j(RGH` zNiB%l@dk7XJyTbqM^rNNfG2Yusl|$U7mdVbl>I5i*8O5m)P8h*Z?XX@i|0J$%k%hR+2~yuOZ<`2#1RBfN>szscamg5nRukY z^fRRBo?g;SYTbYJE(~bQY+UUkh4R%Gn6Sw~-n_=-G9@pYEL-kgTz&PSbK>K zj~wgxi~{N~BuVrT*N#GOaNarcc7|T7fDC%M!TZe%brB34PT#X9dR5sc<*u@~K1rzn zs)v5VRDga*WB%43F;{i8v>;t8E^25O9&@i<$P&XOhLT*)vJ+giRPO9CN4z&KTA-2T z;w|_C^IQ(7!4q4BU?COU?!g`04`^pps#o?l%v7nmY$2USVOBx#slRvRXm7S`AYAXO zc?>PuqbAl_q4-qz@5)&l{KwjI3P?75n$$}u29`iL*G}-oL86%e;Z&2kp z@-v`*kKRjz2x~M}6{1m8h5R8Y4`p;-1Xf@itMWQ((dcnn8XlEmz4l8lg~72$Rk3Vm z%idRg*vIW(A8AVNAcGVjUnnK22;(EB`l|!<2uNtkGEe|f*)bh5`dgdr@Q;z#I^aj7 z|I#wXHT|K>vKzZ#)>2a}hk`@o<Se)P@08ih*hu4x0~z#hOM(RsO)a_~}?+tAL~ z1uel<;3^m~Fr+{!%g@)9u@mt8$=r%w9NnuF%lFLId&@S)_5wEB55RBjjt|(p< zJqmc-)gV~aF;Zc--0p(Z2H({=H-51d5zS^mp4U|d@c&>Et-v+W#VUR?dI)R7x;6pe zkb^MCj9s0MVp<_PJvykU#FZVP&5!|}j0*#<^DM6Y0S>R$b+PIYZ>?@r5W(0_>xqBP&Bs5(53Cy% zLN1~ojSB0qigr`uaCwQrsv90?94>D!s3zGqCS~2AY3`n8I$g(ds|*{P;CT3#5c!s2 z(S0@l09y?Frs#4+y`>0-B*96v3VT2YdBds}S!MP%UQ@0tOPud7xBFu}a@8QNYk8`p zKN6NbB1{{nZaN~{BL0?rCgM7siO9C`>7k4m#AUN8fMsT{V(OtcsadAyX2cG*;^V_0 z(EnFkV0bIeiZx8>U#m+g200YQ!%sJmz2d9=N4au*tX}%MC-0If zP`oRxE!=dEHJ90o`F9Y2#1690^kXSVT0fctH8Oay6E?LEaVoKKXH9QKH>)GD4q>;^ zcX!_trw%cJ>an6?{93aZ|IcD6F9p}Qv6LApY=>CNI8ceK|4A(6J;zXf1+d9!Evj%C zbp38(C>IVFK1+|Gd^!2di=jMH_{^sc#DmDYh@m`28WJvRQA0q;ont7kJ}JGGJ;zWU z@B6NPgXKG75tet?=Wg(g&DlPMfh8}9Kr;BdeS;qZ>wQNzT(|EA-+2v4OzLKl!2EBf zWj91#W*-1yz$!SYPU-|{p1rE9_^pWVUnl$s#k>#!iVA_$izNh>vZ5SZ=?C=h_D&;m~_?bR>_oR&v#VT`H^Y1O!`;9?!MI!Ql3a6mIVcZeQ(i`|8-&c%-m% zxxI}1o_w>s&ZiZo@NE<;xi-#Qq*{;mFkw$p7oZSkhrbFT*Yy z1VI$*SQcN_p2WoDUlMB*Hfc5ot{q@C{3{3Zu`Iqh_u4+_D-QK-32%ixwuY)0vAHR% zAs&VoCSj0$RDt(uj05ITEH_rzrwvMsY$uRY5+(cPw!b+ARfZ!bco>!r{>D`x{&nW{ zNz0xZ=IW_k9-(kZK8_&d022av+KCGj<2!9H z>%T_ZKcD!UXgd<7{{ND;od{yLw7sJvX&b*RH{(Ad>#;GnI#}as0S?90O$FyPDZbN3 zjRNzSd@+`)aYy@VkMqquzWBeIZ*@a|6Hgou-^c%wCpKW+zYCrysl#!i|CALD!^W6q zg-06pzzVp7Mme7|30n|Q1rS2>DcbShOsa)?UvSk1-`Qgh^d0@ybzPwX-a=whcA3rG zNIvEMA}f2*z}3(UR$U|@WkgL#8GNqCXM71lr1hADAifs`Gt&L->Grq|_DGi7y$Ouf z4EP~szkBy_Q=u(Y&UkoO++d|UEDGRDOkWZ36_c{MNddho7`SnK(Xr7H=KYd<6B5@_ z-(-n73Mtm2t|^x%8?l_}Z9#JPvUAwFBhkOyDMmTj9Z}Y|ndS z@K!!ye3Dh%2a&(9TCVGq#7z;b0hrFTiZ9IN%@K(2x|4I0=m!4B9}J%?JsJR?$g7x< zSb5OF^0%JoAfK#>Vv;*g)(qN*GXQ3uYtnK#i=&UOj>p<-r?o4Un))Dvv}6R)7L&?X zOPCs1UpG8xVeJ9wVZ}#XX2N|sSdD!HHnynSp2B)YT(}q1 zT}?z-Kx^D)EL!}s57B?jX1nai{w-bJys-GJuu)&MleY2;dHg2BzZjT|s z+h=%13Lb_bQy5_j@D2n#A`sw@vu?uE$aT|kpaQL*lmjy9K+KK8WM{(Ef1fUymgE88 zw;irhMv7Z}vvb(mNVK*UHN>s4+-cBqyAW}^kiY9Lyz>p-@A))(X;ZV}%9*l2?2P*9|5xT{6sn;&MG%Y}1%>iy# zq+yFdp4UK%v~#8uliWCGINwe3XfIiSr_WI(ln!fyX%k zaIsEu^eYLoxXgjjKEQ)Opa;z=>bvIPM`QcOhqgzs$cVznIR=8S%&+Qa1O8OZE(nGu zbt+~*Y3Q|;ZpUMI;FR40!CMJ18S3ZmSoh=QJiM1ypFHyav34%-Q5M(VPk=xGapPqb zZ#7C(ELKyoZ7^!HCE!MbMn#RSwXrHqm1@*ojfx6xqQr-_*m|#RwY9BP+iGho;Dw+d zC|9*A-Y;!s;;N0-0*bKj_jl%bHXFeH`+wip&qp%Pv-8ZHIdkUBIcLtCL)bdb4P=xc zzTdropcs|pYlCVeGGjD64Zye~dczamtWhV%iJn*_2zcLy$)S^Moz81(ymi===8;@2 z3*P1AHjFMvGOCU)2$rPeu?|p0VW5J797l}XCGHO!l_~7Wo+VnlpKhDpd+geA=Z|Ir zh`g=ee;EFLH@|b&|4#n6{WPStXdent{X>1YaX3mu_VA-NkjUwP%*Ji(X|kTakl8rG zp7wo~r;5zRA+gRL@IviV`JFN27p2@HLWH3p#76L<&OboNq%lfF>@TqLrae)+B6hVj z+suMNSe)9OEA@v%AwZiLqNOVlCt2c7B_6QS9JDKm2tAxyg&o20UFaeAMN4&z3)50} z^O{nPQ&!bzrEKs{3JqZ-fam1!cOM&}s<%>Id4ua>H$Mp$S)wJul6-ux13!aEdM@OV zg(I_X%)dFEH*U=~Mff|GH#!lTDPmdlsV*9Gx}hgR*^D`QeK7vx`7%@6mD`=g`@*{W zlnVr3b=+kiUmjkr{RKQ_S=VK~Q@Z{nGc_?$v-Kqdz-~W0_hBI$Z~VFL*BP$g+Fvf2 ztG66EIG=SJFx4In*W*@7N!QUBa~DkMI%Ir(?d#;8jG)TEl_B(L<1Xw?56GR8sQo}W zG`;VN5cl;Bj1Zee?g;Iw)$X}Zc(!Ay&?DYgb$jlBB(1X^eKbrT`TC=1U*8ux+@2RC zeho)|*KmH;bk`AcoNv$J@86<$f`vUfJRcYt9k4V=OMNTz=^&%js(%|5e>&8jUSDri z{OK@zYQ@6`D*m)Q)@gUYvxmRK?=C)^8MXA7nm9wIsJaie zlfWdk^6#SKP?ab?B{8vSx!XW02G#ow^^)VhT|vGa_KKASxd1TP`$O9Vh-534<;{)Z zfEKAr%q1?qDDU1yvb|_sptFDE`L%O#XTyh`EWZNeMHk@9f6*(VBJrKVs;t z_0#PeUHc#IMgUpv7VoqhNs#>*q2+n9;Qw41=r0ZdeJhj7Sqki5y8xMF*_7TH26a3( zjMdb$fqC+B-Er$|%?(i?|5%4lb~~ZOKar1?xmfA4+uM}}4i_W|{#?!I^-b0utE{Bw zUTg2@3Q=(rr)BQ63L)4uxutHz<48bCmCagE3*U}fn5;tXe6fECoupt}%Orx}v-9y3 zj4$XV%w+oTY|~{XTffDRMRlL{b&tr$lUCO^UJ^CFZm1fEm8;8l^&p_%@`dGYH3e2q z!vFqs^!tM7_c;`p=Dqyy_e8(n8U20>g~Ar!YFktxgl@Pe7T+1E3wL+O=o8yH?gM3G z-*?Y%C@slODkY!!x>X$u(nEqC_jW62H!=$8io+dcO}ULxYH1h&zLNVox!tNUzuj9) zLr>}Sa67FwtV39=l=P}PH>@!zdl2@HQ7a!mn$P)kQ9iy4ugInGergCQcvI>P2N)D} zlHnbwJ}hqviP%Ev<4|GOP8pcm@Hnf50oN6jbM|E2`&MMq>7oSoPXfv5sZq3!Vmeo9^)>*2KpUpjT;`w`(g{-Setoqm4GT#@emN{7wm9bXvm? z!=(yM-SjWtRI6LhyP~GPL{qbAYj)UHU7@X(;;tOWz45PTeEWwDHM=wVH*||{Nc3HbWe!$`gk_`0}}K3#0SG8}2K zw%G>!HuqKBQn?mMTn4|(+*hQWsqq6SupmBWPHd>R+$5Rhkg9BQ&=zA&O(_Tm=?@{@ z2I85>D`%z%7S6nIm_&t_te=ehT#6PTz%Ex7#~rCH5Zx ziFImMFnFtbLwK7wOnQ0?kYk-QqMBcbY9_baqFVYiYwVRLePdf|DP3z-N(!xPzhx_i z+Ls50!+VAT!}AuF2_->WFUJ=B3FNy7X+l ziJ_y-0Gu$l1*k~|8*aj|_wQ2~5|f%ZEP`$<161n!=I&WCz`9(lK-$wadvtr$9@?-|Ps;!gB4xb_W%xdx5~eGi@t*BRvUiH}n(+6L z+?N9)##p#9slM9es@*F;k;F%_#jUa;ypJmAzVt!ltZe-H_cf(qyeRWdXRLFypJ|_( zFO?4YJUxsMuJNxxw?2Dub(p<)nY;C0Vlhfz5Y>tmYPHNmgl6F^a~E2z4xcW=(C-ue zuI6|5?t22#@5|M0(AO;BRHuwYctiPdEJjGAk&a~ zT#jiLh)kqwap(Oh#6z_^(~8XR6M5d{AfOWsSuO6nTj}Jxi;FsWNr0-8mavmnItkG` zqOXSmQ4go92cu*W&td`vtj;6(ZdaH`TV4L|g&NrIs8Gj6a zuXYz%kHsvq)mrDpdw)vDF_HNN^9L-g_epCK3hayaQl}Ey~2MS0y z--;k%6(*k9J=dz6ek6M;tIrRmk7T=h#bnGEu*KDG1(+ij6#?^@22@NMlK>_pjgRgx zK(fY)Kr&H~6iB0nr_Uh`_&)ln9h;l)-X|R67t)E}wL5T=P5AM7*jb2e{hrd@o5uPD zx$(Y)R6K8lA$6s@-+oN}t)ONi^KW(^T`>+N+sjVgFDFP-!SY7z0=oyVt;SLYZFCx( z-D6%s)G9HTy|mXUvhlZjz|iKr<1c;yK|nuNMOmwKLvxC^#jr=eb0t1|2j%0peMuW zAMKJ1QjVqB`0;Br>0+(RH1NKAv8CKkgZP^DW2O6^nQ`dtG+$WZPESv<0EJbhyn`_(AUT@#IL zw#5c&cJL|=EU zh*Q(kH?mc`^o>lktC4-&<45)ro3n|`s^;wcqM0g;OzsOdvK!usMt0L9e$Ga_k^M(D z>0=uiH=#9Wf0BJpjQSp5SmEweK_k0`0``HUeZ^~|iZh~$?JDH<_CKE!{VZ9M23NRK zRItUa#*XHR#h&pO-1}_=;Te?XGwk>1Hioa@(LxHY1CR4;*xs28_ho!;f{^V~=B|%lQ z@e>JsFNsH3agBeEX4ptReETf-Ot_t*IS${vx^`o}L-O%M_d3u&9`H`M2!t zEFYomL;s}3_1)Rw4-)p=WIbi}<8;Q(!|dwSa(5M%7nrM#H?;B~WLe2{5McbM#+?!V z+-%g{96GGe3Xp4GT_Hfk8#I5ymtM8@52V9Z0d5OCd zc?<>14?H!9_?m6zLBTSyDLU(e&mGfgh2B=v@D^hlvz6X5@kCd%Y2Y)8uxFib*%z7ekOYzFrv1xmhcQgKW`LKbqG9y>6|ic}_gGM)T)|KQH=x zny-01qWPl$WV6|*bUzh5#Wa7n<;`O`??IsRGJ+%| zN4nZq!@etBwJ(M{=ibqi9X;$ARcmsc*YbrYA=53i5#F!K0<7Qt%M-Xn88LNzTi7UJ z0IKI^TBTIFz&c_1q0&*Oeg2h*#J@+UA>MsMlG*3ILic_v@w{yj5_+(Dj#xTc-=Nyn z>B`#GsfuKVOH=rAct~>tS&T)zNIO~cFKpI(;3ru`fl%rKD{SMX-yV1N6x~ueYU%$FIzW_#E0vSif!)CQL)lYlHbf!~nzopIvhx>;(taPIybhWA`)itDh{4{x4xY9j@ z`3NCti1F#%*d&5atC=Xbmx+=uT3r$`%-$CS-;;((N+~dRsZQs~45j+mnWAEwJ0&W% zx?`eZyBlvs1e-%CfXB?j5pYEW7b!Ir?wM7Ru8e8GEXTU(DZm+ffDTpXnZ58rmt^-0!amfv<7xaxZ? z9)VitUcpYJTLLu}ChiRRSn4WoW56u=_9ngjS$;03F(vMmbcl_lyG!OJ5C5%EvB_N* z6>D53Dz>?bpHug-lG5SRdnRE~)>k!de8>r&W{Xj$inrewtn^(Tr7roQ#I@3;xp7FC zf<%!(CEm4YU^Qx~&OP;_M$lWpPqTZ7H>`_}Fu4Nmp-bFSraf4Npf;BKV`{%KJK_ZX zWFE0vrH!%rCBE}-7dp@3;n{N^a6C4!a_Dq?k2-V{-A2MiiVNqLG9(=Fn&#IJD0!0t zw<a)&r7*0^6p#Wr`)PpR8;ewk)6b&6ob*)kjdSco*j`Nf5WcF&1Et9C6>vB{kn z6>Hp4QL)Xvc)JK^(7=*6dv>Jp0(s;Bc`o!);u>h!(^CdMW^`OkBeGXPEymi6TAJNY zp6^dBb*_sy(S~89GMm24N#g=r6LF9043d3X8NO8 z?Jkar#D9y5HSYAN*ycX?i4a)L4pj`jqE+yHvs?35eh$NdA$1|(PWmg9vi`A$zyaQF z6BC(D_z@86))p81Cu+LdZIDq%%`~~*s959v5f$6q1=jb2%#)cLh5!W34NRLmNYXtV z)vR{+N5v-htEgDxZi|X-Za+2k*Z|GfnY8Bvr^)}KO^Z?6BmVX9zYWv!`3YP!?0Cf> zE?(2&i2wbZjTl&1FgD_EJ*N@t;`*<7**EB0tO+4}y9khKH#jObxeYS)coON2if!)l z+j!ffJiJWqGOd7ca+jRXBv#U9_Oyd*H^nCW%TMN?qfgm?qayx4QL)C!o@U*&xxK7y z<)JK|%&m}O1%ouZX~@{?+@@zW?97@0_2xho3PjSxVJPs%?xfE@^bRJepqG>Yihkcb zq4opW0G7Mh^Lc!-)A(fT=>cfOKuWr`-U23C%tgf}_hwYAanDD^Huv3Ig_^tIdX3}0 zGIW;2m#r6 z$=lJ=z3w~<0G{rSTjJ!+u)1MqKUVcZ@y zQthsficRk7s957Ji;8Woyk9RX&JnR zIvJ%bk;c2IEm{`JgH3$kD^`Z%x&yShHvgnma8^_t?Y^nvB-~SN6CLfIj_g;}ZoV&u zkxCwjo=oBSr9C0%-{uR;-Srd_*@?&Z9L>^~UA`B#Eeag%MHA}&{v8>apG;5Ee2;eD z@hu9V$-WqNH8Fa!u4?Rw&kyp2{>P0lN=p?IQ3|F2P6e>!ek?pd6+y%YquZbhpXiMhw$gBl5ZkU0Lj;J}3 zr1obld#uXzI9t~}_PXdZJ9DgY&n>s9?fdMuPw_y|a^~bC@UQ2Orpa-a_Fi;&{h06i zbVZ5b3oj3yr`51?2A;1z?$Uzu^jR2BmT~ujkzdfH)J28yY(R9D#wsjmk}vk)3;DBU z>hd$&85NP=eKDNbsnL^R@icp4W>55m<*tzePHUkT^Xq14+3Hz{{9OtrT2#pzsgj|~ z1I}t%2m+!y_)&;5+cc@|Qp|V!`zHDBhM6wg#KLYY_dBivjlYr_ zym%n=P%>6we2k+NS3R4mvPXv%C7Mx@_!{<|L_om;pYg^qfpvxz>G_+!KqW zHH0;eR6W*x-??ky+{bPx&3La;dn{TXc6shg!En2pE9ztW*Ugy}^m1`*>{|Smo78iQ zODzqt(CWUgBDa??o}*JVd&nk7zqh*v6|?6K<8Ws5zv@vGr#7G{))zFzQ}h_Ch)?2g z_6l1?vn;`{`{AQ-_3*PuuN)KB-jl!HX@5F+bZ4rnrl3Vr(87r@{6m2bZ?{bLjrjH4 zVQBLi^pc$Rh+?d=XmJ$}ZspS^Ks0D6`9u@$5ndHeCzrXmo@EXlQd8%n?4FG<2KtL% z_8i{**>efxwA>A81#dw|l^jDGgOLd(e(qRH>jKUM=T3u2(=60mm2N zhIFt8PHRzZ>%A(wUHe1$^$@}|5r(Y8_-kAc5oAC39vkd=Qbb$XiG~1kB&3Z3W)>Rp z5{1gk9|@mo^mLwo5{Z?_0_Ugq-;sH$)x8@PTihEe3iU6j(DN$HQcHV@#zgS+7J-cg z;x1%DnCdDu)$Xnq{OVlQ-0gg+Ax>A_%%w!xC`0eheQ|8}xNlTkgw*y$n1ljA6YpSdBEf~kv2bZz~83;S^slJ3}U6>sd8jC&c+gaP42>KMG@6cZ)=jj_)r zf(auVg9oj*1W_#Vk0;M~JjwOpMD0lx7w$4C7<^RbFzzf3;u?AhKW2z3!Ew-A`bG(U z#$Xr=b zBIkYX!Dkj!5-K_y|IG!m+RdtR!rJeb2y06+D@y$eJ((Eqa3gmxR5rVA?USXc9W(E2 z^1p?jjMXM(?GoSQNZRej5u>AOI?d%q(f*NP`)~5X9i#TcUo$HPSVJDB#^6e#t1hlE zn05%iS*>q&<(tM}eP+d=sNdOoUAvg+PGBqK?m%1vu(!Wr+kl1i>%&d=i`GnZh+Oeb<0Xi%(Xpxbg6l_zvKoTs&m^9KHHFQU`MQGQsjmH z!8n>k_N`9uk&j=pVFQ~Q47$+buzdVMzEJQwKG>}Q(GDJ>zPXuJD2BIcLVGvtrp-O| zhT>X%r!pC^hy-^qv?18pPCjL5sS!ueK>bmgx&E@@R8Ep=uWbVhAil~BG9TXwXzJzt z5u)Z=*_N2YL8*A=oedE#4aMh$KMm0IZj6386^vl#(BHG_Dt7!!;j$&I)j~%9M@qSJG~o$ zTUfnGrcnd1T5rv_L=g@3;6~bIJ-FDsrJ=BIB+T-L?8zft>dB2@zyq5rk4jp*6+PTz z38TVok5LLS*0YtKUm0jZr2!2p+Z%%;8A|+$6_Nfi^}EGv?xu%|+1yP3B!;xhYGX*+ zU$<4!C$GbKe285))ge90<;<#PhA2~Q4}ch3Y;muvC0^pt5#N5GTpVj zAc(W^Lx9NZ@?y&`oQ`&|wjNQ@<_hG@1otd9g|#Lc>k|Gbit1=?aD33SP~(KB`k2?t z+55K_I^SB~LeEnz!%xtIy0+7HH%C;*Y;~@QZpZ%tpGR~j*OEF5){z)hq z91XF}ZD0_ylUz+B@85Wz_fN@RqafuFp-BL(?pdn{hFaWW6@`|^ROndp2_C%x0QI)aC`BWh7dMzeXzExxUnV= zLDHg;Ak{ue`CBa4@ap~bzbqK5jM3Z4S~iom8dwO*ix zT(lr~=%qX9aVleuAke$UHiSvtVr;uc@Ef91zRPfIn`RmS;WR$-VDZ>~@1HcbuSamU zxkIe@UyN;d^i7K^QBh-CC;OQn+j{W{=uva2y?r!BJ5l3@8Y>z5DtI5e`foN#k@Jk- zWmpJ1JnHwbIl{ra3xosE$J=WE=| zx&PSa{Hkza|54w8AY0gbM8mV8U##8>Lobbfv!Ty_pm^vH_$Lkh8~!5={cBeIFNVHt z^i7K!sG^4csZ3-xbZzz$#oZcS1&ew{83}|CpVJw_Xb>;bM+JzFjeawTNA!a@f4{*m zh-dqc1aYSo{|ksujlOAd$EhfYllCqG_E4UJMY&6)2(+*zY~s>Ov|;ReYKS}oEagE7 zxA7@`fUR3)qY+^5Ma5S4R#e2#L`8MI+}=f9&*v#vB%Mr}CMK%ngxKiuy~Xya!bL}& zNg^k0HO5Did+84bC^1JeioEeOk9@#?TaSH$=h;-0FMlT7;vRY=gumI{r=o;qcC9ea z<0*fY>i&1do!ebZz1a=v8`)=Or|Fq##Et}?xs017+XpA~`kL1-k|56ec?XJo6}Dx? z+6}yN4Ydnn9iJFY$DaV@QUagjCH=n`_TFmgty|!F3v5<^4L|2_>Ifv)QfJS zkHkc>Y)Yo~*wn5?ZwG{L&x>_RkmK@mRNrCRq5fq9CZu*Qdi_lF`mFSs992ZM=Y_8a zO;YW`>t9B%e~|uaGJDxzpAM&X|FYOk@8{X~W;tthtq&VnhzywaR`>Cjz&wJu%7f^a zdrlitb&=y>OFsUSe{GPj@|Q@1Z28a&8R9qj$Ob+`yjkWZmAhxO!Et^M>A=_|Ec^lR zIbt^W0lhE#)PJD;a(9Uz^iogy=V)I1f64x5_@-}Q&6!Sr-kQ^<5EhNWmxISMZg{NY zdLT(W!b&7mFT^QdILISKxP}Ho!@cmqhJ4R)9E@ZR|K>m>wphor)J$d$uP@;#y)C8V zRU!z6-ovT8`Rl$lmr*8y!RuDD!HJa`Zj&n)ws{=sNB@axiuvn1t-dDz z{_6j0`l=t( zQ|n$z3|y8VuRP)Fx1SUw%VD7#SkLZtn$D4an%Ljjc#qzEb|U8^1`cn&R)FCjdff*f z;N(D~!1)`0HSjtYp95}G#GV@!@&9~?x0!vGmQoKqTHSW{fGUWEnMt`uU$wg%R)$FQ z_O}Ki^2ks zAHvsA{suP$6UuV~8wM`4lSOLg<5%@=zc!>Q>Ga*<+gAQS?h&sc&dgsxwPy z{P%?Q^+!DqP7b%kq`TZ3i-ea8qGFx<9!25rmnLY-{Qvx4LY!2Ku_S)9~j z<9nUG6Q7eXnqo7S5p4S2;w5dkTa5=%I~!@I5nVXk5VG;VcWb*Sx+bM$keNrd9vJH+ z&<}mBq>@Kh=Lvk@hsP;}AExqy5mmMO%2PIYoojtDD%Q9?RqWY;NlVPgYwe`IJ)!n9 z4n(^i(`r)KiqSd@@l-SkGLZbhJS8H(ikJGjc$QIGZ%MZ}Dw6+DMRwPo---EXaZD~+ z3l?vqcvJ}i&%~6tKOA2GzCCI#>3$FuYutCEmQSGNEgEt(L@;pI+SkmNqi>UL->6vQ zc2luO(JG=9*6NP^Gw&kGX?Asb6y>yva++NumHj@^>|T|5ORrnqGZZ`X>9OF6TvRqm z$Ahcvv8C?q;|dggZ}dTpyFWOc(tWG1 zy(SgGb*|nJJ*f!MMKEnDpt!LQs(4>3!@^cHs5U(CmUyk-MecFNNGQxE@Vv-?9KvO5Mx^bEx0AHzuTa3mzAESpNj%&-||ykC$POf zsf{~|a8S2pA4nJq<$;AM3G30uIpmMRW-w4@IxeH=)>*DCjHThbW*EQMFktcK&&4u* z&J*W`2aE{1{RWHBdA8HJ9>X7yJ3zi9$+6GYXTLEZ3CG~JOq*Kil0A5RK8x zvW|LCK3f=xEOo`hF#o|Kuh+Kl_z0)LwhFsJ^pfJl90<>aR}KFi*rDqh_isU`y^C$j zp8+B>yDM4oA@$6nza&0ocQfXaG_7X=Cz`FwwA^_aCxZ!6oCY|#}E4A?&MZn5l20r}> zC6LBCKY>Hg@|y1zb=c&Z!Vc#&7dmWpwS^9K2ptaBz0Xk!6aXpu2|)Q7s;}+-Ig_(?a@Nw9(~pOa!K-y44lMx12L_xJQ`n<+lZm62!>ea zo{WqcJq{+K%J{L|AI@l<-&>;*D8AAE?-5l0Pb2WT!s^__{$QtZyy?SZQ3~kIP;i$` zxnZHw4Umma--#5}@qhZx$Q9aC@P{x-b&Feu8!RoX()sZ0Kd3b@*5ZDPUeFkP0WS+; zd)38meDePSxU-~N6a%+c-@N*4Lye+^gioDm(0N~x=>WL3z$;Pwhe&@K?H4rqlfShA z7aW_%sj9LesNgsszPm$muOoD14neR=p6q#)zY-#UW6uOch=2CBNrks|>l%`@lev}r z<6gNI(W}_Z-Lbtm&Sfk#6^`e6~D7{4x=eF%Xg01Ui-ft!haApx{yoZ06 z#Rvo)>!S;kf3NRqSxs(~`f)A2ctUmU4R)$Mb{_BfCu7s}x4AFgXH!S878BomWV$cq z`F;3;%Xgfog0GlGUlL4hGcNmBZzF|$=wpbJi^uos9sU)+BqkU~$}C^~Q&}Gz&DlL0 z4{3=eF$q_`<#qH^wzM}$1OJ*d@Por3bYv14FXr49#x`5CF`q9C!hnCDzJJtWdwXEL6?ZN%p+NQCHpi3qk`t;}}o zZ2q6g|I>w}O84qL;kv4H3*barYIFHppZ!5;1Nmh$`Lfv6*F#vD{7}x*^211BY)`{e zLxPPxKlSDGd9bu2e(hNreEMG66dsyHhM19-IKC!%KlEGo zU-VliJhiw(=r=iz^B<7R@i-)-KA31f3U`2Q!DN5pUTT=3mUUFE(Y5^-y-;T(=T#ef zj;7@ae*Lz~I^0f(OAxop&(^ikY_+>zVu+ItR5|YKUi)%8kuig>6ktgWzLooge7hM; z$OH&6{{>9c@i58DSB*9cpz%!kmW{IWvYr1IjZ$YLwx5l;vn<^#jtgp>cHc1hz%%<_ z{?>@n9}T;?n3=fT7;I#uu=~ZiFY-C@Y_R(?{TJUQVIWlY8pbS_?-xXT1N%iH*yz!A zu^FmR#6~A;7m3i8L1;;GJ1>LK037J?MN!URInQ{FZL1ZT&%TO0NDkX-MUdQAk%y4h zA!@Rj^^ti+;g>>nPh!DhS$(y#*=%5v=MWj~!fF|Qi^A2y19VS$bBVZ_Vfa|dw)IFh zM#BF2Dd4HAG;?}6b6Ix%TzeuMIQeWcBuM+~uZ3~~Qp;z8&3a$$6;Zw)#9Lm4c{C*@ z*}*P?Qka9yX9c2`0&6HPdLJ zNfD?(s09QGC6H#Q$9atcytdCNpmmb6kVR;n@v=v&?!^hM7yn2yMn~0jb;yvvSP(PX z=EG--aOQbco6Pea7(XLfqfKA+$r^11EDZ>;R4Q4+k9IRzgSH|9lT_WN5f@|)xQ}6g z>Ck=$CYp-Pz!4t$;-ipDcE)?FRTa~2H-ANE{`NTDNMrMfE>x-bOAm@(lC#|ncR?#6 z1j&4n5+gs$pYYx669g7v{ z_tPkJXac)I>-M=|1(eYiKLRVtNQI#lE4Z9KYZohGUfH$6AtG^$hxeeUtt)(6D@~)- zNRCs-i!awVC-whkLwVT$QU05s@Xdr^u{uLQ$;Xcce6Co9v!=G5;tMxu=_X7kgUOC( zBEc+UGVba-#Q>S{>6-EO=xL^&&W@hU+2>UMbc1~-PdoSaKRFLx9P9Xu%E|1A@B9%F zCjQK`vbn5I0>LHF%-OtT#pUA*?7h?bV??#;K~y_ke?jJ>bL2MZosINfEU*Aq{X8Aq zbti-HJ#;0Q^3Mk@hr#;t=b12A2WN7((T!f6ZLezonL164*Z_8WFdV84ZbbAX09^i0 z;cx2JedwRcUK8+rlXVpw)+YWLerMwMW{GQs6?&K(wPHQo8$DSMKaHNOhad7JauKOC z>7S(jsnb7-Zdt8@r=!GN`5$0qWLxoT;Cl=$q^86A1Natf%>b;Xc>tWjml!9GI$1F^ zbvP4V$$h}D-LfD2M3Z9@Tf4hmFAG&Zz%V5ltzB~=-Nt6T`$Ln{X4xBv#Vvx zcHJam&yOWhvhOgu{h^)38ttAoiTAp23l9Rd#DmD z#uh53Ubv^x=dm501x6vY3vTJ&*%|?_r6KsxHh@qv>XfWdkc=+2o-tHLlF_`M3Z(x> z$;g7hAQ?UNGi~UDu^3j8sG*#{h?^53*dwdML`=<+ms%t$6`jl$_V+Dzcbrh$Xi7uL zv@BuG`$&dq3{nd!Ig47&I@aQi=~<*#osXZ%3wGxteM;k5*Lrh;SqFAbW>5A~S7Y`_ z)&_C;*?27b7GFg2;J`?j!a}Q-M=3mwNmrrCwoUS$)YhiRZd)XyFf&Snx`i!(XrSvO zTfo}-uC~>7g{Jm)LqBoz6I?0|wf&NcP}^5QJip!j9GyWLb359;-bUK~Zol{1zTTnj z|EZ)>UrZu6N~)mjWAuw3`Hb}ZCsQYFP0wF3?GWkt2Nm@EL&i%XYPbFBCmZ`I`R%S8 z-9s|V*SwN{>+gWT19=+UzVPAoTYR_@SS8-cI3qG>1A}#m(+UUllJl_jTbj0NM58)J zatX7{B{Nj0D7F&G!I=&6->kA}9)^2xT}kYQ?i~KSzg;Oy|D`FCjuAR(JT-{2-%$HX z?B;Iu+RxM;$x@#?Uy*TvU{`(f72LL!`P#xd)9(I>ju6dPv32Gg%sWNanLo)ogF8nw zWurAV?(>mOg_KplV3Yp8nzT4jLbKkyWb|_avs5%`f5(OqPTFsOUNmX1-n#jRyZR6R z!=!m#r_Z;-By*qY*PmNdGLOf}-E^&~Eyx@0Oc(_oZrGu0BWZF!HZ}yPt?q76q@~ z6^I@F$Og|Lj%;}M7kk&2b;Q#otSpMr&zSHxzvgEqEaGh*MpJ*u-N4QuiN2BmtCsj8 zjHceG7O{wObKxlhOoDGOL)ts6A5OFR_{wFt zxj&V>=GY3vB(zl^eQ!AnV67cn?KPJ#-wd7@wSdHj4?U3{G6FNs^xQE144F2RIElxnW{ z`$E2HByRu3&!f?6ik~aFJwF(kxrQT%U`S)ITzQKKkhC&SNHW$Zo5WPDbq{6X@D1>k zASRjL=Qyz7fz`Xrd!sX-jx+>-%~FD^=bNgbiP3$A#Dly0%Hl22IU>hTG|1_lW}QSg z6*No^s0#Q6^o7(Y!59|OyVTIm=@*HjJdCj$7hr?Q6rT;kvqT>weImgb@3qKrBPbiQ zcwk9#EJlnD%TY5)fim92Qr?Ion+T@NBa4NWXgOW#w@*k|+co9G#$*?H_MfX%M9 z;%R7NJ#`MTBVkWyiMiq}l7O2KD?@*D1lm*l$2&$JUtjn*_e~icn#e4z5iWK5K3Gk& zba76h7NoaLGOJ4~0x!4kgwDUGkpv&KZtPux2wbItEH{)m4YBEno`>W@V6&HbJ36uW)kzL9?VXj zzq{nnuF}{;SFNIMB6xKQ+0UqP3pJ8+4lFsQWHLBt=*qO}MR3(>YU!A$t2DUkO_gcA znNMio?>yGegm!3R8>+77nU>o0A?MG*RV6suA_$yW^^K(eqMR2bBkxL7P%pWb&;Y^5 z6N1lFrAZU$et~W$5guff=uQZK^6@+~C11pjiO8lLxX$J+(GqKTN@S;14G_)sf>uv~ zOjPiqWoOq6*+D}-{#WM1n#fbn6GQes`$!%%y&$P^j0+DmxV*-*@||a|%5TbF*+4q? zT@tZ}>PM6)wQy?06dkTF7?31?L;4lvCB_x2XFy`kr7*Y&wF?>XUa?s}X1^T!6mEvu z;|^qM7?WBhzBQau>LrtrME)T>(ZDIBNkId-hu@=m?nH(@fm>kQR3Dtko;@gcK>fJM zRg+_#2bqF>L)9;eYwuU69qZhd3JtX{$2z{P8kr{sJSKln?hOV@#dVVT_+l6g^kESs z7p4XQFM`eFs(P)#QNp8eE&r(c;LNIepqNnmc5K!kdC^e&X{;kI3c`0%O|CT6kGv(~ zS(ZeoFd%DirF#}|{6JzI=g|ZUu|84zQEb+Cc}NXa(;X*U(}4UakmA8PAaqfUTHon& zTTd0WzMWdHuc|*>d?a?w03K(;%Myn^&L!C81HefNVgHG!@dz7pJzHh7>RhRjMVQ#7 zsOi7(gKwI)W7qtK$Jj&br!a@#fFvGIjmRu7&6OvDkEURJ`-Wz!CB56jw$$KoEn}ZW zyl_vV%`yQk!bb3NL-4qW^h}sqD@aJ~^DzBEG1(LH_18X;k6-)5hJ5yfO_XhOzKlmc ztXsQiKx&_BInBn0YuRBm>O-M|8|-xgJehNG3s$D!xqN*6Nqidd)IgKDQ%HN~#FmQu7TZGoZJ_pL4-CInA6j_EEeu*Xv)Szv?8Ju-{e z*Q*V+&xY%3u3ukI1L=0LSqEuK0K$A$VI%dyCKOKNBDwALgZA*;@Tg?;&K{7*+F#5q z*b0IdjY)`G)ZE7-@EP;hhxcHN@=80U}?W=x%Sp9Hc9h#~M zf8}7&zP4_JSj>Ur!`d;)Z`Ur^ke>stN^&FTB7&6=hViLf*<7l?jDEn6vP!|6c%g0T z-b-ZUzr8A{J!i&3Z9PSbe?fpT`9+(r&tr`)iJa0=!qbH7tJ!I&>xr- z9os)P2qGBsBnS69`#a>*f!F;N9V?J3xPbnvzy3XxtZL^h` zd2ky&N#L&2?xk1k2ktMw#D|MJ2NKrwPc@fGA^KCX0A!CDP@kQMU=Y>DFaI)_%a&$< z+7;89WCb|7FXf#25Xd?y`hcDzhm;7KP152#nE&!cqzLM}fAEBbAPlo`u{SZ{ssLU$ zJI}B?9iTTc8F9YIHDCTD9O`FB9C5o0#P>gojY7@NMG-x?9D^;;ll z!CRYq``Qq;R`+65Y;%vyma;1?^N*B-NSrq9pnIun`-O$~I#_GFb=>!RQzVS+&YoPF z$p2Nwq3q?Qxt)juJs%_BVFV;2(tSQxR!Cgi>Utv;w$1&6B0}y-j|v-{8V0BsSsMa{ zGbzyExa{RKwELfu6(D6F$gG-;zmd?Wmb%}NV2?^Wh95UYAMa-cMCo@PmTMt3FQG4^ zShJ`VB0ETD^5>^pNd?q*h6)!^_Kxg`E9f8pK3e6xk$dwBbUh*;Klw4%*6N-$hS&Hd zX8V=iYV|A{HkA(cmFB2YFxW4E!mYkZv`_r~0@;5PGtsiH z=3d^i$=p2*34&s#-7>T^@p^?j`bS_$N7th0#$a1h&l-Yls`4)q_&Y@k+1F&fzwc3j z%29el?en@;vK)P++tmB${G1CIiQ45{D$>pZ?_LtxxO$V z4@EYgR&TXJobo;^MTgbmGalbY%!v~rXFI2?3;9Kb$23|C8PKyMVz&w1FU>V{EB-ua z%rUp%I`pCY5;cszAF)d7!%9#3O1@6^#7_$hhbBYD=t#GH`XlSn= z*ZOg6)(cdw?`k!Sciplzgukp+5)4kvl?^4yYPa@Ts@2*_J!dJJ1Z-@I&RqMP-Fn$+ zOQhE>opy?FKDiI)UArgiYhStifJE@bg7p>qY^Un$AXa=*w9PQ+-kUPLs!!)_&6laUU8heD}Y#sw$JV(}zB6b61K?0wm zoV)Fo+sfNdvH|+9JZQc1Y?FKJYHOJYTua=~n7?3sj-$5F$F`~9V|#N^HTg)*mf?4) zTLoM!RCbvDcF4Lg68ntz+C===?ZP0jW$*r_pnbORlPodHbS7o9&a1zTWUnk&CcD1{ zVr(Pk+$^%X>Y-w?x&f+&to~qg8DC2cBdfDi$rIiMzD9-`vKngFiss(typcJFX@U(z zA0}R*>RElOf>pIoOxvI9PN}2ANk=to@|T?~n-8oNw5)LdVDrfBS3J>Wv4>vH#Wl~v zDHW#qNEoY4^AMo3rFh#dn&xCM%f|~rT$>Q~&{^!a5=R=L+NeZ1`1;N)oaryqma- z>DuS9AI>1Cc>cT92m&5|nMe@u^@k{CBSbv_PD=`w!KO-sy^AfNlrV{oG@ z8&L#;MaeNAHH>-XsO+F^<>Rv(s=)9m6t-{3KZP>TVBu5-G}6MW`e%fx+tx}$eo4a^ zbvdPL|6@r$fBDeFj8D}(0X%RI8`#*jr(B238Ho(=6{2{gCFQ7ubBVBH8YJE9_ceC1%u?bGUdnMV}(2N3&n^? z_vfF^lL%-|Ny( zp8DG1ihY*a>u?c$sy1-g6`;t;KN3ay>t3_>;Fxx=85>n2z00GjpWEI)rpjk*)N^`( z5BAhK2DTUlz5EPGW*Iln@y`LDeH4A)$YOMU6#>&Iy3$iLjLK8AyyRa9z2w8SCzAfz zgb<$_uLqxt*o?G>i*)uVyqcE@&2LRoxY?F7@3m-;FVZ6=cGzL?fma9)aD6|`xk^1L zklOo%fl3pEDSSVZPOX;YZFeb8*&|QxVdpH_>!8M9?4-`M%0d=a{#L)rlXxPA;>kU` zP@Da5|Le6Mp6~}zp3@l>Qs`NKG;x7U%G8MONe$Z&ze*)7+`6#Z5x$yT8lH<01S?2L z$dB-g^f6r-qP@7Ucna+`j61i&)F$G0CB{u0c~NCUa0P3BWpdp9>1}-guSD&{kwows zoD2?I%)vY-XIwmbSQFf{6aQFB7M#>L)aqyuh(7+1q2g!|ruX~uUWaOg-#Q|6_)H%> z_E`cO5!7pBaZs<37w$Rt5UKl^K6~m(~!3$AfEyQuqkwuWP*S2Q|FNd`74-8bUvPfOuCDlo$OjBzPmH z6Mk4sG!u9-*}1HaKtwO1fiCkgiI!0W&@eh)W?@SaQAZm#GD@i9gl8o(vTFmo0|-NH zr;@Xi1MVwGuXZ9L13W>-LlHLg^Z{pe?yHy4D>|o;)#gU)NyQeohyMX9?Ak_RA4#BZ z+zXLOnc3>cwGm41?;J=7fhXJ~-QS#zHry3{9_EFBztaNvQX`lighqBwQXkopwv*TSgAq5>$$N+qZI;cUPD5;WXJ2Xug`$J?J&#e*e5l)@xw{!ur3QA!6Sf#-lhr$&Zn6j}XhC+NNqi$Yv_-mmBS$Q) zjg-*r&{uMZ$WyCY6Zu8TGS&)j9=%J+0Q30~P3TBAn<&+SR>Rip13)5<31G2~2dD)k z9sH;;X`v(s4+6LTwIG8aiEE>mJXAKqRHpO5P?>-)f#HN)nFYO$Aup_M>bFx>x=P-|MH@_IFm5 z6o!2Kwfof4h**bsY-asF-1Fx>n{^VlvZ*w^OF>Q@~Le> zSOW;d=zhGNmlR&F-5&pR+*XE}R8|SW zhrIrQnFUt;>!?`genK%=oZH9m2ifR{Hg{E2taBGrL^X!EgIRX?u0xfRTBL-bO=#uM zSg1W}>w8&fed%Ye3zPHwEM*}1t;)@go`ec_l|9jcp1jHP==H()j}wo`C`SYp%x@!! z2rco!K6s4{TL9^ye%u)a1L!GOiK7@! zM%dnrYl?xpFnZGBc4zT4N0LI%YPADf<6K}W=K@oqW&R=ebU8o3*FMq7fH4FN8}ZYb zP;dAB&fVg*ne|QS)B8RT&%alRZuq~Dw2j3Y@TegX@NydeYtKds^alU!!JHyJ%(C(NHT5`Q`CJjHYs9^6`KF8ceT>HqI+m0g^3o zKUH5Q?jiLVb=x4WW#s;_tKWqqZ-0(rITxpR^jZheoFPj|Y4_8(q%_N+JF}gV+m*GUGXS8wXS$qlb0D~zfA zL=wD24ap&epG(rao`jd{>bG-F8BH1A!=z?E(A;>E@9k8#Uw`VV_ z5kI0U6n;*ml7MRug`aQxYM*K~_g8RUG5)t+m0Kd&veJzz|=htbIZaa6A>6^o{o*IrSV zjMSoaaw@Ob<}R8mL7{d*YVur5>#!j8Wv{sJ8uZo&8=-+Gpy5a|eGzC$bDoV~1fH3p zb=&ZKV(_7_S*n`P$nB-X{Z2J&XKd2+#p61LNq6>D8nrN~NDEz1dSnae#dd+yU`RTtI6D`9f0Fpf~E!rA2|OVNtKK>4rlcbDu=N5FKBXrNjI$=q{(pi+|s8k0&o z+sv;vT? z765s0n3&g|4Vm1?MCP)J(kpgI1SiOf;P$=<4L$m0d_^98T0Wi0;2=)3k{L%}W2$c- z5WN&F*_+Z2_)yPntap5FVu<)Q9MAz=Vy`XC=5uYM}%rwwHY3K?ZZZ)Psr>fc-0yJsefn&Ow-J|CK z(IngAZUSaqL2xGy6}KO;?Umx3H9wW8w_4a}SN4|?`S=7D0$SK`qzllHzanIxJ5f_s zANY`V@38VnU-@}7V9^b13gQs}mf2YcO;U@dixmsuiam2wIq_$3=EYIrS&)kVd#rOB z-=qKjT$)N#tn&wI4#~Bxq4oux^sdMiLhXe&rNdBrHpo^sV;w&<<8bW9dMRV|MBPee z1)-wFUAM0tenl#Y>7Y8Vfc33#3!al>(v#_7^DSHTVEV6T5RLjrv$2E`SMq;ChD-k_ z1@sv1BV7m38binJ%u9YT9#2yxf2-3bclg=hpO4f|yN!P^Z0${kYJat5 zzNUQ4Vr1hmJxY^X#G_mr-TY14RUSnzSEr&Tl(oj#j~eK!8j z%cVMF-@Wb@dCYaoJL#MG_#IFq_}Nkb9s6wU)3I3&pb2sL)li2*Tc6>;2U zfBik(e0+OGZK}LNGny*@l$z@s)pkr6GTQ|-=MNp$+p6^z7Rc)Rw|lZWFkF}tvb3VT zn9)%+J$$}jf9c-SXm}63rd1QUe%!a$!(vbD^&IAhCWNr~lE{pVPc67@scDkPOtqsu zXi|V1HfQ4)LzlZB?!fX2-t@B>>%5anK5|aqK-PmC2J+iM;%r1#L0FYvAkJo|Rt*AA zrm@!-ui!aCsjRI`mi?q zaChALr81{tK%b8<R18f z9vNtNUKC5NBv-EU0+sygy5Yk3#%e~(vBOUolo8*?t{uX;_cR95|twkqeBdug3 zz4*q$MtVO#*F&6*$Xv={&HjP+MUSpKwNL8G$h}|r1}brqd00X#gqR54(-hUYGtV@1 z54K=G61U#x;C_2izRAfbV%ekQ)$%tpm#qD5E9|C(ZzmDCTinsBR8Y^-Ae zGn8M17N0Z;FVvm)rbjV&0BzyETJTQrLA`v1|6(m9=9Fl#EI=(?_lL=)+BTZ>GFY^3 z^@QEJ6YEwdIDvu9HmMEUpZzypWsKI67KETOm~MsXLU2bVvkzLsux(O5s0(GPd!a!# zg-&=1a?$SWqwHI(0D8G4nLT8pDi2PtW<3l8;OvxA+4}N}G8+fPu1ZL>VdK4>%|XNH zxRW*oob3TE4PL%%bqAaQDkDUN?4y^e05z5*Wy+$E4E>O`QOlJ_jLosm ziPA>O?7@@7qllnJ5)Y~%N#kA$k_ee7O&GMDo#bhIByqu`9UH|+?1-iaNGzX<9iPa~f=49fL*nTEQG$r{>V{OuXuK3#kKlYWxquR7SP|f5?`Fu&Il#=t5fQC9pp86p84w_=B_@aYnOUF z&JK*tn_4xwA{vdUbh~Iao=EMGn8P?rJS_S6aNe4TUg-|Ns@Jog-#Gb+b;xCk(;uG` zQ!`fSf)-5_#nEoMifTR@)Xi{iTDNl^Q^sm!5~@_~YIl|Y(4zP)A@_%wmuf^lqlv_Y zbo*`AHx?(ebdGkvyfEyi(%oW3?TZw+pnn$l^$=XqSLs5E;gsyEDd{)ty>GH%kLo|{ z9eK<3W*YvgZ+IIT7FQ@H0z=!&tXj?1&um^M(7T^5`Nf5^HKw~E+xhtu)sT6=H2qp* zZ7w}jjzs21#5~nLcew%ZXE+}tllQKlH6|bG>fLojN%^1> z51j$nT3p4k{?>{n5nhMm4*dW9A8Ro}Az*B!%baf*+X&2as`(lrZ90EsMH>yi5MhwD z)M{}P@6rSfpp{JjktD@SQ)NBZ(SkVR9bz|9x}G;;A+9LYP?EcVT(z+dEy&C!Rz$`M zWvMGX5-2^&Q#0mumM%S*NT| z4eu_VIH2CkcXN||)9Wk+jIKCgt#mW2oDATULN{}C1~QU3q)^=7EbQ+9$dFwjS93fu z%>R>Ue4IMtZ#4nuZo9GkE-_yc!N13t_wtv-_l7UIe8fCcRFOA#L0?M-wKJ~#SZ|^` z_%~x;S+@AdUSA90?kSyxSnd{xz;rXYHcO4+xl*hrA3yhcY1Srrr`X5`A{C7~|1-qH zr-CH1Gg1kH=D?@4?V|EbtEyyGw;3Va6-W?Rlpb0?ZfaFqB6j3DdwnCX32NKt{4CdJ z^p(i@xnayoIX@pDN8J6S54V~(E|$mPk_%gcC*=rzoV*d)U*y_++7n)OdedL+fw5j7?Pq~>5lZD7$|I`b2@+Pvqu{%4tb^U0Ko|#RVdT?J6iMx z`5wT1J#Ygf9Z#xRzo0qC_OGf%&ybHc5x%JwtIEd@^*`>mj@z-*X(qMZ;t3^cPRDCE z{!o?~znTT1C}rG4znYim8LJC_`m8SDI+nZ6oC=IjZo}!+9`mMFbZfYxn}WiqOQ>SW zQ5kiQCt%3G&Yk{EBY&B4Pl}4|ZgDwpCH{A%!O3{M8W{?!`yBdWU@c@asGav4-$?jCAAdBUP)wXPEL}4517bh%e}!##ZN6vlGsj zXo=(jL{e*?5yx4MS8Yl*v`%#JvA zs?1lHT&p$FD`S*_`H)qQAH_m5hlkVo9ivs@_nY~he9Pidn7dx^Ntd~2WNtF|v-q(e zNA~&GPJtJ|-4K_#dZ-nPIaMYu-oXiF-np*XG-AD})0<{DjW@G(mjNdtP;GbFSn`pj z9s78XS(;K6UJ)B=ru9T@!s}9u;Csl>?{$UZO1q2iSs;@OWXkgh{vJh7@1jl7d&79+ zjH2c+@o&+gSs^xp&LD7c9qK;)2Gt3BqH9nES2o>~F1AHx-fJrenW6G@=*)0cuuzD0 z(x|&7Jq_8TXS&HJYuv$poQX`TT@&k=05v3n#VRYYHSwTE^MC($a1(c zx7*fCIxAzdrb5wX(m8`dAu!5e<9p))2gZ)YV#4!UN>@m16~+=Xb2bc7N_Fpys}s9 zq3(gJ`>xb2PUrA_dqS>n!AFyVlgcO6zL@$39#qdZ@WGeIHIGb>Y7AJ6D<_Rvf`nZ@ zKK9U#s;}+LFp!3;uEv}eR$95KyCH=YnNBs%Aj*V7=EY8?BU+Lt^M9EGWi*J`YfT{ za6Ml||6gHGRJ1{Ha`r;+!5Wm+cNF%*Zhj)ng$V&jw;zf%V(v#3l}V}^{m5TiNp$UA zrFA{t)^(HHv)g{9o*!E3+HkJ;`sJyCB`G`X0 z^`L2X&mpQzPDm31+0*W0D4{y5;{SstdpSc`b#*j^Ypu5@X;PX}sv_WIW}ke1!-m*A zHylj2i?0+xyl(;GS%o$xS{ql?ki7^(c1ii(UYgOH&g zTa=!5kA6`zR}@El*1;0anjIft2npRO_-?7&@L(Q4ACA1n^Me?WxTbzM=Fjv+9ElF7 z^~n?*;ZaKXjbuk0(nws(Y+3w*$U1w*2g*Ln?jnD=Xh%67OIeRxF~Gu6R8_9gv)@00MOL$Wh zJUVzIiT8rlqn9QjYoGswEC?^GE|cC0V-H7zgcgucAGk+(!KVCv?3zz(8CrmN_~=si zy+2yta4T~cUdYdQ3<|5rXrZIgnq$0}h7NrP?IeQ|tNTNZf*EgC2I2}_1*hpnrrQ;r zBCmA6N3y}E$WE6Fr^vQ*?5qsF6>jd{r8>>PRg^qb=5{5NH_PTQs|wcu`fI3gCydgT zMP~^-S=is@%WSC>JJ&{;c)yxd`FS7|Gp*oD$b(njkK{JtL?ZH6Bk`%uZOg#eA^Xm4 zW@>nhy-s7F&V$QMQWfunKI9hNeB_J@@wZMM&MUrU-%DuUfz6A~(zDdJpw3;WhG(lm z@MaCmC>x#y-4He#L8{j7zIhXwZ4t%4MD%&RIFIHF%~eGu?7?<`p-w1o6TO#pSX`sa z8`2~WULkQWzep2*^$;{O4XstP{<}X!6!&`SNM3l#%N$vbzST#05M4bBypQg-=ddAr z;sCBNh18ZqQTB9~+heP3@HycFU=mDqtEhOtzSd%TF1{}YEdgC09e36s_xQ}e;vl2! z)A8lR*ad)D;p&LuY=^6ge*Wt<`JL~89#GOQk+@QLxsk+L%r-0W_0$1H%Te|Pz4Oo; z2-xdM*oU9jQUYN!l)}=rx`5ICKXN!~Y$8YV9y)|F4eDGo7a1^g=GlsMW?{;KFd8gu zmJG-#%=56>|FIu2Z&li@5BCHqE@HP0U0=m&bnO4X*5=3?4a0#pn zZ3x$Ci_1mDR=4U{O~34kPf`-oX$cp|a@TRXd>&K#3neY%PU%hUIgjO5LgJtL+P}pn ztb&2%U+~-biPn{GXoR=-LF;Y+MV2FWYXH;ctvfODvM>WuU)Dvt7hkM5&Uo)l4p!wg zaSJ_~Jw;dIgR;*qDaetlRD<&g+*qblN%y13rywTdO{7V;RO9pyt?seDhbH%c9<^NnePc{ zL$zinJm4Xp(7>AEXjECYF#+>k|D#dHDx1UEQ7^6TJ5e#|Cac4CIt1-^fW}Jx51m!? z2qL-bnvcIVZA0EJW}3%J1@#9ihItF3wY&}O2k+H z0@(vRlD-Yry=k{GdzUvo)styj-^4mN$s=|Wa40fWlG}_8wI9Sfo`Kde^QbKA1I{_S z+Rt#i=)R+ja4RQ55N3YI7v5-n?v=i~PKg3Ylni2X*BfcR{XpzweT1Gjv5o}aY2@Yf z2Yt2`#yeWOX}89uamoQf_Ft%KTNr>j5Bx42I_Oi$-wlE8Fg{T|x*($O5zw#X5B9ls zP0N7vUP)$7OQ$g?mz^ma-_VNl#0od{Z=3Qxzu*V&yl6KbG$4qPsnUUIh;rP-&3obw z{a|!*=cRV0d$M^<@QqRKW?mD0wa@XjcksP`>HF6E2XAj8B!GYQG_Snd!)m?V&cB^} zwpCojD?`A8sXp%s(R#bP0`rh2vGX9<2oeSI;KdvAP|+=uvQ_m{CX73TbJ+W;rUQ4Z z^WSW?^#eah*!ePoL!Jv=khXbgwCLnk083NXLRfu?O*FgL1~_zR|C8y$uRnAC)cVtX z=aA88@x3oImuDewN5!Oj(L_XOUtA64=3(M!Ne-wc&=Z@8*kREo5?!<7JgI+-ir}TW zBLUIP`!b(1HFZe>jN+`E!oOg|&)2etbd_gXl>cJHttYW-bfJwjRUkHX%fydiZ+}%T z1Uc55s^D?UNi*>A^e+F0wKor}y14rP!zQ3&;&KtiB`7M2OBAa~BYLj}z0sg?PpwO8 zt&P>TQ4>W`35F=?B^9l0ZEF>ms&y-F6>$RvL0J{6xMQ{L#JGSf3VOe<_nG;8?oDpA zzvuZqe?UHW)^pCBIdkUBnKLDCHn zo=mM{KBzdWr1%Q$e=Qc+2IDik_qU73zaps`XJL#RJc)TqNlj)nPip|Mq_4LTq3YcL z#fcvcBN9j8vSd2TtECvQ(v>HSI)7N}Wo1RpXlzT}?F{Ju?ZF zk1Q9SiF9VGY+`eSg_J?=<$aVMaca3BX}bVV160V?d4no{QBr*QiTonQgZly(sC4Vj z{5x|{k#)7Dgyd4Un{{RiKK+fQbYVw#+FG6KD0^g?*2hL$8tr7|lt9c*#h(r~7QdVA zIp!Ghj4Ww4{dh4K@M|zSFXxx9X!WR8E~8ATEvT*Y$~%7)7oZsa0pU(S9Qb5Zyz~<6 z)yF_+t#?Hj{8(L%9^_KxiVy&wr7I_v6i<1U5lgpLLUM5T2CXd*!0GQk(lg6uA<2u< zU%Z`OFjw?U7boZH(C;DawF=uLL84f&`1v#ESdg`kW;YRDKt17Da3SPz_1sncJe4=u zN1+&BtE%{6$pr^U>Sy|m&ur0WJf6Y$iXB{{aDE35`+}3N{x4OxAIu!w;-&GK<>T4D ztV(5{u7+q;l|L*w50mLeZuB0SFk{*$mS{aaOJnA>6)6Z1GYY;TI?19Cad%P#4P@ft zs`i47oZXJg@MtnB+$-tUi;@VID@B3oec>}6zinNZ?HY>54u7k8Fyf0fTo5QdZ};@v zw+GaWo?G3zcF=j-YeEHR z*?87Yu8i z=%?QzH*7yY{T8|3Ayq@1_Xdrz7(VHZi!qO5wu$AMr)}m{mY!1hgrmqs?j-duMrNfX zt-I)n&T*p{cw=5`y|_PnI@ubV_Il(~>TsW~QPUhjjyzu(Tb93UV&SB_16QzKa?dbv z&l%?G_{3|hj2C4S&zy&op4Qu@t(YH~g}%^23UwUO&t0cd$4XTlrGQ(g=b!&vjdAP# zwXRBOucIt=kne)iMxWw{Ag4Zu1}LaFpNhQN{p^mfu!Ov3wQeSbR=I7miLI@aw3uPMROVOs&tJs~KyypooLX=7)6`<)(5O+Ez$oMg)em$J zhxUrAUr7G(ghl$89hJS@lWHwR-^`7{mVn}88(>CZz*DnIi~2AI$HQBY+MT29RW=Bm zKNfYI*0=SWzD+|2X*3vzho=6OUo`*BlM{xb!tGRmoWs$tU=bt1I9A-m0zXQ_z|LrD z+Q`jTxM|ZU#f@cxP#gP(Rr;7p-VJiqD{Lm(542kQS}kw&2?h0jEK_whrL4$S6k$ab zsDlA@fSd_8Ft#()?5Jx9Wstp9{r+RvX~hkr4H|zqAwuSj>M)Z{S ziOI_AEkQ!+_^AjwRM4cG_HM;)k#+D@HpI-V#IbZh{6*J~#*t`cx;x-&&6jzs z6Q@<%RVFnq<*Iy7hwL+$8_Ut4<^u)LtoG2zs2>cJ0!AAIx2HOn>Z&s4#iY~4mA~b3 z^JBhV)6j4McYk1E&P{k(eAY~1S$&!CqqR2IujYxfZ1bjO4UoPxFsQb=1z1kufVp8j z*i3s!81^3Ft_NmEvTEH86~MzZaZ3nI1)ra%uDZ?%Abc9jfRA7D1d&^CcSt7WK{DaL zK{Ba^?z)EfNJ0^e+=j}JOQf-kkqJW!?q%rR;t|hAxhDkvH+(cLkB^3d*|+e~O`{6= zXvh^2AC18lINc(3!V5|9!k5!xM!GmK((HfqWTZ=upjt1CbVlZX#7O_zpJoae>8juK z!bl(f*cfRqK>7d4NOKOSQ*AU08R>YzBSxCCwiiZP7c;!%sd?uyXk)JQkw2Ag$|OXtP|z9hZNeSJ&$>Ar9S{#&L04h4Ut(togYC8 z)w?^?znDj5VkvaY)y6zluW8#L0`B`!gy=^vz&{JTmsTtS_LMNH^&(&k2_piL^a!~Y z$s;3!$)k(X8a%?7^;g)gw_s1NXmrqn@a-mKtcQlY9(ZN=zxJ@D^)N_c(7Hv$?BMMH zY(J;@w7jTrVf2EOnE_Fx0>|5D>5|?D@dSIkZ>FdQpbcR^#%|9)ZaY4+#-0pnT>WUh( zrG_$ZV?B#*kq6%>bnG(-s{yj3wlC@{yHhDhc|QvssxFvI-$4E=x>PKRpYd~qXzU?4?PK>zfj()fjx^jl9Wy zAiCz46+P(^9oBjLz>Fh15P6~7zAt--_I>6|6~^T2y=g+b>CgoY{B|z;*051rstUZ> zhPUI~;)gdqvvP|*3j9cLZma?ya)jb9tU->1Y@7yV#vfw3r9hWjFc82&$A+Un7{aEZ z>ldo9K+D-B8jNb`;D*YUssAz((vM&QjoSHVYmc!~s>@L#e7`x6X_Otirydzd^BU%u zBPxu@I)q!~cG{*-QP*&N4d*MsSYMBw?=b=0RbolT48%bu9Ro%1xVw{IV4?}P5op-w z1b5vRIz^wS2Szl9QBK)XpN)cgzA31u1r;?io5k~>!DIXN5A0L_-UUD)i0w%>h~ z_6N)<>n7q8;73>=)fZ(rChwX;8Lho7tVtyDW!M_?6!FIHn zkH)+v3BQVBDMG7qSXPzk!lQ1K`(_X8Ke6?3UZ|D12lpgJYq3g)6}rrQ|FD?WM*y-o zR_n5P?xY@(D7IO1t<{R9@V=**7xoy$sgLmE_h?HP_Ku_ax;=OrG}G195EkCwK_2*H zOH#XzBP6f_&wkW(xNbHxJ+b%Yre{au=wl_fv4{f&{#m{wVtH&l()Y2I^aPfyBDdf< z>!okzqo{nka*jC!xG^fd$b|<~2`NIa8^JUwjq}|!<=CquYNxU*o zZ6{Uc-rXI#jn6C-v#Y^{^ez2!9wvI2U~|TQTny6~!L*LP`&X`O_7VAfe^-2B^OYb( z0(}*hEb-&@Bj>2K$@5zH(~F@W-#Qs(lj4CglL=hQVx8kdLNJVC zL!7_jCVqdkMvl!V`UOpld9CB@K3Z?9-Uz9ikjlEbr{-a;hqxzsPnf)hUUFvptY#I~V64!90SzEN9GWYgwMmFt;U()B8&+$xJ ztC29?c*?S2%v$~>Q|8@(?$ZZ-u;z$ zt0n~N-E$P_x`Y-wZE0BO2Gayr5)^ojS|Vc8aL_kv)BI58U(Z;X>kJZ2%sfz20@YR^ z52~pDlidwaG?2tT9?)B8!3RpZuu5;rsgaJv_aKYkRJD@d`gNbCQvSPaOzYSEC+#_2 zr?fJcShZ4?)zoKrd(+gWzNxeQ0KPsS)dttQS}046T6aFwHp-^mwUse5 zw@064?lL~L==4-T-Z3eY?}O1xT&$#jR#gC{-GjT(zC8ZninR6w8`+aGb5DxspZ2UG z{E(osVM5~jH;N=iDX{w?*fnCyKgaa%C&YXV{j~e1(Hg;{Kq+r4==2IN>F=Rb!1gxm zT9TX!3)R~Fe8$UyI5;r4XKt^XYLRk|`Uj$ULD+ACa;=-Yvyn9M z2JVw00&(O-1kH=uAXbyEC>elCx=jH}Jj2RyoK~}V*_3V?iPfSLv}P8!?a$(cgQG1Y zh!6W4E2?2DfFGv1W~j@s!ya#o?RK_z`I2cF(w`*V_F|pdmt}lY+Kc!vmZ+n5mp03# z8%-d#CAz4o>#dn-VHKNVJJfa#|L5v}q1fF=AYCzypz3Xp(vi6Dh#0W_46x$1pBPNG zPpNY|?Wk2$^9NeMNVd3^yBl^AN&OC`&dvJeH&UQXuLi@4)4-r{fI{IO8s6qs&LrY!o+_F+D$hETEJuuQxwH0Bp`-^SOK&ITi2Ov~y ze#+X3Vox>g2O7EdBE9q!CF@OM&w#&z5S;!ovx*Ma0Kmgqn>vn2XfYW$Zuo1d*4NN_ zUTfap%aQp8MI^}T+@_#nbEw>%4jkIk*wECuFGggu?WdTmC;lyYVXBF~hJ4d$+R}N3 z)ylKsshYHMN^AOgV5NS~ayp7K$8I)XnVV7_Gt0Bb8W-FB%!ddR*R_xK40q{kC|I48 zD|wZbY{r0M?7#Auz~*`xloTm>JghdCWCOI;T?47?v(9b*9#X@^-gL$*r*6MvcNU`~ zyZ^<0Yq#g){njlzSa&QXJ@;GpFd@3{w^rbP52I^$GaVgGp4BCDVvYM1naBM2p4l1g zw`zLZZyl?ad+fI!W=RcgH-)wzd@^qP(p=jc#%-^LD7pRCy`k1+xmt(iYQ5+ph-OpE z_FF<@F#5UBsLoZ|ELZ8qxKbOH{KPHTa$SyPD&BJ42Q_O@glADcNSwT=5*C+fUSQQS zH>}6T>-~ViV?17Age-GyvOjs6ZU!*_edC1=8O27_Id1n2nAtJ%4vSbcSVq3&9#EBT zuzl$RQ`foQZy#n?(oHEf0KABGA1{S(I-2{i*q18?`)KoVQ7F%<%&jBq7;CgY+?1}A z3`I(mxhmDqJX2#HXi^Mcpb*BMT)=&mx_Cs82V+-{(;Ty->Q8#g1MW7Uq-@QwosK!I zp zO#|7s6`MExy@PV{D2Rmrg|glF5IS=JJ@vSVuIcsOquB89>0dztch$s1qimg$aZ)|$Im#n7fHfW-w)zErt#J{TUE z9tEbm7ofGm=m%%m?#$s*A;Jxe`xcqtmG0@;)R)s-NxQUq7?&ZE)^a7(xxa0rs@IzT zaGD5k(Z*);T6l9y5k{Md*|^mKrYf9=x)O~ao{UQRWINg*tg&r7GzJQWEqH{S`^z?T z$*wNGUGZn-iqheBMJV?Qprtd{TBWMY!K>AFx!ZqNQt@sYpm349(u|%M?-*Ok*yq2E zlqe>_*BC$z5BR9f6JW{gAYpnOD+uVLo46b9~S{o@uH<-4(k;HeMW<^7W35 z1!RU9m`xmggxYM{H1i?o)o6}^-n3b2X_?!71JsZ2Th`to>s+$9+tHC&n2g)_+TaRp z3G2)G-$xnW!Ft#RUjfAJZ=4H)FkS#JmBBI%xqO0uSG#hRjR z?fs;Q$Nl>^Sc|kO^z~nU)ec%|cGPkM;>DTbZwsr7|_yb1>caL}l@Szn?axaBtZW zu{LeuH@#P|#gG~C-+xC+b#x%8@p&1_Z7(%*N>b*m&H>m7>5}B zX~T?CKK^FDt^D_JU>BkCeU2@SieEJgDTn$-P@hEG`gH-8PaXp0b#a@sMsqTWUKe-AaBWR5HXn>RR$;p;Fp`$J zXG!)78%zFwIWqA&Jb^gk4L^zk(hjlJFsND&1!3Yn@r;}7p#G{H(;I;el~0ovXS z4L(`abapUV5M;j|d&%Ai9>N<*e{h!qg1N|g`*Mm$aqLv1N>@q+{6N< za*s_DjrpcdSC3f!q|N-I)5>h&%hVqkl{t_y-ZROYr^?-nNGL{I6z_OF$hI=~-YA9_ zhPvCIrudMyItq)uY|+K#m|ozBjNIbIyUeQ!9`kv7qf2L=bK4{ciN_%I5q&fLI!@>_ zx>gU1;_$lBQ54Y@_?fXanc+3)&i#oX8=kGK&g2EFUwX+_DMhQ_JY@kO;fiv0Cv zL^4Aa8eeTUYgO`CqB!f7NjS0I?C1@=TQY)^FpH4$O1k2r(q;@?b4zCHy^(C<7FL*a zJ9pys-pMZM5fe+ZiI)*Y@;luBFvc$NZ1}Y+zX$}Q2a#|c#+4c$2F_6qp+2?5i1jek zJ1|u05w)%39WUIB<+F)8it2>@3XzArRTMG6sIV5KjFCDBddGJ}@aoNOC zhw4y4h6_3Hy2nbg-u&f((Mdh;g;Pb3JE5B|b4T(_xH8R=gUmO_+jX>7%!WC)F78tN z565ClmXe-haRgM?Sll&EV=*@T`ZK>6i%*Tw;;|Sg81u&B#1k|Y8}v37i&KH{g^r2z*luiL!OzC$CHkME6rkX-Z`?wm!)Hr(>aWzU6#eAj_X25m_$G7{m zI`FDx$02uMqb0n?bsWY@bS3#$&cCvbQ+Tv`Tq%)bT z$-npb*Tuj0Q_mdo!2r6vgMTyAnXmCzO`-_QFP`#8>zmmi3EUt$HWE&e*?>%G>{GNo zYeCQ~P9E7r(-YF|{<;u zYd;i0$njqLFG~15D)R;@rIl~!R850ZxkS@o@j>cZc=_Mg(wH9L985>q#1(298@kuq zbnU2Woff(HtY8?<3Z*zJaC`Qh?y@=UZ$O0C>M(92fc>JI^LHPgS^Moy*Ea*1uDr=V zWhpYMhtu`>mhJuG<^B?!t~b>|t(>k0Ren+2b~Cilk~vC(0BY_@C8h+9*Yl7)Iq%~m z_h(650PG+N+^f6IbhGwB}O$+TnT&d2yh@qeP6`{L^bzjhC@ zXp2LWN-uLQxjI*?4l2A#R7_lZ*|5y9tJ56;|4~32WopUxs%_pO)rxp?b4sPSwMn?^ zQi|z}Jr4Qr-#gw??Vl?>m(uu#xmBC;0!(}Vkvb++D|S;|^4WBY_;Bmzxkf(zzIEAu zOtx#1Bo|B&QW^a5N?-Xaed3`q-~W+YqC^LU@gL!*ZF)1p>Zaj}Ap9|IvotsShU zc5*7bFNMc|YO?s+1ziA2poSfbu*`;6to{K6HnfWcil7RMUX7sTjy`op{o`4xl)-4ml@!Si%mzTE9AXf@R^rGW2_) zQs*w-kmP9p8hEzO73~;!ma`@5QDe^#L8s28qZ(#IgJ;=2g+89$A+Gi+)}wUB8|zvx zUfT!0)o=yS8aK=33Ub&!=$mjb=5CfAa~0K|CU91?N&iWOZT9#@uctbdr zTH_yRob^*Z=(=+!(oHMaba4gepGh7=WVyn-(Z>eo7*zvPry1VuW`3&z2n9+T`+K?rtH zh#OtH7iUIB*cyz(qX&YV3i&IK#Z&BL4c#fN9Yk+O!Fg`1%_n=omwR+$4qbM~HIq8b~GGj9ng6Ez~o$UTeBv9Vg&-p!a)|dO)>bigj{az!UMY4)%gV%%UFFOV$wB` z({+jeg%6y!?Wy1YERHRZRVq^#mDw*>=ILCSQkB`)TazE$5;FVGzv?sUYd!X`t`eUy zos7k{j>_)6ZTyrn%*}->(~IpXWwE?01X#N@SI|uFT`Wvb#?`XljDQN@^ z({9cWJRc}o0we8S!d|VGYE_`tt@soPC-=c8BL z2;RrMxuA*V*qaXH+YVtXKs3jJ(Um9=G9Rd<+sC>dNZ0L;g-5}NW+-QLo71$l5?WMy zL!pw~%zgl?ja9vXrRcT39;Z<|eQpRJjvVy2-ns#$omC!C`kC$>s6Wek)_ESI3{VXw zIoP-fu~k$G-kXhXXAj8~UxZ^KMy%W|Kb2D-UoE}{SGE^=`BHc83=MvB5!q}5vEThp zFo5e!{iS)$_JFIB+`PUTQ?RJlfH&Cr)ROa!-69U7;JkGiV_XU;X?R zeD6VxWBgSBwmHABsp;LD($8;c>U1>))h2+SOq}`~Vw2>U`nR{DOZqZR{Y4P?p{#4b z7|jvS+1QGQ<;A>UF|wE!ekOorTC7G1-5=c8W=dWO9BjhOI%gqtmohwgp5|)pjSQb^v%Wul0DR<~8f*n|sIWXOdjb=W7TFG>FF7iproytRQiy?7?IVBg0}% zCKYII4jI+0i?cQDx0?R!FM!^1=z4=I* zgPXm%hWrD9q=s1}zobm)^v}oItUq~Vy7?!*p-D94C;dJ7P5F^{x@j*lue`rfnZ-o* zNDoT&TilF`G(PSmO6wWK_^{3p;|!gO0n);-pTTezFhHw2z*aOXfr6S6HtlG&p0O~! zaGE8#`?5$^ahB$aRxn>7dU<%EEB)9ga5S^SWra2h^HoW13lCi6(r*$W?VdOZiQp^iN}6uhZ$H`}7M^y!Ol#K~Lshl!Mk&#u zc*@P8qnUz?j_Pt$P?Edr8>pbzNTPyx!>C|33peIdBfv>H0xWYkb_Vgl#0kSS6@Uwd zONrk`i7Pi1C1!7?4vA?>iy-oguVmWr4@kLt1eL~QwSh0yJflVIp*r(m38fCA9i`*# zwy3yGk2`ppEIK6OvFbnNu`9zz$pG{OkS_pQi3LE@wTX#P@w(oyRboNKz?^?55w?pr z6?7KYvC&;qFEnVjkr=s5_Jvdz3fhT!6t0U=xZ;m_D8TKUE2u%$&SA5>H*Azx08|fb z?&u90B^Fc+*eog*Hs6%^>E0-DQ6EqD-yu(c%uIZsBR|FQnN4bhC?kArjMM#p$is=; z`gmBT_J)WO3*f2O)Ngc^f~Pw%X7z@X5)0bsL5x+sb*{vMih&qUY$9T;DW(K;sCCaA z7x35qthi05K6&`}&*6{KoSRhIFh*>tDg|t*!~zg%g>-#f@w(n%S7JfMK)Akwy*uGn z_SU%)3)<*GxYfONuEc_hfpBfIE_Ke@1X;+7Ui`a+C1SORs%Iwzrwt+n`yF*seExl~@3F4`ScZ z8@@^`s2GU-TbakY6MJoMohz}RjUL1;dFQ@EY%|(1cH999$hNwp zmP`FVv?(a+YEV?p`!G=^Jh}s0U*Voz}M6;hb zVk}fzZCY%#;XJ@!qD*7*g8VC*j*zyqiXj!u2_g@l#j+li2|4)cTG{>B#iI%wj4Cj% zne#Y*J1NovI2@vhA>Es>sxXZyicGD21k0e_22F`Q=ytuYX1=7n^%mG?1;(OIo)uuG zhm^UbRP{M$X!FbQHcc=1JPcU z^{M;Rb-lHr#DX?@5)Bj!rtT=={Vj^^DeAoQqQR74ei^CIn2vZ~dRcMXFi)|^4vZ*v z(lvR4uN#w<_13cz3wrKBuVil(l~_tfBcd~l)5~N`o zB*McozH(^&lCRch311j>wqz|kyv!$BAO)cSz!8~sGO9F)cHNkpq{DOixD~rsu{KMMz(Yh)Sxd92FWySEE+FU=@|zCL zW(ow@V}cPI<5!HVKfl56VHdMzkBHV?9|ChOtB0S=PhLf^&fDmP^Us}`(dhp#t0g8H1S@|9C`wQB5Ou^j7j;%C1<=Y6_^L%KfXcNs z8KHXv^;Y_)g&pxP5G1tYf!!hob~6F{K5d2lqS0~ta(6xnhck&vB z!W@0W2%KMOmxxN!K)2FbWaEm-Se2u}*oDoW1_5l1jauw)XyD+{+Sn}=?v@Ya8%9L# zIwIg~9;T%=ncfk;YbQf^yKJJGuN=a+R7RsS;@5Nn1F;I@v%=%N0ylK0#D(s55?K){Qe(SYBh!@>hQ2c( zStp^xSmf^8(N76_@P_g!lI} zF_3s^p90ywy0b&#klz?`U?OFoy)KWN>rsgXJ@%keX>S#kSWq$0={8x@G)OsCEbFZeB^I>NgHFlbDk`y{VxZHm z>b!HDhM*gp)b`ep5(^sYfqs2&6_r>}F`$3Dj91;!Z|toNB^I>N1O1lXDk`y{VnBa4 zb&fE_GHiBZ{WU*`AgNhf=8)uW_zeQh7n4J1Y&l~kN%ElYYcjXWxEg5&dgWO60<(!* zOLgcPnNhiDxs%_a9A-O|675i?(nGXEk!1J3Lx5~HB-F^6H?4+X%CDi{3|~^M$zH5u zrbAxh@8o$hF2|lIc|L;ajF0h|XNR6HLZSMIU}lH5h@Xwah|pnHXT1llBlqi^b}yhl z!CRIu!o#MjFj85Z#XmEy;-!hr5^Hr-mB4e1FMAj79Eq?*4I?i&zy*VlyZaEAl`y zK9+^{U*<5}YZA?QJ^1STe@%6D)N0@C5nd)t(%c(9r z?#MVYEd#Nhf)y~E<{PG1z`1tQW3cKKuJjjbpuM*pxICFd~;*Z zp}3mZIf*7lJrTJ94f{5Ai`(8agvN6ar1hgCaY~HU#3^}Lk!vP+BM`Auxx6JrGb*L0wyA>fAgw zW;u4U7Rm}+P*On)Jt$XFNI4}HR10i$ggWm0J!X_JGa6l08sdpm1ot)r>2kW2aztQ- zZe-jsCga|h=aG^5(da(;A|RBbXp-uM6jf>gaJ^Af6|~TU$O{XrDXE}ZAaYtAcV5em$E;f|s=W?%V>%xx-im46 z6T6j^xdu_F!L>Zkb-kC<{a*MaRs75Tc%xr3vf-2BNr#n4GpJ=W-N(N+a$=Uy*rJ;C zS?n#0Yrvm(CldH?ZP2%9Rq>R|NT|XIL7i%FSL!bn+;b*_NK3qdi;ABSi!Rk3j80U_ zU5()^)-9r*x4502GtZ!89X6;RxAes*4W+G1HyiUq?X%mMJG$sWdL=7S2kMo9%N^cZvP?|Z;&=G@p2+<;)#USG@7f7+t%QXh<*EC{u{A7U!qn#zL_w2qxzHHm$Pk-OMbe@bIAq5 zm-KS|1+3Q=#$c7i%<#m-0GLX-DcH#hm|@_5g)e4?Dzmd0GgR1TH)crFMGxXCsbEZc zFhgBoH6;~P3(PQQbpbOp6tWQN(+BFpTz?N-SAdY6?qK|~M5q^$+b|d`MLPV5Q zfJhI*UsqU7Nd?sc;SY;CPR5e=j=~m{RM0{X!p|zKrlf*uf$&Q|6yg0rRgg-LD#_Dh zrhRs!$HKz)l~mAv4|=RDtfr)bYJnd6M;#|)dbq+ClvL0{4|=REtfr)bYJnb4d;sz+ zG-X|b6=mqheNY$u_8zOqwmrl;dw%Q*L9Fq^8$bo|j=8y7lFs-m;JL#7{06d?>GIcf zxZYnr=ru|$HjsQjJX1Kaf6RcT0HnBK=cZ};?M9kX;nah3K4;hdVQgLaZRt{L?aFSk^b$NS2kF-vcmyvN?RNIUlzmoKrfB%f)PH(^-YvwbCKctX3rSc!!g}-k8!<~n&3796U2JqUPFG2>-UHk zMOcCHMgNN!*YDAEY60Oy06K#BD*)(h%^!de*SgUi^zZMYzU|!oFx^lh6XACUwayXt z3?r-$YF#^*DPTdZ59KTHNM=CqL9NdxovR2TsP#YiWs(>FPuagbe~*qn8{Mqyr4s#* z;#=!pzZ`j^aJJ=nLWBFJ{vMwqGvc4W(jD{<>lVp`4Ha{!k7qrei4n#8WP*bf{@N?; z6i@;F_Z$$Z$9JD+8j&u3H8ZHwef-JscA?Fpgw!Alr`pK)rCK*am=2f1Tc&7DloST z5`;$X5!6}duL|ls%N|DubxenvznNtb~qo$x9kyKdE0(=QoWBZkP`+ZgmZbA zVNp1jEzeb;k*=;Yd_0#HC<_VuklJ;$;<@xED0JF_LKg&bIp9m!6JbR>pUJ+DZQ|w! z4U9(U??gLN2mPR-mDb|QZRp?i1+1>7i_>V`hG%q7Y!BK>Jptxi0e!~%&h#Zo4|B10 z9!_HPBG+p)AwC?*JCcZ5yWH7ass@eJQG>5jtcy$5tV>s`hHe{A)dvGn>;B!M;i-J5 zX-K%9Q0u-}CZVUL0jZm|GjWYm;|r7wF{f+k1gQ$MFLaIgVFQI?PCp+r=92`|%&b$a zn(jfTYu%=Q$mf@{{}p}-WOoX`{Kd67YJBp%7XIYUKB89$7ccHLJ}f7%oF>_|TTn~8 ztDdKAf1jpS*ImuRvVduO6k+Ip*FT!J>DkyXz+|bLjkM=}#4s?qaK~r>Kl{ZuS&Mtp zg`WjRT#iGIyc~=dG!tq?O?D(^$AuTFaO5nXb{+464_AkDQIKn5bxg(F>wWogw7uZT zkE1=oEnjY=(UyL`|4i(i@N=ZhO%!fA`#`e_QlkHRVM>*`1pNZnK3hb^Yog+)2fA+x zeI~dSopFVC-|>^FvFBvc?SP1pR%E~8_CI%VchFqQ1>!!tZ$ztSf6lx)k9Zip2jkvQ zkA5;^8ncP3Xsa+7_heEFgK-ZpQq%$Z%?0CL*&o6#aX(OhaWL-fLBf`W32qBMVI(A9 zx47Khg`RnIpe+t#fednQ7&kXY;#`>?!`a#tyF*|%H{kzqnY9*PvD43+eU@2g;l9X> zOGDR5x0N!+yk=fJM(BFCft8hohJSSuX0zZpceX0kWZoe$-M;;p7r2i>g=rQ&#y$3= zlos!t$omO31X1?FLv&NZBF`y zOdYLj`&^(xw~a6gZmB{tVRrVV5Yt$Bv$NK~y0fFae`AQyybL~{J!07&wkpuuVP1i?}Saoi&HEiJ$iMzcM3t@brv%H%}za$E#Rc#sJTja3 z0FrlYtHDsl>_Pk|{EmD2K73;+{Q;$YpwTg6D@rEL>|-6i%ri(qEemCvDQjbF=-q9d_8`{QLTR|9 zw1Vrcq>H=S1S>H_R#&69 zGgLM%=;}`1Rmh?8HgqE@5yfJGSah{tQ)49tlHnIQtV!cbc~Gy;XbWn0+S8(_r6UUxmH> zP+AtxexLOf14Bv;F=Gc?%HJ5ObY_~jsa7tPhIsv2pOh2}`J^9(QW6p&=}1eG7*G-S z(E}m$gRL-sxhgD6^{(&h;WO#JuxCc#IV~V=a#W_)y-9||{4{@g4i}U;G^aQMb0pX% z&(n(8n>wbrcVTU1D`gRQ;++If1j**2Ez~TxegRNOC40*}MSWkyv#X$}&S$`;#yYJKq5(4Ne)k&oPpo{mRJK zYI+^HdaM}PqPK{yR_i0hgVV{7zmd85fnM_w}hqC9y^lrx4_RG0P0tI!nX_Togf7dKmqq-Ib{th>(iC#i*Ky_B< z*31w6vIp^>iDNd5^wsO1AyWbpK@rs3o!*MI)%}2z;XQV6RQ%^rafD7#Z|mHrZ^jh{ zSOt->N32(z5n}cB(@(!L!+04?&hgqxkpRxHzh>vsJ~IUM=tvyc<#kzN!#r&jn|3rC z*T-5Nkr1RmK)TN5$}LV=XD2xs-=2REK`pbaCKsuOe=sR}5aDi>jh^cB7hCckM40iA z*A3M`FE%YmGvmD&x}5@AKQO?y6!Gib7Efu5C%G!EAZ+oHu4A6Y#GA9~-R+yOL~!(- zdjw&ut<+AByuF(zW^kD1ff2PgZ)eFJ-s}FP^aYR5d>npLkRx} z!a66SV=iJH=^6Aqegq-u<`@*wqE_!V29*HEDZmjwf>7^1p2HA(oXa> zMif1HRS`*|pND^$3D8zU2{wNd~L2>Aa7{_vY;AX5NE+ZXZdA+w`S{_V`@M zUs*}66?pz$vF0lu?9e}gfHR#1sdk*jqcnO4APA^c{vCkWO84%^QOo!9Hic1yeY;u~eb3`V)92f)bl}g_ zEa9!KZm+VUd`j99I3%5UuPXEQ7~(>dw|+UGxXtb_z|9SA^IuvY$0NSt z4!Y9%TjFk55xve(g|K0bmr*CWa<7=4zS~7^$>|oyLD@}%;%8OqYPjzTtqj(rD~rO? zt+N-dz<#aAA6ma;&v3pJAq9aDBxUXqOi^i_Jzy3TW;dN{m?Z;d2ZNb+RVa;c%kPjX z`5l&-)u;29bO9=>0xJ4zug}rTBA5QDA)>@@N2F)FUgoTMLR15GS&-`bF-D+J>u!FM zWUYKjA!13RSB8bG)*XNiPDamkp`9ifFJz-XWI``!D)Idcmf6k+J?lsef&!v#I-8j9 zOX&rlrmaF+AJU9blkNpc$FAm(;Xa5n9w7sINOzR_!$vfCyn1knvn9l&Q>h3ifU*%D zcP|S0g60G!>xZ#!;lmJwM|{g3&DaAYnk?6+oW#cGBZ1jjDx{5N z7>lX)BWOWMH~TSxp8sw}t=kUdqjxht>ij39Qf=JN7Q}B8T=)@E(;i(5FKHPk{(<*Z zC^RthQKxQXgr_qIFhZZH*6e_$X8vbdc36{vc#Y4Aw}Wb3`Ev6{_^lAvRUNPg_E)`a zTkpBO8P$Y7WOzS9vO{f0#nPD&v&Y8a!rA^k4l@oI+TF4*`FnVm<3GI1f$g0uTp~@z zBss#Hq4e)_905hWSQz{Ri&4!z=)K<7SoA&&O*@A7Io5)v`@yrU*_%F2(+W)^Fq->%(F86U7}@rFJSYDV#$t%J=kdVTUsSmwztO$b;ER-xk7elzk(0hJ0M&tOsAD&g zEuJ#Q%vOn;;*6un7^8Ve@{2X^4znJkRC7(qKJ^l;SD3P{nh8LcM9OG5;X+b z);vi)Ve2qst6$DNLSd#l#r!n!!<7Fbhn3srQO`&EAq&up4@-yjal_sA4eBwP1KN~` z9OrrlUC z{X-nT|7>0Nhd8bv!PmHi8a}pJxhsWZs9oH4AqqlFn42dVVFIn!W86~XyLRHM7arl5 z%KQwm(k|6!_hG6*JugdDOjvDCag@??iY@r6<3T>=HW7G-S=Nux-_n03TGtEA(DQRj zv~|sRGNjfr4NUgh2%jqGIuaAt<<+|;s)w?XKcGXq)f{Ox@n6$`7wqxMTjhn)MwId5`C7rethP=@NpgZyDR;nMOgSQ^1rmey@W`!CTiX757Dr8OHYv| zqv-WMhSB7CT4}${7S#Q{kH}bn#Vp@apz!&;SyhwyC%2NGptYjRhhtb+A2X>zu;O(4 z1PrlXU_ZFdJ^fG&(k%a(7#Si6nG`{oW7vDY>_w}mY&ZA?_J zR*aw|k*?l7+^yz()nutnO2VM=*x4vrC-!(1AQP58AKja&S&RI1yg; zr%<9#H)?*TRdK(j3_ARbi+HS5S@))JP7J6 zb?c6#&=Ar)FQO2Gt_E&ENhj~EIPVnlbjBYmxVGj;FJ_KruMnHU%3a<4d1s?V#;lCO zkcv+wlDq?0&FF>k;pl>qO2)H?zRoS{m+0FR^r(EIt_(6z*S8%IP}RTeZ$Q4Kl5Onx`FZDB&xGI zs2pbgPPO?mY*!AnI*mGF%p9PF)AV5TC}?A+QfVn`b)HI!$H^&})DqwD_b_zP!p=0T z7B~jL4`|g}j9vU|w|D%BQ;SIFU)0$0O`kM1m-PBSebV$?(zBMNB}cW~&;Ae&p)>}r zv^fk_xx3U`=)%TuAQ_rD(?&{G=*IKWR5TSszbDU=kSSC#!rLf$r%V=`n!|<>GH7X( z+_m@6=ZNhj90j?XqTiZf9uFPZ*!d4OJ1;MkZmXD7w)k)_5L9dNi)VOC&5y_}t``8uuC65wvymp;PRbadn6`b=?VO!H+f=%`HAR41%zBYQ zlORLg3K`+c;&`^$)AaU@hPs;@s6WwLnQpBg#(7}<9Z;J<{`=h-2B4h89gD_1n@wzw zT54;=RNX?=Oq-#$B$>3nIlR4Czz^<|?ig|oKeCB$Ox8a>az_6aR+g!EsWi-HwK9Eb zm;(s@M2X6lsNo4ek|dWYRdTo-p*WINdbT|uQadcOmbJUM>g%@b1fIT*n;G*$R(aIk zJWg#V`a_>=?I4}As6ogz)KW_0-y7I(@$je?yHBj&H`mNkwv6-Z9#!&@(a8|fo$TFDDSKMyvNCF%U<*|sl;k64Z3Of$sKBP zr3hN9lsb1GDbvxC>dhFXly!gAupsz{%H}7gW-XAu^mi47r|YTR2rT>DiI!$Lmt)4G zWPtlkEG*KiTIiNznG$qDc4)cRc626DGjdS;5?VY*aT3Mt@=G_~Iyz)f`(cC9lI$3& zySY5dZd+)xwOfeTY}05`VS_l#A8=r>9fy|$Yg}nfd!zo92<}qX|GIG6&Bja8u<0}0 zOFB;NlWJX-t>#VJDYttAS^X_itfT=PF3`kQNfFj0HT7QnQo<=yUS0W3Q~%X{PUE)7 zV2&q%sS*v6v#>$AadKmBIqvC$l13Qq%rm5c=xkMl3osRNN-pXiU_> zx6^Sj1S2&;B^T0^d*(KpsG={g({SDtG6oAN;XjhD z8OLDGB6}vY&^@7g$YfQ+GCa#>W@2CPQwvsPGIuekm^jS{6&B|01ab{?SX#9Bs8)T9 z>SNb=yVL4AqZJyN$gGEErW)asKM! zw!ej*X9(gox6)R?cvr*NOB?st147zAttmKV({i6sI^f-6Fita9A$ONr5#C7y$5^9W z6+RTG!h5i{#$D@Oi)c?5y4@|R2i~d%-lH^(9f_@O^LSg4Gm$=es-k1;h5|41Nk_VW z96xkHO3r`jjsf>d^=ltj)HTV9{s%3>iViL;`ao3lI4k;MRCL3_q76||JxAOzc5YO3 zqwYnw2Y~URsHgvMq^Ebc_=^!+CXFj^0ave_Pgg?>WurTRotRjwQ6#=j6q`=5Kw>i^ zlD<*{l~#3;c$Hd|J4(pNh=wBZZ89Qh$W&h0bJSi^^&qjTLE?p^LE^vP>Pc)x`rQtR z$5%9Cf!PRsi|j3L6o6joa=$acnTIVjq4sC$Z$<)eI0BEpQ3a9R44$Un?gdgzsk`J) z%B_Ro>e{rRtXfk0s`K3v&!C84yb~#Ab2(z}Ike%nxEb67b3bO+yFwVIw`O|gRw?0G zFG>xibfCOOLg`MeEWL?VMETV!?I~{=n~E@^{O*AfXlr`ni^cQ&|=sj8ngrpgqc}CAI$F3F=Gn=1L?F z%iM|?pb!YyWp;FJYi?p6DyA(Hs*OVRHOd9jiIhqor1amYzDQT1R8Km~cuBMo>DC}- zi~>qlz16ChQ9VefYLITN`7-uj=UAp*=ar@N|n#9vVMSF0iPo#on;gilV0$# z(R5ff&wg)Y8~W9K&K?w*q4BX2=X&;3FfFcTq%#9`e7`JP0*u~G{yWIWs{mSotwRtH zFm7wmqQBxcysAJ;8|*7@1g9E|*8n#m0G#a$z%t9$a30u^7#2ue?hd@y$TH1Jy2U|C zu;rQNpAq;OjRk@?8gZuC^?bL3IuXIktOt`4qXf`TL{SmEg|>{~N>+O%VDGk8JqWI9 z5PTSEz%zY@C%6@P<7VSk3m~+}9lf@j%JNH7S;VoPkcUQu+(3j}YJ^0A6cxW^c{VCG zsR*h|#DR70=oVciAf!!dF-Az~_<02o<06Uv4ngSYG4c^Fn zF^+$X&yhF}vp@xv9IXb06_k@#!T&^o)>067!%xGF(;233Tomn_6Cl}T;7W@~$DcgA zOy_NgCBKag`$#abeI(mo#hJ@J!&%J(s(Stehu~M(PY%+i@;Xe3Yz@oUS}t_+r`atC zIT{0Nhl5UX1sX!@x|E*dBiNip*44=@w;c8A0}dO(KtS!AyLE zWkJRi3<+hxamL6|Mf_Kach9rhCp4y^Y;9>~?buS{a5N9{_h@;bFFT<`^kF+5Zwupw zb4l7M{#Jbfk*N`V{=~?e6iPg|)-UpwzJy&{zV09lU4IJOb}#tWbjarUYWYoKPD$0(pj(r5ooJd|T22;*--pxR_XDsQ5O&%M(!e>?4 z=bb##Uc43;1PWzdF>*l2{drhA+M)kqrO3P}Y|^(CWy+{SQTt@Db2Oov4F@lVeet5I zVXtGG*gCH?deAlO5A*Nz3r?LhXoPd@)W{C;ZH^c0K0oho`#6Trf3c1@hL;g{V3`}c zzg)h}9-8=)bfqOe@*xP5?)*Q9a%5va)|Of`So`dZ(!(~<_B{(-8XGS=Q1-YOqiALH z5o4?y(DclGFHl}n4Ky++r(^Id$^3w+p9-*b8A z`;ZENZ0bMG9trC|k|wgXqcUr`2hni_V5orqQ8JmM1%*QS#Rk=D;TcO_-= zZ4LEqoNB>&_zW87)w`>VesJEMW{jh9y(%}l!&MYi8vG76@eJ36e9qA8;XFT?3`k7q zLi1{DXN-h4(5I@cu3}HQHL_;lN}J9+lgF;*ya1f+^=Vew7V`O~ML1(fYzR!lI@wr) zE7-VOJl1qt7~beDqoC4%g?nG1+nL2g<6okXEZX3gQBRZjshL zhk0jfZIzV~49JVzxqrkQK`GwXOpKiv84T~*_nYh!7F~riZk6xc7@nwsuI2i#tcw3& z2!ED5=7n(`DT_v`l2VBh=P&unS{;#1G%mv2#@X5&I@lc_0B_PfoDMprhvQ&3&_79R zEG~eDq(HJZo4DawAU;nVo}RstwY4!>2f@pbXX#aM%Pp(QEYcinbHDz~S zcnOrdFTo6PD4d#E4Z=h^0VGI5i(rRWWIGQ%yPpvsP7Hyt*l+X;U{2|CFZv zqR@M5lV*-?^N(<1 zys<^!n^d#4wU#-xLQQ0-=PkDI8CWzWr^M8>-#xO0d_Cnh)&4%{FB^r0GN*0u61WNMlwz2004lX3#oO&0RJH#E z-%|7ro>RvT4P1!zwmBDV;YacSJ3JO0E@y9-!Zf|LYIKF{wmAF8Wc&4*C0SGYvT0=T}2DQKdxp#5rpZm-Xz`jeux*j@0(qV%1ITib+4)@GC+LKrX+C! zak6~QZKz+ywWV$VmC_l%pVT>H=OqmAP6r16{@5^%>*DlEZE=B0g_Kwh&h9)4Gab_C-ZMhF7ACiw8c_(j z|wr@8q%pM*XIauhhYE3RWSjs)O9X8w)F3_hl}L^iD?0RE`*ib&M#mW`~o~Z4#6TYU#69QvIwB50~DLx z|4uR61*=~-pQ%mL#ceCX5Y7?#_WCs#1iQ*8fe)^?uK^Hyr3*|Gb9D_3gsu3ywprnq z%DVF;Eue|ARHROcLufJ3IIRXrw>{GQ4tf%eSE;n8v1JSr5!LUGG-otcvg%D&dylIg zG*&fee4VwK7;}}Uu@z~#IxyJ;B&+-M-$q9)R`ImM;SnbDq}2AB(g2k8A4(Ve~_YlnIefDI5qRLMeT%8o67Ih%iM;^@OpEkA%4h zv!R)vXiv$i*QoYxRXqr!Y7l0EwVBwO_qpRDKSjs{@p-69hk>45~F_{b==Tmq)l zwODtwu59-^36Ko(y{h7LtS$=Kt!Aex@2d=Ld9-i&$fIrP&#+?^+WMiwNrCw_g#+3m zgVKj7{UJ3Xv`dxh(YB1Wf>da4Zbl~BQ?lyKRK0st542Scv}ajfV#f}TwiRi-3bZAd zOEtq-@q+|^3JFfjqpB<4*ID~Gowc76O)(kW<~MJ`@@yBDv_|_`RxZ})CZ&s&!YO`q zFt2rkQt#);be+hw;#V=5-v7{($HwReT;K_*p$Om}!PttV7NT%`Kf#vR8G3*%3Ndi-b!lm2eO zoB7H=f7CIdPkQt+d-_OxviNs8VGhJi#>5@}x)C=LUzg>JuW?3OOj6^DzyPNuPub*m zOuCn47d``r!^%&aO`|Av{e)<~JY)#^sXgSOR5QPjOtICvx^kY(ZA(~L^&st%W;3^G z9cS1w*7&WyAQIzFq*~|Un5)42RUAJ=k9zldJKYJ zfIKn+Re-z4kWwbfx5cm-hlE^}O`P_y0>d~cSUko27c;M`vgjhcV+ytp){uGn{_UKU zO7WzI&B@F`>DH%8G*V@5$dypgOuwmFWVc9&vX8=1@1wu_z%#ffp|Pv%-UiD0=D&6w zqRRyYebiVe%GYa@mGviaGas$%Hf|oAS}+hmin=y_#QbFvlV^qNd}Z!E1PUr__UTmR z`^|~gbwkcC={y+Z9vP4;%3dc20)IP5R72CZ&A6rZE-;;rrc zyW8ESQxC5Cq2wEu<^~~y2Oxj)EX}dARM64=(6)(Pc(vkSbv!Pa`k7=>KmHEp6;aQ<{HmgSpjefe z<+9_*KHf|)+f0E^VI;uOM+Z(f+lB_?rsY%|8(Ran#hBE7Y-|nm_MUS_mX0T63f<8z zdsl6MR<16v{jv9#?N2skv;AQx?{51mYcl?yNqQLWL1IDu4y%${-r+s7W|qlVU{t7$ zsc_X4qmGUjp}}W7hmA$CtZ7S#Fboal5yqm({d)vaf{mLzu6N2lHfBy&iMJY5GMA^% zl95Z-R2#7aaIyP*C_T|^0k+u+qsSQM@3F!l)<@<#^BsTBkK8c#bgRJ@j13R@U&80k z=(E<{7=5PQwff9i?dAY^p4IM;@N(BSvf3%*3E`D_Nw&yGcn?JunVmqn?WgOqkLwtM z1En>kc!GP&-Gf%Aa}gXNK3zzGJd4qjG8mavcuT+BD&JjWdnaF5w&7r5DaPisSjOQ3 zlaUz1EJjtCrDj;bVB|ZNYLWQaBg{pCCRn%3CQe8AcgjaSOe<8y1hu-R$GtUNRr9RlU(3i}$$E0u~du$3A$ndEnO&^{^xH z!YWJuvC_wz&C889R@u|V$oOI#^Uq%y$DUCMh5 z&P3bOma_plRTY=5E}o*9mT$%D#W>4Yyb0~YFuVq#JOY342+ZD&UZ899cv&fvW~Dqh zXQkvA1>#l7cDcJyKwgbx;r=ts zlOfSBYch)sC9@#1?_G_Mf>?PgkM#&FqV-AoihZ>N(|Fh)@c zYBFESx-K!ueT`9wQ_ss7wYkd0cbWTVBXkwv|3;;b)B0lA?cY?)|NWW}K-1d9Y zbw_pz+mWJbjx#F8PQfJDJjCrW80O{r-o+{b=aq`{5HQQ!7;M>0h7D&C%b=+9B+DQ2 z-aOg!P{P7x2Q;&)%*$M`sL4E4-O=I$&@E^h8sD+lSP|&@EvjyH1fWYjs+$!xw7Nlh z^rCT@6;+ilpV?k<$@M&rY^|PIQH~pZKU|nQ`!s*7+g6j)nWs{-`$;y8o+~2M*Nk3H z+L;vtBtkQoT+C^2B%Ye3c8v2werDg6A%;2Kl z0l+8f)eFKhd}I^P|4pZH1Q=b=ych33JRq`>m09T?EzwY8KFubk!0Gxd%_c75GxK!k zC(zmox@##Gu6v-Y+<(7HGGB0x-NxVhNZ6eZeYI5*vy3B(C2V!X6BAV$5H_fm zf7$_$ZbF;mh$p;7+}_t4qZAEzR6JwXA)dci7de{;WfR4qpwNC`vxQ-^tW%>j>qIN+ z_k^+}-q;{o;xa2%&HRu>?re@m3XI+o=H@qB%Jn9Wp4y&;Rn=B!JO53t7_oB4+nPVD z7<>KPzC}&{PG_o1Wke;!;6X7&m)<82>vZObQe3W;yAk6+TDtYer9gkgu#ol!QiwGC zwKGSQgtTXUT8YvIg|vr!8b|Q#ffBd#D`OtJW$D)3d93-QmyUUDobG9&8a+*nm*#=m zHy3rC6~JCovF*R+0Cs0hrn;nt7%)4{f{`bU&&okB_ouUSYIq}j>uSzED_5Sk85OHD&$&0S1rdGd`lsm>h<^BVdh}CW%YwK3 z|3|pSM{o`Mzk_Sscfo~D6UA#O8vs+Gl@kBgd?47UV0KsGp7VxV$iN&xNLIz9OX)) zPwe0N>^Sv=&R1d6s){|n_ax$UANM9YL}n#t3{7?wsm#6M%{Z$4LiAbc7U;7R2OI@8 zw=3z1297%8J$`!h(y+lVcXzSw)^rS*xwm%0vY!A-((N=!Q2Dr0rS8~?0mh^|ho-e~ zx4=+Awv4-5!eec^b#1o!d)dSlOn}TvZak-otBgKnZvP0hQEvC>v($|+D8Ga?Klkn; zCB;*2k|ZVuw?Q+_UJ=bEUcXB#_Wa^0tv+{)Zn;lHxj!KnOop;miZQ8kKfDasr8(Yh z5HI)mjZ)pL(M&h&9-NL6f608qp?qK3w@H|2c9YXZP zJB{c~gHx5C6}L^$l#pyKCpkC%oQdw$tsEzllq0!>Wb3rdRYaYRa(hOfrEbUQv)m2i z6Pb~jHd1p-Li(%Iy^z+FL`b7&oz0HKpH3>WOuVi1elOB@n5nou>83;J+^65+NOLq*}@L^_GmWUXOnzl<z-_5utrl(?L6a>Bh$Jx8UM^&8fQBfo8LR3I-gJnIg;-#%^ZA-tkt+lP%n_O%);TjORSrw%!-X|;y-XLgk zf6p^>cK4hEd+`6~^C5fAdFS%ZJMX;n&O7hC)ARyQ@kkK-2>zf95^~!OQ#TlHCprmp zrpy{Gf@oRY-7JR~%bJM~OQIWm+NZkV}X^vjy|fkrKnAo z^HY?w1U%%H2Ay+$FB=Q}gvc1Fg82pi#=4#r%Q~{Ubv3)1@ zkpT#aKnl<%s_|Ia(ak|=)aDVl8nvB+g|W(hRjM{9xyD9wg?Rq~Q*9Mu?|nvX9`PX_ zGqt^*0a2+0%wgoE;%dE-3yfQ0IQ7sttzH6_^bgPPwZ|zmE zU6_77=+}dqzD*T3dKO7QY?JQrldu+I>L?i1ktpmG1?9Qvo(YN7u#ka3y_bWfauT=F zC9nk@8$jJ$x%#CIM8-vXJsoW2x4)6v^Z=IMf_s$lx}17_0)7nA-7X~lG1KURkchw$ z?0!RfOhs+`cMk4|?)o~~fw*%R+Nt>YzO=NKcL0RQxs55#ZDkwVENyHM4XHXBM4_48 z8pLNXc%e~!mtP93y5GQ`=#%9O@B?>H<*k7xDrJJL^zmgep?ER;Mp3(r0Fv??wUMAz zk|2D#(clKL`VOPP4WfNXI;`6bKtv*un2L}T3s6OF1f~s4tV#C>bPH>N{FDTj;sXR% zQl~?UyZ?@fNz>K-TGIXXQuEu{c!Smk3bvAhZQztpnu54T!G7lSEv^p0u#!J~Vqgkg z_+&g}pz9OQ!@8y+PJb!wm8shSBCI#M#&V`q%{}V=B^qSqO)DNa0V61|bOJue>Mq13 zIpOnplJeYoyn0tups7jsiI8h*q=n&Dx(aag{mR^D_XBY@hRW< zA(e)r(XfCGG+_54o;^xHPLEOGBeK99a#Q3wOfG8wK$cm7?Hc#{zm#~p+HnOoHX$}Z z&0(GB)~zYX>42>7T}C`(HLe64{TEVc^f3C>F)J8}0epf! zSknCz3Q&js;M~sZzgiJsIiL%ee?LG3P+rvr6|ujO=LzOX%&FJcs?DBDrz44}YUuso zMJdQrRloOhSvAgyZx(TwZH$sGl_i}C&7NYU1D?iAFarsK2u)m?uJLr4u27=LcF#r! za4n!tTB8emhsD`u>{lsW?8+GkG^4ytc7&SAgD}r)YL~9aM{XnzpvBV@r!LlQTcSA|?wffsRq?k%O7etVe~y~ms5 zT68b@Y*H0xuj9Z)(XOO+;B#<(*-WVT#X+s}y?pr*R^Vt)(ahl(Cq+s3#TX)WQg?K< zcc27N1gu_!o~cOWBL*lU)8phii=I{$9|ujg05Oy5Ru?5Vw!vmO0fP!oCzBvvy324y z%AI@EH|g_=LZHE81`GFR2wm(K0c&;g1{q>4MOqXsOJaEHlcW&Dy?VKc0#sd!|7E7I zyGW7pO;PkQ-uqYQhOx1^MHHZtBSjgI^YcV0^`!=k zy|5I&%qo+9|AoV3QMm}1d1n!7yI0kQ8FrVLeXcZ;x36P26xKbHmlL0po4+nr=*J_@ zJl}|T?~jvv3!lUXSj@wx#?E~hkBA@g&3VXEGJ^@%yJ|PbO0HuPz3?vlBzoy3mlCoi zf-{GOlkiAm{s3dTnIp>_TZPZDvE%TU5~%`vW`7-fhJ3@KN~`G%k0Ol`X?sfqx9Dl; zbwAkBhejxPWVeE|U3#CSTayFrZuIfpuxMbai(xX0-3^Yoy9)n(_^;8b3vR*EAdG>| zm4wwEqUKK(;GrB;Nq0bWa=HU-Q(h)cM5YHQM^FcjT@()ZkL+D>I>uaOvU=?Kf62oM z=+8JJ*beap)>zyl`7gdi&s>jS__-=VTlLsuku*F>JRSgp>4lT=Mk)>>6-x+9y3hP6 zduQx<1nGs>T2g$DqLS`@Dn$UG*w|J0gmf?QCtcD8neKz1$daDKOKj{j^6wJ-&GgJ8 z^6md$&pbmUXtl?-5k&WTSrR(R9PW<#j_RqvpF=`whl!{{3&(R@Zps;b!E2tmOP;H-6DH#bROtg%IB7xs0CNcN* zSU6p$HjCWzSpzj5@J^MI0T$iItbZMZWlP)gEo^8>_mUrzv=gMteNxi> z8*+c#Jq}R0u7UbGKNn|N)ONJ{hxjfv)az6>$~jj%Ww4ZHarYHSkaUk%Q0Q|V;T8ij zO+rpn5a@9o;Y$q2R0(k@2qbw&7-l%g#<+W;gna#&MA1hGj?GI*P(pSphz3YxNYecw zdJ>m%?8J6l+&w-p=#I~tLZ04*a1jo7{ zkc`d{2*A=J5T}&-6nF+1z3dNaP4IW%5h6o-soWmFIoEgpE8+~v20hr(N1&UyRx0+M zsyqj{4ib;}s5@gmom*ZStVu?CkLu{=ownThmb#`UhMxo-JW%c_Ks`z`;&5YZ7jVbr zxQvDS-<7cc0iPv7M3?nwxENUHE$`!b%R7Acu;FjGXvuO>$0vDkQ&DSc56Z=6Jnha4 z@W{d^Vuez`5rTqHx~mFECg2q+lPPKu8k#Xo6P>HkI*H1BNUd6g zRvbl5XR{XnSNT$4t=t{8k*~$AkX@>j{|y@9n}-y!9aT_Ti6hYYegKq4f4z#GdzlE zu5tq=l)gM~*icvVUgW$LUZfZOE-^BJ0D!|;t4nnD$KHj$t8zmkA3R8Hk2zfJauWpQ zhFA;qcgP-g5A1azb`NhN+ay9yA4;++uDj)lzf*6+F%>CAQaBL@SRIMjGeAsQK5HNO zCW&5pygojo7Hv&7*H+Ji=G6#Y-pCUB&+-GN6=g_BbgGK(d`#g zGlJ6v-k}_Ezt{)!?2-12X`7XIKNw2@srOQ#wgu(6SFmks4#uRWpN36k`b%7duGg_` zkcu}y67L#U)VD%_r+f_mcnw419&fBp% zMjUNMNM!pSh9w@6qJ6F(uLo@*_SE8p`$idy>tXRx7eIvaywFx)MZu2s3UtrHu6SCY z^N2f+w)wfU4mUTPBf=Te>iXCV0`5@w*{6Pb)K3n$7axo8gHpRtYG3?cNwI~KsJ^88 za^i`8I98qwQSyg0fNen8UHlBgej~&v*%GT1?lgY{!wQ>JMM?fR9R4(Y7G?pQ#ykZH z5pjUe^jC!h?t?FyKEG7c&%->CI)XEo!`?Uv^NYSxCT9$$ZI}?(nFHFaosJY7rbUu7 z!6I8k3}>==S#+wDS3YAn!Sw6ontP0D_)T1ss)p&g zEsJVS&Qv2yX--!oU+-4cxY`dOi)rpV^*Bn6X{Dx#H9hrRg zTCmfFbT9L-P`j+{@^lzmcRdGg3+N_K7Q5PihYZo4Lgh+LV&OigDG=k$~E&0J}bB)PWEhC{uW^I28UwpRKJzP|quuHZQXR|yfLCqNN4c##WZK1HTeZ;?*an5s96 zz3@pQiUl%{nMD6Sj6_TE#UK&IeoN(clH_XiYXBD!%m}whQHiay$I2gLQeY5Dy8j(l z4AdKp6Do>KsjD7)DGbw*K6tne58<&)*eLF3G>F%zh!;Tvi5X68QZb6V>r?~3{@Sqn zH;Nb05aKOc*kEd5?ae4F&5b(;VH%RN9%US7y*tOVB~O%Z<@>@l6pn{`8y+S@Wp0eC z9yHD*L)#apWoQTm)$0c#LwWBOY-Tu{E>&a37mL>%-M-a-DHrV=4{-9REMFWb^iu%ki`qsJgB-> z|C(c;uPJe}0T@abmtr7+Z4sY8xz4YDO(Z#Wh|deqLZuCV=s)mZs=`u*^J1A-As2fd zsp;c87B!E_vXxYshLRZx`d-wQba&rRb5Kddoi4d@2#*td+C2>LXwO})MHE^XNg;6s z&8*nI!J?@*61+*Gp*k<^wG2!NyM(cJIlR{QP>+%CH_T`9t-g4Qy4i67zVlKfEc|$2 z6fNZ!@xoNums`^aZvQon<>9L-hH3nx7{+dmRQ6M&2z@+9)hMN~Pf1~)lEPtRf)obo zVf1<`fE??ZH~?%dr7iahia6_p{OBLt)p#=fyJ|iSPfp{}_e4zW>!cQon;UuSTdH&R z4VENK^(ikIl>+^%nC#TBzxym?K!LOw;^c?Xrz?=n5XR8ip_$s*=4OKz5`|LbPr65< zz_D~z4I^Iccu4&t=NpB54)8<)8I01N;~-db2(j!?CJxr{naTrPt)y*7NqgvO9+EI4 z@f+|;O3tNtn+?KK;v>^DNF^mcML&gBgZS4JG*Ye_D70X6hYu*yh9i{t(=z+Bh7JNw zYB823kEu9Rpq5k-YA#C){RS4@A|7VZ6#8>hLVuIk0I`t3{WwzSBb|HKOR2*k@9cxz z&m4qk5Wi`r=s)CIgverP(SHUc2kr{Q;T*J)2=DE!5bmAIYo^<3lEp$dY8Ho20av2q z0@X7x1G^c210E;Xnrr+`gj zCYnoX9+#Q|g6Zb&-J6~TmZMDu_OiVfo7y|(dbAge9!a+k1eY@OgyT^cnN`lY%Q4v) zCgTUvm(5NY%f=q{vRT+q)XM1cbohw03qWHLd?_^N9CnRFWA&5g? zA|4X+@XUhALxOQRWeXcp1)gja*dPj2fyRBg)U00?T^~3$68G4HpqWO}z&oNrworOO z8nyN^wU9|JZBotq2by;wn+Kbb7KwZ*UvUc5Fs4Fs5AIGt4N!Zfx6sa{9z)XP1pXv9rF6TA{HUZOcFq*9 zBNi13^|MHIFdKs!{(DcTW4P(C6Xx}!*$=CNx(+!GT(ny;Dkhs&DFIu>C`ddi;jJY7 zM`$ehS#t71gS!+bhi|rUvD_0vnP6Bhm_SOe#zhxhntpl-siMeN1Nn4d$KdV5zaW`T zP%VQ8PQG!3%pjB}2USKMmWZTC;iJt*Whm8jm<&J%nM+cFEg%)xEE=^lYiFB1bSwD< z>djL8DoW6Q5w6pE;r;W|njh5|Dtsu6mT5Lb6L%rR4X2kQ8Y=&SYh|EAzy=JjvLnxD zsx0hC4}uT?3QwUD5B?(twI5N%$Z7nP(z2TFmAX*-2Ji!&Pa2_R1z=C7@>wT0Q-D>A zXh-lw9>1mSG3h_>u0OgSN);Co>;<52*0^9|z`$oMYSRB?A?pbDu1t0hMm3lp@qsFr zi%o73tB=Jg+~Wa(vL#b}jjSNPPjtib$(>rMHzm6zSy7qPw|uA>k*2O!wqkpovt*sn z(vsajM`_0Sz!vc?BIa{fudxp2aOGsr^GaMxOsz9GNaA$+Po#>4tIj33MVyWc1)!;5 z#%g1*^z=IG^80w-mLQ4+mC1w`nxHSytFi;w`Q*m32ZuRo?dWY<@J$jdx?%XidR*91 z#98&=4?r*D8Vj)pFOUGF&hG|bs!FcK87vqJZv!`_x-fw5ficw3tbUFXsnm`^3KIk4 zjGBdkHF?jAQn$FO`7O5lXv-sMVatQ-32k|YpZ!S9S5pm(|5Bu<#Xogk6>}E0?GA#= zYW0t`sOEtgzqPckdL}&Bd1a*kC7StoqQxzD+~81yyX|+Q)9b3|l=1NM7V)S&F18L4 zI`Fw(d9l1K=G363xO>$yB{3V4(>$oR)e8i860Z$Bz8KFwA_R_vz*mYBqpB{Ei4gXd zzW}yMQN%7)u_uz#yodqqdfE#zXi)ebHIZ%z=`-kxo)FaS3_lGZskj1amI6czsOS@_3R`ZU4ePUCJ zFk19rGMt~BhG?ztaEbA{)LCcm|znQx0M7IKpN`>o$OP%7K4lP zK$>U%nbMH|^$}G@@aB(Fx##17GeCo7mzh%?Bz$HcQXQy$p$n}UsrBf-uVC*Uxmy3G zU)Q|8RQnOj468bLnN(kyK1;hACYw#MEB7I?LFLZo*yBscbb2qT9{cw32*H{2VW`$& z!P&tRNCo=KxZN6uS-2Tv#H!#4>zC)AUUTtR_l$^LyiaS|rs@6V&L(c}ZjPNe8O|z} z9X)mAS!314Kg?w&|0y}%4X+hXdM@K}bnJy{OT^8HiUmn!9ATV0ih2~R04I=_DugJJ zMBgkXfB`Tmy^HSPv{LaB+J?>QuU+lzp-7s+L^K7SQT2O$0iFiZTdxi(fjBhf!t)9q?Ml}Y)Iob?1O&SS53Ar7)GaH_;l$H`#Mj@g_U?k4VD~?mhwR zquA}u%fW6+GHlK~uEwLxFH3Vl#cRMvG>ZdWaPg&ma;Y= zWd^es)EmpvQf2)?mX#PM+nHwP>T_`XVr@kFtyhS_sl<1w#IP8#jDpnXCVbX013Xc_ zlw^sn2_0@A#28cO{-iHwA39$_LFGj^EKe1 zbKpR=g(Dh?h--Ob99o^6AT&zdMiR#4i_{%OGgESwbA~*f1rqRB>%rOZ5kHQO(GoH-vz2af2ec)bx$y3rdw&=)tb;c)!@(_NeyUdF;8vR4~+Emj(w ztHD0ku2$o$8KxnlV*JSY>ZoU7Y95}A#F9pL-_CyK=Zq0#f z#+r)M@KQ9PXDYfmTwW%r1C5^tzJ!#xFfZvo=1%qyChoQ2q1cVfmFMBQ#7fYnX6-!eJ;8AJQ5(~| zZFsYJO{W25PbwN_bPZaY%Wxh65lAtKVsUw9YkG0Xb5l4A_a&HYH2#Mef@3^3q`9QP z0*cPcRhW$^H~0sq)I9gWs@7Zowp+!@qD|$sEj)haTJ$(ZG!DcvmVpblW^L8^Zi&RX}3!|%t z#1;W9b$HI(ogha-16|5rr1rqBi5+-se-61T)4aBEc=vLHPMw_Iv~dNtpMd!Zk^ ziAytEE@jsKrdsXmUb3ey^Mgj1^JrY3!#Q>vLUsf4QjxzhAB{kwQWo>KPoH^m*& znS=XBIIYew=`bdBiDhU3L*c^xb6}L7oH)OM^9HwKu%VHZ<)j8F4&&JGvoTM|X`Se!qyiFR=&kRh2kK`{N!AY`C%x6uBN0ZJ~Nm2+r+i+$pMAs!SMQs$X!6vK4m_fPXbT5t#_6SyYE(ArLO|#%Iij7hux4QGXRZK)$*b7A?7WT#Xe5H|{s0 z4t)pGpOF}@cPY6!O|0nyl#}|q7^Y`1MAHHk&ox>rJXYNG`Z}5lOYW93?Z-D$<{zkw zou}52%8kf~KAh?&xqg)PPKiKv6OX4>Cz1zx#6JaOT--bhZ) ztbuV2F;2d`313%_(xMk8!%u_3z|jpU1<>S-o~BK!GGNrjd;&)a)k#PkSzhnk#X_T@ z9ax_Fzmv#_8t5Hx&c)Tln(m@#xDA{DE~0*^`oUt1u+;%AFtjg6e+$*1iKs(H<sJtzr9#c$Ysu8D}bBW`{mvFgV}^U@Zjge}P|gm%bzE?%*TT(FA6tC-JQB zP{@G7Vc7*H#rJ#RR3LFWErZh-h11HRIj$TaW+2sY7*eNXkQ!-1%H@nyY90*e+w1f< z12r3G7skg=OI!j=fgd4|Mt0UULH!TrZ$)ULrY_8VbC0Qy7aVhc!7={D1y}-f=id3{ z`1ruSpjuFW8K}aq)rA&f}HAjYP1hbLP__K7Lb&C7Wjhc z00QzV6oVH-hVj1CXfm0C!y;637+g*ms5HImu=2l0oh+8;xL9#NS@DxV9GV*f3!Q-K zQ8l~X#Q6Qo5I;Y$%;ko@T-kR2~Y&fFB2Jy3fQXYF?foqfef|Hz=E4`1rcoc@G7m z(0N?T@Wuaccxu38bI?Dt7ye#3yHDKzYgllOpEI}_*A$OBKXNP#qBF`zr>-l8s+oYC zh8?%rU-L@jJP94e188;Sqy748;^yg8IhqCtX8=b_H;OodN6*J{~Iiq%Kr^#i#<444Cm;HUG?$t zTXEK{OuTduvaSave5&uzcxND}KpkvhPvNy*N9;W;RrFUOoyOEC|Ik^(XcW6;!>NAP z^N4!}A<;jW?5v|(b8;07#bXk$C(c7gEE-tk%4zr`wt)m#9Q{je5E#WLT&ao@g)cE# z9aMI>lh8>KN_wNX5Z*3i{-Gd7&9};s8eP+xx%oM*lcnsy)Nl`C%*L+3fVcv-iR0yI zsFUu5BLjp@ZsGV7dA|Fx}hgsVN z;e&uA&})!a--iHVU*coZU5>t~`BIAwHJN+C+*M``(kvGi?vY%A^WWE{ho_f(qq}cH zmHN5gUXRmZP!g!m^nHQU>HabPkeNOHbZ9z{Hgapdz6ycg%%SO0q25XunGPn)V3eWh za8e0I$!K?;e+6UIsZeiopM?4Sr>}ty;BgO$qpuRjevMV=`Y=WgzUi-v)umvK^*Fh2 zyl-*wokDjAdImxla`WycDwc*Oi9sM6gF*23!DRICb8NCn=I%Xv-$z65q|xT%3=sFl<34H(YY>jkd`^bISx zlbCe(A=xn(Sj;^pJtGq<$k@X0;^HJfPaWXKi*5wm(-GL{dYn5#@{9?_uvZzDQyRCDJE;@zMst0*W`nPmDiQs~)&;-k&aR8odzKW-Kc5(Hj`hRKh!Z!P3jO@?=L$ zxmS@Lyl^l*4QkrDc1Ob!QGS&?51ppd31xs}= zWuos;hJWOkG@-g5!&fzU@K^CLCJe3Ua$`;3Aa~b4kG_oc+=rO>VPl(I8WxT`Pr7r^#Ar`$WIPVPfOtNvY683sQ2ya9_t(SjCzm>W^gy?Q$xCgX^XvlFhdgH? z*N0l-7}Nz8lne6K0FE~KYT>AW?TJeefaA95kPHw=>KsV}SLxT7c#->uJOaqIpH`GU z|AX`XbxphFvI~cn+u*S~xpY`tSGoz%X2xEvnoucCfup1IJw>y60S#|rSP*8>{FAi! z!~*D7s2>Mm^uTz8#Vjb7OIL5gB?pZ(mV_`^MuT?^d|$jOg>MU0yjIDymY`{Anyd9H z@h0j0mot1sEpO=)bxmJzGT({l*{zcP!&)u4F9cE~|Hb+~vTmT}M$a4^je1ARhqNQs zRm7S))bxqH0{R3G*VQ<&0#RO%pz7>_m&M$nSmnM$WgD#?Z8QmIIx+TvxEK04n#33= zi7RbQLK4$zJk=YV36U8{LLQUvQz_Y}+&3+}AQ zQ*X6+lU_#a=K1?q=S9w>L8IVPMu6SL!5Y%wd0==Y@={S2nULk>qXcdm zegNGr`oW=vFGKV#08UjzOa&2x*l#o@fV%QJvgJ|^9tPvvB8K8%tYpgowA}DX0XRw^ zz~&lhm-ygz8e$GzL27g(fC9FJJs5<{9f;4+dinRS%@3Erb1AwjKQL1GqiYN5Kq`n+ ztnKs(MYZv|LWqnB#kDnEuKVTzGtg%FpPqjDY5##;+ji$~@7&!lxvKO1e*Tp>YzFs@ z?E%-g?Vyr>WJjQ8>zsn|@e}hvWVm|l@Vmyn$;UdqH|MHG*YndV5aYnrPQ^3&O`dB} z5)XCy1fPcB2#1K<$tC`CT#w>aolhZ9kC@d+x~zY$6u)RolyCvc>_ z3~nljq%v}q%7lq=qbeDto{ZZbQ_1f`a#V#`vJ*oRji&!cW1=mfzbpy(f47l<#TX%S zg-xqAA_UZfH2(PXLfX20NQx%O)M1(W9Wb9c^(mGvX^?4dZp3f^Gxb9Ks!F(QqvkrS zbl{NC864SBm*2yKIp}y-?AqdP`Zi&oO~1BC%ikfB`Ssqhe0}xE-u_tcgd5GR(+igH zR5`SAgi`H{6+DbJ5=R%d zkfr*7to|BQudhx8llNsgD|tj2MEOH^VErI!qv#P*Y_{%5i%m%WUZgcd&lyVeK)R2n zpqGE7oW~Slj3rzVrN&ZKqEz7z4g(#m(j|U*O1fa6FrosIv`DF$GOC&9DYMMX;HxC% zVdz52Ph)QY-BT61+Ayd(IQsAHz^T~ycsRq!QD2L(B1gSN4B8O=aO%+!r3?h?WBB2))&s@<*@c|w|H;;h-k^>tcBsR{8JV^ zm>Zc`r;kUDDHwYbz2d4pIBdbkRKo|!{!tD0V7#EVL|OFiVk{5q;J2ffe2S|@xb!TX zLd;6u!KTSIpWhxzcJ~P*#Fi$SAcJlT7Cy?WwU8r7=V1gM?M7mXGwoT4q%_! z4dzK35J4@N!2;k8Aa0%uYh&BOCi!YhEK zvj5e{zF{(3Jc6$nfrU@2?8h3}Kfxgbnf*d!|A{I4Oe6dKD*IhV_E{?XR}ZS%pE9yX z3dLWk@gL5aMjPe+oe?ApOCfd5i~cQQiNn0%Ud!U*XMT(yxNXJVg%Z2nQecPx>VSRV zR3JE(wNs26CaaQ7&5A}JHlUHQu|oitnKTAl*d+R7vTjF8OV)>ttbbHl|3*0WxFLtO zh+(*RMeftpd?`B()}`2x>9Pb40m`9Fz^n9HT*XdItpnhGX{eGlVr_rFnArwbp!L+;_T$aQGKBw-B7JhX(#J~zV zGbP=30N+~u?R^1P=a9GYy*B^t+M2f`Z}K31i~rw{TOa|}n@ZD8x~q{M>~ZqK;i&82 z!hWogX+2EUl1gbmN*O@OPPchAO=9?4wk$Jz4ACPUp0K_g zA?k{i==bEjfMcdyh+%@J4KP+F1^|XgjRVCMJoi(xeij@!Ulz;p6?Q}^Xv{JuJx(m; z@8S6hDd-L_|8IcF@(=Q6fmHd|XDeS1qF1?)J$X^zOu>V7#FWc;c=%Id$U> z4H>L4R<_<(in%o>J^@Cg@x?*(F87JRE0(Fyz}uhf@UJ8q{)XfFtBd z2v4HVa(d!nb>l%7SEXqw`%=oljL(&f&M2>!=q;V85>3(SobdE$wHDcnNLzRM=2uki z$5vHasOE0pysO|0hPm@K*Ro>lygUG@40n#`x;((|KS%LUZC<^sSf5E=u zJy=muUjyoD#Q*7d$#6wl_NVp<=mCR5w5GQp$52kqHI4UNuxMx7`FNoB`ZbsgEv*uw?UDTlIC+zELN`POA3FO2O~EIw@cf+xa0u$Fkl4eK=s`CdI>tL>5K~| zoLQI!(l&qcs$SUtQtCn_`S^i0@LyaC7%SY3zo_^F`QzRye@a&Hhl~t=H^`S*VFy2$ zm^wZ0wILvGs7%GG2P(>@i><@ON%v*wq9r$Idcg=Uk<{CYV2-Zrkb68{GzQVSxTB%2 z(N2`C5NHD8#0MGDS1;^^6x3Gx#f`Y8Myt;WvLl=X!l;E4hOLE;~yf*2ng z;SZL(UVSwL5@H`5nl%JzkLOBSx}I%AgJ{i$u8dTPcc51cTuy66_oXOlec^}LG-Q$3 zzeVA!dkEB#L9+A`7Zfq^8M=6VVGE$pr*e4Z4On!w_M^h<@Cn|9Gx0;m$C8`yAli@` zb#VI%zI%DxJD<#SddbO?fNJ&exLQV5|0)VY6hK-oDqsNcG)JpFb7nPHA0IBj35c8d zaE$!c4+99ccqB{g#*yK?oMQNX6^Ax|6ST`tRe9B*XD=g>5@1$8%q(l(JL(^2g?cP_8L5^JyOLJ!cD z?iZ7^rjki`0ZSJ1C%cJj&G}HwieOGfm`<9jub)c~*RY$2d@|{#2{^WlWpR5Pla2!!y zP*qOp3CR)Pq^Fkjx)I`d^fgM@KyWL!l93STiK}JcF)<#4XbBRz(ur`N+0`n8Pwu2C zk5uT7#T39$8!&`mYjnTORCxB`c>|tRc{|xJ7_+9CihL+;0e5RSt=Ms32V7xH{h1sw zI*qk4r%Crm>DrQX{|LZzpiLhBFe05=)e@;I!2gTtsOB!~#x(@?Ubq^`_^B^s_vRv2c&PK zB5%UOJ+!Jq6pN`<6`y(M0L8fJ580P=duvhE!ZpMy#U7GI-0Td=nMc&JN5DcxW0NBS z7pK~qI$u(&Ls@*QPT%0Cinl)pX76p`WBrJ;THn-Aa9~GW{x(>w>V|I%Hm$x`A6N=C zs+7T4^CuSV_vgF9#jfZ5`O#hbw8!i6yXq=82K5b+F}m+a4_eTc{85jE9QFd(2@8SO zVXOJ%h+kpeO7+D3>1PfMlWiubzbRLO-ynXz+%j&47LUc!P?RZ`F?L44V(BBfwoZ)U z+I|2WOJ@%yO>2vRH3Y_X=R+ zlmY!GDr6pEW|>PauPiG!-rxY;dpOzT^22(u^ZWgo48OwF3ScHfyaHOqnj@3kazKfg%dys~hnK`lvn52U8&AN`{ERH*` zpd4W}armln(#)O6T9cytL8EA8&NDLJCQ2~)*)slVh` ztf3ZGHO;zpSLBRnTUkNm6y4{M_J*)~>@XMs!u`jd%%9$4b9_I`jr7JkhUHnNGFeW% zl#y5`>644=YPQeptNV-cSJl;Qo$2x? z5x2XuqPFJcneVg4^a_@^LluI>ecc&!4c{QHK`UqqsmJLmMhe>?9>5p!u}k-rcZ#8M z7hbL^EzT{y7NfE>;;4&jTAU&qCr|y3F_fCz$m!LS$IKnE@Xj$9f~B)g z)X+dJALnoj$`@8qsnJ}uSTS$q2e?CEQ8Ccy>9SPmYM#{Jq=?;fp%TyN+%EAW1Np&H z!D+76rsJq=XQF>|v~7C66i?wi>oh0rH0s0;=F?BcV0Og#_U33WjrzZL&-~d)po6hk ztQ`P8gQ3Jf7&cxNd@>B*ekBm%L*7SyT5jn`-gghb)j%&r$+LJ0Ka0N<29 z9$q^DTwnMTe8lEL$NIu0c#=AjUU+p4GcW*>UU-G^+{*qgxPUY*aYObc-OI-E?+Scc z$r8WZq6iiWhI^=oYMkebXE-ywrXASkTRiuy*?*v$TU*ubSficVRm=PAkfBQ{?CvH`l{%-R*`gH0z5M+2SRY=X-q zci#trv+8O-2)~LsibbyW%di~r;{*yfAU9&Mh>bBwz2Gz#lpp^Qf!6FYG1J9>1%dSA|D=#=F|@ln=FNt$di^ zYX49^OhJ@GWR-2B8~G#1AMLp^JUH5OovS?`T@~$VabV-v zxB}I`?K2q0suI7_zs5FoRpKX_KIH!MU`&9LwgvYpe(?;3eqH>IBr%YiH7h+p!@vAY z{6(DXK=};UqC25k!rR4%rUGf!T;z&sc*Ky!!lC<0em$_3k=7#x{^%6%c`USFn-C{Yxw0DQk zSsW<89^>X_lw7%U@$~W=>Y6aEAf~DoSK+pBUXr!0p4T54XC#W6v9MZ#;X|0kFDVwqCK-*?YJK_2}plJe$6uC+A(-u^g5K=xc}M2WROiZkAz!;O4&RtuM_=} zxIeQ38*1=3tT}|+Ge@r0w)F%c0#m))eKN|%j651sD|_-&*K%-q4rtWsXVkfz+V)TH z91X)6%wZjqYvT=HG&778iTK0BiR$JACOL+A`y~3Jw|#1oAzQd+;jl?Hsh_xj@5M9s z$!_77K)VPZFZ+P36z&~#y>w>}igYc*k6V806>P#Y6!$yfy#w}VU@4|83D$f!uSi2| zC{$V`E1KCym7k|WF`8RGx|S*YDwIU&avBQ#(T@%UYI*{$Nj+eeRvHMAAflS)A@EbA?I%xF# zAH-K)%>mT}mxbIKYG@!}C4#WGmoGpX#;WfJwF(Y@JM;sIJ}Xlh*_nNT{%5@<3kR{G z#?Asq!3h>cpl}a|#bOi^aJ~3ST@$t`UuCiUA}%;UMyId{ROQ2}%nkxQNG0-IO3Z+t zAZfUb3~>{HxanR>Zy^ri>%i3LWh@kzLmAE?r-c&z@Fg$YU-I6+(X1Q@FR$_y9rWEHkKq3V@YzRo?@CuM2~*D-S?VqpU@4_ay{1uvkUN@ zYn@fDcHaLg)zE>}kX~54DA(lf14x3&D%uka!=Tp^K7Yjwd_k`t8||6nTC@)@?3{k` z7%7h87MDl*b1vq`;_ht(M_(!J?otn)?w5=VE}YjLQ+{6LI3DFK&l@ds6)=~p`xi(f z!Icr5_$7E$q#p_;_-j| zMj*fcKyLK4NJ1;Ir@sM3jzUlT3fhQdb@H~{j}PDptO6~k*{`2bUb&$eVR9BNBE^#d zMrywT6ojtO+toe^Pf2&v574i)YA6M#dj!5VM-QDI8SK}O;b1`2q1RGlVf4H|;*y9& z|9J5upmzK+Z7bHU+c^RgOJt@IwfgZYQ=sN;nJWO@$mfdR#>p!BN`e2t&P4I}c=0cg zKMm1oU_C1OLm{@dI*w#wOsgs(T%hLjOCDM1d2$ zB1+;|oCm}w^@ar>MyWhQqnr!GvIHu^QRD(0Jgs2`LPeBof?o-UJt%-Zd`IjpY6^$P z-qLjXb*F7Uv{;4eX_A3s1GX=}Ny0(Qw-tEZgTNOHu_Q}gIQw+mr--eJ%AFZCRbeNU zRWSk>QB9?six&(4zOYVnp+cF@k&QDOFiC93T&Rsh8u0{HFO@rMR_mfUHhung^W3Uo(O#aZmh2p&km<1iei*@T2D31QyxuCmk zgi$u>eho<(uBK_<{?2g9uS2B;_`Yxu+a$XMII{2bdqVPi3Qy_w;)$z8$76``x;Qj1lJ4KugsNJ%?O3NSEmFSIgXTJe-|F|Mg7zQMLGxnh2ruRGMK&QFdUqgRjx4ra! zEWsD&CXSQy4|@(*yrIsd`(9ZiV;Mh_%z(VnXgqA7w@xEgr)g)s7J@LTYB^NFV4xN-)wqbX?p&> z>3Mf$D!py|n(wl`0*WbZwpc0G#m5)WXe%wY;yDBx4(M0m*iG70>zB3+|L~5i##)j0 z7ISrw-e7qQM$#MPhp`r?tgP1B)QI7)X}>SJ2b<>u%W1nRs>fm(JzG|X!-cMKuij9n zpE!bAaDC0Ivj#Q$7rvjfuRi{Z9Qerl*X8qTWM7?*yr>>Z_L`Irk8di5phtR_AaKOO zD)@Wj*6vQk^MRpsjVE>Uv^g2#ljud_OnSW?F-5E%@~R$2$6EY{WUNPXYrV?494=m8 z>j9QIdMyrgVSgK)a>P=i^E^3Fdh~kuD6Z4SvYxdL@>ys+krLrLs>np(F>5&#X^9i8XRVYr2o=Cf#0Y^#tB@LC9kUPU^e zN_T-w*Pzn*Qt8rFGA)b(j|?@cOsB|H2@;0T0KF(y?*lbK%&|PJ7(SLykLBWEVxRT3 zRggS6iQafnY)#1IkJo#|IK-Vcmu{{-Uf(88c7#`mJV&@!tV9GIbNQLt zIcQWDdt>z;jE-~{d(vGj&xNv!D^wR(9JwgHUIU>^#UG!uk}^{n3Hj@Htx$7Q2|s(T z6;&Ht)^O@yt!0>N2#K3|JC)EVf;M<2cO3PP%nBuT58v%nHW{r{#Im-ZU9CTB#of}r zsgPXtUh!?7xt0umfXNyr*vf!G9K%dAhMATcW|x(xhS?(+aIspTw?;eCFhj#e_cB*W z`ERaPjiAS#!+peQ;bewu;;XFuP4RiMC8xdgka*sf+gf`FjV=;{EM=H$ZxOR?`OQ$D zXtY7CrB{h68$6SnWA6kT)RY@?5C>whGglJ5!HaXG^(|r#E<(xB$dndPpV(}J+TgOC zPutRDut5nj#bQeeJG@l1IKs<>W`SF9mw!p=GpCSf# znoHQ%R&lLQ4Qcu~AL{XFGK%BHK6+aV4XcSImW<|dL*lH%%C*2HUT0bGva}4;|IZwA ztL$7z+Lnqvf6CS}!plT)zPSuD284UWo~%Qc@CvcX0=Hv0>U&^#zoi5_24&)AN4Q5^ zY=N6FfbdUqvxnTQiIcLWmE4?TgPO`B9PKRJCs0iKgI@6*MAr_8bxWgv>N3^-vWDE(tHnQ->omA^^Zb0UfBQ4!;~(| zI8o{0>1?FmcgA7q(|DrpkeF>5uU0w{ez^^9${k;TYDDJ*3!zQ$`U=tUkp*a)8RGG! z%zYqc3IF0%%Gz$ zdJdTt4<8%-9bdr43dPH^qA2B2eXF<+w<=^Bk*N|(0Wm0BZoRf8J!V=sWsc5&9V976A_hhyq zV#A)auCkORkG(d$y8zZYp!47_m`uV zr?I@-zHfO~AGJK*oghy7zU7r1wY(iHZ*%N>w)fvVED6o@AU}Y99_&nt`QNv^TaQ{E z&(VsrzHfO$j#}PxEbpDgmS$w{-&fwSBs@ZUdsyCsw(>IR;*crjJz3?q;>vu71PeF} z-anA71WMdBHmI3T34hWF9$(A~7Fv^-@oyE^TY;8w!14o5a8>>=YZ7bu1y-PWltJG9 z{?}FsYHeLe+-HNE%dQYlZO%qH>KFI#&jN+LGOb^p!A?DxrRkjw@Hl%x|fj#3BYqF(9YdqrjHmH?$RpLHJ zxK}hg!Yjl@Hn_Q|AyHw2T5GQmMUHTf5MNs9V9nnmx@>TB?G55-8`PS+QQYqc4~d&? zaC7OJsIx(>r8kH(Y;bGt{x+yJH*}LPtS!&vmb%f6Ru;-YxqkecEw8ogka)xqULj^W z!ad^BqrgWw!Yjl88{CY2mH6s&Ys;-uagZQ`yYsSX4d)4c(c!*ae&hv{h$qQ##$4t zHmJ39k7zgw-0KLh5Ty=qQhgtTiJ8ox=K2ZWYJ;1wk9SZ`J!?&nfzv8;>7!OjVJ@93 zwwcz69N*Wu7CvLJYAMZewSk80(ndE8dPpS}5Ta1d`h!YjnTj{^UtBitkA9R+^1BOL9w!OheQiJ>;A zxpTSklzcCH>$$Ld*9Om&Zm`CS)&wRvrlQ|if##k!RODCRHrJoYO&69XTW%}vN(D~F z%%j_yKY6ox+=6kwrwY7qn}Z5$;62y@??3G_w~6&y@RA#3KeD8;z{RTr%xeAj$9u!p z?0Co3NZY#DOfC~%G$#Mu3bf!&#o|#%IP9zMW^cE#*j!>wVs5u4CM>fcXQ`h{hc|HL zs!55n!{x5uUIZ)1q_LC_c$sin5U|5NV(&ZVHrU}6VoMe{XX?LOVCG&Yb*EY|W3OgP zCw0$tgjWgoVeqtbiU-aq(RvTgBoq$$>tX)KtV;gN)Mv=u*Z*lImI)sN-i*6cGsHX$ zE(!i(W+2$hmjwTnBitkA9|=x_*9{rKVfe?v4YiK&1~I}0&tMlGpm@WL+t-x1)>F}^1&-Va)f)tsn*JE`76W(r~FDu{jfb7{*ddvo$`aa zpX{_W&Q`xy{K#6krF9;0lMQNZeS-)(!hPa2N4O^XIKsW+G$-s;@AtAMvG&d%aWk8V z@vW_o(_dcPXH8B+2PVX z<)Q3w>27j+cDQsOnRH~hCNBAB8gUF={xj1@6K5R--v21@&;H?D{^p~=pE(Nr!K1)$ zI|}>~8{FJ_F{!5RVU-tg7N6sIDE1vBAKWsCT&@4c>Qi|E2R=8K(WP@i= zq)lR?4QkEZC`Q`g=G={<#0ItI4v9~@-t18+ul zxYS(gtZ<8LZWU+Qpw{NKiT*Zt27T^U@7t2C@m$orcyo4WNcfJktQIXJhh;CY<+ftx z6(|1FDZfWt=7`(tPg!%D+vO2uw!GH5D@4y`Ys)Nfr4asjj#;RfsBUZmMXYdB0z=`u z%$mTApjX`eTPyk&1h5}=l_OjedsjH*SA09r+D23Tif_Mq#XW%IZ!l z&{{vF*$a;F2Js6U++2Etm}i4pdmi@hO%~K_wR^=_M|hPO;s}TR`(>x{ed28!+>E_P zyp$Cx&kMos_4#^h`R4qs;-0Me=|p**4Qi!Lh44GVePWm+yh`Lc!oA|XjahM5LZQQ& zz}z;E_^lOa>p7o@I>M_&lOxuqo|`d)F74Qj2uN}OVYn{$Umkpol{Pv2n`cGj|eVq=$;E@n6>Gk@3-YQ@k9g1# z9ul`X!rR0pj_@jRn@wC;@$-uQPWj_yTzMpJ&)WV5vDpf=wXa1y;|SNp=5-EzA79GJ zEpalUcd7rLzXdu|{ zm7~D_VuPD%SB9?#tO?9;so&1X2Ip@0Cv8sHY2s{aW=rchG+jr5?_J|u{uUcNgT1jU z@QgKq8U8q#!vci)WLH%#kmQ~e)i1;a1;5!Kabd;R_?75GaccYxYQBeCPq2Jy<&hPyj6VB zk-c?vfZXl~ZxnxXf-B+okTr>!J`G}~6=wcvbXzRBM@pDJGN8IHAr{lwwM}ePjgJ-ZO?N78p&3!}K|L@j?LV={C5jb;`Z2#+twkms7^z>~J|HfBP>B0W$fy1bxQ} zv`~kq0AF;3YvNZ&fzNk@`@}Vla7|p`2=|GTZ17C$s1D_1g;LtT|AK`umbQ~Nt8DO0 z*@lb7Z>$N-a5)+Jug^9aq4aVq&{lheC~$%+NA6)+>&K`qumWx6SBVc-I<+3>KW%VR z>wx|5ZBXl|YY`VUS(S@`E~>HM6bt6{5lsUL`bJ`DW}rV)u2HrX5!LMkl!P!2g3aiK%=wkN+q; zT)HRxVY!8Xru;A%-fsok@M{#OTMM_r8$@46cu1V?SU&6*At(C4{^1DsijB)GjWg+p zhQsq8tqDx6R}RZTYXv4aq|OX$W?SnkM4clX=NGPZXq}qPH&~OH>#q`fp0~EnI&!_@ z0c&O(ewvu!2=|ExY~`D4ZxgrKpw`+$;u1$V_J17UbZ74G2(J>)ARMu2ePrre>Iz%` z=|CH0H2jM-iK%sJffTpGEfsjg?KY^j`7L6SBfL?Z?FbJEmjj$W$9wQ+o0CgdBh!#@HR2o5$+Y|IKnH$F*djvyGHTl-<{g7iB}!rIRE7cZxN5$ z;HKKuu$*a4kbxUw<@7?0~&e6bEF_?-5`B%_+ZB6t~-wWDul-Z`&yjn_!Cf zzdmTG!<1jm*>^Zp;1yGBP%HOTiAqPfPaNwA*Tk29wP0rxY^~x|M|g|)yCb|oJn9G! ziCK>DMlr<(&ybG+z0S2k&D5dM{mveT)+y2T#dFpq<_bch%BcWI)_-Krt=R8TYl2Ma zMl`osS>ad%o>1<fS{-&MvUu2KmkJ_AS&*NAfTX# z8}3n2Rxu*(TU=>eBZ?0<_|NHkC(||1&Ht?LgEP0zy|->vS65e8S9kDknzNDVv(-io zT}4znn?PUk;`uD)0h5esfFk?GC_dty%Z(TKuqF0@DAqi*Id+FA-tD`{-dJo-^GxfB z_J7Vbs%=DGAsu7GBc_V008u#i45JJ;?>wh$X_n#QG2V6b3sCOSK0e0?AY#uI$&OLc znH3D$@jkqMo8qg7J^hF5H%!uKAU>#iD2k6n$CZ`YQEYT{6QlTubwy<#Y}h+RI~_S*DAKe|`1nLN8w5 zkRNy${*jT!lbneEO8L-NBTsuAyN8DxjTcovXI$F2(rAK+{|b3MWQ7-BS?TPboOKxf z`w^b;Pvc{>f!_Acu+__AIoEG#vK5JRO6`uCE4IVtq@Ax>k zS{HiRS5y`{$KQ*uthCuaoeslSobDO_66g3Y^Qu2C>$eQ`i62i~9yX253Iu%CTp z4a+}prdRoLCppk8!gc&{tMlCuzxeX(B-7Y6Yr{9AIQs8?(5rOx&bfZxD_7EflBwc~ zu5vN?L7qHXcd}Wy*?MxLmgs3OcUqlI7m@OLqnKinQT{iv_v~KkRezaz3?1s(dz{|C z%G=)Q-E%y7^p38l`5is%|1yn@_;vK^Y^p@+Us>slUWtd{FB#%lzgqUr%@26B4`vsu zP11-DPg7|>$5e60=ZtQXym-vaXg|n{uav8A=fm)or+L=TdGm^YsMECw>WU9%*EW+h z>W3X#jBk~x;K>}>aa9`)DR+fe)+ zT7b^0dd@!;n*r%9-(F_C47&Huwtp%vw7dK8Tor8W!?Sb!wAe3teE-sy$Me&} z@bjX0ckRpVgdu*VWB+fIwNZOHxZO;Zh<`o=Ni#|F)EE07?=VA%IM7@7xrIjmaPer~ z$D*u_0CDj;-841=&=1y5HeJ*&+VW3m7R~6hcne0*D;wk2L;Tfb=DoOL;!AfW_7gMy z!k-`GL0l!jMui}i+o$#4k9_=PWm4bG6s3?Ii*ou`+%yg51Mr2$j`&lfMb4ji9wIO7 z4Xwc6_RW~S_Rj;)HsnRwIs%{8$-&(d(^h_W`LFR)KGjg9DaA@Cg2MRaetWmC8}EatB!Gne4N zIK5%{jp5#KxBSB2fz?+vkMHN|5Fbt#y@~d(i<}NI8y*ho5VgpZ4srRT;STY08&`)A z1$Ky*x-XW*Q%=!*nxUM0c38 z-UxS?3;D~{Vaom!?l2e0uSkbU#93HBf~=et?l7+|{Qq>A!qwpp^HQrrc9{F?74C(C zbeId_S~|>F{EF%@gN2NHW5EBT!#r@JPlvJK$*;rIF7V?g+SPu%beMZhm4iCW^(OD` zFc_}SjbhCXG0{HBm&dm`efbjm<=#ebG&&To9iLa34G;;R&-Y%5V$JA^><4`Layz@f z>D_J5t=s4M*zYbJ@!p`&X5Q3pekq z!gOioVb7bm38r)N;DW!|bRNZ*+Y_SrNa>u#7e%q=ku9-vefglB5XHN^%L?+YxgK@b zX~{+}p4a$?P12|vZ@_Pf;v=Q&+bErn^=Mh{x*rl{?XJ7-B-)+tX`g3rGf6W#c{;nh z!lU;5c*{1EH0{xESNrm~|MTUs{_o4@+9^@-yIK#WclWX8zJSJ2e8igXL)6`3R6MF~ zxps{|kFWD2*sBelh=1-8-1ma}%RO*!j99sL$gn+#cl-~D(utIy?+14=6{2~^$-w;j zSwVykzr)$4o--rh8-Cm8c()M$Lc*iIJl=mk41Z}9?~X2uYg#5^7#8#zI?8|Fp7^v$Ln2L6zh(TSG3|N-ff+0_ljao>l{1NmoKn?zuB+u zh4y>Ce3AXMA1}|OZ#7k1@ylOWy26vk_3{jpj5;dyOA2k0tkDZOC;uWA#>jxt&WktHB>A)2p8fSlJ zztT(Xr}K@v8PV~5sQp;Yan;@6^=a?Nrb?uI+P`FyQTEP#Qcp7k)BXlOdmO%Ve0Y}M zH;RvV$6gB#S|571UV&Ym>(_cAdx;+}I~hmyG#W5cKKI%z!AhEU>wduaGW_gI{p>L( zu>9gf@5u47XMC0~AF^w2@QEJ-Q*{&{sXgzMmPWDeVUIn3x-TEJ&p(Kl)yy-BX8cfq zry)ImFY0~loX2CVD^u}fF@7|ec{kb=3(a}<@{42z5r2P0evK-07NGldsb9-1us^w2 zlnU+Nujg9kfYSaayx}|wDF{CbVHcK_??yG@h0MK;bRn|rDUdql@>yqgZ$Jyq8?&!*f16(}$=1I3J#?2>lPkuk7g8dU*bIkbR_g6`^-+ z98ko^R!%2t|Cn~Np7_yZ<^$5nf_CA=aR2EgzebgWAF{lgTi?&{w_PWR9-e<(Tfb%= z?rMeMu2xgu)lzN?cePvMw5t`OtBC@;+Qsz>lc2y3R%rKxYyJw_o#mG-K(`VhZo^yJ z+lmg++eG!s4n~u?k2n7Q>osO?a360L|D-QpVlVRJrTojIR3ZWBw`YT3`FitH&-tl7drJ3T7Eh&5Ms@_nuI z>}FAX#9FVEPaI*ikBi5Z;&zja8jCQ`DEDie0{aXfd#u}VW#bCdg{yp7lN{;Eqxb!u zV+0=+Ux}S*8b|TCfAzJ;{hKczvY)=nr~a~Q_f}KIRX-fPUVi>7gKVGgk1~pI*~_lV zo}T{YorR{}d;uSp{5sX}?~H~cM}@Do9~bp*-TGk}23vQXjq$LM(Z7CVcsvxH^Tvq*b?kB!jlBp(_}%}6*UCBQ(DSSe6m#3W2?dFD0)+K-cEhjV;aYBm@Pv{%! zb*_UB&ta#)Q&0v4C){2THV!D1jYbmSk;2FIydpgD@jjuQ8cl8Gc|tp7?6};cy)~e9 z-n`Q&3%z-#{3#}HoX|E8!|wK80pNuEE!(fdWB%sL7uvst4ChfNM1j4?$6lvrkDD$c z9a^V93%q$wZSBiVUgqOxhOa;eihB3C`$6fjeICY-CNm#mpVD1TPmXcA15W*i<=3ck zP|k@osCBrjg0;trUb)=>#o?+`4JZ9i*y!B$m4tgJw+~1Uoi-=jL-+rI9?BhXCFq`_ z!0!2Zy~3wZK#xQrD=w41ISsz;yC6g^HcmvdgpV6_cKBj*uHFKo-NPx;ep-)rvpqYg zQ_wN+dgv<-LTYA`D8%I-GrZp}HH=MO+VSlu6}JP-pQBi#0GYy7nJO-O;X@|xim*bS z$)9d2xE!E{jg7x6!d7(ig?74WZ1OUu%sRqo1h;*jz2g#tH0*iDy3Uu+vlsgCTq~I3 z$IE+}r<*FS_~eqaF~OWu>FLZozD zjma3{`qjE zewAT9XgBlbZR@UjTU5_zza<BZOkPq3RE%6~l{w0|o)WPHwahHFHJD!*bta7Jwmc4()~7$4k^OPVtk zIMvj4wWp)sK=uEDel1%!(_cSU_5XtY2h{%->shX7T>ha^MU4%nMx?#!>ziQ59=g7H z7%I@8g7((~57{2dC)gW&d8{!WnzuLp{uHj289@qQlvW(yi|NO3U1JgK)FSNhJ5{-Kdh?K5>Y2y`B!OibubPss*&JFyH zUOZ<*<4n?sj*Hy=efc7MKi7=jef0FnW{jy4iJzC`>ze!7J44`Erb@(~6NY721ar5Z zyZj1FNM;^}A9onOzb}vPKl$?b{;w~O{lDk?$G^dsNByICSL?{;>lvnkn|CgV7kKfU z&V82Q9UYI}OFlezqQ#rejowB6+w;8rlYb+Mk3`RH^AnSNrepG~V}PmRw#WB>P11;t zJJE`wN_Y1y-NpD#q8Wm_fO30d6nh8MT)qh>~Qh}MK3m1>WbD>E_RUp@%Wjc@I z@%O)@>|NgFRy5vJaP!q1dcI9Cs_)`4bZj=ssM7KGld;_8s(KV(WY6)n&$Czg*~^XQ zsiq5ee1-NTKYI*~iKek}S#st+xuyfR_aZylB+c5%v0d57v-L{st>^f)PPu)tX>9t( z%Ij&q{6za=KmW4wn_#+d)vq#*b2mHQGyVd5t4T)1S86}v%jel!v4G^=I|}WK{p@Aa z$ZXSvJAP+wI?e)CTaSY z2YnZrMY!xMm+>TWAk4r;0lQiSQ$eilShwL>C{o2P_yxelO zS9}T9DcX| z0=w=^qiUxANCsP*$&5!$<5>YBc`#*O9k4PF}m#K^x7ZiS$>{9 z$j85ag07>f67kQAaH2_?@qynx+$h}S^jdxH1L zr;oBaN4anXD3h$R_l;}2i^uRWqk&ny=n8Bd=En!^M|}A_yTX?*vM=`K3+>Ym!*}uF zdF@K}9ZS>K*b5 z@D@|S#iRFp`kB$SqE78xds2aS_r>?wIEB8*%RgWE8ETS-fAZa;cvp1dJ;hXT@rb_d zVWNNJIKSxYIC8E&&1k-ee?~XoBoB)IvcvGFNAWK2^5Nv}rb2}0qWH<5`W>4b`^{cv z?IP9{^2v;;w}To&H(On|Ic&L*Be|R}u8$!}YK8tbaA*OFNAHS}%L`Uo+67{>rcQ z=5shURC)8x%4W!$cRoBD^yax|z|J%IsA+k66l+}AWm^98sU8*N3A)21qfXE~dz~+j zzklt=%fk3&ri#0RIUVG5FJ7nBM|<)ZK+;Xph#$8N>>xi6@Tk8Y;I~ZP-N16+a_S#{ zx|hFQ6+iGkI>oPb@cjc{KF7Y&hv%~MsKfBb`tbT$rH6m_IJ)$|x1V?X+WB{wDv|cl z+m3Z!yzVJG%CmgAdQ9=M*YZc0y!+(C^dmotH4pF-cAt}XdLH1QUDM6)0O!~{Pxfvg zJ~(^Qhvz-%qQmfIe!PrM!%Y?U0dPjIW4w9i!AZd6-3=(S$GSqJj*$Ym<)Yy`M(dep zKxH+rKWn}0IrqKQBn^A=S48oV(ktY%@*_-z2+#L<#_#Zp&bhBh_qNZq_nu@_-H47` zF5dO!3+$(S`8@kJKfcm=;cJSi5~-ha{+px`A3vvetS=w5GY-S=?Q7OQQaT^Jyzj&2 z+0RC?#;J#6v$@9S*r08%_Oa(fwX+Vx_x9yW?QCB@X#dg2th+mYp1L0%hJW@j{GEQh z+?7r>RU)m=^3O8KsAC_rdq?pRYo50)qgZ$CcxC+SMDN;jz2IYCKF5CEkC!Lvo3zwc>(5!$$A{scKMa5OVfbqg!;kjm%k2~V zc&)#w;;w(G{nzn+^)I(S_T$C>dQ-*pf450S_1;qZ+9=*_U1*PuV%@!$<6fV`@U5eG zxA#)}>rH@nfrPS>kIs>Wv9#sKNt?& z(UsfJn`BhoitL7d{xRl%Rp3{n@Y2SX0GqUtq7OH41kf8QuDPv#H>+mKF91-n=svJ=K%Pk)L#&**5Mz z&we+^moKtA`|?3M(T|rqwTC|UY5<+gpOxk@q;vo4i6&__KPnLF>{CJM+W+kK?Am#D zLR55S1K}Od&&=pe9^b$1mI+sR^DB8DHpiQH zo=#8l=GW7HkT>rvV|4cBH_<-Pn|GEeclY$HzjGh8*_(Gx?p5CWTBrWrd^Pz=-n_F& zG|1$Q!#~l!;%Fm!qjOfsGFyV_Aaa0}w|f{aBD{{hb06~H)js7Ke}1;<->5*)9`Uhp z>Khf{@HaTh+C009?4x}7LOaQa=dIRv#~9JOqf6Z}AqIc{%~WtTPwI2zS9$YG$(M zUzHidU;pC(=!Gz|&uWQERi=LAc!P^eT)<}yLU^qJ!~r?3Rb^PCVG|?INdLwg9AE)<^8F z4BN#XY64bX#W$KFw=;Q0nydx5kx6I7z&Acji9zU45v48uV z{Rgo7xiVveoD^{=$L^oye5xd4iRArpF7om;?>fo*k$J5&uSoK~U|xdewU@kinfF_B z@n=ciX6DsOUg|bf04Hz3?qBg1fL6@;yo)QgpxE6>yOrvztK?NOZ;|Hhd)7IzZ)Dyy z^(W=mdg=IzUrx}PX{ z-I({a<|Rnp5zMR6yiYbbv1Bms1DVtvyZl$CzK!hNMUkxVHR99$&N=@cK+gFW9DC>b^ep^3*Qd0D z?Usw(ef4(hBX)Dbb|2sch5BAl9D+NvqB*IJ7 zPNT%D;$8LDAYW(vv+Hy8`dXRV4chjQKXH#-nfj~~0xV0T^m^_9doeWoSN6-b3o)7$ z&FF9oWNSu;3W3=K9v8W=cs3PV-FoBhfe3cKr0=SUv zE=m16+Rp?3lON|=oN?v9uo?6(Y+C;dn_tfQU)n|L^ZLKAx$|GxT=Fk$PW~4*8UMm& zHU|NTkY?Ztm#v*3TSsZ8ySKCnA@#9z_X}G)Q5IRFdClPf) zSuwj;A3`TrbS?>(HQS|wIDft?D?iK1ipjJB zSi%eYdTLXgHDgPhbsBsT6Pw3d&GS>O=2Mzh2SRD3VZAQf;;aGqcM0@}fvh+y>-=Wb z>7hVrT3*E8d~j>=?+NHJ1>zf6@jV*kh5h^q?xZ*4tgn=hNo;5(#yn&-fR7lhXAEsd zFh}#!Q4ezcBIWdaC(fFHe+_mEI()kbzY5&v_{a8gFx;L!;zKbh4Xl)yfR)`M-b!BB zs5&kbTiP(#AdhWU$TG7MtgLbPSKJ6~7H?(sXco%uoQ!t4-)bJS$V#hgT$@spRGkoN zR2mTS#cAqS$<=y*}Ak)O!EY*`8e1XC&50^YCfWAC?+$>$}CQ? zGV_zI%pU2rX*G?jQ$oq5F-Z-a;~mo^-fA+gk<|ocH|dca%I=nIwH!CxYFQk#TIQc_ zwTu~THLFRlP76udg$+=4TD+AuF40OupGg~$5)vQD@R4LSnF1dj5>RF)%FM7b_cW47|BgSzp5pN5`n~nNrTH$h5LN_rgw(xNsJu=oh7ysDa4mxd- zh_*nRpdQV7pe>wZkSKL@_!RKT;FGLoQ_@1&tbdRA;G$RJth`{1m7NoB<)H0au?{1W zL*aZB;Ut#De|hg?Hs?y6(I*NZ$9~)pGs*)8N`OpLRVL4r-4uOlx@Cp*yjswzp>;q0 z(I>Gtby~829_92;r+cLjR#$4xN~|23A}dCYG&ItXAXj4|QV9t$JkDW!B1( z%07~P1AU@674=2E7p8@1&uMCQHvM&R{1w7~OnRJ^-mh^ewKOG|jI$u7ZK~CFTnnph zakkYK=WyGYbSvVS`UzHgaT3n|L@T|A_9dP}3mfFcB*$6FOB;paOXGsE^d;w3Fp!;K zWtXK|*@!nA{V;nfmMrt zWvVOvBN6>B!8vAOy`x@=v#!TKwkp zws}n?-q6!=)(7}UePW_>{x-(Bn`&iEk@gSA@#Ir+R-Eb*6I-WPtvA4D84!J~HI7^B z5!rRkYcp!XHoexxSvB}a{|-9mS~AYHBr9!7N+{4o#w+&EQuN!Rdt#k_Hwnlz4M^L0 zDlb$%rfGuJv@90qdP6I@7=0igeaJb#BJCH*ibXx-oT2|J_}|%0{Qm`HO6x9iOlBi1 zvtN2mTD7b1WXD_CJu<4BhSEy|!L&T*9GfENST)bF4vAKFOfxIJF0Hn4O-glAD6upF z{e)$a4=4WOzk5E?a}90GbPtYu32<7xoNGIQOobTNdG3*C%5EEHrRJYzrN$Il@fdX2 z_wzVzImap)V{MXC&#V#6Fg{|e%5P$2PQloyb#cayGMr~@qwFN~*~Y9_UDMh?jf`f= z!I(x3tw!fJ3^~`5W*AfQ0~}Y3(K?Z1(2n>}Txo3mHR+=@aaP+$?N zx+Jt=ZlaYrZXu5M0xL6SuGOR_wVLx6j>%{)tHo5FceTYY#7HeIIf0T*CQDmU0 zbKT5ipPi<0%|u+YKb1b{K0nujFMeC{uLLs90n*<}mDecmwyRaY4{3Y60eqoG{Co;z z`VB}w4b)G3*iY0soHioH%DPc(PXaQHR9X5St`(Sjgs+={RtdPKU`~c{I&nl?HF|g{ z>skmuJO&NE$2s^x1Lt>}57}y#H5^DT5Qw!Bro@ICmNszOC!{v*VZ+oP$e70gX*m;^ z|GwA`2Qu9Zq|S3d=KKs~)c>fQg0jiC1~T>5Smb&i@60QlbG8g)4dzwZs9QGX1RR$n zAN^z;&go+CxNc;RKz>>yD=ntIm00b%c43cd!ot|R#O9bwjcbnf$h4a8Xj&Jjm0lAb zuh%^jXI=T6)Qgzd4D%0+C%EQvrd2 zQO*aMpYvEO(RTe2{ObGVoOSn~8s(e(AnkrMkma5Z{Q4fzkHfjolno@84`hq>)%;U{ z&M|Er>s+TeuVdNPNa+WctM3Is`wr1fUM#-a0-17w^wC4}$7=or%@4Fow%X;lvNCW@ zXk3?4n^cof?TnTlN1wg6<;GdR|AeIoA_rQ>qpf%iPOwr&Bsj-s8tihm3V#ZaDbPO2YL9YqP)^f@ zO=?qXlB*L#3C`HH7WzXT6#a4_(`n1q{}Bn+5#uo5E5Eey0c2VNr0#Ofe_8W4Y5tp<|AXf5)%-s-|Ll3<=K>)8Oa!tH z_i6qL&0nqg+cf`O&3|9>JIoh9-GTHIlZCk+?mMz@pOl3;H0FHH-K^Xfr(!OEd*cz9 zG3Xc^-Onv7_$<~r#>+s)v>C|sqvnVEsC(|52fOmo62oF3Q>!r|2ihj!-YQ_FFRY&h z%UA`QeP@bJ>k@5`vqZiO$aIs+feuMl2lU$`&~JI4f_npJm4N3}75vOTL+qXaGQF&R zw*r~oQ#p{6VCBF^E3^Z~_}cI}Qw<+02Z)a^fvorZQ^oc^AmvRed-+*Mj^gJcAXAyjZo8n`4O6>IfsA_| zaMR~9C;AM?>)v-ja=!tY_ABr9Hx2&EG=Gum-3O%IN+A6_tGvvkQVyC&t<{(sJ{50O zeI_w{4P@#awsp-hYoTAGbIad=Oz!!48W!TSoiU8ZFx6^2MXsXk2jrM&#a5zJx67QP zr`4Hrbf{QswVi4d>ws*3a@D%7vEmbnWi^m~p9C`J86b7(m#H<7WuKsOAScP`Z!HmP z>WIYJMm4TECgP=S5p;?%f6?bAATl1+ za&^t!&uUQK2eT!XhI1q~H*et~1mk=Z2;M8wTw(H^9Yr_eAQ{ZFCfmz zx#F`L$n>VlnOcUs&2#W@Dp&cDs_$M034+hY{dl|l1~KU|e_I%F^~#I+1+Kf~-@)^L zwk7|ufAQbS?;~p=vmqz^Dr+J5Y2{&EV=k~j^Vnv#wln!~s%|CqNNywTd>W7`sPgA3 zf35N{Il^BLq)(Q~lmTQ+ZB!nh@-USH9aF51dTnyXq!CGV3AOPxvDLB$F%5Ox*+P8w z#hNG6U?9tQ9msnBsd9GLc&kOsAS=A46kf{-WW-|b+}N2rvwy9HPuefl7+wWF`L^6! zz6E4zy+iID#{iio18H-!%9SdwQ28~LKT+U_0LjgP+Xo34}&TqNO?~L7}r9Lsg;T~_Z*d=WdKUqM= z9XK+{Ix@ehmATMd@t}R7+8+aZrs2TaIbxT1i}>jUq@VLuz8}c8Z#Y-@PC&{>soYQH z0V_;3^6T|Q0H{3#lp~CHP9d$+WvI)x ze&TyCkV)?UFn^Dp8>`JSZHEoOR>zBNEs*I?AnO@8LE~-N$ZFY-tG?l0hjX!MjMcOs zkZZVQSi8kNNo%Yjw8ni&>mIU3EMq(7n8?pUKAz<`bIn5?-x|bKx=W7nOF*V=DvLhm z`BNhO!NO(|w&jMEJzwutQ)z_lG2k7W`NVYnZHOGBV zChCv@yJmPsm2SmV%RNgeY-_iR%~5ZO&2d1Mf0oKsH6lCbdRY^z9oEa+6sO{trdX*{ z@c2c#Ixv1xsJUEWQx`M>Ubd2G?fF*VzHK!5Lr9bHZ4J$GL-{M zuMl5LfJ~cJmVVsqko`CZo1fU0x2vD0foz%gfb5aK15?hI`Rz$SrlCOUoT>77<*(8F znVP>)^H*wq+_+fBXBLq5bAe2E0U5(1n*WN*;p<^bj7ONC)wf$vV{Z1l)H5GQf5pJk ze&XvcAk!)!xhH_EPo~cK11;lmJOWnZh0e;qGtNy@zi+7Dsp|K3m5IeCi2uic^!pN! zem_(B8z8SD4NjEuj|H-B1u6%e`7zE}to!rY8(v3Pt7Y%eveN%6b?N~u>McH|0h#6l zS@xYkmi?{ra;_#hKEq>ot@ojt^VQcv;U0?3$)fGp=sAj_Ge^3_1r z@pd57W+3&qsT^pNV6{PC58nrdV@botLh9A9%sRQo{sm-;|3&0vAk(WVZ&P{L9^nJ+ zl5l?Gxm7XlqtP$0PoVx-iw9J8#&(Pm=_Be_+nq7EM(gq$VqQ~lrV}0(c|4HmJ|JWLN9AK4 z5kB(FG0BRbBJ+K#RQg2^_zhkudRu`^$4_>*H-+ewG+8J(D9G4KVwSx$yDULsZ*c5;EQPjkaf8kII+3d z&IK}k10?r)mel2KAmx~B;R8p+W4?%eCOAHgMGozC(~*s= zBa4s5*xlV~f;}w>Xk(tsLD*1#g~qf|W7-8QjuG4IflLnr8N*8rB&OjFMZOHkv;;_B zudDpK%7+Ka$_8fJ_108)q!VZnZqAPp#_a zLzk%-NX;@Jqg(`>{GRxD6v*@@kiTky)Y%KX?W3! z`Rlao9a{DtEjt~f!UsDP#o0_W>+ zoUg;`&({#jKOfGjH%M6-uZyqLjT*CSugnsSb)LrhC~*B#qL=x!*yREFYof|G1D(1% z_W@{k-9u5MzP72aAAsAQ6y3jpOquY_U*myHGqkMiZn(EB9&R;`8Dhy37a4mjyd^jS zbzylebK|kDA^vU#GM)Q`$g)Q)Xz^Jd*Fr+Dk^U}wtLpFn;IF1!u1yDkPP#_qK=@e7 zvwG(mPzrsPor`ClOhrJJJQ2v_HCyGCKweWe0sqD`LfUkkEdGxH(&lU+Z6*WRw{B9o zO8NVMOsjyje@^o^0qOfAAT@qfdB5^0mxx_+AnkI2Ebn;DAE5aoHGi_^U#0msX?}&~ z->&&9R9>fYcCTcs{kSz)r(TWm?qQ5y4_R{c*Xsn@svSaM4Bw(1nBp5qdvye|?xzA- z_X&zO0~!58D!&2b{O((o;~U01^SqA0A>*Zfw*#3T0J5H|f%N?hkiIvnyhHgo7dJud(tz~S63EmMNWCsV>P-Z){imw@2$1DH4W!*GK&EX#+Pw{=U5^XpcohNJ z8fU0{9+3QWAnSSukUP1StGrhEw23nR?g+#-9V=hulYq2e1!Npg0vX54K&CA~#*v+e zH3VE!BP((8tefkp)i_qqL6>^{(Y8$Efb=s{n!g!H+Yf<^>kE~C1v+uHibqUM5mUOAyeC$!=i_7y zn5N||0n&H1%C$iHwBjT_{*3J<{*D7OJ${_T^8%3ZYzH#E52WobAmjO2<(LAE$2C?5 zHI6nYXZEqeuL3eXr*i#XBkXEmTTWA(6E(ImK*oNZ;yu9fCgST}Ak#`9b)Ew<);Cq& z4P>nQRemi^^tS_@wsY1ouxDjQWF2Fzmj9fV|B;saCy>5d#0wq|EPPMy-Nyl$E(JQV z0;xM&<=d5C24uOblz$$`_}*6eM<6{Vyf5}^f%NwhkZBvxiQCyD(e#jeBx*JO62!+; z4y2F88uxm|4}e|Y5r1QVOcw*Gdo_^pC+(E@S_3Kf22yjl%J07``riPV>VS;zZ_Q6a zeV8(UPTb*rWqPdB#!El_9kDQFHj20Mo)q0tK&A_UjOiMcdp#w*``KwB{CGV(CC9`g z&r&FLjpHa5Njp)ldw(ODeB@EL7|6PpDK66dCxNUJbzjhZj}I=9m{$U6`y`OIuK`*9 z8$jCZge}t-K>j+Qa(4G5%(Jt(Mq=!u;`kRrJuZUo2Ut&`kL)>8R;OE}tiC{|p(?kl z5cy;vV>wghOMs4j=SG;jERKon7LjY>5|pzpMaJ2b1c|dNkUoY0_uVM=J*JEQ^MLdh zQhANa>r~#T@^+Q$fb^9&L+nog(te1_XR6F=L7V(@tpM)p-22I#JuQfFDH@h`7io;Q zC_W5in{NT~-1<)Qld!+3>;@@o9gr#OKN8E+K&CH&wEYoC+moh=JQ&C{3dl0YY5rxJ z|ET7_sPfU;Mty-y3sk;URDfH=Y zV3M>!BOvS3No8Uk_OMW=^FWE^cpzgQ3uKbHbrY-`<9W+ZT5SWk2x;Z%7lCpkoK1Vn*;x&@~gls$U9YT zQ4nioL+%Kq{>4DXHxtA4*k&V_P*9F4YMIv4muPqE3( z7as*c`Zxth-+MJb7HvSe1&}Gg`6Tvwy62NY^?$wkzZXbfM8^9fknw*Cq?dny?5nLC zi%cX>WFP4R@zQ_{3$T@Xoq^0qk!zcSE_suko*%smRk#C zT;BuPHf`}-h=?! zt&AOk>L#JarK!ObXS`gi_I+T-G#1EXd_9n5-V40vZ&^Ek4M=VWklbz{<7@bj$ln2- z{sLs$4|L+iyJ<&aEX8_dP550JjxV)Z_Dfp!XIl1tVEIpCy9`L5j{%w1YyL*f-v?wY zt$!B1E{Q^ON-XS5ti+)(%L&D>eUd&F4Bv_}MYvXk(md6Xl#~i}$kV^CaMy zAI1M2K&HEa^tVd$pH_Ll$_X0pXpKLR6OVgD-A}Sdt}%sL&RFHuUqR@*Jmmd^rHt-uJrQJNg&@d#-< zJ+Jlr7|3?|3s_@I-1~sc+Ye-Fv|I86K<2jsvfrGd@-QINnLr-n^OV0y`6}h_RQ_(| zzf}H5<$qUxpXN9GPW+|-={F0=@{iQ~u9{z<`KM_95Y3mplWAC!YAkzob>|q{VTraw zcDfw@-oQ;?NjWROk#fg;EAk~krYS0yseFsd^HshJ$oO7Xd5iL&sk~cd_dQh&;_$ks zBFDs$i2aAswDj<-00Pqch&%e8>P+NO_bMQd(;X^517thWZuN&!w_87wx-ACMW*Lw+ ztAH$bHIO#%!HFtrZrV$ME}@EDed*lD*> z^>!&X!n;dMoq#NPAdux;2&CUxKx(W2vZfn>yjJZ3@_cTTA^M$w)te=@pMgw&16haW zTST4;Ydp83C;T!)q{4bR(|Piy|8E$bJ|&_1B= ztS(1eg!{k%{AL=jc$1=&>H6kz#j3uIf20y15xc$?x=z^peU{!@WW z#X!b2LFLszG9RdX*G6g2H9&fO1<10t0$J9(%6|xC8n>yTGyjc2{Wrtw7f236+WLNACbRkNXwK_?u>7?)$35*6cN@TQ?xfI2XvAtAQ+I z9*||+4`eO&s(i!-;kyEjoxcMxf zec%|y;fj|78UF$x<9{5;IqutvzbJAq2mK$zJsrT|DqjxdebNGzA6I-^@fStz7jx`^ zFWfG5-vea&FOYTm8^}7v+#zk10;ElQm5&Cp&3bA6d>~_a2*`W5^(yaDzVTw&N7Dhw zd${9No&coZ3Lx*{?p1jgkoRzVRqlFcL+2i@FVN8k@*eJ9m45{C9_|m7kGo6y(lDUY zSAcBu8-VNsx2n7c$Tt5+<&?WcZVse=N0s{kc}xbXJXQIdG`|waW3>dx`-}A|$KTV? zN`ssZB;Oav{Y4L``~{GHlkb&sj|Z~cu|W3Ol`4M$r2W@G>Nmbm^!os*Uj$@5uK}`s zYJfbV9|L(DWAB&a+6~Bb2GHsA*u$5#=MZ}ww6BjqA7PpTWWQJlq`!44?*OvAJwW#L zblk5}?g3;xBY^wnNm*^@OW9q4^wkGQUqK+5i&VZt`GrTHs?jOke*+ibhaZ5N1LHz4C03}m_pNc-D?w0jsx|LcL&dl$&G z7f3z#J!8&AG8YJ;{!CRs+N=e#&NV<<*8%A>4ew*J4tYRY1c59w1Z1pLK=#|UK=z9o z#X8MT!+j_9@_@7p0_i6Nq~9ta%UKI#xivt>Q3tHLMdE)5NZ;#$ENcspK0g7{=TAVV zHWkv|=|K8y52VjtK>92KvaTb5Ok;pf`(*Ju7?Jm_gJ`2xbA&q{$mDLrY1)R3aeu

24rnTn=P<4CvH78*5B>R*5UO zegM)>$`Mkxu0WPE1juqHE6xQnuGNa$fQ_Ec$g&myotS}S zmIGPVCqS0f603dx|3*=Zi8^|$e6VRy}<`(=O4!%_r;&rlC>oy!^GhGfWpC-EZ z0+}8GGKM;p|59G|;zWFze~fztW$)2`SAk#^@SM+2c({(D(Q~6GnSE#&BW%-8K66`g+-L=<{yTWDP&=Q z#NUZPrZGUqd?S!KcWM5Mnjh$xWOc-I+>LxZTuRL zWAj%)j?E1_LcdbV?FwW%8A#iqK<1nUr0rB7ZEpqAb}Nvj#mp0V%R=F8AoUyHD)u=* z`s)H@>IIbJ$#){~Zv2SI7xXyp2emFoFgB!n}RR*$M%a0cM4SxV5P3&I598JnfWVS+zjM;`iQ6+NEOCI~U_zo&0X`3tJug zOn{C(_e8Ce{Y{0cKN|WUd?h1ticNdUtwO8c~#6$jAAbnpCWV%=5d`a^+t1R!2 zG{LtK8e54A7GS&fUe*nmo^Pc!00Ax;3W#{{${csIJ0589>H86*y+2=v)nC zx)sP@Yk<_*2xMD)p>pgd;oAe5`U6?^L?HF%1D!SjQey{@X%CQknVUuL7$EhEfz&7i zGA#m9Z@uy#EB}}BEw>0C=#YYMnKZ?>Ow#c_ZNN%f7bDUh%~XF3+H^0y0epvW$0Cu2nvOeQfPw znp-XFkue!DSuy60 zMCrRh9Lsguch{gjncf7l4SxjkTubdP*bTV&S}EsOAaxS2lRXgWK+3IwOdWxYCr|n5 zK*n2iz36wq{ypmF={~;Ry00(Lt`XwR#Cm$VC2yJP+)Vr2X^4U8Vj%4+G`2^8^uJZ* z?}0qt$w%Xv&lHJe0+2Q#AnUalNSlXLZg_?CkpPf9ztKwlHbACMK-S6Gi?Gmqj<;6h z>x}Z41_5b13Ap-Vv3m>1^eK?s_du3&&Sa4%1DUP?vYZ7#^2b~v{7FEjp+NHI0Lf2M zIe=#c;cu{TN1L;*qH*1#aXqYYZ2@*2C4L41nJR#c>vkah?os(4~klAkXXFz%eIEd=)^Z2Y_tH=YXtVwaR;y&*>xmt~ZbtC#gIc$n*%1WheC& zxdo8*?+j%A>6$-5^RLwW8Jd5W=C9KHT|l)0zi&M8&uu_Bwq`p{!c)b z_cxHKX`#f?4oJI>K(i- zkm)j&r>eYO<>yrXQsuyriPn+$Mt4(;SMGTM&%GsDPLY-~5y*Zq8_0gKQgIWIrP?Yd z^prlC3uOF7K(_NlpmXg2&em_NrFW8J&<#lLL?GL?Smkq-p9Z9_l3c0Z1wh7fDUh+u z1oHg2Q|0lUg%1Ilt_9M*5=i~UKr+t*d2HTPdCgJ6uLsiqYe1&$K-#|pWKLQa(Q65$ zUPmC)F+l3|1~TU&Aj`WFNWE!5rV1eSZUr*uaUk_x08(!wkZA{ydhaX$Ezmg^fb6sJ zT}2K6X@4A$_WgiNLxHp(q5Lf67b<_R@=KL}Q~3{+|4RA2%BOY{|5-q$BZ2fU?*S$m z?{wB^|9J?nj{W(OZ;?Cq4O(tHl*iN$$TH3cvfZZx zH#8N0Hjvz}Kyv$m?3-oHME(zu{4GGHTY*j+w!=4s7iQEptugmfmTK8cwCrjvyH?A# zj+JXe4v-!Tf$YW2?VbWMy#%CP4Ul%VK*l@*ZAN)4keU;<4X*&w z&y7I(nGa-I45XiBK-xd1a-bQW-%Q81n00@AmA2(eXbYy#fb_E;NWX1*Nn7>>((^e$ z#&H91TAY+|2astgkhW`pv|SHmU0(xIV>^(x>G2X%7a-*;faGrgQhyGR_KSe@cR!Hn zVIb=i=!ow^Ej;)>rdsQA4`O3_0Z98#fb{n_kp5d8Cv`ayNO=s97T2kK50K;Y3&8yU z%Cm(DK>7#)X>;a2dEPP!NcmbI`I~_(b3Tx1F_1B@P=1~A&nv${`FDV{IOY#|#&`;l z@+ctvmICQ_5|C*MkbZAeey;MjDSw~xYk;&!{!^Z1wgyr@8c4s#1L^k^Akz>a{gx->ylJOn61ZNE7m{F(4=OeUh%4bqeyhka2Av zbeXaW;;ps1f9xyWS9Zj9iM<5K^cs+{2U;fJ8BiL(g~Tt5gyM8g8&sdY;EU-DAnQI= z@pi?hf$VYbDgLgQ**o4^wqDA33&`|=%HOHHU*)uCh3^Jr87BhS-e;@40?0D90eKF5 zs&dA2a{N02$@c})KB)3kAg^PjxfIBBA{rv)D9Df68pZlQL7XxWO z5lFkMfgI;kB;duVs0)+X1O_ujR7?APMhG1UNRUkBuINIOCLV;+$HgFu!SQn^ZTtzwO0 zonqRFxL3YaVkibOl>k}B7$D0i1(LZ4$TF^1xdO<#FVy^(fh_wSAfx?8<;IJ|t|yRf zU8M4SAlqz-%I^a?&)=o=1VK?{*+9egd+7jr)k)U2zz2 zuI~AHT=xLIpz>Cg-%WZkwY{s64KS^PAbC4SR^)NKu7X`+W8RnHqMI7#ag(-ioy8?eJp*R)urW6Z*BPGOZVU5;t5MpMU1f=~O zApNZZ($i+(&c@;^wu$&|0;FyWAay$c$>agqcaKxKpYlV2)Gq-tT>xYq%Yf8h3?%a) zkp3P8QvX>X(*_{*-vv_tJ0O|8K&~Kr)E|(QgK%ep?{ZQ9$aS0HpqCAejk3`oA1V z{p)~Cvw+lJ45a?!Kr$}?slO3O{T)E2Pl43`97z2ifn@dpsoyYN^cw@2vVqi>Z#7Md zX;nNiCM*BKnB9|NxZx{LiQ=>xZBb|WsI}ix(j?Q4GMBG~d8Cxlk zIw6&>1v1?Xq|ZB)zgzi-lz&|L^~%2-BmTAkncfA`{!<|R_h}$}5s+ylkbDV{{8Z&{ zRDQ1V3zWaJp|sU1AoW+rioa)oOs@jz&soo3hi`v};!Eq_%Rw8F8}GCO=3_6xzX=Q9Tos7f35P*D*p*&N_<~pl;=|y;(5=QgWjLu_Y%KTr^e6{RzkvdzHl50?3?@%2hz7 z$AK*SBjwwa%dzSSq{c-+*7If{(+VKcq{$ea^Y=687U_g7qB`%ZSA z7gg&qUyin7dL2lA-vH~zimw*uNErix^tnal-9VyW%hpf}` z;!lzCIs#j1IVS>{MgbYaDwVe=&-bR=V9!%vPvqM_IaB4l?XUjE0ckrENN>x4Jo`5Q z%g>g$mI0Yw0aACj%1uTKe=Lysqk+_{1=2?ykjFM=jL5@*ZbuAo&EX zQ&X)|FQ5}k>qgk$k%hm@*vxYOov&%yeqW+}m>Tq#_G<^EzkWd0{d}N3Onh}bU1IJF zWXywAE(Wr!@tXgb=0B(TTQz?~P-49cNZ)IKtjn`1f24fEaPi+B$aFN&sY}!xZ>`p0 z8e(Kx0_-|ebk74a%>**m9V*u;-wbtP{;@!&ky=Oh-jrJSUp++peF9|qQ)OpPy90CD z@b{6flK%LT#_}1E{`UiE*=7LVry3-__5zvO4i7 zV`&qPB^}R%cEnZlFJp3ESg5g_h%%YR0BLs}kbdp~77UcKuLUyAQhAliZvkmDs7T7b z0LWvOhS+J*6-a)%)}<2Y9HZuZW}I&6-{5qf8HY5U=QN&=G@d^-o))L#@Anmo{X8Jk zV?g@PI$6sHvi!$XenaKH{e(XsNd4JBrdxs1XYj7Wj>uPS*gi`%o&uE1R05=JIgr+i zfs6Wx{rfO^a@*z~5@}GU(MSYFJXVJ=j>rQR* z(?5BN{ZlFjJz-4Vr0&?~UN`Xf-{tmhmTMi9JOLHwQ`b-KZv8``q}cU4pzI!VU3nz_ zyTKj9-^GgZTxxc`pef&P*NE+3+5NhsoE17;XRR3Bic@1jr4@22i zsBC(pbNKGyXdj*jOAcD6CGp*Dz4^Via{~K?1$&-mGaUOz_2767n zXVUDqFUx<=@*E%6E%-_vh0Qmb&xcU*3)EkyKW_T@Q2832#rFoKwd6ZJn)7~i z*0t1TVsFP!wy$~o@1dg9?O!PB39uX&64+jnA3 z;hHZ0U$5y7QO6i2R&{hHuOtmBb`)wWEP$H(_1^wERF)s0Jn9WF`_6FIEX!N^pO*L*Zy%&`I zpHSCmC(kzhVknsiHFo=6^x8q4qN9I%uKCosphnbeIz!1M*Jrr?tn0g6|IziIUGGt1 z{=J}Noa^P!V=3fO9S?t9G5D>(>{}F?eLEP|*hrrjvEQ}l`RDNdLaF;C<(aUQRk$GZwD-c7DIYF9mI%=d>k z?wroEK`G^)4dM{DXQ0o4UEmtmcfs02Yz_5*lD<&e@;s<*IRt7BE`_?ryamegLDxU< z{y(6$?HMWdeYr_c`|?Fl?GdPLd>Pce-|Jkz8!G-PsArNkyZ$HCvr1jguNZFgWT?+{ zUkueg7HZp1gZfPT^{(Fo6>lBX8h8onv+&=!-Z<6z&w*MKsZgJR&vX4wsI{>I>a*|9 zdi!>$HL@2rh6h})Fx28D!X~tz?fNvRHM0(C%{&X6!FRp=6WAR67uW(;PBXm;RQ+vW zE7%RTh67wLhFU8tq1Mty*ap7p?e9XZsYCE2_=oFthgrN+;3>3^aQ#lGHTEjh8v77- zfQP+3Zg|CTtu=r=(h!{BdRM6WX2DKyt?M5`)&C{b`l*_3>#8f%v9BML-$ID|>Y^c2bq4JJ`lIx)ICWgnxG>(n@ZquRKG}bv{i9~8 z_48+F-vM3w#b9SX)P67X*oV zF#2gQABOV;weD6scS5b71FqK`UMXBZ9iZ$aVH|WZA9jPYVRyLN^_}n>^aHN*XJ}tD z-TXSh-n0#dNig5_*{~1#YS;NQ$UW26+TBpH3~DW|gjz$Zp=$XGY7NDmWyj=Wq4XrE z{%oiDnggPdF<9d8o^KSsP#@a(2b9=d-K# zG5Hg3{~BuT#dqWRHdq@27*csCX|z#edKB&!E<7gR||Jd;-)l`5dVBeo$-nV%Qu`biEWR&OK0T_X*evRzAn{ zGoboMLap7o@C0}dJP~g6_Gh8i^jlEJ=1*Ne0_9)5N5$Y|I08z)6KW0bfLi14LLHmG z_x9hQj?r~`+OfGglzs-3{{W~pp8<7jzRmR)y#F((wS5HY*ju-k>1RXj3+F){OS8Q_ z59*kD4b(AouItO7@~wwm;a=C9^sX50BZHy#k&EEju*BQ1fZA6Uz#i~E*B^t5_cH7S z-*Wv3)V|X$sbaYAbcM<2L!sI)g4&0QU|(43`YkY=PpJLoWvKn=Hz;ZC-$$R=lHW8< zYs9_LhI~JCy}<5r*zvrlAJ1Q5|CAhricxEX9nVj74sjMZZ-(-C7;4{p#d#36Yi#@X z1SpvX74urCI`4q0dzI_kp!VwzT<_S#_Ump?u@6G+*T1`7($x0r8BqQALe;VgD*mwJ zE#GJ;nFzyk+bPEcr|?Q*PkUQcaP13KZ~J%b z`N<-vdaJx^`f*VGqoHJq>zBGd6Uu%TRF3)Hf4BFq^!`=e|Cskb=lwgq{~hn&=l!2~ zfBbt^Z(J3gaZk191Z-_LU~SiDZPy9PukBsFEpr*GUJBK}2rA-osCX$)S^Nv3 zwp(Ibea`TB?khFrzS6(1)!;I_7MnnwlIx*jt#od8ehHhevbbZR`{ZQlh!}Z0h zt*&Dpw*I%ECHJ0`L{1zk0r2eqCimh0EtU3Re@dlo`PeG=;U@E%nEuP|Yy)jI%6 z(xGCPK*he__0`_L&fB*_HT}5#&m<%d^^6S9nxBzSe~rR(bzp-oF)U8{FZwFN3OT8&u7^ zp=$mFY8xDK{X8GjFev+okEsYs%5Q@?|Hn2^-`}^vj&VnCgYC>ue`2c6bNM?a@|%FJ zaa|8J&Xwi*HOEh6T7BmUE+wQf$1y$8AP&HTZn(IMrgBGq&gX*6N zWq&KwnD2)YyO%tc&#zweub*Gt%-rwxbKhk?4-27cdlIVF_n>P371qAZ>YM;2lc8*< zL)qR4WxLkfpMsKYP~&^c`zzmWes!RvDO7(uDE|>q@uonHMB`+! zZk}N=Ys|D94WMjWLfM|<`T*}wgNhyT{=`{Ua|YYdOI|ixz z_F(1FvF|-9#VPSrK0g=NI%smJ@!p2J>K7h6x?W0MKd&^OX6L)ds8#Y7RQ#Wz@-@h| zvHZuG4z+eBLwVc=r{r4=E1~2us2DFm#dsNNJ_Z)rdHQB3-@9C&a*6f72W9^Ylz(MD zGb}k4YK-<7!|Flocj;2R_Knmac^gji&*|O`C3{^z;QA@lqFC*rWT5M|59IKE%BX*R zKc$phA5)xsfAW0wBQ{rEpz0p(oCNp!?@RwDVtM*NjVT4ncBbody?+r@?A6|X`FLBi zvnQDSX%o%AJCyW;vLEK{qrH8iw+DQ}@`%DFqbz?Cl%zw&7!5VPe5e@Hpe$Z;{VnhR6w1D8hWXcn8c!prmT^%2 zB~bCMfwEr?C2OJVAA@Sy4Q0O<%KiY9eVx%}-xSKeB~;5mDEkYb?8igd-v}kQLD?^Z zYN?uOYqkNDz7Wd)0Vw~+p#0y5lFy<1|NdK>dwuTbF^7`1&fReFNb`9bO1^gefa`TG z@R;Fm3e*qk@2<0}_U5wRiLQOQ?aPNeX6wCb#?ub zdo6n{PG2Y);`#{JZ*YB%>&Ja$_9sBe=dK@i{j`s*|7G{ zf1!@0U%TG;DSJlw45%D~p{_wjyFStTCqen&0d<~V>iRoSQt@fqmJukq2Zn30zMg%r z9($b^J|D8!=VKM)knDhG&NKUaprjg~p9uYVo~?!dF1ns6jQ#fJE|2l0$EcQL>+WPI zIoCM>s_yGyy{N_P1|^fA*5g%BEzdyNZukDTp=$Wh^>1B2?0U75SdG=Fu{O^_{Pi0~ zyDDwAXSRbYZ2ws0_3VI(`8CvbsxiUX4l4IRXD&>>#Ny9~l22X#7RtAFk=1)Fl-|bm zcCL4KeTD1q6??tM>-W2Q@p`Z8QNQ06zUK3KuP47`CDa^khsyCKR5jHmTD>Pb&vj04 zUhiB9bI-QCcR-XEM}_SK=J5!4*Egt9*$swV>~-UO)l zB~Wq=l>JRm_HRPJsHc^%4r50w28sGcf4&Au*_{qa!J4$8g@l>Ka|o<&gcmqXdFg_6xs_S>QC4?y+& z24!Elm)X~WlIBqMCqvm^0M#=d%DxyX{uNMiBb5DIDEl{|diFutAB3_$0wq;?n|&Q9 z`^%He{st)fTcPalg_4J%;@fYL@LTFdW#^mGzCO3Ht|a@Re5>Tz`fLjor9bRn$Kn)1 z*<1>hZw8dj-L602{p+FRDX9EApjzI6^4kX$=OC0EhO(<%*X$ZX*|mbQ>i{MHfwJoh z)iNDw9#*^lIF#QOD8E;r(7>dAz%&xNv| z3?-#d_E$sM&w=V$2xY$v%Ki~3c>>D*W$%B}`#}ks61O-f5rP>_4W_EeZRLSo>)CNG3_|MPpC1!Nn0-{d(C9`tu}kkC7yE&RQ!EV z858nsjkJaucQVvDF&nDN=}_mwCC)9*ea?h@>u>E$hI-#A+c_O}-)Li;0VNAzIG0c@ zFG9`g2T(Qq1XV+=$L;y>6QFA7<$5Mm{|qSm2cZ17L&f_FDt?V8EMI%5ZIuQUXAjia zjzGmZ{z;3|8!Ao~l;?D)I7^{qD^#3spyDKNvggx>KwSqEK(*fv75{Ol_#Z&k8TXXM zZwVDK2`YXzl+1vNzX~eODNo0T_ZpL+^m}1-__*sso{10N>$@1Le;L%=Z-jb}@4v3s z*&H9f*LMO`e`hHB2~c(309EJ1P<6frH4i^PRd(#NR%aI|Nr$TQ3aB{Oxo-EZPv?Bv ziTlCwy(6Pw{*$h%e~{l`j)2%2iO~xfg1CKMOU^kDPIr@H=k)-1&Te z4*e;p7?*XXx?cV;jw|@pD-$IQeSY&qf zq2jfM^6vyCXG7Ty@b(OEpWyA2T))b7`~Dz416mZmPZqv@s$FXP*6~HQ9nOKuF$zwf zYw=e=$pNUo2J=iG1eHHAd<}3suK^kcd^^VG@}Cvy>G7v|{6!vr6V#aAcmC#VQf&FV zLsfK>PV9bqdt$(mAfb1~sljP||>L zDo#tN8ru8#dqa)a?zLUYy|%)Cz1LRAn2XrJvVDSjCGSGzI06;Banz0>U7_>~pt4`; z`khen1XQi>LY*Uzczfd#UejG;^*jkBKSJf`Io;|X47JW~as5#!%immYFvH#}{~D@> zsx!^M2b4SmmAmq__TG8}D7`O~{04PCZOyaQlK%dTb))KhzrYx~hpT;TG4s(#-&M|Y z{w;aV|M<>zgGB$1hFHJ+RjbCRG3+nZQOVvL906}(87Q0=L%s~*WRD9de7ExVy|?1h@E zZ(Q%=H4K5WAL%t@K}k4gSC`G%u2SagllJCu zuP&RnQuLoDR|>|%*u3y(P@gv0c5x1en)^vm^Kz@}8=$It({=v*D~`6)XH)EZ4=YWz z-vl`k>e;EjQ2k@!jeTwYUVxG#P`SVBXKS-*f7@5vLRoZ$swD|3_fV)2UFdoql>c-n zxfyC~bG?0$>pxMmB*ANJ54BeR165;xsB5`luCMX_C!pS+-U2m-SD_@aNoAf5;T*QB z+GgIL`0KZzgRAWLc`aj=EQhM^Mb|%fR=(8cwhff@gSR)c+Mj}wH=%sLfZ89MHaEQ+ zl=Ouf>jC_G`(J>XyI)*y)WYmrLA9R`CDWj`^L(h5Wv;*D{rjNueBtf2Tbkc- zQ0+~j{7>@sDc*jS>+@W<-!ZPqcWv{V6-8yAW$fs4w#?^ZtLDO=$Jye~=j?=@x#p-{Cmg^NjaAv*7xg7H1EXdzBJsQl?r`Da7rzXK}&-B9r#hI$70IoEeV<=X?5FNin0 zzEJ!5g{~Ju*Jsw*3+u7yx_ErY7-L8!QoL&dF^ zU~yYQ#cdB2HybMMLa6Py3@YviP;u*3w7AWn;--<6V@ER7v10_(Gt=W;-{Jl5K-qr{b!_u zujB9`9fwb=%K3d|xo1BsjE?6S1AQh^{YjLhIV^u1zVU{#RR5V! z?I}>6#jdY{@_P)*ZWC00!;j4Ve5n45p!zeR`dfZ%{TD*@kA>==2-QCeYOWST&Cy%l zUi%aC8vx~(2IV&r%5EIgT;A#WQmA-)pz3e1&-_|K`L%(v?*TRU`K~XAinkWZ|0^i} z)}NaHsZjo%q5OJ4ZL@sWmqW$f3l--ps5q@Zvp5$+)ju98P9Bv1T&QjSU)SG*ieK+@ zi#G@=-Uz68bD`?m4i)bWsCe%}#Tl~Sj*nZR^cr7So~}^(P}eh|^4tkk_iIpj_CV!n z@TKKRfy#3sRG!gLb>9l*{|c0Um9NadE|mX3s5)mr`Oks!zXi&FE0q7AQ2u9rZT?A6 z{?nlRABFPY4CVg2!bD;Lg5m0gNgNpMWRGfO>S)682aYjJJnF}?JMNo0>h4SAHAJP zDEFx|yC+PaYSezOwW<1=%q=?}Z$zJYP1$wvOpa%gWl*+Tp~faroX^lT_DcBZ>~o^C zuX8Mn+3Q?3bGjXmmqBg2tx$9N8B~9z8RUM?j-Ruke5LfMb>xf%;4_8d+fp2JDx zIh@)-y?IAJhm*oKSKcNU;sT2?^i-3AqZKh#`TnQ7~*EtKBhIUZ`& z&VpLYE1=fTHs^ltuX3%;X4TyAFM_f!f$A^y_8Yu?Gt_o}18Tb;aQ)y5=Jz{P-kNL^ z)!D?iQ5)YzouIaFVhcS3Q||jfcJqzP{tV0-=6lvtX7>z~Y=;_u)u&Cb2NkC+RC~nR z3%z~1w=eYeW#0aTx9{@y_q_d}w_oh@JsyU2*3lyvd-bG?1Ew@>u; zY2Loi+YfqsVwYorF0)#&?+s$#Oa9k=uh8pn#r#N;pmJwH&D%9l>+OE1YMzHW&V2&q zQQeNl^P<7S!?S8gIWJYF$6?{hvUcb1GbKeyyO+>q#*5cV6RM2X(&t1nT@) z_XhJj9qRlz)b(Ph&v?#_`TcJy~*o>C(}L@D!%03SnT%mVMlD%x&9i|XE48qtJp`h4i7+Wn_r-| zO~SE$EP&cJji9zoYpB{rK^<$ZgPMz7P}}4q*YoPzHR&}_{ac~7!Rt`|A4A3a1}gqx zsJs;#SRFN?qybcYO`zhO0reU$$@S|RCWO~0_dxX@fZCQ#8zqF>vJ=#`PFL55xW2>n z&s`tZ*zB{Q{I7tD_t0?(;Tm`ns_vJd>V6%n!VjU=@Gmf&wd7nJ>j zP@gk?94h~dQ2BR5W%vLp|F2NvsdT*MPlS@jQ2AR!<+&It??k9Nrb6Yp7HX~E0+r`} zs64BoB0Ub3=Pjr_A484v8z}h+Do@bN@{EPb6NSoiHB_ECQ2WT;PbyPe%}MRJ^aC;{62W z5!cG%)PRc907{xe#Ytp8^Y4BPUpFlFb4J72ipDh#l-~%bdZs|tcRN(1jZpdChVnQJ zt0Y+LwouXuD#qDRG0uaEF%rrm8!E;ws2HEP-m;?gw}-Ot2IW5hDqb3tjDg`;PN*C- z;XU?aH^+Wy(XK&v`Ize8Y-8#I>|cl&Ap&%7zkBEI#dl~plT?Ds^Kyi9`B*9HNSzX zA&58qMyTBPxc(hf?ur$xe+1O=f1>L*L&dubD*g(nd>f$hKMPgQ4ygLxf||3vQ1S)* zzveuc&hM@NVb3rQf{HN$DrOc`lzgb1)1Yd&7OJLOpvL$M)EI00Y5EONW4zn-Z=uGh zie;YxHO3;>Z-t7t1S49E9@u#r1?At-ltO zG=$382CC%`D8H&dnO!|7X$oc65~^hul-+!&e0M|1awxmR|1rkVjB&?zX7eMIZ_V#5 zRwJk=)xFmGQ2i~S~+27 zb$kz%tL}WO^K|D>s9eQx@6#49{u#?x7s{s{RNj8BmwNw`P`*2%*6n`R8!%4EsZf8- zbp2@<*4wy>o*y~Hv$~the;@ZDuX(Q5_K5RU=eJPt5*Jv_r$OaC-}OtN_NTe9#yZQ@ z4NCe$jb*IsuR!&D0yT!z^)`kas2Q5&`evy9_n~4Rg4&nsKWch^sQ#f)@n%5DT~Kqz z0Zab}-C#KO@Vl6r@m);y|Mk0=n$NI(_F={#c?GKOgRa-Q#pd8tC>i1`fNHtfby0Ob z48!xV^PscVt#&Rr)j0&}SXJP>8R}T|Fw{NPS77!-Hir37vJsMPfbyni3m_N(@=+4q4O!$nZF7kc|WP;ixWLU9a$n*&hqle=5|N`$LWS0;ty#V_m<)`w%!8``CaC#($o2n1&C@roA9IKKwTGIIL9XXHZ-ObyY-}r`@6JNPr_d)CL0<}i^x}FJDe<{=) z&4;=-zSs3CtE~SVsMn9fU0(`yPvKG5w?WOv*HH6w1WFpRZ-r~8S=FFf+GKvqY!c6y z7X{^?F)#IXvzqN8+37q0wGC?CSt%&J&f>fXCC6QF+hYWjWWg{`_rur9V*u>sF=+zvo&!VlzuT(f8z0#c~-G6^VIvOdD`n^m_TmH^-%d%Le0~5s7k(s z%2#cXt^bpuJkEt@mROF7P;xI+j2*7O<^5lHd&5aK&n=-m+C#h8kx# z*U$6*;ZQjB6lxB8`W!}?3&{c~|MgJuUWYrb zvFF!+fs(q@?Rod6P|^)5$7pYV6RPJBR26+@m_8aRb}5uBhVpyC_5H5f@8T8eQ zXA8a7@4VJJcU!HUpdzNi!cvR*ER?(pm9xcFR>KIWnx1$4GpPP*S6lzFQ2NPG(hsV} z#Aem_Ed;K0b|3xA^qRxPURN>sCG)+mbzawNP&vPc+Gcg{;kzFE`Q4RJveBRGeI6?F zPAH#upnM+5FntqL|BFy{?uL@RP<4I_W&fM&`u>8}*$w!frusqM@5+AlS#|I7x=*7X z$@x$*FM-N27pjIwpklrXxA}9e@dGUHF;G4Yp?q3F`BXd4>Zmx-^hBr_O`z=BK>2lo zlCxnr&xyRo-rC_59U2w`HzH> zY#7!YerM!Kd}m}EK38@k&kZ&&_uQb>o#J)BLS2%BP_b$)wYpD*s(T1j^a7}@cC+(g z=POX_^`Psumf601DwO>YXMyu(sQuw#*I#iSgj*_E{T(aYc)CH=)E8<#&WEb$A}EV- zP&sBojbef8zd&6RRjy+F=RnyHfbvg+ikATue*%=0K+WHkP;uXc8rx^CH>+lGPKJte z22`A$P;t(KlHpKsE`*9R8LH=MD8HMa{BDQxyB|tcL-}ol@=K_0?t5U=K>O%Q7gz{?x)zb;e?`$Z){!o5H zp=1=4-*_m$SD|{|hw}Rz%I`ZUzu%#x$}#4543uAcsGc*S{F0#j21EIcgpzEid^u2l zH$$zdd!UZ7_j~)-P#!-+#fz_L@s5Ft*APltLB(qe74KZAWAh@{cR{@t9$3rzFND%( zxjr8%(%n#b9)PNQJyf1&pkzB#p1n{lUqRXb1Z5vr+w5yVNdp+x1yxsHsGjqo{4Rp> z8wZuA2ud!8@=I(~nfE!m24#04ZQn2TegBx{w(qxx@*e~hFApmIP0okl`~E!@6_eG& z{RJqWO-|W3uX5Tl-;{f@+nlj#Kx8R{f{2}mRZ-J{O42G__lhPZ6Nsy z%D?&w+g7JQMLN$p(Rl-`cc#TY8%p{^`3{AuB@?P=it97Ie=d|Pf~su^RLgECzr9d# zzJijUpzMOP%x*B0-9=D#|RqEIc{q3qsn0P%U>s z#d{FSZUdA&3uX5_RLh@GcE@x#yM|EG3d*iKRLk-HT|n)i;{69odPCXiy`u2mN9S%_ z^PI`|5!!ye*VoDeYU$lkri4>XuLUKIp>j2Y>c7eRZ}OC>N>n1)OGndsQaMTLfzk7?tIbtxwG0=uWs2x`oy zLXEi()R-@X8uKMkW4;#ZI^-^>F|UIf^Gi@;{urvp{AgKHWQ2FLT<$Dw=-`i06euc_+{Oy*n z7gWA%7;bZ@3@f4X?Shi;q4G7q!}Gx~9}M%sFdq!_!7v{T^WEwBV3-ev`Cyn2hWTKa z4~F>`TE68_`Cfp^w;w8B^+lGi1602Aq4Gtcw%=_~`JRBv_W=wu+-3PrgpvVJ`6fYa zzim+0F?(G<^=`{Q3@ZN=sQe3|#``o>{*R#YC){KC+d$<%7b<@qRK___jK1 zP}f;sx_-v}@!>w13bjw>LcPaux$FC(-dm`!#QI-`dbaHo*Xt}b|1+WDpS3(b+(!pP z?W0*x`{)#?ee?z>yY*1xeiv%ozeA0?`3f6%64bcILXG=6sBy1?8uu$uQ|pkgn8YFP;tdoxt*cc5Z_2NnC` zSvDUak~+M{7O` znU5R&{@n(@pSKChKkE#;4`APWQNZUPv;XybFBTJ{4g*t;lb8p|0H_!_P*q&#d;qrY zU~wlw$yHFcH$&N``~Ag;-)}60ifwiL@81sGMIB?jju*)z`5Y>C<%g|~Hc;E3AJp89 zb6yMOu^jHNZTY$-T73hcVx&RUHx4Ss6;Lsb)U)p_=zFZ`nNYEox&Ex{iS@0&9aMjk z>$@9RyuDEIzkpfb#GE_J>Dwf;VJR(!;+1x|o!?*ru*fw~tr1168Q>zY|maw}Bsd!fd( z3aV!tRPNWHV${zxy#-W%J1G1AK>7EEk`$;lZ~>IxJy3C0LRmZt<+mBi?`0@?2g+{` zl;80z5c!=1WziYRuLqRhxll3!%I{(*zbR0D*Fag!hVr`u%5MpjtcCL11m$;DmiZ+^ zSqy>ly8y~B0wu*zewRb}-42!SekhC8P=1d?`E7xc-B5n-!!TdA=YwHB80LdvJ}4=M z^1Bqu?*XWM>!B>3f%4l9<@W}Zd;;b71C-x?BlaF@WURf99)(&Xi=g^fyS@qP7+q_e z^*4p;Kh^cKU9Xd4@2|Ij>Mw?>>k6m}u7j#;0aRW0K*>W;b!~$3+X?0O4wS_{D8GYH zen+6B$^`RE4Dam?;Cj11`&U2qub%(dzdHK;Q1+!z_7w)3 zeN8C)Mo{*xp`;U(eRnAPbf}&&Q1*FH_EVr_CY1dgDEoJzdOn4+KLlm}E0k0nV)k{R z?0ZA?41%&B0cD>BC6_?OzYNNLB~;I&Q1+Xl>|chGccAR|K-oVs)YkiED7`q%{I7uW zzYfZO0hHVa<-ZQfej8NJYf$!kpzObZlAodMs|_>zCQvV^50(3AZ{OkVZ+ZJi zP<|Z;Se$d9WB`=kV5t6i-oM!UAN2k;-oL~9-}U}az5k&1H#^tjw}+B5q2iwn75_Hx zU+Vp9y#G<}-{k$+N`R0@Sgu50pm)>RNS%b1BsIE4qk$a zbJ}Sh7b?%WP;rJqd5ngNGZ8AzR4ADa6=yzFoJ~;mZHJ2U22`BAP##}F#rX*;PC_S( zQwu82@lbKbLdA(f#kmqH&h=0pw?M^N3>9ZJlspaD{1D36bz;(QGi=LnQk>}+wWLHRd? z@^1y@-vP?l@zp2>&+Evbb zozFte%STWiaU0C8g|nA46Y90zRZy>;?}gnb*qASal9^Ds?uN?svFqP>|6!;(jh|@! zgP`n3KuH!<|9J0T;r;8p|7q`k-uw4>{}gZKa8{g>rh{FzWP7b^ZjsQNZ||Fhn| z!~5U#{`freKL$z~Lism_@*nK|BfUS{`%ApPdA_Z=)1cS5223Ne|mefjpo~RK-K&O)GYiARrAQn{gtC7g%6=!5yaQ$b36y=^k!Ifl%Dx?x{ePgOH>q)$KMd7V=>oG)gtBh}C2gSW&xW#Zc%fZ?o&>d)&Vp)RdyzfA z{5;f}c@3(4_$Yfmc^uT5nGDswAj9(B2UX`oP?@Bp z`#MnefB&7CQs0LzXKhOEay|v?onbzmpyY1X6C1MbQ|)^O^$m@>c3R_c-gEz7;gYNE zc>fHPG`z;{lVwB6d>Gc$v3k(4bMv4%pSf#vsKMT2ch%jTSXg^>Ex#_?>#-X>VKtrw zHMWtk-otiY$byo~q5e8!jeVcrQYd}dBi6qKhB;5-GuLsa1hHSa(im#rXnm7C&uyOP zF{p~)f|`k+q2|27la+!w%gyI~C>gZE@@<6j*$L(I9h6U%2jar>Qb#C#FjRj&l>Ka| zNOwTVa;SQDL7mTDUuk{^q5Nt+Xnv0nk%KYAf;TWLuHF(JUT0%)j zD8CUS5SV{SDRmbC}|DlHwema0+injD8HppelI|I?1GX#P=1Lms`6bV zE$q9E|9bMvuFHG+b~%IjmhCW@w#5A2SZZ;4FEf1_RLe`Qhii4-(QCEP;}sJ}G9Suk zo$Ieb)%-nN^Qf)SolsJ3gRSA#P%T-m&xDelP`*_jvwOuUQ2Gr}^04b$T>l-0;}1V? z)Pi$e!+$;3E%urdH(AZ6InRfRdaV(MY>X#CROZT{|on$LPAHowhaxIZ=GeeG<$_fjpWR1_b+ zz6oxM3z{Em{cqMc`_mh^eR!|`WPaQEB%XtB%kv1W1AAp-$Doe*D(+6UspNpO<};>u za1M6nJ7+srJ9jz{IBRZpf9GIlzH>HQ@uTIg^^-=*y?Lm=M!P;AYBcw|{x;N{?RS01 z&vq=%fRZgxYwUH`&pI3zsEPqlvKofl*7a7u#D&}NbSSwUYAvjA{g@+h;WlpyC09eO zg?X<340SKM%CFYH73zJAw_IQFTU>ZOy#z{T{%Pa2@4IiwIic}Ce)DRyZ;yw4o?dYt zbk=&-_Q6x3WC$$0%i=x^B`>)Cj_Wn=w*Hn-Qfsm4t)L{y^>o+2gqr8Hd#yjt&q=kQ zmJMN{RppbM;-P0R?n8qVLTtR5w*q&z2-Skk=8(M-(Ai_aLFxJ+xfRz zu5nO*&4RN1^bV`-dnoKl3J12h&B^6&X+eT2f?V)UYK^?z_L5;C|zC*EXNj%9bFxTyFf|7foYIyWt z{F~3Vu^e*$+RvM9N2nT7plT?Ds$mY)`dHRhY%JH- zv1*l|BW*p)pA0{-^E+Jz0RG^4bIq*?`HlaS3B1@-*;|t#_a1ew~}~g zto^qtmah(TD%tD$4rk2nKGv9Imh)0)zH^LoptHBLi?f}xxwEG8FzZ>e-}$z4t@nqW z{CCdxW;fV5%30`~=A7-k)49^Q$+^S1$63?!wRZM)j&kNYFLlmwE_SYQKId%faT`0U zIDh)i>i^RDx^uI0y>p3ko^z%%>KyMJ?mXo2JG!1$*|y`E&gRbA&cOLYC9~V--0j@t zT;`nPoZ`H|+1J_0+1gp#`CCPc|F!d7=Qig`=OSmRGuN5w?Cw0#S>O3vg2mtO-0ocO zyw5qyIn9~tOmm*;Z0@Y${LS~r1J1q9mOjsQoPqPex3+yhcE0X>&biikpL3qG)H%U9 z+}YRJ#d*B5lJiSH{_Ju-;auXJ?Y!Cf8d-r254ouiyxohLf$ID5z0$me){Tb=pNi=4YSFG_xM{WIq%_n+om*`E1Wkv7dbaL zcRLR_gP*PL+Ri4&Y8YH%yTYwu5_+<9(E@9cCYVj?mXGq+1c9X zY1QA>Pt^NoJJXy!ohe>dw(|<-DDRK0!@(Z6v#-Zw=Wu8Dzva!0PmPQlQW(iUFEX{y zl=L89`uQc1qN&3(b4wy>3OcGSDYu|Ff>H2uoXk^-3bG=_#c2f-Bl$d$8P_io4gVgH zKenJKFEg4`kRLP;dgbO8WMxJpz4EgM?U7abp3PKqlF(<>{N7hk=yvwLN!5~Z3PL5T#D z%UKPLWR(=(NugMlTUh1es;m+;_~fP!|`cIX*qd}VU_gZk)mQYua?Hva7HX% ztl*pqgUFiGdulY2R*;^P9Z4FWSrj~zFqBPSFg8{(@0MylCYI?*=$YANdRkmx3X19J z!O)|0WxqK{DvGeWG%e{t=ZfiU=uipftIo9X^k#<}BoZvq$d77S@7~tPJAoRDLaET; z#&WR-Wfm5)otUSQ75IC2PGs_sv9b(4O&FG+cT`Je#oXd(QEnt3>mFgneRGP6!??5z z3wyKj3i&%bU?~-57Da|ei!Aziq5WXizmF)?!xb1@AC4%JSEw#u0|gqB^j=Xyj46qR z+rNakg;OoU`U!&O(1UtEwIVaH%yo)@m`@+}+7*$mBM2h8tX zGIngFNXIAcrci%oc9J;^DTx-AL>W~F<~uj{s8+4r%q&Kf9`q=egI%b&peUuFm}43T zx*!rB!Q3+#A8I}#e%UEpmq&$74^BU-H9e?VVL&lQ+??2Y{Uc#`PEnL2B=Z*4!6De3 zFf=z3DGbi*lRCK1z}OM$Gv9iC2nk-+xRWE3axnT5q%=lecVkRKh8pB?V=>A{J% znx?P}SUFi7HrB)sjb;`_lMAxagM&ez{A~W>-7;%UVWkA$sWtqoqsI)_Z!~92ZX`L0 zJDWPH4$PcdP!bJ3@v7ARyDGBsnB!Cb;oCbW$}YrRSnrAHlZlth$YUexmmE7RpA*l_ zN6#L;)@=3YSZ<$yffi|=O! zIPerq9gxL>d|S0yC@U>EJDjt!oa4fr9DVYm!E2m#8A$JvXtW?dX?!GWVuUmFIYId6 zUmbidK~eh_WRuS=H^-ooANsq(HaI8%fiw7#Qjy!^PICM zY5j9NPYu`mRf;!sDw{CRS1F%l@V2CaTu!&kVq>n8s?AlsP55Bj#W@^)eGvupT4i6>ULNBR(rtl=M zuQ2Pjy^Xavv`=bme?2zn(c|=CUO5b@ zkTIz^YjPo{iRjqi=L#8@5m@ z3Nj)^Mfn^1eVGrV*H=fFQ$COB1!-eOKhH)8V z?XOa^%-~d?5uIAdY~&SB$|{Q5bzsM!hoVzrG}2QWYs3XX#|jxG`D~|&K_0$bE*9j6 zg}o7%5w>0#pW!Wa*e0hbC}oZ<=-G2vpI*Is5}{PHl~p*EyTtk{uV7Ln7#L{Exh5%? zT<)xWc|zWpXu)LG#AW2l8KDeG>^X_33#gWLwoGzV%-ORKut#}%O zSjCyq=+xj)LTWVEPf^42Cv&C7`&4QhSWqyrq_A&EewL14ee$D4jPJ5|dN?0NONt^% zoQc@Ug8V3R7EW&^T?xf5s?!R36^)z3zS|;h==ex(Zl5V!!AHXvB18N485le9;WH>D zLs!v*3sN|mas@RYzc|W5?=y*G8tZ6ipR{2qT+7=QOkmHPS{P00mDVep?a09^tAA$k z_`XF2dAd~cON;aYgVR!n4NWtj-qcn0dV}{z(0OI@*9#e*RG`JquVM0hUVH>xl=#j* zWMH3O!_s1VepNp z)KzAi8Y#@p%!-6(futdWlG0)m#=G)5o@P!e|0<#$c{!+XFxD{-`{aTBV)fRIBS%T0 zE+&Wc8N|Vks=l!{0;RFDs{H79T}_0RylO0A>lX5Y;*i;C^88hZb+UQJWM)m|PRws8B;%!{)^-|;BV2Lm>@DF8V4>HANnAMSda_DchF*n~#A{&B^Q_tH z1y1<#z+O!rwpNd-ii)*9@$!tstYa}*E_sE~)X12Ef@pB$XurR^n1@Fl8Y$AX;XeXD zS5}c;fT*Bg%h7FvGNW1JtwO!tV{52^#vEHM7b92MX8_mw@n8jZe_-6mhqE*bIcS%lec5+e9 zBzsL{v)($^tBbpE+TEWs@$^_9+3m_a;{NHuq;h>_F_R%nA6?IFj z-?s(pQ)6a48)7|p{*^O)aidpjG?o-5=Y%2kl2|)Szmgp0aZapH5ySr2_U)kUtF;g* z;#{5)_C;7f7na-ZK+5Ze97SRkXpmLXc^r4%1Djq z+@3MCWK0?tbo9Tg{;>R*6Q9=nN1pWHe7gn@@2m}q@Xt2<-VE<3_`xK2H`G!iy~69>_d_kbtrNbAzN#GYx#kd_g5+mjBsxJ zNBfuYWmf=y@7(R<`Fs0=dUgHRU9w)mh}d19ob=!my?W@AKPjiEAU}@_mEoC1IhnkI zP7fy7T@GG^mlWFazoCNNnn;d}DH&%6+Fm>bs{0Vb^6iQ``>%^cP8Wxe(&rmzZxrlw{uK|LF}d)h5}bgu-&%2 z#rUwc@dZWUm5+tGrmS9j9eUIq)ECOlUHM3p%e=}pf1kjzp?LOz?C{popv>Zl!Ov>V z89UXNlph;EV)f}%KA^z&zF?5X{+GQ+<7Y`>8iRQ3fqOm0`}{s!ZAe?gFo~atFeeV!Z$l-94|k4jX5}~lZovW_O{2H!C=m3dg+|) zy}sQ2U6FaThI^j2n7=7vUG?-zX)wn)U0b9TBo`Fh8wk$_L;Gv37UX6}ifnfXiUXFF zEr7J55?vc@veznfm#n-!^JL4{vUhq0bWJ5|L?9e5{eK|5EV7j zkq|n9215xY5Fm6^P>=)?2qBO_0wRPSAV6q}3WC&t^rA?YUIK(FASF^mkAM)R%hr2MD6Qiu7C3i z-*y@*I@+&Gk!i=SV>dcJcnxuUF1Ehc_}@G^{cq0q|DkjqJQ&d0{0#mk($NhCMQwxg zKelD#0sB5WRpy+p@Kt&4Rnp1pNVj8|nf<2Q6|KLiw5F^st;7QiE%y?wKMr+zoS9jj zGVAZh>kyeP_8+1QWx1lvTYtgfMGPUHO|zZrJo7zn&;2itXI^JUzGoh^y}&asdB0GW z$9*xqNS1qT-295|u3PrLHldp3-`z?+_}aFk&Fgrjf4eraeA3dLGsEhnbb3wkBp|Hb6Hx#KVY8w-!!dwAowCIhD(Y7mmVds6-d%VxiFac;vGLSD|-Z|JCg{r5I*)}h{| zg;Q$1SAE^8TdkWdyxghw&Q9-*`*!k&nVlA-f9JKe&HRLSx*UEo?!$2>OLZFa=daxt zPs_MhX3LyCozBKZ1n&LjORurctvc^0)sO8p2a*pY+tVYzKDG1wGB?utC&TZ<;P=kA z82@ENq2Yh{Z9nQA^2&t{FaLP>cfXVZB}O!QtM}GKpFnAUS#qtrESu@(fo>%cDeox&rH{RWLCNA zch-C*QIBObUYgG+VdvrY+Kwqr^IJu3m+hEVXg*Qow%3j+PV+%xZk5;3yb<&058%>^ z+w0pSa+_(#v`+KWMcoG4#A`lO2 zrgfU1E*4UGyyk;M9{uZ>>S(^G_@c@^G@s^WucxrePilUJSVZNsH6NK(u0J5`tofQE zkKlDoWi@X^9zpAv(%;l}iF$OaS*Lls*1!HcTd&89kz%OWS?nOz5givB{`uF8|GC6* za8e~j*T1aVK7MuE)vp`P*US1(<8|t`39M7+*>U{u>bGvtIOJLNI(DXiSFgT*x7g=- z?TU#_?c=|*SV{B{Pd2e%PZHzBP_e9-9$?qoDkh2@#H{W6|M~YGNaJ@eH77cmm(FwF zFt~~cKatCBvGxLyYYrI`HhxgS?jl2`}w_9<8$uj z80^mP&32r#e~;Fb--yMXb$9%pc@V!L5C6s8@tg9z%bm=bzzJGNHH!T(+7z zPk3$!+_A>Vv?=dylHrQA{I-$ub#T`YPUhreeiH=G{ODvJzs-G?*EyM>^-d6`z*o57iiO2 ze!~q%U1Zzo^91-8VfDYc1c?+p8IHQ_WVW&`39#K2^5Y$0GGWy}2HRh?*VP%`CpuH- zG2E9%-{C3n%WG^GJ{vZ>Zs%_U2j8&EN5CnB)mJlM)mwJCFT6uoc`~5iZM#lmIE8R* zFHDvngN^RkZ3}{Zh>|QD3w_d^j3*ul+yCxlI?$h;;Tpo)mW^=uUE34j0>Wy~64>V+ z%hI7;N$$<+pR0AlQen`Y;ww zB&BPRki@|HenI`=H4A%IBWpQ7a(wTOaRUm&3ypB z17CNF^B7F%PybLp6?PlsY|~2!wp9$o@MVrSvn}JjKjXT?G-6wtLBF4rBmW92z&qCTm z`@RcFYn@H_Nq5KnB&x2X{ha50;ryRzTMYXMezcwYIUjO2!SK#5XX9JK-DJRSyY1}_ zhi~k$y(CPNr^ESs?Y>$9o9tsB)3zYEl(7134Q#mI_CWYE5lNjra9}d+XI*h{-~ngH zxikSL5stovB@Wuldc%?O1h|{9>ZCyD!yG&0^nl+J_m8n&SpO(v^d{#bIPVzyy*S$o z3m>OGUJQ;TJn#fq;TOgU`=}ahd6Hv~_IH2@r#K$)dC>J&XEXIA_ppae2bQkHH`E zxR`j#H^TaPsZZYq!lQ(>EoWe>d@hc0+X41^!NnYV!0`q5=XWs)_%Y~L$i;a3a~_6H zgr6N|W*O4OMS3%_jVECzjEA&(d14IX^eg+3w=^eg6Kg6Q+c@Fyaewrz#0 zylBG>wgvw3mW$cSvZ>Icl#3~fd&0t{UChQe8Qbt6(HTDm-z-bc`tGJI3?b@}CmdEU z=VBgT=iYO$`rGuEdC9u}WM1y$baFrY8m=ae9pl;o^VVb=7gKJLXLMBiiSr~pUZ1}0%e4SH zH)bFGNPoh2o4T05eeRBX>VDSNh4+t)0qEP=#l#(UH`YC>tMzc<&!;%o!P?x{EtK<{ zKYSsYw)J6Muu?x4QxmtI)%wl=>MSBB{QNT)GcSppu+<oqF8vIT5c6oyNmzJ{iy46zg98aq>RZqC z9XpmjV!IOIh;c3^{WZ>e7AMfRbvWn4ij&FnDt!V=Oktl!TAwLg%$hG;Off(97o0JR zaq=?PEEurB#dy``90)&JN}n&_Is)BR)3&+pj_0iR`+;(N5UjF}b@`GX&LFJuGY=lz z;9{cRW30lHn_bMM-fSbhvz2i>hql4X+g!}L@7&EzSa26(qX_*8f7Uq%?`8uthWtJCj#*d*x?9$MV-#@GBGcW_oA@LQM>qcp~Fn_8p8k&+$lkG~7lM!}q{^sf?>D9Gh^;1=d9$ z&VW}4Yy8}VtuET$0sc%_=ixoj`KpUaD#-B#OQtbSSk@cvBdj_pu-kR&cyesQwm0Zs zK9hEYZEkVg6>v8lVdQPjMR+VsPNz@uvrl2qyDnzOJ=zR+5s$eJCc{Pd8PDv~6>!G` z+B}>0FwpxU^PGpP!Bu~;j#}5TQ*Fg^_R}((VdR`aL@^W=G z88g`y7{ix&-gq3`z!!LlHQgQ0$y>^oUU944%^J9wFQ|Oqp&TyYOROC=*k7jkq~7JT z?Ypj~>3eK@ZrT9b__~@<$~(di^;}J{%6$HU-t}EgKFX`XJ47++XTWL=TumL?>F>ErDxBZb)x1Rc5*Xc!wpHYu275=insq%{7p&aZ)ui{}{09A_ z`2vzUfpGF?j0bo61V#*I`+fMF2-AnUn&e#U3pj2#`w5>4PmFLi_b>6@1Fj#*ej(>p zxG3J$c;PEx3SsSwlknSd^uHVDWOy*a)tq73W3a_LR$*8N7t5kdG=xOx`tp$|90!r!qDSB^*6 zmZ(IXjxgCO=RLzQSbr{lf%jK1Vm|vCkA`a(x|$i?xxT=si(F07ZnSeTT;ghG2fG_D z=(&RN)|GQUEWC=o;@B((%dKHNOk=;pCTpor8?0xACh$DZcIB97(Y`uUSR#buIA)q_8oj>KVytMUeGz2cG6}Km~epcK%S}a!9m*} z!?h`{CYJHM5tcm4KA^rgta*a*@4|Zwi@(r6csgwLE6aY$c?MQE?`m!)@}3Z`_=B-G zj`JS;A(xv;9!dYe^gM1RunS`bUgMdt9Vxe-4Z9@2o7uCHa~kYZz|Fiwc`UrZb57Pc zTlYwDGw)f?tliG}1eWAEwb9h~h7;d#Gya_!pK#)vZYF624!`HQz|q6W2^;aO+;z+8 zTlgB!aGAY~&!=!P&uxj_#+Zboc&1Dn%B^S345{vB>QEjJpAaKxgKG^pQ-b^2+;?KV zFqkMw|AfPa{yeAVL;4)%Yshv{=Os9bu)hCHfLj{7nY5w2pM+t7Zf4$6J`=&*E!@mj z!+3^EKBNt8X*2B0bH3Na(GT#Y&Ti)B62=VtxT~9~M4ez*B-qVy&M5|$64o)b1~v$> zJrKHtai7jiuEp>uF^D>6;QgND{EhG8;Qn6hnQgFl8XBi&4A zyaO!ThkF8YuB!x3^mQ{qY~vZ&Ag1O&BP61|H7mRl(%9Gz|SX9e=zT#;eg3*rY0T-Kb+=fe5unJ z{`MtfhCFF-z;riL43C2izOvg82-n{c;J8n#sEOetSBc^{tyZY3(mq zW|rONN^q`x34C!jW0m^Fpf6!voBZJw!g~LC6PB9GSR#)%oJLsdngIvQv-fozyh&L7 zb040a@8k~mfLlz!Fnq=W*H}q;bUS6 zGZO-wEscmJHZ(yX}#1JYnUW3J=I{ z!Wuj5oZ)aXVfFuX`1($}yd;b#tnx&-g2+eybufIFJ(i+j5@FR@0eyCBU%(oB+>AH% zec?#L`kpEQ?%T&$!c*X^{dU`u;Ci`7vYTm5#8RgtTu;o#lVPg^ob&Mxus30C*9f?V zu=cO@w=sDS+Uu$bPZ4R=oF2CgNnbHzqj=CJw` zx*f5{d0E(lu$GO4@pA8@oTCU&_WN{ri>QR(hqaE`>#YOt5kZtchOeLC{Ev5rwSM6` zf!BdE2&wt3Hf7Y4?9T>~xVjln28>m*@*T5x#qczQV2h9mh)$pwRB77`&zQ%Qpu$CSKu*ht<2_LTR5W8{> zp99y+x5AV1RG90IoiiUSDffnr<;`Iac?29Qp8yxjSHNU>3cM*#haTy6eot7BSi$H0 z#;~)>L*WSdSU5+%819nqgIDC&VXoipoOxhrxi|Ee2f|Q!IE~hF{3Pg+ItQ!VB^=XztlLJ)jTKneQ-b!jI*_a1deb-w|+z zd=A_s-v&?1Q{f}I(|tEnp0Jj!3Zk6wVXXF>4#~*f{{IHt*UD!(A z0Y=JWVWRvCxKjQDJS;x}Z_6LR{15E>FF|j4H5eps10&`A;UxJNaHD(|yeYp6^E|Y3 z7J@$VDzLe{4IC&R0cXhP!F}=+m?pmsb7iO>U}?DzY$6YWq4EegMm_;9k}rb?+3 zhRD0Y!SYe?JNZJmO}-nRmtTd>nRZSO=p(NN1LbXCxI7vr$fv?3@>Ou3{0O`*zYDpG zx8s~p2)-?^1RKkPV5mG2#>*$b1@dKZmps{`{3djDvh(MG#pPvT9eHEeSsn`G0X~sCyYk!&!pdJ9zALW>Ka_t82g>8%H}ctV zoqQ`iDNltNa^uEl7{bc`2CO0Xg>B>=VYGY@oGPCI*T~ny3BLcRtj%a6fa z9(+FL`?P$pBw_WBH}sbW!eDt1I7~hk&XF&M+vNM;1^IR8oZHTs2Nsu?h4tl)VP|7^7^4U4_!_sme*ihaac9TcIQSu3JfqWUR0b>>%$1W96U2Y4VwHoqRJqB|irr$e+SjJnj5%!gu9< zu)Vw!jFo>5r^#o+wen5yxcn^qL;eI7E~x&2)#bHeTX`qgPyRWaCZ7q{$~VBH@?YUS z`6KvZAv^you$sIUY$x5Gev#`?A$L;%mM5%ZzanfTZvlJC zd&AN4iSTD4-;3^MH@u+ot1wgU{u0L{VdX3X{p5|{r}FM_h=43M{k;qpFkjC>MYB3}uU z<%i)l`R_2_tI7|(<&|N8yd?~m_km;Nli(8hO1M{k7~Yis4)eXH{Louo83xK*!Cvyd zaJ+mnTr6J&_sNgI>+-uWPcb`xA^5hu3T!5C1$)RNVZ1yME|IT*$?_C@AOk6Xl6;xqJmYBu{~NInQ=ZA00eP9!LbJ#;30msTGz{T=qaG(4jye_{DU+_|XSV8Uso5`EQZt@5? zN~dP3T%&`C)mv zH*6|z3B%-l;28NtxKO?v?v@{bm*uyhTM0XVURYXQ9yXLWh27*m;VAhyxIn%H?vN*2 zlv~ecbuMY=_kdpV((rwGL-?`08yqYj1;3TggB#`B;A!~<_?O(d6rUFe>-th0)|S_Y zAIrPK&*a15H}bh~gM2$YC%*`v%3Vt5GOrO<{B44`Jb?0IXnN$u!{U0*h1bO_Lj%MiSjSua`}(&ko-8jCI16@ zzHR3(0)6B)U~_pp7$NTuC&;J5CGs^eS$+gwm#0II@^*etSXN#MHkJp$PtJwMTz~b_^VLf?c z*jXM5jBX115%0pqCJRZ)LFMylnyWlzbCHPqG zT8;lUOgPTf@LhR5_@Vq$I8Z(eel4F3H^{fbU*)Ork=#`0TuoT{y>t-W7uCl7=9t20e_Tlgulqoz=!h3@TGU` z{Ka53xi4%Z?+ByigWy#847f(V5gwDDhIi!|(6gqUzbLFEuK`=i+rd8a{&0f)3%E@F z13WB00dLD6!2GrB{6(OTyc!IYw}IjEXqX_M3YW-N!2|Lm@Rs~8%=50DzYwe-uL7IM zTfrXkzHqF3GF&WQ0r$vLV46G~=6%o3?+MGxE5WAnAQ&o-gz@r3m?U2T_sCOVnmiqP z_$ogvEBAo`^5!s19sx(mC%^^rWpJ1LAiO5O4Rh7D^XG@9f# z3EUx1wkW>|UEjC!=YhrLZ^H)iCNM;N^`~%oW9s?)Jr@^K2weW!aD7+!R2lFZ^+YO-e$@V%gZalrt%=zQyvN9<%#fn`3ksS zo&s;k(_!A`$`8xSE5WAnAQ&o-gyZCi@O$|RxL=+EZ^+YO-WJLa%gQUk#_}K-DvyNY ze*W|Zh?l#H~%gKFUfV?>jlSjZY@(FN} zd>Py&KM1eMZ^PVel^>Rq`@jHsa~LL%fMetn-~#zFxL1A+%Jl23q(n^Ens(fZ#Y^$5iXQ3hr8v6;8pn@=>CD7{{>h|UI8|cH-jPaUNBxh9wy0` z!aec>Fin0N=K4_m153+&U_*Ix*i9Y|N5~W4Joys1L!N9=eiOQWWarNZOUk{WzdR5I z%X`3K^09D^d@~21TQwZyQ z)HiUod;>fx{}tYoKY}lQY}bDUR+HC)E#)7;KJo!@s{AWB>=Ukw-Q3L>IFGQ_y9oX) z-wS_}UxQAa?K-((NqITwFK+@v~A z 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 Wr~Wd1&ALU@^1ZC(GbSXtjr<>_A!QK& literal 0 HcmV?d00001 diff --git a/scripts/win32/header.bmp b/scripts/win32/header.bmp new file mode 100644 index 0000000000000000000000000000000000000000..379081dee27879b6950ce0e94ad3d40e4d722a44 GIT binary patch literal 21722 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 G1OEdvnXw%J literal 0 HcmV?d00001 diff --git a/scripts/win32/installer.nsi b/scripts/win32/installer.nsi new file mode 100644 index 0000000..590deab --- /dev/null +++ b/scripts/win32/installer.nsi @@ -0,0 +1,117 @@ +!define VERSION 'RC1' + +; The name of the installer +Name "Cura ${VERSION}" + +; The file to write +OutFile "Cura_${VERSION}.exe" + +; The default installation directory +InstallDir $PROGRAMFILES\Cura_${VERSION} + +; Registry key to check for directory (so if you install again, it will +; overwrite the old one automatically) +InstallDirRegKey HKLM "Software\Cura_${VERSION}" "Install_Dir" + +; Request application privileges for Windows Vista +RequestExecutionLevel admin + +; Set the LZMA compressor to reduce size. +SetCompressor /SOLID lzma +;-------------------------------- + +!include "MUI2.nsh" +!include Library.nsh + +!define MUI_ICON "cura.ico" +!define MUI_BGCOLOR FFFFFF + +; Directory page defines +!define MUI_DIRECTORYPAGE_VERIFYONLEAVE + +; Header +!define MUI_HEADERIMAGE +!define MUI_HEADERIMAGE_RIGHT +!define MUI_HEADERIMAGE_BITMAP "header.bmp" +!define MUI_HEADERIMAGE_BITMAP_NOSTRETCH + +;Do not leave (Un)Installer page automaticly +!define MUI_FINISHPAGE_NOAUTOCLOSE +!define MUI_UNFINISHPAGE_NOAUTOCLOSE + +; Pages +;!insertmacro MUI_PAGE_WELCOME +!insertmacro MUI_PAGE_DIRECTORY +!insertmacro MUI_PAGE_INSTFILES +!insertmacro MUI_PAGE_FINISH +!insertmacro MUI_UNPAGE_CONFIRM +!insertmacro MUI_UNPAGE_INSTFILES +!insertmacro MUI_UNPAGE_FINISH + +; Languages +!insertmacro MUI_LANGUAGE "English" + +; Reserve Files +!insertmacro MUI_RESERVEFILE_LANGDLL +ReserveFile '${NSISDIR}\Plugins\InstallOptions.dll' +ReserveFile "cura.ico" +ReserveFile "header.bmp" + +;-------------------------------- + +; The stuff to install +Section "Cura Installer" + + SectionIn RO + + ; Set output path to the installation directory. + SetOutPath $INSTDIR + + ; Put file there + File /r "dist\" + + ; Write the installation path into the registry + WriteRegStr HKLM "SOFTWARE\Cura_${VERSION}" "Install_Dir" "$INSTDIR" + + ; Write the uninstall keys for Windows + WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Cura_${VERSION}" "DisplayName" "Cura ${VERSION}" + WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Cura_${VERSION}" "UninstallString" '"$INSTDIR\uninstall.exe"' + WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Cura_${VERSION}" "NoModify" 1 + WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Cura_${VERSION}" "NoRepair" 1 + WriteUninstaller "uninstall.exe" + + CreateDirectory "$SMPROGRAMS\Cura ${VERSION}" + CreateShortCut "$SMPROGRAMS\Cura ${VERSION}\Uninstall.lnk" "$INSTDIR\uninstall.exe" "" "$INSTDIR\uninstall.exe" 0 + CreateShortCut "$SMPROGRAMS\Cura ${VERSION}\Cura.lnk" "$INSTDIR\cura.bat" "" "$INSTDIR\cura.icon" 0 + + ; Set output path to the driver directory. + SetOutPath "$INSTDIR\drivers\" + File /r "drivers\" + + ${If} ${RunningX64} + ExecWait '"$INSTDIR\drivers\dpinst64.exe" /lm' + ${Else} + ExecWait '"$INSTDIR\drivers\dpinst32.exe" /lm' + ${EndIf} + +SectionEnd + +;-------------------------------- + +; Uninstaller + +Section "Uninstall" + + ; Remove registry keys + DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Cura_${VERSION}" + DeleteRegKey HKLM "SOFTWARE\Cura_${VERSION}" + + ; Remove shortcuts, if any + Delete "$SMPROGRAMS\Cura ${VERSION}\*.*" + + ; Remove directories used + RMDir /r "$SMPROGRAMS\Cura ${VERSION}" + RMDir /r "$INSTDIR" + +SectionEnd + From 7ec27fec920646020ff26f37fe0c9f2b6df75db3 Mon Sep 17 00:00:00 2001 From: daid Date: Mon, 2 Apr 2012 16:09:56 +0200 Subject: [PATCH 30/33] Added extra fan control. Advanced setting to enabled/disable fan. And expert setting to set the fan start layer and fan speed. --- Cura/alterations/start.gcode | 2 -- Cura/cura_sf/fabmetheus_utilities/settings.py | 4 ++- .../skeinforge_plugins/craft_plugins/cool.py | 6 ++-- Cura/gui/advancedConfig.py | 30 +++++++++++-------- Cura/gui/alterationPanel.py | 2 +- Cura/gui/mainWindow.py | 3 ++ Cura/gui/simpleMode.py | 4 +++ Cura/util/profile.py | 3 ++ 8 files changed, 35 insertions(+), 19 deletions(-) diff --git a/Cura/alterations/start.gcode b/Cura/alterations/start.gcode index 4f1222a..7db5699 100644 --- a/Cura/alterations/start.gcode +++ b/Cura/alterations/start.gcode @@ -4,8 +4,6 @@ G90 ;absolute positioning G28 X0 Y0 ;move X/Y to min endstops G28 Z0 ;move Z to min endstops -M106 ;turn on fan - ; if your prints start too high, try changing the Z0.0 below ; to Z1.0 - the number after the Z is the actual, physical ; height of the nozzle in mm. This can take some messing around diff --git a/Cura/cura_sf/fabmetheus_utilities/settings.py b/Cura/cura_sf/fabmetheus_utilities/settings.py index f89fa87..aeb64c1 100644 --- a/Cura/cura_sf/fabmetheus_utilities/settings.py +++ b/Cura/cura_sf/fabmetheus_utilities/settings.py @@ -265,9 +265,11 @@ def getProfileInformation(): 'Name_of_Cool_End_File': DEFSET, 'Name_of_Cool_Start_File': DEFSET, 'Orbital_Outset_millimeters': DEFSET, - 'Turn_Fan_On_at_Beginning': "False", + 'Turn_Fan_On_at_Beginning': storedSetting("fan_enabled"), 'Turn_Fan_Off_at_Ending': "False", 'Minimum_feed_rate_mm/s': storedSetting("cool_min_feedrate"), + 'Fan_on_at_layer': storedSetting('fan_layer'), + 'Fan_speed_%': storedSetting('fan_speed'), },'hop': { 'Activate_Hop': "False", 'Hop_Over_Layer_Thickness_ratio': DEFSET, diff --git a/Cura/cura_sf/skeinforge_application/skeinforge_plugins/craft_plugins/cool.py b/Cura/cura_sf/skeinforge_application/skeinforge_plugins/craft_plugins/cool.py index d78f194..5a4f549 100644 --- a/Cura/cura_sf/skeinforge_application/skeinforge_plugins/craft_plugins/cool.py +++ b/Cura/cura_sf/skeinforge_application/skeinforge_plugins/craft_plugins/cool.py @@ -163,6 +163,8 @@ class CoolRepository: self.executeTitle = 'Cool' self.minimumFeedRate = settings.FloatSpin().getFromValue(0.0, 'Minimum feed rate (mm/s):', self, 10.0, 5.0) + self.fanTurnOnLayerNr = settings.IntSpin().getFromValue(0, 'Fan on at layer:', self, 100, 0) + self.fanSpeed = settings.IntSpin().getFromValue(0, 'Fan speed (%):', self, 100, 100) def execute(self): 'Cool button has been clicked.' @@ -333,8 +335,6 @@ class CoolSkein: self.oldFlowRate = float(splitLine[1][1 :]) elif firstWord == '(': self.edgeWidth = float(splitLine[1]) - if self.repository.turnFanOnAtBeginning.value: - self.distanceFeedRate.addLine('M106') elif firstWord == '()': self.distanceFeedRate.addTagBracketedProcedure('cool') return @@ -371,6 +371,8 @@ class CoolSkein: elif firstWord == '(': self.layerCount.printProgressIncrement('cool') self.distanceFeedRate.addLine(line) + if self.repository.turnFanOnAtBeginning.value and self.repository.fanTurnOnLayerNr.value == self.layerCount.layerIndex: + self.distanceFeedRate.addLine('M106 S%d' % (self.repository.fanSpeed.value * 255 / 100)) self.distanceFeedRate.addLinesSetAbsoluteDistanceMode(self.coolStartLines) layerTime = self.getLayerTime() remainingOrbitTime = max(self.repository.minimumLayerTime.value - layerTime, 0.0) diff --git a/Cura/gui/advancedConfig.py b/Cura/gui/advancedConfig.py index 4f9a0c9..99c841f 100644 --- a/Cura/gui/advancedConfig.py +++ b/Cura/gui/advancedConfig.py @@ -23,16 +23,13 @@ class advancedConfigWindow(configBase.configWindowBase): c = configBase.SettingRow(left, "Extra Wall thickness for bottom/top (mm)", 'extra_base_wall_thickness', '0.0', 'Additional wall thickness of the bottom and top layers.') validators.validFloat(c, 0.0) - configBase.TitleRow(left, "Sequence") - c = configBase.SettingRow(left, "Print order sequence", 'sequence', ['Loops > Perimeter > Infill', 'Loops > Infill > Perimeter', 'Infill > Loops > Perimeter', 'Infill > Perimeter > Loops', 'Perimeter > Infill > Loops', 'Perimeter > Loops > Infill'], 'Sequence of printing. The perimeter is the outer print edge, the loops are the insides of the walls, and the infill is the insides.'); - c = configBase.SettingRow(left, "Force first layer sequence", 'force_first_layer_sequence', True, 'This setting forces the order of the first layer to be \'Perimeter > Loops > Infill\'') - configBase.TitleRow(left, "Cool") c = configBase.SettingRow(left, "Minimum feedrate (mm/s)", 'cool_min_feedrate', '5', 'The minimal layer time can cause the print to slow down so much it starts to ooze. The minimal feedrate protects against this. Even if a print gets slown down it will never be slower then this minimal feedrate.') validators.validFloat(c, 0.0) - - configBase.TitleRow(left, "Joris") - c = configBase.SettingRow(left, "Joris the outer edge", 'joris', False, '[Joris] is a code name for smoothing out the Z move of the outer edge. This will create a steady Z increase over the whole print. It is intended to be used with a single walled wall thickness to make cups/vases.') + c = configBase.SettingRow(left, "Fan on layer number", 'fan_layer', '0', 'The layer at which the fan is turned on. The first layer is layer 0.') + validators.validInt(c, 0) + c = configBase.SettingRow(left, "Fan speed (%)", 'fan_speed', '100', 'When the fan is turned on, it is enabled at this speed setting.') + validators.validInt(c, 0, 100) configBase.TitleRow(left, "Raft (if enabled)") c = configBase.SettingRow(left, "Raft extra margin (mm)", 'raft_margin', '3.0', 'If the raft is enabled, this is the extra raft area around the object which is also rafted. Increasing this margin will create a stronger raft.') @@ -42,24 +39,31 @@ class advancedConfigWindow(configBase.configWindowBase): c = configBase.SettingRow(left, "Raft interface material amount (%)", 'raft_interface_material_amount', '100', 'The interface layer is a weak thin layer between the base layer and the printed object. It is designed to has little material to make it easy to break the base off the printed object. This setting adjusts the amount of material used for the interface layer.') validators.validFloat(c, 0.0) + configBase.TitleRow(left, "Support") + c = configBase.SettingRow(left, "Support material amount (%)", 'support_rate', '100', 'Amount of material used for support, less material gives a weaker support structure which is easier to remove.') + validators.validFloat(c, 0.0) + c = configBase.SettingRow(left, "Support distance from object (mm)", 'support_distance', '0.5', 'Distance between the support structure and the object.') + validators.validFloat(c, 0.0) + configBase.TitleRow(right, "Infill") c = configBase.SettingRow(right, "Infill pattern", 'infill_type', ['Line', 'Grid Circular', 'Grid Hexagonal', 'Grid Rectangular'], 'Pattern of the none-solid infill. Line is default, but grids can provide a strong print.') c = configBase.SettingRow(right, "Solid infill top", 'solid_top', True, 'Create a solid top surface, if set to false the top is filled with the fill percentage. Useful for cups/vases.') c = configBase.SettingRow(right, "Infill overlap (%)", 'fill_overlap', '15', 'Amount of overlap between the infill and the walls. There is a slight overlap with the walls and the infill so the walls connect firmly to the infill.') validators.validFloat(c, 0.0) - configBase.TitleRow(right, "Support") - c = configBase.SettingRow(right, "Support material amount (%)", 'support_rate', '100', 'Amount of material used for support, less material gives a weaker support structure which is easier to remove.') - validators.validFloat(c, 0.0) - c = configBase.SettingRow(right, "Support distance from object (mm)", 'support_distance', '0.5', 'Distance between the support structure and the object.') - validators.validFloat(c, 0.0) - configBase.TitleRow(right, "Bridge") c = configBase.SettingRow(right, "Bridge speed (%)", 'bridge_speed', '100', 'Speed at which bridges are printed, compared to normal printing speed.') validators.validFloat(c, 0.0) c = configBase.SettingRow(right, "Bridge material (%)", 'bridge_material_amount', '100', 'Amount of material used for bridges, increase go extrude more material when printing a bridge.') validators.validFloat(c, 0.0) + configBase.TitleRow(right, "Sequence") + c = configBase.SettingRow(right, "Print order sequence", 'sequence', ['Loops > Perimeter > Infill', 'Loops > Infill > Perimeter', 'Infill > Loops > Perimeter', 'Infill > Perimeter > Loops', 'Perimeter > Infill > Loops', 'Perimeter > Loops > Infill'], 'Sequence of printing. The perimeter is the outer print edge, the loops are the insides of the walls, and the infill is the insides.'); + c = configBase.SettingRow(right, "Force first layer sequence", 'force_first_layer_sequence', True, 'This setting forces the order of the first layer to be \'Perimeter > Loops > Infill\'') + + configBase.TitleRow(right, "Joris") + c = configBase.SettingRow(right, "Joris the outer edge", 'joris', False, '[Joris] is a code name for smoothing out the Z move of the outer edge. This will create a steady Z increase over the whole print. It is intended to be used with a single walled wall thickness to make cups/vases.') + main.Fit() self.Fit() diff --git a/Cura/gui/alterationPanel.py b/Cura/gui/alterationPanel.py index c47b7c8..2692b7f 100644 --- a/Cura/gui/alterationPanel.py +++ b/Cura/gui/alterationPanel.py @@ -7,7 +7,7 @@ class alterationPanel(wx.Panel): def __init__(self, parent): wx.Panel.__init__(self, parent,-1) - self.alterationFileList = ['start.gcode', 'end.gcode', 'cool_start.gcode', 'cool_end.gcode', 'replace.csv'] + self.alterationFileList = ['start.gcode', 'end.gcode', 'support_start.gcode', 'support_end.gcode', 'replace.csv'] self.currentFile = None self.textArea = wx.TextCtrl(self, style=wx.TE_MULTILINE|wx.TE_DONTWRAP|wx.TE_PROCESS_TAB) diff --git a/Cura/gui/mainWindow.py b/Cura/gui/mainWindow.py index 8994762..20a0032 100644 --- a/Cura/gui/mainWindow.py +++ b/Cura/gui/mainWindow.py @@ -35,6 +35,7 @@ class mainWindow(configBase.configWindowBase): def __init__(self): super(mainWindow, self).__init__(title='Cura') + wx.EVT_CLOSE(self, self.OnClose) self.SetIcon(icon.getMainIcon()) menubar = wx.MenuBar() @@ -168,6 +169,7 @@ class mainWindow(configBase.configWindowBase): configBase.TitleRow(right, "Cool") c = configBase.SettingRow(right, "Minimal layer time (sec)", 'cool_min_layer_time', '10', 'Minimum time spend in a layer, gives the layer time to cool down before the next layer is put on top. If the layer will be placed down too fast the printer will slow down to make sure it has spend atleast this amount of seconds printing this layer.') validators.validFloat(c, 0.0) + c = configBase.SettingRow(right, "Enable cooling fan", 'fan_enabled', True, 'Enable the cooling fan during the print. The extra cooling from the cooling fan is essensial during faster prints.') nb.AddPage(alterationPanel.alterationPanel(nb), "Start/End-GCode") @@ -310,3 +312,4 @@ class mainWindow(configBase.configWindowBase): def OnClose(self, e): profile.saveGlobalProfile(profile.getDefaultProfilePath()) self.Destroy() + diff --git a/Cura/gui/simpleMode.py b/Cura/gui/simpleMode.py index 40a3d0e..13954fd 100644 --- a/Cura/gui/simpleMode.py +++ b/Cura/gui/simpleMode.py @@ -189,6 +189,9 @@ class simpleModeWindow(configBase.configWindowBase): put('max_z_speed', '1.0') put('bottom_layer_speed', '25') put('cool_min_layer_time', '10') + put('fan_enabled', 'True') + put('fan_layer', '0') + put('fan_speed', '100') #put('model_scale', '1.0') #put('flip_x', 'False') #put('flip_y', 'False') @@ -251,6 +254,7 @@ class simpleModeWindow(configBase.configWindowBase): put('filament_density', '0.85') put('enable_raft', 'True') put('skirt_line_count', '0') + put('fan_layer', '1') #Create a progress panel and add it to the window. The progress panel will start the Skein operation. spp = sliceProgessPanel.sliceProgessPanel(self, self, self.filename) diff --git a/Cura/util/profile.py b/Cura/util/profile.py index 8ab00bd..2548ec8 100644 --- a/Cura/util/profile.py +++ b/Cura/util/profile.py @@ -35,6 +35,9 @@ profileDefaultSettings = { 'max_z_speed': '1.0', 'bottom_layer_speed': '25', 'cool_min_layer_time': '10', + 'fan_enabled': 'True', + 'fan_layer': '0', + 'fan_speed': '100', 'model_scale': '1.0', 'flip_x': 'False', 'flip_y': 'False', From a8963b1cc1e96e16c2fcec2fc433df98863a41a3 Mon Sep 17 00:00:00 2001 From: daid Date: Mon, 2 Apr 2012 18:56:44 +0200 Subject: [PATCH 31/33] Make the printer interface a bit more user friendly. --- Cura/gui/printWindow.py | 57 +++++++++++++++++++++++++++++------ Cura/util/gcodeInterpreter.py | 20 +++++++----- 2 files changed, 61 insertions(+), 16 deletions(-) diff --git a/Cura/gui/printWindow.py b/Cura/gui/printWindow.py index 1b19a4c..9881f82 100644 --- a/Cura/gui/printWindow.py +++ b/Cura/gui/printWindow.py @@ -5,6 +5,7 @@ import wx, threading from gui import machineCom from gui import icon +from util import gcodeInterpreter printWindowHandle = None @@ -21,6 +22,7 @@ class printWindow(wx.Frame): def __init__(self): super(printWindow, self).__init__(None, -1, title='Printing') self.machineCom = None + self.machineConnected = False self.thread = None self.gcodeList = None self.printIdx = None @@ -37,8 +39,8 @@ class printWindow(wx.Frame): sb = wx.StaticBox(self.panel, label="Statistics") boxsizer = wx.StaticBoxSizer(sb, wx.VERTICAL) - boxsizer.Add(wx.StaticText(self.panel, -1, "Filament: #.##m #.##g"), flag=wx.LEFT, border=5) - boxsizer.Add(wx.StaticText(self.panel, -1, "Print time: ##:##"), flag=wx.LEFT, border=5) + self.statsText = wx.StaticText(self.panel, -1, "Filament: #.##m #.##g\nPrint time: ##:##") + boxsizer.Add(self.statsText, flag=wx.LEFT, border=5) self.sizer.Add(boxsizer, pos=(0,0), span=(4,1), flag=wx.EXPAND) @@ -46,11 +48,12 @@ class printWindow(wx.Frame): self.loadButton = wx.Button(self.panel, -1, 'Load GCode') self.printButton = wx.Button(self.panel, -1, 'Print GCode') self.cancelButton = wx.Button(self.panel, -1, 'Cancel print') + self.progress = wx.Gauge(self.panel, -1) self.sizer.Add(self.connectButton, pos=(0,1)) self.sizer.Add(self.loadButton, pos=(1,1)) self.sizer.Add(self.printButton, pos=(2,1)) self.sizer.Add(self.cancelButton, pos=(3,1)) - self.sizer.Add(wx.Gauge(self.panel, -1), pos=(4,0), span=(1,2), flag=wx.EXPAND) + self.sizer.Add(self.progress, pos=(4,0), span=(1,2), flag=wx.EXPAND) self.sizer.AddGrowableRow(3) self.sizer.AddGrowableCol(0) @@ -63,6 +66,24 @@ class printWindow(wx.Frame): self.Layout() self.Fit() self.Centre() + + self.UpdateButtonStates() + self.UpdateProgress() + + def UpdateButtonStates(self): + self.connectButton.Enable(not self.machineConnected) + self.loadButton.Enable(self.printIdx == None) + self.printButton.Enable(self.machineConnected and self.gcodeList != None and self.printIdx == None) + self.cancelButton.Enable(self.printIdx != None) + + def UpdateProgress(self): + status = "" + if self.printIdx == None: + self.progress.SetValue(0) + else: + self.progress.SetValue(self.printIdx) + status += 'Line: %d/%d\n' % (self.printIdx, len(self.gcodeList)) + self.statsText.SetLabel(status) def OnConnect(self, e): if self.machineCom != None: @@ -71,12 +92,13 @@ class printWindow(wx.Frame): self.machineCom = machineCom.MachineCom() self.thread = threading.Thread(target=self.PrinterMonitor) self.thread.start() + self.UpdateButtonStates() def OnLoad(self, e): pass def OnPrint(self, e): - if self.machineCom == None: + if not self.machineConnected: return if self.gcodeList == None: return @@ -85,9 +107,11 @@ class printWindow(wx.Frame): self.printIdx = 1 self.sendLine(0) self.sendCnt = self.bufferLineCount + self.UpdateButtonStates() def OnCancel(self, e): - pass + self.printIdx = None + self.UpdateButtonStates() def OnClose(self, e): global printWindowHandle @@ -105,8 +129,15 @@ class printWindow(wx.Frame): line = line.strip() if len(line) > 0: gcodeList.append(line) + gcode = gcodeInterpreter.gcode() + gcode.loadList(gcodeList) + print gcode.extrusionAmount + print gcode.totalMoveTimeMinute print "Loaded: %s (%d)" % (filename, len(gcodeList)) + self.progress.SetRange(len(gcodeList)) self.gcodeList = gcodeList + self.UpdateButtonStates() + self.UpdateProgress() def sendLine(self, lineNr): if lineNr >= len(self.gcodeList): @@ -119,11 +150,17 @@ class printWindow(wx.Frame): while True: line = self.machineCom.readline() if line == None: + self.machineConnected = False + wx.CallAfter(self.UpdateButtonState) return - while self.sendCnt > 0: - self.sendLine(self.printIdx) - self.printIdx += 1 - self.sendCnt -= 1 + if self.machineConnected: + while self.sendCnt > 0: + self.sendLine(self.printIdx) + self.printIdx += 1 + self.sendCnt -= 1 + elif line.startswith("start"): + self.machineConnected = True + wx.CallAfter(self.UpdateButtonState) if self.printIdx != None: if line.startswith("ok"): if skipCount > 0: @@ -131,6 +168,7 @@ class printWindow(wx.Frame): else: self.sendLine(self.printIdx) self.printIdx += 1 + wx.CallAfter(self.UpdateProgress) elif "resend" in line.lower() or "rs" in line: try: lineNr=int(line.replace("N:"," ").replace("N"," ").replace(":"," ").split()[-1]) @@ -138,3 +176,4 @@ class printWindow(wx.Frame): if "rs" in line: lineNr=int(line.split()[1]) self.printIdx = lineNr + diff --git a/Cura/util/gcodeInterpreter.py b/Cura/util/gcodeInterpreter.py index 347eabe..06ebd5a 100644 --- a/Cura/util/gcodeInterpreter.py +++ b/Cura/util/gcodeInterpreter.py @@ -23,9 +23,16 @@ class gcode(): self.progressCallback = None def load(self, filename): - fileSize = os.stat(filename).st_size - filePos = 0 + self._fileSize = os.stat(filename).st_size gcodeFile = open(filename, 'r') + self._load(gcodeFile) + gcodeFile.close() + + def loadList(self, l): + self._load(l) + + def _load(self, gcodeFile): + filePos = 0 pos = util3d.Vector3() posOffset = util3d.Vector3() currentE = 0.0 @@ -42,10 +49,10 @@ class gcode(): currentPath.list[0].e = totalExtrusion currentLayer.append(currentPath) for line in gcodeFile: - if filePos != gcodeFile.tell(): - filePos = gcodeFile.tell() - if self.progressCallback != None: - self.progressCallback(float(filePos) / float(fileSize)) + if self.progressCallback != None: + if filePos != gcodeFile.tell(): + filePos = gcodeFile.tell() + self.progressCallback(float(filePos) / float(self._fileSize)) #Parse Cura_SF comments if line.startswith(';TYPE:'): @@ -183,7 +190,6 @@ class gcode(): pass else: print "Unknown M code:" + str(M) - gcodeFile.close() self.layerList.append(currentLayer) self.extrusionAmount = maxExtrusion self.totalMoveTimeMinute = totalMoveTimeMinute From 6d82dfb4bd2e3e75f05b9d73786241ae765903d2 Mon Sep 17 00:00:00 2001 From: Daid Date: Mon, 2 Apr 2012 19:34:27 +0200 Subject: [PATCH 32/33] Just a comment --- Cura/gui/printWindow.py | 1 + 1 file changed, 1 insertion(+) diff --git a/Cura/gui/printWindow.py b/Cura/gui/printWindow.py index d061330..c84d842 100644 --- a/Cura/gui/printWindow.py +++ b/Cura/gui/printWindow.py @@ -135,3 +135,4 @@ class printWindow(wx.Frame): if "rs" in line: lineNr=int(line.split()[1]) self.printIdx = lineNr + #we should actually resend the line here, but we also get an "ok" for each error from Marlin. And thus we'll resend on the OK. From 870c4952fdb3268f5d4b6359d2e8046a6bb8df4f Mon Sep 17 00:00:00 2001 From: Daid Date: Mon, 2 Apr 2012 21:40:27 +0200 Subject: [PATCH 33/33] Move SkeinforgeVersion file into cura_sf directory --- Cura/{ => cura_sf}/SkeinforgeVersion | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename Cura/{ => cura_sf}/SkeinforgeVersion (100%) diff --git a/Cura/SkeinforgeVersion b/Cura/cura_sf/SkeinforgeVersion similarity index 100% rename from Cura/SkeinforgeVersion rename to Cura/cura_sf/SkeinforgeVersion