diff --git a/src/Mod/Draft/DraftGui.py b/src/Mod/Draft/DraftGui.py index 09566fb7fc92..79f75270750b 100644 --- a/src/Mod/Draft/DraftGui.py +++ b/src/Mod/Draft/DraftGui.py @@ -283,6 +283,8 @@ def setupToolBar(self,task=False): self.addButton = self._pushbutton("addButton", self.layout, icon="Draft_AddPoint", width=22, checkable=True) self.delButton = self._pushbutton("delButton", self.layout, icon="Draft_DelPoint", width=22, checkable=True) + self.tangentButton = self._pushbutton("tangentButton", self.layout, icon="Draft_BezTanNode", width=22, checkable=True) + self.symmetricButton = self._pushbutton("symmetricButton", self.layout, icon="Draft_BezSymNode", width=22, checkable=True) # point @@ -371,6 +373,8 @@ def setupToolBar(self,task=False): QtCore.QObject.connect(self.offsetValue,QtCore.SIGNAL("returnPressed()"),self.validatePoint) QtCore.QObject.connect(self.addButton,QtCore.SIGNAL("toggled(bool)"),self.setAddMode) QtCore.QObject.connect(self.delButton,QtCore.SIGNAL("toggled(bool)"),self.setDelMode) + QtCore.QObject.connect(self.tangentButton,QtCore.SIGNAL("toggled(bool)"),self.setTangentMode) + QtCore.QObject.connect(self.symmetricButton,QtCore.SIGNAL("toggled(bool)"),self.setSymmetricMode) QtCore.QObject.connect(self.finishButton,QtCore.SIGNAL("pressed()"),self.finish) QtCore.QObject.connect(self.closeButton,QtCore.SIGNAL("pressed()"),self.closeLine) QtCore.QObject.connect(self.wipeButton,QtCore.SIGNAL("pressed()"),self.wipeLine) @@ -445,7 +449,8 @@ def setupTray(self): def setupStyle(self): style = "#constrButton:Checked {background-color: " style += self.getDefaultColor("constr",rgb=True)+" } " - style += "#addButton:Checked, #delButton:checked {" + style += "#addButton:Checked, #delButton:checked, " + style += "#tangentButton:Checked, #symmetricButton:checked {" style += "background-color: rgb(20,100,250) }" self.baseWidget.setStyleSheet(style) @@ -477,6 +482,8 @@ def retranslateUi(self, widget=None): self.occOffset.setText(translate("draft", "&OCC-style offset")) self.addButton.setToolTip(translate("draft", "Add points to the current object")) self.delButton.setToolTip(translate("draft", "Remove points from the current object")) + self.tangentButton.setToolTip(translate("draft", "Make Bezier node tangent")) + self.symmetricButton.setToolTip(translate("draft", "Make Bezier node symmetric")) self.undoButton.setText(translate("draft", "&Undo")) self.undoButton.setToolTip(translate("draft", "Undo the last segment (CTRL+Z)")) self.closeButton.setText(translate("draft", "&Close")) @@ -672,6 +679,8 @@ def offUi(self): self.finishButton.hide() self.addButton.hide() self.delButton.hide() + self.tangentButton.hide() + self.symmetricButton.hide() self.undoButton.hide() self.closeButton.hide() self.wipeButton.hide() @@ -792,7 +801,7 @@ def selectUi(self,extra=None,callback=None): self.labelx.show() self.makeDumbTask(extra,callback) - def editUi(self): + def editUi(self, mode=None): self.taskUi(translate("draft", "Edit")) self.hideXYZ() self.numFaces.hide() @@ -800,9 +809,17 @@ def editUi(self): self.hasFill.hide() self.addButton.show() self.delButton.show() + if mode == 'BezCurve': + self.tangentButton.show() + self.symmetricButton.show() self.finishButton.show() self.closeButton.show() - + # always start Edit with buttons unchecked + self.addButton.setChecked(False) + self.delButton.setChecked(False) + self.tangentButton.setChecked(False) + self.symmetricButton.setChecked(False) + def extUi(self): self.hasFill.show() self.continueCmd.show() @@ -830,6 +847,10 @@ def setEditButtons(self,mode): self.addButton.setEnabled(mode) self.delButton.setEnabled(mode) + def setBezEditButtons(self,mode): + self.tangentButton.setEnabled(mode) + self.symmetricButton.setEnabled(mode) + def setNextFocus(self): def isThere(widget): if widget.isEnabled() and widget.isVisible(): @@ -1267,7 +1288,6 @@ def displayPoint(self, point=None, last=None, plane=None, mask=None): self.zValue.setEnabled(True) self.xValue.setFocus() self.xValue.selectAll() - def getDefaultColor(self,type,rgb=False): "gets color from the preferences or toolbar" @@ -1357,10 +1377,26 @@ def popupTriggered(self,action): def setAddMode(self,bool): if self.addButton.isChecked(): self.delButton.setChecked(False) + self.symmetricButton.setChecked(False) + self.tangentButton.setChecked(False) def setDelMode(self,bool): if self.delButton.isChecked(): self.addButton.setChecked(False) + self.symmetricButton.setChecked(False) + self.tangentButton.setChecked(False) + + def setTangentMode(self,bool): + if self.tangentButton.isChecked(): + self.symmetricButton.setChecked(False) + self.addButton.setChecked(False) + self.delButton.setChecked(False) + + def setSymmetricMode(self,bool): + if self.symmetricButton.isChecked(): + self.tangentButton.setChecked(False) + self.addButton.setChecked(False) + self.delButton.setChecked(False) def setRadiusValue(self,val): self.radiusValue.setText("%.2f" % val) diff --git a/src/Mod/Draft/DraftTools.py b/src/Mod/Draft/DraftTools.py index 8cdebc605b6c..e3a0b24f3833 100644 --- a/src/Mod/Draft/DraftTools.py +++ b/src/Mod/Draft/DraftTools.py @@ -107,7 +107,7 @@ def getPoint(target,args,mobile=False,sym=False,workingplane=True,noTracker=Fals the point wont be projected on the Working Plane. if noTracker is True, the tracking line will not be displayed ''' - + ui = FreeCADGui.draftToolBar view = Draft.get3DView() @@ -150,7 +150,7 @@ def getSupport(args=None): plane.alignToFace(sel.SubObjects[0]) return sel.Object return None - + snapped = Draft.get3DView().getObjectInfo((args["Position"][0],args["Position"][1])) if not snapped: return None obj = None @@ -186,8 +186,8 @@ def setMod(args,mod,state): args["CtrlDown"] = state elif mod == "alt": args["AltDown"] = state - - + + #--------------------------------------------------------------------------- @@ -196,7 +196,7 @@ def setMod(args,mod,state): class DraftTool: "The base class of all Draft Tools" - + def __init__(self): self.commitList = [] @@ -209,10 +209,10 @@ def IsActive(self): def Activated(self,name="None"): if FreeCAD.activeDraftCommand: FreeCAD.activeDraftCommand.finish() - + global Part, DraftGeomUtils import Part, DraftGeomUtils - + self.ui = None self.call = None self.support = None @@ -240,7 +240,7 @@ def Activated(self,name="None"): self.planetrack = None if Draft.getParam("showPlaneTracker",False): self.planetrack = PlaneTracker() - + def finish(self): self.node = [] FreeCAD.activeDraftCommand = None @@ -293,7 +293,7 @@ def getStrings(self,addrot=None): fil = str(bool(self.ui.fillmode)) else: fil = "True" - + return qr,sup,points,fil #--------------------------------------------------------------------------- @@ -308,7 +308,7 @@ def GetResources(self): 'Accel' : "W, P", 'MenuText': QtCore.QT_TRANSLATE_NOOP("Draft_SelectPlane", "SelectPlane"), 'ToolTip' : QtCore.QT_TRANSLATE_NOOP("Draft_SelectPlane", "Select a working plane for geometry creation")} - + def Activated(self): DraftTool.Activated(self) self.offset = 0 @@ -402,17 +402,17 @@ def display(self,arg): #--------------------------------------------------------------------------- # Geometry constructors #--------------------------------------------------------------------------- - + class Creator(DraftTool): "A generic Draft Creator Tool used by creation tools such as line or arc" - + def __init__(self): DraftTool.__init__(self) def Activated(self,name="None"): DraftTool.Activated(self) self.support = getSupport() - + class Line(Creator): "The Line FreeCAD command definition" @@ -549,7 +549,7 @@ def wipe(self): if self.planetrack: self.planetrack.set(self.node[0]) msg(translate("draft", "Pick next point:\n")) - + def numericInput(self,numx,numy,numz): "this function gets called by the toolbar when valid x, y, and z have been entered there" self.point = Vector(numx,numy,numz) @@ -558,7 +558,7 @@ def numericInput(self,numx,numy,numz): if (not self.isWire and len(self.node) == 2): self.finish(False,cont=True) self.ui.setNextFocus() - + class Wire(Line): "a FreeCAD command for creating a wire" def __init__(self): @@ -571,10 +571,10 @@ def GetResources(self): def Activated(self): Line.Activated(self,name=translate("draft","DWire")) - + class BSpline(Line): "a FreeCAD command for creating a b-spline" - + def __init__(self): Line.__init__(self,wiremode=True) @@ -642,7 +642,7 @@ def drawUpdate(self,point): spline.interpolate(self.node, False) self.obj.Shape = spline.toShape() msg(translate("draft", "Pick next point, or (F)inish or (C)lose:\n")) - + def finish(self,closed=False,cont=False): "terminates the operation and closes the poly if asked" if self.ui: @@ -668,7 +668,7 @@ def finish(self,closed=False,cont=False): class BezCurve(Line): "a FreeCAD command for creating a Bezier Curve" - + def __init__(self): Line.__init__(self,wiremode=True) @@ -725,7 +725,6 @@ def undolast(self): msg(translate("draft", "Last point has been removed\n")) def drawUpdate(self,point): - msg(translate("draft", "BezCurve drawUpdate\n")) if (len(self.node) == 1): self.bezcurvetrack.on() if self.planetrack: @@ -766,10 +765,10 @@ def finish(self,closed=False,cont=False): if self.ui: if self.ui.continueMode: self.Activated() - + class FinishLine: "a FreeCAD command to finish any running Line drawing operation" - + def Activated(self): if (FreeCAD.activeDraftCommand != None): if (FreeCAD.activeDraftCommand.featureName == "Line"): @@ -786,20 +785,20 @@ def IsActive(self): else: return False - + class CloseLine: "a FreeCAD command to close any running Line drawing operation" - + def Activated(self): if (FreeCAD.activeDraftCommand != None): if (FreeCAD.activeDraftCommand.featureName == "Line"): FreeCAD.activeDraftCommand.finish(True) - + def GetResources(self): return {'Pixmap' : 'Draft_Lock', 'MenuText': QtCore.QT_TRANSLATE_NOOP("Draft_CloseLine", "Close Line"), 'ToolTip': QtCore.QT_TRANSLATE_NOOP("Draft_CloseLine", "Closes the line being drawn")} - + def IsActive(self): if FreeCADGui.ActiveDocument: return True @@ -809,27 +808,27 @@ def IsActive(self): class UndoLine: "a FreeCAD command to undo last drawn segment of a line" - + def Activated(self): if (FreeCAD.activeDraftCommand != None): if (FreeCAD.activeDraftCommand.featureName == "Line"): FreeCAD.activeDraftCommand.undolast() - + def GetResources(self): return {'Pixmap' : 'Draft_Rotate', 'MenuText': QtCore.QT_TRANSLATE_NOOP("Draft_UndoLine", "Undo last segment"), 'ToolTip': QtCore.QT_TRANSLATE_NOOP("Draft_UndoLine", "Undoes the last drawn segment of the line being drawn")} - + def IsActive(self): if FreeCADGui.ActiveDocument: return True else: return False - + class Rectangle(Creator): "the Draft_Rectangle FreeCAD command definition" - + def GetResources(self): return {'Pixmap' : 'Draft_Rectangle', 'Accel' : "R, E", @@ -939,7 +938,7 @@ def appendPoint(self,point): class Arc(Creator): "the Draft_Arc FreeCAD command definition" - + def __init__(self): self.closedCircle=False self.featureName = "Arc" @@ -1191,7 +1190,7 @@ def numericInput(self,numx,numy,numz): self.step = 1 self.ui.setNextFocus() msg(translate("draft", "Pick radius:\n")) - + def numericRadius(self,rad): "this function gets called by the toolbar when valid radius have been entered there" if (self.step == 1): @@ -1236,14 +1235,14 @@ def numericRadius(self,rad): self.step = 4 self.drawArc() - + class Circle(Arc): "The Draft_Circle FreeCAD command definition" - + def __init__(self): self.closedCircle=True self.featureName = "Circle" - + def GetResources(self): return {'Pixmap' : 'Draft_Circle', 'Accel' : "C, I", @@ -1253,7 +1252,7 @@ def GetResources(self): class Polygon(Creator): "the Draft_Polygon FreeCAD command definition" - + def GetResources(self): return {'Pixmap' : 'Draft_Polygon', 'Accel' : "P, G", @@ -1411,7 +1410,7 @@ def numericInput(self,numx,numy,numz): self.step = 1 self.ui.radiusValue.setFocus() msg(translate("draft", "Pick radius:\n")) - + def numericRadius(self,rad): "this function gets called by the toolbar when valid radius have been entered there" self.rad = rad @@ -1428,11 +1427,11 @@ def numericRadius(self,rad): else: self.center = cir[-1].Center self.drawPolygon() - - + + class Ellipse(Creator): "the Draft_Ellipse FreeCAD command definition" - + def GetResources(self): return {'Pixmap' : 'Draft_Ellipse', 'Accel' : "E, L", @@ -1542,7 +1541,7 @@ def appendPoint(self,point): if self.planetrack: self.planetrack.set(point) - + class Text(Creator): "This class creates an annotation feature." @@ -1617,7 +1616,7 @@ def numericInput(self,numx,numy,numz): class Dimension(Creator): "The Draft_Dimension FreeCAD command definition" - + def __init__(self): self.max=2 self.cont = None @@ -1919,7 +1918,7 @@ def GetResources(self): 'Accel' : "S, S", 'MenuText': QtCore.QT_TRANSLATE_NOOP("Draft_ShapeString", "Shape from text..."), 'ToolTip': QtCore.QT_TRANSLATE_NOOP("Draft_ShapeString", "Creates text string in shapes.")} - + def Activated(self): name = translate("draft","ShapeString") Creator.Activated(self,name) @@ -1951,7 +1950,7 @@ def createObject(self): FFile = dquote + self.FFile + dquote # print "debug: D_T ShapeString.createObject type(String): " str(type(String)) # print "debug: D_T ShapeString.createObject type(FFile): " str(type(FFile)) - + try: qr,sup,points,fil = self.getStrings() self.commit(translate("draft","Create ShapeString"), @@ -1981,38 +1980,38 @@ def action(self,arg): self.active = False FreeCADGui.Snapper.off() self.ui.SSUi() - + def numericInput(self,numx,numy,numz): '''this function gets called by the toolbar when valid x, y, and z have been entered there''' self.ssBase = Vector(numx,numy,numz) self.ui.SSUi() #move on to next step in parameter entry - + def numericSSize(self,ssize): '''this function is called by the toolbar when valid size parameter has been entered. ''' self.SSSize = ssize self.ui.STrackUi() - + def numericSTrack(self,strack): '''this function is called by the toolbar when valid size parameter has been entered. ?''' self.SSTrack = strack self.ui.SFileUi() - + def validSString(self,sstring): '''this function is called by the toolbar when a ?valid? string parameter has been entered. ''' self.SString = sstring self.ui.SSizeUi() - + def validFFile(self,FFile): '''this function is called by the toolbar when a ?valid? font file parameter has been entered. ''' self.FFile = FFile # last step in ShapeString parm capture, create object self.createObject() - + def finish(self, finishbool=False): "terminates the operation" Creator.finish(self) @@ -2030,7 +2029,7 @@ class Modifier(DraftTool): def __init__(self): DraftTool.__init__(self) - + class Move(Modifier): "The Draft_Move FreeCAD command definition" @@ -2039,7 +2038,7 @@ def GetResources(self): 'Accel' : "M, V", 'MenuText': QtCore.QT_TRANSLATE_NOOP("Draft_Move", "Move"), 'ToolTip': QtCore.QT_TRANSLATE_NOOP("Draft_Move", "Moves the selected objects between 2 points. CTRL to snap, SHIFT to constrain, ALT to copy")} - + def Activated(self): self.name = translate("draft","Move") Modifier.Activated(self,self.name) @@ -2156,7 +2155,7 @@ def numericInput(self,numx,numy,numz): self.move(self.point.sub(last)) self.finish() - + class ApplyStyle(Modifier): "The Draft_ApplyStyle FreeCA command definition" @@ -2191,10 +2190,10 @@ def formatGroup(self,grpob): c.extend(self.formatGroup(ob)) else: c.append('Draft.formatObject(FreeCAD.ActiveDocument.'+ob.Name+')') - + class Rotate(Modifier): "The Draft_Rotate FreeCAD command definition" - + def GetResources(self): return {'Pixmap' : 'Draft_Rotate', 'Accel' : "R, O", @@ -2226,7 +2225,7 @@ def proceed(self): self.ghost = ghostTracker(self.sel) self.call = self.view.addEventCallback("SoEvent",self.action) msg(translate("draft", "Pick rotation center:\n")) - + def finish(self,closed=False,cont=False): "finishes the arc" Modifier.finish(self) @@ -2303,7 +2302,7 @@ def action(self,arg): self.ui.radiusValue.setText("%.2f" % math.degrees(sweep)) self.ui.radiusValue.setFocus() self.ui.radiusValue.selectAll() - + elif arg["Type"] == "SoMouseButtonEvent": if (arg["State"] == "DOWN") and (arg["Button"] == "BUTTON1"): if self.point: @@ -2486,7 +2485,7 @@ def action(self,arg): self.ui.radiusValue.selectAll() if self.extendedCopy: if not hasMod(arg,MODALT): self.finish() - + elif arg["Type"] == "SoMouseButtonEvent": if (arg["State"] == "DOWN") and (arg["Button"] == "BUTTON1"): copymode = False @@ -2509,7 +2508,7 @@ def action(self,arg): self.extendedCopy = True else: self.finish() - + def finish(self,closed=False): if self.running: if self.linetrack: @@ -2555,7 +2554,7 @@ def Activated(self): self.call = self.view.addEventCallback("SoEvent",selectObject) else: self.proceed() - + def proceed(self): if self.call: self.view.removeEventCallback("SoEvent",self.call) @@ -2626,7 +2625,7 @@ def proceed(self): self.obj = FreeCADGui.Selection.getSelection()[0] self.ui.trimUi() self.linetrack = lineTracker() - + import DraftGeomUtils if not "Shape" in self.obj.PropertiesList: return @@ -2701,7 +2700,7 @@ def action(self,arg): self.ui.radiusValue.setText("%.2f" % dist) self.ui.radiusValue.setFocus() self.ui.radiusValue.selectAll() - + elif arg["Type"] == "SoMouseButtonEvent": if (arg["State"] == "DOWN") and (arg["Button"] == "BUTTON1"): cursor = arg["Position"] @@ -2728,17 +2727,17 @@ def extrude(self,shift=False,real=False): self.ghost[i].p1(base) self.ghost[i].p2(base.add(delta)) return delta.Length - + def redraw(self,point,snapped=None,shift=False,alt=False,real=None): "redraws the ghost" - + # initializing reverse = False for g in self.ghost: g.off() if real: newedges = [] - + import DraftGeomUtils - + # finding the active point vlist = [] for e in self.edges: vlist.append(e.Vertexes[0].Point) @@ -2748,7 +2747,7 @@ def redraw(self,point,snapped=None,shift=False,alt=False,real=None): if npoint > len(self.edges)/2: reverse = True if alt: reverse = not reverse self.activePoint = npoint - + # sorting out directions if reverse and (npoint > 0): npoint = npoint-1 if (npoint > len(self.edges)-1): @@ -2763,7 +2762,7 @@ def redraw(self,point,snapped=None,shift=False,alt=False,real=None): else: v1 = edge.Vertexes[0].Point v2 = edge.Vertexes[-1].Point - + # snapping if snapped: snapped = self.doc.getObject(snapped['Object']) @@ -2918,7 +2917,7 @@ def numericRadius(self,dist): self.trimObject() self.finish() - + class Scale(Modifier): '''The Draft_Scale FreeCAD command definition. This tool scales the selected objects from a base point.''' @@ -3041,7 +3040,7 @@ def numericInput(self,numx,numy,numz): self.scale(self.point.sub(last)) self.finish(cont=True) - + class ToggleConstructionMode(): "The Draft_ToggleConstructionMode FreeCAD command definition" @@ -3050,11 +3049,11 @@ def GetResources(self): 'MenuText': QtCore.QT_TRANSLATE_NOOP("Draft_ToggleConstructionMode", "Toggle construcion Mode"), 'Accel' : "C, M", 'ToolTip': QtCore.QT_TRANSLATE_NOOP("Draft_ToggleConstructionMode", "Toggles the Construction Mode for next objects.")} - + def Activated(self): FreeCADGui.draftToolBar.constrButton.toggle() - + class ToggleContinueMode(): "The Draft_ToggleContinueMode FreeCAD command definition" @@ -3066,10 +3065,10 @@ def GetResources(self): def Activated(self): FreeCADGui.draftToolBar.toggleContinue() - + class Drawing(Modifier): "The Draft Drawing command definition" - + def GetResources(self): return {'Pixmap' : 'Draft_Drawing', 'Accel' : "D, D", @@ -3126,7 +3125,7 @@ def createDefaultPage(self): self.doc.recompute() return page - + class ToggleDisplayMode(): "The ToggleDisplayMode FreeCAD command definition" @@ -3141,7 +3140,7 @@ def IsActive(self): return True else: return False - + def Activated(self): for obj in FreeCADGui.Selection.getSelection(): if obj.ViewObject.DisplayMode == "Flat Lines": @@ -3184,19 +3183,28 @@ def Activated(self): def proceed(self): if self.call: self.view.removeEventCallback("SoEvent",self.call) - self.ui.editUi() if self.doc: self.obj = FreeCADGui.Selection.getSelection() if self.obj: self.obj = self.obj[0] + if (Draft.getType(self.obj) == "BezCurve"): + self.ui.editUi("BezCurve") + else: + self.ui.editUi() # store selectable state of the object if hasattr(self.obj.ViewObject,"Selectable"): self.selectstate = self.obj.ViewObject.Selectable self.obj.ViewObject.Selectable = False - if Draft.getType(self.obj) in ["Wire","BSpline","BezCurve"]: +# ?????? + if Draft.getType(self.obj) in ["Wire","BSpline"]: + self.ui.setEditButtons(True) + self.ui.setBezEditButtons(False) + elif Draft.getType(self.obj) == "BezCurve": self.ui.setEditButtons(True) + self.ui.setBezEditButtons(True) else: self.ui.setEditButtons(False) + self.ui.setBezEditButtons(False) self.editing = None self.editpoints = [] self.pl = None @@ -3310,6 +3318,15 @@ def action(self,arg): elif self.ui.delButton.isChecked(): if 'EditNode' in info["Component"]: self.delPoint(int(info["Component"][8:])) + # don't do tan/sym on DWire/BSpline! + elif ((Draft.getType(self.obj) == "BezCurve") and + (self.ui.tangentButton.isChecked())): + if 'EditNode' in info["Component"]: + self.smoothBezPoint(int(info["Component"][8:]), info, 'Tangent') + elif ((Draft.getType(self.obj) == "BezCurve") and + (self.ui.symmetricButton.isChecked())): + if 'EditNode' in info["Component"]: + self.smoothBezPoint(int(info["Component"][8:]), info, 'Symmetric') elif 'EditNode' in info["Component"]: self.ui.pointUi() self.ui.isRelative.show() @@ -3406,9 +3423,12 @@ def numericInput(self,v,numy=None,numz=None): self.doc.commitTransaction() self.doc.recompute() self.editing = None - self.ui.editUi() + if (Draft.getType(self.obj) == "BezCurve"): + self.ui.editUi("BezCurve") + else: + self.ui.editUi() self.node = [] - + def addPoint(self,point,info=None): if not (Draft.getType(self.obj) in ["Wire","BSpline","BezCurve"]): return pts = self.obj.Points @@ -3472,7 +3492,7 @@ def addPoint(self,point,info=None): self.obj.Points = pts self.doc.commitTransaction() self.resetTrackers() - + def delPoint(self,point): if not (Draft.getType(self.obj) in ["Wire","BSpline","BezCurve"]): return if len(self.obj.Points) <= 2: @@ -3485,6 +3505,29 @@ def delPoint(self,point): self.doc.commitTransaction() self.resetTrackers() + def smoothBezPoint(self,point, info=None, style='Symmetric'): + if not (Draft.getType(self.obj) == "BezCurve"): return + if info['Component'].startswith('Edge'): + return # didn't click control point + pts = self.obj.Points + deg = self.obj.Degree + if point not in range(0, len(pts), deg): + msg(translate("draft", "Selection is not a Node\n"),'warning') + return + if (point == 0) or (point == (len(pts)-1)): + msg(translate("draft", "Endpoint of BezCurve can't be smoothed\n"),'warning') + return + if style == 'Tangent': + prev, next = self.obj.Proxy.tangentpoles(pts[point],pts[point-1],pts[point+1]) + else: + prev, next = self.obj.Proxy.symmetricpoles(pts[point],pts[point-1],pts[point+1]) + pts[point-1] = prev + pts[point+1] = next + self.obj.Points = pts + self.doc.openTransaction("Edit "+self.obj.Name) + self.doc.commitTransaction() + self.resetTrackers() + def resetTrackersBezier(self): knotmarker = coin.SoMarkerSet.SQUARE_FILLED_9_9 polemarker = coin.SoMarkerSet.CIRCLE_FILLED_9_9 @@ -3529,7 +3572,7 @@ def IsActive(self): return True else: return False - + def Activated(self): self.groups = ["Ungroup"] self.groups.extend(Draft.getGroupNames()) @@ -3559,7 +3602,7 @@ def proceed(self,labelname): except: pass - + class AddPoint(Modifier): "The Draft_AddPoint FreeCAD command definition" @@ -3584,13 +3627,13 @@ def Activated(self): FreeCADGui.draftToolBar.vertUi(True) FreeCADGui.runCommand("Draft_Edit") - + class DelPoint(Modifier): "The Draft_DelPoint FreeCAD command definition" def __init__(self): self.running = False - + def GetResources(self): return {'Pixmap' : 'Draft_DelPoint', 'MenuText': QtCore.QT_TRANSLATE_NOOP("Draft_DelPoint", "Remove Point"), @@ -3609,13 +3652,13 @@ def Activated(self): FreeCADGui.draftToolBar.vertUi(False) FreeCADGui.runCommand("Draft_Edit") - + class WireToBSpline(Modifier): "The Draft_Wire2BSpline FreeCAD command definition" def __init__(self): self.running = False - + def GetResources(self): return {'Pixmap' : 'Draft_WireToBSpline', 'MenuText': QtCore.QT_TRANSLATE_NOOP("Draft_WireToBSpline", "Wire to BSpline"), @@ -3668,7 +3711,7 @@ def IsActive(self): return True else: return False - + def Activated(self): sellist = [] sel = FreeCADGui.Selection.getSelection() @@ -3689,12 +3732,12 @@ def Activated(self): class Shape2DView(Modifier): "The Shape2DView FreeCAD command definition" - + def GetResources(self): return {'Pixmap' : 'Draft_2DShapeView', 'MenuText': QtCore.QT_TRANSLATE_NOOP("Draft_Shape2DView", "Shape 2D view"), 'ToolTip': QtCore.QT_TRANSLATE_NOOP("Draft_Shape2DView", "Creates Shape 2D views of selected objects")} - + def Activated(self): Modifier.Activated(self) if not FreeCADGui.Selection.getSelection(): @@ -3728,7 +3771,7 @@ def proceed(self): class Draft2Sketch(Modifier): "The Draft2Sketch FreeCAD command definition" - + def GetResources(self): return {'Pixmap' : 'Draft_Draft2Sketch', 'MenuText': QtCore.QT_TRANSLATE_NOOP("Draft_Draft2Sketch", "Draft to Sketch"), @@ -3784,7 +3827,7 @@ def proceed(self): class Array(Modifier): "The Shape2DView FreeCAD command definition" - + def GetResources(self): return {'Pixmap' : 'Draft_Array', 'MenuText': QtCore.QT_TRANSLATE_NOOP("Draft_Array", "Array"), @@ -3812,7 +3855,7 @@ def proceed(self): class PathArray(Modifier): "The PathArray FreeCAD command definition" - + def GetResources(self): return {'Pixmap' : 'Draft_PathArray', 'MenuText': QtCore.QT_TRANSLATE_NOOP("Draft_PathArray", "PathArray"), @@ -3858,7 +3901,7 @@ def IsActive(self): return True else: return False - + def Activated(self): self.view = Draft.get3DView() self.stack = [] @@ -3875,7 +3918,7 @@ def move(self,event_cb): mousepos = event.getPosition().getValue() ctrl = event.wasCtrlDown() self.point = FreeCADGui.Snapper.snap(mousepos,active=ctrl) - + def click(self,event_cb): event = event_cb.getEvent() if event.getState() == coin.SoMouseButtonEvent.DOWN: @@ -3962,7 +4005,7 @@ def Activated(self): FreeCADGui.Snapper.forceGridOff=False else: FreeCADGui.Snapper.show() - + class Heal(): "The Draft Heal command definition" @@ -4011,13 +4054,13 @@ def proceed(self): FreeCAD.ActiveDocument.commitTransaction() FreeCAD.ActiveDocument.recompute() self.finish() - + class Draft_FlipDimension(): def GetResources(self): return {'Pixmap' : 'Draft_FlipDimension', 'MenuText': QtCore.QT_TRANSLATE_NOOP("Draft_FlipDimension", "Flip Dimension"), 'ToolTip' : QtCore.QT_TRANSLATE_NOOP("Draft_FlipDimension", "Flip the normal direction of a dimension")} - + def Activated(self): for o in FreeCADGui.Selection.getSelection(): if Draft.getType(o) in ["Dimension","AngularDimension"]: @@ -4030,7 +4073,7 @@ def Activated(self): #--------------------------------------------------------------------------- # Snap tools #--------------------------------------------------------------------------- - + class Draft_Snap_Lock(): def GetResources(self): return {'Pixmap' : 'Snap_Lock', @@ -4173,7 +4216,7 @@ def Activated(self): for b in FreeCADGui.Snapper.toolbarButtons: if b.objectName() == "SnapButtonortho": b.toggle() - + class Draft_Snap_Dimensions(): def GetResources(self): return {'Pixmap' : 'Snap_Dimensions', @@ -4187,7 +4230,7 @@ def Activated(self): #--------------------------------------------------------------------------- # Adds the icons & commands to the FreeCAD command manager, and sets defaults #--------------------------------------------------------------------------- - + # drawing commands FreeCADGui.addCommand('Draft_SelectPlane',SelectPlane()) FreeCADGui.addCommand('Draft_Line',Line()) diff --git a/src/Mod/Draft/Draft_rc.py b/src/Mod/Draft/Draft_rc.py index a5e1c2eb8ac9..653a6e71f0ce 100644 --- a/src/Mod/Draft/Draft_rc.py +++ b/src/Mod/Draft/Draft_rc.py @@ -2,7 +2,7 @@ # Resource object code # -# Created: Wed Jan 15 14:14:41 2014 +# Created: Wed Jan 29 20:45:44 2014 # by: The Resource Compiler for PyQt (Qt v4.8.1) # # WARNING! All changes made in this file will be lost! @@ -42007,132 +42007,6 @@ \x4d\x7c\x7d\x9e\x92\xcf\x94\xc6\xcf\x9d\x41\x11\x65\x72\xa7\xad\ \x56\x89\xdc\xd3\x2a\x72\xf6\xa7\x72\xc3\x92\x57\x6b\xfe\x11\xea\ \xbb\xcd\x84\xf7\x1e\xfd\x0f\xc8\x7b\xd6\xb7\ -\x00\x00\x07\xb5\ -\x00\ -\x00\x1a\x6e\x78\x9c\xed\x58\x5d\x6f\xe3\xb8\x15\x7d\xcf\xaf\x50\ -\x35\x2f\x1b\xd4\x92\xf8\x25\x8a\xf4\xc4\x59\x14\x1b\x4c\xb1\xc0\ -\x02\x05\x76\x66\xb0\xe8\xd3\x80\x96\x68\x5b\x8d\x2c\x19\x94\x1c\ -\xdb\xf9\xf5\xbd\xd4\xb7\x62\x25\x3b\x3b\x5d\xf4\xa1\x53\x3b\x89\ -\xad\x7b\x2f\x2f\xc9\xcb\xc3\xc3\xc3\xdc\xfd\x78\xde\x67\xce\x93\ -\x36\x65\x5a\xe4\x2b\x17\xfb\xc8\x75\x74\x1e\x17\x49\x9a\x6f\x57\ -\xee\xe7\x4f\x1f\x3c\xe1\x3a\x65\xa5\xf2\x44\x65\x45\xae\x57\x6e\ -\x5e\xb8\x3f\xde\xdf\xdc\xfd\xc5\xf3\x9c\x9f\x8c\x56\x95\x4e\x9c\ -\x53\x5a\xed\x9c\x9f\xf3\xc7\x32\x56\x07\xed\xfc\xb0\xab\xaa\xc3\ -\x32\x08\x4e\xa7\x93\x9f\xb6\x46\xbf\x30\xdb\xe0\xd6\xf1\xbc\xfb\ -\x9b\x9b\xbb\xf2\x69\x7b\xe3\x38\x0e\xf4\x9b\x97\xcb\x24\x5e\xb9\ -\x6d\x83\xc3\xd1\x64\x75\x60\x12\x07\x3a\xd3\x7b\x9d\x57\x65\x80\ -\x7d\x1c\xb8\x43\x78\x3c\x84\xc7\xb6\xf7\xf4\x49\xc7\xc5\x7e\x5f\ -\xe4\x65\xdd\x32\x2f\xdf\x8d\x82\x4d\xb2\xe9\xa3\xed\x68\x4e\xb4\ -\x0e\xc2\x52\xca\x00\x91\x80\x10\x0f\x22\xbc\xf2\x92\x57\xea\xec\ -\x4d\x9b\xc2\x18\xe7\x9a\x12\x84\x50\x00\xbe\x21\xf2\xeb\xa2\x96\ -\xe7\x0c\x4a\xf1\xea\x60\x6a\xef\xb8\x77\x28\xff\x01\x7e\xfb\x06\ -\x9d\xc1\x2f\x8b\xa3\x89\xf5\x06\x5a\x6a\x3f\xd7\x55\xf0\xf0\xe9\ -\xa1\x77\x7a\xc8\x4f\xaa\x64\x94\xa6\xab\xfe\xa4\xdf\xc9\x92\xe4\ -\x6a\xaf\xcb\x83\x8a\x75\x19\x74\xf6\xba\xfd\x29\x4d\xaa\xdd\xca\ -\xe5\xec\x70\xae\x9f\x77\x3a\xdd\xee\xaa\x91\x21\x4d\x56\x2e\xcc\ -\x30\x14\x04\xd7\xcf\xdd\x18\x96\x3d\x92\x90\x4f\x49\x13\xda\x26\ -\x1e\xbb\x98\xf0\xb1\x63\x64\xc4\xd1\xb4\x75\x52\xc4\x76\x48\x2b\ -\xf7\xc1\xa8\x4d\xf5\xa5\xfe\xeb\x77\x95\xec\x13\x15\xc7\xea\x70\ -\xac\xbe\xe8\x73\xa5\xf3\x26\x23\xcc\x65\x34\xb1\xda\x6d\x9b\xf9\ -\x93\x49\x8d\x40\x8e\xa7\x09\xf5\xf9\x50\x98\xca\xdb\xa4\x99\x6e\ -\xba\x0f\xf6\x3a\x49\x55\x90\xa8\x4a\x05\xff\x2c\x4c\xfa\x18\x7c\ -\x30\x5a\xff\xf4\xb7\x87\x20\x8d\x01\x6b\xc1\xc7\x47\x5d\xc5\x3b\ -\x6d\xfc\x43\xbe\x9d\x4d\x75\x4e\x0e\xb0\x7a\x2c\x9c\x75\x5e\x3a\ -\xe7\x3d\x78\xef\x12\xbd\x29\x6d\x54\x53\x54\xfb\x04\x55\xa5\xb5\ -\x0f\xbc\x80\x0c\xad\xcc\xdf\x8d\x4a\x52\xd8\x0f\x4d\xdc\x28\x63\ -\x5c\x64\x99\x8e\x61\x65\x54\x76\x52\x97\xd2\xed\x03\x20\xd5\xb4\ -\x29\xa7\x4c\xb6\x49\x21\x6d\x59\x15\x87\x2e\x16\xea\x5f\x5d\x32\ -\x98\xb5\x35\x7a\x90\xb1\x30\xcb\x77\xa8\x7e\xbd\xaf\x4d\x05\x20\ -\x24\xad\x2e\x4b\xfc\xde\x1d\xda\x14\x9b\x4d\xa9\xa1\x63\x34\xb2\ -\xd5\xa8\x80\x16\x9c\x86\xd8\x75\x82\xff\xac\x37\x34\xd7\x1b\x9e\ -\xef\x8d\xf6\xbd\xdd\x05\xd3\x69\xbf\x5d\xc6\xab\x2a\x51\x1a\x45\ -\x7f\xa8\x4a\x58\x2a\xfa\x8d\x55\x82\xbe\xe4\x1f\xac\x12\x97\x9b\ -\xcd\x57\xf4\x36\x57\x25\x4a\x05\xfe\xc6\x2a\xfd\x1e\xd8\x6a\xfa\ -\x5a\xee\x8c\x06\xba\x7d\x37\x53\xcf\xb7\xca\x2d\xe8\x90\x06\xaf\ -\x5c\x89\x60\x73\x8a\x28\xec\x8d\x17\x30\x62\x2c\x91\x3f\x36\x9e\ -\x09\x18\x09\x8f\x7c\x89\x38\x19\x42\xc9\x4c\xe8\xb6\xed\xe9\x73\ -\x9e\x56\x40\xd6\xc7\x52\x9b\x8f\x96\xf0\xfe\x91\x7f\x2e\xf5\x55\ -\xd4\x27\xa3\xf2\x12\xd8\x75\xbf\x72\xf7\xaa\x32\xe9\xf9\x07\x0f\ -\x2f\x10\xbc\xf1\x82\x00\x53\xfb\x34\xe4\x0b\x74\x3b\x94\xb1\x2f\ -\xcd\x01\xb8\xe5\x00\xb5\x81\xf3\xa8\xcb\xd9\x93\x5a\x75\xb1\x14\ -\x3c\x0d\xa5\x89\x7b\x55\xde\xa7\xc3\x97\x33\x20\xc5\x59\x3a\x94\ -\xc0\x1f\x3c\x1b\x71\x69\x22\x30\x6c\x17\xf8\x40\xb3\x31\xcf\x96\ -\xa8\xdf\x48\xd3\x8e\xc0\x03\x62\xdb\xa6\xc0\x87\x75\x1c\xc1\x3e\ -\xad\x5f\xd3\x36\xb0\x64\xa3\xb9\x01\x33\x0d\x90\xbd\xb3\x45\x53\ -\xd9\x9f\x09\x97\x9a\xa4\xc6\x7d\x4f\xbb\x80\x9d\x3e\xac\x6c\x7c\ -\xb6\xcb\x8d\xa8\xcf\xa9\x1c\x1a\xc5\x50\x20\xcc\x08\xf3\x19\xe3\ -\x43\xec\x66\x36\x76\x33\x1b\x6b\xc0\x28\xc1\x86\x38\x66\x5f\x05\ -\x10\x9f\x51\x14\x31\x29\x17\xf0\x95\x72\x14\xe2\x90\x6b\x2f\xb2\ -\x4f\x04\x91\x08\x53\xed\x89\x05\xf2\x01\xaf\x4c\x20\xc0\x11\x8f\ -\x98\x1f\x31\x21\x16\x98\x30\xe6\x13\x41\xf8\xed\x57\xa2\xb5\x29\ -\xfc\x5d\x60\xcf\x88\xfa\x5b\x0f\x31\x7b\x6a\x25\x4f\xa9\x3e\x0d\ -\x07\xc9\x5a\xf5\xf8\x3e\xa8\xad\xae\x29\x04\xea\xbd\xa9\x5f\xad\ -\x63\x5d\x98\x44\x9b\xce\xc5\xeb\xd7\xc4\xd5\xb2\x4c\xa3\x0b\x6f\ -\x5e\xa0\x08\xb2\xf6\x7e\x34\xef\x2f\x77\x2a\x29\x4e\x2b\x97\xbc\ -\x74\x3e\x17\xc5\xbe\xd6\x08\x8c\xf6\x9b\x75\x00\x0e\xac\x56\x24\ -\x6d\x5d\x09\xbf\x76\x42\x6f\x1e\x25\x21\x78\xb1\xc0\x57\xde\xa3\ -\x31\x50\x3f\x2f\x53\x17\x0d\x73\xda\x52\xca\xbb\x81\x95\xbb\xe2\ -\xb4\x35\xb6\x34\x95\x39\xea\x97\x0d\x41\x79\x1c\xad\xe2\xf4\x8e\ -\x4d\xe9\x5b\x9d\x33\x8a\xb0\x6d\xbd\xf5\xba\x38\xcf\x27\x38\xa5\ -\x39\x4c\xd5\x6b\x95\x13\x26\xe2\xaa\x20\x6d\x44\xa7\xa5\xa2\x50\ -\xbc\x12\x71\x1e\xce\x8b\x97\x2e\xbb\x14\xf2\x15\xdf\x5e\x9d\xd3\ -\x7d\xfa\xac\x13\x7b\x00\xb4\x58\xd9\xeb\x4a\x59\x15\x33\xe0\xa2\ -\xb3\xc0\x56\xe6\x9d\xc8\x00\x19\xbc\xfc\xf5\xe1\x43\x7f\x12\xc5\ -\xf1\xf2\xb7\xc2\x3c\x0e\x87\x88\x0d\x50\x6b\x10\x56\x2b\xb7\x3f\ -\x1d\xad\x74\x89\x97\x76\x2f\xa8\xea\x3e\xdd\xc3\x6a\x5b\xcd\xfb\ -\x57\x90\x9e\x80\xd0\xde\x31\x09\xb6\x4c\x38\x24\x6d\xd2\x1a\xdd\ -\x68\xda\xd9\x6b\x40\x12\xef\x53\xdb\x28\xf8\x58\xa5\x59\xf6\xb3\ -\xed\x64\x74\x62\xb6\x49\xd3\x2a\xd3\xf7\x75\x9f\xcd\xd7\x6e\x16\ -\x41\x3b\x8d\xee\xc8\x1b\xcd\xf2\x2e\xe8\xca\x50\x3f\x6d\x87\xf2\ -\xd4\xc0\xb9\x82\x55\xa6\xd6\x3a\x5b\xb9\xbf\x58\xa7\x73\xe5\xdd\ -\x9a\xe2\x78\xd8\x17\x89\x6e\x9b\x77\x65\xdd\x8e\x99\x6c\x0c\xc5\ -\x37\xa5\xe7\xae\xd8\xeb\xe0\x52\x8b\xce\x87\x16\x94\x65\xf0\x8b\ -\x5a\x07\xb5\x1a\x6e\x05\x68\x52\x2b\xe3\x4e\x7d\xce\x65\x6c\x14\ -\x28\xf5\x09\x8b\x04\x30\xd2\xab\x71\x97\x57\xe2\xaa\x2b\xa6\x03\ -\x0e\xa3\x3c\x12\x9c\xd6\x27\xe2\xf0\xe4\xc1\xa1\xeb\xe3\x30\xc4\ -\x96\x01\x29\xf3\x05\x97\x9c\xdc\x0e\x2a\xca\xc0\x21\x70\xa5\x6b\ -\xa6\xc2\x0f\xa6\x9f\x2d\x73\xb8\x5f\x82\xb8\x31\xc5\xa3\x5e\x02\ -\x4f\x01\x5f\xa3\xf6\xb1\xd9\x55\x4b\x12\xf9\x11\x11\x56\x1e\xf0\ -\xce\x61\x8f\x0f\x98\xcd\x12\x56\x20\x4f\xc6\xc6\x7f\x15\x69\x3e\ -\xb5\x02\x92\xb4\xc9\x60\x87\x54\x4b\xd6\xd9\x06\x15\xd5\x1a\x12\ -\x05\x94\x65\x8c\xba\x8c\x47\x53\x5b\x1b\x6d\x05\xaa\x74\xaf\xcc\ -\xa3\x36\x8d\xff\x29\x2d\xd3\x75\x9a\xd9\x14\xf5\xd7\x4c\xbf\x4f\ -\xd2\xf2\x00\x28\x80\xcb\x97\x1d\xc6\xfb\x02\x6e\x1d\x9b\xac\x38\ -\xf5\x7e\x58\x66\xf8\xf0\xd6\x2a\x7e\xdc\xd6\xe3\x5b\xaa\x18\x56\ -\xf9\x98\xc1\x55\xfa\x85\x6c\xb3\x85\xa3\x82\x23\x4f\x8c\x1c\x1d\ -\xc1\x08\xea\x87\x14\xd1\x91\xa7\x23\x16\x1c\x4a\x5f\x20\x22\xc7\ -\x3e\x7b\xfe\x09\x49\x7c\x49\x25\x1f\x99\x81\x4e\x22\x01\x67\x5d\ -\x48\xe8\x38\x7a\x6e\xed\x85\xe4\x98\x53\x42\x60\xe1\x19\x90\x36\ -\x61\x20\x85\xe0\xc6\x29\x98\x90\x21\x8e\x22\x30\x87\x44\xb0\x08\ -\x51\x62\xc1\x71\x3b\x16\xb6\x07\x55\xed\x46\x00\x98\xea\x22\x65\ -\x62\xf7\x4f\x41\x47\xe8\x73\x11\x31\xfc\x9d\x60\xc3\xd6\x14\xb0\ -\x41\xbc\xf1\x72\xf6\xa5\xb5\x27\x28\x85\x1d\x2a\xec\x7b\x36\x00\ -\x56\x9e\xc2\xa6\x8f\xe0\x3d\x1b\x60\x6a\xc4\xbc\x91\xc1\x5c\xe6\ -\x03\xec\x11\xe3\xc0\xfd\x9e\x72\xfb\x5e\xf4\x9d\x38\xca\xe9\xc3\ -\x17\xfd\x37\x07\x39\x18\xde\x1e\xe5\x5d\x03\xf4\x46\xd8\x38\xea\ -\xf9\x4d\xbc\x82\xb0\x92\x94\x91\x88\x2d\x08\x28\xaf\x50\x50\x19\ -\x2e\x3c\x30\xda\xfb\x81\x8c\xc0\xc8\x41\xcf\x23\x0a\x1a\x0c\x09\ -\xb0\x4a\xbc\xc0\x38\x22\x20\x47\x84\x98\x40\xf7\x9b\xb8\xcb\x9a\ -\xeb\x7b\xda\x94\xbb\x64\x48\x42\x06\x7b\xe5\xbb\xc0\x67\xc7\x5d\ -\x73\xcc\x05\xfa\x37\x04\xd2\x98\xa3\x2e\x0e\x12\x1a\x88\x4a\xbc\ -\xa0\x2e\x6e\xc1\x4c\xf1\x94\xb9\x42\x84\x40\x3e\xe3\xd1\x0d\xf0\ -\x35\xe6\x42\x04\x81\xf8\xb7\xcc\x15\x86\x21\x8f\x24\x69\x98\x0b\ -\x90\x40\x59\xcd\x5c\x0c\xa3\x08\x2e\x17\xff\x05\xe6\x9a\xc3\xc6\ -\xf7\xc9\x5c\xff\xe7\xad\xdf\xe3\x2d\x19\xc1\x8f\x98\xf2\x56\x84\ -\xa4\x84\xcb\xc5\x88\xb8\x24\x11\x3e\x03\xdd\xc5\xde\x42\xee\xab\ -\xe0\x7c\x47\x74\xc4\x01\x90\xf6\x61\x04\x9c\xfa\xd1\x1c\x33\x90\ -\x89\x4f\x3a\x2f\x92\x64\x0c\x60\xb8\xb4\x4d\x01\x8c\x89\x8f\x24\ -\x0f\x31\x1c\xff\xed\x0b\x8b\x97\x58\x5e\x1f\xab\xea\x7f\x09\xca\ -\x35\x5e\x30\xc2\x18\x36\x2f\x62\x70\x7c\xc0\x32\x20\x21\x1d\x4f\ -\x20\xa0\x37\x16\xb2\x05\xf0\x5c\x48\x64\xe4\x30\xa0\xfe\x28\xb2\ -\xb2\xd9\x41\x0b\x11\x01\xae\x30\x76\xb8\x5d\x4a\xca\x71\x6d\xf4\ -\x3a\x6b\x08\xb4\x44\xac\x98\xea\xd2\x30\xf0\xb5\x69\x9e\x1d\xe8\ -\x2f\x24\x3e\x13\x94\x8d\x52\x11\xc7\x6b\x5a\x09\x30\x36\x8d\x68\ -\xdb\x35\x6f\x9f\x79\x97\x84\x3b\x1e\x0c\x26\x44\x24\x1a\x77\x0b\ -\x19\x38\xf5\x31\x08\xc1\x17\xf0\xec\x79\x3c\x12\x63\x75\x38\xfa\ -\x07\x4f\x0e\x6b\x5b\x15\xc6\x83\x6b\xf7\x93\xaa\x8e\x46\xdb\x9b\ -\xeb\xf0\x4f\xc6\x6d\x73\xd7\x82\x8f\x3b\x7b\x37\xbc\xbf\xf9\x37\ -\x96\xc8\x9e\xfb\ \x00\x00\x08\x03\ \x00\ \x00\x1e\x37\x78\x9c\xed\x58\x5b\x8f\xa3\x46\x16\x7e\x9f\x5f\xc1\ @@ -42264,6 +42138,132 @@ \x4b\xa7\xa0\xf2\x0f\xed\x14\xf4\x17\x26\x82\x6f\x9d\xc2\x5c\xbf\ \x47\xa7\x68\x1f\xea\xdb\xa3\xf9\x69\xef\xe9\xc3\x7f\x00\xa5\x17\ \x49\xdb\ +\x00\x00\x07\xb5\ +\x00\ +\x00\x1a\x6e\x78\x9c\xed\x58\x5d\x6f\xe3\xb8\x15\x7d\xcf\xaf\x50\ +\x35\x2f\x1b\xd4\x92\xf8\x25\x8a\xf4\xc4\x59\x14\x1b\x4c\xb1\xc0\ +\x02\x05\x76\x66\xb0\xe8\xd3\x80\x96\x68\x5b\x8d\x2c\x19\x94\x1c\ +\xdb\xf9\xf5\xbd\xd4\xb7\x62\x25\x3b\x3b\x5d\xf4\xa1\x53\x3b\x89\ +\xad\x7b\x2f\x2f\xc9\xcb\xc3\xc3\xc3\xdc\xfd\x78\xde\x67\xce\x93\ +\x36\x65\x5a\xe4\x2b\x17\xfb\xc8\x75\x74\x1e\x17\x49\x9a\x6f\x57\ +\xee\xe7\x4f\x1f\x3c\xe1\x3a\x65\xa5\xf2\x44\x65\x45\xae\x57\x6e\ +\x5e\xb8\x3f\xde\xdf\xdc\xfd\xc5\xf3\x9c\x9f\x8c\x56\x95\x4e\x9c\ +\x53\x5a\xed\x9c\x9f\xf3\xc7\x32\x56\x07\xed\xfc\xb0\xab\xaa\xc3\ +\x32\x08\x4e\xa7\x93\x9f\xb6\x46\xbf\x30\xdb\xe0\xd6\xf1\xbc\xfb\ +\x9b\x9b\xbb\xf2\x69\x7b\xe3\x38\x0e\xf4\x9b\x97\xcb\x24\x5e\xb9\ +\x6d\x83\xc3\xd1\x64\x75\x60\x12\x07\x3a\xd3\x7b\x9d\x57\x65\x80\ +\x7d\x1c\xb8\x43\x78\x3c\x84\xc7\xb6\xf7\xf4\x49\xc7\xc5\x7e\x5f\ +\xe4\x65\xdd\x32\x2f\xdf\x8d\x82\x4d\xb2\xe9\xa3\xed\x68\x4e\xb4\ +\x0e\xc2\x52\xca\x00\x91\x80\x10\x0f\x22\xbc\xf2\x92\x57\xea\xec\ +\x4d\x9b\xc2\x18\xe7\x9a\x12\x84\x50\x00\xbe\x21\xf2\xeb\xa2\x96\ +\xe7\x0c\x4a\xf1\xea\x60\x6a\xef\xb8\x77\x28\xff\x01\x7e\xfb\x06\ +\x9d\xc1\x2f\x8b\xa3\x89\xf5\x06\x5a\x6a\x3f\xd7\x55\xf0\xf0\xe9\ +\xa1\x77\x7a\xc8\x4f\xaa\x64\x94\xa6\xab\xfe\xa4\xdf\xc9\x92\xe4\ +\x6a\xaf\xcb\x83\x8a\x75\x19\x74\xf6\xba\xfd\x29\x4d\xaa\xdd\xca\ +\xe5\xec\x70\xae\x9f\x77\x3a\xdd\xee\xaa\x91\x21\x4d\x56\x2e\xcc\ +\x30\x14\x04\xd7\xcf\xdd\x18\x96\x3d\x92\x90\x4f\x49\x13\xda\x26\ +\x1e\xbb\x98\xf0\xb1\x63\x64\xc4\xd1\xb4\x75\x52\xc4\x76\x48\x2b\ +\xf7\xc1\xa8\x4d\xf5\xa5\xfe\xeb\x77\x95\xec\x13\x15\xc7\xea\x70\ +\xac\xbe\xe8\x73\xa5\xf3\x26\x23\xcc\x65\x34\xb1\xda\x6d\x9b\xf9\ +\x93\x49\x8d\x40\x8e\xa7\x09\xf5\xf9\x50\x98\xca\xdb\xa4\x99\x6e\ +\xba\x0f\xf6\x3a\x49\x55\x90\xa8\x4a\x05\xff\x2c\x4c\xfa\x18\x7c\ +\x30\x5a\xff\xf4\xb7\x87\x20\x8d\x01\x6b\xc1\xc7\x47\x5d\xc5\x3b\ +\x6d\xfc\x43\xbe\x9d\x4d\x75\x4e\x0e\xb0\x7a\x2c\x9c\x75\x5e\x3a\ +\xe7\x3d\x78\xef\x12\xbd\x29\x6d\x54\x53\x54\xfb\x04\x55\xa5\xb5\ +\x0f\xbc\x80\x0c\xad\xcc\xdf\x8d\x4a\x52\xd8\x0f\x4d\xdc\x28\x63\ +\x5c\x64\x99\x8e\x61\x65\x54\x76\x52\x97\xd2\xed\x03\x20\xd5\xb4\ +\x29\xa7\x4c\xb6\x49\x21\x6d\x59\x15\x87\x2e\x16\xea\x5f\x5d\x32\ +\x98\xb5\x35\x7a\x90\xb1\x30\xcb\x77\xa8\x7e\xbd\xaf\x4d\x05\x20\ +\x24\xad\x2e\x4b\xfc\xde\x1d\xda\x14\x9b\x4d\xa9\xa1\x63\x34\xb2\ +\xd5\xa8\x80\x16\x9c\x86\xd8\x75\x82\xff\xac\x37\x34\xd7\x1b\x9e\ +\xef\x8d\xf6\xbd\xdd\x05\xd3\x69\xbf\x5d\xc6\xab\x2a\x51\x1a\x45\ +\x7f\xa8\x4a\x58\x2a\xfa\x8d\x55\x82\xbe\xe4\x1f\xac\x12\x97\x9b\ +\xcd\x57\xf4\x36\x57\x25\x4a\x05\xfe\xc6\x2a\xfd\x1e\xd8\x6a\xfa\ +\x5a\xee\x8c\x06\xba\x7d\x37\x53\xcf\xb7\xca\x2d\xe8\x90\x06\xaf\ +\x5c\x89\x60\x73\x8a\x28\xec\x8d\x17\x30\x62\x2c\x91\x3f\x36\x9e\ +\x09\x18\x09\x8f\x7c\x89\x38\x19\x42\xc9\x4c\xe8\xb6\xed\xe9\x73\ +\x9e\x56\x40\xd6\xc7\x52\x9b\x8f\x96\xf0\xfe\x91\x7f\x2e\xf5\x55\ +\xd4\x27\xa3\xf2\x12\xd8\x75\xbf\x72\xf7\xaa\x32\xe9\xf9\x07\x0f\ +\x2f\x10\xbc\xf1\x82\x00\x53\xfb\x34\xe4\x0b\x74\x3b\x94\xb1\x2f\ +\xcd\x01\xb8\xe5\x00\xb5\x81\xf3\xa8\xcb\xd9\x93\x5a\x75\xb1\x14\ +\x3c\x0d\xa5\x89\x7b\x55\xde\xa7\xc3\x97\x33\x20\xc5\x59\x3a\x94\ +\xc0\x1f\x3c\x1b\x71\x69\x22\x30\x6c\x17\xf8\x40\xb3\x31\xcf\x96\ +\xa8\xdf\x48\xd3\x8e\xc0\x03\x62\xdb\xa6\xc0\x87\x75\x1c\xc1\x3e\ +\xad\x5f\xd3\x36\xb0\x64\xa3\xb9\x01\x33\x0d\x90\xbd\xb3\x45\x53\ +\xd9\x9f\x09\x97\x9a\xa4\xc6\x7d\x4f\xbb\x80\x9d\x3e\xac\x6c\x7c\ +\xb6\xcb\x8d\xa8\xcf\xa9\x1c\x1a\xc5\x50\x20\xcc\x08\xf3\x19\xe3\ +\x43\xec\x66\x36\x76\x33\x1b\x6b\xc0\x28\xc1\x86\x38\x66\x5f\x05\ +\x10\x9f\x51\x14\x31\x29\x17\xf0\x95\x72\x14\xe2\x90\x6b\x2f\xb2\ +\x4f\x04\x91\x08\x53\xed\x89\x05\xf2\x01\xaf\x4c\x20\xc0\x11\x8f\ +\x98\x1f\x31\x21\x16\x98\x30\xe6\x13\x41\xf8\xed\x57\xa2\xb5\x29\ +\xfc\x5d\x60\xcf\x88\xfa\x5b\x0f\x31\x7b\x6a\x25\x4f\xa9\x3e\x0d\ +\x07\xc9\x5a\xf5\xf8\x3e\xa8\xad\xae\x29\x04\xea\xbd\xa9\x5f\xad\ +\x63\x5d\x98\x44\x9b\xce\xc5\xeb\xd7\xc4\xd5\xb2\x4c\xa3\x0b\x6f\ +\x5e\xa0\x08\xb2\xf6\x7e\x34\xef\x2f\x77\x2a\x29\x4e\x2b\x97\xbc\ +\x74\x3e\x17\xc5\xbe\xd6\x08\x8c\xf6\x9b\x75\x00\x0e\xac\x56\x24\ +\x6d\x5d\x09\xbf\x76\x42\x6f\x1e\x25\x21\x78\xb1\xc0\x57\xde\xa3\ +\x31\x50\x3f\x2f\x53\x17\x0d\x73\xda\x52\xca\xbb\x81\x95\xbb\xe2\ +\xb4\x35\xb6\x34\x95\x39\xea\x97\x0d\x41\x79\x1c\xad\xe2\xf4\x8e\ +\x4d\xe9\x5b\x9d\x33\x8a\xb0\x6d\xbd\xf5\xba\x38\xcf\x27\x38\xa5\ +\x39\x4c\xd5\x6b\x95\x13\x26\xe2\xaa\x20\x6d\x44\xa7\xa5\xa2\x50\ +\xbc\x12\x71\x1e\xce\x8b\x97\x2e\xbb\x14\xf2\x15\xdf\x5e\x9d\xd3\ +\x7d\xfa\xac\x13\x7b\x00\xb4\x58\xd9\xeb\x4a\x59\x15\x33\xe0\xa2\ +\xb3\xc0\x56\xe6\x9d\xc8\x00\x19\xbc\xfc\xf5\xe1\x43\x7f\x12\xc5\ +\xf1\xf2\xb7\xc2\x3c\x0e\x87\x88\x0d\x50\x6b\x10\x56\x2b\xb7\x3f\ +\x1d\xad\x74\x89\x97\x76\x2f\xa8\xea\x3e\xdd\xc3\x6a\x5b\xcd\xfb\ +\x57\x90\x9e\x80\xd0\xde\x31\x09\xb6\x4c\x38\x24\x6d\xd2\x1a\xdd\ +\x68\xda\xd9\x6b\x40\x12\xef\x53\xdb\x28\xf8\x58\xa5\x59\xf6\xb3\ +\xed\x64\x74\x62\xb6\x49\xd3\x2a\xd3\xf7\x75\x9f\xcd\xd7\x6e\x16\ +\x41\x3b\x8d\xee\xc8\x1b\xcd\xf2\x2e\xe8\xca\x50\x3f\x6d\x87\xf2\ +\xd4\xc0\xb9\x82\x55\xa6\xd6\x3a\x5b\xb9\xbf\x58\xa7\x73\xe5\xdd\ +\x9a\xe2\x78\xd8\x17\x89\x6e\x9b\x77\x65\xdd\x8e\x99\x6c\x0c\xc5\ +\x37\xa5\xe7\xae\xd8\xeb\xe0\x52\x8b\xce\x87\x16\x94\x65\xf0\x8b\ +\x5a\x07\xb5\x1a\x6e\x05\x68\x52\x2b\xe3\x4e\x7d\xce\x65\x6c\x14\ +\x28\xf5\x09\x8b\x04\x30\xd2\xab\x71\x97\x57\xe2\xaa\x2b\xa6\x03\ +\x0e\xa3\x3c\x12\x9c\xd6\x27\xe2\xf0\xe4\xc1\xa1\xeb\xe3\x30\xc4\ +\x96\x01\x29\xf3\x05\x97\x9c\xdc\x0e\x2a\xca\xc0\x21\x70\xa5\x6b\ +\xa6\xc2\x0f\xa6\x9f\x2d\x73\xb8\x5f\x82\xb8\x31\xc5\xa3\x5e\x02\ +\x4f\x01\x5f\xa3\xf6\xb1\xd9\x55\x4b\x12\xf9\x11\x11\x56\x1e\xf0\ +\xce\x61\x8f\x0f\x98\xcd\x12\x56\x20\x4f\xc6\xc6\x7f\x15\x69\x3e\ +\xb5\x02\x92\xb4\xc9\x60\x87\x54\x4b\xd6\xd9\x06\x15\xd5\x1a\x12\ +\x05\x94\x65\x8c\xba\x8c\x47\x53\x5b\x1b\x6d\x05\xaa\x74\xaf\xcc\ +\xa3\x36\x8d\xff\x29\x2d\xd3\x75\x9a\xd9\x14\xf5\xd7\x4c\xbf\x4f\ +\xd2\xf2\x00\x28\x80\xcb\x97\x1d\xc6\xfb\x02\x6e\x1d\x9b\xac\x38\ +\xf5\x7e\x58\x66\xf8\xf0\xd6\x2a\x7e\xdc\xd6\xe3\x5b\xaa\x18\x56\ +\xf9\x98\xc1\x55\xfa\x85\x6c\xb3\x85\xa3\x82\x23\x4f\x8c\x1c\x1d\ +\xc1\x08\xea\x87\x14\xd1\x91\xa7\x23\x16\x1c\x4a\x5f\x20\x22\xc7\ +\x3e\x7b\xfe\x09\x49\x7c\x49\x25\x1f\x99\x81\x4e\x22\x01\x67\x5d\ +\x48\xe8\x38\x7a\x6e\xed\x85\xe4\x98\x53\x42\x60\xe1\x19\x90\x36\ +\x61\x20\x85\xe0\xc6\x29\x98\x90\x21\x8e\x22\x30\x87\x44\xb0\x08\ +\x51\x62\xc1\x71\x3b\x16\xb6\x07\x55\xed\x46\x00\x98\xea\x22\x65\ +\x62\xf7\x4f\x41\x47\xe8\x73\x11\x31\xfc\x9d\x60\xc3\xd6\x14\xb0\ +\x41\xbc\xf1\x72\xf6\xa5\xb5\x27\x28\x85\x1d\x2a\xec\x7b\x36\x00\ +\x56\x9e\xc2\xa6\x8f\xe0\x3d\x1b\x60\x6a\xc4\xbc\x91\xc1\x5c\xe6\ +\x03\xec\x11\xe3\xc0\xfd\x9e\x72\xfb\x5e\xf4\x9d\x38\xca\xe9\xc3\ +\x17\xfd\x37\x07\x39\x18\xde\x1e\xe5\x5d\x03\xf4\x46\xd8\x38\xea\ +\xf9\x4d\xbc\x82\xb0\x92\x94\x91\x88\x2d\x08\x28\xaf\x50\x50\x19\ +\x2e\x3c\x30\xda\xfb\x81\x8c\xc0\xc8\x41\xcf\x23\x0a\x1a\x0c\x09\ +\xb0\x4a\xbc\xc0\x38\x22\x20\x47\x84\x98\x40\xf7\x9b\xb8\xcb\x9a\ +\xeb\x7b\xda\x94\xbb\x64\x48\x42\x06\x7b\xe5\xbb\xc0\x67\xc7\x5d\ +\x73\xcc\x05\xfa\x37\x04\xd2\x98\xa3\x2e\x0e\x12\x1a\x88\x4a\xbc\ +\xa0\x2e\x6e\xc1\x4c\xf1\x94\xb9\x42\x84\x40\x3e\xe3\xd1\x0d\xf0\ +\x35\xe6\x42\x04\x81\xf8\xb7\xcc\x15\x86\x21\x8f\x24\x69\x98\x0b\ +\x90\x40\x59\xcd\x5c\x0c\xa3\x08\x2e\x17\xff\x05\xe6\x9a\xc3\xc6\ +\xf7\xc9\x5c\xff\xe7\xad\xdf\xe3\x2d\x19\xc1\x8f\x98\xf2\x56\x84\ +\xa4\x84\xcb\xc5\x88\xb8\x24\x11\x3e\x03\xdd\xc5\xde\x42\xee\xab\ +\xe0\x7c\x47\x74\xc4\x01\x90\xf6\x61\x04\x9c\xfa\xd1\x1c\x33\x90\ +\x89\x4f\x3a\x2f\x92\x64\x0c\x60\xb8\xb4\x4d\x01\x8c\x89\x8f\x24\ +\x0f\x31\x1c\xff\xed\x0b\x8b\x97\x58\x5e\x1f\xab\xea\x7f\x09\xca\ +\x35\x5e\x30\xc2\x18\x36\x2f\x62\x70\x7c\xc0\x32\x20\x21\x1d\x4f\ +\x20\xa0\x37\x16\xb2\x05\xf0\x5c\x48\x64\xe4\x30\xa0\xfe\x28\xb2\ +\xb2\xd9\x41\x0b\x11\x01\xae\x30\x76\xb8\x5d\x4a\xca\x71\x6d\xf4\ +\x3a\x6b\x08\xb4\x44\xac\x98\xea\xd2\x30\xf0\xb5\x69\x9e\x1d\xe8\ +\x2f\x24\x3e\x13\x94\x8d\x52\x11\xc7\x6b\x5a\x09\x30\x36\x8d\x68\ +\xdb\x35\x6f\x9f\x79\x97\x84\x3b\x1e\x0c\x26\x44\x24\x1a\x77\x0b\ +\x19\x38\xf5\x31\x08\xc1\x17\xf0\xec\x79\x3c\x12\x63\x75\x38\xfa\ +\x07\x4f\x0e\x6b\x5b\x15\xc6\x83\x6b\xf7\x93\xaa\x8e\x46\xdb\x9b\ +\xeb\xf0\x4f\xc6\x6d\x73\xd7\x82\x8f\x3b\x7b\x37\xbc\xbf\xf9\x37\ +\x96\xc8\x9e\xfb\ \x00\x00\x15\x1c\ \x3c\ \x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\ @@ -44874,6 +44874,116 @@ \x63\x63\x75\x6d\x75\x6c\x61\x74\x65\x22\x20\x2f\x3e\x0a\x20\x20\ \x20\x20\x3c\x2f\x67\x3e\x0a\x20\x20\x3c\x2f\x67\x3e\x0a\x3c\x2f\ \x73\x76\x67\x3e\x0a\ +\x00\x00\x06\xb5\ +\x00\ +\x00\x21\xf7\x78\x9c\xd5\x59\x4b\x73\xdb\x36\x10\xbe\xfb\x57\xb0\ +\xcc\x25\x9e\x8a\x20\xde\x0f\x55\x72\x0e\xe9\xb4\x93\x43\xa7\x33\ +\x4d\x32\x3d\xd3\x14\x29\xb1\x91\x48\x0d\x49\xc7\x56\x7f\x7d\x17\ +\x94\x48\x51\x11\x6d\xc8\x1e\xc6\x93\x0a\x07\x01\x8b\x05\x17\xd8\ +\xfd\x76\xb1\x4b\xce\xde\x3d\x6c\xd6\xde\xd7\xa4\xac\xb2\x22\x9f\ +\xfb\x04\x61\xdf\x4b\xf2\xb8\x58\x64\xf9\x72\xee\x7f\xfe\xf4\x5b\ +\xa0\x7d\xaf\xaa\xa3\x7c\x11\xad\x8b\x3c\x99\xfb\x79\xe1\xbf\xbb\ +\xb9\x9a\xfd\x14\x04\xde\xfb\x32\x89\xea\x64\xe1\xdd\x67\xf5\xca\ +\xfb\x90\x7f\xa9\xe2\x68\x9b\x78\x6f\x57\x75\xbd\x9d\x86\xe1\xfd\ +\xfd\x3d\xca\x0e\x44\x54\x94\xcb\xf0\xda\x0b\x82\x9b\xab\xab\x59\ +\xf5\x75\x79\xe5\x79\x1e\xc8\xcd\xab\xe9\x22\x9e\xfb\x87\x05\xdb\ +\xbb\x72\xdd\x30\x2e\xe2\x30\x59\x27\x9b\x24\xaf\xab\x90\x20\x12\ +\xfa\x47\xf6\xf8\xc8\x1e\x5b\xe9\xd9\xd7\x24\x2e\x36\x9b\x22\xaf\ +\x9a\x95\x79\xf5\xa6\xc7\x5c\x2e\xd2\x8e\xdb\xee\xe6\x9e\x35\x4c\ +\xc4\x18\x13\x62\x1a\x52\x1a\x00\x47\x50\xed\xf2\x3a\x7a\x08\x4e\ +\x97\xc2\x1e\x87\x96\x52\x8c\x71\x08\x73\x47\xce\xcb\xb8\xa6\x0f\ +\x6b\x50\xc5\xa3\x9b\x69\x66\x1b\xee\x9e\x21\x48\x43\xb8\xcf\x16\ +\xf5\x6a\xee\x4b\xde\x8c\x56\x49\xb6\x5c\xd5\xdd\x30\x5b\xcc\x7d\ +\x90\xc3\x24\xa1\xfe\x0d\x10\x66\x8b\x24\xad\xec\xc4\x7e\xca\x8e\ +\x60\x8e\x37\x73\x30\x0b\x52\x92\xa8\xfc\xbd\x8c\x16\x19\xe8\x76\ +\xcf\xb7\xe7\x3c\x9d\x61\x84\xf3\x40\x1e\x56\xc1\xba\xaa\x2e\xb6\ +\x2d\xf7\x41\x28\x50\x80\x4b\x06\xc6\x3f\x4e\x54\xf5\x6e\x9d\xec\ +\xe7\x82\xb8\x58\x17\xe5\xf4\x4d\xda\xfc\x7e\x69\x48\xc5\x36\x8a\ +\xb3\x7a\x37\x25\xbd\x25\x45\x9a\x56\x09\x9c\x07\x40\x17\xba\xc5\ +\xe9\x80\x3e\x5f\x1c\x1e\x10\x47\x3a\x71\xb3\xf0\xf4\xe8\xcf\xd5\ +\x94\xc2\xc4\xa9\x27\x85\xd9\xeb\x69\x49\x61\xf1\x4a\x3a\xb2\xa3\ +\x68\xfd\xad\x8e\xe2\x87\xb9\x4f\xa9\x40\x54\x72\x7c\xb4\x56\xbc\ +\x03\xcc\x2a\x8a\x94\x51\x4c\x76\xd4\x72\xee\x33\x8e\x18\x17\x44\ +\xeb\x8e\x98\x0e\x3e\x20\x1d\x7c\x80\x3d\xf5\xe9\x36\x98\xec\x3d\ +\xaa\x71\xab\xe9\xaa\x4c\x20\x0c\xbc\x19\x84\x78\xcb\xb9\x3c\x90\ +\x3f\xe7\x59\x0d\x2e\x7d\x57\x25\xe5\x47\xd0\x4d\xf2\x67\xfe\xb9\ +\x4a\xce\xb8\x3e\x95\x51\x5e\xa5\x45\xb9\x99\xfb\x9b\xa8\x2e\xb3\ +\x87\xb7\x64\x82\x6d\x43\xd2\x68\x41\x0d\x87\x3e\xc5\x14\x69\xaa\ +\x25\xbb\x3e\xea\xf1\x19\xa8\xd2\x6e\x54\x11\xfc\x8a\xa8\x22\x3f\ +\x9c\xe7\x69\xc9\x03\x1c\x60\xa7\x9e\xb4\x94\x81\x08\xd4\xd3\xdb\ +\xc7\x92\x98\x18\x8f\xa3\x2b\x2d\x75\xa0\x7a\xd8\x1a\x14\xc8\x94\ +\x89\xd3\x5b\xb7\xc0\xf1\xf4\xc5\x94\x72\xea\x0a\x76\xe5\x32\x73\ +\x14\xe1\x91\xf4\xc4\x34\x71\x08\x8b\xd2\x94\xbe\xaa\x8e\x1a\x4c\ +\x5d\x86\xa8\x57\xc6\xd3\x0f\x86\x26\x81\xb9\x33\x42\x09\x2c\x1c\ +\x11\x0a\x37\x3f\x77\xd0\xb8\x40\x4b\x20\xcc\xe1\x71\x43\xc2\x06\ +\x4d\x82\xc4\x45\xe2\x1c\x01\xf1\xd2\xb3\x8d\x08\x5e\x4e\x20\x20\ +\x32\x37\x7c\x39\x0b\x48\xe0\x48\x49\x46\x05\x30\x17\xb0\x31\xfd\ +\x4a\x10\x7e\x22\x2d\xc1\x48\x1b\x8a\xcd\x31\xc6\xd9\xb4\x84\x10\ +\x8e\x84\xd4\xbc\x9f\x95\x40\xf6\xd1\x83\x53\x3a\xb8\x36\x1d\x5a\ +\x6b\xcf\x1c\x65\xcb\x72\x41\xcf\x92\x86\xe1\xd4\xc2\xa1\x3b\x22\ +\x84\x74\xe0\x3a\xc5\xb6\x8d\x62\x29\x2b\xcd\x61\x26\x13\xd9\xf6\ +\x3c\x33\x9d\x5a\xe4\x85\x66\x92\x56\xd3\xca\xf4\x52\xc2\x83\x9d\ +\xd4\x05\x76\x3a\x5f\xdc\x19\x8a\x8d\x66\x28\xe5\xca\xf2\x47\x35\ +\x94\x72\xdc\x40\xa3\x19\xea\xd2\xf8\x43\x00\xa9\xd4\xad\x26\x29\ +\xb9\x43\x4d\xe3\xa5\xad\x56\x9a\xcb\x7b\xb4\x6d\xdf\x35\xec\x30\ +\x86\x0c\xec\x43\x9d\xe2\x99\x09\x04\x95\x8c\x21\x27\xd5\x90\x96\ +\x08\x52\x7f\x2e\x4e\x20\x7d\xbe\x3e\x1d\x5c\x7f\x5e\x0c\x71\xde\ +\xbb\xa5\x9e\x28\x86\xa8\x30\x17\x7a\x81\xbb\x12\xc2\xb0\x59\xcc\ +\x0d\x35\xaa\x29\x89\x08\xc2\x9c\x10\x46\x27\x81\xa0\x08\x6a\x2e\ +\xca\xcd\x24\x50\x50\x1b\x31\x46\x84\x7e\x41\x6d\x64\xf7\xea\x30\ +\x3b\x95\xae\xca\x28\xb2\x6d\x14\x88\x51\xe9\x48\x62\x6f\x9b\xdf\ +\x77\x05\x98\x86\x42\x93\x73\xf2\x0d\xbe\x90\x12\x92\x50\x2d\xfa\ +\xf8\x62\x0a\xa8\x44\x11\x76\x02\xb0\xb3\xf5\xe9\xe0\xfa\x41\x7c\ +\xf1\x8b\xf0\x25\xc7\xc5\x97\xa6\xaa\x87\x2f\x46\x95\x54\x93\x80\ +\x6b\x04\x11\x5e\x9a\x06\x5f\x04\x49\x2d\xc8\x4b\x6a\x6f\xbb\x57\ +\x97\xcd\x95\x03\x5f\x11\xb3\x6d\x1c\x7c\x29\x07\xbe\x78\x6c\xdb\ +\x2b\xa6\xfe\x1c\x1b\xe1\xd2\x10\xf0\xb8\x0a\x6e\x2c\x6e\x47\x8a\ +\xf2\xbc\x7f\xdb\x0f\x0a\x8b\x49\xc2\x52\xf5\xdd\x74\xf4\x40\xc0\ +\x5d\x0c\x47\x44\xa8\x5e\x2a\xb8\x03\x2a\xd1\x02\x11\x86\x7b\x4e\ +\x42\xe7\x3e\x67\x1c\x42\xb7\xe1\x47\x0d\xed\x80\x4a\x38\x46\x94\ +\x2a\x46\xfc\x27\x54\x4f\x05\xbb\xc4\xdf\x20\xca\xaa\x31\x1d\x8e\ +\x53\x46\x34\x95\x87\x77\x5c\xdd\x90\x42\x8c\xa0\x4a\x40\x44\xb7\ +\x11\x44\xc2\xe6\xe4\x0b\x1c\xae\xd9\xac\xcb\xc4\x70\x6d\x3c\x6d\ +\x62\x9a\x68\x8a\x2f\x30\xf1\x25\x78\xa2\xc2\xe1\x73\x82\xa6\xe9\ +\x25\xa5\xe4\xff\xf3\x15\x2a\x67\x44\x5d\x82\xb2\xe6\x15\xaa\x1e\ +\x0d\x67\x23\xbf\x42\xdd\x6f\xee\xa2\x4f\x18\xae\x14\x71\xe4\x6f\ +\x18\x2f\xc8\x7f\x9f\xff\xe2\x60\x16\xda\x8f\x3f\x4d\x6f\x93\xd4\ +\xd1\x22\xaa\xa3\xab\x6e\x2b\x2d\x85\x49\xd2\xba\xde\xac\x5c\xa4\ +\xd3\xbf\x7e\xfd\xad\x3b\x40\x1c\x4f\xff\x2e\xca\x2f\x47\xb9\x96\ +\x21\xba\x2d\xee\x40\x74\xa7\x56\xfb\xc5\x29\x9e\x5a\x33\x46\xf5\ +\x4d\xb6\x89\x96\x89\xfd\xec\xf5\xf3\xc3\x66\x0d\xf2\xbb\x89\x13\ +\xe6\x7a\xb7\x4d\x8e\x0f\xdd\x3f\xb6\x4c\xaa\xe2\xae\x8c\x93\xc1\ +\x2f\x81\x8b\x78\x93\xd9\x45\xe1\xc7\x3a\x5b\xaf\x3f\x58\x21\x3d\ +\x45\x1f\x1e\x9a\xd5\xeb\xe4\xa6\x91\xb9\xef\xb6\xa7\x08\x0f\xc7\ +\xe8\x2a\x9c\xe3\x29\x67\x61\xab\x86\x66\xb4\x3c\xaa\x67\x1d\xed\ +\x92\xb2\xfd\xac\x33\xdb\x46\xf5\xaa\x15\x06\x93\x7f\x78\x0a\x61\ +\x63\xdb\x44\x20\x4d\x9a\xe6\xbd\xf7\x08\x78\x1b\x04\x43\xaa\x01\ +\xb5\xcd\x80\x10\xc1\xf4\x04\x92\x12\xae\x05\xc3\xd4\x63\x90\x92\ +\x30\x68\xdc\xd2\x6c\x87\x29\x0f\x7a\x58\x12\x62\x2c\x89\x42\x02\ +\xa6\x68\x43\xb2\x3f\x32\x21\x06\x32\x30\x68\xd2\x13\x12\x35\x72\ +\xac\x44\xc8\xb8\x6c\xf3\xd6\x1e\xf8\xca\x89\x13\xdb\x7d\x82\xe7\ +\x1e\xe3\xe4\x01\x5b\x29\x68\x6d\x9a\x17\x79\x02\x90\x2a\x8b\x2f\ +\x49\xef\xd5\x94\x1d\x06\xcd\x07\xc6\x29\x6d\x87\x16\x4a\x71\xb4\ +\x9d\xde\xde\xd5\x75\x9f\xf6\x4f\x91\xe5\x53\xb0\x44\x52\xb6\xd4\ +\x66\xb0\xce\xe0\x6f\xca\x5b\x5a\xe7\x1f\x2d\x61\x11\x55\xab\xa8\ +\x2c\xa3\x5d\xb3\x85\x23\x64\x97\xed\x2e\xeb\xa1\x0b\xc7\x18\xad\ +\x29\xe8\x12\x23\x0c\x6a\xe4\x4c\x40\x7e\xd7\xeb\xf7\x38\x02\x82\ +\xed\x2d\xc4\xa4\xed\x2a\x83\x34\x86\x7c\xf0\xfa\x44\x31\x4b\x08\ +\x68\xbd\xc2\x74\x79\x44\xdf\xb9\x6c\x90\x62\x0d\x27\x38\x6f\x04\ +\x1a\x30\x80\x06\x4b\xf7\xba\x3d\x0e\xa3\x11\x94\x65\xf0\x9b\x30\ +\x30\x96\x86\x3d\xa8\x6b\xff\xd4\xe9\x97\x70\x73\xe9\xbe\xbb\xf4\ +\xd1\x74\x40\xd4\xc6\xa3\x1c\x8a\x39\xc2\xe1\x38\x52\x58\xe8\x18\ +\xe6\x45\x16\x09\x02\x88\x6c\xd2\x76\x3c\x00\x16\xb4\xc0\x28\x64\ +\x79\xe1\x3a\x7e\x94\xa7\xc7\xf2\xaf\xdf\x17\xd7\x02\x05\xee\x38\ +\x7c\x32\xd1\x07\x0b\x00\x84\x6b\x08\x41\x76\x70\x66\xd1\x61\xf8\ +\x08\xab\x78\x0b\x5b\x33\x06\x3a\x9e\xd0\x94\x30\x48\x62\x43\xc9\ +\xa4\xbb\xc9\x40\x55\x87\x1b\xd0\xd8\x8c\xc4\x18\x42\x28\x6f\x75\ +\x25\xc1\x44\x06\x83\x23\xe2\xc7\x99\x7a\x3c\xa7\xca\x1a\x82\xa6\ +\xad\x2a\x30\x65\x16\x06\x82\x72\x09\xd9\xcf\xa4\xdf\xeb\xa6\x19\ +\xb3\x4f\x95\x86\x4e\x28\x81\xcc\xd0\x30\xaa\xaf\x1f\xb3\x04\x7d\ +\xd4\x12\x10\x06\xdf\xbe\x39\xbf\x9d\xaf\x1f\x31\xcd\x37\x4a\x9c\ +\x85\xcb\x36\xee\x2d\xf7\x11\x0f\xfe\x66\x36\x42\xdf\x5c\xfd\x07\ +\x95\x3e\xf7\x52\ \x00\x00\x12\x3b\ \x3c\ \x3f\x78\x6d\x6c\x20\x76\x65\x72\x73\x69\x6f\x6e\x3d\x22\x31\x2e\ @@ -51747,6 +51857,126 @@ \xd3\xfd\x23\x03\x22\xa4\x3b\xbc\x9a\xf2\x54\xbe\xb6\x6d\x12\xb6\ \xd9\x76\xbb\xad\x7e\xd5\xdf\x51\x28\xd4\x3d\xa1\xef\x1b\xef\xdf\ \xfc\x1f\x48\xa4\xe7\x17\ +\x00\x00\x07\x5d\ +\x00\ +\x00\x26\x26\x78\x9c\xed\x59\x4b\x73\xe3\xb8\x11\xbe\xfb\x57\x30\ +\x9c\xcb\xb8\x56\xa4\xf0\x7e\x68\x24\xef\x61\x53\x9b\xda\x43\x2a\ +\x55\xbb\x3b\x95\x33\x4c\x81\x32\x63\x8a\x54\x91\xf4\x43\xfb\xeb\ +\xd3\x80\x24\x8a\x1a\xd1\xa6\xec\x70\x9c\x4d\x55\x84\x83\xf0\x68\ +\xb0\x81\xaf\xbf\x6e\x34\xc8\xf9\x8f\xcf\xeb\x3c\x78\xb4\x55\x9d\ +\x95\xc5\x22\xc4\x31\x0a\x03\x5b\x24\xe5\x32\x2b\x56\x8b\xf0\xeb\ +\xef\x3f\x47\x2a\x0c\xea\xc6\x14\x4b\x93\x97\x85\x5d\x84\x45\x19\ +\xfe\x78\x73\x35\xff\x4b\x14\x05\x3f\x55\xd6\x34\x76\x19\x3c\x65\ +\xcd\x5d\xf0\x4b\x71\x5f\x27\x66\x63\x83\xcf\x77\x4d\xb3\x99\x4d\ +\xa7\x4f\x4f\x4f\x71\xb6\xef\x8c\xcb\x6a\x35\xbd\x0e\xa2\xe8\xe6\ +\xea\x6a\x5e\x3f\xae\xae\x82\x20\x00\xbd\x45\x3d\x5b\x26\x8b\x70\ +\x3f\x61\xf3\x50\xe5\x5e\x70\x99\x4c\x6d\x6e\xd7\xb6\x68\xea\x29\ +\x8e\xf1\x34\x3c\x8a\x27\x47\xf1\xc4\x69\xcf\x1e\x6d\x52\xae\xd7\ +\x65\x51\xfb\x99\x45\xfd\xa9\x23\x5c\x2d\xd3\x56\xda\xad\xe6\x89\ +\x7a\x21\xac\xb5\x9e\x22\x32\x25\x24\x02\x89\xa8\xde\x16\x8d\x79\ +\x8e\x4e\xa7\xc2\x1a\xfb\xa6\x12\x84\xd0\x14\xc6\x8e\x92\x97\x49\ +\xcd\x9e\x73\x80\xe2\xc5\xc5\xf8\x51\x2f\xdd\x31\x04\xf6\x1d\x4f\ +\xd9\xb2\xb9\x5b\x84\x82\xf9\xd6\x9d\xcd\x56\x77\x4d\xdb\xcc\x96\ +\x8b\x10\xf4\x50\x81\x49\x78\x03\x1d\xf3\xa5\x4d\x6b\x37\xb0\x1b\ +\x72\x2d\x18\x63\x7e\x0c\x46\x41\x8b\x35\xd5\xdf\x2a\xb3\xcc\x00\ +\xdb\x9d\xdc\x4e\xf2\x74\x84\x62\xc6\x22\xb1\x9f\x05\xf3\xea\xa6\ +\xdc\x1c\xa4\xf7\x4a\xa1\x07\xa4\x44\xa4\xc3\xe3\x40\xdd\x6c\x73\ +\xbb\x1b\x8b\x92\x32\x2f\xab\xd9\xa7\xd4\xff\xbe\xf8\xae\x72\x63\ +\x92\xac\xd9\xce\x70\x67\x4a\x99\xa6\xb5\x85\xfd\x00\xe9\xa6\xc3\ +\xea\x54\x44\xde\xae\x0e\xf5\xa8\xc3\xad\xba\xf9\xf4\x74\xeb\x6f\ +\x45\x4a\x22\x3c\x88\x93\x44\xf4\xe3\x50\x92\x88\x7f\x10\x46\xae\ +\x65\xf2\x6f\x31\x4a\x9e\x17\x21\x21\x3c\x26\x82\xa1\xa3\xb5\x92\ +\x2d\x70\x56\x92\x58\x6a\x49\x45\xdb\x5b\x2d\x42\xca\x62\xca\x38\ +\x56\xaa\xed\x4c\x7b\x1f\x90\xf6\x3e\xc0\xed\xfa\x74\x19\x54\x74\ +\x1e\xe5\xdd\x6a\x76\x57\x59\x08\x03\x9f\x7a\x29\x7e\x90\x5c\xed\ +\xbb\xbf\x16\x59\x03\x2e\xfd\x50\xdb\xea\x37\xc0\xc6\xfe\xa3\xf8\ +\x5a\xdb\x33\xa9\xdf\x2b\x53\xd4\x69\x59\xad\x17\xe1\xda\x34\x55\ +\xf6\xfc\x19\x4f\x90\x2b\xb1\xd0\x8a\x13\xcd\xa0\x4e\x10\x89\x15\ +\x51\x82\x5e\x1f\x71\x7c\x03\xab\xd4\x30\xab\x30\xfa\x40\x56\xe1\ +\x3f\x9d\xe7\x29\xc1\x22\x14\xa1\x41\x9c\x94\x10\x11\x8f\xe4\xeb\ +\xcb\x47\x02\xeb\x04\x8d\x83\x95\x12\x2a\x92\x1d\x6e\xf5\x2a\xa4\ +\x52\x27\xe9\xed\xb0\xc2\xf1\xf0\xa2\x52\x0e\x62\x05\xab\x1a\x32\ +\xb3\x31\x68\x24\x9c\xa8\xc2\x03\xca\x4c\x9a\x92\x0f\xc5\xc8\x73\ +\xea\x32\x46\x7d\x30\x9f\xfe\x64\x6c\xe2\x88\x0d\x46\x28\x8e\xf8\ +\x40\x84\x42\xfe\x37\x1c\x34\x2e\x40\x09\x94\x0d\x78\x5c\x9f\xb2\ +\x5e\x93\xc4\xfc\x22\x75\x03\x01\xf1\xd2\xbd\x8d\x48\x5e\x86\x21\ +\x20\xd2\x61\xfa\x32\x1a\xe1\x68\x20\x25\x19\x95\xc0\x8c\xc3\xc2\ +\xd4\x07\x51\xf8\x95\xb4\x04\xc5\x4a\x13\xa4\x8f\x31\xce\xa5\x25\ +\x18\xb3\x98\x0b\xc5\xba\x59\x09\x64\x1f\x1d\x3a\xa5\xbd\x73\xd3\ +\xbe\xb9\x6e\xcf\x26\x5b\x55\x4b\x72\x96\x34\xf4\xa7\x16\x03\xd8\ +\x61\xce\xc5\x00\xaf\x53\xe4\xca\x28\x96\x72\xda\x06\xcc\xa4\x8d\ +\x2b\x6f\x33\xd3\xa9\x45\xde\x69\x26\xe1\x90\x96\xba\x93\x12\xee\ +\xed\x24\x2f\xb0\xd3\xf9\xe4\xd6\x50\x74\x34\x43\xc9\xa1\x2c\x7f\ +\x54\x43\xc9\x81\x13\x68\x34\x43\x5d\x1a\x7f\x30\x30\x95\x0c\xc3\ +\x24\x04\x1b\x80\x69\xbc\xb4\xd5\x69\x1b\xf2\x1e\xe5\xca\x77\x0d\ +\x3b\x94\xc6\x1a\xd6\x21\x4f\xf9\x4c\x79\x0c\x37\x19\x8d\x4f\x6e\ +\x43\x4a\xc4\x90\xfa\x33\x7e\x42\xe9\xf3\xf9\x69\xef\xfc\xf3\xcb\ +\x10\x63\x9d\x53\xea\x95\xcb\x10\xe1\xfa\x42\x2f\x18\xbe\x09\x21\ +\x58\x2c\x62\x9a\x68\xe9\xaf\x44\x38\x46\x0c\x63\x4a\x26\x11\x27\ +\x31\xdc\xb9\x08\xd3\x93\x48\xc2\xdd\x88\x52\xcc\xd5\x3b\xee\x46\ +\x6e\xad\x03\x66\x27\x62\xe8\x66\x64\x5c\x19\x85\x62\x44\x0c\x24\ +\xb1\xb7\xfe\xf7\x5d\x09\xa6\xe0\xa2\xc9\x18\xfe\x86\x5f\xb1\xe4\ +\x02\x13\xc5\xbb\xfc\xa2\x12\x7a\xb1\xc4\xf4\x84\x60\x67\xf3\xd3\ +\xde\xf9\xbd\xfc\x62\x17\xf1\x4b\x8c\xcb\x2f\x45\x64\x87\x5f\x94\ +\x48\x21\x27\x11\x53\x31\x44\x78\xa1\x3d\xbf\x70\x2c\x14\xc7\xef\ +\xb9\x7b\xbb\xb5\x0e\xd9\x5c\x0e\xf0\xcb\x50\x57\xc6\xe1\x97\x1c\ +\xe0\x17\x4b\x5c\xf9\xc0\xd4\x9f\x21\xcd\x87\x10\x02\x99\xa1\x0b\ +\x37\xe2\xb7\x23\x45\x79\xd6\x3d\xed\x7b\x95\x25\xd8\xd2\x54\x7e\ +\x37\x8c\x9e\x31\xb8\x8b\x66\x31\xe6\xb2\x93\x0a\x6e\xa1\x17\x2b\ +\x1e\x63\x8a\x3a\x4e\x42\x16\x21\xa3\x0c\x42\xb7\x66\x47\x84\xb6\ +\xd0\x8b\x19\x8a\x09\x91\x14\x87\xaf\x40\x4f\x38\xbd\xc4\xdf\x20\ +\xca\xca\x31\x1d\x8e\x11\x8a\x15\x11\xfb\x77\x5c\x6d\x93\x40\x8c\ +\x20\x92\x43\x44\x77\x11\x44\xc0\xe2\xc4\x3b\x1c\xce\x2f\x76\xc8\ +\xc4\x70\x6c\xbc\x6e\x62\x62\x15\x41\x17\x98\xf8\x12\x3e\x11\x3e\ +\xe0\x73\x9c\xa4\xe9\x25\x57\xc9\xff\xcd\x57\xa8\x8c\x62\x79\x09\ +\xcb\xfc\x2b\x54\x35\x1a\xcf\x46\x7e\x85\xba\x5b\xdc\x45\x9f\x30\ +\x86\x52\xc4\x91\xbf\x61\xbc\x23\xff\x7d\xfb\x8b\x83\xf9\xd4\x7d\ +\xfc\xf1\xb5\xb5\x6d\xcc\xd2\x34\xe6\xaa\x5d\xca\xa1\x87\x0a\x7c\ +\x70\xbd\x79\xb5\x4c\x67\xbf\xfe\xf5\xe7\x76\x03\x49\x32\xfb\x67\ +\x59\xdd\x1f\xf5\x3a\x01\x73\x5b\x3e\x80\xea\x16\x56\xf7\xc5\x29\ +\x99\x39\x33\x9a\xe6\x26\x5b\x9b\x95\x75\x9f\xbd\x7e\x78\x5e\xe7\ +\xa0\xbf\x1d\x38\x11\x6e\xb6\x1b\x7b\x7c\xe8\xee\xb1\x95\xad\xcb\ +\x87\x2a\xb1\xbd\x5f\x02\x97\xc9\x3a\x73\x93\xa6\xbf\x35\x59\x9e\ +\xff\xe2\x94\x74\x80\xde\x3f\x34\x6b\x72\x7b\xe3\x75\xee\xaa\x87\ +\x5d\x4c\xf7\xdb\x68\x6f\x38\xc7\x5d\xce\xa7\x07\x18\x7c\x6b\x75\ +\x84\x27\x37\x5b\x5b\x1d\x3e\xeb\xcc\x37\xa6\xb9\x3b\x28\x83\xc1\ +\xbf\x07\x32\x46\xda\x95\x09\x8f\x15\xf6\x25\xf8\x29\xc0\xe0\x6d\ +\x10\x0c\x89\x02\xd6\xfa\x06\xc6\x9c\xaa\x09\x24\x25\x4c\x71\x8a\ +\x48\x40\x21\x25\xa1\x50\x98\xeb\x73\x15\x2a\x03\xa8\x21\x81\xb1\ +\x76\x5d\x04\x12\x30\x49\x7c\x97\xfb\xe1\x09\xd6\x90\x81\x41\x11\ +\x01\x17\xb1\xd7\xe3\x34\x42\xc6\xe5\x4a\x90\x07\xe0\x2b\x27\x4e\ +\xec\xd6\x09\x9e\x7b\x8c\x93\x7b\x6e\xa5\x80\xda\xac\x28\x0b\x0b\ +\x94\xaa\xca\x7b\xdb\x79\x35\xe5\x9a\x91\xff\xc0\x38\x23\x87\xa6\ +\xa3\x52\x62\x36\xb3\xdb\x87\xa6\xe9\xf6\xfd\xab\xcc\x8a\x19\x58\ +\xc2\x56\x87\x5e\xdf\xc8\x33\xf8\x9b\xb1\x43\x5f\xeb\x1f\x87\x8e\ +\xa5\xa9\xef\x4c\x55\x99\xad\x5f\xc2\x91\xb2\xdf\xa0\xba\x0e\x04\ +\x80\x10\x30\xbd\x43\x11\x72\xbb\x1d\x46\xe2\x7c\x8b\x48\x91\xf7\ +\x6d\x11\x6f\x9e\xdf\xbe\xc9\xa3\xc3\xb7\x4b\x5f\x1d\xb4\x37\x67\ +\x31\x2c\x42\x31\x5c\x76\x94\x84\xfb\xf9\x04\xea\x90\x05\x71\x2c\ +\xa4\xdb\x4d\x5b\x3d\x11\xd1\xb1\x96\x4c\x83\x8d\x27\x98\xe1\x98\ +\x43\xba\x8d\xaf\x4f\x76\xbc\x82\x93\xaf\x13\xc5\xba\xa8\xed\x71\ +\x23\x0c\x2e\x82\x98\x01\xf1\x04\x77\xb4\xd3\x34\x30\x8e\x45\x1c\ +\x3a\xe9\xe4\x50\x09\x80\x94\x50\x22\x2d\x63\x27\x0b\x47\xf9\x8b\ +\x32\x1d\x91\x3f\xc2\xd3\x10\xe6\xd4\xc3\xe9\xd8\x93\xfd\x7a\x0b\ +\x00\xea\x4c\x41\xe8\x72\x8d\x33\x26\xf4\xdb\x04\x5c\x68\x47\x77\ +\x3d\x06\xab\x5e\x40\x88\xeb\x58\x20\x4d\xf0\xa4\x3d\xfd\x00\xa2\ +\xfd\xa9\xa9\x5d\x16\xa3\x35\xc6\x84\x1d\x30\x12\x0a\xce\x20\x04\ +\xce\x8b\x5e\x16\xea\xc8\x74\x41\x3a\x67\x04\x8a\xdd\x3d\x04\x11\ +\xea\x0c\xcf\x09\x13\x90\x2f\x4d\xba\xb5\x76\x98\x52\xf7\x4c\xa1\ +\xc9\x84\x60\xc8\x25\x35\x25\xea\xba\x1f\xff\x9e\x37\xcf\x1e\x7f\ +\x08\x9a\x9f\x3f\x9d\x9f\xe5\xd7\x2f\x18\xe4\xd4\x21\xa7\xab\x97\ +\x3c\x33\x22\x40\x10\x17\x75\xf8\x84\xd1\x5d\xcd\x01\x88\x63\xb9\ +\xf7\xd5\xb6\x76\x40\x90\xee\xc2\x94\xa3\xd0\xcb\x52\x1d\xa1\x23\ +\x84\x1d\x00\x7d\x35\x37\x8d\xfd\x4c\xc5\x6e\x2a\x50\x75\x1f\x15\ +\xd8\x75\x5f\x5c\x60\xdf\xc6\x85\xd3\x57\xf1\x07\x8e\x22\x74\xce\ +\x51\xdf\xac\x1e\x72\x8f\xca\x1f\xb6\x2a\x5f\x65\x2d\xd8\xef\x43\ +\xc2\x65\xb7\x77\x77\xec\xcf\xd0\x97\xb5\xa9\xee\x6d\xb5\x1b\x7f\ +\xcc\xea\xec\x36\xcb\xdd\x23\x7c\x35\xb7\x5f\x96\x59\xbd\x81\x03\ +\x6c\x96\x15\x6e\x19\x5f\xca\x47\x5b\xa5\x79\xf9\xd4\x8e\xdb\xc2\ +\xc0\x5f\x74\x6b\x92\xfb\x55\x55\x3e\x14\xcb\x99\x49\x92\x87\xf5\ +\x83\x43\xfa\x95\xf0\xfc\x5f\x27\x01\xdc\xa4\xfc\xa9\x8b\x81\x04\ +\xfe\xd0\x45\x2f\x90\xa0\xf3\x69\xee\xff\x34\xf8\x4f\x68\xe0\x43\ +\xc2\xdc\x25\x74\x37\x57\xff\x06\x05\x89\x4f\xbc\ \x00\x00\x09\x90\ \x00\ \x00\x23\x6d\x78\x9c\xed\x59\x5b\x8f\xdb\xd6\x11\x7e\xf7\xaf\x50\ @@ -54356,16 +54586,16 @@ \x00\x75\ \x00\x73\x00\x65\x00\x72\x00\x70\x00\x72\x00\x65\x00\x66\x00\x73\x00\x2d\x00\x62\x00\x61\x00\x73\x00\x65\x00\x2e\x00\x75\x00\x69\ \ -\x00\x16\ -\x06\xdf\x3b\x47\ -\x00\x44\ -\x00\x72\x00\x61\x00\x66\x00\x74\x00\x5f\x00\x44\x00\x72\x00\x61\x00\x66\x00\x74\x00\x32\x00\x53\x00\x6b\x00\x65\x00\x74\x00\x63\ -\x00\x68\x00\x2e\x00\x73\x00\x76\x00\x67\ \x00\x13\ \x05\x4e\x71\x27\ \x00\x44\ \x00\x72\x00\x61\x00\x66\x00\x74\x00\x5f\x00\x52\x00\x65\x00\x63\x00\x74\x00\x61\x00\x6e\x00\x67\x00\x6c\x00\x65\x00\x2e\x00\x73\ \x00\x76\x00\x67\ +\x00\x16\ +\x06\xdf\x3b\x47\ +\x00\x44\ +\x00\x72\x00\x61\x00\x66\x00\x74\x00\x5f\x00\x44\x00\x72\x00\x61\x00\x66\x00\x74\x00\x32\x00\x53\x00\x6b\x00\x65\x00\x74\x00\x63\ +\x00\x68\x00\x2e\x00\x73\x00\x76\x00\x67\ \x00\x0f\ \x0a\x03\x3b\x47\ \x00\x53\ @@ -54433,6 +54663,11 @@ \x00\x44\ \x00\x72\x00\x61\x00\x66\x00\x74\x00\x5f\x00\x44\x00\x6f\x00\x77\x00\x6e\x00\x67\x00\x72\x00\x61\x00\x64\x00\x65\x00\x2e\x00\x73\ \x00\x76\x00\x67\ +\x00\x14\ +\x0d\xa6\xf7\x87\ +\x00\x44\ +\x00\x72\x00\x61\x00\x66\x00\x74\x00\x5f\x00\x42\x00\x65\x00\x7a\x00\x54\x00\x61\x00\x6e\x00\x4e\x00\x6f\x00\x64\x00\x65\x00\x2e\ +\x00\x73\x00\x76\x00\x67\ \x00\x11\ \x09\x41\x15\xe7\ \x00\x53\ @@ -54575,6 +54810,11 @@ \x05\x69\x00\x47\ \x00\x44\ \x00\x72\x00\x61\x00\x66\x00\x74\x00\x5f\x00\x4c\x00\x6f\x00\x63\x00\x6b\x00\x2e\x00\x73\x00\x76\x00\x67\ +\x00\x14\ +\x0d\xa7\xf5\x87\ +\x00\x44\ +\x00\x72\x00\x61\x00\x66\x00\x74\x00\x5f\x00\x42\x00\x65\x00\x7a\x00\x53\x00\x79\x00\x6d\x00\x4e\x00\x6f\x00\x64\x00\x65\x00\x2e\ +\x00\x73\x00\x76\x00\x67\ \x00\x10\ \x05\x72\x7a\x27\ \x00\x44\ @@ -54635,8 +54875,8 @@ qt_resource_struct = "\ \x00\x00\x00\x00\x00\x02\x00\x00\x00\x04\x00\x00\x00\x01\ -\x00\x00\x00\x10\x00\x02\x00\x00\x00\x03\x00\x00\x00\x5e\ -\x00\x00\x00\x00\x00\x02\x00\x00\x00\x3d\x00\x00\x00\x21\ +\x00\x00\x00\x10\x00\x02\x00\x00\x00\x03\x00\x00\x00\x60\ +\x00\x00\x00\x00\x00\x02\x00\x00\x00\x3f\x00\x00\x00\x21\ \x00\x00\x00\x38\x00\x02\x00\x00\x00\x05\x00\x00\x00\x1c\ \x00\x00\x00\x1a\x00\x02\x00\x00\x00\x17\x00\x00\x00\x05\ \x00\x00\x01\xb4\x00\x01\x00\x00\x00\x01\x00\x04\x13\x04\ @@ -54667,67 +54907,69 @@ \x00\x00\x00\x64\x00\x01\x00\x00\x00\x01\x00\x00\x0a\xf1\ \x00\x00\x00\x96\x00\x01\x00\x00\x00\x01\x00\x00\x13\x00\ \x00\x00\x00\x7c\x00\x01\x00\x00\x00\x01\x00\x00\x0f\x23\ -\x00\x00\x06\xfa\x00\x01\x00\x00\x00\x01\x00\x0b\x0c\xfb\ +\x00\x00\x07\x28\x00\x01\x00\x00\x00\x01\x00\x0b\x13\xb4\ \x00\x00\x04\xa8\x00\x00\x00\x00\x00\x01\x00\x0a\x69\xe4\ -\x00\x00\x09\xba\x00\x01\x00\x00\x00\x01\x00\x0b\xfd\x3a\ -\x00\x00\x0c\xd4\x00\x01\x00\x00\x00\x01\x00\x0c\xf6\x65\ +\x00\x00\x09\xe8\x00\x01\x00\x00\x00\x01\x00\x0c\x03\xf3\ +\x00\x00\x0d\x30\x00\x01\x00\x00\x00\x01\x00\x0d\x04\x7f\ \x00\x00\x05\xb2\x00\x01\x00\x00\x00\x01\x00\x0a\xa9\x8f\ -\x00\x00\x07\x70\x00\x00\x00\x00\x00\x01\x00\x0b\x36\xb7\ -\x00\x00\x08\x84\x00\x01\x00\x00\x00\x01\x00\x0b\x9f\x65\ -\x00\x00\x0b\xac\x00\x01\x00\x00\x00\x01\x00\x0c\xa0\x3c\ -\x00\x00\x07\xe4\x00\x00\x00\x00\x00\x01\x00\x0b\x60\x86\ -\x00\x00\x0a\x54\x00\x01\x00\x00\x00\x01\x00\x0c\x3d\xdb\ -\x00\x00\x0d\x24\x00\x01\x00\x00\x00\x01\x00\x0d\x12\x89\ +\x00\x00\x07\x9e\x00\x00\x00\x00\x00\x01\x00\x0b\x3d\x70\ +\x00\x00\x08\xb2\x00\x01\x00\x00\x00\x01\x00\x0b\xa6\x1e\ +\x00\x00\x0c\x08\x00\x01\x00\x00\x00\x01\x00\x0c\xae\x56\ +\x00\x00\x08\x12\x00\x00\x00\x00\x00\x01\x00\x0b\x67\x3f\ +\x00\x00\x0a\x82\x00\x01\x00\x00\x00\x01\x00\x0c\x44\x94\ +\x00\x00\x0d\x80\x00\x01\x00\x00\x00\x01\x00\x0d\x20\xa3\ \x00\x00\x04\xee\x00\x01\x00\x00\x00\x01\x00\x0a\x83\x06\ -\x00\x00\x09\x62\x00\x00\x00\x00\x00\x01\x00\x0b\xda\xe0\ -\x00\x00\x08\xaa\x00\x01\x00\x00\x00\x01\x00\x0b\xa5\x29\ -\x00\x00\x07\x4a\x00\x00\x00\x00\x00\x01\x00\x0b\x24\x21\ -\x00\x00\x07\x1c\x00\x01\x00\x00\x00\x01\x00\x0b\x17\xaf\ -\x00\x00\x0c\x76\x00\x00\x00\x00\x00\x01\x00\x0c\xda\xc7\ +\x00\x00\x09\x90\x00\x00\x00\x00\x00\x01\x00\x0b\xe1\x99\ +\x00\x00\x08\xd8\x00\x01\x00\x00\x00\x01\x00\x0b\xab\xe2\ +\x00\x00\x07\x78\x00\x00\x00\x00\x00\x01\x00\x0b\x2a\xda\ +\x00\x00\x07\x4a\x00\x01\x00\x00\x00\x01\x00\x0b\x1e\x68\ +\x00\x00\x0c\xd2\x00\x00\x00\x00\x00\x01\x00\x0c\xe8\xe1\ \x00\x00\x05\x12\x00\x01\x00\x00\x00\x01\x00\x0a\x88\x85\ -\x00\x00\x07\xb8\x00\x01\x00\x00\x00\x01\x00\x0b\x4f\x7c\ +\x00\x00\x07\xe6\x00\x01\x00\x00\x00\x01\x00\x0b\x56\x35\ \x00\x00\x04\xca\x00\x01\x00\x00\x00\x01\x00\x0a\x78\x9a\ -\x00\x00\x0c\x24\x00\x00\x00\x00\x00\x01\x00\x0c\xc2\x97\ -\x00\x00\x04\x28\x00\x01\x00\x00\x00\x01\x00\x0a\x44\x52\ +\x00\x00\x0c\x80\x00\x00\x00\x00\x00\x01\x00\x0c\xd0\xb1\ +\x00\x00\x03\xf6\x00\x01\x00\x00\x00\x01\x00\x0a\x3c\x99\ \x00\x00\x06\x02\x00\x01\x00\x00\x00\x01\x00\x0a\xc4\xae\ -\x00\x00\x0b\x64\x00\x01\x00\x00\x00\x01\x00\x0c\x89\x0d\ -\x00\x00\x0b\x86\x00\x01\x00\x00\x00\x01\x00\x0c\x96\xa8\ +\x00\x00\x0b\x92\x00\x01\x00\x00\x00\x01\x00\x0c\x8f\xc6\ +\x00\x00\x0b\xe2\x00\x01\x00\x00\x00\x01\x00\x0c\xa4\xc2\ \x00\x00\x05\xe0\x00\x00\x00\x00\x00\x01\x00\x0a\xb2\x95\ -\x00\x00\x03\xf6\x00\x01\x00\x00\x00\x01\x00\x0a\x3c\x99\ -\x00\x00\x09\x40\x00\x01\x00\x00\x00\x01\x00\x0b\xd3\x8c\ -\x00\x00\x0a\xae\x00\x01\x00\x00\x00\x01\x00\x0c\x4e\x23\ +\x00\x00\x04\x22\x00\x01\x00\x00\x00\x01\x00\x0a\x44\xa0\ +\x00\x00\x09\x6e\x00\x01\x00\x00\x00\x01\x00\x0b\xda\x45\ +\x00\x00\x0a\xdc\x00\x01\x00\x00\x00\x01\x00\x0c\x54\xdc\ \x00\x00\x06\x56\x00\x01\x00\x00\x00\x01\x00\x0a\xd6\x1e\ -\x00\x00\x0a\xd2\x00\x00\x00\x00\x00\x01\x00\x0c\x55\x10\ -\x00\x00\x08\x3e\x00\x00\x00\x00\x00\x01\x00\x0b\x78\x39\ +\x00\x00\x0b\x00\x00\x00\x00\x00\x00\x01\x00\x0c\x5b\xc9\ +\x00\x00\x08\x6c\x00\x00\x00\x00\x00\x01\x00\x0b\x7e\xf2\ \x00\x00\x05\x64\x00\x01\x00\x00\x00\x01\x00\x0a\x98\x85\ -\x00\x00\x0c\xf4\x00\x00\x00\x00\x00\x01\x00\x0d\x01\x13\ -\x00\x00\x06\xb0\x00\x00\x00\x00\x00\x01\x00\x0a\xed\x5d\ +\x00\x00\x0d\x50\x00\x00\x00\x00\x00\x01\x00\x0d\x0f\x2d\ +\x00\x00\x06\xde\x00\x00\x00\x00\x00\x01\x00\x0a\xf4\x16\ \x00\x00\x04\x54\x00\x00\x00\x00\x00\x01\x00\x0a\x4c\x59\ -\x00\x00\x0d\x54\x00\x00\x00\x00\x00\x01\x00\x0d\x1e\x62\ -\x00\x00\x0b\x1a\x00\x00\x00\x00\x00\x01\x00\x0c\x72\x97\ +\x00\x00\x0d\xb0\x00\x00\x00\x00\x00\x01\x00\x0d\x2c\x7c\ +\x00\x00\x0b\x48\x00\x00\x00\x00\x00\x01\x00\x0c\x79\x50\ \x00\x00\x04\x78\x00\x01\x00\x00\x00\x01\x00\x0a\x61\x79\ -\x00\x00\x09\x14\x00\x01\x00\x00\x00\x01\x00\x0b\xc6\xb5\ -\x00\x00\x0b\x42\x00\x01\x00\x00\x00\x01\x00\x0c\x81\xbe\ -\x00\x00\x09\xdc\x00\x01\x00\x00\x00\x01\x00\x0c\x05\xe3\ -\x00\x00\x0b\xfe\x00\x01\x00\x00\x00\x01\x00\x0c\xb7\xd2\ -\x00\x00\x06\xd8\x00\x01\x00\x00\x00\x01\x00\x0a\xff\x9c\ -\x00\x00\x08\x16\x00\x01\x00\x00\x00\x01\x00\x0b\x6e\x88\ -\x00\x00\x0a\x32\x00\x00\x00\x00\x00\x01\x00\x0c\x29\x4a\ -\x00\x00\x0b\xd4\x00\x01\x00\x00\x00\x01\x00\x0c\xab\xab\ +\x00\x00\x09\x42\x00\x01\x00\x00\x00\x01\x00\x0b\xcd\x6e\ +\x00\x00\x0b\x70\x00\x01\x00\x00\x00\x01\x00\x0c\x88\x77\ +\x00\x00\x0a\x0a\x00\x01\x00\x00\x00\x01\x00\x0c\x0c\x9c\ +\x00\x00\x0c\x5a\x00\x01\x00\x00\x00\x01\x00\x0c\xc5\xec\ +\x00\x00\x07\x06\x00\x01\x00\x00\x00\x01\x00\x0b\x06\x55\ +\x00\x00\x08\x44\x00\x01\x00\x00\x00\x01\x00\x0b\x75\x41\ +\x00\x00\x0a\x60\x00\x00\x00\x00\x00\x01\x00\x0c\x30\x03\ +\x00\x00\x0c\x30\x00\x01\x00\x00\x00\x01\x00\x0c\xb9\xc5\ \x00\x00\x05\x88\x00\x01\x00\x00\x00\x01\x00\x0a\x9f\x4e\ -\x00\x00\x08\x64\x00\x00\x00\x00\x00\x01\x00\x0b\x89\xf1\ +\x00\x00\x08\x92\x00\x00\x00\x00\x00\x01\x00\x0b\x90\xaa\ \x00\x00\x06\x36\x00\x01\x00\x00\x00\x01\x00\x0a\xd0\x9f\ -\x00\x00\x0a\x7e\x00\x01\x00\x00\x00\x01\x00\x0c\x44\x50\ -\x00\x00\x08\xec\x00\x01\x00\x00\x00\x01\x00\x0b\xbb\x43\ -\x00\x00\x09\x92\x00\x01\x00\x00\x00\x01\x00\x0b\xed\x64\ -\x00\x00\x0c\xaa\x00\x01\x00\x00\x00\x01\x00\x0c\xeb\xe3\ -\x00\x00\x0a\xf6\x00\x01\x00\x00\x00\x01\x00\x0c\x67\xe7\ +\x00\x00\x0a\xac\x00\x01\x00\x00\x00\x01\x00\x0c\x4b\x09\ +\x00\x00\x09\x1a\x00\x01\x00\x00\x00\x01\x00\x0b\xc1\xfc\ +\x00\x00\x09\xc0\x00\x01\x00\x00\x00\x01\x00\x0b\xf4\x1d\ +\x00\x00\x06\xb0\x00\x01\x00\x00\x00\x01\x00\x0a\xed\x5d\ +\x00\x00\x0b\xb4\x00\x01\x00\x00\x00\x01\x00\x0c\x9d\x61\ +\x00\x00\x0d\x06\x00\x01\x00\x00\x00\x01\x00\x0c\xf9\xfd\ +\x00\x00\x0b\x24\x00\x01\x00\x00\x00\x01\x00\x0c\x6e\xa0\ \x00\x00\x05\x34\x00\x01\x00\x00\x00\x01\x00\x0a\x90\x63\ -\x00\x00\x0c\x4a\x00\x01\x00\x00\x00\x01\x00\x0c\xcb\x24\ -\x00\x00\x08\xcc\x00\x00\x00\x00\x00\x01\x00\x0b\xab\x71\ +\x00\x00\x0c\xa6\x00\x01\x00\x00\x00\x01\x00\x0c\xd9\x3e\ +\x00\x00\x08\xfa\x00\x00\x00\x00\x00\x01\x00\x0b\xb2\x2a\ \x00\x00\x06\x84\x00\x00\x00\x00\x00\x01\x00\x0a\xde\x03\ -\x00\x00\x07\x98\x00\x01\x00\x00\x00\x01\x00\x0b\x46\x08\ -\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x01\x00\x0c\x0d\x34\ +\x00\x00\x07\xc6\x00\x01\x00\x00\x00\x01\x00\x0b\x4c\xc1\ +\x00\x00\x0a\x2e\x00\x00\x00\x00\x00\x01\x00\x0c\x13\xed\ \x00\x00\x03\xa2\x00\x01\x00\x00\x00\x01\x00\x0a\x27\xd8\ \x00\x00\x03\xce\x00\x01\x00\x00\x00\x01\x00\x0a\x32\x59\ \x00\x00\x03\x76\x00\x01\x00\x00\x00\x01\x00\x0a\x1c\x55\ diff --git a/src/Mod/Draft/Resources/Draft.qrc b/src/Mod/Draft/Resources/Draft.qrc index 475889b16d54..c1842da67642 100644 --- a/src/Mod/Draft/Resources/Draft.qrc +++ b/src/Mod/Draft/Resources/Draft.qrc @@ -6,6 +6,8 @@ icons/Draft_Arc.svg icons/Draft_BSpline.svg icons/Draft_BezCurve.svg + icons/Draft_BezTanNode.svg + icons/Draft_BezSymNode.svg icons/Draft_Circle.svg icons/Draft_Construction.svg icons/Draft_DelPoint.svg diff --git a/src/Mod/Draft/Resources/icons/Draft_BezSymNode.svg b/src/Mod/Draft/Resources/icons/Draft_BezSymNode.svg new file mode 100644 index 000000000000..bc114d239bf1 --- /dev/null +++ b/src/Mod/Draft/Resources/icons/Draft_BezSymNode.svg @@ -0,0 +1,305 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + diff --git a/src/Mod/Draft/Resources/icons/Draft_BezTanNode.svg b/src/Mod/Draft/Resources/icons/Draft_BezTanNode.svg new file mode 100644 index 000000000000..7194b7ae9af3 --- /dev/null +++ b/src/Mod/Draft/Resources/icons/Draft_BezTanNode.svg @@ -0,0 +1,295 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + +